From 94dd157bea7a38aa363c50fda024e37c75881a39 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Apr 2024 17:20:46 -0700 Subject: [PATCH 1/3] Remove addUndefined from API, slightly better node reuse --- src/compiler/checker.ts | 128 +++++++++++++----- src/compiler/transformers/declarations.ts | 2 +- src/compiler/types.ts | 2 +- src/harness/typeWriter.ts | 6 +- ...ixClassExtendAbstractMethodWithLongName.ts | 5 +- .../codeFixClassImplementInterfaceCallback.ts | 4 +- .../codeFixClassImplementInterfaceComments.ts | 2 +- ...nterface_noUndefinedOnOptionalParameter.ts | 2 +- .../fourslash/completionForStringLiteral4.ts | 2 +- tests/cases/fourslash/importJsNodeModule3.ts | 2 +- .../fourslash/jsDocFunctionSignatures2.ts | 2 +- .../fourslash/quickInfoForOverloadOnConst1.ts | 8 +- 12 files changed, 115 insertions(+), 50 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8b1477961ab2d..b7ba369562c34 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -963,7 +963,7 @@ import { setOriginalNode, setParent, setSyntheticLeadingComments, - setTextRange, + setTextRange as setTextRangeWorker, setTextRangePosEnd, setValueDeclaration, ShorthandPropertyAssignment, @@ -6474,7 +6474,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { typeToTypeNode: (type: Type, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => typeToTypeNodeHelper(type, context)), typePredicateToTypePredicateNode: (typePredicate: TypePredicate, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => typePredicateToTypePredicateNodeHelper(typePredicate, context)), expressionOrTypeToTypeNode: (expr: Expression | JsxAttributeValue | undefined, type: Type, addUndefined?: boolean, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => expressionOrTypeToTypeNode(context, expr, type, addUndefined)), - serializeTypeForDeclaration: (type: Type, symbol: Symbol, addUndefined?: boolean, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => serializeTypeForDeclaration(context, type, symbol, enclosingDeclaration, addUndefined)), + serializeTypeForDeclaration: (declaration: Declaration, type: Type, symbol: Symbol, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => serializeTypeForDeclaration(context, declaration, type, symbol)), serializeReturnTypeForSignature: (signature: Signature, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => serializeReturnTypeForSignature(context, signature)), indexInfoToIndexSignatureDeclaration: (indexInfo: IndexInfo, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => indexInfoToIndexSignatureDeclarationHelper(indexInfo, context, /*typeNode*/ undefined)), signatureToSignatureDeclaration: (signature: Signature, kind: SignatureDeclaration["kind"], enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => signatureToSignatureDeclarationHelper(signature, kind, context)), @@ -6487,6 +6487,28 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { symbolToNode: (symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration?: Node, flags?: NodeBuilderFlags, tracker?: SymbolTracker) => withContext(enclosingDeclaration, flags, tracker, context => symbolToNode(symbol, context, meaning)), }; + /** + * Unlike the utilities `setTextRange`, this checks if the `location` we're trying to set on `range` is within the + * same file as the active context. If not, the range is not applied. This prevents us from copying ranges across files, + * which will confuse the node printer (as it assumes all node ranges are within the current file). + * Additionally, if `range` _isn't synthetic_, and isn't in the current file, it will _copy_ it to _remove_ its' position + * information. + * + * It also calls `setOriginalNode` to setup a `.original` pointer, since you basically *always* want these in the node builder. + */ + function setTextRange(context: NodeBuilderContext, range: T, location: Node | undefined): T { + if (!nodeIsSynthesized(range) && !(range.flags & NodeFlags.Synthesized) && (!context.enclosingFile || context.enclosingFile !== getSourceFileOfNode(range))) { + range = factory.cloneNode(range); + } + if (!location) { + return range; + } + if (!context.enclosingFile || context.enclosingFile !== getSourceFileOfNode(getOriginalNode(location))) { + return setOriginalNode(range, location); + } + return setTextRangeWorker(setOriginalNode(range, location), location); + } + function expressionOrTypeToTypeNode(context: NodeBuilderContext, expr: Expression | JsxAttributeValue | undefined, type: Type, addUndefined?: boolean) { if (expr) { const typeNode = isAssertionExpression(expr) ? expr.type @@ -6572,6 +6594,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { undefined; const context: NodeBuilderContext = { enclosingDeclaration, + enclosingFile: enclosingDeclaration && getSourceFileOfNode(enclosingDeclaration), flags: flags || NodeBuilderFlags.None, tracker: undefined!, encounteredError: false, @@ -7131,7 +7154,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (!nodeIsSynthesized(node) && getParseTreeNode(node) === node) { return node; } - return setTextRange(factory.cloneNode(visitEachChild(node, deepCloneOrReuseNode, /*context*/ undefined, deepCloneOrReuseNodes)), node); + return setTextRange(context, factory.cloneNode(visitEachChild(node, deepCloneOrReuseNode, /*context*/ undefined, deepCloneOrReuseNodes)), node); } function deepCloneOrReuseNodes( @@ -7144,7 +7167,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (nodes && nodes.length === 0) { // Ensure we explicitly make a copy of an empty array; visitNodes will not do this unless the array has elements, // which can lead to us reusing the same empty NodeArray more than once within the same AST during type noding. - return setTextRange(factory.createNodeArray(/*elements*/ undefined, nodes.hasTrailingComma), nodes); + return setTextRangeWorker(factory.createNodeArray(/*elements*/ undefined, nodes.hasTrailingComma), nodes); } return visitNodes(nodes, visitor, test, start, count); } @@ -7514,7 +7537,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { context.reverseMappedStack ||= []; context.reverseMappedStack.push(propertySymbol as ReverseMappedSymbol); } - propertyTypeNode = propertyType ? serializeTypeForDeclaration(context, propertyType, propertySymbol, saveEnclosingDeclaration) : factory.createKeywordTypeNode(SyntaxKind.AnyKeyword); + propertyTypeNode = propertyType ? serializeTypeForDeclaration(context, /*declaration*/ undefined, propertyType, propertySymbol) : factory.createKeywordTypeNode(SyntaxKind.AnyKeyword); if (propertyIsReverseMapped) { context.reverseMappedStack!.pop(); } @@ -7931,8 +7954,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const parameterDeclaration = getEffectiveParameterDeclaration(parameterSymbol); const parameterType = getTypeOfSymbol(parameterSymbol); - const addUndefined = parameterDeclaration && isRequiredInitializedParameter(parameterDeclaration); - const parameterTypeNode = serializeTypeForDeclaration(context, parameterType, parameterSymbol, context.enclosingDeclaration, addUndefined); + const parameterTypeNode = serializeTypeForDeclaration(context, parameterDeclaration, parameterType, parameterSymbol); const modifiers = !(context.flags & NodeBuilderFlags.OmitParameterModifiers) && preserveModifierFlags && parameterDeclaration && canHaveModifiers(parameterDeclaration) ? map(getModifiers(parameterDeclaration), factory.cloneNode) : undefined; const isRest = parameterDeclaration && isRestParameter(parameterDeclaration) || getCheckFlags(parameterSymbol) & CheckFlags.RestParameter; @@ -8588,10 +8610,18 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { /** * Unlike `typeToTypeNodeHelper`, this handles setting up the `AllowUniqueESSymbolType` flag * so a `unique symbol` is returned when appropriate for the input symbol, rather than `typeof sym` + * @param context - The node builder context. Any reused nodes are checked to be pulled from within the scope of the context's enclosingDeclaration. + * @param declaration - The preferred declaration to pull existing type nodes from (the symbol will be used as a fallback to find any annotated declaration) + * @param type - The type to write; an existing annotation must match this type if it's used, otherwise this is the type serialized as a new type node + * @param symbol - The symbol is used both to find an existing annotation if declaration is not provided, and to determine if `unique symbol` should be printed */ - function serializeTypeForDeclaration(context: NodeBuilderContext, type: Type, symbol: Symbol, enclosingDeclaration: Node | undefined, addUndefined?: boolean) { + function serializeTypeForDeclaration(context: NodeBuilderContext, declaration: Declaration | undefined, type: Type, symbol: Symbol) { + const addUndefined = declaration && (isParameter(declaration) || isJSDocParameterTag(declaration)) && requiresAddingImplicitUndefined(declaration); + const enclosingDeclaration = context.enclosingDeclaration; if (!isErrorType(type) && enclosingDeclaration) { - const declWithExistingAnnotation = getDeclarationWithTypeAnnotation(symbol, getEnclosingDeclarationIgnoringFakeScope(enclosingDeclaration)); + const declWithExistingAnnotation = declaration && getNonlocalEffectiveTypeAnnotationNode(declaration) + ? declaration + : getDeclarationWithTypeAnnotation(symbol, getEnclosingDeclarationIgnoringFakeScope(enclosingDeclaration)); if (declWithExistingAnnotation && !isFunctionLikeDeclaration(declWithExistingAnnotation) && !isGetAccessorDeclaration(declWithExistingAnnotation)) { // try to reuse the existing annotation const existing = getNonlocalEffectiveTypeAnnotationNode(declWithExistingAnnotation)!; @@ -8609,7 +8639,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { context.flags |= NodeBuilderFlags.AllowUniqueESSymbolType; } - const decl = symbol.valueDeclaration ?? symbol.declarations?.[0]; + const decl = declaration ?? symbol.valueDeclaration ?? symbol.declarations?.[0]; const expr = decl && isDeclarationWithPossibleInnerTypeNodeReuse(decl) ? getPossibleTypeNodeReuseExpression(decl) : undefined; const result = expressionOrTypeToTypeNode(context, expr, type, addUndefined); @@ -8718,11 +8748,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const type = getDeclaredTypeOfSymbol(sym!); const name = sym!.flags & SymbolFlags.TypeParameter ? typeParameterToName(type, context) : factory.cloneNode(node as Identifier); name.symbol = sym!; // for quickinfo, which uses identifier symbol information - return setTextRange(setEmitFlags(setOriginalNode(name, node), EmitFlags.NoAsciiEscaping), node); + return setTextRange(context, setEmitFlags(name, EmitFlags.NoAsciiEscaping), node); } const updated = visitEachChild(node, c => attachSymbolToLeftmostIdentifier(c), /*context*/ undefined); if (updated !== node) { - setTextRange(updated, node); + setTextRange(context, updated, node); } return updated; } @@ -8741,13 +8771,19 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (hadError) { return undefined; } - return transformed === existing ? setTextRange(factory.cloneNode(existing), existing) : transformed; + return transformed; function visitExistingNodeTreeSymbols(node: Node): Node | undefined { const onExitNewScope = isNewScopeNode(node) ? onEnterNewScope(node) : undefined; const result = visitExistingNodeTreeSymbolsWorker(node); onExitNewScope?.(); - return result; + // We want to clone the subtree, so when we mark it up with __pos and __end in quickfixes, + // we don't get odd behavior because of reused nodes. We also need to clone to _remove_ + // the position information if the node comes from a different file than the one the node builder + // is set to build for (even though we are reusing the node structure, the position information + // would make the printer print invalid spans for literals and identifiers, and the formatter would + // choke on the mismatched positonal spans between a parent and an injected child from another file). + return result === node ? setTextRange(context, factory.cloneNode(result), node) : result; } function onEnterNewScope(node: IntroducesNewScopeNode | ConditionalTypeNode) { @@ -8884,7 +8920,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { ) { let visited = visitEachChild(node, visitExistingNodeTreeSymbols, /*context*/ undefined); if (visited === node) { - visited = setTextRange(factory.cloneNode(node), node); + visited = setTextRange(context, factory.cloneNode(node), node); } (visited as Mutable).type = factory.createKeywordTypeNode(SyntaxKind.AnyKeyword); if (isParameter(node)) { @@ -8905,11 +8941,16 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (isTupleTypeNode(node) || isTypeLiteralNode(node) || isMappedTypeNode(node)) { const visited = visitEachChild(node, visitExistingNodeTreeSymbols, /*context*/ undefined); - const clone = setTextRange(visited === node ? factory.cloneNode(node) : visited, node); + const clone = setTextRange(context, visited === node ? factory.cloneNode(node) : visited, node); const flags = getEmitFlags(clone); setEmitFlags(clone, flags | (context.flags & NodeBuilderFlags.MultilineObjectLiterals && isTypeLiteralNode(node) ? 0 : EmitFlags.SingleLine)); return clone; } + if (isStringLiteral(node) && !!(context.flags & NodeBuilderFlags.UseSingleQuotesForStringLiteralType) && !node.singleQuote) { + const clone = factory.cloneNode(node); + (clone as Mutable).singleQuote = true; + return clone; + } if (isConditionalTypeNode(node)) { const checkType = visitNode(node.checkType, visitExistingNodeTreeSymbols, isTypeNode)!; @@ -9340,10 +9381,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } else { const statement = setTextRange( + context, factory.createVariableStatement( /*modifiers*/ undefined, factory.createVariableDeclarationList([ - factory.createVariableDeclaration(name, /*exclamationToken*/ undefined, serializeTypeForDeclaration(context, type, symbol, enclosingDeclaration)), + factory.createVariableDeclaration(name, /*exclamationToken*/ undefined, serializeTypeForDeclaration(context, /*declaration*/ undefined, type, symbol)), ], flags), ), textRange, @@ -9638,7 +9680,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { for (const sig of signatures) { // Each overload becomes a separate function declaration, in order const decl = signatureToSignatureDeclarationHelper(sig, SyntaxKind.FunctionDeclaration, context, { name: factory.createIdentifier(localName) }) as FunctionDeclaration; - addResult(setTextRange(decl, getSignatureTextRangeLocation(sig)), modifierFlags); + addResult(setTextRange(context, decl, getSignatureTextRangeLocation(sig)), modifierFlags); } // Module symbol emit will take care of module-y members, provided it has exports if (!(symbol.flags & (SymbolFlags.ValueModule | SymbolFlags.NamespaceModule) && !!symbol.exports && !!symbol.exports.size)) { @@ -9820,6 +9862,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { context.enclosingDeclaration = oldEnclosing; addResult( setTextRange( + context, factory.createClassDeclaration( /*modifiers*/ undefined, localName, @@ -10168,7 +10211,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const statement = factory.createVariableStatement( /*modifiers*/ undefined, factory.createVariableDeclarationList([ - factory.createVariableDeclaration(varName, /*exclamationToken*/ undefined, serializeTypeForDeclaration(context, typeToSerialize, symbol, enclosingDeclaration)), + factory.createVariableDeclaration(varName, /*exclamationToken*/ undefined, serializeTypeForDeclaration(context, /*declaration*/ undefined, typeToSerialize, symbol)), ], flags), ); // Inlined JSON types exported with [module.]exports= will already emit an export=, so should use `declare`. @@ -10296,6 +10339,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const paramSymbol = isFunctionLikeDeclaration(setter) ? getSignatureFromDeclaration(setter).parameters[0] : undefined; result.push(setTextRange( + context, factory.createSetAccessorDeclaration( factory.createModifiersFromModifierFlags(flag), name, @@ -10304,7 +10348,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { /*dotDotDotToken*/ undefined, paramSymbol ? parameterToParameterDeclarationName(paramSymbol, getEffectiveParameterDeclaration(paramSymbol), context) : "value", /*questionToken*/ undefined, - isPrivate ? undefined : serializeTypeForDeclaration(context, getTypeOfSymbol(p), p, enclosingDeclaration), + isPrivate ? undefined : serializeTypeForDeclaration(context, /*declaration*/ undefined, getTypeOfSymbol(p), p), )], /*body*/ undefined, ), @@ -10314,11 +10358,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (p.flags & SymbolFlags.GetAccessor) { const isPrivate = modifierFlags & ModifierFlags.Private; result.push(setTextRange( + context, factory.createGetAccessorDeclaration( factory.createModifiersFromModifierFlags(flag), name, [], - isPrivate ? undefined : serializeTypeForDeclaration(context, getTypeOfSymbol(p), p, enclosingDeclaration), + isPrivate ? undefined : serializeTypeForDeclaration(context, /*declaration*/ undefined, getTypeOfSymbol(p), p), /*body*/ undefined, ), p.declarations?.find(isGetAccessor) || firstPropertyLikeDecl, @@ -10330,11 +10375,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // If this happens, we assume the accessor takes priority, as it imposes more constraints else if (p.flags & (SymbolFlags.Property | SymbolFlags.Variable | SymbolFlags.Accessor)) { return setTextRange( + context, createProperty( factory.createModifiersFromModifierFlags((isReadonlySymbol(p) ? ModifierFlags.Readonly : 0) | flag), name, p.flags & SymbolFlags.Optional ? factory.createToken(SyntaxKind.QuestionToken) : undefined, - isPrivate ? undefined : serializeTypeForDeclaration(context, getWriteTypeOfSymbol(p), p, enclosingDeclaration), + isPrivate ? undefined : serializeTypeForDeclaration(context, /*declaration*/ undefined, getWriteTypeOfSymbol(p), p), // TODO: https://github.com/microsoft/TypeScript/pull/32372#discussion_r328386357 // interface members can't have initializers, however class members _can_ /*initializer*/ undefined, @@ -10347,6 +10393,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const signatures = getSignaturesOfType(type, SignatureKind.Call); if (flag & ModifierFlags.Private) { return setTextRange( + context, createProperty( factory.createModifiersFromModifierFlags((isReadonlySymbol(p) ? ModifierFlags.Readonly : 0) | flag), name, @@ -10372,7 +10419,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { }, ); const location = sig.declaration && isPrototypePropertyAssignment(sig.declaration.parent) ? sig.declaration.parent : sig.declaration; - results.push(setTextRange(decl, location)); + results.push(setTextRange(context, decl, location)); } return results as unknown as T[]; } @@ -10418,6 +10465,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } if (privateProtected) { return [setTextRange( + context, factory.createConstructorDeclaration( factory.createModifiersFromModifierFlags(privateProtected), /*parameters*/ [], @@ -10432,7 +10480,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { for (const sig of signatures) { // Each overload becomes a separate constructor declaration, in order const decl = signatureToSignatureDeclarationHelper(sig, outputKind, context); - results.push(setTextRange(decl, sig.declaration)); + results.push(setTextRange(context, decl, sig.declaration)); } return results; } @@ -11072,9 +11120,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (parentAccess && canHaveFlowNode(parentAccess) && parentAccess.flowNode) { const propName = getDestructuringPropertyName(node); if (propName) { - const literal = setTextRange(parseNodeFactory.createStringLiteral(propName), node); + const literal = setTextRangeWorker(parseNodeFactory.createStringLiteral(propName), node); const lhsExpr = isLeftHandSideExpression(parentAccess) ? parentAccess : parseNodeFactory.createParenthesizedExpression(parentAccess); - const result = setTextRange(parseNodeFactory.createElementAccessExpression(lhsExpr, literal), node); + const result = setTextRangeWorker(parseNodeFactory.createElementAccessExpression(lhsExpr, literal), node); setParent(literal, result); setParent(result, node); if (lhsExpr !== parentAccess) { @@ -34719,7 +34767,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function createSyntheticExpression(parent: Node, type: Type, isSpread?: boolean, tupleNameSource?: ParameterDeclaration | NamedTupleMember) { const result = parseNodeFactory.createSyntheticExpression(type, isSpread, tupleNameSource); - setTextRange(result, parent); + setTextRangeWorker(result, parent); setParent(result, parent); return result; } @@ -48643,12 +48691,13 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return false; } - function declaredParameterTypeContainsUndefined(parameter: ParameterDeclaration) { - if (!parameter.type) return false; - const type = getTypeFromTypeNode(parameter.type); + function declaredParameterTypeContainsUndefined(parameter: ParameterDeclaration | JSDocParameterTag) { + const typeNode = getNonlocalEffectiveTypeAnnotationNode(parameter); + if (!typeNode) return false; + const type = getTypeFromTypeNode(typeNode); return containsUndefinedType(type); } - function requiresAddingImplicitUndefined(parameter: ParameterDeclaration) { + function requiresAddingImplicitUndefined(parameter: ParameterDeclaration | JSDocParameterTag) { return (isRequiredInitializedParameter(parameter) || isOptionalUninitializedParameterProperty(parameter)) && !declaredParameterTypeContainsUndefined(parameter); } @@ -48660,10 +48709,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { !hasSyntacticModifier(parameter, ModifierFlags.ParameterPropertyModifier); } - function isOptionalUninitializedParameterProperty(parameter: ParameterDeclaration) { + function isOptionalUninitializedParameterProperty(parameter: ParameterDeclaration | JSDocParameterTag) { return strictNullChecks && isOptionalParameter(parameter) && - !parameter.initializer && + (isJSDocParameterTag(parameter) || !parameter.initializer) && hasSyntacticModifier(parameter, ModifierFlags.ParameterPropertyModifier); } @@ -48814,7 +48863,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - function createTypeOfDeclaration(declarationIn: AccessorDeclaration | VariableLikeDeclaration | PropertyAccessExpression, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker, addUndefined?: boolean) { + function createTypeOfDeclaration(declarationIn: AccessorDeclaration | VariableLikeDeclaration | PropertyAccessExpression, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker) { const declaration = getParseTreeNode(declarationIn, isVariableLikeOrAccessor); if (!declaration) { return factory.createToken(SyntaxKind.AnyKeyword) as KeywordTypeNode; @@ -48825,7 +48874,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { ? getWidenedLiteralType(getTypeOfSymbol(symbol)) : errorType; - return nodeBuilder.serializeTypeForDeclaration(type, symbol, addUndefined, enclosingDeclaration, flags | NodeBuilderFlags.MultilineObjectLiterals, tracker); + return nodeBuilder.serializeTypeForDeclaration(declaration, type, symbol, enclosingDeclaration, flags | NodeBuilderFlags.MultilineObjectLiterals, tracker); } type DeclarationWithPotentialInnerNodeReuse = @@ -51449,6 +51498,15 @@ function createBasicNodeBuilderModuleSpecifierResolutionHost(host: TypeCheckerHo interface NodeBuilderContext { enclosingDeclaration: Node | undefined; + /** + * `enclosingFile` is generated from the initial `enclosingDeclaration` and + * is used to ensure text ranges for generated nodes are not set based on nodes from outside + * the original input's containing file. Checking the `enclosingDeclaration` at the time of + * `setTextRange` is not sufficient, as the `enclosingDeclaration` is modified by the node builder + * as it decends into some types as a shortcut to making certain scopes visible, and may be modified + * into a declaration in a different file from the original input `enclosingDeclaration`! + */ + enclosingFile: SourceFile | undefined; flags: NodeBuilderFlags; tracker: SymbolTrackerImpl; diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index c35053570536e..c73aa688ae56a 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -638,7 +638,7 @@ export function transformDeclarations(context: TransformationContext) { case SyntaxKind.PropertyDeclaration: case SyntaxKind.BindingElement: case SyntaxKind.VariableDeclaration: - typeNode = resolver.createTypeOfDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, symbolTracker, shouldAddImplicitUndefined); + typeNode = resolver.createTypeOfDeclaration(node, enclosingDeclaration, declarationEmitNodeBuilderFlags, symbolTracker); break; case SyntaxKind.FunctionDeclaration: case SyntaxKind.ConstructSignature: diff --git a/src/compiler/types.ts b/src/compiler/types.ts index de8c11600da0a..c670529467197 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -5651,7 +5651,7 @@ export interface EmitResolver { requiresAddingImplicitUndefined(node: ParameterDeclaration): boolean; isExpandoFunctionDeclaration(node: FunctionDeclaration): boolean; getPropertiesOfContainerFunction(node: Declaration): Symbol[]; - createTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration | PropertyAccessExpression | ElementAccessExpression | BinaryExpression, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker, addUndefined?: boolean): TypeNode | undefined; + createTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration | PropertyAccessExpression | ElementAccessExpression | BinaryExpression, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker): TypeNode | undefined; createReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker): TypeNode | undefined; createTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: NodeBuilderFlags, tracker: SymbolTracker): TypeNode | undefined; createLiteralConstValue(node: VariableDeclaration | PropertyDeclaration | PropertySignature | ParameterDeclaration, tracker: SymbolTracker): Expression; diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 87f70fc0dc779..d896ce4f42567 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -44,11 +44,15 @@ function* forEachASTNode(node: ts.Node) { } } +function nodeFullySynthetic(node: ts.Node) { + return ts.nodeIsSynthesized(node) && !node.original; +} + const createSyntheticNodeUnderliningPrinter = memoize((): { printer: ts.Printer; writer: ts.EmitTextWriter; underliner: ts.EmitTextWriter; reset(): void; } => { let underlining = false; const printer = createPrinter({ removeComments: true }, { onEmitNode: (hint, node, cb) => { - if (ts.nodeIsSynthesized(node) !== underlining) { + if (nodeFullySynthetic(node) !== underlining) { // either node is synthetic and underlining needs to be enabled, or node is not synthetic and // underlining needs to be disabled underlining = !underlining; diff --git a/tests/cases/fourslash/codeFixClassExtendAbstractMethodWithLongName.ts b/tests/cases/fourslash/codeFixClassExtendAbstractMethodWithLongName.ts index 3b2fd2b625d27..313b85657312c 100644 --- a/tests/cases/fourslash/codeFixClassExtendAbstractMethodWithLongName.ts +++ b/tests/cases/fourslash/codeFixClassExtendAbstractMethodWithLongName.ts @@ -43,7 +43,10 @@ abstract class AbstractCstVisitor { ): Set; } class CstVisitorImplementation extends AbstractCstVisitor { - Node(arg1: [some.really.long.generated.type.goes.here.you.know.this_.should.be.pretty.simple.Yah[], another.really.long.generated.type.goes.here.too.because.who.cares.about.space.do_.you.feel.me.Yah[]], arg2: [this_will_be_collapsed], arg3: Set, arg4: this_is_fine) { + Node(arg1: [ + some.really.long.generated.type.goes.here.you.know.this_.should.be.pretty.simple.Yah[], + another.really.long.generated.type.goes.here.too.because.who.cares.about.space.do_.you.feel.me.Yah[] + ], arg2: [this_will_be_collapsed], arg3: Set, arg4: this_is_fine) { throw new Error("Method not implemented."); } }` diff --git a/tests/cases/fourslash/codeFixClassImplementInterfaceCallback.ts b/tests/cases/fourslash/codeFixClassImplementInterfaceCallback.ts index 65692ca013bbd..c171cbdeec2ae 100644 --- a/tests/cases/fourslash/codeFixClassImplementInterfaceCallback.ts +++ b/tests/cases/fourslash/codeFixClassImplementInterfaceCallback.ts @@ -49,7 +49,7 @@ interface IFoo2 { } class Foo2 implements IFoo2 { - parse(reviver: () => any): void { + parse(reviver: { (): any; }): void { throw new Error("Method not implemented."); } } @@ -69,7 +69,7 @@ interface IFoo4 { } class Foo4 implements IFoo4 { - parse(reviver: new () => any): void { + parse(reviver: { new(): any; }): void { throw new Error("Method not implemented."); } }`}); diff --git a/tests/cases/fourslash/codeFixClassImplementInterfaceComments.ts b/tests/cases/fourslash/codeFixClassImplementInterfaceComments.ts index 2dd4a5edb7208..b29a9fbe45f46 100644 --- a/tests/cases/fourslash/codeFixClassImplementInterfaceComments.ts +++ b/tests/cases/fourslash/codeFixClassImplementInterfaceComments.ts @@ -38,7 +38,7 @@ verify.codeFix({ class C implements N.I { a: N.E.a; b: N.E; - foo(a: X): string { + foo(a: X /** close paren prefix */): string { throw new Error("Method not implemented."); } }`, diff --git a/tests/cases/fourslash/codeFixClassImplementInterface_noUndefinedOnOptionalParameter.ts b/tests/cases/fourslash/codeFixClassImplementInterface_noUndefinedOnOptionalParameter.ts index 2d6626e50e898..a098bb602d2f0 100644 --- a/tests/cases/fourslash/codeFixClassImplementInterface_noUndefinedOnOptionalParameter.ts +++ b/tests/cases/fourslash/codeFixClassImplementInterface_noUndefinedOnOptionalParameter.ts @@ -16,7 +16,7 @@ verify.codeFix({ } class Foo implements IFoo { - bar(x?: string | number): void { + bar(x?: number | string): void { throw new Error("Method not implemented."); } }`, diff --git a/tests/cases/fourslash/completionForStringLiteral4.ts b/tests/cases/fourslash/completionForStringLiteral4.ts index 605b3b3891d21..64f3ddeb9acaf 100644 --- a/tests/cases/fourslash/completionForStringLiteral4.ts +++ b/tests/cases/fourslash/completionForStringLiteral4.ts @@ -15,7 +15,7 @@ goTo.marker('1'); verify.quickInfoExists(); -verify.quickInfoIs('function f(p1: \'literal\', p2: "literal", p3: \'other1\' | \'other2\', p4: \'literal\' | number, p5: 12 | true): string', 'I am documentation'); +verify.quickInfoIs('function f(p1: "literal", p2: "literal", p3: "other1" | "other2", p4: "literal" | number, p5: 12 | true): string', 'I am documentation'); const replacementSpan = test.ranges()[0] verify.completions({ marker: "2", exact: [ diff --git a/tests/cases/fourslash/importJsNodeModule3.ts b/tests/cases/fourslash/importJsNodeModule3.ts index 1af13b79190dc..3e78bc24cea8a 100644 --- a/tests/cases/fourslash/importJsNodeModule3.ts +++ b/tests/cases/fourslash/importJsNodeModule3.ts @@ -34,7 +34,7 @@ verify.completions({ includes: { name: "toUpperCase", kind: "method", kindModifi edit.backspace(2); edit.insert('z('); verify.signatureHelp({ - text: "z(a: number | boolean, b: string[]): string", + text: "z(a: (number | boolean), b: Array): string", parameterDocComment: "The first param", tags: [ { name: "param", text: [{ kind: "parameterName", text: "a" }, { kind: "space", text: " " }, { kind: "text", text: "The first param" }] }, diff --git a/tests/cases/fourslash/jsDocFunctionSignatures2.ts b/tests/cases/fourslash/jsDocFunctionSignatures2.ts index 28017d39f2414..3843678bdf513 100644 --- a/tests/cases/fourslash/jsDocFunctionSignatures2.ts +++ b/tests/cases/fourslash/jsDocFunctionSignatures2.ts @@ -8,4 +8,4 @@ //// //// f6('', /**/false) -verify.signatureHelp({ marker: "", text: "f6(arg0: string, arg1?: boolean): number" }); +verify.signatureHelp({ marker: "", text: "f6(arg0: string, arg1?: boolean | undefined): number" }); diff --git a/tests/cases/fourslash/quickInfoForOverloadOnConst1.ts b/tests/cases/fourslash/quickInfoForOverloadOnConst1.ts index 15c51a8643306..de06e2480c52d 100644 --- a/tests/cases/fourslash/quickInfoForOverloadOnConst1.ts +++ b/tests/cases/fourslash/quickInfoForOverloadOnConst1.ts @@ -20,13 +20,13 @@ ////c.x1(1, (x/*10*/x) => { return 1; } ); verify.quickInfos({ - 1: "(method) I.x1(a: number, callback: (x: 'hi') => number): any", - 2: "(method) C.x1(a: number, callback: (x: 'hi') => number): any", - 3: "(parameter) callback: (x: 'hi') => number", + 1: "(method) I.x1(a: number, callback: (x: \"hi\") => number): any", + 2: "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", + 3: "(parameter) callback: (x: \"hi\") => number", 4: "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", 5: "(parameter) callback: (x: string) => number", 6: "(parameter) callback: (x: string) => number", - 7: "(method) C.x1(a: number, callback: (x: 'hi') => number): any", + 7: "(method) C.x1(a: number, callback: (x: \"hi\") => number): any", 8: "(parameter) xx: \"hi\"", 9: "(parameter) xx: \"bye\"", 10: "(parameter) xx: \"hi\"" From c09da326093ee8ff2feee711c26b1ac4cce9ace4 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 4 Apr 2024 17:21:27 -0700 Subject: [PATCH 2/3] Accept baselines --- .../baselines/reference/1.0lib-noErrors.types | 344 ++-- tests/baselines/reference/2dArrays.types | 6 +- .../baselines/reference/ArrowFunction1.types | 4 +- .../baselines/reference/ArrowFunction4.types | 4 +- .../reference/ArrowFunctionExpression1.types | 4 +- ...duleMemberThatUsesClassTypeParameter.types | 2 +- ...ericClassStaticFunctionOfTheSameName.types | 4 +- ...ericClassStaticFunctionOfTheSameName.types | 4 +- ...aticFunctionUsingClassPrivateStatics.types | 8 +- tests/baselines/reference/ES5For-of1.types | 4 +- tests/baselines/reference/ES5For-of22.types | 4 +- tests/baselines/reference/ES5For-of23.types | 4 +- tests/baselines/reference/ES5For-of33.types | 4 +- tests/baselines/reference/ES5For-of37.types | 8 +- .../reference/ES5For-ofTypeCheck13.types | 8 +- ...ExtendsInterfaceWithInaccessibleType.types | 4 +- ...essibleTypeInTypeParameterConstraint.types | 2 +- ...esInParameterAndReturnTypeAnnotation.types | 2 +- ...ssibleTypesInParameterTypeAnnotation.types | 2 +- ...ccessibleTypesInReturnTypeAnnotation.types | 2 +- ...hAccessibleTypesOnItsExportedMembers.types | 2 +- .../reference/FunctionDeclaration10_es6.types | 2 +- .../reference/FunctionDeclaration12_es6.types | 2 +- .../reference/FunctionDeclaration2_es6.types | 2 +- .../reference/FunctionDeclaration3_es6.types | 2 +- .../reference/FunctionDeclaration5_es6.types | 2 +- .../reference/FunctionDeclaration6_es6.types | 2 +- .../reference/FunctionDeclaration7_es6.types | 2 +- .../reference/FunctionDeclaration9_es6.types | 4 +- .../reference/FunctionExpression1_es6.types | 2 +- .../reference/FunctionExpression2_es6.types | 2 +- .../FunctionPropertyAssignments5_es6.types | 2 +- ...eWithExportedAndNonExportedFunctions.types | 24 +- .../baselines/reference/ParameterList4.types | 2 +- .../baselines/reference/ParameterList6.types | 2 +- ...edAndNonExportedClassesOfTheSameName.types | 2 +- ...ndNonExportedInterfacesOfTheSameName.types | 4 +- ...AndNonExportedLocalVarsOfTheSameName.types | 6 +- ...hWithExportedInterfacesOfTheSameName.types | 4 +- ...chWithExportedLocalVarsOfTheSameName.types | 2 +- ...ithTheSameNameAndDifferentCommonRoot.types | 2 +- ...ulesWithTheSameNameAndSameCommonRoot.types | 6 +- .../reference/TypeGuardWithArrayUnion.types | 2 +- .../reference/TypeGuardWithEnumUnion.types | 4 +- .../reference/YieldExpression15_es6.types | 2 +- .../reference/YieldExpression9_es6.types | 2 +- .../abstractClassUnionInstantiation.types | 24 +- .../abstractProperty(target=es2015).types | 4 +- .../abstractProperty(target=esnext).types | 4 +- .../abstractPropertyInConstructor.types | 64 +- .../reference/acceptSymbolAsWeakType.types | 40 +- .../accessorAccidentalCallDiagnostic.types | 2 +- ...rredReturnTypeErrorInReturnStatement.types | 2 +- .../accessorsAreNotContextuallyTyped.types | 12 +- .../accessorsOverrideProperty2.types | 8 +- .../accessorsOverrideProperty8.types | 8 +- .../accessorsOverrideProperty9.types | 6 +- .../addMoreOverloadsToBaseSignature.types | 2 +- .../additionOperatorWithAnyAndEveryType.types | 4 +- ...OperatorWithConstrainedTypeParameter.types | 4 +- .../additionOperatorWithTypeParameter.types | 2 +- ...nctionWithRestBehavedSameAsUnaliased.types | 4 +- .../aliasOnMergedModuleInterface.types | 6 +- .../aliasUsageInFunctionExpression.types | 10 +- .../aliasUsageInGenericFunction.types | 10 +- .../reference/aliasUsedAsNameValue.types | 8 +- .../reference/allowJsClassThisTypeCrash.types | 4 +- .../allowJscheckJsTypeParameterNoCrash.types | 24 +- ...entClassMergesOverloadsWithInterface.types | 4 +- .../reference/ambientConstLiterals.types | 6 +- .../reference/ambientDeclarations.types | 20 +- .../ambientDeclarationsPatterns.types | 10 +- tests/baselines/reference/ambientErrors.types | 16 +- ...ientRequireFunction(module=commonjs).types | 10 +- ...ientRequireFunction(module=preserve).types | 10 +- .../reference/ambientStatement1.types | 2 +- .../ambiguousCallsWhereReturnTypesAgree.types | 32 +- .../ambiguousGenericAssertion1.types | 14 +- .../reference/ambiguousOverload.types | 20 +- .../ambiguousOverloadResolution.types | 6 +- .../amdDeclarationEmitNoExtraDeclare.types | 8 +- .../amdLikeInputDeclarationEmit.types | 18 +- .../reference/amdModuleConstEnumUsage.types | 2 +- ...dThisPropertyInitializerDoesntNarrow.types | 4 +- .../anonClassDeclarationEmitIsAnon.types | 18 +- tests/baselines/reference/anonterface.types | 16 +- .../anyAsReturnTypeForNewOnCall.types | 4 +- .../anyAssignabilityInInheritance.types | 108 +- .../reference/anyAssignableToEveryType.types | 6 +- .../reference/anyIdenticalToItself.types | 6 +- .../anyInferenceAnonymousFunctions.types | 30 +- tests/baselines/reference/argsInScope.types | 6 +- .../argumentExpressionContextualTyping.types | 20 +- tests/baselines/reference/arguments.types | 6 +- .../reference/argumentsAsPropertyName.types | 14 +- .../reference/argumentsAsPropertyName2.types | 4 +- ...entsBindsToFunctionScopeArgumentList.types | 2 +- .../argumentsObjectCreatesRestForJs.types | 14 +- .../argumentsObjectIterator01_ES5.types | 6 +- .../argumentsObjectIterator01_ES6.types | 6 +- .../argumentsObjectIterator02_ES5.types | 6 +- .../argumentsObjectIterator02_ES6.types | 8 +- .../argumentsObjectIterator03_ES5.types | 2 +- .../argumentsObjectIterator03_ES6.types | 2 +- .../argumentsPropertyNameInJsMode1.types | 18 +- .../argumentsPropertyNameInJsMode2.types | 4 +- .../argumentsReferenceInFunction1_Js.types | 12 +- .../argumentsReferenceInMethod1_Js.types | 2 +- .../argumentsReferenceInMethod2_Js.types | 2 +- .../argumentsReferenceInMethod3_Js.types | 2 +- .../argumentsReferenceInMethod4_Js.types | 2 +- .../argumentsReferenceInMethod5_Js.types | 2 +- ...argumentsReferenceInObjectLiteral_Js.types | 8 +- ...mentsSpreadRestIterables(target=es5).types | 32 +- ...tsSpreadRestIterables(target=esnext).types | 32 +- ...itializerOrStaticInitializationBlock.types | 2 +- ...argumentsUsedInObjectLiteralProperty.types | 2 +- .../reference/arithmeticOnInvalidTypes2.types | 6 +- ...rithmeticOperatorWithInvalidOperands.types | 20 +- .../arithmeticOperatorWithTypeParameter.types | 2 +- .../arityErrorRelatedSpanBindingPattern.types | 8 +- .../reference/arrayAssignmentTest1.types | 2 +- .../reference/arrayAssignmentTest2.types | 2 +- .../reference/arrayAssignmentTest5.types | 16 +- .../reference/arrayAssignmentTest6.types | 4 +- tests/baselines/reference/arrayAugment.types | 6 +- .../reference/arrayBestCommonTypes.types | 120 +- ...rrayBindingPatternOmittedExpressions.types | 2 +- .../arrayBufferIsViewNarrowsType.types | 4 +- tests/baselines/reference/arrayConcat2.types | 12 +- tests/baselines/reference/arrayConcat3.types | 6 +- .../baselines/reference/arrayConcatMap.types | 10 +- .../arrayDestructuringInSwitch1.types | 16 +- .../arrayDestructuringInSwitch2.types | 2 +- tests/baselines/reference/arrayEvery.types | 14 +- ...FakeFlatNoCrashInferenceDeclarations.types | 10 +- tests/baselines/reference/arrayFilter.types | 6 +- tests/baselines/reference/arrayFind.types | 14 +- tests/baselines/reference/arrayFlatMap.types | 8 +- .../reference/arrayFlatNoCrashInference.types | 6 +- ...rrayFlatNoCrashInferenceDeclarations.types | 6 +- tests/baselines/reference/arrayFrom.types | 56 +- .../baselines/reference/arrayFromAsync.types | 110 +- ...teralAndArrayConstructorEquivalence1.types | 2 +- .../reference/arrayLiteralComments.types | 2 +- .../arrayLiteralContextualType.types | 12 +- .../arrayLiteralInNonVarArgParameter.types | 4 +- .../reference/arrayLiteralInference.types | 6 +- ...ayLiteralWithMultipleBestCommonTypes.types | 38 +- .../reference/arrayLiterals2ES5.types | 2 +- .../reference/arrayLiterals2ES6.types | 4 +- .../reference/arrayOfExportedClass.types | 2 +- .../reference/arrayOfFunctionTypes3.types | 52 +- .../arrayReferenceWithoutTypeArgs.types | 2 +- .../reference/arraySigChecking.types | 10 +- tests/baselines/reference/arraySlice.types | 4 +- .../reference/arraySpreadInCall.types | 50 +- .../reference/arrayToLocaleStringES2015.types | 148 +- .../reference/arrayToLocaleStringES2020.types | 180 +- ...ayTypeInSignatureOfInterfaceAndClass.types | 12 +- .../reference/arrayTypeOfFunctionTypes.types | 4 +- .../reference/arrayTypeOfFunctionTypes2.types | 2 +- tests/baselines/reference/arrayconcat.types | 8 +- .../reference/arrowFunctionContexts.types | 72 +- .../reference/arrowFunctionErrorSpan.types | 26 +- .../reference/arrowFunctionExpressions.types | 158 +- .../arrowFunctionJSDocAnnotation.types | 6 +- ...rowFunctionMissingCurlyWithSemicolon.types | 6 +- ...nfuseParenthesizedObjectForArrowHead.types | 4 +- .../arrowFunctionParsingGenericInObject.types | 108 +- .../arrowFunctionWithObjectLiteralBody1.types | 4 +- .../arrowFunctionWithObjectLiteralBody2.types | 4 +- .../arrowFunctionWithObjectLiteralBody3.types | 4 +- .../arrowFunctionWithObjectLiteralBody4.types | 4 +- .../arrowFunctionWithObjectLiteralBody5.types | 8 +- .../arrowFunctionWithObjectLiteralBody6.types | 8 +- ...unctionWithParameterNameAsync_es2017.types | 4 +- ...owFunctionWithParameterNameAsync_es5.types | 4 +- ...owFunctionWithParameterNameAsync_es6.types | 4 +- .../arrowFunctionsMissingTokens.types | 78 +- tests/baselines/reference/asOperator3.types | 6 +- tests/baselines/reference/asOperatorASI.types | 6 +- .../reference/asOperatorContextualType.types | 8 +- .../asiPreventsParsingAsInterface02.types | 2 +- .../assertInWrapSomeTypeParameter.types | 2 +- .../assertionFunctionWildcardImport1.types | 18 +- .../assertionFunctionWildcardImport2.types | 10 +- ...tionFunctionsCanNarrowByDiscriminant.types | 6 +- .../reference/assertionTypePredicates1.types | 156 +- .../reference/assertionTypePredicates2.types | 8 +- .../assertionsAndNonReturningFunctions.types | 14 +- .../reference/assignAnyToEveryType.types | 4 +- .../reference/assignEveryTypeToAny.types | 8 +- .../assignFromNumberInterface2.types | 8 +- .../assignFromStringInterface2.types | 42 +- ...signLambdaToNominalSubtypeOfFunction.types | 10 +- ...rPropertyToPropertyDeclarationES2022.types | 8 +- ...rPropertyToPropertyDeclarationESNext.types | 8 +- tests/baselines/reference/assignToFn.types | 12 +- .../reference/assignToPrototype1.types | 10 +- .../assigningFromObjectToAnythingElse.types | 16 +- ...assignmentCompatBetweenTupleAndArray.types | 6 +- .../reference/assignmentCompatBug2.types | 82 +- .../reference/assignmentCompatBug3.types | 14 +- .../reference/assignmentCompatBug5.types | 20 +- ...nmentCompatFunctionsWithOptionalArgs.types | 10 +- ...patInterfaceWithStringIndexSignature.types | 4 +- .../reference/assignmentCompatOnNew.types | 6 +- .../assignmentCompatWithCallSignatures.types | 78 +- .../assignmentCompatWithCallSignatures2.types | 122 +- .../assignmentCompatWithCallSignatures3.types | 352 ++-- .../assignmentCompatWithCallSignatures4.types | 234 +-- .../assignmentCompatWithCallSignatures5.types | 202 +-- .../assignmentCompatWithCallSignatures6.types | 150 +- ...CallSignaturesWithOptionalParameters.types | 298 ++-- ...WithCallSignaturesWithRestParameters.types | 168 +- ...ignmentCompatWithConstructSignatures.types | 56 +- ...gnmentCompatWithConstructSignatures2.types | 76 +- ...gnmentCompatWithConstructSignatures3.types | 352 ++-- ...gnmentCompatWithConstructSignatures4.types | 234 +-- ...gnmentCompatWithConstructSignatures5.types | 202 +-- ...gnmentCompatWithConstructSignatures6.types | 150 +- ...ructSignaturesWithOptionalParameters.types | 216 +-- ...signmentCompatWithDiscriminatedUnion.types | 16 +- ...nmentCompatWithGenericCallSignatures.types | 16 +- ...mentCompatWithGenericCallSignatures3.types | 14 +- ...mentCompatWithGenericCallSignatures4.types | 16 +- ...CallSignaturesWithOptionalParameters.types | 460 ++--- ...ntCompatWithObjectMembersOptionality.types | 2 +- ...tCompatWithObjectMembersOptionality2.types | 2 +- .../assignmentCompatWithOverloads.types | 42 +- .../reference/assignmentCompatability1.types | 2 +- .../reference/assignmentCompatability11.types | 2 +- .../reference/assignmentCompatability12.types | 2 +- .../reference/assignmentCompatability13.types | 2 +- .../reference/assignmentCompatability14.types | 2 +- .../reference/assignmentCompatability15.types | 2 +- .../reference/assignmentCompatability16.types | 2 +- .../reference/assignmentCompatability17.types | 2 +- .../reference/assignmentCompatability18.types | 2 +- .../reference/assignmentCompatability19.types | 2 +- .../reference/assignmentCompatability2.types | 2 +- .../reference/assignmentCompatability20.types | 2 +- .../reference/assignmentCompatability21.types | 2 +- .../reference/assignmentCompatability22.types | 2 +- .../reference/assignmentCompatability23.types | 2 +- .../reference/assignmentCompatability24.types | 14 +- .../reference/assignmentCompatability25.types | 2 +- .../reference/assignmentCompatability26.types | 2 +- .../reference/assignmentCompatability27.types | 2 +- .../reference/assignmentCompatability28.types | 2 +- .../reference/assignmentCompatability29.types | 2 +- .../reference/assignmentCompatability3.types | 2 +- .../reference/assignmentCompatability30.types | 2 +- .../reference/assignmentCompatability31.types | 2 +- .../reference/assignmentCompatability32.types | 2 +- .../reference/assignmentCompatability33.types | 10 +- .../reference/assignmentCompatability34.types | 10 +- .../reference/assignmentCompatability35.types | 2 +- .../reference/assignmentCompatability36.types | 2 +- .../reference/assignmentCompatability37.types | 10 +- .../reference/assignmentCompatability38.types | 10 +- .../reference/assignmentCompatability4.types | 2 +- .../reference/assignmentCompatability46.types | 6 +- ...ply-member-off-of-function-interface.types | 16 +- ...all-member-off-of-function-interface.types | 16 +- ...assignmentGenericLookupTypeNarrowing.types | 8 +- .../reference/assignmentLHSIsReference.types | 4 +- .../assignmentNonObjectTypeConstraints.types | 12 +- .../assignmentStricterConstraints.types | 16 +- .../assignmentToAnyArrayRestParameters.types | 22 +- .../assignmentToObjectAndFunction.types | 6 +- ...assignmentToParenthesizedIdentifiers.types | 2 +- .../assignmentToReferenceTypes.types | 2 +- .../reference/assignmentTypeNarrowing.types | 4 +- tests/baselines/reference/assignments.types | 2 +- .../asyncArrowFunction10_es2017.types | 2 +- .../reference/asyncArrowFunction10_es5.types | 2 +- .../reference/asyncArrowFunction10_es6.types | 2 +- .../reference/asyncArrowFunction11_es5.types | 12 +- .../asyncArrowFunction1_es2017.types | 2 +- .../reference/asyncArrowFunction1_es5.types | 2 +- .../reference/asyncArrowFunction1_es6.types | 2 +- .../asyncArrowFunction2_es2017.types | 4 +- .../reference/asyncArrowFunction2_es5.types | 4 +- .../reference/asyncArrowFunction2_es6.types | 4 +- .../asyncArrowFunction3_es2017.types | 2 +- .../reference/asyncArrowFunction3_es5.types | 2 +- .../reference/asyncArrowFunction3_es6.types | 2 +- .../asyncArrowFunction4_es2017.types | 2 +- .../reference/asyncArrowFunction4_es5.types | 2 +- .../reference/asyncArrowFunction4_es6.types | 2 +- .../asyncArrowFunction5_es2017.types | 4 +- .../reference/asyncArrowFunction5_es5.types | 4 +- .../reference/asyncArrowFunction5_es6.types | 4 +- .../asyncArrowFunction6_es2017.types | 4 +- .../reference/asyncArrowFunction6_es5.types | 4 +- .../reference/asyncArrowFunction6_es6.types | 4 +- .../asyncArrowFunction7_es2017.types | 6 +- .../reference/asyncArrowFunction7_es5.types | 6 +- .../reference/asyncArrowFunction7_es6.types | 6 +- .../asyncArrowFunction8_es2017.types | 6 +- .../reference/asyncArrowFunction8_es5.types | 6 +- .../reference/asyncArrowFunction8_es6.types | 6 +- .../asyncArrowFunction9_es2017.types | 4 +- .../reference/asyncArrowFunction9_es5.types | 4 +- .../reference/asyncArrowFunction9_es6.types | 4 +- ...rrowFunctionCapturesArguments_es2017.types | 6 +- ...ncArrowFunctionCapturesArguments_es5.types | 6 +- ...ncArrowFunctionCapturesArguments_es6.types | 6 +- ...syncArrowFunctionCapturesThis_es2017.types | 2 +- .../asyncArrowFunctionCapturesThis_es5.types | 2 +- .../asyncArrowFunctionCapturesThis_es6.types | 2 +- .../asyncArrowFunction_allowJs.types | 6 +- .../reference/asyncArrowInClassES5.types | 4 +- .../asyncAwaitIsolatedModules_es2017.types | 20 +- .../asyncAwaitIsolatedModules_es5.types | 20 +- .../asyncAwaitIsolatedModules_es6.types | 20 +- .../asyncAwaitNestedClasses_es5.types | 6 +- .../asyncAwaitWithCapturedBlockScopeVar.types | 16 +- .../reference/asyncAwait_es2017.types | 20 +- .../baselines/reference/asyncAwait_es5.types | 20 +- .../baselines/reference/asyncAwait_es6.types | 20 +- ...syncFunctionContextuallyTypedReturns.types | 80 +- .../asyncFunctionDeclaration10_es2017.types | 2 +- .../asyncFunctionDeclaration10_es5.types | 2 +- .../asyncFunctionDeclaration10_es6.types | 2 +- .../asyncFunctionDeclaration12_es2017.types | 2 +- .../asyncFunctionDeclaration12_es5.types | 2 +- .../asyncFunctionDeclaration12_es6.types | 2 +- .../asyncFunctionDeclaration16_es5.types | 14 +- .../asyncFunctionDeclaration2_es2017.types | 2 +- .../asyncFunctionDeclaration2_es5.types | 2 +- .../asyncFunctionDeclaration2_es6.types | 2 +- .../asyncFunctionDeclaration3_es2017.types | 2 +- .../asyncFunctionDeclaration3_es5.types | 2 +- .../asyncFunctionDeclaration3_es6.types | 2 +- .../asyncFunctionDeclaration5_es2017.types | 2 +- .../asyncFunctionDeclaration5_es5.types | 2 +- .../asyncFunctionDeclaration5_es6.types | 2 +- .../asyncFunctionDeclaration6_es2017.types | 2 +- .../asyncFunctionDeclaration6_es5.types | 2 +- .../asyncFunctionDeclaration6_es6.types | 2 +- .../asyncFunctionDeclaration7_es2017.types | 2 +- .../asyncFunctionDeclaration7_es5.types | 2 +- .../asyncFunctionDeclaration7_es6.types | 2 +- .../asyncFunctionDeclaration9_es2017.types | 4 +- .../asyncFunctionDeclaration9_es5.types | 4 +- .../asyncFunctionDeclaration9_es6.types | 4 +- ...tionDeclarationCapturesArguments_es5.types | 4 +- .../reference/asyncFunctionReturnType.2.types | 2 +- .../reference/asyncFunctionReturnType.types | 70 +- .../asyncFunctionTempVariableScoping.types | 2 +- .../reference/asyncFunctionsAcrossFiles.types | 8 +- .../asyncFunctionsAndStrictNullChecks.types | 60 +- ...syncGeneratorGenericNonWrappedReturn.types | 2 +- .../asyncMethodWithSuperConflict_es6.types | 14 +- .../asyncMethodWithSuper_es2017.types | 14 +- .../reference/asyncMethodWithSuper_es5.types | 14 +- .../reference/asyncMethodWithSuper_es6.types | 54 +- ...cUnParenthesizedArrowFunction_es2017.types | 14 +- ...syncUnParenthesizedArrowFunction_es5.types | 14 +- ...syncUnParenthesizedArrowFunction_es6.types | 14 +- .../reference/asyncWithVarShadowing_es6.types | 80 +- .../reference/augmentExportEquals5.types | 8 +- ...edTypeAssignmentCompatIndexSignature.types | 2 +- ...mentedTypeBracketNamedPropertyAccess.types | 2 +- .../reference/augmentedTypesClass2a.types | 2 +- .../reference/augmentedTypesEnum.types | 2 +- .../reference/augmentedTypesFunction.types | 2 +- ...xperimentalDecorators(target=es2015).types | 10 +- ...xperimentalDecorators(target=es2022).types | 10 +- ...xperimentalDecorators(target=esnext).types | 10 +- tests/baselines/reference/autoLift2.types | 12 +- tests/baselines/reference/autolift3.types | 18 +- tests/baselines/reference/autolift4.types | 8 +- ...eWithVoidExpressionReturnedFromArrow.types | 12 +- ...BindingElementWithLiteralInitializer.types | 2 +- .../awaitCallExpression1_es2017.types | 14 +- .../reference/awaitCallExpression1_es5.types | 14 +- .../reference/awaitCallExpression1_es6.types | 14 +- .../awaitCallExpression2_es2017.types | 14 +- .../reference/awaitCallExpression2_es5.types | 14 +- .../reference/awaitCallExpression2_es6.types | 14 +- .../awaitCallExpression3_es2017.types | 14 +- .../reference/awaitCallExpression3_es5.types | 14 +- .../reference/awaitCallExpression3_es6.types | 14 +- .../awaitCallExpression4_es2017.types | 18 +- .../reference/awaitCallExpression4_es5.types | 18 +- .../reference/awaitCallExpression4_es6.types | 18 +- .../awaitCallExpression5_es2017.types | 18 +- .../reference/awaitCallExpression5_es5.types | 18 +- .../reference/awaitCallExpression5_es6.types | 18 +- .../awaitCallExpression6_es2017.types | 18 +- .../reference/awaitCallExpression6_es5.types | 18 +- .../reference/awaitCallExpression6_es6.types | 18 +- .../awaitCallExpression7_es2017.types | 18 +- .../reference/awaitCallExpression7_es5.types | 18 +- .../reference/awaitCallExpression7_es6.types | 18 +- .../awaitCallExpression8_es2017.types | 22 +- .../reference/awaitCallExpression8_es5.types | 22 +- .../reference/awaitCallExpression8_es6.types | 22 +- .../awaitCallExpressionInSyncFunction.types | 4 +- .../reference/awaitInNonAsyncFunction.types | 16 +- .../reference/awaitUnionPromise.types | 4 +- tests/baselines/reference/awaitedType.types | 112 +- .../reference/awaitedTypeJQuery.types | 44 +- .../reference/awaitedTypeStrictNull.types | 34 +- ...erenceLowerPriorityThanGoodInference.types | 32 +- .../reference/badOverloadError.types | 2 +- .../baselines/reference/badThisBinding.types | 8 +- .../reference/baseConstraintOfDecorator.types | 16 +- .../baseExpressionTypeParameters.types | 2 +- .../reference/baseTypeAfterDerivedType.types | 8 +- .../baseTypeWrappingInstantiationChain.types | 4 +- .../baselines/reference/bestChoiceType.types | 30 +- ...stCommonTypeOfConditionalExpressions.types | 30 +- ...tCommonTypeOfConditionalExpressions2.types | 6 +- .../reference/bestCommonTypeOfTuple.types | 20 +- .../bestCommonTypeReturnStatement.types | 6 +- .../reference/betterErrorForUnionCall.types | 8 +- .../reference/bigint64ArraySubarray.types | 12 +- tests/baselines/reference/bigintWithLib.types | 80 +- .../reference/bigintWithoutLib.types | 8 +- ...rithmeticControlFlowGraphNotTooLarge.types | 4 +- ...ngPatternCannotBeOnlyInferenceSource.types | 56 +- ...rnContextualTypeDoesNotCauseWidening.types | 8 +- .../bindingPatternInParameter01.types | 10 +- .../bitwiseNotOperatorWithAnyOtherType.types | 4 +- .../bitwiseNotOperatorWithNumberType.types | 6 +- .../bitwiseNotOperatorWithStringType.types | 10 +- .../reference/bivariantInferences.types | 6 +- ...blockScopedBindingsReassignedInLoop1.types | 4 +- ...blockScopedBindingsReassignedInLoop2.types | 8 +- ...blockScopedBindingsReassignedInLoop3.types | 16 +- ...blockScopedBindingsReassignedInLoop4.types | 2 +- ...blockScopedBindingsReassignedInLoop5.types | 2 +- ...blockScopedBindingsReassignedInLoop6.types | 4 +- ...ScopedSameNameFunctionDeclarationES5.types | 6 +- ...ScopedSameNameFunctionDeclarationES6.types | 6 +- ...SameNameFunctionDeclarationStrictES5.types | 10 +- ...SameNameFunctionDeclarationStrictES6.types | 10 +- .../blockScopedVariablesUseBeforeDef.types | 18 +- .../reference/bluebirdStaticThis.types | 238 +-- .../reference/booleanFilterAnyArray.types | 28 +- .../reference/booleanLiteralTypes1.types | 38 +- .../reference/booleanLiteralTypes2.types | 38 +- ...anLiteralsContextuallyTypedFromUnion.types | 24 +- ...lerSyntaxRestrictions(module=esnext).types | 6 +- ...rSyntaxRestrictions(module=preserve).types | 6 +- .../reference/cachedContextualTypes.types | 16 +- tests/baselines/reference/callChain.3.types | 44 +- tests/baselines/reference/callChain.types | 160 +- .../reference/callChainInference.types | 10 +- ...onWithIncorrectNumberOfTypeArguments.types | 60 +- ...GenericFunctionWithZeroTypeArguments.types | 38 +- ...lNonGenericFunctionWithTypeArguments.types | 38 +- ...fConditionalTypeWithConcreteBranches.types | 44 +- tests/baselines/reference/callOverload.types | 24 +- ...llOverloadViaElementAccessExpression.types | 10 +- .../baselines/reference/callOverloads1.types | 4 +- .../baselines/reference/callOverloads2.types | 8 +- .../baselines/reference/callOverloads5.types | 10 +- ...lSignatureAssignabilityInInheritance.types | 20 +- ...SignatureAssignabilityInInheritance2.types | 112 +- ...SignatureAssignabilityInInheritance3.types | 74 +- ...SignatureAssignabilityInInheritance4.types | 64 +- ...SignatureAssignabilityInInheritance5.types | 86 +- ...SignatureAssignabilityInInheritance6.types | 38 +- .../callSignatureFunctionOverload.types | 8 +- ...eWithOptionalParameterAndInitializer.types | 116 +- ...allSignatureWithoutAnnotationsOrBody.types | 4 +- ...WithoutReturnTypeAnnotationInference.types | 40 +- ...SignaturesThatDifferOnlyByReturnType.types | 4 +- ...ignaturesThatDifferOnlyByReturnType2.types | 10 +- ...thAccessibilityModifiersOnParameters.types | 74 +- ...allSignaturesWithDuplicateParameters.types | 74 +- ...callSignaturesWithOptionalParameters.types | 116 +- ...allSignaturesWithOptionalParameters2.types | 90 +- ...lSignaturesWithParameterInitializers.types | 116 +- ...SignaturesWithParameterInitializers2.types | 40 +- .../reference/callWithMissingVoid.types | 132 +- ...ndefinedUnknownAnyInJs(strict=false).types | 58 +- ...UndefinedUnknownAnyInJs(strict=true).types | 58 +- .../baselines/reference/callWithSpread.types | 134 +- .../baselines/reference/callWithSpread2.types | 52 +- .../baselines/reference/callWithSpread3.types | 44 +- .../baselines/reference/callWithSpread4.types | 18 +- .../baselines/reference/callWithSpread5.types | 6 +- .../reference/callWithSpreadES6.types | 74 +- .../callbackArgsDifferByOptionality.types | 16 +- .../reference/callbackCrossModule.types | 2 +- .../reference/callbackOnConstructor.types | 4 +- tests/baselines/reference/callbackTag1.types | 4 +- tests/baselines/reference/callbackTag2.types | 6 +- tests/baselines/reference/callbackTag4.types | 2 +- .../reference/callbackTagNamespace.types | 2 +- .../callbackTagNestedParameter.types | 2 +- .../reference/callbacksDontShareTypes.types | 52 +- .../reference/callsOnComplexSignatures.types | 114 +- .../cannotIndexGenericWritingError.types | 4 +- .../reference/captureThisInSuperCall.types | 2 +- .../reference/capturedLetConstInLoop1.types | 16 +- .../reference/capturedLetConstInLoop10.types | 42 +- .../capturedLetConstInLoop10_ES6.types | 42 +- .../reference/capturedLetConstInLoop13.types | 20 +- .../reference/capturedLetConstInLoop2.types | 40 +- .../capturedLetConstInLoop2_ES6.types | 40 +- .../reference/capturedLetConstInLoop3.types | 82 +- .../capturedLetConstInLoop3_ES6.types | 82 +- .../reference/capturedLetConstInLoop5.types | 82 +- .../capturedLetConstInLoop5_ES6.types | 82 +- .../reference/capturedLetConstInLoop9.types | 12 +- .../capturedLetConstInLoop9_ES6.types | 12 +- .../capturedParametersInInitializers1.types | 26 +- .../capturedParametersInInitializers2.types | 4 +- .../reference/capturedVarInLoop.types | 8 +- tests/baselines/reference/castTest.types | 20 +- tests/baselines/reference/castingTuple.types | 8 +- .../catchClauseWithTypeAnnotation.types | 26 +- ...meterConstrainedToOtherTypeParameter.types | 28 +- ...eterConstrainedToOtherTypeParameter2.types | 122 +- .../chainedPrototypeAssignment.types | 28 +- ...nedSpecializationToObjectTypeLiteral.types | 30 +- ...checkDestructuringShorthandAssigment.types | 4 +- .../checkExportsObjectAssignProperty.types | 56 +- ...ExportsObjectAssignPrototypeProperty.types | 28 +- ...onstraintOfJavascriptClassExpression.types | 4 +- .../checkInfiniteExpansionTermination2.types | 6 +- .../checkJsObjectLiteralIndexSignatures.types | 8 +- .../checkJsTypeDefNoUnusedLocalMarked.types | 14 +- .../checkJsdocOptionalParamOrder.types | 2 +- ...OnVariableDeclaredFunctionExpression.types | 20 +- .../reference/checkJsdocParamTag1.types | 14 +- .../reference/checkJsdocSatisfiesTag1.types | 10 +- .../reference/checkJsdocSatisfiesTag10.types | 8 +- .../reference/checkJsdocSatisfiesTag13.types | 8 +- .../reference/checkJsdocSatisfiesTag2.types | 14 +- .../reference/checkJsdocSatisfiesTag3.types | 16 +- .../reference/checkJsdocSatisfiesTag5.types | 8 +- .../reference/checkJsdocSatisfiesTag6.types | 8 +- .../reference/checkJsdocSatisfiesTag7.types | 8 +- .../reference/checkJsdocTypeTag1.types | 16 +- .../reference/checkJsdocTypeTag2.types | 24 +- .../reference/checkJsdocTypeTag5.types | 30 +- .../reference/checkJsdocTypeTag6.types | 14 +- .../reference/checkJsdocTypeTag7.types | 4 +- .../checkJsdocTypeTagOnObjectProperty1.types | 30 +- .../checkJsdocTypeTagOnObjectProperty2.types | 18 +- .../checkJsdocTypedefInParamTag1.types | 12 +- .../reference/checkJsxChildrenProperty1.types | 12 +- .../checkJsxChildrenProperty10.types | 2 +- .../checkJsxChildrenProperty11.types | 2 +- .../checkJsxChildrenProperty14.types | 36 +- .../checkJsxChildrenProperty15.types | 20 +- .../checkJsxChildrenProperty16.types | 32 +- .../reference/checkJsxChildrenProperty2.types | 30 +- .../reference/checkJsxChildrenProperty3.types | 10 +- .../reference/checkJsxChildrenProperty4.types | 12 +- .../reference/checkJsxChildrenProperty5.types | 12 +- .../reference/checkJsxChildrenProperty6.types | 26 +- .../reference/checkJsxChildrenProperty7.types | 22 +- .../reference/checkJsxChildrenProperty8.types | 26 +- .../reference/checkJsxChildrenProperty9.types | 2 +- ...eckJsxGenericTagHasCorrectInferences.types | 18 +- .../reference/checkJsxNotSetError.types | 2 +- ...heckJsxSubtleSkipContextSensitiveBug.types | 6 +- ...onSFXContextualTypeInferredCorrectly.types | 32 +- .../reference/checkObjectDefineProperty.types | 54 +- .../checkOtherObjectAssignProperty.types | 24 +- .../checkSuperCallBeforeThisAccess.types | 6 +- ...eckSwitchStatementIfCaseTypeIsString.types | 12 +- ...kTypePredicateForRedundantProperties.types | 2 +- .../checkerInitializationCrash.types | 2 +- .../reference/circularBaseTypes.types | 2 +- .../circularConstructorWithReturn.types | 10 +- .../circularContextualMappedType.types | 14 +- .../circularContextualReturnType.types | 8 +- .../circularInferredTypeOfVariable.types | 8 +- .../circularInstantiationExpression.types | 8 +- .../circularMappedTypeConstraint.types | 6 +- .../circularOptionalityRemoval.types | 4 +- .../circularReferenceInReturnType.types | 24 +- .../circularReferenceInReturnType2.types | 16 +- .../reference/circularResolvedSignature.types | 34 +- .../circularTypeofWithVarOrFunc.types | 4 +- ...lySimplifyingConditionalTypesNoCrash.types | 2 +- .../reference/cjsImportInES2015.types | 2 +- .../classAbstractFactoryFunction.types | 12 +- .../reference/classAbstractGeneric.types | 6 +- .../classAbstractInstantiations2.types | 12 +- .../classAppearsToHaveMembersOfObject.types | 4 +- .../reference/classBlockScoping.types | 2 +- .../classCanExtendConstructorFunction.types | 44 +- .../reference/classDeclarationLoop.types | 4 +- .../reference/classExpressionLoop.types | 4 +- ...classExpressionWithStaticProperties3.types | 12 +- ...ssExpressionWithStaticPropertiesES63.types | 12 +- .../reference/classExpressions.types | 2 +- ...MemberCalledTheSameAsItsOwnTypeParam.types | 4 +- .../reference/classExtendingClass.types | 12 +- .../reference/classExtendsAcrossFiles.types | 8 +- .../classExtendsInterfaceInExpression.types | 4 +- ...terfaceThatExtendsClassWithPrivates1.types | 8 +- .../reference/classExtendsNull.types | 16 +- .../reference/classExtensionNameOutput.types | 2 +- .../reference/classFieldSuperAccessible.types | 14 +- .../classFieldSuperAccessibleJs1.types | 8 +- .../classFieldSuperAccessibleJs2.types | 20 +- .../classFieldSuperNotAccessible.types | 2 +- .../classFieldSuperNotAccessibleJs.types | 2 +- .../reference/classFunctionMerging2.types | 4 +- .../classImplementsMethodWIthTupleArgs.types | 6 +- .../reference/classInConvertedLoopES5.types | 2 +- ...assMemberInitializerWithLamdaScoping.types | 36 +- ...ssMemberInitializerWithLamdaScoping2.types | 12 +- ...ssMemberInitializerWithLamdaScoping3.types | 12 +- ...ssMemberInitializerWithLamdaScoping4.types | 12 +- ...ssMemberInitializerWithLamdaScoping5.types | 14 +- ...gedWithInterfaceMultipleBasesNoError.types | 4 +- .../classPropertyErrorOnNameOnly.types | 4 +- .../reference/classSideInheritance2.types | 2 +- .../reference/classSideInheritance3.types | 2 +- .../classStaticBlock11(target=es2015).types | 4 +- .../classStaticBlock11(target=es2022).types | 4 +- .../classStaticBlock11(target=esnext).types | 4 +- .../classStaticBlock13(target=es2015).types | 4 +- .../classStaticBlock13(target=es2022).types | 4 +- .../classStaticBlock13(target=esnext).types | 4 +- .../classStaticBlock15(target=es2015).types | 4 +- .../classStaticBlock15(target=es2022).types | 4 +- .../classStaticBlock15(target=esnext).types | 4 +- .../reference/classStaticBlock16.types | 28 +- .../reference/classStaticBlock17.types | 28 +- .../classStaticBlock22(target=es2022).types | 8 +- .../classStaticBlock22(target=esnext).types | 8 +- .../classStaticBlock23(target=es2022).types | 18 +- .../classStaticBlock23(target=esnext).types | 18 +- .../classStaticBlock26(target=es2022).types | 2 +- .../classStaticBlock26(target=esnext).types | 2 +- .../reference/classStaticBlock27.types | 12 +- .../reference/classStaticBlock28.types | 4 +- .../classStaticBlock3(target=es2022).types | 8 +- .../classStaticBlock3(target=esnext).types | 8 +- .../reference/classStaticBlock8.types | 2 +- .../classStaticBlockUseBeforeDef3.types | 12 +- .../reference/classVarianceCircularity.types | 4 +- .../classVarianceResolveCircularity1.types | 8 +- .../classVarianceResolveCircularity2.types | 8 +- ...lyPublicMembersEquivalentToInterface.types | 4 +- ...yPublicMembersEquivalentToInterface2.types | 4 +- .../classWithOptionalParameter.types | 2 +- ...ithOverloadImplementationOfWrongName.types | 6 +- ...thOverloadImplementationOfWrongName2.types | 6 +- .../reference/classWithPrivateProperty.types | 4 +- .../classWithProtectedProperty.types | 4 +- .../reference/classWithPublicProperty.types | 4 +- tests/baselines/reference/classdecl.types | 20 +- tests/baselines/reference/cloduleTest1.types | 8 +- .../reference/coAndContraVariantInferences.js | 4 +- .../coAndContraVariantInferences.types | 40 +- .../coAndContraVariantInferences2.types | 90 +- .../coAndContraVariantInferences3.types | 114 +- .../coAndContraVariantInferences4.types | 16 +- .../coAndContraVariantInferences5.types | 14 +- .../coAndContraVariantInferences6.types | 14 +- .../reference/collectionPatternNoError.types | 8 +- .../collisionArgumentsArrowFunctions.types | 18 +- .../collisionArgumentsClassMethod.types | 44 +- .../collisionArgumentsFunction.types | 44 +- ...ollisionArgumentsFunctionExpressions.types | 26 +- .../reference/collisionArgumentsInType.types | 16 +- .../collisionArgumentsInterfaceMembers.types | 6 +- ...ionCodeGenModuleWithFunctionChildren.types | 2 +- ...isionCodeGenModuleWithMethodChildren.types | 2 +- ...collisionRestParameterArrowFunctions.types | 14 +- .../collisionRestParameterClassMethod.types | 30 +- .../collisionRestParameterFunction.types | 30 +- ...sionRestParameterFunctionExpressions.types | 18 +- .../collisionRestParameterInType.types | 8 +- ...llisionRestParameterInterfaceMembers.types | 4 +- ...llisionRestParameterUnderscoreIUsage.types | 10 +- ...sionSuperAndLocalFunctionInAccessors.types | 4 +- ...onSuperAndLocalFunctionInConstructor.types | 2 +- ...llisionSuperAndLocalFunctionInMethod.types | 2 +- ...isionSuperAndLocalFunctionInProperty.types | 8 +- ...collisionSuperAndLocalVarInAccessors.types | 4 +- ...llisionSuperAndLocalVarInConstructor.types | 2 +- .../collisionSuperAndLocalVarInMethod.types | 2 +- .../collisionSuperAndLocalVarInProperty.types | 8 +- .../collisionSuperAndNameResolution.types | 10 +- .../collisionSuperAndParameter.types | 54 +- .../collisionSuperAndParameter1.types | 4 +- ...lisionThisExpressionAndAliasInGlobal.types | 2 +- ...hisExpressionAndAmbientClassInGlobal.types | 2 +- ...nThisExpressionAndAmbientVarInGlobal.types | 2 +- ...lisionThisExpressionAndClassInGlobal.types | 2 +- ...llisionThisExpressionAndEnumInGlobal.types | 2 +- ...ionThisExpressionAndFunctionInGlobal.types | 2 +- ...ThisExpressionAndLocalVarInAccessors.types | 32 +- ...isExpressionAndLocalVarInConstructor.types | 16 +- ...nThisExpressionAndLocalVarInFunction.types | 12 +- ...ionThisExpressionAndLocalVarInLambda.types | 22 +- ...ionThisExpressionAndLocalVarInMethod.types | 16 +- ...nThisExpressionAndLocalVarInProperty.types | 16 +- ...essionAndLocalVarWithSuperExperssion.types | 4 +- ...isionThisExpressionAndModuleInGlobal.types | 2 +- ...isionThisExpressionAndNameResolution.types | 14 +- .../collisionThisExpressionAndParameter.types | 100 +- ...AndPropertyNameAsConstuctorParameter.types | 24 +- ...ollisionThisExpressionAndVarInGlobal.types | 2 +- ...commaOperatorInConditionalExpression.types | 8 +- .../commaOperatorLeftSideUnused.types | 8 +- .../commaOperatorOtherInvalidOperation.types | 4 +- .../commaOperatorOtherValidOperation.types | 4 +- ...ommaOperatorWithSecondOperandAnyType.types | 8 +- ...aOperatorWithSecondOperandStringType.types | 8 +- .../commaOperatorsMultipleOperators.types | 8 +- ...enthesizedAssertionInReturnStatement.types | 8 +- .../reference/commentInMethodCall.types | 4 +- .../reference/commentLeadingCloseBrace.types | 8 +- .../reference/commentOnAmbientfunction.types | 2 +- .../commentOnDecoratedClassDeclaration.types | 6 +- .../reference/commentOnParameter1.types | 2 +- .../reference/commentOnParameter2.types | 2 +- .../reference/commentOnParameter3.types | 2 +- .../reference/commentOnSignature1.types | 18 +- .../commentOnSimpleArrowFunctionBody1.types | 4 +- .../reference/commentsAfterCaseClauses1.types | 2 +- .../reference/commentsAfterCaseClauses2.types | 2 +- .../reference/commentsAfterCaseClauses3.types | 2 +- .../commentsAfterFunctionExpression1.types | 20 +- .../reference/commentsAfterSpread.types | 32 +- .../commentsArgumentsOfCallExpression1.types | 14 +- .../commentsArgumentsOfCallExpression2.types | 10 +- .../commentsBeforeFunctionExpression1.types | 8 +- .../reference/commentsClassMembers.types | 160 +- .../reference/commentsCommentParsing.types | 20 +- .../reference/commentsFunction.types | 36 +- .../reference/commentsInterface.types | 80 +- .../baselines/reference/commentsModules.types | 2 +- .../reference/commentsOnObjectLiteral2.types | 6 +- .../reference/commentsOnObjectLiteral3.types | 4 +- .../commentsOnPropertyOfObjectLiteral1.types | 20 +- .../reference/commentsOverloads.types | 92 +- .../reference/commentsTypeParameters.types | 10 +- .../baselines/reference/commentsVarDecl.types | 18 +- .../reference/commentsdoNotEmitComments.types | 12 +- .../reference/commentsemitComments.types | 12 +- .../reference/commonJSAliasedExport.types | 36 +- .../commonJSImportClassTypeReference.types | 2 +- ...ommonJSImportExportedClassExpression.types | 2 +- ...mmonJSImportNestedClassTypeReference.types | 2 +- .../reference/commonSourceDir5.types | 4 +- .../reference/commonSourceDir6.types | 4 +- .../reference/commonTypeIntersection.types | 8 +- ...rabilityTypeParametersRelatedByUnion.types | 4 +- ...rameterConstrainedByLiteralToLiteral.types | 2 +- ...dIndexedAccessTerminatesWithoutError.types | 2 +- ...mparisonOperatorWithIdenticalObjects.types | 10 +- ...onOperatorWithIdenticalTypeParameter.types | 2 +- ...NoRelationshipObjectsOnCallSignature.types | 360 ++-- ...ionshipObjectsOnConstructorSignature.types | 340 ++-- ...ipObjectsOnInstantiatedCallSignature.types | 396 ++--- ...tsOnInstantiatedConstructorSignature.types | 374 ++-- ...ratorWithNoRelationshipTypeParameter.types | 2 +- ...omparisonOperatorWithOneOperandIsAny.types | 2 +- ...mparisonOperatorWithOneOperandIsNull.types | 2 +- ...sonOperatorWithOneOperandIsUndefined.types | 2 +- ...atorWithSubtypeObjectOnCallSignature.types | 468 ++--- ...hSubtypeObjectOnConstructorSignature.types | 442 ++--- ...ypeObjectOnInstantiatedCallSignature.types | 436 ++--- ...ctOnInstantiatedConstructorSignature.types | 410 ++--- .../comparisonOperatorWithTypeParameter.types | 2 +- ...completionsCommentsCommentParsing.baseline | 20 +- ...etionsCommentsFunctionDeclaration.baseline | 20 +- ...letionsCommentsFunctionExpression.baseline | 20 +- .../reference/complexClassRelationships.types | 4 +- .../reference/complexNarrowingWithAny.types | 4 +- .../complexRecursiveCollections.types | 850 ++++----- ...essKeyofReliesOnKeyofNeverUpperBound.types | 6 +- ...ndexesOfIntersectionsAreInferencable.types | 14 +- .../reference/complicatedPrivacy.types | 14 +- .../compositeContextualSignature.types | 10 +- .../reference/compositeGenericFunction.types | 14 +- .../compoundAssignmentLHSIsReference.types | 4 +- ...ponentiationAssignmentLHSIsReference.types | 4 +- .../reference/computedEnumTypeWidening.types | 12 +- .../computedPropertiesInDestructuring1.types | 12 +- ...mputedPropertiesInDestructuring1_ES6.types | 12 +- .../computedPropertiesInDestructuring2.types | 2 +- ...mputedPropertiesInDestructuring2_ES6.types | 2 +- .../computedPropertyNameWithImportedKey.types | 2 +- .../computedPropertyNames10_ES5.types | 2 +- .../computedPropertyNames10_ES6.types | 2 +- .../computedPropertyNames22_ES5.types | 2 +- .../computedPropertyNames22_ES6.types | 2 +- .../computedPropertyNames25_ES5.types | 2 +- .../computedPropertyNames25_ES6.types | 2 +- .../computedPropertyNames29_ES5.types | 2 +- .../computedPropertyNames29_ES6.types | 2 +- .../computedPropertyNames31_ES5.types | 2 +- .../computedPropertyNames31_ES6.types | 2 +- .../computedPropertyNames33_ES5.types | 2 +- .../computedPropertyNames33_ES6.types | 2 +- .../computedPropertyNames34_ES5.types | 2 +- .../computedPropertyNames34_ES6.types | 2 +- .../computedPropertyNames48_ES5.types | 8 +- .../computedPropertyNames48_ES6.types | 8 +- ...mputedPropertyNames52(target=es2015).types | 6 +- .../computedPropertyNames52(target=es5).types | 6 +- .../computedPropertyNames9_ES5.types | 14 +- .../computedPropertyNames9_ES6.types | 14 +- ...utedPropertyNamesContextualType1_ES5.types | 8 +- ...utedPropertyNamesContextualType1_ES6.types | 8 +- ...utedPropertyNamesContextualType2_ES5.types | 8 +- ...utedPropertyNamesContextualType2_ES6.types | 8 +- ...utedPropertyNamesContextualType3_ES5.types | 8 +- ...utedPropertyNamesContextualType3_ES6.types | 8 +- ...utedPropertyNamesContextualType6_ES5.types | 8 +- ...utedPropertyNamesContextualType6_ES6.types | 8 +- ...utedPropertyNamesContextualType7_ES5.types | 12 +- ...utedPropertyNamesContextualType7_ES6.types | 12 +- ...tedPropertyNamesDeclarationEmit6_ES5.types | 4 +- ...tedPropertyNamesDeclarationEmit6_ES6.types | 4 +- ...computedPropertyNamesOnOverloads_ES5.types | 4 +- ...computedPropertyNamesOnOverloads_ES6.types | 4 +- ...mputedTypesKeyofNoIndexSignatureType.types | 2 +- ...erPropertiesInES5ShouldBeTransformed.types | 4 +- tests/baselines/reference/concatError.types | 8 +- tests/baselines/reference/concatTuples.types | 4 +- ...itionalOperatorConditionIsObjectType.types | 16 +- .../conditionalOperatorWithIdenticalBCT.types | 24 +- ...nditionalOperatorWithoutIdenticalBCT.types | 32 +- ...itionalTypeAssignabilityWhenDeferred.types | 38 +- ...asedContextualTypeReturnTypeWidening.types | 36 +- ...ContextualTypeSimplificationsSuceeds.types | 34 +- ...onRegularTypeFetchingSpeedReasonable.types | 2 +- .../conditionalTypeDoesntSpinForever.types | 170 +- ...lTypeRelaxingConstraintAssignability.types | 6 +- .../conditionalTypeSimplification.types | 4 +- ...rianceBigArrayConstraintsPerformance.types | 2 +- .../reference/conditionalTypes1.types | 86 +- .../reference/conditionalTypes2.types | 94 +- .../conditionalTypesExcessProperties.types | 2 +- .../conditionalTypesSimplifyWhenTrivial.types | 36 +- ...eOverloadsCausedByOverloadResolution.types | 46 +- .../reference/configFileExtendsAsList.types | 2 +- .../conflictingCommonJSES2015Exports.types | 10 +- ...tingDeclarationsImportFromNamespace1.types | 16 +- ...tingDeclarationsImportFromNamespace2.types | 16 +- ...sistentAliasVsNonAliasRecordBehavior.types | 32 +- .../baselines/reference/constAssertions.types | 40 +- .../reference/constDeclarations-access2.types | 8 +- .../reference/constDeclarations-access3.types | 8 +- .../reference/constDeclarations-access4.types | 8 +- .../reference/constDeclarations-access5.types | 8 +- .../reference/constDeclarations-scopes.types | 8 +- .../constDeclarations-validContexts.types | 8 +- tests/baselines/reference/constEnum2.types | 8 +- tests/baselines/reference/constEnum3.types | 16 +- .../baselines/reference/constEnumErrors.types | 4 +- ...ausesNoImport(isolatedmodules=false).types | 2 +- ...CausesNoImport(isolatedmodules=true).types | 2 +- ...tEnumNoObjectPrototypePropertyAccess.types | 28 +- .../reference/constEnumPropertyAccess2.types | 2 +- .../reference/constEnumPropertyAccess3.types | 36 +- .../constEnumSyntheticNodesComments.types | 12 +- .../constEnumToStringNoComments.types | 48 +- .../constEnumToStringWithComments.types | 48 +- tests/baselines/reference/constEnums.types | 12 +- .../constLocalsInFunctionExpressions.types | 10 +- .../reference/constantOverloadFunction.types | 16 +- ...nstantOverloadFunctionNoSubtypeError.types | 16 +- .../reference/constraintErrors1.types | 2 +- ...appedTypeWithConditionalIsResolvable.types | 4 +- ...straintPropagationThroughReturnTypes.types | 6 +- ...peParameterFromSameTypeParameterList.types | 2 +- .../constraintSatisfactionWithAny.types | 18 +- .../constraintSatisfactionWithAny2.types | 6 +- ...onstraintSatisfactionWithEmptyObject.types | 14 +- .../constraintWithIndexedAccess.types | 20 +- ...tSignatureAssignabilityInInheritance.types | 24 +- ...SignatureAssignabilityInInheritance2.types | 112 +- ...SignatureAssignabilityInInheritance3.types | 68 +- ...SignatureAssignabilityInInheritance4.types | 72 +- ...SignatureAssignabilityInInheritance5.types | 86 +- ...SignatureAssignabilityInInheritance6.types | 38 +- ...thAccessibilityModifiersOnParameters.types | 4 +- ...hAccessibilityModifiersOnParameters2.types | 4 +- ...ructSignaturesWithIdenticalOverloads.types | 8 +- .../constructSignaturesWithOverloads.types | 8 +- ...hOverloadsThatDifferOnlyByReturnType.types | 4 +- ...nstructorArgWithGenericCallSignature.types | 10 +- ...structorFunctionMethodTypeParameters.types | 16 +- .../reference/constructorFunctions.types | 10 +- .../reference/constructorFunctions2.types | 4 +- .../reference/constructorFunctions3.types | 24 +- .../reference/constructorOverloads5.types | 4 +- .../reference/constructorOverloads7.types | 6 +- ...ctorParametersInVariableDeclarations.types | 4 +- .../reference/constructorPropertyJs.types | 2 +- ...nstructorTagOnNestedBinaryExpression.types | 4 +- ...structorWithIncompleteTypeAnnotation.types | 34 +- ...terPropertiesAndPrivateFields.es2015.types | 16 +- .../constructorWithSuperAndPrologue.es5.types | 8 +- .../contextSensitiveReturnTypeInference.types | 30 +- ...xtualComputedNonBindablePropertyType.types | 36 +- ...xpressionTypecheckingDoesntBlowStack.types | 10 +- .../contextualIntersectionType.types | 18 +- ...contextualOverloadListFromArrayUnion.types | 58 +- ...tFromUnionWithPrimitiveNoImplicitAny.types | 16 +- ...ontextualPropertyOfGenericMappedType.types | 10 +- .../contextualReturnTypeOfIIFE.types | 6 +- .../contextualReturnTypeOfIIFE2.types | 28 +- .../contextualReturnTypeOfIIFE3.types | 34 +- ...contextualSigInstantiationRestParams.types | 10 +- ...itionalTypeInstantiationUsingDefault.types | 8 +- ...tualSignatureInArrayElementLibEs2015.types | 12 +- ...textualSignatureInArrayElementLibEs5.types | 12 +- .../contextualSignatureInObjectFreeze.types | 6 +- .../contextualSignatureInstantiation.types | 56 +- .../contextualSignatureInstantiation1.types | 32 +- .../contextualSignatureInstantiation2.types | 38 +- .../contextualSignatureInstantiation3.types | 34 +- .../contextualSignatureInstantiation4.types | 30 +- ...meterConstrainedToOuterTypeParameter.types | 16 +- ...lSignatureInstatiationContravariance.types | 18 +- ...xtualSignatureInstatiationCovariance.types | 18 +- .../reference/contextualThisType.types | 10 +- ...contextualTupleTypeParameterReadonly.types | 20 +- .../contextualTypeAppliedToVarArgs.types | 10 +- .../contextualTypeArrayReturnType.types | 8 +- .../reference/contextualTypeCaching.types | 42 +- ...rInitalizedVariablesFiltersUndefined.types | 12 +- ...ntextualTypeOfIndexedAccessParameter.types | 14 +- .../reference/contextualTypeOnYield1.types | 8 +- .../reference/contextualTypeOnYield2.types | 8 +- .../contextualTypeSelfReferencing.types | 6 +- .../contextualTypeShouldBeLiteral.types | 8 +- .../reference/contextualTypeTupleEnd.types | 108 +- ...xtualTypeWithUnionTypeCallSignatures.types | 22 +- ...tualTypeWithUnionTypeIndexSignatures.types | 56 +- .../contextualTypeWithUnionTypeMembers.types | 150 +- ...extualTypeWithUnionTypeObjectLiteral.types | 30 +- .../contextualTypedSpecialAssignment.types | 62 +- .../reference/contextualTyping.types | 276 +-- .../reference/contextualTyping13.types | 4 +- .../reference/contextualTyping14.types | 4 +- .../reference/contextualTyping15.types | 2 +- .../reference/contextualTyping22.types | 10 +- .../reference/contextualTyping23.types | 12 +- .../reference/contextualTyping24.types | 10 +- .../reference/contextualTyping25.types | 4 +- .../reference/contextualTyping26.types | 4 +- .../reference/contextualTyping27.types | 4 +- .../reference/contextualTyping28.types | 4 +- .../reference/contextualTyping29.types | 4 +- .../reference/contextualTyping30.types | 4 +- .../reference/contextualTyping31.types | 4 +- .../reference/contextualTyping32.types | 6 +- .../reference/contextualTyping33.types | 6 +- .../reference/contextualTyping34.types | 2 +- .../reference/contextualTyping35.types | 2 +- .../reference/contextualTyping36.types | 2 +- .../reference/contextualTyping37.types | 2 +- .../reference/contextualTyping38.types | 4 +- .../reference/contextualTyping39.types | 2 +- .../reference/contextualTyping40.types | 4 +- .../reference/contextualTyping41.types | 4 +- .../contextualTypingArrayOfLambdas.types | 10 +- ...xtualTypingFunctionReturningFunction.types | 18 +- ...tualTypingFunctionReturningFunction2.types | 10 +- .../contextualTypingOfAccessors.types | 16 +- ...textualTypingOfConditionalExpression.types | 24 +- ...extualTypingOfConditionalExpression2.types | 8 +- ...pingOfGenericFunctionTypedArguments1.types | 32 +- ...extualTypingOfLambdaReturnExpression.types | 18 +- ...TypingOfLambdaWithMultipleSignatures.types | 12 +- ...ypingOfLambdaWithMultipleSignatures2.types | 8 +- .../contextualTypingOfObjectLiterals.types | 8 +- .../contextualTypingOfObjectLiterals2.types | 12 +- .../contextualTypingOfOptionalMembers.types | 86 +- .../contextualTypingOfTooShortOverloads.types | 8 +- ...urnStatementWithReturnTypeAnnotation.types | 12 +- ...ypingTwoInstancesOfSameTypeParameter.types | 12 +- ...extualTypingWithFixedTypeParameters1.types | 16 +- ...ingWithGenericAndNonGenericSignature.types | 16 +- ...contextualTypingWithGenericSignature.types | 8 +- .../contextuallyTypeArgumentsKeyword.types | 2 +- ...xtuallyTypeAsyncFunctionAwaitOperand.types | 6 +- ...textuallyTypeAsyncFunctionReturnType.types | 52 +- ...TypeAsyncFunctionReturnTypeFromUnion.types | 38 +- .../contextuallyTypeCommaOperator01.types | 12 +- .../contextuallyTypeCommaOperator02.types | 12 +- .../contextuallyTypeCommaOperator03.types | 14 +- ...allyTypeGeneratorReturnTypeFromUnion.types | 4 +- .../contextuallyTypeLogicalAnd01.types | 12 +- .../contextuallyTypeLogicalAnd02.types | 12 +- .../contextuallyTypeLogicalAnd03.types | 16 +- .../contextuallyTypedBindingInitializer.types | 60 +- ...uallyTypedBindingInitializerNegative.types | 44 +- .../contextuallyTypedBooleanLiterals.types | 16 +- ...ontextuallyTypedByDiscriminableUnion.types | 30 +- ...edClassExpressionMethodDeclaration01.types | 24 +- ...edClassExpressionMethodDeclaration02.types | 24 +- ...ctionExpressionsAndReturnAnnotations.types | 22 +- .../contextuallyTypedGenericAssignment.types | 8 +- .../reference/contextuallyTypedIife.types | 124 +- .../contextuallyTypedIifeStrict.types | 124 +- .../contextuallyTypedJsxAttribute.types | 26 +- .../contextuallyTypedJsxChildren.types | 8 +- ...ypedObjectLiteralMethodDeclaration01.types | 30 +- ...ty(exactoptionalpropertytypes=false).types | 24 +- ...rty(exactoptionalpropertytypes=true).types | 20 +- ...tuallyTypedParametersOptionalInJSDoc.types | 22 +- ...allyTypedParametersWithInitializers1.types | 218 +-- ...allyTypedParametersWithInitializers2.types | 22 +- ...allyTypedParametersWithInitializers3.types | 16 +- ...allyTypedParametersWithInitializers4.types | 10 +- ...allyTypedParametersWithQuestionToken.types | 30 +- ...TypedStringLiteralsInJsxAttributes01.types | 12 +- ...TypedStringLiteralsInJsxAttributes02.types | 52 +- ...ntextuallyTypedSymbolNamedProperties.types | 26 +- .../contextuallyTypingOrOperator.types | 40 +- .../contextuallyTypingOrOperator2.types | 24 +- .../contextuallyTypingOrOperator3.types | 2 +- .../contextuallyTypingRestParameters.types | 4 +- .../continueNotInIterationStatement4.types | 2 +- .../contravariantInferenceAndTypeGuard.types | 22 +- ...ntOnlyInferenceFromAnnotatedFunction.types | 16 +- ...OnlyInferenceFromAnnotatedFunctionJs.types | 14 +- ...erenceWithAnnotatedOptionalParameter.types | 12 +- ...enceWithAnnotatedOptionalParameterJs.types | 12 +- .../contravariantTypeAliasInference.types | 10 +- .../controlFlowAliasedDiscriminants.types | 138 +- .../reference/controlFlowAliasing.types | 126 +- ...controlFlowAnalysisOnBareThisKeyword.types | 8 +- .../reference/controlFlowArrayErrors.types | 48 +- .../reference/controlFlowArrays.types | 152 +- .../controlFlowBinaryOrExpression.types | 12 +- .../reference/controlFlowBindingElement.types | 4 +- .../reference/controlFlowCaching.types | 22 +- ...FlowCommaExpressionAssertionMultiple.types | 16 +- ...ommaExpressionAssertionWithinTernary.types | 6 +- ...ntrolFlowCommaExpressionFunctionCall.types | 6 +- .../reference/controlFlowCommaOperator.types | 2 +- .../controlFlowComputedPropertyNames.types | 16 +- .../controlFlowDestructuringLoop.types | 14 +- .../controlFlowDestructuringParameters.types | 6 +- ...FlowDestructuringVariablesInTryCatch.types | 4 +- .../controlFlowElementAccessNoCrash1.types | 6 +- ...avorAssertedTypeThroughTypePredicate.types | 12 +- ...controlFlowFinallyNoCatchAssignments.types | 8 +- .../controlFlowForCatchAndFinally.types | 4 +- .../controlFlowForIndexSignatures.types | 2 +- .../reference/controlFlowForOfStatement.types | 4 +- .../reference/controlFlowForStatement.types | 4 +- .../reference/controlFlowGenericTypes.types | 86 +- .../baselines/reference/controlFlowIIFE.types | 12 +- .../reference/controlFlowIfStatement.types | 10 +- .../reference/controlFlowInOperator.types | 6 +- ...controlFlowInstanceOfGuardPrimitives.types | 24 +- .../reference/controlFlowInstanceof.types | 20 +- ...controlFlowInstanceofExtendsFunction.types | 8 +- ...lFlowInstanceofWithSymbolHasInstance.types | 32 +- .../controlFlowIterationErrors.types | 22 +- .../controlFlowIterationErrorsAsync.types | 34 +- .../reference/controlFlowJavascript.types | 2 +- .../reference/controlFlowLoopAnalysis.types | 20 +- ...FlowManyCallExpressionStatementsPerf.types | 114 +- .../reference/controlFlowNoImplicitAny.types | 2 +- .../controlFlowNullTypeAndLiteral.types | 14 +- .../controlFlowNullishCoalesce.types | 8 +- .../reference/controlFlowOptionalChain.types | 276 +-- .../reference/controlFlowOptionalChain2.types | 20 +- .../reference/controlFlowOptionalChain3.types | 8 +- .../reference/controlFlowOuterVariable.types | 24 +- .../reference/controlFlowParameter.types | 12 +- .../controlFlowPropertyDeclarations.types | 56 +- .../controlFlowSelfReferentialLoop.types | 146 +- .../reference/controlFlowStringIndex.types | 8 +- .../reference/controlFlowTruthiness.types | 6 +- .../reference/controlFlowTypeofObject.types | 28 +- .../reference/controlFlowWhileStatement.types | 6 +- .../controlFlowWithIncompleteTypes.types | 8 +- .../controlFlowWithTemplateLiterals.types | 16 +- .../reference/convertKeywordsYes.types | 2 +- .../reference/copyrightWithNewLine1.types | 4 +- .../reference/copyrightWithoutNewLine1.types | 4 +- .../correctOrderOfPromiseMethod.types | 12 +- .../reference/correlatedUnions.types | 230 +-- .../couldNotSelectGenericOverload.types | 10 +- tests/baselines/reference/covariance1.types | 6 +- .../reference/covariantCallbacks.types | 124 +- .../reference/crashInResolveInterface.types | 18 +- .../crashInYieldStarInAsyncFunction.types | 2 +- .../crashInresolveReturnStatement.types | 4 +- ...ePropertyIsRelatableToTargetProperty.types | 12 +- ...crashIntypeCheckInvocationExpression.types | 4 +- ...hIntypeCheckObjectCreationExpression.types | 8 +- .../reference/crashOnMethodSignatures.types | 2 +- .../reference/crashRegressionTest.types | 2 +- tests/baselines/reference/createArray.types | 4 +- .../reference/customAsyncIterator.types | 2 +- .../reference/customEventDetail.types | 4 +- .../cyclicGenericTypeInstantiation.types | 8 +- ...licGenericTypeInstantiationInference.types | 14 +- .../reference/cyclicTypeInstantiation.types | 4 +- tests/baselines/reference/debuggerEmit.types | 2 +- .../declFileAliasUseBeforeDeclaration.types | 2 +- .../reference/declFileConstructors.types | 8 +- .../declFileEmitDeclarationOnly.types | 12 +- ...ExportAssignmentImportInternalModule.types | 4 +- ...orClassWithPrivateOverloadedFunction.types | 6 +- ...FileForInterfaceWithOptionalFunction.types | 4 +- .../declFileForInterfaceWithRestParams.types | 6 +- .../reference/declFileForTypeParameters.types | 2 +- .../reference/declFileFunctions.types | 54 +- .../reference/declFileGenericType.types | 40 +- ...FileImportModuleWithExportAssignment.types | 6 +- .../baselines/reference/declFileMethods.types | 128 +- .../declFileObjectLiteralWithAccessors.types | 6 +- .../declFileObjectLiteralWithOnlyGetter.types | 6 +- .../declFileObjectLiteralWithOnlySetter.types | 6 +- .../declFilePrivateMethodOverloads.types | 34 +- .../reference/declFileRegressionTests.types | 4 +- ...tParametersOfFunctionAndFunctionType.types | 16 +- .../declFileTypeAnnotationParenType.types | 4 +- .../declFileTypeAnnotationStringLiteral.types | 8 +- .../declFileTypeAnnotationTupleType.types | 2 +- .../declFileTypeAnnotationTypeLiteral.types | 8 +- .../declFileTypeAnnotationUnionType.types | 2 +- ...onVisibilityErrorParameterOfFunction.types | 24 +- ...AnnotationVisibilityErrorTypeLiteral.types | 14 +- .../reference/declFileTypeofFunction.types | 64 +- tests/baselines/reference/declInput-2.types | 4 +- tests/baselines/reference/declInput.types | 2 +- tests/baselines/reference/declInput3.types | 2 +- tests/baselines/reference/declInput4.types | 2 +- .../declarationEmitAliasExportStar.types | 4 +- ...clarationEmitArrowFunctionNoRenaming.types | 6 +- ...onEmitBindingPatternWithReservedWord.types | 4 +- .../declarationEmitBindingPatterns.types | 6 +- ...ationEmitBindingPatternsFunctionExpr.types | 20 +- ...declarationEmitBindingPatternsUnused.types | 84 +- ...ationEmitBundleWithAmbientReferences.types | 2 +- ...clarationEmitClassMemberNameConflict.types | 16 +- ...tClassMemberWithComputedPropertyName.types | 12 +- ...nEmitClassMixinLocalClassDeclaration.types | 2 +- ...tComputedNameCausesImportToBePainted.types | 4 +- ...mitDefaultExportWithStaticAssignment.types | 4 +- .../declarationEmitDestructuring1.types | 8 +- .../declarationEmitDestructuring2.types | 8 +- .../declarationEmitDestructuring3.types | 4 +- .../declarationEmitDestructuring4.types | 10 +- .../declarationEmitDestructuring5.types | 10 +- ...OptionalBindingParametersInOverloads.types | 8 +- ...cturingWithOptionalBindingParameters.types | 4 +- ...EmitDistributiveConditionalWithInfer.types | 4 +- ...DoesNotUseReexportedNamespaceAsLocal.types | 4 +- ...nEmitDuplicateParameterDestructuring.types | 8 +- ...tionEmitExpandoWithGenericConstraint.types | 14 +- ...ionEmitExportAliasVisibiilityMarking.types | 18 +- .../declarationEmitExpressionInExtends.types | 2 +- .../declarationEmitExpressionInExtends2.types | 4 +- .../declarationEmitExpressionInExtends3.types | 12 +- ...ssionWithNonlocalPrivateUniqueSymbol.types | 2 +- .../declarationEmitFBoundedTypeParams.types | 6 +- ...aultExportClassExtendingExpression01.types | 2 +- ...rtingModuleAugmentationRetainsImport.types | 16 +- .../declarationEmitGlobalThisPreserved.types | 592 +++---- ...eclarationEmitIdentifierPredicates01.types | 2 +- ...dentifierPredicatesWithPrivateName01.types | 2 +- .../declarationEmitIndexTypeArray.types | 8 +- ...onEmitInlinedDistributiveConditional.types | 34 +- .../declarationEmitKeywordDestructuring.types | 10 +- ...ambdaWithMissingTypeParameterNoCrash.types | 4 +- ...declarationEmitLateBoundAssignments2.types | 20 +- ...rationEmitLocalClassDeclarationMixin.types | 22 +- ...peDistributivityPreservesConstraints.types | 14 +- ...ppedTypePropertyFromNumericStringKey.types | 6 +- ...onEmitMappedTypeTemplateTypeofSymbol.types | 4 +- ...declarationEmitMixinPrivateProtected.types | 10 +- .../declarationEmitNameConflicts.types | 4 +- .../declarationEmitNameConflicts2.types | 2 +- .../declarationEmitNameConflicts3.types | 4 +- ...arationEmitNestedAnonymousMappedType.types | 14 +- .../declarationEmitNestedGenerics.types | 8 +- ...ationEmitObjectAssignedDefaultExport.types | 28 +- ...clarationEmitObjectLiteralAccessors1.types | 4 +- ...arationEmitObjectLiteralAccessorsJs1.types | 4 +- .../declarationEmitOfFuncspace.types | 2 +- .../declarationEmitOptionalMethod.types | 4 +- ...rationEmitOverloadedPrivateInference.types | 36 +- .../declarationEmitPathMappingMonorepo.types | 8 +- .../declarationEmitPathMappingMonorepo2.types | 6 +- ...onEmitPrefersPathKindBasedOnBundling.types | 6 +- ...nEmitPrefersPathKindBasedOnBundling2.types | 6 +- ...eclarationEmitPrivateNameCausesError.types | 4 +- .../reference/declarationEmitPromise.types | 56 +- ...rationEmitQualifiedAliasTypeArgument.types | 4 +- ...itRecursiveConditionalAliasPreserved.types | 4 +- ...rationEmitReexportedSymlinkReference.types | 6 +- ...ationEmitReexportedSymlinkReference2.types | 6 +- ...ationEmitReexportedSymlinkReference3.types | 6 +- ...ainedAnnotationRetainsImportInOutput.types | 14 +- ...declarationEmitRetainsJsdocyComments.types | 16 +- ...rationEmitReusesLambdaParameterNodes.types | 6 +- ...larationEmitShadowingInferNotRenamed.types | 4 +- .../declarationEmitSymlinkPaths.types | 8 +- ...mitTupleRestSignatureLeadingVariadic.types | 4 +- ...tionEmitTypeAliasWithTypeParameters1.types | 4 +- ...tionEmitTypeAliasWithTypeParameters2.types | 4 +- ...ionEmitTypeParameterNameInOuterScope.types | 18 +- ...itTypeParameterNameReusedInOverloads.types | 4 +- ...tTypeParameterNameShadowedInternally.types | 10 +- ...EmitUnnessesaryTypeReferenceNotAdded.types | 8 +- ...itUsingAlternativeContainingModules1.types | 64 +- ...itUsingAlternativeContainingModules2.types | 68 +- .../declarationEmitUsingTypeAlias1.types | 8 +- ...arationEmitWithDefaultAsComputedName.types | 4 +- ...rationEmitWithDefaultAsComputedName2.types | 4 +- ...ionEmitWithInvalidPackageJsonTypings.types | 6 +- ...FileForHtmlFileWithinDeclarationFile.types | 8 +- ...port(allowarbitraryextensions=false).types | 8 +- ...mport(allowarbitraryextensions=true).types | 8 +- .../reference/declarationFiles.types | 10 +- ...dules(allowarbitraryextensions=true).types | 6 +- ...nctionTypeNonlocalShouldNotBeAnError.types | 2 +- .../baselines/reference/declarationMaps.types | 4 +- .../reference/declarationMapsMultifile.types | 12 +- .../reference/declarationMapsOutFile.types | 12 +- .../reference/declarationMapsOutFile2.types | 12 +- .../declarationMapsWithSourceMap.types | 12 +- .../declarationMapsWithoutDeclaration.types | 4 +- .../declarationNoDanglingGenerics.types | 18 +- .../reference/declarationQuotedMembers.types | 2 +- .../declarationsAndAssignments.types | 22 +- ...rationsForFileShadowingGlobalNoError.types | 6 +- ...rationsForIndirectTypeAliasReference.types | 4 +- ...tionsIndirectGeneratedAliasReference.types | 6 +- ...InternalTypesProduceUniqueTypeParams.types | 116 +- ...ernalModuleWithExportAssignedFundule.types | 6 +- .../declareFileExportAssignment.types | 4 +- ...signmentWithVarFromVariableStatement.types | 4 +- .../reference/declaredExternalModule.types | 4 +- ...edExternalModuleWithExportAssignment.types | 4 +- .../decoratedBlockScopedClass1.types | 10 +- .../decoratedBlockScopedClass2.types | 10 +- .../decoratedBlockScopedClass3.types | 14 +- .../decoratedClassExportsCommonJS1.types | 2 +- .../decoratedClassExportsCommonJS2.types | 4 +- .../decoratedClassExportsSystem1.types | 4 +- .../decoratedClassExportsSystem2.types | 4 +- .../decoratedClassFromExternalModule.types | 4 +- .../reference/decoratorCallGeneric.types | 4 +- .../decoratorChecksFunctionBodies.types | 8 +- .../reference/decoratorInAmbientContext.types | 6 +- .../reference/decoratorInJsFile.types | 2 +- .../reference/decoratorInJsFile1.types | 2 +- ...orInstantiateModulesInFunctionBodies.types | 8 +- .../reference/decoratorMetadata.types | 2 +- ...etadataElidedImport(module=commonjs).types | 8 +- ...rMetadataElidedImport(module=esnext).types | 8 +- .../decoratorMetadataNoStrictNull.types | 8 +- .../decoratorMetadataOnInferredType.types | 14 +- .../reference/decoratorMetadataPromise.types | 2 +- ...etadataRestParameterWithImportedType.types | 6 +- ...decoratorMetadataWithConstructorType.types | 14 +- ...taWithImportDeclarationNameCollision.types | 4 +- ...aWithImportDeclarationNameCollision2.types | 4 +- ...aWithImportDeclarationNameCollision3.types | 4 +- ...aWithImportDeclarationNameCollision4.types | 4 +- ...aWithImportDeclarationNameCollision5.types | 4 +- ...aWithImportDeclarationNameCollision6.types | 4 +- ...aWithImportDeclarationNameCollision7.types | 4 +- ...aWithImportDeclarationNameCollision8.types | 4 +- .../decoratorMetadataWithTypeOnlyImport.types | 2 +- .../reference/decoratorOnArrowFunction.types | 4 +- .../reference/decoratorOnClass1.es6.types | 4 +- .../reference/decoratorOnClass1.types | 4 +- .../reference/decoratorOnClass2.es6.types | 4 +- .../reference/decoratorOnClass2.types | 4 +- .../reference/decoratorOnClass3.es6.types | 4 +- .../reference/decoratorOnClass3.types | 4 +- .../reference/decoratorOnClass4.es6.types | 4 +- .../reference/decoratorOnClass4.types | 4 +- .../reference/decoratorOnClass5.es6.types | 4 +- .../reference/decoratorOnClass5.types | 4 +- .../reference/decoratorOnClass6.es6.types | 4 +- .../reference/decoratorOnClass7.es6.types | 4 +- .../reference/decoratorOnClass8.es6.types | 4 +- .../reference/decoratorOnClass8.types | 4 +- .../decoratorOnClassAccessor1.es6.types | 4 +- .../reference/decoratorOnClassAccessor1.types | 4 +- .../reference/decoratorOnClassAccessor2.types | 4 +- .../reference/decoratorOnClassAccessor3.types | 4 +- .../reference/decoratorOnClassAccessor4.types | 4 +- .../reference/decoratorOnClassAccessor5.types | 4 +- .../reference/decoratorOnClassAccessor6.types | 4 +- .../reference/decoratorOnClassAccessor7.types | 20 +- .../reference/decoratorOnClassAccessor8.types | 14 +- .../decoratorOnClassConstructor1.types | 4 +- .../decoratorOnClassConstructor2.types | 6 +- .../decoratorOnClassConstructor3.types | 6 +- ...ecoratorOnClassConstructorParameter1.types | 4 +- ...ecoratorOnClassConstructorParameter4.types | 4 +- .../decoratorOnClassMethod1.es6.types | 4 +- .../reference/decoratorOnClassMethod1.types | 4 +- .../reference/decoratorOnClassMethod10.types | 4 +- .../reference/decoratorOnClassMethod11.types | 2 +- .../reference/decoratorOnClassMethod12.types | 2 +- .../reference/decoratorOnClassMethod13.types | 6 +- .../reference/decoratorOnClassMethod14.types | 2 +- ...oratorOnClassMethod19(target=es2015).types | 6 +- ...oratorOnClassMethod19(target=es2022).types | 6 +- ...oratorOnClassMethod19(target=esnext).types | 6 +- .../reference/decoratorOnClassMethod2.types | 4 +- .../reference/decoratorOnClassMethod3.types | 4 +- .../reference/decoratorOnClassMethod4.types | 4 +- .../reference/decoratorOnClassMethod5.types | 4 +- .../reference/decoratorOnClassMethod6.types | 2 +- .../reference/decoratorOnClassMethod7.types | 4 +- .../reference/decoratorOnClassMethod8.types | 4 +- .../decoratorOnClassMethodOverload1.types | 4 +- .../decoratorOnClassMethodOverload2.types | 4 +- ...decoratorOnClassMethodParameter1.es6.types | 6 +- .../decoratorOnClassMethodParameter1.types | 6 +- .../decoratorOnClassMethodParameter2.types | 6 +- .../decoratorOnClassMethodParameter3.types | 8 +- .../decoratorOnClassMethodThisParameter.types | 12 +- .../decoratorOnClassProperty1.es6.types | 4 +- .../reference/decoratorOnClassProperty1.types | 4 +- .../decoratorOnClassProperty10.types | 4 +- .../decoratorOnClassProperty11.types | 2 +- .../decoratorOnClassProperty12.types | 4 +- .../decoratorOnClassProperty13.types | 4 +- .../reference/decoratorOnClassProperty2.types | 4 +- .../reference/decoratorOnClassProperty3.types | 4 +- .../reference/decoratorOnClassProperty6.types | 4 +- .../reference/decoratorOnClassProperty7.types | 4 +- .../baselines/reference/decoratorOnEnum.types | 4 +- .../reference/decoratorOnEnum2.types | 4 +- .../decoratorOnFunctionDeclaration.types | 4 +- .../decoratorOnFunctionExpression.types | 4 +- .../decoratorOnFunctionParameter.types | 4 +- .../reference/decoratorOnImportEquals1.types | 4 +- .../reference/decoratorOnImportEquals2.types | 4 +- .../reference/decoratorOnInterface.types | 4 +- .../reference/decoratorOnInternalModule.types | 4 +- .../reference/decoratorOnTypeAlias.types | 4 +- .../baselines/reference/decoratorOnVar.types | 4 +- .../decoratorReferenceOnOtherProperty.types | 12 +- .../reference/decoratorReferences.types | 10 +- ...oratorWithNegativeLiteralTypeNoCrash.types | 4 +- .../decoratorWithUnderscoreMethod.types | 14 +- .../decoratorsOnComputedProperties.types | 166 +- ...torWithAnyOtherTypeInvalidOperations.types | 4 +- ...ratorWithNumberTypeInvalidOperations.types | 12 +- ...ntOperatorWithUnsupportedBooleanType.types | 12 +- ...entOperatorWithUnsupportedStringType.types | 12 +- .../deduplicateImportsInSystem.types | 4 +- ...deepElaborationsIntoArrowExpressions.types | 2 +- ...ertyCheckingWhenTargetIsIntersection.types | 4 +- .../reference/deepKeysIndexing.types | 18 +- ...plyNestedAssignabilityErrorsCombined.types | 24 +- .../reference/deeplyNestedCheck.types | 4 +- .../reference/deeplyNestedConstraints.types | 2 +- .../reference/deeplyNestedMappedTypes.types | 46 +- .../defaultArgsInFunctionExpressions.types | 54 +- .../reference/defaultArgsInOverloads.types | 24 +- .../defaultBestCommonTypesHaveDecls.types | 8 +- ...defaultDeclarationEmitNamedCorrectly.types | 6 +- ...eclarationEmitShadowedNamedCorrectly.types | 6 +- .../defaultExportInAwaitExpression01.types | 8 +- .../defaultExportInAwaitExpression02.types | 8 +- .../defaultExportWithOverloads01.types | 6 +- .../defaultKeywordWithoutExport1.types | 4 +- ...terAddsUndefinedWithStrictNullChecks.types | 48 +- .../defaultParameterTrailingComments.types | 2 +- .../defaultValueInFunctionOverload1.types | 4 +- .../defaultValueInFunctionTypes.types | 6 +- .../deferredLookupTypeResolution.types | 12 +- ...ineVariables_useDefineForClassFields.types | 4 +- .../definiteAssignmentAssertions.types | 2 +- tests/baselines/reference/deleteChain.types | 24 +- .../deleteOperatorWithAnyOtherType.types | 4 +- .../deleteOperatorWithNumberType.types | 6 +- .../deleteOperatorWithStringType.types | 10 +- .../dependentDestructuredVariables.types | 306 ++-- ...tructuredVariablesFromNestedPatterns.types | 30 +- ...lassConstructorWithExplicitReturns01.types | 4 +- ...ivedClassConstructorWithoutSuperCall.types | 4 +- ...erivedClassOverridesProtectedMembers.types | 16 +- ...rivedClassOverridesProtectedMembers2.types | 72 +- ...rivedClassOverridesProtectedMembers3.types | 16 +- .../derivedClassOverridesPublicMembers.types | 72 +- .../derivedClassSuperProperties.types | 58 +- .../derivedClassSuperStatementPosition.types | 8 +- .../reference/derivedClassTransitivity.types | 12 +- .../reference/derivedClassTransitivity2.types | 14 +- .../reference/derivedClassTransitivity3.types | 14 +- .../reference/derivedClassTransitivity4.types | 12 +- .../baselines/reference/derivedClasses.types | 4 +- .../derivedInterfaceCallSignature.types | 36 +- ...HiddenBaseCallViaSuperPropertyAccess.types | 22 +- ...ypeCallingBaseImplWithOptionalParams.types | 12 +- ...ivedUninitializedPropertyDeclaration.types | 4 +- ...destructureOfVariableSameAsShorthand.types | 12 +- .../destructureOptionalParameter.types | 4 +- .../destructuredDeclarationEmit.types | 4 +- ...ucturedMaappedTypeIsNotImplicitlyAny.types | 4 +- ...ingArrayBindingPatternAndAssignment2.types | 4 +- ...ingArrayBindingPatternAndAssignment3.types | 12 +- .../destructuringAssignabilityCheck.types | 12 +- .../destructuringAssignmentWithDefault.types | 8 +- .../destructuringAssignmentWithDefault2.types | 8 +- .../reference/destructuringControlFlow.types | 6 +- .../destructuringControlFlowNoCrash.types | 4 +- .../destructuringInFunctionType.types | 6 +- ...destructuringInVariableDeclarations1.types | 4 +- ...destructuringInVariableDeclarations2.types | 4 +- ...destructuringInVariableDeclarations3.types | 4 +- ...destructuringInVariableDeclarations4.types | 4 +- ...destructuringInVariableDeclarations5.types | 4 +- ...destructuringInVariableDeclarations6.types | 4 +- ...destructuringInVariableDeclarations7.types | 4 +- ...destructuringInVariableDeclarations8.types | 4 +- ...InitializerContextualTypeFromContext.types | 20 +- ...ingPatternAndAssignment6(target=es5).types | 4 +- ...PatternAndAssignment6(target=esnext).types | 4 +- ...ingPatternAndAssignment7(target=es5).types | 4 +- ...PatternAndAssignment7(target=esnext).types | 4 +- ...ingPatternAndAssignment8(target=es5).types | 4 +- ...PatternAndAssignment8(target=esnext).types | 4 +- ...estructuringParameterDeclaration1ES5.types | 98 +- ...ringParameterDeclaration1ES5iterable.types | 98 +- ...estructuringParameterDeclaration1ES6.types | 92 +- .../destructuringParameterDeclaration2.types | 64 +- ...estructuringParameterDeclaration3ES5.types | 44 +- ...ringParameterDeclaration3ES5iterable.types | 44 +- ...estructuringParameterDeclaration3ES6.types | 44 +- .../destructuringParameterDeclaration4.types | 30 +- .../destructuringParameterDeclaration5.types | 38 +- .../destructuringParameterDeclaration6.types | 20 +- ...estructuringParameterDeclaration7ES5.types | 8 +- ...ringParameterDeclaration7ES5iterable.types | 8 +- .../destructuringParameterDeclaration8.types | 14 +- ...yAssignmentNameIsNotAssignmentTarget.types | 4 +- ...destructuringTempOccursAfterPrologue.types | 2 +- .../reference/destructuringTuple.types | 20 +- .../destructuringUnspreadableIntoRest.types | 2 +- ...destructuringVariableDeclaration1ES5.types | 4 +- ...uringVariableDeclaration1ES5iterable.types | 4 +- ...destructuringVariableDeclaration1ES6.types | 4 +- .../destructuringVariableDeclaration2.types | 2 +- .../destructuringWithConstraint.types | 2 +- .../destructuringWithGenericParameter.types | 16 +- ...destructuringWithLiteralInitializers.types | 84 +- ...estructuringWithLiteralInitializers2.types | 40 +- .../destructuringWithNumberLiteral.types | 2 +- ...detachedCommentAtStartOfConstructor1.types | 2 +- ...detachedCommentAtStartOfConstructor2.types | 2 +- ...etachedCommentAtStartOfFunctionBody1.types | 2 +- ...etachedCommentAtStartOfFunctionBody2.types | 2 +- ...achedCommentAtStartOfLambdaFunction1.types | 4 +- ...achedCommentAtStartOfLambdaFunction2.types | 4 +- ...ionsForExpressionsWhichCouldBeCalled.types | 8 +- .../differentTypesWithSameName.types | 6 +- .../disallowLineTerminatorBeforeArrow.types | 82 +- ...riminableUnionWithIntersectedMembers.types | 4 +- .../discriminantElementAccessCheck.types | 14 +- ...discriminantNarrowingCouldBeCircular.types | 28 +- .../reference/discriminantPropertyCheck.types | 74 +- .../discriminantPropertyInference.types | 66 +- ...ntUsingEvaluatableTemplateExpression.types | 14 +- .../discriminantsAndNullOrUndefined.types | 12 +- .../discriminantsAndPrimitives.types | 24 +- .../discriminantsAndTypePredicates.types | 12 +- .../discriminateWithDivergentAccessors1.types | 4 +- .../discriminateWithMissingProperty.types | 4 +- ...y2(exactoptionalpropertytypes=false).types | 56 +- ...ty2(exactoptionalpropertytypes=true).types | 56 +- ...y3(exactoptionalpropertytypes=false).types | 8 +- ...ty3(exactoptionalpropertytypes=true).types | 8 +- ...y4(exactoptionalpropertytypes=false).types | 2 +- ...ty4(exactoptionalpropertytypes=true).types | 2 +- .../discriminatedUnionInference.types | 6 +- .../discriminatedUnionJsxElement.types | 6 +- .../reference/discriminatedUnionTypes1.types | 30 +- .../reference/discriminatedUnionTypes2.types | 34 +- ...instUndefinedWithoutStrictNullChecks.types | 4 +- .../reference/dissallowSymbolAsWeakType.types | 44 +- ...stributiveConditionalTypeConstraints.types | 20 +- .../reference/divergentAccessors1.types | 14 +- .../reference/divergentAccessorsTypes6.types | 8 +- .../reference/divergentAccessorsTypes7.types | 18 +- .../divideAndConquerIntersections.types | 20 +- ...aborateAssignabilityToTypeParameters.types | 6 +- ...NotEmitPinnedCommentOnNotEmittedNode.types | 4 +- ...tEmitPinnedCommentOnNotEmittedNodets.types | 4 +- .../reference/doNotInferUnrelatedTypes.types | 6 +- .../reference/doWhileBreakStatements.types | 2 +- .../reference/doWhileContinueStatements.types | 2 +- ...uNeedToChangeYourTargetLibraryES2015.types | 10 +- ...dToChangeYourTargetLibraryES2016Plus.types | 12 +- ...rowUnionOfConstructorsWithInstanceof.types | 12 +- .../reference/dottedModuleName.types | 6 +- .../reference/dottedSymbolResolution1.types | 24 +- ...leMixinConditionalTypeBaseClassWorks.types | 26 +- .../reference/doubleUnderscoreEnumEmit.types | 2 +- .../doubleUnderscoreReactNamespace.types | 2 +- .../reference/downlevelLetConst14.types | 40 +- .../reference/downlevelLetConst15.types | 40 +- .../reference/downlevelLetConst16.types | 144 +- .../reference/downlevelLetConst17.types | 30 +- .../reference/downlevelLetConst19.types | 12 +- ...eSlashAvoidUnnecessaryResolutionMode.types | 2 +- ...indingElementInParameterDeclaration1.types | 20 +- ...indingElementInParameterDeclaration2.types | 20 +- .../reference/duplicateLocalVariable1.types | 230 +-- .../reference/duplicateLocalVariable2.types | 16 +- ...iteralProperty_computedNameNegative1.types | 4 +- ...duplicateOverloadInTypeAugmentation1.types | 14 +- .../reference/duplicatePackage.types | 8 +- ...ePackage_relativeImportWithinPackage.types | 6 +- ...e_relativeImportWithinPackage_scoped.types | 6 +- ...uplicatePropertiesInTypeAssertions01.types | 2 +- ...uplicatePropertiesInTypeAssertions02.types | 2 +- .../reference/duplicatePropertyNames.types | 10 +- .../dynamicImportEvaluateSpecifier.types | 4 +- ...namicImportInDefaultExportExpression.types | 2 +- .../reference/dynamicImportsDeclaration.types | 2 +- .../baselines/reference/dynamicRequire.types | 2 +- .../reference/elaboratedErrors.types | 6 +- ...ypeStillReferencesArgumentAtTopLevel.types | 4 +- .../reference/elementAccessChain.types | 8 +- .../baselines/reference/elidedJSImport1.types | 8 +- ...tLiteralExpressionInArrowFunctionES5.types | 4 +- ...tLiteralExpressionInArrowFunctionES6.types | 4 +- .../reference/emitArrowFunction.types | 20 +- .../reference/emitArrowFunctionAsIs.types | 12 +- .../reference/emitArrowFunctionAsIsES6.types | 12 +- .../reference/emitArrowFunctionES6.types | 60 +- .../emitArrowFunctionThisCapturing.types | 10 +- .../emitArrowFunctionThisCapturingES6.types | 10 +- ...mitArrowFunctionWhenUsingArguments01.types | 10 +- ...rrowFunctionWhenUsingArguments01_ES6.types | 10 +- ...mitArrowFunctionWhenUsingArguments02.types | 2 +- ...rrowFunctionWhenUsingArguments02_ES6.types | 2 +- ...mitArrowFunctionWhenUsingArguments03.types | 2 +- ...rrowFunctionWhenUsingArguments03_ES6.types | 2 +- ...mitArrowFunctionWhenUsingArguments04.types | 2 +- ...rrowFunctionWhenUsingArguments04_ES6.types | 2 +- ...mitArrowFunctionWhenUsingArguments05.types | 4 +- ...rrowFunctionWhenUsingArguments05_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments06.types | 4 +- ...rrowFunctionWhenUsingArguments06_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments07.types | 6 +- ...rrowFunctionWhenUsingArguments07_ES6.types | 6 +- ...mitArrowFunctionWhenUsingArguments08.types | 8 +- ...rrowFunctionWhenUsingArguments08_ES6.types | 8 +- ...mitArrowFunctionWhenUsingArguments09.types | 4 +- ...rrowFunctionWhenUsingArguments09_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments10.types | 2 +- ...rrowFunctionWhenUsingArguments10_ES6.types | 2 +- ...mitArrowFunctionWhenUsingArguments11.types | 4 +- ...rrowFunctionWhenUsingArguments11_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments12.types | 4 +- ...rrowFunctionWhenUsingArguments12_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments13.types | 4 +- ...rrowFunctionWhenUsingArguments13_ES6.types | 4 +- ...mitArrowFunctionWhenUsingArguments19.types | 6 +- ...rrowFunctionWhenUsingArguments19_ES6.types | 6 +- .../reference/emitArrowFunctionsAsIs.types | 12 +- .../reference/emitArrowFunctionsAsIsES6.types | 12 +- ...itCapturingThisInTupleDestructuring1.types | 6 +- ...ClassDeclarationWithConstructorInES6.types | 8 +- ...itClassDeclarationWithExtensionInES6.types | 12 +- .../emitClassDeclarationWithMethodInES6.types | 14 +- ...lassDeclarationWithSuperMethodCall01.types | 2 +- ...ClassDeclarationWithThisKeywordInES6.types | 6 +- ...tionWithTypeArgumentAndOverloadInES6.types | 8 +- ...emitClassExpressionInDeclarationFile.types | 12 +- ...mitClassExpressionInDeclarationFile2.types | 8 +- ...assMergedWithConstNamespaceNotElided.types | 6 +- ...ntiationAssignmentWithIndexingOnLHS4.types | 16 +- ...ata_isolatedModules(module=commonjs).types | 6 +- ...adata_isolatedModules(module=esnext).types | 6 +- .../emitDecoratorMetadata_object.types | 2 +- .../emitDecoratorMetadata_restArgs.types | 4 +- .../emitDefaultParametersFunction.types | 8 +- .../emitDefaultParametersFunctionES6.types | 8 +- ...tDefaultParametersFunctionExpression.types | 28 +- ...faultParametersFunctionExpressionES6.types | 28 +- ...mitDefaultParametersFunctionProperty.types | 12 +- ...DefaultParametersFunctionPropertyES6.types | 12 +- .../emitDefaultParametersMethod.types | 8 +- .../emitDefaultParametersMethodES6.types | 8 +- .../emitMemberAccessExpression.types | 2 +- .../reference/emitMethodCalledNew.types | 18 +- .../emitRestParametersFunction.types | 4 +- .../emitRestParametersFunctionES6.types | 4 +- ...emitRestParametersFunctionExpression.types | 12 +- ...tRestParametersFunctionExpressionES6.types | 12 +- .../emitRestParametersFunctionProperty.types | 8 +- ...mitRestParametersFunctionPropertyES6.types | 8 +- .../reference/emitRestParametersMethod.types | 8 +- .../emitRestParametersMethodES6.types | 8 +- .../emitSkipsThisWithRestParameter.types | 16 +- .../emitStatementsBeforeSuperCall.types | 4 +- ...mentsBeforeSuperCallWithDefineFields.types | 4 +- .../emitThisInObjectLiteralGetter.types | 8 +- ...enerators.functionExpressions.es2015.types | 14 +- ...enerators.functionExpressions.es2018.types | 14 +- ...ncGenerators.functionExpressions.es5.types | 14 +- ...ectNarrowing(strictnullchecks=false).types | 8 +- ...jectNarrowing(strictnullchecks=true).types | 8 +- .../emptyArrayBindingPatternParameter01.types | 2 +- .../emptyArrayBindingPatternParameter02.types | 2 +- .../emptyArrayBindingPatternParameter03.types | 2 +- .../emptyArrayBindingPatternParameter04.types | 2 +- ...turingExpressionVisitedByTransformer.types | 12 +- ...emptyObjectBindingPatternParameter01.types | 2 +- ...emptyObjectBindingPatternParameter02.types | 2 +- ...emptyObjectBindingPatternParameter03.types | 2 +- ...emptyObjectBindingPatternParameter04.types | 2 +- ...ypeOfIndexSignatureContainingObject1.types | 10 +- ...ypeOfIndexSignatureContainingObject2.types | 16 +- ...BindingPatternInDeclarationSignature.types | 32 +- ...ableDeclarationBindingPatterns01_ES5.types | 4 +- ...arationBindingPatterns01_ES5iterable.types | 4 +- ...ableDeclarationBindingPatterns01_ES6.types | 4 +- ...ignmentDefineProperrtyPotentialMerge.types | 8 +- .../reference/enumAssignability.types | 6 +- .../enumAssignabilityInInheritance.types | 116 +- .../reference/enumAssignmentCompat4.types | 2 +- .../reference/enumAssignmentCompat6.types | 10 +- .../reference/enumAssignmentCompat7.types | 4 +- .../reference/enumClassification.types | 4 +- tests/baselines/reference/enumIndexer.types | 6 +- .../reference/enumLiteralTypes1.types | 42 +- .../reference/enumLiteralTypes2.types | 42 +- .../reference/enumLiteralTypes3.types | 22 +- .../enumLiteralUnionNotWidened.types | 10 +- .../enumLiteralsSubtypeReduction.types | 2 +- .../reference/enumMemberReduction.types | 12 +- .../baselines/reference/enumNumbering1.types | 4 +- .../reference/enumPropertyAccess.types | 10 +- tests/baselines/reference/enumTag.types | 22 +- .../reference/equalityStrictNulls.types | 8 +- .../reference/equalityWithEnumTypes.types | 4 +- ...shCoalescingAssignment(strict=false).types | 12 +- ...ishCoalescingAssignment(strict=true).types | 14 +- .../reference/errorConstructorSubtypes.types | 6 +- .../reference/errorElaboration.types | 10 +- ...nDivesIntoApparentlyPresentPropsOnly.types | 6 +- .../errorForUsingPropertyOfTypeAsType02.types | 2 +- .../errorForUsingPropertyOfTypeAsType03.types | 6 +- .../baselines/reference/errorIsolation.types | 14 +- .../errorMessagesIntersectionTypes01.types | 4 +- .../errorMessagesIntersectionTypes02.types | 4 +- .../reference/errorOnFunctionReturnType.types | 20 +- ...nionVsObjectShouldDeeplyDisambiguate.types | 20 +- ...ionVsObjectShouldDeeplyDisambiguate2.types | 20 +- .../errorSpanForUnclosedJsxTag.types | 2 +- .../reference/errorSuperPropertyAccess.types | 4 +- .../reference/errorTypesAsTypeArguments.types | 2 +- ...errorsForCallAndAssignmentAreSimilar.types | 4 +- .../errorsInGenericTypeReference.types | 6 +- ...errorsOnUnionsOfOverlappingObjects01.types | 28 +- .../errorsWithInvokablesInUnions01.types | 2 +- .../baselines/reference/es2016IntlAPIs.types | 24 +- .../baselines/reference/es2017DateAPIs.types | 4 +- .../reference/es2017basicAsync.types | 8 +- .../baselines/reference/es2018IntlAPIs.types | 20 +- .../reference/es2018ObjectAssign.types | 10 +- .../baselines/reference/es2020IntlAPIs.types | 274 +-- .../es2021LocalesObjectArgument.types | 72 +- .../baselines/reference/es2022IntlAPIs.types | 4 +- .../es2022LocalesObjectArgument.types | 72 +- .../reference/es2022SharedMemory.types | 26 +- .../es5-asyncFunctionLongObjectLiteral.types | 64 +- .../es5-importHelpersAsyncFunctions.types | 14 +- tests/baselines/reference/es5DateAPIs.types | 4 +- ...es5ExportDefaultFunctionDeclaration3.types | 4 +- .../es5ModuleInternalNamedImports.types | 2 +- tests/baselines/reference/es6ClassTest.types | 2 +- tests/baselines/reference/es6ClassTest2.types | 34 +- tests/baselines/reference/es6ClassTest4.types | 4 +- tests/baselines/reference/es6ClassTest5.types | 4 +- tests/baselines/reference/es6ClassTest8.types | 48 +- .../es6ModuleInternalNamedImports.types | 2 +- .../es6ModuleInternalNamedImports2.types | 2 +- .../reference/es6UseOfTopLevelRequire.types | 6 +- .../es6modulekindWithES5Target.types | 4 +- .../es6modulekindWithES5Target11.types | 4 +- .../es6modulekindWithES5Target3.types | 4 +- .../es6modulekindWithES5Target6.types | 6 +- .../reference/esDecorators-arguments.types | 16 +- ...on-outerThisReference(target=es2015).types | 2 +- ...on-outerThisReference(target=es2021).types | 2 +- ...on-outerThisReference(target=es2022).types | 2 +- ...on-outerThisReference(target=esnext).types | 2 +- .../esDecorators-contextualTypes.2.types | 44 +- .../esDecorators-contextualTypes.types | 84 +- .../esDecorators-preservesThis.types | 36 +- .../esDecorators-privateFieldAccess.types | 6 +- .../reference/esModuleInteropImportCall.types | 6 +- .../esModuleInteropImportTSLibHasImport.types | 12 +- ...InteropPrettyErrorRelatedInformation.types | 4 +- .../esNextWeakRefs_IterableWeakMap.types | 86 +- .../reference/escapedIdentifiers.types | 2 +- .../esnextmodulekindWithES5Target.types | 4 +- .../esnextmodulekindWithES5Target11.types | 4 +- .../esnextmodulekindWithES5Target3.types | 4 +- .../esnextmodulekindWithES5Target6.types | 6 +- tests/baselines/reference/evalAfter0.types | 6 +- ...ntEmitterPatternWithRecordOfFunction.types | 4 +- .../reference/everyTypeAssignableToAny.types | 14 +- ...veryTypeWithAnnotationAndInitializer.types | 32 +- ...eWithAnnotationAndInvalidInitializer.types | 40 +- .../reference/everyTypeWithInitializer.types | 22 +- .../evolvingArrayResolvedAssert.types | 4 +- .../reference/evolvingArrayTypeInAssert.types | 8 +- .../excessPropertiesInOverloads.types | 6 +- ...tyCheckIntersectionWithRecursiveType.types | 4 +- .../excessPropertyCheckWithEmptyObject.types | 4 +- .../excessPropertyCheckWithSpread.types | 6 +- .../excessPropertyCheckWithUnions.types | 8 +- ...yCheckingIntersectionWithConditional.types | 4 +- .../excessiveStackDepthFlatArray.types | 12 +- .../exhaustiveSwitchCheckCircularity.types | 8 +- .../exhaustiveSwitchImplicitReturn.types | 14 +- .../exhaustiveSwitchStatements1.types | 42 +- ...ustiveSwitchWithWideningLiteralTypes.types | 2 +- .../expandoFunctionBlockShadowing.types | 2 +- ...andoFunctionContextualTypesJSDocInTs.types | 2 +- .../expandoFunctionContextualTypesJs.types | 8 +- ...xpandoFunctionContextualTypesNoValue.types | 2 +- ...oFunctionExpressionsWithDynamicNames.types | 4 +- ...orMetadataUnresolvedTypeObjectInEmit.types | 2 +- ...entiationOperatorWithInvalidOperands.types | 2 +- ...onentiationOperatorWithTypeParameter.types | 2 +- .../exportAssignImportedIdentifier.types | 2 +- .../reference/exportAssignTypes.types | 10 +- ...portAssignmentConstrainedGenericType.types | 6 +- .../exportAssignmentMergedModule.types | 6 +- ...nmentWithImportStatementPrivacyError.types | 4 +- .../exportAssignmentWithPrivacyError.types | 4 +- .../exportClassExtendingIntersection.types | 12 +- ...xportDeclarationsInAmbientNamespaces.types | 10 +- .../reference/exportDeclareClass1.types | 4 +- .../exportDefaultAbstractClass.types | 8 +- .../exportDefaultAsyncFunction2.types | 34 +- .../reference/exportDefaultInterface.types | 8 +- ...DefaultInterfaceAndFunctionOverloads.types | 6 +- ...ltInterfaceClassAndFunctionOverloads.types | 6 +- .../exportDefaultStripsFreshness.types | 6 +- ...xportDefaultTypeAndFunctionOverloads.types | 6 +- .../reference/exportEqualErrorType.types | 10 +- .../reference/exportEqualMemberMissing.types | 10 +- .../exportEqualsDefaultProperty.types | 4 +- .../reference/exportEqualsOfModule.types | 2 +- ...ImportCanSubstituteConstEnumForValue.types | 8 +- .../reference/exportImportMultipleFiles.types | 10 +- .../reference/exportNamespace12.types | 8 +- .../reference/exportNestedNamespaces.types | 2 +- .../reference/exportNestedNamespaces2.types | 8 +- ...pecifierAndExportedMemberDeclaration.types | 2 +- ...rtSpecifierAndLocalMemberDeclaration.types | 2 +- .../reference/exportSpellingSuggestion.types | 2 +- .../reference/exportStarNotElided.types | 10 +- ...tTypeMergedWithExportStarAsNamespace.types | 6 +- .../reference/exportVisibility.types | 2 +- ...erfaceInaccessibleInCallbackInModule.types | 12 +- .../reference/exportsAndImports3-amd.types | 6 +- .../reference/exportsAndImports3-es6.types | 6 +- .../reference/exportsAndImports3.types | 6 +- ...dImportsWithContextualKeywordNames01.types | 2 +- .../expressionTypeNodeShouldError.types | 30 +- .../expressionWithJSDocTypeArguments.types | 50 +- ...ionsForbiddenInParameterInitializers.types | 4 +- tests/baselines/reference/extendArray.types | 18 +- .../reference/extendBooleanInterface.types | 8 +- .../reference/extendGlobalThis.types | 8 +- .../reference/extendGlobalThis2.types | 4 +- .../reference/extendNumberInterface.types | 8 +- .../reference/extendStringInterface.types | 8 +- .../extendedInterfaceGenericType.types | 6 +- ...ndedUnicodeEscapeSequenceIdentifiers.types | 4 +- .../extendedUnicodePlaneIdentifiers.types | 24 +- ...extendedUnicodePlaneIdentifiersJSDoc.types | 6 +- tests/baselines/reference/externFunc.types | 4 +- tests/baselines/reference/externModule.types | 14 +- .../externalModuleQualification.types | 2 +- .../extractInferenceImprovement.types | 12 +- .../reference/fallFromLastCase1.types | 14 +- .../reference/fallFromLastCase2.types | 18 +- ...backToBindingPatternForTypeInference.types | 24 +- tests/baselines/reference/fatArrowSelf.types | 12 +- .../reference/fatArrowfunctionAsType.types | 12 +- .../reference/fatarrowfunctions.types | 84 +- .../reference/fatarrowfunctionsErrors.types | 20 +- ...functionsInFunctionParameterDefaults.types | 10 +- .../fatarrowfunctionsInFunctions.types | 8 +- .../fatarrowfunctionsOptionalArgs.types | 332 ++-- ...fatarrowfunctionsOptionalArgsErrors1.types | 10 +- ...fatarrowfunctionsOptionalArgsErrors4.types | 58 +- .../reference/findLast(target=es2022).types | 52 +- .../reference/findLast(target=esnext).types | 156 +- .../firstMatchRegExpMatchArray.types | 4 +- ...fixCrashAliasLookupForDefauledImport.types | 4 +- .../reference/fixSignatureCaching.types | 222 +-- ...rameterInSignatureWithRestParameters.types | 4 +- .../fixingTypeParametersRepeatedly1.types | 26 +- .../fixingTypeParametersRepeatedly2.types | 20 +- .../fixingTypeParametersRepeatedly3.types | 20 +- .../flatArrayNoExcessiveStackDepth.types | 16 +- .../reference/flowAfterFinally1.types | 2 +- .../flowControlTypeGuardThenSwitch.types | 4 +- .../reference/for-inStatements.types | 6 +- .../reference/for-inStatementsInvalid.types | 6 +- .../reference/forAwaitForUnion.types | 2 +- .../reference/forBreakStatements.types | 2 +- .../reference/forContinueStatements.types | 2 +- .../reference/forInBreakStatements.types | 2 +- .../reference/forInContinueStatements.types | 2 +- .../forInStrictNullChecksNoError.types | 6 +- .../forLoopEndingMultilineComments.types | 2 +- .../reference/forOfTransformsExpression.types | 10 +- tests/baselines/reference/forStatements.types | 32 +- .../forStatementsMultipleInvalidDecl.types | 16 +- .../forStatementsMultipleValidDecl.types | 20 +- .../formatToPartsFractionalSecond.types | 14 +- ...rdRefInTypeDeclaration(strict=false).types | 2 +- ...ardRefInTypeDeclaration(strict=true).types | 2 +- .../reference/freshLiteralInference.types | 16 +- .../freshLiteralTypesInIntersections.types | 10 +- tests/baselines/reference/funcdecl.types | 68 +- ...nctionAndInterfaceWithSeparateErrors.types | 4 +- .../reference/functionArgShadowing.types | 2 +- .../reference/functionAssignment.types | 42 +- .../reference/functionAssignmentError.types | 2 +- .../baselines/reference/functionCall10.types | 10 +- .../baselines/reference/functionCall11.types | 12 +- .../baselines/reference/functionCall12.types | 14 +- .../baselines/reference/functionCall13.types | 12 +- .../baselines/reference/functionCall14.types | 12 +- .../baselines/reference/functionCall15.types | 2 +- .../baselines/reference/functionCall16.types | 14 +- .../baselines/reference/functionCall17.types | 14 +- .../baselines/reference/functionCall18.types | 6 +- tests/baselines/reference/functionCall4.types | 2 +- tests/baselines/reference/functionCall6.types | 10 +- tests/baselines/reference/functionCall7.types | 10 +- tests/baselines/reference/functionCall8.types | 10 +- tests/baselines/reference/functionCall9.types | 12 +- ...unctionCallOnConstrainedTypeVariable.types | 24 +- .../functionConstraintSatisfaction.types | 120 +- .../functionConstraintSatisfaction2.types | 88 +- .../functionConstraintSatisfaction3.types | 78 +- ...nWithArgumentOfTypeFunctionTypeArray.types | 6 +- ...onExpressionAndLambdaMatchesFunction.types | 6 +- .../functionExpressionContextualTyping1.types | 78 +- .../functionExpressionContextualTyping2.types | 12 +- .../functionExpressionContextualTyping3.types | 8 +- .../functionExpressionReturningItself.types | 2 +- .../functionExpressionShadowedByParams.types | 20 +- ...WithResolutionOfTypeNamedArguments01.types | 2 +- ...sionWithResolutionOfTypeOfSameName01.types | 2 +- ...sionWithResolutionOfTypeOfSameName02.types | 2 +- .../functionImplementationErrors.types | 20 +- .../reference/functionImplementations.types | 42 +- .../functionInIfStatementInModule.types | 2 +- .../functionLikeInParameterInitializer.types | 12 +- .../baselines/reference/functionLiteral.types | 14 +- .../functionLiteralForOverloads.types | 16 +- .../functionLiteralForOverloads2.types | 6 +- .../reference/functionLiterals.types | 256 +-- .../functionOverloadAmbiguity1.types | 28 +- ...ctionOverloadCompatibilityWithVoid01.types | 4 +- ...ctionOverloadCompatibilityWithVoid02.types | 4 +- ...ctionOverloadCompatibilityWithVoid03.types | 4 +- .../reference/functionOverloadErrors.types | 86 +- .../functionOverloadErrorsSyntax.types | 12 +- ...ionOverloadImplementationOfWrongName.types | 4 +- ...onOverloadImplementationOfWrongName2.types | 4 +- .../reference/functionOverloads.types | 8 +- .../reference/functionOverloads10.types | 6 +- .../reference/functionOverloads13.types | 6 +- .../reference/functionOverloads15.types | 6 +- .../reference/functionOverloads16.types | 6 +- .../reference/functionOverloads18.types | 4 +- .../reference/functionOverloads19.types | 6 +- .../reference/functionOverloads2.types | 8 +- .../reference/functionOverloads20.types | 6 +- .../reference/functionOverloads21.types | 6 +- .../reference/functionOverloads22.types | 6 +- .../reference/functionOverloads23.types | 12 +- .../reference/functionOverloads24.types | 6 +- .../reference/functionOverloads25.types | 8 +- .../reference/functionOverloads26.types | 8 +- .../reference/functionOverloads27.types | 8 +- .../reference/functionOverloads28.types | 8 +- .../reference/functionOverloads29.types | 8 +- .../reference/functionOverloads30.types | 8 +- .../reference/functionOverloads31.types | 8 +- .../reference/functionOverloads32.types | 8 +- .../reference/functionOverloads33.types | 8 +- .../reference/functionOverloads34.types | 8 +- .../reference/functionOverloads35.types | 8 +- .../reference/functionOverloads36.types | 8 +- .../reference/functionOverloads37.types | 8 +- .../reference/functionOverloads38.types | 8 +- .../reference/functionOverloads39.types | 8 +- .../reference/functionOverloads40.types | 8 +- .../reference/functionOverloads41.types | 8 +- .../reference/functionOverloads42.types | 8 +- .../reference/functionOverloads43.types | 10 +- .../reference/functionOverloads44.types | 20 +- .../reference/functionOverloads45.types | 20 +- .../reference/functionOverloads6.types | 6 +- .../reference/functionOverloads7.types | 14 +- .../reference/functionOverloads8.types | 6 +- .../reference/functionOverloads9.types | 6 +- .../functionOverloadsOnGenericArity2.types | 6 +- .../functionOverloadsOutOfOrder.types | 12 +- ...nOverloadsRecursiveGenericReturnType.types | 6 +- .../functionParameterArityMismatch.types | 28 +- .../reference/functionReturnTypeQuery.types | 4 +- .../functionSignatureAssignmentCompat1.types | 10 +- .../functionSubtypingOfVarArgs.types | 20 +- .../functionSubtypingOfVarArgs2.types | 26 +- tests/baselines/reference/functionType.types | 4 +- .../functionTypeArgumentArityErrors.types | 6 +- ...functionTypeArgumentAssignmentCompat.types | 10 +- .../functionTypesLackingReturnTypes.types | 2 +- ...thAnyReturnTypeAndNoReturnExpression.types | 2 +- ...ithDefaultParameterWithNoStatements1.types | 2 +- ...thDefaultParameterWithNoStatements10.types | 4 +- ...thDefaultParameterWithNoStatements11.types | 4 +- ...thDefaultParameterWithNoStatements12.types | 4 +- ...thDefaultParameterWithNoStatements13.types | 4 +- ...thDefaultParameterWithNoStatements14.types | 4 +- ...thDefaultParameterWithNoStatements15.types | 4 +- ...thDefaultParameterWithNoStatements16.types | 8 +- ...ithDefaultParameterWithNoStatements2.types | 2 +- ...ithDefaultParameterWithNoStatements3.types | 4 +- ...ithDefaultParameterWithNoStatements4.types | 4 +- ...ithDefaultParameterWithNoStatements5.types | 4 +- ...ithDefaultParameterWithNoStatements6.types | 4 +- ...ithDefaultParameterWithNoStatements7.types | 4 +- ...ithDefaultParameterWithNoStatements8.types | 4 +- ...ithDefaultParameterWithNoStatements9.types | 16 +- ...functionWithMultipleReturnStatements.types | 4 +- ...unctionWithMultipleReturnStatements2.types | 14 +- .../functionWithNoBestCommonType2.types | 2 +- .../functionWithSameNameAsField.types | 2 +- ...nWithUseStrictAndSimpleParameterList.types | 22 +- ...eStrictAndSimpleParameterList_es2016.types | 22 +- .../functionsInClassExpressions.types | 2 +- ...ementsAndExpressionsStrictNullChecks.types | 12 +- .../funduleUsedAcrossFileBoundary.types | 2 +- .../reference/generatedContextualTyping.types | 588 +++---- .../generativeRecursionWithTypeOf.types | 4 +- .../reference/generatorAssignability.types | 6 +- .../baselines/reference/generatorES6_3.types | 2 +- .../reference/generatorImplicitAny.types | 6 +- .../reference/generatorOverloads1.types | 6 +- .../reference/generatorOverloads2.types | 6 +- .../reference/generatorOverloads3.types | 6 +- .../reference/generatorOverloads4.types | 6 +- .../reference/generatorOverloads5.types | 6 +- .../generatorReturnContextualType.types | 32 +- .../generatorReturnTypeInference.types | 14 +- ...eneratorReturnTypeInferenceNonStrict.types | 14 +- .../generatorTransformFinalLabel.types | 2 +- .../reference/generatorTypeCheck26.types | 8 +- .../reference/generatorTypeCheck27.types | 6 +- .../reference/generatorTypeCheck28.types | 6 +- .../reference/generatorTypeCheck29.types | 6 +- .../reference/generatorTypeCheck30.types | 6 +- .../reference/generatorTypeCheck31.types | 6 +- .../reference/generatorTypeCheck39.types | 8 +- .../reference/generatorTypeCheck42.types | 2 +- .../reference/generatorTypeCheck43.types | 2 +- .../reference/generatorTypeCheck45.types | 14 +- .../reference/generatorTypeCheck46.types | 16 +- .../reference/generatorTypeCheck62.types | 32 +- .../reference/generatorTypeCheck63.types | 40 +- .../generatorYieldContextualType.types | 22 +- ...ericAndNonGenericInheritedSignature1.types | 4 +- ...ericAndNonGenericInheritedSignature2.types | 4 +- ...nericArgumentCallSigAssignmentCompat.types | 28 +- tests/baselines/reference/genericArray1.types | 6 +- .../genericArrayAssignmentCompatErrors.types | 2 +- .../reference/genericArrayExtenstions.types | 4 +- .../reference/genericArrayMethods1.types | 4 +- .../genericArrayPropertyAssignment.types | 4 +- .../genericArrayWithoutTypeAnnotation.types | 2 +- ...ssignmentCompatOfFunctionSignatures1.types | 24 +- ...nericAssignmentCompatWithInterfaces1.types | 4 +- .../genericBaseClassLiteralProperty2.types | 2 +- ...allOnMemberReturningClosedOverObject.types | 36 +- .../genericCallSpecializedToTypeArg.types | 6 +- ...rloadedMethodWithOverloadedArguments.types | 114 +- .../genericCallTypeArgumentInference.types | 84 +- .../genericCallWithArrayLiteralArgs.types | 18 +- ...WithConstraintsTypeArgumentInference.types | 92 +- ...ithConstraintsTypeArgumentInference2.types | 12 +- ...icCallWithConstructorTypedArguments5.types | 50 +- .../genericCallWithFixedArguments.types | 4 +- ...enericCallWithFunctionTypedArguments.types | 76 +- ...nericCallWithFunctionTypedArguments2.types | 50 +- ...nericCallWithFunctionTypedArguments3.types | 16 +- ...nericCallWithFunctionTypedArguments4.types | 16 +- ...nericCallWithFunctionTypedArguments5.types | 72 +- ...ricCallWithGenericSignatureArguments.types | 138 +- ...icCallWithGenericSignatureArguments2.types | 176 +- ...icCallWithGenericSignatureArguments3.types | 158 +- .../genericCallWithNonGenericArgs1.types | 4 +- .../genericCallWithNonSymmetricSubtypes.types | 58 +- .../genericCallWithObjectLiteralArgs.types | 30 +- ...nericCallWithObjectLiteralArguments1.types | 12 +- .../genericCallWithObjectTypeArgs.types | 6 +- .../genericCallWithObjectTypeArgs2.types | 22 +- ...CallWithObjectTypeArgsAndConstraints.types | 12 +- ...allWithObjectTypeArgsAndConstraints2.types | 30 +- ...allWithObjectTypeArgsAndConstraints3.types | 28 +- ...allWithObjectTypeArgsAndConstraints4.types | 70 +- ...allWithObjectTypeArgsAndConstraints5.types | 22 +- ...ricCallWithObjectTypeArgsAndIndexers.types | 12 +- ...lWithObjectTypeArgsAndIndexersErrors.types | 14 +- ...allWithObjectTypeArgsAndInitializers.types | 14 +- ...lWithObjectTypeArgsAndNumericIndexer.types | 24 +- ...llWithObjectTypeArgsAndStringIndexer.types | 24 +- ...hOverloadedConstructorTypedArguments.types | 106 +- ...OverloadedConstructorTypedArguments2.types | 78 +- ...WithOverloadedFunctionTypedArguments.types | 126 +- ...ithOverloadedFunctionTypedArguments2.types | 72 +- .../reference/genericCallWithTupleType.types | 32 +- ...thinOwnBodyCastTypeParameterIdentity.types | 48 +- .../reference/genericCallWithoutArgs.types | 6 +- ...kInvokedInsideItsContainingFunction1.types | 28 +- .../genericCallbacksAndClassHierarchy.types | 22 +- .../genericCapturingFunctionNarrowing.types | 14 +- .../reference/genericChainedCalls.types | 56 +- .../genericClassExpressionInFunction.types | 6 +- ...assPropertyInheritanceSpecialization.types | 28 +- ...lassWithFunctionTypedMemberArguments.types | 122 +- ...lassWithObjectTypeArgsAndConstraints.types | 40 +- .../genericClassWithStaticFactory.types | 44 +- ...icClassWithStaticsUsingTypeArguments.types | 14 +- .../baselines/reference/genericClasses4.types | 24 +- .../reference/genericClassesInModule2.types | 8 +- .../genericClassesRedeclaration.types | 112 +- .../reference/genericCombinators2.types | 36 +- ...UnknownNotAssignableToConcreteObject.types | 8 +- .../reference/genericConstraint1.types | 6 +- .../reference/genericConstraint2.types | 12 +- .../genericConstraintSatisfaction1.types | 6 +- .../genericConstructorFunction1.types | 16 +- .../reference/genericContextualTypes1.types | 188 +- .../reference/genericContextualTypes2.types | 20 +- .../reference/genericContextualTypes3.types | 18 +- ...enericContextualTypingSpecialization.types | 6 +- .../baselines/reference/genericDefaults.types | 560 +++--- .../reference/genericDefaultsErrors.types | 6 +- .../reference/genericDefaultsJs.types | 12 +- ...ctionCallSignatureReturnTypeMismatch.types | 10 +- .../genericFunctionHasFreshTypeArgs.types | 12 +- .../reference/genericFunctionInference1.types | 674 +++---- .../reference/genericFunctionInference2.types | 42 +- .../reference/genericFunctionParameters.types | 34 +- .../genericFunctionSpecializations1.types | 8 +- ...enericFunctionTypedArgumentsAreFixed.types | 8 +- .../reference/genericFunctions0.types | 4 +- .../reference/genericFunctions1.types | 4 +- .../reference/genericFunctions2.types | 8 +- .../reference/genericFunctions3.types | 6 +- ...ericFunctionsAndConditionalInference.types | 42 +- .../genericFunctionsNotContextSensitive.types | 14 +- ...ericFunctionsWithOptionalParameters1.types | 36 +- ...ericFunctionsWithOptionalParameters2.types | 36 +- ...ericFunctionsWithOptionalParameters3.types | 44 +- ...ccessMethodIntersectionCanBeAccessed.types | 14 +- .../reference/genericInference1.types | 6 +- .../reference/genericInference2.types | 10 +- ...genericInferenceDefaultTypeParameter.types | 18 +- ...nferenceDefaultTypeParameterJsxReact.types | 8 +- ...stantiationEquivalentToObjectLiteral.types | 12 +- ...enericInterfaceFunctionTypeParameter.types | 8 +- .../reference/genericInterfaceTypeCall.types | 30 +- .../reference/genericIsNeverEmptyObject.types | 4 +- .../genericLambaArgWithoutTypeArguments.types | 6 +- .../reference/genericMemberFunction.types | 4 +- .../genericMethodOverspecialization.types | 24 +- .../reference/genericNewInterface.types | 8 +- .../genericObjectLitReturnType.types | 8 +- .../reference/genericObjectRest.types | 8 +- .../genericObjectSpreadResultInSwitch.types | 8 +- .../reference/genericOfACloduleType1.types | 6 +- .../reference/genericOfACloduleType2.types | 6 +- .../reference/genericOverloadSignatures.types | 16 +- .../genericParameterAssignability1.types | 12 +- .../reference/genericPrototypeProperty.types | 6 +- ...cRecursiveImplicitConstructorErrors1.types | 4 +- ...cRecursiveImplicitConstructorErrors2.types | 2 +- ...cRecursiveImplicitConstructorErrors3.types | 14 +- tests/baselines/reference/genericReduce.types | 36 +- .../baselines/reference/genericRestArgs.types | 18 +- .../reference/genericRestArity.types | 12 +- .../reference/genericRestArityStrict.types | 12 +- .../reference/genericRestParameters1.types | 232 +-- .../reference/genericRestParameters2.types | 96 +- .../reference/genericRestParameters3.types | 146 +- .../reference/genericRestTypes.types | 30 +- .../genericReversingTypeParameters.types | 10 +- .../genericReversingTypeParameters2.types | 6 +- .../reference/genericSignatureIdentity.types | 8 +- .../genericSpecializationToTypeLiteral1.types | 50 +- .../reference/genericSpecializations1.types | 8 +- .../reference/genericSpecializations2.types | 8 +- .../reference/genericSpecializations3.types | 18 +- .../genericStaticAnyTypeFunction.types | 8 +- .../genericTemplateOverloadResolution.types | 4 +- .../reference/genericTypeAliases.types | 4 +- .../genericTypeArgumentInference1.types | 52 +- .../reference/genericTypeAssertions1.types | 2 +- .../reference/genericTypeAssertions2.types | 2 +- .../reference/genericTypeAssertions3.types | 16 +- .../reference/genericTypeAssertions4.types | 2 +- .../reference/genericTypeAssertions5.types | 2 +- .../reference/genericTypeAssertions6.types | 4 +- .../genericTypeParameterEquivalence2.types | 92 +- ...icTypeReferenceWithoutTypeArgument.d.types | 8 +- ...ericTypeReferenceWithoutTypeArgument.types | 18 +- ...ricTypeReferenceWithoutTypeArgument2.types | 18 +- ...ricTypeReferenceWithoutTypeArgument3.types | 8 +- .../genericTypeWithCallableMembers2.types | 4 +- .../genericTypeWithMultipleBases3.types | 16 +- ...enericTypeWithNonGenericBaseMisMatch.types | 6 +- ...nericUnboundedTypeParamAssignability.types | 14 +- ...nericWithIndexerOfTypeParameterType1.types | 2 +- .../genericWithOpenTypeParameters1.types | 38 +- .../genericsAndHigherOrderFunctions.types | 58 +- .../genericsManyTypeParameters.types | 2 +- ...genericsWithDuplicateTypeParameters1.types | 18 +- .../genericsWithoutTypeParameters1.types | 6 +- ...pliedReturnTypeAndFunctionClassMerge.types | 4 +- .../reference/getAndSetAsMemberNames.types | 2 +- .../getParameterNameAtPosition.types | 16 +- .../reference/getsetReturnTypes.types | 6 +- .../reference/getterSetterNonAccessor.types | 16 +- .../reference/gettersAndSetters.types | 6 +- tests/baselines/reference/giant.types | 102 +- tests/baselines/reference/global.types | 6 +- .../globalFunctionAugmentationOverload.types | 4 +- .../reference/globalIsContextualKeyword.types | 2 +- .../reference/grammarAmbiguities.types | 16 +- .../reference/grammarAmbiguities1.types | 20 +- .../heterogeneousArrayAndOverloads.types | 22 +- .../heterogeneousArrayLiterals.types | 46 +- ...igherOrderMappedIndexLookupInference.types | 6 +- ...cMappedTypeIntersectionAssignability.types | 2 +- ...nHomomorphicInstantiationSpreadable1.types | 4 +- ...larationOutputGetsTruncatedWithError.types | 2 +- tests/baselines/reference/icomparable.types | 6 +- tests/baselines/reference/idInProp.types | 2 +- .../reference/identicalCallSignatures.types | 2 +- ...lGenericConditionalsWithInferRelated.types | 6 +- .../identicalTypesNoDifferByCheckOrder.types | 8 +- .../identityAndDivergentNormalizedTypes.types | 16 +- ...orSignaturesWithTypeParametersAndAny.types | 20 +- ...SignaturesWithTypeParametersSwitched.types | 4 +- .../identityRelationNeverTypes.types | 12 +- .../reference/ifDoWhileStatements.types | 30 +- .../reference/ignoredJsxAttributes.types | 6 +- .../reference/illegalGenericWrapping1.types | 16 +- .../illegalSuperCallsInConstructor.types | 6 +- .../reference/implementArrayInterface.types | 60 +- .../implementGenericWithMismatchedTypes.types | 8 +- .../implementInterfaceAnyMemberWithVoid.types | 4 +- .../reference/implicitAnyAmbients.types | 14 +- .../reference/implicitAnyCastedValue.types | 6 +- ...DeclareFunctionExprWithoutFormalType.types | 28 +- ...tAnyDeclareFunctionWithoutFormalType.types | 14 +- .../implicitAnyDeclareMemberWithoutType.types | 4 +- ...implicitAnyDeclareMemberWithoutType2.types | 2 +- ...citAnyDeclareTypePropertyWithoutType.types | 4 +- ...nyDeclareVariablesWithoutTypeAndInit.types | 4 +- .../implicitAnyFromCircularInference.types | 8 +- ...yFunctionInvocationWithAnyArguements.types | 44 +- .../implicitAnyGenericTypeInference.types | 14 +- .../implicitAnyInAmbientDeclaration.types | 4 +- .../implicitAnyInAmbientDeclaration2.d.types | 6 +- .../reference/implicitAnyWidenToAny.types | 4 +- .../reference/implicitConstParameters.types | 40 +- .../reference/implicitIndexSignatures.types | 36 +- .../reference/importAliasModuleExports.types | 4 +- .../reference/importAssertionNonstring.types | 4 +- .../reference/importAttributes6.types | 4 +- .../importCallExpression1ES2020.types | 6 +- .../importCallExpression2ES2020.types | 10 +- .../importCallExpression4ES2020.types | 8 +- .../importCallExpressionAsyncES2020.types | 10 +- .../importCallExpressionAsyncES5AMD.types | 10 +- .../importCallExpressionAsyncES5CJS.types | 10 +- .../importCallExpressionAsyncES5System.types | 10 +- .../importCallExpressionAsyncES5UMD.types | 10 +- .../importCallExpressionAsyncES6AMD.types | 10 +- .../importCallExpressionAsyncES6CJS.types | 10 +- .../importCallExpressionAsyncES6System.types | 10 +- .../importCallExpressionAsyncES6UMD.types | 10 +- ...importCallExpressionDeclarationEmit1.types | 2 +- .../importCallExpressionES5AMD.types | 6 +- .../importCallExpressionES5CJS.types | 6 +- .../importCallExpressionES5System.types | 6 +- .../importCallExpressionES5UMD.types | 6 +- .../importCallExpressionES6AMD.types | 6 +- .../importCallExpressionES6CJS.types | 6 +- .../importCallExpressionES6System.types | 6 +- .../importCallExpressionES6UMD.types | 6 +- .../importCallExpressionErrorInES2015.types | 6 +- .../importCallExpressionInAMD1.types | 6 +- .../importCallExpressionInAMD2.types | 10 +- .../importCallExpressionInAMD4.types | 16 +- .../importCallExpressionInCJS1.types | 6 +- .../importCallExpressionInCJS2.types | 4 +- .../importCallExpressionInCJS3.types | 10 +- .../importCallExpressionInCJS5.types | 16 +- .../importCallExpressionInSystem1.types | 6 +- .../importCallExpressionInSystem2.types | 10 +- .../importCallExpressionInSystem4.types | 16 +- .../importCallExpressionInUMD1.types | 6 +- .../importCallExpressionInUMD2.types | 10 +- .../importCallExpressionInUMD4.types | 16 +- ...tCallExpressionNoModuleKindSpecified.types | 8 +- ...portCallExpressionReturnPromiseOfAny.types | 8 +- ...mportCallExpressionShouldNotGetParen.types | 12 +- ...xpressionSpecifierNotStringTypeError.types | 6 +- ...portElisionExportNonExportAndDefault.types | 8 +- tests/baselines/reference/importEquals3.types | 4 +- tests/baselines/reference/importHelpers.types | 26 +- .../reference/importHelpersAmd.types | 18 +- .../reference/importHelpersES6.types | 18 +- .../importHelpersInAmbientContext.types | 18 +- .../importHelpersInIsolatedModules.types | 16 +- .../reference/importHelpersInTsx.types | 12 +- .../reference/importHelpersNoHelpers.types | 4 +- .../reference/importHelpersNoModule.types | 4 +- .../reference/importHelpersOutFile.types | 12 +- .../reference/importHelpersSystem.types | 12 +- ...As(esmoduleinterop=false,module=amd).types | 2 +- ...moduleinterop=false,module=commonjs).types | 2 +- ...esmoduleinterop=false,module=es2015).types | 2 +- ...esmoduleinterop=false,module=es2020).types | 2 +- ...esmoduleinterop=false,module=system).types | 2 +- ...rAs(esmoduleinterop=true,module=amd).types | 2 +- ...smoduleinterop=true,module=commonjs).types | 2 +- ...(esmoduleinterop=true,module=es2015).types | 2 +- ...(esmoduleinterop=true,module=es2020).types | 2 +- ...(esmoduleinterop=true,module=system).types | 2 +- ...lt(esmoduleinterop=false,module=amd).types | 2 +- ...moduleinterop=false,module=commonjs).types | 2 +- ...esmoduleinterop=false,module=es2015).types | 2 +- ...esmoduleinterop=false,module=es2020).types | 2 +- ...esmoduleinterop=false,module=system).types | 2 +- ...ult(esmoduleinterop=true,module=amd).types | 2 +- ...smoduleinterop=true,module=commonjs).types | 2 +- ...(esmoduleinterop=true,module=es2015).types | 2 +- ...(esmoduleinterop=true,module=es2020).types | 2 +- ...(esmoduleinterop=true,module=system).types | 2 +- ...As(esmoduleinterop=false,module=amd).types | 2 +- ...moduleinterop=false,module=commonjs).types | 2 +- ...esmoduleinterop=false,module=es2015).types | 2 +- ...esmoduleinterop=false,module=es2020).types | 2 +- ...esmoduleinterop=false,module=system).types | 2 +- ...rAs(esmoduleinterop=true,module=amd).types | 2 +- ...smoduleinterop=true,module=commonjs).types | 2 +- ...(esmoduleinterop=true,module=es2015).types | 2 +- ...(esmoduleinterop=true,module=es2020).types | 2 +- ...(esmoduleinterop=true,module=system).types | 2 +- ...portMeta(module=commonjs,target=es5).types | 16 +- ...tMeta(module=commonjs,target=esnext).types | 16 +- ...importMeta(module=es2020,target=es5).types | 16 +- ...ortMeta(module=es2020,target=esnext).types | 16 +- ...importMeta(module=esnext,target=es5).types | 16 +- ...ortMeta(module=esnext,target=esnext).types | 16 +- ...importMeta(module=system,target=es5).types | 16 +- ...ortMeta(module=system,target=esnext).types | 16 +- .../reference/importNonExportedMember.types | 2 +- .../reference/importStatements.types | 2 +- .../importStatementsInterfaces.types | 2 +- tests/baselines/reference/importTag1.types | 2 +- .../importTag15(module=es2015).types | 2 +- .../importTag15(module=esnext).types | 2 +- tests/baselines/reference/importTag16.types | 2 +- tests/baselines/reference/importTag2.types | 2 +- tests/baselines/reference/importTag3.types | 2 +- tests/baselines/reference/importTag4.types | 2 +- tests/baselines/reference/importTag5.types | 2 +- tests/baselines/reference/importTag6.types | 2 +- tests/baselines/reference/importTag7.types | 2 +- tests/baselines/reference/importTag8.types | 2 +- tests/baselines/reference/importTag9.types | 2 +- .../reference/importTypeGeneric.types | 4 +- ...ortTypeGenericArrowTypeParenthesized.types | 32 +- .../reference/importTypeInJSDoc.types | 24 +- ...dAliasedConditionalTypeInstantiation.types | 2 +- .../reference/importingExportingTypes.types | 6 +- .../importsNotUsedAsValues_error.types | 24 +- .../inDoesNotOperateOnPrimitiveTypes.types | 24 +- .../reference/inKeywordAndIntersection.types | 4 +- .../reference/inKeywordAndUnknown.types | 18 +- ...arrowingWithNoUncheckedIndexedAccess.types | 16 +- .../inKeywordTypeguard(strict=false).types | 86 +- .../inKeywordTypeguard(strict=true).types | 86 +- .../reference/inOperatorWithFunction.types | 6 +- .../reference/inOperatorWithGeneric.types | 2 +- .../inOperatorWithValidOperands.types | 6 +- .../reference/incompatibleGenericTypes.types | 4 +- .../reference/incompatibleTypes.types | 26 +- .../reference/incompleteObjectLiteral1.types | 2 +- .../incorrectClassOverloadChain.types | 4 +- ...rOfTypeArgumentsDuringErrorReporting.types | 6 +- ...correctRecursiveMappedTypeConstraint.types | 2 +- ...torWithAnyOtherTypeInvalidOperations.types | 4 +- ...ratorWithNumberTypeInvalidOperations.types | 12 +- ...ntOperatorWithUnsupportedBooleanType.types | 12 +- ...entOperatorWithUnsupportedStringType.types | 12 +- .../independentPropertyVariance.types | 2 +- .../reference/indexAt(target=es2022).types | 52 +- .../reference/indexAt(target=esnext).types | 52 +- .../indexSignatureAndMappedType.types | 6 +- ...peUnknownStillRequiresIndexSignature.types | 4 +- .../indexSignatureTypeInference.types | 12 +- .../reference/indexSignatures1.types | 78 +- .../indexSignaturesInferentialTyping.types | 10 +- .../baselines/reference/indexTypeCheck.types | 2 +- ...dexTypeNoSubstitutionTemplateLiteral.types | 2 +- .../indexedAccessAndNullableNarrowing.types | 22 +- .../indexedAccessCanBeHighOrder.types | 14 +- .../reference/indexedAccessConstraints.types | 6 +- ...fNestedSimplifiedSubstituteUnwrapped.types | 2 +- .../indexedAccessNormalization.types | 10 +- .../reference/indexedAccessRelation.types | 8 +- .../indexedAccessTypeConstraints.types | 14 +- .../indexedAccessWithFreshObjectLiteral.types | 20 +- tests/baselines/reference/indexer2.types | 2 +- tests/baselines/reference/indexer2A.types | 2 +- .../indexerReturningTypeParameter1.types | 4 +- .../reference/indexersInClassType.types | 2 +- .../reference/indexingTypesWithNever.types | 12 +- ...ndirectDiscriminantAndExcessProperty.types | 8 +- .../indirectTypeParameterReferences.types | 42 +- .../reference/inferFromBindingPattern.types | 32 +- ...inferFromGenericFunctionReturnTypes1.types | 164 +- ...inferFromGenericFunctionReturnTypes2.types | 272 +-- ...inferFromGenericFunctionReturnTypes3.types | 116 +- .../inferFromNestedSameShapeTuple.types | 8 +- ...erObjectTypeFromStringLiteralToKeyof.types | 16 +- ...erParameterWithMethodCallInitializer.types | 6 +- ...yWithContextSensitiveReturnStatement.types | 12 +- .../inferRestArgumentsMappedTuple.types | 8 +- .../reference/inferSecondaryParameter.types | 14 +- ...rStringLiteralUnionForBindingElement.types | 12 +- tests/baselines/reference/inferThisType.types | 10 +- .../inferTupleFromBindingPattern.types | 4 +- ...gumentsInSignatureWithRestParameters.types | 16 +- .../reference/inferTypePredicates.types | 274 +-- tests/baselines/reference/inferTypes1.types | 34 +- tests/baselines/reference/inferTypes2.types | 12 +- .../reference/inferenceAndHKTs.types | 16 +- ...nferenceAndSelfReferentialConstraint.types | 18 +- .../inferenceDoesNotAddUndefinedOrNull.types | 54 +- ...reAgainstUninstantiatedTypeParameter.types | 32 +- .../reference/inferenceErasedSignatures.types | 28 +- .../inferenceExactOptionalProperties2.types | 52 +- .../inferenceFromIncompleteSource.types | 4 +- .../inferenceFromParameterlessLambda.types | 6 +- .../baselines/reference/inferenceLimit.types | 50 +- ...eOfNullableObjectTypesWithCommonBase.types | 38 +- .../inferenceOptionalProperties.types | 6 +- .../inferenceOptionalPropertiesStrict.types | 6 +- ...eOptionalPropertiesToIndexSignatures.types | 30 +- .../inferenceShouldFailOnEvolvingArrays.types | 26 +- ...ceUnionOfObjectsMappedContextualType.types | 8 +- ...nferentialTypingObjectLiteralMethod1.types | 14 +- ...nferentialTypingObjectLiteralMethod2.types | 12 +- .../inferentialTypingUsingApparentType1.types | 8 +- .../inferentialTypingUsingApparentType2.types | 12 +- .../inferentialTypingUsingApparentType3.types | 10 +- .../inferentialTypingWithFunctionType.types | 10 +- .../inferentialTypingWithFunctionType2.types | 8 +- ...erentialTypingWithFunctionTypeNested.types | 16 +- ...ngWithFunctionTypeSyntacticScenarios.types | 72 +- ...inferentialTypingWithFunctionTypeZip.types | 12 +- ...ialTypingWithObjectLiteralProperties.types | 6 +- .../inferentiallyTypingAnEmptyArray.types | 4 +- .../baselines/reference/inferingFromAny.types | 82 +- .../inferredIndexerOnNamespaceImport.types | 4 +- .../reference/inferredRestTypeFixedOnce.types | 8 +- .../inferrenceInfiniteLoopWithSubtyping.types | 18 +- .../reference/inferringAnyFunctionType1.types | 14 +- .../reference/inferringAnyFunctionType2.types | 12 +- .../reference/inferringAnyFunctionType3.types | 12 +- .../reference/inferringAnyFunctionType4.types | 10 +- .../reference/inferringAnyFunctionType5.types | 16 +- ...inferringClassMembersFromAssignments.types | 8 +- ...nferringClassMembersFromAssignments6.types | 4 +- ...nferringClassMembersFromAssignments7.types | 4 +- ...nferringClassMembersFromAssignments8.types | 2 +- ...ingClassStaticMembersFromAssignments.types | 4 +- ...urnTypeFromConstructSignatureGeneric.types | 34 +- .../reference/infiniteConstraints.types | 26 +- ...nfiniteExpansionThroughInstantiation.types | 2 +- ...nfiniteExpansionThroughTypeInference.types | 4 +- .../infinitelyExpandingOverloads.types | 6 +- .../reference/infinitelyExpandingTypes2.types | 8 +- .../reference/infinitelyExpandingTypes4.types | 8 +- .../reference/infinitelyExpandingTypes5.types | 10 +- ...finitelyExpandingTypesNonGenericBase.types | 4 +- .../infinitelyGenerativeInheritance1.types | 4 +- tests/baselines/reference/inheritance.types | 2 +- ...ritedFunctionAssignmentCompatibility.types | 10 +- ...ritedOverloadedSpecializedSignatures.types | 4 +- ...s2021,usedefineforclassfields=false).types | 4 +- ...es2021,usedefineforclassfields=true).types | 4 +- ...s2022,usedefineforclassfields=false).types | 4 +- ...es2022,usedefineforclassfields=true).types | 4 +- ...snext,usedefineforclassfields=false).types | 4 +- ...esnext,usedefineforclassfields=true).types | 4 +- ...tializedDestructuringAssignmentTypes.types | 4 +- ...arameterBeforeNonoptionalNotOptional.types | 6 +- .../initializerWithThisPropertyAccess.types | 2 +- .../initializersInDeclarations.types | 2 +- ...neConditionalHasSimilarAssignability.types | 2 +- .../inlineJsxFactoryDeclarations.types | 4 +- ...lineJsxFactoryDeclarationsLocalTypes.types | 26 +- ...ineJsxFactoryOverridesCompilerOption.types | 2 +- ...ineMappedTypeModifierDeclarationEmit.types | 26 +- .../baselines/reference/inlineSourceMap.types | 4 +- .../reference/inlineSourceMap2.types | 4 +- tests/baselines/reference/inlineSources.types | 8 +- .../baselines/reference/inlineSources2.types | 8 +- .../reference/innerBoundLambdaEmit.types | 2 +- .../baselines/reference/innerOverloads.types | 8 +- .../innerTypeArgumentInference.types | 4 +- .../innerTypeCheckOfLambdaArgument.types | 10 +- .../innerTypeParameterShadowingOuterOne.types | 8 +- ...innerTypeParameterShadowingOuterOne2.types | 8 +- .../instanceAndStaticDeclarations1.types | 12 +- ...nstanceMemberAssignsToClassPrototype.types | 22 +- .../reference/instanceOfAssignability.types | 16 +- .../instanceOfInExternalModules.types | 2 +- .../instanceofNarrowReadonlyArray.types | 2 +- ...ofOperatorWithInvalidOperands.es2015.types | 12 +- ...eofOperatorWithInvalidStaticToString.types | 6 +- ...anceofOperatorWithLHSIsTypeParameter.types | 2 +- ...fOperatorWithRHSHasSymbolHasInstance.types | 108 +- .../instanceofTypeAliasToGenericClass.types | 4 +- .../instanceofWithPrimitiveUnion.types | 4 +- ...anceofWithStructurallyIdenticalTypes.types | 18 +- .../instantiateContextualTypes.types | 128 +- ...tantiateContextuallyTypedGenericThis.types | 18 +- .../reference/instantiateCrossFileMerge.types | 10 +- ...eTagTypeParameterOnVariableStatement.types | 10 +- .../instantiatedBaseTypeConstraints.types | 4 +- .../instantiatedTypeAliasDisplay.types | 6 +- .../instantiationExpressionErrors.types | 42 +- .../reference/instantiationExpressions.types | 312 ++-- tests/baselines/reference/intTypeCheck.types | 22 +- .../reference/interfaceAssignmentCompat.types | 16 +- .../reference/interfaceClassMerging.types | 36 +- .../interfaceDoesNotDependOnBaseTypes.types | 8 +- .../interfaceExtendsClassWithPrivate1.types | 8 +- .../interfaceExtendsClassWithPrivate2.types | 12 +- .../interfaceExtendsObjectIntersection.types | 6 +- .../reference/interfaceImplementation1.types | 2 +- tests/baselines/reference/interfaceOnly.types | 2 +- ...CallSignaturesThatHidesBaseSignature.types | 2 +- ...allSignaturesThatHidesBaseSignature2.types | 2 +- ...ructSignaturesThatHidesBaseSignature.types | 2 +- ...uctSignaturesThatHidesBaseSignature2.types | 2 +- .../interfaceWithPropertyOfEveryType.types | 16 +- tests/baselines/reference/interfacedecl.types | 6 +- .../interfacedeclWithIndexerErrors.types | 6 +- ...liasClassInsideLocalModuleWithExport.types | 6 +- ...sClassInsideLocalModuleWithoutExport.types | 6 +- ...eLocalModuleWithoutExportAccessError.types | 6 +- ...sClassInsideTopLevelModuleWithExport.types | 6 +- ...assInsideTopLevelModuleWithoutExport.types | 6 +- .../reference/internalAliasFunction.types | 12 +- ...sFunctionInsideLocalModuleWithExport.types | 12 +- ...nctionInsideLocalModuleWithoutExport.types | 12 +- ...eLocalModuleWithoutExportAccessError.types | 12 +- ...nctionInsideTopLevelModuleWithExport.types | 12 +- ...ionInsideTopLevelModuleWithoutExport.types | 12 +- .../intersectionAsWeakTypeSource.types | 6 +- ...nIncludingPropFromGlobalAugmentation.types | 6 +- .../reference/intersectionNarrowing.types | 10 +- ...ConstructorTypeAndNonConstructorType.types | 4 +- ...nOfTypeVariableHasApparentSignatures.types | 18 +- .../reference/intersectionPropertyCheck.types | 4 +- .../reference/intersectionReduction.types | 26 +- .../intersectionReductionStrict.types | 16 +- .../intersectionSatisfiesConstraint.types | 14 +- .../reference/intersectionThisTypes.types | 18 +- .../reference/intersectionTypeInference.types | 10 +- .../intersectionTypeInference1.types | 24 +- .../intersectionTypeInference2.types | 12 +- .../intersectionTypeInference3.types | 12 +- .../intersectionTypeNormalization.types | 4 +- ...rsectionType_useDefineForClassFields.types | 4 +- .../intersectionWithConflictingPrivates.types | 18 +- .../intersectionWithIndexSignatures.types | 8 +- .../intersectionWithUnionConstraint.types | 10 +- .../intersectionsAndEmptyObjects.types | 48 +- .../intersectionsAndOptionalProperties.types | 2 +- .../intersectionsOfLargeUnions.types | 10 +- .../intersectionsOfLargeUnions2.types | 10 +- .../intlDateTimeFormatRangeES2021.types | 16 +- .../reference/intlNumberFormatES2023.types | 16 +- .../reference/intraExpressionInferences.types | 592 +++---- .../intraExpressionInferencesJsx.types | 90 +- .../reference/intrinsicKeyword.types | 2 +- .../baselines/reference/intrinsicTypes.types | 10 +- tests/baselines/reference/intrinsics.types | 2 +- .../reference/invalidAssignmentsToVoid.types | 6 +- .../reference/invalidBooleanAssignments.types | 2 +- .../invalidDoWhileBreakStatements.types | 4 +- .../invalidDoWhileContinueStatements.types | 4 +- .../reference/invalidEnumAssignments.types | 2 +- .../reference/invalidForBreakStatements.types | 4 +- .../invalidForContinueStatements.types | 4 +- .../invalidForInBreakStatements.types | 2 +- .../invalidForInContinueStatements.types | 2 +- .../invalidModuleWithVarStatements.types | 6 +- .../invalidMultipleVariableDeclarations.types | 16 +- .../reference/invalidNewTarget.es5.types | 6 +- .../reference/invalidNewTarget.es6.types | 6 +- .../reference/invalidNumberAssignments.types | 2 +- tests/baselines/reference/invalidSplice.types | 4 +- .../reference/invalidStringAssignments.types | 2 +- ...mplateEscapeSequences(target=es2015).types | 38 +- ...dTemplateEscapeSequences(target=es5).types | 38 +- ...mplateEscapeSequences(target=esnext).types | 38 +- ...lidThisEmitInContextualObjectLiteral.types | 20 +- .../invalidUndefinedAssignments.types | 2 +- .../reference/invalidUndefinedValues.types | 6 +- .../reference/invalidVoidAssignments.types | 2 +- .../reference/invalidVoidValues.types | 6 +- .../invalidWhileBreakStatements.types | 4 +- .../invalidWhileContinueStatements.types | 4 +- .../invariantGenericErrorElaboration.types | 10 +- ...ocationExpressionInFunctionParameter.types | 6 +- tests/baselines/reference/ipromise2.types | 46 +- tests/baselines/reference/ipromise3.types | 46 +- tests/baselines/reference/ipromise4.types | 58 +- tests/baselines/reference/isArray.types | 8 +- .../isDeclarationVisibleNodeKinds.types | 22 +- .../isolatedModulesImportConstEnum.types | 4 +- ...olatedModulesImportConstEnumTypeOnly.types | 2 +- .../isolatedModulesPlainFile-AMD.types | 4 +- .../isolatedModulesPlainFile-CommonJS.types | 4 +- .../isolatedModulesPlainFile-ES6.types | 4 +- .../isolatedModulesPlainFile-System.types | 4 +- .../isolatedModulesPlainFile-UMD.types | 4 +- .../isomorphicMappedTypeInference.types | 178 +- .../reference/iterableArrayPattern10.types | 4 +- .../reference/iterableArrayPattern11.types | 4 +- .../reference/iterableArrayPattern12.types | 4 +- .../reference/iterableArrayPattern13.types | 4 +- .../reference/iterableArrayPattern15.types | 4 +- .../reference/iterableArrayPattern16.types | 4 +- .../reference/iterableArrayPattern17.types | 4 +- .../reference/iterableArrayPattern18.types | 4 +- .../reference/iterableArrayPattern19.types | 4 +- .../reference/iterableArrayPattern20.types | 4 +- .../reference/iterableArrayPattern26.types | 4 +- .../reference/iterableArrayPattern27.types | 4 +- .../reference/iterableArrayPattern28.types | 4 +- .../reference/iterableArrayPattern29.types | 4 +- .../reference/iterableArrayPattern9.types | 2 +- .../reference/iterableContextualTyping1.types | 6 +- .../reference/iteratorSpreadInArray6.types | 4 +- .../reference/iteratorSpreadInArray7.types | 4 +- .../reference/iteratorSpreadInCall.types | 4 +- .../reference/iteratorSpreadInCall10.types | 4 +- .../reference/iteratorSpreadInCall11.types | 4 +- .../reference/iteratorSpreadInCall2.types | 4 +- .../reference/iteratorSpreadInCall3.types | 4 +- .../reference/iteratorSpreadInCall4.types | 4 +- .../reference/iteratorSpreadInCall5.types | 6 +- .../reference/iteratorSpreadInCall6.types | 6 +- .../reference/iteratorSpreadInCall7.types | 4 +- .../iteratorsAndStrictNullChecks.types | 12 +- ...efinePropertyPrototypeNonConstructor.types | 6 +- ...avascriptThisAssignmentInStaticBlock.types | 26 +- .../baselines/reference/jqueryInference.types | 12 +- .../jsCheckObjectDefineThisNoCrash.types | 8 +- .../jsContainerMergeTsDeclaration.types | 4 +- ...gnedFunctionWithExtraTypedefsMembers.types | 12 +- .../jsDeclarationsClassAccessor.types | 4 +- ...jsDeclarationsClassExtendsVisibility.types | 2 +- ...ClassImplementsGenericsSerialization.types | 4 +- .../jsDeclarationsClassLeadingOptional.types | 2 +- .../reference/jsDeclarationsClassMethod.types | 34 +- .../reference/jsDeclarationsClassStatic.types | 4 +- .../reference/jsDeclarationsClasses.types | 2 +- .../jsDeclarationsComputedNames.types | 20 +- .../reference/jsDeclarationsDefault.types | 4 +- .../jsDeclarationsDocCommentsOnConsts.types | 8 +- .../reference/jsDeclarationsEnumTag.types | 22 +- ...onsExportAssignedConstructorFunction.types | 4 +- ...rtAssignedConstructorFunctionWithSub.types | 26 +- ...ortAssignmentExpressionPlusSecondary.types | 6 +- ...tionsExportAssignmentWithKeywordName.types | 2 +- ...DeclarationsExportDefinePropertyEmit.types | 118 +- ...tionsExportDoubleAssignmentInClosure.types | 14 +- .../jsDeclarationsExportSubAssignments.types | 2 +- ...nsFunctionClassesCjsExportAssignment.types | 44 +- .../jsDeclarationsFunctionJSDoc.types | 2 +- .../jsDeclarationsFunctionLikeClasses.types | 6 +- .../jsDeclarationsFunctionLikeClasses2.types | 18 +- ...sDeclarationsFunctionPrototypeStatic.types | 2 +- .../reference/jsDeclarationsFunctions.types | 18 +- .../jsDeclarationsFunctionsCjs.types | 78 +- .../jsDeclarationsGetterSetter.types | 122 +- ...sDeclarationsGlobalFileConstFunction.types | 2 +- ...arationsGlobalFileConstFunctionNamed.types | 2 +- ...onsImportAliasExposedWithinNamespace.types | 4 +- ...ImportAliasExposedWithinNamespaceCjs.types | 6 +- .../reference/jsDeclarationsInterfaces.types | 8 +- ...jsDeclarationsJSDocRedirectedLookups.types | 4 +- .../reference/jsDeclarationsJson.types | 6 +- .../jsDeclarationsMissingGenerics.types | 4 +- .../jsDeclarationsMissingTypeParameters.types | 8 +- .../jsDeclarationsNestedParams.types | 4 +- ...clarationsNonIdentifierInferredNames.types | 4 +- ...eclarationsOptionalTypeLiteralProps1.types | 2 +- ...eclarationsOptionalTypeLiteralProps2.types | 2 +- .../reference/jsDeclarationsPackageJson.types | 6 +- ...nsParameterTagReusesInputNodeInEmit1.types | 6 +- ...nsParameterTagReusesInputNodeInEmit2.types | 6 +- .../jsDeclarationsReactComponents.types | 34 +- .../jsDeclarationsReexportedCjsAlias.types | 6 +- ...onsReferenceToClassInstanceCrossFile.types | 12 +- ...sRestArgsWithThisTypeInJSDocFunction.types | 4 +- ...ReusesExistingNodesMappingJSDocTypes.types | 4 +- .../reference/jsDeclarationsTypeAliases.types | 6 +- .../jsDeclarationsTypedefAndLatebound.types | 6 +- .../jsDeclarationsTypedefFunction.types | 18 +- ...tionsTypedefPropertyAndExportAssignment.js | 2 +- .../jsDeclarationsUniqueSymbolUsage.types | 2 +- .../jsDocFunctionSignatures6.baseline | 72 +- ...jsElementAccessNoContextualTypeCrash.types | 8 +- .../reference/jsEnumCrossFileExport.types | 10 +- .../jsEnumFunctionLocalNoCrash.types | 2 +- .../reference/jsEnumTagOnObjectFrozen.types | 66 +- .../jsExpandoObjectDefineProperty.types | 4 +- .../jsFileAlternativeUseOfOverloadTag.types | 24 +- ...PropertyInitalizationInObjectLiteral.types | 2 +- .../reference/jsFileClassPropertyType2.types | 4 +- .../jsFileCompilationAwaitModifier.types | 10 +- ...ileCompilationBindReachabilityErrors.types | 2 +- ...sFileCompilationBindStrictModeErrors.types | 4 +- ...onClassMethodContainingArrowFunction.types | 10 +- .../jsFileCompilationLetBeingRenamed.types | 2 +- .../jsFileCompilationOptionalParameter.types | 2 +- ...ileCompilationRestParamJsDocFunction.types | 24 +- .../jsFileCompilationRestParameter.types | 2 +- .../jsFileCompilationTypeOfParameter.types | 2 +- .../reference/jsFileESModuleWithEnumTag.types | 4 +- .../reference/jsFileFunctionOverloads.js | 6 +- .../reference/jsFileFunctionOverloads.types | 20 +- .../reference/jsFileFunctionOverloads2.js | 6 +- .../reference/jsFileFunctionOverloads2.types | 20 +- .../jsFileFunctionParametersAsOptional.types | 10 +- .../jsFileFunctionParametersAsOptional2.types | 10 +- .../jsFileImportPreservedWhenUsed.types | 10 +- .../reference/jsFileMethodOverloads.js | 4 +- .../reference/jsFileMethodOverloads.types | 12 +- .../reference/jsFileMethodOverloads2.js | 4 +- .../reference/jsFileMethodOverloads2.types | 12 +- .../reference/jsFileMethodOverloads3.types | 6 +- .../reference/jsFileMethodOverloads4.types | 4 +- .../reference/jsFileMethodOverloads5.types | 4 +- ...ithPrototypeNoErrorTruncationNoCrash.types | 42 +- .../jsdocArrayObjectPromiseImplicitAny.types | 14 +- ...jsdocArrayObjectPromiseNoImplicitAny.types | 14 +- .../jsdocBindingInUnreachableCode.types | 4 +- .../jsdocCatchClauseWithTypeAnnotation.types | 24 +- .../jsdocClassMissingTypeArguments.types | 2 +- ...sdocConstructorFunctionTypeReference.types | 4 +- .../jsdocDisallowedInTypescript.types | 14 +- .../reference/jsdocFunctionType.types | 66 +- .../jsdocFunctionTypeFalsePositive.types | 2 +- .../baselines/reference/jsdocImportType.types | 4 +- .../reference/jsdocImportType2.types | 4 +- ...jsdocImportTypeReferenceToClassAlias.types | 2 +- ...cImportTypeReferenceToCommonjsModule.types | 2 +- .../jsdocImportTypeReferenceToESModule.types | 2 +- .../reference/jsdocInTypeScript.types | 16 +- .../reference/jsdocIndexSignature.types | 2 +- tests/baselines/reference/jsdocLinkTag3.types | 2 +- tests/baselines/reference/jsdocLinkTag4.types | 2 +- tests/baselines/reference/jsdocLinkTag8.types | 4 +- tests/baselines/reference/jsdocLiteral.types | 4 +- .../reference/jsdocNeverUndefinedNull.types | 2 +- .../reference/jsdocOuterTypeParameters1.types | 6 +- .../reference/jsdocOuterTypeParameters2.types | 6 +- .../reference/jsdocOverrideTag1.types | 8 +- .../baselines/reference/jsdocParamTag2.types | 26 +- .../reference/jsdocParamTagInvalid.types | 2 +- .../jsdocParamTagOnPropertyInitializer.types | 4 +- .../reference/jsdocParamTagTypeLiteral.types | 36 +- .../jsdocParameterParsingInvalidName.types | 2 +- .../jsdocParseBackquotedParamName.types | 4 +- .../jsdocParseDotDotDotInJSDocFunction.types | 12 +- .../jsdocParseErrorsInTypescript.types | 2 +- .../jsdocParseHigherOrderFunction.types | 16 +- .../jsdocParseMatchingBackticks.types | 2 +- ...sdocParseParenthesizedJSDocParameter.types | 6 +- .../reference/jsdocParseStarEquals.types | 4 +- .../jsdocPostfixEqualsAddsOptionality.types | 28 +- .../reference/jsdocPrefixPostfixParsing.types | 2 +- .../reference/jsdocPropertyTagInvalid.types | 10 +- .../jsdocReferenceGlobalTypeInCommonJs.types | 8 +- .../jsdocResolveNameFailureInTypedef.types | 2 +- .../reference/jsdocRestParameter_es6.types | 2 +- .../jsdocSignatureOnReturnedFunction.types | 16 +- .../reference/jsdocTemplateClass.types | 6 +- .../jsdocTemplateConstructorFunction.types | 4 +- .../jsdocTemplateConstructorFunction2.types | 8 +- .../reference/jsdocTemplateTag.types | 20 +- .../reference/jsdocTemplateTag2.types | 8 +- .../reference/jsdocTemplateTag3.types | 8 +- .../reference/jsdocTemplateTag4.types | 12 +- .../reference/jsdocTemplateTag5.types | 32 +- .../reference/jsdocTemplateTag6.types | 56 +- .../reference/jsdocTemplateTag7.types | 2 +- .../reference/jsdocTemplateTag8.types | 26 +- .../reference/jsdocTemplateTagDefault.types | 6 +- tests/baselines/reference/jsdocThisType.types | 28 +- tests/baselines/reference/jsdocTypeCast.types | 2 +- .../jsdocTypeFromChainedAssignment.types | 40 +- .../jsdocTypeFromChainedAssignment2.types | 48 +- ...jsdocTypeGenericInstantiationAttempt.types | 2 +- ...ocTypeNongenericInstantiationAttempt.types | 44 +- .../reference/jsdocTypeReferenceToValue.types | 6 +- tests/baselines/reference/jsdocTypeTag.types | 8 +- .../reference/jsdocTypeTagParameterType.types | 6 +- .../jsdocTypeTagRequiredParameters.types | 14 +- .../jsdocTypecastNoTypeNoCrash.types | 2 +- ...TypedefBeforeParenthesizedExpression.types | 2 +- .../reference/jsdocVariadicType.types | 6 +- .../baselines/reference/json.stringify.types | 42 +- ...onFileImportChecksCallCorrectlyTwice.types | 6 +- .../reference/jsxAndTypeAssertion.types | 4 +- .../jsxCallElaborationCheckNoCrash1.types | 6 +- .../jsxCallbackWithDestructuring.types | 6 +- .../jsxChildrenGenericContextualTypes.types | 58 +- ...xChildrenIndividualErrorElaborations.types | 64 +- ...onfusableWithMultipleChildrenNoError.types | 8 +- ...omplexSignatureHasApplicabilityError.types | 30 +- .../reference/jsxComponentTypeErrors.types | 4 +- ...lyTriviaWhiteSpacesNotCountedAsChild.types | 10 +- ...clarationsWithEsModuleInteropNoCrash.types | 4 +- .../baselines/reference/jsxElementType.types | 80 +- .../reference/jsxEmitWithAttributes.types | 22 +- ...pressionNotCountedAsChild(jsx=react).types | 6 +- ...sionNotCountedAsChild(jsx=react-jsx).types | 6 +- ...nNotCountedAsChild(jsx=react-jsxdev).types | 6 +- .../jsxExcessPropsAndAssignability.types | 4 +- .../jsxFactoryAndReactNamespace.types | 22 +- .../reference/jsxFactoryIdentifier.types | 28 +- .../jsxFactoryIdentifierAsParameter.types | 2 +- ...xFactoryNotIdentifierOrQualifiedName.types | 22 +- ...FactoryNotIdentifierOrQualifiedName2.types | 22 +- .../reference/jsxFactoryQualifiedName.types | 22 +- ...xFactoryQualifiedNameResolutionError.types | 2 +- .../jsxFragmentFactoryNoUnusedLocals.types | 10 +- ...WithSpreadingResultOfGenericFunction.types | 10 +- .../reference/jsxInExtendsClause.types | 6 +- ...sxInferenceProducesLiteralAsExpected.types | 6 +- .../jsxIntrinsicElementsCompatability.types | 8 +- ...sErrorWhenTagExpectsTooManyArguments.types | 16 +- ...estedSelfClosingChild(jsx=react-jsx).types | 18 +- ...edSelfClosingChild(jsx=react-jsxdev).types | 18 +- ...ibraryManagedAttributesUnusedGeneric.types | 4 +- ...xLocalNamespaceIndexSignatureNoCrash.types | 4 +- .../jsxNamespaceGlobalReexport.types | 32 +- ...paceGlobalReexportMissingAliasTarget.types | 32 +- ...xNamespaceImplicitImportJSXNamespace.types | 32 +- ...figPickedOverGlobalOne(jsx=preserve).types | 2 +- ...igPickedOverGlobalOne(jsx=react-jsx).types | 2 +- ...mespaceFromPragmaPickedOverGlobalOne.types | 2 +- .../reference/jsxNamespaceReexports.types | 4 +- .../reference/jsxPartialSpread.types | 10 +- .../jsxSpreadFirstUnionNoErrors.types | 10 +- .../jsxSpreadOverwritesAttributeStrict.types | 28 +- tests/baselines/reference/keyofAndForIn.types | 18 +- .../reference/keyofAndIndexedAccess.js | 4 +- .../reference/keyofAndIndexedAccess.types | 382 ++-- .../reference/keyofAndIndexedAccess2.types | 66 +- .../keyofAndIndexedAccessErrors.types | 28 +- .../reference/keyofDoesntContainSymbols.types | 10 +- .../keyofInferenceIntersectsResults.types | 10 +- ...eyofInferenceLowerPriorityThanReturn.types | 10 +- .../keyofIsLiteralContexualType.types | 6 +- .../keyofModuleObjectHasCorrectKeys.types | 6 +- tests/baselines/reference/knockout.types | 10 +- tests/baselines/reference/lambdaASIEmit.types | 4 +- .../baselines/reference/lambdaArgCrash.types | 16 +- .../reference/lambdaParamTypes.types | 88 +- ...WithTupleArgsHasCorrectAssignability.types | 24 +- .../baselines/reference/lambdaPropSelf.types | 6 +- .../baselines/reference/largeTupleTypes.types | 2 +- .../reference/lastPropertyInLiteralWins.types | 32 +- ...teBoundAssignmentDeclarationSupport3.types | 8 +- ...teBoundAssignmentDeclarationSupport6.types | 8 +- ...teBoundConstraintTypeChecksCorrectly.types | 2 +- .../leaveOptionalParameterAsWritten.types | 4 +- .../legacyDecorators-contextualTypes.types | 52 +- ...ExportsSpecifierGenerationConditions.types | 2 +- .../reference/letConstInCaseClauses.types | 8 +- .../letConstMatchingParameterNames.types | 8 +- .../reference/letDeclarations-access.types | 8 +- .../reference/letDeclarations-scopes.types | 8 +- .../letDeclarations-validContexts.types | 8 +- .../letShadowedByNameInNestedScope.types | 4 +- tests/baselines/reference/libMembers.types | 12 +- .../reference/library_ArraySlice.types | 12 +- .../library_DatePrototypeProperties.types | 76 +- .../library_ObjectPrototypeProperties.types | 12 +- .../library_RegExpExecArraySlice.types | 12 +- .../reference/library_StringSlice.types | 12 +- tests/baselines/reference/linkTagEmit1.types | 2 +- tests/baselines/reference/listFailure.types | 18 +- ...teralFreshnessPropagationOnNarrowing.types | 10 +- ...literalTypeNameAssertionNotTriggered.types | 4 +- .../reference/literalTypeWidening.types | 64 +- tests/baselines/reference/literalTypes1.types | 10 +- tests/baselines/reference/literalTypes2.types | 80 +- tests/baselines/reference/literalTypes3.types | 16 +- .../literalsInComputedProperties1.types | 48 +- .../reference/localClassesInLoop.types | 8 +- .../reference/localClassesInLoop_ES6.types | 8 +- .../localImportNameVsGlobalName.types | 8 +- .../reference/localRequireFunction.types | 4 +- tests/baselines/reference/localTypes1.types | 6 +- tests/baselines/reference/localTypes2.types | 8 +- tests/baselines/reference/localTypes3.types | 24 +- tests/baselines/reference/localTypes4.types | 4 +- tests/baselines/reference/localTypes5.types | 18 +- .../reference/localesObjectArgument.types | 240 +-- .../logicalAndOperatorWithEveryType.types | 16 +- ...logicalAndOperatorWithTypeParameters.types | 2 +- .../logicalAssignment10(target=es2015).types | 2 +- .../logicalAssignment10(target=es2020).types | 2 +- .../logicalAssignment10(target=es2021).types | 2 +- .../logicalAssignment10(target=esnext).types | 2 +- .../logicalAssignment2(target=es2015).types | 4 +- .../logicalAssignment2(target=es2020).types | 4 +- .../logicalAssignment2(target=es2021).types | 4 +- .../logicalAssignment2(target=esnext).types | 4 +- .../logicalAssignment4(target=es2015).types | 26 +- .../logicalAssignment4(target=es2020).types | 26 +- .../logicalAssignment4(target=es2021).types | 26 +- .../logicalAssignment4(target=esnext).types | 26 +- .../logicalAssignment5(target=es2015).types | 98 +- .../logicalAssignment5(target=es2020).types | 98 +- .../logicalAssignment5(target=es2021).types | 98 +- .../logicalAssignment5(target=esnext).types | 98 +- .../logicalAssignment6(target=es2015).types | 18 +- .../logicalAssignment6(target=es2020).types | 18 +- .../logicalAssignment6(target=es2021).types | 18 +- .../logicalAssignment6(target=esnext).types | 18 +- .../logicalAssignment7(target=es2015).types | 18 +- .../logicalAssignment7(target=es2020).types | 18 +- .../logicalAssignment7(target=es2021).types | 18 +- .../logicalAssignment7(target=esnext).types | 18 +- .../logicalAssignment8(target=es2015).types | 18 +- .../logicalAssignment8(target=es2020).types | 18 +- .../logicalAssignment8(target=es2021).types | 18 +- .../logicalAssignment8(target=esnext).types | 18 +- .../logicalNotOperatorWithAnyOtherType.types | 4 +- .../logicalNotOperatorWithNumberType.types | 6 +- .../logicalNotOperatorWithStringType.types | 10 +- ...alOrExpressionIsNotContextuallyTyped.types | 12 +- .../logicalOrOperatorWithEveryType.types | 36 +- .../logicalOrOperatorWithTypeParameters.types | 6 +- .../reference/looseThisTypeInFunctions.types | 110 +- tests/baselines/reference/malformedTags.types | 4 +- tests/baselines/reference/mapGroupBy.types | 24 +- .../reference/mapOnTupleTypes01.types | 58 +- .../reference/mapOnTupleTypes02.types | 8 +- .../mappedToToIndexSignatureInference.types | 8 +- .../mappedTypeAsClauseRelationships.types | 4 +- .../reference/mappedTypeAsClauses.types | 10 +- .../mappedTypeAsStringTemplate.types | 4 +- .../reference/mappedTypeConstraints.types | 20 +- .../reference/mappedTypeConstraints2.types | 24 +- .../mappedTypeContextualTypesApplied.types | 90 +- .../reference/mappedTypeErrors.types | 86 +- .../mappedTypeGenericIndexedAccess.types | 34 +- ...icInstantiationPreservesHomomorphism.types | 12 +- ...ericInstantiationPreservesInlineForm.types | 6 +- .../mappedTypeGenericWithKnownKeys.types | 2 +- .../mappedTypeIndexedAccessConstraint.types | 124 +- ...mappedTypeInferenceAliasSubstitution.types | 12 +- .../reference/mappedTypeInferenceErrors.types | 4 +- .../mappedTypeInferenceToMappedType.types | 4 +- .../reference/mappedTypeModifiers.types | 40 +- .../reference/mappedTypeMultiInference.types | 8 +- ...mappedTypeNestedGenericInstantiation.types | 22 +- .../mappedTypeParameterConstraint.types | 2 +- .../mappedTypePartialConstraints.types | 6 +- .../reference/mappedTypeProperties.types | 4 +- .../mappedTypeRecursiveInference.types | 8 +- .../mappedTypeRecursiveInference2.types | 38 +- .../reference/mappedTypeRelationships.types | 66 +- ...ppedTypeTupleConstraintAssignability.types | 4 +- ...nionConstrainTupleTreatedAsArrayLike.types | 4 +- .../mappedTypeUnionConstraintInferences.types | 12 +- .../reference/mappedTypeWithAny.types | 10 +- ...TypeWithAsClauseAndLateBoundProperty.types | 6 +- ...ypeWithAsClauseAndLateBoundProperty2.types | 6 +- ...TypeWithNameClauseAppliedToArrayType.types | 4 +- tests/baselines/reference/mappedTypes1.types | 4 +- tests/baselines/reference/mappedTypes2.types | 44 +- tests/baselines/reference/mappedTypes3.types | 16 +- tests/baselines/reference/mappedTypes4.types | 6 +- tests/baselines/reference/mappedTypes5.types | 18 +- tests/baselines/reference/mappedTypes6.types | 8 +- .../reference/mappedTypesAndObjects.types | 6 +- .../reference/mappedTypesArraysTuples.types | 44 +- .../reference/mappedTypesGenericTuples2.types | 18 +- .../matchReturnTypeInAllBranches.types | 2 +- .../matchingOfObjectLiteralConstraints.types | 4 +- .../baselines/reference/maxConstraints.types | 8 +- .../memberAccessMustUseModuleInstances.types | 6 +- ...ctionOverloadMixingStaticAndInstance.types | 8 +- .../memberFunctionsWithPrivateOverloads.types | 80 +- .../memberFunctionsWithPublicOverloads.types | 64 +- ...rFunctionsWithPublicPrivateOverloads.types | 100 +- .../reference/mergedDeclarations1.types | 6 +- .../reference/mergedDeclarations6.types | 2 +- .../mergedInstantiationAssignment.types | 6 +- .../mergedInterfacesWithIndexers.types | 2 +- .../mergedModuleDeclarationCodeGen2.types | 2 +- .../mergedModuleDeclarationCodeGen3.types | 2 +- .../mergedModuleDeclarationCodeGen4.types | 2 +- .../mergedModuleDeclarationCodeGen5.types | 8 +- .../reference/metadataOfClassFromAlias.types | 2 +- .../reference/metadataOfClassFromAlias2.types | 2 +- .../reference/metadataOfClassFromModule.types | 4 +- .../reference/metadataOfEventAlias.types | 4 +- .../reference/metadataOfStringLiteral.types | 4 +- .../baselines/reference/metadataOfUnion.types | 16 +- .../reference/metadataOfUnionWithNull.types | 26 +- ...etadataReferencedWithinFilteredUnion.types | 4 +- .../reference/methodChainError.types | 18 +- .../methodContainingLocalFunction.types | 14 +- .../methodSignatureDeclarationEmit1.types | 6 +- .../methodSignaturesWithOverloads.types | 16 +- .../methodSignaturesWithOverloads2.types | 72 +- .../reference/methodsReturningThis.types | 28 +- ...ExplicitTypeParameterAndArgumentType.types | 52 +- .../mismatchedGenericArguments1.types | 6 +- .../reference/missingDecoratorType.types | 4 +- .../missingFunctionImplementation.types | 36 +- .../missingFunctionImplementation2.types | 4 +- .../reference/missingTypeArguments2.types | 2 +- .../reference/missingTypeArguments3.types | 34 +- .../misspelledJsDocTypedefTags.types | 8 +- .../mixedStaticAndInstanceClassMembers.types | 12 +- .../reference/mixinAbstractClasses.2.types | 12 +- .../reference/mixinAbstractClasses.types | 8 +- ...inAbstractClassesReturnTypeInference.types | 8 +- .../reference/mixinAccessModifiers.types | 38 +- .../reference/mixinClassesAnnotated.types | 18 +- .../reference/mixinClassesAnonymous.types | 60 +- .../mixinIntersectionIsValidbaseType.types | 42 +- .../mixinOverMappedTypeNoCrash.types | 4 +- .../reference/mixinPrivateAndProtected.types | 66 +- .../mixingApparentTypeOverrides.types | 8 +- .../mixingStaticAndInstanceOverloads.types | 36 +- .../reference/modFunctionCrash.types | 6 +- .../modularizeLibrary_Dom.asynciterable.types | 6 +- .../modularizeLibrary_Dom.iterable.types | 4 +- ...FromUsingES6ArrayWithOnlyES6ArrayLib.types | 4 +- ...orFromUsingES6FeaturesWithOnlyES5Lib.types | 22 +- ...wnSymbolWithOutES6WellknownSymbolLib.types | 8 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 50 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 50 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 50 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 40 +- ...izeLibrary_UsingES5LibAndES6ArrayLib.types | 8 +- ...Library_UsingES5LibAndES6FeatureLibs.types | 6 +- ...5LibES6ArrayLibES6WellknownSymbolLib.types | 8 +- ...dularizeLibrary_Worker.asynciterable.types | 6 +- .../moduleAliasAsFunctionArgument.types | 4 +- .../reference/moduleAliasInterface.types | 2 +- ...ntationCollidingNamesInAugmentation1.types | 4 +- .../moduleAugmentationDeclarationEmit1.types | 14 +- .../moduleAugmentationDeclarationEmit2.types | 18 +- ...duleAugmentationDisallowedExtensions.types | 4 +- ...mentationDuringSyntheticDefaultCheck.types | 4 +- ...duleAugmentationExtendAmbientModule1.types | 14 +- ...duleAugmentationExtendAmbientModule2.types | 18 +- .../moduleAugmentationExtendFileModule1.types | 14 +- .../moduleAugmentationExtendFileModule2.types | 18 +- .../moduleAugmentationNoNewNames.types | 14 +- .../reference/moduleAugmentationOfAlias.types | 2 +- .../moduleAugmentationsBundledOutput1.types | 8 +- .../moduleAugmentationsImports1.types | 4 +- .../moduleAugmentationsImports2.types | 4 +- .../moduleAugmentationsImports3.types | 4 +- .../moduleAugmentationsImports4.types | 4 +- ...nExportStarShadowingGlobalIsNameable.types | 4 +- .../reference/moduleExportAlias.types | 40 +- .../reference/moduleExportAlias2.types | 16 +- .../reference/moduleExportAlias5.types | 2 +- ...leExportAliasElementAccessExpression.types | 4 +- .../reference/moduleExportAssignment.types | 56 +- .../reference/moduleExportAssignment2.types | 34 +- .../reference/moduleExportAssignment3.types | 2 +- .../reference/moduleExportAssignment6.types | 2 +- .../reference/moduleExportAssignment7.types | 14 +- .../moduleExportDuplicateAlias3.types | 10 +- .../moduleExportNestedNamespaces.types | 2 +- ...leExportWithExportPropertyAssignment.types | 38 +- ...eExportWithExportPropertyAssignment2.types | 8 +- ...eExportWithExportPropertyAssignment3.types | 8 +- ...eExportWithExportPropertyAssignment4.types | 8 +- .../reference/moduleExportsAliasLoop1.types | 10 +- ...oduleExportsElementAccessAssignment2.types | 2 +- .../moduleExportsUnaryExpression.types | 2 +- tests/baselines/reference/moduleImport.types | 8 +- .../reference/moduleInTypePosition1.types | 4 +- .../moduleMemberWithoutTypeAnnotation1.types | 12 +- .../moduleMemberWithoutTypeAnnotation2.types | 4 +- .../reference/moduleNewExportBug.types | 2 +- .../baselines/reference/modulePreserve4.types | 8 +- ...leResolutionWithExtensions_withPaths.types | 4 +- ...uffixes_one_externalModule_withPaths.types | 4 +- ...eResolutionWithSuffixes_one_jsModule.types | 4 +- ...esolutionWithSuffixes_one_jsonModule.types | 4 +- .../moduleResolutionWithoutExtension5.types | 6 +- .../moduleResolutionWithoutExtension8.types | 6 +- tests/baselines/reference/moduleScoping.types | 2 +- .../moduleWithStatementsOfEveryKind.types | 12 +- .../module_augmentUninstantiatedModule2.types | 2 +- tests/baselines/reference/moduledecl.types | 16 +- .../reference/multiCallOverloads.types | 16 +- .../multiExtendsSplitInterfaces1.types | 4 +- .../reference/multiImportExport.types | 2 +- ...ropertyAccessAndArrowFunctionIndent1.types | 4 +- .../multiSignatureTypeInference.types | 16 +- tests/baselines/reference/multiline.types | 28 +- .../reference/multipleDeclarations.types | 8 +- .../reference/multipleExportAssignments.types | 4 +- .../reference/multipleInferenceContexts.types | 20 +- .../reference/multipleInheritance.types | 2 +- tests/baselines/reference/multivar.types | 2 +- tests/baselines/reference/mutrec.types | 12 +- .../mutuallyRecursiveCallbacks.types | 6 +- ...ionExpressionAssignedToClassProperty.types | 2 +- .../namedFunctionExpressionCall.types | 2 +- .../namedFunctionExpressionCallErrors.types | 2 +- .../namedFunctionExpressionInModule.types | 8 +- .../reference/namedTupleMembers.types | 24 +- ...MergedWithFunctionWithOverloadsUsage.types | 14 +- ...ceNotMergedWithFunctionDefaultExport.types | 4 +- tests/baselines/reference/nanEquality.types | 6 +- .../reference/narrowByBooleanComparison.types | 52 +- ...arrowByClauseExpressionInSwitchTrue1.types | 26 +- ...rrowByClauseExpressionInSwitchTrue10.types | 4 +- ...arrowByClauseExpressionInSwitchTrue3.types | 2 +- ...arrowByClauseExpressionInSwitchTrue5.types | 10 +- ...arrowByClauseExpressionInSwitchTrue6.types | 2 +- ...arrowByClauseExpressionInSwitchTrue7.types | 2 +- ...arrowByClauseExpressionInSwitchTrue8.types | 2 +- ...arrowByClauseExpressionInSwitchTrue9.types | 2 +- .../reference/narrowByEquality.types | 2 +- .../reference/narrowByInstanceof.types | 28 +- .../narrowCommaOperatorNestedWithinLHS.types | 6 +- ...narrowExceptionVariableInCatchClause.types | 6 +- .../narrowFromAnyWithTypePredicate.types | 20 +- ...ameterBIndingElementNameInInnerScope.types | 2 +- .../narrowUnknownByTypeofObject.types | 2 +- ...gAssignmentReadonlyRespectsAssertion.types | 30 +- .../narrowingByDiscriminantInLoop.types | 10 +- .../reference/narrowingByTypeofInSwitch.types | 304 ++-- .../narrowingConstrainedTypeParameter.types | 10 +- .../narrowingConstrainedTypeVariable.types | 6 +- .../reference/narrowingDestructuring.types | 14 +- ...narrowingGenericTypeFromInstanceof01.types | 14 +- ...nCaseClauseAfterCaseClauseWithReturn.types | 6 +- .../reference/narrowingIntersection.types | 8 +- .../reference/narrowingMutualSubtypes.types | 88 +- .../reference/narrowingOfDottedNames.types | 12 +- .../reference/narrowingOfQualifiedNames.types | 8 +- .../narrowingPastLastAssignment.types | 76 +- .../narrowingPastLastAssignmentInModule.types | 12 +- .../reference/narrowingRestGenericCall.types | 14 +- .../reference/narrowingTruthyObject.types | 8 +- .../narrowingTypeofDiscriminant.types | 18 +- .../reference/narrowingTypeofFunction.types | 6 +- .../reference/narrowingTypeofObject.types | 4 +- .../reference/narrowingTypeofUndefined2.types | 8 +- .../reference/narrowingUnionToUnion.types | 138 +- .../reference/narrowingUnionWithBang.types | 30 +- .../narrowingWithNonNullExpression.types | 4 +- ...rbyIdenticalGenericLambdasAssignable.types | 54 +- .../negateOperatorWithAnyOtherType.types | 4 +- .../negateOperatorWithNumberType.types | 6 +- .../negateOperatorWithStringType.types | 10 +- .../nestedDestructuringOfRequire.types | 2 +- .../nestedExcessPropertyChecking.types | 4 +- .../nestedGenericSpreadInference.types | 14 +- ...rphicMappedTypesWithArrayConstraint1.types | 2 +- tests/baselines/reference/nestedIndexer.types | 2 +- tests/baselines/reference/nestedLoops.types | 10 +- .../reference/nestedRecursiveLambda.types | 38 +- tests/baselines/reference/nestedSelf.types | 6 +- .../nestedTypeVariableInfersLiteral.types | 28 +- ...everAsDiscriminantType(strict=false).types | 12 +- ...neverAsDiscriminantType(strict=true).types | 12 +- .../baselines/reference/neverInference.types | 34 +- .../reference/neverReturningFunctions1.types | 206 +-- tests/baselines/reference/neverType.types | 38 +- ...ewLexicalEnvironmentForConvertedLoop.types | 6 +- tests/baselines/reference/newOperator.types | 8 +- .../reference/newOperatorConformance.types | 8 +- .../reference/newOperatorErrorCases.types | 2 +- .../newOperatorErrorCases_noImplicitAny.types | 8 +- tests/baselines/reference/newTarget.es5.types | 22 +- tests/baselines/reference/newTarget.es6.types | 22 +- .../reference/newTargetNarrowing.types | 4 +- tests/baselines/reference/newWithSpread.types | 76 +- .../reference/newWithSpreadES5.types | 76 +- .../reference/newWithSpreadES6.types | 76 +- .../reference/noAsConstNameLookup.types | 6 +- ...lisionThisExpressionAndClassInGlobal.types | 2 +- ...ThisExpressionAndLocalVarInAccessors.types | 32 +- ...isExpressionAndLocalVarInConstructor.types | 16 +- ...nThisExpressionAndLocalVarInFunction.types | 12 +- ...ionThisExpressionAndLocalVarInLambda.types | 22 +- ...ionThisExpressionAndLocalVarInMethod.types | 16 +- ...nThisExpressionAndLocalVarInProperty.types | 16 +- ...ollisionThisExpressionAndVarInGlobal.types | 2 +- ...isExpressionInFunctionAndVarInGlobal.types | 12 +- .../baselines/reference/noCrashOnMixin.types | 8 +- .../noCrashOnParameterNamedRequire.types | 4 +- .../reference/noCrashOnThisTypeUsage.types | 12 +- .../reference/noDuplicateJsdoc1.types | 2 +- .../reference/noErrorsInCallback.types | 4 +- ...licitAnyDestructuringInPrivateMethod.types | 4 +- ...AnyDestructuringParameterDeclaration.types | 10 +- .../reference/noImplicitAnyForIn.types | 2 +- .../noImplicitAnyForMethodParameters.types | 8 +- ...licitAnyFunctionExpressionAssignment.types | 10 +- .../reference/noImplicitAnyFunctions.types | 12 +- ...yInContextuallyTypesFunctionParamter.types | 10 +- .../reference/noImplicitAnyLoopCrash.types | 2 +- .../reference/noImplicitAnyModule.types | 8 +- .../noImplicitAnyNamelessParameter.types | 12 +- ...oImplicitAnyParametersInAmbientClass.types | 56 +- ...licitAnyParametersInAmbientFunctions.types | 28 +- ...ImplicitAnyParametersInAmbientModule.types | 28 +- ...ImplicitAnyParametersInBareFunctions.types | 40 +- .../noImplicitAnyParametersInClass.types | 80 +- .../noImplicitAnyParametersInInterface.types | 28 +- .../noImplicitAnyParametersInModule.types | 40 +- .../noImplicitAnyStringIndexerOnObject.types | 214 +-- .../noImplicitAnyWithOverloads.types | 14 +- .../noImplicitReturnsExclusions.types | 54 +- .../reference/noImplicitReturnsInAsync1.types | 6 +- .../reference/noImplicitReturnsInAsync2.types | 10 +- ...oImplicitReturnsWithProtectedBlocks1.types | 4 +- ...oImplicitReturnsWithProtectedBlocks2.types | 6 +- ...oImplicitReturnsWithProtectedBlocks3.types | 4 +- ...plicitReturnsWithoutReturnExpression.types | 2 +- .../reference/noImplicitSymbolToString.types | 6 +- .../reference/noImplicitThisBigThis.types | 4 +- .../reference/noImplicitThisFunctions.types | 16 +- tests/baselines/reference/noInfer.types | 62 +- .../noInferCommonPropertyCheck1.types | 12 +- .../reference/noInferRedeclaration.js | 2 +- .../reference/noInferRedeclaration.types | 16 +- .../noInferUnionExcessPropertyCheck1.types | 18 +- .../noIterationTypeErrorsInCFA.types | 6 +- .../reference/noObjectKeysToKeyofT.types | 8 +- ...noParameterReassignmentIIFEAnnotated.types | 18 +- .../noParameterReassignmentJSIIFE.types | 18 +- tests/baselines/reference/noSelfOnVars.types | 2 +- .../reference/noStrictGenericChecks.types | 2 +- .../reference/noSubtypeReduction.types | 8 +- .../reference/noUncheckedIndexedAccess.types | 18 +- ...oUncheckedIndexedAccessDestructuring.types | 80 +- ...als_typeParameterMergedWithParameter.types | 8 +- .../reference/noUnusedLocals_writeOnly.types | 8 +- .../reference/nodeColonModuleResolution.types | 4 +- .../nodeColonModuleResolution2.types | 4 +- .../nodeModuleReexportFromDottedPath.types | 6 +- ...SynchronousCallErrors(module=node16).types | 4 +- ...nchronousCallErrors(module=nodenext).types | 4 +- ...nEmitDynamicImportWithPackageExports.types | 6 +- ...ModulesForbidenSyntax(module=node16).types | 24 +- ...dulesForbidenSyntax(module=nodenext).types | 24 +- ...dulesImportAssertions(module=node16).types | 2 +- ...lesImportAssertions(module=nodenext).types | 2 +- ...dulesImportAttributes(module=node16).types | 2 +- ...lesImportAttributes(module=nodenext).types | 2 +- ...ulesResolveJsonModule(module=node16).types | 6 +- ...esResolveJsonModule(module=nodenext).types | 6 +- ...SynchronousCallErrors(module=node16).types | 4 +- ...nchronousCallErrors(module=nodenext).types | 4 +- ...WithOutDirDeclDirCompositeNestedDirs.types | 2 +- ...eSelfNameWithOutDirDeclDirNestedDirs.types | 2 +- .../nominalSubtypeCheckOfTypeParameter.types | 4 +- .../reference/nonArrayRestArgs.types | 2 +- .../nonInferrableTypePropagation1.types | 52 +- .../nonInferrableTypePropagation2.types | 22 +- .../nonInferrableTypePropagation3.types | 20 +- .../nonMergedDeclarationsAndOverloads.types | 6 +- .../reference/nonNullFullInference.types | 8 +- .../reference/nonNullMappedType.types | 4 +- ...terExtendingStringAssignableToString.types | 10 +- .../reference/nonNullReferenceMatching.types | 4 +- .../reference/nonNullableReduction.types | 10 +- .../nonNullableReductionNonStrict.types | 12 +- .../reference/nonNullableTypes1.types | 8 +- .../nonPrimitiveAndTypeVariables.types | 2 +- ...PrimitiveConstraintOfIndexAccessType.types | 20 +- .../reference/nonPrimitiveInFunction.types | 6 +- .../reference/nonPrimitiveInGeneric.types | 22 +- .../nondistributiveConditionalTypeInfer.types | 4 +- .../nonexistentPropertyOnUnion.types | 2 +- ...entPropertyUnavailableOnPromisedType.types | 2 +- ...ullAssertionPropegatesContextualType.types | 4 +- .../normalizedIntersectionTooComplex.types | 54 +- .../reference/nullAssignableToEveryType.types | 6 +- ...ullIsSubtypeOfEverythingButUndefined.types | 18 +- ...UndefinedTypeGuardIsOrderIndependent.types | 2 +- .../nullishCoalescingOperator6.types | 2 +- .../nullishCoalescingOperator9.types | 22 +- .../reference/numberPropertyAccess.types | 12 +- .../baselines/reference/numberToString.types | 10 +- .../reference/numberVsBigIntOperations.types | 26 +- ...ndexerConstrainsPropertyDeclarations.types | 4 +- .../reference/numericLiteralTypes1.types | 44 +- .../reference/numericLiteralTypes2.types | 44 +- .../reference/numericLiteralTypes3.types | 16 +- ...cLiteralsWithTrailingDecimalPoints01.types | 66 +- ...cLiteralsWithTrailingDecimalPoints02.types | 66 +- .../reference/numericStringLiteralTypes.types | 18 +- .../objectAssignLikeNonUnionResult.types | 6 +- ...dingPatternContextuallyTypesArgument.types | 20 +- .../reference/objectCreate-errors.types | 32 +- tests/baselines/reference/objectCreate.types | 40 +- tests/baselines/reference/objectCreate2.types | 80 +- ...reationExpressionInFunctionParameter.types | 2 +- ...ectCreationOfElementAccessExpression.types | 2 +- tests/baselines/reference/objectFreeze.types | 36 +- .../objectFreezeLiteralsDontWiden.types | 6 +- .../reference/objectFromEntries.types | 40 +- tests/baselines/reference/objectGroupBy.types | 24 +- .../objectInstantiationFromUnionSpread.types | 28 +- .../reference/objectLitGetterSetter.types | 16 +- .../objectLitIndexerContextualType.types | 32 +- .../reference/objectLitPropertyScoping.types | 8 +- .../objectLitTargetTypeCallSite.types | 4 +- .../objectLiteralArraySpecialization.types | 18 +- ...iteralComputedNameNoDeclarationError.types | 6 +- .../objectLiteralContextualTyping.types | 16 +- .../reference/objectLiteralErrors.types | 10 +- ...ctLiteralFunctionArgContextualTyping.types | 34 +- ...tLiteralFunctionArgContextualTyping2.types | 34 +- .../objectLiteralGettersAndSetters.types | 58 +- .../objectLiteralNormalization.types | 22 +- .../objectLiteralParameterResolution.types | 10 +- .../objectLiteralPropertyImplicitlyAny.types | 4 +- ...LiteralShorthandPropertiesAssignment.types | 18 +- ...eralShorthandPropertiesAssignmentES6.types | 18 +- ...alShorthandPropertiesAssignmentError.types | 6 +- ...AssignmentErrorFromMissingIdentifier.types | 6 +- ...lShorthandPropertiesFunctionArgument.types | 4 +- ...ShorthandPropertiesFunctionArgument2.types | 4 +- .../objectLiteralThisWidenedOnUse.types | 14 +- .../reference/objectMembersOnTypes.types | 4 +- tests/baselines/reference/objectRest.types | 4 +- tests/baselines/reference/objectRest2.types | 16 +- .../reference/objectRestAssignment.types | 4 +- ...objectRestBindingContextualInference.types | 4 +- .../baselines/reference/objectRestForOf.types | 6 +- .../reference/objectRestNegative.types | 4 +- .../reference/objectRestParameter.types | 24 +- .../reference/objectRestParameterES5.types | 24 +- tests/baselines/reference/objectSpread.types | 38 +- .../objectSpreadRepeatedComplexity.types | 2 +- .../objectSpreadRepeatedNullCheckPerf.types | 212 +-- .../reference/objectSpreadStrictNull.types | 4 +- ...adWithinMethodWithinObjectWithSpread.types | 2 +- ...ectTypeHidingMembersOfExtendedObject.types | 4 +- .../objectTypeHidingMembersOfObject.types | 4 +- ...idingMembersOfObjectAssignmentCompat.types | 4 +- ...dingMembersOfObjectAssignmentCompat2.types | 4 +- ...CallSignatureAppearsToBeFunctionType.types | 12 +- ...atureHidingMembersOfExtendedFunction.types | 44 +- ...CallSignatureHidingMembersOfFunction.types | 40 +- ...ructSignatureAppearsToBeFunctionType.types | 12 +- ...atureHidingMembersOfExtendedFunction.types | 44 +- ...ructSignatureHidingMembersOfFunction.types | 40 +- ...rsiveWrappedPropertyCheckedNominally.types | 4 +- ...thStringAndNumberIndexSignatureToAny.types | 6 +- .../reference/objectTypesIdentity.types | 134 +- .../reference/objectTypesIdentity2.types | 86 +- ...bjectTypesIdentityWithCallSignatures.types | 202 +-- ...jectTypesIdentityWithCallSignatures2.types | 202 +-- ...jectTypesIdentityWithCallSignatures3.types | 74 +- ...thCallSignaturesDifferingParamCounts.types | 202 +-- ...hCallSignaturesDifferingParamCounts2.types | 80 +- ...ntityWithCallSignaturesWithOverloads.types | 224 +-- ...tTypesIdentityWithComplexConstraints.types | 6 +- ...TypesIdentityWithConstructSignatures.types | 136 +- ...ypesIdentityWithConstructSignatures2.types | 152 +- ...structSignaturesDifferingParamCounts.types | 152 +- ...pesIdentityWithGenericCallSignatures.types | 202 +-- ...esIdentityWithGenericCallSignatures2.types | 202 +-- ...CallSignaturesDifferingByConstraints.types | 224 +-- ...allSignaturesDifferingByConstraints2.types | 238 +-- ...allSignaturesDifferingByConstraints3.types | 216 +-- ...cCallSignaturesDifferingByReturnType.types | 202 +-- ...CallSignaturesDifferingByReturnType2.types | 202 +-- ...gnaturesDifferingTypeParameterCounts.types | 202 +-- ...naturesDifferingTypeParameterCounts2.types | 74 +- ...ignaturesDifferingTypeParameterNames.types | 202 +-- ...hGenericCallSignaturesOptionalParams.types | 202 +-- ...GenericCallSignaturesOptionalParams2.types | 202 +-- ...GenericCallSignaturesOptionalParams3.types | 202 +-- ...ructSignaturesDifferingByConstraints.types | 164 +- ...uctSignaturesDifferingByConstraints2.types | 176 +- ...uctSignaturesDifferingByConstraints3.types | 158 +- ...tructSignaturesDifferingByReturnType.types | 172 +- ...ructSignaturesDifferingByReturnType2.types | 152 +- ...gnaturesDifferingTypeParameterCounts.types | 146 +- ...ignaturesDifferingTypeParameterNames.types | 146 +- ...ricConstructSignaturesOptionalParams.types | 146 +- ...icConstructSignaturesOptionalParams2.types | 146 +- ...icConstructSignaturesOptionalParams3.types | 146 +- ...ectTypesIdentityWithNumericIndexers1.types | 170 +- ...ectTypesIdentityWithNumericIndexers2.types | 170 +- ...ectTypesIdentityWithNumericIndexers3.types | 170 +- .../objectTypesIdentityWithOptionality.types | 76 +- .../objectTypesIdentityWithPrivates.types | 170 +- .../objectTypesIdentityWithPrivates2.types | 40 +- .../objectTypesIdentityWithPublics.types | 134 +- ...bjectTypesIdentityWithStringIndexers.types | 170 +- ...jectTypesIdentityWithStringIndexers2.types | 170 +- .../observableInferenceCanBeMade.types | 22 +- .../reference/omitTypeHelperModifiers01.types | 2 +- .../reference/omitTypeTestErrors01.types | 4 +- .../baselines/reference/omitTypeTests01.types | 4 +- .../operationsAvailableOnPromisedType.types | 6 +- .../operatorsAndIntersectionTypes.types | 4 +- .../optionalAccessorsInInterface1.types | 16 +- .../optionalArgsWithDefaultValues.types | 14 +- .../optionalBindingParameters1.types | 6 +- .../optionalBindingParameters2.types | 6 +- .../optionalBindingParameters3.types | 2 +- .../optionalBindingParameters4.types | 2 +- ...ptionalBindingParametersInOverloads1.types | 8 +- ...ptionalBindingParametersInOverloads2.types | 8 +- ...tantiationExpression1(target=es2019).types | 2 +- ...tantiationExpression1(target=es2020).types | 2 +- .../reference/optionalChainingInference.types | 34 +- .../optionalConstructorArgInSuper.types | 6 +- .../optionalFunctionArgAssignability.types | 34 +- .../baselines/reference/optionalMethods.types | 4 +- .../reference/optionalParamArgsTest.types | 164 +- .../optionalParamAssignmentCompat.types | 6 +- .../reference/optionalParamInOverride.types | 2 +- ...optionalParamReferencingOtherParams1.types | 2 +- ...optionalParamReferencingOtherParams2.types | 2 +- ...optionalParamReferencingOtherParams3.types | 2 +- .../optionalParamTypeComparison.types | 16 +- ...ameterInDestructuringWithInitializer.types | 46 +- .../optionalParameterRetainsNull.types | 18 +- .../reference/optionalPropertiesTest.types | 6 +- .../reference/optionalTupleElements1.types | 2 +- tests/baselines/reference/out-flag.types | 2 +- .../overEagerReturnTypeSpecialization.types | 36 +- tests/baselines/reference/overload1.types | 92 +- tests/baselines/reference/overload2.types | 12 +- .../reference/overloadAssignmentCompat.types | 16 +- ...adBindingAcrossDeclarationBoundaries.types | 12 +- ...dBindingAcrossDeclarationBoundaries2.types | 12 +- .../reference/overloadCallTest.types | 12 +- tests/baselines/reference/overloadCrash.types | 6 +- .../overloadEquivalenceWithStatics.types | 6 +- ...rorMatchesImplementationElaboaration.types | 8 +- .../overloadGenericFunctionWithRestArgs.types | 4 +- .../overloadModifiersMustAgree.types | 10 +- .../overloadOnConstAsTypeAnnotation.types | 8 +- .../overloadOnConstConstraintChecks1.types | 30 +- .../overloadOnConstConstraintChecks2.types | 12 +- .../overloadOnConstConstraintChecks3.types | 12 +- .../overloadOnConstConstraintChecks4.types | 12 +- .../overloadOnConstDuplicateOverloads1.types | 22 +- ...InBaseWithBadImplementationInDerived.types | 16 +- .../overloadOnConstInCallback1.types | 18 +- ...ObjectLiteralImplementingAnInterface.types | 24 +- .../overloadOnConstInheritance1.types | 12 +- .../overloadOnConstInheritance2.types | 10 +- .../overloadOnConstInheritance3.types | 10 +- .../overloadOnConstInheritance4.types | 22 +- .../overloadOnConstNoAnyImplementation.types | 48 +- ...loadOnConstNoAnyImplementation2.errors.txt | 4 +- .../overloadOnConstNoAnyImplementation2.types | 56 +- ...loadOnConstNoNonSpecializedSignature.types | 6 +- ...verloadOnConstNoStringImplementation.types | 48 +- ...dOnConstNoStringImplementation2.errors.txt | 4 +- ...erloadOnConstNoStringImplementation2.types | 56 +- .../overloadOnConstantsInvalidOverload1.types | 6 +- .../reference/overloadOnGenericArity.types | 4 +- ...loadOnGenericClassAndNonGenericClass.types | 8 +- .../reference/overloadResolution.types | 96 +- .../overloadResolutionClassConstructors.types | 14 +- .../overloadResolutionConstructors.types | 12 +- .../overloadResolutionOverCTLambda.types | 8 +- .../overloadResolutionOverNonCTLambdas.types | 24 +- ...overloadResolutionOverNonCTObjectLit.types | 8 +- .../reference/overloadResolutionTest1.types | 34 +- .../reference/overloadResolutionWithAny.types | 18 +- tests/baselines/reference/overloadRet.types | 16 +- .../reference/overloadReturnTypes.types | 14 +- tests/baselines/reference/overloadTag1.types | 14 +- tests/baselines/reference/overloadTag3.types | 2 +- ...lbacksWithDifferingOptionalityOnArgs.types | 18 +- ...structorFixesInferencesAppropriately.types | 10 +- ...overloadedStaticMethodSpecialization.types | 6 +- .../reference/overloadingOnConstants1.types | 46 +- .../reference/overloadingOnConstants2.types | 24 +- ...erloadingOnConstantsInImplementation.types | 10 +- ...lutionWithConstraintCheckingDeferred.types | 24 +- .../overloadsAndTypeArgumentArity.types | 12 +- .../overloadsAndTypeArgumentArityErrors.types | 14 +- .../overloadsWithComputedNames.types | 12 +- .../reference/overloadsWithConstraints.types | 6 +- .../overloadsWithProvisionalErrors.types | 16 +- .../reference/overloadsWithinClasses.types | 6 +- tests/baselines/reference/override1.types | 18 +- tests/baselines/reference/override19.types | 6 +- tests/baselines/reference/override2.types | 22 +- tests/baselines/reference/override4.types | 8 +- .../overrideBaseIntersectionMethod.types | 12 +- .../reference/overrideParameterProperty.types | 2 +- tests/baselines/reference/override_js1.types | 14 +- tests/baselines/reference/override_js2.types | 14 +- tests/baselines/reference/override_js3.types | 8 +- ...paramTagBracketsAddOptionalUndefined.types | 8 +- .../paramTagNestedWithoutTopLevelObject.types | 2 +- ...paramTagNestedWithoutTopLevelObject2.types | 2 +- ...paramTagNestedWithoutTopLevelObject3.types | 2 +- ...paramTagNestedWithoutTopLevelObject4.types | 2 +- .../reference/paramTagOnCallExpression.types | 6 +- .../paramTagOnFunctionUsingArguments.types | 2 +- .../reference/paramTagTypeResolution.types | 22 +- .../reference/paramTagTypeResolution2.types | 14 +- .../reference/paramTagWrapping.types | 8 +- .../parameterDestructuringObjectLiteral.types | 12 +- ...erInitializerBeforeDestructuringEmit.types | 2 +- ...ameterInitializersForwardReferencing.types | 28 +- ...meterInitializersForwardReferencing1.types | 22 +- ...rInitializersForwardReferencing1_es6.types | 22 +- .../reference/parameterListAsTupleType.types | 10 +- .../parameterNamesInTypeParameterList.types | 12 +- ...erPropertyInConstructorWithPrologues.types | 24 +- .../parameterPropertyOutsideConstructor.types | 2 +- .../parameterReferenceInInitializer1.types | 8 +- .../parameterReferenceInInitializer2.types | 6 +- .../parametersWithNoAnnotationAreAny.types | 42 +- ...TypesWhenAppropriatelyContextualized.types | 24 +- ...hesisDoesNotBlockAliasSymbolCreation.types | 8 +- .../parenthesizedArrowExpressionASI.types | 4 +- .../parenthesizedAsyncArrowFunction.types | 6 +- .../parenthesizedContexualTyping1.types | 192 +- .../parenthesizedContexualTyping2.types | 310 ++-- .../parenthesizedContexualTyping3.types | 86 +- ...enthesizedJSDocCastAtReturnStatement.types | 8 +- .../reference/parenthesizedTypes.types | 18 +- ...eArrowFunctionWithFunctionReturnType.types | 2 +- tests/baselines/reference/parseBigInt.types | 36 +- ...eclarationInStrictModeByDefaultInES6.types | 4 +- .../parseErrorIncorrectReturnToken.types | 16 +- ...parseGenericArrowRatherThanLeftShift.types | 4 +- .../parseInvalidNonNullableTypes.types | 12 +- .../reference/parseInvalidNullableTypes.types | 12 +- .../baselines/reference/parseShortform.types | 2 +- tests/baselines/reference/parseTypes.types | 26 +- ....asyncGenerators.classMethods.es2018.types | 14 +- ...nerators.functionDeclarations.es2018.types | 12 +- ...enerators.functionExpressions.es2018.types | 54 +- ...nerators.objectLiteralMethods.es2018.types | 34 +- .../reference/parser15.4.4.14-9-2.types | 20 +- tests/baselines/reference/parser509534.types | 6 +- tests/baselines/reference/parser536727.types | 30 +- tests/baselines/reference/parser553699.types | 2 +- tests/baselines/reference/parser630933.types | 4 +- .../reference/parserArgumentList1.types | 8 +- .../parserArrowFunctionExpression1.types | 4 +- .../parserArrowFunctionExpression10.types | 12 +- .../parserArrowFunctionExpression11.types | 4 +- .../parserArrowFunctionExpression12.types | 12 +- .../parserArrowFunctionExpression14.types | 4 +- .../parserArrowFunctionExpression15.types | 8 +- .../parserArrowFunctionExpression16.types | 12 +- .../parserArrowFunctionExpression17.types | 4 +- .../parserArrowFunctionExpression6.types | 2 +- .../parserArrowFunctionExpression8.types | 12 +- .../parserArrowFunctionExpression9.types | 4 +- .../parserCastVersusArrowFunction1.types | 8 +- tests/baselines/reference/parserClass1.types | 2 +- .../parserComputedPropertyName3.types | 2 +- .../parserES5ComputedPropertyName3.types | 2 +- ...arserEqualsGreaterThanAfterFunction2.types | 2 +- ...rrantEqualsGreaterThanAfterFunction2.types | 2 +- .../parserErrantSemicolonInClass1.types | 6 +- ...orRecovery_IncompleteMemberVariable1.types | 4 +- ...orRecovery_IncompleteMemberVariable2.types | 4 +- .../parserErrorRecovery_ParameterList1.types | 2 +- .../parserErrorRecovery_ParameterList2.types | 2 +- .../parserErrorRecovery_ParameterList4.types | 2 +- .../parserErrorRecovery_ParameterList5.types | 2 +- .../parserErrorRecovery_ParameterList6.types | 2 +- .../reference/parserForInStatement8.types | 8 +- .../reference/parserForOfStatement23.types | 2 +- .../reference/parserForOfStatement25.types | 8 +- .../reference/parserForStatement9.types | 8 +- .../parserGenericsInTypeContexts1.types | 2 +- .../parserGenericsInTypeContexts2.types | 2 +- .../reference/parserInExpression1.types | 4 +- .../parserMissingLambdaOpenBrace1.types | 6 +- tests/baselines/reference/parserModule1.types | 16 +- .../reference/parserModuleDeclaration11.types | 6 +- .../reference/parserNotHexLiteral1.types | 8 +- .../parserOptionalTypeMembers1.types | 2 +- .../parserOverloadOnConstants1.types | 14 +- .../reference/parserParameterList1.types | 2 +- .../reference/parserParameterList10.types | 2 +- .../reference/parserParameterList11.types | 2 +- .../reference/parserParameterList12.types | 2 +- .../reference/parserParameterList14.types | 2 +- .../reference/parserParameterList15.types | 4 +- .../reference/parserParameterList16.types | 4 +- .../reference/parserParameterList2.types | 2 +- .../reference/parserParameterList3.types | 2 +- .../reference/parserParameterList4.types | 2 +- .../reference/parserParameterList6.types | 2 +- .../reference/parserParameterList9.types | 2 +- .../reference/parserRealSource1.types | 58 +- .../reference/parserRealSource10.types | 234 +-- .../reference/parserRealSource11.types | 342 ++-- .../reference/parserRealSource12.types | 992 +++++------ .../reference/parserRealSource13.types | 242 +-- .../reference/parserRealSource14.types | 104 +- .../reference/parserRealSource2.types | 14 +- .../reference/parserRealSource4.types | 172 +- .../reference/parserRealSource5.types | 12 +- .../reference/parserRealSource6.types | 12 +- .../reference/parserRealSource7.types | 78 +- .../reference/parserRealSource8.types | 82 +- .../reference/parserRealSource9.types | 76 +- .../reference/parserRegularExpression4.types | 18 +- .../reference/parserRegularExpression5.types | 4 +- ...serRegularExpressionDivideAmbiguity6.types | 2 +- .../reference/parserS12.11_A3_T4.types | 4 +- .../reference/parserS7.2_A1.5_T2.types | 2 +- .../parserShorthandPropertyAssignment1.types | 4 +- .../reference/parserSkippedTokens16.types | 2 +- ...mentIsNotAMemberVariableDeclaration1.types | 6 +- .../reference/parserStrictMode10.types | 2 +- .../reference/parserStrictMode11.types | 6 +- .../reference/parserStrictMode8.types | 2 +- .../reference/parserStrictMode9.types | 2 +- .../reference/parserUnaryExpression2.types | 2 +- .../parserUnterminatedGeneric1.types | 2 +- .../parserUnterminatedGeneric2.types | 4 +- .../parserUsingConstructorAsIdentifier.types | 20 +- .../parserVariableDeclaration2.types | 4 +- .../reference/parserX_ArrowFunction1.types | 4 +- .../reference/parserX_ArrowFunction4.types | 4 +- ...ser_continueNotInIterationStatement4.types | 2 +- tests/baselines/reference/parserharness.types | 1178 ++++++------- .../baselines/reference/parserindenter.types | 200 +-- .../parsingDeepParenthensizedExpression.types | 4 +- ...DiscriminatedUnionMemberHasGoodError.types | 4 +- ...artialOfLargeAPIIsAbleToBeWorkedWith.types | 108 +- .../partialTypeNarrowedToByTypeGuard.types | 6 +- ...iallyAnnotatedFunctionInferenceError.types | 16 +- ...edFunctionInferenceWithTypeParameter.types | 50 +- ...AnnotatedFunctionWitoutTypeParameter.types | 12 +- .../partiallyDiscriminantedUnions.types | 10 +- .../reference/partiallyNamedTuples.types | 10 +- .../reference/partiallyNamedTuples2.types | 6 +- ...appingBasedModuleResolution3_classic.types | 8 +- ...thMappingBasedModuleResolution3_node.types | 8 +- ...appingBasedModuleResolution4_classic.types | 8 +- ...thMappingBasedModuleResolution4_node.types | 8 +- ...appingBasedModuleResolution5_classic.types | 26 +- ...thMappingBasedModuleResolution5_node.types | 26 +- ...appingBasedModuleResolution6_classic.types | 8 +- ...thMappingBasedModuleResolution6_node.types | 8 +- ...appingBasedModuleResolution7_classic.types | 14 +- ...thMappingBasedModuleResolution7_node.types | 14 +- ...ort_aliasWithRoot_differentRootTypes.types | 36 +- ...ticalInterfacesWithGenericSignatures.types | 20 +- .../reference/plainJSBinderErrors.types | 4 +- .../reference/plainJSGrammarErrors.types | 66 +- .../reference/plainJSRedeclare.types | 4 +- .../reference/plainJSRedeclare2.types | 4 +- .../reference/plainJSRedeclare3.types | 4 +- .../plusOperatorWithAnyOtherType.types | 26 +- .../plusOperatorWithNumberType.types | 6 +- .../plusOperatorWithStringType.types | 10 +- .../potentiallyUncalledDecorators.types | 50 +- .../reference/primitiveConstraints1.types | 8 +- .../reference/primitiveConstraints2.types | 10 +- .../reference/primitiveMembers.types | 6 +- .../reference/primitiveUnionDetection.types | 6 +- .../reference/primtiveTypesAreIdentical.types | 48 +- ...ivacyCheckAnonymousFunctionParameter.types | 8 +- ...vacyCheckAnonymousFunctionParameter2.types | 10 +- ...ckOfInterfaceMethodWithTypeParameter.types | 4 +- ...meterReferenceInConstructorParameter.types | 2 +- .../privacyCheckTypeOfFunction.types | 2 +- tests/baselines/reference/privacyFunc.types | 30 +- ...ctionCannotNameParameterTypeDeclFile.types | 64 +- .../privacyFunctionParameterDeclFile.types | 394 ++--- .../baselines/reference/privacyGloFunc.types | 72 +- .../reference/privacyGloImport.types | 8 +- .../privacyGloImportParseErrors.types | 8 +- .../reference/privacyGloInterface.types | 10 +- tests/baselines/reference/privacyImport.types | 24 +- .../reference/privacyImportParseErrors.types | 24 +- .../reference/privacyInterface.types | 24 +- .../privacyTypeParametersOfClass.types | 12 +- ...privacyTypeParametersOfClassDeclFile.types | 44 +- .../privacyTypeParametersOfInterface.types | 12 +- ...acyTypeParametersOfInterfaceDeclFile.types | 36 +- ...sPropertyAccessibleWithinNestedClass.types | 12 +- .../reference/privateInstanceVisibility.types | 2 +- .../reference/privateNameAccessors.types | 8 +- .../privateNameAccessorsAccess.types | 4 +- .../privateNameAccessorsCallExpression.types | 14 +- .../privateNameAccessorssDerivedClasses.types | 12 +- .../reference/privateNameAndAny.types | 6 +- .../privateNameAndObjectRestSpread.types | 2 +- .../privateNameClassExpressionLoop.types | 4 +- ...ComputedPropertyName1(target=es2015).types | 8 +- ...ComputedPropertyName1(target=es2022).types | 8 +- ...ComputedPropertyName1(target=esnext).types | 8 +- ...ComputedPropertyName2(target=es2015).types | 14 +- ...ComputedPropertyName2(target=es2022).types | 14 +- ...ComputedPropertyName2(target=esnext).types | 14 +- ...ComputedPropertyName3(target=es2015).types | 10 +- ...ComputedPropertyName3(target=es2022).types | 10 +- ...ComputedPropertyName3(target=esnext).types | 10 +- .../reference/privateNameEmitHelpers.types | 4 +- .../reference/privateNameFieldAccess.types | 4 +- .../privateNameFieldCallExpression.types | 16 +- .../privateNameFieldClassExpression.types | 4 +- .../privateNameFieldDerivedClasses.types | 12 +- ...ldDestructuredBinding(target=es2015).types | 2 +- ...ldDestructuredBinding(target=es2022).types | 2 +- ...ldDestructuredBinding(target=esnext).types | 2 +- ...teNameFieldParenthesisLeftAssignment.types | 8 +- ...ivateNameFieldsESNext(target=es2022).types | 18 +- ...ivateNameFieldsESNext(target=esnext).types | 18 +- ...ateNameInInExpression(target=es2022).types | 12 +- ...ateNameInInExpression(target=esnext).types | 12 +- ...InExpressionTransform(target=es2020).types | 10 +- ...InExpressionTransform(target=es2022).types | 10 +- ...InExpressionTransform(target=esnext).types | 10 +- ...eInInExpressionUnused(target=es2022).types | 2 +- ...eInInExpressionUnused(target=esnext).types | 2 +- .../privateNameInLhsReceiverExpression.types | 2 +- .../baselines/reference/privateNameJsx.types | 2 +- .../reference/privateNameMethod.types | 8 +- .../reference/privateNameMethodAccess.types | 4 +- .../privateNameMethodAssignment.types | 6 +- .../reference/privateNameMethodAsync.types | 24 +- .../privateNameMethodCallExpression.types | 20 +- .../privateNameMethodClassExpression.types | 4 +- .../privateNameMethodInStaticFieldInit.types | 4 +- .../privateNameMethodsDerivedClasses.types | 12 +- ...ateNameNestedClassAccessorsShadowing.types | 12 +- ...privateNameNestedClassFieldShadowing.types | 12 +- ...rivateNameNestedClassMethodShadowing.types | 12 +- .../privateNameNestedMethodAccess.types | 2 +- .../reference/privateNameReadonly.types | 8 +- .../privateNameSetterExprReturnValue.types | 4 +- .../reference/privateNameSetterNoGetter.types | 4 +- .../privateNameStaticAccessors.types | 8 +- .../privateNameStaticAccessorsAccess.types | 4 +- ...ateNameStaticAccessorsCallExpression.types | 14 +- ...teNameStaticAccessorssDerivedClasses.types | 12 +- .../privateNameStaticEmitHelpers.types | 4 +- .../privateNameStaticFieldAccess.types | 8 +- ...privateNameStaticFieldCallExpression.types | 16 +- ...rivateNameStaticFieldClassExpression.types | 8 +- ...privateNameStaticFieldDerivedClasses.types | 4 +- ...ldDestructuredBinding(target=es2015).types | 2 +- ...ldDestructuredBinding(target=es2022).types | 2 +- ...ldDestructuredBinding(target=esnext).types | 2 +- .../reference/privateNameStaticMethod.types | 8 +- .../privateNameStaticMethodAssignment.types | 6 +- .../privateNameStaticMethodAsync.types | 16 +- ...rivateNameStaticMethodCallExpression.types | 20 +- ...ivateNameStaticMethodClassExpression.types | 4 +- ...ateNameStaticMethodInStaticFieldInit.types | 4 +- ...aticsAndStaticMethods(target=es2022).types | 16 +- ...aticsAndStaticMethods(target=esnext).types | 16 +- .../reference/privateNameUnused.types | 12 +- .../reference/privateNamesAndDecorators.types | 6 +- ...rivateNamesAndMethods(target=es2022).types | 16 +- ...rivateNamesAndMethods(target=esnext).types | 16 +- ...NamesAndStaticMethods(target=es2022).types | 16 +- ...NamesAndStaticMethods(target=esnext).types | 16 +- ...privateNamesAssertion(target=es2022).types | 14 +- ...privateNamesAssertion(target=esnext).types | 14 +- .../privateNamesInGenericClasses.types | 18 +- .../privateNamesInNestedClasses-1.types | 18 +- .../privateNamesInterfaceExtendingClass.types | 4 +- .../privateNamesNotAllowedAsParameters.types | 2 +- .../reference/privateNamesUnique-2.types | 10 +- .../reference/privateNamesUnique-3.types | 2 +- .../privatePropertyUsingObjectType.types | 4 +- ...MembersAreNotAccessibleDestructuring.types | 2 +- .../privateStaticMemberAccessibility.types | 2 +- .../privateWriteOnlyAccessorRead.types | 14 +- .../reference/promiseAllOnAny01.types | 6 +- .../baselines/reference/promiseChaining.types | 24 +- .../reference/promiseChaining1.types | 24 +- .../reference/promiseChaining2.types | 24 +- .../baselines/reference/promiseIdentity.types | 16 +- .../reference/promiseIdentity2.types | 8 +- .../reference/promiseIdentityWithAny.types | 8 +- .../reference/promiseIdentityWithAny2.types | 16 +- .../promiseIdentityWithConstraints.types | 8 +- .../reference/promisePermutations.types | 1164 ++++++------- .../reference/promisePermutations2.types | 1134 ++++++------ .../reference/promisePermutations3.types | 1140 ++++++------ tests/baselines/reference/promiseTest.types | 18 +- tests/baselines/reference/promiseType.types | 692 ++++---- .../reference/promiseTypeInference.types | 22 +- .../reference/promiseTypeStrictNull.types | 672 +++---- .../reference/promiseVoidErrorCallback.types | 22 +- .../reference/promiseWithResolvers.types | 4 +- tests/baselines/reference/promises.types | 12 +- .../reference/promisesWithConstraints.types | 10 +- .../propTypeValidatorInference.types | 44 +- .../propagateNonInferrableType.types | 4 +- .../propagationOfPromiseInitialization.types | 18 +- .../baselines/reference/propertyAccess.types | 12 +- .../reference/propertyAccessChain.types | 8 +- .../propertyAccessNumericLiterals.es6.types | 20 +- .../propertyAccessNumericLiterals.types | 52 +- ...AccessOnTypeParameterWithConstraints.types | 14 +- ...ccessOnTypeParameterWithConstraints2.types | 30 +- ...ccessOnTypeParameterWithConstraints3.types | 30 +- ...ccessOnTypeParameterWithConstraints4.types | 6 +- ...ccessOnTypeParameterWithConstraints5.types | 6 +- ...essOnTypeParameterWithoutConstraints.types | 20 +- .../reference/propertyAccessWidening.types | 16 +- .../propertyAndFunctionWithSameName.types | 2 +- .../propertyAssignmentUseParentType1.types | 2 +- .../propertyOverridesAccessors2.types | 8 +- .../propertyOverridesAccessors3.types | 4 +- .../reference/propertyOverridesMethod.types | 2 +- ...sPropertyAccessibleWithinNestedClass.types | 12 +- ...opertyAccessibleWithinNestedSubclass.types | 8 +- .../reference/protectedMembers.types | 2 +- .../protectedMembersThisParameter.types | 28 +- .../protoAsIndexInIndexExpression.types | 4 +- .../baselines/reference/protoAssignment.types | 10 +- .../prototypeOnConstructorFunctions.types | 6 +- ...tyAssignmentMergeWithInterfaceMethod.types | 10 +- ...tterProtectedSetterFromThisParameter.types | 4 +- tests/baselines/reference/qualify.types | 2 +- ...tersectionCheckCorrectlyCachesErrors.types | 6 +- ...kinfoTypeAtReturnPositionsInaccurate.types | 22 +- .../reference/quotedConstructors.types | 20 +- .../reference/quotedPropertyName3.types | 2 +- .../reference/ramdaToolsNoInfinite2.types | 4 +- .../reference/reExportUndefined2.types | 4 +- .../reachabilityCheckWithEmptyDefault.types | 6 +- .../reference/reachabilityChecks1.types | 2 +- .../reference/reachabilityChecks3.types | 2 +- .../reference/reachabilityChecks4.types | 6 +- .../reference/reachabilityChecks5.types | 26 +- .../reference/reachabilityChecks6.types | 26 +- .../reference/reachabilityChecks7.types | 12 +- .../reactDefaultPropsInferenceSuccess.types | 64 +- .../reference/reactHOCSpreadprops.types | 2 +- .../reference/reactImportDropped.types | 6 +- .../reactReadonlyHOCAssignabilityReal.types | 2 +- ...ikeDeferredInferenceAllowsAssignment.types | 44 +- .../reactSFCAndFunctionResolvable.types | 18 +- ...tTransitiveImportHasValidDeclaration.types | 10 +- .../reference/readonlyArraysAndTuples.types | 2 +- .../reference/readonlyArraysAndTuples2.types | 2 +- ...oat32ArrayAssignableWithFloat32Array.types | 10 +- .../reference/readonlyInAmbientClass.types | 2 +- .../readonlyInNonPropertyParameters.types | 6 +- .../baselines/reference/readonlyMembers.types | 2 +- ...donlyPropertySubtypeRelationDirected.types | 16 +- .../reference/readonlyRestParameters.types | 26 +- .../readonlyTupleAndArrayElaboration.types | 30 +- tests/baselines/reference/rectype.types | 30 +- .../reference/recursiveArrayNotCircular.types | 12 +- .../recursiveBaseConstructorCreation1.types | 2 +- .../reference/recursiveClassBaseType.types | 8 +- .../recursiveClassReferenceTest.types | 24 +- .../recursiveComplicatedClasses.types | 4 +- .../recursiveConditionalCrash1.types | 4 +- .../recursiveConditionalCrash2.types | 2 +- .../recursiveConditionalCrash3.types | 4 +- .../reference/recursiveConditionalTypes.types | 48 +- .../recursiveConditionalTypes2.types | 16 +- .../recursiveExcessPropertyChecks.types | 4 +- .../reference/recursiveFunctionTypes.types | 76 +- .../reference/recursiveFunctionTypes1.types | 8 +- .../recursiveGenericMethodCall.types | 4 +- ...cursiveGenericSignatureInstantiation.types | 4 +- ...recursiveIdenticalOverloadResolution.types | 30 +- .../reference/recursiveInference1.types | 8 +- .../reference/recursiveInferenceBug.types | 8 +- .../reference/recursiveInheritance3.types | 4 +- .../reference/recursiveInitializer.types | 6 +- .../reference/recursiveLetConst.types | 4 +- .../reference/recursiveMappedTypes.types | 2 +- .../reference/recursiveNamedLambdaCall.types | 4 +- .../reference/recursiveReturns.types | 4 +- .../recursiveReverseMappedType.types | 6 +- .../recursiveSpecializationOfSignatures.types | 2 +- .../recursiveTupleTypeInference.types | 4 +- ...thSpreadConditionalReturnNotCircular.types | 18 +- .../reference/recursiveTypeComparison2.types | 30 +- ...ecursiveTypeParameterReferenceError1.types | 2 +- .../reference/recursiveTypeReferences1.types | 110 +- .../reference/recursiveTypeRelations.types | 20 +- ...cursiveTypesUsedAsFunctionParameters.types | 32 +- .../reference/recursiveTypesWithTypeof.types | 98 +- .../recursiveUnionTypeInference.types | 6 +- .../redeclarationOfVarWithGenericType.types | 8 +- tests/baselines/reference/redefineArray.types | 4 +- .../reducibleIndexedAccessTypes.types | 10 +- ...eexportWrittenCorrectlyInDeclaration.types | 4 +- ...ferenceTypesPreferedToPathIfPossible.types | 2 +- .../regExpWithSlashInCharClass.types | 12 +- .../reference/regexMatchAll-esnext.types | 2 +- tests/baselines/reference/regexMatchAll.types | 2 +- ...ExecAndMatchTypeUsages(strict=false).types | 2 +- ...pExecAndMatchTypeUsages(strict=true).types | 2 +- .../reference/relationComplexityError.types | 4 +- .../relationalOperatorComparable.types | 2 +- .../relativePathToDeclarationFile.types | 4 +- ...ngDestructuredPropertyInFunctionType.types | 54 +- ...gDestructuredPropertyInFunctionType2.types | 4 +- ...gDestructuredPropertyInFunctionType3.types | 6 +- .../requireAsFunctionInExternalModule.types | 12 +- .../requireAssertsFromTypescript.types | 16 +- .../reference/requireEmitSemicolon.types | 2 +- .../requireOfESWithPropertyAccess.types | 2 +- .../reference/requireOfJsonFileInJsFile.types | 4 +- ...reOfJsonFileWithComputedPropertyName.types | 4 +- .../requireOfJsonFileWithEmptyObject.types | 4 +- .../requireTwoPropertyAccesses.types | 6 +- .../requiredInitializedParameter1.types | 32 +- .../requiredInitializedParameter2.types | 2 +- .../requiredInitializedParameter3.types | 2 +- .../requiredInitializedParameter4.types | 2 +- ...iredMappedTypeModifierTrumpsVariance.types | 12 +- .../baselines/reference/reservedWords2.types | 2 +- ...oduleNameWithSameLetDeclarationName2.types | 4 +- .../reference/resolveNameWithNamspace.types | 6 +- .../reference/restArgAssignmentCompat.types | 22 +- .../restElementWithNullInitializer.types | 8 +- .../restElementWithNumberPropertyName.types | 2 +- .../reference/restInvalidArgumentType.types | 4 +- .../reference/restParamAsOptional.types | 4 +- ...amUsingMappedTypeOverUnionConstraint.types | 4 +- ...restParameterAssignmentCompatibility.types | 6 +- .../restParameterInDownlevelGenerator.types | 2 +- .../restParameterNoTypeAnnotation.types | 2 +- .../reference/restParameterNotLast.types | 2 +- .../restParameterTypeInstantiation.types | 6 +- .../restParameterWithBindingPattern1.types | 2 +- .../restParameterWithBindingPattern3.types | 6 +- ...ParameterWithoutAnnotationIsAnyArray.types | 36 +- .../baselines/reference/restParameters.types | 8 +- .../restParametersOfNonArrayTypes.types | 36 +- .../restParametersOfNonArrayTypes2.types | 72 +- ...stParametersWithArrayTypeAnnotations.types | 72 +- .../restParamsWithNonRestParams.types | 12 +- .../restPropertyWithBindingPattern.types | 4 +- .../reference/restTupleElements1.types | 44 +- .../restTuplesFromContextualTypes.types | 252 +-- .../reference/restTypeRetainsMappyness.types | 6 +- .../returnInfiniteIntersection.types | 24 +- .../reference/returnStatement1.types | 4 +- .../reference/returnTagTypeGuard.types | 22 +- .../returnTypeInferenceNotTooBroad.types | 18 +- .../reference/returnTypeParameter.types | 4 +- .../returnTypeParameterWithModules.types | 28 +- ...dicateIsInstantiateInContextOfTarget.types | 16 +- ...seInferenceInContextualInstantiation.types | 8 +- .../reverseMappedContravariantInference.types | 14 +- ...reverseMappedPartiallyInferableTypes.types | 90 +- .../reference/reverseMappedTupleContext.types | 22 +- ...eMappedTypeContextualTypeNotCircular.types | 14 +- ...tualTypesPerElementOfTupleConstraint.types | 22 +- ...reverseMappedTypeDeepDeclarationEmit.types | 10 +- ...erseMappedTypeIntersectionConstraint.types | 74 +- .../reverseMappedTypeLimitedConstraint.types | 18 +- ...appedTypePrimitiveConstraintProperty.types | 6 +- .../reverseMappedUnionInference.types | 52 +- .../reference/scannerS7.2_A1.5_T2.types | 2 +- tests/baselines/reference/scannertest1.types | 6 +- .../scopeCheckStaticInitializer.types | 4 +- .../baselines/reference/selfInCallback.types | 6 +- tests/baselines/reference/selfInLambdas.types | 16 +- .../selfNameModuleAugmentation.types | 4 +- tests/baselines/reference/selfRef.types | 6 +- tests/baselines/reference/selfReference.types | 4 +- .../selfReferencesInFunctionParameters.types | 6 +- .../selfReferentialFunctionType.types | 8 +- ...servedCompilerDeclarationsWithNoEmit.types | 2 +- .../reference/shebangBeforeReferences.types | 4 +- ...orthandPropertyAssignmentInES6Module.types | 6 +- ...ndPropertyAssignmentsInDestructuring.types | 6 +- ...opertyAssignmentsInDestructuring_ES6.types | 6 +- ...sigantureIsSubTypeIfTheyAreIdentical.types | 4 +- .../signatureHelpJSDocCallbackTag.baseline | 18 +- ...natureHelpJSMissingPropertyAccess.baseline | 2 +- ...nstantiationWithRecursiveConstraints.types | 4 +- .../signatureLengthMismatchCall.types | 8 +- .../signatureLengthMismatchInOverload.types | 14 +- ...LengthMismatchWithOptionalParameters.types | 12 +- ...naturesUseJSDocForOptionalParameters.types | 12 +- .../reference/silentNeverPropagation.types | 22 +- ...nParameterReferencedInObjectLiteral1.types | 10 +- .../simpleRecursionWithBaseCase1.types | 18 +- ...onalWithInteriorConditionalIsRelated.types | 2 +- .../baselines/reference/sliceResultCast.types | 4 +- .../sourceFileMergeWithFunction.types | 4 +- .../reference/sourceMap-Comments2.types | 8 +- .../sourceMap-FileWithComments.types | 4 +- .../baselines/reference/sourceMapSample.types | 10 +- ...tConstructorAndCapturedThisStatement.types | 2 +- .../sourceMapValidationClasses.types | 10 +- .../sourceMapValidationDecorators.types | 68 +- ...nDestructuringForArrayBindingPattern.types | 148 +- ...DestructuringForArrayBindingPattern2.types | 148 +- ...gForArrayBindingPatternDefaultValues.types | 130 +- ...ForArrayBindingPatternDefaultValues2.types | 130 +- ...DestructuringForObjectBindingPattern.types | 76 +- ...estructuringForObjectBindingPattern2.types | 148 +- ...ForObjectBindingPatternDefaultValues.types | 76 +- ...orObjectBindingPatternDefaultValues2.types | 148 +- ...estructuringForOfArrayBindingPattern.types | 148 +- ...structuringForOfArrayBindingPattern2.types | 148 +- ...orOfArrayBindingPatternDefaultValues.types | 130 +- ...rOfArrayBindingPatternDefaultValues2.types | 130 +- ...structuringForOfObjectBindingPattern.types | 76 +- ...tructuringForOfObjectBindingPattern2.types | 148 +- ...rOfObjectBindingPatternDefaultValues.types | 76 +- ...OfObjectBindingPatternDefaultValues2.types | 148 +- ...gParameterNestedObjectBindingPattern.types | 40 +- ...tedObjectBindingPatternDefaultValues.types | 40 +- ...cturingParameterObjectBindingPattern.types | 40 +- ...terObjectBindingPatternDefaultValues.types | 40 +- ...cturingParametertArrayBindingPattern.types | 52 +- ...turingParametertArrayBindingPattern2.types | 52 +- ...tertArrayBindingPatternDefaultValues.types | 52 +- ...ertArrayBindingPatternDefaultValues2.types | 40 +- ...dationDestructuringVariableStatement.types | 16 +- ...ationDestructuringVariableStatement1.types | 16 +- ...VariableStatementArrayBindingPattern.types | 10 +- ...ariableStatementArrayBindingPattern2.types | 10 +- ...ariableStatementArrayBindingPattern3.types | 10 +- ...mentArrayBindingPatternDefaultValues.types | 10 +- ...entArrayBindingPatternDefaultValues2.types | 10 +- ...entArrayBindingPatternDefaultValues3.types | 10 +- ...turingVariableStatementDefaultValues.types | 16 +- ...eStatementNestedObjectBindingPattern.types | 16 +- ...bjectBindingPatternWithDefaultValues.types | 16 +- .../reference/sourceMapValidationFor.types | 12 +- .../reference/sourceMapValidationForIn.types | 24 +- ...urceMapValidationFunctionExpressions.types | 8 +- .../sourceMapValidationFunctions.types | 6 +- ...alidationLambdaSpanningMultipleLines.types | 4 +- .../sourceMapValidationStatements.types | 4 +- ...rceMapWithMultipleFilesWithCopyright.types | 2 +- ...ipleFilesWithFileEndingWithInterface.types | 8 +- .../reference/specedNoStackBlown.types | 4 +- .../reference/specializationError.types | 10 +- ...cializationsShouldNotAffectEachOther.types | 16 +- .../reference/specializeVarArgs1.types | 6 +- ...pecializedOverloadWithRestParameters.types | 16 +- ...edSignatureAsCallbackParameter1.errors.txt | 4 +- ...ializedSignatureAsCallbackParameter1.types | 24 +- ...sNotSubtypeOfNonSpecializedSignature.types | 78 +- ...reIsSubtypeOfNonSpecializedSignature.types | 96 +- ...natureOverloadReturnTypeWithIndexers.types | 16 +- .../specializedSignatureWithOptional.types | 4 +- .../spellingSuggestionJSXAttribute.types | 6 +- .../reference/spellingUncheckedJS.types | 4 +- .../spreadBooleanRespectsFreshness.types | 4 +- .../spreadExpressionContextualType.types | 4 +- ...xpressionContextualTypeWithNamespace.types | 2 +- .../spreadIdenticalTypesRemoved.types | 4 +- .../reference/spreadInvalidArgumentType.types | 10 +- .../reference/spreadObjectOrFalsy.types | 22 +- ...ramsFromGeneratorMakesRequiredParams.types | 8 +- .../reference/spreadOverwritesProperty.types | 4 +- .../spreadOverwritesPropertyStrict.types | 14 +- .../spreadTupleAccessedByTypeParameter.types | 2 +- .../reference/spreadTypeVariable.types | 12 +- tests/baselines/reference/spreadUnion3.types | 18 +- tests/baselines/reference/spreadUnion4.types | 2 +- .../spreadsAndContextualTupleTypes.types | 38 +- .../spuriousCircularityOnTypeImport.types | 4 +- .../reference/spyComparisonChecking.types | 8 +- .../stackDepthLimitCastingType.types | 12 +- ...ymousTypeNotReferencingTypeParameter.types | 184 +- .../staticFieldWithInterfaceContext.types | 2 +- .../reference/staticIndexSignature6.types | 6 +- .../reference/staticInheritance.types | 10 +- .../reference/staticInstanceResolution.types | 2 +- .../reference/staticInstanceResolution2.types | 8 +- .../reference/staticInstanceResolution3.types | 6 +- .../reference/staticInstanceResolution5.types | 12 +- ...rAssignsToConstructorFunctionMembers.types | 22 +- ...staticMembersUsingClassTypeParameter.types | 6 +- ...ethodsReferencingClassTypeParameters.types | 2 +- tests/baselines/reference/statics.types | 14 +- .../reference/strictBindCallApply1.types | 392 ++--- .../reference/strictBindCallApply2.types | 12 +- .../reference/strictFunctionTypes1.types | 116 +- .../reference/strictFunctionTypesErrors.types | 162 +- .../reference/strictModeReservedWord.types | 16 +- .../reference/strictModeReservedWord2.types | 2 +- ...ctModeReservedWordInClassDeclaration.types | 6 +- .../strictModeUseContextualKeyword.types | 2 +- .../strictNullChecksNoWidening.types | 8 +- .../reference/strictNullLogicalAndOr.types | 22 +- .../reference/strictOptionalProperties1.types | 70 +- .../reference/strictSubtypeAndNarrowing.types | 116 +- .../strictTypeofUnionNarrowing.types | 8 +- .../reference/stringEnumLiteralTypes1.types | 40 +- .../reference/stringEnumLiteralTypes2.types | 40 +- .../reference/stringEnumLiteralTypes3.types | 22 +- .../baselines/reference/stringIncludes.types | 8 +- ...ndexerConstrainsPropertyDeclarations.types | 4 +- .../stringLiteralCheckedInIf01.types | 2 +- .../stringLiteralCheckedInIf02.types | 6 +- .../reference/stringLiteralType.types | 8 +- .../stringLiteralTypeIsSubtypeOfString.types | 154 +- .../stringLiteralTypesAndTuples01.types | 4 +- .../stringLiteralTypesAsTags01.types | 12 +- .../stringLiteralTypesAsTags02.types | 10 +- .../stringLiteralTypesAsTags03.types | 20 +- ...eralTypesAsTypeParameterConstraint01.types | 46 +- ...eralTypesAsTypeParameterConstraint02.types | 16 +- ...teralTypesInImplementationSignatures.types | 72 +- ...eralTypesInImplementationSignatures2.types | 44 +- ...gLiteralTypesOverloadAssignability01.types | 28 +- ...gLiteralTypesOverloadAssignability02.types | 28 +- ...gLiteralTypesOverloadAssignability03.types | 28 +- ...gLiteralTypesOverloadAssignability04.types | 28 +- ...gLiteralTypesOverloadAssignability05.types | 30 +- .../stringLiteralTypesOverloads01.types | 72 +- .../stringLiteralTypesOverloads02.types | 72 +- .../stringLiteralTypesOverloads03.types | 32 +- .../stringLiteralTypesOverloads04.types | 8 +- .../stringLiteralTypesOverloads05.types | 8 +- .../stringLiteralTypesTypePredicates01.types | 10 +- .../stringMappingOverPatternLiterals.types | 10 +- .../reference/stringMappingReduction.types | 20 +- .../baselines/reference/stringMatchAll.types | 4 +- .../reference/stringPropCodeGen.types | 8 +- .../reference/stringPropertyAccess.types | 12 +- .../stringPropertyAccessWithError.types | 2 +- tests/baselines/reference/stringRawType.types | 4 +- ...ty(exactoptionalpropertytypes=false).types | 18 +- ...ity(exactoptionalpropertytypes=true).types | 18 +- tests/baselines/reference/structural1.types | 4 +- ...omponentsInstantiaionLimitNotReached.types | 4 +- .../subclassThisTypeAssignable01.types | 10 +- .../subclassThisTypeAssignable02.types | 10 +- ...stitutionTypeNoMergeOfAssignableType.types | 8 +- ...ubstitutionTypesInIndexedAccessTypes.types | 14 +- .../subtypeReductionUnionConstraints.types | 18 +- .../reference/subtypeRelationForNever.types | 20 +- tests/baselines/reference/subtypesOfAny.types | 4 +- .../reference/subtypesOfTypeParameter.types | 22 +- ...typesOfTypeParameterWithConstraints2.types | 60 +- ...typesOfTypeParameterWithConstraints3.types | 2 +- ...typesOfTypeParameterWithConstraints4.types | 2 +- ...ypeParameterWithRecursiveConstraints.types | 2 +- .../baselines/reference/subtypesOfUnion.types | 8 +- .../subtypingWithCallSignatures.types | 48 +- .../subtypingWithCallSignatures2.types | 750 ++++---- .../subtypingWithCallSignatures3.types | 432 ++--- .../subtypingWithCallSignatures4.types | 366 ++-- .../subtypingWithCallSignaturesA.types | 14 +- ...CallSignaturesWithOptionalParameters.types | 34 +- ...WithCallSignaturesWithRestParameters.types | 60 +- ...lSignaturesWithSpecializedSignatures.types | 26 +- .../subtypingWithConstructSignatures.types | 56 +- .../subtypingWithConstructSignatures2.types | 666 +++---- .../subtypingWithConstructSignatures3.types | 394 ++--- .../subtypingWithConstructSignatures4.types | 326 ++-- .../subtypingWithConstructSignatures5.types | 86 +- .../subtypingWithConstructSignatures6.types | 38 +- ...ructSignaturesWithOptionalParameters.types | 34 +- ...tSignaturesWithSpecializedSignatures.types | 26 +- ...CallSignaturesWithOptionalParameters.types | 102 +- ...ructSignaturesWithOptionalParameters.types | 102 +- ...ubtypingWithObjectMembersOptionality.types | 4 +- ...btypingWithObjectMembersOptionality2.types | 2 +- ...btypingWithObjectMembersOptionality3.types | 2 +- ...btypingWithObjectMembersOptionality4.types | 2 +- .../subtypingWithOptionalProperties.types | 10 +- tests/baselines/reference/superAccess.types | 2 +- tests/baselines/reference/superAccess2.types | 6 +- .../reference/superAccessInFatArrow1.types | 6 +- .../superCallBeforeThisAccessing3.types | 2 +- ...tWithIncorrectNumberOfTypeArguments1.types | 4 +- ...omGenericTypeButWithNoTypeArguments1.types | 4 +- ...sNonGenericTypeButWithTypeArguments1.types | 4 +- ...superCallFromClassThatHasNoBaseType1.types | 4 +- .../reference/superCallFromFunction1.types | 2 +- .../superCallInNonStaticMethod.types | 4 +- .../reference/superCallInStaticMethod.types | 4 +- .../superCallOutsideConstructor.types | 4 +- .../superCallParameterContextualTyping1.types | 8 +- .../superCallParameterContextualTyping2.types | 4 +- .../superCallParameterContextualTyping3.types | 16 +- .../reference/superElementAccess.types | 24 +- tests/baselines/reference/superErrors.types | 12 +- .../baselines/reference/superInLambdas.types | 16 +- .../reference/superInObjectLiterals_ES5.types | 16 +- .../reference/superInObjectLiterals_ES6.types | 16 +- tests/baselines/reference/superNewCall1.types | 4 +- .../reference/superPropertyAccess.types | 32 +- .../superPropertyAccessNoError.types | 2 +- .../reference/superSymbolIndexedAccess1.types | 4 +- .../reference/superSymbolIndexedAccess3.types | 4 +- .../reference/superSymbolIndexedAccess4.types | 4 +- .../reference/superWithTypeArgument3.types | 6 +- ...e-object-literal-getters-and-setters.types | 4 +- .../reference/switchBreakStatements.types | 2 +- .../switchCaseCircularRefeference.types | 2 +- ...ausesEvenWhenNonMatchingClausesExist.types | 12 +- .../switchComparableCompatForBrands.types | 2 +- .../reference/switchFallThroughs.types | 2 +- .../reference/switchStatements.types | 18 +- .../switchWithConstrainedTypeVariable.types | 2 +- .../reference/symbolDeclarationEmit3.types | 6 +- ...symbolLinkDeclarationEmitModuleNames.types | 6 +- ...inkDeclarationEmitModuleNamesRootDir.types | 6 +- .../symbolMergeValueAndImportedType.types | 4 +- .../baselines/reference/symbolProperty1.types | 2 +- .../reference/symbolProperty13.types | 12 +- .../reference/symbolProperty14.types | 12 +- .../reference/symbolProperty15.types | 12 +- .../reference/symbolProperty16.types | 12 +- .../reference/symbolProperty19.types | 6 +- .../baselines/reference/symbolProperty2.types | 2 +- .../reference/symbolProperty20.types | 12 +- .../reference/symbolProperty21.types | 4 +- .../reference/symbolProperty22.types | 12 +- .../reference/symbolProperty39.types | 8 +- .../baselines/reference/symbolProperty4.types | 2 +- .../reference/symbolProperty40.types | 10 +- .../reference/symbolProperty41.types | 10 +- .../reference/symbolProperty42.types | 6 +- .../reference/symbolProperty43.types | 4 +- .../reference/symbolProperty53.types | 8 +- .../reference/symbolProperty59.types | 4 +- .../reference/symbolProperty61.types | 20 +- tests/baselines/reference/symbolType10.types | 4 +- tests/baselines/reference/symbolType11.types | 4 +- tests/baselines/reference/symbolType12.types | 4 +- tests/baselines/reference/symbolType4.types | 4 +- tests/baselines/reference/symbolType5.types | 4 +- tests/baselines/reference/symbolType6.types | 4 +- tests/baselines/reference/symbolType7.types | 4 +- tests/baselines/reference/symbolType8.types | 4 +- tests/baselines/reference/symbolType9.types | 4 +- tests/baselines/reference/syntaxErrors.types | 4 +- ...eticDefaultExportsWithDynamicImports.types | 16 +- .../systemDefaultImportCallable.types | 20 +- .../reference/systemJsForInNoException.types | 4 +- .../baselines/reference/systemModule14.types | 2 +- .../baselines/reference/systemModule15.types | 8 +- .../systemModuleAmbientDeclarations.types | 2 +- .../reference/systemModuleConstEnums.types | 6 +- ...mModuleConstEnumsSeparateCompilation.types | 6 +- .../systemObjectShorthandRename.types | 2 +- .../reference/taggedPrimitiveNarrowing.types | 4 +- .../taggedTemplateContextualTyping1.types | 74 +- .../taggedTemplateContextualTyping2.types | 52 +- ...TemplateStringWithSymbolExpression01.types | 4 +- ...gedTemplateStringsHexadecimalEscapes.types | 4 +- ...TemplateStringsHexadecimalEscapesES6.types | 4 +- ...ainCharactersThatArePartsOfEscapes01.types | 4 +- ...haractersThatArePartsOfEscapes01_ES6.types | 4 +- ...haractersThatArePartsOfEscapes02_ES6.types | 4 +- ...TemplateStringsTypeArgumentInference.types | 152 +- ...plateStringsTypeArgumentInferenceES6.types | 152 +- ...edTemplateStringsWithCurriedFunction.types | 28 +- ...lateStringsWithIncompatibleTypedTags.types | 10 +- ...eStringsWithIncompatibleTypedTagsES6.types | 10 +- ...ingsWithManyCallAndMemberExpressions.types | 8 +- ...sWithManyCallAndMemberExpressionsES6.types | 8 +- ...TemplateStringsWithMultilineTemplate.types | 4 +- ...plateStringsWithMultilineTemplateES6.types | 4 +- ...mplateStringsWithOverloadResolution1.types | 36 +- ...teStringsWithOverloadResolution1_ES6.types | 36 +- ...mplateStringsWithOverloadResolution2.types | 20 +- ...teStringsWithOverloadResolution2_ES6.types | 20 +- ...mplateStringsWithOverloadResolution3.types | 90 +- ...teStringsWithOverloadResolution3_ES6.types | 90 +- ...edTemplateStringsWithTagNamedDeclare.types | 4 +- ...emplateStringsWithTagNamedDeclareES6.types | 4 +- ...nExpressionsInSubstitutionExpression.types | 6 +- ...pressionsInSubstitutionExpressionES6.types | 6 +- .../taggedTemplateStringsWithTypedTags.types | 10 +- ...aggedTemplateStringsWithTypedTagsES6.types | 10 +- ...gedTemplateStringsWithUnicodeEscapes.types | 4 +- ...TemplateStringsWithUnicodeEscapesES6.types | 4 +- ...TemplateStringsWithWhitespaceEscapes.types | 4 +- ...plateStringsWithWhitespaceEscapesES6.types | 4 +- .../taggedTemplateWithoutDeclaredHelper.types | 4 +- .../taggedTemplatesInDifferentScopes.types | 10 +- .../taggedTemplatesInModuleAndGlobal.types | 8 +- ...ithIncompleteNoSubstitutionTemplate1.types | 4 +- ...ithIncompleteNoSubstitutionTemplate2.types | 4 +- ...esWithIncompleteTemplateExpressions1.types | 4 +- ...esWithIncompleteTemplateExpressions2.types | 4 +- ...esWithIncompleteTemplateExpressions3.types | 4 +- ...esWithIncompleteTemplateExpressions4.types | 4 +- ...esWithIncompleteTemplateExpressions5.types | 4 +- ...esWithIncompleteTemplateExpressions6.types | 4 +- .../taggedTemplatesWithTypeArguments1.types | 52 +- .../baselines/reference/targetTypeArgs.types | 46 +- .../reference/targetTypeBaseCalls.types | 14 +- .../baselines/reference/targetTypeCalls.types | 34 +- .../reference/targetTypeCastTest.types | 10 +- .../reference/targetTypeObjectLiteral.types | 8 +- .../targetTypeObjectLiteralToAny.types | 6 +- .../baselines/reference/targetTypeTest1.types | 38 +- .../baselines/reference/targetTypeTest2.types | 6 +- .../baselines/reference/targetTypeTest3.types | 6 +- .../reference/targetTypeVoidFunc.types | 2 +- .../reference/targetTypingOnFunctions.types | 12 +- ...xpressionAsPossiblyDiscriminantValue.types | 14 +- ...ningOfConstantBindingWithInitializer.types | 4 +- .../reference/templateInsideCallback.types | 10 +- .../templateLiteralEscapeSequence.types | 218 +-- .../templateLiteralIntersection2.types | 32 +- .../templateLiteralIntersection4.types | 4 +- .../reference/templateLiteralTypes1.types | 54 +- .../reference/templateLiteralTypes2.types | 58 +- .../reference/templateLiteralTypes3.types | 60 +- .../reference/templateLiteralTypes4.types | 50 +- .../reference/templateLiteralTypes5.types | 12 +- .../reference/templateLiteralTypes6.types | 6 +- .../reference/templateLiteralTypes7.types | 8 +- .../templateLiteralTypesPatterns.types | 236 +-- .../reference/templateLiteralsInTypes.types | 6 +- .../templateStringInArrowFunction.types | 4 +- .../templateStringInArrowFunctionES6.types | 4 +- .../templateStringInFunctionExpression.types | 2 +- ...emplateStringInFunctionExpressionES6.types | 2 +- ...emplateStringInFunctionParameterType.types | 6 +- ...lateStringInFunctionParameterTypeES6.types | 6 +- ...ateStringWithCommentsInArrowFunction.types | 4 +- ...plateStringWithEmbeddedArrowFunction.types | 2 +- ...teStringWithEmbeddedArrowFunctionES6.types | 2 +- .../templateStringWithPropertyAccess.types | 4 +- .../templateStringWithPropertyAccessES6.types | 4 +- ...lateStringsArrayTypeDefinedInES5Mode.types | 6 +- ...ateStringsArrayTypeNotDefinedES5Mode.types | 6 +- ...teStringsArrayTypeRedefinedInES6Mode.types | 6 +- ...nExpressionsInSubstitutionExpression.types | 2 +- ...pressionsInSubstitutionExpressionES6.types | 2 +- .../ternaryExpressionSourceMap.types | 2 +- tests/baselines/reference/testTypings.types | 4 +- tests/baselines/reference/thisBinding.types | 18 +- tests/baselines/reference/thisBinding2.types | 8 +- tests/baselines/reference/thisCapture1.types | 2 +- ...ionalOnMethodReturnOfGenericInstance.types | 2 +- ...ionInCallExpressionWithTypeArguments.types | 6 +- .../thisExpressionInIndexExpression.types | 4 +- .../baselines/reference/thisInAccessors.types | 8 +- ...sInArrowFunctionInStaticInitializer1.types | 6 +- .../thisInClassBodyStaticESNext.types | 4 +- .../thisInConstructorParameter2.types | 14 +- .../reference/thisInFunctionCall.types | 32 +- .../reference/thisInFunctionCallJs.types | 32 +- .../thisInGenericStaticMembers.types | 16 +- .../reference/thisInInnerFunctions.types | 4 +- .../reference/thisInInvalidContexts.types | 4 +- .../thisInInvalidContextsExternalModule.types | 4 +- tests/baselines/reference/thisInLambda.types | 8 +- .../baselines/reference/thisInObjectJs.types | 4 +- .../reference/thisInOuterClassBody.types | 2 +- .../thisInPropertyBoundDeclarations.types | 36 +- .../thisInTupleTypeParameterConstraints.types | 16 +- .../baselines/reference/thisInTypeQuery.types | 6 +- ...dexOnExistingReadonlyFieldIsNotNever.types | 10 +- .../thisPropertyAssignmentCircular.types | 4 +- ...hisPrototypeMethodCompoundAssignment.types | 4 +- ...sPrototypeMethodCompoundAssignmentJs.types | 8 +- ...rencedInFunctionInsideArrowFunction1.types | 6 +- tests/baselines/reference/thisTag1.types | 14 +- tests/baselines/reference/thisTag3.types | 4 +- .../reference/thisTypeAccessibility.types | 34 +- .../reference/thisTypeAndConstraints.types | 8 +- .../baselines/reference/thisTypeErrors.types | 26 +- .../reference/thisTypeInClasses.types | 34 +- .../reference/thisTypeInFunctions.types | 482 ++--- .../reference/thisTypeInFunctions2.types | 32 +- .../reference/thisTypeInFunctions3.types | 6 +- .../reference/thisTypeInFunctions4.types | 14 +- .../thisTypeInFunctionsNegative.types | 376 ++-- .../reference/thisTypeInInterfaces.types | 8 +- .../reference/thisTypeInObjectLiterals.types | 40 +- .../reference/thisTypeInObjectLiterals2.types | 146 +- .../thisTypeInTaggedTemplateCall.types | 22 +- .../reference/thisTypeInTuples.types | 14 +- .../reference/thisTypeInTypePredicate.types | 8 +- .../reference/thisTypeOptionalCall.types | 10 +- .../reference/thisTypeSyntacticContext.types | 66 +- .../reference/thisWhenTypeCheckFails.types | 2 +- ...e-object-literal-getters-and-setters.types | 4 +- .../throwInEnclosingStatements.types | 4 +- .../baselines/reference/throwStatements.types | 34 +- .../reference/toStringOnPrimitives.types | 4 +- ...umentsInGenericFunctionTypedArgument.types | 36 +- .../reference/tooManyTypeParameters1.types | 2 +- .../topFunctionTypeNotCallable.types | 4 +- tests/baselines/reference/topLevel.types | 10 +- ...Await.1(module=es2022,target=es2015).types | 4 +- ...Await.1(module=es2022,target=es2017).types | 4 +- ...Await.1(module=esnext,target=es2015).types | 4 +- ...Await.1(module=esnext,target=es2017).types | 4 +- ...Await.1(module=system,target=es2015).types | 4 +- ...Await.1(module=system,target=es2017).types | 4 +- ...topLevelAwaitErrors.1(module=es2022).types | 6 +- ...topLevelAwaitErrors.1(module=esnext).types | 6 +- ...opLevelAwaitNonModule(module=es2022).types | 4 +- ...opLevelAwaitNonModule(module=esnext).types | 4 +- .../reference/topLevelBlockExpando.types | 22 +- .../baselines/reference/topLevelExports.types | 8 +- .../baselines/reference/topLevelLambda.types | 2 +- .../baselines/reference/topLevelLambda2.types | 4 +- .../baselines/reference/topLevelLambda3.types | 2 +- .../baselines/reference/topLevelLambda4.types | 2 +- .../reference/trackedSymbolsNoCrash.types | 6 +- ...lingCommaInHeterogenousArrayLiteral1.types | 10 +- ...mmasInFunctionParametersAndArguments.types | 18 +- ...ArrowInBlockScopedLoopVarInitializer.types | 2 +- .../transformNestedGeneratorsWithTry.types | 6 +- .../transformsElideNullUndefinedType.types | 32 +- .../transitiveTypeArgumentInference1.types | 2 +- .../truthinessCallExpressionCoercion.types | 28 +- .../truthinessCallExpressionCoercion1.types | 58 +- .../truthinessCallExpressionCoercion2.types | 140 +- .../truthinessCallExpressionCoercion3.types | 4 +- .../reference/truthinessPromiseCoercion.types | 8 +- .../tryCatchFinallyControlFlow.types | 16 +- .../reference/tslibReExportHelpers.types | 2 +- .../reference/tslibReExportHelpers2.types | 20 +- .../signatureHelpJSDocCallbackTag.js | 12 +- ...uteQuickinfoTypesSameAsObjectLiteral.types | 8 +- .../reference/tsxAttributeResolution12.types | 8 +- .../reference/tsxAttributeResolution14.types | 8 +- .../reference/tsxAttributeResolution15.types | 6 +- .../reference/tsxAttributeResolution2.types | 14 +- .../reference/tsxAttributeResolution4.types | 14 +- .../reference/tsxAttributeResolution5.types | 6 +- .../tsxAttributesHasInferrableIndex.types | 8 +- .../tsxDeepAttributeAssignabilityError.types | 6 +- .../tsxDiscriminantPropertyInference.types | 58 +- .../reference/tsxDynamicTagName5.types | 2 +- .../reference/tsxDynamicTagName7.types | 2 +- .../reference/tsxDynamicTagName8.types | 2 +- .../reference/tsxDynamicTagName9.types | 2 +- ...sxEmitSpreadAttribute(target=es2015).types | 22 +- ...sxEmitSpreadAttribute(target=es2018).types | 22 +- ...sxEmitSpreadAttribute(target=esnext).types | 22 +- .../reference/tsxFragmentChildrenCheck.types | 6 +- .../tsxGenericArrowFunctionParsing.types | 6 +- .../reference/tsxGenericAttributesType1.types | 18 +- .../reference/tsxGenericAttributesType2.types | 6 +- .../reference/tsxGenericAttributesType7.types | 14 +- .../reference/tsxGenericAttributesType8.types | 14 +- .../reference/tsxGenericAttributesType9.types | 2 +- .../reference/tsxInArrowFunction.types | 2 +- ...sxInferenceShouldNotYieldAnyOnUnions.types | 36 +- .../tsxLibraryManagedAttributes.types | 8 +- .../reference/tsxNoTypeAnnotatedSFC.types | 4 +- .../tsxNotUsingApparentTypeOfSFC.types | 10 +- .../reference/tsxReactEmitNesting.types | 6 +- ...ctEmitSpreadAttribute(target=es2015).types | 24 +- ...ctEmitSpreadAttribute(target=es2018).types | 24 +- ...ctEmitSpreadAttribute(target=esnext).types | 24 +- ...ropsInferenceSucceedsOnIntersections.types | 2 +- .../reference/tsxSfcReturnNull.types | 10 +- .../tsxSfcReturnNullStrictNullChecks.types | 12 +- ...sxSfcReturnUndefinedStrictNullChecks.types | 12 +- .../tsxSpreadAttributesResolution1.types | 2 +- .../tsxSpreadAttributesResolution13.types | 8 +- .../tsxSpreadAttributesResolution14.types | 6 +- .../tsxSpreadAttributesResolution15.types | 6 +- .../tsxSpreadAttributesResolution16.types | 6 +- .../tsxSpreadAttributesResolution4.types | 8 +- .../tsxSpreadAttributesResolution5.types | 2 +- .../tsxSpreadAttributesResolution6.types | 2 +- .../tsxSpreadAttributesResolution7.types | 6 +- .../reference/tsxSpreadChildren.types | 18 +- ...InvalidType(jsx=react,target=es2015).types | 16 +- ...renInvalidType(jsx=react,target=es5).types | 16 +- ...lidType(jsx=react-jsx,target=es2015).types | 16 +- ...nvalidType(jsx=react-jsx,target=es5).types | 16 +- ...xStatelessFunctionComponentOverload1.types | 56 +- ...xStatelessFunctionComponentOverload2.types | 24 +- ...xStatelessFunctionComponentOverload3.types | 26 +- ...xStatelessFunctionComponentOverload4.types | 44 +- ...xStatelessFunctionComponentOverload5.types | 60 +- ...xStatelessFunctionComponentOverload6.types | 62 +- ...onComponentWithDefaultTypeParameter1.types | 6 +- ...onComponentWithDefaultTypeParameter2.types | 4 +- .../tsxStatelessFunctionComponents1.types | 30 +- .../tsxStatelessFunctionComponents2.types | 32 +- .../tsxStatelessFunctionComponents3.types | 10 +- ...FunctionComponentsWithTypeArguments1.types | 42 +- ...FunctionComponentsWithTypeArguments2.types | 36 +- ...FunctionComponentsWithTypeArguments3.types | 46 +- ...FunctionComponentsWithTypeArguments4.types | 12 +- ...FunctionComponentsWithTypeArguments5.types | 22 +- ...ArgumentPartialDefinitionStillErrors.types | 6 +- .../reference/tsxUnionElementType1.types | 14 +- .../reference/tsxUnionElementType2.types | 14 +- .../reference/tsxUnionElementType3.types | 4 +- .../reference/tsxUnionElementType4.types | 4 +- .../reference/tsxUnionElementType5.types | 12 +- .../reference/tsxUnionElementType6.types | 16 +- .../tsxUnionMemberChecksFilterDataProps.types | 14 +- .../baselines/reference/tsxUnionSpread.types | 6 +- .../reference/tsxUnionTypeComponent1.types | 2 +- .../reference/tupleElementTypes2.types | 2 +- .../reference/tupleElementTypes4.types | 2 +- .../reference/tupleTypeInference.types | 48 +- .../reference/tupleTypeInference2.types | 20 +- tests/baselines/reference/tupleTypes.types | 22 +- .../twiceNestedKeyofIndexInference.types | 8 +- ...rgedInterfacesWithDifferingOverloads.types | 36 +- .../reference/typeAliasDeclarationEmit3.types | 12 +- .../typeAliasFunctionTypeSharedSymbol.types | 8 +- tests/baselines/reference/typeAliases.types | 32 +- .../reference/typeArgInference.types | 36 +- .../reference/typeArgInference2.types | 22 +- .../typeArgInference2WithError.types | 4 +- .../reference/typeArgInferenceWithNull.types | 16 +- .../typeArgumentConstraintResolution1.types | 16 +- .../reference/typeArgumentInference.types | 180 +- .../typeArgumentInferenceApparentType1.types | 4 +- .../typeArgumentInferenceApparentType2.types | 4 +- ...ArgumentInferenceConstructSignatures.types | 92 +- .../typeArgumentInferenceErrors.types | 36 +- .../typeArgumentInferenceOrdering.types | 6 +- ...gumentInferenceTransitiveConstraints.types | 4 +- ...rgumentInferenceWithClassExpression1.types | 4 +- ...rgumentInferenceWithClassExpression2.types | 4 +- ...rgumentInferenceWithClassExpression3.types | 4 +- ...tInferenceWithConstraintAsCommonRoot.types | 4 +- ...typeArgumentInferenceWithConstraints.types | 194 +-- ...peArgumentInferenceWithObjectLiteral.types | 78 +- ...lyReferencedTypeAliasToTypeLiteral01.types | 6 +- ...lyReferencedTypeAliasToTypeLiteral02.types | 6 +- .../typeArgumentsInFunctionExpressions.types | 12 +- ...mentsOnFunctionsWithNoTypeParameters.types | 12 +- ...ntsShouldDisallowNonGenericOverloads.types | 14 +- ...ypeArgumentsWithStringLiteralTypes01.types | 132 +- .../typeAssertionToGenericFunctionType.types | 28 +- .../baselines/reference/typeAssertions.types | 8 +- .../reference/typeCheckReturnExpression.types | 2 +- .../reference/typeCheckTypeArgument.types | 4 +- ...ckingInsideFunctionExpressionInArray.types | 2 +- .../typeFromContextualThisType.types | 34 +- .../reference/typeFromJSConstructor.types | 8 +- .../reference/typeFromJSInitializer.types | 40 +- .../reference/typeFromJSInitializer4.types | 10 +- .../typeFromParamTagForFunction.types | 28 +- .../typeFromPrivatePropertyAssignmentJs.types | 4 +- .../typeFromPropertyAssignment.types | 12 +- .../typeFromPropertyAssignment10.types | 16 +- .../typeFromPropertyAssignment10_1.types | 16 +- .../typeFromPropertyAssignment12.types | 10 +- .../typeFromPropertyAssignment17.types | 14 +- .../typeFromPropertyAssignment19.types | 12 +- .../typeFromPropertyAssignment20.types | 12 +- .../typeFromPropertyAssignment21.types | 2 +- .../typeFromPropertyAssignment22.types | 6 +- .../typeFromPropertyAssignment24.types | 2 +- .../typeFromPropertyAssignment29.types | 106 +- .../typeFromPropertyAssignment31.types | 12 +- .../typeFromPropertyAssignment32.types | 12 +- .../typeFromPropertyAssignment33.types | 12 +- .../typeFromPropertyAssignment34.types | 2 +- .../typeFromPropertyAssignment35.types | 2 +- .../typeFromPropertyAssignment36.types | 6 +- .../typeFromPropertyAssignment37.types | 2 +- .../typeFromPropertyAssignment38.types | 2 +- .../typeFromPropertyAssignment6.types | 2 +- .../typeFromPropertyAssignment7.types | 12 +- .../typeFromPropertyAssignment8.types | 8 +- .../typeFromPropertyAssignment8_1.types | 8 +- .../typeFromPropertyAssignment9.types | 28 +- .../typeFromPropertyAssignment9_1.types | 28 +- ...typeFromPropertyAssignmentWithExport.types | 2 +- .../typeFromPrototypeAssignment.types | 4 +- .../typeFromPrototypeAssignment2.types | 4 +- .../typeFromPrototypeAssignment3.types | 14 +- .../typeFromPrototypeAssignment4.types | 18 +- .../typeGuardConstructorClassAndNumber.types | 2 +- .../reference/typeGuardFunction.types | 50 +- .../reference/typeGuardFunctionErrors.types | 80 +- .../reference/typeGuardFunctionGenerics.types | 46 +- .../typeGuardFunctionOfFormThis.types | 4 +- .../typeGuardFunctionOfFormThisErrors.types | 22 +- .../typeGuardIntersectionTypes.types | 62 +- ...typeGuardNarrowByMutableUntypedField.types | 4 +- .../typeGuardNarrowByUntypedField.types | 4 +- ...NarrowsIndexedAccessOfKnownProperty1.types | 14 +- ...arrowsIndexedAccessOfKnownProperty10.types | 2 +- ...NarrowsIndexedAccessOfKnownProperty9.types | 2 +- ...ypeGuardNarrowsPrimitiveIntersection.types | 26 +- .../typeGuardNarrowsToLiteralType.types | 12 +- .../typeGuardNarrowsToLiteralTypeUnion.types | 12 +- .../typeGuardOfFormFunctionEquality.types | 16 +- .../reference/typeGuardOfFormIsType.types | 22 +- .../typeGuardOfFormIsTypeOnInterfaces.types | 22 +- .../typeGuardOfFormTypeOfFunction.types | 28 +- .../typeGuardOfFromPropNameInUnionType.types | 16 +- .../typeGuardOnContainerTypeNoHang.types | 2 +- .../reference/typeGuardRedundancy.types | 48 +- .../reference/typeGuardTypeOfUndefined.types | 32 +- .../reference/typeGuardsAsAssertions.types | 92 +- .../reference/typeGuardsDefeat.types | 10 +- .../reference/typeGuardsInClassMethods.types | 8 +- .../typeGuardsInConditionalExpression.types | 32 +- .../reference/typeGuardsInDoStatement.types | 6 +- .../reference/typeGuardsInForStatement.types | 6 +- .../reference/typeGuardsInFunction.types | 16 +- .../typeGuardsInFunctionAndModuleBlock.types | 42 +- .../reference/typeGuardsInIfStatement.types | 32 +- ...GuardsInRightOperandOfAndAndOperator.types | 18 +- ...peGuardsInRightOperandOfOrOrOperator.types | 18 +- .../typeGuardsInWhileStatement.types | 6 +- .../typeGuardsNestedAssignments.types | 4 +- .../reference/typeGuardsObjectMethods.types | 22 +- .../reference/typeGuardsOnClassProperty.types | 12 +- .../reference/typeGuardsTypeParameters.types | 12 +- .../reference/typeGuardsWithInstanceOf.types | 2 +- ...rdsWithInstanceOfBySymbolHasInstance.types | 22 +- .../typeIdentityConsidersBrands.types | 8 +- tests/baselines/reference/typeInfer1.types | 16 +- .../typeInferenceCacheInvalidation.types | 16 +- .../typeInferenceConflictingCandidates.types | 8 +- .../typeInferenceFBoundedTypeParams.types | 18 +- .../reference/typeInferenceFixEarly.types | 8 +- .../reference/typeInferenceLiteralUnion.types | 6 +- .../typeInferenceReturnTypeCallback.types | 22 +- .../typeInferenceTypePredicate.types | 8 +- .../typeInferenceTypePredicate2.types | 12 +- .../typeInferenceWithExcessProperties.types | 12 +- ...typeInferenceWithExcessPropertiesJsx.types | 10 +- .../typeInferenceWithTupleType.types | 20 +- .../typeInferenceWithTypeAnnotation.types | 8 +- .../reference/typeLiteralCallback.types | 30 +- tests/baselines/reference/typeMatch1.types | 10 +- tests/baselines/reference/typeMatch2.types | 22 +- tests/baselines/reference/typeName1.types | 36 +- .../reference/typeNamedUndefined1.types | 4 +- .../reference/typeNamedUndefined2.types | 4 +- .../baselines/reference/typeOfOnTypeArg.types | 4 +- .../reference/typeOfThisGeneral.types | 22 +- .../typeOfThisInFunctionExpression.types | 12 +- .../typeOfThisInInstanceMember.types | 6 +- .../typeOfThisInInstanceMember2.types | 6 +- ...ThisInStaticMembers10(target=es2022).types | 8 +- ...eOfThisInStaticMembers10(target=es5).types | 8 +- ...eOfThisInStaticMembers10(target=es6).types | 8 +- ...ThisInStaticMembers10(target=esnext).types | 8 +- ...ThisInStaticMembers11(target=es2022).types | 8 +- ...eOfThisInStaticMembers11(target=es5).types | 8 +- ...eOfThisInStaticMembers11(target=es6).types | 8 +- ...ThisInStaticMembers11(target=esnext).types | 8 +- ...fThisInStaticMembers5(target=es2022).types | 2 +- ...peOfThisInStaticMembers5(target=es5).types | 2 +- ...peOfThisInStaticMembers5(target=es6).types | 2 +- ...fThisInStaticMembers5(target=esnext).types | 2 +- ...fThisInStaticMembers8(target=es2022).types | 4 +- ...peOfThisInStaticMembers8(target=es5).types | 4 +- ...peOfThisInStaticMembers8(target=es6).types | 4 +- ...fThisInStaticMembers8(target=esnext).types | 4 +- ...fThisInStaticMembers9(target=es2022).types | 4 +- ...peOfThisInStaticMembers9(target=es5).types | 4 +- ...peOfThisInStaticMembers9(target=es6).types | 4 +- ...fThisInStaticMembers9(target=esnext).types | 4 +- .../typeParameterAndArgumentOfSameName1.types | 6 +- .../typeParameterArgumentEquivalence.types | 16 +- .../typeParameterArgumentEquivalence2.types | 16 +- .../typeParameterArgumentEquivalence3.types | 16 +- .../typeParameterArgumentEquivalence4.types | 16 +- .../typeParameterArgumentEquivalence5.types | 12 +- .../typeParameterAsTypeArgument.types | 4 +- ...peParameterAsTypeParameterConstraint.types | 24 +- ...eParameterAsTypeParameterConstraint2.types | 16 +- ...sTypeParameterConstraintTransitively.types | 24 +- ...TypeParameterConstraintTransitively2.types | 22 +- .../typeParameterAssignability.types | 2 +- .../typeParameterAssignability2.types | 12 +- .../typeParameterAssignability3.types | 4 +- .../typeParameterAssignmentCompat1.types | 2 +- ...eterCompatibilityAccrossDeclarations.types | 32 +- .../typeParameterConstModifiers.types | 216 +-- ...eterConstModifiersReverseMappedTypes.types | 34 +- ...ameterConstModifiersWithIntersection.types | 8 +- ...eterConstrainedToOuterTypeParameter2.types | 4 +- ...typeParameterConstraintInstantiation.types | 10 +- .../reference/typeParameterConstraints1.types | 26 +- ...ParameterDirectlyConstrainedToItself.types | 4 +- ...eParameterDoesntBlockParameterLookup.types | 2 +- .../reference/typeParameterEquality.types | 6 +- .../typeParameterExplicitlyExtendsAny.types | 4 +- .../typeParameterExtendingUnion1.types | 6 +- .../typeParameterExtendingUnion2.types | 6 +- .../typeParameterExtendsPrimitive.types | 4 +- ...terExtendsUnionConstraintDistributed.types | 4 +- .../typeParameterFixingWithConstraints.types | 14 +- ...rFixingWithContextSensitiveArguments.types | 18 +- ...FixingWithContextSensitiveArguments2.types | 14 +- ...FixingWithContextSensitiveArguments3.types | 14 +- ...FixingWithContextSensitiveArguments4.types | 14 +- ...FixingWithContextSensitiveArguments5.types | 14 +- .../typeParameterHasSelfAsConstraint.types | 2 +- ...rameterIndirectlyConstrainedToItself.types | 4 +- .../reference/typeParameterLeak.types | 12 +- .../typeParameterOrderReversal.types | 8 +- .../typeParameterUsedAsConstraint.types | 12 +- ...rameterUsedAsTypeParameterConstraint.types | 20 +- ...ameterUsedAsTypeParameterConstraint2.types | 42 +- ...ameterUsedAsTypeParameterConstraint3.types | 4 +- ...ameterUsedAsTypeParameterConstraint4.types | 30 +- ...rametersAndParametersInComputedNames.types | 6 +- ...peParametersAreIdenticalToThemselves.types | 96 +- ...typeParametersAvailableInNestedScope.types | 12 +- ...ypeParametersAvailableInNestedScope2.types | 6 +- ...ypeParametersAvailableInNestedScope3.types | 18 +- .../typeParametersInStaticMethods.types | 4 +- .../typeParametersShouldNotBeEqual.types | 2 +- .../typeParametersShouldNotBeEqual2.types | 2 +- .../typeParametersShouldNotBeEqual3.types | 2 +- ...tiatedWithDefaultWhenCheckingDefault.types | 4 +- .../reference/typePredicateASI.types | 4 +- ...edicateAcceptingPartialOfRefinedType.types | 2 +- .../typePredicateFreshLiteralWidening.types | 46 +- .../reference/typePredicateInLoop.types | 14 +- .../typePredicateStructuralMatch.types | 28 +- .../typePredicateTopLevelTypeParameter.types | 18 +- .../typePredicateWithThisParameter.types | 8 +- ...ypePredicatesCanNarrowByDiscriminant.types | 10 +- .../reference/typePredicatesInUnion.types | 10 +- .../reference/typePredicatesInUnion2.types | 24 +- .../reference/typePredicatesInUnion3.types | 12 +- .../typePredicatesInUnion_noMatch.types | 12 +- .../typePredicatesOptionalChaining1.types | 8 +- .../typePredicatesOptionalChaining2.types | 14 +- .../typePredicatesOptionalChaining3.types | 8 +- .../reference/typeQueryOnClass.types | 14 +- .../reference/typeReferenceDirectives4.types | 2 +- .../reference/typeReferenceDirectives6.types | 2 +- .../reference/typeReferenceDirectives7.types | 2 +- .../reference/typeRelationships.types | 2 +- .../reference/typeSatisfaction.types | 12 +- .../typeSatisfaction_contextualTyping1.types | 14 +- .../typeSatisfaction_contextualTyping2.types | 24 +- .../typeSatisfaction_contextualTyping3.types | 32 +- ...typeSatisfaction_ensureInterfaceImpl.types | 10 +- .../typeSatisfaction_errorLocations1.types | 30 +- ...tisfaction_optionalMemberConformance.types | 8 +- ...ypeSatisfaction_propNameConstraining.types | 8 +- ...Satisfaction_propertyNameFulfillment.types | 8 +- ...pertyaccessfromindexsignature=false).types | 12 +- ...opertyaccessfromindexsignature=true).types | 12 +- ...nce2(nouncheckedindexedaccess=false).types | 12 +- ...ance2(nouncheckedindexedaccess=true).types | 12 +- .../reference/typeTagNoErasure.types | 2 +- .../typeTagOnFunctionReferencesGeneric.types | 6 +- .../typeTagOnPropertyAssignment.types | 8 +- .../typeTagWithGenericSignature.types | 6 +- .../reference/typeUsedAsValueError.types | 6 +- .../typeVariableConstraintIntersections.types | 34 +- ...straintedToAliasNotAssignableToUnion.types | 4 +- .../reference/typeVariableTypeGuards.types | 12 +- tests/baselines/reference/typedArrays.types | 386 ++-- .../reference/typedArraysSubarray.types | 108 +- .../typedGenericPrototypeMember.types | 6 +- .../reference/typedefOnStatements.types | 6 +- .../reference/typedefTagTypeResolution.types | 6 +- .../reference/typedefTagWrapping.types | 12 +- tests/baselines/reference/typeofClass2.types | 10 +- .../typeofImportInstantiationExpression.types | 8 +- .../typeofImportTypeOnlyExport.types | 10 +- .../reference/typeofObjectInference.types | 56 +- .../typeofOperatorWithAnyOtherType.types | 4 +- .../typeofOperatorWithNumberType.types | 6 +- .../typeofOperatorWithStringType.types | 10 +- tests/baselines/reference/typeofThis.types | 12 +- .../typeofThisInMethodSignature.types | 10 +- .../reference/typeofTypeParameter.types | 2 +- .../types.asyncGenerators.es2018.1.types | 66 +- .../types.asyncGenerators.es2018.2.types | 4 +- ...mit.multiFileBackReferenceToUnmapped.types | 2 +- .../reference/typesWithOptionalProperty.types | 4 +- .../typesWithPrivateConstructor.types | 2 +- .../typesWithProtectedConstructor.types | 2 +- .../typesWithPublicConstructor.types | 2 +- .../typesWithSpecializedCallSignatures.types | 60 +- ...esWithSpecializedConstructSignatures.types | 16 +- .../reference/umd-augmentation-1.types | 16 +- .../reference/umd-augmentation-2.types | 16 +- .../reference/umd-augmentation-3.types | 16 +- .../reference/umd-augmentation-4.types | 16 +- .../umdGlobalAugmentationNoCrash.types | 4 +- ...dWithGlobalAugmentationIsNotCircular.types | 4 +- .../unannotatedParametersAreOptional.types | 46 +- ...uncalledFunctionChecksInConditional2.types | 234 +-- .../reference/undeclaredModuleError.types | 22 +- .../undefinedArgumentInference.types | 4 +- .../undefinedAssignableToEveryType.types | 6 +- .../undefinedInferentialTyping.types | 4 +- ...finedSymbolReferencedInArrayLiteral1.types | 2 +- .../reference/undefinedTypeArgument2.types | 10 +- .../reference/undefinedTypeAssignment1.types | 2 +- .../reference/underscoreMapFirst.types | 30 +- .../baselines/reference/underscoreTest1.types | 1546 ++++++++--------- .../underscoreThisInDerivedClass01.types | 8 +- .../reference/unicodeEscapesInJSDoc.types | 12 +- .../reference/unicodeEscapesInJsxtags.types | 12 +- .../reference/unicodeIdentifierName2.types | 2 +- .../unionAndIntersectionInference1.types | 74 +- .../unionAndIntersectionInference2.types | 32 +- .../unionAndIntersectionInference3.types | 72 +- .../unionCallMixedTypeParameterPresence.types | 14 +- ...heckNoApparentPropTypeMismatchErrors.types | 6 +- .../reference/unionOfArraysFilterCall.types | 52 +- .../reference/unionOfClassCalls.types | 66 +- .../reference/unionOfEnumInference.types | 6 +- ...nionOfFunctionAndSignatureIsCallable.types | 4 +- .../unionReductionMutualSubtypes.types | 30 +- ...ingAndIdenticalBaseTypeExistsNoCrash.types | 10 +- .../unionSignaturesWithThisParameter.types | 6 +- .../reference/unionThisTypeInFunctions.types | 10 +- .../reference/unionTypeCallSignatures.types | 114 +- .../reference/unionTypeCallSignatures3.types | 32 +- .../unionTypeConstructSignatures.types | 112 +- .../reference/unionTypeInference.types | 78 +- .../reference/unionTypeMembers.types | 56 +- .../unionTypeParameterInference.types | 6 +- .../reference/unionTypeReduction2.types | 248 +-- ...unionTypeWithIndexAndMethodSignature.types | 10 +- .../unionTypeWithIndexAndTuple.types | 6 +- .../reference/unionTypesAssignability.types | 2 +- .../reference/unionWithIndexSignature.types | 8 +- .../reference/unionsOfTupleTypes1.types | 2 +- ...ssignmentOnGlobalAugmentationSuceeds.types | 2 +- tests/baselines/reference/uniqueSymbols.types | 74 +- .../reference/uniqueSymbolsDeclarations.types | 52 +- .../uniqueSymbolsDeclarationsErrors.types | 22 +- .../reference/uniqueSymbolsErrors.types | 40 +- .../uniqueSymbolsPropertyNames.types | 12 +- .../reference/unknownControlFlow.types | 154 +- ...ownLikeUnionObjectFlagsNotPropagated.types | 8 +- .../unknownSymbolInGenericReturnType.types | 6 +- .../unknownSymbolOffContextualType1.types | 32 +- .../baselines/reference/unknownSymbols1.types | 2 +- .../baselines/reference/unknownSymbols2.types | 6 +- tests/baselines/reference/unknownType1.types | 26 +- tests/baselines/reference/unknownType2.types | 28 +- .../unmatchedParameterPositions.types | 6 +- ...ConstructorTypeInUnionOrIntersection.types | 2 +- ...zedFunctionTypeInUnionOrIntersection.types | 2 +- .../unqualifiedCallToClassStatic1.types | 2 +- .../unreachableSwitchTypeofAny.types | 4 +- .../unreachableSwitchTypeofUnknown.types | 4 +- ...esolvableSelfReferencingAwaitedUnion.types | 10 +- .../reference/unspecializedConstraints.types | 92 +- .../untypedArgumentInLambdaExpression.types | 8 +- ...ypedFunctionCallsWithTypeParameters1.types | 4 +- .../reference/unusedDestructuring.types | 2 +- .../unusedDestructuringParameters.types | 18 +- .../unusedFunctionsinNamespaces2.types | 2 +- .../unusedFunctionsinNamespaces3.types | 4 +- .../unusedFunctionsinNamespaces4.types | 2 +- .../unusedFunctionsinNamespaces5.types | 2 +- .../unusedFunctionsinNamespaces6.types | 4 +- .../unusedIdentifiersConsolidated1.types | 16 +- .../reference/unusedImportDeclaration.types | 4 +- .../baselines/reference/unusedImports13.types | 2 +- .../baselines/reference/unusedImports14.types | 2 +- .../baselines/reference/unusedImports15.types | 2 +- .../baselines/reference/unusedImports16.types | 2 +- .../baselines/reference/unusedImports8.types | 4 +- .../reference/unusedLocalProperty.types | 10 +- .../unusedLocalsAndObjectSpread.types | 16 +- .../reference/unusedLocalsAndParameters.types | 28 +- .../unusedLocalsAndParametersDeferred.types | 72 +- ...ocalsAndParametersOverloadSignatures.types | 12 +- ...eclarationWithinFunctionDeclaration1.types | 4 +- ...eclarationWithinFunctionDeclaration2.types | 8 +- ...DeclarationWithinFunctionExpression1.types | 6 +- ...DeclarationWithinFunctionExpression2.types | 10 +- ...ExpressionWithinFunctionDeclaration1.types | 6 +- ...ExpressionWithinFunctionDeclaration2.types | 12 +- ...nExpressionWithinFunctionExpression1.types | 8 +- ...nExpressionWithinFunctionExpression2.types | 14 +- .../reference/unusedMethodsInInterface.types | 2 +- ...ltipleParameter1InFunctionExpression.types | 4 +- ...ltipleParameter2InFunctionExpression.types | 4 +- ...ipleParameters1InFunctionDeclaration.types | 2 +- ...ltipleParameters1InMethodDeclaration.types | 2 +- ...ipleParameters2InFunctionDeclaration.types | 2 +- ...ltipleParameters2InMethodDeclaration.types | 2 +- .../unusedParameterUsedInTypeOf.types | 2 +- .../reference/unusedParametersInLambda1.types | 4 +- .../reference/unusedParametersInLambda2.types | 4 +- .../reference/unusedParametersThis.types | 22 +- .../unusedParametersWithUnderscore.types | 20 +- .../unusedPrivateStaticMembers.types | 10 +- ...SingleParameterInFunctionDeclaration.types | 2 +- ...dSingleParameterInFunctionExpression.types | 4 +- ...edSingleParameterInMethodDeclaration.types | 2 +- .../unusedTypeParameterInInterface2.types | 2 +- .../unusedTypeParameterInLambda3.types | 2 +- .../unusedTypeParameterInMethod5.types | 2 +- .../reference/unusedTypeParameters4.types | 2 +- .../reference/unusedTypeParameters5.types | 2 +- .../reference/unusedTypeParameters9.types | 4 +- ...arametersCheckedByNoUnusedParameters.types | 2 +- ...ParametersNotCheckedByNoUnusedLocals.types | 2 +- .../unusedTypeParametersWithUnderscore.types | 2 +- ...iablesWithUnderscoreInBindingElement.types | 24 +- ...edVariablesWithUnderscoreInForOfLoop.types | 8 +- .../unusedVariablesinNamespaces2.types | 6 +- .../unusedVariablesinNamespaces3.types | 6 +- .../unwitnessedTypeParameterVariance.types | 8 +- .../reference/useBeforeDeclaration.types | 4 +- .../useBeforeDeclaration_destructuring.types | 2 +- .../reference/useBeforeDeclaration_jsx.types | 2 +- .../useObjectValuesAndEntries1.types | 60 +- .../useObjectValuesAndEntries4.types | 8 +- .../reference/usePromiseFinally.types | 10 +- .../baselines/reference/useRegexpGroups.types | 12 +- .../reference/useSharedArrayBuffer1.types | 4 +- .../reference/useSharedArrayBuffer4.types | 4 +- .../useUnknownInCatchVariables01.types | 8 +- .../validMultipleVariableDeclarations.types | 20 +- .../reference/validNullAssignments.types | 2 +- .../reference/validUndefinedAssignments.types | 2 +- .../reference/varArgParamTypeCheck.types | 12 +- .../reference/varArgsOnConstructorTypes.types | 18 +- .../varInFunctionInVarInitializer.types | 2 +- .../reference/varRequireFromJavascript.types | 2 +- .../reference/varRequireFromTypescript.types | 2 +- tests/baselines/reference/vararg.types | 38 +- tests/baselines/reference/vardecl.types | 10 +- .../reference/variableDeclarator1.types | 2 +- ...aratorResolvedDuringContextualTyping.types | 104 +- .../baselines/reference/variadicTuples1.types | 328 ++-- .../baselines/reference/variadicTuples2.types | 108 +- tests/baselines/reference/variance.types | 6 +- .../varianceAnnotationValidation.types | 2 +- .../reference/varianceAnnotations.types | 26 +- .../varianceCallbacksAndIndexedAccesses.types | 14 +- ...rianceCantBeStrictWhileStructureIsnt.types | 4 +- .../reference/varianceMeasurement.types | 14 +- ...eroOrderIndexSignatureRelationsAlign.types | 30 +- ...roOrderIndexSignatureRelationsAlign2.types | 28 +- ...peatedlyPropegatesWithUnreliableFlag.types | 6 +- .../verbatim-declarations-parameters.types | 2 +- .../visibilityOfCrossModuleTypeUsage.types | 12 +- .../visibilityOfTypeParameters.types | 2 +- tests/baselines/reference/voidArrayLit.types | 4 +- .../voidAsNonAmbiguousReturnType.types | 8 +- .../voidFunctionAssignmentCompat.types | 36 +- .../voidOperatorWithNumberType.types | 6 +- .../voidOperatorWithStringType.types | 10 +- .../voidParamAssignmentCompatibility.types | 12 +- .../voidReturnIndexUnionInference.types | 26 +- .../reference/voidReturnLambdaValue.types | 6 +- .../reference/voidUndefinedReduction.types | 10 +- .../vueLikeDataAndPropsInference.types | 22 +- .../vueLikeDataAndPropsInference2.types | 22 +- tests/baselines/reference/weakType.types | 24 +- .../weakTypeAndPrimitiveNarrowing.types | 8 +- .../reference/weakTypesAndLiterals01.types | 16 +- .../reference/webworkerIterable.types | 2 +- .../reference/whileBreakStatements.types | 2 +- .../reference/whileContinueStatements.types | 2 +- tests/baselines/reference/widenToAny1.types | 4 +- tests/baselines/reference/widenToAny2.types | 4 +- .../baselines/reference/wideningTuples1.types | 4 +- .../baselines/reference/wideningTuples7.types | 2 +- .../wideningWithTopLevelTypeParameter.types | 20 +- .../baselines/reference/withExportDecl.types | 4 +- tests/baselines/reference/witness.types | 42 +- .../wrappedAndRecursiveConstraints.types | 6 +- .../wrappedAndRecursiveConstraints3.types | 24 +- .../wrappedAndRecursiveConstraints4.types | 24 +- 4946 files changed, 58310 insertions(+), 58246 deletions(-) diff --git a/tests/baselines/reference/1.0lib-noErrors.types b/tests/baselines/reference/1.0lib-noErrors.types index 17020ba6a41c0..54d41fe4a6a94 100644 --- a/tests/baselines/reference/1.0lib-noErrors.types +++ b/tests/baselines/reference/1.0lib-noErrors.types @@ -36,7 +36,7 @@ declare var Infinity: number; */ declare function eval(x: string): any; >eval : (x: string) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -49,7 +49,7 @@ declare function eval(x: string): any; */ declare function parseInt(s: string, radix?: number): number; >parseInt : (s: string, radix?: number) => number -> : ^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >s : string > : ^^^^^^ >radix : number @@ -61,7 +61,7 @@ declare function parseInt(s: string, radix?: number): number; */ declare function parseFloat(string: string): number; >parseFloat : (string: string) => number -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >string : string > : ^^^^^^ @@ -71,7 +71,7 @@ declare function parseFloat(string: string): number; */ declare function isNaN(number: number): boolean; >isNaN : (number: number) => boolean -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >number : number > : ^^^^^^ @@ -81,7 +81,7 @@ declare function isNaN(number: number): boolean; */ declare function isFinite(number: number): boolean; >isFinite : (number: number) => boolean -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >number : number > : ^^^^^^ @@ -91,7 +91,7 @@ declare function isFinite(number: number): boolean; */ declare function decodeURI(encodedURI: string): string; >decodeURI : (encodedURI: string) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >encodedURI : string > : ^^^^^^ @@ -101,7 +101,7 @@ declare function decodeURI(encodedURI: string): string; */ declare function decodeURIComponent(encodedURIComponent: string): string; >decodeURIComponent : (encodedURIComponent: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >encodedURIComponent : string > : ^^^^^^ @@ -111,7 +111,7 @@ declare function decodeURIComponent(encodedURIComponent: string): string; */ declare function encodeURI(uri: string): string; >encodeURI : (uri: string) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >uri : string > : ^^^^^^ @@ -121,7 +121,7 @@ declare function encodeURI(uri: string): string; */ declare function encodeURIComponent(uriComponent: string | number | boolean): string; >encodeURIComponent : (uriComponent: string | number | boolean) => string -> : ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >uriComponent : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -147,7 +147,7 @@ interface PropertyDescriptor { set?(v: any): void; >set : (v: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : any } @@ -184,7 +184,7 @@ interface Object { */ hasOwnProperty(v: string): boolean; >hasOwnProperty : (v: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : string > : ^^^^^^ @@ -194,7 +194,7 @@ interface Object { */ isPrototypeOf(v: Object): boolean; >isPrototypeOf : (v: Object) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : Object > : ^^^^^^ @@ -204,7 +204,7 @@ interface Object { */ propertyIsEnumerable(v: string): boolean; >propertyIsEnumerable : (v: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : string > : ^^^^^^ } @@ -214,7 +214,7 @@ interface Object { */ declare var Object: { >Object : { (): any; (value: any): any; new (value?: any): Object; prototype: Object; getPrototypeOf(o: any): any; getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; getOwnPropertyNames(o: any): string[]; create(o: any, properties?: PropertyDescriptorMap): any; defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; defineProperties(o: any, properties: PropertyDescriptorMap): any; seal(o: any): any; freeze(o: any): any; preventExtensions(o: any): any; isSealed(o: any): boolean; isFrozen(o: any): boolean; isExtensible(o: any): boolean; keys(o: any): string[]; } -> : ^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (value?: any): Object; >value : any @@ -234,7 +234,7 @@ declare var Object: { */ getPrototypeOf(o: any): any; >getPrototypeOf : (o: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -245,7 +245,7 @@ declare var Object: { */ getOwnPropertyDescriptor(o: any, p: string): PropertyDescriptor; >getOwnPropertyDescriptor : (o: any, p: string) => PropertyDescriptor -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >o : any >p : string > : ^^^^^^ @@ -257,7 +257,7 @@ declare var Object: { */ getOwnPropertyNames(o: any): string[]; >getOwnPropertyNames : (o: any) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -267,7 +267,7 @@ declare var Object: { */ create(o: any, properties?: PropertyDescriptorMap): any; >create : (o: any, properties?: PropertyDescriptorMap) => any -> : ^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >o : any >properties : PropertyDescriptorMap > : ^^^^^^^^^^^^^^^^^^^^^ @@ -280,7 +280,7 @@ declare var Object: { */ defineProperty(o: any, p: string, attributes: PropertyDescriptor): any; >defineProperty : (o: any, p: string, attributes: PropertyDescriptor) => any -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >o : any >p : string > : ^^^^^^ @@ -294,7 +294,7 @@ declare var Object: { */ defineProperties(o: any, properties: PropertyDescriptorMap): any; >defineProperties : (o: any, properties: PropertyDescriptorMap) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >o : any >properties : PropertyDescriptorMap > : ^^^^^^^^^^^^^^^^^^^^^ @@ -305,7 +305,7 @@ declare var Object: { */ seal(o: any): any; >seal : (o: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -314,7 +314,7 @@ declare var Object: { */ freeze(o: any): any; >freeze : (o: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -323,7 +323,7 @@ declare var Object: { */ preventExtensions(o: any): any; >preventExtensions : (o: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -332,7 +332,7 @@ declare var Object: { */ isSealed(o: any): boolean; >isSealed : (o: any) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -341,7 +341,7 @@ declare var Object: { */ isFrozen(o: any): boolean; >isFrozen : (o: any) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -350,7 +350,7 @@ declare var Object: { */ isExtensible(o: any): boolean; >isExtensible : (o: any) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any /** @@ -359,7 +359,7 @@ declare var Object: { */ keys(o: any): string[]; >keys : (o: any) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : any } @@ -374,7 +374,7 @@ interface Function { */ apply(thisArg: any, argArray?: any): any; >apply : (thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >thisArg : any >argArray : any @@ -385,7 +385,7 @@ interface Function { */ call(thisArg: any, ...argArray: any[]): any; >call : (thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >thisArg : any >argArray : any[] > : ^^^^^ @@ -398,7 +398,7 @@ interface Function { */ bind(thisArg: any, ...argArray: any[]): any; >bind : (thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >thisArg : any >argArray : any[] > : ^^^^^ @@ -421,7 +421,7 @@ interface Function { declare var Function: { >Function : { (...args: string[]): Function; new (...args: string[]): Function; prototype: Function; } -> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^^ /** * Creates a new function. @@ -466,7 +466,7 @@ interface String { */ charAt(pos: number): string; >charAt : (pos: number) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >pos : number > : ^^^^^^ @@ -476,7 +476,7 @@ interface String { */ charCodeAt(index: number): number; >charCodeAt : (index: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >index : number > : ^^^^^^ @@ -486,7 +486,7 @@ interface String { */ concat(...strings: string[]): string; >concat : (...strings: string[]) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >strings : string[] > : ^^^^^^^^ @@ -497,7 +497,7 @@ interface String { */ indexOf(searchString: string, position?: number): number; >indexOf : (searchString: string, position?: number) => number -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchString : string > : ^^^^^^ >position : number @@ -510,7 +510,7 @@ interface String { */ lastIndexOf(searchString: string, position?: number): number; >lastIndexOf : (searchString: string, position?: number) => number -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchString : string > : ^^^^^^ >position : number @@ -522,7 +522,7 @@ interface String { */ localeCompare(that: string): number; >localeCompare : (that: string) => number -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >that : string > : ^^^^^^ @@ -532,7 +532,7 @@ interface String { */ match(regexp: string): string[]; >match : { (regexp: string): string[]; (regexp: RegExp): string[]; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^ >regexp : string > : ^^^^^^ @@ -542,7 +542,7 @@ interface String { */ match(regexp: RegExp): string[]; >match : { (regexp: string): string[]; (regexp: RegExp): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >regexp : RegExp > : ^^^^^^ @@ -553,7 +553,7 @@ interface String { */ replace(searchValue: string, replaceValue: string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : string > : ^^^^^^ >replaceValue : string @@ -566,11 +566,11 @@ interface String { */ replace(searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : string > : ^^^^^^ >replaceValue : (substring: string, ...args: any[]) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >substring : string > : ^^^^^^ >args : any[] @@ -583,7 +583,7 @@ interface String { */ replace(searchValue: RegExp, replaceValue: string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : RegExp > : ^^^^^^ >replaceValue : string @@ -596,11 +596,11 @@ interface String { */ replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >searchValue : RegExp > : ^^^^^^ >replaceValue : (substring: string, ...args: any[]) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >substring : string > : ^^^^^^ >args : any[] @@ -612,7 +612,7 @@ interface String { */ search(regexp: string): number; >search : { (regexp: string): number; (regexp: RegExp): number; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >regexp : string > : ^^^^^^ @@ -622,7 +622,7 @@ interface String { */ search(regexp: RegExp): number; >search : { (regexp: string): number; (regexp: RegExp): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >regexp : RegExp > : ^^^^^^ @@ -634,7 +634,7 @@ interface String { */ slice(start?: number, end?: number): string; >slice : (start?: number, end?: number) => string -> : ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -647,7 +647,7 @@ interface String { */ split(separator: string, limit?: number): string[]; >split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >separator : string > : ^^^^^^ >limit : number @@ -660,7 +660,7 @@ interface String { */ split(separator: RegExp, limit?: number): string[]; >split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >separator : RegExp > : ^^^^^^ >limit : number @@ -674,7 +674,7 @@ interface String { */ substring(start: number, end?: number): string; >substring : (start: number, end?: number) => string -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -718,7 +718,7 @@ interface String { */ substr(from: number, length?: number): string; >substr : (from: number, length?: number) => string -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >from : number > : ^^^^^^ >length : number @@ -734,7 +734,7 @@ interface String { */ declare var String: { >String : { (value?: any): string; new (value?: any): String; prototype: String; fromCharCode(...codes: number[]): string; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (value?: any): String; >value : any @@ -748,7 +748,7 @@ declare var String: { fromCharCode(...codes: number[]): string; >fromCharCode : (...codes: number[]) => string -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >codes : number[] > : ^^^^^^^^ } @@ -757,7 +757,7 @@ interface Boolean { } declare var Boolean: { >Boolean : { (value?: any): boolean; new (value?: any): Boolean; prototype: Boolean; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (value?: any): Boolean; >value : any @@ -777,7 +777,7 @@ interface Number { */ toString(radix?: number): string; >toString : (radix?: number) => string -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >radix : number > : ^^^^^^ @@ -787,7 +787,7 @@ interface Number { */ toFixed(fractionDigits?: number): string; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >fractionDigits : number > : ^^^^^^ @@ -797,7 +797,7 @@ interface Number { */ toExponential(fractionDigits?: number): string; >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >fractionDigits : number > : ^^^^^^ @@ -807,7 +807,7 @@ interface Number { */ toPrecision(precision?: number): string; >toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >precision : number > : ^^^^^^ } @@ -815,7 +815,7 @@ interface Number { /** An object that represents a number of any kind. All JavaScript numbers are 64-bit floating-point numbers. */ declare var Number: { >Number : { (value?: any): number; new (value?: any): Number; prototype: Number; MAX_VALUE: number; MIN_VALUE: number; NaN: number; NEGATIVE_INFINITY: number; POSITIVE_INFINITY: number; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ new (value?: any): Number; >value : any @@ -910,7 +910,7 @@ interface Math { */ abs(x: number): number; >abs : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -920,7 +920,7 @@ interface Math { */ acos(x: number): number; >acos : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -930,7 +930,7 @@ interface Math { */ asin(x: number): number; >asin : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -940,7 +940,7 @@ interface Math { */ atan(x: number): number; >atan : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -951,7 +951,7 @@ interface Math { */ atan2(y: number, x: number): number; >atan2 : (y: number, x: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >y : number > : ^^^^^^ >x : number @@ -963,7 +963,7 @@ interface Math { */ ceil(x: number): number; >ceil : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -973,7 +973,7 @@ interface Math { */ cos(x: number): number; >cos : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -983,7 +983,7 @@ interface Math { */ exp(x: number): number; >exp : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -993,7 +993,7 @@ interface Math { */ floor(x: number): number; >floor : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1003,7 +1003,7 @@ interface Math { */ log(x: number): number; >log : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1013,7 +1013,7 @@ interface Math { */ max(...values: number[]): number; >max : (...values: number[]) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >values : number[] > : ^^^^^^^^ @@ -1023,7 +1023,7 @@ interface Math { */ min(...values: number[]): number; >min : (...values: number[]) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >values : number[] > : ^^^^^^^^ @@ -1034,7 +1034,7 @@ interface Math { */ pow(x: number, y: number): number; >pow : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -1051,7 +1051,7 @@ interface Math { */ round(x: number): number; >round : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1061,7 +1061,7 @@ interface Math { */ sin(x: number): number; >sin : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1071,7 +1071,7 @@ interface Math { */ sqrt(x: number): number; >sqrt : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1081,7 +1081,7 @@ interface Math { */ tan(x: number): number; >tan : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -1223,7 +1223,7 @@ interface Date { */ setTime(time: number): number; >setTime : (time: number) => number -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >time : number > : ^^^^^^ @@ -1233,7 +1233,7 @@ interface Date { */ setMilliseconds(ms: number): number; >setMilliseconds : (ms: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ms : number > : ^^^^^^ @@ -1243,7 +1243,7 @@ interface Date { */ setUTCMilliseconds(ms: number): number; >setUTCMilliseconds : (ms: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ms : number > : ^^^^^^ @@ -1254,7 +1254,7 @@ interface Date { */ setSeconds(sec: number, ms?: number): number; >setSeconds : (sec: number, ms?: number) => number -> : ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >sec : number > : ^^^^^^ >ms : number @@ -1267,7 +1267,7 @@ interface Date { */ setUTCSeconds(sec: number, ms?: number): number; >setUTCSeconds : (sec: number, ms?: number) => number -> : ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >sec : number > : ^^^^^^ >ms : number @@ -1281,7 +1281,7 @@ interface Date { */ setMinutes(min: number, sec?: number, ms?: number): number; >setMinutes : (min: number, sec?: number, ms?: number) => number -> : ^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >min : number > : ^^^^^^ >sec : number @@ -1297,7 +1297,7 @@ interface Date { */ setUTCMinutes(min: number, sec?: number, ms?: number): number; >setUTCMinutes : (min: number, sec?: number, ms?: number) => number -> : ^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >min : number > : ^^^^^^ >sec : number @@ -1314,7 +1314,7 @@ interface Date { */ setHours(hours: number, min?: number, sec?: number, ms?: number): number; >setHours : (hours: number, min?: number, sec?: number, ms?: number) => number -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >hours : number > : ^^^^^^ >min : number @@ -1333,7 +1333,7 @@ interface Date { */ setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; >setUTCHours : (hours: number, min?: number, sec?: number, ms?: number) => number -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >hours : number > : ^^^^^^ >min : number @@ -1349,7 +1349,7 @@ interface Date { */ setDate(date: number): number; >setDate : (date: number) => number -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >date : number > : ^^^^^^ @@ -1359,7 +1359,7 @@ interface Date { */ setUTCDate(date: number): number; >setUTCDate : (date: number) => number -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >date : number > : ^^^^^^ @@ -1370,7 +1370,7 @@ interface Date { */ setMonth(month: number, date?: number): number; >setMonth : (month: number, date?: number) => number -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >month : number > : ^^^^^^ >date : number @@ -1383,7 +1383,7 @@ interface Date { */ setUTCMonth(month: number, date?: number): number; >setUTCMonth : (month: number, date?: number) => number -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >month : number > : ^^^^^^ >date : number @@ -1397,7 +1397,7 @@ interface Date { */ setFullYear(year: number, month?: number, date?: number): number; >setFullYear : (year: number, month?: number, date?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >year : number > : ^^^^^^ >month : number @@ -1413,7 +1413,7 @@ interface Date { */ setUTCFullYear(year: number, month?: number, date?: number): number; >setUTCFullYear : (year: number, month?: number, date?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >year : number > : ^^^^^^ >month : number @@ -1434,13 +1434,13 @@ interface Date { /** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object Notation (JSON) serialization. */ toJSON(key?: any): string; >toJSON : (key?: any) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >key : any } declare var Date: { >Date : { (): string; new (): Date; new (value: number): Date; new (value: string): Date; new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date; prototype: Date; parse(s: string): number; UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; now(): number; } -> : ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^ ^^^ +> : ^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^^ new (): Date; new (value: number): Date; @@ -1478,7 +1478,7 @@ declare var Date: { */ parse(s: string): number; >parse : (s: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ @@ -1494,7 +1494,7 @@ declare var Date: { */ UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; >UTC : (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >year : number > : ^^^^^^ >month : number @@ -1542,13 +1542,13 @@ interface RegExpExecArray { concat(...items: string[][]): string[]; >concat : (...items: string[][]) => string[] -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : string[][] > : ^^^^^^^^^^ join(separator?: string): string; >join : (separator?: string) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >separator : string > : ^^^^^^ @@ -1558,7 +1558,7 @@ interface RegExpExecArray { push(...items: string[]): number; >push : (...items: string[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : string[] > : ^^^^^^^^ @@ -1572,7 +1572,7 @@ interface RegExpExecArray { slice(start?: number, end?: number): string[]; >slice : (start?: number, end?: number) => string[] -> : ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -1580,9 +1580,9 @@ interface RegExpExecArray { sort(compareFn?: (a: string, b: string) => number): string[]; >sort : (compareFn?: (a: string, b: string) => number) => string[] -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >compareFn : (a: string, b: string) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : string @@ -1590,13 +1590,13 @@ interface RegExpExecArray { splice(start: number): string[]; >splice : { (start: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^ >start : number > : ^^^^^^ splice(start: number, deleteCount: number, ...items: string[]): string[]; >splice : { (start: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >start : number > : ^^^^^^ >deleteCount : number @@ -1606,13 +1606,13 @@ interface RegExpExecArray { unshift(...items: string[]): number; >unshift : (...items: string[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : string[] > : ^^^^^^^^ indexOf(searchElement: string, fromIndex?: number): number; >indexOf : (searchElement: string, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : string > : ^^^^^^ >fromIndex : number @@ -1620,7 +1620,7 @@ interface RegExpExecArray { lastIndexOf(searchElement: string, fromIndex?: number): number; >lastIndexOf : (searchElement: string, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : string > : ^^^^^^ >fromIndex : number @@ -1628,9 +1628,9 @@ interface RegExpExecArray { every(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): boolean; >every : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: string, index: number, array: string[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : string > : ^^^^^^ >index : number @@ -1641,9 +1641,9 @@ interface RegExpExecArray { some(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): boolean; >some : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: string, index: number, array: string[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : string > : ^^^^^^ >index : number @@ -1654,9 +1654,9 @@ interface RegExpExecArray { forEach(callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any): void; >forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: string, index: number, array: string[]) => void -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : string > : ^^^^^^ >index : number @@ -1667,9 +1667,9 @@ interface RegExpExecArray { map(callbackfn: (value: string, index: number, array: string[]) => any, thisArg?: any): any[]; >map : (callbackfn: (value: string, index: number, array: string[]) => any, thisArg?: any) => any[] -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: string, index: number, array: string[]) => any -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : string > : ^^^^^^ >index : number @@ -1680,9 +1680,9 @@ interface RegExpExecArray { filter(callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any): string[]; >filter : (callbackfn: (value: string, index: number, array: string[]) => boolean, thisArg?: any) => string[] -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: string, index: number, array: string[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : string > : ^^^^^^ >index : number @@ -1693,9 +1693,9 @@ interface RegExpExecArray { reduce(callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any): any; >reduce : (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : any >currentValue : any >currentIndex : number @@ -1706,9 +1706,9 @@ interface RegExpExecArray { reduceRight(callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any): any; >reduceRight : (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any, initialValue?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (previousValue: any, currentValue: any, currentIndex: number, array: string[]) => any -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : any >currentValue : any >currentIndex : number @@ -1726,7 +1726,7 @@ interface RegExp { */ exec(string: string): RegExpExecArray; >exec : (string: string) => RegExpExecArray -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >string : string > : ^^^^^^ @@ -1736,7 +1736,7 @@ interface RegExp { */ test(string: string): boolean; >test : (string: string) => boolean -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >string : string > : ^^^^^^ @@ -1771,7 +1771,7 @@ interface RegExp { } declare var RegExp: { >RegExp : { (pattern: string, flags?: string): RegExp; new (pattern: string, flags?: string): RegExp; $1: string; $2: string; $3: string; $4: string; $5: string; $6: string; $7: string; $8: string; $9: string; lastMatch: string; } -> : ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^ new (pattern: string, flags?: string): RegExp; >pattern : string @@ -1838,7 +1838,7 @@ interface Error { } declare var Error: { >Error : { (message?: string): Error; new (message?: string): Error; prototype: Error; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): Error; >message : string @@ -1857,7 +1857,7 @@ interface EvalError extends Error { } declare var EvalError: { >EvalError : { (message?: string): EvalError; new (message?: string): EvalError; prototype: EvalError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): EvalError; >message : string @@ -1876,7 +1876,7 @@ interface RangeError extends Error { } declare var RangeError: { >RangeError : { (message?: string): RangeError; new (message?: string): RangeError; prototype: RangeError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): RangeError; >message : string @@ -1895,7 +1895,7 @@ interface ReferenceError extends Error { } declare var ReferenceError: { >ReferenceError : { (message?: string): ReferenceError; new (message?: string): ReferenceError; prototype: ReferenceError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): ReferenceError; >message : string @@ -1914,7 +1914,7 @@ interface SyntaxError extends Error { } declare var SyntaxError: { >SyntaxError : { (message?: string): SyntaxError; new (message?: string): SyntaxError; prototype: SyntaxError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): SyntaxError; >message : string @@ -1933,7 +1933,7 @@ interface TypeError extends Error { } declare var TypeError: { >TypeError : { (message?: string): TypeError; new (message?: string): TypeError; prototype: TypeError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): TypeError; >message : string @@ -1952,7 +1952,7 @@ interface URIError extends Error { } declare var URIError: { >URIError : { (message?: string): URIError; new (message?: string): URIError; prototype: URIError; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (message?: string): URIError; >message : string @@ -1976,11 +1976,11 @@ interface JSON { */ parse(text: string, reviver?: (key: any, value: any) => any): any; >parse : (text: string, reviver?: (key: any, value: any) => any) => any -> : ^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >text : string > : ^^^^^^ >reviver : (key: any, value: any) => any -> : ^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : any >value : any @@ -1990,7 +1990,7 @@ interface JSON { */ stringify(value: any): string; >stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >value : any /** @@ -2000,10 +2000,10 @@ interface JSON { */ stringify(value: any, replacer: (key: string, value: any) => any): string; >stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >value : any >replacer : (key: string, value: any) => any -> : ^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >value : any @@ -2015,7 +2015,7 @@ interface JSON { */ stringify(value: any, replacer: any[]): string; >stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >value : any >replacer : any[] > : ^^^^^ @@ -2028,10 +2028,10 @@ interface JSON { */ stringify(value: any, replacer: (key: string, value: any) => any, space: any): string; >stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >value : any >replacer : (key: string, value: any) => any -> : ^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >value : any @@ -2045,7 +2045,7 @@ interface JSON { */ stringify(value: any, replacer: any[], space: any): string; >stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: any): string; (value: any, replacer: any[], space: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >value : any >replacer : any[] > : ^^^^^ @@ -2081,7 +2081,7 @@ interface Array { */ concat(...items: U[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^ >items : U[] > : ^^^ @@ -2091,7 +2091,7 @@ interface Array { */ concat(...items: T[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >items : T[] > : ^^^ @@ -2101,7 +2101,7 @@ interface Array { */ join(separator?: string): string; >join : (separator?: string) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >separator : string > : ^^^^^^ @@ -2118,7 +2118,7 @@ interface Array { */ push(...items: T[]): number; >push : (...items: T[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -2143,7 +2143,7 @@ interface Array { */ slice(start?: number, end?: number): T[]; >slice : (start?: number, end?: number) => T[] -> : ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -2155,9 +2155,9 @@ interface Array { */ sort(compareFn?: (a: T, b: T) => number): T[]; >sort : (compareFn?: (a: T, b: T) => number) => T[] -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >compareFn : (a: T, b: T) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : T @@ -2169,7 +2169,7 @@ interface Array { */ splice(start: number): T[]; >splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >start : number > : ^^^^^^ @@ -2181,7 +2181,7 @@ interface Array { */ splice(start: number, deleteCount: number, ...items: T[]): T[]; >splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >start : number > : ^^^^^^ >deleteCount : number @@ -2195,7 +2195,7 @@ interface Array { */ unshift(...items: T[]): number; >unshift : (...items: T[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -2206,7 +2206,7 @@ interface Array { */ indexOf(searchElement: T, fromIndex?: number): number; >indexOf : (searchElement: T, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : T > : ^ >fromIndex : number @@ -2219,7 +2219,7 @@ interface Array { */ lastIndexOf(searchElement: T, fromIndex?: number): number; >lastIndexOf : (searchElement: T, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : T > : ^ >fromIndex : number @@ -2232,9 +2232,9 @@ interface Array { */ every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; >every : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -2250,9 +2250,9 @@ interface Array { */ some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; >some : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -2268,9 +2268,9 @@ interface Array { */ forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; >forEach : (callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => void -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -2286,9 +2286,9 @@ interface Array { */ map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; >map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => U -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -2304,9 +2304,9 @@ interface Array { */ filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; >filter : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => T[] -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -2322,9 +2322,9 @@ interface Array { */ reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : T > : ^ >currentValue : T @@ -2343,9 +2343,9 @@ interface Array { */ reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : U > : ^ >currentValue : T @@ -2364,9 +2364,9 @@ interface Array { */ reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; >reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : T > : ^ >currentValue : T @@ -2385,9 +2385,9 @@ interface Array { */ reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; >reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : U > : ^ >currentValue : T @@ -2412,7 +2412,7 @@ interface Array { } declare var Array: { >Array : { (arrayLength?: number): any[]; (arrayLength: number): T[]; (...items: T_1[]): T_1[]; new (arrayLength?: number): any[]; new (arrayLength: number): T_2[]; new (...items: T_3[]): T_3[]; isArray(arg: any): boolean; prototype: Array; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^^ new (arrayLength?: number): any[]; >arrayLength : number @@ -2440,7 +2440,7 @@ declare var Array: { isArray(arg: any): boolean; >isArray : (arg: any) => boolean -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : any prototype: Array; diff --git a/tests/baselines/reference/2dArrays.types b/tests/baselines/reference/2dArrays.types index feaf64cb91862..ce8614e1597ee 100644 --- a/tests/baselines/reference/2dArrays.types +++ b/tests/baselines/reference/2dArrays.types @@ -35,7 +35,7 @@ class Board { >this.ships.every(function (val) { return val.isSunk; }) : boolean > : ^^^^^^^ >this.ships.every : { (predicate: (value: Ship, index: number, array: Ship[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Ship, index: number, array: Ship[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >this.ships : Ship[] > : ^^^^^^ >this : this @@ -43,9 +43,9 @@ class Board { >ships : Ship[] > : ^^^^^^ >every : { (predicate: (value: Ship, index: number, array: Ship[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Ship, index: number, array: Ship[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >function (val) { return val.isSunk; } : (val: Ship) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >val : Ship > : ^^^^ >val.isSunk : boolean diff --git a/tests/baselines/reference/ArrowFunction1.types b/tests/baselines/reference/ArrowFunction1.types index 699aba71237a1..3c0f07000f4ab 100644 --- a/tests/baselines/reference/ArrowFunction1.types +++ b/tests/baselines/reference/ArrowFunction1.types @@ -3,9 +3,9 @@ === ArrowFunction1.ts === var v = (a: ) => { >v : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a: ) => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ diff --git a/tests/baselines/reference/ArrowFunction4.types b/tests/baselines/reference/ArrowFunction4.types index c665a3ae8df88..34f146f22b4ae 100644 --- a/tests/baselines/reference/ArrowFunction4.types +++ b/tests/baselines/reference/ArrowFunction4.types @@ -3,9 +3,9 @@ === ArrowFunction4.ts === var v = (a, b) => { >v : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(a, b) => { } : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any >b : any diff --git a/tests/baselines/reference/ArrowFunctionExpression1.types b/tests/baselines/reference/ArrowFunctionExpression1.types index c2f02485b9ded..07f272b104f0d 100644 --- a/tests/baselines/reference/ArrowFunctionExpression1.types +++ b/tests/baselines/reference/ArrowFunctionExpression1.types @@ -3,9 +3,9 @@ === ArrowFunctionExpression1.ts === var v = (public x: string) => { }; >v : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(public x: string) => { } : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithModuleMemberThatUsesClassTypeParameter.types b/tests/baselines/reference/ClassAndModuleThatMergeWithModuleMemberThatUsesClassTypeParameter.types index b8447e9d1946d..3b9a05088c0b9 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithModuleMemberThatUsesClassTypeParameter.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithModuleMemberThatUsesClassTypeParameter.types @@ -22,7 +22,7 @@ module clodule1 { function f(x: T) { } >f : (x: T) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndGenericClassStaticFunctionOfTheSameName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndGenericClassStaticFunctionOfTheSameName.types index 94e5eb40743fd..b5d83b085fe32 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndGenericClassStaticFunctionOfTheSameName.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndGenericClassStaticFunctionOfTheSameName.types @@ -15,7 +15,7 @@ class clodule { static fn(id: U) { } >fn : (id: U) => void -> : ^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >id : U > : ^ } @@ -27,7 +27,7 @@ module clodule { // error: duplicate identifier expected export function fn(x: T, y: T): T { >fn : (x: T, y: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndNonGenericClassStaticFunctionOfTheSameName.types b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndNonGenericClassStaticFunctionOfTheSameName.types index 5e43dd5b2cc42..4c07c54074623 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndNonGenericClassStaticFunctionOfTheSameName.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedGenericFunctionAndNonGenericClassStaticFunctionOfTheSameName.types @@ -15,7 +15,7 @@ class clodule { static fn(id: string) { } >fn : (id: string) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >id : string > : ^^^^^^ } @@ -27,7 +27,7 @@ module clodule { // error: duplicate identifier expected export function fn(x: T, y: T): T { >fn : (x: T, y: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedStaticFunctionUsingClassPrivateStatics.types b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedStaticFunctionUsingClassPrivateStatics.types index b1b565d32da69..dab3a189612fd 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedStaticFunctionUsingClassPrivateStatics.types +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithModulesExportedStaticFunctionUsingClassPrivateStatics.types @@ -15,7 +15,7 @@ class clodule { private static sfn(id: string) { return 42; } >sfn : (id: string) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >id : string > : ^^^^^^ >42 : 42 @@ -29,7 +29,7 @@ module clodule { // error: duplicate identifier expected export function fn(x: T, y: T): number { >fn : (x: T, y: T) => number -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -39,11 +39,11 @@ module clodule { >clodule.sfn('a') : number > : ^^^^^^ >clodule.sfn : (id: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >clodule : typeof clodule > : ^^^^^^^^^^^^^^ >sfn : (id: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'a' : "a" > : ^^^ } diff --git a/tests/baselines/reference/ES5For-of1.types b/tests/baselines/reference/ES5For-of1.types index adf102b01c9b6..19c89e862f85b 100644 --- a/tests/baselines/reference/ES5For-of1.types +++ b/tests/baselines/reference/ES5For-of1.types @@ -17,11 +17,11 @@ for (var v of ['a', 'b', 'c']) { >console.log(v) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >v : string > : ^^^^^^ } diff --git a/tests/baselines/reference/ES5For-of22.types b/tests/baselines/reference/ES5For-of22.types index 3b41ea819bc2f..31969c20e73ca 100644 --- a/tests/baselines/reference/ES5For-of22.types +++ b/tests/baselines/reference/ES5For-of22.types @@ -23,11 +23,11 @@ for (var x of [1, 2, 3]) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } diff --git a/tests/baselines/reference/ES5For-of23.types b/tests/baselines/reference/ES5For-of23.types index c1f2dd0719f92..11c58f1a1fd2f 100644 --- a/tests/baselines/reference/ES5For-of23.types +++ b/tests/baselines/reference/ES5For-of23.types @@ -23,11 +23,11 @@ for (var x of [1, 2, 3]) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } diff --git a/tests/baselines/reference/ES5For-of33.types b/tests/baselines/reference/ES5For-of33.types index fd399d0ffe671..22515744ce282 100644 --- a/tests/baselines/reference/ES5For-of33.types +++ b/tests/baselines/reference/ES5For-of33.types @@ -17,11 +17,11 @@ for (var v of ['a', 'b', 'c']) { >console.log(v) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >v : string > : ^^^^^^ } diff --git a/tests/baselines/reference/ES5For-of37.types b/tests/baselines/reference/ES5For-of37.types index e360765483b8a..7b98595802d01 100644 --- a/tests/baselines/reference/ES5For-of37.types +++ b/tests/baselines/reference/ES5For-of37.types @@ -54,11 +54,11 @@ for (const i of [0, 1, 2, 3, 4]) { >console.log(i) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >i : number > : ^^^^^^ @@ -69,11 +69,11 @@ for (const i of [0, 1, 2, 3, 4]) { >console.log('E %s %s', i, err) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'E %s %s' : "E %s %s" > : ^^^^^^^^^ >i : number diff --git a/tests/baselines/reference/ES5For-ofTypeCheck13.types b/tests/baselines/reference/ES5For-ofTypeCheck13.types index 3343bbe803234..57b4befbd990d 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck13.types +++ b/tests/baselines/reference/ES5For-ofTypeCheck13.types @@ -13,11 +13,11 @@ strSet.add('Hello') >strSet.add('Hello') : Set > : ^^^^^^^^^^^ >strSet.add : (value: string) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >strSet : Set > : ^^^^^^^^^^^ >add : (value: string) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >'Hello' : "Hello" > : ^^^^^^^ @@ -25,11 +25,11 @@ strSet.add('World') >strSet.add('World') : Set > : ^^^^^^^^^^^ >strSet.add : (value: string) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >strSet : Set > : ^^^^^^^^^^^ >add : (value: string) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >'World' : "World" > : ^^^^^^^ diff --git a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types index 935d69a8af103..fdf5cf210f021 100644 --- a/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types +++ b/tests/baselines/reference/ExportClassWhichExtendsInterfaceWithInaccessibleType.types @@ -16,7 +16,7 @@ module A { fromOrigin(p: Point): number; >fromOrigin : (p: Point) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ } @@ -33,7 +33,7 @@ module A { fromOrigin(p: Point) { >fromOrigin : (p: Point) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types index c7bd098b8e5e2..63ad5111ad3aa 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types @@ -73,7 +73,7 @@ module A { static fromorigin2d(p: Point): Line{ >fromorigin2d : (p: Point) => Line -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types index daab7a6cb0edc..7a9e5205d7625 100644 --- a/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithAccessibleTypesInParameterAndReturnTypeAnnotation.types @@ -31,7 +31,7 @@ module A { export function fromOrigin(p: Point): Line { >fromOrigin : (p: Point) => Line -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types index 7ad9b1130e781..ec8bc29175fe7 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInParameterTypeAnnotation.types @@ -31,7 +31,7 @@ module A { export function fromOrigin(p: Point): Line { >fromOrigin : (p: Point) => Line -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types index e4502f6e3ca10..36ce1aa0845e7 100644 --- a/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types +++ b/tests/baselines/reference/ExportFunctionWithInaccessibleTypesInReturnTypeAnnotation.types @@ -31,7 +31,7 @@ module A { export function fromOrigin(p: Point): Line { >fromOrigin : (p: Point) => Line -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types index fe4726debfaa9..180f772f4c58b 100644 --- a/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types +++ b/tests/baselines/reference/ExportModuleWithAccessibleTypesOnItsExportedMembers.types @@ -46,7 +46,7 @@ module A { static fromOrigin(p: Point) { >fromOrigin : (p: Point) => Line -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/FunctionDeclaration10_es6.types b/tests/baselines/reference/FunctionDeclaration10_es6.types index 6b7ca962c0444..95bc9c83ddadf 100644 --- a/tests/baselines/reference/FunctionDeclaration10_es6.types +++ b/tests/baselines/reference/FunctionDeclaration10_es6.types @@ -3,7 +3,7 @@ === FunctionDeclaration10_es6.ts === function * foo(a = yield => yield) { >foo : (a: any, yield: any) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >yield : any diff --git a/tests/baselines/reference/FunctionDeclaration12_es6.types b/tests/baselines/reference/FunctionDeclaration12_es6.types index 32fecb0f6636c..47707a0cdcb06 100644 --- a/tests/baselines/reference/FunctionDeclaration12_es6.types +++ b/tests/baselines/reference/FunctionDeclaration12_es6.types @@ -5,7 +5,7 @@ var v = function * yield() { } >v : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function * yield() { } : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >yield : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/FunctionDeclaration2_es6.types b/tests/baselines/reference/FunctionDeclaration2_es6.types index 1eab6ad301445..eb85c4124006f 100644 --- a/tests/baselines/reference/FunctionDeclaration2_es6.types +++ b/tests/baselines/reference/FunctionDeclaration2_es6.types @@ -3,6 +3,6 @@ === FunctionDeclaration2_es6.ts === function f(yield) { >f : (yield: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >yield : any } diff --git a/tests/baselines/reference/FunctionDeclaration3_es6.types b/tests/baselines/reference/FunctionDeclaration3_es6.types index bc3a7009ced9a..35b5f07c41132 100644 --- a/tests/baselines/reference/FunctionDeclaration3_es6.types +++ b/tests/baselines/reference/FunctionDeclaration3_es6.types @@ -3,7 +3,7 @@ === FunctionDeclaration3_es6.ts === function f(yield = yield) { >f : (yield?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >yield : any > : ^^^ >yield : any diff --git a/tests/baselines/reference/FunctionDeclaration5_es6.types b/tests/baselines/reference/FunctionDeclaration5_es6.types index b4389f101620c..33e37b703aa31 100644 --- a/tests/baselines/reference/FunctionDeclaration5_es6.types +++ b/tests/baselines/reference/FunctionDeclaration5_es6.types @@ -3,7 +3,7 @@ === FunctionDeclaration5_es6.ts === function*foo(yield) { >foo : (yield: any) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >yield : any > : ^^^ } diff --git a/tests/baselines/reference/FunctionDeclaration6_es6.types b/tests/baselines/reference/FunctionDeclaration6_es6.types index 49e4b56c26fc7..ef0070a31949a 100644 --- a/tests/baselines/reference/FunctionDeclaration6_es6.types +++ b/tests/baselines/reference/FunctionDeclaration6_es6.types @@ -3,7 +3,7 @@ === FunctionDeclaration6_es6.ts === function*foo(a = yield) { >foo : (a?: any) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >yield : any diff --git a/tests/baselines/reference/FunctionDeclaration7_es6.types b/tests/baselines/reference/FunctionDeclaration7_es6.types index acb86e18254f4..f7929870d1be4 100644 --- a/tests/baselines/reference/FunctionDeclaration7_es6.types +++ b/tests/baselines/reference/FunctionDeclaration7_es6.types @@ -8,7 +8,7 @@ function*bar() { // 'yield' here is an identifier, and not a yield expression. function*foo(a = yield) { >foo : (a?: any) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >yield : any diff --git a/tests/baselines/reference/FunctionDeclaration9_es6.types b/tests/baselines/reference/FunctionDeclaration9_es6.types index 89ae9e66b99c3..2e6bbf1928bf6 100644 --- a/tests/baselines/reference/FunctionDeclaration9_es6.types +++ b/tests/baselines/reference/FunctionDeclaration9_es6.types @@ -9,10 +9,10 @@ function * foo() { >v : { [x: number]: () => Generator; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [yield]: foo } : { [x: number]: () => Generator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[yield] : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >yield : any >foo : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/FunctionExpression1_es6.types b/tests/baselines/reference/FunctionExpression1_es6.types index e41e66b2d99bc..e7774351de638 100644 --- a/tests/baselines/reference/FunctionExpression1_es6.types +++ b/tests/baselines/reference/FunctionExpression1_es6.types @@ -5,5 +5,5 @@ var v = function * () { } >v : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function * () { } : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/FunctionExpression2_es6.types b/tests/baselines/reference/FunctionExpression2_es6.types index d0030cc223812..e76d74a56f477 100644 --- a/tests/baselines/reference/FunctionExpression2_es6.types +++ b/tests/baselines/reference/FunctionExpression2_es6.types @@ -5,7 +5,7 @@ var v = function * foo() { } >v : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function * foo() { } : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types index ae2f520ac0711..9eb54b1ef1271 100644 --- a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types +++ b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types @@ -5,7 +5,7 @@ var v = { *[foo()]() { } } >v : { [x: number]: () => Generator; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ *[foo()]() { } } : { [x: number]: () => Generator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[foo()] : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo() : any diff --git a/tests/baselines/reference/ModuleWithExportedAndNonExportedFunctions.types b/tests/baselines/reference/ModuleWithExportedAndNonExportedFunctions.types index 44c48f2c259e6..1862adfdd7db7 100644 --- a/tests/baselines/reference/ModuleWithExportedAndNonExportedFunctions.types +++ b/tests/baselines/reference/ModuleWithExportedAndNonExportedFunctions.types @@ -7,7 +7,7 @@ module A { export function fn(s: string) { >fn : (s: string) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -18,7 +18,7 @@ module A { export function fng(s: T): U { >fng : (s: T) => U -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : T > : ^ @@ -27,7 +27,7 @@ module A { function fn2(s: string) { >fn2 : (s: string) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -38,7 +38,7 @@ module A { function fng2(s: T): U { >fng2 : (s: T) => U -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : T > : ^ @@ -49,35 +49,35 @@ module A { // these should not be errors since the functions are exported var fn: (s: string) => boolean; >fn : (s: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ var fn = A.fn; >fn : (s: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >A.fn : (s: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >A : typeof A > : ^^^^^^^^ >fn : (s: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ var fng: (s: T) => U; >fng : (s: T) => U -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : T > : ^ var fng = A.fng; // bug 838015 >fng : (s: T) => U -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >A.fng : (s: T) => U -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >A : typeof A > : ^^^^^^^^ >fng : (s: T) => U -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ // these should be errors since the functions are not exported var fn2 = A.fn2; diff --git a/tests/baselines/reference/ParameterList4.types b/tests/baselines/reference/ParameterList4.types index f00b35b6ac662..5a5d0b9aefe52 100644 --- a/tests/baselines/reference/ParameterList4.types +++ b/tests/baselines/reference/ParameterList4.types @@ -3,7 +3,7 @@ === ParameterList4.ts === function F(public A) { >F : (A: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >A : any > : ^^^ } diff --git a/tests/baselines/reference/ParameterList6.types b/tests/baselines/reference/ParameterList6.types index cd73479ebb018..20f3f7cbf64f9 100644 --- a/tests/baselines/reference/ParameterList6.types +++ b/tests/baselines/reference/ParameterList6.types @@ -7,7 +7,7 @@ class C { constructor(C: (public A) => any) { >C : (A: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >A : any > : ^^^ } diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types index c7180698f7cbe..f6b972471f8a6 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedClassesOfTheSameName.types @@ -29,7 +29,7 @@ module A { fromCarthesian(p: A.Point) { >fromCarthesian : (p: A.Point) => { x: number; y: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : A.Point > : ^^^^^^^ >A : any diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types index 0bbedc284fbb1..b30a2f7115cb6 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedInterfacesOfTheSameName.types @@ -79,7 +79,7 @@ module X { // ensure merges as expected var l: { new (s: A.Point, e: A.Point); } >l : new (s: A.Point, e: A.Point) => any -> : ^^^^^^^^ ^^^^^ ^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >s : A.Point > : ^^^^^^^ >A : any @@ -91,7 +91,7 @@ var l: { new (s: A.Point, e: A.Point); } var l: X.Y.Z.Line; >l : new (s: A.Point, e: A.Point) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >X : any > : ^^^ >Y : any diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types index 30e75875aca69..7b8940fedd9d3 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedAndNonExportedLocalVarsOfTheSameName.types @@ -21,7 +21,7 @@ module A { export function mirror(p: T) { >mirror : (p: T) => { x: number; y: number; } -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : T > : ^ @@ -123,7 +123,7 @@ var o = A.Utils.mirror(o); >A.Utils.mirror(o) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >A.Utils.mirror : (p: T) => { x: number; y: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >A.Utils : typeof A.Utils > : ^^^^^^^^^^^^^^ >A : typeof A @@ -131,7 +131,7 @@ var o = A.Utils.mirror(o); >Utils : typeof A.Utils > : ^^^^^^^^^^^^^^ >mirror : (p: T) => { x: number; y: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types index dfb513ddc6567..ccba346ff85f6 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedInterfacesOfTheSameName.types @@ -83,7 +83,7 @@ module X { // ensure merges as expected var l: { start: A.Point; end: A.Point; new (s: A.Point, e: A.Point); } >l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; } -> : ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >start : A.Point > : ^^^^^^^ >A : any @@ -103,7 +103,7 @@ var l: { start: A.Point; end: A.Point; new (s: A.Point, e: A.Point); } var l: X.Y.Z.Line; >l : { new (s: A.Point, e: A.Point): any; start: A.Point; end: A.Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >X : any > : ^^^ >Y : any diff --git a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.types b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.types index 7a186f418e59c..c59bf4224a037 100644 --- a/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.types +++ b/tests/baselines/reference/TwoInternalModulesThatMergeEachWithExportedLocalVarsOfTheSameName.types @@ -21,7 +21,7 @@ export module A { export function mirror(p: T) { >mirror : (p: T) => { x: number; y: number; } -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : T > : ^ diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types index 7bf6e2110f2b5..55a47b3cd3d9d 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndDifferentCommonRoot.types @@ -25,7 +25,7 @@ module Root { export function mirror(p: T) { >mirror : (p: T) => { x: number; y: number; } -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : T > : ^ diff --git a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types index 70832c862c1ce..c4332745638ba 100644 --- a/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types +++ b/tests/baselines/reference/TwoInternalModulesWithTheSameNameAndSameCommonRoot.types @@ -21,7 +21,7 @@ module A { export function mirror(p: T) { >mirror : (p: T) => { x: number; y: number; } -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : T > : ^ @@ -117,7 +117,7 @@ var o = A.Utils.mirror(o); >A.Utils.mirror(o) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >A.Utils.mirror : (p: T) => { x: number; y: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >A.Utils : typeof A.Utils > : ^^^^^^^^^^^^^^ >A : typeof A @@ -125,7 +125,7 @@ var o = A.Utils.mirror(o); >Utils : typeof A.Utils > : ^^^^^^^^^^^^^^ >mirror : (p: T) => { x: number; y: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/TypeGuardWithArrayUnion.types b/tests/baselines/reference/TypeGuardWithArrayUnion.types index 2134fefee5d90..383b3398340b9 100644 --- a/tests/baselines/reference/TypeGuardWithArrayUnion.types +++ b/tests/baselines/reference/TypeGuardWithArrayUnion.types @@ -12,7 +12,7 @@ class Message { function saySize(message: Message | Message[]) { >saySize : (message: Message | Message[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >message : Message | Message[] > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/TypeGuardWithEnumUnion.types b/tests/baselines/reference/TypeGuardWithEnumUnion.types index f1d71b454ed17..69bf80d6428a9 100644 --- a/tests/baselines/reference/TypeGuardWithEnumUnion.types +++ b/tests/baselines/reference/TypeGuardWithEnumUnion.types @@ -13,7 +13,7 @@ enum Color { R, G, B } function f1(x: Color | string) { >f1 : (x: Color | string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | Color > : ^^^^^^^^^^^^^^ @@ -52,7 +52,7 @@ function f1(x: Color | string) { function f2(x: Color | string | string[]) { >f2 : (x: Color | string | string[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | Color | string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/YieldExpression15_es6.types b/tests/baselines/reference/YieldExpression15_es6.types index 0ae0524e97da8..be45bebc7582a 100644 --- a/tests/baselines/reference/YieldExpression15_es6.types +++ b/tests/baselines/reference/YieldExpression15_es6.types @@ -5,7 +5,7 @@ var v = () => { >v : () => void > : ^^^^^^^^^^ >() => { yield foo } : () => void -> : ^^^^^^^^^^ +> : yield foo >yield foo : any diff --git a/tests/baselines/reference/YieldExpression9_es6.types b/tests/baselines/reference/YieldExpression9_es6.types index 71aedc31e8a4a..bbad91513a30f 100644 --- a/tests/baselines/reference/YieldExpression9_es6.types +++ b/tests/baselines/reference/YieldExpression9_es6.types @@ -5,7 +5,7 @@ var v = function*() { >v : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function*() { yield(foo);} : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : yield(foo); >yield(foo) : any diff --git a/tests/baselines/reference/abstractClassUnionInstantiation.types b/tests/baselines/reference/abstractClassUnionInstantiation.types index 6cd68b4d85ce3..7780977a92b52 100644 --- a/tests/baselines/reference/abstractClassUnionInstantiation.types +++ b/tests/baselines/reference/abstractClassUnionInstantiation.types @@ -75,7 +75,7 @@ new cls3(); // should work >[ConcreteA, AbstractA, AbstractB].map(cls => new cls()) : any[] > : ^^^^^ >[ConcreteA, AbstractA, AbstractB].map : (callbackfn: (value: typeof ConcreteA | typeof AbstractA | typeof AbstractB, index: number, array: (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[ConcreteA, AbstractA, AbstractB] : (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ConcreteA : typeof ConcreteA @@ -85,9 +85,9 @@ new cls3(); // should work >AbstractB : typeof AbstractB > : ^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: typeof ConcreteA | typeof AbstractA | typeof AbstractB, index: number, array: (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >cls => new cls() : (cls: typeof ConcreteA | typeof AbstractA | typeof AbstractB) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cls : typeof ConcreteA | typeof AbstractA | typeof AbstractB > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new cls() : any @@ -99,7 +99,7 @@ new cls3(); // should work >[AbstractA, AbstractB, ConcreteA].map(cls => new cls()) : any[] > : ^^^^^ >[AbstractA, AbstractB, ConcreteA].map : (callbackfn: (value: typeof ConcreteA | typeof AbstractA | typeof AbstractB, index: number, array: (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[AbstractA, AbstractB, ConcreteA] : (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >AbstractA : typeof AbstractA @@ -109,9 +109,9 @@ new cls3(); // should work >ConcreteA : typeof ConcreteA > : ^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: typeof ConcreteA | typeof AbstractA | typeof AbstractB, index: number, array: (typeof ConcreteA | typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >cls => new cls() : (cls: typeof ConcreteA | typeof AbstractA | typeof AbstractB) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cls : typeof ConcreteA | typeof AbstractA | typeof AbstractB > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new cls() : any @@ -123,7 +123,7 @@ new cls3(); // should work >[ConcreteA, ConcreteB].map(cls => new cls()) : ConcreteA[] > : ^^^^^^^^^^^ >[ConcreteA, ConcreteB].map : (callbackfn: (value: typeof ConcreteA, index: number, array: (typeof ConcreteA)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[ConcreteA, ConcreteB] : (typeof ConcreteA)[] > : ^^^^^^^^^^^^^^^^^^^^ >ConcreteA : typeof ConcreteA @@ -131,9 +131,9 @@ new cls3(); // should work >ConcreteB : typeof ConcreteB > : ^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: typeof ConcreteA, index: number, array: (typeof ConcreteA)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >cls => new cls() : (cls: typeof ConcreteA) => ConcreteA -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cls : typeof ConcreteA > : ^^^^^^^^^^^^^^^^ >new cls() : ConcreteA @@ -145,7 +145,7 @@ new cls3(); // should work >[AbstractA, AbstractB].map(cls => new cls()) : any[] > : ^^^^^ >[AbstractA, AbstractB].map : (callbackfn: (value: typeof AbstractA | typeof AbstractB, index: number, array: (typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[AbstractA, AbstractB] : (typeof AbstractA | typeof AbstractB)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >AbstractA : typeof AbstractA @@ -153,9 +153,9 @@ new cls3(); // should work >AbstractB : typeof AbstractB > : ^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: typeof AbstractA | typeof AbstractB, index: number, array: (typeof AbstractA | typeof AbstractB)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >cls => new cls() : (cls: typeof AbstractA | typeof AbstractB) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cls : typeof AbstractA | typeof AbstractB > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new cls() : any diff --git a/tests/baselines/reference/abstractProperty(target=es2015).types b/tests/baselines/reference/abstractProperty(target=es2015).types index 640dac290ad2b..eaf2ddcd5813b 100644 --- a/tests/baselines/reference/abstractProperty(target=es2015).types +++ b/tests/baselines/reference/abstractProperty(target=es2015).types @@ -17,11 +17,11 @@ abstract class A { >console.log(this.x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.x : string > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/abstractProperty(target=esnext).types b/tests/baselines/reference/abstractProperty(target=esnext).types index 640dac290ad2b..eaf2ddcd5813b 100644 --- a/tests/baselines/reference/abstractProperty(target=esnext).types +++ b/tests/baselines/reference/abstractProperty(target=esnext).types @@ -17,11 +17,11 @@ abstract class A { >console.log(this.x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.x : string > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/abstractPropertyInConstructor.types b/tests/baselines/reference/abstractPropertyInConstructor.types index 63a861f1867c2..ae847a4880d36 100644 --- a/tests/baselines/reference/abstractPropertyInConstructor.types +++ b/tests/baselines/reference/abstractPropertyInConstructor.types @@ -15,15 +15,15 @@ abstract class AbstractClass { >this.method(parseInt(str)) : void > : ^^^^ >this.method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >parseInt(str) : number > : ^^^^^^ >parseInt : (string: string, radix?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >str : string > : ^^^^^^ @@ -65,11 +65,11 @@ abstract class AbstractClass { >this.cb(str) : void > : ^^^^ >this.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >str : string > : ^^^^^^ @@ -78,7 +78,7 @@ abstract class AbstractClass { >innerFunction : () => string > : ^^^^^^^^^^^^ >() => { return this.prop; } : () => string -> : ^^^^^^^^^^^^ +> : return this.prop; >this.prop : string @@ -94,11 +94,11 @@ abstract class AbstractClass { >other.cb(other.prop) : void > : ^^^^ >other.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >other : AbstractClass > : ^^^^^^^^^^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >other.prop : string > : ^^^^^^ >other : AbstractClass @@ -113,13 +113,13 @@ abstract class AbstractClass { abstract cb: (s: string) => void; >cb : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ abstract method(num: number): void; >method : (num: number) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >num : number > : ^^^^^^ @@ -137,7 +137,7 @@ abstract class AbstractClass { >fn : () => string > : ^^^^^^^^^^^^ >() => this.prop : () => string -> : ^^^^^^^^^^^^ +> : >this.prop : string > : ^^^^^^ >this : this @@ -179,9 +179,9 @@ abstract class DerivedAbstractClass extends AbstractClass { cb = (s: string) => {}; >cb : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(s: string) => {} : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : >s : string > : ^^^^^^ @@ -208,11 +208,11 @@ abstract class DerivedAbstractClass extends AbstractClass { >this.cb(this.prop.toLowerCase()) : void > : ^^^^ >this.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.prop.toLowerCase() : string > : ^^^^^^ >this.prop.toLowerCase : () => string @@ -230,11 +230,11 @@ abstract class DerivedAbstractClass extends AbstractClass { >this.method(1) : void > : ^^^^ >this.method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -243,11 +243,11 @@ abstract class DerivedAbstractClass extends AbstractClass { >other.cb(other.prop) : void > : ^^^^ >other.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >other : AbstractClass > : ^^^^^^^^^^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >other.prop : string > : ^^^^^^ >other : AbstractClass @@ -259,11 +259,11 @@ abstract class DerivedAbstractClass extends AbstractClass { >yetAnother.cb(yetAnother.prop) : void > : ^^^^ >yetAnother.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >yetAnother : DerivedAbstractClass > : ^^^^^^^^^^^^^^^^^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >yetAnother.prop : string > : ^^^^^^ >yetAnother : DerivedAbstractClass @@ -287,9 +287,9 @@ class Implementation extends DerivedAbstractClass { cb = (s: string) => {}; >cb : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(s: string) => {} : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : >s : string > : ^^^^^^ @@ -317,11 +317,11 @@ class Implementation extends DerivedAbstractClass { >this.cb(this.prop) : void > : ^^^^ >this.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.prop : string > : ^^^^^^ >this : this @@ -332,7 +332,7 @@ class Implementation extends DerivedAbstractClass { method(n: number) { >method : (n: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ @@ -340,11 +340,11 @@ class Implementation extends DerivedAbstractClass { >this.cb(this.prop + n) : void > : ^^^^ >this.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.prop + n : string > : ^^^^^^ >this.prop : string @@ -378,11 +378,11 @@ class User { >a.cb("hi") : void > : ^^^^ >a.cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : AbstractClass > : ^^^^^^^^^^^^^ >cb : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"hi" : "hi" > : ^^^^ @@ -390,11 +390,11 @@ class User { >a.method(12) : void > : ^^^^ >a.method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : AbstractClass > : ^^^^^^^^^^^^^ >method : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >12 : 12 > : ^^ diff --git a/tests/baselines/reference/acceptSymbolAsWeakType.types b/tests/baselines/reference/acceptSymbolAsWeakType.types index 70c0ceb96b854..dee19abb1c2a0 100644 --- a/tests/baselines/reference/acceptSymbolAsWeakType.types +++ b/tests/baselines/reference/acceptSymbolAsWeakType.types @@ -27,11 +27,11 @@ ws.add(s); >ws.add(s) : WeakSet > : ^^^^^^^^^^^^^^^ >ws.add : (value: symbol) => WeakSet -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >add : (value: symbol) => WeakSet -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -39,11 +39,11 @@ ws.has(s); >ws.has(s) : boolean > : ^^^^^^^ >ws.has : (value: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >has : (value: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -51,11 +51,11 @@ ws.delete(s); >ws.delete(s) : boolean > : ^^^^^^^ >ws.delete : (value: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >delete : (value: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -79,11 +79,11 @@ wm.set(s, true); >wm.set(s, true) : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >wm.set : (key: symbol, value: boolean) => WeakMap -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >set : (key: symbol, value: boolean) => WeakMap -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ >true : true @@ -93,11 +93,11 @@ wm.has(s); >wm.has(s) : boolean > : ^^^^^^^ >wm.has : (key: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >has : (key: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -105,11 +105,11 @@ wm.get(s); >wm.get(s) : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >wm.get : (key: symbol) => boolean | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >get : (key: symbol) => boolean | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -117,11 +117,11 @@ wm.delete(s); >wm.delete(s) : boolean > : ^^^^^^^ >wm.delete : (key: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >delete : (key: symbol) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -158,12 +158,12 @@ const f = new FinalizationRegistry(() => {}); f.register(s, null); >f.register(s, null) : void > : ^^^^ ->f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^ >f : FinalizationRegistry > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -171,11 +171,11 @@ f.unregister(s); >f.unregister(s) : void > : ^^^^ >f.unregister : (unregisterToken: WeakKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : FinalizationRegistry > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unregister : (unregisterToken: WeakKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : symbol > : ^^^^^^ diff --git a/tests/baselines/reference/accessorAccidentalCallDiagnostic.types b/tests/baselines/reference/accessorAccidentalCallDiagnostic.types index 3e294d74d127c..84013fe02eb17 100644 --- a/tests/baselines/reference/accessorAccidentalCallDiagnostic.types +++ b/tests/baselines/reference/accessorAccidentalCallDiagnostic.types @@ -14,7 +14,7 @@ class Test24554 { } function test24554(x: Test24554) { >test24554 : (x: Test24554) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : Test24554 > : ^^^^^^^^^ diff --git a/tests/baselines/reference/accessorInferredReturnTypeErrorInReturnStatement.types b/tests/baselines/reference/accessorInferredReturnTypeErrorInReturnStatement.types index a051010c14c47..30c8a1fee1a2d 100644 --- a/tests/baselines/reference/accessorInferredReturnTypeErrorInReturnStatement.types +++ b/tests/baselines/reference/accessorInferredReturnTypeErrorInReturnStatement.types @@ -15,7 +15,7 @@ export var basePrototype = { >_this : { readonly primaryPath: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : { readonly primaryPath: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return _this.collection.schema.primaryPath; >_this.collection.schema.primaryPath : any diff --git a/tests/baselines/reference/accessorsAreNotContextuallyTyped.types b/tests/baselines/reference/accessorsAreNotContextuallyTyped.types index 14a6b43faca65..09e62e501fb9e 100644 --- a/tests/baselines/reference/accessorsAreNotContextuallyTyped.types +++ b/tests/baselines/reference/accessorsAreNotContextuallyTyped.types @@ -9,20 +9,20 @@ class C { set x(v: (a: string) => string) { >x : (a: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : (a: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ } get x() { >x : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ return (x: string) => ""; >(x: string) => "" : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" @@ -40,11 +40,11 @@ var r = c.x(''); // string >c.x('') : string > : ^^^^^^ >c.x : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >c : C > : ^ >x : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/accessorsOverrideProperty2.types b/tests/baselines/reference/accessorsOverrideProperty2.types index d9165d2b77624..ff2232b1569db 100644 --- a/tests/baselines/reference/accessorsOverrideProperty2.types +++ b/tests/baselines/reference/accessorsOverrideProperty2.types @@ -32,11 +32,11 @@ class Derived extends Base { >console.log(`x was set to ${value}`) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >`x was set to ${value}` : string > : ^^^^^^ >value : number @@ -55,11 +55,11 @@ console.log(obj.x); // number >console.log(obj.x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >obj.x : number > : ^^^^^^ >obj : Derived diff --git a/tests/baselines/reference/accessorsOverrideProperty8.types b/tests/baselines/reference/accessorsOverrideProperty8.types index 26507f6dbf3ad..c40d1d47cb18d 100644 --- a/tests/baselines/reference/accessorsOverrideProperty8.types +++ b/tests/baselines/reference/accessorsOverrideProperty8.types @@ -22,7 +22,7 @@ type AnyCtor

= new (...a: any[]) => P declare function classWithProperties(properties: T, klass: AnyCtor

): { >classWithProperties : (properties: T, klass: AnyCtor

) => { new (): P & Properties; prototype: P & Properties; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >properties : T @@ -39,11 +39,11 @@ declare function classWithPropertiesBase : { new (): Base & Properties<{ readonly x: "boolean"; y: "string"; }>; prototype: Base & Properties<{ readonly x: "boolean"; y: "string"; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >classWithProperties({ get x() { return 'boolean' as const }, y: 'string',}, class Base {}) : { new (): Base & Properties<{ readonly x: "boolean"; y: "string"; }>; prototype: Base & Properties<{ readonly x: "boolean"; y: "string"; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >classWithProperties : (properties: T, klass: AnyCtor

) => { new (): P & Properties; prototype: P & Properties; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ get x() { return 'boolean' as const }, y: 'string',} : { readonly x: "boolean"; y: "string"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/accessorsOverrideProperty9.types b/tests/baselines/reference/accessorsOverrideProperty9.types index b496254164993..3a0192383ca9e 100644 --- a/tests/baselines/reference/accessorsOverrideProperty9.types +++ b/tests/baselines/reference/accessorsOverrideProperty9.types @@ -50,7 +50,7 @@ interface ApiItemContainerMixin extends ApiItem { function ApiItemContainerMixin( >ApiItemContainerMixin : (baseClass: TBaseClass) => TBaseClass & (new (...args: any[]) => ApiItemContainerMixin) -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ baseClass: TBaseClass >baseClass : TBaseClass @@ -92,7 +92,7 @@ function ApiItemContainerMixin( return MixedClass; >MixedClass : ((abstract new (...args: any[]) => MixedClass) & { prototype: ApiItemContainerMixin.MixedClass; }) & TBaseClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } // Subclass inheriting from mixin @@ -102,7 +102,7 @@ export class ApiEnum extends ApiItemContainerMixin(ApiItem) { >ApiItemContainerMixin(ApiItem) : ApiItem & ApiItemContainerMixin > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ApiItemContainerMixin : (baseClass: TBaseClass) => TBaseClass & (new (...args: any[]) => ApiItemContainerMixin) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ApiItem : typeof ApiItem > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/addMoreOverloadsToBaseSignature.types b/tests/baselines/reference/addMoreOverloadsToBaseSignature.types index b0c22b9619384..e0a2748fdad97 100644 --- a/tests/baselines/reference/addMoreOverloadsToBaseSignature.types +++ b/tests/baselines/reference/addMoreOverloadsToBaseSignature.types @@ -10,7 +10,7 @@ interface Foo { interface Bar extends Foo { f(key: string): string; >f : (key: string) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types index 78748b1af43ed..5f3e5634c9166 100644 --- a/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types +++ b/tests/baselines/reference/additionOperatorWithAnyAndEveryType.types @@ -209,9 +209,9 @@ var r20 = a + ((a: string) => { return a }); >a + ((a: string) => { return a }) : any >a : any >((a: string) => { return a }) : (a: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(a: string) => { return a } : (a: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : string > : ^^^^^^ >a : string diff --git a/tests/baselines/reference/additionOperatorWithConstrainedTypeParameter.types b/tests/baselines/reference/additionOperatorWithConstrainedTypeParameter.types index e665166578cc6..33a06e709df8f 100644 --- a/tests/baselines/reference/additionOperatorWithConstrainedTypeParameter.types +++ b/tests/baselines/reference/additionOperatorWithConstrainedTypeParameter.types @@ -4,7 +4,7 @@ // test for #17069 function sum, K extends string>(n: number, v: T, k: K) { >sum : , K extends string>(n: number, v: T, k: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ >v : T @@ -42,7 +42,7 @@ function sum, K extends string>(n: number, v: T, k: } function realSum, K extends string>(n: number, vs: T[], k: K) { >realSum : , K extends string>(n: number, vs: T[], k: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ >vs : T[] diff --git a/tests/baselines/reference/additionOperatorWithTypeParameter.types b/tests/baselines/reference/additionOperatorWithTypeParameter.types index f825fe6078a77..5291fc2fe0e57 100644 --- a/tests/baselines/reference/additionOperatorWithTypeParameter.types +++ b/tests/baselines/reference/additionOperatorWithTypeParameter.types @@ -12,7 +12,7 @@ enum E { a, b } function foo(t: T, u: U) { >foo : (t: T, u: U) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U diff --git a/tests/baselines/reference/aliasOfGenericFunctionWithRestBehavedSameAsUnaliased.types b/tests/baselines/reference/aliasOfGenericFunctionWithRestBehavedSameAsUnaliased.types index b942b58b69d6b..a3db50350fd45 100644 --- a/tests/baselines/reference/aliasOfGenericFunctionWithRestBehavedSameAsUnaliased.types +++ b/tests/baselines/reference/aliasOfGenericFunctionWithRestBehavedSameAsUnaliased.types @@ -66,11 +66,11 @@ let check1: test1 = "y"; type ExtendedMapper2 = ( >ExtendedMapper2 : (name: string, mixed: HandledInputT, ...args: ArgsT) => OutputT -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ {x:(name : string, mixed : HandledInputT, ...args : ArgsT) => OutputT}["x"] >x : (name: string, mixed: HandledInputT, ...args: ArgsT) => OutputT -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >name : string > : ^^^^^^ >mixed : HandledInputT diff --git a/tests/baselines/reference/aliasOnMergedModuleInterface.types b/tests/baselines/reference/aliasOnMergedModuleInterface.types index 8e5c00ed93dc3..66f175425ae42 100644 --- a/tests/baselines/reference/aliasOnMergedModuleInterface.types +++ b/tests/baselines/reference/aliasOnMergedModuleInterface.types @@ -14,11 +14,11 @@ z.bar("hello"); // This should be ok >z.bar("hello") : foo.A > : ^^^^^ >z.bar : (name: string) => foo.A -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >z : foo > : ^^^ >bar : (name: string) => foo.A -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -50,7 +50,7 @@ declare module "foo" interface B { bar(name: string): B.A; >bar : (name: string) => B.A -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ >B : any diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index 2e642b16f8f6c..be160b88054c5 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -22,9 +22,9 @@ interface IHasVisualizationModel { } var f = (x: IHasVisualizationModel) => x; >f : (x: IHasVisualizationModel) => IHasVisualizationModel -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: IHasVisualizationModel) => x : (x: IHasVisualizationModel) => IHasVisualizationModel -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : IHasVisualizationModel > : ^^^^^^^^^^^^^^^^^^^^^^ >x : IHasVisualizationModel @@ -32,11 +32,11 @@ var f = (x: IHasVisualizationModel) => x; f = (x) => moduleA; >f = (x) => moduleA : (x: IHasVisualizationModel) => typeof moduleA -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (x: IHasVisualizationModel) => IHasVisualizationModel -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x) => moduleA : (x: IHasVisualizationModel) => typeof moduleA -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : IHasVisualizationModel > : ^^^^^^^^^^^^^^^^^^^^^^ >moduleA : typeof moduleA diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index c068e0dff5480..bf7845ec340ec 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -22,7 +22,7 @@ interface IHasVisualizationModel { } function foo(x: T) { >foo : (x: T) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^ >a : IHasVisualizationModel > : ^^^^^^^^^^^^^^^^^^^^^^ >x : T @@ -36,9 +36,9 @@ var r = foo({ a: moduleA }); >r : { a: typeof moduleA; } > : ^^^^^^^^^^^^^^^^^^^^^^ >foo({ a: moduleA }) : { a: typeof moduleA; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ a: moduleA } : { a: typeof moduleA; } > : ^^^^^^^^^^^^^^^^^^^^^^ >a : typeof moduleA @@ -50,9 +50,9 @@ var r2 = foo({ a: null }); >r2 : { a: IHasVisualizationModel; } > : ^^^^^ ^^^ >foo({ a: null }) : { a: IHasVisualizationModel; } -> : ^^^^^ ^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ a: null } : { a: IHasVisualizationModel; } > : ^^^^^ ^^^ >a : IHasVisualizationModel diff --git a/tests/baselines/reference/aliasUsedAsNameValue.types b/tests/baselines/reference/aliasUsedAsNameValue.types index 65c6ca1e3701b..861a0ab763222 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.types +++ b/tests/baselines/reference/aliasUsedAsNameValue.types @@ -15,17 +15,17 @@ export var a = function () { >a : () => void > : ^^^^^^^^^^ >function () { //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod);} : () => void -> : ^^^^^^^^^^ +> : //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod); >b.b(mod) : any >b.b : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >b : typeof b > : ^^^^^^^^ >b : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ } @@ -38,6 +38,6 @@ export var id: number; === aliasUsedAsNameValue_1.ts === export function b(a: any): any { return null; } >b : (a: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any diff --git a/tests/baselines/reference/allowJsClassThisTypeCrash.types b/tests/baselines/reference/allowJsClassThisTypeCrash.types index 02fd056f65999..a5429abc074b4 100644 --- a/tests/baselines/reference/allowJsClassThisTypeCrash.types +++ b/tests/baselines/reference/allowJsClassThisTypeCrash.types @@ -5,13 +5,13 @@ const f = function() {}; >f : () => void > : ^^^^^^^^^^ >function() {} : () => void -> : ^^^^^^^^^^ +> : var g = f; >g : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : g.prototype.m = function () { >g.prototype.m = function () { this;} : () => void diff --git a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.types b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.types index 7a3758bb68428..5f91fdfc441f7 100644 --- a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.types +++ b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.types @@ -14,20 +14,20 @@ type WatchHandler = (val: T) => void; declare function extend(options: ComponentOptions<{}>): void; >extend : (options: ComponentOptions<{}>) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : ComponentOptions<{}> > : ^^^^^^^^^^^^^^^^^^^^ export var vextend = extend; >vextend : (options: ComponentOptions<{}>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >extend : (options: ComponentOptions<{}>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : === app.js === import {vextend} from './func'; >vextend : (options: ComponentOptions<{}>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // hover on vextend export var a = vextend({ @@ -36,19 +36,19 @@ export var a = vextend({ >vextend({ watch: { data1(val) { this.data2 = 1; }, data2(val) { }, }}) : void > : ^^^^ >vextend : (options: ComponentOptions<{}>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ watch: { data1(val) { this.data2 = 1; }, data2(val) { }, }} : { watch: { data1(val: any): void; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ watch: { >watch : { data1(val: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^ >{ data1(val) { this.data2 = 1; }, data2(val) { }, } : { data1(val: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^ data1(val) { >data1 : (val: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >val : any > : ^^^ @@ -56,11 +56,11 @@ export var a = vextend({ >this.data2 = 1 : 1 > : ^ >this.data2 : (val: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >this : Record void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >data2 : (val: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : >1 : 1 > : ^ diff --git a/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.types b/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.types index 838c45d41ed35..5cda0d73e088f 100644 --- a/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.types +++ b/tests/baselines/reference/ambientClassMergesOverloadsWithInterface.types @@ -11,14 +11,14 @@ declare class C { foo(n: number): any; >foo : { (n: number): any; (n: number): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ } interface C { foo(n: number): any; >foo : { (n: number): any; (n: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >n : number > : ^^^^^^ diff --git a/tests/baselines/reference/ambientConstLiterals.types b/tests/baselines/reference/ambientConstLiterals.types index 9b96c37aff90d..51a97feb3ef6a 100644 --- a/tests/baselines/reference/ambientConstLiterals.types +++ b/tests/baselines/reference/ambientConstLiterals.types @@ -3,7 +3,7 @@ === ambientConstLiterals.ts === function f(x: T): T { >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -54,7 +54,7 @@ const c5 = f(123); >f(123) : 123 > : ^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >123 : 123 > : ^^^ @@ -64,7 +64,7 @@ const c6 = f(-123); >f(-123) : -123 > : ^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >-123 : -123 > : ^^^^ >123 : 123 diff --git a/tests/baselines/reference/ambientDeclarations.types b/tests/baselines/reference/ambientDeclarations.types index ae06188a9860b..38fe3817b73a5 100644 --- a/tests/baselines/reference/ambientDeclarations.types +++ b/tests/baselines/reference/ambientDeclarations.types @@ -18,20 +18,20 @@ declare function fn1(); // Ambient function with type annotations declare function fn2(n: string): number; >fn2 : (n: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ // Ambient function with valid overloads declare function fn3(n: string): number; >fn3 : (n: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ declare function fn4(n: number, y: number): string; >fn4 : (n: number, y: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >n : number > : ^^^^^^ >y : number @@ -40,18 +40,18 @@ declare function fn4(n: number, y: number): string; // Ambient function with optional parameters declare function fn5(x, y?); >fn5 : (x: any, y?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any >y : any declare function fn6(e?); >fn6 : (e?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >e : any declare function fn7(x, y?, ...z); >fn7 : (x: any, y?: any, ...z: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >x : any >y : any >z : any[] @@ -59,20 +59,20 @@ declare function fn7(x, y?, ...z); declare function fn8(y?, ...z: number[]); >fn8 : (y?: any, ...z: number[]) => any -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^^^^ >y : any >z : number[] > : ^^^^^^^^ declare function fn9(...q: {}[]); >fn9 : (...q: {}[]) => any -> : ^^^^^^^ ^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >q : {}[] > : ^^^^ declare function fn10(...q: T[]); >fn10 : (...q: T[]) => any -> : ^ ^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >q : T[] > : ^^^ @@ -88,7 +88,7 @@ declare class cls { static static(p): number; >static : (p: any) => number -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >p : any static q; diff --git a/tests/baselines/reference/ambientDeclarationsPatterns.types b/tests/baselines/reference/ambientDeclarationsPatterns.types index 020e316815fc0..28f2a55f26517 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns.types +++ b/tests/baselines/reference/ambientDeclarationsPatterns.types @@ -4,7 +4,7 @@ /// import {foo, baz} from "foobarbaz"; >foo : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >baz : string > : ^^^^^^ @@ -12,7 +12,7 @@ foo(baz); >foo(baz) : void > : ^^^^ >foo : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >baz : string > : ^^^^^^ @@ -24,7 +24,7 @@ foo(foos); >foo(foos) : void > : ^^^^ >foo : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foos : string > : ^^^^^^ @@ -37,7 +37,7 @@ foo(fileText); >foo(fileText) : void > : ^^^^ >foo : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fileText : string > : ^^^^^^ @@ -48,7 +48,7 @@ declare module "foo*baz" { export function foo(s: string): void; >foo : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } diff --git a/tests/baselines/reference/ambientErrors.types b/tests/baselines/reference/ambientErrors.types index a5995d9ee9310..322996ca194af 100644 --- a/tests/baselines/reference/ambientErrors.types +++ b/tests/baselines/reference/ambientErrors.types @@ -11,46 +11,46 @@ declare var x = 4; // Ambient functions with invalid overloads declare function fn(x: number): string; >fn : { (x: number): string; (x: "foo"): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : number > : ^^^^^^ declare function fn(x: 'foo'): number; ->fn : { (x: number): string; (x: 'foo'): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +>fn : { (x: number): string; (x: "foo"): number; } +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : "foo" > : ^^^^^ // Ambient functions with duplicate signatures declare function fn1(x: number): string; >fn1 : { (x: number): string; (x: number): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : number > : ^^^^^^ declare function fn1(x: number): string; >fn1 : { (x: number): string; (x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ // Ambient function overloads that differ only by return type declare function fn2(x: number): string; >fn2 : { (x: number): string; (x: number): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : number > : ^^^^^^ declare function fn2(x: number): number; >fn2 : { (x: number): string; (x: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ // Ambient function with default parameter values declare function fn3(x = 3); >fn3 : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >3 : 3 diff --git a/tests/baselines/reference/ambientRequireFunction(module=commonjs).types b/tests/baselines/reference/ambientRequireFunction(module=commonjs).types index 2795fa942f3fb..f27d70654b24d 100644 --- a/tests/baselines/reference/ambientRequireFunction(module=commonjs).types +++ b/tests/baselines/reference/ambientRequireFunction(module=commonjs).types @@ -9,7 +9,7 @@ const fs = require("fs"); >require("fs") : typeof fs > : ^^^^^^^^^ >require : (moduleName: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"fs" : "fs" > : ^^^^ @@ -19,18 +19,18 @@ const text = fs.readFileSync("/a/b/c"); >fs.readFileSync("/a/b/c") : string > : ^^^^^^ >fs.readFileSync : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >fs : typeof fs > : ^^^^^^^^^ >readFileSync : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"/a/b/c" : "/a/b/c" > : ^^^^^^^^ === node.d.ts === declare function require(moduleName: string): any; >require : (moduleName: string) => any -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >moduleName : string > : ^^^^^^ @@ -40,7 +40,7 @@ declare module "fs" { export function readFileSync(s: string): string; >readFileSync : (s: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } diff --git a/tests/baselines/reference/ambientRequireFunction(module=preserve).types b/tests/baselines/reference/ambientRequireFunction(module=preserve).types index 2795fa942f3fb..f27d70654b24d 100644 --- a/tests/baselines/reference/ambientRequireFunction(module=preserve).types +++ b/tests/baselines/reference/ambientRequireFunction(module=preserve).types @@ -9,7 +9,7 @@ const fs = require("fs"); >require("fs") : typeof fs > : ^^^^^^^^^ >require : (moduleName: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"fs" : "fs" > : ^^^^ @@ -19,18 +19,18 @@ const text = fs.readFileSync("/a/b/c"); >fs.readFileSync("/a/b/c") : string > : ^^^^^^ >fs.readFileSync : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >fs : typeof fs > : ^^^^^^^^^ >readFileSync : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"/a/b/c" : "/a/b/c" > : ^^^^^^^^ === node.d.ts === declare function require(moduleName: string): any; >require : (moduleName: string) => any -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >moduleName : string > : ^^^^^^ @@ -40,7 +40,7 @@ declare module "fs" { export function readFileSync(s: string): string; >readFileSync : (s: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } diff --git a/tests/baselines/reference/ambientStatement1.types b/tests/baselines/reference/ambientStatement1.types index 8a8ffb75c2772..4e45cef8e4ec7 100644 --- a/tests/baselines/reference/ambientStatement1.types +++ b/tests/baselines/reference/ambientStatement1.types @@ -13,7 +13,7 @@ >v1 : () => boolean > : ^^^^^^^^^^^^^ >() => false : () => boolean -> : ^^^^^^^^^^^^^ +> : >false : false > : ^^^^^ } diff --git a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types index fdb0421d99587..9878481124a34 100644 --- a/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types +++ b/tests/baselines/reference/ambiguousCallsWhereReturnTypesAgree.types @@ -7,49 +7,49 @@ class TestClass { public bar(x: string): void; >bar : { (x: string): void; (x: string[]): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >x : string > : ^^^^^^ public bar(x: string[]): void; >bar : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : string[] > : ^^^^^^^^ public bar(x: any): void { >bar : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >x : any } public foo(x: string): void; >foo : { (x: string): void; (x: string[]): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >x : string > : ^^^^^^ public foo(x: string[]): void; >foo : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : string[] > : ^^^^^^^^ public foo(x: any): void { >foo : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >x : any this.bar(x); // should not error >this.bar(x) : void > : ^^^^ >this.bar : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >this : this > : ^^^^ >bar : { (x: string): void; (x: string[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >x : any } } @@ -60,19 +60,19 @@ class TestClass2 { public bar(x: string): number; >bar : { (x: string): number; (x: string[]): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ public bar(x: string[]): number; >bar : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : string[] > : ^^^^^^^^ public bar(x: any): number { >bar : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : any return 0; @@ -82,30 +82,30 @@ class TestClass2 { public foo(x: string): number; >foo : { (x: string): number; (x: string[]): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ public foo(x: string[]): number; >foo : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : string[] > : ^^^^^^^^ public foo(x: any): number { >foo : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : any return this.bar(x); // should not error >this.bar(x) : number > : ^^^^^^ >this.bar : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >bar : { (x: string): number; (x: string[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : any } } diff --git a/tests/baselines/reference/ambiguousGenericAssertion1.types b/tests/baselines/reference/ambiguousGenericAssertion1.types index 052861273f3e9..a508440ccdc3c 100644 --- a/tests/baselines/reference/ambiguousGenericAssertion1.types +++ b/tests/baselines/reference/ambiguousGenericAssertion1.types @@ -3,15 +3,15 @@ === ambiguousGenericAssertion1.ts === function f(x: T): T { return null; } >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var r = (x: T) => x; >r : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : T > : ^ >x : T @@ -19,13 +19,13 @@ var r = (x: T) => x; var r2 = < (x: T) => T>f; // valid >r2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >< (x: T) => T>f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : >x : T > : ^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var r3 = <(x: T) => T>f; // ambiguous, appears to the parser as a << operation >r3 : boolean @@ -49,5 +49,5 @@ var r3 = <(x: T) => T>f; // ambiguous, appears to the parser as a << operatio >T : any > : ^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/ambiguousOverload.types b/tests/baselines/reference/ambiguousOverload.types index 34ec8ac3d1145..d840fe6a962e7 100644 --- a/tests/baselines/reference/ambiguousOverload.types +++ b/tests/baselines/reference/ambiguousOverload.types @@ -3,7 +3,7 @@ === ambiguousOverload.ts === function foof(bar: string, y): number; >foof : { (bar: string, y: any): number; (bar: string, x: any): string; } -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >bar : string > : ^^^^^^ >y : any @@ -11,7 +11,7 @@ function foof(bar: string, y): number; function foof(bar: string, x): string; >foof : { (bar: string, y: any): number; (bar: string, x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^ >bar : string > : ^^^^^^ >x : any @@ -19,7 +19,7 @@ function foof(bar: string, x): string; function foof(bar: any): any { return bar }; >foof : { (bar: string, y: any): number; (bar: string, x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >bar : any > : ^^^ >bar : any @@ -31,7 +31,7 @@ var x: number = foof("s", null); >foof("s", null) : number > : ^^^^^^ >foof : { (bar: string, y: any): number; (bar: string, x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >"s" : "s" > : ^^^ @@ -41,13 +41,13 @@ var y: string = foof("s", null); >foof("s", null) : number > : ^^^^^^ >foof : { (bar: string, y: any): number; (bar: string, x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >"s" : "s" > : ^^^ function foof2(bar: string, x): string; >foof2 : { (bar: string, x: any): string; (bar: string, y: any): number; } -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >bar : string > : ^^^^^^ >x : any @@ -55,7 +55,7 @@ function foof2(bar: string, x): string; function foof2(bar: string, y): number; >foof2 : { (bar: string, x: any): string; (bar: string, y: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^ >bar : string > : ^^^^^^ >y : any @@ -63,7 +63,7 @@ function foof2(bar: string, y): number; function foof2(bar: any): any { return bar }; >foof2 : { (bar: string, x: any): string; (bar: string, y: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >bar : any > : ^^^ >bar : any @@ -75,7 +75,7 @@ var x2: string = foof2("s", null); >foof2("s", null) : string > : ^^^^^^ >foof2 : { (bar: string, x: any): string; (bar: string, y: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >"s" : "s" > : ^^^ @@ -85,7 +85,7 @@ var y2: number = foof2("s", null); >foof2("s", null) : string > : ^^^^^^ >foof2 : { (bar: string, x: any): string; (bar: string, y: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >"s" : "s" > : ^^^ diff --git a/tests/baselines/reference/ambiguousOverloadResolution.types b/tests/baselines/reference/ambiguousOverloadResolution.types index 0de3d7c072720..183c1cbdd851a 100644 --- a/tests/baselines/reference/ambiguousOverloadResolution.types +++ b/tests/baselines/reference/ambiguousOverloadResolution.types @@ -15,7 +15,7 @@ class B extends A { x: number; } declare function f(p: A, q: B): number; >f : { (p: A, q: B): number; (p: B, q: A): string; } -> : ^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >p : A > : ^ >q : B @@ -23,7 +23,7 @@ declare function f(p: A, q: B): number; declare function f(p: B, q: A): string; >f : { (p: A, q: B): number; (p: B, q: A): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >p : B > : ^ >q : A @@ -39,7 +39,7 @@ var t: number = f(x, x); // Not an error >f(x, x) : number > : ^^^^^^ >f : { (p: A, q: B): number; (p: B, q: A): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >x : B > : ^ >x : B diff --git a/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.types b/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.types index 0a0fc5ffdbb6d..b76859f121aea 100644 --- a/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.types +++ b/tests/baselines/reference/amdDeclarationEmitNoExtraDeclare.types @@ -3,7 +3,7 @@ === Class.ts === import { Configurable } from "./Configurable" >Configurable : >(base: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ export class HiddenClass {} >HiddenClass : HiddenClass @@ -15,7 +15,7 @@ export class ActualClass extends Configurable(HiddenClass) {} >Configurable(HiddenClass) : HiddenClass > : ^^^^^^^^^^^ >Configurable : >(base: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >HiddenClass : typeof HiddenClass > : ^^^^^^^^^^^^^^^^^^ @@ -30,13 +30,13 @@ export type Constructor = { } export function Configurable>(base: T): T { >Configurable : >(base: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >base : T > : ^ return class extends base { >class extends base { constructor(...args: any[]) { super(...args); } } : { new (...args: any[]): (Anonymous class); prototype: Configurable.(Anonymous class); } & T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >base : {} > : ^^ diff --git a/tests/baselines/reference/amdLikeInputDeclarationEmit.types b/tests/baselines/reference/amdLikeInputDeclarationEmit.types index b2a768fd1b6c7..35d9bd98ca570 100644 --- a/tests/baselines/reference/amdLikeInputDeclarationEmit.types +++ b/tests/baselines/reference/amdLikeInputDeclarationEmit.types @@ -3,13 +3,13 @@ === typing.d.ts === declare function define(name: string, modules: string[], ready: (...modules: unknown[]) => T); >define : (name: string, modules: string[], ready: (...modules: unknown[]) => T) => any -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >name : string > : ^^^^^^ >modules : string[] > : ^^^^^^^^ >ready : (...modules: unknown[]) => T -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >modules : unknown[] > : ^^^^^^^^^ @@ -24,7 +24,7 @@ declare module "deps/BaseClass" { static extends(a: A): new () => A & BaseClass; >extends : (a: A) => new () => A & BaseClass -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : A > : ^ } @@ -36,7 +36,7 @@ declare module "deps/BaseClass" { define("lib/ExtendedClass", ["deps/BaseClass"], >define("lib/ExtendedClass", ["deps/BaseClass"], /** * {typeof import("deps/BaseClass")} * @param {typeof import("deps/BaseClass")} BaseClass * @returns */(BaseClass) => { const ExtendedClass = BaseClass.extends({ f: function() { return "something"; } }); // Exports the module in a way tsc recognize class export const module = {}; module.exports = ExtendedClass return module.exports;}) : any >define : (name: string, modules: string[], ready: (...modules: unknown[]) => T) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >"lib/ExtendedClass" : "lib/ExtendedClass" > : ^^^^^^^^^^^^^^^^^^^ >["deps/BaseClass"] : string[] @@ -51,7 +51,7 @@ define("lib/ExtendedClass", ["deps/BaseClass"], */ (BaseClass) => { >(BaseClass) => { const ExtendedClass = BaseClass.extends({ f: function() { return "something"; } }); // Exports the module in a way tsc recognize class export const module = {}; module.exports = ExtendedClass return module.exports;} : (BaseClass: typeof import("deps/BaseClass")) => any -> : ^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >BaseClass : typeof import("deps/BaseClass") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -59,13 +59,13 @@ define("lib/ExtendedClass", ["deps/BaseClass"], >ExtendedClass : new () => { f: () => "something"; } & import("deps/BaseClass") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >BaseClass.extends({ f: function() { return "something"; } }) : new () => { f: () => "something"; } & import("deps/BaseClass") -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >BaseClass.extends : (a: A) => new () => A & import("deps/BaseClass") -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >BaseClass : typeof import("deps/BaseClass") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >extends : (a: A) => new () => A & import("deps/BaseClass") -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ f: function() { return "something"; } } : { f: () => "something"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ define("lib/ExtendedClass", ["deps/BaseClass"], >f : () => "something" > : ^^^^^^^^^^^^^^^^^ >function() { return "something"; } : () => "something" -> : ^^^^^^^^^^^^^^^^^ +> : return "something"; >"something" : "something" diff --git a/tests/baselines/reference/amdModuleConstEnumUsage.types b/tests/baselines/reference/amdModuleConstEnumUsage.types index 75867f03773fb..29663473b774c 100644 --- a/tests/baselines/reference/amdModuleConstEnumUsage.types +++ b/tests/baselines/reference/amdModuleConstEnumUsage.types @@ -24,7 +24,7 @@ export class User { method(input: number) { >method : (input: number) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >input : number > : ^^^^^^ diff --git a/tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types b/tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types index 780e1a7db7a0b..ea5b23724d967 100644 --- a/tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types +++ b/tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types @@ -5,7 +5,7 @@ /** @param {{ [s: string]: number }} map */ function mappy(map) {} >mappy : (map: { [s: string]: number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >map : { [s: string]: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -35,7 +35,7 @@ export class C { >mappy(this.assets) : void > : ^^^^ >mappy : (map: { [s: string]: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.assets : { [assetName: string]: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this diff --git a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.types b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.types index 206056a633bbd..4bf0a1210a044 100644 --- a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.types +++ b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.types @@ -3,7 +3,7 @@ === wrapClass.ts === export function wrapClass(param: any) { >wrapClass : (param: any) => typeof Wrapped -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >param : any return class Wrapped { @@ -30,13 +30,13 @@ export type Constructor = new (...args: any[]) => T; export function Timestamped(Base: TBase) { >Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Base : TBase > : ^^^^^ return class extends Base { >class extends Base { timestamp = Date.now(); } : { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Base : {} > : ^^ @@ -58,15 +58,15 @@ export function Timestamped(Base: TBase) { === index.ts === import { wrapClass, Timestamped } from "./wrapClass"; >wrapClass : (param: any) => typeof Wrapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export default wrapClass(0); >wrapClass(0) : typeof Wrapped > : ^^^^^^^^^^^^^^ >wrapClass : (param: any) => typeof Wrapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -87,9 +87,9 @@ export class TimestampedUser extends Timestamped(User) { >TimestampedUser : TimestampedUser > : ^^^^^^^^^^^^^^^ >Timestamped(User) : Timestamped.(Anonymous class) & User -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >Timestamped : >(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Timestamped.(Anonymous class); } & TBase -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >User : typeof User > : ^^^^^^^^^^^ @@ -98,6 +98,6 @@ export class TimestampedUser extends Timestamped(User) { >super() : void > : ^^^^ >super : { new (...args: any[]): Timestamped.(Anonymous class); prototype: Timestamped.(Anonymous class); } & typeof User -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/anonterface.types b/tests/baselines/reference/anonterface.types index 692cefc0460a3..2c3dbfb07c97f 100644 --- a/tests/baselines/reference/anonterface.types +++ b/tests/baselines/reference/anonterface.types @@ -11,9 +11,9 @@ module M { m(fn:{ (n:number):string; },n2:number):string { >m : (fn: { (n: number): string; }, n2: number) => string -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (n: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ >n2 : number @@ -23,7 +23,7 @@ module M { >fn(n2) : string > : ^^^^^^ >fn : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n2 : number > : ^^^^^^ } @@ -45,14 +45,14 @@ var c=new M.C(); c.m(function(n) { return "hello: "+n; },18); >c.m(function(n) { return "hello: "+n; },18) : string > : ^^^^^^ ->c.m : (fn: (n: number) => string, n2: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c.m : (fn: { (n: number): string; }, n2: number) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >c : M.C > : ^^^ ->m : (fn: (n: number) => string, n2: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>m : (fn: { (n: number): string; }, n2: number) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >function(n) { return "hello: "+n; } : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >"hello: "+n : string diff --git a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types index 853dbaf54afa5..91706f9ec9b14 100644 --- a/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types +++ b/tests/baselines/reference/anyAsReturnTypeForNewOnCall.types @@ -3,7 +3,7 @@ === anyAsReturnTypeForNewOnCall.ts === function Point(x, y) { >Point : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any >y : any @@ -31,7 +31,7 @@ var o = new Point(3, 4); >o : any >new Point(3, 4) : any >Point : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 diff --git a/tests/baselines/reference/anyAssignabilityInInheritance.types b/tests/baselines/reference/anyAssignabilityInInheritance.types index 5e97ac8583d6d..42721203786c9 100644 --- a/tests/baselines/reference/anyAssignabilityInInheritance.types +++ b/tests/baselines/reference/anyAssignabilityInInheritance.types @@ -17,97 +17,97 @@ var a: any; declare function foo2(x: number): number; >foo2 : { (x: number): number; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ declare function foo2(x: any): any; >foo2 : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo2(a); // any, not a subtype of number so it skips that overload, is a subtype of itself so it picks second (if truly ambiguous it would pick first overload) >r3 : any >foo2(a) : any >foo2 : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo3(x: string): string; >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ declare function foo3(x: any): any; >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo4(x: boolean): boolean; >foo4 : { (x: boolean): boolean; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ declare function foo4(x: any): any; >foo4 : { (x: boolean): boolean; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo5(x: Date): Date; >foo5 : { (x: Date): Date; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : Date > : ^^^^ declare function foo5(x: any): any; >foo5 : { (x: Date): Date; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo6(x: RegExp): RegExp; >foo6 : { (x: RegExp): RegExp; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : RegExp > : ^^^^^^ declare function foo6(x: any): any; >foo6 : { (x: RegExp): RegExp; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo7(x: { bar: number }): { bar: number }; >foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : { bar: number; } > : ^^^^^^^ ^^^ >bar : number @@ -117,32 +117,32 @@ declare function foo7(x: { bar: number }): { bar: number }; declare function foo7(x: any): any; >foo7 : { (x: { bar: number; }): { bar: number; }; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo8(x: number[]): number[]; >foo8 : { (x: number[]): number[]; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : number[] > : ^^^^^^^^ declare function foo8(x: any): any; >foo8 : { (x: number[]): number[]; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any interface I8 { foo: string } @@ -151,20 +151,20 @@ interface I8 { foo: string } declare function foo9(x: I8): I8; >foo9 : { (x: I8): I8; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : I8 > : ^^ declare function foo9(x: any): any; >foo9 : { (x: I8): I8; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any class A { foo: number; } @@ -175,20 +175,20 @@ class A { foo: number; } declare function foo10(x: A): A; >foo10 : { (x: A): A; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : A > : ^ declare function foo10(x: any): any; >foo10 : { (x: A): A; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any class A2 { foo: T; } @@ -199,62 +199,62 @@ class A2 { foo: T; } declare function foo11(x: A2): A2; >foo11 : { (x: A2): A2; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : A2 > : ^^^^^^^^^^ declare function foo11(x: any): any; >foo11 : { (x: A2): A2; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo12(x: (x) => number): (x) => number; >foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; } -> : ^^^^^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : (x: any) => number -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >x : any >x : any declare function foo12(x: any): any; >foo12 : { (x: (x: any) => number): (x: any) => number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo13(x: (x: T) => T): (x: T) => T; >foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >x : T > : ^ declare function foo13(x: any): any; ->foo13 : { (x: (x: T) => T): (x: T_1) => T_1; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +>foo13 : { (x: (x: T) => T): (x: T) => T; (x: any): any; } +> : ^^^ ^^ ^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any enum E { A } @@ -265,20 +265,20 @@ enum E { A } declare function foo14(x: E): E; >foo14 : { (x: E): E; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : E > : ^ declare function foo14(x: any): any; >foo14 : { (x: E): E; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any function f() { } @@ -297,7 +297,7 @@ module f { } declare function foo15(x: typeof f): typeof f; >foo15 : { (x: typeof f): typeof f; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : typeof f > : ^^^^^^^^ >f : typeof f @@ -307,14 +307,14 @@ declare function foo15(x: typeof f): typeof f; declare function foo15(x: any): any; >foo15 : { (x: typeof f): typeof f; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any class CC { baz: string } @@ -335,55 +335,55 @@ module CC { } declare function foo16(x: CC): CC; >foo16 : { (x: CC): CC; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : CC > : ^^ declare function foo16(x: any): any; >foo16 : { (x: CC): CC; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo17(x: Object): Object; >foo17 : { (x: Object): Object; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ declare function foo17(x: any): any; >foo17 : { (x: Object): Object; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any declare function foo18(x: {}): {}; >foo18 : { (x: {}): {}; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : {} > : ^^ declare function foo18(x: any): any; >foo18 : { (x: {}): {}; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : any var r3 = foo3(a); // any >r3 : any >foo3(a) : any >foo3 : { (x: string): string; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any diff --git a/tests/baselines/reference/anyAssignableToEveryType.types b/tests/baselines/reference/anyAssignableToEveryType.types index d048a90325ee9..b1370dffaa104 100644 --- a/tests/baselines/reference/anyAssignableToEveryType.types +++ b/tests/baselines/reference/anyAssignableToEveryType.types @@ -86,7 +86,7 @@ var k: Function = a; var l: (x: number) => string = a; >l : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >a : any @@ -123,7 +123,7 @@ var n: { foo: string } = a; var o: (x: T) => T = a; >o : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >a : any @@ -140,7 +140,7 @@ var q: String = a; function foo(x: T, y: U, z: V) { >foo : (x: T, y: U, z: V) => void -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/anyIdenticalToItself.types b/tests/baselines/reference/anyIdenticalToItself.types index 262e851ee1199..36fdd5196d901 100644 --- a/tests/baselines/reference/anyIdenticalToItself.types +++ b/tests/baselines/reference/anyIdenticalToItself.types @@ -3,19 +3,19 @@ === anyIdenticalToItself.ts === function foo(x: any); >foo : { (x: any): any; (x: any): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ function foo(x: any); >foo : { (x: any): any; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ function foo(x: any, y: number) { } >foo : { (x: any): any; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ >y : number diff --git a/tests/baselines/reference/anyInferenceAnonymousFunctions.types b/tests/baselines/reference/anyInferenceAnonymousFunctions.types index 6cb7f5aa0b18d..77833f13ce3fc 100644 --- a/tests/baselines/reference/anyInferenceAnonymousFunctions.types +++ b/tests/baselines/reference/anyInferenceAnonymousFunctions.types @@ -8,13 +8,13 @@ var paired: any[]; paired.reduce(function (a1, a2) { >paired.reduce(function (a1, a2) { return a1.concat({});} , []) : any >paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >paired : any[] > : ^^^^^ >reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >function (a1, a2) { return a1.concat({});} : (a1: any, a2: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >a1 : any >a2 : any @@ -35,13 +35,13 @@ paired.reduce(function (a1, a2) { paired.reduce((b1, b2) => { >paired.reduce((b1, b2) => { return b1.concat({});} , []) : any >paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >paired : any[] > : ^^^^^ >reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(b1, b2) => { return b1.concat({});} : (b1: any, b2: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >b1 : any >b2 : any @@ -62,13 +62,13 @@ paired.reduce((b1, b2) => { paired.reduce((b3, b4) => b3.concat({}), []); >paired.reduce((b3, b4) => b3.concat({}), []) : any >paired.reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >paired : any[] > : ^^^^^ >reduce : { (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any): any; (callbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initialValue: any): any; (callbackfn: (previousValue: U, currentValue: any, currentIndex: number, array: any[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(b3, b4) => b3.concat({}) : (b3: any, b4: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >b3 : any >b4 : any >b3.concat({}) : any @@ -86,13 +86,13 @@ paired.map((c1) => c1.count); >paired.map((c1) => c1.count) : any[] > : ^^^^^ >paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >paired : any[] > : ^^^^^ >map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(c1) => c1.count : (c1: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >c1 : any >c1.count : any >c1 : any @@ -104,13 +104,13 @@ paired.map(function (c2) { return c2.count; }); >paired.map(function (c2) { return c2.count; }) : any[] > : ^^^^^ >paired.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >paired : any[] > : ^^^^^ >map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >function (c2) { return c2.count; } : (c2: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >c2 : any >c2.count : any >c2 : any diff --git a/tests/baselines/reference/argsInScope.types b/tests/baselines/reference/argsInScope.types index 4a29cf4ec43f4..f84dca6b8375f 100644 --- a/tests/baselines/reference/argsInScope.types +++ b/tests/baselines/reference/argsInScope.types @@ -7,7 +7,7 @@ class C { P(ii:number, j:number, k:number) { >P : (ii: number, j: number, k: number) => void -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >ii : number > : ^^^^^^ >j : number @@ -52,11 +52,11 @@ c.P(1,2,3); >c.P(1,2,3) : void > : ^^^^ >c.P : (ii: number, j: number, k: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >c : C > : ^ >P : (ii: number, j: number, k: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/argumentExpressionContextualTyping.types b/tests/baselines/reference/argumentExpressionContextualTyping.types index 35dc43a188d7f..58703910644b2 100644 --- a/tests/baselines/reference/argumentExpressionContextualTyping.types +++ b/tests/baselines/reference/argumentExpressionContextualTyping.types @@ -4,7 +4,7 @@ // In a typed function call, argument expressions are contextually typed by their corresponding parameter types. function foo({x: [a, b], y: {c, d, e}}) { } >foo : ({ x: [a, b], y: { c, d, e } }: { x: [any, any]; y: { c: any; d: any; e: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >a : any @@ -22,7 +22,7 @@ function foo({x: [a, b], y: {c, d, e}}) { } function bar({x: [a, b = 10], y: {c, d, e = { f:1 }}}) { } >bar : ({ x: [a, b], y: { c, d, e } }: { x: [any, number?]; y: { c: any; d: any; e?: { f: number; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >a : any @@ -48,7 +48,7 @@ function bar({x: [a, b = 10], y: {c, d, e = { f:1 }}}) { } function baz(x: [string, number, boolean]) { } >baz : (x: [string, number, boolean]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : [string, number, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -126,7 +126,7 @@ foo(o1); // Not error since x has contextual type of tuple namely [string, numbe >foo(o1) : void > : ^^^^ >foo : ({ x: [a, b], y: { c, d, e } }: { x: [any, any]; y: { c: any; d: any; e: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o1 : { x: [string, number]; y: { c: boolean; d: string; e: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -134,7 +134,7 @@ foo({ x: ["string", 1], y: { c: true, d: "world", e: 3 } }); // Not error >foo({ x: ["string", 1], y: { c: true, d: "world", e: 3 } }) : void > : ^^^^ >foo : ({ x: [a, b], y: { c, d, e } }: { x: [any, any]; y: { c: any; d: any; e: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: ["string", 1], y: { c: true, d: "world", e: 3 } } : { x: [string, number]; y: { c: boolean; d: string; e: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : [string, number] @@ -190,7 +190,7 @@ baz(tuple); >baz(tuple) : void > : ^^^^ >baz : (x: [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >tuple : [string, number, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -198,7 +198,7 @@ baz(["string", 1, true]); >baz(["string", 1, true]) : void > : ^^^^ >baz : (x: [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >["string", 1, true] : [string, number, true] > : ^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" @@ -212,7 +212,7 @@ baz(array); // Error >baz(array) : void > : ^^^^ >baz : (x: [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >array : (string | number | boolean)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -220,7 +220,7 @@ baz(["string", 1, true, ...array]); // Error >baz(["string", 1, true, ...array]) : void > : ^^^^ >baz : (x: [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >["string", 1, true, ...array] : [string, number, true, ...(string | number | boolean)[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" @@ -238,7 +238,7 @@ foo(o); // Error because x has an array type namely >foo(o) : void > : ^^^^ >foo : ({ x: [a, b], y: { c, d, e } }: { x: [any, any]; y: { c: any; d: any; e: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : { x: (string | number)[]; y: { c: boolean; d: string; e: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arguments.types b/tests/baselines/reference/arguments.types index 1bcc630c08971..23e3bcd89500f 100644 --- a/tests/baselines/reference/arguments.types +++ b/tests/baselines/reference/arguments.types @@ -39,7 +39,7 @@ function f() { interface I { method(args: typeof arguments): void; >method : (args: any) => void -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >args : any > : ^^^ >arguments : any @@ -47,7 +47,7 @@ interface I { fn: (args: typeof arguments) => void; >fn : (args: any) => void -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >args : any > : ^^^ >arguments : any @@ -67,7 +67,7 @@ interface I { construct: new (args: typeof arguments) => void; >construct : new (args: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^ >args : any > : ^^^ >arguments : any diff --git a/tests/baselines/reference/argumentsAsPropertyName.types b/tests/baselines/reference/argumentsAsPropertyName.types index 17d71d8a11469..034e8faa548ea 100644 --- a/tests/baselines/reference/argumentsAsPropertyName.types +++ b/tests/baselines/reference/argumentsAsPropertyName.types @@ -13,12 +13,12 @@ type MyType = { declare function use(s: any); >use : (s: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : any function myFunction(myType: MyType) { >myFunction : (myType: MyType) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >myType : MyType > : ^^^^^^ @@ -41,7 +41,7 @@ function myFunction(myType: MyType) { use(myType.arguments[i]); >use(myType.arguments[i]) : any >use : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >myType.arguments[i] : string > : ^^^^^^ >myType.arguments : string[] @@ -64,7 +64,7 @@ function myFunction(myType: MyType) { >[1, 2, 3].forEach(function(j) { use(x); }) : void > : ^^^^ >[1, 2, 3].forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -74,14 +74,14 @@ function myFunction(myType: MyType) { >3 : 3 > : ^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function(j) { use(x); } : (j: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >j : number > : ^^^^^^ >use(x) : any >use : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 5 > : ^ } diff --git a/tests/baselines/reference/argumentsAsPropertyName2.types b/tests/baselines/reference/argumentsAsPropertyName2.types index 09a8d564e2f16..e3a1ccb1f3b58 100644 --- a/tests/baselines/reference/argumentsAsPropertyName2.types +++ b/tests/baselines/reference/argumentsAsPropertyName2.types @@ -31,11 +31,11 @@ function foo() { >[].forEach(function () { i }) : void > : ^^^^ >[].forEach : (callbackfn: (value: any, index: number, array: any[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >forEach : (callbackfn: (value: any, index: number, array: any[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function () { i } : () => void > : ^^^^^^^^^^ >i : number diff --git a/tests/baselines/reference/argumentsBindsToFunctionScopeArgumentList.types b/tests/baselines/reference/argumentsBindsToFunctionScopeArgumentList.types index 78ce5f67bb355..e85419e2d06be 100644 --- a/tests/baselines/reference/argumentsBindsToFunctionScopeArgumentList.types +++ b/tests/baselines/reference/argumentsBindsToFunctionScopeArgumentList.types @@ -9,7 +9,7 @@ var arguments = 10; function foo(a) { >foo : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ diff --git a/tests/baselines/reference/argumentsObjectCreatesRestForJs.types b/tests/baselines/reference/argumentsObjectCreatesRestForJs.types index cbc18db2a9f72..1a7e10458d431 100644 --- a/tests/baselines/reference/argumentsObjectCreatesRestForJs.types +++ b/tests/baselines/reference/argumentsObjectCreatesRestForJs.types @@ -27,7 +27,7 @@ allRest(1, 2, 3); function someRest(x, y) { arguments; } >someRest : (x: any, y: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any >y : any >arguments : IArguments @@ -37,13 +37,13 @@ someRest(); // x and y are still optional because they are in a JS file >someRest() : void > : ^^^^ >someRest : (x: any, y: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ someRest(1, 2, 3); >someRest(1, 2, 3) : void > : ^^^^ >someRest : (x: any, y: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -56,7 +56,7 @@ someRest(1, 2, 3); */ function jsdocced(x) { arguments; } >jsdocced : (x: number, ...args: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >arguments : IArguments @@ -66,13 +66,13 @@ jsdocced(1); >jsdocced(1) : void > : ^^^^ >jsdocced : (x: number, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ function dontDoubleRest(x, ...y) { arguments; } >dontDoubleRest : (x: any, ...y: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : any >y : any[] > : ^^^^^ @@ -83,7 +83,7 @@ dontDoubleRest(1, 2, 3); >dontDoubleRest(1, 2, 3) : void > : ^^^^ >dontDoubleRest : (x: any, ...y: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/argumentsObjectIterator01_ES5.types b/tests/baselines/reference/argumentsObjectIterator01_ES5.types index 8f9cabe9a4839..76906071896ac 100644 --- a/tests/baselines/reference/argumentsObjectIterator01_ES5.types +++ b/tests/baselines/reference/argumentsObjectIterator01_ES5.types @@ -3,7 +3,7 @@ === argumentsObjectIterator01_ES5.ts === function doubleAndReturnAsArray(x: number, y: number, z: number): [number, number, number] { >doubleAndReturnAsArray : (x: number, y: number, z: number) => [number, number, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -27,11 +27,11 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >result.push(arg + arg) : number > : ^^^^^^ >result.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >result : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arg + arg : any > : ^^^ >arg : any diff --git a/tests/baselines/reference/argumentsObjectIterator01_ES6.types b/tests/baselines/reference/argumentsObjectIterator01_ES6.types index 820efba65a0fa..70f37111b794e 100644 --- a/tests/baselines/reference/argumentsObjectIterator01_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator01_ES6.types @@ -3,7 +3,7 @@ === argumentsObjectIterator01_ES6.ts === function doubleAndReturnAsArray(x: number, y: number, z: number): [number, number, number] { >doubleAndReturnAsArray : (x: number, y: number, z: number) => [number, number, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -26,11 +26,11 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >result.push(arg + arg) : number > : ^^^^^^ >result.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >result : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arg + arg : any >arg : any >arg : any diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES5.types b/tests/baselines/reference/argumentsObjectIterator02_ES5.types index b378d2c18d1f5..9870101fa4b00 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES5.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES5.types @@ -3,7 +3,7 @@ === argumentsObjectIterator02_ES5.ts === function doubleAndReturnAsArray(x: number, y: number, z: number): [number, number, number] { >doubleAndReturnAsArray : (x: number, y: number, z: number) => [number, number, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -43,11 +43,11 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >result.push(arg + arg) : number > : ^^^^^^ >result.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >result : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arg + arg : any > : ^^^ >arg : any diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index 20487793d5e07..6c5b5eb104576 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -3,7 +3,7 @@ === argumentsObjectIterator02_ES6.ts === function doubleAndReturnAsArray(x: number, y: number, z: number): [number, number, number] { >doubleAndReturnAsArray : (x: number, y: number, z: number) => [number, number, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -15,7 +15,7 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >blah : () => IterableIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arguments[Symbol.iterator] : () => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ >Symbol.iterator : unique symbol @@ -42,11 +42,11 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >result.push(arg + arg) : number > : ^^^^^^ >result.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >result : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arg + arg : any >arg : any >arg : any diff --git a/tests/baselines/reference/argumentsObjectIterator03_ES5.types b/tests/baselines/reference/argumentsObjectIterator03_ES5.types index 9d2fb416502a5..543b8508286b8 100644 --- a/tests/baselines/reference/argumentsObjectIterator03_ES5.types +++ b/tests/baselines/reference/argumentsObjectIterator03_ES5.types @@ -3,7 +3,7 @@ === argumentsObjectIterator03_ES5.ts === function asReversedTuple(a: number, b: string, c: boolean): [boolean, string, number] { >asReversedTuple : (a: number, b: string, c: boolean) => [boolean, string, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string diff --git a/tests/baselines/reference/argumentsObjectIterator03_ES6.types b/tests/baselines/reference/argumentsObjectIterator03_ES6.types index 3b2fcaabd8440..ea2b98abc2d48 100644 --- a/tests/baselines/reference/argumentsObjectIterator03_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator03_ES6.types @@ -3,7 +3,7 @@ === argumentsObjectIterator03_ES6.ts === function asReversedTuple(a: number, b: string, c: boolean): [boolean, string, number] { >asReversedTuple : (a: number, b: string, c: boolean) => [boolean, string, number] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string diff --git a/tests/baselines/reference/argumentsPropertyNameInJsMode1.types b/tests/baselines/reference/argumentsPropertyNameInJsMode1.types index 87d0bad67f8f3..d6d816a596df9 100644 --- a/tests/baselines/reference/argumentsPropertyNameInJsMode1.types +++ b/tests/baselines/reference/argumentsPropertyNameInJsMode1.types @@ -3,22 +3,22 @@ === a.js === const foo = { >foo : { f1: (params: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ f1: (params) => { }} : { f1: (params: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ f1: (params) => { } >f1 : (params: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(params) => { } : (params: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >params : any > : ^^^ } function f2(x) { >f2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -26,11 +26,11 @@ function f2(x) { >foo.f1({ x, arguments: [] }) : void > : ^^^^ >foo.f1 : (params: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : { f1: (params: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^ >f1 : (params: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >{ x, arguments: [] } : { x: any; arguments: undefined[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any @@ -45,7 +45,7 @@ f2(1, 2, 3); >f2(1, 2, 3) : void > : ^^^^ >f2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/argumentsPropertyNameInJsMode2.types b/tests/baselines/reference/argumentsPropertyNameInJsMode2.types index 795a5fd03f875..7b28f3664ba89 100644 --- a/tests/baselines/reference/argumentsPropertyNameInJsMode2.types +++ b/tests/baselines/reference/argumentsPropertyNameInJsMode2.types @@ -3,7 +3,7 @@ === a.js === function f(x) { >f : (x: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any arguments; @@ -15,7 +15,7 @@ f(1, 2, 3); >f(1, 2, 3) : void > : ^^^^ >f : (x: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/argumentsReferenceInFunction1_Js.types b/tests/baselines/reference/argumentsReferenceInFunction1_Js.types index d591c687f9bec..d3392e8eed0b9 100644 --- a/tests/baselines/reference/argumentsReferenceInFunction1_Js.types +++ b/tests/baselines/reference/argumentsReferenceInFunction1_Js.types @@ -3,9 +3,9 @@ === index.js === const format = function(f) { >format : (f: any, ...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(f) { var str = ''; var i = 1; var args = arguments; var len = args.length; for (var x = args[i]; i < len; x = args[++i]) { str += ' ' + x; } return str;} : (f: any, ...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >f : any > : ^^^ @@ -87,17 +87,17 @@ const debuglog = function() { >debuglog : (...args: any[]) => string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >function() { return format.apply(null, arguments);} : (...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ return format.apply(null, arguments); >format.apply(null, arguments) : string > : ^^^^^^ >format.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T_1, ...args: A) => R_1, thisArg: T_1, args: A): R_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >format : (f: any, ...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T_1, ...args: A) => R_1, thisArg: T_1, args: A): R_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/argumentsReferenceInMethod1_Js.types b/tests/baselines/reference/argumentsReferenceInMethod1_Js.types index e92d8891d9e84..f5fc941a917d6 100644 --- a/tests/baselines/reference/argumentsReferenceInMethod1_Js.types +++ b/tests/baselines/reference/argumentsReferenceInMethod1_Js.types @@ -10,7 +10,7 @@ class A { */ m(foo = {}) { >m : (foo?: object) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >foo : any >{} : {} > : ^^ diff --git a/tests/baselines/reference/argumentsReferenceInMethod2_Js.types b/tests/baselines/reference/argumentsReferenceInMethod2_Js.types index 0f7e8bb82a3e2..9bc96385aab30 100644 --- a/tests/baselines/reference/argumentsReferenceInMethod2_Js.types +++ b/tests/baselines/reference/argumentsReferenceInMethod2_Js.types @@ -10,7 +10,7 @@ class A { */ m(foo = {}) { >m : (foo?: object) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >foo : any >{} : {} > : ^^ diff --git a/tests/baselines/reference/argumentsReferenceInMethod3_Js.types b/tests/baselines/reference/argumentsReferenceInMethod3_Js.types index 5b21307984d81..5f322ba978964 100644 --- a/tests/baselines/reference/argumentsReferenceInMethod3_Js.types +++ b/tests/baselines/reference/argumentsReferenceInMethod3_Js.types @@ -30,7 +30,7 @@ class B extends A { */ m(foo = {}) { >m : (foo?: object) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >foo : any >{} : {} > : ^^ diff --git a/tests/baselines/reference/argumentsReferenceInMethod4_Js.types b/tests/baselines/reference/argumentsReferenceInMethod4_Js.types index 872189aed59f1..db10e95112324 100644 --- a/tests/baselines/reference/argumentsReferenceInMethod4_Js.types +++ b/tests/baselines/reference/argumentsReferenceInMethod4_Js.types @@ -10,7 +10,7 @@ class A { */ m(foo = {}) { >m : (foo?: object) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >foo : any > : ^^^ >{} : {} diff --git a/tests/baselines/reference/argumentsReferenceInMethod5_Js.types b/tests/baselines/reference/argumentsReferenceInMethod5_Js.types index db030cdc60f10..fff0abb3125dc 100644 --- a/tests/baselines/reference/argumentsReferenceInMethod5_Js.types +++ b/tests/baselines/reference/argumentsReferenceInMethod5_Js.types @@ -23,7 +23,7 @@ class A { */ m(foo = {}) { >m : (foo?: object) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >foo : any >{} : {} > : ^^ diff --git a/tests/baselines/reference/argumentsReferenceInObjectLiteral_Js.types b/tests/baselines/reference/argumentsReferenceInObjectLiteral_Js.types index be6df31991ee4..3cc7ceb4a36df 100644 --- a/tests/baselines/reference/argumentsReferenceInObjectLiteral_Js.types +++ b/tests/baselines/reference/argumentsReferenceInObjectLiteral_Js.types @@ -5,7 +5,7 @@ const a = () => { >a : () => { arguments: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return { arguments: [], };} : () => { arguments: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return { >{ arguments: [], } : { arguments: undefined[]; } @@ -24,7 +24,7 @@ const b = () => { >b : () => { arguments: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { const c = { arguments: [], } return c;} : () => { arguments: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const c = { >c : { arguments: any[]; } @@ -48,7 +48,7 @@ const c = () => { >c : () => { arguments: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return { arguments, };} : () => { arguments: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return { >{ arguments, } : { arguments: any; } @@ -65,7 +65,7 @@ const d = () => { >d : () => { arguments: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { const arguments = undefined; return { arguments, };} : () => { arguments: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const arguments = undefined; >arguments : any diff --git a/tests/baselines/reference/argumentsSpreadRestIterables(target=es5).types b/tests/baselines/reference/argumentsSpreadRestIterables(target=es5).types index 00bb90cf2af47..4027490e8b9e5 100644 --- a/tests/baselines/reference/argumentsSpreadRestIterables(target=es5).types +++ b/tests/baselines/reference/argumentsSpreadRestIterables(target=es5).types @@ -9,9 +9,9 @@ declare const itNum: Iterable >(function(...rest) {})(...itNum) : void > : ^^^^ >(function(...rest) {}) : (...rest: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(...rest) {} : (...rest: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >rest : Iterable > : ^^^^^^^^^^^^^^^^ >...itNum : Iterable @@ -23,9 +23,9 @@ declare const itNum: Iterable >(function(a, ...rest) {})('', ...itNum) : void > : ^^^^ >(function(a, ...rest) {}) : (a: string, ...rest: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(a, ...rest) {} : (a: string, ...rest: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >rest : Iterable @@ -41,9 +41,9 @@ declare const itNum: Iterable >(function(a, ...rest) {})('', true, ...itNum) : void > : ^^^^ >(function(a, ...rest) {}) : (a: string, rest_0: boolean, ...rest_1: Iterable[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(a, ...rest) {} : (a: string, rest_0: boolean, ...rest_1: Iterable[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >rest : [boolean, ...Iterable[]] @@ -59,7 +59,7 @@ declare const itNum: Iterable declare function fn1(...args: T): T; >fn1 : (...args: T) => T -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -69,7 +69,7 @@ const res1 = fn1(..."hello"); >fn1(..."hello") : readonly any[] > : ^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >..."hello" : any > : ^^^ >"hello" : "hello" @@ -81,7 +81,7 @@ const res2 = fn1(...itNum); >fn1(...itNum) : Iterable > : ^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : Iterable > : ^^^^^^^^^^^^^^^^ >itNum : Iterable @@ -93,7 +93,7 @@ const res3 = fn1(true, ..."hello"); >fn1(true, ..."hello") : readonly [true, ...any[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >..."hello" : any @@ -107,7 +107,7 @@ const res4 = fn1(true, ...itNum); >fn1(true, ...itNum) : readonly [true, ...Iterable[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...itNum : Iterable @@ -118,7 +118,7 @@ const res4 = fn1(true, ...itNum); // repro from #52781 declare function foo(...args: T): T; >foo : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -128,7 +128,7 @@ const p1 = foo(..."hello"); >foo(..."hello") : any[] > : ^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >..."hello" : any > : ^^^ >"hello" : "hello" @@ -140,7 +140,7 @@ const p2 = foo(...itNum); >foo(...itNum) : Iterable > : ^^^^^^^^^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : Iterable > : ^^^^^^^^^^^^^^^^ >itNum : Iterable @@ -152,7 +152,7 @@ const p3 = foo(true, ..."hello"); >foo(true, ..."hello") : [boolean, ...any[]] > : ^^^^^^^^^^^^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >..."hello" : any @@ -166,7 +166,7 @@ const p4 = foo(true, ...itNum); >foo(true, ...itNum) : [boolean, ...Iterable[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...itNum : Iterable diff --git a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types index 6c1a1d0d78592..c27ee50812081 100644 --- a/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types +++ b/tests/baselines/reference/argumentsSpreadRestIterables(target=esnext).types @@ -9,9 +9,9 @@ declare const itNum: Iterable >(function(...rest) {})(...itNum) : void > : ^^^^ >(function(...rest) {}) : (...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^ >function(...rest) {} : (...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^ >rest : number[] > : ^^^^^^^^ >...itNum : number @@ -23,9 +23,9 @@ declare const itNum: Iterable >(function(a, ...rest) {})('', ...itNum) : void > : ^^^^ >(function(a, ...rest) {}) : (a: string, ...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >function(a, ...rest) {} : (a: string, ...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >rest : number[] @@ -41,9 +41,9 @@ declare const itNum: Iterable >(function(a, ...rest) {})('', true, ...itNum) : void > : ^^^^ >(function(a, ...rest) {}) : (a: string, rest_0: boolean, ...rest_1: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(a, ...rest) {} : (a: string, rest_0: boolean, ...rest_1: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >rest : [boolean, ...number[]] @@ -59,7 +59,7 @@ declare const itNum: Iterable declare function fn1(...args: T): T; >fn1 : (...args: T) => T -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -69,7 +69,7 @@ const res1 = fn1(..."hello"); >fn1(..."hello") : readonly string[] > : ^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >..."hello" : string > : ^^^^^^ >"hello" : "hello" @@ -81,7 +81,7 @@ const res2 = fn1(...itNum); >fn1(...itNum) : readonly number[] > : ^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ >itNum : Iterable @@ -93,7 +93,7 @@ const res3 = fn1(true, ..."hello"); >fn1(true, ..."hello") : readonly [true, ...string[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >..."hello" : string @@ -107,7 +107,7 @@ const res4 = fn1(true, ...itNum); >fn1(true, ...itNum) : readonly [true, ...number[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn1 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...itNum : number @@ -118,7 +118,7 @@ const res4 = fn1(true, ...itNum); // repro from #52781 declare function foo(...args: T): T; >foo : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -128,7 +128,7 @@ const p1 = foo(..."hello"); >foo(..."hello") : string[] > : ^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >..."hello" : string > : ^^^^^^ >"hello" : "hello" @@ -140,7 +140,7 @@ const p2 = foo(...itNum); >foo(...itNum) : number[] > : ^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...itNum : number > : ^^^^^^ >itNum : Iterable @@ -152,7 +152,7 @@ const p3 = foo(true, ..."hello"); >foo(true, ..."hello") : [boolean, ...string[]] > : ^^^^^^^^^^^^^^^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >..."hello" : string @@ -166,7 +166,7 @@ const p4 = foo(true, ...itNum); >foo(true, ...itNum) : [boolean, ...number[]] > : ^^^^^^^^^^^^^^^^^^^^^^ >foo : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...itNum : number diff --git a/tests/baselines/reference/argumentsUsedInClassFieldInitializerOrStaticInitializationBlock.types b/tests/baselines/reference/argumentsUsedInClassFieldInitializerOrStaticInitializationBlock.types index 2831068005ffe..7f9b8f2c8960c 100644 --- a/tests/baselines/reference/argumentsUsedInClassFieldInitializerOrStaticInitializationBlock.types +++ b/tests/baselines/reference/argumentsUsedInClassFieldInitializerOrStaticInitializationBlock.types @@ -99,7 +99,7 @@ function C() { >a : () => void > : ^^^^^^^^^^ >function () { arguments } : () => void -> : ^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types b/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types index 6e5a0226e55f4..2889021bc755c 100644 --- a/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types +++ b/tests/baselines/reference/argumentsUsedInObjectLiteralProperty.types @@ -7,7 +7,7 @@ class A { public static createSelectableViewModel(initialState?: any, selectedValue?: any) { >createSelectableViewModel : (initialState?: any, selectedValue?: any) => { selectedValue: number; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >initialState : any >selectedValue : any diff --git a/tests/baselines/reference/arithmeticOnInvalidTypes2.types b/tests/baselines/reference/arithmeticOnInvalidTypes2.types index 391398d8792d5..b879836c93700 100644 --- a/tests/baselines/reference/arithmeticOnInvalidTypes2.types +++ b/tests/baselines/reference/arithmeticOnInvalidTypes2.types @@ -3,11 +3,11 @@ === arithmeticOnInvalidTypes2.ts === var obj = function f(a: T, b: T) { >obj : (a: T, b: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >function f(a: T, b: T) { var z1 = a + b; var z2 = a - b; var z3 = a * b; var z4 = a / b; return a;} : (a: T, b: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : >f : (a: T, b: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >a : T > : ^ >b : T diff --git a/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.types b/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.types index 8528427431d93..fd42de168e424 100644 --- a/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.types +++ b/tests/baselines/reference/arithmeticOperatorWithInvalidOperands.types @@ -329,7 +329,7 @@ var r1e5 = e * e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r1e6 = e * f; >r1e6 : number @@ -858,7 +858,7 @@ var r2e5 = e / e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r2e6 = e / f; >r2e6 : number @@ -1387,7 +1387,7 @@ var r3e5 = e % e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r3e6 = e % f; >r3e6 : number @@ -1916,7 +1916,7 @@ var r4e5 = e - e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r4e6 = e - f; >r4e6 : number @@ -2445,7 +2445,7 @@ var r5e5 = e << e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r5e6 = e << f; >r5e6 : number @@ -2974,7 +2974,7 @@ var r6e5 = e >> e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r6e6 = e >> f; >r6e6 : number @@ -3503,7 +3503,7 @@ var r7e5 = e >>> e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r7e6 = e >>> f; >r7e6 : number @@ -4032,7 +4032,7 @@ var r8e5 = e & e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r8e6 = e & f; >r8e6 : number @@ -4561,7 +4561,7 @@ var r9e5 = e ^ e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r9e6 = e ^ f; >r9e6 : number @@ -5090,7 +5090,7 @@ var r10e5 = e | e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r10e6 = e | f; >r10e6 : number diff --git a/tests/baselines/reference/arithmeticOperatorWithTypeParameter.types b/tests/baselines/reference/arithmeticOperatorWithTypeParameter.types index 175b8f49b582c..11e91bc03c362 100644 --- a/tests/baselines/reference/arithmeticOperatorWithTypeParameter.types +++ b/tests/baselines/reference/arithmeticOperatorWithTypeParameter.types @@ -4,7 +4,7 @@ // type parameter type is not valid for arithmetic operand function foo(t: T) { >foo : (t: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ diff --git a/tests/baselines/reference/arityErrorRelatedSpanBindingPattern.types b/tests/baselines/reference/arityErrorRelatedSpanBindingPattern.types index 1148a8e215998..f53b126aecd1a 100644 --- a/tests/baselines/reference/arityErrorRelatedSpanBindingPattern.types +++ b/tests/baselines/reference/arityErrorRelatedSpanBindingPattern.types @@ -3,7 +3,7 @@ === arityErrorRelatedSpanBindingPattern.ts === function foo(a, b, {c}): void {} >foo : (a: any, b: any, { c }: { c: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -13,7 +13,7 @@ function foo(a, b, {c}): void {} function bar(a, b, [c]): void {} >bar : (a: any, b: any, [c]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -25,7 +25,7 @@ foo("", 0); >foo("", 0) : void > : ^^^^ >foo : (a: any, b: any, { c }: { c: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >0 : 0 @@ -35,7 +35,7 @@ bar("", 0); >bar("", 0) : void > : ^^^^ >bar : (a: any, b: any, [c]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >0 : 0 diff --git a/tests/baselines/reference/arrayAssignmentTest1.types b/tests/baselines/reference/arrayAssignmentTest1.types index 12cc59410518e..78a9f4dac7e44 100644 --- a/tests/baselines/reference/arrayAssignmentTest1.types +++ b/tests/baselines/reference/arrayAssignmentTest1.types @@ -101,7 +101,7 @@ var f1 = function () { return new C1();} >f1 : () => C1 > : ^^^^^^^^ >function () { return new C1();} : () => C1 -> : ^^^^^^^^ +> : >new C1() : C1 > : ^^ >C1 : typeof C1 diff --git a/tests/baselines/reference/arrayAssignmentTest2.types b/tests/baselines/reference/arrayAssignmentTest2.types index 8c40774610916..fb68b7eff686e 100644 --- a/tests/baselines/reference/arrayAssignmentTest2.types +++ b/tests/baselines/reference/arrayAssignmentTest2.types @@ -101,7 +101,7 @@ var f1 = function () { return new C1();} >f1 : () => C1 > : ^^^^^^^^ >function () { return new C1();} : () => C1 -> : ^^^^^^^^ +> : >new C1() : C1 > : ^^ >C1 : typeof C1 diff --git a/tests/baselines/reference/arrayAssignmentTest5.types b/tests/baselines/reference/arrayAssignmentTest5.types index 99e511d102fc4..3a2ab9ce09abd 100644 --- a/tests/baselines/reference/arrayAssignmentTest5.types +++ b/tests/baselines/reference/arrayAssignmentTest5.types @@ -31,7 +31,7 @@ module Test { interface IMode { onEnter(line:string, state:IState, offset:number):IAction; >onEnter : (line: string, state: IState, offset: number) => IAction -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >state : IState @@ -41,7 +41,7 @@ module Test { tokenize(line:string, state:IState, includeStates:boolean):ILineTokens; >tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >state : IState @@ -55,7 +55,7 @@ module Test { public onEnter(line:string, state:IState, offset:number):IAction { >onEnter : (line: string, state: IState, offset: number) => IAction -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >state : IState @@ -69,11 +69,11 @@ module Test { >this.tokenize(line, state, true) : ILineTokens > : ^^^^^^^^^^^ >this.tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >line : string > : ^^^^^^ >state : IState @@ -107,11 +107,11 @@ module Test { >this.onEnter(line, tokens, offset) : IAction > : ^^^^^^^ >this.onEnter : (line: string, state: IState, offset: number) => IAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >onEnter : (line: string, state: IState, offset: number) => IAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >line : string > : ^^^^^^ >tokens : IStateToken[] @@ -122,7 +122,7 @@ module Test { } public tokenize(line:string, state:IState, includeStates:boolean):ILineTokens { >tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >state : IState diff --git a/tests/baselines/reference/arrayAssignmentTest6.types b/tests/baselines/reference/arrayAssignmentTest6.types index ec12e75dafe89..688bc39cc8e51 100644 --- a/tests/baselines/reference/arrayAssignmentTest6.types +++ b/tests/baselines/reference/arrayAssignmentTest6.types @@ -24,7 +24,7 @@ module Test { interface IMode { tokenize(line:string, state:IState, includeStates:boolean):ILineTokens; >tokenize : (line: string, state: IState, includeStates: boolean) => ILineTokens -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >state : IState @@ -38,7 +38,7 @@ module Test { public tokenize(line:string, tokens:IToken[], includeStates:boolean):ILineTokens { >tokenize : (line: string, tokens: IToken[], includeStates: boolean) => ILineTokens -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >line : string > : ^^^^^^ >tokens : IToken[] diff --git a/tests/baselines/reference/arrayAugment.types b/tests/baselines/reference/arrayAugment.types index f3b01c04e9983..d9d62a0a52481 100644 --- a/tests/baselines/reference/arrayAugment.types +++ b/tests/baselines/reference/arrayAugment.types @@ -4,7 +4,7 @@ interface Array { split: (parts: number) => T[][]; >split : (parts: number) => T[][] -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >parts : number > : ^^^^^^ } @@ -23,11 +23,11 @@ var y = x.split(4); >x.split(4) : string[][] > : ^^^^^^^^^^ >x.split : (parts: number) => string[][] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >split : (parts: number) => string[][] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^ >4 : 4 > : ^ diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types index 8547ff16e6c14..363b2e3a023ef 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.types +++ b/tests/baselines/reference/arrayBestCommonTypes.types @@ -27,7 +27,7 @@ module EmptyTypes { public voidIfAny(x: boolean, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >y : boolean @@ -35,7 +35,7 @@ module EmptyTypes { public voidIfAny(x: string, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : boolean @@ -43,7 +43,7 @@ module EmptyTypes { public voidIfAny(x: number, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : number > : ^^^^^^ >y : boolean @@ -51,7 +51,7 @@ module EmptyTypes { public voidIfAny(x: any, y = false): any { return null; } >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : any >y : boolean > : ^^^^^^^ @@ -70,11 +70,11 @@ module EmptyTypes { >this.voidIfAny([4, 2][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[4, 2][0] : number > : ^^^^^^ >[4, 2] : number[] @@ -94,11 +94,11 @@ module EmptyTypes { >this.voidIfAny([4, 2, undefined][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[4, 2, undefined][0] : number > : ^^^^^^ >[4, 2, undefined] : number[] @@ -120,11 +120,11 @@ module EmptyTypes { >this.voidIfAny([undefined, 2, 4][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, 2, 4][0] : number > : ^^^^^^ >[undefined, 2, 4] : number[] @@ -146,11 +146,11 @@ module EmptyTypes { >this.voidIfAny([null, 2, 4][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[null, 2, 4][0] : number > : ^^^^^^ >[null, 2, 4] : number[] @@ -170,11 +170,11 @@ module EmptyTypes { >this.voidIfAny([2, 4, null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[2, 4, null][0] : number > : ^^^^^^ >[2, 4, null] : number[] @@ -194,11 +194,11 @@ module EmptyTypes { >this.voidIfAny([undefined, 4, null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, 4, null][0] : number > : ^^^^^^ >[undefined, 4, null] : number[] @@ -218,11 +218,11 @@ module EmptyTypes { >this.voidIfAny(['', "q"][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >['', "q"][0] : string > : ^^^^^^ >['', "q"] : string[] @@ -242,11 +242,11 @@ module EmptyTypes { >this.voidIfAny(['', "q", undefined][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >['', "q", undefined][0] : string > : ^^^^^^ >['', "q", undefined] : string[] @@ -268,11 +268,11 @@ module EmptyTypes { >this.voidIfAny([undefined, "q", ''][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, "q", ''][0] : string > : ^^^^^^ >[undefined, "q", ''] : string[] @@ -294,11 +294,11 @@ module EmptyTypes { >this.voidIfAny([null, "q", ''][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[null, "q", ''][0] : string > : ^^^^^^ >[null, "q", ''] : string[] @@ -318,11 +318,11 @@ module EmptyTypes { >this.voidIfAny(["q", '', null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >["q", '', null][0] : string > : ^^^^^^ >["q", '', null] : string[] @@ -342,11 +342,11 @@ module EmptyTypes { >this.voidIfAny([undefined, '', null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, '', null][0] : string > : ^^^^^^ >[undefined, '', null] : string[] @@ -366,11 +366,11 @@ module EmptyTypes { >this.voidIfAny([[3, 4], [null]][0][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[[3, 4], [null]][0][0] : number > : ^^^^^^ >[[3, 4], [null]][0] : number[] @@ -709,7 +709,7 @@ module NonEmptyTypes { public voidIfAny(x: boolean, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >y : boolean @@ -717,7 +717,7 @@ module NonEmptyTypes { public voidIfAny(x: string, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : boolean @@ -725,7 +725,7 @@ module NonEmptyTypes { public voidIfAny(x: number, y?: boolean): number; >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : number > : ^^^^^^ >y : boolean @@ -733,7 +733,7 @@ module NonEmptyTypes { public voidIfAny(x: any, y = false): any { return null; } >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : any >y : boolean > : ^^^^^^^ @@ -752,11 +752,11 @@ module NonEmptyTypes { >this.voidIfAny([4, 2][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[4, 2][0] : number > : ^^^^^^ >[4, 2] : number[] @@ -776,11 +776,11 @@ module NonEmptyTypes { >this.voidIfAny([4, 2, undefined][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[4, 2, undefined][0] : number > : ^^^^^^ >[4, 2, undefined] : number[] @@ -802,11 +802,11 @@ module NonEmptyTypes { >this.voidIfAny([undefined, 2, 4][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, 2, 4][0] : number > : ^^^^^^ >[undefined, 2, 4] : number[] @@ -828,11 +828,11 @@ module NonEmptyTypes { >this.voidIfAny([null, 2, 4][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[null, 2, 4][0] : number > : ^^^^^^ >[null, 2, 4] : number[] @@ -852,11 +852,11 @@ module NonEmptyTypes { >this.voidIfAny([2, 4, null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[2, 4, null][0] : number > : ^^^^^^ >[2, 4, null] : number[] @@ -876,11 +876,11 @@ module NonEmptyTypes { >this.voidIfAny([undefined, 4, null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, 4, null][0] : number > : ^^^^^^ >[undefined, 4, null] : number[] @@ -900,11 +900,11 @@ module NonEmptyTypes { >this.voidIfAny(['', "q"][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >['', "q"][0] : string > : ^^^^^^ >['', "q"] : string[] @@ -924,11 +924,11 @@ module NonEmptyTypes { >this.voidIfAny(['', "q", undefined][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >['', "q", undefined][0] : string > : ^^^^^^ >['', "q", undefined] : string[] @@ -950,11 +950,11 @@ module NonEmptyTypes { >this.voidIfAny([undefined, "q", ''][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, "q", ''][0] : string > : ^^^^^^ >[undefined, "q", ''] : string[] @@ -976,11 +976,11 @@ module NonEmptyTypes { >this.voidIfAny([null, "q", ''][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[null, "q", ''][0] : string > : ^^^^^^ >[null, "q", ''] : string[] @@ -1000,11 +1000,11 @@ module NonEmptyTypes { >this.voidIfAny(["q", '', null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >["q", '', null][0] : string > : ^^^^^^ >["q", '', null] : string[] @@ -1024,11 +1024,11 @@ module NonEmptyTypes { >this.voidIfAny([undefined, '', null][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[undefined, '', null][0] : string > : ^^^^^^ >[undefined, '', null] : string[] @@ -1048,11 +1048,11 @@ module NonEmptyTypes { >this.voidIfAny([[3, 4], [null]][0][0]) : number > : ^^^^^^ >this.voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >voidIfAny : { (x: boolean, y?: boolean): number; (x: string, y?: boolean): number; (x: number, y?: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >[[3, 4], [null]][0][0] : number > : ^^^^^^ >[[3, 4], [null]][0] : number[] diff --git a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types index f154ffd6d7cbe..778f7598007bf 100644 --- a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types +++ b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types @@ -37,7 +37,7 @@ var results: string[]; function f([, a, , b, , , , s, , , ] = results) { >f : ([, a, , b, , , , s, , ,]?: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ > : undefined > : ^^^^^^^^^ >a : string diff --git a/tests/baselines/reference/arrayBufferIsViewNarrowsType.types b/tests/baselines/reference/arrayBufferIsViewNarrowsType.types index d847b96023617..2edd398386eef 100644 --- a/tests/baselines/reference/arrayBufferIsViewNarrowsType.types +++ b/tests/baselines/reference/arrayBufferIsViewNarrowsType.types @@ -9,11 +9,11 @@ if (ArrayBuffer.isView(obj)) { >ArrayBuffer.isView(obj) : boolean > : ^^^^^^^ >ArrayBuffer.isView : (arg: any) => arg is ArrayBufferView -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ArrayBuffer : ArrayBufferConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >isView : (arg: any) => arg is ArrayBufferView -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Object > : ^^^^^^ diff --git a/tests/baselines/reference/arrayConcat2.types b/tests/baselines/reference/arrayConcat2.types index 0d1fd36b56330..df756cdf2d284 100644 --- a/tests/baselines/reference/arrayConcat2.types +++ b/tests/baselines/reference/arrayConcat2.types @@ -11,11 +11,11 @@ a.concat("hello", 'world'); >a.concat("hello", 'world') : string[] > : ^^^^^^^^ >a.concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >'world' : "world" @@ -25,11 +25,11 @@ a.concat('Hello'); >a.concat('Hello') : string[] > : ^^^^^^^^ >a.concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'Hello' : "Hello" > : ^^^^^^^ @@ -45,11 +45,11 @@ b.concat('hello'); >b.concat('hello') : string[] > : ^^^^^^^^ >b.concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : string[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): string[]; (...items: (string | ConcatArray)[]): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'hello' : "hello" > : ^^^^^^^ diff --git a/tests/baselines/reference/arrayConcat3.types b/tests/baselines/reference/arrayConcat3.types index fcb2137de9313..c845e8d2a087b 100644 --- a/tests/baselines/reference/arrayConcat3.types +++ b/tests/baselines/reference/arrayConcat3.types @@ -10,7 +10,7 @@ type Fn = (subj: U) => U function doStuff(a: Array>, b: Array>) { >doStuff : (a: Array>, b: Array>) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Fn[] > : ^^^^^^^ >b : Fn[] @@ -20,11 +20,11 @@ function doStuff(a: Array>, b: Arrayb.concat(a) : Fn[] > : ^^^^^^^^ >b.concat : { (...items: ConcatArray>[]): Fn[]; (...items: (Fn | ConcatArray>)[]): Fn[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : Fn[] > : ^^^^^^^^ >concat : { (...items: ConcatArray>[]): Fn[]; (...items: (Fn | ConcatArray>)[]): Fn[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : Fn[] > : ^^^^^^^ } diff --git a/tests/baselines/reference/arrayConcatMap.types b/tests/baselines/reference/arrayConcatMap.types index c214f1492ceb3..d769d1610ffc6 100644 --- a/tests/baselines/reference/arrayConcatMap.types +++ b/tests/baselines/reference/arrayConcatMap.types @@ -7,15 +7,15 @@ var x = [].concat([{ a: 1 }], [{ a: 2 }]) >[].concat([{ a: 1 }], [{ a: 2 }]) .map(b => b.a) : any[] > : ^^^^^ >[].concat([{ a: 1 }], [{ a: 2 }]) .map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[].concat([{ a: 1 }], [{ a: 2 }]) : any[] > : ^^^^^ >[].concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >[{ a: 1 }] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{ a: 1 } : { a: number; } @@ -35,9 +35,9 @@ var x = [].concat([{ a: 1 }], [{ a: 2 }]) .map(b => b.a); >map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >b => b.a : (b: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >b : any >b.a : any >b : any diff --git a/tests/baselines/reference/arrayDestructuringInSwitch1.types b/tests/baselines/reference/arrayDestructuringInSwitch1.types index ed751aae4b7dc..476333540e693 100644 --- a/tests/baselines/reference/arrayDestructuringInSwitch1.types +++ b/tests/baselines/reference/arrayDestructuringInSwitch1.types @@ -11,7 +11,7 @@ export type BooleanLogicExpression = ['and', ...Expression[]] | ['not', Expressi export function evaluate(expression: Expression): boolean { >evaluate : (expression: Expression) => boolean -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >expression : Expression > : ^^^^^^^^^^ @@ -19,11 +19,11 @@ export function evaluate(expression: Expression): boolean { >Array.isArray(expression) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >expression : Expression > : ^^^^^^^^^^ @@ -47,19 +47,19 @@ export function evaluate(expression: Expression): boolean { >operands.every((child) => evaluate(child)) : boolean > : ^^^^^^^ >operands.every : { (predicate: (value: Expression, index: number, array: Expression[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Expression, index: number, array: Expression[]) => unknown, thisArg?: any): boolean; } | { (predicate: (value: Expression, index: number, array: Expression[]) => value is S_1, thisArg?: any): this is S_1[]; (predicate: (value: Expression, index: number, array: Expression[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >operands : Expression[] | [Expression] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >every : { (predicate: (value: Expression, index: number, array: Expression[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Expression, index: number, array: Expression[]) => unknown, thisArg?: any): boolean; } | { (predicate: (value: Expression, index: number, array: Expression[]) => value is S_1, thisArg?: any): this is S_1[]; (predicate: (value: Expression, index: number, array: Expression[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >(child) => evaluate(child) : (child: Expression) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >child : Expression > : ^^^^^^^^^^ >evaluate(child) : boolean > : ^^^^^^^ >evaluate : (expression: Expression) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >child : Expression > : ^^^^^^^^^^ } @@ -73,7 +73,7 @@ export function evaluate(expression: Expression): boolean { >evaluate(operands[0]) : boolean > : ^^^^^^^ >evaluate : (expression: Expression) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >operands[0] : Expression > : ^^^^^^^^^^ >operands : Expression[] | [Expression] diff --git a/tests/baselines/reference/arrayDestructuringInSwitch2.types b/tests/baselines/reference/arrayDestructuringInSwitch2.types index 924bf9620e627..ad67d8d49bdaf 100644 --- a/tests/baselines/reference/arrayDestructuringInSwitch2.types +++ b/tests/baselines/reference/arrayDestructuringInSwitch2.types @@ -15,7 +15,7 @@ type X = { kind: "a", a: [1] } | { kind: "b", a: [] } function foo(x: X): 1 { >foo : (x: X) => 1 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : X > : ^ diff --git a/tests/baselines/reference/arrayEvery.types b/tests/baselines/reference/arrayEvery.types index 44f8fd09168c1..5e748b2e1fbf8 100644 --- a/tests/baselines/reference/arrayEvery.types +++ b/tests/baselines/reference/arrayEvery.types @@ -11,9 +11,9 @@ const foo: (number | string)[] = ['aaa']; const isString = (x: unknown): x is string => typeof x === 'string'; >isString : (x: unknown) => x is string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(x: unknown): x is string => typeof x === 'string' : (x: unknown) => x is string -> : ^^^^ ^^^^^ +> : >x : unknown > : ^^^^^^^ >typeof x === 'string' : boolean @@ -29,19 +29,19 @@ if (foo.every(isString)) { >foo.every(isString) : boolean > : ^^^^^^^ >foo.every : { (predicate: (value: string | number, index: number, array: (string | number)[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: string | number, index: number, array: (string | number)[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >foo : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >every : { (predicate: (value: string | number, index: number, array: (string | number)[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: string | number, index: number, array: (string | number)[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >isString : (x: unknown) => x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ foo[0].slice(0); >foo[0].slice(0) : string > : ^^^^^^ >foo[0].slice : (start?: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >foo[0] : string > : ^^^^^^ >foo : string[] @@ -49,7 +49,7 @@ if (foo.every(isString)) { >0 : 0 > : ^ >slice : (start?: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >0 : 0 > : ^ } diff --git a/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types b/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types index 69dba0b22ba92..106ca208f5bf5 100644 --- a/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types +++ b/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types @@ -13,7 +13,7 @@ type BadFlatArray = {obj: { "recur": Arr extends ReadonlyArray >"recur" : Arr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: any; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] extends infer T ? T extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] ? T extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] extends infer T_1 ? T_1 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] ? T_1 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] extends infer T_2 ? T_2 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] ? T_2 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] extends infer T_3 ? T_3 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] ? T_3 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] extends infer T_4 ? T_4 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] ? T_4 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] extends infer T_5 ? T_5 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] ? T_5 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] extends infer T_6 ? T_6 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] ? T_6 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] extends infer T_7 ? T_7 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] ? T_7 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] extends infer T_8 ? T_8 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] ? T_8 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] extends infer T_9 ? T_9 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] ? T_9 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] extends infer T_10 ? T_10 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] ? T_10 extends -1 ? "done" : "recur" : never : never] : Arr -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ? BadFlatArray >-1 : -1 @@ -30,7 +30,7 @@ type BadFlatArray = {obj: { declare function flat( >flat : (arr: A, depth?: D) => BadFlatArray[] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ arr: A, >arr : A @@ -44,7 +44,7 @@ declare function flat( function foo(arr: T[], depth: number) { >foo : (arr: T[], depth: number) => (T | (T extends readonly (infer InnerArr)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr)[] ? any : InnerArr) : T))[] -> : ^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number @@ -53,8 +53,8 @@ function foo(arr: T[], depth: number) { return flat(arr, depth); >flat(arr, depth) : (T | (T extends readonly (infer InnerArr)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr)[] ? any : InnerArr) : T))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->flat : (arr: A, depth?: D | undefined) => { done: A; recur: A extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? any[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] extends infer T_1 ? T_1 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] ? T_1 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] extends infer T_2 ? T_2 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] ? T_2 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] extends infer T_3 ? T_3 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] ? T_3 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] extends infer T_4 ? T_4 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] ? T_4 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] extends infer T_5 ? T_5 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] ? T_5 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] extends infer T_6 ? T_6 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] ? T_6 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] extends infer T_7 ? T_7 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] ? T_7 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] extends infer T_8 ? T_8 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] ? T_8 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] extends infer T_9 ? T_9 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] ? T_9 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] extends infer T_10 ? T_10 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] ? T_10 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] extends infer T_11 ? T_11 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] ? T_11 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>flat : (arr: A, depth?: D) => { done: A; recur: A extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? any[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] extends infer T_1 ? T_1 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]]] ? T_1 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] extends infer T_2 ? T_2 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]]] ? T_2 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] extends infer T_3 ? T_3 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]]] ? T_3 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] extends infer T_4 ? T_4 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]]] ? T_4 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] extends infer T_5 ? T_5 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]]] ? T_5 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] extends infer T_6 ? T_6 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]]] ? T_6 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] extends infer T_7 ? T_7 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]]] ? T_7 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] extends infer T_8 ? T_8 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]]] ? T_8 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] extends infer T_9 ? T_9 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]]] ? T_9 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] extends infer T_10 ? T_10 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D]] ? T_10 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] extends infer T_11 ? T_11 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][D] ? T_11 extends -1 ? "done" : "recur" : never : never] : A; }[D extends -1 ? "done" : "recur"][] +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number diff --git a/tests/baselines/reference/arrayFilter.types b/tests/baselines/reference/arrayFilter.types index 3b9d28756cd6c..0b9ed107abed3 100644 --- a/tests/baselines/reference/arrayFilter.types +++ b/tests/baselines/reference/arrayFilter.types @@ -35,13 +35,13 @@ foo.filter(x => x.name); //should accepted all possible types not only boolean! >foo.filter(x => x.name) : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >foo.filter : { (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^ >foo : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^ >x => x.name : (x: { name: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { name: string; } > : ^^^^^^^^^^^^^^^^^ >x.name : string diff --git a/tests/baselines/reference/arrayFind.types b/tests/baselines/reference/arrayFind.types index bbe5ad0f90055..73cde487ad800 100644 --- a/tests/baselines/reference/arrayFind.types +++ b/tests/baselines/reference/arrayFind.types @@ -4,7 +4,7 @@ // test fix for #18112, type guard predicates should narrow returned element function isNumber(x: any): x is number { >isNumber : (x: any) => x is number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any return typeof x === "number"; @@ -41,13 +41,13 @@ const foundNumber: number | undefined = arrayOfStringsNumbersAndBooleans.find(is >arrayOfStringsNumbersAndBooleans.find(isNumber) : number > : ^^^^^^ >arrayOfStringsNumbersAndBooleans.find : { (predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arrayOfStringsNumbersAndBooleans : (string | number | boolean)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >find : { (predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isNumber : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ const readonlyArrayOfStringsNumbersAndBooleans = arrayOfStringsNumbersAndBooleans as ReadonlyArray; >readonlyArrayOfStringsNumbersAndBooleans : readonly (string | number | boolean)[] @@ -63,11 +63,11 @@ const readonlyFoundNumber: number | undefined = readonlyArrayOfStringsNumbersAnd >readonlyArrayOfStringsNumbersAndBooleans.find(isNumber) : number > : ^^^^^^ >readonlyArrayOfStringsNumbersAndBooleans.find : { (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >readonlyArrayOfStringsNumbersAndBooleans : readonly (string | number | boolean)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >find : { (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => unknown, thisArg?: any): string | number | boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isNumber : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayFlatMap.types b/tests/baselines/reference/arrayFlatMap.types index acf49d827d714..e83619d4144d0 100644 --- a/tests/baselines/reference/arrayFlatMap.types +++ b/tests/baselines/reference/arrayFlatMap.types @@ -17,11 +17,11 @@ array.flatMap((): ReadonlyArray => []); // ok >array.flatMap((): ReadonlyArray => []) : number[] > : ^^^^^^^^ >array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >(): ReadonlyArray => [] : () => ReadonlyArray > : ^^^^^^ >[] : undefined[] @@ -31,11 +31,11 @@ readonlyArray.flatMap((): ReadonlyArray => []); // ok >readonlyArray.flatMap((): ReadonlyArray => []) : number[] > : ^^^^^^^^ >readonlyArray.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >readonlyArray : readonly number[] > : ^^^^^^^^^^^^^^^^^ >flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >(): ReadonlyArray => [] : () => ReadonlyArray > : ^^^^^^ >[] : undefined[] diff --git a/tests/baselines/reference/arrayFlatNoCrashInference.types b/tests/baselines/reference/arrayFlatNoCrashInference.types index ba38106583f08..80c628212cc92 100644 --- a/tests/baselines/reference/arrayFlatNoCrashInference.types +++ b/tests/baselines/reference/arrayFlatNoCrashInference.types @@ -3,7 +3,7 @@ === arrayFlatNoCrashInference.ts === function foo(arr: T[], depth: number) { >foo : (arr: T[], depth: number) => FlatArray[] -> : ^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number @@ -13,11 +13,11 @@ function foo(arr: T[], depth: number) { >arr.flat(depth) : FlatArray[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr.flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >depth : number > : ^^^^^^ } diff --git a/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types b/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types index 5b4ef8a9e9411..4f8ae606506f5 100644 --- a/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types +++ b/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types @@ -3,7 +3,7 @@ === arrayFlatNoCrashInferenceDeclarations.ts === function foo(arr: T[], depth: number) { >foo : (arr: T[], depth: number) => FlatArray[] -> : ^ ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number @@ -13,11 +13,11 @@ function foo(arr: T[], depth: number) { >arr.flat(depth) : FlatArray[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr.flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >depth : number > : ^^^^^^ } diff --git a/tests/baselines/reference/arrayFrom.types b/tests/baselines/reference/arrayFrom.types index 1278603ebde52..71485e09f6925 100644 --- a/tests/baselines/reference/arrayFrom.types +++ b/tests/baselines/reference/arrayFrom.types @@ -44,7 +44,7 @@ const inputARand = getEither(inputA, inputALike); >getEither(inputA, inputALike) : ArrayLike | Iterable > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputA : A[] > : ^^^ >inputALike : ArrayLike @@ -64,11 +64,11 @@ const result1: A[] = Array.from(inputA); >Array.from(inputA) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputA : A[] > : ^^^ @@ -78,11 +78,11 @@ const result2: A[] = Array.from(inputA.values()); >Array.from(inputA.values()) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputA.values() : IterableIterator > : ^^^^^^^^^^^^^^^^^^^ >inputA.values : () => IterableIterator @@ -98,11 +98,11 @@ const result3: B[] = Array.from(inputA.values()); // expect error >Array.from(inputA.values()) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputA.values() : IterableIterator > : ^^^^^^^^^^^^^^^^^^^ >inputA.values : () => IterableIterator @@ -118,15 +118,15 @@ const result4: A[] = Array.from(inputB, ({ b }): A => ({ a: b })); >Array.from(inputB, ({ b }): A => ({ a: b })) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputB : B[] > : ^^^ >({ b }): A => ({ a: b }) : ({ b }: B) => A -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ >b : string > : ^^^^^^ >({ a: b }) : { a: string; } @@ -144,11 +144,11 @@ const result5: A[] = Array.from(inputALike); >Array.from(inputALike) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputALike : ArrayLike > : ^^^^^^^^^^^^ @@ -158,11 +158,11 @@ const result6: B[] = Array.from(inputALike); // expect error >Array.from(inputALike) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputALike : ArrayLike > : ^^^^^^^^^^^^ @@ -172,15 +172,15 @@ const result7: B[] = Array.from(inputALike, ({ a }): B => ({ b: a })); >Array.from(inputALike, ({ a }): B => ({ b: a })) : B[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputALike : ArrayLike > : ^^^^^^^^^^^^ >({ a }): B => ({ b: a }) : ({ a }: A) => B -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ >a : string > : ^^^^^^ >({ b: a }) : { b: string; } @@ -198,11 +198,11 @@ const result8: A[] = Array.from(inputARand); >Array.from(inputARand) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputARand : ArrayLike | Iterable > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -212,15 +212,15 @@ const result9: B[] = Array.from(inputARand, ({ a }): B => ({ b: a })); >Array.from(inputARand, ({ a }): B => ({ b: a })) : B[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputARand : ArrayLike | Iterable > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a }): B => ({ b: a }) : ({ a }: A) => B -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ >a : string > : ^^^^^^ >({ b: a }) : { b: string; } @@ -238,11 +238,11 @@ const result10: A[] = Array.from(new Set()); >Array.from(new Set()) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >new Set() : Set > : ^^^^^^ >Set : SetConstructor @@ -254,15 +254,15 @@ const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); >Array.from(inputASet, ({ a }): B => ({ b: a })) : B[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >inputASet : Set > : ^^^^^^ >({ a }): B => ({ b: a }) : ({ a }: A) => B -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ >a : string > : ^^^^^^ >({ b: a }) : { b: string; } @@ -279,7 +279,7 @@ const result11: B[] = Array.from(inputASet, ({ a }): B => ({ b: a })); // even when the type is written as : Iterable|ArrayLike function getEither (in1: Iterable, in2: ArrayLike) { >getEither : (in1: Iterable, in2: ArrayLike) => ArrayLike | Iterable -> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >in1 : Iterable > : ^^^^^^^^^^^ >in2 : ArrayLike diff --git a/tests/baselines/reference/arrayFromAsync.types b/tests/baselines/reference/arrayFromAsync.types index d8cde639badf7..160f66124cc68 100644 --- a/tests/baselines/reference/arrayFromAsync.types +++ b/tests/baselines/reference/arrayFromAsync.types @@ -4,7 +4,7 @@ export { }; async function * asyncGen (n) { >asyncGen : (n: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : any for (let i = 0; i < n; i++) @@ -34,7 +34,7 @@ async function * asyncGen (n) { function * genPromises (n) { >genPromises : (n: any) => Generator, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : any for (let i = 0; i < n; i++) { @@ -57,11 +57,11 @@ function * genPromises (n) { >Promise.resolve(i * 2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >i * 2 : number > : ^^^^^^ >i : number @@ -83,11 +83,11 @@ const arrLike = { >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -97,11 +97,11 @@ const arrLike = { >Promise.resolve(2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ @@ -111,11 +111,11 @@ const arrLike = { >Promise.resolve(4) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -125,11 +125,11 @@ const arrLike = { >Promise.resolve(6) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >6 : 6 > : ^ @@ -152,7 +152,7 @@ for await (const v of asyncGen(4)) { >asyncGen(4) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen : (n: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -160,11 +160,11 @@ for await (const v of asyncGen(4)) { >arr.push(v) : number > : ^^^^^^ >arr.push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ } @@ -177,11 +177,11 @@ const sameArr1 = await Array.fromAsync(arrLike); >Array.fromAsync(arrLike) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arrLike : { 0: Promise; 1: Promise; 2: Promise; 3: Promise; length: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -193,51 +193,51 @@ const sameArr2 = await Array.fromAsync([Promise.resolve(0), Promise.resolve(2), >Array.fromAsync([Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)]) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[Promise.resolve(0), Promise.resolve(2), Promise.resolve(4), Promise.resolve(6)] : Promise[] > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >Promise.resolve(2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ >Promise.resolve(4) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ >Promise.resolve(6) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >6 : 6 > : ^ @@ -249,15 +249,15 @@ const sameArr3 = await Array.fromAsync(genPromises(4)); >Array.fromAsync(genPromises(4)) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >genPromises(4) : Generator, void, unknown> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >genPromises : (n: any) => Generator, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -269,15 +269,15 @@ const sameArr4 = await Array.fromAsync(asyncGen(4)); >Array.fromAsync(asyncGen(4)) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen(4) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen : (n: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -288,19 +288,19 @@ function Data (n) {} Data.fromAsync = Array.fromAsync; >Data.fromAsync = Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Data : typeof Data > : ^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ const sameArr5 = await Data.fromAsync(asyncGen(4)); >sameArr5 : number[] @@ -310,15 +310,15 @@ const sameArr5 = await Data.fromAsync(asyncGen(4)); >Data.fromAsync(asyncGen(4)) : Promise > : ^^^^^^^^^^^^^^^^^ >Data.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Data : typeof Data > : ^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen(4) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen : (n: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -330,19 +330,19 @@ const mapArr1 = await Array.fromAsync(asyncGen(4), v => v ** 2); >Array.fromAsync(asyncGen(4), v => v ** 2) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen(4) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asyncGen : (n: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ >v => v ** 2 : (v: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >v ** 2 : number @@ -360,11 +360,11 @@ const mapArr2 = await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)); >Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0,2,4,6] : number[] > : ^^^^^^^^ >0 : 0 @@ -376,17 +376,17 @@ const mapArr2 = await Array.fromAsync([0,2,4,6], v => Promise.resolve(v ** 2)); >6 : 6 > : ^ >v => Promise.resolve(v ** 2) : (v: number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >Promise.resolve(v ** 2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v ** 2 : number > : ^^^^^^ >v : number @@ -402,11 +402,11 @@ const mapArr3 = await Array.fromAsync([0,2,4,6], v => v ** 2); >Array.fromAsync([0,2,4,6], v => v ** 2) : Promise > : ^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[0,2,4,6] : number[] > : ^^^^^^^^ >0 : 0 @@ -418,7 +418,7 @@ const mapArr3 = await Array.fromAsync([0,2,4,6], v => v ** 2); >6 : 6 > : ^ >v => v ** 2 : (v: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >v ** 2 : number @@ -461,11 +461,11 @@ const badArray = await Array.fromAsync(badIterable); >Array.fromAsync(badIterable) : Promise > : ^^^^^^^^^^^^^^^^^^ >Array.fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >fromAsync : { (iterableOrArrayLike: AsyncIterable | Iterable> | ArrayLike>): Promise; (iterableOrArrayLike: AsyncIterable | Iterable | ArrayLike, mapFn: (value: Awaited) => U, thisArg?: any): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >badIterable : { [Symbol.iterator](): never; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayLiteralAndArrayConstructorEquivalence1.types b/tests/baselines/reference/arrayLiteralAndArrayConstructorEquivalence1.types index 002a8c7b9ae14..618f98afd987e 100644 --- a/tests/baselines/reference/arrayLiteralAndArrayConstructorEquivalence1.types +++ b/tests/baselines/reference/arrayLiteralAndArrayConstructorEquivalence1.types @@ -13,7 +13,7 @@ var myCars3 = new Array({}); >myCars3 : {}[] > : ^^^^ >new Array({}) : {}[] -> : ^^^^ +> : ^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >{} : {} diff --git a/tests/baselines/reference/arrayLiteralComments.types b/tests/baselines/reference/arrayLiteralComments.types index 66fb48f01742f..feb3c37a5a016 100644 --- a/tests/baselines/reference/arrayLiteralComments.types +++ b/tests/baselines/reference/arrayLiteralComments.types @@ -5,7 +5,7 @@ var testArrayWithFunc = [ >testArrayWithFunc : (string | number | (() => void) | number[] | { a: number; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ // Function comment function() { let x = 1; }, // String comment '1', // Numeric comment 2, // Object comment { a: 1 }, // Array comment [1, 2, 3]] : (string | number | (() => void) | number[] | { a: number; })[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Function comment function() { diff --git a/tests/baselines/reference/arrayLiteralContextualType.types b/tests/baselines/reference/arrayLiteralContextualType.types index 96d5e55909817..584ba43dd83e1 100644 --- a/tests/baselines/reference/arrayLiteralContextualType.types +++ b/tests/baselines/reference/arrayLiteralContextualType.types @@ -43,13 +43,13 @@ class Elephant { function foo(animals: IAnimal[]) { } >foo : (animals: IAnimal[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >animals : IAnimal[] > : ^^^^^^^^^ function bar(animals: { [n: number]: IAnimal }) { } >bar : (animals: { [n: number]: IAnimal; }) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >animals : { [n: number]: IAnimal; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >n : number @@ -59,7 +59,7 @@ foo([ >foo([ new Giraffe(), new Elephant()]) : void > : ^^^^ >foo : (animals: IAnimal[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[ new Giraffe(), new Elephant()] : (Giraffe | Elephant)[] > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -80,7 +80,7 @@ bar([ >bar([ new Giraffe(), new Elephant()]) : void > : ^^^^ >bar : (animals: { [n: number]: IAnimal; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[ new Giraffe(), new Elephant()] : (Giraffe | Elephant)[] > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -116,7 +116,7 @@ foo(arr); // ok because arr is Array not {}[] >foo(arr) : void > : ^^^^ >foo : (animals: IAnimal[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arr : (Giraffe | Elephant)[] > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -124,7 +124,7 @@ bar(arr); // ok because arr is Array not {}[] >bar(arr) : void > : ^^^^ >bar : (animals: { [n: number]: IAnimal; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arr : (Giraffe | Elephant)[] > : ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types index 381ea208c03f5..f180e70252842 100644 --- a/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types +++ b/tests/baselines/reference/arrayLiteralInNonVarArgParameter.types @@ -3,7 +3,7 @@ === arrayLiteralInNonVarArgParameter.ts === function panic(val: string[], ...opt: string[]) { } >panic : (val: string[], ...opt: string[]) => void -> : ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >val : string[] > : ^^^^^^^^ >opt : string[] @@ -13,7 +13,7 @@ panic([], 'one', 'two'); >panic([], 'one', 'two') : void > : ^^^^ >panic : (val: string[], ...opt: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >'one' : "one" diff --git a/tests/baselines/reference/arrayLiteralInference.types b/tests/baselines/reference/arrayLiteralInference.types index 96be66df90a41..ad1819964faef 100644 --- a/tests/baselines/reference/arrayLiteralInference.types +++ b/tests/baselines/reference/arrayLiteralInference.types @@ -181,7 +181,7 @@ const appTypeStylesWithError: Map> = new Map([ declare function foo(...args: T[]): T[]; >foo : (...args: T[]) => T[] -> : ^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^ ^^ ^^^^^ >args : T[] > : ^^^ @@ -193,7 +193,7 @@ let b1: { x: boolean }[] = foo({ x: true }, { x: false }); >foo({ x: true }, { x: false }) : ({ x: true; } | { x: false; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (...args: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >{ x: true } : { x: true; } > : ^^^^^^^^^^^^ >x : true @@ -213,7 +213,7 @@ let b2: boolean[][] = foo([true], [false]); >foo([true], [false]) : (true[] | false[])[] > : ^^^^^^^^^^^^^^^^^^^^ >foo : (...args: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >[true] : true[] > : ^^^^^^ >true : true diff --git a/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types b/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types index 02432c6019123..ad5bd5c8d5cdb 100644 --- a/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types +++ b/tests/baselines/reference/arrayLiteralWithMultipleBestCommonTypes.types @@ -31,7 +31,7 @@ var as = [a, b]; // { x: number; y?: number };[] >as : ({ x: number; y?: number; } | { x: number; z?: number; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[a, b] : ({ x: number; y?: number; } | { x: number; z?: number; })[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ ^^^ ^ ^^^ >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { x: number; z?: number; } @@ -41,7 +41,7 @@ var bs = [b, a]; // { x: number; z?: number };[] >bs : ({ x: number; y?: number; } | { x: number; z?: number; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[b, a] : ({ x: number; y?: number; } | { x: number; z?: number; })[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ ^^^ ^ ^^^ >b : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -51,7 +51,7 @@ var cs = [a, b, c]; // { x: number; y?: number };[] >cs : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[a, b, c] : ({ x: number; y?: number; } | { x: number; z?: number; } | { x: number; a?: number; })[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ ^^^ ^ ^^^ ^ ^^^ >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { x: number; z?: number; } @@ -61,17 +61,17 @@ var cs = [a, b, c]; // { x: number; y?: number };[] var ds = [(x: Object) => 1, (x: string) => 2]; // { (x:Object) => number }[] >ds : ((x: Object) => number)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >[(x: Object) => 1, (x: string) => 2] : ((x: Object) => number)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^^ >(x: Object) => 1 : (x: Object) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Object > : ^^^^^^ >1 : 1 > : ^ >(x: string) => 2 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >2 : 2 @@ -79,17 +79,17 @@ var ds = [(x: Object) => 1, (x: string) => 2]; // { (x:Object) => number }[] var es = [(x: string) => 2, (x: Object) => 1]; // { (x:string) => number }[] >es : ((x: string) => number)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >[(x: string) => 2, (x: Object) => 1] : ((x: string) => number)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^^ >(x: string) => 2 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >2 : 2 > : ^ >(x: Object) => 1 : (x: Object) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Object > : ^^^^^^ >1 : 1 @@ -97,11 +97,11 @@ var es = [(x: string) => 2, (x: Object) => 1]; // { (x:string) => number }[] var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2]; // (a: { x: number; y?: number }) => number[] >fs : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >[(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => 2] : (((a: { x: number; y?: number; }) => number) | ((b: { x: number; z?: number; }) => number))[] -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { x: number; y?: number; } > : ^^^^^ ^^^^^^ ^^^ >x : number @@ -111,7 +111,7 @@ var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => >1 : 1 > : ^ >(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { x: number; z?: number; } > : ^^^^^ ^^^^^^ ^^^ >x : number @@ -123,11 +123,11 @@ var fs = [(a: { x: number; y?: number }) => 1, (b: { x: number; z?: number }) => var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1]; // (b: { x: number; z?: number }) => number[] >gs : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >[(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => 1] : (((b: { x: number; z?: number; }) => number) | ((a: { x: number; y?: number; }) => number))[] -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >(b: { x: number; z?: number }) => 2 : (b: { x: number; z?: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { x: number; z?: number; } > : ^^^^^ ^^^^^^ ^^^ >x : number @@ -137,7 +137,7 @@ var gs = [(b: { x: number; z?: number }) => 2, (a: { x: number; y?: number }) => >2 : 2 > : ^ >(a: { x: number; y?: number }) => 1 : (a: { x: number; y?: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { x: number; y?: number; } > : ^^^^^ ^^^^^^ ^^^ >x : number diff --git a/tests/baselines/reference/arrayLiterals2ES5.types b/tests/baselines/reference/arrayLiterals2ES5.types index 9aafa39a92202..df7242f3471aa 100644 --- a/tests/baselines/reference/arrayLiterals2ES5.types +++ b/tests/baselines/reference/arrayLiterals2ES5.types @@ -72,7 +72,7 @@ var a4 = [() => 1, ]; >a4 : (() => number)[] > : ^^^^^^^^^^^^^^^^ >[() => 1, ] : (() => number)[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/arrayLiterals2ES6.types b/tests/baselines/reference/arrayLiterals2ES6.types index dedb8257fb63a..913f2ef6ed5d9 100644 --- a/tests/baselines/reference/arrayLiterals2ES6.types +++ b/tests/baselines/reference/arrayLiterals2ES6.types @@ -72,7 +72,7 @@ var a4 = [() => 1, ]; >a4 : (() => number)[] > : ^^^^^^^^^^^^^^^^ >[() => 1, ] : (() => number)[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -290,7 +290,7 @@ var d7 = [...a4]; >d7 : (() => number)[] > : ^^^^^^^^^^^^^^^^ >[...a4] : (() => number)[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^ >...a4 : () => number > : ^^^^^^^^^^^^ >a4 : (() => number)[] diff --git a/tests/baselines/reference/arrayOfExportedClass.types b/tests/baselines/reference/arrayOfExportedClass.types index 8341eeea97dba..f3d7830cf8a88 100644 --- a/tests/baselines/reference/arrayOfExportedClass.types +++ b/tests/baselines/reference/arrayOfExportedClass.types @@ -16,7 +16,7 @@ class Road { public AddCars(cars: Car[]) { >AddCars : (cars: Car[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >cars : Car[] > : ^^^^^ diff --git a/tests/baselines/reference/arrayOfFunctionTypes3.types b/tests/baselines/reference/arrayOfFunctionTypes3.types index aa614c3d71900..aded9d836c38f 100644 --- a/tests/baselines/reference/arrayOfFunctionTypes3.types +++ b/tests/baselines/reference/arrayOfFunctionTypes3.types @@ -7,7 +7,7 @@ var x = [() => 1, () => { }]; >x : (() => void)[] > : ^^^^^^^^^^^^^^ >[() => 1, () => { }] : (() => void)[] -> : ^^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -59,7 +59,7 @@ var r3 = new y[0](); var a: { (x: number): number; (x: string): string; }; >a : { (x: number): number; (x: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ >x : string @@ -67,7 +67,7 @@ var a: { (x: number): number; (x: string): string; }; var b: { (x: number): number; (x: string): string; }; >b : { (x: number): number; (x: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ >x : string @@ -75,30 +75,30 @@ var b: { (x: number): number; (x: string): string; }; var c: { (x: number): number; (x: any): any; }; >c : { (x: number): number; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ >x : any var z = [a, b, c]; >z : { (x: number): number; (x: any): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >[a, b, c] : { (x: number): number; (x: any): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ >a : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ var r4 = z[0]; >r4 : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >z[0] : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >z : { (x: number): number; (x: any): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -106,7 +106,7 @@ var r5 = r4(''); // any not string >r5 : any >r4('') : any >r4 : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >'' : "" > : ^^ @@ -116,13 +116,13 @@ var r5b = r4(1); >r4(1) : number > : ^^^^^^ >r4 : { (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ var a2: { (x: T): number; (x: string): string;}; >a2 : { (x: T): number; (x: string): string; } -> : ^^^ ^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : string @@ -130,7 +130,7 @@ var a2: { (x: T): number; (x: string): string;}; var b2: { (x: T): number; (x: string): string; }; >b2 : { (x: T): number; (x: string): string; } -> : ^^^ ^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : string @@ -138,7 +138,7 @@ var b2: { (x: T): number; (x: string): string; }; var c2: { (x: number): number; (x: T): any; }; >c2 : { (x: number): number; (x: T): any; } -> : ^^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ >x : T @@ -146,23 +146,23 @@ var c2: { (x: number): number; (x: T): any; }; var z2 = [a2, b2, c2]; >z2 : { (x: number): number; (x: T): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ >[a2, b2, c2] : { (x: number): number; (x: T): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ >a2 : { (x: T): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b2 : { (x: T): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c2 : { (x: number): number; (x: T): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ var r6 = z2[0]; >r6 : { (x: number): number; (x: T): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >z2[0] : { (x: number): number; (x: T): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >z2 : { (x: number): number; (x: T): any; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -170,7 +170,7 @@ var r7 = r6(''); // any not string >r7 : any >r6('') : any >r6 : { (x: number): number; (x: T): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/arrayReferenceWithoutTypeArgs.types b/tests/baselines/reference/arrayReferenceWithoutTypeArgs.types index d6cb924403482..1986b06942f71 100644 --- a/tests/baselines/reference/arrayReferenceWithoutTypeArgs.types +++ b/tests/baselines/reference/arrayReferenceWithoutTypeArgs.types @@ -7,7 +7,7 @@ class X { public f(a: Array) { } >f : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ } diff --git a/tests/baselines/reference/arraySigChecking.types b/tests/baselines/reference/arraySigChecking.types index 32aaf2d9306d3..225f346d482fc 100644 --- a/tests/baselines/reference/arraySigChecking.types +++ b/tests/baselines/reference/arraySigChecking.types @@ -75,7 +75,7 @@ myArray = [[1, 2]]; function isEmpty(l: { length: number }) { >isEmpty : (l: { length: number; }) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >l : { length: number; } > : ^^^^^^^^^^ ^^^ >length : number @@ -98,7 +98,7 @@ isEmpty([]); >isEmpty([]) : boolean > : ^^^^^^^ >isEmpty : (l: { length: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ @@ -106,7 +106,7 @@ isEmpty(new Array(3)); >isEmpty(new Array(3)) : boolean > : ^^^^^^^ >isEmpty : (l: { length: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >new Array(3) : any[] > : ^^^^^ >Array : ArrayConstructor @@ -118,7 +118,7 @@ isEmpty(new Array(3)); >isEmpty(new Array(3)) : boolean > : ^^^^^^^ >isEmpty : (l: { length: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >new Array(3) : string[] > : ^^^^^^^^ >Array : ArrayConstructor @@ -130,7 +130,7 @@ isEmpty(['a']); >isEmpty(['a']) : boolean > : ^^^^^^^ >isEmpty : (l: { length: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >['a'] : string[] > : ^^^^^^^^ >'a' : "a" diff --git a/tests/baselines/reference/arraySlice.types b/tests/baselines/reference/arraySlice.types index d1b119941ac58..afa95b1d8db89 100644 --- a/tests/baselines/reference/arraySlice.types +++ b/tests/baselines/reference/arraySlice.types @@ -9,11 +9,11 @@ arr.splice(1, 1); >arr.splice(1, 1) : string[] | number[] > : ^^^^^^^^^^^^^^^^^^^ >arr.splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >arr : string[] | number[] > : ^^^^^^^^^^^^^^^^^^^ >splice : { (start: number, deleteCount?: number): string[]; (start: number, deleteCount: number, ...items: string[]): string[]; } | { (start: number, deleteCount?: number): number[]; (start: number, deleteCount: number, ...items: number[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >1 : 1 diff --git a/tests/baselines/reference/arraySpreadInCall.types b/tests/baselines/reference/arraySpreadInCall.types index cabd972bdbb00..47a8eb46c3072 100644 --- a/tests/baselines/reference/arraySpreadInCall.types +++ b/tests/baselines/reference/arraySpreadInCall.types @@ -3,7 +3,7 @@ === arraySpreadInCall.ts === declare function f1(a: number, b: number, c: number, d: number, e: number, f: number): void; >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -21,7 +21,7 @@ f1(1, 2, 3, 4, ...[5, 6]); >f1(1, 2, 3, 4, ...[5, 6]) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -43,7 +43,7 @@ f1(...[1], 2, 3, 4, 5, 6); >f1(...[1], 2, 3, 4, 5, 6) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...[1] : number > : ^^^^^^ >[1] : [number] @@ -65,7 +65,7 @@ f1(1, 2, ...[3, 4], 5, 6); >f1(1, 2, ...[3, 4], 5, 6) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -87,7 +87,7 @@ f1(1, 2, ...[3], 4, ...[5, 6]); >f1(1, 2, ...[3], 4, ...[5, 6]) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -113,7 +113,7 @@ f1(...[1, 2], ...[3, 4], ...[5, 6]); >f1(...[1, 2], ...[3, 4], ...[5, 6]) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...[1, 2] : number > : ^^^^^^ >[1, 2] : [number, number] @@ -143,7 +143,7 @@ f1(...(([1, 2])), ...(((([3, 4])))), ...([5, 6])); >f1(...(([1, 2])), ...(((([3, 4])))), ...([5, 6])) : void > : ^^^^ >f1 : (a: number, b: number, c: number, d: number, e: number, f: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...(([1, 2])) : number > : ^^^^^^ >(([1, 2])) : [number, number] @@ -185,7 +185,7 @@ f1(...(([1, 2])), ...(((([3, 4])))), ...([5, 6])); declare function f2(...args: T): T; >f2 : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -195,7 +195,7 @@ const x21 = f2(...[1, 'foo']) >f2(...[1, 'foo']) : [number, string] > : ^^^^^^^^^^^^^^^^ >f2 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...[1, 'foo'] : string | number > : ^^^^^^^^^^^^^^^ >[1, 'foo'] : [number, string] @@ -211,7 +211,7 @@ const x22 = f2(true, ...[1, 'foo']) >f2(true, ...[1, 'foo']) : [boolean, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...[1, 'foo'] : string | number @@ -229,7 +229,7 @@ const x23 = f2(...([1, 'foo'])) >f2(...([1, 'foo'])) : [number, string] > : ^^^^^^^^^^^^^^^^ >f2 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...([1, 'foo']) : string | number > : ^^^^^^^^^^^^^^^ >([1, 'foo']) : [number, string] @@ -247,7 +247,7 @@ const x24 = f2(true, ...([1, 'foo'])) >f2(true, ...([1, 'foo'])) : [boolean, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...([1, 'foo']) : string | number @@ -263,7 +263,7 @@ const x24 = f2(true, ...([1, 'foo'])) declare function f3(...args: T): T; >f3 : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -273,7 +273,7 @@ const x31 = f3(...[1, 'foo']) >f3(...[1, 'foo']) : [number, string] > : ^^^^^^^^^^^^^^^^ >f3 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...[1, 'foo'] : string | number > : ^^^^^^^^^^^^^^^ >[1, 'foo'] : [number, string] @@ -289,7 +289,7 @@ const x32 = f3(true, ...[1, 'foo']) >f3(true, ...[1, 'foo']) : [boolean, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f3 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...[1, 'foo'] : string | number @@ -307,7 +307,7 @@ const x33 = f3(...([1, 'foo'])) >f3(...([1, 'foo'])) : [number, string] > : ^^^^^^^^^^^^^^^^ >f3 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...([1, 'foo']) : string | number > : ^^^^^^^^^^^^^^^ >([1, 'foo']) : [number, string] @@ -325,7 +325,7 @@ const x34 = f3(true, ...([1, 'foo'])) >f3(true, ...([1, 'foo'])) : [boolean, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f3 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...([1, 'foo']) : string | number @@ -341,7 +341,7 @@ const x34 = f3(true, ...([1, 'foo'])) declare function f4(...args: T): T; >f4 : (...args: T) => T -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -351,7 +351,7 @@ const x41 = f4(...[1, 'foo']) >f4(...[1, 'foo']) : readonly [number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f4 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...[1, 'foo'] : string | number > : ^^^^^^^^^^^^^^^ >[1, 'foo'] : [number, string] @@ -367,7 +367,7 @@ const x42 = f4(true, ...[1, 'foo']) >f4(true, ...[1, 'foo']) : readonly [true, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...[1, 'foo'] : string | number @@ -385,7 +385,7 @@ const x43 = f4(...([1, 'foo'])) >f4(...([1, 'foo'])) : readonly [number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f4 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...([1, 'foo']) : string | number > : ^^^^^^^^^^^^^^^ >([1, 'foo']) : [number, string] @@ -403,7 +403,7 @@ const x44 = f4(true, ...([1, 'foo'])) >f4(true, ...([1, 'foo'])) : readonly [true, number, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >true : true > : ^^^^ >...([1, 'foo']) : string | number @@ -421,7 +421,7 @@ const x44 = f4(true, ...([1, 'foo'])) interface IAction { run(event?: unknown): unknown; >run : (event?: unknown) => unknown -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >event : unknown > : ^^^^^^^ } @@ -433,11 +433,11 @@ action.run(...[100, 'foo']) // error >action.run(...[100, 'foo']) : unknown > : ^^^^^^^ >action.run : (event?: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^ >action : IAction > : ^^^^^^^ >run : (event?: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^ >...[100, 'foo'] : string | number > : ^^^^^^^^^^^^^^^ >[100, 'foo'] : [number, string] diff --git a/tests/baselines/reference/arrayToLocaleStringES2015.types b/tests/baselines/reference/arrayToLocaleStringES2015.types index 2b850d9e219c1..35edce161032b 100644 --- a/tests/baselines/reference/arrayToLocaleStringES2015.types +++ b/tests/baselines/reference/arrayToLocaleStringES2015.types @@ -25,11 +25,11 @@ str = arr.toLocaleString(); // OK >arr.toLocaleString() : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = arr.toLocaleString('en-US'); // OK >str = arr.toLocaleString('en-US') : string @@ -39,11 +39,11 @@ str = arr.toLocaleString('en-US'); // OK >arr.toLocaleString('en-US') : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -55,11 +55,11 @@ str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -95,11 +95,11 @@ str = dates.toLocaleString(); // OK >dates.toLocaleString() : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = dates.toLocaleString('fr'); // OK >str = dates.toLocaleString('fr') : string @@ -109,11 +109,11 @@ str = dates.toLocaleString('fr'); // OK >dates.toLocaleString('fr') : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'fr' : "fr" > : ^^^^ @@ -125,11 +125,11 @@ str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'fr' : "fr" > : ^^^^ >{ timeZone: 'UTC' } : { timeZone: string; } @@ -165,11 +165,11 @@ str = mixed.toLocaleString(); // OK >mixed.toLocaleString() : string > : ^^^^^^ >mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = mixed.toLocaleString('fr'); // OK >str = mixed.toLocaleString('fr') : string @@ -179,11 +179,11 @@ str = mixed.toLocaleString('fr'); // OK >mixed.toLocaleString('fr') : string > : ^^^^^^ >mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'fr' : "fr" > : ^^^^ @@ -195,11 +195,11 @@ str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'de' : "de" > : ^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -221,7 +221,7 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string > : ^^^^^^ >(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >(mixed as ReadonlyArray) : readonly (number | Date)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >mixed as ReadonlyArray : readonly (number | Date)[] @@ -229,7 +229,7 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'de' : "de" > : ^^^^ >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } @@ -265,11 +265,11 @@ str = int8Array.toLocaleString(); // OK >int8Array.toLocaleString() : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int8Array.toLocaleString('en-US'); // OK >str = int8Array.toLocaleString('en-US') : string @@ -279,11 +279,11 @@ str = int8Array.toLocaleString('en-US'); // OK >int8Array.toLocaleString('en-US') : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -295,11 +295,11 @@ str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -331,11 +331,11 @@ str = uint8Array.toLocaleString(); // OK >uint8Array.toLocaleString() : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint8Array.toLocaleString('en-US'); // OK >str = uint8Array.toLocaleString('en-US') : string @@ -345,11 +345,11 @@ str = uint8Array.toLocaleString('en-US'); // OK >uint8Array.toLocaleString('en-US') : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -361,11 +361,11 @@ str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -397,11 +397,11 @@ str = uint8ClampedArray.toLocaleString(); // OK >uint8ClampedArray.toLocaleString() : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint8ClampedArray.toLocaleString('en-US'); // OK >str = uint8ClampedArray.toLocaleString('en-US') : string @@ -411,11 +411,11 @@ str = uint8ClampedArray.toLocaleString('en-US'); // OK >uint8ClampedArray.toLocaleString('en-US') : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -427,11 +427,11 @@ str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: ' >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -463,11 +463,11 @@ str = int16Array.toLocaleString(); // OK >int16Array.toLocaleString() : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int16Array.toLocaleString('en-US'); // OK >str = int16Array.toLocaleString('en-US') : string @@ -477,11 +477,11 @@ str = int16Array.toLocaleString('en-US'); // OK >int16Array.toLocaleString('en-US') : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -493,11 +493,11 @@ str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -529,11 +529,11 @@ str = uint16Array.toLocaleString(); // OK >uint16Array.toLocaleString() : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint16Array.toLocaleString('en-US'); // OK >str = uint16Array.toLocaleString('en-US') : string @@ -543,11 +543,11 @@ str = uint16Array.toLocaleString('en-US'); // OK >uint16Array.toLocaleString('en-US') : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -559,11 +559,11 @@ str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' } >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -595,11 +595,11 @@ str = int32Array.toLocaleString(); // OK >int32Array.toLocaleString() : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int32Array.toLocaleString('en-US'); // OK >str = int32Array.toLocaleString('en-US') : string @@ -609,11 +609,11 @@ str = int32Array.toLocaleString('en-US'); // OK >int32Array.toLocaleString('en-US') : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -625,11 +625,11 @@ str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -661,11 +661,11 @@ str = uint32Array.toLocaleString(); // OK >uint32Array.toLocaleString() : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint32Array.toLocaleString('en-US'); // OK >str = uint32Array.toLocaleString('en-US') : string @@ -675,11 +675,11 @@ str = uint32Array.toLocaleString('en-US'); // OK >uint32Array.toLocaleString('en-US') : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -691,11 +691,11 @@ str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' } >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -727,11 +727,11 @@ str = float32Array.toLocaleString(); // OK >float32Array.toLocaleString() : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = float32Array.toLocaleString('en-US'); // OK >str = float32Array.toLocaleString('en-US') : string @@ -741,11 +741,11 @@ str = float32Array.toLocaleString('en-US'); // OK >float32Array.toLocaleString('en-US') : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -757,11 +757,11 @@ str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -793,11 +793,11 @@ str = float64Array.toLocaleString(); // OK >float64Array.toLocaleString() : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = float64Array.toLocaleString('en-US'); // OK >str = float64Array.toLocaleString('en-US') : string @@ -807,11 +807,11 @@ str = float64Array.toLocaleString('en-US'); // OK >float64Array.toLocaleString('en-US') : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -823,11 +823,11 @@ str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } diff --git a/tests/baselines/reference/arrayToLocaleStringES2020.types b/tests/baselines/reference/arrayToLocaleStringES2020.types index 8fa0d22078642..48dc3a6b311b3 100644 --- a/tests/baselines/reference/arrayToLocaleStringES2020.types +++ b/tests/baselines/reference/arrayToLocaleStringES2020.types @@ -25,11 +25,11 @@ str = arr.toLocaleString(); // OK >arr.toLocaleString() : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = arr.toLocaleString('en-US'); // OK >str = arr.toLocaleString('en-US') : string @@ -39,11 +39,11 @@ str = arr.toLocaleString('en-US'); // OK >arr.toLocaleString('en-US') : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -55,11 +55,11 @@ str = arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); // OK >arr.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >arr.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >arr : number[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -95,11 +95,11 @@ str = dates.toLocaleString(); // OK >dates.toLocaleString() : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = dates.toLocaleString('fr'); // OK >str = dates.toLocaleString('fr') : string @@ -109,11 +109,11 @@ str = dates.toLocaleString('fr'); // OK >dates.toLocaleString('fr') : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'fr' : "fr" > : ^^^^ @@ -125,11 +125,11 @@ str = dates.toLocaleString('fr', { timeZone: 'UTC' }); // OK >dates.toLocaleString('fr', { timeZone: 'UTC' }) : string > : ^^^^^^ >dates.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >dates : readonly Date[] > : ^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'fr' : "fr" > : ^^^^ >{ timeZone: 'UTC' } : { timeZone: string; } @@ -165,11 +165,11 @@ str = mixed.toLocaleString(); // OK >mixed.toLocaleString() : string > : ^^^^^^ >mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK >str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string @@ -179,11 +179,11 @@ str = mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }); // OK >mixed.toLocaleString('de', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >mixed.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'de' : "de" > : ^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -205,7 +205,7 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >(mixed as ReadonlyArray).toLocaleString('de', { currency: 'EUR', style: 'currency', timeZone: 'UTC' }) : string > : ^^^^^^ >(mixed as ReadonlyArray).toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >(mixed as ReadonlyArray) : readonly (number | Date)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >mixed as ReadonlyArray : readonly (number | Date)[] @@ -213,7 +213,7 @@ str = (mixed as ReadonlyArray).toLocaleString('de', { currency: ' >mixed : (number | Date)[] > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'de' : "de" > : ^^^^ >{ currency: 'EUR', style: 'currency', timeZone: 'UTC' } : { currency: string; style: "currency"; timeZone: string; } @@ -263,11 +263,11 @@ str = bigInts.toLocaleString(); // OK >bigInts.toLocaleString() : string > : ^^^^^^ >bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >bigInts : bigint[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = bigInts.toLocaleString('en-US'); // OK >str = bigInts.toLocaleString('en-US') : string @@ -277,11 +277,11 @@ str = bigInts.toLocaleString('en-US'); // OK >bigInts.toLocaleString('en-US') : string > : ^^^^^^ >bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >bigInts : bigint[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -293,11 +293,11 @@ str = bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); / >bigInts.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >bigInts.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >bigInts : bigint[] > : ^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -329,11 +329,11 @@ str = int8Array.toLocaleString(); // OK >int8Array.toLocaleString() : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int8Array.toLocaleString('en-US'); // OK >str = int8Array.toLocaleString('en-US') : string @@ -343,11 +343,11 @@ str = int8Array.toLocaleString('en-US'); // OK >int8Array.toLocaleString('en-US') : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -359,11 +359,11 @@ str = int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }); >int8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int8Array : Int8Array > : ^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -395,11 +395,11 @@ str = uint8Array.toLocaleString(); // OK >uint8Array.toLocaleString() : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint8Array.toLocaleString('en-US'); // OK >str = uint8Array.toLocaleString('en-US') : string @@ -409,11 +409,11 @@ str = uint8Array.toLocaleString('en-US'); // OK >uint8Array.toLocaleString('en-US') : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -425,11 +425,11 @@ str = uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >uint8Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint8Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8Array : Uint8Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -461,11 +461,11 @@ str = uint8ClampedArray.toLocaleString(); // OK >uint8ClampedArray.toLocaleString() : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint8ClampedArray.toLocaleString('en-US'); // OK >str = uint8ClampedArray.toLocaleString('en-US') : string @@ -475,11 +475,11 @@ str = uint8ClampedArray.toLocaleString('en-US'); // OK >uint8ClampedArray.toLocaleString('en-US') : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -491,11 +491,11 @@ str = uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: ' >uint8ClampedArray.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint8ClampedArray.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint8ClampedArray : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -527,11 +527,11 @@ str = int16Array.toLocaleString(); // OK >int16Array.toLocaleString() : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int16Array.toLocaleString('en-US'); // OK >str = int16Array.toLocaleString('en-US') : string @@ -541,11 +541,11 @@ str = int16Array.toLocaleString('en-US'); // OK >int16Array.toLocaleString('en-US') : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -557,11 +557,11 @@ str = int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >int16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int16Array : Int16Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -593,11 +593,11 @@ str = uint16Array.toLocaleString(); // OK >uint16Array.toLocaleString() : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint16Array.toLocaleString('en-US'); // OK >str = uint16Array.toLocaleString('en-US') : string @@ -607,11 +607,11 @@ str = uint16Array.toLocaleString('en-US'); // OK >uint16Array.toLocaleString('en-US') : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -623,11 +623,11 @@ str = uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' } >uint16Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint16Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint16Array : Uint16Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -659,11 +659,11 @@ str = int32Array.toLocaleString(); // OK >int32Array.toLocaleString() : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = int32Array.toLocaleString('en-US'); // OK >str = int32Array.toLocaleString('en-US') : string @@ -673,11 +673,11 @@ str = int32Array.toLocaleString('en-US'); // OK >int32Array.toLocaleString('en-US') : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -689,11 +689,11 @@ str = int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) >int32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >int32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >int32Array : Int32Array > : ^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -725,11 +725,11 @@ str = uint32Array.toLocaleString(); // OK >uint32Array.toLocaleString() : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = uint32Array.toLocaleString('en-US'); // OK >str = uint32Array.toLocaleString('en-US') : string @@ -739,11 +739,11 @@ str = uint32Array.toLocaleString('en-US'); // OK >uint32Array.toLocaleString('en-US') : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -755,11 +755,11 @@ str = uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' } >uint32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >uint32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >uint32Array : Uint32Array > : ^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -791,11 +791,11 @@ str = float32Array.toLocaleString(); // OK >float32Array.toLocaleString() : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = float32Array.toLocaleString('en-US'); // OK >str = float32Array.toLocaleString('en-US') : string @@ -805,11 +805,11 @@ str = float32Array.toLocaleString('en-US'); // OK >float32Array.toLocaleString('en-US') : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -821,11 +821,11 @@ str = float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' >float32Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >float32Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float32Array : Float32Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -857,11 +857,11 @@ str = float64Array.toLocaleString(); // OK >float64Array.toLocaleString() : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ str = float64Array.toLocaleString('en-US'); // OK >str = float64Array.toLocaleString('en-US') : string @@ -871,11 +871,11 @@ str = float64Array.toLocaleString('en-US'); // OK >float64Array.toLocaleString('en-US') : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -887,11 +887,11 @@ str = float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' >float64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >float64Array.toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >float64Array : Float64Array > : ^^^^^^^^^^^^ >toLocaleString : { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -923,11 +923,11 @@ str = bigInt64Array.toLocaleString(); // OK >bigInt64Array.toLocaleString() : string > : ^^^^^^ >bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigInt64Array : BigInt64Array > : ^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ str = bigInt64Array.toLocaleString('en-US'); // OK >str = bigInt64Array.toLocaleString('en-US') : string @@ -937,11 +937,11 @@ str = bigInt64Array.toLocaleString('en-US'); // OK >bigInt64Array.toLocaleString('en-US') : string > : ^^^^^^ >bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigInt64Array : BigInt64Array > : ^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -953,11 +953,11 @@ str = bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' >bigInt64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >bigInt64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigInt64Array : BigInt64Array > : ^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } @@ -989,11 +989,11 @@ str = bigIntUint64Array.toLocaleString(); // OK >bigIntUint64Array.toLocaleString() : string > : ^^^^^^ >bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigIntUint64Array : BigUint64Array > : ^^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ str = bigIntUint64Array.toLocaleString('en-US'); // OK >str = bigIntUint64Array.toLocaleString('en-US') : string @@ -1003,11 +1003,11 @@ str = bigIntUint64Array.toLocaleString('en-US'); // OK >bigIntUint64Array.toLocaleString('en-US') : string > : ^^^^^^ >bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigIntUint64Array : BigUint64Array > : ^^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ @@ -1019,11 +1019,11 @@ str = bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: ' >bigIntUint64Array.toLocaleString('en-US', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >bigIntUint64Array.toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigIntUint64Array : BigUint64Array > : ^^^^^^^^^^^^^^ >toLocaleString : (locales?: string | string[], options?: Intl.NumberFormatOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: "currency"; currency: string; } diff --git a/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.types b/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.types index 5e7a9db5ac475..5c62a97c0fc12 100644 --- a/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.types +++ b/tests/baselines/reference/arrayTypeInSignatureOfInterfaceAndClass.types @@ -11,16 +11,16 @@ declare module WinJS { then(success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; >then : (success?: (value: T) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : (value: T) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any } } @@ -63,7 +63,7 @@ declare module Data { //removeIndices: WinJS.Promise[]>; removeIndices(indices: number[], options?: any): WinJS.Promise[]>; >removeIndices : (indices: number[], options?: any) => WinJS.Promise[]> -> : ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >indices : number[] > : ^^^^^^^^ >options : any @@ -77,7 +77,7 @@ declare module Data { //removeIndices: WinJS.Promise[]>; public removeIndices(indices: number[], options?: any): WinJS.Promise[]>; >removeIndices : (indices: number[], options?: any) => WinJS.Promise[]> -> : ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >indices : number[] > : ^^^^^^^^ >options : any diff --git a/tests/baselines/reference/arrayTypeOfFunctionTypes.types b/tests/baselines/reference/arrayTypeOfFunctionTypes.types index ef1b8c37c9b35..52774d4d16909 100644 --- a/tests/baselines/reference/arrayTypeOfFunctionTypes.types +++ b/tests/baselines/reference/arrayTypeOfFunctionTypes.types @@ -41,7 +41,7 @@ var r3 = x2[1]; >r3 : () => string > : ^^^^^^^^^^^^ >x2[1] : () => string -> : ^^^^^^^^^^^^ +> : >x2 : (() => string)[] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -71,7 +71,7 @@ var r5 = x2[1]; >r5 : () => string > : ^^^^^^^^^^^^ >x2[1] : () => string -> : ^^^^^^^^^^^^ +> : >x2 : (() => string)[] > : ^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/arrayTypeOfFunctionTypes2.types b/tests/baselines/reference/arrayTypeOfFunctionTypes2.types index 752d2a844ed93..1034661054db6 100644 --- a/tests/baselines/reference/arrayTypeOfFunctionTypes2.types +++ b/tests/baselines/reference/arrayTypeOfFunctionTypes2.types @@ -71,7 +71,7 @@ var r5 = x2[1]; >r5 : new () => string > : ^^^^^^^^^^^^^^^^ >x2[1] : new () => string -> : ^^^^^^^^^^^^^^^^ +> : >x2 : (new () => string)[] > : ^^^^^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/arrayconcat.types b/tests/baselines/reference/arrayconcat.types index 9a2472352d414..79e18e83d8965 100644 --- a/tests/baselines/reference/arrayconcat.types +++ b/tests/baselines/reference/arrayconcat.types @@ -20,7 +20,7 @@ interface IOptions { set?: (s: string) => void; >set : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ @@ -57,7 +57,7 @@ class parser { >this.options.sort(function(a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName > bName) { return 1; } else if (aName < bName) { return -1; } else { return 0; } }) : IOptions[] > : ^^^^^^^^^^ >this.options.sort : (compareFn?: (a: IOptions, b: IOptions) => number) => IOptions[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.options : IOptions[] > : ^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class parser { >options : IOptions[] > : ^^^^^^^^^^ >sort : (compareFn?: (a: IOptions, b: IOptions) => number) => IOptions[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(a, b) { var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); if (aName > bName) { return 1; } else if (aName < bName) { return -1; } else { return 0; } } : (a: IOptions, b: IOptions) => 1 | -1 | 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : IOptions > : ^^^^^^^^ >b : IOptions diff --git a/tests/baselines/reference/arrowFunctionContexts.types b/tests/baselines/reference/arrowFunctionContexts.types index 7a0f4ecf75b74..b2e439cd45142 100644 --- a/tests/baselines/reference/arrowFunctionContexts.types +++ b/tests/baselines/reference/arrowFunctionContexts.types @@ -49,11 +49,11 @@ window.setTimeout(() => null, 100); >window.setTimeout(() => null, 100) : number > : ^^^^^^ >window.setTimeout : ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) & ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >setTimeout : ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) & ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >() => null : () => any > : ^^^^^^^^^ >100 : 100 @@ -63,9 +63,9 @@ window.setTimeout(() => null, 100); var obj = (n: number) => ''; >obj : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => '' : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >'' : "" @@ -73,17 +73,17 @@ var obj = (n: number) => ''; var obj: { (n: number): string; }; // OK >obj : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ var arr = [(n: number) => '']; >arr : ((n: number) => string)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >[(n: number) => ''] : ((n: number) => string)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^^ >(n: number) => '' : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >'' : "" @@ -91,7 +91,7 @@ var arr = [(n: number) => '']; var arr: { (n: number): string; }[]; // Incorrect error here (bug 829597) >arr : ((n: number) => string)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >n : number > : ^^^^^^ @@ -130,9 +130,9 @@ module M { export var a = (s) => ''; >a : (s: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(s) => '' : (s: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : >s : any > : ^^^ >'' : "" @@ -140,9 +140,9 @@ module M { var b = (s) => s; >b : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(s) => s : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : >s : any > : ^^^ >s : any @@ -202,11 +202,11 @@ module M2 { >window.setTimeout(() => null, 100) : number > : ^^^^^^ >window.setTimeout : ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) & ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >setTimeout : ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) & ((handler: TimerHandler, timeout?: number, ...arguments: any[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >() => null : () => any > : ^^^^^^^^^ >100 : 100 @@ -216,9 +216,9 @@ module M2 { var obj = (n: number) => ''; >obj : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => '' : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >'' : "" @@ -226,17 +226,17 @@ module M2 { var obj: { (n: number): string; }; // OK >obj : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ var arr = [(n: number) => '']; >arr : ((n: number) => string)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >[(n: number) => ''] : ((n: number) => string)[] -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^^ >(n: number) => '' : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >'' : "" @@ -244,7 +244,7 @@ module M2 { var arr: { (n: number): string; }[]; // Incorrect error here (bug 829597) >arr : ((n: number) => string)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ >n : number > : ^^^^^^ @@ -283,9 +283,9 @@ module M2 { export var a = (s) => ''; >a : (s: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(s) => '' : (s: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : >s : any > : ^^^ >'' : "" @@ -293,9 +293,9 @@ module M2 { var b = (s) => s; >b : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(s) => s : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : >s : any > : ^^^ >s : any @@ -307,9 +307,9 @@ module M2 { // (ParamList) => { ... } is a generic arrow function var generic1 = (n: T) => [n]; >generic1 : (n: T) => T[] -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >(n: T) => [n] : (n: T) => T[] -> : ^ ^^^^^ ^^^^^^^^ +> : >n : T > : ^ >[n] : T[] @@ -319,15 +319,15 @@ var generic1 = (n: T) => [n]; var generic1: { (n: T): T[] }; // Incorrect error, Bug 829597 >generic1 : (n: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >n : T > : ^ var generic2 = (n: T) => { return [n]; }; >generic2 : (n: T) => T[] -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >(n: T) => { return [n]; } : (n: T) => T[] -> : ^ ^^^^^ ^^^^^^^^ +> : >n : T > : ^ >[n] : T[] @@ -337,7 +337,7 @@ var generic2 = (n: T) => { return [n]; }; var generic2: { (n: T): T[] }; >generic2 : (n: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >n : T > : ^ @@ -348,9 +348,9 @@ var asserted1 = ((n) => [n]); >((n) => [n]) : any > : ^^^ >((n) => [n]) : (n: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >(n) => [n] : (n: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >n : any > : ^^^ >[n] : any[] @@ -368,9 +368,9 @@ var asserted2 = ((n) => { return n; }); >((n) => { return n; }) : any > : ^^^ >((n) => { return n; }) : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(n) => { return n; } : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n : any > : ^^^ >n : any diff --git a/tests/baselines/reference/arrowFunctionErrorSpan.types b/tests/baselines/reference/arrowFunctionErrorSpan.types index de0357e715794..9b125e6961a6b 100644 --- a/tests/baselines/reference/arrowFunctionErrorSpan.types +++ b/tests/baselines/reference/arrowFunctionErrorSpan.types @@ -3,7 +3,7 @@ === arrowFunctionErrorSpan.ts === function f(a: () => number) { } >f : (a: () => number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : () => number > : ^^^^^^ @@ -12,7 +12,7 @@ f(() => { }); >f(() => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ @@ -21,7 +21,7 @@ f(() => { >f(() => {}) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -32,7 +32,7 @@ f(() => { >f(() => {}) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -43,7 +43,7 @@ f(() >f(() => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ @@ -54,9 +54,9 @@ f((a, >f((a, b, c, d) => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a, b, c, d) => { } : (a: any, b: any, c: any, d: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >a : any > : ^^^ @@ -77,7 +77,7 @@ f(/* >f(/* */() => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ */() => { }); >() => { } : () => void @@ -88,7 +88,7 @@ f(/* >f(/* */() => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ */() => { }); >() => { } : () => void @@ -99,7 +99,7 @@ f(/* >f(/* */() => { }) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ */() => { >() => { } : () => void @@ -112,7 +112,7 @@ f( // comment 1 >f( // comment 1 // comment 2 () => // comment 3 { // comment 4 } // comment 5) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ // comment 2 () => @@ -131,9 +131,9 @@ f(_ => 1 + >f(_ => 1 + 2) : void > : ^^^^ >f : (a: () => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_ => 1 + 2 : (_: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >_ : any > : ^^^ >1 + 2 : number diff --git a/tests/baselines/reference/arrowFunctionExpressions.types b/tests/baselines/reference/arrowFunctionExpressions.types index 66e43558499bb..88166a14f735f 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.types +++ b/tests/baselines/reference/arrowFunctionExpressions.types @@ -4,9 +4,9 @@ // ArrowFormalParameters => AssignmentExpression is equivalent to ArrowFormalParameters => { return AssignmentExpression; } var a = (p: string) => p.length; >a : (p: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(p: string) => p.length : (p: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : >p : string > : ^^^^^^ >p.length : number @@ -18,9 +18,9 @@ var a = (p: string) => p.length; var a = (p: string) => { return p.length; } >a : (p: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(p: string) => { return p.length; } : (p: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : string > : ^^^^^^ >p.length : number @@ -33,18 +33,18 @@ var a = (p: string) => { return p.length; } // Identifier => Block is equivalent to(Identifier) => Block var b = j => { return 0; } >b : (j: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >j => { return 0; } : (j: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >j : any >0 : 0 > : ^ var b = (j) => { return 0; } >b : (j: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(j) => { return 0; } : (j: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >j : any >0 : 0 > : ^ @@ -56,9 +56,9 @@ var c: number; var d = n => c = n; >d : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n => c = n : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any >c = n : any >c : number @@ -67,9 +67,9 @@ var d = n => c = n; var d = (n) => c = n; >d : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(n) => c = n : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n : any >c = n : any >c : number @@ -78,31 +78,31 @@ var d = (n) => c = n; var d: (n: any) => any; >d : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n : any // Binding patterns in arrow functions var p1 = ([a]) => { }; >p1 : ([a]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >([a]) => { } : ([a]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ var p2 = ([...a]) => { }; >p2 : ([...a]: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >([...a]) => { } : ([...a]: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any[] > : ^^^^^ var p3 = ([, a]) => { }; >p3 : ([, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >([, a]) => { } : ([, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : > : undefined > : ^^^^^^^^^ >a : any @@ -110,9 +110,9 @@ var p3 = ([, a]) => { }; var p4 = ([, ...a]) => { }; >p4 : ([, ...a]: [any?, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : > : undefined > : ^^^^^^^^^ >a : any[] @@ -120,9 +120,9 @@ var p4 = ([, ...a]) => { }; var p5 = ([a = 1]) => { }; >p5 : ([a]: [number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >([a = 1]) => { } : ([a]: [number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ >1 : 1 @@ -130,17 +130,17 @@ var p5 = ([a = 1]) => { }; var p6 = ({ a }) => { }; >p6 : ({ a }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >({ a }) => { } : ({ a }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ var p7 = ({ a: { b } }) => { }; >p7 : ({ a: { b } }: { a: { b: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a: { b } }) => { } : ({ a: { b } }: { a: { b: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >b : any @@ -148,9 +148,9 @@ var p7 = ({ a: { b } }) => { }; var p8 = ({ a = 1 }) => { }; >p8 : ({ a }: { a?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a = 1 }) => { } : ({ a }: { a?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >a : number > : ^^^^^^ >1 : 1 @@ -158,9 +158,9 @@ var p8 = ({ a = 1 }) => { }; var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; >p9 : ({ a: { b } }: { a?: { b?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b } }: { a?: { b?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >a : any > : ^^^ >b : number @@ -176,9 +176,9 @@ var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; var p10 = ([{ value, done }]) => { }; >p10 : ([{ value, done }]: [{ value: any; done: any; }]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >([{ value, done }]) => { } : ([{ value, done }]: [{ value: any; done: any; }]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >value : any > : ^^^ >done : any @@ -192,9 +192,9 @@ class MyClass { m = (n) => n + 1; >m : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(n) => n + 1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any >n + 1 : any >n : any @@ -203,9 +203,9 @@ class MyClass { p = (n) => n && this; >p : (n: any) => this -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(n) => n && this : (n: any) => this -> : ^^^^^^^^^^^^^^^^ +> : >n : any >n && this : this > : ^^^^ @@ -219,9 +219,9 @@ class MyClass { var m = (n) => n + 1; >m : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(n) => n + 1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any >n + 1 : any >n : any @@ -230,9 +230,9 @@ class MyClass { var p = (n) => n && this; >p : (n: any) => this -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(n) => n && this : (n: any) => this -> : ^^^^^^^^^^^^^^^^ +> : >n : any >n && this : this > : ^^^^ @@ -245,17 +245,17 @@ class MyClass { // Arrow function used in arrow function var arrrr = () => (m: number) => () => (n: number) => m + n; >arrrr : () => (m: number) => () => (n: number) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >() => (m: number) => () => (n: number) => m + n : () => (m: number) => () => (n: number) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : >(m: number) => () => (n: number) => m + n : (m: number) => () => (n: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >m : number > : ^^^^^^ >() => (n: number) => m + n : () => (n: number) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^ >(n: number) => m + n : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >m + n : number @@ -271,13 +271,13 @@ var e = arrrr()(3)()(4); >arrrr()(3)()(4) : number > : ^^^^^^ >arrrr()(3)() : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arrrr()(3) : () => (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^ >arrrr() : (m: number) => () => (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >arrrr : () => (m: number) => () => (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 @@ -294,13 +294,13 @@ function someFn() { var arr = (n: number) => (p: number) => p * n; >arr : (n: number) => (p: number) => number -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >(n: number) => (p: number) => p * n : (n: number) => (p: number) => number -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >(p: number) => p * n : (p: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : number > : ^^^^^^ >p * n : number @@ -314,19 +314,19 @@ function someFn() { >arr(3)(4).toExponential() : string > : ^^^^^^ >arr(3)(4).toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arr(3)(4) : number > : ^^^^^^ >arr(3) : (p: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arr : (n: number) => (p: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 > : ^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } // Arrow function used in function @@ -336,9 +336,9 @@ function someOtherFn() { var arr = (n: number) => '' + n; >arr : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => '' + n : (n: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >'' + n : string @@ -352,15 +352,15 @@ function someOtherFn() { >arr(4).charAt(0) : string > : ^^^^^^ >arr(4).charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arr(4) : string > : ^^^^^^ >arr : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >4 : 4 > : ^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ } @@ -378,7 +378,7 @@ function outerFn() { >arrowFn : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : var p = arrowFn(); >p : void @@ -397,15 +397,15 @@ function outerFn() { // Arrow function used in nested function in arrow function var f = (n: string) => { >f : (n: string) => () => string -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >(n: string) => { function fn(x: number) { return () => n + x; } return fn(4);} : (n: string) => () => string -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : >n : string > : ^^^^^^ function fn(x: number) { >fn : (x: number) => () => string -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -423,7 +423,7 @@ var f = (n: string) => { >fn(4) : () => string > : ^^^^^^^^^^^^ >fn : (x: number) => () => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ } @@ -435,7 +435,7 @@ var g = f('')(); >f('') : () => string > : ^^^^^^^^^^^^ >f : (n: string) => () => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ @@ -447,13 +447,13 @@ var g: string; // Arrow function used in nested function in arrow function in nested function function someOuterFn() { >someOuterFn : () => (n: string) => () => () => number -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ var arr = (n: string) => { >arr : (n: string) => () => () => number -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(n: string) => { function innerFn() { return () => n.length; } return innerFn; } : (n: string) => () => () => number -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : string > : ^^^^^^ @@ -477,7 +477,7 @@ function someOuterFn() { } return arr; >arr : (n: string) => () => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ } var h = someOuterFn()('')()(); >h : number @@ -489,9 +489,9 @@ var h = someOuterFn()('')()(); >someOuterFn()('') : () => () => number > : ^^^^^^^^^^^^^^^^^^ >someOuterFn() : (n: string) => () => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >someOuterFn : () => (n: string) => () => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ @@ -499,11 +499,11 @@ h.toExponential(); >h.toExponential() : string > : ^^^^^^ >h.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >h : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ // Arrow function used in try/catch/finally in function function tryCatchFn() { @@ -515,7 +515,7 @@ function tryCatchFn() { >x : () => any > : ^^^^^^^^^ >() => this : () => any -> : ^^^^^^^^^ +> : >this : any } catch (e) { @@ -525,7 +525,7 @@ function tryCatchFn() { >t : () => any > : ^^^^^^^^^ >() => e + this : () => any -> : ^^^^^^^^^ +> : >e + this : any >e : any >this : any @@ -535,7 +535,7 @@ function tryCatchFn() { >m : () => string > : ^^^^^^^^^^^^ >() => this + '' : () => string -> : ^^^^^^^^^^^^ +> : >this + '' : string > : ^^^^^^ >this : any diff --git a/tests/baselines/reference/arrowFunctionJSDocAnnotation.types b/tests/baselines/reference/arrowFunctionJSDocAnnotation.types index 21268a495d0b1..4c8bbacebc9df 100644 --- a/tests/baselines/reference/arrowFunctionJSDocAnnotation.types +++ b/tests/baselines/reference/arrowFunctionJSDocAnnotation.types @@ -6,7 +6,7 @@ */ function identity(v) { >identity : (v: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any return v; @@ -17,7 +17,7 @@ const x = identity( >x : any >identity( /** * @param {number} param * @returns {number=} */ param => param) : any >identity : (v: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ /** * @param {number} param @@ -25,7 +25,7 @@ const x = identity( */ param => param >param => param : (param: number) => number | undefined -> : ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^ >param : number > : ^^^^^^ >param : number diff --git a/tests/baselines/reference/arrowFunctionMissingCurlyWithSemicolon.types b/tests/baselines/reference/arrowFunctionMissingCurlyWithSemicolon.types index cb9ba8d43d23d..9b0601e702fbe 100644 --- a/tests/baselines/reference/arrowFunctionMissingCurlyWithSemicolon.types +++ b/tests/baselines/reference/arrowFunctionMissingCurlyWithSemicolon.types @@ -6,7 +6,7 @@ var f = () => ; >f : () => any > : ^^^^^^^^^ >() => : () => any -> : ^^^^^^^^^ +> : > : any > : ^^^ @@ -30,9 +30,9 @@ var b = 1 * 2 * 3 * 4; var square = (x: number) => x * x; >square : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x * x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x * x : number diff --git a/tests/baselines/reference/arrowFunctionParsingDoesNotConfuseParenthesizedObjectForArrowHead.types b/tests/baselines/reference/arrowFunctionParsingDoesNotConfuseParenthesizedObjectForArrowHead.types index e7999a9ef5b9c..10c4f90cd1d01 100644 --- a/tests/baselines/reference/arrowFunctionParsingDoesNotConfuseParenthesizedObjectForArrowHead.types +++ b/tests/baselines/reference/arrowFunctionParsingDoesNotConfuseParenthesizedObjectForArrowHead.types @@ -13,7 +13,7 @@ const test = () => ({ >test : () => { prop: boolean; run: () => "special" | "default"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ // "Identifier expected." error on "!" and two "Duplicate identifier '(Missing)'." errors on space. prop: !value, // remove ! to see that errors will be gone run: () => { //replace arrow function with regular function to see that errors will be gone // comment next line or remove "()" to see that errors will be gone if(!a.b()) { return 'special'; } return 'default'; }}) : () => { prop: boolean; run: () => "special" | "default"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ // "Identifier expected." error on "!" and two "Duplicate identifier '(Missing)'." errors on space. prop: !value, // remove ! to see that errors will be gone run: () => { //replace arrow function with regular function to see that errors will be gone // comment next line or remove "()" to see that errors will be gone if(!a.b()) { return 'special'; } return 'default'; }}) : { prop: boolean; run: () => "special" | "default"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ // "Identifier expected." error on "!" and two "Duplicate identifier '(Missing)'." errors on space. prop: !value, // remove ! to see that errors will be gone run: () => { //replace arrow function with regular function to see that errors will be gone // comment next line or remove "()" to see that errors will be gone if(!a.b()) { return 'special'; } return 'default'; }} : { prop: boolean; run: () => "special" | "default"; } @@ -32,7 +32,7 @@ const test = () => ({ >run : () => "special" | "default" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { //replace arrow function with regular function to see that errors will be gone // comment next line or remove "()" to see that errors will be gone if(!a.b()) { return 'special'; } return 'default'; } : () => "special" | "default" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : // comment next line or remove "()" to see that errors will be gone if(!a.b()) { return 'special'; } diff --git a/tests/baselines/reference/arrowFunctionParsingGenericInObject.types b/tests/baselines/reference/arrowFunctionParsingGenericInObject.types index d2bdaccd2c6fc..cba504a028851 100644 --- a/tests/baselines/reference/arrowFunctionParsingGenericInObject.types +++ b/tests/baselines/reference/arrowFunctionParsingGenericInObject.types @@ -3,19 +3,19 @@ === arrowFunctionParsingGenericInObject.ts === const fn1 = () => ({ >fn1 : () => { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ test: (value: T): T => value, extraValue: () => {},}) : () => { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ test: (value: T): T => value, extraValue: () => {},}) : { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ test: (value: T): T => value, extraValue: () => {},} : { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ test: (value: T): T => value, >test : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >(value: T): T => value : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -25,25 +25,25 @@ const fn1 = () => ({ >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : }) const fn1async = () => ({ >fn1async : () => { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ test: async (value: T): Promise => value, extraValue: () => {},}) : () => { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ test: async (value: T): Promise => value, extraValue: () => {},}) : { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ test: async (value: T): Promise => value, extraValue: () => {},} : { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ test: async (value: T): Promise => value, >test : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >async (value: T): Promise => value : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -53,25 +53,25 @@ const fn1async = () => ({ >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : }) const fn2 = () => ({ >fn2 : () => { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ test: (value: T): T => value, extraValue: () => {},}) : () => { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ test: (value: T): T => value, extraValue: () => {},}) : { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ test: (value: T): T => value, extraValue: () => {},} : { test: (value: T) => T; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ test: (value: T): T => value, >test : (value: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(value: T): T => value : (value: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -81,25 +81,25 @@ const fn2 = () => ({ >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : }) const fn2async = () => ({ >fn2async : () => { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ test: async (value: T): Promise => value, extraValue: () => {},}) : () => { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ test: async (value: T): Promise => value, extraValue: () => {},}) : { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ test: async (value: T): Promise => value, extraValue: () => {},} : { test: (value: T) => Promise; extraValue: () => void; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ test: async (value: T): Promise => value, >test : (value: T) => Promise -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >async (value: T): Promise => value : (value: T) => Promise -> : ^ ^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -109,31 +109,31 @@ const fn2async = () => ({ >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : }) const fn3 = () => ({ >fn3 : () => { extraValue: () => void; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >() => ({ extraValue: () => {}, test: (value: T): T => value,}) : () => { extraValue: () => void; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : >({ extraValue: () => {}, test: (value: T): T => value,}) : { extraValue: () => void; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >{ extraValue: () => {}, test: (value: T): T => value,} : { extraValue: () => void; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ extraValue: () => {}, >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : test: (value: T): T => value, >test : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >(value: T): T => value : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -143,25 +143,25 @@ const fn3 = () => ({ const fn3async = () => ({ >fn3async : () => { extraValue: () => void; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >() => ({ extraValue: () => {}, test: async (value: T): Promise => value,}) : () => { extraValue: () => void; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : >({ extraValue: () => {}, test: async (value: T): Promise => value,}) : { extraValue: () => void; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >{ extraValue: () => {}, test: async (value: T): Promise => value,} : { extraValue: () => void; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ extraValue: () => {}, >extraValue : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : test: async (value: T): Promise => value, >test : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >async (value: T): Promise => value : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -171,13 +171,13 @@ const fn3async = () => ({ const fn4 = () => ({ >fn4 : () => { extraValue: string; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >() => ({ extraValue: '', test: (value: T): T => value,}) : () => { extraValue: string; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : >({ extraValue: '', test: (value: T): T => value,}) : { extraValue: string; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >{ extraValue: '', test: (value: T): T => value,} : { extraValue: string; test: (value: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ extraValue: '', >extraValue : string @@ -187,9 +187,9 @@ const fn4 = () => ({ test: (value: T): T => value, >test : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >(value: T): T => value : (value: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T @@ -199,13 +199,13 @@ const fn4 = () => ({ const fn4async = () => ({ >fn4async : () => { extraValue: string; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >() => ({ extraValue: '', test: async (value: T): Promise => value,}) : () => { extraValue: string; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : >({ extraValue: '', test: async (value: T): Promise => value,}) : { extraValue: string; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >{ extraValue: '', test: async (value: T): Promise => value,} : { extraValue: string; test: (value: T) => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ extraValue: '', >extraValue : string @@ -215,9 +215,9 @@ const fn4async = () => ({ test: async (value: T): Promise => value, >test : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >async (value: T): Promise => value : (value: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ >value : T diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types index d161de30bc9b1..26bde0a776b50 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody1.types @@ -3,9 +3,9 @@ === arrowFunctionWithObjectLiteralBody1.ts === var v = a => {} >v : (a: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >a => {} : (a: any) => any -> : ^^^^^^^^^^^^ +> : >a : any >{} : any >{} : {} diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types index 3860234fcdaa4..6359a2ffbb7ec 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody2.types @@ -3,9 +3,9 @@ === arrowFunctionWithObjectLiteralBody2.ts === var v = a => {} >v : (a: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >a => {} : (a: any) => any -> : ^^^^^^^^^^^^ +> : >a : any >{} : any >{} : any diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types index bfafa5ffe1347..c67061716a5d6 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody3.types @@ -3,9 +3,9 @@ === arrowFunctionWithObjectLiteralBody3.ts === var v = a => {} >v : (a: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >a => {} : (a: any) => any -> : ^^^^^^^^^^^^ +> : >a : any >{} : any >{} : {} diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types index dc486c237a35f..fbcc400befcd8 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody4.types @@ -3,9 +3,9 @@ === arrowFunctionWithObjectLiteralBody4.ts === var v = a => {} >v : (a: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >a => {} : (a: any) => any -> : ^^^^^^^^^^^^ +> : >a : any >{} : any >{} : any diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types index eaa9c7ceaa3f0..79baf990d01b2 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody5.types @@ -5,7 +5,7 @@ var a = () => { name: "foo", message: "bar" }; >a : () => Error > : ^^^^^^ >() => { name: "foo", message: "bar" } : () => Error -> : ^^^^^^ +> : >{ name: "foo", message: "bar" } : Error > : ^^^^^ >{ name: "foo", message: "bar" } : { name: string; message: string; } @@ -23,7 +23,7 @@ var b = () => ({ name: "foo", message: "bar" }); >b : () => Error > : ^^^^^^^^^^^ >() => ({ name: "foo", message: "bar" }) : () => Error -> : ^^^^^^^^^^^ +> : >({ name: "foo", message: "bar" }) : Error > : ^^^^^ >{ name: "foo", message: "bar" } : Error @@ -43,7 +43,7 @@ var c = () => ({ name: "foo", message: "bar" }); >c : () => { name: string; message: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ name: "foo", message: "bar" }) : () => { name: string; message: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ name: "foo", message: "bar" }) : { name: string; message: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ name: "foo", message: "bar" } : { name: string; message: string; } @@ -61,7 +61,7 @@ var d = () => ((({ name: "foo", message: "bar" }))); >d : () => Error > : ^^^^^^^^^^^ >() => ((({ name: "foo", message: "bar" }))) : () => Error -> : ^^^^^^^^^^^ +> : >((({ name: "foo", message: "bar" }))) : Error > : ^^^^^ >(({ name: "foo", message: "bar" })) : Error diff --git a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types index e12e0f6795508..000ba0a37b3d9 100644 --- a/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types +++ b/tests/baselines/reference/arrowFunctionWithObjectLiteralBody6.types @@ -5,7 +5,7 @@ var a = () => { name: "foo", message: "bar" }; >a : () => Error > : ^^^^^^ >() => { name: "foo", message: "bar" } : () => Error -> : ^^^^^^ +> : >{ name: "foo", message: "bar" } : Error > : ^^^^^ >{ name: "foo", message: "bar" } : { name: string; message: string; } @@ -23,7 +23,7 @@ var b = () => ({ name: "foo", message: "bar" }); >b : () => Error > : ^^^^^^^^^^^ >() => ({ name: "foo", message: "bar" }) : () => Error -> : ^^^^^^^^^^^ +> : >({ name: "foo", message: "bar" }) : Error > : ^^^^^ >{ name: "foo", message: "bar" } : Error @@ -43,7 +43,7 @@ var c = () => ({ name: "foo", message: "bar" }); >c : () => { name: string; message: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({ name: "foo", message: "bar" }) : () => { name: string; message: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ name: "foo", message: "bar" }) : { name: string; message: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ name: "foo", message: "bar" } : { name: string; message: string; } @@ -61,7 +61,7 @@ var d = () => ((({ name: "foo", message: "bar" }))); >d : () => Error > : ^^^^^^^^^^^ >() => ((({ name: "foo", message: "bar" }))) : () => Error -> : ^^^^^^^^^^^ +> : >((({ name: "foo", message: "bar" }))) : Error > : ^^^^^ >(({ name: "foo", message: "bar" })) : Error diff --git a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es2017.types b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es2017.types index dad7cd1b9b9be..abcd0c1faac49 100644 --- a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es2017.types +++ b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es2017.types @@ -3,9 +3,9 @@ === arrowFunctionWithParameterNameAsync_es2017.ts === const x = async => async; >x : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >async => async : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : >async : any >async : any diff --git a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es5.types b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es5.types index 2a97c6e0b7d19..2ceb52993a75a 100644 --- a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es5.types +++ b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es5.types @@ -3,9 +3,9 @@ === arrowFunctionWithParameterNameAsync_es5.ts === const x = async => async; >x : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >async => async : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : >async : any >async : any diff --git a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es6.types b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es6.types index ce6bec80bb873..77aa5d5d4f057 100644 --- a/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es6.types +++ b/tests/baselines/reference/arrowFunctionWithParameterNameAsync_es6.types @@ -3,9 +3,9 @@ === arrowFunctionWithParameterNameAsync_es6.ts === const x = async => async; >x : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >async => async : (async: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : >async : any >async : any diff --git a/tests/baselines/reference/arrowFunctionsMissingTokens.types b/tests/baselines/reference/arrowFunctionsMissingTokens.types index a9d7c6eee6a88..467723af05d35 100644 --- a/tests/baselines/reference/arrowFunctionsMissingTokens.types +++ b/tests/baselines/reference/arrowFunctionsMissingTokens.types @@ -9,27 +9,27 @@ module missingArrowsWithCurly { >a : () => void > : ^^^^^^^^^^ >() { } : () => void -> : ^^^^^^^^^^ +> : var b = (): void { } >b : () => void > : ^^^^^^ >(): void { } : () => void -> : ^^^^^^ +> : var c = (x) { }; >c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(x) { } : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ var d = (x: number, y: string) { }; >d : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: number, y: string) { } : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -37,9 +37,9 @@ module missingArrowsWithCurly { var e = (x: number, y: string): void { }; >e : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string): void { } : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -58,7 +58,7 @@ module missingCurliesWithArrow { >a : () => void > : ^^^^^^^^^^ >() => var k = 10;} : () => void -> : ^^^^^^^^^^ +> : >k : number > : ^^^^^^ >10 : 10 @@ -68,7 +68,7 @@ module missingCurliesWithArrow { >b : () => void > : ^^^^^^ >(): void => var k = 10;} : () => void -> : ^^^^^^ +> : >k : number > : ^^^^^^ >10 : 10 @@ -76,9 +76,9 @@ module missingCurliesWithArrow { var c = (x) => var k = 10;}; >c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(x) => var k = 10;} : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >k : number @@ -88,9 +88,9 @@ module missingCurliesWithArrow { var d = (x: number, y: string) => var k = 10;}; >d : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: number, y: string) => var k = 10;} : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -102,9 +102,9 @@ module missingCurliesWithArrow { var e = (x: number, y: string): void => var k = 10;}; >e : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string): void => var k = 10;} : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -118,7 +118,7 @@ module missingCurliesWithArrow { >f : () => void > : ^^^^^^^^^^ >() => var k = 10;} : () => void -> : ^^^^^^^^^^ +> : >k : number > : ^^^^^^ >10 : 10 @@ -133,7 +133,7 @@ module missingCurliesWithArrow { >a : () => any > : ^^^^^^^^^ >() => : () => any -> : ^^^^^^^^^ +> : > : any > : ^^^ @@ -141,15 +141,15 @@ module missingCurliesWithArrow { >b : () => void > : ^^^^^^ >(): void => : () => void -> : ^^^^^^ +> : > : any > : ^^^ var c = (x) => }; >c : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(x) => : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ > : any @@ -157,9 +157,9 @@ module missingCurliesWithArrow { var d = (x: number, y: string) => }; >d : (x: number, y: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >(x: number, y: string) => : (x: number, y: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -169,9 +169,9 @@ module missingCurliesWithArrow { var e = (x: number, y: string): void => }; >e : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string): void => : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -183,7 +183,7 @@ module missingCurliesWithArrow { >f : () => any > : ^^^^^^^^^ >() => : () => any -> : ^^^^^^^^^ +> : > : any > : ^^^ } @@ -205,7 +205,7 @@ module ce_nEst_pas_une_arrow_function { >b : () => void > : ^^^^^^ >(): void : () => void -> : ^^^^^^ +> : > : any > : ^^^ @@ -219,9 +219,9 @@ module ce_nEst_pas_une_arrow_function { var d = (x: number, y: string); >d : (x: number, y: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >(x: number, y: string) : (x: number, y: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -231,9 +231,9 @@ module ce_nEst_pas_une_arrow_function { var e = (x: number, y: string): void; >e : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string): void : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -250,27 +250,27 @@ module okay { >a : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : var b = (): void => { } >b : () => void > : ^^^^^^ >(): void => { } : () => void -> : ^^^^^^ +> : var c = (x) => { }; >c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(x) => { } : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ var d = (x: number, y: string) => { }; >d : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: number, y: string) => { } : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -278,9 +278,9 @@ module okay { var e = (x: number, y: string): void => { }; >e : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string): void => { } : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : >x : number > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/asOperator3.types b/tests/baselines/reference/asOperator3.types index 2e4a8002f2ee8..3aa9f17b2c7e4 100644 --- a/tests/baselines/reference/asOperator3.types +++ b/tests/baselines/reference/asOperator3.types @@ -3,7 +3,7 @@ === asOperator3.ts === declare function tag(...x: any[]): any; >tag : (...x: any[]) => any -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : any[] > : ^^^^^ @@ -88,7 +88,7 @@ var g = tag `Hello ${123} World` as string; > : ^^^^^^ >tag `Hello ${123} World` : any >tag : (...x: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >`Hello ${123} World` : string > : ^^^^^^ >123 : 123 @@ -101,7 +101,7 @@ var h = tag `Hello` as string; > : ^^^^^^ >tag `Hello` : any >tag : (...x: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >`Hello` : "Hello" > : ^^^^^^^ diff --git a/tests/baselines/reference/asOperatorASI.types b/tests/baselines/reference/asOperatorASI.types index fecc9d79f38fe..cd70c5203d9bc 100644 --- a/tests/baselines/reference/asOperatorASI.types +++ b/tests/baselines/reference/asOperatorASI.types @@ -7,7 +7,7 @@ class Foo { } declare function as(...args: any[]); >as : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >args : any[] > : ^^^^^ @@ -21,7 +21,7 @@ var x = 10 as `Hello world`; // should not error >as `Hello world` : any >as : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >`Hello world` : "Hello world" > : ^^^^^^^^^^^^^ @@ -35,7 +35,7 @@ var y = 20 as(Foo); // should emit >as(Foo) : any >as : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >Foo : typeof Foo > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/asOperatorContextualType.types b/tests/baselines/reference/asOperatorContextualType.types index 66edddb0c6421..2502509d7e47a 100644 --- a/tests/baselines/reference/asOperatorContextualType.types +++ b/tests/baselines/reference/asOperatorContextualType.types @@ -4,13 +4,13 @@ // should error var x = (v => v) as (x: number) => string; >x : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(v => v) as (x: number) => string : (x: number) => string -> : ^^^^ ^^^^^ +> : >(v => v) : (v: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >v => v : (v: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >v : number diff --git a/tests/baselines/reference/asiPreventsParsingAsInterface02.types b/tests/baselines/reference/asiPreventsParsingAsInterface02.types index 6c2de6cfa9294..3add14250f4c0 100644 --- a/tests/baselines/reference/asiPreventsParsingAsInterface02.types +++ b/tests/baselines/reference/asiPreventsParsingAsInterface02.types @@ -3,7 +3,7 @@ === asiPreventsParsingAsInterface02.ts === function f(interface: number, I: string) { >f : (interface: number, I: string) => void -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >interface : number > : ^^^^^^ >I : string diff --git a/tests/baselines/reference/assertInWrapSomeTypeParameter.types b/tests/baselines/reference/assertInWrapSomeTypeParameter.types index f591ceb28ce1c..2739028c7e116 100644 --- a/tests/baselines/reference/assertInWrapSomeTypeParameter.types +++ b/tests/baselines/reference/assertInWrapSomeTypeParameter.types @@ -7,7 +7,7 @@ class C> { foo>(x: U) { >foo : >>(x: U) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : U > : ^ diff --git a/tests/baselines/reference/assertionFunctionWildcardImport1.types b/tests/baselines/reference/assertionFunctionWildcardImport1.types index b155ea9617649..edcbefa024299 100644 --- a/tests/baselines/reference/assertionFunctionWildcardImport1.types +++ b/tests/baselines/reference/assertionFunctionWildcardImport1.types @@ -12,7 +12,7 @@ export { Debug }; === src/core/debug.ts === export declare function assert(expression: unknown): asserts expression; >assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >expression : unknown > : ^^^^^^^ @@ -30,7 +30,7 @@ ts.Debug.assert(true); >ts.Debug.assert(true) : void > : ^^^^ >ts.Debug.assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >ts.Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >ts : typeof ts @@ -38,7 +38,7 @@ ts.Debug.assert(true); >Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -46,11 +46,11 @@ Debug.assert(true); >Debug.assert(true) : void > : ^^^^ >Debug.assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -73,7 +73,7 @@ ts.Debug.assert(true); >ts.Debug.assert(true) : void > : ^^^^ >ts.Debug.assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >ts.Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >ts : typeof ts @@ -81,7 +81,7 @@ ts.Debug.assert(true); >Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -89,11 +89,11 @@ Debug.assert(true); >Debug.assert(true) : void > : ^^^^ >Debug.assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >Debug : typeof ts.Debug > : ^^^^^^^^^^^^^^^ >assert : (expression: unknown) => asserts expression -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ diff --git a/tests/baselines/reference/assertionFunctionWildcardImport2.types b/tests/baselines/reference/assertionFunctionWildcardImport2.types index 4ee94ca92525c..b74240fbf1d94 100644 --- a/tests/baselines/reference/assertionFunctionWildcardImport2.types +++ b/tests/baselines/reference/assertionFunctionWildcardImport2.types @@ -3,7 +3,7 @@ === asserts.ts === function isNonNullable(obj: T): asserts obj is NonNullable { >isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ @@ -34,7 +34,7 @@ function isNonNullable(obj: T): asserts obj is NonNullable { export { isNonNullable >isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }; @@ -45,7 +45,7 @@ import * as asserts from "./asserts"; function test(obj: string | null): void { >test : (obj: string | null) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : string | null > : ^^^^^^^^^^^^^ @@ -53,11 +53,11 @@ function test(obj: string | null): void { >asserts.isNonNullable(obj) : void > : ^^^^ >asserts.isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asserts : typeof asserts > : ^^^^^^^^^^^^^^ >isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : string | null > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types b/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types index e4feb930b1b04..deb93da51bc93 100644 --- a/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types +++ b/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types @@ -31,7 +31,7 @@ type Animal = Cat | Dog; declare function assertEqual(value: any, type: T): asserts value is T; >assertEqual : (value: any, type: T) => asserts value is T -> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >value : any >type : T > : ^ @@ -56,7 +56,7 @@ assertEqual(animal.type, 'cat' as const); >assertEqual(animal.type, 'cat' as const) : void > : ^^^^ >assertEqual : (value: any, type: T) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >animal.type : "cat" | "dog" > : ^^^^^^^^^^^^^ >animal : Animal @@ -96,7 +96,7 @@ assertEqual(animalOrUndef?.type, 'cat' as const); >assertEqual(animalOrUndef?.type, 'cat' as const) : void > : ^^^^ >assertEqual : (value: any, type: T) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >animalOrUndef?.type : "cat" | "dog" | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >animalOrUndef : Animal | undefined diff --git a/tests/baselines/reference/assertionTypePredicates1.types b/tests/baselines/reference/assertionTypePredicates1.types index 3bf1e215180d7..e810ca3cdb8cc 100644 --- a/tests/baselines/reference/assertionTypePredicates1.types +++ b/tests/baselines/reference/assertionTypePredicates1.types @@ -3,47 +3,47 @@ === assertionTypePredicates1.ts === declare function isString(value: unknown): value is string; >isString : (value: unknown) => value is string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ declare function isArrayOfStrings(value: unknown): value is string[]; >isArrayOfStrings : (value: unknown) => value is string[] -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ const assert: (value: unknown) => asserts value = value => {} >assert : (value: unknown) => asserts value -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ >value => {} : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >value : unknown > : ^^^^^^^ declare function assertIsString(value: unknown): asserts value is string; >assertIsString : (value: unknown) => asserts value is string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ declare function assertIsArrayOfStrings(value: unknown): asserts value is string[]; >assertIsArrayOfStrings : (value: unknown) => asserts value is string[] -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ declare function assertDefined(value: T): asserts value is NonNullable; >assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ function f01(x: unknown) { >f01 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -59,7 +59,7 @@ function f01(x: unknown) { >assert(typeof x === "string") : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -89,7 +89,7 @@ function f01(x: unknown) { >assert(x instanceof Error) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x instanceof Error : boolean > : ^^^^^^^ >x : unknown @@ -117,7 +117,7 @@ function f01(x: unknown) { >assert(typeof x === "boolean" || typeof x === "number") : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "boolean" || typeof x === "number" : boolean > : ^^^^^^^ >typeof x === "boolean" : boolean @@ -138,12 +138,12 @@ function f01(x: unknown) { > : ^^^^^^^^ x.toLocaleString; ->x.toLocaleString : ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) | (() => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x.toLocaleString : ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) | (() => string) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | boolean > : ^^^^^^^^^^^^^^^^ ->toLocaleString : ((locales?: string | string[] | undefined, options?: Intl.NumberFormatOptions | undefined) => string) | (() => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toLocaleString : ((locales?: string | string[], options?: Intl.NumberFormatOptions) => string) | (() => string) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } if (!!true) { >!!true : true @@ -157,11 +157,11 @@ function f01(x: unknown) { >assert(isArrayOfStrings(x)) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >isArrayOfStrings(x) : boolean > : ^^^^^^^ >isArrayOfStrings : (value: unknown) => value is string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -189,7 +189,7 @@ function f01(x: unknown) { >assertIsArrayOfStrings(x) : void > : ^^^^ >assertIsArrayOfStrings : (value: unknown) => asserts value is string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -217,7 +217,7 @@ function f01(x: unknown) { >assertIsArrayOfStrings(false) : void > : ^^^^ >assertIsArrayOfStrings : (value: unknown) => asserts value is string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -237,7 +237,7 @@ function f01(x: unknown) { >assert(x === undefined || typeof x === "string") : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x === undefined || typeof x === "string" : boolean > : ^^^^^^^ >x === undefined : boolean @@ -263,7 +263,7 @@ function f01(x: unknown) { >assertDefined(x) : void > : ^^^^ >assertDefined : (value: T) => asserts value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -283,7 +283,7 @@ function f01(x: unknown) { >assert(false) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -303,7 +303,7 @@ function f01(x: unknown) { >assert(false && x === undefined) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >false && x === undefined : false > : ^^^^^ >false : false @@ -323,7 +323,7 @@ function f01(x: unknown) { function f02(x: string | undefined) { >f02 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -339,7 +339,7 @@ function f02(x: string | undefined) { >assert(x) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -363,7 +363,7 @@ function f02(x: string | undefined) { >assert(x !== undefined) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x !== undefined : boolean > : ^^^^^^^ >x : string | undefined @@ -391,7 +391,7 @@ function f02(x: string | undefined) { >assertDefined(x) : void > : ^^^^ >assertDefined : (value: T) => asserts value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -407,11 +407,11 @@ function f02(x: string | undefined) { function f03(x: string | undefined, assert: (value: unknown) => asserts value) { >f03 : (x: string | undefined, assert: (value: unknown) => asserts value) => void -> : ^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ @@ -419,7 +419,7 @@ function f03(x: string | undefined, assert: (value: unknown) => asserts value) { >assert(x) : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -438,7 +438,7 @@ namespace Debug { export declare function assert(value: unknown, message?: string): asserts value; >assert : (value: unknown, message?: string) => asserts value -> : ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >value : unknown > : ^^^^^^^ >message : string | undefined @@ -446,14 +446,14 @@ namespace Debug { export declare function assertDefined(value: T): asserts value is NonNullable; >assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ } function f10(x: string | undefined) { >f10 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -468,12 +468,12 @@ function f10(x: string | undefined) { Debug.assert(x); >Debug.assert(x) : void > : ^^^^ ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Debug.assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Debug : typeof Debug > : ^^^^^^^^^^^^ ->assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -496,12 +496,12 @@ function f10(x: string | undefined) { Debug.assert(x !== undefined); >Debug.assert(x !== undefined) : void > : ^^^^ ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Debug.assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Debug : typeof Debug > : ^^^^^^^^^^^^ ->assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >x !== undefined : boolean > : ^^^^^^^ >x : string | undefined @@ -529,11 +529,11 @@ function f10(x: string | undefined) { >Debug.assertDefined(x) : void > : ^^^^ >Debug.assertDefined : (value: T) => asserts value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Debug : typeof Debug > : ^^^^^^^^^^^^ >assertDefined : (value: T) => asserts value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -556,12 +556,12 @@ function f10(x: string | undefined) { Debug.assert(false); >Debug.assert(false) : void > : ^^^^ ->Debug.assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Debug.assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Debug : typeof Debug > : ^^^^^^^^^^^^ ->assert : (value: unknown, message?: string | undefined) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>assert : (value: unknown, message?: string) => asserts value +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -577,7 +577,7 @@ class Test { assert(value: unknown): asserts value { >assert : (value: unknown) => asserts value -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ @@ -657,7 +657,7 @@ class Test { } foo(x: unknown) { >foo : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -665,11 +665,11 @@ class Test { >this.assert(typeof x === "string") : void > : ^^^^ >this.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -725,7 +725,7 @@ class Test { } baz(x: number) { >baz : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -733,11 +733,11 @@ class Test { >this.assert(false) : void > : ^^^^ >this.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -768,7 +768,7 @@ class Derived extends Test { foo(x: unknown) { >foo : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -776,11 +776,11 @@ class Derived extends Test { >super.assert(typeof x === "string") : void > : ^^^^ >super.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >super : Test > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -800,7 +800,7 @@ class Derived extends Test { } baz(x: number) { >baz : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -808,11 +808,11 @@ class Derived extends Test { >super.assert(false) : void > : ^^^^ >super.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >super : Test > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -824,7 +824,7 @@ class Derived extends Test { function f11(items: Test[]) { >f11 : (items: Test[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >items : Test[] > : ^^^^^^ @@ -876,19 +876,19 @@ function f11(items: Test[]) { declare let Q1: new (x: unknown) => x is string; >Q1 : new (x: unknown) => x is string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ declare let Q2: new (x: boolean) => asserts x; >Q2 : new (x: boolean) => asserts x -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : boolean > : ^^^^^^^ declare let Q3: new (x: unknown) => asserts x is string; >Q3 : new (x: unknown) => asserts x is string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ @@ -919,15 +919,15 @@ declare class Wat { function f20(x: unknown) { >f20 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ const assert = (value: unknown): asserts value => {} >assert : (value: unknown) => asserts value -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(value: unknown): asserts value => {} : (value: unknown) => asserts value -> : ^^^^^^^^ ^^^^^ +> : >value : unknown > : ^^^^^^^ @@ -935,7 +935,7 @@ function f20(x: unknown) { >assert(typeof x === "string") : void > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -947,19 +947,19 @@ function f20(x: unknown) { const a = [assert]; >a : ((value: unknown) => asserts value)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >[assert] : ((value: unknown) => asserts value)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ a[0](typeof x === "string"); // Error >a[0](typeof x === "string") : void > : ^^^^ >a[0] : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >a : ((value: unknown) => asserts value)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >typeof x === "string" : boolean @@ -983,11 +983,11 @@ function f20(x: unknown) { >t1.assert(typeof x === "string") : void > : ^^^^ >t1.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >t1 : Test > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -1009,11 +1009,11 @@ function f20(x: unknown) { >t2.assert(typeof x === "string") : void > : ^^^^ >t2.assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >t2 : Test > : ^^^^ >assert : (value: unknown) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -1046,7 +1046,7 @@ interface GoodThing { function example1(things: Thing[]) { >example1 : (things: Thing[]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >things : Thing[] > : ^^^^^^^ diff --git a/tests/baselines/reference/assertionTypePredicates2.types b/tests/baselines/reference/assertionTypePredicates2.types index f8f237740836c..a45516436a359 100644 --- a/tests/baselines/reference/assertionTypePredicates2.types +++ b/tests/baselines/reference/assertionTypePredicates2.types @@ -15,9 +15,9 @@ */ const foo = (a) => { >foo : (a: A) => asserts a is B -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >(a) => { if (/** @type { B } */ (a).y !== 0) throw TypeError(); return undefined;} : (a: A) => asserts a is B -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : >a : A > : ^ @@ -49,7 +49,7 @@ export const main = () => { >main : () => void > : ^^^^^^^^^^ >() => { /** @type { A } */ const a = { x: 1 }; foo(a);} : () => void -> : ^^^^^^^^^^ +> : /** @type { A } */ const a = { x: 1 }; @@ -66,7 +66,7 @@ export const main = () => { >foo(a) : void > : ^^^^ >foo : (a: A) => asserts a is B -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : A > : ^ diff --git a/tests/baselines/reference/assertionsAndNonReturningFunctions.types b/tests/baselines/reference/assertionsAndNonReturningFunctions.types index f2cf534b84946..4cbad34aa450f 100644 --- a/tests/baselines/reference/assertionsAndNonReturningFunctions.types +++ b/tests/baselines/reference/assertionsAndNonReturningFunctions.types @@ -8,7 +8,7 @@ const assert = check => { >assert : AssertFunc > : ^^^^^^^^^^ >check => { if (!check) throw new Error();} : (check: boolean) => asserts check -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >check : boolean > : ^^^^^^^ @@ -26,7 +26,7 @@ const assert = check => { /** @type {(x: unknown) => asserts x is string } */ function assertIsString(x) { >assertIsString : (x: unknown) => asserts x is string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ @@ -55,7 +55,7 @@ function assertIsString(x) { */ function assert2(check) { >assert2 : (check: boolean) => asserts check -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >check : boolean > : ^^^^^^^ @@ -89,7 +89,7 @@ function fail() { */ function f1(x) { >f1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -135,7 +135,7 @@ function f1(x) { >assert2(typeof x === "string") : void > : ^^^^ >assert2 : (check: boolean) => asserts check -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >typeof x === "string" : boolean > : ^^^^^^^ >typeof x : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -165,7 +165,7 @@ function f1(x) { >assertIsString(x) : void > : ^^^^ >assertIsString : (x: unknown) => asserts x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -202,7 +202,7 @@ function f1(x) { */ function f2(b) { >f2 : (b: boolean) => 1 | 0 -> : ^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >b : boolean > : ^^^^^^^ diff --git a/tests/baselines/reference/assignAnyToEveryType.types b/tests/baselines/reference/assignAnyToEveryType.types index e0ee109dbc349..ae14349981f21 100644 --- a/tests/baselines/reference/assignAnyToEveryType.types +++ b/tests/baselines/reference/assignAnyToEveryType.types @@ -125,7 +125,7 @@ var j: { (): string } = x; var j2: { (x: T): string } = x; >j2 : (x: T) => string -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >x : any @@ -152,7 +152,7 @@ M = x; function k(a: T) { >k : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/assignEveryTypeToAny.types b/tests/baselines/reference/assignEveryTypeToAny.types index cebdc77f5856f..77c023dea7081 100644 --- a/tests/baselines/reference/assignEveryTypeToAny.types +++ b/tests/baselines/reference/assignEveryTypeToAny.types @@ -195,12 +195,12 @@ x = { f() { return 1; } } x = { f(x: T) { return x; } } >x = { f(x: T) { return x; } } : { f(x: T): T; } -> : ^^^^ ^^^^^ ^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^^ >x : any >{ f(x: T) { return x; } } : { f(x: T): T; } -> : ^^^^ ^^^^^ ^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^^ >f : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -208,7 +208,7 @@ x = { f(x: T) { return x; } } function j(a: T) { >j : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/assignFromNumberInterface2.types b/tests/baselines/reference/assignFromNumberInterface2.types index c9214b892fbb5..fb717bf271921 100644 --- a/tests/baselines/reference/assignFromNumberInterface2.types +++ b/tests/baselines/reference/assignFromNumberInterface2.types @@ -10,25 +10,25 @@ interface Number { interface NotNumber { toString(radix?: number): string; >toString : (radix?: number) => string -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >radix : number > : ^^^^^^ toFixed(fractionDigits?: number): string; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >fractionDigits : number > : ^^^^^^ toExponential(fractionDigits?: number): string; >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >fractionDigits : number > : ^^^^^^ toPrecision(precision?: number): string; >toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >precision : number > : ^^^^^^ diff --git a/tests/baselines/reference/assignFromStringInterface2.types b/tests/baselines/reference/assignFromStringInterface2.types index f7ed1fc676fe5..089fb85d63604 100644 --- a/tests/baselines/reference/assignFromStringInterface2.types +++ b/tests/baselines/reference/assignFromStringInterface2.types @@ -18,25 +18,25 @@ interface NotString { charAt(pos: number): string; >charAt : (pos: number) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >pos : number > : ^^^^^^ charCodeAt(index: number): number; >charCodeAt : (index: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >index : number > : ^^^^^^ concat(...strings: string[]): string; >concat : (...strings: string[]) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >strings : string[] > : ^^^^^^^^ indexOf(searchString: string, position?: number): number; >indexOf : (searchString: string, position?: number) => number -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchString : string > : ^^^^^^ >position : number @@ -44,7 +44,7 @@ interface NotString { lastIndexOf(searchString: string, position?: number): number; >lastIndexOf : (searchString: string, position?: number) => number -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchString : string > : ^^^^^^ >position : number @@ -52,25 +52,25 @@ interface NotString { localeCompare(that: string): number; >localeCompare : (that: string) => number -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >that : string > : ^^^^^^ match(regexp: string): RegExpMatchArray; >match : { (regexp: string): RegExpMatchArray; (regexp: RegExp): RegExpMatchArray; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >regexp : string > : ^^^^^^ match(regexp: RegExp): RegExpMatchArray; >match : { (regexp: string): RegExpMatchArray; (regexp: RegExp): RegExpMatchArray; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >regexp : RegExp > : ^^^^^^ replace(searchValue: string, replaceValue: string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : string > : ^^^^^^ >replaceValue : string @@ -78,11 +78,11 @@ interface NotString { replace(searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : string > : ^^^^^^ >replaceValue : (substring: string, ...args: any[]) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >substring : string > : ^^^^^^ >args : any[] @@ -90,7 +90,7 @@ interface NotString { replace(searchValue: RegExp, replaceValue: string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >searchValue : RegExp > : ^^^^^^ >replaceValue : string @@ -98,11 +98,11 @@ interface NotString { replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; >replace : { (searchValue: string, replaceValue: string): string; (searchValue: string, replaceValue: (substring: string, ...args: any[]) => string): string; (searchValue: RegExp, replaceValue: string): string; (searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >searchValue : RegExp > : ^^^^^^ >replaceValue : (substring: string, ...args: any[]) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >substring : string > : ^^^^^^ >args : any[] @@ -110,19 +110,19 @@ interface NotString { search(regexp: string): number; >search : { (regexp: string): number; (regexp: RegExp): number; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >regexp : string > : ^^^^^^ search(regexp: RegExp): number; >search : { (regexp: string): number; (regexp: RegExp): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >regexp : RegExp > : ^^^^^^ slice(start?: number, end?: number): string; >slice : (start?: number, end?: number) => string -> : ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -130,7 +130,7 @@ interface NotString { split(separator: string, limit?: number): string[]; >split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >separator : string > : ^^^^^^ >limit : number @@ -138,7 +138,7 @@ interface NotString { split(separator: RegExp, limit?: number): string[]; >split : { (separator: string, limit?: number): string[]; (separator: RegExp, limit?: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >separator : RegExp > : ^^^^^^ >limit : number @@ -146,7 +146,7 @@ interface NotString { substring(start: number, end?: number): string; >substring : (start: number, end?: number) => string -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -178,7 +178,7 @@ interface NotString { substr(from: number, length?: number): string; >substr : (from: number, length?: number) => string -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >from : number > : ^^^^^^ >length : number diff --git a/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.types b/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.types index ca600591f7c94..fec2c84589667 100644 --- a/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.types +++ b/tests/baselines/reference/assignLambdaToNominalSubtypeOfFunction.types @@ -9,7 +9,7 @@ interface IResultCallback extends Function { function fn(cb: IResultCallback) { } >fn : (cb: IResultCallback) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >cb : IResultCallback > : ^^^^^^^^^^^^^^^ @@ -17,9 +17,9 @@ fn((a, b) => true); >fn((a, b) => true) : void > : ^^^^ >fn : (cb: IResultCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a, b) => true : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -31,9 +31,9 @@ fn(function (a, b) { return true; }) >fn(function (a, b) { return true; }) : void > : ^^^^ >fn : (cb: IResultCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (a, b) { return true; } : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any diff --git a/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationES2022.types b/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationES2022.types index 2d6e663cbf4fa..315625e3682af 100644 --- a/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationES2022.types +++ b/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationES2022.types @@ -75,7 +75,7 @@ class C { >m3 : () => void > : ^^^^^^^^^^ >function() { } : () => void -> : ^^^^^^^^^^ +> : constructor(public foo: string) {} >foo : string @@ -150,7 +150,7 @@ class E { >bar : () => string > : ^^^^^^^^^^^^ >() => this.foo1 + this.foo2 : () => string -> : ^^^^^^^^^^^^ +> : >this.foo1 + this.foo2 : string > : ^^^^^^ >this.foo1 : string @@ -243,7 +243,7 @@ class H { >p2 : () => string > : ^^^^^^^^^^^^ >() => { return this.p1.foo; } : () => string -> : ^^^^^^^^^^^^ +> : return this.p1.foo; >this.p1.foo : string @@ -262,7 +262,7 @@ class H { >p3 : () => string > : ^^^^^^^^^^^^ >() => this.p1.foo : () => string -> : ^^^^^^^^^^^^ +> : >this.p1.foo : string > : ^^^^^^ >this.p1 : C diff --git a/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationESNext.types b/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationESNext.types index a9ae0a2ab3598..e02d596cbf1f8 100644 --- a/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationESNext.types +++ b/tests/baselines/reference/assignParameterPropertyToPropertyDeclarationESNext.types @@ -75,7 +75,7 @@ class C { >m3 : () => void > : ^^^^^^^^^^ >function() { } : () => void -> : ^^^^^^^^^^ +> : constructor(public foo: string) {} >foo : string @@ -150,7 +150,7 @@ class E { >bar : () => string > : ^^^^^^^^^^^^ >() => this.foo1 + this.foo2 : () => string -> : ^^^^^^^^^^^^ +> : >this.foo1 + this.foo2 : string > : ^^^^^^ >this.foo1 : string @@ -243,7 +243,7 @@ class H { >p2 : () => string > : ^^^^^^^^^^^^ >() => { return this.p1.foo; } : () => string -> : ^^^^^^^^^^^^ +> : return this.p1.foo; >this.p1.foo : string @@ -262,7 +262,7 @@ class H { >p3 : () => string > : ^^^^^^^^^^^^ >() => this.p1.foo : () => string -> : ^^^^^^^^^^^^ +> : >this.p1.foo : string > : ^^^^^^ >this.p1 : C diff --git a/tests/baselines/reference/assignToFn.types b/tests/baselines/reference/assignToFn.types index 2ed234c3422ff..db1bf189a28a5 100644 --- a/tests/baselines/reference/assignToFn.types +++ b/tests/baselines/reference/assignToFn.types @@ -8,7 +8,7 @@ module M { interface I { f(n:number):boolean; >f : (n: number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ } @@ -17,11 +17,11 @@ module M { >x : I > : ^ >{ f:function(n) { return true; } } : { f: (n: number) => true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : (n: number) => true -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >function(n) { return true; } : (n: number) => true -> : ^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >true : true @@ -31,11 +31,11 @@ module M { >x.f="hello" : "hello" > : ^^^^^^^ >x.f : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : I > : ^ >f : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } diff --git a/tests/baselines/reference/assignToPrototype1.types b/tests/baselines/reference/assignToPrototype1.types index ba8d0ff71ebf2..c211672b50570 100644 --- a/tests/baselines/reference/assignToPrototype1.types +++ b/tests/baselines/reference/assignToPrototype1.types @@ -7,7 +7,7 @@ declare class Point { add(dx: number, dy: number): void; >add : (dx: number, dy: number) => void -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dx : number > : ^^^^^^ >dy : number @@ -16,9 +16,9 @@ declare class Point { Point.prototype.add = function(dx, dy) { >Point.prototype.add = function(dx, dy) {} : (dx: number, dy: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >Point.prototype.add : (dx: number, dy: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >Point.prototype : Point > : ^^^^^ >Point : typeof Point @@ -26,9 +26,9 @@ Point.prototype.add = function(dx, dy) { >prototype : Point > : ^^^^^ >add : (dx: number, dy: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function(dx, dy) {} : (dx: number, dy: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >dx : number > : ^^^^^^ >dy : number diff --git a/tests/baselines/reference/assigningFromObjectToAnythingElse.types b/tests/baselines/reference/assigningFromObjectToAnythingElse.types index a24a42b3eef56..feb99b14d4c4d 100644 --- a/tests/baselines/reference/assigningFromObjectToAnythingElse.types +++ b/tests/baselines/reference/assigningFromObjectToAnythingElse.types @@ -22,12 +22,12 @@ var a: String = Object.create(""); > : ^^^^^^ >Object.create("") : any > : ^^^ ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >"" : "" > : ^^ @@ -36,12 +36,12 @@ var c: String = Object.create(1); > : ^^^^^^ >Object.create(1) : any > : ^^^ ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.types b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.types index 1c9bc07b8fd3a..5574eb97edf64 100644 --- a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.types +++ b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.types @@ -40,7 +40,7 @@ emptyObjArray = emptyObjTuple; >emptyObjArray : {}[] > : ^^^^ >emptyObjTuple : [{}] -> : ^^^^ +> : ^ ^ emptyObjArray = numStrTuple; >emptyObjArray = numStrTuple : [number, string] @@ -64,7 +64,7 @@ emptyObjArray = numEmptyObjTuple; >emptyObjArray : {}[] > : ^^^^ >numEmptyObjTuple : [number, {}] -> : ^^^^^^^^^^^^ +> : ^^^^^^^^^ ^ // error numArray = numStrTuple; @@ -81,5 +81,5 @@ emptyObjTuple = emptyObjArray; >emptyObjTuple : [{}] > : ^^^^ >emptyObjArray : {}[] -> : ^^^^ +> : ^^ diff --git a/tests/baselines/reference/assignmentCompatBug2.types b/tests/baselines/reference/assignmentCompatBug2.types index d44949448aa47..3a33b45941f1a 100644 --- a/tests/baselines/reference/assignmentCompatBug2.types +++ b/tests/baselines/reference/assignmentCompatBug2.types @@ -43,13 +43,13 @@ b2 = {b: 0, a: 0 }; var b3: { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; }; >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^ ^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^ ^^ ^^^ ^^^^ ^^ ^^^ ^^^^^ ^^^^^^ ^^^^^ ^^ ^^^ ^^^ >f : (n: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ >g : (s: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ >m : number @@ -57,23 +57,23 @@ var b3: { f(n: number): number; g(s: string): number; m: number; n?: number; k?( >n : number > : ^^^^^^ >k : (a: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any > : ^^^ b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0,} : { f: (n: number) => number; g: (s: string) => number; m: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f: (n) => { return 0; }, >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(n) => { return 0; } : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >0 : 0 @@ -81,9 +81,9 @@ b3 = { g: (s) => { return 0; }, >g : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(s) => { return 0; } : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >0 : 0 @@ -99,17 +99,17 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ f: (n) => { return 0; }, g: (s) => { return 0; },} : { f: (n: number) => number; g: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ f: (n) => { return 0; }, >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(n) => { return 0; } : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >0 : 0 @@ -117,9 +117,9 @@ b3 = { g: (s) => { return 0; }, >g : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(s) => { return 0; } : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >0 : 0 @@ -129,17 +129,17 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ f: (n) => { return 0; }, m: 0,} : { f: (n: number) => number; m: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f: (n) => { return 0; }, >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(n) => { return 0; } : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >0 : 0 @@ -155,17 +155,17 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ f: (n) => { return 0; }, g: (s) => { return 0; }, m: 0, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; m: number; n: number; k: (a: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ f: (n) => { return 0; }, >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(n) => { return 0; } : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >0 : 0 @@ -173,9 +173,9 @@ b3 = { g: (s) => { return 0; }, >g : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(s) => { return 0; } : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >0 : 0 @@ -195,9 +195,9 @@ b3 = { k: (a) =>{ return null; }, >k : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(a) =>{ return null; } : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ @@ -205,17 +205,17 @@ b3 = { b3 = { >b3 = { f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >b3 : { f(n: number): number; g(s: string): number; m: number; n?: number; k?(a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ f: (n) => { return 0; }, g: (s) => { return 0; }, n: 0, k: (a) =>{ return null; },} : { f: (n: number) => number; g: (s: string) => number; n: number; k: (a: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ f: (n) => { return 0; }, >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(n) => { return 0; } : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >0 : 0 @@ -223,9 +223,9 @@ b3 = { g: (s) => { return 0; }, >g : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(s) => { return 0; } : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >0 : 0 @@ -239,9 +239,9 @@ b3 = { k: (a) =>{ return null; }, >k : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(a) =>{ return null; } : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ diff --git a/tests/baselines/reference/assignmentCompatBug3.types b/tests/baselines/reference/assignmentCompatBug3.types index 29a59533ecada..1a1bafcc64670 100644 --- a/tests/baselines/reference/assignmentCompatBug3.types +++ b/tests/baselines/reference/assignmentCompatBug3.types @@ -3,7 +3,7 @@ === assignmentCompatBug3.ts === function makePoint(x: number, y: number) { >makePoint : (x: number, y: number) => { readonly x: number; readonly y: number; dist: () => number; } -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -31,17 +31,17 @@ function makePoint(x: number, y: number) { >dist : () => number > : ^^^^^^^^^^^^ >function () { return Math.sqrt(x*x+y*y); // shouldn't be picking up "x" and "y" from the object lit } : () => number -> : ^^^^^^^^^^^^ +> : return Math.sqrt(x*x+y*y); // shouldn't be picking up "x" and "y" from the object lit >Math.sqrt(x*x+y*y) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x*x+y*y : number > : ^^^^^^ >x*x : number @@ -76,7 +76,7 @@ class C { function foo(test: string) { } >foo : (test: string) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >test : string > : ^^^^^^ @@ -90,14 +90,14 @@ foo(x); >foo(x) : void > : ^^^^ >foo : (test: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : any foo(x + y); >foo(x + y) : void > : ^^^^ >foo : (test: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x + y : any >x : any >y : any diff --git a/tests/baselines/reference/assignmentCompatBug5.types b/tests/baselines/reference/assignmentCompatBug5.types index b130918b1b457..61f3aa0fdd266 100644 --- a/tests/baselines/reference/assignmentCompatBug5.types +++ b/tests/baselines/reference/assignmentCompatBug5.types @@ -3,7 +3,7 @@ === assignmentCompatBug5.ts === function foo1(x: { a: number; }) { } >foo1 : (x: { a: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -13,7 +13,7 @@ foo1({ b: 5 }); >foo1({ b: 5 }) : void > : ^^^^ >foo1 : (x: { a: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ b: 5 } : { b: number; } > : ^^^^^^^^^^^^^^ >b : number @@ -23,7 +23,7 @@ foo1({ b: 5 }); function foo2(x: number[]) { } >foo2 : (x: number[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number[] > : ^^^^^^^^ @@ -31,7 +31,7 @@ foo2(["s", "t"]); >foo2(["s", "t"]) : void > : ^^^^ >foo2 : (x: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >["s", "t"] : string[] > : ^^^^^^^^ >"s" : "s" @@ -41,9 +41,9 @@ foo2(["s", "t"]); function foo3(x: (n: number) =>number) { }; >foo3 : (x: (n: number) => number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : (n: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ @@ -51,9 +51,9 @@ foo3((s:string) => { }); >foo3((s:string) => { }) : void > : ^^^^ >foo3 : (x: (n: number) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(s:string) => { } : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ @@ -61,9 +61,9 @@ foo3((n) => { return; }); >foo3((n) => { return; }) : void > : ^^^^ >foo3 : (x: (n: number) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(n) => { return; } : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types b/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types index 400ddf9b38097..4ff88697136bf 100644 --- a/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types +++ b/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types @@ -3,7 +3,7 @@ === assignmentCompatFunctionsWithOptionalArgs.ts === function foo(x: { id: number; name?: string; }): void; >foo : (x: { id: number; name?: string; }) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { id: number; name?: string; } > : ^^^^^^ ^^^^^^^^^ ^^^ >id : number @@ -15,7 +15,7 @@ foo({ id: 1234 }); // Ok >foo({ id: 1234 }) : void > : ^^^^ >foo : (x: { id: number; name?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ id: 1234 } : { id: number; } > : ^^^^^^^^^^^^^^^ >id : number @@ -27,7 +27,7 @@ foo({ id: 1234, name: "hello" }); // Ok >foo({ id: 1234, name: "hello" }) : void > : ^^^^ >foo : (x: { id: number; name?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ id: 1234, name: "hello" } : { id: number; name: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : number @@ -43,7 +43,7 @@ foo({ id: 1234, name: false }); // Error, name of wrong type >foo({ id: 1234, name: false }) : void > : ^^^^ >foo : (x: { id: number; name?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ id: 1234, name: false } : { id: number; name: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : number @@ -59,7 +59,7 @@ foo({ name: "hello" }); // Error, id required but missing >foo({ name: "hello" }) : void > : ^^^^ >foo : (x: { id: number; name?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ name: "hello" } : { name: string; } > : ^^^^^^^^^^^^^^^^^ >name : string diff --git a/tests/baselines/reference/assignmentCompatInterfaceWithStringIndexSignature.types b/tests/baselines/reference/assignmentCompatInterfaceWithStringIndexSignature.types index b4977859dae6a..2210501e5686b 100644 --- a/tests/baselines/reference/assignmentCompatInterfaceWithStringIndexSignature.types +++ b/tests/baselines/reference/assignmentCompatInterfaceWithStringIndexSignature.types @@ -24,7 +24,7 @@ class Foo { function Biz(map: IHandlerMap) { } >Biz : (map: IHandlerMap) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >map : IHandlerMap > : ^^^^^^^^^^^ @@ -32,7 +32,7 @@ Biz(new Foo()); >Biz(new Foo()) : void > : ^^^^ >Biz : (map: IHandlerMap) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new Foo() : Foo > : ^^^ >Foo : typeof Foo diff --git a/tests/baselines/reference/assignmentCompatOnNew.types b/tests/baselines/reference/assignmentCompatOnNew.types index cde51e1daaecb..d765b3f08c38a 100644 --- a/tests/baselines/reference/assignmentCompatOnNew.types +++ b/tests/baselines/reference/assignmentCompatOnNew.types @@ -7,15 +7,15 @@ class Foo{}; function bar(x: {new(): Foo;}){} >bar : (x: { new (): Foo; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : new () => Foo > : ^^^^^^^^^^ bar(Foo); // Error, but should be allowed >bar(Foo) : void > : ^^^^ ->bar : (x: new () => Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar : (x: { new (): Foo; }) => void +> : ^ ^^ ^^^^^^^^^ >Foo : typeof Foo > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures.types b/tests/baselines/reference/assignmentCompatWithCallSignatures.types index d7185816eb60a..67f18805a814b 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures.types @@ -14,23 +14,23 @@ var t: T; var a: { (x: number): void }; >a : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ t = a; >t = a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : T > : ^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ a = t; >a = t : T > : ^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -45,7 +45,7 @@ var s: S; var a2: { (x: number): string }; >a2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -59,35 +59,35 @@ t = s; t = a2; >t = a2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >a2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a = s; >a = s : S > : ^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : S > : ^ a = a2; >a = a2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ t = (x: T) => 1; >t = (x: T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >t : T > : ^ >(x: T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >1 : 1 @@ -105,11 +105,11 @@ t = () => 1; t = function (x: number) { return ''; } >t = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -117,11 +117,11 @@ t = function (x: number) { return ''; } a = (x: T) => 1; >a = (x: T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(x: T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >1 : 1 @@ -131,7 +131,7 @@ a = () => 1; >a = () => 1 : () => number > : ^^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -139,11 +139,11 @@ a = () => 1; a = function (x: number) { return ''; } >a = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -160,7 +160,7 @@ var s2: S2; var a3: { (x: string): void }; >a3 : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -175,19 +175,19 @@ t = s2; t = a3; >t = a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : T > : ^ >a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ t = (x: string) => 1; >t = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -195,11 +195,11 @@ t = (x: string) => 1; t = function (x: string) { return ''; } >t = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -209,25 +209,25 @@ a = s2; >a = s2 : S2 > : ^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s2 : S2 > : ^^ a = a3; >a = a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ a = (x: string) => 1; >a = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -235,11 +235,11 @@ a = (x: string) => 1; a = function (x: string) { return ''; } >a = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures2.types b/tests/baselines/reference/assignmentCompatWithCallSignatures2.types index e78a873d18635..57c39a0e4e32b 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures2.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures2.types @@ -6,7 +6,7 @@ interface T { f(x: number): void; >f : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -16,32 +16,32 @@ var t: T; var a: { f(x: number): void }; >a : { f(x: number): void; } -> : ^^^^^^^ ^^^ ^^^ +> : ^^^^ ^^ ^^^ ^^^ >f : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ t = a; >t = a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >t : T > : ^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ a = t; >a = t : T > : ^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >t : T > : ^ interface S { f(x: number): string; >f : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -51,9 +51,9 @@ var s: S; var a2: { f(x: number): string }; >a2 : { f(x: number): string; } -> : ^^^^^^^ ^^^ ^^^ +> : ^^^^ ^^ ^^^ ^^^ >f : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -67,27 +67,27 @@ t = s; t = a2; >t = a2 : { f(x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >t : T > : ^ >a2 : { f(x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ a = s; >a = s : S > : ^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >s : S > : ^ a = a2; >a = a2 : { f(x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >a2 : { f(x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ t = { f: () => 1 }; >t = { f: () => 1 } : { f: () => number; } @@ -99,21 +99,21 @@ t = { f: () => 1 }; >f : () => number > : ^^^^^^^^^^^^ >() => 1 : () => number -> : ^^^^^^^^^^^^ +> : >1 : 1 > : ^ t = { f: (x:T) => 1 }; >t = { f: (x:T) => 1 } : { f: (x: T) => number; } -> : ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >t : T > : ^ >{ f: (x:T) => 1 } : { f: (x: T) => number; } -> : ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >f : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >(x:T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : >x : T > : ^ >1 : 1 @@ -129,7 +129,7 @@ t = { f: function f() { return 1 } }; >f : () => number > : ^^^^^^^^^^^^ >function f() { return 1 } : () => number -> : ^^^^^^^^^^^^ +> : >f : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -137,13 +137,13 @@ t = { f: function f() { return 1 } }; t = { f(x: number) { return ''; } } >t = { f(x: number) { return ''; } } : { f(x: number): string; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >t : T > : ^ >{ f(x: number) { return ''; } } : { f(x: number): string; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >f : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -153,27 +153,27 @@ a = { f: () => 1 } >a = { f: () => 1 } : { f: () => number; } > : ^^^^^^^^^^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >{ f: () => 1 } : { f: () => number; } > : ^^^^^^^^^^^^^^^^^^^^ >f : () => number > : ^^^^^^^^^^^^ >() => 1 : () => number -> : ^^^^^^^^^^^^ +> : >1 : 1 > : ^ a = { f: (x: T) => 1 }; >a = { f: (x: T) => 1 } : { f: (x: T) => number; } -> : ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >{ f: (x: T) => 1 } : { f: (x: T) => number; } -> : ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >f : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >(x: T) => 1 : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : >x : T > : ^ >1 : 1 @@ -181,15 +181,15 @@ a = { f: (x: T) => 1 }; a = { f: function (x: number) { return ''; } } >a = { f: function (x: number) { return ''; } } : { f: (x: number) => string; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >{ f: function (x: number) { return ''; } } : { f: (x: number) => string; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >'' : "" @@ -208,11 +208,11 @@ t = () => 1; t = function (x: number) { return ''; } >t = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -222,7 +222,7 @@ a = () => 1; >a = () => 1 : () => number > : ^^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -230,11 +230,11 @@ a = () => 1; a = function (x: number) { return ''; } >a = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -243,7 +243,7 @@ a = function (x: number) { return ''; } interface S2 { f(x: string): void; >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -253,9 +253,9 @@ var s2: S2; var a3: { f(x: string): void }; >a3 : { f(x: string): void; } -> : ^^^^^^^ ^^^ ^^^ +> : ^^^^ ^^ ^^^ ^^^ >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -270,19 +270,19 @@ t = s2; t = a3; >t = a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >t : T > : ^ >a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ t = (x: string) => 1; >t = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -290,11 +290,11 @@ t = (x: string) => 1; t = function (x: string) { return ''; } >t = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -304,25 +304,25 @@ a = s2; >a = s2 : S2 > : ^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >s2 : S2 > : ^^ a = a3; >a = a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ a = (x: string) => 1; >a = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -330,11 +330,11 @@ a = (x: string) => 1; a = function (x: string) { return ''; } >a = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f(x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types index 525fe32472302..45ece30a72527 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types @@ -35,25 +35,25 @@ class OtherDerived extends Base { bing: string; } var a: (x: number) => number[]; >a : (x: number) => number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ var a2: (x: number) => string[]; >a2 : (x: number) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ var a3: (x: number) => void; >a3 : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ var a4: (x: string, y: number) => string; >a4 : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -61,25 +61,25 @@ var a4: (x: string, y: number) => string; var a5: (x: (arg: string) => number) => string; >a5 : (x: (arg: string) => number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: string) => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ var a6: (x: (arg: Base) => Derived) => Base; >a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ var a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -87,13 +87,13 @@ var a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; var a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -101,13 +101,13 @@ var a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => var a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -115,13 +115,13 @@ var a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => var a10: (...x: Derived[]) => Derived; >a10 : (...x: Derived[]) => Derived -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : Derived[] > : ^^^^^^^^^ var a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -135,7 +135,7 @@ var a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; var a12: (x: Array, y: Array) => Array; >a12 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -143,7 +143,7 @@ var a12: (x: Array, y: Array) => Array; var a13: (x: Array, y: Array) => Array; >a13 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived[] @@ -151,7 +151,7 @@ var a13: (x: Array, y: Array) => Array; var a14: (x: { a: string; b: number }) => Object; >a14 : (x: { a: string; b: number; }) => Object -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -161,7 +161,7 @@ var a14: (x: { a: string; b: number }) => Object; var a15: { >a15 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: number): number[]; >x : number @@ -173,7 +173,7 @@ var a15: { } var a16: { >a16 : { (x: T): number[]; (x: U): number[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (x: T): number[]; >x : T @@ -185,28 +185,28 @@ var a16: { } var a17: { >a17 : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: (a: number) => number): number[]; >x : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ (x: (a: string) => string): string[]; >x : (a: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ }; var a18: { >a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: number): number; (a: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (a: number): number; >a : number @@ -219,7 +219,7 @@ var a18: { }): any[]; (x: { >x : { (a: boolean): boolean; (a: Date): Date; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (a: boolean): boolean; >a : boolean @@ -234,73 +234,73 @@ var a18: { var b: (x: T) => T[]; >b : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a = b; // ok >a = b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a : (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b = a; // ok >b = a : (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a : (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ var b2: (x: T) => string[]; >b2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; // ok >b2 = a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ var b3: (x: T) => T; >b3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; // ok >a3 = b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a3 : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ b3 = a3; // ok >b3 = a3 : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a3 : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ var b4: (x: T, y: U) => T; >b4 : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -308,73 +308,73 @@ var b4: (x: T, y: U) => T; a4 = b4; // ok >a4 = b4 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >a4 : (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ b4 = a4; // ok >b4 = a4 : (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >a4 : (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: (x: (arg: T) => U) => T; >b5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a5 = b5; // ok >a5 = b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a5 : (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ b5 = a5; // ok >b5 = a5 : (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a5 : (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var b6: (x: (arg: T) => U) => T; >b6 : (x: (arg: T) => U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6 = b6; // ok >a6 = b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b6 = a6; // ok >b6 = a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ var b7: (x: (arg: T) => U) => (r: T) => U; >b7 : (x: (arg: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -382,29 +382,29 @@ var b7: (x: (arg: T) => U) => (r: T) => U; a7 = b7; // ok >a7 = b7 : (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b7 : (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ b7 = a7; // ok >b7 = a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b7 : (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b8: (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; >b8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: T) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ >r : T @@ -412,29 +412,29 @@ var b8: (x: (arg: T) => U, y: (arg2: T) => U) a8 = b8; // ok >a8 = b8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b8 = a8; // ok >b8 = a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b9: (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; >b9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: string; bing: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: string; bing: number; } > : ^^^^^^^ ^^^^^^^^ ^^^ >foo : string @@ -446,45 +446,45 @@ var b9: (x: (arg: T) => U, y: (arg2: { foo: s a9 = b9; // ok >a9 = b9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b9 = a9; // ok >b9 = a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b10: (...x: T[]) => T; >b10 : (...x: T[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a10 = b10; // ok >a10 = b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b10 = a10; // ok >b10 = a10 : (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ var b11: (x: T, y: T) => T; >b11 : (x: T, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -492,71 +492,71 @@ var b11: (x: T, y: T) => T; a11 = b11; // ok >a11 = b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b11 = a11; // ok >b11 = a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ var b12: >(x: Array, y: T) => Array; >b12 : (x: Array, y: T) => Array -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T > : ^ a12 = b12; // ok ->a12 = b12 : (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a12 = b12 : (x: Array, y: T) => Derived[] +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : (x: Array, y: T) => Derived[] +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ b12 = a12; // ok ->b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b12 = a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : (x: Array, y: T) => Derived[] +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b13: >(x: Array, y: T) => T; >b13 : (x: Array, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T > : ^ a13 = b13; // ok ->a13 = b13 : (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a13 : (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b13 : (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a13 = b13 : (x: Array, y: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a13 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b13 : (x: Array, y: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b13 = a13; // ok ->b13 = a13 : (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b13 : (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a13 : (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b13 = a13 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b13 : (x: Array, y: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a13 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b14: (x: { a: T; b: T }) => T; >b14 : (x: { a: T; b: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -566,109 +566,109 @@ var b14: (x: { a: T; b: T }) => T; a14 = b14; // ok >a14 = b14 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a14 : (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b14 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ b14 = a14; // ok >b14 = a14 : (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b14 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a14 : (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var b15: (x: T) => T[]; >b15 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a15 = b15; // ok >a15 = b15 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a15 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b15 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b15 = a15; // ok >b15 = a15 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b15 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a15 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b16: (x: T) => number[]; >b16 : (x: T) => number[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ a16 = b16; // ok >a16 = b16 : (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >a16 : { (x: T): number[]; (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b16 : (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ b16 = a16; // ok >b16 = a16 : { (x: T): number[]; (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b16 : (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >a16 : { (x: T): number[]; (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b17: (x: (a: T) => T) => T[]; // ok >b17 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a17 = b17; // ok >a17 = b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a17 : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b17 = a17; // ok >b17 = a17 : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a17 : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b18: (x: (a: T) => T) => T[]; >b18 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a18 = b18; // ok >a18 = b18 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b18 = a18; // ok >b18 = a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures4.types b/tests/baselines/reference/assignmentCompatWithCallSignatures4.types index 3dfd15734532b..8ce6f291942eb 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures4.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures4.types @@ -44,15 +44,15 @@ module Errors { // target type with non-generic call signatures var a2: (x: number) => string[]; >a2 : (x: number) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ var a7: (x: (arg: Base) => Derived) => (r: Base) => Derived2; >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -60,13 +60,13 @@ module Errors { var a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -74,13 +74,13 @@ module Errors { var a10: (...x: Base[]) => Base; >a10 : (...x: Base[]) => Base -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ var a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -94,7 +94,7 @@ module Errors { var a12: (x: Array, y: Array) => Array; >a12 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -102,7 +102,7 @@ module Errors { var a14: { >a14 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: number): number[]; >x : number @@ -115,7 +115,7 @@ module Errors { }; var a15: (x: { a: string; b: number }) => number; >a15 : (x: { a: string; b: number; }) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -125,11 +125,11 @@ module Errors { var a16: { >a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: number): number; (a?: number): number; } -> : ^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ (a: number): number; >a : number @@ -142,7 +142,7 @@ module Errors { }): number[]; (x: { >x : { (a: boolean): boolean; (a?: boolean): boolean; } -> : ^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ (a: boolean): boolean; >a : boolean @@ -156,11 +156,11 @@ module Errors { }; var a17: { >a17 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -173,7 +173,7 @@ module Errors { }): any[]; (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -188,31 +188,31 @@ module Errors { var b2: (x: T) => U[]; >b2 : (x: T) => U[] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; >a2 = b2 : (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ b2 = a2; >b2 = a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >a2 : (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ var b7: (x: (arg: T) => U) => (r: T) => V; >b7 : (x: (arg: T) => U) => (r: T) => V -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -220,29 +220,29 @@ module Errors { a7 = b7; >a7 = b7 : (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >b7 : (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ b7 = a7; >b7 = a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >b7 : (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ var b8: (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; >b8 : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: number; } > : ^^^^^^^ ^^^ >foo : number @@ -252,46 +252,46 @@ module Errors { a8 = b8; // error, { foo: number } and Base are incompatible >a8 = b8 : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b8 = a8; // error, { foo: number } and Base are incompatible >b8 = a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b10: (...x: T[]) => T; >b10 : (...x: T[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a10 = b10; >a10 = b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b10 = a10; >b10 = a10 : (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >b10 : (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ var b11: (x: T, y: T) => T; >b11 : (x: T, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -299,47 +299,47 @@ module Errors { a11 = b11; >a11 = b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b11 = a11; >b11 = a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ var b12: >(x: Array, y: Array) => T; >b12 : (x: Array, y: Array) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Base[] > : ^^^^^^ a12 = b12; ->a12 = b12 : (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a12 = b12 : (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b12 = a12; ->b12 = a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b12 = a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a12 : (x: Array, y: Array) => Derived[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b15: (x: { a: T; b: T }) => T; >b15 : (x: { a: T; b: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -349,23 +349,23 @@ module Errors { a15 = b15; >a15 = b15 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b15 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ b15 = a15; >b15 = a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b15 : (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var b15a: (x: { a: T; b: T }) => number; >b15a : (x: { a: T; b: T; }) => number -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -375,67 +375,67 @@ module Errors { a15 = b15a; >a15 = b15a : (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b15a : (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ b15a = a15; >b15a = a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b15a : (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a15 : (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var b16: (x: (a: T) => T) => T[]; >b16 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a16 = b16; >a16 = b16 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >b16 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b16 = a16; >b16 = a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >b16 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ var b17: (x: (a: T) => T) => any[]; >b17 : (x: (a: T) => T) => any[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a17 = b17; >a17 = b17 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a17 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^ +>a17 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^ b17 = a17; ->b17 = a17 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b17 = a17 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a17 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^ +>a17 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ } module WithGenericSignaturesInBaseType { @@ -445,59 +445,59 @@ module Errors { // target type has generic call signature var a2: (x: T) => T[]; >a2 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var b2: (x: T) => string[]; >b2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; >a2 = b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; >b2 = a2 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ // target type has generic call signature var a3: (x: T) => string[]; >a3 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var b3: (x: T) => T[]; >b3 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; >a3 = b3 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a3 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b3 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b3 = a3; >b3 = a3 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b3 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a3 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types index 8fcece343f415..c31fc6e6560a1 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types @@ -35,25 +35,25 @@ class OtherDerived extends Base { bing: string; } var a: (x: T) => T[]; >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var a3: (x: T) => void; >a3 : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var a4: (x: T, y: U) => string; >a4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -61,23 +61,23 @@ var a4: (x: T, y: U) => string; var a5: (x: (arg: T) => U) => T; >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ var a6: (x: (arg: T) => Derived) => T; >a6 : (x: (arg: T) => Derived) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ var a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -91,7 +91,7 @@ var a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; var a15: (x: { a: T; b: T }) => T[]; >a15 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -101,7 +101,7 @@ var a15: (x: { a: T; b: T }) => T[]; var a16: (x: { a: T; b: T }) => T[]; >a16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -111,28 +111,28 @@ var a16: (x: { a: T; b: T }) => T[]; var a17: { >a17 : { (x: (a: T) => T): T[]; (x: (a: T_1) => T_1): T_1[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (x: (a: T) => T): T[]; >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ (x: (a: T) => T): T[]; >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ }; var a18: { >a18 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -145,7 +145,7 @@ var a18: { }): any[]; (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -160,73 +160,73 @@ var a18: { var b: (x: T) => T[]; >b : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a = b; // ok >a = b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b = a; // ok >b = a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ var b2: (x: T) => string[]; >b2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; // ok >b2 = a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ var b3: (x: T) => T; >b3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; // ok >a3 = b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ b3 = a3; // ok >b3 = a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ var b4: (x: T, y: U) => string; >b4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -234,71 +234,71 @@ var b4: (x: T, y: U) => string; a4 = b4; // ok >a4 = b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ b4 = a4; // ok >b4 = a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: (x: (arg: T) => U) => T; >b5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a5 = b5; // ok >a5 = b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ b5 = a5; // ok >b5 = a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ var b6: (x: (arg: T) => U) => T; >b6 : (x: (arg: T) => U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6 = b6; // ok >a6 = b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : (x: (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b6 = a6; // ok >b6 = a6 : (x: (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b6 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : (x: (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ var b11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -312,23 +312,23 @@ var b11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; a11 = b11; // ok >a11 = b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ b11 = a11; // ok >b11 = a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ var b15: (x: { a: U; b: V; }) => U[]; >b15 : (x: { a: U; b: V; }) => U[] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { a: U; b: V; } > : ^^^^^ ^^^^^ ^^^ >a : U @@ -338,23 +338,23 @@ var b15: (x: { a: U; b: V; }) => U[]; a15 = b15; // ok, T = U, T = V >a15 = b15 : (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >a15 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b15 : (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ b15 = a15; // ok >b15 = a15 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b15 : (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >a15 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ var b16: (x: { a: T; b: T }) => T[]; >b16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -364,65 +364,65 @@ var b16: (x: { a: T; b: T }) => T[]; a15 = b16; // ok >a15 = b16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a15 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b15 = a16; // ok >b15 = a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b15 : (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ var b17: (x: (a: T) => T) => T[]; >b17 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a17 = b17; // ok >a17 = b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a17 : { (x: (a: T) => T): T[]; (x: (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b17 = a17; // ok >b17 = a17 : { (x: (a: T) => T): T[]; (x: (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a17 : { (x: (a: T) => T): T[]; (x: (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ var b18: (x: (a: T) => T) => any[]; >b18 : (x: (a: T) => T) => any[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (a: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ a18 = b18; // ok >a18 = b18 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a18 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ +>a18 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ b18 = a18; // ok ->b18 = a18 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b18 = a18 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a18 : { (x: { (a: T): T; (a: T_1): T_1; }): any[]; (x: { (a: T_2): T_2; (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ +>a18 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } +> : ^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types index cc8f31fd28d8e..378ae62ce743e 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types @@ -36,25 +36,25 @@ class OtherDerived extends Base { bing: string; } interface A { a: (x: T) => T[]; >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => void; >a3 : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => string; >a4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -62,23 +62,23 @@ interface A { a5: (x: (arg: T) => U) => T; >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => Derived) => T; >a6 : (x: (arg: T) => Derived) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -92,7 +92,7 @@ interface A { a15: (x: { a: T; b: T }) => T[]; >a15 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -102,7 +102,7 @@ interface A { a16: (x: { a: T; b: T }) => T[]; >a16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -117,97 +117,97 @@ var x: A; var b: (x: T) => T[]; >b : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ x.a = b; >x.a = b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x.a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : A > : ^ >a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b = x.a; >b = x.a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x.a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : A > : ^ >a : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ var b2: (x: T) => string[]; >b2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ x.a2 = b2; >x.a2 = b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >x.a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >x : A > : ^ >a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ b2 = x.a2; >b2 = x.a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >x.a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >x : A > : ^ >a2 : (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ var b3: (x: T) => T; >b3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ x.a3 = b3; >x.a3 = b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x.a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ b3 = x.a3; >b3 = x.a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >b3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x.a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a3 : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ var b4: (x: T, y: U) => string; >b4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -215,63 +215,63 @@ var b4: (x: T, y: U) => string; x.a4 = b4; >x.a4 = b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x.a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : A > : ^ >a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ b4 = x.a4; >b4 = x.a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x.a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : A > : ^ >a4 : (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: (x: (arg: T) => U) => T; >b5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ x.a5 = b5; >x.a5 = b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >x.a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >x : A > : ^ >a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ b5 = x.a5; >b5 = x.a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >x.a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >x : A > : ^ >a5 : (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ var b11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -285,31 +285,31 @@ var b11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; x.a11 = b11; >x.a11 = b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x.a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ b11 = x.a11; >b11 = x.a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x.a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ var b16: (x: { a: T; b: T }) => T[]; >b16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -319,25 +319,25 @@ var b16: (x: { a: T; b: T }) => T[]; x.a16 = b16; >x.a16 = b16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x.a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : A > : ^ >a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ b16 = x.a16; >b16 = x.a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x.a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : A > : ^ >a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.types b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.types index 90634b930c573..8b69f63655466 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.types @@ -10,19 +10,19 @@ interface Base { a2: (x?: number) => number; >a2 : (x?: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : number > : ^^^^^^ a3: (x: number) => number; >a3 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a4: (x: number, y?: number) => number; >a4 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -30,7 +30,7 @@ interface Base { a5: (x?: number, y?: number) => number; >a5 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -38,7 +38,7 @@ interface Base { a6: (x: number, y: number) => number; >a6 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -64,11 +64,11 @@ var a: () => number; a = (x?: number) => 1; // ok, same number of required params >a = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -76,11 +76,11 @@ var a: () => number; a = (x: number) => 1; // error, too many required params >a = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -100,67 +100,67 @@ var a: () => number; a = b.a2; // ok >a = b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ a = b.a3; // error >a = b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a = b.a4; // error >a = b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ a = b.a5; // ok >a = b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a = b.a6; // error >a = b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : () => number > : ^^^^^^^^^^^^ >b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ var a2: (x?: number) => number; >a2 : (x?: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : number > : ^^^^^^ @@ -168,7 +168,7 @@ var a2: (x?: number) => number; >a2 = () => 1 : () => number > : ^^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -176,11 +176,11 @@ var a2: (x?: number) => number; a2 = (x?: number) => 1; // ok, same number of required params >a2 = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -188,11 +188,11 @@ var a2: (x?: number) => number; a2 = (x: number) => 1; // ok, same number of params >a2 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -202,7 +202,7 @@ var a2: (x?: number) => number; >a2 = b.a : () => number > : ^^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a : () => number > : ^^^^^^^^^^^^ >b : Base @@ -212,67 +212,67 @@ var a2: (x?: number) => number; a2 = b.a2; // ok >a2 = b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ a2 = b.a3; // ok, same number of params >a2 = b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a2 = b.a4; // ok, excess params are optional in b.a3 >a2 = b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ a2 = b.a5; // ok >a2 = b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a2 = b.a6; // error >a2 = b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ var a3: (x: number) => number; >a3 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -280,7 +280,7 @@ var a3: (x: number) => number; >a3 = () => 1 : () => number > : ^^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -288,11 +288,11 @@ var a3: (x: number) => number; a3 = (x?: number) => 1; // ok, fewer required params >a3 = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -300,11 +300,11 @@ var a3: (x: number) => number; a3 = (x: number) => 1; // ok, same number of required params >a3 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -312,11 +312,11 @@ var a3: (x: number) => number; a3 = (x: number, y: number) => 1; // error, too many required params >a3 = (x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -328,7 +328,7 @@ var a3: (x: number) => number; >a3 = b.a : () => number > : ^^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a : () => number > : ^^^^^^^^^^^^ >b : Base @@ -338,67 +338,67 @@ var a3: (x: number) => number; a3 = b.a2; // ok >a3 = b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ a3 = b.a3; // ok >a3 = b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a3 = b.a4; // ok >a3 = b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ a3 = b.a5; // ok >a3 = b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a3 = b.a6; // error >a3 = b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ var a4: (x: number, y?: number) => number; >a4 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -408,7 +408,7 @@ var a4: (x: number, y?: number) => number; >a4 = () => 1 : () => number > : ^^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -416,11 +416,11 @@ var a4: (x: number, y?: number) => number; a4 = (x?: number, y?: number) => 1; // ok, fewer required params >a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -430,11 +430,11 @@ var a4: (x: number, y?: number) => number; a4 = (x: number) => 1; // ok, same number of required params >a4 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -442,11 +442,11 @@ var a4: (x: number, y?: number) => number; a4 = (x: number, y: number) => 1; // ok, same number of params >a4 = (x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >(x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -458,7 +458,7 @@ var a4: (x: number, y?: number) => number; >a4 = b.a : () => number > : ^^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a : () => number > : ^^^^^^^^^^^^ >b : Base @@ -468,67 +468,67 @@ var a4: (x: number, y?: number) => number; a4 = b.a2; // ok >a4 = b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ a4 = b.a3; // ok >a4 = b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a4 = b.a4; // ok >a4 = b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ a4 = b.a5; // ok >a4 = b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a4 = b.a6; // ok, same number of params >a4 = b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ var a5: (x?: number, y?: number) => number; >a5 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -538,7 +538,7 @@ var a5: (x?: number, y?: number) => number; >a5 = () => 1 : () => number > : ^^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -546,11 +546,11 @@ var a5: (x?: number, y?: number) => number; a5 = (x?: number, y?: number) => 1; // ok, fewer required params >a5 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -560,11 +560,11 @@ var a5: (x?: number, y?: number) => number; a5 = (x: number) => 1; // ok, fewer params in lambda >a5 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -572,11 +572,11 @@ var a5: (x?: number, y?: number) => number; a5 = (x: number, y: number) => 1; // ok, same number of params >a5 = (x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >(x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -588,7 +588,7 @@ var a5: (x?: number, y?: number) => number; >a5 = b.a : () => number > : ^^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a : () => number > : ^^^^^^^^^^^^ >b : Base @@ -598,61 +598,61 @@ var a5: (x?: number, y?: number) => number; a5 = b.a2; // ok >a5 = b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ a5 = b.a3; // ok, fewer params in b.a3 >a5 = b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a5 = b.a4; // ok, same number of params >a5 = b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ a5 = b.a5; // ok >a5 = b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a5 = b.a6; // ok, same number of params >a5 = b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a5 : (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.types b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.types index 6888880da0b62..fd6cb626730c5 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.types @@ -6,13 +6,13 @@ interface Base { a: (...args: number[]) => number; >a : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : number[] > : ^^^^^^^^ a2: (x: number, ...z: number[]) => number; >a2 : (x: number, ...z: number[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >z : number[] @@ -20,7 +20,7 @@ interface Base { a3: (x: number, y?: string, ...z: number[]) => number; >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -30,7 +30,7 @@ interface Base { a4: (x?: number, y?: string, ...z: number[]) => number; >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -41,7 +41,7 @@ interface Base { var a: (...args: number[]) => number; // ok, same number of required params >a : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : number[] > : ^^^^^^^^ @@ -49,7 +49,7 @@ var a: (...args: number[]) => number; // ok, same number of required params >a = () => 1 : () => number > : ^^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -57,11 +57,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (...args: number[]) => 1; // ok, same number of required params >a = (...args: number[]) => 1 : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...args: number[]) => 1 : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >args : number[] > : ^^^^^^^^ >1 : 1 @@ -69,11 +69,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (...args: string[]) => 1; // error, type mismatch >a = (...args: string[]) => 1 : (...args: string[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...args: string[]) => 1 : (...args: string[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >args : string[] > : ^^^^^^^^ >1 : 1 @@ -81,11 +81,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (x?: number) => 1; // ok, same number of required params >a = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -93,11 +93,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params >a = (x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(x?: number, y?: number, z?: number) => 1 : (x?: number, y?: number, z?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -109,11 +109,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (x: number) => 1; // ok, rest param corresponds to infinite number of params >a = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -121,11 +121,11 @@ var a: (...args: number[]) => number; // ok, same number of required params a = (x?: string) => 1; // error, incompatible type >a = (x?: string) => 1 : (x?: string) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : (...args: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(x?: string) => 1 : (x?: string) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -134,7 +134,7 @@ var a: (...args: number[]) => number; // ok, same number of required params var a2: (x: number, ...z: number[]) => number; >a2 : (x: number, ...z: number[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >z : number[] @@ -144,7 +144,7 @@ var a2: (x: number, ...z: number[]) => number; >a2 = () => 1 : () => number > : ^^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -152,11 +152,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (...args: number[]) => 1; // ok, fewer required params >a2 = (...args: number[]) => 1 : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(...args: number[]) => 1 : (...args: number[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >args : number[] > : ^^^^^^^^ >1 : 1 @@ -164,11 +164,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x?: number) => 1; // ok, fewer required params >a2 = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -176,11 +176,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x: number) => 1; // ok, same number of required params >a2 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -188,11 +188,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x: number, ...args: number[]) => 1; // ok, same number of required params >a2 = (x: number, ...args: number[]) => 1 : (x: number, ...args: number[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, ...args: number[]) => 1 : (x: number, ...args: number[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >args : number[] @@ -202,11 +202,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x: number, ...args: string[]) => 1; // should be type mismatch error >a2 = (x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >args : string[] @@ -216,11 +216,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x: number, y: number) => 1; // ok, rest param corresponds to infinite number of params >a2 = (x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, y: number) => 1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -230,11 +230,11 @@ var a2: (x: number, ...z: number[]) => number; a2 = (x: number, y?: number) => 1; // ok, same number of required params >a2 = (x: number, y?: number) => 1 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a2 : (x: number, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, y?: number) => 1 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -244,7 +244,7 @@ var a2: (x: number, ...z: number[]) => number; var a3: (x: number, y?: string, ...z: number[]) => number; >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -256,7 +256,7 @@ var a3: (x: number, y?: string, ...z: number[]) => number; >a3 = () => 1 : () => number > : ^^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -264,11 +264,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x?: number) => 1; // ok, fewer required params >a3 = (x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x?: number) => 1 : (x?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -276,11 +276,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: number) => 1; // ok, same number of required params >a3 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -288,11 +288,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: number, y: string) => 1; // ok, all present params match >a3 = (x: number, y: string) => 1 : (x: number, y: string) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, y: string) => 1 : (x: number, y: string) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -302,11 +302,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: number, y?: number, z?: number) => 1; // error >a3 = (x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, y?: number, z?: number) => 1 : (x: number, y?: number, z?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -318,11 +318,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: number, ...z: number[]) => 1; // error >a3 = (x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, ...z: number[]) => 1 : (x: number, ...z: number[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >z : number[] @@ -332,11 +332,11 @@ var a3: (x: number, y?: string, ...z: number[]) => number; a3 = (x: string, y?: string, z?: string) => 1; // error >a3 = (x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : (x: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: string, y?: string, z?: string) => 1 : (x: string, y?: string, z?: string) => number -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >y : string @@ -348,7 +348,7 @@ var a3: (x: number, y?: string, ...z: number[]) => number; var a4: (x?: number, y?: string, ...z: number[]) => number; >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -360,7 +360,7 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; >a4 = () => 1 : () => number > : ^^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -368,11 +368,11 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = (x?: number, y?: number) => 1; // error, type mismatch >a4 = (x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x?: number, y?: number) => 1 : (x?: number, y?: number) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -382,11 +382,11 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = (x: number) => 1; // ok, all present params match >a4 = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -394,11 +394,11 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = (x: number, y?: number) => 1; // error, second param has type mismatch >a4 = (x: number, y?: number) => 1 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, y?: number) => 1 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -408,11 +408,11 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types >a4 = (x?: number, y?: string) => 1 : (x?: number, y?: string) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x?: number, y?: string) => 1 : (x?: number, y?: string) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -422,11 +422,11 @@ var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch >a4 = (x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >a4 : (x?: number, y?: string, ...z: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^ >(x: number, ...args: string[]) => 1 : (x: number, ...args: string[]) => number -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >args : string[] diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures.types index c43715123a5a8..dbb556a024263 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures.types @@ -14,23 +14,23 @@ var t: T; var a: { new (x: number): void }; >a : new (x: number) => void -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ t = a; >t = a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ a = t; >a = t : T > : ^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -45,7 +45,7 @@ var s: S; var a2: { new (x: number): string }; >a2 : new (x: number) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -59,27 +59,27 @@ t = s; t = a2; >t = a2 : new (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >t : T > : ^ >a2 : new (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a = s; >a = s : S > : ^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >s : S > : ^ a = a2; >a = a2 : new (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >a2 : new (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ interface S2 { (x: string): void; @@ -92,7 +92,7 @@ var s2: S2; var a3: { (x: string): void }; >a3 : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -107,19 +107,19 @@ t = s2; t = a3; >t = a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : T > : ^ >a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ t = (x: string) => 1; >t = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -127,11 +127,11 @@ t = (x: string) => 1; t = function (x: string) { return ''; } >t = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -141,25 +141,25 @@ a = s2; >a = s2 : S2 > : ^^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >s2 : S2 > : ^^ a = a3; >a = a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >a3 : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ a = (x: string) => 1; >a = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -167,11 +167,11 @@ a = (x: string) => 1; a = function (x: string) { return ''; } >a = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.types index ecf5bc0e6caa8..6e735aa9c151e 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.types @@ -6,7 +6,7 @@ interface T { f: new (x: number) => void; >f : new (x: number) => void -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -18,30 +18,30 @@ var a: { f: new (x: number) => void }; >a : { f: new (x: number) => void; } > : ^^^^^ ^^^ >f : new (x: number) => void -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ t = a; >t = a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >t : T > : ^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ a = t; >a = t : T > : ^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >t : T > : ^ interface S { f: new (x: number) => string; >f : new (x: number) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -53,7 +53,7 @@ var a2: { f: new (x: number) => string }; >a2 : { f: new (x: number) => string; } > : ^^^^^ ^^^ >f : new (x: number) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -67,27 +67,27 @@ t = s; t = a2; >t = a2 : { f: new (x: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >t : T > : ^ >a2 : { f: new (x: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ a = s; >a = s : S > : ^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >s : S > : ^ a = a2; >a = a2 : { f: new (x: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a2 : { f: new (x: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ // errors t = () => 1; @@ -102,11 +102,11 @@ t = () => 1; t = function (x: number) { return ''; } >t = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -116,7 +116,7 @@ a = () => 1; >a = () => 1 : () => number > : ^^^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -124,11 +124,11 @@ a = () => 1; a = function (x: number) { return ''; } >a = function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >function (x: number) { return ''; } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -137,7 +137,7 @@ a = function (x: number) { return ''; } interface S2 { f(x: string): void; >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -147,9 +147,9 @@ var s2: S2; var a3: { f(x: string): void }; >a3 : { f(x: string): void; } -> : ^^^^^^^ ^^^ ^^^ +> : ^^^^ ^^ ^^^ ^^^ >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -164,19 +164,19 @@ t = s2; t = a3; >t = a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >t : T > : ^ >a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ t = (x: string) => 1; >t = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -184,11 +184,11 @@ t = (x: string) => 1; t = function (x: string) { return ''; } >t = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >t : T > : ^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -198,25 +198,25 @@ a = s2; >a = s2 : S2 > : ^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >s2 : S2 > : ^^ a = a3; >a = a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a3 : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^ a = (x: string) => 1; >a = (x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(x: string) => 1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 @@ -224,11 +224,11 @@ a = (x: string) => 1; a = function (x: string) { return ''; } >a = function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : { f: new (x: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >function (x: string) { return ''; } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types index bf12a5d067e2d..7342a01553955 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types @@ -35,25 +35,25 @@ class OtherDerived extends Base { bing: string; } var a: new (x: number) => number[]; >a : new (x: number) => number[] -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ var a2: new (x: number) => string[]; >a2 : new (x: number) => string[] -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ var a3: new (x: number) => void; >a3 : new (x: number) => void -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ var a4: new (x: string, y: number) => string; >a4 : new (x: string, y: number) => string -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -61,25 +61,25 @@ var a4: new (x: string, y: number) => string; var a5: new (x: (arg: string) => number) => string; >a5 : new (x: (arg: string) => number) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : (arg: string) => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ var a6: new (x: (arg: Base) => Derived) => Base; >a6 : new (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ var a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -87,13 +87,13 @@ var a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived; var a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -101,13 +101,13 @@ var a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) var a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -115,13 +115,13 @@ var a9: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) var a10: new (...x: Derived[]) => Derived; >a10 : new (...x: Derived[]) => Derived -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >x : Derived[] > : ^^^^^^^^^ var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -135,7 +135,7 @@ var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; var a12: new (x: Array, y: Array) => Array; >a12 : new (x: Array, y: Array) => Array -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -143,7 +143,7 @@ var a12: new (x: Array, y: Array) => Array; var a13: new (x: Array, y: Array) => Array; >a13 : new (x: Array, y: Array) => Array -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived[] @@ -151,7 +151,7 @@ var a13: new (x: Array, y: Array) => Array; var a14: new (x: { a: string; b: number }) => Object; >a14 : new (x: { a: string; b: number; }) => Object -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -161,7 +161,7 @@ var a14: new (x: { a: string; b: number }) => Object; var a15: { >a15 : { new (x: number): number[]; new (x: string): string[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: number): number[]; >x : number @@ -173,7 +173,7 @@ var a15: { } var a16: { >a16 : { new (x: T): number[]; new (x: U): number[]; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (x: T): number[]; >x : T @@ -185,28 +185,28 @@ var a16: { } var a17: { >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: new (a: number) => number): number[]; >x : new (a: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : number > : ^^^^^^ new (x: new (a: string) => string): string[]; >x : new (a: string) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : string > : ^^^^^^ }; var a18: { >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: { >x : { new (a: number): number; new (a: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (a: number): number; >a : number @@ -219,7 +219,7 @@ var a18: { }): any[]; new (x: { >x : { new (a: boolean): boolean; new (a: Date): Date; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (a: boolean): boolean; >a : boolean @@ -234,73 +234,73 @@ var a18: { var b: new (x: T) => T[]; >b : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a = b; // ok >a = b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a : new (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b = a; // ok >b = a : new (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a : new (x: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ var b2: new (x: T) => string[]; >b2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; // ok >b2 = a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ var b3: new (x: T) => T; >b3 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; // ok >a3 = b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a3 : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ b3 = a3; // ok >b3 = a3 : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a3 : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ var b4: new (x: T, y: U) => T; >b4 : new (x: T, y: U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -308,73 +308,73 @@ var b4: new (x: T, y: U) => T; a4 = b4; // ok >a4 = b4 : new (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >a4 : new (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ b4 = a4; // ok >b4 = a4 : new (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >a4 : new (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: new (x: (arg: T) => U) => T; >b5 : new (x: (arg: T) => U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a5 = b5; // ok >a5 = b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >a5 : new (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ b5 = a5; // ok >b5 = a5 : new (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >a5 : new (x: (arg: string) => number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ var b6: new (x: (arg: T) => U) => T; >b6 : new (x: (arg: T) => U) => T -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6 = b6; // ok >a6 = b6 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : new (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >b6 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b6 = a6; // ok >b6 = a6 : new (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >b6 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : new (x: (arg: Base) => Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ var b7: new (x: (arg: T) => U) => (r: T) => U; >b7 : new (x: (arg: T) => U) => (r: T) => U -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -382,29 +382,29 @@ var b7: new (x: (arg: T) => U) => (r: T) => U a7 = b7; // ok >a7 = b7 : new (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b7 : new (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ b7 = a7; // ok >b7 = a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b7 : new (x: (arg: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b8: new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: T) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ >r : T @@ -412,29 +412,29 @@ var b8: new (x: (arg: T) => U, y: (arg2: T) = a8 = b8; // ok >a8 = b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b8 = a8; // ok >b8 = a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : new (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b9: new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: string; bing: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: string; bing: number; } > : ^^^^^^^ ^^^^^^^^ ^^^ >foo : string @@ -446,45 +446,45 @@ var b9: new (x: (arg: T) => U, y: (arg2: { fo a9 = b9; // ok >a9 = b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b9 = a9; // ok >b9 = a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b9 : new (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a9 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b10: new (...x: T[]) => T; >b10 : new (...x: T[]) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a10 = b10; // ok >a10 = b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : new (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ >b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b10 = a10; // ok >b10 = a10 : new (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ >b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : new (...x: Derived[]) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ var b11: new (x: T, y: T) => T; >b11 : new (x: T, y: T) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -492,71 +492,71 @@ var b11: new (x: T, y: T) => T; a11 = b11; // ok >a11 = b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b11 = a11; // ok >b11 = a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ var b12: new >(x: Array, y: T) => Array; >b12 : new (x: Array, y: T) => Array -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T > : ^ a12 = b12; // ok ->a12 = b12 : new (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : new (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a12 = b12 : new (x: Array, y: T) => Derived[] +> : ^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : new (x: Array, y: T) => Derived[] +> : ^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ b12 = a12; // ok ->b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : new (x: Base[], y: T) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b12 = a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : new (x: Array, y: T) => Derived[] +> : ^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b13: new >(x: Array, y: T) => T; >b13 : new (x: Array, y: T) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T > : ^ a13 = b13; // ok ->a13 = b13 : new (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a13 : new (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b13 : new (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a13 = b13 : new (x: Array, y: T) => T +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a13 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b13 : new (x: Array, y: T) => T +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b13 = a13; // ok ->b13 = a13 : new (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b13 : new (x: Base[], y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a13 : new (x: Base[], y: Derived[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b13 = a13 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b13 : new (x: Array, y: T) => T +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a13 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b14: new (x: { a: T; b: T }) => T; >b14 : new (x: { a: T; b: T; }) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -566,109 +566,109 @@ var b14: new (x: { a: T; b: T }) => T; a14 = b14; // ok >a14 = b14 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a14 : new (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b14 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ b14 = a14; // ok >b14 = a14 : new (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b14 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a14 : new (x: { a: string; b: number; }) => Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ var b15: new (x: T) => T[]; >b15 : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a15 = b15; // ok >a15 = b15 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a15 : { new (x: number): number[]; new (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b15 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b15 = a15; // ok >b15 = a15 : { new (x: number): number[]; new (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b15 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a15 : { new (x: number): number[]; new (x: string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b16: new (x: T) => number[]; >b16 : new (x: T) => number[] -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ a16 = b16; // ok >a16 = b16 : new (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >a16 : { new (x: T): number[]; new (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b16 : new (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ b16 = a16; // ok >b16 = a16 : { new (x: T): number[]; new (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b16 : new (x: T) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >a16 : { new (x: T): number[]; new (x: U): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b17: new (x: new (a: T) => T) => T[]; // ok >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ a17 = b17; // ok >a17 = b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b17 = a17; // ok >b17 = a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a17 : { new (x: new (a: number) => number): number[]; new (x: new (a: string) => string): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var b18: new (x: new (a: T) => T) => T[]; >b18 : new (x: new (a: T) => T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ a18 = b18; // ok >a18 = b18 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b18 = a18; // ok >b18 = a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.types index 016828c0f6a03..0a78edf13e980 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.types @@ -44,15 +44,15 @@ module Errors { // target type with non-generic call signatures var a2: new (x: number) => string[]; >a2 : new (x: number) => string[] -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ var a7: new (x: (arg: Base) => Derived) => (r: Base) => Derived2; >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -60,13 +60,13 @@ module Errors { var a8: new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -74,13 +74,13 @@ module Errors { var a10: new (...x: Base[]) => Base; >a10 : new (...x: Base[]) => Base -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -94,7 +94,7 @@ module Errors { var a12: new (x: Array, y: Array) => Array; >a12 : new (x: Array, y: Array) => Array -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -102,7 +102,7 @@ module Errors { var a14: { >a14 : { new (x: number): number[]; new (x: string): string[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: number): number[]; >x : number @@ -115,7 +115,7 @@ module Errors { }; var a15: new (x: { a: string; b: number }) => number; >a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -125,11 +125,11 @@ module Errors { var a16: { >a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: { >x : { new (a: number): number; new (a?: number): number; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^ new (a: number): number; >a : number @@ -142,7 +142,7 @@ module Errors { }): number[]; new (x: { >x : { new (a: boolean): boolean; new (a?: boolean): boolean; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^ ^^^ ^^^ new (a: boolean): boolean; >a : boolean @@ -156,11 +156,11 @@ module Errors { }; var a17: { >a17 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T @@ -173,7 +173,7 @@ module Errors { }): any[]; new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T @@ -188,31 +188,31 @@ module Errors { var b2: new (x: T) => U[]; >b2 : new (x: T) => U[] -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : new (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^ ^^ ^^^^^^^^ >a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^ ^^ ^^^^^^^^ b2 = a2; // ok >b2 = a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^ ^^ ^^^^^^^^ >a2 : new (x: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^ var b7: new (x: (arg: T) => U) => (r: T) => V; >b7 : new (x: (arg: T) => U) => (r: T) => V -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -220,29 +220,29 @@ module Errors { a7 = b7; // ok >a7 = b7 : new (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >b7 : new (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ b7 = a7; // ok >b7 = a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >b7 : new (x: (arg: T) => U) => (r: T) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a7 : new (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ var b8: new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; >b8 : new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: number; } > : ^^^^^^^ ^^^ >foo : number @@ -252,46 +252,46 @@ module Errors { a8 = b8; // error, type mismatch >a8 = b8 : new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ b8 = a8; // error >b8 = a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >b8 : new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a8 : new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ var b10: new (...x: T[]) => T; >b10 : new (...x: T[]) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a10 = b10; // ok >a10 = b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : new (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^ >b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b10 = a10; // ok >b10 = a10 : new (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^ >b10 : new (...x: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a10 : new (...x: Base[]) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^ var b11: new (x: T, y: T) => T; >b11 : new (x: T, y: T) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -299,47 +299,47 @@ module Errors { a11 = b11; // ok >a11 = b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b11 = a11; // ok >b11 = a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a11 : new (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ var b12: new >(x: Array, y: Array) => T; >b12 : new (x: Array, y: Array) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Base[] > : ^^^^^^ a12 = b12; // ok ->a12 = b12 : new (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : new (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a12 = b12 : new (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : new (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ b12 = a12; // ok ->b12 = a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->b12 : new (x: Base[], y: Base[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a12 : new (x: Base[], y: Derived2[]) => Derived[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b12 = a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ +>b12 : new (x: Array, y: Array) => T +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>a12 : new (x: Array, y: Array) => Derived[] +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var b15: new (x: { a: T; b: T }) => T; >b15 : new (x: { a: T; b: T; }) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -349,23 +349,23 @@ module Errors { a15 = b15; // ok >a15 = b15 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b15 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ b15 = a15; // ok >b15 = a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b15 : new (x: { a: T; b: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ var b15a: new (x: { a: T; b: T }) => number; >b15a : new (x: { a: T; b: T; }) => number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -375,67 +375,67 @@ module Errors { a15 = b15a; // ok >a15 = b15a : new (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b15a : new (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ b15a = a15; // ok >b15a = a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b15a : new (x: { a: T; b: T; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a15 : new (x: { a: string; b: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ var b16: new (x: (a: T) => T) => T[]; >b16 : new (x: (a: T) => T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a16 = b16; // error >a16 = b16 : new (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >b16 : new (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b16 = a16; // error >b16 = a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >b16 : new (x: (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ var b17: new (x: (a: T) => T) => any[]; >b17 : new (x: (a: T) => T) => any[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a17 = b17; // error >a17 = b17 : new (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a17 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^ +>a17 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : new (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^ b17 = a17; // error ->b17 = a17 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b17 = a17 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : new (x: (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a17 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^ +>a17 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ } module WithGenericSignaturesInBaseType { @@ -445,59 +445,59 @@ module Errors { // target type has generic call signature var a2: new (x: T) => T[]; >a2 : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var b2: new (x: T) => string[]; >b2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; // ok >b2 = a2 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ // target type has generic call signature var a3: new (x: T) => string[]; >a3 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var b3: new (x: T) => T[]; >b3 : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; // ok >a3 = b3 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a3 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b3 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b3 = a3; // ok >b3 = a3 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b3 : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a3 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types index c6314af856ffd..8189c331a8080 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types @@ -35,25 +35,25 @@ class OtherDerived extends Base { bing: string; } var a: new (x: T) => T[]; >a : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var a2: new (x: T) => string[]; >a2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var a3: new (x: T) => void; >a3 : new (x: T) => void -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var a4: new (x: T, y: U) => string; >a4 : new (x: T, y: U) => string -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -61,23 +61,23 @@ var a4: new (x: T, y: U) => string; var a5: new (x: new (arg: T) => U) => T; >a5 : new (x: new (arg: T) => U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : new (arg: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >arg : T > : ^ var a6: new (x: new (arg: T) => Derived) => T; >a6 : new (x: new (arg: T) => Derived) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : new (arg: T) => Derived -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >arg : T > : ^ var a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -91,7 +91,7 @@ var a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; var a15: new (x: { a: T; b: T }) => T[]; >a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -101,7 +101,7 @@ var a15: new (x: { a: T; b: T }) => T[]; var a16: new (x: { a: T; b: T }) => T[]; >a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -111,28 +111,28 @@ var a16: new (x: { a: T; b: T }) => T[]; var a17: { >a17 : { new (x: new (a: T) => T): T[]; new (x: new (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (x: new (a: T) => T): T[]; >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ new (x: new (a: T) => T): T[]; >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ }; var a18: { >a18 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T @@ -145,7 +145,7 @@ var a18: { }): any[]; new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T @@ -160,73 +160,73 @@ var a18: { var b: new (x: T) => T[]; >b : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a = b; // ok >a = b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b = a; // ok >b = a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ var b2: new (x: T) => string[]; >b2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a2 = b2; // ok >a2 = b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ b2 = a2; // ok >b2 = a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ var b3: new (x: T) => T; >b3 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a3 = b3; // ok >a3 = b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ b3 = a3; // ok >b3 = a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ var b4: new (x: T, y: U) => string; >b4 : new (x: T, y: U) => string -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -234,71 +234,71 @@ var b4: new (x: T, y: U) => string; a4 = b4; // ok >a4 = b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ b4 = a4; // ok >b4 = a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: new (x: new (arg: T) => U) => T; >b5 : new (x: new (arg: T) => U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : new (arg: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >arg : T > : ^ a5 = b5; // ok >a5 = b5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >a5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >b5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ b5 = a5; // ok >b5 = a5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >b5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >a5 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ var b6: new (x: new (arg: T) => U) => T; >b6 : new (x: new (arg: T) => U) => T -> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : new (arg: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >arg : T > : ^ a6 = b6; // ok >a6 = b6 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : new (x: new (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b6 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ b6 = a6; // ok >b6 = a6 : new (x: new (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b6 : new (x: new (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a6 : new (x: new (arg: T) => Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ var b11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -312,23 +312,23 @@ var b11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; a11 = b11; // ok >a11 = b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ b11 = a11; // ok >b11 = a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ var b15: new (x: { a: U; b: V; }) => U[]; >b15 : new (x: { a: U; b: V; }) => U[] -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : { a: U; b: V; } > : ^^^^^ ^^^^^ ^^^ >a : U @@ -338,23 +338,23 @@ var b15: new (x: { a: U; b: V; }) => U[]; a15 = b15; // ok >a15 = b15 : new (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b15 : new (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ b15 = a15; // ok >b15 = a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b15 : new (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ var b16: new (x: { a: T; b: T }) => T[]; >b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -364,65 +364,65 @@ var b16: new (x: { a: T; b: T }) => T[]; a15 = b16; // ok >a15 = b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b15 = a16; // ok >b15 = a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b15 : new (x: { a: U; b: V; }) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ var b17: new (x: new (a: T) => T) => T[]; >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ a17 = b17; // ok >a17 = b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a17 : { new (x: new (a: T) => T): T[]; new (x: new (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b17 = a17; // ok >b17 = a17 : { new (x: new (a: T) => T): T[]; new (x: new (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b17 : new (x: new (a: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >a17 : { new (x: new (a: T) => T): T[]; new (x: new (a: T_1) => T_1): T_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ var b18: new (x: new (a: T) => T) => any[]; >b18 : new (x: new (a: T) => T) => any[] -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : new (a: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >a : T > : ^ a18 = b18; // ok >a18 = b18 : new (x: new (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a18 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^ +>a18 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : new (x: new (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^ b18 = a18; // ok ->b18 = a18 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b18 = a18 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b18 : new (x: new (a: T) => T) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a18 : { new (x: { new (a: T): T; new (a: T_1): T_1; }): any[]; new (x: { new (a: T_2): T_2; new (a: T_3): T_3; }): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^ +>a18 : { new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; } +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types index b6866f53541ed..39fa6083f9702 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types @@ -36,25 +36,25 @@ class OtherDerived extends Base { bing: string; } interface A { a: new (x: T) => T[]; >a : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a2: new (x: T) => string[]; >a2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a3: new (x: T) => void; >a3 : new (x: T) => void -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ a4: new (x: T, y: U) => string; >a4 : new (x: T, y: U) => string -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -62,23 +62,23 @@ interface A { a5: new (x: (arg: T) => U) => T; >a5 : new (x: (arg: T) => U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: new (x: (arg: T) => Derived) => T; >a6 : new (x: (arg: T) => Derived) => T -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a11: new (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -92,7 +92,7 @@ interface A { a15: new (x: { a: T; b: T }) => T[]; >a15 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -102,7 +102,7 @@ interface A { a16: new (x: { a: T; b: T }) => T[]; >a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -117,97 +117,97 @@ var x: A; var b: new (x: T) => T[]; >b : new (x: T) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ x.a = b; >x.a = b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x.a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x : A > : ^ >a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b = x.a; >b = x.a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >b : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x.a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x : A > : ^ >a : new (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ var b2: new (x: T) => string[]; >b2 : new (x: T) => string[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ x.a2 = b2; >x.a2 = b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x.a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x : A > : ^ >a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ b2 = x.a2; >b2 = x.a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >b2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x.a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x : A > : ^ >a2 : new (x: T) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ var b3: new (x: T) => T; >b3 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ x.a3 = b3; >x.a3 = b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >x.a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ b3 = x.a3; >b3 = x.a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >b3 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >x.a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a3 : new (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^ var b4: new (x: T, y: U) => string; >b4 : new (x: T, y: U) => string -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -215,63 +215,63 @@ var b4: new (x: T, y: U) => string; x.a4 = b4; >x.a4 = b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x.a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : A > : ^ >a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ b4 = x.a4; >b4 = x.a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x.a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : A > : ^ >a4 : new (x: T, y: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ var b5: new (x: (arg: T) => U) => T; >b5 : new (x: (arg: T) => U) => T -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ x.a5 = b5; >x.a5 = b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >x.a5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >x : A > : ^ >a5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ b5 = x.a5; >b5 = x.a5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >b5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >x.a5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >x : A > : ^ >a5 : new (x: (arg: T) => U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ var b11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -285,31 +285,31 @@ var b11: new (x: { foo: T }, y: { foo: U; bar: U }) => Base; x.a11 = b11; >x.a11 = b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x.a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ b11 = x.a11; >b11 = x.a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b11 : new (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x.a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >a11 : new (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ var b16: new (x: { a: T; b: T }) => T[]; >b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -319,25 +319,25 @@ var b16: new (x: { a: T; b: T }) => T[]; x.a16 = b16; >x.a16 = b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x.a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : A > : ^ >a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ b16 = x.a16; >b16 = x.a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >b16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >x.a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : A > : ^ >a16 : new (x: { a: T; b: T; }) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.types b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.types index c4abeb775a10a..d165a50f6c9dc 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.types @@ -10,19 +10,19 @@ interface Base { a2: new (x?: number) => number; >a2 : new (x?: number) => number -> : ^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^ ^^^^^ >x : number > : ^^^^^^ a3: new (x: number) => number; >a3 : new (x: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ a4: new (x: number, y?: number) => number; >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -30,7 +30,7 @@ interface Base { a5: new (x?: number, y?: number) => number; >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -38,7 +38,7 @@ interface Base { a6: new (x: number, y: number) => number; >a6 : new (x: number, y: number) => number -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -66,67 +66,67 @@ var a: new () => number; a = b.a2; // ok >a = b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >a : new () => number > : ^^^^^^^^^^^^^^^^ >b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ a = b.a3; // error >a = b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a : new () => number > : ^^^^^^^^^^^^^^^^ >b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a = b.a4; // error >a = b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a : new () => number > : ^^^^^^^^^^^^^^^^ >b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ a = b.a5; // ok >a = b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : new () => number > : ^^^^^^^^^^^^^^^^ >b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a = b.a6; // error >a = b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : new () => number > : ^^^^^^^^^^^^^^^^ >b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ var a2: new (x?: number) => number; >a2 : new (x?: number) => number -> : ^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^ ^^^^^ >x : number > : ^^^^^^ @@ -134,7 +134,7 @@ var a2: new (x?: number) => number; >a2 = b.a : new () => number > : ^^^^^^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a : new () => number > : ^^^^^^^^^^^^^^^^ >b : Base @@ -144,67 +144,67 @@ var a2: new (x?: number) => number; a2 = b.a2; // ok >a2 = b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ a2 = b.a3; // ok >a2 = b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a2 = b.a4; // ok >a2 = b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ a2 = b.a5; // ok >a2 = b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a2 = b.a6; // error >a2 = b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ var a3: new (x: number) => number; >a3 : new (x: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -212,7 +212,7 @@ var a3: new (x: number) => number; >a3 = b.a : new () => number > : ^^^^^^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a : new () => number > : ^^^^^^^^^^^^^^^^ >b : Base @@ -222,67 +222,67 @@ var a3: new (x: number) => number; a3 = b.a2; // ok >a3 = b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ a3 = b.a3; // ok >a3 = b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a3 = b.a4; // ok >a3 = b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ a3 = b.a5; // ok >a3 = b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a3 = b.a6; // error >a3 = b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ var a4: new (x: number, y?: number) => number; >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -292,7 +292,7 @@ var a4: new (x: number, y?: number) => number; >a4 = b.a : new () => number > : ^^^^^^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a : new () => number > : ^^^^^^^^^^^^^^^^ >b : Base @@ -302,67 +302,67 @@ var a4: new (x: number, y?: number) => number; a4 = b.a2; // ok >a4 = b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ a4 = b.a3; // ok >a4 = b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a4 = b.a4; // ok >a4 = b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ a4 = b.a5; // ok >a4 = b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a4 = b.a6; // ok >a4 = b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ var a5: new (x?: number, y?: number) => number; >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -372,7 +372,7 @@ var a5: new (x?: number, y?: number) => number; >a5 = b.a : new () => number > : ^^^^^^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a : new () => number > : ^^^^^^^^^^^^^^^^ >b : Base @@ -382,61 +382,61 @@ var a5: new (x?: number, y?: number) => number; a5 = b.a2; // ok >a5 = b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a2 : new (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^^ a5 = b.a3; // ok >a5 = b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a3 : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ a5 = b.a4; // ok >a5 = b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a4 : new (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ a5 = b.a5; // ok >a5 = b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ a5 = b.a6; // ok >a5 = b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a5 : new (x?: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b.a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >b : Base > : ^^^^ >a6 : new (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithDiscriminatedUnion.types b/tests/baselines/reference/assignmentCompatWithDiscriminatedUnion.types index 1467bf8555e2a..5c2e6e12f5905 100644 --- a/tests/baselines/reference/assignmentCompatWithDiscriminatedUnion.types +++ b/tests/baselines/reference/assignmentCompatWithDiscriminatedUnion.types @@ -430,13 +430,13 @@ namespace GH30170 { } function draw(val: Blue | Yellow) { } >draw : (val: Blue | Yellow) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >val : Blue | Yellow > : ^^^^^^^^^^^^^ function drawWithColor(currentColor: 'blue' | 'yellow' | undefined) { ->drawWithColor : (currentColor: 'blue' | 'yellow' | undefined) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +>drawWithColor : (currentColor: "blue" | "yellow" | undefined) => void +> : ^ ^^ ^^^^^^^^^ >currentColor : "blue" | "yellow" > : ^^^^^^^^^^^^^^^^^ @@ -444,7 +444,7 @@ namespace GH30170 { >draw({ color: currentColor }) : void > : ^^^^ >draw : (val: Blue | Yellow) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ color: currentColor } : { color: "blue" | "yellow"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >color : "blue" | "yellow" @@ -562,7 +562,7 @@ namespace GH18421 { function makeNewThing(thingType: ThingType): Thing { >makeNewThing : (thingType: ThingType) => Thing -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >thingType : ThingType > : ^^^^^^^^^ @@ -595,7 +595,7 @@ namespace GH15907 { function dispatchAction(action: Action): void { >dispatchAction : (action: Action) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >action : Action > : ^^^^^^ @@ -611,7 +611,7 @@ namespace GH15907 { >dispatchAction({ type : (active? 'disactivate' : 'activate') }) : void > : ^^^^ >dispatchAction : (action: Action) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ type : (active? 'disactivate' : 'activate') } : { type: "activate" | "disactivate"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "activate" | "disactivate" @@ -649,7 +649,7 @@ namespace GH20889 { function foo(obj1: AU) { >foo : (obj1: AU) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj1 : AU > : ^^ diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures.types b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures.types index 8811300981ff6..750fc350bb0dd 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures.types +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures.types @@ -5,7 +5,7 @@ var f: (x: S) => void >f : (x: S) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^ ^^^^^ >p : string > : ^^^^^^ >x : S @@ -13,7 +13,7 @@ var f: (x: S) => void var g: (x: T[]) => void >g : (x: T[]) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >p : string > : ^^^^^^ >x : T[] @@ -21,17 +21,17 @@ var g: (x: T[]) => void f = g; // ok >f = g : (x: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >f : (x: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >g : (x: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ g = f; // ok >g = f : (x: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >g : (x: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >f : (x: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures3.types b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures3.types index 1f9df1c52530d..9058f3e31b128 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures3.types @@ -6,7 +6,7 @@ interface I { (f: (x: T) => (y: S) => U): U >f : (x: T) => (y: S) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >y : S @@ -15,7 +15,7 @@ interface I { var g: (x: T) => (y: S) => I >g : (x: T) => (y: S) => I -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >y : S @@ -23,13 +23,13 @@ var g: (x: T) => (y: S) => I var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } >h : (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >y : S > : ^ >f : (x: T) => (y: S) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >y : S @@ -37,9 +37,9 @@ var h: (x: T) => (y: S) => { (f: (x: T) => (y: S) => U): U } g = h // ok >g = h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ >g : (x: T) => (y: S) => I -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >h : (x: T) => (y: S) => (f: (x: T) => (y: S) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types index 92ad8b4d1fb80..6e14dcb050c43 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types @@ -11,30 +11,30 @@ interface I2 { var x: >(z: T) => void >x : >(z: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^ >z : T > : ^ var y: >>(z: T) => void >y : >>(z: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >z : T > : ^ // These both do not make sense as we would eventually be comparing I2 to I2>, and they are self referencing anyway x = y >x = y : >>(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : >(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : >>(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ y = x >y = x : >(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : >>(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : >(z: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.types b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.types index b5cf19296495c..96c0851e8fc2e 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.types +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.types @@ -17,19 +17,19 @@ module ClassTypeParam { a2: (x?: T) => T; >a2 : (x?: T) => T -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; >a3 : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y?: T) => T; >a4 : (x: T, y?: T) => T -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -37,7 +37,7 @@ module ClassTypeParam { a5: (x?: T, y?: T) => T; >a5 : (x?: T, y?: T) => T -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -47,7 +47,7 @@ module ClassTypeParam { >init : () => void > : ^^^^^^^^^^ >() => { this.a = () => null; // ok, same T of required params this.a = (x?: T) => null; // ok, same T of required params this.a = (x: T) => null; // error, too many required params this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params this.a2 = (x: T) => null; // ok, same number of params this.a3 = () => null; // ok, fewer required params this.a3 = (x?: T) => null; // ok, fewer required params this.a3 = (x: T) => null; // ok, same T of required params this.a3 = (x: T, y: T) => null; // error, too many required params this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params this.a4 = (x: T) => null; // ok, same T of required params this.a4 = (x: T, y: T) => null; // ok, same number of params this.a5 = () => null; // ok, fewer required params this.a5 = (x?: T, y?: T) => null; // ok, fewer required params this.a5 = (x: T) => null; // ok, all present params match this.a5 = (x: T, y: T) => null; // ok, same number of params } : () => void -> : ^^^^^^^^^^ +> : this.a = () => null; // ok, same T of required params >this.a = () => null : () => any @@ -63,7 +63,7 @@ module ClassTypeParam { this.a = (x?: T) => null; // ok, same T of required params >this.a = (x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >this.a : () => T > : ^^^^^^^ >this : this @@ -71,13 +71,13 @@ module ClassTypeParam { >a : () => T > : ^^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : T > : ^ this.a = (x: T) => null; // error, too many required params >this.a = (x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >this.a : () => T > : ^^^^^^^ >this : this @@ -85,7 +85,7 @@ module ClassTypeParam { >a : () => T > : ^^^^^^^ >(x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : T > : ^ @@ -93,39 +93,39 @@ module ClassTypeParam { >this.a2 = () => null : () => any > : ^^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^ this.a2 = (x?: T) => null; // ok, same T of required params >this.a2 = (x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : T > : ^ this.a2 = (x: T) => null; // ok, same number of params >this.a2 = (x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : T > : ^ @@ -133,53 +133,53 @@ module ClassTypeParam { >this.a3 = () => null : () => any > : ^^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^ this.a3 = (x?: T) => null; // ok, fewer required params >this.a3 = (x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : T > : ^ this.a3 = (x: T) => null; // ok, same T of required params >this.a3 = (x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : T > : ^ this.a3 = (x: T, y: T) => null; // error, too many required params >this.a3 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -189,25 +189,25 @@ module ClassTypeParam { >this.a4 = () => null : () => any > : ^^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^ this.a4 = (x?: T, y?: T) => null; // ok, fewer required params >this.a4 = (x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >(x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -215,29 +215,29 @@ module ClassTypeParam { this.a4 = (x: T) => null; // ok, same T of required params >this.a4 = (x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : T > : ^ this.a4 = (x: T, y: T) => null; // ok, same number of params >this.a4 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -248,25 +248,25 @@ module ClassTypeParam { >this.a5 = () => null : () => any > : ^^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^ this.a5 = (x?: T, y?: T) => null; // ok, fewer required params >this.a5 = (x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >(x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -274,29 +274,29 @@ module ClassTypeParam { this.a5 = (x: T) => null; // ok, all present params match >this.a5 = (x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : T > : ^ this.a5 = (x: T, y: T) => null; // ok, same number of params >this.a5 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -319,19 +319,19 @@ module GenericSignaturesInvalid { a2: (x?: T) => T; >a2 : (x?: T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; >a3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y?: T) => T; >a4 : (x: T, y?: T) => T -> : ^ ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -339,7 +339,7 @@ module GenericSignaturesInvalid { a5: (x?: T, y?: T) => T; >a5 : (x?: T, y?: T) => T -> : ^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -356,19 +356,19 @@ module GenericSignaturesInvalid { a2: (x?: T) => T; >a2 : (x?: T) => T -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; >a3 : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y?: T) => T; >a4 : (x: T, y?: T) => T -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -376,7 +376,7 @@ module GenericSignaturesInvalid { a5: (x?: T, y?: T) => T; >a5 : (x?: T, y?: T) => T -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -415,7 +415,7 @@ module GenericSignaturesInvalid { b.a = t.a2; >b.a = t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >b.a : () => T_1 > : ^^^^^^^^^^^^^^ >b : Base2 @@ -423,15 +423,15 @@ module GenericSignaturesInvalid { >a : () => T_1 > : ^^^^^^^^^^^^^^ >t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ b.a = t.a3; >b.a = t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b.a : () => T_1 > : ^^^^^^^^^^^^^^ >b : Base2 @@ -439,15 +439,15 @@ module GenericSignaturesInvalid { >a : () => T_1 > : ^^^^^^^^^^^^^^ >t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ b.a = t.a4; >b.a = t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >b.a : () => T_1 > : ^^^^^^^^^^^^^^ >b : Base2 @@ -455,15 +455,15 @@ module GenericSignaturesInvalid { >a : () => T_1 > : ^^^^^^^^^^^^^^ >t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ b.a = t.a5; >b.a = t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >b.a : () => T_1 > : ^^^^^^^^^^^^^^ >b : Base2 @@ -471,21 +471,21 @@ module GenericSignaturesInvalid { >a : () => T_1 > : ^^^^^^^^^^^^^^ >t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ b.a2 = t.a; >b.a2 = t.a : () => T > : ^^^^^^^ >b.a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >t.a : () => T > : ^^^^^^^ >t : Target @@ -495,77 +495,77 @@ module GenericSignaturesInvalid { b.a2 = t.a2; >b.a2 = t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >b.a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ b.a2 = t.a3; >b.a2 = t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b.a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ b.a2 = t.a4; >b.a2 = t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >b.a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ b.a2 = t.a5; >b.a2 = t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >b.a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a2 : (x?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ b.a3 = t.a; >b.a3 = t.a : () => T > : ^^^^^^^ >b.a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >t.a : () => T > : ^^^^^^^ >t : Target @@ -575,77 +575,77 @@ module GenericSignaturesInvalid { b.a3 = t.a2; >b.a3 = t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >b.a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ b.a3 = t.a3; >b.a3 = t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b.a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ b.a3 = t.a4; >b.a3 = t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >b.a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ b.a3 = t.a5; >b.a3 = t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >b.a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a3 : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ b.a4 = t.a; >b.a4 = t.a : () => T > : ^^^^^^^ >b.a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >t.a : () => T > : ^^^^^^^ >t : Target @@ -655,77 +655,77 @@ module GenericSignaturesInvalid { b.a4 = t.a2; >b.a4 = t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >b.a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ b.a4 = t.a3; >b.a4 = t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b.a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ b.a4 = t.a4; >b.a4 = t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >b.a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ b.a4 = t.a5; >b.a4 = t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >b.a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a4 : (x: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ b.a5 = t.a; >b.a5 = t.a : () => T > : ^^^^^^^ >b.a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >t.a : () => T > : ^^^^^^^ >t : Target @@ -735,67 +735,67 @@ module GenericSignaturesInvalid { b.a5 = t.a2; >b.a5 = t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >b.a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >t.a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ b.a5 = t.a3; >b.a5 = t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b.a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >t.a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ b.a5 = t.a4; >b.a5 = t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >b.a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >t.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^ b.a5 = t.a5; >b.a5 = t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >b.a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >b : Base2 > : ^^^^^ >a5 : (x?: T_1, y?: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >t.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ >t : Target > : ^^^^^^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ } } @@ -813,19 +813,19 @@ module GenericSignaturesValid { a2: (x?: T) => T; >a2 : (x?: T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; >a3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y?: T) => T; >a4 : (x: T, y?: T) => T -> : ^ ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -833,7 +833,7 @@ module GenericSignaturesValid { a5: (x?: T, y?: T) => T; >a5 : (x?: T, y?: T) => T -> : ^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^ >x : T > : ^ >y : T @@ -843,7 +843,7 @@ module GenericSignaturesValid { >init : () => void > : ^^^^^^^^^^ >() => { this.a = () => null; // ok, same T of required params this.a = (x?: T) => null; // ok, same T of required params this.a = (x: T) => null; // error, too many required params this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params this.a2 = (x: T) => null; // ok, same number of params this.a3 = () => null; // ok, fewer required params this.a3 = (x?: T) => null; // ok, fewer required params this.a3 = (x: T) => null; // ok, same T of required params this.a3 = (x: T, y: T) => null; // error, too many required params this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params this.a4 = (x: T) => null; // ok, same T of required params this.a4 = (x: T, y: T) => null; // ok, same number of params this.a5 = () => null; // ok, fewer required params this.a5 = (x?: T, y?: T) => null; // ok, fewer required params this.a5 = (x: T) => null; // ok, all present params match this.a5 = (x: T, y: T) => null; // ok, same number of params } : () => void -> : ^^^^^^^^^^ +> : this.a = () => null; // ok, same T of required params >this.a = () => null : () => any @@ -859,7 +859,7 @@ module GenericSignaturesValid { this.a = (x?: T) => null; // ok, same T of required params >this.a = (x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >this.a : () => T > : ^^^^^^^^^^ >this : this @@ -867,13 +867,13 @@ module GenericSignaturesValid { >a : () => T > : ^^^^^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ this.a = (x: T) => null; // error, too many required params >this.a = (x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >this.a : () => T > : ^^^^^^^^^^ >this : this @@ -881,7 +881,7 @@ module GenericSignaturesValid { >a : () => T > : ^^^^^^^^^^ >(x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ @@ -889,39 +889,39 @@ module GenericSignaturesValid { >this.a2 = () => null : () => any > : ^^^^^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^^^^ this.a2 = (x?: T) => null; // ok, same T of required params >this.a2 = (x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ this.a2 = (x: T) => null; // ok, same number of params >this.a2 = (x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >this.a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a2 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ @@ -929,53 +929,53 @@ module GenericSignaturesValid { >this.a3 = () => null : () => any > : ^^^^^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^^^^ this.a3 = (x?: T) => null; // ok, fewer required params >this.a3 = (x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x?: T) => null : (x?: T) => any -> : ^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ this.a3 = (x: T) => null; // ok, same T of required params >this.a3 = (x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ this.a3 = (x: T, y: T) => null; // error, too many required params >this.a3 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >this.a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >this : this > : ^^^^ >a3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -985,25 +985,25 @@ module GenericSignaturesValid { >this.a4 = () => null : () => any > : ^^^^^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^^^^ this.a4 = (x?: T, y?: T) => null; // ok, fewer required params >this.a4 = (x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^ ^^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >(x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^ ^^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -1011,29 +1011,29 @@ module GenericSignaturesValid { this.a4 = (x: T) => null; // ok, same T of required params >this.a4 = (x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ this.a4 = (x: T, y: T) => null; // ok, same number of params >this.a4 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >this.a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a4 : (x: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -1044,25 +1044,25 @@ module GenericSignaturesValid { >this.a5 = () => null : () => any > : ^^^^^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >() => null : () => any > : ^^^^^^^^^^^^ this.a5 = (x?: T, y?: T) => null; // ok, fewer required params >this.a5 = (x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^ ^^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >(x?: T, y?: T) => null : (x?: T, y?: T) => any -> : ^ ^^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -1070,29 +1070,29 @@ module GenericSignaturesValid { this.a5 = (x: T) => null; // ok, all present params match >this.a5 = (x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >(x: T) => null : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ this.a5 = (x: T, y: T) => null; // ok, same number of params >this.a5 = (x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >this.a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >this : this > : ^^^^ >a5 : (x?: T, y?: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^^^^^ >(x: T, y: T) => null : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality.types b/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality.types index a17bb27b33d0c..90bde732d6e0b 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality.types @@ -182,7 +182,7 @@ module TargetHasOptional { >b : { opt?: Base; } > : ^^^^^^^^^^^^^^^ >a : { opt?: Base; } -> : ^^^^^^^^^^^^^^^ +> : ^ b = c; >b = c : C diff --git a/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality2.types b/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality2.types index 39c43fc31f273..318cccda177c3 100644 --- a/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality2.types +++ b/tests/baselines/reference/assignmentCompatWithObjectMembersOptionality2.types @@ -184,7 +184,7 @@ module TargetHasOptional { >b : { opt?: Base; } > : ^^^^^^^^^^^^^^^ >a : { opt?: Base; } -> : ^^^^^^^^^^^^^^^ +> : ^ b = c; >b = c : C diff --git a/tests/baselines/reference/assignmentCompatWithOverloads.types b/tests/baselines/reference/assignmentCompatWithOverloads.types index d76a73fb2fdb3..3c278773146ea 100644 --- a/tests/baselines/reference/assignmentCompatWithOverloads.types +++ b/tests/baselines/reference/assignmentCompatWithOverloads.types @@ -3,37 +3,37 @@ === assignmentCompatWithOverloads.ts === function f1(x: string): number { return null; } >f1 : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function f2(x: string): string { return null; } >f2 : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function f3(x: number): number { return null; } >f3 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ function f4(x: string): string; >f4 : { (x: string): string; (x: number): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ function f4(x: number): number; >f4 : { (x: string): string; (x: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ function f4(x: any): any { return undefined; } >f4 : { (x: string): string; (x: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : any > : ^^^ >undefined : undefined @@ -41,41 +41,41 @@ function f4(x: any): any { return undefined; } var g: (s1: string) => number; >g : (s1: string) => number -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s1 : string > : ^^^^^^ g = f1; // OK >g = f1 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >g : (s1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f1 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ g = f2; // Error >g = f2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >g : (s1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ g = f3; // Error >g = f3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >g : (s1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ g = f4; // Error >g = f4 : { (x: string): string; (x: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >g : (s1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f4 : { (x: string): string; (x: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ class C { >C : C @@ -92,7 +92,7 @@ constructor(x: any) {} var d: new(x: number) => void; >d : new (x: number) => void -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -100,7 +100,7 @@ d = C; // Error >d = C : typeof C > : ^^^^^^^^ >d : new (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >C : typeof C > : ^^^^^^^^ diff --git a/tests/baselines/reference/assignmentCompatability1.types b/tests/baselines/reference/assignmentCompatability1.types index f94f26c52c056..5c96e48c1b449 100644 --- a/tests/baselines/reference/assignmentCompatability1.types +++ b/tests/baselines/reference/assignmentCompatability1.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : {} > : ^^ >aa : {} -> : ^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability11.types b/tests/baselines/reference/assignmentCompatability11.types index d42af43b41c75..d0a9564a9cea8 100644 --- a/tests/baselines/reference/assignmentCompatability11.types +++ b/tests/baselines/reference/assignmentCompatability11.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { two: number; } > : ^^^^^^^^^^^^^^^^ >obj : { two: number; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability12.types b/tests/baselines/reference/assignmentCompatability12.types index 63247587df0a4..7e2d0b531c25e 100644 --- a/tests/baselines/reference/assignmentCompatability12.types +++ b/tests/baselines/reference/assignmentCompatability12.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { one: string; } > : ^^^^^^^^^^^^^^^^ >obj : { one: string; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability13.types b/tests/baselines/reference/assignmentCompatability13.types index 80565d89114be..4761dd0fd239d 100644 --- a/tests/baselines/reference/assignmentCompatability13.types +++ b/tests/baselines/reference/assignmentCompatability13.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { two: string; } > : ^^^^^^^^^^^^^^^^ >obj : { two: string; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability14.types b/tests/baselines/reference/assignmentCompatability14.types index 8c23f7d587be3..48e51ed159f9f 100644 --- a/tests/baselines/reference/assignmentCompatability14.types +++ b/tests/baselines/reference/assignmentCompatability14.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { one: boolean; } > : ^^^^^^^^^^^^^^^^^ >obj : { one: boolean; } -> : ^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability15.types b/tests/baselines/reference/assignmentCompatability15.types index 0c5fbff2361b3..e48b7e1dbc41f 100644 --- a/tests/baselines/reference/assignmentCompatability15.types +++ b/tests/baselines/reference/assignmentCompatability15.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { two: boolean; } > : ^^^^^^^^^^^^^^^^^ >obj : { two: boolean; } -> : ^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability16.types b/tests/baselines/reference/assignmentCompatability16.types index 57c13f369a287..4a8421b8096fb 100644 --- a/tests/baselines/reference/assignmentCompatability16.types +++ b/tests/baselines/reference/assignmentCompatability16.types @@ -47,7 +47,7 @@ module __test2__ { >__val__obj : { one: any[]; } > : ^^^^^^^ ^^^ >obj : { one: any[]; } -> : ^^^^^^^ ^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability17.types b/tests/baselines/reference/assignmentCompatability17.types index 2a4887eb49cf4..c972cbd8deae3 100644 --- a/tests/baselines/reference/assignmentCompatability17.types +++ b/tests/baselines/reference/assignmentCompatability17.types @@ -47,7 +47,7 @@ module __test2__ { >__val__obj : { two: any[]; } > : ^^^^^^^ ^^^ >obj : { two: any[]; } -> : ^^^^^^^ ^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability18.types b/tests/baselines/reference/assignmentCompatability18.types index 13c5ecc99a1b4..ace22dbca932f 100644 --- a/tests/baselines/reference/assignmentCompatability18.types +++ b/tests/baselines/reference/assignmentCompatability18.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { one: number[]; } > : ^^^^^^^^^^^^^^^^^^ >obj : { one: number[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability19.types b/tests/baselines/reference/assignmentCompatability19.types index 99952b4b5015f..791def94c9a06 100644 --- a/tests/baselines/reference/assignmentCompatability19.types +++ b/tests/baselines/reference/assignmentCompatability19.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { two: number[]; } > : ^^^^^^^^^^^^^^^^^^ >obj : { two: number[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability2.types b/tests/baselines/reference/assignmentCompatability2.types index f35cbfccb0d0e..3ee1d99e6f042 100644 --- a/tests/baselines/reference/assignmentCompatability2.types +++ b/tests/baselines/reference/assignmentCompatability2.types @@ -37,7 +37,7 @@ module __test2__ { >__val__aa : {} > : ^^ >aa : {} -> : ^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability20.types b/tests/baselines/reference/assignmentCompatability20.types index 1d9be3931ef3a..94030b003fde6 100644 --- a/tests/baselines/reference/assignmentCompatability20.types +++ b/tests/baselines/reference/assignmentCompatability20.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { one: string[]; } > : ^^^^^^^^^^^^^^^^^^ >obj : { one: string[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability21.types b/tests/baselines/reference/assignmentCompatability21.types index bf75ed9509617..8b894fe7deed4 100644 --- a/tests/baselines/reference/assignmentCompatability21.types +++ b/tests/baselines/reference/assignmentCompatability21.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { two: string[]; } > : ^^^^^^^^^^^^^^^^^^ >obj : { two: string[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability22.types b/tests/baselines/reference/assignmentCompatability22.types index 97858c30b7cea..0b64791f343b4 100644 --- a/tests/baselines/reference/assignmentCompatability22.types +++ b/tests/baselines/reference/assignmentCompatability22.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { one: boolean[]; } > : ^^^^^^^^^^^^^^^^^^^ >obj : { one: boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability23.types b/tests/baselines/reference/assignmentCompatability23.types index 0bb44a107fc55..08d5beaa40449 100644 --- a/tests/baselines/reference/assignmentCompatability23.types +++ b/tests/baselines/reference/assignmentCompatability23.types @@ -45,7 +45,7 @@ module __test2__ { >__val__obj : { two: boolean[]; } > : ^^^^^^^^^^^^^^^^^^^ >obj : { two: boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability24.types b/tests/baselines/reference/assignmentCompatability24.types index 10a8cba6cd345..5479470206599 100644 --- a/tests/baselines/reference/assignmentCompatability24.types +++ b/tests/baselines/reference/assignmentCompatability24.types @@ -31,11 +31,11 @@ module __test2__ { export var obj = function f(a: Tstring) { return a; };; >obj : (a: Tstring) => Tstring -> : ^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >function f(a: Tstring) { return a; } : (a: Tstring) => Tstring -> : ^ ^^^^^ ^^^^^^^^^^^^ +> : >f : (a: Tstring) => Tstring -> : ^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >a : Tstring > : ^^^^^^^ >a : Tstring @@ -43,19 +43,19 @@ module __test2__ { export var __val__obj = obj; >__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test2__.__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test2__ : typeof __test2__ > : ^^^^^^^^^^^^^^^^ >__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test1__ : typeof __test1__ diff --git a/tests/baselines/reference/assignmentCompatability25.types b/tests/baselines/reference/assignmentCompatability25.types index 5a86148d8f237..7a94e0ab88068 100644 --- a/tests/baselines/reference/assignmentCompatability25.types +++ b/tests/baselines/reference/assignmentCompatability25.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { two: number; } > : ^^^^^^^^^^^^^^^^ >aa : { two: number; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability26.types b/tests/baselines/reference/assignmentCompatability26.types index 025859bdd630f..5d26e71dd96d0 100644 --- a/tests/baselines/reference/assignmentCompatability26.types +++ b/tests/baselines/reference/assignmentCompatability26.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: string; } > : ^^^^^^^^^^^^^^^^ >aa : { one: string; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability27.types b/tests/baselines/reference/assignmentCompatability27.types index 49f1e0957ad44..164d93892f381 100644 --- a/tests/baselines/reference/assignmentCompatability27.types +++ b/tests/baselines/reference/assignmentCompatability27.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { two: string; } > : ^^^^^^^^^^^^^^^^ >aa : { two: string; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability28.types b/tests/baselines/reference/assignmentCompatability28.types index ce64bb1b1a195..17579db9e5dd2 100644 --- a/tests/baselines/reference/assignmentCompatability28.types +++ b/tests/baselines/reference/assignmentCompatability28.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: boolean; } > : ^^^^^^^^^^^^^^^^^ >aa : { one: boolean; } -> : ^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability29.types b/tests/baselines/reference/assignmentCompatability29.types index c3e770c9863fa..bd622c065199c 100644 --- a/tests/baselines/reference/assignmentCompatability29.types +++ b/tests/baselines/reference/assignmentCompatability29.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: any[]; } > : ^^^^^^^^^^^^^^^ >aa : { one: any[]; } -> : ^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability3.types b/tests/baselines/reference/assignmentCompatability3.types index 33a797448411a..c962540027755 100644 --- a/tests/baselines/reference/assignmentCompatability3.types +++ b/tests/baselines/reference/assignmentCompatability3.types @@ -43,7 +43,7 @@ module __test2__ { >__val__obj : { one: number; } > : ^^^^^^^^^^^^^^^^ >obj : { one: number; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability30.types b/tests/baselines/reference/assignmentCompatability30.types index 6165d0553e1b5..14497b625882a 100644 --- a/tests/baselines/reference/assignmentCompatability30.types +++ b/tests/baselines/reference/assignmentCompatability30.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: number[]; } > : ^^^^^^^^^^^^^^^^^^ >aa : { one: number[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability31.types b/tests/baselines/reference/assignmentCompatability31.types index 6e5c4a0b630e6..907049d1ce652 100644 --- a/tests/baselines/reference/assignmentCompatability31.types +++ b/tests/baselines/reference/assignmentCompatability31.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: string[]; } > : ^^^^^^^^^^^^^^^^^^ >aa : { one: string[]; } -> : ^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability32.types b/tests/baselines/reference/assignmentCompatability32.types index 5294890143606..6927d6ae05531 100644 --- a/tests/baselines/reference/assignmentCompatability32.types +++ b/tests/baselines/reference/assignmentCompatability32.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: boolean[]; } > : ^^^^^^^^^^^^^^^^^^^ >aa : { one: boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability33.types b/tests/baselines/reference/assignmentCompatability33.types index f95c4e948502f..30fd5d41fa69d 100644 --- a/tests/baselines/reference/assignmentCompatability33.types +++ b/tests/baselines/reference/assignmentCompatability33.types @@ -31,25 +31,25 @@ module __test2__ { export var obj: { (a: Tstring): Tstring; }; >obj : (a: Tstring) => Tstring -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : Tstring > : ^^^^^^^ export var __val__obj = obj; >__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test2__.__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test2__ : typeof __test2__ > : ^^^^^^^^^^^^^^^^ >__val__obj : (a: Tstring) => Tstring -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test1__ : typeof __test1__ diff --git a/tests/baselines/reference/assignmentCompatability34.types b/tests/baselines/reference/assignmentCompatability34.types index 77dba09d67ffa..0b1a0086bbfb4 100644 --- a/tests/baselines/reference/assignmentCompatability34.types +++ b/tests/baselines/reference/assignmentCompatability34.types @@ -31,25 +31,25 @@ module __test2__ { export var obj: { (a:Tnumber):Tnumber;}; >obj : (a: Tnumber) => Tnumber -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : Tnumber > : ^^^^^^^ export var __val__obj = obj; >__val__obj : (a: Tnumber) => Tnumber -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >obj : (a: Tnumber) => Tnumber -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__obj = __test1__.__val__obj4 >__test2__.__val__obj = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test2__.__val__obj : (a: Tnumber) => Tnumber -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test2__ : typeof __test2__ > : ^^^^^^^^^^^^^^^^ >__val__obj : (a: Tnumber) => Tnumber -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >__test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test1__ : typeof __test1__ diff --git a/tests/baselines/reference/assignmentCompatability35.types b/tests/baselines/reference/assignmentCompatability35.types index ab25e79b1fcb4..194d5e119bc95 100644 --- a/tests/baselines/reference/assignmentCompatability35.types +++ b/tests/baselines/reference/assignmentCompatability35.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { [index: number]: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aa : { [index: number]: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability36.types b/tests/baselines/reference/assignmentCompatability36.types index 0e27341b17cbd..ebd973ed2b738 100644 --- a/tests/baselines/reference/assignmentCompatability36.types +++ b/tests/baselines/reference/assignmentCompatability36.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { [index: string]: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >aa : { [index: string]: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability37.types b/tests/baselines/reference/assignmentCompatability37.types index 13953fc05039c..d65575ef43677 100644 --- a/tests/baselines/reference/assignmentCompatability37.types +++ b/tests/baselines/reference/assignmentCompatability37.types @@ -31,25 +31,25 @@ module __test2__ { export var aa:{ new (param: Tnumber); };; >aa : new (param: Tnumber) => any -> : ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >param : Tnumber > : ^^^^^^^ export var __val__aa = aa; >__val__aa : new (param: Tnumber) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >aa : new (param: Tnumber) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test2__.__val__aa : new (param: Tnumber) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >__test2__ : typeof __test2__ > : ^^^^^^^^^^^^^^^^ >__val__aa : new (param: Tnumber) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >__test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test1__ : typeof __test1__ diff --git a/tests/baselines/reference/assignmentCompatability38.types b/tests/baselines/reference/assignmentCompatability38.types index ae48bbb4a43fc..6ecf0294a73e1 100644 --- a/tests/baselines/reference/assignmentCompatability38.types +++ b/tests/baselines/reference/assignmentCompatability38.types @@ -31,25 +31,25 @@ module __test2__ { export var aa:{ new (param: Tstring); };; >aa : new (param: Tstring) => any -> : ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >param : Tstring > : ^^^^^^^ export var __val__aa = aa; >__val__aa : new (param: Tstring) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >aa : new (param: Tstring) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test2__.__val__aa : new (param: Tstring) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >__test2__ : typeof __test2__ > : ^^^^^^^^^^^^^^^^ >__val__aa : new (param: Tstring) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^ >__test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__test1__ : typeof __test1__ diff --git a/tests/baselines/reference/assignmentCompatability4.types b/tests/baselines/reference/assignmentCompatability4.types index 01468ef8e4f4a..235857615cf6e 100644 --- a/tests/baselines/reference/assignmentCompatability4.types +++ b/tests/baselines/reference/assignmentCompatability4.types @@ -39,7 +39,7 @@ module __test2__ { >__val__aa : { one: number; } > : ^^^^^^^^^^^^^^^^ >aa : { one: number; } -> : ^^^^^^^^^^^^^^^^ +> : } __test2__.__val__aa = __test1__.__val__obj4 >__test2__.__val__aa = __test1__.__val__obj4 : __test1__.interfaceWithPublicAndOptional diff --git a/tests/baselines/reference/assignmentCompatability46.types b/tests/baselines/reference/assignmentCompatability46.types index 4ba453b27c55d..43fb76bafaa95 100644 --- a/tests/baselines/reference/assignmentCompatability46.types +++ b/tests/baselines/reference/assignmentCompatability46.types @@ -3,7 +3,7 @@ === assignmentCompatability46.ts === declare function fn(x: never): void; >fn : (x: never) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -11,7 +11,7 @@ fn([1, 2, 3]) >fn([1, 2, 3]) : void > : ^^^^ >fn : (x: never) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -25,7 +25,7 @@ fn({ a: 1, b: 2 }) >fn({ a: 1, b: 2 }) : void > : ^^^^ >fn : (x: never) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ a: 1, b: 2 } : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/assignmentCompatability_checking-apply-member-off-of-function-interface.types b/tests/baselines/reference/assignmentCompatability_checking-apply-member-off-of-function-interface.types index 2a9cc281d3321..373280795d952 100644 --- a/tests/baselines/reference/assignmentCompatability_checking-apply-member-off-of-function-interface.types +++ b/tests/baselines/reference/assignmentCompatability_checking-apply-member-off-of-function-interface.types @@ -6,7 +6,7 @@ interface Applicable { apply(blah: any); // also works for 'apply' >apply : (blah: any) => any -> : ^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >blah : any > : ^^^ } @@ -65,7 +65,7 @@ x = f; function fn(c: Applicable) { } >fn : (c: Applicable) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : Applicable > : ^^^^^^^^^^ @@ -74,7 +74,7 @@ fn(''); >fn('') : void > : ^^^^ >fn : (c: Applicable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'' : "" > : ^^ @@ -82,7 +82,7 @@ fn(['']); >fn(['']) : void > : ^^^^ >fn : (c: Applicable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[''] : string[] > : ^^^^^^^^ >'' : "" @@ -92,7 +92,7 @@ fn(4); >fn(4) : void > : ^^^^ >fn : (c: Applicable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >4 : 4 > : ^ @@ -100,7 +100,7 @@ fn({}); >fn({}) : void > : ^^^^ >fn : (c: Applicable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{} : {} > : ^^ @@ -110,9 +110,9 @@ fn(a => { }); >fn(a => { }) : void > : ^^^^ >fn : (c: Applicable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ diff --git a/tests/baselines/reference/assignmentCompatability_checking-call-member-off-of-function-interface.types b/tests/baselines/reference/assignmentCompatability_checking-call-member-off-of-function-interface.types index 80d7ba4e4d984..967a4e7e3c086 100644 --- a/tests/baselines/reference/assignmentCompatability_checking-call-member-off-of-function-interface.types +++ b/tests/baselines/reference/assignmentCompatability_checking-call-member-off-of-function-interface.types @@ -6,7 +6,7 @@ interface Callable { call(blah: any); // also works for 'apply' >call : (blah: any) => any -> : ^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >blah : any > : ^^^ } @@ -65,7 +65,7 @@ x = f; function fn(c: Callable) { } >fn : (c: Callable) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : Callable > : ^^^^^^^^ @@ -74,7 +74,7 @@ fn(''); >fn('') : void > : ^^^^ >fn : (c: Callable) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'' : "" > : ^^ @@ -82,7 +82,7 @@ fn(['']); >fn(['']) : void > : ^^^^ >fn : (c: Callable) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[''] : string[] > : ^^^^^^^^ >'' : "" @@ -92,7 +92,7 @@ fn(4); >fn(4) : void > : ^^^^ >fn : (c: Callable) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >4 : 4 > : ^ @@ -100,7 +100,7 @@ fn({}); >fn({}) : void > : ^^^^ >fn : (c: Callable) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{} : {} > : ^^ @@ -110,9 +110,9 @@ fn(a => { }); >fn(a => { }) : void > : ^^^^ >fn : (c: Callable) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ diff --git a/tests/baselines/reference/assignmentGenericLookupTypeNarrowing.types b/tests/baselines/reference/assignmentGenericLookupTypeNarrowing.types index db84dcf9b3250..ff1c05974454d 100644 --- a/tests/baselines/reference/assignmentGenericLookupTypeNarrowing.types +++ b/tests/baselines/reference/assignmentGenericLookupTypeNarrowing.types @@ -21,13 +21,13 @@ let mappedObject: {[K in "foo"]: null | {x: string}} = {foo: {x: "hello"}}; declare function foo(x: T): null | T; >foo : (x: T) => null | T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ function bar(key: K) { >bar : (key: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >key : K > : ^ @@ -35,9 +35,9 @@ function bar(key: K) { >element : { foo: { x: string; }; }[K] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(mappedObject[key]) : { foo: { x: string; }; }[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >mappedObject[key] : { foo: { x: string; }; }[K] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mappedObject : { foo: { x: string; }; } diff --git a/tests/baselines/reference/assignmentLHSIsReference.types b/tests/baselines/reference/assignmentLHSIsReference.types index 5432239d5d0d1..0e06aa689db3f 100644 --- a/tests/baselines/reference/assignmentLHSIsReference.types +++ b/tests/baselines/reference/assignmentLHSIsReference.types @@ -17,7 +17,7 @@ x1 = value; function fn1(x2: number) { >fn1 : (x2: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x2 : number > : ^^^^^^ @@ -66,7 +66,7 @@ x3['a'] = value; function fn2(x4: number) { >fn2 : (x4: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x4 : number > : ^^^^^^ diff --git a/tests/baselines/reference/assignmentNonObjectTypeConstraints.types b/tests/baselines/reference/assignmentNonObjectTypeConstraints.types index fc50df85482ee..e9f80e7a29855 100644 --- a/tests/baselines/reference/assignmentNonObjectTypeConstraints.types +++ b/tests/baselines/reference/assignmentNonObjectTypeConstraints.types @@ -13,7 +13,7 @@ const enum E { A, B, C } function foo(x: T) { >foo : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -28,7 +28,7 @@ foo(5); >foo(5) : void > : ^^^^ >foo : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >5 : 5 > : ^ @@ -36,7 +36,7 @@ foo(E.A); >foo(E.A) : void > : ^^^^ >foo : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >E.A : E.A > : ^^^ >E : typeof E @@ -56,7 +56,7 @@ class B { b } function bar(x: T) { >bar : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -71,7 +71,7 @@ bar(new A); >bar(new A) : void > : ^^^^ >bar : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >new A : A > : ^ >A : typeof A @@ -81,7 +81,7 @@ bar(new B); >bar(new B) : void > : ^^^^ >bar : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >new B : B > : ^ >B : typeof B diff --git a/tests/baselines/reference/assignmentStricterConstraints.types b/tests/baselines/reference/assignmentStricterConstraints.types index fed146ab0f12e..ae649fc395b4c 100644 --- a/tests/baselines/reference/assignmentStricterConstraints.types +++ b/tests/baselines/reference/assignmentStricterConstraints.types @@ -3,9 +3,9 @@ === assignmentStricterConstraints.ts === var f = function (x: T, y: S): void { >f : (x: T, y: S) => void -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >function (x: T, y: S): void { x = y} : (x: T, y: S) => void -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : >x : T > : ^ >y : S @@ -22,9 +22,9 @@ var f = function (x: T, y: S): void { var g = function (x: T, y: S): void { } >g : (x: T, y: S) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >function (x: T, y: S): void { } : (x: T, y: S) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : >x : T > : ^ >y : S @@ -32,17 +32,17 @@ var g = function (x: T, y: S): void { } g = f >g = f : (x: T, y: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >g : (x: T, y: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f : (x: T, y: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ g(1, "") >g(1, "") : void > : ^^^^ >g : (x: T, y: S) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >"" : "" diff --git a/tests/baselines/reference/assignmentToAnyArrayRestParameters.types b/tests/baselines/reference/assignmentToAnyArrayRestParameters.types index 339a84e76a93d..b01efd8328ce7 100644 --- a/tests/baselines/reference/assignmentToAnyArrayRestParameters.types +++ b/tests/baselines/reference/assignmentToAnyArrayRestParameters.types @@ -5,11 +5,11 @@ function foo( >foo : (fa: (s: string, ...args: string[]) => string, fb: (s: string, ...args: T) => string) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ fa: (s: string, ...args: string[]) => string, >fa : (s: string, ...args: string[]) => string -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >args : string[] @@ -17,7 +17,7 @@ function foo( fb: (s: string, ...args: T) => string >fb : (s: string, ...args: T) => string -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >args : T @@ -26,35 +26,35 @@ function foo( ) { const f1: (...args: any) => string = fa; >f1 : (...args: any) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any > : ^^^ >fa : (s: string, ...args: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ const f2: (...args: any[]) => string = fa; >f2 : (...args: any[]) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ >fa : (s: string, ...args: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ const f3: (...args: any) => string = fb; >f3 : (...args: any) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any > : ^^^ >fb : (s: string, ...args: T) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ const f4: (...args: any[]) => string = fb; >f4 : (...args: any[]) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ >fb : (s: string, ...args: T) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ } function bar() { diff --git a/tests/baselines/reference/assignmentToObjectAndFunction.types b/tests/baselines/reference/assignmentToObjectAndFunction.types index 9be9653c013ce..9cf7639218e1f 100644 --- a/tests/baselines/reference/assignmentToObjectAndFunction.types +++ b/tests/baselines/reference/assignmentToObjectAndFunction.types @@ -15,11 +15,11 @@ var goodObj: Object = { >goodObj : Object > : ^^^^^^ >{ toString(x?) { return ""; }} : { toString(x?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ toString(x?) { >toString : (x?: any) => string -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -66,7 +66,7 @@ module bar { export function apply(thisArg: string, argArray?: string) { } >apply : (thisArg: string, argArray?: string) => void -> : ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >thisArg : string > : ^^^^^^ >argArray : string diff --git a/tests/baselines/reference/assignmentToParenthesizedIdentifiers.types b/tests/baselines/reference/assignmentToParenthesizedIdentifiers.types index 74133ceca9e46..97c8d08c9e744 100644 --- a/tests/baselines/reference/assignmentToParenthesizedIdentifiers.types +++ b/tests/baselines/reference/assignmentToParenthesizedIdentifiers.types @@ -313,7 +313,7 @@ fn = () => 3; // Bug 823548: Should be error (fn is not a reference) function fn2(x: number, y: { t: number }) { >fn2 : (x: number, y: { t: number; }) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : { t: number; } diff --git a/tests/baselines/reference/assignmentToReferenceTypes.types b/tests/baselines/reference/assignmentToReferenceTypes.types index bc46448e23921..6844cf0f2449a 100644 --- a/tests/baselines/reference/assignmentToReferenceTypes.types +++ b/tests/baselines/reference/assignmentToReferenceTypes.types @@ -55,7 +55,7 @@ x = null; function g(x) { >g : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/assignmentTypeNarrowing.types b/tests/baselines/reference/assignmentTypeNarrowing.types index 15af54cb80d0f..01b6cdc98934e 100644 --- a/tests/baselines/reference/assignmentTypeNarrowing.types +++ b/tests/baselines/reference/assignmentTypeNarrowing.types @@ -182,11 +182,11 @@ arr.push({ x: "ok" }); >arr.push({ x: "ok" }) : number > : ^^^^^^ >arr.push : (...items: { x?: "ok"; }[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : { x?: "ok"; }[] > : ^^^^^^^^^^^^^^^ >push : (...items: { x?: "ok"; }[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "ok" } : { x: "ok"; } > : ^^^^^^^^^^^^ >x : "ok" diff --git a/tests/baselines/reference/assignments.types b/tests/baselines/reference/assignments.types index 77d1d280b19c0..5ea6404029205 100644 --- a/tests/baselines/reference/assignments.types +++ b/tests/baselines/reference/assignments.types @@ -71,7 +71,7 @@ v = null; // OK function fn2(p) { >fn2 : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >p : any > : ^^^ diff --git a/tests/baselines/reference/asyncArrowFunction10_es2017.types b/tests/baselines/reference/asyncArrowFunction10_es2017.types index ccdc76c633531..78b0f3e267879 100644 --- a/tests/baselines/reference/asyncArrowFunction10_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction10_es2017.types @@ -5,7 +5,7 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { // Legal to use 'await' in a type context. var v: await;} : () => Promise -> : ^^^^^^ +> : // Legal to use 'await' in a type context. var v: await; diff --git a/tests/baselines/reference/asyncArrowFunction10_es5.types b/tests/baselines/reference/asyncArrowFunction10_es5.types index 0b338d5baa63f..d627a59d62412 100644 --- a/tests/baselines/reference/asyncArrowFunction10_es5.types +++ b/tests/baselines/reference/asyncArrowFunction10_es5.types @@ -5,7 +5,7 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { // Legal to use 'await' in a type context. var v: await;} : () => Promise -> : ^^^^^^ +> : // Legal to use 'await' in a type context. var v: await; diff --git a/tests/baselines/reference/asyncArrowFunction10_es6.types b/tests/baselines/reference/asyncArrowFunction10_es6.types index 38e77450dc647..ac3538b9c50cc 100644 --- a/tests/baselines/reference/asyncArrowFunction10_es6.types +++ b/tests/baselines/reference/asyncArrowFunction10_es6.types @@ -5,7 +5,7 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { // Legal to use 'await' in a type context. var v: await;} : () => Promise -> : ^^^^^^ +> : // Legal to use 'await' in a type context. var v: await; diff --git a/tests/baselines/reference/asyncArrowFunction11_es5.types b/tests/baselines/reference/asyncArrowFunction11_es5.types index 62f33a7abeec5..a4418b183758e 100644 --- a/tests/baselines/reference/asyncArrowFunction11_es5.types +++ b/tests/baselines/reference/asyncArrowFunction11_es5.types @@ -8,9 +8,9 @@ class A { b = async (...args: any[]) => { >b : (...args: any[]) => Promise -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >async (...args: any[]) => { await Promise.resolve(); const obj = { ["a"]: () => this }; // computed property name after `await` triggers case } : (...args: any[]) => Promise -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ >args : any[] > : ^^^^^ @@ -20,23 +20,23 @@ class A { >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ const obj = { ["a"]: () => this }; // computed property name after `await` triggers case >obj : { a: () => this; } > : ^^^^^^^^^^^^^^^^^^ >{ ["a"]: () => this } : { a: () => this; } -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ >["a"] : () => this > : ^^^^^^^^^^ >"a" : "a" > : ^^^ >() => this : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ diff --git a/tests/baselines/reference/asyncArrowFunction1_es2017.types b/tests/baselines/reference/asyncArrowFunction1_es2017.types index 9f9ede22d0d8f..97e45f9cda977 100644 --- a/tests/baselines/reference/asyncArrowFunction1_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction1_es2017.types @@ -5,6 +5,6 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => {} : () => Promise -> : ^^^^^^ +> : }; diff --git a/tests/baselines/reference/asyncArrowFunction1_es5.types b/tests/baselines/reference/asyncArrowFunction1_es5.types index b283114a82ec8..505052d8e441a 100644 --- a/tests/baselines/reference/asyncArrowFunction1_es5.types +++ b/tests/baselines/reference/asyncArrowFunction1_es5.types @@ -5,6 +5,6 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => {} : () => Promise -> : ^^^^^^ +> : }; diff --git a/tests/baselines/reference/asyncArrowFunction1_es6.types b/tests/baselines/reference/asyncArrowFunction1_es6.types index 890c634e7a662..74cc87ec075ef 100644 --- a/tests/baselines/reference/asyncArrowFunction1_es6.types +++ b/tests/baselines/reference/asyncArrowFunction1_es6.types @@ -5,6 +5,6 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => {} : () => Promise -> : ^^^^^^ +> : }; diff --git a/tests/baselines/reference/asyncArrowFunction2_es2017.types b/tests/baselines/reference/asyncArrowFunction2_es2017.types index 234769bd90e73..efa0a00296870 100644 --- a/tests/baselines/reference/asyncArrowFunction2_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction2_es2017.types @@ -3,8 +3,8 @@ === asyncArrowFunction2_es2017.ts === var f = (await) => { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(await) => {} : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >await : any } diff --git a/tests/baselines/reference/asyncArrowFunction2_es5.types b/tests/baselines/reference/asyncArrowFunction2_es5.types index a90254dbc69b6..4483abf65a7ed 100644 --- a/tests/baselines/reference/asyncArrowFunction2_es5.types +++ b/tests/baselines/reference/asyncArrowFunction2_es5.types @@ -3,8 +3,8 @@ === asyncArrowFunction2_es5.ts === var f = (await) => { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(await) => {} : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >await : any } diff --git a/tests/baselines/reference/asyncArrowFunction2_es6.types b/tests/baselines/reference/asyncArrowFunction2_es6.types index de7f0343bd49e..e90138dd28d53 100644 --- a/tests/baselines/reference/asyncArrowFunction2_es6.types +++ b/tests/baselines/reference/asyncArrowFunction2_es6.types @@ -3,8 +3,8 @@ === asyncArrowFunction2_es6.ts === var f = (await) => { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(await) => {} : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >await : any } diff --git a/tests/baselines/reference/asyncArrowFunction3_es2017.types b/tests/baselines/reference/asyncArrowFunction3_es2017.types index 314aebc38f4f4..540f7e081b8aa 100644 --- a/tests/baselines/reference/asyncArrowFunction3_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction3_es2017.types @@ -3,7 +3,7 @@ === asyncArrowFunction3_es2017.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction3_es5.types b/tests/baselines/reference/asyncArrowFunction3_es5.types index df441bb47c2f2..3b3467c4b3514 100644 --- a/tests/baselines/reference/asyncArrowFunction3_es5.types +++ b/tests/baselines/reference/asyncArrowFunction3_es5.types @@ -3,7 +3,7 @@ === asyncArrowFunction3_es5.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction3_es6.types b/tests/baselines/reference/asyncArrowFunction3_es6.types index ca659b62fe699..c6b8956de33e7 100644 --- a/tests/baselines/reference/asyncArrowFunction3_es6.types +++ b/tests/baselines/reference/asyncArrowFunction3_es6.types @@ -3,7 +3,7 @@ === asyncArrowFunction3_es6.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction4_es2017.types b/tests/baselines/reference/asyncArrowFunction4_es2017.types index df2f069363d31..b9c7c5fb06d46 100644 --- a/tests/baselines/reference/asyncArrowFunction4_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction4_es2017.types @@ -5,5 +5,5 @@ var await = () => { >await : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction4_es5.types b/tests/baselines/reference/asyncArrowFunction4_es5.types index 37b2702488df3..8c81ab4aa5777 100644 --- a/tests/baselines/reference/asyncArrowFunction4_es5.types +++ b/tests/baselines/reference/asyncArrowFunction4_es5.types @@ -5,5 +5,5 @@ var await = () => { >await : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction4_es6.types b/tests/baselines/reference/asyncArrowFunction4_es6.types index 9109767ccea22..1fcc5927ad2c2 100644 --- a/tests/baselines/reference/asyncArrowFunction4_es6.types +++ b/tests/baselines/reference/asyncArrowFunction4_es6.types @@ -5,5 +5,5 @@ var await = () => { >await : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction5_es2017.types b/tests/baselines/reference/asyncArrowFunction5_es2017.types index f3aced2369b91..9577e7279269a 100644 --- a/tests/baselines/reference/asyncArrowFunction5_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction5_es2017.types @@ -3,9 +3,9 @@ === asyncArrowFunction5_es2017.ts === var foo = async (await): Promise => { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >async (await): Promise => {} : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncArrowFunction5_es5.types b/tests/baselines/reference/asyncArrowFunction5_es5.types index 3c12b0a633c8d..82404961c5495 100644 --- a/tests/baselines/reference/asyncArrowFunction5_es5.types +++ b/tests/baselines/reference/asyncArrowFunction5_es5.types @@ -3,9 +3,9 @@ === asyncArrowFunction5_es5.ts === var foo = async (await): Promise => { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >async (await): Promise => {} : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncArrowFunction5_es6.types b/tests/baselines/reference/asyncArrowFunction5_es6.types index f5fb238c385ef..3e826e5c21cdb 100644 --- a/tests/baselines/reference/asyncArrowFunction5_es6.types +++ b/tests/baselines/reference/asyncArrowFunction5_es6.types @@ -3,9 +3,9 @@ === asyncArrowFunction5_es6.ts === var foo = async (await): Promise => { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >async (await): Promise => {} : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncArrowFunction6_es2017.types b/tests/baselines/reference/asyncArrowFunction6_es2017.types index 3752bf1dcdbf5..dd4233d117932 100644 --- a/tests/baselines/reference/asyncArrowFunction6_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction6_es2017.types @@ -3,9 +3,9 @@ === asyncArrowFunction6_es2017.ts === var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => {} : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction6_es5.types b/tests/baselines/reference/asyncArrowFunction6_es5.types index 0c357ba63fbd9..740d981554efc 100644 --- a/tests/baselines/reference/asyncArrowFunction6_es5.types +++ b/tests/baselines/reference/asyncArrowFunction6_es5.types @@ -3,9 +3,9 @@ === asyncArrowFunction6_es5.ts === var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => {} : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction6_es6.types b/tests/baselines/reference/asyncArrowFunction6_es6.types index b1cbf4b9909e5..424d70e1faceb 100644 --- a/tests/baselines/reference/asyncArrowFunction6_es6.types +++ b/tests/baselines/reference/asyncArrowFunction6_es6.types @@ -3,9 +3,9 @@ === asyncArrowFunction6_es6.ts === var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => {} : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction7_es2017.types b/tests/baselines/reference/asyncArrowFunction7_es2017.types index 70e7a19f55cba..06841b0035800 100644 --- a/tests/baselines/reference/asyncArrowFunction7_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction7_es2017.types @@ -5,14 +5,14 @@ var bar = async (): Promise => { >bar : () => Promise > : ^^^^^^ >async (): Promise => { // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { }} : () => Promise -> : ^^^^^^ +> : // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => { } : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction7_es5.types b/tests/baselines/reference/asyncArrowFunction7_es5.types index d3dc23fdc64a7..8b5b88fbb89dc 100644 --- a/tests/baselines/reference/asyncArrowFunction7_es5.types +++ b/tests/baselines/reference/asyncArrowFunction7_es5.types @@ -5,14 +5,14 @@ var bar = async (): Promise => { >bar : () => Promise > : ^^^^^^ >async (): Promise => { // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { }} : () => Promise -> : ^^^^^^ +> : // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => { } : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction7_es6.types b/tests/baselines/reference/asyncArrowFunction7_es6.types index 01ed690e583c6..283285b416da9 100644 --- a/tests/baselines/reference/asyncArrowFunction7_es6.types +++ b/tests/baselines/reference/asyncArrowFunction7_es6.types @@ -5,14 +5,14 @@ var bar = async (): Promise => { >bar : () => Promise > : ^^^^^^ >async (): Promise => { // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { }} : () => Promise -> : ^^^^^^ +> : // 'await' here is an identifier, and not an await expression. var foo = async (a = await): Promise => { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >async (a = await): Promise => { } : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es2017.types b/tests/baselines/reference/asyncArrowFunction8_es2017.types index 0359dd7724308..4b2b729476c85 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction8_es2017.types @@ -5,13 +5,13 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { var v = { [await]: foo }} : () => Promise -> : ^^^^^^ +> : var v = { [await]: foo } >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -19,5 +19,5 @@ var foo = async (): Promise => { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction8_es5.types b/tests/baselines/reference/asyncArrowFunction8_es5.types index 17bf623e46996..a43003f9356c4 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es5.types +++ b/tests/baselines/reference/asyncArrowFunction8_es5.types @@ -5,13 +5,13 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { var v = { [await]: foo }} : () => Promise -> : ^^^^^^ +> : var v = { [await]: foo } >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -19,5 +19,5 @@ var foo = async (): Promise => { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction8_es6.types b/tests/baselines/reference/asyncArrowFunction8_es6.types index 83bd1245a656e..a689661b535f7 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es6.types +++ b/tests/baselines/reference/asyncArrowFunction8_es6.types @@ -5,13 +5,13 @@ var foo = async (): Promise => { >foo : () => Promise > : ^^^^^^ >async (): Promise => { var v = { [await]: foo }} : () => Promise -> : ^^^^^^ +> : var v = { [await]: foo } >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -19,5 +19,5 @@ var foo = async (): Promise => { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncArrowFunction9_es2017.types b/tests/baselines/reference/asyncArrowFunction9_es2017.types index 25a3b6e077cc3..62c3df8d679c6 100644 --- a/tests/baselines/reference/asyncArrowFunction9_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction9_es2017.types @@ -9,11 +9,11 @@ var foo = async (a = await => await): Promise => { >async : any > : ^^^ >a = await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ >await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction9_es5.types b/tests/baselines/reference/asyncArrowFunction9_es5.types index 0f42219a8b7d8..c3d05138bee75 100644 --- a/tests/baselines/reference/asyncArrowFunction9_es5.types +++ b/tests/baselines/reference/asyncArrowFunction9_es5.types @@ -9,11 +9,11 @@ var foo = async (a = await => await): Promise => { >async : any > : ^^^ >a = await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ >await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunction9_es6.types b/tests/baselines/reference/asyncArrowFunction9_es6.types index fe899dd031048..3921c61c156c0 100644 --- a/tests/baselines/reference/asyncArrowFunction9_es6.types +++ b/tests/baselines/reference/asyncArrowFunction9_es6.types @@ -9,11 +9,11 @@ var foo = async (a = await => await): Promise => { >async : any > : ^^^ >a = await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ >await => await : (await: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es2017.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es2017.types index e57e9a6a64277..c63c97437f6f1 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es2017.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es2017.types @@ -17,15 +17,15 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^ >async () => await other.apply(this, arguments) : () => Promise -> : ^^^^^^^^^^^^^^^^^^ +> : >await other.apply(this, arguments) : any >other.apply(this, arguments) : any >other.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >other : () => void > : ^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : this > : ^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types index 8da70623f9e89..05ac0e3c2203f 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types @@ -17,17 +17,17 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^ >async () => await other.apply(this, arguments) : () => Promise -> : ^^^^^^^^^^^^^^^^^^ +> : >await other.apply(this, arguments) : any > : ^^^ >other.apply(this, arguments) : any > : ^^^ >other.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >other : () => void > : ^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : this > : ^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types index 875703220651f..397be4bec1ad3 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es6.types @@ -17,15 +17,15 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^ >async () => await other.apply(this, arguments) : () => Promise -> : ^^^^^^^^^^^^^^^^^^ +> : >await other.apply(this, arguments) : any >other.apply(this, arguments) : any >other.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >other : () => void > : ^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : this > : ^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es2017.types b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es2017.types index ed9a40f9073bb..f1dbc2d0d6a18 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es2017.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es2017.types @@ -13,7 +13,7 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => await this : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : >await this : this > : ^^^^ >this : this diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es5.types b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es5.types index 4ef7b23b55bb9..b2b606376dcdb 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es5.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es5.types @@ -13,7 +13,7 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => await this : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : >await this : this > : ^^^^ >this : this diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types index 67c07167ca257..63efb04ba0b32 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesThis_es6.types @@ -13,7 +13,7 @@ class C { >fn : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => await this : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : >await this : this > : ^^^^ >this : this diff --git a/tests/baselines/reference/asyncArrowFunction_allowJs.types b/tests/baselines/reference/asyncArrowFunction_allowJs.types index bac5950d418f2..ecf9f7d9cca0e 100644 --- a/tests/baselines/reference/asyncArrowFunction_allowJs.types +++ b/tests/baselines/reference/asyncArrowFunction_allowJs.types @@ -37,9 +37,9 @@ const c = async () => { /** @type {function(function(): string): void} */ const f = (p) => {} >f : (arg0: () => string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^ >(p) => {} : (p: () => string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >p : () => string > : ^^^^^^^^^^^^ @@ -48,7 +48,7 @@ f(async () => { >f(async () => { return 0}) : void > : ^^^^ >f : (arg0: () => string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^ >async () => { return 0} : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncArrowInClassES5.types b/tests/baselines/reference/asyncArrowInClassES5.types index b499ef9d5937f..21ccc7c9e704a 100644 --- a/tests/baselines/reference/asyncArrowInClassES5.types +++ b/tests/baselines/reference/asyncArrowInClassES5.types @@ -10,9 +10,9 @@ class Test { static member = async (x: string) => { }; >member : (x: string) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >async (x: string) => { } : (x: string) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ } diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types index 5c6b02e6e38ea..1d81bb7b88a5c 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types @@ -29,43 +29,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ let f11 = async () => mp; >f11 : () => Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -81,7 +81,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es5.types b/tests/baselines/reference/asyncAwaitIsolatedModules_es5.types index 82694aa672ecf..2fd620cd93fd8 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es5.types +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es5.types @@ -29,43 +29,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ let f11 = async () => mp; >f11 : () => Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -81,7 +81,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.types b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.types index 1e9e5af30123a..9fa49e64ec7ed 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es6.types +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es6.types @@ -29,43 +29,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ let f11 = async () => mp; >f11 : () => Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -81,7 +81,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^^^^^^^^^^^^^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncAwaitNestedClasses_es5.types b/tests/baselines/reference/asyncAwaitNestedClasses_es5.types index 6f938805c914e..032ac7223e143 100644 --- a/tests/baselines/reference/asyncAwaitNestedClasses_es5.types +++ b/tests/baselines/reference/asyncAwaitNestedClasses_es5.types @@ -24,13 +24,13 @@ class A { >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >(resolve) => { resolve(null); } : (resolve: (value: void | PromiseLike) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: void | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve(null) : void > : ^^^^ >resolve : (value: void | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } static C = class C { >C : typeof C diff --git a/tests/baselines/reference/asyncAwaitWithCapturedBlockScopeVar.types b/tests/baselines/reference/asyncAwaitWithCapturedBlockScopeVar.types index b04a5b2db2337..c4b6a9696027b 100644 --- a/tests/baselines/reference/asyncAwaitWithCapturedBlockScopeVar.types +++ b/tests/baselines/reference/asyncAwaitWithCapturedBlockScopeVar.types @@ -37,11 +37,11 @@ async function fn1() { >ar.push(() => i) : number > : ^^^^^^ >ar.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >ar : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >() => i : () => number > : ^^^^^^^^^^^^ >i : number @@ -85,11 +85,11 @@ async function fn2() { >ar.push(() => i) : number > : ^^^^^^ >ar.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >ar : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >() => i : () => number > : ^^^^^^^^^^^^ >i : number @@ -135,11 +135,11 @@ async function fn3() { >ar.push(() => i) : number > : ^^^^^^ >ar.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >ar : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >() => i : () => number > : ^^^^^^^^^^^^ >i : number @@ -185,11 +185,11 @@ async function fn4(): Promise { >ar.push(() => i) : number > : ^^^^^^ >ar.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >ar : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >() => i : () => number > : ^^^^^^^^^^^^ >i : number diff --git a/tests/baselines/reference/asyncAwait_es2017.types b/tests/baselines/reference/asyncAwait_es2017.types index 6f53c6679172c..4ff6b2230fe34 100644 --- a/tests/baselines/reference/asyncAwait_es2017.types +++ b/tests/baselines/reference/asyncAwait_es2017.types @@ -35,43 +35,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ let f11 = async () => mp; >f11 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -95,7 +95,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncAwait_es5.types b/tests/baselines/reference/asyncAwait_es5.types index e85d7da56fb48..da15f6176b374 100644 --- a/tests/baselines/reference/asyncAwait_es5.types +++ b/tests/baselines/reference/asyncAwait_es5.types @@ -35,43 +35,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ let f11 = async () => mp; >f11 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -95,7 +95,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncAwait_es6.types b/tests/baselines/reference/asyncAwait_es6.types index 5e35ef87d2ad9..461ed45407d06 100644 --- a/tests/baselines/reference/asyncAwait_es6.types +++ b/tests/baselines/reference/asyncAwait_es6.types @@ -35,43 +35,43 @@ let f4 = async function() { } >f4 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async function() { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f5 = async function(): Promise { } >f5 : () => Promise > : ^^^^^^ >async function(): Promise { } : () => Promise -> : ^^^^^^ +> : let f6 = async function(): MyPromise { } >f6 : () => MyPromise > : ^^^^^^ >async function(): MyPromise { } : () => MyPromise -> : ^^^^^^ +> : let f7 = async () => { }; >f7 : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : let f8 = async (): Promise => { }; >f8 : () => Promise > : ^^^^^^ >async (): Promise => { } : () => Promise -> : ^^^^^^ +> : let f9 = async (): MyPromise => { }; >f9 : () => MyPromise > : ^^^^^^ >async (): MyPromise => { } : () => MyPromise -> : ^^^^^^ +> : let f10 = async () => p; >f10 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => p : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ let f11 = async () => mp; >f11 : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => mp : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ let f12 = async (): Promise => mp; >f12 : () => Promise > : ^^^^^^ >async (): Promise => mp : () => Promise -> : ^^^^^^ +> : >mp : MyPromise > : ^^^^^^^^^^^^^^^^^ @@ -95,7 +95,7 @@ let f13 = async (): MyPromise => p; >f13 : () => MyPromise > : ^^^^^^ >async (): MyPromise => p : () => MyPromise -> : ^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types b/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types index bbe277dcb270f..3e87e176efd94 100644 --- a/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types +++ b/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types @@ -3,9 +3,9 @@ === asyncFunctionContextuallyTypedReturns.ts === declare function f(cb: (v: boolean) => [0] | PromiseLike<[0]>): void; >f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (v: boolean) => [0] | PromiseLike<[0]> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : boolean > : ^^^^^^^ @@ -13,9 +13,9 @@ f(v => v ? [0] : Promise.reject()); >f(v => v ? [0] : Promise.reject()) : void > : ^^^^ >f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v => v ? [0] : Promise.reject() : (v: boolean) => [0] | Promise<[0]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? [0] : Promise.reject() : [0] | Promise<[0]> @@ -29,19 +29,19 @@ f(v => v ? [0] : Promise.reject()); >Promise.reject() : Promise<[0]> > : ^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ f(async v => v ? [0] : Promise.reject()); >f(async v => v ? [0] : Promise.reject()) : void > : ^^^^ >f : (cb: (v: boolean) => [0] | PromiseLike<[0]>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >async v => v ? [0] : Promise.reject() : (v: boolean) => Promise<[0]> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? [0] : Promise.reject() : [0] | Promise<[0]> @@ -55,17 +55,17 @@ f(async v => v ? [0] : Promise.reject()); >Promise.reject() : Promise<[0]> > : ^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ declare function g(cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">): void; >g : (cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : boolean > : ^^^^^^^ @@ -73,9 +73,9 @@ g(v => v ? "contextuallyTypable" : Promise.reject()); >g(v => v ? "contextuallyTypable" : Promise.reject()) : void > : ^^^^ >g : (cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v => v ? "contextuallyTypable" : Promise.reject() : (v: boolean) => "contextuallyTypable" | Promise<"contextuallyTypable"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? "contextuallyTypable" : Promise.reject() : "contextuallyTypable" | Promise<"contextuallyTypable"> @@ -87,19 +87,19 @@ g(v => v ? "contextuallyTypable" : Promise.reject()); >Promise.reject() : Promise<"contextuallyTypable"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ g(async v => v ? "contextuallyTypable" : Promise.reject()); >g(async v => v ? "contextuallyTypable" : Promise.reject()) : void > : ^^^^ >g : (cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >async v => v ? "contextuallyTypable" : Promise.reject() : (v: boolean) => Promise<"contextuallyTypable"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? "contextuallyTypable" : Promise.reject() : "contextuallyTypable" | Promise<"contextuallyTypable"> @@ -111,11 +111,11 @@ g(async v => v ? "contextuallyTypable" : Promise.reject()); >Promise.reject() : Promise<"contextuallyTypable"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ type MyCallback = (thing: string) => void; >MyCallback : MyCallback @@ -125,9 +125,9 @@ type MyCallback = (thing: string) => void; declare function h(cb: (v: boolean) => MyCallback | PromiseLike): void; >h : (cb: (v: boolean) => MyCallback | PromiseLike) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (v: boolean) => MyCallback | PromiseLike -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : boolean > : ^^^^^^^ @@ -135,58 +135,58 @@ h(v => v ? (abc) => { } : Promise.reject()); >h(v => v ? (abc) => { } : Promise.reject()) : void > : ^^^^ >h : (cb: (v: boolean) => MyCallback | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v => v ? (abc) => { } : Promise.reject() : (v: boolean) => ((abc: string) => void) | Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? (abc) => { } : Promise.reject() : ((abc: string) => void) | Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >(abc) => { } : (abc: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >abc : string > : ^^^^^^ >Promise.reject() : Promise > : ^^^^^^^^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ h(async v => v ? (def) => { } : Promise.reject()); >h(async v => v ? (def) => { } : Promise.reject()) : void > : ^^^^ >h : (cb: (v: boolean) => MyCallback | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >async v => v ? (def) => { } : Promise.reject() : (v: boolean) => Promise void)> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >v ? (def) => { } : Promise.reject() : Promise | ((def: string) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >v : boolean > : ^^^^^^^ >(def) => { } : (def: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >def : string > : ^^^^^^ >Promise.reject() : Promise > : ^^^^^^^^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ // repro from #29196 const increment: ( >increment : (num: number, str: string) => Promise<((s: string) => any) | string> | string -> : ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ num: number, >num : number @@ -200,7 +200,7 @@ const increment: ( >s : string > : ^^^^^^ >async (num, str) => { return a => { return a.length }} : (num: number, str: string) => Promise<(a: string) => number> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >str : string @@ -208,7 +208,7 @@ const increment: ( return a => { >a => { return a.length } : (a: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ @@ -224,7 +224,7 @@ const increment: ( const increment2: ( >increment2 : (num: number, str: string) => Promise<((s: string) => any) | string> -> : ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ num: number, >num : number @@ -238,7 +238,7 @@ const increment2: ( >s : string > : ^^^^^^ >async (num, str) => { return a => { return a.length }} : (num: number, str: string) => Promise<(a: string) => number> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >str : string @@ -246,7 +246,7 @@ const increment2: ( return a => { >a => { return a.length } : (a: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionDeclaration10_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration10_es2017.types index f8d6ca1d0f19b..2f364cd43e213 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration10_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration10_es2017.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration10_es2017.ts === async function foo(a = await => await): Promise { >foo : (a: any, await: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration10_es5.types b/tests/baselines/reference/asyncFunctionDeclaration10_es5.types index 485e7a2d04cbc..c5cbb4d24f75a 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration10_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration10_es5.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration10_es5.ts === async function foo(a = await => await): Promise { >foo : (a: any, await: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration10_es6.types b/tests/baselines/reference/asyncFunctionDeclaration10_es6.types index b9ad13adb935a..15c334c9393d4 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration10_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration10_es6.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration10_es6.ts === async function foo(a = await => await): Promise { >foo : (a: any, await: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration12_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration12_es2017.types index 7d4fe2ec9505d..4467afb83eaac 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration12_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration12_es2017.types @@ -5,7 +5,7 @@ var v = async function await(): Promise { } >v : () => Promise > : ^^^^^^ >async function await(): Promise { } : () => Promise -> : ^^^^^^ +> : >await : () => Promise > : ^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionDeclaration12_es5.types b/tests/baselines/reference/asyncFunctionDeclaration12_es5.types index 70020508824a2..a432a6fcd2383 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration12_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration12_es5.types @@ -5,7 +5,7 @@ var v = async function await(): Promise { } >v : () => Promise > : ^^^^^^ >async function await(): Promise { } : () => Promise -> : ^^^^^^ +> : >await : () => Promise > : ^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionDeclaration12_es6.types b/tests/baselines/reference/asyncFunctionDeclaration12_es6.types index a8b8d8dddb6d2..dafdb57394d54 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration12_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration12_es6.types @@ -5,7 +5,7 @@ var v = async function await(): Promise { } >v : () => Promise > : ^^^^^^ >async function await(): Promise { } : () => Promise -> : ^^^^^^ +> : >await : () => Promise > : ^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionDeclaration16_es5.types b/tests/baselines/reference/asyncFunctionDeclaration16_es5.types index 7278f08c0d4f9..6ca62d352e035 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration16_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration16_es5.types @@ -32,9 +32,9 @@ declare class Thenable { then(): void; } */ const f1 = async str => { >f1 : (str: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >async str => { return str;} : (str: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : >str : string > : ^^^^^^ @@ -48,7 +48,7 @@ const f2 = async str => { >f2 : T1 > : ^^ >async str => { return str;} : (str: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >str : string > : ^^^^^^ @@ -63,9 +63,9 @@ const f2 = async str => { */ const f3 = async str => { >f3 : (str: string) => Promise -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >async str => { return str;} : (str: string) => Promise -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : >str : string > : ^^^^^^ @@ -79,7 +79,7 @@ const f4 = async str => { >f4 : T2 > : ^^ >async str => { return str;} : (str: string) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >str : string > : ^^^^^^ @@ -93,7 +93,7 @@ const f5 = async str => { >f5 : T3 > : ^^ >async str => { return str;} : (str: string) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >str : string > : ^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionDeclaration2_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration2_es2017.types index b8f495959ae27..b40aa42b10e90 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration2_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration2_es2017.types @@ -3,6 +3,6 @@ === asyncFunctionDeclaration2_es2017.ts === function f(await) { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >await : any } diff --git a/tests/baselines/reference/asyncFunctionDeclaration2_es5.types b/tests/baselines/reference/asyncFunctionDeclaration2_es5.types index 7d39204548540..26a780e93d7fc 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration2_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration2_es5.types @@ -3,6 +3,6 @@ === asyncFunctionDeclaration2_es5.ts === function f(await) { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >await : any } diff --git a/tests/baselines/reference/asyncFunctionDeclaration2_es6.types b/tests/baselines/reference/asyncFunctionDeclaration2_es6.types index fb68accdbfa50..761b18f76acc3 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration2_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration2_es6.types @@ -3,6 +3,6 @@ === asyncFunctionDeclaration2_es6.ts === function f(await) { >f : (await: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >await : any } diff --git a/tests/baselines/reference/asyncFunctionDeclaration3_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration3_es2017.types index e80da8e305493..58eebf57fb7c9 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration3_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration3_es2017.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration3_es2017.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration3_es5.types b/tests/baselines/reference/asyncFunctionDeclaration3_es5.types index 7b755250fa325..4469562a7aac0 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration3_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration3_es5.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration3_es5.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration3_es6.types b/tests/baselines/reference/asyncFunctionDeclaration3_es6.types index 9a112924a25f9..b4c95ce44abd9 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration3_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration3_es6.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration3_es6.ts === function f(await = await) { >f : (await?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >await : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration5_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration5_es2017.types index 16b3b8d903723..6cd066263a719 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration5_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration5_es2017.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration5_es2017.ts === async function foo(await): Promise { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncFunctionDeclaration5_es5.types b/tests/baselines/reference/asyncFunctionDeclaration5_es5.types index d333558e947c6..a52a4913c03f5 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration5_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration5_es5.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration5_es5.ts === async function foo(await): Promise { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncFunctionDeclaration5_es6.types b/tests/baselines/reference/asyncFunctionDeclaration5_es6.types index f230b6bccf04d..ad63fa5b4ef14 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration5_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration5_es6.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration5_es6.ts === async function foo(await): Promise { >foo : (await: any) => Promise -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >await : any > : ^^^ } diff --git a/tests/baselines/reference/asyncFunctionDeclaration6_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration6_es2017.types index d4f900a89a53d..5c8ad7be8b1cc 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration6_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration6_es2017.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration6_es2017.ts === async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration6_es5.types b/tests/baselines/reference/asyncFunctionDeclaration6_es5.types index c4853bf02ffb8..1c88ece8014b2 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration6_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration6_es5.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration6_es5.ts === async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration6_es6.types b/tests/baselines/reference/asyncFunctionDeclaration6_es6.types index 093b581f193a6..e4e9f9b4e87c6 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration6_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration6_es6.types @@ -3,7 +3,7 @@ === asyncFunctionDeclaration6_es6.ts === async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration7_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration7_es2017.types index a49a170feb68d..a862013abcc55 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration7_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration7_es2017.types @@ -8,7 +8,7 @@ async function bar(): Promise { // 'await' here is an identifier, and not a yield expression. async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration7_es5.types b/tests/baselines/reference/asyncFunctionDeclaration7_es5.types index 75d1e77dc3eee..5ba91545234d6 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration7_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration7_es5.types @@ -8,7 +8,7 @@ async function bar(): Promise { // 'await' here is an identifier, and not a yield expression. async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration7_es6.types b/tests/baselines/reference/asyncFunctionDeclaration7_es6.types index 0bc0e893d0857..8cb52e8d72b2b 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration7_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration7_es6.types @@ -8,7 +8,7 @@ async function bar(): Promise { // 'await' here is an identifier, and not a yield expression. async function foo(a = await): Promise { >foo : (a?: any) => Promise -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any > : ^^^ >await : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types index a73e7f2128cdc..adb00d567615e 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types @@ -9,7 +9,7 @@ async function foo(): Promise { >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -17,5 +17,5 @@ async function foo(): Promise { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types index 41e3bb5550543..c8043a214ce74 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types @@ -9,7 +9,7 @@ async function foo(): Promise { >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -17,5 +17,5 @@ async function foo(): Promise { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types index 0cc39c4fa7bca..92ba40789b6fe 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types @@ -9,7 +9,7 @@ async function foo(): Promise { >v : { [x: number]: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [await]: foo } : { [x: number]: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[await] : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >await : any @@ -17,5 +17,5 @@ async function foo(): Promise { > : any > : ^^^ >foo : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types b/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types index fe3fadf112cec..089d60658f226 100644 --- a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types @@ -23,11 +23,11 @@ class C { >other.apply(this, arguments) : any > : ^^^ >other.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >other : () => void > : ^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : any > : ^^^ >arguments : IArguments diff --git a/tests/baselines/reference/asyncFunctionReturnType.2.types b/tests/baselines/reference/asyncFunctionReturnType.2.types index ea4d56c96ca2c..4375dd50c91e2 100644 --- a/tests/baselines/reference/asyncFunctionReturnType.2.types +++ b/tests/baselines/reference/asyncFunctionReturnType.2.types @@ -10,7 +10,7 @@ class X { >f : () => Promise > : ^^^^^^ >async (): Promise => this : () => Promise -> : ^^^^^^ +> : >this : this > : ^^^^ } diff --git a/tests/baselines/reference/asyncFunctionReturnType.types b/tests/baselines/reference/asyncFunctionReturnType.types index 6ddf656109e64..09d967f6e7577 100644 --- a/tests/baselines/reference/asyncFunctionReturnType.types +++ b/tests/baselines/reference/asyncFunctionReturnType.types @@ -41,7 +41,7 @@ interface Obj { async function fIndexedTypeForStringProp(obj: Obj): Promise { >fIndexedTypeForStringProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -56,7 +56,7 @@ async function fIndexedTypeForStringProp(obj: Obj): Promise { async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise { >fIndexedTypeForPromiseOfStringProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -64,11 +64,11 @@ async function fIndexedTypeForPromiseOfStringProp(obj: Obj): PromisePromise.resolve(obj.stringProp) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.stringProp : string > : ^^^^^^ >obj : Obj @@ -79,7 +79,7 @@ async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise { >fIndexedTypeForExplicitPromiseOfStringProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -87,11 +87,11 @@ async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): PromisePromise.resolve(obj.stringProp) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.stringProp : string > : ^^^^^^ >obj : Obj @@ -102,7 +102,7 @@ async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): Promise { >fIndexedTypeForAnyProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -116,7 +116,7 @@ async function fIndexedTypeForAnyProp(obj: Obj): Promise { async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise { >fIndexedTypeForPromiseOfAnyProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -124,11 +124,11 @@ async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): PromisePromise.resolve(obj.anyProp) : Promise > : ^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.anyProp : any >obj : Obj > : ^^^ @@ -138,7 +138,7 @@ async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise { >fIndexedTypeForExplicitPromiseOfAnyProp : (obj: Obj) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Obj > : ^^^ @@ -146,11 +146,11 @@ async function fIndexedTypeForExplicitPromiseOfAnyProp(obj: Obj): PromisePromise.resolve(obj.anyProp) : Promise > : ^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.anyProp : any >obj : Obj > : ^^^ @@ -160,7 +160,7 @@ async function fIndexedTypeForExplicitPromiseOfAnyProp(obj: Obj): Promise(obj: TObj): Promise { >fGenericIndexedTypeForStringProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -175,7 +175,7 @@ async function fGenericIndexedTypeForStringProp(obj: TObj): Pr async function fGenericIndexedTypeForPromiseOfStringProp(obj: TObj): Promise { >fGenericIndexedTypeForPromiseOfStringProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -183,11 +183,11 @@ async function fGenericIndexedTypeForPromiseOfStringProp(obj: >Promise.resolve(obj.stringProp) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.stringProp : string > : ^^^^^^ >obj : TObj @@ -198,7 +198,7 @@ async function fGenericIndexedTypeForPromiseOfStringProp(obj: async function fGenericIndexedTypeForExplicitPromiseOfStringProp(obj: TObj): Promise { >fGenericIndexedTypeForExplicitPromiseOfStringProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -206,11 +206,11 @@ async function fGenericIndexedTypeForExplicitPromiseOfStringPropPromise.resolve(obj.stringProp) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.stringProp : string > : ^^^^^^ >obj : TObj @@ -221,7 +221,7 @@ async function fGenericIndexedTypeForExplicitPromiseOfStringProp(obj: TObj): Promise { >fGenericIndexedTypeForAnyProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -235,7 +235,7 @@ async function fGenericIndexedTypeForAnyProp(obj: TObj): Promi async function fGenericIndexedTypeForPromiseOfAnyProp(obj: TObj): Promise { >fGenericIndexedTypeForPromiseOfAnyProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -243,11 +243,11 @@ async function fGenericIndexedTypeForPromiseOfAnyProp(obj: TOb >Promise.resolve(obj.anyProp) : Promise > : ^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.anyProp : any >obj : TObj > : ^^^^ @@ -257,7 +257,7 @@ async function fGenericIndexedTypeForPromiseOfAnyProp(obj: TOb async function fGenericIndexedTypeForExplicitPromiseOfAnyProp(obj: TObj): Promise { >fGenericIndexedTypeForExplicitPromiseOfAnyProp : (obj: TObj) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : TObj > : ^^^^ @@ -265,11 +265,11 @@ async function fGenericIndexedTypeForExplicitPromiseOfAnyProp( >Promise.resolve(obj.anyProp) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.anyProp : any >obj : TObj > : ^^^^ @@ -279,7 +279,7 @@ async function fGenericIndexedTypeForExplicitPromiseOfAnyProp( async function fGenericIndexedTypeForKProp(obj: TObj, key: K): Promise { >fGenericIndexedTypeForKProp : (obj: TObj, key: K) => Promise -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : TObj > : ^^^^ >key : K @@ -296,7 +296,7 @@ async function fGenericIndexedTypeForKProp(obj: TObj, key: K): Promise { >fGenericIndexedTypeForPromiseOfKProp : (obj: TObj, key: K) => Promise -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : TObj > : ^^^^ >key : K @@ -306,11 +306,11 @@ async function fGenericIndexedTypeForPromiseOfKPropPromise.resolve(obj[key]) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj[key] : TObj[K] > : ^^^^^^^ >obj : TObj @@ -321,7 +321,7 @@ async function fGenericIndexedTypeForPromiseOfKProp(obj: TObj, key: K): Promise { >fGenericIndexedTypeForExplicitPromiseOfKProp : (obj: TObj, key: K) => Promise -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : TObj > : ^^^^ >key : K @@ -331,11 +331,11 @@ async function fGenericIndexedTypeForExplicitPromiseOfKPropPromise.resolve(obj[key]) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj[key] : TObj[K] > : ^^^^^^^ >obj : TObj diff --git a/tests/baselines/reference/asyncFunctionTempVariableScoping.types b/tests/baselines/reference/asyncFunctionTempVariableScoping.types index b85881fa38b04..f419de00d7f96 100644 --- a/tests/baselines/reference/asyncFunctionTempVariableScoping.types +++ b/tests/baselines/reference/asyncFunctionTempVariableScoping.types @@ -5,7 +5,7 @@ async ({ foo, bar, ...rest }) => bar(await foo); >async ({ foo, bar, ...rest }) => bar(await foo) : ({ foo, bar, ...rest }: { [x: string]: any; foo: any; bar: any; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : any > : ^^^ >bar : any diff --git a/tests/baselines/reference/asyncFunctionsAcrossFiles.types b/tests/baselines/reference/asyncFunctionsAcrossFiles.types index 7bcccff16ebac..5876034a4b265 100644 --- a/tests/baselines/reference/asyncFunctionsAcrossFiles.types +++ b/tests/baselines/reference/asyncFunctionsAcrossFiles.types @@ -9,13 +9,13 @@ export const a = { >a : { f: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ f: async () => { await b.f(); }} : { f: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ f: async () => { >f : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { await b.f(); } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : await b.f(); >await b.f() : void @@ -39,13 +39,13 @@ export const b = { >b : { f: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ f: async () => { await a.f(); }} : { f: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ f: async () => { >f : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { await a.f(); } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : await a.f(); >await a.f() : void diff --git a/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types b/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types index 1c3492bbef849..1e77f35283adc 100644 --- a/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types +++ b/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types @@ -4,73 +4,73 @@ declare namespace Windows.Foundation { interface IPromise { then(success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; ->then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U_1) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } -> : ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : ((value: TResult) => IPromise) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult > : ^^^^^^^ >error : ((error: any) => IPromise) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >error : any >progress : ((progress: any) => void) | undefined -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >progress : any then(success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; ->then : { (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : ((value: TResult) => IPromise) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult > : ^^^^^^^ >error : ((error: any) => U) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >error : any >progress : ((progress: any) => void) | undefined -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >progress : any then(success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; ->then : { (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : ((value: TResult) => U) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult > : ^^^^^^^ >error : ((error: any) => IPromise) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >error : any >progress : ((progress: any) => void) | undefined -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >progress : any then(success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; ->then : { (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => IPromise) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => IPromise) | undefined, progress?: ((progress: any) => void) | undefined): IPromise; (success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_3, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; } +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : ((value: TResult) => U) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult > : ^^^^^^^ >error : ((error: any) => U) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >error : any >progress : ((progress: any) => void) | undefined -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >progress : any done(success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void): void; >done : (success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : ((value: TResult) => any) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult > : ^^^^^^^ >error : ((error: any) => any) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >error : any >progress : ((progress: any) => void) | undefined -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >progress : any cancel(): void; @@ -81,7 +81,7 @@ declare namespace Windows.Foundation { async function sample(promise: Windows.Foundation.IPromise) { >sample : (promise: Windows.Foundation.IPromise) => Promise -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >promise : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Windows : any @@ -101,13 +101,13 @@ async function sample(promise: Windows.Foundation.IPromise) { declare function resolve1(value: T): Promise; >resolve1 : (value: T) => Promise -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ declare function resolve2(value: T): Windows.Foundation.IPromise; >resolve2 : (value: T) => Windows.Foundation.IPromise -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ >Windows : any @@ -117,7 +117,7 @@ declare function resolve2(value: T): Windows.Foundation.IPromise; async function sample2(x?: number) { >sample2 : (x?: number) => Promise -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -129,7 +129,7 @@ async function sample2(x?: number) { >resolve1(x) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve1 : (value: T) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -141,7 +141,7 @@ async function sample2(x?: number) { >resolve2(x) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve2 : (value: T) => Windows.Foundation.IPromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types b/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types index 12586d3232c17..b42023e6c7686 100644 --- a/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types +++ b/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types @@ -5,7 +5,7 @@ export async function* test(a: T): AsyncGenerator { >test : (a: T) => AsyncGenerator -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/asyncMethodWithSuperConflict_es6.types b/tests/baselines/reference/asyncMethodWithSuperConflict_es6.types index 1e9b5a93280aa..1a82e9834a414 100644 --- a/tests/baselines/reference/asyncMethodWithSuperConflict_es6.types +++ b/tests/baselines/reference/asyncMethodWithSuperConflict_es6.types @@ -70,7 +70,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -81,7 +81,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -103,7 +103,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // call with property access super.x(); @@ -132,7 +132,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -143,7 +143,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -186,7 +186,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -207,7 +207,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" diff --git a/tests/baselines/reference/asyncMethodWithSuper_es2017.types b/tests/baselines/reference/asyncMethodWithSuper_es2017.types index 7798162e40ecf..4f854b2690b95 100644 --- a/tests/baselines/reference/asyncMethodWithSuper_es2017.types +++ b/tests/baselines/reference/asyncMethodWithSuper_es2017.types @@ -64,7 +64,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -75,7 +75,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -91,7 +91,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // call with property access super.x(); @@ -120,7 +120,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -131,7 +131,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -174,7 +174,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -195,7 +195,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" diff --git a/tests/baselines/reference/asyncMethodWithSuper_es5.types b/tests/baselines/reference/asyncMethodWithSuper_es5.types index 8a930be3bcbfa..99b2d34c08d71 100644 --- a/tests/baselines/reference/asyncMethodWithSuper_es5.types +++ b/tests/baselines/reference/asyncMethodWithSuper_es5.types @@ -64,7 +64,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -75,7 +75,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -91,7 +91,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // call with property access super.x(); @@ -120,7 +120,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -131,7 +131,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -174,7 +174,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -195,7 +195,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" diff --git a/tests/baselines/reference/asyncMethodWithSuper_es6.types b/tests/baselines/reference/asyncMethodWithSuper_es6.types index f3289dbbf557b..ed8de4ce3ba00 100644 --- a/tests/baselines/reference/asyncMethodWithSuper_es6.types +++ b/tests/baselines/reference/asyncMethodWithSuper_es6.types @@ -64,7 +64,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -75,7 +75,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -91,7 +91,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // call with property access super.x(); @@ -120,7 +120,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -131,7 +131,7 @@ class B extends A { >b : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -174,7 +174,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -195,7 +195,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -286,7 +286,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -331,7 +331,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // property access (assign) super.x = f; @@ -357,7 +357,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -422,7 +422,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -467,7 +467,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // element access (assign) super["x"] = f; @@ -493,7 +493,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -558,7 +558,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -603,7 +603,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // property access (assign) super.x = f; @@ -629,7 +629,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super.x : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >x : () => void @@ -694,7 +694,7 @@ class B extends A { >a : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -739,7 +739,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : // element access (assign) super["x"] = f; @@ -765,7 +765,7 @@ class B extends A { >f : () => void > : ^^^^^^^^^^ >super["x"] : () => void -> : ^^^^^^^^^^ +> : >super : A > : ^ >"x" : "x" @@ -825,7 +825,7 @@ class Base { method(x: string): any {} >method : (x: string) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -838,7 +838,7 @@ class Base { static method(x: string): any {} >method : (x: string) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -856,11 +856,11 @@ class Derived extends Base { > : ^^^^^^^^^^^^^^^^^^ >super.method('') : any >super.method : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >super : Base > : ^^^^ >method : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'' : "" > : ^^ @@ -897,7 +897,7 @@ class Derived extends Base { > : ^^^^^^^^^^^^^^^^^^ >super["method"]('') : any >super["method"] : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >super : Base > : ^^^^ >"method" : "method" @@ -938,11 +938,11 @@ class Derived extends Base { > : ^^^^^^^^^^^^^^^^^^ >super.method('') : any >super.method : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >super : typeof Base > : ^^^^^^^^^^^ >method : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'' : "" > : ^^ @@ -979,7 +979,7 @@ class Derived extends Base { > : ^^^^^^^^^^^^^^^^^^ >super["method"]('') : any >super["method"] : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >super : typeof Base > : ^^^^^^^^^^^ >"method" : "method" diff --git a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es2017.types b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es2017.types index 421e52374e384..7b01f22a4642f 100644 --- a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es2017.types +++ b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es2017.types @@ -3,34 +3,34 @@ === asyncUnParenthesizedArrowFunction_es2017.ts === declare function someOtherFunction(i: any): Promise; >someOtherFunction : (i: any) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >i : any const x = async i => await someOtherFunction(i) >x : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async i => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any const x1 = async (i) => await someOtherFunction(i); >x1 : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async (i) => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any diff --git a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es5.types b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es5.types index 62d790bd376f7..80ec0db4246a7 100644 --- a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es5.types +++ b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es5.types @@ -3,34 +3,34 @@ === asyncUnParenthesizedArrowFunction_es5.ts === declare function someOtherFunction(i: any): Promise; >someOtherFunction : (i: any) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >i : any const x = async i => await someOtherFunction(i) >x : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async i => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any const x1 = async (i) => await someOtherFunction(i); >x1 : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async (i) => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any diff --git a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es6.types b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es6.types index 284c6b5701ea6..cb41715e08ac5 100644 --- a/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es6.types +++ b/tests/baselines/reference/asyncUnParenthesizedArrowFunction_es6.types @@ -3,34 +3,34 @@ === asyncUnParenthesizedArrowFunction_es6.ts === declare function someOtherFunction(i: any): Promise; >someOtherFunction : (i: any) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >i : any const x = async i => await someOtherFunction(i) >x : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async i => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any const x1 = async (i) => await someOtherFunction(i); >x1 : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >async (i) => await someOtherFunction(i) : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : any >await someOtherFunction(i) : void > : ^^^^ >someOtherFunction(i) : Promise > : ^^^^^^^^^^^^^ >someOtherFunction : (i: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >i : any diff --git a/tests/baselines/reference/asyncWithVarShadowing_es6.types b/tests/baselines/reference/asyncWithVarShadowing_es6.types index aff85a120bffd..bd17b9d6c379d 100644 --- a/tests/baselines/reference/asyncWithVarShadowing_es6.types +++ b/tests/baselines/reference/asyncWithVarShadowing_es6.types @@ -7,7 +7,7 @@ declare const y: any; async function fn1(x) { >fn1 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var x; @@ -16,7 +16,7 @@ async function fn1(x) { async function fn2(x) { >fn2 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var x, z; @@ -26,7 +26,7 @@ async function fn2(x) { async function fn3(x) { >fn3 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var z; @@ -35,7 +35,7 @@ async function fn3(x) { async function fn4(x) { >fn4 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var x = y; @@ -45,7 +45,7 @@ async function fn4(x) { async function fn5(x) { >fn5 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { x } = y; @@ -56,7 +56,7 @@ async function fn5(x) { async function fn6(x) { >fn6 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { x, z } = y; @@ -69,7 +69,7 @@ async function fn6(x) { async function fn7(x) { >fn7 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { x = y } = y; @@ -82,7 +82,7 @@ async function fn7(x) { async function fn8(x) { >fn8 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { z: x } = y; @@ -95,7 +95,7 @@ async function fn8(x) { async function fn9(x) { >fn9 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { z: { x } } = y; @@ -108,7 +108,7 @@ async function fn9(x) { async function fn10(x) { >fn10 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { z: { x } = y } = y; @@ -123,7 +123,7 @@ async function fn10(x) { async function fn11(x) { >fn11 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var { ...x } = y; @@ -134,7 +134,7 @@ async function fn11(x) { async function fn12(x) { >fn12 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [x] = y; @@ -145,7 +145,7 @@ async function fn12(x) { async function fn13(x) { >fn13 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [x = y] = y; @@ -158,7 +158,7 @@ async function fn13(x) { async function fn14(x) { >fn14 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [, x] = y; @@ -171,7 +171,7 @@ async function fn14(x) { async function fn15(x) { >fn15 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [...x] = y; @@ -182,7 +182,7 @@ async function fn15(x) { async function fn16(x) { >fn16 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [[x]] = y; @@ -193,7 +193,7 @@ async function fn16(x) { async function fn17(x) { >fn17 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any var [[x] = y] = y; @@ -206,7 +206,7 @@ async function fn17(x) { async function fn18({ x }) { >fn18 : ({ x }: { x: any; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -216,7 +216,7 @@ async function fn18({ x }) { async function fn19([x]) { >fn19 : ([x]: [any]) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -226,7 +226,7 @@ async function fn19([x]) { async function fn20(x) { >fn20 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any { var x; @@ -236,7 +236,7 @@ async function fn20(x) { async function fn21(x) { >fn21 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any if (y) { @@ -249,7 +249,7 @@ async function fn21(x) { async function fn22(x) { >fn22 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any if (y) { @@ -263,7 +263,7 @@ async function fn22(x) { async function fn23(x) { >fn23 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { @@ -277,7 +277,7 @@ async function fn23(x) { async function fn24(x) { >fn24 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { @@ -293,7 +293,7 @@ async function fn24(x) { async function fn25(x) { >fn25 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { @@ -309,7 +309,7 @@ async function fn25(x) { async function fn26(x) { >fn26 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { @@ -326,7 +326,7 @@ async function fn26(x) { async function fn27(x) { >fn27 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { @@ -339,7 +339,7 @@ async function fn27(x) { async function fn28(x) { >fn28 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any while (y) { @@ -352,7 +352,7 @@ async function fn28(x) { async function fn29(x) { >fn29 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any do { @@ -365,7 +365,7 @@ async function fn29(x) { async function fn30(x) { >fn30 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var x = y;;) { @@ -377,7 +377,7 @@ async function fn30(x) { async function fn31(x) { >fn31 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var { x } = y;;) { @@ -389,7 +389,7 @@ async function fn31(x) { async function fn32(x) { >fn32 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (;;) { @@ -400,7 +400,7 @@ async function fn32(x) { async function fn33(x: string) { >fn33 : (x: string) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -413,7 +413,7 @@ async function fn33(x: string) { async function fn34(x) { >fn34 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var z in y) { @@ -428,7 +428,7 @@ async function fn34(x) { async function fn35(x) { >fn35 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var x of y) { @@ -439,7 +439,7 @@ async function fn35(x) { async function fn36(x) { >fn36 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var { x } of y) { @@ -451,7 +451,7 @@ async function fn36(x) { async function fn37(x) { >fn37 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any for (var z of y) { @@ -465,7 +465,7 @@ async function fn37(x) { async function fn38(x) { >fn38 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any switch (y) { @@ -481,7 +481,7 @@ async function fn38(x) { async function fn39(x) { >fn39 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any foo: { @@ -499,7 +499,7 @@ async function fn39(x) { async function fn40(x) { >fn40 : (x: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : any try { diff --git a/tests/baselines/reference/augmentExportEquals5.types b/tests/baselines/reference/augmentExportEquals5.types index 5cef587ca0ff0..7c512800e3d27 100644 --- a/tests/baselines/reference/augmentExportEquals5.types +++ b/tests/baselines/reference/augmentExportEquals5.types @@ -24,7 +24,7 @@ declare module "express" { interface IRoute { all(...handler: RequestHandler[]): IRoute; >all : (...handler: RequestHandler[]) => IRoute -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >handler : RequestHandler[] > : ^^^^^^^^^^^^^^^^ } @@ -40,14 +40,14 @@ declare module "express" { interface IRouter extends RequestHandler { route(path: string): IRoute; >route : (path: string) => IRoute -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >path : string > : ^^^^^^ } export function Router(options?: any): Router; >Router : (options?: any) => Router -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >options : any export interface Router extends IRouter {} @@ -62,7 +62,7 @@ declare module "express" { get (name: string): string; >get : (name: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ } diff --git a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.types b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.types index 2d0f6509c9d11..9ace21c94479a 100644 --- a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.types +++ b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.types @@ -31,7 +31,7 @@ var f = () => { }; >f : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : var v1: { >v1 : { [n: number]: Foo; } diff --git a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types index f9e84fc15bcb4..e8bff702d3ff8 100644 --- a/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types +++ b/tests/baselines/reference/augmentedTypeBracketNamedPropertyAccess.types @@ -21,7 +21,7 @@ var f = function () { }; >f : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : var r1 = o['data']; // Should be number >r1 : number diff --git a/tests/baselines/reference/augmentedTypesClass2a.types b/tests/baselines/reference/augmentedTypesClass2a.types index 0db9a59768668..7db1e88b69ac5 100644 --- a/tests/baselines/reference/augmentedTypesClass2a.types +++ b/tests/baselines/reference/augmentedTypesClass2a.types @@ -16,5 +16,5 @@ var c2 = () => { } >c2 : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/augmentedTypesEnum.types b/tests/baselines/reference/augmentedTypesEnum.types index 733022e95d24d..a1d79f4f6af4f 100644 --- a/tests/baselines/reference/augmentedTypesEnum.types +++ b/tests/baselines/reference/augmentedTypesEnum.types @@ -35,7 +35,7 @@ var e3 = () => { } // error >e3 : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : // enum then class enum e4 { One } // error diff --git a/tests/baselines/reference/augmentedTypesFunction.types b/tests/baselines/reference/augmentedTypesFunction.types index 0b1bb129c1237..159730ef6e322 100644 --- a/tests/baselines/reference/augmentedTypesFunction.types +++ b/tests/baselines/reference/augmentedTypesFunction.types @@ -29,7 +29,7 @@ var y2a = () => { } // error >y2a : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : // function then class function y3() { } // error diff --git a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2015).types b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2015).types index f7967487c4e3f..b7dc12e13099f 100644 --- a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2015).types +++ b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2015).types @@ -3,7 +3,7 @@ === autoAccessorExperimentalDecorators.ts === declare var dec: (target: any, key: PropertyKey, desc: PropertyDescriptor) => void; >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >key : PropertyKey @@ -17,7 +17,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor a: any; >a : any @@ -25,7 +25,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor b: any; >b : any @@ -38,7 +38,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor #a: any; >#a : any @@ -46,7 +46,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor #b: any; >#b : any diff --git a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2022).types b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2022).types index f7967487c4e3f..b7dc12e13099f 100644 --- a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2022).types +++ b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=es2022).types @@ -3,7 +3,7 @@ === autoAccessorExperimentalDecorators.ts === declare var dec: (target: any, key: PropertyKey, desc: PropertyDescriptor) => void; >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >key : PropertyKey @@ -17,7 +17,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor a: any; >a : any @@ -25,7 +25,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor b: any; >b : any @@ -38,7 +38,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor #a: any; >#a : any @@ -46,7 +46,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor #b: any; >#b : any diff --git a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=esnext).types b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=esnext).types index f7967487c4e3f..b7dc12e13099f 100644 --- a/tests/baselines/reference/autoAccessorExperimentalDecorators(target=esnext).types +++ b/tests/baselines/reference/autoAccessorExperimentalDecorators(target=esnext).types @@ -3,7 +3,7 @@ === autoAccessorExperimentalDecorators.ts === declare var dec: (target: any, key: PropertyKey, desc: PropertyDescriptor) => void; >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >key : PropertyKey @@ -17,7 +17,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor a: any; >a : any @@ -25,7 +25,7 @@ class C1 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor b: any; >b : any @@ -38,7 +38,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ accessor #a: any; >#a : any @@ -46,7 +46,7 @@ class C2 { @dec >dec : (target: any, key: PropertyKey, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ static accessor #b: any; >#b : any diff --git a/tests/baselines/reference/autoLift2.types b/tests/baselines/reference/autoLift2.types index 113c9ffca3d60..5629313362a82 100644 --- a/tests/baselines/reference/autoLift2.types +++ b/tests/baselines/reference/autoLift2.types @@ -61,7 +61,7 @@ class A >[1, 2].forEach((p) => this.foo) : void > : ^^^^ >[1, 2].forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -69,9 +69,9 @@ class A >2 : 2 > : ^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(p) => this.foo : (p: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p : number > : ^^^^^^ >this.foo : any @@ -85,7 +85,7 @@ class A >[1, 2].forEach((p) => this.bar) : void > : ^^^^ >[1, 2].forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -93,9 +93,9 @@ class A >2 : 2 > : ^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(p) => this.bar : (p: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p : number > : ^^^^^^ >this.bar : any diff --git a/tests/baselines/reference/autolift3.types b/tests/baselines/reference/autolift3.types index 7c8640edc2182..74a7b1344387e 100644 --- a/tests/baselines/reference/autolift3.types +++ b/tests/baselines/reference/autolift3.types @@ -34,13 +34,13 @@ class B { var CScriptIO = (function() { >CScriptIO : { readFile: (path: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >(function() { var fso = 0 return { readFile: function(path: string): string { return fso.toString(); } } })() : { readFile: (path: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : >(function() { var fso = 0 return { readFile: function(path: string): string { return fso.toString(); } } }) : () => { readFile: (path: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >function() { var fso = 0 return { readFile: function(path: string): string { return fso.toString(); } } } : () => { readFile: (path: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ var fso = 0 >fso : number @@ -50,13 +50,13 @@ class B { return { >{ readFile: function(path: string): string { return fso.toString(); } } : { readFile: (path: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ readFile: function(path: string): string { >readFile : (path: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >function(path: string): string { return fso.toString(); } : (path: string) => string -> : ^^^^^^^ ^^^^^ +> : >path : string > : ^^^^^^ @@ -64,11 +64,11 @@ class B { >fso.toString() : string > : ^^^^^^ >fso.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >fso : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } } })(); diff --git a/tests/baselines/reference/autolift4.types b/tests/baselines/reference/autolift4.types index d98574fc21b75..bffe2caaff22d 100644 --- a/tests/baselines/reference/autolift4.types +++ b/tests/baselines/reference/autolift4.types @@ -20,11 +20,11 @@ class Point { >Math.sqrt(this.x*this.x + this.y*this.y) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >this.x*this.x + this.y*this.y : number > : ^^^^^^ >this.x*this.x : number @@ -104,11 +104,11 @@ class Point3D extends Point { >Math.sqrt(this.x*this.x + this.y*this.y + this.z*this.m) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >this.x*this.x + this.y*this.y + this.z*this.m : number > : ^^^^^^ >this.x*this.x + this.y*this.y : number diff --git a/tests/baselines/reference/avoidCycleWithVoidExpressionReturnedFromArrow.types b/tests/baselines/reference/avoidCycleWithVoidExpressionReturnedFromArrow.types index 13e34fe8fda45..e0a7e8a8611b6 100644 --- a/tests/baselines/reference/avoidCycleWithVoidExpressionReturnedFromArrow.types +++ b/tests/baselines/reference/avoidCycleWithVoidExpressionReturnedFromArrow.types @@ -25,7 +25,7 @@ class Howl { once(name: "unlock", fn: () => void) { >once : (name: "unlock", fn: () => void) => void -> : ^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >name : "unlock" > : ^^^^^^^^ >fn : () => void @@ -35,11 +35,11 @@ class Howl { >console.log(name, fn) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >name : "unlock" > : ^^^^^^^^ >fn : () => void @@ -61,17 +61,17 @@ const instance = new Howl({ >onplayerror : () => undefined > : ^^^^^^^^^^^^^^^ >() => void instance.once("unlock", () => {}) : () => undefined -> : ^^^^^^^^^^^^^^^ +> : >void instance.once("unlock", () => {}) : undefined > : ^^^^^^^^^ >instance.once("unlock", () => {}) : void > : ^^^^ >instance.once : (name: "unlock", fn: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >instance : Howl > : ^^^^ >once : (name: "unlock", fn: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >"unlock" : "unlock" > : ^^^^^^^^ >() => {} : () => void diff --git a/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types b/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types index 0460aa45f844f..702b6d08be707 100644 --- a/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types +++ b/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types @@ -7,7 +7,7 @@ declare const foo: ["a", string, number] | ["b", string, boolean]; export function test(arg: { index?: number }) { >test : (arg: { index?: number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : { index?: number; } > : ^^^^^^^^^^ ^^^ >index : number | undefined diff --git a/tests/baselines/reference/awaitCallExpression1_es2017.types b/tests/baselines/reference/awaitCallExpression1_es2017.types index 2a7e92abd208a..ff5a47b2d8a47 100644 --- a/tests/baselines/reference/awaitCallExpression1_es2017.types +++ b/tests/baselines/reference/awaitCallExpression1_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression1_es5.types b/tests/baselines/reference/awaitCallExpression1_es5.types index 9a12d6d4b3c7b..dcb15f257868e 100644 --- a/tests/baselines/reference/awaitCallExpression1_es5.types +++ b/tests/baselines/reference/awaitCallExpression1_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression1_es6.types b/tests/baselines/reference/awaitCallExpression1_es6.types index 145bdf1c1d85c..2e77882260a4e 100644 --- a/tests/baselines/reference/awaitCallExpression1_es6.types +++ b/tests/baselines/reference/awaitCallExpression1_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression2_es2017.types b/tests/baselines/reference/awaitCallExpression2_es2017.types index 5f31de3d23c64..3d3af159f2788 100644 --- a/tests/baselines/reference/awaitCallExpression2_es2017.types +++ b/tests/baselines/reference/awaitCallExpression2_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(await p, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression2_es5.types b/tests/baselines/reference/awaitCallExpression2_es5.types index d8e805568aabb..a89be88ddb8cc 100644 --- a/tests/baselines/reference/awaitCallExpression2_es5.types +++ b/tests/baselines/reference/awaitCallExpression2_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(await p, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression2_es6.types b/tests/baselines/reference/awaitCallExpression2_es6.types index fc44354fbfb83..39f949106073a 100644 --- a/tests/baselines/reference/awaitCallExpression2_es6.types +++ b/tests/baselines/reference/awaitCallExpression2_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(await p, a, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression3_es2017.types b/tests/baselines/reference/awaitCallExpression3_es2017.types index 79bfc8b9a3b62..e0af66e1dfebf 100644 --- a/tests/baselines/reference/awaitCallExpression3_es2017.types +++ b/tests/baselines/reference/awaitCallExpression3_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, await p, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression3_es5.types b/tests/baselines/reference/awaitCallExpression3_es5.types index d03e2408c2934..37ee77b2cfb36 100644 --- a/tests/baselines/reference/awaitCallExpression3_es5.types +++ b/tests/baselines/reference/awaitCallExpression3_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, await p, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression3_es6.types b/tests/baselines/reference/awaitCallExpression3_es6.types index 7ac417d904941..d6940a217e797 100644 --- a/tests/baselines/reference/awaitCallExpression3_es6.types +++ b/tests/baselines/reference/awaitCallExpression3_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,7 +77,7 @@ async function func(): Promise { >fn(a, await p, a) : void > : ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression4_es2017.types b/tests/baselines/reference/awaitCallExpression4_es2017.types index 65d364a8456eb..ae4ea63e0ee3a 100644 --- a/tests/baselines/reference/awaitCallExpression4_es2017.types +++ b/tests/baselines/reference/awaitCallExpression4_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >(await pfn)(a, a, a) : void > : ^^^^ >(await pfn) : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await pfn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression4_es5.types b/tests/baselines/reference/awaitCallExpression4_es5.types index c9810ce1be1f7..827aafd07a5c1 100644 --- a/tests/baselines/reference/awaitCallExpression4_es5.types +++ b/tests/baselines/reference/awaitCallExpression4_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >(await pfn)(a, a, a) : void > : ^^^^ >(await pfn) : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await pfn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression4_es6.types b/tests/baselines/reference/awaitCallExpression4_es6.types index 3253c2cbf897e..8c39562a013a9 100644 --- a/tests/baselines/reference/awaitCallExpression4_es6.types +++ b/tests/baselines/reference/awaitCallExpression4_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >(await pfn)(a, a, a) : void > : ^^^^ >(await pfn) : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await pfn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression5_es2017.types b/tests/baselines/reference/awaitCallExpression5_es2017.types index 3597d8383932c..30ca06fdff4d1 100644 --- a/tests/baselines/reference/awaitCallExpression5_es2017.types +++ b/tests/baselines/reference/awaitCallExpression5_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression5_es5.types b/tests/baselines/reference/awaitCallExpression5_es5.types index 69a2a3bba0370..4ed35571153a7 100644 --- a/tests/baselines/reference/awaitCallExpression5_es5.types +++ b/tests/baselines/reference/awaitCallExpression5_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression5_es6.types b/tests/baselines/reference/awaitCallExpression5_es6.types index 77bfecf9a5ff7..ac45e317d28c3 100644 --- a/tests/baselines/reference/awaitCallExpression5_es6.types +++ b/tests/baselines/reference/awaitCallExpression5_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression6_es2017.types b/tests/baselines/reference/awaitCallExpression6_es2017.types index d91aafccb1e13..1f7d3954ef6db 100644 --- a/tests/baselines/reference/awaitCallExpression6_es2017.types +++ b/tests/baselines/reference/awaitCallExpression6_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(await p, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression6_es5.types b/tests/baselines/reference/awaitCallExpression6_es5.types index c190a6c01e41c..983ba9f3fe11e 100644 --- a/tests/baselines/reference/awaitCallExpression6_es5.types +++ b/tests/baselines/reference/awaitCallExpression6_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(await p, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression6_es6.types b/tests/baselines/reference/awaitCallExpression6_es6.types index ee8e86dab7928..7f22836931893 100644 --- a/tests/baselines/reference/awaitCallExpression6_es6.types +++ b/tests/baselines/reference/awaitCallExpression6_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(await p, a, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >await p : boolean > : ^^^^^^^ >p : Promise diff --git a/tests/baselines/reference/awaitCallExpression7_es2017.types b/tests/baselines/reference/awaitCallExpression7_es2017.types index b979e64f45ff4..e65f9a1b687b9 100644 --- a/tests/baselines/reference/awaitCallExpression7_es2017.types +++ b/tests/baselines/reference/awaitCallExpression7_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, await p, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression7_es5.types b/tests/baselines/reference/awaitCallExpression7_es5.types index 1222545d0d271..390e123cdf1c8 100644 --- a/tests/baselines/reference/awaitCallExpression7_es5.types +++ b/tests/baselines/reference/awaitCallExpression7_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, await p, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression7_es6.types b/tests/baselines/reference/awaitCallExpression7_es6.types index fd117a79ace10..e24dfba11e962 100644 --- a/tests/baselines/reference/awaitCallExpression7_es6.types +++ b/tests/baselines/reference/awaitCallExpression7_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,11 +77,11 @@ async function func(): Promise { >o.fn(a, await p, a) : void > : ^^^^ >o.fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >await p : boolean diff --git a/tests/baselines/reference/awaitCallExpression8_es2017.types b/tests/baselines/reference/awaitCallExpression8_es2017.types index 039bf08134b3a..00bc0c5401f82 100644 --- a/tests/baselines/reference/awaitCallExpression8_es2017.types +++ b/tests/baselines/reference/awaitCallExpression8_es2017.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,15 +77,15 @@ async function func(): Promise { >(await po).fn(a, a, a) : void > : ^^^^ >(await po).fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(await po) : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >await po : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression8_es5.types b/tests/baselines/reference/awaitCallExpression8_es5.types index 8a581ae8817a5..44044ddf85bbe 100644 --- a/tests/baselines/reference/awaitCallExpression8_es5.types +++ b/tests/baselines/reference/awaitCallExpression8_es5.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,15 +77,15 @@ async function func(): Promise { >(await po).fn(a, a, a) : void > : ^^^^ >(await po).fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(await po) : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >await po : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpression8_es6.types b/tests/baselines/reference/awaitCallExpression8_es6.types index 14d41729d4f64..5d001492a47e3 100644 --- a/tests/baselines/reference/awaitCallExpression8_es6.types +++ b/tests/baselines/reference/awaitCallExpression8_es6.types @@ -11,7 +11,7 @@ declare var p: Promise; declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -21,9 +21,9 @@ declare function fn(arg0: boolean, arg1: boolean, arg2: boolean): void; declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; >o : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -33,7 +33,7 @@ declare var o: { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }; declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >pfn : Promise<(arg0: boolean, arg1: boolean, arg2: boolean) => void> -> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -43,9 +43,9 @@ declare var pfn: Promise<{ (arg0: boolean, arg1: boolean, arg2: boolean): void; declare var po: Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }>; >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg0 : boolean > : ^^^^^^^ >arg1 : boolean @@ -77,15 +77,15 @@ async function func(): Promise { >(await po).fn(a, a, a) : void > : ^^^^ >(await po).fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(await po) : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >await po : { fn(arg0: boolean, arg1: boolean, arg2: boolean): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >po : Promise<{ fn(arg0: boolean, arg1: boolean, arg2: boolean): void; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >fn : (arg0: boolean, arg1: boolean, arg2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >a : boolean diff --git a/tests/baselines/reference/awaitCallExpressionInSyncFunction.types b/tests/baselines/reference/awaitCallExpressionInSyncFunction.types index e66a08350a536..1bf2f739fb4fd 100644 --- a/tests/baselines/reference/awaitCallExpressionInSyncFunction.types +++ b/tests/baselines/reference/awaitCallExpressionInSyncFunction.types @@ -15,11 +15,11 @@ function foo() { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/awaitInNonAsyncFunction.types b/tests/baselines/reference/awaitInNonAsyncFunction.types index 87a0dd911050a..75b73a50048be 100644 --- a/tests/baselines/reference/awaitInNonAsyncFunction.types +++ b/tests/baselines/reference/awaitInNonAsyncFunction.types @@ -5,7 +5,7 @@ function normalFunc(p: Promise) { >normalFunc : (p: Promise) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ @@ -24,7 +24,7 @@ function normalFunc(p: Promise) { export function exportedFunc(p: Promise) { >exportedFunc : (p: Promise) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ @@ -43,9 +43,9 @@ export function exportedFunc(p: Promise) { const functionExpression = function(p: Promise) { >functionExpression : (p: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(p: Promise) { for await (const _ of []); await p;} : (p: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -64,9 +64,9 @@ const functionExpression = function(p: Promise) { const arrowFunc = (p: Promise) => { >arrowFunc : (p: Promise) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(p: Promise) => { for await (const _ of []); return await p;} : (p: Promise) => number -> : ^^^^ ^^^^^^^^^^^ +> : >p : Promise > : ^^^^^^^^^^^^^^^ @@ -86,7 +86,7 @@ const arrowFunc = (p: Promise) => { function* generatorFunc(p: Promise) { >generatorFunc : (p: Promise) => Generator -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ @@ -127,7 +127,7 @@ class clazz { } method(p: Promise) { >method : (p: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/awaitUnionPromise.types b/tests/baselines/reference/awaitUnionPromise.types index 961619f1ef205..743a77073f47c 100644 --- a/tests/baselines/reference/awaitUnionPromise.types +++ b/tests/baselines/reference/awaitUnionPromise.types @@ -67,7 +67,7 @@ async function main() { >c : number | {} > : ^^^^^^^^^^^ >await x.next3() : number | {} -> : ^^^^^^^^^^^ +> : ^^^^^^^^^ >x.next3() : Promise > : ^^^^^^^^^^^^^^^^^^^^ >x.next3 : () => Promise @@ -81,7 +81,7 @@ async function main() { >d : number | { x: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >await x.next4() : number | { x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ >x.next4() : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x.next4 : () => Promise diff --git a/tests/baselines/reference/awaitedType.types b/tests/baselines/reference/awaitedType.types index 47ed59c4f5cdf..a3f3704459a35 100644 --- a/tests/baselines/reference/awaitedType.types +++ b/tests/baselines/reference/awaitedType.types @@ -39,7 +39,7 @@ type T7 = Awaited<{ then(x: number): void }>; // never (non-promise "thenable") >T7 : never > : ^^^^^ >then : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -47,7 +47,7 @@ type T8 = Awaited<{ then(x: () => void): void }>; // unknown >T8 : unknown > : ^^^^^^^ >then : (x: () => void) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : () => void > : ^^^^^^ @@ -93,9 +93,9 @@ type TNullOrUndefined = Awaited; interface BadPromise { then(cb: (value: BadPromise) => void): void; } >then : (cb: (value: BadPromise) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise > : ^^^^^^^^^^ @@ -105,17 +105,17 @@ type T16 = Awaited; // error interface BadPromise1 { then(cb: (value: BadPromise2) => void): void; } >then : (cb: (value: BadPromise2) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise2) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise2 > : ^^^^^^^^^^^ interface BadPromise2 { then(cb: (value: BadPromise1) => void): void; } >then : (cb: (value: BadPromise1) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise1) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise1 > : ^^^^^^^^^^^ @@ -128,9 +128,9 @@ type T18 = Awaited<{ then(cb: (value: number, other: { }) => void)}>; // number >T18 : number > : ^^^^^^ >then : (cb: (value: number, other: {}) => void) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >cb : (value: number, other: {}) => void -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >value : number > : ^^^^^^ >other : {} @@ -143,7 +143,7 @@ type MaybePromise = T | Promise | PromiseLike declare function MaybePromise(value: T): MaybePromise; >MaybePromise : (value: T) => MaybePromise -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -179,11 +179,11 @@ async function main() { >Promise.all([ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ]) : Promise<[number, string, boolean]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ] : [number | Promise<1> | PromiseLike<1>, string | Promise<"2"> | PromiseLike<"2">, true | Promise | PromiseLike] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -191,7 +191,7 @@ async function main() { >MaybePromise(1) : 1 | Promise<1> | PromiseLike<1> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -199,7 +199,7 @@ async function main() { >MaybePromise('2') : "2" | Promise<"2"> | PromiseLike<"2"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >'2' : "2" > : ^^^ @@ -207,7 +207,7 @@ async function main() { >MaybePromise(true) : true | Promise | PromiseLike > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -217,7 +217,7 @@ async function main() { // non-generic async function f1(x: string) { >f1 : (x: string) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -233,7 +233,7 @@ async function f1(x: string) { async function f2(x: unknown) { >f2 : (x: unknown) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -249,7 +249,7 @@ async function f2(x: unknown) { async function f3(x: object) { >f3 : (x: object) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : object > : ^^^^^^ @@ -265,7 +265,7 @@ async function f3(x: object) { async function f4(x: Promise) { >f4 : (x: Promise) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^^^^ @@ -281,7 +281,7 @@ async function f4(x: Promise) { async function f5(x: Promise) { >f5 : (x: Promise) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^^^^^ @@ -297,7 +297,7 @@ async function f5(x: Promise) { async function f6(x: Promise) { >f6 : (x: Promise) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^^^^ @@ -315,7 +315,7 @@ async function f6(x: Promise) { async function f7(x: T) { >f7 : (x: T) => Promise -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -335,7 +335,7 @@ async function f7(x: T) { async function f8(x: T) { >f8 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -355,7 +355,7 @@ async function f8(x: T) { async function f9(x: T) { >f9 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -375,7 +375,7 @@ async function f9(x: T) { async function f10(x: T) { >f10 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -395,11 +395,11 @@ async function f10(x: T) { async function f11 void): void }>(x: T) { >f11 : void): void; }>(x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >then : (onfulfilled: (value: unknown) => void) => void -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >onfulfilled : (value: unknown) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ >x : T @@ -421,7 +421,7 @@ async function f11 void): void async function f12(x: T) { >f12 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -441,7 +441,7 @@ async function f12(x: T) { async function f13(x: T) { >f13 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -459,7 +459,7 @@ async function f13(x: T) { async function f14(x: T) { >f14 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : T @@ -479,7 +479,7 @@ async function f14(x: T) { async function f15(x: T) { >f15 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >then : number > : ^^^^^^ >x : T @@ -499,7 +499,7 @@ async function f15(x: T) { async function f16(x: T) { >f16 : (x: T) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >then : () => void > : ^^^^^^ >x : T @@ -526,7 +526,7 @@ type _Expect = TActual; // https://github.com/microsoft/TypeScript/issues/48320 async function f17 Promise>(fn: T) { >f17 : Promise>(fn: T) => Promise> -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >args : any[] > : ^^^^^ >fn : T @@ -564,7 +564,7 @@ async function f17_usage() { >f17(async () => 123 as const) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^ >f17 : Promise>(fn: T) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => 123 as const : () => Promise<123> > : ^^^^^^^^^^^^^^^^^^ >123 as const : 123 @@ -589,7 +589,7 @@ type GenericStructure< async function brokenExample(structurePromise: Promise>, key: AcceptableKeyType): Promise { >brokenExample : (structurePromise: Promise>, key: AcceptableKeyType) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >structurePromise : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : AcceptableKeyType @@ -663,7 +663,7 @@ type CheckSelect = T extends SelectAndInclude declare function findMany( >findMany : (args: T) => CheckSelect, Promise<2>> -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >select : string > : ^^^^^^ >include : string @@ -677,7 +677,7 @@ declare function findMany( async function findManyWrapper< >findManyWrapper : (args: T) => Promise, Promise<2>>> -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ T extends { select?: string; include?: string } >select : string @@ -697,7 +697,7 @@ async function findManyWrapper< >findMany(args) : CheckSelect, Promise<2>> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >findMany : (args: T_1) => CheckSelect, Promise<2>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >args : T > : ^ @@ -718,7 +718,7 @@ async function mainFindMany() { >findManyWrapper({ select: "foo", include: "bar", }) : Promise<"Please either choose `select` or `include`"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >findManyWrapper : (args: T) => Promise, Promise<2>>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ select: "foo", include: "bar", } : { select: string; include: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -743,7 +743,7 @@ async function mainFindMany() { >findManyWrapper({}) : Promise> > : ^^^^^^^^^^^^^^^^^^^ >findManyWrapper : (args: T) => Promise, Promise<2>>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -755,7 +755,7 @@ async function mainFindMany() { >findManyWrapper({ select: "foo" }) : Promise> > : ^^^^^^^^^^^^^^^^^^^ >findManyWrapper : (args: T) => Promise, Promise<2>>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ select: "foo" } : { select: string; } > : ^^^^^^^^^^^^^^^^^^^ >select : string @@ -771,7 +771,7 @@ async function mainFindMany() { >findManyWrapper({ include: "bar" }) : Promise> > : ^^^^^^^^^^^^^^^^^^^ >findManyWrapper : (args: T) => Promise, Promise<2>>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ include: "bar" } : { include: string; } > : ^^^^^^^^^^^^^^^^^^^^ >include : string @@ -793,11 +793,11 @@ async function mainFindMany() { >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -805,21 +805,21 @@ async function mainFindMany() { >Promise.all(promises).then((results) => { const first = results[0] const second = results[1] // error }) : Promise > : ^^^^^^^^^^^^^ >Promise.all(promises).then : (onfulfilled?: (value: [number]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all(promises) : Promise<[number]> > : ^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >promises : readonly [Promise] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: [number]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(results) => { const first = results[0] const second = results[1] // error } : (results: [number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >results : [number] > : ^^^^^^^^ @@ -858,11 +858,11 @@ async function test40330() { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -870,7 +870,7 @@ async function test40330() { >promiseVoid : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => {} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const res = await Promise.all([ >res : [number, ...void[]] @@ -880,11 +880,11 @@ async function test40330() { >Promise.all([ promiseNumber, ...[promiseVoid()] ]) : Promise<[number, ...void[]]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ promiseNumber, ...[promiseVoid()] ] : [Promise, ...Promise[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/awaitedTypeJQuery.types b/tests/baselines/reference/awaitedTypeJQuery.types index c7ea29c2d0ce0..dd8a78e68eba7 100644 --- a/tests/baselines/reference/awaitedTypeJQuery.types +++ b/tests/baselines/reference/awaitedTypeJQuery.types @@ -11,8 +11,8 @@ interface PromiseBase { thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, @@ -27,7 +27,7 @@ interface PromiseBase( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TR > : ^^ >u : UR @@ -42,7 +42,7 @@ interface PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TJ > : ^^ >u : UJ @@ -57,7 +57,7 @@ interface PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TN > : ^^ >u : UN @@ -74,8 +74,8 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, @@ -90,7 +90,7 @@ interface PromiseBase PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TJ > : ^^ >u : UJ @@ -105,7 +105,7 @@ interface PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TN > : ^^ >u : UN @@ -122,8 +122,8 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BRP = never, BJP = never, BNP = never, CRP = never, CJP = never, CNP = never, @@ -138,7 +138,7 @@ interface PromiseBase PromiseBaseprogressFilter : (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TN > : ^^ >u : UN @@ -155,8 +155,8 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, @@ -167,7 +167,7 @@ interface PromiseBase( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TR > : ^^ >u : UR @@ -182,7 +182,7 @@ interface PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TJ > : ^^ >u : UJ @@ -203,8 +203,8 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BRF = never, BJF = never, BNF = never, CRF = never, CJF = never, CNF = never, @@ -215,7 +215,7 @@ interface PromiseBase PromiseBasefailFilter : (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TJ > : ^^ >u : UJ @@ -236,15 +236,15 @@ interface PromiseBase; thenthen : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_1 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_1 | PromiseBase | Thenable, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_1 | PromiseBase | Thenable): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => ANP_2 | PromiseBase | Thenable): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => ARD_2 | PromiseBase | Thenable, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_2 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => ARF_3 | PromiseBase | Thenable, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +>then : { (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_1, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_1, progressFilter: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_1): PromiseBase; (doneFilter: null, failFilter: null, progressFilter?: (t: TN, u: UN, v: VN, ...s: SN[]) => PromiseBase | Thenable | ANP_2): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD_2, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_2, progressFilter?: null): PromiseBase; (doneFilter: null, failFilter: (t: TJ, u: UJ, v: VJ, ...s: SJ[]) => PromiseBase | Thenable | ARF_3, progressFilter?: null): PromiseBase; (doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD, failFilter?: null, progressFilter?: null): PromiseBase; } +> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ BRD = never, BJD = never, BND = never, CRD = never, CJD = never, CND = never, RRD = never, RJD = never, RND = never>( doneFilter: (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBasedoneFilter : (t: TR, u: UR, v: VR, ...s: SR[]) => PromiseBase | Thenable | ARD -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >t : TR > : ^^ >u : UR diff --git a/tests/baselines/reference/awaitedTypeStrictNull.types b/tests/baselines/reference/awaitedTypeStrictNull.types index a58674f3f8a41..3991d6f0d0aeb 100644 --- a/tests/baselines/reference/awaitedTypeStrictNull.types +++ b/tests/baselines/reference/awaitedTypeStrictNull.types @@ -40,7 +40,7 @@ type T7 = Awaited<{ then(x: number): void }>; // never (non-promise "thenable") >T7 : never > : ^^^^^ >then : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -48,7 +48,7 @@ type T8 = Awaited<{ then(x: () => void): void }>; // unknown >T8 : unknown > : ^^^^^^^ >then : (x: () => void) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : () => void > : ^^^^^^ @@ -94,9 +94,9 @@ type TNullOrUndefined = Awaited; interface BadPromise { then(cb: (value: BadPromise) => void): void; } >then : (cb: (value: BadPromise) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise > : ^^^^^^^^^^ @@ -106,17 +106,17 @@ type T16 = Awaited; // error interface BadPromise1 { then(cb: (value: BadPromise2) => void): void; } >then : (cb: (value: BadPromise2) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise2) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise2 > : ^^^^^^^^^^^ interface BadPromise2 { then(cb: (value: BadPromise1) => void): void; } >then : (cb: (value: BadPromise1) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (value: BadPromise1) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : BadPromise1 > : ^^^^^^^^^^^ @@ -129,9 +129,9 @@ type T18 = Awaited<{ then(cb: (value: number, other: { }) => void)}>; // number >T18 : number > : ^^^^^^ >then : (cb: (value: number, other: {}) => void) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >cb : (value: number, other: {}) => void -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >value : number > : ^^^^^^ >other : {} @@ -144,7 +144,7 @@ type MaybePromise = T | Promise | PromiseLike declare function MaybePromise(value: T): MaybePromise; >MaybePromise : (value: T) => MaybePromise -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -180,11 +180,11 @@ async function main() { >Promise.all([ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ]) : Promise<[number, string, boolean]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ] : [number | Promise<1> | PromiseLike<1>, string | Promise<"2"> | PromiseLike<"2">, true | Promise | PromiseLike] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -192,7 +192,7 @@ async function main() { >MaybePromise(1) : 1 | Promise<1> | PromiseLike<1> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -200,7 +200,7 @@ async function main() { >MaybePromise('2') : "2" | Promise<"2"> | PromiseLike<"2"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >'2' : "2" > : ^^^ @@ -208,7 +208,7 @@ async function main() { >MaybePromise(true) : true | Promise | PromiseLike > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MaybePromise : (value: T) => MaybePromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -264,7 +264,7 @@ async function fn(): Promiseapi : Api<{}> > : ^^^^^^^ >post : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ } // helps with tests where '.types' just prints out the type alias name diff --git a/tests/baselines/reference/badInferenceLowerPriorityThanGoodInference.types b/tests/baselines/reference/badInferenceLowerPriorityThanGoodInference.types index bc4ee1a85ef9a..d47e71297b3dd 100644 --- a/tests/baselines/reference/badInferenceLowerPriorityThanGoodInference.types +++ b/tests/baselines/reference/badInferenceLowerPriorityThanGoodInference.types @@ -10,14 +10,14 @@ interface Foo { b: (x: A) => void; >b : (x: A) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A > : ^ } declare function canYouInferThis(fn: () => Foo): A; >canYouInferThis : (fn: () => Foo) => A -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >fn : () => Foo > : ^^^^^^ @@ -25,15 +25,15 @@ const result = canYouInferThis(() => ({ >result : { BLAH: number; } > : ^^^^^^^^^^^^^^^^^ >canYouInferThis(() => ({ a: { BLAH: 33 }, b: x => { }})) : { BLAH: number; } -> : ^^^^^^^^^^^^^^^^^ +> : >canYouInferThis : (fn: () => Foo) => A -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >() => ({ a: { BLAH: 33 }, b: x => { }}) : () => { a: { BLAH: number; }; b: (x: { BLAH: number; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a: { BLAH: 33 }, b: x => { }}) : { a: { BLAH: number; }; b: (x: { BLAH: number; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { BLAH: 33 }, b: x => { }} : { a: { BLAH: number; }; b: (x: { BLAH: number; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a: { BLAH: 33 }, >a : { BLAH: number; } @@ -47,9 +47,9 @@ const result = canYouInferThis(() => ({ b: x => { } >b : (x: { BLAH: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => { } : (x: { BLAH: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : { BLAH: number; } > : ^^^^^^^^^^^^^^^^^ @@ -67,9 +67,9 @@ result.BLAH; function goofus (f: (...args: ARGS) => any ) {} >goofus : (f: (...args: ARGS) => any) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >f : (...args: ARGS) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : ARGS > : ^^^^ @@ -77,9 +77,9 @@ goofus((a: string) => ({ dog() { return a; } })); >goofus((a: string) => ({ dog() { return a; } })) : void > : ^^^^ >goofus : (f: (...args: ARGS) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(a: string) => ({ dog() { return a; } }) : (a: string) => { dog(): string; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >({ dog() { return a; } }) : { dog(): string; } @@ -95,9 +95,9 @@ goofus((a: string) => ({ dog: function() { return a; } })); >goofus((a: string) => ({ dog: function() { return a; } })) : void > : ^^^^ >goofus : (f: (...args: ARGS) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(a: string) => ({ dog: function() { return a; } }) : (a: string) => { dog: () => string; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >({ dog: function() { return a; } }) : { dog: () => string; } @@ -107,7 +107,7 @@ goofus((a: string) => ({ dog: function() { return a; } })); >dog : () => string > : ^^^^^^^^^^^^ >function() { return a; } : () => string -> : ^^^^^^^^^^^^ +> : >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/badOverloadError.types b/tests/baselines/reference/badOverloadError.types index 3905fb139512d..c960916a1bcb9 100644 --- a/tests/baselines/reference/badOverloadError.types +++ b/tests/baselines/reference/badOverloadError.types @@ -9,7 +9,7 @@ function method() { >dictionary : { [index: string]: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ><{ [index: string]: string; }>{} : { [index: string]: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >index : string > : ^^^^^^ >{} : {} diff --git a/tests/baselines/reference/badThisBinding.types b/tests/baselines/reference/badThisBinding.types index 5dc355e116917..9759d94996110 100644 --- a/tests/baselines/reference/badThisBinding.types +++ b/tests/baselines/reference/badThisBinding.types @@ -3,12 +3,12 @@ === badThisBinding.ts === declare function foo(a:any): any; >foo : (a: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any declare function bar(a:any): any; >bar : (a: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any class Greeter { @@ -19,14 +19,14 @@ class Greeter { foo(() => { >foo(() => { bar(() => { var x = this; }); }) : any >foo : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => { bar(() => { var x = this; }); } : () => void > : ^^^^^^^^^^ bar(() => { >bar(() => { var x = this; }) : any >bar : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => { var x = this; } : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/baseConstraintOfDecorator.types b/tests/baselines/reference/baseConstraintOfDecorator.types index f691fbed32ba0..af53209e6591e 100644 --- a/tests/baselines/reference/baseConstraintOfDecorator.types +++ b/tests/baselines/reference/baseConstraintOfDecorator.types @@ -3,11 +3,11 @@ === baseConstraintOfDecorator.ts === export function classExtender(superClass: TFunction, _instanceModifier: (instance: any, args: any[]) => void): TFunction { >classExtender : (superClass: TFunction, _instanceModifier: (instance: any, args: any[]) => void) => TFunction -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >superClass : TFunction > : ^^^^^^^^^ >_instanceModifier : (instance: any, args: any[]) => void -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >instance : any > : ^^^ >args : any[] @@ -39,7 +39,7 @@ export function classExtender(superClass: TFunction, _instanceModifie >_instanceModifier(this, args) : void > : ^^^^ >_instanceModifier : (instance: any, args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >args : any[] @@ -56,13 +56,13 @@ class MyClass { private x; } export function classExtender2 MyClass>(superClass: TFunction, _instanceModifier: (instance: any, args: any[]) => void): TFunction { >classExtender2 : MyClass>(superClass: TFunction, _instanceModifier: (instance: any, args: any[]) => void) => TFunction -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >args : string[] > : ^^^^^^^^ >superClass : TFunction > : ^^^^^^^^^ >_instanceModifier : (instance: any, args: any[]) => void -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >instance : any > : ^^^ >args : any[] @@ -70,9 +70,9 @@ export function classExtender2 MyCl return class decoratorFunc extends superClass { >class decoratorFunc extends superClass { constructor(...args: any[]) { super(...args); _instanceModifier(this, args); } } : { new (...args: any[]): decoratorFunc; prototype: classExtender2.decoratorFunc; } & TFunction -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >decoratorFunc : { new (...args: any[]): decoratorFunc; prototype: classExtender2.decoratorFunc; } & TFunction -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >superClass : MyClass > : ^^^^^^^ @@ -94,7 +94,7 @@ export function classExtender2 MyCl >_instanceModifier(this, args) : void > : ^^^^ >_instanceModifier : (instance: any, args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >args : any[] diff --git a/tests/baselines/reference/baseExpressionTypeParameters.types b/tests/baselines/reference/baseExpressionTypeParameters.types index b562fa61ceb70..b1b5f13cecf45 100644 --- a/tests/baselines/reference/baseExpressionTypeParameters.types +++ b/tests/baselines/reference/baseExpressionTypeParameters.types @@ -24,7 +24,7 @@ class Gen extends base() {} // Error, T not in scope >Gen : Gen > : ^^^^^^ >base() : base.Base -> : ^^^^^^^^^^^^ +> : ^ ^^^^^ >base : () => typeof Base > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/baseTypeAfterDerivedType.types b/tests/baselines/reference/baseTypeAfterDerivedType.types index 5dde445198362..36436676f1688 100644 --- a/tests/baselines/reference/baseTypeAfterDerivedType.types +++ b/tests/baselines/reference/baseTypeAfterDerivedType.types @@ -4,7 +4,7 @@ interface Derived extends Base { method(...args: any[]): void; >method : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @@ -12,7 +12,7 @@ interface Derived extends Base { interface Base { method(...args: any[]): void; >method : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @@ -23,7 +23,7 @@ class Derived2 implements Base2 { method(...args: any[]): void { } >method : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @@ -31,7 +31,7 @@ class Derived2 implements Base2 { interface Base2 { method(...args: any[]): void; >method : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types index c6ac4effe4f38..0a946f34468b8 100644 --- a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types +++ b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types @@ -24,7 +24,7 @@ class Parameter { method(t: T4) { } >method : (t: T4) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : T4 > : ^^ } @@ -71,7 +71,7 @@ class C extends CBase { public method(t: Wrapper) { } >method : (t: Wrapper) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : Wrapper > : ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/bestChoiceType.types b/tests/baselines/reference/bestChoiceType.types index f224e090c61ac..1a589d635fe28 100644 --- a/tests/baselines/reference/bestChoiceType.types +++ b/tests/baselines/reference/bestChoiceType.types @@ -7,7 +7,7 @@ >(''.match(/ /) || []).map(s => s.toLowerCase()) : any[] > : ^^^^^ >(''.match(/ /) || []).map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(''.match(/ /) || []) : RegExpMatchArray | [] > : ^^^^^^^^^^^^^^^^^^^^^ >''.match(/ /) || [] : RegExpMatchArray | [] @@ -15,19 +15,19 @@ >''.match(/ /) : RegExpMatchArray | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >''.match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/ / : RegExp > : ^^^^^^ >[] : [] > : ^^ >map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >s : any >s.toLowerCase() : any >s.toLowerCase : any @@ -48,11 +48,11 @@ function f1() { >''.match(/ /) : RegExpMatchArray | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >''.match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/ / : RegExp > : ^^^^^^ @@ -72,13 +72,13 @@ function f1() { >y.map(s => s.toLowerCase()) : any[] > : ^^^^^ >y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >y : RegExpMatchArray | [] > : ^^^^^^^^^^^^^^^^^^^^^ >map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >s : any >s.toLowerCase() : any >s.toLowerCase : any @@ -98,11 +98,11 @@ function f2() { >''.match(/ /) : RegExpMatchArray | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >''.match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/ / : RegExp > : ^^^^^^ @@ -124,13 +124,13 @@ function f2() { >y.map(s => s.toLowerCase()) : any[] > : ^^^^^ >y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >y : RegExpMatchArray | never[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U_1, thisArg?: any) => U_1[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >s : any >s.toLowerCase() : any >s.toLowerCase : any diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types index 7386e16b8e36a..017b457eb6582 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types @@ -82,7 +82,7 @@ var r4 = true ? a : b; // typeof a >r4 : { x: number; y?: number; } | { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true ? a : b : { x: number; y?: number; } | { x: number; z?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^ >true : true > : ^^^^ >a : { x: number; y?: number; } @@ -94,7 +94,7 @@ var r5 = true ? b : a; // typeof b >r5 : { x: number; y?: number; } | { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true ? b : a : { x: number; y?: number; } | { x: number; z?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^ >true : true > : ^^^^ >b : { x: number; z?: number; } @@ -104,51 +104,51 @@ var r5 = true ? b : a; // typeof b var r6 = true ? (x: number) => { } : (x: Object) => { }; // returns number => void >r6 : ((x: number) => void) | ((x: Object) => void) -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >true ? (x: number) => { } : (x: Object) => { } : ((x: number) => void) | ((x: Object) => void) -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^ ^^^^^ ^ >true : true > : ^^^^ >(x: number) => { } : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >(x: Object) => { } : (x: Object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ var r7: (x: Object) => void = true ? (x: number) => { } : (x: Object) => { }; >r7 : (x: Object) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Object > : ^^^^^^ >true ? (x: number) => { } : (x: Object) => { } : ((x: number) => void) | ((x: Object) => void) -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >true : true > : ^^^^ >(x: number) => { } : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >(x: Object) => { } : (x: Object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ var r8 = true ? (x: Object) => { } : (x: number) => { }; // returns Object => void >r8 : ((x: Object) => void) | ((x: number) => void) -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >true ? (x: Object) => { } : (x: number) => { } : ((x: Object) => void) | ((x: number) => void) -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^ ^^^^^ ^ >true : true > : ^^^^ >(x: Object) => { } : (x: Object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ >(x: number) => { } : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -178,7 +178,7 @@ var r11 = true ? base : derived2; function foo5(t: T, u: U): Object { >foo5 : (t: T, u: U) => Object -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types index 3165c88cb5447..d27659f01239d 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types @@ -64,7 +64,7 @@ var r9 = true ? derived : derived2; function foo(t: T, u: U) { >foo : (t: T, u: U) => T | U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >t : T > : ^ >u : U @@ -83,7 +83,7 @@ function foo(t: T, u: U) { function foo2(t: T, u: U) { // Error for referencing own type parameter >foo2 : (t: T, u: U) => U -> : ^ ^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -102,7 +102,7 @@ function foo2(t: T, u: U) { // Error for referencing own type pa function foo3(t: T, u: U) { >foo3 : (t: T, u: U) => U -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U diff --git a/tests/baselines/reference/bestCommonTypeOfTuple.types b/tests/baselines/reference/bestCommonTypeOfTuple.types index bf0dbd9ef0ed8..e7f4b4a967dc8 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple.types +++ b/tests/baselines/reference/bestCommonTypeOfTuple.types @@ -3,7 +3,7 @@ === bestCommonTypeOfTuple.ts === function f1(x: number): string { return "foo"; } >f1 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >"foo" : "foo" @@ -11,7 +11,7 @@ function f1(x: number): string { return "foo"; } function f2(x: number): number { return 10; } >f2 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >10 : 10 @@ -19,7 +19,7 @@ function f2(x: number): number { return 10; } function f3(x: number): boolean { return true; } >f3 : (x: number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >true : true @@ -40,7 +40,7 @@ enum E2 { two } var t1: [(x: number) => string, (x: number) => number]; >t1 : [(x: number) => string, (x: number) => number] -> : ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ ^ >x : number > : ^^^^^^ >x : number @@ -61,15 +61,15 @@ var t4: [E1, E2, number]; // no error t1 = [f1, f2]; >t1 = [f1, f2] : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >t1 : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[f1, f2] : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >f1 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ t2 = [E1.one, E2.two]; >t2 = [E1.one, E2.two] : [E1, E2] @@ -131,7 +131,7 @@ var e1 = t1[2]; // {} >t1[2] : undefined > : ^^^^^^^^^ >t1 : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >2 : 2 > : ^ diff --git a/tests/baselines/reference/bestCommonTypeReturnStatement.types b/tests/baselines/reference/bestCommonTypeReturnStatement.types index eaa9fd3a446a8..8d7879fef7c10 100644 --- a/tests/baselines/reference/bestCommonTypeReturnStatement.types +++ b/tests/baselines/reference/bestCommonTypeReturnStatement.types @@ -4,13 +4,13 @@ interface IPromise { then(successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any): IPromise; >then : (successCallback: (promiseValue: T) => any, errorCallback?: (reason: any) => any) => IPromise -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >successCallback : (promiseValue: T) => any -> : ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >promiseValue : T > : ^ >errorCallback : (reason: any) => any -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >reason : any } diff --git a/tests/baselines/reference/betterErrorForUnionCall.types b/tests/baselines/reference/betterErrorForUnionCall.types index 3aa7049582f7e..88b908ee6c949 100644 --- a/tests/baselines/reference/betterErrorForUnionCall.types +++ b/tests/baselines/reference/betterErrorForUnionCall.types @@ -19,7 +19,7 @@ union(""); declare const fnUnion: { a: string } | ((a: string) => void) >fnUnion : { a: string; } | ((a: string) => void) -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^ ^^^^^^^^ ^^ ^^^^^ ^ >a : string > : ^^^^^^ >a : string @@ -29,13 +29,13 @@ fnUnion(""); >fnUnion("") : any > : ^^^ >fnUnion : { a: string; } | ((a: string) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"" : "" > : ^^ declare const fnUnion2: ((a: T) => void) | ((a: string) => void) >fnUnion2 : ((a: T) => void) | ((a: string) => void) -> : ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -45,7 +45,7 @@ fnUnion2(""); >fnUnion2("") : any > : ^^^ >fnUnion2 : ((a: T) => void) | ((a: string) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"" : "" > : ^^ diff --git a/tests/baselines/reference/bigint64ArraySubarray.types b/tests/baselines/reference/bigint64ArraySubarray.types index 8a32de14606cf..f59e9e7e31fd1 100644 --- a/tests/baselines/reference/bigint64ArraySubarray.types +++ b/tests/baselines/reference/bigint64ArraySubarray.types @@ -19,21 +19,21 @@ function bigInt64ArraySubarray() { >arr.subarray() : BigInt64Array > : ^^^^^^^^^^^^^ >arr.subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >arr : BigInt64Array > : ^^^^^^^^^^^^^ >subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ arr.subarray(0); >arr.subarray(0) : BigInt64Array > : ^^^^^^^^^^^^^ >arr.subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >arr : BigInt64Array > : ^^^^^^^^^^^^^ >subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -41,11 +41,11 @@ function bigInt64ArraySubarray() { >arr.subarray(0, 10) : BigInt64Array > : ^^^^^^^^^^^^^ >arr.subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >arr : BigInt64Array > : ^^^^^^^^^^^^^ >subarray : (begin?: number, end?: number) => BigInt64Array -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >10 : 10 diff --git a/tests/baselines/reference/bigintWithLib.types b/tests/baselines/reference/bigintWithLib.types index b44eb291991b0..71d7e3ffc7f34 100644 --- a/tests/baselines/reference/bigintWithLib.types +++ b/tests/baselines/reference/bigintWithLib.types @@ -40,11 +40,11 @@ bigintVal = BigInt.asIntN(8, 0xFFFFn); >BigInt.asIntN(8, 0xFFFFn) : bigint > : ^^^^^^ >BigInt.asIntN : (bits: number, int: bigint) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >BigInt : BigIntConstructor > : ^^^^^^^^^^^^^^^^^ >asIntN : (bits: number, int: bigint) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >8 : 8 > : ^ >0xFFFFn : 65535n @@ -58,11 +58,11 @@ bigintVal = BigInt.asUintN(8, 0xFFFFn); >BigInt.asUintN(8, 0xFFFFn) : bigint > : ^^^^^^ >BigInt.asUintN : (bits: number, int: bigint) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >BigInt : BigIntConstructor > : ^^^^^^^^^^^^^^^^^ >asUintN : (bits: number, int: bigint) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >8 : 8 > : ^ >0xFFFFn : 65535n @@ -88,11 +88,11 @@ let stringVal: string = bigintVal.toString(); >bigintVal.toString() : string > : ^^^^^^ >bigintVal.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ stringVal = bigintVal.toString(2); >stringVal = bigintVal.toString(2) : string @@ -102,11 +102,11 @@ stringVal = bigintVal.toString(2); >bigintVal.toString(2) : string > : ^^^^^^ >bigintVal.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ @@ -118,11 +118,11 @@ stringVal = bigintVal.toLocaleString(); >bigintVal.toLocaleString() : string > : ^^^^^^ >bigintVal.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ stringVal = bigintVal.toLocaleString('de-DE'); >stringVal = bigintVal.toLocaleString('de-DE') : string @@ -132,11 +132,11 @@ stringVal = bigintVal.toLocaleString('de-DE'); >bigintVal.toLocaleString('de-DE') : string > : ^^^^^^ >bigintVal.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'de-DE' : "de-DE" > : ^^^^^^^ @@ -148,11 +148,11 @@ stringVal = bigintVal.toLocaleString('de-DE', { style: 'currency' }); >bigintVal.toLocaleString('de-DE', { style: 'currency' }) : string > : ^^^^^^ >bigintVal.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'de-DE' : "de-DE" > : ^^^^^^^ >{ style: 'currency' } : { style: string; } @@ -170,11 +170,11 @@ stringVal = bigintVal.toLocaleString('de-DE', { style: 'currency', currency: 'EU >bigintVal.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }) : string > : ^^^^^^ >bigintVal.toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ >toLocaleString : (locales?: Intl.LocalesArgument, options?: BigIntToLocaleStringOptions) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >'de-DE' : "de-DE" > : ^^^^^^^ >{ style: 'currency', currency: 'EUR' } : { style: string; currency: string; } @@ -489,11 +489,11 @@ dataView.setBigInt64(1, -1n); >dataView.setBigInt64(1, -1n) : void > : ^^^^ >dataView.setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >-1n : -1n @@ -505,11 +505,11 @@ dataView.setBigInt64(1, -1n, true); >dataView.setBigInt64(1, -1n, true) : void > : ^^^^ >dataView.setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >-1n : -1n @@ -523,11 +523,11 @@ dataView.setBigInt64(1, -1); // should error >dataView.setBigInt64(1, -1) : void > : ^^^^ >dataView.setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigInt64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >-1 : -1 @@ -539,11 +539,11 @@ dataView.setBigUint64(2, 123n); >dataView.setBigUint64(2, 123n) : void > : ^^^^ >dataView.setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >2 : 2 > : ^ >123n : 123n @@ -553,11 +553,11 @@ dataView.setBigUint64(2, 123n, true); >dataView.setBigUint64(2, 123n, true) : void > : ^^^^ >dataView.setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >2 : 2 > : ^ >123n : 123n @@ -569,11 +569,11 @@ dataView.setBigUint64(2, 123); // should error >dataView.setBigUint64(2, 123) : void > : ^^^^ >dataView.setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >setBigUint64 : (byteOffset: number, value: bigint, littleEndian?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >2 : 2 > : ^ >123 : 123 @@ -587,11 +587,11 @@ bigintVal = dataView.getBigInt64(1); >dataView.getBigInt64(1) : bigint > : ^^^^^^ >dataView.getBigInt64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >getBigInt64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ @@ -603,11 +603,11 @@ bigintVal = dataView.getBigInt64(1, true); >dataView.getBigInt64(1, true) : bigint > : ^^^^^^ >dataView.getBigInt64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >getBigInt64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ >true : true @@ -621,11 +621,11 @@ bigintVal = dataView.getBigUint64(2); >dataView.getBigUint64(2) : bigint > : ^^^^^^ >dataView.getBigUint64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >getBigUint64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ @@ -637,11 +637,11 @@ bigintVal = dataView.getBigUint64(2, true); >dataView.getBigUint64(2, true) : bigint > : ^^^^^^ >dataView.getBigUint64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >dataView : DataView > : ^^^^^^^^ >getBigUint64 : (byteOffset: number, littleEndian?: boolean) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ >true : true @@ -679,7 +679,7 @@ new Intl.NumberFormat("fr").format(3000n); >new Intl.NumberFormat("fr").format(3000n) : string > : ^^^^^^ >new Intl.NumberFormat("fr").format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >new Intl.NumberFormat("fr") : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -691,7 +691,7 @@ new Intl.NumberFormat("fr").format(3000n); >"fr" : "fr" > : ^^^^ >format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >3000n : 3000n > : ^^^^^ @@ -699,7 +699,7 @@ new Intl.NumberFormat("fr").format(bigintVal); >new Intl.NumberFormat("fr").format(bigintVal) : string > : ^^^^^^ >new Intl.NumberFormat("fr").format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >new Intl.NumberFormat("fr") : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -711,7 +711,7 @@ new Intl.NumberFormat("fr").format(bigintVal); >"fr" : "fr" > : ^^^^ >format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ diff --git a/tests/baselines/reference/bigintWithoutLib.types b/tests/baselines/reference/bigintWithoutLib.types index b4e99f4e0f7ee..bd6505f206f78 100644 --- a/tests/baselines/reference/bigintWithoutLib.types +++ b/tests/baselines/reference/bigintWithoutLib.types @@ -654,7 +654,7 @@ new Intl.NumberFormat("fr").format(3000n); >new Intl.NumberFormat("fr").format(3000n) : string > : ^^^^^^ >new Intl.NumberFormat("fr").format : (value: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Intl.NumberFormat("fr") : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -666,7 +666,7 @@ new Intl.NumberFormat("fr").format(3000n); >"fr" : "fr" > : ^^^^ >format : (value: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >3000n : 3000n > : ^^^^^ @@ -674,7 +674,7 @@ new Intl.NumberFormat("fr").format(bigintVal); >new Intl.NumberFormat("fr").format(bigintVal) : string > : ^^^^^^ >new Intl.NumberFormat("fr").format : (value: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Intl.NumberFormat("fr") : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -686,7 +686,7 @@ new Intl.NumberFormat("fr").format(bigintVal); >"fr" : "fr" > : ^^^^ >format : (value: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >bigintVal : bigint > : ^^^^^^ diff --git a/tests/baselines/reference/binaryArithmeticControlFlowGraphNotTooLarge.types b/tests/baselines/reference/binaryArithmeticControlFlowGraphNotTooLarge.types index 840705be39ffe..7d3d61fb4e5ea 100644 --- a/tests/baselines/reference/binaryArithmeticControlFlowGraphNotTooLarge.types +++ b/tests/baselines/reference/binaryArithmeticControlFlowGraphNotTooLarge.types @@ -5,9 +5,9 @@ const foo = function (this: any) { >foo : (this: any) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (this: any) { var a, b, c, d, ab, bc, cd, da, blocks = this.blocks; if (this.first) { a = blocks[0] - 1; a = (a << 3) | (a >>> 29); d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878; d = (d << 7) | (d >>> 25); c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194; c = (c << 11) | (c >>> 21); b = ((c & d) | (~c & a)) + blocks[3] - 271733879; b = (b << 19) | (b >>> 13); } else { a = this.h0; b = this.h1; c = this.h2; d = this.h3; a += ((b & c) | (~b & d)) + blocks[0]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[1]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[2]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[3]; b = (b << 19) | (b >>> 13); } a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); a += ((b & c) | (~b & d)) + blocks[4]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[5]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[6]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[7]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[8]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[9]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[10]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[11]; b = (b << 19) | (b >>> 13); a += ((b & c) | (~b & d)) + blocks[12]; a = (a << 3) | (a >>> 29); d += ((a & b) | (~a & c)) + blocks[13]; d = (d << 7) | (d >>> 25); c += ((d & a) | (~d & b)) + blocks[14]; c = (c << 11) | (c >>> 21); b += ((c & d) | (~c & a)) + blocks[15]; b = (b << 19) | (b >>> 13); bc = b & c; a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[4] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[8] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[12] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[1] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[5] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[9] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[13] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[2] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[6] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[10] + 1518500249; c = (c << 9) | (c >>> 23); cd = c & d; b += (cd | (c & a) | da) + blocks[14] + 1518500249; b = (b << 13) | (b >>> 19); bc = b & c; a += (bc | (b & d) | cd) + blocks[3] + 1518500249; a = (a << 3) | (a >>> 29); ab = a & b; d += (ab | (a & c) | bc) + blocks[7] + 1518500249; d = (d << 5) | (d >>> 27); da = d & a; c += (da | (d & b) | ab) + blocks[11] + 1518500249; c = (c << 9) | (c >>> 23); b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249; b = (b << 13) | (b >>> 19); bc = b ^ c; a += (bc ^ d) + blocks[0] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[8] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[4] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[12] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[2] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[10] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[6] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[14] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[1] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[9] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[5] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[13] + 1859775393; b = (b << 15) | (b >>> 17); bc = b ^ c; a += (bc ^ d) + blocks[3] + 1859775393; a = (a << 3) | (a >>> 29); d += (bc ^ a) + blocks[11] + 1859775393; d = (d << 9) | (d >>> 23); da = d ^ a; c += (da ^ b) + blocks[7] + 1859775393; c = (c << 11) | (c >>> 21); b += (da ^ c) + blocks[15] + 1859775393; b = (b << 15) | (b >>> 17); if (this.first) { this.h0 = a + 1732584193 << 0; this.h1 = b - 271733879 << 0; this.h2 = c - 1732584194 << 0; this.h3 = d + 271733878 << 0; this.first = false; } else { this.h0 = this.h0 + a << 0; this.h1 = this.h1 + b << 0; this.h2 = this.h2 + c << 0; this.h3 = this.h3 + d << 0; }} : (this: any) => void -> : ^^^^^^^ ^^^^^^^^^ +> : >this : any var a, b, c, d, ab, bc, cd, da, blocks = this.blocks; diff --git a/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types b/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types index 18892b53b1381..978f91c12d7f2 100644 --- a/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types +++ b/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types @@ -70,23 +70,23 @@ type Destructuring> = (dispatch: D const funcs1 = { >funcs1 : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^^ >{ funcA: (a: boolean): void => {}, funcB: (b: string, bb: string): void => {}, funcC: (c: number, cc: number, ccc: boolean): void => {},} : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^ funcA: (a: boolean): void => {}, >funcA : (a: boolean) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: boolean): void => {} : (a: boolean) => void -> : ^^^^ ^^^^^ +> : >a : boolean > : ^^^^^^^ funcB: (b: string, bb: string): void => {}, >funcB : (b: string, bb: string) => void -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(b: string, bb: string): void => {} : (b: string, bb: string) => void -> : ^^^^ ^^^^^^ ^^^^^ +> : >b : string > : ^^^^^^ >bb : string @@ -94,9 +94,9 @@ const funcs1 = { funcC: (c: number, cc: number, ccc: boolean): void => {}, >funcC : (c: number, cc: number, ccc: boolean) => void -> : ^^^^ ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >(c: number, cc: number, ccc: boolean): void => {} : (c: number, cc: number, ccc: boolean) => void -> : ^^^^ ^^^^^^ ^^^^^^^ ^^^^^ +> : >c : number > : ^^^^^^ >cc : number @@ -107,29 +107,29 @@ const funcs1 = { }; type TFuncs1 = typeof funcs1; >TFuncs1 : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >funcs1 : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ declare function useReduxDispatch1>(destructuring: Destructuring): T; >useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >destructuring : Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ const {} = useReduxDispatch1( >useReduxDispatch1( (d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), })) : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring<{ funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }, T>) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>useReduxDispatch1 : void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }>>(destructuring: Destructuring) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ (d, f) => ({ >(d, f) => ({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), }) : (d: Dispatch, f: { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; }) => { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : Dispatch > : ^^^^^^^^^^^^^ >f : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >({ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), }) : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ funcA: (...p) => d(f.funcA(...p)), // p should be inferrable funcB: (...p) => d(f.funcB(...p)), funcC: (...p) => d(f.funcC(...p)), } : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } @@ -139,7 +139,7 @@ const {} = useReduxDispatch1( >funcA : (a: boolean) => void > : ^^^^^^^^^^^^^^^^^^^^ >(...p) => d(f.funcA(...p)) : (a: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >p : [a: boolean] > : ^^^^^^^^^^^^ >d(f.funcA(...p)) : void @@ -149,11 +149,11 @@ const {} = useReduxDispatch1( >f.funcA(...p) : void > : ^^^^ >f.funcA : (a: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >funcA : (a: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >...p : boolean > : ^^^^^^^ >p : [a: boolean] @@ -163,7 +163,7 @@ const {} = useReduxDispatch1( >funcB : (b: string, bb: string) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(...p) => d(f.funcB(...p)) : (b: string, bb: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >p : [b: string, bb: string] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d(f.funcB(...p)) : void @@ -173,11 +173,11 @@ const {} = useReduxDispatch1( >f.funcB(...p) : void > : ^^^^ >f.funcB : (b: string, bb: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >f : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >funcB : (b: string, bb: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >...p : string > : ^^^^^^ >p : [b: string, bb: string] @@ -187,7 +187,7 @@ const {} = useReduxDispatch1( >funcC : (c: number, cc: number, ccc: boolean) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(...p) => d(f.funcC(...p)) : (c: number, cc: number, ccc: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >p : [c: number, cc: number, ccc: boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d(f.funcC(...p)) : void @@ -197,11 +197,11 @@ const {} = useReduxDispatch1( >f.funcC(...p) : void > : ^^^^ >f.funcC : (c: number, cc: number, ccc: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f : { funcA: (a: boolean) => void; funcB: (b: string, bb: string) => void; funcC: (c: number, cc: number, ccc: boolean) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >funcC : (c: number, cc: number, ccc: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...p : number | boolean > : ^^^^^^^^^^^^^^^^ >p : [c: number, cc: number, ccc: boolean] diff --git a/tests/baselines/reference/bindingPatternContextualTypeDoesNotCauseWidening.types b/tests/baselines/reference/bindingPatternContextualTypeDoesNotCauseWidening.types index 431b1a0ad606e..ca2450227cbfa 100644 --- a/tests/baselines/reference/bindingPatternContextualTypeDoesNotCauseWidening.types +++ b/tests/baselines/reference/bindingPatternContextualTypeDoesNotCauseWidening.types @@ -3,7 +3,7 @@ === bindingPatternContextualTypeDoesNotCauseWidening.ts === declare function pick(keys: T[], obj?: O): Pick; >pick : (keys: T[], obj?: O) => Pick -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >keys : T[] > : ^^^ >obj : O @@ -13,9 +13,9 @@ const _ = pick(['b'], { a: 'a', b: 'b' }); // T: "b" >_ : Pick<{ a: string; b: string; }, "b"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^ >pick : (keys: T[], obj?: O) => Pick -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >['b'] : "b"[] > : ^^^^^ >'b' : "b" @@ -35,7 +35,7 @@ const { } = pick(['b'], { a: 'a', b: 'b' }); // T: "b" | "a" ??? (before fix) >pick(['b'], { a: 'a', b: 'b' }) : Pick<{ a: string; b: string; }, "b"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pick : (keys: T[], obj?: O) => Pick -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >['b'] : "b"[] > : ^^^^^ >'b' : "b" diff --git a/tests/baselines/reference/bindingPatternInParameter01.types b/tests/baselines/reference/bindingPatternInParameter01.types index e9b3c14751fcc..af202bd94976b 100644 --- a/tests/baselines/reference/bindingPatternInParameter01.types +++ b/tests/baselines/reference/bindingPatternInParameter01.types @@ -27,13 +27,13 @@ nestedArray.forEach(([[a, b]]) => { >nestedArray.forEach(([[a, b]]) => { console.log(a, b);}) : void > : ^^^^ >nestedArray.forEach : (callbackfn: (value: number[][], index: number, array: number[][][]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >nestedArray : number[][][] > : ^^^^^^^^^^^^ >forEach : (callbackfn: (value: number[][], index: number, array: number[][][]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >([[a, b]]) => { console.log(a, b);} : ([[a, b]]: number[][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -43,11 +43,11 @@ nestedArray.forEach(([[a, b]]) => { >console.log(a, b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/bitwiseNotOperatorWithAnyOtherType.types b/tests/baselines/reference/bitwiseNotOperatorWithAnyOtherType.types index 877d260b7e1ba..050eb1924bedd 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithAnyOtherType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithAnyOtherType.types @@ -29,7 +29,7 @@ var obj1 = { x:"", y: () => { }}; >obj1 : { x: string; y: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x:"", y: () => { }} : { x: string; y: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ >x : string > : ^^^^^^ >"" : "" @@ -37,7 +37,7 @@ var obj1 = { x:"", y: () => { }}; >y : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : function foo(): any { >foo : () => any diff --git a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types index befe7ba89bb6d..c62212f68a415 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithNumberType.types @@ -101,15 +101,15 @@ var ResultIsNumber5 = ~{ x: 1, y: (n: number) => { return n; } }; >~{ x: 1, y: (n: number) => { return n; } } : number > : ^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number diff --git a/tests/baselines/reference/bitwiseNotOperatorWithStringType.types b/tests/baselines/reference/bitwiseNotOperatorWithStringType.types index 9f96d0f6fbc81..d7bfedf4b0ef7 100644 --- a/tests/baselines/reference/bitwiseNotOperatorWithStringType.types +++ b/tests/baselines/reference/bitwiseNotOperatorWithStringType.types @@ -101,15 +101,15 @@ var ResultIsNumber5 = ~{ x: "", y: (s: string) => { return s; } }; >~{ x: "", y: (s: string) => { return s; } } : number > : ^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string @@ -198,11 +198,11 @@ var ResultIsNumber12 = ~STRING.charAt(0); >STRING.charAt(0) : string > : ^^^^^^ >STRING.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >STRING : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/bivariantInferences.types b/tests/baselines/reference/bivariantInferences.types index 8ebb949f4a4be..2653b2ceafd49 100644 --- a/tests/baselines/reference/bivariantInferences.types +++ b/tests/baselines/reference/bivariantInferences.types @@ -6,7 +6,7 @@ interface Array { equalsShallow(this: ReadonlyArray, other: ReadonlyArray): boolean; >equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >this : readonly T[] > : ^^^^^^^^^^^^ >other : readonly T[] @@ -27,11 +27,11 @@ let x = a.equalsShallow(b); >a.equalsShallow(b) : boolean > : ^^^^^^^ >a.equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T_1[], other: readonly T_1[]) => boolean) | ((this: readonly T_2[], other: readonly T_2[]) => boolean) | ((this: readonly T_3[], other: readonly T_3[]) => boolean) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : (string | number)[] | null[] | undefined[] | {}[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T_1[], other: readonly T_1[]) => boolean) | ((this: readonly T_2[], other: readonly T_2[]) => boolean) | ((this: readonly T_3[], other: readonly T_3[]) => boolean) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : (string | number)[] | null[] | undefined[] | {}[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop1.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop1.types index 5557ed4c781fe..412dcd2dca8af 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop1.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop1.types @@ -3,7 +3,7 @@ === blockScopedBindingsReassignedInLoop1.ts === declare function use(n: number): void; >use : (n: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ @@ -45,7 +45,7 @@ declare function use(n: number): void; >use(++i) : void > : ^^^^ >use : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >++i : number > : ^^^^^^ >i : number diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.types index fe2516a753859..751622875cc0a 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop2.types @@ -31,7 +31,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -94,7 +94,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -161,7 +161,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -230,7 +230,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.types index 8c97a9fd79f00..53cc444a7efb7 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop3.types @@ -31,7 +31,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -74,7 +74,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >f : () => number > : ^^^^^^^^^^^^ >() => a : () => number -> : ^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ @@ -142,7 +142,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -185,7 +185,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >f : () => number > : ^^^^^^^^^^^^ >() => a : () => number -> : ^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ @@ -256,7 +256,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -305,7 +305,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >f : () => number > : ^^^^^^^^^^^^ >() => a : () => number -> : ^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ @@ -382,7 +382,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -431,7 +431,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >f : () => number > : ^^^^^^^^^^^^ >() => a : () => number -> : ^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop4.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop4.types index 0091b3420b48f..8cf123d6a82d9 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop4.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop4.types @@ -35,7 +35,7 @@ function f1() { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop5.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop5.types index 70c4bc49ab9d9..04f78a6cf999f 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop5.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop5.types @@ -31,7 +31,7 @@ for (let x = 1, y = 2; x < y; ++x, --y) { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number diff --git a/tests/baselines/reference/blockScopedBindingsReassignedInLoop6.types b/tests/baselines/reference/blockScopedBindingsReassignedInLoop6.types index 15d16b1861b2c..1459fd90c08bf 100644 --- a/tests/baselines/reference/blockScopedBindingsReassignedInLoop6.types +++ b/tests/baselines/reference/blockScopedBindingsReassignedInLoop6.types @@ -37,7 +37,7 @@ function f1() { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number @@ -131,7 +131,7 @@ function f2() { >a : () => number > : ^^^^^^^^^^^^ >() => x++ + y++ : () => number -> : ^^^^^^^^^^^^ +> : >x++ + y++ : number > : ^^^^^^ >x++ : number diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.types b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.types index 2e03d731a7ed4..33989fec6734f 100644 --- a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.types +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES5.types @@ -3,7 +3,7 @@ === blockScopedSameNameFunctionDeclarationES5.ts === function foo(a: number) { >foo : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -70,7 +70,7 @@ foo(10); >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -78,5 +78,5 @@ foo(); // not ok - needs number >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.types b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.types index 3d9e025cbbeee..5820765d029d3 100644 --- a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.types +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationES6.types @@ -3,7 +3,7 @@ === blockScopedSameNameFunctionDeclarationES6.ts === function foo(a: number) { >foo : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -70,7 +70,7 @@ foo(10); >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -78,5 +78,5 @@ foo(); // not ok - needs number >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.types b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.types index bace58b4ad960..940f990526e45 100644 --- a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.types +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.types @@ -7,7 +7,7 @@ function foo(a: number) { >foo : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -60,7 +60,7 @@ function foo(a: number) { >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -68,13 +68,13 @@ function foo(a: number) { >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ } foo(10); >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -82,5 +82,5 @@ foo(); // not ok - needs number >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.types b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.types index 11b1dde474a57..b826a5f8b8f6d 100644 --- a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.types +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES6.types @@ -7,7 +7,7 @@ function foo(a: number) { >foo : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -60,7 +60,7 @@ function foo(a: number) { >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -68,13 +68,13 @@ function foo(a: number) { >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ } foo(10); >foo(10) : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >10 : 10 > : ^^ @@ -82,5 +82,5 @@ foo(); // not ok - needs number >foo() : void > : ^^^^ >foo : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/blockScopedVariablesUseBeforeDef.types b/tests/baselines/reference/blockScopedVariablesUseBeforeDef.types index e80abec0d3099..d6aec03d7489b 100644 --- a/tests/baselines/reference/blockScopedVariablesUseBeforeDef.types +++ b/tests/baselines/reference/blockScopedVariablesUseBeforeDef.types @@ -24,7 +24,7 @@ function foo1() { >a : () => any > : ^^^^^^^^^ >() => x : () => any -> : ^^^^^^^^^ +> : >x : any > : ^^^ @@ -41,7 +41,7 @@ function foo2() { >a : () => any > : ^^^^^^^^^ >function () { return x; } : () => any -> : ^^^^^^^^^ +> : >x : any > : ^^^ @@ -99,7 +99,7 @@ function foo5() { >x : () => () => any > : ^^^^^^^^^^^^^^^ >() => y : () => () => any -> : ^^^^^^^^^^^^^^^ +> : >y : () => () => any > : ^^^^^^^^^^^^^^^ @@ -107,7 +107,7 @@ function foo5() { >y : () => () => any > : ^^^^^^^^^^^^^^^ >() => x : () => () => any -> : ^^^^^^^^^^^^^^^ +> : >x : () => () => any > : ^^^^^^^^^^^^^^^ } @@ -347,11 +347,11 @@ function foo15() { >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -359,11 +359,11 @@ function foo15() { >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -371,7 +371,7 @@ function foo15() { >b : () => number > : ^^^^^^^^^^^^ >() => a : () => number -> : ^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/bluebirdStaticThis.types b/tests/baselines/reference/bluebirdStaticThis.types index a683bda1c9076..6e40ccb8cda62 100644 --- a/tests/baselines/reference/bluebirdStaticThis.types +++ b/tests/baselines/reference/bluebirdStaticThis.types @@ -13,21 +13,21 @@ export declare class Promise implements Promise.Thenable { constructor(callback: (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void); >callback : (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void -> : ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >resolve : (thenableOrResult: R | Promise.Thenable) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >thenableOrResult : R | Promise.Thenable > : ^^^^^^^^^^^^^^^^^^^^^^^ >Promise : any > : ^^^ >reject : (error: any) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ static try(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; >try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -43,7 +43,7 @@ export declare class Promise implements Promise.Thenable { static try(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; >try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -57,7 +57,7 @@ export declare class Promise implements Promise.Thenable { static attempt(dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; >attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -73,7 +73,7 @@ export declare class Promise implements Promise.Thenable { static attempt(dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; >attempt : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -87,7 +87,7 @@ export declare class Promise implements Promise.Thenable { static method(dit: typeof Promise, fn: Function): Function; >method : (dit: typeof Promise, fn: Function) => Function -> : ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -97,7 +97,7 @@ export declare class Promise implements Promise.Thenable { static resolve(dit: typeof Promise): Promise; >resolve : { (dit: typeof Promise): Promise; (dit: typeof Promise, value: Promise.Thenable): Promise; (dit: typeof Promise, value: R_1): Promise; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -105,7 +105,7 @@ export declare class Promise implements Promise.Thenable { static resolve(dit: typeof Promise, value: Promise.Thenable): Promise; >resolve : { (dit: typeof Promise): Promise; (dit: typeof Promise, value: Promise.Thenable): Promise; (dit: typeof Promise, value: R_1): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -117,7 +117,7 @@ export declare class Promise implements Promise.Thenable { static resolve(dit: typeof Promise, value: R): Promise; >resolve : { (dit: typeof Promise): Promise; (dit: typeof Promise, value: Promise.Thenable): Promise; (dit: typeof Promise, value: R): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -127,7 +127,7 @@ export declare class Promise implements Promise.Thenable { static reject(dit: typeof Promise, reason: any): Promise; >reject : { (dit: typeof Promise, reason: any): Promise; (dit: typeof Promise, reason: any): Promise; } -> : ^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -137,7 +137,7 @@ export declare class Promise implements Promise.Thenable { static reject(dit: typeof Promise, reason: any): Promise; >reject : { (dit: typeof Promise, reason: any): Promise; (dit: typeof Promise, reason: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -147,7 +147,7 @@ export declare class Promise implements Promise.Thenable { static defer(dit: typeof Promise): Promise.Resolver; >defer : (dit: typeof Promise) => Promise.Resolver -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -157,7 +157,7 @@ export declare class Promise implements Promise.Thenable { static cast(dit: typeof Promise, value: Promise.Thenable): Promise; >cast : { (dit: typeof Promise, value: Promise.Thenable): Promise; (dit: typeof Promise, value: R_1): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -169,7 +169,7 @@ export declare class Promise implements Promise.Thenable { static cast(dit: typeof Promise, value: R): Promise; >cast : { (dit: typeof Promise, value: Promise.Thenable): Promise; (dit: typeof Promise, value: R): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -179,7 +179,7 @@ export declare class Promise implements Promise.Thenable { static bind(dit: typeof Promise, thisArg: any): Promise; >bind : (dit: typeof Promise, thisArg: any) => Promise -> : ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -189,7 +189,7 @@ export declare class Promise implements Promise.Thenable { static is(dit: typeof Promise, value: any): boolean; >is : (dit: typeof Promise, value: any) => boolean -> : ^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -199,7 +199,7 @@ export declare class Promise implements Promise.Thenable { static longStackTraces(dit: typeof Promise): void; >longStackTraces : (dit: typeof Promise) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -207,7 +207,7 @@ export declare class Promise implements Promise.Thenable { static delay(dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; >delay : { (dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; (dit: typeof Promise, value: R_1, ms: number): Promise; (dit: typeof Promise, ms: number): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -221,7 +221,7 @@ export declare class Promise implements Promise.Thenable { static delay(dit: typeof Promise, value: R, ms: number): Promise; >delay : { (dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; (dit: typeof Promise, value: R, ms: number): Promise; (dit: typeof Promise, ms: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -233,7 +233,7 @@ export declare class Promise implements Promise.Thenable { static delay(dit: typeof Promise, ms: number): Promise; >delay : { (dit: typeof Promise, value: Promise.Thenable, ms: number): Promise; (dit: typeof Promise, value: R_1, ms: number): Promise; (dit: typeof Promise, ms: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -243,7 +243,7 @@ export declare class Promise implements Promise.Thenable { static promisify(dit: typeof Promise, nodeFunction: Function, receiver?: any): Function; >promisify : (dit: typeof Promise, nodeFunction: Function, receiver?: any) => Function -> : ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -255,7 +255,7 @@ export declare class Promise implements Promise.Thenable { static promisifyAll(dit: typeof Promise, target: Object): Object; >promisifyAll : (dit: typeof Promise, target: Object) => Object -> : ^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -265,7 +265,7 @@ export declare class Promise implements Promise.Thenable { static coroutine(dit: typeof Promise, generatorFunction: Function): Function; >coroutine : (dit: typeof Promise, generatorFunction: Function) => Function -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -275,7 +275,7 @@ export declare class Promise implements Promise.Thenable { static spawn(dit: typeof Promise, generatorFunction: Function): Promise; >spawn : (dit: typeof Promise, generatorFunction: Function) => Promise -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -285,7 +285,7 @@ export declare class Promise implements Promise.Thenable { static noConflict(dit: typeof Promise): typeof Promise; >noConflict : (dit: typeof Promise) => typeof Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -295,19 +295,19 @@ export declare class Promise implements Promise.Thenable { static onPossiblyUnhandledRejection(dit: typeof Promise, handler: (reason: any) => any): void; >onPossiblyUnhandledRejection : (dit: typeof Promise, handler: (reason: any) => any) => void -> : ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >handler : (reason: any) => any -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >reason : any > : ^^^ static all(dit: typeof Promise, values: Promise.Thenable[]>): Promise; >all : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -321,7 +321,7 @@ export declare class Promise implements Promise.Thenable { static all(dit: typeof Promise, values: Promise.Thenable): Promise; >all : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -333,7 +333,7 @@ export declare class Promise implements Promise.Thenable { static all(dit: typeof Promise, values: Promise.Thenable[]): Promise; >all : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -345,7 +345,7 @@ export declare class Promise implements Promise.Thenable { static all(dit: typeof Promise, values: R[]): Promise; >all : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -355,7 +355,7 @@ export declare class Promise implements Promise.Thenable { static props(dit: typeof Promise, object: Promise): Promise; >props : { (dit: typeof Promise, object: Promise): Promise; (dit: typeof Promise, object: Object): Promise; } -> : ^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -365,7 +365,7 @@ export declare class Promise implements Promise.Thenable { static props(dit: typeof Promise, object: Object): Promise; >props : { (dit: typeof Promise, object: Promise): Promise; (dit: typeof Promise, object: Object): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -375,7 +375,7 @@ export declare class Promise implements Promise.Thenable { static settle(dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; >settle : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; (dit: typeof Promise, values: Promise.Thenable): Promise[]>; (dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; (dit: typeof Promise, values: R_3[]): Promise[]>; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -391,7 +391,7 @@ export declare class Promise implements Promise.Thenable { static settle(dit: typeof Promise, values: Promise.Thenable): Promise[]>; >settle : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; (dit: typeof Promise, values: Promise.Thenable): Promise[]>; (dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; (dit: typeof Promise, values: R_3[]): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -405,7 +405,7 @@ export declare class Promise implements Promise.Thenable { static settle(dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; >settle : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; (dit: typeof Promise, values: Promise.Thenable): Promise[]>; (dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; (dit: typeof Promise, values: R_3[]): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -419,7 +419,7 @@ export declare class Promise implements Promise.Thenable { static settle(dit: typeof Promise, values: R[]): Promise[]>; >settle : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise[]>; (dit: typeof Promise, values: Promise.Thenable): Promise[]>; (dit: typeof Promise, values: Promise.Thenable[]): Promise[]>; (dit: typeof Promise, values: R[]): Promise[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -431,7 +431,7 @@ export declare class Promise implements Promise.Thenable { static any(dit: typeof Promise, values: Promise.Thenable[]>): Promise; >any : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -445,7 +445,7 @@ export declare class Promise implements Promise.Thenable { static any(dit: typeof Promise, values: Promise.Thenable): Promise; >any : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -457,7 +457,7 @@ export declare class Promise implements Promise.Thenable { static any(dit: typeof Promise, values: Promise.Thenable[]): Promise; >any : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -469,7 +469,7 @@ export declare class Promise implements Promise.Thenable { static any(dit: typeof Promise, values: R[]): Promise; >any : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -479,7 +479,7 @@ export declare class Promise implements Promise.Thenable { static race(dit: typeof Promise, values: Promise.Thenable[]>): Promise; >race : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -493,7 +493,7 @@ export declare class Promise implements Promise.Thenable { static race(dit: typeof Promise, values: Promise.Thenable): Promise; >race : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -505,7 +505,7 @@ export declare class Promise implements Promise.Thenable { static race(dit: typeof Promise, values: Promise.Thenable[]): Promise; >race : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R_3[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -517,7 +517,7 @@ export declare class Promise implements Promise.Thenable { static race(dit: typeof Promise, values: R[]): Promise; >race : { (dit: typeof Promise, values: Promise.Thenable[]>): Promise; (dit: typeof Promise, values: Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]): Promise; (dit: typeof Promise, values: R[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -527,7 +527,7 @@ export declare class Promise implements Promise.Thenable { static some(dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; >some : { (dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; (dit: typeof Promise, values: R_3[], count: number): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -543,7 +543,7 @@ export declare class Promise implements Promise.Thenable { static some(dit: typeof Promise, values: Promise.Thenable, count: number): Promise; >some : { (dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; (dit: typeof Promise, values: R_3[], count: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -557,7 +557,7 @@ export declare class Promise implements Promise.Thenable { static some(dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; >some : { (dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; (dit: typeof Promise, values: R_3[], count: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -571,7 +571,7 @@ export declare class Promise implements Promise.Thenable { static some(dit: typeof Promise, values: R[], count: number): Promise; >some : { (dit: typeof Promise, values: Promise.Thenable[]>, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable, count: number): Promise; (dit: typeof Promise, values: Promise.Thenable[], count: number): Promise; (dit: typeof Promise, values: R[], count: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -583,7 +583,7 @@ export declare class Promise implements Promise.Thenable { static join(dit: typeof Promise, ...values: Promise.Thenable[]): Promise; >join : { (dit: typeof Promise, ...values: Promise.Thenable[]): Promise; (dit: typeof Promise, ...values: R_1[]): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -595,7 +595,7 @@ export declare class Promise implements Promise.Thenable { static join(dit: typeof Promise, ...values: R[]): Promise; >join : { (dit: typeof Promise, ...values: Promise.Thenable[]): Promise; (dit: typeof Promise, ...values: R[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -605,7 +605,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_2, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => U_5): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -617,7 +617,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -629,7 +629,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => U): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R, index: number, arrayLength: number) => U): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_2, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => U_5): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -641,7 +641,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => U -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -651,7 +651,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => U_5): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -661,7 +661,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -673,7 +673,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => U): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R, index: number, arrayLength: number) => U): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => U_5): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -683,7 +683,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => U -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -693,7 +693,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_4, index: number, arrayLength: number) => U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => U_5): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -703,7 +703,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -715,7 +715,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_4, index: number, arrayLength: number) => U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; (dit: typeof Promise, values: R_6[], mapper: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -725,7 +725,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => U -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -735,7 +735,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_4, index: number, arrayLength: number) => U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_6, index: number, arrayLength: number) => U_6): Promise; (dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -743,7 +743,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -755,7 +755,7 @@ export declare class Promise implements Promise.Thenable { static map(dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; >map : { (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, mapper: (item: R_2, index: number, arrayLength: number) => U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, mapper: (item: R_4, index: number, arrayLength: number) => U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], mapper: (item: R_6, index: number, arrayLength: number) => U_6): Promise; (dit: typeof Promise, values: R_7[], mapper: (item: R_7, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R[], mapper: (item: R, index: number, arrayLength: number) => U): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -763,7 +763,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >mapper : (item: R, index: number, arrayLength: number) => U -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -773,7 +773,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => U_1, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => U_3, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => U_5, initialValue?: U_5): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -785,7 +785,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -801,7 +801,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => U_3, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => U_5, initialValue?: U_5): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -813,7 +813,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => U -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -827,7 +827,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => U_3, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => U_5, initialValue?: U_5): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -837,7 +837,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -853,7 +853,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => U_5, initialValue?: U_5): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -863,7 +863,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => U -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -877,7 +877,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => U_4, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => U_5, initialValue?: U_5): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -887,7 +887,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -903,7 +903,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => U_4, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_5): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; (dit: typeof Promise, values: R_6[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -913,7 +913,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => U -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -927,7 +927,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => U_4, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_5): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => U_6, initialValue?: U_6): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => U_7, initialValue?: U_7): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -935,7 +935,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -951,7 +951,7 @@ export declare class Promise implements Promise.Thenable { static reduce(dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; >reduce : { (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_1, current: R_1, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_1): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, reducer: (total: U_2, current: R_2, index: number, arrayLength: number) => U_2, initialValue?: U_2): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_3, current: R_3, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_3): Promise; (dit: typeof Promise, values: Promise.Thenable, reducer: (total: U_4, current: R_4, index: number, arrayLength: number) => U_4, initialValue?: U_4): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_5, current: R_5, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_5): Promise; (dit: typeof Promise, values: Promise.Thenable[], reducer: (total: U_6, current: R_6, index: number, arrayLength: number) => U_6, initialValue?: U_6): Promise; (dit: typeof Promise, values: R_7[], reducer: (total: U_7, current: R_7, index: number, arrayLength: number) => Promise.Thenable, initialValue?: U_7): Promise; (dit: typeof Promise, values: R[], reducer: (total: U, current: R, index: number, arrayLength: number) => U, initialValue?: U): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -959,7 +959,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >reducer : (total: U, current: R, index: number, arrayLength: number) => U -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >total : U > : ^ >current : R @@ -973,7 +973,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_2, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -985,7 +985,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -997,7 +997,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_2, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1009,7 +1009,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => boolean -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1019,7 +1019,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1029,7 +1029,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1041,7 +1041,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_4, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1051,7 +1051,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => boolean -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1061,7 +1061,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_4, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1071,7 +1071,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1083,7 +1083,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_4, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_6[], filterer: (item: R_6, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1093,7 +1093,7 @@ export declare class Promise implements Promise.Thenable { >Promise : any > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => boolean -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1103,7 +1103,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_4, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_6, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1111,7 +1111,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => Promise.Thenable -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1123,7 +1123,7 @@ export declare class Promise implements Promise.Thenable { static filter(dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; >filter : { (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_1, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[]>, filterer: (item: R_2, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_3, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable, filterer: (item: R_4, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_5, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: Promise.Thenable[], filterer: (item: R_6, index: number, arrayLength: number) => boolean): Promise; (dit: typeof Promise, values: R_7[], filterer: (item: R_7, index: number, arrayLength: number) => Promise.Thenable): Promise; (dit: typeof Promise, values: R[], filterer: (item: R, index: number, arrayLength: number) => boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >dit : typeof Promise > : ^^^^^^^^^^^^^^ >Promise : typeof Promise @@ -1131,7 +1131,7 @@ export declare class Promise implements Promise.Thenable { >values : R[] > : ^^^ >filterer : (item: R, index: number, arrayLength: number) => boolean -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >item : R > : ^ >index : number @@ -1144,49 +1144,49 @@ export declare module Promise { export interface Thenable { then(onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; >then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_1): Thenable; (onFulfilled: (value: R) => U_2, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_3, onRejected?: (error: any) => U_3): Thenable; } -> : ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: R) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : R > : ^ >onRejected : (error: any) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ then(onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; >then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U): Thenable; (onFulfilled: (value: R) => U_2, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_3, onRejected?: (error: any) => U_3): Thenable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: R) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : R > : ^ >onRejected : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ then(onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; >then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_2): Thenable; (onFulfilled: (value: R) => U, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U_3, onRejected?: (error: any) => U_3): Thenable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: R) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : R > : ^ >onRejected : (error: any) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ then(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; >then : { (onFulfilled: (value: R) => Thenable, onRejected: (error: any) => Thenable): Thenable; (onFulfilled: (value: R) => Thenable, onRejected?: (error: any) => U_2): Thenable; (onFulfilled: (value: R) => U_3, onRejected: (error: any) => Thenable): Thenable; (onFulfilled?: (value: R) => U, onRejected?: (error: any) => U): Thenable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >onFulfilled : (value: R) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : R > : ^ >onRejected : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ } @@ -1226,11 +1226,11 @@ fooProm = Promise.try(Promise, () => { >Promise.try(Promise, () => { return foo;}) : Promise > : ^^^^^^^^^^^^ >Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >() => { return foo;} : () => Foo @@ -1249,11 +1249,11 @@ fooProm = Promise.try(Promise, () => { >Promise.try(Promise, () => { return foo;}, arr) : Promise > : ^^^^^^^^^^^^ >Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >() => { return foo;} : () => Foo @@ -1275,11 +1275,11 @@ fooProm = Promise.try(Promise, () => { >Promise.try(Promise, () => { return foo;}, arr, x) : Promise > : ^^^^^^^^^^^^ >Promise.try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >try : { (dit: typeof Promise, fn: () => Promise.Thenable, args?: any[], ctx?: any): Promise; (dit: typeof Promise, fn: () => R_1, args?: any[], ctx?: any): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >Promise : typeof Promise > : ^^^^^^^^^^^^^^ >() => { return foo;} : () => Foo diff --git a/tests/baselines/reference/booleanFilterAnyArray.types b/tests/baselines/reference/booleanFilterAnyArray.types index f3e9739a263f8..a2910c4596f5a 100644 --- a/tests/baselines/reference/booleanFilterAnyArray.types +++ b/tests/baselines/reference/booleanFilterAnyArray.types @@ -14,17 +14,17 @@ interface BulleanConstructor { interface Ari { filter(cb1: (value: T) => value is S): T extends any ? Ari : Ari; >filter : { (cb1: (value: T) => value is S): T extends any ? Ari : Ari; (cb2: (value: T) => unknown): Ari; } -> : ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >cb1 : (value: T) => value is S -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ filter(cb2: (value: T) => unknown): Ari; >filter : { (cb1: (value: T) => value is S): T extends any ? Ari : Ari; (cb2: (value: T) => unknown): Ari; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >cb2 : (value: T) => unknown -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ } @@ -46,11 +46,11 @@ var xs = anys.filter(Bullean) >anys.filter(Bullean) : Ari > : ^^^^^^^^ >anys.filter : { (cb1: (value: any) => value is S): Ari; (cb2: (value: any) => unknown): Ari; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >anys : Ari > : ^^^^^^^^ >filter : { (cb1: (value: any) => value is S): Ari; (cb2: (value: any) => unknown): Ari; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bullean : BulleanConstructor > : ^^^^^^^^^^^^^^^^^^ @@ -68,11 +68,11 @@ var ys = realanys.filter(Boolean) >realanys.filter(Boolean) : any[] > : ^^^^^ >realanys.filter : { (predicate: (value: any, index: number, array: any[]) => value is S, thisArg?: any): S[]; (predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >realanys : any[] > : ^^^^^ >filter : { (predicate: (value: any, index: number, array: any[]) => value is S, thisArg?: any): S[]; (predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >Boolean : BooleanConstructor > : ^^^^^^^^^^^^^^^^^^ @@ -100,13 +100,13 @@ var foor = foo.filter(x => x.name) >foo.filter(x => x.name) : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >foo.filter : { (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^ >foo : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => value is S, thisArg?: any): S[]; (predicate: (value: { name: string; }, index: number, array: { name: string; }[]) => unknown, thisArg?: any): { name: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^ >x => x.name : (x: { name: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { name: string; } > : ^^^^^^^^^^^^^^^^^ >x.name : string @@ -126,7 +126,7 @@ var foos = [true, true, false, null].filter((thing): thing is boolean => thing ! >[true, true, false, null].filter((thing): thing is boolean => thing !== null) : boolean[] > : ^^^^^^^^^ >[true, true, false, null].filter : { (predicate: (value: boolean, index: number, array: boolean[]) => value is S, thisArg?: any): S[]; (predicate: (value: boolean, index: number, array: boolean[]) => unknown, thisArg?: any): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >[true, true, false, null] : boolean[] > : ^^^^^^^^^ >true : true @@ -136,9 +136,9 @@ var foos = [true, true, false, null].filter((thing): thing is boolean => thing ! >false : false > : ^^^^^ >filter : { (predicate: (value: boolean, index: number, array: boolean[]) => value is S, thisArg?: any): S[]; (predicate: (value: boolean, index: number, array: boolean[]) => unknown, thisArg?: any): boolean[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >(thing): thing is boolean => thing !== null : (thing: boolean) => thing is boolean -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >thing : boolean > : ^^^^^^^ >thing !== null : boolean diff --git a/tests/baselines/reference/booleanLiteralTypes1.types b/tests/baselines/reference/booleanLiteralTypes1.types index 3159ede392981..566aac3904040 100644 --- a/tests/baselines/reference/booleanLiteralTypes1.types +++ b/tests/baselines/reference/booleanLiteralTypes1.types @@ -48,7 +48,7 @@ function f1() { function f2(a: true | false, b: boolean) { >f2 : (a: true | false, b: boolean) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true @@ -77,7 +77,7 @@ function f2(a: true | false, b: boolean) { function f3(a: true | false, b: true | false) { >f3 : (a: true | false, b: true | false) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true @@ -122,7 +122,7 @@ function f3(a: true | false, b: true | false) { function f4(t: true, f: false) { >f4 : (t: true, f: false) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >t : true > : ^^^^ >true : true @@ -191,7 +191,7 @@ function f4(t: true, f: false) { declare function g(x: true): string; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : true > : ^^^^ >true : true @@ -199,7 +199,7 @@ declare function g(x: true): string; declare function g(x: false): boolean; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : false > : ^^^^^ >false : false @@ -207,13 +207,13 @@ declare function g(x: false): boolean; declare function g(x: boolean): number; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : boolean > : ^^^^^^^ function f5(b: boolean) { >f5 : (b: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : boolean > : ^^^^^^^ @@ -223,7 +223,7 @@ function f5(b: boolean) { >g(true) : string > : ^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >true : true > : ^^^^ @@ -233,7 +233,7 @@ function f5(b: boolean) { >g(false) : boolean > : ^^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -243,14 +243,14 @@ function f5(b: boolean) { >g(b) : number > : ^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : boolean > : ^^^^^^^ } function assertNever(x: never): never { >assertNever : (x: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -265,7 +265,7 @@ function assertNever(x: never): never { function f10(x: true | false) { >f10 : (x: true | false) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -293,7 +293,7 @@ function f10(x: true | false) { function f11(x: true | false) { >f11 : (x: true | false) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -321,14 +321,14 @@ function f11(x: true | false) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } function f12(x: true | false) { >f12 : (x: true | false) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -353,7 +353,7 @@ function f12(x: true | false) { function f13(x: true | false) { >f13 : (x: true | false) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -402,7 +402,7 @@ type Item = function f20(x: Item) { >f20 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -438,7 +438,7 @@ function f20(x: Item) { function f21(x: Item) { >f21 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -474,7 +474,7 @@ function f21(x: Item) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } diff --git a/tests/baselines/reference/booleanLiteralTypes2.types b/tests/baselines/reference/booleanLiteralTypes2.types index 3e724f39efcdf..e594f53f3a9f2 100644 --- a/tests/baselines/reference/booleanLiteralTypes2.types +++ b/tests/baselines/reference/booleanLiteralTypes2.types @@ -48,7 +48,7 @@ function f1() { function f2(a: true | false, b: boolean) { >f2 : (a: true | false, b: boolean) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true @@ -77,7 +77,7 @@ function f2(a: true | false, b: boolean) { function f3(a: true | false, b: true | false) { >f3 : (a: true | false, b: true | false) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true @@ -122,7 +122,7 @@ function f3(a: true | false, b: true | false) { function f4(t: true, f: false) { >f4 : (t: true, f: false) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >t : true > : ^^^^ >true : true @@ -191,7 +191,7 @@ function f4(t: true, f: false) { declare function g(x: true): string; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : true > : ^^^^ >true : true @@ -199,7 +199,7 @@ declare function g(x: true): string; declare function g(x: false): boolean; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : false > : ^^^^^ >false : false @@ -207,13 +207,13 @@ declare function g(x: false): boolean; declare function g(x: boolean): number; >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : boolean > : ^^^^^^^ function f5(b: boolean) { >f5 : (b: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : boolean > : ^^^^^^^ @@ -223,7 +223,7 @@ function f5(b: boolean) { >g(true) : string > : ^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >true : true > : ^^^^ @@ -233,7 +233,7 @@ function f5(b: boolean) { >g(false) : boolean > : ^^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -243,14 +243,14 @@ function f5(b: boolean) { >g(b) : number > : ^^^^^^ >g : { (x: true): string; (x: false): boolean; (x: boolean): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : boolean > : ^^^^^^^ } function assertNever(x: never): never { >assertNever : (x: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -265,7 +265,7 @@ function assertNever(x: never): never { function f10(x: true | false) { >f10 : (x: true | false) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -293,7 +293,7 @@ function f10(x: true | false) { function f11(x: true | false) { >f11 : (x: true | false) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -321,14 +321,14 @@ function f11(x: true | false) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } function f12(x: true | false) { >f12 : (x: true | false) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -353,7 +353,7 @@ function f12(x: true | false) { function f13(x: true | false) { >f13 : (x: true | false) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -402,7 +402,7 @@ type Item = function f20(x: Item) { >f20 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -438,7 +438,7 @@ function f20(x: Item) { function f21(x: Item) { >f21 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -474,7 +474,7 @@ function f21(x: Item) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } diff --git a/tests/baselines/reference/booleanLiteralsContextuallyTypedFromUnion.types b/tests/baselines/reference/booleanLiteralsContextuallyTypedFromUnion.types index e84127e82e19d..d8b75e99ff336 100644 --- a/tests/baselines/reference/booleanLiteralsContextuallyTypedFromUnion.types +++ b/tests/baselines/reference/booleanLiteralsContextuallyTypedFromUnion.types @@ -115,9 +115,9 @@ type ComponentProps = let Funk = (_props: ComponentProps) =>
Hello
; >Funk : (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >(_props: ComponentProps) =>
Hello
: (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : >_props : ComponentProps > : ^^^^^^^^^^^^^^ >
Hello
: JSX.Element @@ -131,11 +131,11 @@ let Fail1 = () => { }} optionalBool={true} /> >Fail1 : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() => { }} optionalBool={true} /> : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : > { }} optionalBool={true} /> : JSX.Element > : ^^^^^^^^^^^ >Funk : (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >mandatoryFn : () => void > : ^^^^^^^^^^ >() => { } : () => void @@ -149,11 +149,11 @@ let Fail2 = () => { }} optionalBool={true as true} /> >Fail2 : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() => { }} optionalBool={true as true} /> : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : > { }} optionalBool={true as true} /> : JSX.Element > : ^^^^^^^^^^^ >Funk : (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >mandatoryFn : () => void > : ^^^^^^^^^^ >() => { } : () => void @@ -181,11 +181,11 @@ let Fail3 = () => { }} optionalBool={True} /> >Fail3 : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() => { }} optionalBool={True} /> : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : > { }} optionalBool={True} /> : JSX.Element > : ^^^^^^^^^^^ >Funk : (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >mandatoryFn : () => void > : ^^^^^^^^^^ >() => { } : () => void @@ -199,7 +199,7 @@ let attrs2 = { optionalBool: true as true, mandatoryFn: () => { } } >attrs2 : { optionalBool: true; mandatoryFn: () => void; } > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ optionalBool: true as true, mandatoryFn: () => { } } : { optionalBool: true; mandatoryFn: () => void; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ >optionalBool : true > : ^^^^ >true as true : true @@ -211,17 +211,17 @@ let attrs2 = { optionalBool: true as true, mandatoryFn: () => { } } >mandatoryFn : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : let Success = () => >Success : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() => : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : > : JSX.Element > : ^^^^^^^^^^^ >Funk : (_props: ComponentProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >attrs2 : { optionalBool: true; mandatoryFn: () => void; } > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/bundlerSyntaxRestrictions(module=esnext).types b/tests/baselines/reference/bundlerSyntaxRestrictions(module=esnext).types index 80e63f4693976..43f940649de61 100644 --- a/tests/baselines/reference/bundlerSyntaxRestrictions(module=esnext).types +++ b/tests/baselines/reference/bundlerSyntaxRestrictions(module=esnext).types @@ -3,7 +3,7 @@ === /node_modules/@types/node/index.d.ts === declare var require: (...args: any[]) => any; >require : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -14,7 +14,7 @@ declare module "fs" { export function readFileSync(path: string, encoding?: string): string; >readFileSync : (path: string, encoding?: string) => string -> : ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >path : string > : ^^^^^^ >encoding : string @@ -55,7 +55,7 @@ const _ = require("./a"); >require("./a") : typeof _ > : ^^^^^^^^ >require : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >"./a" : "./a" > : ^^^^^ diff --git a/tests/baselines/reference/bundlerSyntaxRestrictions(module=preserve).types b/tests/baselines/reference/bundlerSyntaxRestrictions(module=preserve).types index 80e63f4693976..43f940649de61 100644 --- a/tests/baselines/reference/bundlerSyntaxRestrictions(module=preserve).types +++ b/tests/baselines/reference/bundlerSyntaxRestrictions(module=preserve).types @@ -3,7 +3,7 @@ === /node_modules/@types/node/index.d.ts === declare var require: (...args: any[]) => any; >require : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -14,7 +14,7 @@ declare module "fs" { export function readFileSync(path: string, encoding?: string): string; >readFileSync : (path: string, encoding?: string) => string -> : ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >path : string > : ^^^^^^ >encoding : string @@ -55,7 +55,7 @@ const _ = require("./a"); >require("./a") : typeof _ > : ^^^^^^^^ >require : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >"./a" : "./a" > : ^^^^^ diff --git a/tests/baselines/reference/cachedContextualTypes.types b/tests/baselines/reference/cachedContextualTypes.types index 827912b90957c..bdb0c80adf665 100644 --- a/tests/baselines/reference/cachedContextualTypes.types +++ b/tests/baselines/reference/cachedContextualTypes.types @@ -5,7 +5,7 @@ declare function createInstance any, R extends InstanceType>(ctor: Ctor, ...args: ConstructorParameters): R; >createInstance : any, R extends InstanceType>(ctor: Ctor, ...args: ConstructorParameters) => R -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ >ctor : Ctor @@ -16,11 +16,11 @@ declare function createInstance any, R exte export interface IMenuWorkbenchToolBarOptions { toolbarOptions: { >toolbarOptions : { foo(bar: string): string; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ foo(bar: string): string >foo : (bar: string) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : string > : ^^^^^^ @@ -43,21 +43,21 @@ createInstance(MenuWorkbenchToolBar, { >createInstance(MenuWorkbenchToolBar, { toolbarOptions: { foo(bar) { return bar; } }}) : MenuWorkbenchToolBar > : ^^^^^^^^^^^^^^^^^^^^ >createInstance : any, R extends InstanceType>(ctor: Ctor, ...args: ConstructorParameters) => R -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >MenuWorkbenchToolBar : typeof MenuWorkbenchToolBar > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ toolbarOptions: { foo(bar) { return bar; } }} : { toolbarOptions: { foo(bar: string): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ toolbarOptions: { >toolbarOptions : { foo(bar: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >{ foo(bar) { return bar; } } : { foo(bar: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ foo(bar) { return bar; } >foo : (bar: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >bar : string > : ^^^^^^ >bar : string diff --git a/tests/baselines/reference/callChain.3.types b/tests/baselines/reference/callChain.3.types index 16a6639e28c85..c68cc473dbcac 100644 --- a/tests/baselines/reference/callChain.3.types +++ b/tests/baselines/reference/callChain.3.types @@ -7,9 +7,9 @@ declare function absorb(): T; declare const a: { m?(obj: {x: T}): T } | undefined; >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >obj : { x: T; } > : ^^^^^ ^^^ >x : T @@ -21,11 +21,11 @@ const n1: number = a?.m?.({x: 12 }); // should be an error (`undefined` is not a >a?.m?.({x: 12 }) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: 12 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -39,11 +39,11 @@ const n2: number = a?.m?.({x: absorb()}); // likewise >a?.m?.({x: absorb()}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: absorb()} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -59,11 +59,11 @@ const n3: number | undefined = a?.m?.({x: 12}); // should be ok >a?.m?.({x: 12}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -77,11 +77,11 @@ const n4: number | undefined = a?.m?.({x: absorb()}); // likewise >a?.m?.({x: absorb()}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: absorb()} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -98,11 +98,11 @@ let t1 = a?.m?.({x: 12}); >a?.m?.({x: 12}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -118,15 +118,15 @@ t1 = a!.m!({x: 12}); >a!.m!({x: 12}) : number > : ^^^^^^ >a!.m! : (obj: { x: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a!.m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a! : { m?(obj: { x: T; }): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^ >a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >m : ((obj: { x: T; }) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number diff --git a/tests/baselines/reference/callChain.types b/tests/baselines/reference/callChain.types index 0861d1c5c8e39..6401da00acb53 100644 --- a/tests/baselines/reference/callChain.types +++ b/tests/baselines/reference/callChain.types @@ -3,7 +3,7 @@ === callChain.ts === declare const o1: undefined | ((...args: any[]) => number); >o1 : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >args : any[] > : ^^^^^ @@ -11,13 +11,13 @@ o1?.(); >o1?.() : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o1 : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ o1?.(1); >o1?.(1) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o1 : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -25,7 +25,7 @@ o1?.(...[1, 2]); >o1?.(...[1, 2]) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o1 : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >...[1, 2] : number > : ^^^^^^ >[1, 2] : [number, number] @@ -39,7 +39,7 @@ o1?.(1, ...[2, 3], 4); >o1?.(1, ...[2, 3], 4) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o1 : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >...[2, 3] : number @@ -57,7 +57,7 @@ declare const o2: undefined | { b: (...args: any[]) => number }; >o2 : { b: (...args: any[]) => number; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >b : (...args: any[]) => number -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -65,21 +65,21 @@ o2?.b(); >o2?.b() : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ o2?.b(1); >o2?.b(1) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -87,11 +87,11 @@ o2?.b(...[1, 2]); >o2?.b(...[1, 2]) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >...[1, 2] : number > : ^^^^^^ >[1, 2] : [number, number] @@ -105,11 +105,11 @@ o2?.b(1, ...[2, 3], 4); >o2?.b(1, ...[2, 3], 4) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >...[2, 3] : number @@ -127,9 +127,9 @@ o2?.["b"](); >o2?.["b"]() : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.["b"] : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ @@ -137,9 +137,9 @@ o2?.["b"](1); >o2?.["b"](1) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.["b"] : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >1 : 1 @@ -149,9 +149,9 @@ o2?.["b"](...[1, 2]); >o2?.["b"](...[1, 2]) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.["b"] : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >...[1, 2] : number @@ -167,9 +167,9 @@ o2?.["b"](1, ...[2, 3], 4); >o2?.["b"](1, ...[2, 3], 4) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.["b"] : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >1 : 1 @@ -189,7 +189,7 @@ declare const o3: { b: ((...args: any[]) => { c: string }) | undefined }; >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } > : ^^^^^ ^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >args : any[] > : ^^^^^ >c : string @@ -201,11 +201,11 @@ o3.b?.().c; >o3.b?.() : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -215,11 +215,11 @@ o3.b?.(1).c; >o3.b?.(1) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >c : string | undefined @@ -231,11 +231,11 @@ o3.b?.(...[1, 2]).c; >o3.b?.(...[1, 2]) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...[1, 2] : number > : ^^^^^^ >[1, 2] : [number, number] @@ -253,11 +253,11 @@ o3.b?.(1, ...[2, 3], 4).c; >o3.b?.(1, ...[2, 3], 4) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >...[2, 3] : number @@ -279,11 +279,11 @@ o3.b?.()["c"]; >o3.b?.() : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"c" : "c" > : ^^^ @@ -293,11 +293,11 @@ o3.b?.(1)["c"]; >o3.b?.(1) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >"c" : "c" @@ -309,11 +309,11 @@ o3.b?.(...[1, 2])["c"]; >o3.b?.(...[1, 2]) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...[1, 2] : number > : ^^^^^^ >[1, 2] : [number, number] @@ -331,11 +331,11 @@ o3.b?.(1, ...[2, 3], 4)["c"]; >o3.b?.(1, ...[2, 3], 4) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3.b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >...[2, 3] : number @@ -357,9 +357,9 @@ o3["b"]?.().c; >o3["b"]?.() : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3["b"] : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >c : string | undefined @@ -371,9 +371,9 @@ o3["b"]?.(1).c; >o3["b"]?.(1) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3["b"] : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >1 : 1 @@ -387,9 +387,9 @@ o3["b"]?.(...[1, 2]).c; >o3["b"]?.(...[1, 2]) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3["b"] : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >...[1, 2] : number @@ -409,9 +409,9 @@ o3["b"]?.(1, ...[2, 3], 4).c; >o3["b"]?.(1, ...[2, 3], 4) : { c: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3["b"] : ((...args: any[]) => { c: string; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o3 : { b: ((...args: any[]) => { c: string; }) | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"b" : "b" > : ^^^ >1 : 1 @@ -431,15 +431,15 @@ o3["b"]?.(1, ...[2, 3], 4).c; declare const o4: undefined | ((f: (a: T) => T) => T); >o4 : ((f: (a: T) => T) => T) | undefined -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >f : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ declare function incr(x: number): number; >incr : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -449,9 +449,9 @@ const v: number | undefined = o4?.(incr); >o4?.(incr) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o4 : ((f: (a: T) => T) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >incr : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ // GH#33744 declare const o5: () => undefined | (() => void); @@ -468,36 +468,36 @@ o5()?.(); // GH#36031 o2?.b()!.toString; ->o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o2?.b()!.toString : ((radix?: number) => string) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2?.b()! : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b() : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->toString : ((radix?: number | undefined) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : ((radix?: number) => string) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ o2?.b()!.toString!; ->o2?.b()!.toString! : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->o2?.b()!.toString : ((radix?: number | undefined) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>o2?.b()!.toString! : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ +>o2?.b()!.toString : ((radix?: number) => string) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2?.b()! : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b() : number | undefined > : ^^^^^^^^^^^^^^^^^^ >o2?.b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { b: (...args: any[]) => number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : ((...args: any[]) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->toString : ((radix?: number | undefined) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : ((radix?: number) => string) | undefined +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callChainInference.types b/tests/baselines/reference/callChainInference.types index a792ceba854a1..1b6f9427399a7 100644 --- a/tests/baselines/reference/callChainInference.types +++ b/tests/baselines/reference/callChainInference.types @@ -6,7 +6,7 @@ interface Y { foo(this: T, arg: keyof T): void; >foo : (this: T, arg: keyof T) => void -> : ^ ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >this : T > : ^ >arg : keyof T @@ -33,11 +33,11 @@ if (value) { >value?.foo("a") : void > : ^^^^ >value?.foo : (this: T, arg: keyof T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >value : Y > : ^ >foo : (this: T, arg: keyof T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >"a" : "a" > : ^^^ } @@ -46,11 +46,11 @@ value?.foo("a"); >value?.foo("a") : void | undefined > : ^^^^^^^^^^^^^^^^ >value?.foo : ((this: T, arg: keyof T) => void) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >value : Y | undefined > : ^^^^^^^^^^^^^ >foo : ((this: T, arg: keyof T) => void) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >"a" : "a" > : ^^^ diff --git a/tests/baselines/reference/callGenericFunctionWithIncorrectNumberOfTypeArguments.types b/tests/baselines/reference/callGenericFunctionWithIncorrectNumberOfTypeArguments.types index 1cb67eb9ccc22..ac581c003f71f 100644 --- a/tests/baselines/reference/callGenericFunctionWithIncorrectNumberOfTypeArguments.types +++ b/tests/baselines/reference/callGenericFunctionWithIncorrectNumberOfTypeArguments.types @@ -6,7 +6,7 @@ function f(x: T, y: U): T { return null; } >f : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -18,7 +18,7 @@ var r1 = f(1, ''); >f(1, '') : number > : ^^^^^^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -30,7 +30,7 @@ var r1b = f(1, ''); >f(1, '') : number > : ^^^^^^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -38,9 +38,9 @@ var r1b = f(1, ''); var f2 = (x: T, y: U): T => { return null; } >f2 : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >(x: T, y: U): T => { return null; } : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : >x : T > : ^ >y : U @@ -52,7 +52,7 @@ var r2 = f2(1, ''); >f2(1, '') : number > : ^^^^^^ >f2 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -64,7 +64,7 @@ var r2b = f2(1, ''); >f2(1, '') : number > : ^^^^^^ >f2 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -72,7 +72,7 @@ var r2b = f2(1, ''); var f3: { (x: T, y: U): T; } >f3 : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -84,7 +84,7 @@ var r3 = f3(1, ''); >f3(1, '') : number > : ^^^^^^ >f3 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -96,7 +96,7 @@ var r3b = f3(1, ''); >f3(1, '') : number > : ^^^^^^ >f3 : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -108,7 +108,7 @@ class C { f(x: T, y: U): T { >f : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -123,7 +123,7 @@ var r4 = (new C()).f(1, ''); >(new C()).f(1, '') : number > : ^^^^^^ >(new C()).f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >(new C()) : C > : ^ >new C() : C @@ -131,7 +131,7 @@ var r4 = (new C()).f(1, ''); >C : typeof C > : ^^^^^^^^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -143,7 +143,7 @@ var r4b = (new C()).f(1, ''); >(new C()).f(1, '') : number > : ^^^^^^ >(new C()).f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >(new C()) : C > : ^ >new C() : C @@ -151,7 +151,7 @@ var r4b = (new C()).f(1, ''); >C : typeof C > : ^^^^^^^^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -160,7 +160,7 @@ var r4b = (new C()).f(1, ''); interface I { f(x: T, y: U): T; >f : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -176,11 +176,11 @@ var r5 = i.f(1, ''); >i.f(1, '') : number > : ^^^^^^ >i.f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -192,11 +192,11 @@ var r5b = i.f(1, ''); >i.f(1, '') : number > : ^^^^^^ >i.f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^ >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >'' : "" @@ -208,7 +208,7 @@ class C2 { f(x: T, y: U): T { >f : (x: T, y: U) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -223,7 +223,7 @@ var r6 = (new C2()).f(1, ''); >(new C2()).f(1, '') : unknown > : ^^^^^^^ >(new C2()).f : (x: unknown, y: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >(new C2()) : C2 > : ^^^^^^^^^^^^^^^^^^^^ >new C2() : C2 @@ -231,7 +231,7 @@ var r6 = (new C2()).f(1, ''); >C2 : typeof C2 > : ^^^^^^^^^ >f : (x: unknown, y: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >'' : "" @@ -243,7 +243,7 @@ var r6b = (new C2()).f(1, ''); >(new C2()).f(1, '') : unknown > : ^^^^^^^ >(new C2()).f : (x: unknown, y: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >(new C2()) : C2 > : ^^^^^^^^^^^^^^^^^^^^ >new C2() : C2 @@ -251,7 +251,7 @@ var r6b = (new C2()).f(1, ''); >C2 : typeof C2 > : ^^^^^^^^^ >f : (x: unknown, y: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >'' : "" @@ -260,7 +260,7 @@ var r6b = (new C2()).f(1, ''); interface I2 { f(x: T, y: U): T; >f : (x: T, y: U) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -276,11 +276,11 @@ var r7 = i2.f(1, ''); >i2.f(1, '') : number > : ^^^^^^ >i2.f : (x: number, y: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >i2 : I2 > : ^^^^^^^^^^^^^^^^^^ >f : (x: number, y: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >'' : "" @@ -292,11 +292,11 @@ var r7b = i2.f(1, ''); >i2.f(1, '') : number > : ^^^^^^ >i2.f : (x: number, y: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >i2 : I2 > : ^^^^^^^^^^^^^^^^^^ >f : (x: number, y: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >'' : "" diff --git a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types index 659517a187440..c634e56b30a39 100644 --- a/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types +++ b/tests/baselines/reference/callGenericFunctionWithZeroTypeArguments.types @@ -5,7 +5,7 @@ function f(x: T): T { return null; } >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -15,15 +15,15 @@ var r = f(1); >f(1) : 1 > : ^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ var f2 = (x: T): T => { return null; } >f2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(x: T): T => { return null; } : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : >x : T > : ^ @@ -33,13 +33,13 @@ var r2 = f2(1); >f2(1) : 1 > : ^ >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ var f3: { (x: T): T; } >f3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -49,7 +49,7 @@ var r3 = f3(1); >f3(1) : 1 > : ^ >f3 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -59,7 +59,7 @@ class C { f(x: T): T { >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -72,7 +72,7 @@ var r4 = (new C()).f(1); >(new C()).f(1) : 1 > : ^ >(new C()).f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(new C()) : C > : ^ >new C() : C @@ -80,14 +80,14 @@ var r4 = (new C()).f(1); >C : typeof C > : ^^^^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ interface I { f(x: T): T; >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -101,11 +101,11 @@ var r5 = i.f(1); >i.f(1) : 1 > : ^ >i.f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >i : I > : ^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -115,7 +115,7 @@ class C2 { f(x: T): T { >f : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -128,7 +128,7 @@ var r6 = (new C2()).f(1); >(new C2()).f(1) : unknown > : ^^^^^^^ >(new C2()).f : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(new C2()) : C2 > : ^^^^^^^^^^^ >new C2() : C2 @@ -136,14 +136,14 @@ var r6 = (new C2()).f(1); >C2 : typeof C2 > : ^^^^^^^^^ >f : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ interface I2 { f(x: T): T; >f : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -157,11 +157,11 @@ var r7 = i2.f(1); >i2.f(1) : number > : ^^^^^^ >i2.f : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >i2 : I2 > : ^^^^^^^^^^ >f : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callNonGenericFunctionWithTypeArguments.types b/tests/baselines/reference/callNonGenericFunctionWithTypeArguments.types index 59ee7325d7b2b..b6d26b3ec75af 100644 --- a/tests/baselines/reference/callNonGenericFunctionWithTypeArguments.types +++ b/tests/baselines/reference/callNonGenericFunctionWithTypeArguments.types @@ -6,7 +6,7 @@ function f(x: number) { return null; } >f : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -16,15 +16,15 @@ var r = f(1); >f(1) : any > : ^^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ var f2 = (x: number) => { return null; } >f2 : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x: number) => { return null; } : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -34,13 +34,13 @@ var r2 = f2(1); >f2(1) : any > : ^^^ >f2 : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ var f3: { (x: number): any; } >f3 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -50,7 +50,7 @@ var r3 = f3(1); >f3(1) : any > : ^^^ >f3 : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ @@ -60,7 +60,7 @@ class C { f(x: number) { >f : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -73,7 +73,7 @@ var r4 = (new C()).f(1); >(new C()).f(1) : any > : ^^^ >(new C()).f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(new C()) : C > : ^ >new C() : C @@ -81,14 +81,14 @@ var r4 = (new C()).f(1); >C : typeof C > : ^^^^^^^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ interface I { f(x: number): any; >f : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -102,11 +102,11 @@ var r5 = i.f(1); >i.f(1) : any > : ^^^ >i.f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >i : I > : ^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ @@ -116,7 +116,7 @@ class C2 { f(x: number) { >f : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -129,7 +129,7 @@ var r6 = (new C2()).f(1); >(new C2()).f(1) : any > : ^^^ >(new C2()).f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(new C2()) : C2 > : ^^ >new C2() : C2 @@ -137,14 +137,14 @@ var r6 = (new C2()).f(1); >C2 : typeof C2 > : ^^^^^^^^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ interface I2 { f(x: number); >f : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -158,11 +158,11 @@ var r7 = i2.f(1); >i2.f(1) : any > : ^^^ >i2.f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >i2 : I2 > : ^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callOfConditionalTypeWithConcreteBranches.types b/tests/baselines/reference/callOfConditionalTypeWithConcreteBranches.types index 3be1ae27ff110..13d27fa17c87b 100644 --- a/tests/baselines/reference/callOfConditionalTypeWithConcreteBranches.types +++ b/tests/baselines/reference/callOfConditionalTypeWithConcreteBranches.types @@ -9,7 +9,7 @@ type Q = number extends T ? (n: number) => void : never; function fn(arg: Q) { >fn : (arg: Q) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : Q > : ^^^^ @@ -28,37 +28,37 @@ fn(m => m.toFixed()); >fn(m => m.toFixed()) : void > : ^^^^ >fn : (arg: Q) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >m => m.toFixed() : (m: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >m : number > : ^^^^^^ >m.toFixed() : string > : ^^^^^^ >m.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >m : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ fn(m => m.toFixed()); >fn(m => m.toFixed()) : void > : ^^^^ >fn : (arg: Q) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >m => m.toFixed() : (m: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >m : number > : ^^^^^^ >m.toFixed() : string > : ^^^^^^ >m.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >m : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ // Ensure the following real-world example that relies on substitution still works type ExtractParameters = "parameters" extends keyof T @@ -77,19 +77,19 @@ type Q2 = number extends T ? (cb: (n: number) => void) => void : never; >Q2 : Q2 > : ^^^^^ >cb : (n: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ function fn2(arg: Q2) { >fn2 : (arg: Q2) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : Q2 > : ^^^^^ function useT(_arg: T): void {} >useT : (_arg: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_arg : T > : ^ @@ -100,13 +100,13 @@ function fn2(arg: Q2) { >arg : Q2 > : ^^^^^ >arg => useT(arg) : (arg: T & number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >arg : T & number > : ^^^^^^^^^^ >useT(arg) : void > : ^^^^ >useT : (_arg: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : T & number > : ^^^^^^^^^^ } @@ -115,15 +115,15 @@ fn2(m => m(42)); >fn2(m => m(42)) : void > : ^^^^ >fn2 : (arg: Q2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >m => m(42) : (m: (n: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >m(42) : void > : ^^^^ >m : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ @@ -131,15 +131,15 @@ fn2(m => m(42)); >fn2(m => m(42)) : void > : ^^^^ >fn2 : (arg: Q2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >m => m(42) : (m: (n: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >m : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >m(42) : void > : ^^^^ >m : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ diff --git a/tests/baselines/reference/callOverload.types b/tests/baselines/reference/callOverload.types index 4633bec1a329c..3527c8bf773eb 100644 --- a/tests/baselines/reference/callOverload.types +++ b/tests/baselines/reference/callOverload.types @@ -3,13 +3,13 @@ === callOverload.ts === declare function fn(x: any): void; >fn : (x: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ declare function takeTwo(x: any, y: any): void; >takeTwo : (x: any, y: any) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : any > : ^^^ >y : any @@ -17,7 +17,7 @@ declare function takeTwo(x: any, y: any): void; declare function withRest(a: any, ...args: Array): void; >withRest : (a: any, ...args: Array) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >a : any > : ^^^ >args : any[] @@ -31,7 +31,7 @@ fn(1) // no error >fn(1) : void > : ^^^^ >fn : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -39,7 +39,7 @@ fn(1, 2, 3, 4) >fn(1, 2, 3, 4) : void > : ^^^^ >fn : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -53,7 +53,7 @@ takeTwo(1, 2, 3, 4) >takeTwo(1, 2, 3, 4) : void > : ^^^^ >takeTwo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -66,8 +66,8 @@ takeTwo(1, 2, 3, 4) withRest('a', ...n); // no error >withRest('a', ...n) : void > : ^^^^ ->withRest : (a: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>withRest : (a: any, ...args: Array) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >...n : number @@ -78,14 +78,14 @@ withRest('a', ...n); // no error withRest(); >withRest() : void > : ^^^^ ->withRest : (a: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>withRest : (a: any, ...args: Array) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ withRest(...n); >withRest(...n) : void > : ^^^^ ->withRest : (a: any, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>withRest : (a: any, ...args: Array) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...n : number > : ^^^^^^ >n : number[] diff --git a/tests/baselines/reference/callOverloadViaElementAccessExpression.types b/tests/baselines/reference/callOverloadViaElementAccessExpression.types index 291b1c38b4b39..fbd831abfdb51 100644 --- a/tests/baselines/reference/callOverloadViaElementAccessExpression.types +++ b/tests/baselines/reference/callOverloadViaElementAccessExpression.types @@ -7,19 +7,19 @@ class C { foo(x: number): number; >foo : { (x: number): number; (x: string): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : number > : ^^^^^^ foo(x: string): string; >foo : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : string > : ^^^^^^ foo(x: any): any { >foo : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : any > : ^^^ @@ -41,7 +41,7 @@ var r: string = c['foo'](1); >c['foo'](1) : number > : ^^^^^^ >c['foo'] : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : C > : ^ >'foo' : "foo" @@ -55,7 +55,7 @@ var r2: number = c['foo'](''); >c['foo']('') : string > : ^^^^^^ >c['foo'] : { (x: number): number; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : C > : ^ >'foo' : "foo" diff --git a/tests/baselines/reference/callOverloads1.types b/tests/baselines/reference/callOverloads1.types index e3625b3628392..cd383e8f25522 100644 --- a/tests/baselines/reference/callOverloads1.types +++ b/tests/baselines/reference/callOverloads1.types @@ -23,13 +23,13 @@ function Foo(); // error function F1(s:string); >F1 : (s: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : string > : ^^^^^^ function F1(a:any) { return a;} >F1 : (s: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any > : ^^^ >a : any diff --git a/tests/baselines/reference/callOverloads2.types b/tests/baselines/reference/callOverloads2.types index b5b71ea74da38..5bd6981e78814 100644 --- a/tests/baselines/reference/callOverloads2.types +++ b/tests/baselines/reference/callOverloads2.types @@ -23,7 +23,7 @@ function Foo(); // error function F1(s:string) {return s;} // error >F1 : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ >s : string @@ -31,7 +31,7 @@ function F1(s:string) {return s;} // error function F1(a:any) { return a;} // error >F1 : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -39,13 +39,13 @@ function F1(a:any) { return a;} // error function Goo(s:string); // error - no implementation >Goo : (s: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : string > : ^^^^^^ declare function Gar(s:String); // expect no error >Gar : (s: String) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : String > : ^^^^^^ diff --git a/tests/baselines/reference/callOverloads5.types b/tests/baselines/reference/callOverloads5.types index 607e066cf6723..acfcbebf278b0 100644 --- a/tests/baselines/reference/callOverloads5.types +++ b/tests/baselines/reference/callOverloads5.types @@ -17,19 +17,19 @@ class Foo { // error bar1(s:string); >bar1 : { (s: string): any; (n: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ bar1(n:number); >bar1 : { (s: string): any; (n: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ bar1(a:any) { /*WScript.Echo(a);*/ } >bar1 : { (s: string): any; (n: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any > : ^^^ @@ -57,11 +57,11 @@ f1.bar1("a"); >f1.bar1("a") : any > : ^^^ >f1.bar1 : { (s: string): any; (n: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >f1 : Foo > : ^^^ >bar1 : { (s: string): any; (n: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >"a" : "a" > : ^^^ diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance.types index 25db96e815bd0..d394718d766e3 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance.types @@ -62,13 +62,13 @@ module MemberWithCallSignature { // M's a: (x: number) => void; >a : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a2: (x: number, y: number) => void; >a2 : (x: number, y: number) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -76,7 +76,7 @@ module MemberWithCallSignature { a3: (x: T) => void; >a3 : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -86,13 +86,13 @@ module MemberWithCallSignature { // N's a: (x: number) => number; // ok because base returns void >a : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a2: (x: number, y: number) => boolean; // ok because base returns void >a2 : (x: number, y: number) => boolean -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -100,7 +100,7 @@ module MemberWithCallSignature { a3: (x: T) => string; // ok because base returns void >a3 : (x: T) => string -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -109,13 +109,13 @@ module MemberWithCallSignature { // M's a: (x: number) => number; >a : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a2: (x: T) => T; >a2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -125,7 +125,7 @@ module MemberWithCallSignature { // N's a: (x: number) => string; // error because base returns non-void; >a : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -135,7 +135,7 @@ module MemberWithCallSignature { // N's a2: (x: T) => string; // error because base returns non-void; >a2 : (x: T) => string -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types index 7f3f20fb757f1..15e63975e28e9 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types @@ -37,25 +37,25 @@ interface A { // T // M's a: (x: number) => number[]; >a : (x: number) => number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a2: (x: number) => string[]; >a2 : (x: number) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a3: (x: number) => void; >a3 : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a4: (x: string, y: number) => string; >a4 : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -63,25 +63,25 @@ interface A { // T a5: (x: (arg: string) => number) => string; >a5 : (x: (arg: string) => number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: string) => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ a6: (x: (arg: Base) => Derived) => Base; >a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -89,13 +89,13 @@ interface A { // T a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -103,13 +103,13 @@ interface A { // T a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -117,13 +117,13 @@ interface A { // T a10: (...x: Derived[]) => Derived; >a10 : (...x: Derived[]) => Derived -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : Derived[] > : ^^^^^^^^^ a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -137,7 +137,7 @@ interface A { // T a12: (x: Array, y: Array) => Array; >a12 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -145,7 +145,7 @@ interface A { // T a13: (x: Array, y: Array) => Array; >a13 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived[] @@ -153,7 +153,7 @@ interface A { // T a14: (x: { a: string; b: number }) => Object; >a14 : (x: { a: string; b: number; }) => Object -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -163,7 +163,7 @@ interface A { // T a15: { >a15 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: number): number[]; >x : number @@ -176,7 +176,7 @@ interface A { // T }; a16: { >a16 : { (x: T): number[]; (x: U): number[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (x: T): number[]; >x : T @@ -189,28 +189,28 @@ interface A { // T }; a17: { >a17 : { (x: (a: number) => number): number[]; (x: (a: string) => string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: (a: number) => number): number[]; >x : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ (x: (a: string) => string): string[]; >x : (a: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ }; a18: { >a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: number): number; (a: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (a: number): number; >a : number @@ -223,7 +223,7 @@ interface A { // T }): any[]; (x: { >x : { (a: boolean): boolean; (a: Date): Date; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (a: boolean): boolean; >a : boolean @@ -242,25 +242,25 @@ interface I extends A { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; // ok >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; // ok since Base returns void >a3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number >a4 : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -268,25 +268,25 @@ interface I extends A { a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy >a6 : (x: (arg: T) => U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a7: (x: (arg: T) => U) => (r: T) => U; // ok >a7 : (x: (arg: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -294,13 +294,13 @@ interface I extends A { a8: (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok >a8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: T) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ >r : T @@ -308,13 +308,13 @@ interface I extends A { a9: (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal >a9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: string; bing: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: string; bing: number; } > : ^^^^^^^ ^^^^^^^^ ^^^ >foo : string @@ -326,13 +326,13 @@ interface I extends A { a10: (...x: T[]) => T; // ok >a10 : (...x: T[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a11: (x: T, y: T) => T; // ok >a11 : (x: T, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -340,7 +340,7 @@ interface I extends A { a12: >(x: Array, y: T) => Array; // ok, less specific parameter type >a12 : (x: Array, y: T) => Array -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T @@ -348,7 +348,7 @@ interface I extends A { a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds >a13 : (x: Array, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T @@ -356,7 +356,7 @@ interface I extends A { a14: (x: { a: T; b: U }) => T; // ok >a14 : (x: { a: T; b: U; }) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { a: T; b: U; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -366,29 +366,29 @@ interface I extends A { a15: (x: T) => T[]; // ok >a15 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a16: (x: T) => number[]; // ok >a16 : (x: T) => number[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ a17: (x: (a: T) => T) => T[]; // ok >a17 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a18: (x: (a: T) => T) => T[]; // ok, no inferences for T but assignable to any >a18 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.types index 444833a10a691..8fa5ddd8d3270 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.types @@ -43,15 +43,15 @@ module Errors { interface A { a2: (x: number) => string[]; >a2 : (x: number) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a7: (x: (arg: Base) => Derived) => (r: Base) => Derived2; >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived2 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -59,13 +59,13 @@ module Errors { a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -73,13 +73,13 @@ module Errors { a10: (...x: Base[]) => Base; >a10 : (...x: Base[]) => Base -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -93,7 +93,7 @@ module Errors { a12: (x: Array, y: Array) => Array; >a12 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -101,7 +101,7 @@ module Errors { a14: { >a14 : { (x: number): number[]; (x: string): string[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: number): number[]; >x : number @@ -114,7 +114,7 @@ module Errors { }; a15: (x: { a: string; b: number }) => number; >a15 : (x: { a: string; b: number; }) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -124,12 +124,12 @@ module Errors { a16: { >a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ // type of parameter is overload set which means we can't do inference based on this type (x: { >x : { (a: number): number; (a?: number): number; } -> : ^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ (a: number): number; >a : number @@ -142,7 +142,7 @@ module Errors { }): number[]; (x: { >x : { (a: boolean): boolean; (a?: boolean): boolean; } -> : ^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ (a: boolean): boolean; >a : boolean @@ -156,11 +156,11 @@ module Errors { }; a17: { >a17 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -173,7 +173,7 @@ module Errors { }): any[]; (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -190,7 +190,7 @@ module Errors { interface I extends A { a2: (x: T) => U[]; // error, contextual signature instantiation doesn't relate return types so U is {}, not a subtype of string[] >a2 : (x: T) => U[] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -198,7 +198,7 @@ module Errors { interface I2 extends A { a2: (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic >a2 : (x: T) => U[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -207,9 +207,9 @@ module Errors { // valid, no inferences for V so it defaults to Derived2 a7: (x: (arg: T) => U) => (r: T) => V; >a7 : (x: (arg: T) => U) => (r: T) => V -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -219,13 +219,13 @@ module Errors { interface I4 extends A { a8: (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; // error, type mismatch >a8 : (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: number; } > : ^^^^^^^ ^^^ >foo : number @@ -237,7 +237,7 @@ module Errors { interface I4B extends A { a10: (...x: T[]) => T; // valid, parameter covariance works even after contextual signature instantiation >a10 : (...x: T[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ } @@ -245,7 +245,7 @@ module Errors { interface I4C extends A { a11: (x: T, y: T) => T; // valid, even though x is a Base, parameter covariance works even after contextual signature instantiation >a11 : (x: T, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -255,7 +255,7 @@ module Errors { interface I4E extends A { a12: >(x: Array, y: Array) => T; // valid, no inferences for T, defaults to Array >a12 : (x: Array, y: Array) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Base[] @@ -265,7 +265,7 @@ module Errors { interface I6 extends A { a15: (x: { a: T; b: T }) => T; // error, T is {} which isn't an acceptable return type >a15 : (x: { a: T; b: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -277,7 +277,7 @@ module Errors { interface I7 extends A { a15: (x: { a: T; b: T }) => number; // error, T defaults to Base, which is not compatible with number or string >a15 : (x: { a: T; b: T; }) => number -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -290,9 +290,9 @@ module Errors { // ok, we relate each signature of a16 to b16, and within that, we make inferences from two different signatures in the respective A.a16 signature a16: (x: (a: T) => T) => T[]; >a16 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ } @@ -300,9 +300,9 @@ module Errors { interface I9 extends A { a17: (x: (a: T) => T) => any[]; // valid, target is more constrained than source, so it is safe in the traditional constraint-contravariant fashion >a17 : (x: (a: T) => T) => any[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ } @@ -313,7 +313,7 @@ module Errors { interface B { a2: (x: T) => T[]; >a2 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -321,7 +321,7 @@ module Errors { interface I6 extends B { a2: (x: T) => string[]; // error >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -330,7 +330,7 @@ module Errors { interface C { a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -338,7 +338,7 @@ module Errors { interface I7 extends C { a2: (x: T) => T[]; // error >a2 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types index c42f464ef9e3d..7f07f1b560a11 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types @@ -37,25 +37,25 @@ interface A { // T // M's a: (x: T) => T[]; >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => void; >a3 : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => string; >a4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -63,23 +63,23 @@ interface A { // T a5: (x: (arg: T) => U) => T; >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => Derived) => T; >a6 : (x: (arg: T) => Derived) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -93,7 +93,7 @@ interface A { // T a15: (x: { a: T; b: T }) => T[]; >a15 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -103,7 +103,7 @@ interface A { // T a16: (x: { a: T; b: T }) => T[]; >a16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -113,28 +113,28 @@ interface A { // T a17: { >a17 : { (x: (a: T) => T): T[]; (x: (a: T_1) => T_1): T_1[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (x: (a: T) => T): T[]; >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ (x: (a: T) => T): T[]; >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ }; a18: { >a18 : { (x: { (a: T): T; (a: T): T; }): any[]; (x: { (a: T): T; (a: T): T; }): any[]; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -147,7 +147,7 @@ interface A { // T }): any[]; (x: { >x : { (a: T): T; (a: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -166,25 +166,25 @@ interface I extends A { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; // ok >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; // ok since Base returns void >a3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => string; // ok, instantiation of N is a subtype of M, T is string, U is number >a4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -192,23 +192,23 @@ interface I extends A { a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy >a6 : (x: (arg: T) => U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; // ok >a11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -222,7 +222,7 @@ interface I extends A { a15: (x: { a: U; b: V; }) => U[]; // ok, T = U, T = V >a15 : (x: { a: U; b: V; }) => U[] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { a: U; b: V; } > : ^^^^^ ^^^^^ ^^^ >a : U @@ -232,7 +232,7 @@ interface I extends A { a16: (x: { a: T; b: T }) => T[]; // ok, more general parameter type >a16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -242,17 +242,17 @@ interface I extends A { a17: (x: (a: T) => T) => T[]; // ok >a17 : (x: (a: T) => T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ a18: (x: (a: T) => T) => any[]; // ok >a18 : (x: (a: T) => T) => any[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (a: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types index 8088d98d320a2..3bcf0f69390bd 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types @@ -38,25 +38,25 @@ interface A { // T // M's a: (x: number) => number[]; >a : (x: number) => number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a2: (x: number) => string[]; >a2 : (x: number) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a3: (x: number) => void; >a3 : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ a4: (x: string, y: number) => string; >a4 : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -64,25 +64,25 @@ interface A { // T a5: (x: (arg: string) => number) => string; >a5 : (x: (arg: string) => number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: string) => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ a6: (x: (arg: Base) => Derived) => Base; >a6 : (x: (arg: Base) => Derived) => Base -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ a7: (x: (arg: Base) => Derived) => (r: Base) => Derived; >a7 : (x: (arg: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >r : Base @@ -90,13 +90,13 @@ interface A { // T a8: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a8 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -104,13 +104,13 @@ interface A { // T a9: (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived; >a9 : (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: Base) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Base > : ^^^^ >y : (arg2: Base) => Derived -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : Base > : ^^^^ >r : Base @@ -118,13 +118,13 @@ interface A { // T a10: (...x: Derived[]) => Derived; >a10 : (...x: Derived[]) => Derived -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : Derived[] > : ^^^^^^^^^ a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base; >a11 : (x: { foo: string; }, y: { foo: string; bar: string; }) => Base -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { foo: string; } > : ^^^^^^^ ^^^ >foo : string @@ -138,7 +138,7 @@ interface A { // T a12: (x: Array, y: Array) => Array; >a12 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived2[] @@ -146,7 +146,7 @@ interface A { // T a13: (x: Array, y: Array) => Array; >a13 : (x: Array, y: Array) => Array -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : Derived[] @@ -154,7 +154,7 @@ interface A { // T a14: (x: { a: string; b: number }) => Object; >a14 : (x: { a: string; b: number; }) => Object -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -166,7 +166,7 @@ interface A { // T interface B extends A { a: (x: T) => T[]; >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -176,25 +176,25 @@ interface I extends B { // N's a: (x: T) => T[]; // ok, instantiation of N is a subtype of M, T is number >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; // ok >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => T; // ok since Base returns void >a3 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => T; // ok, instantiation of N is a subtype of M, T is string, U is number >a4 : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -202,25 +202,25 @@ interface I extends B { a5: (x: (arg: T) => U) => T; // ok, U is in a parameter position so inferences can be made >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => U) => T; // ok, same as a5 but with object type hierarchy >a6 : (x: (arg: T) => U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a7: (x: (arg: T) => U) => (r: T) => U; // ok >a7 : (x: (arg: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >r : T @@ -228,13 +228,13 @@ interface I extends B { a8: (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U; // ok >a8 : (x: (arg: T) => U, y: (arg2: T) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: T) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ >r : T @@ -242,13 +242,13 @@ interface I extends B { a9: (x: (arg: T) => U, y: (arg2: { foo: string; bing: number }) => U) => (r: T) => U; // ok, same as a8 with compatible object literal >a9 : (x: (arg: T) => U, y: (arg2: { foo: string; bing: number; }) => U) => (r: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ >y : (arg2: { foo: string; bing: number; }) => U -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : { foo: string; bing: number; } > : ^^^^^^^ ^^^^^^^^ ^^^ >foo : string @@ -260,13 +260,13 @@ interface I extends B { a10: (...x: T[]) => T; // ok >a10 : (...x: T[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ a11: (x: T, y: T) => T; // ok >a11 : (x: T, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -274,7 +274,7 @@ interface I extends B { a12: >(x: Array, y: T) => Array; // ok, less specific parameter type >a12 : (x: Array, y: T) => Array -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T @@ -282,7 +282,7 @@ interface I extends B { a13: >(x: Array, y: T) => T; // ok, T = Array, satisfies constraint, contextual signature instantiation succeeds >a13 : (x: Array, y: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Base[] > : ^^^^^^ >y : T @@ -290,7 +290,7 @@ interface I extends B { a14: (x: { a: T; b: U }) => T; // ok >a14 : (x: { a: T; b: U; }) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { a: T; b: U; } > : ^^^^^ ^^^^^ ^^^ >a : T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types index 43f6b9437df68..88395d44a5400 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types @@ -39,25 +39,25 @@ interface A { // T // M's a: (x: T) => T[]; >a : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a3: (x: T) => void; >a3 : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ a4: (x: T, y: U) => string; >a4 : (x: T, y: U) => string -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -65,23 +65,23 @@ interface A { // T a5: (x: (arg: T) => U) => T; >a5 : (x: (arg: T) => U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a6: (x: (arg: T) => Derived) => T; >a6 : (x: (arg: T) => Derived) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : (arg: T) => Derived -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ a11: (x: { foo: T }, y: { foo: T; bar: T }) => Base; >a11 : (x: { foo: T; }, y: { foo: T; bar: T; }) => Base -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -95,7 +95,7 @@ interface A { // T a15: (x: { a: T; b: T }) => T[]; >a15 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -105,7 +105,7 @@ interface A { // T a16: (x: { a: T; b: T }) => T[]; >a16 : (x: { a: T; b: T; }) => T[] -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T @@ -118,7 +118,7 @@ interface A { // T interface I extends A { a: (x: T) => T[]; >a : (x: T) => T[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -126,7 +126,7 @@ interface I extends A { interface I2 extends A { a2: (x: T) => string[]; >a2 : (x: T) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -134,7 +134,7 @@ interface I2 extends A { interface I3 extends A { a3: (x: T) => T; >a3 : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -142,7 +142,7 @@ interface I3 extends A { interface I4 extends A { a4: (x: T, y: U) => string; >a4 : (x: T, y: U) => string -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -152,9 +152,9 @@ interface I4 extends A { interface I5 extends A { a5: (x: (arg: T) => U) => T; >a5 : (x: (arg: T) => U) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (arg: T) => U -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ } @@ -162,7 +162,7 @@ interface I5 extends A { interface I7 extends A { a11: (x: { foo: T }, y: { foo: U; bar: U }) => Base; >a11 : (x: { foo: T; }, y: { foo: U; bar: U; }) => Base -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -178,7 +178,7 @@ interface I7 extends A { interface I9 extends A { a16: (x: { a: T; b: T }) => T[]; >a16 : (x: { a: T; b: T; }) => T[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: T; b: T; } > : ^^^^^ ^^^^^ ^^^ >a : T diff --git a/tests/baselines/reference/callSignatureFunctionOverload.types b/tests/baselines/reference/callSignatureFunctionOverload.types index 3da33f5076d3d..5d9bb851813f1 100644 --- a/tests/baselines/reference/callSignatureFunctionOverload.types +++ b/tests/baselines/reference/callSignatureFunctionOverload.types @@ -2,8 +2,8 @@ === callSignatureFunctionOverload.ts === var foo: { ->foo : { (name: string): string; (name: 'order'): string; (name: 'content'): string; (name: 'done'): string; } -> : ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^ +>foo : { (name: string): string; (name: "order"): string; (name: "content"): string; (name: "done"): string; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (name: string): string; >name : string @@ -23,8 +23,8 @@ var foo: { } var foo2: { ->foo2 : { (name: string): string; (name: 'order'): string; (name: 'order'): string; (name: 'done'): string; } -> : ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^ +>foo2 : { (name: string): string; (name: "order"): string; (name: "order"): string; (name: "done"): string; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (name: string): string; >name : string diff --git a/tests/baselines/reference/callSignatureWithOptionalParameterAndInitializer.types b/tests/baselines/reference/callSignatureWithOptionalParameterAndInitializer.types index 9758436cb65a4..0766d50066bd6 100644 --- a/tests/baselines/reference/callSignatureWithOptionalParameterAndInitializer.types +++ b/tests/baselines/reference/callSignatureWithOptionalParameterAndInitializer.types @@ -5,7 +5,7 @@ function foo(x?: number = 1) { } >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -13,11 +13,11 @@ function foo(x?: number = 1) { } var f = function foo(x?: number = 1) { } >f : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >function foo(x?: number = 1) { } : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -25,9 +25,9 @@ var f = function foo(x?: number = 1) { } var f2 = (x: number, y? = 1) => { } >f2 : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: number, y? = 1) => { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : number @@ -39,7 +39,7 @@ foo(1); >foo(1) : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -47,13 +47,13 @@ foo(); >foo() : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ f(1); >f(1) : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -61,13 +61,13 @@ f(); >f() : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ f2(1); >f2(1) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -75,7 +75,7 @@ f2(1, 2); >f2(1, 2) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -87,7 +87,7 @@ class C { foo(x?: number = 1) { } >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -102,21 +102,21 @@ c.foo(); >c.foo() : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ c.foo(1); >c.foo(1) : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -129,7 +129,7 @@ interface I { foo(x: number, y?: number = 1); >foo : (x: number, y?: number) => any -> : ^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -160,11 +160,11 @@ i.foo(1); >i.foo(1) : any > : ^^^ >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ @@ -172,11 +172,11 @@ i.foo(1, 2); >i.foo(1, 2) : any > : ^^^ >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -184,7 +184,7 @@ i.foo(1, 2); var a: { >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ (x?: number = 1); >x : number @@ -194,7 +194,7 @@ var a: { foo(x? = 1); >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -205,13 +205,13 @@ a(); >a() : any > : ^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ a(1); >a(1) : any > : ^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -219,33 +219,33 @@ a.foo(); >a.foo() : any > : ^^^ >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ a.foo(1); >a.foo(1) : any > : ^^^ >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ var b = { >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{ foo(x?: number = 1) { }, a: function foo(x: number, y?: number = '') { }, b: (x?: any = '') => { }} : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^ ^ ^^^^^ ^ ^^^ foo(x?: number = 1) { }, >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -253,11 +253,11 @@ var b = { a: function foo(x: number, y?: number = '') { }, >a : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >function foo(x: number, y?: number = '') { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ >foo : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -267,9 +267,9 @@ var b = { b: (x?: any = '') => { } >b : (x?: any) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >(x?: any = '') => { } : (x?: any) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ >x : any > : ^^^ >'' : "" @@ -280,21 +280,21 @@ b.foo(); >b.foo() : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ b.foo(1); >b.foo(1) : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -302,11 +302,11 @@ b.a(1); >b.a(1) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -314,11 +314,11 @@ b.a(1, 2); >b.a(1, 2) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -328,21 +328,21 @@ b.b(); >b.b() : void > : ^^^^ >b.b : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >b : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ b.b(1); >b.b(1) : void > : ^^^^ >b.b : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >b : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types index 56879821c8a71..edd17f5df6f53 100644 --- a/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types +++ b/tests/baselines/reference/callSignatureWithoutAnnotationsOrBody.types @@ -5,7 +5,7 @@ function foo(x) { } >foo : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any var r = foo(1); // void since there's a body @@ -14,7 +14,7 @@ var r = foo(1); // void since there's a body >foo(1) : void > : ^^^^ >foo : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types index c65f98c1dc914..642ceb32dd470 100644 --- a/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types +++ b/tests/baselines/reference/callSignatureWithoutReturnTypeAnnotationInference.types @@ -6,7 +6,7 @@ // Simple types function foo(x) { >foo : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any return 1; @@ -19,20 +19,20 @@ var r = foo(1); >foo(1) : number > : ^^^^^^ >foo : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >1 : 1 > : ^ function foo2(x) { >foo2 : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any return foo(x); >foo(x) : number > : ^^^^^^ >foo : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any } var r2 = foo2(1); @@ -41,7 +41,7 @@ var r2 = foo2(1); >foo2(1) : number > : ^^^^^^ >foo2 : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -65,7 +65,7 @@ var r3 = foo3(); function foo4(x: T) { >foo4 : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -79,13 +79,13 @@ var r4 = foo4(1); >foo4(1) : 1 > : ^ >foo4 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ function foo5(x) { >foo5 : (x: any) => 1 | 2 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any if (true) { @@ -108,13 +108,13 @@ var r5 = foo5(1); >foo5(1) : 1 | 2 > : ^^^^^ >foo5 : (x: any) => 1 | 2 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >1 : 1 > : ^ function foo6(x) { >foo6 : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any try { @@ -138,13 +138,13 @@ var r6 = foo6(1); >foo6(1) : any[] > : ^^^^^ >foo6 : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >1 : 1 > : ^ function foo7(x) { >foo7 : (x: any) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any return typeof x; @@ -158,14 +158,14 @@ var r7 = foo7(1); >foo7(1) : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo7 : (x: any) => "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ // object types function foo8(x: number) { >foo8 : (x: number) => { x: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -181,9 +181,9 @@ var r8 = foo8(1); >r8 : { x: number; } > : ^^^^^^^^^^^^^^ >foo8(1) : { x: number; } -> : ^^^^^^^^^^^^^^ +> : >foo8 : (x: number) => { x: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -194,7 +194,7 @@ interface I { } function foo9(x: number) { >foo9 : (x: number) => I -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : number > : ^^^^^^ @@ -212,7 +212,7 @@ var r9 = foo9(1); >foo9(1) : I > : ^ >foo9 : (x: number) => I -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -226,7 +226,7 @@ class C { } function foo10(x: number) { >foo10 : (x: number) => C -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : number > : ^^^^^^ @@ -244,7 +244,7 @@ var r10 = foo10(1); >foo10(1) : C > : ^ >foo10 : (x: number) => C -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType.types b/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType.types index e51ffbc4e82e1..dbd1942a5b30a 100644 --- a/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType.types +++ b/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType.types @@ -41,7 +41,7 @@ interface I3 { var a: { >a : { (x: any, y: any): Object; (x: any, y: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^ ^^^ (x, y): Object; >x : any @@ -54,7 +54,7 @@ var a: { var a2: { >a2 : { (x: T): number; (x: T_1): string; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x: T): number; >x : T diff --git a/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType2.types b/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType2.types index 790d4f18f4188..3dc65a28feda9 100644 --- a/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType2.types +++ b/tests/baselines/reference/callSignaturesThatDifferOnlyByReturnType2.types @@ -7,7 +7,7 @@ interface I { foo(x: number): T; >foo : (x: number) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -25,11 +25,11 @@ var r = x.foo(1); // no error >x.foo(1) : number > : ^^^^^^ >x.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : A > : ^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ @@ -39,11 +39,11 @@ var r2 = x.foo(''); // error >x.foo('') : number > : ^^^^^^ >x.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : A > : ^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/callSignaturesWithAccessibilityModifiersOnParameters.types b/tests/baselines/reference/callSignaturesWithAccessibilityModifiersOnParameters.types index d8a83604d802f..db0055d7642e5 100644 --- a/tests/baselines/reference/callSignaturesWithAccessibilityModifiersOnParameters.types +++ b/tests/baselines/reference/callSignaturesWithAccessibilityModifiersOnParameters.types @@ -5,7 +5,7 @@ function foo(public x, private y) { } >foo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -13,11 +13,11 @@ function foo(public x, private y) { } var f = function foo(public x, private y) { } >f : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >function foo(public x, private y) { } : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -25,9 +25,9 @@ var f = function foo(public x, private y) { } var f2 = function (public x, private y) { } >f2 : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >function (public x, private y) { } : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >y : any @@ -35,9 +35,9 @@ var f2 = function (public x, private y) { } var f3 = (x, private y) => { } >f3 : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(x, private y) => { } : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >y : any @@ -45,9 +45,9 @@ var f3 = (x, private y) => { } var f4 = (public x: T, y: T) => { } >f4 : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(public x: T, y: T) => { } : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >y : T @@ -55,7 +55,7 @@ var f4 = (public x: T, y: T) => { } function foo2(private x: string, public y: number) { } >foo2 : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -63,11 +63,11 @@ function foo2(private x: string, public y: number) { } var f5 = function foo(private x: string, public y: number) { } >f5 : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function foo(private x: string, public y: number) { } : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >foo : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -75,9 +75,9 @@ var f5 = function foo(private x: string, public y: number) { } var f6 = function (private x: string, public y: number) { } >f6 : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function (private x: string, public y: number) { } : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : number @@ -85,9 +85,9 @@ var f6 = function (private x: string, public y: number) { } var f7 = (private x: string, public y: number) => { } >f7 : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(private x: string, public y: number) => { } : (x: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : number @@ -95,9 +95,9 @@ var f7 = (private x: string, public y: number) => { } var f8 = (private x: T, public y: T) => { } >f8 : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(private x: T, public y: T) => { } : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >y : T @@ -109,7 +109,7 @@ class C { foo(public x, private y) { } >foo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -117,7 +117,7 @@ class C { foo2(public x: number, private y: string) { } >foo2 : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -125,7 +125,7 @@ class C { foo3(public x: T, private y: T) { } >foo3 : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : T @@ -147,7 +147,7 @@ interface I { foo(private x, public y); >foo : { (x: any, y: any): any; (x: number, y: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : any > : ^^^ >y : any @@ -155,7 +155,7 @@ interface I { foo(public x: number, y: string); >foo : { (x: any, y: any): any; (x: number, y: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -163,7 +163,7 @@ interface I { foo3(x: T, private y: T); >foo3 : (x: T, y: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : T @@ -172,11 +172,11 @@ interface I { var a: { >a : { foo(x: any, y: any): any; foo2(x: number, y: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ foo(public x, private y); >foo : (x: any, y: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -184,7 +184,7 @@ var a: { foo2(private x: number, public y: string); >foo2 : (x: number, y: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -194,13 +194,13 @@ var a: { var b = { >b : { foo(x: any, y: any): void; a: (x: number, y: string) => void; b: (x: T, y: T) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >{ foo(public x, y) { }, a: function foo(x: number, private y: string) { }, b: (public x: T, private y: T) => { }} : { foo(x: any, y: any): void; a: (x: number, y: string) => void; b: (x: T, y: T) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ foo(public x, y) { }, >foo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -208,11 +208,11 @@ var b = { a: function foo(x: number, private y: string) { }, >a : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function foo(x: number, private y: string) { } : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >foo : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -220,9 +220,9 @@ var b = { b: (public x: T, private y: T) => { } >b : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(public x: T, private y: T) => { } : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >y : T diff --git a/tests/baselines/reference/callSignaturesWithDuplicateParameters.types b/tests/baselines/reference/callSignaturesWithDuplicateParameters.types index e9683efd5b1a9..6717800c2906b 100644 --- a/tests/baselines/reference/callSignaturesWithDuplicateParameters.types +++ b/tests/baselines/reference/callSignaturesWithDuplicateParameters.types @@ -5,7 +5,7 @@ function foo(x, x) { } >foo : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -13,11 +13,11 @@ function foo(x, x) { } var f = function foo(x, x) { } >f : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >function foo(x, x) { } : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -25,9 +25,9 @@ var f = function foo(x, x) { } var f2 = function (x, x) { } >f2 : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >function (x, x) { } : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >x : any @@ -35,9 +35,9 @@ var f2 = function (x, x) { } var f3 = (x, x) => { } >f3 : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(x, x) => { } : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >x : any @@ -45,9 +45,9 @@ var f3 = (x, x) => { } var f4 = (x: T, x: T) => { } >f4 : (x: T, x: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(x: T, x: T) => { } : (x: T, x: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >x : T @@ -55,7 +55,7 @@ var f4 = (x: T, x: T) => { } function foo2(x: string, x: number) { } >foo2 : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >x : number @@ -63,11 +63,11 @@ function foo2(x: string, x: number) { } var f5 = function foo(x: string, x: number) { } >f5 : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function foo(x: string, x: number) { } : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >foo : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >x : number @@ -75,9 +75,9 @@ var f5 = function foo(x: string, x: number) { } var f6 = function (x: string, x: number) { } >f6 : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function (x: string, x: number) { } : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >x : number @@ -85,9 +85,9 @@ var f6 = function (x: string, x: number) { } var f7 = (x: string, x: number) => { } >f7 : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: string, x: number) => { } : (x: string, x: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >x : number @@ -95,9 +95,9 @@ var f7 = (x: string, x: number) => { } var f8 = (x: T, y: T) => { } >f8 : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(x: T, y: T) => { } : (x: T, y: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >y : T @@ -109,7 +109,7 @@ class C { foo(x, x) { } >foo : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -117,7 +117,7 @@ class C { foo2(x: number, x: string) { } >foo2 : (x: number, x: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : string @@ -125,7 +125,7 @@ class C { foo3(x: T, x: T) { } >foo3 : (x: T, x: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >x : T @@ -147,7 +147,7 @@ interface I { foo(x, x); >foo : { (x: any, x: any): any; (x: number, x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : any > : ^^^ >x : any @@ -155,7 +155,7 @@ interface I { foo(x: number, x: string); >foo : { (x: any, x: any): any; (x: number, x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : string @@ -163,7 +163,7 @@ interface I { foo3(x: T, x: T); >foo3 : (x: T, x: T) => any -> : ^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >x : T @@ -172,11 +172,11 @@ interface I { var a: { >a : { foo(x: any, x: any): any; foo2(x: number, x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ foo(x, x); >foo : (x: any, x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -184,7 +184,7 @@ var a: { foo2(x: number, x: string); >foo2 : (x: number, x: string) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ >x : string @@ -194,13 +194,13 @@ var a: { var b = { >b : { foo(x: any, x: any): void; a: (x: number, x: string) => void; b: (x: T, x: T) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >{ foo(x, x) { }, a: function foo(x: number, x: string) { }, b: (x: T, x: T) => { }} : { foo(x: any, x: any): void; a: (x: number, x: string) => void; b: (x: T, x: T) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ foo(x, x) { }, >foo : (x: any, x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -208,11 +208,11 @@ var b = { a: function foo(x: number, x: string) { }, >a : (x: number, x: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function foo(x: number, x: string) { } : (x: number, x: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >foo : (x: number, x: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : string @@ -220,9 +220,9 @@ var b = { b: (x: T, x: T) => { } >b : (x: T, x: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(x: T, x: T) => { } : (x: T, x: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : >x : T > : ^ >x : T diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters.types b/tests/baselines/reference/callSignaturesWithOptionalParameters.types index 92f86938017d8..81ca396f16757 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters.types +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters.types @@ -5,25 +5,25 @@ function foo(x?: number) { } >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ var f = function foo(x?: number) { } >f : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >function foo(x?: number) { } : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ var f2 = (x: number, y?: number) => { } >f2 : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >(x: number, y?: number) => { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : number @@ -33,7 +33,7 @@ foo(1); >foo(1) : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -41,13 +41,13 @@ foo(); >foo() : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ f(1); >f(1) : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -55,13 +55,13 @@ f(); >f() : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ f2(1); >f2(1) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -69,7 +69,7 @@ f2(1, 2); >f2(1, 2) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -81,7 +81,7 @@ class C { foo(x?: number) { } >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ } @@ -94,21 +94,21 @@ c.foo(); >c.foo() : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ c.foo(1); >c.foo(1) : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -119,7 +119,7 @@ interface I { foo(x: number, y?: number); >foo : (x: number, y?: number) => any -> : ^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -145,22 +145,22 @@ i(1); i.foo(1); >i.foo(1) : any >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ i.foo(1, 2); >i.foo(1, 2) : any >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -168,7 +168,7 @@ i.foo(1, 2); var a: { >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ (x?: number); >x : number @@ -176,7 +176,7 @@ var a: { foo(x?: number); >foo : (x?: number) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -184,54 +184,54 @@ var a: { a(); >a() : any >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ a(1); >a(1) : any >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ a.foo(); >a.foo() : any >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ a.foo(1); >a.foo(1) : any >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >1 : 1 > : ^ var b = { >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{ foo(x?: number) { }, a: function foo(x: number, y?: number) { }, b: (x?: number) => { }} : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^ ^ ^^^^^ ^ ^^^ foo(x?: number) { }, >foo : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ a: function foo(x: number, y?: number) { }, >a : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >function foo(x: number, y?: number) { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ >foo : (x: number, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -239,9 +239,9 @@ var b = { b: (x?: number) => { } >b : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >(x?: number) => { } : (x?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ } @@ -250,21 +250,21 @@ b.foo(); >b.foo() : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ b.foo(1); >b.foo(1) : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -272,11 +272,11 @@ b.a(1); >b.a(1) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -284,11 +284,11 @@ b.a(1, 2); >b.a(1, 2) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -298,21 +298,21 @@ b.b(); >b.b() : void > : ^^^^ >b.b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ b.b(1); >b.b(1) : void > : ^^^^ >b.b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callSignaturesWithOptionalParameters2.types b/tests/baselines/reference/callSignaturesWithOptionalParameters2.types index 3e942ed3525b2..8e0e8718e6b3f 100644 --- a/tests/baselines/reference/callSignaturesWithOptionalParameters2.types +++ b/tests/baselines/reference/callSignaturesWithOptionalParameters2.types @@ -5,37 +5,37 @@ function foo(x?: number); >foo : (x?: number) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ function foo(x?: number) { } >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ foo(1); >foo(1) : any >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >1 : 1 > : ^ foo(); >foo() : any >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ function foo2(x: number); >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ function foo2(x: number, y?: number); >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -43,7 +43,7 @@ function foo2(x: number, y?: number); function foo2(x: number, y?: number) { } >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -52,14 +52,14 @@ function foo2(x: number, y?: number) { } foo2(1); >foo2(1) : any >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ foo2(1, 2); >foo2(1, 2) : any >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -71,25 +71,25 @@ class C { foo(x?: number); >foo : (x?: number) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ foo(x?: number) { } >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : number > : ^^^^^^ foo2(x: number); >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ foo2(x: number, y?: number); >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -97,7 +97,7 @@ class C { foo2(x: number, y?: number) { } >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -111,42 +111,42 @@ var c: C; c.foo(); >c.foo() : any >c.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >c : C > : ^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ c.foo(1); >c.foo(1) : any >c.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >c : C > : ^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >1 : 1 > : ^ c.foo2(1); >c.foo2(1) : any >c.foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ c.foo2(1, 2); >c.foo2(1, 2) : any >c.foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >c : C > : ^ >foo2 : { (x: number): any; (x: number, y?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -165,7 +165,7 @@ interface I { foo(x: number, y?: number); >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -173,7 +173,7 @@ interface I { foo(x: number, y?: number, z?: number); >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -210,22 +210,22 @@ i(1, 2); i.foo(1); >i.foo(1) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >i : I > : ^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ i.foo(1, 2); >i.foo(1, 2) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >i : I > : ^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -234,11 +234,11 @@ i.foo(1, 2); i.foo(1, 2, 3); >i.foo(1, 2, 3) : any >i.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >i : I > : ^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -248,7 +248,7 @@ i.foo(1, 2, 3); var a: { >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ (x?: number); >x : number @@ -262,7 +262,7 @@ var a: { foo(x: number, y?: number); >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -270,7 +270,7 @@ var a: { foo(x: number, y?: number, z?: number); >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -282,19 +282,19 @@ var a: { a(); >a() : any >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ a(1); >a(1) : any >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ a(1, 2); >a(1, 2) : any >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -303,22 +303,22 @@ a(1, 2); a.foo(1); >a.foo(1) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ a.foo(1, 2); >a.foo(1, 2) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -327,11 +327,11 @@ a.foo(1, 2); a.foo(1, 2, 3); >a.foo(1, 2, 3) : any >a.foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >a : { (x?: number): any; (x?: number, y?: number): any; foo(x: number, y?: number): any; foo(x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >foo : { (x: number, y?: number): any; (x: number, y?: number, z?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/callSignaturesWithParameterInitializers.types b/tests/baselines/reference/callSignaturesWithParameterInitializers.types index 559d09cd0bc69..9b21869dc4203 100644 --- a/tests/baselines/reference/callSignaturesWithParameterInitializers.types +++ b/tests/baselines/reference/callSignaturesWithParameterInitializers.types @@ -5,7 +5,7 @@ function foo(x = 1) { } >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -13,11 +13,11 @@ function foo(x = 1) { } var f = function foo(x = 1) { } >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >function foo(x = 1) { } : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -25,9 +25,9 @@ var f = function foo(x = 1) { } var f2 = (x: number, y = 1) => { } >f2 : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: number, y = 1) => { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : number @@ -39,7 +39,7 @@ foo(1); >foo(1) : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -47,13 +47,13 @@ foo(); >foo() : void > : ^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ f(1); >f(1) : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -61,13 +61,13 @@ f(); >f() : void > : ^^^^ >f : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ f2(1); >f2(1) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -75,7 +75,7 @@ f2(1, 2); >f2(1, 2) : void > : ^^^^ >f2 : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -87,7 +87,7 @@ class C { foo(x = 1) { } >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -102,21 +102,21 @@ c.foo(); >c.foo() : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ c.foo(1); >c.foo(1) : void > : ^^^^ >c.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -130,7 +130,7 @@ interface I { foo(x: number, y = 1); >foo : (x: number, y?: number) => any -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -161,11 +161,11 @@ i.foo(1); >i.foo(1) : any > : ^^^ >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -173,11 +173,11 @@ i.foo(1, 2); >i.foo(1, 2) : any > : ^^^ >i.foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >i : I > : ^ >foo : (x: number, y?: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -186,7 +186,7 @@ i.foo(1, 2); // these are errors var a: { >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ (x = 1); >x : number @@ -196,7 +196,7 @@ var a: { foo(x = 1); >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -207,13 +207,13 @@ a(); >a() : any > : ^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ a(1); >a(1) : any > : ^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -221,33 +221,33 @@ a.foo(); >a.foo() : any > : ^^^ >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ a.foo(1); >a.foo(1) : any > : ^^^ >a.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : { (x?: number): any; foo(x?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ var b = { >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >{ foo(x = 1) { }, a: function foo(x: number, y = 1) { }, b: (x = 1) => { }} : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^ ^^^^^ ^ ^^^ foo(x = 1) { }, >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -255,11 +255,11 @@ var b = { a: function foo(x: number, y = 1) { }, >a : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >function foo(x: number, y = 1) { } : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : (x: number, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -269,9 +269,9 @@ var b = { b: (x = 1) => { } >b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >(x = 1) => { } : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >1 : 1 @@ -282,21 +282,21 @@ b.foo(); >b.foo() : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ b.foo(1); >b.foo(1) : void > : ^^^^ >b.foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -304,11 +304,11 @@ b.a(1); >b.a(1) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -316,11 +316,11 @@ b.a(1, 2); >b.a(1, 2) : void > : ^^^^ >b.a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >a : (x: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -330,21 +330,21 @@ b.b(); >b.b() : void > : ^^^^ >b.b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ b.b(1); >b.b(1) : void > : ^^^^ >b.b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): void; a: (x: number, y?: number) => void; b: (x?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >b : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callSignaturesWithParameterInitializers2.types b/tests/baselines/reference/callSignaturesWithParameterInitializers2.types index 61752a9504b32..ae95c38495dc4 100644 --- a/tests/baselines/reference/callSignaturesWithParameterInitializers2.types +++ b/tests/baselines/reference/callSignaturesWithParameterInitializers2.types @@ -6,7 +6,7 @@ function foo(x = 2); >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -14,7 +14,7 @@ function foo(x = 2); function foo(x = 1) { } >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -24,7 +24,7 @@ foo(1); >foo(1) : any > : ^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -32,7 +32,7 @@ foo(); >foo() : any > : ^^^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ class C { >C : C @@ -40,7 +40,7 @@ class C { foo(x = 2); >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -48,7 +48,7 @@ class C { foo(x = 1) { } >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -63,33 +63,33 @@ c.foo(); >c.foo() : any > : ^^^ >c.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ c.foo(1); >c.foo(1) : any > : ^^^ >c.foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >c : C > : ^ >foo : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ var b = { >b : { foo(x?: number): any; foo(x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >{ foo(x = 1), // error foo(x = 1) { }, // error} : { foo(x?: number): any; foo(x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ foo(x = 1), // error >foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -97,7 +97,7 @@ var b = { foo(x = 1) { }, // error >foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -108,21 +108,21 @@ b.foo(); >b.foo() : any > : ^^^ >b.foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): any; foo(x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ b.foo(1); >b.foo(1) : any > : ^^^ >b.foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >b : { foo(x?: number): any; foo(x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >foo : { (x?: number): any; (x?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/callWithMissingVoid.types b/tests/baselines/reference/callWithMissingVoid.types index 390b4dccceea3..625c43256e6ab 100644 --- a/tests/baselines/reference/callWithMissingVoid.types +++ b/tests/baselines/reference/callWithMissingVoid.types @@ -8,7 +8,7 @@ class X { f(t: T) { >f : (t: T) => { a: T; } -> : ^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >t : T > : ^ @@ -30,11 +30,11 @@ x.f() // no error because f expects void >x.f() : { a: void; } > : ^^^^^^^^^^^^ >x.f : (t: void) => { a: void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : X > : ^^^^^^^ >f : (t: void) => { a: void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ declare const xUnion: X; >xUnion : X @@ -44,11 +44,11 @@ xUnion.f(42) // no error because f accepts number >xUnion.f(42) : { a: number | void; } > : ^^^^^^^^^^^^^^^^^^^^^ >xUnion.f : (t: number | void) => { a: number | void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >xUnion : X > : ^^^^^^^^^^^^^^^^ >f : (t: number | void) => { a: number | void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ @@ -56,11 +56,11 @@ xUnion.f() // no error because f accepts void >xUnion.f() : { a: number | void; } > : ^^^^^^^^^^^^^^^^^^^^^ >xUnion.f : (t: number | void) => { a: number | void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >xUnion : X > : ^^^^^^^^^^^^^^^^ >f : (t: number | void) => { a: number | void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const xAny: X; >xAny : X @@ -70,11 +70,11 @@ xAny.f() // error, any still expects an argument >xAny.f() : { a: any; } > : ^^^^^^^^^^^ >xAny.f : (t: any) => { a: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >xAny : X > : ^^^^^^ >f : (t: any) => { a: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ declare const xUnknown: X; >xUnknown : X @@ -84,11 +84,11 @@ xUnknown.f() // error, unknown still expects an argument >xUnknown.f() : { a: unknown; } > : ^^^^^^^^^^^^^^^ >xUnknown.f : (t: unknown) => { a: unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >xUnknown : X > : ^^^^^^^^^^ >f : (t: unknown) => { a: unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const xNever: X; >xNever : X @@ -98,11 +98,11 @@ xNever.f() // error, never still expects an argument >xNever.f() : { a: never; } > : ^^^^^^^^^^^^^ >xNever.f : (t: never) => { a: never; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >xNever : X > : ^^^^^^^^ >f : (t: never) => { a: never; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ // Promise has previously been updated to work without arguments, but to show this fixes the issue too. @@ -113,9 +113,9 @@ class MyPromise { constructor(executor: (resolve: (value: X) => void) => void) { >executor : (resolve: (value: X) => void) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >resolve : (value: X) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : X > : ^ @@ -128,13 +128,13 @@ new MyPromise(resolve => resolve()); // no error >MyPromise : typeof MyPromise > : ^^^^^^^^^^^^^^^^ >resolve => resolve() : (resolve: (value: void) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >resolve() : void > : ^^^^ >resolve : (value: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ new MyPromise(resolve => resolve()); // no error >new MyPromise(resolve => resolve()) : MyPromise @@ -142,13 +142,13 @@ new MyPromise(resolve => resolve()); // no error >MyPromise : typeof MyPromise > : ^^^^^^^^^^^^^^^^ >resolve => resolve() : (resolve: (value: number | void) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >resolve() : void > : ^^^^ >resolve : (value: number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ new MyPromise(resolve => resolve()); // error, `any` arguments cannot be omitted >new MyPromise(resolve => resolve()) : MyPromise @@ -156,13 +156,13 @@ new MyPromise(resolve => resolve()); // error, `any` arguments cannot be om >MyPromise : typeof MyPromise > : ^^^^^^^^^^^^^^^^ >resolve => resolve() : (resolve: (value: any) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >resolve() : void > : ^^^^ >resolve : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ new MyPromise(resolve => resolve()); // error, `unknown` arguments cannot be omitted >new MyPromise(resolve => resolve()) : MyPromise @@ -170,13 +170,13 @@ new MyPromise(resolve => resolve()); // error, `unknown` arguments cann >MyPromise : typeof MyPromise > : ^^^^^^^^^^^^^^^^ >resolve => resolve() : (resolve: (value: unknown) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >resolve() : void > : ^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ new MyPromise(resolve => resolve()); // error, `never` arguments cannot be omitted >new MyPromise(resolve => resolve()) : MyPromise @@ -184,20 +184,20 @@ new MyPromise(resolve => resolve()); // error, `never` arguments cannot b >MyPromise : typeof MyPromise > : ^^^^^^^^^^^^^^^^ >resolve => resolve() : (resolve: (value: never) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: never) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >resolve() : void > : ^^^^ >resolve : (value: never) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ // Multiple parameters function a(x: number, y: string, z: void): void { >a : (x: number, y: string, z: void) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -211,7 +211,7 @@ a(4, "hello"); // ok >a(4, "hello") : void > : ^^^^ >a : (x: number, y: string, z: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ >"hello" : "hello" @@ -221,7 +221,7 @@ a(4, "hello", void 0); // ok >a(4, "hello", void 0) : void > : ^^^^ >a : (x: number, y: string, z: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ >"hello" : "hello" @@ -235,13 +235,13 @@ a(4); // not ok >a(4) : void > : ^^^^ >a : (x: number, y: string, z: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ function b(x: number, y: string, z: void, what: number): void { >b : (x: number, y: string, z: void, what: number) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -257,7 +257,7 @@ b(4, "hello", void 0, 2); // ok >b(4, "hello", void 0, 2) : void > : ^^^^ >b : (x: number, y: string, z: void, what: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ >"hello" : "hello" @@ -273,7 +273,7 @@ b(4, "hello"); // not ok >b(4, "hello") : void > : ^^^^ >b : (x: number, y: string, z: void, what: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ >"hello" : "hello" @@ -283,7 +283,7 @@ b(4, "hello", void 0); // not ok >b(4, "hello", void 0) : void > : ^^^^ >b : (x: number, y: string, z: void, what: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ >"hello" : "hello" @@ -297,13 +297,13 @@ b(4); // not ok >b(4) : void > : ^^^^ >b : (x: number, y: string, z: void, what: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >4 : 4 > : ^ function c(x: number | void, y: void, z: void | string | number): void { >c : (x: number | void, y: void, z: void | string | number) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number | void > : ^^^^^^^^^^^^^ >y : void @@ -316,8 +316,8 @@ function c(x: number | void, y: void, z: void | string | number): void { c(3, void 0, void 0); // ok >c(3, void 0, void 0) : void > : ^^^^ ->c : (x: number | void, y: void, z: string | number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c : (x: number | void, y: void, z: void | string | number) => void +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >3 : 3 > : ^ >void 0 : undefined @@ -332,8 +332,8 @@ c(3, void 0, void 0); // ok c(3, void 0); // ok >c(3, void 0) : void > : ^^^^ ->c : (x: number | void, y: void, z: string | number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c : (x: number | void, y: void, z: void | string | number) => void +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >3 : 3 > : ^ >void 0 : undefined @@ -344,27 +344,27 @@ c(3, void 0); // ok c(3); // ok >c(3) : void > : ^^^^ ->c : (x: number | void, y: void, z: string | number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c : (x: number | void, y: void, z: void | string | number) => void +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >3 : 3 > : ^ c(); // ok >c() : void > : ^^^^ ->c : (x: number | void, y: void, z: string | number | void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c : (x: number | void, y: void, z: void | string | number) => void +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ // Spread Parameters declare function call( >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ handler: (...args: TS) => unknown, >handler : (...args: TS) => unknown -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : TS > : ^^ @@ -376,9 +376,9 @@ call((x: number, y: number) => x + y) // error >call((x: number, y: number) => x + y) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -394,9 +394,9 @@ call((x: number, y: number) => x + y, 4, 2) // ok >call((x: number, y: number) => x + y, 4, 2) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -416,9 +416,9 @@ call((x: number, y: void) => x, 4, void 0) // ok >call((x: number, y: void) => x, 4, void 0) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: void) => x : (x: number, y: void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : void @@ -436,9 +436,9 @@ call((x: number, y: void) => x, 4) // ok >call((x: number, y: void) => x, 4) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: void) => x : (x: number, y: void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : void @@ -452,9 +452,9 @@ call((x: void, y: void) => 42) // ok >call((x: void, y: void) => 42) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: void, y: void) => 42 : (x: void, y: void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : void > : ^^^^ >y : void @@ -466,9 +466,9 @@ call((x: number | void, y: number | void) => 42) // ok >call((x: number | void, y: number | void) => 42) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number | void > : ^^^^^^^^^^^^^ >y : number | void @@ -480,9 +480,9 @@ call((x: number | void, y: number | void) => 42, 4) // ok >call((x: number | void, y: number | void) => 42, 4) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number | void > : ^^^^^^^^^^^^^ >y : number | void @@ -496,9 +496,9 @@ call((x: number | void, y: number | void) => 42, 4, 2) // ok >call((x: number | void, y: number | void) => 42, 4, 2) : void > : ^^^^ >call : (handler: (...args: TS) => unknown, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number | void, y: number | void) => 42 : (x: number | void, y: number | void) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number | void > : ^^^^^^^^^^^^^ >y : number | void diff --git a/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).types b/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).types index 97e1c113c59c1..1e620e286b9b3 100644 --- a/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).types +++ b/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=false).types @@ -3,31 +3,31 @@ === defs.d.ts === declare function f1(p: void): void; >f1 : (p: void) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : void > : ^^^^ declare function f2(p: undefined): void; >f2 : (p: undefined) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : undefined > : ^^^^^^^^^ declare function f3(p: unknown): void; >f3 : (p: unknown) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : unknown > : ^^^^^^^ declare function f4(p: any): void; >f4 : (p: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : any > : ^^^ interface I { m(p: T): void; } >m : (p: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -53,66 +53,66 @@ f1(); >f1() : void > : ^^^^ >f1 : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o1.m(); >o1.m() : void > : ^^^^ >o1.m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >o1 : I > : ^^^^^^^ >m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ // new behavior: treat 'undefined', 'unknown', and 'any' as optional in non-strict mode f2(); >f2() : void > : ^^^^ >f2 : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f3(); >f3() : void > : ^^^^ >f3 : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f4(); >f4() : void > : ^^^^ >f4 : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o2.m(); >o2.m() : void > : ^^^^ >o2.m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >o2 : I > : ^^^^^^^^^^^^ >m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ o3.m(); >o3.m() : void > : ^^^^ >o3.m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >o3 : I > : ^^^^^^^^^^ >m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ o4.m(); >o4.m() : void > : ^^^^ >o4.m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >o4 : I > : ^^^^^^ >m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ === tsfile.ts === // current behavior: treat trailing `void` as optional @@ -120,64 +120,64 @@ f1(); >f1() : void > : ^^^^ >f1 : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o1.m(); >o1.m() : void > : ^^^^ >o1.m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >o1 : I > : ^^^^^^^ >m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ // no change in behavior f2(); >f2() : void > : ^^^^ >f2 : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f3(); >f3() : void > : ^^^^ >f3 : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f4(); >f4() : void > : ^^^^ >f4 : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o2.m(); >o2.m() : void > : ^^^^ >o2.m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >o2 : I > : ^^^^^^^^^^^^ >m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ o3.m(); >o3.m() : void > : ^^^^ >o3.m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >o3 : I > : ^^^^^^^^^^ >m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ o4.m(); >o4.m() : void > : ^^^^ >o4.m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >o4 : I > : ^^^^^^ >m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=true).types b/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=true).types index 97e1c113c59c1..1e620e286b9b3 100644 --- a/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=true).types +++ b/tests/baselines/reference/callWithMissingVoidUndefinedUnknownAnyInJs(strict=true).types @@ -3,31 +3,31 @@ === defs.d.ts === declare function f1(p: void): void; >f1 : (p: void) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : void > : ^^^^ declare function f2(p: undefined): void; >f2 : (p: undefined) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : undefined > : ^^^^^^^^^ declare function f3(p: unknown): void; >f3 : (p: unknown) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : unknown > : ^^^^^^^ declare function f4(p: any): void; >f4 : (p: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : any > : ^^^ interface I { m(p: T): void; } >m : (p: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -53,66 +53,66 @@ f1(); >f1() : void > : ^^^^ >f1 : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o1.m(); >o1.m() : void > : ^^^^ >o1.m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >o1 : I > : ^^^^^^^ >m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ // new behavior: treat 'undefined', 'unknown', and 'any' as optional in non-strict mode f2(); >f2() : void > : ^^^^ >f2 : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f3(); >f3() : void > : ^^^^ >f3 : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f4(); >f4() : void > : ^^^^ >f4 : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o2.m(); >o2.m() : void > : ^^^^ >o2.m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >o2 : I > : ^^^^^^^^^^^^ >m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ o3.m(); >o3.m() : void > : ^^^^ >o3.m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >o3 : I > : ^^^^^^^^^^ >m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ o4.m(); >o4.m() : void > : ^^^^ >o4.m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >o4 : I > : ^^^^^^ >m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ === tsfile.ts === // current behavior: treat trailing `void` as optional @@ -120,64 +120,64 @@ f1(); >f1() : void > : ^^^^ >f1 : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o1.m(); >o1.m() : void > : ^^^^ >o1.m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >o1 : I > : ^^^^^^^ >m : (p: void) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ // no change in behavior f2(); >f2() : void > : ^^^^ >f2 : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f3(); >f3() : void > : ^^^^ >f3 : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ f4(); >f4() : void > : ^^^^ >f4 : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ o2.m(); >o2.m() : void > : ^^^^ >o2.m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >o2 : I > : ^^^^^^^^^^^^ >m : (p: undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ o3.m(); >o3.m() : void > : ^^^^ >o3.m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >o3 : I > : ^^^^^^^^^^ >m : (p: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ o4.m(); >o4.m() : void > : ^^^^ >o4.m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >o4 : I > : ^^^^^^ >m : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callWithSpread.types b/tests/baselines/reference/callWithSpread.types index beb49f0c0bbff..43b1f87683b82 100644 --- a/tests/baselines/reference/callWithSpread.types +++ b/tests/baselines/reference/callWithSpread.types @@ -4,7 +4,7 @@ interface X { foo(x: number, y: number, ...z: string[]): X; >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -15,7 +15,7 @@ interface X { function foo(x: number, y: number, ...z: string[]) { >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -44,7 +44,7 @@ foo(1, 2, "abc"); >foo(1, 2, "abc") : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -56,7 +56,7 @@ foo(1, 2, ...a); >foo(1, 2, ...a) : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -70,7 +70,7 @@ foo(1, 2, ...a, "abc"); >foo(1, 2, ...a, "abc") : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -86,11 +86,11 @@ obj.foo(1, 2, "abc"); >obj.foo(1, 2, "abc") : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -102,11 +102,11 @@ obj.foo(1, 2, ...a); >obj.foo(1, 2, ...a) : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -120,11 +120,11 @@ obj.foo(1, 2, ...a, "abc"); >obj.foo(1, 2, ...a, "abc") : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -140,15 +140,15 @@ obj.foo(1, 2, ...a).foo(1, 2, "abc"); >obj.foo(1, 2, ...a).foo(1, 2, "abc") : X > : ^ >obj.foo(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo(1, 2, ...a) : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -158,7 +158,7 @@ obj.foo(1, 2, ...a).foo(1, 2, "abc"); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -170,15 +170,15 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a); >obj.foo(1, 2, ...a).foo(1, 2, ...a) : X > : ^ >obj.foo(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo(1, 2, ...a) : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -188,7 +188,7 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -202,15 +202,15 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc") : X > : ^ >obj.foo(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo(1, 2, ...a) : X > : ^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -220,7 +220,7 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -236,13 +236,13 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >(obj.foo)(1, 2, "abc") : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -254,13 +254,13 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >(obj.foo)(1, 2, ...a) : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -274,13 +274,13 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >(obj.foo)(1, 2, ...a, "abc") : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -296,19 +296,19 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >((obj.foo)(1, 2, ...a).foo)(1, 2, "abc") : X > : ^ >((obj.foo)(1, 2, ...a).foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a) : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -318,7 +318,7 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -330,19 +330,19 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >((obj.foo)(1, 2, ...a).foo)(1, 2, ...a) : X > : ^ >((obj.foo)(1, 2, ...a).foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a) : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -352,7 +352,7 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -366,19 +366,19 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >((obj.foo)(1, 2, ...a).foo)(1, 2, ...a, "abc") : X > : ^ >((obj.foo)(1, 2, ...a).foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a).foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(obj.foo)(1, 2, ...a) : X > : ^ >(obj.foo) : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -388,7 +388,7 @@ obj.foo(1, 2, ...a).foo(1, 2, ...a, "abc"); >a : string[] > : ^^^^^^^^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -404,7 +404,7 @@ xa[1].foo(1, 2, "abc"); >xa[1].foo(1, 2, "abc") : X > : ^ >xa[1].foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -412,7 +412,7 @@ xa[1].foo(1, 2, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -424,7 +424,7 @@ xa[1].foo(1, 2, ...a); >xa[1].foo(1, 2, ...a) : X > : ^ >xa[1].foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -432,7 +432,7 @@ xa[1].foo(1, 2, ...a); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -446,7 +446,7 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo(1, 2, ...a, "abc") : X > : ^ >xa[1].foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -454,7 +454,7 @@ xa[1].foo(1, 2, ...a, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -473,7 +473,7 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo : Function > : ^^^^^^^^ >xa[1].foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -481,7 +481,7 @@ xa[1].foo(1, 2, ...a, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >...[1, 2, "abc"] : string | number > : ^^^^^^^^^^^^^^^ >[1, 2, "abc"] : [number, number, string] @@ -509,11 +509,11 @@ class C { >this.foo(x, y) : void > : ^^^^ >this.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -523,11 +523,11 @@ class C { >this.foo(x, y, ...z) : void > : ^^^^ >this.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -539,7 +539,7 @@ class C { } foo(x: number, y: number, ...z: string[]) { >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -588,11 +588,11 @@ class D extends C { >super.foo(1, 2) : void > : ^^^^ >super.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >super : C > : ^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -602,11 +602,11 @@ class D extends C { >super.foo(1, 2, ...a) : void > : ^^^^ >super.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >super : C > : ^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/callWithSpread2.types b/tests/baselines/reference/callWithSpread2.types index d3e4d87bd639d..205db13e539dd 100644 --- a/tests/baselines/reference/callWithSpread2.types +++ b/tests/baselines/reference/callWithSpread2.types @@ -3,7 +3,7 @@ === callWithSpread2.ts === declare function all(a?: number, b?: number): void; >all : (a?: number, b?: number) => void -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -11,7 +11,7 @@ declare function all(a?: number, b?: number): void; declare function weird(a?: number | string, b?: number | string): void; >weird : (a?: number | string, b?: number | string) => void -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -19,7 +19,7 @@ declare function weird(a?: number | string, b?: number | string): void; declare function prefix(s: string, a?: number, b?: number): void; >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >s : string > : ^^^^^^ >a : number @@ -29,7 +29,7 @@ declare function prefix(s: string, a?: number, b?: number): void; declare function rest(s: string, a?: number, b?: number, ...rest: number[]): void; >rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >a : number @@ -41,7 +41,7 @@ declare function rest(s: string, a?: number, b?: number, ...rest: number[]): vo declare function normal(s: string): void; >normal : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ @@ -51,7 +51,7 @@ declare function thunk(): string; declare function prefix2(s: string, n: number, a?: number, b?: number): void; >prefix2 : (s: string, n: number, a?: number, b?: number) => void -> : ^^^^ ^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >s : string > : ^^^^^^ >n : number @@ -78,7 +78,7 @@ all(...ns) >all(...ns) : void > : ^^^^ >all : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...ns : number > : ^^^^^^ >ns : number[] @@ -87,8 +87,8 @@ all(...ns) weird(...ns) >weird(...ns) : void > : ^^^^ ->weird : (a?: string | number, b?: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>weird : (a?: number | string, b?: number | string) => void +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...ns : number > : ^^^^^^ >ns : number[] @@ -97,8 +97,8 @@ weird(...ns) weird(...mixed) >weird(...mixed) : void > : ^^^^ ->weird : (a?: string | number, b?: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>weird : (a?: number | string, b?: number | string) => void +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...mixed : string | number > : ^^^^^^^^^^^^^^^ >mixed : (string | number)[] @@ -107,8 +107,8 @@ weird(...mixed) weird(...tuple) >weird(...tuple) : void > : ^^^^ ->weird : (a?: string | number, b?: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>weird : (a?: number | string, b?: number | string) => void +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...tuple : string | number > : ^^^^^^^^^^^^^^^ >tuple : [number, string] @@ -118,7 +118,7 @@ prefix("a", ...ns) >prefix("a", ...ns) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >"a" : "a" > : ^^^ >...ns : number @@ -130,7 +130,7 @@ rest("d", ...ns) >rest("d", ...ns) : void > : ^^^^ >rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >"d" : "d" > : ^^^ >...ns : number @@ -144,7 +144,7 @@ normal("g", ...ns) >normal("g", ...ns) : void > : ^^^^ >normal : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"g" : "g" > : ^^^ >...ns : number @@ -167,7 +167,7 @@ all(...mixed) >all(...mixed) : void > : ^^^^ >all : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...mixed : string | number > : ^^^^^^^^^^^^^^^ >mixed : (string | number)[] @@ -177,7 +177,7 @@ all(...tuple) >all(...tuple) : void > : ^^^^ >all : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >...tuple : string | number > : ^^^^^^^^^^^^^^^ >tuple : [number, string] @@ -187,7 +187,7 @@ prefix("b", ...mixed) >prefix("b", ...mixed) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >"b" : "b" > : ^^^ >...mixed : string | number @@ -199,7 +199,7 @@ prefix("c", ...tuple) >prefix("c", ...tuple) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >"c" : "c" > : ^^^ >...tuple : string | number @@ -211,7 +211,7 @@ rest("e", ...mixed) >rest("e", ...mixed) : void > : ^^^^ >rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >"e" : "e" > : ^^^ >...mixed : string | number @@ -223,7 +223,7 @@ rest("f", ...tuple) >rest("f", ...tuple) : void > : ^^^^ >rest : (s: string, a?: number, b?: number, ...rest: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >"f" : "f" > : ^^^ >...tuple : string | number @@ -235,7 +235,7 @@ prefix(...ns) // required parameters are required >prefix(...ns) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >...ns : number > : ^^^^^^ >ns : number[] @@ -245,7 +245,7 @@ prefix(...mixed) >prefix(...mixed) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >...mixed : string | number > : ^^^^^^^^^^^^^^^ >mixed : (string | number)[] @@ -255,7 +255,7 @@ prefix(...tuple) >prefix(...tuple) : void > : ^^^^ >prefix : (s: string, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >...tuple : string | number > : ^^^^^^^^^^^^^^^ >tuple : [number, string] @@ -265,7 +265,7 @@ prefix2("g", ...ns); >prefix2("g", ...ns) : void > : ^^^^ >prefix2 : (s: string, n: number, a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >"g" : "g" > : ^^^ >...ns : number diff --git a/tests/baselines/reference/callWithSpread3.types b/tests/baselines/reference/callWithSpread3.types index 5d0278e6d3f76..3e9c494427090 100644 --- a/tests/baselines/reference/callWithSpread3.types +++ b/tests/baselines/reference/callWithSpread3.types @@ -27,7 +27,7 @@ declare const s2n_: [string, string, ...number[]]; declare function fs2(a: string, b: string): void; >fs2 : (a: string, b: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : string @@ -35,7 +35,7 @@ declare function fs2(a: string, b: string): void; declare function fs2_(a: string, b: string, ...c: string[]): void; >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : string @@ -45,7 +45,7 @@ declare function fs2_(a: string, b: string, ...c: string[]): void; declare function fs2n_(a: string, b: string, ...c: number[]): void; >fs2n_ : (a: string, b: string, ...c: number[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : string @@ -55,7 +55,7 @@ declare function fs2n_(a: string, b: string, ...c: number[]): void; declare function fs5(a: string, b: string, c: string, d: string, e: string): void; >fs5 : (a: string, b: string, c: string, d: string, e: string) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : string @@ -72,7 +72,7 @@ fs2('a', ...s2); // error on ...s2 >fs2('a', ...s2) : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >...s2 : string @@ -84,7 +84,7 @@ fs2('a', 'b', 'c', ...s2); // error on 'c' and ...s2 >fs2('a', 'b', 'c', ...s2) : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" @@ -100,7 +100,7 @@ fs2('a', 'b', ...s2, 'c'); // error on ...s2 and 'c' >fs2('a', 'b', ...s2, 'c') : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" @@ -116,7 +116,7 @@ fs2('a', 'b', 'c', ...s2, 'd'); // error on 'c', ...s2 and 'd' >fs2('a', 'b', 'c', ...s2, 'd') : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" @@ -134,7 +134,7 @@ fs2(...s2, 'a'); // error on 'a' >fs2(...s2, 'a') : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >...s2 : string > : ^^^^^^ >s2 : [string, string] @@ -146,7 +146,7 @@ fs2(...s3); // error on ...s3 >fs2(...s3) : void > : ^^^^ >fs2 : (a: string, b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >...s3 : string > : ^^^^^^ >s3 : [string, string, string] @@ -156,7 +156,7 @@ fs2_(...s_); // error on ...s_ >fs2_(...s_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s_ : string > : ^^^^^^ >s_ : string[] @@ -166,7 +166,7 @@ fs2_(...s2n_); // error on ...s2n_ >fs2_(...s2n_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2n_ : string | number > : ^^^^^^^^^^^^^^^ >s2n_ : [string, string, ...number[]] @@ -176,7 +176,7 @@ fs2_(...s_, ...s_); // error on ...s_ >fs2_(...s_, ...s_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s_ : string > : ^^^^^^ >s_ : string[] @@ -190,7 +190,7 @@ fs2_(...s_, ...s_, ...s_); // error on ...s_ >fs2_(...s_, ...s_, ...s_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s_ : string > : ^^^^^^ >s_ : string[] @@ -209,7 +209,7 @@ fs2n_(...s2_); // error on ...s2_ >fs2n_(...s2_) : void > : ^^^^ >fs2n_ : (a: string, b: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2_ : string > : ^^^^^^ >s2_ : [string, string, ...string[]] @@ -220,7 +220,7 @@ fs2_(...s2_); >fs2_(...s2_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2_ : string > : ^^^^^^ >s2_ : [string, string, ...string[]] @@ -230,7 +230,7 @@ fs2_(...s2_, ...s_); >fs2_(...s2_, ...s_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2_ : string > : ^^^^^^ >s2_ : [string, string, ...string[]] @@ -244,7 +244,7 @@ fs2_(...s2_, ...s2_); >fs2_(...s2_, ...s2_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2_ : string > : ^^^^^^ >s2_ : [string, string, ...string[]] @@ -258,7 +258,7 @@ fs2_(...s_, ...s2_); >fs2_(...s_, ...s2_) : void > : ^^^^ >fs2_ : (a: string, b: string, ...c: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s_ : string > : ^^^^^^ >s_ : string[] @@ -272,7 +272,7 @@ fs2n_(...s2n_); >fs2n_(...s2n_) : void > : ^^^^ >fs2n_ : (a: string, b: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2n_ : string | number > : ^^^^^^^^^^^^^^^ >s2n_ : [string, string, ...number[]] @@ -282,7 +282,7 @@ fs2n_(...s2); >fs2n_(...s2) : void > : ^^^^ >fs2n_ : (a: string, b: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...s2 : string > : ^^^^^^ >s2 : [string, string] @@ -293,7 +293,7 @@ fs5(...s2, "foo", ...s2); >fs5(...s2, "foo", ...s2) : void > : ^^^^ >fs5 : (a: string, b: string, c: string, d: string, e: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...s2 : string > : ^^^^^^ >s2 : [string, string] diff --git a/tests/baselines/reference/callWithSpread4.types b/tests/baselines/reference/callWithSpread4.types index 0ab66c402cf86..a03e4891f28bf 100644 --- a/tests/baselines/reference/callWithSpread4.types +++ b/tests/baselines/reference/callWithSpread4.types @@ -23,7 +23,7 @@ type RW = { a: number, b: number } declare const pli: { >pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } -> : ^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; >s1 : R @@ -72,15 +72,15 @@ declare var gz: RW[] declare var fun: (inp: any) => AsyncGenerator >fun : (inp: any) => AsyncGenerator -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >inp : any > : ^^^ pli( >pli( reads, ...gun, tr, fun, ...gz, writes) : Promise > : ^^^^^^^^^^^^^ ->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | W | RW)[]): Promise; (s1: R, s2: W | RW, ...streams: (W | RW)[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ reads, >reads : R @@ -98,7 +98,7 @@ pli( fun, >fun : (inp: any) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...gz, >...gz : RW @@ -114,7 +114,7 @@ pli( declare function test(x: any, y: () => string): string | undefined; >test : (x: any, y: () => string) => string | undefined -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : any > : ^^^ >y : () => string @@ -128,7 +128,7 @@ test(...anys) >test(...anys) : string | undefined > : ^^^^^^^^^^^^^^^^^^ >test : (x: any, y: () => string) => string | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >...anys : any > : ^^^ >anys : any[] @@ -137,8 +137,8 @@ test(...anys) pli(...[reads, writes, writes] as const) >pli(...[reads, writes, writes] as const) : Promise > : ^^^^^^^^^^^^^ ->pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: readonly (R | W | RW)[]): Promise; (s1: R, s2: W | RW, ...streams: (W | RW)[]): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pli : { (s1: R, s2: RW, s3: RW, s4: RW, s5: W): Promise; (streams: ReadonlyArray): Promise; (s1: R, s2: RW | W, ...streams: Array): Promise; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >...[reads, writes, writes] as const : R | W > : ^^^^^ >[reads, writes, writes] as const : readonly [R, W, W] diff --git a/tests/baselines/reference/callWithSpread5.types b/tests/baselines/reference/callWithSpread5.types index cfdab8146d765..62cfdfb91db87 100644 --- a/tests/baselines/reference/callWithSpread5.types +++ b/tests/baselines/reference/callWithSpread5.types @@ -15,7 +15,7 @@ declare const nntnnnt: [number, number] | [number, number, number] declare function fn(a: number, b: number, bb: number, ...c: number[]): number >fn : (a: number, b: number, bb: number, ...c: number[]) => number -> : ^^^^ ^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -29,7 +29,7 @@ fn(...nnnu, x) >fn(...nnnu, x) : number > : ^^^^^^ >fn : (a: number, b: number, bb: number, ...c: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >...nnnu : number > : ^^^^^^ >nnnu : [number, number, number?] @@ -41,7 +41,7 @@ fn(...nntnnnt, x) >fn(...nntnnnt, x) : number > : ^^^^^^ >fn : (a: number, b: number, bb: number, ...c: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >...nntnnnt : number > : ^^^^^^ >nntnnnt : [number, number] | [number, number, number] diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index 28877ac6d966c..95d2e7a06ead0 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -4,7 +4,7 @@ interface X { foo(x: number, y: number, ...z: string[]); >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -15,7 +15,7 @@ interface X { function foo(x: number, y: number, ...z: string[]) { >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -44,7 +44,7 @@ foo(1, 2, "abc"); >foo(1, 2, "abc") : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -56,7 +56,7 @@ foo(1, 2, ...a); >foo(1, 2, ...a) : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -70,7 +70,7 @@ foo(1, 2, ...a, "abc"); >foo(1, 2, ...a, "abc") : void > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -85,11 +85,11 @@ foo(1, 2, ...a, "abc"); obj.foo(1, 2, "abc"); >obj.foo(1, 2, "abc") : any >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -100,11 +100,11 @@ obj.foo(1, 2, "abc"); obj.foo(1, 2, ...a); >obj.foo(1, 2, ...a) : any >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -117,11 +117,11 @@ obj.foo(1, 2, ...a); obj.foo(1, 2, ...a, "abc"); >obj.foo(1, 2, ...a, "abc") : any >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -136,13 +136,13 @@ obj.foo(1, 2, ...a, "abc"); (obj.foo)(1, 2, "abc"); >(obj.foo)(1, 2, "abc") : any >(obj.foo) : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -153,13 +153,13 @@ obj.foo(1, 2, ...a, "abc"); (obj.foo)(1, 2, ...a); >(obj.foo)(1, 2, ...a) : any >(obj.foo) : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -172,13 +172,13 @@ obj.foo(1, 2, ...a, "abc"); (obj.foo)(1, 2, ...a, "abc"); >(obj.foo)(1, 2, ...a, "abc") : any >(obj.foo) : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj.foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >obj : X > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -193,7 +193,7 @@ obj.foo(1, 2, ...a, "abc"); xa[1].foo(1, 2, "abc"); >xa[1].foo(1, 2, "abc") : any >xa[1].foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -201,7 +201,7 @@ xa[1].foo(1, 2, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -212,7 +212,7 @@ xa[1].foo(1, 2, "abc"); xa[1].foo(1, 2, ...a); >xa[1].foo(1, 2, ...a) : any >xa[1].foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -220,7 +220,7 @@ xa[1].foo(1, 2, ...a); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -233,7 +233,7 @@ xa[1].foo(1, 2, ...a); xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo(1, 2, ...a, "abc") : any >xa[1].foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -241,7 +241,7 @@ xa[1].foo(1, 2, ...a, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -260,7 +260,7 @@ xa[1].foo(1, 2, ...a, "abc"); >xa[1].foo : Function > : ^^^^^^^^ >xa[1].foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >xa[1] : X > : ^ >xa : X[] @@ -268,7 +268,7 @@ xa[1].foo(1, 2, ...a, "abc"); >1 : 1 > : ^ >foo : (x: number, y: number, ...z: string[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >...[1, 2, "abc"] : string | number > : ^^^^^^^^^^^^^^^ >[1, 2, "abc"] : [number, number, string] @@ -296,11 +296,11 @@ class C { >this.foo(x, y) : void > : ^^^^ >this.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -310,11 +310,11 @@ class C { >this.foo(x, y, ...z) : void > : ^^^^ >this.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -326,7 +326,7 @@ class C { } foo(x: number, y: number, ...z: string[]) { >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -375,11 +375,11 @@ class D extends C { >super.foo(1, 2) : void > : ^^^^ >super.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >super : C > : ^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -389,11 +389,11 @@ class D extends C { >super.foo(1, 2, ...a) : void > : ^^^^ >super.foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >super : C > : ^ >foo : (x: number, y: number, ...z: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/callbackArgsDifferByOptionality.types b/tests/baselines/reference/callbackArgsDifferByOptionality.types index 51ab6a59ca183..c0c107c1d76cb 100644 --- a/tests/baselines/reference/callbackArgsDifferByOptionality.types +++ b/tests/baselines/reference/callbackArgsDifferByOptionality.types @@ -2,26 +2,26 @@ === callbackArgsDifferByOptionality.ts === function x3(callback: (x?: 'hi') => number); ->x3 : { (callback: (x?: 'hi') => number): any; (callback: (x: string) => number): any; } -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->callback : (x?: 'hi') => number -> : ^^^^^ ^^^^^ +>x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ +>callback : (x?: "hi") => number +> : ^ ^^^ ^^^^^ >x : "hi" > : ^^^^ function x3(callback: (x: string) => number); >x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >callback : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function x3(callback: (x: any) => number) { >x3 : { (callback: (x?: "hi") => number): any; (callback: (x: string) => number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >callback : (x: any) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/callbackCrossModule.types b/tests/baselines/reference/callbackCrossModule.types index 7f3a47108f0bf..2e5388420d6bd 100644 --- a/tests/baselines/reference/callbackCrossModule.types +++ b/tests/baselines/reference/callbackCrossModule.types @@ -37,7 +37,7 @@ function C() { /** @param {import('./mod1').Con} k */ function f(k) { >f : (k: import('./mod1').Con) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >k : import("mod1").Con > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callbackOnConstructor.types b/tests/baselines/reference/callbackOnConstructor.types index b737204062f20..5f29d608e1e61 100644 --- a/tests/baselines/reference/callbackOnConstructor.types +++ b/tests/baselines/reference/callbackOnConstructor.types @@ -23,9 +23,9 @@ export class Preferences { /** @type {ValueGetter_2} */ var ooscope2 = s => s.length > 0 >ooscope2 : (name: string) => string | number | boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s => s.length > 0 : (s: string) => string | number | boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length > 0 : boolean diff --git a/tests/baselines/reference/callbackTag1.types b/tests/baselines/reference/callbackTag1.types index 8aeff48187eed..763c1b669b9f9 100644 --- a/tests/baselines/reference/callbackTag1.types +++ b/tests/baselines/reference/callbackTag1.types @@ -16,7 +16,7 @@ var sid = s => s + "!"; >sid : Sid > : ^^^ >s => s + "!" : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s + "!" : string @@ -32,7 +32,7 @@ var noreturn = obj => void obj.title >noreturn : NoReturn > : ^^^^^^^^ >obj => void obj.title : (obj: { e: number; m: number; title: string; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : { e: number; m: number; title: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >void obj.title : undefined diff --git a/tests/baselines/reference/callbackTag2.types b/tests/baselines/reference/callbackTag2.types index 32b1fc74b1b9c..9764da4b56fa4 100644 --- a/tests/baselines/reference/callbackTag2.types +++ b/tests/baselines/reference/callbackTag2.types @@ -17,7 +17,7 @@ var one_twenty = s => "120"; >one_twenty : Id > : ^^^^^^^^^^ >s => "120" : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >"120" : "120" @@ -48,7 +48,7 @@ var outside = n => n + 1; >outside : SharedId > : ^^^^^^^^^^^^^^^^ >n => n + 1 : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n + 1 : number @@ -63,7 +63,7 @@ var noreturn = (barts, tidus, noctis) => "cecil" >noreturn : Final<{ fantasy: any; }, { heroes: any; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(barts, tidus, noctis) => "cecil" : (barts: { fantasy: any; }, tidus: { heroes: any; }, noctis: { heroes: any; } & { fantasy: any; }) => "cecil" | "zidane" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >barts : { fantasy: any; } > : ^^^^^^^^^^^^^^^^^ >tidus : { heroes: any; } diff --git a/tests/baselines/reference/callbackTag4.types b/tests/baselines/reference/callbackTag4.types index 59acefd9fc6f5..e82a6296d66b5 100644 --- a/tests/baselines/reference/callbackTag4.types +++ b/tests/baselines/reference/callbackTag4.types @@ -14,7 +14,7 @@ const cb = function (a, b) { >cb : C > : ^ >function (a, b) { this return true} : (this: { a: string; b: number; }, a: string, b: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/callbackTagNamespace.types b/tests/baselines/reference/callbackTagNamespace.types index aa8b2b89494d2..bb17304ad8799 100644 --- a/tests/baselines/reference/callbackTagNamespace.types +++ b/tests/baselines/reference/callbackTagNamespace.types @@ -16,7 +16,7 @@ var x = 1; /** @type {NS.Nested.Inner} */ function f(space, peace) { >f : (space: any, peace: any) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >space : any >peace : any diff --git a/tests/baselines/reference/callbackTagNestedParameter.types b/tests/baselines/reference/callbackTagNestedParameter.types index 7be251551d7cd..a273ab902d27e 100644 --- a/tests/baselines/reference/callbackTagNestedParameter.types +++ b/tests/baselines/reference/callbackTagNestedParameter.types @@ -16,7 +16,7 @@ */ function eachPerson(callback) { >eachPerson : (callback: WorksWithPeopleCallback) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >callback : WorksWithPeopleCallback > : ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callbacksDontShareTypes.types b/tests/baselines/reference/callbacksDontShareTypes.types index 37ee8c32bc583..bbe19ce953b8a 100644 --- a/tests/baselines/reference/callbacksDontShareTypes.types +++ b/tests/baselines/reference/callbacksDontShareTypes.types @@ -8,34 +8,34 @@ interface Collection { add(x: T): void; >add : (x: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ remove(x: T): boolean; >remove : (x: T) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } interface Combinators { map(c: Collection, f: (x: T) => U): Collection; >map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^ ^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >c : Collection > : ^^^^^^^^^^^^^ >f : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ map(c: Collection, f: (x: T) => any): Collection; >map : { (c: Collection, f: (x: T_1) => U): Collection; (c: Collection, f: (x: T) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : Collection > : ^^^^^^^^^^^^^ >f : (x: T) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -50,19 +50,19 @@ var c2: Collection; var rf1 = (x: number) => { return x.toFixed() }; >rf1 : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => { return x.toFixed() } : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var r1a = _.map(c2, (x) => { return x.toFixed() }); >r1a : Collection @@ -70,25 +70,25 @@ var r1a = _.map(c2, (x) => { return x.toFixed() }); >_.map(c2, (x) => { return x.toFixed() }) : Collection > : ^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^ >(x) => { return x.toFixed() } : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var r1b = _.map(c2, rf1); // this line should not cause the following 2 to have errors >r1b : Collection @@ -96,15 +96,15 @@ var r1b = _.map(c2, rf1); // this line should not cause the following 2 to have >_.map(c2, rf1) : Collection > : ^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^ >rf1 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var r5a = _.map(c2, (x) => { return x.toFixed() }); >r5a : Collection @@ -112,25 +112,25 @@ var r5a = _.map(c2, (x) => { return x.toFixed() }); >_.map(c2, (x) => { return x.toFixed() }) : Collection > : ^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^ >(x) => { return x.toFixed() } : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var r5b = _.map(c2, rf1); >r5b : Collection @@ -138,13 +138,13 @@ var r5b = _.map(c2, rf1); >_.map(c2, rf1) : Collection > : ^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T) => U): Collection; (c: Collection, f: (x: T_1) => any): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^ >rf1 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/callsOnComplexSignatures.types b/tests/baselines/reference/callsOnComplexSignatures.types index c1d5944195f04..47a7e172d9c31 100644 --- a/tests/baselines/reference/callsOnComplexSignatures.types +++ b/tests/baselines/reference/callsOnComplexSignatures.types @@ -29,7 +29,7 @@ function test1() { interface Temp1 { getValue(name: stringType1): number; >getValue : (name: "foo" | "bar") => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >name : "foo" | "bar" > : ^^^^^^^^^^^^^ } @@ -37,14 +37,14 @@ function test1() { interface Temp2 { getValue(name: stringType2): string; >getValue : (name: "bar" | "baz") => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >name : "bar" | "baz" > : ^^^^^^^^^^^^^ } function test(t: Temp1 | Temp2) { >test : (t: Temp1 | Temp2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >t : Temp1 | Temp2 > : ^^^^^^^^^^^^^ @@ -54,11 +54,11 @@ function test1() { >t.getValue("bar") : string | number > : ^^^^^^^^^^^^^^^ >t.getValue : ((name: "foo" | "bar") => number) | ((name: "bar" | "baz") => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : Temp1 | Temp2 > : ^^^^^^^^^^^^^ >getValue : ((name: "foo" | "bar") => number) | ((name: "bar" | "baz") => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"bar" : "bar" > : ^^^^^ } @@ -71,7 +71,7 @@ function test2() { interface Messages { readonly foo: (options: { [key: string]: any, b: number }) => string; >foo : (options: { [key: string]: any; b: number; }) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : { [key: string]: any; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >key : string @@ -81,7 +81,7 @@ function test2() { readonly bar: (options: { [key: string]: any, a: string }) => string; >bar : (options: { [key: string]: any; a: string; }) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : { [key: string]: any; a: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >key : string @@ -94,13 +94,13 @@ function test2() { >messages : Messages > : ^^^^^^^^ >{ foo: (options) => "Foo", bar: (options) => "Bar", } : { foo: (options: { [key: string]: any; b: number; }) => string; bar: (options: { [key: string]: any; a: string; }) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ foo: (options) => "Foo", >foo : (options: { [key: string]: any; b: number; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(options) => "Foo" : (options: { [key: string]: any; b: number; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >options : { [key: string]: any; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Foo" : "Foo" @@ -108,9 +108,9 @@ function test2() { bar: (options) => "Bar", >bar : (options: { [key: string]: any; a: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(options) => "Bar" : (options: { [key: string]: any; a: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >options : { [key: string]: any; a: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Bar" : "Bar" @@ -120,9 +120,9 @@ function test2() { const test1 = (type: "foo" | "bar") => >test1 : (type: "foo" | "bar") => string -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(type: "foo" | "bar") => messages[type]({ a: "A", b: 0 }) : (type: "foo" | "bar") => string -> : ^^^^^^^ ^^^^^^^^^^^ +> : >type : "foo" | "bar" > : ^^^^^^^^^^^^^ @@ -130,7 +130,7 @@ function test2() { >messages[type]({ a: "A", b: 0 }) : string > : ^^^^^^ >messages[type] : ((options: { [key: string]: any; b: number; }) => string) | ((options: { [key: string]: any; a: string; }) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >messages : Messages > : ^^^^^^^^ >type : "foo" | "bar" @@ -149,7 +149,7 @@ function test2() { function test3(items: string[] | number[]) { >test3 : (items: string[] | number[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >items : string[] | number[] > : ^^^^^^^^^^^^^^^^^^^ @@ -157,34 +157,34 @@ function test3(items: string[] | number[]) { >items.forEach(item => console.log(item)) : void > : ^^^^ >items.forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >items : string[] | number[] > : ^^^^^^^^^^^^^^^^^^^ >forEach : ((callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void) | ((callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >item => console.log(item) : (item: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : string | number > : ^^^^^^^^^^^^^^^ >console.log(item) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >item : string | number > : ^^^^^^^^^^^^^^^ } function test4( >test4 : (arg1: ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number), arg2: ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number), arg3: ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number), arg4: ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number), arg5: ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number), arg6: ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number)) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ arg1: ((...objs: {x: number}[]) => number) | ((...objs: {y: number}[]) => number), >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) -> : ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^ ^^ ^^^^^ ^^^^^^^^^ ^^ ^^^^^ ^ >objs : { x: number; }[] > : ^^^^^ ^^^^^ >x : number @@ -196,7 +196,7 @@ function test4( arg2: ((a: {x: number}, b: object) => number) | ((a: object, b: {x: number}) => number), >arg2 : ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number) -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : { x: number; } > : ^^^^^ ^^^ >x : number @@ -212,7 +212,7 @@ function test4( arg3: ((a: {x: number}, ...objs: {y: number}[]) => number) | ((...objs: {x: number}[]) => number), >arg3 : ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number) -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^^^^ ^^ ^^^^^ ^^^^^^^^^ ^^ ^^^^^ ^ >a : { x: number; } > : ^^^^^ ^^^ >x : number @@ -228,7 +228,7 @@ function test4( arg4: ((a?: {x: number}, b?: {x: number}) => number) | ((a?: {y: number}) => number), >arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) -> : ^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^^ ^^ ^^^ ^^^^^ ^^^^^^ ^^^ ^^^^^ ^ >a : { x: number; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >x : number @@ -244,7 +244,7 @@ function test4( arg5: ((a?: {x: number}, ...b: {x: number}[]) => number) | ((a?: {y: number}) => number), >arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) -> : ^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^^ ^^^^^ ^^ ^^^^^ ^^^^^^ ^^^ ^^^^^ ^ >a : { x: number; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >x : number @@ -260,7 +260,7 @@ function test4( arg6: ((a?: {x: number}, b?: {x: number}) => number) | ((...a: {y: number}[]) => number), >arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) -> : ^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^ ^^ ^^^^^ ^ >a : { x: number; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >x : number @@ -279,13 +279,13 @@ function test4( >arg1() : number > : ^^^^^^ >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ arg1({x: 0, y: 0}); >arg1({x: 0, y: 0}) : number > : ^^^^^^ >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -301,7 +301,7 @@ function test4( >arg1({x: 0, y: 0}, {x: 1, y: 1}) : number > : ^^^^^^ >arg1 : ((...objs: { x: number; }[]) => number) | ((...objs: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -327,7 +327,7 @@ function test4( >arg2({x: 0}, {x: 0}) : number > : ^^^^^^ >arg2 : ((a: { x: number; }, b: object) => number) | ((a: object, b: { x: number; }) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >{x: 0} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -345,7 +345,7 @@ function test4( >arg3({x: 0}) : number > : ^^^^^^ >arg3 : ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -357,7 +357,7 @@ function test4( >arg3({x: 0}, {x: 0, y: 0}) : number > : ^^^^^^ >arg3 : ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -379,7 +379,7 @@ function test4( >arg3({x: 0}, {x: 0, y: 0}, {x: 0, y: 0}) : number > : ^^^^^^ >arg3 : ((a: { x: number; }, ...objs: { y: number; }[]) => number) | ((...objs: { x: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -410,14 +410,14 @@ function test4( arg4(); >arg4() : number > : ^^^^^^ ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ arg4({x: 0, y: 0}); >arg4({x: 0, y: 0}) : number > : ^^^^^^ ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -432,8 +432,8 @@ function test4( arg4({x: 0, y: 0}, {x: 0}); >arg4({x: 0, y: 0}, {x: 0}) : number > : ^^^^^^ ->arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg4 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -454,14 +454,14 @@ function test4( arg5(); >arg5() : number > : ^^^^^^ ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ arg5({x: 0, y: 0}); >arg5({x: 0, y: 0}) : number > : ^^^^^^ ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -476,8 +476,8 @@ function test4( arg5({x: 0, y: 0}, {x: 0}); >arg5({x: 0, y: 0}, {x: 0}) : number > : ^^^^^^ ->arg5 : ((a?: { x: number; } | undefined, ...b: { x: number; }[]) => number) | ((a?: { y: number; } | undefined) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg5 : ((a?: { x: number; }, ...b: { x: number; }[]) => number) | ((a?: { y: number; }) => number) +> : ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -498,14 +498,14 @@ function test4( arg6(); >arg6() : number > : ^^^^^^ ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ arg6({x: 0, y: 0}); >arg6({x: 0, y: 0}) : number > : ^^^^^^ ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -520,8 +520,8 @@ function test4( arg6({x: 0, y: 0}, {x: 0, y: 0}); >arg6({x: 0, y: 0}, {x: 0, y: 0}) : number > : ^^^^^^ ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -546,8 +546,8 @@ function test4( arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}); >arg6({x: 0, y: 0}, {x: 0, y: 0}, {y: 0}) : number > : ^^^^^^ ->arg6 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((...a: { y: number; }[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg6 : ((a?: { x: number; }, b?: { x: number; }) => number) | ((...a: { y: number; }[]) => number) +> : ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{x: 0, y: 0} : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -584,7 +584,7 @@ function test5() { // Pair of non-like intrinsics function render(url?: string): React.ReactNode { >render : (url?: string) => React.ReactNode -> : ^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >url : string | undefined > : ^^^^^^^^^^^^^^^^^^ >React : any @@ -614,7 +614,7 @@ function test5() { // Union of all intrinsics and components of `any` function App(props: { component:React.ReactType }) { >App : (props: { component: React.ReactType; }) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : { component: React.ReactType; } > : ^^^^^^^^^^^^^ ^^^ >component : React.ReactType diff --git a/tests/baselines/reference/cannotIndexGenericWritingError.types b/tests/baselines/reference/cannotIndexGenericWritingError.types index 9e279af48c622..997ca9c1e5f8c 100644 --- a/tests/baselines/reference/cannotIndexGenericWritingError.types +++ b/tests/baselines/reference/cannotIndexGenericWritingError.types @@ -5,7 +5,7 @@ function foo>(target: T, p: string | symbol) { >foo : >(target: T, p: string | symbol) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >target : T > : ^ >p : string | symbol @@ -26,7 +26,7 @@ function foo>(target: T, p: string | symb function foo2(target: T, p: string | number) { >foo2 : (target: T, p: string | number) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ >target : T diff --git a/tests/baselines/reference/captureThisInSuperCall.types b/tests/baselines/reference/captureThisInSuperCall.types index 99dc92559f4a1..8731efb5b53b1 100644 --- a/tests/baselines/reference/captureThisInSuperCall.types +++ b/tests/baselines/reference/captureThisInSuperCall.types @@ -25,7 +25,7 @@ class B extends A { >test : () => void > : ^^^^^^^^^^ >() => this.someMethod() : () => void -> : ^^^^^^^^^^ +> : >this.someMethod() : void > : ^^^^ >this.someMethod : () => void diff --git a/tests/baselines/reference/capturedLetConstInLoop1.types b/tests/baselines/reference/capturedLetConstInLoop1.types index 3da4accf04c7e..04d8d5b6e9dc9 100644 --- a/tests/baselines/reference/capturedLetConstInLoop1.types +++ b/tests/baselines/reference/capturedLetConstInLoop1.types @@ -3,7 +3,7 @@ === capturedLetConstInLoop1.ts === declare function use(x: any): any; >use : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any //==== let @@ -337,7 +337,7 @@ for (let y = (use(() => y), 0); y < 1; ++y) { > : ^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -365,7 +365,7 @@ for (let y = 0; use(() => y), y < 1; ++y) { > : ^^^^^^^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -397,7 +397,7 @@ for (let y = 0; y < 1; use(() => y), ++y) { > : ^^^^^^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -417,7 +417,7 @@ for (let y = (use(() => y), 0); use(() => y), y < 1; use(() => y), ++y) { > : ^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -428,7 +428,7 @@ for (let y = (use(() => y), 0); use(() => y), y < 1; use(() => y), ++y) { > : ^^^^^^^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -443,7 +443,7 @@ for (let y = (use(() => y), 0); use(() => y), y < 1; use(() => y), ++y) { > : ^^^^^^ >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number @@ -456,7 +456,7 @@ for (let y = (use(() => y), 0); use(() => y), y < 1; use(() => y), ++y) { use(() => y); >use(() => y) : any >use : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >() => y : () => number > : ^^^^^^^^^^^^ >y : number diff --git a/tests/baselines/reference/capturedLetConstInLoop10.types b/tests/baselines/reference/capturedLetConstInLoop10.types index 432f5bd763a73..49d47bd287ef5 100644 --- a/tests/baselines/reference/capturedLetConstInLoop10.types +++ b/tests/baselines/reference/capturedLetConstInLoop10.types @@ -21,7 +21,7 @@ class A { >f : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -29,11 +29,11 @@ class A { >this.bar(f()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f() : number > : ^^^^^^ >f : () => number @@ -42,7 +42,7 @@ class A { } bar(a: number) { >bar : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ } @@ -63,7 +63,7 @@ class A { >a : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -79,7 +79,7 @@ class A { >b : () => number > : ^^^^^^^^^^^^ >function() { return y; } : () => number -> : ^^^^^^^^^^^^ +> : >y : number > : ^^^^^^ @@ -87,11 +87,11 @@ class A { >this.bar(b()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b() : number > : ^^^^^^ >b : () => number @@ -101,11 +101,11 @@ class A { >this.bar(a()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a() : number > : ^^^^^^ >a : () => number @@ -128,7 +128,7 @@ class A { >a : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -136,11 +136,11 @@ class A { >this.bar(a()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a() : number > : ^^^^^^ >a : () => number @@ -158,7 +158,7 @@ class A { >b : () => number > : ^^^^^^^^^^^^ >function() { return y; } : () => number -> : ^^^^^^^^^^^^ +> : >y : number > : ^^^^^^ @@ -166,11 +166,11 @@ class A { >this.bar(b()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b() : number > : ^^^^^^ >b : () => number @@ -194,7 +194,7 @@ class B { () => { >() => { for (let x of [0]) { let f = () => x; this.bar(f()); } } : () => void -> : ^^^^^^^^^^ +> : for (let x of [0]) { >x : number @@ -208,7 +208,7 @@ class B { >f : () => number > : ^^^^^^^^^^^^ >() => x : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -216,11 +216,11 @@ class B { >this.bar(f()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f() : number > : ^^^^^^ >f : () => number @@ -230,7 +230,7 @@ class B { } bar(a: number) { >bar : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop10_ES6.types b/tests/baselines/reference/capturedLetConstInLoop10_ES6.types index 15ada17afd899..b24a792834ca9 100644 --- a/tests/baselines/reference/capturedLetConstInLoop10_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop10_ES6.types @@ -21,7 +21,7 @@ class A { >f : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -29,11 +29,11 @@ class A { >this.bar(f()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f() : number > : ^^^^^^ >f : () => number @@ -42,7 +42,7 @@ class A { } bar(a: number) { >bar : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ } @@ -63,7 +63,7 @@ class A { >a : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -79,7 +79,7 @@ class A { >b : () => number > : ^^^^^^^^^^^^ >function() { return y; } : () => number -> : ^^^^^^^^^^^^ +> : >y : number > : ^^^^^^ @@ -87,11 +87,11 @@ class A { >this.bar(b()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b() : number > : ^^^^^^ >b : () => number @@ -101,11 +101,11 @@ class A { >this.bar(a()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a() : number > : ^^^^^^ >a : () => number @@ -128,7 +128,7 @@ class A { >a : () => number > : ^^^^^^^^^^^^ >function() { return x; } : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -136,11 +136,11 @@ class A { >this.bar(a()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a() : number > : ^^^^^^ >a : () => number @@ -158,7 +158,7 @@ class A { >b : () => number > : ^^^^^^^^^^^^ >function() { return y; } : () => number -> : ^^^^^^^^^^^^ +> : >y : number > : ^^^^^^ @@ -166,11 +166,11 @@ class A { >this.bar(b()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b() : number > : ^^^^^^ >b : () => number @@ -194,7 +194,7 @@ class B { () => { >() => { for (let x of [0]) { let f = () => x; this.bar(f()); } } : () => void -> : ^^^^^^^^^^ +> : for (let x of [0]) { >x : number @@ -208,7 +208,7 @@ class B { >f : () => number > : ^^^^^^^^^^^^ >() => x : () => number -> : ^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ @@ -216,11 +216,11 @@ class B { >this.bar(f()) : void > : ^^^^ >this.bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f() : number > : ^^^^^^ >f : () => number @@ -230,7 +230,7 @@ class B { } bar(a: number) { >bar : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop13.types b/tests/baselines/reference/capturedLetConstInLoop13.types index 9b770484ae84c..1dadefab079b8 100644 --- a/tests/baselines/reference/capturedLetConstInLoop13.types +++ b/tests/baselines/reference/capturedLetConstInLoop13.types @@ -10,11 +10,11 @@ class Main { >this.register("a", "b", "c") : void > : ^^^^ >this.register : (...names: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >register : (...names: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"a" : "a" > : ^^^ >"b" : "b" @@ -25,7 +25,7 @@ class Main { private register(...names: string[]): void { >register : (...names: string[]) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >names : string[] > : ^^^^^^^^ @@ -39,11 +39,11 @@ class Main { >this.bar({ [name + ".a"]: () => { this.foo(name); }, }) : void > : ^^^^ >this.bar : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ [name + ".a"]: () => { this.foo(name); }, } : { [x: string]: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -57,15 +57,15 @@ class Main { >".a" : ".a" > : ^^^^ >() => { this.foo(name); } : () => void -> : ^^^^^^^^^^ +> : >this.foo(name) : void > : ^^^^ >this.foo : (name: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >foo : (name: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >name : string > : ^^^^^^ @@ -75,12 +75,12 @@ class Main { private bar(a: any): void { } >bar : (a: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any private foo(name: string): void { } >foo : (name: string) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ diff --git a/tests/baselines/reference/capturedLetConstInLoop2.types b/tests/baselines/reference/capturedLetConstInLoop2.types index 855e31649e09d..40c925a9355ee 100644 --- a/tests/baselines/reference/capturedLetConstInLoop2.types +++ b/tests/baselines/reference/capturedLetConstInLoop2.types @@ -4,7 +4,7 @@ // ========let function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x of []) { @@ -46,7 +46,7 @@ function foo0(x) { function foo0_1(x) { >foo0_1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x in []) { @@ -93,7 +93,7 @@ function foo0_1(x) { function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0; x < 1; ++x) { @@ -150,7 +150,7 @@ function foo1(x) { function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -195,7 +195,7 @@ function foo2(x) { function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -243,7 +243,7 @@ function foo3(x) { function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -306,7 +306,7 @@ function foo4(x) { function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0, y = 1; x < 1; ++x) { @@ -376,7 +376,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -429,7 +429,7 @@ function foo6(x) { function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -483,7 +483,7 @@ function foo7(x) { function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -554,7 +554,7 @@ function foo8(x) { ///=======const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x of []) { @@ -596,7 +596,7 @@ function foo0_c(x) { function foo0_1_c(x) { >foo0_1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x in []) { @@ -643,7 +643,7 @@ function foo0_1_c(x) { function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0; x < 1;) { @@ -696,7 +696,7 @@ function foo1_c(x) { function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -741,7 +741,7 @@ function foo2_c(x) { function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -796,7 +796,7 @@ function foo3_c(x) { function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -855,7 +855,7 @@ function foo4_c(x) { function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0, y = 1; x < 1;) { @@ -921,7 +921,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -988,7 +988,7 @@ function foo6_c(x) { function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -1056,7 +1056,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { diff --git a/tests/baselines/reference/capturedLetConstInLoop2_ES6.types b/tests/baselines/reference/capturedLetConstInLoop2_ES6.types index 32ce9af2583f3..12d361f3fa583 100644 --- a/tests/baselines/reference/capturedLetConstInLoop2_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop2_ES6.types @@ -4,7 +4,7 @@ // ========let function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x of []) { @@ -46,7 +46,7 @@ function foo0(x) { function foo0_1(x) { >foo0_1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x in []) { @@ -93,7 +93,7 @@ function foo0_1(x) { function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0; x < 1; ++x) { @@ -150,7 +150,7 @@ function foo1(x) { function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -195,7 +195,7 @@ function foo2(x) { function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -243,7 +243,7 @@ function foo3(x) { function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -306,7 +306,7 @@ function foo4(x) { function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0, y = 1; x < 1; ++x) { @@ -376,7 +376,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -429,7 +429,7 @@ function foo6(x) { function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -483,7 +483,7 @@ function foo7(x) { function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -554,7 +554,7 @@ function foo8(x) { ///=======const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x of []) { @@ -596,7 +596,7 @@ function foo0_c(x) { function foo0_1_c(x) { >foo0_1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x in []) { @@ -643,7 +643,7 @@ function foo0_1_c(x) { function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0; x < 1;) { @@ -696,7 +696,7 @@ function foo1_c(x) { function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -741,7 +741,7 @@ function foo2_c(x) { function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -796,7 +796,7 @@ function foo3_c(x) { function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -855,7 +855,7 @@ function foo4_c(x) { function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0, y = 1; x < 1;) { @@ -921,7 +921,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -988,7 +988,7 @@ function foo6_c(x) { function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -1056,7 +1056,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { diff --git a/tests/baselines/reference/capturedLetConstInLoop3.types b/tests/baselines/reference/capturedLetConstInLoop3.types index 277ae68e215bb..6c844b489daca 100644 --- a/tests/baselines/reference/capturedLetConstInLoop3.types +++ b/tests/baselines/reference/capturedLetConstInLoop3.types @@ -4,12 +4,12 @@ ///=========let declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x of []) { @@ -43,13 +43,13 @@ function foo0(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo0_1(x) { >foo0_1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x in []) { @@ -92,14 +92,14 @@ function foo0_1(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0; x < 1; ++x) { @@ -152,14 +152,14 @@ function foo1(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -210,14 +210,14 @@ function foo2(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -256,13 +256,13 @@ function foo3(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -321,14 +321,14 @@ function foo4(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0, y = 1; x < 1; ++x) { @@ -393,7 +393,7 @@ function foo5(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -401,7 +401,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -446,13 +446,13 @@ function foo6(x) { use(v) >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -497,14 +497,14 @@ function foo7(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -571,14 +571,14 @@ function foo8(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } //===const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x of []) { @@ -612,13 +612,13 @@ function foo0_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo0_1_c(x) { >foo0_1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x in []) { @@ -661,14 +661,14 @@ function foo0_1_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0; x < 1;) { @@ -717,14 +717,14 @@ function foo1_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -775,14 +775,14 @@ function foo2_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -826,13 +826,13 @@ function foo3_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -887,14 +887,14 @@ function foo4_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0, y = 1; x < 1;) { @@ -955,7 +955,7 @@ function foo5_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -963,7 +963,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -1026,14 +1026,14 @@ function foo6_c(x) { use(v) >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -1096,7 +1096,7 @@ function foo7_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1104,7 +1104,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -1167,7 +1167,7 @@ function foo8_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop3_ES6.types b/tests/baselines/reference/capturedLetConstInLoop3_ES6.types index f2b0c00c25319..15352e1fd5e17 100644 --- a/tests/baselines/reference/capturedLetConstInLoop3_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop3_ES6.types @@ -4,12 +4,12 @@ ///=========let declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x of []) { @@ -43,13 +43,13 @@ function foo0(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo0_1(x) { >foo0_1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x in []) { @@ -92,14 +92,14 @@ function foo0_1(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0; x < 1; ++x) { @@ -152,14 +152,14 @@ function foo1(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -210,14 +210,14 @@ function foo2(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -256,13 +256,13 @@ function foo3(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -321,14 +321,14 @@ function foo4(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let x = 0, y = 1; x < 1; ++x) { @@ -393,7 +393,7 @@ function foo5(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -401,7 +401,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -446,13 +446,13 @@ function foo6(x) { use(v) >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -497,14 +497,14 @@ function foo7(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (let y = 0; y < 1; ++y) { @@ -571,14 +571,14 @@ function foo8(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } //===const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x of []) { @@ -612,13 +612,13 @@ function foo0_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo0_1_c(x) { >foo0_1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x in []) { @@ -661,14 +661,14 @@ function foo0_1_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0; x < 1;) { @@ -717,14 +717,14 @@ function foo1_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -775,14 +775,14 @@ function foo2_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -826,13 +826,13 @@ function foo3_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any } function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -887,14 +887,14 @@ function foo4_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const x = 0, y = 1; x < 1;) { @@ -955,7 +955,7 @@ function foo5_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -963,7 +963,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any while (1 === 1) { @@ -1026,14 +1026,14 @@ function foo6_c(x) { use(v) >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any do { @@ -1096,7 +1096,7 @@ function foo7_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1104,7 +1104,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any for (const y = 0; y < 1;) { @@ -1167,7 +1167,7 @@ function foo8_c(x) { use(v); >use(v) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop5.types b/tests/baselines/reference/capturedLetConstInLoop5.types index 00cc381c2de9f..8b0fc5a757b83 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5.types +++ b/tests/baselines/reference/capturedLetConstInLoop5.types @@ -3,14 +3,14 @@ === capturedLetConstInLoop5.ts === declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any > : ^^^ //====let function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -66,14 +66,14 @@ function foo0(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo00(x) { >foo00 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -129,14 +129,14 @@ function foo00(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -202,14 +202,14 @@ function foo1(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -273,14 +273,14 @@ function foo2(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -339,14 +339,14 @@ function foo3(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -418,14 +418,14 @@ function foo4(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -503,7 +503,7 @@ function foo5(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -511,7 +511,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -583,14 +583,14 @@ function foo6(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -661,7 +661,7 @@ function foo7(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } @@ -669,7 +669,7 @@ function foo7(x) { function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -749,7 +749,7 @@ function foo8(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -757,7 +757,7 @@ function foo8(x) { //====const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -813,14 +813,14 @@ function foo0_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo00_c(x) { >foo00_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -876,14 +876,14 @@ function foo00_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -945,14 +945,14 @@ function foo1_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1016,14 +1016,14 @@ function foo2_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1084,14 +1084,14 @@ function foo3_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1159,14 +1159,14 @@ function foo4_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1240,7 +1240,7 @@ function foo5_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1248,7 +1248,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1324,14 +1324,14 @@ function foo6_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1406,7 +1406,7 @@ function foo7_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1414,7 +1414,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1490,7 +1490,7 @@ function foo8_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop5_ES6.types b/tests/baselines/reference/capturedLetConstInLoop5_ES6.types index 5d0ea1bf87170..bb3ab6bad1fa3 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop5_ES6.types @@ -3,14 +3,14 @@ === capturedLetConstInLoop5_ES6.ts === declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any > : ^^^ //====let function foo0(x) { >foo0 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -66,14 +66,14 @@ function foo0(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo00(x) { >foo00 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -129,14 +129,14 @@ function foo00(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1(x) { >foo1 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -202,14 +202,14 @@ function foo1(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2(x) { >foo2 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -273,14 +273,14 @@ function foo2(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3(x) { >foo3 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -339,14 +339,14 @@ function foo3(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo4(x) { >foo4 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -418,14 +418,14 @@ function foo4(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5(x) { >foo5 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -503,7 +503,7 @@ function foo5(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -511,7 +511,7 @@ function foo5(x) { function foo6(x) { >foo6 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -583,14 +583,14 @@ function foo6(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo7(x) { >foo7 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -661,7 +661,7 @@ function foo7(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } @@ -669,7 +669,7 @@ function foo7(x) { function foo8(x) { >foo8 : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -749,7 +749,7 @@ function foo8(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -757,7 +757,7 @@ function foo8(x) { //====const function foo0_c(x) { >foo0_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -813,14 +813,14 @@ function foo0_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo00_c(x) { >foo00_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -876,14 +876,14 @@ function foo00_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : string > : ^^^^^^ } function foo1_c(x) { >foo1_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -945,14 +945,14 @@ function foo1_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo2_c(x) { >foo2_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1016,14 +1016,14 @@ function foo2_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo3_c(x) { >foo3_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1084,14 +1084,14 @@ function foo3_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } function foo4_c(x) { >foo4_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1159,14 +1159,14 @@ function foo4_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo5_c(x) { >foo5_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1240,7 +1240,7 @@ function foo5_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1248,7 +1248,7 @@ function foo5_c(x) { function foo6_c(x) { >foo6_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1324,14 +1324,14 @@ function foo6_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } function foo7_c(x) { >foo7_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1406,7 +1406,7 @@ function foo7_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } @@ -1414,7 +1414,7 @@ function foo7_c(x) { function foo8_c(x) { >foo8_c : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1490,7 +1490,7 @@ function foo8_c(x) { >use(v) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : number > : ^^^^^^ } diff --git a/tests/baselines/reference/capturedLetConstInLoop9.types b/tests/baselines/reference/capturedLetConstInLoop9.types index 9f9399726697c..960deb5866f12 100644 --- a/tests/baselines/reference/capturedLetConstInLoop9.types +++ b/tests/baselines/reference/capturedLetConstInLoop9.types @@ -111,7 +111,7 @@ for (let x = 0; x < 1; ++x) { declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any function foo() { @@ -289,28 +289,28 @@ function foo() { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ use(z); >use(z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ use(x1); >use(x1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x1 : number > : ^^^^^^ use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : number > : ^^^^^^ } @@ -425,7 +425,7 @@ class C { >f : () => number > : ^^^^^^^^^^^^ >() => this.N * i : () => number -> : ^^^^^^^^^^^^ +> : >this.N * i : number > : ^^^^^^ >this.N : number diff --git a/tests/baselines/reference/capturedLetConstInLoop9_ES6.types b/tests/baselines/reference/capturedLetConstInLoop9_ES6.types index 83b2f421ba1a0..eab4c2d5bce69 100644 --- a/tests/baselines/reference/capturedLetConstInLoop9_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop9_ES6.types @@ -111,7 +111,7 @@ for (let x = 0; x < 1; ++x) { declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any function foo() { @@ -288,28 +288,28 @@ function foo() { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ use(z); >use(z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ use(x1); >use(x1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x1 : number > : ^^^^^^ use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : number > : ^^^^^^ } @@ -424,7 +424,7 @@ class C { >f : () => number > : ^^^^^^^^^^^^ >() => this.N * i : () => number -> : ^^^^^^^^^^^^ +> : >this.N * i : number > : ^^^^^^ >this.N : number diff --git a/tests/baselines/reference/capturedParametersInInitializers1.types b/tests/baselines/reference/capturedParametersInInitializers1.types index 3a69b1b4762ce..4a2cb23750ec3 100644 --- a/tests/baselines/reference/capturedParametersInInitializers1.types +++ b/tests/baselines/reference/capturedParametersInInitializers1.types @@ -4,7 +4,7 @@ // ok - usage is deferred function foo1(y = class {c = x}, x = 1) { >foo1 : (y?: typeof (Anonymous class), x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >class {c = x} : typeof (Anonymous class) @@ -32,11 +32,11 @@ function foo1(y = class {c = x}, x = 1) { // ok - used in file function foo2(y = function(x: typeof z) {}, z = 1) { >foo2 : (y?: (x: typeof z) => void, z?: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : (x: typeof z) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(x: typeof z) {} : (x: typeof z) => void -> : ^^^^ ^^^^^^^^^ +> : >x : number > : ^^^^^^ >z : number @@ -55,7 +55,7 @@ let a; function foo3(y = { x: a }, z = 1) { >foo3 : (y?: { x: typeof z; }, z?: number) => void -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ >y : { x: typeof z; } > : ^^^^^ ^^^ >{ x: a } : { x: typeof z; } @@ -78,7 +78,7 @@ function foo3(y = { x: a }, z = 1) { // error - used before declaration function foo4(y = {z}, z = 1) { >foo4 : (y?: { z: number; }, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : { z: number; } > : ^^^^^^^^^^^^^^ >{z} : { z: number; } @@ -94,7 +94,7 @@ function foo4(y = {z}, z = 1) { // error - used before declaration, IIFEs are inlined function foo5(y = (() => z)(), z = 1) { >foo5 : (y?: number, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >(() => z)() : number @@ -114,11 +114,11 @@ function foo5(y = (() => z)(), z = 1) { // ok - IIFE inside another function function foo6(y = () => (() => z)(), z = 1) { >foo6 : (y?: () => number, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : () => number > : ^^^^^^^^^^^^ >() => (() => z)() : () => number -> : ^^^^^^^^^^^^ +> : >(() => z)() : number > : ^^^^^^ >(() => z) : () => number @@ -136,7 +136,7 @@ function foo6(y = () => (() => z)(), z = 1) { // ok - used inside immediately invoked generator function function foo7(y = (function*() {yield z})(), z = 1) { >foo7 : (y?: Generator, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(function*() {yield z})() : Generator @@ -158,7 +158,7 @@ function foo7(y = (function*() {yield z})(), z = 1) { // ok - used inside immediately invoked async function function foo8(y = (async () => z)(), z = 1) { >foo8 : (y?: Promise, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : Promise > : ^^^^^^^^^^^^^^^ >(async () => z)() : Promise @@ -178,11 +178,11 @@ function foo8(y = (async () => z)(), z = 1) { // error - used as computed name of method function foo9(y = {[z]() { return z; }}, z = 1) { >foo9 : (y?: { [x: number]: () => number; }, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : { [x: number]: () => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{[z]() { return z; }} : { [x: number]: () => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >[z] : () => number > : ^^^^^^^^^^^^ >z : number diff --git a/tests/baselines/reference/capturedParametersInInitializers2.types b/tests/baselines/reference/capturedParametersInInitializers2.types index 794ccce1e23e9..200b36a739e25 100644 --- a/tests/baselines/reference/capturedParametersInInitializers2.types +++ b/tests/baselines/reference/capturedParametersInInitializers2.types @@ -3,7 +3,7 @@ === capturedParametersInInitializers2.ts === function foo( >foo : (y?: typeof (Anonymous class), x?: number, z?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ y = class { >y : typeof (Anonymous class) @@ -61,7 +61,7 @@ function foo( } function foo2(y = class {[x] = x}, x = 1) { >foo2 : (y?: typeof (Anonymous class), x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >y : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >class {[x] = x} : typeof (Anonymous class) diff --git a/tests/baselines/reference/capturedVarInLoop.types b/tests/baselines/reference/capturedVarInLoop.types index d4e23fa42d8e8..ad1687cfb915c 100644 --- a/tests/baselines/reference/capturedVarInLoop.types +++ b/tests/baselines/reference/capturedVarInLoop.types @@ -33,20 +33,20 @@ for (var i = 0; i < 10; i++) { let lambda1 = (y) => { }; >lambda1 : (y: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(y) => { } : (y: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >y : any let lambda2 = () => lambda1(len); >lambda2 : () => void > : ^^^^^^^^^^ >() => lambda1(len) : () => void -> : ^^^^^^^^^^ +> : >lambda1(len) : void > : ^^^^ >lambda1 : (y: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >len : number > : ^^^^^^ } diff --git a/tests/baselines/reference/castTest.types b/tests/baselines/reference/castTest.types index 9e30b77577671..f12500029186d 100644 --- a/tests/baselines/reference/castTest.types +++ b/tests/baselines/reference/castTest.types @@ -50,9 +50,9 @@ var ar = null; var f = <(res : number) => void>null; >f : (res: number) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ><(res : number) => void>null : (res: number) => void -> : ^^^^^^ ^^^^^ +> : >res : number > : ^^^^^^ @@ -70,7 +70,7 @@ declare class Point add(dx: number, dy: number): Point; >add : (dx: number, dy: number) => Point -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dx : number > : ^^^^^^ >dy : number @@ -78,7 +78,7 @@ declare class Point mult(p: Point): Point; >mult : (p: Point) => Point -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ @@ -95,9 +95,9 @@ var p_cast = ({ > ({ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }}) : Point > : ^^^^^ >({ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }}) : { x: number; y: number; add: (dx: number, dy: number) => Point; mult: (p: Point) => Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >{ x: 0, y: 0, add: function(dx, dy) { return new Point(this.x + dx, this.y + dy); }, mult: function(p) { return p; }} : { x: number; y: number; add: (dx: number, dy: number) => Point; mult: (p: Point) => Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ x: 0, >x : number @@ -113,9 +113,9 @@ var p_cast = ({ add: function(dx, dy) { >add : (dx: number, dy: number) => Point -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >function(dx, dy) { return new Point(this.x + dx, this.y + dy); } : (dx: number, dy: number) => Point -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >dx : number > : ^^^^^^ >dy : number @@ -146,9 +146,9 @@ var p_cast = ({ }, mult: function(p) { return p; } >mult : (p: Point) => Point -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >function(p) { return p; } : (p: Point) => Point -> : ^^^^^^^^^^^^^^^^^^^ +> : >p : Point > : ^^^^^ >p : Point diff --git a/tests/baselines/reference/castingTuple.types b/tests/baselines/reference/castingTuple.types index 55c4753184fd5..f904abcf0563e 100644 --- a/tests/baselines/reference/castingTuple.types +++ b/tests/baselines/reference/castingTuple.types @@ -63,9 +63,9 @@ var numStrTuple: [number, string] = [5, "foo"]; var emptyObjTuple = <[{}, {}]>numStrTuple; >emptyObjTuple : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ ><[{}, {}]>numStrTuple : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >numStrTuple : [number, string] > : ^^^^^^^^^^^^^^^^ @@ -173,9 +173,9 @@ var array1 = <{}[]>emptyObjTuple; >array1 : {}[] > : ^^^^ ><{}[]>emptyObjTuple : {}[] -> : ^^^^ +> : ^^ >emptyObjTuple : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ var unionTuple: [C, string | number] = [new C(), "foo"]; >unionTuple : [C, string | number] diff --git a/tests/baselines/reference/catchClauseWithTypeAnnotation.types b/tests/baselines/reference/catchClauseWithTypeAnnotation.types index 26724329ee14f..e7f65ce4cd80d 100644 --- a/tests/baselines/reference/catchClauseWithTypeAnnotation.types +++ b/tests/baselines/reference/catchClauseWithTypeAnnotation.types @@ -11,7 +11,7 @@ type unknown1 = unknown; function fn(x: boolean) { >fn : (x: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean > : ^^^^^^^ @@ -72,11 +72,11 @@ function fn(x: boolean) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -86,11 +86,11 @@ function fn(x: boolean) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -126,11 +126,11 @@ function fn(x: boolean) { >console.log() : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ // @ts-ignore catch (e: number) { // e should not be a `number` @@ -141,11 +141,11 @@ function fn(x: boolean) { >console.log(e.toLowerCase()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >e.toLowerCase() : any > : ^^^ >e.toLowerCase : any @@ -205,11 +205,11 @@ function fn(x: boolean) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ @@ -219,11 +219,11 @@ function fn(x: boolean) { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.types b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.types index a6c6669d65097..b53cfb627cd78 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.types +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.types @@ -11,9 +11,9 @@ class Chain { then(cb: (x: T) => S): Chain { >then : (cb: (x: T) => S) => Chain -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ >cb : (x: T) => S -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -55,19 +55,19 @@ class C extends B { >(new Chain(new A)).then(a => new B).then(b => new C).then(c => new B).then(b => new A) : Chain > : ^^^^^^^^ >(new Chain(new A)).then(a => new B).then(b => new C).then(c => new B).then : (cb: (x: C) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(new A)).then(a => new B).then(b => new C).then(c => new B) : Chain > : ^^^^^^^^ >(new Chain(new A)).then(a => new B).then(b => new C).then : (cb: (x: C) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(new A)).then(a => new B).then(b => new C) : Chain > : ^^^^^^^^ >(new Chain(new A)).then(a => new B).then : (cb: (x: B) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(new A)).then(a => new B) : Chain > : ^^^^^^^^ >(new Chain(new A)).then : (cb: (x: A) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(new A)) : Chain > : ^^^^^^^^ >new Chain(new A) : Chain @@ -79,9 +79,9 @@ class C extends B { >A : typeof A > : ^^^^^^^^ >then : (cb: (x: A) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a => new B : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >a : A > : ^ >new B : B @@ -89,9 +89,9 @@ class C extends B { >B : typeof B > : ^^^^^^^^ >then : (cb: (x: B) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >b => new C : (b: B) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b : B > : ^ >new C : C @@ -99,9 +99,9 @@ class C extends B { >C : typeof C > : ^^^^^^^^ >then : (cb: (x: C) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >c => new B : (c: C) => B -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >c : C > : ^ >new B : B @@ -109,9 +109,9 @@ class C extends B { >B : typeof B > : ^^^^^^^^ >then : (cb: (x: C) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >b => new A : (b: C) => A -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b : C > : ^ >new A : A diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.types b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.types index 8076c903677be..7f6ade300d2bd 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.types +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.types @@ -11,9 +11,9 @@ class Chain { then(cb: (x: T) => S): Chain { >then : (cb: (x: T) => S) => Chain -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ >cb : (x: T) => S -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -30,11 +30,11 @@ class Chain { >(new Chain(t)).then(tt => s).then(ss => t) : Chain > : ^^^^^^^^ >(new Chain(t)).then(tt => s).then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(t)).then(tt => s) : Chain > : ^^^^^^^^ >(new Chain(t)).then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >(new Chain(t)) : Chain > : ^^^^^^^^ >new Chain(t) : Chain @@ -44,17 +44,17 @@ class Chain { >t : T > : ^ >then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >tt => s : (tt: T) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => t : (ss: S) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >t : T @@ -65,7 +65,7 @@ class Chain { >(new Chain(s)).then(ss => t) : Chain > : ^^^^^^^^ >(new Chain(s)).then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(s)) : Chain > : ^^^^^^^^ >new Chain(s) : Chain @@ -75,9 +75,9 @@ class Chain { >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => t : (ss: S) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >t : T @@ -88,15 +88,15 @@ class Chain { >(new Chain(t)).then(tt => t).then(tt => t).then(tt => t) : Chain > : ^^^^^^^^ >(new Chain(t)).then(tt => t).then(tt => t).then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >(new Chain(t)).then(tt => t).then(tt => t) : Chain > : ^^^^^^^^ >(new Chain(t)).then(tt => t).then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >(new Chain(t)).then(tt => t) : Chain > : ^^^^^^^^ >(new Chain(t)).then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >(new Chain(t)) : Chain > : ^^^^^^^^ >new Chain(t) : Chain @@ -106,25 +106,25 @@ class Chain { >t : T > : ^ >then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T @@ -134,15 +134,15 @@ class Chain { >(new Chain(s)).then(ss => s).then(ss => s).then(ss => s) : Chain > : ^^^^^^^^ >(new Chain(s)).then(ss => s).then(ss => s).then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(s)).then(ss => s).then(ss => s) : Chain > : ^^^^^^^^ >(new Chain(s)).then(ss => s).then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(s)).then(ss => s) : Chain > : ^^^^^^^^ >(new Chain(s)).then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain(s)) : Chain > : ^^^^^^^^ >new Chain(s) : Chain @@ -152,25 +152,25 @@ class Chain { >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S @@ -196,9 +196,9 @@ class Chain2 { then(cb: (x: T) => S): Chain2 { >then : (cb: (x: T) => S) => Chain2 -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ >cb : (x: T) => S -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -226,11 +226,11 @@ class Chain2 { >(new Chain2(i)).then(ii => t).then(tt => s) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => t).then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => t) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)) : Chain2 > : ^^^^^^^^^ >new Chain2(i) : Chain2 @@ -240,17 +240,17 @@ class Chain2 { >i : I > : ^ >then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >ii => t : (ii: I) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ii : I > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >tt => s : (tt: T) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >s : S @@ -274,19 +274,19 @@ class Chain2 { >(new Chain2(i)).then(ii => t).then(tt => t).then(tt => t).then(tt => t) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => t).then(tt => t).then(tt => t).then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => t).then(tt => t).then(tt => t) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => t).then(tt => t).then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => t).then(tt => t) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => t).then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => t) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)) : Chain2 > : ^^^^^^^^^ >new Chain2(i) : Chain2 @@ -296,33 +296,33 @@ class Chain2 { >i : I > : ^ >then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >ii => t : (ii: I) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ii : I > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T > : ^ >then : (cb: (x: T) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >tt => t : (tt: T) => T -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >tt : T > : ^ >t : T @@ -344,19 +344,19 @@ class Chain2 { >(new Chain2(i)).then(ii => s).then(ss => s).then(ss => s).then(ss => s) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => s).then(ss => s).then(ss => s).then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => s).then(ss => s).then(ss => s) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => s).then(ss => s).then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => s).then(ss => s) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then(ii => s).then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)).then(ii => s) : Chain2 > : ^^^^^^^^^ >(new Chain2(i)).then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(new Chain2(i)) : Chain2 > : ^^^^^^^^^ >new Chain2(i) : Chain2 @@ -366,33 +366,33 @@ class Chain2 { >i : I > : ^ >then : (cb: (x: I) => S) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >ii => s : (ii: I) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ii : I > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S > : ^ >then : (cb: (x: S) => S_1) => Chain2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ss => s : (ss: S) => S -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >ss : S > : ^ >s : S diff --git a/tests/baselines/reference/chainedPrototypeAssignment.types b/tests/baselines/reference/chainedPrototypeAssignment.types index bc00135946cc0..68edc5ea166cd 100644 --- a/tests/baselines/reference/chainedPrototypeAssignment.types +++ b/tests/baselines/reference/chainedPrototypeAssignment.types @@ -8,7 +8,7 @@ var mod = require('./mod'); >require('./mod') : typeof mod > : ^^^^^^^^^^ >require : (name: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'./mod' : "./mod" > : ^^^^^^^ @@ -40,11 +40,11 @@ a.m('nope') >a.m('nope') : number > : ^^^^^^ >a.m : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : A > : ^ >m : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'nope' : "nope" > : ^^^^^^ @@ -52,18 +52,18 @@ b.m('not really') >b.m('not really') : number > : ^^^^^^ >b.m : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : B > : ^ >m : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'not really' : "not really" > : ^^^^^^^^^^^^ === types.d.ts === declare function require(name: string): any; >require : (name: string) => any -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ @@ -139,28 +139,28 @@ exports.B = B A.prototype = B.prototype = { >A.prototype = B.prototype = { /** @param {number} n */ m(n) { return n + 1 }} : { m(n: number): number; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >A.prototype : { m(n: number): number; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >A : typeof A > : ^^^^^^^^ >prototype : { m(n: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >B.prototype = { /** @param {number} n */ m(n) { return n + 1 }} : { m(n: number): number; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >B.prototype : { m(n: number): number; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >B : typeof B > : ^^^^^^^^ >prototype : { m(n: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >{ /** @param {number} n */ m(n) { return n + 1 }} : { m(n: number): number; } -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ /** @param {number} n */ m(n) { >m : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ diff --git a/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.types b/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.types index 6dfeb9363d4b8..4fec49489dbdc 100644 --- a/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.types +++ b/tests/baselines/reference/chainedSpecializationToObjectTypeLiteral.types @@ -4,33 +4,33 @@ interface Sequence { each(iterator: (value: T) => void): void; >each : (iterator: (value: T) => void) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >iterator : (value: T) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ map(iterator: (value: T) => U): Sequence; >map : (iterator: (value: T) => U) => Sequence -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >iterator : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ filter(iterator: (value: T) => boolean): Sequence; >filter : (iterator: (value: T) => boolean) => Sequence -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >iterator : (value: T) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ groupBy(keySelector: (value: T) => K): Sequence<{ key: K; items: T[]; }>; >groupBy : (keySelector: (value: T) => K) => Sequence<{ key: K; items: T[]; }> -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >keySelector : (value: T) => K -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >key : K @@ -47,15 +47,15 @@ var s2 = s.groupBy(s => s.length); >s2 : Sequence<{ key: number; items: string[]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s.groupBy(s => s.length) : Sequence<{ key: number; items: string[]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^ >s.groupBy : (keySelector: (value: string) => K) => Sequence<{ key: K; items: string[]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : Sequence > : ^^^^^^^^^^^^^^^^ >groupBy : (keySelector: (value: string) => K) => Sequence<{ key: K; items: string[]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -71,13 +71,13 @@ var s3 = s2.each(x => { x.key /* Type is K, should be number */ }); >s2.each(x => { x.key /* Type is K, should be number */ }) : void > : ^^^^ >s2.each : (iterator: (value: { key: number; items: string[]; }) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s2 : Sequence<{ key: number; items: string[]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >each : (iterator: (value: { key: number; items: string[]; }) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => { x.key /* Type is K, should be number */ } : (x: { key: number; items: string[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { key: number; items: string[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x.key : number diff --git a/tests/baselines/reference/checkDestructuringShorthandAssigment.types b/tests/baselines/reference/checkDestructuringShorthandAssigment.types index 0688ca7d182f3..0ca8f3d1a8e9d 100644 --- a/tests/baselines/reference/checkDestructuringShorthandAssigment.types +++ b/tests/baselines/reference/checkDestructuringShorthandAssigment.types @@ -4,7 +4,7 @@ // should not crash while checking function Test({ b = '' } = {}) {} >Test : ({ b }?: { b?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : string > : ^^^^^^ >'' : "" @@ -16,7 +16,7 @@ Test(({ b = '5' } = {})); >Test(({ b = '5' } = {})) : void > : ^^^^ >Test : ({ b }?: { b?: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ b = '5' } = {}) : { b?: any; } > : ^^^^^^^^^^^^ >{ b = '5' } = {} : { b?: any; } diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.types b/tests/baselines/reference/checkExportsObjectAssignProperty.types index 2b2ca542c194e..c925e2a35e5ab 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.types @@ -292,11 +292,11 @@ Object.defineProperty(exports, "thing", { value: 42, writable: true }); >Object.defineProperty(exports, "thing", { value: 42, writable: true }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"thing" : "thing" @@ -316,11 +316,11 @@ Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false >Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"readonlyProp" : "readonlyProp" @@ -340,23 +340,23 @@ Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) { >Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"rwAccessors" : "rwAccessors" > : ^^^^^^^^^^^^^ >{ get() { return 98122 }, set(_) { /*ignore*/ } } : { get(): number; set(_: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >get : () => number > : ^^^^^^^^^^^^ >98122 : 98122 > : ^^^^^ >set : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_ : any > : ^^^ @@ -364,11 +364,11 @@ Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } }); >Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"readonlyAccessor" : "readonlyAccessor" @@ -384,22 +384,22 @@ Object.defineProperty(exports, "setonlyAccessor", { >Object.defineProperty(exports, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"setonlyAccessor" : "setonlyAccessor" > : ^^^^^^^^^^^^^^^^^ >{ /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }} : { set(str: string): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ /** @param {string} str */ set(str) { >set : (str: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >str : string > : ^^^^^^ @@ -426,11 +426,11 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) >Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -454,11 +454,11 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable >Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable: false }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -482,11 +482,11 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -496,13 +496,13 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s >"rwAccessors" : "rwAccessors" > : ^^^^^^^^^^^^^ >{ get() { return 98122 }, set(_) { /*ignore*/ } } : { get(): number; set(_: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >get : () => number > : ^^^^^^^^^^^^ >98122 : 98122 > : ^^^^^ >set : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_ : any > : ^^^ @@ -510,11 +510,11 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 >Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 } }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -534,11 +534,11 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty(module.exports, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -548,12 +548,12 @@ Object.defineProperty(module.exports, "setonlyAccessor", { >"setonlyAccessor" : "setonlyAccessor" > : ^^^^^^^^^^^^^^^^^ >{ /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }} : { set(str: string): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ /** @param {string} str */ set(str) { >set : (str: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >str : string > : ^^^^^^ diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types index 984c3cc1e3a7d..211994a25b7c6 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types @@ -212,11 +212,11 @@ Object.defineProperty(Person.prototype, "thing", { value: 42, writable: true }); >Object.defineProperty(Person.prototype, "thing", { value: 42, writable: true }) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -240,11 +240,11 @@ Object.defineProperty(Person.prototype, "readonlyProp", { value: "Smith", writab >Object.defineProperty(Person.prototype, "readonlyProp", { value: "Smith", writable: false }) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -268,11 +268,11 @@ Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, >Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -282,13 +282,13 @@ Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, >"rwAccessors" : "rwAccessors" > : ^^^^^^^^^^^^^ >{ get() { return 98122 }, set(_) { /*ignore*/ } } : { get(): number; set(_: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >get : () => number > : ^^^^^^^^^^^^ >98122 : 98122 > : ^^^^^ >set : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_ : any > : ^^^ @@ -296,11 +296,11 @@ Object.defineProperty(Person.prototype, "readonlyAccessor", { get() { return 21. >Object.defineProperty(Person.prototype, "readonlyAccessor", { get() { return 21.75 } }) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -320,11 +320,11 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { >Object.defineProperty(Person.prototype, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -334,12 +334,12 @@ Object.defineProperty(Person.prototype, "setonlyAccessor", { >"setonlyAccessor" : "setonlyAccessor" > : ^^^^^^^^^^^^^^^^^ >{ /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }} : { set(str: string): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ /** @param {string} str */ set(str) { >set : (str: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >str : string > : ^^^^^^ diff --git a/tests/baselines/reference/checkIndexConstraintOfJavascriptClassExpression.types b/tests/baselines/reference/checkIndexConstraintOfJavascriptClassExpression.types index e97bb9ca821ec..7c702c431924a 100644 --- a/tests/baselines/reference/checkIndexConstraintOfJavascriptClassExpression.types +++ b/tests/baselines/reference/checkIndexConstraintOfJavascriptClassExpression.types @@ -7,7 +7,7 @@ someFunction(function(BaseClass) { >someFunction : any > : ^^^ >function(BaseClass) { 'use strict'; const DEFAULT_MESSAGE = "nop!"; class Hello extends BaseClass { constructor() { super(); this.foo = "bar"; } _render(error) { const message = error.message || DEFAULT_MESSAGE; } }} : (BaseClass: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >BaseClass : any > : ^^^ @@ -48,7 +48,7 @@ someFunction(function(BaseClass) { } _render(error) { >_render : (error: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >error : any > : ^^^ diff --git a/tests/baselines/reference/checkInfiniteExpansionTermination2.types b/tests/baselines/reference/checkInfiniteExpansionTermination2.types index af570245371ed..4f3d396b8fa21 100644 --- a/tests/baselines/reference/checkInfiniteExpansionTermination2.types +++ b/tests/baselines/reference/checkInfiniteExpansionTermination2.types @@ -13,13 +13,13 @@ interface ISubject extends IObservable { } declare function combineLatest(x: IObservable[]): void; >combineLatest : { (x: IObservable[]): void; (): void; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >x : IObservable[] > : ^^^^^^^^^^^^^^^^^^^^^ declare function combineLatest(): void; >combineLatest : { (x: IObservable[]): void; (): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^ function fn() { >fn : () => void @@ -36,7 +36,7 @@ function fn() { >combineLatest(values) : void > : ^^^^ >combineLatest : { (x: IObservable[]): void; (): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >values : ISubject[] > : ^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types index ef66a3a4f2628..197746e70694d 100644 --- a/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types +++ b/tests/baselines/reference/checkJsObjectLiteralIndexSignatures.types @@ -39,7 +39,7 @@ numericIndex[n].toFixed(); >numericIndex[n].toFixed() : string > : ^^^^^^ >numericIndex[n].toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >numericIndex[n] : number > : ^^^^^^ >numericIndex : { [x: number]: number; } @@ -47,7 +47,7 @@ numericIndex[n].toFixed(); >n : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ const stringIndex = { [s]: 1 }; >stringIndex : { [x: string]: number; } @@ -65,7 +65,7 @@ stringIndex[s].toFixed(); >stringIndex[s].toFixed() : string > : ^^^^^^ >stringIndex[s].toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >stringIndex[s] : number > : ^^^^^^ >stringIndex : { [x: string]: number; } @@ -73,6 +73,6 @@ stringIndex[s].toFixed(); >s : string > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types index 821661d2c2d8f..642d1723cc21c 100644 --- a/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types +++ b/tests/baselines/reference/checkJsTypeDefNoUnusedLocalMarked.types @@ -29,13 +29,13 @@ export = Foo; module.exports = /** @type {FooFun} */(void 0); >module.exports = /** @type {FooFun} */(void 0) : (foo: Foo) => string -> : ^^^^^^ ^^^^^ ->module.exports : (foo: typeof import("file")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->module : { exports: (foo: typeof import("file")) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->exports : (foo: typeof import("file")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ +>module.exports : (foo: Foo) => string +> : ^ ^^ ^^^^^^^^^^^ +>module : { exports: (foo: Foo) => string; } +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ +>exports : (foo: Foo) => string +> : ^ ^^ ^^^^^^^^^^^ >(void 0) : FooFun > : ^^^^^^ >void 0 : undefined diff --git a/tests/baselines/reference/checkJsdocOptionalParamOrder.types b/tests/baselines/reference/checkJsdocOptionalParamOrder.types index 4bc79dcc7c9e5..af93ca4af4201 100644 --- a/tests/baselines/reference/checkJsdocOptionalParamOrder.types +++ b/tests/baselines/reference/checkJsdocOptionalParamOrder.types @@ -9,7 +9,7 @@ */ function foo(a, b, c) {} >foo : (a: number, b?: number, c: number) => void -> : ^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/checkJsdocParamOnVariableDeclaredFunctionExpression.types b/tests/baselines/reference/checkJsdocParamOnVariableDeclaredFunctionExpression.types index 56adc3eda9933..d1c6fc7d1952e 100644 --- a/tests/baselines/reference/checkJsdocParamOnVariableDeclaredFunctionExpression.types +++ b/tests/baselines/reference/checkJsdocParamOnVariableDeclaredFunctionExpression.types @@ -8,11 +8,11 @@ */ var x = function foo(n, s) {} >x : (n?: number | undefined, s?: string) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function foo(n, s) {} : (n?: number | undefined, s?: string) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^ >foo : (n?: number | undefined, s?: string) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >n : number > : ^^^^^^ >s : string @@ -27,13 +27,13 @@ var y; */ y = function bar(b) {} >y = function bar(b) {} : (b: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >y : any > : ^^^ >function bar(b) {} : (b: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >bar : (b: boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : boolean > : ^^^^^^^ @@ -42,15 +42,15 @@ y = function bar(b) {} */ var one = function (s) { }, two = function (untyped) { }; >one : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (s) { } : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : >s : string > : ^^^^^^ >two : (untyped: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (untyped) { } : (untyped: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >untyped : any > : ^^^ diff --git a/tests/baselines/reference/checkJsdocParamTag1.types b/tests/baselines/reference/checkJsdocParamTag1.types index 854c37d353093..fb07b5441edee 100644 --- a/tests/baselines/reference/checkJsdocParamTag1.types +++ b/tests/baselines/reference/checkJsdocParamTag1.types @@ -8,7 +8,7 @@ */ function foo(n, s) {} >foo : (n?: number | undefined, s?: string) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >n : number > : ^^^^^^ >s : string @@ -17,22 +17,22 @@ function foo(n, s) {} foo(); >foo() : void > : ^^^^ ->foo : (n?: number, s?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (n?: number | undefined, s?: string) => void +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ foo(1); >foo(1) : void > : ^^^^ ->foo : (n?: number, s?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (n?: number | undefined, s?: string) => void +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ foo(1, "hi"); >foo(1, "hi") : void > : ^^^^ ->foo : (n?: number, s?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (n?: number | undefined, s?: string) => void +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >"hi" : "hi" diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag1.types b/tests/baselines/reference/checkJsdocSatisfiesTag1.types index fbccee7c7d0ee..352b60b8098c3 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag1.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag1.types @@ -72,21 +72,21 @@ const t4 = /** @satisfies {T2} */ ({ a: "a" }); /** @type {(m: string) => string} */ const t5 = /** @satisfies {T3} */((m) => m.substring(0)); >t5 : (m: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >((m) => m.substring(0)) : (m: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >(m) => m.substring(0) : (m: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >m : string > : ^^^^^^ >m.substring(0) : string > : ^^^^^^ >m.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >m : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag10.types b/tests/baselines/reference/checkJsdocSatisfiesTag10.types index 5689cdadf0a36..e7b3eff74ebda 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag10.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag10.types @@ -38,7 +38,7 @@ let a = p.a.toFixed(); >p.a.toFixed() : string > : ^^^^^^ >p.a.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >p.a : number > : ^^^^^^ >p : { a: number; b: string; x: number; } @@ -46,7 +46,7 @@ let a = p.a.toFixed(); >a : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ let b = p.b.substring(1); >b : string @@ -54,7 +54,7 @@ let b = p.b.substring(1); >p.b.substring(1) : string > : ^^^^^^ >p.b.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >p.b : string > : ^^^^^^ >p : { a: number; b: string; x: number; } @@ -62,7 +62,7 @@ let b = p.b.substring(1); >b : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag13.types b/tests/baselines/reference/checkJsdocSatisfiesTag13.types index 1b6eedd28a757..4062922d59921 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag13.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag13.types @@ -4,13 +4,13 @@ /** @satisfies {{ f: (x: string) => string }} */ const t1 = { f: s => s.toLowerCase() }; // should work >t1 : { f: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ f: s => s.toLowerCase() } : { f: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ >f : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => s.toLowerCase() : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.toLowerCase() : string diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag2.types b/tests/baselines/reference/checkJsdocSatisfiesTag2.types index a9d71c2667d74..0d2703f7e23b6 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag2.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag2.types @@ -5,17 +5,17 @@ const p = /** @satisfies {Predicates} */ ({ >p : { isEven: (n: number) => boolean; isOdd: (n: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >({ isEven: n => n % 2 === 0, isOdd: n => n % 2 === 1}) : { isEven: (n: number) => boolean; isOdd: (n: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^ ^^^ >{ isEven: n => n % 2 === 0, isOdd: n => n % 2 === 1} : { isEven: (n: number) => boolean; isOdd: (n: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ isEven: n => n % 2 === 0, >isEven : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >n => n % 2 === 0 : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n % 2 === 0 : boolean @@ -31,9 +31,9 @@ const p = /** @satisfies {Predicates} */ ({ isOdd: n => n % 2 === 1 >isOdd : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >n => n % 2 === 1 : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n % 2 === 1 : boolean diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag3.types b/tests/baselines/reference/checkJsdocSatisfiesTag3.types index 2b99cd6e1b7d6..250757ab477bd 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag3.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag3.types @@ -4,21 +4,21 @@ /** @type {{ f(s: string): void } & Record }} */ let obj = /** @satisfies {{ g(s: string): void } & Record} */ ({ >obj : { f(s: string): void; } & Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ f(s) { }, // "incorrect" implicit any on 's' g(s) { }}) : { f(s: string): void; } & Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ f(s) { }, // "incorrect" implicit any on 's' g(s) { }} : { f(s: any): void; g(s: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ f(s) { }, // "incorrect" implicit any on 's' >f : (s: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >s : any > : ^^^ g(s) { } >g : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -27,11 +27,11 @@ let obj = /** @satisfies {{ g(s: string): void } & Record} */ ( // This needs to not crash (outer node is not expression) /** @satisfies {{ f(s: string): void }} */ ({ f(x) { } }) >({ f(x) { } }) : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >{ f(x) { } } : { f(x: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >f : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag5.types b/tests/baselines/reference/checkJsdocSatisfiesTag5.types index ecb81cbe84dce..8369a9786bde8 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag5.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag5.types @@ -5,11 +5,11 @@ const car = /** @satisfies {Movable & Record} */ ({ >car : { start(): void; move(d: number): void; stop(): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ start() { }, move(d) { // d should be number }, stop() { }}) : { start(): void; move(d: number): void; stop(): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ start() { }, move(d) { // d should be number }, stop() { }} : { start(): void; move(d: number): void; stop(): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ start() { }, >start : () => void @@ -17,7 +17,7 @@ const car = /** @satisfies {Movable & Record} */ ({ move(d) { >move : (d: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >d : number > : ^^^^^^ diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag6.types b/tests/baselines/reference/checkJsdocSatisfiesTag6.types index 048c4492a6a27..cc4a44df75c6d 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag6.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag6.types @@ -25,15 +25,15 @@ console.log(a.x.toFixed()); >console.log(a.x.toFixed()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a.x.toFixed() : string > : ^^^^^^ >a.x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a.x : number > : ^^^^^^ >a : { x: number; } @@ -41,7 +41,7 @@ console.log(a.x.toFixed()); >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ // Should error let p = a.y; diff --git a/tests/baselines/reference/checkJsdocSatisfiesTag7.types b/tests/baselines/reference/checkJsdocSatisfiesTag7.types index 0797f07f922f9..1c55f2bd0210c 100644 --- a/tests/baselines/reference/checkJsdocSatisfiesTag7.types +++ b/tests/baselines/reference/checkJsdocSatisfiesTag7.types @@ -38,7 +38,7 @@ let a = p.a.toFixed(); >p.a.toFixed() : string > : ^^^^^^ >p.a.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >p.a : number > : ^^^^^^ >p : { a: number; b: string; x: number; } @@ -46,7 +46,7 @@ let a = p.a.toFixed(); >a : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ let b = p.b.substring(1); >b : string @@ -54,7 +54,7 @@ let b = p.b.substring(1); >p.b.substring(1) : string > : ^^^^^^ >p.b.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >p.b : string > : ^^^^^^ >p : { a: number; b: string; x: number; } @@ -62,7 +62,7 @@ let b = p.b.substring(1); >b : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/checkJsdocTypeTag1.types b/tests/baselines/reference/checkJsdocTypeTag1.types index 9e4254b15dfc1..6c6dbd88ab2a2 100644 --- a/tests/baselines/reference/checkJsdocTypeTag1.types +++ b/tests/baselines/reference/checkJsdocTypeTag1.types @@ -51,7 +51,7 @@ const x = (a) => a + 1; >x : Function > : ^^^^^^^^ >(a) => a + 1 : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ >a + 1 : any @@ -74,7 +74,7 @@ const y = (a) => a + 1; >y : Function > : ^^^^^^^^ >(a) => a + 1 : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ >a + 1 : any @@ -95,9 +95,9 @@ y(1); /** @type {function (number)} */ const x1 = (a) => a + 1; >x1 : (arg0: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ >(a) => a + 1 : (a: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number @@ -111,16 +111,16 @@ x1(0); >x1(0) : any > : ^^^ >x1 : (arg0: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ >0 : 0 > : ^ /** @type {function (number): number} */ const x2 = (a) => a + 1; >x2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >(a) => a + 1 : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number @@ -134,7 +134,7 @@ x2(0); >x2(0) : number > : ^^^^^^ >x2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/checkJsdocTypeTag2.types b/tests/baselines/reference/checkJsdocTypeTag2.types index ab53893c92791..dc1db92de2345 100644 --- a/tests/baselines/reference/checkJsdocTypeTag2.types +++ b/tests/baselines/reference/checkJsdocTypeTag2.types @@ -19,9 +19,9 @@ var n = "hello"; /** @type {function (number)} */ const x1 = (a) => a + 1; >x1 : (arg0: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ >(a) => a + 1 : (a: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number @@ -35,16 +35,16 @@ x1("string"); >x1("string") : any > : ^^^ >x1 : (arg0: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ >"string" : "string" > : ^^^^^^^^ /** @type {function (number): number} */ const x2 = (a) => a + 1; >x2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >(a) => a + 1 : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number @@ -67,16 +67,16 @@ a = x2(0); >x2(0) : number > : ^^^^^^ >x2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ /** @type {function (number): number} */ const x3 = (a) => a.concat("hi"); >x3 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >(a) => a.concat("hi") : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a.concat("hi") : any @@ -94,16 +94,16 @@ x3(0); >x3(0) : number > : ^^^^^^ >x3 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ /** @type {function (number): string} */ const x4 = (a) => a + 1; >x4 : (arg0: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >(a) => a + 1 : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number @@ -117,7 +117,7 @@ x4(0); >x4(0) : string > : ^^^^^^ >x4 : (arg0: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/checkJsdocTypeTag5.types b/tests/baselines/reference/checkJsdocTypeTag5.types index 79382edb1f63f..b94681f7d2d4f 100644 --- a/tests/baselines/reference/checkJsdocTypeTag5.types +++ b/tests/baselines/reference/checkJsdocTypeTag5.types @@ -5,7 +5,7 @@ /** @type {(x: number) => string} */ function h(x) { return x } >h : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x : number @@ -14,9 +14,9 @@ function h(x) { return x } /** @type {(x: number) => string} */ var f = x => x >f : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x => x : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -25,9 +25,9 @@ var f = x => x /** @type {(x: number) => string} */ var g = function (x) { return x } >g : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (x) { return x } : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -36,7 +36,7 @@ var g = function (x) { return x } /** @type {{ (x: number): string }} */ function i(x) { return x } >i : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x : number @@ -45,9 +45,9 @@ function i(x) { return x } /** @type {{ (x: number): string }} */ var j = x => x >j : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x => x : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -56,9 +56,9 @@ var j = x => x /** @type {{ (x: number): string }} */ var k = function (x) { return x } >k : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (x) { return x } : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -68,8 +68,8 @@ var k = function (x) { return x } /** @typedef {(x: 'hi' | 'bye') => 0 | 1 | 2} Argle */ /** @type {Argle} */ function blargle(s) { ->blargle : (x: 'hi' | 'bye') => 0 | 1 | 2 -> : ^^^^ ^^^^^ +>blargle : (x: "hi" | "bye") => 0 | 1 | 2 +> : ^ ^^ ^^^^^ >s : "hi" | "bye" > : ^^^^^^^^^^^^ @@ -85,7 +85,7 @@ var zeroonetwo = blargle('hi') >blargle('hi') : 0 | 1 | 2 > : ^^^^^^^^^ >blargle : (x: "hi" | "bye") => 0 | 1 | 2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >'hi' : "hi" > : ^^^^ @@ -94,7 +94,7 @@ var zeroonetwo = blargle('hi') /** @type {Gioconda} */ function monaLisa(sb) { >monaLisa : (sb: any) => 1 | 2 -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >sb : any > : ^^^ @@ -122,7 +122,7 @@ var twothree = monaLisa(false); >monaLisa(false) : 1 | 2 > : ^^^^^ >monaLisa : (sb: any) => 1 | 2 -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >false : false > : ^^^^^ diff --git a/tests/baselines/reference/checkJsdocTypeTag6.types b/tests/baselines/reference/checkJsdocTypeTag6.types index c9476f2a06611..832de3b8b0a28 100644 --- a/tests/baselines/reference/checkJsdocTypeTag6.types +++ b/tests/baselines/reference/checkJsdocTypeTag6.types @@ -16,7 +16,7 @@ var g = function (prop) { >g : { prop: string; } > : ^^^^^^^^^^^^^^^^^ >function (prop) {} : (prop: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >prop : any > : ^^^ } @@ -24,7 +24,7 @@ var g = function (prop) { /** @type {(a: number) => number} */ function add1(a, b) { return a + b; } >add1 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : any @@ -39,7 +39,7 @@ function add1(a, b) { return a + b; } /** @type {(a: number, b: number) => number} */ function add2(a, b) { return a + b; } >add2 : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -55,7 +55,7 @@ function add2(a, b) { return a + b; } /** @type {(a: number, b: number, c: number) => number} */ function add3(a, b) { return a + b; } >add3 : (a: number, b: number, c: number) => number -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -82,7 +82,7 @@ const variableWithMoreParameters = function (more) {}; // error >variableWithMoreParameters : () => void > : ^^^^^^^^^^ >function (more) {} : (more: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >more : any > : ^^^ @@ -91,7 +91,7 @@ const arrowWithMoreParameters = (more) => {}; // error >arrowWithMoreParameters : () => void > : ^^^^^^^^^^ >(more) => {} : (more: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >more : any > : ^^^ @@ -104,7 +104,7 @@ const arrowWithMoreParameters = (more) => {}; // error /** @type {() => void} */ methodWithMoreParameters(more) {}, // error >methodWithMoreParameters : (more: any) => void -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >more : any > : ^^^ diff --git a/tests/baselines/reference/checkJsdocTypeTag7.types b/tests/baselines/reference/checkJsdocTypeTag7.types index cb7bbe0a8daf4..e56d1eea0b1cf 100644 --- a/tests/baselines/reference/checkJsdocTypeTag7.types +++ b/tests/baselines/reference/checkJsdocTypeTag7.types @@ -12,7 +12,7 @@ class C { /** @type {Foo} */ foo(a, b) {} >foo : (a: string, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number @@ -21,6 +21,6 @@ class C { /** @type {(optional?) => void} */ methodWithOptionalParameters() {} >methodWithOptionalParameters : (optional?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types index 313e436c725d0..bf7bbdd12c4f3 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty1.types @@ -12,7 +12,7 @@ const obj = { >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ >{ /** @type {string|undefined} */ foo: undefined, /** @type {string|undefined} */ bar: "42", /** @type {function(number): number} */ method1(n1) { return n1 + 42; }, /** @type {string} */ lol, /** @type {number} */ ['b' + 'ar1']: 42, /** @type {function(number): number} */ arrowFunc: (num) => num + 42} : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ /** @type {string|undefined} */ foo: undefined, @@ -31,7 +31,7 @@ const obj = { /** @type {function(number): number} */ method1(n1) { >method1 : (n1: number) => number -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n1 : number > : ^^^^^^ @@ -67,7 +67,7 @@ const obj = { >arrowFunc : (arg0: number) => number > : ^^^^^^^ ^^^^^ >(num) => num + 42 : (num: number) => number -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >num : number > : ^^^^^^ >num + 42 : number @@ -83,7 +83,7 @@ obj.foo = 'string' >obj.foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ >'string' : "string" @@ -93,7 +93,7 @@ obj.lol >obj.lol : string > : ^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >lol : string > : ^^^^^^ @@ -103,7 +103,7 @@ obj.bar = undefined; >obj.bar : string | undefined > : ^^^^^^^^^^^^^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >bar : string | undefined > : ^^^^^^^^^^^^^^^^^^ >undefined : undefined @@ -115,11 +115,11 @@ var k = obj.method1(0); >obj.method1(0) : number > : ^^^^^^ >obj.method1 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >method1 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -127,11 +127,11 @@ obj.bar1 = "42"; >obj.bar1 = "42" : "42" > : ^^^^ >obj.bar1 : string | number | ((arg0: number) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >bar1 : string | number | ((arg0: number) => number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"42" : "42" > : ^^^^ @@ -139,11 +139,11 @@ obj.arrowFunc(0); >obj.arrowFunc(0) : number > : ^^^^^^ >obj.arrowFunc : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >obj : { [x: string]: string | number | ((arg0: number) => number) | undefined; foo: string | undefined; bar: string | undefined; method1(arg0: number): number; lol: string; arrowFunc: (arg0: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >arrowFunc : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.types b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.types index 65cdb84204628..59f7521db0db5 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.types +++ b/tests/baselines/reference/checkJsdocTypeTagOnObjectProperty2.types @@ -22,7 +22,7 @@ const obj = { /** @type {function(number): number} */ method1(n1) { >method1 : (n1: number) => number -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n1 : number > : ^^^^^^ @@ -36,7 +36,7 @@ const obj = { >method2 : (arg0: number) => number > : ^^^^^^^ ^^^^^ >(n1) => "lol" : (n1: number) => number -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n1 : number > : ^^^^^^ >"lol" : "lol" @@ -47,7 +47,7 @@ const obj = { >arrowFunc : (arg0: number) => number > : ^^^^^^^ ^^^^^ >(num="0") => num + 42 : (num?: number) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >"0" : "0" @@ -79,11 +79,11 @@ var s = obj.method1(0); >obj.method1(0) : number > : ^^^^^^ >obj.method1 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >obj : { bar: string | undefined; method1(arg0: number): number; method2: (arg0: number) => number; arrowFunc: (arg0: number) => number; lol: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method1 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -94,11 +94,11 @@ var s1 = obj.method2("0"); >obj.method2("0") : number > : ^^^^^^ >obj.method2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >obj : { bar: string | undefined; method1(arg0: number): number; method2: (arg0: number) => number; arrowFunc: (arg0: number) => number; lol: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method2 : (arg0: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^ >"0" : "0" > : ^^^ diff --git a/tests/baselines/reference/checkJsdocTypedefInParamTag1.types b/tests/baselines/reference/checkJsdocTypedefInParamTag1.types index 7d27cf82332ac..146b73a8ecbe1 100644 --- a/tests/baselines/reference/checkJsdocTypedefInParamTag1.types +++ b/tests/baselines/reference/checkJsdocTypedefInParamTag1.types @@ -13,7 +13,7 @@ */ function foo(opts) { >foo : (opts: Opts) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >opts : Opts > : ^^^^ @@ -30,7 +30,7 @@ foo({x: 'abc'}); >foo({x: 'abc'}) : void > : ^^^^ >foo : (opts: Opts) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{x: 'abc'} : { x: string; } > : ^^^^^^^^^^^^^^ >x : string @@ -47,7 +47,7 @@ foo({x: 'abc'}); */ function foo1(opts) { >foo1 : (opts: AnotherOpts) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >opts : AnotherOpts > : ^^^^^^^^^^^ @@ -64,7 +64,7 @@ foo1({anotherX: "world"}); >foo1({anotherX: "world"}) : void > : ^^^^ >foo1 : (opts: AnotherOpts) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{anotherX: "world"} : { anotherX: string; } > : ^^^^^^^^^^^^^^^^^^^^^ >anotherX : string @@ -83,7 +83,7 @@ foo1({anotherX: "world"}); */ function foo2(opts) { >foo2 : (opts: Opts1) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >opts : Opts1 > : ^^^^^ @@ -99,7 +99,7 @@ foo2({x: 'abc'}); >foo2({x: 'abc'}) : void > : ^^^^ >foo2 : (opts: Opts1) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{x: 'abc'} : { x: string; } > : ^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/checkJsxChildrenProperty1.types b/tests/baselines/reference/checkJsxChildrenProperty1.types index 1a1982ac2a4c3..42eef8075c495 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty1.types +++ b/tests/baselines/reference/checkJsxChildrenProperty1.types @@ -23,7 +23,7 @@ interface Prop { function Comp(p: Prop) { >Comp : (p: Prop) => JSX.Element -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >p : Prop > : ^^^^ @@ -49,7 +49,7 @@ let k = ; > : JSX.Element > : ^^^^^^^^^^^ >Comp : (p: Prop) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -67,7 +67,7 @@ let k1 = > hi hi hi! : JSX.Element > : ^^^^^^^^^^^ >Comp : (p: Prop) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -78,7 +78,7 @@ let k1 = hi hi hi! ; >Comp : (p: Prop) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ let k2 = >k2 : JSX.Element @@ -88,7 +88,7 @@ let k2 = >
hi hi hi!
: JSX.Element > : ^^^^^^^^^^^ >Comp : (p: Prop) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -106,5 +106,5 @@ let k2 =
; >Comp : (p: Prop) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/checkJsxChildrenProperty10.types b/tests/baselines/reference/checkJsxChildrenProperty10.types index 01efaa59136bc..71724417c4c92 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty10.types +++ b/tests/baselines/reference/checkJsxChildrenProperty10.types @@ -80,7 +80,7 @@ let k2 =

Hello

{(user: any) =>

{user.name}

}
; >h2 : any > : ^^^ >(user: any) =>

{user.name}

: (user: any) => JSX.Element -> : ^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >user : any >

{user.name}

: JSX.Element > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/checkJsxChildrenProperty11.types b/tests/baselines/reference/checkJsxChildrenProperty11.types index 7442dce1c30e7..3bb0b09acc47e 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty11.types +++ b/tests/baselines/reference/checkJsxChildrenProperty11.types @@ -80,7 +80,7 @@ let k2 =

Hello

{(user: any) =>

{user.name}

}
; >h2 : any > : ^^^ >(user: any) =>

{user.name}

: (user: any) => JSX.Element -> : ^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >user : any >

{user.name}

: JSX.Element > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/checkJsxChildrenProperty14.types b/tests/baselines/reference/checkJsxChildrenProperty14.types index d4a3f0ee39496..462991d4777c3 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty14.types +++ b/tests/baselines/reference/checkJsxChildrenProperty14.types @@ -51,7 +51,7 @@ class Button extends React.Component { function AnotherButton(p: any) { >AnotherButton : (p: any) => JSX.Element -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >p : any > : ^^^ @@ -66,7 +66,7 @@ function AnotherButton(p: any) { function Comp(p: Prop) { >Comp : (p: Prop) => JSX.Element -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >p : Prop > : ^^^^ @@ -92,7 +92,7 @@ let k1 = <>
) : ({ onClose }: { onClose: () => void; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onClose : () => void > : ^^^^^^^^^^ >(
) : JSX.Element @@ -126,9 +126,9 @@ declare const DropdownMenu: React.ComponentType; children={({ onClose }) => ( >children : ({ onClose }: { onClose: () => void; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ onClose }) => (
) : ({ onClose }: { onClose: () => void; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onClose : () => void > : ^^^^^^^^^^ >(
) : JSX.Element diff --git a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types index e92841f95d00d..6595c7939ff0d 100644 --- a/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types +++ b/tests/baselines/reference/contextuallyTypedObjectLiteralMethodDeclaration01.types @@ -16,13 +16,13 @@ interface B { interface Foo { method1(arg: A): void; >method1 : (arg: A) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : A > : ^ method2(arg: B): void; >method2 : (arg: B) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : B > : ^ } @@ -33,11 +33,11 @@ function getFoo1(): Foo { return { >{ method1(arg) { arg.numProp = 10; }, method2(arg) { arg.strProp = "hello"; } } : { method1(arg: A): void; method2(arg: B): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ method1(arg) { >method1 : (arg: A) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >arg : A > : ^ @@ -56,7 +56,7 @@ function getFoo1(): Foo { }, method2(arg) { >method2 : (arg: B) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >arg : B > : ^ @@ -81,13 +81,13 @@ function getFoo2(): Foo { return { >{ method1: (arg) => { arg.numProp = 10; }, method2: (arg) => { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ method1: (arg) => { >method1 : (arg: A) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >(arg) => { arg.numProp = 10; } : (arg: A) => void -> : ^^^^^^^^^^^^^^^^ +> : >arg : A > : ^ @@ -106,9 +106,9 @@ function getFoo2(): Foo { }, method2: (arg) => { >method2 : (arg: B) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >(arg) => { arg.strProp = "hello"; } : (arg: B) => void -> : ^^^^^^^^^^^^^^^^ +> : >arg : B > : ^ @@ -133,13 +133,13 @@ function getFoo3(): Foo { return { >{ method1: function (arg) { arg.numProp = 10; }, method2: function (arg) { arg.strProp = "hello"; } } : { method1: (arg: A) => void; method2: (arg: B) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ method1: function (arg) { >method1 : (arg: A) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >function (arg) { arg.numProp = 10; } : (arg: A) => void -> : ^^^^^^^^^^^^^^^^ +> : >arg : A > : ^ @@ -158,9 +158,9 @@ function getFoo3(): Foo { }, method2: function (arg) { >method2 : (arg: B) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >function (arg) { arg.strProp = "hello"; } : (arg: B) => void -> : ^^^^^^^^^^^^^^^^ +> : >arg : B > : ^ diff --git a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types index 97558db31a4f7..9adcbbc5a700c 100644 --- a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types @@ -5,15 +5,15 @@ declare function match(cb: (value: T) => boolean): T; >match : (cb: (value: T) => boolean) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (value: T) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ declare function foo(pos: { x?: number; y?: number }): boolean; >foo : (pos: { x?: number; y?: number; }) => boolean -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >pos : { x?: number; y?: number; } > : ^^^^^^ ^^^^^^ ^^^ >x : number | undefined @@ -24,8 +24,8 @@ declare function foo(pos: { x?: number; y?: number }): boolean; foo({ y: match(y => y > 0) }) >foo({ y: match(y => y > 0) }) : boolean > : ^^^^^^^ ->foo : (pos: { x?: number | undefined; y?: number | undefined; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (pos: { x?: number; y?: number; }) => boolean +> : ^ ^^ ^^^^^^^^^^^^ >{ y: match(y => y > 0) } : { y: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number | undefined @@ -33,9 +33,9 @@ foo({ y: match(y => y > 0) }) >match(y => y > 0) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >match : (cb: (value: T) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >y => y > 0 : (y: number | undefined) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number | undefined > : ^^^^^^^^^^^^^^^^^^ >y > 0 : boolean @@ -47,23 +47,23 @@ foo({ y: match(y => y > 0) }) declare function foo2(point: [number?]): boolean; >foo2 : (point: [number?]) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >point : [(number | undefined)?] > : ^^^^^^^^^^^^^^^^^^^^^^^ foo2([match(y => y > 0)]) >foo2([match(y => y > 0)]) : boolean > : ^^^^^^^ ->foo2 : (point: [(number | undefined)?]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo2 : (point: [number?]) => boolean +> : ^ ^^ ^^^^^^^^^^^^ >[match(y => y > 0)] : [number | undefined] > : ^^^^^^^^^^^^^^^^^^^^ >match(y => y > 0) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >match : (cb: (value: T) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >y => y > 0 : (y: number | undefined) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number | undefined > : ^^^^^^^^^^^^^^^^^^ >y > 0 : boolean diff --git a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types index cb6651f1776d0..a3f1d54b80a1d 100644 --- a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types @@ -5,15 +5,15 @@ declare function match(cb: (value: T) => boolean): T; >match : (cb: (value: T) => boolean) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (value: T) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ declare function foo(pos: { x?: number; y?: number }): boolean; >foo : (pos: { x?: number; y?: number; }) => boolean -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >pos : { x?: number; y?: number; } > : ^^^^^^ ^^^^^^ ^^^ >x : number | undefined @@ -25,7 +25,7 @@ foo({ y: match(y => y > 0) }) >foo({ y: match(y => y > 0) }) : boolean > : ^^^^^^^ >foo : (pos: { x?: number; y?: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >{ y: match(y => y > 0) } : { y: number; } > : ^^^^^^^^^^^^^^ >y : number @@ -33,9 +33,9 @@ foo({ y: match(y => y > 0) }) >match(y => y > 0) : number > : ^^^^^^ >match : (cb: (value: T) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >y => y > 0 : (y: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >y > 0 : boolean @@ -47,7 +47,7 @@ foo({ y: match(y => y > 0) }) declare function foo2(point: [number?]): boolean; >foo2 : (point: [number?]) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >point : [number?] > : ^^^^^^^^^ @@ -55,15 +55,15 @@ foo2([match(y => y > 0)]) >foo2([match(y => y > 0)]) : boolean > : ^^^^^^^ >foo2 : (point: [number?]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >[match(y => y > 0)] : [number] > : ^^^^^^^^ >match(y => y > 0) : number > : ^^^^^^ >match : (cb: (value: T) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >y => y > 0 : (y: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >y > 0 : boolean diff --git a/tests/baselines/reference/contextuallyTypedParametersOptionalInJSDoc.types b/tests/baselines/reference/contextuallyTypedParametersOptionalInJSDoc.types index 136c2163cde0e..8160cf486a3a3 100644 --- a/tests/baselines/reference/contextuallyTypedParametersOptionalInJSDoc.types +++ b/tests/baselines/reference/contextuallyTypedParametersOptionalInJSDoc.types @@ -7,7 +7,7 @@ */ function acceptNum(num) {} >acceptNum : (num: number) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >num : number > : ^^^^^^ @@ -25,9 +25,9 @@ const fn1 = */ function self(a, b) { >function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >b : number | undefined @@ -37,7 +37,7 @@ const fn1 = >acceptNum(b) : void > : ^^^^ >acceptNum : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -45,7 +45,7 @@ const fn1 = >self("") : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ @@ -53,7 +53,7 @@ const fn1 = >self("", undefined) : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >undefined : undefined @@ -71,9 +71,9 @@ const fn2 = */ function self(a, b) { >function self(a, b) { acceptNum(b); // error self(""); self("", undefined); } : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >b : number | undefined @@ -83,7 +83,7 @@ const fn2 = >acceptNum(b) : void > : ^^^^ >acceptNum : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -91,7 +91,7 @@ const fn2 = >self("") : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ @@ -99,7 +99,7 @@ const fn2 = >self("", undefined) : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >undefined : undefined diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types index 84c621750c5f1..f23fbb75b78f2 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types @@ -3,13 +3,13 @@ === contextuallyTypedParametersWithInitializers1.ts === declare function id1(input: T): T; >id1 : (input: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >input : T > : ^ declare function id2 any>(input: T): T; >id2 : any>(input: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >x : any > : ^^^ >input : T @@ -17,7 +17,7 @@ declare function id2 any>(input: T): T; declare function id3 any>(input: T): T; >id3 : any>(input: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >x : { foo: any; } > : ^^^^^^^ ^^^ >foo : any @@ -27,7 +27,7 @@ declare function id3 any>(input: T): T; declare function id4 any>(input: T): T; >id4 : any>(input: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >x : { foo?: number; } > : ^^^^^^^^ ^^^ >foo : number | undefined @@ -37,7 +37,7 @@ declare function id4 any>(input: T): T; declare function id5 any>(input: T): T; >id5 : any>(input: T) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >input : T @@ -45,9 +45,9 @@ declare function id5 any>(input: T): T; const f10 = function ({ foo = 42 }) { return foo }; >f10 : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : number > : ^^^^^^ >42 : 42 @@ -57,13 +57,13 @@ const f10 = function ({ foo = 42 }) { return foo }; const f11 = id1(function ({ foo = 42 }) { return foo }); >f11 : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id1(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >id1 : (input: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >42 : 42 @@ -73,13 +73,13 @@ const f11 = id1(function ({ foo = 42 }) { return foo }); const f12 = id2(function ({ foo = 42 }) { return foo }); >f12 : ({ foo }: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >id2(function ({ foo = 42 }) { return foo }) : ({ foo }: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >id2 : any>(input: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo : any > : ^^^ >42 : 42 @@ -89,13 +89,13 @@ const f12 = id2(function ({ foo = 42 }) { return foo }); const f13 = id3(function ({ foo = 42 }) { return foo }); >f13 : ({ foo }: { foo: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >id3(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id3 : any>(input: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: { foo: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >foo : any > : ^^^ >42 : 42 @@ -105,13 +105,13 @@ const f13 = id3(function ({ foo = 42 }) { return foo }); const f14 = id4(function ({ foo = 42 }) { return foo }); >f14 : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->id4 : any>(input: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ +>id4 : any>(input: T) => T +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >42 : 42 @@ -121,9 +121,9 @@ const f14 = id4(function ({ foo = 42 }) { return foo }); const f20 = function (foo = 42) { return foo }; >f20 : (foo?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >function (foo = 42) { return foo } : (foo?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : number > : ^^^^^^ >42 : 42 @@ -133,13 +133,13 @@ const f20 = function (foo = 42) { return foo }; const f21 = id1(function (foo = 42) { return foo }); >f21 : (foo?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >id1(function (foo = 42) { return foo }) : (foo?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >id1 : (input: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >function (foo = 42) { return foo } : (foo?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >42 : 42 @@ -149,13 +149,13 @@ const f21 = id1(function (foo = 42) { return foo }); const f22 = id2(function (foo = 42) { return foo }); >f22 : (foo?: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >id2(function (foo = 42) { return foo }) : (foo?: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ >id2 : any>(input: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^ >function (foo = 42) { return foo } : (foo?: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : any > : ^^^ >42 : 42 @@ -165,13 +165,13 @@ const f22 = id2(function (foo = 42) { return foo }); const f25 = id5(function (foo = 42) { return foo }); >f25 : (foo?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id5(function (foo = 42) { return foo }) : (foo?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->id5 : any>(input: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ +>id5 : any>(input: T) => T +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^^^^^ >function (foo = 42) { return foo } : (foo?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number | undefined > : ^^^^^^^^^^^^^^^^^^ >42 : 42 @@ -181,9 +181,9 @@ const f25 = id5(function (foo = 42) { return foo }); const f1 = (x = 1) => 0; // number >f1 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >1 : 1 @@ -195,7 +195,7 @@ const f2: any = (x = 1) => 0; // number >f2 : any > : ^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -207,7 +207,7 @@ const f3: unknown = (x = 1) => 0; // number >f3 : unknown > : ^^^^^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -219,7 +219,7 @@ const f4: Function = (x = 1) => 0; // number >f4 : Function > : ^^^^^^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -229,11 +229,11 @@ const f4: Function = (x = 1) => 0; // number const f5: (...args: any[]) => any = (x = 1) => 0; // any >f5 : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ >(x = 1) => 0 : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >1 : 1 @@ -245,7 +245,7 @@ const f6: () => any = (x = 1) => 0; // number >f6 : () => any > : ^^^^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -257,7 +257,7 @@ const f7: () => any = (x?) => 0; // Implicit any error >f7 : () => any > : ^^^^^^ >(x?) => 0 : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >0 : 0 @@ -275,31 +275,31 @@ const f8: () => any = (...x) => 0; // [] declare function g1(x: T): T; >g1 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ declare function g2(x: T): T; >g2 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function g3(x: T): T; >g3 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function g4(x: T): T; >g4 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function g5 any>(x: T): T; >g5 : any>(x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >args : any[] > : ^^^^^ >x : T @@ -307,17 +307,17 @@ declare function g5 any>(x: T): T; declare function g6 any>(x: T): T; >g6 : any>(x: T) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ g1((x = 1) => 0); // number >g1((x = 1) => 0) : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >g1 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -327,11 +327,11 @@ g1((x = 1) => 0); // number g2((x = 1) => 0); // number >g2((x = 1) => 0) : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >g2 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -341,11 +341,11 @@ g2((x = 1) => 0); // number g3((x = 1) => 0); // number >g3((x = 1) => 0) : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >g3 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -355,11 +355,11 @@ g3((x = 1) => 0); // number g4((x = 1) => 0); // number >g4((x = 1) => 0) : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >g4 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: number) => 0 -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -369,11 +369,11 @@ g4((x = 1) => 0); // number g5((x = 1) => 0); // any >g5((x = 1) => 0) : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >g5 : any>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >1 : 1 @@ -383,11 +383,11 @@ g5((x = 1) => 0); // any g6((x = 1) => 0); // number >g6((x = 1) => 0) : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >g6 : any>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x = 1) => 0 : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -397,11 +397,11 @@ g6((x = 1) => 0); // number g6((x?) => 0); // Implicit any error >g6((x?) => 0) : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >g6 : any>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x?) => 0 : (x?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >0 : 0 @@ -411,7 +411,7 @@ g6((...x) => 0); // [] >g6((...x) => 0) : () => number > : ^^^^^^^^^^^^ >g6 : any>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(...x) => 0 : () => number > : ^^^^^^^^^^^^ >x : [] @@ -423,7 +423,7 @@ g6((...x) => 0); // [] function id(input: T): T { return input } >id : (input: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >input : T > : ^ >input : T @@ -431,7 +431,7 @@ function id(input: T): T { return input } function getFoo ({ foo = 42 }) { >getFoo : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >42 : 42 @@ -444,25 +444,25 @@ function getFoo ({ foo = 42 }) { const newGetFoo = id(getFoo); >newGetFoo : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id(getFoo) : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >id : (input: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >getFoo : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const newGetFoo2 = id(function getFoo ({ foo = 42 }) { >newGetFoo2 : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id(function getFoo ({ foo = 42 }) { return foo;}) : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >id : (input: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >function getFoo ({ foo = 42 }) { return foo;} : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getFoo : ({ foo }: { foo?: number | undefined; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >42 : 42 @@ -478,13 +478,13 @@ const newGetFoo2 = id(function getFoo ({ foo = 42 }) { declare function memoize(func: F): F; >memoize : (func: F) => F -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >func : F > : ^ function add(x: number, y = 0): number { >add : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -502,19 +502,19 @@ function add(x: number, y = 0): number { } const memoizedAdd = memoize(add); >memoizedAdd : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >memoize(add) : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >memoize : (func: F) => F -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >add : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ const add2 = (x: number, y = 0): number => x + y; >add2 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >(x: number, y = 0): number => x + y : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : number @@ -530,23 +530,23 @@ const add2 = (x: number, y = 0): number => x + y; const memoizedAdd2 = memoize(add2); >memoizedAdd2 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >memoize(add2) : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >memoize : (func: F) => F -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >add2 : (x: number, y?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ const memoizedAdd3 = memoize((x: number, y = 0): number => x + y); >memoizedAdd3 : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >memoize((x: number, y = 0): number => x + y) : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ >memoize : (func: F) => F -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: number, y = 0): number => x + y : (x: number, y?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -564,7 +564,7 @@ const memoizedAdd3 = memoize((x: number, y = 0): number => x + y); declare function execute(script: string | Function): Promise; >execute : (script: string | Function) => Promise -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >script : string | Function > : ^^^^^^^^^^^^^^^^^ @@ -576,9 +576,9 @@ export function executeSomething() { >execute((root: HTMLElement, debug = true) => { if (debug) { root.innerHTML = ''; } }) : Promise > : ^^^^^^^^^^^^^^^ >execute : (script: string | Function) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >(root: HTMLElement, debug = true) => { if (debug) { root.innerHTML = ''; } } : (root: HTMLElement, debug?: boolean) => void -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >root : HTMLElement > : ^^^^^^^^^^^ >debug : boolean @@ -607,9 +607,9 @@ export function executeSomething() { const fz1 = (debug = true) => false; >fz1 : (debug?: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >(debug = true) => false : (debug?: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >debug : boolean > : ^^^^^^^ >true : true @@ -621,7 +621,7 @@ const fz2: Function = (debug = true) => false; >fz2 : Function > : ^^^^^^^^ >(debug = true) => false : (debug?: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >debug : boolean > : ^^^^^^^ >true : true diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types index 1b4a5bb8c2971..38c6810ac8848 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types @@ -3,7 +3,7 @@ === contextuallyTypedParametersWithInitializers2.ts === declare function test1< >test1 : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^ ^^^^^ TContext, TMethods extends Record unknown>, @@ -22,7 +22,7 @@ test1( >test1( { count: 0, }, { checkLimit: (ctx, max = 500) => {}, hasAccess: (ctx, user: { name: string }) => {}, },) : void > : ^^^^ >test1 : unknown>>(context: TContext, methods: TMethods) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ { >{ count: 0, } : { count: number; } > : ^^^^^^^^^^^^^^^^^^ @@ -36,13 +36,13 @@ test1( }, { >{ checkLimit: (ctx, max = 500) => {}, hasAccess: (ctx, user: { name: string }) => {}, } : { checkLimit: (ctx: { count: number; }, max?: number) => void; hasAccess: (ctx: { count: number; }, user: { name: string; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ checkLimit: (ctx, max = 500) => {}, >checkLimit : (ctx: { count: number; }, max?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >(ctx, max = 500) => {} : (ctx: { count: number; }, max?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >ctx : { count: number; } > : ^^^^^^^^^^^^^^^^^^ >max : number @@ -52,9 +52,9 @@ test1( hasAccess: (ctx, user: { name: string }) => {}, >hasAccess : (ctx: { count: number; }, user: { name: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(ctx, user: { name: string }) => {} : (ctx: { count: number; }, user: { name: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >ctx : { count: number; } > : ^^^^^^^^^^^^^^^^^^ >user : { name: string; } @@ -71,11 +71,11 @@ declare const num: number; const test2: (arg: 1 | 2) => void = (arg = num) => {}; >test2 : (arg: 1 | 2) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : 1 | 2 > : ^^^^^ >(arg = num) => {} : (arg?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >num : number @@ -83,11 +83,11 @@ const test2: (arg: 1 | 2) => void = (arg = num) => {}; const test3: (arg: number) => void = (arg = 1) => {}; >test3 : (arg: number) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : number > : ^^^^^^ >(arg = 1) => {} : (arg?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types index 2d980637f57e0..4e64c1b1ee28a 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types @@ -8,20 +8,20 @@ type CanvasDirection = "RIGHT" | "LEFT"; interface GraphActions { setDirection: (direction: CanvasDirection) => void; >setDirection : (direction: CanvasDirection) => void -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >direction : CanvasDirection > : ^^^^^^^^^^^^^^^ } export declare function create(config: T): void; >create : (config: T) => void -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >config : T > : ^ declare function takesDirection(direction: CanvasDirection): void; >takesDirection : (direction: CanvasDirection) => void -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >direction : CanvasDirection > : ^^^^^^^^^^^^^^^ @@ -29,15 +29,15 @@ create({ >create({ setDirection: (direction = "RIGHT") => { takesDirection(direction); },}) : void > : ^^^^ >create : (config: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ setDirection: (direction = "RIGHT") => { takesDirection(direction); },} : { setDirection: (direction?: CanvasDirection) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ setDirection: (direction = "RIGHT") => { >setDirection : (direction?: CanvasDirection) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(direction = "RIGHT") => { takesDirection(direction); } : (direction?: CanvasDirection) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >direction : CanvasDirection > : ^^^^^^^^^^^^^^^ >"RIGHT" : "RIGHT" @@ -47,7 +47,7 @@ create({ >takesDirection(direction) : void > : ^^^^ >takesDirection : (direction: CanvasDirection) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >direction : CanvasDirection > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types index 3cd83492137cf..abcf0d357dddd 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types @@ -3,7 +3,7 @@ === contextuallyTypedParametersWithInitializers4.ts === declare function test< >test : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^ ^^^^^ TContext, TMethods extends Record unknown>, @@ -22,7 +22,7 @@ test( >test( { count: 0, }, { checkLimit: (ctx, max = 3) => {}, },) : void > : ^^^^ >test : unknown>>(context: TContext, methods: TMethods) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ { >{ count: 0, } : { count: number; } > : ^^^^^^^^^^^^^^^^^^ @@ -36,13 +36,13 @@ test( }, { >{ checkLimit: (ctx, max = 3) => {}, } : { checkLimit: (ctx: { count: number; }, max?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ checkLimit: (ctx, max = 3) => {}, >checkLimit : (ctx: { count: number; }, max?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >(ctx, max = 3) => {} : (ctx: { count: number; }, max?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >ctx : { count: number; } > : ^^^^^^^^^^^^^^^^^^ >max : number diff --git a/tests/baselines/reference/contextuallyTypedParametersWithQuestionToken.types b/tests/baselines/reference/contextuallyTypedParametersWithQuestionToken.types index 06bbb3fcccf2c..4af45965a2cde 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithQuestionToken.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithQuestionToken.types @@ -5,21 +5,21 @@ function acceptNum(num: number) {} >acceptNum : (num: number) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >num : number > : ^^^^^^ const f1: (a: string, b: number) => void = function self(a, b?) { >f1 : (a: string, b: number) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : number > : ^^^^^^ >function self(a, b?) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >b : number | undefined @@ -29,7 +29,7 @@ const f1: (a: string, b: number) => void = function self(a, b?) { >acceptNum(b) : void > : ^^^^ >acceptNum : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -37,7 +37,7 @@ const f1: (a: string, b: number) => void = function self(a, b?) { >self("") : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ @@ -45,7 +45,7 @@ const f1: (a: string, b: number) => void = function self(a, b?) { >self("", undefined) : void > : ^^^^ >self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >undefined : undefined @@ -55,15 +55,15 @@ const f1: (a: string, b: number) => void = function self(a, b?) { const f2: (a: string, b: number) => void = function self(a, b?: number) { >f2 : (a: string, b: number) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : number > : ^^^^^^ >function self(a, b?: number) { acceptNum(b); // error self(""); self("", undefined);} : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >self : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number | undefined @@ -73,23 +73,23 @@ const f2: (a: string, b: number) => void = function self(a, b?: number) { >acceptNum(b) : void > : ^^^^ >acceptNum : (num: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : number | undefined > : ^^^^^^^^^^^^^^^^^^ self(""); >self("") : void > : ^^^^ ->self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>self : (a: string, b?: number) => void +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >"" : "" > : ^^ self("", undefined); >self("", undefined) : void > : ^^^^ ->self : (a: string, b?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>self : (a: string, b?: number) => void +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >"" : "" > : ^^ >undefined : undefined diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.types b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.types index 6ed526944a357..892311f545230 100644 --- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.types +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.types @@ -16,9 +16,9 @@ namespace JSX { const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; >FooComponent : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >(props: { foo: "A" | "B" | "C" }) => {props.foo} : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : >props : { foo: "A" | "B" | "C"; } > : ^^^^^^^ ^^^ >foo : "A" | "B" | "C" @@ -40,7 +40,7 @@ const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo} : JSX.Element > : ^^^^^^^^^^^ >FooComponent : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : "A" > : ^^^ >"A" : "A" @@ -50,7 +50,7 @@ const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo} : JSX.Element > : ^^^^^^^^^^^ >FooComponent : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : "A" > : ^^^ @@ -58,7 +58,7 @@ const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo} : JSX.Element > : ^^^^^^^^^^^ >FooComponent : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : "f" > : ^^^ >"f" : "f" @@ -68,7 +68,7 @@ const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo} : JSX.Element > : ^^^^^^^^^^^ >FooComponent : (props: { foo: "A" | "B" | "C"; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : "f" > : ^^^ diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.types b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.types index 82d750dc7417f..1eb1d9b78b6a1 100644 --- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.types +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes02.types @@ -18,7 +18,7 @@ export interface ClickableProps { export interface ButtonProps extends ClickableProps { onClick: (k: "left" | "right") => void; >onClick : (k: "left" | "right") => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ } @@ -31,7 +31,7 @@ export interface LinkProps extends ClickableProps { export function MainButton(buttonProps: ButtonProps): JSX.Element; >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^ >buttonProps : ButtonProps > : ^^^^^^^^^^^ >JSX : any @@ -39,7 +39,7 @@ export function MainButton(buttonProps: ButtonProps): JSX.Element; export function MainButton(linkProps: LinkProps): JSX.Element; >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >linkProps : LinkProps > : ^^^^^^^^^ >JSX : any @@ -47,7 +47,7 @@ export function MainButton(linkProps: LinkProps): JSX.Element; export function MainButton(props: ButtonProps | LinkProps): JSX.Element { >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >props : ButtonProps | LinkProps > : ^^^^^^^^^^^^^^^^^^^^^^^ >JSX : any @@ -101,23 +101,23 @@ const b0 = {console.log(k)}}} extra />; // k h > {console.log(k)}}} extra /> : JSX.Element > : ^^^^^^^^^^^ >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >{onClick: (k) => {console.log(k)}} : { onClick: (k: "left" | "right") => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onClick : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(k) => {console.log(k)} : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >console.log(k) : void > : ^^^^ >console.log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >extra : true @@ -129,21 +129,21 @@ const b2 = {console.log(k)}} extra />; // k has type >{console.log(k)}} extra /> : JSX.Element > : ^^^^^^^^^^^ >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >onClick : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(k)=>{console.log(k)} : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >console.log(k) : void > : ^^^^ >console.log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >extra : true @@ -155,7 +155,7 @@ const b3 = ; // goTo has type"home" | "c > : JSX.Element > : ^^^^^^^^^^^ >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >{goTo:"home"} : { goTo: "home"; } > : ^^^^^^^^^^^^^^^^^ >goTo : "home" @@ -171,7 +171,7 @@ const b4 = ; // goTo has type "home" | "contact > : JSX.Element > : ^^^^^^^^^^^ >MainButton : { (buttonProps: ButtonProps): JSX.Element; (linkProps: LinkProps): JSX.Element; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >goTo : "home" > : ^^^^^^ >extra : true @@ -179,7 +179,7 @@ const b4 = ; // goTo has type "home" | "contact export function NoOverload(buttonProps: ButtonProps): JSX.Element { return undefined } >NoOverload : (buttonProps: ButtonProps) => JSX.Element -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >buttonProps : ButtonProps > : ^^^^^^^^^^^ >JSX : any @@ -193,23 +193,23 @@ const c1 = {console.log(k)}}} extra />; // k > {console.log(k)}}} extra /> : JSX.Element > : ^^^^^^^^^^^ >NoOverload : (buttonProps: ButtonProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >{onClick: (k) => {console.log(k)}} : { onClick: (k: "left" | "right") => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onClick : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(k) => {console.log(k)} : (k: "left" | "right") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >console.log(k) : void > : ^^^^ >console.log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (message?: any, ...optionalParams: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >k : "left" | "right" > : ^^^^^^^^^^^^^^^^ >extra : true @@ -217,7 +217,7 @@ const c1 = {console.log(k)}}} extra />; // k export function NoOverload1(linkProps: LinkProps): JSX.Element { return undefined } >NoOverload1 : (linkProps: LinkProps) => JSX.Element -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >linkProps : LinkProps > : ^^^^^^^^^ >JSX : any @@ -231,7 +231,7 @@ const d1 = ; // goTo has type "home" | > : JSX.Element > : ^^^^^^^^^^^ >NoOverload1 : (linkProps: LinkProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >{goTo:"home"} : { goTo: "home"; } > : ^^^^^^^^^^^^^^^^^ >goTo : "home" diff --git a/tests/baselines/reference/contextuallyTypedSymbolNamedProperties.types b/tests/baselines/reference/contextuallyTypedSymbolNamedProperties.types index 3432b80c373c9..0435b731e3324 100644 --- a/tests/baselines/reference/contextuallyTypedSymbolNamedProperties.types +++ b/tests/baselines/reference/contextuallyTypedSymbolNamedProperties.types @@ -48,33 +48,33 @@ declare const ab: Action; > : ^^^^^^ declare function f(action: T, blah: { [K in T['type']]: (p: K) => void }): any; ->f : (action: T, blah: { [K in T['type']]: (p: K) => void; }) => any -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +>f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^ >type : string | symbol > : ^^^^^^^^^^^^^^^ >action : T > : ^ >blah : { [K in T["type"]]: (p: K) => void; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >p : K > : ^ f(ab, { >f(ab, { [A]: ap => { ap.description }, [B]: bp => { bp.description },}) : any >f : (action: T, blah: { [K in T["type"]]: (p: K) => void; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^ >ab : Action > : ^^^^^^ >{ [A]: ap => { ap.description }, [B]: bp => { bp.description },} : { [A]: (ap: unique symbol) => void; [B]: (bp: unique symbol) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [A]: ap => { ap.description }, >[A] : (ap: unique symbol) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >A : unique symbol > : ^^^^^^^^^^^^^ >ap => { ap.description } : (ap: unique symbol) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >ap : unique symbol > : ^^^^^^^^^^^^^ >ap.description : string | undefined @@ -86,11 +86,11 @@ f(ab, { [B]: bp => { bp.description }, >[B] : (bp: unique symbol) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >B : unique symbol > : ^^^^^^^^^^^^^ >bp => { bp.description } : (bp: unique symbol) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >bp : unique symbol > : ^^^^^^^^^^^^^ >bp.description : string | undefined @@ -104,19 +104,19 @@ f(ab, { const x: { [sym: symbol]: (p: string) => void } = { [A]: s => s.length }; >x : { [sym: symbol]: (p: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >sym : symbol > : ^^^^^^ >p : string > : ^^^^^^ >{ [A]: s => s.length } : { [A]: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >[A] : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >A : unique symbol > : ^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length : number diff --git a/tests/baselines/reference/contextuallyTypingOrOperator.types b/tests/baselines/reference/contextuallyTypingOrOperator.types index 960ecbd36dd32..2e04c21b17fe9 100644 --- a/tests/baselines/reference/contextuallyTypingOrOperator.types +++ b/tests/baselines/reference/contextuallyTypingOrOperator.types @@ -5,17 +5,17 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >v : { a: (_: string) => number; } > : ^^^^^ ^^^ >a : (_: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : string > : ^^^^^^ >{ a: s => s.length } || { a: s => 1 } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ a: s => s.length } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length : number @@ -25,11 +25,11 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >length : number > : ^^^^^^ >{ a: s => 1 } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => 1 : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >1 : 1 @@ -37,13 +37,13 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; var v2 = (s: string) => s.length || function (s) { s.length }; >v2 : (s: string) => number | ((s: any) => void) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >(s: string) => s.length || function (s) { s.length } : (s: string) => number | ((s: any) => void) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length || function (s) { s.length } : number | ((s: any) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >s.length : number > : ^^^^^^ >s : string @@ -51,7 +51,7 @@ var v2 = (s: string) => s.length || function (s) { s.length }; >length : number > : ^^^^^^ >function (s) { s.length } : (s: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >s : any >s.length : any >s : any @@ -61,13 +61,13 @@ var v2 = (s: string) => s.length || function (s) { s.length }; var v3 = (s: string) => s.length || function (s: number) { return 1 }; >v3 : (s: string) => number | ((s: number) => number) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(s: string) => s.length || function (s: number) { return 1 } : (s: string) => number | ((s: number) => number) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length || function (s: number) { return 1 } : number | ((s: number) => number) -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >s.length : number > : ^^^^^^ >s : string @@ -75,7 +75,7 @@ var v3 = (s: string) => s.length || function (s: number) { return 1 }; >length : number > : ^^^^^^ >function (s: number) { return 1 } : (s: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : number > : ^^^^^^ >1 : 1 @@ -83,17 +83,17 @@ var v3 = (s: string) => s.length || function (s: number) { return 1 }; var v4 = (s: number) => 1 || function (s: string) { return s.length }; >v4 : (s: number) => 1 | ((s: string) => number) -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(s: number) => 1 || function (s: string) { return s.length } : (s: number) => 1 | ((s: string) => number) -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : >s : number > : ^^^^^^ >1 || function (s: string) { return s.length } : 1 | ((s: string) => number) -> : ^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >function (s: string) { return s.length } : (s: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number diff --git a/tests/baselines/reference/contextuallyTypingOrOperator2.types b/tests/baselines/reference/contextuallyTypingOrOperator2.types index b579870c62e27..0ba9baa559a7f 100644 --- a/tests/baselines/reference/contextuallyTypingOrOperator2.types +++ b/tests/baselines/reference/contextuallyTypingOrOperator2.types @@ -5,17 +5,17 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >v : { a: (_: string) => number; } > : ^^^^^ ^^^ >a : (_: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : string > : ^^^^^^ >{ a: s => s.length } || { a: s => 1 } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ a: s => s.length } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length : number @@ -25,11 +25,11 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; >length : number > : ^^^^^^ >{ a: s => 1 } : { a: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => 1 : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >1 : 1 @@ -37,13 +37,13 @@ var v: { a: (_: string) => number } = { a: s => s.length } || { a: s => 1 }; var v2 = (s: string) => s.length || function (s) { s.aaa }; >v2 : (s: string) => number | ((s: any) => void) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >(s: string) => s.length || function (s) { s.aaa } : (s: string) => number | ((s: any) => void) -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s.length || function (s) { s.aaa } : number | ((s: any) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >s.length : number > : ^^^^^^ >s : string @@ -51,7 +51,7 @@ var v2 = (s: string) => s.length || function (s) { s.aaa }; >length : number > : ^^^^^^ >function (s) { s.aaa } : (s: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >s : any >s.aaa : any >s : any diff --git a/tests/baselines/reference/contextuallyTypingOrOperator3.types b/tests/baselines/reference/contextuallyTypingOrOperator3.types index 47d41b80d65ef..aabf5f5cd2df4 100644 --- a/tests/baselines/reference/contextuallyTypingOrOperator3.types +++ b/tests/baselines/reference/contextuallyTypingOrOperator3.types @@ -3,7 +3,7 @@ === contextuallyTypingOrOperator3.ts === function foo(u: U) { >foo : (u: U) => void -> : ^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >u : U > : ^ diff --git a/tests/baselines/reference/contextuallyTypingRestParameters.types b/tests/baselines/reference/contextuallyTypingRestParameters.types index fa5e966b679d2..0a7d641f1d821 100644 --- a/tests/baselines/reference/contextuallyTypingRestParameters.types +++ b/tests/baselines/reference/contextuallyTypingRestParameters.types @@ -3,11 +3,11 @@ === contextuallyTypingRestParameters.ts === var x: (...y: string[]) => void = function (.../*3*/y) { >x : (...y: string[]) => void -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >y : string[] > : ^^^^^^^^ >function (.../*3*/y) { var t = y; var x2: string = t; // This should be error var x3: string[] = t; // No error var y2: string = y; // This should be error var y3: string[] = y; // No error} : (...y: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^ >y : string[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/continueNotInIterationStatement4.types b/tests/baselines/reference/continueNotInIterationStatement4.types index c62746634161e..81f4a7415c286 100644 --- a/tests/baselines/reference/continueNotInIterationStatement4.types +++ b/tests/baselines/reference/continueNotInIterationStatement4.types @@ -13,7 +13,7 @@ while (true){ >x : () => void > : ^^^^^^^^^^ >() => { continue TWO; } : () => void -> : ^^^^^^^^^^ +> : continue TWO; >TWO : any diff --git a/tests/baselines/reference/contravariantInferenceAndTypeGuard.types b/tests/baselines/reference/contravariantInferenceAndTypeGuard.types index 319fafb558924..b3fb0d538ae87 100644 --- a/tests/baselines/reference/contravariantInferenceAndTypeGuard.types +++ b/tests/baselines/reference/contravariantInferenceAndTypeGuard.types @@ -43,30 +43,30 @@ declare class List { > : ^^^^^^^^^^^ filter(fn: FilterFn, context: TContext): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn>): List; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >fn : FilterFn > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >context : TContext > : ^^^^^^^^ filter(fn: FilterFn): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn>): List; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >fn : FilterFn> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ filter(fn: IteratorFn, context: TContext): List; ->filter : { (fn: FilterFn, context: TContext_1): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn>): List; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>filter : { (fn: FilterFn, context: TContext_1): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^ >fn : IteratorFn > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >context : TContext > : ^^^^^^^^ filter(fn: IteratorFn): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >fn : IteratorFn> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -89,13 +89,13 @@ const filter1 = list2.filter(function(item, node, list): item is Test { >list2.filter(function(item, node, list): item is Test { this.b; // $ExpectType string item; // $ExpectType Test | null node; // $ExpectType ListItem list; // $ExpectType List return !!item;}, {b: 'c'}) : List > : ^^^^^^^^^^ >list2.filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn>): List; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >list2 : List > : ^^^^^^^^^^^^^^^^^ >filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn>): List; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(item, node, list): item is Test { this.b; // $ExpectType string item; // $ExpectType Test | null node; // $ExpectType ListItem list; // $ExpectType List return !!item;} : (this: { b: string; }, item: Test | null, node: ListItem, list: List) => item is Test -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >item : Test | null > : ^^^^^^^^^^^ >node : ListItem diff --git a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types index 099084e86654f..0fd25be99a8f0 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types +++ b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types @@ -10,7 +10,7 @@ type Funcs> = { [K in keyof B]: { fn: (a: A, b: B) => void; >fn : (a: A, b: B) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -25,7 +25,7 @@ type Funcs> = { declare function foo>(fns: Funcs): [A, B] >foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fns : Funcs > : ^^^^^^^^^^^ @@ -35,21 +35,21 @@ const result = foo({ >foo({ bar: { fn: (a: string) => {}, thing: 'asd', },}) : [string, { bar: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : >(fns: Funcs) => [A, B] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ bar: { fn: (a: string) => {}, thing: 'asd', },} : { bar: { fn: (a: string) => void; thing: string; }; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bar: { >bar : { fn: (a: string) => void; thing: string; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ fn: (a: string) => {}, thing: 'asd', } : { fn: (a: string) => void; thing: string; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ fn: (a: string) => {}, >fn : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a: string) => {} : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types index c5f65d1f65d78..50cc1a1644f25 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types +++ b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types @@ -15,7 +15,7 @@ */ function foo(fns) { >foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fns : Funcs > : ^^^^^^^^^^^ @@ -29,24 +29,24 @@ const result = foo({ >foo({ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },}) : [string, { bar: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : >(fns: Funcs) => [A, B] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },} : { bar: { fn: (a: string) => void; thing: string; }; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bar: { >bar : { fn: (a: string) => void; thing: string; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ fn: /** @param {string} a */ (a) => {}, thing: "asd", } : { fn: (a: string) => void; thing: string; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ fn: >fn : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ /** @param {string} a */ (a) => {}, >(a) => {} : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types index 9fb7f92d623f8..94a731f54ce5a 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types +++ b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types @@ -5,9 +5,9 @@ declare function filter(predicate: (value: T, index: number) => boolean): T; >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >predicate : (value: T, index: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -19,9 +19,9 @@ const a = filter((pose?: number) => true); >filter((pose?: number) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(pose?: number) => true : (pose?: number) => true -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >pose : number | undefined > : ^^^^^^^^^^^^^^^^^^ >true : true @@ -33,9 +33,9 @@ const b = filter((pose?: number, _?: number) => true); >filter((pose?: number, _?: number) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(pose?: number, _?: number) => true : (pose?: number, _?: number) => true -> : ^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >pose : number | undefined > : ^^^^^^^^^^^^^^^^^^ >_ : number | undefined diff --git a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types index f9d02089e075f..b8b7acb2ba9a0 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types +++ b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types @@ -8,9 +8,9 @@ */ function filter(predicate) { >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >predicate : (value: T, index: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ return /** @type {any} */ (null); >(null) : any @@ -22,14 +22,14 @@ const a = filter( >filter( /** * @param {number} [pose] */ (pose) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ /** * @param {number} [pose] */ (pose) => true >(pose) => true : (pose?: number | undefined) => true -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pose : number | undefined > : ^^^^^^^^^^^^^^^^^^ >true : true @@ -43,7 +43,7 @@ const b = filter( >filter( /** * @param {number} [pose] * @param {number} [_] */ (pose, _) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ >filter : (predicate: (value: T, index: number) => boolean) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ /** * @param {number} [pose] @@ -51,7 +51,7 @@ const b = filter( */ (pose, _) => true >(pose, _) => true : (pose?: number | undefined, _?: number | undefined) => true -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pose : number | undefined > : ^^^^^^^^^^^^^^^^^^ >_ : number | undefined diff --git a/tests/baselines/reference/contravariantTypeAliasInference.types b/tests/baselines/reference/contravariantTypeAliasInference.types index 7e051857ca0fa..33268adef50c0 100644 --- a/tests/baselines/reference/contravariantTypeAliasInference.types +++ b/tests/baselines/reference/contravariantTypeAliasInference.types @@ -23,7 +23,7 @@ declare let f2: Func1<"a">; declare function foo(f1: Func1, f2: Func1): void; >foo : (f1: Func1, f2: Func1) => void -> : ^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f1 : Func1 > : ^^^^^^^^ >f2 : Func1 @@ -33,7 +33,7 @@ foo(f1, f2); >foo(f1, f2) : void > : ^^^^ >foo : (f1: Func1, f2: Func1) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : Func1 > : ^^^^^^^^^^^^^ >f2 : Func1<"a"> @@ -49,7 +49,7 @@ declare let g2: Func2<"a">; declare function bar(g1: Func2, g2: Func2): void; >bar : (g1: Func2, g2: Func2) => void -> : ^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >g1 : Func2 > : ^^^^^^^^ >g2 : Func2 @@ -59,7 +59,7 @@ bar(f1, f2); >bar(f1, f2) : void > : ^^^^ >bar : (g1: Func2, g2: Func2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : Func1 > : ^^^^^^^^^^^^^ >f2 : Func1<"a"> @@ -69,7 +69,7 @@ bar(g1, g2); >bar(g1, g2) : void > : ^^^^ >bar : (g1: Func2, g2: Func2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >g1 : Func2 > : ^^^^^^^^^^^^^ >g2 : Func2<"a"> diff --git a/tests/baselines/reference/controlFlowAliasedDiscriminants.types b/tests/baselines/reference/controlFlowAliasedDiscriminants.types index 7233b8cc211d3..0d9333d6c4a72 100644 --- a/tests/baselines/reference/controlFlowAliasedDiscriminants.types +++ b/tests/baselines/reference/controlFlowAliasedDiscriminants.types @@ -108,32 +108,32 @@ if (isSuccess1 && isSuccess2 && isSuccess3) { data1.toExponential(); // should ok >data1.toExponential() : string > : ^^^^^^ ->data1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data1 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data2.toExponential(); // should ok >data2.toExponential() : string > : ^^^^^^ ->data2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data2 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data3.toExponential(); // should ok >data3.toExponential() : string > : ^^^^^^ ->data3.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data3.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data3 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } const areSuccess = isSuccess1 && isSuccess2 && isSuccess3; @@ -157,32 +157,32 @@ if (areSuccess) { data1.toExponential(); // should ok >data1.toExponential() : string > : ^^^^^^ ->data1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data1 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data2.toExponential(); // should ok >data2.toExponential() : string > : ^^^^^^ ->data2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data2 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data3.toExponential(); // should ok >data3.toExponential() : string > : ^^^^^^ ->data3.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data3.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data3 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } { @@ -249,32 +249,32 @@ if (areSuccess) { data1.toExponential(); // should error >data1.toExponential() : string > : ^^^^^^ ->data1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data1 : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data2.toExponential(); // should error >data2.toExponential() : string > : ^^^^^^ ->data2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data2 : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data3.toExponential(); // should ok >data3.toExponential() : string > : ^^^^^^ ->data3.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data3.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data3 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } @@ -337,32 +337,32 @@ declare function getArrayResult(): [true, number] | [false, undefined]; bar1.toExponential(); // should ok >bar1.toExponential() : string > : ^^^^^^ ->bar1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar1 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ bar2.toExponential(); // should ok >bar2.toExponential() : string > : ^^^^^^ ->bar2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar2 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ bar3.toExponential(); // should ok >bar3.toExponential() : string > : ^^^^^^ ->bar3.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar3.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar3 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } @@ -418,32 +418,32 @@ declare function getArrayResult(): [true, number] | [false, undefined]; bar1.toExponential(); // should ok >bar1.toExponential() : string > : ^^^^^^ ->bar1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar1 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ bar2.toExponential(); // should error >bar2.toExponential() : string > : ^^^^^^ ->bar2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar2 : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ bar3.toExponential(); // should error >bar3.toExponential() : string > : ^^^^^^ ->bar3.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar3.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >bar3 : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } @@ -597,7 +597,7 @@ type Nested = { function bindingPatternInParameter({ data: data1, isSuccess: isSuccess1 }: UseQueryResult) { >bindingPatternInParameter : ({ data: data1, isSuccess: isSuccess1 }: UseQueryResult) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data : any > : ^^^ >data1 : number | undefined @@ -638,22 +638,22 @@ function bindingPatternInParameter({ data: data1, isSuccess: isSuccess1 }: UseQu data1.toExponential(); >data1.toExponential() : string > : ^^^^^^ ->data1.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data1.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data1 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ data2.toExponential(); >data2.toExponential() : string > : ^^^^^^ ->data2.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data2.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data2 : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/controlFlowAliasing.types b/tests/baselines/reference/controlFlowAliasing.types index 2e8e5caa0c5b1..e428dea7f7f4d 100644 --- a/tests/baselines/reference/controlFlowAliasing.types +++ b/tests/baselines/reference/controlFlowAliasing.types @@ -5,7 +5,7 @@ function f10(x: string | number) { >f10 : (x: string | number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -42,7 +42,7 @@ function f10(x: string | number) { function f11(x: unknown) { >f11 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -72,7 +72,7 @@ function f11(x: unknown) { function f12(x: string | number | boolean) { >f12 : (x: string | number | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -125,7 +125,7 @@ function f12(x: string | number | boolean) { function f13(x: string | number | boolean) { >f13 : (x: string | number | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -184,7 +184,7 @@ function f13(x: string | number | boolean) { function f14(x: number | null | undefined): number | null { >f14 : (x: number | null | undefined) => number | null -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -211,7 +211,7 @@ function f14(x: number | null | undefined): number | null { function f15(obj: { readonly x: string | number }) { >f15 : (obj: { readonly x: string | number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : { readonly x: string | number; } > : ^^^^^^^^^^^^^^ ^^^ >x : string | number @@ -251,7 +251,7 @@ function f15(obj: { readonly x: string | number }) { function f16(obj: { readonly x: string | number }) { >f16 : (obj: { readonly x: string | number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : { readonly x: string | number; } > : ^^^^^^^^^^^^^^ ^^^ >x : string | number @@ -303,7 +303,7 @@ function f16(obj: { readonly x: string | number }) { function f17(obj: readonly [string | number]) { >f17 : (obj: readonly [string | number]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : readonly [string | number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -341,7 +341,7 @@ function f17(obj: readonly [string | number]) { function f18(obj: readonly [string | number]) { >f18 : (obj: readonly [string | number]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : readonly [string | number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -388,9 +388,9 @@ function f18(obj: readonly [string | number]) { } function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f20 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f20 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -439,9 +439,9 @@ function f20(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f21 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f21 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -490,9 +490,9 @@ function f21(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f22 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f22 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -541,9 +541,9 @@ function f22(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f23 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f23 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -574,7 +574,7 @@ function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ if (isFoo) { >isFoo : boolean @@ -600,9 +600,9 @@ function f23(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f24 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f24 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -617,7 +617,7 @@ function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ const isFoo = obj.kind === 'foo'; >isFoo : boolean @@ -657,9 +657,9 @@ function f24(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f25 : (arg: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->arg : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f25 : (arg: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -674,7 +674,7 @@ function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { >obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ const isFoo = obj.kind === 'foo'; >isFoo : boolean @@ -714,11 +714,11 @@ function f25(arg: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { ->f26 : (outer: { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void -> : ^^^^^^^^ ^^^^^^^^^ ->outer : { readonly obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>f26 : (outer: { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void +> : ^ ^^ ^^^^^^^^^ +>outer : { readonly obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } > : ^^^^^^^^^^^^^^^^ ^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -779,11 +779,11 @@ function f26(outer: { readonly obj: { kind: 'foo', foo: string } | { kind: 'bar' } function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number } }) { ->f27 : (outer: { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; }) => void -> : ^^^^^^^^ ^^^^^^^^^ ->outer : { obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }; } +>f27 : (outer: { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; }) => void +> : ^ ^^ ^^^^^^^^^ +>outer : { obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }; } > : ^^^^^^^ ^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -844,9 +844,9 @@ function f27(outer: { obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: nu } function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f28 : (obj?: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } | undefined +>f28 : (obj?: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } | undefined > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >kind : "foo" > : ^^^^^ @@ -922,9 +922,9 @@ function f28(obj?: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) // Narrowing by aliased discriminant property access function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f30 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f30 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -973,9 +973,9 @@ function f30(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f31 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f31 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -1020,9 +1020,9 @@ function f31(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f32 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f32 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -1069,9 +1069,9 @@ function f32(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { } function f33(obj: { kind: 'foo', foo: string } | { kind: 'bar', bar: number }) { ->f33 : (obj: { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo: string; } | { kind: 'bar'; bar: number; } +>f33 : (obj: { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo: string; } | { kind: "bar"; bar: number; } > : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -1282,9 +1282,9 @@ class C11 { // Mixing of aliased discriminants and conditionals function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) { ->f40 : (obj: { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; }) => void -> : ^^^^^^ ^^^^^^^^^ ->obj : { kind: 'foo'; foo?: string; } | { kind: 'bar'; bar?: number; } +>f40 : (obj: { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; }) => void +> : ^ ^^ ^^^^^^^^^ +>obj : { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; } > : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ >kind : "foo" > : ^^^^^ @@ -1351,7 +1351,7 @@ type Data = { kind: 'str', payload: string } | { kind: 'num', payload: number }; function gg2(obj: Data) { >gg2 : (obj: Data) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : Data > : ^^^^ @@ -1392,7 +1392,7 @@ function gg2(obj: Data) { function foo({ kind, payload }: Data) { >foo : ({ kind, payload }: Data) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "str" | "num" > : ^^^^^^^^^^^^^ >payload : string | number @@ -1427,13 +1427,13 @@ const obj = { >obj : { fn: () => boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^ >{ fn: () => true} : { fn: () => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ fn: () => true >fn : () => boolean > : ^^^^^^^^^^^^^ >() => true : () => boolean -> : ^^^^^^^^^^^^^ +> : >true : true > : ^^^^ @@ -1462,7 +1462,7 @@ class Utils { static isDefined(value: T): value is NonNullable { >isDefined : (value: T) => value is NonNullable -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -1492,11 +1492,11 @@ class A53267 { >Utils.isDefined(this.testNumber) : boolean > : ^^^^^^^ >Utils.isDefined : (value: T) => value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Utils : typeof Utils > : ^^^^^^^^^^^^ >isDefined : (value: T) => value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.testNumber : number | undefined > : ^^^^^^^^^^^^^^^^^^ >this : this diff --git a/tests/baselines/reference/controlFlowAnalysisOnBareThisKeyword.types b/tests/baselines/reference/controlFlowAnalysisOnBareThisKeyword.types index 739a74a16097c..597da341affcf 100644 --- a/tests/baselines/reference/controlFlowAnalysisOnBareThisKeyword.types +++ b/tests/baselines/reference/controlFlowAnalysisOnBareThisKeyword.types @@ -3,7 +3,7 @@ === controlFlowAnalysisOnBareThisKeyword.ts === declare function isBig(x: any): x is { big: true }; >isBig : (x: any) => x is { big: true; } -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any >big : true > : ^^^^ @@ -12,7 +12,7 @@ declare function isBig(x: any): x is { big: true }; function bigger(this: {}) { >bigger : (this: {}) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : {} > : ^^ @@ -20,7 +20,7 @@ function bigger(this: {}) { >isBig(this) : boolean > : ^^^^^^^ >isBig : (x: any) => x is { big: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >this : {} > : ^^ @@ -36,7 +36,7 @@ function bigger(this: {}) { function bar(this: string | number) { >bar : (this: string | number) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowArrayErrors.types b/tests/baselines/reference/controlFlowArrayErrors.types index ef45ebe571321..162cba953fee8 100644 --- a/tests/baselines/reference/controlFlowArrayErrors.types +++ b/tests/baselines/reference/controlFlowArrayErrors.types @@ -25,11 +25,11 @@ function f1() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -66,11 +66,11 @@ function f2() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -95,11 +95,11 @@ function f3() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -137,11 +137,11 @@ function f4() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: (string | number)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >push : (...items: (string | number)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ } @@ -164,11 +164,11 @@ function f5() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: (string | number)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >push : (...items: (string | number)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ } @@ -199,11 +199,11 @@ function f6() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -211,11 +211,11 @@ function f6() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -238,11 +238,11 @@ function f6() { >x.push(99) : number > : ^^^^^^ >x.push : ((...items: (string | number)[]) => number) | ((...items: boolean[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : (string | number)[] | boolean[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >push : ((...items: (string | number)[]) => number) | ((...items: boolean[]) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >99 : 99 > : ^^ } @@ -261,11 +261,11 @@ function f7() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -279,11 +279,11 @@ function f7() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -291,11 +291,11 @@ function f7() { >y.push("hello") : number > : ^^^^^^ >y.push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : number[] > : ^^^^^^^^ >push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -314,11 +314,11 @@ function f8() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/controlFlowArrays.types b/tests/baselines/reference/controlFlowArrays.types index 05ef9ef933845..33c67c3967380 100644 --- a/tests/baselines/reference/controlFlowArrays.types +++ b/tests/baselines/reference/controlFlowArrays.types @@ -67,11 +67,11 @@ function f2() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -79,11 +79,11 @@ function f2() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -91,11 +91,11 @@ function f2() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -122,11 +122,11 @@ function f3() { >x.push(5, "hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ >"hello" : "hello" @@ -157,11 +157,11 @@ function f4() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ } @@ -170,11 +170,11 @@ function f4() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -207,11 +207,11 @@ function f5() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ } @@ -227,11 +227,11 @@ function f5() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -272,11 +272,11 @@ function f6() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -315,11 +315,11 @@ function f7() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -343,11 +343,11 @@ function f8() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -363,11 +363,11 @@ function f8() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -383,11 +383,11 @@ function f8() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -416,11 +416,11 @@ function f9() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -433,11 +433,11 @@ function f9() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -467,11 +467,11 @@ function f10() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -484,11 +484,11 @@ function f10() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -506,11 +506,11 @@ function f10() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -522,11 +522,11 @@ function f10() { >x.push(99) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >99 : 99 > : ^^ @@ -561,11 +561,11 @@ function f11() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -604,11 +604,11 @@ function f12() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -631,11 +631,11 @@ function f13() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -643,11 +643,11 @@ function f13() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -655,11 +655,11 @@ function f13() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -682,11 +682,11 @@ function f14() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -694,11 +694,11 @@ function f14() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -706,11 +706,11 @@ function f14() { >x.push(true) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -745,11 +745,11 @@ function f15() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ } @@ -772,7 +772,7 @@ function f16() { >(x = [], x).push(5) : number > : ^^^^^^ >(x = [], x).push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >(x = [], x) : any[] > : ^^^^^ >x = [], x : any[] @@ -785,7 +785,7 @@ function f16() { >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -793,7 +793,7 @@ function f16() { >(x.push("hello"), x).push(true) : number > : ^^^^^^ >(x.push("hello"), x).push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >(x.push("hello"), x) : any[] > : ^^^^^ >x.push("hello"), x : any[] @@ -801,17 +801,17 @@ function f16() { >x.push("hello") : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -853,11 +853,11 @@ function f17() { >x.unshift(5) : number > : ^^^^^^ >x.unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -865,11 +865,11 @@ function f17() { >x.unshift("hello") : number > : ^^^^^^ >x.unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -877,11 +877,11 @@ function f17() { >x.unshift(true) : number > : ^^^^^^ >x.unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ @@ -904,11 +904,11 @@ function f18() { >x.push(5) : number > : ^^^^^^ >x.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -916,11 +916,11 @@ function f18() { >x.unshift("hello") : number > : ^^^^^^ >x.unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >unshift : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -944,7 +944,7 @@ function f18() { declare function foo(arg: { val: number }[]): void; >foo : (arg: { val: number; }[]) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : { val: number; }[] > : ^^^^^^^ ^^^^^ >val : number @@ -960,11 +960,11 @@ arr.push({ val: 1, bar: 2 }); >arr.push({ val: 1, bar: 2 }) : number > : ^^^^^^ >arr.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arr : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >{ val: 1, bar: 2 } : { val: number; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >val : number @@ -980,7 +980,7 @@ foo(arr); >foo(arr) : void > : ^^^^ >foo : (arg: { val: number; }[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arr : { val: number; bar: number; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowBinaryOrExpression.types b/tests/baselines/reference/controlFlowBinaryOrExpression.types index d072598861183..5541056557097 100644 --- a/tests/baselines/reference/controlFlowBinaryOrExpression.types +++ b/tests/baselines/reference/controlFlowBinaryOrExpression.types @@ -73,12 +73,12 @@ export interface HTMLCollection { declare function isNodeList(sourceObj: any): sourceObj is NodeList; >isNodeList : (sourceObj: any) => sourceObj is NodeList -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >sourceObj : any declare function isHTMLCollection(sourceObj: any): sourceObj is HTMLCollection; >isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >sourceObj : any type EventTargetLike = {a: string} | HTMLCollection | NodeList; @@ -98,7 +98,7 @@ if (isNodeList(sourceObj)) { >isNodeList(sourceObj) : boolean > : ^^^^^^^ >isNodeList : (sourceObj: any) => sourceObj is NodeList -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >sourceObj : EventTargetLike > : ^^^^^^^^^^^^^^^ @@ -115,7 +115,7 @@ if (isHTMLCollection(sourceObj)) { >isHTMLCollection(sourceObj) : boolean > : ^^^^^^^ >isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >sourceObj : EventTargetLike > : ^^^^^^^^^^^^^^^ @@ -134,13 +134,13 @@ if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { >isNodeList(sourceObj) : boolean > : ^^^^^^^ >isNodeList : (sourceObj: any) => sourceObj is NodeList -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >sourceObj : EventTargetLike > : ^^^^^^^^^^^^^^^ >isHTMLCollection(sourceObj) : boolean > : ^^^^^^^ >isHTMLCollection : (sourceObj: any) => sourceObj is HTMLCollection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >sourceObj : { a: string; } > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowBindingElement.types b/tests/baselines/reference/controlFlowBindingElement.types index 5529de6b82baa..8f92fbdf05d9b 100644 --- a/tests/baselines/reference/controlFlowBindingElement.types +++ b/tests/baselines/reference/controlFlowBindingElement.types @@ -37,11 +37,11 @@ >console.log(param) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >param : string > : ^^^^^^ } diff --git a/tests/baselines/reference/controlFlowCaching.types b/tests/baselines/reference/controlFlowCaching.types index e8ea86098c6d2..329cd1bd43e2d 100644 --- a/tests/baselines/reference/controlFlowCaching.types +++ b/tests/baselines/reference/controlFlowCaching.types @@ -5,7 +5,7 @@ function f(dim, offsets, arr, acommon, centerAnchorLimit, g, has, lin) { >f : (dim: any, offsets: any, arr: any, acommon: any, centerAnchorLimit: any, g: any, has: any, lin: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >dim : any >offsets : any >arr : any @@ -431,19 +431,19 @@ function f(dim, offsets, arr, acommon, centerAnchorLimit, g, has, lin) { >Math.abs(Math.cos(rotation * Math.PI / 180)) : number > : ^^^^^^ >Math.abs : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >abs : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math.cos(rotation * Math.PI / 180) : number > : ^^^^^^ >Math.cos : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >cos : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >rotation * Math.PI / 180 : number > : ^^^^^^ >rotation * Math.PI : number @@ -465,19 +465,19 @@ function f(dim, offsets, arr, acommon, centerAnchorLimit, g, has, lin) { >Math.abs(Math.sin(rotation * Math.PI / 180)) : number > : ^^^^^^ >Math.abs : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >abs : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math.sin(rotation * Math.PI / 180) : number > : ^^^^^^ >Math.sin : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sin : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >rotation * Math.PI / 180 : number > : ^^^^^^ >rotation * Math.PI : number @@ -580,11 +580,11 @@ function f(dim, offsets, arr, acommon, centerAnchorLimit, g, has, lin) { >Math.max(taMajorTick.length > 0 ? taMajorTick.length : 0, taMinorTick.length > 0 ? taMinorTick.length : 0) : number > : ^^^^^^ >Math.max : (...values: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >max : (...values: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >taMajorTick.length > 0 ? taMajorTick.length : 0 : any >taMajorTick.length > 0 : boolean > : ^^^^^^^ diff --git a/tests/baselines/reference/controlFlowCommaExpressionAssertionMultiple.types b/tests/baselines/reference/controlFlowCommaExpressionAssertionMultiple.types index 5ef027837d5f3..99aa4265aa523 100644 --- a/tests/baselines/reference/controlFlowCommaExpressionAssertionMultiple.types +++ b/tests/baselines/reference/controlFlowCommaExpressionAssertionMultiple.types @@ -3,12 +3,12 @@ === controlFlowCommaExpressionAssertionMultiple.ts === function Narrow(value: any): asserts value is T {} >Narrow : (value: any) => asserts value is T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : any function func(foo: any, bar: any) { >func : (foo: any, bar: any) => void -> : ^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >foo : any >bar : any @@ -18,12 +18,12 @@ function func(foo: any, bar: any) { >Narrow(foo) : void > : ^^^^ >Narrow : (value: any) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >foo : any >Narrow(bar) : void > : ^^^^ >Narrow : (value: any) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >bar : any foo; @@ -37,7 +37,7 @@ function func(foo: any, bar: any) { function func2(foo: any, bar: any, baz: any) { >func2 : (foo: any, bar: any, baz: any) => void -> : ^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : any >bar : any >baz : any @@ -50,17 +50,17 @@ function func2(foo: any, bar: any, baz: any) { >Narrow(foo) : void > : ^^^^ >Narrow : (value: any) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >foo : any >Narrow(bar) : void > : ^^^^ >Narrow : (value: any) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >bar : any >Narrow(baz) : void > : ^^^^ >Narrow : (value: any) => asserts value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >baz : any foo; diff --git a/tests/baselines/reference/controlFlowCommaExpressionAssertionWithinTernary.types b/tests/baselines/reference/controlFlowCommaExpressionAssertionWithinTernary.types index ec10232ed68e2..85d4b6ebf5309 100644 --- a/tests/baselines/reference/controlFlowCommaExpressionAssertionWithinTernary.types +++ b/tests/baselines/reference/controlFlowCommaExpressionAssertionWithinTernary.types @@ -3,12 +3,12 @@ === controlFlowCommaExpressionAssertionWithinTernary.ts === declare function assert(value: any): asserts value; >assert : (value: any) => asserts value -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : any function foo2(param: number | null | undefined): number | null { >foo2 : (param: number | null | undefined) => number | null -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >param : number | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -34,7 +34,7 @@ function foo2(param: number | null | undefined): number | null { >assert(param !== undefined) : void > : ^^^^ >assert : (value: any) => asserts value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >param !== undefined : boolean > : ^^^^^^^ >param : number | null diff --git a/tests/baselines/reference/controlFlowCommaExpressionFunctionCall.types b/tests/baselines/reference/controlFlowCommaExpressionFunctionCall.types index a17022ea2b037..be39a6d7ca8f0 100644 --- a/tests/baselines/reference/controlFlowCommaExpressionFunctionCall.types +++ b/tests/baselines/reference/controlFlowCommaExpressionFunctionCall.types @@ -5,7 +5,7 @@ const otherValue = () => true; >otherValue : () => boolean > : ^^^^^^^^^^^^^ >() => true : () => boolean -> : ^^^^^^^^^^^^^ +> : >true : true > : ^^^^ @@ -16,7 +16,7 @@ const value : number | string = null as any; function isNumber(obj: any): obj is number { >isNumber : (obj: any) => obj is number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : any return true; // method implementation irrelevant @@ -29,7 +29,7 @@ if (isNumber((otherValue(), value))) { >isNumber((otherValue(), value)) : boolean > : ^^^^^^^ >isNumber : (obj: any) => obj is number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >(otherValue(), value) : string | number > : ^^^^^^^^^^^^^^^ >otherValue(), value : string | number diff --git a/tests/baselines/reference/controlFlowCommaOperator.types b/tests/baselines/reference/controlFlowCommaOperator.types index 4c1594e0677d8..6d5fa7fb2da11 100644 --- a/tests/baselines/reference/controlFlowCommaOperator.types +++ b/tests/baselines/reference/controlFlowCommaOperator.types @@ -3,7 +3,7 @@ === controlFlowCommaOperator.ts === function f(x: string | number | boolean) { >f : (x: string | number | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowComputedPropertyNames.types b/tests/baselines/reference/controlFlowComputedPropertyNames.types index 55913f6458680..f8cb864a2438f 100644 --- a/tests/baselines/reference/controlFlowComputedPropertyNames.types +++ b/tests/baselines/reference/controlFlowComputedPropertyNames.types @@ -3,7 +3,7 @@ === controlFlowComputedPropertyNames.ts === function f1(obj: Record, key: string) { >f1 : (obj: Record, key: string) => void -> : ^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -41,7 +41,7 @@ function f1(obj: Record, key: string) { function f2(obj: Record, key: string) { >f2 : (obj: Record, key: string) => void -> : ^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -159,7 +159,7 @@ type Thing = { a?: string, b?: number, c?: number }; function f3(obj: Thing, key: keyof Thing) { >f3 : (obj: Thing, key: keyof Thing) => void -> : ^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Thing > : ^^^^^ >key : keyof Thing @@ -222,23 +222,23 @@ function f3(obj: Thing, key: keyof Thing) { obj[key].toFixed(); >obj[key].toFixed() : string > : ^^^^^^ ->obj[key].toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>obj[key].toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >obj[key] : number > : ^^^^^^ >obj : Thing > : ^^^^^ >key : keyof Thing > : ^^^^^^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } } function f4(obj: Record, key: K) { >f4 : (obj: Record, key: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : K diff --git a/tests/baselines/reference/controlFlowDestructuringLoop.types b/tests/baselines/reference/controlFlowDestructuringLoop.types index 64f6d046be6f7..f1c59033b302c 100644 --- a/tests/baselines/reference/controlFlowDestructuringLoop.types +++ b/tests/baselines/reference/controlFlowDestructuringLoop.types @@ -17,7 +17,7 @@ type Val = NumVal | StrVal; function isNumVal(x: Val): x is NumVal { >isNumVal : (x: Val) => x is NumVal -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Val > : ^^^ @@ -38,7 +38,7 @@ function isNumVal(x: Val): x is NumVal { function foo(things: Val[]): void { >foo : (things: Val[]) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >things : Val[] > : ^^^^^ @@ -52,7 +52,7 @@ function foo(things: Val[]): void { >isNumVal(thing) : boolean > : ^^^^^^^ >isNumVal : (x: Val) => x is NumVal -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >thing : Val > : ^^^ @@ -65,12 +65,12 @@ function foo(things: Val[]): void { val.toFixed(2); >val.toFixed(2) : string > : ^^^^^^ ->val.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>val.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >val : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ } diff --git a/tests/baselines/reference/controlFlowDestructuringParameters.types b/tests/baselines/reference/controlFlowDestructuringParameters.types index 4f72d680075f5..42e13ef4a3f68 100644 --- a/tests/baselines/reference/controlFlowDestructuringParameters.types +++ b/tests/baselines/reference/controlFlowDestructuringParameters.types @@ -8,7 +8,7 @@ >[{ x: 1 }].map( ({ x }) => x) : number[] > : ^^^^^^^^ >[{ x: 1 }].map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >[{ x: 1 }] : { x: number; }[] > : ^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } @@ -18,11 +18,11 @@ >1 : 1 > : ^ >map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^ ({ x }) => x >({ x }) => x : ({ x }: { x: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/controlFlowDestructuringVariablesInTryCatch.types b/tests/baselines/reference/controlFlowDestructuringVariablesInTryCatch.types index 03443cc14b7d6..c9b93883967eb 100644 --- a/tests/baselines/reference/controlFlowDestructuringVariablesInTryCatch.types +++ b/tests/baselines/reference/controlFlowDestructuringVariablesInTryCatch.types @@ -61,11 +61,11 @@ try { >console.error("error") : void > : ^^^^ >console.error : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >error : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"error" : "error" > : ^^^^^^^ } diff --git a/tests/baselines/reference/controlFlowElementAccessNoCrash1.types b/tests/baselines/reference/controlFlowElementAccessNoCrash1.types index 52d2a1a76d5c2..cc1001e855e24 100644 --- a/tests/baselines/reference/controlFlowElementAccessNoCrash1.types +++ b/tests/baselines/reference/controlFlowElementAccessNoCrash1.types @@ -37,13 +37,13 @@ interface VerifyTscEditDiscrepanciesInput { function testTscCompile(input: TestTscCompile) {} >testTscCompile : (input: TestTscCompile) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >input : TestTscCompile > : ^^^^^^^^^^^^^^ function verifyTscEditDiscrepancies({ >verifyTscEditDiscrepancies : ({ index, edits, commandLineArgs, }: VerifyTscEditDiscrepanciesInput) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ index, >index : number @@ -72,7 +72,7 @@ function verifyTscEditDiscrepancies({ >testTscCompile({ subScenario: caption, commandLineArgs: edits[index].commandLineArgs || commandLineArgs, }) : void > : ^^^^ >testTscCompile : (input: TestTscCompile) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ subScenario: caption, commandLineArgs: edits[index].commandLineArgs || commandLineArgs, } : { subScenario: string; commandLineArgs: readonly string[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowFavorAssertedTypeThroughTypePredicate.types b/tests/baselines/reference/controlFlowFavorAssertedTypeThroughTypePredicate.types index 3c8ac73a3f39a..91c2454a13057 100644 --- a/tests/baselines/reference/controlFlowFavorAssertedTypeThroughTypePredicate.types +++ b/tests/baselines/reference/controlFlowFavorAssertedTypeThroughTypePredicate.types @@ -5,7 +5,7 @@ declare function isObject1(value: unknown): value is Record; >isObject1 : (value: unknown) => value is Record -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ @@ -17,7 +17,7 @@ if (isObject1(obj1)) { >isObject1(obj1) : boolean > : ^^^^^^^ >isObject1 : (value: unknown) => value is Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj1 : {} > : ^^ @@ -46,7 +46,7 @@ if (isObject1(obj2)) { >isObject1(obj2) : boolean > : ^^^^^^^ >isObject1 : (value: unknown) => value is Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj2 : {} | undefined > : ^^^^^^^^^^^^^^ @@ -69,7 +69,7 @@ obj2; declare function isObject2(value: unknown): value is {}; >isObject2 : (value: unknown) => value is {} -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ @@ -81,7 +81,7 @@ if (isObject2(obj3)) { >isObject2(obj3) : boolean > : ^^^^^^^ >isObject2 : (value: unknown) => value is {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >obj3 : Record > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -110,7 +110,7 @@ if (isObject2(obj4)) { >isObject2(obj4) : boolean > : ^^^^^^^ >isObject2 : (value: unknown) => value is {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >obj4 : Record | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowFinallyNoCatchAssignments.types b/tests/baselines/reference/controlFlowFinallyNoCatchAssignments.types index eafd10f3195dd..10dc2a7fd0f0c 100644 --- a/tests/baselines/reference/controlFlowFinallyNoCatchAssignments.types +++ b/tests/baselines/reference/controlFlowFinallyNoCatchAssignments.types @@ -50,11 +50,11 @@ try { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } @@ -63,11 +63,11 @@ console.log(a); // <- error here >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/controlFlowForCatchAndFinally.types b/tests/baselines/reference/controlFlowForCatchAndFinally.types index 76839c8e8eb2c..486e23c07891a 100644 --- a/tests/baselines/reference/controlFlowForCatchAndFinally.types +++ b/tests/baselines/reference/controlFlowForCatchAndFinally.types @@ -21,7 +21,7 @@ declare function test1(): Promise; declare function test2(obj: Browser): Promise; >test2 : (obj: Browser) => Promise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Browser > : ^^^^^^^ @@ -64,7 +64,7 @@ async function test(): Promise { >test2(browser) : Promise > : ^^^^^^^^^^^^^ >test2 : (obj: Browser) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >browser : Browser > : ^^^^^^^ diff --git a/tests/baselines/reference/controlFlowForIndexSignatures.types b/tests/baselines/reference/controlFlowForIndexSignatures.types index 2b2fae0f57d4e..e3e9cb0463f84 100644 --- a/tests/baselines/reference/controlFlowForIndexSignatures.types +++ b/tests/baselines/reference/controlFlowForIndexSignatures.types @@ -19,7 +19,7 @@ const boo: Foo = { bar: 'bar' }; function a(aboo1?: Foo) { >a : (aboo1?: Foo) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >aboo1 : Foo | undefined > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowForOfStatement.types b/tests/baselines/reference/controlFlowForOfStatement.types index d8dc93e67c833..0f1503f0c7761 100644 --- a/tests/baselines/reference/controlFlowForOfStatement.types +++ b/tests/baselines/reference/controlFlowForOfStatement.types @@ -35,11 +35,11 @@ function a() { >x.toExponential() : string > : ^^^^^^ >x.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } x; // string | boolean >x : string | true diff --git a/tests/baselines/reference/controlFlowForStatement.types b/tests/baselines/reference/controlFlowForStatement.types index 0c507a88b6dc1..623ac047ccc7b 100644 --- a/tests/baselines/reference/controlFlowForStatement.types +++ b/tests/baselines/reference/controlFlowForStatement.types @@ -97,11 +97,11 @@ function c() { >x.toExponential() : string > : ^^^^^^ >x.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x = 5 : 5 > : ^ >x : string | number | boolean diff --git a/tests/baselines/reference/controlFlowGenericTypes.types b/tests/baselines/reference/controlFlowGenericTypes.types index 3e4072d648a61..4933eb390635b 100644 --- a/tests/baselines/reference/controlFlowGenericTypes.types +++ b/tests/baselines/reference/controlFlowGenericTypes.types @@ -3,7 +3,7 @@ === controlFlowGenericTypes.ts === function f1(x: T, y: { a: T }, z: [T]): string { >f1 : (x: T, y: { a: T; }, z: [T]) => string -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : { a: T; } @@ -96,7 +96,7 @@ function f1(x: T, y: { a: T }, z: [T]): string { function f2(x: Extract | null): string { >f2 : (x: Extract | null) => string -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Extract | null > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -133,25 +133,25 @@ interface Box { declare function isBox(x: any): x is Box; >isBox : (x: any) => x is Box -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ declare function isUndefined(x: unknown): x is undefined; >isUndefined : (x: unknown) => x is undefined -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ declare function unbox(x: Box): T; >unbox : (x: Box) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Box > : ^^^^^^ function g1 | undefined>(x: T) { >g1 : | undefined>(x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -159,7 +159,7 @@ function g1 | undefined>(x: T) { >isBox(x) : boolean > : ^^^^^^^ >isBox : (x: any) => x is Box -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x : Box | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -167,7 +167,7 @@ function g1 | undefined>(x: T) { >unbox(x) : T > : ^ >unbox : (x: Box) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : Box > : ^^^^^^ } @@ -175,7 +175,7 @@ function g1 | undefined>(x: T) { function g2 | undefined>(x: T) { >g2 : | undefined>(x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -185,7 +185,7 @@ function g2 | undefined>(x: T) { >isUndefined(x) : boolean > : ^^^^^^^ >isUndefined : (x: unknown) => x is undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : Box | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -193,7 +193,7 @@ function g2 | undefined>(x: T) { >unbox(x) : T > : ^ >unbox : (x: Box) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : Box > : ^^^^^^ } @@ -201,7 +201,7 @@ function g2 | undefined>(x: T) { function g3 | undefined>(x: T) { >g3 : | undefined>(x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -211,7 +211,7 @@ function g3 | undefined>(x: T) { >isBox(x) : boolean > : ^^^^^^^ >isBox : (x: any) => x is Box -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x : Box | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -219,7 +219,7 @@ function g3 | undefined>(x: T) { >unbox(x) : T > : ^ >unbox : (x: Box) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : undefined > : ^^^^^^^^^ } @@ -227,7 +227,7 @@ function g3 | undefined>(x: T) { function g4 | undefined>(x: T) { >g4 : | undefined>(x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -235,7 +235,7 @@ function g4 | undefined>(x: T) { >isUndefined(x) : boolean > : ^^^^^^^ >isUndefined : (x: unknown) => x is undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : Box | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -243,7 +243,7 @@ function g4 | undefined>(x: T) { >unbox(x) : unknown > : ^^^^^^^ >unbox : (x: Box) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : undefined > : ^^^^^^^^^ } @@ -252,14 +252,14 @@ function g4 | undefined>(x: T) { // Repro from #13995 declare function takeA(val: 'A'): void; ->takeA : (val: 'A') => void -> : ^^^^^^ ^^^^^ +>takeA : (val: "A") => void +> : ^ ^^ ^^^^^ >val : "A" > : ^^^ export function bounceAndTakeIfA(value: AB): AB { >bounceAndTakeIfA : (value: AB) => AB -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : AB > : ^^ @@ -275,7 +275,7 @@ export function bounceAndTakeIfA(value: AB): AB { >takeA(value) : void > : ^^^^ >takeA : (val: "A") => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >value : "A" > : ^^^ @@ -322,9 +322,9 @@ type MyUnion = AA | BB; const fn = (value: MyUnion) => { >fn : (value: MyUnion) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(value: MyUnion) => { value.foo; // Error if ('foo' in value) { value.foo; } if (value.tag === 'B') { value.foo; }} : (value: MyUnion) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : >value : MyUnion > : ^^^^^^^ @@ -376,9 +376,9 @@ const fn = (value: MyUnion) => { const fn2 = (value: T): MyUnion => { >fn2 : (value: T) => MyUnion -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(value: T): MyUnion => { value.foo; // Error if ('foo' in value) { value.foo; } if (value.tag === 'B') { value.foo; }} : (value: T) => MyUnion -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : >value : T > : ^ @@ -462,7 +462,7 @@ type Union = A1 | B1 function notWorking(object: T) { >notWorking : (object: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >object : T > : ^ @@ -498,7 +498,7 @@ interface A { function get(key: K, obj: A): number { >get : (key: K, obj: A) => number -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >obj : A @@ -538,13 +538,13 @@ class EventEmitter { off(...args: [K, number] | [unknown, string]):void {} >off : (...args: [K, number] | [unknown, string]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : [K, number] | [unknown, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function once>(emittingObject: T, eventName: keyof ET): void { >once : >(emittingObject: T, eventName: keyof ET) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >emittingObject : T > : ^ >eventName : keyof ET @@ -554,11 +554,11 @@ function once>(emittingObject: T, eventName: keyo >emittingObject.off(eventName, 0) : void > : ^^^^ >emittingObject.off : (...args: [unknown, string] | [K, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >emittingObject : T > : ^ >off : (...args: [unknown, string] | [K, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >eventName : keyof ET > : ^^^^^^^^ >0 : 0 @@ -568,11 +568,11 @@ function once>(emittingObject: T, eventName: keyo >emittingObject.off(eventName as typeof eventName, 0) : void > : ^^^^ >emittingObject.off : (...args: [unknown, string] | [K, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >emittingObject : T > : ^ >off : (...args: [unknown, string] | [K, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >eventName as typeof eventName : keyof ET > : ^^^^^^^^ >eventName : keyof ET @@ -589,7 +589,7 @@ function once>(emittingObject: T, eventName: keyo function fx1(obj: T, key: K) { >fx1 : (obj: T, key: K) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -622,7 +622,7 @@ function fx1(obj: T, key: K) { function fx2, K extends keyof T>(obj: T, key: K) { >fx2 : , K extends keyof T>(obj: T, key: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -655,7 +655,7 @@ function fx2, K extends keyof T>(obj: T, key: function fx3 | undefined, K extends keyof T>(obj: T, key: K) { >fx3 : | undefined, K extends keyof T>(obj: T, key: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -762,7 +762,7 @@ class TableBaseEnum< function f10(x: T, y: Partial) { >f10 : (x: T, y: Partial) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >x : T @@ -789,13 +789,13 @@ class SqlTable { protected validateRow(_row: Partial>): void { >validateRow : (_row: Partial>) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_row : Partial> > : ^^^^^^^^^^^^^^^^^^^^^^^^ } public insertRow(row: SqlInsertSet) { >insertRow : (row: SqlInsertSet) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >row : SqlInsertSet > : ^^^^^^^^^^^^^^^ @@ -803,11 +803,11 @@ class SqlTable { >this.validateRow(row) : void > : ^^^^ >this.validateRow : (_row: Partial>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >validateRow : (_row: Partial>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >row : SqlInsertSet > : ^^^^^^^^^^^^^^^ } @@ -841,7 +841,7 @@ type Control = Button | Checkbox; function update(control : T | undefined, key: K, value: T[K]): void { >update : (control: T | undefined, key: K, value: T[K]) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >control : T | undefined > : ^^^^^^^^^^^^^ >key : K @@ -885,7 +885,7 @@ type Column = (keyof T extends never ? { id?: number | string } : { id: T }) function getColumnProperty(column: Column, key: keyof Column) { >getColumnProperty : (column: Column, key: keyof Column) => Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] -> : ^ ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >column : Column > : ^^^^^^^^^ >key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) diff --git a/tests/baselines/reference/controlFlowIIFE.types b/tests/baselines/reference/controlFlowIIFE.types index dbef0b4ac4955..d15212a9eea5f 100644 --- a/tests/baselines/reference/controlFlowIIFE.types +++ b/tests/baselines/reference/controlFlowIIFE.types @@ -123,9 +123,9 @@ function f3() { >(z => x.length + y + z)(y = 1) : number > : ^^^^^^ >(z => x.length + y + z) : (z: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >z => x.length + y + z : (z: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >x.length + y + z : number @@ -224,12 +224,12 @@ if (!test) { test.slice(1); // No error >test.slice(1) : string > : ^^^^^^ ->test.slice : (start?: number | undefined, end?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>test.slice : (start?: number, end?: number) => string +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >test : string > : ^^^^^^ ->slice : (start?: number | undefined, end?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => string +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/controlFlowIfStatement.types b/tests/baselines/reference/controlFlowIfStatement.types index 059a5b2d96842..6be9fab7f96a7 100644 --- a/tests/baselines/reference/controlFlowIfStatement.types +++ b/tests/baselines/reference/controlFlowIfStatement.types @@ -134,7 +134,7 @@ function b() { } function c(data: string | T): T { >c : (data: string | T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >data : string | T > : ^^^^^^^^^^ @@ -151,11 +151,11 @@ function c(data: string | T): T { return JSON.parse(data); >JSON.parse(data) : any >JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >JSON : JSON > : ^^^^ >parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >data : string | (T & string) > : ^^^^^^^^^^^^^^^^^^^^^ } @@ -167,7 +167,7 @@ function c(data: string | T): T { } function d(data: string | T): never { >d : (data: string | T) => never -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >data : string | T > : ^^^^^^^^^^ @@ -203,7 +203,7 @@ interface I { } function e(x: I<"A" | "B">) { >e : (x: I<"A" | "B">) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : I<"A" | "B"> > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowInOperator.types b/tests/baselines/reference/controlFlowInOperator.types index 54bb9f8163dcc..fb9c7f67b404c 100644 --- a/tests/baselines/reference/controlFlowInOperator.types +++ b/tests/baselines/reference/controlFlowInOperator.types @@ -111,7 +111,7 @@ if (d in c) { function uniqueID_54790( >uniqueID_54790 : (id: string | undefined, seenIDs: { [key: string]: string; }) => string -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ id: string | undefined, >id : string @@ -214,7 +214,7 @@ function uniqueID_54790( function uniqueID_54790_2(id: string | number, seenIDs: object) { >uniqueID_54790_2 : (id: string | number, seenIDs: object) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >id : string | number > : ^^^^^^^^^^^^^^^ >seenIDs : object @@ -265,7 +265,7 @@ function uniqueID_54790_2(id: string | number, seenIDs: object) { function uniqueID_54790_3(id: string | number, seenIDs: object) { >uniqueID_54790_3 : (id: string | number, seenIDs: object) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >id : string | number > : ^^^^^^^^^^^^^^^ >seenIDs : object diff --git a/tests/baselines/reference/controlFlowInstanceOfGuardPrimitives.types b/tests/baselines/reference/controlFlowInstanceOfGuardPrimitives.types index 226f9fa7a4bad..35f11aa26d82a 100644 --- a/tests/baselines/reference/controlFlowInstanceOfGuardPrimitives.types +++ b/tests/baselines/reference/controlFlowInstanceOfGuardPrimitives.types @@ -3,7 +3,7 @@ === controlFlowInstanceOfGuardPrimitives.ts === function distinguish(thing: string | number | Date) { >distinguish : (thing: string | number | Date) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >thing : string | number | Date > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -19,11 +19,11 @@ function distinguish(thing: string | number | Date) { >console.log("Aha!! It's a Date in " + thing.getFullYear()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Aha!! It's a Date in " + thing.getFullYear() : string > : ^^^^^^ >"Aha!! It's a Date in " : "Aha!! It's a Date in " @@ -51,11 +51,11 @@ function distinguish(thing: string | number | Date) { >console.log("Aha!! It's a string of length " + thing.length) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Aha!! It's a string of length " + thing.length : string > : ^^^^^^ >"Aha!! It's a string of length " : "Aha!! It's a string of length " @@ -72,11 +72,11 @@ function distinguish(thing: string | number | Date) { >console.log("Aha!! It's the number " + thing.toPrecision(3)) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Aha!! It's the number " + thing.toPrecision(3) : string > : ^^^^^^ >"Aha!! It's the number " : "Aha!! It's the number " @@ -84,11 +84,11 @@ function distinguish(thing: string | number | Date) { >thing.toPrecision(3) : string > : ^^^^^^ >thing.toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >thing : number > : ^^^^^^ >toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >3 : 3 > : ^ } @@ -98,7 +98,7 @@ distinguish(new Date()); >distinguish(new Date()) : void > : ^^^^ >distinguish : (thing: string | number | Date) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new Date() : Date > : ^^^^ >Date : DateConstructor @@ -108,7 +108,7 @@ distinguish("beef"); >distinguish("beef") : void > : ^^^^ >distinguish : (thing: string | number | Date) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"beef" : "beef" > : ^^^^^^ @@ -116,7 +116,7 @@ distinguish(3.14159265); >distinguish(3.14159265) : void > : ^^^^ >distinguish : (thing: string | number | Date) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >3.14159265 : 3.14159265 > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowInstanceof.types b/tests/baselines/reference/controlFlowInstanceof.types index 2159f5388853d..848a6379e58d0 100644 --- a/tests/baselines/reference/controlFlowInstanceof.types +++ b/tests/baselines/reference/controlFlowInstanceof.types @@ -5,7 +5,7 @@ function f1(s: Set | Set) { >f1 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -43,18 +43,18 @@ function f1(s: Set | Set) { >s.add(42) : Set > : ^^^^^^^^^^^ >s.add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >s : Set > : ^^^^^^^^^^^ >add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ } function f2(s: Set | Set) { >f2 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -92,18 +92,18 @@ function f2(s: Set | Set) { >s.add(42) : Set > : ^^^^^^^^^^^ >s.add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >s : Set > : ^^^^^^^^^^^ >add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ } function f3(s: Set | Set) { >f3 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -132,7 +132,7 @@ function f3(s: Set | Set) { function f4(s: Set | Set) { >f4 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -195,7 +195,7 @@ class C extends A { c: string } function foo(x: A | undefined) { >foo : (x: A | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | undefined > : ^^^^^^^^^^^^^ @@ -326,7 +326,7 @@ class Y { function goo(x: X) { >goo : (x: X) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : X > : ^ diff --git a/tests/baselines/reference/controlFlowInstanceofExtendsFunction.types b/tests/baselines/reference/controlFlowInstanceofExtendsFunction.types index defe7d5c8c5c1..9fb770b53c71d 100644 --- a/tests/baselines/reference/controlFlowInstanceofExtendsFunction.types +++ b/tests/baselines/reference/controlFlowInstanceofExtendsFunction.types @@ -63,11 +63,11 @@ console.log(X.now()) // works as expected >console.log(X.now()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >X.now() : {} > : ^^ >X.now : () => {} @@ -81,11 +81,11 @@ console.log(Y.now()) // works as expected >console.log(Y.now()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Y.now() : string > : ^^^^^^ >Y.now : () => string diff --git a/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types b/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types index 864626529c0b1..c4e34facc4c08 100644 --- a/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types +++ b/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types @@ -4,7 +4,7 @@ interface PromiseConstructor { [Symbol.hasInstance](value: any): value is Promise; >[Symbol.hasInstance] : (value: any) => value is Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -17,7 +17,7 @@ interface PromiseConstructor { interface SetConstructor { [Symbol.hasInstance](value: any): value is Set; >[Symbol.hasInstance] : (value: any) => value is Set -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -29,7 +29,7 @@ interface SetConstructor { function f1(s: Set | Set) { >f1 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -67,18 +67,18 @@ function f1(s: Set | Set) { >s.add(42) : Set > : ^^^^^^^^^^^ >s.add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >s : Set > : ^^^^^^^^^^^ >add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ } function f2(s: Set | Set) { >f2 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -116,18 +116,18 @@ function f2(s: Set | Set) { >s.add(42) : Set > : ^^^^^^^^^^^ >s.add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >s : Set > : ^^^^^^^^^^^ >add : (value: number) => Set -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ } function f3(s: Set | Set) { >f3 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -156,7 +156,7 @@ function f3(s: Set | Set) { function f4(s: Set | Set) { >f4 : (s: Set | Set) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : Set | Set > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -205,7 +205,7 @@ class A { static [Symbol.hasInstance](this: T, value: unknown): value is ( >[Symbol.hasInstance] : (this: T, value: unknown) => value is (T extends (abstract new (...args: any) => infer U) ? U : never) -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -225,9 +225,9 @@ class A { return Function.prototype[Symbol.hasInstance].call(this, value); >Function.prototype[Symbol.hasInstance].call(this, value) : any >Function.prototype[Symbol.hasInstance].call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >Function.prototype[Symbol.hasInstance] : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >Function.prototype : Function > : ^^^^^^^^ >Function : FunctionConstructor @@ -241,7 +241,7 @@ class A { >hasInstance : unique symbol > : ^^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >this : T > : ^ >value : unknown @@ -266,7 +266,7 @@ class C extends A { c: string } function foo(x: A | undefined) { >foo : (x: A | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | undefined > : ^^^^^^^^^^^^^ @@ -397,7 +397,7 @@ class Y { function goo(x: X) { >goo : (x: X) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : X > : ^ diff --git a/tests/baselines/reference/controlFlowIterationErrors.types b/tests/baselines/reference/controlFlowIterationErrors.types index 1a190954fd535..b6ceced9af7bd 100644 --- a/tests/baselines/reference/controlFlowIterationErrors.types +++ b/tests/baselines/reference/controlFlowIterationErrors.types @@ -7,7 +7,7 @@ let cond: boolean; function len(s: string) { >len : (s: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -48,7 +48,7 @@ function f1() { >len(x) : number > : ^^^^^^ >len : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -93,7 +93,7 @@ function f2() { >len(x) : number > : ^^^^^^ >len : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -104,13 +104,13 @@ function f2() { declare function foo(x: string): number; >foo : { (x: string): number; (x: number): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ declare function foo(x: number): string; >foo : { (x: string): number; (x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ @@ -142,7 +142,7 @@ function g1() { >foo(x) : never > : ^^^^^ >foo : { (x: string): number; (x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -187,7 +187,7 @@ function g2() { >foo(x) : never > : ^^^^^ >foo : { (x: string): number; (x: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -198,7 +198,7 @@ function g2() { function asNumber(x: string | number): number { >asNumber : (x: string | number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -279,7 +279,7 @@ function h2() { >asNumber(x) : number > : ^^^^^^ >asNumber : (x: string | number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >1 : 1 @@ -317,7 +317,7 @@ function h3() { >asNumber(x) : number > : ^^^^^^ >asNumber : (x: string | number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -369,7 +369,7 @@ function h4() { >asNumber(x) : number > : ^^^^^^ >asNumber : (x: string | number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowIterationErrorsAsync.types b/tests/baselines/reference/controlFlowIterationErrorsAsync.types index b3d2e926b85ae..5bf69affba071 100644 --- a/tests/baselines/reference/controlFlowIterationErrorsAsync.types +++ b/tests/baselines/reference/controlFlowIterationErrorsAsync.types @@ -7,7 +7,7 @@ let cond: boolean; async function len(s: string) { >len : (s: string) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -50,7 +50,7 @@ async function f1() { >len(x) : Promise > : ^^^^^^^^^^^^^^^ >len : (s: string) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -97,7 +97,7 @@ async function f2() { >len(x) : Promise > : ^^^^^^^^^^^^^^^ >len : (s: string) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -108,13 +108,13 @@ async function f2() { declare function foo(x: string): Promise; >foo : { (x: string): Promise; (x: number): Promise; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ declare function foo(x: number): Promise; >foo : { (x: string): Promise; (x: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ @@ -148,7 +148,7 @@ async function g1() { >foo(x) : Promise & Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : { (x: string): Promise; (x: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -195,7 +195,7 @@ async function g2() { >foo(x) : Promise & Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : { (x: string): Promise; (x: number): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -206,7 +206,7 @@ async function g2() { async function asNumber(x: string | number): Promise { >asNumber : (x: string | number) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -289,7 +289,7 @@ async function h2() { >asNumber(x) : Promise > : ^^^^^^^^^^^^^^^ >asNumber : (x: string | number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >1 : 1 @@ -329,7 +329,7 @@ async function h3() { >asNumber(x) : Promise > : ^^^^^^^^^^^^^^^ >asNumber : (x: string | number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -383,7 +383,7 @@ async function h4() { >asNumber(x) : Promise > : ^^^^^^^^^^^^^^^ >asNumber : (x: string | number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -409,7 +409,7 @@ async function h4() { async function get_things(_: number | undefined) { >get_things : (_: number | undefined) => Promise -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >_ : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -454,7 +454,7 @@ async function foobar() { >get_things(before) : Promise > : ^^^^^^^^^^^^^^^^^ >get_things : (_: number | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >before : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -476,7 +476,7 @@ async function foobar() { declare function foox(x: string | undefined): Promise >foox : (x: string | undefined) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -499,7 +499,7 @@ async () => { >foox(bar) : Promise > : ^^^^^^^^^^^^^^^ >foox : (x: string | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >bar : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -520,7 +520,7 @@ async () => { declare function myQuery(input: { lastId: number | undefined }): Promise<{ entities: number[] }>; >myQuery : (input: { lastId: number | undefined; }) => Promise<{ entities: number[]; }> -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : { lastId: number | undefined; } > : ^^^^^^^^^^ ^^^ >lastId : number | undefined @@ -550,7 +550,7 @@ async function myFunc(): Promise { >myQuery({ lastId, }) : Promise<{ entities: number[]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myQuery : (input: { lastId: number | undefined; }) => Promise<{ entities: number[]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ lastId, } : { lastId: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowJavascript.types b/tests/baselines/reference/controlFlowJavascript.types index f4408c17367fe..65ec05d549c21 100644 --- a/tests/baselines/reference/controlFlowJavascript.types +++ b/tests/baselines/reference/controlFlowJavascript.types @@ -319,7 +319,7 @@ function f10() { >f : () => void > : ^^^^^^^^^^ >() => { const z = x; // any } : () => void -> : ^^^^^^^^^^ +> : const z = x; // any >z : any diff --git a/tests/baselines/reference/controlFlowLoopAnalysis.types b/tests/baselines/reference/controlFlowLoopAnalysis.types index 62dd6d0c058fe..b6e3526fed1f3 100644 --- a/tests/baselines/reference/controlFlowLoopAnalysis.types +++ b/tests/baselines/reference/controlFlowLoopAnalysis.types @@ -9,7 +9,7 @@ let cond: boolean; function foo(x: number): number { return 1; } >foo : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -43,7 +43,7 @@ function test1() { >foo(x) : number > : ^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ } @@ -92,7 +92,7 @@ function test2() { >foo(x) : number > : ^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ } @@ -103,7 +103,7 @@ function test2() { function mapUntilCant( >mapUntilCant : (values: a[], canTake: (value: a, index: number) => boolean, mapping: (value: a, index: number) => b) => b[] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ values: a[], >values : a[] @@ -111,7 +111,7 @@ function mapUntilCant( canTake: (value: a, index: number) => boolean, >canTake : (value: a, index: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >value : a > : ^ >index : number @@ -119,7 +119,7 @@ function mapUntilCant( mapping: (value: a, index: number) => b >mapping : (value: a, index: number) => b -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >value : a > : ^ >index : number @@ -170,7 +170,7 @@ function mapUntilCant( >canTake(value, index) : boolean > : ^^^^^^^ >canTake : (value: a, index: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >value : a > : ^ >index : number @@ -180,15 +180,15 @@ function mapUntilCant( >result.push(mapping(value, index)) : number > : ^^^^^^ >result.push : (...items: b[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >result : b[] > : ^^^ >push : (...items: b[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >mapping(value, index) : b > : ^ >mapping : (value: a, index: number) => b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >value : a > : ^ >index : number diff --git a/tests/baselines/reference/controlFlowManyCallExpressionStatementsPerf.types b/tests/baselines/reference/controlFlowManyCallExpressionStatementsPerf.types index a37b716bc2d07..30cab592d76eb 100644 --- a/tests/baselines/reference/controlFlowManyCallExpressionStatementsPerf.types +++ b/tests/baselines/reference/controlFlowManyCallExpressionStatementsPerf.types @@ -3,7 +3,7 @@ === controlFlowManyCallExpressionStatementsPerf.ts === function test(x: boolean): boolean { return x; } >test : (x: boolean) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : boolean > : ^^^^^^^ >x : boolean @@ -23,7 +23,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -35,7 +35,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -47,7 +47,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -59,7 +59,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -71,7 +71,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -83,7 +83,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -95,7 +95,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -107,7 +107,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -119,7 +119,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -131,7 +131,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -143,7 +143,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -155,7 +155,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -167,7 +167,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -179,7 +179,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -191,7 +191,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -203,7 +203,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -215,7 +215,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -227,7 +227,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -239,7 +239,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -251,7 +251,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -263,7 +263,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -275,7 +275,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -287,7 +287,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -299,7 +299,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -311,7 +311,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -323,7 +323,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -335,7 +335,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -347,7 +347,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -359,7 +359,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -371,7 +371,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -383,7 +383,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -395,7 +395,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -407,7 +407,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -419,7 +419,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -431,7 +431,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -443,7 +443,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -455,7 +455,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -467,7 +467,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -479,7 +479,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -491,7 +491,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -503,7 +503,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -515,7 +515,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -527,7 +527,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -539,7 +539,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -551,7 +551,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -563,7 +563,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -575,7 +575,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -587,7 +587,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -599,7 +599,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -611,7 +611,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -623,7 +623,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -635,7 +635,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -647,7 +647,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -659,7 +659,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -671,7 +671,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true @@ -683,7 +683,7 @@ if (state) { >test(state as any && state) : boolean > : ^^^^^^^ >test : (x: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >state as any && state : any >state as any : any >state : true diff --git a/tests/baselines/reference/controlFlowNoImplicitAny.types b/tests/baselines/reference/controlFlowNoImplicitAny.types index 415758476e9af..dbc429fa7b664 100644 --- a/tests/baselines/reference/controlFlowNoImplicitAny.types +++ b/tests/baselines/reference/controlFlowNoImplicitAny.types @@ -423,7 +423,7 @@ function f10() { >f : () => void > : ^^^^^^^^^^ >() => { const z = x; // any } : () => void -> : ^^^^^^^^^^ +> : const z = x; // any >z : any diff --git a/tests/baselines/reference/controlFlowNullTypeAndLiteral.types b/tests/baselines/reference/controlFlowNullTypeAndLiteral.types index d268e3cd48f28..35bf300245d7f 100644 --- a/tests/baselines/reference/controlFlowNullTypeAndLiteral.types +++ b/tests/baselines/reference/controlFlowNullTypeAndLiteral.types @@ -21,9 +21,9 @@ const objWithValMaybeNull: { val: number | null } = { val: 1 }; const addOne = function (num: number) { >addOne : (num: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (num: number) { return num + 1;} : (num: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : >num : number > : ^^^^^^ @@ -50,7 +50,7 @@ if (objWithValMaybeNull.val !== null) >addOne(objWithValMaybeNull.val) : number > : ^^^^^^ >addOne : (num: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >objWithValMaybeNull.val : number > : ^^^^^^ >objWithValMaybeNull : { val: number | null; } @@ -74,7 +74,7 @@ if (objWithValMaybeNull.val !== myNull) >addOne(objWithValMaybeNull.val) : number > : ^^^^^^ >addOne : (num: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >objWithValMaybeNull.val : number > : ^^^^^^ >objWithValMaybeNull : { val: number | null; } @@ -96,7 +96,7 @@ if (objWithValMaybeNull.val === null) >addOne(objWithValMaybeNull.val) : number > : ^^^^^^ >addOne : (num: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >objWithValMaybeNull.val : null > : ^^^^ >objWithValMaybeNull : { val: number | null; } @@ -120,7 +120,7 @@ if (objWithValMaybeNull.val === myNull) >addOne(objWithValMaybeNull.val) : number > : ^^^^^^ >addOne : (num: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >objWithValMaybeNull.val : null > : ^^^^ >objWithValMaybeNull : { val: number | null; } @@ -130,7 +130,7 @@ if (objWithValMaybeNull.val === myNull) function f(x: number | null) { >f : (x: number | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowNullishCoalesce.types b/tests/baselines/reference/controlFlowNullishCoalesce.types index ea799eb8fc5e9..462e9bc90ce68 100644 --- a/tests/baselines/reference/controlFlowNullishCoalesce.types +++ b/tests/baselines/reference/controlFlowNullishCoalesce.types @@ -23,12 +23,12 @@ o ?? (a = 1); a.toString(); >a.toString() : string > : ^^^^^^ ->a.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ // assignment flow declare const o: { x: number } | undefined; diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index deee1949cab39..84d52e79c491b 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -4,7 +4,7 @@ // assignments in shortcutting chain declare const o: undefined | { >o : { (...args: any[]): any; [key: string]: any; [key: number]: any; } | undefined -> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [key: string]: any; >key : string @@ -28,7 +28,7 @@ o?.[a = 1]; >o?.[a = 1] : any > : ^^^ >o : { (...args: any[]): any; [key: string]: any; [key: number]: any; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a = 1 : 1 > : ^ >a : number @@ -39,12 +39,12 @@ o?.[a = 1]; a.toString(); >a.toString() : string > : ^^^^^^ ->a.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ let b: number; >b : number @@ -56,7 +56,7 @@ o?.x[b = 1]; >o?.x : any > : ^^^ >o : { (...args: any[]): any; [key: string]: any; [key: number]: any; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >b = 1 : 1 @@ -69,12 +69,12 @@ o?.x[b = 1]; b.toString(); >b.toString() : string > : ^^^^^^ ->b.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >b : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ let c: number; >c : number @@ -84,7 +84,7 @@ o?.(c = 1) >o?.(c = 1) : any > : ^^^ >o : { (...args: any[]): any; [key: string]: any; [key: number]: any; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c = 1 : 1 > : ^ >c : number @@ -95,12 +95,12 @@ o?.(c = 1) c.toString(); >c.toString() : string > : ^^^^^^ ->c.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >c : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ let d: number; >d : number @@ -112,7 +112,7 @@ o?.x(d = 1); >o?.x : any > : ^^^ >o : { (...args: any[]): any; [key: string]: any; [key: number]: any; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >d = 1 : 1 @@ -125,17 +125,17 @@ o?.x(d = 1); d.toString(); >d.toString() : string > : ^^^^^^ ->d.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>d.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >d : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ // type predicates declare const f: undefined | ((x: any) => x is number); >f : ((x: any) => x is number) | undefined -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -147,7 +147,7 @@ if (f?.(x)) { >f?.(x) : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -157,13 +157,13 @@ if (f?.(x)) { f; // (x: any) => x is number >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ f(x); >f(x) : boolean > : ^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ } @@ -174,13 +174,13 @@ else { f; >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f(x); >f(x) : boolean > : ^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -190,21 +190,21 @@ x; f; >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f(x); >f(x) : boolean > : ^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ declare const o2: { f(x: any): x is number; } | undefined; >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ @@ -212,11 +212,11 @@ if (o2?.f(x)) { >o2?.f(x) : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >o2?.f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -226,29 +226,29 @@ if (o2?.f(x)) { o2.f; // (x: any) => x is number >o2.f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ o2?.f; >o2?.f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ o2?.f(x); >o2?.f(x) : boolean > : ^^^^^^^ >o2?.f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ } @@ -259,23 +259,23 @@ else { o2; >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o2?.f; >o2?.f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o2.f; >o2.f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ } x; >x : string | number @@ -283,23 +283,23 @@ x; o2; >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o2?.f; >o2?.f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((x: any) => x is number) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o2.f; >o2.f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o2 : { f(x: any): x is number; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (x: any) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ declare const o3: { x: 1, y: string } | { x: 2, y: number } | undefined; >o3 : { x: 1; y: string; } | { x: 2; y: number; } | undefined @@ -527,9 +527,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >w : boolean | undefined @@ -541,7 +541,7 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ o5.x.y; >o5.x.y : { z?: { w: boolean; } | undefined; } @@ -551,9 +551,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ o5.x.y.z; >o5.x.y.z : { w: boolean; } @@ -565,9 +565,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^^^^^^^^^^^ @@ -583,9 +583,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^^^^^^^^^^^ >w : true @@ -603,9 +603,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^^^^^^^^^^^ >w : true @@ -623,9 +623,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^^^^^^^^^^^ >w : true @@ -643,9 +643,9 @@ if (o5.x?.y.z?.w) { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^^^^^^^^^^^ >w : true @@ -658,7 +658,7 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ o5.x?.y; >o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined @@ -668,9 +668,9 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined @@ -682,9 +682,9 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -700,9 +700,9 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >w : boolean | undefined @@ -716,9 +716,9 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ o5.x.y.z.w; >o5.x.y.z.w : boolean @@ -732,9 +732,9 @@ else { >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >w : boolean @@ -746,7 +746,7 @@ o5.x; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ o5.x?.y; >o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined @@ -756,9 +756,9 @@ o5.x?.y; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined @@ -770,9 +770,9 @@ o5.x?.y.z; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -788,9 +788,9 @@ o5.x?.y.z?.w; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >w : boolean | undefined @@ -804,9 +804,9 @@ o5.x.y; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ o5.x.y.z.w; >o5.x.y.z.w : boolean @@ -820,9 +820,9 @@ o5.x.y.z.w; >o5 : { x?: { y: { z?: { w: boolean; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >y : { z?: { w: boolean; } | undefined; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >w : boolean @@ -910,19 +910,19 @@ o6.f; // asserts declare const isDefined: (value: T) => asserts value is NonNullable; >isDefined : (value: T) => asserts value is NonNullable -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ declare const isString: (value: unknown) => asserts value is string; >isString : (value: unknown) => asserts value is string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : unknown > : ^^^^^^^ declare const maybeIsString: undefined | ((value: unknown) => asserts value is string); >maybeIsString : ((value: unknown) => asserts value is string) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : unknown > : ^^^^^^^ @@ -932,7 +932,7 @@ declare const maybeNever: undefined | (() => never); function f01(x: unknown) { >f01 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -948,7 +948,7 @@ function f01(x: unknown) { >isString?.(x) : void > : ^^^^ >isString : (value: unknown) => asserts value is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -968,7 +968,7 @@ function f01(x: unknown) { >maybeIsString?.(x) : void | undefined > : ^^^^^^^^^^^^^^^^ >maybeIsString : ((value: unknown) => asserts value is string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -988,15 +988,15 @@ function f01(x: unknown) { >isDefined(maybeIsString) : void > : ^^^^ >isDefined : (value: T) => asserts value is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >maybeIsString : ((value: unknown) => asserts value is string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ maybeIsString?.(x); >maybeIsString?.(x) : void > : ^^^^ >maybeIsString : (value: unknown) => asserts value is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -1036,7 +1036,7 @@ type Thing = { foo: string | number, bar(): number, baz: object }; function f10(o: Thing | undefined, value: number) { >f10 : (o: Thing | undefined, value: number) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ >value : number @@ -1170,7 +1170,7 @@ function f10(o: Thing | undefined, value: number) { function f11(o: Thing | null, value: number) { >f11 : (o: Thing | null, value: number) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | null > : ^^^^^^^^^^^^ >value : number @@ -1304,7 +1304,7 @@ function f11(o: Thing | null, value: number) { function f12(o: Thing | undefined, value: number | undefined) { >f12 : (o: Thing | undefined, value: number | undefined) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ >value : number | undefined @@ -1438,7 +1438,7 @@ function f12(o: Thing | undefined, value: number | undefined) { function f12a(o: Thing | undefined, value: number | null) { >f12a : (o: Thing | undefined, value: number | null) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ >value : number | null @@ -1572,7 +1572,7 @@ function f12a(o: Thing | undefined, value: number | null) { function f13(o: Thing | undefined) { >f13 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -1704,7 +1704,7 @@ function f13(o: Thing | undefined) { function f13a(o: Thing | undefined) { >f13a : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -1824,7 +1824,7 @@ function f13a(o: Thing | undefined) { function f14(o: Thing | null) { >f14 : (o: Thing | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | null > : ^^^^^^^^^^^^ @@ -1894,7 +1894,7 @@ function f14(o: Thing | null) { function f15(o: Thing | undefined, value: number) { >f15 : (o: Thing | undefined, value: number) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ >value : number @@ -2020,7 +2020,7 @@ function f15(o: Thing | undefined, value: number) { function f15a(o: Thing | undefined, value: unknown) { >f15a : (o: Thing | undefined, value: unknown) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ >value : unknown @@ -2146,7 +2146,7 @@ function f15a(o: Thing | undefined, value: unknown) { function f16(o: Thing | undefined) { >f16 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2270,7 +2270,7 @@ function f16(o: Thing | undefined) { function f20(o: Thing | undefined) { >f20 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2366,7 +2366,7 @@ function f20(o: Thing | undefined) { function f21(o: Thing | null) { >f21 : (o: Thing | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | null > : ^^^^^^^^^^^^ @@ -2462,7 +2462,7 @@ function f21(o: Thing | null) { function f22(o: Thing | undefined) { >f22 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2594,7 +2594,7 @@ function f22(o: Thing | undefined) { function f23(o: Thing | undefined) { >f23 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2726,19 +2726,19 @@ function f23(o: Thing | undefined) { declare function assert(x: unknown): asserts x; >assert : (x: unknown) => asserts x -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ declare function assertNonNull(x: T): asserts x is NonNullable; >assertNonNull : (x: T) => asserts x is NonNullable -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ function f30(o: Thing | undefined) { >f30 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2754,7 +2754,7 @@ function f30(o: Thing | undefined) { >assert(o?.foo) : void > : ^^^^ >assert : (x: unknown) => asserts x -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >o?.foo : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : Thing | undefined @@ -2782,7 +2782,7 @@ function f30(o: Thing | undefined) { >assert(o?.foo === 42) : void > : ^^^^ >assert : (x: unknown) => asserts x -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >o?.foo === 42 : boolean > : ^^^^^^^ >o?.foo : string | number | undefined @@ -2814,7 +2814,7 @@ function f30(o: Thing | undefined) { >assert(typeof o?.foo === "number") : void > : ^^^^ >assert : (x: unknown) => asserts x -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >typeof o?.foo === "number" : boolean > : ^^^^^^^ >typeof o?.foo : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -2848,7 +2848,7 @@ function f30(o: Thing | undefined) { >assertNonNull(o?.foo) : void > : ^^^^ >assertNonNull : (x: T) => asserts x is NonNullable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o?.foo : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : Thing | undefined @@ -2868,7 +2868,7 @@ function f30(o: Thing | undefined) { function f40(o: Thing | undefined) { >f40 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -2934,7 +2934,7 @@ function f40(o: Thing | undefined) { function f41(o: Thing | undefined) { >f41 : (o: Thing | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : Thing | undefined > : ^^^^^^^^^^^^^^^^^ @@ -3022,7 +3022,7 @@ type Shape = function getArea(shape?: Shape) { >getArea : (shape?: Shape) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >shape : Shape | undefined > : ^^^^^^^^^^^^^^^^^ @@ -3111,7 +3111,7 @@ type Feature = { function extractCoordinates(f: Feature): number[] { >extractCoordinates : (f: Feature) => number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >f : Feature > : ^^^^^^^ @@ -3162,7 +3162,7 @@ let lastSomeProperty: unknown | undefined; function someFunction(someOptionalObject: SomeObject | undefined): void { >someFunction : (someOptionalObject: SomeObject | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >someOptionalObject : SomeObject | undefined > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -3182,11 +3182,11 @@ function someFunction(someOptionalObject: SomeObject | undefined): void { >console.log(someOptionalObject) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >someOptionalObject : SomeObject | undefined > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -3194,11 +3194,11 @@ function someFunction(someOptionalObject: SomeObject | undefined): void { >console.log(someOptionalObject.someProperty) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >someOptionalObject.someProperty : unknown > : ^^^^^^^ >someOptionalObject : SomeObject | undefined @@ -3238,7 +3238,7 @@ someFunction(someObject); >someFunction(someObject) : void > : ^^^^ >someFunction : (someOptionalObject: SomeObject | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >someObject : SomeObject > : ^^^^^^^^^^ @@ -3246,7 +3246,7 @@ someFunction(undefined); >someFunction(undefined) : void > : ^^^^ >someFunction : (someOptionalObject: SomeObject | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -3308,11 +3308,11 @@ while (arr[i]?.tag === "left") { >console.log("I should ALSO be reachable") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"I should ALSO be reachable" : "I should ALSO be reachable" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -3338,7 +3338,7 @@ type Test5 = { function f50(obj: Test5) { >f50 : (obj: Test5) => Test5 | null -> : ^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >obj : Test5 > : ^^^^^ diff --git a/tests/baselines/reference/controlFlowOptionalChain2.types b/tests/baselines/reference/controlFlowOptionalChain2.types index 945f0b804d42b..269dfd4c6d686 100644 --- a/tests/baselines/reference/controlFlowOptionalChain2.types +++ b/tests/baselines/reference/controlFlowOptionalChain2.types @@ -25,7 +25,7 @@ type B = { function funcTwo(arg: A | B | undefined) { >funcTwo : (arg: A | B | undefined) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : A | B | undefined > : ^^^^^^^^^^^^^^^^^ @@ -63,7 +63,7 @@ function funcTwo(arg: A | B | undefined) { function funcThree(arg: A | B | null) { >funcThree : (arg: A | B | null) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : A | B | null > : ^^^^^^^^^^^^ @@ -125,7 +125,7 @@ type X = { kind: 'X', x: 'x' } function f1(x: X | U | undefined) { >f1 : (x: X | U | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : U | X | undefined > : ^^^^^^^^^^^^^^^^^ @@ -154,7 +154,7 @@ function f1(x: X | U | undefined) { function f2(x: X | N | undefined) { >f2 : (x: X | N | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : N | X | undefined > : ^^^^^^^^^^^^^^^^^ @@ -183,7 +183,7 @@ function f2(x: X | N | undefined) { function f3(x: X | U | null) { >f3 : (x: X | U | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : U | X | null > : ^^^^^^^^^^^^ @@ -212,7 +212,7 @@ function f3(x: X | U | null) { function f4(x: X | N | null) { >f4 : (x: X | N | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : N | X | null > : ^^^^^^^^^^^^ @@ -241,7 +241,7 @@ function f4(x: X | N | null) { function f5(x: X | U | undefined) { >f5 : (x: X | U | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : U | X | undefined > : ^^^^^^^^^^^^^^^^^ @@ -268,7 +268,7 @@ function f5(x: X | U | undefined) { function f6(x: X | N | undefined) { >f6 : (x: X | N | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : N | X | undefined > : ^^^^^^^^^^^^^^^^^ @@ -295,7 +295,7 @@ function f6(x: X | N | undefined) { function f7(x: X | U | null) { >f7 : (x: X | U | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : U | X | null > : ^^^^^^^^^^^^ @@ -322,7 +322,7 @@ function f7(x: X | U | null) { function f8(x: X | N | null) { >f8 : (x: X | N | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : N | X | null > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/controlFlowOptionalChain3.types b/tests/baselines/reference/controlFlowOptionalChain3.types index 75518b0b30059..21fe163829072 100644 --- a/tests/baselines/reference/controlFlowOptionalChain3.types +++ b/tests/baselines/reference/controlFlowOptionalChain3.types @@ -23,7 +23,7 @@ interface Foo { function test1(foo: Foo | undefined) { >test1 : (foo: Foo | undefined) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo | undefined > : ^^^^^^^^^^^^^^^ @@ -50,7 +50,7 @@ function test1(foo: Foo | undefined) { function test2(foo: Foo | undefined) { >test2 : (foo: Foo | undefined) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo | undefined > : ^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ function test2(foo: Foo | undefined) { function Test3({ foo }: { foo: Foo | undefined }) { >Test3 : ({ foo }: { foo: Foo | undefined; }) => JSX.Element -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : Foo | undefined > : ^^^^^^^^^^^^^^^ >foo : Foo | undefined @@ -134,7 +134,7 @@ function Test3({ foo }: { foo: Foo | undefined }) { function test4(options?: { a?: boolean; b?: boolean }) { >test4 : (options?: { a?: boolean; b?: boolean; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >options : { a?: boolean; b?: boolean; } | undefined > : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ >a : boolean | undefined diff --git a/tests/baselines/reference/controlFlowOuterVariable.types b/tests/baselines/reference/controlFlowOuterVariable.types index 566816d5e8fcd..20186f2eebd1a 100644 --- a/tests/baselines/reference/controlFlowOuterVariable.types +++ b/tests/baselines/reference/controlFlowOuterVariable.types @@ -5,9 +5,9 @@ const CONFIG = { >CONFIG : { foo: string; setFoo: (foo: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ foo: '', setFoo: function(foo: string) { CONFIG.foo = foo; }} : { foo: string; setFoo: (foo: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ foo: '', >foo : string @@ -17,9 +17,9 @@ const CONFIG = { setFoo: function(foo: string) { >setFoo : (foo: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(foo: string) { CONFIG.foo = foo; } : (foo: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : >foo : string > : ^^^^^^ @@ -29,7 +29,7 @@ const CONFIG = { >CONFIG.foo : string > : ^^^^^^ >CONFIG : { foo: string; setFoo: (foo: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo : string > : ^^^^^^ >foo : string @@ -39,9 +39,9 @@ const CONFIG = { const helper = function(t: T[]) { >helper : (t: T[]) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >function(t: T[]) { helper(t.slice(1));} : (t: T[]) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : >t : T[] > : ^^^ @@ -49,15 +49,15 @@ const helper = function(t: T[]) { >helper(t.slice(1)) : void > : ^^^^ >helper : (t: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t.slice(1) : T[] > : ^^^ ->t.slice : (start?: number | undefined, end?: number | undefined) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>t.slice : (start?: number, end?: number) => T[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >t : T[] > : ^^^ ->slice : (start?: number | undefined, end?: number | undefined) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => T[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/controlFlowParameter.types b/tests/baselines/reference/controlFlowParameter.types index 17df05e8135a2..c6e11af5fdb26 100644 --- a/tests/baselines/reference/controlFlowParameter.types +++ b/tests/baselines/reference/controlFlowParameter.types @@ -3,7 +3,7 @@ === controlFlowParameter.ts === function f1( >f1 : (required?: unknown) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ required: unknown = (() => { >required : unknown @@ -29,18 +29,18 @@ function f1( >console.log("ok") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"ok" : "ok" > : ^^^^ } function f2( >f2 : (a: number | string | undefined, required?: unknown) => void -> : ^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ a: number | string | undefined, >a : string | number | undefined @@ -73,7 +73,7 @@ function f2( function f3( >f3 : (a?: number | string | undefined, required?: unknown) => void -> : ^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ a: number | string | undefined = 1, >a : string | number | undefined @@ -108,7 +108,7 @@ function f3( function f4( >f4 : (a?: number | string | undefined, { [(a = "")]: b }?: any) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ a: number | string | undefined = 1, >a : string | number | undefined diff --git a/tests/baselines/reference/controlFlowPropertyDeclarations.types b/tests/baselines/reference/controlFlowPropertyDeclarations.types index 3fbf60e9b44f4..c0dc36a5c1509 100644 --- a/tests/baselines/reference/controlFlowPropertyDeclarations.types +++ b/tests/baselines/reference/controlFlowPropertyDeclarations.types @@ -75,7 +75,7 @@ for (var propname in HTMLDOMPropertyConfig.Properties) { */ function repeatString(string, times) { >repeatString : (string: any, times: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >string : any >times : any @@ -150,7 +150,7 @@ function repeatString(string, times) { */ function endsWith(haystack, needle) { >endsWith : (haystack: any, needle: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >haystack : any >needle : any @@ -183,7 +183,7 @@ function endsWith(haystack, needle) { */ function trimEnd(haystack, needle) { >trimEnd : (haystack: any, needle: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >haystack : any >needle : any @@ -192,7 +192,7 @@ function trimEnd(haystack, needle) { >endsWith(haystack, needle) : boolean > : ^^^^^^^ >endsWith : (haystack: any, needle: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >haystack : any >needle : any @@ -222,7 +222,7 @@ function trimEnd(haystack, needle) { */ function hyphenToCamelCase(string) { >hyphenToCamelCase : (string: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >string : any return string.replace(/-(.)/g, function(match, chr) { @@ -235,7 +235,7 @@ function hyphenToCamelCase(string) { >/-(.)/g : RegExp > : ^^^^^^ >function(match, chr) { return chr.toUpperCase(); } : (match: any, chr: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >match : any >chr : any @@ -255,7 +255,7 @@ function hyphenToCamelCase(string) { */ function isEmpty(string) { >isEmpty : (string: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >string : any return !/[^\s]/.test(string); @@ -264,11 +264,11 @@ function isEmpty(string) { >/[^\s]/.test(string) : boolean > : ^^^^^^^ >/[^\s]/.test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >/[^\s]/ : RegExp > : ^^^^^^ >test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >string : any } @@ -281,18 +281,18 @@ function isEmpty(string) { */ function isConvertiblePixelValue(value) { >isConvertiblePixelValue : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : any return /^\d+px$/.test(value); >/^\d+px$/.test(value) : boolean > : ^^^^^^^ >/^\d+px$/.test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >/^\d+px$/ : RegExp > : ^^^^^^ >test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >value : any } @@ -320,9 +320,9 @@ export class HTMLtoJSX { */ _visitText = (node) => { >_visitText : (node: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(node) => { var parentTag = node.parentNode && node.parentNode.tagName.toLowerCase(); if (parentTag === 'textarea' || parentTag === 'style') { // Ignore text content of textareas and styles, as it will have already been moved // to a "defaultValue" attribute and "dangerouslySetInnerHTML" attribute respectively. return; } var text = '' if (this._inPreTag) { // If this text is contained within a
, we need to ensure the JSX      // whitespace coalescing rules don't eat the whitespace. This means      // wrapping newlines and sequences of two or more spaces in variables.      text = text        .replace(/\r/g, '')        .replace(/( {2,}|\n|\t|\{|\})/g, function(whitespace) {          return '{' + JSON.stringify(whitespace) + '}';        });    } else {      // If there's a newline in the text, adjust the indent level      if (text.indexOf('\n') > -1) {      }    }    this.output += text;  } : (node: any) => void
->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             : ^^^^^^^^^^^^^^^^^^^
+>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             :                    
 >node : any
 
     var parentTag = node.parentNode && node.parentNode.tagName.toLowerCase();
@@ -392,17 +392,17 @@ export class HTMLtoJSX {
 >text        .replace(/\r/g, '')        .replace(/( {2,}|\n|\t|\{|\})/g, function(whitespace) {          return '{' + JSON.stringify(whitespace) + '}';        }) : string
 >                                                                                                                                                                 : ^^^^^^
 >text        .replace(/\r/g, '')        .replace : { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }
->                                                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                : ^^^           ^^               ^^            ^^      ^^^^^^^^^^^^           ^^               ^^        ^^                                             ^^^^^^^^^^^^
 >text        .replace(/\r/g, '') : string
 >                                : ^^^^^^
 >text        .replace : { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }
->                     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                     : ^^^           ^^               ^^            ^^      ^^^^^^^^^^^^           ^^               ^^        ^^                                             ^^^^^^^^^^^^
 >text : string
 >     : ^^^^^^
 
         .replace(/\r/g, '')
 >replace : { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^           ^^               ^^            ^^      ^^^^^^^^^^^^           ^^               ^^        ^^                                             ^^^^^^^^^^^^
 >/\r/g : RegExp
 >      : ^^^^^^
 >'' : ""
@@ -410,11 +410,11 @@ export class HTMLtoJSX {
 
         .replace(/( {2,}|\n|\t|\{|\})/g, function(whitespace) {
 >replace : { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^           ^^               ^^            ^^      ^^^^^^^^^^^^           ^^               ^^        ^^                                             ^^^^^^^^^^^^
 >/( {2,}|\n|\t|\{|\})/g : RegExp
 >                       : ^^^^^^
 >function(whitespace) {          return '{' + JSON.stringify(whitespace) + '}';        } : (whitespace: string) => string
->                                                                                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                                        : ^          ^^^^^^^^^^^^^^^^^^^
 >whitespace : string
 >           : ^^^^^^
 
@@ -427,12 +427,12 @@ export class HTMLtoJSX {
 >    : ^^^
 >JSON.stringify(whitespace) : string
 >                           : ^^^^^^
->JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; }
+>               : ^^^     ^^   ^^        ^^^                                           ^^     ^^^               ^^^^^^^^^^^^     ^^   ^^        ^^^                          ^^     ^^^               ^^^^^^^^^^^^
 >JSON : JSON
 >     : ^^^^
->stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; }
+>          : ^^^     ^^   ^^        ^^^                                           ^^     ^^^               ^^^^^^^^^^^^     ^^   ^^        ^^^                          ^^     ^^^               ^^^^^^^^^^^^
 >whitespace : string
 >           : ^^^^^^
 >'}' : "}"
@@ -447,11 +447,11 @@ export class HTMLtoJSX {
 >text.indexOf('\n') : number
 >                   : ^^^^^^
 >text.indexOf : (searchString: string, position?: number) => number
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>             : ^            ^^      ^^        ^^^      ^^^^^^^^^^^
 >text : string
 >     : ^^^^^^
 >indexOf : (searchString: string, position?: number) => number
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^            ^^      ^^        ^^^      ^^^^^^^^^^^
 >'\n' : "\n"
 >     : ^^^^
 >-1 : -1
@@ -494,7 +494,7 @@ export class StyleParser {
 >toJSXString : () => void
 >            : ^^^^^^^^^^
 >() => {    for (var key in this.styles) {      if (!this.styles.hasOwnProperty(key)) {      }    }  } : () => void
->                                                                                                      : ^^^^^^^^^^
+>                                                                                                      :           
 
     for (var key in this.styles) {
 >key : string
@@ -512,7 +512,7 @@ export class StyleParser {
 >this.styles.hasOwnProperty(key) : boolean
 >                                : ^^^^^^^
 >this.styles.hasOwnProperty : (v: PropertyKey) => boolean
->                           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                           : ^ ^^           ^^^^^^^^^^^^
 >this.styles : {}
 >            : ^^
 >this : this
@@ -520,7 +520,7 @@ export class StyleParser {
 >styles : {}
 >       : ^^
 >hasOwnProperty : (v: PropertyKey) => boolean
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>               : ^ ^^           ^^^^^^^^^^^^
 >key : string
 >    : ^^^^^^
       }
diff --git a/tests/baselines/reference/controlFlowSelfReferentialLoop.types b/tests/baselines/reference/controlFlowSelfReferentialLoop.types
index 03b3116c32641..08d5fd59a036b 100644
--- a/tests/baselines/reference/controlFlowSelfReferentialLoop.types
+++ b/tests/baselines/reference/controlFlowSelfReferentialLoop.types
@@ -5,13 +5,13 @@
 
 function md5(string:string): void {
 >md5 : (string: string) => void
->    : ^^^^^^^^^      ^^^^^    
+>    : ^      ^^      ^^^^^    
 >string : string
 >       : ^^^^^^
 
     function FF(a,b,c,d,x,s,ac) {
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
@@ -35,7 +35,7 @@ function md5(string:string): void {
 
     function GG(a,b,c,d,x,s,ac) {
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
@@ -59,7 +59,7 @@ function md5(string:string): void {
 
     function HH(a,b,c,d,x,s,ac) {
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
@@ -83,7 +83,7 @@ function md5(string:string): void {
 
     function II(a,b,c,d,x,s,ac) {
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
@@ -299,7 +299,7 @@ function md5(string:string): void {
 >FF(a,b,c,d,x[k+0], S11,0xD76AA478) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -331,7 +331,7 @@ function md5(string:string): void {
 >FF(d,a,b,c,x[k+1], S12,0xE8C7B756) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -363,7 +363,7 @@ function md5(string:string): void {
 >FF(c,d,a,b,x[k+2], S13,0x242070DB) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -395,7 +395,7 @@ function md5(string:string): void {
 >FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -427,7 +427,7 @@ function md5(string:string): void {
 >FF(a,b,c,d,x[k+4], S11,0xF57C0FAF) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -459,7 +459,7 @@ function md5(string:string): void {
 >FF(d,a,b,c,x[k+5], S12,0x4787C62A) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -491,7 +491,7 @@ function md5(string:string): void {
 >FF(c,d,a,b,x[k+6], S13,0xA8304613) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -523,7 +523,7 @@ function md5(string:string): void {
 >FF(b,c,d,a,x[k+7], S14,0xFD469501) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -555,7 +555,7 @@ function md5(string:string): void {
 >FF(a,b,c,d,x[k+8], S11,0x698098D8) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -587,7 +587,7 @@ function md5(string:string): void {
 >FF(d,a,b,c,x[k+9], S12,0x8B44F7AF) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -619,7 +619,7 @@ function md5(string:string): void {
 >FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -651,7 +651,7 @@ function md5(string:string): void {
 >FF(b,c,d,a,x[k+11],S14,0x895CD7BE) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -683,7 +683,7 @@ function md5(string:string): void {
 >FF(a,b,c,d,x[k+12],S11,0x6B901122) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -715,7 +715,7 @@ function md5(string:string): void {
 >FF(d,a,b,c,x[k+13],S12,0xFD987193) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -747,7 +747,7 @@ function md5(string:string): void {
 >FF(c,d,a,b,x[k+14],S13,0xA679438E) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -779,7 +779,7 @@ function md5(string:string): void {
 >FF(b,c,d,a,x[k+15],S14,0x49B40821) : number
 >                                   : ^^^^^^
 >FF : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -811,7 +811,7 @@ function md5(string:string): void {
 >GG(a,b,c,d,x[k+1], S21,0xF61E2562) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -843,7 +843,7 @@ function md5(string:string): void {
 >GG(d,a,b,c,x[k+6], S22,0xC040B340) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -875,7 +875,7 @@ function md5(string:string): void {
 >GG(c,d,a,b,x[k+11],S23,0x265E5A51) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -907,7 +907,7 @@ function md5(string:string): void {
 >GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -939,7 +939,7 @@ function md5(string:string): void {
 >GG(a,b,c,d,x[k+5], S21,0xD62F105D) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -971,7 +971,7 @@ function md5(string:string): void {
 >GG(d,a,b,c,x[k+10],S22,0x2441453) : number
 >                                  : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1003,7 +1003,7 @@ function md5(string:string): void {
 >GG(c,d,a,b,x[k+15],S23,0xD8A1E681) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1035,7 +1035,7 @@ function md5(string:string): void {
 >GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1067,7 +1067,7 @@ function md5(string:string): void {
 >GG(a,b,c,d,x[k+9], S21,0x21E1CDE6) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1099,7 +1099,7 @@ function md5(string:string): void {
 >GG(d,a,b,c,x[k+14],S22,0xC33707D6) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1131,7 +1131,7 @@ function md5(string:string): void {
 >GG(c,d,a,b,x[k+3], S23,0xF4D50D87) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1163,7 +1163,7 @@ function md5(string:string): void {
 >GG(b,c,d,a,x[k+8], S24,0x455A14ED) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1195,7 +1195,7 @@ function md5(string:string): void {
 >GG(a,b,c,d,x[k+13],S21,0xA9E3E905) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1227,7 +1227,7 @@ function md5(string:string): void {
 >GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1259,7 +1259,7 @@ function md5(string:string): void {
 >GG(c,d,a,b,x[k+7], S23,0x676F02D9) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1291,7 +1291,7 @@ function md5(string:string): void {
 >GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A) : number
 >                                   : ^^^^^^
 >GG : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1323,7 +1323,7 @@ function md5(string:string): void {
 >HH(a,b,c,d,x[k+5], S31,0xFFFA3942) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1355,7 +1355,7 @@ function md5(string:string): void {
 >HH(d,a,b,c,x[k+8], S32,0x8771F681) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1387,7 +1387,7 @@ function md5(string:string): void {
 >HH(c,d,a,b,x[k+11],S33,0x6D9D6122) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1419,7 +1419,7 @@ function md5(string:string): void {
 >HH(b,c,d,a,x[k+14],S34,0xFDE5380C) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1451,7 +1451,7 @@ function md5(string:string): void {
 >HH(a,b,c,d,x[k+1], S31,0xA4BEEA44) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1483,7 +1483,7 @@ function md5(string:string): void {
 >HH(d,a,b,c,x[k+4], S32,0x4BDECFA9) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1515,7 +1515,7 @@ function md5(string:string): void {
 >HH(c,d,a,b,x[k+7], S33,0xF6BB4B60) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1547,7 +1547,7 @@ function md5(string:string): void {
 >HH(b,c,d,a,x[k+10],S34,0xBEBFBC70) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1579,7 +1579,7 @@ function md5(string:string): void {
 >HH(a,b,c,d,x[k+13],S31,0x289B7EC6) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1611,7 +1611,7 @@ function md5(string:string): void {
 >HH(d,a,b,c,x[k+0], S32,0xEAA127FA) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1643,7 +1643,7 @@ function md5(string:string): void {
 >HH(c,d,a,b,x[k+3], S33,0xD4EF3085) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1675,7 +1675,7 @@ function md5(string:string): void {
 >HH(b,c,d,a,x[k+6], S34,0x4881D05) : number
 >                                  : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1707,7 +1707,7 @@ function md5(string:string): void {
 >HH(a,b,c,d,x[k+9], S31,0xD9D4D039) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1739,7 +1739,7 @@ function md5(string:string): void {
 >HH(d,a,b,c,x[k+12],S32,0xE6DB99E5) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1771,7 +1771,7 @@ function md5(string:string): void {
 >HH(c,d,a,b,x[k+15],S33,0x1FA27CF8) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1803,7 +1803,7 @@ function md5(string:string): void {
 >HH(b,c,d,a,x[k+2], S34,0xC4AC5665) : number
 >                                   : ^^^^^^
 >HH : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1835,7 +1835,7 @@ function md5(string:string): void {
 >II(a,b,c,d,x[k+0], S41,0xF4292244) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1867,7 +1867,7 @@ function md5(string:string): void {
 >II(d,a,b,c,x[k+7], S42,0x432AFF97) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -1899,7 +1899,7 @@ function md5(string:string): void {
 >II(c,d,a,b,x[k+14],S43,0xAB9423A7) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -1931,7 +1931,7 @@ function md5(string:string): void {
 >II(b,c,d,a,x[k+5], S44,0xFC93A039) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -1963,7 +1963,7 @@ function md5(string:string): void {
 >II(a,b,c,d,x[k+12],S41,0x655B59C3) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -1995,7 +1995,7 @@ function md5(string:string): void {
 >II(d,a,b,c,x[k+3], S42,0x8F0CCC92) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -2027,7 +2027,7 @@ function md5(string:string): void {
 >II(c,d,a,b,x[k+10],S43,0xFFEFF47D) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -2059,7 +2059,7 @@ function md5(string:string): void {
 >II(b,c,d,a,x[k+1], S44,0x85845DD1) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -2091,7 +2091,7 @@ function md5(string:string): void {
 >II(a,b,c,d,x[k+8], S41,0x6FA87E4F) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -2123,7 +2123,7 @@ function md5(string:string): void {
 >II(d,a,b,c,x[k+15],S42,0xFE2CE6E0) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -2155,7 +2155,7 @@ function md5(string:string): void {
 >II(c,d,a,b,x[k+6], S43,0xA3014314) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -2187,7 +2187,7 @@ function md5(string:string): void {
 >II(b,c,d,a,x[k+13],S44,0x4E0811A1) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -2219,7 +2219,7 @@ function md5(string:string): void {
 >II(a,b,c,d,x[k+4], S41,0xF7537E82) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -2251,7 +2251,7 @@ function md5(string:string): void {
 >II(d,a,b,c,x[k+11],S42,0xBD3AF235) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >d : number
 >  : ^^^^^^
 >a : number
@@ -2283,7 +2283,7 @@ function md5(string:string): void {
 >II(c,d,a,b,x[k+2], S43,0x2AD7D2BB) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >c : number
 >  : ^^^^^^
 >d : number
@@ -2315,7 +2315,7 @@ function md5(string:string): void {
 >II(b,c,d,a,x[k+9], S44,0xEB86D391) : number
 >                                   : ^^^^^^
 >II : (a: any, b: any, c: any, d: any, x: any, s: any, ac: any) => number
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^  ^^^^^^^^^^^^^^^^
 >b : number
 >  : ^^^^^^
 >c : number
@@ -2342,7 +2342,7 @@ function md5(string:string): void {
 }
 export default md5;
 >md5 : (string: string) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^      ^^      ^^^^^^^^^
 
 // Repro from #26655
 
@@ -2356,7 +2356,7 @@ interface DataShape {
 
 function getObject(id: string | number) {
 >getObject : (id: string | number) => any
->          : ^^^^^               ^^^^^   
+>          : ^  ^^               ^^^^^   
 >id : string | number
 >   : ^^^^^^^^^^^^^^^
 
@@ -2393,7 +2393,7 @@ function getObject(id: string | number) {
 >getObject(id) : any
 >              : ^^^
 >getObject : (id: string | number) => any
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^   
+>          : ^  ^^               ^^^^^   
 >id : string
 >   : ^^^^^^
 
@@ -2401,7 +2401,7 @@ function getObject(id: string | number) {
 >message : { id: string; }
 >        : ^^^^^^^^^^^^^^^
 >data.message : { id: string; }
->             : ^^^^^^^^^^^^^^^
+>             :                
 >data : DataShape
 >     : ^^^^^^^^^
 >message : { id: string; }
diff --git a/tests/baselines/reference/controlFlowStringIndex.types b/tests/baselines/reference/controlFlowStringIndex.types
index b50a6a88acc55..d3ca123f5bfa8 100644
--- a/tests/baselines/reference/controlFlowStringIndex.types
+++ b/tests/baselines/reference/controlFlowStringIndex.types
@@ -31,16 +31,16 @@ if (value.foo !== null) {
     value.foo.toExponential()
 >value.foo.toExponential() : string
 >                          : ^^^^^^
->value.foo.toExponential : (fractionDigits?: number | undefined) => string
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>value.foo.toExponential : (fractionDigits?: number) => string
+>                        : ^              ^^^      ^^^^^^^^^^^
 >value.foo : number
 >          : ^^^^^^
 >value : A
 >      : ^
 >foo : number
 >    : ^^^^^^
->toExponential : (fractionDigits?: number | undefined) => string
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>toExponential : (fractionDigits?: number) => string
+>              : ^              ^^^      ^^^^^^^^^^^
 
     value.other // should still be number | null
 >value.other : number | null
diff --git a/tests/baselines/reference/controlFlowTruthiness.types b/tests/baselines/reference/controlFlowTruthiness.types
index 2214f497bdbf2..fad5c8e9894a2 100644
--- a/tests/baselines/reference/controlFlowTruthiness.types
+++ b/tests/baselines/reference/controlFlowTruthiness.types
@@ -225,7 +225,7 @@ function f6() {
 
 function f7(x: {}) {
 >f7 : (x: {}) => void
->   : ^^^^  ^^^^^^^^^
+>   : ^ ^^  ^^^^^^^^^
 >x : {}
 >  : ^^
 
@@ -246,7 +246,7 @@ function f7(x: {}) {
 
 function f8(x: T) {
 >f8 : (x: T) => void
->   : ^ ^^^^^ ^^^^^^^^^
+>   : ^ ^^ ^^ ^^^^^^^^^
 >x : T
 >  : ^
 
@@ -267,7 +267,7 @@ function f8(x: T) {
 
 function f9(x: T) {
 >f9 : (x: T) => void
->   : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^
 >x : T
 >  : ^
 
diff --git a/tests/baselines/reference/controlFlowTypeofObject.types b/tests/baselines/reference/controlFlowTypeofObject.types
index 98031d4dab130..3277237b3c6da 100644
--- a/tests/baselines/reference/controlFlowTypeofObject.types
+++ b/tests/baselines/reference/controlFlowTypeofObject.types
@@ -3,13 +3,13 @@
 === controlFlowTypeofObject.ts ===
 declare function obj(x: object): void;
 >obj : (x: object) => void
->    : ^^^^      ^^^^^    
+>    : ^ ^^      ^^^^^    
 >x : object
 >  : ^^^^^^
 
 function f1(x: unknown) {
 >f1 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -35,7 +35,7 @@ function f1(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
     }
@@ -43,7 +43,7 @@ function f1(x: unknown) {
 
 function f2(x: unknown) {
 >f2 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -69,7 +69,7 @@ function f2(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
     }
@@ -77,7 +77,7 @@ function f2(x: unknown) {
 
 function f3(x: unknown) {
 >f3 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -103,7 +103,7 @@ function f3(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
     }
@@ -111,7 +111,7 @@ function f3(x: unknown) {
 
 function f4(x: unknown) {
 >f4 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -139,7 +139,7 @@ function f4(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
     }
@@ -147,7 +147,7 @@ function f4(x: unknown) {
 
 function f5(x: unknown) {
 >f5 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -192,7 +192,7 @@ function f5(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
     }
@@ -200,7 +200,7 @@ function f5(x: unknown) {
 
 function f6(x: unknown) {
 >f6 : (x: unknown) => void
->   : ^^^^       ^^^^^^^^^
+>   : ^ ^^       ^^^^^^^^^
 >x : unknown
 >  : ^^^^^^^
 
@@ -233,7 +233,7 @@ function f6(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object
 >  : ^^^^^^
         }
@@ -252,7 +252,7 @@ function f6(x: unknown) {
 >obj(x) : void
 >       : ^^^^
 >obj : (x: object) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >x : object | null
 >  : ^^^^^^^^^^^^^
     }
diff --git a/tests/baselines/reference/controlFlowWhileStatement.types b/tests/baselines/reference/controlFlowWhileStatement.types
index b917c1d521a17..3012536e6c7d4 100644
--- a/tests/baselines/reference/controlFlowWhileStatement.types
+++ b/tests/baselines/reference/controlFlowWhileStatement.types
@@ -357,7 +357,7 @@ function h1() {
 }
 declare function len(s: string | number): number;
 >len : (s: string | number) => number
->    : ^^^^               ^^^^^      
+>    : ^ ^^               ^^^^^      
 >s : string | number
 >  : ^^^^^^^^^^^^^^^
 
@@ -389,7 +389,7 @@ function h2() {
 >len(x) : number
 >       : ^^^^^^
 >len : (s: string | number) => number
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^               ^^^^^^^^^^^
 >x : string | number
 >  : ^^^^^^^^^^^^^^^
 
@@ -433,7 +433,7 @@ function h3() {
 >len(x) : number
 >       : ^^^^^^
 >len : (s: string | number) => number
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^               ^^^^^^^^^^^
 >x : string | number
 >  : ^^^^^^^^^^^^^^^
     }
diff --git a/tests/baselines/reference/controlFlowWithIncompleteTypes.types b/tests/baselines/reference/controlFlowWithIncompleteTypes.types
index 9accde7b55c8a..45df7520991f8 100644
--- a/tests/baselines/reference/controlFlowWithIncompleteTypes.types
+++ b/tests/baselines/reference/controlFlowWithIncompleteTypes.types
@@ -39,11 +39,11 @@ function foo1() {
 >x.slice() : string
 >          : ^^^^^^
 >x.slice : (start?: number, end?: number) => string
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >x : string
 >  : ^^^^^^
 >slice : (start?: number, end?: number) => string
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
         }
         else {
             x = "abc";
@@ -98,11 +98,11 @@ function foo2() {
 >x.slice() : string
 >          : ^^^^^^
 >x.slice : (start?: number, end?: number) => string
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >x : string
 >  : ^^^^^^
 >slice : (start?: number, end?: number) => string
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
         }
     }
 }
diff --git a/tests/baselines/reference/controlFlowWithTemplateLiterals.types b/tests/baselines/reference/controlFlowWithTemplateLiterals.types
index a98f6a4ed00e0..d3feac06fc50a 100644
--- a/tests/baselines/reference/controlFlowWithTemplateLiterals.types
+++ b/tests/baselines/reference/controlFlowWithTemplateLiterals.types
@@ -18,12 +18,12 @@ if (typeof envVar === `string`) {
   envVar.slice(0)
 >envVar.slice(0) : string
 >                : ^^^^^^
->envVar.slice : (start?: number | undefined, end?: number | undefined) => string
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>envVar.slice : (start?: number, end?: number) => string
+>             : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >envVar : string
 >       : ^^^^^^
->slice : (start?: number | undefined, end?: number | undefined) => string
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>slice : (start?: number, end?: number) => string
+>      : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >0 : 0
 >  : ^
 }
@@ -45,16 +45,16 @@ if (`test` in obj) {
   obj.test.slice(0)
 >obj.test.slice(0) : string
 >                  : ^^^^^^
->obj.test.slice : (start?: number | undefined, end?: number | undefined) => string
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>obj.test.slice : (start?: number, end?: number) => string
+>               : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >obj.test : string
 >         : ^^^^^^
 >obj : { test: string; }
 >    : ^^^^^^^^^^^^^^^^^
 >test : string
 >     : ^^^^^^
->slice : (start?: number | undefined, end?: number | undefined) => string
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>slice : (start?: number, end?: number) => string
+>      : ^     ^^^      ^^   ^^^      ^^^^^^^^^^^
 >0 : 0
 >  : ^
 }
diff --git a/tests/baselines/reference/convertKeywordsYes.types b/tests/baselines/reference/convertKeywordsYes.types
index 800897453aeb4..a10e84caffda4 100644
--- a/tests/baselines/reference/convertKeywordsYes.types
+++ b/tests/baselines/reference/convertKeywordsYes.types
@@ -113,7 +113,7 @@ var declare = 0;
 
 function bigGeneric<
 >bigGeneric : (c: constructor, a: any, b2: boolean, i: implements, i2: interface, l: let, m: module, n: number, p: package, p2: private, p3: protected, p4: public, s: set, s2: static, s3: string, g: get, y: yield, d: declare) => void
->           : ^           ^^          ^^         ^^   ^^      ^^       ^^       ^^         ^^      ^^   ^^      ^^   ^^     ^^       ^^^^^           ^^^^^   ^^^^^^       ^^^^^          ^^^^^^         ^^^^^   ^^^^^      ^^^^^      ^^^^^       ^^^^^^       ^^^^^^         ^^^^^^      ^^^^^   ^^^^^^      ^^^^^^      ^^^^^   ^^^^^     ^^^^^       ^^^^^^^^^
+>           : ^           ^^          ^^         ^^   ^^      ^^       ^^       ^^         ^^      ^^   ^^      ^^   ^^     ^^       ^^ ^^           ^^ ^^   ^^  ^^       ^^ ^^          ^^  ^^         ^^ ^^   ^^ ^^      ^^ ^^      ^^ ^^       ^^  ^^       ^^  ^^         ^^  ^^      ^^ ^^   ^^  ^^      ^^  ^^      ^^ ^^   ^^ ^^     ^^ ^^       ^^^^^^^^^
 
     constructor,
     implements ,
diff --git a/tests/baselines/reference/copyrightWithNewLine1.types b/tests/baselines/reference/copyrightWithNewLine1.types
index 652776e59ce67..8df59c149eefe 100644
--- a/tests/baselines/reference/copyrightWithNewLine1.types
+++ b/tests/baselines/reference/copyrightWithNewLine1.types
@@ -15,11 +15,11 @@ var el = document.getElementById('content');
 >document.getElementById('content') : HTMLElement
 >                                   : ^^^^^^^^^^^
 >document.getElementById : (elementId: string) => HTMLElement
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^         ^^      ^^^^^^^^^^^^^^^^
 >document : Document
 >         : ^^^^^^^^
 >getElementById : (elementId: string) => HTMLElement
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>               : ^         ^^      ^^^^^^^^^^^^^^^^
 >'content' : "content"
 >          : ^^^^^^^^^
 
diff --git a/tests/baselines/reference/copyrightWithoutNewLine1.types b/tests/baselines/reference/copyrightWithoutNewLine1.types
index 1c9410966daca..fb077e47b745e 100644
--- a/tests/baselines/reference/copyrightWithoutNewLine1.types
+++ b/tests/baselines/reference/copyrightWithoutNewLine1.types
@@ -14,11 +14,11 @@ var el = document.getElementById('content');
 >document.getElementById('content') : HTMLElement
 >                                   : ^^^^^^^^^^^
 >document.getElementById : (elementId: string) => HTMLElement
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^         ^^      ^^^^^^^^^^^^^^^^
 >document : Document
 >         : ^^^^^^^^
 >getElementById : (elementId: string) => HTMLElement
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>               : ^         ^^      ^^^^^^^^^^^^^^^^
 >'content' : "content"
 >          : ^^^^^^^^^
 
diff --git a/tests/baselines/reference/correctOrderOfPromiseMethod.types b/tests/baselines/reference/correctOrderOfPromiseMethod.types
index a82714059e211..21563fc0830ea 100644
--- a/tests/baselines/reference/correctOrderOfPromiseMethod.types
+++ b/tests/baselines/reference/correctOrderOfPromiseMethod.types
@@ -25,7 +25,7 @@ async function countEverything(): Promise {
 >providerA : () => Promise
 >          : ^^^^^^            
 >async (): Promise => { return [] } : () => Promise
->                                        : ^^^^^^            
+>                                        :                   
 >[] : undefined[]
 >   : ^^^^^^^^^^^
 
@@ -33,7 +33,7 @@ async function countEverything(): Promise {
 >providerB : () => Promise
 >          : ^^^^^^            
 >async (): Promise => { return [] } : () => Promise
->                                        : ^^^^^^            
+>                                        :                   
 >[] : undefined[]
 >   : ^^^^^^^^^^^
 
@@ -47,11 +47,11 @@ async function countEverything(): Promise {
 >Promise.all([        providerA(),        providerB(),    ]) : Promise<[A[], B[]]>
 >                                                            : ^^^^^^^^^^^^^^^^^^^
 >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; }
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^ ^^      ^^                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >Promise : PromiseConstructor
 >        : ^^^^^^^^^^^^^^^^^^
 >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^      ^^                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >[        providerA(),        providerB(),    ] : [Promise, Promise]
 >                                               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -118,11 +118,11 @@ const expected: Promise<["a", "b", "c"]> = Promise.all(undefined as readonly ["a
 >Promise.all(undefined as readonly ["a", "b", "c"]) : Promise<["a", "b", "c"]>
 >                                                   : ^^^^^^^^^^^^^^^^^^^^^^^^
 >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; }
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^ ^^      ^^                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >Promise : PromiseConstructor
 >        : ^^^^^^^^^^^^^^^^^^
 >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^      ^^                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >undefined as readonly ["a", "b", "c"] : readonly ["a", "b", "c"]
 >                                      : ^^^^^^^^^^^^^^^^^^^^^^^^
 >undefined : undefined
diff --git a/tests/baselines/reference/correlatedUnions.types b/tests/baselines/reference/correlatedUnions.types
index d27b5a9f6157d..95a75fdf93706 100644
--- a/tests/baselines/reference/correlatedUnions.types
+++ b/tests/baselines/reference/correlatedUnions.types
@@ -33,7 +33,7 @@ type UnionRecord = { [P in K]: {
 
     f: (v: RecordMap[P]) => void
 >f : (v: RecordMap[P]) => void
->  : ^^^^            ^^^^^    
+>  : ^ ^^            ^^^^^    
 >v : RecordMap[P]
 >  : ^^^^^^^^^^^^
 
@@ -41,7 +41,7 @@ type UnionRecord = { [P in K]: {
 
 function processRecord(rec: UnionRecord) {
 >processRecord : (rec: UnionRecord) => void
->              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^              ^^^^^^^^^
 >rec : UnionRecord
 >    : ^^^^^^^^^^^^^^
 
@@ -49,11 +49,11 @@ function processRecord(rec: UnionRecord) {
 >rec.f(rec.v) : void
 >             : ^^^^
 >rec.f : (v: RecordMap[K]) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^ ^^^^^^^^^^^^^^^^^^^^^^^
 >rec : UnionRecord
 >    : ^^^^^^^^^^^^^^
 >f : (v: RecordMap[K]) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^^^^^^^^^^^^^
 >rec.v : RecordMap[K]
 >      : ^^^^^^^^^^^^
 >rec : UnionRecord
@@ -64,7 +64,7 @@ function processRecord(rec: UnionRecord) {
 
 declare const r1: UnionRecord<'n'>;  // { kind: 'n', v: number, f: (v: number) => void }
 >r1 : { kind: "n"; v: number; f: (v: number) => void; }
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
 
 declare const r2: UnionRecord;  // { kind: 'n', ... } | { kind: 's', ... } | { kind: 'b', ... }
 >r2 : UnionRecord
@@ -74,15 +74,15 @@ processRecord(r1);
 >processRecord(r1) : void
 >                  : ^^^^
 >processRecord : (rec: UnionRecord) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^              ^^^^^^^^^
 >r1 : { kind: "n"; v: number; f: (v: number) => void; }
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^
 
 processRecord(r2);
 >processRecord(r2) : void
 >                  : ^^^^
 >processRecord : (rec: UnionRecord) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^              ^^^^^^^^^
 >r2 : UnionRecord
 >   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -90,9 +90,9 @@ processRecord({ kind: 'n', v: 42, f: v => v.toExponential() });
 >processRecord({ kind: 'n', v: 42, f: v => v.toExponential() }) : void
 >                                                               : ^^^^
 >processRecord : (rec: UnionRecord) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^              ^^^^^^^^^
 >{ kind: 'n', v: 42, f: v => v.toExponential() } : { kind: "n"; v: number; f: (v: number) => string; }
->                                                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
 >kind : "n"
 >     : ^^^
 >'n' : "n"
@@ -102,19 +102,19 @@ processRecord({ kind: 'n', v: 42, f: v => v.toExponential() });
 >42 : 42
 >   : ^^
 >f : (v: number) => string
->  : ^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^^^^^^^^^
 >v => v.toExponential() : (v: number) => string
->                       : ^^^^^^^^^^^^^^^^^^^^^
+>                       :                      
 >v : number
 >  : ^^^^^^
 >v.toExponential() : string
 >                  : ^^^^^^
->v.toExponential : (fractionDigits?: number | undefined) => string
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>v.toExponential : (fractionDigits?: number) => string
+>                : ^              ^^^      ^^^^^^^^^^^
 >v : number
 >  : ^^^^^^
->toExponential : (fractionDigits?: number | undefined) => string
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>toExponential : (fractionDigits?: number) => string
+>              : ^              ^^^      ^^^^^^^^^^^
 
 // --------
 
@@ -165,13 +165,13 @@ type RenderFuncMap = { [K in keyof FieldMap]: RenderFunc };
 
 function renderTextField(props: TextFieldData) {}
 >renderTextField : (props: TextFieldData) => void
->                : ^^^^^^^^             ^^^^^^^^^
+>                : ^     ^^             ^^^^^^^^^
 >props : TextFieldData
 >      : ^^^^^^^^^^^^^
 
 function renderSelectField(props: SelectFieldData) {}
 >renderSelectField : (props: SelectFieldData) => void
->                  : ^^^^^^^^               ^^^^^^^^^
+>                  : ^     ^^               ^^^^^^^^^
 >props : SelectFieldData
 >      : ^^^^^^^^^^^^^^^
 
@@ -179,25 +179,25 @@ const renderFuncs: RenderFuncMap = {
 >renderFuncs : RenderFuncMap
 >            : ^^^^^^^^^^^^^
 >{    text: renderTextField,    select: renderSelectField,} : { text: (props: TextFieldData) => void; select: (props: SelectFieldData) => void; }
->                                                           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                           : ^^^^^^^^^     ^^             ^^^^^^^^^^^^^^^^^^^^     ^^               ^^^^^^^^^^^^
 
     text: renderTextField,
 >text : (props: TextFieldData) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^     ^^             ^^^^^^^^^
 >renderTextField : (props: TextFieldData) => void
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                               
 
     select: renderSelectField,
 >select : (props: SelectFieldData) => void
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^     ^^               ^^^^^^^^^
 >renderSelectField : (props: SelectFieldData) => void
->                  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                  :                                 
 
 };
 
 function renderField(field: FormField) {
 >renderField : (field: FormField) => void
->            : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^            ^^^^^^^^^
+>            : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^     ^^            ^^^^^^^^^
 >field : FormField
 >      : ^^^^^^^^^^^^
 
@@ -258,13 +258,13 @@ const handlers: HandlerMap = {
 >handlers : HandlerMap
 >         : ^^^^^^^^^^
 >{    foo: s => s.length,    bar: n => n.toFixed(2)} : { foo: (s: string) => number; bar: (n: number) => string; }
->                                                    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                    : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
 
     foo: s => s.length,
 >foo : (s: string) => number
->    : ^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^^^^^^^^^^^^^^^^^^
 >s => s.length : (s: string) => number
->              : ^^^^^^^^^^^^^^^^^^^^^
+>              :                      
 >s : string
 >  : ^^^^^^
 >s.length : number
@@ -276,19 +276,19 @@ const handlers: HandlerMap = {
 
     bar: n => n.toFixed(2)
 >bar : (n: number) => string
->    : ^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^^^^^^^^^^^^^^^^^^
 >n => n.toFixed(2) : (n: number) => string
->                  : ^^^^^^^^^^^^^^^^^^^^^
+>                  :                      
 >n : number
 >  : ^^^^^^
 >n.toFixed(2) : string
 >             : ^^^^^^
->n.toFixed : (fractionDigits?: number | undefined) => string
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>n.toFixed : (fractionDigits?: number) => string
+>          : ^              ^^^      ^^^^^^^^^^^
 >n : number
 >  : ^^^^^^
->toFixed : (fractionDigits?: number | undefined) => string
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>toFixed : (fractionDigits?: number) => string
+>        : ^              ^^^      ^^^^^^^^^^^
 >2 : 2
 >  : ^
 
@@ -354,7 +354,7 @@ const data: DataEntry[] = [
 
 function process(data: DataEntry[]) {
 >process : (data: DataEntry[]) => void
->        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^
+>        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^    ^^              ^^^^^^^^^
 >data : DataEntry[]
 >     : ^^^^^^^^^^^^^^
 
@@ -362,13 +362,13 @@ function process(data: DataEntry[]) {
 >data.forEach(block => {        if (block.type in handlers) {            handlers[block.type](block.data)        }    }) : void
 >                                                                                                                        : ^^^^
 >data.forEach : (callbackfn: (value: DataEntry, index: number, array: DataEntry[]) => void, thisArg?: any) => void
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>             : ^          ^^^     ^^^^^^^^^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^   ^^^^^^^^^
 >data : DataEntry[]
 >     : ^^^^^^^^^^^^^^
 >forEach : (callbackfn: (value: DataEntry, index: number, array: DataEntry[]) => void, thisArg?: any) => void
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^          ^^^     ^^^^^^^^^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^   ^^^^^^^^^
 >block => {        if (block.type in handlers) {            handlers[block.type](block.data)        }    } : (block: DataEntry) => void
->                                                                                                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                                                          : ^     ^^^^^^^^^^^^^^^^^^^^^^^
 >block : DataEntry
 >      : ^^^^^^^^^^^^
 
@@ -411,7 +411,7 @@ process(data);
 >process(data) : void
 >              : ^^^^
 >process : (data: DataEntry[]) => void
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^    ^^              ^^^^^^^^^
 >data : DataEntry[]
 >     : ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -419,7 +419,7 @@ process([{ type: 'foo', data: 'abc' }]);
 >process([{ type: 'foo', data: 'abc' }]) : void
 >                                        : ^^^^
 >process : (data: DataEntry[]) => void
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^    ^^              ^^^^^^^^^
 >[{ type: 'foo', data: 'abc' }] : { type: "foo"; data: string; }[]
 >                               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >{ type: 'foo', data: 'abc' } : { type: "foo"; data: string; }
@@ -449,23 +449,23 @@ type LetterCaller = { [P in K]: { letter: Recordletter : Record
 >       : ^^^^^^^^^^^^^^^^^^^^^^^
 >caller : (x: Record) => void
->       : ^^^^                       ^^^^^    
+>       : ^ ^^                       ^^^^^    
 >x : Record
 >  : ^^^^^^^^^^^^^^^^^^^^^^^
 
 function call({ letter, caller }: LetterCaller): void {
 >call : ({ letter, caller }: LetterCaller) => void
->     : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^    
+>     : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^                  ^^               ^^^^^    
 >letter : Record
 >       : ^^^^^^^^^^^^^^^^^^^^^^^
 >caller : (x: Record) => void
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
   caller(letter);
 >caller(letter) : void
 >               : ^^^^
 >caller : (x: Record) => void
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >letter : Record
 >       : ^^^^^^^^^^^^^^^^^^^^^^^
 }
@@ -510,7 +510,7 @@ call(xx);
 >call(xx) : void
 >         : ^^^^
 >call : ({ letter, caller }: LetterCaller) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^                  ^^               ^^^^^^^^^
 >xx : { letter: A; caller: ACaller; } | { letter: B; caller: BCaller; }
 >   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -530,7 +530,7 @@ type Ev = { [P in K]: {
 
     readonly callback: (ev: DocumentEventMap[P]) => void;
 >callback : (ev: DocumentEventMap[P]) => void
->         : ^^^^^                   ^^^^^    
+>         : ^  ^^                   ^^^^^    
 >ev : DocumentEventMap[P]
 >   : ^^^^^^^^^^^^^^^^^^^
 
@@ -538,7 +538,7 @@ type Ev = { [P in K]: {
 
 function processEvents(events: Ev[]) {
 >processEvents : (events: Ev[]) => void
->              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^       ^^^^^^^^^
 >events : Ev[]
 >       : ^^^^^^^
 
@@ -551,12 +551,12 @@ function processEvents(events: Ev[]) {
         document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once });
 >document.addEventListener(event.name, (ev) => event.callback(ev), { once: event.once }) : void
 >                                                                                        : ^^^^
->document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; }
->                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>document.addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; }
+>                          : ^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    ^^   ^^        ^^                                                  ^^       ^^^                                 ^^^^^^^^^^    ^^      ^^        ^^                                  ^^       ^^^                                 ^^^^^^^^^^
 >document : Document
 >         : ^^^^^^^^
->addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions | undefined): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>addEventListener : { (type: K_1, listener: (this: Document, ev: DocumentEventMap[K_1]) => any, options?: boolean | AddEventListenerOptions): void; (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; }
+>                 : ^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    ^^   ^^        ^^                                                  ^^       ^^^                                 ^^^^^^^^^^    ^^      ^^        ^^                                  ^^       ^^^                                 ^^^^^^^^^^
 >event.name : K
 >           : ^
 >event : Ev
@@ -564,17 +564,17 @@ function processEvents(events: Ev[]) {
 >name : K
 >     : ^
 >(ev) => event.callback(ev) : (this: Document, ev: DocumentEventMap[K]) => void
->                           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                           : ^    ^^        ^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >ev : DocumentEventMap[K]
 >   : ^^^^^^^^^^^^^^^^^^^
 >event.callback(ev) : void
 >                   : ^^^^
 >event.callback : (ev: DocumentEventMap[K]) => void
->               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>               : ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >event : Ev
 >      : ^^^^^
 >callback : (ev: DocumentEventMap[K]) => void
->         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >ev : DocumentEventMap[K]
 >   : ^^^^^^^^^^^^^^^^^^^
 >{ once: event.once } : { once: boolean | undefined; }
@@ -592,7 +592,7 @@ function processEvents(events: Ev[]) {
 
 function createEventListener({ name, once = false, callback }: Ev): Ev {
 >createEventListener : ({ name, once, callback }: Ev) => Ev
->                    : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^     
+>                    : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        ^^     ^^^^^     
 >name : K
 >     : ^
 >once : boolean
@@ -600,28 +600,28 @@ function createEventListener({ name, once = fa
 >false : false
 >      : ^^^^^
 >callback : (ev: DocumentEventMap[K]) => void
->         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
     return { name, once, callback };
 >{ name, once, callback } : { name: K; once: boolean; callback: (ev: DocumentEventMap[K]) => void; }
->                         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >name : K
 >     : ^
 >once : boolean
 >     : ^^^^^^^
 >callback : (ev: DocumentEventMap[K]) => void
->         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 }
 
 const clickEvent = createEventListener({
 >clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
 >createEventListener({    name: "click",    callback: ev => console.log(ev),}) : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
->                                                                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                              :                                        ^                                                                     
 >createEventListener : ({ name, once, callback }: Ev) => Ev
->                    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                    : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        ^^     ^^^^^^^^^^
 >{    name: "click",    callback: ev => console.log(ev),} : { name: "click"; callback: (ev: MouseEvent) => void; }
->                                                         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
 
     name: "click",
 >name : "click"
@@ -631,19 +631,19 @@ const clickEvent = createEventListener({
 
     callback: ev => console.log(ev),
 >callback : (ev: MouseEvent) => void
->         : ^^^^^^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^^^^^^
 >ev => console.log(ev) : (ev: MouseEvent) => void
->                      : ^^^^^^^^^^^^^^^^^^^^^^^^
+>                      :                         
 >ev : MouseEvent
 >   : ^^^^^^^^^^
 >console.log(ev) : void
 >                : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >ev : MouseEvent
 >   : ^^^^^^^^^^
 
@@ -651,13 +651,13 @@ const clickEvent = createEventListener({
 
 const scrollEvent = createEventListener({
 >scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
 >createEventListener({    name: "scroll",    callback: ev => console.log(ev),}) : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
->                                                                               : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                               :                                         ^                                                                
 >createEventListener : ({ name, once, callback }: Ev) => Ev
->                    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                    : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        ^^     ^^^^^^^^^^
 >{    name: "scroll",    callback: ev => console.log(ev),} : { name: "scroll"; callback: (ev: Event) => void; }
->                                                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
 
     name: "scroll",
 >name : "scroll"
@@ -667,19 +667,19 @@ const scrollEvent = createEventListener({
 
     callback: ev => console.log(ev),
 >callback : (ev: Event) => void
->         : ^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^
 >ev => console.log(ev) : (ev: Event) => void
->                      : ^^^^^^^^^^^^^^^^^^^
+>                      :                    
 >ev : Event
 >   : ^^^^^
 >console.log(ev) : void
 >                : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >ev : Event
 >   : ^^^^^
 
@@ -689,67 +689,67 @@ processEvents([clickEvent, scrollEvent]);
 >processEvents([clickEvent, scrollEvent]) : void
 >                                         : ^^^^
 >processEvents : (events: Ev[]) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^       ^^^^^^^^^
 >[clickEvent, scrollEvent] : ({ readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; } | { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; })[]
->                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
 >clickEvent : { readonly name: "click"; readonly once?: boolean | undefined; readonly callback: (ev: MouseEvent) => void; }
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
 >scrollEvent : { readonly name: "scroll"; readonly once?: boolean | undefined; readonly callback: (ev: Event) => void; }
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
 
 processEvents([
 >processEvents([    { name: "click", callback: ev => console.log(ev) },    { name: "scroll", callback: ev => console.log(ev) },]) : void
 >                                                                                                                                 : ^^^^
 >processEvents : (events: Ev[]) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^       ^^^^^^^^^
 >[    { name: "click", callback: ev => console.log(ev) },    { name: "scroll", callback: ev => console.log(ev) },] : ({ name: "click"; callback: (ev: MouseEvent) => void; } | { name: "scroll"; callback: (ev: Event) => void; })[]
->                                                                                                                  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                                                                  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
 
     { name: "click", callback: ev => console.log(ev) },
 >{ name: "click", callback: ev => console.log(ev) } : { name: "click"; callback: (ev: MouseEvent) => void; }
->                                                   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
 >name : "click"
 >     : ^^^^^^^
 >"click" : "click"
 >        : ^^^^^^^
 >callback : (ev: MouseEvent) => void
->         : ^^^^^^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^^^^^^
 >ev => console.log(ev) : (ev: MouseEvent) => void
->                      : ^^^^^^^^^^^^^^^^^^^^^^^^
+>                      :                         
 >ev : MouseEvent
 >   : ^^^^^^^^^^
 >console.log(ev) : void
 >                : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >ev : MouseEvent
 >   : ^^^^^^^^^^
 
     { name: "scroll", callback: ev => console.log(ev) },
 >{ name: "scroll", callback: ev => console.log(ev) } : { name: "scroll"; callback: (ev: Event) => void; }
->                                                    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
 >name : "scroll"
 >     : ^^^^^^^^
 >"scroll" : "scroll"
 >         : ^^^^^^^^
 >callback : (ev: Event) => void
->         : ^^^^^^^^^^^^^^^^^^^
+>         : ^  ^^^^^^^^^^^^^^^^
 >ev => console.log(ev) : (ev: Event) => void
->                      : ^^^^^^^^^^^^^^^^^^^
+>                      :                    
 >ev : Event
 >   : ^^^^^
 >console.log(ev) : void
 >                : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >ev : Event
 >   : ^^^^^
 
@@ -783,13 +783,13 @@ function ff1() {
 >args : { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[P]
 >     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >{        sum: (a, b) => a + b,        concat: (a, b, c) => a + b + c    } : { sum: (a: number, b: number) => number; concat: (a: string, b: string, c: string) => string; }
->                                                                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                          : ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
 
         sum: (a, b) => a + b,
 >sum : (a: number, b: number) => number
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
 >(a, b) => a + b : (a: number, b: number) => number
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                                 
 >a : number
 >  : ^^^^^^
 >b : number
@@ -803,9 +803,9 @@ function ff1() {
 
         concat: (a, b, c) => a + b + c
 >concat : (a: string, b: string, c: string) => string
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
 >(a, b, c) => a + b + c : (a: string, b: string, c: string) => string
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                       :                                            
 >a : string
 >  : ^^^^^^
 >b : string
@@ -825,7 +825,7 @@ function ff1() {
     }
     function apply(funKey: K, ...args: ArgMap[K]) {
 >apply : (funKey: K, ...args: { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K]) => void
->      : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^ ^^^^^    ^^                                                                           ^^^^^^^^^^^^
 >funKey : K
 >       : ^
 >args : { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K]
@@ -835,7 +835,7 @@ function ff1() {
 >fn : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }[K]
 >   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >funs[funKey] : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }[K]
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>             :                                                                                            ^^^
 >funs : { concat: (a: string, b: string, c: string) => void; sum: (a: number, b: number) => void; }
 >     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >funKey : K
@@ -857,7 +857,7 @@ function ff1() {
 >apply('sum', 1, 2) : void
 >                   : ^^^^
 >apply : (funKey: K, ...args: { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K]) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^ ^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >'sum' : "sum"
 >      : ^^^^^
 >1 : 1
@@ -871,7 +871,7 @@ function ff1() {
 >apply('concat', 'str1', 'str2', 'str3' ) : void
 >                                         : ^^^^
 >apply : (funKey: K, ...args: { sum: [a: number, b: number]; concat: [a: string, b: string, c: string]; }[K]) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^ ^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >'concat' : "concat"
 >         : ^^^^^^^^
 >'str1' : "str1"
@@ -904,7 +904,7 @@ type Funcs = { [K in keyof ArgMap]: Func };
 
 function f1(funcs: Funcs, key: K, arg: ArgMap[K]) {
 >f1 : (funcs: Funcs, key: K, arg: ArgMap[K]) => void
->   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^ ^^^^^^^         ^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^^^^^     ^^     ^^   ^^ ^^   ^^         ^^^^^^^^^
 >funcs : Funcs
 >      : ^^^^^
 >key : K
@@ -927,7 +927,7 @@ function f1(funcs: Funcs, key: K, arg: ArgMap[K]) {
 
 function f2(funcs: Funcs, key: K, arg: ArgMap[K]) {
 >f2 : (funcs: Funcs, key: K, arg: ArgMap[K]) => void
->   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^ ^^^^^^^         ^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^^^^^     ^^     ^^   ^^ ^^   ^^         ^^^^^^^^^
 >funcs : Funcs
 >      : ^^^^^
 >key : K
@@ -956,7 +956,7 @@ function f2(funcs: Funcs, key: K, arg: ArgMap[K]) {
 
 function f3(funcs: Funcs, key: K, arg: ArgMap[K]) {
 >f3 : (funcs: Funcs, key: K, arg: ArgMap[K]) => void
->   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^ ^^^^^^^         ^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^^^^^     ^^     ^^   ^^ ^^   ^^         ^^^^^^^^^
 >funcs : Funcs
 >      : ^^^^^
 >key : K
@@ -985,7 +985,7 @@ function f3(funcs: Funcs, key: K, arg: ArgMap[K]) {
 
 function f4(x: Funcs[keyof ArgMap], y: Funcs[K]) {
 >f4 : (x: Funcs[keyof ArgMap], y: Funcs[K]) => void
->   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^                   ^^^^^        ^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^                   ^^ ^^        ^^^^^^^^^
 >x : Func<"b"> | Func<"a">
 >  : ^^^^^^^^^^^^^^^^^^^^^
 >y : Funcs[K]
@@ -1050,8 +1050,8 @@ const ref: MyObj = {
 };
 
 function func(k: K): MyObj[K]['name'] | undefined {
->func : (k: K) => MyObj[K]['name'] | undefined
->     : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^                            
+>func : (k: K) => MyObj[K]["name"] | undefined
+>     : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^                            
 >k : K
 >  : ^
 
@@ -1081,7 +1081,7 @@ function func(k: K): MyObj[K]['name'] | undefined {
 >myObj2 : { name: string; } | { name: number; } | undefined
 >       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >ref[k] : { name: string; } | { name: number; }
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       :                  ^^^                 
 >ref : MyObj
 >    : ^^^^^
 >k : K
@@ -1114,7 +1114,7 @@ interface Foo {
 
 function foo(prop: T, f: Required) {
 >foo : (prop: T, f: Required) => void
->    : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^             ^^^^^^^^^
+>    : ^ ^^^^^^^^^^^^^^^^    ^^ ^^ ^^             ^^^^^^^^^
 >prop : T
 >     : ^
 >f : Required
@@ -1124,7 +1124,7 @@ function foo(prop: T, f: Required) {
 >bar(f[prop]) : void
 >             : ^^^^
 >bar : (t: string) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^
 >f[prop] : Required[T]
 >        : ^^^^^^^^^^^^^^^^
 >f : Required
@@ -1135,7 +1135,7 @@ function foo(prop: T, f: Required) {
 
 declare function bar(t: string): void;
 >bar : (t: string) => void
->    : ^^^^      ^^^^^    
+>    : ^ ^^      ^^^^^    
 >t : string
 >  : ^^^^^^
 
@@ -1143,7 +1143,7 @@ declare function bar(t: string): void;
 
 declare function makeCompleteLookupMapping, Attr extends keyof T[number]>(
 >makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; }
->                          : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^    ^^^^^                                            
+>                          : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^ ^^    ^^    ^^^^^                                            
 
     ops: T, attr: Attr): { [Item in T[number]as Item[Attr]]: Item };
 >ops : T
@@ -1175,9 +1175,9 @@ const BAR_LOOKUP = makeCompleteLookupMapping(ALL_BARS, 'name');
 >BAR_LOOKUP : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; }
 >           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >makeCompleteLookupMapping(ALL_BARS, 'name') : { a: { readonly name: "a"; }; b: { readonly name: "b"; }; }
->                                            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                            :                                                            
 >makeCompleteLookupMapping : (ops: T, attr: Attr) => { [Item in T[number] as Item[Attr]]: Item; }
->                          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                          : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^ ^^    ^^    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >ALL_BARS : readonly [{ readonly name: "a"; }, { readonly name: "b"; }]
 >         : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >'name' : "name"
@@ -1246,9 +1246,9 @@ type MappedFromOriginal = SameKeys;
 
 const getStringAndNumberFromOriginalAndMapped = <
 >getStringAndNumberFromOriginalAndMapped : (original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]]
->                                        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^                  ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^                                          
+>                                        : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^        ^^                  ^^                  ^^   ^^ ^^         ^^ ^^^^^                                          
 ><  K extends KeyOfOriginal,  N extends NestedKeyOfOriginalFor>(  original: Original,  mappedFromOriginal: MappedFromOriginal,  key: K,  nestedKey: N): [Original[K][N], MappedFromOriginal[K][N]] => {  return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];} : (original: Original, mappedFromOriginal: MappedFromOriginal, key: K, nestedKey: N) => [Original[K][N], MappedFromOriginal[K][N]]
->                                                                                                                                                                                                                                                                                   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^                  ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^                                          
+>                                                                                                                                                                                                                                                                                   :                                                                                                                                                                                        
 
   K extends KeyOfOriginal,
   N extends NestedKeyOfOriginalFor
@@ -1309,7 +1309,7 @@ interface Config {
 
 function getConfigOrDefault(
 >getConfigOrDefault : (userConfig: Partial, key: T, defaultValue: Config[T]) => Config[T]
->                   : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^^ ^^^^^^^^^^^^^^^^         ^^^^^         
+>                   : ^ ^^^^^^^^^^^^^^^^^^^^^^^          ^^               ^^   ^^ ^^            ^^         ^^^^^         
 
   userConfig: Partial,
 >userConfig : Partial
@@ -1371,7 +1371,7 @@ type Foo1 = {
 
 function getValueConcrete(
 >getValueConcrete : (o: Partial, k: K) => Foo1[K] | undefined
->                 : ^ ^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^ ^^^^^                   
+>                 : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^             ^^ ^^ ^^^^^                   
 
   o: Partial,
 >o : Partial
diff --git a/tests/baselines/reference/couldNotSelectGenericOverload.types b/tests/baselines/reference/couldNotSelectGenericOverload.types
index 8483ce0a8b5b4..52fa3b45f58d5 100644
--- a/tests/baselines/reference/couldNotSelectGenericOverload.types
+++ b/tests/baselines/reference/couldNotSelectGenericOverload.types
@@ -3,7 +3,7 @@
 === couldNotSelectGenericOverload.ts ===
 function makeArray(items: T[]): T[] { return items; }
 >makeArray : (items: T[]) => T[]
->          : ^ ^^^^^^^^^   ^^^^^   
+>          : ^ ^^     ^^   ^^^^^   
 >items : T[]
 >      : ^^^
 >items : T[]
@@ -25,7 +25,7 @@ var b1G = makeArray(1, ""); // any, no error
 >makeArray(1, "") : unknown[]
 >                 : ^^^^^^^^^
 >makeArray : (items: T[]) => T[]
->          : ^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^     ^^   ^^^^^^^^
 >1 : 1
 >  : ^
 >"" : ""
@@ -37,13 +37,13 @@ var b2G = makeArray(b); // any[]
 >makeArray(b) : (string | number)[]
 >             : ^^^^^^^^^^^^^^^^^^^
 >makeArray : (items: T[]) => T[]
->          : ^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^     ^^   ^^^^^^^^
 >b : (string | number)[]
 >  : ^^^^^^^^^^^^^^^^^^^
 
 function makeArray2(items: any[]): any[] { return items; }
 >makeArray2 : (items: any[]) => any[]
->           : ^^^^^^^^     ^^^^^     
+>           : ^     ^^     ^^^^^     
 >items : any[]
 >      : ^^^^^
 >items : any[]
@@ -55,7 +55,7 @@ var b3G = makeArray2(1, ""); // error
 >makeArray2(1, "") : any[]
 >                  : ^^^^^
 >makeArray2 : (items: any[]) => any[]
->           : ^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^     ^^     ^^^^^^^^^^
 >1 : 1
 >  : ^
 >"" : ""
diff --git a/tests/baselines/reference/covariance1.types b/tests/baselines/reference/covariance1.types
index f98f75249d792..75d34dc316e0d 100644
--- a/tests/baselines/reference/covariance1.types
+++ b/tests/baselines/reference/covariance1.types
@@ -21,7 +21,7 @@ module M {
 
     export function f(y:Y) { }
 >f : (y: Y) => void
->  : ^^^^ ^^^^^^^^^
+>  : ^ ^^ ^^^^^^^^^
 >y : Y
 >  : ^
 
@@ -33,7 +33,7 @@ module M {
 >f({x:a}) : void
 >         : ^^^^
 >f : (y: Y) => void
->  : ^^^^^^^^^^^^^^
+>  : ^ ^^ ^^^^^^^^^
 >{x:a} : { x: X; }
 >      : ^^^^^^^^^
 >x : X
@@ -49,7 +49,7 @@ module M {
 >f({x:b}) : void
 >         : ^^^^
 >f : (y: Y) => void
->  : ^^^^^^^^^^^^^^
+>  : ^ ^^ ^^^^^^^^^
 >{x:b} : { x: XX; }
 >      : ^^^^^^^^^^
 >x : XX
diff --git a/tests/baselines/reference/covariantCallbacks.types b/tests/baselines/reference/covariantCallbacks.types
index f249a8f26dc58..b70af29e07fa5 100644
--- a/tests/baselines/reference/covariantCallbacks.types
+++ b/tests/baselines/reference/covariantCallbacks.types
@@ -6,9 +6,9 @@
 interface P {
     then(cb: (value: T) => void): void;
 >then : (cb: (value: T) => void) => void
->     : ^^^^^                  ^^^^^    
+>     : ^  ^^                  ^^^^^    
 >cb : (value: T) => void
->   : ^^^^^^^^ ^^^^^    
+>   : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 
@@ -24,7 +24,7 @@ interface B extends A { b: string }
 
 function f1(a: P, b: P) {
 >f1 : (a: P, b: P) => void
->   : ^^^^    ^^^^^    ^^^^^^^^^
+>   : ^ ^^    ^^ ^^    ^^^^^^^^^
 >a : P
 >  : ^^^^
 >b : P
@@ -49,7 +49,7 @@ function f1(a: P, b: P) {
 
 function f2(a: Promise, b: Promise) {
 >f2 : (a: Promise, b: Promise) => void
->   : ^^^^          ^^^^^          ^^^^^^^^^
+>   : ^ ^^          ^^ ^^          ^^^^^^^^^
 >a : Promise
 >  : ^^^^^^^^^^
 >b : Promise
@@ -75,9 +75,9 @@ function f2(a: Promise, b: Promise) {
 interface AList1 {
     forEach(cb: (item: A) => void): void;
 >forEach : (cb: (item: A) => void) => void
->        : ^^^^^                 ^^^^^    
+>        : ^  ^^                 ^^^^^    
 >cb : (item: A) => void
->   : ^^^^^^^ ^^^^^    
+>   : ^    ^^ ^^^^^    
 >item : A
 >     : ^
 }
@@ -85,16 +85,16 @@ interface AList1 {
 interface BList1 {
     forEach(cb: (item: B) => void): void;
 >forEach : (cb: (item: B) => void) => void
->        : ^^^^^                 ^^^^^    
+>        : ^  ^^                 ^^^^^    
 >cb : (item: B) => void
->   : ^^^^^^^ ^^^^^    
+>   : ^    ^^ ^^^^^    
 >item : B
 >     : ^
 }
 
 function f11(a: AList1, b: BList1) {
 >f11 : (a: AList1, b: BList1) => void
->    : ^^^^      ^^^^^      ^^^^^^^^^
+>    : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : AList1
 >  : ^^^^^^
 >b : BList1
@@ -120,9 +120,9 @@ function f11(a: AList1, b: BList1) {
 interface AList2 {
     forEach(cb: (item: A) => boolean): void;
 >forEach : (cb: (item: A) => boolean) => void
->        : ^^^^^                    ^^^^^    
+>        : ^  ^^                    ^^^^^    
 >cb : (item: A) => boolean
->   : ^^^^^^^ ^^^^^       
+>   : ^    ^^ ^^^^^       
 >item : A
 >     : ^
 }
@@ -130,16 +130,16 @@ interface AList2 {
 interface BList2 {
     forEach(cb: (item: A) => void): void;
 >forEach : (cb: (item: A) => void) => void
->        : ^^^^^                 ^^^^^    
+>        : ^  ^^                 ^^^^^    
 >cb : (item: A) => void
->   : ^^^^^^^ ^^^^^    
+>   : ^    ^^ ^^^^^    
 >item : A
 >     : ^
 }
 
 function f12(a: AList2, b: BList2) {
 >f12 : (a: AList2, b: BList2) => void
->    : ^^^^      ^^^^^      ^^^^^^^^^
+>    : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : AList2
 >  : ^^^^^^
 >b : BList2
@@ -165,9 +165,9 @@ function f12(a: AList2, b: BList2) {
 interface AList3 {
     forEach(cb: (item: A) => void): void;
 >forEach : (cb: (item: A) => void) => void
->        : ^^^^^                 ^^^^^    
+>        : ^  ^^                 ^^^^^    
 >cb : (item: A) => void
->   : ^^^^^^^ ^^^^^    
+>   : ^    ^^ ^^^^^    
 >item : A
 >     : ^
 }
@@ -175,9 +175,9 @@ interface AList3 {
 interface BList3 {
     forEach(cb: (item: A, context: any) => void): void;
 >forEach : (cb: (item: A, context: any) => void) => void
->        : ^^^^^                               ^^^^^    
+>        : ^  ^^                               ^^^^^    
 >cb : (item: A, context: any) => void
->   : ^^^^^^^ ^^^^^^^^^^^   ^^^^^    
+>   : ^    ^^ ^^       ^^   ^^^^^    
 >item : A
 >     : ^
 >context : any
@@ -186,7 +186,7 @@ interface BList3 {
 
 function f13(a: AList3, b: BList3) {
 >f13 : (a: AList3, b: BList3) => void
->    : ^^^^      ^^^^^      ^^^^^^^^^
+>    : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : AList3
 >  : ^^^^^^
 >b : BList3
@@ -212,9 +212,9 @@ function f13(a: AList3, b: BList3) {
 interface AList4 {
     forEach(cb: (item: A) => A): void;
 >forEach : (cb: (item: A) => A) => void
->        : ^^^^^              ^^^^^    
+>        : ^  ^^              ^^^^^    
 >cb : (item: A) => A
->   : ^^^^^^^ ^^^^^ 
+>   : ^    ^^ ^^^^^ 
 >item : A
 >     : ^
 }
@@ -222,16 +222,16 @@ interface AList4 {
 interface BList4 {
     forEach(cb: (item: B) => B): void;
 >forEach : (cb: (item: B) => B) => void
->        : ^^^^^              ^^^^^    
+>        : ^  ^^              ^^^^^    
 >cb : (item: B) => B
->   : ^^^^^^^ ^^^^^ 
+>   : ^    ^^ ^^^^^ 
 >item : B
 >     : ^
 }
 
 function f14(a: AList4, b: BList4) {
 >f14 : (a: AList4, b: BList4) => void
->    : ^^^^      ^^^^^      ^^^^^^^^^
+>    : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : AList4
 >  : ^^^^^^
 >b : BList4
@@ -260,7 +260,7 @@ type Bivar = { set(value: T): void }
 >Bivar : Bivar
 >      : ^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 
@@ -290,37 +290,37 @@ bs = bu;
 
 declare let bfu: Bivar<(x: unknown) => void>;
 >bfu : Bivar<(x: unknown) => void>
->    : ^^^^^^^^^^       ^^^^^    ^
+>    : ^^^^^^^ ^^       ^^^^^    ^
 >x : unknown
 >  : ^^^^^^^
 
 declare let bfs: Bivar<(x: string) => void>;
 >bfs : Bivar<(x: string) => void>
->    : ^^^^^^^^^^      ^^^^^    ^
+>    : ^^^^^^^ ^^      ^^^^^    ^
 >x : string
 >  : ^^^^^^
 
 bfu = bfs;
 >bfu = bfs : Bivar<(x: string) => void>
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^^^^^^^ ^^      ^^^^^^^^^^
 >bfu : Bivar<(x: unknown) => void>
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^^^^ ^^       ^^^^^^^^^^
 >bfs : Bivar<(x: string) => void>
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^^^^ ^^      ^^^^^^^^^^
 
 bfs = bfu;
 >bfs = bfu : Bivar<(x: unknown) => void>
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^^^^^^^ ^^       ^^^^^^^^^^
 >bfs : Bivar<(x: string) => void>
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^^^^ ^^      ^^^^^^^^^^
 >bfu : Bivar<(x: unknown) => void>
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^^^^ ^^       ^^^^^^^^^^
 
 type Bivar1 = { set(value: T): void }
 >Bivar1 : Bivar1
 >       : ^^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 
@@ -328,43 +328,43 @@ type Bivar2 = { set(value: T): void }
 >Bivar2 : Bivar2
 >       : ^^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 
 declare let b1fu: Bivar1<(x: unknown) => void>;
 >b1fu : Bivar1<(x: unknown) => void>
->     : ^^^^^^^^^^^       ^^^^^    ^
+>     : ^^^^^^^^ ^^       ^^^^^    ^
 >x : unknown
 >  : ^^^^^^^
 
 declare let b2fs: Bivar2<(x: string) => void>;
 >b2fs : Bivar2<(x: string) => void>
->     : ^^^^^^^^^^^      ^^^^^    ^
+>     : ^^^^^^^^ ^^      ^^^^^    ^
 >x : string
 >  : ^^^^^^
 
 b1fu = b2fs;
 >b1fu = b2fs : Bivar2<(x: string) => void>
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^^^^^ ^^      ^^^^^^^^^^
 >b1fu : Bivar1<(x: unknown) => void>
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^^^^^^^^ ^^       ^^^^^^^^^^
 >b2fs : Bivar2<(x: string) => void>
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^^^^^^^^ ^^      ^^^^^^^^^^
 
 b2fs = b1fu;
 >b2fs = b1fu : Bivar1<(x: unknown) => void>
->            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^^^^^ ^^       ^^^^^^^^^^
 >b2fs : Bivar2<(x: string) => void>
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^^^^^^^^ ^^      ^^^^^^^^^^
 >b1fu : Bivar1<(x: unknown) => void>
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^^^^^^^^ ^^       ^^^^^^^^^^
 
 type SetLike = { set(value: T): void, get(): T }
 >SetLike : SetLike
 >        : ^^^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 >get : () => T
@@ -372,37 +372,37 @@ type SetLike = { set(value: T): void, get(): T }
 
 declare let sx: SetLike1<(x: unknown) => void>;
 >sx : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^       ^^^^^    ^
+>   : ^^^^^^^^^^ ^^       ^^^^^    ^
 >x : unknown
 >  : ^^^^^^^
 
 declare let sy: SetLike1<(x: string) => void>;
 >sy : SetLike1<(x: string) => void>
->   : ^^^^^^^^^^^^^      ^^^^^    ^
+>   : ^^^^^^^^^^ ^^      ^^^^^    ^
 >x : string
 >  : ^^^^^^
 
 sx = sy;  // Error
 >sx = sy : SetLike1<(x: string) => void>
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 >sx : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 >sy : SetLike1<(x: string) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 
 sy = sx;
 >sy = sx : SetLike1<(x: unknown) => void>
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 >sy : SetLike1<(x: string) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 >sx : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 
 type SetLike1 = { set(value: T): void, get(): T }
 >SetLike1 : SetLike1
 >         : ^^^^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 >get : () => T
@@ -412,7 +412,7 @@ type SetLike2 = { set(value: T): void, get(): T }
 >SetLike2 : SetLike2
 >         : ^^^^^^^^^^^
 >set : (value: T) => void
->    : ^^^^^^^^ ^^^^^    
+>    : ^     ^^ ^^^^^    
 >value : T
 >      : ^
 >get : () => T
@@ -420,29 +420,29 @@ type SetLike2 = { set(value: T): void, get(): T }
 
 declare let s1: SetLike1<(x: unknown) => void>;
 >s1 : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^       ^^^^^    ^
+>   : ^^^^^^^^^^ ^^       ^^^^^    ^
 >x : unknown
 >  : ^^^^^^^
 
 declare let s2: SetLike2<(x: string) => void>;
 >s2 : SetLike2<(x: string) => void>
->   : ^^^^^^^^^^^^^      ^^^^^    ^
+>   : ^^^^^^^^^^ ^^      ^^^^^    ^
 >x : string
 >  : ^^^^^^
 
 s1 = s2;  // Error
 >s1 = s2 : SetLike2<(x: string) => void>
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 >s1 : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 >s2 : SetLike2<(x: string) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 
 s2 = s1;
 >s2 = s1 : SetLike1<(x: unknown) => void>
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 >s2 : SetLike2<(x: string) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^      ^^^^^^^^^^
 >s1 : SetLike1<(x: unknown) => void>
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^^^^^^ ^^       ^^^^^^^^^^
 
diff --git a/tests/baselines/reference/crashInResolveInterface.types b/tests/baselines/reference/crashInResolveInterface.types
index a47088b294525..391dab393244a 100644
--- a/tests/baselines/reference/crashInResolveInterface.types
+++ b/tests/baselines/reference/crashInResolveInterface.types
@@ -9,14 +9,14 @@ declare var c: C;
 interface C {
     count(countTitle?: string): void;
 >count : (countTitle?: string) => void
->      : ^^^^^^^^^^^^^^      ^^^^^    
+>      : ^          ^^^      ^^^^^    
 >countTitle : string
 >           : ^^^^^^
 }
 interface C {
     log(message?: any, ...optionalParams: any[]): void;
 >log : (message?: any, ...optionalParams: any[]) => void
->    : ^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^     ^^^^^    
+>    : ^       ^^^   ^^^^^              ^^     ^^^^^    
 >message : any
 >optionalParams : any[]
 >               : ^^^^^
@@ -26,9 +26,9 @@ interface C {
 interface Q {
     each(action: (item: T, index: number) => void): void;
 >each : (action: (item: T, index: number) => void) => void
->     : ^^^^^^^^^                                ^^^^^    
+>     : ^      ^^                                ^^^^^    
 >action : (item: T, index: number) => void
->       : ^^^^^^^ ^^^^^^^^^      ^^^^^    
+>       : ^    ^^ ^^     ^^      ^^^^^    
 >item : T
 >     : ^
 >index : number
@@ -46,23 +46,23 @@ var x = q1.each(x => c.log(x));
 >q1.each(x => c.log(x)) : void
 >                       : ^^^^
 >q1.each : (action: (item: { a: number; }, index: number) => void) => void
->        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>        : ^      ^^^    ^^^^^^^^^^^^^^^^^^     ^^      ^^^^^^^^^^^^^^^^^^
 >q1 : Q<{ a: number; }>
 >   : ^^^^^^^^^^^^^^^^^
 >each : (action: (item: { a: number; }, index: number) => void) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^      ^^^    ^^^^^^^^^^^^^^^^^^     ^^      ^^^^^^^^^^^^^^^^^^
 >x => c.log(x) : (x: { a: number; }) => void
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : { a: number; }
 >  : ^^^^^^^^^^^^^^
 >c.log(x) : void
 >         : ^^^^
 >c.log : (message?: any, ...optionalParams: any[]) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^       ^^^   ^^^^^              ^^     ^^^^^^^^^
 >c : C
 >  : ^
 >log : (message?: any, ...optionalParams: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^       ^^^   ^^^^^              ^^     ^^^^^^^^^
 >x : { a: number; }
 >  : ^^^^^^^^^^^^^^
 
diff --git a/tests/baselines/reference/crashInYieldStarInAsyncFunction.types b/tests/baselines/reference/crashInYieldStarInAsyncFunction.types
index 51a39f47b2605..83586bb6fea3b 100644
--- a/tests/baselines/reference/crashInYieldStarInAsyncFunction.types
+++ b/tests/baselines/reference/crashInYieldStarInAsyncFunction.types
@@ -6,7 +6,7 @@ var obj = {
 >obj : { [Symbol.asyncIterator](): { next(): { then(): void; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >{    [Symbol.asyncIterator]() {        return {            next() {                return { then() { } };            }        };    }} : { [Symbol.asyncIterator](): { next(): { then(): void; }; }; }
->                                                                                                                                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                                                                                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              ^^^
 
     [Symbol.asyncIterator]() {
 >[Symbol.asyncIterator] : () => { next(): { then(): void; }; }
diff --git a/tests/baselines/reference/crashInresolveReturnStatement.types b/tests/baselines/reference/crashInresolveReturnStatement.types
index ee6ceb034f99a..7e2818e2f76c3 100644
--- a/tests/baselines/reference/crashInresolveReturnStatement.types
+++ b/tests/baselines/reference/crashInresolveReturnStatement.types
@@ -33,7 +33,7 @@ class CreateCopyOfWorkItemDialog {
 }
 function createWorkItemDialog(dialogType: P0) {
 >createWorkItemDialog : (dialogType: P0) => void
->                     : ^  ^^^^^^^^^^^^^^  ^^^^^^^^^
+>                     : ^  ^^          ^^  ^^^^^^^^^
 >dialogType : P0
 >           : ^^
 }
@@ -49,7 +49,7 @@ class WITDialogs {
 >createWorkItemDialog(CreateCopyOfWorkItemDialog) : void
 >                                                 : ^^^^
 >createWorkItemDialog : (dialogType: P0) => void
->                     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                     : ^  ^^          ^^  ^^^^^^^^^
 >CreateCopyOfWorkItemDialog : typeof CreateCopyOfWorkItemDialog
 >                           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     }
diff --git a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types
index 949e4ace3e268..5606f7786c5ca 100644
--- a/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types
+++ b/tests/baselines/reference/crashInsourcePropertyIsRelatableToTargetProperty.types
@@ -19,23 +19,23 @@ class D extends C { }
 
 function foo(x: "hi", items: string[]): typeof foo;
 >foo : (x: "hi", items: string[]) => typeof foo
->    : ^^^^    ^^^^^^^^^        ^^^^^          
+>    : ^ ^^    ^^     ^^        ^^^^^          
 >x : "hi"
 >  : ^^^^
 >items : string[]
 >      : ^^^^^^^^
 >foo : (x: "hi", items: string[]) => typeof foo
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          
+>    : ^ ^^    ^^     ^^        ^^^^^          
 
 function foo(x: string, items: string[]): typeof foo {
 >foo : (x: "hi", items: string[]) => typeof foo
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^    ^^     ^^        ^^^^^^^^^^^^^^^
 >x : string
 >  : ^^^^^^
 >items : string[]
 >      : ^^^^^^^^
 >foo : (x: "hi", items: string[]) => typeof foo
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^    ^^     ^^        ^^^^^^^^^^^^^^^
 
     return null;
 }
@@ -43,9 +43,9 @@ var a: D = foo("hi", []);
 >a : D
 >  : ^
 >foo("hi", []) : (x: "hi", items: string[]) => typeof foo
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              : ^ ^^    ^^     ^^        ^^^^^^^^^^^^^^^
 >foo : (x: "hi", items: string[]) => typeof foo
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^    ^^     ^^        ^^^^^^^^^^^^^^^
 >"hi" : "hi"
 >     : ^^^^
 >[] : undefined[]
diff --git a/tests/baselines/reference/crashIntypeCheckInvocationExpression.types b/tests/baselines/reference/crashIntypeCheckInvocationExpression.types
index 6a34f6e0f847f..f8225fd4bb5a6 100644
--- a/tests/baselines/reference/crashIntypeCheckInvocationExpression.types
+++ b/tests/baselines/reference/crashIntypeCheckInvocationExpression.types
@@ -7,7 +7,7 @@ var nake;
 
 function doCompile(fileset: P0, moduleType: P1) {
 >doCompile : (fileset: P0, moduleType: P1) => any
->          : ^  ^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^
+>          : ^  ^^  ^^^^^^       ^^  ^^          ^^  ^^^^^^^^
 >fileset : P0
 >        : ^^
 >moduleType : P1
@@ -57,7 +57,7 @@ export var compileServer = task(() => {
 >doCompile(fileset, moduleType) : any
 >                                                    : ^^^
 >doCompile : (fileset: P0_1, moduleType: P1_1) => any
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^    ^^    ^^^^^^^^       ^^    ^^          ^^    ^^^^^^^^
 >fileset : any
 >        : ^^^
 >moduleType : any
diff --git a/tests/baselines/reference/crashIntypeCheckObjectCreationExpression.types b/tests/baselines/reference/crashIntypeCheckObjectCreationExpression.types
index 39e0feeb10aa9..61c0d0742f8c0 100644
--- a/tests/baselines/reference/crashIntypeCheckObjectCreationExpression.types
+++ b/tests/baselines/reference/crashIntypeCheckObjectCreationExpression.types
@@ -7,7 +7,7 @@ export class BuildWorkspaceService {
 
     public injectRequestService(service: P0) {
 >injectRequestService : (service: P0) => void
->                     : ^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
+>                     : ^  ^^^^^^^^^^       ^^  ^^^^^^^^^
 >service : P0
 >        : ^^
 
@@ -15,11 +15,11 @@ export class BuildWorkspaceService {
 >this.injectBuildService(new X(service)) : void
 >                                                : ^^^^
 >this.injectBuildService : (service: P0_1) => void
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^    ^^       ^^    ^^^^^^^^^
 >this : this
 >     : ^^^^
 >injectBuildService : (service: P0_1) => void
->                   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                   : ^    ^^       ^^    ^^^^^^^^^
 >new X(service) : any
 >               : ^^^
 >X : any
@@ -29,7 +29,7 @@ export class BuildWorkspaceService {
     }
     public injectBuildService(service: P0) {
 >injectBuildService : (service: P0) => void
->                   : ^  ^^^^^^^^^^^  ^^^^^^^^^
+>                   : ^  ^^       ^^  ^^^^^^^^^
 >service : P0
 >        : ^^
     }
diff --git a/tests/baselines/reference/crashOnMethodSignatures.types b/tests/baselines/reference/crashOnMethodSignatures.types
index 9f98cbbbaa4cb..90221c0f14367 100644
--- a/tests/baselines/reference/crashOnMethodSignatures.types
+++ b/tests/baselines/reference/crashOnMethodSignatures.types
@@ -7,7 +7,7 @@ class A {
 
     a(completed: () => any): void;
 >a : (completed: () => any) => void
->  : ^^^^^^^^^^^^         ^^^^^    
+>  : ^         ^^         ^^^^^    
 >completed : () => any
 >          : ^^^^^^   
 }
diff --git a/tests/baselines/reference/crashRegressionTest.types b/tests/baselines/reference/crashRegressionTest.types
index 547ee66294cb5..8e1067015b203 100644
--- a/tests/baselines/reference/crashRegressionTest.types
+++ b/tests/baselines/reference/crashRegressionTest.types
@@ -46,7 +46,7 @@ module MsPortal.Util.TemplateEngine {
  
         public text(value?: string): any {
 >text : (value?: string) => any
->     : ^^^^^^^^^      ^^^^^   
+>     : ^     ^^^      ^^^^^   
 >value : string
 >      : ^^^^^^
 
diff --git a/tests/baselines/reference/createArray.types b/tests/baselines/reference/createArray.types
index b86baf0045319..a51f842b4d136 100644
--- a/tests/baselines/reference/createArray.types
+++ b/tests/baselines/reference/createArray.types
@@ -54,7 +54,7 @@ var sa=new string[];
 
 function f(s:string):number { return 0;
 >f : (s: string) => number
->  : ^^^^      ^^^^^      
+>  : ^ ^^      ^^^^^      
 >s : string
 >  : ^^^^^^
 >0 : 0
@@ -80,7 +80,7 @@ if (ba[14]) {
 >f(sa[3]) : number
 >         : ^^^^^^
 >f : (s: string) => number
->  : ^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^      ^^^^^^^^^^^
 >sa[3] : any
 >      : ^^^
 >sa : any
diff --git a/tests/baselines/reference/customAsyncIterator.types b/tests/baselines/reference/customAsyncIterator.types
index 94fe242c41eee..a31d06fdf7ee9 100644
--- a/tests/baselines/reference/customAsyncIterator.types
+++ b/tests/baselines/reference/customAsyncIterator.types
@@ -12,7 +12,7 @@ class ConstantIterator implements AsyncIterator
     }
     async next(value?: T): Promise> {
 >next : (value?: T) => Promise>
->     : ^^^^^^^^^ ^^^^^                          
+>     : ^     ^^^ ^^^^^                          
 >value : T
 >      : ^
 
diff --git a/tests/baselines/reference/customEventDetail.types b/tests/baselines/reference/customEventDetail.types
index 0106043eda48c..2a6b186eb4811 100644
--- a/tests/baselines/reference/customEventDetail.types
+++ b/tests/baselines/reference/customEventDetail.types
@@ -10,11 +10,11 @@ x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' });
 >x.initCustomEvent('hello', true, true, { id: 12, name: 'hello' }) : void
 >                                                                  : ^^^^
 >x.initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void
->                  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                  : ^    ^^      ^^       ^^^       ^^          ^^^       ^^      ^^^^^^^^^^^^^^^
 >x : CustomEvent
 >  : ^^^^^^^^^^^^^^^^
 >initCustomEvent : (type: string, bubbles?: boolean, cancelable?: boolean, detail?: any) => void
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                : ^    ^^      ^^       ^^^       ^^          ^^^       ^^      ^^^^^^^^^^^^^^^
 >'hello' : "hello"
 >        : ^^^^^^^
 >true : true
diff --git a/tests/baselines/reference/cyclicGenericTypeInstantiation.types b/tests/baselines/reference/cyclicGenericTypeInstantiation.types
index 191119a1e13d8..9a1050754caa4 100644
--- a/tests/baselines/reference/cyclicGenericTypeInstantiation.types
+++ b/tests/baselines/reference/cyclicGenericTypeInstantiation.types
@@ -9,7 +9,7 @@ function foo() {
 >z : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >foo() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                                                                                                       
 >foo : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >y : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
@@ -40,7 +40,7 @@ function bar() {
 >z : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >bar() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                                                                                                       
 >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >y : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
@@ -65,7 +65,7 @@ var a = foo();
 >a : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >foo() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              :                                                                                                       
 >foo : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -73,7 +73,7 @@ var b = bar();
 >b : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >bar() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              :                                                                                                       
 >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/tests/baselines/reference/cyclicGenericTypeInstantiationInference.types b/tests/baselines/reference/cyclicGenericTypeInstantiationInference.types
index da10cb7952070..25c1c5bfc84af 100644
--- a/tests/baselines/reference/cyclicGenericTypeInstantiationInference.types
+++ b/tests/baselines/reference/cyclicGenericTypeInstantiationInference.types
@@ -9,7 +9,7 @@ function foo() {
 >z : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >foo() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                                                                                                       
 >foo : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >y : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
@@ -40,7 +40,7 @@ function bar() {
 >z : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >bar() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                :                                                                                                       
 >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >y : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
@@ -65,7 +65,7 @@ var a = foo();
 >a : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >foo() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              :                                                                                                       
 >foo : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -73,13 +73,13 @@ var b = bar();
 >b : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >bar() : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
->              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>              :                                                                                                       
 >bar : () => { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 function test(x: typeof a): void { }
 >test : (x: typeof a) => void
->     : ^^^^^^^        ^^^^^    
+>     : ^^^^ ^^        ^^^^^    
 >x : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >a : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
@@ -88,8 +88,8 @@ function test(x: typeof a): void { }
 test(b);
 >test(b) : void
 >        : ^^^^
->test : (x: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>test : (x: typeof a) => void
+>     : ^^^^ ^^        ^^^^^^^^^
 >b : { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: { y2: any; }; }; }; }; }; }; }; }; }; }; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/tests/baselines/reference/cyclicTypeInstantiation.types b/tests/baselines/reference/cyclicTypeInstantiation.types
index c4072505818fb..857d8d9f37281 100644
--- a/tests/baselines/reference/cyclicTypeInstantiation.types
+++ b/tests/baselines/reference/cyclicTypeInstantiation.types
@@ -53,7 +53,7 @@ var a = foo();
 >a : { a: string; b: any; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^
 >foo() : { a: string; b: any; }
->              : ^^^^^^^^^^^^^^^^^^^^^^
+>              :                       
 >foo : () => { a: T; b: any; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -61,7 +61,7 @@ var b = bar();
 >b : { a: string; b: any; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^
 >bar() : { a: string; b: any; }
->              : ^^^^^^^^^^^^^^^^^^^^^^
+>              :                       
 >bar : () => { a: T; b: any; }
 >    : ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/tests/baselines/reference/debuggerEmit.types b/tests/baselines/reference/debuggerEmit.types
index d8863e5772f65..3d3acd6d8bc34 100644
--- a/tests/baselines/reference/debuggerEmit.types
+++ b/tests/baselines/reference/debuggerEmit.types
@@ -5,7 +5,7 @@ var x = function () { debugger; }
 >x : () => void
 >  : ^^^^^^^^^^
 >function () { debugger; } : () => void
->                          : ^^^^^^^^^^
+>                          :           
 
 x();
 >x() : void
diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types
index e9c99eea689d7..10dcb8a3e3986 100644
--- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types
+++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration.types
@@ -3,7 +3,7 @@
 === declFileAliasUseBeforeDeclaration_test.ts ===
 export function bar(a: foo.Foo) { }
 >bar : (a: foo.Foo) => void
->    : ^^^^       ^^^^^^^^^
+>    : ^ ^^       ^^^^^^^^^
 >a : foo.Foo
 >  : ^^^^^^^
 >foo : any
diff --git a/tests/baselines/reference/declFileConstructors.types b/tests/baselines/reference/declFileConstructors.types
index 8dae0f3c6e7f6..ee58a95ca2675 100644
--- a/tests/baselines/reference/declFileConstructors.types
+++ b/tests/baselines/reference/declFileConstructors.types
@@ -49,11 +49,11 @@ export class ConstructorWithRestParamters {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
@@ -167,11 +167,11 @@ class GlobalConstructorWithRestParamters {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
diff --git a/tests/baselines/reference/declFileEmitDeclarationOnly.types b/tests/baselines/reference/declFileEmitDeclarationOnly.types
index 85d0cfb408ba2..8b8ac9c4f3b75 100644
--- a/tests/baselines/reference/declFileEmitDeclarationOnly.types
+++ b/tests/baselines/reference/declFileEmitDeclarationOnly.types
@@ -3,13 +3,13 @@
 === helloworld.ts ===
 const Log = {
 >Log : { info(msg: string): void; }
->    : ^^^^^^^^^^^^      ^^^^^^^^^^
+>    : ^^^^^^^   ^^      ^^^^^^^^^^
 >{  info(msg: string) {}} : { info(msg: string): void; }
->                         : ^^^^^^^^^^^^      ^^^^^^^^^^
+>                         : ^^^^^^^   ^^      ^^^^^^^^^^
 
   info(msg: string) {}
 >info : (msg: string) => void
->     : ^^^^^^      ^^^^^^^^^
+>     : ^   ^^      ^^^^^^^^^
 >msg : string
 >    : ^^^^^^
 }
@@ -31,11 +31,11 @@ class HelloWorld {
 >Log.info(`Hello ${this.name}`) : void
 >                               : ^^^^
 >Log.info : (msg: string) => void
->         : ^^^^^^^^^^^^^^^^^^^^^
+>         : ^   ^^      ^^^^^^^^^
 >Log : { info(msg: string): void; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^^^^   ^^      ^^^^^^^^^^
 >info : (msg: string) => void
->     : ^^^^^^^^^^^^^^^^^^^^^
+>     : ^   ^^      ^^^^^^^^^
 >`Hello ${this.name}` : string
 >                     : ^^^^^^
 >this.name : string
diff --git a/tests/baselines/reference/declFileExportAssignmentImportInternalModule.types b/tests/baselines/reference/declFileExportAssignmentImportInternalModule.types
index b003ebad8057b..39642342a034c 100644
--- a/tests/baselines/reference/declFileExportAssignmentImportInternalModule.types
+++ b/tests/baselines/reference/declFileExportAssignmentImportInternalModule.types
@@ -15,13 +15,13 @@ module m3 {
         export interface connectExport {
             use: (mod: connectModule) => connectExport;
 >use : (mod: connectModule) => connectExport
->    : ^^^^^^             ^^^^^             
+>    : ^   ^^             ^^^^^             
 >mod : connectModule
 >    : ^^^^^^^^^^^^^
 
             listen: (port: number) => void;
 >listen : (port: number) => void
->       : ^^^^^^^      ^^^^^    
+>       : ^    ^^      ^^^^^    
 >port : number
 >     : ^^^^^^
         }
diff --git a/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.types b/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.types
index 62d832227f98f..3fe34b53e8b83 100644
--- a/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.types
+++ b/tests/baselines/reference/declFileForClassWithPrivateOverloadedFunction.types
@@ -7,18 +7,18 @@ class C {
 
     private foo(x: number);
 >foo : { (x: number): any; (x: string): any; }
->    : ^^^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^      ^^^^^^^^^ ^^      ^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
     private foo(x: string);
 >foo : { (x: number): any; (x: string): any; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^      ^^^^^^^^^
+>    : ^^^ ^^      ^^^^^^^^^ ^^      ^^^^^^^^^
 >x : string
 >  : ^^^^^^
 
     private foo(x: any) { }
 >foo : { (x: number): any; (x: string): any; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^      ^^^^^^^^^ ^^      ^^^^^^^^^
 >x : any
 }
diff --git a/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.types b/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.types
index c1a1e9bb6bf8a..a7f1ca87765b2 100644
--- a/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.types
+++ b/tests/baselines/reference/declFileForInterfaceWithOptionalFunction.types
@@ -4,12 +4,12 @@
 interface I {
     foo? (x?);
 >foo : (x?: any) => any
->    : ^^^^^^^^^^^^^^^^
+>    : ^ ^^^^^^^^^^^^^^
 >x : any
 
     foo2? (x?: number): number;
 >foo2 : (x?: number) => number
->     : ^^^^^      ^^^^^      
+>     : ^ ^^^      ^^^^^      
 >x : number
 >  : ^^^^^^
 }
diff --git a/tests/baselines/reference/declFileForInterfaceWithRestParams.types b/tests/baselines/reference/declFileForInterfaceWithRestParams.types
index 98c0d729c00c7..36bbdc2cd3ce5 100644
--- a/tests/baselines/reference/declFileForInterfaceWithRestParams.types
+++ b/tests/baselines/reference/declFileForInterfaceWithRestParams.types
@@ -4,7 +4,7 @@
 interface I {
     foo(...x): typeof x;
 >foo : (...x: any[]) => typeof x
->    : ^^^^^^^^^^^^^^^^^        
+>    : ^^^^ ^^^^^^^^^^^^        
 >x : any[]
 >  : ^^^^^
 >x : any[]
@@ -12,7 +12,7 @@ interface I {
 
     foo2(a: number, ...x): typeof x;
 >foo2 : (a: number, ...x: any[]) => typeof x
->     : ^^^^      ^^^^^^^^^^^^^^^^^^        
+>     : ^ ^^      ^^^^^ ^^^^^^^^^^^^        
 >a : number
 >  : ^^^^^^
 >x : any[]
@@ -22,7 +22,7 @@ interface I {
 
     foo3(b: string, ...x: string[]): typeof x;
 >foo3 : (b: string, ...x: string[]) => typeof x
->     : ^^^^      ^^^^^^^^        ^^^^^        
+>     : ^ ^^      ^^^^^ ^^        ^^^^^        
 >b : string
 >  : ^^^^^^
 >x : string[]
diff --git a/tests/baselines/reference/declFileForTypeParameters.types b/tests/baselines/reference/declFileForTypeParameters.types
index 8b90d9651636a..b752bb95f25b8 100644
--- a/tests/baselines/reference/declFileForTypeParameters.types
+++ b/tests/baselines/reference/declFileForTypeParameters.types
@@ -11,7 +11,7 @@ class C {
 
     foo(a: T): T {
 >foo : (a: T) => T
->    : ^^^^ ^^^^^ 
+>    : ^ ^^ ^^^^^ 
 >a : T
 >  : ^
 
diff --git a/tests/baselines/reference/declFileFunctions.types b/tests/baselines/reference/declFileFunctions.types
index 61611fed95f17..11304bc130d59 100644
--- a/tests/baselines/reference/declFileFunctions.types
+++ b/tests/baselines/reference/declFileFunctions.types
@@ -9,7 +9,7 @@ export function foo() {
 /** This is comment for function signature*/
 export function fooWithParameters(/** this is comment about a*/a: string,
 >fooWithParameters : (a: string, b: number) => void
->                  : ^^^^      ^^^^^      ^^^^^^^^^
+>                  : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -26,7 +26,7 @@ export function fooWithParameters(/** this is comment about a*/a: string,
 }
 export function fooWithRestParameters(a: string, ...rests: string[]) {
 >fooWithRestParameters : (a: string, ...rests: string[]) => string
->                      : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                      : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -40,30 +40,30 @@ export function fooWithRestParameters(a: string, ...rests: string[]) {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
 }
 
 export function fooWithOverloads(a: string): string;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
 export function fooWithOverloads(a: number): number;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
 export function fooWithOverloads(a: any): any {
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
     return a;
@@ -72,13 +72,13 @@ export function fooWithOverloads(a: any): any {
 
 export function fooWithSingleOverload(a: string): string;
 >fooWithSingleOverload : (a: string) => string
->                      : ^^^^      ^^^^^      
+>                      : ^ ^^      ^^^^^      
 >a : string
 >  : ^^^^^^
 
 export function fooWithSingleOverload(a: any) {
 >fooWithSingleOverload : (a: string) => string
->                      : ^^^^^^^^^^^^^^^^^^^^^
+>                      : ^ ^^      ^^^^^^^^^^^
 >a : any
 
     return a;
@@ -87,7 +87,7 @@ export function fooWithSingleOverload(a: any) {
 
 export function fooWithTypePredicate(a: any): a is number {
 >fooWithTypePredicate : (a: any) => a is number
->                     : ^^^^   ^^^^^           
+>                     : ^ ^^   ^^^^^           
 >a : any
 
     return true;
@@ -96,7 +96,7 @@ export function fooWithTypePredicate(a: any): a is number {
 }
 export function fooWithTypePredicateAndMulitpleParams(a: any, b: any, c: any): a is number {
 >fooWithTypePredicateAndMulitpleParams : (a: any, b: any, c: any) => a is number
->                                      : ^^^^   ^^^^^   ^^^^^   ^^^^^           
+>                                      : ^ ^^   ^^ ^^   ^^ ^^   ^^^^^           
 >a : any
 >b : any
 >c : any
@@ -107,7 +107,7 @@ export function fooWithTypePredicateAndMulitpleParams(a: any, b: any, c: any): a
 }
 export function fooWithTypeTypePredicateAndGeneric(a: any): a is T {
 >fooWithTypeTypePredicateAndGeneric : (a: any) => a is T
->                                   : ^ ^^^^^   ^^^^^      
+>                                   : ^ ^^ ^^   ^^^^^      
 >a : any
 
     return true;
@@ -116,7 +116,7 @@ export function fooWithTypeTypePredicateAndGeneric(a: any): a is T {
 }
 export function fooWithTypeTypePredicateAndRestParam(a: any, ...rest): a is number {
 >fooWithTypeTypePredicateAndRestParam : (a: any, ...rest: any[]) => a is number
->                                     : ^^^^   ^^^^^^^^^^^^^^^^^^^^^           
+>                                     : ^ ^^   ^^^^^    ^^^^^^^^^^^^           
 >a : any
 >rest : any[]
 >     : ^^^^^
@@ -134,7 +134,7 @@ function nonExportedFoo() {
 /** This is comment for function signature*/
 function nonExportedFooWithParameters(/** this is comment about a*/a: string,
 >nonExportedFooWithParameters : (a: string, b: number) => void
->                             : ^^^^      ^^^^^      ^^^^^^^^^
+>                             : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -151,7 +151,7 @@ function nonExportedFooWithParameters(/** this is comment about a*/a: string,
 }
 function nonExportedFooWithRestParameters(a: string, ...rests: string[]) {
 >nonExportedFooWithRestParameters : (a: string, ...rests: string[]) => string
->                                 : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                                 : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -165,30 +165,30 @@ function nonExportedFooWithRestParameters(a: string, ...rests: string[]) {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
 }
 
 function nonExportedFooWithOverloads(a: string): string;
 >nonExportedFooWithOverloads : { (a: string): string; (a: number): number; }
->                            : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                            : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
 function nonExportedFooWithOverloads(a: number): number;
 >nonExportedFooWithOverloads : { (a: string): string; (a: number): number; }
->                            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                            : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
 function nonExportedFooWithOverloads(a: any): any {
 >nonExportedFooWithOverloads : { (a: string): string; (a: number): number; }
->                            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                            : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
     return a;
@@ -204,7 +204,7 @@ function globalfoo() {
 /** This is comment for function signature*/
 function globalfooWithParameters(/** this is comment about a*/a: string,
 >globalfooWithParameters : (a: string, b: number) => void
->                        : ^^^^      ^^^^^      ^^^^^^^^^
+>                        : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -221,7 +221,7 @@ function globalfooWithParameters(/** this is comment about a*/a: string,
 }
 function globalfooWithRestParameters(a: string, ...rests: string[]) {
 >globalfooWithRestParameters : (a: string, ...rests: string[]) => string
->                            : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                            : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -235,29 +235,29 @@ function globalfooWithRestParameters(a: string, ...rests: string[]) {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
 }
 function globalfooWithOverloads(a: string): string;
 >globalfooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
 function globalfooWithOverloads(a: number): number;
 >globalfooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
 function globalfooWithOverloads(a: any): any {
 >globalfooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
     return a;
diff --git a/tests/baselines/reference/declFileGenericType.types b/tests/baselines/reference/declFileGenericType.types
index a2c8e080eabaa..75e5a7510c1ab 100644
--- a/tests/baselines/reference/declFileGenericType.types
+++ b/tests/baselines/reference/declFileGenericType.types
@@ -15,13 +15,13 @@ export module C {
     
     export function F(x: T): A { return null; }
 >F : (x: T) => A
->  : ^ ^^^^^ ^^^^^    
+>  : ^ ^^ ^^ ^^^^^    
 >x : T
 >  : ^
 
     export function F2(x: T): C.A { return null; }
 >F2 : (x: T) => C.A
->   : ^ ^^^^^ ^^^^^        
+>   : ^ ^^ ^^ ^^^^^        
 >x : T
 >  : ^
 >C : any
@@ -31,7 +31,7 @@ export module C {
 
     export function F3(x: T): C.A[] { return null; }
 >F3 : (x: T) => C.A[]
->   : ^ ^^^^^ ^^^^^          
+>   : ^ ^^ ^^ ^^^^^          
 >x : T
 >  : ^
 >C : any
@@ -41,7 +41,7 @@ export module C {
 
     export function F4>(x: T): Array> { return null; }
 >F4 : >(x: T) => Array>
->   : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^               
+>   : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^               
 >x : T
 >  : ^
 >C : any
@@ -55,7 +55,7 @@ export module C {
 
     export function F6>(x: T): T { return null; }
 >F6 : >(x: T) => T
->   : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ 
+>   : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ 
 >x : T
 >  : ^
 
@@ -80,43 +80,43 @@ export var a: C.A;
 
 export var b = C.F;
 >b : (x: T) => C.A
->  : ^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^ ^^ ^^^^^^^^^^^^^
 >C.F : (x: T) => C.A
->    : ^^^^^^^^^^^^^^^^^^^^^
+>    :                      
 >C : typeof C
 >  : ^^^^^^^^
 >F : (x: T) => C.A
->  : ^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^ ^^ ^^^^^^^^^^^^^
 
 export var c = C.F2;
 >c : (x: T) => C.A
->  : ^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^ ^^ ^^^^^^^^^^^^^
 >C.F2 : (x: T) => C.A
->     : ^^^^^^^^^^^^^^^^^^^^^
+>     :                      
 >C : typeof C
 >  : ^^^^^^^^
 >F2 : (x: T) => C.A
->   : ^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^ ^^ ^^^^^^^^^^^^^
 
 export var d = C.F3;
 >d : (x: T) => C.A[]
->  : ^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^ ^^ ^^^^^^^^^^^^^^^
 >C.F3 : (x: T) => C.A[]
->     : ^^^^^^^^^^^^^^^^^^^^^^^
+>     :                        
 >C : typeof C
 >  : ^^^^^^^^
 >F3 : (x: T) => C.A[]
->   : ^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^ ^^ ^^^^^^^^^^^^^^^
 
 export var e = C.F4;
 >e : >(x: T) => C.A[]
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^
 >C.F4 : >(x: T) => C.A[]
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     :                                         
 >C : typeof C
 >  : ^^^^^^^^
 >F4 : >(x: T) => C.A[]
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^
 
 export var x = (new C.D>(new C.A())).val;
 >x : C.A
@@ -194,11 +194,11 @@ export interface i extends C.A { }
 
 export var j = C.F6;
 >j : >(x: T) => T
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^
 >C.F6 : >(x: T) => T
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     :                                
 >C : typeof C
 >  : ^^^^^^^^
 >F6 : >(x: T) => T
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^
 
diff --git a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types
index 3cd1298f9120c..91c1ff596bb94 100644
--- a/tests/baselines/reference/declFileImportModuleWithExportAssignment.types
+++ b/tests/baselines/reference/declFileImportModuleWithExportAssignment.types
@@ -10,7 +10,7 @@ export var a = a1;
 >a : { (): a1.connectExport; test1: a1.connectModule; test2(): a1.connectModule; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >a1 : { (): a1.connectExport; test1: a1.connectModule; test2(): a1.connectModule; }
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   :                                                                              
 
 a.test1(null, null, null);
 >a.test1(null, null, null) : void
@@ -33,13 +33,13 @@ module m2 {
     export interface connectExport {
         use: (mod: connectModule) => connectExport;
 >use : (mod: connectModule) => connectExport
->    : ^^^^^^             ^^^^^             
+>    : ^   ^^             ^^^^^             
 >mod : connectModule
 >    : ^^^^^^^^^^^^^
 
         listen: (port: number) => void;
 >listen : (port: number) => void
->       : ^^^^^^^      ^^^^^    
+>       : ^    ^^      ^^^^^    
 >port : number
 >     : ^^^^^^
     }
diff --git a/tests/baselines/reference/declFileMethods.types b/tests/baselines/reference/declFileMethods.types
index cdf2ffdf16baf..84c0767e44d3c 100644
--- a/tests/baselines/reference/declFileMethods.types
+++ b/tests/baselines/reference/declFileMethods.types
@@ -13,7 +13,7 @@ export class c1 {
     /** This is comment for function signature*/
     public fooWithParameters(/** this is comment about a*/a: string,
 >fooWithParameters : (a: string, b: number) => void
->                  : ^^^^      ^^^^^      ^^^^^^^^^
+>                  : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -30,7 +30,7 @@ export class c1 {
     }
     public fooWithRestParameters(a: string, ...rests: string[]) {
 >fooWithRestParameters : (a: string, ...rests: string[]) => string
->                      : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                      : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -44,30 +44,30 @@ export class c1 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
 
     public fooWithOverloads(a: string): string;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     public fooWithOverloads(a: number): number;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     public fooWithOverloads(a: any): any {
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -83,7 +83,7 @@ export class c1 {
     /** This is comment for function signature*/
     private privateFooWithParameters(/** this is comment about a*/a: string,
 >privateFooWithParameters : (a: string, b: number) => void
->                         : ^^^^      ^^^^^      ^^^^^^^^^
+>                         : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -100,7 +100,7 @@ export class c1 {
     }
     private privateFooWithRestParameters(a: string, ...rests: string[]) {
 >privateFooWithRestParameters : (a: string, ...rests: string[]) => string
->                             : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                             : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -114,29 +114,29 @@ export class c1 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     private privateFooWithOverloads(a: string): string;
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     private privateFooWithOverloads(a: number): number;
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                        : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     private privateFooWithOverloads(a: any): any {
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -152,7 +152,7 @@ export class c1 {
     /** This is comment for function signature*/
     static staticFooWithParameters(/** this is comment about a*/a: string,
 >staticFooWithParameters : (a: string, b: number) => void
->                        : ^^^^      ^^^^^      ^^^^^^^^^
+>                        : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -169,7 +169,7 @@ export class c1 {
     }
     static staticFooWithRestParameters(a: string, ...rests: string[]) {
 >staticFooWithRestParameters : (a: string, ...rests: string[]) => string
->                            : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                            : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -183,29 +183,29 @@ export class c1 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     static staticFooWithOverloads(a: string): string;
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     static staticFooWithOverloads(a: number): number;
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     static staticFooWithOverloads(a: any): any {
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -221,7 +221,7 @@ export class c1 {
     /** This is comment for function signature*/
     private static privateStaticFooWithParameters(/** this is comment about a*/a: string,
 >privateStaticFooWithParameters : (a: string, b: number) => void
->                               : ^^^^      ^^^^^      ^^^^^^^^^
+>                               : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -238,7 +238,7 @@ export class c1 {
     }
     private static privateStaticFooWithRestParameters(a: string, ...rests: string[]) {
 >privateStaticFooWithRestParameters : (a: string, ...rests: string[]) => string
->                                   : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                                   : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -252,29 +252,29 @@ export class c1 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     private static privateStaticFooWithOverloads(a: string): string;
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                              : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     private static privateStaticFooWithOverloads(a: number): number;
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                              : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     private static privateStaticFooWithOverloads(a: any): any {
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                              : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -291,7 +291,7 @@ export interface I1 {
     /** This is comment for function signature*/
     fooWithParameters(/** this is comment about a*/a: string,
 >fooWithParameters : (a: string, b: number) => void
->                  : ^^^^      ^^^^^      ^^^^^    
+>                  : ^ ^^      ^^ ^^      ^^^^^    
 >a : string
 >  : ^^^^^^
 
@@ -302,7 +302,7 @@ export interface I1 {
 
     fooWithRestParameters(a: string, ...rests: string[]): string;
 >fooWithRestParameters : (a: string, ...rests: string[]) => string
->                      : ^^^^      ^^^^^^^^^^^^        ^^^^^      
+>                      : ^ ^^      ^^^^^     ^^        ^^^^^      
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -310,13 +310,13 @@ export interface I1 {
 
     fooWithOverloads(a: string): string;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     fooWithOverloads(a: number): number;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 }
@@ -334,7 +334,7 @@ class c2 {
     /** This is comment for function signature*/
     public fooWithParameters(/** this is comment about a*/a: string,
 >fooWithParameters : (a: string, b: number) => void
->                  : ^^^^      ^^^^^      ^^^^^^^^^
+>                  : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -351,7 +351,7 @@ class c2 {
     }
     public fooWithRestParameters(a: string, ...rests: string[]) {
 >fooWithRestParameters : (a: string, ...rests: string[]) => string
->                      : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                      : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -365,30 +365,30 @@ class c2 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
 
     public fooWithOverloads(a: string): string;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     public fooWithOverloads(a: number): number;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     public fooWithOverloads(a: any): any {
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -404,7 +404,7 @@ class c2 {
     /** This is comment for function signature*/
     private privateFooWithParameters(/** this is comment about a*/a: string,
 >privateFooWithParameters : (a: string, b: number) => void
->                         : ^^^^      ^^^^^      ^^^^^^^^^
+>                         : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -421,7 +421,7 @@ class c2 {
     }
     private privateFooWithRestParameters(a: string, ...rests: string[]) {
 >privateFooWithRestParameters : (a: string, ...rests: string[]) => string
->                             : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                             : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -435,29 +435,29 @@ class c2 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     private privateFooWithOverloads(a: string): string;
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     private privateFooWithOverloads(a: number): number;
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                        : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     private privateFooWithOverloads(a: any): any {
 >privateFooWithOverloads : { (a: string): string; (a: number): number; }
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                        : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -473,7 +473,7 @@ class c2 {
     /** This is comment for function signature*/
     static staticFooWithParameters(/** this is comment about a*/a: string,
 >staticFooWithParameters : (a: string, b: number) => void
->                        : ^^^^      ^^^^^      ^^^^^^^^^
+>                        : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -490,7 +490,7 @@ class c2 {
     }
     static staticFooWithRestParameters(a: string, ...rests: string[]) {
 >staticFooWithRestParameters : (a: string, ...rests: string[]) => string
->                            : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                            : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -504,29 +504,29 @@ class c2 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     static staticFooWithOverloads(a: string): string;
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     static staticFooWithOverloads(a: number): number;
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     static staticFooWithOverloads(a: any): any {
 >staticFooWithOverloads : { (a: string): string; (a: number): number; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                       : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -542,7 +542,7 @@ class c2 {
     /** This is comment for function signature*/
     private static privateStaticFooWithParameters(/** this is comment about a*/a: string,
 >privateStaticFooWithParameters : (a: string, b: number) => void
->                               : ^^^^      ^^^^^      ^^^^^^^^^
+>                               : ^ ^^      ^^ ^^      ^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
@@ -559,7 +559,7 @@ class c2 {
     }
     private static privateStaticFooWithRestParameters(a: string, ...rests: string[]) {
 >privateStaticFooWithRestParameters : (a: string, ...rests: string[]) => string
->                                   : ^^^^      ^^^^^^^^^^^^        ^^^^^^^^^^^
+>                                   : ^ ^^      ^^^^^     ^^        ^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -573,29 +573,29 @@ class c2 {
 >rests.join("") : string
 >               : ^^^^^^
 >rests.join : (separator?: string) => string
->           : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>           : ^         ^^^      ^^^^^^^^^^^
 >rests : string[]
 >      : ^^^^^^^^
 >join : (separator?: string) => string
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^         ^^^      ^^^^^^^^^^^
 >"" : ""
 >   : ^^
     }
     private static privateStaticFooWithOverloads(a: string): string;
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                              : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     private static privateStaticFooWithOverloads(a: number): number;
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                              : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 
     private static privateStaticFooWithOverloads(a: any): any {
 >privateStaticFooWithOverloads : { (a: string): string; (a: number): number; }
->                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                              : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^
 >a : any
 
         return a;
@@ -612,7 +612,7 @@ interface I2 {
     /** This is comment for function signature*/
     fooWithParameters(/** this is comment about a*/a: string,
 >fooWithParameters : (a: string, b: number) => void
->                  : ^^^^      ^^^^^      ^^^^^    
+>                  : ^ ^^      ^^ ^^      ^^^^^    
 >a : string
 >  : ^^^^^^
 
@@ -623,7 +623,7 @@ interface I2 {
 
     fooWithRestParameters(a: string, ...rests: string[]): string;
 >fooWithRestParameters : (a: string, ...rests: string[]) => string
->                      : ^^^^      ^^^^^^^^^^^^        ^^^^^      
+>                      : ^ ^^      ^^^^^     ^^        ^^^^^      
 >a : string
 >  : ^^^^^^
 >rests : string[]
@@ -631,13 +631,13 @@ interface I2 {
 
     fooWithOverloads(a: string): string;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^
+>                 : ^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
     fooWithOverloads(a: number): number;
 >fooWithOverloads : { (a: string): string; (a: number): number; }
->                 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^
+>                 : ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^      ^^^
 >a : number
 >  : ^^^^^^
 }
diff --git a/tests/baselines/reference/declFileObjectLiteralWithAccessors.types b/tests/baselines/reference/declFileObjectLiteralWithAccessors.types
index b5ca4a814f99d..0c92539b809d6 100644
--- a/tests/baselines/reference/declFileObjectLiteralWithAccessors.types
+++ b/tests/baselines/reference/declFileObjectLiteralWithAccessors.types
@@ -3,7 +3,7 @@
 === declFileObjectLiteralWithAccessors.ts ===
 function /*1*/makePoint(x: number) { 
 >makePoint : (x: number) => { b: number; x: number; }
->          : ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
@@ -44,9 +44,9 @@ var /*4*/point = makePoint(2);
 >point : { b: number; x: number; }
 >      : ^^^^^^^^^^^^^^^^^^^^^^^^^
 >makePoint(2) : { b: number; x: number; }
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>             :                          
 >makePoint : (x: number) => { b: number; x: number; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >2 : 2
 >  : ^
 
diff --git a/tests/baselines/reference/declFileObjectLiteralWithOnlyGetter.types b/tests/baselines/reference/declFileObjectLiteralWithOnlyGetter.types
index 79ef5d05da435..92213ce143371 100644
--- a/tests/baselines/reference/declFileObjectLiteralWithOnlyGetter.types
+++ b/tests/baselines/reference/declFileObjectLiteralWithOnlyGetter.types
@@ -3,7 +3,7 @@
 === declFileObjectLiteralWithOnlyGetter.ts ===
 function /*1*/makePoint(x: number) { 
 >makePoint : (x: number) => { readonly x: number; }
->          : ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
@@ -23,9 +23,9 @@ var /*4*/point = makePoint(2);
 >point : { readonly x: number; }
 >      : ^^^^^^^^^^^^^^^^^^^^^^^
 >makePoint(2) : { readonly x: number; }
->             : ^^^^^^^^^^^^^^^^^^^^^^^
+>             :                        
 >makePoint : (x: number) => { readonly x: number; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >2 : 2
 >  : ^
 
diff --git a/tests/baselines/reference/declFileObjectLiteralWithOnlySetter.types b/tests/baselines/reference/declFileObjectLiteralWithOnlySetter.types
index ab6c684e9e71f..ad1bf2d29794d 100644
--- a/tests/baselines/reference/declFileObjectLiteralWithOnlySetter.types
+++ b/tests/baselines/reference/declFileObjectLiteralWithOnlySetter.types
@@ -3,7 +3,7 @@
 === declFileObjectLiteralWithOnlySetter.ts ===
 function /*1*/makePoint(x: number) { 
 >makePoint : (x: number) => { b: number; x: number; }
->          : ^^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
@@ -38,9 +38,9 @@ var /*3*/point = makePoint(2);
 >point : { b: number; x: number; }
 >      : ^^^^^^^^^^^^^^^^^^^^^^^^^
 >makePoint(2) : { b: number; x: number; }
->             : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>             :                          
 >makePoint : (x: number) => { b: number; x: number; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^ ^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >2 : 2
 >  : ^
 
diff --git a/tests/baselines/reference/declFilePrivateMethodOverloads.types b/tests/baselines/reference/declFilePrivateMethodOverloads.types
index da5a9b6c8e420..6f5a5a1b1df00 100644
--- a/tests/baselines/reference/declFilePrivateMethodOverloads.types
+++ b/tests/baselines/reference/declFilePrivateMethodOverloads.types
@@ -11,31 +11,31 @@ class c1 {
 >   : ^^
 
     private _forEachBindingContext(bindingContext: IContext, fn: (bindingContext: IContext) => void);
->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; }
->                       : ^^^^^^^^^^^^^^^^^^^        ^^^^^^                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
+>                       : ^^^              ^^        ^^  ^^                                  ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >bindingContext : IContext
 >               : ^^^^^^^^
 >fn : (bindingContext: IContext) => void
->   : ^^^^^^^^^^^^^^^^^        ^^^^^    
+>   : ^              ^^        ^^^^^    
 >bindingContext : IContext
 >               : ^^^^^^^^
 
     private _forEachBindingContext(bindingContextArray: Array, fn: (bindingContext: IContext) => void);
 >_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^                                  ^^^^^^^^^
+>                       : ^^^              ^^        ^^  ^^                                  ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >bindingContextArray : IContext[]
 >                    : ^^^^^^^^^^
 >fn : (bindingContext: IContext) => void
->   : ^^^^^^^^^^^^^^^^^        ^^^^^    
+>   : ^              ^^        ^^^^^    
 >bindingContext : IContext
 >               : ^^^^^^^^
 
     private _forEachBindingContext(context, fn: (bindingContext: IContext) => void): void {
->_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; }
->                       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>_forEachBindingContext : { (bindingContext: IContext, fn: (bindingContext: IContext) => void): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
+>                       : ^^^              ^^        ^^  ^^                                  ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >context : any
 >fn : (bindingContext: IContext) => void
->   : ^^^^^^^^^^^^^^^^^        ^^^^^    
+>   : ^              ^^        ^^^^^    
 >bindingContext : IContext
 >               : ^^^^^^^^
 
@@ -43,24 +43,24 @@ class c1 {
     }
 
     private overloadWithArityDifference(bindingContext: IContext);
->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; }
->                            : ^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
+>                            : ^^^              ^^        ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >bindingContext : IContext
 >               : ^^^^^^^^
 
     private overloadWithArityDifference(bindingContextArray: Array, fn: (bindingContext: IContext) => void);
 >overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
->                            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^                                  ^^^^^^^^^
+>                            : ^^^              ^^        ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >bindingContextArray : IContext[]
 >                    : ^^^^^^^^^^
 >fn : (bindingContext: IContext) => void
->   : ^^^^^^^^^^^^^^^^^        ^^^^^    
+>   : ^              ^^        ^^^^^    
 >bindingContext : IContext
 >               : ^^^^^^^^
 
     private overloadWithArityDifference(context): void {
->overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: IContext[], fn: (bindingContext: IContext) => void): any; }
->                            : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>overloadWithArityDifference : { (bindingContext: IContext): any; (bindingContextArray: Array, fn: (bindingContext: IContext) => void): any; }
+>                            : ^^^              ^^        ^^^^^^^^^                   ^^               ^^  ^^                                  ^^^^^^^^^
 >context : any
 
         // Function here
@@ -72,18 +72,18 @@ declare class c2 {
 
     private overload1(context, fn);
 >overload1 : (context: any, fn: any) => any
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^       ^^^^^^^  ^^^^^^^^^^^^^
 >context : any
 >fn : any
 
     private overload2(context);
 >overload2 : { (context: any): any; (context: any, fn: any): any; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^^^       ^^^^^^^^^^^^^^       ^^^^^^^  ^^^^^^^^^^^^^^
 >context : any
 
     private overload2(context, fn);
 >overload2 : { (context: any): any; (context: any, fn: any): any; }
->          : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>          : ^^^       ^^^^^^^^^^^^^^       ^^^^^^^  ^^^^^^^^^^^^^^
 >context : any
 >fn : any
 }
diff --git a/tests/baselines/reference/declFileRegressionTests.types b/tests/baselines/reference/declFileRegressionTests.types
index 6c29f55e8a323..a6959116a6958 100644
--- a/tests/baselines/reference/declFileRegressionTests.types
+++ b/tests/baselines/reference/declFileRegressionTests.types
@@ -7,7 +7,7 @@ var n = { w: null, x: '', y: () => { }, z: 32 };
 >n : { w: any; x: string; y: () => void; z: number; }
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >{ w: null, x: '', y: () => { }, z: 32 } : { w: null; x: string; y: () => void; z: number; }
->                                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                        : ^^^^^^^^^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^
 >w : null
 >  : ^^^^
 >x : string
@@ -17,7 +17,7 @@ var n = { w: null, x: '', y: () => { }, z: 32 };
 >y : () => void
 >  : ^^^^^^^^^^
 >() => { } : () => void
->          : ^^^^^^^^^^
+>          :           
 >z : number
 >  : ^^^^^^
 >32 : 32
diff --git a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types
index 426e80f357576..8340d3854f95f 100644
--- a/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types
+++ b/tests/baselines/reference/declFileRestParametersOfFunctionAndFunctionType.types
@@ -3,35 +3,35 @@
 === declFileRestParametersOfFunctionAndFunctionType.ts ===
 function f1(...args) { }
 >f1 : (...args: any[]) => void
->   : ^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^    ^^^^^^^^^^^^^^^^
 >args : any[]
 >     : ^^^^^
 
 function f2(x: (...args) => void) { }
 >f2 : (x: (...args: any) => void) => void
->   : ^^^^          ^^^         ^^^^^^^^^
+>   : ^ ^^          ^^^         ^^^^^^^^^
 >x : (...args: any[]) => void
->  : ^^^^^^^^^^^^^^^^^^^^    
+>  : ^^^^    ^^^^^^^^^^^^    
 >args : any[]
 >     : ^^^^^
 
 function f3(x: { (...args): void }) { }
 >f3 : (x: { (...args: any): void; }) => void
->   : ^^^^            ^^^          ^^^^^^^^^
+>   : ^ ^^            ^^^          ^^^^^^^^^
 >x : (...args: any[]) => void
->  : ^^^^^^^^^^^^^^^^^^^^    
+>  : ^^^^    ^^^^^^^^^^^^    
 >args : any[]
 >     : ^^^^^
 
 function f4 void>() { }
 >f4 :  void>() => void
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^
+>   : ^^^^^^^^^^^^^^^    ^^^^^^^^^^^^    ^^^^^^^^^^^
 >args : any[]
 >     : ^^^^^
 
 function f5() { }
 >f5 :  void>() => void
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    ^^^^^^^^^^^
+>   : ^^^^^^^^^^^^^^^    ^^^^^^^^^^^^    ^^^^^^^^^^^
 >args : any[]
 >     : ^^^^^
 
@@ -39,7 +39,7 @@ var f6 = () => { return [10]; }
 >f6 : () => any[]
 >   : ^^^^^^^^^^^
 >() => { return [10]; } : () => any[]
->                            : ^^^^^^^^^^^
+>                            :            
 >[10] : any[]
 >          : ^^^^^
 >10 : any
diff --git a/tests/baselines/reference/declFileTypeAnnotationParenType.types b/tests/baselines/reference/declFileTypeAnnotationParenType.types
index 96a33c2f33b4d..77e24fe3f3c21 100644
--- a/tests/baselines/reference/declFileTypeAnnotationParenType.types
+++ b/tests/baselines/reference/declFileTypeAnnotationParenType.types
@@ -26,7 +26,7 @@ var y = [() => new c()];
 >y : (() => c)[]
 >  : ^^^^^^^^^^^
 >[() => new c()] : (() => c)[]
->                : ^^^^^^^^^^^
+>                : ^       ^^^
 >() => new c() : () => c
 >              : ^^^^^^^
 >new c() : c
@@ -54,7 +54,7 @@ var l = (() => new c()) || "";
 >l : string | (() => c)
 >  : ^^^^^^^^^^^^^^^^^^
 >(() => new c()) || "" : "" | (() => c)
->                      : ^^^^^^^^^^^^^^
+>                      : ^^^^^^       ^
 >(() => new c()) : () => c
 >                : ^^^^^^^
 >() => new c() : () => c
diff --git a/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types b/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types
index 0ab06a5ebdad1..e40862df51dbe 100644
--- a/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types
+++ b/tests/baselines/reference/declFileTypeAnnotationStringLiteral.types
@@ -3,25 +3,25 @@
 === declFileTypeAnnotationStringLiteral.ts ===
 function foo(a: "hello"): number;
 >foo : { (a: "hello"): number; (a: "name"): string; (a: string): string | number; }
->    : ^^^^^^       ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^       ^^^      ^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^^^^^^^^^^
 >a : "hello"
 >  : ^^^^^^^
 
 function foo(a: "name"): string;
 >foo : { (a: "hello"): number; (a: "name"): string; (a: string): string | number; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^       ^^^^^^^^^^^^ ^^      ^^^      ^^^ ^^      ^^^^^^^^^^^^^^^^^^^^^
 >a : "name"
 >  : ^^^^^^
 
 function foo(a: string): string | number;
 >foo : { (a: "hello"): number; (a: "name"): string; (a: string): string | number; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^               ^^^
+>    : ^^^ ^^       ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^               ^^^
 >a : string
 >  : ^^^^^^
 
 function foo(a: string): string | number {
 >foo : { (a: "hello"): number; (a: "name"): string; (a: string): string | number; }
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^ ^^       ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^ ^^      ^^^^^^^^^^^^^^^^^^^^^
 >a : string
 >  : ^^^^^^
 
diff --git a/tests/baselines/reference/declFileTypeAnnotationTupleType.types b/tests/baselines/reference/declFileTypeAnnotationTupleType.types
index 63a4466c0b385..d803eda7b5700 100644
--- a/tests/baselines/reference/declFileTypeAnnotationTupleType.types
+++ b/tests/baselines/reference/declFileTypeAnnotationTupleType.types
@@ -80,5 +80,5 @@ var y = x;
 >y : [g, m.g, () => c]
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : [g, m.g, () => c]
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^^^^^^^^^^^^^^^^^^^^^^^^^       ^
 
diff --git a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types
index 0e71060fe4129..31d42350451e7 100644
--- a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types
+++ b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types
@@ -22,7 +22,7 @@ module m {
 // Object literal with everything
 var x: {
 >x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: number]: c; [n: string]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; }
->  : ^^^^^^      ^^^ ^^^^^^      ^^^         ^^^^^^^^^^      ^^^ ^^^^^^^^^^      ^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^         ^^^^^^^^         ^^^^^^^^      ^^^^^^      ^^^^^^^^   ^^^      ^^^
+>  : ^^^ ^^      ^^^ ^^^ ^^      ^^^         ^^^^^^^ ^^      ^^^ ^^^^^^^ ^^      ^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^         ^^^^^^^^         ^^^^^ ^^      ^^ ^^^      ^^^^^ ^^   ^^^      ^^^
 
     // Call signatures
     (a: number): c;
@@ -69,7 +69,7 @@ var x: {
 
     m2(a: string, b?: number, ...c: c[]): string;
 >m2 : (a: string, b?: number, ...c: c[]) => string
->   : ^^^^      ^^^^^^      ^^^^^^^^   ^^^^^      
+>   : ^ ^^      ^^ ^^^      ^^^^^ ^^   ^^^^^      
 >a : string
 >  : ^^^^^^
 >b : number
@@ -83,14 +83,14 @@ var x: {
 // Function type
 var y: (a: string) => string;
 >y : (a: string) => string
->  : ^^^^      ^^^^^      
+>  : ^ ^^      ^^^^^      
 >a : string
 >  : ^^^^^^
 
 // constructor type
 var z: new (a: string) => m.c;
 >z : new (a: string) => m.c
->  : ^^^^^^^^      ^^^^^   
+>  : ^^^^^ ^^      ^^^^^   
 >a : string
 >  : ^^^^^^
 >m : any
diff --git a/tests/baselines/reference/declFileTypeAnnotationUnionType.types b/tests/baselines/reference/declFileTypeAnnotationUnionType.types
index 2c07df3315a99..2cc2b875a0c7a 100644
--- a/tests/baselines/reference/declFileTypeAnnotationUnionType.types
+++ b/tests/baselines/reference/declFileTypeAnnotationUnionType.types
@@ -112,7 +112,7 @@ var y = new g() || new m.g() || (() => new c());
 >y : g | m.g | (() => c)
 >  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >new g() || new m.g() || (() => new c()) : g | m.g | (() => c)
->                                                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                                                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^
 >new g() || new m.g() : g | m.g
 >                                     : ^^^^^^^^^^^^^^^^^^^^^^^
 >new g() : g
diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.types b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.types
index 7b814433150a8..f8a32ebc3630e 100644
--- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.types
+++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorParameterOfFunction.types
@@ -18,13 +18,13 @@ module m {
     // Directly using names from this module
     function foo1(param: private1) {
 >foo1 : (param: private1) => void
->     : ^^^^^^^^        ^^^^^^^^^
+>     : ^     ^^        ^^^^^^^^^
 >param : private1
 >      : ^^^^^^^^
     }
     function foo2(param = new private1()) {
 >foo2 : (param?: private1) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^     ^^^^^^^^^^^^^^^^^^^^
 >param : private1
 >      : ^^^^^^^^
 >new private1() : private1
@@ -35,13 +35,13 @@ module m {
 
     export function foo3(param : private1) {
 >foo3 : (param: private1) => void
->     : ^^^^^^^^        ^^^^^^^^^
+>     : ^     ^^        ^^^^^^^^^
 >param : private1
 >      : ^^^^^^^^
     }
     export function foo4(param = new private1()) {
 >foo4 : (param?: private1) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^     ^^^^^^^^^^^^^^^^^^^^
 >param : private1
 >      : ^^^^^^^^
 >new private1() : private1
@@ -52,13 +52,13 @@ module m {
 
     function foo11(param: public1) {
 >foo11 : (param: public1) => void
->      : ^^^^^^^^       ^^^^^^^^^
+>      : ^     ^^       ^^^^^^^^^
 >param : public1
 >      : ^^^^^^^
     }
     function foo12(param = new public1()) {
 >foo12 : (param?: public1) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^     ^^^^^^^^^^^^^^^^^^^
 >param : public1
 >      : ^^^^^^^
 >new public1() : public1
@@ -69,13 +69,13 @@ module m {
 
     export function foo13(param: public1) {
 >foo13 : (param: public1) => void
->      : ^^^^^^^^       ^^^^^^^^^
+>      : ^     ^^       ^^^^^^^^^
 >param : public1
 >      : ^^^^^^^
     }
     export function foo14(param = new public1()) {
 >foo14 : (param?: public1) => void
->      : ^^^^^^^^^^^^^^^^^^^^^^^^^
+>      : ^     ^^^^^^^^^^^^^^^^^^^
 >param : public1
 >      : ^^^^^^^
 >new public1() : public1
@@ -96,7 +96,7 @@ module m {
 
     function foo111(param: m2.public2) {
 >foo111 : (param: m2.public2) => void
->       : ^^^^^^^^          ^^^^^^^^^
+>       : ^     ^^          ^^^^^^^^^
 >param : m2.public2
 >      : ^^^^^^^^^^
 >m2 : any
@@ -104,7 +104,7 @@ module m {
     }
     function foo112(param = new m2.public2()) {
 >foo112 : (param?: m2.public2) => void
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^     ^^^^^^^^^^^^^^^^^^^^^^
 >param : m2.public2
 >      : ^^^^^^^^^^
 >new m2.public2() : m2.public2
@@ -119,7 +119,7 @@ module m {
 
     export function foo113(param: m2.public2) {
 >foo113 : (param: m2.public2) => void
->       : ^^^^^^^^          ^^^^^^^^^
+>       : ^     ^^          ^^^^^^^^^
 >param : m2.public2
 >      : ^^^^^^^^^^
 >m2 : any
@@ -127,7 +127,7 @@ module m {
     }
     export function foo114(param = new m2.public2()) {
 >foo114 : (param?: m2.public2) => void
->       : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>       : ^     ^^^^^^^^^^^^^^^^^^^^^^
 >param : m2.public2
 >      : ^^^^^^^^^^
 >new m2.public2() : m2.public2
diff --git a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.types b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.types
index 724b45bc2686a..687d9d2fe53ad 100644
--- a/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.types
+++ b/tests/baselines/reference/declFileTypeAnnotationVisibilityErrorTypeLiteral.types
@@ -93,12 +93,12 @@ module m {
 >x3 : { (): m2.public1[]; [n: number]: private1; [s: string]: m2.public1; x: private1; y: m2.public1; method(): private1; }
 >   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : { (): m2.public1[]; [n: number]: private1; [s: string]: m2.public1; x: private1; y: m2.public1; method(): private1; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  :                                                                                                                      
 
     // Function type
     export var y: (a: private1) => m2.public1;
 >y : (a: private1) => m2.public1
->  : ^^^^        ^^^^^          
+>  : ^ ^^        ^^^^^          
 >a : private1
 >  : ^^^^^^^^
 >m2 : any
@@ -106,14 +106,14 @@ module m {
 
     export var y2 = y;
 >y2 : (a: private1) => m2.public1
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^ ^^        ^^^^^^^^^^^^^^^
 >y : (a: private1) => m2.public1
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  :                            
 
     // constructor type
     export var z: new (a: private1) => m2.public1;
 >z : new (a: private1) => m2.public1
->  : ^^^^^^^^        ^^^^^          
+>  : ^^^^^ ^^        ^^^^^          
 >a : private1
 >  : ^^^^^^^^
 >m2 : any
@@ -121,7 +121,7 @@ module m {
 
     export var z2 = z;
 >z2 : new (a: private1) => m2.public1
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^^^^^ ^^        ^^^^^^^^^^^^^^^
 >z : new (a: private1) => m2.public1
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  :                                
 }
diff --git a/tests/baselines/reference/declFileTypeofFunction.types b/tests/baselines/reference/declFileTypeofFunction.types
index d32fdd7c14b8f..20c61d934d44c 100644
--- a/tests/baselines/reference/declFileTypeofFunction.types
+++ b/tests/baselines/reference/declFileTypeofFunction.types
@@ -2,46 +2,46 @@
 
 === declFileTypeofFunction.ts ===
 function f(n: typeof f): string;
->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^        ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>f : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^      ^^^ ^^        ^^^^^^^^^^^^
+>n : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
+>f : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 
 function f(n: typeof g): string;
 >f : { (n: typeof f): string; (n: typeof g): string; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^      ^^^
->n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^
->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^      ^^^
+>n : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
+>g : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 
 function f() { return undefined; }
->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>f : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 >undefined : undefined
 >          : ^^^^^^^^^
 
 function g(n: typeof g): number;
->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^        ^^^      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->n : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>g : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^      ^^^ ^^        ^^^^^^^^^^^^
+>n : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
+>g : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 
 function g(n: typeof f): number;
 >g : { (n: typeof g): number; (n: typeof f): number; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^      ^^^
->n : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^^^^^^^^
->f : { (n: typeof f): string; (n: { (n: typeof g): number; (n: typeof f): number; }): string; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^      ^^^
+>n : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
+>f : { (n: typeof f): string; (n: typeof g): string; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 
 function g() { return undefined; }
->g : { (n: typeof g): number; (n: { (n: typeof f): string; (n: typeof g): string; }): number; }
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>g : { (n: typeof g): number; (n: typeof f): number; }
+>  : ^^^ ^^        ^^^^^^^^^^^^ ^^        ^^^^^^^^^^^^
 >undefined : undefined
 >          : ^^^^^^^^^
 
@@ -78,13 +78,13 @@ var foo2 = foo;
 >foo2 : () => typeof foo
 >     : ^^^^^^^^^^^^^^^^
 >foo : () => typeof foo
->    : ^^^^^^^^^^^^^^^^
+>    :                 
 
 var foo3 = function () {
 >foo3 : () => any
 >     : ^^^^^^^^^
 >function () {    return foo3;} : () => any
->                               : ^^^^^^^^^
+>                               :          
 
     return foo3;
 >foo3 : () => any
@@ -94,7 +94,7 @@ var x = () => {
 >x : () => any
 >  : ^^^^^^^^^
 >() => {    return x;} : () => any
->                      : ^^^^^^^^^
+>                      :          
 
     return x;
 >x : () => any
@@ -103,13 +103,13 @@ var x = () => {
 
 function foo5(x: number) {
 >foo5 : (x: number) => (x: number) => number
->     : ^^^^      ^^^^^^^^^      ^^^^^^^^^^^
+>     : ^ ^^      ^^^^^^ ^^      ^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
     function bar(x: number) {
 >bar : (x: number) => number
->    : ^^^^      ^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 
@@ -119,5 +119,5 @@ function foo5(x: number) {
     }
     return bar;
 >bar : (x: number) => number
->    : ^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^      ^^^^^^^^^^^
 }
diff --git a/tests/baselines/reference/declInput-2.types b/tests/baselines/reference/declInput-2.types
index 40fac1ccaba28..8d409900b284b 100644
--- a/tests/baselines/reference/declInput-2.types
+++ b/tests/baselines/reference/declInput-2.types
@@ -61,13 +61,13 @@ module M {
 
         public m26(i:I1) {}
 >m26 : (i: I1) => void
->    : ^^^^  ^^^^^^^^^
+>    : ^ ^^  ^^^^^^^^^
 >i : I1
 >  : ^^
 
         public m262(i:I2) {}
 >m262 : (i: I2) => void
->     : ^^^^  ^^^^^^^^^
+>     : ^ ^^  ^^^^^^^^^
 >i : I2
 >  : ^^
 
diff --git a/tests/baselines/reference/declInput.types b/tests/baselines/reference/declInput.types
index a1491457053fb..6171c0c1e6ab6 100644
--- a/tests/baselines/reference/declInput.types
+++ b/tests/baselines/reference/declInput.types
@@ -37,7 +37,7 @@ class bar {
 
   public h(x = 4, y = null, z = '') { x++; }
 >h : (x?: number, y?: any, z?: string) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 >4 : 4
diff --git a/tests/baselines/reference/declInput3.types b/tests/baselines/reference/declInput3.types
index a8ede8569a6b1..aa315e1301899 100644
--- a/tests/baselines/reference/declInput3.types
+++ b/tests/baselines/reference/declInput3.types
@@ -37,7 +37,7 @@ class bar {
 
   public h(x = 4, y = null, z = '') { x++; }
 >h : (x?: number, y?: any, z?: string) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 >4 : 4
diff --git a/tests/baselines/reference/declInput4.types b/tests/baselines/reference/declInput4.types
index de1476c701a97..81a836dcf0475 100644
--- a/tests/baselines/reference/declInput4.types
+++ b/tests/baselines/reference/declInput4.types
@@ -45,7 +45,7 @@ module M {
 
         public m26(i:I1) {}
 >m26 : (i: I1) => void
->    : ^^^^  ^^^^^^^^^
+>    : ^ ^^  ^^^^^^^^^
 >i : I1
 >  : ^^
     }
diff --git a/tests/baselines/reference/declarationEmitAliasExportStar.types b/tests/baselines/reference/declarationEmitAliasExportStar.types
index d7ae915e848ce..05248a4bfd27a 100644
--- a/tests/baselines/reference/declarationEmitAliasExportStar.types
+++ b/tests/baselines/reference/declarationEmitAliasExportStar.types
@@ -13,9 +13,9 @@ import * as things from "./things";
 
 export const thing2 = (param: things.ThingB) => null;
 >thing2 : (param: things.ThingB) => any
->       : ^^^^^^^^             ^^^^^^^^
+>       : ^     ^^             ^^^^^^^^
 >(param: things.ThingB) => null : (param: things.ThingB) => any
->                               : ^^^^^^^^             ^^^^^^^^
+>                               :                              
 >param : things.ThingB
 >      : ^^^^^^^^^^^^^
 >things : any
diff --git a/tests/baselines/reference/declarationEmitArrowFunctionNoRenaming.types b/tests/baselines/reference/declarationEmitArrowFunctionNoRenaming.types
index 69916a6965300..f78bad3546afd 100644
--- a/tests/baselines/reference/declarationEmitArrowFunctionNoRenaming.types
+++ b/tests/baselines/reference/declarationEmitArrowFunctionNoRenaming.types
@@ -22,11 +22,11 @@ export type BoundedInteger<
 
 export const toBoundedInteger =
 >toBoundedInteger : (bounds: { lowerBound: LowerBound; upperBound: UpperBound; }) => (n: number) => BoundedInteger
->                 : ^          ^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^^^^^^^^^^^^                                                   ^^^^^^^^^      ^^^^^                                      
+>                 : ^          ^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^^^^      ^^                                                   ^^^^^^ ^^      ^^^^^                                      
 
   (bounds: {
 >(bounds: {    lowerBound: LowerBound;    upperBound: UpperBound;  }) =>  (    n: number  ): BoundedInteger =>  // Implementation doesn't matter here    ({} as any) : (bounds: { lowerBound: LowerBound; upperBound: UpperBound; }) => (n: number) => BoundedInteger
->                                                                                                                                                                                                                                                  : ^          ^^^^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^^^^^^^^^^^^                                                   ^^^^^^^^^      ^^^^^                                      
+>                                                                                                                                                                                                                                                  :                                                                                                                                                                             
 >bounds : { lowerBound: LowerBound; upperBound: UpperBound; }
 >       : ^^^^^^^^^^^^^^          ^^^^^^^^^^^^^^          ^^^
 
@@ -41,7 +41,7 @@ export const toBoundedInteger =
   }) =>
   (
 >(    n: number  ): BoundedInteger =>  // Implementation doesn't matter here    ({} as any) : (n: number) => BoundedInteger
->                                                                                                                   : ^^^^      ^^^^^                                      
+>                                                                                                                   : ^ ^^      ^^^^^                                      
 
     n: number
 >n : number
diff --git a/tests/baselines/reference/declarationEmitBindingPatternWithReservedWord.types b/tests/baselines/reference/declarationEmitBindingPatternWithReservedWord.types
index e8913f2e7f374..ebf15eb79abee 100644
--- a/tests/baselines/reference/declarationEmitBindingPatternWithReservedWord.types
+++ b/tests/baselines/reference/declarationEmitBindingPatternWithReservedWord.types
@@ -36,9 +36,9 @@ export interface GetLocalesOptions {
 
 export const getLocales = ({
 >getLocales : ({ app, name, default: defaultLocalesConfig, config: userLocalesConfig, }: GetLocalesOptions) => ConvertLocaleConfig
->           : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    ^^^^^                      
+>           : ^ ^^^^^^^^^^^^^^^^^^^^^                                                                        ^^                    ^^^^^                      
 >({    app,    name,    default: defaultLocalesConfig,    config: userLocalesConfig = {},}: GetLocalesOptions): ConvertLocaleConfig => {    return defaultLocalesConfig;} : ({ app, name, default: defaultLocalesConfig, config: userLocalesConfig, }: GetLocalesOptions) => ConvertLocaleConfig
->                                                                                                                                                                                                     : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    ^^^^^                      
+>                                                                                                                                                                                                     :                                                                                                                                                 
 
     app,
 >app : unknown
diff --git a/tests/baselines/reference/declarationEmitBindingPatterns.types b/tests/baselines/reference/declarationEmitBindingPatterns.types
index 61bac26b98f8d..da8eed3526a8b 100644
--- a/tests/baselines/reference/declarationEmitBindingPatterns.types
+++ b/tests/baselines/reference/declarationEmitBindingPatterns.types
@@ -3,9 +3,9 @@
 === declarationEmitBindingPatterns.ts ===
 const k = ({x: z = 'y'}) => { }
 >k : ({ x: z }: { x?: string; }) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^        ^^^^^^^^^^^^^^^^^^^^^^^^^^
 >({x: z = 'y'}) => { } : ({ x: z }: { x?: string; }) => void
->                      : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>                      :               ^                    
 >x : any
 >  : ^^^
 >z : string
@@ -18,7 +18,7 @@ var a;
 
 function f({} = a, [] = a, { p: {} = a} = a) {
 >f : ({}?: any, []?: any, { p: {} }?: any) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^  ^^^^^^^^  ^^^^^^^^         ^^^^^^^^^^^^^^^
 >a : any
 >a : any
 >p : any
diff --git a/tests/baselines/reference/declarationEmitBindingPatternsFunctionExpr.types b/tests/baselines/reference/declarationEmitBindingPatternsFunctionExpr.types
index b9d9f2643c931..07191bf61e09f 100644
--- a/tests/baselines/reference/declarationEmitBindingPatternsFunctionExpr.types
+++ b/tests/baselines/reference/declarationEmitBindingPatternsFunctionExpr.types
@@ -10,9 +10,9 @@ type Named = { name: string }
 // Tempting to remove alias if unused 
 let notReferenced = ({ name: alias }: Named) => { }
 >notReferenced : ({ name: alias }: Named) => void
->              : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>              : ^               ^^     ^^^^^^^^^
 >({ name: alias }: Named) => { } : ({ name: alias }: Named) => void
->                                : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                                :                                 
 >name : any
 >     : ^^^
 >alias : string
@@ -23,9 +23,9 @@ let notReferenced = ({ name: alias }: Named) => { }
 // 1.Causes duplicate identifier if we remove alias
 const duplicateIndetifiers = ({ name: alias, name: alias2 }: Named) => { }
 >duplicateIndetifiers : ({ name: alias, name: alias2 }: Named) => void
->                     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                     : ^                             ^^     ^^^^^^^^^
 >({ name: alias, name: alias2 }: Named) => { } : ({ name: alias, name: alias2 }: Named) => void
->                                              : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                                              :                                               
 >name : any
 >     : ^^^
 >alias : string
@@ -37,9 +37,9 @@ const duplicateIndetifiers = ({ name: alias, name: alias2 }: Named) => { }
 
 const duplicateIndetifiers2 = (name: string, { name: alias }: Named) => { }
 >duplicateIndetifiers2 : (name: string, { name: alias }: Named) => void
->                      : ^^^^^^^      ^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                      : ^    ^^      ^^               ^^     ^^^^^^^^^
 >(name: string, { name: alias }: Named) => { } : (name: string, { name: alias }: Named) => void
->                                              : ^^^^^^^      ^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                                              :                                               
 >name : string
 >     : ^^^^^^
 >name : any
@@ -49,9 +49,9 @@ const duplicateIndetifiers2 = (name: string, { name: alias }: Named) => { }
 
 const duplicateIndetifiers3 = ({ name: alias }: Named, { name: alias2 }: Named) => { }
 >duplicateIndetifiers3 : ({ name: alias }: Named, { name: alias2 }: Named) => void
->                      : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                      : ^               ^^     ^^                ^^     ^^^^^^^^^
 >({ name: alias }: Named, { name: alias2 }: Named) => { } : ({ name: alias }: Named, { name: alias2 }: Named) => void
->                                                         : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                                                         :                                                          
 >name : any
 >     : ^^^
 >alias : string
@@ -70,9 +70,9 @@ let value = "";
 // 2.Can change in meaning for typeof value if we remove alias
 const shadowedVariable = ({ value: alias }: { value: string }): typeof value => value;
 >shadowedVariable : ({ value: alias }: { value: string; }) => typeof value
->                 : ^^^^^^^^^^^^^^^^^^^                  ^^^^^            
+>                 : ^                ^^                  ^^^^^            
 >({ value: alias }: { value: string }): typeof value => value : ({ value: alias }: { value: string; }) => typeof value
->                                                             : ^^^^^^^^^^^^^^^^^^^                  ^^^^^            
+>                                                             :                                                       
 >value : any
 >      : ^^^
 >alias : string
diff --git a/tests/baselines/reference/declarationEmitBindingPatternsUnused.types b/tests/baselines/reference/declarationEmitBindingPatternsUnused.types
index 6e08fceecc18b..e90602d71a152 100644
--- a/tests/baselines/reference/declarationEmitBindingPatternsUnused.types
+++ b/tests/baselines/reference/declarationEmitBindingPatternsUnused.types
@@ -12,7 +12,7 @@ type Named = { name: string }
 // 1.Causes duplicate identifier if we remove alias
 function duplicateIndetifiers({ name: alias, name: alias2 }: Named) { }
 >duplicateIndetifiers : ({ name: alias, name: alias2 }: Named) => void
->                     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                     : ^                             ^^     ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -24,7 +24,7 @@ function duplicateIndetifiers({ name: alias, name: alias2 }: Named) { }
 
 function duplicateIndetifiers2(name: string, { name: alias }: Named) { }
 >duplicateIndetifiers2 : (name: string, { name: alias }: Named) => void
->                      : ^^^^^^^      ^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                      : ^    ^^      ^^               ^^     ^^^^^^^^^
 >name : string
 >     : ^^^^^^
 >name : any
@@ -34,7 +34,7 @@ function duplicateIndetifiers2(name: string, { name: alias }: Named) { }
 
 function duplicateIndetifiers3({ name: alias }: Named, { name: alias2 }: Named) { }
 >duplicateIndetifiers3 : ({ name: alias }: Named, { name: alias2 }: Named) => void
->                      : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>                      : ^               ^^     ^^                ^^     ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -53,7 +53,7 @@ let value = "";
 // 2.Can change in meaning for typeof value if we remove alias
 function shadowedVariable({ value: alias }: { value: string }): typeof value { return value }
 >shadowedVariable : ({ value: alias }: { value: string; }) => typeof value
->                 : ^^^^^^^^^^^^^^^^^^^                  ^^^^^            
+>                 : ^                ^^                  ^^^^^            
 >value : any
 >      : ^^^
 >alias : string
@@ -67,7 +67,7 @@ function shadowedVariable({ value: alias }: { value: string }): typeof value { r
 
 function notReferenced({ name: alias }: Named) {
 >notReferenced : ({ name: alias }: Named) => void
->              : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>              : ^               ^^     ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -76,7 +76,7 @@ function notReferenced({ name: alias }: Named) {
 }
 function notReferencedNestedAlias({ p: { name: alias } }: { p: Named }) {
 >notReferencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => void
->                         : ^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^
+>                         : ^                      ^^             ^^^^^^^^^
 >p : any
 >  : ^^^
 >name : any
@@ -88,7 +88,7 @@ function notReferencedNestedAlias({ p: { name: alias } }: { p: Named }) {
 }
 function notReferencedArrayAlias([a, b, { name: alias }]: Named[]) {
 >notReferencedArrayAlias : ([a, b, { name: alias }]: Named[]) => void
->                        : ^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^
+>                        : ^                       ^^       ^^^^^^^^^
 >a : Named
 >  : ^^^^^
 >b : Named
@@ -101,7 +101,7 @@ function notReferencedArrayAlias([a, b, { name: alias }]: Named[]) {
 
 function referencedInCode({ name: alias }: Named) {
 >referencedInCode : ({ name: alias }: Named) => string
->                 : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^
+>                 : ^               ^^     ^^^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -114,7 +114,7 @@ function referencedInCode({ name: alias }: Named) {
 
 function referencedInSignarture({ name: alias }: Named): typeof alias {
 >referencedInSignarture : ({ name: alias }: Named) => typeof alias
->                       : ^^^^^^^^^^^^^^^^^^     ^^^^^            
+>                       : ^               ^^     ^^^^^            
 >name : any
 >     : ^^^
 >alias : string
@@ -129,7 +129,7 @@ function referencedInSignarture({ name: alias }: Named): typeof alias {
 
 function referencedInSignartureKeyword({ function: alias }: { function: string }): typeof alias {
 >referencedInSignartureKeyword : ({ function: alias }: { function: string; }) => typeof alias
->                              : ^^^^^^^^^^^^^^^^^^^^^^                     ^^^^^            
+>                              : ^                   ^^                     ^^^^^            
 >function : any
 >         : ^^^
 >alias : string
@@ -146,7 +146,7 @@ function referencedInSignartureKeyword({ function: alias }: { function: string }
 
 function referencedInInferredType({ name: alias }: Named) {
 >referencedInInferredType : ({ name: alias }: Named) => { name: typeof alias; }
->                         : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^            ^^^
+>                         : ^               ^^     ^^^^^^^^^^^^^            ^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -169,7 +169,7 @@ function referencedInInferredType({ name: alias }: Named) {
 
 function referencedInNestedFunction({ name: alias }: Named) {
 >referencedInNestedFunction : ({ name: alias }: Named) => (p: typeof alias) => void
->                           : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^            ^^^^^^^^^
+>                           : ^               ^^     ^^^^^^ ^^            ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -177,7 +177,7 @@ function referencedInNestedFunction({ name: alias }: Named) {
 
     return function(p: typeof alias) {
 >function(p: typeof alias) {    } : (p: typeof alias) => void
->                                 : ^^^^            ^^^^^^^^^
+>                                 : ^ ^^            ^^^^^^^^^
 >p : string
 >  : ^^^^^^
 >alias : string
@@ -188,7 +188,7 @@ function referencedInNestedFunction({ name: alias }: Named) {
 
 function referencedNestedAlias({ p: { name: alias } }: { p: Named }): typeof alias {
 >referencedNestedAlias : ({ p: { name: alias } }: { p: Named; }) => typeof alias
->                      : ^^^^^^^^^^^^^^^^^^^^^^^^^             ^^^^^            
+>                      : ^                      ^^             ^^^^^            
 >p : any
 >  : ^^^
 >name : any
@@ -207,7 +207,7 @@ function referencedNestedAlias({ p: { name: alias } }: { p: Named }): typeof ali
 
 function referencedArrayAlias([a, b, { name: alias }]: Named[]): typeof alias {
 >referencedArrayAlias : ([a, b, { name: alias }]: Named[]) => typeof alias
->                     : ^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^^            
+>                     : ^                       ^^       ^^^^^            
 >a : Named
 >  : ^^^^^
 >b : Named
@@ -247,17 +247,17 @@ class NotReferencedClass {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
     }
 	m({ name: alias }: Named) {
 >m : ({ name: alias }: Named) => void
->  : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>  : ^               ^^     ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -267,11 +267,11 @@ class NotReferencedClass {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
     }
@@ -291,11 +291,11 @@ class ReferencedInCodeClas {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
 	}
@@ -311,17 +311,17 @@ class ReferencedInCodeClas {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
     }
 	m({ name: alias }: Named) {
 >m : ({ name: alias }: Named) => void
->  : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^^
+>  : ^               ^^     ^^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -331,11 +331,11 @@ class ReferencedInCodeClas {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
     }
@@ -359,11 +359,11 @@ class ReferencedInSignartureClass {
 >console.log(alias) : void
 >                   : ^^^^
 >console.log : (...data: any[]) => void
->            : ^^^^^^^^^^^^^^^^^^^^^^^^
+>            : ^^^^    ^^     ^^^^^^^^^
 >console : Console
 >        : ^^^^^^^
 >log : (...data: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^^^^    ^^     ^^^^^^^^^
 >alias : string
 >      : ^^^^^^
 	}
@@ -382,7 +382,7 @@ class ReferencedInSignartureClass {
     }
 	mReturnType({ name: alias }: Named): typeof alias {
 >mReturnType : ({ name: alias }: Named) => typeof alias
->            : ^^^^^^^^^^^^^^^^^^     ^^^^^            
+>            : ^               ^^     ^^^^^            
 >name : any
 >     : ^^^
 >alias : string
@@ -396,7 +396,7 @@ class ReferencedInSignartureClass {
     }
 	mRerturnTypeNested({ name: alias }: Named): NonNullable {
 >mRerturnTypeNested : ({ name: alias }: Named) => NonNullable
->                   : ^^^^^^^^^^^^^^^^^^     ^^^^^                         
+>                   : ^               ^^     ^^^^^                         
 >name : any
 >     : ^^^
 >alias : string
@@ -410,7 +410,7 @@ class ReferencedInSignartureClass {
     }
     mParameter({ name: alias }: Named, p: typeof alias) {
 >mParameter : ({ name: alias }: Named, p: typeof alias) => any
->           : ^^^^^^^^^^^^^^^^^^     ^^^^^            ^^^^^^^^
+>           : ^               ^^     ^^ ^^            ^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -428,7 +428,7 @@ class ReferencedInSignartureClass {
 
 let notReferencedFnType: ({ name: alias }: Named) => void;
 >notReferencedFnType : ({ name: alias }: Named) => void
->                    : ^^^^^^^^^^^^^^^^^^     ^^^^^    
+>                    : ^               ^^     ^^^^^    
 >name : any
 >     : ^^^
 >alias : string
@@ -436,7 +436,7 @@ let notReferencedFnType: ({ name: alias }: Named) => void;
 
 let referencedInSignartureReturnTypeFnType: ({ name: alias }: Named) => typeof alias;
 >referencedInSignartureReturnTypeFnType : ({ name: alias }: Named) => typeof alias
->                                       : ^^^^^^^^^^^^^^^^^^     ^^^^^            
+>                                       : ^               ^^     ^^^^^            
 >name : any
 >     : ^^^
 >alias : string
@@ -446,7 +446,7 @@ let referencedInSignartureReturnTypeFnType: ({ name: alias }: Named) => typeof a
 
 let referencedInSignartureParamTypeFnType: ({ name: alias }: Named, p: typeof alias) => void;
 >referencedInSignartureParamTypeFnType : ({ name: alias }: Named, p: typeof alias) => void
->                                      : ^^^^^^^^^^^^^^^^^^     ^^^^^            ^^^^^    
+>                                      : ^               ^^     ^^ ^^            ^^^^^    
 >name : any
 >     : ^^^
 >alias : string
@@ -458,7 +458,7 @@ let referencedInSignartureParamTypeFnType: ({ name: alias }: Named, p: typeof al
 
 let notReferencedCtorType: new ({ name: alias }: Named) => void;
 >notReferencedCtorType : new ({ name: alias }: Named) => void
->                      : ^^^^^^^^^^^^^^^^^^^^^^     ^^^^^    
+>                      : ^^^^^               ^^     ^^^^^    
 >name : any
 >     : ^^^
 >alias : string
@@ -466,7 +466,7 @@ let notReferencedCtorType: new ({ name: alias }: Named) => void;
 
 let referencedInSignartureReturnTypeCtorType: new ({ name: alias }: Named) => typeof alias;
 >referencedInSignartureReturnTypeCtorType : new ({ name: alias }: Named) => typeof alias
->                                         : ^^^^^^^^^^^^^^^^^^^^^^     ^^^^^            
+>                                         : ^^^^^               ^^     ^^^^^            
 >name : any
 >     : ^^^
 >alias : string
@@ -476,7 +476,7 @@ let referencedInSignartureReturnTypeCtorType: new ({ name: alias }: Named) => ty
 
 let referencedInSignartureParamTypeCtorType: new  ({ name: alias }: Named, p: typeof alias) => void;
 >referencedInSignartureParamTypeCtorType : new ({ name: alias }: Named, p: typeof alias) => void
->                                        : ^^^^^^^^^^^^^^^^^^^^^^     ^^^^^            ^^^^^    
+>                                        : ^^^^^               ^^     ^^ ^^            ^^^^^    
 >name : any
 >     : ^^^
 >alias : string
@@ -510,7 +510,7 @@ interface NotReferencedInterface {
 
 	m({ name: alias }: Named);
 >m : ({ name: alias }: Named) => any
->  : ^^^^^^^^^^^^^^^^^^     ^^^^^^^^
+>  : ^               ^^     ^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
@@ -568,7 +568,7 @@ interface ReferencedInSignartureInterface {
 
 	mReturnType({ name: alias }: Named): typeof alias;
 >mReturnType : ({ name: alias }: Named) => typeof alias
->            : ^^^^^^^^^^^^^^^^^^     ^^^^^            
+>            : ^               ^^     ^^^^^            
 >name : any
 >     : ^^^
 >alias : string
@@ -578,7 +578,7 @@ interface ReferencedInSignartureInterface {
 
 	mRerturnTypeNested({ name: alias }: Named): NonNullable;
 >mRerturnTypeNested : ({ name: alias }: Named) => NonNullable
->                   : ^^^^^^^^^^^^^^^^^^     ^^^^^                         
+>                   : ^               ^^     ^^^^^                         
 >name : any
 >     : ^^^
 >alias : string
@@ -588,7 +588,7 @@ interface ReferencedInSignartureInterface {
 
     mParameter({ name: alias }: Named, p: typeof alias);
 >mParameter : ({ name: alias }: Named, p: typeof alias) => any
->           : ^^^^^^^^^^^^^^^^^^     ^^^^^            ^^^^^^^^
+>           : ^               ^^     ^^ ^^            ^^^^^^^^
 >name : any
 >     : ^^^
 >alias : string
diff --git a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.types b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.types
index cd05cce259fb3..1cc60624aa67b 100644
--- a/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.types
+++ b/tests/baselines/reference/declarationEmitBundleWithAmbientReferences.types
@@ -31,7 +31,7 @@ export const build = (): DatastoreResult.T => {
 >build : () => DatastoreResult.T
 >      : ^^^^^^                         
 >(): DatastoreResult.T => {	return null;} : () => DatastoreResult.T
->                                                 : ^^^^^^                         
+>                                                 :                                
 >DatastoreResult : any
 >                : ^^^
 
diff --git a/tests/baselines/reference/declarationEmitClassMemberNameConflict.types b/tests/baselines/reference/declarationEmitClassMemberNameConflict.types
index 223bd595d6465..185a6f7838d06 100644
--- a/tests/baselines/reference/declarationEmitClassMemberNameConflict.types
+++ b/tests/baselines/reference/declarationEmitClassMemberNameConflict.types
@@ -11,11 +11,11 @@ export class C1 {
 
     bar() {
 >bar : () => (t: typeof C1) => void
->    : ^^^^^^^^^^         ^^^^^^^^^
+>    : ^^^^^^^ ^^         ^^^^^^^^^
 
         return function (t: typeof C1) {
 >function (t: typeof C1) {        } : (t: typeof C1) => void
->                                   : ^^^^         ^^^^^^^^^
+>                                   : ^ ^^         ^^^^^^^^^
 >t : typeof C1
 >  : ^^^^^^^^^
 >C1 : typeof C1
@@ -34,11 +34,11 @@ export class C2 {
 
     bar() {
 >bar : () => (t: typeof C2) => void
->    : ^^^^^^^^^^         ^^^^^^^^^
+>    : ^^^^^^^ ^^         ^^^^^^^^^
 
         return function (t: typeof C2) {
 >function (t: typeof C2) {        } : (t: typeof C2) => void
->                                   : ^^^^         ^^^^^^^^^
+>                                   : ^ ^^         ^^^^^^^^^
 >t : typeof C2
 >  : ^^^^^^^^^
 >C2 : typeof C2
@@ -60,11 +60,11 @@ export class C3 {
 
     bar() {
 >bar : () => (t: typeof C3) => void
->    : ^^^^^^^^^^         ^^^^^^^^^
+>    : ^^^^^^^ ^^         ^^^^^^^^^
 
         return function (t: typeof C3) {
 >function (t: typeof C3) {        } : (t: typeof C3) => void
->                                   : ^^^^         ^^^^^^^^^
+>                                   : ^ ^^         ^^^^^^^^^
 >t : typeof C3
 >  : ^^^^^^^^^
 >C3 : typeof C3
@@ -84,11 +84,11 @@ export class C4 {
 
     bar() {
 >bar : () => (t: typeof C4) => void
->    : ^^^^^^^^^^         ^^^^^^^^^
+>    : ^^^^^^^ ^^         ^^^^^^^^^
 
         return function (t: typeof C4) {
 >function (t: typeof C4) {        } : (t: typeof C4) => void
->                                   : ^^^^         ^^^^^^^^^
+>                                   : ^ ^^         ^^^^^^^^^
 >t : typeof C4
 >  : ^^^^^^^^^
 >C4 : typeof C4
diff --git a/tests/baselines/reference/declarationEmitClassMemberWithComputedPropertyName.types b/tests/baselines/reference/declarationEmitClassMemberWithComputedPropertyName.types
index cfea4d3537eae..5cdd4de96b477 100644
--- a/tests/baselines/reference/declarationEmitClassMemberWithComputedPropertyName.types
+++ b/tests/baselines/reference/declarationEmitClassMemberWithComputedPropertyName.types
@@ -136,7 +136,7 @@ export const t1 = Foo[k1];
 >t1 : () => number
 >   : ^^^^^^^^^^^^
 >Foo[k1] : () => number
->        : ^^^^^^^^^^^^
+>        :             
 >Foo : typeof Foo
 >    : ^^^^^^^^^^
 >k1 : unique symbol
@@ -146,7 +146,7 @@ export const t2 = new Foo()[k1];
 >t2 : () => string
 >   : ^^^^^^^^^^^^
 >new Foo()[k1] : () => string
->              : ^^^^^^^^^^^^
+>              :             
 >new Foo() : Foo
 >          : ^^^
 >Foo : typeof Foo
@@ -158,7 +158,7 @@ export const t3 = Foo[k2];
 >t3 : () => number
 >   : ^^^^^^^^^^^^
 >Foo[k2] : () => number
->        : ^^^^^^^^^^^^
+>        :             
 >Foo : typeof Foo
 >    : ^^^^^^^^^^
 >k2 : "foo"
@@ -168,7 +168,7 @@ export const t4 = new Foo()[k2];
 >t4 : () => string
 >   : ^^^^^^^^^^^^
 >new Foo()[k2] : () => string
->              : ^^^^^^^^^^^^
+>              :             
 >new Foo() : Foo
 >          : ^^^
 >Foo : typeof Foo
@@ -180,7 +180,7 @@ export const t5 = Foo.m1;
 >t5 : () => void
 >   : ^^^^^^^^^^
 >Foo.m1 : () => void
->       : ^^^^^^^^^^
+>       :           
 >Foo : typeof Foo
 >    : ^^^^^^^^^^
 >m1 : () => void
@@ -190,7 +190,7 @@ export const t6 = new Foo().m1;
 >t6 : () => void
 >   : ^^^^^^^^^^
 >new Foo().m1 : () => void
->             : ^^^^^^^^^^
+>             :           
 >new Foo() : Foo
 >          : ^^^
 >Foo : typeof Foo
diff --git a/tests/baselines/reference/declarationEmitClassMixinLocalClassDeclaration.types b/tests/baselines/reference/declarationEmitClassMixinLocalClassDeclaration.types
index 4c3a12f6bf880..04b49f429b70e 100644
--- a/tests/baselines/reference/declarationEmitClassMixinLocalClassDeclaration.types
+++ b/tests/baselines/reference/declarationEmitClassMixinLocalClassDeclaration.types
@@ -52,7 +52,7 @@ export class XmlElement2 extends Mixin(
 
     (base: AnyConstructor) => {
 >(base: AnyConstructor) => {        class XmlElement2 extends base {            num: number = 0        }        return XmlElement2;    } : (base: AnyConstructor) => typeof XmlElement2
->                                                                                                                                                           : ^^^^^^^                                 ^^^^^^^^^^^^^^^^^^^^^^^
+>                                                                                                                                                           : ^    ^^                                 ^^^^^^^^^^^^^^^^^^^^^^^
 >base : AnyConstructor
 >     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >Base : typeof Base
diff --git a/tests/baselines/reference/declarationEmitComputedNameCausesImportToBePainted.types b/tests/baselines/reference/declarationEmitComputedNameCausesImportToBePainted.types
index eb53c6b19d9a5..75c6cf9d656a0 100644
--- a/tests/baselines/reference/declarationEmitComputedNameCausesImportToBePainted.types
+++ b/tests/baselines/reference/declarationEmitComputedNameCausesImportToBePainted.types
@@ -40,9 +40,9 @@ export const context: Context = {
 
 export const withContext = ({ [Key]: value }: Context) => value;
 >withContext : ({ [Key]: value }: Context) => string
->            : ^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^^^
+>            : ^                ^^       ^^^^^^^^^^^
 >({ [Key]: value }: Context) => value : ({ [Key]: value }: Context) => string
->                                     : ^^^^^^^^^^^^^^^^^^^       ^^^^^^^^^^^
+>                                     :                                      
 >Key : unique symbol
 >    : ^^^^^^^^^^^^^
 >value : string
diff --git a/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.types b/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.types
index 4482e30ed8135..f3fa3ebf72f09 100644
--- a/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.types
+++ b/tests/baselines/reference/declarationEmitDefaultExportWithStaticAssignment.types
@@ -98,7 +98,7 @@ C.A = A;
 >A : () => void
 >  : ^^^^^^^^^^
 >A : () => void
->  : ^^^^^^^^^^
+>  :           
 
 C.B = B;
 >C.B = B : () => void
@@ -110,5 +110,5 @@ C.B = B;
 >B : () => void
 >  : ^^^^^^^^^^
 >B : () => void
->  : ^^^^^^^^^^
+>  :           
 
diff --git a/tests/baselines/reference/declarationEmitDestructuring1.types b/tests/baselines/reference/declarationEmitDestructuring1.types
index eabcf999eb549..e8f401e6d90eb 100644
--- a/tests/baselines/reference/declarationEmitDestructuring1.types
+++ b/tests/baselines/reference/declarationEmitDestructuring1.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuring1.ts ===
 function foo([a, b, c]: [string, string, string]): void { }
 >foo : ([a, b, c]: [string, string, string]) => void
->    : ^^^^^^^^^^^^                        ^^^^^    
+>    : ^         ^^                        ^^^^^    
 >a : string
 >  : ^^^^^^
 >b : string
@@ -13,7 +13,7 @@ function foo([a, b, c]: [string, string, string]): void { }
 
 function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void { }
 >far : ([a, [b], [[c]]]: [number, boolean[], string[][]]) => void
->    : ^^^^^^^^^^^^^^^^^^                               ^^^^^    
+>    : ^               ^^                               ^^^^^    
 >a : number
 >  : ^^^^^^
 >b : boolean
@@ -23,7 +23,7 @@ function far([a, [b], [[c]]]: [number, boolean[], string[][]]): void { }
 
 function bar({a1, b1, c1}: { a1: number, b1: boolean, c1: string }): void { }
 >bar : ({ a1, b1, c1 }: { a1: number; b1: boolean; c1: string; }) => void
->    : ^^^^^^^^^^^^^^^^^                                        ^^^^^    
+>    : ^              ^^                                        ^^^^^    
 >a1 : number
 >   : ^^^^^^
 >b1 : boolean
@@ -39,7 +39,7 @@ function bar({a1, b1, c1}: { a1: number, b1: boolean, c1: string }): void { }
 
 function baz({a2, b2: {b1, c1}}: { a2: number, b2: { b1: boolean, c1: string } }): void { } 
 >baz : ({ a2, b2: { b1, c1 } }: { a2: number; b2: { b1: boolean; c1: string; }; }) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^                                                 ^^^^^    
+>    : ^                      ^^                                                 ^^^^^    
 >a2 : number
 >   : ^^^^^^
 >b2 : any
diff --git a/tests/baselines/reference/declarationEmitDestructuring2.types b/tests/baselines/reference/declarationEmitDestructuring2.types
index 03192445e9cd4..16ce0eecf9f3e 100644
--- a/tests/baselines/reference/declarationEmitDestructuring2.types
+++ b/tests/baselines/reference/declarationEmitDestructuring2.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuring2.ts ===
 function f({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]} = { x: 10, y: [2, 4, 6, 8] }) { }
 >f : ({ x, y: [a, b, c, d] }?: { x?: number; y?: [number, number, number, number]; }) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 >10 : 10
@@ -49,7 +49,7 @@ function f({x = 10, y: [a, b, c, d] = [1, 2, 3, 4]} = { x: 10, y: [2, 4, 6, 8] }
 
 function g([a, b, c, d] = [1, 2, 3, 4]) { }
 >g : ([a, b, c, d]?: [number, number, number, number]) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >a : number
 >  : ^^^^^^
 >b : number
@@ -71,7 +71,7 @@ function g([a, b, c, d] = [1, 2, 3, 4]) { }
 
 function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ }
 >h : ([a, [b], [[c]], { x, y: [a, b, c], z: { a1, b1 } }]: [any, [any], [[any]], { x?: number; y: [any, any, any]; z: { a1: any; b1: any; }; }]) => void
->  : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>  : ^                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
@@ -99,7 +99,7 @@ function h([a, [b], [[c]], {x = 10, y: [a, b, c], z: {a1, b1}}]){ }
 
 function h1([a, [b], [[c]], {x = 10, y = [1, 2, 3], z: {a1, b1}}]){ }
 >h1 : ([a, [b], [[c]], { x, y, z: { a1, b1 } }]: [any, [any], [[any]], { x?: number; y?: number[]; z: { a1: any; b1: any; }; }]) => void
->   : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>   : ^                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >a : any
 >  : ^^^
 >b : any
diff --git a/tests/baselines/reference/declarationEmitDestructuring3.types b/tests/baselines/reference/declarationEmitDestructuring3.types
index 57af66c946823..de6fb7f0138de 100644
--- a/tests/baselines/reference/declarationEmitDestructuring3.types
+++ b/tests/baselines/reference/declarationEmitDestructuring3.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuring3.ts ===
 function bar([x, z, ...w]) { }
 >bar : ([x, z, ...w]: [any, any, ...any[]]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : any
 >  : ^^^
 >z : any
@@ -13,7 +13,7 @@ function bar([x, z, ...w]) { }
 
 function foo([x, ...y] = [1, "string", true]) { }
 >foo : ([x, ...y]?: [number, string, boolean]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >x : number
 >  : ^^^^^^
 >y : [string, boolean]
diff --git a/tests/baselines/reference/declarationEmitDestructuring4.types b/tests/baselines/reference/declarationEmitDestructuring4.types
index 35069aa95065c..9a15dd05bb8f1 100644
--- a/tests/baselines/reference/declarationEmitDestructuring4.types
+++ b/tests/baselines/reference/declarationEmitDestructuring4.types
@@ -6,11 +6,11 @@
 // the similar binding pattern users' have written
 function baz([]) { }
 >baz : ([]: any[]) => void
->    : ^^^^^^^^^^^^^^^^^^^
+>    : ^  ^^^^^^^^^^^^^^^^
 
 function baz1([] = [1,2,3]) { }
 >baz1 : ([]?: number[]) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^  ^^^^^^^^^^^^^^^^^^^^
 >[1,2,3] : number[]
 >        : ^^^^^^^^
 >1 : 1
@@ -22,7 +22,7 @@ function baz1([] = [1,2,3]) { }
 
 function baz2([[]] = [[1,2,3]]) { }
 >baz2 : ([[]]?: [number[]]) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^    ^^^^^^^^^^^^^^^^^^^^^^
 >[[1,2,3]] : [number[]]
 >          : ^^^^^^^^^^
 >[1,2,3] : number[]
@@ -36,11 +36,11 @@ function baz2([[]] = [[1,2,3]]) { }
 
 function baz3({}) { }
 >baz3 : ({}: {}) => void
->     : ^^^^^^^^^^^^^^^^
+>     : ^  ^^^^^^^^^^^^^
 
 function baz4({} = { x: 10 }) { }
 >baz4 : ({}?: { x: number; }) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^  ^^^^^^^^^^^^^^^^^^^^^^^^^^
 >{ x: 10 } : { x: number; }
 >          : ^^^^^^^^^^^^^^
 >x : number
diff --git a/tests/baselines/reference/declarationEmitDestructuring5.types b/tests/baselines/reference/declarationEmitDestructuring5.types
index fcf0e1b745457..b83b89dd0ed22 100644
--- a/tests/baselines/reference/declarationEmitDestructuring5.types
+++ b/tests/baselines/reference/declarationEmitDestructuring5.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuring5.ts ===
 function baz([, z, , ]) { }
 >baz : ([, z, ,]: [any, any, any?]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 > : undefined
 > : ^^^^^^^^^
 >z : any
@@ -13,7 +13,7 @@ function baz([, z, , ]) { }
 
 function foo([, b, ]: [any, any]): void { }
 >foo : ([, b,]: [any, any]) => void
->    : ^^^^^^^^^          ^^^^^    
+>    : ^      ^^          ^^^^^    
 > : undefined
 > : ^^^^^^^^^
 >b : any
@@ -21,7 +21,7 @@ function foo([, b, ]: [any, any]): void { }
 
 function bar([z, , , ]) { }
 >bar : ([z, , ,]: [any, any?, any?]) => void
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >z : any
 >  : ^^^
 > : undefined
@@ -31,7 +31,7 @@ function bar([z, , , ]) { }
 
 function bar1([z, , , ] = [1, 3, 4, 6, 7]) { }
 >bar1 : ([z, , ,]?: [number, number, number, number, number]) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >z : number
 >  : ^^^^^^
 > : undefined
@@ -53,7 +53,7 @@ function bar1([z, , , ] = [1, 3, 4, 6, 7]) { }
 
 function bar2([,,z, , , ]) { }
 >bar2 : ([, , z, , ,]: [any, any, any, any?, any?]) => void
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 > : undefined
 > : ^^^^^^^^^
 > : undefined
diff --git a/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types
index 26a282f20aa5c..13c562a1c79d6 100644
--- a/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types
+++ b/tests/baselines/reference/declarationEmitDestructuringOptionalBindingParametersInOverloads.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuringOptionalBindingParametersInOverloads.ts ===
 function foo([x, y, z] ?: [string, number, boolean]);
 >foo : ([x, y, z]?: [string, number, boolean]) => any
->    : ^^^^^^^^^^^^^                         ^^^^^^^^
+>    : ^         ^^^                         ^^^^^^^^
 >x : string
 >  : ^^^^^^
 >y : number
@@ -13,14 +13,14 @@ function foo([x, y, z] ?: [string, number, boolean]);
 
 function foo(...rest: any[]) {
 >foo : ([x, y, z]?: [string, number, boolean]) => any
->    : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^         ^^^                         ^^^^^^^^
 >rest : any[]
 >     : ^^^^^
 }
 
 function foo2( { x, y, z }?: { x: string; y: number; z: boolean });
 >foo2 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any
->     : ^^^^^^^^^^^^^^^                                     ^^^^^^^^
+>     : ^           ^^^                                     ^^^^^^^^
 >x : string
 >  : ^^^^^^
 >y : number
@@ -36,7 +36,7 @@ function foo2( { x, y, z }?: { x: string; y: number; z: boolean });
 
 function foo2(...rest: any[]) {
 >foo2 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => any
->     : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+>     : ^           ^^^                                     ^^^^^^^^
 >rest : any[]
 >     : ^^^^^
 
diff --git a/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.types b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.types
index 3dd76327b0cdd..3564af838ba51 100644
--- a/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.types
+++ b/tests/baselines/reference/declarationEmitDestructuringWithOptionalBindingParameters.types
@@ -3,7 +3,7 @@
 === declarationEmitDestructuringWithOptionalBindingParameters.ts ===
 function foo([x,y,z]?: [string, number, boolean]) {
 >foo : ([x, y, z]?: [string, number, boolean]) => void
->    : ^^^^^^^^^^^^^                         ^^^^^^^^^
+>    : ^         ^^^                         ^^^^^^^^^
 >x : string
 >  : ^^^^^^
 >y : number
@@ -13,7 +13,7 @@ function foo([x,y,z]?: [string, number, boolean]) {
 }
 function foo1( { x, y, z }?: { x: string; y: number; z: boolean }) {
 >foo1 : ({ x, y, z }?: { x: string; y: number; z: boolean; }) => void
->     : ^^^^^^^^^^^^^^^                                     ^^^^^^^^^
+>     : ^           ^^^                                     ^^^^^^^^^
 >x : string
 >  : ^^^^^^
 >y : number
diff --git a/tests/baselines/reference/declarationEmitDistributiveConditionalWithInfer.types b/tests/baselines/reference/declarationEmitDistributiveConditionalWithInfer.types
index b576a5ec88a50..38d0508dca071 100644
--- a/tests/baselines/reference/declarationEmitDistributiveConditionalWithInfer.types
+++ b/tests/baselines/reference/declarationEmitDistributiveConditionalWithInfer.types
@@ -4,9 +4,9 @@
 // This function's type is changed on declaration
 export const fun = (
 >fun : (subFun: () => FlatArray[]) => void
->    : ^^^^^^^^^                                                                                   ^^^^^^^^^
+>    : ^      ^^                                                                                   ^^^^^^^^^
 >(    subFun: ()        => FlatArray[]) => { } : (subFun: () => FlatArray[]) => void
->                                                                                                                : ^^^^^^^^^                                                                                   ^^^^^^^^^
+>                                                                                                                :                                                                                                      
 
     subFun: ()
 >subFun : () => FlatArray[]
diff --git a/tests/baselines/reference/declarationEmitDoesNotUseReexportedNamespaceAsLocal.types b/tests/baselines/reference/declarationEmitDoesNotUseReexportedNamespaceAsLocal.types
index ec42c1c2cb758..96f3ad1eaa8f4 100644
--- a/tests/baselines/reference/declarationEmitDoesNotUseReexportedNamespaceAsLocal.types
+++ b/tests/baselines/reference/declarationEmitDoesNotUseReexportedNamespaceAsLocal.types
@@ -12,7 +12,7 @@ export const x = add(import("./sub"));
 >add(import("./sub")) : typeof import("sub")
 >                     : ^^^^^^^^^^^^^^^^^^^^
 >add : (x: Promise) => T
->    : ^^^^^^^^^^^^^^^^^^^^^^^
+>    : ^ ^^ ^^          ^^^^^^
 >import("./sub") : Promise
 >                : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 >"./sub" : "./sub"
@@ -24,7 +24,7 @@ export * as Q from "./sub";
 
 declare function add(x: Promise): T;
 >add : (x: Promise) => T
->    : ^ ^^^^^          ^^^^^ 
+>    : ^ ^^ ^^          ^^^^^ 
 >x : Promise
 >  : ^^^^^^^^^^
 
diff --git a/tests/baselines/reference/declarationEmitDuplicateParameterDestructuring.types b/tests/baselines/reference/declarationEmitDuplicateParameterDestructuring.types
index fb20aab5fbf77..b052f908ca619 100644
--- a/tests/baselines/reference/declarationEmitDuplicateParameterDestructuring.types
+++ b/tests/baselines/reference/declarationEmitDuplicateParameterDestructuring.types
@@ -3,9 +3,9 @@
 === declarationEmitDuplicateParameterDestructuring.ts ===
 export const fn1 = ({ prop: a, prop: b }: { prop: number }) => a + b;
 >fn1 : ({ prop: a, prop: b }: { prop: number; }) => number
->    : ^^^^^^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^
+>    : ^                    ^^                 ^^^^^^^^^^^
 >({ prop: a, prop: b }: { prop: number }) => a + b : ({ prop: a, prop: b }: { prop: number; }) => number
->                                                  : ^^^^^^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^
+>                                                  :                                                    
 >prop : any
 >     : ^^^
 >a : number
@@ -25,9 +25,9 @@ export const fn1 = ({ prop: a, prop: b }: { prop: number }) => a + b;
 
 export const fn2 = ({ prop: a }: { prop: number }, { prop: b }: { prop: number }) => a + b;
 >fn2 : ({ prop: a }: { prop: number; }, { prop: b }: { prop: number; }) => number
->    : ^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^                 ^^^^^^^^^^^
+>    : ^           ^^                 ^^           ^^                 ^^^^^^^^^^^
 >({ prop: a }: { prop: number }, { prop: b }: { prop: number }) => a + b : ({ prop: a }: { prop: number; }, { prop: b }: { prop: number; }) => number
->                                                                        : ^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^                 ^^^^^^^^^^^
+>                                                                        :                                                                           
 >prop : any
 >     : ^^^
 >a : number
diff --git a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.types b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.types
index 94cc8ea8b8170..2d03454750e94 100644
--- a/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.types
+++ b/tests/baselines/reference/declarationEmitExpandoWithGenericConstraint.types
@@ -23,9 +23,9 @@ export interface Rect

{ export const Point = (x: number, y: number): Point => ({ x, y }); >Point : { (x: number, y: number): Point; zero(): Point; } -> : ^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >(x: number, y: number): Point => ({ x, y }) : { (x: number, y: number): Point; zero(): Point; } -> : ^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : number @@ -41,9 +41,9 @@ export const Point = (x: number, y: number): Point => ({ x, y }); export const Rect =

(a: p, b: p): Rect

=> ({ a, b }); >Rect :

(a: p, b: p) => Rect

-> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >

(a: p, b: p): Rect

=> ({ a, b }) :

(a: p, b: p) => Rect

(props: Readonly

) { >foo :

(props: Readonly

) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >props : Readonly

> : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/destructuringWithGenericParameter.types b/tests/baselines/reference/destructuringWithGenericParameter.types index 57d8714842a6b..3c2a5a8f2bade 100644 --- a/tests/baselines/reference/destructuringWithGenericParameter.types +++ b/tests/baselines/reference/destructuringWithGenericParameter.types @@ -14,7 +14,7 @@ var genericObject = new GenericClass<{ greeting: string }>(); >genericObject : GenericClass<{ greeting: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >new GenericClass<{ greeting: string }>() : GenericClass<{ greeting: string; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^ >GenericClass : typeof GenericClass > : ^^^^^^^^^^^^^^^^^^^ >greeting : string @@ -22,11 +22,11 @@ var genericObject = new GenericClass<{ greeting: string }>(); function genericFunction(object: GenericClass, callback: (payload: T) => void) { >genericFunction : (object: GenericClass, callback: (payload: T) => void) => void -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >object : GenericClass > : ^^^^^^^^^^^^^^^ >callback : (payload: T) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >payload : T > : ^ @@ -34,7 +34,7 @@ function genericFunction(object: GenericClass, callback: (payload: T) => v >callback(object.payload) : void > : ^^^^ >callback : (payload: T) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >object.payload : T > : ^ >object : GenericClass @@ -47,11 +47,11 @@ genericFunction(genericObject, ({greeting}) => { >genericFunction(genericObject, ({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string}) : void > : ^^^^ >genericFunction : (object: GenericClass, callback: (payload: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >genericObject : GenericClass<{ greeting: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({greeting}) => { var s = greeting.toLocaleLowerCase(); // Greeting should be of type string} : ({ greeting }: { greeting: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >greeting : string > : ^^^^^^ @@ -61,11 +61,11 @@ genericFunction(genericObject, ({greeting}) => { >greeting.toLocaleLowerCase() : string > : ^^^^^^ >greeting.toLocaleLowerCase : (locales?: string | string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >greeting : string > : ^^^^^^ >toLocaleLowerCase : (locales?: string | string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ }); diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers.types b/tests/baselines/reference/destructuringWithLiteralInitializers.types index f6ce2b98f545d..127033b4f888a 100644 --- a/tests/baselines/reference/destructuringWithLiteralInitializers.types +++ b/tests/baselines/reference/destructuringWithLiteralInitializers.types @@ -4,7 +4,7 @@ // (arg: { x: any, y: any }) => void function f1({ x, y }) { } >f1 : ({ x, y }: { x: any; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -14,7 +14,7 @@ f1({ x: 1, y: 1 }); >f1({ x: 1, y: 1 }) : void > : ^^^^ >f1 : ({ x, y }: { x: any; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -29,7 +29,7 @@ f1({ x: 1, y: 1 }); // (arg: { x: any, y?: number }) => void function f2({ x, y = 0 }) { } >f2 : ({ x, y }: { x: any; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : number @@ -41,7 +41,7 @@ f2({ x: 1 }); >f2({ x: 1 }) : void > : ^^^^ >f2 : ({ x, y }: { x: any; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -53,7 +53,7 @@ f2({ x: 1, y: 1 }); >f2({ x: 1, y: 1 }) : void > : ^^^^ >f2 : ({ x, y }: { x: any; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -68,7 +68,7 @@ f2({ x: 1, y: 1 }); // (arg: { x?: number, y?: number }) => void function f3({ x = 0, y = 0 }) { } >f3 : ({ x, y }: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -82,7 +82,7 @@ f3({}); >f3({}) : void > : ^^^^ >f3 : ({ x, y }: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -90,7 +90,7 @@ f3({ x: 1 }); >f3({ x: 1 }) : void > : ^^^^ >f3 : ({ x, y }: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -102,7 +102,7 @@ f3({ y: 1 }); >f3({ y: 1 }) : void > : ^^^^ >f3 : ({ x, y }: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ y: 1 } : { y: number; } > : ^^^^^^^^^^^^^^ >y : number @@ -114,7 +114,7 @@ f3({ x: 1, y: 1 }); >f3({ x: 1, y: 1 }) : void > : ^^^^ >f3 : ({ x, y }: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -129,7 +129,7 @@ f3({ x: 1, y: 1 }); // (arg?: { x: number, y: number }) => void function f4({ x, y } = { x: 0, y: 0 }) { } >f4 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -149,13 +149,13 @@ f4(); >f4() : void > : ^^^^ >f4 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f4({ x: 1, y: 1 }); >f4({ x: 1, y: 1 }) : void > : ^^^^ >f4 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -170,7 +170,7 @@ f4({ x: 1, y: 1 }); // (arg?: { x: number, y?: number }) => void function f5({ x, y = 0 } = { x: 0 }) { } >f5 : ({ x, y }?: { x: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -188,13 +188,13 @@ f5(); >f5() : void > : ^^^^ >f5 : ({ x, y }?: { x: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f5({ x: 1 }); >f5({ x: 1 }) : void > : ^^^^ >f5 : ({ x, y }?: { x: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -206,7 +206,7 @@ f5({ x: 1, y: 1 }); >f5({ x: 1, y: 1 }) : void > : ^^^^ >f5 : ({ x, y }?: { x: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -221,7 +221,7 @@ f5({ x: 1, y: 1 }); // (arg?: { x?: number, y?: number }) => void function f6({ x = 0, y = 0 } = {}) { } >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -237,13 +237,13 @@ f6(); >f6() : void > : ^^^^ >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f6({}); >f6({}) : void > : ^^^^ >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -251,7 +251,7 @@ f6({ x: 1 }); >f6({ x: 1 }) : void > : ^^^^ >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -263,7 +263,7 @@ f6({ y: 1 }); >f6({ y: 1 }) : void > : ^^^^ >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ y: 1 } : { y: number; } > : ^^^^^^^^^^^^^^ >y : number @@ -275,7 +275,7 @@ f6({ x: 1, y: 1 }); >f6({ x: 1, y: 1 }) : void > : ^^^^ >f6 : ({ x, y }?: { x?: number; y?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1, y: 1 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -290,7 +290,7 @@ f6({ x: 1, y: 1 }); // (arg?: { a: { x?: number, y?: number } }) => void function f7({ a: { x = 0, y = 0 } } = { a: {} }) { } >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >x : number @@ -312,13 +312,13 @@ f7(); >f7() : void > : ^^^^ >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f7({ a: {} }); >f7({ a: {} }) : void > : ^^^^ >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: {} } : { a: {}; } > : ^^^^^^^^^^ >a : {} @@ -330,7 +330,7 @@ f7({ a: { x: 1 } }); >f7({ a: { x: 1 } }) : void > : ^^^^ >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { x: 1 } } : { a: { x: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; } @@ -346,7 +346,7 @@ f7({ a: { y: 1 } }); >f7({ a: { y: 1 } }) : void > : ^^^^ >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { y: 1 } } : { a: { y: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^ >a : { y: number; } @@ -362,7 +362,7 @@ f7({ a: { x: 1, y: 1 } }); >f7({ a: { x: 1, y: 1 } }) : void > : ^^^^ >f7 : ({ a: { x, y } }?: { a: { x?: number; y?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { x: 1, y: 1 } } : { a: { x: number; y: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; y: number; } @@ -381,7 +381,7 @@ f7({ a: { x: 1, y: 1 } }); // (arg: [any, any]) => void function g1([x, y]) { } >g1 : ([x, y]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -391,7 +391,7 @@ g1([1, 1]); >g1([1, 1]) : void > : ^^^^ >g1 : ([x, y]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >[1, 1] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -402,7 +402,7 @@ g1([1, 1]); // (arg: [number, number]) => void function g2([x = 0, y = 0]) { } >g2 : ([x, y]: [number?, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -416,7 +416,7 @@ g2([1, 1]); >g2([1, 1]) : void > : ^^^^ >g2 : ([x, y]: [number?, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 1] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -427,7 +427,7 @@ g2([1, 1]); // (arg?: [number, number]) => void function g3([x, y] = [0, 0]) { } >g3 : ([x, y]?: [number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -443,13 +443,13 @@ g3(); >g3() : void > : ^^^^ >g3 : ([x, y]?: [number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ g3([1, 1]); >g3([1, 1]) : void > : ^^^^ >g3 : ([x, y]?: [number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 1] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -460,7 +460,7 @@ g3([1, 1]); // (arg?: [number, number]) => void function g4([x, y = 0] = [0]) { } >g4 : ([x, y]?: [number, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -476,13 +476,13 @@ g4(); >g4() : void > : ^^^^ >g4 : ([x, y]?: [number, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ g4([1, 1]); >g4([1, 1]) : void > : ^^^^ >g4 : ([x, y]?: [number, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 1] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -493,7 +493,7 @@ g4([1, 1]); // (arg?: [number, number]) => void function g5([x = 0, y = 0] = []) { } >g5 : ([x, y]?: [number?, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -509,13 +509,13 @@ g5(); >g5() : void > : ^^^^ >g5 : ([x, y]?: [number?, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ g5([1, 1]); >g5([1, 1]) : void > : ^^^^ >g5 : ([x, y]?: [number?, number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 1] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/destructuringWithLiteralInitializers2.types b/tests/baselines/reference/destructuringWithLiteralInitializers2.types index 468421317461c..d6c7ab798dff4 100644 --- a/tests/baselines/reference/destructuringWithLiteralInitializers2.types +++ b/tests/baselines/reference/destructuringWithLiteralInitializers2.types @@ -3,7 +3,7 @@ === destructuringWithLiteralInitializers2.ts === function f00([x, y]) {} >f00 : ([x, y]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -11,7 +11,7 @@ function f00([x, y]) {} function f01([x, y] = []) {} >f01 : ([x, y]?: [any?, any?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -21,7 +21,7 @@ function f01([x, y] = []) {} function f02([x, y] = [1]) {} >f02 : ([x, y]?: [number, any?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : any @@ -33,7 +33,7 @@ function f02([x, y] = [1]) {} function f03([x, y] = [1, 'foo']) {} >f03 : ([x, y]?: [number, string]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -47,7 +47,7 @@ function f03([x, y] = [1, 'foo']) {} function f10([x = 0, y]) {} >f10 : ([x, y]: [number | undefined, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -57,7 +57,7 @@ function f10([x = 0, y]) {} function f11([x = 0, y] = []) {} >f11 : ([x, y]?: [(number | undefined)?, any?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -69,7 +69,7 @@ function f11([x = 0, y] = []) {} function f12([x = 0, y] = [1]) {} >f12 : ([x, y]?: [number, any?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -83,7 +83,7 @@ function f12([x = 0, y] = [1]) {} function f13([x = 0, y] = [1, 'foo']) {} >f13 : ([x, y]?: [number, string]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -99,7 +99,7 @@ function f13([x = 0, y] = [1, 'foo']) {} function f20([x = 0, y = 'bar']) {} >f20 : ([x, y]: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -111,7 +111,7 @@ function f20([x = 0, y = 'bar']) {} function f21([x = 0, y = 'bar'] = []) {} >f21 : ([x, y]?: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -125,7 +125,7 @@ function f21([x = 0, y = 'bar'] = []) {} function f22([x = 0, y = 'bar'] = [1]) {} >f22 : ([x, y]?: [number, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -141,7 +141,7 @@ function f22([x = 0, y = 'bar'] = [1]) {} function f23([x = 0, y = 'bar'] = [1, 'foo']) {} >f23 : ([x, y]?: [number, string]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -167,7 +167,7 @@ declare const sx: string | undefined; function f30([x = 0, y = 'bar']) {} >f30 : ([x, y]: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -179,7 +179,7 @@ function f30([x = 0, y = 'bar']) {} function f31([x = 0, y = 'bar'] = []) {} >f31 : ([x, y]?: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -193,7 +193,7 @@ function f31([x = 0, y = 'bar'] = []) {} function f32([x = 0, y = 'bar'] = [nx]) {} >f32 : ([x, y]?: [number | undefined, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -209,7 +209,7 @@ function f32([x = 0, y = 'bar'] = [nx]) {} function f33([x = 0, y = 'bar'] = [nx, sx]) {} >f33 : ([x, y]?: [number | undefined, string | undefined]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -227,7 +227,7 @@ function f33([x = 0, y = 'bar'] = [nx, sx]) {} function f40([x = 0, y = 'bar']) {} >f40 : ([x, y]: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -239,7 +239,7 @@ function f40([x = 0, y = 'bar']) {} function f41([x = 0, y = 'bar'] = []) {} >f41 : ([x, y]?: [(number | undefined)?, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -253,7 +253,7 @@ function f41([x = 0, y = 'bar'] = []) {} function f42([x = 0, y = 'bar'] = [sx]) {} >f42 : ([x, y]?: [string | undefined, (string | undefined)?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >0 : 0 @@ -269,7 +269,7 @@ function f42([x = 0, y = 'bar'] = [sx]) {} function f43([x = 0, y = 'bar'] = [sx, nx]) {} >f43 : ([x, y]?: [string | undefined, number | undefined]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/destructuringWithNumberLiteral.types b/tests/baselines/reference/destructuringWithNumberLiteral.types index 5567ac99b6b69..e724d37223d9b 100644 --- a/tests/baselines/reference/destructuringWithNumberLiteral.types +++ b/tests/baselines/reference/destructuringWithNumberLiteral.types @@ -3,7 +3,7 @@ === destructuringWithNumberLiteral.ts === var { toExponential } = 0; >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types index 50bb760781f27..642d7cc729527 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor1.types @@ -22,7 +22,7 @@ class TestFile { >getMessage : () => string > : ^^^^^^^^^^^^ >() => message + this.name : () => string -> : ^^^^^^^^^^^^ +> : >message + this.name : string > : ^^^^^^ >message : string diff --git a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types index e2b73e232c455..db0e50dcbf0a9 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types +++ b/tests/baselines/reference/detachedCommentAtStartOfConstructor2.types @@ -24,7 +24,7 @@ class TestFile { >getMessage : () => string > : ^^^^^^^^^^^^ >() => message + this.name : () => string -> : ^^^^^^^^^^^^ +> : >message + this.name : string > : ^^^^^^ >message : string diff --git a/tests/baselines/reference/detachedCommentAtStartOfFunctionBody1.types b/tests/baselines/reference/detachedCommentAtStartOfFunctionBody1.types index bb2ba19c7005a..bfb4080c1bddc 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfFunctionBody1.types +++ b/tests/baselines/reference/detachedCommentAtStartOfFunctionBody1.types @@ -7,7 +7,7 @@ class TestFile { foo(message: string): () => string { >foo : (message: string) => () => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >message : string > : ^^^^^^ diff --git a/tests/baselines/reference/detachedCommentAtStartOfFunctionBody2.types b/tests/baselines/reference/detachedCommentAtStartOfFunctionBody2.types index d9844ab17d193..f6c165cbb183b 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfFunctionBody2.types +++ b/tests/baselines/reference/detachedCommentAtStartOfFunctionBody2.types @@ -7,7 +7,7 @@ class TestFile { foo(message: string): () => string { >foo : (message: string) => () => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >message : string > : ^^^^^^ diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types index 158b62b640d5f..28cd8b9d2ca22 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction1.types @@ -11,13 +11,13 @@ class TestFile { foo(message: string): () => string { >foo : (message: string) => () => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >message : string > : ^^^^^^ return (...x: string[]) => >(...x: string[]) => ///

Test summary /// /// message + this.name : (...x: string[]) => string -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types index 54a6df13e7431..16d6075821a29 100644 --- a/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types +++ b/tests/baselines/reference/detachedCommentAtStartOfLambdaFunction2.types @@ -11,13 +11,13 @@ class TestFile { foo(message: string): () => string { >foo : (message: string) => () => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >message : string > : ^^^^^^ return (...x: string[]) => >(...x: string[]) => /// Test summary /// /// message + this.name : (...x: string[]) => string -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types b/tests/baselines/reference/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types index 601e84bbef6e2..d8519d651f706 100644 --- a/tests/baselines/reference/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types +++ b/tests/baselines/reference/didYouMeanElaborationsForExpressionsWhichCouldBeCalled.types @@ -16,7 +16,7 @@ declare function getNum(): number; declare function foo(arg: { x: Bar, y: Date }, item: number, items?: [number, number, number]): void; >foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -> : ^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >arg : { x: Bar; y: Date; } > : ^^^^^ ^^^^^ ^^^ >x : Bar @@ -32,7 +32,7 @@ foo({ >foo({ x: Bar, y: Date}, getNum()) : void > : ^^^^ >foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >{ x: Bar, y: Date} : { x: typeof Bar; y: DateConstructor; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -58,7 +58,7 @@ foo({ >foo({ x: new Bar(), y: new Date()}, getNum) : void > : ^^^^ >foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } > : ^^^^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ foo({ >foo({ x: new Bar(), y: new Date()}, getNum(), [ 1, 2, getNum]) : void > : ^^^^ >foo : (arg: { x: Bar; y: Date; }, item: number, items?: [number, number, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >{ x: new Bar(), y: new Date()} : { x: Bar; y: Date; } > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/differentTypesWithSameName.types b/tests/baselines/reference/differentTypesWithSameName.types index a7d7749f1eb15..4c502a7fb5d68 100644 --- a/tests/baselines/reference/differentTypesWithSameName.types +++ b/tests/baselines/reference/differentTypesWithSameName.types @@ -15,7 +15,7 @@ module m { } export function doSomething(v: m.variable) { >doSomething : (v: m.variable) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : variable > : ^^^^^^^^ >m : any @@ -46,11 +46,11 @@ m.doSomething(v); >m.doSomething(v) : void > : ^^^^ >m.doSomething : (v: m.variable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : typeof m > : ^^^^^^^^ >doSomething : (v: m.variable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : variable > : ^^^^^^^^ diff --git a/tests/baselines/reference/disallowLineTerminatorBeforeArrow.types b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.types index 24dea37c08096..0e81125603ae7 100644 --- a/tests/baselines/reference/disallowLineTerminatorBeforeArrow.types +++ b/tests/baselines/reference/disallowLineTerminatorBeforeArrow.types @@ -5,14 +5,14 @@ var f1 = () >f1 : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : => { } var f2 = (x: string, y: string) /* >f2 : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: string, y: string) /* */ => { } : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : string @@ -21,9 +21,9 @@ var f2 = (x: string, y: string) /* */ => { } var f3 = (x: string, y: number, ...rest) >f3 : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(x: string, y: number, ...rest) => { } : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >x : string > : ^^^^^^ >y : number @@ -34,9 +34,9 @@ var f3 = (x: string, y: number, ...rest) => { } var f4 = (x: string, y: number, ...rest) /* >f4 : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(x: string, y: number, ...rest) /* */ => { } : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >x : string > : ^^^^^^ >y : number @@ -47,27 +47,27 @@ var f4 = (x: string, y: number, ...rest) /* */ => { } var f5 = (...rest) >f5 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >(...rest) => { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ => { } var f6 = (...rest) /* >f6 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >(...rest) /* */ => { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ */ => { } var f7 = (x: string, y: number, z = 10) >f7 : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: string, y: number, z = 10) => { } : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : string > : ^^^^^^ >y : number @@ -80,9 +80,9 @@ var f7 = (x: string, y: number, z = 10) => { } var f8 = (x: string, y: number, z = 10) /* >f8 : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: string, y: number, z = 10) /* */ => { } : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : string > : ^^^^^^ >y : number @@ -95,9 +95,9 @@ var f8 = (x: string, y: number, z = 10) /* */ => { } var f9 = (a: number): number >f9 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number): number => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ @@ -107,9 +107,9 @@ var f9 = (a: number): number var f10 = (a: number) : >f10 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number) : number => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ @@ -120,9 +120,9 @@ var f10 = (a: number) : var f11 = (a: number): number /* >f11 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number): number /* */ => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ @@ -132,9 +132,9 @@ var f11 = (a: number): number /* var f12 = (a: number) : >f12 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number) : number /* */ => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ @@ -146,9 +146,9 @@ var f12 = (a: number) : // Should be valid. var f11 = (a: number >f11 : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(a: number ) => a : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -159,9 +159,9 @@ var f11 = (a: number // Should be valid. var f12 = (a: number) >f12 : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(a: number) : number => a : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -172,9 +172,9 @@ var f12 = (a: number) // Should be valid. var f13 = (a: number): >f13 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number): number => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ @@ -187,14 +187,14 @@ var f14 = () /* */ => {} >f14 : () => void > : ^^^^^^^^^^ >() /* */ => {} : () => void -> : ^^^^^^^^^^ +> : // Should be valid. var f15 = (a: number): number /* */ => a >f15 : (a: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a: number): number /* */ => a : (a: number) => number -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ >a : number @@ -203,9 +203,9 @@ var f15 = (a: number): number /* */ => a // Should be valid. var f16 = (a: number, b = 10): >f16 : (a: number, b?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >(a: number, b = 10): number /* */ => a + b : (a: number, b?: number) => number -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ >a : number > : ^^^^^^ >b : number @@ -223,7 +223,7 @@ var f16 = (a: number, b = 10): function foo(func: () => boolean) { } >foo : (func: () => boolean) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >func : () => boolean > : ^^^^^^ @@ -231,7 +231,7 @@ foo(() >foo(() => true) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => true : () => true > : ^^^^^^^^^^ @@ -243,7 +243,7 @@ foo(() >foo(() => { return false; }) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { return false; } : () => false > : ^^^^^^^^^^^ @@ -265,7 +265,7 @@ module m { >thing : () => number > : ^^^^^^^^^^^^ >() => 100 : () => number -> : ^^^^^^^^^^^^ +> : => 100) { >100 : 100 @@ -276,7 +276,7 @@ module m { >m : () => number > : ^^^^^^^^^^^^ >() => 2 * 2 * 2 : () => number -> : ^^^^^^^^^^^^ +> : => 2 * 2 * 2 >2 * 2 * 2 : number @@ -312,9 +312,9 @@ module m { export var v = x >v : (x: any) => City -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x => new City(Enum.claw) : (x: any) => City -> : ^^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ diff --git a/tests/baselines/reference/discriminableUnionWithIntersectedMembers.types b/tests/baselines/reference/discriminableUnionWithIntersectedMembers.types index 851bd317245c8..eea65063472ed 100644 --- a/tests/baselines/reference/discriminableUnionWithIntersectedMembers.types +++ b/tests/baselines/reference/discriminableUnionWithIntersectedMembers.types @@ -28,7 +28,7 @@ type X = const x: X = 4 as any as { x: 'x' | 'y', y: number }; >x : X > : ^ ->4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } +>4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } > : ^^^^^ ^^^^^ ^^^ >4 as any : any >4 : 4 @@ -60,7 +60,7 @@ type Y = const y: Y = 4 as any as { x: 'x' | 'y', y: number }; >y : Y > : ^ ->4 as any as { x: 'x' | 'y', y: number } : { x: 'x' | 'y'; y: number; } +>4 as any as { x: 'x' | 'y', y: number } : { x: "x" | "y"; y: number; } > : ^^^^^ ^^^^^ ^^^ >4 as any : any >4 : 4 diff --git a/tests/baselines/reference/discriminantElementAccessCheck.types b/tests/baselines/reference/discriminantElementAccessCheck.types index 8c0842ce42d60..dd2cad70ed138 100644 --- a/tests/baselines/reference/discriminantElementAccessCheck.types +++ b/tests/baselines/reference/discriminantElementAccessCheck.types @@ -26,7 +26,7 @@ interface TypeB { function assertNever(x: never) { >assertNever : (x: never) => never -> : ^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ @@ -37,7 +37,7 @@ function assertNever(x: never) { function IfWithString(val: U) { >IfWithString : (val: U) => string | number -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >val : U > : ^ @@ -74,7 +74,7 @@ function IfWithString(val: U) { function SwitchWithString(val: U) { >SwitchWithString : (val: U) => string | number -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >val : U > : ^ @@ -115,7 +115,7 @@ function SwitchWithString(val: U) { >assertNever(val) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >val : never > : ^^^^^ } @@ -123,7 +123,7 @@ function SwitchWithString(val: U) { function IfWithTemplate(val: U) { >IfWithTemplate : (val: U) => string | number -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >val : U > : ^ @@ -160,7 +160,7 @@ function IfWithTemplate(val: U) { function SwitchWithTemplate(val: U) { >SwitchWithTemplate : (val: U) => string | number -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >val : U > : ^ @@ -201,7 +201,7 @@ function SwitchWithTemplate(val: U) { >assertNever(val) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >val : never > : ^^^^^ } diff --git a/tests/baselines/reference/discriminantNarrowingCouldBeCircular.types b/tests/baselines/reference/discriminantNarrowingCouldBeCircular.types index 1ffba70cc7ceb..9c15e447abda1 100644 --- a/tests/baselines/reference/discriminantNarrowingCouldBeCircular.types +++ b/tests/baselines/reference/discriminantNarrowingCouldBeCircular.types @@ -4,7 +4,7 @@ // #57705, 57690 declare function is(v: T): v is T; >is : (v: T) => v is T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >v : T > : ^ @@ -38,7 +38,7 @@ if (o) { >is(value) : boolean > : ^^^^^^^ >is : (v: T) => v is T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >value : string > : ^^^^^^ } @@ -59,13 +59,13 @@ declare const kPresentationInheritanceParents: { [tagName: string]: string[] }; declare function parentElementOrShadowHost(element: SomeRecord): SomeRecord | undefined; >parentElementOrShadowHost : (element: SomeRecord) => SomeRecord | undefined -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : SomeRecord > : ^^^^^^^^^^ function getImplicitAriaRole(element: SomeRecord) { >getImplicitAriaRole : (element: SomeRecord) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >element : SomeRecord > : ^^^^^^^^^^ @@ -85,7 +85,7 @@ function getImplicitAriaRole(element: SomeRecord) { >parentElementOrShadowHost(ancestor) : SomeRecord | undefined > : ^^^^^^^^^^^^^^^^^^^^^^ >parentElementOrShadowHost : (element: SomeRecord) => SomeRecord | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ancestor : SomeRecord > : ^^^^^^^^^^ @@ -120,12 +120,12 @@ function getImplicitAriaRole(element: SomeRecord) { > : ^^^^^^^ >parents.includes(parent.a) : boolean > : ^^^^^^^ ->parents.includes : (searchElement: string, fromIndex?: number | undefined) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>parents.includes : (searchElement: string, fromIndex?: number) => boolean +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >parents : string[] > : ^^^^^^^^ ->includes : (searchElement: string, fromIndex?: number | undefined) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>includes : (searchElement: string, fromIndex?: number) => boolean +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >parent.a : string > : ^^^^^^ >parent : SomeRecord @@ -146,7 +146,7 @@ function getImplicitAriaRole(element: SomeRecord) { declare function isPlainObject2( >isPlainObject2 : (data: unknown) => data is Record -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ data: unknown, >data : unknown @@ -162,7 +162,7 @@ declare function isPlainObject2( >isPlainObject2(myObj2) : boolean > : ^^^^^^^ >isPlainObject2 : (data: unknown) => data is Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myObj2 : unknown > : ^^^^^^^ @@ -196,17 +196,17 @@ declare function isPlainObject2( >isPlainObject2(deeper) : boolean > : ^^^^^^^ >isPlainObject2 : (data: unknown) => data is Record -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >deeper : unknown > : ^^^^^^^ >Object.keys(deeper) : string[] > : ^^^^^^^^ >Object.keys : { (o: object): string[]; (o: {}): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >keys : { (o: object): string[]; (o: {}): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >deeper : Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/discriminantPropertyCheck.types b/tests/baselines/reference/discriminantPropertyCheck.types index 0018eee6d4c91..0160ee8fc9d24 100644 --- a/tests/baselines/reference/discriminantPropertyCheck.types +++ b/tests/baselines/reference/discriminantPropertyCheck.types @@ -53,7 +53,7 @@ interface Item2 extends Base { function goo1(x: Item) { >goo1 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -97,7 +97,7 @@ function goo1(x: Item) { function goo2(x: Item) { >goo2 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -141,7 +141,7 @@ function goo2(x: Item) { function foo1(x: Item) { >foo1 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -181,7 +181,7 @@ function foo1(x: Item) { function foo2(x: Item) { >foo2 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -221,7 +221,7 @@ function foo2(x: Item) { function foo3(x: Item) { >foo3 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -261,7 +261,7 @@ function foo3(x: Item) { function foo4(x: Item) { >foo4 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -301,7 +301,7 @@ function foo4(x: Item) { function foo5(x: Item) { >foo5 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -341,7 +341,7 @@ function foo5(x: Item) { function foo6(x: Item) { >foo6 : (x: Item) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Item > : ^^^^ @@ -427,7 +427,7 @@ interface NumType { function func2(inst: Instance) { >func2 : (inst: Instance) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >inst : Instance > : ^^^^^^^^ @@ -474,16 +474,16 @@ function func2(inst: Instance) { > : ^^^^^^^^^ inst.value.toExponential; ->inst.value.toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inst.value.toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >inst.value : number > : ^^^^^^ >inst : NumType > : ^^^^^^^ >value : number > : ^^^^^^ ->toExponential : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toExponential : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ break; } @@ -495,9 +495,9 @@ function func2(inst: Instance) { const f = (_a: string, _b: string): void => {}; >f : (_a: string, _b: string) => void -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(_a: string, _b: string): void => {} : (_a: string, _b: string) => void -> : ^^^^^ ^^^^^^ ^^^^^ +> : >_a : string > : ^^^^^^ >_b : string @@ -554,7 +554,7 @@ u.a && u.b && f(u.a, u.b); >f(u.a, u.b) : void > : ^^^^ >f : (_a: string, _b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >u.a : string > : ^^^^^^ >u : U @@ -588,7 +588,7 @@ u.b && u.a && f(u.a, u.b); >f(u.a, u.b) : void > : ^^^^ >f : (_a: string, _b: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >u.a : string > : ^^^^^^ >u : U @@ -630,7 +630,7 @@ type Obj = AdditiveObj | MultiplicativeObj export function foo(obj: Obj) { >foo : (obj: Obj) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : Obj > : ^^^ @@ -650,7 +650,7 @@ export function foo(obj: Obj) { >onlyPlus(obj.key) : "+" > : ^^^ >onlyPlus : (arg: "+") => "+" -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >obj.key : "+" > : ^^^ >obj : AdditiveObj @@ -664,8 +664,8 @@ export function foo(obj: Obj) { } function onlyPlus(arg: '+') { ->onlyPlus : (arg: '+') => "+" -> : ^^^^^^ ^^^^^^^^ +>onlyPlus : (arg: "+") => "+" +> : ^ ^^ ^^^^^^^^ >arg : "+" > : ^^^ @@ -678,7 +678,7 @@ function onlyPlus(arg: '+') { declare function never(value: never): never; >never : (value: never) => never -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : never > : ^^^^^ @@ -721,7 +721,7 @@ type TypeBar2 = { type: BarEnum.bar2 }; function func3(value: Partial) { >func3 : (value: Partial) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >value : Partial > : ^^^^^^^^^^^^^^^^^^^ @@ -768,7 +768,7 @@ function func3(value: Partial) { >never(value.type) : never > : ^^^^^ >never : (value: never) => never -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >value.type : never > : ^^^^^ >value : Partial @@ -807,13 +807,13 @@ type Type = TypeA | TypeB; declare function isType(x: unknown): x is Type; >isType : (x: unknown) => x is Type -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ function WorksProperly(data: Type) { >WorksProperly : (data: Type) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data : Type > : ^^^^ @@ -843,7 +843,7 @@ function WorksProperly(data: Type) { function DoesNotWork(data: unknown) { >DoesNotWork : (data: unknown) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data : unknown > : ^^^^^^^ @@ -851,7 +851,7 @@ function DoesNotWork(data: unknown) { >isType(data) : boolean > : ^^^^^^^ >isType : (x: unknown) => x is Type -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >data : unknown > : ^^^^^^^ @@ -918,9 +918,9 @@ type MapOfAllTests = Record; const doTestingStuff = (mapOfTests: MapOfAllTests, ids: string[]) => { >doTestingStuff : (mapOfTests: MapOfAllTests, ids: string[]) => void -> : ^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(mapOfTests: MapOfAllTests, ids: string[]) => { ids.forEach(id => { let test; test = mapOfTests[id]; if (test.type === 'testA') { console.log(test.bananas); } switch (test.type) { case 'testA': { console.log(test.bananas); } } });} : (mapOfTests: MapOfAllTests, ids: string[]) => void -> : ^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : >mapOfTests : MapOfAllTests > : ^^^^^^^^^^^^^ >ids : string[] @@ -930,13 +930,13 @@ const doTestingStuff = (mapOfTests: MapOfAllTests, ids: string[]) => { >ids.forEach(id => { let test; test = mapOfTests[id]; if (test.type === 'testA') { console.log(test.bananas); } switch (test.type) { case 'testA': { console.log(test.bananas); } } }) : void > : ^^^^ >ids.forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >ids : string[] > : ^^^^^^^^ >forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >id => { let test; test = mapOfTests[id]; if (test.type === 'testA') { console.log(test.bananas); } switch (test.type) { case 'testA': { console.log(test.bananas); } } } : (id: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >id : string > : ^^^^^^ @@ -970,11 +970,11 @@ const doTestingStuff = (mapOfTests: MapOfAllTests, ids: string[]) => { >console.log(test.bananas) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >test.bananas : 3 > : ^ >test : TestA @@ -998,11 +998,11 @@ const doTestingStuff = (mapOfTests: MapOfAllTests, ids: string[]) => { >console.log(test.bananas) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >test.bananas : 3 > : ^ >test : TestA diff --git a/tests/baselines/reference/discriminantPropertyInference.types b/tests/baselines/reference/discriminantPropertyInference.types index 168d5dd0af370..ab1099da65cd9 100644 --- a/tests/baselines/reference/discriminantPropertyInference.types +++ b/tests/baselines/reference/discriminantPropertyInference.types @@ -15,7 +15,7 @@ type DiscriminatorTrue = { cb: (x: string) => void; >cb : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -32,7 +32,7 @@ type DiscriminatorFalse = { cb: (x: number) => void; >cb : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -43,7 +43,7 @@ type Props = DiscriminatorTrue | DiscriminatorFalse; declare function f(options: DiscriminatorTrue | DiscriminatorFalse): any; >f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : DiscriminatorTrue | DiscriminatorFalse > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -51,9 +51,9 @@ declare function f(options: DiscriminatorTrue | DiscriminatorFalse): any; f({ >f({ disc: true, cb: s => parseInt(s)}) : any >f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ disc: true, cb: s => parseInt(s)} : { disc: true; cb: (s: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ disc: true, >disc : true @@ -63,15 +63,15 @@ f({ cb: s => parseInt(s) >cb : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s => parseInt(s) : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >parseInt(s) : number > : ^^^^^^ ->parseInt : (string: string, radix?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>parseInt : (string: string, radix?: number) => number +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -81,9 +81,9 @@ f({ f({ >f({ disc: false, cb: n => n.toFixed()}) : any >f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ disc: false, cb: n => n.toFixed()} : { disc: false; cb: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ disc: false, >disc : false @@ -93,19 +93,19 @@ f({ cb: n => n.toFixed() >cb : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); @@ -113,9 +113,9 @@ f({ f({ >f({ disc: undefined, cb: n => n.toFixed()}) : any >f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ disc: undefined, cb: n => n.toFixed()} : { disc: undefined; cb: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ disc: undefined, >disc : undefined @@ -125,19 +125,19 @@ f({ cb: n => n.toFixed() >cb : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); @@ -145,25 +145,25 @@ f({ f({ >f({ cb: n => n.toFixed()}) : any >f : (options: DiscriminatorTrue | DiscriminatorFalse) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ cb: n => n.toFixed()} : { cb: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ cb: n => n.toFixed() >cb : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); diff --git a/tests/baselines/reference/discriminantUsingEvaluatableTemplateExpression.types b/tests/baselines/reference/discriminantUsingEvaluatableTemplateExpression.types index 2e5bbd534f59c..657582ce2cb48 100644 --- a/tests/baselines/reference/discriminantUsingEvaluatableTemplateExpression.types +++ b/tests/baselines/reference/discriminantUsingEvaluatableTemplateExpression.types @@ -9,7 +9,7 @@ type S = { d: "s"; cb: (x: string) => void }; >d : "s" > : ^^^ >cb : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -19,13 +19,13 @@ type N = { d: "n"; cb: (x: number) => void }; >d : "n" > : ^^^ >cb : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ declare function foo(foo: S | N): void; >foo : (foo: S | N) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >foo : S | N > : ^^^^^ @@ -33,9 +33,9 @@ foo({ >foo({ d: `${"s"}`, cb: (x) => { x; // string },}) : void > : ^^^^ >foo : (foo: S | N) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ d: `${"s"}`, cb: (x) => { x; // string },} : { d: "s"; cb: (x: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ d: `${"s"}`, >d : "s" @@ -47,9 +47,9 @@ foo({ cb: (x) => { >cb : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(x) => { x; // string } : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/discriminantsAndNullOrUndefined.types b/tests/baselines/reference/discriminantsAndNullOrUndefined.types index 1d51696f469bb..65abc43978199 100644 --- a/tests/baselines/reference/discriminantsAndNullOrUndefined.types +++ b/tests/baselines/reference/discriminantsAndNullOrUndefined.types @@ -17,7 +17,7 @@ type C = A | B | undefined; function never(_: never): never { >never : (_: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : never > : ^^^^^ @@ -30,13 +30,13 @@ function never(_: never): never { function useA(_: A): void { } >useA : (_: A) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : A > : ^ function useB(_: B): void { } >useB : (_: B) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : B > : ^ @@ -66,7 +66,7 @@ if (c !== undefined) { >useA(c) : void > : ^^^^ >useA : (_: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : A > : ^ @@ -76,7 +76,7 @@ if (c !== undefined) { >useB(c) : void > : ^^^^ >useB : (_: B) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : B > : ^ @@ -84,7 +84,7 @@ if (c !== undefined) { >never(c) : never > : ^^^^^ >never : (_: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >c : never > : ^^^^^ } diff --git a/tests/baselines/reference/discriminantsAndPrimitives.types b/tests/baselines/reference/discriminantsAndPrimitives.types index 6fbf2671fad64..b432b6137e72f 100644 --- a/tests/baselines/reference/discriminantsAndPrimitives.types +++ b/tests/baselines/reference/discriminantsAndPrimitives.types @@ -25,7 +25,7 @@ interface Bar { function f1(x: Foo | Bar | string) { >f1 : (x: Foo | Bar | string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | Foo | Bar > : ^^^^^^^^^^^^^^^^^^ @@ -64,7 +64,7 @@ function f1(x: Foo | Bar | string) { function f2(x: Foo | Bar | string | undefined) { >f2 : (x: Foo | Bar | string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | Foo | Bar | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -103,7 +103,7 @@ function f2(x: Foo | Bar | string | undefined) { function f3(x: Foo | Bar | string | null) { >f3 : (x: Foo | Bar | string | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | Foo | Bar | null > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -146,7 +146,7 @@ function f3(x: Foo | Bar | string | null) { function f4(x: Foo | Bar | string | number | null) { >f4 : (x: Foo | Bar | string | number | null) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number | Foo | Bar | null > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -259,30 +259,30 @@ if (n.type === "Disjunction") { n.alternatives.slice() >n.alternatives.slice() : string[] > : ^^^^^^^^ ->n.alternatives.slice : (start?: number | undefined, end?: number | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.alternatives.slice : (start?: number, end?: number) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >n.alternatives : string[] > : ^^^^^^^^ >n : Disjunction > : ^^^^^^^^^^^ >alternatives : string[] > : ^^^^^^^^ ->slice : (start?: number | undefined, end?: number | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ } else { n.elements.slice() // n should be narrowed to Pattern >n.elements.slice() : string[] > : ^^^^^^^^ ->n.elements.slice : (start?: number | undefined, end?: number | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.elements.slice : (start?: number, end?: number) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >n.elements : string[] > : ^^^^^^^^ >n : Pattern > : ^^^^^^^ >elements : string[] > : ^^^^^^^^ ->slice : (start?: number | undefined, end?: number | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/discriminantsAndTypePredicates.types b/tests/baselines/reference/discriminantsAndTypePredicates.types index 9ef6ca21e5710..1ee756e07a48b 100644 --- a/tests/baselines/reference/discriminantsAndTypePredicates.types +++ b/tests/baselines/reference/discriminantsAndTypePredicates.types @@ -13,7 +13,7 @@ interface B { type: 'B' } function isA(x: A | B): x is A { return x.type === 'A'; } >isA : (x: A | B) => x is A -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A | B > : ^^^^^ >x.type === 'A' : boolean @@ -29,7 +29,7 @@ function isA(x: A | B): x is A { return x.type === 'A'; } function isB(x: A | B): x is B { return x.type === 'B'; } >isB : (x: A | B) => x is B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A | B > : ^^^^^ >x.type === 'B' : boolean @@ -45,7 +45,7 @@ function isB(x: A | B): x is B { return x.type === 'B'; } function foo1(x: A | B): any { >foo1 : (x: A | B) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A | B > : ^^^^^ @@ -57,7 +57,7 @@ function foo1(x: A | B): any { >isA(x) : boolean > : ^^^^^^^ >isA : (x: A | B) => x is A -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : A | B > : ^^^^^ @@ -73,7 +73,7 @@ function foo1(x: A | B): any { >isB(x) : boolean > : ^^^^^^^ >isB : (x: A | B) => x is B -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : B > : ^ @@ -88,7 +88,7 @@ function foo1(x: A | B): any { function foo2(x: A | B): any { >foo2 : (x: A | B) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A | B > : ^^^^^ diff --git a/tests/baselines/reference/discriminateWithDivergentAccessors1.types b/tests/baselines/reference/discriminateWithDivergentAccessors1.types index 4cb4b18e68a49..68938bea24962 100644 --- a/tests/baselines/reference/discriminateWithDivergentAccessors1.types +++ b/tests/baselines/reference/discriminateWithDivergentAccessors1.types @@ -43,7 +43,7 @@ if (weirdoBox.done) { >weirdoBox.value : number > : ^^^^^^ >weirdoBox : { get done(): true; set done(v: T | null); value: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >value : number > : ^^^^^^ } @@ -102,7 +102,7 @@ if (weirdoBox2.done) { >weirdoBox2.value : string | number > : ^^^^^^^^^^^^^^^ >weirdoBox2 : { get done(): true; set done(v: T | null); value: string; } | { get done(): true; set done(v: T | null | undefined); value: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >value : string | number > : ^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/discriminateWithMissingProperty.types b/tests/baselines/reference/discriminateWithMissingProperty.types index 0e6a30f3f8348..d913629a886cd 100644 --- a/tests/baselines/reference/discriminateWithMissingProperty.types +++ b/tests/baselines/reference/discriminateWithMissingProperty.types @@ -30,7 +30,7 @@ type Arg = { declare function foo(arg: Arg): void; >foo : (arg: Arg) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : Arg > : ^^^ @@ -38,7 +38,7 @@ foo({ mode: "numeric", data: new Uint8Array([30]) }); // Should error >foo({ mode: "numeric", data: new Uint8Array([30]) }) : void > : ^^^^ >foo : (arg: Arg) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ mode: "numeric", data: new Uint8Array([30]) } : { mode: "numeric"; data: Uint8Array; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mode : "numeric" diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types index c7d35020599c3..d28b83db5d2d1 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=false).types @@ -9,7 +9,7 @@ type PromiseOrValue = Promise | T; function mapAsyncIterable( >mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, >iterable : AsyncGenerator | AsyncIterable @@ -17,7 +17,7 @@ function mapAsyncIterable( callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ @@ -40,7 +40,7 @@ function mapAsyncIterable( async function mapResult( >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ result: IteratorResult, >result : IteratorResult @@ -71,7 +71,7 @@ function mapAsyncIterable( >callback(result.value) : PromiseOrValue > : ^^^^^^^^^^^^^^^^^ >callback : (value: T) => PromiseOrValue -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >result.value : T > : ^ >result : IteratorYieldResult @@ -93,11 +93,11 @@ function mapAsyncIterable( >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -108,11 +108,11 @@ function mapAsyncIterable( >iterator.return() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } catch (_e) {} >_e : unknown @@ -126,7 +126,7 @@ function mapAsyncIterable( return { >{ async next() { return mapResult(await iterator.next()); }, async return(): Promise> { return typeof iterator.return === "function" ? mapResult(await iterator.return()) : { value: undefined as any, done: true }; }, async throw(error?: unknown) { if (typeof iterator.throw === "function") { return mapResult(await iterator.throw(error)); } throw error; }, [Symbol.asyncIterator]() { return this; }, } : { next(): Promise>; return(): Promise>; throw(error?: unknown): Promise>; [Symbol.asyncIterator](): AsyncGenerator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async next() { >next : () => Promise> @@ -136,17 +136,17 @@ function mapAsyncIterable( >mapResult(await iterator.next()) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.next() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.next : (...args: [] | [undefined]) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >next : (...args: [] | [undefined]) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, async return(): Promise> { @@ -161,11 +161,11 @@ function mapAsyncIterable( >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -173,17 +173,17 @@ function mapAsyncIterable( >mapResult(await iterator.return()) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.return() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.return() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : { value: undefined as any, done: true }; >{ value: undefined as any, done: true } : { value: any; done: true; } @@ -200,7 +200,7 @@ function mapAsyncIterable( }, async throw(error?: unknown) { >throw : (error?: unknown) => Promise> -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ @@ -210,11 +210,11 @@ function mapAsyncIterable( >typeof iterator.throw : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw : ((e?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >throw : ((e?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -222,17 +222,17 @@ function mapAsyncIterable( >mapResult(await iterator.throw(error)) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.throw(error) : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw(error) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw : (e?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >throw : (e?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ } @@ -275,7 +275,7 @@ const iterable = { >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [Symbol.asyncIterator]() { return this; }, next() { const value = items[0]; items.shift(); return Promise.resolve({ done: items.length === 0, value, }); },} : { [Symbol.asyncIterator](): { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; }; next(): Promise<{ done: boolean; value: number; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [Symbol.asyncIterator]() { >[Symbol.asyncIterator] : () => { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } @@ -320,11 +320,11 @@ const iterable = { >Promise.resolve({ done: items.length === 0, value, }) : Promise<{ done: boolean; value: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done: items.length === 0, value, } : { done: boolean; value: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -356,11 +356,11 @@ const doubles = mapAsyncIterable(iterable, (x) => x + x); >mapAsyncIterable(iterable, (x) => x + x) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x) => x + x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + x : number diff --git a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types index c7d35020599c3..d28b83db5d2d1 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty2(exactoptionalpropertytypes=true).types @@ -9,7 +9,7 @@ type PromiseOrValue = Promise | T; function mapAsyncIterable( >mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ iterable: AsyncGenerator | AsyncIterable, >iterable : AsyncGenerator | AsyncIterable @@ -17,7 +17,7 @@ function mapAsyncIterable( callback: (value: T) => PromiseOrValue, >callback : (value: T) => PromiseOrValue -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ @@ -40,7 +40,7 @@ function mapAsyncIterable( async function mapResult( >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ result: IteratorResult, >result : IteratorResult @@ -71,7 +71,7 @@ function mapAsyncIterable( >callback(result.value) : PromiseOrValue > : ^^^^^^^^^^^^^^^^^ >callback : (value: T) => PromiseOrValue -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >result.value : T > : ^ >result : IteratorYieldResult @@ -93,11 +93,11 @@ function mapAsyncIterable( >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -108,11 +108,11 @@ function mapAsyncIterable( >iterator.return() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } catch (_e) {} >_e : unknown @@ -126,7 +126,7 @@ function mapAsyncIterable( return { >{ async next() { return mapResult(await iterator.next()); }, async return(): Promise> { return typeof iterator.return === "function" ? mapResult(await iterator.return()) : { value: undefined as any, done: true }; }, async throw(error?: unknown) { if (typeof iterator.throw === "function") { return mapResult(await iterator.throw(error)); } throw error; }, [Symbol.asyncIterator]() { return this; }, } : { next(): Promise>; return(): Promise>; throw(error?: unknown): Promise>; [Symbol.asyncIterator](): AsyncGenerator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async next() { >next : () => Promise> @@ -136,17 +136,17 @@ function mapAsyncIterable( >mapResult(await iterator.next()) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.next() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.next : (...args: [] | [undefined]) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >next : (...args: [] | [undefined]) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }, async return(): Promise> { @@ -161,11 +161,11 @@ function mapAsyncIterable( >typeof iterator.return : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : ((value?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -173,17 +173,17 @@ function mapAsyncIterable( >mapResult(await iterator.return()) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.return() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.return() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >return : (value?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : { value: undefined as any, done: true }; >{ value: undefined as any, done: true } : { value: any; done: true; } @@ -200,7 +200,7 @@ function mapAsyncIterable( }, async throw(error?: unknown) { >throw : (error?: unknown) => Promise> -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ @@ -210,11 +210,11 @@ function mapAsyncIterable( >typeof iterator.throw : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw : ((e?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >throw : ((e?: any) => Promise>) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"function" : "function" > : ^^^^^^^^^^ @@ -222,17 +222,17 @@ function mapAsyncIterable( >mapResult(await iterator.throw(error)) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapResult : (result: IteratorResult) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await iterator.throw(error) : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw(error) : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator.throw : (e?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterator : AsyncIterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >throw : (e?: any) => Promise> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >error : unknown > : ^^^^^^^ } @@ -275,7 +275,7 @@ const iterable = { >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [Symbol.asyncIterator]() { return this; }, next() { const value = items[0]; items.shift(); return Promise.resolve({ done: items.length === 0, value, }); },} : { [Symbol.asyncIterator](): { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; }; next(): Promise<{ done: boolean; value: number; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ [Symbol.asyncIterator]() { >[Symbol.asyncIterator] : () => { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } @@ -320,11 +320,11 @@ const iterable = { >Promise.resolve({ done: items.length === 0, value, }) : Promise<{ done: boolean; value: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ done: items.length === 0, value, } : { done: boolean; value: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -356,11 +356,11 @@ const doubles = mapAsyncIterable(iterable, (x) => x + x); >mapAsyncIterable(iterable, (x) => x + x) : AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapAsyncIterable : (iterable: AsyncGenerator | AsyncIterable, callback: (value: T) => PromiseOrValue) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >iterable : { [Symbol.asyncIterator](): any; next(): Promise<{ done: boolean; value: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x) => x + x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + x : number diff --git a/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types index 1faad53463ad8..b84de71592ff0 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=false).types @@ -54,7 +54,7 @@ type CoercedVariableValues = declare function getVariableValues(inputs: { >getVariableValues : (inputs: { readonly [variable: string]: unknown; }) => CoercedVariableValues -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >inputs : { readonly [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -66,7 +66,7 @@ declare function getVariableValues(inputs: { export function buildExecutionContext( >buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ args: ExecutionArgs, >args : ExecutionArgs @@ -87,7 +87,7 @@ export function buildExecutionContext( >getVariableValues(rawVariableValues ?? {}) : CoercedVariableValues > : ^^^^^^^^^^^^^^^^^^^^^ >getVariableValues : (inputs: { readonly [variable: string]: unknown; }) => CoercedVariableValues -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >rawVariableValues ?? {} : { readonly [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >rawVariableValues : Maybe<{ readonly [variable: string]: unknown; }> @@ -120,7 +120,7 @@ export function buildExecutionContext( >variableValues : { [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >coercedVariableValues.coerced : { [variable: string]: unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >coerced : { [variable: string]: unknown; } diff --git a/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types index 0fcdcc396a770..56ef26bebe748 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty3(exactoptionalpropertytypes=true).types @@ -54,7 +54,7 @@ type CoercedVariableValues = declare function getVariableValues(inputs: { >getVariableValues : (inputs: { readonly [variable: string]: unknown; }) => CoercedVariableValues -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >inputs : { readonly [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -66,7 +66,7 @@ declare function getVariableValues(inputs: { export function buildExecutionContext( >buildExecutionContext : (args: ExecutionArgs) => ReadonlyArray | ExecutionContext -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ args: ExecutionArgs, >args : ExecutionArgs @@ -87,7 +87,7 @@ export function buildExecutionContext( >getVariableValues(rawVariableValues ?? {}) : CoercedVariableValues > : ^^^^^^^^^^^^^^^^^^^^^ >getVariableValues : (inputs: { readonly [variable: string]: unknown; }) => CoercedVariableValues -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >rawVariableValues ?? {} : { readonly [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >rawVariableValues : Maybe<{ readonly [variable: string]: unknown; }> @@ -120,7 +120,7 @@ export function buildExecutionContext( >variableValues : { [variable: string]: unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >coercedVariableValues.coerced : { [variable: string]: unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >coercedVariableValues : { coerced: { [variable: string]: unknown; }; errors?: never; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >coerced : { [variable: string]: unknown; } diff --git a/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=false).types b/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=false).types index 601ac3df5d545..0be04a3f53ec1 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=false).types @@ -5,7 +5,7 @@ export function main(a: string[] | undefined) { >main : (a: string[] | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=true).types b/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=true).types index a267491035ad7..b5cbbd5edd7c5 100644 --- a/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/discriminateWithOptionalProperty4(exactoptionalpropertytypes=true).types @@ -5,7 +5,7 @@ export function main(a: string[] | undefined) { >main : (a: string[] | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/discriminatedUnionInference.types b/tests/baselines/reference/discriminatedUnionInference.types index ee8f9a0629951..33c3239f64978 100644 --- a/tests/baselines/reference/discriminatedUnionInference.types +++ b/tests/baselines/reference/discriminatedUnionInference.types @@ -43,7 +43,7 @@ type Item = { kind: 'a', data: T } | { kind: 'b', data: T[] }; declare function foo(item: Item): T; >foo : (item: Item) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >item : Item > : ^^^^^^^ @@ -53,7 +53,7 @@ let x1 = foo({ kind: 'a', data: 42 }); // number >foo({ kind: 'a', data: 42 }) : number > : ^^^^^^ >foo : (item: Item) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ kind: 'a', data: 42 } : { kind: "a"; data: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "a" @@ -71,7 +71,7 @@ let x2 = foo({ kind: 'b', data: [1, 2] }); // number >foo({ kind: 'b', data: [1, 2] }) : number > : ^^^^^^ >foo : (item: Item) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ kind: 'b', data: [1, 2] } : { kind: "b"; data: number[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "b" diff --git a/tests/baselines/reference/discriminatedUnionJsxElement.types b/tests/baselines/reference/discriminatedUnionJsxElement.types index f4493e55cdb6b..a85b5a20b84bf 100644 --- a/tests/baselines/reference/discriminatedUnionJsxElement.types +++ b/tests/baselines/reference/discriminatedUnionJsxElement.types @@ -14,7 +14,7 @@ interface IData(data: IData) { >Menu : (data: IData) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >ListItemVariant : any > : ^^^ >data : IData @@ -41,7 +41,7 @@ function Menu return ; > : error >ListItem : (_data: IListItemData) => null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >variant : ListItemVariant > : ^^^^^^^^^^^^^^^ >listItemVariant : ListItemVariant @@ -75,7 +75,7 @@ enum ListItemVariant { function ListItem(_data: IListItemData) { >ListItem : (_data: IListItemData) => null -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_data : IListItemData > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/discriminatedUnionTypes1.types b/tests/baselines/reference/discriminatedUnionTypes1.types index a2820f1e621ea..6504bd122acff 100644 --- a/tests/baselines/reference/discriminatedUnionTypes1.types +++ b/tests/baselines/reference/discriminatedUnionTypes1.types @@ -41,7 +41,7 @@ type Shape = Square | Rectangle | Circle; function area1(s: Shape) { >area1 : (s: Shape) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : Shape > : ^^^^^ @@ -146,7 +146,7 @@ function area1(s: Shape) { function area2(s: Shape) { >area2 : (s: Shape) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : Shape > : ^^^^^ @@ -224,7 +224,7 @@ function area2(s: Shape) { function assertNever(x: never): never { >assertNever : (x: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -243,7 +243,7 @@ function assertNever(x: never): never { function area3(s: Shape) { >area3 : (s: Shape) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : Shape > : ^^^^^ @@ -321,7 +321,7 @@ function area3(s: Shape) { >assertNever(s) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >s : never > : ^^^^^ } @@ -329,7 +329,7 @@ function area3(s: Shape) { function area4(s: Shape) { >area4 : (s: Shape) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : Shape > : ^^^^^ @@ -407,7 +407,7 @@ function area4(s: Shape) { >assertNever(s) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >s : never > : ^^^^^ } @@ -434,7 +434,7 @@ type Message = function f1(m: Message) { >f1 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -479,7 +479,7 @@ function f1(m: Message) { function f2(m: Message) { >f2 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -504,7 +504,7 @@ function f2(m: Message) { function f3(m: Message) { >f3 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -528,7 +528,7 @@ function f3(m: Message) { function f4(m: Message, x: "A" | "D") { >f4 : (m: Message, x: "A" | "D") => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ >x : "A" | "D" @@ -554,7 +554,7 @@ function f4(m: Message, x: "A" | "D") { function f5(m: Message) { >f5 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -593,7 +593,7 @@ function f5(m: Message) { function f6(m: Message) { >f6 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -631,7 +631,7 @@ function f6(m: Message) { function f7(m: Message) { >f7 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ @@ -660,7 +660,7 @@ function f7(m: Message) { function f8(m: Message) { >f8 : (m: Message) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m : Message > : ^^^^^^^ diff --git a/tests/baselines/reference/discriminatedUnionTypes2.types b/tests/baselines/reference/discriminatedUnionTypes2.types index 81b89a85c94ac..e687b191345ab 100644 --- a/tests/baselines/reference/discriminatedUnionTypes2.types +++ b/tests/baselines/reference/discriminatedUnionTypes2.types @@ -3,7 +3,7 @@ === discriminatedUnionTypes2.ts === function f10(x : { kind: false, a: string } | { kind: true, b: string } | { kind: string, c: string }) { >f10 : (x: { kind: false; a: string; } | { kind: true; b: string; } | { kind: string; c: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { kind: false; a: string; } | { kind: true; b: string; } | { kind: string; c: string; } > : ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^ >kind : false @@ -76,7 +76,7 @@ function f10(x : { kind: false, a: string } | { kind: true, b: string } | { kind function f11(x : { kind: false, a: string } | { kind: true, b: string } | { kind: string, c: string }) { >f11 : (x: { kind: false; a: string; } | { kind: true; b: string; } | { kind: string; c: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { kind: false; a: string; } | { kind: true; b: string; } | { kind: string; c: string; } > : ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^ >kind : false @@ -143,7 +143,7 @@ function f11(x : { kind: false, a: string } | { kind: true, b: string } | { kind function f13(x: { a: null; b: string } | { a: string, c: number }) { >f13 : (x: { a: null; b: string; } | { a: string; c: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: null; b: string; } | { a: string; c: number; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^ >a : null @@ -176,7 +176,7 @@ function f13(x: { a: null; b: string } | { a: string, c: number }) { function f14(x: { a: 0; b: string } | { a: T, c: number }) { >f14 : (x: { a: 0; b: string; } | { a: T; c: number; }) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : { a: 0; b: string; } | { a: T; c: number; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^ >a : 0 @@ -222,7 +222,7 @@ type Result = { error?: undefined, value: T } | { error: Error }; function f15(x: Result) { >f15 : (x: Result) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Result > : ^^^^^^^^^^^^^^ @@ -263,7 +263,7 @@ f15({ value: 10 }); >f15({ value: 10 }) : void > : ^^^^ >f15 : (x: Result) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ value: 10 } : { value: number; } > : ^^^^^^^^^^^^^^^^^^ >value : number @@ -275,7 +275,7 @@ f15({ error: new Error("boom") }); >f15({ error: new Error("boom") }) : void > : ^^^^ >f15 : (x: Result) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ error: new Error("boom") } : { error: Error; } > : ^^^^^^^^^^^^^^^^^ >error : Error @@ -315,7 +315,7 @@ type DataCarrier = WithError | WithoutError function f20(carrier: DataCarrier) { >f20 : (carrier: DataCarrier) => void -> : ^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >carrier : DataCarrier > : ^^^^^^^^^^^^^^^^^ @@ -394,7 +394,7 @@ type Foo = { tag: true, x: number } | { tag: false, y: number } | { [x: string]: function f30(foo: Foo) { >f30 : (foo: Foo) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ @@ -419,7 +419,7 @@ function f30(foo: Foo) { function f31(foo: Foo) { >f31 : (foo: Foo) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ @@ -491,7 +491,7 @@ type abc = a | b | c; function f(problem: abc & (b | c)) { >f : (problem: abc & (b | c)) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >problem : b | c > : ^^^^^ @@ -549,9 +549,9 @@ type RuntimeValue = > : ^^^^^^^ function foo1(x: RuntimeValue & { type: 'number' }) { ->foo1 : (x: RuntimeValue & { type: 'number'; }) => void -> : ^^^^ ^^^^^^^^^ ->x : { type: "number"; value: number; } & { type: 'number'; } +>foo1 : (x: RuntimeValue & { type: "number"; }) => void +> : ^ ^^ ^^^^^^^^^ +>x : { type: "number"; value: number; } & { type: "number"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >type : "number" > : ^^^^^^^^ @@ -588,9 +588,9 @@ function foo1(x: RuntimeValue & { type: 'number' }) { } function foo2(x: RuntimeValue & ({ type: 'number' } | { type: 'string' })) { ->foo2 : (x: RuntimeValue & ({ type: 'number'; } | { type: 'string'; })) => void -> : ^^^^ ^^^^^^^^^ ->x : ({ type: "number"; value: number; } & { type: 'number'; }) | ({ type: "string"; value: string; } & { type: 'string'; }) +>foo2 : (x: RuntimeValue & ({ type: "number"; } | { type: "string"; })) => void +> : ^ ^^ ^^^^^^^^^ +>x : ({ type: "number"; value: number; } & { type: "number"; }) | ({ type: "string"; value: string; } & { type: "string"; }) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >type : "number" > : ^^^^^^^^ diff --git a/tests/baselines/reference/discriminatingUnionWithUnionPropertyAgainstUndefinedWithoutStrictNullChecks.types b/tests/baselines/reference/discriminatingUnionWithUnionPropertyAgainstUndefinedWithoutStrictNullChecks.types index 0f7227b5801bc..1cc3ac486a580 100644 --- a/tests/baselines/reference/discriminatingUnionWithUnionPropertyAgainstUndefinedWithoutStrictNullChecks.types +++ b/tests/baselines/reference/discriminatingUnionWithUnionPropertyAgainstUndefinedWithoutStrictNullChecks.types @@ -72,9 +72,9 @@ interface B2 { const testMethod = (m: A2 | B2) => { >testMethod : (m: A2 | B2) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(m: A2 | B2) => { if (m.error) { m; // should be A2 | B2 } else { m; // should be A2 | B2 }} : (m: A2 | B2) => void -> : ^^^^ ^^^^^^^^^ +> : >m : A2 | B2 > : ^^^^^^^ diff --git a/tests/baselines/reference/dissallowSymbolAsWeakType.types b/tests/baselines/reference/dissallowSymbolAsWeakType.types index 5f8cf52bcd417..67dbc4a338fb7 100644 --- a/tests/baselines/reference/dissallowSymbolAsWeakType.types +++ b/tests/baselines/reference/dissallowSymbolAsWeakType.types @@ -27,11 +27,11 @@ ws.add(s); >ws.add(s) : WeakSet > : ^^^^^^^^^^^^^^^ >ws.add : (value: object) => WeakSet -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >add : (value: object) => WeakSet -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -39,11 +39,11 @@ ws.has(s); >ws.has(s) : boolean > : ^^^^^^^ >ws.has : (value: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >has : (value: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -51,11 +51,11 @@ ws.delete(s); >ws.delete(s) : boolean > : ^^^^^^^ >ws.delete : (value: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >ws : WeakSet > : ^^^^^^^^^^^^^^^ >delete : (value: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -79,11 +79,11 @@ wm.set(s, true); >wm.set(s, true) : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >wm.set : (key: object, value: boolean) => WeakMap -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >set : (key: object, value: boolean) => WeakMap -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ >true : true @@ -93,11 +93,11 @@ wm.has(s); >wm.has(s) : boolean > : ^^^^^^^ >wm.has : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >has : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -105,11 +105,11 @@ wm.get(s); >wm.get(s) : boolean > : ^^^^^^^ >wm.get : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >get : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -117,11 +117,11 @@ wm.delete(s); >wm.delete(s) : boolean > : ^^^^^^^ >wm.delete : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >wm : WeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^ >delete : (key: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -158,24 +158,24 @@ const f = new FinalizationRegistry(() => {}); f.register(s, null); >f.register(s, null) : void > : ^^^^ ->f.register : (target: object, heldValue: unknown, unregisterToken?: object) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f.register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^ >f : FinalizationRegistry > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->register : (target: object, heldValue: unknown, unregisterToken?: object) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>register : (target: WeakKey, heldValue: unknown, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^ >s : symbol > : ^^^^^^ f.unregister(s); >f.unregister(s) : void > : ^^^^ ->f.unregister : (unregisterToken: object) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f.unregister : (unregisterToken: WeakKey) => void +> : ^ ^^ ^^^^^^^^^ >f : FinalizationRegistry > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->unregister : (unregisterToken: object) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>unregister : (unregisterToken: WeakKey) => void +> : ^ ^^ ^^^^^^^^^ >s : symbol > : ^^^^^^ diff --git a/tests/baselines/reference/distributiveConditionalTypeConstraints.types b/tests/baselines/reference/distributiveConditionalTypeConstraints.types index 51ac55a54bb4b..ed4cbacd3fed3 100644 --- a/tests/baselines/reference/distributiveConditionalTypeConstraints.types +++ b/tests/baselines/reference/distributiveConditionalTypeConstraints.types @@ -11,7 +11,7 @@ type IsArray = T extends unknown[] ? true : false; function f1(x: IsArray) { >f1 : (x: IsArray) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : IsArray > : ^^^^^^^^^^ @@ -34,7 +34,7 @@ function f1(x: IsArray) { function f2(x: IsArray) { >f2 : (x: IsArray) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : IsArray > : ^^^^^^^^^^ @@ -57,7 +57,7 @@ function f2(x: IsArray) { function f3(x: IsArray) { >f3 : (x: IsArray) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : IsArray > : ^^^^^^^^^^ @@ -80,7 +80,7 @@ function f3(x: IsArray) { function f4(x: IsArray) { >f4 : (x: IsArray) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : IsArray > : ^^^^^^^^^^ @@ -117,7 +117,7 @@ type ZeroOf = function f10(x: ZeroOf) { >f10 : (x: ZeroOf) => void -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : ZeroOf > : ^^^^^^^^^ @@ -140,7 +140,7 @@ type Foo = T extends "abc" | 42 ? true : false; function f20(x: Foo) { >f20 : (x: Foo) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Foo > : ^^^^^^ @@ -171,7 +171,7 @@ interface C { foo(): void, bar(): void } function test1(y: T extends B ? number : string) { >test1 : (y: T extends B ? number : string) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : T extends B ? number : string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -207,7 +207,7 @@ function test1(y: T extends B ? number : string) { function test2(y: T extends B ? string : number) { >test2 : (y: T extends B ? string : number) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : T extends B ? string : number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -243,7 +243,7 @@ function test2(y: T extends B ? string : number) { function test3(y: T extends C ? number : string) { >test3 : (y: T extends C ? number : string) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : T extends C ? number : string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -279,7 +279,7 @@ function test3(y: T extends C ? number : string) { function test4(y: T extends C ? string : number) { >test4 : (y: T extends C ? string : number) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : T extends C ? string : number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/divergentAccessors1.types b/tests/baselines/reference/divergentAccessors1.types index 91d9abb31ed0f..60c41aa51002f 100644 --- a/tests/baselines/reference/divergentAccessors1.types +++ b/tests/baselines/reference/divergentAccessors1.types @@ -47,7 +47,7 @@ { type T_HasGetSet = { >T_HasGetSet : { get foo(): number; set foo(v: number | string); } -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^ get foo(): number; >foo : number @@ -61,8 +61,8 @@ } const t_hgs: T_HasGetSet = null as any; ->t_hgs : { get foo(): number; set foo(v: string | number); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>t_hgs : { get foo(): number; set foo(v: number | string); } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^ >null as any : any t_hgs.foo = "32"; @@ -70,8 +70,8 @@ > : ^^^^ >t_hgs.foo : string | number > : ^^^^^^^^^^^^^^^ ->t_hgs : { get foo(): number; set foo(v: string | number); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>t_hgs : { get foo(): number; set foo(v: number | string); } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^ >foo : string | number > : ^^^^^^^^^^^^^^^ >"32" : "32" @@ -82,8 +82,8 @@ > : ^^^^^^ >t_hgs.foo : number > : ^^^^^^ ->t_hgs : { get foo(): number; set foo(v: string | number); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>t_hgs : { get foo(): number; set foo(v: number | string); } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^ >foo : number > : ^^^^^^ } diff --git a/tests/baselines/reference/divergentAccessorsTypes6.types b/tests/baselines/reference/divergentAccessorsTypes6.types index 973364f035901..9ceb9768602e3 100644 --- a/tests/baselines/reference/divergentAccessorsTypes6.types +++ b/tests/baselines/reference/divergentAccessorsTypes6.types @@ -79,9 +79,9 @@ interface I1 { } const o1 = { >o1 : { get x(): number; set x(value: Fail); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ >{ get x(): number { return 0; }, set x(value: Fail) {}} : { get x(): number; set x(value: Fail); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ get x(): number { return 0; }, >x : number @@ -100,9 +100,9 @@ const o1 = { const o2 = { >o2 : { p1: string; get p2(): number; set p2(value: string); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^ >{ get p1() { return 0; }, // error - no annotation means type is implied from the setter annotation set p1(value: string) {}, get p2(): number { return 0; }, // ok - explicit annotation set p2(value: string) {},} : { p1: string; get p2(): number; set p2(value: string); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^ get p1() { return 0; }, // error - no annotation means type is implied from the setter annotation >p1 : string diff --git a/tests/baselines/reference/divergentAccessorsTypes7.types b/tests/baselines/reference/divergentAccessorsTypes7.types index e4801a253c326..6986001498944 100644 --- a/tests/baselines/reference/divergentAccessorsTypes7.types +++ b/tests/baselines/reference/divergentAccessorsTypes7.types @@ -11,7 +11,7 @@ class Test { >value : string > : ^^^^^^ >value : string | ((item: S) => string) -> : ^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^ ^^ ^^^^^ ^ >item : S > : ^ @@ -37,7 +37,7 @@ const a = new Test<{ >a : Test<{ property: string; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ >new Test<{ property: string}>() : Test<{ property: string; }> -> : ^^^^^^^^^^^^^^^^^ ^^^^ +> : ^^^^^ ^ >Test : typeof Test > : ^^^^^^^^^^^ @@ -49,15 +49,15 @@ const a = new Test<{ a.value = (item) => item.property >a.value = (item) => item.property : (item: { property: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a.value : string | ((item: { property: string; }) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : Test<{ property: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : string | ((item: { property: string; }) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(item) => item.property : (item: { property: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : { property: string; } > : ^^^^^^^^^^^^^^^^^^^^^ >item.property : string @@ -69,15 +69,15 @@ a.value = (item) => item.property a['value'] = (item) => item.property >a['value'] = (item) => item.property : (item: { property: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a['value'] : string | ((item: { property: string; }) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : Test<{ property: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'value' : "value" > : ^^^^^^^ >(item) => item.property : (item: { property: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : { property: string; } > : ^^^^^^^^^^^^^^^^^^^^^ >item.property : string diff --git a/tests/baselines/reference/divideAndConquerIntersections.types b/tests/baselines/reference/divideAndConquerIntersections.types index 57bbc0221e84f..369247d147fb3 100644 --- a/tests/baselines/reference/divideAndConquerIntersections.types +++ b/tests/baselines/reference/divideAndConquerIntersections.types @@ -156,7 +156,7 @@ type FilterFunction = (up: U) => up is V; export function matchFilter( >matchFilter : (filter: Q | Q[]) => FilterFunction> -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ filter: Q | Q[], >filter : Q | Q[] @@ -168,11 +168,11 @@ export function matchFilter( >console.log("Matching", filter) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Matching" : "Matching" > : ^^^^^^^^^^ >filter : "message" | "edited_message" | "channel_post" | "edited_channel_post" | "message_reaction" | "message_reaction_count" | "inline_query" | "chosen_inline_result" | "callback_query" | "shipping_query" | "pre_checkout_query" | "poll" | "poll_answer" | "my_chat_member" | "chat_member" | "chat_join_request" | "chat_boost" | "removed_chat_boost" | Q[] @@ -180,7 +180,7 @@ export function matchFilter( return (up: U): up is Filter => !!up; >(up: U): up is Filter => !!up : (up: U) => up is Filter -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >up : U > : ^ >!!up : true @@ -253,7 +253,7 @@ class EventHub { use(...middleware: Array>): EventHub { >use : (...middleware: Array>) => EventHub -> : ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >middleware : Middleware[] > : ^^^^^^^^^^^^^^^ @@ -261,11 +261,11 @@ class EventHub { >console.log("Adding", middleware.length, "generic handlers") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Adding" : "Adding" > : ^^^^^^^^ >middleware.length : number @@ -283,7 +283,7 @@ class EventHub { } on( >on : (filter: Q | Q[], ...middleware: Array>>) => EventHub> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ filter: Q | Q[], >filter : Q | Q[] @@ -299,11 +299,11 @@ class EventHub { >console.log("Adding", middleware.length, "handlers for", filter) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Adding" : "Adding" > : ^^^^^^^^ >middleware.length : number diff --git a/tests/baselines/reference/doNotElaborateAssignabilityToTypeParameters.types b/tests/baselines/reference/doNotElaborateAssignabilityToTypeParameters.types index ab0ee6d090391..1ba794556cde4 100644 --- a/tests/baselines/reference/doNotElaborateAssignabilityToTypeParameters.types +++ b/tests/baselines/reference/doNotElaborateAssignabilityToTypeParameters.types @@ -3,7 +3,7 @@ === doNotElaborateAssignabilityToTypeParameters.ts === async function foo(x: T): Promise { >foo : (x: T) => Promise -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -15,7 +15,7 @@ async function foo(x: T): Promise { >getXOrYadda(x) : T | Yadda > : ^^^^^^^^^ >getXOrYadda : (x: T_1) => T_1 | Yadda -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -36,7 +36,7 @@ interface Yadda { declare function getXOrYadda(x: T): T | Yadda; >getXOrYadda : (x: T) => T | Yadda -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types index 50439cb46818c..cfff1cb5c0e77 100644 --- a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNode.types @@ -8,14 +8,14 @@ class C { /*! remove pinned comment anywhere else */ public foo(x: string, y: any) >foo : (x: string, y: any) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ >y : any public foo(x: string, y: number) { } >foo : (x: string, y: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types index 40c091297e694..d97fa1b23cb12 100644 --- a/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types +++ b/tests/baselines/reference/doNotEmitPinnedCommentOnNotEmittedNodets.types @@ -8,14 +8,14 @@ class C { /*! remove pinned comment anywhere else */ public foo(x: string, y: any) >foo : (x: string, y: any) => any -> : ^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ >y : any public foo(x: string, y: number) { } >foo : (x: string, y: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/doNotInferUnrelatedTypes.types b/tests/baselines/reference/doNotInferUnrelatedTypes.types index 381097ef5a971..e9e33f4cd9b46 100644 --- a/tests/baselines/reference/doNotInferUnrelatedTypes.types +++ b/tests/baselines/reference/doNotInferUnrelatedTypes.types @@ -4,7 +4,7 @@ // #16709 declare function dearray(ara: ReadonlyArray): T; >dearray : (ara: ReadonlyArray) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ara : readonly T[] > : ^^^^^^^^^^^^ @@ -21,8 +21,8 @@ let foo: LiteralType = dearray(alt); > : ^^^^^^^^^^^ >dearray(alt) : LiteralType > : ^^^^^^^^^^^ ->dearray : (ara: readonly T[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>dearray : (ara: ReadonlyArray) => T +> : ^ ^^ ^^ ^^^^^^ >alt : LiteralType[] > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/doWhileBreakStatements.types b/tests/baselines/reference/doWhileBreakStatements.types index 886e2bc15780c..3106e052df1df 100644 --- a/tests/baselines/reference/doWhileBreakStatements.types +++ b/tests/baselines/reference/doWhileBreakStatements.types @@ -97,7 +97,7 @@ do{ >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : break EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/doWhileContinueStatements.types b/tests/baselines/reference/doWhileContinueStatements.types index 1cd19b0c62655..6f79737be4c10 100644 --- a/tests/baselines/reference/doWhileContinueStatements.types +++ b/tests/baselines/reference/doWhileContinueStatements.types @@ -97,7 +97,7 @@ do{ >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : continue EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2015.types b/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2015.types index e7253d7d42ab4..4571d37218093 100644 --- a/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2015.types +++ b/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2015.types @@ -6,7 +6,7 @@ const noOp = () => {}; >noOp : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : const testReflectApply = Reflect.apply(noOp, this, []); >testReflectApply : any @@ -212,7 +212,7 @@ const testArrayFind = [""].find((val, idx, obj) => { >find : any > : ^^^ >(val, idx, obj) => { return true;} : (val: any, idx: any, obj: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >val : any > : ^^^ >idx : any @@ -239,7 +239,7 @@ const testArrayFindIndex = [""].findIndex((val, idx, obj) => { >findIndex : any > : ^^^ >(val, idx, obj) => { return true;} : (val: any, idx: any, obj: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >val : any > : ^^^ >idx : any @@ -392,11 +392,11 @@ const testObjectConstructorKeys = Object.keys({}); >Object.keys({}) : string[] > : ^^^^^^^^ >Object.keys : (o: object) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >keys : (o: object) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >{} : {} > : ^^ diff --git a/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2016Plus.types b/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2016Plus.types index fbbbc256363f2..fc244186c70e0 100644 --- a/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2016Plus.types +++ b/tests/baselines/reference/doYouNeedToChangeYourTargetLibraryES2016Plus.types @@ -165,12 +165,12 @@ const testRegExpMatchArrayGroups = "2019-04-30".match(/(?[0-9]{4})-(? : ^^^ >"2019-04-30".match(/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g) : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ ->"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"2019-04-30".match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >"2019-04-30" : "2019-04-30" > : ^^^^^^^^^^^^ ->match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray; }): RegExpMatchArray; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>match : { (regexp: string | RegExp): RegExpMatchArray; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp > : ^^^^^^ >groups : any @@ -184,11 +184,11 @@ const testRegExpExecArrayGroups = /(?[0-9]{4})-(?[0-9]{2})-(?[ >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec("2019-04-30") : RegExpExecArray > : ^^^^^^^^^^^^^^^ >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g.exec : (string: string) => RegExpExecArray -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/g : RegExp > : ^^^^^^ >exec : (string: string) => RegExpExecArray -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >"2019-04-30" : "2019-04-30" > : ^^^^^^^^^^^^ >groups : any diff --git a/tests/baselines/reference/doesNotNarrowUnionOfConstructorsWithInstanceof.types b/tests/baselines/reference/doesNotNarrowUnionOfConstructorsWithInstanceof.types index abc161526be8c..90820f88741af 100644 --- a/tests/baselines/reference/doesNotNarrowUnionOfConstructorsWithInstanceof.types +++ b/tests/baselines/reference/doesNotNarrowUnionOfConstructorsWithInstanceof.types @@ -49,7 +49,7 @@ class B { function getTypedArray(flag: boolean) { >getTypedArray : (flag: boolean) => A | B -> : ^^^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >flag : boolean > : ^^^^^^^ @@ -69,7 +69,7 @@ function getTypedArray(flag: boolean) { } function getTypedArrayConstructor(flag: boolean) { >getTypedArrayConstructor : (flag: boolean) => typeof A | typeof B -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >flag : boolean > : ^^^^^^^ @@ -89,7 +89,7 @@ const a = getTypedArray(true); // A | B >getTypedArray(true) : A | B > : ^^^^^ >getTypedArray : (flag: boolean) => A | B -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >true : true > : ^^^^ @@ -99,7 +99,7 @@ const b = getTypedArrayConstructor(false); // A constructor | B constructor >getTypedArrayConstructor(false) : typeof A | typeof B > : ^^^^^^^^^^^^^^^^^^^ >getTypedArrayConstructor : (flag: boolean) => typeof A | typeof B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ @@ -119,11 +119,11 @@ if (!(a instanceof b)) { >console.log(a.length) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a.length : 1 | 2 > : ^^^^^ >a : A | B diff --git a/tests/baselines/reference/dottedModuleName.types b/tests/baselines/reference/dottedModuleName.types index 44741c6f58db5..29eb2fff71506 100644 --- a/tests/baselines/reference/dottedModuleName.types +++ b/tests/baselines/reference/dottedModuleName.types @@ -11,7 +11,7 @@ module M { export function f(x:number)=>2*x; >f : (x: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ >2*x : number @@ -35,7 +35,7 @@ module M { >f(v) : any > : ^^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >v : any > : ^^^ } @@ -66,7 +66,7 @@ module M.N { >f(10) : any > : ^^^ >f : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >10 : 10 > : ^^ } diff --git a/tests/baselines/reference/dottedSymbolResolution1.types b/tests/baselines/reference/dottedSymbolResolution1.types index 78f881a5ae941..521e310801ed5 100644 --- a/tests/baselines/reference/dottedSymbolResolution1.types +++ b/tests/baselines/reference/dottedSymbolResolution1.types @@ -4,7 +4,7 @@ interface JQuery { find(selector: string): JQuery; >find : (selector: string) => JQuery -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >selector : string > : ^^^^^^ } @@ -28,21 +28,21 @@ class Base { foo() { } } function each(collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; >each : { (collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; (collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^ >collection : string > : ^^^^^^ >callback : (indexInArray: any, valueOfElement: any) => any -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >indexInArray : any >valueOfElement : any function each(collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any; >each : { (collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; (collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >collection : JQuery > : ^^^^^^ >callback : (indexInArray: number, valueOfElement: Base) => any -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >indexInArray : number > : ^^^^^^ >valueOfElement : Base @@ -50,10 +50,10 @@ function each(collection: JQuery, callback: (indexInArray: number, valueOfElemen function each(collection: any, callback: (indexInArray: any, valueOfElement: any) => any): any { >each : { (collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; (collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >collection : any >callback : (indexInArray: any, valueOfElement: any) => any -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >indexInArray : any >valueOfElement : any @@ -73,15 +73,15 @@ function _setBarAndText(): void { each(x.find(" "), function () { >each(x.find(" "), function () { var $this: JQuery = $(''), thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here } ) : any >each : { (collection: string, callback: (indexInArray: any, valueOfElement: any) => any): any; (collection: JQuery, callback: (indexInArray: number, valueOfElement: Base) => any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x.find(" ") : JQuery > : ^^^^^^ >x.find : (selector: string) => JQuery -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : JQuery > : ^^^^^^ >find : (selector: string) => JQuery -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >" " : " " > : ^^^ >function () { var $this: JQuery = $(''), thisBar = $this.find(".fx-usagebars-calloutbar-this"); // bug lead to 'could not find dotted symbol' here } : () => void @@ -103,11 +103,11 @@ function _setBarAndText(): void { >$this.find(".fx-usagebars-calloutbar-this") : JQuery > : ^^^^^^ >$this.find : (selector: string) => JQuery -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >$this : JQuery > : ^^^^^^ >find : (selector: string) => JQuery -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >".fx-usagebars-calloutbar-this" : ".fx-usagebars-calloutbar-this" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/doubleMixinConditionalTypeBaseClassWorks.types b/tests/baselines/reference/doubleMixinConditionalTypeBaseClassWorks.types index ed1b7cda15522..06dd4191ced98 100644 --- a/tests/baselines/reference/doubleMixinConditionalTypeBaseClassWorks.types +++ b/tests/baselines/reference/doubleMixinConditionalTypeBaseClassWorks.types @@ -9,13 +9,13 @@ type Constructor = new (...args: any[]) => {}; const Mixin1 = (Base: C) => class extends Base { private _fooPrivate: {}; } >Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >(Base: C) => class extends Base { private _fooPrivate: {}; } : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ >Base : C > : ^ >class extends Base { private _fooPrivate: {}; } : { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >Base : {} > : ^^ >_fooPrivate : {} @@ -23,35 +23,35 @@ const Mixin1 = (Base: C) => class extends Base { private type FooConstructor = typeof Mixin1 extends (a: Constructor) => infer Cls ? Cls : never; >FooConstructor : { new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & Constructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : Constructor > : ^^^^^^^^^^^ const Mixin2 = (Base: C) => class extends Base {}; >Mixin2 : .(Anonymous class); prototype: Mixin1.(Anonymous class); } & Constructor>(Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >(Base: C) => class extends Base {} : .(Anonymous class); prototype: Mixin1.(Anonymous class); } & Constructor>(Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^ ^^^ ^^^ ^^^ >Base : C > : ^ >class extends Base {} : { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >Base : Mixin1.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ class C extends Mixin2(Mixin1(Object)) {} >C : C > : ^ >Mixin2(Mixin1(Object)) : Mixin2<{ new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & ObjectConstructor>.(Anonymous class) & Mixin1.(Anonymous class) & Object -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Mixin2 : .(Anonymous class); prototype: Mixin1.(Anonymous class); } & Constructor>(Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin2.(Anonymous class); } & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >Mixin1(Object) : { new (...args: any[]): Mixin1.(Anonymous class); prototype: Mixin1.(Anonymous class); } & ObjectConstructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Mixin1 : (Base: C) => { new (...args: any[]): (Anonymous class); prototype: Mixin1.(Anonymous class); } & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/doubleUnderscoreEnumEmit.types b/tests/baselines/reference/doubleUnderscoreEnumEmit.types index 0190335b66dcb..976da4c503009 100644 --- a/tests/baselines/reference/doubleUnderscoreEnumEmit.types +++ b/tests/baselines/reference/doubleUnderscoreEnumEmit.types @@ -56,7 +56,7 @@ namespace Bar { export function __call(x: number): number { >__call : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/doubleUnderscoreReactNamespace.types b/tests/baselines/reference/doubleUnderscoreReactNamespace.types index 0805732910c33..409205aa4fb7b 100644 --- a/tests/baselines/reference/doubleUnderscoreReactNamespace.types +++ b/tests/baselines/reference/doubleUnderscoreReactNamespace.types @@ -7,7 +7,7 @@ declare global { function __make (params: object): any; >__make : (params: object) => any -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >params : object > : ^^^^^^ } diff --git a/tests/baselines/reference/downlevelLetConst14.types b/tests/baselines/reference/downlevelLetConst14.types index 8e844d6d8299f..56dd340727ea2 100644 --- a/tests/baselines/reference/downlevelLetConst14.types +++ b/tests/baselines/reference/downlevelLetConst14.types @@ -7,7 +7,7 @@ declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any var x = 10; @@ -31,7 +31,7 @@ var z0, z1, z2, z3; use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -46,7 +46,7 @@ var z0, z1, z2, z3; use(z0); >use(z0) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z0 : number > : ^^^^^^ @@ -61,7 +61,7 @@ var z0, z1, z2, z3; use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : number > : ^^^^^^ @@ -80,7 +80,7 @@ var z0, z1, z2, z3; use(z2); >use(z2) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z2 : number > : ^^^^^^ @@ -99,39 +99,39 @@ var z0, z1, z2, z3; use(z3); >use(z3) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z3 : number > : ^^^^^^ } use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ use(z0); >use(z0) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z0 : any use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : any use(z2); >use(z2) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z2 : any use(z3); >use(z3) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z3 : any var z6; @@ -178,42 +178,42 @@ var y = true; use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : number > : ^^^^^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : string > : ^^^^^^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : boolean > : ^^^^^^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : true > : ^^^^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : any var z = false; @@ -264,21 +264,21 @@ var z5 = 1; use(_z); >use(_z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >_z : number > : ^^^^^^ } use(z); >use(z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : string > : ^^^^^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : true > : ^^^^ diff --git a/tests/baselines/reference/downlevelLetConst15.types b/tests/baselines/reference/downlevelLetConst15.types index 4608fed1c3b80..d9db80cf386a7 100644 --- a/tests/baselines/reference/downlevelLetConst15.types +++ b/tests/baselines/reference/downlevelLetConst15.types @@ -7,7 +7,7 @@ declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any var x = 10; @@ -31,7 +31,7 @@ var z0, z1, z2, z3; use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 20 > : ^^ @@ -46,7 +46,7 @@ var z0, z1, z2, z3; use(z0); >use(z0) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z0 : number > : ^^^^^^ @@ -67,7 +67,7 @@ var z0, z1, z2, z3; use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : number > : ^^^^^^ @@ -86,7 +86,7 @@ var z0, z1, z2, z3; use(z2); >use(z2) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z2 : number > : ^^^^^^ @@ -111,39 +111,39 @@ var z0, z1, z2, z3; use(z3); >use(z3) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z3 : number > : ^^^^^^ } use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ use(z0); >use(z0) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z0 : any use(z1); >use(z1) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z1 : any use(z2); >use(z2) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z2 : any use(z3); >use(z3) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z3 : any var z6; @@ -190,42 +190,42 @@ var y = true; use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : 1 > : ^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : number > : ^^^^^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : "" > : ^^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : boolean > : ^^^^^^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : true > : ^^^^ use(z6); >use(z6) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z6 : any var z = false; @@ -276,21 +276,21 @@ var z5 = 1; use(_z); >use(_z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >_z : 1 > : ^ } use(z); >use(z) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : "" > : ^^ } use(y); >use(y) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : true > : ^^^^ diff --git a/tests/baselines/reference/downlevelLetConst16.types b/tests/baselines/reference/downlevelLetConst16.types index a5a74dc6ec083..fcf125771132f 100644 --- a/tests/baselines/reference/downlevelLetConst16.types +++ b/tests/baselines/reference/downlevelLetConst16.types @@ -7,7 +7,7 @@ declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any > : ^^^ @@ -29,7 +29,7 @@ use(x); >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -37,7 +37,7 @@ use(y); >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : any > : ^^^ @@ -45,7 +45,7 @@ use(z); >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : any > : ^^^ @@ -63,7 +63,7 @@ function foo1() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -79,7 +79,7 @@ function foo1() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -99,7 +99,7 @@ function foo1() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -118,7 +118,7 @@ function foo2() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -134,7 +134,7 @@ function foo2() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -154,7 +154,7 @@ function foo2() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -162,7 +162,7 @@ function foo2() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -185,7 +185,7 @@ class A { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -201,7 +201,7 @@ class A { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -221,7 +221,7 @@ class A { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -239,7 +239,7 @@ class A { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -255,7 +255,7 @@ class A { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -275,7 +275,7 @@ class A { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -283,7 +283,7 @@ class A { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -308,7 +308,7 @@ class B { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -324,7 +324,7 @@ class B { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -344,7 +344,7 @@ class B { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ @@ -363,7 +363,7 @@ class B { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -379,7 +379,7 @@ class B { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -399,7 +399,7 @@ class B { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ @@ -408,7 +408,7 @@ class B { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -428,7 +428,7 @@ function bar1() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -444,7 +444,7 @@ function bar1() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -464,7 +464,7 @@ function bar1() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -483,7 +483,7 @@ function bar2() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -499,7 +499,7 @@ function bar2() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -519,7 +519,7 @@ function bar2() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ @@ -528,7 +528,7 @@ function bar2() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -547,7 +547,7 @@ module M1 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -563,7 +563,7 @@ module M1 { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -583,7 +583,7 @@ module M1 { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -602,7 +602,7 @@ module M2 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -618,7 +618,7 @@ module M2 { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -638,7 +638,7 @@ module M2 { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -646,7 +646,7 @@ module M2 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -665,7 +665,7 @@ module M3 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -681,7 +681,7 @@ module M3 { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -701,7 +701,7 @@ module M3 { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ @@ -721,7 +721,7 @@ module M4 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ @@ -737,7 +737,7 @@ module M4 { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : number > : ^^^^^^ @@ -757,7 +757,7 @@ module M4 { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ @@ -766,7 +766,7 @@ module M4 { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -774,7 +774,7 @@ module M4 { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : any > : ^^^ @@ -782,7 +782,7 @@ module M4 { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : any > : ^^^ } @@ -799,7 +799,7 @@ function foo3() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -813,7 +813,7 @@ function foo3() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : undefined > : ^^^^^^^^^ } @@ -833,7 +833,7 @@ function foo3() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -841,7 +841,7 @@ function foo3() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -860,7 +860,7 @@ function foo4() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 1 > : ^ } @@ -874,7 +874,7 @@ function foo4() { >use(y) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >y : undefined > : ^^^^^^^^^ } @@ -894,7 +894,7 @@ function foo4() { >use(z) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >z : number > : ^^^^^^ } @@ -902,7 +902,7 @@ function foo4() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -921,7 +921,7 @@ function foo5() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ } @@ -929,7 +929,7 @@ function foo5() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -948,7 +948,7 @@ function foo6() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ } @@ -956,7 +956,7 @@ function foo6() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -975,7 +975,7 @@ function foo7() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -983,7 +983,7 @@ function foo7() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -1002,7 +1002,7 @@ function foo8() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -1010,7 +1010,7 @@ function foo8() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -1031,7 +1031,7 @@ function foo9() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -1039,7 +1039,7 @@ function foo9() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -1058,7 +1058,7 @@ function foo10() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -1066,7 +1066,7 @@ function foo10() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -1085,7 +1085,7 @@ function foo11() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -1093,7 +1093,7 @@ function foo11() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } @@ -1114,7 +1114,7 @@ function foo12() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -1122,7 +1122,7 @@ function foo12() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } diff --git a/tests/baselines/reference/downlevelLetConst17.types b/tests/baselines/reference/downlevelLetConst17.types index 669cd5b1c1d47..1e6193638c4c5 100644 --- a/tests/baselines/reference/downlevelLetConst17.types +++ b/tests/baselines/reference/downlevelLetConst17.types @@ -7,7 +7,7 @@ declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any var x; @@ -22,14 +22,14 @@ for (let x = 10; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ } use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any for (const x = 10; ;) { @@ -41,7 +41,7 @@ for (const x = 10; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 10 > : ^^ } @@ -56,7 +56,7 @@ for (; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ @@ -79,7 +79,7 @@ for (; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : 10 > : ^^ } @@ -90,7 +90,7 @@ for (let x; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any x = 1; @@ -108,7 +108,7 @@ for (; ;) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any x = 1; @@ -129,7 +129,7 @@ while (true) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any } @@ -146,7 +146,7 @@ while (true) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : true > : ^^^^ } @@ -158,7 +158,7 @@ do { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any } while (true); @@ -172,7 +172,7 @@ do { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any } while (true); @@ -188,7 +188,7 @@ for (let x in []) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ } @@ -202,7 +202,7 @@ for (const x in []) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ } @@ -215,6 +215,6 @@ for (const x of []) { use(x); >use(x) : any >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any } diff --git a/tests/baselines/reference/downlevelLetConst19.types b/tests/baselines/reference/downlevelLetConst19.types index 149c233793dfe..3daed202f29cd 100644 --- a/tests/baselines/reference/downlevelLetConst19.types +++ b/tests/baselines/reference/downlevelLetConst19.types @@ -7,7 +7,7 @@ declare function use(a: any); >use : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any > : ^^^ @@ -27,7 +27,7 @@ function a() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ @@ -43,7 +43,7 @@ function a() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -51,7 +51,7 @@ function a() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -60,7 +60,7 @@ function a() { >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ } @@ -68,7 +68,7 @@ use(x) >use(x) : any > : ^^^ >use : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/dtsEmitTripleSlashAvoidUnnecessaryResolutionMode.types b/tests/baselines/reference/dtsEmitTripleSlashAvoidUnnecessaryResolutionMode.types index dff10257e8f38..c4fdf1f3c632c 100644 --- a/tests/baselines/reference/dtsEmitTripleSlashAvoidUnnecessaryResolutionMode.types +++ b/tests/baselines/reference/dtsEmitTripleSlashAvoidUnnecessaryResolutionMode.types @@ -4,7 +4,7 @@ /// export async function drainStream(stream: NodeJS.ReadableStream): Promise { >drainStream : (stream: NodeJS.ReadableStream) => Promise -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >stream : NodeJS.ReadableStream > : ^^^^^^^^^^^^^^^^^^^^^ >NodeJS : any diff --git a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types index 37389793dc8b0..1ecb97cf20b5c 100644 --- a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types +++ b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration1.types @@ -3,7 +3,7 @@ === duplicateIdentifierBindingElementInParameterDeclaration1.ts === function f0(a, [a, [b]], {b}) { } >f0 : (a: any, [a, [b]]: [any, [any]], { b }: { b: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -15,7 +15,7 @@ function f0(a, [a, [b]], {b}) { } function f1([a, a]) { } >f1 : ([a, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -23,7 +23,7 @@ function f1([a, a]) { } function f2({b}, {b}) { } >f2 : ({ b }: { b: any; }, { b }: { b: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >b : any > : ^^^ >b : any @@ -31,7 +31,7 @@ function f2({b}, {b}) { } function f3([c,[c],[[c]]]) { } >f3 : ([c, [c], [[c]]]: [any, [any], [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : any > : ^^^ >c : any @@ -41,7 +41,7 @@ function f3([c,[c],[[c]]]) { } function f4({d, d:{d}}) { } >f4 : ({ d, d: { d } }: { d: { d: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { d: any; } > : ^^^^^^^^^^^ >d : any @@ -51,7 +51,7 @@ function f4({d, d:{d}}) { } function f5({e, e: {e}}, {e}, [d,e, [[e]]], ...e) { } >f5 : ({ e, e: { e } }: { e: { e: any; }; }, { e }: { e: any; }, [d, e, [[e]]]: [any, any, [[any]]], ...e: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >e : { e: any; } > : ^^^^^^^^^^^ >e : any @@ -71,7 +71,7 @@ function f5({e, e: {e}}, {e}, [d,e, [[e]]], ...e) { } function f6([f, ...f]) { } >f6 : ([f, ...f]: [any, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : any > : ^^^ >f : any[] @@ -79,13 +79,13 @@ function f6([f, ...f]) { } function f7(a, func = (a) => { return 1 }) { } // not error >f7 : (a: any, func?: (a: any) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >func : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(a) => { return 1 } : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >1 : 1 diff --git a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types index 438d892eb98d2..26ff03e8f988a 100644 --- a/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types +++ b/tests/baselines/reference/duplicateIdentifierBindingElementInParameterDeclaration2.types @@ -7,7 +7,7 @@ function f0(a, [a, [b]], {b}) { } >f0 : (a: any, [a, [b]]: [any, [any]], { b }: { b: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -19,7 +19,7 @@ function f0(a, [a, [b]], {b}) { } function f1([a, a]) { } >f1 : ([a, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -27,7 +27,7 @@ function f1([a, a]) { } function f2({b}, {b}) { } >f2 : ({ b }: { b: any; }, { b }: { b: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >b : any > : ^^^ >b : any @@ -35,7 +35,7 @@ function f2({b}, {b}) { } function f3([c, [c], [[c]]]) { } >f3 : ([c, [c], [[c]]]: [any, [any], [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : any > : ^^^ >c : any @@ -45,7 +45,7 @@ function f3([c, [c], [[c]]]) { } function f4({d, d: {d}}) { } >f4 : ({ d, d: { d } }: { d: { d: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { d: any; } > : ^^^^^^^^^^^ >d : any @@ -55,7 +55,7 @@ function f4({d, d: {d}}) { } function f5({e, e: {e}}, {e}, [d, e, [[e]]], ...e) { } >f5 : ({ e, e: { e } }: { e: { e: any; }; }, { e }: { e: any; }, [d, e, [[e]]]: [any, any, [[any]]], ...e: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >e : { e: any; } > : ^^^^^^^^^^^ >e : any @@ -75,7 +75,7 @@ function f5({e, e: {e}}, {e}, [d, e, [[e]]], ...e) { } function f6([f, ...f]) { } >f6 : ([f, ...f]: [any, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : any > : ^^^ >f : any[] @@ -83,13 +83,13 @@ function f6([f, ...f]) { } function f7(a, func = (a) => { return 1 }){ } // not error >f7 : (a: any, func?: (a: any) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >func : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(a) => { return 1 } : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >1 : 1 diff --git a/tests/baselines/reference/duplicateLocalVariable1.types b/tests/baselines/reference/duplicateLocalVariable1.types index fae51e27568e8..23424564359eb 100644 --- a/tests/baselines/reference/duplicateLocalVariable1.types +++ b/tests/baselines/reference/duplicateLocalVariable1.types @@ -43,7 +43,7 @@ export class TestRunner { static arrayCompare(arg1: any[], arg2: any[]): boolean { >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >arg1 : any[] > : ^^^^^ >arg2 : any[] @@ -55,13 +55,13 @@ export class TestRunner { >arg1.every(function (val, index) { return val === arg2[index] }) : boolean > : ^^^^^^^ >arg1.every : { (predicate: (value: any, index: number, array: any[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >arg1 : any[] > : ^^^^^ >every : { (predicate: (value: any, index: number, array: any[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >function (val, index) { return val === arg2[index] } : (val: any, index: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >val : any > : ^^^ >index : number @@ -80,7 +80,7 @@ export class TestRunner { public addTest(test: TestCase) { >addTest : (test: TestCase) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >test : TestCase > : ^^^^^^^^ @@ -88,7 +88,7 @@ export class TestRunner { >this.tests.push(test) : number > : ^^^^^^ >this.tests.push : (...items: TestCase[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >this.tests : TestCase[] > : ^^^^^^^^^^ >this : this @@ -96,7 +96,7 @@ export class TestRunner { >tests : TestCase[] > : ^^^^^^^^^^ >push : (...items: TestCase[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >test : TestCase > : ^^^^^^^^ } @@ -247,11 +247,11 @@ export class TestRunner { >regex.test(e.message) : boolean > : ^^^^^^^ >regex.test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >regex : RegExp > : ^^^^^^ >test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >e.message : any > : ^^^ >e : any @@ -346,11 +346,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Basic test", function () { return true; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Basic test", function () { return true; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -366,11 +366,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test for any error", function () { throw new Error(); return false; }, "")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test for any error", function () { throw new Error(); return false; }, "") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -392,11 +392,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test RegEx error message match", function () { throw new Error("Should also pass"); return false; }, "Should [also]+ pass")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test RegEx error message match", function () { throw new Error("Should also pass"); return false; }, "Should [also]+ pass") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -420,11 +420,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test array compare true", function () { return TestRunner.arrayCompare([1, 2, 3], [1, 2, 3]); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test array compare true", function () { return TestRunner.arrayCompare([1, 2, 3], [1, 2, 3]); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -436,11 +436,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare([1, 2, 3], [1, 2, 3]) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -462,11 +462,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test array compare false", function () { return !TestRunner.arrayCompare([3, 2, 3], [1, 2, 3]); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test array compare false", function () { return !TestRunner.arrayCompare([3, 2, 3], [1, 2, 3]); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -480,11 +480,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare([3, 2, 3], [1, 2, 3]) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >[3, 2, 3] : number[] > : ^^^^^^^^ >3 : 3 @@ -507,11 +507,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check file exists", function () { return FileManager.DirectoryManager.fileExists(TestFileDir + "\\Test.txt"); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check file exists", function () { return FileManager.DirectoryManager.fileExists(TestFileDir + "\\Test.txt"); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -548,11 +548,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check file doesn't exist", function () { return !FileManager.DirectoryManager.fileExists(TestFileDir + "\\Test2.txt"); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check file doesn't exist", function () { return !FileManager.DirectoryManager.fileExists(TestFileDir + "\\Test2.txt"); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -593,11 +593,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check text file match", function () { return (FileManager.FileBuffer.isTextFile("C:\\somedir\\readme.txt") && FileManager.FileBuffer.isTextFile("C:\\spaces path\\myapp.str") && FileManager.FileBuffer.isTextFile("C:\\somedir\\code.js")) })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check text file match", function () { return (FileManager.FileBuffer.isTextFile("C:\\somedir\\readme.txt") && FileManager.FileBuffer.isTextFile("C:\\spaces path\\myapp.str") && FileManager.FileBuffer.isTextFile("C:\\somedir\\code.js")) }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -668,11 +668,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check makefile match", function () { return FileManager.FileBuffer.isTextFile("C:\\some dir\\makefile"); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check makefile match", function () { return FileManager.FileBuffer.isTextFile("C:\\some dir\\makefile"); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -705,11 +705,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check binary file doesn't match", function () { return (!FileManager.FileBuffer.isTextFile("C:\\somedir\\app.exe") && !FileManager.FileBuffer.isTextFile("C:\\somedir\\my lib.dll")); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check binary file doesn't match", function () { return (!FileManager.FileBuffer.isTextFile("C:\\somedir\\app.exe") && !FileManager.FileBuffer.isTextFile("C:\\somedir\\my lib.dll")); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -768,11 +768,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check App defaults", function () { var app = new App.App([]); return (app.fixLines === false && app.recurse === true && app.lineEndings === "CRLF" && app.matchPattern === undefined && app.rootDirectory === ".\\" && app.encodings[0] === "ascii" && app.encodings[1] === "utf8nobom"); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check App defaults", function () { var app = new App.App([]); return (app.fixLines === false && app.recurse === true && app.lineEndings === "CRLF" && app.matchPattern === undefined && app.rootDirectory === ".\\" && app.encodings[0] === "ascii" && app.encodings[1] === "utf8nobom"); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -909,11 +909,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check App params", function () { var app = new App.App(["-dir=C:\\test dir", "-lineEndings=LF", "-encodings=utf16be,ascii", "-recurse=false", "-fixlines"]); return (app.fixLines === true && app.lineEndings === "LF" && app.recurse === false && app.matchPattern === undefined && app.rootDirectory === "C:\\test dir" && app.encodings[0] === "utf16be" && app.encodings[1] === "ascii" && app.encodings.length === 2); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check App params", function () { var app = new App.App(["-dir=C:\\test dir", "-lineEndings=LF", "-encodings=utf16be,ascii", "-recurse=false", "-fixlines"]); return (app.fixLines === true && app.lineEndings === "LF" && app.recurse === false && app.matchPattern === undefined && app.rootDirectory === "C:\\test dir" && app.encodings[0] === "utf16be" && app.encodings[1] === "ascii" && app.encodings.length === 2); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1080,11 +1080,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding detection no BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\noBOM.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding detection no BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\noBOM.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1143,11 +1143,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding detection UTF8 BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); return fb.bom === 'utf8' && fb.encoding === 'utf8'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding detection UTF8 BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); return fb.bom === 'utf8' && fb.encoding === 'utf8'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1206,11 +1206,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding detection UTF16be BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF16BE.txt"); return fb.bom === 'utf16be' && fb.encoding === 'utf16be'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding detection UTF16be BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF16BE.txt"); return fb.bom === 'utf16be' && fb.encoding === 'utf16be'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1269,11 +1269,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding detection UTF16le BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF16LE.txt"); return fb.bom === 'utf16le' && fb.encoding === 'utf16le'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding detection UTF16le BOM", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF16LE.txt"); return fb.bom === 'utf16le' && fb.encoding === 'utf16le'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1332,11 +1332,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding on 1 bytes file", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\1bytefile.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding on 1 bytes file", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\1bytefile.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1395,11 +1395,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check encoding on 0 bytes file", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\0bytefile.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check encoding on 0 bytes file", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\0bytefile.txt"); return fb.bom === 'none' && fb.encoding === 'utf8'; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1460,11 +1460,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check byte reader", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var chars = []; for (var i = 0; i < 11; i++) { chars.push(fb.readByte()); } return TestRunner.arrayCompare(chars, [0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check byte reader", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var chars = []; for (var i = 0; i < 11; i++) { chars.push(fb.readByte()); } return TestRunner.arrayCompare(chars, [0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1520,11 +1520,11 @@ export var tests: TestRunner = (function () { >chars.push(fb.readByte()) : number > : ^^^^^^ >chars.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >chars : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >fb.readByte() : any > : ^^^ >fb.readByte : any @@ -1538,11 +1538,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(chars, [0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >chars : any[] > : ^^^^^ >[0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A] : number[] @@ -1577,11 +1577,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check UTF8 decoding", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var chars = []; for (var i = 0; i < 6; i++) { chars.push(fb.readUtf8CodePoint()); } return TestRunner.arrayCompare(chars, [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check UTF8 decoding", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var chars = []; for (var i = 0; i < 6; i++) { chars.push(fb.readUtf8CodePoint()); } return TestRunner.arrayCompare(chars, [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1637,11 +1637,11 @@ export var tests: TestRunner = (function () { >chars.push(fb.readUtf8CodePoint()) : number > : ^^^^^^ >chars.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >chars : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >fb.readUtf8CodePoint() : any > : ^^^ >fb.readUtf8CodePoint : any @@ -1655,11 +1655,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(chars, [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >chars : any[] > : ^^^^^ >[0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A] : number[] @@ -1683,11 +1683,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check UTF8 encoding", function () { var fb = new FileManager.FileBuffer(20); fb.writeUtf8Bom(); var chars = [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]; for (var i in chars) { fb.writeUtf8CodePoint(chars[i]); } fb.index = 0; var bytes = []; for (var i = 0; i < 14; i++) { bytes.push(fb.readByte()); } var expected = [0xEF, 0xBB, 0xBF, 0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]; return TestRunner.arrayCompare(bytes, expected); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check UTF8 encoding", function () { var fb = new FileManager.FileBuffer(20); fb.writeUtf8Bom(); var chars = [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]; for (var i in chars) { fb.writeUtf8CodePoint(chars[i]); } fb.index = 0; var bytes = []; for (var i = 0; i < 14; i++) { bytes.push(fb.readByte()); } var expected = [0xEF, 0xBB, 0xBF, 0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]; return TestRunner.arrayCompare(bytes, expected); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1801,11 +1801,11 @@ export var tests: TestRunner = (function () { >bytes.push(fb.readByte()) : number > : ^^^^^^ >bytes.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >bytes : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >fb.readByte() : any > : ^^^ >fb.readByte : any @@ -1853,11 +1853,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(bytes, expected) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >bytes : any[] > : ^^^^^ >expected : number[] @@ -1870,11 +1870,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check saving a file", function () { var filename = TestFileDir + "\\tmpUTF16LE.txt"; var fb = new FileManager.FileBuffer(14); fb.writeUtf16leBom(); var chars = [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]; chars.forEach(function (val) { fb.writeUtf16CodePoint(val, false); }); fb.save(filename); var savedFile = new FileManager.FileBuffer(filename); if (savedFile.encoding !== 'utf16le') { throw Error("Incorrect encoding"); } var expectedBytes = [0xFF, 0xFE, 0x54, 0x00, 0xE8, 0x00, 0x23, 0x1D, 0x20, 0x20, 0x0D, 0x00, 0x0A, 0x00] savedFile.index = 0; expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }); return true; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check saving a file", function () { var filename = TestFileDir + "\\tmpUTF16LE.txt"; var fb = new FileManager.FileBuffer(14); fb.writeUtf16leBom(); var chars = [0x0054, 0x00E8, 0x1D23, 0x2020, 0x000D, 0x000A]; chars.forEach(function (val) { fb.writeUtf16CodePoint(val, false); }); fb.save(filename); var savedFile = new FileManager.FileBuffer(filename); if (savedFile.encoding !== 'utf16le') { throw Error("Incorrect encoding"); } var expectedBytes = [0xFF, 0xFE, 0x54, 0x00, 0xE8, 0x00, 0x23, 0x1D, 0x20, 0x20, 0x0D, 0x00, 0x0A, 0x00] savedFile.index = 0; expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }); return true; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -1942,13 +1942,13 @@ export var tests: TestRunner = (function () { >chars.forEach(function (val) { fb.writeUtf16CodePoint(val, false); }) : void > : ^^^^ >chars.forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >chars : number[] > : ^^^^^^^^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function (val) { fb.writeUtf16CodePoint(val, false); } : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >val : number > : ^^^^^^ >fb.writeUtf16CodePoint(val, false) : any @@ -2060,13 +2060,13 @@ export var tests: TestRunner = (function () { >expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }) : void > : ^^^^ >expectedBytes.forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >expectedBytes : number[] > : ^^^^^^^^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } } : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >val : number > : ^^^^^^ @@ -2109,11 +2109,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check reading past buffer asserts", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var result = fb.readByte(200); return true; }, "read beyond buffer length")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check reading past buffer asserts", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); var result = fb.readByte(200); return true; }, "read beyond buffer length") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2169,11 +2169,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check writing past buffer asserts", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); fb.writeByte(5, 200); return true; }, "write beyond buffer length")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check writing past buffer asserts", function () { var fb = new FileManager.FileBuffer(TestFileDir + "\\UTF8BOM.txt"); fb.writeByte(5, 200); return true; }, "write beyond buffer length") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2230,11 +2230,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Read non-BMP utf16 chars", function () { var savedFile = new FileManager.FileBuffer(TestFileDir + "\\utf16leNonBmp.txt"); if (savedFile.encoding !== 'utf16le') { throw Error("Incorrect encoding"); } var codePoints = []; for (var i = 0; i < 6; i++) { codePoints.push(savedFile.readUtf16CodePoint(false)); } var expectedCodePoints = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; return TestRunner.arrayCompare(codePoints, expectedCodePoints); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Read non-BMP utf16 chars", function () { var savedFile = new FileManager.FileBuffer(TestFileDir + "\\utf16leNonBmp.txt"); if (savedFile.encoding !== 'utf16le') { throw Error("Incorrect encoding"); } var codePoints = []; for (var i = 0; i < 6; i++) { codePoints.push(savedFile.readUtf16CodePoint(false)); } var expectedCodePoints = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; return TestRunner.arrayCompare(codePoints, expectedCodePoints); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2311,11 +2311,11 @@ export var tests: TestRunner = (function () { >codePoints.push(savedFile.readUtf16CodePoint(false)) : number > : ^^^^^^ >codePoints.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >codePoints : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >savedFile.readUtf16CodePoint(false) : any > : ^^^ >savedFile.readUtf16CodePoint : any @@ -2349,11 +2349,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(codePoints, expectedCodePoints) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >codePoints : any[] > : ^^^^^ >expectedCodePoints : number[] @@ -2365,11 +2365,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Read non-BMP utf8 chars", function () { var savedFile = new FileManager.FileBuffer(TestFileDir + "\\utf8NonBmp.txt"); if (savedFile.encoding !== 'utf8') { throw Error("Incorrect encoding"); } var codePoints = []; for (var i = 0; i < 6; i++) { codePoints.push(savedFile.readUtf8CodePoint()); } var expectedCodePoints = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; return TestRunner.arrayCompare(codePoints, expectedCodePoints); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Read non-BMP utf8 chars", function () { var savedFile = new FileManager.FileBuffer(TestFileDir + "\\utf8NonBmp.txt"); if (savedFile.encoding !== 'utf8') { throw Error("Incorrect encoding"); } var codePoints = []; for (var i = 0; i < 6; i++) { codePoints.push(savedFile.readUtf8CodePoint()); } var expectedCodePoints = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; return TestRunner.arrayCompare(codePoints, expectedCodePoints); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2446,11 +2446,11 @@ export var tests: TestRunner = (function () { >codePoints.push(savedFile.readUtf8CodePoint()) : number > : ^^^^^^ >codePoints.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >codePoints : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >savedFile.readUtf8CodePoint() : any > : ^^^ >savedFile.readUtf8CodePoint : any @@ -2482,11 +2482,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(codePoints, expectedCodePoints) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >codePoints : any[] > : ^^^^^ >expectedCodePoints : number[] @@ -2498,11 +2498,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Write non-BMP utf8 chars", function () { var filename = TestFileDir + "\\tmpUTF8nonBmp.txt"; var fb = new FileManager.FileBuffer(15); var chars = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; chars.forEach(function (val) { fb.writeUtf8CodePoint(val); }); fb.save(filename); var savedFile = new FileManager.FileBuffer(filename); if (savedFile.encoding !== 'utf8') { throw Error("Incorrect encoding"); } var expectedBytes = [0xF0, 0x90, 0x92, 0x80, 0xF0, 0x90, 0x92, 0x81, 0xF0, 0x90, 0x92, 0x82, 0x54, 0x68, 0x69]; expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }); return true; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Write non-BMP utf8 chars", function () { var filename = TestFileDir + "\\tmpUTF8nonBmp.txt"; var fb = new FileManager.FileBuffer(15); var chars = [0x10480, 0x10481, 0x10482, 0x54, 0x68, 0x69]; chars.forEach(function (val) { fb.writeUtf8CodePoint(val); }); fb.save(filename); var savedFile = new FileManager.FileBuffer(filename); if (savedFile.encoding !== 'utf8') { throw Error("Incorrect encoding"); } var expectedBytes = [0xF0, 0x90, 0x92, 0x80, 0xF0, 0x90, 0x92, 0x81, 0xF0, 0x90, 0x92, 0x82, 0x54, 0x68, 0x69]; expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }); return true; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2560,13 +2560,13 @@ export var tests: TestRunner = (function () { >chars.forEach(function (val) { fb.writeUtf8CodePoint(val); }) : void > : ^^^^ >chars.forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >chars : number[] > : ^^^^^^^^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function (val) { fb.writeUtf8CodePoint(val); } : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >val : number > : ^^^^^^ >fb.writeUtf8CodePoint(val) : any @@ -2666,13 +2666,13 @@ export var tests: TestRunner = (function () { >expectedBytes.forEach(function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } }) : void > : ^^^^ >expectedBytes.forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >expectedBytes : number[] > : ^^^^^^^^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function (val) { var byteVal = savedFile.readByte(); if (byteVal !== val) { throw Error("Incorrect byte value"); } } : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >val : number > : ^^^^^^ @@ -2715,11 +2715,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test invalid lead UTF8 byte", function () { var filename = TestFileDir + "\\utf8BadLeadByte.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Invalid UTF8 byte sequence at index: 4")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test invalid lead UTF8 byte", function () { var filename = TestFileDir + "\\utf8BadLeadByte.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Invalid UTF8 byte sequence at index: 4") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2767,11 +2767,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test invalid tail UTF8 byte", function () { var filename = TestFileDir + "\\utf8InvalidTail.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trailing byte invalid at index: 8")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test invalid tail UTF8 byte", function () { var filename = TestFileDir + "\\utf8InvalidTail.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trailing byte invalid at index: 8") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2819,11 +2819,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test ANSI fails validation", function () { var filename = TestFileDir + "\\ansi.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trailing byte invalid at index: 6")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test ANSI fails validation", function () { var filename = TestFileDir + "\\ansi.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trailing byte invalid at index: 6") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2871,11 +2871,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test UTF-16LE with invalid surrogate trail fails", function () { var filename = TestFileDir + "\\utf16leInvalidSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trail surrogate has an invalid value")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test UTF-16LE with invalid surrogate trail fails", function () { var filename = TestFileDir + "\\utf16leInvalidSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trail surrogate has an invalid value") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2923,11 +2923,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test UTF-16BE with invalid surrogate head fails", function () { var filename = TestFileDir + "\\UTF16BEInvalidSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Byte sequence starts with a trail surrogate")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test UTF-16BE with invalid surrogate head fails", function () { var filename = TestFileDir + "\\UTF16BEInvalidSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Byte sequence starts with a trail surrogate") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -2975,11 +2975,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test UTF-16LE with missing trail surrogate fails", function () { var filename = TestFileDir + "\\utf16leMissingTrailSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trail surrogate has an invalid value")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test UTF-16LE with missing trail surrogate fails", function () { var filename = TestFileDir + "\\utf16leMissingTrailSurrogate.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Trail surrogate has an invalid value") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -3028,11 +3028,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Count character occurrences", function () { var filename = TestFileDir + "\\charCountASCII.txt"; var fb = new FileManager.FileBuffer(filename); var result = (fb.countCR === 5 && fb.countLF === 4 && fb.countCRLF === 5 && fb.countHT === 3); return result; })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Count character occurrences", function () { var filename = TestFileDir + "\\charCountASCII.txt"; var fb = new FileManager.FileBuffer(filename); var result = (fb.countCR === 5 && fb.countLF === 4 && fb.countCRLF === 5 && fb.countHT === 3); return result; }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -3131,11 +3131,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Test file with control character", function () { var filename = TestFileDir + "\\controlChar.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Codepoint at index: 3 has control value: 8")) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Test file with control character", function () { var filename = TestFileDir + "\\controlChar.txt"; var fb = new FileManager.FileBuffer(filename); return true; }, "Codepoint at index: 3 has control value: 8") : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase diff --git a/tests/baselines/reference/duplicateLocalVariable2.types b/tests/baselines/reference/duplicateLocalVariable2.types index dde1ffb215e2b..6f9044ed6b101 100644 --- a/tests/baselines/reference/duplicateLocalVariable2.types +++ b/tests/baselines/reference/duplicateLocalVariable2.types @@ -20,7 +20,7 @@ export class TestRunner { static arrayCompare(arg1: any[], arg2: any[]): boolean { >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >arg1 : any[] > : ^^^^^ >arg2 : any[] @@ -33,7 +33,7 @@ export class TestRunner { public addTest(test: TestCase) { >addTest : (test: TestCase) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >test : TestCase > : ^^^^^^^^ } @@ -61,11 +61,11 @@ export var tests: TestRunner = (function () { >testRunner.addTest(new TestCase("Check UTF8 encoding", function () { var fb: any; fb.writeUtf8Bom(); var chars = [0x0054]; for (var i in chars) { fb.writeUtf8CodePoint(chars[i]); } fb.index = 0; var bytes = []; for (var i = 0; i < 14; i++) { bytes.push(fb.readByte()); } var expected = [0xEF]; return TestRunner.arrayCompare(bytes, expected); })) : void > : ^^^^ >testRunner.addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >testRunner : TestRunner > : ^^^^^^^^^^ >addTest : (test: TestCase) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new TestCase("Check UTF8 encoding", function () { var fb: any; fb.writeUtf8Bom(); var chars = [0x0054]; for (var i in chars) { fb.writeUtf8CodePoint(chars[i]); } fb.index = 0; var bytes = []; for (var i = 0; i < 14; i++) { bytes.push(fb.readByte()); } var expected = [0xEF]; return TestRunner.arrayCompare(bytes, expected); }) : TestCase > : ^^^^^^^^ >TestCase : typeof TestCase @@ -159,11 +159,11 @@ export var tests: TestRunner = (function () { >bytes.push(fb.readByte()) : number > : ^^^^^^ >bytes.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >bytes : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >fb.readByte() : any > : ^^^ >fb.readByte : any @@ -185,11 +185,11 @@ export var tests: TestRunner = (function () { >TestRunner.arrayCompare(bytes, expected) : boolean > : ^^^^^^^ >TestRunner.arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >TestRunner : typeof TestRunner > : ^^^^^^^^^^^^^^^^^ >arrayCompare : (arg1: any[], arg2: any[]) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >bytes : any[] > : ^^^^^ >expected : number[] diff --git a/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types b/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types index 4e09ff54af979..285ba6da23d05 100644 --- a/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types +++ b/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types @@ -5,7 +5,7 @@ function bar(props: { x?: string; y?: string }) { >bar : (props: { x?: string; y?: string; }) => { [x: string]: number; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : { x?: string; y?: string; } > : ^^^^^^ ^^^^^^ ^^^ >x : string | undefined @@ -50,7 +50,7 @@ function bar(props: { x?: string; y?: string }) { function foo({ x = "", y = "" }: { x?: string; y?: string }) { >foo : ({ x, y }: { x?: string; y?: string; }) => { [x: string]: number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" diff --git a/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.types b/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.types index 4ab33cebfe78d..53f65765989fe 100644 --- a/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.types +++ b/tests/baselines/reference/duplicateOverloadInTypeAugmentation1.types @@ -4,9 +4,9 @@ interface Array { reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U_1, currentValue: T, currentIndex: number, array: T[]) => U_1, initialValue: U_1): U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : T > : ^ >currentValue : T @@ -22,9 +22,9 @@ interface Array { reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T; (callbackfn: (previousValue: U_1, currentValue: T, currentIndex: number, array: T[]) => U_1, initialValue: U_1): U_1; (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : U > : ^ >currentValue : T @@ -48,13 +48,13 @@ var r5 = a.reduce((x, y) => x + y); >a.reduce((x, y) => x + y) : string > : ^^^^^^ >a.reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue?: string): string; (callbackfn: (previousValue: U_1, currentValue: string, currentIndex: number, array: string[]) => U_1, initialValue: U_1): U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >a : string[] > : ^^^^^^^^ >reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue?: string): string; (callbackfn: (previousValue: U_1, currentValue: string, currentIndex: number, array: string[]) => U_1, initialValue: U_1): U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >(x, y) => x + y : (x: string, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/duplicatePackage.types b/tests/baselines/reference/duplicatePackage.types index 3b8a1d55c3905..4dc74a1fa41dc 100644 --- a/tests/baselines/reference/duplicatePackage.types +++ b/tests/baselines/reference/duplicatePackage.types @@ -3,7 +3,7 @@ === /src/a.ts === import { a } from "a"; >a : (x: import("/node_modules/a/node_modules/x/index").default) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ import { b } from "b"; >b : import("/node_modules/a/node_modules/x/index").default @@ -17,7 +17,7 @@ a(b); // Works >a(b) : void > : ^^^^ >a : (x: import("/node_modules/a/node_modules/x/index").default) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : import("/node_modules/a/node_modules/x/index").default > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -25,7 +25,7 @@ a(c); // Error, these are from different versions of the library. >a(c) : void > : ^^^^ >a : (x: import("/node_modules/a/node_modules/x/index").default) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : import("/node_modules/c/node_modules/x/index").default > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -36,7 +36,7 @@ import X from "x"; export function a(x: X): void; >a : (x: X) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : X > : ^ diff --git a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.types b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.types index 49843b929e95a..6d3c575110c51 100644 --- a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.types +++ b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage.types @@ -3,7 +3,7 @@ === /index.ts === import { use } from "foo/use"; >use : (o: import("/node_modules/foo/index").C) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ import { o } from "a"; >o : import("/node_modules/foo/index").C @@ -13,7 +13,7 @@ use(o); >use(o) : void > : ^^^^ >use : (o: import("/node_modules/foo/index").C) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : import("/node_modules/foo/index").C > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -43,7 +43,7 @@ import { C } from "./index"; export function use(o: C): void; >use : (o: C) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : C > : ^ diff --git a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.types b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.types index 8f50763c8e948..605d3df15ebd6 100644 --- a/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.types +++ b/tests/baselines/reference/duplicatePackage_relativeImportWithinPackage_scoped.types @@ -3,7 +3,7 @@ === /index.ts === import { use } from "@foo/bar/use"; >use : (o: import("/node_modules/@foo/bar/index").C) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ import { o } from "a"; >o : import("/node_modules/@foo/bar/index").C @@ -13,7 +13,7 @@ use(o); >use(o) : void > : ^^^^ >use : (o: import("/node_modules/@foo/bar/index").C) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : import("/node_modules/@foo/bar/index").C > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -43,7 +43,7 @@ import { C } from "./index"; export function use(o: C): void; >use : (o: C) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >o : C > : ^ diff --git a/tests/baselines/reference/duplicatePropertiesInTypeAssertions01.types b/tests/baselines/reference/duplicatePropertiesInTypeAssertions01.types index 2a204e65be257..cda6111857b9e 100644 --- a/tests/baselines/reference/duplicatePropertiesInTypeAssertions01.types +++ b/tests/baselines/reference/duplicatePropertiesInTypeAssertions01.types @@ -5,7 +5,7 @@ let x = <{a: number; a: number}>{}; >x : { a: number; } > : ^^^^^ ^^^ ><{a: number; a: number}>{} : { a: number; } -> : ^^^^^ ^^^ +> : >a : number > : ^^^^^^ >a : number diff --git a/tests/baselines/reference/duplicatePropertiesInTypeAssertions02.types b/tests/baselines/reference/duplicatePropertiesInTypeAssertions02.types index 0cffb2971aa1d..812762fccd41a 100644 --- a/tests/baselines/reference/duplicatePropertiesInTypeAssertions02.types +++ b/tests/baselines/reference/duplicatePropertiesInTypeAssertions02.types @@ -5,7 +5,7 @@ let x = {} as {a: number; a: number}; >x : { a: number; } > : ^^^^^ ^^^ >{} as {a: number; a: number} : { a: number; } -> : ^^^^^ ^^^ +> : >{} : {} > : ^^ >a : number diff --git a/tests/baselines/reference/duplicatePropertyNames.types b/tests/baselines/reference/duplicatePropertyNames.types index 232057c35625a..72fea5270c8b0 100644 --- a/tests/baselines/reference/duplicatePropertyNames.types +++ b/tests/baselines/reference/duplicatePropertyNames.types @@ -47,13 +47,13 @@ class C { bar(x) { } >bar : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ bar(x) { } >bar : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -61,7 +61,7 @@ class C { >baz : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : baz = () => { } >baz : () => void @@ -105,7 +105,7 @@ var b = { >b : { foo: string; bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ foo: '', foo: '', bar: () => { }, bar: () => { }} : { foo: string; bar: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ foo: '', >foo : string @@ -123,7 +123,7 @@ var b = { >bar : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : bar: () => { } >bar : () => void diff --git a/tests/baselines/reference/dynamicImportEvaluateSpecifier.types b/tests/baselines/reference/dynamicImportEvaluateSpecifier.types index 080b4ad4da7f4..4471583521a59 100644 --- a/tests/baselines/reference/dynamicImportEvaluateSpecifier.types +++ b/tests/baselines/reference/dynamicImportEvaluateSpecifier.types @@ -36,7 +36,7 @@ const getPath = async () => { >getPath : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >async () => { /* in reality this would do some async FS operation, or a web request */ return "/root/my/cool/path";} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^ +> : /* in reality this would do some async FS operation, or a web request */ return "/root/my/cool/path"; @@ -49,7 +49,7 @@ const someFunction = async () => { >someFunction : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const result = await import(await getPath());} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const result = await import(await getPath()); >result : any diff --git a/tests/baselines/reference/dynamicImportInDefaultExportExpression.types b/tests/baselines/reference/dynamicImportInDefaultExportExpression.types index 8edcfabeb7802..447d9e29f6c5b 100644 --- a/tests/baselines/reference/dynamicImportInDefaultExportExpression.types +++ b/tests/baselines/reference/dynamicImportInDefaultExportExpression.types @@ -9,7 +9,7 @@ export default { >getInstance : () => Promise > : ^^^^^^^^^^^^^^^^^^ >function () { return import('./foo2'); } : () => Promise -> : ^^^^^^^^^^^^^^^^^^ +> : return import('./foo2'); >import('./foo2') : Promise diff --git a/tests/baselines/reference/dynamicImportsDeclaration.types b/tests/baselines/reference/dynamicImportsDeclaration.types index e7011d0ee1006..f9aefec910159 100644 --- a/tests/baselines/reference/dynamicImportsDeclaration.types +++ b/tests/baselines/reference/dynamicImportsDeclaration.types @@ -17,7 +17,7 @@ export const mod = await (async () => { >mod : { default: typeof import("/case0"); } | { default: typeof import("/case1"); } | { default: typeof import("/caseFallback"); } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await (async () => { const x: number = 0; switch (x) { case 0: return await import("./case0.js"); case 1: return await import("./case1.js"); default: return await import("./caseFallback.js"); }})() : { default: typeof import("/case0"); } | { default: typeof import("/case1"); } | { default: typeof import("/caseFallback"); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ >(async () => { const x: number = 0; switch (x) { case 0: return await import("./case0.js"); case 1: return await import("./case1.js"); default: return await import("./caseFallback.js"); }})() : Promise<{ default: typeof import("/case0"); } | { default: typeof import("/case1"); } | { default: typeof import("/caseFallback"); }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(async () => { const x: number = 0; switch (x) { case 0: return await import("./case0.js"); case 1: return await import("./case1.js"); default: return await import("./caseFallback.js"); }}) : () => Promise<{ default: typeof import("/case0"); } | { default: typeof import("/case1"); } | { default: typeof import("/caseFallback"); }> diff --git a/tests/baselines/reference/dynamicRequire.types b/tests/baselines/reference/dynamicRequire.types index 24e129e0bd372..fb62d1b5bf8a1 100644 --- a/tests/baselines/reference/dynamicRequire.types +++ b/tests/baselines/reference/dynamicRequire.types @@ -3,7 +3,7 @@ === a.js === function foo(name) { >foo : (name: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >name : any var s = require("t/" + name) diff --git a/tests/baselines/reference/elaboratedErrors.types b/tests/baselines/reference/elaboratedErrors.types index 6a0b15500c3a3..c2d9e436fbfad 100644 --- a/tests/baselines/reference/elaboratedErrors.types +++ b/tests/baselines/reference/elaboratedErrors.types @@ -9,19 +9,19 @@ interface FileSystem { function fn(s: WorkerFS): void; >fn : { (s: WorkerFS): void; (s: FileSystem): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >s : WorkerFS > : ^^^^^^^^ function fn(s: FileSystem): void; >fn : { (s: WorkerFS): void; (s: FileSystem): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >s : FileSystem > : ^^^^^^^^^^ function fn(s: FileSystem|WorkerFS) { } >fn : { (s: WorkerFS): void; (s: FileSystem): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >s : FileSystem | WorkerFS > : ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/elaborationForPossiblyCallableTypeStillReferencesArgumentAtTopLevel.types b/tests/baselines/reference/elaborationForPossiblyCallableTypeStillReferencesArgumentAtTopLevel.types index 76cdc76f84613..bb19512f3df73 100644 --- a/tests/baselines/reference/elaborationForPossiblyCallableTypeStillReferencesArgumentAtTopLevel.types +++ b/tests/baselines/reference/elaborationForPossiblyCallableTypeStillReferencesArgumentAtTopLevel.types @@ -7,7 +7,7 @@ declare var ohno: new () => number; declare function ff(t: number): void; >ff : (t: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : number > : ^^^^^^ @@ -15,7 +15,7 @@ ff(ohno) >ff(ohno) : void > : ^^^^ >ff : (t: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >ohno : new () => number > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/elementAccessChain.types b/tests/baselines/reference/elementAccessChain.types index 05259fbadacbb..f06d5f66da50f 100644 --- a/tests/baselines/reference/elementAccessChain.types +++ b/tests/baselines/reference/elementAccessChain.types @@ -103,7 +103,7 @@ o4.b?.["c"].d?.e; >o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >"c" : "c" > : ^^^ >d : { e: string; } | undefined @@ -123,7 +123,7 @@ o4.b?.["c"].d?.["e"]; >o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >"c" : "c" > : ^^^ >d : { e: string; } | undefined @@ -157,7 +157,7 @@ o5.b?.()["c"].d?.e; >o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^ ^^^^^^^^^^^^^^^^ >"c" : "c" > : ^^^ >d : { e: string; } | undefined @@ -179,7 +179,7 @@ o5.b?.()["c"].d?.["e"]; >o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^ ^^^^^^^^^^^^^^^^ >"c" : "c" > : ^^^ >d : { e: string; } | undefined diff --git a/tests/baselines/reference/elidedJSImport1.types b/tests/baselines/reference/elidedJSImport1.types index eee09c44f8d2c..03f71f15f6bd6 100644 --- a/tests/baselines/reference/elidedJSImport1.types +++ b/tests/baselines/reference/elidedJSImport1.types @@ -13,11 +13,11 @@ console.log(fs); >console.log(fs) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >fs : any > : ^^^ @@ -25,11 +25,11 @@ console.log('TruffleContract is ', typeof TruffleContract, TruffleContract); // >console.log('TruffleContract is ', typeof TruffleContract, TruffleContract) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'TruffleContract is ' : "TruffleContract is " > : ^^^^^^^^^^^^^^^^^^^^^ >typeof TruffleContract : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" diff --git a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types index 0f214cc113a09..a0f0cb11f93f6 100644 --- a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types +++ b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.types @@ -3,7 +3,7 @@ === emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES5.ts === (x) => ({ "1": "one", "2": "two" } as { [key: string]: string })[x]; >(x) => ({ "1": "one", "2": "two" } as { [key: string]: string })[x] : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any >({ "1": "one", "2": "two" } as { [key: string]: string })[x] : string > : ^^^^^^ @@ -27,7 +27,7 @@ (x) => ({ "1": "one", "2": "two" } as { [key: string]: string }).x; >(x) => ({ "1": "one", "2": "two" } as { [key: string]: string }).x : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any >({ "1": "one", "2": "two" } as { [key: string]: string }).x : string > : ^^^^^^ diff --git a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types index 80631c941b48a..50f0515376c91 100644 --- a/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types +++ b/tests/baselines/reference/emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.types @@ -3,7 +3,7 @@ === emitAccessExpressionOfCastedObjectLiteralExpressionInArrowFunctionES6.ts === (x) => ({ "1": "one", "2": "two" } as { [key: string]: string })[x]; >(x) => ({ "1": "one", "2": "two" } as { [key: string]: string })[x] : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any >({ "1": "one", "2": "two" } as { [key: string]: string })[x] : string > : ^^^^^^ @@ -27,7 +27,7 @@ (x) => ({ "1": "one", "2": "two" } as { [key: string]: string }).x; >(x) => ({ "1": "one", "2": "two" } as { [key: string]: string }).x : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any >({ "1": "one", "2": "two" } as { [key: string]: string }).x : string > : ^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunction.types b/tests/baselines/reference/emitArrowFunction.types index a90173af78691..9002e8ea821b4 100644 --- a/tests/baselines/reference/emitArrowFunction.types +++ b/tests/baselines/reference/emitArrowFunction.types @@ -5,13 +5,13 @@ var f1 = () => { } >f1 : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : var f2 = (x: string, y: string) => { } >f2 : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: string, y: string) => { } : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : string @@ -19,9 +19,9 @@ var f2 = (x: string, y: string) => { } var f3 = (x: string, y: number, ...rest) => { } >f3 : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(x: string, y: number, ...rest) => { } : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >x : string > : ^^^^^^ >y : number @@ -31,9 +31,9 @@ var f3 = (x: string, y: number, ...rest) => { } var f4 = (x: string, y: number, z = 10) => { } >f4 : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: string, y: number, z = 10) => { } : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : string > : ^^^^^^ >y : number @@ -45,7 +45,7 @@ var f4 = (x: string, y: number, z = 10) => { } function foo(func: () => boolean) { } >foo : (func: () => boolean) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >func : () => boolean > : ^^^^^^ @@ -53,7 +53,7 @@ foo(() => true); >foo(() => true) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => true : () => true > : ^^^^^^^^^^ >true : true @@ -63,7 +63,7 @@ foo(() => { return false; }); >foo(() => { return false; }) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { return false; } : () => false > : ^^^^^^^^^^^ >false : false diff --git a/tests/baselines/reference/emitArrowFunctionAsIs.types b/tests/baselines/reference/emitArrowFunctionAsIs.types index 81fa7542ba884..a08a2982eab0f 100644 --- a/tests/baselines/reference/emitArrowFunctionAsIs.types +++ b/tests/baselines/reference/emitArrowFunctionAsIs.types @@ -3,23 +3,23 @@ === emitArrowFunctionAsIs.ts === var arrow1 = a => { }; >arrow1 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow2 = (a) => { }; >arrow2 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a) => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow3 = (a, b) => { }; >arrow3 : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(a, b) => { } : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any >b : any diff --git a/tests/baselines/reference/emitArrowFunctionAsIsES6.types b/tests/baselines/reference/emitArrowFunctionAsIsES6.types index 74163edd072cb..6f3fdf4424e9f 100644 --- a/tests/baselines/reference/emitArrowFunctionAsIsES6.types +++ b/tests/baselines/reference/emitArrowFunctionAsIsES6.types @@ -3,23 +3,23 @@ === emitArrowFunctionAsIsES6.ts === var arrow1 = a => { }; >arrow1 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow2 = (a) => { }; >arrow2 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a) => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow3 = (a, b) => { }; >arrow3 : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(a, b) => { } : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any >b : any diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index d6271427cb9ae..bd633be19bff6 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -5,13 +5,13 @@ var f1 = () => { } >f1 : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : var f2 = (x: string, y: string) => { } >f2 : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(x: string, y: string) => { } : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : string @@ -19,9 +19,9 @@ var f2 = (x: string, y: string) => { } var f3 = (x: string, y: number, ...rest) => { } >f3 : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(x: string, y: number, ...rest) => { } : (x: string, y: number, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >x : string > : ^^^^^^ >y : number @@ -31,9 +31,9 @@ var f3 = (x: string, y: number, ...rest) => { } var f4 = (x: string, y: number, z=10) => { } >f4 : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: string, y: number, z=10) => { } : (x: string, y: number, z?: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : string > : ^^^^^^ >y : number @@ -45,7 +45,7 @@ var f4 = (x: string, y: number, z=10) => { } function foo(func: () => boolean) { } >foo : (func: () => boolean) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >func : () => boolean > : ^^^^^^ @@ -53,7 +53,7 @@ foo(() => true); >foo(() => true) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => true : () => true > : ^^^^^^^^^^ >true : true @@ -63,7 +63,7 @@ foo(() => { return false; }); >foo(() => { return false; }) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { return false; } : () => false > : ^^^^^^^^^^^ >false : false @@ -72,25 +72,25 @@ foo(() => { return false; }); // Binding patterns in arrow functions var p1 = ([a]) => { }; >p1 : ([a]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >([a]) => { } : ([a]: [any]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ var p2 = ([...a]) => { }; >p2 : ([...a]: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >([...a]) => { } : ([...a]: Iterable) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any[] > : ^^^^^ var p3 = ([, a]) => { }; >p3 : ([, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >([, a]) => { } : ([, a]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : > : undefined > : ^^^^^^^^^ >a : any @@ -98,9 +98,9 @@ var p3 = ([, a]) => { }; var p4 = ([, ...a]) => { }; >p4 : ([, ...a]: [any?, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : > : undefined > : ^^^^^^^^^ >a : any[] @@ -108,9 +108,9 @@ var p4 = ([, ...a]) => { }; var p5 = ([a = 1]) => { }; >p5 : ([a]: [number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >([a = 1]) => { } : ([a]: [number?]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ >1 : 1 @@ -118,17 +118,17 @@ var p5 = ([a = 1]) => { }; var p6 = ({ a }) => { }; >p6 : ({ a }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >({ a }) => { } : ({ a }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ var p7 = ({ a: { b } }) => { }; >p7 : ({ a: { b } }: { a: { b: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a: { b } }) => { } : ({ a: { b } }: { a: { b: any; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >b : any @@ -136,9 +136,9 @@ var p7 = ({ a: { b } }) => { }; var p8 = ({ a = 1 }) => { }; >p8 : ({ a }: { a?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a = 1 }) => { } : ({ a }: { a?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >a : number > : ^^^^^^ >1 : 1 @@ -146,9 +146,9 @@ var p8 = ({ a = 1 }) => { }; var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; >p9 : ({ a: { b } }: { a?: { b?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ a: { b = 1 } = { b: 1 } }) => { } : ({ a: { b } }: { a?: { b?: number; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >a : any > : ^^^ >b : number @@ -164,9 +164,9 @@ var p9 = ({ a: { b = 1 } = { b: 1 } }) => { }; var p10 = ([{ value, done }]) => { }; >p10 : ([{ value, done }]: [{ value: any; done: any; }]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >([{ value, done }]) => { } : ([{ value, done }]: [{ value: any; done: any; }]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >value : any > : ^^^ >done : any diff --git a/tests/baselines/reference/emitArrowFunctionThisCapturing.types b/tests/baselines/reference/emitArrowFunctionThisCapturing.types index 2da479e77732e..a8c029c0cb0ed 100644 --- a/tests/baselines/reference/emitArrowFunctionThisCapturing.types +++ b/tests/baselines/reference/emitArrowFunctionThisCapturing.types @@ -5,7 +5,7 @@ var f1 = () => { >f1 : () => void > : ^^^^^^^^^^ >() => { this.age = 10} : () => void -> : ^^^^^^^^^^ +> : this.age = 10 >this.age = 10 : 10 @@ -23,9 +23,9 @@ var f1 = () => { var f2 = (x: string) => { >f2 : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(x: string) => { this.name = x} : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ @@ -44,7 +44,7 @@ var f2 = (x: string) => { function foo(func: () => boolean) { } >foo : (func: () => boolean) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >func : () => boolean > : ^^^^^^ @@ -52,7 +52,7 @@ foo(() => { >foo(() => { this.age = 100; return true;}) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { this.age = 100; return true;} : () => true > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types b/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types index aba475827a492..2fbd2be7f9d98 100644 --- a/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types +++ b/tests/baselines/reference/emitArrowFunctionThisCapturingES6.types @@ -5,7 +5,7 @@ var f1 = () => { >f1 : () => void > : ^^^^^^^^^^ >() => { this.age = 10} : () => void -> : ^^^^^^^^^^ +> : this.age = 10 >this.age = 10 : 10 @@ -23,9 +23,9 @@ var f1 = () => { var f2 = (x: string) => { >f2 : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(x: string) => { this.name = x} : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : >x : string > : ^^^^^^ @@ -44,7 +44,7 @@ var f2 = (x: string) => { function foo(func: () => boolean){ } >foo : (func: () => boolean) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >func : () => boolean > : ^^^^^^ @@ -52,7 +52,7 @@ foo(() => { >foo(() => { this.age = 100; return true;}) : void > : ^^^^ >foo : (func: () => boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { this.age = 100; return true;} : () => true > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01.types index facdef4e67fb5..4f1739e768a4c 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01.types @@ -5,7 +5,7 @@ var a = () => { >a : () => void > : ^^^^^^^^^^ >() => { var arg = arguments[0]; // error} : () => void -> : ^^^^^^^^^^ +> : var arg = arguments[0]; // error >arg : any @@ -22,13 +22,13 @@ var b = function () { >b : () => void > : ^^^^^^^^^^ >function () { var a = () => { var arg = arguments[0]; // error }} : () => void -> : ^^^^^^^^^^ +> : var a = () => { >a : () => void > : ^^^^^^^^^^ >() => { var arg = arguments[0]; // error } : () => void -> : ^^^^^^^^^^ +> : var arg = arguments[0]; // error >arg : any @@ -64,7 +64,7 @@ function baz() { function foo(inputFunc: () => void) { } >foo : (inputFunc: () => void) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >inputFunc : () => void > : ^^^^^^ @@ -72,7 +72,7 @@ foo(() => { >foo(() => { var arg = arguments[0]; // error}) : void > : ^^^^ >foo : (inputFunc: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { var arg = arguments[0]; // error} : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types index f70f38a9acde5..ba94b50f32af7 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments01_ES6.types @@ -5,7 +5,7 @@ var a = () => { >a : () => void > : ^^^^^^^^^^ >() => { var arg = arguments[0]; // error} : () => void -> : ^^^^^^^^^^ +> : var arg = arguments[0]; // error >arg : any @@ -22,13 +22,13 @@ var b = function () { >b : () => void > : ^^^^^^^^^^ >function () { var a = () => { var arg = arguments[0]; // error }} : () => void -> : ^^^^^^^^^^ +> : var a = () => { >a : () => void > : ^^^^^^^^^^ >() => { var arg = arguments[0]; // error } : () => void -> : ^^^^^^^^^^ +> : var arg = arguments[0]; // error >arg : any @@ -64,7 +64,7 @@ function baz() { function foo(inputFunc: () => void) { } >foo : (inputFunc: () => void) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >inputFunc : () => void > : ^^^^^^ @@ -72,7 +72,7 @@ foo(() => { >foo(() => { var arg = arguments[0]; // error}) : void > : ^^^^ >foo : (inputFunc: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { var arg = arguments[0]; // error} : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02.types index d944707ad3978..cd8a4ff2890e8 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02.types @@ -5,7 +5,7 @@ var a = () => arguments; >a : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types index f50a88541c92f..a28b6262cde8b 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments02_ES6.types @@ -5,7 +5,7 @@ var a = () => arguments; >a : () => any > : ^^^^^^^^^ >() => arguments : () => any -> : ^^^^^^^^^ +> : >arguments : any > : ^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03.types index 756142e72f371..b39671289e2bb 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03.types @@ -9,7 +9,7 @@ var a = () => arguments; >a : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types index f255903903057..b1b43252351ce 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments03_ES6.types @@ -8,6 +8,6 @@ var a = () => arguments; >a : () => any > : ^^^^^^^^^ >() => arguments : () => any -> : ^^^^^^^^^ +> : >arguments : any diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04.types index 74e000ce61f6a..c3ce2c4764050 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04.types @@ -13,7 +13,7 @@ function f() { >a : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types index b6b6a39254d6e..66a7882b4eb17 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments04_ES6.types @@ -12,6 +12,6 @@ function f() { >a : () => any > : ^^^^^^^^^ >() => arguments : () => any -> : ^^^^^^^^^ +> : >arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05.types index bb8cd01707fee..1bd02b87b7c15 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05.types @@ -3,7 +3,7 @@ === emitArrowFunctionWhenUsingArguments05.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ @@ -11,7 +11,7 @@ function f(arguments) { >a : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types index 0d4b3b4d43475..0e1de9a5c9cba 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments05_ES6.types @@ -3,13 +3,13 @@ === emitArrowFunctionWhenUsingArguments05_ES6.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var a = () => arguments; >a : () => any > : ^^^^^^^^^ >() => arguments : () => any -> : ^^^^^^^^^ +> : >arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06.types index aec9ee480f210..c51d5ae493519 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06.types @@ -3,7 +3,7 @@ === emitArrowFunctionWhenUsingArguments06.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ @@ -11,7 +11,7 @@ function f(arguments) { >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types index ae542182a04b8..8297ecaf7430b 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments06_ES6.types @@ -3,14 +3,14 @@ === emitArrowFunctionWhenUsingArguments06_ES6.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var a = () => () => arguments; >a : () => () => any > : ^^^^^^^^^^^^^^^ >() => () => arguments : () => () => any -> : ^^^^^^^^^^^^^^^ +> : >() => arguments : () => any > : ^^^^^^^^^ >arguments : any diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07.types index ae94af2348bae..313609c353dc7 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07.types @@ -3,15 +3,15 @@ === emitArrowFunctionWhenUsingArguments07.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ var a = (arguments) => () => arguments; >a : (arguments: any) => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(arguments) => () => arguments : (arguments: any) => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arguments : any > : ^^^ >() => arguments : () => IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types index 584cb986cd9f8..f963b286d9f37 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments07_ES6.types @@ -3,14 +3,14 @@ === emitArrowFunctionWhenUsingArguments07_ES6.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var a = (arguments) => () => arguments; >a : (arguments: any) => () => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arguments) => () => arguments : (arguments: any) => () => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arguments : any >() => arguments : () => any > : ^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08.types index 92a96dc9e4657..7ccfbe7010038 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08.types @@ -3,16 +3,16 @@ === emitArrowFunctionWhenUsingArguments08.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var a = () => (arguments) => arguments; >a : () => (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >() => (arguments) => arguments : () => (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >(arguments) => arguments : (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >arguments : any >arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08_ES6.types index c7d90790ec270..34ae140ea3203 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments08_ES6.types @@ -3,16 +3,16 @@ === emitArrowFunctionWhenUsingArguments08_ES6.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var a = () => (arguments) => arguments; >a : () => (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >() => (arguments) => arguments : () => (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >(arguments) => arguments : (arguments: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >arguments : any >arguments : any } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09.types index 1ed0be11d323d..01f2c17d953fa 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09.types @@ -3,7 +3,7 @@ === emitArrowFunctionWhenUsingArguments09.ts === function f(_arguments) { >f : (_arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_arguments : any > : ^^^ @@ -11,7 +11,7 @@ function f(_arguments) { >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09_ES6.types index 4e68ada2967b9..9557f3e430b00 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments09_ES6.types @@ -3,14 +3,14 @@ === emitArrowFunctionWhenUsingArguments09_ES6.ts === function f(_arguments) { >f : (_arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_arguments : any var a = () => () => arguments; >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10.types index de109eb0a2a79..5bd507c91c1cd 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10.types @@ -15,7 +15,7 @@ function f() { >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10_ES6.types index fb82633340b8a..21a1d099c7332 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments10_ES6.types @@ -15,7 +15,7 @@ function f() { >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11.types index 4cbd490e3ed5d..7807406393be5 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11.types @@ -3,7 +3,7 @@ === emitArrowFunctionWhenUsingArguments11.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ @@ -17,7 +17,7 @@ function f(arguments) { >a : () => () => IArguments > : ^^^^^^^^^^^^^^^^^^^^^^ >() => () => arguments : () => () => IArguments -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >() => arguments : () => IArguments > : ^^^^^^^^^^^^^^^^ >arguments : IArguments diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types index f7ac47733ed84..48c522ea0d4ff 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments11_ES6.types @@ -3,7 +3,7 @@ === emitArrowFunctionWhenUsingArguments11_ES6.ts === function f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any var _arguments = 10; @@ -16,7 +16,7 @@ function f(arguments) { >a : () => () => any > : ^^^^^^^^^^^^^^^ >() => () => arguments : () => () => any -> : ^^^^^^^^^^^^^^^ +> : >() => arguments : () => any > : ^^^^^^^^^ >arguments : any diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12.types index 8e60ac827a8fd..668607c7dbbc4 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12.types @@ -7,7 +7,7 @@ class C { f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ @@ -15,7 +15,7 @@ class C { >a : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types index 08fdd7c2ad2c3..36b7a0f77956d 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments12_ES6.types @@ -7,7 +7,7 @@ class C { f(arguments) { >f : (arguments: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arguments : any > : ^^^ @@ -15,7 +15,7 @@ class C { >a : () => any > : ^^^^^^^^^ >() => arguments : () => any -> : ^^^^^^^^^ +> : >arguments : any > : ^^^ } diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13.types index 50bd93a03799a..b1c1e8bc4f5a1 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13.types @@ -13,9 +13,9 @@ function f() { var a = (arguments) => () => _arguments; >a : (arguments: any) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >(arguments) => () => _arguments : (arguments: any) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arguments : any >() => _arguments : () => number > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13_ES6.types index a1e8f071b1ab0..dca62f929def8 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments13_ES6.types @@ -13,9 +13,9 @@ function f() { var a = (arguments) => () => _arguments; >a : (arguments: any) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >(arguments) => () => _arguments : (arguments: any) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arguments : any >() => _arguments : () => number > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19.types index 7b8e2a8d9a658..18b943ad0f119 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19.types @@ -23,7 +23,7 @@ function f() { >capture : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ @@ -31,7 +31,7 @@ function f() { >foo(_arguments) : number > : ^^^^^^ >foo : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >_arguments : number > : ^^^^^^ } @@ -39,7 +39,7 @@ function f() { function foo(x: any) { >foo : (x: any) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19_ES6.types b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19_ES6.types index 180839d932f9f..b121325e0d875 100644 --- a/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19_ES6.types +++ b/tests/baselines/reference/emitArrowFunctionWhenUsingArguments19_ES6.types @@ -23,7 +23,7 @@ function f() { >capture : () => IArguments > : ^^^^^^^^^^^^^^^^ >() => arguments : () => IArguments -> : ^^^^^^^^^^^^^^^^ +> : >arguments : IArguments > : ^^^^^^^^^^ @@ -31,7 +31,7 @@ function f() { >foo(_arguments) : number > : ^^^^^^ >foo : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >_arguments : number > : ^^^^^^ } @@ -39,7 +39,7 @@ function f() { function foo(x: any) { >foo : (x: any) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : any return 100; diff --git a/tests/baselines/reference/emitArrowFunctionsAsIs.types b/tests/baselines/reference/emitArrowFunctionsAsIs.types index 34bd69897309d..37a0f2fecf6eb 100644 --- a/tests/baselines/reference/emitArrowFunctionsAsIs.types +++ b/tests/baselines/reference/emitArrowFunctionsAsIs.types @@ -3,23 +3,23 @@ === emitArrowFunctionsAsIs.ts === var arrow1 = a => { }; >arrow1 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow2 = (a) => { }; >arrow2 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a) => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow3 = (a, b) => { }; >arrow3 : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(a, b) => { } : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any >b : any diff --git a/tests/baselines/reference/emitArrowFunctionsAsIsES6.types b/tests/baselines/reference/emitArrowFunctionsAsIsES6.types index 42189dbfdf4ca..6bea9cea7ed82 100644 --- a/tests/baselines/reference/emitArrowFunctionsAsIsES6.types +++ b/tests/baselines/reference/emitArrowFunctionsAsIsES6.types @@ -3,23 +3,23 @@ === emitArrowFunctionsAsIsES6.ts === var arrow1 = a => { }; >arrow1 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow2 = (a) => { }; >arrow2 : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a) => { } : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any var arrow3 = (a, b) => { }; >arrow3 : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(a, b) => { } : (a: any, b: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any >b : any diff --git a/tests/baselines/reference/emitCapturingThisInTupleDestructuring1.types b/tests/baselines/reference/emitCapturingThisInTupleDestructuring1.types index dfc63ed5b559e..8d5a693a13d18 100644 --- a/tests/baselines/reference/emitCapturingThisInTupleDestructuring1.types +++ b/tests/baselines/reference/emitCapturingThisInTupleDestructuring1.types @@ -3,7 +3,7 @@ === emitCapturingThisInTupleDestructuring1.ts === declare function wrapper(x: any); >wrapper : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ @@ -11,9 +11,9 @@ wrapper((array: [any]) => { >wrapper((array: [any]) => { [this.test, this.test1, this.test2] = array; // even though there is a compiler error, we should still emit lexical capture for "this"}) : any > : ^^^ >wrapper : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(array: [any]) => { [this.test, this.test1, this.test2] = array; // even though there is a compiler error, we should still emit lexical capture for "this"} : (array: [any]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >array : [any] > : ^^^^^ diff --git a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types index ccfccb0b1db08..76b104a624132 100644 --- a/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithConstructorInES6.types @@ -15,12 +15,12 @@ class A { } foo(a: any); >foo : (a: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : any foo() { } >foo : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ } class B { @@ -65,13 +65,13 @@ class B { } baz(...args): string; >baz : (...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ >args : any[] > : ^^^^^ baz(z: string, v: number): string { >baz : (...args: any[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >z : string > : ^^^^^^ >v : number diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types index 16134fdf641d3..4b550d7574051 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types @@ -7,7 +7,7 @@ class B { baz(a: string, y = 10) { } >baz : (a: string, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >y : number @@ -27,7 +27,7 @@ class C extends B { baz(a: string, y:number) { >baz : (a: string, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >y : number @@ -37,11 +37,11 @@ class C extends B { >super.baz(a, y) : void > : ^^^^ >super.baz : (a: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >super : B > : ^ >baz : (a: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >y : number @@ -85,11 +85,11 @@ class D extends C { >super.baz("hello", 10) : void > : ^^^^ >super.baz : (a: string, y: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >super : C > : ^ >baz : (a: string, y: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types index 4516bc4f6aacb..aa15e4e61f7ad 100644 --- a/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithMethodInES6.types @@ -21,7 +21,7 @@ class D { ["computedName2"](a: string) { } >["computedName2"] : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"computedName2" : "computedName2" > : ^^^^^^^^^^^^^^^ >a : string @@ -29,7 +29,7 @@ class D { ["computedName3"](a: string): number { return 1; } >["computedName3"] : (a: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >"computedName3" : "computedName3" > : ^^^^^^^^^^^^^^^ >a : string @@ -51,7 +51,7 @@ class D { } baz(a: any, x: string): string { >baz : (a: any, x: string) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : any >x : string > : ^^^^^^ @@ -68,7 +68,7 @@ class D { static ["computedname5"](a: string) { } >["computedname5"] : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"computedname5" : "computedname5" > : ^^^^^^^^^^^^^^^ >a : string @@ -76,7 +76,7 @@ class D { static ["computedname6"](a: string): boolean { return true; } >["computedname6"] : (a: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >"computedname6" : "computedname6" > : ^^^^^^^^^^^^^^^ >a : string @@ -104,13 +104,13 @@ class D { } static foo(a: string) { } >foo : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ static bar(a: string): number { return 1; } >bar : (a: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types index 8726110052136..e695d72076db3 100644 --- a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types +++ b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types @@ -25,7 +25,7 @@ class Foo extends Parent { >x : () => void > : ^^^^^^^^^^ >() => super.foo() : () => void -> : ^^^^^^^^^^ +> : >super.foo() : void > : ^^^^ >super.foo : () => void diff --git a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types index a3e59d992dcbc..09d8aa7601cd9 100644 --- a/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithThisKeywordInES6.types @@ -26,7 +26,7 @@ class B { } static log(a: number) { } >log : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -38,11 +38,11 @@ class B { >B.log(this.x) : void > : ^^^^ >B.log : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >B : typeof B > : ^^^^^^^^ >log : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.x : number > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types index b8037a60edea6..9c87488e5550f 100644 --- a/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithTypeArgumentAndOverloadInES6.types @@ -37,24 +37,24 @@ class B { foo(a: T) >foo : { (a: T): any; (a: any): any; (b: string): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : T > : ^ foo(a: any) >foo : { (a: T): any; (a: any): any; (b: string): any; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any foo(b: string) >foo : { (a: T): any; (a: any): any; (b: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >b : string > : ^^^^^^ foo(): T { >foo : { (a: T): any; (a: any): any; (b: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ return this.x; >this.x : T diff --git a/tests/baselines/reference/emitClassExpressionInDeclarationFile.types b/tests/baselines/reference/emitClassExpressionInDeclarationFile.types index 9097e27fb079b..69849515d93e7 100644 --- a/tests/baselines/reference/emitClassExpressionInDeclarationFile.types +++ b/tests/baselines/reference/emitClassExpressionInDeclarationFile.types @@ -25,7 +25,7 @@ export var circularReference = class C { static getTags(c: C): C { return c } >getTags : (c: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >c : C > : ^ >c : C @@ -33,7 +33,7 @@ export var circularReference = class C { tags(c: C): C { return c } >tags : (c: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >c : C > : ^ >c : C @@ -62,13 +62,13 @@ export type Constructor = new(...args: any[]) => T; export function WithTags>(Base: T) { >WithTags : >(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ >Base : T > : ^ return class extends Base { >class extends Base { static getTags(): void { } tags(): void { } } : { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ >Base : FooItem > : ^^^^^^^ @@ -86,9 +86,9 @@ export class Test extends WithTags(FooItem) {} >Test : Test > : ^^^^ >WithTags(FooItem) : WithTags.(Anonymous class) & FooItem -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >WithTags : >(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >FooItem : typeof FooItem > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.types b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.types index 0fc1bf16d8163..28ef8ba3af0bc 100644 --- a/tests/baselines/reference/emitClassExpressionInDeclarationFile2.types +++ b/tests/baselines/reference/emitClassExpressionInDeclarationFile2.types @@ -58,13 +58,13 @@ export type Constructor = new(...args: any[]) => T; export function WithTags>(Base: T) { >WithTags : >(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ >Base : T > : ^ return class extends Base { >class extends Base { static getTags(): void { } tags(): void { } } : { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ >Base : FooItem > : ^^^^^^^ @@ -82,9 +82,9 @@ export class Test extends WithTags(FooItem) {} >Test : Test > : ^^^^ >WithTags(FooItem) : WithTags.(Anonymous class) & FooItem -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >WithTags : >(Base: T) => { new (...args: any[]): (Anonymous class); prototype: WithTags.(Anonymous class); getTags(): void; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >FooItem : typeof FooItem > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/emitClassMergedWithConstNamespaceNotElided.types b/tests/baselines/reference/emitClassMergedWithConstNamespaceNotElided.types index 8f54770047336..8df48315a493c 100644 --- a/tests/baselines/reference/emitClassMergedWithConstNamespaceNotElided.types +++ b/tests/baselines/reference/emitClassMergedWithConstNamespaceNotElided.types @@ -38,7 +38,7 @@ export class Clone { static clone(url: string): void; >clone : (url: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >url : string > : ^^^^^^ } @@ -51,11 +51,11 @@ Clone.clone("ok"); >Clone.clone("ok") : void > : ^^^^ >Clone.clone : (url: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >Clone : typeof Clone > : ^^^^^^^^^^^^ >clone : (url: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"ok" : "ok" > : ^^^^ diff --git a/tests/baselines/reference/emitCompoundExponentiationAssignmentWithIndexingOnLHS4.types b/tests/baselines/reference/emitCompoundExponentiationAssignmentWithIndexingOnLHS4.types index bc48bc40a524f..f29a317ae7015 100644 --- a/tests/baselines/reference/emitCompoundExponentiationAssignmentWithIndexingOnLHS4.types +++ b/tests/baselines/reference/emitCompoundExponentiationAssignmentWithIndexingOnLHS4.types @@ -9,7 +9,7 @@ var globalCounter = 0; function incrementIdx(max: number) { >incrementIdx : (max: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >max : number > : ^^^^^^ @@ -27,11 +27,11 @@ function incrementIdx(max: number) { >Math.floor(Math.random() * max) : number > : ^^^^^^ >Math.floor : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >floor : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math.random() * max : number > : ^^^^^^ >Math.random() : number @@ -76,7 +76,7 @@ array1[incrementIdx(array1.length)] **= 3; >incrementIdx(array1.length) : number > : ^^^^^^ >incrementIdx : (max: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >array1.length : number > : ^^^^^^ >array1 : number[] @@ -96,7 +96,7 @@ array1[incrementIdx(array1.length)] **= array1[incrementIdx(array1.length)] **= >incrementIdx(array1.length) : number > : ^^^^^^ >incrementIdx : (max: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >array1.length : number > : ^^^^^^ >array1 : number[] @@ -112,7 +112,7 @@ array1[incrementIdx(array1.length)] **= array1[incrementIdx(array1.length)] **= >incrementIdx(array1.length) : number > : ^^^^^^ >incrementIdx : (max: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >array1.length : number > : ^^^^^^ >array1 : number[] @@ -132,7 +132,7 @@ array1[incrementIdx(array1.length)] **= array1[incrementIdx(array1.length)] ** 2 >incrementIdx(array1.length) : number > : ^^^^^^ >incrementIdx : (max: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >array1.length : number > : ^^^^^^ >array1 : number[] @@ -148,7 +148,7 @@ array1[incrementIdx(array1.length)] **= array1[incrementIdx(array1.length)] ** 2 >incrementIdx(array1.length) : number > : ^^^^^^ >incrementIdx : (max: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >array1.length : number > : ^^^^^^ >array1 : number[] diff --git a/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=commonjs).types b/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=commonjs).types index fc6d179ba8153..ef1c447cef47e 100644 --- a/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=commonjs).types +++ b/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=commonjs).types @@ -47,7 +47,7 @@ class HelloWorld { handleEvent1(event: T1) {} // Error >handleEvent1 : (event: T1) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >event : T1 > : ^^ @@ -59,7 +59,7 @@ class HelloWorld { handleEvent2(event: T2) {} // Ok >handleEvent2 : (event: T2) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >event : T2 > : ^^ @@ -103,7 +103,7 @@ class HelloWorld { handleEvent3(event: C3): T1 { return undefined! } // Ok, Error >handleEvent3 : (event: C3) => T1 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >event : C3 > : ^^ >undefined! : undefined diff --git a/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=esnext).types b/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=esnext).types index 0b05b35e1c0f7..184ef410c97c1 100644 --- a/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=esnext).types +++ b/tests/baselines/reference/emitDecoratorMetadata_isolatedModules(module=esnext).types @@ -50,7 +50,7 @@ class HelloWorld { handleEvent1(event: T1) {} // Error >handleEvent1 : (event: T1) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >event : T1 > : ^^ @@ -64,7 +64,7 @@ class HelloWorld { handleEvent2(event: T2) {} // Ok >handleEvent2 : (event: T2) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >event : T2 > : ^^ @@ -116,7 +116,7 @@ class HelloWorld { handleEvent3(event: C3): T1 { return undefined! } // Ok, Error >handleEvent3 : (event: C3) => T1 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >event : C3 > : ^^ >undefined! : undefined diff --git a/tests/baselines/reference/emitDecoratorMetadata_object.types b/tests/baselines/reference/emitDecoratorMetadata_object.types index 14a4881f73091..4a10ec926dd32 100644 --- a/tests/baselines/reference/emitDecoratorMetadata_object.types +++ b/tests/baselines/reference/emitDecoratorMetadata_object.types @@ -27,7 +27,7 @@ class A { method(there: object) {} >method : (there: object) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >there : object > : ^^^^^^ } diff --git a/tests/baselines/reference/emitDecoratorMetadata_restArgs.types b/tests/baselines/reference/emitDecoratorMetadata_restArgs.types index 8b27b7f33b436..148fb8ecb8b33 100644 --- a/tests/baselines/reference/emitDecoratorMetadata_restArgs.types +++ b/tests/baselines/reference/emitDecoratorMetadata_restArgs.types @@ -27,7 +27,7 @@ class A { method(...args) {} >method : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >args : any[] > : ^^^^^ } @@ -50,7 +50,7 @@ class B { method(this: this, ...args: string[]) {} >method : (this: this, ...args: string[]) => void -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >args : string[] diff --git a/tests/baselines/reference/emitDefaultParametersFunction.types b/tests/baselines/reference/emitDefaultParametersFunction.types index 283eb2ba57c60..a10ed9f7b260f 100644 --- a/tests/baselines/reference/emitDefaultParametersFunction.types +++ b/tests/baselines/reference/emitDefaultParametersFunction.types @@ -3,7 +3,7 @@ === emitDefaultParametersFunction.ts === function foo(x: string, y = 10) { } >foo : (x: string, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -13,7 +13,7 @@ function foo(x: string, y = 10) { } function baz(x: string, y = 5, ...rest) { } >baz : (x: string, y?: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -25,7 +25,7 @@ function baz(x: string, y = 5, ...rest) { } function bar(y = 10) { } >bar : (y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 @@ -33,7 +33,7 @@ function bar(y = 10) { } function bar1(y = 10, ...rest) { } >bar1 : (y?: number, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/emitDefaultParametersFunctionES6.types b/tests/baselines/reference/emitDefaultParametersFunctionES6.types index 371275b3e8881..90fcdf9ceb040 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionES6.types @@ -3,7 +3,7 @@ === emitDefaultParametersFunctionES6.ts === function foo(x: string, y = 10) { } >foo : (x: string, y?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -13,7 +13,7 @@ function foo(x: string, y = 10) { } function baz(x: string, y = 5, ...rest) { } >baz : (x: string, y?: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -25,7 +25,7 @@ function baz(x: string, y = 5, ...rest) { } function bar(y = 10) { } >bar : (y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 @@ -33,7 +33,7 @@ function bar(y = 10) { } function bar1(y = 10, ...rest) { } >bar1 : (y?: number, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/emitDefaultParametersFunctionExpression.types b/tests/baselines/reference/emitDefaultParametersFunctionExpression.types index e7887bb68d198..3e8c173b7d3b5 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionExpression.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionExpression.types @@ -3,9 +3,9 @@ === emitDefaultParametersFunctionExpression.ts === var lambda1 = (y = "hello") => { } >lambda1 : (y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >(y = "hello") => { } : (y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ >y : string > : ^^^^^^ >"hello" : "hello" @@ -13,9 +13,9 @@ var lambda1 = (y = "hello") => { } var lambda2 = (x: number, y = "hello") => { } >lambda2 : (x: number, y?: string) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: number, y = "hello") => { } : (x: number, y?: string) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : string @@ -25,9 +25,9 @@ var lambda2 = (x: number, y = "hello") => { } var lambda3 = (x: number, y = "hello", ...rest) => { } >lambda3 : (x: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >x : number > : ^^^^^^ >y : string @@ -39,9 +39,9 @@ var lambda3 = (x: number, y = "hello", ...rest) => { } var lambda4 = (y = "hello", ...rest) => { } >lambda4 : (y?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >y : string > : ^^^^^^ >"hello" : "hello" @@ -51,9 +51,9 @@ var lambda4 = (y = "hello", ...rest) => { } var x = function (str = "hello", ...rest) { } >x : (str?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >str : string > : ^^^^^^ >"hello" : "hello" @@ -67,9 +67,9 @@ var y = (function (num = 10, boo = false, ...rest) { })() >(function (num = 10, boo = false, ...rest) { })() : void > : ^^^^ >(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >10 : 10 @@ -87,9 +87,9 @@ var z = (function (num: number, boo = false, ...rest) { })(10) >(function (num: number, boo = false, ...rest) { })(10) : void > : ^^^^ >(function (num: number, boo = false, ...rest) { }) : (num: number, boo?: boolean) => void -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean) => void -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >boo : boolean diff --git a/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types b/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types index 85feb9e076225..b1d779ad35567 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionExpressionES6.types @@ -3,9 +3,9 @@ === emitDefaultParametersFunctionExpressionES6.ts === var lambda1 = (y = "hello") => { } >lambda1 : (y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >(y = "hello") => { } : (y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ >y : string > : ^^^^^^ >"hello" : "hello" @@ -13,9 +13,9 @@ var lambda1 = (y = "hello") => { } var lambda2 = (x: number, y = "hello") => { } >lambda2 : (x: number, y?: string) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >(x: number, y = "hello") => { } : (x: number, y?: string) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ >x : number > : ^^^^^^ >y : string @@ -25,9 +25,9 @@ var lambda2 = (x: number, y = "hello") => { } var lambda3 = (x: number, y = "hello", ...rest) => { } >lambda3 : (x: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >x : number > : ^^^^^^ >y : string @@ -39,9 +39,9 @@ var lambda3 = (x: number, y = "hello", ...rest) => { } var lambda4 = (y = "hello", ...rest) => { } >lambda4 : (y?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >y : string > : ^^^^^^ >"hello" : "hello" @@ -51,9 +51,9 @@ var lambda4 = (y = "hello", ...rest) => { } var x = function (str = "hello", ...rest) { } >x : (str?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >str : string > : ^^^^^^ >"hello" : "hello" @@ -67,9 +67,9 @@ var y = (function (num = 10, boo = false, ...rest) { })() >(function (num = 10, boo = false, ...rest) { })() : void > : ^^^^ >(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >10 : 10 @@ -87,9 +87,9 @@ var z = (function (num: number, boo = false, ...rest) { })(10) >(function (num: number, boo = false, ...rest) { })(10) : void > : ^^^^ >(function (num: number, boo = false, ...rest) { }) : (num: number, boo?: boolean) => void -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean) => void -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >boo : boolean diff --git a/tests/baselines/reference/emitDefaultParametersFunctionProperty.types b/tests/baselines/reference/emitDefaultParametersFunctionProperty.types index 0a00fee9d857c..cf042e39ad46c 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionProperty.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionProperty.types @@ -3,13 +3,13 @@ === emitDefaultParametersFunctionProperty.ts === var obj2 = { >obj2 : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ func1(y = 10, ...rest) { }, func2(x = "hello") { }, func3(x: string, z: number, y = "hello") { }, func4(x: string, z: number, y = "hello", ...rest) { },} : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ func1(y = 10, ...rest) { }, >func1 : (y?: number, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 @@ -19,7 +19,7 @@ var obj2 = { func2(x = "hello") { }, >func2 : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"hello" : "hello" @@ -27,7 +27,7 @@ var obj2 = { func3(x: string, z: number, y = "hello") { }, >func3 : (x: string, z: number, y?: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >z : number @@ -39,7 +39,7 @@ var obj2 = { func4(x: string, z: number, y = "hello", ...rest) { }, >func4 : (x: string, z: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >z : number diff --git a/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types b/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types index b89ab194f3f7f..2b96db05e67c7 100644 --- a/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types +++ b/tests/baselines/reference/emitDefaultParametersFunctionPropertyES6.types @@ -3,13 +3,13 @@ === emitDefaultParametersFunctionPropertyES6.ts === var obj2 = { >obj2 : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ func1(y = 10, ...rest) { }, func2(x = "hello") { }, func3(x: string, z: number, y = "hello") { }, func4(x: string, z: number, y = "hello", ...rest) { },} : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ func1(y = 10, ...rest) { }, >func1 : (y?: number, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >10 : 10 @@ -19,7 +19,7 @@ var obj2 = { func2(x = "hello") { }, >func2 : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"hello" : "hello" @@ -27,7 +27,7 @@ var obj2 = { func3(x: string, z: number, y = "hello") { }, >func3 : (x: string, z: number, y?: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >z : number @@ -39,7 +39,7 @@ var obj2 = { func4(x: string, z: number, y = "hello", ...rest) { }, >func4 : (x: string, z: number, y?: string, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >z : number diff --git a/tests/baselines/reference/emitDefaultParametersMethod.types b/tests/baselines/reference/emitDefaultParametersMethod.types index c2445981d7acb..b8899c8bdb131 100644 --- a/tests/baselines/reference/emitDefaultParametersMethod.types +++ b/tests/baselines/reference/emitDefaultParametersMethod.types @@ -19,7 +19,7 @@ class C { public foo(x: string, t = false) { } >foo : (x: string, t?: boolean) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >t : boolean @@ -29,7 +29,7 @@ class C { public foo1(x: string, t = false, ...rest) { } >foo1 : (x: string, t?: boolean, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >t : boolean @@ -41,7 +41,7 @@ class C { public bar(t = false) { } >bar : (t?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >t : boolean > : ^^^^^^^ >false : false @@ -49,7 +49,7 @@ class C { public boo(t = false, ...rest) { } >boo : (t?: boolean, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >t : boolean > : ^^^^^^^ >false : false diff --git a/tests/baselines/reference/emitDefaultParametersMethodES6.types b/tests/baselines/reference/emitDefaultParametersMethodES6.types index 64a180ed476a5..43f695e6ac713 100644 --- a/tests/baselines/reference/emitDefaultParametersMethodES6.types +++ b/tests/baselines/reference/emitDefaultParametersMethodES6.types @@ -19,7 +19,7 @@ class C { public foo(x: string, t = false) { } >foo : (x: string, t?: boolean) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >t : boolean @@ -29,7 +29,7 @@ class C { public foo1(x: string, t = false, ...rest) { } >foo1 : (x: string, t?: boolean, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >t : boolean @@ -41,7 +41,7 @@ class C { public bar(t = false) { } >bar : (t?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >t : boolean > : ^^^^^^^ >false : false @@ -49,7 +49,7 @@ class C { public boo(t = false, ...rest) { } >boo : (t?: boolean, ...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >t : boolean > : ^^^^^^^ >false : false diff --git a/tests/baselines/reference/emitMemberAccessExpression.types b/tests/baselines/reference/emitMemberAccessExpression.types index f8f63295b1162..312ed1fa0d771 100644 --- a/tests/baselines/reference/emitMemberAccessExpression.types +++ b/tests/baselines/reference/emitMemberAccessExpression.types @@ -45,7 +45,7 @@ module Microsoft.PeopleAtWork.Model { public populate(raw: any) { >populate : (raw: any) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >raw : any var res = Model.KnockoutExtentions; diff --git a/tests/baselines/reference/emitMethodCalledNew.types b/tests/baselines/reference/emitMethodCalledNew.types index 7f71559718b6a..1ec5d4b05b1ad 100644 --- a/tests/baselines/reference/emitMethodCalledNew.types +++ b/tests/baselines/reference/emitMethodCalledNew.types @@ -5,13 +5,13 @@ export const a = { >a : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ new(x: number) { return x + 1 }} : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ new(x: number) { return x + 1 } >new : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >x + 1 : number @@ -23,13 +23,13 @@ export const a = { } export const b = { >b : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ "new"(x: number) { return x + 1 }} : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ "new"(x: number) { return x + 1 } >"new" : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >x + 1 : number @@ -41,13 +41,13 @@ export const b = { } export const c = { >c : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ ["new"](x: number) { return x + 1 }} : { "new"(x: number): number; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ ["new"](x: number) { return x + 1 } >["new"] : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"new" : "new" > : ^^^^^ >x : number diff --git a/tests/baselines/reference/emitRestParametersFunction.types b/tests/baselines/reference/emitRestParametersFunction.types index 728edf024fd42..5da03d7d700c9 100644 --- a/tests/baselines/reference/emitRestParametersFunction.types +++ b/tests/baselines/reference/emitRestParametersFunction.types @@ -3,13 +3,13 @@ === emitRestParametersFunction.ts === function bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ function foo(x: number, y: string, ...rest) { } >foo : (x: number, y: string, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/emitRestParametersFunctionES6.types b/tests/baselines/reference/emitRestParametersFunctionES6.types index b91cea0860254..dc4a29fa73874 100644 --- a/tests/baselines/reference/emitRestParametersFunctionES6.types +++ b/tests/baselines/reference/emitRestParametersFunctionES6.types @@ -3,13 +3,13 @@ === emitRestParametersFunctionES6.ts === function bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ function foo(x: number, y: string, ...rest) { } >foo : (x: number, y: string, ...rest: any[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/emitRestParametersFunctionExpression.types b/tests/baselines/reference/emitRestParametersFunctionExpression.types index 6b108977472b9..8a1c96b83378a 100644 --- a/tests/baselines/reference/emitRestParametersFunctionExpression.types +++ b/tests/baselines/reference/emitRestParametersFunctionExpression.types @@ -3,17 +3,17 @@ === emitRestParametersFunctionExpression.ts === var funcExp = (...rest) => { } >funcExp : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >(...rest) => { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ var funcExp1 = (X: number, ...rest) => { } >funcExp1 : (X: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(X: number, ...rest) => { } : (X: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >X : number > : ^^^^^^ >rest : any[] @@ -21,9 +21,9 @@ var funcExp1 = (X: number, ...rest) => { } var funcExp2 = function (...rest) { } >funcExp2 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >function (...rest) { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ diff --git a/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types index e218e5ddcf132..8d1beb6a00d72 100644 --- a/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types +++ b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types @@ -3,17 +3,17 @@ === emitRestParametersFunctionExpressionES6.ts === var funcExp = (...rest) => { } >funcExp : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >(...rest) => { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ var funcExp1 = (X: number, ...rest) => { } >funcExp1 : (X: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >(X: number, ...rest) => { } : (X: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >X : number > : ^^^^^^ >rest : any[] @@ -21,9 +21,9 @@ var funcExp1 = (X: number, ...rest) => { } var funcExp2 = function (...rest) { } >funcExp2 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >function (...rest) { } : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >rest : any[] > : ^^^^^ diff --git a/tests/baselines/reference/emitRestParametersFunctionProperty.types b/tests/baselines/reference/emitRestParametersFunctionProperty.types index d295ea20b8644..4b179ff9e85aa 100644 --- a/tests/baselines/reference/emitRestParametersFunctionProperty.types +++ b/tests/baselines/reference/emitRestParametersFunctionProperty.types @@ -7,20 +7,20 @@ var obj: { func1: (...rest) => void >func1 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ >rest : any[] > : ^^^^^ } var obj2 = { >obj2 : { func(...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ func(...rest) { }} : { func(...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ func(...rest) { } >func : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types index 99ec5504fda98..a89db5965df9c 100644 --- a/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types +++ b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types @@ -7,20 +7,20 @@ var obj: { func1: (...rest) => void >func1 : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ >rest : any[] > : ^^^^^ } var obj2 = { >obj2 : { func(...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ func(...rest) { }} : { func(...rest: any[]): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ func(...rest) { } >func : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/emitRestParametersMethod.types b/tests/baselines/reference/emitRestParametersMethod.types index f3a2cf10757c3..6241d26179ed9 100644 --- a/tests/baselines/reference/emitRestParametersMethod.types +++ b/tests/baselines/reference/emitRestParametersMethod.types @@ -13,13 +13,13 @@ class C { public bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ public foo(x: number, ...rest) { } >foo : (x: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >rest : any[] @@ -36,13 +36,13 @@ class D { public bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ public foo(x: number, ...rest) { } >foo : (x: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >rest : any[] diff --git a/tests/baselines/reference/emitRestParametersMethodES6.types b/tests/baselines/reference/emitRestParametersMethodES6.types index 266aa666d4bbd..4dd2b396f55ad 100644 --- a/tests/baselines/reference/emitRestParametersMethodES6.types +++ b/tests/baselines/reference/emitRestParametersMethodES6.types @@ -13,13 +13,13 @@ class C { public bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ public foo(x: number, ...rest) { } >foo : (x: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >rest : any[] @@ -36,13 +36,13 @@ class D { public bar(...rest) { } >bar : (...rest: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >rest : any[] > : ^^^^^ public foo(x: number, ...rest) { } >foo : (x: number, ...rest: any[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >rest : any[] diff --git a/tests/baselines/reference/emitSkipsThisWithRestParameter.types b/tests/baselines/reference/emitSkipsThisWithRestParameter.types index e6fc6e70fcc30..6c49312a5119e 100644 --- a/tests/baselines/reference/emitSkipsThisWithRestParameter.types +++ b/tests/baselines/reference/emitSkipsThisWithRestParameter.types @@ -3,9 +3,9 @@ === emitSkipsThisWithRestParameter.ts === function rebase(fn: (base: any, ...args: any[]) => any): (...args: any[]) => any { >rebase : (fn: (base: any, ...args: any[]) => any) => (...args: any[]) => any -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >fn : (base: any, ...args: any[]) => any -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >base : any >args : any[] > : ^^^^^ @@ -14,7 +14,7 @@ function rebase(fn: (base: any, ...args: any[]) => any): (...args: any[]) => any return function(this: any, ...args: any[]) { >function(this: any, ...args: any[]) { return fn.apply(this, [ this ].concat(args)); } : (this: any, ...args: any[]) => any -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >this : any >args : any[] > : ^^^^^ @@ -22,21 +22,21 @@ function rebase(fn: (base: any, ...args: any[]) => any): (...args: any[]) => any return fn.apply(this, [ this ].concat(args)); >fn.apply(this, [ this ].concat(args)) : any >fn.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >fn : (base: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : any >[ this ].concat(args) : any[] > : ^^^^^ >[ this ].concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >[ this ] : any[] > : ^^^^^ >this : any >concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >args : any[] > : ^^^^^ diff --git a/tests/baselines/reference/emitStatementsBeforeSuperCall.types b/tests/baselines/reference/emitStatementsBeforeSuperCall.types index d7e23f7bbdaac..321beabd1ca55 100644 --- a/tests/baselines/reference/emitStatementsBeforeSuperCall.types +++ b/tests/baselines/reference/emitStatementsBeforeSuperCall.types @@ -20,11 +20,11 @@ class Sub extends Base { >console.log('hi') : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'hi' : "hi" > : ^^^^ diff --git a/tests/baselines/reference/emitStatementsBeforeSuperCallWithDefineFields.types b/tests/baselines/reference/emitStatementsBeforeSuperCallWithDefineFields.types index 3f9f4594aebb0..f5fb93f3cd314 100644 --- a/tests/baselines/reference/emitStatementsBeforeSuperCallWithDefineFields.types +++ b/tests/baselines/reference/emitStatementsBeforeSuperCallWithDefineFields.types @@ -20,11 +20,11 @@ class Sub extends Base { >console.log('hi') : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'hi' : "hi" > : ^^^^ diff --git a/tests/baselines/reference/emitThisInObjectLiteralGetter.types b/tests/baselines/reference/emitThisInObjectLiteralGetter.types index 599f39449a394..b0901fd201b44 100644 --- a/tests/baselines/reference/emitThisInObjectLiteralGetter.types +++ b/tests/baselines/reference/emitThisInObjectLiteralGetter.types @@ -3,17 +3,17 @@ === emitThisInObjectLiteralGetter.ts === const example = { >example : { readonly foo: (item: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >{ get foo() { return item => this.bar(item); }} : { readonly foo: (item: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ get foo() { >foo : (item: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ return item => this.bar(item); >item => this.bar(item) : (item: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >item : any >this.bar(item) : any >this.bar : any diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types index c375fc5c0b7eb..665826058f73f 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2015.types @@ -5,14 +5,14 @@ const f1 = async function * () { >f1 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () {} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } === F2.ts === const f2 = async function * () { >f2 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield; >x : any @@ -23,7 +23,7 @@ const f3 = async function * () { >f3 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield 1; >x : any @@ -36,7 +36,7 @@ const f4 = async function * () { >f4 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* [1];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* [1]; >x : any @@ -51,7 +51,7 @@ const f5 = async function * () { >f5 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* (async function*() { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* (async function*() { yield 1; })(); >x : void @@ -73,7 +73,7 @@ const f6 = async function * () { >f6 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = await 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = await 1; >x : 1 @@ -88,7 +88,7 @@ const f7 = async function * () { >f7 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { return 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return 1; >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types index 3072ee4edc5ff..d6b63844845cd 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es2018.types @@ -5,14 +5,14 @@ const f1 = async function * () { >f1 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () {} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } === F2.ts === const f2 = async function * () { >f2 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield; >x : any @@ -23,7 +23,7 @@ const f3 = async function * () { >f3 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield 1; >x : any @@ -36,7 +36,7 @@ const f4 = async function * () { >f4 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* [1];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* [1]; >x : any @@ -51,7 +51,7 @@ const f5 = async function * () { >f5 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* (async function*() { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* (async function*() { yield 1; })(); >x : void @@ -73,7 +73,7 @@ const f6 = async function * () { >f6 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = await 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = await 1; >x : 1 @@ -88,7 +88,7 @@ const f7 = async function * () { >f7 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { return 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return 1; >1 : 1 diff --git a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types index d48a16963a9eb..c48d1323cae7f 100644 --- a/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types +++ b/tests/baselines/reference/emitter.asyncGenerators.functionExpressions.es5.types @@ -5,14 +5,14 @@ const f1 = async function * () { >f1 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () {} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } === F2.ts === const f2 = async function * () { >f2 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield; >x : any @@ -23,7 +23,7 @@ const f3 = async function * () { >f3 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield 1; >x : any @@ -36,7 +36,7 @@ const f4 = async function * () { >f4 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* [1];} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* [1]; >x : any @@ -51,7 +51,7 @@ const f5 = async function * () { >f5 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = yield* (async function*() { yield 1; })();} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = yield* (async function*() { yield 1; })(); >x : void @@ -73,7 +73,7 @@ const f6 = async function * () { >f6 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { const x = await 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const x = await 1; >x : 1 @@ -88,7 +88,7 @@ const f7 = async function * () { >f7 : () => AsyncGenerator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async function * () { return 1;} : () => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return 1; >1 : 1 diff --git a/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=false).types b/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=false).types index 118a3a48450d1..ade13ec154efe 100644 --- a/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=false).types +++ b/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=false).types @@ -49,7 +49,7 @@ else { function f1(x: T) { >f1 : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -74,7 +74,7 @@ function f1(x: T) { function f2(x: T) { >f2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -176,9 +176,9 @@ else { // Repro from #50567 const foo = (value: unknown): string => { >foo : (value: unknown) => string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(value: unknown): string => { if (!value) { return 'foo'; } if (value === 'xyz') { return value; // Type '{}' is not assignable to type 'string'. } return '';} : (value: unknown) => string -> : ^^^^^^^^ ^^^^^ +> : >value : unknown > : ^^^^^^^ diff --git a/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=true).types b/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=true).types index 5e65fa417daa0..07343e7bf1559 100644 --- a/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=true).types +++ b/tests/baselines/reference/emptyAnonymousObjectNarrowing(strictnullchecks=true).types @@ -49,7 +49,7 @@ else { function f1(x: T) { >f1 : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -74,7 +74,7 @@ function f1(x: T) { function f2(x: T) { >f2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -176,9 +176,9 @@ else { // Repro from #50567 const foo = (value: unknown): string => { >foo : (value: unknown) => string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(value: unknown): string => { if (!value) { return 'foo'; } if (value === 'xyz') { return value; // Type '{}' is not assignable to type 'string'. } return '';} : (value: unknown) => string -> : ^^^^^^^^ ^^^^^ +> : >value : unknown > : ^^^^^^^ diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter01.types b/tests/baselines/reference/emptyArrayBindingPatternParameter01.types index 6b6abfcb3229d..6e46fdfb893f6 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter01.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter01.types @@ -3,7 +3,7 @@ === emptyArrayBindingPatternParameter01.ts === function f([]) { >f : ([]: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ var x, y, z; >x : any diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter02.types b/tests/baselines/reference/emptyArrayBindingPatternParameter02.types index 7c62cbdbd732c..ec863621c9d5f 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter02.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter02.types @@ -3,7 +3,7 @@ === emptyArrayBindingPatternParameter02.ts === function f(a, []) { >f : (a: any, []: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >a : any var x, y, z; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter03.types b/tests/baselines/reference/emptyArrayBindingPatternParameter03.types index 9b43b9730278d..ad6e7fba90ad2 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter03.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter03.types @@ -3,7 +3,7 @@ === emptyArrayBindingPatternParameter03.ts === function f(a, []) { >f : (a: any, []: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >a : any var x, y, z; diff --git a/tests/baselines/reference/emptyArrayBindingPatternParameter04.types b/tests/baselines/reference/emptyArrayBindingPatternParameter04.types index cb5240a9458f5..d009824e10afe 100644 --- a/tests/baselines/reference/emptyArrayBindingPatternParameter04.types +++ b/tests/baselines/reference/emptyArrayBindingPatternParameter04.types @@ -3,7 +3,7 @@ === emptyArrayBindingPatternParameter04.ts === function f([] = [1,2,3,4]) { >f : ([]?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >[1,2,3,4] : number[] > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types index 25e6437983751..2da1f6d7c80dc 100644 --- a/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types +++ b/tests/baselines/reference/emptyArrayDestructuringExpressionVisitedByTransformer.types @@ -11,15 +11,15 @@ var a = [] = [1].map(_ => _); >[1].map(_ => _) : number[] > : ^^^^^^^^ >[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >_ => _ : (_: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >_ : number > : ^^^^^^ >_ : number @@ -31,15 +31,15 @@ var b = [1].map(_ => _); >[1].map(_ => _) : number[] > : ^^^^^^^^ >[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >_ => _ : (_: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >_ : number > : ^^^^^^ >_ : number diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter01.types b/tests/baselines/reference/emptyObjectBindingPatternParameter01.types index b16583f6ea777..99cc2a42a0d2f 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter01.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter01.types @@ -3,7 +3,7 @@ === emptyObjectBindingPatternParameter01.ts === function f({}) { >f : ({}: {}) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ var x, y, z; >x : any diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter02.types b/tests/baselines/reference/emptyObjectBindingPatternParameter02.types index 9376c85edb0bf..fb5245a4149a9 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter02.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter02.types @@ -3,7 +3,7 @@ === emptyObjectBindingPatternParameter02.ts === function f(a, {}) { >f : (a: any, {}: {}) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >a : any var x, y, z; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter03.types b/tests/baselines/reference/emptyObjectBindingPatternParameter03.types index 4cc4405f6f16f..eef5707d8b2c1 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter03.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter03.types @@ -3,7 +3,7 @@ === emptyObjectBindingPatternParameter03.ts === function f({}, a) { >f : ({}: {}, a: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^^^^^ >a : any var x, y, z; diff --git a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types b/tests/baselines/reference/emptyObjectBindingPatternParameter04.types index 0bc0ceb72ce15..e1886d61daaf3 100644 --- a/tests/baselines/reference/emptyObjectBindingPatternParameter04.types +++ b/tests/baselines/reference/emptyObjectBindingPatternParameter04.types @@ -3,7 +3,7 @@ === emptyObjectBindingPatternParameter04.ts === function f({} = {a: 1, b: "2", c: true}) { >f : ({}?: { a: number; b: string; c: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{a: 1, b: "2", c: true} : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject1.types b/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject1.types index 361e809efa839..60ac6f67260c7 100644 --- a/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject1.types +++ b/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject1.types @@ -40,7 +40,7 @@ type DictionaryIterator = ObjectIterator, TResult>; // In lodash.d.ts this function has many overloads, but this seems to be the problematic one. function mapValues( >mapValues : (obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator) => Dictionary -> : ^ ^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ obj: Dictionary | NumericDictionary | null | undefined, >obj : Dictionary | NumericDictionary @@ -71,7 +71,7 @@ interface Bar { export function fooToBar( >fooToBar : (foos: Record) => Record -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ foos: Record >foos : Record @@ -91,12 +91,12 @@ export function fooToBar( > : ^^ >mapValues(foos, f => f.foo) : Dictionary > : ^^^^^^^^^^^^^^^^^^ ->mapValues : (obj: Dictionary | NumericDictionary, callback: DictionaryIterator) => Dictionary -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>mapValues : (obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator) => Dictionary +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >foos : Record > : ^^^^^^^^^^^^^^^^^^^ >f => f.foo : (f: Foo) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >f : Foo > : ^^^ >f.foo : string diff --git a/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject2.types b/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject2.types index f1ffc75f64752..d2eabcb7b8d43 100644 --- a/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject2.types +++ b/tests/baselines/reference/emptyObjectNotSubtypeOfIndexSignatureContainingObject2.types @@ -40,7 +40,7 @@ type DictionaryIterator = ObjectIterator, TResult>; // In lodash.d.ts this function has many overloads, but this seems to be the problematic one. function mapValues( >mapValues : (obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator) => Dictionary -> : ^ ^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ obj: Dictionary | NumericDictionary | null | undefined, >obj : Dictionary | NumericDictionary @@ -71,7 +71,7 @@ interface Bar { export function fooToBar( >fooToBar : (foos: Record) => Record -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ foos: Record >foos : Record @@ -83,12 +83,12 @@ export function fooToBar( > : ^^^^^^^^^^^^^^^^^^ >mapValues(foos, f => f.foo) : Dictionary > : ^^^^^^^^^^^^^^^^^^ ->mapValues : (obj: Dictionary | NumericDictionary, callback: DictionaryIterator) => Dictionary -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>mapValues : (obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator) => Dictionary +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >foos : Record > : ^^^^^^^^^^^^^^^^^^^ >f => f.foo : (f: Foo) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >f : Foo > : ^^^ >f.foo : string @@ -111,12 +111,12 @@ export function fooToBar( > : ^^ >mapValues(foos, f => f.foo) : Dictionary > : ^^^^^^^^^^^^^^^^^^ ->mapValues : (obj: Dictionary | NumericDictionary, callback: DictionaryIterator) => Dictionary -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>mapValues : (obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator) => Dictionary +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >foos : Record > : ^^^^^^^^^^^^^^^^^^^ >f => f.foo : (f: Foo) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >f : Foo > : ^^^ >f.foo : string diff --git a/tests/baselines/reference/emptyOptionalBindingPatternInDeclarationSignature.types b/tests/baselines/reference/emptyOptionalBindingPatternInDeclarationSignature.types index a020fc5b996c1..dfb1babb20b8d 100644 --- a/tests/baselines/reference/emptyOptionalBindingPatternInDeclarationSignature.types +++ b/tests/baselines/reference/emptyOptionalBindingPatternInDeclarationSignature.types @@ -5,13 +5,13 @@ declare function fn1({}?: { x: string }): void; >fn1 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ declare function fn2({ x }?: { x: string }): void; >fn2 : ({ x }?: { x: string; }) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ >x : string @@ -19,11 +19,11 @@ declare function fn2({ x }?: { x: string }): void; declare function fn3([]?: [ x: string ]): void; >fn3 : ([]?: [x: string]) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ declare function fn4([ x ]?: [ x: string ]): void; >fn4 : ([x]?: [x: string]) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ @@ -33,25 +33,25 @@ declare class C1 { method({}?: { x: string }): void >method : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ static method2({}?: { x: string }): void >method2 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ static field: ({}?: { x: string }) => void >field : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ static field2: ({}?: { x: string }) => void >field2 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ } @@ -59,13 +59,13 @@ declare class C1 { interface I1 { method({}?: { x: string }): void >method : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ method2: ({}?: { x: string }) => void >method2 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ } @@ -82,36 +82,36 @@ type T2 = { method({}?: { x: string }): void >method : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ method2: ({}?: { x: string }) => void >method2 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ } declare const val1: ({}?: { x: string }) => void >val1 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ declare const val2: { >val2 : { method({}?: { x: string; }): void; method2: ({}?: { x: string; }) => void; } -> : ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^ ^^^ method({}?: { x: string }): void >method : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ method2: ({}?: { x: string }) => void >method2 : ({}?: { x: string; }) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ } diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types index fac0076fc805f..a4bab08e9d589 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5.types @@ -78,7 +78,7 @@ function f({} = a, [] = a, { p: {} = a} = a) { >f : ({}?: any, []?: any, { p: {} }?: any) => ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any @@ -89,7 +89,7 @@ return ({} = a, [] = a, { p: {} = a } = a) => a; >({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types index 8e1cd8191bd4a..1f5357158a96d 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable.types @@ -78,7 +78,7 @@ function f({} = a, [] = a, { p: {} = a} = a) { >f : ({}?: any, []?: any, { p: {} }?: any) => ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any @@ -89,7 +89,7 @@ return ({} = a, [] = a, { p: {} = a } = a) => a; >({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any diff --git a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types index a02f34d0b2ccb..b8f220d96a630 100644 --- a/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types +++ b/tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES6.types @@ -78,7 +78,7 @@ function f({} = a, [] = a, { p: {} = a} = a) { >f : ({}?: any, []?: any, { p: {} }?: any) => ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any @@ -89,7 +89,7 @@ return ({} = a, [] = a, { p: {} = a } = a) => a; >({} = a, [] = a, { p: {} = a } = a) => a : ({}?: any, []?: any, { p: {} }?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ >a : any >a : any >p : any diff --git a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types index a8c4b386801cd..de6a5ad11e12c 100644 --- a/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types +++ b/tests/baselines/reference/ensureNoCrashExportAssignmentDefineProperrtyPotentialMerge.types @@ -27,11 +27,11 @@ Object.defineProperty(module, "exports", { value: "oh no" }); >Object.defineProperty(module, "exports", { value: "oh no" }) : typeof module > : ^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module : typeof module > : ^^^^^^^^^^^^^ >"exports" : "exports" @@ -103,11 +103,11 @@ Object.defineProperty(B, "NS", { value: "why though", writable: true }); >Object.defineProperty(B, "NS", { value: "why though", writable: true }) : typeof B > : ^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >B : typeof B > : ^^^^^^^^ >"NS" : "NS" diff --git a/tests/baselines/reference/enumAssignability.types b/tests/baselines/reference/enumAssignability.types index 986079342aaae..2c360b6ad2495 100644 --- a/tests/baselines/reference/enumAssignability.types +++ b/tests/baselines/reference/enumAssignability.types @@ -174,7 +174,7 @@ module Others { var l: (x: number) => string = e; >l : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >e : E @@ -212,7 +212,7 @@ module Others { var o: (x: T) => T = e; >o : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >e : E @@ -232,7 +232,7 @@ module Others { function foo(x: T, y: U, z: V) { >foo : (x: T, y: U, z: V) => void -> : ^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/enumAssignabilityInInheritance.types b/tests/baselines/reference/enumAssignabilityInInheritance.types index 532903fc56446..1d9d5a364a378 100644 --- a/tests/baselines/reference/enumAssignabilityInInheritance.types +++ b/tests/baselines/reference/enumAssignabilityInInheritance.types @@ -23,19 +23,19 @@ interface I0 { declare function foo(x: E): E; >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : E > : ^ declare function foo(x: number): number; >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ declare function foo(x: any): any; >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : any > : ^^^ @@ -45,7 +45,7 @@ var r = foo(E.A); // E >foo(E.A) : E > : ^ >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -59,7 +59,7 @@ var r2 = foo(1); // number >foo(1) : number > : ^^^^^^ >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -69,19 +69,19 @@ var r3 = foo(null); // any >foo(null) : any > : ^^^ >foo : { (x: E): E; (x: number): number; (x: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >null : any > : ^^^ declare function foo2(x: string): string; >foo2 : { (x: string): string; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : string > : ^^^^^^ declare function foo2(x: E): E; >foo2 : { (x: string): string; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -91,7 +91,7 @@ var r4 = foo2(E.A); >foo2(E.A) : E > : ^ >foo2 : { (x: string): string; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -101,13 +101,13 @@ var r4 = foo2(E.A); declare function foo3(x: boolean): boolean; >foo3 : { (x: boolean): boolean; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : boolean > : ^^^^^^^ declare function foo3(x: E): E; >foo3 : { (x: boolean): boolean; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -117,7 +117,7 @@ var r4 = foo3(E.A); >foo3(E.A) : E > : ^ >foo3 : { (x: boolean): boolean; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -127,13 +127,13 @@ var r4 = foo3(E.A); declare function foo4(x: Date): Date; >foo4 : { (x: Date): Date; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : Date > : ^^^^ declare function foo4(x: E): E; >foo4 : { (x: Date): Date; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -143,7 +143,7 @@ var r4 = foo4(E.A); >foo4(E.A) : E > : ^ >foo4 : { (x: Date): Date; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -153,13 +153,13 @@ var r4 = foo4(E.A); declare function foo5(x: RegExp): RegExp; >foo5 : { (x: RegExp): RegExp; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : RegExp > : ^^^^^^ declare function foo5(x: E): E; >foo5 : { (x: RegExp): RegExp; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -169,7 +169,7 @@ var r4 = foo5(E.A); >foo5(E.A) : E > : ^ >foo5 : { (x: RegExp): RegExp; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -179,7 +179,7 @@ var r4 = foo5(E.A); declare function foo6(x: { bar: number }): { bar: number }; >foo6 : { (x: { bar: number; }): { bar: number; }; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : { bar: number; } > : ^^^^^^^ ^^^ >bar : number @@ -189,7 +189,7 @@ declare function foo6(x: { bar: number }): { bar: number }; declare function foo6(x: E): E; >foo6 : { (x: { bar: number; }): { bar: number; }; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -199,7 +199,7 @@ var r4 = foo6(E.A); >foo6(E.A) : E > : ^ >foo6 : { (x: { bar: number; }): { bar: number; }; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -209,13 +209,13 @@ var r4 = foo6(E.A); declare function foo7(x: number[]): number[]; >foo7 : { (x: number[]): number[]; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : number[] > : ^^^^^^^^ declare function foo7(x: E): E; >foo7 : { (x: number[]): number[]; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -225,7 +225,7 @@ var r4 = foo7(E.A); >foo7(E.A) : E > : ^ >foo7 : { (x: number[]): number[]; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -239,13 +239,13 @@ interface I8 { foo: string; } declare function foo8(x: I8): I8; >foo8 : { (x: I8): I8; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : I8 > : ^^ declare function foo8(x: E): E; >foo8 : { (x: I8): I8; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -255,7 +255,7 @@ var r4 = foo8(E.A); >foo8(E.A) : E > : ^ >foo8 : { (x: I8): I8; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -271,13 +271,13 @@ class A { foo: number; } declare function foo9(x: A): A; >foo9 : { (x: A): A; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : A > : ^ declare function foo9(x: E): E; >foo9 : { (x: A): A; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -287,7 +287,7 @@ var r4 = foo9(E.A); >foo9(E.A) : E > : ^ >foo9 : { (x: A): A; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -303,13 +303,13 @@ class A2 { foo: T; } declare function foo10(x: A2): A2; >foo10 : { (x: A2): A2; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : A2 > : ^^^^^^^^^^ declare function foo10(x: E): E; >foo10 : { (x: A2): A2; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -319,7 +319,7 @@ var r4 = foo10(E.A); >foo10(E.A) : E > : ^ >foo10 : { (x: A2): A2; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -329,9 +329,9 @@ var r4 = foo10(E.A); declare function foo11(x: (x) => number): (x) => number; >foo11 : { (x: (x: any) => number): (x: any) => number; (x: E): E; } -> : ^^^^^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^ >x : (x: any) => number -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -339,7 +339,7 @@ declare function foo11(x: (x) => number): (x) => number; declare function foo11(x: E): E; >foo11 : { (x: (x: any) => number): (x: any) => number; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -349,7 +349,7 @@ var r4 = foo11(E.A); >foo11(E.A) : E > : ^ >foo11 : { (x: (x: any) => number): (x: any) => number; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -359,17 +359,17 @@ var r4 = foo11(E.A); declare function foo12(x: (x: T) => T): (x: T) => T; >foo12 : { (x: (x: T) => T): (x: T) => T; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >x : T > : ^ declare function foo12(x: E): E; ->foo12 : { (x: (x: T) => T): (x: T_1) => T_1; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +>foo12 : { (x: (x: T) => T): (x: T) => T; (x: E): E; } +> : ^^^ ^^ ^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -378,8 +378,8 @@ var r4 = foo12(E.A); > : ^ >foo12(E.A) : E > : ^ ->foo12 : { (x: (x: T) => T): (x: T_1) => T_1; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo12 : { (x: (x: T) => T): (x: T) => T; (x: E): E; } +> : ^^^ ^^ ^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -395,13 +395,13 @@ enum E2 { A } declare function foo13(x: E2): E2; >foo13 : { (x: E2): E2; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : E2 > : ^^ declare function foo13(x: E): E; >foo13 : { (x: E2): E2; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -411,7 +411,7 @@ var r4 = foo13(E.A); >foo13(E.A) : E > : ^ >foo13 : { (x: E2): E2; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -435,7 +435,7 @@ module f { } declare function foo14(x: typeof f): typeof f; >foo14 : { (x: typeof f): typeof f; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : typeof f > : ^^^^^^^^ >f : typeof f @@ -445,7 +445,7 @@ declare function foo14(x: typeof f): typeof f; declare function foo14(x: E): E; >foo14 : { (x: typeof f): typeof f; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -455,7 +455,7 @@ var r4 = foo14(E.A); >foo14(E.A) : E > : ^ >foo14 : { (x: typeof f): typeof f; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -481,13 +481,13 @@ module CC { } declare function foo15(x: CC): CC; >foo15 : { (x: CC): CC; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : CC > : ^^ declare function foo15(x: E): E; >foo15 : { (x: CC): CC; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -497,7 +497,7 @@ var r4 = foo15(E.A); >foo15(E.A) : E > : ^ >foo15 : { (x: CC): CC; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -507,13 +507,13 @@ var r4 = foo15(E.A); declare function foo16(x: Object): Object; >foo16 : { (x: Object): Object; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : Object > : ^^^^^^ declare function foo16(x: E): E; >foo16 : { (x: Object): Object; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -523,7 +523,7 @@ var r4 = foo16(E.A); >foo16(E.A) : Object > : ^^^^^^ >foo16 : { (x: Object): Object; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E @@ -533,13 +533,13 @@ var r4 = foo16(E.A); declare function foo17(x: {}): {}; >foo17 : { (x: {}): {}; (x: E): E; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >x : {} > : ^^ declare function foo17(x: E): E; >foo17 : { (x: {}): {}; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ >x : E > : ^ @@ -549,7 +549,7 @@ var r4 = foo16(E.A); >foo16(E.A) : Object > : ^^^^^^ >foo16 : { (x: Object): Object; (x: E): E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >E.A : E > : ^ >E : typeof E diff --git a/tests/baselines/reference/enumAssignmentCompat4.types b/tests/baselines/reference/enumAssignmentCompat4.types index 24206deadebdb..d3a00e12d5a93 100644 --- a/tests/baselines/reference/enumAssignmentCompat4.types +++ b/tests/baselines/reference/enumAssignmentCompat4.types @@ -68,7 +68,7 @@ let broken = [ >broken : ({ foo: M.MyEnum; } | { foo: N.MyEnum; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ N.object1, M.object2] : ({ foo: M.MyEnum; } | { foo: N.MyEnum; })[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^ N.object1, >N.object1 : { foo: N.MyEnum; } diff --git a/tests/baselines/reference/enumAssignmentCompat6.types b/tests/baselines/reference/enumAssignmentCompat6.types index 08f7f9e710a07..a8de9e8b106f2 100644 --- a/tests/baselines/reference/enumAssignmentCompat6.types +++ b/tests/baselines/reference/enumAssignmentCompat6.types @@ -110,7 +110,7 @@ declare namespace ambients { function f(x: numerics.DiagnosticCategory, y: strings.DiagnosticCategory) { >f : (x: numerics.DiagnosticCategory, y: strings.DiagnosticCategory) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : numerics.DiagnosticCategory > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numerics : any @@ -139,7 +139,7 @@ function f(x: numerics.DiagnosticCategory, y: strings.DiagnosticCategory) { function g(x: numerics.DiagnosticCategory2, y: strings.DiagnosticCategory) { >g : (x: numerics.DiagnosticCategory2, y: strings.DiagnosticCategory) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : numerics.DiagnosticCategory2 > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numerics : any @@ -168,7 +168,7 @@ function g(x: numerics.DiagnosticCategory2, y: strings.DiagnosticCategory) { function h(x: numerics.DiagnosticCategory, y: ambients.DiagnosticCategory) { >h : (x: numerics.DiagnosticCategory, y: ambients.DiagnosticCategory) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : numerics.DiagnosticCategory > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numerics : any @@ -197,7 +197,7 @@ function h(x: numerics.DiagnosticCategory, y: ambients.DiagnosticCategory) { function i(x: strings.DiagnosticCategory, y: ambients.DiagnosticCategory) { >i : (x: strings.DiagnosticCategory, y: ambients.DiagnosticCategory) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : strings.DiagnosticCategory > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >strings : any @@ -288,7 +288,7 @@ export let x: DiagnosticCategory; } function f(y: DiagnosticCategory) { >f : (y: DiagnosticCategory) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : DiagnosticCategory > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/enumAssignmentCompat7.types b/tests/baselines/reference/enumAssignmentCompat7.types index 56fd6bdb0940e..84e0ceebfe1da 100644 --- a/tests/baselines/reference/enumAssignmentCompat7.types +++ b/tests/baselines/reference/enumAssignmentCompat7.types @@ -33,7 +33,7 @@ class Base { method(param: first.E) { >method : (param: first.E) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : first.E > : ^^^^^^^ >first : any @@ -50,7 +50,7 @@ class Derived extends Base { override method(param: second.E) { >method : (param: second.E) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : second.E > : ^^^^^^^^ >second : any diff --git a/tests/baselines/reference/enumClassification.types b/tests/baselines/reference/enumClassification.types index 4f1195a86208e..2255fcf106d02 100644 --- a/tests/baselines/reference/enumClassification.types +++ b/tests/baselines/reference/enumClassification.types @@ -270,11 +270,11 @@ enum E20 { >Math.sin(1) : number > : ^^^^^^ >Math.sin : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sin : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/enumIndexer.types b/tests/baselines/reference/enumIndexer.types index 53b6b757fe291..567005b2db7d7 100644 --- a/tests/baselines/reference/enumIndexer.types +++ b/tests/baselines/reference/enumIndexer.types @@ -45,13 +45,13 @@ var x = _arr.map(o => MyEnumType[o.key] === enumValue); // these are not same ty >_arr.map(o => MyEnumType[o.key] === enumValue) : boolean[] > : ^^^^^^^^^ >_arr.map : (callbackfn: (value: { key: string; }, index: number, array: { key: string; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >_arr : { key: string; }[] > : ^^^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: { key: string; }, index: number, array: { key: string; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >o => MyEnumType[o.key] === enumValue : (o: { key: string; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : { key: string; } > : ^^^^^^^^^^^^^^^^ >MyEnumType[o.key] === enumValue : boolean diff --git a/tests/baselines/reference/enumLiteralTypes1.types b/tests/baselines/reference/enumLiteralTypes1.types index 28a5aaea201a5..e58dd0ea803be 100644 --- a/tests/baselines/reference/enumLiteralTypes1.types +++ b/tests/baselines/reference/enumLiteralTypes1.types @@ -68,7 +68,7 @@ function f1() { function f2(a: YesNo, b: UnknownYesNo, c: Choice) { >f2 : (a: YesNo, b: UnknownYesNo, c: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : YesNo > : ^^^^^ >b : UnknownYesNo @@ -103,7 +103,7 @@ function f2(a: YesNo, b: UnknownYesNo, c: Choice) { function f3(a: Choice.Yes, b: YesNo) { >f3 : (a: Choice.Yes, b: YesNo) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -298,7 +298,7 @@ function f3(a: Choice.Yes, b: YesNo) { function f4(a: Choice.Yes, b: YesNo) { >f4 : (a: Choice.Yes, b: YesNo) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -321,7 +321,7 @@ function f4(a: Choice.Yes, b: YesNo) { declare function g(x: Choice.Yes): string; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -329,7 +329,7 @@ declare function g(x: Choice.Yes): string; declare function g(x: Choice.No): boolean; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : Choice.No > : ^^^^^^^^^ >Choice : any @@ -337,13 +337,13 @@ declare function g(x: Choice.No): boolean; declare function g(x: Choice): number; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : Choice > : ^^^^^^ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >f5 : (a: YesNo, b: UnknownYesNo, c: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : YesNo > : ^^^^^ >b : UnknownYesNo @@ -357,7 +357,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(Choice.Yes) : string > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >Choice.Yes : Choice.Yes > : ^^^^^^^^^^ >Choice : typeof Choice @@ -371,7 +371,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(Choice.No) : boolean > : ^^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >Choice.No : Choice.No > : ^^^^^^^^^ >Choice : typeof Choice @@ -385,7 +385,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(a) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : YesNo > : ^^^^^ @@ -395,7 +395,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(b) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : UnknownYesNo > : ^^^^^^^^^^^^ @@ -405,14 +405,14 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(c) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : Choice > : ^^^^^^ } function assertNever(x: never): never { >assertNever : (x: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -427,7 +427,7 @@ function assertNever(x: never): never { function f10(x: YesNo) { >f10 : (x: YesNo) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : YesNo > : ^^^^^ @@ -459,7 +459,7 @@ function f10(x: YesNo) { function f11(x: YesNo) { >f11 : (x: YesNo) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : YesNo > : ^^^^^ @@ -491,14 +491,14 @@ function f11(x: YesNo) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } function f12(x: UnknownYesNo) { >f12 : (x: UnknownYesNo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : UnknownYesNo > : ^^^^^^^^^^^^ @@ -519,7 +519,7 @@ function f12(x: UnknownYesNo) { function f13(x: UnknownYesNo) { >f13 : (x: UnknownYesNo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : UnknownYesNo > : ^^^^^^^^^^^^ @@ -568,7 +568,7 @@ type Item = function f20(x: Item) { >f20 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -612,7 +612,7 @@ function f20(x: Item) { function f21(x: Item) { >f21 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -656,7 +656,7 @@ function f21(x: Item) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } diff --git a/tests/baselines/reference/enumLiteralTypes2.types b/tests/baselines/reference/enumLiteralTypes2.types index 637f46abdff50..1ac8fbfee8d55 100644 --- a/tests/baselines/reference/enumLiteralTypes2.types +++ b/tests/baselines/reference/enumLiteralTypes2.types @@ -68,7 +68,7 @@ function f1() { function f2(a: YesNo, b: UnknownYesNo, c: Choice) { >f2 : (a: YesNo, b: UnknownYesNo, c: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : YesNo > : ^^^^^ >b : UnknownYesNo @@ -103,7 +103,7 @@ function f2(a: YesNo, b: UnknownYesNo, c: Choice) { function f3(a: Choice.Yes, b: UnknownYesNo) { >f3 : (a: Choice.Yes, b: UnknownYesNo) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -298,7 +298,7 @@ function f3(a: Choice.Yes, b: UnknownYesNo) { function f4(a: Choice.Yes, b: UnknownYesNo) { >f4 : (a: Choice.Yes, b: UnknownYesNo) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -321,7 +321,7 @@ function f4(a: Choice.Yes, b: UnknownYesNo) { declare function g(x: Choice.Yes): string; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : Choice.Yes > : ^^^^^^^^^^ >Choice : any @@ -329,7 +329,7 @@ declare function g(x: Choice.Yes): string; declare function g(x: Choice.No): boolean; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : Choice.No > : ^^^^^^^^^ >Choice : any @@ -337,13 +337,13 @@ declare function g(x: Choice.No): boolean; declare function g(x: Choice): number; >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : Choice > : ^^^^^^ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >f5 : (a: YesNo, b: UnknownYesNo, c: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : YesNo > : ^^^^^ >b : UnknownYesNo @@ -357,7 +357,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(Choice.Yes) : string > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >Choice.Yes : Choice.Yes > : ^^^^^^^^^^ >Choice : typeof Choice @@ -371,7 +371,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(Choice.No) : boolean > : ^^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >Choice.No : Choice.No > : ^^^^^^^^^ >Choice : typeof Choice @@ -385,7 +385,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(a) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : YesNo > : ^^^^^ @@ -395,7 +395,7 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(b) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : UnknownYesNo > : ^^^^^^^^^^^^ @@ -405,14 +405,14 @@ function f5(a: YesNo, b: UnknownYesNo, c: Choice) { >g(c) : number > : ^^^^^^ >g : { (x: Choice.Yes): string; (x: Choice.No): boolean; (x: Choice): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : Choice > : ^^^^^^ } function assertNever(x: never): never { >assertNever : (x: never) => never -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : never > : ^^^^^ @@ -427,7 +427,7 @@ function assertNever(x: never): never { function f10(x: YesNo) { >f10 : (x: YesNo) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : YesNo > : ^^^^^ @@ -459,7 +459,7 @@ function f10(x: YesNo) { function f11(x: YesNo) { >f11 : (x: YesNo) => "true" | "false" -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >x : YesNo > : ^^^^^ @@ -491,14 +491,14 @@ function f11(x: YesNo) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } function f12(x: UnknownYesNo) { >f12 : (x: UnknownYesNo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : UnknownYesNo > : ^^^^^^^^^^^^ @@ -519,7 +519,7 @@ function f12(x: UnknownYesNo) { function f13(x: UnknownYesNo) { >f13 : (x: UnknownYesNo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : UnknownYesNo > : ^^^^^^^^^^^^ @@ -568,7 +568,7 @@ type Item = function f20(x: Item) { >f20 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -612,7 +612,7 @@ function f20(x: Item) { function f21(x: Item) { >f21 : (x: Item) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Item > : ^^^^ @@ -656,7 +656,7 @@ function f21(x: Item) { >assertNever(x) : never > : ^^^^^ >assertNever : (x: never) => never -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >x : never > : ^^^^^ } diff --git a/tests/baselines/reference/enumLiteralTypes3.types b/tests/baselines/reference/enumLiteralTypes3.types index 150543d1ec334..91d942e5fbd43 100644 --- a/tests/baselines/reference/enumLiteralTypes3.types +++ b/tests/baselines/reference/enumLiteralTypes3.types @@ -45,7 +45,7 @@ type UnknownYesNo = Choice.Unknown | Choice.Yes | Choice.No; function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f1 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -90,7 +90,7 @@ function f1(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f2 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -135,7 +135,7 @@ function f2(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f3 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -180,7 +180,7 @@ function f3(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f4 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -225,7 +225,7 @@ function f4(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f5 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -382,7 +382,7 @@ function f5(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f6 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -539,7 +539,7 @@ function f6(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { >f7 : (a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Choice.Yes > : ^^^^^^^^^^ >b : YesNo @@ -680,7 +680,7 @@ function f7(a: Yes, b: YesNo, c: UnknownYesNo, d: Choice) { function f10(x: Yes): Yes { >f10 : (x: Yes) => Yes -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Choice.Yes > : ^^^^^^^^^^ @@ -725,7 +725,7 @@ function f10(x: Yes): Yes { function f11(x: YesNo): YesNo { >f11 : (x: YesNo) => YesNo -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : YesNo > : ^^^^^ @@ -770,7 +770,7 @@ function f11(x: YesNo): YesNo { function f12(x: UnknownYesNo): UnknownYesNo { >f12 : (x: UnknownYesNo) => UnknownYesNo -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : UnknownYesNo > : ^^^^^^^^^^^^ @@ -815,7 +815,7 @@ function f12(x: UnknownYesNo): UnknownYesNo { function f13(x: Choice): Choice { >f13 : (x: Choice) => Choice -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Choice > : ^^^^^^ diff --git a/tests/baselines/reference/enumLiteralUnionNotWidened.types b/tests/baselines/reference/enumLiteralUnionNotWidened.types index c6b3c5825cb3f..7ba0ceab76519 100644 --- a/tests/baselines/reference/enumLiteralUnionNotWidened.types +++ b/tests/baselines/reference/enumLiteralUnionNotWidened.types @@ -49,7 +49,7 @@ class List function asList(arg: T): List { return new List(); } >asList : (arg: T) => List -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arg : T > : ^ >new List() : List @@ -61,26 +61,26 @@ function asList(arg: T): List { return new List(); } // The correct type is "List" function fn1(x: C): List { return asList(x); } >fn1 : (x: C) => List -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : C > : ^ >asList(x) : List > : ^^^^^^^ >asList : (arg: T) => List -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >x : C > : ^ // If we use the literal "foo" instead of B.foo, the correct type is inferred function fn2(x: D): List { return asList(x); } >fn2 : (x: D) => List -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : D > : ^ >asList(x) : List > : ^^^^^^^ >asList : (arg: T) => List -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >x : D > : ^ diff --git a/tests/baselines/reference/enumLiteralsSubtypeReduction.types b/tests/baselines/reference/enumLiteralsSubtypeReduction.types index 0287510e8e5b8..4a0664f63a16c 100644 --- a/tests/baselines/reference/enumLiteralsSubtypeReduction.types +++ b/tests/baselines/reference/enumLiteralsSubtypeReduction.types @@ -4107,7 +4107,7 @@ enum E { } function run(a: number) { >run : (a: number) => E[] -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/enumMemberReduction.types b/tests/baselines/reference/enumMemberReduction.types index e5bfb8f4fa1b3..4953f38c6b244 100644 --- a/tests/baselines/reference/enumMemberReduction.types +++ b/tests/baselines/reference/enumMemberReduction.types @@ -66,7 +66,7 @@ enum MyStringEnumWithEmpty { export function fn(optionalEnum: MyEnum | undefined) { >fn : (optionalEnum: MyEnum | undefined) => MyEnum -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >optionalEnum : MyEnum > : ^^^^^^ @@ -85,7 +85,7 @@ export function fn(optionalEnum: MyEnum | undefined) { export function fn2(optionalEnum: MyEnum | undefined) { >fn2 : (optionalEnum: MyEnum | undefined) => MyEnum.B | MyEnum.C -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >optionalEnum : MyEnum > : ^^^^^^ @@ -104,7 +104,7 @@ export function fn2(optionalEnum: MyEnum | undefined) { export function fn3(optionalEnum?: MyEnum) { >fn3 : (optionalEnum?: MyEnum) => MyEnum -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >optionalEnum : MyEnum > : ^^^^^^ @@ -123,7 +123,7 @@ export function fn3(optionalEnum?: MyEnum) { export function fn4(optionalEnum?: MyEnum) { >fn4 : (optionalEnum?: MyEnum) => MyEnum.B | MyEnum.C -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >optionalEnum : MyEnum > : ^^^^^^ @@ -142,7 +142,7 @@ export function fn4(optionalEnum?: MyEnum) { export function fn5(optionalEnum?: MyStringEnum) { >fn5 : (optionalEnum?: MyStringEnum) => MyStringEnum -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^ >optionalEnum : MyStringEnum > : ^^^^^^^^^^^^ @@ -161,7 +161,7 @@ export function fn5(optionalEnum?: MyStringEnum) { export function fn6(optionalEnum?: MyStringEnumWithEmpty) { >fn6 : (optionalEnum?: MyStringEnumWithEmpty) => MyStringEnumWithEmpty.B | MyStringEnumWithEmpty.C -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >optionalEnum : MyStringEnumWithEmpty > : ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/enumNumbering1.types b/tests/baselines/reference/enumNumbering1.types index a53f82d87a9b9..c44f749cd6e91 100644 --- a/tests/baselines/reference/enumNumbering1.types +++ b/tests/baselines/reference/enumNumbering1.types @@ -19,11 +19,11 @@ enum Test { >Math.floor(Math.random() * 1000) : number > : ^^^^^^ >Math.floor : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >floor : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math.random() * 1000 : number > : ^^^^^^ >Math.random() : number diff --git a/tests/baselines/reference/enumPropertyAccess.types b/tests/baselines/reference/enumPropertyAccess.types index 0620db4ce8468..9a0f6e2f2c8f9 100644 --- a/tests/baselines/reference/enumPropertyAccess.types +++ b/tests/baselines/reference/enumPropertyAccess.types @@ -38,16 +38,16 @@ x.toFixed(); // ok >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : Colors.Red > : ^^^^^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ // Now with generics function fill(f: B) { >fill : (f: B) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >f : B > : ^ @@ -63,9 +63,9 @@ function fill(f: B) { >f.toFixed() : string > : ^^^^^^ >f.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >f : Colors > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/enumTag.types b/tests/baselines/reference/enumTag.types index b967c23d36a62..7b9a5ccfc26e7 100644 --- a/tests/baselines/reference/enumTag.types +++ b/tests/baselines/reference/enumTag.types @@ -68,15 +68,15 @@ const Second = { /** @enum {function(number): number} */ const Fs = { >Fs : { ADD1: (n: any) => any; ID: (n: any) => any; SUB1: (n: any) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >{ ADD1: n => n + 1, ID: n => n, SUB1: n => n - 1} : { ADD1: (n: any) => any; ID: (n: any) => any; SUB1: (n: any) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^ ADD1: n => n + 1, >ADD1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n => n + 1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any > : ^^^ >n + 1 : any @@ -88,9 +88,9 @@ const Fs = { ID: n => n, >ID : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n => n : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any > : ^^^ >n : any @@ -98,9 +98,9 @@ const Fs = { SUB1: n => n - 1 >SUB1 : (n: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >n => n - 1 : (n: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >n : any > : ^^^ >n - 1 : number @@ -117,7 +117,7 @@ const Fs = { */ function consume(t,s,f) { >consume : (t: Target, s: Second, f: Fs) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : string > : ^^^^^^ >s : number @@ -142,7 +142,7 @@ function consume(t,s,f) { /** @type {(n: number) => number} */ var fun = f >fun : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f : Fs > : ^^ @@ -192,7 +192,7 @@ function consume(t,s,f) { /** @param {string} s */ function ff(s) { >ff : (s: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/equalityStrictNulls.types b/tests/baselines/reference/equalityStrictNulls.types index bd8e7719b960c..f7c89fa2479da 100644 --- a/tests/baselines/reference/equalityStrictNulls.types +++ b/tests/baselines/reference/equalityStrictNulls.types @@ -3,7 +3,7 @@ === equalityStrictNulls.ts === function f1(x: string) { >f1 : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ @@ -153,7 +153,7 @@ function f2() { function f3(a: number, b: boolean, c: { x: number }, d: number | string) { >f3 : (a: number, b: boolean, c: { x: number; }, d: number | string) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : boolean @@ -193,7 +193,7 @@ function f3(a: number, b: boolean, c: { x: number }, d: number | string) { function f4(x: number) { >f4 : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -232,7 +232,7 @@ function f4(x: number) { } function f5(x: string) { >f5 : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/equalityWithEnumTypes.types b/tests/baselines/reference/equalityWithEnumTypes.types index bbaca0dde5875..d71464727cc60 100644 --- a/tests/baselines/reference/equalityWithEnumTypes.types +++ b/tests/baselines/reference/equalityWithEnumTypes.types @@ -47,7 +47,7 @@ enum E2 { function f1(v: E1) { >f1 : (v: E1) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : E1 > : ^^ @@ -103,7 +103,7 @@ function f1(v: E1) { function f2(v: E2) { >f2 : (v: E2) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : E2 > : ^^ diff --git a/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=false).types b/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=false).types index d39f702f231f8..4bc79f16fde11 100644 --- a/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=false).types +++ b/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=false).types @@ -3,7 +3,7 @@ === equalityWithtNullishCoalescingAssignment.ts === function f1(a?: boolean): void { >f1 : (a?: boolean) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : boolean > : ^^^^^^^ @@ -27,11 +27,11 @@ function f1(a?: boolean): void { >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : false > : ^^^^^ } @@ -40,7 +40,7 @@ f1(false); >f1(false) : void > : ^^^^ >f1 : (a?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >false : false > : ^^^^^ @@ -75,11 +75,11 @@ function f2() { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : 0 > : ^ } diff --git a/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=true).types b/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=true).types index 8814f5d138e9a..91515d199634a 100644 --- a/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=true).types +++ b/tests/baselines/reference/equalityWithtNullishCoalescingAssignment(strict=true).types @@ -3,7 +3,7 @@ === equalityWithtNullishCoalescingAssignment.ts === function f1(a?: boolean): void { >f1 : (a?: boolean) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ @@ -27,11 +27,11 @@ function f1(a?: boolean): void { >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : false > : ^^^^^ } @@ -39,8 +39,8 @@ function f1(a?: boolean): void { f1(false); >f1(false) : void > : ^^^^ ->f1 : (a?: boolean | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f1 : (a?: boolean) => void +> : ^ ^^^ ^^^^^^^^^ >false : false > : ^^^^^ @@ -75,11 +75,11 @@ function f2() { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : 0 > : ^ } diff --git a/tests/baselines/reference/errorConstructorSubtypes.types b/tests/baselines/reference/errorConstructorSubtypes.types index 99007cc903e53..6bfded1bee507 100644 --- a/tests/baselines/reference/errorConstructorSubtypes.types +++ b/tests/baselines/reference/errorConstructorSubtypes.types @@ -5,7 +5,7 @@ interface ErrorConstructor { captureStackTrace(targetObject: Object, constructorOpt?: Function): void; >captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >targetObject : Object > : ^^^^^^ >constructorOpt : Function @@ -44,9 +44,9 @@ new x().message x.captureStackTrace >x.captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >x : ErrorConstructor > : ^^^^^^^^^^^^^^^^ >captureStackTrace : (targetObject: Object, constructorOpt?: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/errorElaboration.types b/tests/baselines/reference/errorElaboration.types index 346b022fc523e..2997a3ae2e656 100644 --- a/tests/baselines/reference/errorElaboration.types +++ b/tests/baselines/reference/errorElaboration.types @@ -19,7 +19,7 @@ interface Container { } declare function foo(x: () => Container>): void; >foo : (x: () => Container>) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : () => Container> > : ^^^^^^ @@ -31,7 +31,7 @@ foo(a); >foo(a) : void > : ^^^^ >foo : (x: () => Container>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : () => Container> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -64,13 +64,13 @@ const foo = { bar: 'a' }; const x = ({ [foo.bar]: c }) => undefined; >x : ({ [foo.bar]: c }: {}) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >({ [foo.bar]: c }) => undefined : ({ [foo.bar]: c }: {}) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo.bar : any > : ^^^ >foo : (x: () => Container>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >bar : any > : ^^^ >c : any diff --git a/tests/baselines/reference/errorElaborationDivesIntoApparentlyPresentPropsOnly.types b/tests/baselines/reference/errorElaborationDivesIntoApparentlyPresentPropsOnly.types index 6e855f30d69e5..64584fcedeab5 100644 --- a/tests/baselines/reference/errorElaborationDivesIntoApparentlyPresentPropsOnly.types +++ b/tests/baselines/reference/errorElaborationDivesIntoApparentlyPresentPropsOnly.types @@ -3,7 +3,7 @@ === errorElaborationDivesIntoApparentlyPresentPropsOnly.ts === function foo(x: T) { >foo : (x: T) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >x : T @@ -32,7 +32,7 @@ function foo(x: T) { function bar(x: T) { >bar : (x: T) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >x : T @@ -53,7 +53,7 @@ function bar(x: T) { function baz(x: T) { >baz : (x: T) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >x : T diff --git a/tests/baselines/reference/errorForUsingPropertyOfTypeAsType02.types b/tests/baselines/reference/errorForUsingPropertyOfTypeAsType02.types index 14e7071e0f5d7..8d40539101af8 100644 --- a/tests/baselines/reference/errorForUsingPropertyOfTypeAsType02.types +++ b/tests/baselines/reference/errorForUsingPropertyOfTypeAsType02.types @@ -7,7 +7,7 @@ namespace Test1 { function foo(x: T) { >foo : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >abc : number > : ^^^^^^ >x : T diff --git a/tests/baselines/reference/errorForUsingPropertyOfTypeAsType03.types b/tests/baselines/reference/errorForUsingPropertyOfTypeAsType03.types index f0a050804aacd..aeabf21398b02 100644 --- a/tests/baselines/reference/errorForUsingPropertyOfTypeAsType03.types +++ b/tests/baselines/reference/errorForUsingPropertyOfTypeAsType03.types @@ -42,7 +42,7 @@ namespace Test1 { let a2: Color.Red["toString"]; >a2 : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >Color : any > : ^^^ @@ -54,7 +54,7 @@ namespace Test1 { //let b2: (typeof Color).Red["toString"]; let b3: (typeof Color)["Red"]["toString"]; >b3 : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >Color : typeof Color > : ^^^^^^^^^^^^ @@ -92,5 +92,5 @@ namespace Test1 { let d3: C2["Red"]["toString"]; >d3 : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/errorIsolation.types b/tests/baselines/reference/errorIsolation.types index 134b1f810174c..1e4295ae715cb 100644 --- a/tests/baselines/reference/errorIsolation.types +++ b/tests/baselines/reference/errorIsolation.types @@ -3,24 +3,24 @@ === errorIsolation.js === const async = { doSomething: _ => {} }; >async : { doSomething: (_: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >{ doSomething: _ => {} } : { doSomething: (_: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ >doSomething : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >_ => {} : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >_ : any async.doSomething( >async.doSomething( /***/ () => {}) : void > : ^^^^ >async.doSomething : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >async : { doSomething: (_: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >doSomething : (_: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ /***/ () => {} diff --git a/tests/baselines/reference/errorMessagesIntersectionTypes01.types b/tests/baselines/reference/errorMessagesIntersectionTypes01.types index a4474669aeab7..7b3d0a2f9cdcd 100644 --- a/tests/baselines/reference/errorMessagesIntersectionTypes01.types +++ b/tests/baselines/reference/errorMessagesIntersectionTypes01.types @@ -18,7 +18,7 @@ interface FooBar extends Foo, Bar { declare function mixBar(obj: T): T & Bar; >mixBar : (obj: T) => T & Bar -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ @@ -28,7 +28,7 @@ let fooBar: FooBar = mixBar({ >mixBar({ fooProp: "frizzlebizzle"}) : { fooProp: string; } & Bar > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >mixBar : (obj: T) => T & Bar -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >{ fooProp: "frizzlebizzle"} : { fooProp: string; } > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/errorMessagesIntersectionTypes02.types b/tests/baselines/reference/errorMessagesIntersectionTypes02.types index 6793a0aed4af8..93c7128b5ea37 100644 --- a/tests/baselines/reference/errorMessagesIntersectionTypes02.types +++ b/tests/baselines/reference/errorMessagesIntersectionTypes02.types @@ -18,7 +18,7 @@ interface FooBar extends Foo, Bar { declare function mixBar(obj: T): T & Bar; >mixBar : (obj: T) => T & Bar -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ @@ -28,7 +28,7 @@ let fooBar: FooBar = mixBar({ >mixBar({ fooProp: "frizzlebizzle"}) : { fooProp: "frizzlebizzle"; } & Bar > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mixBar : (obj: T) => T & Bar -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >{ fooProp: "frizzlebizzle"} : { fooProp: "frizzlebizzle"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/errorOnFunctionReturnType.types b/tests/baselines/reference/errorOnFunctionReturnType.types index 243bcab51621d..cecb5df648fbc 100644 --- a/tests/baselines/reference/errorOnFunctionReturnType.types +++ b/tests/baselines/reference/errorOnFunctionReturnType.types @@ -15,11 +15,11 @@ function testPromise1() { >console.log("Nope") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Nope" : "Nope" > : ^^^^^^ } @@ -44,11 +44,11 @@ var testPromise3 = /** @type {FunctionReturningPromise} */ function() { >console.log("test") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"test" : "test" > : ^^^^^^ } @@ -64,11 +64,11 @@ var testPromise4 = function() { >console.log("test") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"test" : "test" > : ^^^^^^ } @@ -105,11 +105,11 @@ var testNever3 = /** @type {FunctionReturningNever} */ function() { >console.log("test") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"test" : "test" > : ^^^^^^ } @@ -125,11 +125,11 @@ var testNever4 = function() { >console.log("test") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"test" : "test" > : ^^^^^^ } diff --git a/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate.types b/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate.types index e92ebc759953d..6d007eadebfb1 100644 --- a/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate.types +++ b/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate.types @@ -67,7 +67,7 @@ interface Stuff { >b : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -75,7 +75,7 @@ interface Stuff { >c : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -83,7 +83,7 @@ interface Stuff { >d : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -91,7 +91,7 @@ interface Stuff { >e : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -99,7 +99,7 @@ interface Stuff { >f : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -107,7 +107,7 @@ interface Stuff { >g : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -115,7 +115,7 @@ interface Stuff { >h : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -123,7 +123,7 @@ interface Stuff { >i : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -131,7 +131,7 @@ interface Stuff { >j : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -139,7 +139,7 @@ interface Stuff { >k : () => number > : ^^^^^^^^^^^^ >() => 123 : () => number -> : ^^^^^^^^^^^^ +> : >123 : 123 > : ^^^ } diff --git a/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types b/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types index 362cb0988913b..c4d664b91ba20 100644 --- a/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types +++ b/tests/baselines/reference/errorOnUnionVsObjectShouldDeeplyDisambiguate2.types @@ -67,7 +67,7 @@ function foo(): Stuff | Date { >b : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -75,7 +75,7 @@ function foo(): Stuff | Date { >c : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -83,7 +83,7 @@ function foo(): Stuff | Date { >d : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -91,7 +91,7 @@ function foo(): Stuff | Date { >e : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -99,7 +99,7 @@ function foo(): Stuff | Date { >f : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -107,7 +107,7 @@ function foo(): Stuff | Date { >g : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -115,7 +115,7 @@ function foo(): Stuff | Date { >h : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -123,7 +123,7 @@ function foo(): Stuff | Date { >i : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -131,7 +131,7 @@ function foo(): Stuff | Date { >j : () => string > : ^^^^^^^^^^^^ >() => "hello" : () => string -> : ^^^^^^^^^^^^ +> : >"hello" : "hello" > : ^^^^^^^ @@ -139,7 +139,7 @@ function foo(): Stuff | Date { >k : () => number > : ^^^^^^^^^^^^ >() => 123 : () => number -> : ^^^^^^^^^^^^ +> : >123 : 123 > : ^^^ } diff --git a/tests/baselines/reference/errorSpanForUnclosedJsxTag.types b/tests/baselines/reference/errorSpanForUnclosedJsxTag.types index 635dc608148b2..3420390f31999 100644 --- a/tests/baselines/reference/errorSpanForUnclosedJsxTag.types +++ b/tests/baselines/reference/errorSpanForUnclosedJsxTag.types @@ -20,7 +20,7 @@ let Baz = () => {} >Baz : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : let x = < Foo.Bar >Hello >x : any diff --git a/tests/baselines/reference/errorSuperPropertyAccess.types b/tests/baselines/reference/errorSuperPropertyAccess.types index 851e536a28d4c..6ff24eb5a60f5 100644 --- a/tests/baselines/reference/errorSuperPropertyAccess.types +++ b/tests/baselines/reference/errorSuperPropertyAccess.types @@ -297,13 +297,13 @@ class SomeDerived1 extends SomeBase { >x : { test: () => any; } > : ^^^^^^^^^^^^^^^^^^^^ >{ test: function () { return super.publicFunc(); } } : { test: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^ test: function () { return super.publicFunc(); } >test : () => any > : ^^^^^^^^^ >function () { return super.publicFunc(); } : () => any -> : ^^^^^^^^^ +> : >super.publicFunc() : any > : ^^^ >super.publicFunc : any diff --git a/tests/baselines/reference/errorTypesAsTypeArguments.types b/tests/baselines/reference/errorTypesAsTypeArguments.types index e97f9f9321dd7..9438d8ccd87aa 100644 --- a/tests/baselines/reference/errorTypesAsTypeArguments.types +++ b/tests/baselines/reference/errorTypesAsTypeArguments.types @@ -4,7 +4,7 @@ interface Foo { bar(baz: Foo): Foo; >bar : (baz: Foo) => Foo -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >baz : Foo > : ^^^^^^ } diff --git a/tests/baselines/reference/errorsForCallAndAssignmentAreSimilar.types b/tests/baselines/reference/errorsForCallAndAssignmentAreSimilar.types index fb200e3243831..425b24082c6a3 100644 --- a/tests/baselines/reference/errorsForCallAndAssignmentAreSimilar.types +++ b/tests/baselines/reference/errorsForCallAndAssignmentAreSimilar.types @@ -19,7 +19,7 @@ function minimalExample1() { function foo(x: Disc[]) { >foo : (x: ({ kind: "hddvd"; } | { kind: "bluray"; })[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : ({ kind: "hddvd"; } | { kind: "bluray"; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -28,7 +28,7 @@ function minimalExample1() { >foo([ { kind: "bluray", }, { kind: "hdpvd", } ]) : void > : ^^^^ >foo : (x: ({ kind: "hddvd"; } | { kind: "bluray"; })[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ { kind: "bluray", }, { kind: "hdpvd", } ] : ({ kind: "bluray"; } | { kind: "hdpvd"; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/errorsInGenericTypeReference.types b/tests/baselines/reference/errorsInGenericTypeReference.types index 1eda491c15342..9d6e105b0ab5b 100644 --- a/tests/baselines/reference/errorsInGenericTypeReference.types +++ b/tests/baselines/reference/errorsInGenericTypeReference.types @@ -47,7 +47,7 @@ var tc2 = new testClass2<{ x: V }>(); // error: could not find symbol V >tc2 : testClass2<{ x: V; }> > : ^^^^^^^^^^^^^^^^^^^^^ >new testClass2<{ x: V }>() : testClass2<{ x: V; }> -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^ >testClass2 : typeof testClass2 > : ^^^^^^^^^^^^^^^^^ >x : V @@ -98,7 +98,7 @@ function testFunction1(): Foo<{ x: V }> { return null; } // error: could not fin // in paramter types function testFunction2(p: Foo<{ x: V }>) { }// error: could not find symbol V >testFunction2 : (p: Foo<{ x: V; }>) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : Foo<{ x: V; }> > : ^^^^^^^^^^^^^^ >x : V @@ -180,7 +180,7 @@ interface testInterface2 { method(a: Foo<{ x: V }>): Foo<{ x: V }>; //2x: error: could not find symbol V >method : (a: Foo<{ x: V; }>) => Foo<{ x: V; }> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : Foo<{ x: V; }> > : ^^^^^^^^^^^^^^ >x : V diff --git a/tests/baselines/reference/errorsOnUnionsOfOverlappingObjects01.types b/tests/baselines/reference/errorsOnUnionsOfOverlappingObjects01.types index 5cc98b4688391..997ac9fd7c620 100644 --- a/tests/baselines/reference/errorsOnUnionsOfOverlappingObjects01.types +++ b/tests/baselines/reference/errorsOnUnionsOfOverlappingObjects01.types @@ -40,7 +40,7 @@ export let x = { a: '', b: '' }; declare function f(x: Foo | Other): any; >f : (x: Foo | Other) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Foo | Other > : ^^^^^^^^^^^ @@ -48,7 +48,7 @@ f(x); >f(x) : any > : ^^^ >f : (x: Foo | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -56,7 +56,7 @@ f({ a: '', b: '' }) >f({ a: '', b: '' }) : any > : ^^^ >f : (x: Foo | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ a: '', b: '' } : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string @@ -70,7 +70,7 @@ f({ a: '', b: '' }) declare function g(x: Bar | Other): any; >g : (x: Bar | Other) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Bar | Other > : ^^^^^^^^^^^ @@ -78,7 +78,7 @@ g(x); >g(x) : any > : ^^^ >g : (x: Bar | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -86,7 +86,7 @@ g({ a: '', b: '' }) >g({ a: '', b: '' }) : any > : ^^^ >g : (x: Bar | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ a: '', b: '' } : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string @@ -100,7 +100,7 @@ g({ a: '', b: '' }) declare function h(x: Foo | Bar | Other): any; >h : (x: Foo | Bar | Other) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Foo | Bar | Other > : ^^^^^^^^^^^^^^^^^ @@ -108,7 +108,7 @@ h(x); >h(x) : any > : ^^^ >h : (x: Foo | Bar | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -116,7 +116,7 @@ h({ a: '', b: '' }) >h({ a: '', b: '' }) : any > : ^^^ >h : (x: Foo | Bar | Other) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >{ a: '', b: '' } : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string @@ -156,7 +156,7 @@ type ExoticAnimal = declare function addToZoo(animal: ExoticAnimal): void; >addToZoo : (animal: ExoticAnimal) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >animal : ExoticAnimal > : ^^^^^^^^^^^^ @@ -164,7 +164,7 @@ addToZoo({ dog: "Barky McBarkface" }); >addToZoo({ dog: "Barky McBarkface" }) : void > : ^^^^ >addToZoo : (animal: ExoticAnimal) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ dog: "Barky McBarkface" } : { dog: string; } > : ^^^^^^^^^^^^^^^^ >dog : string @@ -176,7 +176,7 @@ addToZoo({ man: "Manny", bear: "Coffee" }); >addToZoo({ man: "Manny", bear: "Coffee" }) : void > : ^^^^ >addToZoo : (animal: ExoticAnimal) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ man: "Manny", bear: "Coffee" } : { man: string; bear: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >man : string @@ -206,7 +206,7 @@ addToZoo({ man: "Manny", beer: "Coffee" }); >addToZoo({ man: "Manny", beer: "Coffee" }) : void > : ^^^^ >addToZoo : (animal: ExoticAnimal) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ man: "Manny", beer: "Coffee" } : { man: string; beer: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >man : string @@ -222,7 +222,7 @@ addToZoo(manBeer); >addToZoo(manBeer) : void > : ^^^^ >addToZoo : (animal: ExoticAnimal) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >manBeer : { man: string; beer: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/errorsWithInvokablesInUnions01.types b/tests/baselines/reference/errorsWithInvokablesInUnions01.types index 33761f2565814..4c364c7ee80e7 100644 --- a/tests/baselines/reference/errorsWithInvokablesInUnions01.types +++ b/tests/baselines/reference/errorsWithInvokablesInUnions01.types @@ -27,7 +27,7 @@ export let blah: IDirectiveLinkFn | ConstructableA | IDirectivePrePostblah : ConstructableA | IDirectiveLinkFn | IDirectivePrePost > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: string) => {} : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/es2016IntlAPIs.types b/tests/baselines/reference/es2016IntlAPIs.types index a8c48cc0ac42c..287dd99a0edf0 100644 --- a/tests/baselines/reference/es2016IntlAPIs.types +++ b/tests/baselines/reference/es2016IntlAPIs.types @@ -7,19 +7,19 @@ console.log(Intl.getCanonicalLocales('EN-US')); >console.log(Intl.getCanonicalLocales('EN-US')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.getCanonicalLocales('EN-US') : string[] > : ^^^^^^^^ >Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ >getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >'EN-US' : "EN-US" > : ^^^^^^^ @@ -29,19 +29,19 @@ console.log(Intl.getCanonicalLocales(['EN-US', 'Fr'])); >console.log(Intl.getCanonicalLocales(['EN-US', 'Fr'])) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.getCanonicalLocales(['EN-US', 'Fr']) : string[] > : ^^^^^^^^ >Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ >getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >['EN-US', 'Fr'] : string[] > : ^^^^^^^^ >'EN-US' : "EN-US" @@ -56,11 +56,11 @@ try { >Intl.getCanonicalLocales('EN_US') : string[] > : ^^^^^^^^ >Intl.getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ >getCanonicalLocales : (locale?: string | readonly string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^ >'EN_US' : "EN_US" > : ^^^^^^^ @@ -71,11 +71,11 @@ try { >console.log(err.toString()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err.toString() : any >err.toString : any >err : any diff --git a/tests/baselines/reference/es2017DateAPIs.types b/tests/baselines/reference/es2017DateAPIs.types index eff98a5a7004e..37f0dff23752b 100644 --- a/tests/baselines/reference/es2017DateAPIs.types +++ b/tests/baselines/reference/es2017DateAPIs.types @@ -5,11 +5,11 @@ Date.UTC(2017); >Date.UTC(2017) : number > : ^^^^^^ >Date.UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >Date : DateConstructor > : ^^^^^^^^^^^^^^^ >UTC : { (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; (year: number, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >2017 : 2017 > : ^^^^ diff --git a/tests/baselines/reference/es2017basicAsync.types b/tests/baselines/reference/es2017basicAsync.types index 59422ddb6b6c8..f87fc4e0e44a8 100644 --- a/tests/baselines/reference/es2017basicAsync.types +++ b/tests/baselines/reference/es2017basicAsync.types @@ -27,7 +27,7 @@ const asyncArrowFunc = async (): Promise => { >asyncArrowFunc : () => Promise > : ^^^^^^ >async (): Promise => { await 0;} : () => Promise -> : ^^^^^^ +> : await 0; >await 0 : 0 @@ -111,7 +111,7 @@ class AsyncClass { >asyncPropFunc : () => Promise > : ^^^^^^ >async function(): Promise { await 2; } : () => Promise -> : ^^^^^^ +> : await 2; >await 2 : 2 @@ -124,7 +124,7 @@ class AsyncClass { >asyncPropNamedFunc : () => Promise > : ^^^^^^ >async function namedFunc(): Promise { await 2; } : () => Promise -> : ^^^^^^ +> : >namedFunc : () => Promise > : ^^^^^^ @@ -139,7 +139,7 @@ class AsyncClass { >asyncPropArrowFunc : () => Promise > : ^^^^^^ >async (): Promise => { await 2; } : () => Promise -> : ^^^^^^ +> : await 2; >await 2 : 2 diff --git a/tests/baselines/reference/es2018IntlAPIs.types b/tests/baselines/reference/es2018IntlAPIs.types index 71519f0e1fb50..979996db152c8 100644 --- a/tests/baselines/reference/es2018IntlAPIs.types +++ b/tests/baselines/reference/es2018IntlAPIs.types @@ -31,19 +31,19 @@ console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', ')); >console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', ')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.PluralRules.supportedLocalesOf(locales, options).join(', ') : string > : ^^^^^^ >Intl.PluralRules.supportedLocalesOf(locales, options).join : (separator?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >Intl.PluralRules.supportedLocalesOf(locales, options) : string[] > : ^^^^^^^^ >Intl.PluralRules.supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >Intl.PluralRules : Intl.PluralRulesConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Intl : typeof Intl @@ -51,13 +51,13 @@ console.log(Intl.PluralRules.supportedLocalesOf(locales, options).join(', ')); >PluralRules : Intl.PluralRulesConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >supportedLocalesOf : (locales: string | readonly string[], options?: { localeMatcher?: "lookup" | "best fit"; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >locales : string[] > : ^^^^^^^^ >options : { readonly localeMatcher: "lookup"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >join : (separator?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >', ' : ", " > : ^^^^ @@ -67,7 +67,7 @@ const [ part ] = new Intl.NumberFormat().formatToParts(); >new Intl.NumberFormat().formatToParts() : Intl.NumberFormatPart[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat().formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat() : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -77,17 +77,17 @@ const [ part ] = new Intl.NumberFormat().formatToParts(); >NumberFormat : Intl.NumberFormatConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >formatToParts : (number?: number | bigint) => Intl.NumberFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ console.log(part.type, part.value); >console.log(part.type, part.value) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >part.type : keyof Intl.NumberFormatPartTypeRegistry > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >part : Intl.NumberFormatPart diff --git a/tests/baselines/reference/es2018ObjectAssign.types b/tests/baselines/reference/es2018ObjectAssign.types index 91e1dfaa10dc2..7ec6f64b66e96 100644 --- a/tests/baselines/reference/es2018ObjectAssign.types +++ b/tests/baselines/reference/es2018ObjectAssign.types @@ -5,13 +5,13 @@ const test = Object.assign({}, { test: true }); >test : { test: boolean; } > : ^^^^^^^^^^^^^^^^^^ >Object.assign({}, { test: true }) : { test: boolean; } -> : ^^^^^^^^^^^^^^^^^^ +> : >Object.assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >{} : {} > : ^^ >{ test: true } : { test: true; } @@ -29,9 +29,9 @@ p.finally(); >p.finally() : Promise > : ^^^^^^^^^^^^^^^ >p.finally : (onfinally?: () => void) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ >finally : (onfinally?: () => void) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/es2020IntlAPIs.types b/tests/baselines/reference/es2020IntlAPIs.types index 7cebe28e6b9e8..1a4e385e515b7 100644 --- a/tests/baselines/reference/es2020IntlAPIs.types +++ b/tests/baselines/reference/es2020IntlAPIs.types @@ -20,7 +20,7 @@ const date = new Date("2012-05-24"); function log(locale: string) { >log : (locale: string) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >locale : string > : ^^^^^^ @@ -28,19 +28,19 @@ function log(locale: string) { >console.log( `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` >`${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(locale).format(count)}` : string > : ^^^^^^ >new Intl.DateTimeFormat(locale).format(date) : string > : ^^^^^^ ->new Intl.DateTimeFormat(locale).format : (date?: number | Date) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new Intl.DateTimeFormat(locale).format : (date?: Date | number) => string +> : ^ ^^^ ^^^^^^^^^^^ >new Intl.DateTimeFormat(locale) : Intl.DateTimeFormat > : ^^^^^^^^^^^^^^^^^^^ >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor @@ -51,14 +51,14 @@ function log(locale: string) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >locale : string > : ^^^^^^ ->format : (date?: number | Date) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>format : (date?: Date | number) => string +> : ^ ^^^ ^^^^^^^^^^^ >date : Date > : ^^^^ >new Intl.NumberFormat(locale).format(count) : string > : ^^^^^^ >new Intl.NumberFormat(locale).format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >new Intl.NumberFormat(locale) : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -70,7 +70,7 @@ function log(locale: string) { >locale : string > : ^^^^^^ >format : { (value: number): string; (value: number | bigint): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >count : 26254.39 > : ^^^^^^^^ @@ -81,7 +81,7 @@ log("en-US"); >log("en-US") : void > : ^^^^ >log : (locale: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"en-US" : "en-US" > : ^^^^^^^ @@ -91,7 +91,7 @@ log("de-DE"); >log("de-DE") : void > : ^^^^ >log : (locale: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"de-DE" : "de-DE" > : ^^^^^^^ @@ -103,12 +103,12 @@ const rtf1 = new Intl.RelativeTimeFormat('en', { style: 'narrow' }); > : ^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.RelativeTimeFormat('en', { style: 'narrow' }) : Intl.RelativeTimeFormat > : ^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.RelativeTimeFormat : { new (locales?: LocalesArgument, options?: RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: LocalesArgument, options?: RelativeTimeFormatOptions): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>RelativeTimeFormat : { new (locales?: LocalesArgument, options?: RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: LocalesArgument, options?: RelativeTimeFormatOptions): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >'en' : "en" > : ^^^^ >{ style: 'narrow' } : { style: "narrow"; } @@ -122,19 +122,19 @@ console.log(rtf1.format(3, 'quarter')); >console.log(rtf1.format(3, 'quarter')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >rtf1.format(3, 'quarter') : string > : ^^^^^^ ->rtf1.format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>rtf1.format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >rtf1 : Intl.RelativeTimeFormat > : ^^^^^^^^^^^^^^^^^^^^^^^ ->format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ >'quarter' : "quarter" @@ -146,19 +146,19 @@ console.log(rtf1.format(-1, 'day')); >console.log(rtf1.format(-1, 'day')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >rtf1.format(-1, 'day') : string > : ^^^^^^ ->rtf1.format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>rtf1.format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >rtf1 : Intl.RelativeTimeFormat > : ^^^^^^^^^^^^^^^^^^^^^^^ ->format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >-1 : -1 > : ^^ >1 : 1 @@ -173,12 +173,12 @@ const rtf2 = new Intl.RelativeTimeFormat('es', { numeric: 'auto' }); > : ^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.RelativeTimeFormat('es', { numeric: 'auto' }) : Intl.RelativeTimeFormat > : ^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.RelativeTimeFormat : { new (locales?: LocalesArgument, options?: RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: LocalesArgument, options?: RelativeTimeFormatOptions): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->RelativeTimeFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: Intl.RelativeTimeFormatOptions): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>RelativeTimeFormat : { new (locales?: LocalesArgument, options?: RelativeTimeFormatOptions): Intl.RelativeTimeFormat; supportedLocalesOf(locales?: LocalesArgument, options?: RelativeTimeFormatOptions): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >'es' : "es" > : ^^^^ >{ numeric: 'auto' } : { numeric: "auto"; } @@ -192,19 +192,19 @@ console.log(rtf2.format(2, 'day')); >console.log(rtf2.format(2, 'day')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >rtf2.format(2, 'day') : string > : ^^^^^^ ->rtf2.format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>rtf2.format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >rtf2 : Intl.RelativeTimeFormat > : ^^^^^^^^^^^^^^^^^^^^^^^ ->format : (value: number, unit: Intl.RelativeTimeFormatUnit) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>format : (value: number, unit: RelativeTimeFormatUnit) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >2 : 2 > : ^ >'day' : "day" @@ -218,12 +218,12 @@ const regionNamesInEnglish = new Intl.DisplayNames(['en'], { type: 'region' }); > : ^^^^^^^^^^^^^^^^^ >new Intl.DisplayNames(['en'], { type: 'region' }) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >['en'] : string[] > : ^^^^^^^^ >'en' : "en" @@ -240,12 +240,12 @@ const regionNamesInTraditionalChinese = new Intl.DisplayNames(['zh-Hant'], { typ > : ^^^^^^^^^^^^^^^^^ >new Intl.DisplayNames(['zh-Hant'], { type: 'region' }) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >['zh-Hant'] : string[] > : ^^^^^^^^ >'zh-Hant' : "zh-Hant" @@ -261,19 +261,19 @@ console.log(regionNamesInEnglish.of('US')); >console.log(regionNamesInEnglish.of('US')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >regionNamesInEnglish.of('US') : string > : ^^^^^^ >regionNamesInEnglish.of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >regionNamesInEnglish : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ >of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'US' : "US" > : ^^^^ @@ -283,19 +283,19 @@ console.log(regionNamesInTraditionalChinese.of('US')); >console.log(regionNamesInTraditionalChinese.of('US')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >regionNamesInTraditionalChinese.of('US') : string > : ^^^^^^ >regionNamesInTraditionalChinese.of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >regionNamesInTraditionalChinese : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ >of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'US' : "US" > : ^^^^ @@ -329,97 +329,97 @@ console.log(Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ')) >console.log(Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.DisplayNames.supportedLocalesOf(locales1, options1).join(', ') : string > : ^^^^^^ >Intl.DisplayNames.supportedLocalesOf(locales1, options1).join : (separator?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >Intl.DisplayNames.supportedLocalesOf(locales1, options1) : string[] > : ^^^^^^^^ ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames.supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >locales1 : string[] > : ^^^^^^^^ >options1 : { readonly localeMatcher: "lookup"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >join : (separator?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >', ' : ", " > : ^^^^ new Intl.Locale(); // should error >new Intl.Locale() : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ new Intl.Locale(new Intl.Locale('en-US')); >new Intl.Locale(new Intl.Locale('en-US')) : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >new Intl.Locale('en-US') : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >'en-US' : "en-US" > : ^^^^^^^ new Intl.DisplayNames(); // TypeError: invalid_argument >new Intl.DisplayNames() : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ new Intl.DisplayNames('en'); // TypeError: invalid_argument >new Intl.DisplayNames('en') : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >'en' : "en" > : ^^^^ new Intl.DisplayNames('en', {}); // TypeError: invalid_argument >new Intl.DisplayNames('en', {}) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >'en' : "en" > : ^^^^ >{} : {} @@ -429,25 +429,25 @@ console.log((new Intl.DisplayNames(undefined, {type: 'language'})).of('en-GB')); >console.log((new Intl.DisplayNames(undefined, {type: 'language'})).of('en-GB')) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >(new Intl.DisplayNames(undefined, {type: 'language'})).of('en-GB') : string > : ^^^^^^ >(new Intl.DisplayNames(undefined, {type: 'language'})).of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(new Intl.DisplayNames(undefined, {type: 'language'})) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ >new Intl.DisplayNames(undefined, {type: 'language'}) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >{type: 'language'} : { type: "language"; } @@ -457,7 +457,7 @@ console.log((new Intl.DisplayNames(undefined, {type: 'language'})).of('en-GB')); >'language' : "language" > : ^^^^^^^^^^ >of : (code: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'en-GB' : "en-GB" > : ^^^^^^^ @@ -470,12 +470,12 @@ const localesArg = ["es-ES", new Intl.Locale("en-US")]; > : ^^^^^^^ >new Intl.Locale("en-US") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"en-US" : "en-US" > : ^^^^^^^ @@ -483,11 +483,11 @@ console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOpti >console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions().locale) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >(new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions().locale : string > : ^^^^^^ >(new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOptions() : Intl.ResolvedDisplayNamesOptions @@ -498,12 +498,12 @@ console.log((new Intl.DisplayNames(localesArg, {type: 'language'})).resolvedOpti > : ^^^^^^^^^^^^^^^^^ >new Intl.DisplayNames(localesArg, {type: 'language'}) : Intl.DisplayNames > : ^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >localesArg : (string | Intl.Locale)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{type: 'language'} : { type: "language"; } @@ -521,23 +521,23 @@ console.log(Intl.DisplayNames.supportedLocalesOf(localesArg)); // ["es-ES", "en- >console.log(Intl.DisplayNames.supportedLocalesOf(localesArg)) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.DisplayNames.supportedLocalesOf(localesArg) : string[] > : ^^^^^^^^ ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames.supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >localesArg : (string | Intl.Locale)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -545,45 +545,45 @@ console.log(Intl.DisplayNames.supportedLocalesOf()); // [] >console.log(Intl.DisplayNames.supportedLocalesOf()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.DisplayNames.supportedLocalesOf() : string[] > : ^^^^^^^^ ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames.supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})); // ["es-ES", "en-US"] >console.log(Intl.DisplayNames.supportedLocalesOf(localesArg, {})) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Intl.DisplayNames.supportedLocalesOf(localesArg, {}) : string[] > : ^^^^^^^^ ->Intl.DisplayNames.supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.DisplayNames.supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->DisplayNames : { new (locales: Intl.LocalesArgument, options: Intl.DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales?: Intl.LocalesArgument, options?: { localeMatcher?: Intl.RelativeTimeFormatLocaleMatcher; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>DisplayNames : { new (locales: LocalesArgument, options: DisplayNamesOptions): Intl.DisplayNames; prototype: Intl.DisplayNames; supportedLocalesOf(locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }): string[]; } +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales?: LocalesArgument, options?: { localeMatcher?: RelativeTimeFormatLocaleMatcher; }) => string[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >localesArg : (string | Intl.Locale)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} diff --git a/tests/baselines/reference/es2021LocalesObjectArgument.types b/tests/baselines/reference/es2021LocalesObjectArgument.types index 451c46b5e9f60..646e2b73152fb 100644 --- a/tests/baselines/reference/es2021LocalesObjectArgument.types +++ b/tests/baselines/reference/es2021LocalesObjectArgument.types @@ -6,12 +6,12 @@ const enUS = new Intl.Locale("en-US"); > : ^^^^^^^^^^^ >new Intl.Locale("en-US") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"en-US" : "en-US" > : ^^^^^^^ @@ -20,12 +20,12 @@ const deDE = new Intl.Locale("de-DE"); > : ^^^^^^^^^^^ >new Intl.Locale("de-DE") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"de-DE" : "de-DE" > : ^^^^^^^ @@ -34,36 +34,36 @@ const jaJP = new Intl.Locale("ja-JP"); > : ^^^^^^^^^^^ >new Intl.Locale("ja-JP") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"ja-JP" : "ja-JP" > : ^^^^^^^ new Intl.ListFormat(enUS); >new Intl.ListFormat(enUS) : Intl.ListFormat > : ^^^^^^^^^^^^^^^ ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >enUS : Intl.Locale > : ^^^^^^^^^^^ new Intl.ListFormat([deDE, jaJP]); >new Intl.ListFormat([deDE, jaJP]) : Intl.ListFormat > : ^^^^^^^^^^^^^^^ ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >[deDE, jaJP] : Intl.Locale[] > : ^^^^^^^^^^^^^ >deDE : Intl.Locale @@ -74,32 +74,32 @@ new Intl.ListFormat([deDE, jaJP]); Intl.ListFormat.supportedLocalesOf(enUS); >Intl.ListFormat.supportedLocalesOf(enUS) : string[] > : ^^^^^^^^ ->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.ListFormat.supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >enUS : Intl.Locale > : ^^^^^^^^^^^ Intl.ListFormat.supportedLocalesOf([deDE, jaJP]); >Intl.ListFormat.supportedLocalesOf([deDE, jaJP]) : string[] > : ^^^^^^^^ ->Intl.ListFormat.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.ListFormat.supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->ListFormat : { new (locales?: Intl.LocalesArgument, options?: Intl.ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ListFormat : { new (locales?: LocalesArgument, options?: ListFormatOptions): Intl.ListFormat; prototype: Intl.ListFormat; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >[deDE, jaJP] : Intl.Locale[] > : ^^^^^^^^^^^^^ >deDE : Intl.Locale diff --git a/tests/baselines/reference/es2022IntlAPIs.types b/tests/baselines/reference/es2022IntlAPIs.types index 011cd116ed6dd..c767ba76b74fc 100644 --- a/tests/baselines/reference/es2022IntlAPIs.types +++ b/tests/baselines/reference/es2022IntlAPIs.types @@ -91,11 +91,11 @@ for (const key of enumerationKeys) { >Intl.supportedValuesOf(key) : string[] > : ^^^^^^^^ >Intl.supportedValuesOf : (key: "calendar" | "collation" | "currency" | "numberingSystem" | "timeZone" | "unit") => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ >supportedValuesOf : (key: "calendar" | "collation" | "currency" | "numberingSystem" | "timeZone" | "unit") => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >key : "calendar" | "collation" | "currency" | "numberingSystem" | "timeZone" | "unit" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/es2022LocalesObjectArgument.types b/tests/baselines/reference/es2022LocalesObjectArgument.types index e1cbcfd102579..1ce7ac0d4f6ba 100644 --- a/tests/baselines/reference/es2022LocalesObjectArgument.types +++ b/tests/baselines/reference/es2022LocalesObjectArgument.types @@ -6,12 +6,12 @@ const enUS = new Intl.Locale("en-US"); > : ^^^^^^^^^^^ >new Intl.Locale("en-US") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"en-US" : "en-US" > : ^^^^^^^ @@ -20,12 +20,12 @@ const deDE = new Intl.Locale("de-DE"); > : ^^^^^^^^^^^ >new Intl.Locale("de-DE") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"de-DE" : "de-DE" > : ^^^^^^^ @@ -34,36 +34,36 @@ const jaJP = new Intl.Locale("ja-JP"); > : ^^^^^^^^^^^ >new Intl.Locale("ja-JP") : Intl.Locale > : ^^^^^^^^^^^ ->Intl.Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Locale : new (tag: string | Intl.Locale, options?: Intl.LocaleOptions) => Intl.Locale -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Locale : new (tag: UnicodeBCP47LocaleIdentifier | Locale, options?: LocaleOptions) => Intl.Locale +> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >"ja-JP" : "ja-JP" > : ^^^^^^^ new Intl.Segmenter(enUS); >new Intl.Segmenter(enUS) : Intl.Segmenter > : ^^^^^^^^^^^^^^ ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >enUS : Intl.Locale > : ^^^^^^^^^^^ new Intl.Segmenter([deDE, jaJP]); >new Intl.Segmenter([deDE, jaJP]) : Intl.Segmenter > : ^^^^^^^^^^^^^^ ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >[deDE, jaJP] : Intl.Locale[] > : ^^^^^^^^^^^^^ >deDE : Intl.Locale @@ -74,32 +74,32 @@ new Intl.Segmenter([deDE, jaJP]); Intl.Segmenter.supportedLocalesOf(enUS); >Intl.Segmenter.supportedLocalesOf(enUS) : string[] > : ^^^^^^^^ ->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Segmenter.supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >enUS : Intl.Locale > : ^^^^^^^^^^^ Intl.Segmenter.supportedLocalesOf([deDE, jaJP]); >Intl.Segmenter.supportedLocalesOf([deDE, jaJP]) : string[] > : ^^^^^^^^ ->Intl.Segmenter.supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Intl.Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Intl.Segmenter.supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ +>Intl.Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Intl : typeof Intl > : ^^^^^^^^^^^ ->Segmenter : { new (locales?: Intl.LocalesArgument, options?: Intl.SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: Intl.LocalesArgument, options?: Pick): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->supportedLocalesOf : (locales: Intl.LocalesArgument, options?: Pick) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Segmenter : { new (locales?: LocalesArgument, options?: SegmenterOptions): Intl.Segmenter; prototype: Intl.Segmenter; supportedLocalesOf(locales: LocalesArgument, options?: Pick): string[]; } +> : ^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ +>supportedLocalesOf : (locales: LocalesArgument, options?: Pick) => string[] +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >[deDE, jaJP] : Intl.Locale[] > : ^^^^^^^^^^^^^ >deDE : Intl.Locale diff --git a/tests/baselines/reference/es2022SharedMemory.types b/tests/baselines/reference/es2022SharedMemory.types index d441248c56e17..b8645507fe86a 100644 --- a/tests/baselines/reference/es2022SharedMemory.types +++ b/tests/baselines/reference/es2022SharedMemory.types @@ -62,12 +62,12 @@ const waitValue = Atomics.wait(int32, 0, 0); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics.wait(int32, 0, 0) : "ok" | "not-equal" | "timed-out" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Atomics.wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics : Atomics > : ^^^^^^^ ->wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): "ok" | "not-equal" | "timed-out"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>wait : { (typedArray: Int32Array, index: number, value: number, timeout?: number): "ok" | "not-equal" | "timed-out"; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): "ok" | "not-equal" | "timed-out"; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >int32 : Int32Array > : ^^^^^^^^^^ >0 : 0 @@ -82,12 +82,12 @@ const { async, value } = Atomics.waitAsync(int32, 0, 0); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics.waitAsync(int32, 0, 0) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics : Atomics > : ^^^^^^^ ->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >int32 : Int32Array > : ^^^^^^^^^^ >0 : 0 @@ -106,12 +106,12 @@ const { async: async64, value: value64 } = Atomics.waitAsync(int64, 0, BigInt(0) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics.waitAsync(int64, 0, BigInt(0)) : { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Atomics.waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Atomics : Atomics > : ^^^^^^^ ->waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number | undefined): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>waitAsync : { (typedArray: Int32Array, index: number, value: number, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; (typedArray: BigInt64Array, index: number, value: bigint, timeout?: number): { async: false; value: "not-equal" | "timed-out"; } | { async: true; value: Promise<"ok" | "timed-out">; }; } +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >int64 : BigInt64Array > : ^^^^^^^^^^^^^ >0 : 0 @@ -127,7 +127,7 @@ const main = async () => { >main : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { if (async) { await value; } if (async64) { await value64; }} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : if (async) { >async : boolean diff --git a/tests/baselines/reference/es5-asyncFunctionLongObjectLiteral.types b/tests/baselines/reference/es5-asyncFunctionLongObjectLiteral.types index 69267e86d0c94..59d5c32e41a43 100644 --- a/tests/baselines/reference/es5-asyncFunctionLongObjectLiteral.types +++ b/tests/baselines/reference/es5-asyncFunctionLongObjectLiteral.types @@ -7,7 +7,7 @@ const fooShort = async () => { >fooShort : () => Promise<{ a: number; b: number; c: number; d: number; e: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => { return { a: await Promise.resolve(0), b: await Promise.resolve(1), c: await Promise.resolve(2), d: await Promise.resolve(3), e: await Promise.resolve(4), };} : () => Promise<{ a: number; b: number; c: number; d: number; e: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return { >{ a: await Promise.resolve(0), b: await Promise.resolve(1), c: await Promise.resolve(2), d: await Promise.resolve(3), e: await Promise.resolve(4), } : { a: number; b: number; c: number; d: number; e: number; } @@ -21,11 +21,11 @@ const fooShort = async () => { >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -37,11 +37,11 @@ const fooShort = async () => { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -53,11 +53,11 @@ const fooShort = async () => { >Promise.resolve(2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ @@ -69,11 +69,11 @@ const fooShort = async () => { >Promise.resolve(3) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 > : ^ @@ -85,11 +85,11 @@ const fooShort = async () => { >Promise.resolve(4) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -100,7 +100,7 @@ const fooLong = async () => { >fooLong : () => Promise<{ a: number; b: number; c: number; d: number; e: number; f: number; g: number; h: number; i: number; j: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async () => { return { a: await Promise.resolve(0), b: await Promise.resolve(1), c: await Promise.resolve(2), d: await Promise.resolve(3), e: await Promise.resolve(4), f: await Promise.resolve(5), g: await Promise.resolve(6), h: await Promise.resolve(7), i: await Promise.resolve(8), j: await Promise.resolve(9), };} : () => Promise<{ a: number; b: number; c: number; d: number; e: number; f: number; g: number; h: number; i: number; j: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return { >{ a: await Promise.resolve(0), b: await Promise.resolve(1), c: await Promise.resolve(2), d: await Promise.resolve(3), e: await Promise.resolve(4), f: await Promise.resolve(5), g: await Promise.resolve(6), h: await Promise.resolve(7), i: await Promise.resolve(8), j: await Promise.resolve(9), } : { a: number; b: number; c: number; d: number; e: number; f: number; g: number; h: number; i: number; j: number; } @@ -114,11 +114,11 @@ const fooLong = async () => { >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -130,11 +130,11 @@ const fooLong = async () => { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -146,11 +146,11 @@ const fooLong = async () => { >Promise.resolve(2) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ @@ -162,11 +162,11 @@ const fooLong = async () => { >Promise.resolve(3) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 > : ^ @@ -178,11 +178,11 @@ const fooLong = async () => { >Promise.resolve(4) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -194,11 +194,11 @@ const fooLong = async () => { >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -210,11 +210,11 @@ const fooLong = async () => { >Promise.resolve(6) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >6 : 6 > : ^ @@ -226,11 +226,11 @@ const fooLong = async () => { >Promise.resolve(7) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >7 : 7 > : ^ @@ -242,11 +242,11 @@ const fooLong = async () => { >Promise.resolve(8) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >8 : 8 > : ^ @@ -258,11 +258,11 @@ const fooLong = async () => { >Promise.resolve(9) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >9 : 9 > : ^ diff --git a/tests/baselines/reference/es5-importHelpersAsyncFunctions.types b/tests/baselines/reference/es5-importHelpersAsyncFunctions.types index d54abc21c73e1..f582f971bbb83 100644 --- a/tests/baselines/reference/es5-importHelpersAsyncFunctions.types +++ b/tests/baselines/reference/es5-importHelpersAsyncFunctions.types @@ -15,7 +15,7 @@ async function foo() { === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -23,14 +23,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -40,7 +40,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -48,13 +48,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function @@ -64,7 +64,7 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge export declare function __generator(body: Function): any; >__generator : (body: Function) => any -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >body : Function > : ^^^^^^^^ diff --git a/tests/baselines/reference/es5DateAPIs.types b/tests/baselines/reference/es5DateAPIs.types index 79451969c55ef..1e7efe39951e7 100644 --- a/tests/baselines/reference/es5DateAPIs.types +++ b/tests/baselines/reference/es5DateAPIs.types @@ -5,11 +5,11 @@ Date.UTC(2017); // should error >Date.UTC(2017) : number > : ^^^^^^ >Date.UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >Date : DateConstructor > : ^^^^^^^^^^^^^^^ >UTC : (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >2017 : 2017 > : ^^^^ diff --git a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types index 85be1d5d2677d..7fe1ccb0e4ca4 100644 --- a/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types +++ b/tests/baselines/reference/es5ExportDefaultFunctionDeclaration3.types @@ -7,7 +7,7 @@ var before: typeof func = func(); >func : () => typeof func > : ^^^^^^^^^^^^^^^^^ >func() : () => typeof func -> : ^^^^^^^^^^^^^^^^^ +> : >func : () => typeof func > : ^^^^^^^^^^^^^^^^^ @@ -28,7 +28,7 @@ var after: typeof func = func(); >func : () => typeof func > : ^^^^^^^^^^^^^^^^^ >func() : () => typeof func -> : ^^^^^^^^^^^^^^^^^ +> : >func : () => typeof func > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/es5ModuleInternalNamedImports.types b/tests/baselines/reference/es5ModuleInternalNamedImports.types index bcb788712c496..49a3ef882c57a 100644 --- a/tests/baselines/reference/es5ModuleInternalNamedImports.types +++ b/tests/baselines/reference/es5ModuleInternalNamedImports.types @@ -85,7 +85,7 @@ export module M { >M_F : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : export {M_E as e}; >M_E : typeof M_E diff --git a/tests/baselines/reference/es6ClassTest.types b/tests/baselines/reference/es6ClassTest.types index fb7cf512e275d..8ccc78af184b4 100644 --- a/tests/baselines/reference/es6ClassTest.types +++ b/tests/baselines/reference/es6ClassTest.types @@ -11,7 +11,7 @@ class Bar { public prop1(x) { >prop1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/es6ClassTest2.types b/tests/baselines/reference/es6ClassTest2.types index 46bd6fccbc17b..615e3c4de91d3 100644 --- a/tests/baselines/reference/es6ClassTest2.types +++ b/tests/baselines/reference/es6ClassTest2.types @@ -15,7 +15,7 @@ class BasicMonster { attack(target) { >attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >target : any // WScript.Echo("Attacks " + target); @@ -56,11 +56,11 @@ m1.attack(m2); >m1.attack(m2) : void > : ^^^^ >m1.attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >m1 : BasicMonster > : ^^^^^^^^^^^^ >attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >m2 : BasicMonster > : ^^^^^^^^^^^^ @@ -80,11 +80,11 @@ console.log((m5.isAlive).toString()); >console.log((m5.isAlive).toString()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >(m5.isAlive).toString() : any >(m5.isAlive).toString : any >(m5.isAlive) : any @@ -113,7 +113,7 @@ class GetSetMonster { attack(target) { >attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >target : any // WScript.Echo("Attacks " + target); @@ -203,11 +203,11 @@ m3.attack(m4); >m3.attack(m4) : void > : ^^^^ >m3.attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >m3 : BasicMonster > : ^^^^^^^^^^^^ >attack : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >m4 : BasicMonster > : ^^^^^^^^^^^^ @@ -257,16 +257,16 @@ class OverloadedMonster { attack(); >attack : { (): any; (a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ attack(a: any); >attack : { (): any; (a: any): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : any attack(target?) { >attack : { (): any; (a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >target : any //WScript.Echo("Attacks " + target); @@ -302,11 +302,11 @@ var m6 = new OverloadedMonster("2"); m5.attack(m6); >m5.attack(m6) : any >m5.attack : { (): any; (a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >m5 : OverloadedMonster > : ^^^^^^^^^^^^^^^^^ >attack : { (): any; (a: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >m6 : OverloadedMonster > : ^^^^^^^^^^^^^^^^^ @@ -348,7 +348,7 @@ class SplatMonster { roar(name: string, ...args: number[]) { } >roar : (name: string, ...args: number[]) => void -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >name : string > : ^^^^^^ >args : number[] @@ -397,7 +397,7 @@ class SuperParent { b(b: string) { >b : (b: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : string > : ^^^^^^ @@ -434,11 +434,11 @@ class SuperChild extends SuperParent { >super.b('str') : void > : ^^^^ >super.b : (b: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >super : SuperParent > : ^^^^^^^^^^^ >b : (b: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'str' : "str" > : ^^^^^ } diff --git a/tests/baselines/reference/es6ClassTest4.types b/tests/baselines/reference/es6ClassTest4.types index dd793fa6505ce..8149c58a44f63 100644 --- a/tests/baselines/reference/es6ClassTest4.types +++ b/tests/baselines/reference/es6ClassTest4.types @@ -15,7 +15,7 @@ declare class Point add(dx: number, dy: number): Point; >add : (dx: number, dy: number) => Point -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >dx : number > : ^^^^^^ >dy : number @@ -23,7 +23,7 @@ declare class Point mult(p: Point): Point; >mult : (p: Point) => Point -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : Point > : ^^^^^ diff --git a/tests/baselines/reference/es6ClassTest5.types b/tests/baselines/reference/es6ClassTest5.types index dbaefe8a6b255..e321fdb008d25 100644 --- a/tests/baselines/reference/es6ClassTest5.types +++ b/tests/baselines/reference/es6ClassTest5.types @@ -7,7 +7,7 @@ class C1T5 { foo: (i: number, s: string) => number = >foo : (i: number, s: string) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >i : number > : ^^^^^^ >s : string @@ -15,7 +15,7 @@ class C1T5 { (i) => { >(i) => { return i; } : (i: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >i : number > : ^^^^^^ diff --git a/tests/baselines/reference/es6ClassTest8.types b/tests/baselines/reference/es6ClassTest8.types index 7d112d4e2e5a3..8d7519e264616 100644 --- a/tests/baselines/reference/es6ClassTest8.types +++ b/tests/baselines/reference/es6ClassTest8.types @@ -3,7 +3,7 @@ === es6ClassTest8.ts === function f1(x:any) {return x;} >f1 : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any >x : any @@ -27,10 +27,10 @@ class C { >b : any >f1(f1(bar)) : any >f1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >f1(bar) : any >f1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >bar : any } @@ -42,13 +42,13 @@ class Vector { static norm(v:Vector):Vector {return null;} >norm : (v: Vector) => Vector -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : Vector > : ^^^^^^ static minus(v1:Vector, v2:Vector):Vector {return null;} >minus : (v1: Vector, v2: Vector) => Vector -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >v1 : Vector > : ^^^^^^ >v2 : Vector @@ -56,7 +56,7 @@ class Vector { static times(v1:Vector, v2:Vector):Vector {return null;} >times : (v1: Vector, v2: Vector) => Vector -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >v1 : Vector > : ^^^^^^ >v2 : Vector @@ -64,7 +64,7 @@ class Vector { static cross(v1:Vector, v2:Vector):Vector {return null;} >cross : (v1: Vector, v2: Vector) => Vector -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >v1 : Vector > : ^^^^^^ >v2 : Vector @@ -85,7 +85,7 @@ class Vector { static dot(v1:Vector, v2:Vector):Vector {return null;} >dot : (v1: Vector, v2: Vector) => Vector -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >v1 : Vector > : ^^^^^^ >v2 : Vector @@ -143,19 +143,19 @@ class Camera { >Vector.norm(Vector.minus(lookAt,this.pos)) : Vector > : ^^^^^^ >Vector.norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector.minus(lookAt,this.pos) : Vector > : ^^^^^^ >Vector.minus : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >minus : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >lookAt : Vector > : ^^^^^^ >this.pos : Vector @@ -177,29 +177,29 @@ class Camera { >Vector.times(down, Vector.norm(Vector.cross(this.forward, down))) : Vector > : ^^^^^^ >Vector.times : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >times : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >down : Vector > : ^^^^^^ >Vector.norm(Vector.cross(this.forward, down)) : Vector > : ^^^^^^ >Vector.norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector.cross(this.forward, down) : Vector > : ^^^^^^ >Vector.cross : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >cross : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >this.forward : Vector > : ^^^^^^ >this : this @@ -221,29 +221,29 @@ class Camera { >Vector.times(down, Vector.norm(Vector.cross(this.forward, this.right))) : Vector > : ^^^^^^ >Vector.times : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >times : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >down : Vector > : ^^^^^^ >Vector.norm(Vector.cross(this.forward, this.right)) : Vector > : ^^^^^^ >Vector.norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >norm : (v: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Vector.cross(this.forward, this.right) : Vector > : ^^^^^^ >Vector.cross : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >Vector : typeof Vector > : ^^^^^^^^^^^^^ >cross : (v1: Vector, v2: Vector) => Vector -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >this.forward : Vector > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports.types b/tests/baselines/reference/es6ModuleInternalNamedImports.types index d53c0a66e2461..1a02b8e88ba40 100644 --- a/tests/baselines/reference/es6ModuleInternalNamedImports.types +++ b/tests/baselines/reference/es6ModuleInternalNamedImports.types @@ -85,7 +85,7 @@ export module M { >M_F : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : export {M_E as e}; >M_E : typeof M_E diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports2.types b/tests/baselines/reference/es6ModuleInternalNamedImports2.types index 03e27bd496bc0..2f3c7ecd188d2 100644 --- a/tests/baselines/reference/es6ModuleInternalNamedImports2.types +++ b/tests/baselines/reference/es6ModuleInternalNamedImports2.types @@ -90,7 +90,7 @@ export module M { >M_F : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : export {M_E as e}; >M_E : typeof M_E diff --git a/tests/baselines/reference/es6UseOfTopLevelRequire.types b/tests/baselines/reference/es6UseOfTopLevelRequire.types index c3bef631d2ac2..b31d0ad872328 100644 --- a/tests/baselines/reference/es6UseOfTopLevelRequire.types +++ b/tests/baselines/reference/es6UseOfTopLevelRequire.types @@ -3,13 +3,13 @@ === a.ts === import require from "./b" >require : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ require("arg"); >require("arg") : void > : ^^^^ >require : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"arg" : "arg" > : ^^^^^ @@ -30,7 +30,7 @@ var x = exports + 2; === b.ts === export default function require(s: string): void { >require : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } diff --git a/tests/baselines/reference/es6modulekindWithES5Target.types b/tests/baselines/reference/es6modulekindWithES5Target.types index 68af38c8c2980..357c636f4b91d 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target.types +++ b/tests/baselines/reference/es6modulekindWithES5Target.types @@ -29,13 +29,13 @@ export { C as C2 }; declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export class D { >D : D diff --git a/tests/baselines/reference/es6modulekindWithES5Target11.types b/tests/baselines/reference/es6modulekindWithES5Target11.types index 783901701fedb..cf5b6ac83f465 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target11.types +++ b/tests/baselines/reference/es6modulekindWithES5Target11.types @@ -3,13 +3,13 @@ === es6modulekindWithES5Target11.ts === declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default class C { >C : C diff --git a/tests/baselines/reference/es6modulekindWithES5Target3.types b/tests/baselines/reference/es6modulekindWithES5Target3.types index cd45f742c65f1..b30ff3c51de91 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target3.types +++ b/tests/baselines/reference/es6modulekindWithES5Target3.types @@ -3,13 +3,13 @@ === es6modulekindWithES5Target3.ts === declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default class D { >D : D diff --git a/tests/baselines/reference/es6modulekindWithES5Target6.types b/tests/baselines/reference/es6modulekindWithES5Target6.types index f0d1849942e2f..15f77b2b125ea 100644 --- a/tests/baselines/reference/es6modulekindWithES5Target6.types +++ b/tests/baselines/reference/es6modulekindWithES5Target6.types @@ -3,7 +3,7 @@ === es6modulekindWithES5Target6.ts === export function f1(d = 0) { >f1 : (d?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : number > : ^^^^^^ >0 : 0 @@ -12,14 +12,14 @@ export function f1(d = 0) { export function f2(...arg) { >f2 : (...arg: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >arg : any[] > : ^^^^^ } export default function f3(d = 0) { >f3 : (d?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/esDecorators-arguments.types b/tests/baselines/reference/esDecorators-arguments.types index 6b8a1b9a9ece7..b045002c6ba20 100644 --- a/tests/baselines/reference/esDecorators-arguments.types +++ b/tests/baselines/reference/esDecorators-arguments.types @@ -9,17 +9,17 @@ @((a: any) => {}) >((a: any) => {}) : (a: any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a: any) => {} : (a: any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : any > : ^^^ @((a: any, b: any) => {}) >((a: any, b: any) => {}) : (a: any, b: any) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >(a: any, b: any) => {} : (a: any, b: any) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : any > : ^^^ >b : any @@ -27,9 +27,9 @@ @((a: any, b: any, c: any) => {}) >((a: any, b: any, c: any) => {}) : (a: any, b: any, c: any) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(a: any, b: any, c: any) => {} : (a: any, b: any, c: any) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : any > : ^^^ >b : any @@ -39,9 +39,9 @@ @((a: any, b: any, c: any, ...d: any[]) => {}) >((a: any, b: any, c: any, ...d: any[]) => {}) : (a: any, b: any, c: any, ...d: any[]) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(a: any, b: any, c: any, ...d: any[]) => {} : (a: any, b: any, c: any, ...d: any[]) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >a : any > : ^^^ >b : any diff --git a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2015).types b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2015).types index 84783c6772468..8db2a84858f34 100644 --- a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2015).types +++ b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2015).types @@ -103,7 +103,7 @@ class C { >this : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >(x: C) => x.#a : (x: C) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : C > : ^ >x.#a : number diff --git a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2021).types b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2021).types index 84783c6772468..8db2a84858f34 100644 --- a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2021).types +++ b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2021).types @@ -103,7 +103,7 @@ class C { >this : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >(x: C) => x.#a : (x: C) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : C > : ^ >x.#a : number diff --git a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2022).types b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2022).types index 84783c6772468..8db2a84858f34 100644 --- a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2022).types +++ b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=es2022).types @@ -103,7 +103,7 @@ class C { >this : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >(x: C) => x.#a : (x: C) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : C > : ^ >x.#a : number diff --git a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=esnext).types b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=esnext).types index 84783c6772468..8db2a84858f34 100644 --- a/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=esnext).types +++ b/tests/baselines/reference/esDecorators-classDeclaration-outerThisReference(target=esnext).types @@ -103,7 +103,7 @@ class C { >this : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >(x: C) => x.#a : (x: C) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : C > : ^ >x.#a : number diff --git a/tests/baselines/reference/esDecorators-contextualTypes.2.types b/tests/baselines/reference/esDecorators-contextualTypes.2.types index bb568b6d91477..104adda195ddc 100644 --- a/tests/baselines/reference/esDecorators-contextualTypes.2.types +++ b/tests/baselines/reference/esDecorators-contextualTypes.2.types @@ -7,9 +7,9 @@ class C { @boundMethodLogger("Yadda", /*bound*/ true) >boundMethodLogger("Yadda", /*bound*/ true) : (target: (this: C) => void, context: ClassMethodDecoratorContext void>) => (this: C) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => (this: This, ...args: Args) => Return -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >"Yadda" : "Yadda" > : ^^^^^^^ >true : true @@ -38,11 +38,11 @@ class C { >console.log("Behold! The actual method implementation!") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Behold! The actual method implementation!" : "Behold! The actual method implementation!" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -53,7 +53,7 @@ export { C }; function boundMethodLogger(source: string, bound = true) { >boundMethodLogger : (source: string, bound?: boolean) => (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >source : string > : ^^^^^^ >bound : boolean @@ -63,13 +63,13 @@ function boundMethodLogger(source: string, bou return function loggedDecorator( >function loggedDecorator( target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return> ): ((this: This, ...args: Args) => Return) { if (bound) { context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }); } return function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } } : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -> : ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >loggedDecorator : (target: (this: This, ...args: Args) => Return, context: ClassMethodDecoratorContext Return>) => ((this: This, ...args: Args) => Return) -> : ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ target: (this: This, ...args: Args) => Return, >target : (this: This, ...args: Args) => Return -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >this : This > : ^^^^ >args : Args @@ -77,7 +77,7 @@ function boundMethodLogger(source: string, bou context: ClassMethodDecoratorContext Return> >context : ClassMethodDecoratorContext Return> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ ^ >this : This > : ^^^^ >args : Args @@ -97,13 +97,13 @@ function boundMethodLogger(source: string, bou >context.addInitializer(function () { (this as any)[context.name] = (this as any)[context.name].bind(this); }) : void > : ^^^^ >context.addInitializer : (initializer: (this: This) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >context : ClassMethodDecoratorContext Return> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^ >addInitializer : (initializer: (this: This) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >function () { (this as any)[context.name] = (this as any)[context.name].bind(this); } : (this: This) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ (this as any)[context.name] = (this as any)[context.name].bind(this); >(this as any)[context.name] = (this as any)[context.name].bind(this) : any @@ -115,7 +115,7 @@ function boundMethodLogger(source: string, bou >context.name : string | symbol > : ^^^^^^^^^^^^^^^ >context : ClassMethodDecoratorContext Return> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^ >name : string | symbol > : ^^^^^^^^^^^^^^^ >(this as any)[context.name].bind(this) : any @@ -129,7 +129,7 @@ function boundMethodLogger(source: string, bou >context.name : string | symbol > : ^^^^^^^^^^^^^^^ >context : ClassMethodDecoratorContext Return> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^ >name : string | symbol > : ^^^^^^^^^^^^^^^ >bind : any @@ -142,7 +142,7 @@ function boundMethodLogger(source: string, bou return function (this, ...args) { >function (this, ...args) { console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`); return target.apply(this, args); } : (this: This, ...args: Args) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^ >this : This > : ^^^^ >args : Args @@ -152,11 +152,11 @@ function boundMethodLogger(source: string, bou >console.log(`<${source}>: I'm logging stuff from ${context.name.toString()}!`) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >`<${source}>: I'm logging stuff from ${context.name.toString()}!` : string > : ^^^^^^ >source : string @@ -168,7 +168,7 @@ function boundMethodLogger(source: string, bou >context.name : string | symbol > : ^^^^^^^^^^^^^^^ >context : ClassMethodDecoratorContext Return> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^ >name : string | symbol > : ^^^^^^^^^^^^^^^ >toString : (() => string) | (() => string) @@ -177,11 +177,11 @@ function boundMethodLogger(source: string, bou return target.apply(this, args); >target.apply(this, args) : any >target.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >target : (this: This, ...args: Args) => Return -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : This > : ^^^^ >args : Args diff --git a/tests/baselines/reference/esDecorators-contextualTypes.types b/tests/baselines/reference/esDecorators-contextualTypes.types index 06eabecc27c6a..a928b38dc6708 100644 --- a/tests/baselines/reference/esDecorators-contextualTypes.types +++ b/tests/baselines/reference/esDecorators-contextualTypes.types @@ -3,9 +3,9 @@ === esDecorators-contextualTypes.ts === @((t, c) => { }) >((t, c) => { }) : (t: typeof C, c: ClassDecoratorContext) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: typeof C, c: ClassDecoratorContext) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : typeof C > : ^^^^^^^^ >c : ClassDecoratorContext @@ -17,9 +17,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "f"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "f"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => void > : ^^^^^^^^^^ >c : ClassMethodDecoratorContext void> & { name: "f"; private: false; static: true; } @@ -31,9 +31,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "#f"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "#f"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => void > : ^^^^^^^^^^ >c : ClassMethodDecoratorContext void> & { name: "#f"; private: true; static: true; } @@ -45,9 +45,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => number, c: ClassGetterDecoratorContext & { name: "x"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => number, c: ClassGetterDecoratorContext & { name: "x"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => number > : ^^^^^^^^^^^^ >c : ClassGetterDecoratorContext & { name: "x"; private: false; static: true; } @@ -61,9 +61,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "x"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "x"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : (value: number) => void > : ^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassSetterDecoratorContext & { name: "x"; private: false; static: true; } @@ -77,9 +77,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => number, c: ClassGetterDecoratorContext & { name: "#x"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => number, c: ClassGetterDecoratorContext & { name: "#x"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => number > : ^^^^^^^^^^^^ >c : ClassGetterDecoratorContext & { name: "#x"; private: true; static: true; } @@ -93,9 +93,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "#x"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "#x"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : (value: number) => void > : ^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassSetterDecoratorContext & { name: "#x"; private: true; static: true; } @@ -109,9 +109,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "y"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "y"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : ClassAccessorDecoratorTarget > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassAccessorDecoratorContext & { name: "y"; private: false; static: true; } @@ -125,9 +125,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "#y"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "#y"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : ClassAccessorDecoratorTarget > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassAccessorDecoratorContext & { name: "#y"; private: true; static: true; } @@ -141,9 +141,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: undefined, c: ClassFieldDecoratorContext & { name: "z"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: undefined, c: ClassFieldDecoratorContext & { name: "z"; private: false; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : undefined > : ^^^^^^^^^ >c : ClassFieldDecoratorContext & { name: "z"; private: false; static: true; } @@ -157,9 +157,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: undefined, c: ClassFieldDecoratorContext & { name: "#z"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: undefined, c: ClassFieldDecoratorContext & { name: "#z"; private: true; static: true; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : undefined > : ^^^^^^^^^ >c : ClassFieldDecoratorContext & { name: "#z"; private: true; static: true; } @@ -173,9 +173,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "g"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "g"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => void > : ^^^^^^^^^^ >c : ClassMethodDecoratorContext void> & { name: "g"; private: false; static: false; } @@ -187,9 +187,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "#g"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => void, c: ClassMethodDecoratorContext void> & { name: "#g"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => void > : ^^^^^^^^^^ >c : ClassMethodDecoratorContext void> & { name: "#g"; private: true; static: false; } @@ -201,9 +201,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => number, c: ClassGetterDecoratorContext & { name: "a"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => number, c: ClassGetterDecoratorContext & { name: "a"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => number > : ^^^^^^^^^^^^ >c : ClassGetterDecoratorContext & { name: "a"; private: false; static: false; } @@ -217,9 +217,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "a"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "a"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : (value: number) => void > : ^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassSetterDecoratorContext & { name: "a"; private: false; static: false; } @@ -233,9 +233,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: () => number, c: ClassGetterDecoratorContext & { name: "#a"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: () => number, c: ClassGetterDecoratorContext & { name: "#a"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : () => number > : ^^^^^^^^^^^^ >c : ClassGetterDecoratorContext & { name: "#a"; private: true; static: false; } @@ -249,9 +249,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "#a"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: (value: number) => void, c: ClassSetterDecoratorContext & { name: "#a"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : (value: number) => void > : ^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassSetterDecoratorContext & { name: "#a"; private: true; static: false; } @@ -265,9 +265,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "b"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "b"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : ClassAccessorDecoratorTarget > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassAccessorDecoratorContext & { name: "b"; private: false; static: false; } @@ -281,9 +281,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "#b"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: ClassAccessorDecoratorTarget, c: ClassAccessorDecoratorContext & { name: "#b"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : ClassAccessorDecoratorTarget > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : ClassAccessorDecoratorContext & { name: "#b"; private: true; static: false; } @@ -297,9 +297,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: undefined, c: ClassFieldDecoratorContext & { name: "c"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: undefined, c: ClassFieldDecoratorContext & { name: "c"; private: false; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : undefined > : ^^^^^^^^^ >c : ClassFieldDecoratorContext & { name: "c"; private: false; static: false; } @@ -313,9 +313,9 @@ class C { @((t, c) => { }) >((t, c) => { }) : (t: undefined, c: ClassFieldDecoratorContext & { name: "#c"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(t, c) => { } : (t: undefined, c: ClassFieldDecoratorContext & { name: "#c"; private: true; static: false; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : undefined > : ^^^^^^^^^ >c : ClassFieldDecoratorContext & { name: "#c"; private: true; static: false; } diff --git a/tests/baselines/reference/esDecorators-preservesThis.types b/tests/baselines/reference/esDecorators-preservesThis.types index 41cb3069f6b23..1a57b35168456 100644 --- a/tests/baselines/reference/esDecorators-preservesThis.types +++ b/tests/baselines/reference/esDecorators-preservesThis.types @@ -9,7 +9,7 @@ declare class DecoratorProvider { decorate(this: DecoratorProvider, v: T, ctx: DecoratorContext): T; >decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^ ^^^^^^^^ ^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >this : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >v : T @@ -29,11 +29,11 @@ class C { @instance.decorate >instance.decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >instance : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ method1() { } >method1 : () => void @@ -41,9 +41,9 @@ class C { @(instance["decorate"]) >(instance["decorate"]) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >instance["decorate"] : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >instance : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >"decorate" : "decorate" @@ -56,15 +56,15 @@ class C { // even in parens @((instance.decorate)) >((instance.decorate)) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >(instance.decorate) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >instance.decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >instance : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ method3() { } >method3 : () => void @@ -88,13 +88,13 @@ class D extends DecoratorProvider { @(super.decorate) >(super.decorate) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super.decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ method1() { } >method1 : () => void @@ -102,9 +102,9 @@ class D extends DecoratorProvider { @(super["decorate"]) >(super["decorate"]) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super["decorate"] : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >"decorate" : "decorate" @@ -116,15 +116,15 @@ class D extends DecoratorProvider { @((super.decorate)) >((super.decorate)) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >(super.decorate) : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super.decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >super : DecoratorProvider > : ^^^^^^^^^^^^^^^^^ >decorate : (this: DecoratorProvider, v: T, ctx: DecoratorContext) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ method3() { } >method3 : () => void diff --git a/tests/baselines/reference/esDecorators-privateFieldAccess.types b/tests/baselines/reference/esDecorators-privateFieldAccess.types index c0b1aa3986d07..ef71ecd517161 100644 --- a/tests/baselines/reference/esDecorators-privateFieldAccess.types +++ b/tests/baselines/reference/esDecorators-privateFieldAccess.types @@ -11,7 +11,7 @@ declare let dec: any; >dec : any > : ^^^ >x => x.#foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x.#foo : any @@ -37,7 +37,7 @@ class A { >this : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >(x: A) => x.#foo : (x: A) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : A > : ^ >x.#foo : number @@ -56,7 +56,7 @@ class A { >dec : any > : ^^^ >(x: B) => x.#foo : (x: B) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : B > : ^ >x.#foo : any diff --git a/tests/baselines/reference/esModuleInteropImportCall.types b/tests/baselines/reference/esModuleInteropImportCall.types index 1e5cf029510fc..d28d4af045546 100644 --- a/tests/baselines/reference/esModuleInteropImportCall.types +++ b/tests/baselines/reference/esModuleInteropImportCall.types @@ -15,15 +15,15 @@ import("./foo").then(f => { >import("./foo").then(f => { f.default;}) : Promise > : ^^^^^^^^^^^^^ >import("./foo").then : void; }, TResult2 = never>(onfulfilled?: (value: { default: () => void; }) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >import("./foo") : Promise<{ default: () => void; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./foo" : "./foo" > : ^^^^^^^ >then : void; }, TResult2 = never>(onfulfilled?: (value: { default: () => void; }) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f => { f.default;} : (f: { default: () => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { default: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types index 0ac25349aa454..246f236e36161 100644 --- a/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types +++ b/tests/baselines/reference/esModuleInteropImportTSLibHasImport.types @@ -13,7 +13,7 @@ export const username = () => 'username'; >username : () => string > : ^^^^^^^^^^^^ >() => 'username' : () => string -> : ^^^^^^^^^^^^ +> : >'username' : "username" > : ^^^^^^^^^^ @@ -23,9 +23,9 @@ export * from './username'; === hello.ts === const sayHello = (name?: string) => void (`Hello, ${name}!`); >sayHello : (name?: string) => any -> : ^^^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >(name?: string) => void (`Hello, ${name}!`) : (name?: string) => any -> : ^^^^^^^^ ^^^^^^^^ +> : ^ >name : string > : ^^^^^^ >void (`Hello, ${name}!`) : undefined @@ -39,12 +39,12 @@ const sayHello = (name?: string) => void (`Hello, ${name}!`); export default sayHello; >sayHello : (name?: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ === index.ts === import sayHello from "./hello"; >sayHello : (name?: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ import { username } from './utils'; >username : () => string @@ -53,7 +53,7 @@ import { username } from './utils'; sayHello(username()); >sayHello(username()) : any >sayHello : (name?: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >username() : string > : ^^^^^^ >username : () => string diff --git a/tests/baselines/reference/esModuleInteropPrettyErrorRelatedInformation.types b/tests/baselines/reference/esModuleInteropPrettyErrorRelatedInformation.types index ba50f0b5aa32a..8d5d1bb5aba7b 100644 --- a/tests/baselines/reference/esModuleInteropPrettyErrorRelatedInformation.types +++ b/tests/baselines/reference/esModuleInteropPrettyErrorRelatedInformation.types @@ -17,7 +17,7 @@ import * as foo from "./foo"; function invoke(f: () => void) { f(); } >invoke : (f: () => void) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : () => void > : ^^^^^^ >f() : void @@ -29,7 +29,7 @@ invoke(foo); >invoke(foo) : void > : ^^^^ >invoke : (f: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : { default: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types index 853d18b226f40..fed54292dcda0 100644 --- a/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types +++ b/tests/baselines/reference/esNextWeakRefs_IterableWeakMap.types @@ -4,9 +4,9 @@ /** `static #cleanup` */ const IterableWeakMap_cleanup = ({ ref, set }: { >IterableWeakMap_cleanup : ({ ref, set }: { readonly ref: WeakRef; readonly set: Set>; }) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >({ ref, set }: { readonly ref: WeakRef; readonly set: Set>;}) => { set.delete(ref);} : ({ ref, set }: { readonly ref: WeakRef; readonly set: Set>; }) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >ref : WeakRef > : ^^^^^^^^^^^^^^^ >set : Set> @@ -25,11 +25,11 @@ const IterableWeakMap_cleanup = ({ ref, set }: { >set.delete(ref) : boolean > : ^^^^^^^ >set.delete : (value: WeakRef) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >set : Set> > : ^^^^^^^^^^^^^^^^^^^^ >delete : (value: WeakRef) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ref : WeakRef > : ^^^^^^^^^^^^^^^ @@ -54,7 +54,7 @@ export class IterableWeakMap implements WeakMap { >#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^ >new WeakMap; value: V }>() : WeakMap; value: V; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^ >WeakMap : WeakMapConstructor > : ^^^^^^^^^^^^^^^^^^ >ref : WeakRef @@ -74,11 +74,11 @@ export class IterableWeakMap implements WeakMap { >#finalizationGroup : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new FinalizationRegistry(IterableWeakMap_cleanup) : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^ >FinalizationRegistry : FinalizationRegistryConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >IterableWeakMap_cleanup : ({ ref, set }: { readonly ref: WeakRef; readonly set: Set>; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ constructor(iterable: Iterable<[key: K, value: V]> | null = null) { >iterable : Iterable<[key: K, value: V]> | null @@ -102,11 +102,11 @@ export class IterableWeakMap implements WeakMap { >this.set(key, value) : this > : ^^^^ >this.set : (key: K, value: V) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >set : (key: K, value: V) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >key : K > : ^ >value : V @@ -117,7 +117,7 @@ export class IterableWeakMap implements WeakMap { set(key: K, value: V): this { >set : (key: K, value: V) => this -> : ^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >value : V @@ -127,15 +127,15 @@ export class IterableWeakMap implements WeakMap { >entry : { readonly ref: WeakRef; value: V; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap.get(key) : { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ >this.#weakMap.get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : K > : ^ @@ -174,13 +174,13 @@ export class IterableWeakMap implements WeakMap { >this.#weakMap.set(key, { ref, value }) : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap.set : (key: K, value: { readonly ref: WeakRef; value: V; }) => WeakMap; value: V; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >set : (key: K, value: { readonly ref: WeakRef; value: V; }) => WeakMap; value: V; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >key : K > : ^ >{ ref, value } : { ref: WeakRef; value: V; } @@ -194,27 +194,27 @@ export class IterableWeakMap implements WeakMap { >this.#refSet.add(ref) : Set> > : ^^^^^^^^^^^^^^^ >this.#refSet.add : (value: WeakRef) => Set> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#refSet : Set> > : ^^^^^^^^^^^^^^^ >this : this > : ^^^^ >add : (value: WeakRef) => Set> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ref : WeakRef > : ^^^^^^^^^^ this.#finalizationGroup.register(key, { >this.#finalizationGroup.register(key, { set: this.#refSet, ref, }, ref) : void > : ^^^^ ->this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.#finalizationGroup.register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >this.#finalizationGroup : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>register : (target: WeakKey, heldValue: { readonly ref: WeakRef; readonly set: Set>; }, unregisterToken?: WeakKey) => void +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >key : K > : ^ >{ set: this.#refSet, ref, } : { set: Set>; ref: WeakRef; } @@ -243,7 +243,7 @@ export class IterableWeakMap implements WeakMap { has(key: K): boolean { >has : (key: K) => boolean -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -251,20 +251,20 @@ export class IterableWeakMap implements WeakMap { >this.#weakMap.has(key) : boolean > : ^^^^^^^ >this.#weakMap.has : (key: K) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >has : (key: K) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >key : K > : ^ } get(key: K): V | undefined { >get : (key: K) => V | undefined -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -274,13 +274,13 @@ export class IterableWeakMap implements WeakMap { >this.#weakMap.get(key) : { readonly ref: WeakRef; value: V; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap.get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : K > : ^ >value : V | undefined @@ -289,7 +289,7 @@ export class IterableWeakMap implements WeakMap { delete(key: K): boolean { >delete : (key: K) => boolean -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -297,15 +297,15 @@ export class IterableWeakMap implements WeakMap { >entry : { readonly ref: WeakRef; value: V; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap.get(key) : { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ >this.#weakMap.get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : K > : ^ @@ -332,13 +332,13 @@ export class IterableWeakMap implements WeakMap { >this.#weakMap.delete(key) : boolean > : ^^^^^^^ >this.#weakMap.delete : (key: K) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >delete : (key: K) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >key : K > : ^ @@ -346,13 +346,13 @@ export class IterableWeakMap implements WeakMap { >this.#refSet.delete(ref) : boolean > : ^^^^^^^ >this.#refSet.delete : (value: WeakRef) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >this.#refSet : Set> > : ^^^^^^^^^^^^^^^ >this : this > : ^^^^ >delete : (value: WeakRef) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >ref : WeakRef > : ^^^^^^^^^^ @@ -360,13 +360,13 @@ export class IterableWeakMap implements WeakMap { >this.#finalizationGroup.unregister(ref) : void > : ^^^^ >this.#finalizationGroup.unregister : (unregisterToken: WeakKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this.#finalizationGroup : FinalizationRegistry<{ readonly ref: WeakRef; readonly set: Set>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >unregister : (unregisterToken: WeakKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >ref : WeakRef > : ^^^^^^^^^^ @@ -425,13 +425,13 @@ export class IterableWeakMap implements WeakMap { >this.#weakMap.get(key) : { readonly ref: WeakRef; value: V; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap.get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.#weakMap : WeakMap; value: V; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >get : (key: K) => { readonly ref: WeakRef; value: V; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : K > : ^ @@ -486,11 +486,11 @@ Object.defineProperties(IterableWeakMap.prototype, { >Object.defineProperties(IterableWeakMap.prototype, { [Symbol.iterator]: { configurable: true, enumerable: false, writable: true, value: Object.getOwnPropertyDescriptor( IterableWeakMap.prototype, "entries", )!.value, }, [Symbol.toStringTag]: { configurable: true, enumerable: false, writable: false, value: "IterableWeakMap", },}) : IterableWeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperties : (o: T, properties: PropertyDescriptorMap & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperties : (o: T, properties: PropertyDescriptorMap & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >IterableWeakMap.prototype : IterableWeakMap > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >IterableWeakMap : typeof IterableWeakMap @@ -538,11 +538,11 @@ Object.defineProperties(IterableWeakMap.prototype, { >Object.getOwnPropertyDescriptor( IterableWeakMap.prototype, "entries", ) : PropertyDescriptor | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.getOwnPropertyDescriptor : (o: any, p: PropertyKey) => PropertyDescriptor | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >getOwnPropertyDescriptor : (o: any, p: PropertyKey) => PropertyDescriptor | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ IterableWeakMap.prototype, >IterableWeakMap.prototype : IterableWeakMap diff --git a/tests/baselines/reference/escapedIdentifiers.types b/tests/baselines/reference/escapedIdentifiers.types index 7b555beb7fbfc..21c84c42c55d3 100644 --- a/tests/baselines/reference/escapedIdentifiers.types +++ b/tests/baselines/reference/escapedIdentifiers.types @@ -330,7 +330,7 @@ class testClass { public func(arg1: number, arg\u0032: string, arg\u0033: boolean, arg4: number) { >func : (arg1: number, arg2: string, arg3: boolean, arg4: number) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg1 : number > : ^^^^^^ >arg\u0032 : string diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target.types b/tests/baselines/reference/esnextmodulekindWithES5Target.types index dd70ce98af321..1610f9ea7b0ad 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target.types +++ b/tests/baselines/reference/esnextmodulekindWithES5Target.types @@ -29,13 +29,13 @@ export { C as C2 }; declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export class D { >D : D diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target11.types b/tests/baselines/reference/esnextmodulekindWithES5Target11.types index caf11c62aea70..05dc02363c3a1 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target11.types +++ b/tests/baselines/reference/esnextmodulekindWithES5Target11.types @@ -3,13 +3,13 @@ === esnextmodulekindWithES5Target11.ts === declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default class C { >C : C diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target3.types b/tests/baselines/reference/esnextmodulekindWithES5Target3.types index 3f434bd5a871f..0fa22932dcfab 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target3.types +++ b/tests/baselines/reference/esnextmodulekindWithES5Target3.types @@ -3,13 +3,13 @@ === esnextmodulekindWithES5Target3.ts === declare function foo(...args: any[]): any; >foo : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @foo >foo : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default class D { >D : D diff --git a/tests/baselines/reference/esnextmodulekindWithES5Target6.types b/tests/baselines/reference/esnextmodulekindWithES5Target6.types index 17b32bd6b9079..22d0bf92f10c2 100644 --- a/tests/baselines/reference/esnextmodulekindWithES5Target6.types +++ b/tests/baselines/reference/esnextmodulekindWithES5Target6.types @@ -3,7 +3,7 @@ === esnextmodulekindWithES5Target6.ts === export function f1(d = 0) { >f1 : (d?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : number > : ^^^^^^ >0 : 0 @@ -12,14 +12,14 @@ export function f1(d = 0) { export function f2(...arg) { >f2 : (...arg: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >arg : any[] > : ^^^^^ } export default function f3(d = 0) { >f3 : (d?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/evalAfter0.types b/tests/baselines/reference/evalAfter0.types index cf09f08a94835..d17e8f5ca74cf 100644 --- a/tests/baselines/reference/evalAfter0.types +++ b/tests/baselines/reference/evalAfter0.types @@ -5,13 +5,13 @@ >(0,eval)("10") : any > : ^^^ >(0,eval) : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >0,eval : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >0 : 0 > : ^ >eval : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"10" : "10" > : ^^^^ diff --git a/tests/baselines/reference/eventEmitterPatternWithRecordOfFunction.types b/tests/baselines/reference/eventEmitterPatternWithRecordOfFunction.types index 2bb6bb2037843..f6f49dce66870 100644 --- a/tests/baselines/reference/eventEmitterPatternWithRecordOfFunction.types +++ b/tests/baselines/reference/eventEmitterPatternWithRecordOfFunction.types @@ -4,7 +4,7 @@ interface A { emit(event: string, ...args: any[]): boolean; >emit : (event: string, ...args: any[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >event : string > : ^^^^^^ >args : any[] @@ -24,7 +24,7 @@ type EventMap = Record; interface B extends A { emit(event: Event, ...args: Args): boolean; >emit : (event: Event, ...args: Args) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >event : Event > : ^^^^^ >args : Args diff --git a/tests/baselines/reference/everyTypeAssignableToAny.types b/tests/baselines/reference/everyTypeAssignableToAny.types index 5f484020b696c..42b354c8f5dd5 100644 --- a/tests/baselines/reference/everyTypeAssignableToAny.types +++ b/tests/baselines/reference/everyTypeAssignableToAny.types @@ -76,7 +76,7 @@ var k: Function; var l: (x: number) => string; >l : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -92,7 +92,7 @@ var n: { foo: string }; var o: (x: T) => T; >o : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -174,10 +174,10 @@ a = k; a = l; >a = l : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : any >l : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ a = m; >a = m : number[] @@ -188,10 +188,10 @@ a = m; a = o; >a = o : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any >o : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ a = p; >a = p : Number @@ -230,7 +230,7 @@ a = ae; function foo(x: T, y: U, z: V) { >foo : (x: T, y: U, z: V) => void -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types index b806e5bfa0fb2..bb23b1ec5ad4a 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInitializer.types @@ -35,7 +35,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -56,17 +56,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var aNumber: number = 9.9; @@ -159,27 +159,27 @@ var anOtherObjectLiteral: { id: number } = new C(); var aFunction: typeof F = F; >aFunction : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : var anOtherFunction: (x: string) => number = F; >anOtherFunction : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var aLambda: typeof F = (x) => 2; >aLambda : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => 2 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >2 : 2 @@ -209,15 +209,15 @@ var aClassInModule: M.A = new M.A(); var aFunctionInModule: typeof M.F2 = (x) => 'this is a string'; >aFunctionInModule : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M.F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M : typeof M > : ^^^^^^^^ >F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => 'this is a string' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >'this is a string' : "this is a string" diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.types b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.types index fa3b55d3acafd..241f22a0d4c5c 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.types +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.types @@ -35,7 +35,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -43,7 +43,7 @@ function F(x: string): number { return 42; } function F2(x: number): boolean { return x < 42; } >F2 : (x: number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x < 42 : boolean @@ -68,17 +68,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } module N { @@ -96,17 +96,17 @@ module N { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var aNumber: number = 'this is a string'; @@ -179,27 +179,27 @@ var anOtherObjectLiteral: { id: string } = new C(); var aFunction: typeof F = F2; >aFunction : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F2 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ var anOtherFunction: (x: string) => number = F2; >anOtherFunction : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >F2 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ var aLambda: typeof F = (x) => 'a string'; >aLambda : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => 'a string' : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >'a string' : "a string" @@ -229,14 +229,14 @@ var aClassInModule: M.A = new N.A(); var aFunctionInModule: typeof M.F2 = F2; >aFunctionInModule : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M.F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M : typeof M > : ^^^^^^^^ >F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F2 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/everyTypeWithInitializer.types b/tests/baselines/reference/everyTypeWithInitializer.types index 4a26a1220dda7..503bb9d48fa0d 100644 --- a/tests/baselines/reference/everyTypeWithInitializer.types +++ b/tests/baselines/reference/everyTypeWithInitializer.types @@ -35,7 +35,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -56,17 +56,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var aNumber = 9.9; @@ -144,15 +144,15 @@ var anObjectLiteral = { id: 12 }; var aFunction = F; >aFunction : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : var aLambda = (x) => 2; >aLambda : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(x) => 2 : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >x : any >2 : 2 > : ^ @@ -177,13 +177,13 @@ var aClassInModule = new M.A(); var aFunctionInModule = M.F2; >aFunctionInModule : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M.F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >M : typeof M > : ^^^^^^^^ >F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ // no initializer or annotation, so this is an 'any' var x; diff --git a/tests/baselines/reference/evolvingArrayResolvedAssert.types b/tests/baselines/reference/evolvingArrayResolvedAssert.types index 5dc5cc90af5b3..7f01dfb4b518f 100644 --- a/tests/baselines/reference/evolvingArrayResolvedAssert.types +++ b/tests/baselines/reference/evolvingArrayResolvedAssert.types @@ -17,11 +17,11 @@ for (var a in C) { >C.hasOwnProperty(a) : boolean > : ^^^^^^^ >C.hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >C : any[] > : ^^^^^ >hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >a : string > : ^^^^^^ } diff --git a/tests/baselines/reference/evolvingArrayTypeInAssert.types b/tests/baselines/reference/evolvingArrayTypeInAssert.types index 045516daac010..3a72e9fd29fec 100644 --- a/tests/baselines/reference/evolvingArrayTypeInAssert.types +++ b/tests/baselines/reference/evolvingArrayTypeInAssert.types @@ -3,7 +3,7 @@ === evolvingArrayTypeInAssert.ts === export function unsafeCast(_value: unknown): asserts _value is T { } >unsafeCast : (_value: unknown) => asserts _value is T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >_value : unknown > : ^^^^^^^ @@ -21,11 +21,11 @@ function yadda() { >out.push(100) : number > : ^^^^^^ >out.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >out : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >100 : 100 > : ^^^ @@ -33,7 +33,7 @@ function yadda() { >unsafeCast(out) : void > : ^^^^ >unsafeCast : (_value: unknown) => asserts _value is T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >out : number[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/excessPropertiesInOverloads.types b/tests/baselines/reference/excessPropertiesInOverloads.types index 1403e21e61f5f..22a7b21e09844 100644 --- a/tests/baselines/reference/excessPropertiesInOverloads.types +++ b/tests/baselines/reference/excessPropertiesInOverloads.types @@ -3,7 +3,7 @@ === excessPropertiesInOverloads.ts === declare function fn(a: { x: string }): void; >fn : { (a: { x: string; }): void; (a: { y: string; }): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >a : { x: string; } > : ^^^^^ ^^^ >x : string @@ -11,7 +11,7 @@ declare function fn(a: { x: string }): void; declare function fn(a: { y: string }): void; >fn : { (a: { x: string; }): void; (a: { y: string; }): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >a : { y: string; } > : ^^^^^ ^^^ >y : string @@ -21,7 +21,7 @@ fn({ z: 3, a: 3 }); >fn({ z: 3, a: 3 }) : void > : ^^^^ >fn : { (a: { x: string; }): void; (a: { y: string; }): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >{ z: 3, a: 3 } : { z: number; a: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number diff --git a/tests/baselines/reference/excessPropertyCheckIntersectionWithRecursiveType.types b/tests/baselines/reference/excessPropertyCheckIntersectionWithRecursiveType.types index d768a600b1d2a..89673db65255b 100644 --- a/tests/baselines/reference/excessPropertyCheckIntersectionWithRecursiveType.types +++ b/tests/baselines/reference/excessPropertyCheckIntersectionWithRecursiveType.types @@ -80,7 +80,7 @@ type Schema2 = (T extends boolean ? { type: 'boolean'; } & Example : { pro export const schemaObj2: Schema2 = { >schemaObj2 : { props: { l1: { props: { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; } & Example<{ l2: boolean; }>; }; } & Example -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -186,7 +186,7 @@ type Schema4 = (T extends boolean ? { type: 'boolean'; } & Example : { pro export const schemaObj4: Schema4 = { >schemaObj4 : { props: Example & { l1: { props: Example<{ l2: boolean; }> & { l2: ({ type: "boolean"; } & Example) | ({ type: "boolean"; } & Example); }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ props: { l1: { props: { l2: { type: 'boolean' }, invalid: false, }, }, },} : { props: { l1: { props: { l2: { type: "boolean"; }; invalid: boolean; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/excessPropertyCheckWithEmptyObject.types b/tests/baselines/reference/excessPropertyCheckWithEmptyObject.types index 865da60ec3965..ec197aadbbe12 100644 --- a/tests/baselines/reference/excessPropertyCheckWithEmptyObject.types +++ b/tests/baselines/reference/excessPropertyCheckWithEmptyObject.types @@ -8,11 +8,11 @@ Object.defineProperty(window, "prop", { value: "v1.0.0", readonly: false }); >Object.defineProperty(window, "prop", { value: "v1.0.0", readonly: false }) : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >"prop" : "prop" diff --git a/tests/baselines/reference/excessPropertyCheckWithSpread.types b/tests/baselines/reference/excessPropertyCheckWithSpread.types index 799778ea9fdbd..9c5e06e1b93f0 100644 --- a/tests/baselines/reference/excessPropertyCheckWithSpread.types +++ b/tests/baselines/reference/excessPropertyCheckWithSpread.types @@ -3,7 +3,7 @@ === excessPropertyCheckWithSpread.ts === declare function f({ a: number }): void >f : ({ a: number }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >number : any @@ -22,7 +22,7 @@ f({ a: 1, ...i }); >f({ a: 1, ...i }) : void > : ^^^^ >f : ({ a: number }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, ...i } : { n: number; a: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -54,7 +54,7 @@ f({ a: 1, ...l, ...r }); >f({ a: 1, ...l, ...r }) : void > : ^^^^ >f : ({ a: number }: { a: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, ...l, ...r } : { opt: string | number; a: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/excessPropertyCheckWithUnions.types b/tests/baselines/reference/excessPropertyCheckWithUnions.types index 34114a9aa9d58..39af7d81ae15c 100644 --- a/tests/baselines/reference/excessPropertyCheckWithUnions.types +++ b/tests/baselines/reference/excessPropertyCheckWithUnions.types @@ -609,7 +609,7 @@ declare const prop2: string | undefined; function F1(_arg: { props: Properties }) { } >F1 : (_arg: { props: Properties; }) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_arg : { props: Properties; } > : ^^^^^^^^^ ^^^ >props : Properties @@ -619,7 +619,7 @@ F1({ >F1({ props: { prop1, prop2, },}) : void > : ^^^^ >F1 : (_arg: { props: Properties; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ props: { prop1, prop2, },} : { props: { prop1: string; prop2: string | undefined; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -642,7 +642,7 @@ F1({ function F2(_props: Properties) { } >F2 : (_props: Properties) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_props : Properties > : ^^^^^^^^^^ @@ -650,7 +650,7 @@ F2({ >F2({ prop1, prop2,}) : void > : ^^^^ >F2 : (_props: Properties) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ prop1, prop2,} : { prop1: string; prop2: string | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/excessPropertyCheckingIntersectionWithConditional.types b/tests/baselines/reference/excessPropertyCheckingIntersectionWithConditional.types index 20b5eb0fa9e0d..4d389aca67452 100644 --- a/tests/baselines/reference/excessPropertyCheckingIntersectionWithConditional.types +++ b/tests/baselines/reference/excessPropertyCheckingIntersectionWithConditional.types @@ -9,9 +9,9 @@ type Foo = K extends unknown ? { a: number } : unknown const createDefaultExample = (x: K): Foo & { x: K; } => { >createDefaultExample : (x: K) => Foo & { x: K; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(x: K): Foo & { x: K; } => { return { a: 1, x: x }; // okay in TS 4.7.4, error in TS 4.8.2} : (x: K) => Foo & { x: K; } -> : ^ ^^^^^ ^^^^^ +> : >x : K > : ^ >x : K diff --git a/tests/baselines/reference/excessiveStackDepthFlatArray.types b/tests/baselines/reference/excessiveStackDepthFlatArray.types index ce34f73a0eecf..efad7353a3d0f 100644 --- a/tests/baselines/reference/excessiveStackDepthFlatArray.types +++ b/tests/baselines/reference/excessiveStackDepthFlatArray.types @@ -10,7 +10,7 @@ Symbol count: 28,000 / 28,000 (nearest 500) interface MiddlewareArray extends Array {} declare function configureStore(options: { middleware: MiddlewareArray }): void; >configureStore : (options: { middleware: MiddlewareArray; }) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : { middleware: MiddlewareArray; } > : ^^^^^^^^^^^^^^ ^^^ >middleware : MiddlewareArray @@ -24,7 +24,7 @@ configureStore({ >configureStore({ middleware: [...defaultMiddleware], // Should not error}) : void > : ^^^^ >configureStore : (options: { middleware: MiddlewareArray; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ middleware: [...defaultMiddleware], // Should not error} : { middleware: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -95,7 +95,7 @@ const Component = () => { >Component : () => any > : ^^^^^^^^^ >() => { const categories = ['Fruit', 'Vegetables']; return (
  • All
  • {categories.map((category) => (
  • {category}
  • // Error about 'key' only ))}
);} : () => any -> : ^^^^^^^^^ +> : const categories = ['Fruit', 'Vegetables']; >categories : string[] @@ -129,13 +129,13 @@ const Component = () => { >categories.map((category) => (
  • {category}
  • // Error about 'key' only )) : any[] > : ^^^^^ >categories.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >categories : string[] > : ^^^^^^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(category) => (
  • {category}
  • // Error about 'key' only ) : (category: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >category : string > : ^^^^^^ >(
  • {category}
  • // Error about 'key' only ) : any diff --git a/tests/baselines/reference/exhaustiveSwitchCheckCircularity.types b/tests/baselines/reference/exhaustiveSwitchCheckCircularity.types index 5d76a312fa2ae..fba3027d3dd43 100644 --- a/tests/baselines/reference/exhaustiveSwitchCheckCircularity.types +++ b/tests/baselines/reference/exhaustiveSwitchCheckCircularity.types @@ -5,7 +5,7 @@ declare function isNever(n: never): boolean; >isNever : (n: never) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : never > : ^^^^^ @@ -51,7 +51,7 @@ function f() { >isNever(foo) : boolean > : ^^^^^^^ >isNever : (n: never) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >foo : "bbb" > : ^^^^^ @@ -64,7 +64,7 @@ function f() { declare function functionB(key: string): string; >functionB : (key: string) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ @@ -109,7 +109,7 @@ function functionC(): void { >functionB(key) : string > : ^^^^^^ >functionB : (key: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/exhaustiveSwitchImplicitReturn.types b/tests/baselines/reference/exhaustiveSwitchImplicitReturn.types index 331c72208770f..4ee2d1cd222c0 100644 --- a/tests/baselines/reference/exhaustiveSwitchImplicitReturn.types +++ b/tests/baselines/reference/exhaustiveSwitchImplicitReturn.types @@ -3,7 +3,7 @@ === exhaustiveSwitchImplicitReturn.ts === function foo1(bar: "a"): number { >foo1 : (bar: "a") => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : "a" > : ^^^ @@ -23,7 +23,7 @@ function foo1(bar: "a"): number { function foo2(bar: "a"): number { >foo2 : (bar: "a") => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : "a" > : ^^^ @@ -47,7 +47,7 @@ function foo2(bar: "a"): number { function foo3(bar: "a"): number { >foo3 : (bar: "a") => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : "a" > : ^^^ @@ -71,7 +71,7 @@ function foo3(bar: "a"): number { function foo4(bar: "a"): number { >foo4 : (bar: "a") => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : "a" > : ^^^ @@ -92,14 +92,14 @@ function foo4(bar: "a"): number { >foo3(bar) : number > : ^^^^^^ >foo3 : (bar: "a") => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >bar : never > : ^^^^^ } function foo5(bar: "a" | "b"): number { >foo5 : (bar: "a" | "b") => number -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : "a" | "b" > : ^^^^^^^^^ @@ -119,7 +119,7 @@ function foo5(bar: "a" | "b"): number { function foo6(bar: "a", a: boolean, b: boolean): number { >foo6 : (bar: "a", a: boolean, b: boolean) => number -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >bar : "a" > : ^^^ >a : boolean diff --git a/tests/baselines/reference/exhaustiveSwitchStatements1.types b/tests/baselines/reference/exhaustiveSwitchStatements1.types index 3afbc5d598a76..b03d938215e25 100644 --- a/tests/baselines/reference/exhaustiveSwitchStatements1.types +++ b/tests/baselines/reference/exhaustiveSwitchStatements1.types @@ -3,7 +3,7 @@ === exhaustiveSwitchStatements1.ts === function f1(x: 1 | 2): string { >f1 : (x: 1 | 2) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : 1 | 2 > : ^^^^^ @@ -44,7 +44,7 @@ function f1(x: 1 | 2): string { function f2(x: 1 | 2) { >f2 : (x: 1 | 2) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : 1 | 2 > : ^^^^^ @@ -83,7 +83,7 @@ function f2(x: 1 | 2) { function f3(x: 1 | 2) { >f3 : (x: 1 | 2) => 10 | 20 -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : 1 | 2 > : ^^^^^ @@ -126,7 +126,7 @@ enum E { A, B } function f(e: E): number { >f : (e: E) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : E > : ^ @@ -158,7 +158,7 @@ function f(e: E): number { function g(e: E): number { >g : (e: E) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : E > : ^ @@ -235,7 +235,7 @@ type Shape = Square | Rectangle | Circle | Triangle; function area(s: Shape): number { >area : (s: Shape) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Shape > : ^^^^^ @@ -341,11 +341,11 @@ function area(s: Shape): number { >Math.sqrt(3) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 @@ -370,7 +370,7 @@ function area(s: Shape): number { function areaWrapped(s: Shape): number { >areaWrapped : (s: Shape) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Shape > : ^^^^^ @@ -472,11 +472,11 @@ function areaWrapped(s: Shape): number { >Math.sqrt(3) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 @@ -517,7 +517,7 @@ enum MyEnum { function thisGivesError(e: MyEnum): string { >thisGivesError : (e: MyEnum) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : MyEnum > : ^^^^^^ @@ -564,7 +564,7 @@ function thisGivesError(e: MyEnum): string { function good1(e: MyEnum): string { >good1 : (e: MyEnum) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : MyEnum > : ^^^^^^ @@ -619,7 +619,7 @@ function good1(e: MyEnum): string { function good2(e: MyEnum): string { >good2 : (e: MyEnum) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : MyEnum > : ^^^^^^ @@ -666,9 +666,9 @@ enum Level { const doSomethingWithLevel = (level: Level) => { >doSomethingWithLevel : (level: Level) => Level -> : ^^^^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >(level: Level) => { let next: Level; switch (level) { case Level.One: next = Level.Two; break; case Level.Two: next = Level.One; break; } return next;} : (level: Level) => Level -> : ^^^^^^^^ ^^^^^^^^^^ +> : >level : Level > : ^^^^^ @@ -757,7 +757,7 @@ type Shape2 = Square2 | Circle2; function withDefault(s1: Shape2, s2: Shape2): string { >withDefault : (s1: Shape2, s2: Shape2) => string -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s1 : Shape2 > : ^^^^^^ >s2 : Shape2 @@ -817,7 +817,7 @@ function withDefault(s1: Shape2, s2: Shape2): string { function withoutDefault(s1: Shape2, s2: Shape2): string { >withoutDefault : (s1: Shape2, s2: Shape2) => string -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s1 : Shape2 > : ^^^^^^ >s2 : Shape2 @@ -874,7 +874,7 @@ function withoutDefault(s1: Shape2, s2: Shape2): string { function test4(value: 1 | 2) { >test4 : (value: 1 | 2) => string -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >value : 1 | 2 > : ^^^^^ @@ -1035,7 +1035,7 @@ type K = keyof O | 'c'; function ff(o: O, k: K) { >ff : (o: O, k: K) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >o : O > : ^ >k : K @@ -1085,7 +1085,7 @@ type A = { kind: "abc" } | { kind: "def" }; function f35431(a: A) { >f35431 : (a: A) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : A > : ^ diff --git a/tests/baselines/reference/exhaustiveSwitchWithWideningLiteralTypes.types b/tests/baselines/reference/exhaustiveSwitchWithWideningLiteralTypes.types index eafb1f0b52b4e..ca4641edc8c77 100644 --- a/tests/baselines/reference/exhaustiveSwitchWithWideningLiteralTypes.types +++ b/tests/baselines/reference/exhaustiveSwitchWithWideningLiteralTypes.types @@ -27,7 +27,7 @@ class B { function f(value: A | B): number { >f : (value: A | B) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : A | B > : ^^^^^ diff --git a/tests/baselines/reference/expandoFunctionBlockShadowing.types b/tests/baselines/reference/expandoFunctionBlockShadowing.types index 37cb64a54291b..51eb59cce746f 100644 --- a/tests/baselines/reference/expandoFunctionBlockShadowing.types +++ b/tests/baselines/reference/expandoFunctionBlockShadowing.types @@ -72,7 +72,7 @@ if (Math.random()) { >Y : { (): void; test: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function Y() {} : { (): void; test: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Y : { (): void; test: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJSDocInTs.types b/tests/baselines/reference/expandoFunctionContextualTypesJSDocInTs.types index 87942d1a45730..7510a231563e7 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJSDocInTs.types +++ b/tests/baselines/reference/expandoFunctionContextualTypesJSDocInTs.types @@ -17,5 +17,5 @@ Foo.bar = () => { }; >bar : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/expandoFunctionContextualTypesJs.types b/tests/baselines/reference/expandoFunctionContextualTypesJs.types index 06f6e5433fae7..060d69b5eeda0 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesJs.types +++ b/tests/baselines/reference/expandoFunctionContextualTypesJs.types @@ -42,7 +42,7 @@ const MyComponent2 = () => null; >MyComponent2 : { (): any; defaultProps: MyComponentProps; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : { (): any; defaultProps: MyComponentProps; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** * @type {MyComponentProps} @@ -81,7 +81,7 @@ const check = MyComponent2; */ function expectLiteral(p) {} >expectLiteral : (p: { props: MyComponentProps; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : { props: MyComponentProps; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -112,7 +112,7 @@ function foo() { >expectLiteral(this) : void > : ^^^^ >expectLiteral : (p: { props: MyComponentProps; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ } @@ -143,7 +143,7 @@ expectLiteral({ props: module.exports }); >expectLiteral({ props: module.exports }) : void > : ^^^^ >expectLiteral : (p: { props: MyComponentProps; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ props: module.exports } : { props: MyComponentProps; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : MyComponentProps diff --git a/tests/baselines/reference/expandoFunctionContextualTypesNoValue.types b/tests/baselines/reference/expandoFunctionContextualTypesNoValue.types index 306d50b4c9df9..b53d2ed00085c 100644 --- a/tests/baselines/reference/expandoFunctionContextualTypesNoValue.types +++ b/tests/baselines/reference/expandoFunctionContextualTypesNoValue.types @@ -20,5 +20,5 @@ Foo.bar = () => { }; >bar : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/expandoFunctionExpressionsWithDynamicNames.types b/tests/baselines/reference/expandoFunctionExpressionsWithDynamicNames.types index 83a7899ca40a0..c732955d8933e 100644 --- a/tests/baselines/reference/expandoFunctionExpressionsWithDynamicNames.types +++ b/tests/baselines/reference/expandoFunctionExpressionsWithDynamicNames.types @@ -13,7 +13,7 @@ export const expr = () => {} >expr : { (): void; X: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; X: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : expr[s] = 0 >expr[s] = 0 : 0 @@ -31,7 +31,7 @@ export const expr2 = function () {} >expr2 : { (): void; X: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >function () {} : { (): void; X: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : expr2[s] = 0 >expr2[s] = 0 : 0 diff --git a/tests/baselines/reference/experimentalDecoratorMetadataUnresolvedTypeObjectInEmit.types b/tests/baselines/reference/experimentalDecoratorMetadataUnresolvedTypeObjectInEmit.types index 6832d2410dc71..e92435770566b 100644 --- a/tests/baselines/reference/experimentalDecoratorMetadataUnresolvedTypeObjectInEmit.types +++ b/tests/baselines/reference/experimentalDecoratorMetadataUnresolvedTypeObjectInEmit.types @@ -17,7 +17,7 @@ class Foo { f(@decorate user: A.B.C.D.E): void {} >f : (user: A.B.C.D.E) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >decorate : any > : ^^^ >user : A.B.C.D.E diff --git a/tests/baselines/reference/exponentiationOperatorWithInvalidOperands.types b/tests/baselines/reference/exponentiationOperatorWithInvalidOperands.types index 4470f99b7d9ff..00e34b456a4fe 100644 --- a/tests/baselines/reference/exponentiationOperatorWithInvalidOperands.types +++ b/tests/baselines/reference/exponentiationOperatorWithInvalidOperands.types @@ -329,7 +329,7 @@ var r1e5 = e ** e; >e : { a: number; } > : ^^^^^^^^^^^^^^ >e : { a: number; } -> : ^^^^^^^^^^^^^^ +> : var r1e6 = e ** f; >r1e6 : number diff --git a/tests/baselines/reference/exponentiationOperatorWithTypeParameter.types b/tests/baselines/reference/exponentiationOperatorWithTypeParameter.types index 3236850bccd69..6baf251bbe260 100644 --- a/tests/baselines/reference/exponentiationOperatorWithTypeParameter.types +++ b/tests/baselines/reference/exponentiationOperatorWithTypeParameter.types @@ -4,7 +4,7 @@ // type parameter type is not valid for arithmetic operand function foo(t: T) { >foo : (t: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ diff --git a/tests/baselines/reference/exportAssignImportedIdentifier.types b/tests/baselines/reference/exportAssignImportedIdentifier.types index e81b3fa2c63ca..73a1454da6773 100644 --- a/tests/baselines/reference/exportAssignImportedIdentifier.types +++ b/tests/baselines/reference/exportAssignImportedIdentifier.types @@ -32,7 +32,7 @@ var x = foo1.x; >x : () => boolean > : ^^^^^^^^^^^^^ >foo1.x : () => boolean -> : ^^^^^^^^^^^^^ +> : >foo1 : typeof foo1 > : ^^^^^^^^^^^ >x : () => boolean diff --git a/tests/baselines/reference/exportAssignTypes.types b/tests/baselines/reference/exportAssignTypes.types index f0721463c0d75..370e9e70a7c30 100644 --- a/tests/baselines/reference/exportAssignTypes.types +++ b/tests/baselines/reference/exportAssignTypes.types @@ -61,15 +61,15 @@ var v6 = iAny; import iGeneric = require('./expGeneric'); >iGeneric : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var v7: {(p1: x): x} = iGeneric; >v7 : (p1: x) => x -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >p1 : x > : ^ >iGeneric : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ === expString.ts === var x = "test"; @@ -149,7 +149,7 @@ export = x; === expGeneric.ts === function x(a: T){ >x : (a: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : T > : ^ @@ -159,5 +159,5 @@ function x(a: T){ } export = x; >x : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/exportAssignmentConstrainedGenericType.types b/tests/baselines/reference/exportAssignmentConstrainedGenericType.types index b774de4523f77..6a3687ab9bbae 100644 --- a/tests/baselines/reference/exportAssignmentConstrainedGenericType.types +++ b/tests/baselines/reference/exportAssignmentConstrainedGenericType.types @@ -9,7 +9,7 @@ var x = new foo(true); // Should error >x : foo<{ a: string; b: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new foo(true) : foo<{ a: string; b: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^ >foo : typeof foo > : ^^^^^^^^^^ >true : true @@ -19,7 +19,7 @@ var y = new foo({a: "test", b: 42}); // Should be OK >y : foo<{ a: string; b: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new foo({a: "test", b: 42}) : foo<{ a: string; b: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^ >foo : typeof foo > : ^^^^^^^^^^ >{a: "test", b: 42} : { a: string; b: number; } @@ -43,7 +43,7 @@ var z: number = y.test.b; >y : foo<{ a: string; b: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : { a: string; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >b : number > : ^^^^^^ diff --git a/tests/baselines/reference/exportAssignmentMergedModule.types b/tests/baselines/reference/exportAssignmentMergedModule.types index 3a34e11c28b2f..49bdd866b003d 100644 --- a/tests/baselines/reference/exportAssignmentMergedModule.types +++ b/tests/baselines/reference/exportAssignmentMergedModule.types @@ -45,11 +45,11 @@ if(!!foo.b){ >foo.c(42) : number > : ^^^^^^ >foo.c : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo : typeof foo > : ^^^^^^^^^^ >c : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ } @@ -78,7 +78,7 @@ module Foo { export function c(a: number){ >c : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.types b/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.types index 0472e35201301..508a4f38e5dbf 100644 --- a/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.types +++ b/tests/baselines/reference/exportAssignmentWithImportStatementPrivacyError.types @@ -11,13 +11,13 @@ module m2 { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/exportAssignmentWithPrivacyError.types b/tests/baselines/reference/exportAssignmentWithPrivacyError.types index 5f1bfff65aec7..d72889eb83c53 100644 --- a/tests/baselines/reference/exportAssignmentWithPrivacyError.types +++ b/tests/baselines/reference/exportAssignmentWithPrivacyError.types @@ -10,13 +10,13 @@ interface connectmodule { interface connectexport { use: (mod: connectmodule) => connectexport; >use : (mod: connectmodule) => connectexport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectmodule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/exportClassExtendingIntersection.types b/tests/baselines/reference/exportClassExtendingIntersection.types index 9e89e95e8373e..9bc628c290644 100644 --- a/tests/baselines/reference/exportClassExtendingIntersection.types +++ b/tests/baselines/reference/exportClassExtendingIntersection.types @@ -34,13 +34,13 @@ export interface MyMixin { export function MyMixin>>(base: T): T & Constructor { >MyMixin : >>(base: T) => T & Constructor -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >base : T > : ^ return class extends base { >class extends base { mixinProperty: string; } : { new (...args: any[]): (Anonymous class); prototype: MyMixin.(Anonymous class); } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >base : MyBaseClass > : ^^^^^^^^^^^^^^^^ @@ -56,7 +56,7 @@ import { MyBaseClass } from './BaseClass'; import { MyMixin } from './MixinClass'; >MyMixin : >>(base: T) => T & import("BaseClass").Constructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export class MyExtendedClass extends MyMixin(MyBaseClass) { >MyExtendedClass : MyExtendedClass @@ -64,7 +64,7 @@ export class MyExtendedClass extends MyMixin(MyBaseClass) { >MyMixin(MyBaseClass) : MyBaseClass & MyMixin > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyMixin : >>(base: T) => T & import("BaseClass").Constructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyBaseClass : typeof MyBaseClass > : ^^^^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ import { MyExtendedClass } from './FinalClass'; import { MyMixin } from './MixinClass'; >MyMixin : >>(base: T) => T & import("BaseClass").Constructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const myExtendedClass = new MyExtendedClass('string'); >myExtendedClass : MyExtendedClass @@ -97,7 +97,7 @@ const AnotherMixedClass = MyMixin(MyExtendedClass); >MyMixin(MyExtendedClass) : typeof MyExtendedClass & import("BaseClass").Constructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyMixin : >>(base: T) => T & import("BaseClass").Constructor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyExtendedClass : typeof MyExtendedClass > : ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDeclarationsInAmbientNamespaces.types b/tests/baselines/reference/exportDeclarationsInAmbientNamespaces.types index 05b9609991b0d..cf3e8f7b66785 100644 --- a/tests/baselines/reference/exportDeclarationsInAmbientNamespaces.types +++ b/tests/baselines/reference/exportDeclarationsInAmbientNamespaces.types @@ -7,7 +7,7 @@ declare namespace Q { function _try(method: Function, ...args: any[]): any; >_try : (method: Function, ...args: any[]) => any -> : ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >method : Function > : ^^^^^^^^ >args : any[] @@ -15,19 +15,19 @@ declare namespace Q { export { _try as try }; >_try : (method: Function, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >try : (method: Function, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ } Q.try(() => { }); >Q.try(() => { }) : any >Q.try : (method: Function, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >Q : typeof Q > : ^^^^^^^^ >try : (method: Function, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDeclareClass1.types b/tests/baselines/reference/exportDeclareClass1.types index e5b31ff072660..21cf69d5f0573 100644 --- a/tests/baselines/reference/exportDeclareClass1.types +++ b/tests/baselines/reference/exportDeclareClass1.types @@ -11,7 +11,7 @@ static tsF(param:any) { }; >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -27,7 +27,7 @@ static tsF(param:any); >tsF : (param: any) => any -> : ^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >param : any > : ^^^ diff --git a/tests/baselines/reference/exportDefaultAbstractClass.types b/tests/baselines/reference/exportDefaultAbstractClass.types index e26ab1bcfd577..d069fb1660341 100644 --- a/tests/baselines/reference/exportDefaultAbstractClass.types +++ b/tests/baselines/reference/exportDefaultAbstractClass.types @@ -17,7 +17,7 @@ new B().a.toExponential(); >new B().a.toExponential() : string > : ^^^^^^ >new B().a.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >new B().a : number > : ^^^^^^ >new B() : B @@ -27,7 +27,7 @@ new B().a.toExponential(); >a : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ === b.ts === import A from './a'; @@ -44,7 +44,7 @@ new C().a.toExponential(); >new C().a.toExponential() : string > : ^^^^^^ >new C().a.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >new C().a : number > : ^^^^^^ >new C() : C @@ -54,5 +54,5 @@ new C().a.toExponential(); >a : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDefaultAsyncFunction2.types b/tests/baselines/reference/exportDefaultAsyncFunction2.types index 70357aa13fd2c..8230be835048c 100644 --- a/tests/baselines/reference/exportDefaultAsyncFunction2.types +++ b/tests/baselines/reference/exportDefaultAsyncFunction2.types @@ -3,42 +3,42 @@ === asyncawait.ts === export function async(...args: any[]): any { } >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ export function await(...args: any[]): any { } >await : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ === a.ts === import { async, await } from 'asyncawait'; >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >await : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default async(() => await(Promise.resolve(1))); >async(() => await(Promise.resolve(1))) : any > : ^^^ >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >() => await(Promise.resolve(1)) : () => any > : ^^^^^^^^^ >await(Promise.resolve(1)) : any > : ^^^ >await : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -52,37 +52,37 @@ export default async () => { return 0; }; === c.ts === import { async, await } from 'asyncawait'; >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >await : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default async(); >async() : any > : ^^^ >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ === d.ts === import { async, await } from 'asyncawait'; >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >await : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default async; >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ === e.ts === import { async, await } from 'asyncawait'; >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >await : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ export default async >async : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ export function foo() { } >foo : () => void diff --git a/tests/baselines/reference/exportDefaultInterface.types b/tests/baselines/reference/exportDefaultInterface.types index 2467acefc0104..57777e0c1bb1f 100644 --- a/tests/baselines/reference/exportDefaultInterface.types +++ b/tests/baselines/reference/exportDefaultInterface.types @@ -13,7 +13,7 @@ a.value.toExponential(); >a.value.toExponential() : string > : ^^^^^^ >a.value.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a.value : number > : ^^^^^^ >a : A @@ -21,7 +21,7 @@ a.value.toExponential(); >value : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ === b.ts === import A from './a'; @@ -36,7 +36,7 @@ a.value.toExponential(); >a.value.toExponential() : string > : ^^^^^^ >a.value.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a.value : number > : ^^^^^^ >a : A @@ -44,5 +44,5 @@ a.value.toExponential(); >value : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDefaultInterfaceAndFunctionOverloads.types b/tests/baselines/reference/exportDefaultInterfaceAndFunctionOverloads.types index 8c592856c1684..61bb72fa27b50 100644 --- a/tests/baselines/reference/exportDefaultInterfaceAndFunctionOverloads.types +++ b/tests/baselines/reference/exportDefaultInterfaceAndFunctionOverloads.types @@ -3,19 +3,19 @@ === exportDefaultInterfaceAndFunctionOverloads.ts === export default function foo(value: number): number >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >value : number > : ^^^^^^ export default function foo(value: string): string >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : string > : ^^^^^^ export default function foo(value: string | number): string | number { >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >value : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDefaultInterfaceClassAndFunctionOverloads.types b/tests/baselines/reference/exportDefaultInterfaceClassAndFunctionOverloads.types index 441bb92343e5f..960aab07f6acc 100644 --- a/tests/baselines/reference/exportDefaultInterfaceClassAndFunctionOverloads.types +++ b/tests/baselines/reference/exportDefaultInterfaceClassAndFunctionOverloads.types @@ -3,19 +3,19 @@ === exportDefaultInterfaceClassAndFunctionOverloads.ts === export default function foo(value: number): number >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >value : number > : ^^^^^^ export default function foo(value: string): string >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : string > : ^^^^^^ export default function foo(value: string | number): string | number { >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >value : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDefaultStripsFreshness.types b/tests/baselines/reference/exportDefaultStripsFreshness.types index 1d1f8d27da8c6..91c823b69159b 100644 --- a/tests/baselines/reference/exportDefaultStripsFreshness.types +++ b/tests/baselines/reference/exportDefaultStripsFreshness.types @@ -39,7 +39,7 @@ interface IFoo { function nFoo(x: IFoo) {} >nFoo : (x: IFoo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : IFoo > : ^^^^ @@ -48,7 +48,7 @@ nFoo(q); // for comparison >nFoo(q) : void > : ^^^^ >nFoo : (x: IFoo) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >q : { foob: string; } > : ^^^^^^^^^^^^^^^^^ @@ -56,7 +56,7 @@ nFoo(B); >nFoo(B) : void > : ^^^^ >nFoo : (x: IFoo) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >B : { foob: string; } > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportDefaultTypeAndFunctionOverloads.types b/tests/baselines/reference/exportDefaultTypeAndFunctionOverloads.types index 58cfe95d6d444..42a23a2903245 100644 --- a/tests/baselines/reference/exportDefaultTypeAndFunctionOverloads.types +++ b/tests/baselines/reference/exportDefaultTypeAndFunctionOverloads.types @@ -3,19 +3,19 @@ === exportDefaultTypeAndFunctionOverloads.ts === export default function foo(value: number): number >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >value : number > : ^^^^^^ export default function foo(value: string): string >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : string > : ^^^^^^ export default function foo(value: string | number): string | number { >foo : { (value: number): number; (value: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >value : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportEqualErrorType.types b/tests/baselines/reference/exportEqualErrorType.types index d36001f6d3fff..0d729a17c4351 100644 --- a/tests/baselines/reference/exportEqualErrorType.types +++ b/tests/baselines/reference/exportEqualErrorType.types @@ -9,14 +9,14 @@ import connect = require('exportEqualErrorType_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. >connect().use(connect.static('foo')) : connect.connectExport > : ^^^^^^^^^^^^^^^^^^^^^ ->connect().use : (mod: connect.connectModule) => connect.connectExport -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>connect().use : (mod: connectModule) => connect.connectExport +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >connect() : connect.connectExport > : ^^^^^^^^^^^^^^^^^^^^^ >connect : { (): connect.connectExport; foo: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->use : (mod: connect.connectModule) => connect.connectExport -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>use : (mod: connectModule) => connect.connectExport +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >connect.static('foo') : any > : ^^^ >connect.static : any @@ -42,7 +42,7 @@ module server { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/exportEqualMemberMissing.types b/tests/baselines/reference/exportEqualMemberMissing.types index 0b76c14ebd051..c2521bf0b0320 100644 --- a/tests/baselines/reference/exportEqualMemberMissing.types +++ b/tests/baselines/reference/exportEqualMemberMissing.types @@ -9,14 +9,14 @@ import connect = require('./exportEqualMemberMissing_0'); connect().use(connect.static('foo')); // Error 1 The property 'static' does not exist on value of type ''. >connect().use(connect.static('foo')) : connect.connectExport > : ^^^^^^^^^^^^^^^^^^^^^ ->connect().use : (mod: connect.connectModule) => connect.connectExport -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>connect().use : (mod: connectModule) => connect.connectExport +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >connect() : connect.connectExport > : ^^^^^^^^^^^^^^^^^^^^^ >connect : { (): connect.connectExport; foo: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->use : (mod: connect.connectModule) => connect.connectExport -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>use : (mod: connectModule) => connect.connectExport +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >connect.static('foo') : any > : ^^^ >connect.static : any @@ -42,7 +42,7 @@ module server { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/exportEqualsDefaultProperty.types b/tests/baselines/reference/exportEqualsDefaultProperty.types index 9bd1c4e0df6f7..970bf66fb5288 100644 --- a/tests/baselines/reference/exportEqualsDefaultProperty.types +++ b/tests/baselines/reference/exportEqualsDefaultProperty.types @@ -34,11 +34,11 @@ foo.toExponential(2); >foo.toExponential(2) : string > : ^^^^^^ >foo.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >foo : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ diff --git a/tests/baselines/reference/exportEqualsOfModule.types b/tests/baselines/reference/exportEqualsOfModule.types index 82201a96ded88..2db2b3ebcfb55 100644 --- a/tests/baselines/reference/exportEqualsOfModule.types +++ b/tests/baselines/reference/exportEqualsOfModule.types @@ -52,6 +52,6 @@ declare module 'popsicle-proxy-agent' { export = proxy; >proxy : () => (request: Request) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ } diff --git a/tests/baselines/reference/exportImportCanSubstituteConstEnumForValue.types b/tests/baselines/reference/exportImportCanSubstituteConstEnumForValue.types index 8bb493ddcb602..73a6e079b5951 100644 --- a/tests/baselines/reference/exportImportCanSubstituteConstEnumForValue.types +++ b/tests/baselines/reference/exportImportCanSubstituteConstEnumForValue.types @@ -149,11 +149,11 @@ module MsPortalFx.ViewModels { >console.log(value1) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >value1 : ReExportedEnum.Cancel > : ^^^^^^^^^^^^^^^^^^^^^ @@ -171,11 +171,11 @@ module MsPortalFx.ViewModels { >console.log(value2) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >value2 : DialogButtons.OKCancel > : ^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/exportImportMultipleFiles.types b/tests/baselines/reference/exportImportMultipleFiles.types index b4a3295e47a7e..a48cac713405b 100644 --- a/tests/baselines/reference/exportImportMultipleFiles.types +++ b/tests/baselines/reference/exportImportMultipleFiles.types @@ -8,7 +8,7 @@ import lib = require('./exportImportMultipleFiles_library'); lib.math.add(3, 4); // Shouldnt be error >lib.math.add(3, 4) : any >lib.math.add : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >lib.math : typeof lib.math > : ^^^^^^^^^^^^^^^ >lib : typeof lib @@ -16,7 +16,7 @@ lib.math.add(3, 4); // Shouldnt be error >math : typeof lib.math > : ^^^^^^^^^^^^^^^ >add : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 @@ -25,7 +25,7 @@ lib.math.add(3, 4); // Shouldnt be error === exportImportMultipleFiles_math.ts === export function add(a, b) { return a + b; } >add : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >a : any >b : any >a + b : any @@ -40,11 +40,11 @@ export import math = require("exportImportMultipleFiles_math"); math.add(3, 4); // OK >math.add(3, 4) : any >math.add : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >math : typeof math > : ^^^^^^^^^^^ >add : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >3 : 3 > : ^ >4 : 4 diff --git a/tests/baselines/reference/exportNamespace12.types b/tests/baselines/reference/exportNamespace12.types index fcd41adeb8be8..03cf731b1bfa1 100644 --- a/tests/baselines/reference/exportNamespace12.types +++ b/tests/baselines/reference/exportNamespace12.types @@ -13,11 +13,11 @@ console.log(c) // Fails as expected, import is still allowed though. >console.log(c) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >c : 10 > : ^^ @@ -25,11 +25,11 @@ console.log(types.c) // Expected an error here. >console.log(types.c) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >types.c : any > : ^^^ >types : typeof types diff --git a/tests/baselines/reference/exportNestedNamespaces.types b/tests/baselines/reference/exportNestedNamespaces.types index 965267ccfb99d..78c5b2417684d 100644 --- a/tests/baselines/reference/exportNestedNamespaces.types +++ b/tests/baselines/reference/exportNestedNamespaces.types @@ -112,7 +112,7 @@ var classic = new s.Classic() @param {s.Classic} classic */ function f(c, classic) { >f : (c: K, classic: s.Classic) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >c : K > : ^ >classic : s.Classic diff --git a/tests/baselines/reference/exportNestedNamespaces2.types b/tests/baselines/reference/exportNestedNamespaces2.types index 055b17064583e..7aeba17b0d3e3 100644 --- a/tests/baselines/reference/exportNestedNamespaces2.types +++ b/tests/baselines/reference/exportNestedNamespaces2.types @@ -29,7 +29,7 @@ exports = require('./mod') exports.formatters.j = function (v) { >exports.formatters.j = function (v) { return v} : (v: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >exports.formatters.j : any > : ^^^ >exports.formatters : any @@ -41,7 +41,7 @@ exports.formatters.j = function (v) { >j : any > : ^^^ >function (v) { return v} : (v: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >v : any > : ^^^ @@ -64,7 +64,7 @@ exports = require('./mod') exports.formatters.o = function (v) { >exports.formatters.o = function (v) { return v} : (v: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >exports.formatters.o : any > : ^^^ >exports.formatters : any @@ -76,7 +76,7 @@ exports.formatters.o = function (v) { >o : any > : ^^^ >function (v) { return v} : (v: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >v : any > : ^^^ diff --git a/tests/baselines/reference/exportSpecifierAndExportedMemberDeclaration.types b/tests/baselines/reference/exportSpecifierAndExportedMemberDeclaration.types index 4cedac37686b5..0a4f434f579d4 100644 --- a/tests/baselines/reference/exportSpecifierAndExportedMemberDeclaration.types +++ b/tests/baselines/reference/exportSpecifierAndExportedMemberDeclaration.types @@ -16,7 +16,7 @@ declare module "m2" { >Y : () => any > : ^^^^^^^^^ >X : () => any -> : ^^^^^^^^^ +> : function Z(): X.I; >Z : () => X.I diff --git a/tests/baselines/reference/exportSpecifierAndLocalMemberDeclaration.types b/tests/baselines/reference/exportSpecifierAndLocalMemberDeclaration.types index 1166e17b3ee19..edb9147216f18 100644 --- a/tests/baselines/reference/exportSpecifierAndLocalMemberDeclaration.types +++ b/tests/baselines/reference/exportSpecifierAndLocalMemberDeclaration.types @@ -16,7 +16,7 @@ declare module "m2" { >Y : () => any > : ^^^^^^^^^ >X : () => any -> : ^^^^^^^^^ +> : function Z(): X.I; >Z : () => X.I diff --git a/tests/baselines/reference/exportSpellingSuggestion.types b/tests/baselines/reference/exportSpellingSuggestion.types index 8c27fe5a99b21..5dbafcfc7f806 100644 --- a/tests/baselines/reference/exportSpellingSuggestion.types +++ b/tests/baselines/reference/exportSpellingSuggestion.types @@ -3,7 +3,7 @@ === a.ts === export function assertNever(x: never, msg: string) { >assertNever : (x: never, msg: string) => void -> : ^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : never > : ^^^^^ >msg : string diff --git a/tests/baselines/reference/exportStarNotElided.types b/tests/baselines/reference/exportStarNotElided.types index e931794a7e422..210a7679af33d 100644 --- a/tests/baselines/reference/exportStarNotElided.types +++ b/tests/baselines/reference/exportStarNotElided.types @@ -9,30 +9,30 @@ const r: any[] = []; export function register(data: any) { >register : (data: any) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data : any r.push(data); >r.push(data) : number > : ^^^^^^ >r.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >r : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >data : any } === data1.ts === import { register } from "./"; >register : (data: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ register("ok"); >register("ok") : void > : ^^^^ >register : (data: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"ok" : "ok" > : ^^^^ diff --git a/tests/baselines/reference/exportTypeMergedWithExportStarAsNamespace.types b/tests/baselines/reference/exportTypeMergedWithExportStarAsNamespace.types index d9becc426a085..056684a9b95a1 100644 --- a/tests/baselines/reference/exportTypeMergedWithExportStarAsNamespace.types +++ b/tests/baselines/reference/exportTypeMergedWithExportStarAsNamespace.types @@ -11,11 +11,11 @@ export const myValue: Something = Something.of("abc") >Something.of("abc") : import("Something").Something > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Something.of : (value: A) => import("Something").Something -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Something : typeof import("Something") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >of : (value: A) => import("Something").Something -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"abc" : "abc" > : ^^^^^ @@ -40,7 +40,7 @@ export type SubType = { value: A } export declare function of(value: A): Something >of : (value: A) => Something -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : A > : ^ diff --git a/tests/baselines/reference/exportVisibility.types b/tests/baselines/reference/exportVisibility.types index 6434239850970..d0a247a089eca 100644 --- a/tests/baselines/reference/exportVisibility.types +++ b/tests/baselines/reference/exportVisibility.types @@ -16,7 +16,7 @@ export var foo = new Foo(); export function test(foo: Foo) { >test : (foo: Foo) => boolean -> : ^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.types b/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.types index d03f9baedad45..935afdee8bc0c 100644 --- a/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.types +++ b/tests/baselines/reference/exportedInterfaceInaccessibleInCallbackInModule.types @@ -13,13 +13,13 @@ export declare class TPromise { constructor(init:(complete: (value:V)=>void, error:(err:any)=>void, progress:ProgressCallback)=>void, oncancel?: any); >init : (complete: (value: V) => void, error: (err: any) => void, progress: ProgressCallback) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >complete : (value: V) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : V > : ^ >error : (err: any) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >err : any >progress : ProgressCallback > : ^^^^^^^^^^^^^^^^ @@ -28,13 +28,13 @@ export declare class TPromise { // removing this method fixes the error squiggle..... public then(success?: (value:V)=>TPromise, error?: (err:any)=>TPromise, progress?:ProgressCallback): TPromise; >then : (success?: (value: V) => TPromise, error?: (err: any) => TPromise, progress?: ProgressCallback) => TPromise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : (value: V) => TPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : V > : ^ >error : (err: any) => TPromise -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >err : any >progress : ProgressCallback > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/exportsAndImports3-amd.types b/tests/baselines/reference/exportsAndImports3-amd.types index 2db1dd72527e5..8dce719ee0c94 100644 --- a/tests/baselines/reference/exportsAndImports3-amd.types +++ b/tests/baselines/reference/exportsAndImports3-amd.types @@ -72,7 +72,7 @@ export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, >f : () => void > : ^^^^^^^^^^ >f1 : () => void -> : ^^^^^^^^^^ +> : >C : typeof C > : ^^^^^^^^ >C1 : typeof C @@ -115,7 +115,7 @@ export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof import("t1").C > : ^^^^^^^^^^^^^^^^^^^^^ >C : typeof import("t1").C @@ -158,7 +158,7 @@ import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof C > : ^^^^^^^^ >C : typeof C diff --git a/tests/baselines/reference/exportsAndImports3-es6.types b/tests/baselines/reference/exportsAndImports3-es6.types index 255d7190be20b..6c84b2f16efd8 100644 --- a/tests/baselines/reference/exportsAndImports3-es6.types +++ b/tests/baselines/reference/exportsAndImports3-es6.types @@ -72,7 +72,7 @@ export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, >f : () => void > : ^^^^^^^^^^ >f1 : () => void -> : ^^^^^^^^^^ +> : >C : typeof C > : ^^^^^^^^ >C1 : typeof C @@ -115,7 +115,7 @@ export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof import("t1").C > : ^^^^^^^^^^^^^^^^^^^^^ >C : typeof import("t1").C @@ -158,7 +158,7 @@ import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof C > : ^^^^^^^^ >C : typeof C diff --git a/tests/baselines/reference/exportsAndImports3.types b/tests/baselines/reference/exportsAndImports3.types index c228060b0bab8..ce3a6e97be51d 100644 --- a/tests/baselines/reference/exportsAndImports3.types +++ b/tests/baselines/reference/exportsAndImports3.types @@ -72,7 +72,7 @@ export { v as v1, f as f1, C as C1, I as I1, E as E1, D as D1, M as M1, N as N1, >f : () => void > : ^^^^^^^^^^ >f1 : () => void -> : ^^^^^^^^^^ +> : >C : typeof C > : ^^^^^^^^ >C1 : typeof C @@ -115,7 +115,7 @@ export { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof import("t1").C > : ^^^^^^^^^^^^^^^^^^^^^ >C : typeof import("t1").C @@ -158,7 +158,7 @@ import { v1 as v, f1 as f, C1 as C, I1 as I, E1 as E, D1 as D, M1 as M, N1 as N, >f1 : () => void > : ^^^^^^^^^^ >f : () => void -> : ^^^^^^^^^^ +> : >C1 : typeof C > : ^^^^^^^^ >C : typeof C diff --git a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.types b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.types index 62f1c32b60163..e6e833a6577e6 100644 --- a/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.types +++ b/tests/baselines/reference/exportsAndImportsWithContextualKeywordNames01.types @@ -36,7 +36,7 @@ import { set as yield } from "./t1"; >set : { foo: number; } > : ^^^^^^^^^^^^^^^^ >yield : { foo: number; } -> : ^^^^^^^^^^^^^^^^ +> : === t4.ts === import { get } from "./t1"; diff --git a/tests/baselines/reference/expressionTypeNodeShouldError.types b/tests/baselines/reference/expressionTypeNodeShouldError.types index ba93245788d75..f4e85a0f9f80a 100644 --- a/tests/baselines/reference/expressionTypeNodeShouldError.types +++ b/tests/baselines/reference/expressionTypeNodeShouldError.types @@ -15,7 +15,7 @@ declare const x: "foo".charCodeAt(0); interface String { typeof(x: T): T; >typeof : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -50,11 +50,11 @@ const nodes = document.getElementsByTagName("li"); >document.getElementsByTagName("li") : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document.getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document : Document > : ^^^^^^^^ >getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"li" : "li" > : ^^^^ @@ -68,11 +68,11 @@ type ItemType = "".typeof(nodes.item(0)); >nodes.item(0) : HTMLLIElement > : ^^^^^^^^^^^^^ >nodes.item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >nodes : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -80,7 +80,7 @@ type ItemType = "".typeof(nodes.item(0)); interface Number { typeof(x: T): T; >typeof : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -115,11 +115,11 @@ const nodes2 = document.getElementsByTagName("li"); >document.getElementsByTagName("li") : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document.getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document : Document > : ^^^^^^^^ >getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"li" : "li" > : ^^^^ @@ -133,11 +133,11 @@ type ItemType2 = 4..typeof(nodes.item(0)); >nodes.item(0) : HTMLLIElement > : ^^^^^^^^^^^^^ >nodes.item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >nodes : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ @@ -145,7 +145,7 @@ type ItemType2 = 4..typeof(nodes.item(0)); interface Boolean { typeof(x: T): T; >typeof : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -182,11 +182,11 @@ const nodes3 = document.getElementsByTagName("li"); >document.getElementsByTagName("li") : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document.getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >document : Document > : ^^^^^^^^ >getElementsByTagName : { (qualifiedName: K): HTMLCollectionOf; (qualifiedName: K_1): HTMLCollectionOf; (qualifiedName: K_2): HTMLCollectionOf; (qualifiedName: K_3): HTMLCollectionOf; (qualifiedName: string): HTMLCollectionOf; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"li" : "li" > : ^^^^ @@ -202,11 +202,11 @@ type ItemType3 = true.typeof(nodes.item(0)); >nodes.item(0) : HTMLLIElement > : ^^^^^^^^^^^^^ >nodes.item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >nodes : HTMLCollectionOf > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : (index: number) => HTMLLIElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/expressionWithJSDocTypeArguments.types b/tests/baselines/reference/expressionWithJSDocTypeArguments.types index 17790fc9e5e8b..c20371ed5b9a1 100644 --- a/tests/baselines/reference/expressionWithJSDocTypeArguments.types +++ b/tests/baselines/reference/expressionWithJSDocTypeArguments.types @@ -5,7 +5,7 @@ function foo(x: T): T { return x } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -21,89 +21,89 @@ class Bar { constructor(public x: T) { } } const WhatFoo = foo; >WhatFoo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const HuhFoo = foo; >HuhFoo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const NopeFoo = foo; >NopeFoo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const ComeOnFoo = foo; >ComeOnFoo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: string | null) => string | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ type TWhatFoo = typeof foo; >TWhatFoo : typeof foo > : ^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ type THuhFoo = typeof foo; >THuhFoo : typeof foo > : ^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ type TNopeFoo = typeof foo; >TNopeFoo : typeof foo > : ^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ type TComeOnFoo = typeof foo; >TComeOnFoo : typeof foo<(string | null) | null> > : ^ ^^^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const WhatBar = Bar; >WhatBar : { new (x: any): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : { new (x: any): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : typeof Bar > : ^^^^^^^^^^ const HuhBar = Bar; >HuhBar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : typeof Bar > : ^^^^^^^^^^ const NopeBar = Bar; >NopeBar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : typeof Bar > : ^^^^^^^^^^ const ComeOnBar = Bar; >ComeOnBar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : { new (x: string | null): Bar; prototype: Bar; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : typeof Bar > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/expressionsForbiddenInParameterInitializers.types b/tests/baselines/reference/expressionsForbiddenInParameterInitializers.types index 0af8245702216..e69740ec37a5b 100644 --- a/tests/baselines/reference/expressionsForbiddenInParameterInitializers.types +++ b/tests/baselines/reference/expressionsForbiddenInParameterInitializers.types @@ -3,7 +3,7 @@ === bar.ts === export async function foo({ foo = await import("./bar") }) { >foo : ({ foo }: { foo?: typeof import("bar"); }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : typeof import("bar") > : ^^^^^^^^^^^^^^^^^^^^ >await import("./bar") : typeof import("bar") @@ -16,7 +16,7 @@ export async function foo({ foo = await import("./bar") }) { export function* foo2({ foo = yield "a" }) { >foo2 : ({ foo }: { foo?: any; }) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : any > : ^^^ >yield "a" : any diff --git a/tests/baselines/reference/extendArray.types b/tests/baselines/reference/extendArray.types index b2143b52492b1..63b87fa375163 100644 --- a/tests/baselines/reference/extendArray.types +++ b/tests/baselines/reference/extendArray.types @@ -15,13 +15,13 @@ a.forEach(function (v,i,a) {}); >a.forEach(function (v,i,a) {}) : void > : ^^^^ >a.forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >a : number[] > : ^^^^^^^^ >forEach : (callbackfn: (value: number, index: number, array: number[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >function (v,i,a) {} : (v: number, i: number, a: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >i : number @@ -34,9 +34,9 @@ declare module _Core { interface Array { collect(fn:(e:_element) => _element[]) : any[]; >collect : (fn: (e: _element) => _element[]) => any[] -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >fn : (e: _element) => _element[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >e : _element > : ^^^^^^^^ } @@ -59,7 +59,7 @@ var arr = (Array).prototype; arr.collect = function (fn) { >arr.collect = function (fn) { var res = []; for (var i = 0; i < this.length; ++i) { var tmp = fn(this[i]); for (var j = 0; j < tmp.length; ++j) { res.push(tmp[j]); } } return res;} : (fn: any) => any[] -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >arr.collect : any > : ^^^ >arr : any @@ -67,7 +67,7 @@ arr.collect = function (fn) { >collect : any > : ^^^ >function (fn) { var res = []; for (var i = 0; i < this.length; ++i) { var tmp = fn(this[i]); for (var j = 0; j < tmp.length; ++j) { res.push(tmp[j]); } } return res;} : (fn: any) => any[] -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >fn : any > : ^^^ @@ -135,11 +135,11 @@ arr.collect = function (fn) { >res.push(tmp[j]) : number > : ^^^^^^ >res.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >res : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >tmp[j] : any > : ^^^ >tmp : any diff --git a/tests/baselines/reference/extendBooleanInterface.types b/tests/baselines/reference/extendBooleanInterface.types index 48d795918cb65..1e6cdff740717 100644 --- a/tests/baselines/reference/extendBooleanInterface.types +++ b/tests/baselines/reference/extendBooleanInterface.types @@ -8,7 +8,7 @@ interface Boolean { doOtherStuff(x: T): T; >doOtherStuff : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -37,11 +37,11 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff('hm') : "hm" > : ^^^^ >x.doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : true > : ^^^^ >doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >'hm' : "hm" > : ^^^^ @@ -63,7 +63,7 @@ var d: string = x['doOtherStuff']('hm'); >x['doOtherStuff']('hm') : "hm" > : ^^^^ >x['doOtherStuff'] : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : true > : ^^^^ >'doOtherStuff' : "doOtherStuff" diff --git a/tests/baselines/reference/extendGlobalThis.types b/tests/baselines/reference/extendGlobalThis.types index 9e5e38407beab..151bf14d76c3d 100644 --- a/tests/baselines/reference/extendGlobalThis.types +++ b/tests/baselines/reference/extendGlobalThis.types @@ -35,15 +35,15 @@ console.log(globalThis.test.split("-")); >console.log(globalThis.test.split("-")) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >globalThis.test.split("-") : string[] > : ^^^^^^^^ >globalThis.test.split : (separator: string | RegExp, limit?: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >globalThis.test : string > : ^^^^^^ >globalThis : typeof globalThis @@ -51,7 +51,7 @@ console.log(globalThis.test.split("-")); >test : string > : ^^^^^^ >split : (separator: string | RegExp, limit?: number) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ >"-" : "-" > : ^^^ diff --git a/tests/baselines/reference/extendGlobalThis2.types b/tests/baselines/reference/extendGlobalThis2.types index 0cea362f82966..7e1d7e93edf37 100644 --- a/tests/baselines/reference/extendGlobalThis2.types +++ b/tests/baselines/reference/extendGlobalThis2.types @@ -11,11 +11,11 @@ namespace globalThis { >console.log("x") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"x" : "x" > : ^^^ } diff --git a/tests/baselines/reference/extendNumberInterface.types b/tests/baselines/reference/extendNumberInterface.types index 5d4a75ce038c7..a5ef30fb43698 100644 --- a/tests/baselines/reference/extendNumberInterface.types +++ b/tests/baselines/reference/extendNumberInterface.types @@ -8,7 +8,7 @@ interface Number { doOtherStuff(x:T): T; >doOtherStuff : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -37,11 +37,11 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff('hm') : "hm" > : ^^^^ >x.doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : number > : ^^^^^^ >doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >'hm' : "hm" > : ^^^^ @@ -63,7 +63,7 @@ var d: string = x['doOtherStuff']('hm'); >x['doOtherStuff']('hm') : "hm" > : ^^^^ >x['doOtherStuff'] : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : number > : ^^^^^^ >'doOtherStuff' : "doOtherStuff" diff --git a/tests/baselines/reference/extendStringInterface.types b/tests/baselines/reference/extendStringInterface.types index 313604556ffbe..de6ff9d2f32ad 100644 --- a/tests/baselines/reference/extendStringInterface.types +++ b/tests/baselines/reference/extendStringInterface.types @@ -8,7 +8,7 @@ interface String { doOtherStuff(x:T): T; >doOtherStuff : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -37,11 +37,11 @@ var b: string = x.doOtherStuff('hm'); >x.doOtherStuff('hm') : "hm" > : ^^^^ >x.doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : string > : ^^^^^^ >doOtherStuff : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >'hm' : "hm" > : ^^^^ @@ -63,7 +63,7 @@ var d: string = x['doOtherStuff']('hm'); >x['doOtherStuff']('hm') : "hm" > : ^^^^ >x['doOtherStuff'] : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : string > : ^^^^^^ >'doOtherStuff' : "doOtherStuff" diff --git a/tests/baselines/reference/extendedInterfaceGenericType.types b/tests/baselines/reference/extendedInterfaceGenericType.types index c8f949b779e7c..7dc93aab4fa1f 100644 --- a/tests/baselines/reference/extendedInterfaceGenericType.types +++ b/tests/baselines/reference/extendedInterfaceGenericType.types @@ -4,7 +4,7 @@ interface Alpha { takesArgOfT(arg: T): Alpha; >takesArgOfT : (arg: T) => Alpha -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ @@ -35,11 +35,11 @@ betaOfNumber.takesArgOfT(5); >betaOfNumber.takesArgOfT(5) : Alpha > : ^^^^^^^^^^^^^ >betaOfNumber.takesArgOfT : (arg: number) => Alpha -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >betaOfNumber : Beta > : ^^^^^^^^^^^^ >takesArgOfT : (arg: number) => Alpha -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/extendedUnicodeEscapeSequenceIdentifiers.types b/tests/baselines/reference/extendedUnicodeEscapeSequenceIdentifiers.types index 2675acf2d2290..b495223eed0fa 100644 --- a/tests/baselines/reference/extendedUnicodeEscapeSequenceIdentifiers.types +++ b/tests/baselines/reference/extendedUnicodeEscapeSequenceIdentifiers.types @@ -17,11 +17,11 @@ console.log(a + aa); >console.log(a + aa) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a + aa : number > : ^^^^^^ >a : 12 diff --git a/tests/baselines/reference/extendedUnicodePlaneIdentifiers.types b/tests/baselines/reference/extendedUnicodePlaneIdentifiers.types index b6a0188250644..38ff13f052160 100644 --- a/tests/baselines/reference/extendedUnicodePlaneIdentifiers.types +++ b/tests/baselines/reference/extendedUnicodePlaneIdentifiers.types @@ -17,11 +17,11 @@ console.log(𝑀 + 𝑚); // 9 >console.log(𝑀 + 𝑚) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >𝑀 + 𝑚 : number > : ^^^^^^ >𝑀 : 5 @@ -57,11 +57,11 @@ console.log(ၡ ** ၡ); >console.log(ၡ ** ၡ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ၡ ** ၡ : number > : ^^^^^^ >ၡ : 6 @@ -80,11 +80,11 @@ console.log(ဒ ** ဒ); >console.log(ဒ ** ဒ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ဒ ** ဒ : number > : ^^^^^^ >ဒ : 7 @@ -103,11 +103,11 @@ console.log(ဒၡ𝑀 ** ဒၡ𝑀); >console.log(ဒၡ𝑀 ** ဒၡ𝑀) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ဒၡ𝑀 ** ဒၡ𝑀 : number > : ^^^^^^ >ဒၡ𝑀 : 7 @@ -125,11 +125,11 @@ console.log(ၡ𝑀ဒ ** ၡ𝑀ဒ); >console.log(ၡ𝑀ဒ ** ၡ𝑀ဒ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ၡ𝑀ဒ ** ၡ𝑀ဒ : number > : ^^^^^^ >ၡ𝑀ဒ : 7 @@ -147,11 +147,11 @@ console.log(𝑀ဒၡ ** 𝑀ဒၡ); >console.log(𝑀ဒၡ ** 𝑀ဒၡ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >𝑀ဒၡ ** 𝑀ဒၡ : number > : ^^^^^^ >𝑀ဒၡ : 7 diff --git a/tests/baselines/reference/extendedUnicodePlaneIdentifiersJSDoc.types b/tests/baselines/reference/extendedUnicodePlaneIdentifiersJSDoc.types index 191b25e8e14b7..75045a304930f 100644 --- a/tests/baselines/reference/extendedUnicodePlaneIdentifiersJSDoc.types +++ b/tests/baselines/reference/extendedUnicodePlaneIdentifiersJSDoc.types @@ -8,7 +8,7 @@ */ function foo(𝑚, 𝑀) { >foo : (𝑚: number, 𝑀: number) => void -> : ^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >𝑚 : number > : ^^^^^^ >𝑀 : number @@ -18,11 +18,11 @@ function foo(𝑚, 𝑀) { >console.log(𝑀 + 𝑚) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >𝑀 + 𝑚 : number > : ^^^^^^ >𝑀 : number diff --git a/tests/baselines/reference/externFunc.types b/tests/baselines/reference/externFunc.types index 12b32493de38c..72eea471afe6d 100644 --- a/tests/baselines/reference/externFunc.types +++ b/tests/baselines/reference/externFunc.types @@ -3,7 +3,7 @@ === externFunc.ts === declare function parseInt(s:string):number; >parseInt : { (string: string, radix?: number): number; (s: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ @@ -11,7 +11,7 @@ parseInt("2"); >parseInt("2") : number > : ^^^^^^ >parseInt : { (string: string, radix?: number): number; (s: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >"2" : "2" > : ^^^ diff --git a/tests/baselines/reference/externModule.types b/tests/baselines/reference/externModule.types index 08c504c9139cf..38272266d1916 100644 --- a/tests/baselines/reference/externModule.types +++ b/tests/baselines/reference/externModule.types @@ -99,13 +99,13 @@ declare module { static parse(string: string): number; >parse : (string: string) => number -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >string : string > : ^^^^^^ static UTC(year: number, month: number): number; >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >year : number > : ^^^^^^ >month : number @@ -113,7 +113,7 @@ declare module { static UTC(year: number, month: number, date: number): number; >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >year : number > : ^^^^^^ >month : number @@ -123,7 +123,7 @@ declare module { static UTC(year: number, month: number, date: number, hours: number): number; >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >year : number > : ^^^^^^ >month : number @@ -135,7 +135,7 @@ declare module { static UTC(year: number, month: number, date: number, hours: number, minutes: number): number; >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >year : number > : ^^^^^^ >month : number @@ -149,7 +149,7 @@ declare module { static UTC(year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >year : number > : ^^^^^^ >month : number @@ -165,7 +165,7 @@ declare module { static UTC(year: number, month: number, date: number, hours: number, minutes: number, seconds: number, >UTC : { (year: number, month: number): number; (year: number, month: number, date: number): number; (year: number, month: number, date: number, hours: number): number; (year: number, month: number, date: number, hours: number, minutes: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number): number; (year: number, month: number, date: number, hours: number, minutes: number, seconds: number, ms: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >year : number > : ^^^^^^ >month : number diff --git a/tests/baselines/reference/externalModuleQualification.types b/tests/baselines/reference/externalModuleQualification.types index 6770d248cd942..34a718e5ea57f 100644 --- a/tests/baselines/reference/externalModuleQualification.types +++ b/tests/baselines/reference/externalModuleQualification.types @@ -28,7 +28,7 @@ class NavigateAction { f(editor: DiffEditor) { >f : (editor: DiffEditor) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >editor : DiffEditor > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/extractInferenceImprovement.types b/tests/baselines/reference/extractInferenceImprovement.types index 29c18ed892048..0fce0882b3b9e 100644 --- a/tests/baselines/reference/extractInferenceImprovement.types +++ b/tests/baselines/reference/extractInferenceImprovement.types @@ -4,7 +4,7 @@ // repro mostly from https://github.com/Microsoft/TypeScript/issues/25065 function getProperty2(obj: T, key: Extract): T[K] { >getProperty2 : (obj: T, key: Extract) => T[K] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >key : Extract @@ -21,7 +21,7 @@ function getProperty2(obj: T, key: Extract): T[ function getProperty3>(obj: T, key: K): T[K] { >getProperty3 : >(obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >key : K @@ -80,7 +80,7 @@ prop = getProperty2(obj, 'first'); >getProperty2(obj, 'first') : string > : ^^^^^^ >getProperty2 : (obj: T, key: Extract) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : StrNum > : ^^^^^^ >'first' : "first" @@ -94,7 +94,7 @@ prop = getProperty3(obj, 'first'); >getProperty3(obj, 'first') : string > : ^^^^^^ >getProperty3 : >(obj: T, key: K) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : StrNum > : ^^^^^^ >'first' : "first" @@ -109,7 +109,7 @@ prop = getProperty2(obj, s); >getProperty2(obj, s) : string > : ^^^^^^ >getProperty2 : (obj: T, key: Extract) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : StrNum > : ^^^^^^ >s : unique symbol @@ -123,7 +123,7 @@ prop = getProperty3(obj, s); >getProperty3(obj, s) : string | number > : ^^^^^^^^^^^^^^^ >getProperty3 : >(obj: T, key: K) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : StrNum > : ^^^^^^ >s : unique symbol diff --git a/tests/baselines/reference/fallFromLastCase1.types b/tests/baselines/reference/fallFromLastCase1.types index 46e93c73ae0e2..f19ed69dd83b9 100644 --- a/tests/baselines/reference/fallFromLastCase1.types +++ b/tests/baselines/reference/fallFromLastCase1.types @@ -3,13 +3,13 @@ === fallFromLastCase1.ts === declare function use(a: string); >use : (a: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : string > : ^^^^^^ function foo1(a: number) { >foo1 : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -24,7 +24,7 @@ function foo1(a: number) { use("1"); >use("1") : any >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"1" : "1" > : ^^^ @@ -36,7 +36,7 @@ function foo1(a: number) { use("2"); >use("2") : any >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"2" : "2" > : ^^^ } @@ -45,7 +45,7 @@ function foo1(a: number) { function foo2(a: number) { >foo2 : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -60,7 +60,7 @@ function foo2(a: number) { use("1"); >use("1") : any >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"1" : "1" > : ^^^ @@ -69,7 +69,7 @@ function foo2(a: number) { use("2"); >use("2") : any >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"2" : "2" > : ^^^ } diff --git a/tests/baselines/reference/fallFromLastCase2.types b/tests/baselines/reference/fallFromLastCase2.types index 72b9fa2009080..8ad4ce3c549e6 100644 --- a/tests/baselines/reference/fallFromLastCase2.types +++ b/tests/baselines/reference/fallFromLastCase2.types @@ -3,13 +3,13 @@ === fallFromLastCase2.ts === declare function use(a: string); >use : (a: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : string > : ^^^^^^ function foo1(a: number) { >foo1 : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -25,7 +25,7 @@ function foo1(a: number) { >use("1") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"1" : "1" > : ^^^ @@ -38,7 +38,7 @@ function foo1(a: number) { >use("2") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"2" : "2" > : ^^^ @@ -50,7 +50,7 @@ function foo1(a: number) { >use("3") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"3" : "3" > : ^^^ } @@ -59,7 +59,7 @@ function foo1(a: number) { function foo2(a: number) { >foo2 : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -75,7 +75,7 @@ function foo2(a: number) { >use("1") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"1" : "1" > : ^^^ @@ -85,7 +85,7 @@ function foo2(a: number) { >use("2") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"2" : "2" > : ^^^ @@ -97,7 +97,7 @@ function foo2(a: number) { >use("3") : any > : ^^^ >use : (a: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"3" : "3" > : ^^^ } diff --git a/tests/baselines/reference/fallbackToBindingPatternForTypeInference.types b/tests/baselines/reference/fallbackToBindingPatternForTypeInference.types index 4296b40d44512..d0a18dea10ddb 100644 --- a/tests/baselines/reference/fallbackToBindingPatternForTypeInference.types +++ b/tests/baselines/reference/fallbackToBindingPatternForTypeInference.types @@ -3,9 +3,9 @@ === fallbackToBindingPatternForTypeInference.ts === declare function trans(f: (x: T) => string): number; >trans : (f: (x: T) => string) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >f : (x: T) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -13,9 +13,9 @@ trans(({a}) => a); >trans(({a}) => a) : number > : ^^^^^^ >trans : (f: (x: T) => string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >({a}) => a : ({ a }: { a: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any @@ -24,9 +24,9 @@ trans(([b,c]) => 'foo'); >trans(([b,c]) => 'foo') : number > : ^^^^^^ >trans : (f: (x: T) => string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >([b,c]) => 'foo' : ([b, c]: [any, any]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >b : any > : ^^^ >c : any @@ -38,9 +38,9 @@ trans(({d: [e,f]}) => 'foo'); >trans(({d: [e,f]}) => 'foo') : number > : ^^^^^^ >trans : (f: (x: T) => string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >({d: [e,f]}) => 'foo' : ({ d: [e, f] }: { d: [any, any]; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : any > : ^^^ >e : any @@ -54,9 +54,9 @@ trans(([{g},{h}]) => 'foo'); >trans(([{g},{h}]) => 'foo') : number > : ^^^^^^ >trans : (f: (x: T) => string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >([{g},{h}]) => 'foo' : ([{ g }, { h }]: [{ g: any; }, { h: any; }]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : any > : ^^^ >h : any @@ -68,9 +68,9 @@ trans(({a, b = 10}) => a); >trans(({a, b = 10}) => a) : number > : ^^^^^^ >trans : (f: (x: T) => string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >({a, b = 10}) => a : ({ a, b }: { a: any; b?: number; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : number diff --git a/tests/baselines/reference/fatArrowSelf.types b/tests/baselines/reference/fatArrowSelf.types index 8cb9c44ce07d3..d44dd396826d2 100644 --- a/tests/baselines/reference/fatArrowSelf.types +++ b/tests/baselines/reference/fatArrowSelf.types @@ -15,7 +15,7 @@ module Events { public addListener(type:string, listener:ListenerCallback) { >addListener : (type: string, listener: ListenerCallback) => void -> : ^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >type : string > : ^^^^^^ >listener : ListenerCallback @@ -45,20 +45,20 @@ module Consumer { this.emitter.addListener('change', (e) => { >this.emitter.addListener('change', (e) => { this.changed(); }) : void > : ^^^^ ->this.emitter.addListener : (type: string, listener: Events.ListenerCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.emitter.addListener : (type: string, listener: ListenerCallback) => void +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >this.emitter : Events.EventEmitter > : ^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >emitter : Events.EventEmitter > : ^^^^^^^^^^^^^^^^^^^ ->addListener : (type: string, listener: Events.ListenerCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>addListener : (type: string, listener: ListenerCallback) => void +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'change' : "change" > : ^^^^^^^^ >(e) => { this.changed(); } : (e: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >e : any this.changed(); diff --git a/tests/baselines/reference/fatArrowfunctionAsType.types b/tests/baselines/reference/fatArrowfunctionAsType.types index 1bb3027c8373d..8aaaf772d640b 100644 --- a/tests/baselines/reference/fatArrowfunctionAsType.types +++ b/tests/baselines/reference/fatArrowfunctionAsType.types @@ -3,17 +3,17 @@ === fatArrowfunctionAsType.ts === declare var b: (x: T) => void ; >b : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var c: (x: T) => void = function (x: T) { return 42; } >c : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >function (x: T) { return 42; } : (x: T) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >42 : 42 @@ -21,9 +21,9 @@ var c: (x: T) => void = function (x: T) { return 42; } b = c; >b = c : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >b : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >c : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/fatarrowfunctions.types b/tests/baselines/reference/fatarrowfunctions.types index 60a6c71161d67..561382599a8e3 100644 --- a/tests/baselines/reference/fatarrowfunctions.types +++ b/tests/baselines/reference/fatarrowfunctions.types @@ -3,7 +3,7 @@ === fatarrowfunctions.ts === function foo(x:any) { >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any return x(); @@ -15,9 +15,9 @@ function foo(x:any) { foo((x:number,y,z)=>{return x+y+z;}); >foo((x:number,y,z)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x:number,y,z)=>{return x+y+z;} : (x: number, y: any, z: any) => any -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : any @@ -32,9 +32,9 @@ foo((x:number,y,z)=>{return x+y+z;}); foo((x,y,z)=>{return x+y+z;}); >foo((x,y,z)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y,z)=>{return x+y+z;} : (x: any, y: any, z: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^ >x : any >y : any >z : any @@ -47,9 +47,9 @@ foo((x,y,z)=>{return x+y+z;}); foo((x,y:number,z)=>{return x+y+z;}); >foo((x,y:number,z)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y:number,z)=>{return x+y+z;} : (x: any, y: number, z: any) => any -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x : any >y : number > : ^^^^^^ @@ -64,9 +64,9 @@ foo((x,y:number,z)=>{return x+y+z;}); foo((x,y:number,z:number)=>{return x+y+z;}); >foo((x,y:number,z:number)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y:number,z:number)=>{return x+y+z;} : (x: any, y: number, z: number) => any -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^ >x : any >y : number > : ^^^^^^ @@ -83,9 +83,9 @@ foo((x,y:number,z:number)=>{return x+y+z;}); foo((x,y,z:number)=>{return x+y+z;}); >foo((x,y,z:number)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y,z:number)=>{return x+y+z;} : (x: any, y: any, z: number) => any -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^ ^^^^^^^^ >x : any >y : any >z : number @@ -100,7 +100,7 @@ foo((x,y,z:number)=>{return x+y+z;}); foo(()=>{return 0;}); >foo(()=>{return 0;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >()=>{return 0;} : () => number > : ^^^^^^^^^^^^ >0 : 0 @@ -109,9 +109,9 @@ foo(()=>{return 0;}); foo((x:number,y,z)=>x+y+z); >foo((x:number,y,z)=>x+y+z) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x:number,y,z)=>x+y+z : (x: number, y: any, z: any) => any -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : any @@ -126,9 +126,9 @@ foo((x:number,y,z)=>x+y+z); foo((x,y,z)=>x+y+z); >foo((x,y,z)=>x+y+z) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y,z)=>x+y+z : (x: any, y: any, z: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^ >x : any >y : any >z : any @@ -141,9 +141,9 @@ foo((x,y,z)=>x+y+z); foo((x,y:number,z)=>{return x+y+z;}); >foo((x,y:number,z)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y:number,z)=>{return x+y+z;} : (x: any, y: number, z: any) => any -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >x : any >y : number > : ^^^^^^ @@ -158,9 +158,9 @@ foo((x,y:number,z)=>{return x+y+z;}); foo((x,y:number,z:number)=>{return x+y+z;}); >foo((x,y:number,z:number)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y:number,z:number)=>{return x+y+z;} : (x: any, y: number, z: number) => any -> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^ >x : any >y : number > : ^^^^^^ @@ -177,9 +177,9 @@ foo((x,y:number,z:number)=>{return x+y+z;}); foo((x,y,z:number)=>{return x+y+z;}); >foo((x,y,z:number)=>{return x+y+z;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x,y,z:number)=>{return x+y+z;} : (x: any, y: any, z: number) => any -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^ ^^^^^^^^ >x : any >y : any >z : number @@ -194,7 +194,7 @@ foo((x,y,z:number)=>{return x+y+z;}); foo(()=>{return 0;}); >foo(()=>{return 0;}) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >()=>{return 0;} : () => number > : ^^^^^^^^^^^^ >0 : 0 @@ -204,20 +204,20 @@ foo(()=>{return 0;}); foo(((x) => x)); >foo(((x) => x)) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >((x) => x) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any foo(x => x*x); >foo(x => x*x) : any >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x => x*x : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any >x*x : number > : ^^^^^^ @@ -226,9 +226,9 @@ foo(x => x*x); var y = x => x*x; >y : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x => x*x : (x: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >x : any >x*x : number > : ^^^^^^ @@ -237,9 +237,9 @@ var y = x => x*x; var z = (x:number) => x*x; >z : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x:number) => x*x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x*x : number @@ -253,25 +253,25 @@ var w = () => 3; >w : () => number > : ^^^^^^^^^^^^ >() => 3 : () => number -> : ^^^^^^^^^^^^ +> : >3 : 3 > : ^ function ternaryTest(isWhile:boolean) { >ternaryTest : (isWhile: boolean) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >isWhile : boolean > : ^^^^^^^ var f = isWhile ? function (n) { return n > 0; } : function (n) { return n === 0; }; >f : (n: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >isWhile ? function (n) { return n > 0; } : function (n) { return n === 0; } : (n: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : >isWhile : boolean > : ^^^^^^^ >function (n) { return n > 0; } : (n: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >n : any >n > 0 : boolean > : ^^^^^^^ @@ -279,7 +279,7 @@ function ternaryTest(isWhile:boolean) { >0 : 0 > : ^ >function (n) { return n === 0; } : (n: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >n : any >n === 0 : boolean > : ^^^^^^^ @@ -291,7 +291,7 @@ function ternaryTest(isWhile:boolean) { declare function setTimeout(expression: any, msec?: number, language?: any): number; >setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >expression : any >msec : number > : ^^^^^^ @@ -301,7 +301,7 @@ var messenger = { >messenger : { message: string; start: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ message: "Hello World", start: function() { setTimeout(() => { this.message.toString(); }, 3000); }} : { message: string; start: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ message: "Hello World", >message : string @@ -313,13 +313,13 @@ var messenger = { >start : () => void > : ^^^^^^^^^^ >function() { setTimeout(() => { this.message.toString(); }, 3000); } : () => void -> : ^^^^^^^^^^ +> : setTimeout(() => { this.message.toString(); }, 3000); >setTimeout(() => { this.message.toString(); }, 3000) : number > : ^^^^^^ >setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >() => { this.message.toString(); } : () => void > : ^^^^^^^^^^ >this.message.toString() : any diff --git a/tests/baselines/reference/fatarrowfunctionsErrors.types b/tests/baselines/reference/fatarrowfunctionsErrors.types index f00e9069092d9..52e9ed9ff6946 100644 --- a/tests/baselines/reference/fatarrowfunctionsErrors.types +++ b/tests/baselines/reference/fatarrowfunctionsErrors.types @@ -7,7 +7,7 @@ foo((...Far:any[])=>{return 0;}) >foo : any > : ^^^ >(...Far:any[])=>{return 0;} : (...Far: any[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >Far : any[] > : ^^^^^ >0 : 0 @@ -35,7 +35,7 @@ foo((x?)=>{return x;}) >foo : any > : ^^^ >(x?)=>{return x;} : (x?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -47,7 +47,7 @@ foo((x=0)=>{return x;}) >foo : any > : ^^^ >(x=0)=>{return x;} : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -84,29 +84,29 @@ var x1 = () :void {}; >x1 : () => void > : ^^^^^^ >() :void {} : () => void -> : ^^^^^^ +> : var x2 = (a:number) :void {}; >x2 : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(a:number) :void {} : (a: number) => void -> : ^^^^ ^^^^^ +> : >a : number > : ^^^^^^ var x3 = (a:number) {}; >x3 : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a:number) {} : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : >a : number > : ^^^^^^ var x4= (...a: any[]) { }; >x4 : (...a: any[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >(...a: any[]) { } : (...a: any[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^ >a : any[] > : ^^^^^ diff --git a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types index 5599568486393..28af5299643e8 100644 --- a/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types +++ b/tests/baselines/reference/fatarrowfunctionsInFunctionParameterDefaults.types @@ -3,11 +3,11 @@ === fatarrowfunctionsInFunctionParameterDefaults.ts === function fn(x = () => this, y = x()) { >fn : (x?: () => any, y?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >x : () => any > : ^^^^^^^^^ >() => this : () => any -> : ^^^^^^^^^ +> : >this : any >y : any >x() : any @@ -23,11 +23,11 @@ function fn(x = () => this, y = x()) { fn.call(4); // Should be 4 >fn.call(4) : any >fn.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >fn : (x?: () => any, y?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >4 : 4 > : ^ diff --git a/tests/baselines/reference/fatarrowfunctionsInFunctions.types b/tests/baselines/reference/fatarrowfunctionsInFunctions.types index 26c0352b6190b..cf873a928dbb7 100644 --- a/tests/baselines/reference/fatarrowfunctionsInFunctions.types +++ b/tests/baselines/reference/fatarrowfunctionsInFunctions.types @@ -3,7 +3,7 @@ === fatarrowfunctionsInFunctions.ts === declare function setTimeout(expression: any, msec?: number, language?: any): number; >setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >expression : any >msec : number > : ^^^^^^ @@ -13,7 +13,7 @@ var messenger = { >messenger : { message: string; start: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ message: "Hello World", start: function() { var _self = this; setTimeout(function() { _self.message.toString(); }, 3000); }} : { message: string; start: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ message: "Hello World", >message : string @@ -25,7 +25,7 @@ var messenger = { >start : () => void > : ^^^^^^^^^^ >function() { var _self = this; setTimeout(function() { _self.message.toString(); }, 3000); } : () => void -> : ^^^^^^^^^^ +> : var _self = this; >_self : any @@ -35,7 +35,7 @@ var messenger = { >setTimeout(function() { _self.message.toString(); }, 3000) : number > : ^^^^^^ >setTimeout : { (handler: TimerHandler, timeout?: number, ...arguments: any[]): number; (expression: any, msec?: number, language?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >function() { _self.message.toString(); } : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/fatarrowfunctionsOptionalArgs.types b/tests/baselines/reference/fatarrowfunctionsOptionalArgs.types index ca9daefa032f1..789ae0f39331f 100644 --- a/tests/baselines/reference/fatarrowfunctionsOptionalArgs.types +++ b/tests/baselines/reference/fatarrowfunctionsOptionalArgs.types @@ -13,7 +13,7 @@ // one param, no type (arg) => 2; >(arg) => 2 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >2 : 2 @@ -22,7 +22,7 @@ // one param, no type arg => 2; >arg => 2 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >2 : 2 @@ -31,7 +31,7 @@ arg => 2; // one param, no type with default value (arg = 1) => 3; >(arg = 1) => 3 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -42,7 +42,7 @@ arg => 2; // one param, no type, optional (arg?) => 4; >(arg?) => 4 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >4 : 4 @@ -51,7 +51,7 @@ arg => 2; // typed param (arg: number) => 5; >(arg: number) => 5 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >5 : 5 @@ -60,7 +60,7 @@ arg => 2; // typed param with default value (arg: number = 0) => 6; >(arg: number = 0) => 6 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -71,7 +71,7 @@ arg => 2; // optional param (arg?: number) => 7; >(arg?: number) => 7 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >7 : 7 @@ -80,7 +80,7 @@ arg => 2; // var arg param (...arg: number[]) => 8; >(...arg: number[]) => 8 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >8 : 8 @@ -89,7 +89,7 @@ arg => 2; // multiple arguments (arg1, arg2) => 12; >(arg1, arg2) => 12 : (arg1: any, arg2: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -99,7 +99,7 @@ arg => 2; (arg1 = 1, arg2 =3) => 13; >(arg1 = 1, arg2 =3) => 13 : (arg1?: number, arg2?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >arg1 : number > : ^^^^^^ >1 : 1 @@ -113,7 +113,7 @@ arg => 2; (arg1?, arg2?) => 14; >(arg1?, arg2?) => 14 : (arg1?: any, arg2?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -123,7 +123,7 @@ arg => 2; (arg1: number, arg2: number) => 15; >(arg1: number, arg2: number) => 15 : (arg1: number, arg2: number) => number -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >arg1 : number > : ^^^^^^ >arg2 : number @@ -133,7 +133,7 @@ arg => 2; (arg1: number = 0, arg2: number = 1) => 16; >(arg1: number = 0, arg2: number = 1) => 16 : (arg1?: number, arg2?: number) => number -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >arg1 : number > : ^^^^^^ >0 : 0 @@ -147,7 +147,7 @@ arg => 2; (arg1?: number, arg2?: number) => 17; >(arg1?: number, arg2?: number) => 17 : (arg1?: number, arg2?: number) => number -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >arg1 : number > : ^^^^^^ >arg2 : number @@ -157,7 +157,7 @@ arg => 2; (arg1, ...arg2: number[]) => 18; >(arg1, ...arg2: number[]) => 18 : (arg1: any, ...arg2: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : number[] @@ -167,7 +167,7 @@ arg => 2; (arg1, arg2?: number) => 19; >(arg1, arg2?: number) => 19 : (arg1: any, arg2?: number) => number -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^ ^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : number @@ -186,9 +186,9 @@ arg => 2; ((arg) => 22); >((arg) => 22) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 22 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >22 : 22 @@ -196,9 +196,9 @@ arg => 2; ((arg = 1) => 23); >((arg = 1) => 23) : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg = 1) => 23 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -208,9 +208,9 @@ arg => 2; ((arg?) => 24); >((arg?) => 24) : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg?) => 24 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >24 : 24 @@ -218,9 +218,9 @@ arg => 2; ((arg: number) => 25); >((arg: number) => 25) : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(arg: number) => 25 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >25 : 25 @@ -228,9 +228,9 @@ arg => 2; ((arg: number = 0) => 26); >((arg: number = 0) => 26) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg: number = 0) => 26 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -240,9 +240,9 @@ arg => 2; ((arg?: number) => 27); >((arg?: number) => 27) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?: number) => 27 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >27 : 27 @@ -250,9 +250,9 @@ arg => 2; ((...arg: number[]) => 28); >((...arg: number[]) => 28) : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...arg: number[]) => 28 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >28 : 28 @@ -261,15 +261,15 @@ arg => 2; // in multiple paren (((((arg) => { return 32; })))); >(((((arg) => { return 32; })))) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >((((arg) => { return 32; }))) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(((arg) => { return 32; })) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >((arg) => { return 32; }) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => { return 32; } : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >32 : 32 @@ -288,11 +288,11 @@ false ? () => 41 : null; false ? (arg) => 42 : null; >false ? (arg) => 42 : null : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg) => 42 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >42 : 42 @@ -300,11 +300,11 @@ false ? (arg) => 42 : null; false ? (arg = 1) => 43 : null; >false ? (arg = 1) => 43 : null : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg = 1) => 43 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -314,11 +314,11 @@ false ? (arg = 1) => 43 : null; false ? (arg?) => 44 : null; >false ? (arg?) => 44 : null : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?) => 44 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >44 : 44 @@ -326,11 +326,11 @@ false ? (arg?) => 44 : null; false ? (arg: number) => 45 : null; >false ? (arg: number) => 45 : null : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg: number) => 45 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >45 : 45 @@ -338,11 +338,11 @@ false ? (arg: number) => 45 : null; false ? (arg?: number) => 46 : null; >false ? (arg?: number) => 46 : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number) => 46 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >46 : 46 @@ -350,11 +350,11 @@ false ? (arg?: number) => 46 : null; false ? (arg?: number = 0) => 47 : null; >false ? (arg?: number = 0) => 47 : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number = 0) => 47 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -364,11 +364,11 @@ false ? (arg?: number = 0) => 47 : null; false ? (...arg: number[]) => 48 : null; >false ? (...arg: number[]) => 48 : null : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(...arg: number[]) => 48 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >48 : 48 @@ -389,13 +389,13 @@ false ? (() => 51) : null; false ? ((arg) => 52) : null; >false ? ((arg) => 52) : null : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >((arg) => 52) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 52 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >52 : 52 @@ -403,13 +403,13 @@ false ? ((arg) => 52) : null; false ? ((arg = 1) => 53) : null; >false ? ((arg = 1) => 53) : null : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >((arg = 1) => 53) : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg = 1) => 53 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -419,13 +419,13 @@ false ? ((arg = 1) => 53) : null; false ? ((arg?) => 54) : null; >false ? ((arg?) => 54) : null : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >((arg?) => 54) : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg?) => 54 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >54 : 54 @@ -433,13 +433,13 @@ false ? ((arg?) => 54) : null; false ? ((arg: number) => 55) : null; >false ? ((arg: number) => 55) : null : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >((arg: number) => 55) : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(arg: number) => 55 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >55 : 55 @@ -447,13 +447,13 @@ false ? ((arg: number) => 55) : null; false ? ((arg?: number) => 56) : null; >false ? ((arg?: number) => 56) : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >((arg?: number) => 56) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?: number) => 56 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >56 : 56 @@ -461,13 +461,13 @@ false ? ((arg?: number) => 56) : null; false ? ((arg?: number = 0) => 57) : null; >false ? ((arg?: number = 0) => 57) : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >((arg?: number = 0) => 57) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?: number = 0) => 57 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -477,13 +477,13 @@ false ? ((arg?: number = 0) => 57) : null; false ? ((...arg: number[]) => 58) : null; >false ? ((...arg: number[]) => 58) : null : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >((...arg: number[]) => 58) : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...arg: number[]) => 58 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >58 : 58 @@ -502,11 +502,11 @@ false ? null : () => 61; false ? null : (arg) => 62; >false ? null : (arg) => 62 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg) => 62 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >62 : 62 @@ -514,11 +514,11 @@ false ? null : (arg) => 62; false ? null : (arg = 1) => 63; >false ? null : (arg = 1) => 63 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg = 1) => 63 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -528,11 +528,11 @@ false ? null : (arg = 1) => 63; false ? null : (arg?) => 64; >false ? null : (arg?) => 64 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?) => 64 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >64 : 64 @@ -540,11 +540,11 @@ false ? null : (arg?) => 64; false ? null : (arg: number) => 65; >false ? null : (arg: number) => 65 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg: number) => 65 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >65 : 65 @@ -552,11 +552,11 @@ false ? null : (arg: number) => 65; false ? null : (arg?: number) => 66; >false ? null : (arg?: number) => 66 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number) => 66 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >66 : 66 @@ -564,11 +564,11 @@ false ? null : (arg?: number) => 66; false ? null : (arg?: number = 0) => 67; >false ? null : (arg?: number = 0) => 67 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number = 0) => 67 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -578,11 +578,11 @@ false ? null : (arg?: number = 0) => 67; false ? null : (...arg: number[]) => 68; >false ? null : (...arg: number[]) => 68 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(...arg: number[]) => 68 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >68 : 68 @@ -592,23 +592,23 @@ false ? null : (...arg: number[]) => 68; // nested ternary expressions ((a?) => { return a; }) ? (b? ) => { return b; } : (c? ) => { return c; }; >((a?) => { return a; }) ? (b? ) => { return b; } : (c? ) => { return c; } : (b?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >((a?) => { return a; }) : (a?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(a?) => { return a; } : (a?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any > : ^^^ >(b? ) => { return b; } : (b?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >b : any > : ^^^ >b : any > : ^^^ >(c? ) => { return c; } : (c?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >c : any > : ^^^ >c : any @@ -617,27 +617,27 @@ false ? null : (...arg: number[]) => 68; //multiple levels (a?) => { return a; } ? (b)=>(c)=>81 : (c)=>(d)=>82; >(a?) => { return a; } : (a?: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any > : ^^^ >a : any > : ^^^ >(b)=>(c)=>81 : (b: any) => (c: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >b : any > : ^^^ >(c)=>81 : (c: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >c : any > : ^^^ >81 : 81 > : ^^ >(c)=>(d)=>82 : (c: any) => (d: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >c : any > : ^^^ >(d)=>82 : (d: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >d : any > : ^^^ >82 : 82 @@ -649,9 +649,9 @@ false ? null : (...arg: number[]) => 68; >((arg) => 90) instanceof Function : boolean > : ^^^^^^^ >((arg) => 90) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 90 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >90 : 90 @@ -663,9 +663,9 @@ false ? null : (...arg: number[]) => 68; >((arg = 1) => 91) instanceof Function : boolean > : ^^^^^^^ >((arg = 1) => 91) : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg = 1) => 91 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -679,9 +679,9 @@ false ? null : (...arg: number[]) => 68; >((arg? ) => 92) instanceof Function : boolean > : ^^^^^^^ >((arg? ) => 92) : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg? ) => 92 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >92 : 92 @@ -693,9 +693,9 @@ false ? null : (...arg: number[]) => 68; >((arg: number) => 93) instanceof Function : boolean > : ^^^^^^^ >((arg: number) => 93) : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(arg: number) => 93 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >93 : 93 @@ -707,9 +707,9 @@ false ? null : (...arg: number[]) => 68; >((arg: number = 1) => 94) instanceof Function : boolean > : ^^^^^^^ >((arg: number = 1) => 94) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg: number = 1) => 94 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -723,9 +723,9 @@ false ? null : (...arg: number[]) => 68; >((arg?: number) => 95) instanceof Function : boolean > : ^^^^^^^ >((arg?: number) => 95) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?: number) => 95 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >95 : 95 @@ -737,9 +737,9 @@ false ? null : (...arg: number[]) => 68; >((...arg: number[]) => 96) instanceof Function : boolean > : ^^^^^^^ >((...arg: number[]) => 96) : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...arg: number[]) => 96 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >96 : 96 @@ -753,9 +753,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg) => 100) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 100 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >100 : 100 @@ -767,9 +767,9 @@ false ? null : (...arg: number[]) => 68; >((arg) => 0) + '' : string > : ^^^^^^ >((arg) => 0) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 0 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >0 : 0 @@ -777,9 +777,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg) => 101) : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(arg) => 101 : (arg: any) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >101 : 101 @@ -791,9 +791,9 @@ false ? null : (...arg: number[]) => 68; >((arg = 1) => 0) + '' : string > : ^^^^^^ >((arg = 1) => 0) : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg = 1) => 0 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -803,9 +803,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg = 2) => 102) : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg = 2) => 102 : (arg?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >2 : 2 @@ -819,9 +819,9 @@ false ? null : (...arg: number[]) => 68; >((arg?) => 0) + '' : string > : ^^^^^^ >((arg?) => 0) : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg?) => 0 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >0 : 0 @@ -829,9 +829,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg?) => 103) : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg?) => 103 : (arg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : any > : ^^^ >103 : 103 @@ -843,9 +843,9 @@ false ? null : (...arg: number[]) => 68; >((arg:number) => 0) + '' : string > : ^^^^^^ >((arg:number) => 0) : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(arg:number) => 0 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -853,9 +853,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg:number) => 104) : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(arg:number) => 104 : (arg: number) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >104 : 104 @@ -867,9 +867,9 @@ false ? null : (...arg: number[]) => 68; >((arg:number = 1) => 0) + '' : string > : ^^^^^^ >((arg:number = 1) => 0) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg:number = 1) => 0 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -879,9 +879,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg:number = 2) => 105) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg:number = 2) => 105 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >2 : 2 @@ -895,9 +895,9 @@ false ? null : (...arg: number[]) => 68; >((arg?:number = 1) => 0) + '' : string > : ^^^^^^ >((arg?:number = 1) => 0) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?:number = 1) => 0 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -907,9 +907,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg?:number = 2) => 106) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?:number = 2) => 106 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >2 : 2 @@ -923,9 +923,9 @@ false ? null : (...arg: number[]) => 68; >((...arg:number[]) => 0) + '' : string > : ^^^^^^ >((...arg:number[]) => 0) : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...arg:number[]) => 0 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >0 : 0 @@ -933,9 +933,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((...arg:number[]) => 107) : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >(...arg:number[]) => 107 : (...arg: number[]) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >107 : 107 @@ -947,9 +947,9 @@ false ? null : (...arg: number[]) => 68; >((arg1, arg2?) => 0) + '' : string > : ^^^^^^ >((arg1, arg2?) => 0) : (arg1: any, arg2?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >(arg1, arg2?) => 0 : (arg1: any, arg2?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -959,9 +959,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg1,arg2?) => 108) : (arg1: any, arg2?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >(arg1,arg2?) => 108 : (arg1: any, arg2?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -975,9 +975,9 @@ false ? null : (...arg: number[]) => 68; >((arg1, ...arg2:number[]) => 0) + '' : string > : ^^^^^^ >((arg1, ...arg2:number[]) => 0) : (arg1: any, ...arg2: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^ >(arg1, ...arg2:number[]) => 0 : (arg1: any, ...arg2: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : number[] @@ -987,9 +987,9 @@ false ? null : (...arg: number[]) => 68; >'' : "" > : ^^ >((arg1, ...arg2:number[]) => 108) : (arg1: any, ...arg2: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^ >(arg1, ...arg2:number[]) => 108 : (arg1: any, ...arg2: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : number[] @@ -1001,7 +1001,7 @@ false ? null : (...arg: number[]) => 68; // Function Parameters function foo(...arg: any[]) { } >foo : (...arg: any[]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >arg : any[] > : ^^^^^ @@ -1009,11 +1009,11 @@ foo( >foo( (a) => 110, ((a) => 111), (a) => { return 112; }, (a? ) => 113, (a, b? ) => 114, (a: number) => 115, (a: number = 0) => 116, (a = 0) => 117, (a?: number = 0) => 118, (...a: number[]) => 119, (a, b? = 0, ...c: number[]) => 120, (a) => (b) => (c) => 121, false? (a) => 0 : (b) => 122) : void > : ^^^^ >foo : (...arg: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ (a) => 110, >(a) => 110 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >110 : 110 @@ -1021,9 +1021,9 @@ foo( ((a) => 111), >((a) => 111) : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(a) => 111 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >111 : 111 @@ -1031,7 +1031,7 @@ foo( (a) => { >(a) => { return 112; } : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ @@ -1042,7 +1042,7 @@ foo( }, (a? ) => 113, >(a? ) => 113 : (a?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >113 : 113 @@ -1050,7 +1050,7 @@ foo( (a, b? ) => 114, >(a, b? ) => 114 : (a: any, b?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -1060,7 +1060,7 @@ foo( (a: number) => 115, >(a: number) => 115 : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >115 : 115 @@ -1068,7 +1068,7 @@ foo( (a: number = 0) => 116, >(a: number = 0) => 116 : (a?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -1078,7 +1078,7 @@ foo( (a = 0) => 117, >(a = 0) => 117 : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -1088,7 +1088,7 @@ foo( (a?: number = 0) => 118, >(a?: number = 0) => 118 : (a?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -1098,7 +1098,7 @@ foo( (...a: number[]) => 119, >(...a: number[]) => 119 : (...a: number[]) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >119 : 119 @@ -1106,7 +1106,7 @@ foo( (a, b? = 0, ...c: number[]) => 120, >(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: number, ...c: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a : any > : ^^^ >b : number @@ -1120,15 +1120,15 @@ foo( (a) => (b) => (c) => 121, >(a) => (b) => (c) => 121 : (a: any) => (b: any) => (c: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >(b) => (c) => 121 : (b: any) => (c: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >b : any > : ^^^ >(c) => 121 : (c: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >c : any > : ^^^ >121 : 121 @@ -1136,17 +1136,17 @@ foo( false? (a) => 0 : (b) => 122 >false? (a) => 0 : (b) => 122 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(a) => 0 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >0 : 0 > : ^ >(b) => 122 : (b: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >b : any > : ^^^ >122 : 122 diff --git a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types index 9cd89a7ed3a74..f8c14f574b121 100644 --- a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types +++ b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors1.types @@ -3,7 +3,7 @@ === fatarrowfunctionsOptionalArgsErrors1.ts === (arg1?, arg2) => 101; >(arg1?, arg2) => 101 : (arg1?: any, arg2: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -13,7 +13,7 @@ (...arg?) => 102; >(...arg?) => 102 : (...arg?: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^ >arg : any[] > : ^^^^^ >102 : 102 @@ -21,7 +21,7 @@ (...arg) => 103; >(...arg) => 103 : (...arg: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >arg : any[] > : ^^^^^ >103 : 103 @@ -29,7 +29,7 @@ (...arg:number [] = []) => 104; >(...arg:number [] = []) => 104 : (...arg?: number[]) => number -> : ^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ >[] : undefined[] @@ -40,7 +40,7 @@ // Uninitialized parameter makes the initialized one required (arg1 = 1, arg2) => 1; >(arg1 = 1, arg2) => 1 : (arg1: number, arg2: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >arg1 : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors4.types b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors4.types index 9ca267edd6dc8..f8ba28ffa7803 100644 --- a/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors4.types +++ b/tests/baselines/reference/fatarrowfunctionsOptionalArgsErrors4.types @@ -3,11 +3,11 @@ === fatarrowfunctionsOptionalArgsErrors4.ts === false ? (arg?: number = 0) => 47 : null; >false ? (arg?: number = 0) => 47 : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number = 0) => 47 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -17,13 +17,13 @@ false ? ((arg?: number = 0) => 57) : null; >false ? ((arg?: number = 0) => 57) : null : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >((arg?: number = 0) => 57) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?: number = 0) => 57 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -33,11 +33,11 @@ false ? null : (arg?: number = 0) => 67; >false ? null : (arg?: number = 0) => 67 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >false : false > : ^^^^^ >(arg?: number = 0) => 67 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >0 : 0 @@ -51,9 +51,9 @@ >((arg?:number = 1) => 0) + '' : string > : ^^^^^^ >((arg?:number = 1) => 0) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?:number = 1) => 0 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >1 : 1 @@ -63,9 +63,9 @@ >'' : "" > : ^^ >((arg?:number = 2) => 106) : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >(arg?:number = 2) => 106 : (arg?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ >2 : 2 @@ -81,7 +81,7 @@ (a) => 110, >(a) => 110 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >110 : 110 @@ -89,9 +89,9 @@ ((a) => 111), >((a) => 111) : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(a) => 111 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >111 : 111 @@ -99,7 +99,7 @@ (a) => { >(a) => { return 112; } : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ @@ -110,7 +110,7 @@ }, (a? ) => 113, >(a? ) => 113 : (a?: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >113 : 113 @@ -118,7 +118,7 @@ (a, b? ) => 114, >(a, b? ) => 114 : (a: any, b?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -128,7 +128,7 @@ (a: number) => 115, >(a: number) => 115 : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >115 : 115 @@ -136,7 +136,7 @@ (a: number = 0) => 116, >(a: number = 0) => 116 : (a?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -146,7 +146,7 @@ (a = 0) => 117, >(a = 0) => 117 : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -156,7 +156,7 @@ (a?: number = 0) => 118, >(a?: number = 0) => 118 : (a?: number) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -166,7 +166,7 @@ (...a: number[]) => 119, >(...a: number[]) => 119 : (...a: number[]) => number -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >119 : 119 @@ -174,7 +174,7 @@ (a, b? = 0, ...c: number[]) => 120, >(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: number, ...c: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a : any > : ^^^ >b : number @@ -188,15 +188,15 @@ (a) => (b) => (c) => 121, >(a) => (b) => (c) => 121 : (a: any) => (b: any) => (c: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >(b) => (c) => 121 : (b: any) => (c: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >b : any > : ^^^ >(c) => 121 : (c: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >c : any > : ^^^ >121 : 121 @@ -204,17 +204,17 @@ false? (a) => 0 : (b) => 122 >false? (a) => 0 : (b) => 122 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >(a) => 0 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >0 : 0 > : ^ >(b) => 122 : (b: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >b : any > : ^^^ >122 : 122 diff --git a/tests/baselines/reference/findLast(target=es2022).types b/tests/baselines/reference/findLast(target=es2022).types index 3cf300c2cb640..b2d4b09f0fe02 100644 --- a/tests/baselines/reference/findLast(target=es2022).types +++ b/tests/baselines/reference/findLast(target=es2022).types @@ -15,7 +15,7 @@ const itemNumber: number | undefined = [0].findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -39,7 +39,7 @@ const itemString: string | undefined = ["string"].findLast((item) => item === "s >findLast : any > : ^^^ >(item) => item === "string" : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === "string" : boolean @@ -61,7 +61,7 @@ new Int8Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -83,7 +83,7 @@ new Uint8Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -105,7 +105,7 @@ new Uint8ClampedArray().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -127,7 +127,7 @@ new Int16Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -149,7 +149,7 @@ new Uint16Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -171,7 +171,7 @@ new Int32Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -193,7 +193,7 @@ new Uint32Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -215,7 +215,7 @@ new Float32Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -237,7 +237,7 @@ new Float64Array().findLast((item) => item === 0); >findLast : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -259,7 +259,7 @@ new BigInt64Array().findLast((item) => item === BigInt(0)); >findLast : any > : ^^^ >(item) => item === BigInt(0) : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === BigInt(0) : boolean @@ -285,7 +285,7 @@ new BigUint64Array().findLast((item) => item === BigInt(0)); >findLast : any > : ^^^ >(item) => item === BigInt(0) : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === BigInt(0) : boolean @@ -313,7 +313,7 @@ const indexNumber: number = [0].findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -337,7 +337,7 @@ const indexString: number = ["string"].findLastIndex((item) => item === "string" >findLastIndex : any > : ^^^ >(item) => item === "string" : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === "string" : boolean @@ -359,7 +359,7 @@ new Int8Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -381,7 +381,7 @@ new Uint8Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -403,7 +403,7 @@ new Uint8ClampedArray().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -425,7 +425,7 @@ new Int16Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -447,7 +447,7 @@ new Uint16Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -469,7 +469,7 @@ new Int32Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -491,7 +491,7 @@ new Uint32Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -513,7 +513,7 @@ new Float32Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -535,7 +535,7 @@ new Float64Array().findLastIndex((item) => item === 0); >findLastIndex : any > : ^^^ >(item) => item === 0 : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === 0 : boolean @@ -557,7 +557,7 @@ new BigInt64Array().findLastIndex((item) => item === BigInt(0)); >findLastIndex : any > : ^^^ >(item) => item === BigInt(0) : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === BigInt(0) : boolean @@ -583,7 +583,7 @@ new BigUint64Array().findLastIndex((item) => item === BigInt(0)); >findLastIndex : any > : ^^^ >(item) => item === BigInt(0) : (item: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >item : any > : ^^^ >item === BigInt(0) : boolean diff --git a/tests/baselines/reference/findLast(target=esnext).types b/tests/baselines/reference/findLast(target=esnext).types index e6b4f6c62d7cb..0a2665b12cbc5 100644 --- a/tests/baselines/reference/findLast(target=esnext).types +++ b/tests/baselines/reference/findLast(target=esnext).types @@ -7,15 +7,15 @@ const itemNumber: number | undefined = [0].findLast((item) => item === 0); >[0].findLast((item) => item === 0) : 0 > : ^ >[0].findLast : { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >[0] : number[] > : ^^^^^^^^ >0 : 0 > : ^ >findLast : { (predicate: (value: number, index: number, array: number[]) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -31,15 +31,15 @@ const itemString: string | undefined = ["string"].findLast((item) => item === "s >["string"].findLast((item) => item === "string") : "string" > : ^^^^^^^^ >["string"].findLast : { (predicate: (value: string, index: number, array: string[]) => value is S, thisArg?: any): S; (predicate: (value: string, index: number, array: string[]) => unknown, thisArg?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >["string"] : string[] > : ^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >findLast : { (predicate: (value: string, index: number, array: string[]) => value is S, thisArg?: any): S; (predicate: (value: string, index: number, array: string[]) => unknown, thisArg?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === "string" : (item: string) => item is "string" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : string > : ^^^^^^ >item === "string" : boolean @@ -53,15 +53,15 @@ new Int8Array().findLast((item) => item === 0); >new Int8Array().findLast((item) => item === 0) : 0 > : ^ >new Int8Array().findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Int8Array() : Int8Array > : ^^^^^^^^^ >Int8Array : Int8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Int8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -75,15 +75,15 @@ new Uint8Array().findLast((item) => item === 0); >new Uint8Array().findLast((item) => item === 0) : 0 > : ^ >new Uint8Array().findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Uint8Array() : Uint8Array > : ^^^^^^^^^^ >Uint8Array : Uint8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Uint8Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -97,15 +97,15 @@ new Uint8ClampedArray().findLast((item) => item === 0); >new Uint8ClampedArray().findLast((item) => item === 0) : 0 > : ^ >new Uint8ClampedArray().findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Uint8ClampedArray() : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >Uint8ClampedArray : Uint8ClampedArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Uint8ClampedArray) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -119,15 +119,15 @@ new Int16Array().findLast((item) => item === 0); >new Int16Array().findLast((item) => item === 0) : 0 > : ^ >new Int16Array().findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Int16Array() : Int16Array > : ^^^^^^^^^^ >Int16Array : Int16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Int16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -141,15 +141,15 @@ new Uint16Array().findLast((item) => item === 0); >new Uint16Array().findLast((item) => item === 0) : 0 > : ^ >new Uint16Array().findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Uint16Array() : Uint16Array > : ^^^^^^^^^^^ >Uint16Array : Uint16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Uint16Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -163,15 +163,15 @@ new Int32Array().findLast((item) => item === 0); >new Int32Array().findLast((item) => item === 0) : 0 > : ^ >new Int32Array().findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Int32Array() : Int32Array > : ^^^^^^^^^^ >Int32Array : Int32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Int32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -185,15 +185,15 @@ new Uint32Array().findLast((item) => item === 0); >new Uint32Array().findLast((item) => item === 0) : 0 > : ^ >new Uint32Array().findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Uint32Array() : Uint32Array > : ^^^^^^^^^^^ >Uint32Array : Uint32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Uint32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -207,15 +207,15 @@ new Float32Array().findLast((item) => item === 0); >new Float32Array().findLast((item) => item === 0) : 0 > : ^ >new Float32Array().findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Float32Array() : Float32Array > : ^^^^^^^^^^^^ >Float32Array : Float32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Float32Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -229,15 +229,15 @@ new Float64Array().findLast((item) => item === 0); >new Float64Array().findLast((item) => item === 0) : 0 > : ^ >new Float64Array().findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new Float64Array() : Float64Array > : ^^^^^^^^^^^^ >Float64Array : Float64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: number, index: number, array: Float64Array) => value is S, thisArg?: any): S; (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -251,15 +251,15 @@ new BigInt64Array().findLast((item) => item === BigInt(0)); >new BigInt64Array().findLast((item) => item === BigInt(0)) : bigint > : ^^^^^^ >new BigInt64Array().findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new BigInt64Array() : BigInt64Array > : ^^^^^^^^^^^^^ >BigInt64Array : BigInt64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: bigint, index: number, array: BigInt64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any): bigint; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === BigInt(0) : (item: bigint) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >item : bigint > : ^^^^^^ >item === BigInt(0) : boolean @@ -277,15 +277,15 @@ new BigUint64Array().findLast((item) => item === BigInt(0)); >new BigUint64Array().findLast((item) => item === BigInt(0)) : bigint > : ^^^^^^ >new BigUint64Array().findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >new BigUint64Array() : BigUint64Array > : ^^^^^^^^^^^^^^ >BigUint64Array : BigUint64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >findLast : { (predicate: (value: bigint, index: number, array: BigUint64Array) => value is S, thisArg?: any): S; (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any): bigint; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >(item) => item === BigInt(0) : (item: bigint) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >item : bigint > : ^^^^^^ >item === BigInt(0) : boolean @@ -305,15 +305,15 @@ const indexNumber: number = [0].findLastIndex((item) => item === 0); >[0].findLastIndex((item) => item === 0) : number > : ^^^^^^ >[0].findLastIndex : (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >[0] : number[] > : ^^^^^^^^ >0 : 0 > : ^ >findLastIndex : (predicate: (value: number, index: number, array: number[]) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -329,15 +329,15 @@ const indexString: number = ["string"].findLastIndex((item) => item === "string" >["string"].findLastIndex((item) => item === "string") : number > : ^^^^^^ >["string"].findLastIndex : (predicate: (value: string, index: number, array: string[]) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >["string"] : string[] > : ^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >findLastIndex : (predicate: (value: string, index: number, array: string[]) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === "string" : (item: string) => item is "string" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : string > : ^^^^^^ >item === "string" : boolean @@ -351,15 +351,15 @@ new Int8Array().findLastIndex((item) => item === 0); >new Int8Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Int8Array().findLastIndex : (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Int8Array() : Int8Array > : ^^^^^^^^^ >Int8Array : Int8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Int8Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -373,15 +373,15 @@ new Uint8Array().findLastIndex((item) => item === 0); >new Uint8Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Uint8Array().findLastIndex : (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Uint8Array() : Uint8Array > : ^^^^^^^^^^ >Uint8Array : Uint8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Uint8Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -395,15 +395,15 @@ new Uint8ClampedArray().findLastIndex((item) => item === 0); >new Uint8ClampedArray().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Uint8ClampedArray().findLastIndex : (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Uint8ClampedArray() : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >Uint8ClampedArray : Uint8ClampedArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Uint8ClampedArray) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -417,15 +417,15 @@ new Int16Array().findLastIndex((item) => item === 0); >new Int16Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Int16Array().findLastIndex : (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Int16Array() : Int16Array > : ^^^^^^^^^^ >Int16Array : Int16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Int16Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -439,15 +439,15 @@ new Uint16Array().findLastIndex((item) => item === 0); >new Uint16Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Uint16Array().findLastIndex : (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Uint16Array() : Uint16Array > : ^^^^^^^^^^^ >Uint16Array : Uint16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Uint16Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -461,15 +461,15 @@ new Int32Array().findLastIndex((item) => item === 0); >new Int32Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Int32Array().findLastIndex : (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Int32Array() : Int32Array > : ^^^^^^^^^^ >Int32Array : Int32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Int32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -483,15 +483,15 @@ new Uint32Array().findLastIndex((item) => item === 0); >new Uint32Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Uint32Array().findLastIndex : (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Uint32Array() : Uint32Array > : ^^^^^^^^^^^ >Uint32Array : Uint32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Uint32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -505,15 +505,15 @@ new Float32Array().findLastIndex((item) => item === 0); >new Float32Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Float32Array().findLastIndex : (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Float32Array() : Float32Array > : ^^^^^^^^^^^^ >Float32Array : Float32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Float32Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -527,15 +527,15 @@ new Float64Array().findLastIndex((item) => item === 0); >new Float64Array().findLastIndex((item) => item === 0) : number > : ^^^^^^ >new Float64Array().findLastIndex : (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new Float64Array() : Float64Array > : ^^^^^^^^^^^^ >Float64Array : Float64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: number, index: number, array: Float64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === 0 : (item: number) => item is 0 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >item : number > : ^^^^^^ >item === 0 : boolean @@ -549,15 +549,15 @@ new BigInt64Array().findLastIndex((item) => item === BigInt(0)); >new BigInt64Array().findLastIndex((item) => item === BigInt(0)) : number > : ^^^^^^ >new BigInt64Array().findLastIndex : (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new BigInt64Array() : BigInt64Array > : ^^^^^^^^^^^^^ >BigInt64Array : BigInt64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: bigint, index: number, array: BigInt64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === BigInt(0) : (item: bigint) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >item : bigint > : ^^^^^^ >item === BigInt(0) : boolean @@ -575,15 +575,15 @@ new BigUint64Array().findLastIndex((item) => item === BigInt(0)); >new BigUint64Array().findLastIndex((item) => item === BigInt(0)) : number > : ^^^^^^ >new BigUint64Array().findLastIndex : (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >new BigUint64Array() : BigUint64Array > : ^^^^^^^^^^^^^^ >BigUint64Array : BigUint64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >findLastIndex : (predicate: (value: bigint, index: number, array: BigUint64Array) => unknown, thisArg?: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >(item) => item === BigInt(0) : (item: bigint) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >item : bigint > : ^^^^^^ >item === BigInt(0) : boolean diff --git a/tests/baselines/reference/firstMatchRegExpMatchArray.types b/tests/baselines/reference/firstMatchRegExpMatchArray.types index e97b211ea2987..73eeca146419e 100644 --- a/tests/baselines/reference/firstMatchRegExpMatchArray.types +++ b/tests/baselines/reference/firstMatchRegExpMatchArray.types @@ -7,11 +7,11 @@ const match = ''.match(/ /) >''.match(/ /) : RegExpMatchArray | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >''.match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >match : (regexp: string | RegExp) => RegExpMatchArray | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/ / : RegExp > : ^^^^^^ diff --git a/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types index 91f8d1a7562be..a1deb3f2ba7ae 100644 --- a/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types +++ b/tests/baselines/reference/fixCrashAliasLookupForDefauledImport.types @@ -12,7 +12,7 @@ import {Foo} from "./input"; function bar(element: Foo) { >bar : (element: Foo) => number -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >element : Foo > : ^^^ @@ -25,7 +25,7 @@ bar(1 as Foo); >bar(1 as Foo) : number > : ^^^^^^ >bar : (element: Foo) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >1 as Foo : Foo > : ^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/fixSignatureCaching.types b/tests/baselines/reference/fixSignatureCaching.types index 4def4801b7828..bbcc91f90aa6f 100644 --- a/tests/baselines/reference/fixSignatureCaching.types +++ b/tests/baselines/reference/fixSignatureCaching.types @@ -11,9 +11,9 @@ Symbol count: 26,500 / 27,000 (nearest 500) >(function (define, undefined) {define(function () { 'use strict'; var impl = {}; impl.mobileDetectRules = { "phones": { "iPhone": "\\biPhone\\b|\\biPod\\b", "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F", "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", "Asus": "Asus.*Galaxy|PadFone.*Mobile", "NokiaLumia": "Lumia [0-9]{3,4}", "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", "Palm": "PalmSource|Palm", "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", "Alcatel": "Alcatel", "Nintendo": "Nintendo 3DS", "Amoi": "Amoi", "INQ": "INQ", "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" }, "tablets": { "iPad": "iPad|iPad.*Mobile", "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI)\\b", "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA", "BlackBerryTablet": "PlayBook|RIM Tablet", "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20", "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", "IRUTablet": "M702pro", "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", "NokiaLumiaTablet": "Lumia 2520", "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", "FlyTablet": "IQ310|Fly Vision", "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", "NecTablet": "\\bN-06D|\\bN-08D", "PantechTablet": "Pantech.*P4100", "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", "NabiTablet": "Android.*\\bNabi", "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", "PlaystationTablet": "Playstation.*(Portable|Vita)", "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", "GalapadTablet": "Android.*\\bG1\\b", "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", "DPSTablet": "DPS Dream 9|DPS Dual 7", "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497", "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", "iMobileTablet": "i-mobile i-note", "TolinoTablet": "tolino tab [0-9.]+|tolino shine", "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", "AMPETablet": "Android.* A78 ", "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", "TecnoTablet": "TECNO P9", "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", "FX2Tablet": "FX2 PAD7|FX2 PAD10", "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", "CaptivaTablet": "CAPTIVA PAD", "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", "JaytechTablet": "TPC-PA762", "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", "AocTablet": "MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712", "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", "UbislateTablet": "UbiSlate[\\s]?7C", "PocketBookTablet": "Pocketbook", "KocasoTablet": "\\b(TB-1207)\\b", "Hudl": "Hudl HT7S3|Hudl 2", "TelstraTablet": "T-Hub2", "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" }, "oss": { "AndroidOS": "Android", "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", "MeeGoOS": "MeeGo", "MaemoOS": "Maemo", "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", "webOS": "webOS|hpwOS", "badaOS": "\\bBada\\b", "BREWOS": "BREW" }, "uas": { "Vivaldi": "Vivaldi", "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", "Dolfin": "\\bDolfin\\b", "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", "Skyfire": "Skyfire", "Edge": "Mobile Safari\/[.0-9]* Edge", "IE": "IEMobile|MSIEMobile", "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", "Bolt": "bolt", "TeaShark": "teashark", "Blazer": "Blazer", "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", "Tizen": "Tizen", "UCBrowser": "UC.*Browser|UCWEB", "baiduboxapp": "baiduboxapp", "baidubrowser": "baidubrowser", "DiigoBrowser": "DiigoBrowser", "Puffin": "Puffin", "Mercury": "\\bMercury\\b", "ObigoBrowser": "Obigo", "NetFront": "NF-Browser", "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger", "PaleMoon": "Android.*PaleMoon|Mobile.*PaleMoon" }, "props": { "Mobile": "Mobile\/[VER]", "Build": "Build\/[VER]", "Version": "Version\/[VER]", "VendorID": "VendorID\/[VER]", "iPad": "iPad.*CPU[a-z ]+[VER]", "iPhone": "iPhone.*CPU[a-z ]+[VER]", "iPod": "iPod.*CPU[a-z ]+[VER]", "Kindle": "Kindle\/[VER]", "Chrome": [ "Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]" ], "Coast": [ "Coast\/[VER]" ], "Dolfin": "Dolfin\/[VER]", "Firefox": "Firefox\/[VER]", "Fennec": "Fennec\/[VER]", "Edge": "Edge\/[VER]", "IE": [ "IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]" ], "NetFront": "NetFront\/[VER]", "NokiaBrowser": "NokiaBrowser\/[VER]", "Opera": [ " OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]" ], "Opera Mini": "Opera Mini\/[VER]", "Opera Mobi": "Version\/[VER]", "UC Browser": "UC Browser[VER]", "MQQBrowser": "MQQBrowser\/[VER]", "MicroMessenger": "MicroMessenger\/[VER]", "baiduboxapp": "baiduboxapp\/[VER]", "baidubrowser": "baidubrowser\/[VER]", "Iron": "Iron\/[VER]", "Safari": [ "Version\/[VER]", "Safari\/[VER]" ], "Skyfire": "Skyfire\/[VER]", "Tizen": "Tizen\/[VER]", "Webkit": "webkit[ \/][VER]", "PaleMoon": "PaleMoon\/[VER]", "Gecko": "Gecko\/[VER]", "Trident": "Trident\/[VER]", "Presto": "Presto\/[VER]", "Goanna": "Goanna\/[VER]", "iOS": " \\bi?OS\\b [VER][ ;]{1}", "Android": "Android [VER]", "BlackBerry": [ "BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]" ], "BREW": "BREW [VER]", "Java": "Java\/[VER]", "Windows Phone OS": [ "Windows Phone OS [VER]", "Windows Phone [VER]" ], "Windows Phone": "Windows Phone [VER]", "Windows CE": "Windows CE\/[VER]", "Windows NT": "Windows NT [VER]", "Symbian": [ "SymbianOS\/[VER]", "Symbian\/[VER]" ], "webOS": [ "webOS\/[VER]", "hpwOS\/[VER];" ] }, "utils": { "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", "DesktopMode": "WPDesktop", "TV": "SonyDTV|HbbTV", "WebKit": "(webkit)[ \/]([\\w.]+)", "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", "Watch": "SM-V700" }}; // following patterns come from http://detectmobilebrowsers.com/ impl.detectMobileBrowsers = { fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, tabletPattern: /android|ipad|playbook|silk/i }; var hasOwnProp = Object.prototype.hasOwnProperty, isArray; impl.FALLBACK_PHONE = 'UnknownPhone'; impl.FALLBACK_TABLET = 'UnknownTablet'; impl.FALLBACK_MOBILE = 'UnknownMobile'; isArray = ('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; }; isArray = 'isArray' in Array ? function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : Array.isArray; function equalIC(a, b) { return a != null && b != null && a.toLowerCase() === b.toLowerCase(); } function containsIC(array, value) { var valueLC, i, len = array.length; if (!len || !value) { return false; } valueLC = value.toLowerCase(); for (i = 0; i < len; ++i) { if (valueLC === array[i].toLowerCase()) { return true; } } return false; } function convertPropsToRegExp(object) { for (var key in object) { if (hasOwnProp.call(object, key)) { object[key] = new RegExp(object[key], 'i'); } } } (function init() { var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules; for (key in mobileDetectRules.props) { if (hasOwnProp.call(mobileDetectRules.props, key)) { values = mobileDetectRules.props[key]; if (!isArray(values)) { values = [values]; } len = values.length; for (i = 0; i < len; ++i) { value = values[i]; verPos = value.indexOf('[VER]'); if (verPos >= 0) { value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); } values[i] = new RegExp(value, 'i'); } mobileDetectRules.props[key] = values; } } convertPropsToRegExp(mobileDetectRules.oss); convertPropsToRegExp(mobileDetectRules.phones); convertPropsToRegExp(mobileDetectRules.tablets); convertPropsToRegExp(mobileDetectRules.uas); convertPropsToRegExp(mobileDetectRules.utils); // copy some patterns to oss0 which are tested first (see issue#15) mobileDetectRules.oss0 = { WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS }; }()); /** * Test userAgent string against a set of rules and find the first matched key. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {String|null} the matched key if found, otherwise null * @private */ impl.findMatch = function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; }; /** * Test userAgent string against a set of rules and return an array of matched keys. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {Array} an array of matched keys, may be empty when there is no match, but not null * @private */ impl.findMatches = function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; }; /** * Check the version of the given property in the User-Agent. * * @param {String} propertyName * @param {String} userAgent * @return {String} version or null if version not found * @private */ impl.getVersionStr = function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; }; /** * Check the version of the given property in the User-Agent. * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} propertyName * @param {String} userAgent * @return {Number} version or NaN if version not found * @private */ impl.getVersion = function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; }; /** * Prepare the version number. * * @param {String} version * @return {Number} the version number as a floating number * @private */ impl.prepareVersionNo = function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); }; impl.isMobileFallback = function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); }; impl.isTabletFallback = function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); }; impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } }; // t is a reference to a MobileDetect instance impl.mobileGrade = function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; }; impl.detectOS = function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); }; impl.getDeviceSmallerSide = function () { return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; }; /** * Constructor for MobileDetect object. *
    * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
    *
    * * @example
         *     var md = new MobileDetect(window.navigator.userAgent);     *     if (md.mobile()) {     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';     *     }     * 
    * * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent'] * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled * as phone. * This is only used in cases where the device cannot be classified as phone or tablet.
    * See Declaring Tablet Layouts * for Android.
    * If you provide a value < 0, then this "fuzzy" check is disabled. * @constructor * @global */ function MobileDetect(userAgent, maxPhoneWidth) { this.ua = userAgent || ''; this._cache = {}; //600dp is typical 7" tablet minimum width this.maxPhoneWidth = maxPhoneWidth || 600; } MobileDetect.prototype = { constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } }; // environment-dependent if (typeof window !== 'undefined' && window.screen) { MobileDetect.isPhoneSized = function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; }; } else { MobileDetect.isPhoneSized = function () {}; } // should not be replaced by a completely new object - just overwrite existing methods MobileDetect._impl = impl; MobileDetect.version = '1.3.3 2016-07-31'; return MobileDetect;}); // end of call of define()})((function (undefined) { if (typeof module !== 'undefined' && module.exports) { return function (factory) { module.exports = factory(); }; } else if (typeof define === 'function' && define.amd) { return define; } else if (typeof window !== 'undefined') { return function (factory) { window.MobileDetect = factory(); }; } else { // please file a bug if you get this error! throw new Error('unknown environment'); }})()) : void > : ^^^^ >(function (define, undefined) {define(function () { 'use strict'; var impl = {}; impl.mobileDetectRules = { "phones": { "iPhone": "\\biPhone\\b|\\biPod\\b", "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F", "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", "Asus": "Asus.*Galaxy|PadFone.*Mobile", "NokiaLumia": "Lumia [0-9]{3,4}", "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", "Palm": "PalmSource|Palm", "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", "Alcatel": "Alcatel", "Nintendo": "Nintendo 3DS", "Amoi": "Amoi", "INQ": "INQ", "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" }, "tablets": { "iPad": "iPad|iPad.*Mobile", "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI)\\b", "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA", "BlackBerryTablet": "PlayBook|RIM Tablet", "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20", "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", "IRUTablet": "M702pro", "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", "NokiaLumiaTablet": "Lumia 2520", "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", "FlyTablet": "IQ310|Fly Vision", "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", "NecTablet": "\\bN-06D|\\bN-08D", "PantechTablet": "Pantech.*P4100", "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", "NabiTablet": "Android.*\\bNabi", "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", "PlaystationTablet": "Playstation.*(Portable|Vita)", "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", "GalapadTablet": "Android.*\\bG1\\b", "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", "DPSTablet": "DPS Dream 9|DPS Dual 7", "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497", "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", "iMobileTablet": "i-mobile i-note", "TolinoTablet": "tolino tab [0-9.]+|tolino shine", "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", "AMPETablet": "Android.* A78 ", "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", "TecnoTablet": "TECNO P9", "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", "FX2Tablet": "FX2 PAD7|FX2 PAD10", "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", "CaptivaTablet": "CAPTIVA PAD", "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", "JaytechTablet": "TPC-PA762", "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", "AocTablet": "MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712", "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", "UbislateTablet": "UbiSlate[\\s]?7C", "PocketBookTablet": "Pocketbook", "KocasoTablet": "\\b(TB-1207)\\b", "Hudl": "Hudl HT7S3|Hudl 2", "TelstraTablet": "T-Hub2", "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" }, "oss": { "AndroidOS": "Android", "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", "MeeGoOS": "MeeGo", "MaemoOS": "Maemo", "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", "webOS": "webOS|hpwOS", "badaOS": "\\bBada\\b", "BREWOS": "BREW" }, "uas": { "Vivaldi": "Vivaldi", "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", "Dolfin": "\\bDolfin\\b", "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", "Skyfire": "Skyfire", "Edge": "Mobile Safari\/[.0-9]* Edge", "IE": "IEMobile|MSIEMobile", "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", "Bolt": "bolt", "TeaShark": "teashark", "Blazer": "Blazer", "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", "Tizen": "Tizen", "UCBrowser": "UC.*Browser|UCWEB", "baiduboxapp": "baiduboxapp", "baidubrowser": "baidubrowser", "DiigoBrowser": "DiigoBrowser", "Puffin": "Puffin", "Mercury": "\\bMercury\\b", "ObigoBrowser": "Obigo", "NetFront": "NF-Browser", "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger", "PaleMoon": "Android.*PaleMoon|Mobile.*PaleMoon" }, "props": { "Mobile": "Mobile\/[VER]", "Build": "Build\/[VER]", "Version": "Version\/[VER]", "VendorID": "VendorID\/[VER]", "iPad": "iPad.*CPU[a-z ]+[VER]", "iPhone": "iPhone.*CPU[a-z ]+[VER]", "iPod": "iPod.*CPU[a-z ]+[VER]", "Kindle": "Kindle\/[VER]", "Chrome": [ "Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]" ], "Coast": [ "Coast\/[VER]" ], "Dolfin": "Dolfin\/[VER]", "Firefox": "Firefox\/[VER]", "Fennec": "Fennec\/[VER]", "Edge": "Edge\/[VER]", "IE": [ "IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]" ], "NetFront": "NetFront\/[VER]", "NokiaBrowser": "NokiaBrowser\/[VER]", "Opera": [ " OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]" ], "Opera Mini": "Opera Mini\/[VER]", "Opera Mobi": "Version\/[VER]", "UC Browser": "UC Browser[VER]", "MQQBrowser": "MQQBrowser\/[VER]", "MicroMessenger": "MicroMessenger\/[VER]", "baiduboxapp": "baiduboxapp\/[VER]", "baidubrowser": "baidubrowser\/[VER]", "Iron": "Iron\/[VER]", "Safari": [ "Version\/[VER]", "Safari\/[VER]" ], "Skyfire": "Skyfire\/[VER]", "Tizen": "Tizen\/[VER]", "Webkit": "webkit[ \/][VER]", "PaleMoon": "PaleMoon\/[VER]", "Gecko": "Gecko\/[VER]", "Trident": "Trident\/[VER]", "Presto": "Presto\/[VER]", "Goanna": "Goanna\/[VER]", "iOS": " \\bi?OS\\b [VER][ ;]{1}", "Android": "Android [VER]", "BlackBerry": [ "BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]" ], "BREW": "BREW [VER]", "Java": "Java\/[VER]", "Windows Phone OS": [ "Windows Phone OS [VER]", "Windows Phone [VER]" ], "Windows Phone": "Windows Phone [VER]", "Windows CE": "Windows CE\/[VER]", "Windows NT": "Windows NT [VER]", "Symbian": [ "SymbianOS\/[VER]", "Symbian\/[VER]" ], "webOS": [ "webOS\/[VER]", "hpwOS\/[VER];" ] }, "utils": { "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", "DesktopMode": "WPDesktop", "TV": "SonyDTV|HbbTV", "WebKit": "(webkit)[ \/]([\\w.]+)", "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", "Watch": "SM-V700" }}; // following patterns come from http://detectmobilebrowsers.com/ impl.detectMobileBrowsers = { fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, tabletPattern: /android|ipad|playbook|silk/i }; var hasOwnProp = Object.prototype.hasOwnProperty, isArray; impl.FALLBACK_PHONE = 'UnknownPhone'; impl.FALLBACK_TABLET = 'UnknownTablet'; impl.FALLBACK_MOBILE = 'UnknownMobile'; isArray = ('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; }; isArray = 'isArray' in Array ? function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : Array.isArray; function equalIC(a, b) { return a != null && b != null && a.toLowerCase() === b.toLowerCase(); } function containsIC(array, value) { var valueLC, i, len = array.length; if (!len || !value) { return false; } valueLC = value.toLowerCase(); for (i = 0; i < len; ++i) { if (valueLC === array[i].toLowerCase()) { return true; } } return false; } function convertPropsToRegExp(object) { for (var key in object) { if (hasOwnProp.call(object, key)) { object[key] = new RegExp(object[key], 'i'); } } } (function init() { var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules; for (key in mobileDetectRules.props) { if (hasOwnProp.call(mobileDetectRules.props, key)) { values = mobileDetectRules.props[key]; if (!isArray(values)) { values = [values]; } len = values.length; for (i = 0; i < len; ++i) { value = values[i]; verPos = value.indexOf('[VER]'); if (verPos >= 0) { value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); } values[i] = new RegExp(value, 'i'); } mobileDetectRules.props[key] = values; } } convertPropsToRegExp(mobileDetectRules.oss); convertPropsToRegExp(mobileDetectRules.phones); convertPropsToRegExp(mobileDetectRules.tablets); convertPropsToRegExp(mobileDetectRules.uas); convertPropsToRegExp(mobileDetectRules.utils); // copy some patterns to oss0 which are tested first (see issue#15) mobileDetectRules.oss0 = { WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS }; }()); /** * Test userAgent string against a set of rules and find the first matched key. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {String|null} the matched key if found, otherwise null * @private */ impl.findMatch = function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; }; /** * Test userAgent string against a set of rules and return an array of matched keys. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {Array} an array of matched keys, may be empty when there is no match, but not null * @private */ impl.findMatches = function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; }; /** * Check the version of the given property in the User-Agent. * * @param {String} propertyName * @param {String} userAgent * @return {String} version or null if version not found * @private */ impl.getVersionStr = function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; }; /** * Check the version of the given property in the User-Agent. * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} propertyName * @param {String} userAgent * @return {Number} version or NaN if version not found * @private */ impl.getVersion = function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; }; /** * Prepare the version number. * * @param {String} version * @return {Number} the version number as a floating number * @private */ impl.prepareVersionNo = function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); }; impl.isMobileFallback = function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); }; impl.isTabletFallback = function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); }; impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } }; // t is a reference to a MobileDetect instance impl.mobileGrade = function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; }; impl.detectOS = function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); }; impl.getDeviceSmallerSide = function () { return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; }; /** * Constructor for MobileDetect object. *
    * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
    *
    * Find information how to download and install: * github.com/hgoebl/mobile-detect.js/ *
    * * @example
         *     var md = new MobileDetect(window.navigator.userAgent);     *     if (md.mobile()) {     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';     *     }     * 
    * * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent'] * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled * as phone. * This is only used in cases where the device cannot be classified as phone or tablet.
    * See Declaring Tablet Layouts * for Android.
    * If you provide a value < 0, then this "fuzzy" check is disabled. * @constructor * @global */ function MobileDetect(userAgent, maxPhoneWidth) { this.ua = userAgent || ''; this._cache = {}; //600dp is typical 7" tablet minimum width this.maxPhoneWidth = maxPhoneWidth || 600; } MobileDetect.prototype = { constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } }; // environment-dependent if (typeof window !== 'undefined' && window.screen) { MobileDetect.isPhoneSized = function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; }; } else { MobileDetect.isPhoneSized = function () {}; } // should not be replaced by a completely new object - just overwrite existing methods MobileDetect._impl = impl; MobileDetect.version = '1.3.3 2016-07-31'; return MobileDetect;}); // end of call of define()}) : (define: any, undefined?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^ >function (define, undefined) {define(function () { 'use strict'; var impl = {}; impl.mobileDetectRules = { "phones": { "iPhone": "\\biPhone\\b|\\biPod\\b", "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F", "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", "Asus": "Asus.*Galaxy|PadFone.*Mobile", "NokiaLumia": "Lumia [0-9]{3,4}", "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", "Palm": "PalmSource|Palm", "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", "Alcatel": "Alcatel", "Nintendo": "Nintendo 3DS", "Amoi": "Amoi", "INQ": "INQ", "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" }, "tablets": { "iPad": "iPad|iPad.*Mobile", "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI)\\b", "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA", "BlackBerryTablet": "PlayBook|RIM Tablet", "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20", "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", "IRUTablet": "M702pro", "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", "NokiaLumiaTablet": "Lumia 2520", "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", "FlyTablet": "IQ310|Fly Vision", "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", "NecTablet": "\\bN-06D|\\bN-08D", "PantechTablet": "Pantech.*P4100", "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", "NabiTablet": "Android.*\\bNabi", "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", "PlaystationTablet": "Playstation.*(Portable|Vita)", "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", "GalapadTablet": "Android.*\\bG1\\b", "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", "DPSTablet": "DPS Dream 9|DPS Dual 7", "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497", "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", "iMobileTablet": "i-mobile i-note", "TolinoTablet": "tolino tab [0-9.]+|tolino shine", "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", "AMPETablet": "Android.* A78 ", "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", "TecnoTablet": "TECNO P9", "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", "FX2Tablet": "FX2 PAD7|FX2 PAD10", "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", "CaptivaTablet": "CAPTIVA PAD", "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", "JaytechTablet": "TPC-PA762", "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", "AocTablet": "MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712", "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", "UbislateTablet": "UbiSlate[\\s]?7C", "PocketBookTablet": "Pocketbook", "KocasoTablet": "\\b(TB-1207)\\b", "Hudl": "Hudl HT7S3|Hudl 2", "TelstraTablet": "T-Hub2", "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" }, "oss": { "AndroidOS": "Android", "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", "MeeGoOS": "MeeGo", "MaemoOS": "Maemo", "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", "webOS": "webOS|hpwOS", "badaOS": "\\bBada\\b", "BREWOS": "BREW" }, "uas": { "Vivaldi": "Vivaldi", "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", "Dolfin": "\\bDolfin\\b", "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", "Skyfire": "Skyfire", "Edge": "Mobile Safari\/[.0-9]* Edge", "IE": "IEMobile|MSIEMobile", "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", "Bolt": "bolt", "TeaShark": "teashark", "Blazer": "Blazer", "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", "Tizen": "Tizen", "UCBrowser": "UC.*Browser|UCWEB", "baiduboxapp": "baiduboxapp", "baidubrowser": "baidubrowser", "DiigoBrowser": "DiigoBrowser", "Puffin": "Puffin", "Mercury": "\\bMercury\\b", "ObigoBrowser": "Obigo", "NetFront": "NF-Browser", "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger", "PaleMoon": "Android.*PaleMoon|Mobile.*PaleMoon" }, "props": { "Mobile": "Mobile\/[VER]", "Build": "Build\/[VER]", "Version": "Version\/[VER]", "VendorID": "VendorID\/[VER]", "iPad": "iPad.*CPU[a-z ]+[VER]", "iPhone": "iPhone.*CPU[a-z ]+[VER]", "iPod": "iPod.*CPU[a-z ]+[VER]", "Kindle": "Kindle\/[VER]", "Chrome": [ "Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]" ], "Coast": [ "Coast\/[VER]" ], "Dolfin": "Dolfin\/[VER]", "Firefox": "Firefox\/[VER]", "Fennec": "Fennec\/[VER]", "Edge": "Edge\/[VER]", "IE": [ "IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]" ], "NetFront": "NetFront\/[VER]", "NokiaBrowser": "NokiaBrowser\/[VER]", "Opera": [ " OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]" ], "Opera Mini": "Opera Mini\/[VER]", "Opera Mobi": "Version\/[VER]", "UC Browser": "UC Browser[VER]", "MQQBrowser": "MQQBrowser\/[VER]", "MicroMessenger": "MicroMessenger\/[VER]", "baiduboxapp": "baiduboxapp\/[VER]", "baidubrowser": "baidubrowser\/[VER]", "Iron": "Iron\/[VER]", "Safari": [ "Version\/[VER]", "Safari\/[VER]" ], "Skyfire": "Skyfire\/[VER]", "Tizen": "Tizen\/[VER]", "Webkit": "webkit[ \/][VER]", "PaleMoon": "PaleMoon\/[VER]", "Gecko": "Gecko\/[VER]", "Trident": "Trident\/[VER]", "Presto": "Presto\/[VER]", "Goanna": "Goanna\/[VER]", "iOS": " \\bi?OS\\b [VER][ ;]{1}", "Android": "Android [VER]", "BlackBerry": [ "BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]" ], "BREW": "BREW [VER]", "Java": "Java\/[VER]", "Windows Phone OS": [ "Windows Phone OS [VER]", "Windows Phone [VER]" ], "Windows Phone": "Windows Phone [VER]", "Windows CE": "Windows CE\/[VER]", "Windows NT": "Windows NT [VER]", "Symbian": [ "SymbianOS\/[VER]", "Symbian\/[VER]" ], "webOS": [ "webOS\/[VER]", "hpwOS\/[VER];" ] }, "utils": { "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", "DesktopMode": "WPDesktop", "TV": "SonyDTV|HbbTV", "WebKit": "(webkit)[ \/]([\\w.]+)", "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", "Watch": "SM-V700" }}; // following patterns come from http://detectmobilebrowsers.com/ impl.detectMobileBrowsers = { fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, tabletPattern: /android|ipad|playbook|silk/i }; var hasOwnProp = Object.prototype.hasOwnProperty, isArray; impl.FALLBACK_PHONE = 'UnknownPhone'; impl.FALLBACK_TABLET = 'UnknownTablet'; impl.FALLBACK_MOBILE = 'UnknownMobile'; isArray = ('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; }; isArray = 'isArray' in Array ? function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : Array.isArray; function equalIC(a, b) { return a != null && b != null && a.toLowerCase() === b.toLowerCase(); } function containsIC(array, value) { var valueLC, i, len = array.length; if (!len || !value) { return false; } valueLC = value.toLowerCase(); for (i = 0; i < len; ++i) { if (valueLC === array[i].toLowerCase()) { return true; } } return false; } function convertPropsToRegExp(object) { for (var key in object) { if (hasOwnProp.call(object, key)) { object[key] = new RegExp(object[key], 'i'); } } } (function init() { var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules; for (key in mobileDetectRules.props) { if (hasOwnProp.call(mobileDetectRules.props, key)) { values = mobileDetectRules.props[key]; if (!isArray(values)) { values = [values]; } len = values.length; for (i = 0; i < len; ++i) { value = values[i]; verPos = value.indexOf('[VER]'); if (verPos >= 0) { value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); } values[i] = new RegExp(value, 'i'); } mobileDetectRules.props[key] = values; } } convertPropsToRegExp(mobileDetectRules.oss); convertPropsToRegExp(mobileDetectRules.phones); convertPropsToRegExp(mobileDetectRules.tablets); convertPropsToRegExp(mobileDetectRules.uas); convertPropsToRegExp(mobileDetectRules.utils); // copy some patterns to oss0 which are tested first (see issue#15) mobileDetectRules.oss0 = { WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS }; }()); /** * Test userAgent string against a set of rules and find the first matched key. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {String|null} the matched key if found, otherwise null * @private */ impl.findMatch = function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; }; /** * Test userAgent string against a set of rules and return an array of matched keys. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {Array} an array of matched keys, may be empty when there is no match, but not null * @private */ impl.findMatches = function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; }; /** * Check the version of the given property in the User-Agent. * * @param {String} propertyName * @param {String} userAgent * @return {String} version or null if version not found * @private */ impl.getVersionStr = function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; }; /** * Check the version of the given property in the User-Agent. * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} propertyName * @param {String} userAgent * @return {Number} version or NaN if version not found * @private */ impl.getVersion = function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; }; /** * Prepare the version number. * * @param {String} version * @return {Number} the version number as a floating number * @private */ impl.prepareVersionNo = function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); }; impl.isMobileFallback = function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); }; impl.isTabletFallback = function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); }; impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } }; // t is a reference to a MobileDetect instance impl.mobileGrade = function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; }; impl.detectOS = function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); }; impl.getDeviceSmallerSide = function () { return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; }; /** * Constructor for MobileDetect object. *
    * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
    *
    * Find information how to download and install: * github.com/hgoebl/mobile-detect.js/ *
    * * @example
         *     var md = new MobileDetect(window.navigator.userAgent);     *     if (md.mobile()) {     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';     *     }     * 
    * * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent'] * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled * as phone. * This is only used in cases where the device cannot be classified as phone or tablet.
    * See Declaring Tablet Layouts * for Android.
    * If you provide a value < 0, then this "fuzzy" check is disabled. * @constructor * @global */ function MobileDetect(userAgent, maxPhoneWidth) { this.ua = userAgent || ''; this._cache = {}; //600dp is typical 7" tablet minimum width this.maxPhoneWidth = maxPhoneWidth || 600; } MobileDetect.prototype = { constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } }; // environment-dependent if (typeof window !== 'undefined' && window.screen) { MobileDetect.isPhoneSized = function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; }; } else { MobileDetect.isPhoneSized = function () {}; } // should not be replaced by a completely new object - just overwrite existing methods MobileDetect._impl = impl; MobileDetect.version = '1.3.3 2016-07-31'; return MobileDetect;}); // end of call of define()} : (define: any, undefined?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^ >define : any > : ^^^ >undefined : any @@ -25,7 +25,7 @@ define(function () { >define : any > : ^^^ >function () { 'use strict'; var impl = {}; impl.mobileDetectRules = { "phones": { "iPhone": "\\biPhone\\b|\\biPod\\b", "BlackBerry": "BlackBerry|\\bBB10\\b|rim[0-9]+", "HTC": "HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m", "Nexus": "Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6", "Dell": "Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b", "Motorola": "Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b", "Samsung": "Samsung|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F", "LG": "\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323)", "Sony": "SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533", "Asus": "Asus.*Galaxy|PadFone.*Mobile", "NokiaLumia": "Lumia [0-9]{3,4}", "Micromax": "Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b", "Palm": "PalmSource|Palm", "Vertu": "Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature", "Pantech": "PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790", "Fly": "IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250", "Wiko": "KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM", "iMobile": "i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)", "SimValley": "\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b", "Wolfgang": "AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q", "Alcatel": "Alcatel", "Nintendo": "Nintendo 3DS", "Amoi": "Amoi", "INQ": "INQ", "GenericPhone": "Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser" }, "tablets": { "iPad": "iPad|iPad.*Mobile", "NexusTablet": "Android.*Nexus[\\s]+(7|9|10)", "SamsungTablet": "SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561", "Kindle": "Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI)\\b", "SurfaceTablet": "Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)", "HPTablet": "HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10", "AsusTablet": "^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K017 |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA", "BlackBerryTablet": "PlayBook|RIM Tablet", "HTCtablet": "HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410", "MotorolaTablet": "xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617", "NookTablet": "Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2", "AcerTablet": "Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20", "ToshibaTablet": "Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO", "LGTablet": "\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b", "FujitsuTablet": "Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b", "PrestigioTablet": "PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002", "LenovoTablet": "Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)", "DellTablet": "Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7", "YarvikTablet": "Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b", "MedionTablet": "Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB", "ArnovaTablet": "AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2", "IntensoTablet": "INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004", "IRUTablet": "M702pro", "MegafonTablet": "MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b", "EbodaTablet": "E-Boda (Supreme|Impresspeed|Izzycomm|Essential)", "AllViewTablet": "Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)", "ArchosTablet": "\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b", "AinolTablet": "NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark", "NokiaLumiaTablet": "Lumia 2520", "SonyTablet": "Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP612|SOT31", "PhilipsTablet": "\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b", "CubeTablet": "Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT", "CobyTablet": "MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010", "MIDTablet": "M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10", "MSITablet": "MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b", "SMiTTablet": "Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)", "RockChipTablet": "Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A", "FlyTablet": "IQ310|Fly Vision", "bqTablet": "Android.*(bq)?.*(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris E10)|Maxwell.*Lite|Maxwell.*Plus", "HuaweiTablet": "MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim", "NecTablet": "\\bN-06D|\\bN-08D", "PantechTablet": "Pantech.*P4100", "BronchoTablet": "Broncho.*(N701|N708|N802|a710)", "VersusTablet": "TOUCHPAD.*[78910]|\\bTOUCHTAB\\b", "ZyncTablet": "z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900", "PositivoTablet": "TB07STA|TB10STA|TB07FTA|TB10FTA", "NabiTablet": "Android.*\\bNabi", "KoboTablet": "Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build", "DanewTablet": "DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b", "TexetTablet": "NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE", "PlaystationTablet": "Playstation.*(Portable|Vita)", "TrekstorTablet": "ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab", "PyleAudioTablet": "\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b", "AdvanTablet": "Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ", "DanyTechTablet": "Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1", "GalapadTablet": "Android.*\\bG1\\b", "MicromaxTablet": "Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b", "KarbonnTablet": "Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b", "AllFineTablet": "Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide", "PROSCANTablet": "\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b", "YONESTablet": "BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026", "ChangJiaTablet": "TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503", "GUTablet": "TX-A1301|TX-M9002|Q702|kf026", "PointOfViewTablet": "TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10", "OvermaxTablet": "OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)", "HCLTablet": "HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync", "DPSTablet": "DPS Dream 9|DPS Dual 7", "VistureTablet": "V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10", "CrestaTablet": "CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989", "MediatekTablet": "\\bMT8125|MT8389|MT8135|MT8377\\b", "ConcordeTablet": "Concorde([ ]+)?Tab|ConCorde ReadMan", "GoCleverTablet": "GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042", "ModecomTablet": "FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003", "VoninoTablet": "\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b", "ECSTablet": "V07OT2|TM105A|S10OT1|TR10CS1", "StorexTablet": "eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab", "VodafoneTablet": "SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497", "EssentielBTablet": "Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2", "RossMoorTablet": "RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711", "iMobileTablet": "i-mobile i-note", "TolinoTablet": "tolino tab [0-9.]+|tolino shine", "AudioSonicTablet": "\\bC-22Q|T7-QC|T-17B|T-17P\\b", "AMPETablet": "Android.* A78 ", "SkkTablet": "Android.* (SKYPAD|PHOENIX|CYCLOPS)", "TecnoTablet": "TECNO P9", "JXDTablet": "Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b", "iJoyTablet": "Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)", "FX2Tablet": "FX2 PAD7|FX2 PAD10", "XoroTablet": "KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151", "ViewsonicTablet": "ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a", "OdysTablet": "LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10", "CaptivaTablet": "CAPTIVA PAD", "IconbitTablet": "NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S", "TeclastTablet": "T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi", "OndaTablet": "\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+", "JaytechTablet": "TPC-PA762", "BlaupunktTablet": "Endeavour 800NG|Endeavour 1010", "DigmaTablet": "\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b", "EvolioTablet": "ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b", "LavaTablet": "QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b", "AocTablet": "MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712", "MpmanTablet": "MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010", "CelkonTablet": "CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b", "WolderTablet": "miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b", "MiTablet": "\\bMI PAD\\b|\\bHM NOTE 1W\\b", "NibiruTablet": "Nibiru M1|Nibiru Jupiter One", "NexoTablet": "NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI", "LeaderTablet": "TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100", "UbislateTablet": "UbiSlate[\\s]?7C", "PocketBookTablet": "Pocketbook", "KocasoTablet": "\\b(TB-1207)\\b", "Hudl": "Hudl HT7S3|Hudl 2", "TelstraTablet": "T-Hub2", "GenericTablet": "Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bJolla\\b|\\bTP750\\b" }, "oss": { "AndroidOS": "Android", "BlackBerryOS": "blackberry|\\bBB10\\b|rim tablet os", "PalmOS": "PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino", "SymbianOS": "Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b", "WindowsMobileOS": "Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;", "WindowsPhoneOS": "Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;", "iOS": "\\biPhone.*Mobile|\\biPod|\\biPad", "MeeGoOS": "MeeGo", "MaemoOS": "Maemo", "JavaOS": "J2ME\/|\\bMIDP\\b|\\bCLDC\\b", "webOS": "webOS|hpwOS", "badaOS": "\\bBada\\b", "BREWOS": "BREW" }, "uas": { "Vivaldi": "Vivaldi", "Chrome": "\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?", "Dolfin": "\\bDolfin\\b", "Opera": "Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+", "Skyfire": "Skyfire", "Edge": "Mobile Safari\/[.0-9]* Edge", "IE": "IEMobile|MSIEMobile", "Firefox": "fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile", "Bolt": "bolt", "TeaShark": "teashark", "Blazer": "Blazer", "Safari": "Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari", "Tizen": "Tizen", "UCBrowser": "UC.*Browser|UCWEB", "baiduboxapp": "baiduboxapp", "baidubrowser": "baidubrowser", "DiigoBrowser": "DiigoBrowser", "Puffin": "Puffin", "Mercury": "\\bMercury\\b", "ObigoBrowser": "Obigo", "NetFront": "NF-Browser", "GenericBrowser": "NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger", "PaleMoon": "Android.*PaleMoon|Mobile.*PaleMoon" }, "props": { "Mobile": "Mobile\/[VER]", "Build": "Build\/[VER]", "Version": "Version\/[VER]", "VendorID": "VendorID\/[VER]", "iPad": "iPad.*CPU[a-z ]+[VER]", "iPhone": "iPhone.*CPU[a-z ]+[VER]", "iPod": "iPod.*CPU[a-z ]+[VER]", "Kindle": "Kindle\/[VER]", "Chrome": [ "Chrome\/[VER]", "CriOS\/[VER]", "CrMo\/[VER]" ], "Coast": [ "Coast\/[VER]" ], "Dolfin": "Dolfin\/[VER]", "Firefox": "Firefox\/[VER]", "Fennec": "Fennec\/[VER]", "Edge": "Edge\/[VER]", "IE": [ "IEMobile\/[VER];", "IEMobile [VER]", "MSIE [VER];", "Trident\/[0-9.]+;.*rv:[VER]" ], "NetFront": "NetFront\/[VER]", "NokiaBrowser": "NokiaBrowser\/[VER]", "Opera": [ " OPR\/[VER]", "Opera Mini\/[VER]", "Version\/[VER]" ], "Opera Mini": "Opera Mini\/[VER]", "Opera Mobi": "Version\/[VER]", "UC Browser": "UC Browser[VER]", "MQQBrowser": "MQQBrowser\/[VER]", "MicroMessenger": "MicroMessenger\/[VER]", "baiduboxapp": "baiduboxapp\/[VER]", "baidubrowser": "baidubrowser\/[VER]", "Iron": "Iron\/[VER]", "Safari": [ "Version\/[VER]", "Safari\/[VER]" ], "Skyfire": "Skyfire\/[VER]", "Tizen": "Tizen\/[VER]", "Webkit": "webkit[ \/][VER]", "PaleMoon": "PaleMoon\/[VER]", "Gecko": "Gecko\/[VER]", "Trident": "Trident\/[VER]", "Presto": "Presto\/[VER]", "Goanna": "Goanna\/[VER]", "iOS": " \\bi?OS\\b [VER][ ;]{1}", "Android": "Android [VER]", "BlackBerry": [ "BlackBerry[\\w]+\/[VER]", "BlackBerry.*Version\/[VER]", "Version\/[VER]" ], "BREW": "BREW [VER]", "Java": "Java\/[VER]", "Windows Phone OS": [ "Windows Phone OS [VER]", "Windows Phone [VER]" ], "Windows Phone": "Windows Phone [VER]", "Windows CE": "Windows CE\/[VER]", "Windows NT": "Windows NT [VER]", "Symbian": [ "SymbianOS\/[VER]", "Symbian\/[VER]" ], "webOS": [ "webOS\/[VER]", "hpwOS\/[VER];" ] }, "utils": { "Bot": "Googlebot|facebookexternalhit|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom", "MobileBot": "Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2", "DesktopMode": "WPDesktop", "TV": "SonyDTV|HbbTV", "WebKit": "(webkit)[ \/]([\\w.]+)", "Console": "\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|PLAYSTATION|Xbox)\\b", "Watch": "SM-V700" }}; // following patterns come from http://detectmobilebrowsers.com/ impl.detectMobileBrowsers = { fullPattern: /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, tabletPattern: /android|ipad|playbook|silk/i }; var hasOwnProp = Object.prototype.hasOwnProperty, isArray; impl.FALLBACK_PHONE = 'UnknownPhone'; impl.FALLBACK_TABLET = 'UnknownTablet'; impl.FALLBACK_MOBILE = 'UnknownMobile'; isArray = ('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; }; isArray = 'isArray' in Array ? function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : Array.isArray; function equalIC(a, b) { return a != null && b != null && a.toLowerCase() === b.toLowerCase(); } function containsIC(array, value) { var valueLC, i, len = array.length; if (!len || !value) { return false; } valueLC = value.toLowerCase(); for (i = 0; i < len; ++i) { if (valueLC === array[i].toLowerCase()) { return true; } } return false; } function convertPropsToRegExp(object) { for (var key in object) { if (hasOwnProp.call(object, key)) { object[key] = new RegExp(object[key], 'i'); } } } (function init() { var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules; for (key in mobileDetectRules.props) { if (hasOwnProp.call(mobileDetectRules.props, key)) { values = mobileDetectRules.props[key]; if (!isArray(values)) { values = [values]; } len = values.length; for (i = 0; i < len; ++i) { value = values[i]; verPos = value.indexOf('[VER]'); if (verPos >= 0) { value = value.substring(0, verPos) + '([\\w._\\+]+)' + value.substring(verPos + 5); } values[i] = new RegExp(value, 'i'); } mobileDetectRules.props[key] = values; } } convertPropsToRegExp(mobileDetectRules.oss); convertPropsToRegExp(mobileDetectRules.phones); convertPropsToRegExp(mobileDetectRules.tablets); convertPropsToRegExp(mobileDetectRules.uas); convertPropsToRegExp(mobileDetectRules.utils); // copy some patterns to oss0 which are tested first (see issue#15) mobileDetectRules.oss0 = { WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS, WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS }; }()); /** * Test userAgent string against a set of rules and find the first matched key. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {String|null} the matched key if found, otherwise null * @private */ impl.findMatch = function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; }; /** * Test userAgent string against a set of rules and return an array of matched keys. * @param {Object} rules (key is String, value is RegExp) * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent'). * @returns {Array} an array of matched keys, may be empty when there is no match, but not null * @private */ impl.findMatches = function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; }; /** * Check the version of the given property in the User-Agent. * * @param {String} propertyName * @param {String} userAgent * @return {String} version or null if version not found * @private */ impl.getVersionStr = function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; }; /** * Check the version of the given property in the User-Agent. * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} propertyName * @param {String} userAgent * @return {Number} version or NaN if version not found * @private */ impl.getVersion = function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; }; /** * Prepare the version number. * * @param {String} version * @return {Number} the version number as a floating number * @private */ impl.prepareVersionNo = function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); }; impl.isMobileFallback = function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); }; impl.isTabletFallback = function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); }; impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } }; // t is a reference to a MobileDetect instance impl.mobileGrade = function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; }; impl.detectOS = function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); }; impl.getDeviceSmallerSide = function () { return window.screen.width < window.screen.height ? window.screen.width : window.screen.height; }; /** * Constructor for MobileDetect object. *
    * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
    *
    * Find information how to download and install: * github.com/hgoebl/mobile-detect.js/ *
    * * @example
         *     var md = new MobileDetect(window.navigator.userAgent);     *     if (md.mobile()) {     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';     *     }     * 
    * * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent'] * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum * width of smallest device side (in logical "CSS" pixels) until a device detected as mobile will be handled * as phone. * This is only used in cases where the device cannot be classified as phone or tablet.
    * See Declaring Tablet Layouts * for Android.
    * If you provide a value < 0, then this "fuzzy" check is disabled. * @constructor * @global */ function MobileDetect(userAgent, maxPhoneWidth) { this.ua = userAgent || ''; this._cache = {}; //600dp is typical 7" tablet minimum width this.maxPhoneWidth = maxPhoneWidth || 600; } MobileDetect.prototype = { constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } }; // environment-dependent if (typeof window !== 'undefined' && window.screen) { MobileDetect.isPhoneSized = function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; }; } else { MobileDetect.isPhoneSized = function () {}; } // should not be replaced by a completely new object - just overwrite existing methods MobileDetect._impl = impl; MobileDetect.version = '1.3.3 2016-07-31'; return MobileDetect;} : () => { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 'use strict'; >'use strict' : "use strict" @@ -1592,9 +1592,9 @@ define(function () { var hasOwnProp = Object.prototype.hasOwnProperty, >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >Object.prototype.hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Object.prototype : Object > : ^^^^^^ >Object : ObjectConstructor @@ -1602,7 +1602,7 @@ define(function () { >prototype : Object > : ^^^^^^ >hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ isArray; >isArray : any @@ -1646,11 +1646,11 @@ define(function () { isArray = ('isArray' in Array) ? >isArray = ('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >isArray : any > : ^^^ >('isArray' in Array) ? Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >('isArray' in Array) : boolean > : ^^^^^^^ >'isArray' in Array : boolean @@ -1662,13 +1662,13 @@ define(function () { Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; }; >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : any > : ^^^ >Object.prototype.toString.call(value) === '[object Array]' : boolean @@ -1676,7 +1676,7 @@ define(function () { >Object.prototype.toString.call(value) : any > : ^^^ >Object.prototype.toString.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >Object.prototype.toString : () => string > : ^^^^^^^^^^^^ >Object.prototype : Object @@ -1688,7 +1688,7 @@ define(function () { >toString : () => string > : ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >value : any > : ^^^ >'[object Array]' : "[object Array]" @@ -1710,7 +1710,7 @@ define(function () { ? function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } >function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : (value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : any > : ^^^ >Object.prototype.toString.call(value) === '[object Array]' : boolean @@ -1718,7 +1718,7 @@ define(function () { >Object.prototype.toString.call(value) : any > : ^^^ >Object.prototype.toString.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >Object.prototype.toString : () => string > : ^^^^^^^^^^^^ >Object.prototype : Object @@ -1730,7 +1730,7 @@ define(function () { >toString : () => string > : ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >value : any > : ^^^ >'[object Array]' : "[object Array]" @@ -1746,7 +1746,7 @@ define(function () { function equalIC(a, b) { >equalIC : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -1787,7 +1787,7 @@ define(function () { function containsIC(array, value) { >containsIC : (array: any, value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >array : any > : ^^^ >value : any @@ -1885,7 +1885,7 @@ define(function () { function convertPropsToRegExp(object) { >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >object : any > : ^^^ @@ -1899,11 +1899,11 @@ define(function () { >hasOwnProp.call(object, key) : any > : ^^^ >hasOwnProp.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >object : any > : ^^^ >key : string @@ -1980,11 +1980,11 @@ define(function () { >hasOwnProp.call(mobileDetectRules.props, key) : any > : ^^^ >hasOwnProp.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >mobileDetectRules.props : any > : ^^^ >mobileDetectRules : any @@ -2173,7 +2173,7 @@ define(function () { >convertPropsToRegExp(mobileDetectRules.oss) : void > : ^^^^ >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >mobileDetectRules.oss : any > : ^^^ >mobileDetectRules : any @@ -2185,7 +2185,7 @@ define(function () { >convertPropsToRegExp(mobileDetectRules.phones) : void > : ^^^^ >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >mobileDetectRules.phones : any > : ^^^ >mobileDetectRules : any @@ -2197,7 +2197,7 @@ define(function () { >convertPropsToRegExp(mobileDetectRules.tablets) : void > : ^^^^ >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >mobileDetectRules.tablets : any > : ^^^ >mobileDetectRules : any @@ -2209,7 +2209,7 @@ define(function () { >convertPropsToRegExp(mobileDetectRules.uas) : void > : ^^^^ >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >mobileDetectRules.uas : any > : ^^^ >mobileDetectRules : any @@ -2221,7 +2221,7 @@ define(function () { >convertPropsToRegExp(mobileDetectRules.utils) : void > : ^^^^ >convertPropsToRegExp : (object: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >mobileDetectRules.utils : any > : ^^^ >mobileDetectRules : any @@ -2282,7 +2282,7 @@ define(function () { */ impl.findMatch = function(rules, userAgent) { >impl.findMatch = function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; } : (rules: any, userAgent: any) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >impl.findMatch : any > : ^^^ >impl : {} @@ -2290,7 +2290,7 @@ define(function () { >findMatch : any > : ^^^ >function(rules, userAgent) { for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { return key; } } } return null; } : (rules: any, userAgent: any) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >rules : any > : ^^^ >userAgent : any @@ -2306,11 +2306,11 @@ define(function () { >hasOwnProp.call(rules, key) : any > : ^^^ >hasOwnProp.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >rules : any > : ^^^ >key : string @@ -2350,7 +2350,7 @@ define(function () { */ impl.findMatches = function(rules, userAgent) { >impl.findMatches = function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; } : (rules: any, userAgent: any) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^ >impl.findMatches : any > : ^^^ >impl : {} @@ -2358,7 +2358,7 @@ define(function () { >findMatches : any > : ^^^ >function(rules, userAgent) { var result = []; for (var key in rules) { if (hasOwnProp.call(rules, key)) { if (rules[key].test(userAgent)) { result.push(key); } } } return result; } : (rules: any, userAgent: any) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^ >rules : any > : ^^^ >userAgent : any @@ -2380,11 +2380,11 @@ define(function () { >hasOwnProp.call(rules, key) : any > : ^^^ >hasOwnProp.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >rules : any > : ^^^ >key : string @@ -2410,11 +2410,11 @@ define(function () { >result.push(key) : number > : ^^^^^^ >result.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >result : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >key : string > : ^^^^^^ } @@ -2436,7 +2436,7 @@ define(function () { */ impl.getVersionStr = function (propertyName, userAgent) { >impl.getVersionStr = function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; } : (propertyName: any, userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >impl.getVersionStr : any > : ^^^ >impl : {} @@ -2444,7 +2444,7 @@ define(function () { >getVersionStr : any > : ^^^ >function (propertyName, userAgent) { var props = impl.mobileDetectRules.props, patterns, i, len, match; if (hasOwnProp.call(props, propertyName)) { patterns = props[propertyName]; len = patterns.length; for (i = 0; i < len; ++i) { match = patterns[i].exec(userAgent); if (match !== null) { return match[1]; } } } return null; } : (propertyName: any, userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >propertyName : any > : ^^^ >userAgent : any @@ -2476,11 +2476,11 @@ define(function () { >hasOwnProp.call(props, propertyName) : any > : ^^^ >hasOwnProp.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >hasOwnProp : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >props : any > : ^^^ >propertyName : any @@ -2578,7 +2578,7 @@ define(function () { */ impl.getVersion = function (propertyName, userAgent) { >impl.getVersion = function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; } : (propertyName: any, userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >impl.getVersion : any > : ^^^ >impl : {} @@ -2586,7 +2586,7 @@ define(function () { >getVersion : any > : ^^^ >function (propertyName, userAgent) { var version = impl.getVersionStr(propertyName, userAgent); return version ? impl.prepareVersionNo(version) : NaN; } : (propertyName: any, userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >propertyName : any > : ^^^ >userAgent : any @@ -2637,7 +2637,7 @@ define(function () { */ impl.prepareVersionNo = function (version) { >impl.prepareVersionNo = function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); } : (version: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >impl.prepareVersionNo : any > : ^^^ >impl : {} @@ -2645,7 +2645,7 @@ define(function () { >prepareVersionNo : any > : ^^^ >function (version) { var numbers; numbers = version.split(/[a-z._ \/\-]/i); if (numbers.length === 1) { version = numbers[0]; } if (numbers.length > 1) { version = numbers[0] + '.'; numbers.shift(); version += numbers.join(''); } return Number(version); } : (version: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >version : any > : ^^^ @@ -2759,7 +2759,7 @@ define(function () { impl.isMobileFallback = function (userAgent) { >impl.isMobileFallback = function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); } : (userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >impl.isMobileFallback : any > : ^^^ >impl : {} @@ -2767,7 +2767,7 @@ define(function () { >isMobileFallback : any > : ^^^ >function (userAgent) { return impl.detectMobileBrowsers.fullPattern.test(userAgent) || impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4)); } : (userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >userAgent : any > : ^^^ @@ -2827,7 +2827,7 @@ define(function () { impl.isTabletFallback = function (userAgent) { >impl.isTabletFallback = function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); } : (userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >impl.isTabletFallback : any > : ^^^ >impl : {} @@ -2835,7 +2835,7 @@ define(function () { >isTabletFallback : any > : ^^^ >function (userAgent) { return impl.detectMobileBrowsers.tabletPattern.test(userAgent); } : (userAgent: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >userAgent : any > : ^^^ @@ -2863,7 +2863,7 @@ define(function () { impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { >impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } } : (cache: any, userAgent: any, maxPhoneWidth: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >impl.prepareDetectionCache : any > : ^^^ >impl : {} @@ -2871,7 +2871,7 @@ define(function () { >prepareDetectionCache : any > : ^^^ >function (cache, userAgent, maxPhoneWidth) { if (cache.mobile !== undefined) { return; } var phone, tablet, phoneSized; // first check for stronger tablet rules, then phone (see issue#5) tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent); if (tablet) { cache.mobile = cache.tablet = tablet; cache.phone = null; return; // unambiguously identified as tablet } phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent); if (phone) { cache.mobile = cache.phone = phone; cache.tablet = null; return; // unambiguously identified as phone } // our rules haven't found a match -> try more general fallback rules if (impl.isMobileFallback(userAgent)) { phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth); if (phoneSized === undefined) { cache.mobile = impl.FALLBACK_MOBILE; cache.tablet = cache.phone = null; } else if (phoneSized) { cache.mobile = cache.phone = impl.FALLBACK_PHONE; cache.tablet = null; } else { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } } else if (impl.isTabletFallback(userAgent)) { cache.mobile = cache.tablet = impl.FALLBACK_TABLET; cache.phone = null; } else { // not mobile at all! cache.mobile = cache.tablet = cache.phone = null; } } : (cache: any, userAgent: any, maxPhoneWidth: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >cache : any > : ^^^ >userAgent : any @@ -3049,11 +3049,11 @@ define(function () { >MobileDetect.isPhoneSized(maxPhoneWidth) : any > : ^^^ >MobileDetect.isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >maxPhoneWidth : any > : ^^^ @@ -3251,7 +3251,7 @@ define(function () { // t is a reference to a MobileDetect instance impl.mobileGrade = function (t) { >impl.mobileGrade = function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; } : (t: any) => "A" | "B" | "C" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >impl.mobileGrade : any > : ^^^ >impl : {} @@ -3259,7 +3259,7 @@ define(function () { >mobileGrade : any > : ^^^ >function (t) { // impl note: // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version. // When changes are made in Mobile_Detect.php, copy this method and replace: // $this-> / t. // self::MOBILE_GRADE_(.) / '$1' // , self::VERSION_TYPE_FLOAT / (nothing) // isIOS() / os('iOS') // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE var $isMobile = t.mobile() !== null; if ( // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1) t.os('iOS') && t.version('iPad')>=4.3 || t.os('iOS') && t.version('iPhone')>=3.1 || t.os('iOS') && t.version('iPod')>=3.1 || // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5) // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7 ( t.version('Android')>2.1 && t.is('Webkit') ) || // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800 t.version('Windows Phone OS')>=7.0 || // Blackberry 7 - Tested on BlackBerry Torch 9810 // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670 t.is('BlackBerry') && t.version('BlackBerry')>=6.0 || // Blackberry Playbook (1.0-2.0) - Tested on PlayBook t.match('Playbook.*Tablet') || // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0) ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) || // Palm WebOS 3.0 - Tested on HP TouchPad t.match('hp.*TouchPad') || // Firefox Mobile (12 Beta) - Tested on Android 2.3 device ( t.is('Firefox') && t.version('Firefox')>=12 ) || // Chrome for Android - Tested on Android 4.0, 4.1 device ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) || // Skyfire 4.1 - Tested on Android 2.3 device ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) || // Opera Mobile 11.5-12: Tested on Android 2.3 ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) || // Meego 1.2 - Tested on Nokia 950 and N9 t.is('MeeGoOS') || // Tizen (pre-release) - Tested on early hardware t.is('Tizen') || // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser // @todo: more tests here! t.is('Dolfin') && t.version('Bada')>=2.0 || // UC Browser - Tested on Android 2.3 device ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) || // Kindle 3 and Fire - Tested on the built-in WebKit browser for each ( t.match('Kindle Fire') || t.is('Kindle') && t.version('Kindle')>=3.0 ) || // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet t.is('AndroidOS') && t.is('NookTablet') || // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7 t.version('Chrome')>=11 && !$isMobile || // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7 t.version('Safari')>=5.0 && !$isMobile || // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7 t.version('Firefox')>=4.0 && !$isMobile || // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7 t.version('MSIE')>=7.0 && !$isMobile || // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7 // @reference: http://my.opera.com/community/openweb/idopera/ t.version('Opera')>=10 && !$isMobile ){ return 'A'; } if ( t.os('iOS') && t.version('iPad')<4.3 || t.os('iOS') && t.version('iPhone')<3.1 || t.os('iOS') && t.version('iPod')<3.1 || // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770 t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 || //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3 ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 && (t.version('Android')>=2.3 || t.is('iOS')) ) || // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1) t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') || // @todo: report this (tested on Nokia N71) t.version('Opera Mobi')>=11 && t.is('SymbianOS') ){ return 'B'; } if ( // Blackberry 4.x - Tested on the Curve 8330 t.version('BlackBerry')<5.0 || // Windows Mobile - Tested on the HTC Leo (WinMo 5.2) t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2 ){ return 'C'; } //All older smartphone platforms and featurephones - Any device that doesn't support media queries //will receive the basic, C grade experience. return 'C'; } : (t: any) => "A" | "B" | "C" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >t : any > : ^^^ @@ -4346,7 +4346,7 @@ define(function () { impl.detectOS = function (ua) { >impl.detectOS = function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); } : (ua: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >impl.detectOS : any > : ^^^ >impl : {} @@ -4354,7 +4354,7 @@ define(function () { >detectOS : any > : ^^^ >function (ua) { return impl.findMatch(impl.mobileDetectRules.oss0, ua) || impl.findMatch(impl.mobileDetectRules.oss, ua); } : (ua: any) => any -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >ua : any > : ^^^ @@ -4499,7 +4499,7 @@ define(function () { */ function MobileDetect(userAgent, maxPhoneWidth) { >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >userAgent : any > : ^^^ >maxPhoneWidth : any @@ -4553,21 +4553,21 @@ define(function () { MobileDetect.prototype = { >MobileDetect.prototype = { constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } } : { constructor: { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; }; mobile: () => any; phone: () => any; tablet: () => any; userAgent: () => any; userAgents: () => any; os: () => any; version: (key: any) => any; versionStr: (key: any) => any; is: (key: any) => boolean; match: (pattern: any) => any; isPhoneSized: (maxPhoneWidth: any) => any; mobileGrade: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MobileDetect.prototype : any > : ^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >prototype : any > : ^^^ >{ constructor: MobileDetect, /** * Returns the detected phone or tablet type or null if it is not a mobile device. *
    * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone, UnknownTablet or * UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get UnknownMobile here.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key for the phone family or tablet family, e.g. "Nexus". * @function MobileDetect#mobile */ mobile: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; }, /** * Returns the detected phone type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPhone, BlackBerry, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus, * NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile, SimValley, * Wolfgang, Alcatel, Nintendo, Amoi, INQ, GenericPhone
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownPhone or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the phone family or producer, e.g. "iPhone" * @function MobileDetect#phone */ phone: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; }, /** * Returns the detected tablet type/family string or null. *
    * The returned tablet (family or producer) is one of following keys:
    *
    iPad, NexusTablet, SamsungTablet, Kindle, SurfaceTablet, HPTablet, AsusTablet, * BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet, AcerTablet, * ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet, LenovoTablet, * DellTablet, YarvikTablet, MedionTablet, ArnovaTablet, IntensoTablet, IRUTablet, * MegafonTablet, EbodaTablet, AllViewTablet, ArchosTablet, AinolTablet, * NokiaLumiaTablet, SonyTablet, PhilipsTablet, CubeTablet, CobyTablet, MIDTablet, * MSITablet, SMiTTablet, RockChipTablet, FlyTablet, bqTablet, HuaweiTablet, * NecTablet, PantechTablet, BronchoTablet, VersusTablet, ZyncTablet, * PositivoTablet, NabiTablet, KoboTablet, DanewTablet, TexetTablet, * PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet, * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet, * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet, * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet, * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet, * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet, * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet, * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet, * OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet, OndaTablet, * JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet, LavaTablet, * AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MiTablet, NibiruTablet, * NexoTablet, LeaderTablet, UbislateTablet, PocketBookTablet, KocasoTablet, Hudl, * TelstraTablet, GenericTablet
    *
    * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against * the patterns of detectmobilebrowsers.com. If this test * is positive, a value of UnknownTablet or UnknownMobile is returned.
    * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    *
    * When used server-side (node.js), there is no way to tell the difference between UnknownTablet * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile} * will return UnknownMobile.
    * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for: * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}. * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use. *
    * In most cases you will use the return value just as a boolean. * * @returns {String} the key of the tablet family or producer, e.g. "SamsungTablet" * @function MobileDetect#tablet */ tablet: function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; }, /** * Returns the (first) detected user-agent string or null. *
    * The returned user-agent is one of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {String} the key for the detected user-agent or null * @function MobileDetect#userAgent */ userAgent: function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; }, /** * Returns all detected user-agent strings. *
    * The array is empty or contains one or more of following keys:
    *
    Vivaldi, Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, * Blazer, Safari, Tizen, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, * Puffin, Mercury, ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    *
    * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare * cases where a mobile device pretends to be more than one particular browser. You can get the * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by * providing one of the defined keys as first argument to {@link MobileDetect#is}. * * @returns {Array} the array of detected user-agent keys or [] * @function MobileDetect#userAgents */ userAgents: function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; }, /** * Returns the detected operating system string or null. *
    * The operating system is one of following keys:
    *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS, * iOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    * * @returns {String} the key for the detected operating system. * @function MobileDetect#os */ os: function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; }, /** * Get the version (as Number) of the given property in the User-Agent. *
    * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31) * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version. * Be careful when comparing this value with '==' operator! * @function MobileDetect#version */ version: function (key) { return impl.getVersion(key, this.ua); }, /** * Get the version (as String) of the given property in the User-Agent. *
    * * @param {String} key a key defining a thing which has a version.
    * You can use one of following keys:
    *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast, * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini, * Opera Mobi, UC Browser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser, * Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon, Gecko, Trident, Presto, Goanna, * iOS, Android, BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows * CE, Windows NT, Symbian, webOS
    * * @returns {String} the "raw" version as String or null if User-Agent doesn't contain this version. * * @function MobileDetect#versionStr */ versionStr: function (key) { return impl.getVersionStr(key, this.ua); }, /** * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string. * * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or * tablet family.
    * For a complete list of possible values, see {@link MobileDetect#userAgent}, * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    * Additionally you have following keys:
    *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    * * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone, * tablet or one of the listed additional keys, otherwise false * @function MobileDetect#is */ is: function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); }, /** * Do a quick test against navigator::userAgent. * * @param {String|RegExp} pattern the pattern, either as String or RegExp * (a string will be converted to a case-insensitive RegExp). * @returns {boolean} true when the pattern matches, otherwise false * @function MobileDetect#match */ match: function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); }, /** * Checks whether the mobile device can be considered as phone regarding screen.width. *
    * Obviously this method makes sense in browser environments only (not for Node.js)! * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    * The argument is optional and if not present or falsy, the value of the constructor is taken. * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    * Will always return undefined server-side. */ isPhoneSized: function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); }, /** * Returns the mobile grade ('A', 'B', 'C'). * * @returns {String} one of the mobile grades ('A', 'B', 'C'). * @function MobileDetect#mobileGrade */ mobileGrade: function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } } : { constructor: { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; }; mobile: () => any; phone: () => any; tablet: () => any; userAgent: () => any; userAgents: () => any; os: () => any; version: (key: any) => any; versionStr: (key: any) => any; is: (key: any) => boolean; match: (pattern: any) => any; isPhoneSized: (maxPhoneWidth: any) => any; mobileGrade: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ constructor: MobileDetect, >constructor : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** * Returns the detected phone or tablet type or null if it is not a mobile device. @@ -4595,7 +4595,7 @@ define(function () { >mobile : () => any > : ^^^^^^^^^ >function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.mobile; } : () => any -> : ^^^^^^^^^ +> : impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); >impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth) : any @@ -4668,7 +4668,7 @@ define(function () { >phone : () => any > : ^^^^^^^^^ >function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.phone; } : () => any -> : ^^^^^^^^^ +> : impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); >impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth) : any @@ -4760,7 +4760,7 @@ define(function () { >tablet : () => any > : ^^^^^^^^^ >function () { impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); return this._cache.tablet; } : () => any -> : ^^^^^^^^^ +> : impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth); >impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth) : any @@ -4824,7 +4824,7 @@ define(function () { >userAgent : () => any > : ^^^^^^^^^ >function () { if (this._cache.userAgent === undefined) { this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgent; } : () => any -> : ^^^^^^^^^ +> : if (this._cache.userAgent === undefined) { >this._cache.userAgent === undefined : boolean @@ -4914,7 +4914,7 @@ define(function () { >userAgents : () => any > : ^^^^^^^^^ >function () { if (this._cache.userAgents === undefined) { this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua); } return this._cache.userAgents; } : () => any -> : ^^^^^^^^^ +> : if (this._cache.userAgents === undefined) { >this._cache.userAgents === undefined : boolean @@ -4998,7 +4998,7 @@ define(function () { >os : () => any > : ^^^^^^^^^ >function () { if (this._cache.os === undefined) { this._cache.os = impl.detectOS(this.ua); } return this._cache.os; } : () => any -> : ^^^^^^^^^ +> : if (this._cache.os === undefined) { >this._cache.os === undefined : boolean @@ -5078,9 +5078,9 @@ define(function () { */ version: function (key) { >version : (key: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function (key) { return impl.getVersion(key, this.ua); } : (key: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : >key : any > : ^^^ @@ -5123,9 +5123,9 @@ define(function () { */ versionStr: function (key) { >versionStr : (key: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function (key) { return impl.getVersionStr(key, this.ua); } : (key: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : >key : any > : ^^^ @@ -5165,9 +5165,9 @@ define(function () { */ is: function (key) { >is : (key: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >function (key) { return containsIC(this.userAgents(), key) || equalIC(key, this.os()) || equalIC(key, this.phone()) || equalIC(key, this.tablet()) || containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key); } : (key: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >key : any > : ^^^ @@ -5183,7 +5183,7 @@ define(function () { >containsIC(this.userAgents(), key) : boolean > : ^^^^^^^ >containsIC : (array: any, value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >this.userAgents() : any > : ^^^ >this.userAgents : any @@ -5199,7 +5199,7 @@ define(function () { >equalIC(key, this.os()) : boolean > : ^^^^^^^ >equalIC : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >key : any > : ^^^ >this.os() : any @@ -5215,7 +5215,7 @@ define(function () { >equalIC(key, this.phone()) : boolean > : ^^^^^^^ >equalIC : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >key : any > : ^^^ >this.phone() : any @@ -5231,7 +5231,7 @@ define(function () { >equalIC(key, this.tablet()) : boolean > : ^^^^^^^ >equalIC : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >key : any > : ^^^ >this.tablet() : any @@ -5247,7 +5247,7 @@ define(function () { >containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key) : boolean > : ^^^^^^^ >containsIC : (array: any, value: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >impl.findMatches(impl.mobileDetectRules.utils, this.ua) : any > : ^^^ >impl.findMatches : any @@ -5287,9 +5287,9 @@ define(function () { */ match: function (pattern) { >match : (pattern: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function (pattern) { if (!(pattern instanceof RegExp)) { pattern = new RegExp(pattern, 'i'); } return pattern.test(this.ua); } : (pattern: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >pattern : any > : ^^^ @@ -5349,9 +5349,9 @@ define(function () { */ isPhoneSized: function (maxPhoneWidth) { >isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function (maxPhoneWidth) { return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth); } : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >maxPhoneWidth : any > : ^^^ @@ -5359,11 +5359,11 @@ define(function () { >MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth) : any > : ^^^ >MobileDetect.isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >maxPhoneWidth || this.maxPhoneWidth : any > : ^^^ >maxPhoneWidth : any @@ -5387,7 +5387,7 @@ define(function () { >mobileGrade : () => any > : ^^^^^^^^^ >function () { if (this._cache.grade === undefined) { this._cache.grade = impl.mobileGrade(this); } return this._cache.grade; } : () => any -> : ^^^^^^^^^ +> : if (this._cache.grade === undefined) { >this._cache.grade === undefined : boolean @@ -5464,15 +5464,15 @@ define(function () { MobileDetect.isPhoneSized = function (maxPhoneWidth) { >MobileDetect.isPhoneSized = function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; } : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >MobileDetect.isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function (maxPhoneWidth) { return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth; } : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >maxPhoneWidth : any > : ^^^ @@ -5506,11 +5506,11 @@ define(function () { >MobileDetect.isPhoneSized = function () {} : () => void > : ^^^^^^^^^^ >MobileDetect.isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isPhoneSized : (maxPhoneWidth: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function () {} : () => void > : ^^^^^^^^^^ } @@ -5522,11 +5522,11 @@ define(function () { >MobileDetect._impl : {} > : ^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >_impl : {} > : ^^ >impl : {} -> : ^^ +> : MobileDetect.version = '1.3.3 2016-07-31'; >MobileDetect.version = '1.3.3 2016-07-31' : "1.3.3 2016-07-31" @@ -5534,7 +5534,7 @@ define(function () { >MobileDetect.version : string > : ^^^^^^ >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >version : string > : ^^^^^^ >'1.3.3 2016-07-31' : "1.3.3 2016-07-31" @@ -5542,16 +5542,16 @@ define(function () { return MobileDetect; >MobileDetect : { (userAgent: any, maxPhoneWidth: any): void; isPhoneSized(maxPhoneWidth: any): any; _impl: {}; version: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }); // end of call of define() })((function (undefined) { >(function (undefined) { if (typeof module !== 'undefined' && module.exports) { return function (factory) { module.exports = factory(); }; } else if (typeof define === 'function' && define.amd) { return define; } else if (typeof window !== 'undefined') { return function (factory) { window.MobileDetect = factory(); }; } else { // please file a bug if you get this error! throw new Error('unknown environment'); }})() : any > : ^^^ >(function (undefined) { if (typeof module !== 'undefined' && module.exports) { return function (factory) { module.exports = factory(); }; } else if (typeof define === 'function' && define.amd) { return define; } else if (typeof window !== 'undefined') { return function (factory) { window.MobileDetect = factory(); }; } else { // please file a bug if you get this error! throw new Error('unknown environment'); }}) : (undefined?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (undefined) { if (typeof module !== 'undefined' && module.exports) { return function (factory) { module.exports = factory(); }; } else if (typeof define === 'function' && define.amd) { return define; } else if (typeof window !== 'undefined') { return function (factory) { window.MobileDetect = factory(); }; } else { // please file a bug if you get this error! throw new Error('unknown environment'); }} : (undefined?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >undefined : any > : ^^^ @@ -5575,7 +5575,7 @@ define(function () { return function (factory) { module.exports = factory(); }; >function (factory) { module.exports = factory(); } : (factory: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >factory : any > : ^^^ >module.exports = factory() : any @@ -5625,7 +5625,7 @@ define(function () { return function (factory) { window.MobileDetect = factory(); }; >function (factory) { window.MobileDetect = factory(); } : (factory: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >factory : any > : ^^^ >window.MobileDetect = factory() : any diff --git a/tests/baselines/reference/fixTypeParameterInSignatureWithRestParameters.types b/tests/baselines/reference/fixTypeParameterInSignatureWithRestParameters.types index de1e5afbcd650..06c516ecfb112 100644 --- a/tests/baselines/reference/fixTypeParameterInSignatureWithRestParameters.types +++ b/tests/baselines/reference/fixTypeParameterInSignatureWithRestParameters.types @@ -3,7 +3,7 @@ === fixTypeParameterInSignatureWithRestParameters.ts === function bar(item1: T, item2: T) { } >bar : (item1: T, item2: T) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >item1 : T > : ^ >item2 : T @@ -13,7 +13,7 @@ bar(1, ""); // Should be ok >bar(1, "") : void > : ^^^^ >bar : (item1: T, item2: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >"" : "" diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly1.types b/tests/baselines/reference/fixingTypeParametersRepeatedly1.types index f71651c4169cb..9badcb364d6f5 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly1.types +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly1.types @@ -3,15 +3,15 @@ === fixingTypeParametersRepeatedly1.ts === declare function f(x: T, y: (p: T) => T, z: (p: T) => T): T; >f : (x: T, y: (p: T) => T, z: (p: T) => T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ >z : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -19,15 +19,15 @@ f("", x => null, x => x.toLowerCase()); >f("", x => null, x => x.toLowerCase()) : string > : ^^^^^^ >f : (x: T, y: (p: T) => T, z: (p: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >x => null : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x => x.toLowerCase() : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.toLowerCase() : string @@ -42,34 +42,34 @@ f("", x => null, x => x.toLowerCase()); // First overload of g should type check just like f declare function g(x: T, y: (p: T) => T, z: (p: T) => T): T; >g : { (x: T, y: (p: T) => T, z: (p: T) => T): T; (): any; } -> : ^^^ ^^^^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x : T > : ^ >y : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ >z : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ declare function g(); >g : { (x: T, y: (p: T) => T, z: (p: T) => T): T; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ g("", x => null, x => x.toLowerCase()); >g("", x => null, x => x.toLowerCase()) : any >g : { (x: T, y: (p: T) => T, z: (p: T) => T): T; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >"" : "" > : ^^ >x => null : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x => x.toLowerCase() : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.toLowerCase() : string diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly2.types b/tests/baselines/reference/fixingTypeParametersRepeatedly2.types index ccc2fe2b68b23..e6508d2a756da 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly2.types +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly2.types @@ -18,11 +18,11 @@ var derived: Derived; declare function foo(x: T, func: (p: T) => T): T; >foo : (x: T, func: (p: T) => T) => T -> : ^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -32,11 +32,11 @@ var result = foo(derived, d => d.toBase()); >foo(derived, d => d.toBase()) : Derived > : ^^^^^^^ >foo : (x: T, func: (p: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >derived : Derived > : ^^^^^^^ >d => d.toBase() : (d: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : Derived > : ^^^^^^^ >d.toBase() : Base @@ -52,21 +52,21 @@ var result = foo(derived, d => d.toBase()); // The same error should be observed in both cases. declare function bar(x: T, func: (p: T) => T): T; >bar : { (x: T, func: (p: T) => T): T; (x: T_1, func: (p: T_1) => T_1): T_1; } -> : ^^^ ^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ declare function bar(x: T, func: (p: T) => T): T; >bar : { (x: T_1, func: (p: T_1) => T_1): T_1; (x: T, func: (p: T) => T): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -76,11 +76,11 @@ var result = bar(derived, d => d.toBase()); >bar(derived, d => d.toBase()) : Base > : ^^^^ >bar : { (x: T, func: (p: T) => T): T; (x: T_1, func: (p: T_1) => T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >derived : Derived > : ^^^^^^^ >d => d.toBase() : (d: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : Derived > : ^^^^^^^ >d.toBase() : Base diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly3.types b/tests/baselines/reference/fixingTypeParametersRepeatedly3.types index 11c7e7f502f1e..d75368be42d48 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly3.types +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly3.types @@ -17,11 +17,11 @@ var derived: Derived; declare function foo(x: T, func: (p: T) => T): T; >foo : (x: T, func: (p: T) => T) => T -> : ^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -31,11 +31,11 @@ var result = foo(derived, d => d.toBase()); >foo(derived, d => d.toBase()) : Derived > : ^^^^^^^ >foo : (x: T, func: (p: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >derived : Derived > : ^^^^^^^ >d => d.toBase() : (d: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : Derived > : ^^^^^^^ >d.toBase() : Base @@ -51,21 +51,21 @@ var result = foo(derived, d => d.toBase()); // result2 should have the same type as result declare function bar(x: T, func: (p: T) => T): T; >bar : { (x: T, func: (p: T) => T): T; (x: T_1, func: (p: T_1) => T_1): T_1; } -> : ^^^ ^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ declare function bar(x: T, func: (p: T) => T): T; >bar : { (x: T_1, func: (p: T_1) => T_1): T_1; (x: T, func: (p: T) => T): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >func : (p: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ @@ -75,11 +75,11 @@ var result2 = bar(derived, d => d.toBase()); >bar(derived, d => d.toBase()) : Base > : ^^^^ >bar : { (x: T, func: (p: T) => T): T; (x: T_1, func: (p: T_1) => T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >derived : Derived > : ^^^^^^^ >d => d.toBase() : (d: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >d : Derived > : ^^^^^^^ >d.toBase() : Base diff --git a/tests/baselines/reference/flatArrayNoExcessiveStackDepth.types b/tests/baselines/reference/flatArrayNoExcessiveStackDepth.types index 180fd27986dbc..862dfecd599ec 100644 --- a/tests/baselines/reference/flatArrayNoExcessiveStackDepth.types +++ b/tests/baselines/reference/flatArrayNoExcessiveStackDepth.types @@ -19,13 +19,13 @@ const bar = foo.flatMap(bar => bar as Foo); >foo.flatMap(bar => bar as Foo) : string[] > : ^^^^^^^^ >foo.flatMap : (callback: (this: This, value: unknown, index: number, array: unknown[]) => U | readonly U[], thisArg?: This | undefined) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : unknown[] > : ^^^^^^^^^ >flatMap : (callback: (this: This, value: unknown, index: number, array: unknown[]) => U | readonly U[], thisArg?: This | undefined) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar => bar as Foo : (this: undefined, bar: unknown) => Foo -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >bar : unknown > : ^^^^^^^ >bar as Foo : Foo @@ -39,9 +39,9 @@ interface Foo extends Array {} const repro_43249 = (value: unknown) => { >repro_43249 : (value: unknown) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(value: unknown) => { if (typeof value !== "string") { throw new Error("No"); } const match = value.match(/anything/) || []; const [, extracted] = match;} : (value: unknown) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : >value : unknown > : ^^^^^^^ @@ -71,11 +71,11 @@ const repro_43249 = (value: unknown) => { >value.match(/anything/) : RegExpMatchArray | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >value.match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : string > : ^^^^^^ >match : { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >/anything/ : RegExp > : ^^^^^^ >[] : [] @@ -93,7 +93,7 @@ const repro_43249 = (value: unknown) => { function f(x: FlatArray, y: FlatArray) { >f : (x: FlatArray, y: FlatArray) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : FlatArray > : ^^^^^^^^^^^^^^^^^^^ >y : FlatArray diff --git a/tests/baselines/reference/flowAfterFinally1.types b/tests/baselines/reference/flowAfterFinally1.types index d11b165a66661..97cc0abe60c7c 100644 --- a/tests/baselines/reference/flowAfterFinally1.types +++ b/tests/baselines/reference/flowAfterFinally1.types @@ -30,7 +30,7 @@ try { >result : {} > : ^^ >someOperation() : {} -> : ^^ +> : >someOperation : () => {} > : ^^^^^^^^ diff --git a/tests/baselines/reference/flowControlTypeGuardThenSwitch.types b/tests/baselines/reference/flowControlTypeGuardThenSwitch.types index da8ec9e9e483c..da8dfa63e3a9a 100644 --- a/tests/baselines/reference/flowControlTypeGuardThenSwitch.types +++ b/tests/baselines/reference/flowControlTypeGuardThenSwitch.types @@ -48,7 +48,7 @@ type Both = A | B; function isBoth(x: Base): x is Both { >isBoth : (x: Base) => x is Both -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Base > : ^^^^ @@ -67,7 +67,7 @@ if (isBoth(foo)) { >isBoth(foo) : boolean > : ^^^^^^^ >isBoth : (x: Base) => x is Both -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >foo : Base > : ^^^^ diff --git a/tests/baselines/reference/for-inStatements.types b/tests/baselines/reference/for-inStatements.types index 0ad5be1f4f6f6..38b7568ecd8b7 100644 --- a/tests/baselines/reference/for-inStatements.types +++ b/tests/baselines/reference/for-inStatements.types @@ -163,9 +163,9 @@ for (var x in ((x: T) => x)) { } >x : string > : ^^^^^^ >((x: T) => x) : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -175,7 +175,7 @@ for (var x in function (x: string, y: number) { return x + y }) { } >x : string > : ^^^^^^ >function (x: string, y: number) { return x + y } : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/for-inStatementsInvalid.types b/tests/baselines/reference/for-inStatementsInvalid.types index ffd5088a0d8bf..f24b8de9dfba7 100644 --- a/tests/baselines/reference/for-inStatementsInvalid.types +++ b/tests/baselines/reference/for-inStatementsInvalid.types @@ -137,9 +137,9 @@ for (var x in ((x: T) => x)) { } >x : string > : ^^^^^^ >((x: T) => x) : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -149,7 +149,7 @@ for (var x in function (x: string, y: number) { return x + y }) { } >x : string > : ^^^^^^ >function (x: string, y: number) { return x + y } : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/forAwaitForUnion.types b/tests/baselines/reference/forAwaitForUnion.types index f9fadb845a897..b2e965b0e2a0d 100644 --- a/tests/baselines/reference/forAwaitForUnion.types +++ b/tests/baselines/reference/forAwaitForUnion.types @@ -3,7 +3,7 @@ === forAwaitForUnion.ts === async function f(source: Iterable | AsyncIterable) { >f : (source: Iterable | AsyncIterable) => Promise -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >source : Iterable | AsyncIterable > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/forBreakStatements.types b/tests/baselines/reference/forBreakStatements.types index aa8db7cb040d5..0e2663aebe150 100644 --- a/tests/baselines/reference/forBreakStatements.types +++ b/tests/baselines/reference/forBreakStatements.types @@ -72,7 +72,7 @@ for (; ;) { >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : break EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/forContinueStatements.types b/tests/baselines/reference/forContinueStatements.types index 2d50b92ac6e64..e7f937353094f 100644 --- a/tests/baselines/reference/forContinueStatements.types +++ b/tests/baselines/reference/forContinueStatements.types @@ -72,7 +72,7 @@ for (; ;) { >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : continue EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/forInBreakStatements.types b/tests/baselines/reference/forInBreakStatements.types index a25cdf634ee90..d26c7de73bce8 100644 --- a/tests/baselines/reference/forInBreakStatements.types +++ b/tests/baselines/reference/forInBreakStatements.types @@ -123,7 +123,7 @@ for (var x in {}){ >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : break EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/forInContinueStatements.types b/tests/baselines/reference/forInContinueStatements.types index 8685ee15a1eeb..8225923e3089d 100644 --- a/tests/baselines/reference/forInContinueStatements.types +++ b/tests/baselines/reference/forInContinueStatements.types @@ -123,7 +123,7 @@ for (var x in {}){ >fn : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : continue EIGHT; >EIGHT : any diff --git a/tests/baselines/reference/forInStrictNullChecksNoError.types b/tests/baselines/reference/forInStrictNullChecksNoError.types index c336461724910..84c06f23a6d4f 100644 --- a/tests/baselines/reference/forInStrictNullChecksNoError.types +++ b/tests/baselines/reference/forInStrictNullChecksNoError.types @@ -3,7 +3,7 @@ === forInStrictNullChecksNoError.ts === function f(x: { [key: string]: number; } | null | undefined) { >f : (x: { [key: string]: number; } | null | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { [key: string]: number; } | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -19,11 +19,11 @@ function f(x: { [key: string]: number; } | null | undefined) { >console.log(x[key]) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x[key] : number > : ^^^^^^ >x : { [key: string]: number; } diff --git a/tests/baselines/reference/forLoopEndingMultilineComments.types b/tests/baselines/reference/forLoopEndingMultilineComments.types index d4b55389a219f..0d73eb68e99f7 100644 --- a/tests/baselines/reference/forLoopEndingMultilineComments.types +++ b/tests/baselines/reference/forLoopEndingMultilineComments.types @@ -6,7 +6,7 @@ declare var a: any; export function consoleTestResultHandler(testResult: any): boolean { >consoleTestResultHandler : (testResult: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >testResult : any // needed to get colors to show up when passing through Grunt diff --git a/tests/baselines/reference/forOfTransformsExpression.types b/tests/baselines/reference/forOfTransformsExpression.types index abee6fcfb9616..1b4b7c47691b7 100644 --- a/tests/baselines/reference/forOfTransformsExpression.types +++ b/tests/baselines/reference/forOfTransformsExpression.types @@ -32,13 +32,13 @@ for (var item of items.sort((a, b) => a.name.localeCompare(b.name))) { >items.sort((a, b) => a.name.localeCompare(b.name)) : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >items.sort : (compareFn?: (a: { name: string; }, b: { name: string; }) => number) => { name: string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ >items : { name: string; }[] > : ^^^^^^^^^^^^^^^^^^^ >sort : (compareFn?: (a: { name: string; }, b: { name: string; }) => number) => { name: string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ >(a, b) => a.name.localeCompare(b.name) : (a: { name: string; }, b: { name: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a : { name: string; } > : ^^^^^^^^^^^^^^^^^ >b : { name: string; } @@ -46,7 +46,7 @@ for (var item of items.sort((a, b) => a.name.localeCompare(b.name))) { >a.name.localeCompare(b.name) : number > : ^^^^^^ >a.name.localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >a.name : string > : ^^^^^^ >a : { name: string; } @@ -54,7 +54,7 @@ for (var item of items.sort((a, b) => a.name.localeCompare(b.name))) { >name : string > : ^^^^^^ >localeCompare : { (that: string): number; (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >b.name : string > : ^^^^^^ >b : { name: string; } diff --git a/tests/baselines/reference/forStatements.types b/tests/baselines/reference/forStatements.types index 4d664a54a27e1..8624843fc5e46 100644 --- a/tests/baselines/reference/forStatements.types +++ b/tests/baselines/reference/forStatements.types @@ -35,7 +35,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -56,17 +56,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } for(var aNumber: number = 9.9;;){} @@ -159,27 +159,27 @@ for(var anOtherObjectLiteral: { id: number } = new C();;){} for(var aFunction: typeof F = F;;){} >aFunction : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : for(var anOtherFunction: (x: string) => number = F;;){} >anOtherFunction : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ for(var aLambda: typeof F = (x) => 2;;){} >aLambda : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => 2 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >2 : 2 @@ -209,15 +209,15 @@ for(var aClassInModule: M.A = new M.A();;){} for(var aFunctionInModule: typeof M.F2 = (x) => 'this is a string';;){} >aFunctionInModule : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M.F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M : typeof M > : ^^^^^^^^ >F2 : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => 'this is a string' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >'this is a string' : "this is a string" diff --git a/tests/baselines/reference/forStatementsMultipleInvalidDecl.types b/tests/baselines/reference/forStatementsMultipleInvalidDecl.types index ab22e03d2e289..1a793738008c1 100644 --- a/tests/baselines/reference/forStatementsMultipleInvalidDecl.types +++ b/tests/baselines/reference/forStatementsMultipleInvalidDecl.types @@ -50,7 +50,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -71,17 +71,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } // all of these are errors @@ -145,15 +145,15 @@ for( var b = new C2();;){} for(var f = F;;){} >f : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : for( var f = (x: number) => '';;){} >f : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => '' : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/forStatementsMultipleValidDecl.types b/tests/baselines/reference/forStatementsMultipleValidDecl.types index 16387a129d225..947b56c478006 100644 --- a/tests/baselines/reference/forStatementsMultipleValidDecl.types +++ b/tests/baselines/reference/forStatementsMultipleValidDecl.types @@ -132,9 +132,9 @@ for (var p: typeof p; ;) { } for (var fn = function (s: string) { return 42; }; ;) { } >fn : (s: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (s: string) { return 42; } : (s: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >42 : 42 @@ -142,9 +142,9 @@ for (var fn = function (s: string) { return 42; }; ;) { } for (var fn = (s: string) => 3; ;) { } >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => 3 : (s: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ >3 : 3 @@ -152,29 +152,29 @@ for (var fn = (s: string) => 3; ;) { } for (var fn: (s: string) => number; ;) { } >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ for (var fn: { (s: string): number }; ;) { } >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ for (var fn = <(s: string) => number> null; ;) { } >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ><(s: string) => number> null : (s: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ for (var fn: typeof fn; ;) { } >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >fn : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ for (var a: string[]; ;) { } >a : string[] diff --git a/tests/baselines/reference/formatToPartsFractionalSecond.types b/tests/baselines/reference/formatToPartsFractionalSecond.types index 59f61f1441964..9b2f9265185b7 100644 --- a/tests/baselines/reference/formatToPartsFractionalSecond.types +++ b/tests/baselines/reference/formatToPartsFractionalSecond.types @@ -5,11 +5,11 @@ new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractional >new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractionalSecond') : Intl.DateTimeFormatPart > : ^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.DateTimeFormat().formatToParts().find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.DateTimeFormat().formatToParts() : Intl.DateTimeFormatPart[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->new Intl.DateTimeFormat().formatToParts : (date?: number | Date) => Intl.DateTimeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new Intl.DateTimeFormat().formatToParts : (date?: Date | number) => Intl.DateTimeFormatPart[] +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.DateTimeFormat() : Intl.DateTimeFormat > : ^^^^^^^^^^^^^^^^^^^ >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor @@ -18,12 +18,12 @@ new Intl.DateTimeFormat().formatToParts().find((val) => val.type === 'fractional > : ^^^^^^^^^^^ >DateTimeFormat : Intl.DateTimeFormatConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->formatToParts : (date?: number | Date) => Intl.DateTimeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>formatToParts : (date?: Date | number) => Intl.DateTimeFormatPart[] +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >find : { (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => value is S, thisArg?: any): S; (predicate: (value: Intl.DateTimeFormatPart, index: number, obj: Intl.DateTimeFormatPart[]) => unknown, thisArg?: any): Intl.DateTimeFormatPart; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(val) => val.type === 'fractionalSecond' : (val: Intl.DateTimeFormatPart) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >val : Intl.DateTimeFormatPart > : ^^^^^^^^^^^^^^^^^^^^^^^ >val.type === 'fractionalSecond' : boolean diff --git a/tests/baselines/reference/forwardRefInTypeDeclaration(strict=false).types b/tests/baselines/reference/forwardRefInTypeDeclaration(strict=false).types index 491fb317a4de5..807b0f24a862e 100644 --- a/tests/baselines/reference/forwardRefInTypeDeclaration(strict=false).types +++ b/tests/baselines/reference/forwardRefInTypeDeclaration(strict=false).types @@ -124,7 +124,7 @@ class Cls2 { static b = "b" as const; } > : ^^^ declare const obj1: { c: 'c' } ->obj1 : { c: 'c'; } +>obj1 : { c: "c"; } > : ^^^^^ ^^^ >c : "c" > : ^^^ diff --git a/tests/baselines/reference/forwardRefInTypeDeclaration(strict=true).types b/tests/baselines/reference/forwardRefInTypeDeclaration(strict=true).types index 491fb317a4de5..807b0f24a862e 100644 --- a/tests/baselines/reference/forwardRefInTypeDeclaration(strict=true).types +++ b/tests/baselines/reference/forwardRefInTypeDeclaration(strict=true).types @@ -124,7 +124,7 @@ class Cls2 { static b = "b" as const; } > : ^^^ declare const obj1: { c: 'c' } ->obj1 : { c: 'c'; } +>obj1 : { c: "c"; } > : ^^^^^ ^^^ >c : "c" > : ^^^ diff --git a/tests/baselines/reference/freshLiteralInference.types b/tests/baselines/reference/freshLiteralInference.types index 5674eba707026..883f724fc68f4 100644 --- a/tests/baselines/reference/freshLiteralInference.types +++ b/tests/baselines/reference/freshLiteralInference.types @@ -3,7 +3,7 @@ === freshLiteralInference.ts === declare function f1(x: T): T; >f1 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -13,7 +13,7 @@ const value = f1("1"); // regular "1" >f1("1") : "1" > : ^^^ >f1 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >"1" : "1" > : ^^^ @@ -25,7 +25,7 @@ let x1 = value; // regular "1" declare function f2(x: { value: T }): { value: T }; >f2 : (x: { value: T; }) => { value: T; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { value: T; } > : ^^^^^^^^^ ^^^ >value : T @@ -37,9 +37,9 @@ const obj2 = f2({ value: "1" }); // { value: regular "1" } >obj2 : { value: "1"; } > : ^^^^^^^^^^^^^^^ >f2({ value: "1" }) : { value: "1"; } -> : ^^^^^^^^^^^^^^^ +> : >f2 : (x: { value: T; }) => { value: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >{ value: "1" } : { value: "1"; } > : ^^^^^^^^^^^^^^^ >value : "1" @@ -59,7 +59,7 @@ let x2 = obj2.value; // regular "1" declare function f3(obj: T): T; >f3 : (obj: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >value : "1" | "2" | "3" > : ^^^^^^^^^^^^^^^ >obj : T @@ -69,9 +69,9 @@ const obj3 = f3({ value: "1" }); // before: { value: fresh "1" } >obj3 : { value: "1"; } > : ^^^^^^^^^^^^^^^ >f3({ value: "1" }) : { value: "1"; } -> : ^^^^^^^^^^^^^^^ +> : >f3 : (obj: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ value: "1" } : { value: "1"; } > : ^^^^^^^^^^^^^^^ >value : "1" diff --git a/tests/baselines/reference/freshLiteralTypesInIntersections.types b/tests/baselines/reference/freshLiteralTypesInIntersections.types index 553db2d800e99..14b88c878db10 100644 --- a/tests/baselines/reference/freshLiteralTypesInIntersections.types +++ b/tests/baselines/reference/freshLiteralTypesInIntersections.types @@ -5,7 +5,7 @@ declare function func(a: A, b: B[]): (ab: A & B) => void; >func : (a: A, b: B[]) => (ab: A & B) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B[] @@ -15,11 +15,11 @@ declare function func(a: A, b: B[]): (ab: A & B) const q = func("x" as "x" | "y", ["x"]); >q : (ab: "x") => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >func("x" as "x" | "y", ["x"]) : (ab: "x") => void -> : ^^^^^^^^^^^^^^^^^ +> : >func : (a: A, b: B[]) => (ab: A & B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^ >"x" as "x" | "y" : "x" | "y" > : ^^^^^^^^^ >"x" : "x" @@ -33,7 +33,7 @@ q("x"); >q("x") : void > : ^^^^ >q : (ab: "x") => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >"x" : "x" > : ^^^ diff --git a/tests/baselines/reference/funcdecl.types b/tests/baselines/reference/funcdecl.types index af2fdb3a051d0..3e928b675e6a6 100644 --- a/tests/baselines/reference/funcdecl.types +++ b/tests/baselines/reference/funcdecl.types @@ -13,7 +13,7 @@ var simpleFuncVar = simpleFunc; >simpleFuncVar : () => string > : ^^^^^^^^^^^^ >simpleFunc : () => string -> : ^^^^^^^^^^^^ +> : function anotherFuncNoReturn() { >anotherFuncNoReturn : () => void @@ -23,7 +23,7 @@ var anotherFuncNoReturnVar = anotherFuncNoReturn; >anotherFuncNoReturnVar : () => void > : ^^^^^^^^^^ >anotherFuncNoReturn : () => void -> : ^^^^^^^^^^ +> : function withReturn() : string{ >withReturn : () => string @@ -37,11 +37,11 @@ var withReturnVar = withReturn; >withReturnVar : () => string > : ^^^^^^^^^^^^ >withReturn : () => string -> : ^^^^^^^^^^^^ +> : function withParams(a : string) : string{ >withParams : (a: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ @@ -51,13 +51,13 @@ function withParams(a : string) : string{ } var withparamsVar = withParams; >withparamsVar : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >withParams : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : function withMultiParams(a : number, b, c: Object) { >withMultiParams : (a: number, b: any, c: Object) => number -> : ^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >b : any @@ -70,25 +70,25 @@ function withMultiParams(a : number, b, c: Object) { } var withMultiParamsVar = withMultiParams; >withMultiParamsVar : (a: number, b: any, c: Object) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^ >withMultiParams : (a: number, b: any, c: Object) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : function withOptionalParams(a?: string) { >withOptionalParams : (a?: string) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ } var withOptionalParamsVar = withOptionalParams; >withOptionalParamsVar : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >withOptionalParams : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ function withInitializedParams(a: string, b0, b = 30, c = "string value") { >withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >b0 : any @@ -103,13 +103,13 @@ function withInitializedParams(a: string, b0, b = 30, c = "string value") { } var withInitializedParamsVar = withInitializedParams; >withInitializedParamsVar : (a: string, b0: any, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >withInitializedParams : (a: string, b0: any, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ function withOptionalInitializedParams(a: string, c: string = "hello string") { >withOptionalInitializedParams : (a: string, c?: string) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ >c : string @@ -119,13 +119,13 @@ function withOptionalInitializedParams(a: string, c: string = "hello string") { } var withOptionalInitializedParamsVar = withOptionalInitializedParams; >withOptionalInitializedParamsVar : (a: string, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >withOptionalInitializedParams : (a: string, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ function withRestParams(a: string, ... myRestParameter : number[]) { >withRestParams : (a: string, ...myRestParameter: number[]) => number[] -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^ >a : string > : ^^^^^^ >myRestParameter : number[] @@ -137,25 +137,25 @@ function withRestParams(a: string, ... myRestParameter : number[]) { } var withRestParamsVar = withRestParams; >withRestParamsVar : (a: string, ...myRestParameter: number[]) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^^^^^ >withRestParams : (a: string, ...myRestParameter: number[]) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ function overload1(n: number) : string; >overload1 : { (n: number): string; (s: string): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >n : number > : ^^^^^^ function overload1(s: string) : string; >overload1 : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ function overload1(ns: any) { >overload1 : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >ns : any return ns.toString(); @@ -168,13 +168,13 @@ function overload1(ns: any) { } var withOverloadSignature = overload1; >withOverloadSignature : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >overload1 : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : function f(n: () => void) { } >f : (n: () => void) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => void > : ^^^^^^ @@ -184,7 +184,7 @@ module m2 { export function foo(n: () => void ) { >foo : (n: () => void) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => void > : ^^^^^^ } @@ -195,11 +195,11 @@ m2.foo(() => { >m2.foo(() => { var b = 30; return b;}) : void > : ^^^^ >m2.foo : (n: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >m2 : typeof m2 > : ^^^^^^^^^ >foo : (n: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { var b = 30; return b;} : () => number > : ^^^^^^^^^^^^ @@ -218,19 +218,19 @@ m2.foo(() => { declare function fooAmbient(n: number): string; >fooAmbient : (n: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ declare function overloadAmbient(n: number): string; >overloadAmbient : { (n: number): string; (s: string): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >n : number > : ^^^^^^ declare function overloadAmbient(s: string): string; >overloadAmbient : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ @@ -238,7 +238,7 @@ var f2 = () => { >f2 : () => string > : ^^^^^^^^^^^^ >() => { return "string";} : () => string -> : ^^^^^^^^^^^^ +> : return "string"; >"string" : "string" diff --git a/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.types b/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.types index 2b025bf7edfbb..bafed9f7e5e64 100644 --- a/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.types +++ b/tests/baselines/reference/functionAndInterfaceWithSeparateErrors.types @@ -3,13 +3,13 @@ === functionAndInterfaceWithSeparateErrors.ts === function Foo(s: string); >Foo : (s: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : string > : ^^^^^^ function Foo(n: number) { } >Foo : (s: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : number > : ^^^^^^ diff --git a/tests/baselines/reference/functionArgShadowing.types b/tests/baselines/reference/functionArgShadowing.types index 84b9a65daf418..56866528c7912 100644 --- a/tests/baselines/reference/functionArgShadowing.types +++ b/tests/baselines/reference/functionArgShadowing.types @@ -15,7 +15,7 @@ class B { bar() { } } function foo(x: A) { >foo : (x: A) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A > : ^ diff --git a/tests/baselines/reference/functionAssignment.types b/tests/baselines/reference/functionAssignment.types index 59288ddbff293..04563f48c0ce5 100644 --- a/tests/baselines/reference/functionAssignment.types +++ b/tests/baselines/reference/functionAssignment.types @@ -3,7 +3,7 @@ === functionAssignment.ts === function f(n: Function) { } >f : (n: Function) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : Function > : ^^^^^^^^ @@ -11,16 +11,16 @@ f(function () { }); >f(function () { }) : void > : ^^^^ >f : (n: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function () { } : () => void > : ^^^^^^^^^^ interface foo { get(handler: (bar: number)=>void): void; >get : (handler: (bar: number) => void) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >handler : (bar: number) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : number > : ^^^^^^ } @@ -28,7 +28,7 @@ interface foo { interface baz { get(callback: Function): number; >get : (callback: Function) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >callback : Function > : ^^^^^^^^ } @@ -45,13 +45,13 @@ test.get(function (param) { >test.get(function (param) { var x = barbaz.get(function () { });}) : void > : ^^^^ >test.get : (handler: (bar: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >test : foo > : ^^^ >get : (handler: (bar: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (param) { var x = barbaz.get(function () { });} : (param: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >param : number > : ^^^^^^ @@ -61,11 +61,11 @@ test.get(function (param) { >barbaz.get(function () { }) : number > : ^^^^^^ >barbaz.get : (callback: Function) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >barbaz : baz > : ^^^ >get : (callback: Function) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function () { } : () => void > : ^^^^^^^^^^ @@ -73,7 +73,7 @@ test.get(function (param) { function f2(n: () => void) { } >f2 : (n: () => void) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => void > : ^^^^^^ @@ -81,7 +81,7 @@ f2(() => { >f2(() => { var n = ''; n = 4;}) : void > : ^^^^ >f2 : (n: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { var n = ''; n = 4;} : () => void > : ^^^^^^^^^^ @@ -103,7 +103,7 @@ f2(() => { function f3(a: { a: number; b: number; }) { } >f3 : (a: { a: number; b: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { a: number; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : number @@ -115,7 +115,7 @@ f3({ a: 0, b: 0 }); >f3({ a: 0, b: 0 }) : void > : ^^^^ >f3 : (a: { a: number; b: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ a: 0, b: 0 } : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -130,23 +130,23 @@ f3({ a: 0, b: 0 }); function callb(lam:(l: number) => void ); >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (l: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >l : number > : ^^^^^^ function callb(lam:(n: string)=>void); >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (n: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ function callb(a) { } >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any > : ^^^ @@ -154,9 +154,9 @@ callb((a) =>{ a.length; }); >callb((a) =>{ a.length; }) : any > : ^^^ >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >(a) =>{ a.length; } : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a.length : any diff --git a/tests/baselines/reference/functionAssignmentError.types b/tests/baselines/reference/functionAssignmentError.types index f5881d7d67479..5d9ea8dd711cf 100644 --- a/tests/baselines/reference/functionAssignmentError.types +++ b/tests/baselines/reference/functionAssignmentError.types @@ -5,7 +5,7 @@ var func = function (){return "ONE";}; >func : () => string > : ^^^^^^^^^^^^ >function (){return "ONE";} : () => string -> : ^^^^^^^^^^^^ +> : >"ONE" : "ONE" > : ^^^^^ diff --git a/tests/baselines/reference/functionCall10.types b/tests/baselines/reference/functionCall10.types index d64880e55564b..9e13f1ddab5f0 100644 --- a/tests/baselines/reference/functionCall10.types +++ b/tests/baselines/reference/functionCall10.types @@ -3,7 +3,7 @@ === functionCall10.ts === function foo(...a:number[]){}; >foo : (...a: number[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number[] > : ^^^^^^^^ @@ -11,7 +11,7 @@ foo(0, 1); >foo(0, 1) : void > : ^^^^ >foo : (...a: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >0 : 0 > : ^ >1 : 1 @@ -21,7 +21,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (...a: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -29,13 +29,13 @@ foo(); >foo() : void > : ^^^^ >foo : (...a: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (...a: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" diff --git a/tests/baselines/reference/functionCall11.types b/tests/baselines/reference/functionCall11.types index 8cf6c0ba70b02..c590d6696e842 100644 --- a/tests/baselines/reference/functionCall11.types +++ b/tests/baselines/reference/functionCall11.types @@ -3,7 +3,7 @@ === functionCall11.ts === function foo(a:string, b?:number){} >foo : (a: string, b?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number @@ -13,7 +13,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -23,7 +23,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -31,13 +31,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -47,7 +47,7 @@ foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void > : ^^^^ >foo : (a: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 diff --git a/tests/baselines/reference/functionCall12.types b/tests/baselines/reference/functionCall12.types index 2cde1b793927d..4de4820389d2a 100644 --- a/tests/baselines/reference/functionCall12.types +++ b/tests/baselines/reference/functionCall12.types @@ -3,7 +3,7 @@ === functionCall12.ts === function foo(a:string, b?:number, c?:string){} >foo : (a: string, b?: number, c?: string) => void -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number @@ -15,7 +15,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -25,7 +25,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -33,13 +33,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -49,7 +49,7 @@ foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -61,7 +61,7 @@ foo('foo', 1, 3); >foo('foo', 1, 3) : void > : ^^^^ >foo : (a: string, b?: number, c?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 diff --git a/tests/baselines/reference/functionCall13.types b/tests/baselines/reference/functionCall13.types index 18c2d346b9f0c..d5599799e815f 100644 --- a/tests/baselines/reference/functionCall13.types +++ b/tests/baselines/reference/functionCall13.types @@ -3,7 +3,7 @@ === functionCall13.ts === function foo(a:string, ...b:number[]){} >foo : (a: string, ...b: number[]) => void -> : ^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number[] @@ -13,7 +13,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -23,7 +23,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -31,13 +31,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -47,7 +47,7 @@ foo('foo', 1, 3); >foo('foo', 1, 3) : void > : ^^^^ >foo : (a: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 diff --git a/tests/baselines/reference/functionCall14.types b/tests/baselines/reference/functionCall14.types index a2ab14bb63664..a745d13c8ef36 100644 --- a/tests/baselines/reference/functionCall14.types +++ b/tests/baselines/reference/functionCall14.types @@ -3,7 +3,7 @@ === functionCall14.ts === function foo(a?:string, ...b:number[]){} >foo : (a?: string, ...b: number[]) => void -> : ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number[] @@ -13,7 +13,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a?: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -23,7 +23,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a?: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -31,13 +31,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a?: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a?: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -47,7 +47,7 @@ foo('foo', 1, 3); >foo('foo', 1, 3) : void > : ^^^^ >foo : (a?: string, ...b: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 diff --git a/tests/baselines/reference/functionCall15.types b/tests/baselines/reference/functionCall15.types index 7710166b626a3..46c3af0f7c12d 100644 --- a/tests/baselines/reference/functionCall15.types +++ b/tests/baselines/reference/functionCall15.types @@ -3,7 +3,7 @@ === functionCall15.ts === function foo(a?:string, b?:number, ...b:number[]){} >foo : (a?: string, b?: number, ...b: number[]) => void -> : ^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/functionCall16.types b/tests/baselines/reference/functionCall16.types index 591201d04cf89..ae77912a5455d 100644 --- a/tests/baselines/reference/functionCall16.types +++ b/tests/baselines/reference/functionCall16.types @@ -3,7 +3,7 @@ === functionCall16.ts === function foo(a:string, b?:string, ...c:number[]){} >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^ ^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -15,7 +15,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -25,7 +25,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -33,7 +33,7 @@ foo('foo', 'bar'); >foo('foo', 'bar') : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" @@ -43,13 +43,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -59,7 +59,7 @@ foo('foo', 'bar', 3); >foo('foo', 'bar', 3) : void > : ^^^^ >foo : (a: string, b?: string, ...c: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" diff --git a/tests/baselines/reference/functionCall17.types b/tests/baselines/reference/functionCall17.types index dedb2c21ac58d..374fc8baa3074 100644 --- a/tests/baselines/reference/functionCall17.types +++ b/tests/baselines/reference/functionCall17.types @@ -3,7 +3,7 @@ === functionCall17.ts === function foo(a:string, b?:string, c?:number, ...d:number[]){} >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -17,7 +17,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -27,7 +27,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -35,13 +35,13 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ foo(1, 'bar'); >foo(1, 'bar') : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >'bar' : "bar" @@ -51,7 +51,7 @@ foo('foo', 1, 3); >foo('foo', 1, 3) : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -63,7 +63,7 @@ foo('foo', 'bar', 3, 4); >foo('foo', 'bar', 3, 4) : void > : ^^^^ >foo : (a: string, b?: string, c?: number, ...d: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" diff --git a/tests/baselines/reference/functionCall18.types b/tests/baselines/reference/functionCall18.types index f8db6d3f6eb31..3b2a153d13a32 100644 --- a/tests/baselines/reference/functionCall18.types +++ b/tests/baselines/reference/functionCall18.types @@ -4,7 +4,7 @@ // Repro from #26835 declare function foo(a: T, b: T); >foo : { (a: T, b: T): any; (a: {}): any; } -> : ^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : T @@ -12,7 +12,7 @@ declare function foo(a: T, b: T); declare function foo(a: {}); >foo : { (a: T, b: T): any; (a: {}): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : {} > : ^^ @@ -20,7 +20,7 @@ foo("hello"); >foo("hello") : any > : ^^^ >foo : { (a: T, b: T): any; (a: {}): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ diff --git a/tests/baselines/reference/functionCall4.types b/tests/baselines/reference/functionCall4.types index 4bf4412d3581d..9746ec751beaa 100644 --- a/tests/baselines/reference/functionCall4.types +++ b/tests/baselines/reference/functionCall4.types @@ -17,7 +17,7 @@ var x = bar(); >x : () => any > : ^^^^^^^^^ >bar() : () => any -> : ^^^^^^^^^ +> : >bar : () => () => any > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionCall6.types b/tests/baselines/reference/functionCall6.types index 2c83088fd70ac..9c7f134b9c040 100644 --- a/tests/baselines/reference/functionCall6.types +++ b/tests/baselines/reference/functionCall6.types @@ -3,7 +3,7 @@ === functionCall6.ts === function foo(a:string){}; >foo : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ @@ -11,7 +11,7 @@ foo('bar'); >foo('bar') : void > : ^^^^ >foo : (a: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'bar' : "bar" > : ^^^^^ @@ -19,7 +19,7 @@ foo(2); >foo(2) : void > : ^^^^ >foo : (a: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >2 : 2 > : ^ @@ -27,7 +27,7 @@ foo('foo', 'bar'); >foo('foo', 'bar') : void > : ^^^^ >foo : (a: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" @@ -37,5 +37,5 @@ foo(); >foo() : void > : ^^^^ >foo : (a: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/functionCall7.types b/tests/baselines/reference/functionCall7.types index 89555b6576f69..b951ebfa6f421 100644 --- a/tests/baselines/reference/functionCall7.types +++ b/tests/baselines/reference/functionCall7.types @@ -11,7 +11,7 @@ module m1 { export class c1 { public a; }} function foo(a:m1.c1){ a.a = 1; }; >foo : (a: m1.c1) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : m1.c1 > : ^^^^^ >m1 : any @@ -43,7 +43,7 @@ foo(myC); >foo(myC) : void > : ^^^^ >foo : (a: m1.c1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >myC : m1.c1 > : ^^^^^ @@ -51,7 +51,7 @@ foo(myC, myC); >foo(myC, myC) : void > : ^^^^ >foo : (a: m1.c1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >myC : m1.c1 > : ^^^^^ >myC : m1.c1 @@ -61,7 +61,7 @@ foo(4); >foo(4) : void > : ^^^^ >foo : (a: m1.c1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >4 : 4 > : ^ @@ -69,5 +69,5 @@ foo(); >foo() : void > : ^^^^ >foo : (a: m1.c1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/functionCall8.types b/tests/baselines/reference/functionCall8.types index 4a5fc0675a138..fd711a7cde3b6 100644 --- a/tests/baselines/reference/functionCall8.types +++ b/tests/baselines/reference/functionCall8.types @@ -3,7 +3,7 @@ === functionCall8.ts === function foo(a?:string){} >foo : (a?: string) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ @@ -11,7 +11,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -19,7 +19,7 @@ foo('foo', 'bar'); >foo('foo', 'bar') : void > : ^^^^ >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" @@ -29,7 +29,7 @@ foo(4); >foo(4) : void > : ^^^^ >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >4 : 4 > : ^ @@ -37,5 +37,5 @@ foo(); >foo() : void > : ^^^^ >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/functionCall9.types b/tests/baselines/reference/functionCall9.types index f27d508164a17..e07225e3a827a 100644 --- a/tests/baselines/reference/functionCall9.types +++ b/tests/baselines/reference/functionCall9.types @@ -3,7 +3,7 @@ === functionCall9.ts === function foo(a?:string, b?:number){}; >foo : (a?: string, b?: number) => void -> : ^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number @@ -13,7 +13,7 @@ foo('foo', 1); >foo('foo', 1) : void > : ^^^^ >foo : (a?: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -23,7 +23,7 @@ foo('foo'); >foo('foo') : void > : ^^^^ >foo : (a?: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -31,7 +31,7 @@ foo('foo','bar'); >foo('foo','bar') : void > : ^^^^ >foo : (a?: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >'bar' : "bar" @@ -41,7 +41,7 @@ foo('foo', 1, 'bar'); >foo('foo', 1, 'bar') : void > : ^^^^ >foo : (a?: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ >1 : 1 @@ -53,5 +53,5 @@ foo(); >foo() : void > : ^^^^ >foo : (a?: string, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/functionCallOnConstrainedTypeVariable.types b/tests/baselines/reference/functionCallOnConstrainedTypeVariable.types index a08b0dc7f68b2..603734322399e 100644 --- a/tests/baselines/reference/functionCallOnConstrainedTypeVariable.types +++ b/tests/baselines/reference/functionCallOnConstrainedTypeVariable.types @@ -9,7 +9,7 @@ type A = { a: (x: number) => string >a : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -20,7 +20,7 @@ type B = { a: (x: boolean) => string >a : (x: boolean) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : boolean > : ^^^^^^^ @@ -28,7 +28,7 @@ type B = { function call0(p: A | B) { >call0 : (p: A | B) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : A | B > : ^^^^^ @@ -36,18 +36,18 @@ function call0(p: A | B) { >p.a("s") : string > : ^^^^^^ >p.a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >p : A | B > : ^^^^^ >a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >"s" : "s" > : ^^^ } function callN(p: T) { >callN : (p: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >p : T > : ^ @@ -55,11 +55,11 @@ function callN(p: T) { >p.a("s") : string > : ^^^^^^ >p.a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >p : A | B > : ^^^^^ >a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >"s" : "s" > : ^^^ @@ -67,17 +67,17 @@ function callN(p: T) { >a : T["a"] > : ^^^^^^ >p.a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >p : A | B > : ^^^^^ >a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ a(""); // Error >a("") : string > : ^^^^^^ >a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >"" : "" > : ^^ @@ -85,7 +85,7 @@ function callN(p: T) { >a("", "", "", "") : string > : ^^^^^^ >a : ((x: number) => string) | ((x: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >"" : "" > : ^^ >"" : "" diff --git a/tests/baselines/reference/functionConstraintSatisfaction.types b/tests/baselines/reference/functionConstraintSatisfaction.types index 82a71d8302515..eb5392fec9cf3 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction.types +++ b/tests/baselines/reference/functionConstraintSatisfaction.types @@ -5,7 +5,7 @@ function foo(x: T): T { return x; } >foo : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -37,7 +37,7 @@ var b: { new (): string }; var c: { (): string; (x): string }; >c : { (): string; (x: any): string; } -> : ^^^^^^ ^^^^^^^^^^^^ ^^^ +> : ^^^^^^ ^^^ ^^^^^^^^ ^^^ >x : any var r = foo(new Function()); @@ -46,7 +46,7 @@ var r = foo(new Function()); >foo(new Function()) : Function > : ^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >new Function() : Function > : ^^^^^^^^ >Function : FunctionConstructor @@ -54,25 +54,25 @@ var r = foo(new Function()); var r1 = foo((x) => x); >r1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo((x) => x) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var r2 = foo((x: string[]) => x); >r2 : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >foo((x: string[]) => x) : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: string[]) => x : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >x : string[] @@ -80,25 +80,25 @@ var r2 = foo((x: string[]) => x); var r3 = foo(function (x) { return x }); >r3 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo(function (x) { return x }) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x) { return x } : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var r4 = foo(function (x: string[]) { return x }); >r4 : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >foo(function (x: string[]) { return x }) : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x: string[]) { return x } : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >x : string[] @@ -110,7 +110,7 @@ var r5 = foo(i); >foo(i) : I > : ^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >i : I > : ^ @@ -120,7 +120,7 @@ var r6 = foo(C); >foo(C) : typeof C > : ^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >C : typeof C > : ^^^^^^^^ @@ -128,21 +128,21 @@ var r7 = foo(b); >r7 : new () => string > : ^^^^^^^^^^^^^^^^ >foo(b) : new () => string -> : ^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : new () => string > : ^^^^^^^^^^^^^^^^ var r8 = foo(c); >r8 : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >foo(c) : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >c : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ interface I2 { (x: T): T; @@ -164,19 +164,19 @@ class C2 { var a2: { (x: T): T }; >a2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var b2: { new (x: T): T }; >b2 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var c2: { (x: T): T; (x: T, y: T): T }; >c2 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -186,13 +186,13 @@ var c2: { (x: T): T; (x: T, y: T): T }; var r9 = foo((x: U) => x); >r9 : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >foo((x: U) => x) : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U) => x : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -200,13 +200,13 @@ var r9 = foo((x: U) => x); var r10 = foo(function (x: U) { return x; }); >r10 : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >foo(function (x: U) { return x; }) : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x: U) { return x; } : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -214,13 +214,13 @@ var r10 = foo(function (x: U) { return x; }); var r11 = foo((x: U) => x); >r11 : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo((x: U) => x) : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U) => x : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -228,13 +228,13 @@ var r11 = foo((x: U) => x); var r12 = foo((x: U, y: V) => x); >r12 : (x: U, y: V) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >foo((x: U, y: V) => x) : (x: U, y: V) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U, y: V) => x : (x: U, y: V) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : U > : ^ >y : V @@ -248,7 +248,7 @@ var r13 = foo(i2); >foo(i2) : I2 > : ^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >i2 : I2 > : ^^^^^^^^^^ @@ -258,29 +258,29 @@ var r14 = foo(C2); >foo(C2) : typeof C2 > : ^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >C2 : typeof C2 > : ^^^^^^^^^ var r15 = foo(b2); >r15 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >foo(b2) : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b2 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ var r16 = foo(c2); >r16 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo(c2) : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >c2 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ interface F2 extends Function { foo: string; } >foo : string @@ -296,13 +296,13 @@ var r17 = foo(f2); >foo(f2) : F2 > : ^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >f2 : F2 > : ^^ function foo2(x: T, y: U) { >foo2 : void, U extends () => void>(x: T, y: U) => void -> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -312,7 +312,7 @@ function foo2(x: T, y: U) { >foo(x) : T > : ^ >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : T > : ^ @@ -320,7 +320,7 @@ function foo2(x: T, y: U) { >foo(y) : U > : ^ >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >y : U > : ^ } diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.types b/tests/baselines/reference/functionConstraintSatisfaction2.types index c1e7fca2686cd..f9379e128d552 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.types +++ b/tests/baselines/reference/functionConstraintSatisfaction2.types @@ -5,7 +5,7 @@ function foo(x: T): T { return x; } >foo : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -15,7 +15,7 @@ foo(1); >foo(1) : Function > : ^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -23,7 +23,7 @@ foo(() => { }, 1); >foo(() => { }, 1) : () => void > : ^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ >1 : 1 @@ -33,7 +33,7 @@ foo(1, () => { }); >foo(1, () => { }) : Function > : ^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >() => { } : () => void @@ -41,7 +41,7 @@ foo(1, () => { }); function foo2 string>(x: T): T { return x; } >foo2 : string>(x: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >x : T @@ -60,7 +60,7 @@ class C { var b: { new (x: string): string }; >b : new (x: string) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -75,17 +75,17 @@ class C2 { var b2: { new (x: T): T }; >b2 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var r = foo2(new Function()); >r : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(new Function()) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >new Function() : Function > : ^^^^^^^^ >Function : FunctionConstructor @@ -93,13 +93,13 @@ var r = foo2(new Function()); var r2 = foo2((x: string[]) => x); >r2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2((x: string[]) => x) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: string[]) => x : (x: string[]) => string[] -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >x : string[] @@ -107,33 +107,33 @@ var r2 = foo2((x: string[]) => x); var r6 = foo2(C); >r6 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(C) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >C : typeof C > : ^^^^^^^^ var r7 = foo2(b); >r7 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(b) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >b : new (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ var r8 = foo2((x: U) => x); // no error expected >r8 : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >foo2((x: U) => x) : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U) => x : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -141,13 +141,13 @@ var r8 = foo2((x: U) => x); // no error expected var r11 = foo2((x: U, y: V) => x); >r11 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2((x: U, y: V) => x) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U, y: V) => x : (x: U, y: V) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : U > : ^ >y : V @@ -157,23 +157,23 @@ var r11 = foo2((x: U, y: V) => x); var r13 = foo2(C2); >r13 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(C2) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >C2 : typeof C2 > : ^^^^^^^^^ var r14 = foo2(b2); >r14 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(b2) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >b2 : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ interface F2 extends Function { foo: string; } >foo : string @@ -185,17 +185,17 @@ var f2: F2; var r16 = foo2(f2); >r16 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2(f2) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >f2 : F2 > : ^^ function fff(x: T, y: U) { >fff : void, U extends T>(x: T, y: U) => void -> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -203,17 +203,17 @@ function fff(x: T, y: U) { foo2(x); >foo2(x) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2 : string>(x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : T > : ^ foo2(y); >foo2(y) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo2 : string>(x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^ >y : U > : ^ } diff --git a/tests/baselines/reference/functionConstraintSatisfaction3.types b/tests/baselines/reference/functionConstraintSatisfaction3.types index df28192a1956f..ddb883087aa2f 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction3.types +++ b/tests/baselines/reference/functionConstraintSatisfaction3.types @@ -5,7 +5,7 @@ function foo string>(x: T): T { return x; } >foo : string>(x: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >x : T @@ -39,18 +39,18 @@ var b: { new (): string }; var c: { (): string; (x): string }; >c : { (): string; (x: any): string; } -> : ^^^^^^ ^^^^^^^^^^^^ ^^^ +> : ^^^^^^ ^^^ ^^^^^^^^ ^^^ >x : any var r1 = foo((x) => x); >r1 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo((x) => x) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x) => x : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -58,13 +58,13 @@ var r1 = foo((x) => x); var r2 = foo((x: string) => x); >r2 : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: string) => x : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -72,13 +72,13 @@ var r2 = foo((x: string) => x); var r3 = foo(function (x) { return x }); >r3 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo(function (x) { return x }) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x) { return x } : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -86,13 +86,13 @@ var r3 = foo(function (x) { return x }); var r4 = foo(function (x: string) { return x }); >r4 : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo(function (x: string) { return x }) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x: string) { return x } : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -104,19 +104,19 @@ var r5 = foo(i); >foo(i) : I > : ^ >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >i : I > : ^ var r8 = foo(c); >r8 : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >foo(c) : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >c : { (): string; (x: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ interface I2 { (x: T): T; @@ -138,19 +138,19 @@ class C2 { var a2: { (x: T): T }; >a2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var b2: { new (x: T): T }; >b2 : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var c2: { (x: T): T; (x: T, y: T): T }; >c2 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -160,13 +160,13 @@ var c2: { (x: T): T; (x: T, y: T): T }; var r9 = foo(function (x: U) { return x; }); >r9 : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >foo(function (x: U) { return x; }) : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >function (x: U) { return x; } : (x: U) => U -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -174,13 +174,13 @@ var r9 = foo(function (x: U) { return x; }); var r10 = foo((x: U) => x); >r10 : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo((x: U) => x) : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >(x: U) => x : (x: U) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -192,17 +192,17 @@ var r12 = foo(i2); >foo(i2) : I2 > : ^^^^^^^^^^ >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >i2 : I2 > : ^^^^^^^^^^ var r15 = foo(c2); >r15 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo(c2) : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : string>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >c2 : { (x: T): T; (x: T_1, y: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types b/tests/baselines/reference/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types index 011fe34f3bab8..665736df51c01 100644 --- a/tests/baselines/reference/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types +++ b/tests/baselines/reference/functionDeclarationWithArgumentOfTypeFunctionTypeArray.types @@ -3,16 +3,16 @@ === functionDeclarationWithArgumentOfTypeFunctionTypeArray.ts === function foo(args: { (x): number }[]) { >foo : (args: { (x: any): number; }[]) => number -> : ^^^^^^^ ^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^^^ >args : ((x: any) => number)[] -> : ^^^^^^^^^^^^^ ^^^ +> : ^^ ^^^^^^^^^^ ^^^ >x : any return args.length; >args.length : number > : ^^^^^^ >args : ((x: any) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^ >length : number > : ^^^^^^ } diff --git a/tests/baselines/reference/functionExpressionAndLambdaMatchesFunction.types b/tests/baselines/reference/functionExpressionAndLambdaMatchesFunction.types index 783dead4e2c71..4a4f034a72ea4 100644 --- a/tests/baselines/reference/functionExpressionAndLambdaMatchesFunction.types +++ b/tests/baselines/reference/functionExpressionAndLambdaMatchesFunction.types @@ -8,7 +8,7 @@ class CDoc { constructor() { function doSomething(a: Function) { >doSomething : (a: Function) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : Function > : ^^^^^^^^ } @@ -16,7 +16,7 @@ class CDoc { >doSomething(() => undefined) : void > : ^^^^ >doSomething : (a: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => undefined : () => any > : ^^^^^^^^^ >undefined : undefined @@ -26,7 +26,7 @@ class CDoc { >doSomething(function () { }) : void > : ^^^^ >doSomething : (a: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function () { } : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/functionExpressionContextualTyping1.types b/tests/baselines/reference/functionExpressionContextualTyping1.types index 5ab006738b9fc..9a5bfda3b93fa 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping1.types +++ b/tests/baselines/reference/functionExpressionContextualTyping1.types @@ -17,13 +17,13 @@ enum E { red, blue } var a0: (n: number, s: string) => number = (num, str) => { >a0 : (n: number, s: string) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >n : number > : ^^^^^^ >s : string > : ^^^^^^ >(num, str) => { num.toExponential(); return 0;} : (num: number, str: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >str : string @@ -33,11 +33,11 @@ var a0: (n: number, s: string) => number = (num, str) => { >num.toExponential() : string > : ^^^^^^ >num.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >num : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ return 0; >0 : 0 @@ -55,11 +55,11 @@ class Class { var a1: (c: Class) => number = (a1) => { >a1 : (c: Class) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : Class > : ^^^^^^^^^^^^^ >(a1) => { a1.foo(); return 1;} : (a1: Class) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a1 : Class > : ^^^^^^^^^^^^^ @@ -85,7 +85,7 @@ var a1: (c: Class) => number = (a1) => { // then S is a signature with the same parameters and a union of the return types. var b1: ((s: string, w: boolean) => void) | ((s: string, w: boolean) => string); >b1 : ((s: string, w: boolean) => void) | ((s: string, w: boolean) => string) -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >s : string > : ^^^^^^ >w : boolean @@ -97,11 +97,11 @@ var b1: ((s: string, w: boolean) => void) | ((s: string, w: boolean) => string); b1 = (k, h) => { }; >b1 = (k, h) => { } : (k: string, h: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b1 : ((s: string, w: boolean) => void) | ((s: string, w: boolean) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >(k, h) => { } : (k: string, h: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >k : string > : ^^^^^^ >h : boolean @@ -109,9 +109,9 @@ b1 = (k, h) => { }; var b2: typeof a0 | ((n: number, s: string) => string); >b2 : ((n: number, s: string) => number) | ((n: number, s: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a0 : (n: number, s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >s : string @@ -119,11 +119,11 @@ var b2: typeof a0 | ((n: number, s: string) => string); b2 = (foo, bar) => { return foo + 1; } >b2 = (foo, bar) => { return foo + 1; } : (foo: number, bar: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >b2 : ((n: number, s: string) => number) | ((n: number, s: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >(foo, bar) => { return foo + 1; } : (foo: number, bar: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >bar : string @@ -137,11 +137,11 @@ b2 = (foo, bar) => { return foo + 1; } b2 = (foo, bar) => { return "hello"; } >b2 = (foo, bar) => { return "hello"; } : (foo: number, bar: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >b2 : ((n: number, s: string) => number) | ((n: number, s: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >(foo, bar) => { return "hello"; } : (foo: number, bar: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >bar : string @@ -151,7 +151,7 @@ b2 = (foo, bar) => { return "hello"; } var b3: (name: string, num: number, boo: boolean) => void; >b3 : (name: string, num: number, boo: boolean) => void -> : ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >name : string > : ^^^^^^ >num : number @@ -161,11 +161,11 @@ var b3: (name: string, num: number, boo: boolean) => void; b3 = (name, number) => { }; >b3 = (name, number) => { } : (name: string, number: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >b3 : (name: string, num: number, boo: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(name, number) => { } : (name: string, number: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >name : string > : ^^^^^^ >number : number @@ -173,11 +173,11 @@ b3 = (name, number) => { }; var b4: (n: E) => string = (number = 1) => { return "hello"; }; >b4 : (n: E) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : E > : ^ >(number = 1) => { return "hello"; } : (number?: E) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >number : E > : ^ >1 : 1 @@ -187,11 +187,11 @@ var b4: (n: E) => string = (number = 1) => { return "hello"; }; var b5: (n: {}) => string = (number = "string") => { return "hello"; }; >b5 : (n: {}) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : {} > : ^^ >(number = "string") => { return "hello"; } : (number?: {}) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >number : {} > : ^^ >"string" : "string" @@ -203,7 +203,7 @@ var b5: (n: {}) => string = (number = "string") => { return "hello"; }; // Otherwise, no contextual signature can be extracted from T and S is undefined. var b6: ((s: string, w: boolean) => void) | ((n: number) => number); >b6 : ((s: string, w: boolean) => void) | ((n: number) => number) -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^^^^ ^ >s : string > : ^^^^^^ >w : boolean @@ -213,7 +213,7 @@ var b6: ((s: string, w: boolean) => void) | ((n: number) => number); var b7: ((s: string, w: boolean) => void) | ((s: string, w: number) => string); >b7 : ((s: string, w: boolean) => void) | ((s: string, w: number) => string) -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >s : string > : ^^^^^^ >w : boolean @@ -225,11 +225,11 @@ var b7: ((s: string, w: boolean) => void) | ((s: string, w: number) => string); b6 = (k) => { k.toLowerCase() }; >b6 = (k) => { k.toLowerCase() } : (k: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >b6 : ((s: string, w: boolean) => void) | ((n: number) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(k) => { k.toLowerCase() } : (k: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >k : any >k.toLowerCase() : any >k.toLowerCase : any @@ -240,11 +240,11 @@ b6 = (k) => { k.toLowerCase() }; b6 = (i) => { >b6 = (i) => { i.toExponential(); return i;} : (i: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >b6 : ((s: string, w: boolean) => void) | ((n: number) => number) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(i) => { i.toExponential(); return i;} : (i: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >i : any i.toExponential(); @@ -261,11 +261,11 @@ b6 = (i) => { }; // Per spec, no contextual signature can be extracted in this case. (Otherwise clause) b7 = (j, m) => { }; // Per spec, no contextual signature can be extracted in this case. (Otherwise clause) >b7 = (j, m) => { } : (j: any, m: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >b7 : ((s: string, w: boolean) => void) | ((s: string, w: number) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >(j, m) => { } : (j: any, m: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >j : any >m : any @@ -276,7 +276,7 @@ class C { constructor() { var k: ((j: T, k: U) => (T|U)[]) | ((j: number,k :U) => number[]) = (j, k) => { >k : ((j: T, k: U) => (T | U)[]) | ((j: number, k: U) => number[]) -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >j : T > : ^ >k : U @@ -286,7 +286,7 @@ class C { >k : U > : ^ >(j, k) => { return [j, k]; } : (j: any, k: any) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^ >j : any >k : any diff --git a/tests/baselines/reference/functionExpressionContextualTyping2.types b/tests/baselines/reference/functionExpressionContextualTyping2.types index ec0b9a9351914..c2fdc1f97eb05 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping2.types +++ b/tests/baselines/reference/functionExpressionContextualTyping2.types @@ -11,7 +11,7 @@ var a0: (n: number, s: string) => number >a0 : (n: number, s: string) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >n : number > : ^^^^^^ >s : string @@ -19,9 +19,9 @@ var a0: (n: number, s: string) => number var a1: typeof a0 | ((n: number, s: string) => string); >a1 : ((n: number, s: string) => number) | ((n: number, s: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a0 : (n: number, s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >s : string @@ -29,11 +29,11 @@ var a1: typeof a0 | ((n: number, s: string) => string); a1 = (foo, bar) => { return true; } // Error >a1 = (foo, bar) => { return true; } : (foo: number, bar: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >a1 : ((n: number, s: string) => number) | ((n: number, s: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >(foo, bar) => { return true; } : (foo: number, bar: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >bar : string diff --git a/tests/baselines/reference/functionExpressionContextualTyping3.types b/tests/baselines/reference/functionExpressionContextualTyping3.types index 6510f084d0a91..7b3b12b254ea9 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping3.types +++ b/tests/baselines/reference/functionExpressionContextualTyping3.types @@ -4,17 +4,17 @@ // #31114 declare function f(value: T | number): void; >f : (value: T | number) => void -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : number | T > : ^^^^^^^^^^ f((a: any) => "") >f((a: any) => "") : void > : ^^^^ ->f : (value: number | T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (value: T | number) => void +> : ^ ^^ ^^ ^^^^^^^^^ >(a: any) => "" : (a: any) => "" -> : ^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >a : any >"" : "" > : ^^ diff --git a/tests/baselines/reference/functionExpressionReturningItself.types b/tests/baselines/reference/functionExpressionReturningItself.types index 941882db36d88..f31675686b12f 100644 --- a/tests/baselines/reference/functionExpressionReturningItself.types +++ b/tests/baselines/reference/functionExpressionReturningItself.types @@ -5,7 +5,7 @@ var x = function somefn() { return somefn; }; >x : () => any > : ^^^^^^^^^ >function somefn() { return somefn; } : () => any -> : ^^^^^^^^^ +> : >somefn : () => any > : ^^^^^^^^^ >somefn : () => any diff --git a/tests/baselines/reference/functionExpressionShadowedByParams.types b/tests/baselines/reference/functionExpressionShadowedByParams.types index 37a35fa011958..8e803c893a3be 100644 --- a/tests/baselines/reference/functionExpressionShadowedByParams.types +++ b/tests/baselines/reference/functionExpressionShadowedByParams.types @@ -3,7 +3,7 @@ === functionExpressionShadowedByParams.ts === function b1(b1: number) { >b1 : (b1: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b1 : number > : ^^^^^^ @@ -11,11 +11,11 @@ function b1(b1: number) { >b1.toPrecision(2) : string > : ^^^^^^ >b1.toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b1 : number > : ^^^^^^ >toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ @@ -31,17 +31,17 @@ function b1(b1: number) { var x = { >x : { b: (b: number) => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^ >{ b: function b(b: number) { b.toPrecision(2); // should not error b.apply(null, null); // should error }} : { b: (b: number) => void; } -> : ^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^ ^^^ b: function b(b: number) { >b : (b: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function b(b: number) { b.toPrecision(2); // should not error b.apply(null, null); // should error } : (b: number) => void -> : ^^^^ ^^^^^^^^^ +> : >b : (b: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : number > : ^^^^^^ @@ -49,11 +49,11 @@ var x = { >b.toPrecision(2) : string > : ^^^^^^ >b.toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >b : number > : ^^^^^^ >toPrecision : (precision?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ diff --git a/tests/baselines/reference/functionExpressionWithResolutionOfTypeNamedArguments01.types b/tests/baselines/reference/functionExpressionWithResolutionOfTypeNamedArguments01.types index ea367dfecb7ab..eaae1343cde4c 100644 --- a/tests/baselines/reference/functionExpressionWithResolutionOfTypeNamedArguments01.types +++ b/tests/baselines/reference/functionExpressionWithResolutionOfTypeNamedArguments01.types @@ -8,7 +8,7 @@ var x = function f() { >x : () => void > : ^^^^^^^^^^ >function f() { arguments;} : () => void -> : ^^^^^^^^^^ +> : >f : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName01.types b/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName01.types index 8be5e914c2c3e..118d4952d0f21 100644 --- a/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName01.types +++ b/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName01.types @@ -8,7 +8,7 @@ var x = function f() { >x : () => void > : ^^^^^^^^^^ >function f() { f;} : () => void -> : ^^^^^^^^^^ +> : >f : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName02.types b/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName02.types index 027c7f01919e5..9f19738f4c281 100644 --- a/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName02.types +++ b/tests/baselines/reference/functionExpressionWithResolutionOfTypeOfSameName02.types @@ -8,7 +8,7 @@ var x = function Foo() { >x : () => void > : ^^^^^^^^^^ >function Foo() { var x: Foo;} : () => void -> : ^^^^^^^^^^ +> : >Foo : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/functionImplementationErrors.types b/tests/baselines/reference/functionImplementationErrors.types index 50739401b5f99..e73512371693a 100644 --- a/tests/baselines/reference/functionImplementationErrors.types +++ b/tests/baselines/reference/functionImplementationErrors.types @@ -6,7 +6,7 @@ var f1 = function () { >f1 : () => "" | 3 > : ^^^^^^^^^^^^ >function () { return ''; return 3;} : () => "" | 3 -> : ^^^^^^^^^^^^ +> : return ''; >'' : "" @@ -21,7 +21,7 @@ var f2 = function x() { >f2 : () => "" | 3 > : ^^^^^^^^^^^^ >function x() { return ''; return 3;} : () => "" | 3 -> : ^^^^^^^^^^^^ +> : >x : () => "" | 3 > : ^^^^^^^^^^^^ @@ -38,7 +38,7 @@ var f3 = () => { >f3 : () => "" | 3 > : ^^^^^^^^^^^^ >() => { return ''; return 3;} : () => "" | 3 -> : ^^^^^^^^^^^^ +> : return ''; >'' : "" @@ -55,7 +55,7 @@ var f4 = function () { >f4 : () => string[] | number[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >function () { if (true) { return ['']; } else { return [1]; }} : () => string[] | number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : if (true) { >true : true @@ -89,7 +89,7 @@ var m; // Function signature with parameter initializer referencing in scope local variable function f6(n = m) { >f6 : (n?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >m : number @@ -105,7 +105,7 @@ function f6(n = m) { // Function signature with initializer referencing other parameter to the right function f7(n = m, m?) { >f7 : (n?: any, m?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^ >n : any > : ^^^ >m : any @@ -184,7 +184,7 @@ var f9 = function () { >f9 : () => Derived1 | Derived2 > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >function () { return new Derived1(); return new Derived2();} : () => Derived1 | Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Derived1(); >new Derived1() : Derived1 @@ -203,7 +203,7 @@ var f10 = () => { >f10 : () => Derived1 | Derived2 > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return new Derived1(); return new Derived2();} : () => Derived1 | Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Derived1(); >new Derived1() : Derived1 @@ -238,7 +238,7 @@ var f12 = function () { >f12 : () => Base | AnotherClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >function () { return new Base(); return new AnotherClass();} : () => Base | AnotherClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Base(); >new Base() : Base @@ -257,7 +257,7 @@ var f13 = () => { >f13 : () => Base | AnotherClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return new Base(); return new AnotherClass();} : () => Base | AnotherClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Base(); >new Base() : Base diff --git a/tests/baselines/reference/functionImplementations.types b/tests/baselines/reference/functionImplementations.types index 09e5178f712f1..96cebc50e5c90 100644 --- a/tests/baselines/reference/functionImplementations.types +++ b/tests/baselines/reference/functionImplementations.types @@ -53,7 +53,7 @@ var a: any = function f() { >x : () => any > : ^^^^^^^^^ >f : () => any -> : ^^^^^^^^^ +> : return x; >x : () => any @@ -198,7 +198,7 @@ var n = function (x: T) { >function (x: T) { return x;} (4) : 4 > : ^ >function (x: T) { return x;} : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -217,7 +217,7 @@ var n = function (x: T) { >function (x: T) { return x;} (4) : 4 > : ^ >function (x: T) { return x;} : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >x : T > : ^ @@ -352,7 +352,7 @@ function thisFunc() { // Function signature with optional parameter, no type annotation and initializer has initializer's type function opt1(n = 4) { >opt1 : (n?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >4 : 4 @@ -372,7 +372,7 @@ function opt1(n = 4) { // Function signature with optional parameter, no type annotation and initializer has initializer's widened type function opt2(n = { x: null, y: undefined }) { >opt2 : (n?: { x: any; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : { x: any; y: any; } > : ^^^^^^^^^^^^^^^^^^^ >{ x: null, y: undefined } : { x: null; y: undefined; } @@ -388,7 +388,7 @@ function opt2(n = { x: null, y: undefined }) { >m : { x: any; y: any; } > : ^^^^^^^^^^^^^^^^^^^ >n : { x: any; y: any; } -> : ^^^^^^^^^^^^^^^^^^^ +> : var m: { x: any; y: any }; >m : { x: any; y: any; } @@ -402,7 +402,7 @@ function opt2(n = { x: null, y: undefined }) { // Function signature with initializer referencing other parameter to the left function opt3(n: number, m = n) { >opt3 : (n: number, m?: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >m : number @@ -451,11 +451,11 @@ class AnotherClass { private x } // ignoring return statements with no expressions. var f7: (x: number) => string | number = x => { // should be (x: number) => number | string >f7 : (x: number) => string | number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => number | string if (x < 0) { return x; } return x.toString();} : (x: number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -473,19 +473,19 @@ var f7: (x: number) => string | number = x => { // should be (x: number) => numb >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var f8: (x: number) => any = x => { // should be (x: number) => Base >f8 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => Base return new Base(); return new Derived2();} : (x: number) => Base -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -503,11 +503,11 @@ var f8: (x: number) => any = x => { // should be (x: number) => Base } var f9: (x: number) => any = x => { // should be (x: number) => Base >f9 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => Base return new Base(); return new Derived(); return new Derived2();} : (x: number) => Base -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -531,11 +531,11 @@ var f9: (x: number) => any = x => { // should be (x: number) => Base } var f10: (x: number) => any = x => { // should be (x: number) => Derived | Derived1 >f10 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => Derived | Derived1 return new Derived(); return new Derived2();} : (x: number) => Derived | Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -553,11 +553,11 @@ var f10: (x: number) => any = x => { // should be (x: number) => Derived | Deriv } var f11: (x: number) => any = x => { // should be (x: number) => Base | AnotherClass >f11 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => Base | AnotherClass return new Base(); return new AnotherClass();} : (x: number) => Base | AnotherClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -575,11 +575,11 @@ var f11: (x: number) => any = x => { // should be (x: number) => Base | AnotherC } var f12: (x: number) => any = x => { // should be (x: number) => Base | AnotherClass >f12 : (x: number) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x => { // should be (x: number) => Base | AnotherClass return new Base(); return; // should be ignored return new AnotherClass();} : (x: number) => Base | AnotherClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/functionInIfStatementInModule.types b/tests/baselines/reference/functionInIfStatementInModule.types index cd8cc44d4cd52..0c2ff67fcbeb0 100644 --- a/tests/baselines/reference/functionInIfStatementInModule.types +++ b/tests/baselines/reference/functionInIfStatementInModule.types @@ -12,7 +12,7 @@ module Midori function Foo(src) >Foo : (src: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >src : any { } diff --git a/tests/baselines/reference/functionLikeInParameterInitializer.types b/tests/baselines/reference/functionLikeInParameterInitializer.types index 21ec8b48665e4..6a24cd4660a5b 100644 --- a/tests/baselines/reference/functionLikeInParameterInitializer.types +++ b/tests/baselines/reference/functionLikeInParameterInitializer.types @@ -4,11 +4,11 @@ // error export function bar(func = () => foo) { >bar : (func?: () => string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >func : () => string > : ^^^^^^^^^^^^ >() => foo : () => string -> : ^^^^^^^^^^^^ +> : >foo : string > : ^^^^^^ @@ -21,7 +21,7 @@ export function bar(func = () => foo) { // error export function baz1(func = { f() { return foo } }) { >baz1 : (func?: { f(): string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : { f(): string; } > : ^^^^^^^^^^^^^^^^ >{ f() { return foo } } : { f(): string; } @@ -41,11 +41,11 @@ export function baz1(func = { f() { return foo } }) { // error export function baz2(func = function () { return foo }) { >baz2 : (func?: () => string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >func : () => string > : ^^^^^^^^^^^^ >function () { return foo } : () => string -> : ^^^^^^^^^^^^ +> : >foo : string > : ^^^^^^ @@ -59,7 +59,7 @@ export function baz2(func = function () { return foo }) { // error export function baz3(func = class { x = foo }) { >baz3 : (func?: typeof (Anonymous class)) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >class { x = foo } : typeof (Anonymous class) diff --git a/tests/baselines/reference/functionLiteral.types b/tests/baselines/reference/functionLiteral.types index a1585670aa279..f74089c2200e7 100644 --- a/tests/baselines/reference/functionLiteral.types +++ b/tests/baselines/reference/functionLiteral.types @@ -7,7 +7,7 @@ var x = () => 1; >x : () => number > : ^^^^^^^^^^^^ >() => 1 : () => number -> : ^^^^^^^^^^^^ +> : >1 : 1 > : ^ @@ -20,23 +20,23 @@ var x: { var y: { (x: string): string; }; >y : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ var y: (x: string) => string; >y : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ var y2: { (x: T): T; } = (x: T) => x >y2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -44,13 +44,13 @@ var y2: { (x: T): T; } = (x: T) => x var z: { new (x: number): number; }; >z : new (x: number) => number -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ var z: new (x: number) => number; >z : new (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/functionLiteralForOverloads.types b/tests/baselines/reference/functionLiteralForOverloads.types index 76ddd907ccec6..63240443ebc5e 100644 --- a/tests/baselines/reference/functionLiteralForOverloads.types +++ b/tests/baselines/reference/functionLiteralForOverloads.types @@ -5,7 +5,7 @@ var f: { >f : { (x: string): string; (x: number): number; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: string): string; >x : string @@ -17,13 +17,13 @@ var f: { } = (x) => x; >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var f2: { >f2 : { (x: string): string; (x: number): number; } -> : ^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^^^^^^ ^^ ^^^ ^^^ (x: string): string; >x : string @@ -35,13 +35,13 @@ var f2: { } = (x) => x; >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var f3: { >f3 : { (x: T): string; (x: T_1): number; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x: T): string; >x : T @@ -53,13 +53,13 @@ var f3: { } = (x) => x; >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var f4: { >f4 : { (x: string): T; (x: number): T_1; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x: string): T; >x : string @@ -71,7 +71,7 @@ var f4: { } = (x) => x; >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any diff --git a/tests/baselines/reference/functionLiteralForOverloads2.types b/tests/baselines/reference/functionLiteralForOverloads2.types index e8c4e0ecee210..3e3189be7cba4 100644 --- a/tests/baselines/reference/functionLiteralForOverloads2.types +++ b/tests/baselines/reference/functionLiteralForOverloads2.types @@ -37,7 +37,7 @@ class D { var f: { >f : { new (x: string): C; new (x: number): C; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new(x: string): C; >x : string @@ -53,7 +53,7 @@ var f: { var f2: { >f2 : { new (x: string): C; new (x: number): C; } -> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ new(x: string): C; >x : string @@ -69,7 +69,7 @@ var f2: { var f3: { >f3 : { new (x: string): D; new (x: number): D; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ new(x: string): D; >x : string diff --git a/tests/baselines/reference/functionLiterals.types b/tests/baselines/reference/functionLiterals.types index 30ec86de4c51d..e848795d972ff 100644 --- a/tests/baselines/reference/functionLiterals.types +++ b/tests/baselines/reference/functionLiterals.types @@ -5,23 +5,23 @@ var b: { >b : { func1(x: number): number; func2: (x: number) => number; func3: { (x: number): number; }; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^ func1(x: number): number; // Method signature >func1 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ func2: (x: number) => number; // Function type literal >func2 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ func3: { (x: number): number }; // Object type literal >func3 : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -29,119 +29,119 @@ var b: { // no errors b.func1 = b.func2; >b.func1 = b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ b.func1 = b.func3; >b.func1 = b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ b.func2 = b.func1; >b.func2 = b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ b.func2 = b.func3; >b.func2 = b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ b.func3 = b.func1; >b.func3 = b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ b.func3 = b.func2; >b.func3 = b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b.func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : { func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var c: { >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^^ ^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^^ func4(x: number): number; >func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : number > : ^^^^^^ func4(s: string): string; >func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ func5: { >func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: number): number; >x : number @@ -157,56 +157,56 @@ var c: { // no errors c.func4 = c.func5; >c.func4 = c.func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c.func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c.func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ c.func5 = c.func4; >c.func5 = c.func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c.func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >func5 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c.func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >c : { func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >func4 : { (x: number): number; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ // generic versions var b2: { >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: { (x: T_1): number; }; } -> : ^^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^ func1(x: T): number; // Method signature >func1 : (x: T) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ func2: (x: T) => number; // Function type literal >func2 : (x: T) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ func3: { (x: T): number }; // Object type literal >func3 : (x: T) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -214,119 +214,119 @@ var b2: { // no errors b2.func1 = b2.func2; >b2.func1 = b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ b2.func1 = b2.func3; >b2.func1 = b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ b2.func2 = b2.func1; >b2.func2 = b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ b2.func2 = b2.func3; >b2.func2 = b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ b2.func3 = b2.func1; >b2.func3 = b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func1 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ b2.func3 = b2.func2; >b2.func3 = b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func3 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2.func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b2 : { func1(x: T): number; func2: (x: T_1) => number; func3: (x: T_2) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >func2 : (x: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ var c2: { >c2 : { func4(x: T): number; func4(s: T_1): string; func5: { (x: T_2): number; (s: T_2): string; }; } -> : ^^^^^^^^ ^^^^^ ^^^ ^^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^^ func4(x: T): number; >func4 : { (x: T): number; (s: T_1): string; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^ >x : T > : ^ func4(s: T): string; >func4 : { (x: T_1): number; (s: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ >s : T > : ^ func5: { >func5 : { (x: T): number; (s: T_1): string; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x: T): number; >x : T @@ -342,33 +342,33 @@ var c2: { // no errors c2.func4 = c2.func5; >c2.func4 = c2.func5 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2.func4 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2 : { func4(x: T): number; func4(s: T_1): string; func5: { (x: T_2): number; (s: T_3): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ >func4 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2.func5 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2 : { func4(x: T): number; func4(s: T_1): string; func5: { (x: T_2): number; (s: T_3): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ >func5 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ c2.func5 = c2.func4; >c2.func5 = c2.func4 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2.func5 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2 : { func4(x: T): number; func4(s: T_1): string; func5: { (x: T_2): number; (s: T_3): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ >func5 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2.func4 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ >c2 : { func4(x: T): number; func4(s: T_1): string; func5: { (x: T_2): number; (s: T_3): string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ >func4 : { (x: T): number; (s: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloadAmbiguity1.types b/tests/baselines/reference/functionOverloadAmbiguity1.types index 327df1928fb9a..7e18b0d10b023 100644 --- a/tests/baselines/reference/functionOverloadAmbiguity1.types +++ b/tests/baselines/reference/functionOverloadAmbiguity1.types @@ -3,23 +3,23 @@ === functionOverloadAmbiguity1.ts === function callb(lam: (l: number) => void ); >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (l: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >l : number > : ^^^^^^ function callb(lam: (n: string) => void ); >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (n: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ function callb(a) { } >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any > : ^^^ @@ -27,9 +27,9 @@ callb((a) => { a.length; } ); // error, chose first overload >callb((a) => { a.length; } ) : any > : ^^^ >callb : { (lam: (l: number) => void): any; (lam: (n: string) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >(a) => { a.length; } : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a.length : any @@ -41,23 +41,23 @@ callb((a) => { a.length; } ); // error, chose first overload function callb2(lam: (n: string) => void ); >callb2 : { (lam: (n: string) => void): any; (lam: (l: number) => void): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (n: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ function callb2(lam: (l: number) => void ); >callb2 : { (lam: (n: string) => void): any; (lam: (l: number) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >lam : (l: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >l : number > : ^^^^^^ function callb2(a) { } >callb2 : { (lam: (n: string) => void): any; (lam: (l: number) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any > : ^^^ @@ -65,9 +65,9 @@ callb2((a) => { a.length; } ); // ok, chose first overload >callb2((a) => { a.length; } ) : any > : ^^^ >callb2 : { (lam: (n: string) => void): any; (lam: (l: number) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >(a) => { a.length; } : (a: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >a.length : number diff --git a/tests/baselines/reference/functionOverloadCompatibilityWithVoid01.types b/tests/baselines/reference/functionOverloadCompatibilityWithVoid01.types index e081157523668..d4cea084d97ee 100644 --- a/tests/baselines/reference/functionOverloadCompatibilityWithVoid01.types +++ b/tests/baselines/reference/functionOverloadCompatibilityWithVoid01.types @@ -3,13 +3,13 @@ === functionOverloadCompatibilityWithVoid01.ts === function f(x: string): number; >f : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function f(x: string): void { >f : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/functionOverloadCompatibilityWithVoid02.types b/tests/baselines/reference/functionOverloadCompatibilityWithVoid02.types index c856a5a8b4d5c..21692c629e490 100644 --- a/tests/baselines/reference/functionOverloadCompatibilityWithVoid02.types +++ b/tests/baselines/reference/functionOverloadCompatibilityWithVoid02.types @@ -3,13 +3,13 @@ === functionOverloadCompatibilityWithVoid02.ts === function f(x: string): void; >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function f(x: string): number { >f : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/functionOverloadCompatibilityWithVoid03.types b/tests/baselines/reference/functionOverloadCompatibilityWithVoid03.types index bef22474e55db..233a316abfe3d 100644 --- a/tests/baselines/reference/functionOverloadCompatibilityWithVoid03.types +++ b/tests/baselines/reference/functionOverloadCompatibilityWithVoid03.types @@ -3,13 +3,13 @@ === functionOverloadCompatibilityWithVoid03.ts === function f(x: string): void; >f : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ function f(x: string): void { >f : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/functionOverloadErrors.types b/tests/baselines/reference/functionOverloadErrors.types index c134a2fccb121..5de45501f5cf7 100644 --- a/tests/baselines/reference/functionOverloadErrors.types +++ b/tests/baselines/reference/functionOverloadErrors.types @@ -4,7 +4,7 @@ //Function overload signature with initializer function fn1(x = 3); >fn1 : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >3 : 3 @@ -12,7 +12,7 @@ function fn1(x = 3); function fn1() { } >fn1 : (x?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ //Multiple function overload signatures that are identical function fn2a(); @@ -29,38 +29,38 @@ function fn2a() { } function fn2b(n: number[]); ->fn2b : { (n: number[]): any; (n: number[]): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fn2b : { (n: number[]): any; (n: Array): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >n : number[] > : ^^^^^^^^ function fn2b(n: Array); >fn2b : { (n: number[]): any; (n: Array): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >n : number[] > : ^^^^^^^^ function fn2b() { ->fn2b : { (n: number[]): any; (n: number[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fn2b : { (n: number[]): any; (n: Array): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ } //Multiple function overload signatures that differ only by return type function fn3(x: string): string; >fn3 : { (x: string): string; (y: string): number; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : string > : ^^^^^^ function fn3(y: string): number; >fn3 : { (x: string): string; (y: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >y : string > : ^^^^^^ function fn3(): any { >fn3 : { (x: string): string; (y: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ return null; } @@ -68,30 +68,30 @@ function fn3(): any { //Function overload with rest param and another with only an optional parameter function fn6(...t: any[]); >fn6 : { (...t: any[]): any; (x?: any): any; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ >t : any[] > : ^^^^^ function fn6(x?: any); >fn6 : { (...t: any[]): any; (x?: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ >x : any > : ^^^ function fn6() { } >fn6 : { (...t: any[]): any; (x?: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ //Function overload with rest param and another with only optional parameters function fn7(...t: any[]); >fn7 : { (...t: any[]): any; (x?: any, y?: any, z?: any): any; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >t : any[] > : ^^^^^ function fn7(x?: any, y?: any, z?: any); >fn7 : { (...t: any[]): any; (x?: any, y?: any, z?: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ >x : any > : ^^^ >y : any @@ -101,41 +101,41 @@ function fn7(x?: any, y?: any, z?: any); function fn7() { } >fn7 : { (...t: any[]): any; (x?: any, y?: any, z?: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^ //Function overloads that differ only by type parameter name function fn8(n: string); >fn8 : { (n: string): any; (n: string): any; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >n : string > : ^^^^^^ function fn8(n: string); >fn8 : { (n: string): any; (n: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >n : string > : ^^^^^^ function fn8() { } >fn8 : { (n: string): any; (n: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ //Function overloads that differ only by type parameter name when used in parameter type annotations function fn9(n: T); >fn9 : { (n: T): any; (n: S): any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >n : T > : ^ function fn9(n: S); >fn9 : { (n: T): any; (n: S): any; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >n : S > : ^ function fn9() { } >fn9 : { (n: T): any; (n: S): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ //Function overloads that differ only by type parameter constraints function fn10(); @@ -192,31 +192,31 @@ class cls { public f(); >f : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ private f(s: string); >f : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ f() { } >f : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ private g(s: string); >g : { (s: string): any; (): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ public g(); >g : { (s: string): any; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^ g() { } >g : { (s: string): any; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^ } //Function overloads with differing export @@ -230,17 +230,17 @@ module M { function fn1(n: string); >fn1 : { (): any; (n: string): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >n : string > : ^^^^^^ function fn1() { } >fn1 : { (): any; (n: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ function fn2(n: string); >fn2 : { (n: string): any; (): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^ >n : string > : ^^^^^^ @@ -256,31 +256,31 @@ module M { //Function overloads with differing ambience declare function dfn1(); >dfn1 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ function dfn1(s: string); >dfn1 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ function dfn1() { } >dfn1 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ function dfn2(); >dfn2 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ declare function dfn2(s: string); >dfn2 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ function dfn2() { } >dfn2 : { (): any; (s: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ //Function overloads with fewer params than implementation signature function fewerParams(); @@ -297,26 +297,26 @@ function fewerParams(n: string) { //Function implementation whose parameter types are not assignable to all corresponding overload signature parameters function fn13(n: string); >fn13 : (n: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : string > : ^^^^^^ function fn13(n: number) { } >fn13 : (n: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : number > : ^^^^^^ //Function overloads where return types are not all subtype of implementation return type function fn14(n: string): string; >fn14 : (n: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : string > : ^^^^^^ function fn14() { >fn14 : (n: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ return 3; >3 : 3 @@ -344,7 +344,7 @@ function fn15() { //Function overloads which use initializer expressions function initExpr(n = 13); >initExpr : (n?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >13 : 13 @@ -352,5 +352,5 @@ function initExpr(n = 13); function initExpr() { } >initExpr : (n?: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloadErrorsSyntax.types b/tests/baselines/reference/functionOverloadErrorsSyntax.types index 8dcbca9e6870d..24a0a3c5e29bf 100644 --- a/tests/baselines/reference/functionOverloadErrorsSyntax.types +++ b/tests/baselines/reference/functionOverloadErrorsSyntax.types @@ -4,7 +4,7 @@ //Function overload signature with optional parameter followed by non-optional parameter function fn4a(x?: number, y: string); >fn4a : (x?: number, y: string) => any -> : ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -12,11 +12,11 @@ function fn4a(x?: number, y: string); function fn4a() { } >fn4a : (x?: number, y: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^ ^^^^^^^^ function fn4b(n: string, x?: number, y: string); >fn4b : (n: string, x?: number, y: string) => any -> : ^^^^ ^^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^ ^^^^^^^^ >n : string > : ^^^^^^ >x : number @@ -26,12 +26,12 @@ function fn4b(n: string, x?: number, y: string); function fn4b() { } >fn4b : (n: string, x?: number, y: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^ ^^^^^^^^ //Function overload signature with rest param followed by non-optional parameter function fn5(x: string, ...y: any[], z: string); >fn5 : (x: string, ...y: any[], z: string) => any -> : ^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^ >x : string > : ^^^^^^ >y : any[] @@ -41,5 +41,5 @@ function fn5(x: string, ...y: any[], z: string); function fn5() { } >fn5 : (x: string, ...y: any[], z: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloadImplementationOfWrongName.types b/tests/baselines/reference/functionOverloadImplementationOfWrongName.types index 2fccd6a69bd36..376d93ba7d4ed 100644 --- a/tests/baselines/reference/functionOverloadImplementationOfWrongName.types +++ b/tests/baselines/reference/functionOverloadImplementationOfWrongName.types @@ -3,13 +3,13 @@ === functionOverloadImplementationOfWrongName.ts === function foo(x); >foo : { (x: any): any; (x: any, y: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ function foo(x, y); >foo : { (x: any): any; (x: any, y: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any diff --git a/tests/baselines/reference/functionOverloadImplementationOfWrongName2.types b/tests/baselines/reference/functionOverloadImplementationOfWrongName2.types index 0063aa6550feb..e316d77f0fe9d 100644 --- a/tests/baselines/reference/functionOverloadImplementationOfWrongName2.types +++ b/tests/baselines/reference/functionOverloadImplementationOfWrongName2.types @@ -3,7 +3,7 @@ === functionOverloadImplementationOfWrongName2.ts === function foo(x); >foo : { (x: any): any; (x: any, y: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -13,7 +13,7 @@ function bar() { } function foo(x, y); >foo : { (x: any): any; (x: any, y: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any diff --git a/tests/baselines/reference/functionOverloads.types b/tests/baselines/reference/functionOverloads.types index 0b264cfe67c0a..c35ecb30fee5e 100644 --- a/tests/baselines/reference/functionOverloads.types +++ b/tests/baselines/reference/functionOverloads.types @@ -3,17 +3,17 @@ === functionOverloads.ts === function foo(): string; >foo : { (): string; (bar: string): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^ function foo(bar: string): number; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ function foo(bar?: string): any { return "" }; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ >"" : "" @@ -25,7 +25,7 @@ var x = foo(5); >foo(5) : never > : ^^^^^ >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/functionOverloads10.types b/tests/baselines/reference/functionOverloads10.types index fd0455373d1e6..5c00cf7abddaf 100644 --- a/tests/baselines/reference/functionOverloads10.types +++ b/tests/baselines/reference/functionOverloads10.types @@ -3,7 +3,7 @@ === functionOverloads10.ts === function foo(foo:string, bar:number); >foo : { (foo: string, bar: number): any; (foo: string): any; } -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : number @@ -11,12 +11,12 @@ function foo(foo:string, bar:number); function foo(foo:string); >foo : { (foo: string, bar: number): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ function foo(foo:any){ } >foo : { (foo: string, bar: number): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >foo : any diff --git a/tests/baselines/reference/functionOverloads13.types b/tests/baselines/reference/functionOverloads13.types index a4b60feb1a838..64ce3972f04b3 100644 --- a/tests/baselines/reference/functionOverloads13.types +++ b/tests/baselines/reference/functionOverloads13.types @@ -3,19 +3,19 @@ === functionOverloads13.ts === function foo(bar:number):string; >foo : { (bar: number): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : number > : ^^^^^^ function foo(bar:number):number; >foo : { (bar: number): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar?:number):any { return "" } >foo : { (bar: number): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : number > : ^^^^^^ >"" : "" diff --git a/tests/baselines/reference/functionOverloads15.types b/tests/baselines/reference/functionOverloads15.types index 8e711339d9fcf..628e460529a0e 100644 --- a/tests/baselines/reference/functionOverloads15.types +++ b/tests/baselines/reference/functionOverloads15.types @@ -3,7 +3,7 @@ === functionOverloads15.ts === function foo(foo:{a:string; b:number;}):string; >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >foo : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -13,7 +13,7 @@ function foo(foo:{a:string; b:number;}):string; function foo(foo:{a:string; b:number;}):number; >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >foo : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -23,7 +23,7 @@ function foo(foo:{a:string; b:number;}):number; function foo(foo:{a:string; b?:number;}):any { return "" } >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo : { a: string; b?: number; } > : ^^^^^ ^^^^^^ ^^^ >a : string diff --git a/tests/baselines/reference/functionOverloads16.types b/tests/baselines/reference/functionOverloads16.types index d1d16fd0c9e59..e001be16a7431 100644 --- a/tests/baselines/reference/functionOverloads16.types +++ b/tests/baselines/reference/functionOverloads16.types @@ -3,7 +3,7 @@ === functionOverloads16.ts === function foo(foo:{a:string;}):string; >foo : { (foo: { a: string; }): string; (foo: { a: string; }): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >foo : { a: string; } > : ^^^^^ ^^^ >a : string @@ -11,7 +11,7 @@ function foo(foo:{a:string;}):string; function foo(foo:{a:string;}):number; >foo : { (foo: { a: string; }): string; (foo: { a: string; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >foo : { a: string; } > : ^^^^^ ^^^ >a : string @@ -19,7 +19,7 @@ function foo(foo:{a:string;}):number; function foo(foo:{a:string; b?:number;}):any { return "" } >foo : { (foo: { a: string; }): string; (foo: { a: string; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo : { a: string; b?: number; } > : ^^^^^ ^^^^^^ ^^^ >a : string diff --git a/tests/baselines/reference/functionOverloads18.types b/tests/baselines/reference/functionOverloads18.types index 7d0d87ec5bde9..981dadcbc7b56 100644 --- a/tests/baselines/reference/functionOverloads18.types +++ b/tests/baselines/reference/functionOverloads18.types @@ -3,7 +3,7 @@ === functionOverloads18.ts === function foo(bar:{a:number;}); >foo : (bar: { a: number; }) => any -> : ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >bar : { a: number; } > : ^^^^^ ^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}); function foo(bar:{a:string;}) { return {a:""} } >foo : (bar: { a: number; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >bar : { a: string; } > : ^^^^^ ^^^ >a : string diff --git a/tests/baselines/reference/functionOverloads19.types b/tests/baselines/reference/functionOverloads19.types index 6502ade492334..69a68243e8500 100644 --- a/tests/baselines/reference/functionOverloads19.types +++ b/tests/baselines/reference/functionOverloads19.types @@ -3,7 +3,7 @@ === functionOverloads19.ts === function foo(bar:{b:string;}); >foo : { (bar: { b: string; }): any; (bar: { a: string; }): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { b: string; } > : ^^^^^ ^^^ >b : string @@ -11,7 +11,7 @@ function foo(bar:{b:string;}); function foo(bar:{a:string;}); >foo : { (bar: { b: string; }): any; (bar: { a: string; }): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { a: string; } > : ^^^^^ ^^^ >a : string @@ -19,7 +19,7 @@ function foo(bar:{a:string;}); function foo(bar:{a:any;}) { return {a:""} } >foo : { (bar: { b: string; }): any; (bar: { a: string; }): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { a: any; } > : ^^^^^ ^^^ >a : any diff --git a/tests/baselines/reference/functionOverloads2.types b/tests/baselines/reference/functionOverloads2.types index f4368df7d48b3..0194604c0095e 100644 --- a/tests/baselines/reference/functionOverloads2.types +++ b/tests/baselines/reference/functionOverloads2.types @@ -3,19 +3,19 @@ === functionOverloads2.ts === function foo(bar: string): string; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar: number): number; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar: any): any { return bar }; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any > : ^^^ >bar : any @@ -27,7 +27,7 @@ var x = foo(true); >foo(true) : never > : ^^^^^ >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >true : true > : ^^^^ diff --git a/tests/baselines/reference/functionOverloads20.types b/tests/baselines/reference/functionOverloads20.types index 307e3418af782..cf2e2f9c4d468 100644 --- a/tests/baselines/reference/functionOverloads20.types +++ b/tests/baselines/reference/functionOverloads20.types @@ -3,7 +3,7 @@ === functionOverloads20.ts === function foo(bar:{a:number;}): number; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; } > : ^^^^^ ^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}): number; function foo(bar:{a:string;}): string; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; } > : ^^^^^ ^^^ >a : string @@ -19,7 +19,7 @@ function foo(bar:{a:string;}): string; function foo(bar:{a:any;}): string {return ""} >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; } > : ^^^^^ ^^^ >a : any diff --git a/tests/baselines/reference/functionOverloads21.types b/tests/baselines/reference/functionOverloads21.types index d21578b8a9b25..f91146f9846e6 100644 --- a/tests/baselines/reference/functionOverloads21.types +++ b/tests/baselines/reference/functionOverloads21.types @@ -3,7 +3,7 @@ === functionOverloads21.ts === function foo(bar:{a:number;}[]); >foo : { (bar: { a: number; }[]): any; (bar: { a: number; b: string; }[]): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]); function foo(bar:{a:number; b:string;}[]); >foo : { (bar: { a: number; }[]): any; (bar: { a: number; b: string; }[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { a: number; b: string; }[] > : ^^^^^ ^^^^^ ^^^^^ >a : number @@ -21,7 +21,7 @@ function foo(bar:{a:number; b:string;}[]); function foo(bar:{a:any; b?:string;}[]) { return 0 } >foo : { (bar: { a: number; }[]): any; (bar: { a: number; b: string; }[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : { a: any; b?: string; }[] > : ^^^^^ ^^^^^^ ^^^^^ >a : any diff --git a/tests/baselines/reference/functionOverloads22.types b/tests/baselines/reference/functionOverloads22.types index b9063ab1a4a76..2228e7d5586e1 100644 --- a/tests/baselines/reference/functionOverloads22.types +++ b/tests/baselines/reference/functionOverloads22.types @@ -3,7 +3,7 @@ === functionOverloads22.ts === function foo(bar:number):{a:number;}[]; >foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar : number > : ^^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:number):{a:number;}[]; function foo(bar:string):{a:number; b:string;}[]; >foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ >a : number @@ -21,7 +21,7 @@ function foo(bar:string):{a:number; b:string;}[]; function foo(bar:any):{a:any;b?:any;}[] { return [{a:""}] } >foo : { (bar: number): { a: number; }[]; (bar: string): { a: number; b: string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar : any >a : any >b : any diff --git a/tests/baselines/reference/functionOverloads23.types b/tests/baselines/reference/functionOverloads23.types index f84ca2ffd4cc5..d0b63bea83536 100644 --- a/tests/baselines/reference/functionOverloads23.types +++ b/tests/baselines/reference/functionOverloads23.types @@ -3,25 +3,25 @@ === functionOverloads23.ts === function foo(bar:(b:string)=>void); >foo : { (bar: (b: string) => void): any; (bar: (a: number) => void): any; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : (b: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : string > : ^^^^^^ function foo(bar:(a:number)=>void); >foo : { (bar: (b: string) => void): any; (bar: (a: number) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ function foo(bar:(a?)=>void) { return 0 } >foo : { (bar: (b: string) => void): any; (bar: (a: number) => void): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >bar : (a?: any) => void -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : any >0 : 0 > : ^ diff --git a/tests/baselines/reference/functionOverloads24.types b/tests/baselines/reference/functionOverloads24.types index 22c4f9734a316..cf6036d634365 100644 --- a/tests/baselines/reference/functionOverloads24.types +++ b/tests/baselines/reference/functionOverloads24.types @@ -3,7 +3,7 @@ === functionOverloads24.ts === function foo(bar:number):(b:string)=>void; >foo : { (bar: number): (b: string) => void; (bar: string): (a: number) => void; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^ >bar : number > : ^^^^^^ >b : string @@ -11,7 +11,7 @@ function foo(bar:number):(b:string)=>void; function foo(bar:string):(a:number)=>void; >foo : { (bar: number): (b: string) => void; (bar: string): (a: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ >a : number @@ -19,7 +19,7 @@ function foo(bar:string):(a:number)=>void; function foo(bar:any):(a)=>void { return function(){} } >foo : { (bar: number): (b: string) => void; (bar: string): (a: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^ >bar : any >a : any >function(){} : () => void diff --git a/tests/baselines/reference/functionOverloads25.types b/tests/baselines/reference/functionOverloads25.types index 346a88c1c8806..f7de464f9e1e6 100644 --- a/tests/baselines/reference/functionOverloads25.types +++ b/tests/baselines/reference/functionOverloads25.types @@ -3,17 +3,17 @@ === functionOverloads25.ts === function foo():string; >foo : { (): string; (bar: string): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^ function foo(bar:string):number; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ function foo(bar?:any):any{ return '' }; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >'' : "" > : ^^ @@ -24,5 +24,5 @@ var x = foo(); >foo() : string > : ^^^^^^ >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloads26.types b/tests/baselines/reference/functionOverloads26.types index d0d5516cf3999..3ea64db7cada2 100644 --- a/tests/baselines/reference/functionOverloads26.types +++ b/tests/baselines/reference/functionOverloads26.types @@ -3,17 +3,17 @@ === functionOverloads26.ts === function foo():string; >foo : { (): string; (bar: string): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^ function foo(bar:string):number; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ function foo(bar?:any):any{ return '' } >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >'' : "" > : ^^ @@ -24,7 +24,7 @@ var x = foo('baz'); >foo('baz') : number > : ^^^^^^ >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >'baz' : "baz" > : ^^^^^ diff --git a/tests/baselines/reference/functionOverloads27.types b/tests/baselines/reference/functionOverloads27.types index bbc57d55285ab..755ecf3969d98 100644 --- a/tests/baselines/reference/functionOverloads27.types +++ b/tests/baselines/reference/functionOverloads27.types @@ -3,17 +3,17 @@ === functionOverloads27.ts === function foo():string; >foo : { (): string; (bar: string): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^ function foo(bar:string):number; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ function foo(bar?:any):any{ return '' } >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any > : ^^^ >'' : "" @@ -25,7 +25,7 @@ var x = foo(5); >foo(5) : never > : ^^^^^ >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/functionOverloads28.types b/tests/baselines/reference/functionOverloads28.types index f309cef193a49..2835836a442b2 100644 --- a/tests/baselines/reference/functionOverloads28.types +++ b/tests/baselines/reference/functionOverloads28.types @@ -3,17 +3,17 @@ === functionOverloads28.ts === function foo():string; >foo : { (): string; (bar: string): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^ function foo(bar:string):number; >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : string > : ^^^^^^ function foo(bar?:any):any{ return '' } >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >'' : "" > : ^^ @@ -25,6 +25,6 @@ var t:any; var x = foo(t); >foo(t) : number > : ^^^^^^ >foo : { (): string; (bar: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >t : any diff --git a/tests/baselines/reference/functionOverloads29.types b/tests/baselines/reference/functionOverloads29.types index 7aa3ebfbc8903..e47d6745e95be 100644 --- a/tests/baselines/reference/functionOverloads29.types +++ b/tests/baselines/reference/functionOverloads29.types @@ -3,19 +3,19 @@ === functionOverloads29.ts === function foo(bar:string):string; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar:number):number; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar:any):any{ return bar } >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any > : ^^^ >bar : any @@ -27,5 +27,5 @@ var x = foo(); >foo() : never > : ^^^^^ >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloads30.types b/tests/baselines/reference/functionOverloads30.types index 61f0523f6e8bc..5cf2ba7d2045a 100644 --- a/tests/baselines/reference/functionOverloads30.types +++ b/tests/baselines/reference/functionOverloads30.types @@ -3,19 +3,19 @@ === functionOverloads30.ts === function foo(bar:string):string; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar:number):number; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar:any):any{ return bar } >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >bar : any @@ -25,7 +25,7 @@ var x = foo('bar'); >foo('bar') : string > : ^^^^^^ >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >'bar' : "bar" > : ^^^^^ diff --git a/tests/baselines/reference/functionOverloads31.types b/tests/baselines/reference/functionOverloads31.types index d1d123db41a57..d977d0dca6ce8 100644 --- a/tests/baselines/reference/functionOverloads31.types +++ b/tests/baselines/reference/functionOverloads31.types @@ -3,19 +3,19 @@ === functionOverloads31.ts === function foo(bar:string):string; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar:number):number; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar:any):any{ return bar } >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >bar : any @@ -25,7 +25,7 @@ var x = foo(5); >foo(5) : number > : ^^^^^^ >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/functionOverloads32.types b/tests/baselines/reference/functionOverloads32.types index fac7e879c2a08..892834420182b 100644 --- a/tests/baselines/reference/functionOverloads32.types +++ b/tests/baselines/reference/functionOverloads32.types @@ -3,19 +3,19 @@ === functionOverloads32.ts === function foo(bar:string):string; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar:number):number; >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : number > : ^^^^^^ function foo(bar:any):any{ return bar } >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >bar : any @@ -27,7 +27,7 @@ var baz:number; var x = foo(baz); >foo(baz) : number > : ^^^^^^ >foo : { (bar: string): string; (bar: number): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >baz : number > : ^^^^^^ diff --git a/tests/baselines/reference/functionOverloads33.types b/tests/baselines/reference/functionOverloads33.types index d35ad7007d707..6226600916598 100644 --- a/tests/baselines/reference/functionOverloads33.types +++ b/tests/baselines/reference/functionOverloads33.types @@ -3,18 +3,18 @@ === functionOverloads33.ts === function foo(bar:string):string; >foo : { (bar: string): string; (bar: any): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : string > : ^^^^^^ function foo(bar:any):number; >foo : { (bar: string): string; (bar: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : any function foo(bar:any):any{ return bar } >foo : { (bar: string): string; (bar: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : any >bar : any @@ -24,7 +24,7 @@ var x = foo(5); >foo(5) : number > : ^^^^^^ >foo : { (bar: string): string; (bar: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/functionOverloads34.types b/tests/baselines/reference/functionOverloads34.types index 83ba0d0b558a3..45d3e9f902975 100644 --- a/tests/baselines/reference/functionOverloads34.types +++ b/tests/baselines/reference/functionOverloads34.types @@ -3,7 +3,7 @@ === functionOverloads34.ts === function foo(bar:{a:number;}):string; >foo : { (bar: { a: number; }): string; (bar: { a: boolean; }): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; } > : ^^^^^ ^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}):string; function foo(bar:{a:boolean;}):number; >foo : { (bar: { a: number; }): string; (bar: { a: boolean; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; } > : ^^^^^ ^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}):number; function foo(bar:{a:any;}):any{ return bar } >foo : { (bar: { a: number; }): string; (bar: { a: boolean; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; } > : ^^^^^ ^^^ >a : any @@ -33,5 +33,5 @@ var x = foo(); >foo() : never > : ^^^^^ >foo : { (bar: { a: number; }): string; (bar: { a: boolean; }): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloads35.types b/tests/baselines/reference/functionOverloads35.types index abcc98afb9edd..fca25320d98c2 100644 --- a/tests/baselines/reference/functionOverloads35.types +++ b/tests/baselines/reference/functionOverloads35.types @@ -3,7 +3,7 @@ === functionOverloads35.ts === function foo(bar:{a:number;}):number; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; } > : ^^^^^ ^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}):number; function foo(bar:{a:string;}):string; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; } > : ^^^^^ ^^^ >a : string @@ -19,7 +19,7 @@ function foo(bar:{a:string;}):string; function foo(bar:{a:any;}):any{ return bar } >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; } > : ^^^^^ ^^^ >a : any @@ -32,7 +32,7 @@ var x = foo({a:1}); >foo({a:1}) : number > : ^^^^^^ >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{a:1} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/functionOverloads36.types b/tests/baselines/reference/functionOverloads36.types index 72a3ac2a136bf..eb7fb2e1bf72d 100644 --- a/tests/baselines/reference/functionOverloads36.types +++ b/tests/baselines/reference/functionOverloads36.types @@ -3,7 +3,7 @@ === functionOverloads36.ts === function foo(bar:{a:number;}):number; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; } > : ^^^^^ ^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}):number; function foo(bar:{a:string;}):string; >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; } > : ^^^^^ ^^^ >a : string @@ -19,7 +19,7 @@ function foo(bar:{a:string;}):string; function foo(bar:{a:any;}):any{ return bar } >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; } > : ^^^^^ ^^^ >a : any @@ -32,7 +32,7 @@ var x = foo({a:'foo'}); >foo({a:'foo'}) : string > : ^^^^^^ >foo : { (bar: { a: number; }): number; (bar: { a: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{a:'foo'} : { a: string; } > : ^^^^^^^^^^^^^^ >a : string diff --git a/tests/baselines/reference/functionOverloads37.types b/tests/baselines/reference/functionOverloads37.types index f5ab1ef982bee..4dcb405da9ba6 100644 --- a/tests/baselines/reference/functionOverloads37.types +++ b/tests/baselines/reference/functionOverloads37.types @@ -3,7 +3,7 @@ === functionOverloads37.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:boolean;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; }[] > : ^^^^^ ^^^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}[]):number; function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -33,5 +33,5 @@ var x = foo(); >foo() : never > : ^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionOverloads38.types b/tests/baselines/reference/functionOverloads38.types index cdbf2b562be3a..ca6e66d4e08d1 100644 --- a/tests/baselines/reference/functionOverloads38.types +++ b/tests/baselines/reference/functionOverloads38.types @@ -3,7 +3,7 @@ === functionOverloads38.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:boolean;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; }[] > : ^^^^^ ^^^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}[]):number; function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -32,7 +32,7 @@ var x = foo([{a:1}]); >foo([{a:1}]) : string > : ^^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a:1}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a:1} : { a: number; } diff --git a/tests/baselines/reference/functionOverloads39.types b/tests/baselines/reference/functionOverloads39.types index e42142769edb0..129c3fbe5abce 100644 --- a/tests/baselines/reference/functionOverloads39.types +++ b/tests/baselines/reference/functionOverloads39.types @@ -3,7 +3,7 @@ === functionOverloads39.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:boolean;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; }[] > : ^^^^^ ^^^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}[]):number; function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -32,7 +32,7 @@ var x = foo([{a:true}]); >foo([{a:true}]) : number > : ^^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a:true}] : { a: true; }[] > : ^^^^^^^^^^^^^^ >{a:true} : { a: true; } diff --git a/tests/baselines/reference/functionOverloads40.types b/tests/baselines/reference/functionOverloads40.types index 1ba6e9a8134fe..7524b2b409457 100644 --- a/tests/baselines/reference/functionOverloads40.types +++ b/tests/baselines/reference/functionOverloads40.types @@ -3,7 +3,7 @@ === functionOverloads40.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:boolean;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; }[] > : ^^^^^ ^^^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}[]):number; function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -33,7 +33,7 @@ var x = foo([{a:'bar'}]); >foo([{a:'bar'}]) : never > : ^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a:'bar'}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a:'bar'} : { a: string; } diff --git a/tests/baselines/reference/functionOverloads41.types b/tests/baselines/reference/functionOverloads41.types index 7523b680ddb7e..7450f4479f0b3 100644 --- a/tests/baselines/reference/functionOverloads41.types +++ b/tests/baselines/reference/functionOverloads41.types @@ -3,7 +3,7 @@ === functionOverloads41.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:boolean;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: boolean; }[] > : ^^^^^ ^^^^^ >a : boolean @@ -19,7 +19,7 @@ function foo(bar:{a:boolean;}[]):number; function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -33,7 +33,7 @@ var x = foo([{}]); >foo([{}]) : never > : ^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: boolean; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{}] : {}[] > : ^^^^ >{} : {} diff --git a/tests/baselines/reference/functionOverloads42.types b/tests/baselines/reference/functionOverloads42.types index ce1464d4880d6..c35846501937c 100644 --- a/tests/baselines/reference/functionOverloads42.types +++ b/tests/baselines/reference/functionOverloads42.types @@ -3,7 +3,7 @@ === functionOverloads42.ts === function foo(bar:{a:number;}[]):string; >foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,14 +11,14 @@ function foo(bar:{a:number;}[]):string; function foo(bar:{a:any;}[]):number; >foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any function foo(bar:{a:any;}[]):any{ return bar } >foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : { a: any; }[] > : ^^^^^ ^^^^^ >a : any @@ -31,7 +31,7 @@ var x = foo([{a:'s'}]); >foo([{a:'s'}]) : number > : ^^^^^^ >foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a:'s'}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a:'s'} : { a: string; } diff --git a/tests/baselines/reference/functionOverloads43.types b/tests/baselines/reference/functionOverloads43.types index 8ab5184eac842..63953373509d3 100644 --- a/tests/baselines/reference/functionOverloads43.types +++ b/tests/baselines/reference/functionOverloads43.types @@ -3,7 +3,7 @@ === functionOverloads43.ts === function foo(bar: { a:number }[]): number; >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -11,7 +11,7 @@ function foo(bar: { a:number }[]): number; function foo(bar: { a:string }[]): string; >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; }[] > : ^^^^^ ^^^^^ >a : string @@ -19,7 +19,7 @@ function foo(bar: { a:string }[]): string; function foo([x]: { a:number | string }[]): string | number { >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : { a: string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >a : string | number @@ -49,7 +49,7 @@ var x = foo([{a: "str"}]); >foo([{a: "str"}]) : string > : ^^^^^^ >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a: "str"}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a: "str"} : { a: string; } @@ -65,7 +65,7 @@ var y = foo([{a: 100}]); >foo([{a: 100}]) : number > : ^^^^^^ >foo : { (bar: { a: number; }[]): number; (bar: { a: string; }[]): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a: 100}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a: 100} : { a: number; } diff --git a/tests/baselines/reference/functionOverloads44.types b/tests/baselines/reference/functionOverloads44.types index 92e763261c0a7..7a4df4f7d3c84 100644 --- a/tests/baselines/reference/functionOverloads44.types +++ b/tests/baselines/reference/functionOverloads44.types @@ -12,7 +12,7 @@ interface Cat extends Animal { cat } function foo1(bar: { a:number }[]): Dog; >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -20,7 +20,7 @@ function foo1(bar: { a:number }[]): Dog; function foo1(bar: { a:string }[]): Animal; >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; }[] > : ^^^^^ ^^^^^ >a : string @@ -28,7 +28,7 @@ function foo1(bar: { a:string }[]): Animal; function foo1([x]: { a:number | string }[]): Dog { >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x : { a: string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >a : string | number @@ -41,7 +41,7 @@ function foo1([x]: { a:number | string }[]): Dog { function foo2(bar: { a:number }[]): Cat; >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog | Cat; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -49,7 +49,7 @@ function foo2(bar: { a:number }[]): Cat; function foo2(bar: { a:string }[]): Cat | Dog; >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Cat | Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; }[] > : ^^^^^ ^^^^^ >a : string @@ -57,7 +57,7 @@ function foo2(bar: { a:string }[]): Cat | Dog; function foo2([x]: { a:number | string }[]): Cat { >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog | Cat; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : { a: string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >a : string | number @@ -75,7 +75,7 @@ var x1 = foo1([{a: "str"}]); >foo1([{a: "str"}]) : Animal > : ^^^^^^ >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a: "str"}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a: "str"} : { a: string; } @@ -91,7 +91,7 @@ var y1 = foo1([{a: 100}]); >foo1([{a: 100}]) : Dog > : ^^^ >foo1 : { (bar: { a: number; }[]): Dog; (bar: { a: string; }[]): Animal; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^ >[{a: 100}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a: 100} : { a: number; } @@ -107,7 +107,7 @@ var x2 = foo2([{a: "str"}]); >foo2([{a: "str"}]) : Dog | Cat > : ^^^^^^^^^ >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog | Cat; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >[{a: "str"}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a: "str"} : { a: string; } @@ -123,7 +123,7 @@ var y2 = foo2([{a: 100}]); >foo2([{a: 100}]) : Cat > : ^^^ >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog | Cat; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >[{a: 100}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a: 100} : { a: number; } diff --git a/tests/baselines/reference/functionOverloads45.types b/tests/baselines/reference/functionOverloads45.types index 4b458049b08f0..111e301f530cf 100644 --- a/tests/baselines/reference/functionOverloads45.types +++ b/tests/baselines/reference/functionOverloads45.types @@ -12,7 +12,7 @@ interface Cat extends Animal { cat } function foo1(bar: { a:number }[]): Cat; >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -20,7 +20,7 @@ function foo1(bar: { a:number }[]): Cat; function foo1(bar: { a:string }[]): Dog; >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; }[] > : ^^^^^ ^^^^^ >a : string @@ -28,7 +28,7 @@ function foo1(bar: { a:string }[]): Dog; function foo1([x]: { a:number | string }[]): Animal { >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : { a: string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >a : string | number @@ -41,7 +41,7 @@ function foo1([x]: { a:number | string }[]): Animal { function foo2(bar: { a:number }[]): Cat; >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ >bar : { a: number; }[] > : ^^^^^ ^^^^^ >a : number @@ -49,7 +49,7 @@ function foo2(bar: { a:number }[]): Cat; function foo2(bar: { a:string }[]): Dog; >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ >bar : { a: string; }[] > : ^^^^^ ^^^^^ >a : string @@ -57,7 +57,7 @@ function foo2(bar: { a:string }[]): Dog; function foo2([x]: { a:number | string }[]): Cat | Dog { >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : { a: string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >a : string | number @@ -75,7 +75,7 @@ var x1 = foo1([{a: "str"}]); >foo1([{a: "str"}]) : Dog > : ^^^ >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[{a: "str"}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a: "str"} : { a: string; } @@ -91,7 +91,7 @@ var y1 = foo1([{a: 100}]); >foo1([{a: 100}]) : Cat > : ^^^ >foo1 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[{a: 100}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a: 100} : { a: number; } @@ -107,7 +107,7 @@ var x2 = foo2([{a: "str"}]); >foo2([{a: "str"}]) : Dog > : ^^^ >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[{a: "str"}] : { a: string; }[] > : ^^^^^^^^^^^^^^^^ >{a: "str"} : { a: string; } @@ -123,7 +123,7 @@ var y2 = foo2([{a: 100}]); >foo2([{a: 100}]) : Cat > : ^^^ >foo2 : { (bar: { a: number; }[]): Cat; (bar: { a: string; }[]): Dog; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[{a: 100}] : { a: number; }[] > : ^^^^^^^^^^^^^^^^ >{a: 100} : { a: number; } diff --git a/tests/baselines/reference/functionOverloads6.types b/tests/baselines/reference/functionOverloads6.types index 422f14aad9cdf..aae5680a396ae 100644 --- a/tests/baselines/reference/functionOverloads6.types +++ b/tests/baselines/reference/functionOverloads6.types @@ -7,17 +7,17 @@ class foo { static fnOverload(); >fnOverload : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ static fnOverload(foo:string); >fnOverload : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ static fnOverload(foo?: any){ } >fnOverload : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : any } diff --git a/tests/baselines/reference/functionOverloads7.types b/tests/baselines/reference/functionOverloads7.types index eaadc80c0ce28..98bc125ca8a4d 100644 --- a/tests/baselines/reference/functionOverloads7.types +++ b/tests/baselines/reference/functionOverloads7.types @@ -7,17 +7,17 @@ class foo { private bar(); >bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ private bar(foo: string); >bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ private bar(foo?: any){ return "foo" } >bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : any >"foo" : "foo" > : ^^^^^ @@ -30,22 +30,22 @@ class foo { >foo : any >this.bar() : any >this.bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ foo = this.bar("test"); >foo = this.bar("test") : any >foo : any >this.bar("test") : any >this.bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >bar : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >"test" : "test" > : ^^^^^^ } diff --git a/tests/baselines/reference/functionOverloads8.types b/tests/baselines/reference/functionOverloads8.types index f8d8afe2d047d..5a71f120d7521 100644 --- a/tests/baselines/reference/functionOverloads8.types +++ b/tests/baselines/reference/functionOverloads8.types @@ -3,17 +3,17 @@ === functionOverloads8.ts === function foo(); >foo : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ function foo(foo:string); >foo : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ function foo(foo?:any){ return '' } >foo : { (): any; (foo: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : any >'' : "" > : ^^ diff --git a/tests/baselines/reference/functionOverloads9.types b/tests/baselines/reference/functionOverloads9.types index e6b2db94323ac..178ddb306a4fc 100644 --- a/tests/baselines/reference/functionOverloads9.types +++ b/tests/baselines/reference/functionOverloads9.types @@ -3,13 +3,13 @@ === functionOverloads9.ts === function foo(foo:string); >foo : (foo: string) => any -> : ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >foo : string > : ^^^^^^ function foo(foo?:string){ return '' }; >foo : (foo: string) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >foo : string > : ^^^^^^ >'' : "" @@ -19,7 +19,7 @@ var x = foo('foo'); >x : any >foo('foo') : any >foo : (foo: string) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'foo' : "foo" > : ^^^^^ diff --git a/tests/baselines/reference/functionOverloadsOnGenericArity2.types b/tests/baselines/reference/functionOverloadsOnGenericArity2.types index bdb73ec409768..33ddeb028c078 100644 --- a/tests/baselines/reference/functionOverloadsOnGenericArity2.types +++ b/tests/baselines/reference/functionOverloadsOnGenericArity2.types @@ -4,19 +4,19 @@ interface I { then(p: string): string; >then : { (p: string): string; (p: string): string; (p: string): Date; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >p : string > : ^^^^^^ then(p: string): string; >then : { (p: string): string; (p: string): string; (p: string): Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^ >p : string > : ^^^^^^ then(p: string): Date; >then : { (p: string): string; (p: string): string; (p: string): Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >p : string > : ^^^^^^ } diff --git a/tests/baselines/reference/functionOverloadsOutOfOrder.types b/tests/baselines/reference/functionOverloadsOutOfOrder.types index 4c47d04b65c49..d882d23afbec0 100644 --- a/tests/baselines/reference/functionOverloadsOutOfOrder.types +++ b/tests/baselines/reference/functionOverloadsOutOfOrder.types @@ -7,13 +7,13 @@ class d { private foo(n: number): string; >foo : { (n: number): string; (s: string): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >n : number > : ^^^^^^ private foo(ns: any) { >foo : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >ns : any > : ^^^ @@ -29,7 +29,7 @@ class d { } private foo(s: string): string; >foo : { (n: number): string; (s: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ } @@ -40,7 +40,7 @@ class e { private foo(ns: any) { >foo : { (ns: any): any; (s: string): string; (n: number): string; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >ns : any > : ^^^ @@ -56,13 +56,13 @@ class e { } private foo(s: string): string; >foo : { (ns: any): any; (s: string): string; (n: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >s : string > : ^^^^^^ private foo(n: number): string; >foo : { (ns: any): any; (s: string): string; (n: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >n : number > : ^^^^^^ } diff --git a/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.types b/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.types index 279d48a7ea665..8c91655cc6079 100644 --- a/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.types +++ b/tests/baselines/reference/functionOverloadsRecursiveGenericReturnType.types @@ -21,19 +21,19 @@ class A{ function Choice(args: T[]): A; >Choice : { (args: T[]): A; (...v_args: T_1[]): A; } -> : ^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >args : T[] > : ^^^ function Choice(...v_args: T[]): A; >Choice : { (args: T_1[]): A; (...v_args: T[]): A; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^^^^ ^^ ^^^ ^^^ >v_args : T[] > : ^^^ function Choice(...v_args: any[]): A{ >Choice : { (args: T_1[]): A; (...v_args: T_2[]): A; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >v_args : any[] > : ^^^^^ diff --git a/tests/baselines/reference/functionParameterArityMismatch.types b/tests/baselines/reference/functionParameterArityMismatch.types index dab23d8e6bc12..1b3d620f069c4 100644 --- a/tests/baselines/reference/functionParameterArityMismatch.types +++ b/tests/baselines/reference/functionParameterArityMismatch.types @@ -3,13 +3,13 @@ === functionParameterArityMismatch.ts === declare function f1(a: number); >f1 : { (a: number): any; (a: number, b: number, c: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ declare function f1(a: number, b: number, c: number); >f1 : { (a: number): any; (a: number, b: number, c: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -21,13 +21,13 @@ f1(); >f1() : any > : ^^^ >f1 : { (a: number): any; (a: number, b: number, c: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ f1(1, 2); >f1(1, 2) : any > : ^^^ >f1 : { (a: number): any; (a: number, b: number, c: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -37,7 +37,7 @@ f1(1, 2, 3, 4); >f1(1, 2, 3, 4) : any > : ^^^ >f1 : { (a: number): any; (a: number, b: number, c: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -49,11 +49,11 @@ f1(1, 2, 3, 4); declare function f2(); >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ declare function f2(a: number, b: number); >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -61,7 +61,7 @@ declare function f2(a: number, b: number); declare function f2(a: number, b: number, c: number, d: number); >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -73,7 +73,7 @@ declare function f2(a: number, b: number, c: number, d: number); declare function f2(a: number, b: number, c: number, d: number, e: number, f: number); >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -91,7 +91,7 @@ f2(1); >f2(1) : any > : ^^^ >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -99,7 +99,7 @@ f2(1, 2, 3); >f2(1, 2, 3) : any > : ^^^ >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -111,7 +111,7 @@ f2(1, 2, 3, 4, 5); >f2(1, 2, 3, 4, 5) : any > : ^^^ >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -127,7 +127,7 @@ f2(1, 2, 3, 4, 5, 6, 7); >f2(1, 2, 3, 4, 5, 6, 7) : any > : ^^^ >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -147,7 +147,7 @@ f2(1, 2, 3, 4, 5, ...[6, 7]); >f2(1, 2, 3, 4, 5, ...[6, 7]) : any > : ^^^ >f2 : { (): any; (a: number, b: number): any; (a: number, b: number, c: number, d: number): any; (a: number, b: number, c: number, d: number, e: number, f: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/functionReturnTypeQuery.types b/tests/baselines/reference/functionReturnTypeQuery.types index dc609513d347b..b686293f58cad 100644 --- a/tests/baselines/reference/functionReturnTypeQuery.types +++ b/tests/baselines/reference/functionReturnTypeQuery.types @@ -7,7 +7,7 @@ declare let foo: number; declare function test1(foo: string, bar: typeof foo): typeof foo; >test1 : (foo: string, bar: typeof foo) => typeof foo -> : ^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -19,7 +19,7 @@ declare function test1(foo: string, bar: typeof foo): typeof foo; declare function test2({foo}: {foo: string}, bar: typeof foo): typeof foo; >test2 : ({ foo }: { foo: string; }, bar: typeof foo) => typeof foo -> : ^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >foo : string > : ^^^^^^ >foo : string diff --git a/tests/baselines/reference/functionSignatureAssignmentCompat1.types b/tests/baselines/reference/functionSignatureAssignmentCompat1.types index fb762c8c56254..6370a9b42734c 100644 --- a/tests/baselines/reference/functionSignatureAssignmentCompat1.types +++ b/tests/baselines/reference/functionSignatureAssignmentCompat1.types @@ -15,7 +15,7 @@ interface Parsers { readline(delimiter?: string): ParserFunc; >readline : (delimiter?: string) => ParserFunc -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >delimiter : string > : ^^^^^^ } @@ -37,11 +37,11 @@ var d: ParserFunc = parsers.readline; // not ok >d : ParserFunc > : ^^^^^^^^^^ >parsers.readline : (delimiter?: string) => ParserFunc -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^ >parsers : Parsers > : ^^^^^^^ >readline : (delimiter?: string) => ParserFunc -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^ var e: ParserFunc = parsers.readline(); // ok >e : ParserFunc @@ -49,9 +49,9 @@ var e: ParserFunc = parsers.readline(); // ok >parsers.readline() : ParserFunc > : ^^^^^^^^^^ >parsers.readline : (delimiter?: string) => ParserFunc -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^ >parsers : Parsers > : ^^^^^^^ >readline : (delimiter?: string) => ParserFunc -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs.types b/tests/baselines/reference/functionSubtypingOfVarArgs.types index 06ca677c7ef74..58aa0ecb6fc3c 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs.types @@ -13,9 +13,9 @@ class EventBase { add(listener: (...args: any[]) => void): void { >add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >listener : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -23,7 +23,7 @@ class EventBase { >this._listeners.push(listener) : number > : ^^^^^^ >this._listeners.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >this._listeners : any[] > : ^^^^^ >this : this @@ -31,9 +31,9 @@ class EventBase { >_listeners : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >listener : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ } } @@ -45,9 +45,9 @@ class StringEvent extends EventBase { // should work add(listener: (items: string) => void ) { // valid, items is subtype of args >add : (listener: (items: string) => void) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >listener : (items: string) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >items : string > : ^^^^^^ @@ -55,13 +55,13 @@ class StringEvent extends EventBase { // should work >super.add(listener) : void > : ^^^^ >super.add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >super : EventBase > : ^^^^^^^^^ >add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >listener : (items: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ } } diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.types b/tests/baselines/reference/functionSubtypingOfVarArgs2.types index f0c1e41174281..6fd3355594f89 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.types @@ -7,7 +7,7 @@ class EventBase { private _listeners: { (...args: any[]): void; }[] = []; >_listeners : ((...args: any[]) => void)[] -> : ^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^ ^^ ^^^^^ ^^^ >args : any[] > : ^^^^^ >[] : undefined[] @@ -15,9 +15,9 @@ class EventBase { add(listener: (...args: any[]) => void): void { >add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >listener : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -25,17 +25,17 @@ class EventBase { >this._listeners.push(listener) : number > : ^^^^^^ >this._listeners.push : (...items: ((...args: any[]) => void)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >this._listeners : ((...args: any[]) => void)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >_listeners : ((...args: any[]) => void)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^ >push : (...items: ((...args: any[]) => void)[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >listener : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ } } @@ -47,9 +47,9 @@ class StringEvent extends EventBase { add(listener: (items: string, moreitems: number) => void ) { >add : (listener: (items: string, moreitems: number) => void) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >listener : (items: string, moreitems: number) => void -> : ^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >items : string > : ^^^^^^ >moreitems : number @@ -59,13 +59,13 @@ class StringEvent extends EventBase { >super.add(listener) : void > : ^^^^ >super.add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >super : EventBase > : ^^^^^^^^^ >add : (listener: (...args: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >listener : (items: string, moreitems: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ } } diff --git a/tests/baselines/reference/functionType.types b/tests/baselines/reference/functionType.types index 24d02b5f3fb49..8d54a83bca1a6 100644 --- a/tests/baselines/reference/functionType.types +++ b/tests/baselines/reference/functionType.types @@ -8,11 +8,11 @@ function salt() {} salt.apply("hello", []); >salt.apply("hello", []) : any >salt.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >salt : () => void > : ^^^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >[] : undefined[] diff --git a/tests/baselines/reference/functionTypeArgumentArityErrors.types b/tests/baselines/reference/functionTypeArgumentArityErrors.types index 43722dd171d28..a043dc630625f 100644 --- a/tests/baselines/reference/functionTypeArgumentArityErrors.types +++ b/tests/baselines/reference/functionTypeArgumentArityErrors.types @@ -46,11 +46,11 @@ f2(); // Overloaded non-generic functions declare function f3(): void; >f3 : { (): void; (a: any): void; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^ declare function f3(a): void; >f3 : { (): void; (a: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^ ^^^ >a : any > : ^^^ @@ -58,7 +58,7 @@ f3(); >f3() : void > : ^^^^ >f3 : { (): void; (a: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ // Generic function with default type parameters declare function f4(): void; diff --git a/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types b/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types index 79db8b1e2fa88..6f4dd22eda06e 100644 --- a/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types +++ b/tests/baselines/reference/functionTypeArgumentAssignmentCompat.types @@ -3,7 +3,7 @@ === functionTypeArgumentAssignmentCompat.ts === var f : { >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ (x:T): T; >x : T @@ -25,7 +25,7 @@ f = g; >f = g : () => S[] > : ^^^^^^^^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >g : () => S[] > : ^^^^^^^^^^^^ @@ -39,7 +39,7 @@ var s = f("str").toUpperCase(); >f("str") : "str" > : ^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >"str" : "str" > : ^^^^^ >toUpperCase : () => string @@ -49,11 +49,11 @@ console.log(s); >console.log(s) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/functionTypesLackingReturnTypes.types b/tests/baselines/reference/functionTypesLackingReturnTypes.types index ce08a20cdf91a..1daafaa5f397a 100644 --- a/tests/baselines/reference/functionTypesLackingReturnTypes.types +++ b/tests/baselines/reference/functionTypesLackingReturnTypes.types @@ -4,7 +4,7 @@ // Error (no '=>') function f(x: ()) { >f : (x: () => any) => void -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : () => any > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/functionWithAnyReturnTypeAndNoReturnExpression.types b/tests/baselines/reference/functionWithAnyReturnTypeAndNoReturnExpression.types index 277a71ae910e6..2e8583acabd56 100644 --- a/tests/baselines/reference/functionWithAnyReturnTypeAndNoReturnExpression.types +++ b/tests/baselines/reference/functionWithAnyReturnTypeAndNoReturnExpression.types @@ -16,5 +16,5 @@ var f3 = (): any => { }; >f3 : () => any > : ^^^^^^ >(): any => { } : () => any -> : ^^^^^^ +> : diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types index 94358c49f0920..1efeb91b3ecec 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements1.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements1.ts === function foo(x = 0) { } >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types index 177110b2d8b6d..c101aff135ddd 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements10.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements10.ts === function foo(a = [0]) { } >foo : (a?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >[0] : number[] @@ -13,7 +13,7 @@ function foo(a = [0]) { } function bar(a = [0]) { >bar : (a?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >[0] : number[] diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types index 914eb4ae06c89..35b6ca6e4c96a 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements11.types @@ -7,7 +7,7 @@ var v: any[]; function foo(a = v[0]) { } >foo : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >v[0] : any >v : any[] @@ -17,7 +17,7 @@ function foo(a = v[0]) { } function bar(a = v[0]) { >bar : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >v[0] : any >v : any[] diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements12.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements12.types index 3e4cf6f06f7c1..afedf49058302 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements12.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements12.types @@ -7,7 +7,7 @@ var v: any[]; function foo(a = (v)) { } >foo : (a?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ >(v) : any[] @@ -17,7 +17,7 @@ function foo(a = (v)) { } function bar(a = (v)) { >bar : (a?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ >(v) : any[] diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types index 81efe25fddbc6..bd7bdf8725c01 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements13.types @@ -7,7 +7,7 @@ var v: any[]; function foo(a = [1 + 1]) { } >foo : (a?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >[1 + 1] : number[] @@ -21,7 +21,7 @@ function foo(a = [1 + 1]) { } function bar(a = [1 + 1]) { >bar : (a?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ >[1 + 1] : number[] diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types index 8e27d1a4c55a4..d3da3c3516886 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements14.types @@ -7,7 +7,7 @@ var v: any[]; function foo(a = v[1 + 1]) { } >foo : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >v[1 + 1] : any >v : any[] @@ -21,7 +21,7 @@ function foo(a = v[1 + 1]) { } function bar(a = v[1 + 1]) { >bar : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >v[1 + 1] : any >v : any[] diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types index eb8bfe1975dd1..20d31a3bccf35 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements15.types @@ -7,7 +7,7 @@ var v: any[]; function foo(a = (1 + 1)) { } >foo : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >(1 + 1) : number @@ -21,7 +21,7 @@ function foo(a = (1 + 1)) { } function bar(a = (1 + 1)) { >bar : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >(1 + 1) : number diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements16.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements16.types index 8de6fe3f3a17c..cba400e43cd25 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements16.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements16.types @@ -7,21 +7,21 @@ var v: any[]; function foo(a = bar()) { } >foo : (a?: void) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : void > : ^^^^ >bar() : void > : ^^^^ >bar : (a?: void) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ function bar(a = foo()) { >bar : (a?: void) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : void > : ^^^^ >foo() : void > : ^^^^ >foo : (a?: void) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types index 967a379d55419..c4e88eac74889 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements2.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements2.ts === function foo(x = 0) { >foo : (x?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types index 8e661f1fb687f..f6ac2a2c1c272 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements3.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements3.ts === function foo(a = "") { } >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >"" : "" @@ -11,7 +11,7 @@ function foo(a = "") { } function bar(a = "") { >bar : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >"" : "" diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types index b613fb53c763f..8dcdef3bc02c1 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements4.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements4.ts === function foo(a = ``) { } >foo : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >`` : "" @@ -11,7 +11,7 @@ function foo(a = ``) { } function bar(a = ``) { >bar : (a?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >`` : "" diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types index ee273f9ddd088..321e65e809724 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements5.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements5.ts === function foo(a = 0) { } >foo : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 @@ -11,7 +11,7 @@ function foo(a = 0) { } function bar(a = 0) { >bar : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types index 97d97cc643ba7..f08fd8775d820 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements6.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements6.ts === function foo(a = true) { } >foo : (a?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true @@ -11,7 +11,7 @@ function foo(a = true) { } function bar(a = true) { >bar : (a?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ >true : true diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types index 97d5303c7c595..35b6d8b8e800b 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements7.types @@ -3,7 +3,7 @@ === functionWithDefaultParameterWithNoStatements7.ts === function foo(a = false) { } >foo : (a?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ >false : false @@ -11,7 +11,7 @@ function foo(a = false) { } function bar(a = false) { >bar : (a?: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ >false : false diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements8.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements8.types index d2cc5510deb75..87c67c8c9dd0d 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements8.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements8.types @@ -3,14 +3,14 @@ === functionWithDefaultParameterWithNoStatements8.ts === function foo(a = undefined) { } >foo : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >undefined : undefined > : ^^^^^^^^^ function bar(a = undefined) { >bar : (a?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : any >undefined : undefined > : ^^^^^^^^^ diff --git a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements9.types b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements9.types index d381908cfaac7..1dd93eed7a52a 100644 --- a/tests/baselines/reference/functionWithDefaultParameterWithNoStatements9.types +++ b/tests/baselines/reference/functionWithDefaultParameterWithNoStatements9.types @@ -3,25 +3,25 @@ === functionWithDefaultParameterWithNoStatements9.ts === function foo(a = console.log) { } >foo : (a?: (...data: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ function bar(a = console.log) { >bar : (a?: (...data: any[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/functionWithMultipleReturnStatements.types b/tests/baselines/reference/functionWithMultipleReturnStatements.types index 13db4b1b50495..63b579676529f 100644 --- a/tests/baselines/reference/functionWithMultipleReturnStatements.types +++ b/tests/baselines/reference/functionWithMultipleReturnStatements.types @@ -103,7 +103,7 @@ function f5() { function f6(x: T, y:U) { >f6 : (x: T, y: U) => T | U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >x : T > : ^ >y : U @@ -126,7 +126,7 @@ function f6(x: T, y:U) { function f8(x: T, y: U) { >f8 : (x: T, y: U) => U -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/functionWithMultipleReturnStatements2.types b/tests/baselines/reference/functionWithMultipleReturnStatements2.types index 78cd5be5b489d..ab4c4708f6bed 100644 --- a/tests/baselines/reference/functionWithMultipleReturnStatements2.types +++ b/tests/baselines/reference/functionWithMultipleReturnStatements2.types @@ -85,7 +85,7 @@ function f5() { function f6(x: T) { >f6 : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -169,7 +169,7 @@ function f10() { // returns number => void function f11() { >f11 : () => ((x: number) => void) | ((x: Object) => void) -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (true) { >true : true @@ -177,14 +177,14 @@ function f11() { return (x: number) => { } >(x: number) => { } : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } else { return (x: Object) => { } >(x: Object) => { } : (x: Object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ } @@ -193,7 +193,7 @@ function f11() { // returns Object => void function f12() { >f12 : () => ((x: Object) => void) | ((x: number) => void) -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (true) { >true : true @@ -201,14 +201,14 @@ function f12() { return (x: Object) => { } >(x: Object) => { } : (x: Object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Object > : ^^^^^^ } else { return (x: number) => { } >(x: number) => { } : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } diff --git a/tests/baselines/reference/functionWithNoBestCommonType2.types b/tests/baselines/reference/functionWithNoBestCommonType2.types index f7256855d9c20..2b39bf090f032 100644 --- a/tests/baselines/reference/functionWithNoBestCommonType2.types +++ b/tests/baselines/reference/functionWithNoBestCommonType2.types @@ -5,7 +5,7 @@ var v = function () { >v : () => true | void > : ^^^^^^^^^^^^^^^^^ >function () { return true; return bar();} : () => true | void -> : ^^^^^^^^^^^^^^^^^ +> : return true; >true : true diff --git a/tests/baselines/reference/functionWithSameNameAsField.types b/tests/baselines/reference/functionWithSameNameAsField.types index 6c8293ae31ff2..aa315b0e6eba3 100644 --- a/tests/baselines/reference/functionWithSameNameAsField.types +++ b/tests/baselines/reference/functionWithSameNameAsField.types @@ -11,7 +11,7 @@ class TestProgressBar { public total(total: number) { >total : (total: number) => this -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >total : number > : ^^^^^^ diff --git a/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList.types b/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList.types index aa0104100841d..0dd3c6ed17b2f 100644 --- a/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList.types +++ b/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList.types @@ -3,7 +3,7 @@ === functionWithUseStrictAndSimpleParameterList.ts === function a(a = 10) { >a : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -22,7 +22,7 @@ export var foo = 10; function b(a = 10) { >b : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -39,7 +39,7 @@ function container() { function f(a = 10) { >f : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -49,7 +49,7 @@ function container() { function rest(...args: any[]) { >rest : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : any[] > : ^^^^^ @@ -60,7 +60,7 @@ function rest(...args: any[]) { function rest1(a = 1, ...args) { >rest1 : (a?: number, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >1 : 1 @@ -75,7 +75,7 @@ function rest1(a = 1, ...args) { function paramDefault(param = 1) { >paramDefault : (param?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >param : number > : ^^^^^^ >1 : 1 @@ -88,7 +88,7 @@ function paramDefault(param = 1) { function objectBindingPattern({foo}: any) { >objectBindingPattern : ({ foo }: any) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : any > : ^^^ @@ -99,7 +99,7 @@ function objectBindingPattern({foo}: any) { function arrayBindingPattern([foo]: any[]) { >arrayBindingPattern : ([foo]: any[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : any > : ^^^ @@ -110,7 +110,7 @@ function arrayBindingPattern([foo]: any[]) { function manyParameter(a = 10, b = 20) { >manyParameter : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -127,7 +127,7 @@ function manyParameter(a = 10, b = 20) { function manyPrologue(a = 10, b = 20) { >manyPrologue : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -148,7 +148,7 @@ function manyPrologue(a = 10, b = 20) { function invalidPrologue(a = 10, b = 20) { >invalidPrologue : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList_es2016.types b/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList_es2016.types index 632aee743080e..f00fe7decb8b3 100644 --- a/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList_es2016.types +++ b/tests/baselines/reference/functionWithUseStrictAndSimpleParameterList_es2016.types @@ -3,7 +3,7 @@ === functionWithUseStrictAndSimpleParameterList_es2016.ts === function a(a = 10) { >a : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -22,7 +22,7 @@ export var foo = 10; function b(a = 10) { >b : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -39,7 +39,7 @@ function container() { function f(a = 10) { >f : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -49,7 +49,7 @@ function container() { function rest(...args: any[]) { >rest : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : any[] > : ^^^^^ @@ -60,7 +60,7 @@ function rest(...args: any[]) { function rest1(a = 1, ...args) { >rest1 : (a?: number, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >1 : 1 @@ -75,7 +75,7 @@ function rest1(a = 1, ...args) { function paramDefault(param = 1) { >paramDefault : (param?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >param : number > : ^^^^^^ >1 : 1 @@ -88,7 +88,7 @@ function paramDefault(param = 1) { function objectBindingPattern({foo}: any) { >objectBindingPattern : ({ foo }: any) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : any > : ^^^ @@ -99,7 +99,7 @@ function objectBindingPattern({foo}: any) { function arrayBindingPattern([foo]: any[]) { >arrayBindingPattern : ([foo]: any[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : any > : ^^^ @@ -110,7 +110,7 @@ function arrayBindingPattern([foo]: any[]) { function manyParameter(a = 10, b = 20) { >manyParameter : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -127,7 +127,7 @@ function manyParameter(a = 10, b = 20) { function manyPrologue(a = 10, b = 20) { >manyPrologue : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 @@ -148,7 +148,7 @@ function manyPrologue(a = 10, b = 20) { function invalidPrologue(a = 10, b = 20) { >invalidPrologue : (a?: number, b?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/functionsInClassExpressions.types b/tests/baselines/reference/functionsInClassExpressions.types index 45e8802ab3715..7e115e1021f9c 100644 --- a/tests/baselines/reference/functionsInClassExpressions.types +++ b/tests/baselines/reference/functionsInClassExpressions.types @@ -28,7 +28,7 @@ let Foo = class { >inc : () => void > : ^^^^^^^^^^ >() => { this.bar++; } : () => void -> : ^^^^^^^^^^ +> : this.bar++; >this.bar++ : number diff --git a/tests/baselines/reference/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types b/tests/baselines/reference/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types index 2f52f90d3e2dc..e10a456ea447f 100644 --- a/tests/baselines/reference/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types +++ b/tests/baselines/reference/functionsMissingReturnStatementsAndExpressionsStrictNullChecks.types @@ -74,7 +74,7 @@ async function f32(): Promise { declare function f(a: () => undefined): void; >f : (a: () => undefined) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : () => undefined > : ^^^^^^ @@ -82,7 +82,7 @@ f(() => { }); >f(() => { }) : void > : ^^^^ >f : (a: () => undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { } : () => undefined > : ^^^^^^^^^^^^^^^ @@ -90,7 +90,7 @@ f((): undefined => { }); >f((): undefined => { }) : void > : ^^^^ >f : (a: () => undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(): undefined => { } : () => undefined > : ^^^^^^ @@ -104,7 +104,7 @@ const g2 = (): undefined => { }; >g2 : () => undefined > : ^^^^^^ >(): undefined => { } : () => undefined -> : ^^^^^^ +> : function h1() { >h1 : () => void @@ -115,7 +115,7 @@ f(h1); // Error >f(h1) : void > : ^^^^ >f : (a: () => undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >h1 : () => void > : ^^^^^^^^^^ @@ -128,7 +128,7 @@ f(h2); >f(h2) : void > : ^^^^ >f : (a: () => undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >h2 : () => undefined > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/funduleUsedAcrossFileBoundary.types b/tests/baselines/reference/funduleUsedAcrossFileBoundary.types index 202e8f7f021aa..912f638064314 100644 --- a/tests/baselines/reference/funduleUsedAcrossFileBoundary.types +++ b/tests/baselines/reference/funduleUsedAcrossFileBoundary.types @@ -24,7 +24,7 @@ declare module Q { === funduleUsedAcrossFileBoundary_file2.ts === function promiseWithCancellation(promise: Q.Promise) { >promiseWithCancellation : (promise: Q.Promise) => void -> : ^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >promise : Q.Promise > : ^^^^^^^^^^^^ >Q : any diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index 51a6d113ec113..3c4eb34b254b4 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -27,7 +27,7 @@ class Derived2 extends Base { private n; } interface Genric { func(n: T[]); } >func : (n: T[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : T[] > : ^^^ @@ -177,11 +177,11 @@ var x10: {n: Base[]; } = { n: [d1, d2] }; var x11: (s: Base[]) => any = n => { var n: Base[]; return null; }; >x11 : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -191,11 +191,11 @@ var x12: Genric = { func: n => { return [d1, d2]; } }; >x12 : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -353,11 +353,11 @@ class x23 { member: (s: Base[]) => any = n => { var n: Base[]; return null; } } >x23 : x23 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -369,11 +369,11 @@ class x24 { member: Genric = { func: n => { return [d1, d2]; } } } >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -531,11 +531,11 @@ class x35 { private member: (s: Base[]) => any = n => { var n: Base[]; return nu >x35 : x35 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -547,11 +547,11 @@ class x36 { private member: Genric = { func: n => { return [d1, d2]; } } } >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -709,11 +709,11 @@ class x47 { public member: (s: Base[]) => any = n => { var n: Base[]; return nul >x47 : x47 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -725,11 +725,11 @@ class x48 { public member: Genric = { func: n => { return [d1, d2]; } } } >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -887,11 +887,11 @@ class x59 { static member: (s: Base[]) => any = n => { var n: Base[]; return nul >x59 : x59 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -903,11 +903,11 @@ class x60 { static member: Genric = { func: n => { return [d1, d2]; } } } >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1065,11 +1065,11 @@ class x71 { private static member: (s: Base[]) => any = n => { var n: Base[]; re >x71 : x71 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1081,11 +1081,11 @@ class x72 { private static member: Genric = { func: n => { return [d1, d2] >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1243,11 +1243,11 @@ class x83 { public static member: (s: Base[]) => any = n => { var n: Base[]; ret >x83 : x83 > : ^^^ >member : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1259,11 +1259,11 @@ class x84 { public static member: Genric = { func: n => { return [d1, d2]; >member : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1421,11 +1421,11 @@ class x95 { constructor(parm: (s: Base[]) => any = n => { var n: Base[]; return >x95 : x95 > : ^^^ >parm : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1437,11 +1437,11 @@ class x96 { constructor(parm: Genric = { func: n => { return [d1, d2]; } } >parm : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1599,11 +1599,11 @@ class x107 { constructor(public parm: (s: Base[]) => any = n => { var n: Base[]; >x107 : x107 > : ^^^^ >parm : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1615,11 +1615,11 @@ class x108 { constructor(public parm: Genric = { func: n => { return [d1, >parm : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1777,11 +1777,11 @@ class x119 { constructor(private parm: (s: Base[]) => any = n => { var n: Base[] >x119 : x119 > : ^^^^ >parm : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1793,11 +1793,11 @@ class x120 { constructor(private parm: Genric = { func: n => { return [d1, >parm : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1809,7 +1809,7 @@ class x120 { constructor(private parm: Genric = { func: n => { return [d1, function x121(parm: () => Base[] = () => [d1, d2]) { } >x121 : (parm?: () => Base[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] @@ -1823,7 +1823,7 @@ function x121(parm: () => Base[] = () => [d1, d2]) { } function x122(parm: () => Base[] = function() { return [d1, d2] }) { } >x122 : (parm?: () => Base[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] @@ -1837,7 +1837,7 @@ function x122(parm: () => Base[] = function() { return [d1, d2] }) { } function x123(parm: () => Base[] = function named() { return [d1, d2] }) { } >x123 : (parm?: () => Base[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] @@ -1853,7 +1853,7 @@ function x123(parm: () => Base[] = function named() { return [d1, d2] }) { } function x124(parm: { (): Base[]; } = () => [d1, d2]) { } >x124 : (parm?: { (): Base[]; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] @@ -1867,7 +1867,7 @@ function x124(parm: { (): Base[]; } = () => [d1, d2]) { } function x125(parm: { (): Base[]; } = function() { return [d1, d2] }) { } >x125 : (parm?: { (): Base[]; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] @@ -1881,7 +1881,7 @@ function x125(parm: { (): Base[]; } = function() { return [d1, d2] }) { } function x126(parm: { (): Base[]; } = function named() { return [d1, d2] }) { } >x126 : (parm?: { (): Base[]; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : () => Base[] > : ^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] @@ -1897,7 +1897,7 @@ function x126(parm: { (): Base[]; } = function named() { return [d1, d2] }) { } function x127(parm: Base[] = [d1, d2]) { } >x127 : (parm?: Base[]) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1909,7 +1909,7 @@ function x127(parm: Base[] = [d1, d2]) { } function x128(parm: Array = [d1, d2]) { } >x128 : (parm?: Array) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -1921,7 +1921,7 @@ function x128(parm: Array = [d1, d2]) { } function x129(parm: { [n: number]: Base; } = [d1, d2]) { } >x129 : (parm?: { [n: number]: Base; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >n : number @@ -1935,7 +1935,7 @@ function x129(parm: { [n: number]: Base; } = [d1, d2]) { } function x130(parm: {n: Base[]; } = { n: [d1, d2] }) { } >x130 : (parm?: { n: Base[]; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : { n: Base[]; } > : ^^^^^ ^^^ >n : Base[] @@ -1953,13 +1953,13 @@ function x130(parm: {n: Base[]; } = { n: [d1, d2] }) { } function x131(parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) { } >x131 : (parm?: (s: Base[]) => any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -1967,15 +1967,15 @@ function x131(parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) { function x132(parm: Genric = { func: n => { return [d1, d2]; } }) { } >x132 : (parm?: Genric) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >parm : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2115,7 +2115,7 @@ function x143(): (s: Base[]) => any { return n => { var n: Base[]; return null; >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -2125,11 +2125,11 @@ function x144(): Genric { return { func: n => { return [d1, d2]; } }; } >x144 : () => Genric > : ^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2349,13 +2349,13 @@ function x155(): (s: Base[]) => any { return n => { var n: Base[]; return null; >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -2365,11 +2365,11 @@ function x156(): Genric { return { func: n => { return [d1, d2]; } }; retu >x156 : () => Genric > : ^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2379,11 +2379,11 @@ function x156(): Genric { return { func: n => { return [d1, d2]; } }; retu >d2 : Derived2 > : ^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2543,9 +2543,9 @@ var x167: () => (s: Base[]) => any = () => { return n => { var n: Base[]; return >s : Base[] > : ^^^^^^ >() => { return n => { var n: Base[]; return null; }; } : () => (n: Base[]) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -2555,13 +2555,13 @@ var x168: () => Genric = () => { return { func: n => { return [d1, d2]; } >x168 : () => Genric > : ^^^^^^ >() => { return { func: n => { return [d1, d2]; } }; } : () => { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2721,9 +2721,9 @@ var x179: () => (s: Base[]) => any = function() { return n => { var n: Base[]; r >s : Base[] > : ^^^^^^ >function() { return n => { var n: Base[]; return null; }; } : () => (n: Base[]) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -2733,13 +2733,13 @@ var x180: () => Genric = function() { return { func: n => { return [d1, d2 >x180 : () => Genric > : ^^^^^^ >function() { return { func: n => { return [d1, d2]; } }; } : () => { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -2897,11 +2897,11 @@ module x191 { var t: (s: Base[]) => any = n => { var n: Base[]; return null; }; >x191 : typeof x191 > : ^^^^^^^^^^^ >t : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -2913,11 +2913,11 @@ module x192 { var t: Genric = { func: n => { return [d1, d2]; } }; } >t : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3075,11 +3075,11 @@ module x203 { export var t: (s: Base[]) => any = n => { var n: Base[]; return nu >x203 : typeof x203 > : ^^^^^^^^^^^ >t : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -3091,11 +3091,11 @@ module x204 { export var t: Genric = { func: n => { return [d1, d2]; } }; >t : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3109,7 +3109,7 @@ var x206 = <() => Base[]>function() { return [d1, d2] }; >x206 : () => Base[] > : ^^^^^^ ><() => Base[]>function() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3123,7 +3123,7 @@ var x207 = <() => Base[]>function named() { return [d1, d2] }; >x207 : () => Base[] > : ^^^^^^ ><() => Base[]>function named() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -3139,7 +3139,7 @@ var x209 = <{ (): Base[]; }>function() { return [d1, d2] }; >x209 : () => Base[] > : ^^^^^^ ><{ (): Base[]; }>function() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3153,7 +3153,7 @@ var x210 = <{ (): Base[]; }>function named() { return [d1, d2] }; >x210 : () => Base[] > : ^^^^^^ ><{ (): Base[]; }>function named() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -3193,7 +3193,7 @@ var x213 = <{ [n: number]: Base; }>[d1, d2]; >x213 : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ ><{ [n: number]: Base; }>[d1, d2] : { [n: number]: Base; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3207,7 +3207,7 @@ var x214 = <{n: Base[]; } >{ n: [d1, d2] }; >x214 : { n: Base[]; } > : ^^^^^ ^^^ ><{n: Base[]; } >{ n: [d1, d2] } : { n: Base[]; } -> : ^^^^^ ^^^ +> : >n : Base[] > : ^^^^^^ >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } @@ -3227,11 +3227,11 @@ var x216 = >{ func: n => { return [d1, d2]; } }; >>{ func: n => { return [d1, d2]; } } : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3245,7 +3245,7 @@ var x217 = (<() => Base[]>undefined) || function() { return [d1, d2] }; >x217 : () => Base[] > : ^^^^^^ >(<() => Base[]>undefined) || function() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >(<() => Base[]>undefined) : () => Base[] > : ^^^^^^ ><() => Base[]>undefined : () => Base[] @@ -3265,7 +3265,7 @@ var x218 = (<() => Base[]>undefined) || function named() { return [d1, d2] }; >x218 : () => Base[] > : ^^^^^^ >(<() => Base[]>undefined) || function named() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >(<() => Base[]>undefined) : () => Base[] > : ^^^^^^ ><() => Base[]>undefined : () => Base[] @@ -3287,7 +3287,7 @@ var x219 = (<{ (): Base[]; }>undefined) || function() { return [d1, d2] }; >x219 : () => Base[] > : ^^^^^^ >(<{ (): Base[]; }>undefined) || function() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >(<{ (): Base[]; }>undefined) : () => Base[] > : ^^^^^^ ><{ (): Base[]; }>undefined : () => Base[] @@ -3307,7 +3307,7 @@ var x220 = (<{ (): Base[]; }>undefined) || function named() { return [d1, d2] }; >x220 : () => Base[] > : ^^^^^^ >(<{ (): Base[]; }>undefined) || function named() { return [d1, d2] } : () => Base[] -> : ^^^^^^ +> : >(<{ (): Base[]; }>undefined) : () => Base[] > : ^^^^^^ ><{ (): Base[]; }>undefined : () => Base[] @@ -3365,7 +3365,7 @@ var x223 = (<{ [n: number]: Base; }>undefined) || [d1, d2]; >x223 : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >(<{ [n: number]: Base; }>undefined) || [d1, d2] : { [n: number]: Base; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >(<{ [n: number]: Base; }>undefined) : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ ><{ [n: number]: Base; }>undefined : { [n: number]: Base; } @@ -3385,7 +3385,7 @@ var x224 = (<{n: Base[]; } >undefined) || { n: [d1, d2] }; >x224 : { n: Base[]; } > : ^^^^^ ^^^ >(<{n: Base[]; } >undefined) || { n: [d1, d2] } : { n: Base[]; } -> : ^^^^^ ^^^ +> : >(<{n: Base[]; } >undefined) : { n: Base[]; } > : ^^^^^ ^^^ ><{n: Base[]; } >undefined : { n: Base[]; } @@ -3571,15 +3571,15 @@ var x234: {n: Base[]; } ; x234 = { n: [d1, d2] }; var x235: (s: Base[]) => any; x235 = n => { var n: Base[]; return null; }; >x235 : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >x235 = n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x235 : (s: Base[]) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -3589,15 +3589,15 @@ var x236: Genric; x236 = { func: n => { return [d1, d2]; } }; >x236 : Genric > : ^^^^^^^^^^^^ >x236 = { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x236 : Genric > : ^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3617,7 +3617,7 @@ var x237: { n: () => Base[]; } = { n: () => [d1, d2] }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -3635,7 +3635,7 @@ var x238: { n: () => Base[]; } = { n: function() { return [d1, d2] } }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -3653,7 +3653,7 @@ var x239: { n: () => Base[]; } = { n: function named() { return [d1, d2] } }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >named : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3673,7 +3673,7 @@ var x240: { n: { (): Base[]; }; } = { n: () => [d1, d2] }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -3691,7 +3691,7 @@ var x241: { n: { (): Base[]; }; } = { n: function() { return [d1, d2] } }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -3709,7 +3709,7 @@ var x242: { n: { (): Base[]; }; } = { n: function named() { return [d1, d2] } }; >n : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >named : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3795,15 +3795,15 @@ var x247: { n: (s: Base[]) => any; } = { n: n => { var n: Base[]; return null; } >x247 : { n: (s: Base[]) => any; } > : ^^^^^ ^^^ >n : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >{ n: n => { var n: Base[]; return null; } } : { n: (n: Base[]) => any; } -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^ >n : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >n : Base[] @@ -3815,15 +3815,15 @@ var x248: { n: Genric; } = { n: { func: n => { return [d1, d2]; } } }; >n : Genric > : ^^^^^^^^^^^^ >{ n: { func: n => { return [d1, d2]; } } } : { n: { func: (n: Base[]) => (Derived1 | Derived2)[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -3937,13 +3937,13 @@ var x260: Genric[] = [{ func: n => { return [d1, d2]; } }]; >x260 : Genric[] > : ^^^^^^^^^^^^^^ >[{ func: n => { return [d1, d2]; } }] : { func: (n: Base[]) => (Derived1 | Derived2)[]; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -4643,21 +4643,21 @@ var x294: {n: Base[]; } = true ? { n: [d1, d2] } : { n: [d1, d2] }; var x295: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : n => { var n: Base[]; return null; }; >x295 : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >true ? n => { var n: Base[]; return null; } : n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >true : true > : ^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] > : ^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -4667,15 +4667,15 @@ var x296: Genric = true ? { func: n => { return [d1, d2]; } } : { func: n >x296 : Genric > : ^^^^^^^^^^^^ >true ? { func: n => { return [d1, d2]; } } : { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -4685,11 +4685,11 @@ var x296: Genric = true ? { func: n => { return [d1, d2]; } } : { func: n >d2 : Derived2 > : ^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -4885,17 +4885,17 @@ var x306: {n: Base[]; } = true ? undefined : { n: [d1, d2] }; var x307: (s: Base[]) => any = true ? undefined : n => { var n: Base[]; return null; }; >x307 : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >true ? undefined : n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >true : true > : ^^^^ >undefined : undefined > : ^^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -4905,17 +4905,17 @@ var x308: Genric = true ? undefined : { func: n => { return [d1, d2]; } }; >x308 : Genric > : ^^^^^^^^^^^^ >true ? undefined : { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >undefined : undefined > : ^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5111,15 +5111,15 @@ var x318: {n: Base[]; } = true ? { n: [d1, d2] } : undefined; var x319: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : undefined; >x319 : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >true ? n => { var n: Base[]; return null; } : undefined : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >true : true > : ^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -5131,15 +5131,15 @@ var x320: Genric = true ? { func: n => { return [d1, d2]; } } : undefined; >x320 : Genric > : ^^^^^^^^^^^^ >true ? { func: n => { return [d1, d2]; } } : undefined : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5153,13 +5153,13 @@ var x320: Genric = true ? { func: n => { return [d1, d2]; } } : undefined; function x321(n: () => Base[]) { }; x321(() => [d1, d2]); >x321 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x321(() => [d1, d2]) : void > : ^^^^ >x321 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5171,13 +5171,13 @@ function x321(n: () => Base[]) { }; x321(() => [d1, d2]); function x322(n: () => Base[]) { }; x322(function() { return [d1, d2] }); >x322 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x322(function() { return [d1, d2] }) : void > : ^^^^ >x322 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5189,13 +5189,13 @@ function x322(n: () => Base[]) { }; x322(function() { return [d1, d2] }); function x323(n: () => Base[]) { }; x323(function named() { return [d1, d2] }); >x323 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x323(function named() { return [d1, d2] }) : void > : ^^^^ >x323 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5209,13 +5209,13 @@ function x323(n: () => Base[]) { }; x323(function named() { return [d1, d2] }); function x324(n: { (): Base[]; }) { }; x324(() => [d1, d2]); >x324 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x324(() => [d1, d2]) : void > : ^^^^ ->x324 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x324 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5227,13 +5227,13 @@ function x324(n: { (): Base[]; }) { }; x324(() => [d1, d2]); function x325(n: { (): Base[]; }) { }; x325(function() { return [d1, d2] }); >x325 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x325(function() { return [d1, d2] }) : void > : ^^^^ ->x325 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x325 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5245,13 +5245,13 @@ function x325(n: { (): Base[]; }) { }; x325(function() { return [d1, d2] }); function x326(n: { (): Base[]; }) { }; x326(function named() { return [d1, d2] }); >x326 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : () => Base[] > : ^^^^^^ >x326(function named() { return [d1, d2] }) : void > : ^^^^ ->x326 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x326 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5265,13 +5265,13 @@ function x326(n: { (): Base[]; }) { }; x326(function named() { return [d1, d2] } function x327(n: Base[]) { }; x327([d1, d2]); >x327 : (n: Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : Base[] > : ^^^^^^ >x327([d1, d2]) : void > : ^^^^ >x327 : (n: Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5281,13 +5281,13 @@ function x327(n: Base[]) { }; x327([d1, d2]); function x328(n: Array) { }; x328([d1, d2]); >x328 : (n: Array) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : Base[] > : ^^^^^^ >x328([d1, d2]) : void > : ^^^^ ->x328 : (n: Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +>x328 : (n: Array) => void +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5297,7 +5297,7 @@ function x328(n: Array) { }; x328([d1, d2]); function x329(n: { [n: number]: Base; }) { }; x329([d1, d2]); >x329 : (n: { [n: number]: Base; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >n : number @@ -5305,7 +5305,7 @@ function x329(n: { [n: number]: Base; }) { }; x329([d1, d2]); >x329([d1, d2]) : void > : ^^^^ >x329 : (n: { [n: number]: Base; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5315,7 +5315,7 @@ function x329(n: { [n: number]: Base; }) { }; x329([d1, d2]); function x330(n: {n: Base[]; } ) { }; x330({ n: [d1, d2] }); >x330 : (n: { n: Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : { n: Base[]; } > : ^^^^^ ^^^ >n : Base[] @@ -5323,7 +5323,7 @@ function x330(n: {n: Base[]; } ) { }; x330({ n: [d1, d2] }); >x330({ n: [d1, d2] }) : void > : ^^^^ >x330 : (n: { n: Base[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : (Derived1 | Derived2)[] @@ -5337,17 +5337,17 @@ function x330(n: {n: Base[]; } ) { }; x330({ n: [d1, d2] }); function x331(n: (s: Base[]) => any) { }; x331(n => { var n: Base[]; return null; }); >x331 : (n: (s: Base[]) => any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >x331(n => { var n: Base[]; return null; }) : void > : ^^^^ >x331 : (n: (s: Base[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -5355,19 +5355,19 @@ function x331(n: (s: Base[]) => any) { }; x331(n => { var n: Base[]; return null function x332(n: Genric) { }; x332({ func: n => { return [d1, d2]; } }); >x332 : (n: Genric) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n : Genric > : ^^^^^^^^^^^^ >x332({ func: n => { return [d1, d2]; } }) : void > : ^^^^ >x332 : (n: Genric) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5379,9 +5379,9 @@ function x332(n: Genric) { }; x332({ func: n => { return [d1, d2]; } }); var x333 = (n: () => Base[]) => n; x333(() => [d1, d2]); >x333 : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: () => Base[]) => n : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] @@ -5389,7 +5389,7 @@ var x333 = (n: () => Base[]) => n; x333(() => [d1, d2]); >x333(() => [d1, d2]) : () => Base[] > : ^^^^^^^^^^^^ >x333 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5401,9 +5401,9 @@ var x333 = (n: () => Base[]) => n; x333(() => [d1, d2]); var x334 = (n: () => Base[]) => n; x334(function() { return [d1, d2] }); >x334 : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: () => Base[]) => n : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] @@ -5411,7 +5411,7 @@ var x334 = (n: () => Base[]) => n; x334(function() { return [d1, d2] }); >x334(function() { return [d1, d2] }) : () => Base[] > : ^^^^^^^^^^^^ >x334 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5423,9 +5423,9 @@ var x334 = (n: () => Base[]) => n; x334(function() { return [d1, d2] }); var x335 = (n: () => Base[]) => n; x335(function named() { return [d1, d2] }); >x335 : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: () => Base[]) => n : (n: () => Base[]) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] @@ -5433,7 +5433,7 @@ var x335 = (n: () => Base[]) => n; x335(function named() { return [d1, d2] }); >x335(function named() { return [d1, d2] }) : () => Base[] > : ^^^^^^^^^^^^ >x335 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5447,17 +5447,17 @@ var x335 = (n: () => Base[]) => n; x335(function named() { return [d1, d2] }); var x336 = (n: { (): Base[]; }) => n; x336(() => [d1, d2]); >x336 : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] > : ^^^^^^ >x336(() => [d1, d2]) : () => Base[] > : ^^^^^^^^^^^^ ->x336 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x336 : (n: { (): Base[]; }) => () => Base[] +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5469,17 +5469,17 @@ var x336 = (n: { (): Base[]; }) => n; x336(() => [d1, d2]); var x337 = (n: { (): Base[]; }) => n; x337(function() { return [d1, d2] }); >x337 : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] > : ^^^^^^ >x337(function() { return [d1, d2] }) : () => Base[] > : ^^^^^^^^^^^^ ->x337 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x337 : (n: { (): Base[]; }) => () => Base[] +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5491,17 +5491,17 @@ var x337 = (n: { (): Base[]; }) => n; x337(function() { return [d1, d2] }); var x338 = (n: { (): Base[]; }) => n; x338(function named() { return [d1, d2] }); >x338 : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: { (): Base[]; }) => n : (n: { (): Base[]; }) => () => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >n : () => Base[] > : ^^^^^^ >x338(function named() { return [d1, d2] }) : () => Base[] > : ^^^^^^^^^^^^ ->x338 : (n: () => Base[]) => () => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x338 : (n: { (): Base[]; }) => () => Base[] +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5515,9 +5515,9 @@ var x338 = (n: { (): Base[]; }) => n; x338(function named() { return [d1, d2] }) var x339 = (n: Base[]) => n; x339([d1, d2]); >x339 : (n: Base[]) => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: Base[]) => n : (n: Base[]) => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >n : Base[] @@ -5525,7 +5525,7 @@ var x339 = (n: Base[]) => n; x339([d1, d2]); >x339([d1, d2]) : Base[] > : ^^^^^^ >x339 : (n: Base[]) => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5535,17 +5535,17 @@ var x339 = (n: Base[]) => n; x339([d1, d2]); var x340 = (n: Array) => n; x340([d1, d2]); >x340 : (n: Array) => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: Array) => n : (n: Array) => Base[] -> : ^^^^ ^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >n : Base[] > : ^^^^^^ >x340([d1, d2]) : Base[] > : ^^^^^^ ->x340 : (n: Base[]) => Base[] -> : ^^^^^^^^^^^^^^^^^^^^^ +>x340 : (n: Array) => Base[] +> : ^ ^^ ^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5555,9 +5555,9 @@ var x340 = (n: Array) => n; x340([d1, d2]); var x341 = (n: { [n: number]: Base; }) => n; x341([d1, d2]); >x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(n: { [n: number]: Base; }) => n : (n: { [n: number]: Base; }) => { [n: number]: Base; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >n : number @@ -5567,7 +5567,7 @@ var x341 = (n: { [n: number]: Base; }) => n; x341([d1, d2]); >x341([d1, d2]) : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5577,9 +5577,9 @@ var x341 = (n: { [n: number]: Base; }) => n; x341([d1, d2]); var x342 = (n: {n: Base[]; } ) => n; x342({ n: [d1, d2] }); >x342 : (n: { n: Base[]; }) => { n: Base[]; } -> : ^^^^ ^^^^^^^^^^ ^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ >(n: {n: Base[]; } ) => n : (n: { n: Base[]; }) => { n: Base[]; } -> : ^^^^ ^^^^^^^^^^ ^^^ +> : >n : { n: Base[]; } > : ^^^^^ ^^^ >n : Base[] @@ -5589,7 +5589,7 @@ var x342 = (n: {n: Base[]; } ) => n; x342({ n: [d1, d2] }); >x342({ n: [d1, d2] }) : { n: Base[]; } > : ^^^^^^^^^^^^^^ >x342 : (n: { n: Base[]; }) => { n: Base[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : (Derived1 | Derived2)[] @@ -5603,21 +5603,21 @@ var x342 = (n: {n: Base[]; } ) => n; x342({ n: [d1, d2] }); var x343 = (n: (s: Base[]) => any) => n; x343(n => { var n: Base[]; return null; }); >x343 : (n: (s: Base[]) => any) => (s: Base[]) => any -> : ^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^ >(n: (s: Base[]) => any) => n : (n: (s: Base[]) => any) => (s: Base[]) => any -> : ^^^^ ^^^^^^^^^ ^^^^^ +> : >n : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >n : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x343(n => { var n: Base[]; return null; }) : (s: Base[]) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x343 : (n: (s: Base[]) => any) => (s: Base[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -5625,9 +5625,9 @@ var x343 = (n: (s: Base[]) => any) => n; x343(n => { var n: Base[]; return null; var x344 = (n: Genric) => n; x344({ func: n => { return [d1, d2]; } }); >x344 : (n: Genric) => Genric -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >(n: Genric) => n : (n: Genric) => Genric -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : >n : Genric > : ^^^^^^^^^^^^ >n : Genric @@ -5635,13 +5635,13 @@ var x344 = (n: Genric) => n; x344({ func: n => { return [d1, d2]; } }); >x344({ func: n => { return [d1, d2]; } }) : Genric > : ^^^^^^^^^^^^ >x344 : (n: Genric) => Genric -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5653,15 +5653,15 @@ var x344 = (n: Genric) => n; x344({ func: n => { return [d1, d2]; } }); var x345 = function(n: () => Base[]) { }; x345(() => [d1, d2]); >x345 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: () => Base[]) { } : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x345(() => [d1, d2]) : void > : ^^^^ >x345 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5673,15 +5673,15 @@ var x345 = function(n: () => Base[]) { }; x345(() => [d1, d2]); var x346 = function(n: () => Base[]) { }; x346(function() { return [d1, d2] }); >x346 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: () => Base[]) { } : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x346(function() { return [d1, d2] }) : void > : ^^^^ >x346 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5693,15 +5693,15 @@ var x346 = function(n: () => Base[]) { }; x346(function() { return [d1, d2] }); var x347 = function(n: () => Base[]) { }; x347(function named() { return [d1, d2] }); >x347 : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: () => Base[]) { } : (n: () => Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x347(function named() { return [d1, d2] }) : void > : ^^^^ >x347 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5715,15 +5715,15 @@ var x347 = function(n: () => Base[]) { }; x347(function named() { return [d1, d2 var x348 = function(n: { (): Base[]; }) { }; x348(() => [d1, d2]); >x348 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x348(() => [d1, d2]) : void > : ^^^^ ->x348 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x348 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >() => [d1, d2] : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5735,15 +5735,15 @@ var x348 = function(n: { (): Base[]; }) { }; x348(() => [d1, d2]); var x349 = function(n: { (): Base[]; }) { }; x349(function() { return [d1, d2] }); >x349 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x349(function() { return [d1, d2] }) : void > : ^^^^ ->x349 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x349 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >function() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] @@ -5755,15 +5755,15 @@ var x349 = function(n: { (): Base[]; }) { }; x349(function() { return [d1, d2] } var x350 = function(n: { (): Base[]; }) { }; x350(function named() { return [d1, d2] }); >x350 : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: { (): Base[]; }) { } : (n: { (): Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : >n : () => Base[] > : ^^^^^^ >x350(function named() { return [d1, d2] }) : void > : ^^^^ ->x350 : (n: () => Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +>x350 : (n: { (): Base[]; }) => void +> : ^ ^^ ^^^^^^^^^ >function named() { return [d1, d2] } : () => (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >named : () => (Derived1 | Derived2)[] @@ -5777,15 +5777,15 @@ var x350 = function(n: { (): Base[]; }) { }; x350(function named() { return [d1, var x351 = function(n: Base[]) { }; x351([d1, d2]); >x351 : (n: Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: Base[]) { } : (n: Base[]) => void -> : ^^^^ ^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >x351([d1, d2]) : void > : ^^^^ >x351 : (n: Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5795,15 +5795,15 @@ var x351 = function(n: Base[]) { }; x351([d1, d2]); var x352 = function(n: Array) { }; x352([d1, d2]); >x352 : (n: Array) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: Array) { } : (n: Array) => void -> : ^^^^ ^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >x352([d1, d2]) : void > : ^^^^ ->x352 : (n: Base[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +>x352 : (n: Array) => void +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5813,9 +5813,9 @@ var x352 = function(n: Array) { }; x352([d1, d2]); var x353 = function(n: { [n: number]: Base; }) { }; x353([d1, d2]); >x353 : (n: { [n: number]: Base; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: { [n: number]: Base; }) { } : (n: { [n: number]: Base; }) => void -> : ^^^^ ^^^^^^^^^ +> : >n : { [n: number]: Base; } > : ^^^^^^^^^^^^^^^^^^^^^^ >n : number @@ -5823,7 +5823,7 @@ var x353 = function(n: { [n: number]: Base; }) { }; x353([d1, d2]); >x353([d1, d2]) : void > : ^^^^ >x353 : (n: { [n: number]: Base; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >d1 : Derived1 @@ -5833,9 +5833,9 @@ var x353 = function(n: { [n: number]: Base; }) { }; x353([d1, d2]); var x354 = function(n: {n: Base[]; } ) { }; x354({ n: [d1, d2] }); >x354 : (n: { n: Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: {n: Base[]; } ) { } : (n: { n: Base[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : >n : { n: Base[]; } > : ^^^^^ ^^^ >n : Base[] @@ -5843,7 +5843,7 @@ var x354 = function(n: {n: Base[]; } ) { }; x354({ n: [d1, d2] }); >x354({ n: [d1, d2] }) : void > : ^^^^ >x354 : (n: { n: Base[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : (Derived1 | Derived2)[] @@ -5857,19 +5857,19 @@ var x354 = function(n: {n: Base[]; } ) { }; x354({ n: [d1, d2] }); var x355 = function(n: (s: Base[]) => any) { }; x355(n => { var n: Base[]; return null; }); >x355 : (n: (s: Base[]) => any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: (s: Base[]) => any) { } : (n: (s: Base[]) => any) => void -> : ^^^^ ^^^^^^^^^ +> : >n : (s: Base[]) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : Base[] > : ^^^^^^ >x355(n => { var n: Base[]; return null; }) : void > : ^^^^ >x355 : (n: (s: Base[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >n => { var n: Base[]; return null; } : (n: Base[]) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : Base[] > : ^^^^^^ >n : Base[] @@ -5877,21 +5877,21 @@ var x355 = function(n: (s: Base[]) => any) { }; x355(n => { var n: Base[]; retur var x356 = function(n: Genric) { }; x356({ func: n => { return [d1, d2]; } }); >x356 : (n: Genric) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function(n: Genric) { } : (n: Genric) => void -> : ^^^^ ^^^^^^^^^ +> : >n : Genric > : ^^^^^^^^^^^^ >x356({ func: n => { return [d1, d2]; } }) : void > : ^^^^ >x356 : (n: Genric) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => (Derived1 | Derived2)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n => { return [d1, d2]; } : (n: Base[]) => (Derived1 | Derived2)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >n : Base[] > : ^^^^^^ >[d1, d2] : (Derived1 | Derived2)[] diff --git a/tests/baselines/reference/generativeRecursionWithTypeOf.types b/tests/baselines/reference/generativeRecursionWithTypeOf.types index 6ac1b5ed95950..2a3e8769cec40 100644 --- a/tests/baselines/reference/generativeRecursionWithTypeOf.types +++ b/tests/baselines/reference/generativeRecursionWithTypeOf.types @@ -7,7 +7,7 @@ class C { static foo(x: number) { } >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -22,7 +22,7 @@ module M { export function f(x: typeof C) { >f : (x: typeof C) => C -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : typeof C > : ^^^^^^^^ >C : typeof C diff --git a/tests/baselines/reference/generatorAssignability.types b/tests/baselines/reference/generatorAssignability.types index c14ca7631512f..d2880b24b638a 100644 --- a/tests/baselines/reference/generatorAssignability.types +++ b/tests/baselines/reference/generatorAssignability.types @@ -219,7 +219,7 @@ async function f3() { >syncGenerator : () => Generator<1 | 2, void, unknown> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function*() { yield 1; yield 2; } : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : yield 1; >yield 1 : any @@ -239,7 +239,7 @@ async function f3() { >o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >[Symbol.asyncIterator] : () => Generator<1 | 2, void, unknown> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.asyncIterator : unique symbol @@ -249,7 +249,7 @@ async function f3() { >asyncIterator : unique symbol > : ^^^^^^^^^^^^^ >syncGenerator : () => Generator<1 | 2, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : for await (const x of o) { >x : 1 | 2 diff --git a/tests/baselines/reference/generatorES6_3.types b/tests/baselines/reference/generatorES6_3.types index 08edfaf873086..e40567d120456 100644 --- a/tests/baselines/reference/generatorES6_3.types +++ b/tests/baselines/reference/generatorES6_3.types @@ -5,7 +5,7 @@ var v = function*() { >v : () => Generator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function*() { yield 0} : () => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : yield 0 >yield 0 : any diff --git a/tests/baselines/reference/generatorImplicitAny.types b/tests/baselines/reference/generatorImplicitAny.types index 036859fa1cdf4..cda3e6288929b 100644 --- a/tests/baselines/reference/generatorImplicitAny.types +++ b/tests/baselines/reference/generatorImplicitAny.types @@ -12,7 +12,7 @@ declare function noop(): void; declare function f(value: T): void; >f : (value: T) => void -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -121,7 +121,7 @@ function* g5() { >f(yield) : void > : ^^^^ >f : (value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >yield : any > : ^^^ } @@ -134,7 +134,7 @@ function* g6() { >f(yield) : void > : ^^^^ >f : (value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >yield : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads1.types b/tests/baselines/reference/generatorOverloads1.types index b0f74ce0b32ee..53424034cc980 100644 --- a/tests/baselines/reference/generatorOverloads1.types +++ b/tests/baselines/reference/generatorOverloads1.types @@ -7,19 +7,19 @@ module M { function* f(s: string): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads2.types b/tests/baselines/reference/generatorOverloads2.types index 6bd58a0e4006a..ec742d99535b2 100644 --- a/tests/baselines/reference/generatorOverloads2.types +++ b/tests/baselines/reference/generatorOverloads2.types @@ -7,19 +7,19 @@ declare module M { function* f(s: string): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function* f(s: number): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; (s: any): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads3.types b/tests/baselines/reference/generatorOverloads3.types index 45eb184299b19..378d8b854ffd8 100644 --- a/tests/baselines/reference/generatorOverloads3.types +++ b/tests/baselines/reference/generatorOverloads3.types @@ -7,19 +7,19 @@ class C { *f(s: string): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ *f(s: number): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any > : ^^^ } diff --git a/tests/baselines/reference/generatorOverloads4.types b/tests/baselines/reference/generatorOverloads4.types index e3474dffdb785..4fc2e3ce36f38 100644 --- a/tests/baselines/reference/generatorOverloads4.types +++ b/tests/baselines/reference/generatorOverloads4.types @@ -7,18 +7,18 @@ class C { f(s: string): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ f(s: number): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ *f(s: any): Iterable { } >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorOverloads5.types b/tests/baselines/reference/generatorOverloads5.types index 306ff5d769ebb..3d68a9d44b0d6 100644 --- a/tests/baselines/reference/generatorOverloads5.types +++ b/tests/baselines/reference/generatorOverloads5.types @@ -7,18 +7,18 @@ module M { function f(s: string): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ function f(s: number): Iterable; >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : number > : ^^^^^^ function* f(s: any): Iterable { } >f : { (s: string): Iterable; (s: number): Iterable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : any } diff --git a/tests/baselines/reference/generatorReturnContextualType.types b/tests/baselines/reference/generatorReturnContextualType.types index 95bf74bafe44d..c208c5a279d7e 100644 --- a/tests/baselines/reference/generatorReturnContextualType.types +++ b/tests/baselines/reference/generatorReturnContextualType.types @@ -4,7 +4,7 @@ // #35995 function* f1(): Generator { ->f1 : () => Generator +>f1 : () => Generator > : ^^^^^^ >x : "x" > : ^^^ @@ -19,7 +19,7 @@ function* f1(): Generator { } function* g1(): Iterator { ->g1 : () => Iterator +>g1 : () => Iterator > : ^^^^^^ >x : "x" > : ^^^ @@ -34,7 +34,7 @@ function* g1(): Iterator { } async function* f2(): AsyncGenerator { ->f2 : () => AsyncGenerator +>f2 : () => AsyncGenerator > : ^^^^^^ >x : "x" > : ^^^ @@ -49,7 +49,7 @@ async function* f2(): AsyncGenerator { } async function* g2(): AsyncIterator { ->g2 : () => AsyncIterator +>g2 : () => AsyncIterator > : ^^^^^^ >x : "x" > : ^^^ @@ -64,7 +64,7 @@ async function* g2(): AsyncIterator { } async function* f3(): AsyncGenerator { ->f3 : () => AsyncGenerator +>f3 : () => AsyncGenerator > : ^^^^^^ >x : "x" > : ^^^ @@ -73,11 +73,11 @@ async function* f3(): AsyncGenerator { >Promise.resolve({ x: 'x' }) : Promise<{ x: "x"; }> > : ^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 'x' } : { x: "x"; } > : ^^^^^^^^^^^ >x : "x" @@ -87,7 +87,7 @@ async function* f3(): AsyncGenerator { } async function* g3(): AsyncIterator { ->g3 : () => AsyncIterator +>g3 : () => AsyncIterator > : ^^^^^^ >x : "x" > : ^^^ @@ -96,11 +96,11 @@ async function* g3(): AsyncIterator { >Promise.resolve({ x: 'x' }) : Promise<{ x: "x"; }> > : ^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 'x' } : { x: "x"; } > : ^^^^^^^^^^^ >x : "x" @@ -110,7 +110,7 @@ async function* g3(): AsyncIterator { } async function* f4(): AsyncGenerator { ->f4 : () => AsyncGenerator +>f4 : () => AsyncGenerator > : ^^^^^^ >x : "x" > : ^^^ @@ -129,17 +129,17 @@ async function* f4(): AsyncGenerator { >Promise.resolve(ret) : Promise<{ x: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ret : { x: string; } > : ^^^^^^^^^^^^^^ } async function* g4(): AsyncIterator { ->g4 : () => AsyncIterator +>g4 : () => AsyncIterator > : ^^^^^^ >x : "x" > : ^^^ @@ -158,11 +158,11 @@ async function* g4(): AsyncIterator { >Promise.resolve(ret) : Promise<{ x: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ret : { x: string; } > : ^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/generatorReturnTypeInference.types b/tests/baselines/reference/generatorReturnTypeInference.types index 5271873d5d73d..fd2d5f7605ec1 100644 --- a/tests/baselines/reference/generatorReturnTypeInference.types +++ b/tests/baselines/reference/generatorReturnTypeInference.types @@ -179,13 +179,13 @@ function* g202() { // Generator<1 | 2, void, never> declare function f1(x: string): void; >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >x : string > : ^^^^^^ declare function f1(x: number): void; >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ @@ -199,7 +199,7 @@ function* g203() { // Generator >f1(yield 1) : void > : ^^^^ >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >yield 1 : any > : ^^^ >1 : 1 @@ -208,7 +208,7 @@ function* g203() { // Generator declare function f2(x: T): T; >f2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -222,7 +222,7 @@ function* g204() { // Generator >f2(yield 1) : any > : ^^^ >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >yield 1 : any > : ^^^ >1 : 1 @@ -360,7 +360,7 @@ function* g307() { // Generator function* g308(x: T) { // Generator >g308 : (x: T) => Generator -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -379,7 +379,7 @@ function* g308(x: T) { // Generator function* g309(x: T, y: U) { // Generator >g309 : (x: T, y: U) => Generator -> : ^ ^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types index a2be704916267..c25395cf7f031 100644 --- a/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types +++ b/tests/baselines/reference/generatorReturnTypeInferenceNonStrict.types @@ -181,13 +181,13 @@ function* g202() { // Generator<1 | 2, void, never> declare function f1(x: string): void; >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >x : string > : ^^^^^^ declare function f1(x: number): void; >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >x : number > : ^^^^^^ @@ -201,7 +201,7 @@ function* g203() { // Generator >f1(yield 1) : void > : ^^^^ >f1 : { (x: string): void; (x: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >yield 1 : any > : ^^^ >1 : 1 @@ -210,7 +210,7 @@ function* g203() { // Generator declare function f2(x: T): T; >f2 : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -224,7 +224,7 @@ function* g204() { // Generator >f2(yield 1) : any > : ^^^ >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >yield 1 : any > : ^^^ >1 : 1 @@ -362,7 +362,7 @@ function* g307() { // Generator function* g308(x: T) { // Generator >g308 : (x: T) => Generator -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -381,7 +381,7 @@ function* g308(x: T) { // Generator function* g309(x: T, y: U) { // Generator >g309 : (x: T, y: U) => Generator -> : ^ ^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ >y : U diff --git a/tests/baselines/reference/generatorTransformFinalLabel.types b/tests/baselines/reference/generatorTransformFinalLabel.types index 0324906aa6e89..af4ab142de8cf 100644 --- a/tests/baselines/reference/generatorTransformFinalLabel.types +++ b/tests/baselines/reference/generatorTransformFinalLabel.types @@ -3,7 +3,7 @@ === generatorTransformFinalLabel.ts === async function test(skip: boolean) { >test : (skip: boolean) => Promise -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >skip : boolean > : ^^^^^^^ diff --git a/tests/baselines/reference/generatorTypeCheck26.types b/tests/baselines/reference/generatorTypeCheck26.types index b01966e493d0e..013714b09580d 100644 --- a/tests/baselines/reference/generatorTypeCheck26.types +++ b/tests/baselines/reference/generatorTypeCheck26.types @@ -11,7 +11,7 @@ function* g(): IterableIterator<(x: string) => number> { >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number @@ -24,9 +24,9 @@ function* g(): IterableIterator<(x: string) => number> { yield *[x => x.length]; >yield *[x => x.length] : any >[x => x.length] : ((x: string) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number @@ -38,7 +38,7 @@ function* g(): IterableIterator<(x: string) => number> { return x => x.length; >x => x.length : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x.length : any >x : any diff --git a/tests/baselines/reference/generatorTypeCheck27.types b/tests/baselines/reference/generatorTypeCheck27.types index 718e3201320f4..407ed12838649 100644 --- a/tests/baselines/reference/generatorTypeCheck27.types +++ b/tests/baselines/reference/generatorTypeCheck27.types @@ -11,15 +11,15 @@ function* g(): IterableIterator<(x: string) => number> { >yield * function* () { yield x => x.length; } () : void > : ^^^^ >function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck28.types b/tests/baselines/reference/generatorTypeCheck28.types index ceacc58fa4f4d..c7675a7248536 100644 --- a/tests/baselines/reference/generatorTypeCheck28.types +++ b/tests/baselines/reference/generatorTypeCheck28.types @@ -11,11 +11,11 @@ function* g(): IterableIterator<(x: string) => number> { >yield * { *[Symbol.iterator]() { yield x => x.length; } } : void > : ^^^^ >{ *[Symbol.iterator]() { yield x => x.length; } } : { [Symbol.iterator](): Generator<(x: string) => number, void, undefined>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *[Symbol.iterator]() { >[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.iterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -27,7 +27,7 @@ function* g(): IterableIterator<(x: string) => number> { >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck29.types b/tests/baselines/reference/generatorTypeCheck29.types index 403d13845973d..c8420f3d22938 100644 --- a/tests/baselines/reference/generatorTypeCheck29.types +++ b/tests/baselines/reference/generatorTypeCheck29.types @@ -11,15 +11,15 @@ function* g2(): Iterator number>> { >yield function* () { yield x => x.length; } () : undefined > : ^^^^^^^^^ >function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck30.types b/tests/baselines/reference/generatorTypeCheck30.types index 5c5128ffb1bbc..bbb0e9be9f6dd 100644 --- a/tests/baselines/reference/generatorTypeCheck30.types +++ b/tests/baselines/reference/generatorTypeCheck30.types @@ -11,15 +11,15 @@ function* g2(): Iterator number>> { >yield function* () { yield x => x.length; } () : undefined > : ^^^^^^^^^ >function* () { yield x => x.length; } () : Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function* () { yield x => x.length; } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/generatorTypeCheck31.types b/tests/baselines/reference/generatorTypeCheck31.types index 96c2c3020ae7f..18130e17dfa3c 100644 --- a/tests/baselines/reference/generatorTypeCheck31.types +++ b/tests/baselines/reference/generatorTypeCheck31.types @@ -11,15 +11,15 @@ function* g2(): Iterator<() => Iterable<(x: string) => number>> { >yield function* () { yield x => x.length; } () : undefined > : ^^^^^^^^^ >function* () { yield x => x.length; } () : Generator<(x: any) => any, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function* () { yield x => x.length; } : () => Generator<(x: any) => any, void, unknown> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield x => x.length; >yield x => x.length : any > : ^^^ >x => x.length : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x.length : any diff --git a/tests/baselines/reference/generatorTypeCheck39.types b/tests/baselines/reference/generatorTypeCheck39.types index 85c9699cfc880..c9da6e9618eff 100644 --- a/tests/baselines/reference/generatorTypeCheck39.types +++ b/tests/baselines/reference/generatorTypeCheck39.types @@ -3,13 +3,13 @@ === generatorTypeCheck39.ts === function decorator(x: any) { >decorator : (x: any) => (y: any) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ return y => { }; >y => { } : (y: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >y : any > : ^^^ } @@ -19,9 +19,9 @@ function* g() { @decorator(yield 0) >decorator(yield 0) : (y: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >decorator : (x: any) => (y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^^ >yield 0 : any > : ^^^ >0 : 0 diff --git a/tests/baselines/reference/generatorTypeCheck42.types b/tests/baselines/reference/generatorTypeCheck42.types index 38a8472b73824..bca9a7d9fe924 100644 --- a/tests/baselines/reference/generatorTypeCheck42.types +++ b/tests/baselines/reference/generatorTypeCheck42.types @@ -9,7 +9,7 @@ function* g() { >x : { [x: number]: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [yield 0]() { } } : { [x: number]: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ [yield 0]() { >[yield 0] : () => void diff --git a/tests/baselines/reference/generatorTypeCheck43.types b/tests/baselines/reference/generatorTypeCheck43.types index 39dde64d3d180..f1f357655f73a 100644 --- a/tests/baselines/reference/generatorTypeCheck43.types +++ b/tests/baselines/reference/generatorTypeCheck43.types @@ -9,7 +9,7 @@ function* g() { >x : { [x: number]: () => Generator; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ *[yield 0]() { } } : { [x: number]: () => Generator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ *[yield 0]() { >[yield 0] : () => Generator diff --git a/tests/baselines/reference/generatorTypeCheck45.types b/tests/baselines/reference/generatorTypeCheck45.types index 78a0ce4a5cd5b..47d1ae33884eb 100644 --- a/tests/baselines/reference/generatorTypeCheck45.types +++ b/tests/baselines/reference/generatorTypeCheck45.types @@ -3,7 +3,7 @@ === generatorTypeCheck45.ts === declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T): T; >foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T -> : ^ ^^ ^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >fun : () => Iterator<(x: T) => U> @@ -11,23 +11,23 @@ declare function foo(x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) >x : T > : ^ >fun2 : (y: U) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : U > : ^ foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, should be string >foo("", function* () { yield x => x.length }, p => undefined) : string > : ^^^^^^ ->foo : (x: T, fun: () => Iterator<(x: T) => U, any, undefined>, fun2: (y: U) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (x: T, fun: () => Iterator<(x: T) => U>, fun2: (y: U) => T) => T +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >function* () { yield x => x.length } : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number @@ -37,7 +37,7 @@ foo("", function* () { yield x => x.length }, p => undefined); // T is fixed, sh >length : number > : ^^^^^^ >p => undefined : (p: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p : number > : ^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/generatorTypeCheck46.types b/tests/baselines/reference/generatorTypeCheck46.types index 3d4923f136510..cc4525d4915ba 100644 --- a/tests/baselines/reference/generatorTypeCheck46.types +++ b/tests/baselines/reference/generatorTypeCheck46.types @@ -3,7 +3,7 @@ === generatorTypeCheck46.ts === declare function foo(x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) => T): T; >foo : (x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) => T) => T -> : ^ ^^ ^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >fun : () => Iterable<(x: T) => U> @@ -11,7 +11,7 @@ declare function foo(x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) >x : T > : ^ >fun2 : (y: U) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : U > : ^ @@ -19,21 +19,21 @@ foo("", function* () { >foo("", function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }}, p => undefined) : string > : ^^^^^^ >foo : (x: T, fun: () => Iterable<(x: T) => U>, fun2: (y: U) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >function* () { yield* { *[Symbol.iterator]() { yield x => x.length } }} : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ yield* { >yield* { *[Symbol.iterator]() { yield x => x.length } } : void > : ^^^^ >{ *[Symbol.iterator]() { yield x => x.length } } : { [Symbol.iterator](): Generator<(x: string) => number, void, undefined>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *[Symbol.iterator]() { >[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Symbol.iterator : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -45,7 +45,7 @@ foo("", function* () { >yield x => x.length : undefined > : ^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number @@ -58,7 +58,7 @@ foo("", function* () { } }, p => undefined); // T is fixed, should be string >p => undefined : (p: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p : number > : ^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/generatorTypeCheck62.types b/tests/baselines/reference/generatorTypeCheck62.types index c5bfa92dd80fa..0b0f66ae29436 100644 --- a/tests/baselines/reference/generatorTypeCheck62.types +++ b/tests/baselines/reference/generatorTypeCheck62.types @@ -9,11 +9,11 @@ export interface StrategicState { export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >stratName : string > : ^^^^^^ >gen : (a: T) => IterableIterator -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >a : T @@ -21,7 +21,7 @@ export function strategy(stratName: string, gen: (a: T return function*(state) { >function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -31,7 +31,7 @@ export function strategy(stratName: string, gen: (a: T >gen(state) : IterableIterator > : ^^^^^^^^^^^^^^^^^^^ >gen : (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -76,13 +76,13 @@ export const Nothing1: Strategy = strategy("Nothing", function*(state: St >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function*(state: State) { return state;}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function*(state: State) { return state;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -96,13 +96,13 @@ export const Nothing2: Strategy = strategy("Nothing", function*(state: St >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function*(state: State) { yield state;}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function*(state: State) { yield state;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -118,13 +118,13 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function* (state: State) { yield ; return state;}) : (a: any) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield ; return state;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ diff --git a/tests/baselines/reference/generatorTypeCheck63.types b/tests/baselines/reference/generatorTypeCheck63.types index b90d830130205..a28a61bca1bc1 100644 --- a/tests/baselines/reference/generatorTypeCheck63.types +++ b/tests/baselines/reference/generatorTypeCheck63.types @@ -9,11 +9,11 @@ export interface StrategicState { export function strategy(stratName: string, gen: (a: T) => IterableIterator): (a: T) => IterableIterator { >strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >stratName : string > : ^^^^^^ >gen : (a: T) => IterableIterator -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >a : T @@ -21,7 +21,7 @@ export function strategy(stratName: string, gen: (a: T return function*(state) { >function*(state) { for (const next of gen(state)) { if (next) { next.lastStrategyApplied = stratName; } yield next; } } : (state: T) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -31,7 +31,7 @@ export function strategy(stratName: string, gen: (a: T >gen(state) : IterableIterator > : ^^^^^^^^^^^^^^^^^^^ >gen : (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >state : T > : ^ @@ -76,13 +76,13 @@ export const Nothing: Strategy = strategy("Nothing", function* (state: St >Nothing : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function* (state: State) { yield 1; return state;}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield 1; return state;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -102,13 +102,13 @@ export const Nothing1: Strategy = strategy("Nothing", function* (state: S >Nothing1 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function* (state: State) {}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) {} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -118,13 +118,13 @@ export const Nothing2: Strategy = strategy("Nothing", function* (state: S >Nothing2 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function* (state: State) { return 1;}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { return 1;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ @@ -138,13 +138,13 @@ export const Nothing3: Strategy = strategy("Nothing", function* (state: S >Nothing3 : Strategy > : ^^^^^^^^^^^^^^^ >strategy("Nothing", function* (state: State) { yield state; return 1;}) : (a: State) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>strategy : (stratName: string, gen: (a: T) => IterableIterator) => (a: T) => IterableIterator +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >"Nothing" : "Nothing" > : ^^^^^^^^^ >function* (state: State) { yield state; return 1;} : (state: State) => Generator -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State > : ^^^^^ diff --git a/tests/baselines/reference/generatorYieldContextualType.types b/tests/baselines/reference/generatorYieldContextualType.types index a3895ce690fe0..1619affc92ccb 100644 --- a/tests/baselines/reference/generatorYieldContextualType.types +++ b/tests/baselines/reference/generatorYieldContextualType.types @@ -3,7 +3,7 @@ === generatorYieldContextualType.ts === declare function f1(gen: () => Generator): void; >f1 : (gen: () => Generator) => void -> : ^ ^^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >gen : () => Generator > : ^^^^^^ @@ -11,7 +11,7 @@ f1<0, 0, 1>(function* () { >f1<0, 0, 1>(function* () { const a = yield 0; return 0;}) : void > : ^^^^ >f1 : (gen: () => Generator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >function* () { const a = yield 0; return 0;} : () => Generator<0, 0, 1> > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -31,7 +31,7 @@ f1<0, 0, 1>(function* () { declare function f2(gen: () => Generator | AsyncGenerator): void; >f2 : (gen: () => Generator | AsyncGenerator) => void -> : ^ ^^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >gen : () => Generator | AsyncGenerator > : ^^^^^^ @@ -39,7 +39,7 @@ f2<0, 0, 1>(async function* () { >f2<0, 0, 1>(async function* () { const a = yield 0; return 0;}) : void > : ^^^^ >f2 : (gen: () => Generator | AsyncGenerator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >async function* () { const a = yield 0; return 0;} : () => AsyncGenerator<0, 0, 1> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -85,7 +85,7 @@ namespace Directive { export function is(value: Directive | T): value is Directive { >is : (value: Directive | T) => value is Directive -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T | Directive > : ^^^^^^^^^^^^^ @@ -259,7 +259,7 @@ type StepState> = T & { function canPickStepContinue( >canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ _step: T, >_step : T @@ -281,7 +281,7 @@ function canPickStepContinue( function createPickStep( >createPickStep : (step: QuickPickStep) => QuickPickStep -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ step: QuickPickStep >step : QuickPickStep @@ -295,7 +295,7 @@ function createPickStep( function* showStep< >showStep : & { counter: number; confirm?: boolean | undefined; startingStep?: number | undefined; } & { repo: any; }, Context extends { repos: any[]; title: string; status: any; }>(state: State, _context: Context) => StepResultGenerator -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^ State extends PartialStepState & { repo: any }, >repo : any @@ -319,7 +319,7 @@ function* showStep< >createPickStep({ title: "", placeholder: "", }) : QuickPickStep > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >createPickStep : (step: QuickPickStep) => QuickPickStep -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >{ title: "", placeholder: "", } : { title: string; placeholder: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -350,8 +350,8 @@ function* showStep< > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >canPickStepContinue(step, state, selection) : boolean > : ^^^^^^^ ->canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: Directive | StepItemType) => _selection is StepItemType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>canPickStepContinue : >(_step: T, _state: PartialStepState, _selection: StepItemType | Directive) => _selection is StepItemType +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >step : QuickPickStep > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State diff --git a/tests/baselines/reference/genericAndNonGenericInheritedSignature1.types b/tests/baselines/reference/genericAndNonGenericInheritedSignature1.types index d574a22caa094..a5724d76ebd64 100644 --- a/tests/baselines/reference/genericAndNonGenericInheritedSignature1.types +++ b/tests/baselines/reference/genericAndNonGenericInheritedSignature1.types @@ -4,14 +4,14 @@ interface Foo { f(x: any): any; >f : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } interface Bar { f(x: T): T; >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/genericAndNonGenericInheritedSignature2.types b/tests/baselines/reference/genericAndNonGenericInheritedSignature2.types index 2268b7b1f9fe3..2167c9b593669 100644 --- a/tests/baselines/reference/genericAndNonGenericInheritedSignature2.types +++ b/tests/baselines/reference/genericAndNonGenericInheritedSignature2.types @@ -4,14 +4,14 @@ interface Foo { f(x: any): any; >f : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } interface Bar { f(x: T): T; >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types index e34903ba7716d..97d40bd77b52c 100644 --- a/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types +++ b/tests/baselines/reference/genericArgumentCallSigAssignmentCompat.types @@ -15,7 +15,7 @@ module Underscore { export interface Static { all(list: T[], iterator?: Iterator, context?: any): boolean; >all : (list: T[], iterator?: Iterator, context?: any) => boolean -> : ^ ^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >list : T[] > : ^^^ >iterator : Iterator @@ -25,7 +25,7 @@ module Underscore { identity(value: T): T; >identity : (value: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ } @@ -42,12 +42,12 @@ declare var _: Underscore.Static; _.all([true, 1, null, 'yes'], _.identity); >_.all([true, 1, null, 'yes'], _.identity) : boolean > : ^^^^^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => boolean +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => boolean +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >[true, 1, null, 'yes'] : (string | number | true)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -57,30 +57,30 @@ _.all([true, 1, null, 'yes'], _.identity); >'yes' : "yes" > : ^^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // Ok, because fixing makes us infer boolean for T _.all([true], _.identity); >_.all([true], _.identity) : boolean > : ^^^^^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => boolean +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => boolean +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >[true] : true[] > : ^^^^^^ >true : true > : ^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/genericArray1.types b/tests/baselines/reference/genericArray1.types index 30fbf3c632c71..94789af8786ce 100644 --- a/tests/baselines/reference/genericArray1.types +++ b/tests/baselines/reference/genericArray1.types @@ -19,7 +19,7 @@ var lengths = ["a", "b", "c"].map(x => x.length); >["a", "b", "c"].map(x => x.length) : number[] > : ^^^^^^^^ >["a", "b", "c"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b", "c"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -29,9 +29,9 @@ var lengths = ["a", "b", "c"].map(x => x.length); >"c" : "c" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/genericArrayAssignmentCompatErrors.types b/tests/baselines/reference/genericArrayAssignmentCompatErrors.types index 702114062d8ac..954217bbc16d3 100644 --- a/tests/baselines/reference/genericArrayAssignmentCompatErrors.types +++ b/tests/baselines/reference/genericArrayAssignmentCompatErrors.types @@ -21,7 +21,7 @@ var myCars3 = new Array({}); >myCars3 : {}[] > : ^^^^ >new Array({}) : {}[] -> : ^^^^ +> : ^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >{} : {} diff --git a/tests/baselines/reference/genericArrayExtenstions.types b/tests/baselines/reference/genericArrayExtenstions.types index 1a3b4209161ba..5269a100b158f 100644 --- a/tests/baselines/reference/genericArrayExtenstions.types +++ b/tests/baselines/reference/genericArrayExtenstions.types @@ -7,13 +7,13 @@ export declare class ObservableArray implements Array { // MS.Entertainmen concat(...items: U[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^ >items : U[] > : ^^^ concat(...items: T[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >items : T[] > : ^^^ } diff --git a/tests/baselines/reference/genericArrayMethods1.types b/tests/baselines/reference/genericArrayMethods1.types index 4e39c0ebb0aa2..d8f30c0cd4e4b 100644 --- a/tests/baselines/reference/genericArrayMethods1.types +++ b/tests/baselines/reference/genericArrayMethods1.types @@ -7,7 +7,7 @@ var x:string[] = [0,1].slice(0); // this should be an error >[0,1].slice(0) : number[] > : ^^^^^^^^ >[0,1].slice : (start?: number, end?: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >[0,1] : number[] > : ^^^^^^^^ >0 : 0 @@ -15,7 +15,7 @@ var x:string[] = [0,1].slice(0); // this should be an error >1 : 1 > : ^ >slice : (start?: number, end?: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/genericArrayPropertyAssignment.types b/tests/baselines/reference/genericArrayPropertyAssignment.types index 68fc100c64ede..d66d019023c81 100644 --- a/tests/baselines/reference/genericArrayPropertyAssignment.types +++ b/tests/baselines/reference/genericArrayPropertyAssignment.types @@ -3,7 +3,7 @@ === genericArrayPropertyAssignment.ts === function isEmpty(list: {length:number;}) >isEmpty : (list: { length: number; }) => boolean -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >list : { length: number; } > : ^^^^^^^^^^ ^^^ >length : number @@ -26,7 +26,7 @@ isEmpty([]); // error >isEmpty([]) : boolean > : ^^^^^^^ >isEmpty : (list: { length: number; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericArrayWithoutTypeAnnotation.types b/tests/baselines/reference/genericArrayWithoutTypeAnnotation.types index 0720b4d8b4179..77d33b43b3c1c 100644 --- a/tests/baselines/reference/genericArrayWithoutTypeAnnotation.types +++ b/tests/baselines/reference/genericArrayWithoutTypeAnnotation.types @@ -9,7 +9,7 @@ class Bar { public getBar(foo: IFoo[]) { >getBar : (foo: IFoo[]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types index 16600c33cdd98..80554fbcb4fa4 100644 --- a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types +++ b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types @@ -3,11 +3,11 @@ === genericAssignmentCompatOfFunctionSignatures1.ts === var x1 = function foo3(x: T, z: U) { } >x1 : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >function foo3(x: T, z: U) { } : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : >foo3 : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : string @@ -19,11 +19,11 @@ var x1 = function foo3(x: T, z: U) { } var x2 = function foo3(x: T, z: U) { } >x2 : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >function foo3(x: T, z: U) { } : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : >foo3 : (x: T, z: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : number @@ -35,17 +35,17 @@ var x2 = function foo3(x: T, z: U) { } x1 = x2; >x1 = x2 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x1 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x2 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ x2 = x1; >x2 = x1 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x2 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x1 : (x: T, z: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.types b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.types index e3c8df3f1e8de..60bb259e2ad47 100644 --- a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.types +++ b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.types @@ -4,7 +4,7 @@ interface Comparable { compareTo(other: T): number; >compareTo : (other: T) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >other : T > : ^ } @@ -22,7 +22,7 @@ class A implements Comparable { compareTo(other: T) { return 1; } } >A : A > : ^^^^ >compareTo : (other: T) => number -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >other : T > : ^ >1 : 1 diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 24cfd3181c547..5ff6b8ff250e5 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -38,7 +38,7 @@ class DataView2 extends BaseCollection2 { fillItems(item: CollectionItem2) { >fillItems : (item: CollectionItem2) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >item : CollectionItem2 > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types b/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types index 64b9695a8d869..81a949274e7da 100644 --- a/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types +++ b/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types @@ -5,59 +5,59 @@ function example() { >example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ let x = { >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^ ^^^ foo: (t2: T2) => x, >foo : (t2: T2) => { foo: any; bar: (t1: T1) => any; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >(t2: T2) => x : (t2: T2) => { foo: any; bar: (t1: T1) => any; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >t2 : T2 > : ^^ >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ bar: (t1: T1) => x, >bar : (t1: T1) => { foo: (t2: T2) => any; bar: any; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >(t1: T1) => x : (t1: T1) => { foo: (t2: T2) => any; bar: any; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >t1 : T1 > : ^^ >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ }; return x; >x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ } example().foo("hello").bar(1); >example().foo("hello").bar(1) : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >example().foo("hello").bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >example().foo("hello") : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >example().foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >example() : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericCallSpecializedToTypeArg.types b/tests/baselines/reference/genericCallSpecializedToTypeArg.types index f703449d866fe..71eb704c8efa3 100644 --- a/tests/baselines/reference/genericCallSpecializedToTypeArg.types +++ b/tests/baselines/reference/genericCallSpecializedToTypeArg.types @@ -3,7 +3,7 @@ === genericCallSpecializedToTypeArg.ts === function dupe(x: T): T { >dupe : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -13,7 +13,7 @@ function dupe(x: T): T { } function dupeAndGetDist(x: U): U { >dupeAndGetDist : (x: U) => U -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : U > : ^ @@ -23,7 +23,7 @@ function dupeAndGetDist(x: U): U { >dupe(x) : U > : ^ >dupe : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : U > : ^ diff --git a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.types b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.types index 5e07897cf7ef5..02bad45ea0a29 100644 --- a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.types +++ b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.types @@ -8,16 +8,16 @@ module m1 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : (cb: (x: T) => Promise) => Promise -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } declare function testFunction(n: number): Promise; >testFunction : (n: number) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ @@ -31,13 +31,13 @@ module m1 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^ >numPromise.then : (cb: (x: number) => Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : (cb: (x: number) => Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFunction : (n: number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ } ////////////////////////////////////// @@ -49,22 +49,22 @@ module m2 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : (cb: (x: T) => Promise) => Promise -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } declare function testFunction(n: number): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ declare function testFunction(s: string): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ @@ -78,13 +78,13 @@ module m2 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^ >numPromise.then : (cb: (x: number) => Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : (cb: (x: number) => Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ } ////////////////////////////////////// @@ -96,28 +96,28 @@ module m3 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >error : (error: any) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ } declare function testFunction(n: number): Promise; >testFunction : (n: number) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ @@ -131,13 +131,13 @@ module m3 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^ >numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFunction : (n: number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ } ////////////////////////////////////// @@ -149,34 +149,34 @@ module m4 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >error : (error: any) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ } declare function testFunction(n: number): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ declare function testFunction(s: string): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ @@ -190,13 +190,13 @@ module m4 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^ >numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ } ////////////////////////////////////// @@ -208,50 +208,50 @@ module m5 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U_2, progress?: (preservation: any) => void): Promise; } -> : ^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U_2, progress?: (preservation: any) => void): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >error : (error: any) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ then(cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => U, progress?: (preservation: any) => void): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ >progress : (preservation: any) => void -> : ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >preservation : any > : ^^^ } declare function testFunction(n: number): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ declare function testFunction(s: string): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : string > : ^^^^^^ @@ -265,13 +265,13 @@ module m5 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^ >numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => U_2, progress?: (preservation: any) => void): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => U_2, progress?: (preservation: any) => void): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >testFunction : { (n: number): Promise; (s: string): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ } ////////////////////////////////////// @@ -283,40 +283,40 @@ module m6 { interface Promise { then(cb: (x: T) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ then(cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; >then : { (cb: (x: T) => Promise): Promise; (cb: (x: T) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : (x: T) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >error : (error: any) => Promise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any > : ^^^ } declare function testFunction(n: number): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; (b: boolean): Promise; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ declare function testFunction(s: string): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; (b: boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ declare function testFunction(b: boolean): Promise; >testFunction : { (n: number): Promise; (s: string): Promise; (b: boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >b : boolean > : ^^^^^^^ @@ -330,12 +330,12 @@ module m6 { >numPromise.then(testFunction) : Promise > : ^^^^^^^^^^^^^^^^ >numPromise.then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >numPromise : Promise > : ^^^^^^^^^^^^^^^ >then : { (cb: (x: number) => Promise): Promise; (cb: (x: number) => Promise, error?: (error: any) => Promise): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFunction : { (n: number): Promise; (s: string): Promise; (b: boolean): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/genericCallTypeArgumentInference.types b/tests/baselines/reference/genericCallTypeArgumentInference.types index 2d28660f62a3a..5a61f9561ff99 100644 --- a/tests/baselines/reference/genericCallTypeArgumentInference.types +++ b/tests/baselines/reference/genericCallTypeArgumentInference.types @@ -5,7 +5,7 @@ function foo(t: T) { >foo : (t: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >t : T > : ^ @@ -20,13 +20,13 @@ var r = foo(''); // string >foo('') : "" > : ^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ function foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -39,7 +39,7 @@ function foo2(t: T, u: U) { function foo2b(u: U) { >foo2b : (u: U) => T -> : ^^^^ ^^^^^ ^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^ >u : U > : ^ @@ -58,7 +58,7 @@ var r2 = foo2('', 1); // number >foo2('', 1) : 1 > : ^ >foo2 : (t: T, u: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ >1 : 1 @@ -70,7 +70,7 @@ var r3 = foo2b(1); // {} >foo2b(1) : unknown > : ^^^^^^^ >foo2b : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -87,7 +87,7 @@ class C { foo(t: T, u: U) { >foo : (t: T, u: U) => T -> : ^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -100,7 +100,7 @@ class C { foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U -> : ^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -113,7 +113,7 @@ class C { foo3(t: T, u: U) { >foo3 : (t: T, u: U) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -126,7 +126,7 @@ class C { foo4(t: T, u: U) { >foo4 : (t: T, u: U) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -139,7 +139,7 @@ class C { foo5(t: T, u: U) { >foo5 : (t: T, u: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -165,7 +165,7 @@ class C { foo7(u: U) { >foo7 : (u: U) => T -> : ^^^^ ^^^^^ ^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^ >u : U > : ^ @@ -210,11 +210,11 @@ var r4 = c.foo('', 1); // string >c.foo('', 1) : string > : ^^^^^^ >c.foo : (t: string, u: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo : (t: string, u: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >1 : 1 @@ -226,11 +226,11 @@ var r5 = c.foo2('', 1); // number >c.foo2('', 1) : number > : ^^^^^^ >c.foo2 : (t: string, u: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo2 : (t: string, u: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >1 : 1 @@ -242,11 +242,11 @@ var r6 = c.foo3(true, 1); // boolean >c.foo3(true, 1) : true > : ^^^^ >c.foo3 : (t: T, u: number) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo3 : (t: T, u: number) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^ >true : true > : ^^^^ >1 : 1 @@ -258,11 +258,11 @@ var r7 = c.foo4('', true); // string >c.foo4('', true) : string > : ^^^^^^ >c.foo4 : (t: string, u: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo4 : (t: string, u: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >'' : "" > : ^^ >true : true @@ -274,11 +274,11 @@ var r8 = c.foo5(true, 1); // boolean >c.foo5(true, 1) : true > : ^^^^ >c.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^^^^^^^ >true : true > : ^^^^ >1 : 1 @@ -302,11 +302,11 @@ var r10 = c.foo7(''); // {} >c.foo7('') : unknown > : ^^^^^^^ >c.foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^^ >foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^ >'' : "" > : ^^ @@ -331,7 +331,7 @@ interface I { foo(t: T, u: U): T; >foo : (t: T, u: U) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -339,7 +339,7 @@ interface I { foo2(t: T, u: U): U; >foo2 : (t: T, u: U) => U -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -347,7 +347,7 @@ interface I { foo3(t: T, u: U): T; >foo3 : (t: T, u: U) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -355,7 +355,7 @@ interface I { foo4(t: T, u: U): T; >foo4 : (t: T, u: U) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -363,7 +363,7 @@ interface I { foo5(t: T, u: U): T; >foo5 : (t: T, u: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -375,7 +375,7 @@ interface I { foo7(u: U): T; >foo7 : (u: U) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >u : U > : ^ @@ -394,11 +394,11 @@ var r4 = i.foo('', 1); // string >i.foo('', 1) : string > : ^^^^^^ >i.foo : (t: string, u: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo : (t: string, u: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >1 : 1 @@ -410,11 +410,11 @@ var r5 = i.foo2('', 1); // number >i.foo2('', 1) : number > : ^^^^^^ >i.foo2 : (t: string, u: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo2 : (t: string, u: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >1 : 1 @@ -426,11 +426,11 @@ var r6 = i.foo3(true, 1); // boolean >i.foo3(true, 1) : true > : ^^^^ >i.foo3 : (t: T, u: number) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo3 : (t: T, u: number) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^ >true : true > : ^^^^ >1 : 1 @@ -442,11 +442,11 @@ var r7 = i.foo4('', true); // string >i.foo4('', true) : string > : ^^^^^^ >i.foo4 : (t: string, u: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo4 : (t: string, u: U) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >'' : "" > : ^^ >true : true @@ -458,11 +458,11 @@ var r8 = i.foo5(true, 1); // boolean >i.foo5(true, 1) : true > : ^^^^ >i.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >true : true > : ^^^^ >1 : 1 @@ -486,11 +486,11 @@ var r10 = i.foo7(''); // {} >i.foo7('') : unknown > : ^^^^^^^ >i.foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^^ >foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types index 17a0338f1bed7..f5e5a03e445bd 100644 --- a/tests/baselines/reference/genericCallWithArrayLiteralArgs.types +++ b/tests/baselines/reference/genericCallWithArrayLiteralArgs.types @@ -3,7 +3,7 @@ === genericCallWithArrayLiteralArgs.ts === function foo(t: T) { >foo : (t: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >t : T > : ^ @@ -18,7 +18,7 @@ var r = foo([1, 2]); // number[] >foo([1, 2]) : number[] > : ^^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -32,7 +32,7 @@ var r = foo([1, 2]); // number[] >foo([1, 2]) : number[] > : ^^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -46,7 +46,7 @@ var ra = foo([1, 2]); // any[] >foo([1, 2]) : any[] > : ^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -60,7 +60,7 @@ var r2 = foo([]); // any[] >foo([]) : any[] > : ^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ @@ -70,7 +70,7 @@ var r3 = foo([]); // number[] >foo([]) : number[] > : ^^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ @@ -80,7 +80,7 @@ var r4 = foo([1, '']); // {}[] >foo([1, '']) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, ''] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -94,7 +94,7 @@ var r5 = foo([1, '']); // any[] >foo([1, '']) : any[] > : ^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, ''] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -108,7 +108,7 @@ var r6 = foo([1, '']); // Object[] >foo([1, '']) : Object[] > : ^^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[1, ''] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types index b40a7560b96a0..d457645e64fee 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types @@ -39,7 +39,7 @@ var d2: Derived2; function foo(t: T) { >foo : (t: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >t : T > : ^ @@ -54,7 +54,7 @@ var r = foo(b); // Base >foo(b) : Base > : ^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : Base > : ^^^^ @@ -64,13 +64,13 @@ var r2 = foo(d1); // Derived >foo(d1) : Derived > : ^^^^^^^ >foo : (t: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >d1 : Derived > : ^^^^^^^ function foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -83,7 +83,7 @@ function foo2(t: T, u: U) { function foo2b(u: U) { >foo2b : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >u : U > : ^ @@ -115,7 +115,7 @@ var r3 = foo2b(d1); // Base >foo2b(d1) : Base > : ^^^^ >foo2b : (u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >d1 : Derived > : ^^^^^^^ @@ -140,7 +140,7 @@ class C { foo(t: T, u: U) { >foo : (t: T, u: U) => T -> : ^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -153,7 +153,7 @@ class C { foo2(t: T, u: U) { >foo2 : (t: T, u: U) => U -> : ^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -166,7 +166,7 @@ class C { foo3(t: T, u: U) { >foo3 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -179,7 +179,7 @@ class C { foo4(t: T, u: U) { >foo4 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -192,7 +192,7 @@ class C { foo5(t: T, u: U) { >foo5 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : T > : ^ >u : U @@ -218,7 +218,7 @@ class C { foo7(u: U) { >foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >u : U > : ^ @@ -263,11 +263,11 @@ var r4 = c.foo(d1, d2); // Base >c.foo(d1, d2) : Base > : ^^^^ >c.foo : (t: Base, u: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo : (t: Base, u: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -279,11 +279,11 @@ var r5 = c.foo2(b, d2); // Derived >c.foo2(b, d2) : Derived > : ^^^^^^^ >c.foo2 : (t: Base, u: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo2 : (t: Base, u: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >b : Base > : ^^^^ >d2 : Derived2 @@ -295,11 +295,11 @@ var r6 = c.foo3(d1, d1); // Derived >c.foo3(d1, d1) : Derived > : ^^^^^^^ >c.foo3 : (t: T, u: Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo3 : (t: T, u: Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d1 : Derived @@ -311,11 +311,11 @@ var r7 = c.foo4(d1, d2); // Base >c.foo4(d1, d2) : Base > : ^^^^ >c.foo4 : (t: Base, u: U) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo4 : (t: Base, u: U) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -327,11 +327,11 @@ var r8 = c.foo5(d1, d2); // Derived >c.foo5(d1, d2) : Derived > : ^^^^^^^ >c.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -343,11 +343,11 @@ var r8b = c.foo5(d2, d2); // Derived2 >c.foo5(d2, d2) : Derived2 > : ^^^^^^^^ >c.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ >d2 : Derived2 > : ^^^^^^^^ >d2 : Derived2 @@ -371,11 +371,11 @@ var r10 = c.foo7(d1); // Base >c.foo7(d1) : Base > : ^^^^ >c.foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >c : C > : ^^^^^^^^^^^^^^^^ >foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >d1 : Derived > : ^^^^^^^ @@ -400,7 +400,7 @@ interface I { foo(t: T, u: U): T; >foo : (t: T, u: U) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -408,7 +408,7 @@ interface I { foo2(t: T, u: U): U; >foo2 : (t: T, u: U) => U -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -416,7 +416,7 @@ interface I { foo3(t: T, u: U): T; >foo3 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -424,7 +424,7 @@ interface I { foo4(t: T, u: U): T; >foo4 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -432,7 +432,7 @@ interface I { foo5(t: T, u: U): T; >foo5 : (t: T, u: U) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -444,7 +444,7 @@ interface I { foo7(u: U): T; >foo7 : (u: U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >u : U > : ^ @@ -463,11 +463,11 @@ var r4 = i.foo(d1, d2); // Base >i.foo(d1, d2) : Base > : ^^^^ >i.foo : (t: Base, u: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo : (t: Base, u: Derived) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -479,11 +479,11 @@ var r5 = i.foo2(b, d2); // Derived >i.foo2(b, d2) : Derived > : ^^^^^^^ >i.foo2 : (t: Base, u: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo2 : (t: Base, u: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >b : Base > : ^^^^ >d2 : Derived2 @@ -495,11 +495,11 @@ var r6 = i.foo3(d1, d1); // Derived >i.foo3(d1, d1) : Derived > : ^^^^^^^ >i.foo3 : (t: T, u: Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo3 : (t: T, u: Derived) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d1 : Derived @@ -511,11 +511,11 @@ var r7 = i.foo4(d1, d2); // Base >i.foo4(d1, d2) : Base > : ^^^^ >i.foo4 : (t: Base, u: U) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo4 : (t: Base, u: U) => Base -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -527,11 +527,11 @@ var r8 = i.foo5(d1, d2); // Derived >i.foo5(d1, d2) : Derived > : ^^^^^^^ >i.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >d1 : Derived > : ^^^^^^^ >d2 : Derived2 @@ -543,11 +543,11 @@ var r8b = i.foo5(d2, d2); // Derived2 >i.foo5(d2, d2) : Derived2 > : ^^^^^^^^ >i.foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo5 : (t: T, u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >d2 : Derived2 > : ^^^^^^^^ >d2 : Derived2 @@ -571,11 +571,11 @@ var r10 = i.foo7(d1); // Base >i.foo7(d1) : Base > : ^^^^ >i.foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ >foo7 : (u: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >d1 : Derived > : ^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.types b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.types index c91c9d58452ff..c21134dd7d8ae 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.types +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.types @@ -5,7 +5,7 @@ function foo(t: T) { >foo : (t: T) => U -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >t : T > : ^ @@ -24,7 +24,7 @@ var r = foo(1); // ok >foo(1) : number > : ^^^^^^ >foo : (t: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -34,7 +34,7 @@ var r2 = foo(null); // {} >foo(null) : any > : ^^^ >foo : (t: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ var r3 = foo(new Object()); // {} >r3 : Object @@ -42,7 +42,7 @@ var r3 = foo(new Object()); // {} >foo(new Object()) : Object > : ^^^^^^ >foo : (t: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >new Object() : Object > : ^^^^^^ >Object : ObjectConstructor @@ -54,7 +54,7 @@ var r4 = foo(1); // error >foo(1) : Date > : ^^^^ >foo : (t: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -64,7 +64,7 @@ var r5 = foo(new Date()); // no error >foo(new Date()) : Date > : ^^^^ >foo : (t: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >new Date() : Date > : ^^^^ >Date : DateConstructor diff --git a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.types b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.types index 3393ff08b9c20..0657114746617 100644 --- a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.types +++ b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.types @@ -5,11 +5,11 @@ function foo(arg: { cb: new(t: T) => U }) { >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^ ^^ ^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: new (t: T) => U; } > : ^^^^^^ ^^^ >cb : new (t: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >t : T > : ^ @@ -17,18 +17,18 @@ function foo(arg: { cb: new(t: T) => U }) { >new arg.cb(null) : U > : ^ >arg.cb : new (t: T) => U -> : ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ >arg : { cb: new (t: T) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^^^^^^^^ >cb : new (t: T) => U -> : ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ } var arg: { cb: new(x: T) => string }; >arg : { cb: new (x: T) => string; } > : ^^^^^^ ^^^ >cb : new (x: T) => string -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -38,16 +38,16 @@ var r = foo(arg); // {} >foo(arg) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: new (x: T) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ // more args not allowed var arg2: { cb: new (x: T, y: T) => string }; >arg2 : { cb: new (x: T, y: T) => string; } > : ^^^^^^ ^^^ >cb : new (x: T, y: T) => string -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -59,15 +59,15 @@ var r2 = foo(arg2); // error >foo(arg2) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg2 : { cb: new (x: T, y: T) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ var arg3: { cb: new (x: string, y: number) => string }; >arg3 : { cb: new (x: string, y: number) => string; } > : ^^^^^^ ^^^ >cb : new (x: string, y: number) => string -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -79,17 +79,17 @@ var r3 = foo(arg3); // error >foo(arg3) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg3 : { cb: new (x: string, y: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ function foo2(arg: { cb: new(t: T, t2: T) => U }) { >foo2 : (arg: { cb: new (t: T, t2: T) => U; }) => U -> : ^ ^^ ^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: new (t: T, t2: T) => U; } > : ^^^^^^ ^^^ >cb : new (t: T, t2: T) => U -> : ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >t2 : T @@ -99,11 +99,11 @@ function foo2(arg: { cb: new(t: T, t2: T) => U }) { >new arg.cb(null, null) : U > : ^ >arg.cb : new (t: T, t2: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: new (t: T, t2: T) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >cb : new (t: T, t2: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^^ } // fewer args ok @@ -113,15 +113,15 @@ var r4 = foo(arg); // {} >foo(arg) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: new (x: T) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ var arg4: { cb: new (x: string) => string }; >arg4 : { cb: new (x: string) => string; } > : ^^^^^^ ^^^ >cb : new (x: string) => string -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -131,9 +131,9 @@ var r6 = foo(arg4); // string >foo(arg4) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg4 : { cb: new (x: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ var arg5: { cb: new () => string }; >arg5 : { cb: new () => string; } @@ -147,7 +147,7 @@ var r7 = foo(arg5); // string >foo(arg5) : string > : ^^^^^^ >foo : (arg: { cb: new (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg5 : { cb: new () => string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithFixedArguments.types b/tests/baselines/reference/genericCallWithFixedArguments.types index 7a215acb8caa8..28966674a71f9 100644 --- a/tests/baselines/reference/genericCallWithFixedArguments.types +++ b/tests/baselines/reference/genericCallWithFixedArguments.types @@ -15,14 +15,14 @@ class B { bar() { }} function g(x) { } >g : (x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^ >x : any g(7) // the parameter list is fixed, so this should not error >g(7) : void > : ^^^^ >g : (x: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^ >7 : 7 > : ^ diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments.types b/tests/baselines/reference/genericCallWithFunctionTypedArguments.types index 7f98ef0bcf510..f2c8e9a0c38dd 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments.types +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments.types @@ -6,9 +6,9 @@ function foo(x: (a: T) => T) { >foo : (x: (a: T) => T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -16,7 +16,7 @@ function foo(x: (a: T) => T) { >x(null) : T > : ^ >x : (a: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r = foo((x: U) => ''); // {} @@ -25,9 +25,9 @@ var r = foo((x: U) => ''); // {} >foo((x: U) => '') : unknown > : ^^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: U) => '' : (x: U) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : U > : ^ >'' : "" @@ -39,9 +39,9 @@ var r2 = foo((x: U) => ''); // string >foo((x: U) => '') : string > : ^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: U) => '' : (x: U) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : U > : ^ >'' : "" @@ -53,9 +53,9 @@ var r3 = foo(x => ''); // {} >foo(x => '') : unknown > : ^^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x => '' : (x: unknown) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ >'' : "" @@ -63,11 +63,11 @@ var r3 = foo(x => ''); // {} function foo2(x: T, cb: (a: T) => U) { >foo2 : (x: T, cb: (a: T) => U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : (a: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -75,7 +75,7 @@ function foo2(x: T, cb: (a: T) => U) { >cb(x) : U > : ^ >cb : (a: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ } @@ -86,11 +86,11 @@ var r4 = foo2(1, function (a: Z) { return '' }); // string, contextual signat >foo2(1, function (a: Z) { return '' }) : string > : ^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >function (a: Z) { return '' } : (a: Z) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >'' : "" @@ -102,11 +102,11 @@ var r5 = foo2(1, (a) => ''); // string >foo2(1, (a) => '') : string > : ^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >(a) => '' : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" @@ -118,11 +118,11 @@ var r6 = foo2('', (a: Z) => 1); >foo2('', (a: Z) => 1) : number > : ^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ >(a: Z) => 1 : (a: Z) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >1 : 1 @@ -130,11 +130,11 @@ var r6 = foo2('', (a: Z) => 1); function foo3(x: T, cb: (a: T) => U, y: U) { >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : (a: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >y : U @@ -144,7 +144,7 @@ function foo3(x: T, cb: (a: T) => U, y: U) { >cb(x) : U > : ^ >cb : (a: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ } @@ -155,11 +155,11 @@ var r7 = foo3(1, (a: Z) => '', ''); // string >foo3(1, (a: Z) => '', '') : string > : ^^^^^^ >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >(a: Z) => '' : (a: Z) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >'' : "" @@ -173,11 +173,11 @@ var r8 = foo3(1, function (a) { return '' }, 1); // error >foo3(1, function (a) { return '' }, 1) : 1 > : ^ >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >function (a) { return '' } : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" @@ -191,11 +191,11 @@ var r9 = foo3(1, (a) => '', ''); // string >foo3(1, (a) => '', '') : string > : ^^^^^^ >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >(a) => '' : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" @@ -205,7 +205,7 @@ var r9 = foo3(1, (a) => '', ''); // string function other(t: T, u: U) { >other : (t: T, u: U) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -217,11 +217,11 @@ function other(t: T, u: U) { >foo2(1, (x: T) => '') : string > : ^^^^^^ >foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -233,11 +233,11 @@ function other(t: T, u: U) { >foo2(1, (x) => '') : string > : ^^^^^^ >foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >(x) => '' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -249,11 +249,11 @@ function other(t: T, u: U) { >foo3(1, (x: T) => '', '') : string > : ^^^^^^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -267,11 +267,11 @@ function other(t: T, u: U) { >foo3(1, (x: T) => '', 1) : string > : ^^^^^^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -285,11 +285,11 @@ function other(t: T, u: U) { >foo3(1, function (a) { return '' }, 1) : 1 > : ^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >function (a) { return '' } : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments2.types b/tests/baselines/reference/genericCallWithFunctionTypedArguments2.types index 7239c47d4188e..da78efbfc590a 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments2.types +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments2.types @@ -6,9 +6,9 @@ function foo(x: new(a: T) => T) { >foo : (x: new (a: T) => T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : new (a: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ @@ -16,7 +16,7 @@ function foo(x: new(a: T) => T) { >new x(null) : T > : ^ >x : new (a: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ } interface I { @@ -39,7 +39,7 @@ var i2: I2; var a: { >a : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ new (x: T): T; >x : T @@ -52,7 +52,7 @@ var r = foo(i); // any >foo(i) : unknown > : ^^^^^^^ >foo : (x: new (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >i : I > : ^ @@ -62,7 +62,7 @@ var r2 = foo(i); // string >foo(i) : string > : ^^^^^^ >foo : (x: new (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >i : I > : ^ @@ -72,7 +72,7 @@ var r3 = foo(i2); // string >foo(i2) : string > : ^^^^^^ >foo : (x: new (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >i2 : I2 > : ^^^^^^^^^^ @@ -82,17 +82,17 @@ var r3b = foo(a); // any >foo(a) : unknown > : ^^^^^^^ >foo : (x: new (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ function foo2(x: T, cb: new(a: T) => U) { >foo2 : (x: T, cb: new (a: T) => U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : new (a: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ @@ -100,7 +100,7 @@ function foo2(x: T, cb: new(a: T) => U) { >new cb(x) : U > : ^ >cb : new (a: T) => U -> : ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ >x : T > : ^ } @@ -111,7 +111,7 @@ var r4 = foo2(1, i2); // error >foo2(1, i2) : string > : ^^^^^^ >foo2 : (x: T, cb: new (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >i2 : I2 @@ -123,11 +123,11 @@ var r4b = foo2(1, a); // any >foo2(1, a) : number > : ^^^^^^ >foo2 : (x: T, cb: new (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >a : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ var r5 = foo2(1, i); // any >r5 : number @@ -135,7 +135,7 @@ var r5 = foo2(1, i); // any >foo2(1, i) : number > : ^^^^^^ >foo2 : (x: T, cb: new (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >i : I @@ -147,7 +147,7 @@ var r6 = foo2('', i2); // string >foo2('', i2) : string > : ^^^^^^ >foo2 : (x: T, cb: new (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ >i2 : I2 @@ -155,11 +155,11 @@ var r6 = foo2('', i2); // string function foo3(x: T, cb: new(a: T) => U, y: U) { >foo3 : (x: T, cb: new (a: T) => U, y: U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : new (a: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ >y : U @@ -169,7 +169,7 @@ function foo3(x: T, cb: new(a: T) => U, y: U) { >new cb(x) : U > : ^ >cb : new (a: T) => U -> : ^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ >x : T > : ^ } @@ -180,7 +180,7 @@ var r7 = foo3(null, i, ''); // any >foo3(null, i, '') : any > : ^^^ >foo3 : (x: T, cb: new (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >i : I > : ^ >'' : "" @@ -192,9 +192,9 @@ var r7b = foo3(null, a, ''); // any >foo3(null, a, '') : any > : ^^^ >foo3 : (x: T, cb: new (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >a : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ @@ -204,7 +204,7 @@ var r8 = foo3(1, i2, 1); // error >foo3(1, i2, 1) : string > : ^^^^^^ >foo3 : (x: T, cb: new (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >i2 : I2 @@ -218,7 +218,7 @@ var r9 = foo3('', i2, ''); // string >foo3('', i2, '') : string > : ^^^^^^ >foo3 : (x: T, cb: new (a: T) => U, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >'' : "" > : ^^ >i2 : I2 diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments3.types b/tests/baselines/reference/genericCallWithFunctionTypedArguments3.types index 3f270e52be47f..1aa0ffc51797e 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments3.types +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments3.types @@ -5,7 +5,7 @@ var a: { >a : { (x: boolean): boolean; (x: string): any; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: boolean): boolean; >x : boolean @@ -18,9 +18,9 @@ var a: { function foo4(cb: (x: T) => U) { >foo4 : (cb: (x: T) => U) => U -> : ^ ^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >cb : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -37,13 +37,13 @@ var r = foo4(a); // T is {} (candidates boolean and string), U is any (candidate >r : any >foo4(a) : any >foo4 : (cb: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a : { (x: boolean): boolean; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ var b: { >b : { (x: boolean): T; (x: T_1): any; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x: boolean): T; >x : boolean @@ -58,7 +58,7 @@ var r2 = foo4(b); // T is {} (candidates boolean and {}), U is any (candidates a >r2 : any >foo4(b) : any >foo4 : (cb: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b : { (x: boolean): T; (x: T_1): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments4.types b/tests/baselines/reference/genericCallWithFunctionTypedArguments4.types index 3f253a7f6efa5..ebb59c8556076 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments4.types +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments4.types @@ -17,7 +17,7 @@ class D { bar: string } var a: { >a : { new (x: boolean): C; new (x: string): D; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new(x: boolean): C; >x : boolean @@ -30,9 +30,9 @@ var a: { function foo4(cb: new(x: T) => U) { >foo4 : (cb: new (x: T) => U) => U -> : ^ ^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >cb : new (x: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -51,13 +51,13 @@ var r = foo4(a); // T is {} (candidates boolean and string), U is {} (candidates >foo4(a) : D > : ^ >foo4 : (cb: new (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a : { new (x: boolean): C; new (x: string): D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^ var b: { >b : { new (x: boolean): T; new (x: T_1): any; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ new(x: boolean): T; >x : boolean @@ -72,7 +72,7 @@ var r2 = foo4(b); // T is {} (candidates boolean and {}), U is any (candidates a >r2 : any >foo4(b) : any >foo4 : (cb: new (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b : { new (x: boolean): T; new (x: T_1): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithFunctionTypedArguments5.types b/tests/baselines/reference/genericCallWithFunctionTypedArguments5.types index 595d69328622e..628b6581b8973 100644 --- a/tests/baselines/reference/genericCallWithFunctionTypedArguments5.types +++ b/tests/baselines/reference/genericCallWithFunctionTypedArguments5.types @@ -5,11 +5,11 @@ function foo(arg: { cb: (t: T) => U }) { >foo : (arg: { cb: (t: T) => U; }) => U -> : ^ ^^ ^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: (t: T) => U; } > : ^^^^^^ ^^^ >cb : (t: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ @@ -17,22 +17,22 @@ function foo(arg: { cb: (t: T) => U }) { >arg.cb(null) : U > : ^ >arg.cb : (t: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >arg : { cb: (t: T) => U; } -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ >cb : (t: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var arg = { cb: (x: T) => '' }; >arg : { cb: (x: T) => string; } -> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >{ cb: (x: T) => '' } : { cb: (x: T) => string; } -> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ >cb : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >(x: T) => '' : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : >x : T > : ^ >'' : "" @@ -44,9 +44,9 @@ var r = foo(arg); // {} >foo(arg) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: (x: T) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ // more args not allowed var r2 = foo({ cb: (x: T, y: T) => '' }); // error @@ -55,13 +55,13 @@ var r2 = foo({ cb: (x: T, y: T) => '' }); // error >foo({ cb: (x: T, y: T) => '' }) : unknown > : ^^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >{ cb: (x: T, y: T) => '' } : { cb: (x: T, y: T) => string; } -> : ^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >cb : (x: T, y: T) => string -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >(x: T, y: T) => '' : (x: T, y: T) => string -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^^^ +> : >x : T > : ^ >y : T @@ -75,13 +75,13 @@ var r3 = foo({ cb: (x: string, y: number) => '' }); // error >foo({ cb: (x: string, y: number) => '' }) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >{ cb: (x: string, y: number) => '' } : { cb: (x: string, y: number) => string; } -> : ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >cb : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >(x: string, y: number) => '' : (x: string, y: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >y : number @@ -91,11 +91,11 @@ var r3 = foo({ cb: (x: string, y: number) => '' }); // error function foo2(arg: { cb: (t: T, t2: T) => U }) { >foo2 : (arg: { cb: (t: T, t2: T) => U; }) => U -> : ^ ^^ ^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: (t: T, t2: T) => U; } > : ^^^^^^ ^^^ >cb : (t: T, t2: T) => U -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >t2 : T @@ -105,11 +105,11 @@ function foo2(arg: { cb: (t: T, t2: T) => U }) { >arg.cb(null, null) : U > : ^ >arg.cb : (t: T, t2: T) => U -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: (t: T, t2: T) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >cb : (t: T, t2: T) => U -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ } // fewer args ok @@ -119,9 +119,9 @@ var r4 = foo(arg); // {} >foo(arg) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >arg : { cb: (x: T) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ var r5 = foo({ cb: (x: T) => '' }); // {} >r5 : string @@ -129,13 +129,13 @@ var r5 = foo({ cb: (x: T) => '' }); // {} >foo({ cb: (x: T) => '' }) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >{ cb: (x: T) => '' } : { cb: (x: T) => string; } -> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^ >cb : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >(x: T) => '' : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : >x : T > : ^ >'' : "" @@ -147,13 +147,13 @@ var r6 = foo({ cb: (x: string) => '' }); // string >foo({ cb: (x: string) => '' }) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >{ cb: (x: string) => '' } : { cb: (x: string) => string; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^ >cb : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >'' : "" @@ -165,13 +165,13 @@ var r7 = foo({ cb: () => '' }); // string >foo({ cb: () => '' }) : string > : ^^^^^^ >foo : (arg: { cb: (t: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >{ cb: () => '' } : { cb: () => string; } > : ^^^^^^^^^^^^^^^^^^^^^ >cb : () => string > : ^^^^^^^^^^^^ >() => '' : () => string -> : ^^^^^^^^^^^^ +> : >'' : "" > : ^^ diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments.types b/tests/baselines/reference/genericCallWithGenericSignatureArguments.types index ddab475f73db2..c15eeb5383e57 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments.types +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments.types @@ -6,43 +6,43 @@ function foo(a: (x: T) => T, b: (x: T) => T) { >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } //var r1 = foo((x: number) => 1, (x: string) => ''); // error var r1b = foo((x) => 1, (x) => ''); // {} => {} >r1b : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >foo((x) => 1, (x) => '') : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x) => 1 : (x: unknown) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ >1 : 1 > : ^ >(x) => '' : (x: unknown) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ >'' : "" @@ -50,17 +50,17 @@ var r1b = foo((x) => 1, (x) => ''); // {} => {} var r2 = foo((x: Object) => null, (x: string) => ''); // Object => Object >r2 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo((x: Object) => null, (x: string) => '') : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: Object) => null : (x: Object) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : Object > : ^^^^^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -68,37 +68,37 @@ var r2 = foo((x: Object) => null, (x: string) => ''); // Object => Object var r3 = foo((x: number) => 1, (x: Object) => null); // number => number >r3 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo((x: number) => 1, (x: Object) => null) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >(x: Object) => null : (x: Object) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : Object > : ^^^^^^ var r3ii = foo((x: number) => 1, (x: number) => 1); // number => number >r3ii : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo((x: number) => 1, (x: number) => 1) : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -122,13 +122,13 @@ var b: { x: number; z?: number; }; var r4 = foo((x: typeof a) => a, (x: typeof b) => b); // typeof a => typeof a >r4 : (x: { x: number; y?: number; }) => { x: number; y?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >foo((x: typeof a) => a, (x: typeof b) => b) : (x: { x: number; y?: number; }) => { x: number; y?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -136,7 +136,7 @@ var r4 = foo((x: typeof a) => a, (x: typeof b) => b); // typeof a => typeof a >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { x: number; z?: number; } @@ -146,13 +146,13 @@ var r4 = foo((x: typeof a) => a, (x: typeof b) => b); // typeof a => typeof a var r5 = foo((x: typeof b) => b, (x: typeof a) => a); // typeof b => typeof b >r5 : (x: { x: number; z?: number; }) => { x: number; z?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >foo((x: typeof b) => b, (x: typeof a) => a) : (x: { x: number; z?: number; }) => { x: number; z?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: typeof b) => b : (x: typeof b) => { x: number; z?: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { x: number; z?: number; } @@ -160,7 +160,7 @@ var r5 = foo((x: typeof b) => b, (x: typeof a) => a); // typeof b => typeof b >b : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: typeof a) => a : (x: typeof a) => { x: number; y?: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -170,25 +170,25 @@ var r5 = foo((x: typeof b) => b, (x: typeof a) => a); // typeof b => typeof b function other(x: T) { >other : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ var r6 = foo((a: T) => a, (b: T) => b); // T => T >r6 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo((a: T) => a, (b: T) => b) : (x: T) => T -> : ^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -196,19 +196,19 @@ function other(x: T) { var r6b = foo((a) => a, (b) => b); // {} => {} >r6b : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >foo((a) => a, (b) => b) : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a) => a : (a: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : unknown > : ^^^^^^^ >a : unknown > : ^^^^^^^ >(b) => b : (b: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >b : unknown > : ^^^^^^^ >b : unknown @@ -217,25 +217,25 @@ function other(x: T) { function other2(x: T) { >other2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r7 = foo((a: T) => a, (b: T) => b); // T => T >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo((a: T) => a, (b: T) => b) : (x: T) => T -> : ^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -243,19 +243,19 @@ function other2(x: T) { var r7b = foo((a) => a, (b) => b); // {} => {} >r7b : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >foo((a) => a, (b) => b) : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a) => a : (a: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : unknown > : ^^^^^^^ >a : unknown > : ^^^^^^^ >(b) => b : (b: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >b : unknown > : ^^^^^^^ >b : unknown @@ -267,7 +267,7 @@ function other2(x: T) { >r7(null) : T > : ^ >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ // BUG 835518 //var r9 = r7(new Date()); @@ -276,48 +276,48 @@ function other2(x: T) { function foo2(a: (x: T) => T, b: (x: T) => T) { >foo2 : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } function other3(x: T) { >other3 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r8 = foo2((a: Date) => a, (b: Date) => b); // Date => Date >r8 : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >foo2((a: Date) => a, (b: Date) => b) : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : >foo2 : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: Date) => a : (a: Date) => Date -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : Date > : ^^^^ >a : Date > : ^^^^ >(b: Date) => b : (b: Date) => Date -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >b : Date > : ^^^^ >b : Date diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.types b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.types index 71449d6d6d9c8..b2d326a4510c4 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.types +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.types @@ -10,44 +10,44 @@ module onlyT { function foo(a: (x: T) => T, b: (x: T) => T) { >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r1: (x: {}) => {} = foo((x: number) => 1, (x: string) => ''); >r1 : (x: {}) => {} -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : {} > : ^^ >foo((x: number) => 1, (x: string) => '') : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -55,25 +55,25 @@ module onlyT { function other2(x: T) { >other2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r7 = foo((a: T) => a, (b: T) => b); // T => T >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo((a: T) => a, (b: T) => b) : (x: T) => T -> : ^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -86,7 +86,7 @@ module onlyT { >r7(new Date()) : T > : ^ >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >new Date() : Date > : ^^^^ >Date : DateConstructor @@ -98,55 +98,55 @@ module onlyT { >r7(1) : T > : ^ >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >1 : 1 > : ^ } function foo2(a: (x: T) => T, b: (x: T) => T) { >foo2 : (a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } function other3(x: T) { >other3 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r7 = foo2((a: T) => a, (b: T) => b); // error >r7 : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >foo2((a: T) => a, (b: T) => b) : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : >foo2 : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -154,19 +154,19 @@ module onlyT { var r7b = foo2((a) => a, (b) => b); // valid, T is inferred to be Date >r7b : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >foo2((a) => a, (b) => b) : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : >foo2 : (a: (x: T_1) => T_1, b: (x: T_1) => T_1) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a) => a : (a: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : Date > : ^^^^ >a : Date > : ^^^^ >(b) => b : (b: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >b : Date > : ^^^^ >b : Date @@ -187,36 +187,36 @@ module onlyT { function foo3(x: T, a: (x: T) => T, b: (x: T) => T) { >foo3 : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >x : T > : ^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r7 = foo3(E.A, (x) => E.A, (x) => F.A); // error >r7 : (x: E) => E -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo3(E.A, (x) => E.A, (x) => F.A) : (x: E) => E -> : ^^^^^^^^^^^ +> : >foo3 : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >E.A : E > : ^ >E : typeof E @@ -224,7 +224,7 @@ module onlyT { >A : E > : ^ >(x) => E.A : (x: E) => E -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : E > : ^ >E.A : E @@ -234,7 +234,7 @@ module onlyT { >A : E > : ^ >(x) => F.A : (x: E) => F -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : E > : ^ >F.A : F @@ -251,44 +251,44 @@ module TU { function foo(a: (x: T) => T, b: (x: U) => U) { >foo : (a: (x: T) => T, b: (x: U) => U) => (x: T) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: U) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : U > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r1: (x: {}) => {} = foo((x: number) => 1, (x: string) => ''); >r1 : (x: {}) => {} -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : {} > : ^^ >foo((x: number) => 1, (x: string) => '') : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo : (a: (x: T) => T, b: (x: U) => U) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -296,25 +296,25 @@ module TU { function other2(x: T) { >other2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r7 = foo((a: T) => a, (b: T) => b); >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo((a: T) => a, (b: T) => b) : (x: T) => T -> : ^^^^^^^^^^^ +> : >foo : (a: (x: T_1) => T_1, b: (x: U) => U) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -326,7 +326,7 @@ module TU { >r7(new Date()) : T > : ^ >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >new Date() : Date > : ^^^^ >Date : DateConstructor @@ -338,55 +338,55 @@ module TU { >r7(1) : T > : ^ >r7 : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >1 : 1 > : ^ } function foo2(a: (x: T) => T, b: (x: U) => U) { >foo2 : (a: (x: T) => T, b: (x: U) => U) => (x: T) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: U) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : U > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } function other3(x: T) { >other3 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ var r7 = foo2((a: T) => a, (b: T) => b); >r7 : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >foo2((a: T) => a, (b: T) => b) : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : >foo2 : (a: (x: T_1) => T_1, b: (x: U) => U) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a: T) => a : (a: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >a : T > : ^ >a : T > : ^ >(b: T) => b : (b: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >b : T > : ^ >b : T @@ -394,19 +394,19 @@ module TU { var r7b = foo2((a) => a, (b) => b); >r7b : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >foo2((a) => a, (b) => b) : (x: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : >foo2 : (a: (x: T_1) => T_1, b: (x: U) => U) => (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(a) => a : (a: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >a : Date > : ^^^^ >a : Date > : ^^^^ >(b) => b : (b: Date) => Date -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >b : Date > : ^^^^ >b : Date @@ -427,36 +427,36 @@ module TU { function foo3(x: T, a: (x: T) => T, b: (x: U) => U) { >foo3 : (x: T, a: (x: T) => T, b: (x: U) => U) => (x: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >x : T > : ^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: U) => U -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : U > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r7 = foo3(E.A, (x) => E.A, (x) => F.A); >r7 : (x: E) => E -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo3(E.A, (x) => E.A, (x) => F.A) : (x: E) => E -> : ^^^^^^^^^^^ +> : >foo3 : (x: T, a: (x: T) => T, b: (x: U) => U) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >E.A : E > : ^ >E : typeof E @@ -464,7 +464,7 @@ module TU { >A : E > : ^ >(x) => E.A : (x: E) => E -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : E > : ^ >E.A : E @@ -474,7 +474,7 @@ module TU { >A : E > : ^ >(x) => F.A : (x: U) => F -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : U > : ^ >F.A : F diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.types b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.types index 338822619d2bd..ce1fbc55d495f 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.types +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.types @@ -6,86 +6,86 @@ function foo(x: T, a: (x: T) => T, b: (x: T) => T) { >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >x : T > : ^ >a : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => T; >r : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r1 = foo('', (x: string) => '', (x: Object) => null); // any => any >r1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo('', (x: string) => '', (x: Object) => null) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >'' : "" > : ^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" > : ^^ >(x: Object) => null : (x: Object) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : Object > : ^^^^^^ var r1ii = foo('', (x) => '', (x) => null); // string => string >r1ii : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo('', (x) => '', (x) => null) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >'' : "" > : ^^ >(x) => '' : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" > : ^^ >(x) => null : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ var r2 = foo('', (x: string) => '', (x: Object) => ''); // string => string >r2 : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo('', (x: string) => '', (x: Object) => '') : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >'' : "" > : ^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" > : ^^ >(x: Object) => '' : (x: Object) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Object > : ^^^^^^ >'' : "" @@ -93,19 +93,19 @@ var r2 = foo('', (x: string) => '', (x: Object) => ''); // string => string var r3 = foo(null, (x: Object) => '', (x: string) => ''); // Object => Object >r3 : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo(null, (x: Object) => '', (x: string) => '') : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: Object) => '' : (x: Object) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Object > : ^^^^^^ >'' : "" > : ^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -113,19 +113,19 @@ var r3 = foo(null, (x: Object) => '', (x: string) => ''); // Object => Object var r4 = foo(null, (x) => '', (x) => ''); // any => any >r4 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo(null, (x) => '', (x) => '') : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x) => '' : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any > : ^^^ >'' : "" > : ^^ >(x) => '' : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any > : ^^^ >'' : "" @@ -133,23 +133,23 @@ var r4 = foo(null, (x) => '', (x) => ''); // any => any var r5 = foo(new Object(), (x) => '', (x) => ''); // Object => Object >r5 : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo(new Object(), (x) => '', (x) => '') : (x: Object) => Object -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >new Object() : Object > : ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >(x) => '' : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : Object > : ^^^^^^ >'' : "" > : ^^ >(x) => '' : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : Object > : ^^^^^^ >'' : "" @@ -169,11 +169,11 @@ enum F { A } var r6 = foo(E.A, (x: number) => E.A, (x: F) => F.A); // number => number >r6 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo(E.A, (x: number) => E.A, (x: F) => F.A) : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, a: (x: T) => T, b: (x: T) => T) => (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >E.A : E > : ^ >E : typeof E @@ -181,7 +181,7 @@ var r6 = foo(E.A, (x: number) => E.A, (x: F) => F.A); // number => number >A : E > : ^ >(x: number) => E.A : (x: number) => E -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : number > : ^^^^^^ >E.A : E @@ -191,7 +191,7 @@ var r6 = foo(E.A, (x: number) => E.A, (x: F) => F.A); // number => number >A : E > : ^ >(x: F) => F.A : (x: F) => F -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : F > : ^ >F.A : F @@ -204,64 +204,64 @@ var r6 = foo(E.A, (x: number) => E.A, (x: F) => F.A); // number => number function foo2(x: T, a: (x: T) => U, b: (x: T) => U) { >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >x : T > : ^ >a : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >b : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ var r: (x: T) => U; >r : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ return r; >r : (x: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r8 = foo2('', (x) => '', (x) => null); // string => string >r8 : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >foo2('', (x) => '', (x) => null) : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >'' : "" > : ^^ >(x) => '' : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" > : ^^ >(x) => null : (x: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ var r9 = foo2(null, (x) => '', (x) => ''); // any => any >r9 : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >foo2(null, (x) => '', (x) => '') : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x) => '' : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any > : ^^^ >'' : "" > : ^^ >(x) => '' : (x: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any > : ^^^ >'' : "" @@ -269,19 +269,19 @@ var r9 = foo2(null, (x) => '', (x) => ''); // any => any var r10 = foo2(null, (x: Object) => '', (x: string) => ''); // Object => Object >r10 : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo2(null, (x: Object) => '', (x: string) => '') : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >(x: Object) => '' : (x: Object) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : Object > : ^^^^^^ >'' : "" > : ^^ >(x: string) => '' : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -289,35 +289,35 @@ var r10 = foo2(null, (x: Object) => '', (x: string) => ''); // Object => Object var x: (a: string) => boolean; >x : (a: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ var r11 = foo2(x, (a1: (y: string) => string) => (n: Object) => 1, (a2: (z: string) => string) => 2); // error >r11 : (x: (a: string) => boolean) => (n: Object) => 1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo2(x, (a1: (y: string) => string) => (n: Object) => 1, (a2: (z: string) => string) => 2) : (x: (a: string) => boolean) => (n: Object) => 1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >x : (a: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(a1: (y: string) => string) => (n: Object) => 1 : (a1: (y: string) => string) => (n: Object) => 1 -> : ^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^ >a1 : (y: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : string > : ^^^^^^ >(n: Object) => 1 : (n: Object) => 1 -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >n : Object > : ^^^^^^ >1 : 1 > : ^ >(a2: (z: string) => string) => 2 : (a2: (z: string) => string) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : (z: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >z : string > : ^^^^^^ >2 : 2 @@ -325,29 +325,29 @@ var r11 = foo2(x, (a1: (y: string) => string) => (n: Object) => 1, (a2: (z: stri var r12 = foo2(x, (a1: (y: string) => boolean) => (n: Object) => 1, (a2: (z: string) => boolean) => 2); // error >r12 : (x: (z: string) => boolean) => (n: Object) => 1 -> : ^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^^^^^ >foo2(x, (a1: (y: string) => boolean) => (n: Object) => 1, (a2: (z: string) => boolean) => 2) : (x: (z: string) => boolean) => (n: Object) => 1 -> : ^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^^ +> : >foo2 : (x: T, a: (x: T) => U, b: (x: T) => U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >x : (a: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(a1: (y: string) => boolean) => (n: Object) => 1 : (a1: (y: string) => boolean) => (n: Object) => 1 -> : ^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^ >a1 : (y: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : string > : ^^^^^^ >(n: Object) => 1 : (n: Object) => 1 -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >n : Object > : ^^^^^^ >1 : 1 > : ^ >(a2: (z: string) => boolean) => 2 : (a2: (z: string) => boolean) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : (z: string) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >z : string > : ^^^^^^ >2 : 2 diff --git a/tests/baselines/reference/genericCallWithNonGenericArgs1.types b/tests/baselines/reference/genericCallWithNonGenericArgs1.types index 7ceb8acac0ceb..631aeae68ec75 100644 --- a/tests/baselines/reference/genericCallWithNonGenericArgs1.types +++ b/tests/baselines/reference/genericCallWithNonGenericArgs1.types @@ -3,12 +3,12 @@ === genericCallWithNonGenericArgs1.ts === function f(x: any) { } >f : (x: any) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : any f(null) >f(null) : void > : ^^^^ >f : (x: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithNonSymmetricSubtypes.types b/tests/baselines/reference/genericCallWithNonSymmetricSubtypes.types index a89864a1e0d03..1c86220baaed0 100644 --- a/tests/baselines/reference/genericCallWithNonSymmetricSubtypes.types +++ b/tests/baselines/reference/genericCallWithNonSymmetricSubtypes.types @@ -6,7 +6,7 @@ function foo(x: T, y: T) { >foo : (x: T, y: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >y : T @@ -41,9 +41,9 @@ var r = foo(a, b); // { x: number; y?: number; }; >r : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(a, b) : { x: number; y?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { x: number; z?: number; } @@ -53,9 +53,9 @@ var r2 = foo(b, a); // { x: number; z?: number; }; >r2 : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(b, a) : { x: number; z?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >b : { x: number; z?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -77,9 +77,9 @@ var r3 = foo(a, x); // { x: number; y?: number; }; >r3 : { x: number; } > : ^^^^^^^^^^^^^^ >foo(a, x) : { x: number; } -> : ^^^^^^^^^^^^^^ +> : >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { x: number; } @@ -89,9 +89,9 @@ var r4 = foo(x, a); // { x: number; }; >r4 : { x: number; } > : ^^^^^^^^^^^^^^ >foo(x, a) : { x: number; } -> : ^^^^^^^^^^^^^^ +> : >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >x : { x: number; } > : ^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -101,9 +101,9 @@ var r5 = foo(a, y); // { x?: number; }; >r5 : { x?: number; } > : ^^^^^^^^^^^^^^^ >foo(a, y) : { x?: number; } -> : ^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >a : { x: number; y?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { x?: number; } @@ -113,9 +113,9 @@ var r5 = foo(y, a); // { x?: number; }; >r5 : { x?: number; } > : ^^^^^^^^^^^^^^^ >foo(y, a) : { x?: number; } -> : ^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >y : { x?: number; } > : ^^^^^^^^^^^^^^^ >a : { x: number; y?: number; } @@ -125,9 +125,9 @@ var r6 = foo(x, y); // { x?: number; }; >r6 : { x?: number; } > : ^^^^^^^^^^^^^^^ >foo(x, y) : { x?: number; } -> : ^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >x : { x: number; } > : ^^^^^^^^^^^^^^ >y : { x?: number; } @@ -137,9 +137,9 @@ var r6 = foo(y, x); // { x?: number; }; >r6 : { x?: number; } > : ^^^^^^^^^^^^^^^ >foo(y, x) : { x?: number; } -> : ^^^^^^^^^^^^^^^ +> : ^ >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >y : { x?: number; } > : ^^^^^^^^^^^^^^^ >x : { x: number; } @@ -147,37 +147,37 @@ var r6 = foo(y, x); // { x?: number; }; var s1: (x: Object) => string; >s1 : (x: Object) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Object > : ^^^^^^ var s2: (x: string) => string; >s2 : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ var r7 = foo(s1, s2); // (x: Object) => string; >r7 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo(s1, s2) : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >s1 : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var r8 = foo(s2, s1); // (x: string) => string; >r8 : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >foo(s2, s1) : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >s2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s1 : (x: Object) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithObjectLiteralArgs.types b/tests/baselines/reference/genericCallWithObjectLiteralArgs.types index 53865aaec57bb..0c807037a68b3 100644 --- a/tests/baselines/reference/genericCallWithObjectLiteralArgs.types +++ b/tests/baselines/reference/genericCallWithObjectLiteralArgs.types @@ -3,7 +3,7 @@ === genericCallWithObjectLiteralArgs.ts === function foo(x: { bar: T; baz: T }) { >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^^^^^^ ^^^ >x : { bar: T; baz: T; } > : ^^^^^^^ ^^^^^^^ ^^^ >bar : T @@ -20,9 +20,9 @@ var r = foo({ bar: 1, baz: '' }); // error >r : { bar: number; baz: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo({ bar: 1, baz: '' }) : { bar: number; baz: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: 1, baz: '' } : { bar: number; baz: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar : number @@ -38,9 +38,9 @@ var r2 = foo({ bar: 1, baz: 1 }); // T = number >r2 : { bar: number; baz: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo({ bar: 1, baz: 1 }) : { bar: number; baz: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: 1, baz: 1 } : { bar: number; baz: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar : number @@ -54,29 +54,29 @@ var r2 = foo({ bar: 1, baz: 1 }); // T = number var r3 = foo({ bar: foo, baz: foo }); // T = typeof foo >r3 : { bar: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; baz: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >foo({ bar: foo, baz: foo }) : { bar: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; baz: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: foo, baz: foo } : { bar: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; baz: (x: { bar: T; baz: T; }) => { bar: T; baz: T; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >bar : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >baz : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : var r4 = foo({ bar: 1, baz: '' }); // T = Object >r4 : { bar: Object; baz: Object; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo({ bar: 1, baz: '' }) : { bar: Object; baz: Object; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: { bar: T; baz: T; }) => { bar: T; baz: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: 1, baz: '' } : { bar: number; baz: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar : number diff --git a/tests/baselines/reference/genericCallWithObjectLiteralArguments1.types b/tests/baselines/reference/genericCallWithObjectLiteralArguments1.types index f9053009207c4..14050295343b5 100644 --- a/tests/baselines/reference/genericCallWithObjectLiteralArguments1.types +++ b/tests/baselines/reference/genericCallWithObjectLiteralArguments1.types @@ -3,7 +3,7 @@ === genericCallWithObjectLiteralArguments1.ts === function foo(n: { x: T; y: T }, m: T) { return m; } >foo : (n: { x: T; y: T; }, m: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >n : { x: T; y: T; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -22,7 +22,7 @@ var x = foo({ x: 3, y: "" }, 4); >foo({ x: 3, y: "" }, 4) : number > : ^^^^^^ >foo : (n: { x: T; y: T; }, m: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: 3, y: "" } : { x: number; y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -42,7 +42,7 @@ var x2 = foo({ x: 3, y: "" }, 4); >foo({ x: 3, y: "" }, 4) : number > : ^^^^^^ >foo : (n: { x: T; y: T; }, m: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: 3, y: "" } : { x: number; y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -62,7 +62,7 @@ var x3 = foo({ x: 3, y: "" }, 4); >foo({ x: 3, y: "" }, 4) : string > : ^^^^^^ >foo : (n: { x: T; y: T; }, m: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: 3, y: "" } : { x: number; y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -82,7 +82,7 @@ var x4 = foo({ x: "", y: 4 }, ""); >foo({ x: "", y: 4 }, "") : number > : ^^^^^^ >foo : (n: { x: T; y: T; }, m: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: "", y: 4 } : { x: string; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string @@ -102,7 +102,7 @@ var x5 = foo({ x: "", y: 4 }, ""); >foo({ x: "", y: 4 }, "") : string > : ^^^^^^ >foo : (n: { x: T; y: T; }, m: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: "", y: 4 } : { x: string; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgs.types b/tests/baselines/reference/genericCallWithObjectTypeArgs.types index 411530855fc85..7c2552afbe6b7 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgs.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgs.types @@ -30,7 +30,7 @@ class X { function foo(t: X, t2: X) { >foo : (t: X, t2: X) => T -> : ^ ^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >t : X > : ^^^^ >t2 : X @@ -67,7 +67,7 @@ var r = foo(c1, d1); // error >foo(c1, d1) : C > : ^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -79,7 +79,7 @@ var r2 = foo(c1, c1); // ok >foo(c1, c1) : C > : ^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >c1 : X diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types index f1de6d97cf559..7fa1ee0e5b503 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types @@ -33,7 +33,7 @@ class Derived2 extends Base { // returns {}[] function f(a: { x: T; y: U }) { >f : (a: { x: T; y: U; }) => (T | U)[] -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >a : { x: T; y: U; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -64,7 +64,7 @@ var r = f({ x: new Derived(), y: new Derived2() }); // {}[] >f({ x: new Derived(), y: new Derived2() }) : (Derived | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^^^^ >f : (a: { x: T; y: U; }) => (T | U)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >{ x: new Derived(), y: new Derived2() } : { x: Derived; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Derived @@ -86,7 +86,7 @@ var r2 = f({ x: new Base(), y: new Derived2() }); // {}[] >f({ x: new Base(), y: new Derived2() }) : (Base | Derived2)[] > : ^^^^^^^^^^^^^^^^^^^ >f : (a: { x: T; y: U; }) => (T | U)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >{ x: new Base(), y: new Derived2() } : { x: Base; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Base @@ -105,7 +105,7 @@ var r2 = f({ x: new Base(), y: new Derived2() }); // {}[] function f2(a: { x: T; y: U }) { >f2 : (a: { x: T; y: U; }) => (x: T) => U -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >a : { x: T; y: U; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -115,7 +115,7 @@ function f2(a: { x: T; y: U }) { return (x: T) => a.y; >(x: T) => a.y : (x: T) => U -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >a.y : U @@ -128,11 +128,11 @@ function f2(a: { x: T; y: U }) { var r3 = f2({ x: new Derived(), y: new Derived2() }); // Derived => Derived2 >r3 : (x: Derived) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >f2({ x: new Derived(), y: new Derived2() }) : (x: Derived) => Derived2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f2 : (a: { x: T; y: U; }) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >{ x: new Derived(), y: new Derived2() } : { x: Derived; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Derived @@ -164,11 +164,11 @@ var i: I; var r4 = f2(i); // Base => Derived >r4 : (x: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >f2(i) : (x: Base) => Derived -> : ^^^^^^^^^^^^^^^^^^^^ +> : >f2 : (a: { x: T; y: U; }) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.types index 775fc65020a8a..f7327103129b9 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints.types @@ -37,7 +37,7 @@ class X { function foo(t: X, t2: X) { >foo : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^ >x : string > : ^^^^^^ >t : X @@ -76,7 +76,7 @@ var r = foo(c1, d1); >foo(c1, d1) : C > : ^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -88,7 +88,7 @@ var r2 = foo(c1, c1); >foo(c1, c1) : C > : ^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >c1 : X @@ -96,7 +96,7 @@ var r2 = foo(c1, c1); function foo2(t: X, t2: X) { >foo2 : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : X > : ^^^^ >t2 : X @@ -117,7 +117,7 @@ var r = foo2(c1, d1); >foo2(c1, d1) : C > : ^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -129,7 +129,7 @@ var r2 = foo2(c1, c1); >foo2(c1, c1) : C > : ^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >c1 : X diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types index b54fea678d76a..c637dbbb322c7 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types @@ -25,7 +25,7 @@ class Derived extends Base { function f(x: { foo: T; bar: T }) { >f : (x: { foo: T; bar: T; }) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : { foo: T; bar: T; } > : ^^^^^^^ ^^^^^^^ ^^^ >foo : T @@ -47,7 +47,7 @@ var r = f({ foo: new Base(), bar: new Derived() }); >f({ foo: new Base(), bar: new Derived() }) : Base > : ^^^^ >f : (x: { foo: T; bar: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: new Base(), bar: new Derived() } : { foo: Base; bar: Derived; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : Base @@ -69,7 +69,7 @@ var r2 = f({ foo: new Derived(), bar: new Derived() }); >f({ foo: new Derived(), bar: new Derived() }) : Derived > : ^^^^^^^ >f : (x: { foo: T; bar: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: new Derived(), bar: new Derived() } : { foo: Derived; bar: Derived; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : Derived @@ -93,7 +93,7 @@ interface I { } function f2(x: I) { >f2 : (x: I) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : I > : ^^^^ @@ -115,18 +115,18 @@ var r3 = f2(i); >f2(i) : Derived > : ^^^^^^^ >f2 : (x: I) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >i : I > : ^^^^^^^^^^ function f3(x: T, y: (a: T) => T) { >f3 : (x: T, y: (a: T) => T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >y : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -134,7 +134,7 @@ function f3(x: T, y: (a: T) => T) { >y(null) : T > : ^ >y : (a: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } var r4 = f3(new Base(), x => x); >r4 : Base @@ -142,13 +142,13 @@ var r4 = f3(new Base(), x => x); >f3(new Base(), x => x) : Base > : ^^^^ >f3 : (x: T, y: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >new Base() : Base > : ^^^^ >Base : typeof Base > : ^^^^^^^^^^^ >x => x : (x: Base) => Base -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : Base > : ^^^^ >x : Base @@ -160,13 +160,13 @@ var r5 = f3(new Derived(), x => x); >f3(new Derived(), x => x) : Derived > : ^^^^^^^ >f3 : (x: T, y: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >new Derived() : Derived > : ^^^^^^^ >Derived : typeof Derived > : ^^^^^^^^^^^^^^ >x => x : (x: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >x : Derived > : ^^^^^^^ >x : Derived @@ -176,15 +176,15 @@ var r6 = f3(null, null); // any >r6 : any >f3(null, null) : any >f3 : (x: T, y: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ var r7 = f3(null, x => x); // any >r7 : any >f3(null, x => x) : any >f3 : (x: T, y: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.types index f9d5778e7a388..b28b1c018392a 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.types @@ -34,7 +34,7 @@ class Derived2 extends Base { function f(a: { x: T; y: T }) { >f : (a: { x: T; y: T; }) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a : { x: T; y: T; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -57,7 +57,7 @@ var r1 = f({ x: new Derived(), y: new Derived2() }); // error because neither is >f({ x: new Derived(), y: new Derived2() }) : Derived > : ^^^^^^^ >f : (a: { x: T; y: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ x: new Derived(), y: new Derived2() } : { x: Derived; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Derived @@ -75,7 +75,7 @@ var r1 = f({ x: new Derived(), y: new Derived2() }); // error because neither is function f2(a: U) { >f2 : (a: U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^^^^^ >x : T > : ^ >y : T @@ -98,7 +98,7 @@ var r2 = f2({ x: new Derived(), y: new Derived2() }); // ok >f2({ x: new Derived(), y: new Derived2() }) : Base > : ^^^^ >f2 : (a: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ x: new Derived(), y: new Derived2() } : { x: Derived; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Derived @@ -120,7 +120,7 @@ var r3 = f2({ x: new Derived(), y: new Derived2() }); // ok >f2({ x: new Derived(), y: new Derived2() }) : Base > : ^^^^ >f2 : (a: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ x: new Derived(), y: new Derived2() } : { x: Derived; y: Derived2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Derived @@ -139,9 +139,9 @@ var r3 = f2({ x: new Derived(), y: new Derived2() }); // ok function f3(y: (a: T) => T, x: T) { >f3 : (y: (a: T) => T, x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >y : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >x : T @@ -151,7 +151,7 @@ function f3(y: (a: T) => T, x: T) { >y(null) : T > : ^ >y : (a: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } // all ok - second argument is processed before x is fixed @@ -161,9 +161,9 @@ var r4 = f3(x => x, new Base()); >f3(x => x, new Base()) : Base > : ^^^^ >f3 : (y: (a: T) => T, x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x => x : (x: Base) => Base -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : Base > : ^^^^ >x : Base @@ -179,9 +179,9 @@ var r5 = f3(x => x, new Derived()); >f3(x => x, new Derived()) : Derived > : ^^^^^^^ >f3 : (y: (a: T) => T, x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x => x : (x: Derived) => Derived -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >x : Derived > : ^^^^^^^ >x : Derived @@ -197,9 +197,9 @@ var r6 = f3(x => x, null); >f3(x => x, null) : any > : ^^^ >f3 : (y: (a: T) => T, x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x : any diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.types index 93eb3106eeac4..3b5ef23b91929 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.types @@ -27,7 +27,7 @@ class D { function foo(t: T, t2: U) { >foo : (t: T, t2: U) => (x: T) => U -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >t : T > : ^ >t2 : U @@ -35,7 +35,7 @@ function foo(t: T, t2: U) { return (x: T) => t2; >(x: T) => t2 : (x: T) => U -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >t2 : U @@ -52,11 +52,11 @@ var d: D; var r = foo(c, d); >r : (x: C) => D -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(c, d) : (x: C) => D -> : ^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >c : C > : ^ >d : D @@ -64,11 +64,11 @@ var r = foo(c, d); var r2 = foo(d, c); // error because C does not extend D >r2 : (x: D) => D -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(d, c) : (x: D) => D -> : ^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >d : D > : ^ >c : C @@ -76,11 +76,11 @@ var r2 = foo(d, c); // error because C does not extend D var r3 = foo(c, { x: '', foo: c }); >r3 : (x: C) => { x: string; foo: C; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(c, { x: '', foo: c }) : (x: C) => { x: string; foo: C; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >c : C > : ^ >{ x: '', foo: c } : { x: string; foo: C; } @@ -96,39 +96,39 @@ var r3 = foo(c, { x: '', foo: c }); var r4 = foo(null, null); >r4 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >foo(null, null) : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ var r5 = foo({}, null); >r5 : (x: {}) => any -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >foo({}, null) : (x: {}) => any -> : ^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >{} : {} > : ^^ var r6 = foo(null, {}); >r6 : (x: any) => {} -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >foo(null, {}) : (x: any) => {} -> : ^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >{} : {} > : ^^ var r7 = foo({}, {}); >r7 : (x: {}) => {} -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >foo({}, {}) : (x: {}) => {} -> : ^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >{} : {} > : ^^ >{} : {} @@ -136,11 +136,11 @@ var r7 = foo({}, {}); var r8 = foo(() => { }, () => { }); >r8 : (x: () => void) => () => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(() => { }, () => { }) : (x: () => void) => () => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ >() => { } : () => void @@ -148,11 +148,11 @@ var r8 = foo(() => { }, () => { }); var r9 = foo(() => { }, () => 1); >r9 : (x: () => void) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(() => { }, () => 1) : (x: () => void) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ >() => 1 : () => number @@ -166,11 +166,11 @@ function other() { var r4 = foo(c, d); >r4 : (x: C) => D -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(c, d) : (x: C) => D -> : ^^^^^^^^^^^ +> : >foo : (t: T_1, t2: U_1) => (x: T_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >c : C > : ^ >d : D @@ -178,11 +178,11 @@ function other() { var r5 = foo(c, d); // error >r5 : (x: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(c, d) : (x: T) => U -> : ^^^^^^^^^^^ +> : >foo : (t: T_1, t2: U_1) => (x: T_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >c : C > : ^ >d : D diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.types index 43a09c57f98a1..6126c781666d0 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.types @@ -27,7 +27,7 @@ class D { function foo(t: T, t2: U) { >foo : (t: T, t2: U) => (x: T) => U -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >t : T > : ^ >t2 : U @@ -35,7 +35,7 @@ function foo(t: T, t2: U) { return (x: T) => t2; >(x: T) => t2 : (x: T) => U -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >t2 : U @@ -52,11 +52,11 @@ var d: D; var r2 = foo(d, c); // the constraints are self-referencing, no downstream error >r2 : (x: D) => D -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(d, c) : (x: D) => D -> : ^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >d : D > : ^ >c : C @@ -64,11 +64,11 @@ var r2 = foo(d, c); // the constraints are self-referencing, no downstream error var r9 = foo(() => 1, () => { }); // the constraints are self-referencing, no downstream error >r9 : (x: () => number) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo(() => 1, () => { }) : (x: () => number) => () => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (t: T, t2: U) => (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -82,11 +82,11 @@ function other() { var r5 = foo(c, d); // error >r5 : (x: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo(c, d) : (x: T) => U -> : ^^^^^^^^^^^ +> : >foo : (t: T_1, t2: U_1) => (x: T_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >c : C > : ^ >d : D diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types index 65cc446cc236e..c28e6f2476334 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexers.types @@ -5,7 +5,7 @@ function foo(x: T) { >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -31,15 +31,15 @@ var r = foo(a); >r : { [x: string]: Object; [x: number]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(a) : { [x: string]: Object; [x: number]: Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : { [x: string]: Object; [x: number]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function other(arg: T) { >other : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -60,9 +60,9 @@ function other(arg: T) { >r2 : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: Object; [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types index 57d044340e027..1a555eba9d8fb 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types @@ -5,7 +5,7 @@ function foo(x: T) { >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -16,7 +16,7 @@ function foo(x: T) { function other(arg: T) { >other : (arg: T) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -37,16 +37,16 @@ function other(arg: T) { >r2 : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: Object; [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function other3(arg: T) { >other3 : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -67,9 +67,9 @@ function other3(arg: T) { >r2 : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: Object; [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: Object; [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.types index 61e300c4aefc6..b7e29f886e8f7 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.types @@ -5,7 +5,7 @@ function foo(x: T = null) { return x; } // ok >foo : (x?: T) => T -> : ^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >x : T > : ^ >x : T @@ -13,7 +13,7 @@ function foo(x: T = null) { return x; } // ok function foo2(x: T = undefined) { return x; } // ok >foo2 : (x?: T) => T -> : ^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >x : T > : ^ >undefined : undefined @@ -23,7 +23,7 @@ function foo2(x: T = undefined) { return x; } // ok function foo3(x: T = 1) { } // error >foo3 : (x?: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >x : T > : ^ >1 : 1 @@ -31,7 +31,7 @@ function foo3(x: T = 1) { } // error function foo4(x: T, y: U = x) { } // error >foo4 : (x: T, y?: U) => void -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -41,7 +41,7 @@ function foo4(x: T, y: U = x) { } // error function foo5(x: U, y: T = x) { } // ok >foo5 : (x: U, y?: T) => void -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : U > : ^ >y : T @@ -51,7 +51,7 @@ function foo5(x: U, y: T = x) { } // ok function foo6(x: T, y: U, z: V = y) { } // error >foo6 : (x: T, y: U, z?: V) => void -> : ^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -63,7 +63,7 @@ function foo6(x: T, y: U, z: V = y) { } // error function foo7(x: V, y: U = x) { } // should be ok >foo7 : (x: V, y?: U) => void -> : ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ >x : V > : ^ >y : U diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types index 99c06a26777ee..6f0e0e10ff806 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndNumericIndexer.types @@ -5,7 +5,7 @@ function foo(x: T) { >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -24,15 +24,15 @@ var r = foo(a); >r : { [x: number]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^ >foo(a) : { [x: number]: Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : { [x: number]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^ function other(arg: T) { >other : (arg: T) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -46,16 +46,16 @@ function other(arg: T) { >r2 : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ } function other2(arg: T) { >other2 : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -69,9 +69,9 @@ function other2(arg: T) { >r2 : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ @@ -88,7 +88,7 @@ function other2(arg: T) { function other3(arg: T) { >other3 : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -102,9 +102,9 @@ function other3(arg: T) { >r2 : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: number]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types index dfeae1021d87c..20f65486894c2 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndStringIndexer.types @@ -5,7 +5,7 @@ function foo(x: T) { >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -24,15 +24,15 @@ var r = foo(a); >r : { [x: string]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^ >foo(a) : { [x: string]: Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : { [x: string]: Date; } > : ^^^^^^^^^^^^^^^^^^^^^^ function other(arg: T) { >other : (arg: T) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -46,16 +46,16 @@ function other(arg: T) { >r2 : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ } function other2(arg: T) { >other2 : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -69,9 +69,9 @@ function other2(arg: T) { >r2 : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ @@ -88,7 +88,7 @@ function other2(arg: T) { function other3(arg: T) { >other3 : (arg: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >arg : T > : ^ @@ -102,9 +102,9 @@ function other3(arg: T) { >r2 : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >foo(b) : { [x: string]: T; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >foo : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >b : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments.types b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments.types index 3aa1fd4d173bb..c51d5f612a490 100644 --- a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments.types +++ b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments.types @@ -10,7 +10,7 @@ module NonGenericParameter { var a: { >a : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new(x: boolean): boolean; >x : boolean @@ -23,17 +23,17 @@ module NonGenericParameter { function foo4(cb: typeof a) { >foo4 : (cb: typeof a) => boolean -> : ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >cb : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ return new cb(null); >new cb(null) : boolean > : ^^^^^^^ >cb : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ } var r = foo4(a); @@ -41,14 +41,14 @@ module NonGenericParameter { > : ^^^^^^^ >foo4(a) : boolean > : ^^^^^^^ ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo4 : (cb: typeof a) => boolean +> : ^ ^^ ^^^^^^^^^^^^ >a : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ var b: { new (x: T): T }; >b : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -57,10 +57,10 @@ module NonGenericParameter { > : ^^^^^^^ >foo4(b) : boolean > : ^^^^^^^ ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo4 : (cb: typeof a) => boolean +> : ^ ^^ ^^^^^^^^^^^^ >b : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ } module GenericParameter { @@ -69,9 +69,9 @@ module GenericParameter { function foo5(cb: { new(x: T): string; new(x: number): T }) { >foo5 : (cb: { new (x: T): string; new (x: number): T; }) => { new (x: T): string; new (x: number): T; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ >cb : { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -79,12 +79,12 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ } var a: { >a : { new (x: boolean): string; new (x: number): boolean; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new (x: boolean): string; >x : boolean @@ -96,17 +96,17 @@ module GenericParameter { } var r5 = foo5(a); // new{} => string; new(x:number) => {} >r5 : { new (x: boolean): string; new (x: number): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo5(a) : { new (x: boolean): string; new (x: number): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { new (x: T): string; new (x: number): T; }) => { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >a : { new (x: boolean): string; new (x: number): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ var b: { new(x: T): string; new(x: number): T; } >b : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -114,19 +114,19 @@ module GenericParameter { var r7 = foo5(b); // new any => string; new(x:number) => any >r7 : { new (x: unknown): string; new (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo5(b) : { new (x: unknown): string; new (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { new (x: T): string; new (x: number): T; }) => { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >b : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { >foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -136,36 +136,36 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r8 = foo6(a); // error >r8 : { new (x: boolean): string; new (x: boolean, y?: boolean): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6(a) : { new (x: boolean): string; new (x: boolean, y?: boolean): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >a : { new (x: boolean): string; new (x: number): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ var r9 = foo6(b); // new any => string; new(x:any, y?:any) => string >r9 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6(b) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >b : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -175,24 +175,24 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r13 = foo7(1, b); // new any => string; new(x:any, y?:any) => string >r13 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, b) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >b : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ var c: { new (x: T): string; (x: number): T; } >c : { (x: number): T; new (x: T_1): string; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -200,7 +200,7 @@ module GenericParameter { var c2: { new (x: T): string; new(x: number): T; } >c2 : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -208,25 +208,25 @@ module GenericParameter { var r14 = foo7(1, c); // new any => string; new(x:any, y?:any) => string >r14 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, c) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >c : { (x: number): T; new (x: T_1): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^ var r15 = foo7(1, c2); // new any => string; new(x:any, y?:any) => string >r15 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, c2) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >c2 : { new (x: T): string; new (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.types b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.types index d727c57924100..59c61c62c1466 100644 --- a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.types +++ b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.types @@ -10,7 +10,7 @@ module NonGenericParameter { var a: { >a : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ new(x: boolean): boolean; >x : boolean @@ -23,32 +23,32 @@ module NonGenericParameter { function foo4(cb: typeof a) { >foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >cb : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ return cb; >cb : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ } var b: { new (x: T): U } >b : new (x: T) => U -> : ^^^^^ ^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ var r3 = foo4(b); // ok >r3 : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo4(b) : { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo4 : (cb: { new (x: boolean): boolean; new (x: string): string; }) => { new (x: boolean): boolean; new (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : +>foo4 : (cb: typeof a) => { new (x: boolean): boolean; new (x: string): string; } +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >b : new (x: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^ ^^ ^^^^^^ } module GenericParameter { @@ -57,9 +57,9 @@ module GenericParameter { function foo5(cb: { new(x: T): string; new(x: number): T }) { >foo5 : (cb: { new (x: T): string; new (x: number): T; }) => { new (x: T): string; new (x: number): T; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ >cb : { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -67,30 +67,30 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ } var a: { new (x: T): T }; >a : new (x: T) => T -> : ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ var r6 = foo5(a); // ok >r6 : { new (x: unknown): string; new (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo5(a) : { new (x: unknown): string; new (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { new (x: T): string; new (x: number): T; }) => { new (x: T): string; new (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ >a : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ function foo6(cb: { new(x: T): string; new(x: T, y?: T): string }) { >foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -100,12 +100,12 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var b: { new (x: T, y: T): string }; >b : new (x: T, y: T) => string -> : ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -113,21 +113,21 @@ module GenericParameter { var r10 = foo6(b); // error >r10 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6(b) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >b : new (x: T, y: T) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -137,24 +137,24 @@ module GenericParameter { return cb; >cb : { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r13 = foo7(1, a); // ok >r13 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, a) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >a : new (x: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^ ^^^^^^ var c: { new(x: T): number; new(x: number): T; } >c : { new (x: T): number; new (x: number): T_1; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -162,13 +162,13 @@ module GenericParameter { var r14 = foo7(1, c); // ok >r14 : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, c) : { new (x: unknown): string; new (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { new (x: T): string; new (x: T, y?: T): string; }) => { new (x: T): string; new (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >c : { new (x: T): number; new (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types index bdd177e3f92b7..08d4b279885e6 100644 --- a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types +++ b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments.types @@ -10,7 +10,7 @@ module NonGenericParameter { var a: { >a : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: boolean): boolean; >x : boolean @@ -23,36 +23,36 @@ module NonGenericParameter { function foo4(cb: typeof a) { >foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >cb : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ return cb; >cb : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ } var r = foo4(a); >r : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo4(a) : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ var r2 = foo4((x: T) => x); >r2 : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo4((x: T) => x) : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -60,13 +60,13 @@ module NonGenericParameter { var r4 = foo4(x => x); >r4 : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo4(x => x) : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any } @@ -77,9 +77,9 @@ module GenericParameter { function foo5(cb: { (x: T): string; (x: number): T }) { >foo5 : (cb: { (x: T): string; (x: number): T; }) => { (x: T): string; (x: number): T; } -> : ^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >cb : { (x: T): string; (x: number): T; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -87,24 +87,24 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ } var r5 = foo5(x => x); // any => string (+1 overload) [inferences are made for T, but lambda not contextually typed]. T is any >r5 : { (x: any): string; (x: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo5(x => x) : { (x: any): string; (x: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { (x: T): string; (x: number): T; }) => { (x: T): string; (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var a: { (x: T): string; (x: number): T; } >a : { (x: T): string; (x: number): T_1; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -112,19 +112,19 @@ module GenericParameter { var r7 = foo5(a); // any => string (+1 overload) >r7 : { (x: unknown): string; (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo5(a) : { (x: unknown): string; (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { (x: T): string; (x: number): T; }) => { (x: T): string; (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >a : { (x: T): string; (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ function foo6(cb: { (x: T): string; (x: T, y?: T): string }) { >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -134,30 +134,30 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r8 = foo6(x => x); // any => string (+1 overload) [inferences are made for T, but lambda not contextually typed]. T is any >r8 : { (x: any): string; (x: any, y?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo6(x => x) : { (x: any): string; (x: any, y?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var r9 = foo6((x: T) => ''); // any => string (+1 overload) >r9 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6((x: T) => '') : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >(x: T) => '' : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -165,13 +165,13 @@ module GenericParameter { var r11 = foo6((x: T, y?: T) => ''); // any => string (+1 overload) >r11 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6((x: T, y?: T) => '') : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >(x: T, y?: T) => '' : (x: T, y?: T) => string -> : ^ ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >x : T > : ^ >y : T @@ -181,11 +181,11 @@ module GenericParameter { function foo7(x:T, cb: { (x: T): string; (x: T, y?: T): string }) { >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^ ^^^^^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -195,34 +195,34 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r12 = foo7(1, (x) => x); // any => string (+1 overload) [inferences are made for T, but lambda not contextually typed] >r12 : { (x: any): string; (x: any, y?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ >foo7(1, (x) => x) : { (x: any): string; (x: any, y?: any): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >(x) => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any >x : any var r13 = foo7(1, (x: T) => ''); // any => string (+1 overload) [inferences are made for T, but lambda not contextually typed] >r13 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, (x: T) => '') : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -230,7 +230,7 @@ module GenericParameter { var a: { (x: T): string; (x: number): T; } >a : { (x: T): string; (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ >x : number @@ -238,13 +238,13 @@ module GenericParameter { var r14 = foo7(1, a); // any => string (+1 overload) [inferences are made for T, but lambda not contextually typed] >r14 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, a) : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >a : { (x: T): string; (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.types b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.types index a1adfae8efc6f..c82ae3cbdd87b 100644 --- a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.types +++ b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.types @@ -10,7 +10,7 @@ module NonGenericParameter { var a: { >a : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ (x: boolean): boolean; >x : boolean @@ -23,26 +23,26 @@ module NonGenericParameter { function foo4(cb: typeof a) { >foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >cb : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ return cb; >cb : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ } var r3 = foo4((x: T) => { var r: U; return r }); // ok >r3 : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >foo4((x: T) => { var r: U; return r }) : { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo4 : (cb: { (x: boolean): boolean; (x: string): string; }) => { (x: boolean): boolean; (x: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : +>foo4 : (cb: typeof a) => { (x: boolean): boolean; (x: string): string; } +> : ^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >(x: T) => { var r: U; return r } : (x: T) => U -> : ^ ^^^^^^^^ ^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >x : T > : ^ >r : U @@ -57,9 +57,9 @@ module GenericParameter { function foo5(cb: { (x: T): string; (x: number): T }) { >foo5 : (cb: { (x: T): string; (x: number): T; }) => { (x: T): string; (x: number): T; } -> : ^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >cb : { (x: T): string; (x: number): T; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -67,18 +67,18 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ } var r6 = foo5((x: T) => x); // ok >r6 : { (x: unknown): string; (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo5((x: T) => x) : { (x: unknown): string; (x: number): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo5 : (cb: { (x: T): string; (x: number): T; }) => { (x: T): string; (x: number): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -86,9 +86,9 @@ module GenericParameter { function foo6(cb: { (x: T): string; (x: T, y?: T): string }) { >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -98,18 +98,18 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r10 = foo6((x: T, y: T) => ''); // error >r10 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo6((x: T, y: T) => '') : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo6 : (cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >(x: T, y: T) => '' : (x: T, y: T) => string -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >y : T @@ -119,11 +119,11 @@ module GenericParameter { function foo7(x:T, cb: { (x: T): string; (x: T, y?: T): string }) { >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^ ^^^^^ ^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^ >x : T > : ^ >x : T @@ -133,20 +133,20 @@ module GenericParameter { return cb; >cb : { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ } var r13 = foo7(1, (x: T) => x); // ok >r13 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, (x: T) => x) : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -154,7 +154,7 @@ module GenericParameter { var a: { (x: T): number; (x: number): T; } >a : { (x: T): number; (x: number): T_1; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ >x : number @@ -162,13 +162,13 @@ module GenericParameter { var r14 = foo7(1, a); // ok >r14 : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo7(1, a) : { (x: unknown): string; (x: unknown, y?: unknown): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >foo7 : (x: T, cb: { (x: T): string; (x: T, y?: T): string; }) => { (x: T): string; (x: T, y?: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >1 : 1 > : ^ >a : { (x: T): number; (x: number): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericCallWithTupleType.types b/tests/baselines/reference/genericCallWithTupleType.types index 94b6b2cda0d15..9f882c577c0b3 100644 --- a/tests/baselines/reference/genericCallWithTupleType.types +++ b/tests/baselines/reference/genericCallWithTupleType.types @@ -13,7 +13,7 @@ var i1: I; var i2: I<{}, {}>; >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ // no error i1.tuple1 = ["foo", 5]; @@ -132,11 +132,11 @@ i2.tuple1 = ["foo", 5]; >i2.tuple1 = ["foo", 5] : [string, number] > : ^^^^^^^^^^^^^^^^ >i2.tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ >tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >["foo", 5] : [string, number] > : ^^^^^^^^^^^^^^^^ >"foo" : "foo" @@ -148,11 +148,11 @@ i2.tuple1 = ["foo", "bar"]; >i2.tuple1 = ["foo", "bar"] : [string, string] > : ^^^^^^^^^^^^^^^^ >i2.tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ >tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >["foo", "bar"] : [string, string] > : ^^^^^^^^^^^^^^^^ >"foo" : "foo" @@ -164,11 +164,11 @@ i2.tuple1 = [5, "bar"]; >i2.tuple1 = [5, "bar"] : [number, string] > : ^^^^^^^^^^^^^^^^ >i2.tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ >tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >[5, "bar"] : [number, string] > : ^^^^^^^^^^^^^^^^ >5 : 5 @@ -180,11 +180,11 @@ i2.tuple1 = [{}, {}]; >i2.tuple1 = [{}, {}] : [{}, {}] > : ^^^^^^^^ >i2.tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ >tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >[{}, {}] : [{}, {}] > : ^^^^^^^^ >{} : {} @@ -229,11 +229,11 @@ i2.tuple1 = [{}]; >i2.tuple1 = [{}] : [{}] > : ^^^^ >i2.tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^^^^^ ^ >i2 : I<{}, {}> -> : ^^^^^^^^^ +> : ^^^^^^ ^ >tuple1 : [{}, {}] -> : ^^^^^^^^ +> : ^ ^^ ^ >[{}] : [{}] > : ^^^^ >{} : {} diff --git a/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types b/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types index 9715d564cf8d6..a76ce05bec5a8 100644 --- a/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types +++ b/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types @@ -4,11 +4,11 @@ interface Thenable { then( >then : (onFulfilled: (value: Value) => V | Thenable) => Thenable -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ onFulfilled: (value: Value) => V | Thenable, >onFulfilled : (value: Value) => V | Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : Value > : ^^^^^ @@ -17,17 +17,17 @@ interface Thenable { const toThenable = (fn: (input: Input) => Result | Thenable) => >toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : >fn : (input: Input) => Result | Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : Input > : ^^^^^ (input: Input): Thenable => { >(input: Input): Thenable => { const result = fn(input) return { then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } }; } : (input: Input) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : Input > : ^^^^^ @@ -37,19 +37,19 @@ const toThenable = (fn: (input: Input) => Result | Thenablefn(input) : Result | Thenable > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >fn : (input: Input) => Result | Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >input : Input > : ^^^^^ return { >{ then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ then(onFulfilled: (value: Result) => V | Thenable) { >then : (onFulfilled: (value: Result) => V | Thenable) => Thenable -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : Result > : ^^^^^^ @@ -57,11 +57,11 @@ const toThenable = (fn: (input: Input) => Result | ThenabletoThenable(onFulfilled)(result as Result) : Thenable > : ^^^^^^^^^^^ >toThenable(onFulfilled) : (input: Result) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >result as Result : Result > : ^^^^^^ >result : Result | Thenable @@ -72,17 +72,17 @@ const toThenable = (fn: (input: Input) => Result | Thenable(fn: (input: Input) => Result | Thenable) => >toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ >(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : >fn : (input: Input) => Result | Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : Input > : ^^^^^ (input: Input): Thenable => { >(input: Input): Thenable => { const result = fn(input) return { then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } }; } : (input: Input) => Thenable -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : Input > : ^^^^^ @@ -92,29 +92,29 @@ const toThenableInferred = (fn: (input: Input) => Result | Thenab >fn(input) : Result | Thenable > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >fn : (input: Input) => Result | Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >input : Input > : ^^^^^ return { >{ then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ then(onFulfilled) { >then : (onFulfilled: (value: Result) => V | Thenable) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return toThenableInferred(onFulfilled)(result as Result) >toThenableInferred(onFulfilled)(result as Result) : Thenable > : ^^^^^^^^^^^ >toThenableInferred(onFulfilled) : (input: Result) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result as Result : Result > : ^^^^^^ >result : Result | Thenable diff --git a/tests/baselines/reference/genericCallWithoutArgs.types b/tests/baselines/reference/genericCallWithoutArgs.types index 0dea699c0b0ed..5cc71ee577575 100644 --- a/tests/baselines/reference/genericCallWithoutArgs.types +++ b/tests/baselines/reference/genericCallWithoutArgs.types @@ -3,7 +3,7 @@ === genericCallWithoutArgs.ts === function f(x: X, y: Y) { >f : (x: X, y: Y) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : X > : ^ >y : Y @@ -14,9 +14,9 @@ f. >f. : any > : ^^^ >f : (x: number, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >f : (x: X, y: Y) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ > : any > : ^^^ diff --git a/tests/baselines/reference/genericCallbackInvokedInsideItsContainingFunction1.types b/tests/baselines/reference/genericCallbackInvokedInsideItsContainingFunction1.types index cd046dc623ad3..cdff0a80bab9c 100644 --- a/tests/baselines/reference/genericCallbackInvokedInsideItsContainingFunction1.types +++ b/tests/baselines/reference/genericCallbackInvokedInsideItsContainingFunction1.types @@ -3,13 +3,13 @@ === genericCallbackInvokedInsideItsContainingFunction1.ts === function foo(x:T, y:U, f: (v: T) => U) { >foo : (x: T, y: U, f: (v: T) => U) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U > : ^ >f : (v: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : T > : ^ @@ -19,7 +19,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(1) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -29,7 +29,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(1) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -39,7 +39,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var r4 = f(null); >r4 : U @@ -47,7 +47,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var r11 = f(x); >r11 : U @@ -55,7 +55,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(x) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ @@ -65,7 +65,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(x) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ @@ -75,7 +75,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var r41 = f(null); >r41 : U @@ -83,7 +83,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var r12 = f(y); >r12 : U @@ -91,7 +91,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(y) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >y : U > : ^ @@ -101,7 +101,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(y) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >y : U > : ^ @@ -111,7 +111,7 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var r42 = f(null); >r42 : U @@ -119,5 +119,5 @@ function foo(x:T, y:U, f: (v: T) => U) { >f(null) : U > : ^ >f : (v: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } diff --git a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types index 48315d3c74d55..86b695281bf9d 100644 --- a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types +++ b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types @@ -8,9 +8,9 @@ module M { export interface I { subscribe(callback: (newValue: T) => void ): any; >subscribe : (callback: (newValue: T) => void) => any -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >callback : (newValue: T) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >newValue : T > : ^ } @@ -41,15 +41,15 @@ module M { _subscribe(viewModel: B): void { >_subscribe : (viewModel: B) => void -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >viewModel : B > : ^^^^ var f = (newValue: A) => { }; >f : (newValue: A) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(newValue: A) => { } : (newValue: A) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : >newValue : A > : ^^^^ @@ -67,24 +67,24 @@ module M { v.subscribe(f); >v.subscribe(f) : any >v.subscribe : (callback: (newValue: A) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >v : I> > : ^^^^^^^ >subscribe : (callback: (newValue: A) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >f : (newValue: A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ v.subscribe((newValue: A) => { }); >v.subscribe((newValue: A) => { }) : any >v.subscribe : (callback: (newValue: A) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >v : I> > : ^^^^^^^ >subscribe : (callback: (newValue: A) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(newValue: A) => { } : (newValue: A) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >newValue : A > : ^^^^ } diff --git a/tests/baselines/reference/genericCapturingFunctionNarrowing.types b/tests/baselines/reference/genericCapturingFunctionNarrowing.types index ad69353df0478..193425904b177 100644 --- a/tests/baselines/reference/genericCapturingFunctionNarrowing.types +++ b/tests/baselines/reference/genericCapturingFunctionNarrowing.types @@ -3,7 +3,7 @@ === genericCapturingFunctionNarrowing.ts === function needsToNarrowTheType(thing: First | SubFirst | SubFirstMore | Second) { >needsToNarrowTheType : (thing: First | SubFirst | SubFirstMore | Second) => void -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -17,7 +17,7 @@ function needsToNarrowTheTypehasAFoo(thing) : boolean > : ^^^^^^^ >hasAFoo : (value: First | Second) => value is First -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >thing : First | Second | SubFirst | SubFirstMore > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -25,11 +25,11 @@ function needsToNarrowTheTypeconsole.log(thing.foo) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >thing.foo : string > : ^^^^^^ >thing : First | SubFirst | SubFirstMore @@ -43,11 +43,11 @@ function needsToNarrowTheTypeconsole.log(thing.bar) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >thing.bar : string > : ^^^^^^ >thing : Second @@ -58,7 +58,7 @@ function needsToNarrowTheTypehasAFoo : (value: First | Second) => value is First -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : First | Second > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericChainedCalls.types b/tests/baselines/reference/genericChainedCalls.types index 50d69014519e7..29332f2764081 100644 --- a/tests/baselines/reference/genericChainedCalls.types +++ b/tests/baselines/reference/genericChainedCalls.types @@ -4,9 +4,9 @@ interface I1 { func(callback: (value: T) => U): I1; >func : (callback: (value: T) => U) => I1 -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >callback : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ } @@ -21,37 +21,37 @@ var r1 = v1.func(num => num.toString()) >v1.func(num => num.toString()) .func(str => str.length) // error, number doesn't have a length .func(num => num.toString()) : I1 > : ^^^^^^^^^^ >v1.func(num => num.toString()) .func(str => str.length) // error, number doesn't have a length .func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v1.func(num => num.toString()) .func(str => str.length) : I1 > : ^^^^^^^^^^ >v1.func(num => num.toString()) .func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v1.func(num => num.toString()) : I1 > : ^^^^^^^^^^ >v1.func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v1 : I1 > : ^^^^^^^^^^ >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >num => num.toString() : (num: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >num.toString() : string > : ^^^^^^ >num.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >num : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ .func(str => str.length) // error, number doesn't have a length >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >str => str.length : (str: number) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >str : number > : ^^^^^^ >str.length : any @@ -63,19 +63,19 @@ var r1 = v1.func(num => num.toString()) .func(num => num.toString()) >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >num => num.toString() : (num: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >num.toString() : string > : ^^^^^^ >num.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >num : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var s1 = v1.func(num => num.toString()) >s1 : I1 @@ -83,23 +83,23 @@ var s1 = v1.func(num => num.toString()) >v1.func(num => num.toString()) : I1 > : ^^^^^^^^^^ >v1.func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v1 : I1 > : ^^^^^^^^^^ >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >num => num.toString() : (num: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >num.toString() : string > : ^^^^^^ >num.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >num : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var s2 = s1.func(str => str.length) // should also error >s2 : I1 @@ -107,13 +107,13 @@ var s2 = s1.func(str => str.length) // should also error >s1.func(str => str.length) : I1 > : ^^^^^^^^^^ >s1.func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s1 : I1 > : ^^^^^^^^^^ >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >str => str.length : (str: number) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >str : number > : ^^^^^^ >str.length : any @@ -129,21 +129,21 @@ var s3 = s2.func(num => num.toString()) >s2.func(num => num.toString()) : I1 > : ^^^^^^^^^^ >s2.func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s2 : I1 > : ^^^^^^^^^^ >func : (callback: (value: number) => U) => I1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >num => num.toString() : (num: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >num : number > : ^^^^^^ >num.toString() : string > : ^^^^^^ >num.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >num : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericClassExpressionInFunction.types b/tests/baselines/reference/genericClassExpressionInFunction.types index 3d812c64d9f83..48d52c82a0c42 100644 --- a/tests/baselines/reference/genericClassExpressionInFunction.types +++ b/tests/baselines/reference/genericClassExpressionInFunction.types @@ -49,7 +49,7 @@ class K extends B1() { >K : K > : ^ >B1() : B1.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ >B1 : () => typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -61,7 +61,7 @@ class C extends (new B2().anon) { >C : C > : ^ >(new B2().anon) : B2.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ >new B2().anon : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >new B2() : B2 @@ -87,7 +87,7 @@ class S extends b3Number { >S : S > : ^ >b3Number : B3.Inner -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^ ^^^^^^ nom: string; >nom : string diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types index 34fe7c3151782..8df471267cb64 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types @@ -15,7 +15,7 @@ interface KnockoutObservableBase { interface KnockoutObservable extends KnockoutObservableBase { equalityComparer(a: T, b: T): boolean; >equalityComparer : (a: T, b: T) => boolean -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : T @@ -33,7 +33,7 @@ interface KnockoutObservable extends KnockoutObservableBase { interface KnockoutObservableArray extends KnockoutObservable { indexOf(searchElement: T, fromIndex?: number): number; >indexOf : (searchElement: T, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : T > : ^ >fromIndex : number @@ -41,7 +41,7 @@ interface KnockoutObservableArray extends KnockoutObservable { slice(start: number, end?: number): T[]; >slice : (start: number, end?: number) => T[] -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -49,7 +49,7 @@ interface KnockoutObservableArray extends KnockoutObservable { splice(start: number, deleteCount?: number, ...items: T[]): T[]; >splice : (start: number, deleteCount?: number, ...items: T[]) => T[] -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >start : number > : ^^^^^^ >deleteCount : number @@ -63,7 +63,7 @@ interface KnockoutObservableArray extends KnockoutObservable { push(...items: T[]): void; >push : (...items: T[]) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -73,7 +73,7 @@ interface KnockoutObservableArray extends KnockoutObservable { unshift(...items: T[]): number; >unshift : (...items: T[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -83,9 +83,9 @@ interface KnockoutObservableArray extends KnockoutObservable { sort(compareFunction?: (a: T, b: T) => number): void; >sort : (compareFunction?: (a: T, b: T) => number) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >compareFunction : (a: T, b: T) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : T @@ -93,7 +93,7 @@ interface KnockoutObservableArray extends KnockoutObservable { replace(oldItem: T, newItem: T): void; >replace : (oldItem: T, newItem: T) => void -> : ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >oldItem : T > : ^ >newItem : T @@ -101,25 +101,25 @@ interface KnockoutObservableArray extends KnockoutObservable { remove(item: T): T[]; >remove : (item: T) => T[] -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >item : T > : ^ removeAll(items?: T[]): T[]; >removeAll : (items?: T[]) => T[] -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >items : T[] > : ^^^ destroy(item: T): void; >destroy : (item: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >item : T > : ^ destroyAll(items?: T[]): void; >destroyAll : (items?: T[]) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >items : T[] > : ^^^ } @@ -180,7 +180,7 @@ module Portal.Controls.Validators { public _validate(value: TValue): number {return 0 } >_validate : (value: TValue) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : TValue > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/genericClassWithFunctionTypedMemberArguments.types b/tests/baselines/reference/genericClassWithFunctionTypedMemberArguments.types index d2cbb88ba8586..292a6ce883593 100644 --- a/tests/baselines/reference/genericClassWithFunctionTypedMemberArguments.types +++ b/tests/baselines/reference/genericClassWithFunctionTypedMemberArguments.types @@ -14,9 +14,9 @@ module ImmediatelyFix { foo(x: (a: T) => T) { >foo : (x: (a: T) => T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -24,7 +24,7 @@ module ImmediatelyFix { >x(null) : T > : ^ >x : (a: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } } @@ -42,13 +42,13 @@ module ImmediatelyFix { >c.foo((x: U) => '') : unknown > : ^^^^^^^ >c.foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >(x: U) => '' : (x: U) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : U > : ^ >'' : "" @@ -60,13 +60,13 @@ module ImmediatelyFix { >c.foo((x: U) => '') : string > : ^^^^^^ >c.foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >(x: U) => '' : (x: U) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : U > : ^ >'' : "" @@ -78,13 +78,13 @@ module ImmediatelyFix { >c.foo(x => '') : unknown > : ^^^^^^^ >c.foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo : (x: (a: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ >x => '' : (x: unknown) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ >'' : "" @@ -96,9 +96,9 @@ module ImmediatelyFix { foo(x: (a: T) => T) { >foo : (x: (a: T) => T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : (a: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -106,7 +106,7 @@ module ImmediatelyFix { >x(null) : T > : ^ >x : (a: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ } } @@ -124,13 +124,13 @@ module ImmediatelyFix { >c2.foo((x: U) => 1) : number > : ^^^^^^ >c2.foo : (x: (a: number) => number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c2 : C2 > : ^^^^^^^^^^ >foo : (x: (a: number) => number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: U) => 1 : (x: U) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >x : U > : ^ >1 : 1 @@ -142,13 +142,13 @@ module ImmediatelyFix { >c2.foo(x => 1) : number > : ^^^^^^ >c2.foo : (x: (a: number) => number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c2 : C2 > : ^^^^^^^^^^ >foo : (x: (a: number) => number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => 1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -165,11 +165,11 @@ module WithCandidates { foo2(x: T, cb: (a: T) => U) { >foo2 : (x: T, cb: (a: T) => U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : (a: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ @@ -177,7 +177,7 @@ module WithCandidates { >cb(x) : U > : ^ >cb : (a: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ } @@ -193,15 +193,15 @@ module WithCandidates { >c.foo2(1, function (a: Z) { return '' }) : string > : ^^^^^^ >c.foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >1 : 1 > : ^ >function (a: Z) { return '' } : (a: Z) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >'' : "" @@ -213,15 +213,15 @@ module WithCandidates { >c.foo2(1, (a) => '') : string > : ^^^^^^ >c.foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >1 : 1 > : ^ >(a) => '' : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" @@ -233,15 +233,15 @@ module WithCandidates { >c.foo2('', (a: Z) => 1) : number > : ^^^^^^ >c.foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo2 : (x: T, cb: (a: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^ >'' : "" > : ^^ >(a: Z) => 1 : (a: Z) => number -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >1 : 1 @@ -253,11 +253,11 @@ module WithCandidates { foo3(x: T, cb: (a: T) => U, y: U) { >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^^^^ ^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : (a: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >y : U @@ -267,7 +267,7 @@ module WithCandidates { >cb(x) : U > : ^ >cb : (a: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ } @@ -283,15 +283,15 @@ module WithCandidates { >c2.foo3(1, (a: Z) => '', '') : string > : ^^^^^^ >c2.foo3 : (x: number, cb: (a: number) => string, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >c2 : C2 > : ^^^^^^^^^^^^^^^^^^ >foo3 : (x: number, cb: (a: number) => string, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >(a: Z) => '' : (a: Z) => string -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : Z > : ^ >'' : "" @@ -305,15 +305,15 @@ module WithCandidates { >c2.foo3(1, function (a) { return '' }, '') : string > : ^^^^^^ >c2.foo3 : (x: number, cb: (a: number) => string, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >c2 : C2 > : ^^^^^^^^^^^^^^^^^^ >foo3 : (x: number, cb: (a: number) => string, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >function (a) { return '' } : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" @@ -327,11 +327,11 @@ module WithCandidates { foo3(x: T, cb: (a: T) => U, y: U) { >foo3 : (x: T, cb: (a: T) => U, y: U) => U -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >cb : (a: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ >y : U @@ -341,7 +341,7 @@ module WithCandidates { >cb(x) : U > : ^ >cb : (a: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ } @@ -352,7 +352,7 @@ module WithCandidates { function other(t: T, u: U) { >other : (t: T, u: U) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -364,15 +364,15 @@ module WithCandidates { >c.foo2(1, (x: T) => '') : string > : ^^^^^^ >c.foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -384,15 +384,15 @@ module WithCandidates { >c.foo2(1, (x) => '') : string > : ^^^^^^ >c.foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo2 : (x: T_1, cb: (a: T_1) => U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >(x) => '' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" @@ -404,15 +404,15 @@ module WithCandidates { >c3.foo3(1, (x: T) => '', '') : string > : ^^^^^^ >c3.foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >c3 : C3 > : ^^^^^^^^^^^^^^^^^^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -426,15 +426,15 @@ module WithCandidates { >c3.foo3(1, (x: T) => '', 1) : string > : ^^^^^^ >c3.foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >c3 : C3 > : ^^^^^^^^^^^^^^^^^^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >1 : 1 > : ^ >(x: T) => '' : (x: T) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : T > : ^ >'' : "" @@ -448,15 +448,15 @@ module WithCandidates { >c3.foo3(1, function (a) { return '' }, 1) : 1 > : ^ >c3.foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >c3 : C3 > : ^^^^^^^^^^^^^^^^^^ >foo3 : (x: T_1, cb: (a: T_1) => U_1, y: U_1) => U_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >1 : 1 > : ^ >function (a) { return '' } : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.types b/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.types index b7597d17826ac..30b04fcfd34ef 100644 --- a/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.types +++ b/tests/baselines/reference/genericClassWithObjectTypeArgsAndConstraints.types @@ -47,7 +47,7 @@ module Class { foo(t: X, t2: X) { >foo : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^ >x : string > : ^^^^^^ >t : X @@ -95,11 +95,11 @@ module Class { >g.foo(c1, d1) : C > : ^ >g.foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >g : G<{ x: string; y: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -111,11 +111,11 @@ module Class { >g.foo(c1, c1) : C > : ^ >g.foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >g : G<{ x: string; y: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >c1 : X > : ^^^^ >c1 : X @@ -127,7 +127,7 @@ module Class { foo2(t: X, t2: X) { >foo2 : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >t : X > : ^^^^ >t2 : X @@ -152,11 +152,11 @@ module Class { >g2.foo2(c1, d1) : C > : ^ >g2.foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >g2 : G2 > : ^^^^^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -168,11 +168,11 @@ module Class { >g2.foo2(c1, c1) : C > : ^ >g2.foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >g2 : G2 > : ^^^^^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ >c1 : X > : ^^^^ >c1 : X @@ -189,7 +189,7 @@ module Interface { foo(t: X, t2: X): T; >foo : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >t : X @@ -228,11 +228,11 @@ module Interface { >g.foo(c1, d1) : C > : ^ >g.foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >g : G<{ x: string; y: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -244,11 +244,11 @@ module Interface { >g.foo(c1, c1) : C > : ^ >g.foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >g : G<{ x: string; y: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >c1 : X @@ -257,7 +257,7 @@ module Interface { interface G2 { foo2(t: X, t2: X): T; >foo2 : (t: X, t2: X) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : X > : ^^^^ >t2 : X @@ -274,11 +274,11 @@ module Interface { >g2.foo2(c1, d1) : C > : ^ >g2.foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >g2 : G2 > : ^^^^^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >d1 : X @@ -290,11 +290,11 @@ module Interface { >g2.foo2(c1, c1) : C > : ^ >g2.foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >g2 : G2 > : ^^^^^ >foo2 : (t: X, t2: X) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >c1 : X > : ^^^^ >c1 : X diff --git a/tests/baselines/reference/genericClassWithStaticFactory.types b/tests/baselines/reference/genericClassWithStaticFactory.types index 0bdd9a191310c..bb8ed1257ea52 100644 --- a/tests/baselines/reference/genericClassWithStaticFactory.types +++ b/tests/baselines/reference/genericClassWithStaticFactory.types @@ -45,7 +45,7 @@ module Editor { public add(data: T): List { >add : (data: T) => List -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >data : T > : ^ @@ -55,7 +55,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List > : ^^^^^^^ >this.listFactory.MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.listFactory : ListFactory > : ^^^^^^^^^^^^^^ >this : this @@ -63,7 +63,7 @@ module Editor { >listFactory : ListFactory > : ^^^^^^^^^^^^^^ >MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >data : T > : ^ @@ -246,7 +246,7 @@ module Editor { public pushEntry(entry: List): void { >pushEntry : (entry: List) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >entry : List > : ^^^^^^^ @@ -321,7 +321,7 @@ module Editor { public push(data: T): void { >push : (data: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >data : T > : ^ @@ -331,7 +331,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List > : ^^^^^^^ >this.listFactory.MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.listFactory : ListFactory > : ^^^^^^^^^^^^^^ >this : this @@ -339,7 +339,7 @@ module Editor { >listFactory : ListFactory > : ^^^^^^^^^^^^^^ >MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >data : T > : ^ @@ -426,7 +426,7 @@ module Editor { public popEntry(head: List): List { >popEntry : (head: List) => List -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >head : List > : ^^^^^^^ @@ -449,7 +449,7 @@ module Editor { >this.listFactory.RemoveEntry(this.next) : List > : ^^^^^^^ >this.listFactory.RemoveEntry : (entry: List) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.listFactory : ListFactory > : ^^^^^^^^^^^^^^ >this : this @@ -457,7 +457,7 @@ module Editor { >listFactory : ListFactory > : ^^^^^^^^^^^^^^ >RemoveEntry : (entry: List) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.next : List > : ^^^^^^^ >this : this @@ -469,7 +469,7 @@ module Editor { public insertEntry(entry: List): List { >insertEntry : (entry: List) => List -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >entry : List > : ^^^^^^^ @@ -548,7 +548,7 @@ module Editor { public insertAfter(data: T): List { >insertAfter : (data: T) => List -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >data : T > : ^ @@ -558,7 +558,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List > : ^^^^^^^ >this.listFactory.MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.listFactory : ListFactory > : ^^^^^^^^^^^^^^ >this : this @@ -566,7 +566,7 @@ module Editor { >listFactory : ListFactory > : ^^^^^^^^^^^^^^ >MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >data : T > : ^ @@ -633,7 +633,7 @@ module Editor { public insertEntryBefore(entry: List): List { >insertEntryBefore : (entry: List) => List -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >entry : List > : ^^^^^^^ @@ -700,7 +700,7 @@ module Editor { public insertBefore(data: T): List { >insertBefore : (data: T) => List -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >data : T > : ^ @@ -710,7 +710,7 @@ module Editor { >this.listFactory.MakeEntry(data) : List > : ^^^^^^^ >this.listFactory.MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >this.listFactory : ListFactory > : ^^^^^^^^^^^^^^ >this : this @@ -718,7 +718,7 @@ module Editor { >listFactory : ListFactory > : ^^^^^^^^^^^^^^ >MakeEntry : (data: T_1) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >data : T > : ^ @@ -726,11 +726,11 @@ module Editor { >this.insertEntryBefore(entry) : List > : ^^^^^^^ >this.insertEntryBefore : (entry: List) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >this : this > : ^^^^ >insertEntryBefore : (entry: List) => List -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >entry : List > : ^^^^^^^ } @@ -785,7 +785,7 @@ module Editor { public MakeEntry(data: T): List { >MakeEntry : (data: T) => List -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >data : T > : ^ @@ -832,7 +832,7 @@ module Editor { public RemoveEntry(entry: List): List { >RemoveEntry : (entry: List) => List -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >entry : List > : ^^^^^^^ diff --git a/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types b/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types index 8f917e584da81..8c10aa98896a3 100644 --- a/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types +++ b/tests/baselines/reference/genericClassWithStaticsUsingTypeArguments.types @@ -8,9 +8,9 @@ class Foo { static a = (n: T) => { }; >a : (n: T) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >(n: T) => { } : (n: T) => void -> : ^^^^^^^^^^^^^^ +> : >n : T > : ^ @@ -34,9 +34,9 @@ class Foo { >((x: T) => x || undefined)(null) : any > : ^^^ >((x: T) => x || undefined) : (x: T) => any -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >(x: T) => x || undefined : (x: T) => any -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : T > : ^ >x || undefined : any @@ -48,15 +48,15 @@ class Foo { static e = function (x: T) { return null; } >e : (x: T) => any -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >function (x: T) { return null; } : (x: T) => any -> : ^^^^^^^^^^^^^ +> : >x : T > : ^ static f(xs: T[]): T[] { >f : (xs: T[]) => T[] -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >xs : T[] > : ^^^ diff --git a/tests/baselines/reference/genericClasses4.types b/tests/baselines/reference/genericClasses4.types index 62a1545cd2075..df32a96d4bdf0 100644 --- a/tests/baselines/reference/genericClasses4.types +++ b/tests/baselines/reference/genericClasses4.types @@ -14,9 +14,9 @@ class Vec2_T fmap(f: (a: A) => B): Vec2_T { >fmap : (f: (a: A) => B) => Vec2_T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ @@ -26,7 +26,7 @@ class Vec2_T >f(this.x) : B > : ^ >f : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this.x : A > : ^ >this : this @@ -40,7 +40,7 @@ class Vec2_T >f(this.y) : B > : ^ >f : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >this.y : A > : ^ >this : this @@ -66,9 +66,9 @@ class Vec2_T } apply(f: Vec2_T<(a: A) => B>): Vec2_T { >apply : (f: Vec2_T<(a: A) => B>) => Vec2_T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >f : Vec2_T<(a: A) => B> -> : ^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^ ^^ ^^^^^ ^ >a : A > : ^ @@ -78,11 +78,11 @@ class Vec2_T >f.x(this.x) : B > : ^ >f.x : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >f : Vec2_T<(a: A) => B> -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^ >x : (a: A) => B -> : ^^^^^^^^^^^ +> : >this.x : A > : ^ >this : this @@ -96,11 +96,11 @@ class Vec2_T >f.y(this.y) : B > : ^ >f.y : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >f : Vec2_T<(a: A) => B> -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^ >y : (a: A) => B -> : ^^^^^^^^^^^ +> : >this.y : A > : ^ >this : this diff --git a/tests/baselines/reference/genericClassesInModule2.types b/tests/baselines/reference/genericClassesInModule2.types index 706b8fdb73fb8..2ed4942f0bf6d 100644 --- a/tests/baselines/reference/genericClassesInModule2.types +++ b/tests/baselines/reference/genericClassesInModule2.types @@ -7,7 +7,7 @@ export class A{ constructor( public callback: (self: A) => void) { >callback : (self: A) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >self : A > : ^^^^^ @@ -23,9 +23,9 @@ export class A{ } AAA( callback: (self: A) => void) { >AAA : (callback: (self: A) => void) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >callback : (self: A) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >self : A > : ^^^^^ @@ -52,7 +52,7 @@ export interface C{ new(callback: (self: C) => void) >callback : (self: C) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >self : C > : ^^^^^ } diff --git a/tests/baselines/reference/genericClassesRedeclaration.types b/tests/baselines/reference/genericClassesRedeclaration.types index d895618617a19..559e72a1915a1 100644 --- a/tests/baselines/reference/genericClassesRedeclaration.types +++ b/tests/baselines/reference/genericClassesRedeclaration.types @@ -21,7 +21,7 @@ declare module TypeScript { add(key: string, data: T): boolean; >add : { (key: string, data: T): boolean; (key: string, data: T): boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >key : string > : ^^^^^^ >data : T @@ -29,7 +29,7 @@ declare module TypeScript { addOrUpdate(key: string, data: T): boolean; >addOrUpdate : { (key: string, data: T): boolean; (key: string, data: T): boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >key : string > : ^^^^^^ >data : T @@ -37,9 +37,9 @@ declare module TypeScript { map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : { (fn: (k: string, value: T, context: any) => void, context: any): void; (fn: (k: string, value: T, context: any) => void, context: any): void; } -> : ^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -51,9 +51,9 @@ declare module TypeScript { every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : { (fn: (k: string, value: T, context: any) => void, context: any): boolean; (fn: (k: string, value: T, context: any) => void, context: any): boolean; } -> : ^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -65,9 +65,9 @@ declare module TypeScript { some(fn: (k: string, value: T, context: any) => void, context: any): boolean; >some : { (fn: (k: string, value: T, context: any) => void, context: any): boolean; (fn: (k: string, value: T, context: any) => void, context: any): boolean; } -> : ^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -83,7 +83,7 @@ declare module TypeScript { lookup(key: string): T; >lookup : { (key: string): T; (key: string): T; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^ >key : string > : ^^^^^^ } @@ -105,7 +105,7 @@ declare module TypeScript { public add(key: string, data: T): boolean; >add : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -113,7 +113,7 @@ declare module TypeScript { public addOrUpdate(key: string, data: T): boolean; >addOrUpdate : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -121,9 +121,9 @@ declare module TypeScript { public map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : (fn: (k: string, value: T, context: any) => void, context: any) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -135,9 +135,9 @@ declare module TypeScript { public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -149,9 +149,9 @@ declare module TypeScript { public some(fn: (k: string, value: T, context: any) => void, context: any): boolean; >some : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -167,13 +167,13 @@ declare module TypeScript { public lookup(key: string): T; >lookup : (key: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ public remove(key: string): void; >remove : (key: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ } @@ -189,7 +189,7 @@ declare module TypeScript { public add(key: string, data: T): boolean; >add : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -197,7 +197,7 @@ declare module TypeScript { public addOrUpdate(key: string, data: T): boolean; >addOrUpdate : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -205,9 +205,9 @@ declare module TypeScript { public map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : (fn: (k: string, value: T, context: any) => void, context: any) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -219,9 +219,9 @@ declare module TypeScript { public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -233,9 +233,9 @@ declare module TypeScript { public some(fn: (k: string, value: any, context: any) => void, context: any): boolean; >some : (fn: (k: string, value: any, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: any, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : any @@ -247,7 +247,7 @@ declare module TypeScript { public lookup(key: string): T; >lookup : (key: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ } @@ -273,7 +273,7 @@ declare module TypeScript { add(key: string, data: T): boolean; >add : { (key: string, data: T): boolean; (key: string, data: T): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >key : string > : ^^^^^^ >data : T @@ -281,7 +281,7 @@ declare module TypeScript { addOrUpdate(key: string, data: T): boolean; >addOrUpdate : { (key: string, data: T): boolean; (key: string, data: T): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >key : string > : ^^^^^^ >data : T @@ -289,9 +289,9 @@ declare module TypeScript { map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : { (fn: (k: string, value: T, context: any) => void, context: any): void; (fn: (k: string, value: T, context: any) => void, context: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -303,9 +303,9 @@ declare module TypeScript { every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : { (fn: (k: string, value: T, context: any) => void, context: any): boolean; (fn: (k: string, value: T, context: any) => void, context: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -317,9 +317,9 @@ declare module TypeScript { some(fn: (k: string, value: T, context: any) => void, context: any): boolean; >some : { (fn: (k: string, value: T, context: any) => void, context: any): boolean; (fn: (k: string, value: T, context: any) => void, context: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -335,7 +335,7 @@ declare module TypeScript { lookup(key: string): T; >lookup : { (key: string): T; (key: string): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^ ^^ ^^^ ^^^ >key : string > : ^^^^^^ } @@ -357,7 +357,7 @@ declare module TypeScript { public add(key: string, data: T): boolean; >add : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -365,7 +365,7 @@ declare module TypeScript { public addOrUpdate(key: string, data: T): boolean; >addOrUpdate : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -373,9 +373,9 @@ declare module TypeScript { public map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : (fn: (k: string, value: T, context: any) => void, context: any) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -387,9 +387,9 @@ declare module TypeScript { public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -401,9 +401,9 @@ declare module TypeScript { public some(fn: (k: string, value: T, context: any) => void, context: any): boolean; >some : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -419,13 +419,13 @@ declare module TypeScript { public lookup(key: string): T; >lookup : (key: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ public remove(key: string): void; >remove : (key: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ } @@ -441,7 +441,7 @@ declare module TypeScript { public add(key: string, data: T): boolean; >add : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -449,7 +449,7 @@ declare module TypeScript { public addOrUpdate(key: string, data: T): boolean; >addOrUpdate : (key: string, data: T) => boolean -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >key : string > : ^^^^^^ >data : T @@ -457,9 +457,9 @@ declare module TypeScript { public map(fn: (k: string, value: T, context: any) => void, context: any): void; >map : (fn: (k: string, value: T, context: any) => void, context: any) => void -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -471,9 +471,9 @@ declare module TypeScript { public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; >every : (fn: (k: string, value: T, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: T, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : T @@ -485,9 +485,9 @@ declare module TypeScript { public some(fn: (k: string, value: any, context: any) => void, context: any): boolean; >some : (fn: (k: string, value: any, context: any) => void, context: any) => boolean -> : ^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (k: string, value: any, context: any) => void -> : ^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >k : string > : ^^^^^^ >value : any @@ -499,7 +499,7 @@ declare module TypeScript { public lookup(key: string): T; >lookup : (key: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/genericCombinators2.types b/tests/baselines/reference/genericCombinators2.types index 6922ba8e15c93..7c5397e7d20c8 100644 --- a/tests/baselines/reference/genericCombinators2.types +++ b/tests/baselines/reference/genericCombinators2.types @@ -8,7 +8,7 @@ interface Collection { add(x: T, y: U): void; >add : (x: T, y: U) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -16,7 +16,7 @@ interface Collection { remove(x: T, y: U): boolean; >remove : (x: T, y: U) => boolean -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -26,11 +26,11 @@ interface Collection { interface Combinators { map(c: Collection, f: (x: T, y: U) => any): Collection; >map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T_1, y: U_1) => V): Collection; } -> : ^^^ ^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >c : Collection > : ^^^^^^^^^^^^^^^^ >f : (x: T, y: U) => any -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -38,11 +38,11 @@ interface Combinators { map(c: Collection, f: (x: T, y: U) => V): Collection; >map : { (c: Collection, f: (x: T_1, y: U_1) => any): Collection; (c: Collection, f: (x: T, y: U) => V): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : Collection > : ^^^^^^^^^^^^^^^^ >f : (x: T, y: U) => V -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -59,9 +59,9 @@ var c2: Collection; var rf1 = (x: number, y: string) => { return x.toFixed() }; >rf1 : (x: number, y: string) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >(x: number, y: string) => { return x.toFixed() } : (x: number, y: string) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : string @@ -69,11 +69,11 @@ var rf1 = (x: number, y: string) => { return x.toFixed() }; >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var r5a = _.map(c2, (x, y) => { return x.toFixed() }); >r5a : Collection @@ -81,15 +81,15 @@ var r5a = _.map(c2, (x, y) => { return x.toFixed() }); >_.map(c2, (x, y) => { return x.toFixed() }) : Collection > : ^^^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T_1, y: U_1) => V): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T_1, y: U_1) => V): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x, y) => { return x.toFixed() } : (x: number, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -97,11 +97,11 @@ var r5a = _.map(c2, (x, y) => { return x.toFixed() }); >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ var r5b = _.map(c2, rf1); >r5b : Collection @@ -109,13 +109,13 @@ var r5b = _.map(c2, rf1); >_.map(c2, rf1) : Collection > : ^^^^^^^^^^^^^^^^^^^^ >_.map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T_1, y: U_1) => V): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >_ : Combinators > : ^^^^^^^^^^^ >map : { (c: Collection, f: (x: T, y: U) => any): Collection; (c: Collection, f: (x: T_1, y: U_1) => V): Collection; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >c2 : Collection > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >rf1 : (x: number, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericConditionalConstrainedToUnknownNotAssignableToConcreteObject.types b/tests/baselines/reference/genericConditionalConstrainedToUnknownNotAssignableToConcreteObject.types index affe6e52f8123..a1623edadb8b9 100644 --- a/tests/baselines/reference/genericConditionalConstrainedToUnknownNotAssignableToConcreteObject.types +++ b/tests/baselines/reference/genericConditionalConstrainedToUnknownNotAssignableToConcreteObject.types @@ -7,7 +7,7 @@ interface A { x: number } declare function isA(a: unknown): a is A; >isA : (a: unknown) => a is A -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : unknown > : ^^^^^^^ @@ -20,7 +20,7 @@ type FunctionsObj = { function g< >g : , M extends keyof T>(a2: ReturnType, x: A) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ T extends FunctionsObj, M extends keyof T @@ -43,7 +43,7 @@ function g< function g2< >g2 : , M extends keyof T>(a2: ReturnType) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ T extends FunctionsObj, M extends keyof T @@ -55,7 +55,7 @@ function g2< >isA(a2) : boolean > : ^^^^^^^ >isA : (a: unknown) => a is A -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a2 : ReturnType > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericConstraint1.types b/tests/baselines/reference/genericConstraint1.types index 3a7bab52521fd..5b80b43a6f1af 100644 --- a/tests/baselines/reference/genericConstraint1.types +++ b/tests/baselines/reference/genericConstraint1.types @@ -7,7 +7,7 @@ class C { public bar2(x: T, y: U): T { >bar2 : (x: T, y: U) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -29,11 +29,11 @@ x.bar2(2, ""); >x.bar2(2, "") : number > : ^^^^^^ >x.bar2 : (x: number, y: U) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >x : C > : ^^^^^^^^^ >bar2 : (x: number, y: U) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^ >2 : 2 > : ^ >"" : "" diff --git a/tests/baselines/reference/genericConstraint2.types b/tests/baselines/reference/genericConstraint2.types index ba61cd60c1fa3..66403dc5a426a 100644 --- a/tests/baselines/reference/genericConstraint2.types +++ b/tests/baselines/reference/genericConstraint2.types @@ -4,14 +4,14 @@ interface Comparable { comparer(other: T): number; >comparer : (other: T) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >other : T > : ^ } function compare>(x: T, y: T): number { >compare : >(x: T, y: T) => number -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -47,11 +47,11 @@ function compare>(x: T, y: T): number { >x.comparer(y) : number > : ^^^^^^ >x.comparer : (other: T) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : T > : ^ >comparer : (other: T) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >y : T > : ^ } @@ -66,7 +66,7 @@ class ComparableString implements Comparable{ localeCompare(other) { >localeCompare : (other: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >other : any > : ^^^ @@ -102,7 +102,7 @@ var c = compare(a, b); >compare(a, b) : number > : ^^^^^^ >compare : >(x: T, y: T) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : ComparableString > : ^^^^^^^^^^^^^^^^ >b : ComparableString diff --git a/tests/baselines/reference/genericConstraintSatisfaction1.types b/tests/baselines/reference/genericConstraintSatisfaction1.types index 1fefaa169c0a7..ffe408581dbaa 100644 --- a/tests/baselines/reference/genericConstraintSatisfaction1.types +++ b/tests/baselines/reference/genericConstraintSatisfaction1.types @@ -4,7 +4,7 @@ interface I { f: (x: T) => void >f : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ } @@ -19,11 +19,11 @@ x.f({s: 1}) >x.f({s: 1}) : void > : ^^^^ >x.f : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >x : I<{ s: string; }> > : ^^^^^^^^^^^^^^^^^ >f : (x: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{s: 1} : { s: number; } > : ^^^^^^^^^^^^^^ >s : number diff --git a/tests/baselines/reference/genericConstructorFunction1.types b/tests/baselines/reference/genericConstructorFunction1.types index 739f152e6be28..947250854bfcc 100644 --- a/tests/baselines/reference/genericConstructorFunction1.types +++ b/tests/baselines/reference/genericConstructorFunction1.types @@ -3,13 +3,13 @@ === genericConstructorFunction1.ts === function f1(args: T) { >f1 : (args: T) => Date -> : ^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >args : T > : ^ var v1: { [index: string]: new (arg: T) => Date }; >v1 : { [index: string]: new (arg: T) => Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >index : string > : ^^^^^^ >arg : T @@ -17,11 +17,11 @@ function f1(args: T) { var v2 = v1['test']; >v2 : new (arg: T) => Date -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >v1['test'] : new (arg: T) => Date -> : ^^^^^^^^^^^^^^^^^^^^ +> : >v1 : { [index: string]: new (arg: T) => Date; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >'test' : "test" > : ^^^^^^ @@ -29,7 +29,7 @@ function f1(args: T) { >v2(args) : any > : ^^^ >v2 : new (arg: T) => Date -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >args : T > : ^ @@ -37,7 +37,7 @@ function f1(args: T) { >new v2(args) : Date > : ^^^^ >v2 : new (arg: T) => Date -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^ >args : T > : ^ } @@ -49,7 +49,7 @@ interface I1 { new (arg: T): Date }; function f2(args: T) { >f2 : (args: T) => Date -> : ^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >args : T > : ^ diff --git a/tests/baselines/reference/genericContextualTypes1.types b/tests/baselines/reference/genericContextualTypes1.types index d33c42a9c7de7..9ebe75ea04a7b 100644 --- a/tests/baselines/reference/genericContextualTypes1.types +++ b/tests/baselines/reference/genericContextualTypes1.types @@ -9,9 +9,9 @@ type Box = { value: T }; declare function wrap(f: (a: A) => B): (a: A) => B; >wrap : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A @@ -19,13 +19,13 @@ declare function wrap(f: (a: A) => B): (a: A) => B; declare function compose(f: (a: A) => B, g: (b: B) => C): (a: A) => C; >compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >g : (b: B) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : B > : ^ >a : A @@ -33,47 +33,47 @@ declare function compose(f: (a: A) => B, g: (b: B) => C): (a: A) => C; declare function list(a: T): T[]; >list : (a: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ declare function unlist(a: T[]): T; >unlist : (a: T[]) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T[] > : ^^^ declare function box(x: V): Box; >box : (x: V) => Box -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : V > : ^ declare function unbox(x: Box): W; >unbox : (x: Box) => W -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Box > : ^^^^^^ declare function map(a: T[], f: (x: T) => U): U[]; >map : (a: T[], f: (x: T) => U) => U[] -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : T[] > : ^^^ >f : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ declare function identity(x: T): T; >identity : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ declare function zip(a: A, b: B): [A, B]; >zip : (a: A, b: B) => [A, B] -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -81,9 +81,9 @@ declare function zip(a: A, b: B): [A, B]; declare function flip(f: (x: X, y: Y) => Z): (y: Y, x: X) => Z; >flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z -> : ^ ^^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f : (x: X, y: Y) => Z -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : X > : ^ >y : Y @@ -95,19 +95,19 @@ declare function flip(f: (x: X, y: Y) => Z): (y: Y, x: X) => Z; const f00: (x: A) => A[] = list; >f00 : (x: A) => A[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : A > : ^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f01: (x: A) => A[] = x => [x]; >f01 : (x: A) => A[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : A > : ^ >x => [x] : (x: A) => A[] -> : ^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^ >x : A > : ^ >[x] : A[] @@ -117,27 +117,27 @@ const f01: (x: A) => A[] = x => [x]; const f02: (x: A) => A[] = wrap(list); >f02 : (x: A) => A[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : A > : ^ >wrap(list) : (a: A) => A[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >wrap : (f: (a: A) => B) => (a: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f03: (x: A) => A[] = wrap(x => [x]); >f03 : (x: A) => A[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : A > : ^ >wrap(x => [x]) : (a: A) => A[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >wrap : (f: (a: A) => B) => (a: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >x => [x] : (x: A) => A[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : A > : ^ >[x] : A[] @@ -147,151 +147,151 @@ const f03: (x: A) => A[] = wrap(x => [x]); const f10: (x: T) => Box = compose(a => list(a), b => box(b)); >f10 : (x: T) => Box -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >compose(a => list(a), b => box(b)) : (a: T) => Box -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a => list(a) : (a: T) => T[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >a : T > : ^ >list(a) : T[] > : ^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >a : T > : ^ >b => box(b) : (b: T[]) => Box -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >b : T[] > : ^^^ >box(b) : Box > : ^^^^^^^^ >box : (x: V) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >b : T[] > : ^^^ const f11: (x: T) => Box = compose(list, box); >f11 : (x: T) => Box -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >compose(list, box) : (a: T) => Box -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ const f12: (x: Box) => T = compose(a => unbox(a), b => unlist(b)); >f12 : (x: Box) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Box > : ^^^^^^^^ >compose(a => unbox(a), b => unlist(b)) : (a: Box) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a => unbox(a) : (a: Box) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : Box > : ^^^^^^^^ >unbox(a) : T[] > : ^^^ >unbox : (x: Box) => W -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : Box > : ^^^^^^^^ >b => unlist(b) : (b: T[]) => T -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >b : T[] > : ^^^ >unlist(b) : T > : ^ >unlist : (a: T[]) => T -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >b : T[] > : ^^^ const f13: (x: Box) => T = compose(unbox, unlist); >f13 : (x: Box) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Box > : ^^^^^^^^ >compose(unbox, unlist) : (a: Box) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >unbox : (x: Box) => W -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >unlist : (a: T[]) => T -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const arrayMap = (f: (x: T) => U) => (a: T[]) => a.map(f); >arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(f: (x: T) => U) => (a: T[]) => a.map(f) : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : >f : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >(a: T[]) => a.map(f) : (a: T[]) => U[] -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : T[] > : ^^^ >a.map(f) : U[] > : ^^^ >a.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >a : T[] > : ^^^ >map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >f : (x: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ const arrayFilter = (f: (x: T) => boolean) => (a: T[]) => a.filter(f); >arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(f: (x: T) => boolean) => (a: T[]) => a.filter(f) : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : >f : (x: T) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >(a: T[]) => a.filter(f) : (a: T[]) => T[] -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >a : T[] > : ^^^ >a.filter(f) : T[] > : ^^^ >a.filter : { (predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; (predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >a : T[] > : ^^^ >filter : { (predicate: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[]; (predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >f : (x: T) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ const f20: (a: string[]) => number[] = arrayMap(x => x.length); >f20 : (a: string[]) => number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string[] > : ^^^^^^^^ >arrayMap(x => x.length) : (a: string[]) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number @@ -303,15 +303,15 @@ const f20: (a: string[]) => number[] = arrayMap(x => x.length); const f21: (a: A[]) => A[][] = arrayMap(x => [x]); >f21 : (a: A[]) => A[][] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(x => [x]) : (a: A[]) => A[][] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => [x] : (x: A) => A[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : A > : ^ >[x] : A[] @@ -321,27 +321,27 @@ const f21: (a: A[]) => A[][] = arrayMap(x => [x]); const f22: (a: A[]) => A[] = arrayMap(identity); >f22 : (a: A[]) => A[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(identity) : (a: A[]) => A[] -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >identity : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ const f23: (a: A[]) => Box[] = arrayMap(value => ({ value })); >f23 : (a: A[]) => Box[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(value => ({ value })) : (a: A[]) => { value: A; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >value => ({ value }) : (value: A) => { value: A; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >value : A > : ^ >({ value }) : { value: A; } @@ -353,15 +353,15 @@ const f23: (a: A[]) => Box[] = arrayMap(value => ({ value })); const f30: (a: string[]) => string[] = arrayFilter(x => x.length > 10); >f30 : (a: string[]) => string[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string[] > : ^^^^^^^^ >arrayFilter(x => x.length > 10) : (a: string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.length > 10 : (x: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length > 10 : boolean @@ -377,15 +377,15 @@ const f30: (a: string[]) => string[] = arrayFilter(x => x.length > 10); const f31: >(a: T[]) => T[] = arrayFilter(x => x.value > 10); >f31 : >(a: T[]) => T[] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T[] > : ^^^ >arrayFilter(x => x.value > 10) : (a: T[]) => T[] -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.value > 10 : (x: T) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : T > : ^ >x.value > 10 : boolean @@ -401,17 +401,17 @@ const f31: >(a: T[]) => T[] = arrayFilter(x => x.value > 1 const f40: (b: B, a: A) => [A, B] = flip(zip); >f40 : (b: B, a: A) => [A, B] -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >a : A > : ^ >flip(zip) : (y: B, x: A) => [A, B] -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^ >flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^ >zip : (a: A, b: B) => [A, B] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ // Repro from #16293 @@ -425,7 +425,7 @@ const fn: fn = a => a; >fn : fn > : ^^ >a => a : (a: A) => A -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >a : A > : ^ >a : A diff --git a/tests/baselines/reference/genericContextualTypes2.types b/tests/baselines/reference/genericContextualTypes2.types index 780894fb75e06..70ab84a94e622 100644 --- a/tests/baselines/reference/genericContextualTypes2.types +++ b/tests/baselines/reference/genericContextualTypes2.types @@ -28,7 +28,7 @@ type Meta = { action: (ctx: TContext) => void >action : (ctx: TContext) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ctx : TContext > : ^^^^^^^^ } @@ -40,7 +40,7 @@ interface AssignAction { exec: (arg: TContext, meta: Meta) => void; >exec : (arg: TContext, meta: Meta) => void -> : ^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >arg : TContext > : ^^^^^^^^ >meta : Meta @@ -49,7 +49,7 @@ interface AssignAction { declare function assign( >assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ assignment: PropertyAssigner> >assignment : PropertyAssigner> @@ -73,7 +73,7 @@ type Config = { declare function createMachine(config: Config): void; >createMachine : (config: Config) => void -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >config : Config > : ^^^^^^^^^^^^^^^^ @@ -81,7 +81,7 @@ createMachine<{ count: number }>({ >createMachine<{ count: number }>({ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),}) : void > : ^^^^ >createMachine : (config: Config) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >count : number > : ^^^^^^ >{ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),} : { context: { count: number; }; entry: AssignAction<{ count: number; }>; } @@ -104,17 +104,17 @@ createMachine<{ count: number }>({ >entry : AssignAction<{ count: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >assign({ count: (ctx: { count: number }) => ++ctx.count, }) : AssignAction<{ count: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^ >assign : (assignment: PropertyAssigner>) => AssignAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ count: (ctx: { count: number }) => ++ctx.count, } : { count: (ctx: { count: number; }) => number; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ count: (ctx: { count: number }) => ++ctx.count, >count : (ctx: { count: number; }) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(ctx: { count: number }) => ++ctx.count : (ctx: { count: number; }) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : >ctx : { count: number; } > : ^^^^^^^^^ ^^^ >count : number diff --git a/tests/baselines/reference/genericContextualTypes3.types b/tests/baselines/reference/genericContextualTypes3.types index 5472a3cd9c6a5..cacf9496e3cf4 100644 --- a/tests/baselines/reference/genericContextualTypes3.types +++ b/tests/baselines/reference/genericContextualTypes3.types @@ -28,7 +28,7 @@ type Meta = { action: (ctx: TContext) => void >action : (ctx: TContext) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ctx : TContext > : ^^^^^^^^ } @@ -47,7 +47,7 @@ interface AssignAction { declare function assign( >assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ assignment: PropertyAssigner> >assignment : PropertyAssigner> @@ -71,7 +71,7 @@ type Config = { declare function createMachine(config: Config): void; >createMachine : (config: Config) => void -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >config : Config > : ^^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ createMachine<{ count: number }>({ >createMachine<{ count: number }>({ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),}) : void > : ^^^^ >createMachine : (config: Config) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >count : number > : ^^^^^^ >{ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),} : { context: { count: number; }; entry: AssignAction<{ count: number; }>; } @@ -102,17 +102,17 @@ createMachine<{ count: number }>({ >entry : AssignAction<{ count: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >assign({ count: (ctx: { count: number }) => ++ctx.count, }) : AssignAction<{ count: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^ >assign : (assignment: PropertyAssigner>) => AssignAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ count: (ctx: { count: number }) => ++ctx.count, } : { count: (ctx: { count: number; }) => number; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ count: (ctx: { count: number }) => ++ctx.count, >count : (ctx: { count: number; }) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(ctx: { count: number }) => ++ctx.count : (ctx: { count: number; }) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : >ctx : { count: number; } > : ^^^^^^^^^ ^^^ >count : number diff --git a/tests/baselines/reference/genericContextualTypingSpecialization.types b/tests/baselines/reference/genericContextualTypingSpecialization.types index 121435546c2bf..1559167fc4e98 100644 --- a/tests/baselines/reference/genericContextualTypingSpecialization.types +++ b/tests/baselines/reference/genericContextualTypingSpecialization.types @@ -9,13 +9,13 @@ b.reduce((c, d) => c + d, 0); // should not error on '+' >b.reduce((c, d) => c + d, 0) : number > : ^^^^^^ >b.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >b : number[] > : ^^^^^^^^ >reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(c, d) => c + d : (c: number, d: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >c : number > : ^^^^^^ >d : number diff --git a/tests/baselines/reference/genericDefaults.types b/tests/baselines/reference/genericDefaults.types index ba227405bad3b..2c3128cffce92 100644 --- a/tests/baselines/reference/genericDefaults.types +++ b/tests/baselines/reference/genericDefaults.types @@ -60,7 +60,7 @@ declare const x: any; // function without type parameters declare function f00(a?: A): A; >f00 : (a?: A) => A -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : A > : ^ @@ -69,20 +69,20 @@ f00(); >f00() : A > : ^ >f00 : (a?: A) => A -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ f00(a); >f00(a) : A > : ^ >f00 : (a?: A) => A -> : ^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ >a : A > : ^ // function with a type parameter without a default declare function f01(a?: T): T; >f01 : (a?: T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^^^^ >a : T > : ^ @@ -91,13 +91,13 @@ f01(); >f01() : unknown > : ^^^^^^^ >f01 : (a?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ f01(a); >f01(a) : A > : ^ >f01 : (a?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >a : A > : ^ @@ -106,20 +106,20 @@ f01(); >f01() : A > : ^ >f01 : (a?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ f01(a); >f01(a) : A > : ^ >f01 : (a?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >a : A > : ^ // function with a type paramter with a default declare function f02(a?: T): T; >f02 : (a?: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^ >a : T > : ^ @@ -128,13 +128,13 @@ f02(); >f02() : A > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f02(a); >f02(a) : A > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >a : A > : ^ @@ -142,7 +142,7 @@ f02(b); >f02(b) : B > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >b : B > : ^ @@ -151,13 +151,13 @@ f02(); >f02() : A > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f02(a); >f02(a) : A > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >a : A > : ^ @@ -165,20 +165,20 @@ f02(); >f02() : B > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f02(b); >f02(b) : B > : ^ >f02 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >b : B > : ^ // function with a type parameter with a default that refers to itself declare function f03(a?: T): T; >f03 : (a?: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^ >a : T > : ^ @@ -187,13 +187,13 @@ f03(); >f03() : unknown > : ^^^^^^^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f03(a); >f03(a) : A > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >a : A > : ^ @@ -201,7 +201,7 @@ f03(b); >f03(b) : B > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >b : B > : ^ @@ -210,13 +210,13 @@ f03(); >f03() : A > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f03(a); >f03(a) : A > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >a : A > : ^ @@ -224,20 +224,20 @@ f03(); >f03() : B > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ f03(b); >f03(b) : B > : ^ >f03 : (a?: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^ ^^^^^^ >b : B > : ^ // function with a type paramter without a default and a type parameter with a default declare function f04(a?: T, b?: U): [T, U]; >f04 : (a?: T, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -248,13 +248,13 @@ f04(); >f04() : [unknown, B] > : ^^^^^^^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f04(a); >f04(a) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -262,7 +262,7 @@ f04(a, b); >f04(a, b) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -272,7 +272,7 @@ f04(a, c); >f04(a, c) : [A, C] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -283,13 +283,13 @@ f04(); >f04() : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f04(a); >f04(a) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -297,7 +297,7 @@ f04(a, b); >f04(a, b) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -308,13 +308,13 @@ f04(); >f04() : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f04(a); >f04(a) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -322,7 +322,7 @@ f04(a, b); >f04(a, b) : [A, B] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -332,13 +332,13 @@ f04(); >f04() : [A, C] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f04(a); >f04(a) : [A, C] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -346,7 +346,7 @@ f04(a, c); >f04(a, c) : [A, C] > : ^^^^^^ >f04 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -355,7 +355,7 @@ f04(a, c); // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter declare function f05(a?: T, b?: U): [T, U]; >f05 : (a?: T, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -366,13 +366,13 @@ f05(); >f05() : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f05(a); >f05(a) : [A, A] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -380,7 +380,7 @@ f05(a, a); >f05(a, a) : [A, A] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -390,7 +390,7 @@ f05(a, b); >f05(a, b) : [A, B] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -401,13 +401,13 @@ f05(); >f05() : [A, A] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f05(a); >f05(a) : [A, A] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -415,7 +415,7 @@ f05(a, a); >f05(a, a) : [A, A] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -426,13 +426,13 @@ f05(); >f05() : [A, B] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f05(a); >f05(a) : [A, B] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -440,7 +440,7 @@ f05(a, b); >f05(a, b) : [A, B] > : ^^^^^^ >f05 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -449,7 +449,7 @@ f05(a, b); // function with a type parameter with a default that refers to an earlier type parameter with a default declare function f06(a?: T, b?: U): [T, U]; >f06 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -460,13 +460,13 @@ f06(); >f06() : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f06(a); >f06(a) : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -474,7 +474,7 @@ f06(a, a); >f06(a, a) : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -484,7 +484,7 @@ f06(a, b); >f06(a, b) : [A, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -494,7 +494,7 @@ f06(b, a); >f06(b, a) : [B, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ >a : A @@ -504,7 +504,7 @@ f06(b, b); >f06(b, b) : [B, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ >b : B @@ -515,13 +515,13 @@ f06(); >f06() : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f06(a); >f06(a) : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -529,7 +529,7 @@ f06(a, a); >f06(a, a) : [A, A] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -539,13 +539,13 @@ f06(); >f06() : [B, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f06(b); >f06(b) : [B, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ @@ -553,7 +553,7 @@ f06(b, b); >f06(b, b) : [B, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ >b : B @@ -564,13 +564,13 @@ f06(); >f06() : [A, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f06(a); >f06(a) : [A, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -578,7 +578,7 @@ f06(a, b); >f06(a, b) : [A, B] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -588,13 +588,13 @@ f06(); >f06() : [B, C] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f06(b); >f06(b) : [B, C] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ @@ -602,7 +602,7 @@ f06(b, c); >f06(b, c) : [B, C] > : ^^^^^^ >f06 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >b : B > : ^ >c : C @@ -611,7 +611,7 @@ f06(b, c); // function with a type parameter without a default and a type parameter with a default that refers to an earlier type parameter with a default declare function f07(a?: T, b?: U, c?: V): [T, U, V]; >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -624,13 +624,13 @@ f07(); >f07() : [unknown, B, B] > : ^^^^^^^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a, b); >f07(a, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -640,7 +640,7 @@ f07(a, c); >f07(a, c) : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -650,7 +650,7 @@ f07(a, b, b); >f07(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -662,7 +662,7 @@ f07(a, b, c); >f07(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -674,7 +674,7 @@ f07(a, c, b); >f07(a, c, b) : [A, C, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -686,7 +686,7 @@ f07(a, c, c); >f07(a, c, c) : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -699,13 +699,13 @@ f07(); >f07() : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a); >f07(a) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -713,7 +713,7 @@ f07(a, b); >f07(a, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -723,7 +723,7 @@ f07(a, b, b); >f07(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -735,13 +735,13 @@ f07(); >f07() : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a); >f07(a) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -749,7 +749,7 @@ f07(a, b); >f07(a, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -759,7 +759,7 @@ f07(a, b, b); >f07(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -771,13 +771,13 @@ f07(); >f07() : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a); >f07(a) : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -785,7 +785,7 @@ f07(a, c); >f07(a, c) : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -795,7 +795,7 @@ f07(a, c, c); >f07(a, c, c) : [A, C, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -808,13 +808,13 @@ f07(); >f07() : [A, B, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a); >f07(a) : [A, B, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -822,7 +822,7 @@ f07(a, b); >f07(a, b) : [A, B, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -832,7 +832,7 @@ f07(a, b, c); >f07(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -844,13 +844,13 @@ f07(); >f07() : [A, C, A] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f07(a); >f07(a) : [A, C, A] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -858,7 +858,7 @@ f07(a, c); >f07(a, c) : [A, C, D] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -868,7 +868,7 @@ f07(a, c, d); >f07(a, c, d) : [A, C, D] > : ^^^^^^^^^ >f07 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >c : C @@ -879,7 +879,7 @@ f07(a, c, d); // function with a type parameter with a default that refers to an earlier type parameter with a constraint declare function f08(a?: T, b?: U): [T, U]; >f08 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -890,13 +890,13 @@ f08(); >f08() : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f08(a); >f08(a) : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -904,7 +904,7 @@ f08(a, a); >f08(a, a) : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -914,7 +914,7 @@ f08(a, b); >f08(a, b) : [A, B] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -925,13 +925,13 @@ f08(); >f08() : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f08(a); >f08(a) : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -939,7 +939,7 @@ f08(a, a); >f08(a, a) : [A, A] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -950,13 +950,13 @@ f08(); >f08() : [A, B] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f08(a); >f08(a) : [A, B] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -964,7 +964,7 @@ f08(a, b); >f08(a, b) : [A, B] > : ^^^^^^ >f08 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -973,7 +973,7 @@ f08(a, b); // function with a type parameter with a constraint and a default that refers to an earlier type parameter declare function f09(a?: T, b?: U): [T, U]; >f09 : (a?: T, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -984,13 +984,13 @@ f09(); >f09() : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f09(a); >f09(a) : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -998,7 +998,7 @@ f09(a, a); >f09(a, a) : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1008,7 +1008,7 @@ f09(a, ab); >f09(a, ab) : [A, AB] > : ^^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1019,13 +1019,13 @@ f09(); >f09() : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f09(a); >f09(a) : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1033,7 +1033,7 @@ f09(a, a); >f09(a, a) : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1043,7 +1043,7 @@ f09(a, ab); >f09(a, ab) : [A, A] > : ^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1054,13 +1054,13 @@ f09(); >f09() : [A, AB] > : ^^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f09(a); >f09(a) : [A, AB] > : ^^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1068,7 +1068,7 @@ f09(a, ab); >f09(a, ab) : [A, AB] > : ^^^^^^^ >f09 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1077,7 +1077,7 @@ f09(a, ab); // function with a type parameter with a constraint and a default that refers to an earlier type parameter with a constraint declare function f10(a?: T, b?: U): [T, U]; >f10 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1088,13 +1088,13 @@ f10(); >f10() : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f10(a); >f10(a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1102,7 +1102,7 @@ f10(a, a); >f10(a, a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1112,7 +1112,7 @@ f10(a, ab); >f10(a, ab) : [A, AB] > : ^^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1123,13 +1123,13 @@ f10(); >f10() : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f10(a); >f10(a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1137,7 +1137,7 @@ f10(a, a); >f10(a, a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1147,7 +1147,7 @@ f10(a, ab); >f10(a, ab) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1158,13 +1158,13 @@ f10(); >f10() : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f10(a); >f10(a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1172,7 +1172,7 @@ f10(a, a); >f10(a, a) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1182,7 +1182,7 @@ f10(a, ab); >f10(a, ab) : [A, A] > : ^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1192,13 +1192,13 @@ f10(); >f10() : [A, AB] > : ^^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f10(a); >f10(a) : [A, AB] > : ^^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1206,7 +1206,7 @@ f10(a, ab); >f10(a, ab) : [A, AB] > : ^^^^^^^ >f10 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1215,7 +1215,7 @@ f10(a, ab); // function with a type parameter with a default that refers to an earier type parameter in a union declare function f11(a?: T, b?: U): [T, U]; >f11 : (a?: T, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1226,13 +1226,13 @@ f11(); >f11() : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f11(a); >f11(a) : [A, A | B] > : ^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1240,7 +1240,7 @@ f11(a, a); >f11(a, a) : [A, A] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1250,7 +1250,7 @@ f11(a, b); >f11(a, b) : [A, B] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1260,7 +1260,7 @@ f11(a, c); >f11(a, c) : [A, C] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1271,13 +1271,13 @@ f11(); >f11() : [A, A | B] > : ^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f11(a); >f11(a) : [A, A | B] > : ^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1285,7 +1285,7 @@ f11(a, a); >f11(a, a) : [A, A | B] > : ^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1295,7 +1295,7 @@ f11(a, b); >f11(a, b) : [A, A | B] > : ^^^^^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1306,13 +1306,13 @@ f11(); >f11() : [A, C] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f11(a); >f11(a) : [A, C] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1320,7 +1320,7 @@ f11(a, c); >f11(a, c) : [A, C] > : ^^^^^^ >f11 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1329,7 +1329,7 @@ f11(a, c); // function with a type parameter with a default that refers to an earlier type parameter in an intersection declare function f12(a?: T, b?: U): [T, U]; >f12 : (a?: T, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1340,13 +1340,13 @@ f12(); >f12() : [unknown, B] > : ^^^^^^^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f12(a); >f12(a) : [A, A & B] > : ^^^^^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1354,7 +1354,7 @@ f12(a, a); >f12(a, a) : [A, A] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1364,7 +1364,7 @@ f12(a, b); >f12(a, b) : [A, B] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1374,7 +1374,7 @@ f12(a, c); >f12(a, c) : [A, C] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1385,13 +1385,13 @@ f12(); >f12() : [A, A & B] > : ^^^^^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f12(a); >f12(a) : [A, A & B] > : ^^^^^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1399,7 +1399,7 @@ f12(a, ab); >f12(a, ab) : [A, A & B] > : ^^^^^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -1410,13 +1410,13 @@ f12(); >f12() : [A, C] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f12(a); >f12(a) : [A, C] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1424,7 +1424,7 @@ f12(a, c); >f12(a, c) : [A, C] > : ^^^^^^ >f12 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1433,7 +1433,7 @@ f12(a, c); // function with a type parameter with a default that refers to a later type parameter with a default declare function f13(a?: T, b?: U): [T, U]; >f13 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1444,13 +1444,13 @@ f13(); >f13() : [unknown, B] > : ^^^^^^^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f13(a); >f13(a) : [A, B] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1458,7 +1458,7 @@ f13(a, b); >f13(a, b) : [A, B] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1468,7 +1468,7 @@ f13(a, c); >f13(a, c) : [A, C] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1479,13 +1479,13 @@ f13(); >f13() : [A, B] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f13(a); >f13(a) : [A, B] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1493,7 +1493,7 @@ f13(a, b); >f13(a, b) : [A, B] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1504,13 +1504,13 @@ f13(); >f13() : [A, C] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f13(a); >f13(a) : [A, C] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1518,7 +1518,7 @@ f13(a, c); >f13(a, c) : [A, C] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1528,7 +1528,7 @@ f13(a, c); >f13(a, c) : [A, C] > : ^^^^^^ >f13 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -1537,7 +1537,7 @@ f13(a, c); // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default declare function f14(a?: T, b?: U, c?: V): [T, U, V]; >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1550,13 +1550,13 @@ f14(); >f14() : [unknown, unknown, C] > : ^^^^^^^^^^^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f14(a); >f14(a) : [A, unknown, C] > : ^^^^^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1564,7 +1564,7 @@ f14(a, b); >f14(a, b) : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1574,7 +1574,7 @@ f14(a, b, c); >f14(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1586,7 +1586,7 @@ f14(a, b, d); >f14(a, b, d) : [A, B, D] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1599,13 +1599,13 @@ f14(); >f14() : [A, any, C] > : ^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f14(a); >f14(a) : [A, any, C] > : ^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1613,7 +1613,7 @@ f14(a, b); >f14(a, b) : [A, any, C] > : ^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1623,7 +1623,7 @@ f14(a, b, c); >f14(a, b, c) : [A, any, C] > : ^^^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1635,13 +1635,13 @@ f14(); >f14() : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f14(a); >f14(a) : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1649,7 +1649,7 @@ f14(a, b); >f14(a, b) : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1659,7 +1659,7 @@ f14(a, b, c); >f14(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1672,13 +1672,13 @@ f14(); >f14() : [A, B, D] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f14(a); >f14(a) : [A, B, D] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1686,7 +1686,7 @@ f14(a, b); >f14(a, b) : [A, B, D] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1696,7 +1696,7 @@ f14(a, b, d); >f14(a, b, d) : [A, B, D] > : ^^^^^^^^^ >f14 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1707,7 +1707,7 @@ f14(a, b, d); // function with two type parameters with defaults that mutually refer to each other declare function f15(a?: T, b?: U): [T, U]; >f15 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1718,13 +1718,13 @@ f15(); >f15() : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f15(a); >f15(a) : [A, A] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1732,7 +1732,7 @@ f15(a, b); >f15(a, b) : [A, B] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1743,13 +1743,13 @@ f15(); >f15() : [A, A] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f15(a); >f15(a) : [A, A] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1757,7 +1757,7 @@ f15(a, a); >f15(a, a) : [A, A] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1768,13 +1768,13 @@ f15(); >f15() : [A, B] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f15(a); >f15(a) : [A, B] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1782,7 +1782,7 @@ f15(a, b); >f15(a, b) : [A, B] > : ^^^^^^ >f15 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1791,7 +1791,7 @@ f15(a, b); // function with a type parameter without a default and two type parameters with defaults that mutually refer to each other declare function f16(a?: T, b?: U, c?: V): [T, U, V]; >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1804,13 +1804,13 @@ f16(); >f16() : [unknown, unknown, unknown] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f16(a); >f16(a) : [A, unknown, unknown] > : ^^^^^^^^^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1818,7 +1818,7 @@ f16(a, b); >f16(a, b) : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1828,7 +1828,7 @@ f16(a, b, b); >f16(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1841,13 +1841,13 @@ f16(); >f16() : [A, any, any] > : ^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f16(a); >f16(a) : [A, any, any] > : ^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1855,7 +1855,7 @@ f16(a, b); >f16(a, b) : [A, any, any] > : ^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1865,7 +1865,7 @@ f16(a, b, b); >f16(a, b, b) : [A, any, any] > : ^^^^^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1877,13 +1877,13 @@ f16(); >f16() : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f16(a); >f16(a) : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1891,7 +1891,7 @@ f16(a, b); >f16(a, b) : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1901,7 +1901,7 @@ f16(a, b, b); >f16(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1914,13 +1914,13 @@ f16(); >f16() : [A, B, D] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f16(a); >f16(a) : [A, B, D] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -1928,7 +1928,7 @@ f16(a, b); >f16(a, b) : [A, B, D] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1938,7 +1938,7 @@ f16(a, b, d); >f16(a, b, d) : [A, B, D] > : ^^^^^^^^^ >f16 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1949,7 +1949,7 @@ f16(a, b, d); // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union declare function f17(a?: T, b?: U): [T, U]; >f17 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -1960,13 +1960,13 @@ f17(); >f17() : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f17(a); >f17(a) : [A, A | B] > : ^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -1974,7 +1974,7 @@ f17(a, a); >f17(a, a) : [A, A] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -1984,7 +1984,7 @@ f17(a, b); >f17(a, b) : [A, B] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -1994,7 +1994,7 @@ f17(a, c); >f17(a, c) : [A, C] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -2005,13 +2005,13 @@ f17(); >f17() : [A, A | B] > : ^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f17(a); >f17(a) : [A, A | B] > : ^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -2019,7 +2019,7 @@ f17(a, a); >f17(a, a) : [A, A | B] > : ^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -2029,7 +2029,7 @@ f17(a, b); >f17(a, b) : [A, A | B] > : ^^^^^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2040,13 +2040,13 @@ f17(); >f17() : [A, C] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f17(a); >f17(a) : [A, C] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -2054,7 +2054,7 @@ f17(a, c); >f17(a, c) : [A, C] > : ^^^^^^ >f17 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -2063,7 +2063,7 @@ f17(a, c); // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in a union declare function f18(a?: T, b?: U, c?: V): [T, U, V]; >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -2076,13 +2076,13 @@ f18(); >f18() : [unknown, unknown, unknown] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f18(a); >f18(a) : [A, unknown, unknown] > : ^^^^^^^^^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2090,7 +2090,7 @@ f18(a, b); >f18(a, b) : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2100,7 +2100,7 @@ f18(a, b, b); >f18(a, b, b) : [A, B, B] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2112,7 +2112,7 @@ f18(a, b, c); >f18(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2125,13 +2125,13 @@ f18(); >f18() : [A, any, any] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f18(a); >f18(a) : [A, any, any] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2139,7 +2139,7 @@ f18(a, b); >f18(a, b) : [A, any, any] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2149,7 +2149,7 @@ f18(a, b, b); >f18(a, b, b) : [A, any, any] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2161,7 +2161,7 @@ f18(a, b, c); >f18(a, b, c) : [A, any, any] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2173,13 +2173,13 @@ f18(); >f18() : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f18(a); >f18(a) : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2187,7 +2187,7 @@ f18(a, b); >f18(a, b) : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2197,7 +2197,7 @@ f18(a, b, b); >f18(a, b, b) : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2209,7 +2209,7 @@ f18(a, b, c); >f18(a, b, c) : [A, B, B | C] > : ^^^^^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2222,13 +2222,13 @@ f18(); >f18() : [A, B, D] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f18(a); >f18(a) : [A, B, D] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2236,7 +2236,7 @@ f18(a, b); >f18(a, b) : [A, B, D] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2246,7 +2246,7 @@ f18(a, b, d); >f18(a, b, d) : [A, B, D] > : ^^^^^^^^^ >f18 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2257,7 +2257,7 @@ f18(a, b, d); // function with a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection declare function f19(a?: T, b?: U): [T, U]; >f19 : (a?: T, b?: U) => [T, U] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -2268,13 +2268,13 @@ f19(); >f19() : [unknown, B] > : ^^^^^^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f19(a); >f19(a) : [A, A & B] > : ^^^^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -2282,7 +2282,7 @@ f19(a, a); >f19(a, a) : [A, A] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >a : A @@ -2292,7 +2292,7 @@ f19(a, b); >f19(a, b) : [A, B] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2302,7 +2302,7 @@ f19(a, ab); >f19(a, ab) : [A, AB] > : ^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -2312,7 +2312,7 @@ f19(a, c); >f19(a, c) : [A, C] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -2323,13 +2323,13 @@ f19(); >f19() : [A, A & B] > : ^^^^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f19(a); >f19(a) : [A, A & B] > : ^^^^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -2337,7 +2337,7 @@ f19(a, ab); >f19(a, ab) : [A, A & B] > : ^^^^^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >ab : AB @@ -2348,13 +2348,13 @@ f19(); >f19() : [A, C] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ f19(a); >f19(a) : [A, C] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ @@ -2362,7 +2362,7 @@ f19(a, c); >f19(a, c) : [A, C] > : ^^^^^^ >f19 : (a?: T, b?: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >a : A > : ^ >c : C @@ -2371,7 +2371,7 @@ f19(a, c); // function with a type parameter without a default and a type parameter with a default that refers to a later type parameter with a default that refers to an earlier type parameter in an intersection declare function f20(a?: T, b?: U, c?: V): [T, U, V]; >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : T > : ^ >b : U @@ -2384,13 +2384,13 @@ f20(); >f20() : [unknown, unknown, C] > : ^^^^^^^^^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f20(a); >f20(a) : [A, unknown, C] > : ^^^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2398,7 +2398,7 @@ f20(a, b); >f20(a, b) : [A, B, B & C] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2408,7 +2408,7 @@ f20(a, b, c); >f20(a, b, c) : [A, B, C] > : ^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2421,13 +2421,13 @@ f20(); >f20() : [A, any, any] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f20(a); >f20(a) : [A, any, any] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2435,7 +2435,7 @@ f20(a, b); >f20(a, b) : [A, any, any] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2445,7 +2445,7 @@ f20(a, b, bc); >f20(a, b, bc) : [A, any, any] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2457,13 +2457,13 @@ f20(); >f20() : [A, B, B & C] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f20(a); >f20(a) : [A, B, B & C] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2471,7 +2471,7 @@ f20(a, b); >f20(a, b) : [A, B, B & C] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2481,7 +2481,7 @@ f20(a, b, bc); >f20(a, b, bc) : [A, B, B & C] > : ^^^^^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2494,13 +2494,13 @@ f20(); >f20() : [A, B, D] > : ^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ f20(a); >f20(a) : [A, B, D] > : ^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ @@ -2508,7 +2508,7 @@ f20(a, b); >f20(a, b) : [A, B, D] > : ^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B @@ -2518,7 +2518,7 @@ f20(a, b, d); >f20(a, b, d) : [A, B, D] > : ^^^^^^^^^ >f20 : (a?: T, b?: U, c?: V) => [T, U, V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^ >a : A > : ^ >b : B diff --git a/tests/baselines/reference/genericDefaultsErrors.types b/tests/baselines/reference/genericDefaultsErrors.types index c09277f1dbe8c..ffd2622505c49 100644 --- a/tests/baselines/reference/genericDefaultsErrors.types +++ b/tests/baselines/reference/genericDefaultsErrors.types @@ -57,7 +57,7 @@ f11<1, 2, 3, 4>(); // error declare function f12(a?: U): void; >f12 : (a?: U) => void -> : ^^^^ ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^^^^ ^^^ ^^^^^ >a : U > : ^ @@ -65,13 +65,13 @@ f12(); // ok >f12() : void > : ^^^^ >f12 : (a?: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^ ^^^ ^^^^^^^^^ f12("a"); // error >f12("a") : void > : ^^^^ >f12 : (a?: U) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^ ^^^ ^^^^^^^^^ >"a" : "a" > : ^^^ diff --git a/tests/baselines/reference/genericDefaultsJs.types b/tests/baselines/reference/genericDefaultsJs.types index 8da26272bf269..9f0bdddf12bed 100644 --- a/tests/baselines/reference/genericDefaultsJs.types +++ b/tests/baselines/reference/genericDefaultsJs.types @@ -3,13 +3,13 @@ === decls.d.ts === declare function f0(x?: T): T; >f0 : (x?: T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^^^^ >x : T > : ^ declare function f1(x?: T): [T, U]; >f1 : (x?: T) => [T, U] -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ^^^ ^^^^^ >x : T > : ^ @@ -42,7 +42,7 @@ const f0_v0 = f0(); >f0_v0 : any >f0() : any >f0 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ const f0_v1 = f0(1); >f0_v1 : 1 @@ -50,7 +50,7 @@ const f0_v1 = f0(1); >f0(1) : 1 > : ^ >f0 : (x?: T) => T -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^ >1 : 1 > : ^ @@ -60,7 +60,7 @@ const f1_c0 = f1(); >f1() : [any, number] > : ^^^^^^^^^^^^^ >f1 : (x?: T) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ const f1_c1 = f1(1); >f1_c1 : [number, number] @@ -68,7 +68,7 @@ const f1_c1 = f1(1); >f1(1) : [number, number] > : ^^^^^^^^^^^^^^^^ >f1 : (x?: T) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericFunctionCallSignatureReturnTypeMismatch.types b/tests/baselines/reference/genericFunctionCallSignatureReturnTypeMismatch.types index 7bac6f0705ebe..34bd5cb604cea 100644 --- a/tests/baselines/reference/genericFunctionCallSignatureReturnTypeMismatch.types +++ b/tests/baselines/reference/genericFunctionCallSignatureReturnTypeMismatch.types @@ -5,7 +5,7 @@ interface Array {} var f : { (x:T): T; } >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -17,7 +17,7 @@ f = g; >f = g : () => S[] > : ^^^^^^^^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >g : () => S[] > : ^^^^^^^^^^^^ @@ -31,7 +31,7 @@ var s = f("str").toUpperCase(); >f("str") : "str" > : ^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >"str" : "str" > : ^^^^^ >toUpperCase : () => string @@ -41,11 +41,11 @@ console.log(s); >console.log(s) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/genericFunctionHasFreshTypeArgs.types b/tests/baselines/reference/genericFunctionHasFreshTypeArgs.types index d1c99fe3296f7..9f7b252abb585 100644 --- a/tests/baselines/reference/genericFunctionHasFreshTypeArgs.types +++ b/tests/baselines/reference/genericFunctionHasFreshTypeArgs.types @@ -3,9 +3,9 @@ === genericFunctionHasFreshTypeArgs.ts === function f(p: (x: T) => void) { }; >f : (p: (x: T) => void) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : (x: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -13,17 +13,17 @@ f(x => f(y => x = y)); >f(x => f(y => x = y)) : void > : ^^^^ >f : (p: (x: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x => f(y => x = y) : (x: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^ >x : T > : ^ >f(y => x = y) : void > : ^^^^ >f : (p: (x: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >y => x = y : (y: T) => T -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >y : T > : ^ >x = y : T diff --git a/tests/baselines/reference/genericFunctionInference1.types b/tests/baselines/reference/genericFunctionInference1.types index 10adada5da9e7..02a5338d334a1 100644 --- a/tests/baselines/reference/genericFunctionInference1.types +++ b/tests/baselines/reference/genericFunctionInference1.types @@ -10,9 +10,9 @@ Symbol count: 32,500 / 33,000 (nearest 500) === genericFunctionInference1.ts === declare function pipe(ab: (...args: A) => B): (...args: A) => B; >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >ab : (...args: A) => B -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : A > : ^ >args : A @@ -20,13 +20,13 @@ declare function pipe(ab: (...args: A) => B): (...args: A) = declare function pipe(ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; >pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >ab : (...args: A) => B -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : A > : ^ >bc : (b: B) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : B > : ^ >args : A @@ -34,17 +34,17 @@ declare function pipe(ab: (...args: A) => B, bc: (b: B) = declare function pipe(ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; >pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1): (...args: A_2) => C_1; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >ab : (...args: A) => B -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : A > : ^ >bc : (b: B) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : B > : ^ >cd : (c: C) => D -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C > : ^ >args : A @@ -52,13 +52,13 @@ declare function pipe(ab: (...args: A) => B, bc: (b: B declare function list(a: T): T[]; >list : (a: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ declare function box(x: V): { value: V }; >box : (x: V) => { value: V; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : V > : ^ >value : V @@ -66,7 +66,7 @@ declare function box(x: V): { value: V }; declare function foo(x: T): T; >foo : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >value : T > : ^ >x : T @@ -76,73 +76,73 @@ const f00 = pipe(list); >f00 : (a: T) => T[] > : ^^^^^^^^^^^^^^^^ >pipe(list) : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f01 = pipe(list, box); >f01 : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(list, box) : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f02 = pipe(box, list); >f02 : (x: V) => { value: V; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(box, list) : (x: V) => { value: V; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f03 = pipe(x => list(x), box); >f03 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), box) : (x: any) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : any > : ^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f04 = pipe(list, x => box(x)); >f04 : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(list, x => box(x)) : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x => box(x) : (x: T[]) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ @@ -150,27 +150,27 @@ const f05 = pipe(x => list(x), x => box(x)) >f05 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), x => box(x)) : (x: any) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : any > : ^^^ >x => box(x) : (x: any[]) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >box(x) : { value: any[]; } > : ^^^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ @@ -178,71 +178,71 @@ const f06 = pipe(list, pipe(box)); >f06 : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(list, pipe(box)) : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f07 = pipe(x => list(x), pipe(box)); >f07 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), pipe(box)) : (x: any) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : any > : ^^^ >pipe(box) : (x: any[]) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f08 = pipe(x => list(x), pipe(x => box(x))); >f08 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), pipe(x => box(x))) : (x: any) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: any) => any[] -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : any > : ^^^ >pipe(x => box(x)) : (x: any[]) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => box(x) : (x: any[]) => { value: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >box(x) : { value: any[]; } > : ^^^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ @@ -250,13 +250,13 @@ const f09 = pipe(list, x => x.length); >f09 : (a: T) => number > : ^^^^^^^^^^^^^^^^^^^ >pipe(list, x => x.length) : (a: T) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x => x.length : (x: T[]) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >x.length : number @@ -270,39 +270,39 @@ const f10 = pipe(foo); >f10 : (x: T) => T > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(foo) : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ const f11 = pipe(foo, foo); >f11 : (x: T) => T > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(foo, foo) : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const g00: (x: T) => T[] = pipe(list); >g00 : (x: T) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >pipe(list) : (a: T) => T[] > : ^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const g01: (x: T) => { value: T[] } = pipe(list, box); >g01 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -310,15 +310,15 @@ const g01: (x: T) => { value: T[] } = pipe(list, box); >pipe(list, box) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const g02: (x: T) => { value: T }[] = pipe(box, list); >g02 : (x: T) => { value: T; }[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T @@ -326,15 +326,15 @@ const g02: (x: T) => { value: T }[] = pipe(box, list); >pipe(box, list) : (x: T) => { value: T; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const g03: (x: T) => { value: T[] } = pipe(x => list(x), box); >g03 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -342,23 +342,23 @@ const g03: (x: T) => { value: T[] } = pipe(x => list(x), box); >pipe(x => list(x), box) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: T) => T[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const g04: (x: T) => { value: T[] } = pipe(list, x => box(x)); >g04 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -366,23 +366,23 @@ const g04: (x: T) => { value: T[] } = pipe(list, x => box(x)); >pipe(list, x => box(x)) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x => box(x) : (x: T[]) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ const g05: (x: T) => { value: T[] } = pipe(x => list(x), x => box(x)) >g05 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -390,31 +390,31 @@ const g05: (x: T) => { value: T[] } = pipe(x => list(x), x => box(x)) >pipe(x => list(x), x => box(x)) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: T) => T[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >x => box(x) : (x: T[]) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ const g06: (x: T) => { value: T[] } = pipe(list, pipe(box)); >g06 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -422,19 +422,19 @@ const g06: (x: T) => { value: T[] } = pipe(list, pipe(box)); >pipe(list, pipe(box)) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const g07: (x: T) => { value: T[] } = pipe(x => list(x), pipe(box)); >g07 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -442,27 +442,27 @@ const g07: (x: T) => { value: T[] } = pipe(x => list(x), pipe(box)); >pipe(x => list(x), pipe(box)) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: T) => T[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const g08: (x: T) => { value: T[] } = pipe(x => list(x), pipe(x => box(x))); >g08 : (x: T) => { value: T[]; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >value : T[] @@ -470,45 +470,45 @@ const g08: (x: T) => { value: T[] } = pipe(x => list(x), pipe(x => box(x))); >pipe(x => list(x), pipe(x => box(x))) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => list(x) : (x: T) => T[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >pipe(x => box(x)) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >x => box(x) : (x: T[]) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ const g09: (x: T) => number = pipe(list, x => x.length); >g09 : (x: T) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >pipe(list, x => x.length) : (a: T) => number > : ^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x => x.length : (x: T[]) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >x.length : number @@ -520,7 +520,7 @@ const g09: (x: T) => number = pipe(list, x => x.length); const g10: (x: T) => T = pipe(foo); >g10 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >value : T > : ^ >x : T @@ -528,13 +528,13 @@ const g10: (x: T) => T = pipe(foo); >pipe(foo) : (x: T) => T > : ^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ const g12: (x: T) => T = pipe(foo, foo); >g12 : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >value : T > : ^ >x : T @@ -542,21 +542,21 @@ const g12: (x: T) => T = pipe(foo, foo); >pipe(foo, foo) : (x: T) => T > : ^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : declare function pipe2(ab: (a: A) => B, cd: (c: C) => D): (a: [A, C]) => [B, D]; >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >ab : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >cd : (c: C) => D -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C > : ^ >a : [A, C] @@ -564,97 +564,97 @@ declare function pipe2(ab: (a: A) => B, cd: (c: C) => D): (a: [A, C] const f20 = pipe2(list, box); >f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(list, box) : (a: [T, V]) => [T[], { value: V; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f21 = pipe2(box, list); >f21 : (a: [V, T]) => [{ value: V; }, T[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(box, list) : (a: [V, T]) => [{ value: V; }, T[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f22 = pipe2(list, list); >f22 : (a: [T, T1]) => [T[], T1[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(list, list) : (a: [T, T1]) => [T[], T1[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : const f23 = pipe2(box, box); >f23 : (a: [V, V1]) => [{ value: V; }, { value: V1; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(box, box) : (a: [V, V1]) => [{ value: V; }, { value: V1; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const f24 = pipe2(f20, f20); >f24 : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(f20, f20) : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const f25 = pipe2(foo, foo); >f25 : (a: [T, T1]) => [T, T1] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >pipe2(foo, foo) : (a: [T, T1]) => [T, T1] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const f26 = pipe2(f25, f25); >f26 : (a: [[T, T1], [T2, T3]]) => [[T, T1], [T2, T3]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(f25, f25) : (a: [[T, T1], [T2, T3]]) => [[T, T1], [T2, T3]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >f25 : (a: [T, T1]) => [T, T1] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >f25 : (a: [T, T1]) => [T, T1] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : declare function pipe3(ab: (a: A) => B, ac: (a: A) => C): (a: A) => [B, C]; >pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^ ^^ ^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >ab : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >ac : (a: A) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A @@ -662,45 +662,45 @@ declare function pipe3(ab: (a: A) => B, ac: (a: A) => C): (a: A) => [B, const f30 = pipe3(list, box); >f30 : (a: T) => [T[], { value: T; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe3(list, box) : (a: T) => [T[], { value: T; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f31 = pipe3(box, list); >f31 : (a: V) => [{ value: V; }, V[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe3(box, list) : (a: V) => [{ value: V; }, V[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ const f32 = pipe3(list, list); >f32 : (a: T) => [T[], T[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >pipe3(list, list) : (a: T) => [T[], T[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : declare function pipe4(funcs: [(a: A) => B, (b: B) => C]): (a: A) => C; >pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^ ^^ ^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >funcs : [(a: A) => B, (b: B) => C] -> : ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ ^ >a : A > : ^ >b : B @@ -710,59 +710,59 @@ declare function pipe4(funcs: [(a: A) => B, (b: B) => C]): (a: A) => C; const f40 = pipe4([list, box]); >f40 : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >pipe4([list, box]) : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >[list, box] : [(a: T) => T[], (x: V) => { value: V; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ const f41 = pipe4([box, list]); >f41 : (a: V) => { value: V; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >pipe4([box, list]) : (a: V) => { value: V; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >[box, list] : [(x: V) => { value: V; }, (a: T) => T[]] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ declare function pipe5(f: (a: A) => B): { f: (a: A) => B }; >pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ const f50 = pipe5(list); // No higher order inference >f50 : { f: (a: unknown) => unknown[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe5(list) : { f: (a: unknown) => unknown[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^ >list : (a: T) => T[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ declare function wrap3(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C; >wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C -> : ^ ^^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f : (a: A, b1: B, b2: B) => C -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b1 : B @@ -778,7 +778,7 @@ declare function wrap3(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: declare function baz(t1: T, t2: T, u: U): [T, U]; >baz : (t1: T, t2: T, u: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t1 : T > : ^ >t2 : T @@ -788,17 +788,17 @@ declare function baz(t1: T, t2: T, u: U): [T, U]; let f60 = wrap3(baz); >f60 : (a: T, b1: U, b2: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ >wrap3(baz) : (a: T, b1: U, b2: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >baz : (t1: T, t2: T, u: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ declare const list2: { >list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ (a: T): T[]; >a : T @@ -817,25 +817,25 @@ let f70 = pipe(list2, box); >f70 : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(list2, box) : (a: T) => { value: T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ let f71 = pipe(box, list2); >f71 : (x: V) => { value: V; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(box, list2) : (x: V) => { value: V; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >box : (x: V) => { value: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare class Point { >Point : Point @@ -866,7 +866,7 @@ declare class Bag { contains(value: T): boolean; >contains : (value: T) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ @@ -877,21 +877,21 @@ declare class Bag { function asFunction(cf: new (...args: A) => B) { >asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >cf : new (...args: A) => B -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >args : A > : ^ return (...args: A) => new cf(...args); >(...args: A) => new cf(...args) : (...args: A) => B -> : ^^^^^^^^^^ ^^^^^^ +> : ^^^^ ^^ ^^^^^^ >args : A > : ^ >new cf(...args) : B > : ^ >cf : new (...args: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^ >...args : any > : ^^^ >args : A @@ -902,19 +902,19 @@ const newPoint = asFunction(Point); >newPoint : (x: number, y: number) => Point > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asFunction(Point) : (x: number, y: number) => Point -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >Point : typeof Point > : ^^^^^^^^^^^^ const newBag = asFunction(Bag); >newBag : (...args: T[]) => Bag -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^ >asFunction(Bag) : (...args: T[]) => Bag -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >Bag : typeof Bag > : ^^^^^^^^^^ @@ -962,7 +962,7 @@ const bag2 = newBag('a', 'b', 'c'); >newBag('a', 'b', 'c') : Bag > : ^^^^^^^^^^^ >newBag : (...args: T[]) => Bag -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" @@ -991,7 +991,7 @@ type CompClass

    = new (props: P) => Comp

    ; declare function myHoc

    (C: CompClass

    ): CompClass

    ; >myHoc :

    (C: CompClass

    ) => CompClass

    -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >C : CompClass

    > : ^^^^^^^^^^^^ @@ -1011,11 +1011,11 @@ declare class GenericComp extends Comp> {} const GenericComp2 = myHoc(GenericComp); >GenericComp2 : new (props: GenericProps) => Comp> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myHoc(GenericComp) : new (props: GenericProps) => Comp> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >myHoc :

    (C: CompClass

    ) => CompClass

    -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >GenericComp : typeof GenericComp > : ^^^^^^^^^^^^^^^^^^ @@ -1023,25 +1023,25 @@ const GenericComp2 = myHoc(GenericComp); function mirror(f: (a: A) => B): (a: A) => B { return f; } >mirror : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A > : ^ >f : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ var identityM = mirror(identity); >identityM : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >mirror(identity) : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : >mirror : (f: (a: A) => B) => (a: A) => B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var x = 1; >x : number @@ -1055,7 +1055,7 @@ var y = identity(x); >identity(x) : number > : ^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : number > : ^^^^^^ @@ -1065,7 +1065,7 @@ var z = identityM(x); >identityM(x) : number > : ^^^^^^ >identityM : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >x : number > : ^^^^^^ @@ -1073,7 +1073,7 @@ var z = identityM(x); export function keyOf(value: { key: a; }): a { >keyOf : (value: { key: a; }) => a -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : { key: a; } > : ^^^^^^^ ^^^ >key : a @@ -1105,11 +1105,11 @@ var data: Data[] = []; declare function toKeys(values: a[], toKey: (value: a) => string): string[]; >toKeys : (values: a[], toKey: (value: a) => string) => string[] -> : ^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >values : a[] > : ^^^ >toKey : (value: a) => string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : a > : ^ @@ -1117,19 +1117,19 @@ toKeys(data, keyOf); // Error >toKeys(data, keyOf) : string[] > : ^^^^^^^^ >toKeys : (values: a[], toKey: (value: a) => string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >data : Data[] > : ^^^^^^ >keyOf : (value: { key: a; }) => a -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // #9366 function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { >flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^ ^^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f : (a: a, b: b) => c -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : a > : ^ >b : b @@ -1141,7 +1141,7 @@ function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { return (b: b, a: a) => f(a, b); >(b: b, a: a) => f(a, b) : (b: b, a: a) => c -> : ^^^^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >b : b > : ^ >a : a @@ -1149,7 +1149,7 @@ function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { >f(a, b) : c > : ^ >f : (a: a, b: b) => c -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a : a > : ^ >b : b @@ -1157,7 +1157,7 @@ function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { } function zip(x: T, y: U): [T, U] { >zip : (x: T, y: U) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1174,61 +1174,61 @@ function zip(x: T, y: U): [T, U] { var expected: (y: U, x: T) => [T, U] = flip(zip); >expected : (y: U, x: T) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >y : U > : ^ >x : T > : ^ >flip(zip) : (b: U, a: T) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^ >flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^ >zip : (x: T, y: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ var actual = flip(zip); >actual : (b: U, a: T) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ >flip(zip) : (b: U, a: T) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^ >zip : (x: T, y: U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ // #9366 const map = (transform: (t: T) => U) => >map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >(transform: (t: T) => U) => (arr: T[]) => arr.map(transform) : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ +> : >transform : (t: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ (arr: T[]) => arr.map(transform) >(arr: T[]) => arr.map(transform) : (arr: T[]) => U[] -> : ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >arr : T[] > : ^^^ >arr.map(transform) : U[] > : ^^^ >arr.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >arr : T[] > : ^^^ >map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >transform : (t: T) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ const identityStr = (t: string) => t; >identityStr : (t: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(t: string) => t : (t: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >t : string > : ^^^^^^ >t : string @@ -1240,11 +1240,11 @@ const arr: string[] = map(identityStr)(['a']); >map(identityStr)(['a']) : string[] > : ^^^^^^^^ >map(identityStr) : (arr: string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >identityStr : (t: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >['a'] : string[] > : ^^^^^^^^ >'a' : "a" @@ -1256,11 +1256,11 @@ const arr1: string[] = map(identity)(['a']); >map(identity)(['a']) : string[] > : ^^^^^^^^ >map(identity) : (arr: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^ >map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >['a'] : string[] > : ^^^^^^^^ >'a' : "a" @@ -1270,7 +1270,7 @@ const arr1: string[] = map(identity)(['a']); function of2(one: a, two: b): [a, b] { >of2 : (one: a, two: b) => [a, b] -> : ^ ^^ ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >one : a > : ^ >two : b @@ -1287,13 +1287,13 @@ function of2(one: a, two: b): [a, b] { const flipped = flip(of2); >flipped : (b: b, a: a) => [a, b] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ >flip(of2) : (b: b, a: a) => [a, b] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^ >of2 : (one: a, two: b) => [a, b] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ // #29904.1 @@ -1305,13 +1305,13 @@ type Component

    = (props: P) => {}; declare const myHoc1:

    (C: Component

    ) => Component

    ; >myHoc1 :

    (C: Component

    ) => Component

    -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >C : Component

    > : ^^^^^^^^^^^^ declare const myHoc2:

    (C: Component

    ) => Component

    ; >myHoc2 :

    (C: Component

    ) => Component

    -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >C : Component

    > : ^^^^^^^^^^^^ @@ -1325,17 +1325,17 @@ const enhance = pipe( >enhance :

    (C: Component

    ) => Component

    > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe( myHoc1, myHoc2,) :

    (C: Component

    ) => Component

    -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ myHoc1, >myHoc1 :

    (C: Component

    ) => Component

    -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ myHoc2, >myHoc2 :

    (C: Component

    ) => Component

    -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ); @@ -1343,7 +1343,7 @@ const MyComponent2 = enhance(MyComponent1); >MyComponent2 : Component<{ foo: 1; }> > : ^^^^^^^^^^^^^^^^^^^^^^ >enhance(MyComponent1) : Component<{ foo: 1; }> -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^ >enhance :

    (C: Component

    ) => Component

    > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyComponent1 : Component<{ foo: 1; }> @@ -1355,11 +1355,11 @@ const fn20 = pipe((_a?: {}) => 1); >fn20 : (_a?: {} | undefined) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe((_a?: {}) => 1) : (_a?: {} | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ >(_a?: {}) => 1 : (_a?: {}) => number -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >_a : {} | undefined > : ^^^^^^^^^^^^^^ >1 : 1 @@ -1379,11 +1379,11 @@ const fn30: Fn = pipe( >pipe( x => x + 1, x => x * 2,) : (x: number) => number > : ^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ x => x + 1, >x => x + 1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + 1 : number @@ -1395,7 +1395,7 @@ const fn30: Fn = pipe( x => x * 2, >x => x * 2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x * 2 : number @@ -1413,11 +1413,11 @@ const promise = Promise.resolve(1); >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -1425,21 +1425,21 @@ promise.then( >promise.then( pipe( x => x + 1, x => x * 2, ),) : Promise > : ^^^^^^^^^^^^^^^ >promise.then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >promise : Promise > : ^^^^^^^^^^^^^^^ >then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pipe( >pipe( x => x + 1, x => x * 2, ) : (x: number) => number > : ^^^^^^^^^^^^^^^^^^^^^ >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ x => x + 1, >x => x + 1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + 1 : number @@ -1451,7 +1451,7 @@ promise.then( x => x * 2, >x => x * 2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x * 2 : number @@ -1472,13 +1472,13 @@ declare const getString: () => string; declare const orUndefined: (name: string) => string | undefined; >orUndefined : (name: string) => string | undefined -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ declare const identity: (value: T) => T; >identity : (value: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -1486,9 +1486,9 @@ const fn40 = pipe( >fn40 : () => string | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^ >pipe( getString, string => orUndefined(string), identity,) : () => string | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ getString, >getString : () => string @@ -1496,19 +1496,19 @@ const fn40 = pipe( string => orUndefined(string), >string => orUndefined(string) : (string: string) => string | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >string : string > : ^^^^^^ >orUndefined(string) : string | undefined > : ^^^^^^^^^^^^^^^^^^ >orUndefined : (name: string) => string | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >string : string > : ^^^^^^ identity, >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ); @@ -1520,7 +1520,7 @@ declare const getArray: () => string[]; declare const first: (ts: T[]) => T; >first : (ts: T[]) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ts : T[] > : ^^^ @@ -1528,9 +1528,9 @@ const fn60 = pipe( >fn60 : () => string > : ^^^^^^^^^^^^ >pipe( getArray, x => x, first,) : () => string -> : ^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ getArray, >getArray : () => string[] @@ -1538,7 +1538,7 @@ const fn60 = pipe( x => x, >x => x : (x: string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >x : string[] @@ -1546,7 +1546,7 @@ const fn60 = pipe( first, >first : (ts: T[]) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ); @@ -1554,9 +1554,9 @@ const fn61 = pipe( >fn61 : () => string > : ^^^^^^^^^^^^ >pipe( getArray, identity, first,) : () => string -> : ^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ getArray, >getArray : () => string[] @@ -1564,11 +1564,11 @@ const fn61 = pipe( identity, >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ first, >first : (ts: T[]) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ); @@ -1576,9 +1576,9 @@ const fn62 = pipe( >fn62 : () => string > : ^^^^^^^^^^^^ >pipe( getArray, x => x, x => first(x),) : () => string -> : ^^^^^^^^^^^^ +> : >pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_2) => B_2, bc: (b: B_2) => C_1, cd: (c: C_1) => D): (...args: A_2) => D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ getArray, >getArray : () => string[] @@ -1586,7 +1586,7 @@ const fn62 = pipe( x => x, >x => x : (x: string[]) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >x : string[] @@ -1594,13 +1594,13 @@ const fn62 = pipe( x => first(x), >x => first(x) : (x: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >x : string[] > : ^^^^^^^^ >first(x) : string > : ^^^^^^ >first : (ts: T[]) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : string[] > : ^^^^^^^^ @@ -1610,7 +1610,7 @@ const fn62 = pipe( declare function foo2(fn: T, a?: U, b?: U): [T, U]; >foo2 : (fn: T, a?: U, b?: U) => [T, U] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >fn : T > : ^ >a : U | undefined @@ -1620,27 +1620,27 @@ declare function foo2(fn: T, a?: U, b?: U): [T, U]; foo2(() => {}); >foo2(() => {}) : [() => void, () => void] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ->foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ foo2(identity); >foo2(identity) : [(value: T) => T, (value: T) => T] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^ ^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ foo2(identity, 1); >foo2(identity, 1) : [(value: T) => T, number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo2 : (fn: T, a?: U | undefined, b?: U | undefined) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ @@ -1648,9 +1648,9 @@ foo2(identity, 1); declare function times(fn: (i: number) => T): (n: number) => T[]; >times : (fn: (i: number) => T) => (n: number) => T[] -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >fn : (i: number) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >i : number > : ^^^^^^ >n : number @@ -1662,11 +1662,11 @@ const a2 = times(identity)(5); // => [0, 1, 2, 3, 4] >times(identity)(5) : number[] > : ^^^^^^^^ >times(identity) : (n: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >times : (fn: (i: number) => T) => (n: number) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/genericFunctionInference2.types b/tests/baselines/reference/genericFunctionInference2.types index d51cd7f79038e..6d5a38aae53d7 100644 --- a/tests/baselines/reference/genericFunctionInference2.types +++ b/tests/baselines/reference/genericFunctionInference2.types @@ -11,7 +11,7 @@ type Reducer = (state: S) => S; declare function combineReducers(reducers: { [K in keyof S]: Reducer }): Reducer; >combineReducers : (reducers: { [K in keyof S]: Reducer; }) => Reducer -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >reducers : { [K in keyof S]: Reducer; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -33,7 +33,7 @@ const myReducer1: Reducer = combineReducers({ >combineReducers({ combined: combineReducers({ foo }),}) : Reducer<{ combined: { foo: number; }; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >combineReducers : (reducers: { [K in keyof S]: Reducer; }) => Reducer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ >{ combined: combineReducers({ foo }),} : { combined: Reducer<{ foo: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -43,7 +43,7 @@ const myReducer1: Reducer = combineReducers({ >combineReducers({ foo }) : Reducer<{ foo: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >combineReducers : (reducers: { [K in keyof S]: Reducer; }) => Reducer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ >{ foo } : { foo: Reducer; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : Reducer @@ -57,7 +57,7 @@ const myReducer2 = combineReducers({ >combineReducers({ combined: combineReducers({ foo }),}) : Reducer<{ combined: { foo: number; }; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >combineReducers : (reducers: { [K in keyof S]: Reducer; }) => Reducer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ >{ combined: combineReducers({ foo }),} : { combined: Reducer<{ foo: number; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -67,7 +67,7 @@ const myReducer2 = combineReducers({ >combineReducers({ foo }) : Reducer<{ foo: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >combineReducers : (reducers: { [K in keyof S]: Reducer; }) => Reducer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ >{ foo } : { foo: Reducer; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : Reducer @@ -79,7 +79,7 @@ const myReducer2 = combineReducers({ declare function withH(handlerCreators: HandleCreatorsFactory): U; >withH : (handlerCreators: HandleCreatorsFactory) => U -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >handlerCreators : HandleCreatorsFactory > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -99,40 +99,40 @@ type HandleCreatorsFactory = (initialProps: T) => { [P in keyof U]: (props const enhancer4 = withH((props: Props) => ({ >enhancer4 : { onChange: (e: any) => void; onSubmit: (e: any) => void; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >withH((props: Props) => ({ onChange: (props) => (e: any) => {}, onSubmit: (props) => (e: any) => {},})) : { onChange: (e: any) => void; onSubmit: (e: any) => void; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ >withH : (handlerCreators: HandleCreatorsFactory) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >(props: Props) => ({ onChange: (props) => (e: any) => {}, onSubmit: (props) => (e: any) => {},}) : (props: Props) => { onChange: (props: Props) => (e: any) => void; onSubmit: (props: Props) => (e: any) => void; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >props : Props > : ^^^^^ >({ onChange: (props) => (e: any) => {}, onSubmit: (props) => (e: any) => {},}) : { onChange: (props: Props) => (e: any) => void; onSubmit: (props: Props) => (e: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ onChange: (props) => (e: any) => {}, onSubmit: (props) => (e: any) => {},} : { onChange: (props: Props) => (e: any) => void; onSubmit: (props: Props) => (e: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ onChange: (props) => (e: any) => {}, >onChange : (props: Props) => (e: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(props) => (e: any) => {} : (props: Props) => (e: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >props : Props > : ^^^^^ >(e: any) => {} : (e: any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >e : any onSubmit: (props) => (e: any) => {}, >onSubmit : (props: Props) => (e: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(props) => (e: any) => {} : (props: Props) => (e: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >props : Props > : ^^^^^ >(e: any) => {} : (e: any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >e : any })); @@ -141,9 +141,9 @@ enhancer4.onChange(null); >enhancer4.onChange(null) : void > : ^^^^ >enhancer4.onChange : (e: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >enhancer4 : { onChange: (e: any) => void; onSubmit: (e: any) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >onChange : (e: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericFunctionParameters.types b/tests/baselines/reference/genericFunctionParameters.types index e19cb35f217b6..de7669f09482b 100644 --- a/tests/baselines/reference/genericFunctionParameters.types +++ b/tests/baselines/reference/genericFunctionParameters.types @@ -3,25 +3,25 @@ === genericFunctionParameters.ts === declare function f1(cb: (x: S) => T): T; >f1 : (cb: (x: S) => T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (x: S) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : S > : ^ declare function f2(cb: (x: S) => T): T; >f2 : (cb: (x: S) => T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (x: S) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : S > : ^ declare function f3(cb: >(x: S) => T): T; >f3 : (cb: >(x: S) => T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : (x: S) => T -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^ >x : S > : ^ @@ -31,9 +31,9 @@ let x1 = f1(x => x); // {} >f1(x => x) : unknown > : ^^^^^^^ >f1 : (cb: (x: S) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x => x : (x: S) => S -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >x : S > : ^ >x : S @@ -45,9 +45,9 @@ let x2 = f2(x => x); // number >f2(x => x) : number > : ^^^^^^ >f2 : (cb: (x: S) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x => x : (x: S) => S -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >x : S > : ^ >x : S @@ -58,10 +58,10 @@ let x3 = f3(x => x); // Array > : ^^^^^ >f3(x => x) : any[] > : ^^^^^ ->f3 : (cb: (x: S) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f3 : (cb: >(x: S) => T) => T +> : ^ ^^ ^^ ^^^^^^ >x => x : (x: S) => S -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ >x : S > : ^ >x : S @@ -71,9 +71,9 @@ let x3 = f3(x => x); // Array declare const s: (go: (ops: { init(): S; }) => R) => R; >s : (go: (ops: { init(): S; }) => R) => R -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >go : (ops: { init(): S; }) => R -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ops : { init(): S; } > : ^^^^^^^^^^ ^^^ >init : () => S @@ -85,9 +85,9 @@ const x = s(a => a.init()); // x is any, should have been {} >s(a => a.init()) : unknown > : ^^^^^^^ >s : (go: (ops: { init(): S; }) => R) => R -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a => a.init() : (a: { init(): S; }) => S -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : { init(): S; } > : ^^^^^^^^^^^^^^ >a.init() : S diff --git a/tests/baselines/reference/genericFunctionSpecializations1.types b/tests/baselines/reference/genericFunctionSpecializations1.types index 502cc7cc2fdb5..4be8b61fb266d 100644 --- a/tests/baselines/reference/genericFunctionSpecializations1.types +++ b/tests/baselines/reference/genericFunctionSpecializations1.types @@ -3,25 +3,25 @@ === genericFunctionSpecializations1.ts === function foo3(test: string); // error >foo3 : (test: string) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >test : string > : ^^^^^^ function foo3(test: T) { } >foo3 : (test: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^ >test : T > : ^ function foo4(test: string); // valid >foo4 : (test: string) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >test : string > : ^^^^^^ function foo4(test: T) { } >foo4 : (test: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^ >test : T > : ^ diff --git a/tests/baselines/reference/genericFunctionTypedArgumentsAreFixed.types b/tests/baselines/reference/genericFunctionTypedArgumentsAreFixed.types index 271790c183fe6..286e5c98653e6 100644 --- a/tests/baselines/reference/genericFunctionTypedArgumentsAreFixed.types +++ b/tests/baselines/reference/genericFunctionTypedArgumentsAreFixed.types @@ -3,9 +3,9 @@ === genericFunctionTypedArgumentsAreFixed.ts === declare function map(f: (x: T) => U, xs: T[]): U[]; >map : (f: (x: T) => U, xs: T[]) => U[] -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >f : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >xs : T[] @@ -15,9 +15,9 @@ map((a) => a.length, [1]); >map((a) => a.length, [1]) : any[] > : ^^^^^ >map : (f: (x: T) => U, xs: T[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >(a) => a.length : (a: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a.length : any diff --git a/tests/baselines/reference/genericFunctions0.types b/tests/baselines/reference/genericFunctions0.types index df033830f9add..650dc5c083a73 100644 --- a/tests/baselines/reference/genericFunctions0.types +++ b/tests/baselines/reference/genericFunctions0.types @@ -3,7 +3,7 @@ === genericFunctions0.ts === function foo (x: T) { return x; } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -15,7 +15,7 @@ var x = foo(5); // 'x' should be number >foo(5) : number > : ^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/genericFunctions1.types b/tests/baselines/reference/genericFunctions1.types index f7eea60634ca1..9ebb9f32b2e47 100644 --- a/tests/baselines/reference/genericFunctions1.types +++ b/tests/baselines/reference/genericFunctions1.types @@ -3,7 +3,7 @@ === genericFunctions1.ts === function foo (x: T) { return x; } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -15,7 +15,7 @@ var x = foo(5); // 'x' should be number >foo(5) : 5 > : ^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/genericFunctions2.types b/tests/baselines/reference/genericFunctions2.types index 052c25d0b11f2..eee3dbf6eb352 100644 --- a/tests/baselines/reference/genericFunctions2.types +++ b/tests/baselines/reference/genericFunctions2.types @@ -3,11 +3,11 @@ === genericFunctions2.ts === declare function map (items: T[], f: (x: T) => U): U[]; >map : (items: T[], f: (x: T) => U) => U[] -> : ^ ^^ ^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >items : T[] > : ^^^ >f : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -21,11 +21,11 @@ var lengths = map(myItems, x => x.length); >map(myItems, x => x.length) : number[] > : ^^^^^^^^ >map : (items: T[], f: (x: T) => U) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >myItems : string[] > : ^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/genericFunctions3.types b/tests/baselines/reference/genericFunctions3.types index b0e2f038c395c..30c8b793de3aa 100644 --- a/tests/baselines/reference/genericFunctions3.types +++ b/tests/baselines/reference/genericFunctions3.types @@ -4,20 +4,20 @@ interface Query { foo(x: string): Query; >foo : (x: string) => Query -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } function from(arg: boolean): Query; // was Error: Overload signature is not compatible with function definition. >from : (arg: boolean) => Query -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arg : boolean > : ^^^^^^^ function from(arg: any): Query { >from : (arg: boolean) => Query -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^ >arg : any return undefined; diff --git a/tests/baselines/reference/genericFunctionsAndConditionalInference.types b/tests/baselines/reference/genericFunctionsAndConditionalInference.types index 7ffb1ee2d6f44..2cee97c9114b2 100644 --- a/tests/baselines/reference/genericFunctionsAndConditionalInference.types +++ b/tests/baselines/reference/genericFunctionsAndConditionalInference.types @@ -9,13 +9,13 @@ type Boxified = { [P in keyof T]: { value: T[P]} }; declare function unboxify(obj: Boxified): T; >unboxify : (obj: Boxified) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : Boxified > : ^^^^^^^^^^^ function foo(obj: { u: { value: U }, v: { value: V } }) { >foo : (obj: { u: { value: U; }; v: { value: V; }; }) => { u: U; v: V; } -> : ^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >obj : { u: { value: U; }; v: { value: V; }; } > : ^^^^^ ^^^^^ ^^^ >u : { value: U; } @@ -31,7 +31,7 @@ function foo(obj: { u: { value: U }, v: { value: V } }) { >unboxify(obj) : { u: U; v: V; } > : ^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >obj : { u: { value: U; }; v: { value: V; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -42,7 +42,7 @@ let qq = foo({ u: { value: 10 }, v: { value: 'hello'} }); // { u: U, v: V } but >foo({ u: { value: 10 }, v: { value: 'hello'} }) : { u: number; v: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (obj: { u: { value: U; }; v: { value: V; }; }) => { u: U; v: V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >{ u: { value: 10 }, v: { value: 'hello'} } : { u: { value: number; }; v: { value: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >u : { value: number; } @@ -99,7 +99,7 @@ interface Ops { lr(a: Result, o: Result): Result> >lr : (a: Result, o: Result) => Result> -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : Result > : ^^^^^^^^^^^^ >o : Result @@ -107,7 +107,7 @@ interface Ops { dict:

    (p: {[k in keyof P]: Result}) => Result >dict :

    (p: { [k in keyof P]: Result; }) => Result -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >p : { [k in keyof P]: Result; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -127,9 +127,9 @@ const right: Ops<"right"> = {} as any const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) >ok : >(at: Ops) => { lr: Result>; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(at: Ops) => ({lr: at.lr(at.str, at.num)}) : >(at: Ops) => { lr: Result>; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >at : Ops > : ^^^^^^ >({lr: at.lr(at.str, at.num)}) : { lr: Result>; } @@ -141,11 +141,11 @@ const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) >at.lr(at.str, at.num) : Result> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at.lr : (a: Result, o: Result) => Result> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at : Ops > : ^^^^^^ >lr : (a: Result, o: Result) => Result> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at.str : Result > : ^^^^^^^^^^^^^^^^^ >at : Ops @@ -161,23 +161,23 @@ const ok = (at: Ops) => ({lr: at.lr(at.str, at.num)}) const orphaned = (at: Ops) => at.dict(ok(at)) >orphaned : >(at: Ops) => Result; }> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(at: Ops) => at.dict(ok(at)) : >(at: Ops) => Result; }> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >at : Ops > : ^^^^^^ >at.dict(ok(at)) : Result; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at.dict :

    (p: { [k in keyof P]: Result; }) => Result -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at : Ops > : ^^^^^^ >dict :

    (p: { [k in keyof P]: Result; }) => Result -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ok(at) : { lr: Result>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ok : >(at: Ops) => { lr: Result>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at : Ops > : ^^^^^^ @@ -185,9 +185,9 @@ const leftOk = ok(left) >leftOk : { lr: string; } > : ^^^^^^^^^^^^^^^ >ok(left) : { lr: string; } -> : ^^^^^^^^^^^^^^^ +> : >ok : >(at: Ops) => { lr: Result>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >left : Ops<"left"> > : ^^^^^^^^^^^ @@ -197,7 +197,7 @@ const leftOrphaned = orphaned(left) >orphaned(left) : { lr: string; } > : ^^^^^^^^^^^^^^^ >orphaned : >(at: Ops) => Result; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >left : Ops<"left"> > : ^^^^^^^^^^^ @@ -205,9 +205,9 @@ const rightOk = ok(right) >rightOk : { lr: number; } > : ^^^^^^^^^^^^^^^ >ok(right) : { lr: number; } -> : ^^^^^^^^^^^^^^^ +> : >ok : >(at: Ops) => { lr: Result>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >right : Ops<"right"> > : ^^^^^^^^^^^^ @@ -217,7 +217,7 @@ const rightOrphaned = orphaned(right) >orphaned(right) : { lr: number; } > : ^^^^^^^^^^^^^^^ >orphaned : >(at: Ops) => Result; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >right : Ops<"right"> > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericFunctionsNotContextSensitive.types b/tests/baselines/reference/genericFunctionsNotContextSensitive.types index ed68b1f7f4f30..9ab10fa84e51d 100644 --- a/tests/baselines/reference/genericFunctionsNotContextSensitive.types +++ b/tests/baselines/reference/genericFunctionsNotContextSensitive.types @@ -5,9 +5,9 @@ const f = (x: G) => void>(_: F): F => _; >f : (x: G) => void>(_: F) => F -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ > (x: G) => void>(_: F): F => _ : (x: G) => void>(_: F) => F -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^^^ >args : any[] > : ^^^^^ >x : G @@ -19,17 +19,17 @@ const f = (x: G) => void>(_: F): F => _; const a = f((_: K) => _ => ({})); // (_: K) => (_: G) => {} >a : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^ >f((_: K) => _ => ({})) : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : >f : (x: G) => void>(_: F) => F -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^ >(_: K) => _ => ({}) : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^ >_ : K > : ^ >_ => ({}) : (_: G) => {} -> : ^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^ >_ : G > : ^ >({}) : {} diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types index a5012ea46ff34..e29493967abea 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters1.types @@ -4,11 +4,11 @@ interface Utils { fold(c?: Array, folder?: (s: S, t: T) => T, init?: S): T; >fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >c : T[] > : ^^^ >folder : (s: S, t: T) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : S > : ^ >t : T @@ -24,40 +24,40 @@ var utils: Utils; utils.fold(); // no error >utils.fold() : unknown > : ^^^^^^^ ->utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null); // no error >utils.fold(null) : unknown > : ^^^^^^^ ->utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null, null); // no error >utils.fold(null, null) : unknown > : ^^^^^^^ ->utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null, null, null); // no error >utils.fold(null, null, null) : unknown > : ^^^^^^^ ->utils.fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c?: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c?: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters2.types b/tests/baselines/reference/genericFunctionsWithOptionalParameters2.types index d909b296474cb..47e89616a9113 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters2.types +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters2.types @@ -4,11 +4,11 @@ interface Utils { fold(c: Array, folder?: (s: S, t: T) => T, init?: S): T; >fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T -> : ^ ^^ ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >c : T[] > : ^^^ >folder : (s: S, t: T) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : S > : ^ >t : T @@ -24,40 +24,40 @@ var utils: Utils; utils.fold(); // error >utils.fold() : unknown > : ^^^^^^^ ->utils.fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null); // no error >utils.fold(null) : unknown > : ^^^^^^^ ->utils.fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null, null); // no error >utils.fold(null, null) : unknown > : ^^^^^^^ ->utils.fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ utils.fold(null, null, null); // error: Unable to invoke type with no call signatures >utils.fold(null, null, null) : unknown > : ^^^^^^^ ->utils.fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>utils.fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >utils : Utils > : ^^^^^ ->fold : (c: T[], folder?: (s: S, t: T) => T, init?: S) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fold : (c: Array, folder?: (s: S, t: T) => T, init?: S) => T +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ diff --git a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types index 4d301c220082e..51f3e80761e96 100644 --- a/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types +++ b/tests/baselines/reference/genericFunctionsWithOptionalParameters3.types @@ -7,18 +7,18 @@ class Collection { public add(x: T) { } >add : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ } interface Utils { fold(c?: Collection, folder?: (s: S, t: T) => T, init?: S): T; >fold : (c?: Collection, folder?: (s: S, t: T) => T, init?: S) => T -> : ^ ^^ ^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >c : Collection > : ^^^^^^^^^^^^^ >folder : (s: S, t: T) => T -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >s : S > : ^ >t : T @@ -28,15 +28,15 @@ interface Utils { mapReduce(c: Collection, mapper: (x: T) => U, reducer: (y: U) => V): Collection; >mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >c : Collection > : ^^^^^^^^^^^^^ >mapper : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >reducer : (y: U) => V -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : U > : ^ } @@ -58,21 +58,21 @@ var r3 = utils.mapReduce(c, (x) => { return 1 }, (y) => { return new Date() }); >utils.mapReduce(c, (x) => { return 1 }, (y) => { return new Date() }) : Collection > : ^^^^^^^^^^^^^^^^ >utils.mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >utils : Utils > : ^^^^^ >mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >c : Collection > : ^^^^^^^^^^^^^^^^^^ >(x) => { return 1 } : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 > : ^ >(y) => { return new Date() } : (y: number) => Date -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >new Date() : Date @@ -86,21 +86,21 @@ var r4 = utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return >utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return new Date() }) : Collection > : ^^^^^^^^^^^^^^^^ >utils.mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >utils : Utils > : ^^^^^ >mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >c : Collection > : ^^^^^^^^^^^^^^^^^^ >(x: string) => { return 1 } : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >1 : 1 > : ^ >(y: number) => { return new Date() } : (y: number) => Date -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >y : number > : ^^^^^^ >new Date() : Date @@ -110,9 +110,9 @@ var r4 = utils.mapReduce(c, (x: string) => { return 1 }, (y: number) => { return var f1 = (x: string) => { return 1 }; >f1 : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: string) => { return 1 } : (x: string) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >1 : 1 @@ -120,9 +120,9 @@ var f1 = (x: string) => { return 1 }; var f2 = (y: number) => { return new Date() }; >f2 : (y: number) => Date -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(y: number) => { return new Date() } : (y: number) => Date -> : ^^^^ ^^^^^^^^^ +> : >y : number > : ^^^^^^ >new Date() : Date @@ -136,15 +136,15 @@ var r5 = utils.mapReduce(c, f1, f2); >utils.mapReduce(c, f1, f2) : Collection > : ^^^^^^^^^^^^^^^^ >utils.mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >utils : Utils > : ^^^^^ >mapReduce : (c: Collection, mapper: (x: T) => U, reducer: (y: U) => V) => Collection -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >c : Collection > : ^^^^^^^^^^^^^^^^^^ >f1 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f2 : (y: number) => Date -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types b/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types index faf298019e5f2..a069791dd08c0 100644 --- a/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types +++ b/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types @@ -29,9 +29,9 @@ type Service = { export const createService = ( >createService : (ServiceCtr: ExtendedService & Service) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >( ServiceCtr: ExtendedService & Service) => { Object.keys(ServiceCtr).forEach(key => { const method = (ServiceCtr)[key as keyof T]; const {__$daemonMode, __$action, id} = method; })} : (ServiceCtr: ExtendedService & Service) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ServiceCtr: ExtendedService & Service >ServiceCtr : ExtendedService & Service @@ -42,21 +42,21 @@ export const createService = ( >Object.keys(ServiceCtr).forEach(key => { const method = (ServiceCtr)[key as keyof T]; const {__$daemonMode, __$action, id} = method; }) : void > : ^^^^ >Object.keys(ServiceCtr).forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >Object.keys(ServiceCtr) : string[] > : ^^^^^^^^ >Object.keys : (o: object) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >keys : (o: object) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >ServiceCtr : ExtendedService & Service > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >forEach : (callbackfn: (value: string, index: number, array: string[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >key => { const method = (ServiceCtr)[key as keyof T]; const {__$daemonMode, __$action, id} = method; } : (key: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >key : string > : ^^^^^^ diff --git a/tests/baselines/reference/genericInference1.types b/tests/baselines/reference/genericInference1.types index e8bcbc8c59227..6ea3242e287c3 100644 --- a/tests/baselines/reference/genericInference1.types +++ b/tests/baselines/reference/genericInference1.types @@ -5,7 +5,7 @@ >['a', 'b', 'c'].map(x => x.length) : number[] > : ^^^^^^^^ >['a', 'b', 'c'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >['a', 'b', 'c'] : string[] > : ^^^^^^^^ >'a' : "a" @@ -15,9 +15,9 @@ >'c' : "c" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/genericInference2.types b/tests/baselines/reference/genericInference2.types index cdaff070ed6e7..0f71d05f19314 100644 --- a/tests/baselines/reference/genericInference2.types +++ b/tests/baselines/reference/genericInference2.types @@ -25,7 +25,7 @@ } export function observable(value: T): Observable; >observable : (value: T) => Observable -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ } @@ -41,11 +41,11 @@ >ko.observable("Bob") : ko.Observable > : ^^^^^^^^^^^^^^^^^^^^^ >ko.observable : (value: T) => ko.Observable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >ko : typeof ko > : ^^^^^^^^^ >observable : (value: T) => ko.Observable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >"Bob" : "Bob" > : ^^^^^ @@ -55,11 +55,11 @@ >ko.observable(37) : ko.Observable > : ^^^^^^^^^^^^^^^^^^^^^ >ko.observable : (value: T) => ko.Observable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >ko : typeof ko > : ^^^^^^^^^ >observable : (value: T) => ko.Observable -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >37 : 37 > : ^^ diff --git a/tests/baselines/reference/genericInferenceDefaultTypeParameter.types b/tests/baselines/reference/genericInferenceDefaultTypeParameter.types index 32efbfeb5a5af..14b10e20ad68b 100644 --- a/tests/baselines/reference/genericInferenceDefaultTypeParameter.types +++ b/tests/baselines/reference/genericInferenceDefaultTypeParameter.types @@ -9,20 +9,20 @@ type Type = { a: (e: string) => void; >a : (e: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : string > : ^^^^^^ b: (e: number) => void; >b : (e: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : number > : ^^^^^^ } declare function f1(props: Type[T]): void; >f1 : (props: Type[T]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >props : Type[T] > : ^^^^^^^ @@ -30,9 +30,9 @@ f1(event => { }); >f1(event => { }) : void > : ^^^^ >f1 : (props: Type[T]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >event => { } : (event: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >event : string > : ^^^^^^ @@ -40,9 +40,9 @@ f1<"a">(event => { }); >f1<"a">(event => { }) : void > : ^^^^ >f1 : (props: Type[T]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >event => { } : (event: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >event : string > : ^^^^^^ @@ -50,9 +50,9 @@ f1<"b">(event => { }); >f1<"b">(event => { }) : void > : ^^^^ >f1 : (props: Type[T]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >event => { } : (event: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >event : number > : ^^^^^^ diff --git a/tests/baselines/reference/genericInferenceDefaultTypeParameterJsxReact.types b/tests/baselines/reference/genericInferenceDefaultTypeParameterJsxReact.types index 91eebeefba75a..9e97379f13d94 100644 --- a/tests/baselines/reference/genericInferenceDefaultTypeParameterJsxReact.types +++ b/tests/baselines/reference/genericInferenceDefaultTypeParameterJsxReact.types @@ -29,7 +29,7 @@ type ButtonBaseProps = ComponentPropsWithRef & { child function Component(props: ButtonBaseProps) { >Component : (props: ButtonBaseProps) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >props : ButtonBaseProps > : ^^^^^^^^^^^^^^^^^^ @@ -44,11 +44,11 @@ const v1 = e.preventDefault()} />; > e.preventDefault()} /> : JSX.Element > : ^^^^^^^^^^^ >Component : (props: ButtonBaseProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >onClick : (e: React.MouseEvent) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e => e.preventDefault() : (e: React.MouseEvent) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : React.MouseEvent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e.preventDefault() : void diff --git a/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.types b/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.types index 10870fcb00866..7e90ea5992393 100644 --- a/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.types +++ b/tests/baselines/reference/genericInstantiationEquivalentToObjectLiteral.types @@ -37,13 +37,13 @@ y = x; declare function f(x: Pair); >f : (x: Pair) => any -> : ^ ^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : Pair > : ^^^^^^^^^^ declare function f2(x: { first: T; second: U; }); >f2 : (x: { first: T; second: U; }) => any -> : ^ ^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : { first: T; second: U; } > : ^^^^^^^^^ ^^^^^^^^^^ ^^^ >first : T @@ -54,28 +54,28 @@ declare function f2(x: { first: T; second: U; }); f(x); >f(x) : any >f : (x: Pair) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : Pair > : ^^^^^^^^^^^^^^^^^^^^ f(y); >f(y) : any >f : (x: Pair) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >y : { first: string; second: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ f2(x); >f2(x) : any >f2 : (x: { first: T; second: U; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >x : Pair > : ^^^^^^^^^^^^^^^^^^^^ f2(y); >f2(y) : any >f2 : (x: { first: T; second: U; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >y : { first: string; second: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericInterfaceFunctionTypeParameter.types b/tests/baselines/reference/genericInterfaceFunctionTypeParameter.types index 75f7e8e5ed972..97d223f1c5710 100644 --- a/tests/baselines/reference/genericInterfaceFunctionTypeParameter.types +++ b/tests/baselines/reference/genericInterfaceFunctionTypeParameter.types @@ -4,9 +4,9 @@ export interface IFoo { } export function foo(fn: (ifoo: IFoo) => void) { >foo : (fn: (ifoo: IFoo) => void) => void -> : ^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >fn : (ifoo: IFoo) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ifoo : IFoo > : ^^^^^^^ @@ -14,9 +14,9 @@ export function foo(fn: (ifoo: IFoo) => void) { >foo(fn) : void > : ^^^^ >foo : (fn: (ifoo: IFoo) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >fn : (ifoo: IFoo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericInterfaceTypeCall.types b/tests/baselines/reference/genericInterfaceTypeCall.types index a8ff5077e0b28..e224193dadce4 100644 --- a/tests/baselines/reference/genericInterfaceTypeCall.types +++ b/tests/baselines/reference/genericInterfaceTypeCall.types @@ -4,7 +4,7 @@ interface Foo { reject(arg: T): void; >reject : (arg: T) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ } @@ -15,17 +15,17 @@ var foo: Foo interface bar { fail(func: (arg: T) => void ): void; >fail : (func: (arg: T) => void) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >func : (arg: T) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ fail2(func2: { (arg: T): void; }): void; >fail2 : (func2: { (arg: T): void; }) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >func2 : (arg: T) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ } @@ -37,23 +37,23 @@ test.fail(arg => foo.reject(arg)); >test.fail(arg => foo.reject(arg)) : void > : ^^^^ >test.fail : (func: (arg: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : bar > : ^^^^^^^^^^^ >fail : (func: (arg: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg => foo.reject(arg) : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : string > : ^^^^^^ >foo.reject(arg) : void > : ^^^^ >foo.reject : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >foo : Foo > : ^^^^^^^^^^^ >reject : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : string > : ^^^^^^ @@ -61,23 +61,23 @@ test.fail2(arg => foo.reject(arg)); // Error: Supplied parameters do not match a >test.fail2(arg => foo.reject(arg)) : void > : ^^^^ >test.fail2 : (func2: (arg: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : bar > : ^^^^^^^^^^^ >fail2 : (func2: (arg: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg => foo.reject(arg) : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : string > : ^^^^^^ >foo.reject(arg) : void > : ^^^^ >foo.reject : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >foo : Foo > : ^^^^^^^^^^^ >reject : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : string > : ^^^^^^ diff --git a/tests/baselines/reference/genericIsNeverEmptyObject.types b/tests/baselines/reference/genericIsNeverEmptyObject.types index fdada192faef3..5880cd6980d8f 100644 --- a/tests/baselines/reference/genericIsNeverEmptyObject.types +++ b/tests/baselines/reference/genericIsNeverEmptyObject.types @@ -5,7 +5,7 @@ function test(obj: T) { >test : (obj: T) => Omit & { b: string; } -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >obj : T @@ -54,7 +54,7 @@ let o2: { b: string, x: number } = test(o1); >test(o1) : Omit<{ a: string; x: number; }, "a"> & { b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : (obj: T) => Omit & { b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o1 : { a: string; x: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericLambaArgWithoutTypeArguments.types b/tests/baselines/reference/genericLambaArgWithoutTypeArguments.types index 7d40f4e91d5e6..5d3d5fe11f6e9 100644 --- a/tests/baselines/reference/genericLambaArgWithoutTypeArguments.types +++ b/tests/baselines/reference/genericLambaArgWithoutTypeArguments.types @@ -8,7 +8,7 @@ interface Foo { } function foo(a) { >foo : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >a : any > : ^^^ @@ -18,9 +18,9 @@ foo((arg: Foo) => { return arg.x; }); >foo((arg: Foo) => { return arg.x; }) : any > : ^^^ >foo : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(arg: Foo) => { return arg.x; } : (arg: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >arg : any > : ^^^ >arg.x : any diff --git a/tests/baselines/reference/genericMemberFunction.types b/tests/baselines/reference/genericMemberFunction.types index 9615bb8a93b33..f62b546bde6dc 100644 --- a/tests/baselines/reference/genericMemberFunction.types +++ b/tests/baselines/reference/genericMemberFunction.types @@ -41,7 +41,7 @@ export class BuildResult{ public merge(other: BuildResult): void { >merge : (other: BuildResult) => void -> : ^ ^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^ >other : BuildResult > : ^^^^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ export class BuildResult{ >forEach : any > : ^^^ >(each: FileWithErrors) => { this.removeFile(each); } : (each: FileWithErrors) => void -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >each : FileWithErrors > : ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericMethodOverspecialization.types b/tests/baselines/reference/genericMethodOverspecialization.types index e8af5d7445715..64745e0ecab8e 100644 --- a/tests/baselines/reference/genericMethodOverspecialization.types +++ b/tests/baselines/reference/genericMethodOverspecialization.types @@ -34,7 +34,7 @@ declare var document: Document; interface Document { getElementById(elementId: string): HTMLElement; >getElementById : { (elementId: string): HTMLElement; (elementId: string): HTMLElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >elementId : string > : ^^^^^^ } @@ -45,13 +45,13 @@ var elements = names.map(function (name) { >names.map(function (name) { return document.getElementById(name);}) : HTMLElement[] > : ^^^^^^^^^^^^^ >names.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >names : string[] > : ^^^^^^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >function (name) { return document.getElementById(name);} : (name: string) => HTMLElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >name : string > : ^^^^^^ @@ -59,11 +59,11 @@ var elements = names.map(function (name) { >document.getElementById(name) : HTMLElement > : ^^^^^^^^^^^ >document.getElementById : { (elementId: string): HTMLElement; (elementId: string): HTMLElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >document : Document > : ^^^^^^^^ >getElementById : { (elementId: string): HTMLElement; (elementId: string): HTMLElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >name : string > : ^^^^^^ @@ -76,13 +76,13 @@ var xxx = elements.filter(function (e) { >elements.filter(function (e) { return !e.isDisabled;}) : HTMLElement[] > : ^^^^^^^^^^^^^ >elements.filter : { (predicate: (value: HTMLElement, index: number, array: HTMLElement[]) => value is S, thisArg?: any): S[]; (predicate: (value: HTMLElement, index: number, array: HTMLElement[]) => unknown, thisArg?: any): HTMLElement[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >elements : HTMLElement[] > : ^^^^^^^^^^^^^ >filter : { (predicate: (value: HTMLElement, index: number, array: HTMLElement[]) => value is S, thisArg?: any): S[]; (predicate: (value: HTMLElement, index: number, array: HTMLElement[]) => unknown, thisArg?: any): HTMLElement[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >function (e) { return !e.isDisabled;} : (e: HTMLElement) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >e : HTMLElement > : ^^^^^^^^^^^ @@ -104,13 +104,13 @@ var widths:number[] = elements.map(function (e) { // should not error >elements.map(function (e) { // should not error return e.clientWidth;}) : number[] > : ^^^^^^^^ >elements.map : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >elements : HTMLElement[] > : ^^^^^^^^^^^^^ >map : (callbackfn: (value: HTMLElement, index: number, array: HTMLElement[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >function (e) { // should not error return e.clientWidth;} : (e: HTMLElement) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >e : HTMLElement > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericNewInterface.types b/tests/baselines/reference/genericNewInterface.types index b845b8780877c..978b039f4e7dd 100644 --- a/tests/baselines/reference/genericNewInterface.types +++ b/tests/baselines/reference/genericNewInterface.types @@ -3,9 +3,9 @@ === genericNewInterface.ts === function createInstance(ctor: new (s: string) => T): T { >createInstance : (ctor: new (s: string) => T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ctor : new (s: string) => T -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ @@ -13,7 +13,7 @@ function createInstance(ctor: new (s: string) => T): T { >new ctor(42) : T > : ^ >ctor : new (s: string) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ } @@ -26,7 +26,7 @@ interface INewable { function createInstance2(ctor: INewable): T { >createInstance2 : (ctor: INewable) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ctor : INewable > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericObjectLitReturnType.types b/tests/baselines/reference/genericObjectLitReturnType.types index 2f7092e564904..d7c5a25a998e5 100644 --- a/tests/baselines/reference/genericObjectLitReturnType.types +++ b/tests/baselines/reference/genericObjectLitReturnType.types @@ -7,7 +7,7 @@ class X { f(t: T) { return { a: t }; } >f : (t: T) => { a: T; } -> : ^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >t : T > : ^ >{ a: t } : { a: T; } @@ -27,13 +27,13 @@ var t1 = x.f(5); >t1 : { a: number; } > : ^^^^^^^^^^^^^^ >x.f(5) : { a: number; } -> : ^^^^^^^^^^^^^^ +> : >x.f : (t: number) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : X > : ^^^^^^^^^ >f : (t: number) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/genericObjectRest.types b/tests/baselines/reference/genericObjectRest.types index e450e1831c490..f872eb3faf4fa 100644 --- a/tests/baselines/reference/genericObjectRest.types +++ b/tests/baselines/reference/genericObjectRest.types @@ -9,7 +9,7 @@ const a = 'a'; function f1(obj: T) { >f1 : (obj: T) => void -> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : number @@ -94,7 +94,7 @@ const sb = Symbol(); function f2(obj: T) { >f2 : (obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^ >[sa] : string > : ^^^^^^ >sa : unique symbol @@ -123,7 +123,7 @@ function f2(obj: T) { function f3(obj: T, k1: K1, k2: K2) { >f3 : (obj: T, k1: K1, k2: K2) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >k1 : K1 @@ -158,7 +158,7 @@ type Item = { a: string, b: number, c: boolean }; function f4(obj: Item, k1: K1, k2: K2) { >f4 : (obj: Item, k1: K1, k2: K2) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Item > : ^^^^ >k1 : K1 diff --git a/tests/baselines/reference/genericObjectSpreadResultInSwitch.types b/tests/baselines/reference/genericObjectSpreadResultInSwitch.types index 773b3967c17b7..e79240058a5fb 100644 --- a/tests/baselines/reference/genericObjectSpreadResultInSwitch.types +++ b/tests/baselines/reference/genericObjectSpreadResultInSwitch.types @@ -21,9 +21,9 @@ type Params = { const getType =

    (params: P) => { >getType :

    (params: P) => Omit -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >

    (params: P) => { const { // Omit foo, ...rest } = params; return rest;} :

    (params: P) => Omit -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : >params : P > : ^ @@ -73,7 +73,7 @@ switch (params.tag) { >getType(params) : Omit<{ foo: string; } & { tag: "a"; type: number; }, "foo"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getType :

    (params: P) => Omit -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >params : { foo: string; } & { tag: "a"; type: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : number @@ -95,7 +95,7 @@ switch (params.tag) { >getType(params) : Omit<{ foo: string; } & { tag: "b"; type: string; }, "foo"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getType :

    (params: P) => Omit -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >params : { foo: string; } & { tag: "b"; type: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : string diff --git a/tests/baselines/reference/genericOfACloduleType1.types b/tests/baselines/reference/genericOfACloduleType1.types index d346f6cf5709b..48815e196a863 100644 --- a/tests/baselines/reference/genericOfACloduleType1.types +++ b/tests/baselines/reference/genericOfACloduleType1.types @@ -5,7 +5,7 @@ class G{ bar(x: T) { return x; } } >G : G > : ^^^^ >bar : (x: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -47,11 +47,11 @@ module M { >g1.bar(null) : C > : ^ >g1.bar : (x: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >g1 : G > : ^^^^ >bar : (x: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/genericOfACloduleType2.types b/tests/baselines/reference/genericOfACloduleType2.types index 28c270010945e..c39881974898d 100644 --- a/tests/baselines/reference/genericOfACloduleType2.types +++ b/tests/baselines/reference/genericOfACloduleType2.types @@ -5,7 +5,7 @@ class G{ bar(x: T) { return x; } } >G : G > : ^^^^ >bar : (x: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -47,11 +47,11 @@ module M { >g1.bar(null) : C > : ^ >g1.bar : (x: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >g1 : G > : ^^^^ >bar : (x: C) => C -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >foo : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/genericOverloadSignatures.types b/tests/baselines/reference/genericOverloadSignatures.types index a2370649b20a5..dd8f05b801599 100644 --- a/tests/baselines/reference/genericOverloadSignatures.types +++ b/tests/baselines/reference/genericOverloadSignatures.types @@ -13,31 +13,31 @@ interface A { function f(a: T); >f : { (a: T): any; (a: T_1): any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ function f(a: T); >f : { (a: T_1): any; (a: T): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ function f(a) { } >f : { (a: T): any; (a: T_1): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >a : any interface I2 { f(x: T): number; >f : { (x: T): number; (x: T_1): string; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^ >x : T > : ^ f(x: T): string; >f : { (x: T_1): number; (x: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ >x : T > : ^ } @@ -45,13 +45,13 @@ interface I2 { interface I3 { f(x: T): number; >f : { (x: T): number; (x: T): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >x : T > : ^ f(x: T): string; >f : { (x: T): number; (x: T): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : T > : ^ } @@ -62,7 +62,7 @@ class C2 { } var b: { >b : { new (x: T, y: string): C2; new (x: T_1, y: string): C2; } -> : ^^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ new (x: T, y: string): C2; >x : T diff --git a/tests/baselines/reference/genericParameterAssignability1.types b/tests/baselines/reference/genericParameterAssignability1.types index fe955cce17024..66361700942bd 100644 --- a/tests/baselines/reference/genericParameterAssignability1.types +++ b/tests/baselines/reference/genericParameterAssignability1.types @@ -3,15 +3,15 @@ === genericParameterAssignability1.ts === function f(x: T): T { return null; } >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ var r = (x: T) => x; >r : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : T > : ^ >x : T @@ -19,9 +19,9 @@ var r = (x: T) => x; r = f; // should be allowed >r = f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >r : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >f : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/genericPrototypeProperty.types b/tests/baselines/reference/genericPrototypeProperty.types index f474e5b0e95f2..ae3827bcaa444 100644 --- a/tests/baselines/reference/genericPrototypeProperty.types +++ b/tests/baselines/reference/genericPrototypeProperty.types @@ -11,7 +11,7 @@ class C { foo(x: T): T { return null; } >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -39,9 +39,9 @@ var r3 = r.foo(null); >r3 : any >r.foo(null) : any >r.foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >r : C > : ^^^^^^ >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors1.types b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors1.types index a357a92f28670..aae626c4291c1 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors1.types +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors1.types @@ -17,7 +17,7 @@ export declare module TypeScript { public addSpecialization(signature: PullSignatureSymbol, typeArguments: PullTypeSymbol[]): void; >addSpecialization : (signature: PullSignatureSymbol, typeArguments: PullTypeSymbol[]) => void -> : ^ ^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >signature : PullSignatureSymbol > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >typeArguments : PullTypeSymbol[] @@ -31,7 +31,7 @@ export declare module TypeScript { public findTypeParameter(name: string): PullTypeParameterSymbol; >findTypeParameter : (name: string) => PullTypeParameterSymbol -> : ^ ^^ ^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >name : string > : ^^^^^^ } diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types index a5065c23120d0..3d8561cad7092 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types @@ -35,7 +35,7 @@ module TypeScript2 { // link methods public addOutgoingLink(linkTo: PullSymbol, kind: SymbolLinkKind) { >addOutgoingLink : (linkTo: PullSymbol, kind: SymbolLinkKind) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >linkTo : PullSymbol > : ^^^^^^^^^^ >kind : SymbolLinkKind diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.types b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.types index 3050c8f57eba3..dc6229de56408 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.types +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors3.types @@ -11,7 +11,7 @@ module TypeScript { static create(arg1: any, arg2?: any, arg3?: any): MemberName { >create : (arg1: any, arg2?: any, arg3?: any) => any -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >arg1 : any > : ^^^ >arg2 : any @@ -46,7 +46,7 @@ module TypeScript { public toString(scopeSymbol?: PullSymbol, useConstraintInName?: boolean) { >toString : (scopeSymbol?: any, useConstraintInName?: boolean) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^ >scopeSymbol : any > : ^^^ >useConstraintInName : boolean @@ -62,11 +62,11 @@ module TypeScript { >this.getScopedNameEx(scopeSymbol, useConstraintInName) : any > : ^^^ >this.getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >this : this > : ^^^^ >getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >scopeSymbol : any > : ^^^ >useConstraintInName : boolean @@ -80,7 +80,7 @@ module TypeScript { } public getScopedNameEx(scopeSymbol?: PullSymbol, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) { >getScopedNameEx : (scopeSymbol?: any, useConstraintInName?: boolean, getPrettyTypeName?: boolean, getTypeParamMarkerInfo?: boolean) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >scopeSymbol : any > : ^^^ >useConstraintInName : boolean @@ -192,11 +192,11 @@ module TypeScript { >MemberName.create(elementMemberName, "", "[]") : any > : ^^^ >MemberName.create : (arg1: any, arg2?: any, arg3?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >MemberName : typeof MemberName > : ^^^^^^^^^^^^^^^^^ >create : (arg1: any, arg2?: any, arg3?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >elementMemberName : any > : ^^^ >"" : "" diff --git a/tests/baselines/reference/genericReduce.types b/tests/baselines/reference/genericReduce.types index be4a7cfebfd6d..83934d814f703 100644 --- a/tests/baselines/reference/genericReduce.types +++ b/tests/baselines/reference/genericReduce.types @@ -21,13 +21,13 @@ var b = a.map(s => s.length); >a.map(s => s.length) : number[] > : ^^^^^^^^ >a.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >a : string[] > : ^^^^^^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -43,13 +43,13 @@ var n1 = b.reduce((x, y) => x + y); >b.reduce((x, y) => x + y) : number > : ^^^^^^ >b.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >b : number[] > : ^^^^^^^^ >reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(x, y) => x + y : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -67,13 +67,13 @@ var n2 = b.reduceRight((x, y) => x + y); >b.reduceRight((x, y) => x + y) : number > : ^^^^^^ >b.reduceRight : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >b : number[] > : ^^^^^^^^ >reduceRight : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(x, y) => x + y : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -101,11 +101,11 @@ n1.toExponential(2); // should not error if 'n1' is correctly number. >n1.toExponential(2) : string > : ^^^^^^ >n1.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >n1 : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ @@ -125,11 +125,11 @@ n2.toExponential(2); // should not error if 'n2' is correctly number. >n2.toExponential(2) : string > : ^^^^^^ >n2.toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >n2 : number > : ^^^^^^ >toExponential : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >2 : 2 > : ^ @@ -139,13 +139,13 @@ var n3 = b.reduce( (x, y) => x + y, ""); // Initial value is of type str >b.reduce( (x, y) => x + y, "") : string > : ^^^^^^ >b.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >b : number[] > : ^^^^^^^^ >reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(x, y) => x + y : (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -175,11 +175,11 @@ n3.charAt(0); // should not error if 'n3' is correctly type 'string' >n3.charAt(0) : string > : ^^^^^^ >n3.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n3 : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/genericRestArgs.types b/tests/baselines/reference/genericRestArgs.types index 779085d38e9c0..68a01a4f14d17 100644 --- a/tests/baselines/reference/genericRestArgs.types +++ b/tests/baselines/reference/genericRestArgs.types @@ -3,7 +3,7 @@ === genericRestArgs.ts === function makeArrayG(...items: T[]): T[] { return items; } >makeArrayG : (...items: T[]) => T[] -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^ ^^ ^^^^^ >items : T[] > : ^^^ >items : T[] @@ -15,7 +15,7 @@ var a1Ga = makeArrayG(1, ""); // no error >makeArrayG(1, "") : number[] > : ^^^^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -27,7 +27,7 @@ var a1Gb = makeArrayG(1, ""); >makeArrayG(1, "") : any[] > : ^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -39,7 +39,7 @@ var a1Gc = makeArrayG(1, ""); >makeArrayG(1, "") : Object[] > : ^^^^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -51,7 +51,7 @@ var a1Gd = makeArrayG(1, ""); // error >makeArrayG(1, "") : number[] > : ^^^^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -59,7 +59,7 @@ var a1Gd = makeArrayG(1, ""); // error function makeArrayGOpt(item1?: T, item2?: T, item3?: T) { >makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => T[] -> : ^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >item1 : T > : ^ >item2 : T @@ -83,7 +83,7 @@ var a2Ga = makeArrayGOpt(1, ""); >makeArrayGOpt(1, "") : number[] > : ^^^^^^^^ >makeArrayGOpt : (item1?: T, item2?: T, item3?: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -95,7 +95,7 @@ var a2Gb = makeArrayG(1, ""); >makeArrayG(1, "") : any[] > : ^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" @@ -107,7 +107,7 @@ var a2Gc = makeArrayG(1, ""); // error >makeArrayG(1, "") : any[][] > : ^^^^^^^ >makeArrayG : (...items: T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" diff --git a/tests/baselines/reference/genericRestArity.types b/tests/baselines/reference/genericRestArity.types index 31fd381011ed6..dd23cf05c7b4f 100644 --- a/tests/baselines/reference/genericRestArity.types +++ b/tests/baselines/reference/genericRestArity.types @@ -5,11 +5,11 @@ declare function call( >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ handler: (...args: TS) => void, >handler : (...args: TS) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : TS > : ^^ @@ -21,9 +21,9 @@ call((x: number, y: number) => x + y); >call((x: number, y: number) => x + y) : void > : ^^^^ >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -39,9 +39,9 @@ call((x: number, y: number) => x + y, 1, 2, 3, 4, 5, 6, 7); >call((x: number, y: number) => x + y, 1, 2, 3, 4, 5, 6, 7) : void > : ^^^^ >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/genericRestArityStrict.types b/tests/baselines/reference/genericRestArityStrict.types index be839c2114df7..9d961ed53c9f9 100644 --- a/tests/baselines/reference/genericRestArityStrict.types +++ b/tests/baselines/reference/genericRestArityStrict.types @@ -5,11 +5,11 @@ declare function call( >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ handler: (...args: TS) => void, >handler : (...args: TS) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : TS > : ^^ @@ -21,9 +21,9 @@ call((x: number, y: number) => x + y); >call((x: number, y: number) => x + y) : void > : ^^^^ >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -39,9 +39,9 @@ call((x: number, y: number) => x + y, 1, 2, 3, 4, 5, 6, 7); >call((x: number, y: number) => x + y, 1, 2, 3, 4, 5, 6, 7) : void > : ^^^^ >call : (handler: (...args: TS) => void, ...args: TS) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/genericRestParameters1.types b/tests/baselines/reference/genericRestParameters1.types index 9e904e6cc7ea0..563c3454d2994 100644 --- a/tests/baselines/reference/genericRestParameters1.types +++ b/tests/baselines/reference/genericRestParameters1.types @@ -9,7 +9,7 @@ declare let f1: (...x: [number, string, boolean]) => void; declare let f2: (x0: number, x1: string, x2: boolean) => void; >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x0 : number > : ^^^^^^ >x1 : string @@ -19,17 +19,17 @@ declare let f2: (x0: number, x1: string, x2: boolean) => void; f1 = f2; >f1 = f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x_0: number, x_1: string, x_2: boolean) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ f2 = f1; >f2 = f1 : (x_0: number, x_1: string, x_2: boolean) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x_0: number, x_1: string, x_2: boolean) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -181,7 +181,7 @@ f2(42, "hello", true); >f2(42, "hello", true) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -193,7 +193,7 @@ f2(t3[0], t3[1], t3[2]); >f2(t3[0], t3[1], t3[2]) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t3[0] : number > : ^^^^^^ >t3 : [number, string, boolean] @@ -217,7 +217,7 @@ f2(...t3); >f2(...t3) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...t3 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t3 : [number, string, boolean] @@ -227,7 +227,7 @@ f2(42, ...t2); >f2(42, ...t2) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -239,7 +239,7 @@ f2(42, "hello", ...t1); >f2(42, "hello", ...t1) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -253,7 +253,7 @@ f2(42, "hello", true, ...t0); >f2(42, "hello", true, ...t0) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -269,7 +269,7 @@ f2(ns[0], ns[1], true); >f2(ns[0], ns[1], true) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >ns[0] : number > : ^^^^^^ >ns : [number, string] @@ -289,7 +289,7 @@ f2(...ns, true); // FIXME: Error, since ...ns is considered as string|number he >f2(...ns, true) : void > : ^^^^ >f2 : (x0: number, x1: string, x2: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >...ns : string | number > : ^^^^^^^^^^^^^^^ >ns : [number, string] @@ -299,7 +299,7 @@ f2(...ns, true); // FIXME: Error, since ...ns is considered as string|number he declare function f10(...args: T): T; >f10 : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -309,7 +309,7 @@ const x10 = f10(42, "hello", true); // [number, string, boolean] >f10(42, "hello", true) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -323,7 +323,7 @@ const x11 = f10(42, "hello"); // [number, string] >f10(42, "hello") : [number, string] > : ^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -335,7 +335,7 @@ const x12 = f10(42); // [number] >f10(42) : [number] > : ^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ @@ -345,7 +345,7 @@ const x13 = f10(); // [] >f10() : [] > : ^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ const x14 = f10(...t3); // [number, string, boolean] >x14 : [number, string, boolean] @@ -353,7 +353,7 @@ const x14 = f10(...t3); // [number, string, boolean] >f10(...t3) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...t3 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t3 : [number, string, boolean] @@ -365,7 +365,7 @@ const x15 = f10(42, ...t2); // [number, string, boolean] >f10(42, ...t2) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -379,7 +379,7 @@ const x16 = f10(42, "hello", ...t1); // [number, string, boolean] >f10(42, "hello", ...t1) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -395,7 +395,7 @@ const x17 = f10(42, "hello", true, ...t0); // [number, string, boolean] >f10(42, "hello", true, ...t0) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -413,7 +413,7 @@ const x18 = f10(...ns, true); // (string | number | boolean)[] >f10(...ns, true) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...ns : string | number > : ^^^^^^^^^^^^^^^ >ns : [number, string] @@ -423,7 +423,7 @@ const x18 = f10(...ns, true); // (string | number | boolean)[] function g10(u: U, v: V) { >g10 : (u: U, v: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >u : U > : ^ >v : V @@ -435,7 +435,7 @@ function g10(u: U, v: V) { >f10(...u) : U > : ^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...u : string > : ^^^^^^ >u : U @@ -447,7 +447,7 @@ function g10(u: U, v: V) { >f10(...v) : V > : ^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...v : number > : ^^^^^^ >v : V @@ -459,7 +459,7 @@ function g10(u: U, v: V) { >f10(1, ...u) : [number, ...U] > : ^^^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >...u : string @@ -473,7 +473,7 @@ function g10(u: U, v: V) { >f10(...u, ...v) : [...U, ...V] > : ^^^^^^^^^^^^ >f10 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...u : string > : ^^^^^^ >u : U @@ -486,7 +486,7 @@ function g10(u: U, v: V) { declare function f11(...args: T): T; >f11 : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -496,7 +496,7 @@ const z10 = f11(42, "hello", true); // [42, "hello", true] >f11(42, "hello", true) : [42, "hello", true] > : ^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -510,7 +510,7 @@ const z11 = f11(42, "hello"); // [42, "hello"] >f11(42, "hello") : [42, "hello"] > : ^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -522,7 +522,7 @@ const z12 = f11(42); // [42] >f11(42) : [42] > : ^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ @@ -532,7 +532,7 @@ const z13 = f11(); // [] >f11() : [] > : ^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ const z14 = f11(...t3); // [number, string, boolean] >z14 : [number, string, boolean] @@ -540,7 +540,7 @@ const z14 = f11(...t3); // [number, string, boolean] >f11(...t3) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...t3 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t3 : [number, string, boolean] @@ -552,7 +552,7 @@ const z15 = f11(42, ...t2); // [42, string, boolean] >f11(42, ...t2) : [42, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -566,7 +566,7 @@ const z16 = f11(42, "hello", ...t1); // [42, "hello", boolean] >f11(42, "hello", ...t1) : [42, "hello", boolean] > : ^^^^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -582,7 +582,7 @@ const z17 = f11(42, "hello", true, ...t0); // [42, "hello", true] >f11(42, "hello", true, ...t0) : [42, "hello", true] > : ^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -600,7 +600,7 @@ const z18 = f11(...ns, true); // (string | number | true)[] >f11(...ns, true) : [number, string, true] > : ^^^^^^^^^^^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...ns : string | number > : ^^^^^^^^^^^^^^^ >ns : [number, string] @@ -610,7 +610,7 @@ const z18 = f11(...ns, true); // (string | number | true)[] function g11(u: U, v: V) { >g11 : (u: U, v: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >u : U > : ^ >v : V @@ -622,7 +622,7 @@ function g11(u: U, v: V) { >f11(...u) : U > : ^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...u : string > : ^^^^^^ >u : U @@ -634,7 +634,7 @@ function g11(u: U, v: V) { >f11(...v) : V > : ^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...v : number > : ^^^^^^ >v : V @@ -646,7 +646,7 @@ function g11(u: U, v: V) { >f11(1, ...u) : [1, ...U] > : ^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >...u : string @@ -660,7 +660,7 @@ function g11(u: U, v: V) { >f11(...u, ...v) : [...U, ...V] > : ^^^^^^^^^^^^ >f11 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...u : string > : ^^^^^^ >u : U @@ -673,9 +673,9 @@ function g11(u: U, v: V) { function call(f: (...args: T) => U, ...args: T) { >call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >f : (...args: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : T > : ^ >args : T @@ -685,7 +685,7 @@ function call(f: (...args: T) => U, ...args: T) { >f(...args) : U > : ^ >f : (...args: T) => U -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^ >...args : unknown > : ^^^^^^^ >args : T @@ -694,11 +694,11 @@ function call(f: (...args: T) => U, ...args: T) { function callr(args: T, f: (...args: T) => U) { >callr : (args: T, f: (...args: T) => U) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ >args : T > : ^ >f : (...args: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : T > : ^ @@ -706,7 +706,7 @@ function callr(args: T, f: (...args: T) => U) { >f(...args) : U > : ^ >f : (...args: T) => U -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^ >...args : unknown > : ^^^^^^^ >args : T @@ -715,7 +715,7 @@ function callr(args: T, f: (...args: T) => U) { declare function f15(a: string, b: number): string | number; >f15 : (a: string, b: number) => string | number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string > : ^^^^^^ >b : number @@ -723,7 +723,7 @@ declare function f15(a: string, b: number): string | number; declare function f16(a: A, b: B): A | B; >f16 : (a: A, b: B) => A | B -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -735,9 +735,9 @@ let x20 = call((x, y) => x + y, 10, 20); // number >call((x, y) => x + y, 10, 20) : number > : ^^^^^^ >call : (f: (...args: T) => U, ...args: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(x, y) => x + y : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -759,9 +759,9 @@ let x21 = call((x, y) => x + y, 10, "hello"); // string >call((x, y) => x + y, 10, "hello") : string > : ^^^^^^ >call : (f: (...args: T) => U, ...args: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >(x, y) => x + y : (x: number, y: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -783,9 +783,9 @@ let x22 = call(f15, "hello", 42); // string | number >call(f15, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ >call : (f: (...args: T) => U, ...args: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >f15 : (a: string, b: number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >42 : 42 @@ -797,9 +797,9 @@ let x23 = call(f16, "hello", 42); // unknown >call(f16, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ >call : (f: (...args: T) => U, ...args: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >f16 : (a: A, b: B) => A | B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >42 : 42 @@ -811,9 +811,9 @@ let x24 = call<[string, number], string | number>(f16, "hello", 42); // string >call<[string, number], string | number>(f16, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ >call : (f: (...args: T) => U, ...args: T) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ >f16 : (a: A, b: B) => A | B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >42 : 42 @@ -825,11 +825,11 @@ let x30 = callr(sn, (x, y) => x + y); // string >callr(sn, (x, y) => x + y) : string > : ^^^^^^ >callr : (args: T, f: (...args: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ >(x, y) => x + y : (x: string, y: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >y : number @@ -847,11 +847,11 @@ let x31 = callr(sn, f15); // string | number >callr(sn, f15) : string | number > : ^^^^^^^^^^^^^^^ >callr : (args: T, f: (...args: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ >f15 : (a: string, b: number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ let x32 = callr(sn, f16); // string | number >x32 : string | number @@ -859,17 +859,17 @@ let x32 = callr(sn, f16); // string | number >callr(sn, f16) : string | number > : ^^^^^^^^^^^^^^^ >callr : (args: T, f: (...args: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ >f16 : (a: A, b: B) => A | B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ function bind(f: (x: T, ...rest: U) => V, x: T) { >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f : (x: T, ...rest: U) => V -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : T > : ^ >rest : U @@ -879,13 +879,13 @@ function bind(f: (x: T, ...rest: U) => V, x: T) { return (...rest: U) => f(x, ...rest); >(...rest: U) => f(x, ...rest) : (...rest: U) => V -> : ^^^^^^^^^^ ^^^^^^ +> : ^^^^ ^^ ^^^^^^ >rest : U > : ^ >f(x, ...rest) : V > : ^ >f : (x: T, ...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^ >x : T > : ^ >...rest : unknown @@ -896,7 +896,7 @@ function bind(f: (x: T, ...rest: U) => V, x: T) { declare const f20: (x: number, y: string, z: boolean) => string[]; >f20 : (x: number, y: string, z: boolean) => string[] -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : string @@ -908,11 +908,11 @@ const f21 = bind(f20, 42); // (y: string, z: boolean) => string[] >f21 : (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(f20, 42) : (y: string, z: boolean) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f20 : (x: number, y: string, z: boolean) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ @@ -920,9 +920,9 @@ const f22 = bind(f21, "hello"); // (z: boolean) => string[] >f22 : (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >bind(f21, "hello") : (z: boolean) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f21 : (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -932,9 +932,9 @@ const f23 = bind(f22, true); // () => string[] >f23 : () => string[] > : ^^^^^^^^^^^^^^ >bind(f22, true) : () => string[] -> : ^^^^^^^^^^^^^^ +> : >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f22 : (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -944,7 +944,7 @@ f20(42, "hello", true); >f20(42, "hello", true) : string[] > : ^^^^^^^^ >f20 : (x: number, y: string, z: boolean) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -978,7 +978,7 @@ f23(); declare const g20: (x: number, y?: string, z?: boolean) => string[]; >g20 : (x: number, y?: string, z?: boolean) => string[] -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >x : number > : ^^^^^^ >y : string | undefined @@ -990,11 +990,11 @@ const g21 = bind(g20, 42); // (y: string, z: boolean) => string[] >g21 : (y?: string | undefined, z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(g20, 42) : (y?: string | undefined, z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>g20 : (x: number, y?: string, z?: boolean) => string[] +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ @@ -1002,9 +1002,9 @@ const g22 = bind(g21, "hello"); // (z: boolean) => string[] >g22 : (z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(g21, "hello") : (z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >g21 : (y?: string | undefined, z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -1014,9 +1014,9 @@ const g23 = bind(g22, true); // () => string[] >g23 : () => string[] > : ^^^^^^^^^^^^^^ >bind(g22, true) : () => string[] -> : ^^^^^^^^^^^^^^ +> : >bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >g22 : (z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -1025,8 +1025,8 @@ const g23 = bind(g22, true); // () => string[] g20(42, "hello", true); >g20(42, "hello", true) : string[] > : ^^^^^^^^ ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g20 : (x: number, y?: string, z?: boolean) => string[] +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -1037,8 +1037,8 @@ g20(42, "hello", true); g20(42, "hello"); >g20(42, "hello") : string[] > : ^^^^^^^^ ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g20 : (x: number, y?: string, z?: boolean) => string[] +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -1047,8 +1047,8 @@ g20(42, "hello"); g20(42); >g20(42) : string[] > : ^^^^^^^^ ->g20 : (x: number, y?: string | undefined, z?: boolean | undefined) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g20 : (x: number, y?: string, z?: boolean) => string[] +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >42 : 42 > : ^^ @@ -1098,7 +1098,7 @@ g23(); declare function f30 any)[]>(x: T, ...args: U): U; >f30 : any)[]>(x: T, ...args: U) => U -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^ ^^^^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -1108,15 +1108,15 @@ declare function f30 any)[]>(x: T, ...args: U): U; const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: number) => number] >c30 : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f30(42, x => "" + x, x => x + 1) : [(x: number) => string, (x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^ >f30 : any)[]>(x: T, ...args: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >x => "" + x : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >"" + x : string @@ -1126,7 +1126,7 @@ const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: nu >x : number > : ^^^^^^ >x => x + 1 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + 1 : number @@ -1223,7 +1223,7 @@ type EventType = { emit(e: K, ...payload: T[K] extends any[] ? T[K] : [T[K]]): void; >emit : (e: K, ...payload: T[K] extends any[] ? T[K] : [T[K]]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >e : K > : ^ >payload : T[K] extends any[] ? T[K] : [T[K]] @@ -1238,11 +1238,11 @@ events.emit('move', 10, 'left'); >events.emit('move', 10, 'left') : void > : ^^^^ >events.emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >events : EventType > : ^^^^^^^^^^^^^^^^^^ >emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'move' : "move" > : ^^^^^^ >10 : 10 @@ -1254,11 +1254,11 @@ events.emit('jump', 20, 'up'); >events.emit('jump', 20, 'up') : void > : ^^^^ >events.emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >events : EventType > : ^^^^^^^^^^^^^^^^^^ >emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'jump' : "jump" > : ^^^^^^ >20 : 20 @@ -1270,11 +1270,11 @@ events.emit('stop', 'Bye!'); >events.emit('stop', 'Bye!') : void > : ^^^^ >events.emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >events : EventType > : ^^^^^^^^^^^^^^^^^^ >emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'stop' : "stop" > : ^^^^^^ >'Bye!' : "Bye!" @@ -1284,11 +1284,11 @@ events.emit('done'); >events.emit('done') : void > : ^^^^ >events.emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >events : EventType > : ^^^^^^^^^^^^^^^^^^ >emit : (e: K, ...payload: Record1[K] extends any[] ? Record1[K] : [Record1[K]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'done' : "done" > : ^^^^^^ @@ -1296,7 +1296,7 @@ events.emit('done'); declare var ff1: (... args: any[]) => void; >ff1 : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -1312,7 +1312,7 @@ declare var ff3: (...args: []) => void; declare var ff4: (a: never) => void; >ff4 : (a: never) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : never > : ^^^^^ @@ -1320,7 +1320,7 @@ ff1 = ff2; >ff1 = ff2 : () => void > : ^^^^^^^^^^ >ff1 : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ff2 : () => void > : ^^^^^^^^^^ @@ -1328,15 +1328,15 @@ ff1 = ff3; >ff1 = ff3 : () => void > : ^^^^^^^^^^ >ff1 : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ff3 : () => void > : ^^^^^^^^^^ ff1 = ff4; // Error >ff1 = ff4 : (a: never) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >ff1 : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ff4 : (a: never) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/genericRestParameters2.types b/tests/baselines/reference/genericRestParameters2.types index 79cabae76fe48..05183b3ec48c4 100644 --- a/tests/baselines/reference/genericRestParameters2.types +++ b/tests/baselines/reference/genericRestParameters2.types @@ -25,7 +25,7 @@ declare let f00: (...x: [number, string, boolean]) => void; declare let f01: (a: number, ...x: [string, boolean]) => void; >f01 : (a: number, x_0: string, x_1: boolean) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >x : [string, boolean] @@ -33,7 +33,7 @@ declare let f01: (a: number, ...x: [string, boolean]) => void; declare let f02: (a: number, b: string, ...x: [boolean]) => void; >f02 : (a: number, b: string, x_0: boolean) => void -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : string @@ -43,7 +43,7 @@ declare let f02: (a: number, b: string, ...x: [boolean]) => void; declare let f03: (a: number, b: string, c: boolean) => void; >f03 : (a: number, b: string, c: boolean) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string @@ -53,7 +53,7 @@ declare let f03: (a: number, b: string, c: boolean) => void; declare let f04: (a: number, b: string, c: boolean, ...x: []) => void; >f04 : (a: number, b: string, c: boolean) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string @@ -71,7 +71,7 @@ declare let f10: (...x: [number, string, ...boolean[]]) => void; declare let f11: (a: number, ...x: [string, ...boolean[]]) => void; >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >x : [string, ...boolean[]] @@ -79,7 +79,7 @@ declare let f11: (a: number, ...x: [string, ...boolean[]]) => void; declare let f12: (a: number, b: string, ...x: [...boolean[]]) => void; >f12 : (a: number, b: string, ...x: [...boolean[]]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string @@ -89,7 +89,7 @@ declare let f12: (a: number, b: string, ...x: [...boolean[]]) => void; declare let f13: (a: number, b: string, ...c: boolean[]) => void; >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : string @@ -249,7 +249,7 @@ f11(42, "hello"); >f11(42, "hello") : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -259,7 +259,7 @@ f11(42, "hello", true); >f11(42, "hello", true) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -271,7 +271,7 @@ f11(42, "hello", true, false); >f11(42, "hello", true, false) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -285,7 +285,7 @@ f11(t1[0], t1[1], t1[2], t1[3]); >f11(t1[0], t1[1], t1[2], t1[3]) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t1[0] : number > : ^^^^^^ >t1 : [number, string, ...boolean[]] @@ -315,7 +315,7 @@ f11(...t1); >f11(...t1) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...t1 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t1 : [number, string, ...boolean[]] @@ -325,7 +325,7 @@ f11(42, ...t2); >f11(42, ...t2) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -337,7 +337,7 @@ f11(42, "hello", ...t3); >f11(42, "hello", ...t3) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -351,7 +351,7 @@ f11(42, "hello", true, ...t4); >f11(42, "hello", true, ...t4) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -367,7 +367,7 @@ f11(42, "hello", true, ...t4, false, ...t3); >f11(42, "hello", true, ...t4, false, ...t3) : void > : ^^^^ >f11 : (a: number, x_0: string, ...x_1: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -388,8 +388,8 @@ f11(42, "hello", true, ...t4, false, ...t3); f12(42, "hello"); >f12(42, "hello") : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -398,8 +398,8 @@ f12(42, "hello"); f12(42, "hello", true); >f12(42, "hello", true) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -410,8 +410,8 @@ f12(42, "hello", true); f12(42, "hello", true, false); >f12(42, "hello", true, false) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -424,8 +424,8 @@ f12(42, "hello", true, false); f12(t1[0], t1[1], t1[2], t1[3]); >f12(t1[0], t1[1], t1[2], t1[3]) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >t1[0] : number > : ^^^^^^ >t1 : [number, string, ...boolean[]] @@ -454,8 +454,8 @@ f12(t1[0], t1[1], t1[2], t1[3]); f12(...t1); >f12(...t1) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...t1 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t1 : [number, string, ...boolean[]] @@ -464,8 +464,8 @@ f12(...t1); f12(42, ...t2); >f12(42, ...t2) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -476,8 +476,8 @@ f12(42, ...t2); f12(42, "hello", ...t3); >f12(42, "hello", ...t3) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -490,8 +490,8 @@ f12(42, "hello", ...t3); f12(42, "hello", true, ...t4); >f12(42, "hello", true, ...t4) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -506,8 +506,8 @@ f12(42, "hello", true, ...t4); f12(42, "hello", true, ...t4, false, ...t3); >f12(42, "hello", true, ...t4, false, ...t3) : void > : ^^^^ ->f12 : (a: number, b: string, ...x: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f12 : (a: number, b: string, ...x: [...boolean[]]) => void +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -529,7 +529,7 @@ f13(42, "hello"); >f13(42, "hello") : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -539,7 +539,7 @@ f13(42, "hello", true); >f13(42, "hello", true) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -551,7 +551,7 @@ f13(42, "hello", true, false); >f13(42, "hello", true, false) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -565,7 +565,7 @@ f13(t1[0], t1[1], t1[2], t1[3]); >f13(t1[0], t1[1], t1[2], t1[3]) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >t1[0] : number > : ^^^^^^ >t1 : [number, string, ...boolean[]] @@ -595,7 +595,7 @@ f13(...t1); >f13(...t1) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...t1 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t1 : [number, string, ...boolean[]] @@ -605,7 +605,7 @@ f13(42, ...t2); >f13(42, ...t2) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -617,7 +617,7 @@ f13(42, "hello", ...t3); >f13(42, "hello", ...t3) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -631,7 +631,7 @@ f13(42, "hello", true, ...t4); >f13(42, "hello", true, ...t4) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -647,7 +647,7 @@ f13(42, "hello", true, ...t4, false, ...t3); >f13(42, "hello", true, ...t4, false, ...t3) : void > : ^^^^ >f13 : (a: number, b: string, ...c: boolean[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -667,7 +667,7 @@ f13(42, "hello", true, ...t4, false, ...t3); declare const f20: (...args: T) => T; >f20 : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -675,7 +675,7 @@ f20(...t1); >f20(...t1) : [number, string, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >...t1 : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >t1 : [number, string, ...boolean[]] @@ -685,7 +685,7 @@ f20(42, ...t2); >f20(42, ...t2) : [number, string, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >...t2 : string | boolean @@ -697,7 +697,7 @@ f20(42, "hello", ...t3); >f20(42, "hello", ...t3) : [number, string, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" @@ -711,7 +711,7 @@ f20(42, "hello", ...t2, true); >f20(42, "hello", ...t2, true) : [number, string, string, ...boolean[], boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ >"hello" : "hello" diff --git a/tests/baselines/reference/genericRestParameters3.types b/tests/baselines/reference/genericRestParameters3.types index 873893807499e..2e9e15dfb00c6 100644 --- a/tests/baselines/reference/genericRestParameters3.types +++ b/tests/baselines/reference/genericRestParameters3.types @@ -3,7 +3,7 @@ === genericRestParameters3.ts === declare let f1: (x: string, ...args: [string] | [number, boolean]) => void; >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >args : [string] | [number, boolean] @@ -11,7 +11,7 @@ declare let f1: (x: string, ...args: [string] | [number, boolean]) => void; declare let f2: (x: string, y: string) => void; >f2 : (x: string, y: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : string @@ -19,7 +19,7 @@ declare let f2: (x: string, y: string) => void; declare let f3: (x: string, y: number, z: boolean) => void; >f3 : (x: string, y: number, z: boolean) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -29,7 +29,7 @@ declare let f3: (x: string, y: number, z: boolean) => void; declare let f4: (...args: [string, string] | [string, number, boolean]) => void; >f4 : (...args: [string, string] | [string, number, boolean]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [string, string] | [string, number, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -53,7 +53,7 @@ f1("foo", "abc"); >f1("foo", "abc") : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >"abc" : "abc" @@ -63,7 +63,7 @@ f1("foo", 10, true); >f1("foo", 10, true) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >10 : 10 @@ -75,7 +75,7 @@ f1("foo", ...t1); >f1("foo", ...t1) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >...t1 : string | number | boolean @@ -87,7 +87,7 @@ f1("foo", ...t2); >f1("foo", ...t2) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >...t2 : string | number | boolean @@ -99,7 +99,7 @@ f1("foo", ...t3); >f1("foo", ...t3) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >...t3 : string | number | boolean @@ -111,7 +111,7 @@ f1("foo", ...t4); >f1("foo", ...t4) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >...t4 : string | number | boolean @@ -123,7 +123,7 @@ f1("foo", 10); // Error >f1("foo", 10) : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >10 : 10 @@ -133,57 +133,57 @@ f1("foo"); // Error >f1("foo") : void > : ^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >"foo" : "foo" > : ^^^^^ f2 = f1; >f2 = f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f2 : (x: string, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ f3 = f1; >f3 = f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f3 : (x: string, y: number, z: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ f4 = f1; >f4 = f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f4 : (...args: [string, string] | [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ f1 = f2; // Error >f1 = f2 : (x: string, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f2 : (x: string, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ f1 = f3; // Error >f1 = f3 : (x: string, y: number, z: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f3 : (x: string, y: number, z: boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ f1 = f4; >f1 = f4 : (...args: [string, string] | [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >f1 : (x: string, ...args: [string] | [number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >f4 : (...args: [string, string] | [string, number, boolean]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ // Repro from #26110 @@ -195,9 +195,9 @@ interface CoolArray extends Array { declare function foo(cb: (...args: T) => void): void; >foo : (cb: (...args: T) => void) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : (...args: T) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : T > : ^ @@ -205,13 +205,13 @@ foo>(); // Error >foo>() : void > : ^^^^ >foo : (cb: (...args: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ foo>(100); // Error >foo>(100) : void > : ^^^^ >foo : (cb: (...args: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >100 : 100 > : ^^^ @@ -219,13 +219,13 @@ foo>(foo); // Error >foo>(foo) : void > : ^^^^ >foo : (cb: (...args: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : (cb: (...args: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : function bar(...args: T): T { >bar : (...args: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -240,7 +240,7 @@ let a = bar(10, 20); >bar(10, 20) : [number, number] > : ^^^^^^^^^^^^^^^^ >bar : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >10 : 10 > : ^^ >20 : 20 @@ -252,7 +252,7 @@ let b = bar>(10, 20); // Error >bar>(10, 20) : CoolArray > : ^^^^^^^^^^^^^^^^^ >bar : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >10 : 10 > : ^^ >20 : 20 @@ -260,7 +260,7 @@ let b = bar>(10, 20); // Error declare function baz(...args: CoolArray): void; >baz : (...args: CoolArray) => void -> : ^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^ ^^ ^^^^^ >args : CoolArray > : ^^^^^^^^^^^^ @@ -272,13 +272,13 @@ baz(); // Error >baz() : void > : ^^^^ >baz : (...args: CoolArray) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ baz(1); // Error >baz(1) : void > : ^^^^ >baz : (...args: CoolArray) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -286,7 +286,7 @@ baz(1, 2); // Error >baz(1, 2) : void > : ^^^^ >baz : (...args: CoolArray) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -296,7 +296,7 @@ baz(...ca); // Error >baz(...ca) : void > : ^^^^ >baz : (...args: CoolArray) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >...ca : number > : ^^^^^^ >ca : CoolArray @@ -306,7 +306,7 @@ baz(...ca); // Error declare function hmm(...args: A): void; >hmm : (...args: A) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : A > : ^ @@ -314,13 +314,13 @@ hmm(); // okay, A = [] >hmm() : void > : ^^^^ >hmm : (...args: A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ hmm(1, "s"); // okay, A = [1, "s"] >hmm(1, "s") : void > : ^^^^ >hmm : (...args: A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >"s" : "s" @@ -330,7 +330,7 @@ hmm("what"); // no error? A = [] | [number, string] ? >hmm("what") : void > : ^^^^ >hmm : (...args: A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >"what" : "what" > : ^^^^^^ @@ -338,7 +338,7 @@ hmm("what"); // no error? A = [] | [number, string] ? declare function foo2(...args: string[] | number[]): void; >foo2 : (...args: string[] | number[]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : string[] | number[] > : ^^^^^^^^^^^^^^^^^^^ @@ -354,7 +354,7 @@ foo2(...x2); >foo2(...x2) : void > : ^^^^ >foo2 : (...args: string[] | number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...x2 : string > : ^^^^^^ >x2 : readonly string[] @@ -380,13 +380,13 @@ type MergedParams = Parameters; // [x: string, y: string] | [x: stri declare let ff1: (...rest: [string, string] | [string, number]) => void; >ff1 : (...rest: [string, string] | [string, number]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >rest : [string, string] | [string, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare let ff2: (x: string, ...rest: [string] | [number]) => void; >ff2 : (x: string, ...rest: [string] | [number]) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >rest : [string] | [number] @@ -394,48 +394,48 @@ declare let ff2: (x: string, ...rest: [string] | [number]) => void; ff1 = ff2; >ff1 = ff2 : (x: string, ...rest: [string] | [number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >ff1 : (...rest: [string, string] | [string, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ff2 : (x: string, ...rest: [string] | [number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ ff2 = ff1; >ff2 = ff1 : (...rest: [string, string] | [string, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >ff2 : (x: string, ...rest: [string] | [number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >ff1 : (...rest: [string, string] | [string, number]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ function ff3(s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) { >ff3 : (s1: (...args: [x: string, ...rest: A | [number]]) => void, s2: (x: string, ...rest: A | [number]) => void) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >s1 : (...args: [x: string, ...rest: A | [number]]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [x: string, number] | [x: string, ...rest: A] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s2 : (x: string, ...rest: A | [number]) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >rest : [number] | A > : ^^^^^^^^^^^^ s1 = s2; ->s1 = s2 : (x: string, ...rest: [number] | A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->s2 : (x: string, ...rest: [number] | A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>s1 = s2 : (x: string, ...rest: A | [number]) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ +>s1 : (...args: [x: string, ...rest: A | [number]]) => void +> : ^^^^ ^^ ^^^^^^^^^ +>s2 : (x: string, ...rest: A | [number]) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ s2 = s1; ->s2 = s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->s2 : (x: string, ...rest: [number] | A) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->s1 : (...args: [x: string, number] | [x: string, ...rest: A]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>s2 = s1 : (...args: [x: string, ...rest: A | [number]]) => void +> : ^^^^ ^^ ^^^^^^^^^ +>s2 : (x: string, ...rest: A | [number]) => void +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ +>s1 : (...args: [x: string, ...rest: A | [number]]) => void +> : ^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericRestTypes.types b/tests/baselines/reference/genericRestTypes.types index c19b829117fa7..205a4e68e774b 100644 --- a/tests/baselines/reference/genericRestTypes.types +++ b/tests/baselines/reference/genericRestTypes.types @@ -49,13 +49,13 @@ function assignmentWithComplexRest() { const fn1: (x: string, ...rest: T) => void = (x, ..._) => x; >fn1 : (x: string, ...rest: T) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >rest : T > : ^ >(x, ..._) => x : (x: string, ..._: T) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >_ : T @@ -65,11 +65,11 @@ function assignmentWithComplexRest() { const fn2: (...args: never) => void = fn1; >fn2 : (...args: never) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : never > : ^^^^^ >fn1 : (x: string, ...rest: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ } function assignmentWithComplexRest2() { @@ -78,27 +78,27 @@ function assignmentWithComplexRest2() { const fn1: (cb: (x: string, ...rest: T) => void) => void = (cb) => {}; >fn1 : (cb: (x: string, ...rest: T) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (x: string, ...rest: T) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >rest : T > : ^ >(cb) => {} : (cb: (x: string, ...rest: T) => void) => void -> : ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^^^^^ ^^ ^^^^^ ^^^^^^^^^ >cb : (x: string, ...rest: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ const fn2: (cb: (...args: never) => void) => void = fn1; >fn2 : (cb: (...args: never) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (...args: never) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : never > : ^^^^^ >fn1 : (cb: (x: string, ...rest: T) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ } function assignmentWithComplexRest3() { @@ -107,13 +107,13 @@ function assignmentWithComplexRest3() { const fn1: (x: string, ...rest: T) => void = (x, ..._) => x; >fn1 : (x: string, ...rest: T) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ >rest : T > : ^ >(x, ..._) => x : (x: string, ..._: T) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >_ : T @@ -123,7 +123,7 @@ function assignmentWithComplexRest3() { const fn2: (...args: {x: "a"} & {x: "b"}) => void = fn1; >fn2 : (...args: { x: "a"; } & { x: "b"; }) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : never > : ^^^^^ >x : "a" @@ -131,5 +131,5 @@ function assignmentWithComplexRest3() { >x : "b" > : ^^^ >fn1 : (x: string, ...rest: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/genericReversingTypeParameters.types b/tests/baselines/reference/genericReversingTypeParameters.types index df026ab27cd8e..0d841756ec189 100644 --- a/tests/baselines/reference/genericReversingTypeParameters.types +++ b/tests/baselines/reference/genericReversingTypeParameters.types @@ -11,7 +11,7 @@ class BiMap { public get(key: K): V { return null; } >get : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -34,11 +34,11 @@ var r1 = b.get(''); >b.get('') : number > : ^^^^^^ >b.get : (key: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >b : BiMap > : ^^^^^^^^^^^^^^^^^^^^^ >get : (key: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ @@ -60,11 +60,11 @@ var r2b = i.get(1); >i.get(1) : string > : ^^^^^^ >i.get : (key: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >i : BiMap > : ^^^^^^^^^^^^^^^^^^^^^ >get : (key: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericReversingTypeParameters2.types b/tests/baselines/reference/genericReversingTypeParameters2.types index a1d090b18bb26..c21115317d619 100644 --- a/tests/baselines/reference/genericReversingTypeParameters2.types +++ b/tests/baselines/reference/genericReversingTypeParameters2.types @@ -11,7 +11,7 @@ class BiMap { public get(key: K): V { return null; } >get : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -46,11 +46,11 @@ var r2b = i.get(1); >i.get(1) : string > : ^^^^^^ >i.get : (key: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >i : BiMap > : ^^^^^^^^^^^^^^^^^^^^^ >get : (key: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericSignatureIdentity.types b/tests/baselines/reference/genericSignatureIdentity.types index dbed8cdcaf0d4..e77e702d7c34f 100644 --- a/tests/baselines/reference/genericSignatureIdentity.types +++ b/tests/baselines/reference/genericSignatureIdentity.types @@ -8,7 +8,7 @@ var x: { >x : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ (x: T): T; >x : T @@ -18,7 +18,7 @@ var x: { var x: { >x : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ (x: T): T; >x : T @@ -28,7 +28,7 @@ var x: { var x: { >x : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ (x: T): T; >x : T @@ -38,7 +38,7 @@ var x: { var x: { >x : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ (x: any): any; >x : any diff --git a/tests/baselines/reference/genericSpecializationToTypeLiteral1.types b/tests/baselines/reference/genericSpecializationToTypeLiteral1.types index 34a36edb2f1be..4c396aae63a15 100644 --- a/tests/baselines/reference/genericSpecializationToTypeLiteral1.types +++ b/tests/baselines/reference/genericSpecializationToTypeLiteral1.types @@ -5,11 +5,11 @@ interface IEnumerable { zip(second: IEnumerable, resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; >zip : { (second: IEnumerable, resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; (second: T[], resultSelector: (first: T, second: T, index: number) => TResult_1): IEnumerable; (...params: any[]): IEnumerable; } -> : ^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >second : IEnumerable > : ^^^^^^^^^^^^^^ >resultSelector : (first: T, second: T, index: number) => TResult -> : ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >first : T > : ^ >second : T @@ -19,11 +19,11 @@ interface IEnumerable { zip(second: T[], resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; >zip : { (second: IEnumerable, resultSelector: (first: T, second: T, index: number) => TResult_1): IEnumerable; (second: T[], resultSelector: (first: T, second: T, index: number) => TResult): IEnumerable; (...params: any[]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >second : T[] > : ^^^ >resultSelector : (first: T, second: T, index: number) => TResult -> : ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >first : T > : ^ >second : T @@ -33,38 +33,38 @@ interface IEnumerable { zip(...params: any[]): IEnumerable; // last one is selector >zip : { (second: IEnumerable, resultSelector: (first: T, second: T, index: number) => TResult_1): IEnumerable; (second: T[], resultSelector: (first: T, second: T, index: number) => TResult_2): IEnumerable; (...params: any[]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^ ^^^ >params : any[] > : ^^^^^ merge(...params: IEnumerable[]): IEnumerable; >merge : { (...params: IEnumerable[]): IEnumerable; (...params: T[][]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >params : IEnumerable[] > : ^^^^^^^^^^^^^^^^ merge(...params: T[][]): IEnumerable; >merge : { (...params: IEnumerable[]): IEnumerable; (...params: T[][]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >params : T[][] > : ^^^^^ concat(...sequences: IEnumerable[]): IEnumerable; >concat : { (...sequences: IEnumerable[]): IEnumerable; (...sequences: T[]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >sequences : IEnumerable[] > : ^^^^^^^^^^^^^^^^ concat(...sequences: T[]): IEnumerable; >concat : { (...sequences: IEnumerable[]): IEnumerable; (...sequences: T[]): IEnumerable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >sequences : T[] > : ^^^ insert(index: number, second: IEnumerable): IEnumerable; >insert : (index: number, second: IEnumerable) => IEnumerable -> : ^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >index : number > : ^^^^^^ >second : IEnumerable @@ -72,69 +72,69 @@ interface IEnumerable { sequenceEqual(second: IEnumerable): boolean; >sequenceEqual : { (second: IEnumerable): boolean; (second: IEnumerable, compareSelector: (element: T) => TCompare): boolean; (second: T[]): boolean; (second: T[], compareSelector: (element: T) => TCompare_1): boolean; } -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >second : IEnumerable > : ^^^^^^^^^^^^^^ sequenceEqual(second: IEnumerable, compareSelector: (element: T) => TCompare): boolean; >sequenceEqual : { (second: IEnumerable): boolean; (second: IEnumerable, compareSelector: (element: T) => TCompare): boolean; (second: T[]): boolean; (second: T[], compareSelector: (element: T) => TCompare_1): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >second : IEnumerable > : ^^^^^^^^^^^^^^ >compareSelector : (element: T) => TCompare -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ sequenceEqual(second: T[]): boolean; >sequenceEqual : { (second: IEnumerable): boolean; (second: IEnumerable, compareSelector: (element: T) => TCompare): boolean; (second: T[]): boolean; (second: T[], compareSelector: (element: T) => TCompare_1): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >second : T[] > : ^^^ sequenceEqual(second: T[], compareSelector: (element: T) => TCompare): boolean; >sequenceEqual : { (second: IEnumerable): boolean; (second: IEnumerable, compareSelector: (element: T) => TCompare_1): boolean; (second: T[]): boolean; (second: T[], compareSelector: (element: T) => TCompare): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >second : T[] > : ^^^ >compareSelector : (element: T) => TCompare -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ toDictionary(keySelector: (element: T) => TKey): IDictionary; >toDictionary : { (keySelector: (element: T) => TKey): IDictionary; (keySelector: (element: T) => TKey_1, elementSelector: (element: T) => TValue): IDictionary; (keySelector: (element: T) => TKey_2, elementSelector: (element: T) => TValue_1, compareSelector: (key: TKey_2) => TCompare): IDictionary; } -> : ^^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >keySelector : (element: T) => TKey -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ toDictionary(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue): IDictionary; >toDictionary : { (keySelector: (element: T) => TKey_1): IDictionary; (keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue): IDictionary; (keySelector: (element: T) => TKey_2, elementSelector: (element: T) => TValue_1, compareSelector: (key: TKey_2) => TCompare): IDictionary; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >keySelector : (element: T) => TKey -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ >elementSelector : (element: T) => TValue -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ toDictionary(keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue, compareSelector: (key: TKey) => TCompare): IDictionary; >toDictionary : { (keySelector: (element: T) => TKey_1): IDictionary; (keySelector: (element: T) => TKey_2, elementSelector: (element: T) => TValue_1): IDictionary; (keySelector: (element: T) => TKey, elementSelector: (element: T) => TValue, compareSelector: (key: TKey) => TCompare): IDictionary; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >keySelector : (element: T) => TKey -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ >elementSelector : (element: T) => TValue -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >element : T > : ^ >compareSelector : (key: TKey) => TCompare -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : TKey > : ^^^^ } diff --git a/tests/baselines/reference/genericSpecializations1.types b/tests/baselines/reference/genericSpecializations1.types index c5291c2a635e1..a02d89ea2a38a 100644 --- a/tests/baselines/reference/genericSpecializations1.types +++ b/tests/baselines/reference/genericSpecializations1.types @@ -4,7 +4,7 @@ interface IFoo { foo(x: T): T; // no error on implementors because IFoo's T is different from foo's T >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -15,7 +15,7 @@ class IntFooBad implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -26,7 +26,7 @@ class StringFoo2 implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -37,7 +37,7 @@ class StringFoo3 implements IFoo { foo(x: T): T { return null; } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/genericSpecializations2.types b/tests/baselines/reference/genericSpecializations2.types index 800ffc12741e2..4c60d3e7efc2d 100644 --- a/tests/baselines/reference/genericSpecializations2.types +++ b/tests/baselines/reference/genericSpecializations2.types @@ -7,7 +7,7 @@ class IFoo { foo(x: T): T { // no error on implementors because IFoo's T is different from foo's T >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -21,7 +21,7 @@ class IntFooBad implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -32,7 +32,7 @@ class StringFoo2 implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -43,7 +43,7 @@ class StringFoo3 implements IFoo { foo(x: T): T { return null; } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/genericSpecializations3.types b/tests/baselines/reference/genericSpecializations3.types index b5692306d9039..36c4e434cbfde 100644 --- a/tests/baselines/reference/genericSpecializations3.types +++ b/tests/baselines/reference/genericSpecializations3.types @@ -4,7 +4,7 @@ interface IFoo { foo(x: T): T; >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -17,11 +17,11 @@ iFoo.foo(1); >iFoo.foo(1) : number > : ^^^^^^ >iFoo.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >iFoo : IFoo > : ^^^^^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -31,7 +31,7 @@ class IntFooBad implements IFoo { // error foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -46,7 +46,7 @@ class IntFoo implements IFoo { foo(x: number): number { return null; } >foo : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } @@ -61,7 +61,7 @@ class StringFoo2 implements IFoo { foo(x: string): string { return null; } >foo : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -74,11 +74,11 @@ stringFoo2.foo("hm"); >stringFoo2.foo("hm") : string > : ^^^^^^ >stringFoo2.foo : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >stringFoo2 : StringFoo2 > : ^^^^^^^^^^ >foo : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"hm" : "hm" > : ^^^^ @@ -106,7 +106,7 @@ class StringFoo3 implements IFoo { // error foo(x: T): T { return null; } >foo : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } diff --git a/tests/baselines/reference/genericStaticAnyTypeFunction.types b/tests/baselines/reference/genericStaticAnyTypeFunction.types index 6539bda145585..4955108e79917 100644 --- a/tests/baselines/reference/genericStaticAnyTypeFunction.types +++ b/tests/baselines/reference/genericStaticAnyTypeFunction.types @@ -7,7 +7,7 @@ class A { static one(source: T, value: number): T { >one : (source: T, value: number) => T -> : ^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >source : T > : ^ >value : number @@ -26,7 +26,7 @@ class A { static two(source: T): T { >two : (source: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >source : T > : ^ @@ -34,11 +34,11 @@ class A { >this.one(source, 42) : T > : ^ >this.one : (source: T_1, value: number) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >this : typeof A > : ^^^^^^^^ >one : (source: T_1, value: number) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >source : T > : ^ >42 : 42 diff --git a/tests/baselines/reference/genericTemplateOverloadResolution.types b/tests/baselines/reference/genericTemplateOverloadResolution.types index 51dc304de7954..096fbdba851e4 100644 --- a/tests/baselines/reference/genericTemplateOverloadResolution.types +++ b/tests/baselines/reference/genericTemplateOverloadResolution.types @@ -17,7 +17,7 @@ declare const fooFn: IFooFn; declare function expect(x: Promise): void; >expect : (x: Promise) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : Promise > : ^^^^^^^^^^^^^^^ @@ -25,7 +25,7 @@ expect(fooFn``); >expect(fooFn``) : void > : ^^^^ >expect : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fooFn`` : Promise > : ^^^^^^^^^^^^^^^ >fooFn : IFooFn diff --git a/tests/baselines/reference/genericTypeAliases.types b/tests/baselines/reference/genericTypeAliases.types index 98675e06d6c8c..69101bf522dc9 100644 --- a/tests/baselines/reference/genericTypeAliases.types +++ b/tests/baselines/reference/genericTypeAliases.types @@ -313,7 +313,7 @@ var a = f(); >a : string[] | { x: string[] | any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f() : string[] | { x: string[] | any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ >f : () => A[] | { x: A[] | any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -321,7 +321,7 @@ var b = g(); >b : string[] | { x: string[] | any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g() : string[] | { x: string[] | any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ >g : () => B[] | { x: B[] | any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericTypeArgumentInference1.types b/tests/baselines/reference/genericTypeArgumentInference1.types index a54a50410189a..20977cfaf91e1 100644 --- a/tests/baselines/reference/genericTypeArgumentInference1.types +++ b/tests/baselines/reference/genericTypeArgumentInference1.types @@ -14,7 +14,7 @@ module Underscore { export interface Static { all(list: T[], iterator?: Iterator, context?: any): T; >all : (list: T[], iterator?: Iterator, context?: any) => T -> : ^ ^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >list : T[] > : ^^^ >iterator : Iterator @@ -24,7 +24,7 @@ module Underscore { identity(value: T): T; >identity : (value: T) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ } @@ -40,12 +40,12 @@ var r = _.all([true, 1, null, 'yes'], _.identity); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >_.all([true, 1, null, 'yes'], _.identity) : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >[true, 1, null, 'yes'] : (string | number | true)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -55,65 +55,65 @@ var r = _.all([true, 1, null, 'yes'], _.identity); >'yes' : "yes" > : ^^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var r2 = _.all([true], _.identity); >r2 : boolean > : ^^^^^^^ >_.all([true], _.identity) : boolean > : ^^^^^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >[true] : true[] > : ^^^^^^ >true : true > : ^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var r3 = _.all([], _.identity); >r3 : any > : ^^^ >_.all([], _.identity) : any > : ^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var r4 = _.all([true], _.identity); >r4 : any > : ^^^ >_.all([true], _.identity) : any > : ^^^ ->_.all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>_.all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ ->all : (list: T[], iterator?: Underscore.Iterator, context?: any) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>all : (list: T[], iterator?: Iterator, context?: any) => T +> : ^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >[true] : any[] > : ^^^^^ >true : any @@ -121,9 +121,9 @@ var r4 = _.all([true], _.identity); >true : true > : ^^^^ >_.identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >_ : Underscore.Static > : ^^^^^^^^^^^^^^^^^ >identity : (value: T) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/genericTypeAssertions1.types b/tests/baselines/reference/genericTypeAssertions1.types index 0638b58dcdb04..8da80fa619807 100644 --- a/tests/baselines/reference/genericTypeAssertions1.types +++ b/tests/baselines/reference/genericTypeAssertions1.types @@ -5,7 +5,7 @@ class A { foo(x: T) { }} >A : A > : ^^^^ >foo : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/genericTypeAssertions2.types b/tests/baselines/reference/genericTypeAssertions2.types index 8509228b0d485..1d2b246411082 100644 --- a/tests/baselines/reference/genericTypeAssertions2.types +++ b/tests/baselines/reference/genericTypeAssertions2.types @@ -5,7 +5,7 @@ class A { foo(x: T) { } } >A : A > : ^^^^ >foo : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/genericTypeAssertions3.types b/tests/baselines/reference/genericTypeAssertions3.types index 6c3721bfb6553..7480e38110441 100644 --- a/tests/baselines/reference/genericTypeAssertions3.types +++ b/tests/baselines/reference/genericTypeAssertions3.types @@ -3,28 +3,28 @@ === genericTypeAssertions3.ts === var r = < (x: T) => T > ((x) => { return null; }); // bug was 'could not find dotted symbol T' on x's annotation in the type assertion instead of no error >r : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >< (x: T) => T > ((x) => { return null; }) : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : >x : T > : ^ >((x) => { return null; }) : (x: T) => any -> : ^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^ >(x) => { return null; } : (x: T) => any -> : ^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^ >x : T > : ^ var s = < (x: T) => T > ((x: any) => { return null; }); // no error >s : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >< (x: T) => T > ((x: any) => { return null; }) : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : >x : T > : ^ >((x: any) => { return null; }) : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(x: any) => { return null; } : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any diff --git a/tests/baselines/reference/genericTypeAssertions4.types b/tests/baselines/reference/genericTypeAssertions4.types index 502dd8726d8d1..091735908590d 100644 --- a/tests/baselines/reference/genericTypeAssertions4.types +++ b/tests/baselines/reference/genericTypeAssertions4.types @@ -52,7 +52,7 @@ var c: C; function foo2(x: T) { >foo2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/genericTypeAssertions5.types b/tests/baselines/reference/genericTypeAssertions5.types index e59a2597650d3..9c0d2e91f6cb9 100644 --- a/tests/baselines/reference/genericTypeAssertions5.types +++ b/tests/baselines/reference/genericTypeAssertions5.types @@ -33,7 +33,7 @@ var c: C; function foo2(x: T) { >foo2 : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/genericTypeAssertions6.types b/tests/baselines/reference/genericTypeAssertions6.types index a66393c5815f2..9848d46348581 100644 --- a/tests/baselines/reference/genericTypeAssertions6.types +++ b/tests/baselines/reference/genericTypeAssertions6.types @@ -28,7 +28,7 @@ class A { f(x: T, y: U) { >f : (x: T, y: U) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -64,7 +64,7 @@ class B extends A { g(x: T) { >g : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/genericTypeParameterEquivalence2.types b/tests/baselines/reference/genericTypeParameterEquivalence2.types index b88ff75a78403..d86fc747479c9 100644 --- a/tests/baselines/reference/genericTypeParameterEquivalence2.types +++ b/tests/baselines/reference/genericTypeParameterEquivalence2.types @@ -4,13 +4,13 @@ // compose :: (b->c) -> (a->b) -> (a->c) function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { >compose : (f: (b: B) => C, g: (a: A) => B) => (a: A) => C -> : ^ ^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >f : (b: B) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : B > : ^ >g : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A @@ -18,7 +18,7 @@ function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { return function (a:A) : C { >function (a:A) : C { return f(g.apply(null, a)); } : (a: A) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ @@ -26,14 +26,14 @@ function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { >f(g.apply(null, a)) : C > : ^ >f : (b: B) => C -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >g.apply(null, a) : any >g.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >g : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >a : A > : ^ @@ -43,11 +43,11 @@ function compose(f: (b: B) => C, g: (a:A) => B): (a:A) => C { // forEach :: [a] -> (a -> ()) -> () function forEach(list: A[], f: (a: A, n?: number) => void ): void { >forEach : (list: A[], f: (a: A, n?: number) => void) => void -> : ^ ^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >list : A[] > : ^^^ >f : (a: A, n?: number) => void -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >a : A > : ^ >n : number @@ -77,7 +77,7 @@ function forEach(list: A[], f: (a: A, n?: number) => void ): void { >f(list[i], i) : void > : ^^^^ >f : (a: A, n?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >list[i] : A > : ^ >list : A[] @@ -92,9 +92,9 @@ function forEach(list: A[], f: (a: A, n?: number) => void ): void { // filter :: (a->bool) -> [a] -> [a] function filter(f: (a: A) => boolean, ar: A[]): A[] { >filter : (f: (a: A) => boolean, ar: A[]) => A[] -> : ^ ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >ar : A[] @@ -110,11 +110,11 @@ function filter(f: (a: A) => boolean, ar: A[]): A[] { >forEach(ar, (el) => { if (f(el)) { ret.push(el); } } ) : void > : ^^^^ >forEach : (list: A_1[], f: (a: A_1, n?: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >ar : A[] > : ^^^ >(el) => { if (f(el)) { ret.push(el); } } : (el: A) => void -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >el : A > : ^ @@ -122,7 +122,7 @@ function filter(f: (a: A) => boolean, ar: A[]): A[] { >f(el) : boolean > : ^^^^^^^ >f : (a: A) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >el : A > : ^ @@ -130,11 +130,11 @@ function filter(f: (a: A) => boolean, ar: A[]): A[] { >ret.push(el) : number > : ^^^^^^ >ret.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >ret : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >el : A > : ^ } @@ -148,7 +148,7 @@ function filter(f: (a: A) => boolean, ar: A[]): A[] { // length :: [a] -> Num function length2(ar: A[]): number { >length2 : (ar: A[]) => number -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ar : A[] > : ^^^ @@ -164,9 +164,9 @@ function length2(ar: A[]): number { // curry1 :: ((a,b)->c) -> (a->(b->c)) function curry1(f: (a: A, b: B) => C): (ax: A) => (bx: B) => C { >curry1 : (f: (a: A, b: B) => C) => (ax: A) => (bx: B) => C -> : ^ ^^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >f : (a: A, b: B) => C -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -178,13 +178,13 @@ function curry1(f: (a: A, b: B) => C): (ax: A) => (bx: B) => C { return function (ay: A) { >function (ay: A) { return function (by: B) { return f(ay, by); }; } : (ay: A) => (by: B) => C -> : ^^^^^ ^^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^ >ay : A > : ^ return function (by: B) { >function (by: B) { return f(ay, by); } : (by: B) => C -> : ^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >by : B > : ^ @@ -192,7 +192,7 @@ function curry1(f: (a: A, b: B) => C): (ax: A) => (bx: B) => C { >f(ay, by) : C > : ^ >f : (a: A, b: B) => C -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >ay : A > : ^ >by : B @@ -204,13 +204,13 @@ function curry1(f: (a: A, b: B) => C): (ax: A) => (bx: B) => C { var cfilter = curry1(filter); >cfilter : (ax: (a: A) => boolean) => (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >curry1(filter) : (ax: (a: A) => boolean) => (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >curry1 : (f: (a: A, b: B) => C) => (ax: A) => (bx: B) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^ >filter : (f: (a: A) => boolean, ar: A[]) => A[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ // compose :: (b->c) -> (a->b) -> (a->c) // length :: [a] -> Num @@ -222,9 +222,9 @@ var cfilter = curry1(filter); function countWhere_1(pred: (a: A) => boolean): (a: A[]) => number { >countWhere_1 : (pred: (a: A) => boolean) => (a: A[]) => number -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >pred : (a: A) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A[] @@ -232,24 +232,24 @@ function countWhere_1(pred: (a: A) => boolean): (a: A[]) => number { return compose(length2, cfilter(pred)); >compose(length2, cfilter(pred)) : (a: A[]) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (b: B) => C, g: (a: A_1) => B) => (a: A_1) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >length2 : (ar: A_1[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >cfilter(pred) : (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >cfilter : (ax: (a: A_1) => boolean) => (bx: A_1[]) => A_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >pred : (a: A) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } function countWhere_2(pred: (a: A) => boolean): (a: A[]) => number { >countWhere_2 : (pred: (a: A) => boolean) => (a: A[]) => number -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >pred : (a: A) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >a : A[] @@ -257,21 +257,21 @@ function countWhere_2(pred: (a: A) => boolean): (a: A[]) => number { var where = cfilter(pred); >where : (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >cfilter(pred) : (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^ +> : >cfilter : (ax: (a: A_1) => boolean) => (bx: A_1[]) => A_1[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >pred : (a: A) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return compose(length2, where); >compose(length2, where) : (a: A[]) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >compose : (f: (b: B) => C, g: (a: A_1) => B) => (a: A_1) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >length2 : (ar: A_1[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >where : (bx: A[]) => A[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.types b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.types index ef32f49afefc0..196521bf1f9d6 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.types +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.types @@ -25,7 +25,7 @@ declare var a: { x: C }; declare var b: { (x: C): C }; >b : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -37,7 +37,7 @@ declare var d: { [x: C]: C }; declare function f(x: C): C; >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -76,13 +76,13 @@ declare class D3 { } declare function h(x: T); >h : (x: T) => any -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : T > : ^ declare function i(x: T); >i : (x: T) => any -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >M : any > : ^^^ >x : T diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.types b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.types index aeb1ba6242ddf..60df2457e21b7 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.types +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.types @@ -25,7 +25,7 @@ var a: { x: C }; var b: { (x: C): C }; >b : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -37,9 +37,9 @@ var d: { [x: C]: C }; var e = (x: C) => { var y: C; return y; } >e : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(x: C) => { var y: C; return y; } : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >y : any @@ -49,7 +49,7 @@ var e = (x: C) => { var y: C; return y; } function f(x: C): C { var y: C; return y; } >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -59,11 +59,11 @@ function f(x: C): C { var y: C; return y; } var g = function f(x: C): C { var y: C; return y; } >g : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function f(x: C): C { var y: C; return y; } : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -113,13 +113,13 @@ interface I2 extends M.E { } function h(x: T) { } >h : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ function i(x: T) { } >i : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >M : any > : ^^^ >x : T diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.types b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.types index 9aedb638d1666..1b274560c630d 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.types +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.types @@ -22,7 +22,7 @@ var a: { x: I }; var b: { (x: I): I }; >b : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -34,9 +34,9 @@ var d: { [x: I]: I }; var e = (x: I) => { var y: I; return y; } >e : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >(x: I) => { var y: I; return y; } : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >x : any > : ^^^ >y : any @@ -46,7 +46,7 @@ var e = (x: I) => { var y: I; return y; } function f(x: I): I { var y: I; return y; } >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -56,11 +56,11 @@ function f(x: I): I { var y: I; return y; } var g = function f(x: I): I { var y: I; return y; } >g : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function f(x: I): I { var y: I; return y; } : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -103,13 +103,13 @@ interface I2 extends M.C { } function h(x: T) { } >h : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ function i(x: T) { } >i : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >M : any > : ^^^ >x : T diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.types b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.types index c06645523384d..35ae6406b6208 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.types +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.types @@ -25,7 +25,7 @@ declare var a: { x: C }; declare var b: { (x: C): C }; >b : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -37,7 +37,7 @@ declare var d: { [x: C]: C }; declare function f(x: C): C; >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -76,13 +76,13 @@ declare class D3 { } declare function h(x: T); >h : (x: T) => any -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >x : T > : ^ declare function i(x: T); >i : (x: T) => any -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >M : any > : ^^^ >x : T diff --git a/tests/baselines/reference/genericTypeWithCallableMembers2.types b/tests/baselines/reference/genericTypeWithCallableMembers2.types index 6a44b2a4f182c..df93960943d84 100644 --- a/tests/baselines/reference/genericTypeWithCallableMembers2.types +++ b/tests/baselines/reference/genericTypeWithCallableMembers2.types @@ -3,7 +3,7 @@ === genericTypeWithCallableMembers2.ts === function foo1(f: T) { >foo1 : string>(f: T) => string -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ >f : T > : ^ @@ -16,7 +16,7 @@ function foo1(f: T) { function foo2(f: T) { >foo2 : string>(f: T) => string -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ >f : T > : ^ diff --git a/tests/baselines/reference/genericTypeWithMultipleBases3.types b/tests/baselines/reference/genericTypeWithMultipleBases3.types index aaf724a8e2703..60eeaa89a7e73 100644 --- a/tests/baselines/reference/genericTypeWithMultipleBases3.types +++ b/tests/baselines/reference/genericTypeWithMultipleBases3.types @@ -5,7 +5,7 @@ interface IA { foo(x: T): T; >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -15,7 +15,7 @@ interface IB { bar(x: T): T; >bar : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -29,21 +29,21 @@ var c: IC; var x = c.foo; >x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >c.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >c : IC > : ^^^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ var y = c.bar; >y : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >c.bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >c : IC > : ^^^^^^^^^^ >bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.types b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.types index 5899341ff4f8d..84460dfe04104 100644 --- a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.types +++ b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.types @@ -4,7 +4,7 @@ interface I { f: (a: { a: number }) => void >f : (a: { a: number; }) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { a: number; } > : ^^^^^ ^^^ >a : number @@ -18,7 +18,7 @@ class X implements I { f(a: T): void { } >f : (a: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ } @@ -26,7 +26,7 @@ var x = new X<{ a: string }>(); >x : X<{ a: string; }> > : ^^^^^^^ ^^^^ >new X<{ a: string }>() : X<{ a: string; }> -> : ^^^^^^^ ^^^^ +> : ^^ ^ >X : typeof X > : ^^^^^^^^ >a : string diff --git a/tests/baselines/reference/genericUnboundedTypeParamAssignability.types b/tests/baselines/reference/genericUnboundedTypeParamAssignability.types index 9b230ca52465e..077c164ebcb8a 100644 --- a/tests/baselines/reference/genericUnboundedTypeParamAssignability.types +++ b/tests/baselines/reference/genericUnboundedTypeParamAssignability.types @@ -3,7 +3,7 @@ === genericUnboundedTypeParamAssignability.ts === function f1(o: T) { >f1 : (o: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >o : T > : ^ @@ -20,7 +20,7 @@ function f1(o: T) { function f2(o: T) { >f2 : (o: T) => void -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >o : T > : ^ @@ -37,7 +37,7 @@ function f2(o: T) { function f3>(o: T) { >f3 : >(o: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >o : T > : ^ @@ -54,7 +54,7 @@ function f3>(o: T) { function user(t: T) { >user : (t: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -62,7 +62,7 @@ function user(t: T) { >f1(t) : void > : ^^^^ >f1 : (o: T_1) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -70,7 +70,7 @@ function user(t: T) { >f2(t) : void > : ^^^^ >f2 : (o: T_1) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -78,7 +78,7 @@ function user(t: T) { >f3(t) : void > : ^^^^ >f3 : >(o: T_1) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types index 185a42fe5608f..a6a0bdd4d2904 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types @@ -9,7 +9,7 @@ class LazyArray { >objects : { [objectId: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ><{ [objectId: string]: T; }>{} : { [objectId: string]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >objectId : string > : ^^^^^^ >{} : {} diff --git a/tests/baselines/reference/genericWithOpenTypeParameters1.types b/tests/baselines/reference/genericWithOpenTypeParameters1.types index 373901f5f3ce9..b5dc76e8f494a 100644 --- a/tests/baselines/reference/genericWithOpenTypeParameters1.types +++ b/tests/baselines/reference/genericWithOpenTypeParameters1.types @@ -7,7 +7,7 @@ class B { foo(x: T): T { return null; } >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -20,83 +20,83 @@ x.foo(1); // no error >x.foo(1) : number > : ^^^^^^ >x.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : B > : ^^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ var f = (x: B) => { return x.foo(1); } // error >f : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: B) => { return x.foo(1); } : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : B > : ^^^^ >x.foo(1) : T > : ^ >x.foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : B > : ^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >1 : 1 > : ^ var f2 = (x: B) => { return x.foo(1); } // error >f2 : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: B) => { return x.foo(1); } : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : B > : ^^^^ >x.foo(1) : T > : ^ >x.foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : B > : ^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >1 : 1 > : ^ var f3 = (x: B) => { return x.foo(1); } // error >f3 : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: B) => { return x.foo(1); } : (x: B) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : B > : ^^^^ >x.foo(1) : T > : ^ >x.foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >x : B > : ^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >1 : 1 > : ^ var f4 = (x: B) => { return x.foo(1); } // no error >f4 : (x: B) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: B) => { return x.foo(1); } : (x: B) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : B > : ^^^^^^^^^ >x.foo(1) : number > : ^^^^^^ >x.foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : B > : ^^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericsAndHigherOrderFunctions.types b/tests/baselines/reference/genericsAndHigherOrderFunctions.types index f713d2f5f4210..dd7bcad337eba 100644 --- a/tests/baselines/reference/genericsAndHigherOrderFunctions.types +++ b/tests/baselines/reference/genericsAndHigherOrderFunctions.types @@ -5,15 +5,15 @@ var combine: (f: (_: T) => S) => >combine : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >f : (_: T) => S -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : T > : ^ (g: (_: U) => T) => >g : (_: U) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : U > : ^ @@ -23,49 +23,49 @@ var combine: (f: (_: T) => S) => = (f: (_: T) => S) => >(f: (_: T) => S) => (g: (_: U) => T) => (x: U) => f(g(x)) : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S -> : ^ ^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >f : (_: T) => S -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : T > : ^ (g: (_: U) => T) => >(g: (_: U) => T) => (x: U) => f(g(x)) : (g: (_: U) => T) => (x: U) => S -> : ^ ^^^^^ ^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >g : (_: U) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : U > : ^ (x: U) => f(g(x)) >(x: U) => f(g(x)) : (x: U) => S -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : U > : ^ >f(g(x)) : S > : ^ >f : (_: T) => S -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >g(x) : T > : ^ >g : (_: U) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : U > : ^ var foo: (g: (x: K) => N) => >foo : (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >g : (x: K) => N -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : K > : ^ (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => >h : (_: (_: K) => (_: M) => M) => (_: M) => M -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >_ : (_: K) => (_: M) => M -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : K > : ^ >_ : M @@ -75,7 +75,7 @@ var foo: (g: (x: K) => N) => (f: (_: N) => (_: R) => R) => (_: R) => R >f : (_: N) => (_: R) => R -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : N > : ^ >_ : R @@ -85,19 +85,19 @@ var foo: (g: (x: K) => N) => = (g: (x: K) => N) => >(g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (g: (x: K) => N) => (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R -> : ^ ^^ ^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^^^^ >g : (x: K) => N -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : K > : ^ (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => >(h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (h: (_: (_: K) => (_: M) => M) => (_: M) => M) => (f: (_: N) => (_: R) => R) => (_: R) => R -> : ^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^^^^ >h : (_: (_: K) => (_: M) => M) => (_: M) => M -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >_ : (_: K) => (_: M) => M -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : K > : ^ >_ : M @@ -107,25 +107,25 @@ var foo: (g: (x: K) => N) => (f: (_: N) => (_: R) => R) => h(combine(f)(g)) >(f: (_: N) => (_: R) => R) => h(combine(f)(g)) : (f: (_: N) => (_: R) => R) => (_: R) => R -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^^^^^^^^ >f : (_: N) => (_: R) => R -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : N > : ^ >_ : R > : ^ >h(combine(f)(g)) : (_: R) => R -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >h : (_: (_: K) => (_: M) => M) => (_: M) => M -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >combine(f)(g) : (x: K) => (_: R) => R -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^ >combine(f) : (g: (_: U) => N) => (x: U) => (_: R) => R -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^ >combine : (f: (_: T) => S) => (g: (_: U) => T) => (x: U) => S -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >f : (_: N) => (_: R) => R -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^ >g : (x: K) => N -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/genericsManyTypeParameters.types b/tests/baselines/reference/genericsManyTypeParameters.types index afbc172e562ef..59e9d5dd6b99f 100644 --- a/tests/baselines/reference/genericsManyTypeParameters.types +++ b/tests/baselines/reference/genericsManyTypeParameters.types @@ -8,7 +8,7 @@ Symbol count: 25,500 / 25,500 (nearest 500) === genericsManyTypeParameters.ts === function Foo< >Foo : (x1: a1, y1: a21, z1: a31, a1: a41, b1: a51, c1: a61, x2: a119, y2: a22, z2: a32, a2: a42, b2: a52, c2: a62, x3: a219, y3: a23, z3: a33, a3: a43, b3: a53, c3: a63, x4: a319, y4: a24, z4: a34, a4: a44, b4: a54, c4: a64, x5: a419, y5: a25, z5: a35, a5: a45, b5: a55, c5: a65, x6: a519, y6: a26, z6: a36, a6: a46, b6: a56, c6: a66, x7: a619, y7: a27, z7: a37, a7: a47, b7: a57, c7: a67, x8: a71, y8: a28, z8: a38, a8: a48, b8: a58, c8: a68, x9: a81, y9: a29, z9: a39, a9: a49, b9: a59, c9: a69, x10: a91, y12: a210, z10: a310, a10: a410, b10: a510, c10: a610, x11: a111, y13: a211, z11: a311, a11: a411, b11: a511, c11: a611, x12: a112, y14: a212, z12: a312, a12: a412, b12: a512, c12: a612, x13: a113, y15: a213, z13: a313, a13: a413, b13: a513, c13: a613, x14: a114, y16: a214, z14: a314, a14: a414, b14: a514, c14: a614, x15: a115, y17: a215, z15: a315, a15: a415, b15: a515, c15: a615, x16: a116, y18: a216, z16: a316, a16: a416, b16: a516, c16: a616, x17: a117, y19: a217, z17: a317, a17: a417, b17: a517, c17: a617, x18: a118, y10: a218, z18: a318, a18: a418, b18: a518, c18: a618) => (a1 | a21 | a31 | a41 | a51 | a61 | a119 | a22 | a32 | a42 | a52 | a62 | a219 | a23 | a33 | a43 | a53 | a63 | a319 | a24 | a34 | a44 | a54 | a64 | a419 | a25 | a35 | a45 | a55 | a65 | a519 | a26 | a36 | a46 | a56 | a66 | a619 | a27 | a37 | a47 | a57 | a67 | a71 | a28 | a38 | a48 | a58 | a68 | a81 | a29 | a39 | a49 | a59 | a69 | a91 | a210 | a310 | a410 | a510 | a610 | a111 | a211 | a311 | a411 | a511 | a611 | a112 | a212 | a312 | a412 | a512 | a612 | a113 | a213 | a313 | a413 | a513 | a613 | a114 | a214 | a314 | a414 | a514 | a614 | a115 | a215 | a315 | a415 | a515 | a615 | a116 | a216 | a316 | a416 | a516 | a616 | a117 | a217 | a317 | a417 | a517 | a617 | a118 | a218 | a318 | a418 | a518 | a618)[] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a1, a21, a31, a41, a51, a61, a119, a22, a32, a42, a52, a62, diff --git a/tests/baselines/reference/genericsWithDuplicateTypeParameters1.types b/tests/baselines/reference/genericsWithDuplicateTypeParameters1.types index 864c1df87dc31..e759602112bd8 100644 --- a/tests/baselines/reference/genericsWithDuplicateTypeParameters1.types +++ b/tests/baselines/reference/genericsWithDuplicateTypeParameters1.types @@ -7,7 +7,7 @@ function f() { } function f2(a: X, b: X): X { return null; } >f2 : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >a : X > : ^ >b : X @@ -23,7 +23,7 @@ class C { public f2(a: X, b: X): X { return null; } >f2 : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >a : X > : ^ >b : X @@ -37,7 +37,7 @@ interface I { f2(a: X, b: X): X; >f2 : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >a : X > : ^ >b : X @@ -46,25 +46,25 @@ interface I { var m = { >m : { a: () => void; b: (a: X_1, b: X_1) => X_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^^ >{ a: function f() {}, b: function f2(a: X, b: X): X { return null; }} : { a: () => void; b: (a: X_1, b: X_1) => X_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^ +> : ^^^^^ ^^^^^ ^^^ a: function f() {}, >a : () => void > : ^^^^^^^^^^^^^ >function f() {} : () => void -> : ^^^^^^^^^^^^^ +> : >f : () => void > : ^^^^^^^^^^^^^ b: function f2(a: X, b: X): X { return null; } >b : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >function f2(a: X, b: X): X { return null; } : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : >f2 : (a: X, b: X) => X -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >a : X > : ^ >b : X diff --git a/tests/baselines/reference/genericsWithoutTypeParameters1.types b/tests/baselines/reference/genericsWithoutTypeParameters1.types index 2602ee9367b68..37257696d399b 100644 --- a/tests/baselines/reference/genericsWithoutTypeParameters1.types +++ b/tests/baselines/reference/genericsWithoutTypeParameters1.types @@ -34,7 +34,7 @@ var i2: I; function foo(x: C, y: I) { } >foo : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -42,7 +42,7 @@ function foo(x: C, y: I) { } function foo2(x: C, y: I) { } >foo2 : (x: C, y: I) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : C > : ^^^^^^ >y : I @@ -107,7 +107,7 @@ class A { } function f(x: T): A { >f : (x: T) => any -> : ^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.types b/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.types index 3c4dcb94bfcab..93a317c7f5a6e 100644 --- a/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.types +++ b/tests/baselines/reference/getAccessorWithImpliedReturnTypeAndFunctionClassMerge.types @@ -19,7 +19,7 @@ declare module _ { export function each( >each : (context?: any) => void -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^ ^^^^^ //list: List, //iterator: ListIterator, @@ -43,7 +43,7 @@ declare class _ { each(iterator: _.ListIterator, context?: any): void; >each : (iterator: _.ListIterator, context?: any) => void -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >iterator : _.ListIterator > : ^^^^^^^^^^^^^^^^^^^^^^^ >_ : any diff --git a/tests/baselines/reference/getAndSetAsMemberNames.types b/tests/baselines/reference/getAndSetAsMemberNames.types index 1c1f01f9f976b..c0454faa2b881 100644 --- a/tests/baselines/reference/getAndSetAsMemberNames.types +++ b/tests/baselines/reference/getAndSetAsMemberNames.types @@ -28,7 +28,7 @@ class C3 { set (x) { >set : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any return x + 1; diff --git a/tests/baselines/reference/getParameterNameAtPosition.types b/tests/baselines/reference/getParameterNameAtPosition.types index bd20395dcb492..3587d80d67a4a 100644 --- a/tests/baselines/reference/getParameterNameAtPosition.types +++ b/tests/baselines/reference/getParameterNameAtPosition.types @@ -13,21 +13,21 @@ type Tester = (opts: any, done: (...args: any[]) => any) => any; > : ^^^^^^ >opts : any >done : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ declare function cases(tester: Tester): void; >cases : (tester: Tester) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >tester : Tester > : ^^^^^^ declare function fn(implementation?: (...args: Y) => any): Mock; >fn : (implementation?: (...args: Y) => any) => Mock -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >implementation : ((...args: Y) => any) | undefined -> : ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >args : Y > : ^ @@ -35,12 +35,12 @@ cases(fn(opts => { })); >cases(fn(opts => { })) : void > : ^^^^ >cases : (tester: Tester) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fn(opts => { }) : Mock<[opts: any]> > : ^^^^^^^^^^^^^^^^^ ->fn : (implementation?: ((...args: Y) => any) | undefined) => Mock -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fn : (implementation?: (...args: Y) => any) => Mock +> : ^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ >opts => { } : (opts: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >opts : any diff --git a/tests/baselines/reference/getsetReturnTypes.types b/tests/baselines/reference/getsetReturnTypes.types index 6139ef242ba48..3ccc04464572d 100644 --- a/tests/baselines/reference/getsetReturnTypes.types +++ b/tests/baselines/reference/getsetReturnTypes.types @@ -3,7 +3,7 @@ === getsetReturnTypes.ts === function makePoint(x: number) { >makePoint : (x: number) => { readonly x: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -26,7 +26,7 @@ var x = makePoint(2).x; >makePoint(2) : { readonly x: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >makePoint : (x: number) => { readonly x: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ >x : number @@ -40,7 +40,7 @@ var y: number = makePoint(2).x; >makePoint(2) : { readonly x: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >makePoint : (x: number) => { readonly x: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ >x : number diff --git a/tests/baselines/reference/getterSetterNonAccessor.types b/tests/baselines/reference/getterSetterNonAccessor.types index 66bdd154112d6..8383c7382bfba 100644 --- a/tests/baselines/reference/getterSetterNonAccessor.types +++ b/tests/baselines/reference/getterSetterNonAccessor.types @@ -9,18 +9,18 @@ function getFunc():any{return 0;} function setFunc(v){} >setFunc : (v: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >v : any Object.defineProperty({}, "0", ({ >Object.defineProperty({}, "0", ({ get: getFunc, set: setFunc, configurable: true })) : {} > : ^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >{} : {} > : ^^ >"0" : "0" @@ -28,21 +28,21 @@ Object.defineProperty({}, "0", ({ >({ get: getFunc, set: setFunc, configurable: true }) : PropertyDescriptor > : ^^^^^^^^^^^^^^^^^^ >({ get: getFunc, set: setFunc, configurable: true }) : { get: () => any; set: (v: any) => void; configurable: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ get: getFunc, set: setFunc, configurable: true } : { get: () => any; set: (v: any) => void; configurable: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ get: getFunc, >get : () => any > : ^^^^^^^^^ >getFunc : () => any -> : ^^^^^^^^^ +> : set: setFunc, >set : (v: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >setFunc : (v: any) => void -> : ^^^^^^^^^^^^^^^^ +> : configurable: true >configurable : true diff --git a/tests/baselines/reference/gettersAndSetters.types b/tests/baselines/reference/gettersAndSetters.types index 4e25ca2e290b8..7d0a6f3d0a0e5 100644 --- a/tests/baselines/reference/gettersAndSetters.types +++ b/tests/baselines/reference/gettersAndSetters.types @@ -80,13 +80,13 @@ class C { >get : () => void > : ^^^^^^^^^^ >function() {} : () => void -> : ^^^^^^^^^^ +> : public set = function() {} // ok >set : () => void > : ^^^^^^^^^^ >function() {} : () => void -> : ^^^^^^^^^^ +> : } var c = new C(); @@ -215,7 +215,7 @@ var i:I1 = function (n) {return n;} >i : I1 > : ^^ >function (n) {return n;} : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n : number diff --git a/tests/baselines/reference/giant.types b/tests/baselines/reference/giant.types index d9749d0398b18..30b2b8a873d7c 100644 --- a/tests/baselines/reference/giant.types +++ b/tests/baselines/reference/giant.types @@ -53,7 +53,7 @@ class C { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -73,7 +73,7 @@ class C { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -93,7 +93,7 @@ class C { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -218,13 +218,13 @@ interface I { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -232,7 +232,7 @@ interface I { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -281,7 +281,7 @@ module M { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -301,7 +301,7 @@ module M { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -321,7 +321,7 @@ module M { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -446,13 +446,13 @@ module M { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -460,7 +460,7 @@ module M { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -551,7 +551,7 @@ module M { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -571,7 +571,7 @@ module M { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -591,7 +591,7 @@ module M { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -716,13 +716,13 @@ module M { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -730,7 +730,7 @@ module M { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -821,7 +821,7 @@ module M { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -841,7 +841,7 @@ module M { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -861,7 +861,7 @@ module M { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -952,7 +952,7 @@ export class eC { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -972,7 +972,7 @@ export class eC { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -992,7 +992,7 @@ export class eC { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1117,13 +1117,13 @@ export interface eI { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1131,7 +1131,7 @@ export interface eI { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1180,7 +1180,7 @@ export module eM { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1200,7 +1200,7 @@ export module eM { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1220,7 +1220,7 @@ export module eM { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1345,13 +1345,13 @@ export module eM { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1359,7 +1359,7 @@ export module eM { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1450,7 +1450,7 @@ export module eM { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1470,7 +1470,7 @@ export module eM { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1490,7 +1490,7 @@ export module eM { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1615,13 +1615,13 @@ export module eM { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1629,7 +1629,7 @@ export module eM { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -1720,7 +1720,7 @@ export module eM { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1740,7 +1740,7 @@ export module eM { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1760,7 +1760,7 @@ export module eM { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1851,7 +1851,7 @@ export declare class eaC { public psF(param:any) { } >psF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1871,7 +1871,7 @@ export declare class eaC { private rsF(param:any) { } >rsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -1891,7 +1891,7 @@ export declare class eaC { static tsF(param:any) { } >tsF : (param: any) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >param : any > : ^^^ @@ -2049,13 +2049,13 @@ export declare module eaM { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -2063,7 +2063,7 @@ export declare module eaM { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -2255,13 +2255,13 @@ export declare module eaM { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -2269,7 +2269,7 @@ export declare module eaM { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any diff --git a/tests/baselines/reference/global.types b/tests/baselines/reference/global.types index 74b4e9757526f..1cc7fc64e7797 100644 --- a/tests/baselines/reference/global.types +++ b/tests/baselines/reference/global.types @@ -7,7 +7,7 @@ module M { export function f(y:number) { >f : (y: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >y : number > : ^^^^^^ @@ -31,11 +31,11 @@ M.f(3); >M.f(3) : number > : ^^^^^^ >M.f : (y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >M : typeof M > : ^^^^^^^^ >f : (y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >3 : 3 > : ^ diff --git a/tests/baselines/reference/globalFunctionAugmentationOverload.types b/tests/baselines/reference/globalFunctionAugmentationOverload.types index 6d66c6199f071..68d6db99b46c1 100644 --- a/tests/baselines/reference/globalFunctionAugmentationOverload.types +++ b/tests/baselines/reference/globalFunctionAugmentationOverload.types @@ -3,7 +3,7 @@ === mod.d.ts === declare function expect(spy: Function): void; >expect : { (spy: Function): void; (element: string): void; } -> : ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >spy : Function > : ^^^^^^^^ @@ -28,7 +28,7 @@ declare global { function expect(element: string): void; >expect : { (spy: Function): void; (element: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >element : string > : ^^^^^^ } diff --git a/tests/baselines/reference/globalIsContextualKeyword.types b/tests/baselines/reference/globalIsContextualKeyword.types index 8dd03ec1a68ad..682c0e7a157ac 100644 --- a/tests/baselines/reference/globalIsContextualKeyword.types +++ b/tests/baselines/reference/globalIsContextualKeyword.types @@ -25,7 +25,7 @@ namespace global { function foo(global: number) { >foo : (global: number) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >global : number > : ^^^^^^ } diff --git a/tests/baselines/reference/grammarAmbiguities.types b/tests/baselines/reference/grammarAmbiguities.types index 3556becaa3d35..04905ce5f9057 100644 --- a/tests/baselines/reference/grammarAmbiguities.types +++ b/tests/baselines/reference/grammarAmbiguities.types @@ -3,13 +3,13 @@ === grammarAmbiguities.ts === function f(n: any) { return null; } >f : (n: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >n : any > : ^^^ function g(x: any) { return null; } >g : (x: any) => any -> : ^^^^^^^^^^ ^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >x : any > : ^^^ @@ -25,11 +25,11 @@ f(g(7)); >f(g(7)) : any > : ^^^ >f : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >g(7) : any > : ^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >7 : 7 > : ^ @@ -37,11 +37,11 @@ f(g < A, B > 7); // Should error >f(g < A, B > 7) : any > : ^^^ >f : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >g < A : boolean > : ^^^^^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >A : any > : ^^^ >B > 7 : boolean @@ -55,11 +55,11 @@ f(g < A, B > +(7)); // Should error >f(g < A, B > +(7)) : any > : ^^^ >f : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >g < A : boolean > : ^^^^^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^ >A : any > : ^^^ >B > +(7) : boolean diff --git a/tests/baselines/reference/grammarAmbiguities1.types b/tests/baselines/reference/grammarAmbiguities1.types index 66f3d819bbae6..6119065e9f870 100644 --- a/tests/baselines/reference/grammarAmbiguities1.types +++ b/tests/baselines/reference/grammarAmbiguities1.types @@ -15,7 +15,7 @@ class B { bar() { }} function f(x) { return x; } >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -23,13 +23,13 @@ function f(x) { return x; } function g(x) { return f(x); } >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >x : any > : ^^^ >f(x) : any > : ^^^ >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -37,7 +37,7 @@ g(7) >g(7) : any > : ^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >7 : 7 > : ^ @@ -45,11 +45,11 @@ f(g(7)); >f(g(7)) : any > : ^^^ >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >g(7) : any > : ^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >7 : 7 > : ^ @@ -57,11 +57,11 @@ f(g < A, B > 7); >f(g < A, B > 7) : any > : ^^^ >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >g < A : boolean > : ^^^^^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >A : typeof A > : ^^^^^^^^ >B > 7 : boolean @@ -75,11 +75,11 @@ f(g < A, B > +(7)); >f(g < A, B > +(7)) : any > : ^^^ >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >g < A : boolean > : ^^^^^^^ >g : (x: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^ >A : typeof A > : ^^^^^^^^ >B > +(7) : boolean diff --git a/tests/baselines/reference/heterogeneousArrayAndOverloads.types b/tests/baselines/reference/heterogeneousArrayAndOverloads.types index e35f909be6842..15413710ad133 100644 --- a/tests/baselines/reference/heterogeneousArrayAndOverloads.types +++ b/tests/baselines/reference/heterogeneousArrayAndOverloads.types @@ -7,19 +7,19 @@ class arrTest { test(arg1: number[]); >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >arg1 : number[] > : ^^^^^^^^ test(arg1: string[]); >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >arg1 : string[] > : ^^^^^^^^ test(arg1: any[]) { } >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >arg1 : any[] > : ^^^^^ @@ -31,11 +31,11 @@ class arrTest { >this.test([1, 2, 3, 5]) : any > : ^^^ >this.test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[1, 2, 3, 5] : number[] > : ^^^^^^^^ >1 : 1 @@ -51,11 +51,11 @@ class arrTest { >this.test(["hi"]) : any > : ^^^ >this.test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >["hi"] : string[] > : ^^^^^^^^ >"hi" : "hi" @@ -65,11 +65,11 @@ class arrTest { >this.test([]) : any > : ^^^ >this.test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ @@ -77,11 +77,11 @@ class arrTest { >this.test([1, 2, "hi", 5]) : any > : ^^^ >this.test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >test : { (arg1: number[]): any; (arg1: string[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >[1, 2, "hi", 5] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types b/tests/baselines/reference/heterogeneousArrayLiterals.types index 8031735d88db5..9e7251aa3d761 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types @@ -125,7 +125,7 @@ var j = [() => 1, () => '']; // {}[] >j : ((() => number) | (() => string))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => 1, () => ''] : ((() => number) | (() => string))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -139,7 +139,7 @@ var k = [() => 1, () => 1]; // { (): number }[] >k : (() => number)[] > : ^^^^^^^^^^^^^^^^ >[() => 1, () => 1] : (() => number)[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -153,7 +153,7 @@ var l = [() => 1, () => null]; // { (): any }[] >l : (() => any)[] > : ^^^^^^^^^^^^^ >[() => 1, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -165,7 +165,7 @@ var m = [() => 1, () => '', () => null]; // { (): any }[] >m : (() => any)[] > : ^^^^^^^^^^^^^ >[() => 1, () => '', () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -181,7 +181,7 @@ var n = [[() => 1], [() => '']]; // {}[] >n : ((() => number)[] | (() => string)[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[[() => 1], [() => '']] : ((() => number)[] | (() => string)[])[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^ ^^^^^^ >[() => 1] : (() => number)[] > : ^^^^^^^^^^^^^^^^ >() => 1 : () => number @@ -281,7 +281,7 @@ module Derived { >j : (() => Base)[] > : ^^^^^^^^^^^^^^ >[() => base, () => derived] : (() => Base)[] -> : ^^^^^^^^^^^^^^ +> : ^ ^^^ >() => base : () => Base > : ^^^^^^^^^^ >base : Base @@ -295,7 +295,7 @@ module Derived { >k : ((() => Base) | (() => number))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => base, () => 1] : ((() => Base) | (() => number))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => base : () => Base > : ^^^^^^^^^^ >base : Base @@ -309,7 +309,7 @@ module Derived { >l : (() => any)[] > : ^^^^^^^^^^^^^ >[() => base, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => base : () => Base > : ^^^^^^^^^^ >base : Base @@ -321,7 +321,7 @@ module Derived { >m : (() => any)[] > : ^^^^^^^^^^^^^ >[() => base, () => derived, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => base : () => Base > : ^^^^^^^^^^ >base : Base @@ -337,7 +337,7 @@ module Derived { >n : (() => Base)[][] > : ^^^^^^^^^^^^^^^^ >[[() => base], [() => derived]] : (() => Base)[][] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ >[() => base] : (() => Base)[] > : ^^^^^^^^^^^^^^ >() => base : () => Base @@ -377,7 +377,7 @@ module Derived { >q : ((() => Derived2)[] | (() => Derived)[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[[() => derived2], [() => derived]] : ((() => Derived2)[] | (() => Derived)[])[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^ ^^^^^^ >[() => derived2] : (() => Derived2)[] > : ^^^^^^^^^^^^^^^^^^ >() => derived2 : () => Derived2 @@ -436,7 +436,7 @@ module WithContextualType { function foo(t: T, u: U) { >foo : (t: T, u: U) => void -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -484,7 +484,7 @@ function foo(t: T, u: U) { >e : ((() => T) | (() => U))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => t, () => u] : ((() => T) | (() => U))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -498,7 +498,7 @@ function foo(t: T, u: U) { >f : (() => any)[] > : ^^^^^^^^^^^^^ >[() => t, () => u, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -513,7 +513,7 @@ function foo(t: T, u: U) { function foo2(t: T, u: U) { >foo2 : (t: T, u: U) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -561,7 +561,7 @@ function foo2(t: T, u: U) { >e : ((() => T) | (() => U))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => t, () => u] : ((() => T) | (() => U))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -575,7 +575,7 @@ function foo2(t: T, u: U) { >f : (() => any)[] > : ^^^^^^^^^^^^^ >[() => t, () => u, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -630,7 +630,7 @@ function foo2(t: T, u: U) { function foo3(t: T, u: U) { >foo3 : (t: T, u: U) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -678,7 +678,7 @@ function foo3(t: T, u: U) { >e : ((() => T) | (() => U))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => t, () => u] : ((() => T) | (() => U))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -692,7 +692,7 @@ function foo3(t: T, u: U) { >f : (() => any)[] > : ^^^^^^^^^^^^^ >[() => t, () => u, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -747,7 +747,7 @@ function foo3(t: T, u: U) { function foo4(t: T, u: U) { >foo4 : (t: T, u: U) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U @@ -795,7 +795,7 @@ function foo4(t: T, u: U) { >e : ((() => T) | (() => U))[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >[() => t, () => u] : ((() => T) | (() => U))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^ ^^^^ >() => t : () => T > : ^^^^^^^ >t : T @@ -809,7 +809,7 @@ function foo4(t: T, u: U) { >f : (() => any)[] > : ^^^^^^^^^^^^^ >[() => t, () => u, () => null] : (() => any)[] -> : ^^^^^^^^^^^^^ +> : ^ ^^^ >() => t : () => T > : ^^^^^^^ >t : T diff --git a/tests/baselines/reference/higherOrderMappedIndexLookupInference.types b/tests/baselines/reference/higherOrderMappedIndexLookupInference.types index 914fd8aa8d2ba..0ffd57ed355fc 100644 --- a/tests/baselines/reference/higherOrderMappedIndexLookupInference.types +++ b/tests/baselines/reference/higherOrderMappedIndexLookupInference.types @@ -5,7 +5,7 @@ function f1(a: () => keyof T, b: () => keyof U) { >f1 : (a: () => keyof T, b: () => keyof U) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : () => keyof T > : ^ ^^^^^^^ >b : () => keyof U @@ -30,7 +30,7 @@ function f1(a: () => keyof T, b: () => keyof U) { function f2(a: () => T[K], b: () => U[L]) { >f2 : (a: () => T[K], b: () => U[L]) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : () => T[K] > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >b : () => U[L] @@ -55,7 +55,7 @@ function f2(a: () => T[K], b: () => function f3(a: () => { [K in keyof T]: T[K] }, b: () => { [K in keyof U]: U[K] }) { >f3 : (a: () => { [K in keyof T]: T[K]; }, b: () => { [K in keyof U]: U[K]; }) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : () => { [K in keyof T]: T[K]; } > : ^ ^^^^^^^ >b : () => { [K in keyof U]: U[K]; } diff --git a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types index 81a6f154cc8c5..21dbe3da958e8 100644 --- a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types +++ b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types @@ -3,7 +3,7 @@ === homomorphicMappedTypeIntersectionAssignability.ts === function f( >f : (a: { weak?: string; } & Readonly & { name: "ok"; }, b: Readonly, c: Readonly & { name: string; }) => void -> : ^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ a: { weak?: string } & Readonly & { name: "ok" }, >a : { weak?: string; } & Readonly & { name: "ok"; } diff --git a/tests/baselines/reference/homomorphicMappedTypeWithNonHomomorphicInstantiationSpreadable1.types b/tests/baselines/reference/homomorphicMappedTypeWithNonHomomorphicInstantiationSpreadable1.types index a5caf4aba7ea7..2bbea9ad9f970 100644 --- a/tests/baselines/reference/homomorphicMappedTypeWithNonHomomorphicInstantiationSpreadable1.types +++ b/tests/baselines/reference/homomorphicMappedTypeWithNonHomomorphicInstantiationSpreadable1.types @@ -15,7 +15,7 @@ type HandleOptions = { declare function func1< >func1 : >(fields: { [K in keyof T]: { label: string; options: [...HandleOptions]; }; }) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ T extends Record, >(fields: { @@ -40,7 +40,7 @@ const result = func1({ >func1({ prop: { label: "first", options: [ { value: 123, }, { value: "foo", }, ], }, other: { label: "second", options: [ { value: "bar", }, { value: true, }, ], },}) : { prop: [number, string]; other: [string, boolean]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func1 : >(fields: { [K in keyof T]: { label: string; options: [...HandleOptions]; }; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ prop: { label: "first", options: [ { value: 123, }, { value: "foo", }, ], }, other: { label: "second", options: [ { value: "bar", }, { value: true, }, ], },} : { prop: { label: string; options: [{ value: number; }, { value: string; }]; }; other: { label: string; options: [{ value: string; }, { value: true; }]; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/hugeDeclarationOutputGetsTruncatedWithError.types b/tests/baselines/reference/hugeDeclarationOutputGetsTruncatedWithError.types index 9933028d23627..bee598fccfb2c 100644 --- a/tests/baselines/reference/hugeDeclarationOutputGetsTruncatedWithError.types +++ b/tests/baselines/reference/hugeDeclarationOutputGetsTruncatedWithError.types @@ -18,7 +18,7 @@ export const c = [null as any as {[K in manyprops]: {[K2 in manyprops]: `${K}.${ >c : { aa: { aa: "aa.aa"; ab: "aa.ab"; ac: "aa.ac"; ad: "aa.ad"; ae: "aa.ae"; af: "aa.af"; ag: "aa.ag"; ah: "aa.ah"; ai: "aa.ai"; aj: "aa.aj"; ak: "aa.ak"; al: "aa.al"; am: "aa.am"; an: "aa.an"; ao: "aa.ao"; ap: "aa.ap"; aq: "aa.aq"; ar: "aa.ar"; as: "aa.as"; at: "aa.at"; au: "aa.au"; av: "aa.av"; aw: "aa.aw"; ax: "aa.ax"; ay: "aa.ay"; az: "aa.az"; ba: "aa.ba"; bb: "aa.bb"; bc: "aa.bc"; bd: "aa.bd"; be: "aa.be"; bf: "aa.bf"; bg: "aa.bg"; bh: "aa.bh"; bi: "aa.bi"; bj: "aa.bj"; bk: "aa.bk"; bl: "aa.bl"; bm: "aa.bm"; bn: "aa.bn"; bo: "aa.bo"; bp: "aa.bp"; bq: "aa.bq"; br: "aa.br"; bs: "aa.bs"; bt: "aa.bt"; bu: "aa.bu"; bv: "aa.bv"; bw: "aa.bw"; bx: "aa.bx"; by: "aa.by"; bz: "aa.bz"; ca: "aa.ca"; cb: "aa.cb"; cc: "aa.cc"; cd: "aa.cd"; ce: "aa.ce"; cf: "aa.cf"; cg: "aa.cg"; ch: "aa.ch"; ci: "aa.ci"; cj: "aa.cj"; ck: "aa.ck"; cl: "aa.cl"; cm: "aa.cm"; cn: "aa.cn"; co: "aa.co"; cp: "aa.cp"; cq: "aa.cq"; cr: "aa.cr"; cs: "aa.cs"; ct: "aa.ct"; cu: "aa.cu"; cv: "aa.cv"; cw: "aa.cw"; cx: "aa.cx"; cy: "aa.cy"; cz: "aa.cz"; da: "aa.da"; db: "aa.db"; dc: "aa.dc"; dd: "aa.dd"; de: "aa.de"; df: "aa.df"; dg: "aa.dg"; dh: "aa.dh"; di: "aa.di"; dj: "aa.dj"; dk: "aa.dk"; dl: "aa.dl"; dm: "aa.dm"; dn: "aa.dn"; do: "aa.do"; dp: "aa.dp"; dq: "aa.dq"; dr: "aa.dr"; ds: "aa.ds"; dt: "aa.dt"; du: "aa.du"; dv: "aa.dv"; dw: "aa.dw"; dx: "aa.dx"; dy: "aa.dy"; dz: "aa.dz"; ea: "aa.ea"; eb: "aa.eb"; ec: "aa.ec"; ed: "aa.ed"; ee: "aa.ee"; ef: "aa.ef"; eg: "aa.eg"; eh: "aa.eh"; ei: "aa.ei"; ej: "aa.ej"; ek: "aa.ek"; el: "aa.el"; em: "aa.em"; en: "aa.en"; eo: "aa.eo"; ep: "aa.ep"; eq: "aa.eq"; er: "aa.er"; es: "aa.es"; et: "aa.et"; eu: "aa.eu"; ev: "aa.ev"; ew: "aa.ew"; ex: "aa.ex"; ey: "aa.ey"; ez: "aa.ez"; fa: "aa.fa"; fb: "aa.fb"; fc: "aa.fc"; fd: "aa.fd"; fe: "aa.fe"; ff: "aa.ff"; fg: "aa.fg"; fh: "aa.fh"; fi: "aa.fi"; fj: "aa.fj"; fk: "aa.fk"; fl: "aa.fl"; fm: "aa.fm"; fn: "aa.fn"; fo: "aa.fo"; fp: "aa.fp"; fq: "aa.fq"; fr: "aa.fr"; fs: "aa.fs"; ft: "aa.ft"; fu: "aa.fu"; fv: "aa.fv"; fw: "aa.fw"; fx: "aa.fx"; fy: "aa.fy"; fz: "aa.fz"; ga: "aa.ga"; gb: "aa.gb"; gc: "aa.gc"; gd: "aa.gd"; ge: "aa.ge"; gf: "aa.gf"; gg: "aa.gg"; gh: "aa.gh"; gi: "aa.gi"; gj: "aa.gj"; gk: "aa.gk"; gl: "aa.gl"; gm: "aa.gm"; gn: "aa.gn"; go: "aa.go"; gp: "aa.gp"; gq: "aa.gq"; gr: "aa.gr"; gs: "aa.gs"; gt: "aa.gt"; gu: "aa.gu"; gv: "aa.gv"; gw: "aa.gw"; gx: "aa.gx"; gy: "aa.gy"; gz: "aa.gz"; ha: "aa.ha"; hb: "aa.hb"; hc: "aa.hc"; hd: "aa.hd"; he: "aa.he"; hf: "aa.hf"; hg: "aa.hg"; hh: "aa.hh"; hi: "aa.hi"; hj: "aa.hj"; hk: "aa.hk"; hl: "aa.hl"; hm: "aa.hm"; hn: "aa.hn"; ho: "aa.ho"; hp: "aa.hp"; hq: "aa.hq"; hr: "aa.hr"; hs: "aa.hs"; ht: "aa.ht"; hu: "aa.hu"; hv: "aa.hv"; hw: "aa.hw"; hx: "aa.hx"; hy: "aa.hy"; hz: "aa.hz"; ia: "aa.ia"; ib: "aa.ib"; ic: "aa.ic"; id: "aa.id"; ie: "aa.ie"; if: "aa.if"; ig: "aa.ig"; ih: "aa.ih"; ii: "aa.ii"; ij: "aa.ij"; ik: "aa.ik"; il: "aa.il"; im: "aa.im"; in: "aa.in"; io: "aa.io"; ip: "aa.ip"; iq: "aa.iq"; ir: "aa.ir"; is: "aa.is"; it: "aa.it"; iu: "aa.iu"; iv: "aa.iv"; iw: "aa.iw"; ix: "aa.ix"; iy: "aa.iy"; iz: "aa.iz"; ja: "aa.ja"; jb: "aa.jb"; jc: "aa.jc"; jd: "aa.jd"; je: "aa.je"; jf: "aa.jf"; jg: "aa.jg"; jh: "aa.jh"; ji: "aa.ji"; jj: "aa.jj"; jk: "aa.jk"; jl: "aa.jl"; jm: "aa.jm"; jn: "aa.jn"; jo: "aa.jo"; jp: "aa.jp"; jq: "aa.jq"; jr: "aa.jr"; js: "aa.js"; jt: "aa.jt"; ju: "aa.ju"; jv: "aa.jv"; jw: "aa.jw"; jx: "aa.jx"; jy: "aa.jy"; jz: "aa.jz"; ka: "aa.ka"; kb: "aa.kb"; kc: "aa.kc"; kd: "aa.kd"; ke: "aa.ke"; kf: "aa.kf"; kg: "aa.kg"; kh: "aa.kh"; ki: "aa.ki"; kj: "aa.kj"; kk: "aa.kk"; kl: "aa.kl"; km: "aa.km"; kn: "aa.kn"; ko: "aa.ko"; kp: "aa.kp"; kq: "aa.kq"; kr: "aa.kr"; ks: "aa.ks"; kt: "aa.kt"; ku: "aa.ku"; kv: "aa.kv"; kw: "aa.kw"; kx: "aa.kx"; ky: "aa.ky"; kz: "aa.kz"; la: "aa.la"; lb: "aa.lb"; lc: "aa.lc"; ld: "aa.ld"; le: "aa.le"; lf: "aa.lf"; lg: "aa.lg"; lh: "aa.lh"; li: "aa.li"; lj: "aa.lj"; lk: "aa.lk"; ll: "aa.ll"; lm: "aa.lm"; ln: "aa.ln"; lo: "aa.lo"; lp: "aa.lp"; lq: "aa.lq"; lr: "aa.lr"; ls: "aa.ls"; lt: "aa.lt"; lu: "aa.lu"; lv: "aa.lv"; lw: "aa.lw"; lx: "aa.lx"; ly: "aa.ly"; lz: "aa.lz"; ma: "aa.ma"; mb: "aa.mb"; mc: "aa.mc"; md: "aa.md"; me: "aa.me"; mf: "aa.mf"; mg: "aa.mg"; mh: "aa.mh"; mi: "aa.mi"; mj: "aa.mj"; mk: "aa.mk"; ml: "aa.ml"; mm: "aa.mm"; mn: "aa.mn"; mo: "aa.mo"; mp: "aa.mp"; mq: "aa.mq"; mr: "aa.mr"; ms: "aa.ms"; mt: "aa.mt"; mu: "aa.mu"; mv: "aa.mv"; mw: "aa.mw"; mx: "aa.mx"; my: "aa.my"; mz: "aa.mz"; na: "aa.na"; nb: "aa.nb"; nc: "aa.nc"; nd: "aa.nd"; ne: "aa.ne"; nf: "aa.nf"; ng: "aa.ng"; nh: "aa.nh"; ni: "aa.ni"; nj: "aa.nj"; nk: "aa.nk"; nl: "aa.nl"; nm: "aa.nm"; nn: "aa.nn"; no: "aa.no"; np: "aa.np"; nq: "aa.nq"; nr: "aa.nr"; ns: "aa.ns"; nt: "aa.nt"; nu: "aa.nu"; nv: "aa.nv"; nw: "aa.nw"; nx: "aa.nx"; ny: "aa.ny"; nz: "aa.nz"; oa: "aa.oa"; ob: "aa.ob"; oc: "aa.oc"; od: "aa.od"; oe: "aa.oe"; of: "aa.of"; og: "aa.og"; oh: "aa.oh"; oi: "aa.oi"; oj: "aa.oj"; ok: "aa.ok"; ol: "aa.ol"; om: "aa.om"; on: "aa.on"; oo: "aa.oo"; op: "aa.op"; oq: "aa.oq"; or: "aa.or"; os: "aa.os"; ot: "aa.ot"; ou: "aa.ou"; ov: "aa.ov"; ow: "aa.ow"; ox: "aa.ox"; oy: "aa.oy"; oz: "aa.oz"; pa: "aa.pa"; pb: "aa.pb"; pc: "aa.pc"; pd: "aa.pd"; pe: "aa.pe"; pf: "aa.pf"; pg: "aa.pg"; ph: "aa.ph"; pi: "aa.pi"; pj: "aa.pj"; pk: "aa.pk"; pl: "aa.pl"; pm: "aa.pm"; pn: "aa.pn"; po: "aa.po"; pp: "aa.pp"; pq: "aa.pq"; pr: "aa.pr"; ps: "aa.ps"; pt: "aa.pt"; pu: "aa.pu"; pv: "aa.pv"; pw: "aa.pw"; px: "aa.px"; py: "aa.py"; pz: "aa.pz"; qa: "aa.qa"; qb: "aa.qb"; qc: "aa.qc"; qd: "aa.qd"; qe: "aa.qe"; qf: "aa.qf"; qg: "aa.qg"; qh: "aa.qh"; qi: "aa.qi"; qj: "aa.qj"; qk: "aa.qk"; ql: "aa.ql"; qm: "aa.qm"; qn: "aa.qn"; qo: "aa.qo"; qp: "aa.qp"; qq: "aa.qq"; qr: "aa.qr"; qs: "aa.qs"; qt: "aa.qt"; qu: "aa.qu"; qv: "aa.qv"; qw: "aa.qw"; qx: "aa.qx"; qy: "aa.qy"; qz: "aa.qz"; ra: "aa.ra"; rb: "aa.rb"; rc: "aa.rc"; rd: "aa.rd"; re: "aa.re"; rf: "aa.rf"; rg: "aa.rg"; rh: "aa.rh"; ri: "aa.ri"; rj: "aa.rj"; rk: "aa.rk"; rl: "aa.rl"; rm: "aa.rm"; rn: "aa.rn"; ro: "aa.ro"; rp: "aa.rp"; rq: "aa.rq"; rr: "aa.rr"; rs: "aa.rs"; rt: "aa.rt"; ru: "aa.ru"; rv: "aa.rv"; rw: "aa.rw"; rx: "aa.rx"; ry: "aa.ry"; rz: "aa.rz"; sa: "aa.sa"; sb: "aa.sb"; sc: "aa.sc"; sd: "aa.sd"; se: "aa.se"; sf: "aa.sf"; sg: "aa.sg"; sh: "aa.sh"; si: "aa.si"; sj: "aa.sj"; sk: "aa.sk"; sl: "aa.sl"; sm: "aa.sm"; sn: "aa.sn"; so: "aa.so"; sp: "aa.sp"; sq: "aa.sq"; sr: "aa.sr"; ss: "aa.ss"; st: "aa.st"; su: "aa.su"; sv: "aa.sv"; sw: "aa.sw"; sx: "aa.sx"; sy: "aa.sy"; sz: "aa.sz"; ta: "aa.ta"; tb: "aa.tb"; tc: "aa.tc"; td: "aa.td"; te: "aa.te"; tf: "aa.tf"; tg: "aa.tg"; th: "aa.th"; ti: "aa.ti"; tj: "aa.tj"; tk: "aa.tk"; tl: "aa.tl"; tm: "aa.tm"; tn: "aa.tn"; to: "aa.to"; tp: "aa.tp"; tq: "aa.tq"; tr: "aa.tr"; ts: "aa.ts"; tt: "aa.tt"; tu: "aa.tu"; tv: "aa.tv"; tw: "aa.tw"; tx: "aa.tx"; ty: "aa.ty"; tz: "aa.tz"; ua: "aa.ua"; ub: "aa.ub"; uc: "aa.uc"; ud: "aa.ud"; ue: "aa.ue"; uf: "aa.uf"; ug: "aa.ug"; uh: "aa.uh"; ui: "aa.ui"; uj: "aa.uj"; uk: "aa.uk"; ul: "aa.ul"; um: "aa.um"; un: "aa.un"; uo: "aa.uo"; up: "aa.up"; uq: "aa.uq"; ur: "aa.ur"; us: "aa.us"; ut: "aa.ut"; uu: "aa.uu"; uv: "aa.uv"; uw: "aa.uw"; ux: "aa.ux"; uy: "aa.uy"; uz: "aa.uz"; va: "aa.va"; vb: "aa.vb"; vc: "aa.vc"; vd: "aa.vd"; ve: "aa.ve"; vf: "aa.vf"; vg: "aa.vg"; vh: "aa.vh"; vi: "aa.vi"; vj: "aa.vj"; vk: "aa.vk"; vl: "aa.vl"; vm: "aa.vm"; vn: "aa.vn"; vo: "aa.vo"; vp: "aa.vp"; vq: "aa.vq"; vr: "aa.vr"; vs: "aa.vs"; vt: "aa.vt"; vu: "aa.vu"; vv: "aa.vv"; vw: "aa.vw"; vx: "aa.vx"; vy: "aa.vy"; vz: "aa.vz"; wa: "aa.wa"; wb: "aa.wb"; wc: "aa.wc"; wd: "aa.wd"; we: "aa.we"; wf: "aa.wf"; wg: "aa.wg"; wh: "aa.wh"; wi: "aa.wi"; wj: "aa.wj"; wk: "aa.wk"; wl: "aa.wl"; wm: "aa.wm"; wn: "aa.wn"; wo: "aa.wo"; wp: "aa.wp"; wq: "aa.wq"; wr: "aa.wr"; ws: "aa.ws"; wt: "aa.wt"; wu: "aa.wu"; wv: "aa.wv"; ww: "aa.ww"; wx: "aa.wx"; wy: "aa.wy"; wz: "aa.wz"; xa: "aa.xa"; xb: "aa.xb"; xc: "aa.xc"; xd: "aa.xd"; xe: "aa.xe"; xf: "aa.xf"; xg: "aa.xg"; xh: "aa.xh"; xi: "aa.xi"; xj: "aa.xj"; xk: "aa.xk"; xl: "aa.xl"; xm: "aa.xm"; xn: "aa.xn"; xo: "aa.xo"; xp: "aa.xp"; xq: "aa.xq"; xr: "aa.xr"; xs: "aa.xs"; xt: "aa.xt"; xu: "aa.xu"; xv: "aa.xv"; xw: "aa.xw"; xx: "aa.xx"; xy: "aa.xy"; xz: "aa.xz"; ya: "aa.ya"; yb: "aa.yb"; yc: "aa.yc"; yd: "aa.yd"; ye: "aa.ye"; yf: "aa.yf"; yg: "aa.yg"; yh: "aa.yh"; yi: "aa.yi"; yj: "aa.yj"; yk: "aa.yk"; yl: "aa.yl"; ym: "aa.ym"; yn: "aa.yn"; yo: "aa.yo"; yp: "aa.yp"; yq: "aa.yq"; yr: "aa.yr"; ys: "aa.ys"; yt: "aa.yt"; yu: "aa.yu"; yv: "aa.yv"; yw: "aa.yw"; yx: "aa.yx"; yy: "aa.yy"; yz: "aa.yz"; za: "aa.za"; zb: "aa.zb"; zc: "aa.zc"; zd: "aa.zd"; ze: "aa.ze"; zf: "aa.zf"; zg: "aa.zg"; zh: "aa.zh"; zi: "aa.zi"; zj: "aa.zj"; zk: "aa.zk"; zl: "aa.zl"; zm: "aa.zm"; zn: "aa.zn"; zo: "aa.zo"; zp: "aa.zp"; zq: "aa.zq"; zr: "aa.zr"; zs: "aa.zs"; zt: "aa.zt"; zu: "aa.zu"; zv: "aa.zv"; zw: "aa.zw"; zx: "aa.zx"; zy: "aa.zy"; zz: "aa.zz"; }; ab: { aa: "ab.aa"; ab: "ab.ab"; ac: "ab.ac"; ad: "ab.ad"; ae: "ab.ae"; af: "ab.af"; ag: "ab.ag"; ah: "ab.ah"; ai: "ab.ai"; aj: "ab.aj"; ak: "ab.ak"; al: "ab.al"; am: "ab.am"; an: "ab.an"; ao: "ab.ao"; ap: "ab.ap"; aq: "ab.aq"; ar: "ab.ar"; as: "ab.as"; at: "ab.at"; au: "ab.au"; av: "ab.av"; aw: "ab.aw"; ax: "ab.ax"; ay: "ab.ay"; az: "ab.az"; ba: "ab.ba"; bb: "ab.bb"; bc: "ab.bc"; bd: "ab.bd"; be: "ab.be"; bf: "ab.bf"; bg: "ab.bg"; bh: "ab.bh"; bi: "ab.bi"; bj: "ab.bj"; bk: "ab.bk"; bl: "ab.bl"; bm: "ab.bm"; bn: "ab.bn"; bo: "ab.bo"; bp: "ab.bp"; bq: "ab.bq"; br: "ab.br"; bs: "ab.bs"; bt: "ab.bt"; bu: "ab.bu"; bv: "ab.bv"; bw: "ab.bw"; bx: "ab.bx"; by: "ab.by"; bz: "ab.bz"; ca: "ab.ca"; cb: "ab.cb"; cc: "ab.cc"; cd: "ab.cd"; ce: "ab.ce"; cf: "ab.cf"; cg: "ab.cg"; ch: "ab.ch"; ci: "ab.ci"; cj: "ab.cj"; ck: "ab.ck"; cl: "ab.cl"; cm: "ab.cm"; cn: "ab.cn"; co: "ab.co"; cp: "ab.cp"; cq: "ab.cq"; cr: "ab.cr"; cs: "ab.cs"; ct: "ab.ct"; cu: "ab.cu"; cv: "ab.cv"; cw: "ab.cw"; cx: "ab.cx"; cy: "ab.cy"; cz: "ab.cz"; da: "ab.da"; db: "ab.db"; dc: "ab.dc"; dd: "ab.dd"; de: "ab.de"; df: "ab.df"; dg: "ab.dg"; dh: "ab.dh"; di: "ab.di"; dj: "ab.dj"; dk: "ab.dk"; dl: "ab.dl"; dm: "ab.dm"; dn: "ab.dn"; do: "ab.do"; dp: "ab.dp"; dq: "ab.dq"; dr: "ab.dr"; ds: "ab.ds"; dt: "ab.dt"; du: "ab.du"; dv: "ab.dv"; dw: "ab.dw"; dx: "ab.dx"; dy: "ab.dy"; dz: "ab.dz"; ea: "ab.ea"; eb: "ab.eb"; ec: "ab.ec"; ed: "ab.ed"; ee: "ab.ee"; ef: "ab.ef"; eg: "ab.eg"; eh: "ab.eh"; ei: "ab.ei"; ej: "ab.ej"; ek: "ab.ek"; el: "ab.el"; em: "ab.em"; en: "ab.en"; eo: "ab.eo"; ep: "ab.ep"; eq: "ab.eq"; er: "ab.er"; es: "ab.es"; et: "ab.et"; eu: "ab.eu"; ev: "ab.ev"; ew: "ab.ew"; ex: "ab.ex"; ey: "ab.ey"; ez: "ab.ez"; fa: "ab.fa"; fb: "ab.fb"; fc: "ab.fc"; fd: "ab.fd"; fe: "ab.fe"; ff: "ab.ff"; fg: "ab.fg"; fh: "ab.fh"; fi: "ab.fi"; fj: "ab.fj"; fk: "ab.fk"; fl: "ab.fl"; fm: "ab.fm"; fn: "ab.fn"; fo: "ab.fo"; fp: "ab.fp"; fq: "ab.fq"; fr: "ab.fr"; fs: "ab.fs"; ft: "ab.ft"; fu: "ab.fu"; fv: "ab.fv"; fw: "ab.fw"; fx: "ab.fx"; fy: "ab.fy"; fz: "ab.fz"; ga: "ab.ga"; gb: "ab.gb"; gc: "ab.gc"; gd: "ab.gd"; ge: "ab.ge"; gf: "ab.gf"; gg: "ab.gg"; gh: "ab.gh"; gi: "ab.gi"; gj: "ab.gj"; gk: "ab.gk"; gl: "ab.gl"; gm: "ab.gm"; gn: "ab.gn"; go: "ab.go"; gp: "ab.gp"; gq: "ab.gq"; gr: "ab.gr"; gs: "ab.gs"; gt: "ab.gt"; gu: "ab.gu"; gv: "ab.gv"; gw: "ab.gw"; gx: "ab.gx"; gy: "ab.gy"; gz: "ab.gz"; ha: "ab.ha"; hb: "ab.hb"; hc: "ab.hc"; hd: "ab.hd"; he: "ab.he"; hf: "ab.hf"; hg: "ab.hg"; hh: "ab.hh"; hi: "ab.hi"; hj: "ab.hj"; hk: "ab.hk"; hl: "ab.hl"; hm: "ab.hm"; hn: "ab.hn"; ho: "ab.ho"; hp: "ab.hp"; hq: "ab.hq"; hr: "ab.hr"; hs: "ab.hs"; ht: "ab.ht"; hu: "ab.hu"; hv: "ab.hv"; hw: "ab.hw"; hx: "ab.hx"; hy: "ab.hy"; hz: "ab.hz"; ia: "ab.ia"; ib: "ab.ib"; ic: "ab.ic"; id: "ab.id"; ie: "ab.ie"; if: "ab.if"; ig: "ab.ig"; ih: "ab.ih"; ii: "ab.ii"; ij: "ab.ij"; ik: "ab.ik"; il: "ab.il"; im: "ab.im"; in: "ab.in"; io: "ab.io"; ip: "ab.ip"; iq: "ab.iq"; ir: "ab.ir"; is: "ab.is"; it: "ab.it"; iu: "ab.iu"; iv: "ab.iv"; iw: "ab.iw"; ix: "ab.ix"; iy: "ab.iy"; iz: "ab.iz"; ja: "ab.ja"; jb: "ab.jb"; jc: "ab.jc"; jd: "ab.jd"; je: "ab.je"; jf: "ab.jf"; jg: "ab.jg"; jh: "ab.jh"; ji: "ab.ji"; jj: "ab.jj"; jk: "ab.jk"; jl: "ab.jl"; jm: "ab.jm"; jn: "ab.jn"; jo: "ab.jo"; jp: "ab.jp"; jq: "ab.jq"; jr: "ab.jr"; js: "ab.js"; jt: "ab.jt"; ju: "ab.ju"; jv: "ab.jv"; jw: "ab.jw"; jx: "ab.jx"; jy: "ab.jy"; jz: "ab.jz"; ka: "ab.ka"; kb: "ab.kb"; kc: "ab.kc"; kd: "ab.kd"; ke: "ab.ke"; kf: "ab.kf"; kg: "ab.kg"; kh: "ab.kh"; ki: "ab.ki"; kj: "ab.kj"; kk: "ab.kk"; kl: "ab.kl"; km: "ab.km"; kn: "ab.kn"; ko: "ab.ko"; kp: "ab.kp"; kq: "ab.kq"; kr: "ab.kr"; ks: "ab.ks"; kt: "ab.kt"; ku: "ab.ku"; kv: "ab.kv"; kw: "ab.kw"; kx: "ab.kx"; ky: "ab.ky"; kz: "ab.kz"; la: "ab.la"; lb: "ab.lb"; lc: "ab.lc"; ld: "ab.ld"; le: "ab.le"; lf: "ab.lf"; lg: "ab.lg"; lh: "ab.lh"; li: "ab.li"; lj: "ab.lj"; lk: "ab.lk"; ll: "ab.ll"; lm: "ab.lm"; ln: "ab.ln"; lo: "ab.lo"; lp: "ab.lp"; lq: "ab.lq"; lr: "ab.lr"; ls: "ab.ls"; lt: "ab.lt"; lu: "ab.lu"; lv: "ab.lv"; lw: "ab.lw"; lx: "ab.lx"; ly: "ab.ly"; lz: "ab.lz"; ma: "ab.ma"; mb: "ab.mb"; mc: "ab.mc"; md: "ab.md"; me: "ab.me"; mf: "ab.mf"; mg: "ab.mg"; mh: "ab.mh"; mi: "ab.mi"; mj: "ab.mj"; mk: "ab.mk"; ml: "ab.ml"; mm: "ab.mm"; mn: "ab.mn"; mo: "ab.mo"; mp: "ab.mp"; mq: "ab.mq"; mr: "ab.mr"; ms: "ab.ms"; mt: "ab.mt"; mu: "ab.mu"; mv: "ab.mv"; mw: "ab.mw"; mx: "ab.mx"; my: "ab.my"; mz: "ab.mz"; na: "ab.na"; nb: "ab.nb"; nc: "ab.nc"; nd: "ab.nd"; ne: "ab.ne"; nf: "ab.nf"; ng: "ab.ng"; nh: "ab.nh"; ni: "ab.ni"; nj: "ab.nj"; nk: "ab.nk"; nl: "ab.nl"; nm: "ab.nm"; nn: "ab.nn"; no: "ab.no"; np: "ab.np"; nq: "ab.nq"; nr: "ab.nr"; ns: "ab.ns"; nt: "ab.nt"; nu: "ab.nu"; nv: "ab.nv"; nw: "ab.nw"; nx: "ab.nx"; ny: "ab.ny"; nz: "ab.nz"; oa: "ab.oa"; ob: "ab.ob"; oc: "ab.oc"; od: "ab.od"; oe: "ab.oe"; of: "ab.of"; og: "ab.og"; oh: "ab.oh"; oi: "ab.oi"; oj: "ab.oj"; ok: "ab.ok"; ol: "ab.ol"; om: "ab.om"; on: "ab.on"; oo: "ab.oo"; op: "ab.op"; oq: "ab.oq"; or: "ab.or"; os: "ab.os"; ot: "ab.ot"; ou: "ab.ou"; ov: "ab.ov"; ow: "ab.ow"; ox: "ab.ox"; oy: "ab.oy"; oz: "ab.oz"; pa: "ab.pa"; pb: "ab.pb"; pc: "ab.pc"; pd: "ab.pd"; pe: "ab.pe"; pf: "ab.pf"; pg: "ab.pg"; ph: "ab.ph"; pi: "ab.pi"; pj: "ab.pj"; pk: "ab.pk"; pl: "ab.pl"; pm: "ab.pm"; pn: "ab.pn"; po: "ab.po"; pp: "ab.pp"; pq: "ab.pq"; pr: "ab.pr"; ps: "ab.ps"; pt: "ab.pt"; pu: "ab.pu"; pv: "ab.pv"; pw: "ab.pw"; px: "ab.px"; py: "ab.py"; pz: "ab.pz"; qa: "ab.qa"; qb: "ab.qb"; qc: "ab.qc"; qd: "ab.qd"; qe: "ab.qe"; qf: "ab.qf"; qg: "ab.qg"; qh: "ab.qh"; qi: "ab.qi"; qj: "ab.qj"; qk: "ab.qk"; ql: "ab.ql"; qm: "ab.qm"; qn: "ab.qn"; qo: "ab.qo"; qp: "ab.qp"; qq: "ab.qq"; qr: "ab.qr"; qs: "ab.qs"; qt: "ab.qt"; qu: "ab.qu"; qv: "ab.qv"; qw: "ab.qw"; qx: "ab.qx"; qy: "ab.qy"; qz: "ab.qz"; ra: "ab.ra"; rb: "ab.rb"; rc: "ab.rc"; rd: "ab.rd"; re: "ab.re"; rf: "ab.rf"; rg: "ab.rg"; rh: "ab.rh"; ri: "ab.ri"; rj: "ab.rj"; rk: "ab.rk"; rl: "ab.rl"; rm: "ab.rm"; rn: "ab.rn"; ro: "ab.ro"; rp: "ab.rp"; rq: "ab.rq"; rr: "ab.rr"; rs: "ab.rs"; rt: "ab.rt"; ru: "ab.ru"; rv: "ab.rv"; rw: "ab.rw"; rx: "ab.rx"; ry: "ab.ry"; rz: "ab.rz"; sa: "ab.sa"; sb: "ab.sb"; sc: "ab.sc"; sd: "ab.sd"; se: "ab.se"; sf: "ab.sf"; sg: "ab.sg"; sh: "ab.sh"; si: "ab.si"; sj: "ab.sj"; sk: "ab.sk"; sl: "ab.sl"; sm: "ab.sm"; sn: "ab.sn"; so: "ab.so"; sp: "ab.sp"; sq: "ab.sq"; sr: "ab.sr"; ss: "ab.ss"; st: "ab.st"; su: "ab.su"; sv: "ab.sv"; sw: "ab.sw"; sx: "ab.sx"; sy: "ab.sy"; sz: "ab.sz"; ta: "ab.ta"; tb: "ab.tb"; tc: "ab.tc"; td: "ab.td"; te: "ab.te"; tf: "ab.tf"; tg: "ab.tg"; th: "ab.th"; ti: "ab.ti"; tj: "ab.tj"; tk: "ab.tk"; tl: "ab.tl"; tm: "ab.tm"; tn: "ab.tn"; to: "ab.to"; tp: "ab.tp"; tq: "ab.tq"; tr: "ab.tr"; ts: "ab.ts"; tt: "ab.tt"; tu: "ab.tu"; tv: "ab.tv"; tw: "ab.tw"; tx: "ab.tx"; ty: "ab.ty"; tz: "ab.tz"; ua: "ab.ua"; ub: "ab.ub"; uc: "ab.uc"; ud: "ab.ud"; ue: "ab.ue"; uf: "ab.uf"; ug: "ab.ug"; uh: "ab.uh"; ui: "ab.ui"; uj: "ab.uj"; uk: "ab.uk"; ul: "ab.ul"; um: "ab.um"; un: "ab.un"; uo: "ab.uo"; up: "ab.up"; uq: "ab.uq"; ur: "ab.ur"; us: "ab.us"; ut: "ab.ut"; uu: "ab.uu"; uv: "ab.uv"; uw: "ab.uw"; ux: "ab.ux"; uy: "ab.uy"; uz: "ab.uz"; va: "ab.va"; vb: "ab.vb"; vc: "ab.vc"; vd: "ab.vd"; ve: "ab.ve"; vf: "ab.vf"; vg: "ab.vg"; vh: "ab.vh"; vi: "ab.vi"; vj: "ab.vj"; vk: "ab.vk"; vl: "ab.vl"; vm: "ab.vm"; vn: "ab.vn"; vo: "ab.vo"; vp: "ab.vp"; vq: "ab.vq"; vr: "ab.vr"; vs: "ab.vs"; vt: "ab.vt"; vu: "ab.vu"; vv: "ab.vv"; vw: "ab.vw"; vx: "ab.vx"; vy: "ab.vy"; vz: "ab.vz"; wa: "ab.wa"; wb: "ab.wb"; wc: "ab.wc"; wd: "ab.wd"; we: "ab.we"; wf: "ab.wf"; wg: "ab.wg"; wh: "ab.wh"; wi: "ab.wi"; wj: "ab.wj"; wk: "ab.wk"; wl: "ab.wl"; wm: "ab.wm"; wn: "ab.wn"; wo: "ab.wo"; wp: "ab.wp"; wq: "ab.wq"; wr: "ab.wr"; ws: "ab.ws"; wt: "ab.wt"; wu: "ab.wu"; wv: "ab.wv"; ww: "ab.ww"; wx: "ab.wx"; wy: "ab.wy"; wz: "ab.wz"; xa: "ab.xa"; xb: "ab.xb"; xc: "ab.xc"; xd: "ab.xd"; xe: "ab.xe"; xf: "ab.xf"; xg: "ab.xg"; xh: "ab.xh"; xi: "ab.xi"; xj: "ab.xj"; xk: "ab.xk"; xl: "ab.xl"; xm: "ab.xm"; xn: "ab.xn"; xo: "ab.xo"; xp: "ab.xp"; xq: "ab.xq"; xr: "ab.xr"; xs: "ab.xs"; xt: "ab.xt"; xu: "ab.xu"; xv: "ab.xv"; xw: "ab.xw"; xx: "ab.xx"; xy: "ab.xy"; xz: "ab.xz"; ya: "ab.ya"; yb: "ab.yb"; yc: "ab.yc"; yd: "ab.yd"; ye: "ab.ye"; yf: "ab.yf"; yg: "ab.yg"; yh: "ab.yh"; yi: "ab.yi"; yj: "ab.yj"; yk: "ab.yk"; yl: "ab.yl"; ym: "ab.ym"; yn: "ab.yn"; yo: "ab.yo"; yp: "ab.yp"; yq: "ab.yq"; yr: "ab.yr"; ys: "ab.ys"; yt: "ab.yt"; yu: "ab.yu"; yv: "ab.yv"; yw: "ab.yw"; yx: "ab.yx"; yy: "ab.yy"; yz: "ab.yz"; za: "ab.za"; zb: "ab.zb"; zc: "ab.zc"; zd: "ab.zd"; ze: "ab.ze"; zf: "ab.zf"; zg: "ab.zg"; zh: "ab.zh"; zi: "ab.zi"; zj: "ab.zj"; zk: "ab.zk"; zl: "ab.zl"; zm: "ab.zm"; zn: "ab.zn"; zo: "ab.zo"; zp: "ab.zp"; zq: "ab.zq"; zr: "ab.zr"; zs: "ab.zs"; zt: "ab.zt"; zu: "ab.zu"; zv: "ab.zv"; zw: "ab.zw"; zx: "ab.zx"; zy: "ab.zy"; zz: "ab.zz"; }; ac: { aa: "ac.aa"; ab: "ac.ab"; ac: "ac.ac"; ad: "ac.ad"; ae: "ac.ae"; af: "ac.af"; ag: "ac.ag"; ah: "ac.ah"; ai: "ac.ai"; aj: "ac.aj"; ak: "ac.ak"; al: "ac.al"; am: "ac.am"; an: "ac.an"; ao: "ac.ao"; ap: "ac.ap"; aq: "ac.aq"; ar: "ac.ar"; as: "ac.as"; at: "ac.at"; au: "ac.au"; av: "ac.av"; aw: "ac.aw"; ax: "ac.ax"; ay: "ac.ay"; az: "ac.az"; ba: "ac.ba"; bb: "ac.bb"; bc: "ac.bc"; bd: "ac.bd"; be: "ac.be"; bf: "ac.bf"; bg: "ac.bg"; bh: "ac.bh"; bi: "ac.bi"; bj: "ac.bj"; bk: "ac.bk"; bl: "ac.bl"; bm: "ac.bm"; bn: "ac.bn"; bo: "ac.bo"; bp: "ac.bp"; bq: "ac.bq"; br: "ac.br"; bs: "ac.bs"; bt: "ac.bt"; bu: "ac.bu"; bv: "ac.bv"; bw: "ac.bw"; bx: "ac.bx"; by: "ac.by"; bz: "ac.bz"; ca: "ac.ca"; cb: "ac.cb"; cc: "ac.cc"; cd: "ac.cd"; ce: "ac.ce"; cf: "ac.cf"; cg: "ac.cg"; ch: "ac.ch"; ci: "ac.ci"; cj: "ac.cj"; ck: "ac.ck"; cl: "ac.cl"; cm: "ac.cm"; cn: "ac.cn"; co: "ac.co"; cp: "ac.cp"; cq: "ac.cq"; cr: "ac.cr"; cs: "ac.cs"; ct: "ac.ct"; cu: "ac.cu"; cv: "ac.cv"; cw: "ac.cw"; cx: "ac.cx"; cy: "ac.cy"; cz: "ac.cz"; da: "ac.da"; db: "ac.db"; dc: "ac.dc"; dd: "ac.dd"; de: "ac.de"; df: "ac.df"; dg: "ac.dg"; dh: "ac.dh"; di: "ac.di"; dj: "ac.dj"; dk: "ac.dk"; dl: "ac.dl"; dm: "ac.dm"; dn: "ac.dn"; do: "ac.do"; dp: "ac.dp"; dq: "ac.dq"; dr: "ac.dr"; ds: "ac.ds"; dt: "ac.dt"; du: "ac.du"; dv: "ac.dv"; dw: "ac.dw"; dx: "ac.dx"; dy: "ac.dy"; dz: "ac.dz"; ea: "ac.ea"; eb: "ac.eb"; ec: "ac.ec"; ed: "ac.ed"; ee: "ac.ee"; ef: "ac.ef"; eg: "ac.eg"; eh: "ac.eh"; ei: "ac.ei"; ej: "ac.ej"; ek: "ac.ek"; el: "ac.el"; em: "ac.em"; en: "ac.en"; eo: "ac.eo"; ep: "ac.ep"; eq: "ac.eq"; er: "ac.er"; es: "ac.es"; et: "ac.et"; eu: "ac.eu"; ev: "ac.ev"; ew: "ac.ew"; ex: "ac.ex"; ey: "ac.ey"; ez: "ac.ez"; fa: "ac.fa"; fb: "ac.fb"; fc: "ac.fc"; fd: "ac.fd"; fe: "ac.fe"; ff: "ac.ff"; fg: "ac.fg"; fh: "ac.fh"; fi: "ac.fi"; fj: "ac.fj"; fk: "ac.fk"; fl: "ac.fl"; fm: "ac.fm"; fn: "ac.fn"; fo: "ac.fo"; fp: "ac.fp"; fq: "ac.fq"; fr: "ac.fr"; fs: "ac.fs"; ft: "ac.ft"; fu: "ac.fu"; fv: "ac.fv"; fw: "ac.fw"; fx: "ac.fx"; fy: "ac.fy"; fz: "ac.fz"; ga: "ac.ga"; gb: "ac.gb"; gc: "ac.gc"; gd: "ac.gd"; ge: "ac.ge"; gf: "ac.gf"; gg: "ac.gg"; gh: "ac.gh"; gi: "ac.gi"; gj: "ac.gj"; gk: "ac.gk"; gl: "ac.gl"; gm: "ac.gm"; gn: "ac.gn"; go: "ac.go"; gp: "ac.gp"; gq: "ac.gq"; gr: "ac.gr"; gs: "ac.gs"; gt: "ac.gt"; gu: "ac.gu"; gv: "ac.gv"; gw: "ac.gw"; gx: "ac.gx"; gy: "ac.gy"; gz: "ac.gz"; ha: "ac.ha"; hb: "ac.hb"; hc: "ac.hc"; hd: "ac.hd"; he: "ac.he"; hf: "ac.hf"; hg: "ac.hg"; hh: "ac.hh"; hi: "ac.hi"; hj: "ac.hj"; hk: "ac.hk"; hl: "ac.hl"; hm: "ac.hm"; hn: "ac.hn"; ho: "ac.ho"; hp: "ac.hp"; hq: "ac.hq"; hr: "ac.hr"; hs: "ac.hs"; ht: "ac.ht"; hu: "ac.hu"; hv: "ac.hv"; hw: "ac.hw"; hx: "ac.hx"; hy: "ac.hy"; hz: "ac.hz"; ia: "ac.ia"; ib: "ac.ib"; ic: "ac.ic"; id: "ac.id"; ie: "ac.ie"; if: "ac.if"; ig: "ac.ig"; ih: "ac.ih"; ii: "ac.ii"; ij: "ac.ij"; ik: "ac.ik"; il: "ac.il"; im: "ac.im"; in: "ac.in"; io: "ac.io"; ip: "ac.ip"; iq: "ac.iq"; ir: "ac.ir"; is: "ac.is"; it: "ac.it"; iu: "ac.iu"; iv: "ac.iv"; iw: "ac.iw"; ix: "ac.ix"; iy: "ac.iy"; iz: "ac.iz"; ja: "ac.ja"; jb: "ac.jb"; jc: "ac.jc"; jd: "ac.jd"; je: "ac.je"; jf: "ac.jf"; jg: "ac.jg"; jh: "ac.jh"; ji: "ac.ji"; jj: "ac.jj"; jk: "ac.jk"; jl: "ac.jl"; jm: "ac.jm"; jn: "ac.jn"; jo: "ac.jo"; jp: "ac.jp"; jq: "ac.jq"; jr: "ac.jr"; js: "ac.js"; jt: "ac.jt"; ju: "ac.ju"; jv: "ac.jv"; jw: "ac.jw"; jx: "ac.jx"; jy: "ac.jy"; jz: "ac.jz"; ka: "ac.ka"; kb: "ac.kb"; kc: "ac.kc"; kd: "ac.kd"; ke: "ac.ke"; kf: "ac.kf"; kg: "ac.kg"; kh: "ac.kh"; ki: "ac.ki"; kj: "ac.kj"; kk: "ac.kk"; kl: "ac.kl"; km: "ac.km"; kn: "ac.kn"; ko: "ac.ko"; kp: "ac.kp"; kq: "ac.kq"; kr: "ac.kr"; ks: "ac.ks"; kt: "ac.kt"; ku: "ac.ku"; kv: "ac.kv"; kw: "ac.kw"; kx: "ac.kx"; ky: "ac.ky"; kz: "ac.kz"; la: "ac.la"; lb: "ac.lb"; lc: "ac.lc"; ld: "ac.ld"; le: "ac.le"; lf: "ac.lf"; lg: "ac.lg"; lh: "ac.lh"; li: "ac.li"; lj: "ac.lj"; lk: "ac.lk"; ll: "ac.ll"; lm: "ac.lm"; ln: "ac.ln"; lo: "ac.lo"; lp: "ac.lp"; lq: "ac.lq"; lr: "ac.lr"; ls: "ac.ls"; lt: "ac.lt"; lu: "ac.lu"; lv: "ac.lv"; lw: "ac.lw"; lx: "ac.lx"; ly: "ac.ly"; lz: "ac.lz"; ma: "ac.ma"; mb: "ac.mb"; mc: "ac.mc"; md: "ac.md"; me: "ac.me"; mf: "ac.mf"; mg: "ac.mg"; mh: "ac.mh"; mi: "ac.mi"; mj: "ac.mj"; mk: "ac.mk"; ml: "ac.ml"; mm: "ac.mm"; mn: "ac.mn"; mo: "ac.mo"; mp: "ac.mp"; mq: "ac.mq"; mr: "ac.mr"; ms: "ac.ms"; mt: "ac.mt"; mu: "ac.mu"; mv: "ac.mv"; mw: "ac.mw"; mx: "ac.mx"; my: "ac.my"; mz: "ac.mz"; na: "ac.na"; nb: "ac.nb"; nc: "ac.nc"; nd: "ac.nd"; ne: "ac.ne"; nf: "ac.nf"; ng: "ac.ng"; nh: "ac.nh"; ni: "ac.ni"; nj: "ac.nj"; nk: "ac.nk"; nl: "ac.nl"; nm: "ac.nm"; nn: "ac.nn"; no: "ac.no"; np: "ac.np"; nq: "ac.nq"; nr: "ac.nr"; ns: "ac.ns"; nt: "ac.nt"; nu: "ac.nu"; nv: "ac.nv"; nw: "ac.nw"; nx: "ac.nx"; ny: "ac.ny"; nz: "ac.nz"; oa: "ac.oa"; ob: "ac.ob"; oc: "ac.oc"; od: "ac.od"; oe: "ac.oe"; of: "ac.of"; og: "ac.og"; oh: "ac.oh"; oi: "ac.oi"; oj: "ac.oj"; ok: "ac.ok"; ol: "ac.ol"; om: "ac.om"; on: "ac.on"; oo: "ac.oo"; op: "ac.op"; oq: "ac.oq"; or: "ac.or"; os: "ac.os"; ot: "ac.ot"; ou: "ac.ou"; ov: "ac.ov"; ow: "ac.ow"; ox: "ac.ox"; oy: "ac.oy"; oz: "ac.oz"; pa: "ac.pa"; pb: "ac.pb"; pc: "ac.pc"; pd: "ac.pd"; pe: "ac.pe"; pf: "ac.pf"; pg: "ac.pg"; ph: "ac.ph"; pi: "ac.pi"; pj: "ac.pj"; pk: "ac.pk"; pl: "ac.pl"; pm: "ac.pm"; pn: "ac.pn"; po: "ac.po"; pp: "ac.pp"; pq: "ac.pq"; pr: "ac.pr"; ps: "ac.ps"; pt: "ac.pt"; pu: "ac.pu"; pv: "ac.pv"; pw: "ac.pw"; px: "ac.px"; py: "ac.py"; pz: "ac.pz"; qa: "ac.qa"; qb: "ac.qb"; qc: "ac.qc"; qd: "ac.qd"; qe: "ac.qe"; qf: "ac.qf"; qg: "ac.qg"; qh: "ac.qh"; qi: "ac.qi"; qj: "ac.qj"; qk: "ac.qk"; ql: "ac.ql"; qm: "ac.qm"; qn: "ac.qn"; qo: "ac.qo"; qp: "ac.qp"; qq: "ac.qq"; qr: "ac.qr"; qs: "ac.qs"; qt: "ac.qt"; qu: "ac.qu"; qv: "ac.qv"; qw: "ac.qw"; qx: "ac.qx"; qy: "ac.qy"; qz: "ac.qz"; ra: "ac.ra"; rb: "ac.rb"; rc: "ac.rc"; rd: "ac.rd"; re: "ac.re"; rf: "ac.rf"; rg: "ac.rg"; rh: "ac.rh"; ri: "ac.ri"; rj: "ac.rj"; rk: "ac.rk"; rl: "ac.rl"; rm: "ac.rm"; rn: "ac.rn"; ro: "ac.ro"; rp: "ac.rp"; rq: "ac.rq"; rr: "ac.rr"; rs: "ac.rs"; rt: "ac.rt"; ru: "ac.ru"; rv: "ac.rv"; rw: "ac.rw"; rx: "ac.rx"; ry: "ac.ry"; rz: "ac.rz"; sa: "ac.sa"; sb: "ac.sb"; sc: "ac.sc"; sd: "ac.sd"; se: "ac.se"; sf: "ac.sf"; sg: "ac.sg"; sh: "ac.sh"; si: "ac.si"; sj: "ac.sj"; sk: "ac.sk"; sl: "ac.sl"; sm: "ac.sm"; sn: "ac.sn"; so: "ac.so"; sp: "ac.sp"; sq: "ac.sq"; sr: "ac.sr"; ss: "ac.ss"; st: "ac.st"; su: "ac.su"; sv: "ac.sv"; sw: "ac.sw"; sx: "ac.sx"; sy: "ac.sy"; sz: "ac.sz"; ta: "ac.ta"; tb: "ac.tb"; tc: "ac.tc"; td: "ac.td"; te: "ac.te"; tf: "ac.tf"; tg: "ac.tg"; th: "ac.th"; ti: "ac.ti"; tj: "ac.tj"; tk: "ac.tk"; tl: "ac.tl"; tm: "ac.tm"; tn: "ac.tn"; to: "ac.to"; tp: "ac.tp"; tq: "ac.tq"; tr: "ac.tr"; ts: "ac.ts"; tt: "ac.tt"; tu: "ac.tu"; tv: "ac.tv"; tw: "ac.tw"; tx: "ac.tx"; ty: "ac.ty"; tz: "ac.tz"; ua: "ac.ua"; ub: "ac.ub"; uc: "ac.uc"; ud: "ac.ud"; ue: "ac.ue"; uf: "ac.uf"; ug: "ac.ug"; uh: "ac.uh"; ui: "ac.ui"; uj: "ac.uj"; uk: "ac.uk"; ul: "ac.ul"; um: "ac.um"; un: "ac.un"; uo: "ac.uo"; up: "ac.up"; uq: "ac.uq"; ur: "ac.ur"; us: "ac.us"; ut: "ac.ut"; uu: "ac.uu"; uv: "ac.uv"; uw: "ac.uw"; ux: "ac.ux"; uy: "ac.uy"; uz: "ac.uz"; va: "ac.va"; vb: "ac.vb"; vc: "ac.vc"; vd: "ac.vd"; ve: "ac.ve"; vf: "ac.vf"; vg: "ac.vg"; vh: "ac.vh"; vi: "ac.vi"; vj: "ac.vj"; vk: "ac.vk"; vl: "ac.vl"; vm: "ac.vm"; vn: "ac.vn"; vo: "ac.vo"; vp: "ac.vp"; vq: "ac.vq"; vr: "ac.vr"; vs: "ac.vs"; vt: "ac.vt"; vu: "ac.vu"; vv: "ac.vv"; vw: "ac.vw"; vx: "ac.vx"; vy: "ac.vy"; vz: "ac.vz"; wa: "ac.wa"; wb: "ac.wb"; wc: "ac.wc"; wd: "ac.wd"; we: "ac.we"; wf: "ac.wf"; wg: "ac.wg"; wh: "ac.wh"; wi: "ac.wi"; wj: "ac.wj"; wk: "ac.wk"; wl: "ac.wl"; wm: "ac.wm"; wn: "ac.wn"; wo: "ac.wo"; wp: "ac.wp"; wq: "ac.wq"; wr: "ac.wr"; ws: "ac.ws"; wt: "ac.wt"; wu: "ac.wu"; wv: "ac.wv"; ww: "ac.ww"; wx: "ac.wx"; wy: "ac.wy"; wz: "ac.wz"; xa: "ac.xa"; xb: "ac.xb"; xc: "ac.xc"; xd: "ac.xd"; xe: "ac.xe"; xf: "ac.xf"; xg: "ac.xg"; xh: "ac.xh"; xi: "ac.xi"; xj: "ac.xj"; xk: "ac.xk"; xl: "ac.xl"; xm: "ac.xm"; xn: "ac.xn"; xo: "ac.xo"; xp: "ac.xp"; xq: "ac.xq"; xr: "ac.xr"; xs: "ac.xs"; xt: "ac.xt"; xu: "ac.xu"; xv: "ac.xv"; xw: "ac.xw"; xx: "ac.xx"; xy: "ac.xy"; xz: "ac.xz"; ya: "ac.ya"; yb: "ac.yb"; yc: "ac.yc"; yd: "ac.yd"; ye: "ac.ye"; yf: "ac.yf"; yg: "ac.yg"; yh: "ac.yh"; yi: "ac.yi"; yj: "ac.yj"; yk: "ac.yk"; yl: "ac.yl"; ym: "ac.ym"; yn: "ac.yn"; yo: "ac.yo"; yp: "ac.yp"; yq: "ac.yq"; yr: "ac.yr"; ys: "ac.ys"; yt: "ac.yt"; yu: "ac.yu"; yv: "ac.yv"; yw: "ac.yw"; yx: "ac.yx"; yy: "ac.yy"; yz: "ac.yz"; za: "ac.za"; zb: "ac.zb"; zc: "ac.zc"; zd: "ac.zd"; ze: "ac.ze"; zf: "ac.zf"; zg: "ac.zg"; zh: "ac.zh"; zi: "ac.zi"; zj: "ac.zj"; zk: "ac.zk"; zl: "ac.zl"; zm: "ac.zm"; zn: "ac.zn"; zo: "ac.zo"; zp: "ac.zp"; zq: "ac.zq"; zr: "ac.zr"; zs: "ac.zs"; zt: "ac.zt"; zu: "ac.zu"; zv: "ac.zv"; zw: "ac.zw"; zx: "ac.zx"; zy: "ac.zy"; zz: "ac.zz"; }; ad: { aa: "ad.aa"; ab: "ad.ab"; ac: "ad.ac"; ad: "ad.ad"; ae: "ad.ae"; af: "ad.af"; ag: "ad.ag"; ah: "ad.ah"; ai: "ad.ai"; aj: "ad.aj"; ak: "ad.ak"; al: "ad.al"; am: "ad.am"; an: "ad.an"; ao: "ad.ao"; ap: "ad.ap"; aq: "ad.aq"; ar: "ad.ar"; as: "ad.as"; at: "ad.at"; au: "ad.au"; av: "ad.av"; aw: "ad.aw"; ax: "ad.ax"; ay: "ad.ay"; az: "ad.az"; ba: "ad.ba"; bb: "ad.bb"; bc: "ad.bc"; bd: "ad.bd"; be: "ad.be"; bf: "ad.bf"; bg: "ad.bg"; bh: "ad.bh"; bi: "ad.bi"; bj: "ad.bj"; bk: "ad.bk"; bl: "ad.bl"; bm: "ad.bm"; bn: "ad.bn"; bo: "ad.bo"; bp: "ad.bp"; bq: "ad.bq"; br: "ad.br"; bs: "ad.bs"; bt: "ad.bt"; bu: "ad.bu"; bv: "ad.bv"; bw: "ad.bw"; bx: "ad.bx"; by: "ad.by"; bz: "ad.bz"; ca: "ad.ca"; cb: "ad.cb"; cc: "ad.cc"; cd: "ad.cd"; ce: "ad.ce"; cf: "ad.cf"; cg: "ad.cg"; ch: "ad.ch"; ci: "ad.ci"; cj: "ad.cj"; ck: "ad.ck"; cl: "ad.cl"; cm: "ad.cm"; cn: "ad.cn"; co: "ad.co"; cp: "ad.cp"; cq: "ad.cq"; cr: "ad.cr"; cs: "ad.cs"; ct: "ad.ct"; cu: "ad.cu"; cv: "ad.cv"; cw: "ad.cw"; cx: "ad.cx"; cy: "ad.cy"; cz: "ad.cz"; da: "ad.da"; db: "ad.db"; dc: "ad.dc"; dd: "ad.dd"; de: "ad.de"; df: "ad.df"; dg: "ad.dg"; dh: "ad.dh"; di: "ad.di"; dj: "ad.dj"; dk: "ad.dk"; dl: "ad.dl"; dm: "ad.dm"; dn: "ad.dn"; do: "ad.do"; dp: "ad.dp"; dq: "ad.dq"; dr: "ad.dr"; ds: "ad.ds"; dt: "ad.dt"; du: "ad.du"; dv: "ad.dv"; dw: "ad.dw"; dx: "ad.dx"; dy: "ad.dy"; dz: "ad.dz"; ea: "ad.ea"; eb: "ad.eb"; ec: "ad.ec"; ed: "ad.ed"; ee: "ad.ee"; ef: "ad.ef"; eg: "ad.eg"; eh: "ad.eh"; ei: "ad.ei"; ej: "ad.ej"; ek: "ad.ek"; el: "ad.el"; em: "ad.em"; en: "ad.en"; eo: "ad.eo"; ep: "ad.ep"; eq: "ad.eq"; er: "ad.er"; es: "ad.es"; et: "ad.et"; eu: "ad.eu"; ev: "ad.ev"; ew: "ad.ew"; ex: "ad.ex"; ey: "ad.ey"; ez: "ad.ez"; fa: "ad.fa"; fb: "ad.fb"; fc: "ad.fc"; fd: "ad.fd"; fe: "ad.fe"; ff: "ad.ff"; fg: "ad.fg"; fh: "ad.fh"; fi: "ad.fi"; fj: "ad.fj"; fk: "ad.fk"; fl: "ad.fl"; fm: "ad.fm"; fn: "ad.fn"; fo: "ad.fo"; fp: "ad.fp"; fq: "ad.fq"; fr: "ad.fr"; fs: "ad.fs"; ft: "ad.ft"; fu: "ad.fu"; fv: "ad.fv"; fw: "ad.fw"; fx: "ad.fx"; fy: "ad.fy"; fz: "ad.fz"; ga: "ad.ga"; gb: "ad.gb"; gc: "ad.gc"; gd: "ad.gd"; ge: "ad.ge"; gf: "ad.gf"; gg: "ad.gg"; gh: "ad.gh"; gi: "ad.gi"; gj: "ad.gj"; gk: "ad.gk"; gl: "ad.gl"; gm: "ad.gm"; gn: "ad.gn"; go: "ad.go"; gp: "ad.gp"; gq: "ad.gq"; gr: "ad.gr"; gs: "ad.gs"; gt: "ad.gt"; gu: "ad.gu"; gv: "ad.gv"; gw: "ad.gw"; gx: "ad.gx"; gy: "ad.gy"; gz: "ad.gz"; ha: "ad.ha"; hb: "ad.hb"; hc: "ad.hc"; hd: "ad.hd"; he: "ad.he"; hf: "ad.hf"; hg: "ad.hg"; hh: "ad.hh"; hi: "ad.hi"; hj: "ad.hj"; hk: "ad.hk"; hl: "ad.hl"; hm: "ad.hm"; hn: "ad.hn"; ho: "ad.ho"; hp: "ad.hp"; hq: "ad.hq"; hr: "ad.hr"; hs: "ad.hs"; ht: "ad.ht"; hu: "ad.hu"; hv: "ad.hv"; hw: "ad.hw"; hx: "ad.hx"; hy: "ad.hy"; hz: "ad.hz"; ia: "ad.ia"; ib: "ad.ib"; ic: "ad.ic"; id: "ad.id"; ie: "ad.ie"; if: "ad.if"; ig: "ad.ig"; ih: "ad.ih"; ii: "ad.ii"; ij: "ad.ij"; ik: "ad.ik"; il: "ad.il"; im: "ad.im"; in: "ad.in"; io: "ad.io"; ip: "ad.ip"; iq: "ad.iq"; ir: "ad.ir"; is: "ad.is"; it: "ad.it"; iu: "ad.iu"; iv: "ad.iv"; iw: "ad.iw"; ix: "ad.ix"; iy: "ad.iy"; iz: "ad.iz"; ja: "ad.ja"; jb: "ad.jb"; jc: "ad.jc"; jd: "ad.jd"; je: "ad.je"; jf: "ad.jf"; jg: "ad.jg"; jh: "ad.jh"; ji: "ad.ji"; jj: "ad.jj"; jk: "ad.jk"; jl: "ad.jl"; jm: "ad.jm"; jn: "ad.jn"; jo: "ad.jo"; jp: "ad.jp"; jq: "ad.jq"; jr: "ad.jr"; js: "ad.js"; jt: "ad.jt"; ju: "ad.ju"; jv: "ad.jv"; jw: "ad.jw"; jx: "ad.jx"; jy: "ad.jy"; jz: "ad.jz"; ka: "ad.ka"; kb: "ad.kb"; kc: "ad.kc"; kd: "ad.kd"; ke: "ad.ke"; kf: "ad.kf"; kg: "ad.kg"; kh: "ad.kh"; ki: "ad.ki"; kj: "ad.kj"; kk: "ad.kk"; kl: "ad.kl"; km: "ad.km"; kn: "ad.kn"; ko: "ad.ko"; kp: "ad.kp"; kq: "ad.kq"; kr: "ad.kr"; ks: "ad.ks"; kt: "ad.kt"; ku: "ad.ku"; kv: "ad.kv"; kw: "ad.kw"; kx: "ad.kx"; ky: "ad.ky"; kz: "ad.kz"; la: "ad.la"; lb: "ad.lb"; lc: "ad.lc"; ld: "ad.ld"; le: "ad.le"; lf: "ad.lf"; lg: "ad.lg"; lh: "ad.lh"; li: "ad.li"; lj: "ad.lj"; lk: "ad.lk"; ll: "ad.ll"; lm: "ad.lm"; ln: "ad.ln"; lo: "ad.lo"; lp: "ad.lp"; lq: "ad.lq"; lr: "ad.lr"; ls: "ad.ls"; lt: "ad.lt"; lu: "ad.lu"; lv: "ad.lv"; lw: "ad.lw"; lx: "ad.lx"; ly: "ad.ly"; lz: "ad.lz"; ma: "ad.ma"; mb: "ad.mb"; mc: "ad.mc"; md: "ad.md"; me: "ad.me"; mf: "ad.mf"; mg: "ad.mg"; mh: "ad.mh"; mi: "ad.mi"; mj: "ad.mj"; mk: "ad.mk"; ml: "ad.ml"; mm: "ad.mm"; mn: "ad.mn"; mo: "ad.mo"; mp: "ad.mp"; mq: "ad.mq"; mr: "ad.mr"; ms: "ad.ms"; mt: "ad.mt"; mu: "ad.mu"; mv: "ad.mv"; mw: "ad.mw"; mx: "ad.mx"; my: "ad.my"; mz: "ad.mz"; na: "ad.na"; nb: "ad.nb"; nc: "ad.nc"; nd: "ad.nd"; ne: "ad.ne"; nf: "ad.nf"; ng: "ad.ng"; nh: "ad.nh"; ni: "ad.ni"; nj: "ad.nj"; nk: "ad.nk"; nl: "ad.nl"; nm: "ad.nm"; nn: "ad.nn"; no: "ad.no"; np: "ad.np"; nq: "ad.nq"; nr: "ad.nr"; ns: "ad.ns"; nt: "ad.nt"; nu: "ad.nu"; nv: "ad.nv"; nw: "ad.nw"; nx: "ad.nx"; ny: "ad.ny"; nz: "ad.nz"; oa: "ad.oa"; ob: "ad.ob"; oc: "ad.oc"; od: "ad.od"; oe: "ad.oe"; of: "ad.of"; og: "ad.og"; oh: "ad.oh"; oi: "ad.oi"; oj: "ad.oj"; ok: "ad.ok"; ol: "ad.ol"; om: "ad.om"; on: "ad.on"; oo: "ad.oo"; op: "ad.op"; oq: "ad.oq"; or: "ad.or"; os: "ad.os"; ot: "ad.ot"; ou: "ad.ou"; ov: "ad.ov"; ow: "ad.ow"; ox: "ad.ox"; oy: "ad.oy"; oz: "ad.oz"; pa: "ad.pa"; pb: "ad.pb"; pc: "ad.pc"; pd: "ad.pd"; pe: "ad.pe"; pf: "ad.pf"; pg: "ad.pg"; ph: "ad.ph"; pi: "ad.pi"; pj: "ad.pj"; pk: "ad.pk"; pl: "ad.pl"; pm: "ad.pm"; pn: "ad.pn"; po: "ad.po"; pp: "ad.pp"; pq: "ad.pq"; pr: "ad.pr"; ps: "ad.ps"; pt: "ad.pt"; pu: "ad.pu"; pv: "ad.pv"; pw: "ad.pw"; px: "ad.px"; py: "ad.py"; pz: "ad.pz"; qa: "ad.qa"; qb: "ad.qb"; qc: "ad.qc"; qd: "ad.qd"; qe: "ad.qe"; qf: "ad.qf"; qg: "ad.qg"; qh: "ad.qh"; qi: "ad.qi"; qj: "ad.qj"; qk: "ad.qk"; ql: "ad.ql"; qm: "ad.qm"; qn: "ad.qn"; qo: "ad.qo"; qp: "ad.qp"; qq: "ad.qq"; qr: "ad.qr"; qs: "ad.qs"; qt: "ad.qt"; qu: "ad.qu"; qv: "ad.qv"; qw: "ad.qw"; qx: "ad.qx"; qy: "ad.qy"; qz: "ad.qz"; ra: "ad.ra"; rb: "ad.rb"; rc: "ad.rc"; rd: "ad.rd"; re: "ad.re"; rf: "ad.rf"; rg: "ad.rg"; rh: "ad.rh"; ri: "ad.ri"; rj: "ad.rj"; rk: "ad.rk"; rl: "ad.rl"; rm: "ad.rm"; rn: "ad.rn"; ro: "ad.ro"; rp: "ad.rp"; rq: "ad.rq"; rr: "ad.rr"; rs: "ad.rs"; rt: "ad.rt"; ru: "ad.ru"; rv: "ad.rv"; rw: "ad.rw"; rx: "ad.rx"; ry: "ad.ry"; rz: "ad.rz"; sa: "ad.sa"; sb: "ad.sb"; sc: "ad.sc"; sd: "ad.sd"; se: "ad.se"; sf: "ad.sf"; sg: "ad.sg"; sh: "ad.sh"; si: "ad.si"; sj: "ad.sj"; sk: "ad.sk"; sl: "ad.sl"; sm: "ad.sm"; sn: "ad.sn"; so: "ad.so"; sp: "ad.sp"; sq: "ad.sq"; sr: "ad.sr"; ss: "ad.ss"; st: "ad.st"; su: "ad.su"; sv: "ad.sv"; sw: "ad.sw"; sx: "ad.sx"; sy: "ad.sy"; sz: "ad.sz"; ta: "ad.ta"; tb: "ad.tb"; tc: "ad.tc"; td: "ad.td"; te: "ad.te"; tf: "ad.tf"; tg: "ad.tg"; th: "ad.th"; ti: "ad.ti"; tj: "ad.tj"; tk: "ad.tk"; tl: "ad.tl"; tm: "ad.tm"; tn: "ad.tn"; to: "ad.to"; tp: "ad.tp"; tq: "ad.tq"; tr: "ad.tr"; ts: "ad.ts"; tt: "ad.tt"; tu: "ad.tu"; tv: "ad.tv"; tw: "ad.tw"; tx: "ad.tx"; ty: "ad.ty"; tz: "ad.tz"; ua: "ad.ua"; ub: "ad.ub"; uc: "ad.uc"; ud: "ad.ud"; ue: "ad.ue"; uf: "ad.uf"; ug: "ad.ug"; uh: "ad.uh"; ui: "ad.ui"; uj: "ad.uj"; uk: "ad.uk"; ul: "ad.ul"; um: "ad.um"; un: "ad.un"; uo: "ad.uo"; up: "ad.up"; uq: "ad.uq"; ur: "ad.ur"; us: "ad.us"; ut: "ad.ut"; uu: "ad.uu"; uv: "ad.uv"; uw: "ad.uw"; ux: "ad.ux"; uy: "ad.uy"; uz: "ad.uz"; va: "ad.va"; vb: "ad.vb"; vc: "ad.vc"; vd: "ad.vd"; ve: "ad.ve"; vf: "ad.vf"; vg: "ad.vg"; vh: "ad.vh"; vi: "ad.vi"; vj: "ad.vj"; vk: "ad.vk"; vl: "ad.vl"; vm: "ad.vm"; vn: "ad.vn"; vo: "ad.vo"; vp: "ad.vp"; vq: "ad.vq"; vr: "ad.vr"; vs: "ad.vs"; vt: "ad.vt"; vu: "ad.vu"; vv: "ad.vv"; vw: "ad.vw"; vx: "ad.vx"; vy: "ad.vy"; vz: "ad.vz"; wa: "ad.wa"; wb: "ad.wb"; wc: "ad.wc"; wd: "ad.wd"; we: "ad.we"; wf: "ad.wf"; wg: "ad.wg"; wh: "ad.wh"; wi: "ad.wi"; wj: "ad.wj"; wk: "ad.wk"; wl: "ad.wl"; wm: "ad.wm"; wn: "ad.wn"; wo: "ad.wo"; wp: "ad.wp"; wq: "ad.wq"; wr: "ad.wr"; ws: "ad.ws"; wt: "ad.wt"; wu: "ad.wu"; wv: "ad.wv"; ww: "ad.ww"; wx: "ad.wx"; wy: "ad.wy"; wz: "ad.wz"; xa: "ad.xa"; xb: "ad.xb"; xc: "ad.xc"; xd: "ad.xd"; xe: "ad.xe"; xf: "ad.xf"; xg: "ad.xg"; xh: "ad.xh"; xi: "ad.xi"; xj: "ad.xj"; xk: "ad.xk"; xl: "ad.xl"; xm: "ad.xm"; xn: "ad.xn"; xo: "ad.xo"; xp: "ad.xp"; xq: "ad.xq"; xr: "ad.xr"; xs: "ad.xs"; xt: "ad.xt"; xu: "ad.xu"; xv: "ad.xv"; xw: "ad.xw"; xx: "ad.xx"; xy: "ad.xy"; xz: "ad.xz"; ya: "ad.ya"; yb: "ad.yb"; yc: "ad.yc"; yd: "ad.yd"; ye: "ad.ye"; yf: "ad.yf"; yg: "ad.yg"; yh: "ad.yh"; yi: "ad.yi"; yj: "ad.yj"; yk: "ad.yk"; yl: "ad.yl"; ym: "ad.ym"; yn: "ad.yn"; yo: "ad.yo"; yp: "ad.yp"; yq: "ad.yq"; yr: "ad.yr"; ys: "ad.ys"; yt: "ad.yt"; yu: "ad.yu"; yv: "ad.yv"; yw: "ad.yw"; yx: "ad.yx"; yy: "ad.yy"; yz: "ad.yz"; za: "ad.za"; zb: "ad.zb"; zc: "ad.zc"; zd: "ad.zd"; ze: "ad.ze"; zf: "ad.zf"; zg: "ad.zg"; zh: "ad.zh"; zi: "ad.zi"; zj: "ad.zj"; zk: "ad.zk"; zl: "ad.zl"; zm: "ad.zm"; zn: "ad.zn"; zo: "ad.zo"; zp: "ad.zp"; zq: "ad.zq"; zr: "ad.zr"; zs: "ad.zs"; zt: "ad.zt"; zu: "ad.zu"; zv: "ad.zv"; zw: "ad.zw"; zx: "ad.zx"; zy: "ad.zy"; zz: "ad.zz"; }; ae: { aa: "ae.aa"; ab: "ae.ab"; ac: "ae.ac"; ad: "ae.ad"; ae: "ae.ae"; af: "ae.af"; ag: "ae.ag"; ah: "ae.ah"; ai: "ae.ai"; aj: "ae.aj"; ak: "ae.ak"; al: "ae.al"; am: "ae.am"; an: "ae.an"; ao: "ae.ao"; ap: "ae.ap"; aq: "ae.aq"; ar: "ae.ar"; as: "ae.as"; at: "ae.at"; au: "ae.au"; av: "ae.av"; aw: "ae.aw"; ax: "ae.ax"; ay: "ae.ay"; az: "ae.az"; ba: "ae.ba"; bb: "ae.bb"; bc: "ae.bc"; bd: "ae.bd"; be: "ae.be"; bf: "ae.bf"; bg: "ae.bg"; bh: "ae.bh"; bi: "ae.bi"; bj: "ae.bj"; bk: "ae.bk"; bl: "ae.bl"; bm: "ae.bm"; bn: "ae.bn"; bo: "ae.bo"; bp: "ae.bp"; bq: "ae.bq"; br: "ae.br"; bs: "ae.bs"; bt: "ae.bt"; bu: "ae.bu"; bv: "ae.bv"; bw: "ae.bw"; bx: "ae.bx"; by: "ae.by"; bz: "ae.bz"; ca: "ae.ca"; cb: "ae.cb"; cc: "ae.cc"; cd: "ae.cd"; ce: "ae.ce"; cf: "ae.cf"; cg: "ae.cg"; ch: "ae.ch"; ci: "ae.ci"; cj: "ae.cj"; ck: "ae.ck"; cl: "ae.cl"; cm: "ae.cm"; cn: "ae.cn"; co: "ae.co"; cp: "ae.cp"; cq: "ae.cq"; cr: "ae.cr"; cs: "ae.cs"; ct: "ae.ct"; cu: "ae.cu"; cv: "ae.cv"; cw: "ae.cw"; cx: "ae.cx"; cy: "ae.cy"; cz: "ae.cz"; da: "ae.da"; db: "ae.db"; dc: "ae.dc"; dd: "ae.dd"; de: "ae.de"; df: "ae.df"; dg: "ae.dg"; dh: "ae.dh"; di: "ae.di"; dj: "ae.dj"; dk: "ae.dk"; dl: "ae.dl"; dm: "ae.dm"; dn: "ae.dn"; do: "ae.do"; dp: "ae.dp"; dq: "ae.dq"; dr: "ae.dr"; ds: "ae.ds"; dt: "ae.dt"; du: "ae.du"; dv: "ae.dv"; dw: "ae.dw"; dx: "ae.dx"; dy: "ae.dy"; dz: "ae.dz"; ea: "ae.ea"; eb: "ae.eb"; ec: "ae.ec"; ed: "ae.ed"; ee: "ae.ee"; ef: "ae.ef"; eg: "ae.eg"; eh: "ae.eh"; ei: "ae.ei"; ej: "ae.ej"; ek: "ae.ek"; el: "ae.el"; em: "ae.em"; en: "ae.en"; eo: "ae.eo"; ep: "ae.ep"; eq: "ae.eq"; er: "ae.er"; es: "ae.es"; et: "ae.et"; eu: "ae.eu"; ev: "ae.ev"; ew: "ae.ew"; ex: "ae.ex"; ey: "ae.ey"; ez: "ae.ez"; fa: "ae.fa"; fb: "ae.fb"; fc: "ae.fc"; fd: "ae.fd"; fe: "ae.fe"; ff: "ae.ff"; fg: "ae.fg"; fh: "ae.fh"; fi: "ae.fi"; fj: "ae.fj"; fk: "ae.fk"; fl: "ae.fl"; fm: "ae.fm"; fn: "ae.fn"; fo: "ae.fo"; fp: "ae.fp"; fq: "ae.fq"; fr: "ae.fr"; fs: "ae.fs"; ft: "ae.ft"; fu: "ae.fu"; fv: "ae.fv"; fw: "ae.fw"; fx: "ae.fx"; fy: "ae.fy"; fz: "ae.fz"; ga: "ae.ga"; gb: "ae.gb"; gc: "ae.gc"; gd: "ae.gd"; ge: "ae.ge"; gf: "ae.gf"; gg: "ae.gg"; gh: "ae.gh"; gi: "ae.gi"; gj: "ae.gj"; gk: "ae.gk"; gl: "ae.gl"; gm: "ae.gm"; gn: "ae.gn"; go: "ae.go"; gp: "ae.gp"; gq: "ae.gq"; gr: "ae.gr"; gs: "ae.gs"; gt: "ae.gt"; gu: "ae.gu"; gv: "ae.gv"; gw: "ae.gw"; gx: "ae.gx"; gy: "ae.gy"; gz: "ae.gz"; ha: "ae.ha"; hb: "ae.hb"; hc: "ae.hc"; hd: "ae.hd"; he: "ae.he"; hf: "ae.hf"; hg: "ae.hg"; hh: "ae.hh"; hi: "ae.hi"; hj: "ae.hj"; hk: "ae.hk"; hl: "ae.hl"; hm: "ae.hm"; hn: "ae.hn"; ho: "ae.ho"; hp: "ae.hp"; hq: "ae.hq"; hr: "ae.hr"; hs: "ae.hs"; ht: "ae.ht"; hu: "ae.hu"; hv: "ae.hv"; hw: "ae.hw"; hx: "ae.hx"; hy: "ae.hy"; hz: "ae.hz"; ia: "ae.ia"; ib: "ae.ib"; ic: "ae.ic"; id: "ae.id"; ie: "ae.ie"; if: "ae.if"; ig: "ae.ig"; ih: "ae.ih"; ii: "ae.ii"; ij: "ae.ij"; ik: "ae.ik"; il: "ae.il"; im: "ae.im"; in: "ae.in"; io: "ae.io"; ip: "ae.ip"; iq: "ae.iq"; ir: "ae.ir"; is: "ae.is"; it: "ae.it"; iu: "ae.iu"; iv: "ae.iv"; iw: "ae.iw"; ix: "ae.ix"; iy: "ae.iy"; iz: "ae.iz"; ja: "ae.ja"; jb: "ae.jb"; jc: "ae.jc"; jd: "ae.jd"; je: "ae.je"; jf: "ae.jf"; jg: "ae.jg"; jh: "ae.jh"; ji: "ae.ji"; jj: "ae.jj"; jk: "ae.jk"; jl: "ae.jl"; jm: "ae.jm"; jn: "ae.jn"; jo: "ae.jo"; jp: "ae.jp"; jq: "ae.jq"; jr: "ae.jr"; js: "ae.js"; jt: "ae.jt"; ju: "ae.ju"; jv: "ae.jv"; jw: "ae.jw"; jx: "ae.jx"; jy: "ae.jy"; jz: "ae.jz"; ka: "ae.ka"; kb: "ae.kb"; kc: "ae.kc"; kd: "ae.kd"; ke: "ae.ke"; kf: "ae.kf"; kg: "ae.kg"; kh: "ae.kh"; ki: "ae.ki"; kj: "ae.kj"; kk: "ae.kk"; kl: "ae.kl"; km: "ae.km"; kn: "ae.kn"; ko: "ae.ko"; kp: "ae.kp"; kq: "ae.kq"; kr: "ae.kr"; ks: "ae.ks"; kt: "ae.kt"; ku: "ae.ku"; kv: "ae.kv"; kw: "ae.kw"; kx: "ae.kx"; ky: "ae.ky"; kz: "ae.kz"; la: "ae.la"; lb: "ae.lb"; lc: "ae.lc"; ld: "ae.ld"; le: "ae.le"; lf: "ae.lf"; lg: "ae.lg"; lh: "ae.lh"; li: "ae.li"; lj: "ae.lj"; lk: "ae.lk"; ll: "ae.ll"; lm: "ae.lm"; ln: "ae.ln"; lo: "ae.lo"; lp: "ae.lp"; lq: "ae.lq"; lr: "ae.lr"; ls: "ae.ls"; lt: "ae.lt"; lu: "ae.lu"; lv: "ae.lv"; lw: "ae.lw"; lx: "ae.lx"; ly: "ae.ly"; lz: "ae.lz"; ma: "ae.ma"; mb: "ae.mb"; mc: "ae.mc"; md: "ae.md"; me: "ae.me"; mf: "ae.mf"; mg: "ae.mg"; mh: "ae.mh"; mi: "ae.mi"; mj: "ae.mj"; mk: "ae.mk"; ml: "ae.ml"; mm: "ae.mm"; mn: "ae.mn"; mo: "ae.mo"; mp: "ae.mp"; mq: "ae.mq"; mr: "ae.mr"; ms: "ae.ms"; mt: "ae.mt"; mu: "ae.mu"; mv: "ae.mv"; mw: "ae.mw"; mx: "ae.mx"; my: "ae.my"; mz: "ae.mz"; na: "ae.na"; nb: "ae.nb"; nc: "ae.nc"; nd: "ae.nd"; ne: "ae.ne"; nf: "ae.nf"; ng: "ae.ng"; nh: "ae.nh"; ni: "ae.ni"; nj: "ae.nj"; nk: "ae.nk"; nl: "ae.nl"; nm: "ae.nm"; nn: "ae.nn"; no: "ae.no"; np: "ae.np"; nq: "ae.nq"; nr: "ae.nr"; ns: "ae.ns"; nt: "ae.nt"; nu: "ae.nu"; nv: "ae.nv"; nw: "ae.nw"; nx: "ae.nx"; ny: "ae.ny"; nz: "ae.nz"; oa: "ae.oa"; ob: "ae.ob"; oc: "ae.oc"; od: "ae.od"; oe: "ae.oe"; of: "ae.of"; og: "ae.og"; oh: "ae.oh"; oi: "ae.oi"; oj: "ae.oj"; ok: "ae.ok"; ol: "ae.ol"; om: "ae.om"; on: "ae.on"; oo: "ae.oo"; op: "ae.op"; oq: "ae.oq"; or: "ae.or"; os: "ae.os"; ot: "ae.ot"; ou: "ae.ou"; ov: "ae.ov"; ow: "ae.ow"; ox: "ae.ox"; oy: "ae.oy"; oz: "ae.oz"; pa: "ae.pa"; pb: "ae.pb"; pc: "ae.pc"; pd: "ae.pd"; pe: "ae.pe"; pf: "ae.pf"; pg: "ae.pg"; ph: "ae.ph"; pi: "ae.pi"; pj: "ae.pj"; pk: "ae.pk"; pl: "ae.pl"; pm: "ae.pm"; pn: "ae.pn"; po: "ae.po"; pp: "ae.pp"; pq: "ae.pq"; pr: "ae.pr"; ps: "ae.ps"; pt: "ae.pt"; pu: "ae.pu"; pv: "ae.pv"; pw: "ae.pw"; px: "ae.px"; py: "ae.py"; pz: "ae.pz"; qa: "ae.qa"; qb: "ae.qb"; qc: "ae.qc"; qd: "ae.qd"; qe: "ae.qe"; qf: "ae.qf"; qg: "ae.qg"; qh: "ae.qh"; qi: "ae.qi"; qj: "ae.qj"; qk: "ae.qk"; ql: "ae.ql"; qm: "ae.qm"; qn: "ae.qn"; qo: "ae.qo"; qp: "ae.qp"; qq: "ae.qq"; qr: "ae.qr"; qs: "ae.qs"; qt: "ae.qt"; qu: "ae.qu"; qv: "ae.qv"; qw: "ae.qw"; qx: "ae.qx"; qy: "ae.qy"; qz: "ae.qz"; ra: "ae.ra"; rb: "ae.rb"; rc: "ae.rc"; rd: "ae.rd"; re: "ae.re"; rf: "ae.rf"; rg: "ae.rg"; rh: "ae.rh"; ri: "ae.ri"; rj: "ae.rj"; rk: "ae.rk"; rl: "ae.rl"; rm: "ae.rm"; rn: "ae.rn"; ro: "ae.ro"; rp: "ae.rp"; rq: "ae.rq"; rr: "ae.rr"; rs: "ae.rs"; rt: "ae.rt"; ru: "ae.ru"; rv: "ae.rv"; rw: "ae.rw"; rx: "ae.rx"; ry: "ae.ry"; rz: "ae.rz"; sa: "ae.sa"; sb: "ae.sb"; sc: "ae.sc"; sd: "ae.sd"; se: "ae.se"; sf: "ae.sf"; sg: "ae.sg"; sh: "ae.sh"; si: "ae.si"; sj: "ae.sj"; sk: "ae.sk"; sl: "ae.sl"; sm: "ae.sm"; sn: "ae.sn"; so: "ae.so"; sp: "ae.sp"; sq: "ae.sq"; sr: "ae.sr"; ss: "ae.ss"; st: "ae.st"; su: "ae.su"; sv: "ae.sv"; sw: "ae.sw"; sx: "ae.sx"; sy: "ae.sy"; sz: "ae.sz"; ta: "ae.ta"; tb: "ae.tb"; tc: "ae.tc"; td: "ae.td"; te: "ae.te"; tf: "ae.tf"; tg: "ae.tg"; th: "ae.th"; ti: "ae.ti"; tj: "ae.tj"; tk: "ae.tk"; tl: "ae.tl"; tm: "ae.tm"; tn: "ae.tn"; to: "ae.to"; tp: "ae.tp"; tq: "ae.tq"; tr: "ae.tr"; ts: "ae.ts"; tt: "ae.tt"; tu: "ae.tu"; tv: "ae.tv"; tw: "ae.tw"; tx: "ae.tx"; ty: "ae.ty"; tz: "ae.tz"; ua: "ae.ua"; ub: "ae.ub"; uc: "ae.uc"; ud: "ae.ud"; ue: "ae.ue"; uf: "ae.uf"; ug: "ae.ug"; uh: "ae.uh"; ui: "ae.ui"; uj: "ae.uj"; uk: "ae.uk"; ul: "ae.ul"; um: "ae.um"; un: "ae.un"; uo: "ae.uo"; up: "ae.up"; uq: "ae.uq"; ur: "ae.ur"; us: "ae.us"; ut: "ae.ut"; uu: "ae.uu"; uv: "ae.uv"; uw: "ae.uw"; ux: "ae.ux"; uy: "ae.uy"; uz: "ae.uz"; va: "ae.va"; vb: "ae.vb"; vc: "ae.vc"; vd: "ae.vd"; ve: "ae.ve"; vf: "ae.vf"; vg: "ae.vg"; vh: "ae.vh"; vi: "ae.vi"; vj: "ae.vj"; vk: "ae.vk"; vl: "ae.vl"; vm: "ae.vm"; vn: "ae.vn"; vo: "ae.vo"; vp: "ae.vp"; vq: "ae.vq"; vr: "ae.vr"; vs: "ae.vs"; vt: "ae.vt"; vu: "ae.vu"; vv: "ae.vv"; vw: "ae.vw"; vx: "ae.vx"; vy: "ae.vy"; vz: "ae.vz"; wa: "ae.wa"; wb: "ae.wb"; wc: "ae.wc"; wd: "ae.wd"; we: "ae.we"; wf: "ae.wf"; wg: "ae.wg"; wh: "ae.wh"; wi: "ae.wi"; wj: "ae.wj"; wk: "ae.wk"; wl: "ae.wl"; wm: "ae.wm"; wn: "ae.wn"; wo: "ae.wo"; wp: "ae.wp"; wq: "ae.wq"; wr: "ae.wr"; ws: "ae.ws"; wt: "ae.wt"; wu: "ae.wu"; wv: "ae.wv"; ww: "ae.ww"; wx: "ae.wx"; wy: "ae.wy"; wz: "ae.wz"; xa: "ae.xa"; xb: "ae.xb"; xc: "ae.xc"; xd: "ae.xd"; xe: "ae.xe"; xf: "ae.xf"; xg: "ae.xg"; xh: "ae.xh"; xi: "ae.xi"; xj: "ae.xj"; xk: "ae.xk"; xl: "ae.xl"; xm: "ae.xm"; xn: "ae.xn"; xo: "ae.xo"; xp: "ae.xp"; xq: "ae.xq"; xr: "ae.xr"; xs: "ae.xs"; xt: "ae.xt"; xu: "ae.xu"; xv: "ae.xv"; xw: "ae.xw"; xx: "ae.xx"; xy: "ae.xy"; xz: "ae.xz"; ya: "ae.ya"; yb: "ae.yb"; yc: "ae.yc"; yd: "ae.yd"; ye: "ae.ye"; yf: "ae.yf"; yg: "ae.yg"; yh: "ae.yh"; yi: "ae.yi"; yj: "ae.yj"; yk: "ae.yk"; yl: "ae.yl"; ym: "ae.ym"; yn: "ae.yn"; yo: "ae.yo"; yp: "ae.yp"; yq: "ae.yq"; yr: "ae.yr"; ys: "ae.ys"; yt: "ae.yt"; yu: "ae.yu"; yv: "ae.yv"; yw: "ae.yw"; yx: "ae.yx"; yy: "ae.yy"; yz: "ae.yz"; za: "ae.za"; zb: "ae.zb"; zc: "ae.zc"; zd: "ae.zd"; ze: "ae.ze"; zf: "ae.zf"; zg: "ae.zg"; zh: "ae.zh"; zi: "ae.zi"; zj: "ae.zj"; zk: "ae.zk"; zl: "ae.zl"; zm: "ae.zm"; zn: "ae.zn"; zo: "ae.zo"; zp: "ae.zp"; zq: "ae.zq"; zr: "ae.zr"; zs: "ae.zs"; zt: "ae.zt"; zu: "ae.zu"; zv: "ae.zv"; zw: "ae.zw"; zx: "ae.zx"; zy: "ae.zy"; zz: "ae.zz"; }; af: { aa: "af.aa"; ab: "af.ab"; ac: "af.ac"; ad: "af.ad"; ae: "af.ae"; af: "af.af"; ag: "af.ag"; ah: "af.ah"; ai: "af.ai"; aj: "af.aj"; ak: "af.ak"; al: "af.al"; am: "af.am"; an: "af.an"; ao: "af.ao"; ap: "af.ap"; aq: "af.aq"; ar: "af.ar"; as: "af.as"; at: "af.at"; au: "af.au"; av: "af.av"; aw: "af.aw"; ax: "af.ax"; ay: "af.ay"; az: "af.az"; ba: "af.ba"; bb: "af.bb"; bc: "af.bc"; bd: "af.bd"; be: "af.be"; bf: "af.bf"; bg: "af.bg"; bh: "af.bh"; bi: "af.bi"; bj: "af.bj"; bk: "af.bk"; bl: "af.bl"; bm: "af.bm"; bn: "af.bn"; bo: "af.bo"; bp: "af.bp"; bq: "af.bq"; br: "af.br"; bs: "af.bs"; bt: "af.bt"; bu: "af.bu"; bv: "af.bv"; bw: "af.bw"; bx: "af.bx"; by: "af.by"; bz: "af.bz"; ca: "af.ca"; cb: "af.cb"; cc: "af.cc"; cd: "af.cd"; ce: "af.ce"; cf: "af.cf"; cg: "af.cg"; ch: "af.ch"; ci: "af.ci"; cj: "af.cj"; ck: "af.ck"; cl: "af.cl"; cm: "af.cm"; cn: "af.cn"; co: "af.co"; cp: "af.cp"; cq: "af.cq"; cr: "af.cr"; cs: "af.cs"; ct: "af.ct"; cu: "af.cu"; cv: "af.cv"; cw: "af.cw"; cx: "af.cx"; cy: "af.cy"; cz: "af.cz"; da: "af.da"; db: "af.db"; dc: "af.dc"; dd: "af.dd"; de: "af.de"; df: "af.df"; dg: "af.dg"; dh: "af.dh"; di: "af.di"; dj: "af.dj"; dk: "af.dk"; dl: "af.dl"; dm: "af.dm"; dn: "af.dn"; do: "af.do"; dp: "af.dp"; dq: "af.dq"; dr: "af.dr"; ds: "af.ds"; dt: "af.dt"; du: "af.du"; dv: "af.dv"; dw: "af.dw"; dx: "af.dx"; dy: "af.dy"; dz: "af.dz"; ea: "af.ea"; eb: "af.eb"; ec: "af.ec"; ed: "af.ed"; ee: "af.ee"; ef: "af.ef"; eg: "af.eg"; eh: "af.eh"; ei: "af.ei"; ej: "af.ej"; ek: "af.ek"; el: "af.el"; em: "af.em"; en: "af.en"; eo: "af.eo"; ep: "af.ep"; eq: "af.eq"; er: "af.er"; es: "af.es"; et: "af.et"; eu: "af.eu"; ev: "af.ev"; ew: "af.ew"; ex: "af.ex"; ey: "af.ey"; ez: "af.ez"; fa: "af.fa"; fb: "af.fb"; fc: "af.fc"; fd: "af.fd"; fe: "af.fe"; ff: "af.ff"; fg: "af.fg"; fh: "af.fh"; fi: "af.fi"; fj: "af.fj"; fk: "af.fk"; fl: "af.fl"; fm: "af.fm"; fn: "af.fn"; fo: "af.fo"; fp: "af.fp"; fq: "af.fq"; fr: "af.fr"; fs: "af.fs"; ft: "af.ft"; fu: "af.fu"; fv: "af.fv"; fw: "af.fw"; fx: "af.fx"; fy: "af.fy"; fz: "af.fz"; ga: "af.ga"; gb: "af.gb"; gc: "af.gc"; gd: "af.gd"; ge: "af.ge"; gf: "af.gf"; gg: "af.gg"; gh: "af.gh"; gi: "af.gi"; gj: "af.gj"; gk: "af.gk"; gl: "af.gl"; gm: "af.gm"; gn: "af.gn"; go: "af.go"; gp: "af.gp"; gq: "af.gq"; gr: "af.gr"; gs: "af.gs"; gt: "af.gt"; gu: "af.gu"; gv: "af.gv"; gw: "af.gw"; gx: "af.gx"; gy: "af.gy"; gz: "af.gz"; ha: "af.ha"; hb: "af.hb"; hc: "af.hc"; hd: "af.hd"; he: "af.he"; hf: "af.hf"; hg: "af.hg"; hh: "af.hh"; hi: "af.hi"; hj: "af.hj"; hk: "af.hk"; hl: "af.hl"; hm: "af.hm"; hn: "af.hn"; ho: "af.ho"; hp: "af.hp"; hq: "af.hq"; hr: "af.hr"; hs: "af.hs"; ht: "af.ht"; hu: "af.hu"; hv: "af.hv"; hw: "af.hw"; hx: "af.hx"; hy: "af.hy"; hz: "af.hz"; ia: "af.ia"; ib: "af.ib"; ic: "af.ic"; id: "af.id"; ie: "af.ie"; if: "af.if"; ig: "af.ig"; ih: "af.ih"; ii: "af.ii"; ij: "af.ij"; ik: "af.ik"; il: "af.il"; im: "af.im"; in: "af.in"; io: "af.io"; ip: "af.ip"; iq: "af.iq"; ir: "af.ir"; is: "af.is"; it: "af.it"; iu: "af.iu"; iv: "af.iv"; iw: "af.iw"; ix: "af.ix"; iy: "af.iy"; iz: "af.iz"; ja: "af.ja"; jb: "af.jb"; jc: "af.jc"; jd: "af.jd"; je: "af.je"; jf: "af.jf"; jg: "af.jg"; jh: "af.jh"; ji: "af.ji"; jj: "af.jj"; jk: "af.jk"; jl: "af.jl"; jm: "af.jm"; jn: "af.jn"; jo: "af.jo"; jp: "af.jp"; jq: "af.jq"; jr: "af.jr"; js: "af.js"; jt: "af.jt"; ju: "af.ju"; jv: "af.jv"; jw: "af.jw"; jx: "af.jx"; jy: "af.jy"; jz: "af.jz"; ka: "af.ka"; kb: "af.kb"; kc: "af.kc"; kd: "af.kd"; ke: "af.ke"; kf: "af.kf"; kg: "af.kg"; kh: "af.kh"; ki: "af.ki"; kj: "af.kj"; kk: "af.kk"; kl: "af.kl"; km: "af.km"; kn: "af.kn"; ko: "af.ko"; kp: "af.kp"; kq: "af.kq"; kr: "af.kr"; ks: "af.ks"; kt: "af.kt"; ku: "af.ku"; kv: "af.kv"; kw: "af.kw"; kx: "af.kx"; ky: "af.ky"; kz: "af.kz"; la: "af.la"; lb: "af.lb"; lc: "af.lc"; ld: "af.ld"; le: "af.le"; lf: "af.lf"; lg: "af.lg"; lh: "af.lh"; li: "af.li"; lj: "af.lj"; lk: "af.lk"; ll: "af.ll"; lm: "af.lm"; ln: "af.ln"; lo: "af.lo"; lp: "af.lp"; lq: "af.lq"; lr: "af.lr"; ls: "af.ls"; lt: "af.lt"; lu: "af.lu"; lv: "af.lv"; lw: "af.lw"; lx: "af.lx"; ly: "af.ly"; lz: "af.lz"; ma: "af.ma"; mb: "af.mb"; mc: "af.mc"; md: "af.md"; me: "af.me"; mf: "af.mf"; mg: "af.mg"; mh: "af.mh"; mi: "af.mi"; mj: "af.mj"; mk: "af.mk"; ml: "af.ml"; mm: "af.mm"; mn: "af.mn"; mo: "af.mo"; mp: "af.mp"; mq: "af.mq"; mr: "af.mr"; ms: "af.ms"; mt: "af.mt"; mu: "af.mu"; mv: "af.mv"; mw: "af.mw"; mx: "af.mx"; my: "af.my"; mz: "af.mz"; na: "af.na"; nb: "af.nb"; nc: "af.nc"; nd: "af.nd"; ne: "af.ne"; nf: "af.nf"; ng: "af.ng"; nh: "af.nh"; ni: "af.ni"; nj: "af.nj"; nk: "af.nk"; nl: "af.nl"; nm: "af.nm"; nn: "af.nn"; no: "af.no"; np: "af.np"; nq: "af.nq"; nr: "af.nr"; ns: "af.ns"; nt: "af.nt"; nu: "af.nu"; nv: "af.nv"; nw: "af.nw"; nx: "af.nx"; ny: "af.ny"; nz: "af.nz"; oa: "af.oa"; ob: "af.ob"; oc: "af.oc"; od: "af.od"; oe: "af.oe"; of: "af.of"; og: "af.og"; oh: "af.oh"; oi: "af.oi"; oj: "af.oj"; ok: "af.ok"; ol: "af.ol"; om: "af.om"; on: "af.on"; oo: "af.oo"; op: "af.op"; oq: "af.oq"; or: "af.or"; os: "af.os"; ot: "af.ot"; ou: "af.ou"; ov: "af.ov"; ow: "af.ow"; ox: "af.ox"; oy: "af.oy"; oz: "af.oz"; pa: "af.pa"; pb: "af.pb"; pc: "af.pc"; pd: "af.pd"; pe: "af.pe"; pf: "af.pf"; pg: "af.pg"; ph: "af.ph"; pi: "af.pi"; pj: "af.pj"; pk: "af.pk"; pl: "af.pl"; pm: "af.pm"; pn: "af.pn"; po: "af.po"; pp: "af.pp"; pq: "af.pq"; pr: "af.pr"; ps: "af.ps"; pt: "af.pt"; pu: "af.pu"; pv: "af.pv"; pw: "af.pw"; px: "af.px"; py: "af.py"; pz: "af.pz"; qa: "af.qa"; qb: "af.qb"; qc: "af.qc"; qd: "af.qd"; qe: "af.qe"; qf: "af.qf"; qg: "af.qg"; qh: "af.qh"; qi: "af.qi"; qj: "af.qj"; qk: "af.qk"; ql: "af.ql"; qm: "af.qm"; qn: "af.qn"; qo: "af.qo"; qp: "af.qp"; qq: "af.qq"; qr: "af.qr"; qs: "af.qs"; qt: "af.qt"; qu: "af.qu"; qv: "af.qv"; qw: "af.qw"; qx: "af.qx"; qy: "af.qy"; qz: "af.qz"; ra: "af.ra"; rb: "af.rb"; rc: "af.rc"; rd: "af.rd"; re: "af.re"; rf: "af.rf"; rg: "af.rg"; rh: "af.rh"; ri: "af.ri"; rj: "af.rj"; rk: "af.rk"; rl: "af.rl"; rm: "af.rm"; rn: "af.rn"; ro: "af.ro"; rp: "af.rp"; rq: "af.rq"; rr: "af.rr"; rs: "af.rs"; rt: "af.rt"; ru: "af.ru"; rv: "af.rv"; rw: "af.rw"; rx: "af.rx"; ry: "af.ry"; rz: "af.rz"; sa: "af.sa"; sb: "af.sb"; sc: "af.sc"; sd: "af.sd"; se: "af.se"; sf: "af.sf"; sg: "af.sg"; sh: "af.sh"; si: "af.si"; sj: "af.sj"; sk: "af.sk"; sl: "af.sl"; sm: "af.sm"; sn: "af.sn"; so: "af.so"; sp: "af.sp"; sq: "af.sq"; sr: "af.sr"; ss: "af.ss"; st: "af.st"; su: "af.su"; sv: "af.sv"; sw: "af.sw"; sx: "af.sx"; sy: "af.sy"; sz: "af.sz"; ta: "af.ta"; tb: "af.tb"; tc: "af.tc"; td: "af.td"; te: "af.te"; tf: "af.tf"; tg: "af.tg"; th: "af.th"; ti: "af.ti"; tj: "af.tj"; tk: "af.tk"; tl: "af.tl"; tm: "af.tm"; tn: "af.tn"; to: "af.to"; tp: "af.tp"; tq: "af.tq"; tr: "af.tr"; ts: "af.ts"; tt: "af.tt"; tu: "af.tu"; tv: "af.tv"; tw: "af.tw"; tx: "af.tx"; ty: "af.ty"; tz: "af.tz"; ua: "af.ua"; ub: "af.ub"; uc: "af.uc"; ud: "af.ud"; ue: "af.ue"; uf: "af.uf"; ug: "af.ug"; uh: "af.uh"; ui: "af.ui"; uj: "af.uj"; uk: "af.uk"; ul: "af.ul"; um: "af.um"; un: "af.un"; uo: "af.uo"; up: "af.up"; uq: "af.uq"; ur: "af.ur"; us: "af.us"; ut: "af.ut"; uu: "af.uu"; uv: "af.uv"; uw: "af.uw"; ux: "af.ux"; uy: "af.uy"; uz: "af.uz"; va: "af.va"; vb: "af.vb"; vc: "af.vc"; vd: "af.vd"; ve: "af.ve"; vf: "af.vf"; vg: "af.vg"; vh: "af.vh"; vi: "af.vi"; vj: "af.vj"; vk: "af.vk"; vl: "af.vl"; vm: "af.vm"; vn: "af.vn"; vo: "af.vo"; vp: "af.vp"; vq: "af.vq"; vr: "af.vr"; vs: "af.vs"; vt: "af.vt"; vu: "af.vu"; vv: "af.vv"; vw: "af.vw"; vx: "af.vx"; vy: "af.vy"; vz: "af.vz"; wa: "af.wa"; wb: "af.wb"; wc: "af.wc"; wd: "af.wd"; we: "af.we"; wf: "af.wf"; wg: "af.wg"; wh: "af.wh"; wi: "af.wi"; wj: "af.wj"; wk: "af.wk"; wl: "af.wl"; wm: "af.wm"; wn: "af.wn"; wo: "af.wo"; wp: "af.wp"; wq: "af.wq"; wr: "af.wr"; ws: "af.ws"; wt: "af.wt"; wu: "af.wu"; wv: "af.wv"; ww: "af.ww"; wx: "af.wx"; wy: "af.wy"; wz: "af.wz"; xa: "af.xa"; xb: "af.xb"; xc: "af.xc"; xd: "af.xd"; xe: "af.xe"; xf: "af.xf"; xg: "af.xg"; xh: "af.xh"; xi: "af.xi"; xj: "af.xj"; xk: "af.xk"; xl: "af.xl"; xm: "af.xm"; xn: "af.xn"; xo: "af.xo"; xp: "af.xp"; xq: "af.xq"; xr: "af.xr"; xs: "af.xs"; xt: "af.xt"; xu: "af.xu"; xv: "af.xv"; xw: "af.xw"; xx: "af.xx"; xy: "af.xy"; xz: "af.xz"; ya: "af.ya"; yb: "af.yb"; yc: "af.yc"; yd: "af.yd"; ye: "af.ye"; yf: "af.yf"; yg: "af.yg"; yh: "af.yh"; yi: "af.yi"; yj: "af.yj"; yk: "af.yk"; yl: "af.yl"; ym: "af.ym"; yn: "af.yn"; yo: "af.yo"; yp: "af.yp"; yq: "af.yq"; yr: "af.yr"; ys: "af.ys"; yt: "af.yt"; yu: "af.yu"; yv: "af.yv"; yw: "af.yw"; yx: "af.yx"; yy: "af.yy"; yz: "af.yz"; za: "af.za"; zb: "af.zb"; zc: "af.zc"; zd: "af.zd"; ze: "af.ze"; zf: "af.zf"; zg: "af.zg"; zh: "af.zh"; zi: "af.zi"; zj: "af.zj"; zk: "af.zk"; zl: "af.zl"; zm: "af.zm"; zn: "af.zn"; zo: "af.zo"; zp: "af.zp"; zq: "af.zq"; zr: "af.zr"; zs: "af.zs"; zt: "af.zt"; zu: "af.zu"; zv: "af.zv"; zw: "af.zw"; zx: "af.zx"; zy: "af.zy"; zz: "af.zz"; }; ag: { aa: "ag.aa"; ab: "ag.ab"; ac: "ag.ac"; ad: "ag.ad"; ae: "ag.ae"; af: "ag.af"; ag: "ag.ag"; ah: "ag.ah"; ai: "ag.ai"; aj: "ag.aj"; ak: "ag.ak"; al: "ag.al"; am: "ag.am"; an: "ag.an"; ao: "ag.ao"; ap: "ag.ap"; aq: "ag.aq"; ar: "ag.ar"; as: "ag.as"; at: "ag.at"; au: "ag.au"; av: "ag.av"; aw: "ag.aw"; ax: "ag.ax"; ay: "ag.ay"; az: "ag.az"; ba: "ag.ba"; bb: "ag.bb"; bc: "ag.bc"; bd: "ag.bd"; be: "ag.be"; bf: "ag.bf"; bg: "ag.bg"; bh: "ag.bh"; bi: "ag.bi"; bj: "ag.bj"; bk: "ag.bk"; bl: "ag.bl"; bm: "ag.bm"; bn: "ag.bn"; bo: "ag.bo"; bp: "ag.bp"; bq: "ag.bq"; br: "ag.br"; bs: "ag.bs"; bt: "ag.bt"; bu: "ag.bu"; bv: "ag.bv"; bw: "ag.bw"; bx: "ag.bx"; by: "ag.by"; bz: "ag.bz"; ca: "ag.ca"; cb: "ag.cb"; cc: "ag.cc"; cd: "ag.cd"; ce: "ag.ce"; cf: "ag.cf"; cg: "ag.cg"; ch: "ag.ch"; ci: "ag.ci"; cj: "ag.cj"; ck: "ag.ck"; cl: "ag.cl"; cm: "ag.cm"; cn: "ag.cn"; co: "ag.co"; cp: "ag.cp"; cq: "ag.cq"; cr: "ag.cr"; cs: "ag.cs"; ct: "ag.ct"; cu: "ag.cu"; cv: "ag.cv"; cw: "ag.cw"; cx: "ag.cx"; cy: "ag.cy"; cz: "ag.cz"; da: "ag.da"; db: "ag.db"; dc: "ag.dc"; dd: "ag.dd"; de: "ag.de"; df: "ag.df"; dg: "ag.dg"; dh: "ag.dh"; di: "ag.di"; dj: "ag.dj"; dk: "ag.dk"; dl: "ag.dl"; dm: "ag.dm"; dn: "ag.dn"; do: "ag.do"; dp: "ag.dp"; dq: "ag.dq"; dr: "ag.dr"; ds: "ag.ds"; dt: "ag.dt"; du: "ag.du"; dv: "ag.dv"; dw: "ag.dw"; dx: "ag.dx"; dy: "ag.dy"; dz: "ag.dz"; ea: "ag.ea"; eb: "ag.eb"; ec: "ag.ec"; ed: "ag.ed"; ee: "ag.ee"; ef: "ag.ef"; eg: "ag.eg"; eh: "ag.eh"; ei: "ag.ei"; ej: "ag.ej"; ek: "ag.ek"; el: "ag.el"; em: "ag.em"; en: "ag.en"; eo: "ag.eo"; ep: "ag.ep"; eq: "ag.eq"; er: "ag.er"; es: "ag.es"; et: "ag.et"; eu: "ag.eu"; ev: "ag.ev"; ew: "ag.ew"; ex: "ag.ex"; ey: "ag.ey"; ez: "ag.ez"; fa: "ag.fa"; fb: "ag.fb"; fc: "ag.fc"; fd: "ag.fd"; fe: "ag.fe"; ff: "ag.ff"; fg: "ag.fg"; fh: "ag.fh"; fi: "ag.fi"; fj: "ag.fj"; fk: "ag.fk"; fl: "ag.fl"; fm: "ag.fm"; fn: "ag.fn"; fo: "ag.fo"; fp: "ag.fp"; fq: "ag.fq"; fr: "ag.fr"; fs: "ag.fs"; ft: "ag.ft"; fu: "ag.fu"; fv: "ag.fv"; fw: "ag.fw"; fx: "ag.fx"; fy: "ag.fy"; fz: "ag.fz"; ga: "ag.ga"; gb: "ag.gb"; gc: "ag.gc"; gd: "ag.gd"; ge: "ag.ge"; gf: "ag.gf"; gg: "ag.gg"; gh: "ag.gh"; gi: "ag.gi"; gj: "ag.gj"; gk: "ag.gk"; gl: "ag.gl"; gm: "ag.gm"; gn: "ag.gn"; go: "ag.go"; gp: "ag.gp"; gq: "ag.gq"; gr: "ag.gr"; gs: "ag.gs"; gt: "ag.gt"; gu: "ag.gu"; gv: "ag.gv"; gw: "ag.gw"; gx: "ag.gx"; gy: "ag.gy"; gz: "ag.gz"; ha: "ag.ha"; hb: "ag.hb"; hc: "ag.hc"; hd: "ag.hd"; he: "ag.he"; hf: "ag.hf"; hg: "ag.hg"; hh: "ag.hh"; hi: "ag.hi"; hj: "ag.hj"; hk: "ag.hk"; hl: "ag.hl"; hm: "ag.hm"; hn: "ag.hn"; ho: "ag.ho"; hp: "ag.hp"; hq: "ag.hq"; hr: "ag.hr"; hs: "ag.hs"; ht: "ag.ht"; hu: "ag.hu"; hv: "ag.hv"; hw: "ag.hw"; hx: "ag.hx"; hy: "ag.hy"; hz: "ag.hz"; ia: "ag.ia"; ib: "ag.ib"; ic: "ag.ic"; id: "ag.id"; ie: "ag.ie"; if: "ag.if"; ig: "ag.ig"; ih: "ag.ih"; ii: "ag.ii"; ij: "ag.ij"; ik: "ag.ik"; il: "ag.il"; im: "ag.im"; in: "ag.in"; io: "ag.io"; ip: "ag.ip"; iq: "ag.iq"; ir: "ag.ir"; is: "ag.is"; it: "ag.it"; iu: "ag.iu"; iv: "ag.iv"; iw: "ag.iw"; ix: "ag.ix"; iy: "ag.iy"; iz: "ag.iz"; ja: "ag.ja"; jb: "ag.jb"; jc: "ag.jc"; jd: "ag.jd"; je: "ag.je"; jf: "ag.jf"; jg: "ag.jg"; jh: "ag.jh"; ji: "ag.ji"; jj: "ag.jj"; jk: "ag.jk"; jl: "ag.jl"; jm: "ag.jm"; jn: "ag.jn"; jo: "ag.jo"; jp: "ag.jp"; jq: "ag.jq"; jr: "ag.jr"; js: "ag.js"; jt: "ag.jt"; ju: "ag.ju"; jv: "ag.jv"; jw: "ag.jw"; jx: "ag.jx"; jy: "ag.jy"; jz: "ag.jz"; ka: "ag.ka"; kb: "ag.kb"; kc: "ag.kc"; kd: "ag.kd"; ke: "ag.ke"; kf: "ag.kf"; kg: "ag.kg"; kh: "ag.kh"; ki: "ag.ki"; kj: "ag.kj"; kk: "ag.kk"; kl: "ag.kl"; km: "ag.km"; kn: "ag.kn"; ko: "ag.ko"; kp: "ag.kp"; kq: "ag.kq"; kr: "ag.kr"; ks: "ag.ks"; kt: "ag.kt"; ku: "ag.ku"; kv: "ag.kv"; kw: "ag.kw"; kx: "ag.kx"; ky: "ag.ky"; kz: "ag.kz"; la: "ag.la"; lb: "ag.lb"; lc: "ag.lc"; ld: "ag.ld"; le: "ag.le"; lf: "ag.lf"; lg: "ag.lg"; lh: "ag.lh"; li: "ag.li"; lj: "ag.lj"; lk: "ag.lk"; ll: "ag.ll"; lm: "ag.lm"; ln: "ag.ln"; lo: "ag.lo"; lp: "ag.lp"; lq: "ag.lq"; lr: "ag.lr"; ls: "ag.ls"; lt: "ag.lt"; lu: "ag.lu"; lv: "ag.lv"; lw: "ag.lw"; lx: "ag.lx"; ly: "ag.ly"; lz: "ag.lz"; ma: "ag.ma"; mb: "ag.mb"; mc: "ag.mc"; md: "ag.md"; me: "ag.me"; mf: "ag.mf"; mg: "ag.mg"; mh: "ag.mh"; mi: "ag.mi"; mj: "ag.mj"; mk: "ag.mk"; ml: "ag.ml"; mm: "ag.mm"; mn: "ag.mn"; mo: "ag.mo"; mp: "ag.mp"; mq: "ag.mq"; mr: "ag.mr"; ms: "ag.ms"; mt: "ag.mt"; mu: "ag.mu"; mv: "ag.mv"; mw: "ag.mw"; mx: "ag.mx"; my: "ag.my"; mz: "ag.mz"; na: "ag.na"; nb: "ag.nb"; nc: "ag.nc"; nd: "ag.nd"; ne: "ag.ne"; nf: "ag.nf"; ng: "ag.ng"; nh: "ag.nh"; ni: "ag.ni"; nj: "ag.nj"; nk: "ag.nk"; nl: "ag.nl"; nm: "ag.nm"; nn: "ag.nn"; no: "ag.no"; np: "ag.np"; nq: "ag.nq"; nr: "ag.nr"; ns: "ag.ns"; nt: "ag.nt"; nu: "ag.nu"; nv: "ag.nv"; nw: "ag.nw"; nx: "ag.nx"; ny: "ag.ny"; nz: "ag.nz"; oa: "ag.oa"; ob: "ag.ob"; oc: "ag.oc"; od: "ag.od"; oe: "ag.oe"; of: "ag.of"; og: "ag.og"; oh: "ag.oh"; oi: "ag.oi"; oj: "ag.oj"; ok: "ag.ok"; ol: "ag.ol"; om: "ag.om"; on: "ag.on"; oo: "ag.oo"; op: "ag.op"; oq: "ag.oq"; or: "ag.or"; os: "ag.os"; ot: "ag.ot"; ou: "ag.ou"; ov: "ag.ov"; ow: "ag.ow"; ox: "ag.ox"; oy: "ag.oy"; oz: "ag.oz"; pa: "ag.pa"; pb: "ag.pb"; pc: "ag.pc"; pd: "ag.pd"; pe: "ag.pe"; pf: "ag.pf"; pg: "ag.pg"; ph: "ag.ph"; pi: "ag.pi"; pj: "ag.pj"; pk: "ag.pk"; pl: "ag.pl"; pm: "ag.pm"; pn: "ag.pn"; po: "ag.po"; pp: "ag.pp"; pq: "ag.pq"; pr: "ag.pr"; ps: "ag.ps"; pt: "ag.pt"; pu: "ag.pu"; pv: "ag.pv"; pw: "ag.pw"; px: "ag.px"; py: "ag.py"; pz: "ag.pz"; qa: "ag.qa"; qb: "ag.qb"; qc: "ag.qc"; qd: "ag.qd"; qe: "ag.qe"; qf: "ag.qf"; qg: "ag.qg"; qh: "ag.qh"; qi: "ag.qi"; qj: "ag.qj"; qk: "ag.qk"; ql: "ag.ql"; qm: "ag.qm"; qn: "ag.qn"; qo: "ag.qo"; qp: "ag.qp"; qq: "ag.qq"; qr: "ag.qr"; qs: "ag.qs"; qt: "ag.qt"; qu: "ag.qu"; qv: "ag.qv"; qw: "ag.qw"; qx: "ag.qx"; qy: "ag.qy"; qz: "ag.qz"; ra: "ag.ra"; rb: "ag.rb"; rc: "ag.rc"; rd: "ag.rd"; re: "ag.re"; rf: "ag.rf"; rg: "ag.rg"; rh: "ag.rh"; ri: "ag.ri"; rj: "ag.rj"; rk: "ag.rk"; rl: "ag.rl"; rm: "ag.rm"; rn: "ag.rn"; ro: "ag.ro"; rp: "ag.rp"; rq: "ag.rq"; rr: "ag.rr"; rs: "ag.rs"; rt: "ag.rt"; ru: "ag.ru"; rv: "ag.rv"; rw: "ag.rw"; rx: "ag.rx"; ry: "ag.ry"; rz: "ag.rz"; sa: "ag.sa"; sb: "ag.sb"; sc: "ag.sc"; sd: "ag.sd"; se: "ag.se"; sf: "ag.sf"; sg: "ag.sg"; sh: "ag.sh"; si: "ag.si"; sj: "ag.sj"; sk: "ag.sk"; sl: "ag.sl"; sm: "ag.sm"; sn: "ag.sn"; so: "ag.so"; sp: "ag.sp"; sq: "ag.sq"; sr: "ag.sr"; ss: "ag.ss"; st: "ag.st"; su: "ag.su"; sv: "ag.sv"; sw: "ag.sw"; sx: "ag.sx"; sy: "ag.sy"; sz: "ag.sz"; ta: "ag.ta"; tb: "ag.tb"; tc: "ag.tc"; td: "ag.td"; te: "ag.te"; tf: "ag.tf"; tg: "ag.tg"; th: "ag.th"; ti: "ag.ti"; tj: "ag.tj"; tk: "ag.tk"; tl: "ag.tl"; tm: "ag.tm"; tn: "ag.tn"; to: "ag.to"; tp: "ag.tp"; tq: "ag.tq"; tr: "ag.tr"; ts: "ag.ts"; tt: "ag.tt"; tu: "ag.tu"; tv: "ag.tv"; tw: "ag.tw"; tx: "ag.tx"; ty: "ag.ty"; tz: "ag.tz"; ua: "ag.ua"; ub: "ag.ub"; uc: "ag.uc"; ud: "ag.ud"; ue: "ag.ue"; uf: "ag.uf"; ug: "ag.ug"; uh: "ag.uh"; ui: "ag.ui"; uj: "ag.uj"; uk: "ag.uk"; ul: "ag.ul"; um: "ag.um"; un: "ag.un"; uo: "ag.uo"; up: "ag.up"; uq: "ag.uq"; ur: "ag.ur"; us: "ag.us"; ut: "ag.ut"; uu: "ag.uu"; uv: "ag.uv"; uw: "ag.uw"; ux: "ag.ux"; uy: "ag.uy"; uz: "ag.uz"; va: "ag.va"; vb: "ag.vb"; vc: "ag.vc"; vd: "ag.vd"; ve: "ag.ve"; vf: "ag.vf"; vg: "ag.vg"; vh: "ag.vh"; vi: "ag.vi"; vj: "ag.vj"; vk: "ag.vk"; vl: "ag.vl"; vm: "ag.vm"; vn: "ag.vn"; vo: "ag.vo"; vp: "ag.vp"; vq: "ag.vq"; vr: "ag.vr"; vs: "ag.vs"; vt: "ag.vt"; vu: "ag.vu"; vv: "ag.vv"; vw: "ag.vw"; vx: "ag.vx"; vy: "ag.vy"; vz: "ag.vz"; wa: "ag.wa"; wb: "ag.wb"; wc: "ag.wc"; wd: "ag.wd"; we: "ag.we"; wf: "ag.wf"; wg: "ag.wg"; wh: "ag.wh"; wi: "ag.wi"; wj: "ag.wj"; wk: "ag.wk"; wl: "ag.wl"; wm: "ag.wm"; wn: "ag.wn"; wo: "ag.wo"; wp: "ag.wp"; wq: "ag.wq"; wr: "ag.wr"; ws: "ag.ws"; wt: "ag.wt"; wu: "ag.wu"; wv: "ag.wv"; ww: "ag.ww"; wx: "ag.wx"; wy: "ag.wy"; wz: "ag.wz"; xa: "ag.xa"; xb: "ag.xb"; xc: "ag.xc"; xd: "ag.xd"; xe: "ag.xe"; xf: "ag.xf"; xg: "ag.xg"; xh: "ag.xh"; xi: "ag.xi"; xj: "ag.xj"; xk: "ag.xk"; xl: "ag.xl"; xm: "ag.xm"; xn: "ag.xn"; xo: "ag.xo"; xp: "ag.xp"; xq: "ag.xq"; xr: "ag.xr"; xs: "ag.xs"; xt: "ag.xt"; xu: "ag.xu"; xv: "ag.xv"; xw: "ag.xw"; xx: "ag.xx"; xy: "ag.xy"; xz: "ag.xz"; ya: "ag.ya"; yb: "ag.yb"; yc: "ag.yc"; yd: "ag.yd"; ye: "ag.ye"; yf: "ag.yf"; yg: "ag.yg"; yh: "ag.yh"; yi: "ag.yi"; yj: "ag.yj"; yk: "ag.yk"; yl: "ag.yl"; ym: "ag.ym"; yn: "ag.yn"; yo: "ag.yo"; yp: "ag.yp"; yq: "ag.yq"; yr: "ag.yr"; ys: "ag.ys"; yt: "ag.yt"; yu: "ag.yu"; yv: "ag.yv"; yw: "ag.yw"; yx: "ag.yx"; yy: "ag.yy"; yz: "ag.yz"; za: "ag.za"; zb: "ag.zb"; zc: "ag.zc"; zd: "ag.zd"; ze: "ag.ze"; zf: "ag.zf"; zg: "ag.zg"; zh: "ag.zh"; zi: "ag.zi"; zj: "ag.zj"; zk: "ag.zk"; zl: "ag.zl"; zm: "ag.zm"; zn: "ag.zn"; zo: "ag.zo"; zp: "ag.zp"; zq: "ag.zq"; zr: "ag.zr"; zs: "ag.zs"; zt: "ag.zt"; zu: "ag.zu"; zv: "ag.zv"; zw: "ag.zw"; zx: "ag.zx"; zy: "ag.zy"; zz: "ag.zz"; }; ah: { aa: "ah.aa"; ab: "ah.ab"; ac: "ah.ac"; ad: "ah.ad"; ae: "ah.ae"; af: "ah.af"; ag: "ah.ag"; ah: "ah.ah"; ai: "ah.ai"; aj: "ah.aj"; ak: "ah.ak"; al: "ah.al"; am: "ah.am"; an: "ah.an"; ao: "ah.ao"; ap: "ah.ap"; aq: "ah.aq"; ar: "ah.ar"; as: "ah.as"; at: "ah.at"; au: "ah.au"; av: "ah.av"; aw: "ah.aw"; ax: "ah.ax"; ay: "ah.ay"; az: "ah.az"; ba: "ah.ba"; bb: "ah.bb"; bc: "ah.bc"; bd: "ah.bd"; be: "ah.be"; bf: "ah.bf"; bg: "ah.bg"; bh: "ah.bh"; bi: "ah.bi"; bj: "ah.bj"; bk: "ah.bk"; bl: "ah.bl"; bm: "ah.bm"; bn: "ah.bn"; bo: "ah.bo"; bp: "ah.bp"; bq: "ah.bq"; br: "ah.br"; bs: "ah.bs"; bt: "ah.bt"; bu: "ah.bu"; bv: "ah.bv"; bw: "ah.bw"; bx: "ah.bx"; by: "ah.by"; bz: "ah.bz"; ca: "ah.ca"; cb: "ah.cb"; cc: "ah.cc"; cd: "ah.cd"; ce: "ah.ce"; cf: "ah.cf"; cg: "ah.cg"; ch: "ah.ch"; ci: "ah.ci"; cj: "ah.cj"; ck: "ah.ck"; cl: "ah.cl"; cm: "ah.cm"; cn: "ah.cn"; co: "ah.co"; cp: "ah.cp"; cq: "ah.cq"; cr: "ah.cr"; cs: "ah.cs"; ct: "ah.ct"; cu: "ah.cu"; cv: "ah.cv"; cw: "ah.cw"; cx: "ah.cx"; cy: "ah.cy"; cz: "ah.cz"; da: "ah.da"; db: "ah.db"; dc: "ah.dc"; dd: "ah.dd"; de: "ah.de"; df: "ah.df"; dg: "ah.dg"; dh: "ah.dh"; di: "ah.di"; dj: "ah.dj"; dk: "ah.dk"; dl: "ah.dl"; dm: "ah.dm"; dn: "ah.dn"; do: "ah.do"; dp: "ah.dp"; dq: "ah.dq"; dr: "ah.dr"; ds: "ah.ds"; dt: "ah.dt"; du: "ah.du"; dv: "ah.dv"; dw: "ah.dw"; dx: "ah.dx"; dy: "ah.dy"; dz: "ah.dz"; ea: "ah.ea"; eb: "ah.eb"; ec: "ah.ec"; ed: "ah.ed"; ee: "ah.ee"; ef: "ah.ef"; eg: "ah.eg"; eh: "ah.eh"; ei: "ah.ei"; ej: "ah.ej"; ek: "ah.ek"; el: "ah.el"; em: "ah.em"; en: "ah.en"; eo: "ah.eo"; ep: "ah.ep"; eq: "ah.eq"; er: "ah.er"; es: "ah.es"; et: "ah.et"; eu: "ah.eu"; ev: "ah.ev"; ew: "ah.ew"; ex: "ah.ex"; ey: "ah.ey"; ez: "ah.ez"; fa: "ah.fa"; fb: "ah.fb"; fc: "ah.fc"; fd: "ah.fd"; fe: "ah.fe"; ff: "ah.ff"; fg: "ah.fg"; fh: "ah.fh"; fi: "ah.fi"; fj: "ah.fj"; fk: "ah.fk"; fl: "ah.fl"; fm: "ah.fm"; fn: "ah.fn"; fo: "ah.fo"; fp: "ah.fp"; fq: "ah.fq"; fr: "ah.fr"; fs: "ah.fs"; ft: "ah.ft"; fu: "ah.fu"; fv: "ah.fv"; fw: "ah.fw"; fx: "ah.fx"; fy: "ah.fy"; fz: "ah.fz"; ga: "ah.ga"; gb: "ah.gb"; gc: "ah.gc"; gd: "ah.gd"; ge: "ah.ge"; gf: "ah.gf"; gg: "ah.gg"; gh: "ah.gh"; gi: "ah.gi"; gj: "ah.gj"; gk: "ah.gk"; gl: "ah.gl"; gm: "ah.gm"; gn: "ah.gn"; go: "ah.go"; gp: "ah.gp"; gq: "ah.gq"; gr: "ah.gr"; gs: "ah.gs"; gt: "ah.gt"; gu: "ah.gu"; gv: "ah.gv"; gw: "ah.gw"; gx: "ah.gx"; gy: "ah.gy"; gz: "ah.gz"; ha: "ah.ha"; hb: "ah.hb"; hc: "ah.hc"; hd: "ah.hd"; he: "ah.he"; hf: "ah.hf"; hg: "ah.hg"; hh: "ah.hh"; hi: "ah.hi"; hj: "ah.hj"; hk: "ah.hk"; hl: "ah.hl"; hm: "ah.hm"; hn: "ah.hn"; ho: "ah.ho"; hp: "ah.hp"; hq: "ah.hq"; hr: "ah.hr"; hs: "ah.hs"; ht: "ah.ht"; hu: "ah.hu"; hv: "ah.hv"; hw: "ah.hw"; hx: "ah.hx"; hy: "ah.hy"; hz: "ah.hz"; ia: "ah.ia"; ib: "ah.ib"; ic: "ah.ic"; id: "ah.id"; ie: "ah.ie"; if: "ah.if"; ig: "ah.ig"; ih: "ah.ih"; ii: "ah.ii"; ij: "ah.ij"; ik: "ah.ik"; il: "ah.il"; im: "ah.im"; in: "ah.in"; io: "ah.io"; ip: "ah.ip"; iq: "ah.iq"; ir: "ah.ir"; is: "ah.is"; it: "ah.it"; iu: "ah.iu"; iv: "ah.iv"; iw: "ah.iw"; ix: "ah.ix"; iy: "ah.iy"; iz: "ah.iz"; ja: "ah.ja"; jb: "ah.jb"; jc: "ah.jc"; jd: "ah.jd"; je: "ah.je"; jf: "ah.jf"; jg: "ah.jg"; jh: "ah.jh"; ji: "ah.ji"; jj: "ah.jj"; jk: "ah.jk"; jl: "ah.jl"; jm: "ah.jm"; jn: "ah.jn"; jo: "ah.jo"; jp: "ah.jp"; jq: "ah.jq"; jr: "ah.jr"; js: "ah.js"; jt: "ah.jt"; ju: "ah.ju"; jv: "ah.jv"; jw: "ah.jw"; jx: "ah.jx"; jy: "ah.jy"; jz: "ah.jz"; ka: "ah.ka"; kb: "ah.kb"; kc: "ah.kc"; kd: "ah.kd"; ke: "ah.ke"; kf: "ah.kf"; kg: "ah.kg"; kh: "ah.kh"; ki: "ah.ki"; kj: "ah.kj"; kk: "ah.kk"; kl: "ah.kl"; km: "ah.km"; kn: "ah.kn"; ko: "ah.ko"; kp: "ah.kp"; kq: "ah.kq"; kr: "ah.kr"; ks: "ah.ks"; kt: "ah.kt"; ku: "ah.ku"; kv: "ah.kv"; kw: "ah.kw"; kx: "ah.kx"; ky: "ah.ky"; kz: "ah.kz"; la: "ah.la"; lb: "ah.lb"; lc: "ah.lc"; ld: "ah.ld"; le: "ah.le"; lf: "ah.lf"; lg: "ah.lg"; lh: "ah.lh"; li: "ah.li"; lj: "ah.lj"; lk: "ah.lk"; ll: "ah.ll"; lm: "ah.lm"; ln: "ah.ln"; lo: "ah.lo"; lp: "ah.lp"; lq: "ah.lq"; lr: "ah.lr"; ls: "ah.ls"; lt: "ah.lt"; lu: "ah.lu"; lv: "ah.lv"; lw: "ah.lw"; lx: "ah.lx"; ly: "ah.ly"; lz: "ah.lz"; ma: "ah.ma"; mb: "ah.mb"; mc: "ah.mc"; md: "ah.md"; me: "ah.me"; mf: "ah.mf"; mg: "ah.mg"; mh: "ah.mh"; mi: "ah.mi"; mj: "ah.mj"; mk: "ah.mk"; ml: "ah.ml"; mm: "ah.mm"; mn: "ah.mn"; mo: "ah.mo"; mp: "ah.mp"; mq: "ah.mq"; mr: "ah.mr"; ms: "ah.ms"; mt: "ah.mt"; mu: "ah.mu"; mv: "ah.mv"; mw: "ah.mw"; mx: "ah.mx"; my: "ah.my"; mz: "ah.mz"; na: "ah.na"; nb: "ah.nb"; nc: "ah.nc"; nd: "ah.nd"; ne: "ah.ne"; nf: "ah.nf"; ng: "ah.ng"; nh: "ah.nh"; ni: "ah.ni"; nj: "ah.nj"; nk: "ah.nk"; nl: "ah.nl"; nm: "ah.nm"; nn: "ah.nn"; no: "ah.no"; np: "ah.np"; nq: "ah.nq"; nr: "ah.nr"; ns: "ah.ns"; nt: "ah.nt"; nu: "ah.nu"; nv: "ah.nv"; nw: "ah.nw"; nx: "ah.nx"; ny: "ah.ny"; nz: "ah.nz"; oa: "ah.oa"; ob: "ah.ob"; oc: "ah.oc"; od: "ah.od"; oe: "ah.oe"; of: "ah.of"; og: "ah.og"; oh: "ah.oh"; oi: "ah.oi"; oj: "ah.oj"; ok: "ah.ok"; ol: "ah.ol"; om: "ah.om"; on: "ah.on"; oo: "ah.oo"; op: "ah.op"; oq: "ah.oq"; or: "ah.or"; os: "ah.os"; ot: "ah.ot"; ou: "ah.ou"; ov: "ah.ov"; ow: "ah.ow"; ox: "ah.ox"; oy: "ah.oy"; oz: "ah.oz"; pa: "ah.pa"; pb: "ah.pb"; pc: "ah.pc"; pd: "ah.pd"; pe: "ah.pe"; pf: "ah.pf"; pg: "ah.pg"; ph: "ah.ph"; pi: "ah.pi"; pj: "ah.pj"; pk: "ah.pk"; pl: "ah.pl"; pm: "ah.pm"; pn: "ah.pn"; po: "ah.po"; pp: "ah.pp"; pq: "ah.pq"; pr: "ah.pr"; ps: "ah.ps"; pt: "ah.pt"; pu: "ah.pu"; pv: "ah.pv"; pw: "ah.pw"; px: "ah.px"; py: "ah.py"; pz: "ah.pz"; qa: "ah.qa"; qb: "ah.qb"; qc: "ah.qc"; qd: "ah.qd"; qe: "ah.qe"; qf: "ah.qf"; qg: "ah.qg"; qh: "ah.qh"; qi: "ah.qi"; qj: "ah.qj"; qk: "ah.qk"; ql: "ah.ql"; qm: "ah.qm"; qn: "ah.qn"; qo: "ah.qo"; qp: "ah.qp"; qq: "ah.qq"; qr: "ah.qr"; qs: "ah.qs"; qt: "ah.qt"; qu: "ah.qu"; qv: "ah.qv"; qw: "ah.qw"; qx: "ah.qx"; qy: "ah.qy"; qz: "ah.qz"; ra: "ah.ra"; rb: "ah.rb"; rc: "ah.rc"; rd: "ah.rd"; re: "ah.re"; rf: "ah.rf"; rg: "ah.rg"; rh: "ah.rh"; ri: "ah.ri"; rj: "ah.rj"; rk: "ah.rk"; rl: "ah.rl"; rm: "ah.rm"; rn: "ah.rn"; ro: "ah.ro"; rp: "ah.rp"; rq: "ah.rq"; rr: "ah.rr"; rs: "ah.rs"; rt: "ah.rt"; ru: "ah.ru"; rv: "ah.rv"; rw: "ah.rw"; rx: "ah.rx"; ry: "ah.ry"; rz: "ah.rz"; sa: "ah.sa"; sb: "ah.sb"; sc: "ah.sc"; sd: "ah.sd"; se: "ah.se"; sf: "ah.sf"; sg: "ah.sg"; sh: "ah.sh"; si: "ah.si"; sj: "ah.sj"; sk: "ah.sk"; sl: "ah.sl"; sm: "ah.sm"; sn: "ah.sn"; so: "ah.so"; sp: "ah.sp"; sq: "ah.sq"; sr: "ah.sr"; ss: "ah.ss"; st: "ah.st"; su: "ah.su"; sv: "ah.sv"; sw: "ah.sw"; sx: "ah.sx"; sy: "ah.sy"; sz: "ah.sz"; ta: "ah.ta"; tb: "ah.tb"; tc: "ah.tc"; td: "ah.td"; te: "ah.te"; tf: "ah.tf"; tg: "ah.tg"; th: "ah.th"; ti: "ah.ti"; tj: "ah.tj"; tk: "ah.tk"; tl: "ah.tl"; tm: "ah.tm"; tn: "ah.tn"; to: "ah.to"; tp: "ah.tp"; tq: "ah.tq"; tr: "ah.tr"; ts: "ah.ts"; tt: "ah.tt"; tu: "ah.tu"; tv: "ah.tv"; tw: "ah.tw"; tx: "ah.tx"; ty: "ah.ty"; tz: "ah.tz"; ua: "ah.ua"; ub: "ah.ub"; uc: "ah.uc"; ud: "ah.ud"; ue: "ah.ue"; uf: "ah.uf"; ug: "ah.ug"; uh: "ah.uh"; ui: "ah.ui"; uj: "ah.uj"; uk: "ah.uk"; ul: "ah.ul"; um: "ah.um"; un: "ah.un"; uo: "ah.uo"; up: "ah.up"; uq: "ah.uq"; ur: "ah.ur"; us: "ah.us"; ut: "ah.ut"; uu: "ah.uu"; uv: "ah.uv"; uw: "ah.uw"; ux: "ah.ux"; uy: "ah.uy"; uz: "ah.uz"; va: "ah.va"; vb: "ah.vb"; vc: "ah.vc"; vd: "ah.vd"; ve: "ah.ve"; vf: "ah.vf"; vg: "ah.vg"; vh: "ah.vh"; vi: "ah.vi"; vj: "ah.vj"; vk: "ah.vk"; vl: "ah.vl"; vm: "ah.vm"; vn: "ah.vn"; vo: "ah.vo"; vp: "ah.vp"; vq: "ah.vq"; vr: "ah.vr"; vs: "ah.vs"; vt: "ah.vt"; vu: "ah.vu"; vv: "ah.vv"; vw: "ah.vw"; vx: "ah.vx"; vy: "ah.vy"; vz: "ah.vz"; wa: "ah.wa"; wb: "ah.wb"; wc: "ah.wc"; wd: "ah.wd"; we: "ah.we"; wf: "ah.wf"; wg: "ah.wg"; wh: "ah.wh"; wi: "ah.wi"; wj: "ah.wj"; wk: "ah.wk"; wl: "ah.wl"; wm: "ah.wm"; wn: "ah.wn"; wo: "ah.wo"; wp: "ah.wp"; wq: "ah.wq"; wr: "ah.wr"; ws: "ah.ws"; wt: "ah.wt"; wu: "ah.wu"; wv: "ah.wv"; ww: "ah.ww"; wx: "ah.wx"; wy: "ah.wy"; wz: "ah.wz"; xa: "ah.xa"; xb: "ah.xb"; xc: "ah.xc"; xd: "ah.xd"; xe: "ah.xe"; xf: "ah.xf"; xg: "ah.xg"; xh: "ah.xh"; xi: "ah.xi"; xj: "ah.xj"; xk: "ah.xk"; xl: "ah.xl"; xm: "ah.xm"; xn: "ah.xn"; xo: "ah.xo"; xp: "ah.xp"; xq: "ah.xq"; xr: "ah.xr"; xs: "ah.xs"; xt: "ah.xt"; xu: "ah.xu"; xv: "ah.xv"; xw: "ah.xw"; xx: "ah.xx"; xy: "ah.xy"; xz: "ah.xz"; ya: "ah.ya"; yb: "ah.yb"; yc: "ah.yc"; yd: "ah.yd"; ye: "ah.ye"; yf: "ah.yf"; yg: "ah.yg"; yh: "ah.yh"; yi: "ah.yi"; yj: "ah.yj"; yk: "ah.yk"; yl: "ah.yl"; ym: "ah.ym"; yn: "ah.yn"; yo: "ah.yo"; yp: "ah.yp"; yq: "ah.yq"; yr: "ah.yr"; ys: "ah.ys"; yt: "ah.yt"; yu: "ah.yu"; yv: "ah.yv"; yw: "ah.yw"; yx: "ah.yx"; yy: "ah.yy"; yz: "ah.yz"; za: "ah.za"; zb: "ah.zb"; zc: "ah.zc"; zd: "ah.zd"; ze: "ah.ze"; zf: "ah.zf"; zg: "ah.zg"; zh: "ah.zh"; zi: "ah.zi"; zj: "ah.zj"; zk: "ah.zk"; zl: "ah.zl"; zm: "ah.zm"; zn: "ah.zn"; zo: "ah.zo"; zp: "ah.zp"; zq: "ah.zq"; zr: "ah.zr"; zs: "ah.zs"; zt: "ah.zt"; zu: "ah.zu"; zv: "ah.zv"; zw: "ah.zw"; zx: "ah.zx"; zy: "ah.zy"; zz: "ah.zz"; }; ai: { aa: "ai.aa"; ab: "ai.ab"; ac: "ai.ac"; ad: "ai.ad"; ae: "ai.ae"; af: "ai.af"; ag: "ai.ag"; ah: "ai.ah"; ai: "ai.ai"; aj: "ai.aj"; ak: "ai.ak"; al: "ai.al"; am: "ai.am"; an: "ai.an"; ao: "ai.ao"; ap: "ai.ap"; aq: "ai.aq"; ar: "ai.ar"; as: "ai.as"; at: "ai.at"; au: "ai.au"; av: "ai.av"; aw: "ai.aw"; ax: "ai.ax"; ay: "ai.ay"; az: "ai.az"; ba: "ai.ba"; bb: "ai.bb"; bc: "ai.bc"; bd: "ai.bd"; be: "ai.be"; bf: "ai.bf"; bg: "ai.bg"; bh: "ai.bh"; bi: "ai.bi"; bj: "ai.bj"; bk: "ai.bk"; bl: "ai.bl"; bm: "ai.bm"; bn: "ai.bn"; bo: "ai.bo"; bp: "ai.bp"; bq: "ai.bq"; br: "ai.br"; bs: "ai.bs"; bt: "ai.bt"; bu: "ai.bu"; bv: "ai.bv"; bw: "ai.bw"; bx: "ai.bx"; by: "ai.by"; bz: "ai.bz"; ca: "ai.ca"; cb: "ai.cb"; cc: "ai.cc"; cd: "ai.cd"; ce: "ai.ce"; cf: "ai.cf"; cg: "ai.cg"; ch: "ai.ch"; ci: "ai.ci"; cj: "ai.cj"; ck: "ai.ck"; cl: "ai.cl"; cm: "ai.cm"; cn: "ai.cn"; co: "ai.co"; cp: "ai.cp"; cq: "ai.cq"; cr: "ai.cr"; cs: "ai.cs"; ct: "ai.ct"; cu: "ai.cu"; cv: "ai.cv"; cw: "ai.cw"; cx: "ai.cx"; cy: "ai.cy"; cz: "ai.cz"; da: "ai.da"; db: "ai.db"; dc: "ai.dc"; dd: "ai.dd"; de: "ai.de"; df: "ai.df"; dg: "ai.dg"; dh: "ai.dh"; di: "ai.di"; dj: "ai.dj"; dk: "ai.dk"; dl: "ai.dl"; dm: "ai.dm"; dn: "ai.dn"; do: "ai.do"; dp: "ai.dp"; dq: "ai.dq"; dr: "ai.dr"; ds: "ai.ds"; dt: "ai.dt"; du: "ai.du"; dv: "ai.dv"; dw: "ai.dw"; dx: "ai.dx"; dy: "ai.dy"; dz: "ai.dz"; ea: "ai.ea"; eb: "ai.eb"; ec: "ai.ec"; ed: "ai.ed"; ee: "ai.ee"; ef: "ai.ef"; eg: "ai.eg"; eh: "ai.eh"; ei: "ai.ei"; ej: "ai.ej"; ek: "ai.ek"; el: "ai.el"; em: "ai.em"; en: "ai.en"; eo: "ai.eo"; ep: "ai.ep"; eq: "ai.eq"; er: "ai.er"; es: "ai.es"; et: "ai.et"; eu: "ai.eu"; ev: "ai.ev"; ew: "ai.ew"; ex: "ai.ex"; ey: "ai.ey"; ez: "ai.ez"; fa: "ai.fa"; fb: "ai.fb"; fc: "ai.fc"; fd: "ai.fd"; fe: "ai.fe"; ff: "ai.ff"; fg: "ai.fg"; fh: "ai.fh"; fi: "ai.fi"; fj: "ai.fj"; fk: "ai.fk"; fl: "ai.fl"; fm: "ai.fm"; fn: "ai.fn"; fo: "ai.fo"; fp: "ai.fp"; fq: "ai.fq"; fr: "ai.fr"; fs: "ai.fs"; ft: "ai.ft"; fu: "ai.fu"; fv: "ai.fv"; fw: "ai.fw"; fx: "ai.fx"; fy: "ai.fy"; fz: "ai.fz"; ga: "ai.ga"; gb: "ai.gb"; gc: "ai.gc"; gd: "ai.gd"; ge: "ai.ge"; gf: "ai.gf"; gg: "ai.gg"; gh: "ai.gh"; gi: "ai.gi"; gj: "ai.gj"; gk: "ai.gk"; gl: "ai.gl"; gm: "ai.gm"; gn: "ai.gn"; go: "ai.go"; gp: "ai.gp"; gq: "ai.gq"; gr: "ai.gr"; gs: "ai.gs"; gt: "ai.gt"; gu: "ai.gu"; gv: "ai.gv"; gw: "ai.gw"; gx: "ai.gx"; gy: "ai.gy"; gz: "ai.gz"; ha: "ai.ha"; hb: "ai.hb"; hc: "ai.hc"; hd: "ai.hd"; he: "ai.he"; hf: "ai.hf"; hg: "ai.hg"; hh: "ai.hh"; hi: "ai.hi"; hj: "ai.hj"; hk: "ai.hk"; hl: "ai.hl"; hm: "ai.hm"; hn: "ai.hn"; ho: "ai.ho"; hp: "ai.hp"; hq: "ai.hq"; hr: "ai.hr"; hs: "ai.hs"; ht: "ai.ht"; hu: "ai.hu"; hv: "ai.hv"; hw: "ai.hw"; hx: "ai.hx"; hy: "ai.hy"; hz: "ai.hz"; ia: "ai.ia"; ib: "ai.ib"; ic: "ai.ic"; id: "ai.id"; ie: "ai.ie"; if: "ai.if"; ig: "ai.ig"; ih: "ai.ih"; ii: "ai.ii"; ij: "ai.ij"; ik: "ai.ik"; il: "ai.il"; im: "ai.im"; in: "ai.in"; io: "ai.io"; ip: "ai.ip"; iq: "ai.iq"; ir: "ai.ir"; is: "ai.is"; it: "ai.it"; iu: "ai.iu"; iv: "ai.iv"; iw: "ai.iw"; ix: "ai.ix"; iy: "ai.iy"; iz: "ai.iz"; ja: "ai.ja"; jb: "ai.jb"; jc: "ai.jc"; jd: "ai.jd"; je: "ai.je"; jf: "ai.jf"; jg: "ai.jg"; jh: "ai.jh"; ji: "ai.ji"; jj: "ai.jj"; jk: "ai.jk"; jl: "ai.jl"; jm: "ai.jm"; jn: "ai.jn"; jo: "ai.jo"; jp: "ai.jp"; jq: "ai.jq"; jr: "ai.jr"; js: "ai.js"; jt: "ai.jt"; ju: "ai.ju"; jv: "ai.jv"; jw: "ai.jw"; jx: "ai.jx"; jy: "ai.jy"; jz: "ai.jz"; ka: "ai.ka"; kb: "ai.kb"; kc: "ai.kc"; kd: "ai.kd"; ke: "ai.ke"; kf: "ai.kf"; kg: "ai.kg"; kh: "ai.kh"; ki: "ai.ki"; kj: "ai.kj"; kk: "ai.kk"; kl: "ai.kl"; km: "ai.km"; kn: "ai.kn"; ko: "ai.ko"; kp: "ai.kp"; kq: "ai.kq"; kr: "ai.kr"; ks: "ai.ks"; kt: "ai.kt"; ku: "ai.ku"; kv: "ai.kv"; kw: "ai.kw"; kx: "ai.kx"; ky: "ai.ky"; kz: "ai.kz"; la: "ai.la"; lb: "ai.lb"; lc: "ai.lc"; ld: "ai.ld"; le: "ai.le"; lf: "ai.lf"; lg: "ai.lg"; lh: "ai.lh"; li: "ai.li"; lj: "ai.lj"; lk: "ai.lk"; ll: "ai.ll"; lm: "ai.lm"; ln: "ai.ln"; lo: "ai.lo"; lp: "ai.lp"; lq: "ai.lq"; lr: "ai.lr"; ls: "ai.ls"; lt: "ai.lt"; lu: "ai.lu"; lv: "ai.lv"; lw: "ai.lw"; lx: "ai.lx"; ly: "ai.ly"; lz: "ai.lz"; ma: "ai.ma"; mb: "ai.mb"; mc: "ai.mc"; md: "ai.md"; me: "ai.me"; mf: "ai.mf"; mg: "ai.mg"; mh: "ai.mh"; mi: "ai.mi"; mj: "ai.mj"; mk: "ai.mk"; ml: "ai.ml"; mm: "ai.mm"; mn: "ai.mn"; mo: "ai.mo"; mp: "ai.mp"; mq: "ai.mq"; mr: "ai.mr"; ms: "ai.ms"; mt: "ai.mt"; mu: "ai.mu"; mv: "ai.mv"; mw: "ai.mw"; mx: "ai.mx"; my: "ai.my"; mz: "ai.mz"; na: "ai.na"; nb: "ai.nb"; nc: "ai.nc"; nd: "ai.nd"; ne: "ai.ne"; nf: "ai.nf"; ng: "ai.ng"; nh: "ai.nh"; ni: "ai.ni"; nj: "ai.nj"; nk: "ai.nk"; nl: "ai.nl"; nm: "ai.nm"; nn: "ai.nn"; no: "ai.no"; np: "ai.np"; nq: "ai.nq"; nr: "ai.nr"; ns: "ai.ns"; nt: "ai.nt"; nu: "ai.nu"; nv: "ai.nv"; nw: "ai.nw"; nx: "ai.nx"; ny: "ai.ny"; nz: "ai.nz"; oa: "ai.oa"; ob: "ai.ob"; oc: "ai.oc"; od: "ai.od"; oe: "ai.oe"; of: "ai.of"; og: "ai.og"; oh: "ai.oh"; oi: "ai.oi"; oj: "ai.oj"; ok: "ai.ok"; ol: "ai.ol"; om: "ai.om"; on: "ai.on"; oo: "ai.oo"; op: "ai.op"; oq: "ai.oq"; or: "ai.or"; os: "ai.os"; ot: "ai.ot"; ou: "ai.ou"; ov: "ai.ov"; ow: "ai.ow"; ox: "ai.ox"; oy: "ai.oy"; oz: "ai.oz"; pa: "ai.pa"; pb: "ai.pb"; pc: "ai.pc"; pd: "ai.pd"; pe: "ai.pe"; pf: "ai.pf"; pg: "ai.pg"; ph: "ai.ph"; pi: "ai.pi"; pj: "ai.pj"; pk: "ai.pk"; pl: "ai.pl"; pm: "ai.pm"; pn: "ai.pn"; po: "ai.po"; pp: "ai.pp"; pq: "ai.pq"; pr: "ai.pr"; ps: "ai.ps"; pt: "ai.pt"; pu: "ai.pu"; pv: "ai.pv"; pw: "ai.pw"; px: "ai.px"; py: "ai.py"; pz: "ai.pz"; qa: "ai.qa"; qb: "ai.qb"; qc: "ai.qc"; qd: "ai.qd"; qe: "ai.qe"; qf: "ai.qf"; qg: "ai.qg"; qh: "ai.qh"; qi: "ai.qi"; qj: "ai.qj"; qk: "ai.qk"; ql: "ai.ql"; qm: "ai.qm"; qn: "ai.qn"; qo: "ai.qo"; qp: "ai.qp"; qq: "ai.qq"; qr: "ai.qr"; qs: "ai.qs"; qt: "ai.qt"; qu: "ai.qu"; qv: "ai.qv"; qw: "ai.qw"; qx: "ai.qx"; qy: "ai.qy"; qz: "ai.qz"; ra: "ai.ra"; rb: "ai.rb"; rc: "ai.rc"; rd: "ai.rd"; re: "ai.re"; rf: "ai.rf"; rg: "ai.rg"; rh: "ai.rh"; ri: "ai.ri"; rj: "ai.rj"; rk: "ai.rk"; rl: "ai.rl"; rm: "ai.rm"; rn: "ai.rn"; ro: "ai.ro"; rp: "ai.rp"; rq: "ai.rq"; rr: "ai.rr"; rs: "ai.rs"; rt: "ai.rt"; ru: "ai.ru"; rv: "ai.rv"; rw: "ai.rw"; rx: "ai.rx"; ry: "ai.ry"; rz: "ai.rz"; sa: "ai.sa"; sb: "ai.sb"; sc: "ai.sc"; sd: "ai.sd"; se: "ai.se"; sf: "ai.sf"; sg: "ai.sg"; sh: "ai.sh"; si: "ai.si"; sj: "ai.sj"; sk: "ai.sk"; sl: "ai.sl"; sm: "ai.sm"; sn: "ai.sn"; so: "ai.so"; sp: "ai.sp"; sq: "ai.sq"; sr: "ai.sr"; ss: "ai.ss"; st: "ai.st"; su: "ai.su"; sv: "ai.sv"; sw: "ai.sw"; sx: "ai.sx"; sy: "ai.sy"; sz: "ai.sz"; ta: "ai.ta"; tb: "ai.tb"; tc: "ai.tc"; td: "ai.td"; te: "ai.te"; tf: "ai.tf"; tg: "ai.tg"; th: "ai.th"; ti: "ai.ti"; tj: "ai.tj"; tk: "ai.tk"; tl: "ai.tl"; tm: "ai.tm"; tn: "ai.tn"; to: "ai.to"; tp: "ai.tp"; tq: "ai.tq"; tr: "ai.tr"; ts: "ai.ts"; tt: "ai.tt"; tu: "ai.tu"; tv: "ai.tv"; tw: "ai.tw"; tx: "ai.tx"; ty: "ai.ty"; tz: "ai.tz"; ua: "ai.ua"; ub: "ai.ub"; uc: "ai.uc"; ud: "ai.ud"; ue: "ai.ue"; uf: "ai.uf"; ug: "ai.ug"; uh: "ai.uh"; ui: "ai.ui"; uj: "ai.uj"; uk: "ai.uk"; ul: "ai.ul"; um: "ai.um"; un: "ai.un"; uo: "ai.uo"; up: "ai.up"; uq: "ai.uq"; ur: "ai.ur"; us: "ai.us"; ut: "ai.ut"; uu: "ai.uu"; uv: "ai.uv"; uw: "ai.uw"; ux: "ai.ux"; uy: "ai.uy"; uz: "ai.uz"; va: "ai.va"; vb: "ai.vb"; vc: "ai.vc"; vd: "ai.vd"; ve: "ai.ve"; vf: "ai.vf"; vg: "ai.vg"; vh: "ai.vh"; vi: "ai.vi"; vj: "ai.vj"; vk: "ai.vk"; vl: "ai.vl"; vm: "ai.vm"; vn: "ai.vn"; vo: "ai.vo"; vp: "ai.vp"; vq: "ai.vq"; vr: "ai.vr"; vs: "ai.vs"; vt: "ai.vt"; vu: "ai.vu"; vv: "ai.vv"; vw: "ai.vw"; vx: "ai.vx"; vy: "ai.vy"; vz: "ai.vz"; wa: "ai.wa"; wb: "ai.wb"; wc: "ai.wc"; wd: "ai.wd"; we: "ai.we"; wf: "ai.wf"; wg: "ai.wg"; wh: "ai.wh"; wi: "ai.wi"; wj: "ai.wj"; wk: "ai.wk"; wl: "ai.wl"; wm: "ai.wm"; wn: "ai.wn"; wo: "ai.wo"; wp: "ai.wp"; wq: "ai.wq"; wr: "ai.wr"; ws: "ai.ws"; wt: "ai.wt"; wu: "ai.wu"; wv: "ai.wv"; ww: "ai.ww"; wx: "ai.wx"; wy: "ai.wy"; wz: "ai.wz"; xa: "ai.xa"; xb: "ai.xb"; xc: "ai.xc"; xd: "ai.xd"; xe: "ai.xe"; xf: "ai.xf"; xg: "ai.xg"; xh: "ai.xh"; xi: "ai.xi"; xj: "ai.xj"; xk: "ai.xk"; xl: "ai.xl"; xm: "ai.xm"; xn: "ai.xn"; xo: "ai.xo"; xp: "ai.xp"; xq: "ai.xq"; xr: "ai.xr"; xs: "ai.xs"; xt: "ai.xt"; xu: "ai.xu"; xv: "ai.xv"; xw: "ai.xw"; xx: "ai.xx"; xy: "ai.xy"; xz: "ai.xz"; ya: "ai.ya"; yb: "ai.yb"; yc: "ai.yc"; yd: "ai.yd"; ye: "ai.ye"; yf: "ai.yf"; yg: "ai.yg"; yh: "ai.yh"; yi: "ai.yi"; yj: "ai.yj"; yk: "ai.yk"; yl: "ai.yl"; ym: "ai.ym"; yn: "ai.yn"; yo: "ai.yo"; yp: "ai.yp"; yq: "ai.yq"; yr: "ai.yr"; ys: "ai.ys"; yt: "ai.yt"; yu: "ai.yu"; yv: "ai.yv"; yw: "ai.yw"; yx: "ai.yx"; yy: "ai.yy"; yz: "ai.yz"; za: "ai.za"; zb: "ai.zb"; zc: "ai.zc"; zd: "ai.zd"; ze: "ai.ze"; zf: "ai.zf"; zg: "ai.zg"; zh: "ai.zh"; zi: "ai.zi"; zj: "ai.zj"; zk: "ai.zk"; zl: "ai.zl"; zm: "ai.zm"; zn: "ai.zn"; zo: "ai.zo"; zp: "ai.zp"; zq: "ai.zq"; zr: "ai.zr"; zs: "ai.zs"; zt: "ai.zt"; zu: "ai.zu"; zv: "ai.zv"; zw: "ai.zw"; zx: "ai.zx"; zy: "ai.zy"; zz: "ai.zz"; }; aj: { aa: "aj.aa"; ab: "aj.ab"; ac: "aj.ac"; ad: "aj.ad"; ae: "aj.ae"; af: "aj.af"; ag: "aj.ag"; ah: "aj.ah"; ai: "aj.ai"; aj: "aj.aj"; ak: "aj.ak"; al: "aj.al"; am: "aj.am"; an: "aj.an"; ao: "aj.ao"; ap: "aj.ap"; aq: "aj.aq"; ar: "aj.ar"; as: "aj.as"; at: "aj.at"; au: "aj.au"; av: "aj.av"; aw: "aj.aw"; ax: "aj.ax"; ay: "aj.ay"; az: "aj.az"; ba: "aj.ba"; bb: "aj.bb"; bc: "aj.bc"; bd: "aj.bd"; be: "aj.be"; bf: "aj.bf"; bg: "aj.bg"; bh: "aj.bh"; bi: "aj.bi"; bj: "aj.bj"; bk: "aj.bk"; bl: "aj.bl"; bm: "aj.bm"; bn: "aj.bn"; bo: "aj.bo"; bp: "aj.bp"; bq: "aj.bq"; br: "aj.br"; bs: "aj.bs"; bt: "aj.bt"; bu: "aj.bu"; bv: "aj.bv"; bw: "aj.bw"; bx: "aj.bx"; by: "aj.by"; bz: "aj.bz"; ca: "aj.ca"; cb: "aj.cb"; cc: "aj.cc"; cd: "aj.cd"; ce: "aj.ce"; cf: "aj.cf"; cg: "aj.cg"; ch: "aj.ch"; ci: "aj.ci"; cj: "aj.cj"; ck: "aj.ck"; cl: "aj.cl"; cm: "aj.cm"; cn: "aj.cn"; co: "aj.co"; cp: "aj.cp"; cq: "aj.cq"; cr: "aj.cr"; cs: "aj.cs"; ct: "aj.ct"; cu: "aj.cu"; cv: "aj.cv"; cw: "aj.cw"; cx: "aj.cx"; cy: "aj.cy"; cz: "aj.cz"; da: "aj.da"; db: "aj.db"; dc: "aj.dc"; dd: "aj.dd"; de: "aj.de"; df: "aj.df"; dg: "aj.dg"; dh: "aj.dh"; di: "aj.di"; dj: "aj.dj"; dk: "aj.dk"; dl: "aj.dl"; dm: "aj.dm"; dn: "aj.dn"; do: "aj.do"; dp: "aj.dp"; dq: "aj.dq"; dr: "aj.dr"; ds: "aj.ds"; dt: "aj.dt"; du: "aj.du"; dv: "aj.dv"; dw: "aj.dw"; dx: "aj.dx"; dy: "aj.dy"; dz: "aj.dz"; ea: "aj.ea"; eb: "aj.eb"; ec: "aj.ec"; ed: "aj.ed"; ee: "aj.ee"; ef: "aj.ef"; eg: "aj.eg"; eh: "aj.eh"; ei: "aj.ei"; ej: "aj.ej"; ek: "aj.ek"; el: "aj.el"; em: "aj.em"; en: "aj.en"; eo: "aj.eo"; ep: "aj.ep"; eq: "aj.eq"; er: "aj.er"; es: "aj.es"; et: "aj.et"; eu: "aj.eu"; ev: "aj.ev"; ew: "aj.ew"; ex: "aj.ex"; ey: "aj.ey"; ez: "aj.ez"; fa: "aj.fa"; fb: "aj.fb"; fc: "aj.fc"; fd: "aj.fd"; fe: "aj.fe"; ff: "aj.ff"; fg: "aj.fg"; fh: "aj.fh"; fi: "aj.fi"; fj: "aj.fj"; fk: "aj.fk"; fl: "aj.fl"; fm: "aj.fm"; fn: "aj.fn"; fo: "aj.fo"; fp: "aj.fp"; fq: "aj.fq"; fr: "aj.fr"; fs: "aj.fs"; ft: "aj.ft"; fu: "aj.fu"; fv: "aj.fv"; fw: "aj.fw"; fx: "aj.fx"; fy: "aj.fy"; fz: "aj.fz"; ga: "aj.ga"; gb: "aj.gb"; gc: "aj.gc"; gd: "aj.gd"; ge: "aj.ge"; gf: "aj.gf"; gg: "aj.gg"; gh: "aj.gh"; gi: "aj.gi"; gj: "aj.gj"; gk: "aj.gk"; gl: "aj.gl"; gm: "aj.gm"; gn: "aj.gn"; go: "aj.go"; gp: "aj.gp"; gq: "aj.gq"; gr: "aj.gr"; gs: "aj.gs"; gt: "aj.gt"; gu: "aj.gu"; gv: "aj.gv"; gw: "aj.gw"; gx: "aj.gx"; gy: "aj.gy"; gz: "aj.gz"; ha: "aj.ha"; hb: "aj.hb"; hc: "aj.hc"; hd: "aj.hd"; he: "aj.he"; hf: "aj.hf"; hg: "aj.hg"; hh: "aj.hh"; hi: "aj.hi"; hj: "aj.hj"; hk: "aj.hk"; hl: "aj.hl"; hm: "aj.hm"; hn: "aj.hn"; ho: "aj.ho"; hp: "aj.hp"; hq: "aj.hq"; hr: "aj.hr"; hs: "aj.hs"; ht: "aj.ht"; hu: "aj.hu"; hv: "aj.hv"; hw: "aj.hw"; hx: "aj.hx"; hy: "aj.hy"; hz: "aj.hz"; ia: "aj.ia"; ib: "aj.ib"; ic: "aj.ic"; id: "aj.id"; ie: "aj.ie"; if: "aj.if"; ig: "aj.ig"; ih: "aj.ih"; ii: "aj.ii"; ij: "aj.ij"; ik: "aj.ik"; il: "aj.il"; im: "aj.im"; in: "aj.in"; io: "aj.io"; ip: "aj.ip"; iq: "aj.iq"; ir: "aj.ir"; is: "aj.is"; it: "aj.it"; iu: "aj.iu"; iv: "aj.iv"; iw: "aj.iw"; ix: "aj.ix"; iy: "aj.iy"; iz: "aj.iz"; ja: "aj.ja"; jb: "aj.jb"; jc: "aj.jc"; jd: "aj.jd"; je: "aj.je"; jf: "aj.jf"; jg: "aj.jg"; jh: "aj.jh"; ji: "aj.ji"; jj: "aj.jj"; jk: "aj.jk"; jl: "aj.jl"; jm: "aj.jm"; jn: "aj.jn"; jo: "aj.jo"; jp: "aj.jp"; jq: "aj.jq"; jr: "aj.jr"; js: "aj.js"; jt: "aj.jt"; ju: "aj.ju"; jv: "aj.jv"; jw: "aj.jw"; jx: "aj.jx"; jy: "aj.jy"; jz: "aj.jz"; ka: "aj.ka"; kb: "aj.kb"; kc: "aj.kc"; kd: "aj.kd"; ke: "aj.ke"; kf: "aj.kf"; kg: "aj.kg"; kh: "aj.kh"; ki: "aj.ki"; kj: "aj.kj"; kk: "aj.kk"; kl: "aj.kl"; km: "aj.km"; kn: "aj.kn"; ko: "aj.ko"; kp: "aj.kp"; kq: "aj.kq"; kr: "aj.kr"; ks: "aj.ks"; kt: "aj.kt"; ku: "aj.ku"; kv: "aj.kv"; kw: "aj.kw"; kx: "aj.kx"; ky: "aj.ky"; kz: "aj.kz"; la: "aj.la"; lb: "aj.lb"; lc: "aj.lc"; ld: "aj.ld"; le: "aj.le"; lf: "aj.lf"; lg: "aj.lg"; lh: "aj.lh"; li: "aj.li"; lj: "aj.lj"; lk: "aj.lk"; ll: "aj.ll"; lm: "aj.lm"; ln: "aj.ln"; lo: "aj.lo"; lp: "aj.lp"; lq: "aj.lq"; lr: "aj.lr"; ls: "aj.ls"; lt: "aj.lt"; lu: "aj.lu"; lv: "aj.lv"; lw: "aj.lw"; lx: "aj.lx"; ly: "aj.ly"; lz: "aj.lz"; ma: "aj.ma"; mb: "aj.mb"; mc: "aj.mc"; md: "aj.md"; me: "aj.me"; mf: "aj.mf"; mg: "aj.mg"; mh: "aj.mh"; mi: "aj.mi"; mj: "aj.mj"; mk: "aj.mk"; ml: "aj.ml"; mm: "aj.mm"; mn: "aj.mn"; mo: "aj.mo"; mp: "aj.mp"; mq: "aj.mq"; mr: "aj.mr"; ms: "aj.ms"; mt: "aj.mt"; mu: "aj.mu"; mv: "aj.mv"; mw: "aj.mw"; mx: "aj.mx"; my: "aj.my"; mz: "aj.mz"; na: "aj.na"; nb: "aj.nb"; nc: "aj.nc"; nd: "aj.nd"; ne: "aj.ne"; nf: "aj.nf"; ng: "aj.ng"; nh: "aj.nh"; ni: "aj.ni"; nj: "aj.nj"; nk: "aj.nk"; nl: "aj.nl"; nm: "aj.nm"; nn: "aj.nn"; no: "aj.no"; np: "aj.np"; nq: "aj.nq"; nr: "aj.nr"; ns: "aj.ns"; nt: "aj.nt"; nu: "aj.nu"; nv: "aj.nv"; nw: "aj.nw"; nx: "aj.nx"; ny: "aj.ny"; nz: "aj.nz"; oa: "aj.oa"; ob: "aj.ob"; oc: "aj.oc"; od: "aj.od"; oe: "aj.oe"; of: "aj.of"; og: "aj.og"; oh: "aj.oh"; oi: "aj.oi"; oj: "aj.oj"; ok: "aj.ok"; ol: "aj.ol"; om: "aj.om"; on: "aj.on"; oo: "aj.oo"; op: "aj.op"; oq: "aj.oq"; or: "aj.or"; os: "aj.os"; ot: "aj.ot"; ou: "aj.ou"; ov: "aj.ov"; ow: "aj.ow"; ox: "aj.ox"; oy: "aj.oy"; oz: "aj.oz"; pa: "aj.pa"; pb: "aj.pb"; pc: "aj.pc"; pd: "aj.pd"; pe: "aj.pe"; pf: "aj.pf"; pg: "aj.pg"; ph: "aj.ph"; pi: "aj.pi"; pj: "aj.pj"; pk: "aj.pk"; pl: "aj.pl"; pm: "aj.pm"; pn: "aj.pn"; po: "aj.po"; pp: "aj.pp"; pq: "aj.pq"; pr: "aj.pr"; ps: "aj.ps"; pt: "aj.pt"; pu: "aj.pu"; pv: "aj.pv"; pw: "aj.pw"; px: "aj.px"; py: "aj.py"; pz: "aj.pz"; qa: "aj.qa"; qb: "aj.qb"; qc: "aj.qc"; qd: "aj.qd"; qe: "aj.qe"; qf: "aj.qf"; qg: "aj.qg"; qh: "aj.qh"; qi: "aj.qi"; qj: "aj.qj"; qk: "aj.qk"; ql: "aj.ql"; qm: "aj.qm"; qn: "aj.qn"; qo: "aj.qo"; qp: "aj.qp"; qq: "aj.qq"; qr: "aj.qr"; qs: "aj.qs"; qt: "aj.qt"; qu: "aj.qu"; qv: "aj.qv"; qw: "aj.qw"; qx: "aj.qx"; qy: "aj.qy"; qz: "aj.qz"; ra: "aj.ra"; rb: "aj.rb"; rc: "aj.rc"; rd: "aj.rd"; re: "aj.re"; rf: "aj.rf"; rg: "aj.rg"; rh: "aj.rh"; ri: "aj.ri"; rj: "aj.rj"; rk: "aj.rk"; rl: "aj.rl"; rm: "aj.rm"; rn: "aj.rn"; ro: "aj.ro"; rp: "aj.rp"; rq: "aj.rq"; rr: "aj.rr"; rs: "aj.rs"; rt: "aj.rt"; ru: "aj.ru"; rv: "aj.rv"; rw: "aj.rw"; rx: "aj.rx"; ry: "aj.ry"; rz: "aj.rz"; sa: "aj.sa"; sb: "aj.sb"; sc: "aj.sc"; sd: "aj.sd"; se: "aj.se"; sf: "aj.sf"; sg: "aj.sg"; sh: "aj.sh"; si: "aj.si"; sj: "aj.sj"; sk: "aj.sk"; sl: "aj.sl"; sm: "aj.sm"; sn: "aj.sn"; so: "aj.so"; sp: "aj.sp"; sq: "aj.sq"; sr: "aj.sr"; ss: "aj.ss"; st: "aj.st"; su: "aj.su"; sv: "aj.sv"; sw: "aj.sw"; sx: "aj.sx"; sy: "aj.sy"; sz: "aj.sz"; ta: "aj.ta"; tb: "aj.tb"; tc: "aj.tc"; td: "aj.td"; te: "aj.te"; tf: "aj.tf"; tg: "aj.tg"; th: "aj.th"; ti: "aj.ti"; tj: "aj.tj"; tk: "aj.tk"; tl: "aj.tl"; tm: "aj.tm"; tn: "aj.tn"; to: "aj.to"; tp: "aj.tp"; tq: "aj.tq"; tr: "aj.tr"; ts: "aj.ts"; tt: "aj.tt"; tu: "aj.tu"; tv: "aj.tv"; tw: "aj.tw"; tx: "aj.tx"; ty: "aj.ty"; tz: "aj.tz"; ua: "aj.ua"; ub: "aj.ub"; uc: "aj.uc"; ud: "aj.ud"; ue: "aj.ue"; uf: "aj.uf"; ug: "aj.ug"; uh: "aj.uh"; ui: "aj.ui"; uj: "aj.uj"; uk: "aj.uk"; ul: "aj.ul"; um: "aj.um"; un: "aj.un"; uo: "aj.uo"; up: "aj.up"; uq: "aj.uq"; ur: "aj.ur"; us: "aj.us"; ut: "aj.ut"; uu: "aj.uu"; uv: "aj.uv"; uw: "aj.uw"; ux: "aj.ux"; uy: "aj.uy"; uz: "aj.uz"; va: "aj.va"; vb: "aj.vb"; vc: "aj.vc"; vd: "aj.vd"; ve: "aj.ve"; vf: "aj.vf"; vg: "aj.vg"; vh: "aj.vh"; vi: "aj.vi"; vj: "aj.vj"; vk: "aj.vk"; vl: "aj.vl"; vm: "aj.vm"; vn: "aj.vn"; vo: "aj.vo"; vp: "aj.vp"; vq: "aj.vq"; vr: "aj.vr"; vs: "aj.vs"; vt: "aj.vt"; vu: "aj.vu"; vv: "aj.vv"; vw: "aj.vw"; vx: "aj.vx"; vy: "aj.vy"; vz: "aj.vz"; wa: "aj.wa"; wb: "aj.wb"; wc: "aj.wc"; wd: "aj.wd"; we: "aj.we"; wf: "aj.wf"; wg: "aj.wg"; wh: "aj.wh"; wi: "aj.wi"; wj: "aj.wj"; wk: "aj.wk"; wl: "aj.wl"; wm: "aj.wm"; wn: "aj.wn"; wo: "aj.wo"; wp: "aj.wp"; wq: "aj.wq"; wr: "aj.wr"; ws: "aj.ws"; wt: "aj.wt"; wu: "aj.wu"; wv: "aj.wv"; ww: "aj.ww"; wx: "aj.wx"; wy: "aj.wy"; wz: "aj.wz"; xa: "aj.xa"; xb: "aj.xb"; xc: "aj.xc"; xd: "aj.xd"; xe: "aj.xe"; xf: "aj.xf"; xg: "aj.xg"; xh: "aj.xh"; xi: "aj.xi"; xj: "aj.xj"; xk: "aj.xk"; xl: "aj.xl"; xm: "aj.xm"; xn: "aj.xn"; xo: "aj.xo"; xp: "aj.xp"; xq: "aj.xq"; xr: "aj.xr"; xs: "aj.xs"; xt: "aj.xt"; xu: "aj.xu"; xv: "aj.xv"; xw: "aj.xw"; xx: "aj.xx"; xy: "aj.xy"; xz: "aj.xz"; ya: "aj.ya"; yb: "aj.yb"; yc: "aj.yc"; yd: "aj.yd"; ye: "aj.ye"; yf: "aj.yf"; yg: "aj.yg"; yh: "aj.yh"; yi: "aj.yi"; yj: "aj.yj"; yk: "aj.yk"; yl: "aj.yl"; ym: "aj.ym"; yn: "aj.yn"; yo: "aj.yo"; yp: "aj.yp"; yq: "aj.yq"; yr: "aj.yr"; ys: "aj.ys"; yt: "aj.yt"; yu: "aj.yu"; yv: "aj.yv"; yw: "aj.yw"; yx: "aj.yx"; yy: "aj.yy"; yz: "aj.yz"; za: "aj.za"; zb: "aj.zb"; zc: "aj.zc"; zd: "aj.zd"; ze: "aj.ze"; zf: "aj.zf"; zg: "aj.zg"; zh: "aj.zh"; zi: "aj.zi"; zj: "aj.zj"; zk: "aj.zk"; zl: "aj.zl"; zm: "aj.zm"; zn: "aj.zn"; zo: "aj.zo"; zp: "aj.zp"; zq: "aj.zq"; zr: "aj.zr"; zs: "aj.zs"; zt: "aj.zt"; zu: "aj.zu"; zv: "aj.zv"; zw: "aj.zw"; zx: "aj.zx"; zy: "aj.zy"; zz: "aj.zz"; }; ak: { aa: "ak.aa"; ab: "ak.ab"; ac: "ak.ac"; ad: "ak.ad"; ae: "ak.ae"; af: "ak.af"; ag: "ak.ag"; ah: "ak.ah"; ai: "ak.ai"; aj: "ak.aj"; ak: "ak.ak"; al: "ak.al"; am: "ak.am"; an: "ak.an"; ao: "ak.ao"; ap: "ak.ap"; aq: "ak.aq"; ar: "ak.ar"; as: "ak.as"; at: "ak.at"; au: "ak.au"; av: "ak.av"; aw: "ak.aw"; ax: "ak.ax"; ay: "ak.ay"; az: "ak.az"; ba: "ak.ba"; bb: "ak.bb"; bc: "ak.bc"; bd: "ak.bd"; be: "ak.be"; bf: "ak.bf"; bg: "ak.bg"; bh: "ak.bh"; bi: "ak.bi"; bj: "ak.bj"; bk: "ak.bk"; bl: "ak.bl"; bm: "ak.bm"; bn: "ak.bn"; bo: "ak.bo"; bp: "ak.bp"; bq: "ak.bq"; br: "ak.br"; bs: "ak.bs"; bt: "ak.bt"; bu: "ak.bu"; bv: "ak.bv"; bw: "ak.bw"; bx: "ak.bx"; by: "ak.by"; bz: "ak.bz"; ca: "ak.ca"; cb: "ak.cb"; cc: "ak.cc"; cd: "ak.cd"; ce: "ak.ce"; cf: "ak.cf"; cg: "ak.cg"; ch: "ak.ch"; ci: "ak.ci"; cj: "ak.cj"; ck: "ak.ck"; cl: "ak.cl"; cm: "ak.cm"; cn: "ak.cn"; co: "ak.co"; cp: "ak.cp"; cq: "ak.cq"; cr: "ak.cr"; cs: "ak.cs"; ct: "ak.ct"; cu: "ak.cu"; cv: "ak.cv"; cw: "ak.cw"; cx: "ak.cx"; cy: "ak.cy"; cz: "ak.cz"; da: "ak.da"; db: "ak.db"; dc: "ak.dc"; dd: "ak.dd"; de: "ak.de"; df: "ak.df"; dg: "ak.dg"; dh: "ak.dh"; di: "ak.di"; dj: "ak.dj"; dk: "ak.dk"; dl: "ak.dl"; dm: "ak.dm"; dn: "ak.dn"; do: "ak.do"; dp: "ak.dp"; dq: "ak.dq"; dr: "ak.dr"; ds: "ak.ds"; dt: "ak.dt"; du: "ak.du"; dv: "ak.dv"; dw: "ak.dw"; dx: "ak.dx"; dy: "ak.dy"; dz: "ak.dz"; ea: "ak.ea"; eb: "ak.eb"; ec: "ak.ec"; ed: "ak.ed"; ee: "ak.ee"; ef: "ak.ef"; eg: "ak.eg"; eh: "ak.eh"; ei: "ak.ei"; ej: "ak.ej"; ek: "ak.ek"; el: "ak.el"; em: "ak.em"; en: "ak.en"; eo: "ak.eo"; ep: "ak.ep"; eq: "ak.eq"; er: "ak.er"; es: "ak.es"; et: "ak.et"; eu: "ak.eu"; ev: "ak.ev"; ew: "ak.ew"; ex: "ak.ex"; ey: "ak.ey"; ez: "ak.ez"; fa: "ak.fa"; fb: "ak.fb"; fc: "ak.fc"; fd: "ak.fd"; fe: "ak.fe"; ff: "ak.ff"; fg: "ak.fg"; fh: "ak.fh"; fi: "ak.fi"; fj: "ak.fj"; fk: "ak.fk"; fl: "ak.fl"; fm: "ak.fm"; fn: "ak.fn"; fo: "ak.fo"; fp: "ak.fp"; fq: "ak.fq"; fr: "ak.fr"; fs: "ak.fs"; ft: "ak.ft"; fu: "ak.fu"; fv: "ak.fv"; fw: "ak.fw"; fx: "ak.fx"; fy: "ak.fy"; fz: "ak.fz"; ga: "ak.ga"; gb: "ak.gb"; gc: "ak.gc"; gd: "ak.gd"; ge: "ak.ge"; gf: "ak.gf"; gg: "ak.gg"; gh: "ak.gh"; gi: "ak.gi"; gj: "ak.gj"; gk: "ak.gk"; gl: "ak.gl"; gm: "ak.gm"; gn: "ak.gn"; go: "ak.go"; gp: "ak.gp"; gq: "ak.gq"; gr: "ak.gr"; gs: "ak.gs"; gt: "ak.gt"; gu: "ak.gu"; gv: "ak.gv"; gw: "ak.gw"; gx: "ak.gx"; gy: "ak.gy"; gz: "ak.gz"; ha: "ak.ha"; hb: "ak.hb"; hc: "ak.hc"; hd: "ak.hd"; he: "ak.he"; hf: "ak.hf"; hg: "ak.hg"; hh: "ak.hh"; hi: "ak.hi"; hj: "ak.hj"; hk: "ak.hk"; hl: "ak.hl"; hm: "ak.hm"; hn: "ak.hn"; ho: "ak.ho"; hp: "ak.hp"; hq: "ak.hq"; hr: "ak.hr"; hs: "ak.hs"; ht: "ak.ht"; hu: "ak.hu"; hv: "ak.hv"; hw: "ak.hw"; hx: "ak.hx"; hy: "ak.hy"; hz: "ak.hz"; ia: "ak.ia"; ib: "ak.ib"; ic: "ak.ic"; id: "ak.id"; ie: "ak.ie"; if: "ak.if"; ig: "ak.ig"; ih: "ak.ih"; ii: "ak.ii"; ij: "ak.ij"; ik: "ak.ik"; il: "ak.il"; im: "ak.im"; in: "ak.in"; io: "ak.io"; ip: "ak.ip"; iq: "ak.iq"; ir: "ak.ir"; is: "ak.is"; it: "ak.it"; iu: "ak.iu"; iv: "ak.iv"; iw: "ak.iw"; ix: "ak.ix"; iy: "ak.iy"; iz: "ak.iz"; ja: "ak.ja"; jb: "ak.jb"; jc: "ak.jc"; jd: "ak.jd"; je: "ak.je"; jf: "ak.jf"; jg: "ak.jg"; jh: "ak.jh"; ji: "ak.ji"; jj: "ak.jj"; jk: "ak.jk"; jl: "ak.jl"; jm: "ak.jm"; jn: "ak.jn"; jo: "ak.jo"; jp: "ak.jp"; jq: "ak.jq"; jr: "ak.jr"; js: "ak.js"; jt: "ak.jt"; ju: "ak.ju"; jv: "ak.jv"; jw: "ak.jw"; jx: "ak.jx"; jy: "ak.jy"; jz: "ak.jz"; ka: "ak.ka"; kb: "ak.kb"; kc: "ak.kc"; kd: "ak.kd"; ke: "ak.ke"; kf: "ak.kf"; kg: "ak.kg"; kh: "ak.kh"; ki: "ak.ki"; kj: "ak.kj"; kk: "ak.kk"; kl: "ak.kl"; km: "ak.km"; kn: "ak.kn"; ko: "ak.ko"; kp: "ak.kp"; kq: "ak.kq"; kr: "ak.kr"; ks: "ak.ks"; kt: "ak.kt"; ku: "ak.ku"; kv: "ak.kv"; kw: "ak.kw"; kx: "ak.kx"; ky: "ak.ky"; kz: "ak.kz"; la: "ak.la"; lb: "ak.lb"; lc: "ak.lc"; ld: "ak.ld"; le: "ak.le"; lf: "ak.lf"; lg: "ak.lg"; lh: "ak.lh"; li: "ak.li"; lj: "ak.lj"; lk: "ak.lk"; ll: "ak.ll"; lm: "ak.lm"; ln: "ak.ln"; lo: "ak.lo"; lp: "ak.lp"; lq: "ak.lq"; lr: "ak.lr"; ls: "ak.ls"; lt: "ak.lt"; lu: "ak.lu"; lv: "ak.lv"; lw: "ak.lw"; lx: "ak.lx"; ly: "ak.ly"; lz: "ak.lz"; ma: "ak.ma"; mb: "ak.mb"; mc: "ak.mc"; md: "ak.md"; me: "ak.me"; mf: "ak.mf"; mg: "ak.mg"; mh: "ak.mh"; mi: "ak.mi"; mj: "ak.mj"; mk: "ak.mk"; ml: "ak.ml"; mm: "ak.mm"; mn: "ak.mn"; mo: "ak.mo"; mp: "ak.mp"; mq: "ak.mq"; mr: "ak.mr"; ms: "ak.ms"; mt: "ak.mt"; mu: "ak.mu"; mv: "ak.mv"; mw: "ak.mw"; mx: "ak.mx"; my: "ak.my"; mz: "ak.mz"; na: "ak.na"; nb: "ak.nb"; nc: "ak.nc"; nd: "ak.nd"; ne: "ak.ne"; nf: "ak.nf"; ng: "ak.ng"; nh: "ak.nh"; ni: "ak.ni"; nj: "ak.nj"; nk: "ak.nk"; nl: "ak.nl"; nm: "ak.nm"; nn: "ak.nn"; no: "ak.no"; np: "ak.np"; nq: "ak.nq"; nr: "ak.nr"; ns: "ak.ns"; nt: "ak.nt"; nu: "ak.nu"; nv: "ak.nv"; nw: "ak.nw"; nx: "ak.nx"; ny: "ak.ny"; nz: "ak.nz"; oa: "ak.oa"; ob: "ak.ob"; oc: "ak.oc"; od: "ak.od"; oe: "ak.oe"; of: "ak.of"; og: "ak.og"; oh: "ak.oh"; oi: "ak.oi"; oj: "ak.oj"; ok: "ak.ok"; ol: "ak.ol"; om: "ak.om"; on: "ak.on"; oo: "ak.oo"; op: "ak.op"; oq: "ak.oq"; or: "ak.or"; os: "ak.os"; ot: "ak.ot"; ou: "ak.ou"; ov: "ak.ov"; ow: "ak.ow"; ox: "ak.ox"; oy: "ak.oy"; oz: "ak.oz"; pa: "ak.pa"; pb: "ak.pb"; pc: "ak.pc"; pd: "ak.pd"; pe: "ak.pe"; pf: "ak.pf"; pg: "ak.pg"; ph: "ak.ph"; pi: "ak.pi"; pj: "ak.pj"; pk: "ak.pk"; pl: "ak.pl"; pm: "ak.pm"; pn: "ak.pn"; po: "ak.po"; pp: "ak.pp"; pq: "ak.pq"; pr: "ak.pr"; ps: "ak.ps"; pt: "ak.pt"; pu: "ak.pu"; pv: "ak.pv"; pw: "ak.pw"; px: "ak.px"; py: "ak.py"; pz: "ak.pz"; qa: "ak.qa"; qb: "ak.qb"; qc: "ak.qc"; qd: "ak.qd"; qe: "ak.qe"; qf: "ak.qf"; qg: "ak.qg"; qh: "ak.qh"; qi: "ak.qi"; qj: "ak.qj"; qk: "ak.qk"; ql: "ak.ql"; qm: "ak.qm"; qn: "ak.qn"; qo: "ak.qo"; qp: "ak.qp"; qq: "ak.qq"; qr: "ak.qr"; qs: "ak.qs"; qt: "ak.qt"; qu: "ak.qu"; qv: "ak.qv"; qw: "ak.qw"; qx: "ak.qx"; qy: "ak.qy"; qz: "ak.qz"; ra: "ak.ra"; rb: "ak.rb"; rc: "ak.rc"; rd: "ak.rd"; re: "ak.re"; rf: "ak.rf"; rg: "ak.rg"; rh: "ak.rh"; ri: "ak.ri"; rj: "ak.rj"; rk: "ak.rk"; rl: "ak.rl"; rm: "ak.rm"; rn: "ak.rn"; ro: "ak.ro"; rp: "ak.rp"; rq: "ak.rq"; rr: "ak.rr"; rs: "ak.rs"; rt: "ak.rt"; ru: "ak.ru"; rv: "ak.rv"; rw: "ak.rw"; rx: "ak.rx"; ry: "ak.ry"; rz: "ak.rz"; sa: "ak.sa"; sb: "ak.sb"; sc: "ak.sc"; sd: "ak.sd"; se: "ak.se"; sf: "ak.sf"; sg: "ak.sg"; sh: "ak.sh"; si: "ak.si"; sj: "ak.sj"; sk: "ak.sk"; sl: "ak.sl"; sm: "ak.sm"; sn: "ak.sn"; so: "ak.so"; sp: "ak.sp"; sq: "ak.sq"; sr: "ak.sr"; ss: "ak.ss"; st: "ak.st"; su: "ak.su"; sv: "ak.sv"; sw: "ak.sw"; sx: "ak.sx"; sy: "ak.sy"; sz: "ak.sz"; ta: "ak.ta"; tb: "ak.tb"; tc: "ak.tc"; td: "ak.td"; te: "ak.te"; tf: "ak.tf"; tg: "ak.tg"; th: "ak.th"; ti: "ak.ti"; tj: "ak.tj"; tk: "ak.tk"; tl: "ak.tl"; tm: "ak.tm"; tn: "ak.tn"; to: "ak.to"; tp: "ak.tp"; tq: "ak.tq"; tr: "ak.tr"; ts: "ak.ts"; tt: "ak.tt"; tu: "ak.tu"; tv: "ak.tv"; tw: "ak.tw"; tx: "ak.tx"; ty: "ak.ty"; tz: "ak.tz"; ua: "ak.ua"; ub: "ak.ub"; uc: "ak.uc"; ud: "ak.ud"; ue: "ak.ue"; uf: "ak.uf"; ug: "ak.ug"; uh: "ak.uh"; ui: "ak.ui"; uj: "ak.uj"; uk: "ak.uk"; ul: "ak.ul"; um: "ak.um"; un: "ak.un"; uo: "ak.uo"; up: "ak.up"; uq: "ak.uq"; ur: "ak.ur"; us: "ak.us"; ut: "ak.ut"; uu: "ak.uu"; uv: "ak.uv"; uw: "ak.uw"; ux: "ak.ux"; uy: "ak.uy"; uz: "ak.uz"; va: "ak.va"; vb: "ak.vb"; vc: "ak.vc"; vd: "ak.vd"; ve: "ak.ve"; vf: "ak.vf"; vg: "ak.vg"; vh: "ak.vh"; vi: "ak.vi"; vj: "ak.vj"; vk: "ak.vk"; vl: "ak.vl"; vm: "ak.vm"; vn: "ak.vn"; vo: "ak.vo"; vp: "ak.vp"; vq: "ak.vq"; vr: "ak.vr"; vs: "ak.vs"; vt: "ak.vt"; vu: "ak.vu"; vv: "ak.vv"; vw: "ak.vw"; vx: "ak.vx"; vy: "ak.vy"; vz: "ak.vz"; wa: "ak.wa"; wb: "ak.wb"; wc: "ak.wc"; wd: "ak.wd"; we: "ak.we"; wf: "ak.wf"; wg: "ak.wg"; wh: "ak.wh"; wi: "ak.wi"; wj: "ak.wj"; wk: "ak.wk"; wl: "ak.wl"; wm: "ak.wm"; wn: "ak.wn"; wo: "ak.wo"; wp: "ak.wp"; wq: "ak.wq"; wr: "ak.wr"; ws: "ak.ws"; wt: "ak.wt"; wu: "ak.wu"; wv: "ak.wv"; ww: "ak.ww"; wx: "ak.wx"; wy: "ak.wy"; wz: "ak.wz"; xa: "ak.xa"; xb: "ak.xb"; xc: "ak.xc"; xd: "ak.xd"; xe: "ak.xe"; xf: "ak.xf"; xg: "ak.xg"; xh: "ak.xh"; xi: "ak.xi"; xj: "ak.xj"; xk: "ak.xk"; xl: "ak.xl"; xm: "ak.xm"; xn: "ak.xn"; xo: "ak.xo"; xp: "ak.xp"; xq: "ak.xq"; xr: "ak.xr"; xs: "ak.xs"; xt: "ak.xt"; xu: "ak.xu"; xv: "ak.xv"; xw: "ak.xw"; xx: "ak.xx"; xy: "ak.xy"; xz: "ak.xz"; ya: "ak.ya"; yb: "ak.yb"; yc: "ak.yc"; yd: "ak.yd"; ye: "ak.ye"; yf: "ak.yf"; yg: "ak.yg"; yh: "ak.yh"; yi: "ak.yi"; yj: "ak.yj"; yk: "ak.yk"; yl: "ak.yl"; ym: "ak.ym"; yn: "ak.yn"; yo: "ak.yo"; yp: "ak.yp"; yq: "ak.yq"; yr: "ak.yr"; ys: "ak.ys"; yt: "ak.yt"; yu: "ak.yu"; yv: "ak.yv"; yw: "ak.yw"; yx: "ak.yx"; yy: "ak.yy"; yz: "ak.yz"; za: "ak.za"; zb: "ak.zb"; zc: "ak.zc"; zd: "ak.zd"; ze: "ak.ze"; zf: "ak.zf"; zg: "ak.zg"; zh: "ak.zh"; zi: "ak.zi"; zj: "ak.zj"; zk: "ak.zk"; zl: "ak.zl"; zm: "ak.zm"; zn: "ak.zn"; zo: "ak.zo"; zp: "ak.zp"; zq: "ak.zq"; zr: "ak.zr"; zs: "ak.zs"; zt: "ak.zt"; zu: "ak.zu"; zv: "ak.zv"; zw: "ak.zw"; zx: "ak.zx"; zy: "ak.zy"; zz: "ak.zz"; }; al: { aa: "al.aa"; ab: "al.ab"; ac: "al.ac"; ad: "al.ad"; ae: "al.ae"; af: "al.af"; ag: "al.ag"; ah: "al.ah"; ai: "al.ai"; aj: "al.aj"; ak: "al.ak"; al: "al.al"; am: "al.am"; an: "al.an"; ao: "al.ao"; ap: "al.ap"; aq: "al.aq"; ar: "al.ar"; as: "al.as"; at: "al.at"; au: "al.au"; av: "al.av"; aw: "al.aw"; ax: "al.ax"; ay: "al.ay"; az: "al.az"; ba: "al.ba"; bb: "al.bb"; bc: "al.bc"; bd: "al.bd"; be: "al.be"; bf: "al.bf"; bg: "al.bg"; bh: "al.bh"; bi: "al.bi"; bj: "al.bj"; bk: "al.bk"; bl: "al.bl"; bm: "al.bm"; bn: "al.bn"; bo: "al.bo"; bp: "al.bp"; bq: "al.bq"; br: "al.br"; bs: "al.bs"; bt: "al.bt"; bu: "al.bu"; bv: "al.bv"; bw: "al.bw"; bx: "al.bx"; by: "al.by"; bz: "al.bz"; ca: "al.ca"; cb: "al.cb"; cc: "al.cc"; cd: "al.cd"; ce: "al.ce"; cf: "al.cf"; cg: "al.cg"; ch: "al.ch"; ci: "al.ci"; cj: "al.cj"; ck: "al.ck"; cl: "al.cl"; cm: "al.cm"; cn: "al.cn"; co: "al.co"; cp: "al.cp"; cq: "al.cq"; cr: "al.cr"; cs: "al.cs"; ct: "al.ct"; cu: "al.cu"; cv: "al.cv"; cw: "al.cw"; cx: "al.cx"; cy: "al.cy"; cz: "al.cz"; da: "al.da"; db: "al.db"; dc: "al.dc"; dd: "al.dd"; de: "al.de"; df: "al.df"; dg: "al.dg"; dh: "al.dh"; di: "al.di"; dj: "al.dj"; dk: "al.dk"; dl: "al.dl"; dm: "al.dm"; dn: "al.dn"; do: "al.do"; dp: "al.dp"; dq: "al.dq"; dr: "al.dr"; ds: "al.ds"; dt: "al.dt"; du: "al.du"; dv: "al.dv"; dw: "al.dw"; dx: "al.dx"; dy: "al.dy"; dz: "al.dz"; ea: "al.ea"; eb: "al.eb"; ec: "al.ec"; ed: "al.ed"; ee: "al.ee"; ef: "al.ef"; eg: "al.eg"; eh: "al.eh"; ei: "al.ei"; ej: "al.ej"; ek: "al.ek"; el: "al.el"; em: "al.em"; en: "al.en"; eo: "al.eo"; ep: "al.ep"; eq: "al.eq"; er: "al.er"; es: "al.es"; et: "al.et"; eu: "al.eu"; ev: "al.ev"; ew: "al.ew"; ex: "al.ex"; ey: "al.ey"; ez: "al.ez"; fa: "al.fa"; fb: "al.fb"; fc: "al.fc"; fd: "al.fd"; fe: "al.fe"; ff: "al.ff"; fg: "al.fg"; fh: "al.fh"; fi: "al.fi"; fj: "al.fj"; fk: "al.fk"; fl: "al.fl"; fm: "al.fm"; fn: "al.fn"; fo: "al.fo"; fp: "al.fp"; fq: "al.fq"; fr: "al.fr"; fs: "al.fs"; ft: "al.ft"; fu: "al.fu"; fv: "al.fv"; fw: "al.fw"; fx: "al.fx"; fy: "al.fy"; fz: "al.fz"; ga: "al.ga"; gb: "al.gb"; gc: "al.gc"; gd: "al.gd"; ge: "al.ge"; gf: "al.gf"; gg: "al.gg"; gh: "al.gh"; gi: "al.gi"; gj: "al.gj"; gk: "al.gk"; gl: "al.gl"; gm: "al.gm"; gn: "al.gn"; go: "al.go"; gp: "al.gp"; gq: "al.gq"; gr: "al.gr"; gs: "al.gs"; gt: "al.gt"; gu: "al.gu"; gv: "al.gv"; gw: "al.gw"; gx: "al.gx"; gy: "al.gy"; gz: "al.gz"; ha: "al.ha"; hb: "al.hb"; hc: "al.hc"; hd: "al.hd"; he: "al.he"; hf: "al.hf"; hg: "al.hg"; hh: "al.hh"; hi: "al.hi"; hj: "al.hj"; hk: "al.hk"; hl: "al.hl"; hm: "al.hm"; hn: "al.hn"; ho: "al.ho"; hp: "al.hp"; hq: "al.hq"; hr: "al.hr"; hs: "al.hs"; ht: "al.ht"; hu: "al.hu"; hv: "al.hv"; hw: "al.hw"; hx: "al.hx"; hy: "al.hy"; hz: "al.hz"; ia: "al.ia"; ib: "al.ib"; ic: "al.ic"; id: "al.id"; ie: "al.ie"; if: "al.if"; ig: "al.ig"; ih: "al.ih"; ii: "al.ii"; ij: "al.ij"; ik: "al.ik"; il: "al.il"; im: "al.im"; in: "al.in"; io: "al.io"; ip: "al.ip"; iq: "al.iq"; ir: "al.ir"; is: "al.is"; it: "al.it"; iu: "al.iu"; iv: "al.iv"; iw: "al.iw"; ix: "al.ix"; iy: "al.iy"; iz: "al.iz"; ja: "al.ja"; jb: "al.jb"; jc: "al.jc"; jd: "al.jd"; je: "al.je"; jf: "al.jf"; jg: "al.jg"; jh: "al.jh"; ji: "al.ji"; jj: "al.jj"; jk: "al.jk"; jl: "al.jl"; jm: "al.jm"; jn: "al.jn"; jo: "al.jo"; jp: "al.jp"; jq: "al.jq"; jr: "al.jr"; js: "al.js"; jt: "al.jt"; ju: "al.ju"; jv: "al.jv"; jw: "al.jw"; jx: "al.jx"; jy: "al.jy"; jz: "al.jz"; ka: "al.ka"; kb: "al.kb"; kc: "al.kc"; kd: "al.kd"; ke: "al.ke"; kf: "al.kf"; kg: "al.kg"; kh: "al.kh"; ki: "al.ki"; kj: "al.kj"; kk: "al.kk"; kl: "al.kl"; km: "al.km"; kn: "al.kn"; ko: "al.ko"; kp: "al.kp"; kq: "al.kq"; kr: "al.kr"; ks: "al.ks"; kt: "al.kt"; ku: "al.ku"; kv: "al.kv"; kw: "al.kw"; kx: "al.kx"; ky: "al.ky"; kz: "al.kz"; la: "al.la"; lb: "al.lb"; lc: "al.lc"; ld: "al.ld"; le: "al.le"; lf: "al.lf"; lg: "al.lg"; lh: "al.lh"; li: "al.li"; lj: "al.lj"; lk: "al.lk"; ll: "al.ll"; lm: "al.lm"; ln: "al.ln"; lo: "al.lo"; lp: "al.lp"; lq: "al.lq"; lr: "al.lr"; ls: "al.ls"; lt: "al.lt"; lu: "al.lu"; lv: "al.lv"; lw: "al.lw"; lx: "al.lx"; ly: "al.ly"; lz: "al.lz"; ma: "al.ma"; mb: "al.mb"; mc: "al.mc"; md: "al.md"; me: "al.me"; mf: "al.mf"; mg: "al.mg"; mh: "al.mh"; mi: "al.mi"; mj: "al.mj"; mk: "al.mk"; ml: "al.ml"; mm: "al.mm"; mn: "al.mn"; mo: "al.mo"; mp: "al.mp"; mq: "al.mq"; mr: "al.mr"; ms: "al.ms"; mt: "al.mt"; mu: "al.mu"; mv: "al.mv"; mw: "al.mw"; mx: "al.mx"; my: "al.my"; mz: "al.mz"; na: "al.na"; nb: "al.nb"; nc: "al.nc"; nd: "al.nd"; ne: "al.ne"; nf: "al.nf"; ng: "al.ng"; nh: "al.nh"; ni: "al.ni"; nj: "al.nj"; nk: "al.nk"; nl: "al.nl"; nm: "al.nm"; nn: "al.nn"; no: "al.no"; np: "al.np"; nq: "al.nq"; nr: "al.nr"; ns: "al.ns"; nt: "al.nt"; nu: "al.nu"; nv: "al.nv"; nw: "al.nw"; nx: "al.nx"; ny: "al.ny"; nz: "al.nz"; oa: "al.oa"; ob: "al.ob"; oc: "al.oc"; od: "al.od"; oe: "al.oe"; of: "al.of"; og: "al.og"; oh: "al.oh"; oi: "al.oi"; oj: "al.oj"; ok: "al.ok"; ol: "al.ol"; om: "al.om"; on: "al.on"; oo: "al.oo"; op: "al.op"; oq: "al.oq"; or: "al.or"; os: "al.os"; ot: "al.ot"; ou: "al.ou"; ov: "al.ov"; ow: "al.ow"; ox: "al.ox"; oy: "al.oy"; oz: "al.oz"; pa: "al.pa"; pb: "al.pb"; pc: "al.pc"; pd: "al.pd"; pe: "al.pe"; pf: "al.pf"; pg: "al.pg"; ph: "al.ph"; pi: "al.pi"; pj: "al.pj"; pk: "al.pk"; pl: "al.pl"; pm: "al.pm"; pn: "al.pn"; po: "al.po"; pp: "al.pp"; pq: "al.pq"; pr: "al.pr"; ps: "al.ps"; pt: "al.pt"; pu: "al.pu"; pv: "al.pv"; pw: "al.pw"; px: "al.px"; py: "al.py"; pz: "al.pz"; qa: "al.qa"; qb: "al.qb"; qc: "al.qc"; qd: "al.qd"; qe: "al.qe"; qf: "al.qf"; qg: "al.qg"; qh: "al.qh"; qi: "al.qi"; qj: "al.qj"; qk: "al.qk"; ql: "al.ql"; qm: "al.qm"; qn: "al.qn"; qo: "al.qo"; qp: "al.qp"; qq: "al.qq"; qr: "al.qr"; qs: "al.qs"; qt: "al.qt"; qu: "al.qu"; qv: "al.qv"; qw: "al.qw"; qx: "al.qx"; qy: "al.qy"; qz: "al.qz"; ra: "al.ra"; rb: "al.rb"; rc: "al.rc"; rd: "al.rd"; re: "al.re"; rf: "al.rf"; rg: "al.rg"; rh: "al.rh"; ri: "al.ri"; rj: "al.rj"; rk: "al.rk"; rl: "al.rl"; rm: "al.rm"; rn: "al.rn"; ro: "al.ro"; rp: "al.rp"; rq: "al.rq"; rr: "al.rr"; rs: "al.rs"; rt: "al.rt"; ru: "al.ru"; rv: "al.rv"; rw: "al.rw"; rx: "al.rx"; ry: "al.ry"; rz: "al.rz"; sa: "al.sa"; sb: "al.sb"; sc: "al.sc"; sd: "al.sd"; se: "al.se"; sf: "al.sf"; sg: "al.sg"; sh: "al.sh"; si: "al.si"; sj: "al.sj"; sk: "al.sk"; sl: "al.sl"; sm: "al.sm"; sn: "al.sn"; so: "al.so"; sp: "al.sp"; sq: "al.sq"; sr: "al.sr"; ss: "al.ss"; st: "al.st"; su: "al.su"; sv: "al.sv"; sw: "al.sw"; sx: "al.sx"; sy: "al.sy"; sz: "al.sz"; ta: "al.ta"; tb: "al.tb"; tc: "al.tc"; td: "al.td"; te: "al.te"; tf: "al.tf"; tg: "al.tg"; th: "al.th"; ti: "al.ti"; tj: "al.tj"; tk: "al.tk"; tl: "al.tl"; tm: "al.tm"; tn: "al.tn"; to: "al.to"; tp: "al.tp"; tq: "al.tq"; tr: "al.tr"; ts: "al.ts"; tt: "al.tt"; tu: "al.tu"; tv: "al.tv"; tw: "al.tw"; tx: "al.tx"; ty: "al.ty"; tz: "al.tz"; ua: "al.ua"; ub: "al.ub"; uc: "al.uc"; ud: "al.ud"; ue: "al.ue"; uf: "al.uf"; ug: "al.ug"; uh: "al.uh"; ui: "al.ui"; uj: "al.uj"; uk: "al.uk"; ul: "al.ul"; um: "al.um"; un: "al.un"; uo: "al.uo"; up: "al.up"; uq: "al.uq"; ur: "al.ur"; us: "al.us"; ut: "al.ut"; uu: "al.uu"; uv: "al.uv"; uw: "al.uw"; ux: "al.ux"; uy: "al.uy"; uz: "al.uz"; va: "al.va"; vb: "al.vb"; vc: "al.vc"; vd: "al.vd"; ve: "al.ve"; vf: "al.vf"; vg: "al.vg"; vh: "al.vh"; vi: "al.vi"; vj: "al.vj"; vk: "al.vk"; vl: "al.vl"; vm: "al.vm"; vn: "al.vn"; vo: "al.vo"; vp: "al.vp"; vq: "al.vq"; vr: "al.vr"; vs: "al.vs"; vt: "al.vt"; vu: "al.vu"; vv: "al.vv"; vw: "al.vw"; vx: "al.vx"; vy: "al.vy"; vz: "al.vz"; wa: "al.wa"; wb: "al.wb"; wc: "al.wc"; wd: "al.wd"; we: "al.we"; wf: "al.wf"; wg: "al.wg"; wh: "al.wh"; wi: "al.wi"; wj: "al.wj"; wk: "al.wk"; wl: "al.wl"; wm: "al.wm"; wn: "al.wn"; wo: "al.wo"; wp: "al.wp"; wq: "al.wq"; wr: "al.wr"; ws: "al.ws"; wt: "al.wt"; wu: "al.wu"; wv: "al.wv"; ww: "al.ww"; wx: "al.wx"; wy: "al.wy"; wz: "al.wz"; xa: "al.xa"; xb: "al.xb"; xc: "al.xc"; xd: "al.xd"; xe: "al.xe"; xf: "al.xf"; xg: "al.xg"; xh: "al.xh"; xi: "al.xi"; xj: "al.xj"; xk: "al.xk"; xl: "al.xl"; xm: "al.xm"; xn: "al.xn"; xo: "al.xo"; xp: "al.xp"; xq: "al.xq"; xr: "al.xr"; xs: "al.xs"; xt: "al.xt"; xu: "al.xu"; xv: "al.xv"; xw: "al.xw"; xx: "al.xx"; xy: "al.xy"; xz: "al.xz"; ya: "al.ya"; yb: "al.yb"; yc: "al.yc"; yd: "al.yd"; ye: "al.ye"; yf: "al.yf"; yg: "al.yg"; yh: "al.yh"; yi: "al.yi"; yj: "al.yj"; yk: "al.yk"; yl: "al.yl"; ym: "al.ym"; yn: "al.yn"; yo: "al.yo"; yp: "al.yp"; yq: "al.yq"; yr: "al.yr"; ys: "al.ys"; yt: "al.yt"; yu: "al.yu"; yv: "al.yv"; yw: "al.yw"; yx: "al.yx"; yy: "al.yy"; yz: "al.yz"; za: "al.za"; zb: "al.zb"; zc: "al.zc"; zd: "al.zd"; ze: "al.ze"; zf: "al.zf"; zg: "al.zg"; zh: "al.zh"; zi: "al.zi"; zj: "al.zj"; zk: "al.zk"; zl: "al.zl"; zm: "al.zm"; zn: "al.zn"; zo: "al.zo"; zp: "al.zp"; zq: "al.zq"; zr: "al.zr"; zs: "al.zs"; zt: "al.zt"; zu: "al.zu"; zv: "al.zv"; zw: "al.zw"; zx: "al.zx"; zy: "al.zy"; zz: "al.zz"; }; am: { aa: "am.aa"; ab: "am.ab"; ac: "am.ac"; ad: "am.ad"; ae: "am.ae"; af: "am.af"; ag: "am.ag"; ah: "am.ah"; ai: "am.ai"; aj: "am.aj"; ak: "am.ak"; al: "am.al"; am: "am.am"; an: "am.an"; ao: "am.ao"; ap: "am.ap"; aq: "am.aq"; ar: "am.ar"; as: "am.as"; at: "am.at"; au: "am.au"; av: "am.av"; aw: "am.aw"; ax: "am.ax"; ay: "am.ay"; az: "am.az"; ba: "am.ba"; bb: "am.bb"; bc: "am.bc"; bd: "am.bd"; be: "am.be"; bf: "am.bf"; bg: "am.bg"; bh: "am.bh"; bi: "am.bi"; bj: "am.bj"; bk: "am.bk"; bl: "am.bl"; bm: "am.bm"; bn: "am.bn"; bo: "am.bo"; bp: "am.bp"; bq: "am.bq"; br: "am.br"; bs: "am.bs"; bt: "am.bt"; bu: "am.bu"; bv: "am.bv"; bw: "am.bw"; bx: "am.bx"; by: "am.by"; bz: "am.bz"; ca: "am.ca"; cb: "am.cb"; cc: "am.cc"; cd: "am.cd"; ce: "am.ce"; cf: "am.cf"; cg: "am.cg"; ch: "am.ch"; ci: "am.ci"; cj: "am.cj"; ck: "am.ck"; cl: "am.cl"; cm: "am.cm"; cn: "am.cn"; co: "am.co"; cp: "am.cp"; cq: "am.cq"; cr: "am.cr"; cs: "am.cs"; ct: "am.ct"; cu: "am.cu"; cv: "am.cv"; cw: "am.cw"; cx: "am.cx"; cy: "am.cy"; cz: "am.cz"; da: "am.da"; db: "am.db"; dc: "am.dc"; dd: "am.dd"; de: "am.de"; df: "am.df"; dg: "am.dg"; dh: "am.dh"; di: "am.di"; dj: "am.dj"; dk: "am.dk"; dl: "am.dl"; dm: "am.dm"; dn: "am.dn"; do: "am.do"; dp: "am.dp"; dq: "am.dq"; dr: "am.dr"; ds: "am.ds"; dt: "am.dt"; du: "am.du"; dv: "am.dv"; dw: "am.dw"; dx: "am.dx"; dy: "am.dy"; dz: "am.dz"; ea: "am.ea"; eb: "am.eb"; ec: "am.ec"; ed: "am.ed"; ee: "am.ee"; ef: "am.ef"; eg: "am.eg"; eh: "am.eh"; ei: "am.ei"; ej: "am.ej"; ek: "am.ek"; el: "am.el"; em: "am.em"; en: "am.en"; eo: "am.eo"; ep: "am.ep"; eq: "am.eq"; er: "am.er"; es: "am.es"; et: "am.et"; eu: "am.eu"; ev: "am.ev"; ew: "am.ew"; ex: "am.ex"; ey: "am.ey"; ez: "am.ez"; fa: "am.fa"; fb: "am.fb"; fc: "am.fc"; fd: "am.fd"; fe: "am.fe"; ff: "am.ff"; fg: "am.fg"; fh: "am.fh"; fi: "am.fi"; fj: "am.fj"; fk: "am.fk"; fl: "am.fl"; fm: "am.fm"; fn: "am.fn"; fo: "am.fo"; fp: "am.fp"; fq: "am.fq"; fr: "am.fr"; fs: "am.fs"; ft: "am.ft"; fu: "am.fu"; fv: "am.fv"; fw: "am.fw"; fx: "am.fx"; fy: "am.fy"; fz: "am.fz"; ga: "am.ga"; gb: "am.gb"; gc: "am.gc"; gd: "am.gd"; ge: "am.ge"; gf: "am.gf"; gg: "am.gg"; gh: "am.gh"; gi: "am.gi"; gj: "am.gj"; gk: "am.gk"; gl: "am.gl"; gm: "am.gm"; gn: "am.gn"; go: "am.go"; gp: "am.gp"; gq: "am.gq"; gr: "am.gr"; gs: "am.gs"; gt: "am.gt"; gu: "am.gu"; gv: "am.gv"; gw: "am.gw"; gx: "am.gx"; gy: "am.gy"; gz: "am.gz"; ha: "am.ha"; hb: "am.hb"; hc: "am.hc"; hd: "am.hd"; he: "am.he"; hf: "am.hf"; hg: "am.hg"; hh: "am.hh"; hi: "am.hi"; hj: "am.hj"; hk: "am.hk"; hl: "am.hl"; hm: "am.hm"; hn: "am.hn"; ho: "am.ho"; hp: "am.hp"; hq: "am.hq"; hr: "am.hr"; hs: "am.hs"; ht: "am.ht"; hu: "am.hu"; hv: "am.hv"; hw: "am.hw"; hx: "am.hx"; hy: "am.hy"; hz: "am.hz"; ia: "am.ia"; ib: "am.ib"; ic: "am.ic"; id: "am.id"; ie: "am.ie"; if: "am.if"; ig: "am.ig"; ih: "am.ih"; ii: "am.ii"; ij: "am.ij"; ik: "am.ik"; il: "am.il"; im: "am.im"; in: "am.in"; io: "am.io"; ip: "am.ip"; iq: "am.iq"; ir: "am.ir"; is: "am.is"; it: "am.it"; iu: "am.iu"; iv: "am.iv"; iw: "am.iw"; ix: "am.ix"; iy: "am.iy"; iz: "am.iz"; ja: "am.ja"; jb: "am.jb"; jc: "am.jc"; jd: "am.jd"; je: "am.je"; jf: "am.jf"; jg: "am.jg"; jh: "am.jh"; ji: "am.ji"; jj: "am.jj"; jk: "am.jk"; jl: "am.jl"; jm: "am.jm"; jn: "am.jn"; jo: "am.jo"; jp: "am.jp"; jq: "am.jq"; jr: "am.jr"; js: "am.js"; jt: "am.jt"; ju: "am.ju"; jv: "am.jv"; jw: "am.jw"; jx: "am.jx"; jy: "am.jy"; jz: "am.jz"; ka: "am.ka"; kb: "am.kb"; kc: "am.kc"; kd: "am.kd"; ke: "am.ke"; kf: "am.kf"; kg: "am.kg"; kh: "am.kh"; ki: "am.ki"; kj: "am.kj"; kk: "am.kk"; kl: "am.kl"; km: "am.km"; kn: "am.kn"; ko: "am.ko"; kp: "am.kp"; kq: "am.kq"; kr: "am.kr"; ks: "am.ks"; kt: "am.kt"; ku: "am.ku"; kv: "am.kv"; kw: "am.kw"; kx: "am.kx"; ky: "am.ky"; kz: "am.kz"; la: "am.la"; lb: "am.lb"; lc: "am.lc"; ld: "am.ld"; le: "am.le"; lf: "am.lf"; lg: "am.lg"; lh: "am.lh"; li: "am.li"; lj: "am.lj"; lk: "am.lk"; ll: "am.ll"; lm: "am.lm"; ln: "am.ln"; lo: "am.lo"; lp: "am.lp"; lq: "am.lq"; lr: "am.lr"; ls: "am.ls"; lt: "am.lt"; lu: "am.lu"; lv: "am.lv"; lw: "am.lw"; lx: "am.lx"; ly: "am.ly"; lz: "am.lz"; ma: "am.ma"; mb: "am.mb"; mc: "am.mc"; md: "am.md"; me: "am.me"; mf: "am.mf"; mg: "am.mg"; mh: "am.mh"; mi: "am.mi"; mj: "am.mj"; mk: "am.mk"; ml: "am.ml"; mm: "am.mm"; mn: "am.mn"; mo: "am.mo"; mp: "am.mp"; mq: "am.mq"; mr: "am.mr"; ms: "am.ms"; mt: "am.mt"; mu: "am.mu"; mv: "am.mv"; mw: "am.mw"; mx: "am.mx"; my: "am.my"; mz: "am.mz"; na: "am.na"; nb: "am.nb"; nc: "am.nc"; nd: "am.nd"; ne: "am.ne"; nf: "am.nf"; ng: "am.ng"; nh: "am.nh"; ni: "am.ni"; nj: "am.nj"; nk: "am.nk"; nl: "am.nl"; nm: "am.nm"; nn: "am.nn"; no: "am.no"; np: "am.np"; nq: "am.nq"; nr: "am.nr"; ns: "am.ns"; nt: "am.nt"; nu: "am.nu"; nv: "am.nv"; nw: "am.nw"; nx: "am.nx"; ny: "am.ny"; nz: "am.nz"; oa: "am.oa"; ob: "am.ob"; oc: "am.oc"; od: "am.od"; oe: "am.oe"; of: "am.of"; og: "am.og"; oh: "am.oh"; oi: "am.oi"; oj: "am.oj"; ok: "am.ok"; ol: "am.ol"; om: "am.om"; on: "am.on"; oo: "am.oo"; op: "am.op"; oq: "am.oq"; or: "am.or"; os: "am.os"; ot: "am.ot"; ou: "am.ou"; ov: "am.ov"; ow: "am.ow"; ox: "am.ox"; oy: "am.oy"; oz: "am.oz"; pa: "am.pa"; pb: "am.pb"; pc: "am.pc"; pd: "am.pd"; pe: "am.pe"; pf: "am.pf"; pg: "am.pg"; ph: "am.ph"; pi: "am.pi"; pj: "am.pj"; pk: "am.pk"; pl: "am.pl"; pm: "am.pm"; pn: "am.pn"; po: "am.po"; pp: "am.pp"; pq: "am.pq"; pr: "am.pr"; ps: "am.ps"; pt: "am.pt"; pu: "am.pu"; pv: "am.pv"; pw: "am.pw"; px: "am.px"; py: "am.py"; pz: "am.pz"; qa: "am.qa"; qb: "am.qb"; qc: "am.qc"; qd: "am.qd"; qe: "am.qe"; qf: "am.qf"; qg: "am.qg"; qh: "am.qh"; qi: "am.qi"; qj: "am.qj"; qk: "am.qk"; ql: "am.ql"; qm: "am.qm"; qn: "am.qn"; qo: "am.qo"; qp: "am.qp"; qq: "am.qq"; qr: "am.qr"; qs: "am.qs"; qt: "am.qt"; qu: "am.qu"; qv: "am.qv"; qw: "am.qw"; qx: "am.qx"; qy: "am.qy"; qz: "am.qz"; ra: "am.ra"; rb: "am.rb"; rc: "am.rc"; rd: "am.rd"; re: "am.re"; rf: "am.rf"; rg: "am.rg"; rh: "am.rh"; ri: "am.ri"; rj: "am.rj"; rk: "am.rk"; rl: "am.rl"; rm: "am.rm"; rn: "am.rn"; ro: "am.ro"; rp: "am.rp"; rq: "am.rq"; rr: "am.rr"; rs: "am.rs"; rt: "am.rt"; ru: "am.ru"; rv: "am.rv"; rw: "am.rw"; rx: "am.rx"; ry: "am.ry"; rz: "am.rz"; sa: "am.sa"; sb: "am.sb"; sc: "am.sc"; sd: "am.sd"; se: "am.se"; sf: "am.sf"; sg: "am.sg"; sh: "am.sh"; si: "am.si"; sj: "am.sj"; sk: "am.sk"; sl: "am.sl"; sm: "am.sm"; sn: "am.sn"; so: "am.so"; sp: "am.sp"; sq: "am.sq"; sr: "am.sr"; ss: "am.ss"; st: "am.st"; su: "am.su"; sv: "am.sv"; sw: "am.sw"; sx: "am.sx"; sy: "am.sy"; sz: "am.sz"; ta: "am.ta"; tb: "am.tb"; tc: "am.tc"; td: "am.td"; te: "am.te"; tf: "am.tf"; tg: "am.tg"; th: "am.th"; ti: "am.ti"; tj: "am.tj"; tk: "am.tk"; tl: "am.tl"; tm: "am.tm"; tn: "am.tn"; to: "am.to"; tp: "am.tp"; tq: "am.tq"; tr: "am.tr"; ts: "am.ts"; tt: "am.tt"; tu: "am.tu"; tv: "am.tv"; tw: "am.tw"; tx: "am.tx"; ty: "am.ty"; tz: "am.tz"; ua: "am.ua"; ub: "am.ub"; uc: "am.uc"; ud: "am.ud"; ue: "am.ue"; uf: "am.uf"; ug: "am.ug"; uh: "am.uh"; ui: "am.ui"; uj: "am.uj"; uk: "am.uk"; ul: "am.ul"; um: "am.um"; un: "am.un"; uo: "am.uo"; up: "am.up"; uq: "am.uq"; ur: "am.ur"; us: "am.us"; ut: "am.ut"; uu: "am.uu"; uv: "am.uv"; uw: "am.uw"; ux: "am.ux"; uy: "am.uy"; uz: "am.uz"; va: "am.va"; vb: "am.vb"; vc: "am.vc"; vd: "am.vd"; ve: "am.ve"; vf: "am.vf"; vg: "am.vg"; vh: "am.vh"; vi: "am.vi"; vj: "am.vj"; vk: "am.vk"; vl: "am.vl"; vm: "am.vm"; vn: "am.vn"; vo: "am.vo"; vp: "am.vp"; vq: "am.vq"; vr: "am.vr"; vs: "am.vs"; vt: "am.vt"; vu: "am.vu"; vv: "am.vv"; vw: "am.vw"; vx: "am.vx"; vy: "am.vy"; vz: "am.vz"; wa: "am.wa"; wb: "am.wb"; wc: "am.wc"; wd: "am.wd"; we: "am.we"; wf: "am.wf"; wg: "am.wg"; wh: "am.wh"; wi: "am.wi"; wj: "am.wj"; wk: "am.wk"; wl: "am.wl"; wm: "am.wm"; wn: "am.wn"; wo: "am.wo"; wp: "am.wp"; wq: "am.wq"; wr: "am.wr"; ws: "am.ws"; wt: "am.wt"; wu: "am.wu"; wv: "am.wv"; ww: "am.ww"; wx: "am.wx"; wy: "am.wy"; wz: "am.wz"; xa: "am.xa"; xb: "am.xb"; xc: "am.xc"; xd: "am.xd"; xe: "am.xe"; xf: "am.xf"; xg: "am.xg"; xh: "am.xh"; xi: "am.xi"; xj: "am.xj"; xk: "am.xk"; xl: "am.xl"; xm: "am.xm"; xn: "am.xn"; xo: "am.xo"; xp: "am.xp"; xq: "am.xq"; xr: "am.xr"; xs: "am.xs"; xt: "am.xt"; xu: "am.xu"; xv: "am.xv"; xw: "am.xw"; xx: "am.xx"; xy: "am.xy"; xz: "am.xz"; ya: "am.ya"; yb: "am.yb"; yc: "am.yc"; yd: "am.yd"; ye: "am.ye"; yf: "am.yf"; yg: "am.yg"; yh: "am.yh"; yi: "am.yi"; yj: "am.yj"; yk: "am.yk"; yl: "am.yl"; ym: "am.ym"; yn: "am.yn"; yo: "am.yo"; yp: "am.yp"; yq: "am.yq"; yr: "am.yr"; ys: "am.ys"; yt: "am.yt"; yu: "am.yu"; yv: "am.yv"; yw: "am.yw"; yx: "am.yx"; yy: "am.yy"; yz: "am.yz"; za: "am.za"; zb: "am.zb"; zc: "am.zc"; zd: "am.zd"; ze: "am.ze"; zf: "am.zf"; zg: "am.zg"; zh: "am.zh"; zi: "am.zi"; zj: "am.zj"; zk: "am.zk"; zl: "am.zl"; zm: "am.zm"; zn: "am.zn"; zo: "am.zo"; zp: "am.zp"; zq: "am.zq"; zr: "am.zr"; zs: "am.zs"; zt: "am.zt"; zu: "am.zu"; zv: "am.zv"; zw: "am.zw"; zx: "am.zx"; zy: "am.zy"; zz: "am.zz"; }; an: { aa: "an.aa"; ab: "an.ab"; ac: "an.ac"; ad: "an.ad"; ae: "an.ae"; af: "an.af"; ag: "an.ag"; ah: "an.ah"; ai: "an.ai"; aj: "an.aj"; ak: "an.ak"; al: "an.al"; am: "an.am"; an: "an.an"; ao: "an.ao"; ap: "an.ap"; aq: "an.aq"; ar: "an.ar"; as: "an.as"; at: "an.at"; au: "an.au"; av: "an.av"; aw: "an.aw"; ax: "an.ax"; ay: "an.ay"; az: "an.az"; ba: "an.ba"; bb: "an.bb"; bc: "an.bc"; bd: "an.bd"; be: "an.be"; bf: "an.bf"; bg: "an.bg"; bh: "an.bh"; bi: "an.bi"; bj: "an.bj"; bk: "an.bk"; bl: "an.bl"; bm: "an.bm"; bn: "an.bn"; bo: "an.bo"; bp: "an.bp"; bq: "an.bq"; br: "an.br"; bs: "an.bs"; bt: "an.bt"; bu: "an.bu"; bv: "an.bv"; bw: "an.bw"; bx: "an.bx"; by: "an.by"; bz: "an.bz"; ca: "an.ca"; cb: "an.cb"; cc: "an.cc"; cd: "an.cd"; ce: "an.ce"; cf: "an.cf"; cg: "an.cg"; ch: "an.ch"; ci: "an.ci"; cj: "an.cj"; ck: "an.ck"; cl: "an.cl"; cm: "an.cm"; cn: "an.cn"; co: "an.co"; cp: "an.cp"; cq: "an.cq"; cr: "an.cr"; cs: "an.cs"; ct: "an.ct"; cu: "an.cu"; cv: "an.cv"; cw: "an.cw"; cx: "an.cx"; cy: "an.cy"; cz: "an.cz"; da: "an.da"; db: "an.db"; dc: "an.dc"; dd: "an.dd"; de: "an.de"; df: "an.df"; dg: "an.dg"; dh: "an.dh"; di: "an.di"; dj: "an.dj"; dk: "an.dk"; dl: "an.dl"; dm: "an.dm"; dn: "an.dn"; do: "an.do"; dp: "an.dp"; dq: "an.dq"; dr: "an.dr"; ds: "an.ds"; dt: "an.dt"; du: "an.du"; dv: "an.dv"; dw: "an.dw"; dx: "an.dx"; dy: "an.dy"; dz: "an.dz"; ea: "an.ea"; eb: "an.eb"; ec: "an.ec"; ed: "an.ed"; ee: "an.ee"; ef: "an.ef"; eg: "an.eg"; eh: "an.eh"; ei: "an.ei"; ej: "an.ej"; ek: "an.ek"; el: "an.el"; em: "an.em"; en: "an.en"; eo: "an.eo"; ep: "an.ep"; eq: "an.eq"; er: "an.er"; es: "an.es"; et: "an.et"; eu: "an.eu"; ev: "an.ev"; ew: "an.ew"; ex: "an.ex"; ey: "an.ey"; ez: "an.ez"; fa: "an.fa"; fb: "an.fb"; fc: "an.fc"; fd: "an.fd"; fe: "an.fe"; ff: "an.ff"; fg: "an.fg"; fh: "an.fh"; fi: "an.fi"; fj: "an.fj"; fk: "an.fk"; fl: "an.fl"; fm: "an.fm"; fn: "an.fn"; fo: "an.fo"; fp: "an.fp"; fq: "an.fq"; fr: "an.fr"; fs: "an.fs"; ft: "an.ft"; fu: "an.fu"; fv: "an.fv"; fw: "an.fw"; fx: "an.fx"; fy: "an.fy"; fz: "an.fz"; ga: "an.ga"; gb: "an.gb"; gc: "an.gc"; gd: "an.gd"; ge: "an.ge"; gf: "an.gf"; gg: "an.gg"; gh: "an.gh"; gi: "an.gi"; gj: "an.gj"; gk: "an.gk"; gl: "an.gl"; gm: "an.gm"; gn: "an.gn"; go: "an.go"; gp: "an.gp"; gq: "an.gq"; gr: "an.gr"; gs: "an.gs"; gt: "an.gt"; gu: "an.gu"; gv: "an.gv"; gw: "an.gw"; gx: "an.gx"; gy: "an.gy"; gz: "an.gz"; ha: "an.ha"; hb: "an.hb"; hc: "an.hc"; hd: "an.hd"; he: "an.he"; hf: "an.hf"; hg: "an.hg"; hh: "an.hh"; hi: "an.hi"; hj: "an.hj"; hk: "an.hk"; hl: "an.hl"; hm: "an.hm"; hn: "an.hn"; ho: "an.ho"; hp: "an.hp"; hq: "an.hq"; hr: "an.hr"; hs: "an.hs"; ht: "an.ht"; hu: "an.hu"; hv: "an.hv"; hw: "an.hw"; hx: "an.hx"; hy: "an.hy"; hz: "an.hz"; ia: "an.ia"; ib: "an.ib"; ic: "an.ic"; id: "an.id"; ie: "an.ie"; if: "an.if"; ig: "an.ig"; ih: "an.ih"; ii: "an.ii"; ij: "an.ij"; ik: "an.ik"; il: "an.il"; im: "an.im"; in: "an.in"; io: "an.io"; ip: "an.ip"; iq: "an.iq"; ir: "an.ir"; is: "an.is"; it: "an.it"; iu: "an.iu"; iv: "an.iv"; iw: "an.iw"; ix: "an.ix"; iy: "an.iy"; iz: "an.iz"; ja: "an.ja"; jb: "an.jb"; jc: "an.jc"; jd: "an.jd"; je: "an.je"; jf: "an.jf"; jg: "an.jg"; jh: "an.jh"; ji: "an.ji"; jj: "an.jj"; jk: "an.jk"; jl: "an.jl"; jm: "an.jm"; jn: "an.jn"; jo: "an.jo"; jp: "an.jp"; jq: "an.jq"; jr: "an.jr"; js: "an.js"; jt: "an.jt"; ju: "an.ju"; jv: "an.jv"; jw: "an.jw"; jx: "an.jx"; jy: "an.jy"; jz: "an.jz"; ka: "an.ka"; kb: "an.kb"; kc: "an.kc"; kd: "an.kd"; ke: "an.ke"; kf: "an.kf"; kg: "an.kg"; kh: "an.kh"; ki: "an.ki"; kj: "an.kj"; kk: "an.kk"; kl: "an.kl"; km: "an.km"; kn: "an.kn"; ko: "an.ko"; kp: "an.kp"; kq: "an.kq"; kr: "an.kr"; ks: "an.ks"; kt: "an.kt"; ku: "an.ku"; kv: "an.kv"; kw: "an.kw"; kx: "an.kx"; ky: "an.ky"; kz: "an.kz"; la: "an.la"; lb: "an.lb"; lc: "an.lc"; ld: "an.ld"; le: "an.le"; lf: "an.lf"; lg: "an.lg"; lh: "an.lh"; li: "an.li"; lj: "an.lj"; lk: "an.lk"; ll: "an.ll"; lm: "an.lm"; ln: "an.ln"; lo: "an.lo"; lp: "an.lp"; lq: "an.lq"; lr: "an.lr"; ls: "an.ls"; lt: "an.lt"; lu: "an.lu"; lv: "an.lv"; lw: "an.lw"; lx: "an.lx"; ly: "an.ly"; lz: "an.lz"; ma: "an.ma"; mb: "an.mb"; mc: "an.mc"; md: "an.md"; me: "an.me"; mf: "an.mf"; mg: "an.mg"; mh: "an.mh"; mi: "an.mi"; mj: "an.mj"; mk: "an.mk"; ml: "an.ml"; mm: "an.mm"; mn: "an.mn"; mo: "an.mo"; mp: "an.mp"; mq: "an.mq"; mr: "an.mr"; ms: "an.ms"; mt: "an.mt"; mu: "an.mu"; mv: "an.mv"; mw: "an.mw"; mx: "an.mx"; my: "an.my"; mz: "an.mz"; na: "an.na"; nb: "an.nb"; nc: "an.nc"; nd: "an.nd"; ne: "an.ne"; nf: "an.nf"; ng: "an.ng"; nh: "an.nh"; ni: "an.ni"; nj: "an.nj"; nk: "an.nk"; nl: "an.nl"; nm: "an.nm"; nn: "an.nn"; no: "an.no"; np: "an.np"; nq: "an.nq"; nr: "an.nr"; ns: "an.ns"; nt: "an.nt"; nu: "an.nu"; nv: "an.nv"; nw: "an.nw"; nx: "an.nx"; ny: "an.ny"; nz: "an.nz"; oa: "an.oa"; ob: "an.ob"; oc: "an.oc"; od: "an.od"; oe: "an.oe"; of: "an.of"; og: "an.og"; oh: "an.oh"; oi: "an.oi"; oj: "an.oj"; ok: "an.ok"; ol: "an.ol"; om: "an.om"; on: "an.on"; oo: "an.oo"; op: "an.op"; oq: "an.oq"; or: "an.or"; os: "an.os"; ot: "an.ot"; ou: "an.ou"; ov: "an.ov"; ow: "an.ow"; ox: "an.ox"; oy: "an.oy"; oz: "an.oz"; pa: "an.pa"; pb: "an.pb"; pc: "an.pc"; pd: "an.pd"; pe: "an.pe"; pf: "an.pf"; pg: "an.pg"; ph: "an.ph"; pi: "an.pi"; pj: "an.pj"; pk: "an.pk"; pl: "an.pl"; pm: "an.pm"; pn: "an.pn"; po: "an.po"; pp: "an.pp"; pq: "an.pq"; pr: "an.pr"; ps: "an.ps"; pt: "an.pt"; pu: "an.pu"; pv: "an.pv"; pw: "an.pw"; px: "an.px"; py: "an.py"; pz: "an.pz"; qa: "an.qa"; qb: "an.qb"; qc: "an.qc"; qd: "an.qd"; qe: "an.qe"; qf: "an.qf"; qg: "an.qg"; qh: "an.qh"; qi: "an.qi"; qj: "an.qj"; qk: "an.qk"; ql: "an.ql"; qm: "an.qm"; qn: "an.qn"; qo: "an.qo"; qp: "an.qp"; qq: "an.qq"; qr: "an.qr"; qs: "an.qs"; qt: "an.qt"; qu: "an.qu"; qv: "an.qv"; qw: "an.qw"; qx: "an.qx"; qy: "an.qy"; qz: "an.qz"; ra: "an.ra"; rb: "an.rb"; rc: "an.rc"; rd: "an.rd"; re: "an.re"; rf: "an.rf"; rg: "an.rg"; rh: "an.rh"; ri: "an.ri"; rj: "an.rj"; rk: "an.rk"; rl: "an.rl"; rm: "an.rm"; rn: "an.rn"; ro: "an.ro"; rp: "an.rp"; rq: "an.rq"; rr: "an.rr"; rs: "an.rs"; rt: "an.rt"; ru: "an.ru"; rv: "an.rv"; rw: "an.rw"; rx: "an.rx"; ry: "an.ry"; rz: "an.rz"; sa: "an.sa"; sb: "an.sb"; sc: "an.sc"; sd: "an.sd"; se: "an.se"; sf: "an.sf"; sg: "an.sg"; sh: "an.sh"; si: "an.si"; sj: "an.sj"; sk: "an.sk"; sl: "an.sl"; sm: "an.sm"; sn: "an.sn"; so: "an.so"; sp: "an.sp"; sq: "an.sq"; sr: "an.sr"; ss: "an.ss"; st: "an.st"; su: "an.su"; sv: "an.sv"; sw: "an.sw"; sx: "an.sx"; sy: "an.sy"; sz: "an.sz"; ta: "an.ta"; tb: "an.tb"; tc: "an.tc"; td: "an.td"; te: "an.te"; tf: "an.tf"; tg: "an.tg"; th: "an.th"; ti: "an.ti"; tj: "an.tj"; tk: "an.tk"; tl: "an.tl"; tm: "an.tm"; tn: "an.tn"; to: "an.to"; tp: "an.tp"; tq: "an.tq"; tr: "an.tr"; ts: "an.ts"; tt: "an.tt"; tu: "an.tu"; tv: "an.tv"; tw: "an.tw"; tx: "an.tx"; ty: "an.ty"; tz: "an.tz"; ua: "an.ua"; ub: "an.ub"; uc: "an.uc"; ud: "an.ud"; ue: "an.ue"; uf: "an.uf"; ug: "an.ug"; uh: "an.uh"; ui: "an.ui"; uj: "an.uj"; uk: "an.uk"; ul: "an.ul"; um: "an.um"; un: "an.un"; uo: "an.uo"; up: "an.up"; uq: "an.uq"; ur: "an.ur"; us: "an.us"; ut: "an.ut"; uu: "an.uu"; uv: "an.uv"; uw: "an.uw"; ux: "an.ux"; uy: "an.uy"; uz: "an.uz"; va: "an.va"; vb: "an.vb"; vc: "an.vc"; vd: "an.vd"; ve: "an.ve"; vf: "an.vf"; vg: "an.vg"; vh: "an.vh"; vi: "an.vi"; vj: "an.vj"; vk: "an.vk"; vl: "an.vl"; vm: "an.vm"; vn: "an.vn"; vo: "an.vo"; vp: "an.vp"; vq: "an.vq"; vr: "an.vr"; vs: "an.vs"; vt: "an.vt"; vu: "an.vu"; vv: "an.vv"; vw: "an.vw"; vx: "an.vx"; vy: "an.vy"; vz: "an.vz"; wa: "an.wa"; wb: "an.wb"; wc: "an.wc"; wd: "an.wd"; we: "an.we"; wf: "an.wf"; wg: "an.wg"; wh: "an.wh"; wi: "an.wi"; wj: "an.wj"; wk: "an.wk"; wl: "an.wl"; wm: "an.wm"; wn: "an.wn"; wo: "an.wo"; wp: "an.wp"; wq: "an.wq"; wr: "an.wr"; ws: "an.ws"; wt: "an.wt"; wu: "an.wu"; wv: "an.wv"; ww: "an.ww"; wx: "an.wx"; wy: "an.wy"; wz: "an.wz"; xa: "an.xa"; xb: "an.xb"; xc: "an.xc"; xd: "an.xd"; xe: "an.xe"; xf: "an.xf"; xg: "an.xg"; xh: "an.xh"; xi: "an.xi"; xj: "an.xj"; xk: "an.xk"; xl: "an.xl"; xm: "an.xm"; xn: "an.xn"; xo: "an.xo"; xp: "an.xp"; xq: "an.xq"; xr: "an.xr"; xs: "an.xs"; xt: "an.xt"; xu: "an.xu"; xv: "an.xv"; xw: "an.xw"; xx: "an.xx"; xy: "an.xy"; xz: "an.xz"; ya: "an.ya"; yb: "an.yb"; yc: "an.yc"; yd: "an.yd"; ye: "an.ye"; yf: "an.yf"; yg: "an.yg"; yh: "an.yh"; yi: "an.yi"; yj: "an.yj"; yk: "an.yk"; yl: "an.yl"; ym: "an.ym"; yn: "an.yn"; yo: "an.yo"; yp: "an.yp"; yq: "an.yq"; yr: "an.yr"; ys: "an.ys"; yt: "an.yt"; yu: "an.yu"; yv: "an.yv"; yw: "an.yw"; yx: "an.yx"; yy: "an.yy"; yz: "an.yz"; za: "an.za"; zb: "an.zb"; zc: "an.zc"; zd: "an.zd"; ze: "an.ze"; zf: "an.zf"; zg: "an.zg"; zh: "an.zh"; zi: "an.zi"; zj: "an.zj"; zk: "an.zk"; zl: "an.zl"; zm: "an.zm"; zn: "an.zn"; zo: "an.zo"; zp: "an.zp"; zq: "an.zq"; zr: "an.zr"; zs: "an.zs"; zt: "an.zt"; zu: "an.zu"; zv: "an.zv"; zw: "an.zw"; zx: "an.zx"; zy: "an.zy"; zz: "an.zz"; }; ao: { aa: "ao.aa"; ab: "ao.ab"; ac: "ao.ac"; ad: "ao.ad"; ae: "ao.ae"; af: "ao.af"; ag: "ao.ag"; ah: "ao.ah"; ai: "ao.ai"; aj: "ao.aj"; ak: "ao.ak"; al: "ao.al"; am: "ao.am"; an: "ao.an"; ao: "ao.ao"; ap: "ao.ap"; aq: "ao.aq"; ar: "ao.ar"; as: "ao.as"; at: "ao.at"; au: "ao.au"; av: "ao.av"; aw: "ao.aw"; ax: "ao.ax"; ay: "ao.ay"; az: "ao.az"; ba: "ao.ba"; bb: "ao.bb"; bc: "ao.bc"; bd: "ao.bd"; be: "ao.be"; bf: "ao.bf"; bg: "ao.bg"; bh: "ao.bh"; bi: "ao.bi"; bj: "ao.bj"; bk: "ao.bk"; bl: "ao.bl"; bm: "ao.bm"; bn: "ao.bn"; bo: "ao.bo"; bp: "ao.bp"; bq: "ao.bq"; br: "ao.br"; bs: "ao.bs"; bt: "ao.bt"; bu: "ao.bu"; bv: "ao.bv"; bw: "ao.bw"; bx: "ao.bx"; by: "ao.by"; bz: "ao.bz"; ca: "ao.ca"; cb: "ao.cb"; cc: "ao.cc"; cd: "ao.cd"; ce: "ao.ce"; cf: "ao.cf"; cg: "ao.cg"; ch: "ao.ch"; ci: "ao.ci"; cj: "ao.cj"; ck: "ao.ck"; cl: "ao.cl"; cm: "ao.cm"; cn: "ao.cn"; co: "ao.co"; cp: "ao.cp"; cq: "ao.cq"; cr: "ao.cr"; cs: "ao.cs"; ct: "ao.ct"; cu: "ao.cu"; cv: "ao.cv"; cw: "ao.cw"; cx: "ao.cx"; cy: "ao.cy"; cz: "ao.cz"; da: "ao.da"; db: "ao.db"; dc: "ao.dc"; dd: "ao.dd"; de: "ao.de"; df: "ao.df"; dg: "ao.dg"; dh: "ao.dh"; di: "ao.di"; dj: "ao.dj"; dk: "ao.dk"; dl: "ao.dl"; dm: "ao.dm"; dn: "ao.dn"; do: "ao.do"; dp: "ao.dp"; dq: "ao.dq"; dr: "ao.dr"; ds: "ao.ds"; dt: "ao.dt"; du: "ao.du"; dv: "ao.dv"; dw: "ao.dw"; dx: "ao.dx"; dy: "ao.dy"; dz: "ao.dz"; ea: "ao.ea"; eb: "ao.eb"; ec: "ao.ec"; ed: "ao.ed"; ee: "ao.ee"; ef: "ao.ef"; eg: "ao.eg"; eh: "ao.eh"; ei: "ao.ei"; ej: "ao.ej"; ek: "ao.ek"; el: "ao.el"; em: "ao.em"; en: "ao.en"; eo: "ao.eo"; ep: "ao.ep"; eq: "ao.eq"; er: "ao.er"; es: "ao.es"; et: "ao.et"; eu: "ao.eu"; ev: "ao.ev"; ew: "ao.ew"; ex: "ao.ex"; ey: "ao.ey"; ez: "ao.ez"; fa: "ao.fa"; fb: "ao.fb"; fc: "ao.fc"; fd: "ao.fd"; fe: "ao.fe"; ff: "ao.ff"; fg: "ao.fg"; fh: "ao.fh"; fi: "ao.fi"; fj: "ao.fj"; fk: "ao.fk"; fl: "ao.fl"; fm: "ao.fm"; fn: "ao.fn"; fo: "ao.fo"; fp: "ao.fp"; fq: "ao.fq"; fr: "ao.fr"; fs: "ao.fs"; ft: "ao.ft"; fu: "ao.fu"; fv: "ao.fv"; fw: "ao.fw"; fx: "ao.fx"; fy: "ao.fy"; fz: "ao.fz"; ga: "ao.ga"; gb: "ao.gb"; gc: "ao.gc"; gd: "ao.gd"; ge: "ao.ge"; gf: "ao.gf"; gg: "ao.gg"; gh: "ao.gh"; gi: "ao.gi"; gj: "ao.gj"; gk: "ao.gk"; gl: "ao.gl"; gm: "ao.gm"; gn: "ao.gn"; go: "ao.go"; gp: "ao.gp"; gq: "ao.gq"; gr: "ao.gr"; gs: "ao.gs"; gt: "ao.gt"; gu: "ao.gu"; gv: "ao.gv"; gw: "ao.gw"; gx: "ao.gx"; gy: "ao.gy"; gz: "ao.gz"; ha: "ao.ha"; hb: "ao.hb"; hc: "ao.hc"; hd: "ao.hd"; he: "ao.he"; hf: "ao.hf"; hg: "ao.hg"; hh: "ao.hh"; hi: "ao.hi"; hj: "ao.hj"; hk: "ao.hk"; hl: "ao.hl"; hm: "ao.hm"; hn: "ao.hn"; ho: "ao.ho"; hp: "ao.hp"; hq: "ao.hq"; hr: "ao.hr"; hs: "ao.hs"; ht: "ao.ht"; hu: "ao.hu"; hv: "ao.hv"; hw: "ao.hw"; hx: "ao.hx"; hy: "ao.hy"; hz: "ao.hz"; ia: "ao.ia"; ib: "ao.ib"; ic: "ao.ic"; id: "ao.id"; ie: "ao.ie"; if: "ao.if"; ig: "ao.ig"; ih: "ao.ih"; ii: "ao.ii"; ij: "ao.ij"; ik: "ao.ik"; il: "ao.il"; im: "ao.im"; in: "ao.in"; io: "ao.io"; ip: "ao.ip"; iq: "ao.iq"; ir: "ao.ir"; is: "ao.is"; it: "ao.it"; iu: "ao.iu"; iv: "ao.iv"; iw: "ao.iw"; ix: "ao.ix"; iy: "ao.iy"; iz: "ao.iz"; ja: "ao.ja"; jb: "ao.jb"; jc: "ao.jc"; jd: "ao.jd"; je: "ao.je"; jf: "ao.jf"; jg: "ao.jg"; jh: "ao.jh"; ji: "ao.ji"; jj: "ao.jj"; jk: "ao.jk"; jl: "ao.jl"; jm: "ao.jm"; jn: "ao.jn"; jo: "ao.jo"; jp: "ao.jp"; jq: "ao.jq"; jr: "ao.jr"; js: "ao.js"; jt: "ao.jt"; ju: "ao.ju"; jv: "ao.jv"; jw: "ao.jw"; jx: "ao.jx"; jy: "ao.jy"; jz: "ao.jz"; ka: "ao.ka"; kb: "ao.kb"; kc: "ao.kc"; kd: "ao.kd"; ke: "ao.ke"; kf: "ao.kf"; kg: "ao.kg"; kh: "ao.kh"; ki: "ao.ki"; kj: "ao.kj"; kk: "ao.kk"; kl: "ao.kl"; km: "ao.km"; kn: "ao.kn"; ko: "ao.ko"; kp: "ao.kp"; kq: "ao.kq"; kr: "ao.kr"; ks: "ao.ks"; kt: "ao.kt"; ku: "ao.ku"; kv: "ao.kv"; kw: "ao.kw"; kx: "ao.kx"; ky: "ao.ky"; kz: "ao.kz"; la: "ao.la"; lb: "ao.lb"; lc: "ao.lc"; ld: "ao.ld"; le: "ao.le"; lf: "ao.lf"; lg: "ao.lg"; lh: "ao.lh"; li: "ao.li"; lj: "ao.lj"; lk: "ao.lk"; ll: "ao.ll"; lm: "ao.lm"; ln: "ao.ln"; lo: "ao.lo"; lp: "ao.lp"; lq: "ao.lq"; lr: "ao.lr"; ls: "ao.ls"; lt: "ao.lt"; lu: "ao.lu"; lv: "ao.lv"; lw: "ao.lw"; lx: "ao.lx"; ly: "ao.ly"; lz: "ao.lz"; ma: "ao.ma"; mb: "ao.mb"; mc: "ao.mc"; md: "ao.md"; me: "ao.me"; mf: "ao.mf"; mg: "ao.mg"; mh: "ao.mh"; mi: "ao.mi"; mj: "ao.mj"; mk: "ao.mk"; ml: "ao.ml"; mm: "ao.mm"; mn: "ao.mn"; mo: "ao.mo"; mp: "ao.mp"; mq: "ao.mq"; mr: "ao.mr"; ms: "ao.ms"; mt: "ao.mt"; mu: "ao.mu"; mv: "ao.mv"; mw: "ao.mw"; mx: "ao.mx"; my: "ao.my"; mz: "ao.mz"; na: "ao.na"; nb: "ao.nb"; nc: "ao.nc"; nd: "ao.nd"; ne: "ao.ne"; nf: "ao.nf"; ng: "ao.ng"; nh: "ao.nh"; ni: "ao.ni"; nj: "ao.nj"; nk: "ao.nk"; nl: "ao.nl"; nm: "ao.nm"; nn: "ao.nn"; no: "ao.no"; np: "ao.np"; nq: "ao.nq"; nr: "ao.nr"; ns: "ao.ns"; nt: "ao.nt"; nu: "ao.nu"; nv: "ao.nv"; nw: "ao.nw"; nx: "ao.nx"; ny: "ao.ny"; nz: "ao.nz"; oa: "ao.oa"; ob: "ao.ob"; oc: "ao.oc"; od: "ao.od"; oe: "ao.oe"; of: "ao.of"; og: "ao.og"; oh: "ao.oh"; oi: "ao.oi"; oj: "ao.oj"; ok: "ao.ok"; ol: "ao.ol"; om: "ao.om"; on: "ao.on"; oo: "ao.oo"; op: "ao.op"; oq: "ao.oq"; or: "ao.or"; os: "ao.os"; ot: "ao.ot"; ou: "ao.ou"; ov: "ao.ov"; ow: "ao.ow"; ox: "ao.ox"; oy: "ao.oy"; oz: "ao.oz"; pa: "ao.pa"; pb: "ao.pb"; pc: "ao.pc"; pd: "ao.pd"; pe: "ao.pe"; pf: "ao.pf"; pg: "ao.pg"; ph: "ao.ph"; pi: "ao.pi"; pj: "ao.pj"; pk: "ao.pk"; pl: "ao.pl"; pm: "ao.pm"; pn: "ao.pn"; po: "ao.po"; pp: "ao.pp"; pq: "ao.pq"; pr: "ao.pr"; ps: "ao.ps"; pt: "ao.pt"; pu: "ao.pu"; pv: "ao.pv"; pw: "ao.pw"; px: "ao.px"; py: "ao.py"; pz: "ao.pz"; qa: "ao.qa"; qb: "ao.qb"; qc: "ao.qc"; qd: "ao.qd"; qe: "ao.qe"; qf: "ao.qf"; qg: "ao.qg"; qh: "ao.qh"; qi: "ao.qi"; qj: "ao.qj"; qk: "ao.qk"; ql: "ao.ql"; qm: "ao.qm"; qn: "ao.qn"; qo: "ao.qo"; qp: "ao.qp"; qq: "ao.qq"; qr: "ao.qr"; qs: "ao.qs"; qt: "ao.qt"; qu: "ao.qu"; qv: "ao.qv"; qw: "ao.qw"; qx: "ao.qx"; qy: "ao.qy"; qz: "ao.qz"; ra: "ao.ra"; rb: "ao.rb"; rc: "ao.rc"; rd: "ao.rd"; re: "ao.re"; rf: "ao.rf"; rg: "ao.rg"; rh: "ao.rh"; ri: "ao.ri"; rj: "ao.rj"; rk: "ao.rk"; rl: "ao.rl"; rm: "ao.rm"; rn: "ao.rn"; ro: "ao.ro"; rp: "ao.rp"; rq: "ao.rq"; rr: "ao.rr"; rs: "ao.rs"; rt: "ao.rt"; ru: "ao.ru"; rv: "ao.rv"; rw: "ao.rw"; rx: "ao.rx"; ry: "ao.ry"; rz: "ao.rz"; sa: "ao.sa"; sb: "ao.sb"; sc: "ao.sc"; sd: "ao.sd"; se: "ao.se"; sf: "ao.sf"; sg: "ao.sg"; sh: "ao.sh"; si: "ao.si"; sj: "ao.sj"; sk: "ao.sk"; sl: "ao.sl"; sm: "ao.sm"; sn: "ao.sn"; so: "ao.so"; sp: "ao.sp"; sq: "ao.sq"; sr: "ao.sr"; ss: "ao.ss"; st: "ao.st"; su: "ao.su"; sv: "ao.sv"; sw: "ao.sw"; sx: "ao.sx"; sy: "ao.sy"; sz: "ao.sz"; ta: "ao.ta"; tb: "ao.tb"; tc: "ao.tc"; td: "ao.td"; te: "ao.te"; tf: "ao.tf"; tg: "ao.tg"; th: "ao.th"; ti: "ao.ti"; tj: "ao.tj"; tk: "ao.tk"; tl: "ao.tl"; tm: "ao.tm"; tn: "ao.tn"; to: "ao.to"; tp: "ao.tp"; tq: "ao.tq"; tr: "ao.tr"; ts: "ao.ts"; tt: "ao.tt"; tu: "ao.tu"; tv: "ao.tv"; tw: "ao.tw"; tx: "ao.tx"; ty: "ao.ty"; tz: "ao.tz"; ua: "ao.ua"; ub: "ao.ub"; uc: "ao.uc"; ud: "ao.ud"; ue: "ao.ue"; uf: "ao.uf"; ug: "ao.ug"; uh: "ao.uh"; ui: "ao.ui"; uj: "ao.uj"; uk: "ao.uk"; ul: "ao.ul"; um: "ao.um"; un: "ao.un"; uo: "ao.uo"; up: "ao.up"; uq: "ao.uq"; ur: "ao.ur"; us: "ao.us"; ut: "ao.ut"; uu: "ao.uu"; uv: "ao.uv"; uw: "ao.uw"; ux: "ao.ux"; uy: "ao.uy"; uz: "ao.uz"; va: "ao.va"; vb: "ao.vb"; vc: "ao.vc"; vd: "ao.vd"; ve: "ao.ve"; vf: "ao.vf"; vg: "ao.vg"; vh: "ao.vh"; vi: "ao.vi"; vj: "ao.vj"; vk: "ao.vk"; vl: "ao.vl"; vm: "ao.vm"; vn: "ao.vn"; vo: "ao.vo"; vp: "ao.vp"; vq: "ao.vq"; vr: "ao.vr"; vs: "ao.vs"; vt: "ao.vt"; vu: "ao.vu"; vv: "ao.vv"; vw: "ao.vw"; vx: "ao.vx"; vy: "ao.vy"; vz: "ao.vz"; wa: "ao.wa"; wb: "ao.wb"; wc: "ao.wc"; wd: "ao.wd"; we: "ao.we"; wf: "ao.wf"; wg: "ao.wg"; wh: "ao.wh"; wi: "ao.wi"; wj: "ao.wj"; wk: "ao.wk"; wl: "ao.wl"; wm: "ao.wm"; wn: "ao.wn"; wo: "ao.wo"; wp: "ao.wp"; wq: "ao.wq"; wr: "ao.wr"; ws: "ao.ws"; wt: "ao.wt"; wu: "ao.wu"; wv: "ao.wv"; ww: "ao.ww"; wx: "ao.wx"; wy: "ao.wy"; wz: "ao.wz"; xa: "ao.xa"; xb: "ao.xb"; xc: "ao.xc"; xd: "ao.xd"; xe: "ao.xe"; xf: "ao.xf"; xg: "ao.xg"; xh: "ao.xh"; xi: "ao.xi"; xj: "ao.xj"; xk: "ao.xk"; xl: "ao.xl"; xm: "ao.xm"; xn: "ao.xn"; xo: "ao.xo"; xp: "ao.xp"; xq: "ao.xq"; xr: "ao.xr"; xs: "ao.xs"; xt: "ao.xt"; xu: "ao.xu"; xv: "ao.xv"; xw: "ao.xw"; xx: "ao.xx"; xy: "ao.xy"; xz: "ao.xz"; ya: "ao.ya"; yb: "ao.yb"; yc: "ao.yc"; yd: "ao.yd"; ye: "ao.ye"; yf: "ao.yf"; yg: "ao.yg"; yh: "ao.yh"; yi: "ao.yi"; yj: "ao.yj"; yk: "ao.yk"; yl: "ao.yl"; ym: "ao.ym"; yn: "ao.yn"; yo: "ao.yo"; yp: "ao.yp"; yq: "ao.yq"; yr: "ao.yr"; ys: "ao.ys"; yt: "ao.yt"; yu: "ao.yu"; yv: "ao.yv"; yw: "ao.yw"; yx: "ao.yx"; yy: "ao.yy"; yz: "ao.yz"; za: "ao.za"; zb: "ao.zb"; zc: "ao.zc"; zd: "ao.zd"; ze: "ao.ze"; zf: "ao.zf"; zg: "ao.zg"; zh: "ao.zh"; zi: "ao.zi"; zj: "ao.zj"; zk: "ao.zk"; zl: "ao.zl"; zm: "ao.zm"; zn: "ao.zn"; zo: "ao.zo"; zp: "ao.zp"; zq: "ao.zq"; zr: "ao.zr"; zs: "ao.zs"; zt: "ao.zt"; zu: "ao.zu"; zv: "ao.zv"; zw: "ao.zw"; zx: "ao.zx"; zy: "ao.zy"; zz: "ao.zz"; }; ap: { aa: "ap.aa"; ab: "ap.ab"; ac: "ap.ac"; ad: "ap.ad"; ae: "ap.ae"; af: "ap.af"; ag: "ap.ag"; ah: "ap.ah"; ai: "ap.ai"; aj: "ap.aj"; ak: "ap.ak"; al: "ap.al"; am: "ap.am"; an: "ap.an"; ao: "ap.ao"; ap: "ap.ap"; aq: "ap.aq"; ar: "ap.ar"; as: "ap.as"; at: "ap.at"; au: "ap.au"; av: "ap.av"; aw: "ap.aw"; ax: "ap.ax"; ay: "ap.ay"; az: "ap.az"; ba: "ap.ba"; bb: "ap.bb"; bc: "ap.bc"; bd: "ap.bd"; be: "ap.be"; bf: "ap.bf"; bg: "ap.bg"; bh: "ap.bh"; bi: "ap.bi"; bj: "ap.bj"; bk: "ap.bk"; bl: "ap.bl"; bm: "ap.bm"; bn: "ap.bn"; bo: "ap.bo"; bp: "ap.bp"; bq: "ap.bq"; br: "ap.br"; bs: "ap.bs"; bt: "ap.bt"; bu: "ap.bu"; bv: "ap.bv"; bw: "ap.bw"; bx: "ap.bx"; by: "ap.by"; bz: "ap.bz"; ca: "ap.ca"; cb: "ap.cb"; cc: "ap.cc"; cd: "ap.cd"; ce: "ap.ce"; cf: "ap.cf"; cg: "ap.cg"; ch: "ap.ch"; ci: "ap.ci"; cj: "ap.cj"; ck: "ap.ck"; cl: "ap.cl"; cm: "ap.cm"; cn: "ap.cn"; co: "ap.co"; cp: "ap.cp"; cq: "ap.cq"; cr: "ap.cr"; cs: "ap.cs"; ct: "ap.ct"; cu: "ap.cu"; cv: "ap.cv"; cw: "ap.cw"; cx: "ap.cx"; cy: "ap.cy"; cz: "ap.cz"; da: "ap.da"; db: "ap.db"; dc: "ap.dc"; dd: "ap.dd"; de: "ap.de"; df: "ap.df"; dg: "ap.dg"; dh: "ap.dh"; di: "ap.di"; dj: "ap.dj"; dk: "ap.dk"; dl: "ap.dl"; dm: "ap.dm"; dn: "ap.dn"; do: "ap.do"; dp: "ap.dp"; dq: "ap.dq"; dr: "ap.dr"; ds: "ap.ds"; dt: "ap.dt"; du: "ap.du"; dv: "ap.dv"; dw: "ap.dw"; dx: "ap.dx"; dy: "ap.dy"; dz: "ap.dz"; ea: "ap.ea"; eb: "ap.eb"; ec: "ap.ec"; ed: "ap.ed"; ee: "ap.ee"; ef: "ap.ef"; eg: "ap.eg"; eh: "ap.eh"; ei: "ap.ei"; ej: "ap.ej"; ek: "ap.ek"; el: "ap.el"; em: "ap.em"; en: "ap.en"; eo: "ap.eo"; ep: "ap.ep"; eq: "ap.eq"; er: "ap.er"; es: "ap.es"; et: "ap.et"; eu: "ap.eu"; ev: "ap.ev"; ew: "ap.ew"; ex: "ap.ex"; ey: "ap.ey"; ez: "ap.ez"; fa: "ap.fa"; fb: "ap.fb"; fc: "ap.fc"; fd: "ap.fd"; fe: "ap.fe"; ff: "ap.ff"; fg: "ap.fg"; fh: "ap.fh"; fi: "ap.fi"; fj: "ap.fj"; fk: "ap.fk"; fl: "ap.fl"; fm: "ap.fm"; fn: "ap.fn"; fo: "ap.fo"; fp: "ap.fp"; fq: "ap.fq"; fr: "ap.fr"; fs: "ap.fs"; ft: "ap.ft"; fu: "ap.fu"; fv: "ap.fv"; fw: "ap.fw"; fx: "ap.fx"; fy: "ap.fy"; fz: "ap.fz"; ga: "ap.ga"; gb: "ap.gb"; gc: "ap.gc"; gd: "ap.gd"; ge: "ap.ge"; gf: "ap.gf"; gg: "ap.gg"; gh: "ap.gh"; gi: "ap.gi"; gj: "ap.gj"; gk: "ap.gk"; gl: "ap.gl"; gm: "ap.gm"; gn: "ap.gn"; go: "ap.go"; gp: "ap.gp"; gq: "ap.gq"; gr: "ap.gr"; gs: "ap.gs"; gt: "ap.gt"; gu: "ap.gu"; gv: "ap.gv"; gw: "ap.gw"; gx: "ap.gx"; gy: "ap.gy"; gz: "ap.gz"; ha: "ap.ha"; hb: "ap.hb"; hc: "ap.hc"; hd: "ap.hd"; he: "ap.he"; hf: "ap.hf"; hg: "ap.hg"; hh: "ap.hh"; hi: "ap.hi"; hj: "ap.hj"; hk: "ap.hk"; hl: "ap.hl"; hm: "ap.hm"; hn: "ap.hn"; ho: "ap.ho"; hp: "ap.hp"; hq: "ap.hq"; hr: "ap.hr"; hs: "ap.hs"; ht: "ap.ht"; hu: "ap.hu"; hv: "ap.hv"; hw: "ap.hw"; hx: "ap.hx"; hy: "ap.hy"; hz: "ap.hz"; ia: "ap.ia"; ib: "ap.ib"; ic: "ap.ic"; id: "ap.id"; ie: "ap.ie"; if: "ap.if"; ig: "ap.ig"; ih: "ap.ih"; ii: "ap.ii"; ij: "ap.ij"; ik: "ap.ik"; il: "ap.il"; im: "ap.im"; in: "ap.in"; io: "ap.io"; ip: "ap.ip"; iq: "ap.iq"; ir: "ap.ir"; is: "ap.is"; it: "ap.it"; iu: "ap.iu"; iv: "ap.iv"; iw: "ap.iw"; ix: "ap.ix"; iy: "ap.iy"; iz: "ap.iz"; ja: "ap.ja"; jb: "ap.jb"; jc: "ap.jc"; jd: "ap.jd"; je: "ap.je"; jf: "ap.jf"; jg: "ap.jg"; jh: "ap.jh"; ji: "ap.ji"; jj: "ap.jj"; jk: "ap.jk"; jl: "ap.jl"; jm: "ap.jm"; jn: "ap.jn"; jo: "ap.jo"; jp: "ap.jp"; jq: "ap.jq"; jr: "ap.jr"; js: "ap.js"; jt: "ap.jt"; ju: "ap.ju"; jv: "ap.jv"; jw: "ap.jw"; jx: "ap.jx"; jy: "ap.jy"; jz: "ap.jz"; ka: "ap.ka"; kb: "ap.kb"; kc: "ap.kc"; kd: "ap.kd"; ke: "ap.ke"; kf: "ap.kf"; kg: "ap.kg"; kh: "ap.kh"; ki: "ap.ki"; kj: "ap.kj"; kk: "ap.kk"; kl: "ap.kl"; km: "ap.km"; kn: "ap.kn"; ko: "ap.ko"; kp: "ap.kp"; kq: "ap.kq"; kr: "ap.kr"; ks: "ap.ks"; kt: "ap.kt"; ku: "ap.ku"; kv: "ap.kv"; kw: "ap.kw"; kx: "ap.kx"; ky: "ap.ky"; kz: "ap.kz"; la: "ap.la"; lb: "ap.lb"; lc: "ap.lc"; ld: "ap.ld"; le: "ap.le"; lf: "ap.lf"; lg: "ap.lg"; lh: "ap.lh"; li: "ap.li"; lj: "ap.lj"; lk: "ap.lk"; ll: "ap.ll"; lm: "ap.lm"; ln: "ap.ln"; lo: "ap.lo"; lp: "ap.lp"; lq: "ap.lq"; lr: "ap.lr"; ls: "ap.ls"; lt: "ap.lt"; lu: "ap.lu"; lv: "ap.lv"; lw: "ap.lw"; lx: "ap.lx"; ly: "ap.ly"; lz: "ap.lz"; ma: "ap.ma"; mb: "ap.mb"; mc: "ap.mc"; md: "ap.md"; me: "ap.me"; mf: "ap.mf"; mg: "ap.mg"; mh: "ap.mh"; mi: "ap.mi"; mj: "ap.mj"; mk: "ap.mk"; ml: "ap.ml"; mm: "ap.mm"; mn: "ap.mn"; mo: "ap.mo"; mp: "ap.mp"; mq: "ap.mq"; mr: "ap.mr"; ms: "ap.ms"; mt: "ap.mt"; mu: "ap.mu"; mv: "ap.mv"; mw: "ap.mw"; mx: "ap.mx"; my: "ap.my"; mz: "ap.mz"; na: "ap.na"; nb: "ap.nb"; nc: "ap.nc"; nd: "ap.nd"; ne: "ap.ne"; nf: "ap.nf"; ng: "ap.ng"; nh: "ap.nh"; ni: "ap.ni"; nj: "ap.nj"; nk: "ap.nk"; nl: "ap.nl"; nm: "ap.nm"; nn: "ap.nn"; no: "ap.no"; np: "ap.np"; nq: "ap.nq"; nr: "ap.nr"; ns: "ap.ns"; nt: "ap.nt"; nu: "ap.nu"; nv: "ap.nv"; nw: "ap.nw"; nx: "ap.nx"; ny: "ap.ny"; nz: "ap.nz"; oa: "ap.oa"; ob: "ap.ob"; oc: "ap.oc"; od: "ap.od"; oe: "ap.oe"; of: "ap.of"; og: "ap.og"; oh: "ap.oh"; oi: "ap.oi"; oj: "ap.oj"; ok: "ap.ok"; ol: "ap.ol"; om: "ap.om"; on: "ap.on"; oo: "ap.oo"; op: "ap.op"; oq: "ap.oq"; or: "ap.or"; os: "ap.os"; ot: "ap.ot"; ou: "ap.ou"; ov: "ap.ov"; ow: "ap.ow"; ox: "ap.ox"; oy: "ap.oy"; oz: "ap.oz"; pa: "ap.pa"; pb: "ap.pb"; pc: "ap.pc"; pd: "ap.pd"; pe: "ap.pe"; pf: "ap.pf"; pg: "ap.pg"; ph: "ap.ph"; pi: "ap.pi"; pj: "ap.pj"; pk: "ap.pk"; pl: "ap.pl"; pm: "ap.pm"; pn: "ap.pn"; po: "ap.po"; pp: "ap.pp"; pq: "ap.pq"; pr: "ap.pr"; ps: "ap.ps"; pt: "ap.pt"; pu: "ap.pu"; pv: "ap.pv"; pw: "ap.pw"; px: "ap.px"; py: "ap.py"; pz: "ap.pz"; qa: "ap.qa"; qb: "ap.qb"; qc: "ap.qc"; qd: "ap.qd"; qe: "ap.qe"; qf: "ap.qf"; qg: "ap.qg"; qh: "ap.qh"; qi: "ap.qi"; qj: "ap.qj"; qk: "ap.qk"; ql: "ap.ql"; qm: "ap.qm"; qn: "ap.qn"; qo: "ap.qo"; qp: "ap.qp"; qq: "ap.qq"; qr: "ap.qr"; qs: "ap.qs"; qt: "ap.qt"; qu: "ap.qu"; qv: "ap.qv"; qw: "ap.qw"; qx: "ap.qx"; qy: "ap.qy"; qz: "ap.qz"; ra: "ap.ra"; rb: "ap.rb"; rc: "ap.rc"; rd: "ap.rd"; re: "ap.re"; rf: "ap.rf"; rg: "ap.rg"; rh: "ap.rh"; ri: "ap.ri"; rj: "ap.rj"; rk: "ap.rk"; rl: "ap.rl"; rm: "ap.rm"; rn: "ap.rn"; ro: "ap.ro"; rp: "ap.rp"; rq: "ap.rq"; rr: "ap.rr"; rs: "ap.rs"; rt: "ap.rt"; ru: "ap.ru"; rv: "ap.rv"; rw: "ap.rw"; rx: "ap.rx"; ry: "ap.ry"; rz: "ap.rz"; sa: "ap.sa"; sb: "ap.sb"; sc: "ap.sc"; sd: "ap.sd"; se: "ap.se"; sf: "ap.sf"; sg: "ap.sg"; sh: "ap.sh"; si: "ap.si"; sj: "ap.sj"; sk: "ap.sk"; sl: "ap.sl"; sm: "ap.sm"; sn: "ap.sn"; so: "ap.so"; sp: "ap.sp"; sq: "ap.sq"; sr: "ap.sr"; ss: "ap.ss"; st: "ap.st"; su: "ap.su"; sv: "ap.sv"; sw: "ap.sw"; sx: "ap.sx"; sy: "ap.sy"; sz: "ap.sz"; ta: "ap.ta"; tb: "ap.tb"; tc: "ap.tc"; td: "ap.td"; te: "ap.te"; tf: "ap.tf"; tg: "ap.tg"; th: "ap.th"; ti: "ap.ti"; tj: "ap.tj"; tk: "ap.tk"; tl: "ap.tl"; tm: "ap.tm"; tn: "ap.tn"; to: "ap.to"; tp: "ap.tp"; tq: "ap.tq"; tr: "ap.tr"; ts: "ap.ts"; tt: "ap.tt"; tu: "ap.tu"; tv: "ap.tv"; tw: "ap.tw"; tx: "ap.tx"; ty: "ap.ty"; tz: "ap.tz"; ua: "ap.ua"; ub: "ap.ub"; uc: "ap.uc"; ud: "ap.ud"; ue: "ap.ue"; uf: "ap.uf"; ug: "ap.ug"; uh: "ap.uh"; ui: "ap.ui"; uj: "ap.uj"; uk: "ap.uk"; ul: "ap.ul"; um: "ap.um"; un: "ap.un"; uo: "ap.uo"; up: "ap.up"; uq: "ap.uq"; ur: "ap.ur"; us: "ap.us"; ut: "ap.ut"; uu: "ap.uu"; uv: "ap.uv"; uw: "ap.uw"; ux: "ap.ux"; uy: "ap.uy"; uz: "ap.uz"; va: "ap.va"; vb: "ap.vb"; vc: "ap.vc"; vd: "ap.vd"; ve: "ap.ve"; vf: "ap.vf"; vg: "ap.vg"; vh: "ap.vh"; vi: "ap.vi"; vj: "ap.vj"; vk: "ap.vk"; vl: "ap.vl"; vm: "ap.vm"; vn: "ap.vn"; vo: "ap.vo"; vp: "ap.vp"; vq: "ap.vq"; vr: "ap.vr"; vs: "ap.vs"; vt: "ap.vt"; vu: "ap.vu"; vv: "ap.vv"; vw: "ap.vw"; vx: "ap.vx"; vy: "ap.vy"; vz: "ap.vz"; wa: "ap.wa"; wb: "ap.wb"; wc: "ap.wc"; wd: "ap.wd"; we: "ap.we"; wf: "ap.wf"; wg: "ap.wg"; wh: "ap.wh"; wi: "ap.wi"; wj: "ap.wj"; wk: "ap.wk"; wl: "ap.wl"; wm: "ap.wm"; wn: "ap.wn"; wo: "ap.wo"; wp: "ap.wp"; wq: "ap.wq"; wr: "ap.wr"; ws: "ap.ws"; wt: "ap.wt"; wu: "ap.wu"; wv: "ap.wv"; ww: "ap.ww"; wx: "ap.wx"; wy: "ap.wy"; wz: "ap.wz"; xa: "ap.xa"; xb: "ap.xb"; xc: "ap.xc"; xd: "ap.xd"; xe: "ap.xe"; xf: "ap.xf"; xg: "ap.xg"; xh: "ap.xh"; xi: "ap.xi"; xj: "ap.xj"; xk: "ap.xk"; xl: "ap.xl"; xm: "ap.xm"; xn: "ap.xn"; xo: "ap.xo"; xp: "ap.xp"; xq: "ap.xq"; xr: "ap.xr"; xs: "ap.xs"; xt: "ap.xt"; xu: "ap.xu"; xv: "ap.xv"; xw: "ap.xw"; xx: "ap.xx"; xy: "ap.xy"; xz: "ap.xz"; ya: "ap.ya"; yb: "ap.yb"; yc: "ap.yc"; yd: "ap.yd"; ye: "ap.ye"; yf: "ap.yf"; yg: "ap.yg"; yh: "ap.yh"; yi: "ap.yi"; yj: "ap.yj"; yk: "ap.yk"; yl: "ap.yl"; ym: "ap.ym"; yn: "ap.yn"; yo: "ap.yo"; yp: "ap.yp"; yq: "ap.yq"; yr: "ap.yr"; ys: "ap.ys"; yt: "ap.yt"; yu: "ap.yu"; yv: "ap.yv"; yw: "ap.yw"; yx: "ap.yx"; yy: "ap.yy"; yz: "ap.yz"; za: "ap.za"; zb: "ap.zb"; zc: "ap.zc"; zd: "ap.zd"; ze: "ap.ze"; zf: "ap.zf"; zg: "ap.zg"; zh: "ap.zh"; zi: "ap.zi"; zj: "ap.zj"; zk: "ap.zk"; zl: "ap.zl"; zm: "ap.zm"; zn: "ap.zn"; zo: "ap.zo"; zp: "ap.zp"; zq: "ap.zq"; zr: "ap.zr"; zs: "ap.zs"; zt: "ap.zt"; zu: "ap.zu"; zv: "ap.zv"; zw: "ap.zw"; zx: "ap.zx"; zy: "ap.zy"; zz: "ap.zz"; }; aq: { aa: "aq.aa"; ab: "aq.ab"; ac: "aq.ac"; ad: "aq.ad"; ae: "aq.ae"; af: "aq.af"; ag: "aq.ag"; ah: "aq.ah"; ai: "aq.ai"; aj: "aq.aj"; ak: "aq.ak"; al: "aq.al"; am: "aq.am"; an: "aq.an"; ao: "aq.ao"; ap: "aq.ap"; aq: "aq.aq"; ar: "aq.ar"; as: "aq.as"; at: "aq.at"; au: "aq.au"; av: "aq.av"; aw: "aq.aw"; ax: "aq.ax"; ay: "aq.ay"; az: "aq.az"; ba: "aq.ba"; bb: "aq.bb"; bc: "aq.bc"; bd: "aq.bd"; be: "aq.be"; bf: "aq.bf"; bg: "aq.bg"; bh: "aq.bh"; bi: "aq.bi"; bj: "aq.bj"; bk: "aq.bk"; bl: "aq.bl"; bm: "aq.bm"; bn: "aq.bn"; bo: "aq.bo"; bp: "aq.bp"; bq: "aq.bq"; br: "aq.br"; bs: "aq.bs"; bt: "aq.bt"; bu: "aq.bu"; bv: "aq.bv"; bw: "aq.bw"; bx: "aq.bx"; by: "aq.by"; bz: "aq.bz"; ca: "aq.ca"; cb: "aq.cb"; cc: "aq.cc"; cd: "aq.cd"; ce: "aq.ce"; cf: "aq.cf"; cg: "aq.cg"; ch: "aq.ch"; ci: "aq.ci"; cj: "aq.cj"; ck: "aq.ck"; cl: "aq.cl"; cm: "aq.cm"; cn: "aq.cn"; co: "aq.co"; cp: "aq.cp"; cq: "aq.cq"; cr: "aq.cr"; cs: "aq.cs"; ct: "aq.ct"; cu: "aq.cu"; cv: "aq.cv"; cw: "aq.cw"; cx: "aq.cx"; cy: "aq.cy"; cz: "aq.cz"; da: "aq.da"; db: "aq.db"; dc: "aq.dc"; dd: "aq.dd"; de: "aq.de"; df: "aq.df"; dg: "aq.dg"; dh: "aq.dh"; di: "aq.di"; dj: "aq.dj"; dk: "aq.dk"; dl: "aq.dl"; dm: "aq.dm"; dn: "aq.dn"; do: "aq.do"; dp: "aq.dp"; dq: "aq.dq"; dr: "aq.dr"; ds: "aq.ds"; dt: "aq.dt"; du: "aq.du"; dv: "aq.dv"; dw: "aq.dw"; dx: "aq.dx"; dy: "aq.dy"; dz: "aq.dz"; ea: "aq.ea"; eb: "aq.eb"; ec: "aq.ec"; ed: "aq.ed"; ee: "aq.ee"; ef: "aq.ef"; eg: "aq.eg"; eh: "aq.eh"; ei: "aq.ei"; ej: "aq.ej"; ek: "aq.ek"; el: "aq.el"; em: "aq.em"; en: "aq.en"; eo: "aq.eo"; ep: "aq.ep"; eq: "aq.eq"; er: "aq.er"; es: "aq.es"; et: "aq.et"; eu: "aq.eu"; ev: "aq.ev"; ew: "aq.ew"; ex: "aq.ex"; ey: "aq.ey"; ez: "aq.ez"; fa: "aq.fa"; fb: "aq.fb"; fc: "aq.fc"; fd: "aq.fd"; fe: "aq.fe"; ff: "aq.ff"; fg: "aq.fg"; fh: "aq.fh"; fi: "aq.fi"; fj: "aq.fj"; fk: "aq.fk"; fl: "aq.fl"; fm: "aq.fm"; fn: "aq.fn"; fo: "aq.fo"; fp: "aq.fp"; fq: "aq.fq"; fr: "aq.fr"; fs: "aq.fs"; ft: "aq.ft"; fu: "aq.fu"; fv: "aq.fv"; fw: "aq.fw"; fx: "aq.fx"; fy: "aq.fy"; fz: "aq.fz"; ga: "aq.ga"; gb: "aq.gb"; gc: "aq.gc"; gd: "aq.gd"; ge: "aq.ge"; gf: "aq.gf"; gg: "aq.gg"; gh: "aq.gh"; gi: "aq.gi"; gj: "aq.gj"; gk: "aq.gk"; gl: "aq.gl"; gm: "aq.gm"; gn: "aq.gn"; go: "aq.go"; gp: "aq.gp"; gq: "aq.gq"; gr: "aq.gr"; gs: "aq.gs"; gt: "aq.gt"; gu: "aq.gu"; gv: "aq.gv"; gw: "aq.gw"; gx: "aq.gx"; gy: "aq.gy"; gz: "aq.gz"; ha: "aq.ha"; hb: "aq.hb"; hc: "aq.hc"; hd: "aq.hd"; he: "aq.he"; hf: "aq.hf"; hg: "aq.hg"; hh: "aq.hh"; hi: "aq.hi"; hj: "aq.hj"; hk: "aq.hk"; hl: "aq.hl"; hm: "aq.hm"; hn: "aq.hn"; ho: "aq.ho"; hp: "aq.hp"; hq: "aq.hq"; hr: "aq.hr"; hs: "aq.hs"; ht: "aq.ht"; hu: "aq.hu"; hv: "aq.hv"; hw: "aq.hw"; hx: "aq.hx"; hy: "aq.hy"; hz: "aq.hz"; ia: "aq.ia"; ib: "aq.ib"; ic: "aq.ic"; id: "aq.id"; ie: "aq.ie"; if: "aq.if"; ig: "aq.ig"; ih: "aq.ih"; ii: "aq.ii"; ij: "aq.ij"; ik: "aq.ik"; il: "aq.il"; im: "aq.im"; in: "aq.in"; io: "aq.io"; ip: "aq.ip"; iq: "aq.iq"; ir: "aq.ir"; is: "aq.is"; it: "aq.it"; iu: "aq.iu"; iv: "aq.iv"; iw: "aq.iw"; ix: "aq.ix"; iy: "aq.iy"; iz: "aq.iz"; ja: "aq.ja"; jb: "aq.jb"; jc: "aq.jc"; jd: "aq.jd"; je: "aq.je"; jf: "aq.jf"; jg: "aq.jg"; jh: "aq.jh"; ji: "aq.ji"; jj: "aq.jj"; jk: "aq.jk"; jl: "aq.jl"; jm: "aq.jm"; jn: "aq.jn"; jo: "aq.jo"; jp: "aq.jp"; jq: "aq.jq"; jr: "aq.jr"; js: "aq.js"; jt: "aq.jt"; ju: "aq.ju"; jv: "aq.jv"; jw: "aq.jw"; jx: "aq.jx"; jy: "aq.jy"; jz: "aq.jz"; ka: "aq.ka"; kb: "aq.kb"; kc: "aq.kc"; kd: "aq.kd"; ke: "aq.ke"; kf: "aq.kf"; kg: "aq.kg"; kh: "aq.kh"; ki: "aq.ki"; kj: "aq.kj"; kk: "aq.kk"; kl: "aq.kl"; km: "aq.km"; kn: "aq.kn"; ko: "aq.ko"; kp: "aq.kp"; kq: "aq.kq"; kr: "aq.kr"; ks: "aq.ks"; kt: "aq.kt"; ku: "aq.ku"; kv: "aq.kv"; kw: "aq.kw"; kx: "aq.kx"; ky: "aq.ky"; kz: "aq.kz"; la: "aq.la"; lb: "aq.lb"; lc: "aq.lc"; ld: "aq.ld"; le: "aq.le"; lf: "aq.lf"; lg: "aq.lg"; lh: "aq.lh"; li: "aq.li"; lj: "aq.lj"; lk: "aq.lk"; ll: "aq.ll"; lm: "aq.lm"; ln: "aq.ln"; lo: "aq.lo"; lp: "aq.lp"; lq: "aq.lq"; lr: "aq.lr"; ls: "aq.ls"; lt: "aq.lt"; lu: "aq.lu"; lv: "aq.lv"; lw: "aq.lw"; lx: "aq.lx"; ly: "aq.ly"; lz: "aq.lz"; ma: "aq.ma"; mb: "aq.mb"; mc: "aq.mc"; md: "aq.md"; me: "aq.me"; mf: "aq.mf"; mg: "aq.mg"; mh: "aq.mh"; mi: "aq.mi"; mj: "aq.mj"; mk: "aq.mk"; ml: "aq.ml"; mm: "aq.mm"; mn: "aq.mn"; mo: "aq.mo"; mp: "aq.mp"; mq: "aq.mq"; mr: "aq.mr"; ms: "aq.ms"; mt: "aq.mt"; mu: "aq.mu"; mv: "aq.mv"; mw: "aq.mw"; mx: "aq.mx"; my: "aq.my"; mz: "aq.mz"; na: "aq.na"; nb: "aq.nb"; nc: "aq.nc"; nd: "aq.nd"; ne: "aq.ne"; nf: "aq.nf"; ng: "aq.ng"; nh: "aq.nh"; ni: "aq.ni"; nj: "aq.nj"; nk: "aq.nk"; nl: "aq.nl"; nm: "aq.nm"; nn: "aq.nn"; no: "aq.no"; np: "aq.np"; nq: "aq.nq"; nr: "aq.nr"; ns: "aq.ns"; nt: "aq.nt"; nu: "aq.nu"; nv: "aq.nv"; nw: "aq.nw"; nx: "aq.nx"; ny: "aq.ny"; nz: "aq.nz"; oa: "aq.oa"; ob: "aq.ob"; oc: "aq.oc"; od: "aq.od"; oe: "aq.oe"; of: "aq.of"; og: "aq.og"; oh: "aq.oh"; oi: "aq.oi"; oj: "aq.oj"; ok: "aq.ok"; ol: "aq.ol"; om: "aq.om"; on: "aq.on"; oo: "aq.oo"; op: "aq.op"; oq: "aq.oq"; or: "aq.or"; os: "aq.os"; ot: "aq.ot"; ou: "aq.ou"; ov: "aq.ov"; ow: "aq.ow"; ox: "aq.ox"; oy: "aq.oy"; oz: "aq.oz"; pa: "aq.pa"; pb: "aq.pb"; pc: "aq.pc"; pd: "aq.pd"; pe: "aq.pe"; pf: "aq.pf"; pg: "aq.pg"; ph: "aq.ph"; pi: "aq.pi"; pj: "aq.pj"; pk: "aq.pk"; pl: "aq.pl"; pm: "aq.pm"; pn: "aq.pn"; po: "aq.po"; pp: "aq.pp"; pq: "aq.pq"; pr: "aq.pr"; ps: "aq.ps"; pt: "aq.pt"; pu: "aq.pu"; pv: "aq.pv"; pw: "aq.pw"; px: "aq.px"; py: "aq.py"; pz: "aq.pz"; qa: "aq.qa"; qb: "aq.qb"; qc: "aq.qc"; qd: "aq.qd"; qe: "aq.qe"; qf: "aq.qf"; qg: "aq.qg"; qh: "aq.qh"; qi: "aq.qi"; qj: "aq.qj"; qk: "aq.qk"; ql: "aq.ql"; qm: "aq.qm"; qn: "aq.qn"; qo: "aq.qo"; qp: "aq.qp"; qq: "aq.qq"; qr: "aq.qr"; qs: "aq.qs"; qt: "aq.qt"; qu: "aq.qu"; qv: "aq.qv"; qw: "aq.qw"; qx: "aq.qx"; qy: "aq.qy"; qz: "aq.qz"; ra: "aq.ra"; rb: "aq.rb"; rc: "aq.rc"; rd: "aq.rd"; re: "aq.re"; rf: "aq.rf"; rg: "aq.rg"; rh: "aq.rh"; ri: "aq.ri"; rj: "aq.rj"; rk: "aq.rk"; rl: "aq.rl"; rm: "aq.rm"; rn: "aq.rn"; ro: "aq.ro"; rp: "aq.rp"; rq: "aq.rq"; rr: "aq.rr"; rs: "aq.rs"; rt: "aq.rt"; ru: "aq.ru"; rv: "aq.rv"; rw: "aq.rw"; rx: "aq.rx"; ry: "aq.ry"; rz: "aq.rz"; sa: "aq.sa"; sb: "aq.sb"; sc: "aq.sc"; sd: "aq.sd"; se: "aq.se"; sf: "aq.sf"; sg: "aq.sg"; sh: "aq.sh"; si: "aq.si"; sj: "aq.sj"; sk: "aq.sk"; sl: "aq.sl"; sm: "aq.sm"; sn: "aq.sn"; so: "aq.so"; sp: "aq.sp"; sq: "aq.sq"; sr: "aq.sr"; ss: "aq.ss"; st: "aq.st"; su: "aq.su"; sv: "aq.sv"; sw: "aq.sw"; sx: "aq.sx"; sy: "aq.sy"; sz: "aq.sz"; ta: "aq.ta"; tb: "aq.tb"; tc: "aq.tc"; td: "aq.td"; te: "aq.te"; tf: "aq.tf"; tg: "aq.tg"; th: "aq.th"; ti: "aq.ti"; tj: "aq.tj"; tk: "aq.tk"; tl: "aq.tl"; tm: "aq.tm"; tn: "aq.tn"; to: "aq.to"; tp: "aq.tp"; tq: "aq.tq"; tr: "aq.tr"; ts: "aq.ts"; tt: "aq.tt"; tu: "aq.tu"; tv: "aq.tv"; tw: "aq.tw"; tx: "aq.tx"; ty: "aq.ty"; tz: "aq.tz"; ua: "aq.ua"; ub: "aq.ub"; uc: "aq.uc"; ud: "aq.ud"; ue: "aq.ue"; uf: "aq.uf"; ug: "aq.ug"; uh: "aq.uh"; ui: "aq.ui"; uj: "aq.uj"; uk: "aq.uk"; ul: "aq.ul"; um: "aq.um"; un: "aq.un"; uo: "aq.uo"; up: "aq.up"; uq: "aq.uq"; ur: "aq.ur"; us: "aq.us"; ut: "aq.ut"; uu: "aq.uu"; uv: "aq.uv"; uw: "aq.uw"; ux: "aq.ux"; uy: "aq.uy"; uz: "aq.uz"; va: "aq.va"; vb: "aq.vb"; vc: "aq.vc"; vd: "aq.vd"; ve: "aq.ve"; vf: "aq.vf"; vg: "aq.vg"; vh: "aq.vh"; vi: "aq.vi"; vj: "aq.vj"; vk: "aq.vk"; vl: "aq.vl"; vm: "aq.vm"; vn: "aq.vn"; vo: "aq.vo"; vp: "aq.vp"; vq: "aq.vq"; vr: "aq.vr"; vs: "aq.vs"; vt: "aq.vt"; vu: "aq.vu"; vv: "aq.vv"; vw: "aq.vw"; vx: "aq.vx"; vy: "aq.vy"; vz: "aq.vz"; wa: "aq.wa"; wb: "aq.wb"; wc: "aq.wc"; wd: "aq.wd"; we: "aq.we"; wf: "aq.wf"; wg: "aq.wg"; wh: "aq.wh"; wi: "aq.wi"; wj: "aq.wj"; wk: "aq.wk"; wl: "aq.wl"; wm: "aq.wm"; wn: "aq.wn"; wo: "aq.wo"; wp: "aq.wp"; wq: "aq.wq"; wr: "aq.wr"; ws: "aq.ws"; wt: "aq.wt"; wu: "aq.wu"; wv: "aq.wv"; ww: "aq.ww"; wx: "aq.wx"; wy: "aq.wy"; wz: "aq.wz"; xa: "aq.xa"; xb: "aq.xb"; xc: "aq.xc"; xd: "aq.xd"; xe: "aq.xe"; xf: "aq.xf"; xg: "aq.xg"; xh: "aq.xh"; xi: "aq.xi"; xj: "aq.xj"; xk: "aq.xk"; xl: "aq.xl"; xm: "aq.xm"; xn: "aq.xn"; xo: "aq.xo"; xp: "aq.xp"; xq: "aq.xq"; xr: "aq.xr"; xs: "aq.xs"; xt: "aq.xt"; xu: "aq.xu"; xv: "aq.xv"; xw: "aq.xw"; xx: "aq.xx"; xy: "aq.xy"; xz: "aq.xz"; ya: "aq.ya"; yb: "aq.yb"; yc: "aq.yc"; yd: "aq.yd"; ye: "aq.ye"; yf: "aq.yf"; yg: "aq.yg"; yh: "aq.yh"; yi: "aq.yi"; yj: "aq.yj"; yk: "aq.yk"; yl: "aq.yl"; ym: "aq.ym"; yn: "aq.yn"; yo: "aq.yo"; yp: "aq.yp"; yq: "aq.yq"; yr: "aq.yr"; ys: "aq.ys"; yt: "aq.yt"; yu: "aq.yu"; yv: "aq.yv"; yw: "aq.yw"; yx: "aq.yx"; yy: "aq.yy"; yz: "aq.yz"; za: "aq.za"; zb: "aq.zb"; zc: "aq.zc"; zd: "aq.zd"; ze: "aq.ze"; zf: "aq.zf"; zg: "aq.zg"; zh: "aq.zh"; zi: "aq.zi"; zj: "aq.zj"; zk: "aq.zk"; zl: "aq.zl"; zm: "aq.zm"; zn: "aq.zn"; zo: "aq.zo"; zp: "aq.zp"; zq: "aq.zq"; zr: "aq.zr"; zs: "aq.zs"; zt: "aq.zt"; zu: "aq.zu"; zv: "aq.zv"; zw: "aq.zw"; zx: "aq.zx"; zy: "aq.zy"; zz: "aq.zz"; }; ar: { aa: "ar.aa"; ab: "ar.ab"; ac: "ar.ac"; ad: "ar.ad"; ae: "ar.ae"; af: "ar.af"; ag: "ar.ag"; ah: "ar.ah"; ai: "ar.ai"; aj: "ar.aj"; ak: "ar.ak"; al: "ar.al"; am: "ar.am"; an: "ar.an"; ao: "ar.ao"; ap: "ar.ap"; aq: "ar.aq"; ar: "ar.ar"; as: "ar.as"; at: "ar.at"; au: "ar.au"; av: "ar.av"; aw: "ar.aw"; ax: "ar.ax"; ay: "ar.ay"; az: "ar.az"; ba: "ar.ba"; bb: "ar.bb"; bc: "ar.bc"; bd: "ar.bd"; be: "ar.be"; bf: "ar.bf"; bg: "ar.bg"; bh: "ar.bh"; bi: "ar.bi"; bj: "ar.bj"; bk: "ar.bk"; bl: "ar.bl"; bm: "ar.bm"; bn: "ar.bn"; bo: "ar.bo"; bp: "ar.bp"; bq: "ar.bq"; br: "ar.br"; bs: "ar.bs"; bt: "ar.bt"; bu: "ar.bu"; bv: "ar.bv"; bw: "ar.bw"; bx: "ar.bx"; by: "ar.by"; bz: "ar.bz"; ca: "ar.ca"; cb: "ar.cb"; cc: "ar.cc"; cd: "ar.cd"; ce: "ar.ce"; cf: "ar.cf"; cg: "ar.cg"; ch: "ar.ch"; ci: "ar.ci"; cj: "ar.cj"; ck: "ar.ck"; cl: "ar.cl"; cm: "ar.cm"; cn: "ar.cn"; co: "ar.co"; cp: "ar.cp"; cq: "ar.cq"; cr: "ar.cr"; cs: "ar.cs"; ct: "ar.ct"; cu: "ar.cu"; cv: "ar.cv"; cw: "ar.cw"; cx: "ar.cx"; cy: "ar.cy"; cz: "ar.cz"; da: "ar.da"; db: "ar.db"; dc: "ar.dc"; dd: "ar.dd"; de: "ar.de"; df: "ar.df"; dg: "ar.dg"; dh: "ar.dh"; di: "ar.di"; dj: "ar.dj"; dk: "ar.dk"; dl: "ar.dl"; dm: "ar.dm"; dn: "ar.dn"; do: "ar.do"; dp: "ar.dp"; dq: "ar.dq"; dr: "ar.dr"; ds: "ar.ds"; dt: "ar.dt"; du: "ar.du"; dv: "ar.dv"; dw: "ar.dw"; dx: "ar.dx"; dy: "ar.dy"; dz: "ar.dz"; ea: "ar.ea"; eb: "ar.eb"; ec: "ar.ec"; ed: "ar.ed"; ee: "ar.ee"; ef: "ar.ef"; eg: "ar.eg"; eh: "ar.eh"; ei: "ar.ei"; ej: "ar.ej"; ek: "ar.ek"; el: "ar.el"; em: "ar.em"; en: "ar.en"; eo: "ar.eo"; ep: "ar.ep"; eq: "ar.eq"; er: "ar.er"; es: "ar.es"; et: "ar.et"; eu: "ar.eu"; ev: "ar.ev"; ew: "ar.ew"; ex: "ar.ex"; ey: "ar.ey"; ez: "ar.ez"; fa: "ar.fa"; fb: "ar.fb"; fc: "ar.fc"; fd: "ar.fd"; fe: "ar.fe"; ff: "ar.ff"; fg: "ar.fg"; fh: "ar.fh"; fi: "ar.fi"; fj: "ar.fj"; fk: "ar.fk"; fl: "ar.fl"; fm: "ar.fm"; fn: "ar.fn"; fo: "ar.fo"; fp: "ar.fp"; fq: "ar.fq"; fr: "ar.fr"; fs: "ar.fs"; ft: "ar.ft"; fu: "ar.fu"; fv: "ar.fv"; fw: "ar.fw"; fx: "ar.fx"; fy: "ar.fy"; fz: "ar.fz"; ga: "ar.ga"; gb: "ar.gb"; gc: "ar.gc"; gd: "ar.gd"; ge: "ar.ge"; gf: "ar.gf"; gg: "ar.gg"; gh: "ar.gh"; gi: "ar.gi"; gj: "ar.gj"; gk: "ar.gk"; gl: "ar.gl"; gm: "ar.gm"; gn: "ar.gn"; go: "ar.go"; gp: "ar.gp"; gq: "ar.gq"; gr: "ar.gr"; gs: "ar.gs"; gt: "ar.gt"; gu: "ar.gu"; gv: "ar.gv"; gw: "ar.gw"; gx: "ar.gx"; gy: "ar.gy"; gz: "ar.gz"; ha: "ar.ha"; hb: "ar.hb"; hc: "ar.hc"; hd: "ar.hd"; he: "ar.he"; hf: "ar.hf"; hg: "ar.hg"; hh: "ar.hh"; hi: "ar.hi"; hj: "ar.hj"; hk: "ar.hk"; hl: "ar.hl"; hm: "ar.hm"; hn: "ar.hn"; ho: "ar.ho"; hp: "ar.hp"; hq: "ar.hq"; hr: "ar.hr"; hs: "ar.hs"; ht: "ar.ht"; hu: "ar.hu"; hv: "ar.hv"; hw: "ar.hw"; hx: "ar.hx"; hy: "ar.hy"; hz: "ar.hz"; ia: "ar.ia"; ib: "ar.ib"; ic: "ar.ic"; id: "ar.id"; ie: "ar.ie"; if: "ar.if"; ig: "ar.ig"; ih: "ar.ih"; ii: "ar.ii"; ij: "ar.ij"; ik: "ar.ik"; il: "ar.il"; im: "ar.im"; in: "ar.in"; io: "ar.io"; ip: "ar.ip"; iq: "ar.iq"; ir: "ar.ir"; is: "ar.is"; it: "ar.it"; iu: "ar.iu"; iv: "ar.iv"; iw: "ar.iw"; ix: "ar.ix"; iy: "ar.iy"; iz: "ar.iz"; ja: "ar.ja"; jb: "ar.jb"; jc: "ar.jc"; jd: "ar.jd"; je: "ar.je"; jf: "ar.jf"; jg: "ar.jg"; jh: "ar.jh"; ji: "ar.ji"; jj: "ar.jj"; jk: "ar.jk"; jl: "ar.jl"; jm: "ar.jm"; jn: "ar.jn"; jo: "ar.jo"; jp: "ar.jp"; jq: "ar.jq"; jr: "ar.jr"; js: "ar.js"; jt: "ar.jt"; ju: "ar.ju"; jv: "ar.jv"; jw: "ar.jw"; jx: "ar.jx"; jy: "ar.jy"; jz: "ar.jz"; ka: "ar.ka"; kb: "ar.kb"; kc: "ar.kc"; kd: "ar.kd"; ke: "ar.ke"; kf: "ar.kf"; kg: "ar.kg"; kh: "ar.kh"; ki: "ar.ki"; kj: "ar.kj"; kk: "ar.kk"; kl: "ar.kl"; km: "ar.km"; kn: "ar.kn"; ko: "ar.ko"; kp: "ar.kp"; kq: "ar.kq"; kr: "ar.kr"; ks: "ar.ks"; kt: "ar.kt"; ku: "ar.ku"; kv: "ar.kv"; kw: "ar.kw"; kx: "ar.kx"; ky: "ar.ky"; kz: "ar.kz"; la: "ar.la"; lb: "ar.lb"; lc: "ar.lc"; ld: "ar.ld"; le: "ar.le"; lf: "ar.lf"; lg: "ar.lg"; lh: "ar.lh"; li: "ar.li"; lj: "ar.lj"; lk: "ar.lk"; ll: "ar.ll"; lm: "ar.lm"; ln: "ar.ln"; lo: "ar.lo"; lp: "ar.lp"; lq: "ar.lq"; lr: "ar.lr"; ls: "ar.ls"; lt: "ar.lt"; lu: "ar.lu"; lv: "ar.lv"; lw: "ar.lw"; lx: "ar.lx"; ly: "ar.ly"; lz: "ar.lz"; ma: "ar.ma"; mb: "ar.mb"; mc: "ar.mc"; md: "ar.md"; me: "ar.me"; mf: "ar.mf"; mg: "ar.mg"; mh: "ar.mh"; mi: "ar.mi"; mj: "ar.mj"; mk: "ar.mk"; ml: "ar.ml"; mm: "ar.mm"; mn: "ar.mn"; mo: "ar.mo"; mp: "ar.mp"; mq: "ar.mq"; mr: "ar.mr"; ms: "ar.ms"; mt: "ar.mt"; mu: "ar.mu"; mv: "ar.mv"; mw: "ar.mw"; mx: "ar.mx"; my: "ar.my"; mz: "ar.mz"; na: "ar.na"; nb: "ar.nb"; nc: "ar.nc"; nd: "ar.nd"; ne: "ar.ne"; nf: "ar.nf"; ng: "ar.ng"; nh: "ar.nh"; ni: "ar.ni"; nj: "ar.nj"; nk: "ar.nk"; nl: "ar.nl"; nm: "ar.nm"; nn: "ar.nn"; no: "ar.no"; np: "ar.np"; nq: "ar.nq"; nr: "ar.nr"; ns: "ar.ns"; nt: "ar.nt"; nu: "ar.nu"; nv: "ar.nv"; nw: "ar.nw"; nx: "ar.nx"; ny: "ar.ny"; nz: "ar.nz"; oa: "ar.oa"; ob: "ar.ob"; oc: "ar.oc"; od: "ar.od"; oe: "ar.oe"; of: "ar.of"; og: "ar.og"; oh: "ar.oh"; oi: "ar.oi"; oj: "ar.oj"; ok: "ar.ok"; ol: "ar.ol"; om: "ar.om"; on: "ar.on"; oo: "ar.oo"; op: "ar.op"; oq: "ar.oq"; or: "ar.or"; os: "ar.os"; ot: "ar.ot"; ou: "ar.ou"; ov: "ar.ov"; ow: "ar.ow"; ox: "ar.ox"; oy: "ar.oy"; oz: "ar.oz"; pa: "ar.pa"; pb: "ar.pb"; pc: "ar.pc"; pd: "ar.pd"; pe: "ar.pe"; pf: "ar.pf"; pg: "ar.pg"; ph: "ar.ph"; pi: "ar.pi"; pj: "ar.pj"; pk: "ar.pk"; pl: "ar.pl"; pm: "ar.pm"; pn: "ar.pn"; po: "ar.po"; pp: "ar.pp"; pq: "ar.pq"; pr: "ar.pr"; ps: "ar.ps"; pt: "ar.pt"; pu: "ar.pu"; pv: "ar.pv"; pw: "ar.pw"; px: "ar.px"; py: "ar.py"; pz: "ar.pz"; qa: "ar.qa"; qb: "ar.qb"; qc: "ar.qc"; qd: "ar.qd"; qe: "ar.qe"; qf: "ar.qf"; qg: "ar.qg"; qh: "ar.qh"; qi: "ar.qi"; qj: "ar.qj"; qk: "ar.qk"; ql: "ar.ql"; qm: "ar.qm"; qn: "ar.qn"; qo: "ar.qo"; qp: "ar.qp"; qq: "ar.qq"; qr: "ar.qr"; qs: "ar.qs"; qt: "ar.qt"; qu: "ar.qu"; qv: "ar.qv"; qw: "ar.qw"; qx: "ar.qx"; qy: "ar.qy"; qz: "ar.qz"; ra: "ar.ra"; rb: "ar.rb"; rc: "ar.rc"; rd: "ar.rd"; re: "ar.re"; rf: "ar.rf"; rg: "ar.rg"; rh: "ar.rh"; ri: "ar.ri"; rj: "ar.rj"; rk: "ar.rk"; rl: "ar.rl"; rm: "ar.rm"; rn: "ar.rn"; ro: "ar.ro"; rp: "ar.rp"; rq: "ar.rq"; rr: "ar.rr"; rs: "ar.rs"; rt: "ar.rt"; ru: "ar.ru"; rv: "ar.rv"; rw: "ar.rw"; rx: "ar.rx"; ry: "ar.ry"; rz: "ar.rz"; sa: "ar.sa"; sb: "ar.sb"; sc: "ar.sc"; sd: "ar.sd"; se: "ar.se"; sf: "ar.sf"; sg: "ar.sg"; sh: "ar.sh"; si: "ar.si"; sj: "ar.sj"; sk: "ar.sk"; sl: "ar.sl"; sm: "ar.sm"; sn: "ar.sn"; so: "ar.so"; sp: "ar.sp"; sq: "ar.sq"; sr: "ar.sr"; ss: "ar.ss"; st: "ar.st"; su: "ar.su"; sv: "ar.sv"; sw: "ar.sw"; sx: "ar.sx"; sy: "ar.sy"; sz: "ar.sz"; ta: "ar.ta"; tb: "ar.tb"; tc: "ar.tc"; td: "ar.td"; te: "ar.te"; tf: "ar.tf"; tg: "ar.tg"; th: "ar.th"; ti: "ar.ti"; tj: "ar.tj"; tk: "ar.tk"; tl: "ar.tl"; tm: "ar.tm"; tn: "ar.tn"; to: "ar.to"; tp: "ar.tp"; tq: "ar.tq"; tr: "ar.tr"; ts: "ar.ts"; tt: "ar.tt"; tu: "ar.tu"; tv: "ar.tv"; tw: "ar.tw"; tx: "ar.tx"; ty: "ar.ty"; tz: "ar.tz"; ua: "ar.ua"; ub: "ar.ub"; uc: "ar.uc"; ud: "ar.ud"; ue: "ar.ue"; uf: "ar.uf"; ug: "ar.ug"; uh: "ar.uh"; ui: "ar.ui"; uj: "ar.uj"; uk: "ar.uk"; ul: "ar.ul"; um: "ar.um"; un: "ar.un"; uo: "ar.uo"; up: "ar.up"; uq: "ar.uq"; ur: "ar.ur"; us: "ar.us"; ut: "ar.ut"; uu: "ar.uu"; uv: "ar.uv"; uw: "ar.uw"; ux: "ar.ux"; uy: "ar.uy"; uz: "ar.uz"; va: "ar.va"; vb: "ar.vb"; vc: "ar.vc"; vd: "ar.vd"; ve: "ar.ve"; vf: "ar.vf"; vg: "ar.vg"; vh: "ar.vh"; vi: "ar.vi"; vj: "ar.vj"; vk: "ar.vk"; vl: "ar.vl"; vm: "ar.vm"; vn: "ar.vn"; vo: "ar.vo"; vp: "ar.vp"; vq: "ar.vq"; vr: "ar.vr"; vs: "ar.vs"; vt: "ar.vt"; vu: "ar.vu"; vv: "ar.vv"; vw: "ar.vw"; vx: "ar.vx"; vy: "ar.vy"; vz: "ar.vz"; wa: "ar.wa"; wb: "ar.wb"; wc: "ar.wc"; wd: "ar.wd"; we: "ar.we"; wf: "ar.wf"; wg: "ar.wg"; wh: "ar.wh"; wi: "ar.wi"; wj: "ar.wj"; wk: "ar.wk"; wl: "ar.wl"; wm: "ar.wm"; wn: "ar.wn"; wo: "ar.wo"; wp: "ar.wp"; wq: "ar.wq"; wr: "ar.wr"; ws: "ar.ws"; wt: "ar.wt"; wu: "ar.wu"; wv: "ar.wv"; ww: "ar.ww"; wx: "ar.wx"; wy: "ar.wy"; wz: "ar.wz"; xa: "ar.xa"; xb: "ar.xb"; xc: "ar.xc"; xd: "ar.xd"; xe: "ar.xe"; xf: "ar.xf"; xg: "ar.xg"; xh: "ar.xh"; xi: "ar.xi"; xj: "ar.xj"; xk: "ar.xk"; xl: "ar.xl"; xm: "ar.xm"; xn: "ar.xn"; xo: "ar.xo"; xp: "ar.xp"; xq: "ar.xq"; xr: "ar.xr"; xs: "ar.xs"; xt: "ar.xt"; xu: "ar.xu"; xv: "ar.xv"; xw: "ar.xw"; xx: "ar.xx"; xy: "ar.xy"; xz: "ar.xz"; ya: "ar.ya"; yb: "ar.yb"; yc: "ar.yc"; yd: "ar.yd"; ye: "ar.ye"; yf: "ar.yf"; yg: "ar.yg"; yh: "ar.yh"; yi: "ar.yi"; yj: "ar.yj"; yk: "ar.yk"; yl: "ar.yl"; ym: "ar.ym"; yn: "ar.yn"; yo: "ar.yo"; yp: "ar.yp"; yq: "ar.yq"; yr: "ar.yr"; ys: "ar.ys"; yt: "ar.yt"; yu: "ar.yu"; yv: "ar.yv"; yw: "ar.yw"; yx: "ar.yx"; yy: "ar.yy"; yz: "ar.yz"; za: "ar.za"; zb: "ar.zb"; zc: "ar.zc"; zd: "ar.zd"; ze: "ar.ze"; zf: "ar.zf"; zg: "ar.zg"; zh: "ar.zh"; zi: "ar.zi"; zj: "ar.zj"; zk: "ar.zk"; zl: "ar.zl"; zm: "ar.zm"; zn: "ar.zn"; zo: "ar.zo"; zp: "ar.zp"; zq: "ar.zq"; zr: "ar.zr"; zs: "ar.zs"; zt: "ar.zt"; zu: "ar.zu"; zv: "ar.zv"; zw: "ar.zw"; zx: "ar.zx"; zy: "ar.zy"; zz: "ar.zz"; }; as: { aa: "as.aa"; ab: "as.ab"; ac: "as.ac"; ad: "as.ad"; ae: "as.ae"; af: "as.af"; ag: "as.ag"; ah: "as.ah"; ai: "as.ai"; aj: "as.aj"; ak: "as.ak"; al: "as.al"; am: "as.am"; an: "as.an"; ao: "as.ao"; ap: "as.ap"; aq: "as.aq"; ar: "as.ar"; as: "as.as"; at: "as.at"; au: "as.au"; av: "as.av"; aw: "as.aw"; ax: "as.ax"; ay: "as.ay"; az: "as.az"; ba: "as.ba"; bb: "as.bb"; bc: "as.bc"; bd: "as.bd"; be: "as.be"; bf: "as.bf"; bg: "as.bg"; bh: "as.bh"; bi: "as.bi"; bj: "as.bj"; bk: "as.bk"; bl: "as.bl"; bm: "as.bm"; bn: "as.bn"; bo: "as.bo"; bp: "as.bp"; bq: "as.bq"; br: "as.br"; bs: "as.bs"; bt: "as.bt"; bu: "as.bu"; bv: "as.bv"; bw: "as.bw"; bx: "as.bx"; by: "as.by"; bz: "as.bz"; ca: "as.ca"; cb: "as.cb"; cc: "as.cc"; cd: "as.cd"; ce: "as.ce"; cf: "as.cf"; cg: "as.cg"; ch: "as.ch"; ci: "as.ci"; cj: "as.cj"; ck: "as.ck"; cl: "as.cl"; cm: "as.cm"; cn: "as.cn"; co: "as.co"; cp: "as.cp"; cq: "as.cq"; cr: "as.cr"; cs: "as.cs"; ct: "as.ct"; cu: "as.cu"; cv: "as.cv"; cw: "as.cw"; cx: "as.cx"; cy: "as.cy"; cz: "as.cz"; da: "as.da"; db: "as.db"; dc: "as.dc"; dd: "as.dd"; de: "as.de"; df: "as.df"; dg: "as.dg"; dh: "as.dh"; di: "as.di"; dj: "as.dj"; dk: "as.dk"; dl: "as.dl"; dm: "as.dm"; dn: "as.dn"; do: "as.do"; dp: "as.dp"; dq: "as.dq"; dr: "as.dr"; ds: "as.ds"; dt: "as.dt"; du: "as.du"; dv: "as.dv"; dw: "as.dw"; dx: "as.dx"; dy: "as.dy"; dz: "as.dz"; ea: "as.ea"; eb: "as.eb"; ec: "as.ec"; ed: "as.ed"; ee: "as.ee"; ef: "as.ef"; eg: "as.eg"; eh: "as.eh"; ei: "as.ei"; ej: "as.ej"; ek: "as.ek"; el: "as.el"; em: "as.em"; en: "as.en"; eo: "as.eo"; ep: "as.ep"; eq: "as.eq"; er: "as.er"; es: "as.es"; et: "as.et"; eu: "as.eu"; ev: "as.ev"; ew: "as.ew"; ex: "as.ex"; ey: "as.ey"; ez: "as.ez"; fa: "as.fa"; fb: "as.fb"; fc: "as.fc"; fd: "as.fd"; fe: "as.fe"; ff: "as.ff"; fg: "as.fg"; fh: "as.fh"; fi: "as.fi"; fj: "as.fj"; fk: "as.fk"; fl: "as.fl"; fm: "as.fm"; fn: "as.fn"; fo: "as.fo"; fp: "as.fp"; fq: "as.fq"; fr: "as.fr"; fs: "as.fs"; ft: "as.ft"; fu: "as.fu"; fv: "as.fv"; fw: "as.fw"; fx: "as.fx"; fy: "as.fy"; fz: "as.fz"; ga: "as.ga"; gb: "as.gb"; gc: "as.gc"; gd: "as.gd"; ge: "as.ge"; gf: "as.gf"; gg: "as.gg"; gh: "as.gh"; gi: "as.gi"; gj: "as.gj"; gk: "as.gk"; gl: "as.gl"; gm: "as.gm"; gn: "as.gn"; go: "as.go"; gp: "as.gp"; gq: "as.gq"; gr: "as.gr"; gs: "as.gs"; gt: "as.gt"; gu: "as.gu"; gv: "as.gv"; gw: "as.gw"; gx: "as.gx"; gy: "as.gy"; gz: "as.gz"; ha: "as.ha"; hb: "as.hb"; hc: "as.hc"; hd: "as.hd"; he: "as.he"; hf: "as.hf"; hg: "as.hg"; hh: "as.hh"; hi: "as.hi"; hj: "as.hj"; hk: "as.hk"; hl: "as.hl"; hm: "as.hm"; hn: "as.hn"; ho: "as.ho"; hp: "as.hp"; hq: "as.hq"; hr: "as.hr"; hs: "as.hs"; ht: "as.ht"; hu: "as.hu"; hv: "as.hv"; hw: "as.hw"; hx: "as.hx"; hy: "as.hy"; hz: "as.hz"; ia: "as.ia"; ib: "as.ib"; ic: "as.ic"; id: "as.id"; ie: "as.ie"; if: "as.if"; ig: "as.ig"; ih: "as.ih"; ii: "as.ii"; ij: "as.ij"; ik: "as.ik"; il: "as.il"; im: "as.im"; in: "as.in"; io: "as.io"; ip: "as.ip"; iq: "as.iq"; ir: "as.ir"; is: "as.is"; it: "as.it"; iu: "as.iu"; iv: "as.iv"; iw: "as.iw"; ix: "as.ix"; iy: "as.iy"; iz: "as.iz"; ja: "as.ja"; jb: "as.jb"; jc: "as.jc"; jd: "as.jd"; je: "as.je"; jf: "as.jf"; jg: "as.jg"; jh: "as.jh"; ji: "as.ji"; jj: "as.jj"; jk: "as.jk"; jl: "as.jl"; jm: "as.jm"; jn: "as.jn"; jo: "as.jo"; jp: "as.jp"; jq: "as.jq"; jr: "as.jr"; js: "as.js"; jt: "as.jt"; ju: "as.ju"; jv: "as.jv"; jw: "as.jw"; jx: "as.jx"; jy: "as.jy"; jz: "as.jz"; ka: "as.ka"; kb: "as.kb"; kc: "as.kc"; kd: "as.kd"; ke: "as.ke"; kf: "as.kf"; kg: "as.kg"; kh: "as.kh"; ki: "as.ki"; kj: "as.kj"; kk: "as.kk"; kl: "as.kl"; km: "as.km"; kn: "as.kn"; ko: "as.ko"; kp: "as.kp"; kq: "as.kq"; kr: "as.kr"; ks: "as.ks"; kt: "as.kt"; ku: "as.ku"; kv: "as.kv"; kw: "as.kw"; kx: "as.kx"; ky: "as.ky"; kz: "as.kz"; la: "as.la"; lb: "as.lb"; lc: "as.lc"; ld: "as.ld"; le: "as.le"; lf: "as.lf"; lg: "as.lg"; lh: "as.lh"; li: "as.li"; lj: "as.lj"; lk: "as.lk"; ll: "as.ll"; lm: "as.lm"; ln: "as.ln"; lo: "as.lo"; lp: "as.lp"; lq: "as.lq"; lr: "as.lr"; ls: "as.ls"; lt: "as.lt"; lu: "as.lu"; lv: "as.lv"; lw: "as.lw"; lx: "as.lx"; ly: "as.ly"; lz: "as.lz"; ma: "as.ma"; mb: "as.mb"; mc: "as.mc"; md: "as.md"; me: "as.me"; mf: "as.mf"; mg: "as.mg"; mh: "as.mh"; mi: "as.mi"; mj: "as.mj"; mk: "as.mk"; ml: "as.ml"; mm: "as.mm"; mn: "as.mn"; mo: "as.mo"; mp: "as.mp"; mq: "as.mq"; mr: "as.mr"; ms: "as.ms"; mt: "as.mt"; mu: "as.mu"; mv: "as.mv"; mw: "as.mw"; mx: "as.mx"; my: "as.my"; mz: "as.mz"; na: "as.na"; nb: "as.nb"; nc: "as.nc"; nd: "as.nd"; ne: "as.ne"; nf: "as.nf"; ng: "as.ng"; nh: "as.nh"; ni: "as.ni"; nj: "as.nj"; nk: "as.nk"; nl: "as.nl"; nm: "as.nm"; nn: "as.nn"; no: "as.no"; np: "as.np"; nq: "as.nq"; nr: "as.nr"; ns: "as.ns"; nt: "as.nt"; nu: "as.nu"; nv: "as.nv"; nw: "as.nw"; nx: "as.nx"; ny: "as.ny"; nz: "as.nz"; oa: "as.oa"; ob: "as.ob"; oc: "as.oc"; od: "as.od"; oe: "as.oe"; of: "as.of"; og: "as.og"; oh: "as.oh"; oi: "as.oi"; oj: "as.oj"; ok: "as.ok"; ol: "as.ol"; om: "as.om"; on: "as.on"; oo: "as.oo"; op: "as.op"; oq: "as.oq"; or: "as.or"; os: "as.os"; ot: "as.ot"; ou: "as.ou"; ov: "as.ov"; ow: "as.ow"; ox: "as.ox"; oy: "as.oy"; oz: "as.oz"; pa: "as.pa"; pb: "as.pb"; pc: "as.pc"; pd: "as.pd"; pe: "as.pe"; pf: "as.pf"; pg: "as.pg"; ph: "as.ph"; pi: "as.pi"; pj: "as.pj"; pk: "as.pk"; pl: "as.pl"; pm: "as.pm"; pn: "as.pn"; po: "as.po"; pp: "as.pp"; pq: "as.pq"; pr: "as.pr"; ps: "as.ps"; pt: "as.pt"; pu: "as.pu"; pv: "as.pv"; pw: "as.pw"; px: "as.px"; py: "as.py"; pz: "as.pz"; qa: "as.qa"; qb: "as.qb"; qc: "as.qc"; qd: "as.qd"; qe: "as.qe"; qf: "as.qf"; qg: "as.qg"; qh: "as.qh"; qi: "as.qi"; qj: "as.qj"; qk: "as.qk"; ql: "as.ql"; qm: "as.qm"; qn: "as.qn"; qo: "as.qo"; qp: "as.qp"; qq: "as.qq"; qr: "as.qr"; qs: "as.qs"; qt: "as.qt"; qu: "as.qu"; qv: "as.qv"; qw: "as.qw"; qx: "as.qx"; qy: "as.qy"; qz: "as.qz"; ra: "as.ra"; rb: "as.rb"; rc: "as.rc"; rd: "as.rd"; re: "as.re"; rf: "as.rf"; rg: "as.rg"; rh: "as.rh"; ri: "as.ri"; rj: "as.rj"; rk: "as.rk"; rl: "as.rl"; rm: "as.rm"; rn: "as.rn"; ro: "as.ro"; rp: "as.rp"; rq: "as.rq"; rr: "as.rr"; rs: "as.rs"; rt: "as.rt"; ru: "as.ru"; rv: "as.rv"; rw: "as.rw"; rx: "as.rx"; ry: "as.ry"; rz: "as.rz"; sa: "as.sa"; sb: "as.sb"; sc: "as.sc"; sd: "as.sd"; se: "as.se"; sf: "as.sf"; sg: "as.sg"; sh: "as.sh"; si: "as.si"; sj: "as.sj"; sk: "as.sk"; sl: "as.sl"; sm: "as.sm"; sn: "as.sn"; so: "as.so"; sp: "as.sp"; sq: "as.sq"; sr: "as.sr"; ss: "as.ss"; st: "as.st"; su: "as.su"; sv: "as.sv"; sw: "as.sw"; sx: "as.sx"; sy: "as.sy"; sz: "as.sz"; ta: "as.ta"; tb: "as.tb"; tc: "as.tc"; td: "as.td"; te: "as.te"; tf: "as.tf"; tg: "as.tg"; th: "as.th"; ti: "as.ti"; tj: "as.tj"; tk: "as.tk"; tl: "as.tl"; tm: "as.tm"; tn: "as.tn"; to: "as.to"; tp: "as.tp"; tq: "as.tq"; tr: "as.tr"; ts: "as.ts"; tt: "as.tt"; tu: "as.tu"; tv: "as.tv"; tw: "as.tw"; tx: "as.tx"; ty: "as.ty"; tz: "as.tz"; ua: "as.ua"; ub: "as.ub"; uc: "as.uc"; ud: "as.ud"; ue: "as.ue"; uf: "as.uf"; ug: "as.ug"; uh: "as.uh"; ui: "as.ui"; uj: "as.uj"; uk: "as.uk"; ul: "as.ul"; um: "as.um"; un: "as.un"; uo: "as.uo"; up: "as.up"; uq: "as.uq"; ur: "as.ur"; us: "as.us"; ut: "as.ut"; uu: "as.uu"; uv: "as.uv"; uw: "as.uw"; ux: "as.ux"; uy: "as.uy"; uz: "as.uz"; va: "as.va"; vb: "as.vb"; vc: "as.vc"; vd: "as.vd"; ve: "as.ve"; vf: "as.vf"; vg: "as.vg"; vh: "as.vh"; vi: "as.vi"; vj: "as.vj"; vk: "as.vk"; vl: "as.vl"; vm: "as.vm"; vn: "as.vn"; vo: "as.vo"; vp: "as.vp"; vq: "as.vq"; vr: "as.vr"; vs: "as.vs"; vt: "as.vt"; vu: "as.vu"; vv: "as.vv"; vw: "as.vw"; vx: "as.vx"; vy: "as.vy"; vz: "as.vz"; wa: "as.wa"; wb: "as.wb"; wc: "as.wc"; wd: "as.wd"; we: "as.we"; wf: "as.wf"; wg: "as.wg"; wh: "as.wh"; wi: "as.wi"; wj: "as.wj"; wk: "as.wk"; wl: "as.wl"; wm: "as.wm"; wn: "as.wn"; wo: "as.wo"; wp: "as.wp"; wq: "as.wq"; wr: "as.wr"; ws: "as.ws"; wt: "as.wt"; wu: "as.wu"; wv: "as.wv"; ww: "as.ww"; wx: "as.wx"; wy: "as.wy"; wz: "as.wz"; xa: "as.xa"; xb: "as.xb"; xc: "as.xc"; xd: "as.xd"; xe: "as.xe"; xf: "as.xf"; xg: "as.xg"; xh: "as.xh"; xi: "as.xi"; xj: "as.xj"; xk: "as.xk"; xl: "as.xl"; xm: "as.xm"; xn: "as.xn"; xo: "as.xo"; xp: "as.xp"; xq: "as.xq"; xr: "as.xr"; xs: "as.xs"; xt: "as.xt"; xu: "as.xu"; xv: "as.xv"; xw: "as.xw"; xx: "as.xx"; xy: "as.xy"; xz: "as.xz"; ya: "as.ya"; yb: "as.yb"; yc: "as.yc"; yd: "as.yd"; ye: "as.ye"; yf: "as.yf"; yg: "as.yg"; yh: "as.yh"; yi: "as.yi"; yj: "as.yj"; yk: "as.yk"; yl: "as.yl"; ym: "as.ym"; yn: "as.yn"; yo: "as.yo"; yp: "as.yp"; yq: "as.yq"; yr: "as.yr"; ys: "as.ys"; yt: "as.yt"; yu: "as.yu"; yv: "as.yv"; yw: "as.yw"; yx: "as.yx"; yy: "as.yy"; yz: "as.yz"; za: "as.za"; zb: "as.zb"; zc: "as.zc"; zd: "as.zd"; ze: "as.ze"; zf: "as.zf"; zg: "as.zg"; zh: "as.zh"; zi: "as.zi"; zj: "as.zj"; zk: "as.zk"; zl: "as.zl"; zm: "as.zm"; zn: "as.zn"; zo: "as.zo"; zp: "as.zp"; zq: "as.zq"; zr: "as.zr"; zs: "as.zs"; zt: "as.zt"; zu: "as.zu"; zv: "as.zv"; zw: "as.zw"; zx: "as.zx"; zy: "as.zy"; zz: "as.zz"; }; at: { aa: "at.aa"; ab: "at.ab"; ac: "at.ac"; ad: "at.ad"; ae: "at.ae"; af: "at.af"; ag: "at.ag"; ah: "at.ah"; ai: "at.ai"; aj: "at.aj"; ak: "at.ak"; al: "at.al"; am: "at.am"; an: "at.an"; ao: "at.ao"; ap: "at.ap"; aq: "at.aq"; ar: "at.ar"; as: "at.as"; at: "at.at"; au: "at.au"; av: "at.av"; aw: "at.aw"; ax: "at.ax"; ay: "at.ay"; az: "at.az"; ba: "at.ba"; bb: "at.bb"; bc: "at.bc"; bd: "at.bd"; be: "at.be"; bf: "at.bf"; bg: "at.bg"; bh: "at.bh"; bi: "at.bi"; bj: "at.bj"; bk: "at.bk"; bl: "at.bl"; bm: "at.bm"; bn: "at.bn"; bo: "at.bo"; bp: "at.bp"; bq: "at.bq"; br: "at.br"; bs: "at.bs"; bt: "at.bt"; bu: "at.bu"; bv: "at.bv"; bw: "at.bw"; bx: "at.bx"; by: "at.by"; bz: "at.bz"; ca: "at.ca"; cb: "at.cb"; cc: "at.cc"; cd: "at.cd"; ce: "at.ce"; cf: "at.cf"; cg: "at.cg"; ch: "at.ch"; ci: "at.ci"; cj: "at.cj"; ck: "at.ck"; cl: "at.cl"; cm: "at.cm"; cn: "at.cn"; co: "at.co"; cp: "at.cp"; cq: "at.cq"; cr: "at.cr"; cs: "at.cs"; ct: "at.ct"; cu: "at.cu"; cv: "at.cv"; cw: "at.cw"; cx: "at.cx"; cy: "at.cy"; cz: "at.cz"; da: "at.da"; db: "at.db"; dc: "at.dc"; dd: "at.dd"; de: "at.de"; df: "at.df"; dg: "at.dg"; dh: "at.dh"; di: "at.di"; dj: "at.dj"; dk: "at.dk"; dl: "at.dl"; dm: "at.dm"; dn: "at.dn"; do: "at.do"; dp: "at.dp"; dq: "at.dq"; dr: "at.dr"; ds: "at.ds"; dt: "at.dt"; du: "at.du"; dv: "at.dv"; dw: "at.dw"; dx: "at.dx"; dy: "at.dy"; dz: "at.dz"; ea: "at.ea"; eb: "at.eb"; ec: "at.ec"; ed: "at.ed"; ee: "at.ee"; ef: "at.ef"; eg: "at.eg"; eh: "at.eh"; ei: "at.ei"; ej: "at.ej"; ek: "at.ek"; el: "at.el"; em: "at.em"; en: "at.en"; eo: "at.eo"; ep: "at.ep"; eq: "at.eq"; er: "at.er"; es: "at.es"; et: "at.et"; eu: "at.eu"; ev: "at.ev"; ew: "at.ew"; ex: "at.ex"; ey: "at.ey"; ez: "at.ez"; fa: "at.fa"; fb: "at.fb"; fc: "at.fc"; fd: "at.fd"; fe: "at.fe"; ff: "at.ff"; fg: "at.fg"; fh: "at.fh"; fi: "at.fi"; fj: "at.fj"; fk: "at.fk"; fl: "at.fl"; fm: "at.fm"; fn: "at.fn"; fo: "at.fo"; fp: "at.fp"; fq: "at.fq"; fr: "at.fr"; fs: "at.fs"; ft: "at.ft"; fu: "at.fu"; fv: "at.fv"; fw: "at.fw"; fx: "at.fx"; fy: "at.fy"; fz: "at.fz"; ga: "at.ga"; gb: "at.gb"; gc: "at.gc"; gd: "at.gd"; ge: "at.ge"; gf: "at.gf"; gg: "at.gg"; gh: "at.gh"; gi: "at.gi"; gj: "at.gj"; gk: "at.gk"; gl: "at.gl"; gm: "at.gm"; gn: "at.gn"; go: "at.go"; gp: "at.gp"; gq: "at.gq"; gr: "at.gr"; gs: "at.gs"; gt: "at.gt"; gu: "at.gu"; gv: "at.gv"; gw: "at.gw"; gx: "at.gx"; gy: "at.gy"; gz: "at.gz"; ha: "at.ha"; hb: "at.hb"; hc: "at.hc"; hd: "at.hd"; he: "at.he"; hf: "at.hf"; hg: "at.hg"; hh: "at.hh"; hi: "at.hi"; hj: "at.hj"; hk: "at.hk"; hl: "at.hl"; hm: "at.hm"; hn: "at.hn"; ho: "at.ho"; hp: "at.hp"; hq: "at.hq"; hr: "at.hr"; hs: "at.hs"; ht: "at.ht"; hu: "at.hu"; hv: "at.hv"; hw: "at.hw"; hx: "at.hx"; hy: "at.hy"; hz: "at.hz"; ia: "at.ia"; ib: "at.ib"; ic: "at.ic"; id: "at.id"; ie: "at.ie"; if: "at.if"; ig: "at.ig"; ih: "at.ih"; ii: "at.ii"; ij: "at.ij"; ik: "at.ik"; il: "at.il"; im: "at.im"; in: "at.in"; io: "at.io"; ip: "at.ip"; iq: "at.iq"; ir: "at.ir"; is: "at.is"; it: "at.it"; iu: "at.iu"; iv: "at.iv"; iw: "at.iw"; ix: "at.ix"; iy: "at.iy"; iz: "at.iz"; ja: "at.ja"; jb: "at.jb"; jc: "at.jc"; jd: "at.jd"; je: "at.je"; jf: "at.jf"; jg: "at.jg"; jh: "at.jh"; ji: "at.ji"; jj: "at.jj"; jk: "at.jk"; jl: "at.jl"; jm: "at.jm"; jn: "at.jn"; jo: "at.jo"; jp: "at.jp"; jq: "at.jq"; jr: "at.jr"; js: "at.js"; jt: "at.jt"; ju: "at.ju"; jv: "at.jv"; jw: "at.jw"; jx: "at.jx"; jy: "at.jy"; jz: "at.jz"; ka: "at.ka"; kb: "at.kb"; kc: "at.kc"; kd: "at.kd"; ke: "at.ke"; kf: "at.kf"; kg: "at.kg"; kh: "at.kh"; ki: "at.ki"; kj: "at.kj"; kk: "at.kk"; kl: "at.kl"; km: "at.km"; kn: "at.kn"; ko: "at.ko"; kp: "at.kp"; kq: "at.kq"; kr: "at.kr"; ks: "at.ks"; kt: "at.kt"; ku: "at.ku"; kv: "at.kv"; kw: "at.kw"; kx: "at.kx"; ky: "at.ky"; kz: "at.kz"; la: "at.la"; lb: "at.lb"; lc: "at.lc"; ld: "at.ld"; le: "at.le"; lf: "at.lf"; lg: "at.lg"; lh: "at.lh"; li: "at.li"; lj: "at.lj"; lk: "at.lk"; ll: "at.ll"; lm: "at.lm"; ln: "at.ln"; lo: "at.lo"; lp: "at.lp"; lq: "at.lq"; lr: "at.lr"; ls: "at.ls"; lt: "at.lt"; lu: "at.lu"; lv: "at.lv"; lw: "at.lw"; lx: "at.lx"; ly: "at.ly"; lz: "at.lz"; ma: "at.ma"; mb: "at.mb"; mc: "at.mc"; md: "at.md"; me: "at.me"; mf: "at.mf"; mg: "at.mg"; mh: "at.mh"; mi: "at.mi"; mj: "at.mj"; mk: "at.mk"; ml: "at.ml"; mm: "at.mm"; mn: "at.mn"; mo: "at.mo"; mp: "at.mp"; mq: "at.mq"; mr: "at.mr"; ms: "at.ms"; mt: "at.mt"; mu: "at.mu"; mv: "at.mv"; mw: "at.mw"; mx: "at.mx"; my: "at.my"; mz: "at.mz"; na: "at.na"; nb: "at.nb"; nc: "at.nc"; nd: "at.nd"; ne: "at.ne"; nf: "at.nf"; ng: "at.ng"; nh: "at.nh"; ni: "at.ni"; nj: "at.nj"; nk: "at.nk"; nl: "at.nl"; nm: "at.nm"; nn: "at.nn"; no: "at.no"; np: "at.np"; nq: "at.nq"; nr: "at.nr"; ns: "at.ns"; nt: "at.nt"; nu: "at.nu"; nv: "at.nv"; nw: "at.nw"; nx: "at.nx"; ny: "at.ny"; nz: "at.nz"; oa: "at.oa"; ob: "at.ob"; oc: "at.oc"; od: "at.od"; oe: "at.oe"; of: "at.of"; og: "at.og"; oh: "at.oh"; oi: "at.oi"; oj: "at.oj"; ok: "at.ok"; ol: "at.ol"; om: "at.om"; on: "at.on"; oo: "at.oo"; op: "at.op"; oq: "at.oq"; or: "at.or"; os: "at.os"; ot: "at.ot"; ou: "at.ou"; ov: "at.ov"; ow: "at.ow"; ox: "at.ox"; oy: "at.oy"; oz: "at.oz"; pa: "at.pa"; pb: "at.pb"; pc: "at.pc"; pd: "at.pd"; pe: "at.pe"; pf: "at.pf"; pg: "at.pg"; ph: "at.ph"; pi: "at.pi"; pj: "at.pj"; pk: "at.pk"; pl: "at.pl"; pm: "at.pm"; pn: "at.pn"; po: "at.po"; pp: "at.pp"; pq: "at.pq"; pr: "at.pr"; ps: "at.ps"; pt: "at.pt"; pu: "at.pu"; pv: "at.pv"; pw: "at.pw"; px: "at.px"; py: "at.py"; pz: "at.pz"; qa: "at.qa"; qb: "at.qb"; qc: "at.qc"; qd: "at.qd"; qe: "at.qe"; qf: "at.qf"; qg: "at.qg"; qh: "at.qh"; qi: "at.qi"; qj: "at.qj"; qk: "at.qk"; ql: "at.ql"; qm: "at.qm"; qn: "at.qn"; qo: "at.qo"; qp: "at.qp"; qq: "at.qq"; qr: "at.qr"; qs: "at.qs"; qt: "at.qt"; qu: "at.qu"; qv: "at.qv"; qw: "at.qw"; qx: "at.qx"; qy: "at.qy"; qz: "at.qz"; ra: "at.ra"; rb: "at.rb"; rc: "at.rc"; rd: "at.rd"; re: "at.re"; rf: "at.rf"; rg: "at.rg"; rh: "at.rh"; ri: "at.ri"; rj: "at.rj"; rk: "at.rk"; rl: "at.rl"; rm: "at.rm"; rn: "at.rn"; ro: "at.ro"; rp: "at.rp"; rq: "at.rq"; rr: "at.rr"; rs: "at.rs"; rt: "at.rt"; ru: "at.ru"; rv: "at.rv"; rw: "at.rw"; rx: "at.rx"; ry: "at.ry"; rz: "at.rz"; sa: "at.sa"; sb: "at.sb"; sc: "at.sc"; sd: "at.sd"; se: "at.se"; sf: "at.sf"; sg: "at.sg"; sh: "at.sh"; si: "at.si"; sj: "at.sj"; sk: "at.sk"; sl: "at.sl"; sm: "at.sm"; sn: "at.sn"; so: "at.so"; sp: "at.sp"; sq: "at.sq"; sr: "at.sr"; ss: "at.ss"; st: "at.st"; su: "at.su"; sv: "at.sv"; sw: "at.sw"; sx: "at.sx"; sy: "at.sy"; sz: "at.sz"; ta: "at.ta"; tb: "at.tb"; tc: "at.tc"; td: "at.td"; te: "at.te"; tf: "at.tf"; tg: "at.tg"; th: "at.th"; ti: "at.ti"; tj: "at.tj"; tk: "at.tk"; tl: "at.tl"; tm: "at.tm"; tn: "at.tn"; to: "at.to"; tp: "at.tp"; tq: "at.tq"; tr: "at.tr"; ts: "at.ts"; tt: "at.tt"; tu: "at.tu"; tv: "at.tv"; tw: "at.tw"; tx: "at.tx"; ty: "at.ty"; tz: "at.tz"; ua: "at.ua"; ub: "at.ub"; uc: "at.uc"; ud: "at.ud"; ue: "at.ue"; uf: "at.uf"; ug: "at.ug"; uh: "at.uh"; ui: "at.ui"; uj: "at.uj"; uk: "at.uk"; ul: "at.ul"; um: "at.um"; un: "at.un"; uo: "at.uo"; up: "at.up"; uq: "at.uq"; ur: "at.ur"; us: "at.us"; ut: "at.ut"; uu: "at.uu"; uv: "at.uv"; uw: "at.uw"; ux: "at.ux"; uy: "at.uy"; uz: "at.uz"; va: "at.va"; vb: "at.vb"; vc: "at.vc"; vd: "at.vd"; ve: "at.ve"; vf: "at.vf"; vg: "at.vg"; vh: "at.vh"; vi: "at.vi"; vj: "at.vj"; vk: "at.vk"; vl: "at.vl"; vm: "at.vm"; vn: "at.vn"; vo: "at.vo"; vp: "at.vp"; vq: "at.vq"; vr: "at.vr"; vs: "at.vs"; vt: "at.vt"; vu: "at.vu"; vv: "at.vv"; vw: "at.vw"; vx: "at.vx"; vy: "at.vy"; vz: "at.vz"; wa: "at.wa"; wb: "at.wb"; wc: "at.wc"; wd: "at.wd"; we: "at.we"; wf: "at.wf"; wg: "at.wg"; wh: "at.wh"; wi: "at.wi"; wj: "at.wj"; wk: "at.wk"; wl: "at.wl"; wm: "at.wm"; wn: "at.wn"; wo: "at.wo"; wp: "at.wp"; wq: "at.wq"; wr: "at.wr"; ws: "at.ws"; wt: "at.wt"; wu: "at.wu"; wv: "at.wv"; ww: "at.ww"; wx: "at.wx"; wy: "at.wy"; wz: "at.wz"; xa: "at.xa"; xb: "at.xb"; xc: "at.xc"; xd: "at.xd"; xe: "at.xe"; xf: "at.xf"; xg: "at.xg"; xh: "at.xh"; xi: "at.xi"; xj: "at.xj"; xk: "at.xk"; xl: "at.xl"; xm: "at.xm"; xn: "at.xn"; xo: "at.xo"; xp: "at.xp"; xq: "at.xq"; xr: "at.xr"; xs: "at.xs"; xt: "at.xt"; xu: "at.xu"; xv: "at.xv"; xw: "at.xw"; xx: "at.xx"; xy: "at.xy"; xz: "at.xz"; ya: "at.ya"; yb: "at.yb"; yc: "at.yc"; yd: "at.yd"; ye: "at.ye"; yf: "at.yf"; yg: "at.yg"; yh: "at.yh"; yi: "at.yi"; yj: "at.yj"; yk: "at.yk"; yl: "at.yl"; ym: "at.ym"; yn: "at.yn"; yo: "at.yo"; yp: "at.yp"; yq: "at.yq"; yr: "at.yr"; ys: "at.ys"; yt: "at.yt"; yu: "at.yu"; yv: "at.yv"; yw: "at.yw"; yx: "at.yx"; yy: "at.yy"; yz: "at.yz"; za: "at.za"; zb: "at.zb"; zc: "at.zc"; zd: "at.zd"; ze: "at.ze"; zf: "at.zf"; zg: "at.zg"; zh: "at.zh"; zi: "at.zi"; zj: "at.zj"; zk: "at.zk"; zl: "at.zl"; zm: "at.zm"; zn: "at.zn"; zo: "at.zo"; zp: "at.zp"; zq: "at.zq"; zr: "at.zr"; zs: "at.zs"; zt: "at.zt"; zu: "at.zu"; zv: "at.zv"; zw: "at.zw"; zx: "at.zx"; zy: "at.zy"; zz: "at.zz"; }; au: { aa: "au.aa"; ab: "au.ab"; ac: "au.ac"; ad: "au.ad"; ae: "au.ae"; af: "au.af"; ag: "au.ag"; ah: "au.ah"; ai: "au.ai"; aj: "au.aj"; ak: "au.ak"; al: "au.al"; am: "au.am"; an: "au.an"; ao: "au.ao"; ap: "au.ap"; aq: "au.aq"; ar: "au.ar"; as: "au.as"; at: "au.at"; au: "au.au"; av: "au.av"; aw: "au.aw"; ax: "au.ax"; ay: "au.ay"; az: "au.az"; ba: "au.ba"; bb: "au.bb"; bc: "au.bc"; bd: "au.bd"; be: "au.be"; bf: "au.bf"; bg: "au.bg"; bh: "au.bh"; bi: "au.bi"; bj: "au.bj"; bk: "au.bk"; bl: "au.bl"; bm: "au.bm"; bn: "au.bn"; bo: "au.bo"; bp: "au.bp"; bq: "au.bq"; br: "au.br"; bs: "au.bs"; bt: "au.bt"; bu: "au.bu"; bv: "au.bv"; bw: "au.bw"; bx: "au.bx"; by: "au.by"; bz: "au.bz"; ca: "au.ca"; cb: "au.cb"; cc: "au.cc"; cd: "au.cd"; ce: "au.ce"; cf: "au.cf"; cg: "au.cg"; ch: "au.ch"; ci: "au.ci"; cj: "au.cj"; ck: "au.ck"; cl: "au.cl"; cm: "au.cm"; cn: "au.cn"; co: "au.co"; cp: "au.cp"; cq: "au.cq"; cr: "au.cr"; cs: "au.cs"; ct: "au.ct"; cu: "au.cu"; cv: "au.cv"; cw: "au.cw"; cx: "au.cx"; cy: "au.cy"; cz: "au.cz"; da: "au.da"; db: "au.db"; dc: "au.dc"; dd: "au.dd"; de: "au.de"; df: "au.df"; dg: "au.dg"; dh: "au.dh"; di: "au.di"; dj: "au.dj"; dk: "au.dk"; dl: "au.dl"; dm: "au.dm"; dn: "au.dn"; do: "au.do"; dp: "au.dp"; dq: "au.dq"; dr: "au.dr"; ds: "au.ds"; dt: "au.dt"; du: "au.du"; dv: "au.dv"; dw: "au.dw"; dx: "au.dx"; dy: "au.dy"; dz: "au.dz"; ea: "au.ea"; eb: "au.eb"; ec: "au.ec"; ed: "au.ed"; ee: "au.ee"; ef: "au.ef"; eg: "au.eg"; eh: "au.eh"; ei: "au.ei"; ej: "au.ej"; ek: "au.ek"; el: "au.el"; em: "au.em"; en: "au.en"; eo: "au.eo"; ep: "au.ep"; eq: "au.eq"; er: "au.er"; es: "au.es"; et: "au.et"; eu: "au.eu"; ev: "au.ev"; ew: "au.ew"; ex: "au.ex"; ey: "au.ey"; ez: "au.ez"; fa: "au.fa"; fb: "au.fb"; fc: "au.fc"; fd: "au.fd"; fe: "au.fe"; ff: "au.ff"; fg: "au.fg"; fh: "au.fh"; fi: "au.fi"; fj: "au.fj"; fk: "au.fk"; fl: "au.fl"; fm: "au.fm"; fn: "au.fn"; fo: "au.fo"; fp: "au.fp"; fq: "au.fq"; fr: "au.fr"; fs: "au.fs"; ft: "au.ft"; fu: "au.fu"; fv: "au.fv"; fw: "au.fw"; fx: "au.fx"; fy: "au.fy"; fz: "au.fz"; ga: "au.ga"; gb: "au.gb"; gc: "au.gc"; gd: "au.gd"; ge: "au.ge"; gf: "au.gf"; gg: "au.gg"; gh: "au.gh"; gi: "au.gi"; gj: "au.gj"; gk: "au.gk"; gl: "au.gl"; gm: "au.gm"; gn: "au.gn"; go: "au.go"; gp: "au.gp"; gq: "au.gq"; gr: "au.gr"; gs: "au.gs"; gt: "au.gt"; gu: "au.gu"; gv: "au.gv"; gw: "au.gw"; gx: "au.gx"; gy: "au.gy"; gz: "au.gz"; ha: "au.ha"; hb: "au.hb"; hc: "au.hc"; hd: "au.hd"; he: "au.he"; hf: "au.hf"; hg: "au.hg"; hh: "au.hh"; hi: "au.hi"; hj: "au.hj"; hk: "au.hk"; hl: "au.hl"; hm: "au.hm"; hn: "au.hn"; ho: "au.ho"; hp: "au.hp"; hq: "au.hq"; hr: "au.hr"; hs: "au.hs"; ht: "au.ht"; hu: "au.hu"; hv: "au.hv"; hw: "au.hw"; hx: "au.hx"; hy: "au.hy"; hz: "au.hz"; ia: "au.ia"; ib: "au.ib"; ic: "au.ic"; id: "au.id"; ie: "au.ie"; if: "au.if"; ig: "au.ig"; ih: "au.ih"; ii: "au.ii"; ij: "au.ij"; ik: "au.ik"; il: "au.il"; im: "au.im"; in: "au.in"; io: "au.io"; ip: "au.ip"; iq: "au.iq"; ir: "au.ir"; is: "au.is"; it: "au.it"; iu: "au.iu"; iv: "au.iv"; iw: "au.iw"; ix: "au.ix"; iy: "au.iy"; iz: "au.iz"; ja: "au.ja"; jb: "au.jb"; jc: "au.jc"; jd: "au.jd"; je: "au.je"; jf: "au.jf"; jg: "au.jg"; jh: "au.jh"; ji: "au.ji"; jj: "au.jj"; jk: "au.jk"; jl: "au.jl"; jm: "au.jm"; jn: "au.jn"; jo: "au.jo"; jp: "au.jp"; jq: "au.jq"; jr: "au.jr"; js: "au.js"; jt: "au.jt"; ju: "au.ju"; jv: "au.jv"; jw: "au.jw"; jx: "au.jx"; jy: "au.jy"; jz: "au.jz"; ka: "au.ka"; kb: "au.kb"; kc: "au.kc"; kd: "au.kd"; ke: "au.ke"; kf: "au.kf"; kg: "au.kg"; kh: "au.kh"; ki: "au.ki"; kj: "au.kj"; kk: "au.kk"; kl: "au.kl"; km: "au.km"; kn: "au.kn"; ko: "au.ko"; kp: "au.kp"; kq: "au.kq"; kr: "au.kr"; ks: "au.ks"; kt: "au.kt"; ku: "au.ku"; kv: "au.kv"; kw: "au.kw"; kx: "au.kx"; ky: "au.ky"; kz: "au.kz"; la: "au.la"; lb: "au.lb"; lc: "au.lc"; ld: "au.ld"; le: "au.le"; lf: "au.lf"; lg: "au.lg"; lh: "au.lh"; li: "au.li"; lj: "au.lj"; lk: "au.lk"; ll: "au.ll"; lm: "au.lm"; ln: "au.ln"; lo: "au.lo"; lp: "au.lp"; lq: "au.lq"; lr: "au.lr"; ls: "au.ls"; lt: "au.lt"; lu: "au.lu"; lv: "au.lv"; lw: "au.lw"; lx: "au.lx"; ly: "au.ly"; lz: "au.lz"; ma: "au.ma"; mb: "au.mb"; mc: "au.mc"; md: "au.md"; me: "au.me"; mf: "au.mf"; mg: "au.mg"; mh: "au.mh"; mi: "au.mi"; mj: "au.mj"; mk: "au.mk"; ml: "au.ml"; mm: "au.mm"; mn: "au.mn"; mo: "au.mo"; mp: "au.mp"; mq: "au.mq"; mr: "au.mr"; ms: "au.ms"; mt: "au.mt"; mu: "au.mu"; mv: "au.mv"; mw: "au.mw"; mx: "au.mx"; my: "au.my"; mz: "au.mz"; na: "au.na"; nb: "au.nb"; nc: "au.nc"; nd: "au.nd"; ne: "au.ne"; nf: "au.nf"; ng: "au.ng"; nh: "au.nh"; ni: "au.ni"; nj: "au.nj"; nk: "au.nk"; nl: "au.nl"; nm: "au.nm"; nn: "au.nn"; no: "au.no"; np: "au.np"; nq: "au.nq"; nr: "au.nr"; ns: "au.ns"; nt: "au.nt"; nu: "au.nu"; nv: "au.nv"; nw: "au.nw"; nx: "au.nx"; ny: "au.ny"; nz: "au.nz"; oa: "au.oa"; ob: "au.ob"; oc: "au.oc"; od: "au.od"; oe: "au.oe"; of: "au.of"; og: "au.og"; oh: "au.oh"; oi: "au.oi"; oj: "au.oj"; ok: "au.ok"; ol: "au.ol"; om: "au.om"; on: "au.on"; oo: "au.oo"; op: "au.op"; oq: "au.oq"; or: "au.or"; os: "au.os"; ot: "au.ot"; ou: "au.ou"; ov: "au.ov"; ow: "au.ow"; ox: "au.ox"; oy: "au.oy"; oz: "au.oz"; pa: "au.pa"; pb: "au.pb"; pc: "au.pc"; pd: "au.pd"; pe: "au.pe"; pf: "au.pf"; pg: "au.pg"; ph: "au.ph"; pi: "au.pi"; pj: "au.pj"; pk: "au.pk"; pl: "au.pl"; pm: "au.pm"; pn: "au.pn"; po: "au.po"; pp: "au.pp"; pq: "au.pq"; pr: "au.pr"; ps: "au.ps"; pt: "au.pt"; pu: "au.pu"; pv: "au.pv"; pw: "au.pw"; px: "au.px"; py: "au.py"; pz: "au.pz"; qa: "au.qa"; qb: "au.qb"; qc: "au.qc"; qd: "au.qd"; qe: "au.qe"; qf: "au.qf"; qg: "au.qg"; qh: "au.qh"; qi: "au.qi"; qj: "au.qj"; qk: "au.qk"; ql: "au.ql"; qm: "au.qm"; qn: "au.qn"; qo: "au.qo"; qp: "au.qp"; qq: "au.qq"; qr: "au.qr"; qs: "au.qs"; qt: "au.qt"; qu: "au.qu"; qv: "au.qv"; qw: "au.qw"; qx: "au.qx"; qy: "au.qy"; qz: "au.qz"; ra: "au.ra"; rb: "au.rb"; rc: "au.rc"; rd: "au.rd"; re: "au.re"; rf: "au.rf"; rg: "au.rg"; rh: "au.rh"; ri: "au.ri"; rj: "au.rj"; rk: "au.rk"; rl: "au.rl"; rm: "au.rm"; rn: "au.rn"; ro: "au.ro"; rp: "au.rp"; rq: "au.rq"; rr: "au.rr"; rs: "au.rs"; rt: "au.rt"; ru: "au.ru"; rv: "au.rv"; rw: "au.rw"; rx: "au.rx"; ry: "au.ry"; rz: "au.rz"; sa: "au.sa"; sb: "au.sb"; sc: "au.sc"; sd: "au.sd"; se: "au.se"; sf: "au.sf"; sg: "au.sg"; sh: "au.sh"; si: "au.si"; sj: "au.sj"; sk: "au.sk"; sl: "au.sl"; sm: "au.sm"; sn: "au.sn"; so: "au.so"; sp: "au.sp"; sq: "au.sq"; sr: "au.sr"; ss: "au.ss"; st: "au.st"; su: "au.su"; sv: "au.sv"; sw: "au.sw"; sx: "au.sx"; sy: "au.sy"; sz: "au.sz"; ta: "au.ta"; tb: "au.tb"; tc: "au.tc"; td: "au.td"; te: "au.te"; tf: "au.tf"; tg: "au.tg"; th: "au.th"; ti: "au.ti"; tj: "au.tj"; tk: "au.tk"; tl: "au.tl"; tm: "au.tm"; tn: "au.tn"; to: "au.to"; tp: "au.tp"; tq: "au.tq"; tr: "au.tr"; ts: "au.ts"; tt: "au.tt"; tu: "au.tu"; tv: "au.tv"; tw: "au.tw"; tx: "au.tx"; ty: "au.ty"; tz: "au.tz"; ua: "au.ua"; ub: "au.ub"; uc: "au.uc"; ud: "au.ud"; ue: "au.ue"; uf: "au.uf"; ug: "au.ug"; uh: "au.uh"; ui: "au.ui"; uj: "au.uj"; uk: "au.uk"; ul: "au.ul"; um: "au.um"; un: "au.un"; uo: "au.uo"; up: "au.up"; uq: "au.uq"; ur: "au.ur"; us: "au.us"; ut: "au.ut"; uu: "au.uu"; uv: "au.uv"; uw: "au.uw"; ux: "au.ux"; uy: "au.uy"; uz: "au.uz"; va: "au.va"; vb: "au.vb"; vc: "au.vc"; vd: "au.vd"; ve: "au.ve"; vf: "au.vf"; vg: "au.vg"; vh: "au.vh"; vi: "au.vi"; vj: "au.vj"; vk: "au.vk"; vl: "au.vl"; vm: "au.vm"; vn: "au.vn"; vo: "au.vo"; vp: "au.vp"; vq: "au.vq"; vr: "au.vr"; vs: "au.vs"; vt: "au.vt"; vu: "au.vu"; vv: "au.vv"; vw: "au.vw"; vx: "au.vx"; vy: "au.vy"; vz: "au.vz"; wa: "au.wa"; wb: "au.wb"; wc: "au.wc"; wd: "au.wd"; we: "au.we"; wf: "au.wf"; wg: "au.wg"; wh: "au.wh"; wi: "au.wi"; wj: "au.wj"; wk: "au.wk"; wl: "au.wl"; wm: "au.wm"; wn: "au.wn"; wo: "au.wo"; wp: "au.wp"; wq: "au.wq"; wr: "au.wr"; ws: "au.ws"; wt: "au.wt"; wu: "au.wu"; wv: "au.wv"; ww: "au.ww"; wx: "au.wx"; wy: "au.wy"; wz: "au.wz"; xa: "au.xa"; xb: "au.xb"; xc: "au.xc"; xd: "au.xd"; xe: "au.xe"; xf: "au.xf"; xg: "au.xg"; xh: "au.xh"; xi: "au.xi"; xj: "au.xj"; xk: "au.xk"; xl: "au.xl"; xm: "au.xm"; xn: "au.xn"; xo: "au.xo"; xp: "au.xp"; xq: "au.xq"; xr: "au.xr"; xs: "au.xs"; xt: "au.xt"; xu: "au.xu"; xv: "au.xv"; xw: "au.xw"; xx: "au.xx"; xy: "au.xy"; xz: "au.xz"; ya: "au.ya"; yb: "au.yb"; yc: "au.yc"; yd: "au.yd"; ye: "au.ye"; yf: "au.yf"; yg: "au.yg"; yh: "au.yh"; yi: "au.yi"; yj: "au.yj"; yk: "au.yk"; yl: "au.yl"; ym: "au.ym"; yn: "au.yn"; yo: "au.yo"; yp: "au.yp"; yq: "au.yq"; yr: "au.yr"; ys: "au.ys"; yt: "au.yt"; yu: "au.yu"; yv: "au.yv"; yw: "au.yw"; yx: "au.yx"; yy: "au.yy"; yz: "au.yz"; za: "au.za"; zb: "au.zb"; zc: "au.zc"; zd: "au.zd"; ze: "au.ze"; zf: "au.zf"; zg: "au.zg"; zh: "au.zh"; zi: "au.zi"; zj: "au.zj"; zk: "au.zk"; zl: "au.zl"; zm: "au.zm"; zn: "au.zn"; zo: "au.zo"; zp: "au.zp"; zq: "au.zq"; zr: "au.zr"; zs: "au.zs"; zt: "au.zt"; zu: "au.zu"; zv: "au.zv"; zw: "au.zw"; zx: "au.zx"; zy: "au.zy"; zz: "au.zz"; }; av: { aa: "av.aa"; ab: "av.ab"; ac: "av.ac"; ad: "av.ad"; ae: "av.ae"; af: "av.af"; ag: "av.ag"; ah: "av.ah"; ai: "av.ai"; aj: "av.aj"; ak: "av.ak"; al: "av.al"; am: "av.am"; an: "av.an"; ao: "av.ao"; ap: "av.ap"; aq: "av.aq"; ar: "av.ar"; as: "av.as"; at: "av.at"; au: "av.au"; av: "av.av"; aw: "av.aw"; ax: "av.ax"; ay: "av.ay"; az: "av.az"; ba: "av.ba"; bb: "av.bb"; bc: "av.bc"; bd: "av.bd"; be: "av.be"; bf: "av.bf"; bg: "av.bg"; bh: "av.bh"; bi: "av.bi"; bj: "av.bj"; bk: "av.bk"; bl: "av.bl"; bm: "av.bm"; bn: "av.bn"; bo: "av.bo"; bp: "av.bp"; bq: "av.bq"; br: "av.br"; bs: "av.bs"; bt: "av.bt"; bu: "av.bu"; bv: "av.bv"; bw: "av.bw"; bx: "av.bx"; by: "av.by"; bz: "av.bz"; ca: "av.ca"; cb: "av.cb"; cc: "av.cc"; cd: "av.cd"; ce: "av.ce"; cf: "av.cf"; cg: "av.cg"; ch: "av.ch"; ci: "av.ci"; cj: "av.cj"; ck: "av.ck"; cl: "av.cl"; cm: "av.cm"; cn: "av.cn"; co: "av.co"; cp: "av.cp"; cq: "av.cq"; cr: "av.cr"; cs: "av.cs"; ct: "av.ct"; cu: "av.cu"; cv: "av.cv"; cw: "av.cw"; cx: "av.cx"; cy: "av.cy"; cz: "av.cz"; da: "av.da"; db: "av.db"; dc: "av.dc"; dd: "av.dd"; de: "av.de"; df: "av.df"; dg: "av.dg"; dh: "av.dh"; di: "av.di"; dj: "av.dj"; dk: "av.dk"; dl: "av.dl"; dm: "av.dm"; dn: "av.dn"; do: "av.do"; dp: "av.dp"; dq: "av.dq"; dr: "av.dr"; ds: "av.ds"; dt: "av.dt"; du: "av.du"; dv: "av.dv"; dw: "av.dw"; dx: "av.dx"; dy: "av.dy"; dz: "av.dz"; ea: "av.ea"; eb: "av.eb"; ec: "av.ec"; ed: "av.ed"; ee: "av.ee"; ef: "av.ef"; eg: "av.eg"; eh: "av.eh"; ei: "av.ei"; ej: "av.ej"; ek: "av.ek"; el: "av.el"; em: "av.em"; en: "av.en"; eo: "av.eo"; ep: "av.ep"; eq: "av.eq"; er: "av.er"; es: "av.es"; et: "av.et"; eu: "av.eu"; ev: "av.ev"; ew: "av.ew"; ex: "av.ex"; ey: "av.ey"; ez: "av.ez"; fa: "av.fa"; fb: "av.fb"; fc: "av.fc"; fd: "av.fd"; fe: "av.fe"; ff: "av.ff"; fg: "av.fg"; fh: "av.fh"; fi: "av.fi"; fj: "av.fj"; fk: "av.fk"; fl: "av.fl"; fm: "av.fm"; fn: "av.fn"; fo: "av.fo"; fp: "av.fp"; fq: "av.fq"; fr: "av.fr"; fs: "av.fs"; ft: "av.ft"; fu: "av.fu"; fv: "av.fv"; fw: "av.fw"; fx: "av.fx"; fy: "av.fy"; fz: "av.fz"; ga: "av.ga"; gb: "av.gb"; gc: "av.gc"; gd: "av.gd"; ge: "av.ge"; gf: "av.gf"; gg: "av.gg"; gh: "av.gh"; gi: "av.gi"; gj: "av.gj"; gk: "av.gk"; gl: "av.gl"; gm: "av.gm"; gn: "av.gn"; go: "av.go"; gp: "av.gp"; gq: "av.gq"; gr: "av.gr"; gs: "av.gs"; gt: "av.gt"; gu: "av.gu"; gv: "av.gv"; gw: "av.gw"; gx: "av.gx"; gy: "av.gy"; gz: "av.gz"; ha: "av.ha"; hb: "av.hb"; hc: "av.hc"; hd: "av.hd"; he: "av.he"; hf: "av.hf"; hg: "av.hg"; hh: "av.hh"; hi: "av.hi"; hj: "av.hj"; hk: "av.hk"; hl: "av.hl"; hm: "av.hm"; hn: "av.hn"; ho: "av.ho"; hp: "av.hp"; hq: "av.hq"; hr: "av.hr"; hs: "av.hs"; ht: "av.ht"; hu: "av.hu"; hv: "av.hv"; hw: "av.hw"; hx: "av.hx"; hy: "av.hy"; hz: "av.hz"; ia: "av.ia"; ib: "av.ib"; ic: "av.ic"; id: "av.id"; ie: "av.ie"; if: "av.if"; ig: "av.ig"; ih: "av.ih"; ii: "av.ii"; ij: "av.ij"; ik: "av.ik"; il: "av.il"; im: "av.im"; in: "av.in"; io: "av.io"; ip: "av.ip"; iq: "av.iq"; ir: "av.ir"; is: "av.is"; it: "av.it"; iu: "av.iu"; iv: "av.iv"; iw: "av.iw"; ix: "av.ix"; iy: "av.iy"; iz: "av.iz"; ja: "av.ja"; jb: "av.jb"; jc: "av.jc"; jd: "av.jd"; je: "av.je"; jf: "av.jf"; jg: "av.jg"; jh: "av.jh"; ji: "av.ji"; jj: "av.jj"; jk: "av.jk"; jl: "av.jl"; jm: "av.jm"; jn: "av.jn"; jo: "av.jo"; jp: "av.jp"; jq: "av.jq"; jr: "av.jr"; js: "av.js"; jt: "av.jt"; ju: "av.ju"; jv: "av.jv"; jw: "av.jw"; jx: "av.jx"; jy: "av.jy"; jz: "av.jz"; ka: "av.ka"; kb: "av.kb"; kc: "av.kc"; kd: "av.kd"; ke: "av.ke"; kf: "av.kf"; kg: "av.kg"; kh: "av.kh"; ki: "av.ki"; kj: "av.kj"; kk: "av.kk"; kl: "av.kl"; km: "av.km"; kn: "av.kn"; ko: "av.ko"; kp: "av.kp"; kq: "av.kq"; kr: "av.kr"; ks: "av.ks"; kt: "av.kt"; ku: "av.ku"; kv: "av.kv"; kw: "av.kw"; kx: "av.kx"; ky: "av.ky"; kz: "av.kz"; la: "av.la"; lb: "av.lb"; lc: "av.lc"; ld: "av.ld"; le: "av.le"; lf: "av.lf"; lg: "av.lg"; lh: "av.lh"; li: "av.li"; lj: "av.lj"; lk: "av.lk"; ll: "av.ll"; lm: "av.lm"; ln: "av.ln"; lo: "av.lo"; lp: "av.lp"; lq: "av.lq"; lr: "av.lr"; ls: "av.ls"; lt: "av.lt"; lu: "av.lu"; lv: "av.lv"; lw: "av.lw"; lx: "av.lx"; ly: "av.ly"; lz: "av.lz"; ma: "av.ma"; mb: "av.mb"; mc: "av.mc"; md: "av.md"; me: "av.me"; mf: "av.mf"; mg: "av.mg"; mh: "av.mh"; mi: "av.mi"; mj: "av.mj"; mk: "av.mk"; ml: "av.ml"; mm: "av.mm"; mn: "av.mn"; mo: "av.mo"; mp: "av.mp"; mq: "av.mq"; mr: "av.mr"; ms: "av.ms"; mt: "av.mt"; mu: "av.mu"; mv: "av.mv"; mw: "av.mw"; mx: "av.mx"; my: "av.my"; mz: "av.mz"; na: "av.na"; nb: "av.nb"; nc: "av.nc"; nd: "av.nd"; ne: "av.ne"; nf: "av.nf"; ng: "av.ng"; nh: "av.nh"; ni: "av.ni"; nj: "av.nj"; nk: "av.nk"; nl: "av.nl"; nm: "av.nm"; nn: "av.nn"; no: "av.no"; np: "av.np"; nq: "av.nq"; nr: "av.nr"; ns: "av.ns"; nt: "av.nt"; nu: "av.nu"; nv: "av.nv"; nw: "av.nw"; nx: "av.nx"; ny: "av.ny"; nz: "av.nz"; oa: "av.oa"; ob: "av.ob"; oc: "av.oc"; od: "av.od"; oe: "av.oe"; of: "av.of"; og: "av.og"; oh: "av.oh"; oi: "av.oi"; oj: "av.oj"; ok: "av.ok"; ol: "av.ol"; om: "av.om"; on: "av.on"; oo: "av.oo"; op: "av.op"; oq: "av.oq"; or: "av.or"; os: "av.os"; ot: "av.ot"; ou: "av.ou"; ov: "av.ov"; ow: "av.ow"; ox: "av.ox"; oy: "av.oy"; oz: "av.oz"; pa: "av.pa"; pb: "av.pb"; pc: "av.pc"; pd: "av.pd"; pe: "av.pe"; pf: "av.pf"; pg: "av.pg"; ph: "av.ph"; pi: "av.pi"; pj: "av.pj"; pk: "av.pk"; pl: "av.pl"; pm: "av.pm"; pn: "av.pn"; po: "av.po"; pp: "av.pp"; pq: "av.pq"; pr: "av.pr"; ps: "av.ps"; pt: "av.pt"; pu: "av.pu"; pv: "av.pv"; pw: "av.pw"; px: "av.px"; py: "av.py"; pz: "av.pz"; qa: "av.qa"; qb: "av.qb"; qc: "av.qc"; qd: "av.qd"; qe: "av.qe"; qf: "av.qf"; qg: "av.qg"; qh: "av.qh"; qi: "av.qi"; qj: "av.qj"; qk: "av.qk"; ql: "av.ql"; qm: "av.qm"; qn: "av.qn"; qo: "av.qo"; qp: "av.qp"; qq: "av.qq"; qr: "av.qr"; qs: "av.qs"; qt: "av.qt"; qu: "av.qu"; qv: "av.qv"; qw: "av.qw"; qx: "av.qx"; qy: "av.qy"; qz: "av.qz"; ra: "av.ra"; rb: "av.rb"; rc: "av.rc"; rd: "av.rd"; re: "av.re"; rf: "av.rf"; rg: "av.rg"; rh: "av.rh"; ri: "av.ri"; rj: "av.rj"; rk: "av.rk"; rl: "av.rl"; rm: "av.rm"; rn: "av.rn"; ro: "av.ro"; rp: "av.rp"; rq: "av.rq"; rr: "av.rr"; rs: "av.rs"; rt: "av.rt"; ru: "av.ru"; rv: "av.rv"; rw: "av.rw"; rx: "av.rx"; ry: "av.ry"; rz: "av.rz"; sa: "av.sa"; sb: "av.sb"; sc: "av.sc"; sd: "av.sd"; se: "av.se"; sf: "av.sf"; sg: "av.sg"; sh: "av.sh"; si: "av.si"; sj: "av.sj"; sk: "av.sk"; sl: "av.sl"; sm: "av.sm"; sn: "av.sn"; so: "av.so"; sp: "av.sp"; sq: "av.sq"; sr: "av.sr"; ss: "av.ss"; st: "av.st"; su: "av.su"; sv: "av.sv"; sw: "av.sw"; sx: "av.sx"; sy: "av.sy"; sz: "av.sz"; ta: "av.ta"; tb: "av.tb"; tc: "av.tc"; td: "av.td"; te: "av.te"; tf: "av.tf"; tg: "av.tg"; th: "av.th"; ti: "av.ti"; tj: "av.tj"; tk: "av.tk"; tl: "av.tl"; tm: "av.tm"; tn: "av.tn"; to: "av.to"; tp: "av.tp"; tq: "av.tq"; tr: "av.tr"; ts: "av.ts"; tt: "av.tt"; tu: "av.tu"; tv: "av.tv"; tw: "av.tw"; tx: "av.tx"; ty: "av.ty"; tz: "av.tz"; ua: "av.ua"; ub: "av.ub"; uc: "av.uc"; ud: "av.ud"; ue: "av.ue"; uf: "av.uf"; ug: "av.ug"; uh: "av.uh"; ui: "av.ui"; uj: "av.uj"; uk: "av.uk"; ul: "av.ul"; um: "av.um"; un: "av.un"; uo: "av.uo"; up: "av.up"; uq: "av.uq"; ur: "av.ur"; us: "av.us"; ut: "av.ut"; uu: "av.uu"; uv: "av.uv"; uw: "av.uw"; ux: "av.ux"; uy: "av.uy"; uz: "av.uz"; va: "av.va"; vb: "av.vb"; vc: "av.vc"; vd: "av.vd"; ve: "av.ve"; vf: "av.vf"; vg: "av.vg"; vh: "av.vh"; vi: "av.vi"; vj: "av.vj"; vk: "av.vk"; vl: "av.vl"; vm: "av.vm"; vn: "av.vn"; vo: "av.vo"; vp: "av.vp"; vq: "av.vq"; vr: "av.vr"; vs: "av.vs"; vt: "av.vt"; vu: "av.vu"; vv: "av.vv"; vw: "av.vw"; vx: "av.vx"; vy: "av.vy"; vz: "av.vz"; wa: "av.wa"; wb: "av.wb"; wc: "av.wc"; wd: "av.wd"; we: "av.we"; wf: "av.wf"; wg: "av.wg"; wh: "av.wh"; wi: "av.wi"; wj: "av.wj"; wk: "av.wk"; wl: "av.wl"; wm: "av.wm"; wn: "av.wn"; wo: "av.wo"; wp: "av.wp"; wq: "av.wq"; wr: "av.wr"; ws: "av.ws"; wt: "av.wt"; wu: "av.wu"; wv: "av.wv"; ww: "av.ww"; wx: "av.wx"; wy: "av.wy"; wz: "av.wz"; xa: "av.xa"; xb: "av.xb"; xc: "av.xc"; xd: "av.xd"; xe: "av.xe"; xf: "av.xf"; xg: "av.xg"; xh: "av.xh"; xi: "av.xi"; xj: "av.xj"; xk: "av.xk"; xl: "av.xl"; xm: "av.xm"; xn: "av.xn"; xo: "av.xo"; xp: "av.xp"; xq: "av.xq"; xr: "av.xr"; xs: "av.xs"; xt: "av.xt"; xu: "av.xu"; xv: "av.xv"; xw: "av.xw"; xx: "av.xx"; xy: "av.xy"; xz: "av.xz"; ya: "av.ya"; yb: "av.yb"; yc: "av.yc"; yd: "av.yd"; ye: "av.ye"; yf: "av.yf"; yg: "av.yg"; yh: "av.yh"; yi: "av.yi"; yj: "av.yj"; yk: "av.yk"; yl: "av.yl"; ym: "av.ym"; yn: "av.yn"; yo: "av.yo"; yp: "av.yp"; yq: "av.yq"; yr: "av.yr"; ys: "av.ys"; yt: "av.yt"; yu: "av.yu"; yv: "av.yv"; yw: "av.yw"; yx: "av.yx"; yy: "av.yy"; yz: "av.yz"; za: "av.za"; zb: "av.zb"; zc: "av.zc"; zd: "av.zd"; ze: "av.ze"; zf: "av.zf"; zg: "av.zg"; zh: "av.zh"; zi: "av.zi"; zj: "av.zj"; zk: "av.zk"; zl: "av.zl"; zm: "av.zm"; zn: "av.zn"; zo: "av.zo"; zp: "av.zp"; zq: "av.zq"; zr: "av.zr"; zs: "av.zs"; zt: "av.zt"; zu: "av.zu"; zv: "av.zv"; zw: "av.zw"; zx: "av.zx"; zy: "av.zy"; zz: "av.zz"; }; aw: { aa: "aw.aa"; ab: "aw.ab"; ac: "aw.ac"; ad: "aw.ad"; ae: "aw.ae"; af: "aw.af"; ag: "aw.ag"; ah: "aw.ah"; ai: "aw.ai"; aj: "aw.aj"; ak: "aw.ak"; al: "aw.al"; am: "aw.am"; an: "aw.an"; ao: "aw.ao"; ap: "aw.ap"; aq: "aw.aq"; ar: "aw.ar"; as: "aw.as"; at: "aw.at"; au: "aw.au"; av: "aw.av"; aw: "aw.aw"; ax: "aw.ax"; ay: "aw.ay"; az: "aw.az"; ba: "aw.ba"; bb: "aw.bb"; bc: "aw.bc"; bd: "aw.bd"; be: "aw.be"; bf: "aw.bf"; bg: "aw.bg"; bh: "aw.bh"; bi: "aw.bi"; bj: "aw.bj"; bk: "aw.bk"; bl: "aw.bl"; bm: "aw.bm"; bn: "aw.bn"; bo: "aw.bo"; bp: "aw.bp"; bq: "aw.bq"; br: "aw.br"; bs: "aw.bs"; bt: "aw.bt"; bu: "aw.bu"; bv: "aw.bv"; bw: "aw.bw"; bx: "aw.bx"; by: "aw.by"; bz: "aw.bz"; ca: "aw.ca"; cb: "aw.cb"; cc: "aw.cc"; cd: "aw.cd"; ce: "aw.ce"; cf: "aw.cf"; cg: "aw.cg"; ch: "aw.ch"; ci: "aw.ci"; cj: "aw.cj"; ck: "aw.ck"; cl: "aw.cl"; cm: "aw.cm"; cn: "aw.cn"; co: "aw.co"; cp: "aw.cp"; cq: "aw.cq"; cr: "aw.cr"; cs: "aw.cs"; ct: "aw.ct"; cu: "aw.cu"; cv: "aw.cv"; cw: "aw.cw"; cx: "aw.cx"; cy: "aw.cy"; cz: "aw.cz"; da: "aw.da"; db: "aw.db"; dc: "aw.dc"; dd: "aw.dd"; de: "aw.de"; df: "aw.df"; dg: "aw.dg"; dh: "aw.dh"; di: "aw.di"; dj: "aw.dj"; dk: "aw.dk"; dl: "aw.dl"; dm: "aw.dm"; dn: "aw.dn"; do: "aw.do"; dp: "aw.dp"; dq: "aw.dq"; dr: "aw.dr"; ds: "aw.ds"; dt: "aw.dt"; du: "aw.du"; dv: "aw.dv"; dw: "aw.dw"; dx: "aw.dx"; dy: "aw.dy"; dz: "aw.dz"; ea: "aw.ea"; eb: "aw.eb"; ec: "aw.ec"; ed: "aw.ed"; ee: "aw.ee"; ef: "aw.ef"; eg: "aw.eg"; eh: "aw.eh"; ei: "aw.ei"; ej: "aw.ej"; ek: "aw.ek"; el: "aw.el"; em: "aw.em"; en: "aw.en"; eo: "aw.eo"; ep: "aw.ep"; eq: "aw.eq"; er: "aw.er"; es: "aw.es"; et: "aw.et"; eu: "aw.eu"; ev: "aw.ev"; ew: "aw.ew"; ex: "aw.ex"; ey: "aw.ey"; ez: "aw.ez"; fa: "aw.fa"; fb: "aw.fb"; fc: "aw.fc"; fd: "aw.fd"; fe: "aw.fe"; ff: "aw.ff"; fg: "aw.fg"; fh: "aw.fh"; fi: "aw.fi"; fj: "aw.fj"; fk: "aw.fk"; fl: "aw.fl"; fm: "aw.fm"; fn: "aw.fn"; fo: "aw.fo"; fp: "aw.fp"; fq: "aw.fq"; fr: "aw.fr"; fs: "aw.fs"; ft: "aw.ft"; fu: "aw.fu"; fv: "aw.fv"; fw: "aw.fw"; fx: "aw.fx"; fy: "aw.fy"; fz: "aw.fz"; ga: "aw.ga"; gb: "aw.gb"; gc: "aw.gc"; gd: "aw.gd"; ge: "aw.ge"; gf: "aw.gf"; gg: "aw.gg"; gh: "aw.gh"; gi: "aw.gi"; gj: "aw.gj"; gk: "aw.gk"; gl: "aw.gl"; gm: "aw.gm"; gn: "aw.gn"; go: "aw.go"; gp: "aw.gp"; gq: "aw.gq"; gr: "aw.gr"; gs: "aw.gs"; gt: "aw.gt"; gu: "aw.gu"; gv: "aw.gv"; gw: "aw.gw"; gx: "aw.gx"; gy: "aw.gy"; gz: "aw.gz"; ha: "aw.ha"; hb: "aw.hb"; hc: "aw.hc"; hd: "aw.hd"; he: "aw.he"; hf: "aw.hf"; hg: "aw.hg"; hh: "aw.hh"; hi: "aw.hi"; hj: "aw.hj"; hk: "aw.hk"; hl: "aw.hl"; hm: "aw.hm"; hn: "aw.hn"; ho: "aw.ho"; hp: "aw.hp"; hq: "aw.hq"; hr: "aw.hr"; hs: "aw.hs"; ht: "aw.ht"; hu: "aw.hu"; hv: "aw.hv"; hw: "aw.hw"; hx: "aw.hx"; hy: "aw.hy"; hz: "aw.hz"; ia: "aw.ia"; ib: "aw.ib"; ic: "aw.ic"; id: "aw.id"; ie: "aw.ie"; if: "aw.if"; ig: "aw.ig"; ih: "aw.ih"; ii: "aw.ii"; ij: "aw.ij"; ik: "aw.ik"; il: "aw.il"; im: "aw.im"; in: "aw.in"; io: "aw.io"; ip: "aw.ip"; iq: "aw.iq"; ir: "aw.ir"; is: "aw.is"; it: "aw.it"; iu: "aw.iu"; iv: "aw.iv"; iw: "aw.iw"; ix: "aw.ix"; iy: "aw.iy"; iz: "aw.iz"; ja: "aw.ja"; jb: "aw.jb"; jc: "aw.jc"; jd: "aw.jd"; je: "aw.je"; jf: "aw.jf"; jg: "aw.jg"; jh: "aw.jh"; ji: "aw.ji"; jj: "aw.jj"; jk: "aw.jk"; jl: "aw.jl"; jm: "aw.jm"; jn: "aw.jn"; jo: "aw.jo"; jp: "aw.jp"; jq: "aw.jq"; jr: "aw.jr"; js: "aw.js"; jt: "aw.jt"; ju: "aw.ju"; jv: "aw.jv"; jw: "aw.jw"; jx: "aw.jx"; jy: "aw.jy"; jz: "aw.jz"; ka: "aw.ka"; kb: "aw.kb"; kc: "aw.kc"; kd: "aw.kd"; ke: "aw.ke"; kf: "aw.kf"; kg: "aw.kg"; kh: "aw.kh"; ki: "aw.ki"; kj: "aw.kj"; kk: "aw.kk"; kl: "aw.kl"; km: "aw.km"; kn: "aw.kn"; ko: "aw.ko"; kp: "aw.kp"; kq: "aw.kq"; kr: "aw.kr"; ks: "aw.ks"; kt: "aw.kt"; ku: "aw.ku"; kv: "aw.kv"; kw: "aw.kw"; kx: "aw.kx"; ky: "aw.ky"; kz: "aw.kz"; la: "aw.la"; lb: "aw.lb"; lc: "aw.lc"; ld: "aw.ld"; le: "aw.le"; lf: "aw.lf"; lg: "aw.lg"; lh: "aw.lh"; li: "aw.li"; lj: "aw.lj"; lk: "aw.lk"; ll: "aw.ll"; lm: "aw.lm"; ln: "aw.ln"; lo: "aw.lo"; lp: "aw.lp"; lq: "aw.lq"; lr: "aw.lr"; ls: "aw.ls"; lt: "aw.lt"; lu: "aw.lu"; lv: "aw.lv"; lw: "aw.lw"; lx: "aw.lx"; ly: "aw.ly"; lz: "aw.lz"; ma: "aw.ma"; mb: "aw.mb"; mc: "aw.mc"; md: "aw.md"; me: "aw.me"; mf: "aw.mf"; mg: "aw.mg"; mh: "aw.mh"; mi: "aw.mi"; mj: "aw.mj"; mk: "aw.mk"; ml: "aw.ml"; mm: "aw.mm"; mn: "aw.mn"; mo: "aw.mo"; mp: "aw.mp"; mq: "aw.mq"; mr: "aw.mr"; ms: "aw.ms"; mt: "aw.mt"; mu: "aw.mu"; mv: "aw.mv"; mw: "aw.mw"; mx: "aw.mx"; my: "aw.my"; mz: "aw.mz"; na: "aw.na"; nb: "aw.nb"; nc: "aw.nc"; nd: "aw.nd"; ne: "aw.ne"; nf: "aw.nf"; ng: "aw.ng"; nh: "aw.nh"; ni: "aw.ni"; nj: "aw.nj"; nk: "aw.nk"; nl: "aw.nl"; nm: "aw.nm"; nn: "aw.nn"; no: "aw.no"; np: "aw.np"; nq: "aw.nq"; nr: "aw.nr"; ns: "aw.ns"; nt: "aw.nt"; nu: "aw.nu"; nv: "aw.nv"; nw: "aw.nw"; nx: "aw.nx"; ny: "aw.ny"; nz: "aw.nz"; oa: "aw.oa"; ob: "aw.ob"; oc: "aw.oc"; od: "aw.od"; oe: "aw.oe"; of: "aw.of"; og: "aw.og"; oh: "aw.oh"; oi: "aw.oi"; oj: "aw.oj"; ok: "aw.ok"; ol: "aw.ol"; om: "aw.om"; on: "aw.on"; oo: "aw.oo"; op: "aw.op"; oq: "aw.oq"; or: "aw.or"; os: "aw.os"; ot: "aw.ot"; ou: "aw.ou"; ov: "aw.ov"; ow: "aw.ow"; ox: "aw.ox"; oy: "aw.oy"; oz: "aw.oz"; pa: "aw.pa"; pb: "aw.pb"; pc: "aw.pc"; pd: "aw.pd"; pe: "aw.pe"; pf: "aw.pf"; pg: "aw.pg"; ph: "aw.ph"; pi: "aw.pi"; pj: "aw.pj"; pk: "aw.pk"; pl: "aw.pl"; pm: "aw.pm"; pn: "aw.pn"; po: "aw.po"; pp: "aw.pp"; pq: "aw.pq"; pr: "aw.pr"; ps: "aw.ps"; pt: "aw.pt"; pu: "aw.pu"; pv: "aw.pv"; pw: "aw.pw"; px: "aw.px"; py: "aw.py"; pz: "aw.pz"; qa: "aw.qa"; qb: "aw.qb"; qc: "aw.qc"; qd: "aw.qd"; qe: "aw.qe"; qf: "aw.qf"; qg: "aw.qg"; qh: "aw.qh"; qi: "aw.qi"; qj: "aw.qj"; qk: "aw.qk"; ql: "aw.ql"; qm: "aw.qm"; qn: "aw.qn"; qo: "aw.qo"; qp: "aw.qp"; qq: "aw.qq"; qr: "aw.qr"; qs: "aw.qs"; qt: "aw.qt"; qu: "aw.qu"; qv: "aw.qv"; qw: "aw.qw"; qx: "aw.qx"; qy: "aw.qy"; qz: "aw.qz"; ra: "aw.ra"; rb: "aw.rb"; rc: "aw.rc"; rd: "aw.rd"; re: "aw.re"; rf: "aw.rf"; rg: "aw.rg"; rh: "aw.rh"; ri: "aw.ri"; rj: "aw.rj"; rk: "aw.rk"; rl: "aw.rl"; rm: "aw.rm"; rn: "aw.rn"; ro: "aw.ro"; rp: "aw.rp"; rq: "aw.rq"; rr: "aw.rr"; rs: "aw.rs"; rt: "aw.rt"; ru: "aw.ru"; rv: "aw.rv"; rw: "aw.rw"; rx: "aw.rx"; ry: "aw.ry"; rz: "aw.rz"; sa: "aw.sa"; sb: "aw.sb"; sc: "aw.sc"; sd: "aw.sd"; se: "aw.se"; sf: "aw.sf"; sg: "aw.sg"; sh: "aw.sh"; si: "aw.si"; sj: "aw.sj"; sk: "aw.sk"; sl: "aw.sl"; sm: "aw.sm"; sn: "aw.sn"; so: "aw.so"; sp: "aw.sp"; sq: "aw.sq"; sr: "aw.sr"; ss: "aw.ss"; st: "aw.st"; su: "aw.su"; sv: "aw.sv"; sw: "aw.sw"; sx: "aw.sx"; sy: "aw.sy"; sz: "aw.sz"; ta: "aw.ta"; tb: "aw.tb"; tc: "aw.tc"; td: "aw.td"; te: "aw.te"; tf: "aw.tf"; tg: "aw.tg"; th: "aw.th"; ti: "aw.ti"; tj: "aw.tj"; tk: "aw.tk"; tl: "aw.tl"; tm: "aw.tm"; tn: "aw.tn"; to: "aw.to"; tp: "aw.tp"; tq: "aw.tq"; tr: "aw.tr"; ts: "aw.ts"; tt: "aw.tt"; tu: "aw.tu"; tv: "aw.tv"; tw: "aw.tw"; tx: "aw.tx"; ty: "aw.ty"; tz: "aw.tz"; ua: "aw.ua"; ub: "aw.ub"; uc: "aw.uc"; ud: "aw.ud"; ue: "aw.ue"; uf: "aw.uf"; ug: "aw.ug"; uh: "aw.uh"; ui: "aw.ui"; uj: "aw.uj"; uk: "aw.uk"; ul: "aw.ul"; um: "aw.um"; un: "aw.un"; uo: "aw.uo"; up: "aw.up"; uq: "aw.uq"; ur: "aw.ur"; us: "aw.us"; ut: "aw.ut"; uu: "aw.uu"; uv: "aw.uv"; uw: "aw.uw"; ux: "aw.ux"; uy: "aw.uy"; uz: "aw.uz"; va: "aw.va"; vb: "aw.vb"; vc: "aw.vc"; vd: "aw.vd"; ve: "aw.ve"; vf: "aw.vf"; vg: "aw.vg"; vh: "aw.vh"; vi: "aw.vi"; vj: "aw.vj"; vk: "aw.vk"; vl: "aw.vl"; vm: "aw.vm"; vn: "aw.vn"; vo: "aw.vo"; vp: "aw.vp"; vq: "aw.vq"; vr: "aw.vr"; vs: "aw.vs"; vt: "aw.vt"; vu: "aw.vu"; vv: "aw.vv"; vw: "aw.vw"; vx: "aw.vx"; vy: "aw.vy"; vz: "aw.vz"; wa: "aw.wa"; wb: "aw.wb"; wc: "aw.wc"; wd: "aw.wd"; we: "aw.we"; wf: "aw.wf"; wg: "aw.wg"; wh: "aw.wh"; wi: "aw.wi"; wj: "aw.wj"; wk: "aw.wk"; wl: "aw.wl"; wm: "aw.wm"; wn: "aw.wn"; wo: "aw.wo"; wp: "aw.wp"; wq: "aw.wq"; wr: "aw.wr"; ws: "aw.ws"; wt: "aw.wt"; wu: "aw.wu"; wv: "aw.wv"; ww: "aw.ww"; wx: "aw.wx"; wy: "aw.wy"; wz: "aw.wz"; xa: "aw.xa"; xb: "aw.xb"; xc: "aw.xc"; xd: "aw.xd"; xe: "aw.xe"; xf: "aw.xf"; xg: "aw.xg"; xh: "aw.xh"; xi: "aw.xi"; xj: "aw.xj"; xk: "aw.xk"; xl: "aw.xl"; xm: "aw.xm"; xn: "aw.xn"; xo: "aw.xo"; xp: "aw.xp"; xq: "aw.xq"; xr: "aw.xr"; xs: "aw.xs"; xt: "aw.xt"; xu: "aw.xu"; xv: "aw.xv"; xw: "aw.xw"; xx: "aw.xx"; xy: "aw.xy"; xz: "aw.xz"; ya: "aw.ya"; yb: "aw.yb"; yc: "aw.yc"; yd: "aw.yd"; ye: "aw.ye"; yf: "aw.yf"; yg: "aw.yg"; yh: "aw.yh"; yi: "aw.yi"; yj: "aw.yj"; yk: "aw.yk"; yl: "aw.yl"; ym: "aw.ym"; yn: "aw.yn"; yo: "aw.yo"; yp: "aw.yp"; yq: "aw.yq"; yr: "aw.yr"; ys: "aw.ys"; yt: "aw.yt"; yu: "aw.yu"; yv: "aw.yv"; yw: "aw.yw"; yx: "aw.yx"; yy: "aw.yy"; yz: "aw.yz"; za: "aw.za"; zb: "aw.zb"; zc: "aw.zc"; zd: "aw.zd"; ze: "aw.ze"; zf: "aw.zf"; zg: "aw.zg"; zh: "aw.zh"; zi: "aw.zi"; zj: "aw.zj"; zk: "aw.zk"; zl: "aw.zl"; zm: "aw.zm"; zn: "aw.zn"; zo: "aw.zo"; zp: "aw.zp"; zq: "aw.zq"; zr: "aw.zr"; zs: "aw.zs"; zt: "aw.zt"; zu: "aw.zu"; zv: "aw.zv"; zw: "aw.zw"; zx: "aw.zx"; zy: "aw.zy"; zz: "aw.zz"; }; ax: { aa: "ax.aa"; ab: "ax.ab"; ac: "ax.ac"; ad: "ax.ad"; ae: "ax.ae"; af: "ax.af"; ag: "ax.ag"; ah: "ax.ah"; ai: "ax.ai"; aj: "ax.aj"; ak: "ax.ak"; al: "ax.al"; am: "ax.am"; an: "ax.an"; ao: "ax.ao"; ap: "ax.ap"; aq: "ax.aq"; ar: "ax.ar"; as: "ax.as"; at: "ax.at"; au: "ax.au"; av: "ax.av"; aw: "ax.aw"; ax: "ax.ax"; ay: "ax.ay"; az: "ax.az"; ba: "ax.ba"; bb: "ax.bb"; bc: "ax.bc"; bd: "ax.bd"; be: "ax.be"; bf: "ax.bf"; bg: "ax.bg"; bh: "ax.bh"; bi: "ax.bi"; bj: "ax.bj"; bk: "ax.bk"; bl: "ax.bl"; bm: "ax.bm"; bn: "ax.bn"; bo: "ax.bo"; bp: "ax.bp"; bq: "ax.bq"; br: "ax.br"; bs: "ax.bs"; bt: "ax.bt"; bu: "ax.bu"; bv: "ax.bv"; bw: "ax.bw"; bx: "ax.bx"; by: "ax.by"; bz: "ax.bz"; ca: "ax.ca"; cb: "ax.cb"; cc: "ax.cc"; cd: "ax.cd"; ce: "ax.ce"; cf: "ax.cf"; cg: "ax.cg"; ch: "ax.ch"; ci: "ax.ci"; cj: "ax.cj"; ck: "ax.ck"; cl: "ax.cl"; cm: "ax.cm"; cn: "ax.cn"; co: "ax.co"; cp: "ax.cp"; cq: "ax.cq"; cr: "ax.cr"; cs: "ax.cs"; ct: "ax.ct"; cu: "ax.cu"; cv: "ax.cv"; cw: "ax.cw"; cx: "ax.cx"; cy: "ax.cy"; cz: "ax.cz"; da: "ax.da"; db: "ax.db"; dc: "ax.dc"; dd: "ax.dd"; de: "ax.de"; df: "ax.df"; dg: "ax.dg"; dh: "ax.dh"; di: "ax.di"; dj: "ax.dj"; dk: "ax.dk"; dl: "ax.dl"; dm: "ax.dm"; dn: "ax.dn"; do: "ax.do"; dp: "ax.dp"; dq: "ax.dq"; dr: "ax.dr"; ds: "ax.ds"; dt: "ax.dt"; du: "ax.du"; dv: "ax.dv"; dw: "ax.dw"; dx: "ax.dx"; dy: "ax.dy"; dz: "ax.dz"; ea: "ax.ea"; eb: "ax.eb"; ec: "ax.ec"; ed: "ax.ed"; ee: "ax.ee"; ef: "ax.ef"; eg: "ax.eg"; eh: "ax.eh"; ei: "ax.ei"; ej: "ax.ej"; ek: "ax.ek"; el: "ax.el"; em: "ax.em"; en: "ax.en"; eo: "ax.eo"; ep: "ax.ep"; eq: "ax.eq"; er: "ax.er"; es: "ax.es"; et: "ax.et"; eu: "ax.eu"; ev: "ax.ev"; ew: "ax.ew"; ex: "ax.ex"; ey: "ax.ey"; ez: "ax.ez"; fa: "ax.fa"; fb: "ax.fb"; fc: "ax.fc"; fd: "ax.fd"; fe: "ax.fe"; ff: "ax.ff"; fg: "ax.fg"; fh: "ax.fh"; fi: "ax.fi"; fj: "ax.fj"; fk: "ax.fk"; fl: "ax.fl"; fm: "ax.fm"; fn: "ax.fn"; fo: "ax.fo"; fp: "ax.fp"; fq: "ax.fq"; fr: "ax.fr"; fs: "ax.fs"; ft: "ax.ft"; fu: "ax.fu"; fv: "ax.fv"; fw: "ax.fw"; fx: "ax.fx"; fy: "ax.fy"; fz: "ax.fz"; ga: "ax.ga"; gb: "ax.gb"; gc: "ax.gc"; gd: "ax.gd"; ge: "ax.ge"; gf: "ax.gf"; gg: "ax.gg"; gh: "ax.gh"; gi: "ax.gi"; gj: "ax.gj"; gk: "ax.gk"; gl: "ax.gl"; gm: "ax.gm"; gn: "ax.gn"; go: "ax.go"; gp: "ax.gp"; gq: "ax.gq"; gr: "ax.gr"; gs: "ax.gs"; gt: "ax.gt"; gu: "ax.gu"; gv: "ax.gv"; gw: "ax.gw"; gx: "ax.gx"; gy: "ax.gy"; gz: "ax.gz"; ha: "ax.ha"; hb: "ax.hb"; hc: "ax.hc"; hd: "ax.hd"; he: "ax.he"; hf: "ax.hf"; hg: "ax.hg"; hh: "ax.hh"; hi: "ax.hi"; hj: "ax.hj"; hk: "ax.hk"; hl: "ax.hl"; hm: "ax.hm"; hn: "ax.hn"; ho: "ax.ho"; hp: "ax.hp"; hq: "ax.hq"; hr: "ax.hr"; hs: "ax.hs"; ht: "ax.ht"; hu: "ax.hu"; hv: "ax.hv"; hw: "ax.hw"; hx: "ax.hx"; hy: "ax.hy"; hz: "ax.hz"; ia: "ax.ia"; ib: "ax.ib"; ic: "ax.ic"; id: "ax.id"; ie: "ax.ie"; if: "ax.if"; ig: "ax.ig"; ih: "ax.ih"; ii: "ax.ii"; ij: "ax.ij"; ik: "ax.ik"; il: "ax.il"; im: "ax.im"; in: "ax.in"; io: "ax.io"; ip: "ax.ip"; iq: "ax.iq"; ir: "ax.ir"; is: "ax.is"; it: "ax.it"; iu: "ax.iu"; iv: "ax.iv"; iw: "ax.iw"; ix: "ax.ix"; iy: "ax.iy"; iz: "ax.iz"; ja: "ax.ja"; jb: "ax.jb"; jc: "ax.jc"; jd: "ax.jd"; je: "ax.je"; jf: "ax.jf"; jg: "ax.jg"; jh: "ax.jh"; ji: "ax.ji"; jj: "ax.jj"; jk: "ax.jk"; jl: "ax.jl"; jm: "ax.jm"; jn: "ax.jn"; jo: "ax.jo"; jp: "ax.jp"; jq: "ax.jq"; jr: "ax.jr"; js: "ax.js"; jt: "ax.jt"; ju: "ax.ju"; jv: "ax.jv"; jw: "ax.jw"; jx: "ax.jx"; jy: "ax.jy"; jz: "ax.jz"; ka: "ax.ka"; kb: "ax.kb"; kc: "ax.kc"; kd: "ax.kd"; ke: "ax.ke"; kf: "ax.kf"; kg: "ax.kg"; kh: "ax.kh"; ki: "ax.ki"; kj: "ax.kj"; kk: "ax.kk"; kl: "ax.kl"; km: "ax.km"; kn: "ax.kn"; ko: "ax.ko"; kp: "ax.kp"; kq: "ax.kq"; kr: "ax.kr"; ks: "ax.ks"; kt: "ax.kt"; ku: "ax.ku"; kv: "ax.kv"; kw: "ax.kw"; kx: "ax.kx"; ky: "ax.ky"; kz: "ax.kz"; la: "ax.la"; lb: "ax.lb"; lc: "ax.lc"; ld: "ax.ld"; le: "ax.le"; lf: "ax.lf"; lg: "ax.lg"; lh: "ax.lh"; li: "ax.li"; lj: "ax.lj"; lk: "ax.lk"; ll: "ax.ll"; lm: "ax.lm"; ln: "ax.ln"; lo: "ax.lo"; lp: "ax.lp"; lq: "ax.lq"; lr: "ax.lr"; ls: "ax.ls"; lt: "ax.lt"; lu: "ax.lu"; lv: "ax.lv"; lw: "ax.lw"; lx: "ax.lx"; ly: "ax.ly"; lz: "ax.lz"; ma: "ax.ma"; mb: "ax.mb"; mc: "ax.mc"; md: "ax.md"; me: "ax.me"; mf: "ax.mf"; mg: "ax.mg"; mh: "ax.mh"; mi: "ax.mi"; mj: "ax.mj"; mk: "ax.mk"; ml: "ax.ml"; mm: "ax.mm"; mn: "ax.mn"; mo: "ax.mo"; mp: "ax.mp"; mq: "ax.mq"; mr: "ax.mr"; ms: "ax.ms"; mt: "ax.mt"; mu: "ax.mu"; mv: "ax.mv"; mw: "ax.mw"; mx: "ax.mx"; my: "ax.my"; mz: "ax.mz"; na: "ax.na"; nb: "ax.nb"; nc: "ax.nc"; nd: "ax.nd"; ne: "ax.ne"; nf: "ax.nf"; ng: "ax.ng"; nh: "ax.nh"; ni: "ax.ni"; nj: "ax.nj"; nk: "ax.nk"; nl: "ax.nl"; nm: "ax.nm"; nn: "ax.nn"; no: "ax.no"; np: "ax.np"; nq: "ax.nq"; nr: "ax.nr"; ns: "ax.ns"; nt: "ax.nt"; nu: "ax.nu"; nv: "ax.nv"; nw: "ax.nw"; nx: "ax.nx"; ny: "ax.ny"; nz: "ax.nz"; oa: "ax.oa"; ob: "ax.ob"; oc: "ax.oc"; od: "ax.od"; oe: "ax.oe"; of: "ax.of"; og: "ax.og"; oh: "ax.oh"; oi: "ax.oi"; oj: "ax.oj"; ok: "ax.ok"; ol: "ax.ol"; om: "ax.om"; on: "ax.on"; oo: "ax.oo"; op: "ax.op"; oq: "ax.oq"; or: "ax.or"; os: "ax.os"; ot: "ax.ot"; ou: "ax.ou"; ov: "ax.ov"; ow: "ax.ow"; ox: "ax.ox"; oy: "ax.oy"; oz: "ax.oz"; pa: "ax.pa"; pb: "ax.pb"; pc: "ax.pc"; pd: "ax.pd"; pe: "ax.pe"; pf: "ax.pf"; pg: "ax.pg"; ph: "ax.ph"; pi: "ax.pi"; pj: "ax.pj"; pk: "ax.pk"; pl: "ax.pl"; pm: "ax.pm"; pn: "ax.pn"; po: "ax.po"; pp: "ax.pp"; pq: "ax.pq"; pr: "ax.pr"; ps: "ax.ps"; pt: "ax.pt"; pu: "ax.pu"; pv: "ax.pv"; pw: "ax.pw"; px: "ax.px"; py: "ax.py"; pz: "ax.pz"; qa: "ax.qa"; qb: "ax.qb"; qc: "ax.qc"; qd: "ax.qd"; qe: "ax.qe"; qf: "ax.qf"; qg: "ax.qg"; qh: "ax.qh"; qi: "ax.qi"; qj: "ax.qj"; qk: "ax.qk"; ql: "ax.ql"; qm: "ax.qm"; qn: "ax.qn"; qo: "ax.qo"; qp: "ax.qp"; qq: "ax.qq"; qr: "ax.qr"; qs: "ax.qs"; qt: "ax.qt"; qu: "ax.qu"; qv: "ax.qv"; qw: "ax.qw"; qx: "ax.qx"; qy: "ax.qy"; qz: "ax.qz"; ra: "ax.ra"; rb: "ax.rb"; rc: "ax.rc"; rd: "ax.rd"; re: "ax.re"; rf: "ax.rf"; rg: "ax.rg"; rh: "ax.rh"; ri: "ax.ri"; rj: "ax.rj"; rk: "ax.rk"; rl: "ax.rl"; rm: "ax.rm"; rn: "ax.rn"; ro: "ax.ro"; rp: "ax.rp"; rq: "ax.rq"; rr: "ax.rr"; rs: "ax.rs"; rt: "ax.rt"; ru: "ax.ru"; rv: "ax.rv"; rw: "ax.rw"; rx: "ax.rx"; ry: "ax.ry"; rz: "ax.rz"; sa: "ax.sa"; sb: "ax.sb"; sc: "ax.sc"; sd: "ax.sd"; se: "ax.se"; sf: "ax.sf"; sg: "ax.sg"; sh: "ax.sh"; si: "ax.si"; sj: "ax.sj"; sk: "ax.sk"; sl: "ax.sl"; sm: "ax.sm"; sn: "ax.sn"; so: "ax.so"; sp: "ax.sp"; sq: "ax.sq"; sr: "ax.sr"; ss: "ax.ss"; st: "ax.st"; su: "ax.su"; sv: "ax.sv"; sw: "ax.sw"; sx: "ax.sx"; sy: "ax.sy"; sz: "ax.sz"; ta: "ax.ta"; tb: "ax.tb"; tc: "ax.tc"; td: "ax.td"; te: "ax.te"; tf: "ax.tf"; tg: "ax.tg"; th: "ax.th"; ti: "ax.ti"; tj: "ax.tj"; tk: "ax.tk"; tl: "ax.tl"; tm: "ax.tm"; tn: "ax.tn"; to: "ax.to"; tp: "ax.tp"; tq: "ax.tq"; tr: "ax.tr"; ts: "ax.ts"; tt: "ax.tt"; tu: "ax.tu"; tv: "ax.tv"; tw: "ax.tw"; tx: "ax.tx"; ty: "ax.ty"; tz: "ax.tz"; ua: "ax.ua"; ub: "ax.ub"; uc: "ax.uc"; ud: "ax.ud"; ue: "ax.ue"; uf: "ax.uf"; ug: "ax.ug"; uh: "ax.uh"; ui: "ax.ui"; uj: "ax.uj"; uk: "ax.uk"; ul: "ax.ul"; um: "ax.um"; un: "ax.un"; uo: "ax.uo"; up: "ax.up"; uq: "ax.uq"; ur: "ax.ur"; us: "ax.us"; ut: "ax.ut"; uu: "ax.uu"; uv: "ax.uv"; uw: "ax.uw"; ux: "ax.ux"; uy: "ax.uy"; uz: "ax.uz"; va: "ax.va"; vb: "ax.vb"; vc: "ax.vc"; vd: "ax.vd"; ve: "ax.ve"; vf: "ax.vf"; vg: "ax.vg"; vh: "ax.vh"; vi: "ax.vi"; vj: "ax.vj"; vk: "ax.vk"; vl: "ax.vl"; vm: "ax.vm"; vn: "ax.vn"; vo: "ax.vo"; vp: "ax.vp"; vq: "ax.vq"; vr: "ax.vr"; vs: "ax.vs"; vt: "ax.vt"; vu: "ax.vu"; vv: "ax.vv"; vw: "ax.vw"; vx: "ax.vx"; vy: "ax.vy"; vz: "ax.vz"; wa: "ax.wa"; wb: "ax.wb"; wc: "ax.wc"; wd: "ax.wd"; we: "ax.we"; wf: "ax.wf"; wg: "ax.wg"; wh: "ax.wh"; wi: "ax.wi"; wj: "ax.wj"; wk: "ax.wk"; wl: "ax.wl"; wm: "ax.wm"; wn: "ax.wn"; wo: "ax.wo"; wp: "ax.wp"; wq: "ax.wq"; wr: "ax.wr"; ws: "ax.ws"; wt: "ax.wt"; wu: "ax.wu"; wv: "ax.wv"; ww: "ax.ww"; wx: "ax.wx"; wy: "ax.wy"; wz: "ax.wz"; xa: "ax.xa"; xb: "ax.xb"; xc: "ax.xc"; xd: "ax.xd"; xe: "ax.xe"; xf: "ax.xf"; xg: "ax.xg"; xh: "ax.xh"; xi: "ax.xi"; xj: "ax.xj"; xk: "ax.xk"; xl: "ax.xl"; xm: "ax.xm"; xn: "ax.xn"; xo: "ax.xo"; xp: "ax.xp"; xq: "ax.xq"; xr: "ax.xr"; xs: "ax.xs"; xt: "ax.xt"; xu: "ax.xu"; xv: "ax.xv"; xw: "ax.xw"; xx: "ax.xx"; xy: "ax.xy"; xz: "ax.xz"; ya: "ax.ya"; yb: "ax.yb"; yc: "ax.yc"; yd: "ax.yd"; ye: "ax.ye"; yf: "ax.yf"; yg: "ax.yg"; yh: "ax.yh"; yi: "ax.yi"; yj: "ax.yj"; yk: "ax.yk"; yl: "ax.yl"; ym: "ax.ym"; yn: "ax.yn"; yo: "ax.yo"; yp: "ax.yp"; yq: "ax.yq"; yr: "ax.yr"; ys: "ax.ys"; yt: "ax.yt"; yu: "ax.yu"; yv: "ax.yv"; yw: "ax.yw"; yx: "ax.yx"; yy: "ax.yy"; yz: "ax.yz"; za: "ax.za"; zb: "ax.zb"; zc: "ax.zc"; zd: "ax.zd"; ze: "ax.ze"; zf: "ax.zf"; zg: "ax.zg"; zh: "ax.zh"; zi: "ax.zi"; zj: "ax.zj"; zk: "ax.zk"; zl: "ax.zl"; zm: "ax.zm"; zn: "ax.zn"; zo: "ax.zo"; zp: "ax.zp"; zq: "ax.zq"; zr: "ax.zr"; zs: "ax.zs"; zt: "ax.zt"; zu: "ax.zu"; zv: "ax.zv"; zw: "ax.zw"; zx: "ax.zx"; zy: "ax.zy"; zz: "ax.zz"; }; ay: { aa: "ay.aa"; ab: "ay.ab"; ac: "ay.ac"; ad: "ay.ad"; ae: "ay.ae"; af: "ay.af"; ag: "ay.ag"; ah: "ay.ah"; ai: "ay.ai"; aj: "ay.aj"; ak: "ay.ak"; al: "ay.al"; am: "ay.am"; an: "ay.an"; ao: "ay.ao"; ap: "ay.ap"; aq: "ay.aq"; ar: "ay.ar"; as: "ay.as"; at: "ay.at"; au: "ay.au"; av: "ay.av"; aw: "ay.aw"; ax: "ay.ax"; ay: "ay.ay"; az: "ay.az"; ba: "ay.ba"; bb: "ay.bb"; bc: "ay.bc"; bd: "ay.bd"; be: "ay.be"; bf: "ay.bf"; bg: "ay.bg"; bh: "ay.bh"; bi: "ay.bi"; bj: "ay.bj"; bk: "ay.bk"; bl: "ay.bl"; bm: "ay.bm"; bn: "ay.bn"; bo: "ay.bo"; bp: "ay.bp"; bq: "ay.bq"; br: "ay.br"; bs: "ay.bs"; bt: "ay.bt"; bu: "ay.bu"; bv: "ay.bv"; bw: "ay.bw"; bx: "ay.bx"; by: "ay.by"; bz: "ay.bz"; ca: "ay.ca"; cb: "ay.cb"; cc: "ay.cc"; cd: "ay.cd"; ce: "ay.ce"; cf: "ay.cf"; cg: "ay.cg"; ch: "ay.ch"; ci: "ay.ci"; cj: "ay.cj"; ck: "ay.ck"; cl: "ay.cl"; cm: "ay.cm"; cn: "ay.cn"; co: "ay.co"; cp: "ay.cp"; cq: "ay.cq"; cr: "ay.cr"; cs: "ay.cs"; ct: "ay.ct"; cu: "ay.cu"; cv: "ay.cv"; cw: "ay.cw"; cx: "ay.cx"; cy: "ay.cy"; cz: "ay.cz"; da: "ay.da"; db: "ay.db"; dc: "ay.dc"; dd: "ay.dd"; de: "ay.de"; df: "ay.df"; dg: "ay.dg"; dh: "ay.dh"; di: "ay.di"; dj: "ay.dj"; dk: "ay.dk"; dl: "ay.dl"; dm: "ay.dm"; dn: "ay.dn"; do: "ay.do"; dp: "ay.dp"; dq: "ay.dq"; dr: "ay.dr"; ds: "ay.ds"; dt: "ay.dt"; du: "ay.du"; dv: "ay.dv"; dw: "ay.dw"; dx: "ay.dx"; dy: "ay.dy"; dz: "ay.dz"; ea: "ay.ea"; eb: "ay.eb"; ec: "ay.ec"; ed: "ay.ed"; ee: "ay.ee"; ef: "ay.ef"; eg: "ay.eg"; eh: "ay.eh"; ei: "ay.ei"; ej: "ay.ej"; ek: "ay.ek"; el: "ay.el"; em: "ay.em"; en: "ay.en"; eo: "ay.eo"; ep: "ay.ep"; eq: "ay.eq"; er: "ay.er"; es: "ay.es"; et: "ay.et"; eu: "ay.eu"; ev: "ay.ev"; ew: "ay.ew"; ex: "ay.ex"; ey: "ay.ey"; ez: "ay.ez"; fa: "ay.fa"; fb: "ay.fb"; fc: "ay.fc"; fd: "ay.fd"; fe: "ay.fe"; ff: "ay.ff"; fg: "ay.fg"; fh: "ay.fh"; fi: "ay.fi"; fj: "ay.fj"; fk: "ay.fk"; fl: "ay.fl"; fm: "ay.fm"; fn: "ay.fn"; fo: "ay.fo"; fp: "ay.fp"; fq: "ay.fq"; fr: "ay.fr"; fs: "ay.fs"; ft: "ay.ft"; fu: "ay.fu"; fv: "ay.fv"; fw: "ay.fw"; fx: "ay.fx"; fy: "ay.fy"; fz: "ay.fz"; ga: "ay.ga"; gb: "ay.gb"; gc: "ay.gc"; gd: "ay.gd"; ge: "ay.ge"; gf: "ay.gf"; gg: "ay.gg"; gh: "ay.gh"; gi: "ay.gi"; gj: "ay.gj"; gk: "ay.gk"; gl: "ay.gl"; gm: "ay.gm"; gn: "ay.gn"; go: "ay.go"; gp: "ay.gp"; gq: "ay.gq"; gr: "ay.gr"; gs: "ay.gs"; gt: "ay.gt"; gu: "ay.gu"; gv: "ay.gv"; gw: "ay.gw"; gx: "ay.gx"; gy: "ay.gy"; gz: "ay.gz"; ha: "ay.ha"; hb: "ay.hb"; hc: "ay.hc"; hd: "ay.hd"; he: "ay.he"; hf: "ay.hf"; hg: "ay.hg"; hh: "ay.hh"; hi: "ay.hi"; hj: "ay.hj"; hk: "ay.hk"; hl: "ay.hl"; hm: "ay.hm"; hn: "ay.hn"; ho: "ay.ho"; hp: "ay.hp"; hq: "ay.hq"; hr: "ay.hr"; hs: "ay.hs"; ht: "ay.ht"; hu: "ay.hu"; hv: "ay.hv"; hw: "ay.hw"; hx: "ay.hx"; hy: "ay.hy"; hz: "ay.hz"; ia: "ay.ia"; ib: "ay.ib"; ic: "ay.ic"; id: "ay.id"; ie: "ay.ie"; if: "ay.if"; ig: "ay.ig"; ih: "ay.ih"; ii: "ay.ii"; ij: "ay.ij"; ik: "ay.ik"; il: "ay.il"; im: "ay.im"; in: "ay.in"; io: "ay.io"; ip: "ay.ip"; iq: "ay.iq"; ir: "ay.ir"; is: "ay.is"; it: "ay.it"; iu: "ay.iu"; iv: "ay.iv"; iw: "ay.iw"; ix: "ay.ix"; iy: "ay.iy"; iz: "ay.iz"; ja: "ay.ja"; jb: "ay.jb"; jc: "ay.jc"; jd: "ay.jd"; je: "ay.je"; jf: "ay.jf"; jg: "ay.jg"; jh: "ay.jh"; ji: "ay.ji"; jj: "ay.jj"; jk: "ay.jk"; jl: "ay.jl"; jm: "ay.jm"; jn: "ay.jn"; jo: "ay.jo"; jp: "ay.jp"; jq: "ay.jq"; jr: "ay.jr"; js: "ay.js"; jt: "ay.jt"; ju: "ay.ju"; jv: "ay.jv"; jw: "ay.jw"; jx: "ay.jx"; jy: "ay.jy"; jz: "ay.jz"; ka: "ay.ka"; kb: "ay.kb"; kc: "ay.kc"; kd: "ay.kd"; ke: "ay.ke"; kf: "ay.kf"; kg: "ay.kg"; kh: "ay.kh"; ki: "ay.ki"; kj: "ay.kj"; kk: "ay.kk"; kl: "ay.kl"; km: "ay.km"; kn: "ay.kn"; ko: "ay.ko"; kp: "ay.kp"; kq: "ay.kq"; kr: "ay.kr"; ks: "ay.ks"; kt: "ay.kt"; ku: "ay.ku"; kv: "ay.kv"; kw: "ay.kw"; kx: "ay.kx"; ky: "ay.ky"; kz: "ay.kz"; la: "ay.la"; lb: "ay.lb"; lc: "ay.lc"; ld: "ay.ld"; le: "ay.le"; lf: "ay.lf"; lg: "ay.lg"; lh: "ay.lh"; li: "ay.li"; lj: "ay.lj"; lk: "ay.lk"; ll: "ay.ll"; lm: "ay.lm"; ln: "ay.ln"; lo: "ay.lo"; lp: "ay.lp"; lq: "ay.lq"; lr: "ay.lr"; ls: "ay.ls"; lt: "ay.lt"; lu: "ay.lu"; lv: "ay.lv"; lw: "ay.lw"; lx: "ay.lx"; ly: "ay.ly"; lz: "ay.lz"; ma: "ay.ma"; mb: "ay.mb"; mc: "ay.mc"; md: "ay.md"; me: "ay.me"; mf: "ay.mf"; mg: "ay.mg"; mh: "ay.mh"; mi: "ay.mi"; mj: "ay.mj"; mk: "ay.mk"; ml: "ay.ml"; mm: "ay.mm"; mn: "ay.mn"; mo: "ay.mo"; mp: "ay.mp"; mq: "ay.mq"; mr: "ay.mr"; ms: "ay.ms"; mt: "ay.mt"; mu: "ay.mu"; mv: "ay.mv"; mw: "ay.mw"; mx: "ay.mx"; my: "ay.my"; mz: "ay.mz"; na: "ay.na"; nb: "ay.nb"; nc: "ay.nc"; nd: "ay.nd"; ne: "ay.ne"; nf: "ay.nf"; ng: "ay.ng"; nh: "ay.nh"; ni: "ay.ni"; nj: "ay.nj"; nk: "ay.nk"; nl: "ay.nl"; nm: "ay.nm"; nn: "ay.nn"; no: "ay.no"; np: "ay.np"; nq: "ay.nq"; nr: "ay.nr"; ns: "ay.ns"; nt: "ay.nt"; nu: "ay.nu"; nv: "ay.nv"; nw: "ay.nw"; nx: "ay.nx"; ny: "ay.ny"; nz: "ay.nz"; oa: "ay.oa"; ob: "ay.ob"; oc: "ay.oc"; od: "ay.od"; oe: "ay.oe"; of: "ay.of"; og: "ay.og"; oh: "ay.oh"; oi: "ay.oi"; oj: "ay.oj"; ok: "ay.ok"; ol: "ay.ol"; om: "ay.om"; on: "ay.on"; oo: "ay.oo"; op: "ay.op"; oq: "ay.oq"; or: "ay.or"; os: "ay.os"; ot: "ay.ot"; ou: "ay.ou"; ov: "ay.ov"; ow: "ay.ow"; ox: "ay.ox"; oy: "ay.oy"; oz: "ay.oz"; pa: "ay.pa"; pb: "ay.pb"; pc: "ay.pc"; pd: "ay.pd"; pe: "ay.pe"; pf: "ay.pf"; pg: "ay.pg"; ph: "ay.ph"; pi: "ay.pi"; pj: "ay.pj"; pk: "ay.pk"; pl: "ay.pl"; pm: "ay.pm"; pn: "ay.pn"; po: "ay.po"; pp: "ay.pp"; pq: "ay.pq"; pr: "ay.pr"; ps: "ay.ps"; pt: "ay.pt"; pu: "ay.pu"; pv: "ay.pv"; pw: "ay.pw"; px: "ay.px"; py: "ay.py"; pz: "ay.pz"; qa: "ay.qa"; qb: "ay.qb"; qc: "ay.qc"; qd: "ay.qd"; qe: "ay.qe"; qf: "ay.qf"; qg: "ay.qg"; qh: "ay.qh"; qi: "ay.qi"; qj: "ay.qj"; qk: "ay.qk"; ql: "ay.ql"; qm: "ay.qm"; qn: "ay.qn"; qo: "ay.qo"; qp: "ay.qp"; qq: "ay.qq"; qr: "ay.qr"; qs: "ay.qs"; qt: "ay.qt"; qu: "ay.qu"; qv: "ay.qv"; qw: "ay.qw"; qx: "ay.qx"; qy: "ay.qy"; qz: "ay.qz"; ra: "ay.ra"; rb: "ay.rb"; rc: "ay.rc"; rd: "ay.rd"; re: "ay.re"; rf: "ay.rf"; rg: "ay.rg"; rh: "ay.rh"; ri: "ay.ri"; rj: "ay.rj"; rk: "ay.rk"; rl: "ay.rl"; rm: "ay.rm"; rn: "ay.rn"; ro: "ay.ro"; rp: "ay.rp"; rq: "ay.rq"; rr: "ay.rr"; rs: "ay.rs"; rt: "ay.rt"; ru: "ay.ru"; rv: "ay.rv"; rw: "ay.rw"; rx: "ay.rx"; ry: "ay.ry"; rz: "ay.rz"; sa: "ay.sa"; sb: "ay.sb"; sc: "ay.sc"; sd: "ay.sd"; se: "ay.se"; sf: "ay.sf"; sg: "ay.sg"; sh: "ay.sh"; si: "ay.si"; sj: "ay.sj"; sk: "ay.sk"; sl: "ay.sl"; sm: "ay.sm"; sn: "ay.sn"; so: "ay.so"; sp: "ay.sp"; sq: "ay.sq"; sr: "ay.sr"; ss: "ay.ss"; st: "ay.st"; su: "ay.su"; sv: "ay.sv"; sw: "ay.sw"; sx: "ay.sx"; sy: "ay.sy"; sz: "ay.sz"; ta: "ay.ta"; tb: "ay.tb"; tc: "ay.tc"; td: "ay.td"; te: "ay.te"; tf: "ay.tf"; tg: "ay.tg"; th: "ay.th"; ti: "ay.ti"; tj: "ay.tj"; tk: "ay.tk"; tl: "ay.tl"; tm: "ay.tm"; tn: "ay.tn"; to: "ay.to"; tp: "ay.tp"; tq: "ay.tq"; tr: "ay.tr"; ts: "ay.ts"; tt: "ay.tt"; tu: "ay.tu"; tv: "ay.tv"; tw: "ay.tw"; tx: "ay.tx"; ty: "ay.ty"; tz: "ay.tz"; ua: "ay.ua"; ub: "ay.ub"; uc: "ay.uc"; ud: "ay.ud"; ue: "ay.ue"; uf: "ay.uf"; ug: "ay.ug"; uh: "ay.uh"; ui: "ay.ui"; uj: "ay.uj"; uk: "ay.uk"; ul: "ay.ul"; um: "ay.um"; un: "ay.un"; uo: "ay.uo"; up: "ay.up"; uq: "ay.uq"; ur: "ay.ur"; us: "ay.us"; ut: "ay.ut"; uu: "ay.uu"; uv: "ay.uv"; uw: "ay.uw"; ux: "ay.ux"; uy: "ay.uy"; uz: "ay.uz"; va: "ay.va"; vb: "ay.vb"; vc: "ay.vc"; vd: "ay.vd"; ve: "ay.ve"; vf: "ay.vf"; vg: "ay.vg"; vh: "ay.vh"; vi: "ay.vi"; vj: "ay.vj"; vk: "ay.vk"; vl: "ay.vl"; vm: "ay.vm"; vn: "ay.vn"; vo: "ay.vo"; vp: "ay.vp"; vq: "ay.vq"; vr: "ay.vr"; vs: "ay.vs"; vt: "ay.vt"; vu: "ay.vu"; vv: "ay.vv"; vw: "ay.vw"; vx: "ay.vx"; vy: "ay.vy"; vz: "ay.vz"; wa: "ay.wa"; wb: "ay.wb"; wc: "ay.wc"; wd: "ay.wd"; we: "ay.we"; wf: "ay.wf"; wg: "ay.wg"; wh: "ay.wh"; wi: "ay.wi"; wj: "ay.wj"; wk: "ay.wk"; wl: "ay.wl"; wm: "ay.wm"; wn: "ay.wn"; wo: "ay.wo"; wp: "ay.wp"; wq: "ay.wq"; wr: "ay.wr"; ws: "ay.ws"; wt: "ay.wt"; wu: "ay.wu"; wv: "ay.wv"; ww: "ay.ww"; wx: "ay.wx"; wy: "ay.wy"; wz: "ay.wz"; xa: "ay.xa"; xb: "ay.xb"; xc: "ay.xc"; xd: "ay.xd"; xe: "ay.xe"; xf: "ay.xf"; xg: "ay.xg"; xh: "ay.xh"; xi: "ay.xi"; xj: "ay.xj"; xk: "ay.xk"; xl: "ay.xl"; xm: "ay.xm"; xn: "ay.xn"; xo: "ay.xo"; xp: "ay.xp"; xq: "ay.xq"; xr: "ay.xr"; xs: "ay.xs"; xt: "ay.xt"; xu: "ay.xu"; xv: "ay.xv"; xw: "ay.xw"; xx: "ay.xx"; xy: "ay.xy"; xz: "ay.xz"; ya: "ay.ya"; yb: "ay.yb"; yc: "ay.yc"; yd: "ay.yd"; ye: "ay.ye"; yf: "ay.yf"; yg: "ay.yg"; yh: "ay.yh"; yi: "ay.yi"; yj: "ay.yj"; yk: "ay.yk"; yl: "ay.yl"; ym: "ay.ym"; yn: "ay.yn"; yo: "ay.yo"; yp: "ay.yp"; yq: "ay.yq"; yr: "ay.yr"; ys: "ay.ys"; yt: "ay.yt"; yu: "ay.yu"; yv: "ay.yv"; yw: "ay.yw"; yx: "ay.yx"; yy: "ay.yy"; yz: "ay.yz"; za: "ay.za"; zb: "ay.zb"; zc: "ay.zc"; zd: "ay.zd"; ze: "ay.ze"; zf: "ay.zf"; zg: "ay.zg"; zh: "ay.zh"; zi: "ay.zi"; zj: "ay.zj"; zk: "ay.zk"; zl: "ay.zl"; zm: "ay.zm"; zn: "ay.zn"; zo: "ay.zo"; zp: "ay.zp"; zq: "ay.zq"; zr: "ay.zr"; zs: "ay.zs"; zt: "ay.zt"; zu: "ay.zu"; zv: "ay.zv"; zw: "ay.zw"; zx: "ay.zx"; zy: "ay.zy"; zz: "ay.zz"; }; az: { aa: "az.aa"; ab: "az.ab"; ac: "az.ac"; ad: "az.ad"; ae: "az.ae"; af: "az.af"; ag: "az.ag"; ah: "az.ah"; ai: "az.ai"; aj: "az.aj"; ak: "az.ak"; al: "az.al"; am: "az.am"; an: "az.an"; ao: "az.ao"; ap: "az.ap"; aq: "az.aq"; ar: "az.ar"; as: "az.as"; at: "az.at"; au: "az.au"; av: "az.av"; aw: "az.aw"; ax: "az.ax"; ay: "az.ay"; az: "az.az"; ba: "az.ba"; bb: "az.bb"; bc: "az.bc"; bd: "az.bd"; be: "az.be"; bf: "az.bf"; bg: "az.bg"; bh: "az.bh"; bi: "az.bi"; bj: "az.bj"; bk: "az.bk"; bl: "az.bl"; bm: "az.bm"; bn: "az.bn"; bo: "az.bo"; bp: "az.bp"; bq: "az.bq"; br: "az.br"; bs: "az.bs"; bt: "az.bt"; bu: "az.bu"; bv: "az.bv"; bw: "az.bw"; bx: "az.bx"; by: "az.by"; bz: "az.bz"; ca: "az.ca"; cb: "az.cb"; cc: "az.cc"; cd: "az.cd"; ce: "az.ce"; cf: "az.cf"; cg: "az.cg"; ch: "az.ch"; ci: "az.ci"; cj: "az.cj"; ck: "az.ck"; cl: "az.cl"; cm: "az.cm"; cn: "az.cn"; co: "az.co"; cp: "az.cp"; cq: "az.cq"; cr: "az.cr"; cs: "az.cs"; ct: "az.ct"; cu: "az.cu"; cv: "az.cv"; cw: "az.cw"; cx: "az.cx"; cy: "az.cy"; cz: "az.cz"; da: "az.da"; db: "az.db"; dc: "az.dc"; dd: "az.dd"; de: "az.de"; df: "az.df"; dg: "az.dg"; dh: "az.dh"; di: "az.di"; dj: "az.dj"; dk: "az.dk"; dl: "az.dl"; dm: "az.dm"; dn: "az.dn"; do: "az.do"; dp: "az.dp"; dq: "az.dq"; dr: "az.dr"; ds: "az.ds"; dt: "az.dt"; du: "az.du"; dv: "az.dv"; dw: "az.dw"; dx: "az.dx"; dy: "az.dy"; dz: "az.dz"; ea: "az.ea"; eb: "az.eb"; ec: "az.ec"; ed: "az.ed"; ee: "az.ee"; ef: "az.ef"; eg: "az.eg"; eh: "az.eh"; ei: "az.ei"; ej: "az.ej"; ek: "az.ek"; el: "az.el"; em: "az.em"; en: "az.en"; eo: "az.eo"; ep: "az.ep"; eq: "az.eq"; er: "az.er"; es: "az.es"; et: "az.et"; eu: "az.eu"; ev: "az.ev"; ew: "az.ew"; ex: "az.ex"; ey: "az.ey"; ez: "az.ez"; fa: "az.fa"; fb: "az.fb"; fc: "az.fc"; fd: "az.fd"; fe: "az.fe"; ff: "az.ff"; fg: "az.fg"; fh: "az.fh"; fi: "az.fi"; fj: "az.fj"; fk: "az.fk"; fl: "az.fl"; fm: "az.fm"; fn: "az.fn"; fo: "az.fo"; fp: "az.fp"; fq: "az.fq"; fr: "az.fr"; fs: "az.fs"; ft: "az.ft"; fu: "az.fu"; fv: "az.fv"; fw: "az.fw"; fx: "az.fx"; fy: "az.fy"; fz: "az.fz"; ga: "az.ga"; gb: "az.gb"; gc: "az.gc"; gd: "az.gd"; ge: "az.ge"; gf: "az.gf"; gg: "az.gg"; gh: "az.gh"; gi: "az.gi"; gj: "az.gj"; gk: "az.gk"; gl: "az.gl"; gm: "az.gm"; gn: "az.gn"; go: "az.go"; gp: "az.gp"; gq: "az.gq"; gr: "az.gr"; gs: "az.gs"; gt: "az.gt"; gu: "az.gu"; gv: "az.gv"; gw: "az.gw"; gx: "az.gx"; gy: "az.gy"; gz: "az.gz"; ha: "az.ha"; hb: "az.hb"; hc: "az.hc"; hd: "az.hd"; he: "az.he"; hf: "az.hf"; hg: "az.hg"; hh: "az.hh"; hi: "az.hi"; hj: "az.hj"; hk: "az.hk"; hl: "az.hl"; hm: "az.hm"; hn: "az.hn"; ho: "az.ho"; hp: "az.hp"; hq: "az.hq"; hr: "az.hr"; hs: "az.hs"; ht: "az.ht"; hu: "az.hu"; hv: "az.hv"; hw: "az.hw"; hx: "az.hx"; hy: "az.hy"; hz: "az.hz"; ia: "az.ia"; ib: "az.ib"; ic: "az.ic"; id: "az.id"; ie: "az.ie"; if: "az.if"; ig: "az.ig"; ih: "az.ih"; ii: "az.ii"; ij: "az.ij"; ik: "az.ik"; il: "az.il"; im: "az.im"; in: "az.in"; io: "az.io"; ip: "az.ip"; iq: "az.iq"; ir: "az.ir"; is: "az.is"; it: "az.it"; iu: "az.iu"; iv: "az.iv"; iw: "az.iw"; ix: "az.ix"; iy: "az.iy"; iz: "az.iz"; ja: "az.ja"; jb: "az.jb"; jc: "az.jc"; jd: "az.jd"; je: "az.je"; jf: "az.jf"; jg: "az.jg"; jh: "az.jh"; ji: "az.ji"; jj: "az.jj"; jk: "az.jk"; jl: "az.jl"; jm: "az.jm"; jn: "az.jn"; jo: "az.jo"; jp: "az.jp"; jq: "az.jq"; jr: "az.jr"; js: "az.js"; jt: "az.jt"; ju: "az.ju"; jv: "az.jv"; jw: "az.jw"; jx: "az.jx"; jy: "az.jy"; jz: "az.jz"; ka: "az.ka"; kb: "az.kb"; kc: "az.kc"; kd: "az.kd"; ke: "az.ke"; kf: "az.kf"; kg: "az.kg"; kh: "az.kh"; ki: "az.ki"; kj: "az.kj"; kk: "az.kk"; kl: "az.kl"; km: "az.km"; kn: "az.kn"; ko: "az.ko"; kp: "az.kp"; kq: "az.kq"; kr: "az.kr"; ks: "az.ks"; kt: "az.kt"; ku: "az.ku"; kv: "az.kv"; kw: "az.kw"; kx: "az.kx"; ky: "az.ky"; kz: "az.kz"; la: "az.la"; lb: "az.lb"; lc: "az.lc"; ld: "az.ld"; le: "az.le"; lf: "az.lf"; lg: "az.lg"; lh: "az.lh"; li: "az.li"; lj: "az.lj"; lk: "az.lk"; ll: "az.ll"; lm: "az.lm"; ln: "az.ln"; lo: "az.lo"; lp: "az.lp"; lq: "az.lq"; lr: "az.lr"; ls: "az.ls"; lt: "az.lt"; lu: "az.lu"; lv: "az.lv"; lw: "az.lw"; lx: "az.lx"; ly: "az.ly"; lz: "az.lz"; ma: "az.ma"; mb: "az.mb"; mc: "az.mc"; md: "az.md"; me: "az.me"; mf: "az.mf"; mg: "az.mg"; mh: "az.mh"; mi: "az.mi"; mj: "az.mj"; mk: "az.mk"; ml: "az.ml"; mm: "az.mm"; mn: "az.mn"; mo: "az.mo"; mp: "az.mp"; mq: "az.mq"; mr: "az.mr"; ms: "az.ms"; mt: "az.mt"; mu: "az.mu"; mv: "az.mv"; mw: "az.mw"; mx: "az.mx"; my: "az.my"; mz: "az.mz"; na: "az.na"; nb: "az.nb"; nc: "az.nc"; nd: "az.nd"; ne: "az.ne"; nf: "az.nf"; ng: "az.ng"; nh: "az.nh"; ni: "az.ni"; nj: "az.nj"; nk: "az.nk"; nl: "az.nl"; nm: "az.nm"; nn: "az.nn"; no: "az.no"; np: "az.np"; nq: "az.nq"; nr: "az.nr"; ns: "az.ns"; nt: "az.nt"; nu: "az.nu"; nv: "az.nv"; nw: "az.nw"; nx: "az.nx"; ny: "az.ny"; nz: "az.nz"; oa: "az.oa"; ob: "az.ob"; oc: "az.oc"; od: "az.od"; oe: "az.oe"; of: "az.of"; og: "az.og"; oh: "az.oh"; oi: "az.oi"; oj: "az.oj"; ok: "az.ok"; ol: "az.ol"; om: "az.om"; on: "az.on"; oo: "az.oo"; op: "az.op"; oq: "az.oq"; or: "az.or"; os: "az.os"; ot: "az.ot"; ou: "az.ou"; ov: "az.ov"; ow: "az.ow"; ox: "az.ox"; oy: "az.oy"; oz: "az.oz"; pa: "az.pa"; pb: "az.pb"; pc: "az.pc"; pd: "az.pd"; pe: "az.pe"; pf: "az.pf"; pg: "az.pg"; ph: "az.ph"; pi: "az.pi"; pj: "az.pj"; pk: "az.pk"; pl: "az.pl"; pm: "az.pm"; pn: "az.pn"; po: "az.po"; pp: "az.pp"; pq: "az.pq"; pr: "az.pr"; ps: "az.ps"; pt: "az.pt"; pu: "az.pu"; pv: "az.pv"; pw: "az.pw"; px: "az.px"; py: "az.py"; pz: "az.pz"; qa: "az.qa"; qb: "az.qb"; qc: "az.qc"; qd: "az.qd"; qe: "az.qe"; qf: "az.qf"; qg: "az.qg"; qh: "az.qh"; qi: "az.qi"; qj: "az.qj"; qk: "az.qk"; ql: "az.ql"; qm: "az.qm"; qn: "az.qn"; qo: "az.qo"; qp: "az.qp"; qq: "az.qq"; qr: "az.qr"; qs: "az.qs"; qt: "az.qt"; qu: "az.qu"; qv: "az.qv"; qw: "az.qw"; qx: "az.qx"; qy: "az.qy"; qz: "az.qz"; ra: "az.ra"; rb: "az.rb"; rc: "az.rc"; rd: "az.rd"; re: "az.re"; rf: "az.rf"; rg: "az.rg"; rh: "az.rh"; ri: "az.ri"; rj: "az.rj"; rk: "az.rk"; rl: "az.rl"; rm: "az.rm"; rn: "az.rn"; ro: "az.ro"; rp: "az.rp"; rq: "az.rq"; rr: "az.rr"; rs: "az.rs"; rt: "az.rt"; ru: "az.ru"; rv: "az.rv"; rw: "az.rw"; rx: "az.rx"; ry: "az.ry"; rz: "az.rz"; sa: "az.sa"; sb: "az.sb"; sc: "az.sc"; sd: "az.sd"; se: "az.se"; sf: "az.sf"; sg: "az.sg"; sh: "az.sh"; si: "az.si"; sj: "az.sj"; sk: "az.sk"; sl: "az.sl"; sm: "az.sm"; sn: "az.sn"; so: "az.so"; sp: "az.sp"; sq: "az.sq"; sr: "az.sr"; ss: "az.ss"; st: "az.st"; su: "az.su"; sv: "az.sv"; sw: "az.sw"; sx: "az.sx"; sy: "az.sy"; sz: "az.sz"; ta: "az.ta"; tb: "az.tb"; tc: "az.tc"; td: "az.td"; te: "az.te"; tf: "az.tf"; tg: "az.tg"; th: "az.th"; ti: "az.ti"; tj: "az.tj"; tk: "az.tk"; tl: "az.tl"; tm: "az.tm"; tn: "az.tn"; to: "az.to"; tp: "az.tp"; tq: "az.tq"; tr: "az.tr"; ts: "az.ts"; tt: "az.tt"; tu: "az.tu"; tv: "az.tv"; tw: "az.tw"; tx: "az.tx"; ty: "az.ty"; tz: "az.tz"; ua: "az.ua"; ub: "az.ub"; uc: "az.uc"; ud: "az.ud"; ue: "az.ue"; uf: "az.uf"; ug: "az.ug"; uh: "az.uh"; ui: "az.ui"; uj: "az.uj"; uk: "az.uk"; ul: "az.ul"; um: "az.um"; un: "az.un"; uo: "az.uo"; up: "az.up"; uq: "az.uq"; ur: "az.ur"; us: "az.us"; ut: "az.ut"; uu: "az.uu"; uv: "az.uv"; uw: "az.uw"; ux: "az.ux"; uy: "az.uy"; uz: "az.uz"; va: "az.va"; vb: "az.vb"; vc: "az.vc"; vd: "az.vd"; ve: "az.ve"; vf: "az.vf"; vg: "az.vg"; vh: "az.vh"; vi: "az.vi"; vj: "az.vj"; vk: "az.vk"; vl: "az.vl"; vm: "az.vm"; vn: "az.vn"; vo: "az.vo"; vp: "az.vp"; vq: "az.vq"; vr: "az.vr"; vs: "az.vs"; vt: "az.vt"; vu: "az.vu"; vv: "az.vv"; vw: "az.vw"; vx: "az.vx"; vy: "az.vy"; vz: "az.vz"; wa: "az.wa"; wb: "az.wb"; wc: "az.wc"; wd: "az.wd"; we: "az.we"; wf: "az.wf"; wg: "az.wg"; wh: "az.wh"; wi: "az.wi"; wj: "az.wj"; wk: "az.wk"; wl: "az.wl"; wm: "az.wm"; wn: "az.wn"; wo: "az.wo"; wp: "az.wp"; wq: "az.wq"; wr: "az.wr"; ws: "az.ws"; wt: "az.wt"; wu: "az.wu"; wv: "az.wv"; ww: "az.ww"; wx: "az.wx"; wy: "az.wy"; wz: "az.wz"; xa: "az.xa"; xb: "az.xb"; xc: "az.xc"; xd: "az.xd"; xe: "az.xe"; xf: "az.xf"; xg: "az.xg"; xh: "az.xh"; xi: "az.xi"; xj: "az.xj"; xk: "az.xk"; xl: "az.xl"; xm: "az.xm"; xn: "az.xn"; xo: "az.xo"; xp: "az.xp"; xq: "az.xq"; xr: "az.xr"; xs: "az.xs"; xt: "az.xt"; xu: "az.xu"; xv: "az.xv"; xw: "az.xw"; xx: "az.xx"; xy: "az.xy"; xz: "az.xz"; ya: "az.ya"; yb: "az.yb"; yc: "az.yc"; yd: "az.yd"; ye: "az.ye"; yf: "az.yf"; yg: "az.yg"; yh: "az.yh"; yi: "az.yi"; yj: "az.yj"; yk: "az.yk"; yl: "az.yl"; ym: "az.ym"; yn: "az.yn"; yo: "az.yo"; yp: "az.yp"; yq: "az.yq"; yr: "az.yr"; ys: "az.ys"; yt: "az.yt"; yu: "az.yu"; yv: "az.yv"; yw: "az.yw"; yx: "az.yx"; yy: "az.yy"; yz: "az.yz"; za: "az.za"; zb: "az.zb"; zc: "az.zc"; zd: "az.zd"; ze: "az.ze"; zf: "az.zf"; zg: "az.zg"; zh: "az.zh"; zi: "az.zi"; zj: "az.zj"; zk: "az.zk"; zl: "az.zl"; zm: "az.zm"; zn: "az.zn"; zo: "az.zo"; zp: "az.zp"; zq: "az.zq"; zr: "az.zr"; zs: "az.zs"; zt: "az.zt"; zu: "az.zu"; zv: "az.zv"; zw: "az.zw"; zx: "az.zx"; zy: "az.zy"; zz: "az.zz"; }; ba: { aa: "ba.aa"; ab: "ba.ab"; ac: "ba.ac"; ad: "ba.ad"; ae: "ba.ae"; af: "ba.af"; ag: "ba.ag"; ah: "ba.ah"; ai: "ba.ai"; aj: "ba.aj"; ak: "ba.ak"; al: "ba.al"; am: "ba.am"; an: "ba.an"; ao: "ba.ao"; ap: "ba.ap"; aq: "ba.aq"; ar: "ba.ar"; as: "ba.as"; at: "ba.at"; au: "ba.au"; av: "ba.av"; aw: "ba.aw"; ax: "ba.ax"; ay: "ba.ay"; az: "ba.az"; ba: "ba.ba"; bb: "ba.bb"; bc: "ba.bc"; bd: "ba.bd"; be: "ba.be"; bf: "ba.bf"; bg: "ba.bg"; bh: "ba.bh"; bi: "ba.bi"; bj: "ba.bj"; bk: "ba.bk"; bl: "ba.bl"; bm: "ba.bm"; bn: "ba.bn"; bo: "ba.bo"; bp: "ba.bp"; bq: "ba.bq"; br: "ba.br"; bs: "ba.bs"; bt: "ba.bt"; bu: "ba.bu"; bv: "ba.bv"; bw: "ba.bw"; bx: "ba.bx"; by: "ba.by"; bz: "ba.bz"; ca: "ba.ca"; cb: "ba.cb"; cc: "ba.cc"; cd: "ba.cd"; ce: "ba.ce"; cf: "ba.cf"; cg: "ba.cg"; ch: "ba.ch"; ci: "ba.ci"; cj: "ba.cj"; ck: "ba.ck"; cl: "ba.cl"; cm: "ba.cm"; cn: "ba.cn"; co: "ba.co"; cp: "ba.cp"; cq: "ba.cq"; cr: "ba.cr"; cs: "ba.cs"; ct: "ba.ct"; cu: "ba.cu"; cv: "ba.cv"; cw: "ba.cw"; cx: "ba.cx"; cy: "ba.cy"; cz: "ba.cz"; da: "ba.da"; db: "ba.db"; dc: "ba.dc"; dd: "ba.dd"; de: "ba.de"; df: "ba.df"; dg: "ba.dg"; dh: "ba.dh"; di: "ba.di"; dj: "ba.dj"; dk: "ba.dk"; dl: "ba.dl"; dm: "ba.dm"; dn: "ba.dn"; do: "ba.do"; dp: "ba.dp"; dq: "ba.dq"; dr: "ba.dr"; ds: "ba.ds"; dt: "ba.dt"; du: "ba.du"; dv: "ba.dv"; dw: "ba.dw"; dx: "ba.dx"; dy: "ba.dy"; dz: "ba.dz"; ea: "ba.ea"; eb: "ba.eb"; ec: "ba.ec"; ed: "ba.ed"; ee: "ba.ee"; ef: "ba.ef"; eg: "ba.eg"; eh: "ba.eh"; ei: "ba.ei"; ej: "ba.ej"; ek: "ba.ek"; el: "ba.el"; em: "ba.em"; en: "ba.en"; eo: "ba.eo"; ep: "ba.ep"; eq: "ba.eq"; er: "ba.er"; es: "ba.es"; et: "ba.et"; eu: "ba.eu"; ev: "ba.ev"; ew: "ba.ew"; ex: "ba.ex"; ey: "ba.ey"; ez: "ba.ez"; fa: "ba.fa"; fb: "ba.fb"; fc: "ba.fc"; fd: "ba.fd"; fe: "ba.fe"; ff: "ba.ff"; fg: "ba.fg"; fh: "ba.fh"; fi: "ba.fi"; fj: "ba.fj"; fk: "ba.fk"; fl: "ba.fl"; fm: "ba.fm"; fn: "ba.fn"; fo: "ba.fo"; fp: "ba.fp"; fq: "ba.fq"; fr: "ba.fr"; fs: "ba.fs"; ft: "ba.ft"; fu: "ba.fu"; fv: "ba.fv"; fw: "ba.fw"; fx: "ba.fx"; fy: "ba.fy"; fz: "ba.fz"; ga: "ba.ga"; gb: "ba.gb"; gc: "ba.gc"; gd: "ba.gd"; ge: "ba.ge"; gf: "ba.gf"; gg: "ba.gg"; gh: "ba.gh"; gi: "ba.gi"; gj: "ba.gj"; gk: "ba.gk"; gl: "ba.gl"; gm: "ba.gm"; gn: "ba.gn"; go: "ba.go"; gp: "ba.gp"; gq: "ba.gq"; gr: "ba.gr"; gs: "ba.gs"; gt: "ba.gt"; gu: "ba.gu"; gv: "ba.gv"; gw: "ba.gw"; gx: "ba.gx"; gy: "ba.gy"; gz: "ba.gz"; ha: "ba.ha"; hb: "ba.hb"; hc: "ba.hc"; hd: "ba.hd"; he: "ba.he"; hf: "ba.hf"; hg: "ba.hg"; hh: "ba.hh"; hi: "ba.hi"; hj: "ba.hj"; hk: "ba.hk"; hl: "ba.hl"; hm: "ba.hm"; hn: "ba.hn"; ho: "ba.ho"; hp: "ba.hp"; hq: "ba.hq"; hr: "ba.hr"; hs: "ba.hs"; ht: "ba.ht"; hu: "ba.hu"; hv: "ba.hv"; hw: "ba.hw"; hx: "ba.hx"; hy: "ba.hy"; hz: "ba.hz"; ia: "ba.ia"; ib: "ba.ib"; ic: "ba.ic"; id: "ba.id"; ie: "ba.ie"; if: "ba.if"; ig: "ba.ig"; ih: "ba.ih"; ii: "ba.ii"; ij: "ba.ij"; ik: "ba.ik"; il: "ba.il"; im: "ba.im"; in: "ba.in"; io: "ba.io"; ip: "ba.ip"; iq: "ba.iq"; ir: "ba.ir"; is: "ba.is"; it: "ba.it"; iu: "ba.iu"; iv: "ba.iv"; iw: "ba.iw"; ix: "ba.ix"; iy: "ba.iy"; iz: "ba.iz"; ja: "ba.ja"; jb: "ba.jb"; jc: "ba.jc"; jd: "ba.jd"; je: "ba.je"; jf: "ba.jf"; jg: "ba.jg"; jh: "ba.jh"; ji: "ba.ji"; jj: "ba.jj"; jk: "ba.jk"; jl: "ba.jl"; jm: "ba.jm"; jn: "ba.jn"; jo: "ba.jo"; jp: "ba.jp"; jq: "ba.jq"; jr: "ba.jr"; js: "ba.js"; jt: "ba.jt"; ju: "ba.ju"; jv: "ba.jv"; jw: "ba.jw"; jx: "ba.jx"; jy: "ba.jy"; jz: "ba.jz"; ka: "ba.ka"; kb: "ba.kb"; kc: "ba.kc"; kd: "ba.kd"; ke: "ba.ke"; kf: "ba.kf"; kg: "ba.kg"; kh: "ba.kh"; ki: "ba.ki"; kj: "ba.kj"; kk: "ba.kk"; kl: "ba.kl"; km: "ba.km"; kn: "ba.kn"; ko: "ba.ko"; kp: "ba.kp"; kq: "ba.kq"; kr: "ba.kr"; ks: "ba.ks"; kt: "ba.kt"; ku: "ba.ku"; kv: "ba.kv"; kw: "ba.kw"; kx: "ba.kx"; ky: "ba.ky"; kz: "ba.kz"; la: "ba.la"; lb: "ba.lb"; lc: "ba.lc"; ld: "ba.ld"; le: "ba.le"; lf: "ba.lf"; lg: "ba.lg"; lh: "ba.lh"; li: "ba.li"; lj: "ba.lj"; lk: "ba.lk"; ll: "ba.ll"; lm: "ba.lm"; ln: "ba.ln"; lo: "ba.lo"; lp: "ba.lp"; lq: "ba.lq"; lr: "ba.lr"; ls: "ba.ls"; lt: "ba.lt"; lu: "ba.lu"; lv: "ba.lv"; lw: "ba.lw"; lx: "ba.lx"; ly: "ba.ly"; lz: "ba.lz"; ma: "ba.ma"; mb: "ba.mb"; mc: "ba.mc"; md: "ba.md"; me: "ba.me"; mf: "ba.mf"; mg: "ba.mg"; mh: "ba.mh"; mi: "ba.mi"; mj: "ba.mj"; mk: "ba.mk"; ml: "ba.ml"; mm: "ba.mm"; mn: "ba.mn"; mo: "ba.mo"; mp: "ba.mp"; mq: "ba.mq"; mr: "ba.mr"; ms: "ba.ms"; mt: "ba.mt"; mu: "ba.mu"; mv: "ba.mv"; mw: "ba.mw"; mx: "ba.mx"; my: "ba.my"; mz: "ba.mz"; na: "ba.na"; nb: "ba.nb"; nc: "ba.nc"; nd: "ba.nd"; ne: "ba.ne"; nf: "ba.nf"; ng: "ba.ng"; nh: "ba.nh"; ni: "ba.ni"; nj: "ba.nj"; nk: "ba.nk"; nl: "ba.nl"; nm: "ba.nm"; nn: "ba.nn"; no: "ba.no"; np: "ba.np"; nq: "ba.nq"; nr: "ba.nr"; ns: "ba.ns"; nt: "ba.nt"; nu: "ba.nu"; nv: "ba.nv"; nw: "ba.nw"; nx: "ba.nx"; ny: "ba.ny"; nz: "ba.nz"; oa: "ba.oa"; ob: "ba.ob"; oc: "ba.oc"; od: "ba.od"; oe: "ba.oe"; of: "ba.of"; og: "ba.og"; oh: "ba.oh"; oi: "ba.oi"; oj: "ba.oj"; ok: "ba.ok"; ol: "ba.ol"; om: "ba.om"; on: "ba.on"; oo: "ba.oo"; op: "ba.op"; oq: "ba.oq"; or: "ba.or"; os: "ba.os"; ot: "ba.ot"; ou: "ba.ou"; ov: "ba.ov"; ow: "ba.ow"; ox: "ba.ox"; oy: "ba.oy"; oz: "ba.oz"; pa: "ba.pa"; pb: "ba.pb"; pc: "ba.pc"; pd: "ba.pd"; pe: "ba.pe"; pf: "ba.pf"; pg: "ba.pg"; ph: "ba.ph"; pi: "ba.pi"; pj: "ba.pj"; pk: "ba.pk"; pl: "ba.pl"; pm: "ba.pm"; pn: "ba.pn"; po: "ba.po"; pp: "ba.pp"; pq: "ba.pq"; pr: "ba.pr"; ps: "ba.ps"; pt: "ba.pt"; pu: "ba.pu"; pv: "ba.pv"; pw: "ba.pw"; px: "ba.px"; py: "ba.py"; pz: "ba.pz"; qa: "ba.qa"; qb: "ba.qb"; qc: "ba.qc"; qd: "ba.qd"; qe: "ba.qe"; qf: "ba.qf"; qg: "ba.qg"; qh: "ba.qh"; qi: "ba.qi"; qj: "ba.qj"; qk: "ba.qk"; ql: "ba.ql"; qm: "ba.qm"; qn: "ba.qn"; qo: "ba.qo"; qp: "ba.qp"; qq: "ba.qq"; qr: "ba.qr"; qs: "ba.qs"; qt: "ba.qt"; qu: "ba.qu"; qv: "ba.qv"; qw: "ba.qw"; qx: "ba.qx"; qy: "ba.qy"; qz: "ba.qz"; ra: "ba.ra"; rb: "ba.rb"; rc: "ba.rc"; rd: "ba.rd"; re: "ba.re"; rf: "ba.rf"; rg: "ba.rg"; rh: "ba.rh"; ri: "ba.ri"; rj: "ba.rj"; rk: "ba.rk"; rl: "ba.rl"; rm: "ba.rm"; rn: "ba.rn"; ro: "ba.ro"; rp: "ba.rp"; rq: "ba.rq"; rr: "ba.rr"; rs: "ba.rs"; rt: "ba.rt"; ru: "ba.ru"; rv: "ba.rv"; rw: "ba.rw"; rx: "ba.rx"; ry: "ba.ry"; rz: "ba.rz"; sa: "ba.sa"; sb: "ba.sb"; sc: "ba.sc"; sd: "ba.sd"; se: "ba.se"; sf: "ba.sf"; sg: "ba.sg"; sh: "ba.sh"; si: "ba.si"; sj: "ba.sj"; sk: "ba.sk"; sl: "ba.sl"; sm: "ba.sm"; sn: "ba.sn"; so: "ba.so"; sp: "ba.sp"; sq: "ba.sq"; sr: "ba.sr"; ss: "ba.ss"; st: "ba.st"; su: "ba.su"; sv: "ba.sv"; sw: "ba.sw"; sx: "ba.sx"; sy: "ba.sy"; sz: "ba.sz"; ta: "ba.ta"; tb: "ba.tb"; tc: "ba.tc"; td: "ba.td"; te: "ba.te"; tf: "ba.tf"; tg: "ba.tg"; th: "ba.th"; ti: "ba.ti"; tj: "ba.tj"; tk: "ba.tk"; tl: "ba.tl"; tm: "ba.tm"; tn: "ba.tn"; to: "ba.to"; tp: "ba.tp"; tq: "ba.tq"; tr: "ba.tr"; ts: "ba.ts"; tt: "ba.tt"; tu: "ba.tu"; tv: "ba.tv"; tw: "ba.tw"; tx: "ba.tx"; ty: "ba.ty"; tz: "ba.tz"; ua: "ba.ua"; ub: "ba.ub"; uc: "ba.uc"; ud: "ba.ud"; ue: "ba.ue"; uf: "ba.uf"; ug: "ba.ug"; uh: "ba.uh"; ui: "ba.ui"; uj: "ba.uj"; uk: "ba.uk"; ul: "ba.ul"; um: "ba.um"; un: "ba.un"; uo: "ba.uo"; up: "ba.up"; uq: "ba.uq"; ur: "ba.ur"; us: "ba.us"; ut: "ba.ut"; uu: "ba.uu"; uv: "ba.uv"; uw: "ba.uw"; ux: "ba.ux"; uy: "ba.uy"; uz: "ba.uz"; va: "ba.va"; vb: "ba.vb"; vc: "ba.vc"; vd: "ba.vd"; ve: "ba.ve"; vf: "ba.vf"; vg: "ba.vg"; vh: "ba.vh"; vi: "ba.vi"; vj: "ba.vj"; vk: "ba.vk"; vl: "ba.vl"; vm: "ba.vm"; vn: "ba.vn"; vo: "ba.vo"; vp: "ba.vp"; vq: "ba.vq"; vr: "ba.vr"; vs: "ba.vs"; vt: "ba.vt"; vu: "ba.vu"; vv: "ba.vv"; vw: "ba.vw"; vx: "ba.vx"; vy: "ba.vy"; vz: "ba.vz"; wa: "ba.wa"; wb: "ba.wb"; wc: "ba.wc"; wd: "ba.wd"; we: "ba.we"; wf: "ba.wf"; wg: "ba.wg"; wh: "ba.wh"; wi: "ba.wi"; wj: "ba.wj"; wk: "ba.wk"; wl: "ba.wl"; wm: "ba.wm"; wn: "ba.wn"; wo: "ba.wo"; wp: "ba.wp"; wq: "ba.wq"; wr: "ba.wr"; ws: "ba.ws"; wt: "ba.wt"; wu: "ba.wu"; wv: "ba.wv"; ww: "ba.ww"; wx: "ba.wx"; wy: "ba.wy"; wz: "ba.wz"; xa: "ba.xa"; xb: "ba.xb"; xc: "ba.xc"; xd: "ba.xd"; xe: "ba.xe"; xf: "ba.xf"; xg: "ba.xg"; xh: "ba.xh"; xi: "ba.xi"; xj: "ba.xj"; xk: "ba.xk"; xl: "ba.xl"; xm: "ba.xm"; xn: "ba.xn"; xo: "ba.xo"; xp: "ba.xp"; xq: "ba.xq"; xr: "ba.xr"; xs: "ba.xs"; xt: "ba.xt"; xu: "ba.xu"; xv: "ba.xv"; xw: "ba.xw"; xx: "ba.xx"; xy: "ba.xy"; xz: "ba.xz"; ya: "ba.ya"; yb: "ba.yb"; yc: "ba.yc"; yd: "ba.yd"; ye: "ba.ye"; yf: "ba.yf"; yg: "ba.yg"; yh: "ba.yh"; yi: "ba.yi"; yj: "ba.yj"; yk: "ba.yk"; yl: "ba.yl"; ym: "ba.ym"; yn: "ba.yn"; yo: "ba.yo"; yp: "ba.yp"; yq: "ba.yq"; yr: "ba.yr"; ys: "ba.ys"; yt: "ba.yt"; yu: "ba.yu"; yv: "ba.yv"; yw: "ba.yw"; yx: "ba.yx"; yy: "ba.yy"; yz: "ba.yz"; za: "ba.za"; zb: "ba.zb"; zc: "ba.zc"; zd: "ba.zd"; ze: "ba.ze"; zf: "ba.zf"; zg: "ba.zg"; zh: "ba.zh"; zi: "ba.zi"; zj: "ba.zj"; zk: "ba.zk"; zl: "ba.zl"; zm: "ba.zm"; zn: "ba.zn"; zo: "ba.zo"; zp: "ba.zp"; zq: "ba.zq"; zr: "ba.zr"; zs: "ba.zs"; zt: "ba.zt"; zu: "ba.zu"; zv: "ba.zv"; zw: "ba.zw"; zx: "ba.zx"; zy: "ba.zy"; zz: "ba.zz"; }; bb: { aa: "bb.aa"; ab: "bb.ab"; ac: "bb.ac"; ad: "bb.ad"; ae: "bb.ae"; af: "bb.af"; ag: "bb.ag"; ah: "bb.ah"; ai: "bb.ai"; aj: "bb.aj"; ak: "bb.ak"; al: "bb.al"; am: "bb.am"; an: "bb.an"; ao: "bb.ao"; ap: "bb.ap"; aq: "bb.aq"; ar: "bb.ar"; as: "bb.as"; at: "bb.at"; au: "bb.au"; av: "bb.av"; aw: "bb.aw"; ax: "bb.ax"; ay: "bb.ay"; az: "bb.az"; ba: "bb.ba"; bb: "bb.bb"; bc: "bb.bc"; bd: "bb.bd"; be: "bb.be"; bf: "bb.bf"; bg: "bb.bg"; bh: "bb.bh"; bi: "bb.bi"; bj: "bb.bj"; bk: "bb.bk"; bl: "bb.bl"; bm: "bb.bm"; bn: "bb.bn"; bo: "bb.bo"; bp: "bb.bp"; bq: "bb.bq"; br: "bb.br"; bs: "bb.bs"; bt: "bb.bt"; bu: "bb.bu"; bv: "bb.bv"; bw: "bb.bw"; bx: "bb.bx"; by: "bb.by"; bz: "bb.bz"; ca: "bb.ca"; cb: "bb.cb"; cc: "bb.cc"; cd: "bb.cd"; ce: "bb.ce"; cf: "bb.cf"; cg: "bb.cg"; ch: "bb.ch"; ci: "bb.ci"; cj: "bb.cj"; ck: "bb.ck"; cl: "bb.cl"; cm: "bb.cm"; cn: "bb.cn"; co: "bb.co"; cp: "bb.cp"; cq: "bb.cq"; cr: "bb.cr"; cs: "bb.cs"; ct: "bb.ct"; cu: "bb.cu"; cv: "bb.cv"; cw: "bb.cw"; cx: "bb.cx"; cy: "bb.cy"; cz: "bb.cz"; da: "bb.da"; db: "bb.db"; dc: "bb.dc"; dd: "bb.dd"; de: "bb.de"; df: "bb.df"; dg: "bb.dg"; dh: "bb.dh"; di: "bb.di"; dj: "bb.dj"; dk: "bb.dk"; dl: "bb.dl"; dm: "bb.dm"; dn: "bb.dn"; do: "bb.do"; dp: "bb.dp"; dq: "bb.dq"; dr: "bb.dr"; ds: "bb.ds"; dt: "bb.dt"; du: "bb.du"; dv: "bb.dv"; dw: "bb.dw"; dx: "bb.dx"; dy: "bb.dy"; dz: "bb.dz"; ea: "bb.ea"; eb: "bb.eb"; ec: "bb.ec"; ed: "bb.ed"; ee: "bb.ee"; ef: "bb.ef"; eg: "bb.eg"; eh: "bb.eh"; ei: "bb.ei"; ej: "bb.ej"; ek: "bb.ek"; el: "bb.el"; em: "bb.em"; en: "bb.en"; eo: "bb.eo"; ep: "bb.ep"; eq: "bb.eq"; er: "bb.er"; es: "bb.es"; et: "bb.et"; eu: "bb.eu"; ev: "bb.ev"; ew: "bb.ew"; ex: "bb.ex"; ey: "bb.ey"; ez: "bb.ez"; fa: "bb.fa"; fb: "bb.fb"; fc: "bb.fc"; fd: "bb.fd"; fe: "bb.fe"; ff: "bb.ff"; fg: "bb.fg"; fh: "bb.fh"; fi: "bb.fi"; fj: "bb.fj"; fk: "bb.fk"; fl: "bb.fl"; fm: "bb.fm"; fn: "bb.fn"; fo: "bb.fo"; fp: "bb.fp"; fq: "bb.fq"; fr: "bb.fr"; fs: "bb.fs"; ft: "bb.ft"; fu: "bb.fu"; fv: "bb.fv"; fw: "bb.fw"; fx: "bb.fx"; fy: "bb.fy"; fz: "bb.fz"; ga: "bb.ga"; gb: "bb.gb"; gc: "bb.gc"; gd: "bb.gd"; ge: "bb.ge"; gf: "bb.gf"; gg: "bb.gg"; gh: "bb.gh"; gi: "bb.gi"; gj: "bb.gj"; gk: "bb.gk"; gl: "bb.gl"; gm: "bb.gm"; gn: "bb.gn"; go: "bb.go"; gp: "bb.gp"; gq: "bb.gq"; gr: "bb.gr"; gs: "bb.gs"; gt: "bb.gt"; gu: "bb.gu"; gv: "bb.gv"; gw: "bb.gw"; gx: "bb.gx"; gy: "bb.gy"; gz: "bb.gz"; ha: "bb.ha"; hb: "bb.hb"; hc: "bb.hc"; hd: "bb.hd"; he: "bb.he"; hf: "bb.hf"; hg: "bb.hg"; hh: "bb.hh"; hi: "bb.hi"; hj: "bb.hj"; hk: "bb.hk"; hl: "bb.hl"; hm: "bb.hm"; hn: "bb.hn"; ho: "bb.ho"; hp: "bb.hp"; hq: "bb.hq"; hr: "bb.hr"; hs: "bb.hs"; ht: "bb.ht"; hu: "bb.hu"; hv: "bb.hv"; hw: "bb.hw"; hx: "bb.hx"; hy: "bb.hy"; hz: "bb.hz"; ia: "bb.ia"; ib: "bb.ib"; ic: "bb.ic"; id: "bb.id"; ie: "bb.ie"; if: "bb.if"; ig: "bb.ig"; ih: "bb.ih"; ii: "bb.ii"; ij: "bb.ij"; ik: "bb.ik"; il: "bb.il"; im: "bb.im"; in: "bb.in"; io: "bb.io"; ip: "bb.ip"; iq: "bb.iq"; ir: "bb.ir"; is: "bb.is"; it: "bb.it"; iu: "bb.iu"; iv: "bb.iv"; iw: "bb.iw"; ix: "bb.ix"; iy: "bb.iy"; iz: "bb.iz"; ja: "bb.ja"; jb: "bb.jb"; jc: "bb.jc"; jd: "bb.jd"; je: "bb.je"; jf: "bb.jf"; jg: "bb.jg"; jh: "bb.jh"; ji: "bb.ji"; jj: "bb.jj"; jk: "bb.jk"; jl: "bb.jl"; jm: "bb.jm"; jn: "bb.jn"; jo: "bb.jo"; jp: "bb.jp"; jq: "bb.jq"; jr: "bb.jr"; js: "bb.js"; jt: "bb.jt"; ju: "bb.ju"; jv: "bb.jv"; jw: "bb.jw"; jx: "bb.jx"; jy: "bb.jy"; jz: "bb.jz"; ka: "bb.ka"; kb: "bb.kb"; kc: "bb.kc"; kd: "bb.kd"; ke: "bb.ke"; kf: "bb.kf"; kg: "bb.kg"; kh: "bb.kh"; ki: "bb.ki"; kj: "bb.kj"; kk: "bb.kk"; kl: "bb.kl"; km: "bb.km"; kn: "bb.kn"; ko: "bb.ko"; kp: "bb.kp"; kq: "bb.kq"; kr: "bb.kr"; ks: "bb.ks"; kt: "bb.kt"; ku: "bb.ku"; kv: "bb.kv"; kw: "bb.kw"; kx: "bb.kx"; ky: "bb.ky"; kz: "bb.kz"; la: "bb.la"; lb: "bb.lb"; lc: "bb.lc"; ld: "bb.ld"; le: "bb.le"; lf: "bb.lf"; lg: "bb.lg"; lh: "bb.lh"; li: "bb.li"; lj: "bb.lj"; lk: "bb.lk"; ll: "bb.ll"; lm: "bb.lm"; ln: "bb.ln"; lo: "bb.lo"; lp: "bb.lp"; lq: "bb.lq"; lr: "bb.lr"; ls: "bb.ls"; lt: "bb.lt"; lu: "bb.lu"; lv: "bb.lv"; lw: "bb.lw"; lx: "bb.lx"; ly: "bb.ly"; lz: "bb.lz"; ma: "bb.ma"; mb: "bb.mb"; mc: "bb.mc"; md: "bb.md"; me: "bb.me"; mf: "bb.mf"; mg: "bb.mg"; mh: "bb.mh"; mi: "bb.mi"; mj: "bb.mj"; mk: "bb.mk"; ml: "bb.ml"; mm: "bb.mm"; mn: "bb.mn"; mo: "bb.mo"; mp: "bb.mp"; mq: "bb.mq"; mr: "bb.mr"; ms: "bb.ms"; mt: "bb.mt"; mu: "bb.mu"; mv: "bb.mv"; mw: "bb.mw"; mx: "bb.mx"; my: "bb.my"; mz: "bb.mz"; na: "bb.na"; nb: "bb.nb"; nc: "bb.nc"; nd: "bb.nd"; ne: "bb.ne"; nf: "bb.nf"; ng: "bb.ng"; nh: "bb.nh"; ni: "bb.ni"; nj: "bb.nj"; nk: "bb.nk"; nl: "bb.nl"; nm: "bb.nm"; nn: "bb.nn"; no: "bb.no"; np: "bb.np"; nq: "bb.nq"; nr: "bb.nr"; ns: "bb.ns"; nt: "bb.nt"; nu: "bb.nu"; nv: "bb.nv"; nw: "bb.nw"; nx: "bb.nx"; ny: "bb.ny"; nz: "bb.nz"; oa: "bb.oa"; ob: "bb.ob"; oc: "bb.oc"; od: "bb.od"; oe: "bb.oe"; of: "bb.of"; og: "bb.og"; oh: "bb.oh"; oi: "bb.oi"; oj: "bb.oj"; ok: "bb.ok"; ol: "bb.ol"; om: "bb.om"; on: "bb.on"; oo: "bb.oo"; op: "bb.op"; oq: "bb.oq"; or: "bb.or"; os: "bb.os"; ot: "bb.ot"; ou: "bb.ou"; ov: "bb.ov"; ow: "bb.ow"; ox: "bb.ox"; oy: "bb.oy"; oz: "bb.oz"; pa: "bb.pa"; pb: "bb.pb"; pc: "bb.pc"; pd: "bb.pd"; pe: "bb.pe"; pf: "bb.pf"; pg: "bb.pg"; ph: "bb.ph"; pi: "bb.pi"; pj: "bb.pj"; pk: "bb.pk"; pl: "bb.pl"; pm: "bb.pm"; pn: "bb.pn"; po: "bb.po"; pp: "bb.pp"; pq: "bb.pq"; pr: "bb.pr"; ps: "bb.ps"; pt: "bb.pt"; pu: "bb.pu"; pv: "bb.pv"; pw: "bb.pw"; px: "bb.px"; py: "bb.py"; pz: "bb.pz"; qa: "bb.qa"; qb: "bb.qb"; qc: "bb.qc"; qd: "bb.qd"; qe: "bb.qe"; qf: "bb.qf"; qg: "bb.qg"; qh: "bb.qh"; qi: "bb.qi"; qj: "bb.qj"; qk: "bb.qk"; ql: "bb.ql"; qm: "bb.qm"; qn: "bb.qn"; qo: "bb.qo"; qp: "bb.qp"; qq: "bb.qq"; qr: "bb.qr"; qs: "bb.qs"; qt: "bb.qt"; qu: "bb.qu"; qv: "bb.qv"; qw: "bb.qw"; qx: "bb.qx"; qy: "bb.qy"; qz: "bb.qz"; ra: "bb.ra"; rb: "bb.rb"; rc: "bb.rc"; rd: "bb.rd"; re: "bb.re"; rf: "bb.rf"; rg: "bb.rg"; rh: "bb.rh"; ri: "bb.ri"; rj: "bb.rj"; rk: "bb.rk"; rl: "bb.rl"; rm: "bb.rm"; rn: "bb.rn"; ro: "bb.ro"; rp: "bb.rp"; rq: "bb.rq"; rr: "bb.rr"; rs: "bb.rs"; rt: "bb.rt"; ru: "bb.ru"; rv: "bb.rv"; rw: "bb.rw"; rx: "bb.rx"; ry: "bb.ry"; rz: "bb.rz"; sa: "bb.sa"; sb: "bb.sb"; sc: "bb.sc"; sd: "bb.sd"; se: "bb.se"; sf: "bb.sf"; sg: "bb.sg"; sh: "bb.sh"; si: "bb.si"; sj: "bb.sj"; sk: "bb.sk"; sl: "bb.sl"; sm: "bb.sm"; sn: "bb.sn"; so: "bb.so"; sp: "bb.sp"; sq: "bb.sq"; sr: "bb.sr"; ss: "bb.ss"; st: "bb.st"; su: "bb.su"; sv: "bb.sv"; sw: "bb.sw"; sx: "bb.sx"; sy: "bb.sy"; sz: "bb.sz"; ta: "bb.ta"; tb: "bb.tb"; tc: "bb.tc"; td: "bb.td"; te: "bb.te"; tf: "bb.tf"; tg: "bb.tg"; th: "bb.th"; ti: "bb.ti"; tj: "bb.tj"; tk: "bb.tk"; tl: "bb.tl"; tm: "bb.tm"; tn: "bb.tn"; to: "bb.to"; tp: "bb.tp"; tq: "bb.tq"; tr: "bb.tr"; ts: "bb.ts"; tt: "bb.tt"; tu: "bb.tu"; tv: "bb.tv"; tw: "bb.tw"; tx: "bb.tx"; ty: "bb.ty"; tz: "bb.tz"; ua: "bb.ua"; ub: "bb.ub"; uc: "bb.uc"; ud: "bb.ud"; ue: "bb.ue"; uf: "bb.uf"; ug: "bb.ug"; uh: "bb.uh"; ui: "bb.ui"; uj: "bb.uj"; uk: "bb.uk"; ul: "bb.ul"; um: "bb.um"; un: "bb.un"; uo: "bb.uo"; up: "bb.up"; uq: "bb.uq"; ur: "bb.ur"; us: "bb.us"; ut: "bb.ut"; uu: "bb.uu"; uv: "bb.uv"; uw: "bb.uw"; ux: "bb.ux"; uy: "bb.uy"; uz: "bb.uz"; va: "bb.va"; vb: "bb.vb"; vc: "bb.vc"; vd: "bb.vd"; ve: "bb.ve"; vf: "bb.vf"; vg: "bb.vg"; vh: "bb.vh"; vi: "bb.vi"; vj: "bb.vj"; vk: "bb.vk"; vl: "bb.vl"; vm: "bb.vm"; vn: "bb.vn"; vo: "bb.vo"; vp: "bb.vp"; vq: "bb.vq"; vr: "bb.vr"; vs: "bb.vs"; vt: "bb.vt"; vu: "bb.vu"; vv: "bb.vv"; vw: "bb.vw"; vx: "bb.vx"; vy: "bb.vy"; vz: "bb.vz"; wa: "bb.wa"; wb: "bb.wb"; wc: "bb.wc"; wd: "bb.wd"; we: "bb.we"; wf: "bb.wf"; wg: "bb.wg"; wh: "bb.wh"; wi: "bb.wi"; wj: "bb.wj"; wk: "bb.wk"; wl: "bb.wl"; wm: "bb.wm"; wn: "bb.wn"; wo: "bb.wo"; wp: "bb.wp"; wq: "bb.wq"; wr: "bb.wr"; ws: "bb.ws"; wt: "bb.wt"; wu: "bb.wu"; wv: "bb.wv"; ww: "bb.ww"; wx: "bb.wx"; wy: "bb.wy"; wz: "bb.wz"; xa: "bb.xa"; xb: "bb.xb"; xc: "bb.xc"; xd: "bb.xd"; xe: "bb.xe"; xf: "bb.xf"; xg: "bb.xg"; xh: "bb.xh"; xi: "bb.xi"; xj: "bb.xj"; xk: "bb.xk"; xl: "bb.xl"; xm: "bb.xm"; xn: "bb.xn"; xo: "bb.xo"; xp: "bb.xp"; xq: "bb.xq"; xr: "bb.xr"; xs: "bb.xs"; xt: "bb.xt"; xu: "bb.xu"; xv: "bb.xv"; xw: "bb.xw"; xx: "bb.xx"; xy: "bb.xy"; xz: "bb.xz"; ya: "bb.ya"; yb: "bb.yb"; yc: "bb.yc"; yd: "bb.yd"; ye: "bb.ye"; yf: "bb.yf"; yg: "bb.yg"; yh: "bb.yh"; yi: "bb.yi"; yj: "bb.yj"; yk: "bb.yk"; yl: "bb.yl"; ym: "bb.ym"; yn: "bb.yn"; yo: "bb.yo"; yp: "bb.yp"; yq: "bb.yq"; yr: "bb.yr"; ys: "bb.ys"; yt: "bb.yt"; yu: "bb.yu"; yv: "bb.yv"; yw: "bb.yw"; yx: "bb.yx"; yy: "bb.yy"; yz: "bb.yz"; za: "bb.za"; zb: "bb.zb"; zc: "bb.zc"; zd: "bb.zd"; ze: "bb.ze"; zf: "bb.zf"; zg: "bb.zg"; zh: "bb.zh"; zi: "bb.zi"; zj: "bb.zj"; zk: "bb.zk"; zl: "bb.zl"; zm: "bb.zm"; zn: "bb.zn"; zo: "bb.zo"; zp: "bb.zp"; zq: "bb.zq"; zr: "bb.zr"; zs: "bb.zs"; zt: "bb.zt"; zu: "bb.zu"; zv: "bb.zv"; zw: "bb.zw"; zx: "bb.zx"; zy: "bb.zy"; zz: "bb.zz"; }; bc: { aa: "bc.aa"; ab: "bc.ab"; ac: "bc.ac"; ad: "bc.ad"; ae: "bc.ae"; af: "bc.af"; ag: "bc.ag"; ah: "bc.ah"; ai: "bc.ai"; aj: "bc.aj"; ak: "bc.ak"; al: "bc.al"; am: "bc.am"; an: "bc.an"; ao: "bc.ao"; ap: "bc.ap"; aq: "bc.aq"; ar: "bc.ar"; as: "bc.as"; at: "bc.at"; au: "bc.au"; av: "bc.av"; aw: "bc.aw"; ax: "bc.ax"; ay: "bc.ay"; az: "bc.az"; ba: "bc.ba"; bb: "bc.bb"; bc: "bc.bc"; bd: "bc.bd"; be: "bc.be"; bf: "bc.bf"; bg: "bc.bg"; bh: "bc.bh"; bi: "bc.bi"; bj: "bc.bj"; bk: "bc.bk"; bl: "bc.bl"; bm: "bc.bm"; bn: "bc.bn"; bo: "bc.bo"; bp: "bc.bp"; bq: "bc.bq"; br: "bc.br"; bs: "bc.bs"; bt: "bc.bt"; bu: "bc.bu"; bv: "bc.bv"; bw: "bc.bw"; bx: "bc.bx"; by: "bc.by"; bz: "bc.bz"; ca: "bc.ca"; cb: "bc.cb"; cc: "bc.cc"; cd: "bc.cd"; ce: "bc.ce"; cf: "bc.cf"; cg: "bc.cg"; ch: "bc.ch"; ci: "bc.ci"; cj: "bc.cj"; ck: "bc.ck"; cl: "bc.cl"; cm: "bc.cm"; cn: "bc.cn"; co: "bc.co"; cp: "bc.cp"; cq: "bc.cq"; cr: "bc.cr"; cs: "bc.cs"; ct: "bc.ct"; cu: "bc.cu"; cv: "bc.cv"; cw: "bc.cw"; cx: "bc.cx"; cy: "bc.cy"; cz: "bc.cz"; da: "bc.da"; db: "bc.db"; dc: "bc.dc"; dd: "bc.dd"; de: "bc.de"; df: "bc.df"; dg: "bc.dg"; dh: "bc.dh"; di: "bc.di"; dj: "bc.dj"; dk: "bc.dk"; dl: "bc.dl"; dm: "bc.dm"; dn: "bc.dn"; do: "bc.do"; dp: "bc.dp"; dq: "bc.dq"; dr: "bc.dr"; ds: "bc.ds"; dt: "bc.dt"; du: "bc.du"; dv: "bc.dv"; dw: "bc.dw"; dx: "bc.dx"; dy: "bc.dy"; dz: "bc.dz"; ea: "bc.ea"; eb: "bc.eb"; ec: "bc.ec"; ed: "bc.ed"; ee: "bc.ee"; ef: "bc.ef"; eg: "bc.eg"; eh: "bc.eh"; ei: "bc.ei"; ej: "bc.ej"; ek: "bc.ek"; el: "bc.el"; em: "bc.em"; en: "bc.en"; eo: "bc.eo"; ep: "bc.ep"; eq: "bc.eq"; er: "bc.er"; es: "bc.es"; et: "bc.et"; eu: "bc.eu"; ev: "bc.ev"; ew: "bc.ew"; ex: "bc.ex"; ey: "bc.ey"; ez: "bc.ez"; fa: "bc.fa"; fb: "bc.fb"; fc: "bc.fc"; fd: "bc.fd"; fe: "bc.fe"; ff: "bc.ff"; fg: "bc.fg"; fh: "bc.fh"; fi: "bc.fi"; fj: "bc.fj"; fk: "bc.fk"; fl: "bc.fl"; fm: "bc.fm"; fn: "bc.fn"; fo: "bc.fo"; fp: "bc.fp"; fq: "bc.fq"; fr: "bc.fr"; fs: "bc.fs"; ft: "bc.ft"; fu: "bc.fu"; fv: "bc.fv"; fw: "bc.fw"; fx: "bc.fx"; fy: "bc.fy"; fz: "bc.fz"; ga: "bc.ga"; gb: "bc.gb"; gc: "bc.gc"; gd: "bc.gd"; ge: "bc.ge"; gf: "bc.gf"; gg: "bc.gg"; gh: "bc.gh"; gi: "bc.gi"; gj: "bc.gj"; gk: "bc.gk"; gl: "bc.gl"; gm: "bc.gm"; gn: "bc.gn"; go: "bc.go"; gp: "bc.gp"; gq: "bc.gq"; gr: "bc.gr"; gs: "bc.gs"; gt: "bc.gt"; gu: "bc.gu"; gv: "bc.gv"; gw: "bc.gw"; gx: "bc.gx"; gy: "bc.gy"; gz: "bc.gz"; ha: "bc.ha"; hb: "bc.hb"; hc: "bc.hc"; hd: "bc.hd"; he: "bc.he"; hf: "bc.hf"; hg: "bc.hg"; hh: "bc.hh"; hi: "bc.hi"; hj: "bc.hj"; hk: "bc.hk"; hl: "bc.hl"; hm: "bc.hm"; hn: "bc.hn"; ho: "bc.ho"; hp: "bc.hp"; hq: "bc.hq"; hr: "bc.hr"; hs: "bc.hs"; ht: "bc.ht"; hu: "bc.hu"; hv: "bc.hv"; hw: "bc.hw"; hx: "bc.hx"; hy: "bc.hy"; hz: "bc.hz"; ia: "bc.ia"; ib: "bc.ib"; ic: "bc.ic"; id: "bc.id"; ie: "bc.ie"; if: "bc.if"; ig: "bc.ig"; ih: "bc.ih"; ii: "bc.ii"; ij: "bc.ij"; ik: "bc.ik"; il: "bc.il"; im: "bc.im"; in: "bc.in"; io: "bc.io"; ip: "bc.ip"; iq: "bc.iq"; ir: "bc.ir"; is: "bc.is"; it: "bc.it"; iu: "bc.iu"; iv: "bc.iv"; iw: "bc.iw"; ix: "bc.ix"; iy: "bc.iy"; iz: "bc.iz"; ja: "bc.ja"; jb: "bc.jb"; jc: "bc.jc"; jd: "bc.jd"; je: "bc.je"; jf: "bc.jf"; jg: "bc.jg"; jh: "bc.jh"; ji: "bc.ji"; jj: "bc.jj"; jk: "bc.jk"; jl: "bc.jl"; jm: "bc.jm"; jn: "bc.jn"; jo: "bc.jo"; jp: "bc.jp"; jq: "bc.jq"; jr: "bc.jr"; js: "bc.js"; jt: "bc.jt"; ju: "bc.ju"; jv: "bc.jv"; jw: "bc.jw"; jx: "bc.jx"; jy: "bc.jy"; jz: "bc.jz"; ka: "bc.ka"; kb: "bc.kb"; kc: "bc.kc"; kd: "bc.kd"; ke: "bc.ke"; kf: "bc.kf"; kg: "bc.kg"; kh: "bc.kh"; ki: "bc.ki"; kj: "bc.kj"; kk: "bc.kk"; kl: "bc.kl"; km: "bc.km"; kn: "bc.kn"; ko: "bc.ko"; kp: "bc.kp"; kq: "bc.kq"; kr: "bc.kr"; ks: "bc.ks"; kt: "bc.kt"; ku: "bc.ku"; kv: "bc.kv"; kw: "bc.kw"; kx: "bc.kx"; ky: "bc.ky"; kz: "bc.kz"; la: "bc.la"; lb: "bc.lb"; lc: "bc.lc"; ld: "bc.ld"; le: "bc.le"; lf: "bc.lf"; lg: "bc.lg"; lh: "bc.lh"; li: "bc.li"; lj: "bc.lj"; lk: "bc.lk"; ll: "bc.ll"; lm: "bc.lm"; ln: "bc.ln"; lo: "bc.lo"; lp: "bc.lp"; lq: "bc.lq"; lr: "bc.lr"; ls: "bc.ls"; lt: "bc.lt"; lu: "bc.lu"; lv: "bc.lv"; lw: "bc.lw"; lx: "bc.lx"; ly: "bc.ly"; lz: "bc.lz"; ma: "bc.ma"; mb: "bc.mb"; mc: "bc.mc"; md: "bc.md"; me: "bc.me"; mf: "bc.mf"; mg: "bc.mg"; mh: "bc.mh"; mi: "bc.mi"; mj: "bc.mj"; mk: "bc.mk"; ml: "bc.ml"; mm: "bc.mm"; mn: "bc.mn"; mo: "bc.mo"; mp: "bc.mp"; mq: "bc.mq"; mr: "bc.mr"; ms: "bc.ms"; mt: "bc.mt"; mu: "bc.mu"; mv: "bc.mv"; mw: "bc.mw"; mx: "bc.mx"; my: "bc.my"; mz: "bc.mz"; na: "bc.na"; nb: "bc.nb"; nc: "bc.nc"; nd: "bc.nd"; ne: "bc.ne"; nf: "bc.nf"; ng: "bc.ng"; nh: "bc.nh"; ni: "bc.ni"; nj: "bc.nj"; nk: "bc.nk"; nl: "bc.nl"; nm: "bc.nm"; nn: "bc.nn"; no: "bc.no"; np: "bc.np"; nq: "bc.nq"; nr: "bc.nr"; ns: "bc.ns"; nt: "bc.nt"; nu: "bc.nu"; nv: "bc.nv"; nw: "bc.nw"; nx: "bc.nx"; ny: "bc.ny"; nz: "bc.nz"; oa: "bc.oa"; ob: "bc.ob"; oc: "bc.oc"; od: "bc.od"; oe: "bc.oe"; of: "bc.of"; og: "bc.og"; oh: "bc.oh"; oi: "bc.oi"; oj: "bc.oj"; ok: "bc.ok"; ol: "bc.ol"; om: "bc.om"; on: "bc.on"; oo: "bc.oo"; op: "bc.op"; oq: "bc.oq"; or: "bc.or"; os: "bc.os"; ot: "bc.ot"; ou: "bc.ou"; ov: "bc.ov"; ow: "bc.ow"; ox: "bc.ox"; oy: "bc.oy"; oz: "bc.oz"; pa: "bc.pa"; pb: "bc.pb"; pc: "bc.pc"; pd: "bc.pd"; pe: "bc.pe"; pf: "bc.pf"; pg: "bc.pg"; ph: "bc.ph"; pi: "bc.pi"; pj: "bc.pj"; pk: "bc.pk"; pl: "bc.pl"; pm: "bc.pm"; pn: "bc.pn"; po: "bc.po"; pp: "bc.pp"; pq: "bc.pq"; pr: "bc.pr"; ps: "bc.ps"; pt: "bc.pt"; pu: "bc.pu"; pv: "bc.pv"; pw: "bc.pw"; px: "bc.px"; py: "bc.py"; pz: "bc.pz"; qa: "bc.qa"; qb: "bc.qb"; qc: "bc.qc"; qd: "bc.qd"; qe: "bc.qe"; qf: "bc.qf"; qg: "bc.qg"; qh: "bc.qh"; qi: "bc.qi"; qj: "bc.qj"; qk: "bc.qk"; ql: "bc.ql"; qm: "bc.qm"; qn: "bc.qn"; qo: "bc.qo"; qp: "bc.qp"; qq: "bc.qq"; qr: "bc.qr"; qs: "bc.qs"; qt: "bc.qt"; qu: "bc.qu"; qv: "bc.qv"; qw: "bc.qw"; qx: "bc.qx"; qy: "bc.qy"; qz: "bc.qz"; ra: "bc.ra"; rb: "bc.rb"; rc: "bc.rc"; rd: "bc.rd"; re: "bc.re"; rf: "bc.rf"; rg: "bc.rg"; rh: "bc.rh"; ri: "bc.ri"; rj: "bc.rj"; rk: "bc.rk"; rl: "bc.rl"; rm: "bc.rm"; rn: "bc.rn"; ro: "bc.ro"; rp: "bc.rp"; rq: "bc.rq"; rr: "bc.rr"; rs: "bc.rs"; rt: "bc.rt"; ru: "bc.ru"; rv: "bc.rv"; rw: "bc.rw"; rx: "bc.rx"; ry: "bc.ry"; rz: "bc.rz"; sa: "bc.sa"; sb: "bc.sb"; sc: "bc.sc"; sd: "bc.sd"; se: "bc.se"; sf: "bc.sf"; sg: "bc.sg"; sh: "bc.sh"; si: "bc.si"; sj: "bc.sj"; sk: "bc.sk"; sl: "bc.sl"; sm: "bc.sm"; sn: "bc.sn"; so: "bc.so"; sp: "bc.sp"; sq: "bc.sq"; sr: "bc.sr"; ss: "bc.ss"; st: "bc.st"; su: "bc.su"; sv: "bc.sv"; sw: "bc.sw"; sx: "bc.sx"; sy: "bc.sy"; sz: "bc.sz"; ta: "bc.ta"; tb: "bc.tb"; tc: "bc.tc"; td: "bc.td"; te: "bc.te"; tf: "bc.tf"; tg: "bc.tg"; th: "bc.th"; ti: "bc.ti"; tj: "bc.tj"; tk: "bc.tk"; tl: "bc.tl"; tm: "bc.tm"; tn: "bc.tn"; to: "bc.to"; tp: "bc.tp"; tq: "bc.tq"; tr: "bc.tr"; ts: "bc.ts"; tt: "bc.tt"; tu: "bc.tu"; tv: "bc.tv"; tw: "bc.tw"; tx: "bc.tx"; ty: "bc.ty"; tz: "bc.tz"; ua: "bc.ua"; ub: "bc.ub"; uc: "bc.uc"; ud: "bc.ud"; ue: "bc.ue"; uf: "bc.uf"; ug: "bc.ug"; uh: "bc.uh"; ui: "bc.ui"; uj: "bc.uj"; uk: "bc.uk"; ul: "bc.ul"; um: "bc.um"; un: "bc.un"; uo: "bc.uo"; up: "bc.up"; uq: "bc.uq"; ur: "bc.ur"; us: "bc.us"; ut: "bc.ut"; uu: "bc.uu"; uv: "bc.uv"; uw: "bc.uw"; ux: "bc.ux"; uy: "bc.uy"; uz: "bc.uz"; va: "bc.va"; vb: "bc.vb"; vc: "bc.vc"; vd: "bc.vd"; ve: "bc.ve"; vf: "bc.vf"; vg: "bc.vg"; vh: "bc.vh"; vi: "bc.vi"; vj: "bc.vj"; vk: "bc.vk"; vl: "bc.vl"; vm: "bc.vm"; vn: "bc.vn"; vo: "bc.vo"; vp: "bc.vp"; vq: "bc.vq"; vr: "bc.vr"; vs: "bc.vs"; vt: "bc.vt"; vu: "bc.vu"; vv: "bc.vv"; vw: "bc.vw"; vx: "bc.vx"; vy: "bc.vy"; vz: "bc.vz"; wa: "bc.wa"; wb: "bc.wb"; wc: "bc.wc"; wd: "bc.wd"; we: "bc.we"; wf: "bc.wf"; wg: "bc.wg"; wh: "bc.wh"; wi: "bc.wi"; wj: "bc.wj"; wk: "bc.wk"; wl: "bc.wl"; wm: "bc.wm"; wn: "bc.wn"; wo: "bc.wo"; wp: "bc.wp"; wq: "bc.wq"; wr: "bc.wr"; ws: "bc.ws"; wt: "bc.wt"; wu: "bc.wu"; wv: "bc.wv"; ww: "bc.ww"; wx: "bc.wx"; wy: "bc.wy"; wz: "bc.wz"; xa: "bc.xa"; xb: "bc.xb"; xc: "bc.xc"; xd: "bc.xd"; xe: "bc.xe"; xf: "bc.xf"; xg: "bc.xg"; xh: "bc.xh"; xi: "bc.xi"; xj: "bc.xj"; xk: "bc.xk"; xl: "bc.xl"; xm: "bc.xm"; xn: "bc.xn"; xo: "bc.xo"; xp: "bc.xp"; xq: "bc.xq"; xr: "bc.xr"; xs: "bc.xs"; xt: "bc.xt"; xu: "bc.xu"; xv: "bc.xv"; xw: "bc.xw"; xx: "bc.xx"; xy: "bc.xy"; xz: "bc.xz"; ya: "bc.ya"; yb: "bc.yb"; yc: "bc.yc"; yd: "bc.yd"; ye: "bc.ye"; yf: "bc.yf"; yg: "bc.yg"; yh: "bc.yh"; yi: "bc.yi"; yj: "bc.yj"; yk: "bc.yk"; yl: "bc.yl"; ym: "bc.ym"; yn: "bc.yn"; yo: "bc.yo"; yp: "bc.yp"; yq: "bc.yq"; yr: "bc.yr"; ys: "bc.ys"; yt: "bc.yt"; yu: "bc.yu"; yv: "bc.yv"; yw: "bc.yw"; yx: "bc.yx"; yy: "bc.yy"; yz: "bc.yz"; za: "bc.za"; zb: "bc.zb"; zc: "bc.zc"; zd: "bc.zd"; ze: "bc.ze"; zf: "bc.zf"; zg: "bc.zg"; zh: "bc.zh"; zi: "bc.zi"; zj: "bc.zj"; zk: "bc.zk"; zl: "bc.zl"; zm: "bc.zm"; zn: "bc.zn"; zo: "bc.zo"; zp: "bc.zp"; zq: "bc.zq"; zr: "bc.zr"; zs: "bc.zs"; zt: "bc.zt"; zu: "bc.zu"; zv: "bc.zv"; zw: "bc.zw"; zx: "bc.zx"; zy: "bc.zy"; zz: "bc.zz"; }; bd: { aa: "bd.aa"; ab: "bd.ab"; ac: "bd.ac"; ad: "bd.ad"; ae: "bd.ae"; af: "bd.af"; ag: "bd.ag"; ah: "bd.ah"; ai: "bd.ai"; aj: "bd.aj"; ak: "bd.ak"; al: "bd.al"; am: "bd.am"; an: "bd.an"; ao: "bd.ao"; ap: "bd.ap"; aq: "bd.aq"; ar: "bd.ar"; as: "bd.as"; at: "bd.at"; au: "bd.au"; av: "bd.av"; aw: "bd.aw"; ax: "bd.ax"; ay: "bd.ay"; az: "bd.az"; ba: "bd.ba"; bb: "bd.bb"; bc: "bd.bc"; bd: "bd.bd"; be: "bd.be"; bf: "bd.bf"; bg: "bd.bg"; bh: "bd.bh"; bi: "bd.bi"; bj: "bd.bj"; bk: "bd.bk"; bl: "bd.bl"; bm: "bd.bm"; bn: "bd.bn"; bo: "bd.bo"; bp: "bd.bp"; bq: "bd.bq"; br: "bd.br"; bs: "bd.bs"; bt: "bd.bt"; bu: "bd.bu"; bv: "bd.bv"; bw: "bd.bw"; bx: "bd.bx"; by: "bd.by"; bz: "bd.bz"; ca: "bd.ca"; cb: "bd.cb"; cc: "bd.cc"; cd: "bd.cd"; ce: "bd.ce"; cf: "bd.cf"; cg: "bd.cg"; ch: "bd.ch"; ci: "bd.ci"; cj: "bd.cj"; ck: "bd.ck"; cl: "bd.cl"; cm: "bd.cm"; cn: "bd.cn"; co: "bd.co"; cp: "bd.cp"; cq: "bd.cq"; cr: "bd.cr"; cs: "bd.cs"; ct: "bd.ct"; cu: "bd.cu"; cv: "bd.cv"; cw: "bd.cw"; cx: "bd.cx"; cy: "bd.cy"; cz: "bd.cz"; da: "bd.da"; db: "bd.db"; dc: "bd.dc"; dd: "bd.dd"; de: "bd.de"; df: "bd.df"; dg: "bd.dg"; dh: "bd.dh"; di: "bd.di"; dj: "bd.dj"; dk: "bd.dk"; dl: "bd.dl"; dm: "bd.dm"; dn: "bd.dn"; do: "bd.do"; dp: "bd.dp"; dq: "bd.dq"; dr: "bd.dr"; ds: "bd.ds"; dt: "bd.dt"; du: "bd.du"; dv: "bd.dv"; dw: "bd.dw"; dx: "bd.dx"; dy: "bd.dy"; dz: "bd.dz"; ea: "bd.ea"; eb: "bd.eb"; ec: "bd.ec"; ed: "bd.ed"; ee: "bd.ee"; ef: "bd.ef"; eg: "bd.eg"; eh: "bd.eh"; ei: "bd.ei"; ej: "bd.ej"; ek: "bd.ek"; el: "bd.el"; em: "bd.em"; en: "bd.en"; eo: "bd.eo"; ep: "bd.ep"; eq: "bd.eq"; er: "bd.er"; es: "bd.es"; et: "bd.et"; eu: "bd.eu"; ev: "bd.ev"; ew: "bd.ew"; ex: "bd.ex"; ey: "bd.ey"; ez: "bd.ez"; fa: "bd.fa"; fb: "bd.fb"; fc: "bd.fc"; fd: "bd.fd"; fe: "bd.fe"; ff: "bd.ff"; fg: "bd.fg"; fh: "bd.fh"; fi: "bd.fi"; fj: "bd.fj"; fk: "bd.fk"; fl: "bd.fl"; fm: "bd.fm"; fn: "bd.fn"; fo: "bd.fo"; fp: "bd.fp"; fq: "bd.fq"; fr: "bd.fr"; fs: "bd.fs"; ft: "bd.ft"; fu: "bd.fu"; fv: "bd.fv"; fw: "bd.fw"; fx: "bd.fx"; fy: "bd.fy"; fz: "bd.fz"; ga: "bd.ga"; gb: "bd.gb"; gc: "bd.gc"; gd: "bd.gd"; ge: "bd.ge"; gf: "bd.gf"; gg: "bd.gg"; gh: "bd.gh"; gi: "bd.gi"; gj: "bd.gj"; gk: "bd.gk"; gl: "bd.gl"; gm: "bd.gm"; gn: "bd.gn"; go: "bd.go"; gp: "bd.gp"; gq: "bd.gq"; gr: "bd.gr"; gs: "bd.gs"; gt: "bd.gt"; gu: "bd.gu"; gv: "bd.gv"; gw: "bd.gw"; gx: "bd.gx"; gy: "bd.gy"; gz: "bd.gz"; ha: "bd.ha"; hb: "bd.hb"; hc: "bd.hc"; hd: "bd.hd"; he: "bd.he"; hf: "bd.hf"; hg: "bd.hg"; hh: "bd.hh"; hi: "bd.hi"; hj: "bd.hj"; hk: "bd.hk"; hl: "bd.hl"; hm: "bd.hm"; hn: "bd.hn"; ho: "bd.ho"; hp: "bd.hp"; hq: "bd.hq"; hr: "bd.hr"; hs: "bd.hs"; ht: "bd.ht"; hu: "bd.hu"; hv: "bd.hv"; hw: "bd.hw"; hx: "bd.hx"; hy: "bd.hy"; hz: "bd.hz"; ia: "bd.ia"; ib: "bd.ib"; ic: "bd.ic"; id: "bd.id"; ie: "bd.ie"; if: "bd.if"; ig: "bd.ig"; ih: "bd.ih"; ii: "bd.ii"; ij: "bd.ij"; ik: "bd.ik"; il: "bd.il"; im: "bd.im"; in: "bd.in"; io: "bd.io"; ip: "bd.ip"; iq: "bd.iq"; ir: "bd.ir"; is: "bd.is"; it: "bd.it"; iu: "bd.iu"; iv: "bd.iv"; iw: "bd.iw"; ix: "bd.ix"; iy: "bd.iy"; iz: "bd.iz"; ja: "bd.ja"; jb: "bd.jb"; jc: "bd.jc"; jd: "bd.jd"; je: "bd.je"; jf: "bd.jf"; jg: "bd.jg"; jh: "bd.jh"; ji: "bd.ji"; jj: "bd.jj"; jk: "bd.jk"; jl: "bd.jl"; jm: "bd.jm"; jn: "bd.jn"; jo: "bd.jo"; jp: "bd.jp"; jq: "bd.jq"; jr: "bd.jr"; js: "bd.js"; jt: "bd.jt"; ju: "bd.ju"; jv: "bd.jv"; jw: "bd.jw"; jx: "bd.jx"; jy: "bd.jy"; jz: "bd.jz"; ka: "bd.ka"; kb: "bd.kb"; kc: "bd.kc"; kd: "bd.kd"; ke: "bd.ke"; kf: "bd.kf"; kg: "bd.kg"; kh: "bd.kh"; ki: "bd.ki"; kj: "bd.kj"; kk: "bd.kk"; kl: "bd.kl"; km: "bd.km"; kn: "bd.kn"; ko: "bd.ko"; kp: "bd.kp"; kq: "bd.kq"; kr: "bd.kr"; ks: "bd.ks"; kt: "bd.kt"; ku: "bd.ku"; kv: "bd.kv"; kw: "bd.kw"; kx: "bd.kx"; ky: "bd.ky"; kz: "bd.kz"; la: "bd.la"; lb: "bd.lb"; lc: "bd.lc"; ld: "bd.ld"; le: "bd.le"; lf: "bd.lf"; lg: "bd.lg"; lh: "bd.lh"; li: "bd.li"; lj: "bd.lj"; lk: "bd.lk"; ll: "bd.ll"; lm: "bd.lm"; ln: "bd.ln"; lo: "bd.lo"; lp: "bd.lp"; lq: "bd.lq"; lr: "bd.lr"; ls: "bd.ls"; lt: "bd.lt"; lu: "bd.lu"; lv: "bd.lv"; lw: "bd.lw"; lx: "bd.lx"; ly: "bd.ly"; lz: "bd.lz"; ma: "bd.ma"; mb: "bd.mb"; mc: "bd.mc"; md: "bd.md"; me: "bd.me"; mf: "bd.mf"; mg: "bd.mg"; mh: "bd.mh"; mi: "bd.mi"; mj: "bd.mj"; mk: "bd.mk"; ml: "bd.ml"; mm: "bd.mm"; mn: "bd.mn"; mo: "bd.mo"; mp: "bd.mp"; mq: "bd.mq"; mr: "bd.mr"; ms: "bd.ms"; mt: "bd.mt"; mu: "bd.mu"; mv: "bd.mv"; mw: "bd.mw"; mx: "bd.mx"; my: "bd.my"; mz: "bd.mz"; na: "bd.na"; nb: "bd.nb"; nc: "bd.nc"; nd: "bd.nd"; ne: "bd.ne"; nf: "bd.nf"; ng: "bd.ng"; nh: "bd.nh"; ni: "bd.ni"; nj: "bd.nj"; nk: "bd.nk"; nl: "bd.nl"; nm: "bd.nm"; nn: "bd.nn"; no: "bd.no"; np: "bd.np"; nq: "bd.nq"; nr: "bd.nr"; ns: "bd.ns"; nt: "bd.nt"; nu: "bd.nu"; nv: "bd.nv"; nw: "bd.nw"; nx: "bd.nx"; ny: "bd.ny"; nz: "bd.nz"; oa: "bd.oa"; ob: "bd.ob"; oc: "bd.oc"; od: "bd.od"; oe: "bd.oe"; of: "bd.of"; og: "bd.og"; oh: "bd.oh"; oi: "bd.oi"; oj: "bd.oj"; ok: "bd.ok"; ol: "bd.ol"; om: "bd.om"; on: "bd.on"; oo: "bd.oo"; op: "bd.op"; oq: "bd.oq"; or: "bd.or"; os: "bd.os"; ot: "bd.ot"; ou: "bd.ou"; ov: "bd.ov"; ow: "bd.ow"; ox: "bd.ox"; oy: "bd.oy"; oz: "bd.oz"; pa: "bd.pa"; pb: "bd.pb"; pc: "bd.pc"; pd: "bd.pd"; pe: "bd.pe"; pf: "bd.pf"; pg: "bd.pg"; ph: "bd.ph"; pi: "bd.pi"; pj: "bd.pj"; pk: "bd.pk"; pl: "bd.pl"; pm: "bd.pm"; pn: "bd.pn"; po: "bd.po"; pp: "bd.pp"; pq: "bd.pq"; pr: "bd.pr"; ps: "bd.ps"; pt: "bd.pt"; pu: "bd.pu"; pv: "bd.pv"; pw: "bd.pw"; px: "bd.px"; py: "bd.py"; pz: "bd.pz"; qa: "bd.qa"; qb: "bd.qb"; qc: "bd.qc"; qd: "bd.qd"; qe: "bd.qe"; qf: "bd.qf"; qg: "bd.qg"; qh: "bd.qh"; qi: "bd.qi"; qj: "bd.qj"; qk: "bd.qk"; ql: "bd.ql"; qm: "bd.qm"; qn: "bd.qn"; qo: "bd.qo"; qp: "bd.qp"; qq: "bd.qq"; qr: "bd.qr"; qs: "bd.qs"; qt: "bd.qt"; qu: "bd.qu"; qv: "bd.qv"; qw: "bd.qw"; qx: "bd.qx"; qy: "bd.qy"; qz: "bd.qz"; ra: "bd.ra"; rb: "bd.rb"; rc: "bd.rc"; rd: "bd.rd"; re: "bd.re"; rf: "bd.rf"; rg: "bd.rg"; rh: "bd.rh"; ri: "bd.ri"; rj: "bd.rj"; rk: "bd.rk"; rl: "bd.rl"; rm: "bd.rm"; rn: "bd.rn"; ro: "bd.ro"; rp: "bd.rp"; rq: "bd.rq"; rr: "bd.rr"; rs: "bd.rs"; rt: "bd.rt"; ru: "bd.ru"; rv: "bd.rv"; rw: "bd.rw"; rx: "bd.rx"; ry: "bd.ry"; rz: "bd.rz"; sa: "bd.sa"; sb: "bd.sb"; sc: "bd.sc"; sd: "bd.sd"; se: "bd.se"; sf: "bd.sf"; sg: "bd.sg"; sh: "bd.sh"; si: "bd.si"; sj: "bd.sj"; sk: "bd.sk"; sl: "bd.sl"; sm: "bd.sm"; sn: "bd.sn"; so: "bd.so"; sp: "bd.sp"; sq: "bd.sq"; sr: "bd.sr"; ss: "bd.ss"; st: "bd.st"; su: "bd.su"; sv: "bd.sv"; sw: "bd.sw"; sx: "bd.sx"; sy: "bd.sy"; sz: "bd.sz"; ta: "bd.ta"; tb: "bd.tb"; tc: "bd.tc"; td: "bd.td"; te: "bd.te"; tf: "bd.tf"; tg: "bd.tg"; th: "bd.th"; ti: "bd.ti"; tj: "bd.tj"; tk: "bd.tk"; tl: "bd.tl"; tm: "bd.tm"; tn: "bd.tn"; to: "bd.to"; tp: "bd.tp"; tq: "bd.tq"; tr: "bd.tr"; ts: "bd.ts"; tt: "bd.tt"; tu: "bd.tu"; tv: "bd.tv"; tw: "bd.tw"; tx: "bd.tx"; ty: "bd.ty"; tz: "bd.tz"; ua: "bd.ua"; ub: "bd.ub"; uc: "bd.uc"; ud: "bd.ud"; ue: "bd.ue"; uf: "bd.uf"; ug: "bd.ug"; uh: "bd.uh"; ui: "bd.ui"; uj: "bd.uj"; uk: "bd.uk"; ul: "bd.ul"; um: "bd.um"; un: "bd.un"; uo: "bd.uo"; up: "bd.up"; uq: "bd.uq"; ur: "bd.ur"; us: "bd.us"; ut: "bd.ut"; uu: "bd.uu"; uv: "bd.uv"; uw: "bd.uw"; ux: "bd.ux"; uy: "bd.uy"; uz: "bd.uz"; va: "bd.va"; vb: "bd.vb"; vc: "bd.vc"; vd: "bd.vd"; ve: "bd.ve"; vf: "bd.vf"; vg: "bd.vg"; vh: "bd.vh"; vi: "bd.vi"; vj: "bd.vj"; vk: "bd.vk"; vl: "bd.vl"; vm: "bd.vm"; vn: "bd.vn"; vo: "bd.vo"; vp: "bd.vp"; vq: "bd.vq"; vr: "bd.vr"; vs: "bd.vs"; vt: "bd.vt"; vu: "bd.vu"; vv: "bd.vv"; vw: "bd.vw"; vx: "bd.vx"; vy: "bd.vy"; vz: "bd.vz"; wa: "bd.wa"; wb: "bd.wb"; wc: "bd.wc"; wd: "bd.wd"; we: "bd.we"; wf: "bd.wf"; wg: "bd.wg"; wh: "bd.wh"; wi: "bd.wi"; wj: "bd.wj"; wk: "bd.wk"; wl: "bd.wl"; wm: "bd.wm"; wn: "bd.wn"; wo: "bd.wo"; wp: "bd.wp"; wq: "bd.wq"; wr: "bd.wr"; ws: "bd.ws"; wt: "bd.wt"; wu: "bd.wu"; wv: "bd.wv"; ww: "bd.ww"; wx: "bd.wx"; wy: "bd.wy"; wz: "bd.wz"; xa: "bd.xa"; xb: "bd.xb"; xc: "bd.xc"; xd: "bd.xd"; xe: "bd.xe"; xf: "bd.xf"; xg: "bd.xg"; xh: "bd.xh"; xi: "bd.xi"; xj: "bd.xj"; xk: "bd.xk"; xl: "bd.xl"; xm: "bd.xm"; xn: "bd.xn"; xo: "bd.xo"; xp: "bd.xp"; xq: "bd.xq"; xr: "bd.xr"; xs: "bd.xs"; xt: "bd.xt"; xu: "bd.xu"; xv: "bd.xv"; xw: "bd.xw"; xx: "bd.xx"; xy: "bd.xy"; xz: "bd.xz"; ya: "bd.ya"; yb: "bd.yb"; yc: "bd.yc"; yd: "bd.yd"; ye: "bd.ye"; yf: "bd.yf"; yg: "bd.yg"; yh: "bd.yh"; yi: "bd.yi"; yj: "bd.yj"; yk: "bd.yk"; yl: "bd.yl"; ym: "bd.ym"; yn: "bd.yn"; yo: "bd.yo"; yp: "bd.yp"; yq: "bd.yq"; yr: "bd.yr"; ys: "bd.ys"; yt: "bd.yt"; yu: "bd.yu"; yv: "bd.yv"; yw: "bd.yw"; yx: "bd.yx"; yy: "bd.yy"; yz: "bd.yz"; za: "bd.za"; zb: "bd.zb"; zc: "bd.zc"; zd: "bd.zd"; ze: "bd.ze"; zf: "bd.zf"; zg: "bd.zg"; zh: "bd.zh"; zi: "bd.zi"; zj: "bd.zj"; zk: "bd.zk"; zl: "bd.zl"; zm: "bd.zm"; zn: "bd.zn"; zo: "bd.zo"; zp: "bd.zp"; zq: "bd.zq"; zr: "bd.zr"; zs: "bd.zs"; zt: "bd.zt"; zu: "bd.zu"; zv: "bd.zv"; zw: "bd.zw"; zx: "bd.zx"; zy: "bd.zy"; zz: "bd.zz"; }; be: { aa: "be.aa"; ab: "be.ab"; ac: "be.ac"; ad: "be.ad"; ae: "be.ae"; af: "be.af"; ag: "be.ag"; ah: "be.ah"; ai: "be.ai"; aj: "be.aj"; ak: "be.ak"; al: "be.al"; am: "be.am"; an: "be.an"; ao: "be.ao"; ap: "be.ap"; aq: "be.aq"; ar: "be.ar"; as: "be.as"; at: "be.at"; au: "be.au"; av: "be.av"; aw: "be.aw"; ax: "be.ax"; ay: "be.ay"; az: "be.az"; ba: "be.ba"; bb: "be.bb"; bc: "be.bc"; bd: "be.bd"; be: "be.be"; bf: "be.bf"; bg: "be.bg"; bh: "be.bh"; bi: "be.bi"; bj: "be.bj"; bk: "be.bk"; bl: "be.bl"; bm: "be.bm"; bn: "be.bn"; bo: "be.bo"; bp: "be.bp"; bq: "be.bq"; br: "be.br"; bs: "be.bs"; bt: "be.bt"; bu: "be.bu"; bv: "be.bv"; bw: "be.bw"; bx: "be.bx"; by: "be.by"; bz: "be.bz"; ca: "be.ca"; cb: "be.cb"; cc: "be.cc"; cd: "be.cd"; ce: "be.ce"; cf: "be.cf"; cg: "be.cg"; ch: "be.ch"; ci: "be.ci"; cj: "be.cj"; ck: "be.ck"; cl: "be.cl"; cm: "be.cm"; cn: "be.cn"; co: "be.co"; cp: "be.cp"; cq: "be.cq"; cr: "be.cr"; cs: "be.cs"; ct: "be.ct"; cu: "be.cu"; cv: "be.cv"; cw: "be.cw"; cx: "be.cx"; cy: "be.cy"; cz: "be.cz"; da: "be.da"; db: "be.db"; dc: "be.dc"; dd: "be.dd"; de: "be.de"; df: "be.df"; dg: "be.dg"; dh: "be.dh"; di: "be.di"; dj: "be.dj"; dk: "be.dk"; dl: "be.dl"; dm: "be.dm"; dn: "be.dn"; do: "be.do"; dp: "be.dp"; dq: "be.dq"; dr: "be.dr"; ds: "be.ds"; dt: "be.dt"; du: "be.du"; dv: "be.dv"; dw: "be.dw"; dx: "be.dx"; dy: "be.dy"; dz: "be.dz"; ea: "be.ea"; eb: "be.eb"; ec: "be.ec"; ed: "be.ed"; ee: "be.ee"; ef: "be.ef"; eg: "be.eg"; eh: "be.eh"; ei: "be.ei"; ej: "be.ej"; ek: "be.ek"; el: "be.el"; em: "be.em"; en: "be.en"; eo: "be.eo"; ep: "be.ep"; eq: "be.eq"; er: "be.er"; es: "be.es"; et: "be.et"; eu: "be.eu"; ev: "be.ev"; ew: "be.ew"; ex: "be.ex"; ey: "be.ey"; ez: "be.ez"; fa: "be.fa"; fb: "be.fb"; fc: "be.fc"; fd: "be.fd"; fe: "be.fe"; ff: "be.ff"; fg: "be.fg"; fh: "be.fh"; fi: "be.fi"; fj: "be.fj"; fk: "be.fk"; fl: "be.fl"; fm: "be.fm"; fn: "be.fn"; fo: "be.fo"; fp: "be.fp"; fq: "be.fq"; fr: "be.fr"; fs: "be.fs"; ft: "be.ft"; fu: "be.fu"; fv: "be.fv"; fw: "be.fw"; fx: "be.fx"; fy: "be.fy"; fz: "be.fz"; ga: "be.ga"; gb: "be.gb"; gc: "be.gc"; gd: "be.gd"; ge: "be.ge"; gf: "be.gf"; gg: "be.gg"; gh: "be.gh"; gi: "be.gi"; gj: "be.gj"; gk: "be.gk"; gl: "be.gl"; gm: "be.gm"; gn: "be.gn"; go: "be.go"; gp: "be.gp"; gq: "be.gq"; gr: "be.gr"; gs: "be.gs"; gt: "be.gt"; gu: "be.gu"; gv: "be.gv"; gw: "be.gw"; gx: "be.gx"; gy: "be.gy"; gz: "be.gz"; ha: "be.ha"; hb: "be.hb"; hc: "be.hc"; hd: "be.hd"; he: "be.he"; hf: "be.hf"; hg: "be.hg"; hh: "be.hh"; hi: "be.hi"; hj: "be.hj"; hk: "be.hk"; hl: "be.hl"; hm: "be.hm"; hn: "be.hn"; ho: "be.ho"; hp: "be.hp"; hq: "be.hq"; hr: "be.hr"; hs: "be.hs"; ht: "be.ht"; hu: "be.hu"; hv: "be.hv"; hw: "be.hw"; hx: "be.hx"; hy: "be.hy"; hz: "be.hz"; ia: "be.ia"; ib: "be.ib"; ic: "be.ic"; id: "be.id"; ie: "be.ie"; if: "be.if"; ig: "be.ig"; ih: "be.ih"; ii: "be.ii"; ij: "be.ij"; ik: "be.ik"; il: "be.il"; im: "be.im"; in: "be.in"; io: "be.io"; ip: "be.ip"; iq: "be.iq"; ir: "be.ir"; is: "be.is"; it: "be.it"; iu: "be.iu"; iv: "be.iv"; iw: "be.iw"; ix: "be.ix"; iy: "be.iy"; iz: "be.iz"; ja: "be.ja"; jb: "be.jb"; jc: "be.jc"; jd: "be.jd"; je: "be.je"; jf: "be.jf"; jg: "be.jg"; jh: "be.jh"; ji: "be.ji"; jj: "be.jj"; jk: "be.jk"; jl: "be.jl"; jm: "be.jm"; jn: "be.jn"; jo: "be.jo"; jp: "be.jp"; jq: "be.jq"; jr: "be.jr"; js: "be.js"; jt: "be.jt"; ju: "be.ju"; jv: "be.jv"; jw: "be.jw"; jx: "be.jx"; jy: "be.jy"; jz: "be.jz"; ka: "be.ka"; kb: "be.kb"; kc: "be.kc"; kd: "be.kd"; ke: "be.ke"; kf: "be.kf"; kg: "be.kg"; kh: "be.kh"; ki: "be.ki"; kj: "be.kj"; kk: "be.kk"; kl: "be.kl"; km: "be.km"; kn: "be.kn"; ko: "be.ko"; kp: "be.kp"; kq: "be.kq"; kr: "be.kr"; ks: "be.ks"; kt: "be.kt"; ku: "be.ku"; kv: "be.kv"; kw: "be.kw"; kx: "be.kx"; ky: "be.ky"; kz: "be.kz"; la: "be.la"; lb: "be.lb"; lc: "be.lc"; ld: "be.ld"; le: "be.le"; lf: "be.lf"; lg: "be.lg"; lh: "be.lh"; li: "be.li"; lj: "be.lj"; lk: "be.lk"; ll: "be.ll"; lm: "be.lm"; ln: "be.ln"; lo: "be.lo"; lp: "be.lp"; lq: "be.lq"; lr: "be.lr"; ls: "be.ls"; lt: "be.lt"; lu: "be.lu"; lv: "be.lv"; lw: "be.lw"; lx: "be.lx"; ly: "be.ly"; lz: "be.lz"; ma: "be.ma"; mb: "be.mb"; mc: "be.mc"; md: "be.md"; me: "be.me"; mf: "be.mf"; mg: "be.mg"; mh: "be.mh"; mi: "be.mi"; mj: "be.mj"; mk: "be.mk"; ml: "be.ml"; mm: "be.mm"; mn: "be.mn"; mo: "be.mo"; mp: "be.mp"; mq: "be.mq"; mr: "be.mr"; ms: "be.ms"; mt: "be.mt"; mu: "be.mu"; mv: "be.mv"; mw: "be.mw"; mx: "be.mx"; my: "be.my"; mz: "be.mz"; na: "be.na"; nb: "be.nb"; nc: "be.nc"; nd: "be.nd"; ne: "be.ne"; nf: "be.nf"; ng: "be.ng"; nh: "be.nh"; ni: "be.ni"; nj: "be.nj"; nk: "be.nk"; nl: "be.nl"; nm: "be.nm"; nn: "be.nn"; no: "be.no"; np: "be.np"; nq: "be.nq"; nr: "be.nr"; ns: "be.ns"; nt: "be.nt"; nu: "be.nu"; nv: "be.nv"; nw: "be.nw"; nx: "be.nx"; ny: "be.ny"; nz: "be.nz"; oa: "be.oa"; ob: "be.ob"; oc: "be.oc"; od: "be.od"; oe: "be.oe"; of: "be.of"; og: "be.og"; oh: "be.oh"; oi: "be.oi"; oj: "be.oj"; ok: "be.ok"; ol: "be.ol"; om: "be.om"; on: "be.on"; oo: "be.oo"; op: "be.op"; oq: "be.oq"; or: "be.or"; os: "be.os"; ot: "be.ot"; ou: "be.ou"; ov: "be.ov"; ow: "be.ow"; ox: "be.ox"; oy: "be.oy"; oz: "be.oz"; pa: "be.pa"; pb: "be.pb"; pc: "be.pc"; pd: "be.pd"; pe: "be.pe"; pf: "be.pf"; pg: "be.pg"; ph: "be.ph"; pi: "be.pi"; pj: "be.pj"; pk: "be.pk"; pl: "be.pl"; pm: "be.pm"; pn: "be.pn"; po: "be.po"; pp: "be.pp"; pq: "be.pq"; pr: "be.pr"; ps: "be.ps"; pt: "be.pt"; pu: "be.pu"; pv: "be.pv"; pw: "be.pw"; px: "be.px"; py: "be.py"; pz: "be.pz"; qa: "be.qa"; qb: "be.qb"; qc: "be.qc"; qd: "be.qd"; qe: "be.qe"; qf: "be.qf"; qg: "be.qg"; qh: "be.qh"; qi: "be.qi"; qj: "be.qj"; qk: "be.qk"; ql: "be.ql"; qm: "be.qm"; qn: "be.qn"; qo: "be.qo"; qp: "be.qp"; qq: "be.qq"; qr: "be.qr"; qs: "be.qs"; qt: "be.qt"; qu: "be.qu"; qv: "be.qv"; qw: "be.qw"; qx: "be.qx"; qy: "be.qy"; qz: "be.qz"; ra: "be.ra"; rb: "be.rb"; rc: "be.rc"; rd: "be.rd"; re: "be.re"; rf: "be.rf"; rg: "be.rg"; rh: "be.rh"; ri: "be.ri"; rj: "be.rj"; rk: "be.rk"; rl: "be.rl"; rm: "be.rm"; rn: "be.rn"; ro: "be.ro"; rp: "be.rp"; rq: "be.rq"; rr: "be.rr"; rs: "be.rs"; rt: "be.rt"; ru: "be.ru"; rv: "be.rv"; rw: "be.rw"; rx: "be.rx"; ry: "be.ry"; rz: "be.rz"; sa: "be.sa"; sb: "be.sb"; sc: "be.sc"; sd: "be.sd"; se: "be.se"; sf: "be.sf"; sg: "be.sg"; sh: "be.sh"; si: "be.si"; sj: "be.sj"; sk: "be.sk"; sl: "be.sl"; sm: "be.sm"; sn: "be.sn"; so: "be.so"; sp: "be.sp"; sq: "be.sq"; sr: "be.sr"; ss: "be.ss"; st: "be.st"; su: "be.su"; sv: "be.sv"; sw: "be.sw"; sx: "be.sx"; sy: "be.sy"; sz: "be.sz"; ta: "be.ta"; tb: "be.tb"; tc: "be.tc"; td: "be.td"; te: "be.te"; tf: "be.tf"; tg: "be.tg"; th: "be.th"; ti: "be.ti"; tj: "be.tj"; tk: "be.tk"; tl: "be.tl"; tm: "be.tm"; tn: "be.tn"; to: "be.to"; tp: "be.tp"; tq: "be.tq"; tr: "be.tr"; ts: "be.ts"; tt: "be.tt"; tu: "be.tu"; tv: "be.tv"; tw: "be.tw"; tx: "be.tx"; ty: "be.ty"; tz: "be.tz"; ua: "be.ua"; ub: "be.ub"; uc: "be.uc"; ud: "be.ud"; ue: "be.ue"; uf: "be.uf"; ug: "be.ug"; uh: "be.uh"; ui: "be.ui"; uj: "be.uj"; uk: "be.uk"; ul: "be.ul"; um: "be.um"; un: "be.un"; uo: "be.uo"; up: "be.up"; uq: "be.uq"; ur: "be.ur"; us: "be.us"; ut: "be.ut"; uu: "be.uu"; uv: "be.uv"; uw: "be.uw"; ux: "be.ux"; uy: "be.uy"; uz: "be.uz"; va: "be.va"; vb: "be.vb"; vc: "be.vc"; vd: "be.vd"; ve: "be.ve"; vf: "be.vf"; vg: "be.vg"; vh: "be.vh"; vi: "be.vi"; vj: "be.vj"; vk: "be.vk"; vl: "be.vl"; vm: "be.vm"; vn: "be.vn"; vo: "be.vo"; vp: "be.vp"; vq: "be.vq"; vr: "be.vr"; vs: "be.vs"; vt: "be.vt"; vu: "be.vu"; vv: "be.vv"; vw: "be.vw"; vx: "be.vx"; vy: "be.vy"; vz: "be.vz"; wa: "be.wa"; wb: "be.wb"; wc: "be.wc"; wd: "be.wd"; we: "be.we"; wf: "be.wf"; wg: "be.wg"; wh: "be.wh"; wi: "be.wi"; wj: "be.wj"; wk: "be.wk"; wl: "be.wl"; wm: "be.wm"; wn: "be.wn"; wo: "be.wo"; wp: "be.wp"; wq: "be.wq"; wr: "be.wr"; ws: "be.ws"; wt: "be.wt"; wu: "be.wu"; wv: "be.wv"; ww: "be.ww"; wx: "be.wx"; wy: "be.wy"; wz: "be.wz"; xa: "be.xa"; xb: "be.xb"; xc: "be.xc"; xd: "be.xd"; xe: "be.xe"; xf: "be.xf"; xg: "be.xg"; xh: "be.xh"; xi: "be.xi"; xj: "be.xj"; xk: "be.xk"; xl: "be.xl"; xm: "be.xm"; xn: "be.xn"; xo: "be.xo"; xp: "be.xp"; xq: "be.xq"; xr: "be.xr"; xs: "be.xs"; xt: "be.xt"; xu: "be.xu"; xv: "be.xv"; xw: "be.xw"; xx: "be.xx"; xy: "be.xy"; xz: "be.xz"; ya: "be.ya"; yb: "be.yb"; yc: "be.yc"; yd: "be.yd"; ye: "be.ye"; yf: "be.yf"; yg: "be.yg"; yh: "be.yh"; yi: "be.yi"; yj: "be.yj"; yk: "be.yk"; yl: "be.yl"; ym: "be.ym"; yn: "be.yn"; yo: "be.yo"; yp: "be.yp"; yq: "be.yq"; yr: "be.yr"; ys: "be.ys"; yt: "be.yt"; yu: "be.yu"; yv: "be.yv"; yw: "be.yw"; yx: "be.yx"; yy: "be.yy"; yz: "be.yz"; za: "be.za"; zb: "be.zb"; zc: "be.zc"; zd: "be.zd"; ze: "be.ze"; zf: "be.zf"; zg: "be.zg"; zh: "be.zh"; zi: "be.zi"; zj: "be.zj"; zk: "be.zk"; zl: "be.zl"; zm: "be.zm"; zn: "be.zn"; zo: "be.zo"; zp: "be.zp"; zq: "be.zq"; zr: "be.zr"; zs: "be.zs"; zt: "be.zt"; zu: "be.zu"; zv: "be.zv"; zw: "be.zw"; zx: "be.zx"; zy: "be.zy"; zz: "be.zz"; }; bf: { aa: "bf.aa"; ab: "bf.ab"; ac: "bf.ac"; ad: "bf.ad"; ae: "bf.ae"; af: "bf.af"; ag: "bf.ag"; ah: "bf.ah"; ai: "bf.ai"; aj: "bf.aj"; ak: "bf.ak"; al: "bf.al"; am: "bf.am"; an: "bf.an"; ao: "bf.ao"; ap: "bf.ap"; aq: "bf.aq"; ar: "bf.ar"; as: "bf.as"; at: "bf.at"; au: "bf.au"; av: "bf.av"; aw: "bf.aw"; ax: "bf.ax"; ay: "bf.ay"; az: "bf.az"; ba: "bf.ba"; bb: "bf.bb"; bc: "bf.bc"; bd: "bf.bd"; be: "bf.be"; bf: "bf.bf"; bg: "bf.bg"; bh: "bf.bh"; bi: "bf.bi"; bj: "bf.bj"; bk: "bf.bk"; bl: "bf.bl"; bm: "bf.bm"; bn: "bf.bn"; bo: "bf.bo"; bp: "bf.bp"; bq: "bf.bq"; br: "bf.br"; bs: "bf.bs"; bt: "bf.bt"; bu: "bf.bu"; bv: "bf.bv"; bw: "bf.bw"; bx: "bf.bx"; by: "bf.by"; bz: "bf.bz"; ca: "bf.ca"; cb: "bf.cb"; cc: "bf.cc"; cd: "bf.cd"; ce: "bf.ce"; cf: "bf.cf"; cg: "bf.cg"; ch: "bf.ch"; ci: "bf.ci"; cj: "bf.cj"; ck: "bf.ck"; cl: "bf.cl"; cm: "bf.cm"; cn: "bf.cn"; co: "bf.co"; cp: "bf.cp"; cq: "bf.cq"; cr: "bf.cr"; cs: "bf.cs"; ct: "bf.ct"; cu: "bf.cu"; cv: "bf.cv"; cw: "bf.cw"; cx: "bf.cx"; cy: "bf.cy"; cz: "bf.cz"; da: "bf.da"; db: "bf.db"; dc: "bf.dc"; dd: "bf.dd"; de: "bf.de"; df: "bf.df"; dg: "bf.dg"; dh: "bf.dh"; di: "bf.di"; dj: "bf.dj"; dk: "bf.dk"; dl: "bf.dl"; dm: "bf.dm"; dn: "bf.dn"; do: "bf.do"; dp: "bf.dp"; dq: "bf.dq"; dr: "bf.dr"; ds: "bf.ds"; dt: "bf.dt"; du: "bf.du"; dv: "bf.dv"; dw: "bf.dw"; dx: "bf.dx"; dy: "bf.dy"; dz: "bf.dz"; ea: "bf.ea"; eb: "bf.eb"; ec: "bf.ec"; ed: "bf.ed"; ee: "bf.ee"; ef: "bf.ef"; eg: "bf.eg"; eh: "bf.eh"; ei: "bf.ei"; ej: "bf.ej"; ek: "bf.ek"; el: "bf.el"; em: "bf.em"; en: "bf.en"; eo: "bf.eo"; ep: "bf.ep"; eq: "bf.eq"; er: "bf.er"; es: "bf.es"; et: "bf.et"; eu: "bf.eu"; ev: "bf.ev"; ew: "bf.ew"; ex: "bf.ex"; ey: "bf.ey"; ez: "bf.ez"; fa: "bf.fa"; fb: "bf.fb"; fc: "bf.fc"; fd: "bf.fd"; fe: "bf.fe"; ff: "bf.ff"; fg: "bf.fg"; fh: "bf.fh"; fi: "bf.fi"; fj: "bf.fj"; fk: "bf.fk"; fl: "bf.fl"; fm: "bf.fm"; fn: "bf.fn"; fo: "bf.fo"; fp: "bf.fp"; fq: "bf.fq"; fr: "bf.fr"; fs: "bf.fs"; ft: "bf.ft"; fu: "bf.fu"; fv: "bf.fv"; fw: "bf.fw"; fx: "bf.fx"; fy: "bf.fy"; fz: "bf.fz"; ga: "bf.ga"; gb: "bf.gb"; gc: "bf.gc"; gd: "bf.gd"; ge: "bf.ge"; gf: "bf.gf"; gg: "bf.gg"; gh: "bf.gh"; gi: "bf.gi"; gj: "bf.gj"; gk: "bf.gk"; gl: "bf.gl"; gm: "bf.gm"; gn: "bf.gn"; go: "bf.go"; gp: "bf.gp"; gq: "bf.gq"; gr: "bf.gr"; gs: "bf.gs"; gt: "bf.gt"; gu: "bf.gu"; gv: "bf.gv"; gw: "bf.gw"; gx: "bf.gx"; gy: "bf.gy"; gz: "bf.gz"; ha: "bf.ha"; hb: "bf.hb"; hc: "bf.hc"; hd: "bf.hd"; he: "bf.he"; hf: "bf.hf"; hg: "bf.hg"; hh: "bf.hh"; hi: "bf.hi"; hj: "bf.hj"; hk: "bf.hk"; hl: "bf.hl"; hm: "bf.hm"; hn: "bf.hn"; ho: "bf.ho"; hp: "bf.hp"; hq: "bf.hq"; hr: "bf.hr"; hs: "bf.hs"; ht: "bf.ht"; hu: "bf.hu"; hv: "bf.hv"; hw: "bf.hw"; hx: "bf.hx"; hy: "bf.hy"; hz: "bf.hz"; ia: "bf.ia"; ib: "bf.ib"; ic: "bf.ic"; id: "bf.id"; ie: "bf.ie"; if: "bf.if"; ig: "bf.ig"; ih: "bf.ih"; ii: "bf.ii"; ij: "bf.ij"; ik: "bf.ik"; il: "bf.il"; im: "bf.im"; in: "bf.in"; io: "bf.io"; ip: "bf.ip"; iq: "bf.iq"; ir: "bf.ir"; is: "bf.is"; it: "bf.it"; iu: "bf.iu"; iv: "bf.iv"; iw: "bf.iw"; ix: "bf.ix"; iy: "bf.iy"; iz: "bf.iz"; ja: "bf.ja"; jb: "bf.jb"; jc: "bf.jc"; jd: "bf.jd"; je: "bf.je"; jf: "bf.jf"; jg: "bf.jg"; jh: "bf.jh"; ji: "bf.ji"; jj: "bf.jj"; jk: "bf.jk"; jl: "bf.jl"; jm: "bf.jm"; jn: "bf.jn"; jo: "bf.jo"; jp: "bf.jp"; jq: "bf.jq"; jr: "bf.jr"; js: "bf.js"; jt: "bf.jt"; ju: "bf.ju"; jv: "bf.jv"; jw: "bf.jw"; jx: "bf.jx"; jy: "bf.jy"; jz: "bf.jz"; ka: "bf.ka"; kb: "bf.kb"; kc: "bf.kc"; kd: "bf.kd"; ke: "bf.ke"; kf: "bf.kf"; kg: "bf.kg"; kh: "bf.kh"; ki: "bf.ki"; kj: "bf.kj"; kk: "bf.kk"; kl: "bf.kl"; km: "bf.km"; kn: "bf.kn"; ko: "bf.ko"; kp: "bf.kp"; kq: "bf.kq"; kr: "bf.kr"; ks: "bf.ks"; kt: "bf.kt"; ku: "bf.ku"; kv: "bf.kv"; kw: "bf.kw"; kx: "bf.kx"; ky: "bf.ky"; kz: "bf.kz"; la: "bf.la"; lb: "bf.lb"; lc: "bf.lc"; ld: "bf.ld"; le: "bf.le"; lf: "bf.lf"; lg: "bf.lg"; lh: "bf.lh"; li: "bf.li"; lj: "bf.lj"; lk: "bf.lk"; ll: "bf.ll"; lm: "bf.lm"; ln: "bf.ln"; lo: "bf.lo"; lp: "bf.lp"; lq: "bf.lq"; lr: "bf.lr"; ls: "bf.ls"; lt: "bf.lt"; lu: "bf.lu"; lv: "bf.lv"; lw: "bf.lw"; lx: "bf.lx"; ly: "bf.ly"; lz: "bf.lz"; ma: "bf.ma"; mb: "bf.mb"; mc: "bf.mc"; md: "bf.md"; me: "bf.me"; mf: "bf.mf"; mg: "bf.mg"; mh: "bf.mh"; mi: "bf.mi"; mj: "bf.mj"; mk: "bf.mk"; ml: "bf.ml"; mm: "bf.mm"; mn: "bf.mn"; mo: "bf.mo"; mp: "bf.mp"; mq: "bf.mq"; mr: "bf.mr"; ms: "bf.ms"; mt: "bf.mt"; mu: "bf.mu"; mv: "bf.mv"; mw: "bf.mw"; mx: "bf.mx"; my: "bf.my"; mz: "bf.mz"; na: "bf.na"; nb: "bf.nb"; nc: "bf.nc"; nd: "bf.nd"; ne: "bf.ne"; nf: "bf.nf"; ng: "bf.ng"; nh: "bf.nh"; ni: "bf.ni"; nj: "bf.nj"; nk: "bf.nk"; nl: "bf.nl"; nm: "bf.nm"; nn: "bf.nn"; no: "bf.no"; np: "bf.np"; nq: "bf.nq"; nr: "bf.nr"; ns: "bf.ns"; nt: "bf.nt"; nu: "bf.nu"; nv: "bf.nv"; nw: "bf.nw"; nx: "bf.nx"; ny: "bf.ny"; nz: "bf.nz"; oa: "bf.oa"; ob: "bf.ob"; oc: "bf.oc"; od: "bf.od"; oe: "bf.oe"; of: "bf.of"; og: "bf.og"; oh: "bf.oh"; oi: "bf.oi"; oj: "bf.oj"; ok: "bf.ok"; ol: "bf.ol"; om: "bf.om"; on: "bf.on"; oo: "bf.oo"; op: "bf.op"; oq: "bf.oq"; or: "bf.or"; os: "bf.os"; ot: "bf.ot"; ou: "bf.ou"; ov: "bf.ov"; ow: "bf.ow"; ox: "bf.ox"; oy: "bf.oy"; oz: "bf.oz"; pa: "bf.pa"; pb: "bf.pb"; pc: "bf.pc"; pd: "bf.pd"; pe: "bf.pe"; pf: "bf.pf"; pg: "bf.pg"; ph: "bf.ph"; pi: "bf.pi"; pj: "bf.pj"; pk: "bf.pk"; pl: "bf.pl"; pm: "bf.pm"; pn: "bf.pn"; po: "bf.po"; pp: "bf.pp"; pq: "bf.pq"; pr: "bf.pr"; ps: "bf.ps"; pt: "bf.pt"; pu: "bf.pu"; pv: "bf.pv"; pw: "bf.pw"; px: "bf.px"; py: "bf.py"; pz: "bf.pz"; qa: "bf.qa"; qb: "bf.qb"; qc: "bf.qc"; qd: "bf.qd"; qe: "bf.qe"; qf: "bf.qf"; qg: "bf.qg"; qh: "bf.qh"; qi: "bf.qi"; qj: "bf.qj"; qk: "bf.qk"; ql: "bf.ql"; qm: "bf.qm"; qn: "bf.qn"; qo: "bf.qo"; qp: "bf.qp"; qq: "bf.qq"; qr: "bf.qr"; qs: "bf.qs"; qt: "bf.qt"; qu: "bf.qu"; qv: "bf.qv"; qw: "bf.qw"; qx: "bf.qx"; qy: "bf.qy"; qz: "bf.qz"; ra: "bf.ra"; rb: "bf.rb"; rc: "bf.rc"; rd: "bf.rd"; re: "bf.re"; rf: "bf.rf"; rg: "bf.rg"; rh: "bf.rh"; ri: "bf.ri"; rj: "bf.rj"; rk: "bf.rk"; rl: "bf.rl"; rm: "bf.rm"; rn: "bf.rn"; ro: "bf.ro"; rp: "bf.rp"; rq: "bf.rq"; rr: "bf.rr"; rs: "bf.rs"; rt: "bf.rt"; ru: "bf.ru"; rv: "bf.rv"; rw: "bf.rw"; rx: "bf.rx"; ry: "bf.ry"; rz: "bf.rz"; sa: "bf.sa"; sb: "bf.sb"; sc: "bf.sc"; sd: "bf.sd"; se: "bf.se"; sf: "bf.sf"; sg: "bf.sg"; sh: "bf.sh"; si: "bf.si"; sj: "bf.sj"; sk: "bf.sk"; sl: "bf.sl"; sm: "bf.sm"; sn: "bf.sn"; so: "bf.so"; sp: "bf.sp"; sq: "bf.sq"; sr: "bf.sr"; ss: "bf.ss"; st: "bf.st"; su: "bf.su"; sv: "bf.sv"; sw: "bf.sw"; sx: "bf.sx"; sy: "bf.sy"; sz: "bf.sz"; ta: "bf.ta"; tb: "bf.tb"; tc: "bf.tc"; td: "bf.td"; te: "bf.te"; tf: "bf.tf"; tg: "bf.tg"; th: "bf.th"; ti: "bf.ti"; tj: "bf.tj"; tk: "bf.tk"; tl: "bf.tl"; tm: "bf.tm"; tn: "bf.tn"; to: "bf.to"; tp: "bf.tp"; tq: "bf.tq"; tr: "bf.tr"; ts: "bf.ts"; tt: "bf.tt"; tu: "bf.tu"; tv: "bf.tv"; tw: "bf.tw"; tx: "bf.tx"; ty: "bf.ty"; tz: "bf.tz"; ua: "bf.ua"; ub: "bf.ub"; uc: "bf.uc"; ud: "bf.ud"; ue: "bf.ue"; uf: "bf.uf"; ug: "bf.ug"; uh: "bf.uh"; ui: "bf.ui"; uj: "bf.uj"; uk: "bf.uk"; ul: "bf.ul"; um: "bf.um"; un: "bf.un"; uo: "bf.uo"; up: "bf.up"; uq: "bf.uq"; ur: "bf.ur"; us: "bf.us"; ut: "bf.ut"; uu: "bf.uu"; uv: "bf.uv"; uw: "bf.uw"; ux: "bf.ux"; uy: "bf.uy"; uz: "bf.uz"; va: "bf.va"; vb: "bf.vb"; vc: "bf.vc"; vd: "bf.vd"; ve: "bf.ve"; vf: "bf.vf"; vg: "bf.vg"; vh: "bf.vh"; vi: "bf.vi"; vj: "bf.vj"; vk: "bf.vk"; vl: "bf.vl"; vm: "bf.vm"; vn: "bf.vn"; vo: "bf.vo"; vp: "bf.vp"; vq: "bf.vq"; vr: "bf.vr"; vs: "bf.vs"; vt: "bf.vt"; vu: "bf.vu"; vv: "bf.vv"; vw: "bf.vw"; vx: "bf.vx"; vy: "bf.vy"; vz: "bf.vz"; wa: "bf.wa"; wb: "bf.wb"; wc: "bf.wc"; wd: "bf.wd"; we: "bf.we"; wf: "bf.wf"; wg: "bf.wg"; wh: "bf.wh"; wi: "bf.wi"; wj: "bf.wj"; wk: "bf.wk"; wl: "bf.wl"; wm: "bf.wm"; wn: "bf.wn"; wo: "bf.wo"; wp: "bf.wp"; wq: "bf.wq"; wr: "bf.wr"; ws: "bf.ws"; wt: "bf.wt"; wu: "bf.wu"; wv: "bf.wv"; ww: "bf.ww"; wx: "bf.wx"; wy: "bf.wy"; wz: "bf.wz"; xa: "bf.xa"; xb: "bf.xb"; xc: "bf.xc"; xd: "bf.xd"; xe: "bf.xe"; xf: "bf.xf"; xg: "bf.xg"; xh: "bf.xh"; xi: "bf.xi"; xj: "bf.xj"; xk: "bf.xk"; xl: "bf.xl"; xm: "bf.xm"; xn: "bf.xn"; xo: "bf.xo"; xp: "bf.xp"; xq: "bf.xq"; xr: "bf.xr"; xs: "bf.xs"; xt: "bf.xt"; xu: "bf.xu"; xv: "bf.xv"; xw: "bf.xw"; xx: "bf.xx"; xy: "bf.xy"; xz: "bf.xz"; ya: "bf.ya"; yb: "bf.yb"; yc: "bf.yc"; yd: "bf.yd"; ye: "bf.ye"; yf: "bf.yf"; yg: "bf.yg"; yh: "bf.yh"; yi: "bf.yi"; yj: "bf.yj"; yk: "bf.yk"; yl: "bf.yl"; ym: "bf.ym"; yn: "bf.yn"; yo: "bf.yo"; yp: "bf.yp"; yq: "bf.yq"; yr: "bf.yr"; ys: "bf.ys"; yt: "bf.yt"; yu: "bf.yu"; yv: "bf.yv"; yw: "bf.yw"; yx: "bf.yx"; yy: "bf.yy"; yz: "bf.yz"; za: "bf.za"; zb: "bf.zb"; zc: "bf.zc"; zd: "bf.zd"; ze: "bf.ze"; zf: "bf.zf"; zg: "bf.zg"; zh: "bf.zh"; zi: "bf.zi"; zj: "bf.zj"; zk: "bf.zk"; zl: "bf.zl"; zm: "bf.zm"; zn: "bf.zn"; zo: "bf.zo"; zp: "bf.zp"; zq: "bf.zq"; zr: "bf.zr"; zs: "bf.zs"; zt: "bf.zt"; zu: "bf.zu"; zv: "bf.zv"; zw: "bf.zw"; zx: "bf.zx"; zy: "bf.zy"; zz: "bf.zz"; }; bg: { aa: "bg.aa"; ab: "bg.ab"; ac: "bg.ac"; ad: "bg.ad"; ae: "bg.ae"; af: "bg.af"; ag: "bg.ag"; ah: "bg.ah"; ai: "bg.ai"; aj: "bg.aj"; ak: "bg.ak"; al: "bg.al"; am: "bg.am"; an: "bg.an"; ao: "bg.ao"; ap: "bg.ap"; aq: "bg.aq"; ar: "bg.ar"; as: "bg.as"; at: "bg.at"; au: "bg.au"; av: "bg.av"; aw: "bg.aw"; ax: "bg.ax"; ay: "bg.ay"; az: "bg.az"; ba: "bg.ba"; bb: "bg.bb"; bc: "bg.bc"; bd: "bg.bd"; be: "bg.be"; bf: "bg.bf"; bg: "bg.bg"; bh: "bg.bh"; bi: "bg.bi"; bj: "bg.bj"; bk: "bg.bk"; bl: "bg.bl"; bm: "bg.bm"; bn: "bg.bn"; bo: "bg.bo"; bp: "bg.bp"; bq: "bg.bq"; br: "bg.br"; bs: "bg.bs"; bt: "bg.bt"; bu: "bg.bu"; bv: "bg.bv"; bw: "bg.bw"; bx: "bg.bx"; by: "bg.by"; bz: "bg.bz"; ca: "bg.ca"; cb: "bg.cb"; cc: "bg.cc"; cd: "bg.cd"; ce: "bg.ce"; cf: "bg.cf"; cg: "bg.cg"; ch: "bg.ch"; ci: "bg.ci"; cj: "bg.cj"; ck: "bg.ck"; cl: "bg.cl"; cm: "bg.cm"; cn: "bg.cn"; co: "bg.co"; cp: "bg.cp"; cq: "bg.cq"; cr: "bg.cr"; cs: "bg.cs"; ct: "bg.ct"; cu: "bg.cu"; cv: "bg.cv"; cw: "bg.cw"; cx: "bg.cx"; cy: "bg.cy"; cz: "bg.cz"; da: "bg.da"; db: "bg.db"; dc: "bg.dc"; dd: "bg.dd"; de: "bg.de"; df: "bg.df"; dg: "bg.dg"; dh: "bg.dh"; di: "bg.di"; dj: "bg.dj"; dk: "bg.dk"; dl: "bg.dl"; dm: "bg.dm"; dn: "bg.dn"; do: "bg.do"; dp: "bg.dp"; dq: "bg.dq"; dr: "bg.dr"; ds: "bg.ds"; dt: "bg.dt"; du: "bg.du"; dv: "bg.dv"; dw: "bg.dw"; dx: "bg.dx"; dy: "bg.dy"; dz: "bg.dz"; ea: "bg.ea"; eb: "bg.eb"; ec: "bg.ec"; ed: "bg.ed"; ee: "bg.ee"; ef: "bg.ef"; eg: "bg.eg"; eh: "bg.eh"; ei: "bg.ei"; ej: "bg.ej"; ek: "bg.ek"; el: "bg.el"; em: "bg.em"; en: "bg.en"; eo: "bg.eo"; ep: "bg.ep"; eq: "bg.eq"; er: "bg.er"; es: "bg.es"; et: "bg.et"; eu: "bg.eu"; ev: "bg.ev"; ew: "bg.ew"; ex: "bg.ex"; ey: "bg.ey"; ez: "bg.ez"; fa: "bg.fa"; fb: "bg.fb"; fc: "bg.fc"; fd: "bg.fd"; fe: "bg.fe"; ff: "bg.ff"; fg: "bg.fg"; fh: "bg.fh"; fi: "bg.fi"; fj: "bg.fj"; fk: "bg.fk"; fl: "bg.fl"; fm: "bg.fm"; fn: "bg.fn"; fo: "bg.fo"; fp: "bg.fp"; fq: "bg.fq"; fr: "bg.fr"; fs: "bg.fs"; ft: "bg.ft"; fu: "bg.fu"; fv: "bg.fv"; fw: "bg.fw"; fx: "bg.fx"; fy: "bg.fy"; fz: "bg.fz"; ga: "bg.ga"; gb: "bg.gb"; gc: "bg.gc"; gd: "bg.gd"; ge: "bg.ge"; gf: "bg.gf"; gg: "bg.gg"; gh: "bg.gh"; gi: "bg.gi"; gj: "bg.gj"; gk: "bg.gk"; gl: "bg.gl"; gm: "bg.gm"; gn: "bg.gn"; go: "bg.go"; gp: "bg.gp"; gq: "bg.gq"; gr: "bg.gr"; gs: "bg.gs"; gt: "bg.gt"; gu: "bg.gu"; gv: "bg.gv"; gw: "bg.gw"; gx: "bg.gx"; gy: "bg.gy"; gz: "bg.gz"; ha: "bg.ha"; hb: "bg.hb"; hc: "bg.hc"; hd: "bg.hd"; he: "bg.he"; hf: "bg.hf"; hg: "bg.hg"; hh: "bg.hh"; hi: "bg.hi"; hj: "bg.hj"; hk: "bg.hk"; hl: "bg.hl"; hm: "bg.hm"; hn: "bg.hn"; ho: "bg.ho"; hp: "bg.hp"; hq: "bg.hq"; hr: "bg.hr"; hs: "bg.hs"; ht: "bg.ht"; hu: "bg.hu"; hv: "bg.hv"; hw: "bg.hw"; hx: "bg.hx"; hy: "bg.hy"; hz: "bg.hz"; ia: "bg.ia"; ib: "bg.ib"; ic: "bg.ic"; id: "bg.id"; ie: "bg.ie"; if: "bg.if"; ig: "bg.ig"; ih: "bg.ih"; ii: "bg.ii"; ij: "bg.ij"; ik: "bg.ik"; il: "bg.il"; im: "bg.im"; in: "bg.in"; io: "bg.io"; ip: "bg.ip"; iq: "bg.iq"; ir: "bg.ir"; is: "bg.is"; it: "bg.it"; iu: "bg.iu"; iv: "bg.iv"; iw: "bg.iw"; ix: "bg.ix"; iy: "bg.iy"; iz: "bg.iz"; ja: "bg.ja"; jb: "bg.jb"; jc: "bg.jc"; jd: "bg.jd"; je: "bg.je"; jf: "bg.jf"; jg: "bg.jg"; jh: "bg.jh"; ji: "bg.ji"; jj: "bg.jj"; jk: "bg.jk"; jl: "bg.jl"; jm: "bg.jm"; jn: "bg.jn"; jo: "bg.jo"; jp: "bg.jp"; jq: "bg.jq"; jr: "bg.jr"; js: "bg.js"; jt: "bg.jt"; ju: "bg.ju"; jv: "bg.jv"; jw: "bg.jw"; jx: "bg.jx"; jy: "bg.jy"; jz: "bg.jz"; ka: "bg.ka"; kb: "bg.kb"; kc: "bg.kc"; kd: "bg.kd"; ke: "bg.ke"; kf: "bg.kf"; kg: "bg.kg"; kh: "bg.kh"; ki: "bg.ki"; kj: "bg.kj"; kk: "bg.kk"; kl: "bg.kl"; km: "bg.km"; kn: "bg.kn"; ko: "bg.ko"; kp: "bg.kp"; kq: "bg.kq"; kr: "bg.kr"; ks: "bg.ks"; kt: "bg.kt"; ku: "bg.ku"; kv: "bg.kv"; kw: "bg.kw"; kx: "bg.kx"; ky: "bg.ky"; kz: "bg.kz"; la: "bg.la"; lb: "bg.lb"; lc: "bg.lc"; ld: "bg.ld"; le: "bg.le"; lf: "bg.lf"; lg: "bg.lg"; lh: "bg.lh"; li: "bg.li"; lj: "bg.lj"; lk: "bg.lk"; ll: "bg.ll"; lm: "bg.lm"; ln: "bg.ln"; lo: "bg.lo"; lp: "bg.lp"; lq: "bg.lq"; lr: "bg.lr"; ls: "bg.ls"; lt: "bg.lt"; lu: "bg.lu"; lv: "bg.lv"; lw: "bg.lw"; lx: "bg.lx"; ly: "bg.ly"; lz: "bg.lz"; ma: "bg.ma"; mb: "bg.mb"; mc: "bg.mc"; md: "bg.md"; me: "bg.me"; mf: "bg.mf"; mg: "bg.mg"; mh: "bg.mh"; mi: "bg.mi"; mj: "bg.mj"; mk: "bg.mk"; ml: "bg.ml"; mm: "bg.mm"; mn: "bg.mn"; mo: "bg.mo"; mp: "bg.mp"; mq: "bg.mq"; mr: "bg.mr"; ms: "bg.ms"; mt: "bg.mt"; mu: "bg.mu"; mv: "bg.mv"; mw: "bg.mw"; mx: "bg.mx"; my: "bg.my"; mz: "bg.mz"; na: "bg.na"; nb: "bg.nb"; nc: "bg.nc"; nd: "bg.nd"; ne: "bg.ne"; nf: "bg.nf"; ng: "bg.ng"; nh: "bg.nh"; ni: "bg.ni"; nj: "bg.nj"; nk: "bg.nk"; nl: "bg.nl"; nm: "bg.nm"; nn: "bg.nn"; no: "bg.no"; np: "bg.np"; nq: "bg.nq"; nr: "bg.nr"; ns: "bg.ns"; nt: "bg.nt"; nu: "bg.nu"; nv: "bg.nv"; nw: "bg.nw"; nx: "bg.nx"; ny: "bg.ny"; nz: "bg.nz"; oa: "bg.oa"; ob: "bg.ob"; oc: "bg.oc"; od: "bg.od"; oe: "bg.oe"; of: "bg.of"; og: "bg.og"; oh: "bg.oh"; oi: "bg.oi"; oj: "bg.oj"; ok: "bg.ok"; ol: "bg.ol"; om: "bg.om"; on: "bg.on"; oo: "bg.oo"; op: "bg.op"; oq: "bg.oq"; or: "bg.or"; os: "bg.os"; ot: "bg.ot"; ou: "bg.ou"; ov: "bg.ov"; ow: "bg.ow"; ox: "bg.ox"; oy: "bg.oy"; oz: "bg.oz"; pa: "bg.pa"; pb: "bg.pb"; pc: "bg.pc"; pd: "bg.pd"; pe: "bg.pe"; pf: "bg.pf"; pg: "bg.pg"; ph: "bg.ph"; pi: "bg.pi"; pj: "bg.pj"; pk: "bg.pk"; pl: "bg.pl"; pm: "bg.pm"; pn: "bg.pn"; po: "bg.po"; pp: "bg.pp"; pq: "bg.pq"; pr: "bg.pr"; ps: "bg.ps"; pt: "bg.pt"; pu: "bg.pu"; pv: "bg.pv"; pw: "bg.pw"; px: "bg.px"; py: "bg.py"; pz: "bg.pz"; qa: "bg.qa"; qb: "bg.qb"; qc: "bg.qc"; qd: "bg.qd"; qe: "bg.qe"; qf: "bg.qf"; qg: "bg.qg"; qh: "bg.qh"; qi: "bg.qi"; qj: "bg.qj"; qk: "bg.qk"; ql: "bg.ql"; qm: "bg.qm"; qn: "bg.qn"; qo: "bg.qo"; qp: "bg.qp"; qq: "bg.qq"; qr: "bg.qr"; qs: "bg.qs"; qt: "bg.qt"; qu: "bg.qu"; qv: "bg.qv"; qw: "bg.qw"; qx: "bg.qx"; qy: "bg.qy"; qz: "bg.qz"; ra: "bg.ra"; rb: "bg.rb"; rc: "bg.rc"; rd: "bg.rd"; re: "bg.re"; rf: "bg.rf"; rg: "bg.rg"; rh: "bg.rh"; ri: "bg.ri"; rj: "bg.rj"; rk: "bg.rk"; rl: "bg.rl"; rm: "bg.rm"; rn: "bg.rn"; ro: "bg.ro"; rp: "bg.rp"; rq: "bg.rq"; rr: "bg.rr"; rs: "bg.rs"; rt: "bg.rt"; ru: "bg.ru"; rv: "bg.rv"; rw: "bg.rw"; rx: "bg.rx"; ry: "bg.ry"; rz: "bg.rz"; sa: "bg.sa"; sb: "bg.sb"; sc: "bg.sc"; sd: "bg.sd"; se: "bg.se"; sf: "bg.sf"; sg: "bg.sg"; sh: "bg.sh"; si: "bg.si"; sj: "bg.sj"; sk: "bg.sk"; sl: "bg.sl"; sm: "bg.sm"; sn: "bg.sn"; so: "bg.so"; sp: "bg.sp"; sq: "bg.sq"; sr: "bg.sr"; ss: "bg.ss"; st: "bg.st"; su: "bg.su"; sv: "bg.sv"; sw: "bg.sw"; sx: "bg.sx"; sy: "bg.sy"; sz: "bg.sz"; ta: "bg.ta"; tb: "bg.tb"; tc: "bg.tc"; td: "bg.td"; te: "bg.te"; tf: "bg.tf"; tg: "bg.tg"; th: "bg.th"; ti: "bg.ti"; tj: "bg.tj"; tk: "bg.tk"; tl: "bg.tl"; tm: "bg.tm"; tn: "bg.tn"; to: "bg.to"; tp: "bg.tp"; tq: "bg.tq"; tr: "bg.tr"; ts: "bg.ts"; tt: "bg.tt"; tu: "bg.tu"; tv: "bg.tv"; tw: "bg.tw"; tx: "bg.tx"; ty: "bg.ty"; tz: "bg.tz"; ua: "bg.ua"; ub: "bg.ub"; uc: "bg.uc"; ud: "bg.ud"; ue: "bg.ue"; uf: "bg.uf"; ug: "bg.ug"; uh: "bg.uh"; ui: "bg.ui"; uj: "bg.uj"; uk: "bg.uk"; ul: "bg.ul"; um: "bg.um"; un: "bg.un"; uo: "bg.uo"; up: "bg.up"; uq: "bg.uq"; ur: "bg.ur"; us: "bg.us"; ut: "bg.ut"; uu: "bg.uu"; uv: "bg.uv"; uw: "bg.uw"; ux: "bg.ux"; uy: "bg.uy"; uz: "bg.uz"; va: "bg.va"; vb: "bg.vb"; vc: "bg.vc"; vd: "bg.vd"; ve: "bg.ve"; vf: "bg.vf"; vg: "bg.vg"; vh: "bg.vh"; vi: "bg.vi"; vj: "bg.vj"; vk: "bg.vk"; vl: "bg.vl"; vm: "bg.vm"; vn: "bg.vn"; vo: "bg.vo"; vp: "bg.vp"; vq: "bg.vq"; vr: "bg.vr"; vs: "bg.vs"; vt: "bg.vt"; vu: "bg.vu"; vv: "bg.vv"; vw: "bg.vw"; vx: "bg.vx"; vy: "bg.vy"; vz: "bg.vz"; wa: "bg.wa"; wb: "bg.wb"; wc: "bg.wc"; wd: "bg.wd"; we: "bg.we"; wf: "bg.wf"; wg: "bg.wg"; wh: "bg.wh"; wi: "bg.wi"; wj: "bg.wj"; wk: "bg.wk"; wl: "bg.wl"; wm: "bg.wm"; wn: "bg.wn"; wo: "bg.wo"; wp: "bg.wp"; wq: "bg.wq"; wr: "bg.wr"; ws: "bg.ws"; wt: "bg.wt"; wu: "bg.wu"; wv: "bg.wv"; ww: "bg.ww"; wx: "bg.wx"; wy: "bg.wy"; wz: "bg.wz"; xa: "bg.xa"; xb: "bg.xb"; xc: "bg.xc"; xd: "bg.xd"; xe: "bg.xe"; xf: "bg.xf"; xg: "bg.xg"; xh: "bg.xh"; xi: "bg.xi"; xj: "bg.xj"; xk: "bg.xk"; xl: "bg.xl"; xm: "bg.xm"; xn: "bg.xn"; xo: "bg.xo"; xp: "bg.xp"; xq: "bg.xq"; xr: "bg.xr"; xs: "bg.xs"; xt: "bg.xt"; xu: "bg.xu"; xv: "bg.xv"; xw: "bg.xw"; xx: "bg.xx"; xy: "bg.xy"; xz: "bg.xz"; ya: "bg.ya"; yb: "bg.yb"; yc: "bg.yc"; yd: "bg.yd"; ye: "bg.ye"; yf: "bg.yf"; yg: "bg.yg"; yh: "bg.yh"; yi: "bg.yi"; yj: "bg.yj"; yk: "bg.yk"; yl: "bg.yl"; ym: "bg.ym"; yn: "bg.yn"; yo: "bg.yo"; yp: "bg.yp"; yq: "bg.yq"; yr: "bg.yr"; ys: "bg.ys"; yt: "bg.yt"; yu: "bg.yu"; yv: "bg.yv"; yw: "bg.yw"; yx: "bg.yx"; yy: "bg.yy"; yz: "bg.yz"; za: "bg.za"; zb: "bg.zb"; zc: "bg.zc"; zd: "bg.zd"; ze: "bg.ze"; zf: "bg.zf"; zg: "bg.zg"; zh: "bg.zh"; zi: "bg.zi"; zj: "bg.zj"; zk: "bg.zk"; zl: "bg.zl"; zm: "bg.zm"; zn: "bg.zn"; zo: "bg.zo"; zp: "bg.zp"; zq: "bg.zq"; zr: "bg.zr"; zs: "bg.zs"; zt: "bg.zt"; zu: "bg.zu"; zv: "bg.zv"; zw: "bg.zw"; zx: "bg.zx"; zy: "bg.zy"; zz: "bg.zz"; }; bh: { aa: "bh.aa"; ab: "bh.ab"; ac: "bh.ac"; ad: "bh.ad"; ae: "bh.ae"; af: "bh.af"; ag: "bh.ag"; ah: "bh.ah"; ai: "bh.ai"; aj: "bh.aj"; ak: "bh.ak"; al: "bh.al"; am: "bh.am"; an: "bh.an"; ao: "bh.ao"; ap: "bh.ap"; aq: "bh.aq"; ar: "bh.ar"; as: "bh.as"; at: "bh.at"; au: "bh.au"; av: "bh.av"; aw: "bh.aw"; ax: "bh.ax"; ay: "bh.ay"; az: "bh.az"; ba: "bh.ba"; bb: "bh.bb"; bc: "bh.bc"; bd: "bh.bd"; be: "bh.be"; bf: "bh.bf"; bg: "bh.bg"; bh: "bh.bh"; bi: "bh.bi"; bj: "bh.bj"; bk: "bh.bk"; bl: "bh.bl"; bm: "bh.bm"; bn: "bh.bn"; bo: "bh.bo"; bp: "bh.bp"; bq: "bh.bq"; br: "bh.br"; bs: "bh.bs"; bt: "bh.bt"; bu: "bh.bu"; bv: "bh.bv"; bw: "bh.bw"; bx: "bh.bx"; by: "bh.by"; bz: "bh.bz"; ca: "bh.ca"; cb: "bh.cb"; cc: "bh.cc"; cd: "bh.cd"; ce: "bh.ce"; cf: "bh.cf"; cg: "bh.cg"; ch: "bh.ch"; ci: "bh.ci"; cj: "bh.cj"; ck: "bh.ck"; cl: "bh.cl"; cm: "bh.cm"; cn: "bh.cn"; co: "bh.co"; cp: "bh.cp"; cq: "bh.cq"; cr: "bh.cr"; cs: "bh.cs"; ct: "bh.ct"; cu: "bh.cu"; cv: "bh.cv"; cw: "bh.cw"; cx: "bh.cx"; cy: "bh.cy"; cz: "bh.cz"; da: "bh.da"; db: "bh.db"; dc: "bh.dc"; dd: "bh.dd"; de: "bh.de"; df: "bh.df"; dg: "bh.dg"; dh: "bh.dh"; di: "bh.di"; dj: "bh.dj"; dk: "bh.dk"; dl: "bh.dl"; dm: "bh.dm"; dn: "bh.dn"; do: "bh.do"; dp: "bh.dp"; dq: "bh.dq"; dr: "bh.dr"; ds: "bh.ds"; dt: "bh.dt"; du: "bh.du"; dv: "bh.dv"; dw: "bh.dw"; dx: "bh.dx"; dy: "bh.dy"; dz: "bh.dz"; ea: "bh.ea"; eb: "bh.eb"; ec: "bh.ec"; ed: "bh.ed"; ee: "bh.ee"; ef: "bh.ef"; eg: "bh.eg"; eh: "bh.eh"; ei: "bh.ei"; ej: "bh.ej"; ek: "bh.ek"; el: "bh.el"; em: "bh.em"; en: "bh.en"; eo: "bh.eo"; ep: "bh.ep"; eq: "bh.eq"; er: "bh.er"; es: "bh.es"; et: "bh.et"; eu: "bh.eu"; ev: "bh.ev"; ew: "bh.ew"; ex: "bh.ex"; ey: "bh.ey"; ez: "bh.ez"; fa: "bh.fa"; fb: "bh.fb"; fc: "bh.fc"; fd: "bh.fd"; fe: "bh.fe"; ff: "bh.ff"; fg: "bh.fg"; fh: "bh.fh"; fi: "bh.fi"; fj: "bh.fj"; fk: "bh.fk"; fl: "bh.fl"; fm: "bh.fm"; fn: "bh.fn"; fo: "bh.fo"; fp: "bh.fp"; fq: "bh.fq"; fr: "bh.fr"; fs: "bh.fs"; ft: "bh.ft"; fu: "bh.fu"; fv: "bh.fv"; fw: "bh.fw"; fx: "bh.fx"; fy: "bh.fy"; fz: "bh.fz"; ga: "bh.ga"; gb: "bh.gb"; gc: "bh.gc"; gd: "bh.gd"; ge: "bh.ge"; gf: "bh.gf"; gg: "bh.gg"; gh: "bh.gh"; gi: "bh.gi"; gj: "bh.gj"; gk: "bh.gk"; gl: "bh.gl"; gm: "bh.gm"; gn: "bh.gn"; go: "bh.go"; gp: "bh.gp"; gq: "bh.gq"; gr: "bh.gr"; gs: "bh.gs"; gt: "bh.gt"; gu: "bh.gu"; gv: "bh.gv"; gw: "bh.gw"; gx: "bh.gx"; gy: "bh.gy"; gz: "bh.gz"; ha: "bh.ha"; hb: "bh.hb"; hc: "bh.hc"; hd: "bh.hd"; he: "bh.he"; hf: "bh.hf"; hg: "bh.hg"; hh: "bh.hh"; hi: "bh.hi"; hj: "bh.hj"; hk: "bh.hk"; hl: "bh.hl"; hm: "bh.hm"; hn: "bh.hn"; ho: "bh.ho"; hp: "bh.hp"; hq: "bh.hq"; hr: "bh.hr"; hs: "bh.hs"; ht: "bh.ht"; hu: "bh.hu"; hv: "bh.hv"; hw: "bh.hw"; hx: "bh.hx"; hy: "bh.hy"; hz: "bh.hz"; ia: "bh.ia"; ib: "bh.ib"; ic: "bh.ic"; id: "bh.id"; ie: "bh.ie"; if: "bh.if"; ig: "bh.ig"; ih: "bh.ih"; ii: "bh.ii"; ij: "bh.ij"; ik: "bh.ik"; il: "bh.il"; im: "bh.im"; in: "bh.in"; io: "bh.io"; ip: "bh.ip"; iq: "bh.iq"; ir: "bh.ir"; is: "bh.is"; it: "bh.it"; iu: "bh.iu"; iv: "bh.iv"; iw: "bh.iw"; ix: "bh.ix"; iy: "bh.iy"; iz: "bh.iz"; ja: "bh.ja"; jb: "bh.jb"; jc: "bh.jc"; jd: "bh.jd"; je: "bh.je"; jf: "bh.jf"; jg: "bh.jg"; jh: "bh.jh"; ji: "bh.ji"; jj: "bh.jj"; jk: "bh.jk"; jl: "bh.jl"; jm: "bh.jm"; jn: "bh.jn"; jo: "bh.jo"; jp: "bh.jp"; jq: "bh.jq"; jr: "bh.jr"; js: "bh.js"; jt: "bh.jt"; ju: "bh.ju"; jv: "bh.jv"; jw: "bh.jw"; jx: "bh.jx"; jy: "bh.jy"; jz: "bh.jz"; ka: "bh.ka"; kb: "bh.kb"; kc: "bh.kc"; kd: "bh.kd"; ke: "bh.ke"; kf: "bh.kf"; kg: "bh.kg"; kh: "bh.kh"; ki: "bh.ki"; kj: "bh.kj"; kk: "bh.kk"; kl: "bh.kl"; km: "bh.km"; kn: "bh.kn"; ko: "bh.ko"; kp: "bh.kp"; kq: "bh.kq"; kr: "bh.kr"; ks: "bh.ks"; kt: "bh.kt"; ku: "bh.ku"; kv: "bh.kv"; kw: "bh.kw"; kx: "bh.kx"; ky: "bh.ky"; kz: "bh.kz"; la: "bh.la"; lb: "bh.lb"; lc: "bh.lc"; ld: "bh.ld"; le: "bh.le"; lf: "bh.lf"; lg: "bh.lg"; lh: "bh.lh"; li: "bh.li"; lj: "bh.lj"; lk: "bh.lk"; ll: "bh.ll"; lm: "bh.lm"; ln: "bh.ln"; lo: "bh.lo"; lp: "bh.lp"; lq: "bh.lq"; lr: "bh.lr"; ls: "bh.ls"; lt: "bh.lt"; lu: "bh.lu"; lv: "bh.lv"; lw: "bh.lw"; lx: "bh.lx"; ly: "bh.ly"; lz: "bh.lz"; ma: "bh.ma"; mb: "bh.mb"; mc: "bh.mc"; md: "bh.md"; me: "bh.me"; mf: "bh.mf"; mg: "bh.mg"; mh: "bh.mh"; mi: "bh.mi"; mj: "bh.mj"; mk: "bh.mk"; ml: "bh.ml"; mm: "bh.mm"; mn: "bh.mn"; mo: "bh.mo"; mp: "bh.mp"; mq: "bh.mq"; mr: "bh.mr"; ms: "bh.ms"; mt: "bh.mt"; mu: "bh.mu"; mv: "bh.mv"; mw: "bh.mw"; mx: "bh.mx"; my: "bh.my"; mz: "bh.mz"; na: "bh.na"; nb: "bh.nb"; nc: "bh.nc"; nd: "bh.nd"; ne: "bh.ne"; nf: "bh.nf"; ng: "bh.ng"; nh: "bh.nh"; ni: "bh.ni"; nj: "bh.nj"; nk: "bh.nk"; nl: "bh.nl"; nm: "bh.nm"; nn: "bh.nn"; no: "bh.no"; np: "bh.np"; nq: "bh.nq"; nr: "bh.nr"; ns: "bh.ns"; nt: "bh.nt"; nu: "bh.nu"; nv: "bh.nv"; nw: "bh.nw"; nx: "bh.nx"; ny: "bh.ny"; nz: "bh.nz"; oa: "bh.oa"; ob: "bh.ob"; oc: "bh.oc"; od: "bh.od"; oe: "bh.oe"; of: "bh.of"; og: "bh.og"; oh: "bh.oh"; oi: "bh.oi"; oj: "bh.oj"; ok: "bh.ok"; ol: "bh.ol"; om: "bh.om"; on: "bh.on"; oo: "bh.oo"; op: "bh.op"; oq: "bh.oq"; or: "bh.or"; os: "bh.os"; ot: "bh.ot"; ou: "bh.ou"; ov: "bh.ov"; ow: "bh.ow"; ox: "bh.ox"; oy: "bh.oy"; oz: "bh.oz"; pa: "bh.pa"; pb: "bh.pb"; pc: "bh.pc"; pd: "bh.pd"; pe: "bh.pe"; pf: "bh.pf"; pg: "bh.pg"; ph: "bh.ph"; pi: "bh.pi"; pj: "bh.pj"; pk: "bh.pk"; pl: "bh.pl"; pm: "bh.pm"; pn: "bh.pn"; po: "bh.po"; pp: "bh.pp"; pq: "bh.pq"; pr: "bh.pr"; ps: "bh.ps"; pt: "bh.pt"; pu: "bh.pu"; pv: "bh.pv"; pw: "bh.pw"; px: "bh.px"; py: "bh.py"; pz: "bh.pz"; qa: "bh.qa"; qb: "bh.qb"; qc: "bh.qc"; qd: "bh.qd"; qe: "bh.qe"; qf: "bh.qf"; qg: "bh.qg"; qh: "bh.qh"; qi: "bh.qi"; qj: "bh.qj"; qk: "bh.qk"; ql: "bh.ql"; qm: "bh.qm"; qn: "bh.qn"; qo: "bh.qo"; qp: "bh.qp"; qq: "bh.qq"; qr: "bh.qr"; qs: "bh.qs"; qt: "bh.qt"; qu: "bh.qu"; qv: "bh.qv"; qw: "bh.qw"; qx: "bh.qx"; qy: "bh.qy"; qz: "bh.qz"; ra: "bh.ra"; rb: "bh.rb"; rc: "bh.rc"; rd: "bh.rd"; re: "bh.re"; rf: "bh.rf"; rg: "bh.rg"; rh: "bh.rh"; ri: "bh.ri"; rj: "bh.rj"; rk: "bh.rk"; rl: "bh.rl"; rm: "bh.rm"; rn: "bh.rn"; ro: "bh.ro"; rp: "bh.rp"; rq: "bh.rq"; rr: "bh.rr"; rs: "bh.rs"; rt: "bh.rt"; ru: "bh.ru"; rv: "bh.rv"; rw: "bh.rw"; rx: "bh.rx"; ry: "bh.ry"; rz: "bh.rz"; sa: "bh.sa"; sb: "bh.sb"; sc: "bh.sc"; sd: "bh.sd"; se: "bh.se"; sf: "bh.sf"; sg: "bh.sg"; sh: "bh.sh"; si: "bh.si"; sj: "bh.sj"; sk: "bh.sk"; sl: "bh.sl"; sm: "bh.sm"; sn: "bh.sn"; so: "bh.so"; sp: "bh.sp"; sq: "bh.sq"; sr: "bh.sr"; ss: "bh.ss"; st: "bh.st"; su: "bh.su"; sv: "bh.sv"; sw: "bh.sw"; sx: "bh.sx"; sy: "bh.sy"; sz: "bh.sz"; ta: "bh.ta"; tb: "bh.tb"; tc: "bh.tc"; td: "bh.td"; te: "bh.te"; tf: "bh.tf"; tg: "bh.tg"; th: "bh.th"; ti: "bh.ti"; tj: "bh.tj"; tk: "bh.tk"; tl: "bh.tl"; tm: "bh.tm"; tn: "bh.tn"; to: "bh.to"; tp: "bh.tp"; tq: "bh.tq"; tr: "bh.tr"; ts: "bh.ts"; tt: "bh.tt"; tu: "bh.tu"; tv: "bh.tv"; tw: "bh.tw"; tx: "bh.tx"; ty: "bh.ty"; tz: "bh.tz"; ua: "bh.ua"; ub: "bh.ub"; uc: "bh.uc"; ud: "bh.ud"; ue: "bh.ue"; uf: "bh.uf"; ug: "bh.ug"; uh: "bh.uh"; ui: "bh.ui"; uj: "bh.uj"; uk: "bh.uk"; ul: "bh.ul"; um: "bh.um"; un: "bh.un"; uo: "bh.uo"; up: "bh.up"; uq: "bh.uq"; ur: "bh.ur"; us: "bh.us"; ut: "bh.ut"; uu: "bh.uu"; uv: "bh.uv"; uw: "bh.uw"; ux: "bh.ux"; uy: "bh.uy"; uz: "bh.uz"; va: "bh.va"; vb: "bh.vb"; vc: "bh.vc"; vd: "bh.vd"; ve: "bh.ve"; vf: "bh.vf"; vg: "bh.vg"; vh: "bh.vh"; vi: "bh.vi"; vj: "bh.vj"; vk: "bh.vk"; vl: "bh.vl"; vm: "bh.vm"; vn: "bh.vn"; vo: "bh.vo"; vp: "bh.vp"; vq: "bh.vq"; vr: "bh.vr"; vs: "bh.vs"; vt: "bh.vt"; vu: "bh.vu"; vv: "bh.vv"; vw: "bh.vw"; vx: "bh.vx"; vy: "bh.vy"; vz: "bh.vz"; wa: "bh.wa"; wb: "bh.wb"; wc: "bh.wc"; wd: "bh.wd"; we: "bh.we"; wf: "bh.wf"; wg: "bh.wg"; wh: "bh.wh"; wi: "bh.wi"; wj: "bh.wj"; wk: "bh.wk"; wl: "bh.wl"; wm: "bh.wm"; wn: "bh.wn"; wo: "bh.wo"; wp: "bh.wp"; wq: "bh.wq"; wr: "bh.wr"; ws: "bh.ws"; wt: "bh.wt"; wu: "bh.wu"; wv: "bh.wv"; ww: "bh.ww"; wx: "bh.wx"; wy: "bh.wy"; wz: "bh.wz"; xa: "bh.xa"; xb: "bh.xb"; xc: "bh.xc"; xd: "bh.xd"; xe: "bh.xe"; xf: "bh.xf"; xg: "bh.xg"; xh: "bh.xh"; xi: "bh.xi"; xj: "bh.xj"; xk: "bh.xk"; xl: "bh.xl"; xm: "bh.xm"; xn: "bh.xn"; xo: "bh.xo"; xp: "bh.xp"; xq: "bh.xq"; xr: "bh.xr"; xs: "bh.xs"; xt: "bh.xt"; xu: "bh.xu"; xv: "bh.xv"; xw: "bh.xw"; xx: "bh.xx"; xy: "bh.xy"; xz: "bh.xz"; ya: "bh.ya"; yb: "bh.yb"; yc: "bh.yc"; yd: "bh.yd"; ye: "bh.ye"; yf: "bh.yf"; yg: "bh.yg"; yh: "bh.yh"; yi: "bh.yi"; yj: "bh.yj"; yk: "bh.yk"; yl: "bh.yl"; ym: "bh.ym"; yn: "bh.yn"; yo: "bh.yo"; yp: "bh.yp"; yq: "bh.yq"; yr: "bh.yr"; ys: "bh.ys"; yt: "bh.yt"; yu: "bh.yu"; yv: "bh.yv"; yw: "bh.yw"; yx: "bh.yx"; yy: "bh.yy"; yz: "bh.yz"; za: "bh.za"; zb: "bh.zb"; zc: "bh.zc"; zd: "bh.zd"; ze: "bh.ze"; zf: "bh.zf"; zg: "bh.zg"; zh: "bh.zh"; zi: "bh.zi"; zj: "bh.zj"; zk: "bh.zk"; zl: "bh.zl"; zm: "bh.zm"; zn: "bh.zn"; zo: "bh.zo"; zp: "bh.zp"; zq: "bh.zq"; zr: "bh.zr"; zs: "bh.zs"; zt: "bh.zt"; zu: "bh.zu"; zv: "bh.zv"; zw: "bh.zw"; zx: "bh.zx"; zy: "bh.zy"; zz: "bh.zz"; }; bi: { aa: "bi.aa"; ab: "bi.ab"; ac: "bi.ac"; ad: "bi.ad"; ae: "bi.ae"; af: "bi.af"; ag: "bi.ag"; ah: "bi.ah"; ai: "bi.ai"; aj: "bi.aj"; ak: "bi.ak"; al: "bi.al"; am: "bi.am"; an: "bi.an"; ao: "bi.ao"; ap: "bi.ap"; aq: "bi.aq"; ar: "bi.ar"; as: "bi.as"; at: "bi.at"; au: "bi.au"; av: "bi.av"; aw: "bi.aw"; ax: "bi.ax"; ay: "bi.ay"; az: "bi.az"; ba: "bi.ba"; bb: "bi.bb"; bc: "bi.bc"; bd: "bi.bd"; be: "bi.be"; bf: "bi.bf"; bg: "bi.bg"; bh: "bi.bh"; bi: "bi.bi"; bj: "bi.bj"; bk: "bi.bk"; bl: "bi.bl"; bm: "bi.bm"; bn: "bi.bn"; bo: "bi.bo"; bp: "bi.bp"; bq: "bi.bq"; br: "bi.br"; bs: "bi.bs"; bt: "bi.bt"; bu: "bi.bu"; bv: "bi.bv"; bw: "bi.bw"; bx: "bi.bx"; by: "bi.by"; bz: "bi.bz"; ca: "bi.ca"; cb: "bi.cb"; cc: "bi.cc"; cd: "bi.cd"; ce: "bi.ce"; cf: "bi.cf"; cg: "bi.cg"; ch: "bi.ch"; ci: "bi.ci"; cj: "bi.cj"; ck: "bi.ck"; cl: "bi.cl"; cm: "bi.cm"; cn: "bi.cn"; co: "bi.co"; cp: "bi.cp"; cq: "bi.cq"; cr: "bi.cr"; cs: "bi.cs"; ct: "bi.ct"; cu: "bi.cu"; cv: "bi.cv"; cw: "bi.cw"; cx: "bi.cx"; cy: "bi.cy"; cz: "bi.cz"; da: "bi.da"; db: "bi.db"; dc: "bi.dc"; dd: "bi.dd"; de: "bi.de"; df: "bi.df"; dg: "bi.dg"; dh: "bi.dh"; di: "bi.di"; dj: "bi.dj"; dk: "bi.dk"; dl: "bi.dl"; dm: "bi.dm"; dn: "bi.dn"; do: "bi.do"; dp: "bi.dp"; dq: "bi.dq"; dr: "bi.dr"; ds: "bi.ds"; dt: "bi.dt"; du: "bi.du"; dv: "bi.dv"; dw: "bi.dw"; dx: "bi.dx"; dy: "bi.dy"; dz: "bi.dz"; ea: "bi.ea"; eb: "bi.eb"; ec: "bi.ec"; ed: "bi.ed"; ee: "bi.ee"; ef: "bi.ef"; eg: "bi.eg"; eh: "bi.eh"; ei: "bi.ei"; ej: "bi.ej"; ek: "bi.ek"; el: "bi.el"; em: "bi.em"; en: "bi.en"; eo: "bi.eo"; ep: "bi.ep"; eq: "bi.eq"; er: "bi.er"; es: "bi.es"; et: "bi.et"; eu: "bi.eu"; ev: "bi.ev"; ew: "bi.ew"; ex: "bi.ex"; ey: "bi.ey"; ez: "bi.ez"; fa: "bi.fa"; fb: "bi.fb"; fc: "bi.fc"; fd: "bi.fd"; fe: "bi.fe"; ff: "bi.ff"; fg: "bi.fg"; fh: "bi.fh"; fi: "bi.fi"; fj: "bi.fj"; fk: "bi.fk"; fl: "bi.fl"; fm: "bi.fm"; fn: "bi.fn"; fo: "bi.fo"; fp: "bi.fp"; fq: "bi.fq"; fr: "bi.fr"; fs: "bi.fs"; ft: "bi.ft"; fu: "bi.fu"; fv: "bi.fv"; fw: "bi.fw"; fx: "bi.fx"; fy: "bi.fy"; fz: "bi.fz"; ga: "bi.ga"; gb: "bi.gb"; gc: "bi.gc"; gd: "bi.gd"; ge: "bi.ge"; gf: "bi.gf"; gg: "bi.gg"; gh: "bi.gh"; gi: "bi.gi"; gj: "bi.gj"; gk: "bi.gk"; gl: "bi.gl"; gm: "bi.gm"; gn: "bi.gn"; go: "bi.go"; gp: "bi.gp"; gq: "bi.gq"; gr: "bi.gr"; gs: "bi.gs"; gt: "bi.gt"; gu: "bi.gu"; gv: "bi.gv"; gw: "bi.gw"; gx: "bi.gx"; gy: "bi.gy"; gz: "bi.gz"; ha: "bi.ha"; hb: "bi.hb"; hc: "bi.hc"; hd: "bi.hd"; he: "bi.he"; hf: "bi.hf"; hg: "bi.hg"; hh: "bi.hh"; hi: "bi.hi"; hj: "bi.hj"; hk: "bi.hk"; hl: "bi.hl"; hm: "bi.hm"; hn: "bi.hn"; ho: "bi.ho"; hp: "bi.hp"; hq: "bi.hq"; hr: "bi.hr"; hs: "bi.hs"; ht: "bi.ht"; hu: "bi.hu"; hv: "bi.hv"; hw: "bi.hw"; hx: "bi.hx"; hy: "bi.hy"; hz: "bi.hz"; ia: "bi.ia"; ib: "bi.ib"; ic: "bi.ic"; id: "bi.id"; ie: "bi.ie"; if: "bi.if"; ig: "bi.ig"; ih: "bi.ih"; ii: "bi.ii"; ij: "bi.ij"; ik: "bi.ik"; il: "bi.il"; im: "bi.im"; in: "bi.in"; io: "bi.io"; ip: "bi.ip"; iq: "bi.iq"; ir: "bi.ir"; is: "bi.is"; it: "bi.it"; iu: "bi.iu"; iv: "bi.iv"; iw: "bi.iw"; ix: "bi.ix"; iy: "bi.iy"; iz: "bi.iz"; ja: "bi.ja"; jb: "bi.jb"; jc: "bi.jc"; jd: "bi.jd"; je: "bi.je"; jf: "bi.jf"; jg: "bi.jg"; jh: "bi.jh"; ji: "bi.ji"; jj: "bi.jj"; jk: "bi.jk"; jl: "bi.jl"; jm: "bi.jm"; jn: "bi.jn"; jo: "bi.jo"; jp: "bi.jp"; jq: "bi.jq"; jr: "bi.jr"; js: "bi.js"; jt: "bi.jt"; ju: "bi.ju"; jv: "bi.jv"; jw: "bi.jw"; jx: "bi.jx"; jy: "bi.jy"; jz: "bi.jz"; ka: "bi.ka"; kb: "bi.kb"; kc: "bi.kc"; kd: "bi.kd"; ke: "bi.ke"; kf: "bi.kf"; kg: "bi.kg"; kh: "bi.kh"; ki: "bi.ki"; kj: "bi.kj"; kk: "bi.kk"; kl: "bi.kl"; km: "bi.km"; kn: "bi.kn"; ko: "bi.ko"; kp: "bi.kp"; kq: "bi.kq"; kr: "bi.kr"; ks: "bi.ks"; kt: "bi.kt"; ku: "bi.ku"; kv: "bi.kv"; kw: "bi.kw"; kx: "bi.kx"; ky: "bi.ky"; kz: "bi.kz"; la: "bi.la"; lb: "bi.lb"; lc: "bi.lc"; ld: "bi.ld"; le: "bi.le"; lf: "bi.lf"; lg: "bi.lg"; lh: "bi.lh"; li: "bi.li"; lj: "bi.lj"; lk: "bi.lk"; ll: "bi.ll"; lm: "bi.lm"; ln: "bi.ln"; lo: "bi.lo"; lp: "bi.lp"; lq: "bi.lq"; lr: "bi.lr"; ls: "bi.ls"; lt: "bi.lt"; lu: "bi.lu"; lv: "bi.lv"; lw: "bi.lw"; lx: "bi.lx"; ly: "bi.ly"; lz: "bi.lz"; ma: "bi.ma"; mb: "bi.mb"; mc: "bi.mc"; md: "bi.md"; me: "bi.me"; mf: "bi.mf"; mg: "bi.mg"; mh: "bi.mh"; mi: "bi.mi"; mj: "bi.mj"; mk: "bi.mk"; ml: "bi.ml"; mm: "bi.mm"; mn: "bi.mn"; mo: "bi.mo"; mp: "bi.mp"; mq: "bi.mq"; mr: "bi.mr"; ms: "bi.ms"; mt: "bi.mt"; mu: "bi.mu"; mv: "bi.mv"; mw: "bi.mw"; mx: "bi.mx"; my: "bi.my"; mz: "bi.mz"; na: "bi.na"; nb: "bi.nb"; nc: "bi.nc"; nd: "bi.nd"; ne: "bi.ne"; nf: "bi.nf"; ng: "bi.ng"; nh: "bi.nh"; ni: "bi.ni"; nj: "bi.nj"; nk: "bi.nk"; nl: "bi.nl"; nm: "bi.nm"; nn: "bi.nn"; no: "bi.no"; np: "bi.np"; nq: "bi.nq"; nr: "bi.nr"; ns: "bi.ns"; nt: "bi.nt"; nu: "bi.nu"; nv: "bi.nv"; nw: "bi.nw"; nx: "bi.nx"; ny: "bi.ny"; nz: "bi.nz"; oa: "bi.oa"; ob: "bi.ob"; oc: "bi.oc"; od: "bi.od"; oe: "bi.oe"; of: "bi.of"; og: "bi.og"; oh: "bi.oh"; oi: "bi.oi"; oj: "bi.oj"; ok: "bi.ok"; ol: "bi.ol"; om: "bi.om"; on: "bi.on"; oo: "bi.oo"; op: "bi.op"; oq: "bi.oq"; or: "bi.or"; os: "bi.os"; ot: "bi.ot"; ou: "bi.ou"; ov: "bi.ov"; ow: "bi.ow"; ox: "bi.ox"; oy: "bi.oy"; oz: "bi.oz"; pa: "bi.pa"; pb: "bi.pb"; pc: "bi.pc"; pd: "bi.pd"; pe: "bi.pe"; pf: "bi.pf"; pg: "bi.pg"; ph: "bi.ph"; pi: "bi.pi"; pj: "bi.pj"; pk: "bi.pk"; pl: "bi.pl"; pm: "bi.pm"; pn: "bi.pn"; po: "bi.po"; pp: "bi.pp"; pq: "bi.pq"; pr: "bi.pr"; ps: "bi.ps"; pt: "bi.pt"; pu: "bi.pu"; pv: "bi.pv"; pw: "bi.pw"; px: "bi.px"; py: "bi.py"; pz: "bi.pz"; qa: "bi.qa"; qb: "bi.qb"; qc: "bi.qc"; qd: "bi.qd"; qe: "bi.qe"; qf: "bi.qf"; qg: "bi.qg"; qh: "bi.qh"; qi: "bi.qi"; qj: "bi.qj"; qk: "bi.qk"; ql: "bi.ql"; qm: "bi.qm"; qn: "bi.qn"; qo: "bi.qo"; qp: "bi.qp"; qq: "bi.qq"; qr: "bi.qr"; qs: "bi.qs"; qt: "bi.qt"; qu: "bi.qu"; qv: "bi.qv"; qw: "bi.qw"; qx: "bi.qx"; qy: "bi.qy"; qz: "bi.qz"; ra: "bi.ra"; rb: "bi.rb"; rc: "bi.rc"; rd: "bi.rd"; re: "bi.re"; rf: "bi.rf"; rg: "bi.rg"; rh: "bi.rh"; ri: "bi.ri"; rj: "bi.rj"; rk: "bi.rk"; rl: "bi.rl"; rm: "bi.rm"; rn: "bi.rn"; ro: "bi.ro"; rp: "bi.rp"; rq: "bi.rq"; rr: "bi.rr"; rs: "bi.rs"; rt: "bi.rt"; ru: "bi.ru"; rv: "bi.rv"; rw: "bi.rw"; rx: "bi.rx"; ry: "bi.ry"; rz: "bi.rz"; sa: "bi.sa"; sb: "bi.sb"; sc: "bi.sc"; sd: "bi.sd"; se: "bi.se"; sf: "bi.sf"; sg: "bi.sg"; sh: "bi.sh"; si: "bi.si"; sj: "bi.sj"; sk: "bi.sk"; sl: "bi.sl"; sm: "bi.sm"; sn: "bi.sn"; so: "bi.so"; sp: "bi.sp"; sq: "bi.sq"; sr: "bi.sr"; ss: "bi.ss"; st: "bi.st"; su: "bi.su"; sv: "bi.sv"; sw: "bi.sw"; sx: "bi.sx"; sy: "bi.sy"; sz: "bi.sz"; ta: "bi.ta"; tb: "bi.tb"; tc: "bi.tc"; td: "bi.td"; te: "bi.te"; tf: "bi.tf"; tg: "bi.tg"; th: "bi.th"; ti: "bi.ti"; tj: "bi.tj"; tk: "bi.tk"; tl: "bi.tl"; tm: "bi.tm"; tn: "bi.tn"; to: "bi.to"; tp: "bi.tp"; tq: "bi.tq"; tr: "bi.tr"; ts: "bi.ts"; tt: "bi.tt"; tu: "bi.tu"; tv: "bi.tv"; tw: "bi.tw"; tx: "bi.tx"; ty: "bi.ty"; tz: "bi.tz"; ua: "bi.ua"; ub: "bi.ub"; uc: "bi.uc"; ud: "bi.ud"; ue: "bi.ue"; uf: "bi.uf"; ug: "bi.ug"; uh: "bi.uh"; ui: "bi.ui"; uj: "bi.uj"; uk: "bi.uk"; ul: "bi.ul"; um: "bi.um"; un: "bi.un"; uo: "bi.uo"; up: "bi.up"; uq: "bi.uq"; ur: "bi.ur"; us: "bi.us"; ut: "bi.ut"; uu: "bi.uu"; uv: "bi.uv"; uw: "bi.uw"; ux: "bi.ux"; uy: "bi.uy"; uz: "bi.uz"; va: "bi.va"; vb: "bi.vb"; vc: "bi.vc"; vd: "bi.vd"; ve: "bi.ve"; vf: "bi.vf"; vg: "bi.vg"; vh: "bi.vh"; vi: "bi.vi"; vj: "bi.vj"; vk: "bi.vk"; vl: "bi.vl"; vm: "bi.vm"; vn: "bi.vn"; vo: "bi.vo"; vp: "bi.vp"; vq: "bi.vq"; vr: "bi.vr"; vs: "bi.vs"; vt: "bi.vt"; vu: "bi.vu"; vv: "bi.vv"; vw: "bi.vw"; vx: "bi.vx"; vy: "bi.vy"; vz: "bi.vz"; wa: "bi.wa"; wb: "bi.wb"; wc: "bi.wc"; wd: "bi.wd"; we: "bi.we"; wf: "bi.wf"; wg: "bi.wg"; wh: "bi.wh"; wi: "bi.wi"; wj: "bi.wj"; wk: "bi.wk"; wl: "bi.wl"; wm: "bi.wm"; wn: "bi.wn"; wo: "bi.wo"; wp: "bi.wp"; wq: "bi.wq"; wr: "bi.wr"; ws: "bi.ws"; wt: "bi.wt"; wu: "bi.wu"; wv: "bi.wv"; ww: "bi.ww"; wx: "bi.wx"; wy: "bi.wy"; wz: "bi.wz"; xa: "bi.xa"; xb: "bi.xb"; xc: "bi.xc"; xd: "bi.xd"; xe: "bi.xe"; xf: "bi.xf"; xg: "bi.xg"; xh: "bi.xh"; xi: "bi.xi"; xj: "bi.xj"; xk: "bi.xk"; xl: "bi.xl"; xm: "bi.xm"; xn: "bi.xn"; xo: "bi.xo"; xp: "bi.xp"; xq: "bi.xq"; xr: "bi.xr"; xs: "bi.xs"; xt: "bi.xt"; xu: "bi.xu"; xv: "bi.xv"; xw: "bi.xw"; xx: "bi.xx"; xy: "bi.xy"; xz: "bi.xz"; ya: "bi.ya"; yb: "bi.yb"; yc: "bi.yc"; yd: "bi.yd"; ye: "bi.ye"; yf: "bi.yf"; yg: "bi.yg"; yh: "bi.yh"; yi: "bi.yi"; yj: "bi.yj"; yk: "bi.yk"; yl: "bi.yl"; ym: "bi.ym"; yn: "bi.yn"; yo: "bi.yo"; yp: "bi.yp"; yq: "bi.yq"; yr: "bi.yr"; ys: "bi.ys"; yt: "bi.yt"; yu: "bi.yu"; yv: "bi.yv"; yw: "bi.yw"; yx: "bi.yx"; yy: "bi.yy"; yz: "bi.yz"; za: "bi.za"; zb: "bi.zb"; zc: "bi.zc"; zd: "bi.zd"; ze: "bi.ze"; zf: "bi.zf"; zg: "bi.zg"; zh: "bi.zh"; zi: "bi.zi"; zj: "bi.zj"; zk: "bi.zk"; zl: "bi.zl"; zm: "bi.zm"; zn: "bi.zn"; zo: "bi.zo"; zp: "bi.zp"; zq: "bi.zq"; zr: "bi.zr"; zs: "bi.zs"; zt: "bi.zt"; zu: "bi.zu"; zv: "bi.zv"; zw: "bi.zw"; zx: "bi.zx"; zy: "bi.zy"; zz: "bi.zz"; }; bj: { aa: "bj.aa"; ab: "bj.ab"; ac: "bj.ac"; ad: "bj.ad"; ae: "bj.ae"; af: "bj.af"; ag: "bj.ag"; ah: "bj.ah"; ai: "bj.ai"; aj: "bj.aj"; ak: "bj.ak"; al: "bj.al"; am: "bj.am"; an: "bj.an"; ao: "bj.ao"; ap: "bj.ap"; aq: "bj.aq"; ar: "bj.ar"; as: "bj.as"; at: "bj.at"; au: "bj.au"; av: "bj.av"; aw: "bj.aw"; ax: "bj.ax"; ay: "bj.ay"; az: "bj.az"; ba: "bj.ba"; bb: "bj.bb"; bc: "bj.bc"; bd: "bj.bd"; be: "bj.be"; bf: "bj.bf"; bg: "bj.bg"; bh: "bj.bh"; bi: "bj.bi"; bj: "bj.bj"; bk: "bj.bk"; bl: "bj.bl"; bm: "bj.bm"; bn: "bj.bn"; bo: "bj.bo"; bp: "bj.bp"; bq: "bj.bq"; br: "bj.br"; bs: "bj.bs"; bt: "bj.bt"; bu: "bj.bu"; bv: "bj.bv"; bw: "bj.bw"; bx: "bj.bx"; by: "bj.by"; bz: "bj.bz"; ca: "bj.ca"; cb: "bj.cb"; cc: "bj.cc"; cd: "bj.cd"; ce: "bj.ce"; cf: "bj.cf"; cg: "bj.cg"; ch: "bj.ch"; ci: "bj.ci"; cj: "bj.cj"; ck: "bj.ck"; cl: "bj.cl"; cm: "bj.cm"; cn: "bj.cn"; co: "bj.co"; cp: "bj.cp"; cq: "bj.cq"; cr: "bj.cr"; cs: "bj.cs"; ct: "bj.ct"; cu: "bj.cu"; cv: "bj.cv"; cw: "bj.cw"; cx: "bj.cx"; cy: "bj.cy"; cz: "bj.cz"; da: "bj.da"; db: "bj.db"; dc: "bj.dc"; dd: "bj.dd"; de: "bj.de"; df: "bj.df"; dg: "bj.dg"; dh: "bj.dh"; di: "bj.di"; dj: "bj.dj"; dk: "bj.dk"; dl: "bj.dl"; dm: "bj.dm"; dn: "bj.dn"; do: "bj.do"; dp: "bj.dp"; dq: "bj.dq"; dr: "bj.dr"; ds: "bj.ds"; dt: "bj.dt"; du: "bj.du"; dv: "bj.dv"; dw: "bj.dw"; dx: "bj.dx"; dy: "bj.dy"; dz: "bj.dz"; ea: "bj.ea"; eb: "bj.eb"; ec: "bj.ec"; ed: "bj.ed"; ee: "bj.ee"; ef: "bj.ef"; eg: "bj.eg"; eh: "bj.eh"; ei: "bj.ei"; ej: "bj.ej"; ek: "bj.ek"; el: "bj.el"; em: "bj.em"; en: "bj.en"; eo: "bj.eo"; ep: "bj.ep"; eq: "bj.eq"; er: "bj.er"; es: "bj.es"; et: "bj.et"; eu: "bj.eu"; ev: "bj.ev"; ew: "bj.ew"; ex: "bj.ex"; ey: "bj.ey"; ez: "bj.ez"; fa: "bj.fa"; fb: "bj.fb"; fc: "bj.fc"; fd: "bj.fd"; fe: "bj.fe"; ff: "bj.ff"; fg: "bj.fg"; fh: "bj.fh"; fi: "bj.fi"; fj: "bj.fj"; fk: "bj.fk"; fl: "bj.fl"; fm: "bj.fm"; fn: "bj.fn"; fo: "bj.fo"; fp: "bj.fp"; fq: "bj.fq"; fr: "bj.fr"; fs: "bj.fs"; ft: "bj.ft"; fu: "bj.fu"; fv: "bj.fv"; fw: "bj.fw"; fx: "bj.fx"; fy: "bj.fy"; fz: "bj.fz"; ga: "bj.ga"; gb: "bj.gb"; gc: "bj.gc"; gd: "bj.gd"; ge: "bj.ge"; gf: "bj.gf"; gg: "bj.gg"; gh: "bj.gh"; gi: "bj.gi"; gj: "bj.gj"; gk: "bj.gk"; gl: "bj.gl"; gm: "bj.gm"; gn: "bj.gn"; go: "bj.go"; gp: "bj.gp"; gq: "bj.gq"; gr: "bj.gr"; gs: "bj.gs"; gt: "bj.gt"; gu: "bj.gu"; gv: "bj.gv"; gw: "bj.gw"; gx: "bj.gx"; gy: "bj.gy"; gz: "bj.gz"; ha: "bj.ha"; hb: "bj.hb"; hc: "bj.hc"; hd: "bj.hd"; he: "bj.he"; hf: "bj.hf"; hg: "bj.hg"; hh: "bj.hh"; hi: "bj.hi"; hj: "bj.hj"; hk: "bj.hk"; hl: "bj.hl"; hm: "bj.hm"; hn: "bj.hn"; ho: "bj.ho"; hp: "bj.hp"; hq: "bj.hq"; hr: "bj.hr"; hs: "bj.hs"; ht: "bj.ht"; hu: "bj.hu"; hv: "bj.hv"; hw: "bj.hw"; hx: "bj.hx"; hy: "bj.hy"; hz: "bj.hz"; ia: "bj.ia"; ib: "bj.ib"; ic: "bj.ic"; id: "bj.id"; ie: "bj.ie"; if: "bj.if"; ig: "bj.ig"; ih: "bj.ih"; ii: "bj.ii"; ij: "bj.ij"; ik: "bj.ik"; il: "bj.il"; im: "bj.im"; in: "bj.in"; io: "bj.io"; ip: "bj.ip"; iq: "bj.iq"; ir: "bj.ir"; is: "bj.is"; it: "bj.it"; iu: "bj.iu"; iv: "bj.iv"; iw: "bj.iw"; ix: "bj.ix"; iy: "bj.iy"; iz: "bj.iz"; ja: "bj.ja"; jb: "bj.jb"; jc: "bj.jc"; jd: "bj.jd"; je: "bj.je"; jf: "bj.jf"; jg: "bj.jg"; jh: "bj.jh"; ji: "bj.ji"; jj: "bj.jj"; jk: "bj.jk"; jl: "bj.jl"; jm: "bj.jm"; jn: "bj.jn"; jo: "bj.jo"; jp: "bj.jp"; jq: "bj.jq"; jr: "bj.jr"; js: "bj.js"; jt: "bj.jt"; ju: "bj.ju"; jv: "bj.jv"; jw: "bj.jw"; jx: "bj.jx"; jy: "bj.jy"; jz: "bj.jz"; ka: "bj.ka"; kb: "bj.kb"; kc: "bj.kc"; kd: "bj.kd"; ke: "bj.ke"; kf: "bj.kf"; kg: "bj.kg"; kh: "bj.kh"; ki: "bj.ki"; kj: "bj.kj"; kk: "bj.kk"; kl: "bj.kl"; km: "bj.km"; kn: "bj.kn"; ko: "bj.ko"; kp: "bj.kp"; kq: "bj.kq"; kr: "bj.kr"; ks: "bj.ks"; kt: "bj.kt"; ku: "bj.ku"; kv: "bj.kv"; kw: "bj.kw"; kx: "bj.kx"; ky: "bj.ky"; kz: "bj.kz"; la: "bj.la"; lb: "bj.lb"; lc: "bj.lc"; ld: "bj.ld"; le: "bj.le"; lf: "bj.lf"; lg: "bj.lg"; lh: "bj.lh"; li: "bj.li"; lj: "bj.lj"; lk: "bj.lk"; ll: "bj.ll"; lm: "bj.lm"; ln: "bj.ln"; lo: "bj.lo"; lp: "bj.lp"; lq: "bj.lq"; lr: "bj.lr"; ls: "bj.ls"; lt: "bj.lt"; lu: "bj.lu"; lv: "bj.lv"; lw: "bj.lw"; lx: "bj.lx"; ly: "bj.ly"; lz: "bj.lz"; ma: "bj.ma"; mb: "bj.mb"; mc: "bj.mc"; md: "bj.md"; me: "bj.me"; mf: "bj.mf"; mg: "bj.mg"; mh: "bj.mh"; mi: "bj.mi"; mj: "bj.mj"; mk: "bj.mk"; ml: "bj.ml"; mm: "bj.mm"; mn: "bj.mn"; mo: "bj.mo"; mp: "bj.mp"; mq: "bj.mq"; mr: "bj.mr"; ms: "bj.ms"; mt: "bj.mt"; mu: "bj.mu"; mv: "bj.mv"; mw: "bj.mw"; mx: "bj.mx"; my: "bj.my"; mz: "bj.mz"; na: "bj.na"; nb: "bj.nb"; nc: "bj.nc"; nd: "bj.nd"; ne: "bj.ne"; nf: "bj.nf"; ng: "bj.ng"; nh: "bj.nh"; ni: "bj.ni"; nj: "bj.nj"; nk: "bj.nk"; nl: "bj.nl"; nm: "bj.nm"; nn: "bj.nn"; no: "bj.no"; np: "bj.np"; nq: "bj.nq"; nr: "bj.nr"; ns: "bj.ns"; nt: "bj.nt"; nu: "bj.nu"; nv: "bj.nv"; nw: "bj.nw"; nx: "bj.nx"; ny: "bj.ny"; nz: "bj.nz"; oa: "bj.oa"; ob: "bj.ob"; oc: "bj.oc"; od: "bj.od"; oe: "bj.oe"; of: "bj.of"; og: "bj.og"; oh: "bj.oh"; oi: "bj.oi"; oj: "bj.oj"; ok: "bj.ok"; ol: "bj.ol"; om: "bj.om"; on: "bj.on"; oo: "bj.oo"; op: "bj.op"; oq: "bj.oq"; or: "bj.or"; os: "bj.os"; ot: "bj.ot"; ou: "bj.ou"; ov: "bj.ov"; ow: "bj.ow"; ox: "bj.ox"; oy: "bj.oy"; oz: "bj.oz"; pa: "bj.pa"; pb: "bj.pb"; pc: "bj.pc"; pd: "bj.pd"; pe: "bj.pe"; pf: "bj.pf"; pg: "bj.pg"; ph: "bj.ph"; pi: "bj.pi"; pj: "bj.pj"; pk: "bj.pk"; pl: "bj.pl"; pm: "bj.pm"; pn: "bj.pn"; po: "bj.po"; pp: "bj.pp"; pq: "bj.pq"; pr: "bj.pr"; ps: "bj.ps"; pt: "bj.pt"; pu: "bj.pu"; pv: "bj.pv"; pw: "bj.pw"; px: "bj.px"; py: "bj.py"; pz: "bj.pz"; qa: "bj.qa"; qb: "bj.qb"; qc: "bj.qc"; qd: "bj.qd"; qe: "bj.qe"; qf: "bj.qf"; qg: "bj.qg"; qh: "bj.qh"; qi: "bj.qi"; qj: "bj.qj"; qk: "bj.qk"; ql: "bj.ql"; qm: "bj.qm"; qn: "bj.qn"; qo: "bj.qo"; qp: "bj.qp"; qq: "bj.qq"; qr: "bj.qr"; qs: "bj.qs"; qt: "bj.qt"; qu: "bj.qu"; qv: "bj.qv"; qw: "bj.qw"; qx: "bj.qx"; qy: "bj.qy"; qz: "bj.qz"; ra: "bj.ra"; rb: "bj.rb"; rc: "bj.rc"; rd: "bj.rd"; re: "bj.re"; rf: "bj.rf"; rg: "bj.rg"; rh: "bj.rh"; ri: "bj.ri"; rj: "bj.rj"; rk: "bj.rk"; rl: "bj.rl"; rm: "bj.rm"; rn: "bj.rn"; ro: "bj.ro"; rp: "bj.rp"; rq: "bj.rq"; rr: "bj.rr"; rs: "bj.rs"; rt: "bj.rt"; ru: "bj.ru"; rv: "bj.rv"; rw: "bj.rw"; rx: "bj.rx"; ry: "bj.ry"; rz: "bj.rz"; sa: "bj.sa"; sb: "bj.sb"; sc: "bj.sc"; sd: "bj.sd"; se: "bj.se"; sf: "bj.sf"; sg: "bj.sg"; sh: "bj.sh"; si: "bj.si"; sj: "bj.sj"; sk: "bj.sk"; sl: "bj.sl"; sm: "bj.sm"; sn: "bj.sn"; so: "bj.so"; sp: "bj.sp"; sq: "bj.sq"; sr: "bj.sr"; ss: "bj.ss"; st: "bj.st"; su: "bj.su"; sv: "bj.sv"; sw: "bj.sw"; sx: "bj.sx"; sy: "bj.sy"; sz: "bj.sz"; ta: "bj.ta"; tb: "bj.tb"; tc: "bj.tc"; td: "bj.td"; te: "bj.te"; tf: "bj.tf"; tg: "bj.tg"; th: "bj.th"; ti: "bj.ti"; tj: "bj.tj"; tk: "bj.tk"; tl: "bj.tl"; tm: "bj.tm"; tn: "bj.tn"; to: "bj.to"; tp: "bj.tp"; tq: "bj.tq"; tr: "bj.tr"; ts: "bj.ts"; tt: "bj.tt"; tu: "bj.tu"; tv: "bj.tv"; tw: "bj.tw"; tx: "bj.tx"; ty: "bj.ty"; tz: "bj.tz"; ua: "bj.ua"; ub: "bj.ub"; uc: "bj.uc"; ud: "bj.ud"; ue: "bj.ue"; uf: "bj.uf"; ug: "bj.ug"; uh: "bj.uh"; ui: "bj.ui"; uj: "bj.uj"; uk: "bj.uk"; ul: "bj.ul"; um: "bj.um"; un: "bj.un"; uo: "bj.uo"; up: "bj.up"; uq: "bj.uq"; ur: "bj.ur"; us: "bj.us"; ut: "bj.ut"; uu: "bj.uu"; uv: "bj.uv"; uw: "bj.uw"; ux: "bj.ux"; uy: "bj.uy"; uz: "bj.uz"; va: "bj.va"; vb: "bj.vb"; vc: "bj.vc"; vd: "bj.vd"; ve: "bj.ve"; vf: "bj.vf"; vg: "bj.vg"; vh: "bj.vh"; vi: "bj.vi"; vj: "bj.vj"; vk: "bj.vk"; vl: "bj.vl"; vm: "bj.vm"; vn: "bj.vn"; vo: "bj.vo"; vp: "bj.vp"; vq: "bj.vq"; vr: "bj.vr"; vs: "bj.vs"; vt: "bj.vt"; vu: "bj.vu"; vv: "bj.vv"; vw: "bj.vw"; vx: "bj.vx"; vy: "bj.vy"; vz: "bj.vz"; wa: "bj.wa"; wb: "bj.wb"; wc: "bj.wc"; wd: "bj.wd"; we: "bj.we"; wf: "bj.wf"; wg: "bj.wg"; wh: "bj.wh"; wi: "bj.wi"; wj: "bj.wj"; wk: "bj.wk"; wl: "bj.wl"; wm: "bj.wm"; wn: "bj.wn"; wo: "bj.wo"; wp: "bj.wp"; wq: "bj.wq"; wr: "bj.wr"; ws: "bj.ws"; wt: "bj.wt"; wu: "bj.wu"; wv: "bj.wv"; ww: "bj.ww"; wx: "bj.wx"; wy: "bj.wy"; wz: "bj.wz"; xa: "bj.xa"; xb: "bj.xb"; xc: "bj.xc"; xd: "bj.xd"; xe: "bj.xe"; xf: "bj.xf"; xg: "bj.xg"; xh: "bj.xh"; xi: "bj.xi"; xj: "bj.xj"; xk: "bj.xk"; xl: "bj.xl"; xm: "bj.xm"; xn: "bj.xn"; xo: "bj.xo"; xp: "bj.xp"; xq: "bj.xq"; xr: "bj.xr"; xs: "bj.xs"; xt: "bj.xt"; xu: "bj.xu"; xv: "bj.xv"; xw: "bj.xw"; xx: "bj.xx"; xy: "bj.xy"; xz: "bj.xz"; ya: "bj.ya"; yb: "bj.yb"; yc: "bj.yc"; yd: "bj.yd"; ye: "bj.ye"; yf: "bj.yf"; yg: "bj.yg"; yh: "bj.yh"; yi: "bj.yi"; yj: "bj.yj"; yk: "bj.yk"; yl: "bj.yl"; ym: "bj.ym"; yn: "bj.yn"; yo: "bj.yo"; yp: "bj.yp"; yq: "bj.yq"; yr: "bj.yr"; ys: "bj.ys"; yt: "bj.yt"; yu: "bj.yu"; yv: "bj.yv"; yw: "bj.yw"; yx: "bj.yx"; yy: "bj.yy"; yz: "bj.yz"; za: "bj.za"; zb: "bj.zb"; zc: "bj.zc"; zd: "bj.zd"; ze: "bj.ze"; zf: "bj.zf"; zg: "bj.zg"; zh: "bj.zh"; zi: "bj.zi"; zj: "bj.zj"; zk: "bj.zk"; zl: "bj.zl"; zm: "bj.zm"; zn: "bj.zn"; zo: "bj.zo"; zp: "bj.zp"; zq: "bj.zq"; zr: "bj.zr"; zs: "bj.zs"; zt: "bj.zt"; zu: "bj.zu"; zv: "bj.zv"; zw: "bj.zw"; zx: "bj.zx"; zy: "bj.zy"; zz: "bj.zz"; }; bk: { aa: "bk.aa"; ab: "bk.ab"; ac: "bk.ac"; ad: "bk.ad"; ae: "bk.ae"; af: "bk.af"; ag: "bk.ag"; ah: "bk.ah"; ai: "bk.ai"; aj: "bk.aj"; ak: "bk.ak"; al: "bk.al"; am: "bk.am"; an: "bk.an"; ao: "bk.ao"; ap: "bk.ap"; aq: "bk.aq"; ar: "bk.ar"; as: "bk.as"; at: "bk.at"; au: "bk.au"; av: "bk.av"; aw: "bk.aw"; ax: "bk.ax"; ay: "bk.ay"; az: "bk.az"; ba: "bk.ba"; bb: "bk.bb"; bc: "bk.bc"; bd: "bk.bd"; be: "bk.be"; bf: "bk.bf"; bg: "bk.bg"; bh: "bk.bh"; bi: "bk.bi"; bj: "bk.bj"; bk: "bk.bk"; bl: "bk.bl"; bm: "bk.bm"; bn: "bk.bn"; bo: "bk.bo"; bp: "bk.bp"; bq: "bk.bq"; br: "bk.br"; bs: "bk.bs"; bt: "bk.bt"; bu: "bk.bu"; bv: "bk.bv"; bw: "bk.bw"; bx: "bk.bx"; by: "bk.by"; bz: "bk.bz"; ca: "bk.ca"; cb: "bk.cb"; cc: "bk.cc"; cd: "bk.cd"; ce: "bk.ce"; cf: "bk.cf"; cg: "bk.cg"; ch: "bk.ch"; ci: "bk.ci"; cj: "bk.cj"; ck: "bk.ck"; cl: "bk.cl"; cm: "bk.cm"; cn: "bk.cn"; co: "bk.co"; cp: "bk.cp"; cq: "bk.cq"; cr: "bk.cr"; cs: "bk.cs"; ct: "bk.ct"; cu: "bk.cu"; cv: "bk.cv"; cw: "bk.cw"; cx: "bk.cx"; cy: "bk.cy"; cz: "bk.cz"; da: "bk.da"; db: "bk.db"; dc: "bk.dc"; dd: "bk.dd"; de: "bk.de"; df: "bk.df"; dg: "bk.dg"; dh: "bk.dh"; di: "bk.di"; dj: "bk.dj"; dk: "bk.dk"; dl: "bk.dl"; dm: "bk.dm"; dn: "bk.dn"; do: "bk.do"; dp: "bk.dp"; dq: "bk.dq"; dr: "bk.dr"; ds: "bk.ds"; dt: "bk.dt"; du: "bk.du"; dv: "bk.dv"; dw: "bk.dw"; dx: "bk.dx"; dy: "bk.dy"; dz: "bk.dz"; ea: "bk.ea"; eb: "bk.eb"; ec: "bk.ec"; ed: "bk.ed"; ee: "bk.ee"; ef: "bk.ef"; eg: "bk.eg"; eh: "bk.eh"; ei: "bk.ei"; ej: "bk.ej"; ek: "bk.ek"; el: "bk.el"; em: "bk.em"; en: "bk.en"; eo: "bk.eo"; ep: "bk.ep"; eq: "bk.eq"; er: "bk.er"; es: "bk.es"; et: "bk.et"; eu: "bk.eu"; ev: "bk.ev"; ew: "bk.ew"; ex: "bk.ex"; ey: "bk.ey"; ez: "bk.ez"; fa: "bk.fa"; fb: "bk.fb"; fc: "bk.fc"; fd: "bk.fd"; fe: "bk.fe"; ff: "bk.ff"; fg: "bk.fg"; fh: "bk.fh"; fi: "bk.fi"; fj: "bk.fj"; fk: "bk.fk"; fl: "bk.fl"; fm: "bk.fm"; fn: "bk.fn"; fo: "bk.fo"; fp: "bk.fp"; fq: "bk.fq"; fr: "bk.fr"; fs: "bk.fs"; ft: "bk.ft"; fu: "bk.fu"; fv: "bk.fv"; fw: "bk.fw"; fx: "bk.fx"; fy: "bk.fy"; fz: "bk.fz"; ga: "bk.ga"; gb: "bk.gb"; gc: "bk.gc"; gd: "bk.gd"; ge: "bk.ge"; gf: "bk.gf"; gg: "bk.gg"; gh: "bk.gh"; gi: "bk.gi"; gj: "bk.gj"; gk: "bk.gk"; gl: "bk.gl"; gm: "bk.gm"; gn: "bk.gn"; go: "bk.go"; gp: "bk.gp"; gq: "bk.gq"; gr: "bk.gr"; gs: "bk.gs"; gt: "bk.gt"; gu: "bk.gu"; gv: "bk.gv"; gw: "bk.gw"; gx: "bk.gx"; gy: "bk.gy"; gz: "bk.gz"; ha: "bk.ha"; hb: "bk.hb"; hc: "bk.hc"; hd: "bk.hd"; he: "bk.he"; hf: "bk.hf"; hg: "bk.hg"; hh: "bk.hh"; hi: "bk.hi"; hj: "bk.hj"; hk: "bk.hk"; hl: "bk.hl"; hm: "bk.hm"; hn: "bk.hn"; ho: "bk.ho"; hp: "bk.hp"; hq: "bk.hq"; hr: "bk.hr"; hs: "bk.hs"; ht: "bk.ht"; hu: "bk.hu"; hv: "bk.hv"; hw: "bk.hw"; hx: "bk.hx"; hy: "bk.hy"; hz: "bk.hz"; ia: "bk.ia"; ib: "bk.ib"; ic: "bk.ic"; id: "bk.id"; ie: "bk.ie"; if: "bk.if"; ig: "bk.ig"; ih: "bk.ih"; ii: "bk.ii"; ij: "bk.ij"; ik: "bk.ik"; il: "bk.il"; im: "bk.im"; in: "bk.in"; io: "bk.io"; ip: "bk.ip"; iq: "bk.iq"; ir: "bk.ir"; is: "bk.is"; it: "bk.it"; iu: "bk.iu"; iv: "bk.iv"; iw: "bk.iw"; ix: "bk.ix"; iy: "bk.iy"; iz: "bk.iz"; ja: "bk.ja"; jb: "bk.jb"; jc: "bk.jc"; jd: "bk.jd"; je: "bk.je"; jf: "bk.jf"; jg: "bk.jg"; jh: "bk.jh"; ji: "bk.ji"; jj: "bk.jj"; jk: "bk.jk"; jl: "bk.jl"; jm: "bk.jm"; jn: "bk.jn"; jo: "bk.jo"; jp: "bk.jp"; jq: "bk.jq"; jr: "bk.jr"; js: "bk.js"; jt: "bk.jt"; ju: "bk.ju"; jv: "bk.jv"; jw: "bk.jw"; jx: "bk.jx"; jy: "bk.jy"; jz: "bk.jz"; ka: "bk.ka"; kb: "bk.kb"; kc: "bk.kc"; kd: "bk.kd"; ke: "bk.ke"; kf: "bk.kf"; kg: "bk.kg"; kh: "bk.kh"; ki: "bk.ki"; kj: "bk.kj"; kk: "bk.kk"; kl: "bk.kl"; km: "bk.km"; kn: "bk.kn"; ko: "bk.ko"; kp: "bk.kp"; kq: "bk.kq"; kr: "bk.kr"; ks: "bk.ks"; kt: "bk.kt"; ku: "bk.ku"; kv: "bk.kv"; kw: "bk.kw"; kx: "bk.kx"; ky: "bk.ky"; kz: "bk.kz"; la: "bk.la"; lb: "bk.lb"; lc: "bk.lc"; ld: "bk.ld"; le: "bk.le"; lf: "bk.lf"; lg: "bk.lg"; lh: "bk.lh"; li: "bk.li"; lj: "bk.lj"; lk: "bk.lk"; ll: "bk.ll"; lm: "bk.lm"; ln: "bk.ln"; lo: "bk.lo"; lp: "bk.lp"; lq: "bk.lq"; lr: "bk.lr"; ls: "bk.ls"; lt: "bk.lt"; lu: "bk.lu"; lv: "bk.lv"; lw: "bk.lw"; lx: "bk.lx"; ly: "bk.ly"; lz: "bk.lz"; ma: "bk.ma"; mb: "bk.mb"; mc: "bk.mc"; md: "bk.md"; me: "bk.me"; mf: "bk.mf"; mg: "bk.mg"; mh: "bk.mh"; mi: "bk.mi"; mj: "bk.mj"; mk: "bk.mk"; ml: "bk.ml"; mm: "bk.mm"; mn: "bk.mn"; mo: "bk.mo"; mp: "bk.mp"; mq: "bk.mq"; mr: "bk.mr"; ms: "bk.ms"; mt: "bk.mt"; mu: "bk.mu"; mv: "bk.mv"; mw: "bk.mw"; mx: "bk.mx"; my: "bk.my"; mz: "bk.mz"; na: "bk.na"; nb: "bk.nb"; nc: "bk.nc"; nd: "bk.nd"; ne: "bk.ne"; nf: "bk.nf"; ng: "bk.ng"; nh: "bk.nh"; ni: "bk.ni"; nj: "bk.nj"; nk: "bk.nk"; nl: "bk.nl"; nm: "bk.nm"; nn: "bk.nn"; no: "bk.no"; np: "bk.np"; nq: "bk.nq"; nr: "bk.nr"; ns: "bk.ns"; nt: "bk.nt"; nu: "bk.nu"; nv: "bk.nv"; nw: "bk.nw"; nx: "bk.nx"; ny: "bk.ny"; nz: "bk.nz"; oa: "bk.oa"; ob: "bk.ob"; oc: "bk.oc"; od: "bk.od"; oe: "bk.oe"; of: "bk.of"; og: "bk.og"; oh: "bk.oh"; oi: "bk.oi"; oj: "bk.oj"; ok: "bk.ok"; ol: "bk.ol"; om: "bk.om"; on: "bk.on"; oo: "bk.oo"; op: "bk.op"; oq: "bk.oq"; or: "bk.or"; os: "bk.os"; ot: "bk.ot"; ou: "bk.ou"; ov: "bk.ov"; ow: "bk.ow"; ox: "bk.ox"; oy: "bk.oy"; oz: "bk.oz"; pa: "bk.pa"; pb: "bk.pb"; pc: "bk.pc"; pd: "bk.pd"; pe: "bk.pe"; pf: "bk.pf"; pg: "bk.pg"; ph: "bk.ph"; pi: "bk.pi"; pj: "bk.pj"; pk: "bk.pk"; pl: "bk.pl"; pm: "bk.pm"; pn: "bk.pn"; po: "bk.po"; pp: "bk.pp"; pq: "bk.pq"; pr: "bk.pr"; ps: "bk.ps"; pt: "bk.pt"; pu: "bk.pu"; pv: "bk.pv"; pw: "bk.pw"; px: "bk.px"; py: "bk.py"; pz: "bk.pz"; qa: "bk.qa"; qb: "bk.qb"; qc: "bk.qc"; qd: "bk.qd"; qe: "bk.qe"; qf: "bk.qf"; qg: "bk.qg"; qh: "bk.qh"; qi: "bk.qi"; qj: "bk.qj"; qk: "bk.qk"; ql: "bk.ql"; qm: "bk.qm"; qn: "bk.qn"; qo: "bk.qo"; qp: "bk.qp"; qq: "bk.qq"; qr: "bk.qr"; qs: "bk.qs"; qt: "bk.qt"; qu: "bk.qu"; qv: "bk.qv"; qw: "bk.qw"; qx: "bk.qx"; qy: "bk.qy"; qz: "bk.qz"; ra: "bk.ra"; rb: "bk.rb"; rc: "bk.rc"; rd: "bk.rd"; re: "bk.re"; rf: "bk.rf"; rg: "bk.rg"; rh: "bk.rh"; ri: "bk.ri"; rj: "bk.rj"; rk: "bk.rk"; rl: "bk.rl"; rm: "bk.rm"; rn: "bk.rn"; ro: "bk.ro"; rp: "bk.rp"; rq: "bk.rq"; rr: "bk.rr"; rs: "bk.rs"; rt: "bk.rt"; ru: "bk.ru"; rv: "bk.rv"; rw: "bk.rw"; rx: "bk.rx"; ry: "bk.ry"; rz: "bk.rz"; sa: "bk.sa"; sb: "bk.sb"; sc: "bk.sc"; sd: "bk.sd"; se: "bk.se"; sf: "bk.sf"; sg: "bk.sg"; sh: "bk.sh"; si: "bk.si"; sj: "bk.sj"; sk: "bk.sk"; sl: "bk.sl"; sm: "bk.sm"; sn: "bk.sn"; so: "bk.so"; sp: "bk.sp"; sq: "bk.sq"; sr: "bk.sr"; ss: "bk.ss"; st: "bk.st"; su: "bk.su"; sv: "bk.sv"; sw: "bk.sw"; sx: "bk.sx"; sy: "bk.sy"; sz: "bk.sz"; ta: "bk.ta"; tb: "bk.tb"; tc: "bk.tc"; td: "bk.td"; te: "bk.te"; tf: "bk.tf"; tg: "bk.tg"; th: "bk.th"; ti: "bk.ti"; tj: "bk.tj"; tk: "bk.tk"; tl: "bk.tl"; tm: "bk.tm"; tn: "bk.tn"; to: "bk.to"; tp: "bk.tp"; tq: "bk.tq"; tr: "bk.tr"; ts: "bk.ts"; tt: "bk.tt"; tu: "bk.tu"; tv: "bk.tv"; tw: "bk.tw"; tx: "bk.tx"; ty: "bk.ty"; tz: "bk.tz"; ua: "bk.ua"; ub: "bk.ub"; uc: "bk.uc"; ud: "bk.ud"; ue: "bk.ue"; uf: "bk.uf"; ug: "bk.ug"; uh: "bk.uh"; ui: "bk.ui"; uj: "bk.uj"; uk: "bk.uk"; ul: "bk.ul"; um: "bk.um"; un: "bk.un"; uo: "bk.uo"; up: "bk.up"; uq: "bk.uq"; ur: "bk.ur"; us: "bk.us"; ut: "bk.ut"; uu: "bk.uu"; uv: "bk.uv"; uw: "bk.uw"; ux: "bk.ux"; uy: "bk.uy"; uz: "bk.uz"; va: "bk.va"; vb: "bk.vb"; vc: "bk.vc"; vd: "bk.vd"; ve: "bk.ve"; vf: "bk.vf"; vg: "bk.vg"; vh: "bk.vh"; vi: "bk.vi"; vj: "bk.vj"; vk: "bk.vk"; vl: "bk.vl"; vm: "bk.vm"; vn: "bk.vn"; vo: "bk.vo"; vp: "bk.vp"; vq: "bk.vq"; vr: "bk.vr"; vs: "bk.vs"; vt: "bk.vt"; vu: "bk.vu"; vv: "bk.vv"; vw: "bk.vw"; vx: "bk.vx"; vy: "bk.vy"; vz: "bk.vz"; wa: "bk.wa"; wb: "bk.wb"; wc: "bk.wc"; wd: "bk.wd"; we: "bk.we"; wf: "bk.wf"; wg: "bk.wg"; wh: "bk.wh"; wi: "bk.wi"; wj: "bk.wj"; wk: "bk.wk"; wl: "bk.wl"; wm: "bk.wm"; wn: "bk.wn"; wo: "bk.wo"; wp: "bk.wp"; wq: "bk.wq"; wr: "bk.wr"; ws: "bk.ws"; wt: "bk.wt"; wu: "bk.wu"; wv: "bk.wv"; ww: "bk.ww"; wx: "bk.wx"; wy: "bk.wy"; wz: "bk.wz"; xa: "bk.xa"; xb: "bk.xb"; xc: "bk.xc"; xd: "bk.xd"; xe: "bk.xe"; xf: "bk.xf"; xg: "bk.xg"; xh: "bk.xh"; xi: "bk.xi"; xj: "bk.xj"; xk: "bk.xk"; xl: "bk.xl"; xm: "bk.xm"; xn: "bk.xn"; xo: "bk.xo"; xp: "bk.xp"; xq: "bk.xq"; xr: "bk.xr"; xs: "bk.xs"; xt: "bk.xt"; xu: "bk.xu"; xv: "bk.xv"; xw: "bk.xw"; xx: "bk.xx"; xy: "bk.xy"; xz: "bk.xz"; ya: "bk.ya"; yb: "bk.yb"; yc: "bk.yc"; yd: "bk.yd"; ye: "bk.ye"; yf: "bk.yf"; yg: "bk.yg"; yh: "bk.yh"; yi: "bk.yi"; yj: "bk.yj"; yk: "bk.yk"; yl: "bk.yl"; ym: "bk.ym"; yn: "bk.yn"; yo: "bk.yo"; yp: "bk.yp"; yq: "bk.yq"; yr: "bk.yr"; ys: "bk.ys"; yt: "bk.yt"; yu: "bk.yu"; yv: "bk.yv"; yw: "bk.yw"; yx: "bk.yx"; yy: "bk.yy"; yz: "bk.yz"; za: "bk.za"; zb: "bk.zb"; zc: "bk.zc"; zd: "bk.zd"; ze: "bk.ze"; zf: "bk.zf"; zg: "bk.zg"; zh: "bk.zh"; zi: "bk.zi"; zj: "bk.zj"; zk: "bk.zk"; zl: "bk.zl"; zm: "bk.zm"; zn: "bk.zn"; zo: "bk.zo"; zp: "bk.zp"; zq: "bk.zq"; zr: "bk.zr"; zs: "bk.zs"; zt: "bk.zt"; zu: "bk.zu"; zv: "bk.zv"; zw: "bk.zw"; zx: "bk.zx"; zy: "bk.zy"; zz: "bk.zz"; }; bl: { aa: "bl.aa"; ab: "bl.ab"; ac: "bl.ac"; ad: "bl.ad"; ae: "bl.ae"; af: "bl.af"; ag: "bl.ag"; ah: "bl.ah"; ai: "bl.ai"; aj: "bl.aj"; ak: "bl.ak"; al: "bl.al"; am: "bl.am"; an: "bl.an"; ao: "bl.ao"; ap: "bl.ap"; aq: "bl.aq"; ar: "bl.ar"; as: "bl.as"; at: "bl.at"; au: "bl.au"; av: "bl.av"; aw: "bl.aw"; ax: "bl.ax"; ay: "bl.ay"; az: "bl.az"; ba: "bl.ba"; bb: "bl.bb"; bc: "bl.bc"; bd: "bl.bd"; be: "bl.be"; bf: "bl.bf"; bg: "bl.bg"; bh: "bl.bh"; bi: "bl.bi"; bj: "bl.bj"; bk: "bl.bk"; bl: "bl.bl"; bm: "bl.bm"; bn: "bl.bn"; bo: "bl.bo"; bp: "bl.bp"; bq: "bl.bq"; br: "bl.br"; bs: "bl.bs"; bt: "bl.bt"; bu: "bl.bu"; bv: "bl.bv"; bw: "bl.bw"; bx: "bl.bx"; by: "bl.by"; bz: "bl.bz"; ca: "bl.ca"; cb: "bl.cb"; cc: "bl.cc"; cd: "bl.cd"; ce: "bl.ce"; cf: "bl.cf"; cg: "bl.cg"; ch: "bl.ch"; ci: "bl.ci"; cj: "bl.cj"; ck: "bl.ck"; cl: "bl.cl"; cm: "bl.cm"; cn: "bl.cn"; co: "bl.co"; cp: "bl.cp"; cq: "bl.cq"; cr: "bl.cr"; cs: "bl.cs"; ct: "bl.ct"; cu: "bl.cu"; cv: "bl.cv"; cw: "bl.cw"; cx: "bl.cx"; cy: "bl.cy"; cz: "bl.cz"; da: "bl.da"; db: "bl.db"; dc: "bl.dc"; dd: "bl.dd"; de: "bl.de"; df: "bl.df"; dg: "bl.dg"; dh: "bl.dh"; di: "bl.di"; dj: "bl.dj"; dk: "bl.dk"; dl: "bl.dl"; dm: "bl.dm"; dn: "bl.dn"; do: "bl.do"; dp: "bl.dp"; dq: "bl.dq"; dr: "bl.dr"; ds: "bl.ds"; dt: "bl.dt"; du: "bl.du"; dv: "bl.dv"; dw: "bl.dw"; dx: "bl.dx"; dy: "bl.dy"; dz: "bl.dz"; ea: "bl.ea"; eb: "bl.eb"; ec: "bl.ec"; ed: "bl.ed"; ee: "bl.ee"; ef: "bl.ef"; eg: "bl.eg"; eh: "bl.eh"; ei: "bl.ei"; ej: "bl.ej"; ek: "bl.ek"; el: "bl.el"; em: "bl.em"; en: "bl.en"; eo: "bl.eo"; ep: "bl.ep"; eq: "bl.eq"; er: "bl.er"; es: "bl.es"; et: "bl.et"; eu: "bl.eu"; ev: "bl.ev"; ew: "bl.ew"; ex: "bl.ex"; ey: "bl.ey"; ez: "bl.ez"; fa: "bl.fa"; fb: "bl.fb"; fc: "bl.fc"; fd: "bl.fd"; fe: "bl.fe"; ff: "bl.ff"; fg: "bl.fg"; fh: "bl.fh"; fi: "bl.fi"; fj: "bl.fj"; fk: "bl.fk"; fl: "bl.fl"; fm: "bl.fm"; fn: "bl.fn"; fo: "bl.fo"; fp: "bl.fp"; fq: "bl.fq"; fr: "bl.fr"; fs: "bl.fs"; ft: "bl.ft"; fu: "bl.fu"; fv: "bl.fv"; fw: "bl.fw"; fx: "bl.fx"; fy: "bl.fy"; fz: "bl.fz"; ga: "bl.ga"; gb: "bl.gb"; gc: "bl.gc"; gd: "bl.gd"; ge: "bl.ge"; gf: "bl.gf"; gg: "bl.gg"; gh: "bl.gh"; gi: "bl.gi"; gj: "bl.gj"; gk: "bl.gk"; gl: "bl.gl"; gm: "bl.gm"; gn: "bl.gn"; go: "bl.go"; gp: "bl.gp"; gq: "bl.gq"; gr: "bl.gr"; gs: "bl.gs"; gt: "bl.gt"; gu: "bl.gu"; gv: "bl.gv"; gw: "bl.gw"; gx: "bl.gx"; gy: "bl.gy"; gz: "bl.gz"; ha: "bl.ha"; hb: "bl.hb"; hc: "bl.hc"; hd: "bl.hd"; he: "bl.he"; hf: "bl.hf"; hg: "bl.hg"; hh: "bl.hh"; hi: "bl.hi"; hj: "bl.hj"; hk: "bl.hk"; hl: "bl.hl"; hm: "bl.hm"; hn: "bl.hn"; ho: "bl.ho"; hp: "bl.hp"; hq: "bl.hq"; hr: "bl.hr"; hs: "bl.hs"; ht: "bl.ht"; hu: "bl.hu"; hv: "bl.hv"; hw: "bl.hw"; hx: "bl.hx"; hy: "bl.hy"; hz: "bl.hz"; ia: "bl.ia"; ib: "bl.ib"; ic: "bl.ic"; id: "bl.id"; ie: "bl.ie"; if: "bl.if"; ig: "bl.ig"; ih: "bl.ih"; ii: "bl.ii"; ij: "bl.ij"; ik: "bl.ik"; il: "bl.il"; im: "bl.im"; in: "bl.in"; io: "bl.io"; ip: "bl.ip"; iq: "bl.iq"; ir: "bl.ir"; is: "bl.is"; it: "bl.it"; iu: "bl.iu"; iv: "bl.iv"; iw: "bl.iw"; ix: "bl.ix"; iy: "bl.iy"; iz: "bl.iz"; ja: "bl.ja"; jb: "bl.jb"; jc: "bl.jc"; jd: "bl.jd"; je: "bl.je"; jf: "bl.jf"; jg: "bl.jg"; jh: "bl.jh"; ji: "bl.ji"; jj: "bl.jj"; jk: "bl.jk"; jl: "bl.jl"; jm: "bl.jm"; jn: "bl.jn"; jo: "bl.jo"; jp: "bl.jp"; jq: "bl.jq"; jr: "bl.jr"; js: "bl.js"; jt: "bl.jt"; ju: "bl.ju"; jv: "bl.jv"; jw: "bl.jw"; jx: "bl.jx"; jy: "bl.jy"; jz: "bl.jz"; ka: "bl.ka"; kb: "bl.kb"; kc: "bl.kc"; kd: "bl.kd"; ke: "bl.ke"; kf: "bl.kf"; kg: "bl.kg"; kh: "bl.kh"; ki: "bl.ki"; kj: "bl.kj"; kk: "bl.kk"; kl: "bl.kl"; km: "bl.km"; kn: "bl.kn"; ko: "bl.ko"; kp: "bl.kp"; kq: "bl.kq"; kr: "bl.kr"; ks: "bl.ks"; kt: "bl.kt"; ku: "bl.ku"; kv: "bl.kv"; kw: "bl.kw"; kx: "bl.kx"; ky: "bl.ky"; kz: "bl.kz"; la: "bl.la"; lb: "bl.lb"; lc: "bl.lc"; ld: "bl.ld"; le: "bl.le"; lf: "bl.lf"; lg: "bl.lg"; lh: "bl.lh"; li: "bl.li"; lj: "bl.lj"; lk: "bl.lk"; ll: "bl.ll"; lm: "bl.lm"; ln: "bl.ln"; lo: "bl.lo"; lp: "bl.lp"; lq: "bl.lq"; lr: "bl.lr"; ls: "bl.ls"; lt: "bl.lt"; lu: "bl.lu"; lv: "bl.lv"; lw: "bl.lw"; lx: "bl.lx"; ly: "bl.ly"; lz: "bl.lz"; ma: "bl.ma"; mb: "bl.mb"; mc: "bl.mc"; md: "bl.md"; me: "bl.me"; mf: "bl.mf"; mg: "bl.mg"; mh: "bl.mh"; mi: "bl.mi"; mj: "bl.mj"; mk: "bl.mk"; ml: "bl.ml"; mm: "bl.mm"; mn: "bl.mn"; mo: "bl.mo"; mp: "bl.mp"; mq: "bl.mq"; mr: "bl.mr"; ms: "bl.ms"; mt: "bl.mt"; mu: "bl.mu"; mv: "bl.mv"; mw: "bl.mw"; mx: "bl.mx"; my: "bl.my"; mz: "bl.mz"; na: "bl.na"; nb: "bl.nb"; nc: "bl.nc"; nd: "bl.nd"; ne: "bl.ne"; nf: "bl.nf"; ng: "bl.ng"; nh: "bl.nh"; ni: "bl.ni"; nj: "bl.nj"; nk: "bl.nk"; nl: "bl.nl"; nm: "bl.nm"; nn: "bl.nn"; no: "bl.no"; np: "bl.np"; nq: "bl.nq"; nr: "bl.nr"; ns: "bl.ns"; nt: "bl.nt"; nu: "bl.nu"; nv: "bl.nv"; nw: "bl.nw"; nx: "bl.nx"; ny: "bl.ny"; nz: "bl.nz"; oa: "bl.oa"; ob: "bl.ob"; oc: "bl.oc"; od: "bl.od"; oe: "bl.oe"; of: "bl.of"; og: "bl.og"; oh: "bl.oh"; oi: "bl.oi"; oj: "bl.oj"; ok: "bl.ok"; ol: "bl.ol"; om: "bl.om"; on: "bl.on"; oo: "bl.oo"; op: "bl.op"; oq: "bl.oq"; or: "bl.or"; os: "bl.os"; ot: "bl.ot"; ou: "bl.ou"; ov: "bl.ov"; ow: "bl.ow"; ox: "bl.ox"; oy: "bl.oy"; oz: "bl.oz"; pa: "bl.pa"; pb: "bl.pb"; pc: "bl.pc"; pd: "bl.pd"; pe: "bl.pe"; pf: "bl.pf"; pg: "bl.pg"; ph: "bl.ph"; pi: "bl.pi"; pj: "bl.pj"; pk: "bl.pk"; pl: "bl.pl"; pm: "bl.pm"; pn: "bl.pn"; po: "bl.po"; pp: "bl.pp"; pq: "bl.pq"; pr: "bl.pr"; ps: "bl.ps"; pt: "bl.pt"; pu: "bl.pu"; pv: "bl.pv"; pw: "bl.pw"; px: "bl.px"; py: "bl.py"; pz: "bl.pz"; qa: "bl.qa"; qb: "bl.qb"; qc: "bl.qc"; qd: "bl.qd"; qe: "bl.qe"; qf: "bl.qf"; qg: "bl.qg"; qh: "bl.qh"; qi: "bl.qi"; qj: "bl.qj"; qk: "bl.qk"; ql: "bl.ql"; qm: "bl.qm"; qn: "bl.qn"; qo: "bl.qo"; qp: "bl.qp"; qq: "bl.qq"; qr: "bl.qr"; qs: "bl.qs"; qt: "bl.qt"; qu: "bl.qu"; qv: "bl.qv"; qw: "bl.qw"; qx: "bl.qx"; qy: "bl.qy"; qz: "bl.qz"; ra: "bl.ra"; rb: "bl.rb"; rc: "bl.rc"; rd: "bl.rd"; re: "bl.re"; rf: "bl.rf"; rg: "bl.rg"; rh: "bl.rh"; ri: "bl.ri"; rj: "bl.rj"; rk: "bl.rk"; rl: "bl.rl"; rm: "bl.rm"; rn: "bl.rn"; ro: "bl.ro"; rp: "bl.rp"; rq: "bl.rq"; rr: "bl.rr"; rs: "bl.rs"; rt: "bl.rt"; ru: "bl.ru"; rv: "bl.rv"; rw: "bl.rw"; rx: "bl.rx"; ry: "bl.ry"; rz: "bl.rz"; sa: "bl.sa"; sb: "bl.sb"; sc: "bl.sc"; sd: "bl.sd"; se: "bl.se"; sf: "bl.sf"; sg: "bl.sg"; sh: "bl.sh"; si: "bl.si"; sj: "bl.sj"; sk: "bl.sk"; sl: "bl.sl"; sm: "bl.sm"; sn: "bl.sn"; so: "bl.so"; sp: "bl.sp"; sq: "bl.sq"; sr: "bl.sr"; ss: "bl.ss"; st: "bl.st"; su: "bl.su"; sv: "bl.sv"; sw: "bl.sw"; sx: "bl.sx"; sy: "bl.sy"; sz: "bl.sz"; ta: "bl.ta"; tb: "bl.tb"; tc: "bl.tc"; td: "bl.td"; te: "bl.te"; tf: "bl.tf"; tg: "bl.tg"; th: "bl.th"; ti: "bl.ti"; tj: "bl.tj"; tk: "bl.tk"; tl: "bl.tl"; tm: "bl.tm"; tn: "bl.tn"; to: "bl.to"; tp: "bl.tp"; tq: "bl.tq"; tr: "bl.tr"; ts: "bl.ts"; tt: "bl.tt"; tu: "bl.tu"; tv: "bl.tv"; tw: "bl.tw"; tx: "bl.tx"; ty: "bl.ty"; tz: "bl.tz"; ua: "bl.ua"; ub: "bl.ub"; uc: "bl.uc"; ud: "bl.ud"; ue: "bl.ue"; uf: "bl.uf"; ug: "bl.ug"; uh: "bl.uh"; ui: "bl.ui"; uj: "bl.uj"; uk: "bl.uk"; ul: "bl.ul"; um: "bl.um"; un: "bl.un"; uo: "bl.uo"; up: "bl.up"; uq: "bl.uq"; ur: "bl.ur"; us: "bl.us"; ut: "bl.ut"; uu: "bl.uu"; uv: "bl.uv"; uw: "bl.uw"; ux: "bl.ux"; uy: "bl.uy"; uz: "bl.uz"; va: "bl.va"; vb: "bl.vb"; vc: "bl.vc"; vd: "bl.vd"; ve: "bl.ve"; vf: "bl.vf"; vg: "bl.vg"; vh: "bl.vh"; vi: "bl.vi"; vj: "bl.vj"; vk: "bl.vk"; vl: "bl.vl"; vm: "bl.vm"; vn: "bl.vn"; vo: "bl.vo"; vp: "bl.vp"; vq: "bl.vq"; vr: "bl.vr"; vs: "bl.vs"; vt: "bl.vt"; vu: "bl.vu"; vv: "bl.vv"; vw: "bl.vw"; vx: "bl.vx"; vy: "bl.vy"; vz: "bl.vz"; wa: "bl.wa"; wb: "bl.wb"; wc: "bl.wc"; wd: "bl.wd"; we: "bl.we"; wf: "bl.wf"; wg: "bl.wg"; wh: "bl.wh"; wi: "bl.wi"; wj: "bl.wj"; wk: "bl.wk"; wl: "bl.wl"; wm: "bl.wm"; wn: "bl.wn"; wo: "bl.wo"; wp: "bl.wp"; wq: "bl.wq"; wr: "bl.wr"; ws: "bl.ws"; wt: "bl.wt"; wu: "bl.wu"; wv: "bl.wv"; ww: "bl.ww"; wx: "bl.wx"; wy: "bl.wy"; wz: "bl.wz"; xa: "bl.xa"; xb: "bl.xb"; xc: "bl.xc"; xd: "bl.xd"; xe: "bl.xe"; xf: "bl.xf"; xg: "bl.xg"; xh: "bl.xh"; xi: "bl.xi"; xj: "bl.xj"; xk: "bl.xk"; xl: "bl.xl"; xm: "bl.xm"; xn: "bl.xn"; xo: "bl.xo"; xp: "bl.xp"; xq: "bl.xq"; xr: "bl.xr"; xs: "bl.xs"; xt: "bl.xt"; xu: "bl.xu"; xv: "bl.xv"; xw: "bl.xw"; xx: "bl.xx"; xy: "bl.xy"; xz: "bl.xz"; ya: "bl.ya"; yb: "bl.yb"; yc: "bl.yc"; yd: "bl.yd"; ye: "bl.ye"; yf: "bl.yf"; yg: "bl.yg"; yh: "bl.yh"; yi: "bl.yi"; yj: "bl.yj"; yk: "bl.yk"; yl: "bl.yl"; ym: "bl.ym"; yn: "bl.yn"; yo: "bl.yo"; yp: "bl.yp"; yq: "bl.yq"; yr: "bl.yr"; ys: "bl.ys"; yt: "bl.yt"; yu: "bl.yu"; yv: "bl.yv"; yw: "bl.yw"; yx: "bl.yx"; yy: "bl.yy"; yz: "bl.yz"; za: "bl.za"; zb: "bl.zb"; zc: "bl.zc"; zd: "bl.zd"; ze: "bl.ze"; zf: "bl.zf"; zg: "bl.zg"; zh: "bl.zh"; zi: "bl.zi"; zj: "bl.zj"; zk: "bl.zk"; zl: "bl.zl"; zm: "bl.zm"; zn: "bl.zn"; zo: "bl.zo"; zp: "bl.zp"; zq: "bl.zq"; zr: "bl.zr"; zs: "bl.zs"; zt: "bl.zt"; zu: "bl.zu"; zv: "bl.zv"; zw: "bl.zw"; zx: "bl.zx"; zy: "bl.zy"; zz: "bl.zz"; }; bm: { aa: "bm.aa"; ab: "bm.ab"; ac: "bm.ac"; ad: "bm.ad"; ae: "bm.ae"; af: "bm.af"; ag: "bm.ag"; ah: "bm.ah"; ai: "bm.ai"; aj: "bm.aj"; ak: "bm.ak"; al: "bm.al"; am: "bm.am"; an: "bm.an"; ao: "bm.ao"; ap: "bm.ap"; aq: "bm.aq"; ar: "bm.ar"; as: "bm.as"; at: "bm.at"; au: "bm.au"; av: "bm.av"; aw: "bm.aw"; ax: "bm.ax"; ay: "bm.ay"; az: "bm.az"; ba: "bm.ba"; bb: "bm.bb"; bc: "bm.bc"; bd: "bm.bd"; be: "bm.be"; bf: "bm.bf"; bg: "bm.bg"; bh: "bm.bh"; bi: "bm.bi"; bj: "bm.bj"; bk: "bm.bk"; bl: "bm.bl"; bm: "bm.bm"; bn: "bm.bn"; bo: "bm.bo"; bp: "bm.bp"; bq: "bm.bq"; br: "bm.br"; bs: "bm.bs"; bt: "bm.bt"; bu: "bm.bu"; bv: "bm.bv"; bw: "bm.bw"; bx: "bm.bx"; by: "bm.by"; bz: "bm.bz"; ca: "bm.ca"; cb: "bm.cb"; cc: "bm.cc"; cd: "bm.cd"; ce: "bm.ce"; cf: "bm.cf"; cg: "bm.cg"; ch: "bm.ch"; ci: "bm.ci"; cj: "bm.cj"; ck: "bm.ck"; cl: "bm.cl"; cm: "bm.cm"; cn: "bm.cn"; co: "bm.co"; cp: "bm.cp"; cq: "bm.cq"; cr: "bm.cr"; cs: "bm.cs"; ct: "bm.ct"; cu: "bm.cu"; cv: "bm.cv"; cw: "bm.cw"; cx: "bm.cx"; cy: "bm.cy"; cz: "bm.cz"; da: "bm.da"; db: "bm.db"; dc: "bm.dc"; dd: "bm.dd"; de: "bm.de"; df: "bm.df"; dg: "bm.dg"; dh: "bm.dh"; di: "bm.di"; dj: "bm.dj"; dk: "bm.dk"; dl: "bm.dl"; dm: "bm.dm"; dn: "bm.dn"; do: "bm.do"; dp: "bm.dp"; dq: "bm.dq"; dr: "bm.dr"; ds: "bm.ds"; dt: "bm.dt"; du: "bm.du"; dv: "bm.dv"; dw: "bm.dw"; dx: "bm.dx"; dy: "bm.dy"; dz: "bm.dz"; ea: "bm.ea"; eb: "bm.eb"; ec: "bm.ec"; ed: "bm.ed"; ee: "bm.ee"; ef: "bm.ef"; eg: "bm.eg"; eh: "bm.eh"; ei: "bm.ei"; ej: "bm.ej"; ek: "bm.ek"; el: "bm.el"; em: "bm.em"; en: "bm.en"; eo: "bm.eo"; ep: "bm.ep"; eq: "bm.eq"; er: "bm.er"; es: "bm.es"; et: "bm.et"; eu: "bm.eu"; ev: "bm.ev"; ew: "bm.ew"; ex: "bm.ex"; ey: "bm.ey"; ez: "bm.ez"; fa: "bm.fa"; fb: "bm.fb"; fc: "bm.fc"; fd: "bm.fd"; fe: "bm.fe"; ff: "bm.ff"; fg: "bm.fg"; fh: "bm.fh"; fi: "bm.fi"; fj: "bm.fj"; fk: "bm.fk"; fl: "bm.fl"; fm: "bm.fm"; fn: "bm.fn"; fo: "bm.fo"; fp: "bm.fp"; fq: "bm.fq"; fr: "bm.fr"; fs: "bm.fs"; ft: "bm.ft"; fu: "bm.fu"; fv: "bm.fv"; fw: "bm.fw"; fx: "bm.fx"; fy: "bm.fy"; fz: "bm.fz"; ga: "bm.ga"; gb: "bm.gb"; gc: "bm.gc"; gd: "bm.gd"; ge: "bm.ge"; gf: "bm.gf"; gg: "bm.gg"; gh: "bm.gh"; gi: "bm.gi"; gj: "bm.gj"; gk: "bm.gk"; gl: "bm.gl"; gm: "bm.gm"; gn: "bm.gn"; go: "bm.go"; gp: "bm.gp"; gq: "bm.gq"; gr: "bm.gr"; gs: "bm.gs"; gt: "bm.gt"; gu: "bm.gu"; gv: "bm.gv"; gw: "bm.gw"; gx: "bm.gx"; gy: "bm.gy"; gz: "bm.gz"; ha: "bm.ha"; hb: "bm.hb"; hc: "bm.hc"; hd: "bm.hd"; he: "bm.he"; hf: "bm.hf"; hg: "bm.hg"; hh: "bm.hh"; hi: "bm.hi"; hj: "bm.hj"; hk: "bm.hk"; hl: "bm.hl"; hm: "bm.hm"; hn: "bm.hn"; ho: "bm.ho"; hp: "bm.hp"; hq: "bm.hq"; hr: "bm.hr"; hs: "bm.hs"; ht: "bm.ht"; hu: "bm.hu"; hv: "bm.hv"; hw: "bm.hw"; hx: "bm.hx"; hy: "bm.hy"; hz: "bm.hz"; ia: "bm.ia"; ib: "bm.ib"; ic: "bm.ic"; id: "bm.id"; ie: "bm.ie"; if: "bm.if"; ig: "bm.ig"; ih: "bm.ih"; ii: "bm.ii"; ij: "bm.ij"; ik: "bm.ik"; il: "bm.il"; im: "bm.im"; in: "bm.in"; io: "bm.io"; ip: "bm.ip"; iq: "bm.iq"; ir: "bm.ir"; is: "bm.is"; it: "bm.it"; iu: "bm.iu"; iv: "bm.iv"; iw: "bm.iw"; ix: "bm.ix"; iy: "bm.iy"; iz: "bm.iz"; ja: "bm.ja"; jb: "bm.jb"; jc: "bm.jc"; jd: "bm.jd"; je: "bm.je"; jf: "bm.jf"; jg: "bm.jg"; jh: "bm.jh"; ji: "bm.ji"; jj: "bm.jj"; jk: "bm.jk"; jl: "bm.jl"; jm: "bm.jm"; jn: "bm.jn"; jo: "bm.jo"; jp: "bm.jp"; jq: "bm.jq"; jr: "bm.jr"; js: "bm.js"; jt: "bm.jt"; ju: "bm.ju"; jv: "bm.jv"; jw: "bm.jw"; jx: "bm.jx"; jy: "bm.jy"; jz: "bm.jz"; ka: "bm.ka"; kb: "bm.kb"; kc: "bm.kc"; kd: "bm.kd"; ke: "bm.ke"; kf: "bm.kf"; kg: "bm.kg"; kh: "bm.kh"; ki: "bm.ki"; kj: "bm.kj"; kk: "bm.kk"; kl: "bm.kl"; km: "bm.km"; kn: "bm.kn"; ko: "bm.ko"; kp: "bm.kp"; kq: "bm.kq"; kr: "bm.kr"; ks: "bm.ks"; kt: "bm.kt"; ku: "bm.ku"; kv: "bm.kv"; kw: "bm.kw"; kx: "bm.kx"; ky: "bm.ky"; kz: "bm.kz"; la: "bm.la"; lb: "bm.lb"; lc: "bm.lc"; ld: "bm.ld"; le: "bm.le"; lf: "bm.lf"; lg: "bm.lg"; lh: "bm.lh"; li: "bm.li"; lj: "bm.lj"; lk: "bm.lk"; ll: "bm.ll"; lm: "bm.lm"; ln: "bm.ln"; lo: "bm.lo"; lp: "bm.lp"; lq: "bm.lq"; lr: "bm.lr"; ls: "bm.ls"; lt: "bm.lt"; lu: "bm.lu"; lv: "bm.lv"; lw: "bm.lw"; lx: "bm.lx"; ly: "bm.ly"; lz: "bm.lz"; ma: "bm.ma"; mb: "bm.mb"; mc: "bm.mc"; md: "bm.md"; me: "bm.me"; mf: "bm.mf"; mg: "bm.mg"; mh: "bm.mh"; mi: "bm.mi"; mj: "bm.mj"; mk: "bm.mk"; ml: "bm.ml"; mm: "bm.mm"; mn: "bm.mn"; mo: "bm.mo"; mp: "bm.mp"; mq: "bm.mq"; mr: "bm.mr"; ms: "bm.ms"; mt: "bm.mt"; mu: "bm.mu"; mv: "bm.mv"; mw: "bm.mw"; mx: "bm.mx"; my: "bm.my"; mz: "bm.mz"; na: "bm.na"; nb: "bm.nb"; nc: "bm.nc"; nd: "bm.nd"; ne: "bm.ne"; nf: "bm.nf"; ng: "bm.ng"; nh: "bm.nh"; ni: "bm.ni"; nj: "bm.nj"; nk: "bm.nk"; nl: "bm.nl"; nm: "bm.nm"; nn: "bm.nn"; no: "bm.no"; np: "bm.np"; nq: "bm.nq"; nr: "bm.nr"; ns: "bm.ns"; nt: "bm.nt"; nu: "bm.nu"; nv: "bm.nv"; nw: "bm.nw"; nx: "bm.nx"; ny: "bm.ny"; nz: "bm.nz"; oa: "bm.oa"; ob: "bm.ob"; oc: "bm.oc"; od: "bm.od"; oe: "bm.oe"; of: "bm.of"; og: "bm.og"; oh: "bm.oh"; oi: "bm.oi"; oj: "bm.oj"; ok: "bm.ok"; ol: "bm.ol"; om: "bm.om"; on: "bm.on"; oo: "bm.oo"; op: "bm.op"; oq: "bm.oq"; or: "bm.or"; os: "bm.os"; ot: "bm.ot"; ou: "bm.ou"; ov: "bm.ov"; ow: "bm.ow"; ox: "bm.ox"; oy: "bm.oy"; oz: "bm.oz"; pa: "bm.pa"; pb: "bm.pb"; pc: "bm.pc"; pd: "bm.pd"; pe: "bm.pe"; pf: "bm.pf"; pg: "bm.pg"; ph: "bm.ph"; pi: "bm.pi"; pj: "bm.pj"; pk: "bm.pk"; pl: "bm.pl"; pm: "bm.pm"; pn: "bm.pn"; po: "bm.po"; pp: "bm.pp"; pq: "bm.pq"; pr: "bm.pr"; ps: "bm.ps"; pt: "bm.pt"; pu: "bm.pu"; pv: "bm.pv"; pw: "bm.pw"; px: "bm.px"; py: "bm.py"; pz: "bm.pz"; qa: "bm.qa"; qb: "bm.qb"; qc: "bm.qc"; qd: "bm.qd"; qe: "bm.qe"; qf: "bm.qf"; qg: "bm.qg"; qh: "bm.qh"; qi: "bm.qi"; qj: "bm.qj"; qk: "bm.qk"; ql: "bm.ql"; qm: "bm.qm"; qn: "bm.qn"; qo: "bm.qo"; qp: "bm.qp"; qq: "bm.qq"; qr: "bm.qr"; qs: "bm.qs"; qt: "bm.qt"; qu: "bm.qu"; qv: "bm.qv"; qw: "bm.qw"; qx: "bm.qx"; qy: "bm.qy"; qz: "bm.qz"; ra: "bm.ra"; rb: "bm.rb"; rc: "bm.rc"; rd: "bm.rd"; re: "bm.re"; rf: "bm.rf"; rg: "bm.rg"; rh: "bm.rh"; ri: "bm.ri"; rj: "bm.rj"; rk: "bm.rk"; rl: "bm.rl"; rm: "bm.rm"; rn: "bm.rn"; ro: "bm.ro"; rp: "bm.rp"; rq: "bm.rq"; rr: "bm.rr"; rs: "bm.rs"; rt: "bm.rt"; ru: "bm.ru"; rv: "bm.rv"; rw: "bm.rw"; rx: "bm.rx"; ry: "bm.ry"; rz: "bm.rz"; sa: "bm.sa"; sb: "bm.sb"; sc: "bm.sc"; sd: "bm.sd"; se: "bm.se"; sf: "bm.sf"; sg: "bm.sg"; sh: "bm.sh"; si: "bm.si"; sj: "bm.sj"; sk: "bm.sk"; sl: "bm.sl"; sm: "bm.sm"; sn: "bm.sn"; so: "bm.so"; sp: "bm.sp"; sq: "bm.sq"; sr: "bm.sr"; ss: "bm.ss"; st: "bm.st"; su: "bm.su"; sv: "bm.sv"; sw: "bm.sw"; sx: "bm.sx"; sy: "bm.sy"; sz: "bm.sz"; ta: "bm.ta"; tb: "bm.tb"; tc: "bm.tc"; td: "bm.td"; te: "bm.te"; tf: "bm.tf"; tg: "bm.tg"; th: "bm.th"; ti: "bm.ti"; tj: "bm.tj"; tk: "bm.tk"; tl: "bm.tl"; tm: "bm.tm"; tn: "bm.tn"; to: "bm.to"; tp: "bm.tp"; tq: "bm.tq"; tr: "bm.tr"; ts: "bm.ts"; tt: "bm.tt"; tu: "bm.tu"; tv: "bm.tv"; tw: "bm.tw"; tx: "bm.tx"; ty: "bm.ty"; tz: "bm.tz"; ua: "bm.ua"; ub: "bm.ub"; uc: "bm.uc"; ud: "bm.ud"; ue: "bm.ue"; uf: "bm.uf"; ug: "bm.ug"; uh: "bm.uh"; ui: "bm.ui"; uj: "bm.uj"; uk: "bm.uk"; ul: "bm.ul"; um: "bm.um"; un: "bm.un"; uo: "bm.uo"; up: "bm.up"; uq: "bm.uq"; ur: "bm.ur"; us: "bm.us"; ut: "bm.ut"; uu: "bm.uu"; uv: "bm.uv"; uw: "bm.uw"; ux: "bm.ux"; uy: "bm.uy"; uz: "bm.uz"; va: "bm.va"; vb: "bm.vb"; vc: "bm.vc"; vd: "bm.vd"; ve: "bm.ve"; vf: "bm.vf"; vg: "bm.vg"; vh: "bm.vh"; vi: "bm.vi"; vj: "bm.vj"; vk: "bm.vk"; vl: "bm.vl"; vm: "bm.vm"; vn: "bm.vn"; vo: "bm.vo"; vp: "bm.vp"; vq: "bm.vq"; vr: "bm.vr"; vs: "bm.vs"; vt: "bm.vt"; vu: "bm.vu"; vv: "bm.vv"; vw: "bm.vw"; vx: "bm.vx"; vy: "bm.vy"; vz: "bm.vz"; wa: "bm.wa"; wb: "bm.wb"; wc: "bm.wc"; wd: "bm.wd"; we: "bm.we"; wf: "bm.wf"; wg: "bm.wg"; wh: "bm.wh"; wi: "bm.wi"; wj: "bm.wj"; wk: "bm.wk"; wl: "bm.wl"; wm: "bm.wm"; wn: "bm.wn"; wo: "bm.wo"; wp: "bm.wp"; wq: "bm.wq"; wr: "bm.wr"; ws: "bm.ws"; wt: "bm.wt"; wu: "bm.wu"; wv: "bm.wv"; ww: "bm.ww"; wx: "bm.wx"; wy: "bm.wy"; wz: "bm.wz"; xa: "bm.xa"; xb: "bm.xb"; xc: "bm.xc"; xd: "bm.xd"; xe: "bm.xe"; xf: "bm.xf"; xg: "bm.xg"; xh: "bm.xh"; xi: "bm.xi"; xj: "bm.xj"; xk: "bm.xk"; xl: "bm.xl"; xm: "bm.xm"; xn: "bm.xn"; xo: "bm.xo"; xp: "bm.xp"; xq: "bm.xq"; xr: "bm.xr"; xs: "bm.xs"; xt: "bm.xt"; xu: "bm.xu"; xv: "bm.xv"; xw: "bm.xw"; xx: "bm.xx"; xy: "bm.xy"; xz: "bm.xz"; ya: "bm.ya"; yb: "bm.yb"; yc: "bm.yc"; yd: "bm.yd"; ye: "bm.ye"; yf: "bm.yf"; yg: "bm.yg"; yh: "bm.yh"; yi: "bm.yi"; yj: "bm.yj"; yk: "bm.yk"; yl: "bm.yl"; ym: "bm.ym"; yn: "bm.yn"; yo: "bm.yo"; yp: "bm.yp"; yq: "bm.yq"; yr: "bm.yr"; ys: "bm.ys"; yt: "bm.yt"; yu: "bm.yu"; yv: "bm.yv"; yw: "bm.yw"; yx: "bm.yx"; yy: "bm.yy"; yz: "bm.yz"; za: "bm.za"; zb: "bm.zb"; zc: "bm.zc"; zd: "bm.zd"; ze: "bm.ze"; zf: "bm.zf"; zg: "bm.zg"; zh: "bm.zh"; zi: "bm.zi"; zj: "bm.zj"; zk: "bm.zk"; zl: "bm.zl"; zm: "bm.zm"; zn: "bm.zn"; zo: "bm.zo"; zp: "bm.zp"; zq: "bm.zq"; zr: "bm.zr"; zs: "bm.zs"; zt: "bm.zt"; zu: "bm.zu"; zv: "bm.zv"; zw: "bm.zw"; zx: "bm.zx"; zy: "bm.zy"; zz: "bm.zz"; }; bn: { aa: "bn.aa"; ab: "bn.ab"; ac: "bn.ac"; ad: "bn.ad"; ae: "bn.ae"; af: "bn.af"; ag: "bn.ag"; ah: "bn.ah"; ai: "bn.ai"; aj: "bn.aj"; ak: "bn.ak"; al: "bn.al"; am: "bn.am"; an: "bn.an"; ao: "bn.ao"; ap: "bn.ap"; aq: "bn.aq"; ar: "bn.ar"; as: "bn.as"; at: "bn.at"; au: "bn.au"; av: "bn.av"; aw: "bn.aw"; ax: "bn.ax"; ay: "bn.ay"; az: "bn.az"; ba: "bn.ba"; bb: "bn.bb"; bc: "bn.bc"; bd: "bn.bd"; be: "bn.be"; bf: "bn.bf"; bg: "bn.bg"; bh: "bn.bh"; bi: "bn.bi"; bj: "bn.bj"; bk: "bn.bk"; bl: "bn.bl"; bm: "bn.bm"; bn: "bn.bn"; bo: "bn.bo"; bp: "bn.bp"; bq: "bn.bq"; br: "bn.br"; bs: "bn.bs"; bt: "bn.bt"; bu: "bn.bu"; bv: "bn.bv"; bw: "bn.bw"; bx: "bn.bx"; by: "bn.by"; bz: "bn.bz"; ca: "bn.ca"; cb: "bn.cb"; cc: "bn.cc"; cd: "bn.cd"; ce: "bn.ce"; cf: "bn.cf"; cg: "bn.cg"; ch: "bn.ch"; ci: "bn.ci"; cj: "bn.cj"; ck: "bn.ck"; cl: "bn.cl"; cm: "bn.cm"; cn: "bn.cn"; co: "bn.co"; cp: "bn.cp"; cq: "bn.cq"; cr: "bn.cr"; cs: "bn.cs"; ct: "bn.ct"; cu: "bn.cu"; cv: "bn.cv"; cw: "bn.cw"; cx: "bn.cx"; cy: "bn.cy"; cz: "bn.cz"; da: "bn.da"; db: "bn.db"; dc: "bn.dc"; dd: "bn.dd"; de: "bn.de"; df: "bn.df"; dg: "bn.dg"; dh: "bn.dh"; di: "bn.di"; dj: "bn.dj"; dk: "bn.dk"; dl: "bn.dl"; dm: "bn.dm"; dn: "bn.dn"; do: "bn.do"; dp: "bn.dp"; dq: "bn.dq"; dr: "bn.dr"; ds: "bn.ds"; dt: "bn.dt"; du: "bn.du"; dv: "bn.dv"; dw: "bn.dw"; dx: "bn.dx"; dy: "bn.dy"; dz: "bn.dz"; ea: "bn.ea"; eb: "bn.eb"; ec: "bn.ec"; ed: "bn.ed"; ee: "bn.ee"; ef: "bn.ef"; eg: "bn.eg"; eh: "bn.eh"; ei: "bn.ei"; ej: "bn.ej"; ek: "bn.ek"; el: "bn.el"; em: "bn.em"; en: "bn.en"; eo: "bn.eo"; ep: "bn.ep"; eq: "bn.eq"; er: "bn.er"; es: "bn.es"; et: "bn.et"; eu: "bn.eu"; ev: "bn.ev"; ew: "bn.ew"; ex: "bn.ex"; ey: "bn.ey"; ez: "bn.ez"; fa: "bn.fa"; fb: "bn.fb"; fc: "bn.fc"; fd: "bn.fd"; fe: "bn.fe"; ff: "bn.ff"; fg: "bn.fg"; fh: "bn.fh"; fi: "bn.fi"; fj: "bn.fj"; fk: "bn.fk"; fl: "bn.fl"; fm: "bn.fm"; fn: "bn.fn"; fo: "bn.fo"; fp: "bn.fp"; fq: "bn.fq"; fr: "bn.fr"; fs: "bn.fs"; ft: "bn.ft"; fu: "bn.fu"; fv: "bn.fv"; fw: "bn.fw"; fx: "bn.fx"; fy: "bn.fy"; fz: "bn.fz"; ga: "bn.ga"; gb: "bn.gb"; gc: "bn.gc"; gd: "bn.gd"; ge: "bn.ge"; gf: "bn.gf"; gg: "bn.gg"; gh: "bn.gh"; gi: "bn.gi"; gj: "bn.gj"; gk: "bn.gk"; gl: "bn.gl"; gm: "bn.gm"; gn: "bn.gn"; go: "bn.go"; gp: "bn.gp"; gq: "bn.gq"; gr: "bn.gr"; gs: "bn.gs"; gt: "bn.gt"; gu: "bn.gu"; gv: "bn.gv"; gw: "bn.gw"; gx: "bn.gx"; gy: "bn.gy"; gz: "bn.gz"; ha: "bn.ha"; hb: "bn.hb"; hc: "bn.hc"; hd: "bn.hd"; he: "bn.he"; hf: "bn.hf"; hg: "bn.hg"; hh: "bn.hh"; hi: "bn.hi"; hj: "bn.hj"; hk: "bn.hk"; hl: "bn.hl"; hm: "bn.hm"; hn: "bn.hn"; ho: "bn.ho"; hp: "bn.hp"; hq: "bn.hq"; hr: "bn.hr"; hs: "bn.hs"; ht: "bn.ht"; hu: "bn.hu"; hv: "bn.hv"; hw: "bn.hw"; hx: "bn.hx"; hy: "bn.hy"; hz: "bn.hz"; ia: "bn.ia"; ib: "bn.ib"; ic: "bn.ic"; id: "bn.id"; ie: "bn.ie"; if: "bn.if"; ig: "bn.ig"; ih: "bn.ih"; ii: "bn.ii"; ij: "bn.ij"; ik: "bn.ik"; il: "bn.il"; im: "bn.im"; in: "bn.in"; io: "bn.io"; ip: "bn.ip"; iq: "bn.iq"; ir: "bn.ir"; is: "bn.is"; it: "bn.it"; iu: "bn.iu"; iv: "bn.iv"; iw: "bn.iw"; ix: "bn.ix"; iy: "bn.iy"; iz: "bn.iz"; ja: "bn.ja"; jb: "bn.jb"; jc: "bn.jc"; jd: "bn.jd"; je: "bn.je"; jf: "bn.jf"; jg: "bn.jg"; jh: "bn.jh"; ji: "bn.ji"; jj: "bn.jj"; jk: "bn.jk"; jl: "bn.jl"; jm: "bn.jm"; jn: "bn.jn"; jo: "bn.jo"; jp: "bn.jp"; jq: "bn.jq"; jr: "bn.jr"; js: "bn.js"; jt: "bn.jt"; ju: "bn.ju"; jv: "bn.jv"; jw: "bn.jw"; jx: "bn.jx"; jy: "bn.jy"; jz: "bn.jz"; ka: "bn.ka"; kb: "bn.kb"; kc: "bn.kc"; kd: "bn.kd"; ke: "bn.ke"; kf: "bn.kf"; kg: "bn.kg"; kh: "bn.kh"; ki: "bn.ki"; kj: "bn.kj"; kk: "bn.kk"; kl: "bn.kl"; km: "bn.km"; kn: "bn.kn"; ko: "bn.ko"; kp: "bn.kp"; kq: "bn.kq"; kr: "bn.kr"; ks: "bn.ks"; kt: "bn.kt"; ku: "bn.ku"; kv: "bn.kv"; kw: "bn.kw"; kx: "bn.kx"; ky: "bn.ky"; kz: "bn.kz"; la: "bn.la"; lb: "bn.lb"; lc: "bn.lc"; ld: "bn.ld"; le: "bn.le"; lf: "bn.lf"; lg: "bn.lg"; lh: "bn.lh"; li: "bn.li"; lj: "bn.lj"; lk: "bn.lk"; ll: "bn.ll"; lm: "bn.lm"; ln: "bn.ln"; lo: "bn.lo"; lp: "bn.lp"; lq: "bn.lq"; lr: "bn.lr"; ls: "bn.ls"; lt: "bn.lt"; lu: "bn.lu"; lv: "bn.lv"; lw: "bn.lw"; lx: "bn.lx"; ly: "bn.ly"; lz: "bn.lz"; ma: "bn.ma"; mb: "bn.mb"; mc: "bn.mc"; md: "bn.md"; me: "bn.me"; mf: "bn.mf"; mg: "bn.mg"; mh: "bn.mh"; mi: "bn.mi"; mj: "bn.mj"; mk: "bn.mk"; ml: "bn.ml"; mm: "bn.mm"; mn: "bn.mn"; mo: "bn.mo"; mp: "bn.mp"; mq: "bn.mq"; mr: "bn.mr"; ms: "bn.ms"; mt: "bn.mt"; mu: "bn.mu"; mv: "bn.mv"; mw: "bn.mw"; mx: "bn.mx"; my: "bn.my"; mz: "bn.mz"; na: "bn.na"; nb: "bn.nb"; nc: "bn.nc"; nd: "bn.nd"; ne: "bn.ne"; nf: "bn.nf"; ng: "bn.ng"; nh: "bn.nh"; ni: "bn.ni"; nj: "bn.nj"; nk: "bn.nk"; nl: "bn.nl"; nm: "bn.nm"; nn: "bn.nn"; no: "bn.no"; np: "bn.np"; nq: "bn.nq"; nr: "bn.nr"; ns: "bn.ns"; nt: "bn.nt"; nu: "bn.nu"; nv: "bn.nv"; nw: "bn.nw"; nx: "bn.nx"; ny: "bn.ny"; nz: "bn.nz"; oa: "bn.oa"; ob: "bn.ob"; oc: "bn.oc"; od: "bn.od"; oe: "bn.oe"; of: "bn.of"; og: "bn.og"; oh: "bn.oh"; oi: "bn.oi"; oj: "bn.oj"; ok: "bn.ok"; ol: "bn.ol"; om: "bn.om"; on: "bn.on"; oo: "bn.oo"; op: "bn.op"; oq: "bn.oq"; or: "bn.or"; os: "bn.os"; ot: "bn.ot"; ou: "bn.ou"; ov: "bn.ov"; ow: "bn.ow"; ox: "bn.ox"; oy: "bn.oy"; oz: "bn.oz"; pa: "bn.pa"; pb: "bn.pb"; pc: "bn.pc"; pd: "bn.pd"; pe: "bn.pe"; pf: "bn.pf"; pg: "bn.pg"; ph: "bn.ph"; pi: "bn.pi"; pj: "bn.pj"; pk: "bn.pk"; pl: "bn.pl"; pm: "bn.pm"; pn: "bn.pn"; po: "bn.po"; pp: "bn.pp"; pq: "bn.pq"; pr: "bn.pr"; ps: "bn.ps"; pt: "bn.pt"; pu: "bn.pu"; pv: "bn.pv"; pw: "bn.pw"; px: "bn.px"; py: "bn.py"; pz: "bn.pz"; qa: "bn.qa"; qb: "bn.qb"; qc: "bn.qc"; qd: "bn.qd"; qe: "bn.qe"; qf: "bn.qf"; qg: "bn.qg"; qh: "bn.qh"; qi: "bn.qi"; qj: "bn.qj"; qk: "bn.qk"; ql: "bn.ql"; qm: "bn.qm"; qn: "bn.qn"; qo: "bn.qo"; qp: "bn.qp"; qq: "bn.qq"; qr: "bn.qr"; qs: "bn.qs"; qt: "bn.qt"; qu: "bn.qu"; qv: "bn.qv"; qw: "bn.qw"; qx: "bn.qx"; qy: "bn.qy"; qz: "bn.qz"; ra: "bn.ra"; rb: "bn.rb"; rc: "bn.rc"; rd: "bn.rd"; re: "bn.re"; rf: "bn.rf"; rg: "bn.rg"; rh: "bn.rh"; ri: "bn.ri"; rj: "bn.rj"; rk: "bn.rk"; rl: "bn.rl"; rm: "bn.rm"; rn: "bn.rn"; ro: "bn.ro"; rp: "bn.rp"; rq: "bn.rq"; rr: "bn.rr"; rs: "bn.rs"; rt: "bn.rt"; ru: "bn.ru"; rv: "bn.rv"; rw: "bn.rw"; rx: "bn.rx"; ry: "bn.ry"; rz: "bn.rz"; sa: "bn.sa"; sb: "bn.sb"; sc: "bn.sc"; sd: "bn.sd"; se: "bn.se"; sf: "bn.sf"; sg: "bn.sg"; sh: "bn.sh"; si: "bn.si"; sj: "bn.sj"; sk: "bn.sk"; sl: "bn.sl"; sm: "bn.sm"; sn: "bn.sn"; so: "bn.so"; sp: "bn.sp"; sq: "bn.sq"; sr: "bn.sr"; ss: "bn.ss"; st: "bn.st"; su: "bn.su"; sv: "bn.sv"; sw: "bn.sw"; sx: "bn.sx"; sy: "bn.sy"; sz: "bn.sz"; ta: "bn.ta"; tb: "bn.tb"; tc: "bn.tc"; td: "bn.td"; te: "bn.te"; tf: "bn.tf"; tg: "bn.tg"; th: "bn.th"; ti: "bn.ti"; tj: "bn.tj"; tk: "bn.tk"; tl: "bn.tl"; tm: "bn.tm"; tn: "bn.tn"; to: "bn.to"; tp: "bn.tp"; tq: "bn.tq"; tr: "bn.tr"; ts: "bn.ts"; tt: "bn.tt"; tu: "bn.tu"; tv: "bn.tv"; tw: "bn.tw"; tx: "bn.tx"; ty: "bn.ty"; tz: "bn.tz"; ua: "bn.ua"; ub: "bn.ub"; uc: "bn.uc"; ud: "bn.ud"; ue: "bn.ue"; uf: "bn.uf"; ug: "bn.ug"; uh: "bn.uh"; ui: "bn.ui"; uj: "bn.uj"; uk: "bn.uk"; ul: "bn.ul"; um: "bn.um"; un: "bn.un"; uo: "bn.uo"; up: "bn.up"; uq: "bn.uq"; ur: "bn.ur"; us: "bn.us"; ut: "bn.ut"; uu: "bn.uu"; uv: "bn.uv"; uw: "bn.uw"; ux: "bn.ux"; uy: "bn.uy"; uz: "bn.uz"; va: "bn.va"; vb: "bn.vb"; vc: "bn.vc"; vd: "bn.vd"; ve: "bn.ve"; vf: "bn.vf"; vg: "bn.vg"; vh: "bn.vh"; vi: "bn.vi"; vj: "bn.vj"; vk: "bn.vk"; vl: "bn.vl"; vm: "bn.vm"; vn: "bn.vn"; vo: "bn.vo"; vp: "bn.vp"; vq: "bn.vq"; vr: "bn.vr"; vs: "bn.vs"; vt: "bn.vt"; vu: "bn.vu"; vv: "bn.vv"; vw: "bn.vw"; vx: "bn.vx"; vy: "bn.vy"; vz: "bn.vz"; wa: "bn.wa"; wb: "bn.wb"; wc: "bn.wc"; wd: "bn.wd"; we: "bn.we"; wf: "bn.wf"; wg: "bn.wg"; wh: "bn.wh"; wi: "bn.wi"; wj: "bn.wj"; wk: "bn.wk"; wl: "bn.wl"; wm: "bn.wm"; wn: "bn.wn"; wo: "bn.wo"; wp: "bn.wp"; wq: "bn.wq"; wr: "bn.wr"; ws: "bn.ws"; wt: "bn.wt"; wu: "bn.wu"; wv: "bn.wv"; ww: "bn.ww"; wx: "bn.wx"; wy: "bn.wy"; wz: "bn.wz"; xa: "bn.xa"; xb: "bn.xb"; xc: "bn.xc"; xd: "bn.xd"; xe: "bn.xe"; xf: "bn.xf"; xg: "bn.xg"; xh: "bn.xh"; xi: "bn.xi"; xj: "bn.xj"; xk: "bn.xk"; xl: "bn.xl"; xm: "bn.xm"; xn: "bn.xn"; xo: "bn.xo"; xp: "bn.xp"; xq: "bn.xq"; xr: "bn.xr"; xs: "bn.xs"; xt: "bn.xt"; xu: "bn.xu"; xv: "bn.xv"; xw: "bn.xw"; xx: "bn.xx"; xy: "bn.xy"; xz: "bn.xz"; ya: "bn.ya"; yb: "bn.yb"; yc: "bn.yc"; yd: "bn.yd"; ye: "bn.ye"; yf: "bn.yf"; yg: "bn.yg"; yh: "bn.yh"; yi: "bn.yi"; yj: "bn.yj"; yk: "bn.yk"; yl: "bn.yl"; ym: "bn.ym"; yn: "bn.yn"; yo: "bn.yo"; yp: "bn.yp"; yq: "bn.yq"; yr: "bn.yr"; ys: "bn.ys"; yt: "bn.yt"; yu: "bn.yu"; yv: "bn.yv"; yw: "bn.yw"; yx: "bn.yx"; yy: "bn.yy"; yz: "bn.yz"; za: "bn.za"; zb: "bn.zb"; zc: "bn.zc"; zd: "bn.zd"; ze: "bn.ze"; zf: "bn.zf"; zg: "bn.zg"; zh: "bn.zh"; zi: "bn.zi"; zj: "bn.zj"; zk: "bn.zk"; zl: "bn.zl"; zm: "bn.zm"; zn: "bn.zn"; zo: "bn.zo"; zp: "bn.zp"; zq: "bn.zq"; zr: "bn.zr"; zs: "bn.zs"; zt: "bn.zt"; zu: "bn.zu"; zv: "bn.zv"; zw: "bn.zw"; zx: "bn.zx"; zy: "bn.zy"; zz: "bn.zz"; }; bo: { aa: "bo.aa"; ab: "bo.ab"; ac: "bo.ac"; ad: "bo.ad"; ae: "bo.ae"; af: "bo.af"; ag: "bo.ag"; ah: "bo.ah"; ai: "bo.ai"; aj: "bo.aj"; ak: "bo.ak"; al: "bo.al"; am: "bo.am"; an: "bo.an"; ao: "bo.ao"; ap: "bo.ap"; aq: "bo.aq"; ar: "bo.ar"; as: "bo.as"; at: "bo.at"; au: "bo.au"; av: "bo.av"; aw: "bo.aw"; ax: "bo.ax"; ay: "bo.ay"; az: "bo.az"; ba: "bo.ba"; bb: "bo.bb"; bc: "bo.bc"; bd: "bo.bd"; be: "bo.be"; bf: "bo.bf"; bg: "bo.bg"; bh: "bo.bh"; bi: "bo.bi"; bj: "bo.bj"; bk: "bo.bk"; bl: "bo.bl"; bm: "bo.bm"; bn: "bo.bn"; bo: "bo.bo"; bp: "bo.bp"; bq: "bo.bq"; br: "bo.br"; bs: "bo.bs"; bt: "bo.bt"; bu: "bo.bu"; bv: "bo.bv"; bw: "bo.bw"; bx: "bo.bx"; by: "bo.by"; bz: "bo.bz"; ca: "bo.ca"; cb: "bo.cb"; cc: "bo.cc"; cd: "bo.cd"; ce: "bo.ce"; cf: "bo.cf"; cg: "bo.cg"; ch: "bo.ch"; ci: "bo.ci"; cj: "bo.cj"; ck: "bo.ck"; cl: "bo.cl"; cm: "bo.cm"; cn: "bo.cn"; co: "bo.co"; cp: "bo.cp"; cq: "bo.cq"; cr: "bo.cr"; cs: "bo.cs"; ct: "bo.ct"; cu: "bo.cu"; cv: "bo.cv"; cw: "bo.cw"; cx: "bo.cx"; cy: "bo.cy"; cz: "bo.cz"; da: "bo.da"; db: "bo.db"; dc: "bo.dc"; dd: "bo.dd"; de: "bo.de"; df: "bo.df"; dg: "bo.dg"; dh: "bo.dh"; di: "bo.di"; dj: "bo.dj"; dk: "bo.dk"; dl: "bo.dl"; dm: "bo.dm"; dn: "bo.dn"; do: "bo.do"; dp: "bo.dp"; dq: "bo.dq"; dr: "bo.dr"; ds: "bo.ds"; dt: "bo.dt"; du: "bo.du"; dv: "bo.dv"; dw: "bo.dw"; dx: "bo.dx"; dy: "bo.dy"; dz: "bo.dz"; ea: "bo.ea"; eb: "bo.eb"; ec: "bo.ec"; ed: "bo.ed"; ee: "bo.ee"; ef: "bo.ef"; eg: "bo.eg"; eh: "bo.eh"; ei: "bo.ei"; ej: "bo.ej"; ek: "bo.ek"; el: "bo.el"; em: "bo.em"; en: "bo.en"; eo: "bo.eo"; ep: "bo.ep"; eq: "bo.eq"; er: "bo.er"; es: "bo.es"; et: "bo.et"; eu: "bo.eu"; ev: "bo.ev"; ew: "bo.ew"; ex: "bo.ex"; ey: "bo.ey"; ez: "bo.ez"; fa: "bo.fa"; fb: "bo.fb"; fc: "bo.fc"; fd: "bo.fd"; fe: "bo.fe"; ff: "bo.ff"; fg: "bo.fg"; fh: "bo.fh"; fi: "bo.fi"; fj: "bo.fj"; fk: "bo.fk"; fl: "bo.fl"; fm: "bo.fm"; fn: "bo.fn"; fo: "bo.fo"; fp: "bo.fp"; fq: "bo.fq"; fr: "bo.fr"; fs: "bo.fs"; ft: "bo.ft"; fu: "bo.fu"; fv: "bo.fv"; fw: "bo.fw"; fx: "bo.fx"; fy: "bo.fy"; fz: "bo.fz"; ga: "bo.ga"; gb: "bo.gb"; gc: "bo.gc"; gd: "bo.gd"; ge: "bo.ge"; gf: "bo.gf"; gg: "bo.gg"; gh: "bo.gh"; gi: "bo.gi"; gj: "bo.gj"; gk: "bo.gk"; gl: "bo.gl"; gm: "bo.gm"; gn: "bo.gn"; go: "bo.go"; gp: "bo.gp"; gq: "bo.gq"; gr: "bo.gr"; gs: "bo.gs"; gt: "bo.gt"; gu: "bo.gu"; gv: "bo.gv"; gw: "bo.gw"; gx: "bo.gx"; gy: "bo.gy"; gz: "bo.gz"; ha: "bo.ha"; hb: "bo.hb"; hc: "bo.hc"; hd: "bo.hd"; he: "bo.he"; hf: "bo.hf"; hg: "bo.hg"; hh: "bo.hh"; hi: "bo.hi"; hj: "bo.hj"; hk: "bo.hk"; hl: "bo.hl"; hm: "bo.hm"; hn: "bo.hn"; ho: "bo.ho"; hp: "bo.hp"; hq: "bo.hq"; hr: "bo.hr"; hs: "bo.hs"; ht: "bo.ht"; hu: "bo.hu"; hv: "bo.hv"; hw: "bo.hw"; hx: "bo.hx"; hy: "bo.hy"; hz: "bo.hz"; ia: "bo.ia"; ib: "bo.ib"; ic: "bo.ic"; id: "bo.id"; ie: "bo.ie"; if: "bo.if"; ig: "bo.ig"; ih: "bo.ih"; ii: "bo.ii"; ij: "bo.ij"; ik: "bo.ik"; il: "bo.il"; im: "bo.im"; in: "bo.in"; io: "bo.io"; ip: "bo.ip"; iq: "bo.iq"; ir: "bo.ir"; is: "bo.is"; it: "bo.it"; iu: "bo.iu"; iv: "bo.iv"; iw: "bo.iw"; ix: "bo.ix"; iy: "bo.iy"; iz: "bo.iz"; ja: "bo.ja"; jb: "bo.jb"; jc: "bo.jc"; jd: "bo.jd"; je: "bo.je"; jf: "bo.jf"; jg: "bo.jg"; jh: "bo.jh"; ji: "bo.ji"; jj: "bo.jj"; jk: "bo.jk"; jl: "bo.jl"; jm: "bo.jm"; jn: "bo.jn"; jo: "bo.jo"; jp: "bo.jp"; jq: "bo.jq"; jr: "bo.jr"; js: "bo.js"; jt: "bo.jt"; ju: "bo.ju"; jv: "bo.jv"; jw: "bo.jw"; jx: "bo.jx"; jy: "bo.jy"; jz: "bo.jz"; ka: "bo.ka"; kb: "bo.kb"; kc: "bo.kc"; kd: "bo.kd"; ke: "bo.ke"; kf: "bo.kf"; kg: "bo.kg"; kh: "bo.kh"; ki: "bo.ki"; kj: "bo.kj"; kk: "bo.kk"; kl: "bo.kl"; km: "bo.km"; kn: "bo.kn"; ko: "bo.ko"; kp: "bo.kp"; kq: "bo.kq"; kr: "bo.kr"; ks: "bo.ks"; kt: "bo.kt"; ku: "bo.ku"; kv: "bo.kv"; kw: "bo.kw"; kx: "bo.kx"; ky: "bo.ky"; kz: "bo.kz"; la: "bo.la"; lb: "bo.lb"; lc: "bo.lc"; ld: "bo.ld"; le: "bo.le"; lf: "bo.lf"; lg: "bo.lg"; lh: "bo.lh"; li: "bo.li"; lj: "bo.lj"; lk: "bo.lk"; ll: "bo.ll"; lm: "bo.lm"; ln: "bo.ln"; lo: "bo.lo"; lp: "bo.lp"; lq: "bo.lq"; lr: "bo.lr"; ls: "bo.ls"; lt: "bo.lt"; lu: "bo.lu"; lv: "bo.lv"; lw: "bo.lw"; lx: "bo.lx"; ly: "bo.ly"; lz: "bo.lz"; ma: "bo.ma"; mb: "bo.mb"; mc: "bo.mc"; md: "bo.md"; me: "bo.me"; mf: "bo.mf"; mg: "bo.mg"; mh: "bo.mh"; mi: "bo.mi"; mj: "bo.mj"; mk: "bo.mk"; ml: "bo.ml"; mm: "bo.mm"; mn: "bo.mn"; mo: "bo.mo"; mp: "bo.mp"; mq: "bo.mq"; mr: "bo.mr"; ms: "bo.ms"; mt: "bo.mt"; mu: "bo.mu"; mv: "bo.mv"; mw: "bo.mw"; mx: "bo.mx"; my: "bo.my"; mz: "bo.mz"; na: "bo.na"; nb: "bo.nb"; nc: "bo.nc"; nd: "bo.nd"; ne: "bo.ne"; nf: "bo.nf"; ng: "bo.ng"; nh: "bo.nh"; ni: "bo.ni"; nj: "bo.nj"; nk: "bo.nk"; nl: "bo.nl"; nm: "bo.nm"; nn: "bo.nn"; no: "bo.no"; np: "bo.np"; nq: "bo.nq"; nr: "bo.nr"; ns: "bo.ns"; nt: "bo.nt"; nu: "bo.nu"; nv: "bo.nv"; nw: "bo.nw"; nx: "bo.nx"; ny: "bo.ny"; nz: "bo.nz"; oa: "bo.oa"; ob: "bo.ob"; oc: "bo.oc"; od: "bo.od"; oe: "bo.oe"; of: "bo.of"; og: "bo.og"; oh: "bo.oh"; oi: "bo.oi"; oj: "bo.oj"; ok: "bo.ok"; ol: "bo.ol"; om: "bo.om"; on: "bo.on"; oo: "bo.oo"; op: "bo.op"; oq: "bo.oq"; or: "bo.or"; os: "bo.os"; ot: "bo.ot"; ou: "bo.ou"; ov: "bo.ov"; ow: "bo.ow"; ox: "bo.ox"; oy: "bo.oy"; oz: "bo.oz"; pa: "bo.pa"; pb: "bo.pb"; pc: "bo.pc"; pd: "bo.pd"; pe: "bo.pe"; pf: "bo.pf"; pg: "bo.pg"; ph: "bo.ph"; pi: "bo.pi"; pj: "bo.pj"; pk: "bo.pk"; pl: "bo.pl"; pm: "bo.pm"; pn: "bo.pn"; po: "bo.po"; pp: "bo.pp"; pq: "bo.pq"; pr: "bo.pr"; ps: "bo.ps"; pt: "bo.pt"; pu: "bo.pu"; pv: "bo.pv"; pw: "bo.pw"; px: "bo.px"; py: "bo.py"; pz: "bo.pz"; qa: "bo.qa"; qb: "bo.qb"; qc: "bo.qc"; qd: "bo.qd"; qe: "bo.qe"; qf: "bo.qf"; qg: "bo.qg"; qh: "bo.qh"; qi: "bo.qi"; qj: "bo.qj"; qk: "bo.qk"; ql: "bo.ql"; qm: "bo.qm"; qn: "bo.qn"; qo: "bo.qo"; qp: "bo.qp"; qq: "bo.qq"; qr: "bo.qr"; qs: "bo.qs"; qt: "bo.qt"; qu: "bo.qu"; qv: "bo.qv"; qw: "bo.qw"; qx: "bo.qx"; qy: "bo.qy"; qz: "bo.qz"; ra: "bo.ra"; rb: "bo.rb"; rc: "bo.rc"; rd: "bo.rd"; re: "bo.re"; rf: "bo.rf"; rg: "bo.rg"; rh: "bo.rh"; ri: "bo.ri"; rj: "bo.rj"; rk: "bo.rk"; rl: "bo.rl"; rm: "bo.rm"; rn: "bo.rn"; ro: "bo.ro"; rp: "bo.rp"; rq: "bo.rq"; rr: "bo.rr"; rs: "bo.rs"; rt: "bo.rt"; ru: "bo.ru"; rv: "bo.rv"; rw: "bo.rw"; rx: "bo.rx"; ry: "bo.ry"; rz: "bo.rz"; sa: "bo.sa"; sb: "bo.sb"; sc: "bo.sc"; sd: "bo.sd"; se: "bo.se"; sf: "bo.sf"; sg: "bo.sg"; sh: "bo.sh"; si: "bo.si"; sj: "bo.sj"; sk: "bo.sk"; sl: "bo.sl"; sm: "bo.sm"; sn: "bo.sn"; so: "bo.so"; sp: "bo.sp"; sq: "bo.sq"; sr: "bo.sr"; ss: "bo.ss"; st: "bo.st"; su: "bo.su"; sv: "bo.sv"; sw: "bo.sw"; sx: "bo.sx"; sy: "bo.sy"; sz: "bo.sz"; ta: "bo.ta"; tb: "bo.tb"; tc: "bo.tc"; td: "bo.td"; te: "bo.te"; tf: "bo.tf"; tg: "bo.tg"; th: "bo.th"; ti: "bo.ti"; tj: "bo.tj"; tk: "bo.tk"; tl: "bo.tl"; tm: "bo.tm"; tn: "bo.tn"; to: "bo.to"; tp: "bo.tp"; tq: "bo.tq"; tr: "bo.tr"; ts: "bo.ts"; tt: "bo.tt"; tu: "bo.tu"; tv: "bo.tv"; tw: "bo.tw"; tx: "bo.tx"; ty: "bo.ty"; tz: "bo.tz"; ua: "bo.ua"; ub: "bo.ub"; uc: "bo.uc"; ud: "bo.ud"; ue: "bo.ue"; uf: "bo.uf"; ug: "bo.ug"; uh: "bo.uh"; ui: "bo.ui"; uj: "bo.uj"; uk: "bo.uk"; ul: "bo.ul"; um: "bo.um"; un: "bo.un"; uo: "bo.uo"; up: "bo.up"; uq: "bo.uq"; ur: "bo.ur"; us: "bo.us"; ut: "bo.ut"; uu: "bo.uu"; uv: "bo.uv"; uw: "bo.uw"; ux: "bo.ux"; uy: "bo.uy"; uz: "bo.uz"; va: "bo.va"; vb: "bo.vb"; vc: "bo.vc"; vd: "bo.vd"; ve: "bo.ve"; vf: "bo.vf"; vg: "bo.vg"; vh: "bo.vh"; vi: "bo.vi"; vj: "bo.vj"; vk: "bo.vk"; vl: "bo.vl"; vm: "bo.vm"; vn: "bo.vn"; vo: "bo.vo"; vp: "bo.vp"; vq: "bo.vq"; vr: "bo.vr"; vs: "bo.vs"; vt: "bo.vt"; vu: "bo.vu"; vv: "bo.vv"; vw: "bo.vw"; vx: "bo.vx"; vy: "bo.vy"; vz: "bo.vz"; wa: "bo.wa"; wb: "bo.wb"; wc: "bo.wc"; wd: "bo.wd"; we: "bo.we"; wf: "bo.wf"; wg: "bo.wg"; wh: "bo.wh"; wi: "bo.wi"; wj: "bo.wj"; wk: "bo.wk"; wl: "bo.wl"; wm: "bo.wm"; wn: "bo.wn"; wo: "bo.wo"; wp: "bo.wp"; wq: "bo.wq"; wr: "bo.wr"; ws: "bo.ws"; wt: "bo.wt"; wu: "bo.wu"; wv: "bo.wv"; ww: "bo.ww"; wx: "bo.wx"; wy: "bo.wy"; wz: "bo.wz"; xa: "bo.xa"; xb: "bo.xb"; xc: "bo.xc"; xd: "bo.xd"; xe: "bo.xe"; xf: "bo.xf"; xg: "bo.xg"; xh: "bo.xh"; xi: "bo.xi"; xj: "bo.xj"; xk: "bo.xk"; xl: "bo.xl"; xm: "bo.xm"; xn: "bo.xn"; xo: "bo.xo"; xp: "bo.xp"; xq: "bo.xq"; xr: "bo.xr"; xs: "bo.xs"; xt: "bo.xt"; xu: "bo.xu"; xv: "bo.xv"; xw: "bo.xw"; xx: "bo.xx"; xy: "bo.xy"; xz: "bo.xz"; ya: "bo.ya"; yb: "bo.yb"; yc: "bo.yc"; yd: "bo.yd"; ye: "bo.ye"; yf: "bo.yf"; yg: "bo.yg"; yh: "bo.yh"; yi: "bo.yi"; yj: "bo.yj"; yk: "bo.yk"; yl: "bo.yl"; ym: "bo.ym"; yn: "bo.yn"; yo: "bo.yo"; yp: "bo.yp"; yq: "bo.yq"; yr: "bo.yr"; ys: "bo.ys"; yt: "bo.yt"; yu: "bo.yu"; yv: "bo.yv"; yw: "bo.yw"; yx: "bo.yx"; yy: "bo.yy"; yz: "bo.yz"; za: "bo.za"; zb: "bo.zb"; zc: "bo.zc"; zd: "bo.zd"; ze: "bo.ze"; zf: "bo.zf"; zg: "bo.zg"; zh: "bo.zh"; zi: "bo.zi"; zj: "bo.zj"; zk: "bo.zk"; zl: "bo.zl"; zm: "bo.zm"; zn: "bo.zn"; zo: "bo.zo"; zp: "bo.zp"; zq: "bo.zq"; zr: "bo.zr"; zs: "bo.zs"; zt: "bo.zt"; zu: "bo.zu"; zv: "bo.zv"; zw: "bo.zw"; zx: "bo.zx"; zy: "bo.zy"; zz: "bo.zz"; }; bp: { aa: "bp.aa"; ab: "bp.ab"; ac: "bp.ac"; ad: "bp.ad"; ae: "bp.ae"; af: "bp.af"; ag: "bp.ag"; ah: "bp.ah"; ai: "bp.ai"; aj: "bp.aj"; ak: "bp.ak"; al: "bp.al"; am: "bp.am"; an: "bp.an"; ao: "bp.ao"; ap: "bp.ap"; aq: "bp.aq"; ar: "bp.ar"; as: "bp.as"; at: "bp.at"; au: "bp.au"; av: "bp.av"; aw: "bp.aw"; ax: "bp.ax"; ay: "bp.ay"; az: "bp.az"; ba: "bp.ba"; bb: "bp.bb"; bc: "bp.bc"; bd: "bp.bd"; be: "bp.be"; bf: "bp.bf"; bg: "bp.bg"; bh: "bp.bh"; bi: "bp.bi"; bj: "bp.bj"; bk: "bp.bk"; bl: "bp.bl"; bm: "bp.bm"; bn: "bp.bn"; bo: "bp.bo"; bp: "bp.bp"; bq: "bp.bq"; br: "bp.br"; bs: "bp.bs"; bt: "bp.bt"; bu: "bp.bu"; bv: "bp.bv"; bw: "bp.bw"; bx: "bp.bx"; by: "bp.by"; bz: "bp.bz"; ca: "bp.ca"; cb: "bp.cb"; cc: "bp.cc"; cd: "bp.cd"; ce: "bp.ce"; cf: "bp.cf"; cg: "bp.cg"; ch: "bp.ch"; ci: "bp.ci"; cj: "bp.cj"; ck: "bp.ck"; cl: "bp.cl"; cm: "bp.cm"; cn: "bp.cn"; co: "bp.co"; cp: "bp.cp"; cq: "bp.cq"; cr: "bp.cr"; cs: "bp.cs"; ct: "bp.ct"; cu: "bp.cu"; cv: "bp.cv"; cw: "bp.cw"; cx: "bp.cx"; cy: "bp.cy"; cz: "bp.cz"; da: "bp.da"; db: "bp.db"; dc: "bp.dc"; dd: "bp.dd"; de: "bp.de"; df: "bp.df"; dg: "bp.dg"; dh: "bp.dh"; di: "bp.di"; dj: "bp.dj"; dk: "bp.dk"; dl: "bp.dl"; dm: "bp.dm"; dn: "bp.dn"; do: "bp.do"; dp: "bp.dp"; dq: "bp.dq"; dr: "bp.dr"; ds: "bp.ds"; dt: "bp.dt"; du: "bp.du"; dv: "bp.dv"; dw: "bp.dw"; dx: "bp.dx"; dy: "bp.dy"; dz: "bp.dz"; ea: "bp.ea"; eb: "bp.eb"; ec: "bp.ec"; ed: "bp.ed"; ee: "bp.ee"; ef: "bp.ef"; eg: "bp.eg"; eh: "bp.eh"; ei: "bp.ei"; ej: "bp.ej"; ek: "bp.ek"; el: "bp.el"; em: "bp.em"; en: "bp.en"; eo: "bp.eo"; ep: "bp.ep"; eq: "bp.eq"; er: "bp.er"; es: "bp.es"; et: "bp.et"; eu: "bp.eu"; ev: "bp.ev"; ew: "bp.ew"; ex: "bp.ex"; ey: "bp.ey"; ez: "bp.ez"; fa: "bp.fa"; fb: "bp.fb"; fc: "bp.fc"; fd: "bp.fd"; fe: "bp.fe"; ff: "bp.ff"; fg: "bp.fg"; fh: "bp.fh"; fi: "bp.fi"; fj: "bp.fj"; fk: "bp.fk"; fl: "bp.fl"; fm: "bp.fm"; fn: "bp.fn"; fo: "bp.fo"; fp: "bp.fp"; fq: "bp.fq"; fr: "bp.fr"; fs: "bp.fs"; ft: "bp.ft"; fu: "bp.fu"; fv: "bp.fv"; fw: "bp.fw"; fx: "bp.fx"; fy: "bp.fy"; fz: "bp.fz"; ga: "bp.ga"; gb: "bp.gb"; gc: "bp.gc"; gd: "bp.gd"; ge: "bp.ge"; gf: "bp.gf"; gg: "bp.gg"; gh: "bp.gh"; gi: "bp.gi"; gj: "bp.gj"; gk: "bp.gk"; gl: "bp.gl"; gm: "bp.gm"; gn: "bp.gn"; go: "bp.go"; gp: "bp.gp"; gq: "bp.gq"; gr: "bp.gr"; gs: "bp.gs"; gt: "bp.gt"; gu: "bp.gu"; gv: "bp.gv"; gw: "bp.gw"; gx: "bp.gx"; gy: "bp.gy"; gz: "bp.gz"; ha: "bp.ha"; hb: "bp.hb"; hc: "bp.hc"; hd: "bp.hd"; he: "bp.he"; hf: "bp.hf"; hg: "bp.hg"; hh: "bp.hh"; hi: "bp.hi"; hj: "bp.hj"; hk: "bp.hk"; hl: "bp.hl"; hm: "bp.hm"; hn: "bp.hn"; ho: "bp.ho"; hp: "bp.hp"; hq: "bp.hq"; hr: "bp.hr"; hs: "bp.hs"; ht: "bp.ht"; hu: "bp.hu"; hv: "bp.hv"; hw: "bp.hw"; hx: "bp.hx"; hy: "bp.hy"; hz: "bp.hz"; ia: "bp.ia"; ib: "bp.ib"; ic: "bp.ic"; id: "bp.id"; ie: "bp.ie"; if: "bp.if"; ig: "bp.ig"; ih: "bp.ih"; ii: "bp.ii"; ij: "bp.ij"; ik: "bp.ik"; il: "bp.il"; im: "bp.im"; in: "bp.in"; io: "bp.io"; ip: "bp.ip"; iq: "bp.iq"; ir: "bp.ir"; is: "bp.is"; it: "bp.it"; iu: "bp.iu"; iv: "bp.iv"; iw: "bp.iw"; ix: "bp.ix"; iy: "bp.iy"; iz: "bp.iz"; ja: "bp.ja"; jb: "bp.jb"; jc: "bp.jc"; jd: "bp.jd"; je: "bp.je"; jf: "bp.jf"; jg: "bp.jg"; jh: "bp.jh"; ji: "bp.ji"; jj: "bp.jj"; jk: "bp.jk"; jl: "bp.jl"; jm: "bp.jm"; jn: "bp.jn"; jo: "bp.jo"; jp: "bp.jp"; jq: "bp.jq"; jr: "bp.jr"; js: "bp.js"; jt: "bp.jt"; ju: "bp.ju"; jv: "bp.jv"; jw: "bp.jw"; jx: "bp.jx"; jy: "bp.jy"; jz: "bp.jz"; ka: "bp.ka"; kb: "bp.kb"; kc: "bp.kc"; kd: "bp.kd"; ke: "bp.ke"; kf: "bp.kf"; kg: "bp.kg"; kh: "bp.kh"; ki: "bp.ki"; kj: "bp.kj"; kk: "bp.kk"; kl: "bp.kl"; km: "bp.km"; kn: "bp.kn"; ko: "bp.ko"; kp: "bp.kp"; kq: "bp.kq"; kr: "bp.kr"; ks: "bp.ks"; kt: "bp.kt"; ku: "bp.ku"; kv: "bp.kv"; kw: "bp.kw"; kx: "bp.kx"; ky: "bp.ky"; kz: "bp.kz"; la: "bp.la"; lb: "bp.lb"; lc: "bp.lc"; ld: "bp.ld"; le: "bp.le"; lf: "bp.lf"; lg: "bp.lg"; lh: "bp.lh"; li: "bp.li"; lj: "bp.lj"; lk: "bp.lk"; ll: "bp.ll"; lm: "bp.lm"; ln: "bp.ln"; lo: "bp.lo"; lp: "bp.lp"; lq: "bp.lq"; lr: "bp.lr"; ls: "bp.ls"; lt: "bp.lt"; lu: "bp.lu"; lv: "bp.lv"; lw: "bp.lw"; lx: "bp.lx"; ly: "bp.ly"; lz: "bp.lz"; ma: "bp.ma"; mb: "bp.mb"; mc: "bp.mc"; md: "bp.md"; me: "bp.me"; mf: "bp.mf"; mg: "bp.mg"; mh: "bp.mh"; mi: "bp.mi"; mj: "bp.mj"; mk: "bp.mk"; ml: "bp.ml"; mm: "bp.mm"; mn: "bp.mn"; mo: "bp.mo"; mp: "bp.mp"; mq: "bp.mq"; mr: "bp.mr"; ms: "bp.ms"; mt: "bp.mt"; mu: "bp.mu"; mv: "bp.mv"; mw: "bp.mw"; mx: "bp.mx"; my: "bp.my"; mz: "bp.mz"; na: "bp.na"; nb: "bp.nb"; nc: "bp.nc"; nd: "bp.nd"; ne: "bp.ne"; nf: "bp.nf"; ng: "bp.ng"; nh: "bp.nh"; ni: "bp.ni"; nj: "bp.nj"; nk: "bp.nk"; nl: "bp.nl"; nm: "bp.nm"; nn: "bp.nn"; no: "bp.no"; np: "bp.np"; nq: "bp.nq"; nr: "bp.nr"; ns: "bp.ns"; nt: "bp.nt"; nu: "bp.nu"; nv: "bp.nv"; nw: "bp.nw"; nx: "bp.nx"; ny: "bp.ny"; nz: "bp.nz"; oa: "bp.oa"; ob: "bp.ob"; oc: "bp.oc"; od: "bp.od"; oe: "bp.oe"; of: "bp.of"; og: "bp.og"; oh: "bp.oh"; oi: "bp.oi"; oj: "bp.oj"; ok: "bp.ok"; ol: "bp.ol"; om: "bp.om"; on: "bp.on"; oo: "bp.oo"; op: "bp.op"; oq: "bp.oq"; or: "bp.or"; os: "bp.os"; ot: "bp.ot"; ou: "bp.ou"; ov: "bp.ov"; ow: "bp.ow"; ox: "bp.ox"; oy: "bp.oy"; oz: "bp.oz"; pa: "bp.pa"; pb: "bp.pb"; pc: "bp.pc"; pd: "bp.pd"; pe: "bp.pe"; pf: "bp.pf"; pg: "bp.pg"; ph: "bp.ph"; pi: "bp.pi"; pj: "bp.pj"; pk: "bp.pk"; pl: "bp.pl"; pm: "bp.pm"; pn: "bp.pn"; po: "bp.po"; pp: "bp.pp"; pq: "bp.pq"; pr: "bp.pr"; ps: "bp.ps"; pt: "bp.pt"; pu: "bp.pu"; pv: "bp.pv"; pw: "bp.pw"; px: "bp.px"; py: "bp.py"; pz: "bp.pz"; qa: "bp.qa"; qb: "bp.qb"; qc: "bp.qc"; qd: "bp.qd"; qe: "bp.qe"; qf: "bp.qf"; qg: "bp.qg"; qh: "bp.qh"; qi: "bp.qi"; qj: "bp.qj"; qk: "bp.qk"; ql: "bp.ql"; qm: "bp.qm"; qn: "bp.qn"; qo: "bp.qo"; qp: "bp.qp"; qq: "bp.qq"; qr: "bp.qr"; qs: "bp.qs"; qt: "bp.qt"; qu: "bp.qu"; qv: "bp.qv"; qw: "bp.qw"; qx: "bp.qx"; qy: "bp.qy"; qz: "bp.qz"; ra: "bp.ra"; rb: "bp.rb"; rc: "bp.rc"; rd: "bp.rd"; re: "bp.re"; rf: "bp.rf"; rg: "bp.rg"; rh: "bp.rh"; ri: "bp.ri"; rj: "bp.rj"; rk: "bp.rk"; rl: "bp.rl"; rm: "bp.rm"; rn: "bp.rn"; ro: "bp.ro"; rp: "bp.rp"; rq: "bp.rq"; rr: "bp.rr"; rs: "bp.rs"; rt: "bp.rt"; ru: "bp.ru"; rv: "bp.rv"; rw: "bp.rw"; rx: "bp.rx"; ry: "bp.ry"; rz: "bp.rz"; sa: "bp.sa"; sb: "bp.sb"; sc: "bp.sc"; sd: "bp.sd"; se: "bp.se"; sf: "bp.sf"; sg: "bp.sg"; sh: "bp.sh"; si: "bp.si"; sj: "bp.sj"; sk: "bp.sk"; sl: "bp.sl"; sm: "bp.sm"; sn: "bp.sn"; so: "bp.so"; sp: "bp.sp"; sq: "bp.sq"; sr: "bp.sr"; ss: "bp.ss"; st: "bp.st"; su: "bp.su"; sv: "bp.sv"; sw: "bp.sw"; sx: "bp.sx"; sy: "bp.sy"; sz: "bp.sz"; ta: "bp.ta"; tb: "bp.tb"; tc: "bp.tc"; td: "bp.td"; te: "bp.te"; tf: "bp.tf"; tg: "bp.tg"; th: "bp.th"; ti: "bp.ti"; tj: "bp.tj"; tk: "bp.tk"; tl: "bp.tl"; tm: "bp.tm"; tn: "bp.tn"; to: "bp.to"; tp: "bp.tp"; tq: "bp.tq"; tr: "bp.tr"; ts: "bp.ts"; tt: "bp.tt"; tu: "bp.tu"; tv: "bp.tv"; tw: "bp.tw"; tx: "bp.tx"; ty: "bp.ty"; tz: "bp.tz"; ua: "bp.ua"; ub: "bp.ub"; uc: "bp.uc"; ud: "bp.ud"; ue: "bp.ue"; uf: "bp.uf"; ug: "bp.ug"; uh: "bp.uh"; ui: "bp.ui"; uj: "bp.uj"; uk: "bp.uk"; ul: "bp.ul"; um: "bp.um"; un: "bp.un"; uo: "bp.uo"; up: "bp.up"; uq: "bp.uq"; ur: "bp.ur"; us: "bp.us"; ut: "bp.ut"; uu: "bp.uu"; uv: "bp.uv"; uw: "bp.uw"; ux: "bp.ux"; uy: "bp.uy"; uz: "bp.uz"; va: "bp.va"; vb: "bp.vb"; vc: "bp.vc"; vd: "bp.vd"; ve: "bp.ve"; vf: "bp.vf"; vg: "bp.vg"; vh: "bp.vh"; vi: "bp.vi"; vj: "bp.vj"; vk: "bp.vk"; vl: "bp.vl"; vm: "bp.vm"; vn: "bp.vn"; vo: "bp.vo"; vp: "bp.vp"; vq: "bp.vq"; vr: "bp.vr"; vs: "bp.vs"; vt: "bp.vt"; vu: "bp.vu"; vv: "bp.vv"; vw: "bp.vw"; vx: "bp.vx"; vy: "bp.vy"; vz: "bp.vz"; wa: "bp.wa"; wb: "bp.wb"; wc: "bp.wc"; wd: "bp.wd"; we: "bp.we"; wf: "bp.wf"; wg: "bp.wg"; wh: "bp.wh"; wi: "bp.wi"; wj: "bp.wj"; wk: "bp.wk"; wl: "bp.wl"; wm: "bp.wm"; wn: "bp.wn"; wo: "bp.wo"; wp: "bp.wp"; wq: "bp.wq"; wr: "bp.wr"; ws: "bp.ws"; wt: "bp.wt"; wu: "bp.wu"; wv: "bp.wv"; ww: "bp.ww"; wx: "bp.wx"; wy: "bp.wy"; wz: "bp.wz"; xa: "bp.xa"; xb: "bp.xb"; xc: "bp.xc"; xd: "bp.xd"; xe: "bp.xe"; xf: "bp.xf"; xg: "bp.xg"; xh: "bp.xh"; xi: "bp.xi"; xj: "bp.xj"; xk: "bp.xk"; xl: "bp.xl"; xm: "bp.xm"; xn: "bp.xn"; xo: "bp.xo"; xp: "bp.xp"; xq: "bp.xq"; xr: "bp.xr"; xs: "bp.xs"; xt: "bp.xt"; xu: "bp.xu"; xv: "bp.xv"; xw: "bp.xw"; xx: "bp.xx"; xy: "bp.xy"; xz: "bp.xz"; ya: "bp.ya"; yb: "bp.yb"; yc: "bp.yc"; yd: "bp.yd"; ye: "bp.ye"; yf: "bp.yf"; yg: "bp.yg"; yh: "bp.yh"; yi: "bp.yi"; yj: "bp.yj"; yk: "bp.yk"; yl: "bp.yl"; ym: "bp.ym"; yn: "bp.yn"; yo: "bp.yo"; yp: "bp.yp"; yq: "bp.yq"; yr: "bp.yr"; ys: "bp.ys"; yt: "bp.yt"; yu: "bp.yu"; yv: "bp.yv"; yw: "bp.yw"; yx: "bp.yx"; yy: "bp.yy"; yz: "bp.yz"; za: "bp.za"; zb: "bp.zb"; zc: "bp.zc"; zd: "bp.zd"; ze: "bp.ze"; zf: "bp.zf"; zg: "bp.zg"; zh: "bp.zh"; zi: "bp.zi"; zj: "bp.zj"; zk: "bp.zk"; zl: "bp.zl"; zm: "bp.zm"; zn: "bp.zn"; zo: "bp.zo"; zp: "bp.zp"; zq: "bp.zq"; zr: "bp.zr"; zs: "bp.zs"; zt: "bp.zt"; zu: "bp.zu"; zv: "bp.zv"; zw: "bp.zw"; zx: "bp.zx"; zy: "bp.zy"; zz: "bp.zz"; }; bq: { aa: "bq.aa"; ab: "bq.ab"; ac: "bq.ac"; ad: "bq.ad"; ae: "bq.ae"; af: "bq.af"; ag: "bq.ag"; ah: "bq.ah"; ai: "bq.ai"; aj: "bq.aj"; ak: "bq.ak"; al: "bq.al"; am: "bq.am"; an: "bq.an"; ao: "bq.ao"; ap: "bq.ap"; aq: "bq.aq"; ar: "bq.ar"; as: "bq.as"; at: "bq.at"; au: "bq.au"; av: "bq.av"; aw: "bq.aw"; ax: "bq.ax"; ay: "bq.ay"; az: "bq.az"; ba: "bq.ba"; bb: "bq.bb"; bc: "bq.bc"; bd: "bq.bd"; be: "bq.be"; bf: "bq.bf"; bg: "bq.bg"; bh: "bq.bh"; bi: "bq.bi"; bj: "bq.bj"; bk: "bq.bk"; bl: "bq.bl"; bm: "bq.bm"; bn: "bq.bn"; bo: "bq.bo"; bp: "bq.bp"; bq: "bq.bq"; br: "bq.br"; bs: "bq.bs"; bt: "bq.bt"; bu: "bq.bu"; bv: "bq.bv"; bw: "bq.bw"; bx: "bq.bx"; by: "bq.by"; bz: "bq.bz"; ca: "bq.ca"; cb: "bq.cb"; cc: "bq.cc"; cd: "bq.cd"; ce: "bq.ce"; cf: "bq.cf"; cg: "bq.cg"; ch: "bq.ch"; ci: "bq.ci"; cj: "bq.cj"; ck: "bq.ck"; cl: "bq.cl"; cm: "bq.cm"; cn: "bq.cn"; co: "bq.co"; cp: "bq.cp"; cq: "bq.cq"; cr: "bq.cr"; cs: "bq.cs"; ct: "bq.ct"; cu: "bq.cu"; cv: "bq.cv"; cw: "bq.cw"; cx: "bq.cx"; cy: "bq.cy"; cz: "bq.cz"; da: "bq.da"; db: "bq.db"; dc: "bq.dc"; dd: "bq.dd"; de: "bq.de"; df: "bq.df"; dg: "bq.dg"; dh: "bq.dh"; di: "bq.di"; dj: "bq.dj"; dk: "bq.dk"; dl: "bq.dl"; dm: "bq.dm"; dn: "bq.dn"; do: "bq.do"; dp: "bq.dp"; dq: "bq.dq"; dr: "bq.dr"; ds: "bq.ds"; dt: "bq.dt"; du: "bq.du"; dv: "bq.dv"; dw: "bq.dw"; dx: "bq.dx"; dy: "bq.dy"; dz: "bq.dz"; ea: "bq.ea"; eb: "bq.eb"; ec: "bq.ec"; ed: "bq.ed"; ee: "bq.ee"; ef: "bq.ef"; eg: "bq.eg"; eh: "bq.eh"; ei: "bq.ei"; ej: "bq.ej"; ek: "bq.ek"; el: "bq.el"; em: "bq.em"; en: "bq.en"; eo: "bq.eo"; ep: "bq.ep"; eq: "bq.eq"; er: "bq.er"; es: "bq.es"; et: "bq.et"; eu: "bq.eu"; ev: "bq.ev"; ew: "bq.ew"; ex: "bq.ex"; ey: "bq.ey"; ez: "bq.ez"; fa: "bq.fa"; fb: "bq.fb"; fc: "bq.fc"; fd: "bq.fd"; fe: "bq.fe"; ff: "bq.ff"; fg: "bq.fg"; fh: "bq.fh"; fi: "bq.fi"; fj: "bq.fj"; fk: "bq.fk"; fl: "bq.fl"; fm: "bq.fm"; fn: "bq.fn"; fo: "bq.fo"; fp: "bq.fp"; fq: "bq.fq"; fr: "bq.fr"; fs: "bq.fs"; ft: "bq.ft"; fu: "bq.fu"; fv: "bq.fv"; fw: "bq.fw"; fx: "bq.fx"; fy: "bq.fy"; fz: "bq.fz"; ga: "bq.ga"; gb: "bq.gb"; gc: "bq.gc"; gd: "bq.gd"; ge: "bq.ge"; gf: "bq.gf"; gg: "bq.gg"; gh: "bq.gh"; gi: "bq.gi"; gj: "bq.gj"; gk: "bq.gk"; gl: "bq.gl"; gm: "bq.gm"; gn: "bq.gn"; go: "bq.go"; gp: "bq.gp"; gq: "bq.gq"; gr: "bq.gr"; gs: "bq.gs"; gt: "bq.gt"; gu: "bq.gu"; gv: "bq.gv"; gw: "bq.gw"; gx: "bq.gx"; gy: "bq.gy"; gz: "bq.gz"; ha: "bq.ha"; hb: "bq.hb"; hc: "bq.hc"; hd: "bq.hd"; he: "bq.he"; hf: "bq.hf"; hg: "bq.hg"; hh: "bq.hh"; hi: "bq.hi"; hj: "bq.hj"; hk: "bq.hk"; hl: "bq.hl"; hm: "bq.hm"; hn: "bq.hn"; ho: "bq.ho"; hp: "bq.hp"; hq: "bq.hq"; hr: "bq.hr"; hs: "bq.hs"; ht: "bq.ht"; hu: "bq.hu"; hv: "bq.hv"; hw: "bq.hw"; hx: "bq.hx"; hy: "bq.hy"; hz: "bq.hz"; ia: "bq.ia"; ib: "bq.ib"; ic: "bq.ic"; id: "bq.id"; ie: "bq.ie"; if: "bq.if"; ig: "bq.ig"; ih: "bq.ih"; ii: "bq.ii"; ij: "bq.ij"; ik: "bq.ik"; il: "bq.il"; im: "bq.im"; in: "bq.in"; io: "bq.io"; ip: "bq.ip"; iq: "bq.iq"; ir: "bq.ir"; is: "bq.is"; it: "bq.it"; iu: "bq.iu"; iv: "bq.iv"; iw: "bq.iw"; ix: "bq.ix"; iy: "bq.iy"; iz: "bq.iz"; ja: "bq.ja"; jb: "bq.jb"; jc: "bq.jc"; jd: "bq.jd"; je: "bq.je"; jf: "bq.jf"; jg: "bq.jg"; jh: "bq.jh"; ji: "bq.ji"; jj: "bq.jj"; jk: "bq.jk"; jl: "bq.jl"; jm: "bq.jm"; jn: "bq.jn"; jo: "bq.jo"; jp: "bq.jp"; jq: "bq.jq"; jr: "bq.jr"; js: "bq.js"; jt: "bq.jt"; ju: "bq.ju"; jv: "bq.jv"; jw: "bq.jw"; jx: "bq.jx"; jy: "bq.jy"; jz: "bq.jz"; ka: "bq.ka"; kb: "bq.kb"; kc: "bq.kc"; kd: "bq.kd"; ke: "bq.ke"; kf: "bq.kf"; kg: "bq.kg"; kh: "bq.kh"; ki: "bq.ki"; kj: "bq.kj"; kk: "bq.kk"; kl: "bq.kl"; km: "bq.km"; kn: "bq.kn"; ko: "bq.ko"; kp: "bq.kp"; kq: "bq.kq"; kr: "bq.kr"; ks: "bq.ks"; kt: "bq.kt"; ku: "bq.ku"; kv: "bq.kv"; kw: "bq.kw"; kx: "bq.kx"; ky: "bq.ky"; kz: "bq.kz"; la: "bq.la"; lb: "bq.lb"; lc: "bq.lc"; ld: "bq.ld"; le: "bq.le"; lf: "bq.lf"; lg: "bq.lg"; lh: "bq.lh"; li: "bq.li"; lj: "bq.lj"; lk: "bq.lk"; ll: "bq.ll"; lm: "bq.lm"; ln: "bq.ln"; lo: "bq.lo"; lp: "bq.lp"; lq: "bq.lq"; lr: "bq.lr"; ls: "bq.ls"; lt: "bq.lt"; lu: "bq.lu"; lv: "bq.lv"; lw: "bq.lw"; lx: "bq.lx"; ly: "bq.ly"; lz: "bq.lz"; ma: "bq.ma"; mb: "bq.mb"; mc: "bq.mc"; md: "bq.md"; me: "bq.me"; mf: "bq.mf"; mg: "bq.mg"; mh: "bq.mh"; mi: "bq.mi"; mj: "bq.mj"; mk: "bq.mk"; ml: "bq.ml"; mm: "bq.mm"; mn: "bq.mn"; mo: "bq.mo"; mp: "bq.mp"; mq: "bq.mq"; mr: "bq.mr"; ms: "bq.ms"; mt: "bq.mt"; mu: "bq.mu"; mv: "bq.mv"; mw: "bq.mw"; mx: "bq.mx"; my: "bq.my"; mz: "bq.mz"; na: "bq.na"; nb: "bq.nb"; nc: "bq.nc"; nd: "bq.nd"; ne: "bq.ne"; nf: "bq.nf"; ng: "bq.ng"; nh: "bq.nh"; ni: "bq.ni"; nj: "bq.nj"; nk: "bq.nk"; nl: "bq.nl"; nm: "bq.nm"; nn: "bq.nn"; no: "bq.no"; np: "bq.np"; nq: "bq.nq"; nr: "bq.nr"; ns: "bq.ns"; nt: "bq.nt"; nu: "bq.nu"; nv: "bq.nv"; nw: "bq.nw"; nx: "bq.nx"; ny: "bq.ny"; nz: "bq.nz"; oa: "bq.oa"; ob: "bq.ob"; oc: "bq.oc"; od: "bq.od"; oe: "bq.oe"; of: "bq.of"; og: "bq.og"; oh: "bq.oh"; oi: "bq.oi"; oj: "bq.oj"; ok: "bq.ok"; ol: "bq.ol"; om: "bq.om"; on: "bq.on"; oo: "bq.oo"; op: "bq.op"; oq: "bq.oq"; or: "bq.or"; os: "bq.os"; ot: "bq.ot"; ou: "bq.ou"; ov: "bq.ov"; ow: "bq.ow"; ox: "bq.ox"; oy: "bq.oy"; oz: "bq.oz"; pa: "bq.pa"; pb: "bq.pb"; pc: "bq.pc"; pd: "bq.pd"; pe: "bq.pe"; pf: "bq.pf"; pg: "bq.pg"; ph: "bq.ph"; pi: "bq.pi"; pj: "bq.pj"; pk: "bq.pk"; pl: "bq.pl"; pm: "bq.pm"; pn: "bq.pn"; po: "bq.po"; pp: "bq.pp"; pq: "bq.pq"; pr: "bq.pr"; ps: "bq.ps"; pt: "bq.pt"; pu: "bq.pu"; pv: "bq.pv"; pw: "bq.pw"; px: "bq.px"; py: "bq.py"; pz: "bq.pz"; qa: "bq.qa"; qb: "bq.qb"; qc: "bq.qc"; qd: "bq.qd"; qe: "bq.qe"; qf: "bq.qf"; qg: "bq.qg"; qh: "bq.qh"; qi: "bq.qi"; qj: "bq.qj"; qk: "bq.qk"; ql: "bq.ql"; qm: "bq.qm"; qn: "bq.qn"; qo: "bq.qo"; qp: "bq.qp"; qq: "bq.qq"; qr: "bq.qr"; qs: "bq.qs"; qt: "bq.qt"; qu: "bq.qu"; qv: "bq.qv"; qw: "bq.qw"; qx: "bq.qx"; qy: "bq.qy"; qz: "bq.qz"; ra: "bq.ra"; rb: "bq.rb"; rc: "bq.rc"; rd: "bq.rd"; re: "bq.re"; rf: "bq.rf"; rg: "bq.rg"; rh: "bq.rh"; ri: "bq.ri"; rj: "bq.rj"; rk: "bq.rk"; rl: "bq.rl"; rm: "bq.rm"; rn: "bq.rn"; ro: "bq.ro"; rp: "bq.rp"; rq: "bq.rq"; rr: "bq.rr"; rs: "bq.rs"; rt: "bq.rt"; ru: "bq.ru"; rv: "bq.rv"; rw: "bq.rw"; rx: "bq.rx"; ry: "bq.ry"; rz: "bq.rz"; sa: "bq.sa"; sb: "bq.sb"; sc: "bq.sc"; sd: "bq.sd"; se: "bq.se"; sf: "bq.sf"; sg: "bq.sg"; sh: "bq.sh"; si: "bq.si"; sj: "bq.sj"; sk: "bq.sk"; sl: "bq.sl"; sm: "bq.sm"; sn: "bq.sn"; so: "bq.so"; sp: "bq.sp"; sq: "bq.sq"; sr: "bq.sr"; ss: "bq.ss"; st: "bq.st"; su: "bq.su"; sv: "bq.sv"; sw: "bq.sw"; sx: "bq.sx"; sy: "bq.sy"; sz: "bq.sz"; ta: "bq.ta"; tb: "bq.tb"; tc: "bq.tc"; td: "bq.td"; te: "bq.te"; tf: "bq.tf"; tg: "bq.tg"; th: "bq.th"; ti: "bq.ti"; tj: "bq.tj"; tk: "bq.tk"; tl: "bq.tl"; tm: "bq.tm"; tn: "bq.tn"; to: "bq.to"; tp: "bq.tp"; tq: "bq.tq"; tr: "bq.tr"; ts: "bq.ts"; tt: "bq.tt"; tu: "bq.tu"; tv: "bq.tv"; tw: "bq.tw"; tx: "bq.tx"; ty: "bq.ty"; tz: "bq.tz"; ua: "bq.ua"; ub: "bq.ub"; uc: "bq.uc"; ud: "bq.ud"; ue: "bq.ue"; uf: "bq.uf"; ug: "bq.ug"; uh: "bq.uh"; ui: "bq.ui"; uj: "bq.uj"; uk: "bq.uk"; ul: "bq.ul"; um: "bq.um"; un: "bq.un"; uo: "bq.uo"; up: "bq.up"; uq: "bq.uq"; ur: "bq.ur"; us: "bq.us"; ut: "bq.ut"; uu: "bq.uu"; uv: "bq.uv"; uw: "bq.uw"; ux: "bq.ux"; uy: "bq.uy"; uz: "bq.uz"; va: "bq.va"; vb: "bq.vb"; vc: "bq.vc"; vd: "bq.vd"; ve: "bq.ve"; vf: "bq.vf"; vg: "bq.vg"; vh: "bq.vh"; vi: "bq.vi"; vj: "bq.vj"; vk: "bq.vk"; vl: "bq.vl"; vm: "bq.vm"; vn: "bq.vn"; vo: "bq.vo"; vp: "bq.vp"; vq: "bq.vq"; vr: "bq.vr"; vs: "bq.vs"; vt: "bq.vt"; vu: "bq.vu"; vv: "bq.vv"; vw: "bq.vw"; vx: "bq.vx"; vy: "bq.vy"; vz: "bq.vz"; wa: "bq.wa"; wb: "bq.wb"; wc: "bq.wc"; wd: "bq.wd"; we: "bq.we"; wf: "bq.wf"; wg: "bq.wg"; wh: "bq.wh"; wi: "bq.wi"; wj: "bq.wj"; wk: "bq.wk"; wl: "bq.wl"; wm: "bq.wm"; wn: "bq.wn"; wo: "bq.wo"; wp: "bq.wp"; wq: "bq.wq"; wr: "bq.wr"; ws: "bq.ws"; wt: "bq.wt"; wu: "bq.wu"; wv: "bq.wv"; ww: "bq.ww"; wx: "bq.wx"; wy: "bq.wy"; wz: "bq.wz"; xa: "bq.xa"; xb: "bq.xb"; xc: "bq.xc"; xd: "bq.xd"; xe: "bq.xe"; xf: "bq.xf"; xg: "bq.xg"; xh: "bq.xh"; xi: "bq.xi"; xj: "bq.xj"; xk: "bq.xk"; xl: "bq.xl"; xm: "bq.xm"; xn: "bq.xn"; xo: "bq.xo"; xp: "bq.xp"; xq: "bq.xq"; xr: "bq.xr"; xs: "bq.xs"; xt: "bq.xt"; xu: "bq.xu"; xv: "bq.xv"; xw: "bq.xw"; xx: "bq.xx"; xy: "bq.xy"; xz: "bq.xz"; ya: "bq.ya"; yb: "bq.yb"; yc: "bq.yc"; yd: "bq.yd"; ye: "bq.ye"; yf: "bq.yf"; yg: "bq.yg"; yh: "bq.yh"; yi: "bq.yi"; yj: "bq.yj"; yk: "bq.yk"; yl: "bq.yl"; ym: "bq.ym"; yn: "bq.yn"; yo: "bq.yo"; yp: "bq.yp"; yq: "bq.yq"; yr: "bq.yr"; ys: "bq.ys"; yt: "bq.yt"; yu: "bq.yu"; yv: "bq.yv"; yw: "bq.yw"; yx: "bq.yx"; yy: "bq.yy"; yz: "bq.yz"; za: "bq.za"; zb: "bq.zb"; zc: "bq.zc"; zd: "bq.zd"; ze: "bq.ze"; zf: "bq.zf"; zg: "bq.zg"; zh: "bq.zh"; zi: "bq.zi"; zj: "bq.zj"; zk: "bq.zk"; zl: "bq.zl"; zm: "bq.zm"; zn: "bq.zn"; zo: "bq.zo"; zp: "bq.zp"; zq: "bq.zq"; zr: "bq.zr"; zs: "bq.zs"; zt: "bq.zt"; zu: "bq.zu"; zv: "bq.zv"; zw: "bq.zw"; zx: "bq.zx"; zy: "bq.zy"; zz: "bq.zz"; }; br: { aa: "br.aa"; ab: "br.ab"; ac: "br.ac"; ad: "br.ad"; ae: "br.ae"; af: "br.af"; ag: "br.ag"; ah: "br.ah"; ai: "br.ai"; aj: "br.aj"; ak: "br.ak"; al: "br.al"; am: "br.am"; an: "br.an"; ao: "br.ao"; ap: "br.ap"; aq: "br.aq"; ar: "br.ar"; as: "br.as"; at: "br.at"; au: "br.au"; av: "br.av"; aw: "br.aw"; ax: "br.ax"; ay: "br.ay"; az: "br.az"; ba: "br.ba"; bb: "br.bb"; bc: "br.bc"; bd: "br.bd"; be: "br.be"; bf: "br.bf"; bg: "br.bg"; bh: "br.bh"; bi: "br.bi"; bj: "br.bj"; bk: "br.bk"; bl: "br.bl"; bm: "br.bm"; bn: "br.bn"; bo: "br.bo"; bp: "br.bp"; bq: "br.bq"; br: "br.br"; bs: "br.bs"; bt: "br.bt"; bu: "br.bu"; bv: "br.bv"; bw: "br.bw"; bx: "br.bx"; by: "br.by"; bz: "br.bz"; ca: "br.ca"; cb: "br.cb"; cc: "br.cc"; cd: "br.cd"; ce: "br.ce"; cf: "br.cf"; cg: "br.cg"; ch: "br.ch"; ci: "br.ci"; cj: "br.cj"; ck: "br.ck"; cl: "br.cl"; cm: "br.cm"; cn: "br.cn"; co: "br.co"; cp: "br.cp"; cq: "br.cq"; cr: "br.cr"; cs: "br.cs"; ct: "br.ct"; cu: "br.cu"; cv: "br.cv"; cw: "br.cw"; cx: "br.cx"; cy: "br.cy"; cz: "br.cz"; da: "br.da"; db: "br.db"; dc: "br.dc"; dd: "br.dd"; de: "br.de"; df: "br.df"; dg: "br.dg"; dh: "br.dh"; di: "br.di"; dj: "br.dj"; dk: "br.dk"; dl: "br.dl"; dm: "br.dm"; dn: "br.dn"; do: "br.do"; dp: "br.dp"; dq: "br.dq"; dr: "br.dr"; ds: "br.ds"; dt: "br.dt"; du: "br.du"; dv: "br.dv"; dw: "br.dw"; dx: "br.dx"; dy: "br.dy"; dz: "br.dz"; ea: "br.ea"; eb: "br.eb"; ec: "br.ec"; ed: "br.ed"; ee: "br.ee"; ef: "br.ef"; eg: "br.eg"; eh: "br.eh"; ei: "br.ei"; ej: "br.ej"; ek: "br.ek"; el: "br.el"; em: "br.em"; en: "br.en"; eo: "br.eo"; ep: "br.ep"; eq: "br.eq"; er: "br.er"; es: "br.es"; et: "br.et"; eu: "br.eu"; ev: "br.ev"; ew: "br.ew"; ex: "br.ex"; ey: "br.ey"; ez: "br.ez"; fa: "br.fa"; fb: "br.fb"; fc: "br.fc"; fd: "br.fd"; fe: "br.fe"; ff: "br.ff"; fg: "br.fg"; fh: "br.fh"; fi: "br.fi"; fj: "br.fj"; fk: "br.fk"; fl: "br.fl"; fm: "br.fm"; fn: "br.fn"; fo: "br.fo"; fp: "br.fp"; fq: "br.fq"; fr: "br.fr"; fs: "br.fs"; ft: "br.ft"; fu: "br.fu"; fv: "br.fv"; fw: "br.fw"; fx: "br.fx"; fy: "br.fy"; fz: "br.fz"; ga: "br.ga"; gb: "br.gb"; gc: "br.gc"; gd: "br.gd"; ge: "br.ge"; gf: "br.gf"; gg: "br.gg"; gh: "br.gh"; gi: "br.gi"; gj: "br.gj"; gk: "br.gk"; gl: "br.gl"; gm: "br.gm"; gn: "br.gn"; go: "br.go"; gp: "br.gp"; gq: "br.gq"; gr: "br.gr"; gs: "br.gs"; gt: "br.gt"; gu: "br.gu"; gv: "br.gv"; gw: "br.gw"; gx: "br.gx"; gy: "br.gy"; gz: "br.gz"; ha: "br.ha"; hb: "br.hb"; hc: "br.hc"; hd: "br.hd"; he: "br.he"; hf: "br.hf"; hg: "br.hg"; hh: "br.hh"; hi: "br.hi"; hj: "br.hj"; hk: "br.hk"; hl: "br.hl"; hm: "br.hm"; hn: "br.hn"; ho: "br.ho"; hp: "br.hp"; hq: "br.hq"; hr: "br.hr"; hs: "br.hs"; ht: "br.ht"; hu: "br.hu"; hv: "br.hv"; hw: "br.hw"; hx: "br.hx"; hy: "br.hy"; hz: "br.hz"; ia: "br.ia"; ib: "br.ib"; ic: "br.ic"; id: "br.id"; ie: "br.ie"; if: "br.if"; ig: "br.ig"; ih: "br.ih"; ii: "br.ii"; ij: "br.ij"; ik: "br.ik"; il: "br.il"; im: "br.im"; in: "br.in"; io: "br.io"; ip: "br.ip"; iq: "br.iq"; ir: "br.ir"; is: "br.is"; it: "br.it"; iu: "br.iu"; iv: "br.iv"; iw: "br.iw"; ix: "br.ix"; iy: "br.iy"; iz: "br.iz"; ja: "br.ja"; jb: "br.jb"; jc: "br.jc"; jd: "br.jd"; je: "br.je"; jf: "br.jf"; jg: "br.jg"; jh: "br.jh"; ji: "br.ji"; jj: "br.jj"; jk: "br.jk"; jl: "br.jl"; jm: "br.jm"; jn: "br.jn"; jo: "br.jo"; jp: "br.jp"; jq: "br.jq"; jr: "br.jr"; js: "br.js"; jt: "br.jt"; ju: "br.ju"; jv: "br.jv"; jw: "br.jw"; jx: "br.jx"; jy: "br.jy"; jz: "br.jz"; ka: "br.ka"; kb: "br.kb"; kc: "br.kc"; kd: "br.kd"; ke: "br.ke"; kf: "br.kf"; kg: "br.kg"; kh: "br.kh"; ki: "br.ki"; kj: "br.kj"; kk: "br.kk"; kl: "br.kl"; km: "br.km"; kn: "br.kn"; ko: "br.ko"; kp: "br.kp"; kq: "br.kq"; kr: "br.kr"; ks: "br.ks"; kt: "br.kt"; ku: "br.ku"; kv: "br.kv"; kw: "br.kw"; kx: "br.kx"; ky: "br.ky"; kz: "br.kz"; la: "br.la"; lb: "br.lb"; lc: "br.lc"; ld: "br.ld"; le: "br.le"; lf: "br.lf"; lg: "br.lg"; lh: "br.lh"; li: "br.li"; lj: "br.lj"; lk: "br.lk"; ll: "br.ll"; lm: "br.lm"; ln: "br.ln"; lo: "br.lo"; lp: "br.lp"; lq: "br.lq"; lr: "br.lr"; ls: "br.ls"; lt: "br.lt"; lu: "br.lu"; lv: "br.lv"; lw: "br.lw"; lx: "br.lx"; ly: "br.ly"; lz: "br.lz"; ma: "br.ma"; mb: "br.mb"; mc: "br.mc"; md: "br.md"; me: "br.me"; mf: "br.mf"; mg: "br.mg"; mh: "br.mh"; mi: "br.mi"; mj: "br.mj"; mk: "br.mk"; ml: "br.ml"; mm: "br.mm"; mn: "br.mn"; mo: "br.mo"; mp: "br.mp"; mq: "br.mq"; mr: "br.mr"; ms: "br.ms"; mt: "br.mt"; mu: "br.mu"; mv: "br.mv"; mw: "br.mw"; mx: "br.mx"; my: "br.my"; mz: "br.mz"; na: "br.na"; nb: "br.nb"; nc: "br.nc"; nd: "br.nd"; ne: "br.ne"; nf: "br.nf"; ng: "br.ng"; nh: "br.nh"; ni: "br.ni"; nj: "br.nj"; nk: "br.nk"; nl: "br.nl"; nm: "br.nm"; nn: "br.nn"; no: "br.no"; np: "br.np"; nq: "br.nq"; nr: "br.nr"; ns: "br.ns"; nt: "br.nt"; nu: "br.nu"; nv: "br.nv"; nw: "br.nw"; nx: "br.nx"; ny: "br.ny"; nz: "br.nz"; oa: "br.oa"; ob: "br.ob"; oc: "br.oc"; od: "br.od"; oe: "br.oe"; of: "br.of"; og: "br.og"; oh: "br.oh"; oi: "br.oi"; oj: "br.oj"; ok: "br.ok"; ol: "br.ol"; om: "br.om"; on: "br.on"; oo: "br.oo"; op: "br.op"; oq: "br.oq"; or: "br.or"; os: "br.os"; ot: "br.ot"; ou: "br.ou"; ov: "br.ov"; ow: "br.ow"; ox: "br.ox"; oy: "br.oy"; oz: "br.oz"; pa: "br.pa"; pb: "br.pb"; pc: "br.pc"; pd: "br.pd"; pe: "br.pe"; pf: "br.pf"; pg: "br.pg"; ph: "br.ph"; pi: "br.pi"; pj: "br.pj"; pk: "br.pk"; pl: "br.pl"; pm: "br.pm"; pn: "br.pn"; po: "br.po"; pp: "br.pp"; pq: "br.pq"; pr: "br.pr"; ps: "br.ps"; pt: "br.pt"; pu: "br.pu"; pv: "br.pv"; pw: "br.pw"; px: "br.px"; py: "br.py"; pz: "br.pz"; qa: "br.qa"; qb: "br.qb"; qc: "br.qc"; qd: "br.qd"; qe: "br.qe"; qf: "br.qf"; qg: "br.qg"; qh: "br.qh"; qi: "br.qi"; qj: "br.qj"; qk: "br.qk"; ql: "br.ql"; qm: "br.qm"; qn: "br.qn"; qo: "br.qo"; qp: "br.qp"; qq: "br.qq"; qr: "br.qr"; qs: "br.qs"; qt: "br.qt"; qu: "br.qu"; qv: "br.qv"; qw: "br.qw"; qx: "br.qx"; qy: "br.qy"; qz: "br.qz"; ra: "br.ra"; rb: "br.rb"; rc: "br.rc"; rd: "br.rd"; re: "br.re"; rf: "br.rf"; rg: "br.rg"; rh: "br.rh"; ri: "br.ri"; rj: "br.rj"; rk: "br.rk"; rl: "br.rl"; rm: "br.rm"; rn: "br.rn"; ro: "br.ro"; rp: "br.rp"; rq: "br.rq"; rr: "br.rr"; rs: "br.rs"; rt: "br.rt"; ru: "br.ru"; rv: "br.rv"; rw: "br.rw"; rx: "br.rx"; ry: "br.ry"; rz: "br.rz"; sa: "br.sa"; sb: "br.sb"; sc: "br.sc"; sd: "br.sd"; se: "br.se"; sf: "br.sf"; sg: "br.sg"; sh: "br.sh"; si: "br.si"; sj: "br.sj"; sk: "br.sk"; sl: "br.sl"; sm: "br.sm"; sn: "br.sn"; so: "br.so"; sp: "br.sp"; sq: "br.sq"; sr: "br.sr"; ss: "br.ss"; st: "br.st"; su: "br.su"; sv: "br.sv"; sw: "br.sw"; sx: "br.sx"; sy: "br.sy"; sz: "br.sz"; ta: "br.ta"; tb: "br.tb"; tc: "br.tc"; td: "br.td"; te: "br.te"; tf: "br.tf"; tg: "br.tg"; th: "br.th"; ti: "br.ti"; tj: "br.tj"; tk: "br.tk"; tl: "br.tl"; tm: "br.tm"; tn: "br.tn"; to: "br.to"; tp: "br.tp"; tq: "br.tq"; tr: "br.tr"; ts: "br.ts"; tt: "br.tt"; tu: "br.tu"; tv: "br.tv"; tw: "br.tw"; tx: "br.tx"; ty: "br.ty"; tz: "br.tz"; ua: "br.ua"; ub: "br.ub"; uc: "br.uc"; ud: "br.ud"; ue: "br.ue"; uf: "br.uf"; ug: "br.ug"; uh: "br.uh"; ui: "br.ui"; uj: "br.uj"; uk: "br.uk"; ul: "br.ul"; um: "br.um"; un: "br.un"; uo: "br.uo"; up: "br.up"; uq: "br.uq"; ur: "br.ur"; us: "br.us"; ut: "br.ut"; uu: "br.uu"; uv: "br.uv"; uw: "br.uw"; ux: "br.ux"; uy: "br.uy"; uz: "br.uz"; va: "br.va"; vb: "br.vb"; vc: "br.vc"; vd: "br.vd"; ve: "br.ve"; vf: "br.vf"; vg: "br.vg"; vh: "br.vh"; vi: "br.vi"; vj: "br.vj"; vk: "br.vk"; vl: "br.vl"; vm: "br.vm"; vn: "br.vn"; vo: "br.vo"; vp: "br.vp"; vq: "br.vq"; vr: "br.vr"; vs: "br.vs"; vt: "br.vt"; vu: "br.vu"; vv: "br.vv"; vw: "br.vw"; vx: "br.vx"; vy: "br.vy"; vz: "br.vz"; wa: "br.wa"; wb: "br.wb"; wc: "br.wc"; wd: "br.wd"; we: "br.we"; wf: "br.wf"; wg: "br.wg"; wh: "br.wh"; wi: "br.wi"; wj: "br.wj"; wk: "br.wk"; wl: "br.wl"; wm: "br.wm"; wn: "br.wn"; wo: "br.wo"; wp: "br.wp"; wq: "br.wq"; wr: "br.wr"; ws: "br.ws"; wt: "br.wt"; wu: "br.wu"; wv: "br.wv"; ww: "br.ww"; wx: "br.wx"; wy: "br.wy"; wz: "br.wz"; xa: "br.xa"; xb: "br.xb"; xc: "br.xc"; xd: "br.xd"; xe: "br.xe"; xf: "br.xf"; xg: "br.xg"; xh: "br.xh"; xi: "br.xi"; xj: "br.xj"; xk: "br.xk"; xl: "br.xl"; xm: "br.xm"; xn: "br.xn"; xo: "br.xo"; xp: "br.xp"; xq: "br.xq"; xr: "br.xr"; xs: "br.xs"; xt: "br.xt"; xu: "br.xu"; xv: "br.xv"; xw: "br.xw"; xx: "br.xx"; xy: "br.xy"; xz: "br.xz"; ya: "br.ya"; yb: "br.yb"; yc: "br.yc"; yd: "br.yd"; ye: "br.ye"; yf: "br.yf"; yg: "br.yg"; yh: "br.yh"; yi: "br.yi"; yj: "br.yj"; yk: "br.yk"; yl: "br.yl"; ym: "br.ym"; yn: "br.yn"; yo: "br.yo"; yp: "br.yp"; yq: "br.yq"; yr: "br.yr"; ys: "br.ys"; yt: "br.yt"; yu: "br.yu"; yv: "br.yv"; yw: "br.yw"; yx: "br.yx"; yy: "br.yy"; yz: "br.yz"; za: "br.za"; zb: "br.zb"; zc: "br.zc"; zd: "br.zd"; ze: "br.ze"; zf: "br.zf"; zg: "br.zg"; zh: "br.zh"; zi: "br.zi"; zj: "br.zj"; zk: "br.zk"; zl: "br.zl"; zm: "br.zm"; zn: "br.zn"; zo: "br.zo"; zp: "br.zp"; zq: "br.zq"; zr: "br.zr"; zs: "br.zs"; zt: "br.zt"; zu: "br.zu"; zv: "br.zv"; zw: "br.zw"; zx: "br.zx"; zy: "br.zy"; zz: "br.zz"; }; bs: { aa: "bs.aa"; ab: "bs.ab"; ac: "bs.ac"; ad: "bs.ad"; ae: "bs.ae"; af: "bs.af"; ag: "bs.ag"; ah: "bs.ah"; ai: "bs.ai"; aj: "bs.aj"; ak: "bs.ak"; al: "bs.al"; am: "bs.am"; an: "bs.an"; ao: "bs.ao"; ap: "bs.ap"; aq: "bs.aq"; ar: "bs.ar"; as: "bs.as"; at: "bs.at"; au: "bs.au"; av: "bs.av"; aw: "bs.aw"; ax: "bs.ax"; ay: "bs.ay"; az: "bs.az"; ba: "bs.ba"; bb: "bs.bb"; bc: "bs.bc"; bd: "bs.bd"; be: "bs.be"; bf: "bs.bf"; bg: "bs.bg"; bh: "bs.bh"; bi: "bs.bi"; bj: "bs.bj"; bk: "bs.bk"; bl: "bs.bl"; bm: "bs.bm"; bn: "bs.bn"; bo: "bs.bo"; bp: "bs.bp"; bq: "bs.bq"; br: "bs.br"; bs: "bs.bs"; bt: "bs.bt"; bu: "bs.bu"; bv: "bs.bv"; bw: "bs.bw"; bx: "bs.bx"; by: "bs.by"; bz: "bs.bz"; ca: "bs.ca"; cb: "bs.cb"; cc: "bs.cc"; cd: "bs.cd"; ce: "bs.ce"; cf: "bs.cf"; cg: "bs.cg"; ch: "bs.ch"; ci: "bs.ci"; cj: "bs.cj"; ck: "bs.ck"; cl: "bs.cl"; cm: "bs.cm"; cn: "bs.cn"; co: "bs.co"; cp: "bs.cp"; cq: "bs.cq"; cr: "bs.cr"; cs: "bs.cs"; ct: "bs.ct"; cu: "bs.cu"; cv: "bs.cv"; cw: "bs.cw"; cx: "bs.cx"; cy: "bs.cy"; cz: "bs.cz"; da: "bs.da"; db: "bs.db"; dc: "bs.dc"; dd: "bs.dd"; de: "bs.de"; df: "bs.df"; dg: "bs.dg"; dh: "bs.dh"; di: "bs.di"; dj: "bs.dj"; dk: "bs.dk"; dl: "bs.dl"; dm: "bs.dm"; dn: "bs.dn"; do: "bs.do"; dp: "bs.dp"; dq: "bs.dq"; dr: "bs.dr"; ds: "bs.ds"; dt: "bs.dt"; du: "bs.du"; dv: "bs.dv"; dw: "bs.dw"; dx: "bs.dx"; dy: "bs.dy"; dz: "bs.dz"; ea: "bs.ea"; eb: "bs.eb"; ec: "bs.ec"; ed: "bs.ed"; ee: "bs.ee"; ef: "bs.ef"; eg: "bs.eg"; eh: "bs.eh"; ei: "bs.ei"; ej: "bs.ej"; ek: "bs.ek"; el: "bs.el"; em: "bs.em"; en: "bs.en"; eo: "bs.eo"; ep: "bs.ep"; eq: "bs.eq"; er: "bs.er"; es: "bs.es"; et: "bs.et"; eu: "bs.eu"; ev: "bs.ev"; ew: "bs.ew"; ex: "bs.ex"; ey: "bs.ey"; ez: "bs.ez"; fa: "bs.fa"; fb: "bs.fb"; fc: "bs.fc"; fd: "bs.fd"; fe: "bs.fe"; ff: "bs.ff"; fg: "bs.fg"; fh: "bs.fh"; fi: "bs.fi"; fj: "bs.fj"; fk: "bs.fk"; fl: "bs.fl"; fm: "bs.fm"; fn: "bs.fn"; fo: "bs.fo"; fp: "bs.fp"; fq: "bs.fq"; fr: "bs.fr"; fs: "bs.fs"; ft: "bs.ft"; fu: "bs.fu"; fv: "bs.fv"; fw: "bs.fw"; fx: "bs.fx"; fy: "bs.fy"; fz: "bs.fz"; ga: "bs.ga"; gb: "bs.gb"; gc: "bs.gc"; gd: "bs.gd"; ge: "bs.ge"; gf: "bs.gf"; gg: "bs.gg"; gh: "bs.gh"; gi: "bs.gi"; gj: "bs.gj"; gk: "bs.gk"; gl: "bs.gl"; gm: "bs.gm"; gn: "bs.gn"; go: "bs.go"; gp: "bs.gp"; gq: "bs.gq"; gr: "bs.gr"; gs: "bs.gs"; gt: "bs.gt"; gu: "bs.gu"; gv: "bs.gv"; gw: "bs.gw"; gx: "bs.gx"; gy: "bs.gy"; gz: "bs.gz"; ha: "bs.ha"; hb: "bs.hb"; hc: "bs.hc"; hd: "bs.hd"; he: "bs.he"; hf: "bs.hf"; hg: "bs.hg"; hh: "bs.hh"; hi: "bs.hi"; hj: "bs.hj"; hk: "bs.hk"; hl: "bs.hl"; hm: "bs.hm"; hn: "bs.hn"; ho: "bs.ho"; hp: "bs.hp"; hq: "bs.hq"; hr: "bs.hr"; hs: "bs.hs"; ht: "bs.ht"; hu: "bs.hu"; hv: "bs.hv"; hw: "bs.hw"; hx: "bs.hx"; hy: "bs.hy"; hz: "bs.hz"; ia: "bs.ia"; ib: "bs.ib"; ic: "bs.ic"; id: "bs.id"; ie: "bs.ie"; if: "bs.if"; ig: "bs.ig"; ih: "bs.ih"; ii: "bs.ii"; ij: "bs.ij"; ik: "bs.ik"; il: "bs.il"; im: "bs.im"; in: "bs.in"; io: "bs.io"; ip: "bs.ip"; iq: "bs.iq"; ir: "bs.ir"; is: "bs.is"; it: "bs.it"; iu: "bs.iu"; iv: "bs.iv"; iw: "bs.iw"; ix: "bs.ix"; iy: "bs.iy"; iz: "bs.iz"; ja: "bs.ja"; jb: "bs.jb"; jc: "bs.jc"; jd: "bs.jd"; je: "bs.je"; jf: "bs.jf"; jg: "bs.jg"; jh: "bs.jh"; ji: "bs.ji"; jj: "bs.jj"; jk: "bs.jk"; jl: "bs.jl"; jm: "bs.jm"; jn: "bs.jn"; jo: "bs.jo"; jp: "bs.jp"; jq: "bs.jq"; jr: "bs.jr"; js: "bs.js"; jt: "bs.jt"; ju: "bs.ju"; jv: "bs.jv"; jw: "bs.jw"; jx: "bs.jx"; jy: "bs.jy"; jz: "bs.jz"; ka: "bs.ka"; kb: "bs.kb"; kc: "bs.kc"; kd: "bs.kd"; ke: "bs.ke"; kf: "bs.kf"; kg: "bs.kg"; kh: "bs.kh"; ki: "bs.ki"; kj: "bs.kj"; kk: "bs.kk"; kl: "bs.kl"; km: "bs.km"; kn: "bs.kn"; ko: "bs.ko"; kp: "bs.kp"; kq: "bs.kq"; kr: "bs.kr"; ks: "bs.ks"; kt: "bs.kt"; ku: "bs.ku"; kv: "bs.kv"; kw: "bs.kw"; kx: "bs.kx"; ky: "bs.ky"; kz: "bs.kz"; la: "bs.la"; lb: "bs.lb"; lc: "bs.lc"; ld: "bs.ld"; le: "bs.le"; lf: "bs.lf"; lg: "bs.lg"; lh: "bs.lh"; li: "bs.li"; lj: "bs.lj"; lk: "bs.lk"; ll: "bs.ll"; lm: "bs.lm"; ln: "bs.ln"; lo: "bs.lo"; lp: "bs.lp"; lq: "bs.lq"; lr: "bs.lr"; ls: "bs.ls"; lt: "bs.lt"; lu: "bs.lu"; lv: "bs.lv"; lw: "bs.lw"; lx: "bs.lx"; ly: "bs.ly"; lz: "bs.lz"; ma: "bs.ma"; mb: "bs.mb"; mc: "bs.mc"; md: "bs.md"; me: "bs.me"; mf: "bs.mf"; mg: "bs.mg"; mh: "bs.mh"; mi: "bs.mi"; mj: "bs.mj"; mk: "bs.mk"; ml: "bs.ml"; mm: "bs.mm"; mn: "bs.mn"; mo: "bs.mo"; mp: "bs.mp"; mq: "bs.mq"; mr: "bs.mr"; ms: "bs.ms"; mt: "bs.mt"; mu: "bs.mu"; mv: "bs.mv"; mw: "bs.mw"; mx: "bs.mx"; my: "bs.my"; mz: "bs.mz"; na: "bs.na"; nb: "bs.nb"; nc: "bs.nc"; nd: "bs.nd"; ne: "bs.ne"; nf: "bs.nf"; ng: "bs.ng"; nh: "bs.nh"; ni: "bs.ni"; nj: "bs.nj"; nk: "bs.nk"; nl: "bs.nl"; nm: "bs.nm"; nn: "bs.nn"; no: "bs.no"; np: "bs.np"; nq: "bs.nq"; nr: "bs.nr"; ns: "bs.ns"; nt: "bs.nt"; nu: "bs.nu"; nv: "bs.nv"; nw: "bs.nw"; nx: "bs.nx"; ny: "bs.ny"; nz: "bs.nz"; oa: "bs.oa"; ob: "bs.ob"; oc: "bs.oc"; od: "bs.od"; oe: "bs.oe"; of: "bs.of"; og: "bs.og"; oh: "bs.oh"; oi: "bs.oi"; oj: "bs.oj"; ok: "bs.ok"; ol: "bs.ol"; om: "bs.om"; on: "bs.on"; oo: "bs.oo"; op: "bs.op"; oq: "bs.oq"; or: "bs.or"; os: "bs.os"; ot: "bs.ot"; ou: "bs.ou"; ov: "bs.ov"; ow: "bs.ow"; ox: "bs.ox"; oy: "bs.oy"; oz: "bs.oz"; pa: "bs.pa"; pb: "bs.pb"; pc: "bs.pc"; pd: "bs.pd"; pe: "bs.pe"; pf: "bs.pf"; pg: "bs.pg"; ph: "bs.ph"; pi: "bs.pi"; pj: "bs.pj"; pk: "bs.pk"; pl: "bs.pl"; pm: "bs.pm"; pn: "bs.pn"; po: "bs.po"; pp: "bs.pp"; pq: "bs.pq"; pr: "bs.pr"; ps: "bs.ps"; pt: "bs.pt"; pu: "bs.pu"; pv: "bs.pv"; pw: "bs.pw"; px: "bs.px"; py: "bs.py"; pz: "bs.pz"; qa: "bs.qa"; qb: "bs.qb"; qc: "bs.qc"; qd: "bs.qd"; qe: "bs.qe"; qf: "bs.qf"; qg: "bs.qg"; qh: "bs.qh"; qi: "bs.qi"; qj: "bs.qj"; qk: "bs.qk"; ql: "bs.ql"; qm: "bs.qm"; qn: "bs.qn"; qo: "bs.qo"; qp: "bs.qp"; qq: "bs.qq"; qr: "bs.qr"; qs: "bs.qs"; qt: "bs.qt"; qu: "bs.qu"; qv: "bs.qv"; qw: "bs.qw"; qx: "bs.qx"; qy: "bs.qy"; qz: "bs.qz"; ra: "bs.ra"; rb: "bs.rb"; rc: "bs.rc"; rd: "bs.rd"; re: "bs.re"; rf: "bs.rf"; rg: "bs.rg"; rh: "bs.rh"; ri: "bs.ri"; rj: "bs.rj"; rk: "bs.rk"; rl: "bs.rl"; rm: "bs.rm"; rn: "bs.rn"; ro: "bs.ro"; rp: "bs.rp"; rq: "bs.rq"; rr: "bs.rr"; rs: "bs.rs"; rt: "bs.rt"; ru: "bs.ru"; rv: "bs.rv"; rw: "bs.rw"; rx: "bs.rx"; ry: "bs.ry"; rz: "bs.rz"; sa: "bs.sa"; sb: "bs.sb"; sc: "bs.sc"; sd: "bs.sd"; se: "bs.se"; sf: "bs.sf"; sg: "bs.sg"; sh: "bs.sh"; si: "bs.si"; sj: "bs.sj"; sk: "bs.sk"; sl: "bs.sl"; sm: "bs.sm"; sn: "bs.sn"; so: "bs.so"; sp: "bs.sp"; sq: "bs.sq"; sr: "bs.sr"; ss: "bs.ss"; st: "bs.st"; su: "bs.su"; sv: "bs.sv"; sw: "bs.sw"; sx: "bs.sx"; sy: "bs.sy"; sz: "bs.sz"; ta: "bs.ta"; tb: "bs.tb"; tc: "bs.tc"; td: "bs.td"; te: "bs.te"; tf: "bs.tf"; tg: "bs.tg"; th: "bs.th"; ti: "bs.ti"; tj: "bs.tj"; tk: "bs.tk"; tl: "bs.tl"; tm: "bs.tm"; tn: "bs.tn"; to: "bs.to"; tp: "bs.tp"; tq: "bs.tq"; tr: "bs.tr"; ts: "bs.ts"; tt: "bs.tt"; tu: "bs.tu"; tv: "bs.tv"; tw: "bs.tw"; tx: "bs.tx"; ty: "bs.ty"; tz: "bs.tz"; ua: "bs.ua"; ub: "bs.ub"; uc: "bs.uc"; ud: "bs.ud"; ue: "bs.ue"; uf: "bs.uf"; ug: "bs.ug"; uh: "bs.uh"; ui: "bs.ui"; uj: "bs.uj"; uk: "bs.uk"; ul: "bs.ul"; um: "bs.um"; un: "bs.un"; uo: "bs.uo"; up: "bs.up"; uq: "bs.uq"; ur: "bs.ur"; us: "bs.us"; ut: "bs.ut"; uu: "bs.uu"; uv: "bs.uv"; uw: "bs.uw"; ux: "bs.ux"; uy: "bs.uy"; uz: "bs.uz"; va: "bs.va"; vb: "bs.vb"; vc: "bs.vc"; vd: "bs.vd"; ve: "bs.ve"; vf: "bs.vf"; vg: "bs.vg"; vh: "bs.vh"; vi: "bs.vi"; vj: "bs.vj"; vk: "bs.vk"; vl: "bs.vl"; vm: "bs.vm"; vn: "bs.vn"; vo: "bs.vo"; vp: "bs.vp"; vq: "bs.vq"; vr: "bs.vr"; vs: "bs.vs"; vt: "bs.vt"; vu: "bs.vu"; vv: "bs.vv"; vw: "bs.vw"; vx: "bs.vx"; vy: "bs.vy"; vz: "bs.vz"; wa: "bs.wa"; wb: "bs.wb"; wc: "bs.wc"; wd: "bs.wd"; we: "bs.we"; wf: "bs.wf"; wg: "bs.wg"; wh: "bs.wh"; wi: "bs.wi"; wj: "bs.wj"; wk: "bs.wk"; wl: "bs.wl"; wm: "bs.wm"; wn: "bs.wn"; wo: "bs.wo"; wp: "bs.wp"; wq: "bs.wq"; wr: "bs.wr"; ws: "bs.ws"; wt: "bs.wt"; wu: "bs.wu"; wv: "bs.wv"; ww: "bs.ww"; wx: "bs.wx"; wy: "bs.wy"; wz: "bs.wz"; xa: "bs.xa"; xb: "bs.xb"; xc: "bs.xc"; xd: "bs.xd"; xe: "bs.xe"; xf: "bs.xf"; xg: "bs.xg"; xh: "bs.xh"; xi: "bs.xi"; xj: "bs.xj"; xk: "bs.xk"; xl: "bs.xl"; xm: "bs.xm"; xn: "bs.xn"; xo: "bs.xo"; xp: "bs.xp"; xq: "bs.xq"; xr: "bs.xr"; xs: "bs.xs"; xt: "bs.xt"; xu: "bs.xu"; xv: "bs.xv"; xw: "bs.xw"; xx: "bs.xx"; xy: "bs.xy"; xz: "bs.xz"; ya: "bs.ya"; yb: "bs.yb"; yc: "bs.yc"; yd: "bs.yd"; ye: "bs.ye"; yf: "bs.yf"; yg: "bs.yg"; yh: "bs.yh"; yi: "bs.yi"; yj: "bs.yj"; yk: "bs.yk"; yl: "bs.yl"; ym: "bs.ym"; yn: "bs.yn"; yo: "bs.yo"; yp: "bs.yp"; yq: "bs.yq"; yr: "bs.yr"; ys: "bs.ys"; yt: "bs.yt"; yu: "bs.yu"; yv: "bs.yv"; yw: "bs.yw"; yx: "bs.yx"; yy: "bs.yy"; yz: "bs.yz"; za: "bs.za"; zb: "bs.zb"; zc: "bs.zc"; zd: "bs.zd"; ze: "bs.ze"; zf: "bs.zf"; zg: "bs.zg"; zh: "bs.zh"; zi: "bs.zi"; zj: "bs.zj"; zk: "bs.zk"; zl: "bs.zl"; zm: "bs.zm"; zn: "bs.zn"; zo: "bs.zo"; zp: "bs.zp"; zq: "bs.zq"; zr: "bs.zr"; zs: "bs.zs"; zt: "bs.zt"; zu: "bs.zu"; zv: "bs.zv"; zw: "bs.zw"; zx: "bs.zx"; zy: "bs.zy"; zz: "bs.zz"; }; bt: { aa: "bt.aa"; ab: "bt.ab"; ac: "bt.ac"; ad: "bt.ad"; ae: "bt.ae"; af: "bt.af"; ag: "bt.ag"; ah: "bt.ah"; ai: "bt.ai"; aj: "bt.aj"; ak: "bt.ak"; al: "bt.al"; am: "bt.am"; an: "bt.an"; ao: "bt.ao"; ap: "bt.ap"; aq: "bt.aq"; ar: "bt.ar"; as: "bt.as"; at: "bt.at"; au: "bt.au"; av: "bt.av"; aw: "bt.aw"; ax: "bt.ax"; ay: "bt.ay"; az: "bt.az"; ba: "bt.ba"; bb: "bt.bb"; bc: "bt.bc"; bd: "bt.bd"; be: "bt.be"; bf: "bt.bf"; bg: "bt.bg"; bh: "bt.bh"; bi: "bt.bi"; bj: "bt.bj"; bk: "bt.bk"; bl: "bt.bl"; bm: "bt.bm"; bn: "bt.bn"; bo: "bt.bo"; bp: "bt.bp"; bq: "bt.bq"; br: "bt.br"; bs: "bt.bs"; bt: "bt.bt"; bu: "bt.bu"; bv: "bt.bv"; bw: "bt.bw"; bx: "bt.bx"; by: "bt.by"; bz: "bt.bz"; ca: "bt.ca"; cb: "bt.cb"; cc: "bt.cc"; cd: "bt.cd"; ce: "bt.ce"; cf: "bt.cf"; cg: "bt.cg"; ch: "bt.ch"; ci: "bt.ci"; cj: "bt.cj"; ck: "bt.ck"; cl: "bt.cl"; cm: "bt.cm"; cn: "bt.cn"; co: "bt.co"; cp: "bt.cp"; cq: "bt.cq"; cr: "bt.cr"; cs: "bt.cs"; ct: "bt.ct"; cu: "bt.cu"; cv: "bt.cv"; cw: "bt.cw"; cx: "bt.cx"; cy: "bt.cy"; cz: "bt.cz"; da: "bt.da"; db: "bt.db"; dc: "bt.dc"; dd: "bt.dd"; de: "bt.de"; df: "bt.df"; dg: "bt.dg"; dh: "bt.dh"; di: "bt.di"; dj: "bt.dj"; dk: "bt.dk"; dl: "bt.dl"; dm: "bt.dm"; dn: "bt.dn"; do: "bt.do"; dp: "bt.dp"; dq: "bt.dq"; dr: "bt.dr"; ds: "bt.ds"; dt: "bt.dt"; du: "bt.du"; dv: "bt.dv"; dw: "bt.dw"; dx: "bt.dx"; dy: "bt.dy"; dz: "bt.dz"; ea: "bt.ea"; eb: "bt.eb"; ec: "bt.ec"; ed: "bt.ed"; ee: "bt.ee"; ef: "bt.ef"; eg: "bt.eg"; eh: "bt.eh"; ei: "bt.ei"; ej: "bt.ej"; ek: "bt.ek"; el: "bt.el"; em: "bt.em"; en: "bt.en"; eo: "bt.eo"; ep: "bt.ep"; eq: "bt.eq"; er: "bt.er"; es: "bt.es"; et: "bt.et"; eu: "bt.eu"; ev: "bt.ev"; ew: "bt.ew"; ex: "bt.ex"; ey: "bt.ey"; ez: "bt.ez"; fa: "bt.fa"; fb: "bt.fb"; fc: "bt.fc"; fd: "bt.fd"; fe: "bt.fe"; ff: "bt.ff"; fg: "bt.fg"; fh: "bt.fh"; fi: "bt.fi"; fj: "bt.fj"; fk: "bt.fk"; fl: "bt.fl"; fm: "bt.fm"; fn: "bt.fn"; fo: "bt.fo"; fp: "bt.fp"; fq: "bt.fq"; fr: "bt.fr"; fs: "bt.fs"; ft: "bt.ft"; fu: "bt.fu"; fv: "bt.fv"; fw: "bt.fw"; fx: "bt.fx"; fy: "bt.fy"; fz: "bt.fz"; ga: "bt.ga"; gb: "bt.gb"; gc: "bt.gc"; gd: "bt.gd"; ge: "bt.ge"; gf: "bt.gf"; gg: "bt.gg"; gh: "bt.gh"; gi: "bt.gi"; gj: "bt.gj"; gk: "bt.gk"; gl: "bt.gl"; gm: "bt.gm"; gn: "bt.gn"; go: "bt.go"; gp: "bt.gp"; gq: "bt.gq"; gr: "bt.gr"; gs: "bt.gs"; gt: "bt.gt"; gu: "bt.gu"; gv: "bt.gv"; gw: "bt.gw"; gx: "bt.gx"; gy: "bt.gy"; gz: "bt.gz"; ha: "bt.ha"; hb: "bt.hb"; hc: "bt.hc"; hd: "bt.hd"; he: "bt.he"; hf: "bt.hf"; hg: "bt.hg"; hh: "bt.hh"; hi: "bt.hi"; hj: "bt.hj"; hk: "bt.hk"; hl: "bt.hl"; hm: "bt.hm"; hn: "bt.hn"; ho: "bt.ho"; hp: "bt.hp"; hq: "bt.hq"; hr: "bt.hr"; hs: "bt.hs"; ht: "bt.ht"; hu: "bt.hu"; hv: "bt.hv"; hw: "bt.hw"; hx: "bt.hx"; hy: "bt.hy"; hz: "bt.hz"; ia: "bt.ia"; ib: "bt.ib"; ic: "bt.ic"; id: "bt.id"; ie: "bt.ie"; if: "bt.if"; ig: "bt.ig"; ih: "bt.ih"; ii: "bt.ii"; ij: "bt.ij"; ik: "bt.ik"; il: "bt.il"; im: "bt.im"; in: "bt.in"; io: "bt.io"; ip: "bt.ip"; iq: "bt.iq"; ir: "bt.ir"; is: "bt.is"; it: "bt.it"; iu: "bt.iu"; iv: "bt.iv"; iw: "bt.iw"; ix: "bt.ix"; iy: "bt.iy"; iz: "bt.iz"; ja: "bt.ja"; jb: "bt.jb"; jc: "bt.jc"; jd: "bt.jd"; je: "bt.je"; jf: "bt.jf"; jg: "bt.jg"; jh: "bt.jh"; ji: "bt.ji"; jj: "bt.jj"; jk: "bt.jk"; jl: "bt.jl"; jm: "bt.jm"; jn: "bt.jn"; jo: "bt.jo"; jp: "bt.jp"; jq: "bt.jq"; jr: "bt.jr"; js: "bt.js"; jt: "bt.jt"; ju: "bt.ju"; jv: "bt.jv"; jw: "bt.jw"; jx: "bt.jx"; jy: "bt.jy"; jz: "bt.jz"; ka: "bt.ka"; kb: "bt.kb"; kc: "bt.kc"; kd: "bt.kd"; ke: "bt.ke"; kf: "bt.kf"; kg: "bt.kg"; kh: "bt.kh"; ki: "bt.ki"; kj: "bt.kj"; kk: "bt.kk"; kl: "bt.kl"; km: "bt.km"; kn: "bt.kn"; ko: "bt.ko"; kp: "bt.kp"; kq: "bt.kq"; kr: "bt.kr"; ks: "bt.ks"; kt: "bt.kt"; ku: "bt.ku"; kv: "bt.kv"; kw: "bt.kw"; kx: "bt.kx"; ky: "bt.ky"; kz: "bt.kz"; la: "bt.la"; lb: "bt.lb"; lc: "bt.lc"; ld: "bt.ld"; le: "bt.le"; lf: "bt.lf"; lg: "bt.lg"; lh: "bt.lh"; li: "bt.li"; lj: "bt.lj"; lk: "bt.lk"; ll: "bt.ll"; lm: "bt.lm"; ln: "bt.ln"; lo: "bt.lo"; lp: "bt.lp"; lq: "bt.lq"; lr: "bt.lr"; ls: "bt.ls"; lt: "bt.lt"; lu: "bt.lu"; lv: "bt.lv"; lw: "bt.lw"; lx: "bt.lx"; ly: "bt.ly"; lz: "bt.lz"; ma: "bt.ma"; mb: "bt.mb"; mc: "bt.mc"; md: "bt.md"; me: "bt.me"; mf: "bt.mf"; mg: "bt.mg"; mh: "bt.mh"; mi: "bt.mi"; mj: "bt.mj"; mk: "bt.mk"; ml: "bt.ml"; mm: "bt.mm"; mn: "bt.mn"; mo: "bt.mo"; mp: "bt.mp"; mq: "bt.mq"; mr: "bt.mr"; ms: "bt.ms"; mt: "bt.mt"; mu: "bt.mu"; mv: "bt.mv"; mw: "bt.mw"; mx: "bt.mx"; my: "bt.my"; mz: "bt.mz"; na: "bt.na"; nb: "bt.nb"; nc: "bt.nc"; nd: "bt.nd"; ne: "bt.ne"; nf: "bt.nf"; ng: "bt.ng"; nh: "bt.nh"; ni: "bt.ni"; nj: "bt.nj"; nk: "bt.nk"; nl: "bt.nl"; nm: "bt.nm"; nn: "bt.nn"; no: "bt.no"; np: "bt.np"; nq: "bt.nq"; nr: "bt.nr"; ns: "bt.ns"; nt: "bt.nt"; nu: "bt.nu"; nv: "bt.nv"; nw: "bt.nw"; nx: "bt.nx"; ny: "bt.ny"; nz: "bt.nz"; oa: "bt.oa"; ob: "bt.ob"; oc: "bt.oc"; od: "bt.od"; oe: "bt.oe"; of: "bt.of"; og: "bt.og"; oh: "bt.oh"; oi: "bt.oi"; oj: "bt.oj"; ok: "bt.ok"; ol: "bt.ol"; om: "bt.om"; on: "bt.on"; oo: "bt.oo"; op: "bt.op"; oq: "bt.oq"; or: "bt.or"; os: "bt.os"; ot: "bt.ot"; ou: "bt.ou"; ov: "bt.ov"; ow: "bt.ow"; ox: "bt.ox"; oy: "bt.oy"; oz: "bt.oz"; pa: "bt.pa"; pb: "bt.pb"; pc: "bt.pc"; pd: "bt.pd"; pe: "bt.pe"; pf: "bt.pf"; pg: "bt.pg"; ph: "bt.ph"; pi: "bt.pi"; pj: "bt.pj"; pk: "bt.pk"; pl: "bt.pl"; pm: "bt.pm"; pn: "bt.pn"; po: "bt.po"; pp: "bt.pp"; pq: "bt.pq"; pr: "bt.pr"; ps: "bt.ps"; pt: "bt.pt"; pu: "bt.pu"; pv: "bt.pv"; pw: "bt.pw"; px: "bt.px"; py: "bt.py"; pz: "bt.pz"; qa: "bt.qa"; qb: "bt.qb"; qc: "bt.qc"; qd: "bt.qd"; qe: "bt.qe"; qf: "bt.qf"; qg: "bt.qg"; qh: "bt.qh"; qi: "bt.qi"; qj: "bt.qj"; qk: "bt.qk"; ql: "bt.ql"; qm: "bt.qm"; qn: "bt.qn"; qo: "bt.qo"; qp: "bt.qp"; qq: "bt.qq"; qr: "bt.qr"; qs: "bt.qs"; qt: "bt.qt"; qu: "bt.qu"; qv: "bt.qv"; qw: "bt.qw"; qx: "bt.qx"; qy: "bt.qy"; qz: "bt.qz"; ra: "bt.ra"; rb: "bt.rb"; rc: "bt.rc"; rd: "bt.rd"; re: "bt.re"; rf: "bt.rf"; rg: "bt.rg"; rh: "bt.rh"; ri: "bt.ri"; rj: "bt.rj"; rk: "bt.rk"; rl: "bt.rl"; rm: "bt.rm"; rn: "bt.rn"; ro: "bt.ro"; rp: "bt.rp"; rq: "bt.rq"; rr: "bt.rr"; rs: "bt.rs"; rt: "bt.rt"; ru: "bt.ru"; rv: "bt.rv"; rw: "bt.rw"; rx: "bt.rx"; ry: "bt.ry"; rz: "bt.rz"; sa: "bt.sa"; sb: "bt.sb"; sc: "bt.sc"; sd: "bt.sd"; se: "bt.se"; sf: "bt.sf"; sg: "bt.sg"; sh: "bt.sh"; si: "bt.si"; sj: "bt.sj"; sk: "bt.sk"; sl: "bt.sl"; sm: "bt.sm"; sn: "bt.sn"; so: "bt.so"; sp: "bt.sp"; sq: "bt.sq"; sr: "bt.sr"; ss: "bt.ss"; st: "bt.st"; su: "bt.su"; sv: "bt.sv"; sw: "bt.sw"; sx: "bt.sx"; sy: "bt.sy"; sz: "bt.sz"; ta: "bt.ta"; tb: "bt.tb"; tc: "bt.tc"; td: "bt.td"; te: "bt.te"; tf: "bt.tf"; tg: "bt.tg"; th: "bt.th"; ti: "bt.ti"; tj: "bt.tj"; tk: "bt.tk"; tl: "bt.tl"; tm: "bt.tm"; tn: "bt.tn"; to: "bt.to"; tp: "bt.tp"; tq: "bt.tq"; tr: "bt.tr"; ts: "bt.ts"; tt: "bt.tt"; tu: "bt.tu"; tv: "bt.tv"; tw: "bt.tw"; tx: "bt.tx"; ty: "bt.ty"; tz: "bt.tz"; ua: "bt.ua"; ub: "bt.ub"; uc: "bt.uc"; ud: "bt.ud"; ue: "bt.ue"; uf: "bt.uf"; ug: "bt.ug"; uh: "bt.uh"; ui: "bt.ui"; uj: "bt.uj"; uk: "bt.uk"; ul: "bt.ul"; um: "bt.um"; un: "bt.un"; uo: "bt.uo"; up: "bt.up"; uq: "bt.uq"; ur: "bt.ur"; us: "bt.us"; ut: "bt.ut"; uu: "bt.uu"; uv: "bt.uv"; uw: "bt.uw"; ux: "bt.ux"; uy: "bt.uy"; uz: "bt.uz"; va: "bt.va"; vb: "bt.vb"; vc: "bt.vc"; vd: "bt.vd"; ve: "bt.ve"; vf: "bt.vf"; vg: "bt.vg"; vh: "bt.vh"; vi: "bt.vi"; vj: "bt.vj"; vk: "bt.vk"; vl: "bt.vl"; vm: "bt.vm"; vn: "bt.vn"; vo: "bt.vo"; vp: "bt.vp"; vq: "bt.vq"; vr: "bt.vr"; vs: "bt.vs"; vt: "bt.vt"; vu: "bt.vu"; vv: "bt.vv"; vw: "bt.vw"; vx: "bt.vx"; vy: "bt.vy"; vz: "bt.vz"; wa: "bt.wa"; wb: "bt.wb"; wc: "bt.wc"; wd: "bt.wd"; we: "bt.we"; wf: "bt.wf"; wg: "bt.wg"; wh: "bt.wh"; wi: "bt.wi"; wj: "bt.wj"; wk: "bt.wk"; wl: "bt.wl"; wm: "bt.wm"; wn: "bt.wn"; wo: "bt.wo"; wp: "bt.wp"; wq: "bt.wq"; wr: "bt.wr"; ws: "bt.ws"; wt: "bt.wt"; wu: "bt.wu"; wv: "bt.wv"; ww: "bt.ww"; wx: "bt.wx"; wy: "bt.wy"; wz: "bt.wz"; xa: "bt.xa"; xb: "bt.xb"; xc: "bt.xc"; xd: "bt.xd"; xe: "bt.xe"; xf: "bt.xf"; xg: "bt.xg"; xh: "bt.xh"; xi: "bt.xi"; xj: "bt.xj"; xk: "bt.xk"; xl: "bt.xl"; xm: "bt.xm"; xn: "bt.xn"; xo: "bt.xo"; xp: "bt.xp"; xq: "bt.xq"; xr: "bt.xr"; xs: "bt.xs"; xt: "bt.xt"; xu: "bt.xu"; xv: "bt.xv"; xw: "bt.xw"; xx: "bt.xx"; xy: "bt.xy"; xz: "bt.xz"; ya: "bt.ya"; yb: "bt.yb"; yc: "bt.yc"; yd: "bt.yd"; ye: "bt.ye"; yf: "bt.yf"; yg: "bt.yg"; yh: "bt.yh"; yi: "bt.yi"; yj: "bt.yj"; yk: "bt.yk"; yl: "bt.yl"; ym: "bt.ym"; yn: "bt.yn"; yo: "bt.yo"; yp: "bt.yp"; yq: "bt.yq"; yr: "bt.yr"; ys: "bt.ys"; yt: "bt.yt"; yu: "bt.yu"; yv: "bt.yv"; yw: "bt.yw"; yx: "bt.yx"; yy: "bt.yy"; yz: "bt.yz"; za: "bt.za"; zb: "bt.zb"; zc: "bt.zc"; zd: "bt.zd"; ze: "bt.ze"; zf: "bt.zf"; zg: "bt.zg"; zh: "bt.zh"; zi: "bt.zi"; zj: "bt.zj"; zk: "bt.zk"; zl: "bt.zl"; zm: "bt.zm"; zn: "bt.zn"; zo: "bt.zo"; zp: "bt.zp"; zq: "bt.zq"; zr: "bt.zr"; zs: "bt.zs"; zt: "bt.zt"; zu: "bt.zu"; zv: "bt.zv"; zw: "bt.zw"; zx: "bt.zx"; zy: "bt.zy"; zz: "bt.zz"; }; bu: { aa: "bu.aa"; ab: "bu.ab"; ac: "bu.ac"; ad: "bu.ad"; ae: "bu.ae"; af: "bu.af"; ag: "bu.ag"; ah: "bu.ah"; ai: "bu.ai"; aj: "bu.aj"; ak: "bu.ak"; al: "bu.al"; am: "bu.am"; an: "bu.an"; ao: "bu.ao"; ap: "bu.ap"; aq: "bu.aq"; ar: "bu.ar"; as: "bu.as"; at: "bu.at"; au: "bu.au"; av: "bu.av"; aw: "bu.aw"; ax: "bu.ax"; ay: "bu.ay"; az: "bu.az"; ba: "bu.ba"; bb: "bu.bb"; bc: "bu.bc"; bd: "bu.bd"; be: "bu.be"; bf: "bu.bf"; bg: "bu.bg"; bh: "bu.bh"; bi: "bu.bi"; bj: "bu.bj"; bk: "bu.bk"; bl: "bu.bl"; bm: "bu.bm"; bn: "bu.bn"; bo: "bu.bo"; bp: "bu.bp"; bq: "bu.bq"; br: "bu.br"; bs: "bu.bs"; bt: "bu.bt"; bu: "bu.bu"; bv: "bu.bv"; bw: "bu.bw"; bx: "bu.bx"; by: "bu.by"; bz: "bu.bz"; ca: "bu.ca"; cb: "bu.cb"; cc: "bu.cc"; cd: "bu.cd"; ce: "bu.ce"; cf: "bu.cf"; cg: "bu.cg"; ch: "bu.ch"; ci: "bu.ci"; cj: "bu.cj"; ck: "bu.ck"; cl: "bu.cl"; cm: "bu.cm"; cn: "bu.cn"; co: "bu.co"; cp: "bu.cp"; cq: "bu.cq"; cr: "bu.cr"; cs: "bu.cs"; ct: "bu.ct"; cu: "bu.cu"; cv: "bu.cv"; cw: "bu.cw"; cx: "bu.cx"; cy: "bu.cy"; cz: "bu.cz"; da: "bu.da"; db: "bu.db"; dc: "bu.dc"; dd: "bu.dd"; de: "bu.de"; df: "bu.df"; dg: "bu.dg"; dh: "bu.dh"; di: "bu.di"; dj: "bu.dj"; dk: "bu.dk"; dl: "bu.dl"; dm: "bu.dm"; dn: "bu.dn"; do: "bu.do"; dp: "bu.dp"; dq: "bu.dq"; dr: "bu.dr"; ds: "bu.ds"; dt: "bu.dt"; du: "bu.du"; dv: "bu.dv"; dw: "bu.dw"; dx: "bu.dx"; dy: "bu.dy"; dz: "bu.dz"; ea: "bu.ea"; eb: "bu.eb"; ec: "bu.ec"; ed: "bu.ed"; ee: "bu.ee"; ef: "bu.ef"; eg: "bu.eg"; eh: "bu.eh"; ei: "bu.ei"; ej: "bu.ej"; ek: "bu.ek"; el: "bu.el"; em: "bu.em"; en: "bu.en"; eo: "bu.eo"; ep: "bu.ep"; eq: "bu.eq"; er: "bu.er"; es: "bu.es"; et: "bu.et"; eu: "bu.eu"; ev: "bu.ev"; ew: "bu.ew"; ex: "bu.ex"; ey: "bu.ey"; ez: "bu.ez"; fa: "bu.fa"; fb: "bu.fb"; fc: "bu.fc"; fd: "bu.fd"; fe: "bu.fe"; ff: "bu.ff"; fg: "bu.fg"; fh: "bu.fh"; fi: "bu.fi"; fj: "bu.fj"; fk: "bu.fk"; fl: "bu.fl"; fm: "bu.fm"; fn: "bu.fn"; fo: "bu.fo"; fp: "bu.fp"; fq: "bu.fq"; fr: "bu.fr"; fs: "bu.fs"; ft: "bu.ft"; fu: "bu.fu"; fv: "bu.fv"; fw: "bu.fw"; fx: "bu.fx"; fy: "bu.fy"; fz: "bu.fz"; ga: "bu.ga"; gb: "bu.gb"; gc: "bu.gc"; gd: "bu.gd"; ge: "bu.ge"; gf: "bu.gf"; gg: "bu.gg"; gh: "bu.gh"; gi: "bu.gi"; gj: "bu.gj"; gk: "bu.gk"; gl: "bu.gl"; gm: "bu.gm"; gn: "bu.gn"; go: "bu.go"; gp: "bu.gp"; gq: "bu.gq"; gr: "bu.gr"; gs: "bu.gs"; gt: "bu.gt"; gu: "bu.gu"; gv: "bu.gv"; gw: "bu.gw"; gx: "bu.gx"; gy: "bu.gy"; gz: "bu.gz"; ha: "bu.ha"; hb: "bu.hb"; hc: "bu.hc"; hd: "bu.hd"; he: "bu.he"; hf: "bu.hf"; hg: "bu.hg"; hh: "bu.hh"; hi: "bu.hi"; hj: "bu.hj"; hk: "bu.hk"; hl: "bu.hl"; hm: "bu.hm"; hn: "bu.hn"; ho: "bu.ho"; hp: "bu.hp"; hq: "bu.hq"; hr: "bu.hr"; hs: "bu.hs"; ht: "bu.ht"; hu: "bu.hu"; hv: "bu.hv"; hw: "bu.hw"; hx: "bu.hx"; hy: "bu.hy"; hz: "bu.hz"; ia: "bu.ia"; ib: "bu.ib"; ic: "bu.ic"; id: "bu.id"; ie: "bu.ie"; if: "bu.if"; ig: "bu.ig"; ih: "bu.ih"; ii: "bu.ii"; ij: "bu.ij"; ik: "bu.ik"; il: "bu.il"; im: "bu.im"; in: "bu.in"; io: "bu.io"; ip: "bu.ip"; iq: "bu.iq"; ir: "bu.ir"; is: "bu.is"; it: "bu.it"; iu: "bu.iu"; iv: "bu.iv"; iw: "bu.iw"; ix: "bu.ix"; iy: "bu.iy"; iz: "bu.iz"; ja: "bu.ja"; jb: "bu.jb"; jc: "bu.jc"; jd: "bu.jd"; je: "bu.je"; jf: "bu.jf"; jg: "bu.jg"; jh: "bu.jh"; ji: "bu.ji"; jj: "bu.jj"; jk: "bu.jk"; jl: "bu.jl"; jm: "bu.jm"; jn: "bu.jn"; jo: "bu.jo"; jp: "bu.jp"; jq: "bu.jq"; jr: "bu.jr"; js: "bu.js"; jt: "bu.jt"; ju: "bu.ju"; jv: "bu.jv"; jw: "bu.jw"; jx: "bu.jx"; jy: "bu.jy"; jz: "bu.jz"; ka: "bu.ka"; kb: "bu.kb"; kc: "bu.kc"; kd: "bu.kd"; ke: "bu.ke"; kf: "bu.kf"; kg: "bu.kg"; kh: "bu.kh"; ki: "bu.ki"; kj: "bu.kj"; kk: "bu.kk"; kl: "bu.kl"; km: "bu.km"; kn: "bu.kn"; ko: "bu.ko"; kp: "bu.kp"; kq: "bu.kq"; kr: "bu.kr"; ks: "bu.ks"; kt: "bu.kt"; ku: "bu.ku"; kv: "bu.kv"; kw: "bu.kw"; kx: "bu.kx"; ky: "bu.ky"; kz: "bu.kz"; la: "bu.la"; lb: "bu.lb"; lc: "bu.lc"; ld: "bu.ld"; le: "bu.le"; lf: "bu.lf"; lg: "bu.lg"; lh: "bu.lh"; li: "bu.li"; lj: "bu.lj"; lk: "bu.lk"; ll: "bu.ll"; lm: "bu.lm"; ln: "bu.ln"; lo: "bu.lo"; lp: "bu.lp"; lq: "bu.lq"; lr: "bu.lr"; ls: "bu.ls"; lt: "bu.lt"; lu: "bu.lu"; lv: "bu.lv"; lw: "bu.lw"; lx: "bu.lx"; ly: "bu.ly"; lz: "bu.lz"; ma: "bu.ma"; mb: "bu.mb"; mc: "bu.mc"; md: "bu.md"; me: "bu.me"; mf: "bu.mf"; mg: "bu.mg"; mh: "bu.mh"; mi: "bu.mi"; mj: "bu.mj"; mk: "bu.mk"; ml: "bu.ml"; mm: "bu.mm"; mn: "bu.mn"; mo: "bu.mo"; mp: "bu.mp"; mq: "bu.mq"; mr: "bu.mr"; ms: "bu.ms"; mt: "bu.mt"; mu: "bu.mu"; mv: "bu.mv"; mw: "bu.mw"; mx: "bu.mx"; my: "bu.my"; mz: "bu.mz"; na: "bu.na"; nb: "bu.nb"; nc: "bu.nc"; nd: "bu.nd"; ne: "bu.ne"; nf: "bu.nf"; ng: "bu.ng"; nh: "bu.nh"; ni: "bu.ni"; nj: "bu.nj"; nk: "bu.nk"; nl: "bu.nl"; nm: "bu.nm"; nn: "bu.nn"; no: "bu.no"; np: "bu.np"; nq: "bu.nq"; nr: "bu.nr"; ns: "bu.ns"; nt: "bu.nt"; nu: "bu.nu"; nv: "bu.nv"; nw: "bu.nw"; nx: "bu.nx"; ny: "bu.ny"; nz: "bu.nz"; oa: "bu.oa"; ob: "bu.ob"; oc: "bu.oc"; od: "bu.od"; oe: "bu.oe"; of: "bu.of"; og: "bu.og"; oh: "bu.oh"; oi: "bu.oi"; oj: "bu.oj"; ok: "bu.ok"; ol: "bu.ol"; om: "bu.om"; on: "bu.on"; oo: "bu.oo"; op: "bu.op"; oq: "bu.oq"; or: "bu.or"; os: "bu.os"; ot: "bu.ot"; ou: "bu.ou"; ov: "bu.ov"; ow: "bu.ow"; ox: "bu.ox"; oy: "bu.oy"; oz: "bu.oz"; pa: "bu.pa"; pb: "bu.pb"; pc: "bu.pc"; pd: "bu.pd"; pe: "bu.pe"; pf: "bu.pf"; pg: "bu.pg"; ph: "bu.ph"; pi: "bu.pi"; pj: "bu.pj"; pk: "bu.pk"; pl: "bu.pl"; pm: "bu.pm"; pn: "bu.pn"; po: "bu.po"; pp: "bu.pp"; pq: "bu.pq"; pr: "bu.pr"; ps: "bu.ps"; pt: "bu.pt"; pu: "bu.pu"; pv: "bu.pv"; pw: "bu.pw"; px: "bu.px"; py: "bu.py"; pz: "bu.pz"; qa: "bu.qa"; qb: "bu.qb"; qc: "bu.qc"; qd: "bu.qd"; qe: "bu.qe"; qf: "bu.qf"; qg: "bu.qg"; qh: "bu.qh"; qi: "bu.qi"; qj: "bu.qj"; qk: "bu.qk"; ql: "bu.ql"; qm: "bu.qm"; qn: "bu.qn"; qo: "bu.qo"; qp: "bu.qp"; qq: "bu.qq"; qr: "bu.qr"; qs: "bu.qs"; qt: "bu.qt"; qu: "bu.qu"; qv: "bu.qv"; qw: "bu.qw"; qx: "bu.qx"; qy: "bu.qy"; qz: "bu.qz"; ra: "bu.ra"; rb: "bu.rb"; rc: "bu.rc"; rd: "bu.rd"; re: "bu.re"; rf: "bu.rf"; rg: "bu.rg"; rh: "bu.rh"; ri: "bu.ri"; rj: "bu.rj"; rk: "bu.rk"; rl: "bu.rl"; rm: "bu.rm"; rn: "bu.rn"; ro: "bu.ro"; rp: "bu.rp"; rq: "bu.rq"; rr: "bu.rr"; rs: "bu.rs"; rt: "bu.rt"; ru: "bu.ru"; rv: "bu.rv"; rw: "bu.rw"; rx: "bu.rx"; ry: "bu.ry"; rz: "bu.rz"; sa: "bu.sa"; sb: "bu.sb"; sc: "bu.sc"; sd: "bu.sd"; se: "bu.se"; sf: "bu.sf"; sg: "bu.sg"; sh: "bu.sh"; si: "bu.si"; sj: "bu.sj"; sk: "bu.sk"; sl: "bu.sl"; sm: "bu.sm"; sn: "bu.sn"; so: "bu.so"; sp: "bu.sp"; sq: "bu.sq"; sr: "bu.sr"; ss: "bu.ss"; st: "bu.st"; su: "bu.su"; sv: "bu.sv"; sw: "bu.sw"; sx: "bu.sx"; sy: "bu.sy"; sz: "bu.sz"; ta: "bu.ta"; tb: "bu.tb"; tc: "bu.tc"; td: "bu.td"; te: "bu.te"; tf: "bu.tf"; tg: "bu.tg"; th: "bu.th"; ti: "bu.ti"; tj: "bu.tj"; tk: "bu.tk"; tl: "bu.tl"; tm: "bu.tm"; tn: "bu.tn"; to: "bu.to"; tp: "bu.tp"; tq: "bu.tq"; tr: "bu.tr"; ts: "bu.ts"; tt: "bu.tt"; tu: "bu.tu"; tv: "bu.tv"; tw: "bu.tw"; tx: "bu.tx"; ty: "bu.ty"; tz: "bu.tz"; ua: "bu.ua"; ub: "bu.ub"; uc: "bu.uc"; ud: "bu.ud"; ue: "bu.ue"; uf: "bu.uf"; ug: "bu.ug"; uh: "bu.uh"; ui: "bu.ui"; uj: "bu.uj"; uk: "bu.uk"; ul: "bu.ul"; um: "bu.um"; un: "bu.un"; uo: "bu.uo"; up: "bu.up"; uq: "bu.uq"; ur: "bu.ur"; us: "bu.us"; ut: "bu.ut"; uu: "bu.uu"; uv: "bu.uv"; uw: "bu.uw"; ux: "bu.ux"; uy: "bu.uy"; uz: "bu.uz"; va: "bu.va"; vb: "bu.vb"; vc: "bu.vc"; vd: "bu.vd"; ve: "bu.ve"; vf: "bu.vf"; vg: "bu.vg"; vh: "bu.vh"; vi: "bu.vi"; vj: "bu.vj"; vk: "bu.vk"; vl: "bu.vl"; vm: "bu.vm"; vn: "bu.vn"; vo: "bu.vo"; vp: "bu.vp"; vq: "bu.vq"; vr: "bu.vr"; vs: "bu.vs"; vt: "bu.vt"; vu: "bu.vu"; vv: "bu.vv"; vw: "bu.vw"; vx: "bu.vx"; vy: "bu.vy"; vz: "bu.vz"; wa: "bu.wa"; wb: "bu.wb"; wc: "bu.wc"; wd: "bu.wd"; we: "bu.we"; wf: "bu.wf"; wg: "bu.wg"; wh: "bu.wh"; wi: "bu.wi"; wj: "bu.wj"; wk: "bu.wk"; wl: "bu.wl"; wm: "bu.wm"; wn: "bu.wn"; wo: "bu.wo"; wp: "bu.wp"; wq: "bu.wq"; wr: "bu.wr"; ws: "bu.ws"; wt: "bu.wt"; wu: "bu.wu"; wv: "bu.wv"; ww: "bu.ww"; wx: "bu.wx"; wy: "bu.wy"; wz: "bu.wz"; xa: "bu.xa"; xb: "bu.xb"; xc: "bu.xc"; xd: "bu.xd"; xe: "bu.xe"; xf: "bu.xf"; xg: "bu.xg"; xh: "bu.xh"; xi: "bu.xi"; xj: "bu.xj"; xk: "bu.xk"; xl: "bu.xl"; xm: "bu.xm"; xn: "bu.xn"; xo: "bu.xo"; xp: "bu.xp"; xq: "bu.xq"; xr: "bu.xr"; xs: "bu.xs"; xt: "bu.xt"; xu: "bu.xu"; xv: "bu.xv"; xw: "bu.xw"; xx: "bu.xx"; xy: "bu.xy"; xz: "bu.xz"; ya: "bu.ya"; yb: "bu.yb"; yc: "bu.yc"; yd: "bu.yd"; ye: "bu.ye"; yf: "bu.yf"; yg: "bu.yg"; yh: "bu.yh"; yi: "bu.yi"; yj: "bu.yj"; yk: "bu.yk"; yl: "bu.yl"; ym: "bu.ym"; yn: "bu.yn"; yo: "bu.yo"; yp: "bu.yp"; yq: "bu.yq"; yr: "bu.yr"; ys: "bu.ys"; yt: "bu.yt"; yu: "bu.yu"; yv: "bu.yv"; yw: "bu.yw"; yx: "bu.yx"; yy: "bu.yy"; yz: "bu.yz"; za: "bu.za"; zb: "bu.zb"; zc: "bu.zc"; zd: "bu.zd"; ze: "bu.ze"; zf: "bu.zf"; zg: "bu.zg"; zh: "bu.zh"; zi: "bu.zi"; zj: "bu.zj"; zk: "bu.zk"; zl: "bu.zl"; zm: "bu.zm"; zn: "bu.zn"; zo: "bu.zo"; zp: "bu.zp"; zq: "bu.zq"; zr: "bu.zr"; zs: "bu.zs"; zt: "bu.zt"; zu: "bu.zu"; zv: "bu.zv"; zw: "bu.zw"; zx: "bu.zx"; zy: "bu.zy"; zz: "bu.zz"; }; bv: { aa: "bv.aa"; ab: "bv.ab"; ac: "bv.ac"; ad: "bv.ad"; ae: "bv.ae"; af: "bv.af"; ag: "bv.ag"; ah: "bv.ah"; ai: "bv.ai"; aj: "bv.aj"; ak: "bv.ak"; al: "bv.al"; am: "bv.am"; an: "bv.an"; ao: "bv.ao"; ap: "bv.ap"; aq: "bv.aq"; ar: "bv.ar"; as: "bv.as"; at: "bv.at"; au: "bv.au"; av: "bv.av"; aw: "bv.aw"; ax: "bv.ax"; ay: "bv.ay"; az: "bv.az"; ba: "bv.ba"; bb: "bv.bb"; bc: "bv.bc"; bd: "bv.bd"; be: "bv.be"; bf: "bv.bf"; bg: "bv.bg"; bh: "bv.bh"; bi: "bv.bi"; bj: "bv.bj"; bk: "bv.bk"; bl: "bv.bl"; bm: "bv.bm"; bn: "bv.bn"; bo: "bv.bo"; bp: "bv.bp"; bq: "bv.bq"; br: "bv.br"; bs: "bv.bs"; bt: "bv.bt"; bu: "bv.bu"; bv: "bv.bv"; bw: "bv.bw"; bx: "bv.bx"; by: "bv.by"; bz: "bv.bz"; ca: "bv.ca"; cb: "bv.cb"; cc: "bv.cc"; cd: "bv.cd"; ce: "bv.ce"; cf: "bv.cf"; cg: "bv.cg"; ch: "bv.ch"; ci: "bv.ci"; cj: "bv.cj"; ck: "bv.ck"; cl: "bv.cl"; cm: "bv.cm"; cn: "bv.cn"; co: "bv.co"; cp: "bv.cp"; cq: "bv.cq"; cr: "bv.cr"; cs: "bv.cs"; ct: "bv.ct"; cu: "bv.cu"; cv: "bv.cv"; cw: "bv.cw"; cx: "bv.cx"; cy: "bv.cy"; cz: "bv.cz"; da: "bv.da"; db: "bv.db"; dc: "bv.dc"; dd: "bv.dd"; de: "bv.de"; df: "bv.df"; dg: "bv.dg"; dh: "bv.dh"; di: "bv.di"; dj: "bv.dj"; dk: "bv.dk"; dl: "bv.dl"; dm: "bv.dm"; dn: "bv.dn"; do: "bv.do"; dp: "bv.dp"; dq: "bv.dq"; dr: "bv.dr"; ds: "bv.ds"; dt: "bv.dt"; du: "bv.du"; dv: "bv.dv"; dw: "bv.dw"; dx: "bv.dx"; dy: "bv.dy"; dz: "bv.dz"; ea: "bv.ea"; eb: "bv.eb"; ec: "bv.ec"; ed: "bv.ed"; ee: "bv.ee"; ef: "bv.ef"; eg: "bv.eg"; eh: "bv.eh"; ei: "bv.ei"; ej: "bv.ej"; ek: "bv.ek"; el: "bv.el"; em: "bv.em"; en: "bv.en"; eo: "bv.eo"; ep: "bv.ep"; eq: "bv.eq"; er: "bv.er"; es: "bv.es"; et: "bv.et"; eu: "bv.eu"; ev: "bv.ev"; ew: "bv.ew"; ex: "bv.ex"; ey: "bv.ey"; ez: "bv.ez"; fa: "bv.fa"; fb: "bv.fb"; fc: "bv.fc"; fd: "bv.fd"; fe: "bv.fe"; ff: "bv.ff"; fg: "bv.fg"; fh: "bv.fh"; fi: "bv.fi"; fj: "bv.fj"; fk: "bv.fk"; fl: "bv.fl"; fm: "bv.fm"; fn: "bv.fn"; fo: "bv.fo"; fp: "bv.fp"; fq: "bv.fq"; fr: "bv.fr"; fs: "bv.fs"; ft: "bv.ft"; fu: "bv.fu"; fv: "bv.fv"; fw: "bv.fw"; fx: "bv.fx"; fy: "bv.fy"; fz: "bv.fz"; ga: "bv.ga"; gb: "bv.gb"; gc: "bv.gc"; gd: "bv.gd"; ge: "bv.ge"; gf: "bv.gf"; gg: "bv.gg"; gh: "bv.gh"; gi: "bv.gi"; gj: "bv.gj"; gk: "bv.gk"; gl: "bv.gl"; gm: "bv.gm"; gn: "bv.gn"; go: "bv.go"; gp: "bv.gp"; gq: "bv.gq"; gr: "bv.gr"; gs: "bv.gs"; gt: "bv.gt"; gu: "bv.gu"; gv: "bv.gv"; gw: "bv.gw"; gx: "bv.gx"; gy: "bv.gy"; gz: "bv.gz"; ha: "bv.ha"; hb: "bv.hb"; hc: "bv.hc"; hd: "bv.hd"; he: "bv.he"; hf: "bv.hf"; hg: "bv.hg"; hh: "bv.hh"; hi: "bv.hi"; hj: "bv.hj"; hk: "bv.hk"; hl: "bv.hl"; hm: "bv.hm"; hn: "bv.hn"; ho: "bv.ho"; hp: "bv.hp"; hq: "bv.hq"; hr: "bv.hr"; hs: "bv.hs"; ht: "bv.ht"; hu: "bv.hu"; hv: "bv.hv"; hw: "bv.hw"; hx: "bv.hx"; hy: "bv.hy"; hz: "bv.hz"; ia: "bv.ia"; ib: "bv.ib"; ic: "bv.ic"; id: "bv.id"; ie: "bv.ie"; if: "bv.if"; ig: "bv.ig"; ih: "bv.ih"; ii: "bv.ii"; ij: "bv.ij"; ik: "bv.ik"; il: "bv.il"; im: "bv.im"; in: "bv.in"; io: "bv.io"; ip: "bv.ip"; iq: "bv.iq"; ir: "bv.ir"; is: "bv.is"; it: "bv.it"; iu: "bv.iu"; iv: "bv.iv"; iw: "bv.iw"; ix: "bv.ix"; iy: "bv.iy"; iz: "bv.iz"; ja: "bv.ja"; jb: "bv.jb"; jc: "bv.jc"; jd: "bv.jd"; je: "bv.je"; jf: "bv.jf"; jg: "bv.jg"; jh: "bv.jh"; ji: "bv.ji"; jj: "bv.jj"; jk: "bv.jk"; jl: "bv.jl"; jm: "bv.jm"; jn: "bv.jn"; jo: "bv.jo"; jp: "bv.jp"; jq: "bv.jq"; jr: "bv.jr"; js: "bv.js"; jt: "bv.jt"; ju: "bv.ju"; jv: "bv.jv"; jw: "bv.jw"; jx: "bv.jx"; jy: "bv.jy"; jz: "bv.jz"; ka: "bv.ka"; kb: "bv.kb"; kc: "bv.kc"; kd: "bv.kd"; ke: "bv.ke"; kf: "bv.kf"; kg: "bv.kg"; kh: "bv.kh"; ki: "bv.ki"; kj: "bv.kj"; kk: "bv.kk"; kl: "bv.kl"; km: "bv.km"; kn: "bv.kn"; ko: "bv.ko"; kp: "bv.kp"; kq: "bv.kq"; kr: "bv.kr"; ks: "bv.ks"; kt: "bv.kt"; ku: "bv.ku"; kv: "bv.kv"; kw: "bv.kw"; kx: "bv.kx"; ky: "bv.ky"; kz: "bv.kz"; la: "bv.la"; lb: "bv.lb"; lc: "bv.lc"; ld: "bv.ld"; le: "bv.le"; lf: "bv.lf"; lg: "bv.lg"; lh: "bv.lh"; li: "bv.li"; lj: "bv.lj"; lk: "bv.lk"; ll: "bv.ll"; lm: "bv.lm"; ln: "bv.ln"; lo: "bv.lo"; lp: "bv.lp"; lq: "bv.lq"; lr: "bv.lr"; ls: "bv.ls"; lt: "bv.lt"; lu: "bv.lu"; lv: "bv.lv"; lw: "bv.lw"; lx: "bv.lx"; ly: "bv.ly"; lz: "bv.lz"; ma: "bv.ma"; mb: "bv.mb"; mc: "bv.mc"; md: "bv.md"; me: "bv.me"; mf: "bv.mf"; mg: "bv.mg"; mh: "bv.mh"; mi: "bv.mi"; mj: "bv.mj"; mk: "bv.mk"; ml: "bv.ml"; mm: "bv.mm"; mn: "bv.mn"; mo: "bv.mo"; mp: "bv.mp"; mq: "bv.mq"; mr: "bv.mr"; ms: "bv.ms"; mt: "bv.mt"; mu: "bv.mu"; mv: "bv.mv"; mw: "bv.mw"; mx: "bv.mx"; my: "bv.my"; mz: "bv.mz"; na: "bv.na"; nb: "bv.nb"; nc: "bv.nc"; nd: "bv.nd"; ne: "bv.ne"; nf: "bv.nf"; ng: "bv.ng"; nh: "bv.nh"; ni: "bv.ni"; nj: "bv.nj"; nk: "bv.nk"; nl: "bv.nl"; nm: "bv.nm"; nn: "bv.nn"; no: "bv.no"; np: "bv.np"; nq: "bv.nq"; nr: "bv.nr"; ns: "bv.ns"; nt: "bv.nt"; nu: "bv.nu"; nv: "bv.nv"; nw: "bv.nw"; nx: "bv.nx"; ny: "bv.ny"; nz: "bv.nz"; oa: "bv.oa"; ob: "bv.ob"; oc: "bv.oc"; od: "bv.od"; oe: "bv.oe"; of: "bv.of"; og: "bv.og"; oh: "bv.oh"; oi: "bv.oi"; oj: "bv.oj"; ok: "bv.ok"; ol: "bv.ol"; om: "bv.om"; on: "bv.on"; oo: "bv.oo"; op: "bv.op"; oq: "bv.oq"; or: "bv.or"; os: "bv.os"; ot: "bv.ot"; ou: "bv.ou"; ov: "bv.ov"; ow: "bv.ow"; ox: "bv.ox"; oy: "bv.oy"; oz: "bv.oz"; pa: "bv.pa"; pb: "bv.pb"; pc: "bv.pc"; pd: "bv.pd"; pe: "bv.pe"; pf: "bv.pf"; pg: "bv.pg"; ph: "bv.ph"; pi: "bv.pi"; pj: "bv.pj"; pk: "bv.pk"; pl: "bv.pl"; pm: "bv.pm"; pn: "bv.pn"; po: "bv.po"; pp: "bv.pp"; pq: "bv.pq"; pr: "bv.pr"; ps: "bv.ps"; pt: "bv.pt"; pu: "bv.pu"; pv: "bv.pv"; pw: "bv.pw"; px: "bv.px"; py: "bv.py"; pz: "bv.pz"; qa: "bv.qa"; qb: "bv.qb"; qc: "bv.qc"; qd: "bv.qd"; qe: "bv.qe"; qf: "bv.qf"; qg: "bv.qg"; qh: "bv.qh"; qi: "bv.qi"; qj: "bv.qj"; qk: "bv.qk"; ql: "bv.ql"; qm: "bv.qm"; qn: "bv.qn"; qo: "bv.qo"; qp: "bv.qp"; qq: "bv.qq"; qr: "bv.qr"; qs: "bv.qs"; qt: "bv.qt"; qu: "bv.qu"; qv: "bv.qv"; qw: "bv.qw"; qx: "bv.qx"; qy: "bv.qy"; qz: "bv.qz"; ra: "bv.ra"; rb: "bv.rb"; rc: "bv.rc"; rd: "bv.rd"; re: "bv.re"; rf: "bv.rf"; rg: "bv.rg"; rh: "bv.rh"; ri: "bv.ri"; rj: "bv.rj"; rk: "bv.rk"; rl: "bv.rl"; rm: "bv.rm"; rn: "bv.rn"; ro: "bv.ro"; rp: "bv.rp"; rq: "bv.rq"; rr: "bv.rr"; rs: "bv.rs"; rt: "bv.rt"; ru: "bv.ru"; rv: "bv.rv"; rw: "bv.rw"; rx: "bv.rx"; ry: "bv.ry"; rz: "bv.rz"; sa: "bv.sa"; sb: "bv.sb"; sc: "bv.sc"; sd: "bv.sd"; se: "bv.se"; sf: "bv.sf"; sg: "bv.sg"; sh: "bv.sh"; si: "bv.si"; sj: "bv.sj"; sk: "bv.sk"; sl: "bv.sl"; sm: "bv.sm"; sn: "bv.sn"; so: "bv.so"; sp: "bv.sp"; sq: "bv.sq"; sr: "bv.sr"; ss: "bv.ss"; st: "bv.st"; su: "bv.su"; sv: "bv.sv"; sw: "bv.sw"; sx: "bv.sx"; sy: "bv.sy"; sz: "bv.sz"; ta: "bv.ta"; tb: "bv.tb"; tc: "bv.tc"; td: "bv.td"; te: "bv.te"; tf: "bv.tf"; tg: "bv.tg"; th: "bv.th"; ti: "bv.ti"; tj: "bv.tj"; tk: "bv.tk"; tl: "bv.tl"; tm: "bv.tm"; tn: "bv.tn"; to: "bv.to"; tp: "bv.tp"; tq: "bv.tq"; tr: "bv.tr"; ts: "bv.ts"; tt: "bv.tt"; tu: "bv.tu"; tv: "bv.tv"; tw: "bv.tw"; tx: "bv.tx"; ty: "bv.ty"; tz: "bv.tz"; ua: "bv.ua"; ub: "bv.ub"; uc: "bv.uc"; ud: "bv.ud"; ue: "bv.ue"; uf: "bv.uf"; ug: "bv.ug"; uh: "bv.uh"; ui: "bv.ui"; uj: "bv.uj"; uk: "bv.uk"; ul: "bv.ul"; um: "bv.um"; un: "bv.un"; uo: "bv.uo"; up: "bv.up"; uq: "bv.uq"; ur: "bv.ur"; us: "bv.us"; ut: "bv.ut"; uu: "bv.uu"; uv: "bv.uv"; uw: "bv.uw"; ux: "bv.ux"; uy: "bv.uy"; uz: "bv.uz"; va: "bv.va"; vb: "bv.vb"; vc: "bv.vc"; vd: "bv.vd"; ve: "bv.ve"; vf: "bv.vf"; vg: "bv.vg"; vh: "bv.vh"; vi: "bv.vi"; vj: "bv.vj"; vk: "bv.vk"; vl: "bv.vl"; vm: "bv.vm"; vn: "bv.vn"; vo: "bv.vo"; vp: "bv.vp"; vq: "bv.vq"; vr: "bv.vr"; vs: "bv.vs"; vt: "bv.vt"; vu: "bv.vu"; vv: "bv.vv"; vw: "bv.vw"; vx: "bv.vx"; vy: "bv.vy"; vz: "bv.vz"; wa: "bv.wa"; wb: "bv.wb"; wc: "bv.wc"; wd: "bv.wd"; we: "bv.we"; wf: "bv.wf"; wg: "bv.wg"; wh: "bv.wh"; wi: "bv.wi"; wj: "bv.wj"; wk: "bv.wk"; wl: "bv.wl"; wm: "bv.wm"; wn: "bv.wn"; wo: "bv.wo"; wp: "bv.wp"; wq: "bv.wq"; wr: "bv.wr"; ws: "bv.ws"; wt: "bv.wt"; wu: "bv.wu"; wv: "bv.wv"; ww: "bv.ww"; wx: "bv.wx"; wy: "bv.wy"; wz: "bv.wz"; xa: "bv.xa"; xb: "bv.xb"; xc: "bv.xc"; xd: "bv.xd"; xe: "bv.xe"; xf: "bv.xf"; xg: "bv.xg"; xh: "bv.xh"; xi: "bv.xi"; xj: "bv.xj"; xk: "bv.xk"; xl: "bv.xl"; xm: "bv.xm"; xn: "bv.xn"; xo: "bv.xo"; xp: "bv.xp"; xq: "bv.xq"; xr: "bv.xr"; xs: "bv.xs"; xt: "bv.xt"; xu: "bv.xu"; xv: "bv.xv"; xw: "bv.xw"; xx: "bv.xx"; xy: "bv.xy"; xz: "bv.xz"; ya: "bv.ya"; yb: "bv.yb"; yc: "bv.yc"; yd: "bv.yd"; ye: "bv.ye"; yf: "bv.yf"; yg: "bv.yg"; yh: "bv.yh"; yi: "bv.yi"; yj: "bv.yj"; yk: "bv.yk"; yl: "bv.yl"; ym: "bv.ym"; yn: "bv.yn"; yo: "bv.yo"; yp: "bv.yp"; yq: "bv.yq"; yr: "bv.yr"; ys: "bv.ys"; yt: "bv.yt"; yu: "bv.yu"; yv: "bv.yv"; yw: "bv.yw"; yx: "bv.yx"; yy: "bv.yy"; yz: "bv.yz"; za: "bv.za"; zb: "bv.zb"; zc: "bv.zc"; zd: "bv.zd"; ze: "bv.ze"; zf: "bv.zf"; zg: "bv.zg"; zh: "bv.zh"; zi: "bv.zi"; zj: "bv.zj"; zk: "bv.zk"; zl: "bv.zl"; zm: "bv.zm"; zn: "bv.zn"; zo: "bv.zo"; zp: "bv.zp"; zq: "bv.zq"; zr: "bv.zr"; zs: "bv.zs"; zt: "bv.zt"; zu: "bv.zu"; zv: "bv.zv"; zw: "bv.zw"; zx: "bv.zx"; zy: "bv.zy"; zz: "bv.zz"; }; bw: { aa: "bw.aa"; ab: "bw.ab"; ac: "bw.ac"; ad: "bw.ad"; ae: "bw.ae"; af: "bw.af"; ag: "bw.ag"; ah: "bw.ah"; ai: "bw.ai"; aj: "bw.aj"; ak: "bw.ak"; al: "bw.al"; am: "bw.am"; an: "bw.an"; ao: "bw.ao"; ap: "bw.ap"; aq: "bw.aq"; ar: "bw.ar"; as: "bw.as"; at: "bw.at"; au: "bw.au"; av: "bw.av"; aw: "bw.aw"; ax: "bw.ax"; ay: "bw.ay"; az: "bw.az"; ba: "bw.ba"; bb: "bw.bb"; bc: "bw.bc"; bd: "bw.bd"; be: "bw.be"; bf: "bw.bf"; bg: "bw.bg"; bh: "bw.bh"; bi: "bw.bi"; bj: "bw.bj"; bk: "bw.bk"; bl: "bw.bl"; bm: "bw.bm"; bn: "bw.bn"; bo: "bw.bo"; bp: "bw.bp"; bq: "bw.bq"; br: "bw.br"; bs: "bw.bs"; bt: "bw.bt"; bu: "bw.bu"; bv: "bw.bv"; bw: "bw.bw"; bx: "bw.bx"; by: "bw.by"; bz: "bw.bz"; ca: "bw.ca"; cb: "bw.cb"; cc: "bw.cc"; cd: "bw.cd"; ce: "bw.ce"; cf: "bw.cf"; cg: "bw.cg"; ch: "bw.ch"; ci: "bw.ci"; cj: "bw.cj"; ck: "bw.ck"; cl: "bw.cl"; cm: "bw.cm"; cn: "bw.cn"; co: "bw.co"; cp: "bw.cp"; cq: "bw.cq"; cr: "bw.cr"; cs: "bw.cs"; ct: "bw.ct"; cu: "bw.cu"; cv: "bw.cv"; cw: "bw.cw"; cx: "bw.cx"; cy: "bw.cy"; cz: "bw.cz"; da: "bw.da"; db: "bw.db"; dc: "bw.dc"; dd: "bw.dd"; de: "bw.de"; df: "bw.df"; dg: "bw.dg"; dh: "bw.dh"; di: "bw.di"; dj: "bw.dj"; dk: "bw.dk"; dl: "bw.dl"; dm: "bw.dm"; dn: "bw.dn"; do: "bw.do"; dp: "bw.dp"; dq: "bw.dq"; dr: "bw.dr"; ds: "bw.ds"; dt: "bw.dt"; du: "bw.du"; dv: "bw.dv"; dw: "bw.dw"; dx: "bw.dx"; dy: "bw.dy"; dz: "bw.dz"; ea: "bw.ea"; eb: "bw.eb"; ec: "bw.ec"; ed: "bw.ed"; ee: "bw.ee"; ef: "bw.ef"; eg: "bw.eg"; eh: "bw.eh"; ei: "bw.ei"; ej: "bw.ej"; ek: "bw.ek"; el: "bw.el"; em: "bw.em"; en: "bw.en"; eo: "bw.eo"; ep: "bw.ep"; eq: "bw.eq"; er: "bw.er"; es: "bw.es"; et: "bw.et"; eu: "bw.eu"; ev: "bw.ev"; ew: "bw.ew"; ex: "bw.ex"; ey: "bw.ey"; ez: "bw.ez"; fa: "bw.fa"; fb: "bw.fb"; fc: "bw.fc"; fd: "bw.fd"; fe: "bw.fe"; ff: "bw.ff"; fg: "bw.fg"; fh: "bw.fh"; fi: "bw.fi"; fj: "bw.fj"; fk: "bw.fk"; fl: "bw.fl"; fm: "bw.fm"; fn: "bw.fn"; fo: "bw.fo"; fp: "bw.fp"; fq: "bw.fq"; fr: "bw.fr"; fs: "bw.fs"; ft: "bw.ft"; fu: "bw.fu"; fv: "bw.fv"; fw: "bw.fw"; fx: "bw.fx"; fy: "bw.fy"; fz: "bw.fz"; ga: "bw.ga"; gb: "bw.gb"; gc: "bw.gc"; gd: "bw.gd"; ge: "bw.ge"; gf: "bw.gf"; gg: "bw.gg"; gh: "bw.gh"; gi: "bw.gi"; gj: "bw.gj"; gk: "bw.gk"; gl: "bw.gl"; gm: "bw.gm"; gn: "bw.gn"; go: "bw.go"; gp: "bw.gp"; gq: "bw.gq"; gr: "bw.gr"; gs: "bw.gs"; gt: "bw.gt"; gu: "bw.gu"; gv: "bw.gv"; gw: "bw.gw"; gx: "bw.gx"; gy: "bw.gy"; gz: "bw.gz"; ha: "bw.ha"; hb: "bw.hb"; hc: "bw.hc"; hd: "bw.hd"; he: "bw.he"; hf: "bw.hf"; hg: "bw.hg"; hh: "bw.hh"; hi: "bw.hi"; hj: "bw.hj"; hk: "bw.hk"; hl: "bw.hl"; hm: "bw.hm"; hn: "bw.hn"; ho: "bw.ho"; hp: "bw.hp"; hq: "bw.hq"; hr: "bw.hr"; hs: "bw.hs"; ht: "bw.ht"; hu: "bw.hu"; hv: "bw.hv"; hw: "bw.hw"; hx: "bw.hx"; hy: "bw.hy"; hz: "bw.hz"; ia: "bw.ia"; ib: "bw.ib"; ic: "bw.ic"; id: "bw.id"; ie: "bw.ie"; if: "bw.if"; ig: "bw.ig"; ih: "bw.ih"; ii: "bw.ii"; ij: "bw.ij"; ik: "bw.ik"; il: "bw.il"; im: "bw.im"; in: "bw.in"; io: "bw.io"; ip: "bw.ip"; iq: "bw.iq"; ir: "bw.ir"; is: "bw.is"; it: "bw.it"; iu: "bw.iu"; iv: "bw.iv"; iw: "bw.iw"; ix: "bw.ix"; iy: "bw.iy"; iz: "bw.iz"; ja: "bw.ja"; jb: "bw.jb"; jc: "bw.jc"; jd: "bw.jd"; je: "bw.je"; jf: "bw.jf"; jg: "bw.jg"; jh: "bw.jh"; ji: "bw.ji"; jj: "bw.jj"; jk: "bw.jk"; jl: "bw.jl"; jm: "bw.jm"; jn: "bw.jn"; jo: "bw.jo"; jp: "bw.jp"; jq: "bw.jq"; jr: "bw.jr"; js: "bw.js"; jt: "bw.jt"; ju: "bw.ju"; jv: "bw.jv"; jw: "bw.jw"; jx: "bw.jx"; jy: "bw.jy"; jz: "bw.jz"; ka: "bw.ka"; kb: "bw.kb"; kc: "bw.kc"; kd: "bw.kd"; ke: "bw.ke"; kf: "bw.kf"; kg: "bw.kg"; kh: "bw.kh"; ki: "bw.ki"; kj: "bw.kj"; kk: "bw.kk"; kl: "bw.kl"; km: "bw.km"; kn: "bw.kn"; ko: "bw.ko"; kp: "bw.kp"; kq: "bw.kq"; kr: "bw.kr"; ks: "bw.ks"; kt: "bw.kt"; ku: "bw.ku"; kv: "bw.kv"; kw: "bw.kw"; kx: "bw.kx"; ky: "bw.ky"; kz: "bw.kz"; la: "bw.la"; lb: "bw.lb"; lc: "bw.lc"; ld: "bw.ld"; le: "bw.le"; lf: "bw.lf"; lg: "bw.lg"; lh: "bw.lh"; li: "bw.li"; lj: "bw.lj"; lk: "bw.lk"; ll: "bw.ll"; lm: "bw.lm"; ln: "bw.ln"; lo: "bw.lo"; lp: "bw.lp"; lq: "bw.lq"; lr: "bw.lr"; ls: "bw.ls"; lt: "bw.lt"; lu: "bw.lu"; lv: "bw.lv"; lw: "bw.lw"; lx: "bw.lx"; ly: "bw.ly"; lz: "bw.lz"; ma: "bw.ma"; mb: "bw.mb"; mc: "bw.mc"; md: "bw.md"; me: "bw.me"; mf: "bw.mf"; mg: "bw.mg"; mh: "bw.mh"; mi: "bw.mi"; mj: "bw.mj"; mk: "bw.mk"; ml: "bw.ml"; mm: "bw.mm"; mn: "bw.mn"; mo: "bw.mo"; mp: "bw.mp"; mq: "bw.mq"; mr: "bw.mr"; ms: "bw.ms"; mt: "bw.mt"; mu: "bw.mu"; mv: "bw.mv"; mw: "bw.mw"; mx: "bw.mx"; my: "bw.my"; mz: "bw.mz"; na: "bw.na"; nb: "bw.nb"; nc: "bw.nc"; nd: "bw.nd"; ne: "bw.ne"; nf: "bw.nf"; ng: "bw.ng"; nh: "bw.nh"; ni: "bw.ni"; nj: "bw.nj"; nk: "bw.nk"; nl: "bw.nl"; nm: "bw.nm"; nn: "bw.nn"; no: "bw.no"; np: "bw.np"; nq: "bw.nq"; nr: "bw.nr"; ns: "bw.ns"; nt: "bw.nt"; nu: "bw.nu"; nv: "bw.nv"; nw: "bw.nw"; nx: "bw.nx"; ny: "bw.ny"; nz: "bw.nz"; oa: "bw.oa"; ob: "bw.ob"; oc: "bw.oc"; od: "bw.od"; oe: "bw.oe"; of: "bw.of"; og: "bw.og"; oh: "bw.oh"; oi: "bw.oi"; oj: "bw.oj"; ok: "bw.ok"; ol: "bw.ol"; om: "bw.om"; on: "bw.on"; oo: "bw.oo"; op: "bw.op"; oq: "bw.oq"; or: "bw.or"; os: "bw.os"; ot: "bw.ot"; ou: "bw.ou"; ov: "bw.ov"; ow: "bw.ow"; ox: "bw.ox"; oy: "bw.oy"; oz: "bw.oz"; pa: "bw.pa"; pb: "bw.pb"; pc: "bw.pc"; pd: "bw.pd"; pe: "bw.pe"; pf: "bw.pf"; pg: "bw.pg"; ph: "bw.ph"; pi: "bw.pi"; pj: "bw.pj"; pk: "bw.pk"; pl: "bw.pl"; pm: "bw.pm"; pn: "bw.pn"; po: "bw.po"; pp: "bw.pp"; pq: "bw.pq"; pr: "bw.pr"; ps: "bw.ps"; pt: "bw.pt"; pu: "bw.pu"; pv: "bw.pv"; pw: "bw.pw"; px: "bw.px"; py: "bw.py"; pz: "bw.pz"; qa: "bw.qa"; qb: "bw.qb"; qc: "bw.qc"; qd: "bw.qd"; qe: "bw.qe"; qf: "bw.qf"; qg: "bw.qg"; qh: "bw.qh"; qi: "bw.qi"; qj: "bw.qj"; qk: "bw.qk"; ql: "bw.ql"; qm: "bw.qm"; qn: "bw.qn"; qo: "bw.qo"; qp: "bw.qp"; qq: "bw.qq"; qr: "bw.qr"; qs: "bw.qs"; qt: "bw.qt"; qu: "bw.qu"; qv: "bw.qv"; qw: "bw.qw"; qx: "bw.qx"; qy: "bw.qy"; qz: "bw.qz"; ra: "bw.ra"; rb: "bw.rb"; rc: "bw.rc"; rd: "bw.rd"; re: "bw.re"; rf: "bw.rf"; rg: "bw.rg"; rh: "bw.rh"; ri: "bw.ri"; rj: "bw.rj"; rk: "bw.rk"; rl: "bw.rl"; rm: "bw.rm"; rn: "bw.rn"; ro: "bw.ro"; rp: "bw.rp"; rq: "bw.rq"; rr: "bw.rr"; rs: "bw.rs"; rt: "bw.rt"; ru: "bw.ru"; rv: "bw.rv"; rw: "bw.rw"; rx: "bw.rx"; ry: "bw.ry"; rz: "bw.rz"; sa: "bw.sa"; sb: "bw.sb"; sc: "bw.sc"; sd: "bw.sd"; se: "bw.se"; sf: "bw.sf"; sg: "bw.sg"; sh: "bw.sh"; si: "bw.si"; sj: "bw.sj"; sk: "bw.sk"; sl: "bw.sl"; sm: "bw.sm"; sn: "bw.sn"; so: "bw.so"; sp: "bw.sp"; sq: "bw.sq"; sr: "bw.sr"; ss: "bw.ss"; st: "bw.st"; su: "bw.su"; sv: "bw.sv"; sw: "bw.sw"; sx: "bw.sx"; sy: "bw.sy"; sz: "bw.sz"; ta: "bw.ta"; tb: "bw.tb"; tc: "bw.tc"; td: "bw.td"; te: "bw.te"; tf: "bw.tf"; tg: "bw.tg"; th: "bw.th"; ti: "bw.ti"; tj: "bw.tj"; tk: "bw.tk"; tl: "bw.tl"; tm: "bw.tm"; tn: "bw.tn"; to: "bw.to"; tp: "bw.tp"; tq: "bw.tq"; tr: "bw.tr"; ts: "bw.ts"; tt: "bw.tt"; tu: "bw.tu"; tv: "bw.tv"; tw: "bw.tw"; tx: "bw.tx"; ty: "bw.ty"; tz: "bw.tz"; ua: "bw.ua"; ub: "bw.ub"; uc: "bw.uc"; ud: "bw.ud"; ue: "bw.ue"; uf: "bw.uf"; ug: "bw.ug"; uh: "bw.uh"; ui: "bw.ui"; uj: "bw.uj"; uk: "bw.uk"; ul: "bw.ul"; um: "bw.um"; un: "bw.un"; uo: "bw.uo"; up: "bw.up"; uq: "bw.uq"; ur: "bw.ur"; us: "bw.us"; ut: "bw.ut"; uu: "bw.uu"; uv: "bw.uv"; uw: "bw.uw"; ux: "bw.ux"; uy: "bw.uy"; uz: "bw.uz"; va: "bw.va"; vb: "bw.vb"; vc: "bw.vc"; vd: "bw.vd"; ve: "bw.ve"; vf: "bw.vf"; vg: "bw.vg"; vh: "bw.vh"; vi: "bw.vi"; vj: "bw.vj"; vk: "bw.vk"; vl: "bw.vl"; vm: "bw.vm"; vn: "bw.vn"; vo: "bw.vo"; vp: "bw.vp"; vq: "bw.vq"; vr: "bw.vr"; vs: "bw.vs"; vt: "bw.vt"; vu: "bw.vu"; vv: "bw.vv"; vw: "bw.vw"; vx: "bw.vx"; vy: "bw.vy"; vz: "bw.vz"; wa: "bw.wa"; wb: "bw.wb"; wc: "bw.wc"; wd: "bw.wd"; we: "bw.we"; wf: "bw.wf"; wg: "bw.wg"; wh: "bw.wh"; wi: "bw.wi"; wj: "bw.wj"; wk: "bw.wk"; wl: "bw.wl"; wm: "bw.wm"; wn: "bw.wn"; wo: "bw.wo"; wp: "bw.wp"; wq: "bw.wq"; wr: "bw.wr"; ws: "bw.ws"; wt: "bw.wt"; wu: "bw.wu"; wv: "bw.wv"; ww: "bw.ww"; wx: "bw.wx"; wy: "bw.wy"; wz: "bw.wz"; xa: "bw.xa"; xb: "bw.xb"; xc: "bw.xc"; xd: "bw.xd"; xe: "bw.xe"; xf: "bw.xf"; xg: "bw.xg"; xh: "bw.xh"; xi: "bw.xi"; xj: "bw.xj"; xk: "bw.xk"; xl: "bw.xl"; xm: "bw.xm"; xn: "bw.xn"; xo: "bw.xo"; xp: "bw.xp"; xq: "bw.xq"; xr: "bw.xr"; xs: "bw.xs"; xt: "bw.xt"; xu: "bw.xu"; xv: "bw.xv"; xw: "bw.xw"; xx: "bw.xx"; xy: "bw.xy"; xz: "bw.xz"; ya: "bw.ya"; yb: "bw.yb"; yc: "bw.yc"; yd: "bw.yd"; ye: "bw.ye"; yf: "bw.yf"; yg: "bw.yg"; yh: "bw.yh"; yi: "bw.yi"; yj: "bw.yj"; yk: "bw.yk"; yl: "bw.yl"; ym: "bw.ym"; yn: "bw.yn"; yo: "bw.yo"; yp: "bw.yp"; yq: "bw.yq"; yr: "bw.yr"; ys: "bw.ys"; yt: "bw.yt"; yu: "bw.yu"; yv: "bw.yv"; yw: "bw.yw"; yx: "bw.yx"; yy: "bw.yy"; yz: "bw.yz"; za: "bw.za"; zb: "bw.zb"; zc: "bw.zc"; zd: "bw.zd"; ze: "bw.ze"; zf: "bw.zf"; zg: "bw.zg"; zh: "bw.zh"; zi: "bw.zi"; zj: "bw.zj"; zk: "bw.zk"; zl: "bw.zl"; zm: "bw.zm"; zn: "bw.zn"; zo: "bw.zo"; zp: "bw.zp"; zq: "bw.zq"; zr: "bw.zr"; zs: "bw.zs"; zt: "bw.zt"; zu: "bw.zu"; zv: "bw.zv"; zw: "bw.zw"; zx: "bw.zx"; zy: "bw.zy"; zz: "bw.zz"; }; bx: { aa: "bx.aa"; ab: "bx.ab"; ac: "bx.ac"; ad: "bx.ad"; ae: "bx.ae"; af: "bx.af"; ag: "bx.ag"; ah: "bx.ah"; ai: "bx.ai"; aj: "bx.aj"; ak: "bx.ak"; al: "bx.al"; am: "bx.am"; an: "bx.an"; ao: "bx.ao"; ap: "bx.ap"; aq: "bx.aq"; ar: "bx.ar"; as: "bx.as"; at: "bx.at"; au: "bx.au"; av: "bx.av"; aw: "bx.aw"; ax: "bx.ax"; ay: "bx.ay"; az: "bx.az"; ba: "bx.ba"; bb: "bx.bb"; bc: "bx.bc"; bd: "bx.bd"; be: "bx.be"; bf: "bx.bf"; bg: "bx.bg"; bh: "bx.bh"; bi: "bx.bi"; bj: "bx.bj"; bk: "bx.bk"; bl: "bx.bl"; bm: "bx.bm"; bn: "bx.bn"; bo: "bx.bo"; bp: "bx.bp"; bq: "bx.bq"; br: "bx.br"; bs: "bx.bs"; bt: "bx.bt"; bu: "bx.bu"; bv: "bx.bv"; bw: "bx.bw"; bx: "bx.bx"; by: "bx.by"; bz: "bx.bz"; ca: "bx.ca"; cb: "bx.cb"; cc: "bx.cc"; cd: "bx.cd"; ce: "bx.ce"; cf: "bx.cf"; cg: "bx.cg"; ch: "bx.ch"; ci: "bx.ci"; cj: "bx.cj"; ck: "bx.ck"; cl: "bx.cl"; cm: "bx.cm"; cn: "bx.cn"; co: "bx.co"; cp: "bx.cp"; cq: "bx.cq"; cr: "bx.cr"; cs: "bx.cs"; ct: "bx.ct"; cu: "bx.cu"; cv: "bx.cv"; cw: "bx.cw"; cx: "bx.cx"; cy: "bx.cy"; cz: "bx.cz"; da: "bx.da"; db: "bx.db"; dc: "bx.dc"; dd: "bx.dd"; de: "bx.de"; df: "bx.df"; dg: "bx.dg"; dh: "bx.dh"; di: "bx.di"; dj: "bx.dj"; dk: "bx.dk"; dl: "bx.dl"; dm: "bx.dm"; dn: "bx.dn"; do: "bx.do"; dp: "bx.dp"; dq: "bx.dq"; dr: "bx.dr"; ds: "bx.ds"; dt: "bx.dt"; du: "bx.du"; dv: "bx.dv"; dw: "bx.dw"; dx: "bx.dx"; dy: "bx.dy"; dz: "bx.dz"; ea: "bx.ea"; eb: "bx.eb"; ec: "bx.ec"; ed: "bx.ed"; ee: "bx.ee"; ef: "bx.ef"; eg: "bx.eg"; eh: "bx.eh"; ei: "bx.ei"; ej: "bx.ej"; ek: "bx.ek"; el: "bx.el"; em: "bx.em"; en: "bx.en"; eo: "bx.eo"; ep: "bx.ep"; eq: "bx.eq"; er: "bx.er"; es: "bx.es"; et: "bx.et"; eu: "bx.eu"; ev: "bx.ev"; ew: "bx.ew"; ex: "bx.ex"; ey: "bx.ey"; ez: "bx.ez"; fa: "bx.fa"; fb: "bx.fb"; fc: "bx.fc"; fd: "bx.fd"; fe: "bx.fe"; ff: "bx.ff"; fg: "bx.fg"; fh: "bx.fh"; fi: "bx.fi"; fj: "bx.fj"; fk: "bx.fk"; fl: "bx.fl"; fm: "bx.fm"; fn: "bx.fn"; fo: "bx.fo"; fp: "bx.fp"; fq: "bx.fq"; fr: "bx.fr"; fs: "bx.fs"; ft: "bx.ft"; fu: "bx.fu"; fv: "bx.fv"; fw: "bx.fw"; fx: "bx.fx"; fy: "bx.fy"; fz: "bx.fz"; ga: "bx.ga"; gb: "bx.gb"; gc: "bx.gc"; gd: "bx.gd"; ge: "bx.ge"; gf: "bx.gf"; gg: "bx.gg"; gh: "bx.gh"; gi: "bx.gi"; gj: "bx.gj"; gk: "bx.gk"; gl: "bx.gl"; gm: "bx.gm"; gn: "bx.gn"; go: "bx.go"; gp: "bx.gp"; gq: "bx.gq"; gr: "bx.gr"; gs: "bx.gs"; gt: "bx.gt"; gu: "bx.gu"; gv: "bx.gv"; gw: "bx.gw"; gx: "bx.gx"; gy: "bx.gy"; gz: "bx.gz"; ha: "bx.ha"; hb: "bx.hb"; hc: "bx.hc"; hd: "bx.hd"; he: "bx.he"; hf: "bx.hf"; hg: "bx.hg"; hh: "bx.hh"; hi: "bx.hi"; hj: "bx.hj"; hk: "bx.hk"; hl: "bx.hl"; hm: "bx.hm"; hn: "bx.hn"; ho: "bx.ho"; hp: "bx.hp"; hq: "bx.hq"; hr: "bx.hr"; hs: "bx.hs"; ht: "bx.ht"; hu: "bx.hu"; hv: "bx.hv"; hw: "bx.hw"; hx: "bx.hx"; hy: "bx.hy"; hz: "bx.hz"; ia: "bx.ia"; ib: "bx.ib"; ic: "bx.ic"; id: "bx.id"; ie: "bx.ie"; if: "bx.if"; ig: "bx.ig"; ih: "bx.ih"; ii: "bx.ii"; ij: "bx.ij"; ik: "bx.ik"; il: "bx.il"; im: "bx.im"; in: "bx.in"; io: "bx.io"; ip: "bx.ip"; iq: "bx.iq"; ir: "bx.ir"; is: "bx.is"; it: "bx.it"; iu: "bx.iu"; iv: "bx.iv"; iw: "bx.iw"; ix: "bx.ix"; iy: "bx.iy"; iz: "bx.iz"; ja: "bx.ja"; jb: "bx.jb"; jc: "bx.jc"; jd: "bx.jd"; je: "bx.je"; jf: "bx.jf"; jg: "bx.jg"; jh: "bx.jh"; ji: "bx.ji"; jj: "bx.jj"; jk: "bx.jk"; jl: "bx.jl"; jm: "bx.jm"; jn: "bx.jn"; jo: "bx.jo"; jp: "bx.jp"; jq: "bx.jq"; jr: "bx.jr"; js: "bx.js"; jt: "bx.jt"; ju: "bx.ju"; jv: "bx.jv"; jw: "bx.jw"; jx: "bx.jx"; jy: "bx.jy"; jz: "bx.jz"; ka: "bx.ka"; kb: "bx.kb"; kc: "bx.kc"; kd: "bx.kd"; ke: "bx.ke"; kf: "bx.kf"; kg: "bx.kg"; kh: "bx.kh"; ki: "bx.ki"; kj: "bx.kj"; kk: "bx.kk"; kl: "bx.kl"; km: "bx.km"; kn: "bx.kn"; ko: "bx.ko"; kp: "bx.kp"; kq: "bx.kq"; kr: "bx.kr"; ks: "bx.ks"; kt: "bx.kt"; ku: "bx.ku"; kv: "bx.kv"; kw: "bx.kw"; kx: "bx.kx"; ky: "bx.ky"; kz: "bx.kz"; la: "bx.la"; lb: "bx.lb"; lc: "bx.lc"; ld: "bx.ld"; le: "bx.le"; lf: "bx.lf"; lg: "bx.lg"; lh: "bx.lh"; li: "bx.li"; lj: "bx.lj"; lk: "bx.lk"; ll: "bx.ll"; lm: "bx.lm"; ln: "bx.ln"; lo: "bx.lo"; lp: "bx.lp"; lq: "bx.lq"; lr: "bx.lr"; ls: "bx.ls"; lt: "bx.lt"; lu: "bx.lu"; lv: "bx.lv"; lw: "bx.lw"; lx: "bx.lx"; ly: "bx.ly"; lz: "bx.lz"; ma: "bx.ma"; mb: "bx.mb"; mc: "bx.mc"; md: "bx.md"; me: "bx.me"; mf: "bx.mf"; mg: "bx.mg"; mh: "bx.mh"; mi: "bx.mi"; mj: "bx.mj"; mk: "bx.mk"; ml: "bx.ml"; mm: "bx.mm"; mn: "bx.mn"; mo: "bx.mo"; mp: "bx.mp"; mq: "bx.mq"; mr: "bx.mr"; ms: "bx.ms"; mt: "bx.mt"; mu: "bx.mu"; mv: "bx.mv"; mw: "bx.mw"; mx: "bx.mx"; my: "bx.my"; mz: "bx.mz"; na: "bx.na"; nb: "bx.nb"; nc: "bx.nc"; nd: "bx.nd"; ne: "bx.ne"; nf: "bx.nf"; ng: "bx.ng"; nh: "bx.nh"; ni: "bx.ni"; nj: "bx.nj"; nk: "bx.nk"; nl: "bx.nl"; nm: "bx.nm"; nn: "bx.nn"; no: "bx.no"; np: "bx.np"; nq: "bx.nq"; nr: "bx.nr"; ns: "bx.ns"; nt: "bx.nt"; nu: "bx.nu"; nv: "bx.nv"; nw: "bx.nw"; nx: "bx.nx"; ny: "bx.ny"; nz: "bx.nz"; oa: "bx.oa"; ob: "bx.ob"; oc: "bx.oc"; od: "bx.od"; oe: "bx.oe"; of: "bx.of"; og: "bx.og"; oh: "bx.oh"; oi: "bx.oi"; oj: "bx.oj"; ok: "bx.ok"; ol: "bx.ol"; om: "bx.om"; on: "bx.on"; oo: "bx.oo"; op: "bx.op"; oq: "bx.oq"; or: "bx.or"; os: "bx.os"; ot: "bx.ot"; ou: "bx.ou"; ov: "bx.ov"; ow: "bx.ow"; ox: "bx.ox"; oy: "bx.oy"; oz: "bx.oz"; pa: "bx.pa"; pb: "bx.pb"; pc: "bx.pc"; pd: "bx.pd"; pe: "bx.pe"; pf: "bx.pf"; pg: "bx.pg"; ph: "bx.ph"; pi: "bx.pi"; pj: "bx.pj"; pk: "bx.pk"; pl: "bx.pl"; pm: "bx.pm"; pn: "bx.pn"; po: "bx.po"; pp: "bx.pp"; pq: "bx.pq"; pr: "bx.pr"; ps: "bx.ps"; pt: "bx.pt"; pu: "bx.pu"; pv: "bx.pv"; pw: "bx.pw"; px: "bx.px"; py: "bx.py"; pz: "bx.pz"; qa: "bx.qa"; qb: "bx.qb"; qc: "bx.qc"; qd: "bx.qd"; qe: "bx.qe"; qf: "bx.qf"; qg: "bx.qg"; qh: "bx.qh"; qi: "bx.qi"; qj: "bx.qj"; qk: "bx.qk"; ql: "bx.ql"; qm: "bx.qm"; qn: "bx.qn"; qo: "bx.qo"; qp: "bx.qp"; qq: "bx.qq"; qr: "bx.qr"; qs: "bx.qs"; qt: "bx.qt"; qu: "bx.qu"; qv: "bx.qv"; qw: "bx.qw"; qx: "bx.qx"; qy: "bx.qy"; qz: "bx.qz"; ra: "bx.ra"; rb: "bx.rb"; rc: "bx.rc"; rd: "bx.rd"; re: "bx.re"; rf: "bx.rf"; rg: "bx.rg"; rh: "bx.rh"; ri: "bx.ri"; rj: "bx.rj"; rk: "bx.rk"; rl: "bx.rl"; rm: "bx.rm"; rn: "bx.rn"; ro: "bx.ro"; rp: "bx.rp"; rq: "bx.rq"; rr: "bx.rr"; rs: "bx.rs"; rt: "bx.rt"; ru: "bx.ru"; rv: "bx.rv"; rw: "bx.rw"; rx: "bx.rx"; ry: "bx.ry"; rz: "bx.rz"; sa: "bx.sa"; sb: "bx.sb"; sc: "bx.sc"; sd: "bx.sd"; se: "bx.se"; sf: "bx.sf"; sg: "bx.sg"; sh: "bx.sh"; si: "bx.si"; sj: "bx.sj"; sk: "bx.sk"; sl: "bx.sl"; sm: "bx.sm"; sn: "bx.sn"; so: "bx.so"; sp: "bx.sp"; sq: "bx.sq"; sr: "bx.sr"; ss: "bx.ss"; st: "bx.st"; su: "bx.su"; sv: "bx.sv"; sw: "bx.sw"; sx: "bx.sx"; sy: "bx.sy"; sz: "bx.sz"; ta: "bx.ta"; tb: "bx.tb"; tc: "bx.tc"; td: "bx.td"; te: "bx.te"; tf: "bx.tf"; tg: "bx.tg"; th: "bx.th"; ti: "bx.ti"; tj: "bx.tj"; tk: "bx.tk"; tl: "bx.tl"; tm: "bx.tm"; tn: "bx.tn"; to: "bx.to"; tp: "bx.tp"; tq: "bx.tq"; tr: "bx.tr"; ts: "bx.ts"; tt: "bx.tt"; tu: "bx.tu"; tv: "bx.tv"; tw: "bx.tw"; tx: "bx.tx"; ty: "bx.ty"; tz: "bx.tz"; ua: "bx.ua"; ub: "bx.ub"; uc: "bx.uc"; ud: "bx.ud"; ue: "bx.ue"; uf: "bx.uf"; ug: "bx.ug"; uh: "bx.uh"; ui: "bx.ui"; uj: "bx.uj"; uk: "bx.uk"; ul: "bx.ul"; um: "bx.um"; un: "bx.un"; uo: "bx.uo"; up: "bx.up"; uq: "bx.uq"; ur: "bx.ur"; us: "bx.us"; ut: "bx.ut"; uu: "bx.uu"; uv: "bx.uv"; uw: "bx.uw"; ux: "bx.ux"; uy: "bx.uy"; uz: "bx.uz"; va: "bx.va"; vb: "bx.vb"; vc: "bx.vc"; vd: "bx.vd"; ve: "bx.ve"; vf: "bx.vf"; vg: "bx.vg"; vh: "bx.vh"; vi: "bx.vi"; vj: "bx.vj"; vk: "bx.vk"; vl: "bx.vl"; vm: "bx.vm"; vn: "bx.vn"; vo: "bx.vo"; vp: "bx.vp"; vq: "bx.vq"; vr: "bx.vr"; vs: "bx.vs"; vt: "bx.vt"; vu: "bx.vu"; vv: "bx.vv"; vw: "bx.vw"; vx: "bx.vx"; vy: "bx.vy"; vz: "bx.vz"; wa: "bx.wa"; wb: "bx.wb"; wc: "bx.wc"; wd: "bx.wd"; we: "bx.we"; wf: "bx.wf"; wg: "bx.wg"; wh: "bx.wh"; wi: "bx.wi"; wj: "bx.wj"; wk: "bx.wk"; wl: "bx.wl"; wm: "bx.wm"; wn: "bx.wn"; wo: "bx.wo"; wp: "bx.wp"; wq: "bx.wq"; wr: "bx.wr"; ws: "bx.ws"; wt: "bx.wt"; wu: "bx.wu"; wv: "bx.wv"; ww: "bx.ww"; wx: "bx.wx"; wy: "bx.wy"; wz: "bx.wz"; xa: "bx.xa"; xb: "bx.xb"; xc: "bx.xc"; xd: "bx.xd"; xe: "bx.xe"; xf: "bx.xf"; xg: "bx.xg"; xh: "bx.xh"; xi: "bx.xi"; xj: "bx.xj"; xk: "bx.xk"; xl: "bx.xl"; xm: "bx.xm"; xn: "bx.xn"; xo: "bx.xo"; xp: "bx.xp"; xq: "bx.xq"; xr: "bx.xr"; xs: "bx.xs"; xt: "bx.xt"; xu: "bx.xu"; xv: "bx.xv"; xw: "bx.xw"; xx: "bx.xx"; xy: "bx.xy"; xz: "bx.xz"; ya: "bx.ya"; yb: "bx.yb"; yc: "bx.yc"; yd: "bx.yd"; ye: "bx.ye"; yf: "bx.yf"; yg: "bx.yg"; yh: "bx.yh"; yi: "bx.yi"; yj: "bx.yj"; yk: "bx.yk"; yl: "bx.yl"; ym: "bx.ym"; yn: "bx.yn"; yo: "bx.yo"; yp: "bx.yp"; yq: "bx.yq"; yr: "bx.yr"; ys: "bx.ys"; yt: "bx.yt"; yu: "bx.yu"; yv: "bx.yv"; yw: "bx.yw"; yx: "bx.yx"; yy: "bx.yy"; yz: "bx.yz"; za: "bx.za"; zb: "bx.zb"; zc: "bx.zc"; zd: "bx.zd"; ze: "bx.ze"; zf: "bx.zf"; zg: "bx.zg"; zh: "bx.zh"; zi: "bx.zi"; zj: "bx.zj"; zk: "bx.zk"; zl: "bx.zl"; zm: "bx.zm"; zn: "bx.zn"; zo: "bx.zo"; zp: "bx.zp"; zq: "bx.zq"; zr: "bx.zr"; zs: "bx.zs"; zt: "bx.zt"; zu: "bx.zu"; zv: "bx.zv"; zw: "bx.zw"; zx: "bx.zx"; zy: "bx.zy"; zz: "bx.zz"; }; by: { aa: "by.aa"; ab: "by.ab"; ac: "by.ac"; ad: "by.ad"; ae: "by.ae"; af: "by.af"; ag: "by.ag"; ah: "by.ah"; ai: "by.ai"; aj: "by.aj"; ak: "by.ak"; al: "by.al"; am: "by.am"; an: "by.an"; ao: "by.ao"; ap: "by.ap"; aq: "by.aq"; ar: "by.ar"; as: "by.as"; at: "by.at"; au: "by.au"; av: "by.av"; aw: "by.aw"; ax: "by.ax"; ay: "by.ay"; az: "by.az"; ba: "by.ba"; bb: "by.bb"; bc: "by.bc"; bd: "by.bd"; be: "by.be"; bf: "by.bf"; bg: "by.bg"; bh: "by.bh"; bi: "by.bi"; bj: "by.bj"; bk: "by.bk"; bl: "by.bl"; bm: "by.bm"; bn: "by.bn"; bo: "by.bo"; bp: "by.bp"; bq: "by.bq"; br: "by.br"; bs: "by.bs"; bt: "by.bt"; bu: "by.bu"; bv: "by.bv"; bw: "by.bw"; bx: "by.bx"; by: "by.by"; bz: "by.bz"; ca: "by.ca"; cb: "by.cb"; cc: "by.cc"; cd: "by.cd"; ce: "by.ce"; cf: "by.cf"; cg: "by.cg"; ch: "by.ch"; ci: "by.ci"; cj: "by.cj"; ck: "by.ck"; cl: "by.cl"; cm: "by.cm"; cn: "by.cn"; co: "by.co"; cp: "by.cp"; cq: "by.cq"; cr: "by.cr"; cs: "by.cs"; ct: "by.ct"; cu: "by.cu"; cv: "by.cv"; cw: "by.cw"; cx: "by.cx"; cy: "by.cy"; cz: "by.cz"; da: "by.da"; db: "by.db"; dc: "by.dc"; dd: "by.dd"; de: "by.de"; df: "by.df"; dg: "by.dg"; dh: "by.dh"; di: "by.di"; dj: "by.dj"; dk: "by.dk"; dl: "by.dl"; dm: "by.dm"; dn: "by.dn"; do: "by.do"; dp: "by.dp"; dq: "by.dq"; dr: "by.dr"; ds: "by.ds"; dt: "by.dt"; du: "by.du"; dv: "by.dv"; dw: "by.dw"; dx: "by.dx"; dy: "by.dy"; dz: "by.dz"; ea: "by.ea"; eb: "by.eb"; ec: "by.ec"; ed: "by.ed"; ee: "by.ee"; ef: "by.ef"; eg: "by.eg"; eh: "by.eh"; ei: "by.ei"; ej: "by.ej"; ek: "by.ek"; el: "by.el"; em: "by.em"; en: "by.en"; eo: "by.eo"; ep: "by.ep"; eq: "by.eq"; er: "by.er"; es: "by.es"; et: "by.et"; eu: "by.eu"; ev: "by.ev"; ew: "by.ew"; ex: "by.ex"; ey: "by.ey"; ez: "by.ez"; fa: "by.fa"; fb: "by.fb"; fc: "by.fc"; fd: "by.fd"; fe: "by.fe"; ff: "by.ff"; fg: "by.fg"; fh: "by.fh"; fi: "by.fi"; fj: "by.fj"; fk: "by.fk"; fl: "by.fl"; fm: "by.fm"; fn: "by.fn"; fo: "by.fo"; fp: "by.fp"; fq: "by.fq"; fr: "by.fr"; fs: "by.fs"; ft: "by.ft"; fu: "by.fu"; fv: "by.fv"; fw: "by.fw"; fx: "by.fx"; fy: "by.fy"; fz: "by.fz"; ga: "by.ga"; gb: "by.gb"; gc: "by.gc"; gd: "by.gd"; ge: "by.ge"; gf: "by.gf"; gg: "by.gg"; gh: "by.gh"; gi: "by.gi"; gj: "by.gj"; gk: "by.gk"; gl: "by.gl"; gm: "by.gm"; gn: "by.gn"; go: "by.go"; gp: "by.gp"; gq: "by.gq"; gr: "by.gr"; gs: "by.gs"; gt: "by.gt"; gu: "by.gu"; gv: "by.gv"; gw: "by.gw"; gx: "by.gx"; gy: "by.gy"; gz: "by.gz"; ha: "by.ha"; hb: "by.hb"; hc: "by.hc"; hd: "by.hd"; he: "by.he"; hf: "by.hf"; hg: "by.hg"; hh: "by.hh"; hi: "by.hi"; hj: "by.hj"; hk: "by.hk"; hl: "by.hl"; hm: "by.hm"; hn: "by.hn"; ho: "by.ho"; hp: "by.hp"; hq: "by.hq"; hr: "by.hr"; hs: "by.hs"; ht: "by.ht"; hu: "by.hu"; hv: "by.hv"; hw: "by.hw"; hx: "by.hx"; hy: "by.hy"; hz: "by.hz"; ia: "by.ia"; ib: "by.ib"; ic: "by.ic"; id: "by.id"; ie: "by.ie"; if: "by.if"; ig: "by.ig"; ih: "by.ih"; ii: "by.ii"; ij: "by.ij"; ik: "by.ik"; il: "by.il"; im: "by.im"; in: "by.in"; io: "by.io"; ip: "by.ip"; iq: "by.iq"; ir: "by.ir"; is: "by.is"; it: "by.it"; iu: "by.iu"; iv: "by.iv"; iw: "by.iw"; ix: "by.ix"; iy: "by.iy"; iz: "by.iz"; ja: "by.ja"; jb: "by.jb"; jc: "by.jc"; jd: "by.jd"; je: "by.je"; jf: "by.jf"; jg: "by.jg"; jh: "by.jh"; ji: "by.ji"; jj: "by.jj"; jk: "by.jk"; jl: "by.jl"; jm: "by.jm"; jn: "by.jn"; jo: "by.jo"; jp: "by.jp"; jq: "by.jq"; jr: "by.jr"; js: "by.js"; jt: "by.jt"; ju: "by.ju"; jv: "by.jv"; jw: "by.jw"; jx: "by.jx"; jy: "by.jy"; jz: "by.jz"; ka: "by.ka"; kb: "by.kb"; kc: "by.kc"; kd: "by.kd"; ke: "by.ke"; kf: "by.kf"; kg: "by.kg"; kh: "by.kh"; ki: "by.ki"; kj: "by.kj"; kk: "by.kk"; kl: "by.kl"; km: "by.km"; kn: "by.kn"; ko: "by.ko"; kp: "by.kp"; kq: "by.kq"; kr: "by.kr"; ks: "by.ks"; kt: "by.kt"; ku: "by.ku"; kv: "by.kv"; kw: "by.kw"; kx: "by.kx"; ky: "by.ky"; kz: "by.kz"; la: "by.la"; lb: "by.lb"; lc: "by.lc"; ld: "by.ld"; le: "by.le"; lf: "by.lf"; lg: "by.lg"; lh: "by.lh"; li: "by.li"; lj: "by.lj"; lk: "by.lk"; ll: "by.ll"; lm: "by.lm"; ln: "by.ln"; lo: "by.lo"; lp: "by.lp"; lq: "by.lq"; lr: "by.lr"; ls: "by.ls"; lt: "by.lt"; lu: "by.lu"; lv: "by.lv"; lw: "by.lw"; lx: "by.lx"; ly: "by.ly"; lz: "by.lz"; ma: "by.ma"; mb: "by.mb"; mc: "by.mc"; md: "by.md"; me: "by.me"; mf: "by.mf"; mg: "by.mg"; mh: "by.mh"; mi: "by.mi"; mj: "by.mj"; mk: "by.mk"; ml: "by.ml"; mm: "by.mm"; mn: "by.mn"; mo: "by.mo"; mp: "by.mp"; mq: "by.mq"; mr: "by.mr"; ms: "by.ms"; mt: "by.mt"; mu: "by.mu"; mv: "by.mv"; mw: "by.mw"; mx: "by.mx"; my: "by.my"; mz: "by.mz"; na: "by.na"; nb: "by.nb"; nc: "by.nc"; nd: "by.nd"; ne: "by.ne"; nf: "by.nf"; ng: "by.ng"; nh: "by.nh"; ni: "by.ni"; nj: "by.nj"; nk: "by.nk"; nl: "by.nl"; nm: "by.nm"; nn: "by.nn"; no: "by.no"; np: "by.np"; nq: "by.nq"; nr: "by.nr"; ns: "by.ns"; nt: "by.nt"; nu: "by.nu"; nv: "by.nv"; nw: "by.nw"; nx: "by.nx"; ny: "by.ny"; nz: "by.nz"; oa: "by.oa"; ob: "by.ob"; oc: "by.oc"; od: "by.od"; oe: "by.oe"; of: "by.of"; og: "by.og"; oh: "by.oh"; oi: "by.oi"; oj: "by.oj"; ok: "by.ok"; ol: "by.ol"; om: "by.om"; on: "by.on"; oo: "by.oo"; op: "by.op"; oq: "by.oq"; or: "by.or"; os: "by.os"; ot: "by.ot"; ou: "by.ou"; ov: "by.ov"; ow: "by.ow"; ox: "by.ox"; oy: "by.oy"; oz: "by.oz"; pa: "by.pa"; pb: "by.pb"; pc: "by.pc"; pd: "by.pd"; pe: "by.pe"; pf: "by.pf"; pg: "by.pg"; ph: "by.ph"; pi: "by.pi"; pj: "by.pj"; pk: "by.pk"; pl: "by.pl"; pm: "by.pm"; pn: "by.pn"; po: "by.po"; pp: "by.pp"; pq: "by.pq"; pr: "by.pr"; ps: "by.ps"; pt: "by.pt"; pu: "by.pu"; pv: "by.pv"; pw: "by.pw"; px: "by.px"; py: "by.py"; pz: "by.pz"; qa: "by.qa"; qb: "by.qb"; qc: "by.qc"; qd: "by.qd"; qe: "by.qe"; qf: "by.qf"; qg: "by.qg"; qh: "by.qh"; qi: "by.qi"; qj: "by.qj"; qk: "by.qk"; ql: "by.ql"; qm: "by.qm"; qn: "by.qn"; qo: "by.qo"; qp: "by.qp"; qq: "by.qq"; qr: "by.qr"; qs: "by.qs"; qt: "by.qt"; qu: "by.qu"; qv: "by.qv"; qw: "by.qw"; qx: "by.qx"; qy: "by.qy"; qz: "by.qz"; ra: "by.ra"; rb: "by.rb"; rc: "by.rc"; rd: "by.rd"; re: "by.re"; rf: "by.rf"; rg: "by.rg"; rh: "by.rh"; ri: "by.ri"; rj: "by.rj"; rk: "by.rk"; rl: "by.rl"; rm: "by.rm"; rn: "by.rn"; ro: "by.ro"; rp: "by.rp"; rq: "by.rq"; rr: "by.rr"; rs: "by.rs"; rt: "by.rt"; ru: "by.ru"; rv: "by.rv"; rw: "by.rw"; rx: "by.rx"; ry: "by.ry"; rz: "by.rz"; sa: "by.sa"; sb: "by.sb"; sc: "by.sc"; sd: "by.sd"; se: "by.se"; sf: "by.sf"; sg: "by.sg"; sh: "by.sh"; si: "by.si"; sj: "by.sj"; sk: "by.sk"; sl: "by.sl"; sm: "by.sm"; sn: "by.sn"; so: "by.so"; sp: "by.sp"; sq: "by.sq"; sr: "by.sr"; ss: "by.ss"; st: "by.st"; su: "by.su"; sv: "by.sv"; sw: "by.sw"; sx: "by.sx"; sy: "by.sy"; sz: "by.sz"; ta: "by.ta"; tb: "by.tb"; tc: "by.tc"; td: "by.td"; te: "by.te"; tf: "by.tf"; tg: "by.tg"; th: "by.th"; ti: "by.ti"; tj: "by.tj"; tk: "by.tk"; tl: "by.tl"; tm: "by.tm"; tn: "by.tn"; to: "by.to"; tp: "by.tp"; tq: "by.tq"; tr: "by.tr"; ts: "by.ts"; tt: "by.tt"; tu: "by.tu"; tv: "by.tv"; tw: "by.tw"; tx: "by.tx"; ty: "by.ty"; tz: "by.tz"; ua: "by.ua"; ub: "by.ub"; uc: "by.uc"; ud: "by.ud"; ue: "by.ue"; uf: "by.uf"; ug: "by.ug"; uh: "by.uh"; ui: "by.ui"; uj: "by.uj"; uk: "by.uk"; ul: "by.ul"; um: "by.um"; un: "by.un"; uo: "by.uo"; up: "by.up"; uq: "by.uq"; ur: "by.ur"; us: "by.us"; ut: "by.ut"; uu: "by.uu"; uv: "by.uv"; uw: "by.uw"; ux: "by.ux"; uy: "by.uy"; uz: "by.uz"; va: "by.va"; vb: "by.vb"; vc: "by.vc"; vd: "by.vd"; ve: "by.ve"; vf: "by.vf"; vg: "by.vg"; vh: "by.vh"; vi: "by.vi"; vj: "by.vj"; vk: "by.vk"; vl: "by.vl"; vm: "by.vm"; vn: "by.vn"; vo: "by.vo"; vp: "by.vp"; vq: "by.vq"; vr: "by.vr"; vs: "by.vs"; vt: "by.vt"; vu: "by.vu"; vv: "by.vv"; vw: "by.vw"; vx: "by.vx"; vy: "by.vy"; vz: "by.vz"; wa: "by.wa"; wb: "by.wb"; wc: "by.wc"; wd: "by.wd"; we: "by.we"; wf: "by.wf"; wg: "by.wg"; wh: "by.wh"; wi: "by.wi"; wj: "by.wj"; wk: "by.wk"; wl: "by.wl"; wm: "by.wm"; wn: "by.wn"; wo: "by.wo"; wp: "by.wp"; wq: "by.wq"; wr: "by.wr"; ws: "by.ws"; wt: "by.wt"; wu: "by.wu"; wv: "by.wv"; ww: "by.ww"; wx: "by.wx"; wy: "by.wy"; wz: "by.wz"; xa: "by.xa"; xb: "by.xb"; xc: "by.xc"; xd: "by.xd"; xe: "by.xe"; xf: "by.xf"; xg: "by.xg"; xh: "by.xh"; xi: "by.xi"; xj: "by.xj"; xk: "by.xk"; xl: "by.xl"; xm: "by.xm"; xn: "by.xn"; xo: "by.xo"; xp: "by.xp"; xq: "by.xq"; xr: "by.xr"; xs: "by.xs"; xt: "by.xt"; xu: "by.xu"; xv: "by.xv"; xw: "by.xw"; xx: "by.xx"; xy: "by.xy"; xz: "by.xz"; ya: "by.ya"; yb: "by.yb"; yc: "by.yc"; yd: "by.yd"; ye: "by.ye"; yf: "by.yf"; yg: "by.yg"; yh: "by.yh"; yi: "by.yi"; yj: "by.yj"; yk: "by.yk"; yl: "by.yl"; ym: "by.ym"; yn: "by.yn"; yo: "by.yo"; yp: "by.yp"; yq: "by.yq"; yr: "by.yr"; ys: "by.ys"; yt: "by.yt"; yu: "by.yu"; yv: "by.yv"; yw: "by.yw"; yx: "by.yx"; yy: "by.yy"; yz: "by.yz"; za: "by.za"; zb: "by.zb"; zc: "by.zc"; zd: "by.zd"; ze: "by.ze"; zf: "by.zf"; zg: "by.zg"; zh: "by.zh"; zi: "by.zi"; zj: "by.zj"; zk: "by.zk"; zl: "by.zl"; zm: "by.zm"; zn: "by.zn"; zo: "by.zo"; zp: "by.zp"; zq: "by.zq"; zr: "by.zr"; zs: "by.zs"; zt: "by.zt"; zu: "by.zu"; zv: "by.zv"; zw: "by.zw"; zx: "by.zx"; zy: "by.zy"; zz: "by.zz"; }; bz: { aa: "bz.aa"; ab: "bz.ab"; ac: "bz.ac"; ad: "bz.ad"; ae: "bz.ae"; af: "bz.af"; ag: "bz.ag"; ah: "bz.ah"; ai: "bz.ai"; aj: "bz.aj"; ak: "bz.ak"; al: "bz.al"; am: "bz.am"; an: "bz.an"; ao: "bz.ao"; ap: "bz.ap"; aq: "bz.aq"; ar: "bz.ar"; as: "bz.as"; at: "bz.at"; au: "bz.au"; av: "bz.av"; aw: "bz.aw"; ax: "bz.ax"; ay: "bz.ay"; az: "bz.az"; ba: "bz.ba"; bb: "bz.bb"; bc: "bz.bc"; bd: "bz.bd"; be: "bz.be"; bf: "bz.bf"; bg: "bz.bg"; bh: "bz.bh"; bi: "bz.bi"; bj: "bz.bj"; bk: "bz.bk"; bl: "bz.bl"; bm: "bz.bm"; bn: "bz.bn"; bo: "bz.bo"; bp: "bz.bp"; bq: "bz.bq"; br: "bz.br"; bs: "bz.bs"; bt: "bz.bt"; bu: "bz.bu"; bv: "bz.bv"; bw: "bz.bw"; bx: "bz.bx"; by: "bz.by"; bz: "bz.bz"; ca: "bz.ca"; cb: "bz.cb"; cc: "bz.cc"; cd: "bz.cd"; ce: "bz.ce"; cf: "bz.cf"; cg: "bz.cg"; ch: "bz.ch"; ci: "bz.ci"; cj: "bz.cj"; ck: "bz.ck"; cl: "bz.cl"; cm: "bz.cm"; cn: "bz.cn"; co: "bz.co"; cp: "bz.cp"; cq: "bz.cq"; cr: "bz.cr"; cs: "bz.cs"; ct: "bz.ct"; cu: "bz.cu"; cv: "bz.cv"; cw: "bz.cw"; cx: "bz.cx"; cy: "bz.cy"; cz: "bz.cz"; da: "bz.da"; db: "bz.db"; dc: "bz.dc"; dd: "bz.dd"; de: "bz.de"; df: "bz.df"; dg: "bz.dg"; dh: "bz.dh"; di: "bz.di"; dj: "bz.dj"; dk: "bz.dk"; dl: "bz.dl"; dm: "bz.dm"; dn: "bz.dn"; do: "bz.do"; dp: "bz.dp"; dq: "bz.dq"; dr: "bz.dr"; ds: "bz.ds"; dt: "bz.dt"; du: "bz.du"; dv: "bz.dv"; dw: "bz.dw"; dx: "bz.dx"; dy: "bz.dy"; dz: "bz.dz"; ea: "bz.ea"; eb: "bz.eb"; ec: "bz.ec"; ed: "bz.ed"; ee: "bz.ee"; ef: "bz.ef"; eg: "bz.eg"; eh: "bz.eh"; ei: "bz.ei"; ej: "bz.ej"; ek: "bz.ek"; el: "bz.el"; em: "bz.em"; en: "bz.en"; eo: "bz.eo"; ep: "bz.ep"; eq: "bz.eq"; er: "bz.er"; es: "bz.es"; et: "bz.et"; eu: "bz.eu"; ev: "bz.ev"; ew: "bz.ew"; ex: "bz.ex"; ey: "bz.ey"; ez: "bz.ez"; fa: "bz.fa"; fb: "bz.fb"; fc: "bz.fc"; fd: "bz.fd"; fe: "bz.fe"; ff: "bz.ff"; fg: "bz.fg"; fh: "bz.fh"; fi: "bz.fi"; fj: "bz.fj"; fk: "bz.fk"; fl: "bz.fl"; fm: "bz.fm"; fn: "bz.fn"; fo: "bz.fo"; fp: "bz.fp"; fq: "bz.fq"; fr: "bz.fr"; fs: "bz.fs"; ft: "bz.ft"; fu: "bz.fu"; fv: "bz.fv"; fw: "bz.fw"; fx: "bz.fx"; fy: "bz.fy"; fz: "bz.fz"; ga: "bz.ga"; gb: "bz.gb"; gc: "bz.gc"; gd: "bz.gd"; ge: "bz.ge"; gf: "bz.gf"; gg: "bz.gg"; gh: "bz.gh"; gi: "bz.gi"; gj: "bz.gj"; gk: "bz.gk"; gl: "bz.gl"; gm: "bz.gm"; gn: "bz.gn"; go: "bz.go"; gp: "bz.gp"; gq: "bz.gq"; gr: "bz.gr"; gs: "bz.gs"; gt: "bz.gt"; gu: "bz.gu"; gv: "bz.gv"; gw: "bz.gw"; gx: "bz.gx"; gy: "bz.gy"; gz: "bz.gz"; ha: "bz.ha"; hb: "bz.hb"; hc: "bz.hc"; hd: "bz.hd"; he: "bz.he"; hf: "bz.hf"; hg: "bz.hg"; hh: "bz.hh"; hi: "bz.hi"; hj: "bz.hj"; hk: "bz.hk"; hl: "bz.hl"; hm: "bz.hm"; hn: "bz.hn"; ho: "bz.ho"; hp: "bz.hp"; hq: "bz.hq"; hr: "bz.hr"; hs: "bz.hs"; ht: "bz.ht"; hu: "bz.hu"; hv: "bz.hv"; hw: "bz.hw"; hx: "bz.hx"; hy: "bz.hy"; hz: "bz.hz"; ia: "bz.ia"; ib: "bz.ib"; ic: "bz.ic"; id: "bz.id"; ie: "bz.ie"; if: "bz.if"; ig: "bz.ig"; ih: "bz.ih"; ii: "bz.ii"; ij: "bz.ij"; ik: "bz.ik"; il: "bz.il"; im: "bz.im"; in: "bz.in"; io: "bz.io"; ip: "bz.ip"; iq: "bz.iq"; ir: "bz.ir"; is: "bz.is"; it: "bz.it"; iu: "bz.iu"; iv: "bz.iv"; iw: "bz.iw"; ix: "bz.ix"; iy: "bz.iy"; iz: "bz.iz"; ja: "bz.ja"; jb: "bz.jb"; jc: "bz.jc"; jd: "bz.jd"; je: "bz.je"; jf: "bz.jf"; jg: "bz.jg"; jh: "bz.jh"; ji: "bz.ji"; jj: "bz.jj"; jk: "bz.jk"; jl: "bz.jl"; jm: "bz.jm"; jn: "bz.jn"; jo: "bz.jo"; jp: "bz.jp"; jq: "bz.jq"; jr: "bz.jr"; js: "bz.js"; jt: "bz.jt"; ju: "bz.ju"; jv: "bz.jv"; jw: "bz.jw"; jx: "bz.jx"; jy: "bz.jy"; jz: "bz.jz"; ka: "bz.ka"; kb: "bz.kb"; kc: "bz.kc"; kd: "bz.kd"; ke: "bz.ke"; kf: "bz.kf"; kg: "bz.kg"; kh: "bz.kh"; ki: "bz.ki"; kj: "bz.kj"; kk: "bz.kk"; kl: "bz.kl"; km: "bz.km"; kn: "bz.kn"; ko: "bz.ko"; kp: "bz.kp"; kq: "bz.kq"; kr: "bz.kr"; ks: "bz.ks"; kt: "bz.kt"; ku: "bz.ku"; kv: "bz.kv"; kw: "bz.kw"; kx: "bz.kx"; ky: "bz.ky"; kz: "bz.kz"; la: "bz.la"; lb: "bz.lb"; lc: "bz.lc"; ld: "bz.ld"; le: "bz.le"; lf: "bz.lf"; lg: "bz.lg"; lh: "bz.lh"; li: "bz.li"; lj: "bz.lj"; lk: "bz.lk"; ll: "bz.ll"; lm: "bz.lm"; ln: "bz.ln"; lo: "bz.lo"; lp: "bz.lp"; lq: "bz.lq"; lr: "bz.lr"; ls: "bz.ls"; lt: "bz.lt"; lu: "bz.lu"; lv: "bz.lv"; lw: "bz.lw"; lx: "bz.lx"; ly: "bz.ly"; lz: "bz.lz"; ma: "bz.ma"; mb: "bz.mb"; mc: "bz.mc"; md: "bz.md"; me: "bz.me"; mf: "bz.mf"; mg: "bz.mg"; mh: "bz.mh"; mi: "bz.mi"; mj: "bz.mj"; mk: "bz.mk"; ml: "bz.ml"; mm: "bz.mm"; mn: "bz.mn"; mo: "bz.mo"; mp: "bz.mp"; mq: "bz.mq"; mr: "bz.mr"; ms: "bz.ms"; mt: "bz.mt"; mu: "bz.mu"; mv: "bz.mv"; mw: "bz.mw"; mx: "bz.mx"; my: "bz.my"; mz: "bz.mz"; na: "bz.na"; nb: "bz.nb"; nc: "bz.nc"; nd: "bz.nd"; ne: "bz.ne"; nf: "bz.nf"; ng: "bz.ng"; nh: "bz.nh"; ni: "bz.ni"; nj: "bz.nj"; nk: "bz.nk"; nl: "bz.nl"; nm: "bz.nm"; nn: "bz.nn"; no: "bz.no"; np: "bz.np"; nq: "bz.nq"; nr: "bz.nr"; ns: "bz.ns"; nt: "bz.nt"; nu: "bz.nu"; nv: "bz.nv"; nw: "bz.nw"; nx: "bz.nx"; ny: "bz.ny"; nz: "bz.nz"; oa: "bz.oa"; ob: "bz.ob"; oc: "bz.oc"; od: "bz.od"; oe: "bz.oe"; of: "bz.of"; og: "bz.og"; oh: "bz.oh"; oi: "bz.oi"; oj: "bz.oj"; ok: "bz.ok"; ol: "bz.ol"; om: "bz.om"; on: "bz.on"; oo: "bz.oo"; op: "bz.op"; oq: "bz.oq"; or: "bz.or"; os: "bz.os"; ot: "bz.ot"; ou: "bz.ou"; ov: "bz.ov"; ow: "bz.ow"; ox: "bz.ox"; oy: "bz.oy"; oz: "bz.oz"; pa: "bz.pa"; pb: "bz.pb"; pc: "bz.pc"; pd: "bz.pd"; pe: "bz.pe"; pf: "bz.pf"; pg: "bz.pg"; ph: "bz.ph"; pi: "bz.pi"; pj: "bz.pj"; pk: "bz.pk"; pl: "bz.pl"; pm: "bz.pm"; pn: "bz.pn"; po: "bz.po"; pp: "bz.pp"; pq: "bz.pq"; pr: "bz.pr"; ps: "bz.ps"; pt: "bz.pt"; pu: "bz.pu"; pv: "bz.pv"; pw: "bz.pw"; px: "bz.px"; py: "bz.py"; pz: "bz.pz"; qa: "bz.qa"; qb: "bz.qb"; qc: "bz.qc"; qd: "bz.qd"; qe: "bz.qe"; qf: "bz.qf"; qg: "bz.qg"; qh: "bz.qh"; qi: "bz.qi"; qj: "bz.qj"; qk: "bz.qk"; ql: "bz.ql"; qm: "bz.qm"; qn: "bz.qn"; qo: "bz.qo"; qp: "bz.qp"; qq: "bz.qq"; qr: "bz.qr"; qs: "bz.qs"; qt: "bz.qt"; qu: "bz.qu"; qv: "bz.qv"; qw: "bz.qw"; qx: "bz.qx"; qy: "bz.qy"; qz: "bz.qz"; ra: "bz.ra"; rb: "bz.rb"; rc: "bz.rc"; rd: "bz.rd"; re: "bz.re"; rf: "bz.rf"; rg: "bz.rg"; rh: "bz.rh"; ri: "bz.ri"; rj: "bz.rj"; rk: "bz.rk"; rl: "bz.rl"; rm: "bz.rm"; rn: "bz.rn"; ro: "bz.ro"; rp: "bz.rp"; rq: "bz.rq"; rr: "bz.rr"; rs: "bz.rs"; rt: "bz.rt"; ru: "bz.ru"; rv: "bz.rv"; rw: "bz.rw"; rx: "bz.rx"; ry: "bz.ry"; rz: "bz.rz"; sa: "bz.sa"; sb: "bz.sb"; sc: "bz.sc"; sd: "bz.sd"; se: "bz.se"; sf: "bz.sf"; sg: "bz.sg"; sh: "bz.sh"; si: "bz.si"; sj: "bz.sj"; sk: "bz.sk"; sl: "bz.sl"; sm: "bz.sm"; sn: "bz.sn"; so: "bz.so"; sp: "bz.sp"; sq: "bz.sq"; sr: "bz.sr"; ss: "bz.ss"; st: "bz.st"; su: "bz.su"; sv: "bz.sv"; sw: "bz.sw"; sx: "bz.sx"; sy: "bz.sy"; sz: "bz.sz"; ta: "bz.ta"; tb: "bz.tb"; tc: "bz.tc"; td: "bz.td"; te: "bz.te"; tf: "bz.tf"; tg: "bz.tg"; th: "bz.th"; ti: "bz.ti"; tj: "bz.tj"; tk: "bz.tk"; tl: "bz.tl"; tm: "bz.tm"; tn: "bz.tn"; to: "bz.to"; tp: "bz.tp"; tq: "bz.tq"; tr: "bz.tr"; ts: "bz.ts"; tt: "bz.tt"; tu: "bz.tu"; tv: "bz.tv"; tw: "bz.tw"; tx: "bz.tx"; ty: "bz.ty"; tz: "bz.tz"; ua: "bz.ua"; ub: "bz.ub"; uc: "bz.uc"; ud: "bz.ud"; ue: "bz.ue"; uf: "bz.uf"; ug: "bz.ug"; uh: "bz.uh"; ui: "bz.ui"; uj: "bz.uj"; uk: "bz.uk"; ul: "bz.ul"; um: "bz.um"; un: "bz.un"; uo: "bz.uo"; up: "bz.up"; uq: "bz.uq"; ur: "bz.ur"; us: "bz.us"; ut: "bz.ut"; uu: "bz.uu"; uv: "bz.uv"; uw: "bz.uw"; ux: "bz.ux"; uy: "bz.uy"; uz: "bz.uz"; va: "bz.va"; vb: "bz.vb"; vc: "bz.vc"; vd: "bz.vd"; ve: "bz.ve"; vf: "bz.vf"; vg: "bz.vg"; vh: "bz.vh"; vi: "bz.vi"; vj: "bz.vj"; vk: "bz.vk"; vl: "bz.vl"; vm: "bz.vm"; vn: "bz.vn"; vo: "bz.vo"; vp: "bz.vp"; vq: "bz.vq"; vr: "bz.vr"; vs: "bz.vs"; vt: "bz.vt"; vu: "bz.vu"; vv: "bz.vv"; vw: "bz.vw"; vx: "bz.vx"; vy: "bz.vy"; vz: "bz.vz"; wa: "bz.wa"; wb: "bz.wb"; wc: "bz.wc"; wd: "bz.wd"; we: "bz.we"; wf: "bz.wf"; wg: "bz.wg"; wh: "bz.wh"; wi: "bz.wi"; wj: "bz.wj"; wk: "bz.wk"; wl: "bz.wl"; wm: "bz.wm"; wn: "bz.wn"; wo: "bz.wo"; wp: "bz.wp"; wq: "bz.wq"; wr: "bz.wr"; ws: "bz.ws"; wt: "bz.wt"; wu: "bz.wu"; wv: "bz.wv"; ww: "bz.ww"; wx: "bz.wx"; wy: "bz.wy"; wz: "bz.wz"; xa: "bz.xa"; xb: "bz.xb"; xc: "bz.xc"; xd: "bz.xd"; xe: "bz.xe"; xf: "bz.xf"; xg: "bz.xg"; xh: "bz.xh"; xi: "bz.xi"; xj: "bz.xj"; xk: "bz.xk"; xl: "bz.xl"; xm: "bz.xm"; xn: "bz.xn"; xo: "bz.xo"; xp: "bz.xp"; xq: "bz.xq"; xr: "bz.xr"; xs: "bz.xs"; xt: "bz.xt"; xu: "bz.xu"; xv: "bz.xv"; xw: "bz.xw"; xx: "bz.xx"; xy: "bz.xy"; xz: "bz.xz"; ya: "bz.ya"; yb: "bz.yb"; yc: "bz.yc"; yd: "bz.yd"; ye: "bz.ye"; yf: "bz.yf"; yg: "bz.yg"; yh: "bz.yh"; yi: "bz.yi"; yj: "bz.yj"; yk: "bz.yk"; yl: "bz.yl"; ym: "bz.ym"; yn: "bz.yn"; yo: "bz.yo"; yp: "bz.yp"; yq: "bz.yq"; yr: "bz.yr"; ys: "bz.ys"; yt: "bz.yt"; yu: "bz.yu"; yv: "bz.yv"; yw: "bz.yw"; yx: "bz.yx"; yy: "bz.yy"; yz: "bz.yz"; za: "bz.za"; zb: "bz.zb"; zc: "bz.zc"; zd: "bz.zd"; ze: "bz.ze"; zf: "bz.zf"; zg: "bz.zg"; zh: "bz.zh"; zi: "bz.zi"; zj: "bz.zj"; zk: "bz.zk"; zl: "bz.zl"; zm: "bz.zm"; zn: "bz.zn"; zo: "bz.zo"; zp: "bz.zp"; zq: "bz.zq"; zr: "bz.zr"; zs: "bz.zs"; zt: "bz.zt"; zu: "bz.zu"; zv: "bz.zv"; zw: "bz.zw"; zx: "bz.zx"; zy: "bz.zy"; zz: "bz.zz"; }; ca: { aa: "ca.aa"; ab: "ca.ab"; ac: "ca.ac"; ad: "ca.ad"; ae: "ca.ae"; af: "ca.af"; ag: "ca.ag"; ah: "ca.ah"; ai: "ca.ai"; aj: "ca.aj"; ak: "ca.ak"; al: "ca.al"; am: "ca.am"; an: "ca.an"; ao: "ca.ao"; ap: "ca.ap"; aq: "ca.aq"; ar: "ca.ar"; as: "ca.as"; at: "ca.at"; au: "ca.au"; av: "ca.av"; aw: "ca.aw"; ax: "ca.ax"; ay: "ca.ay"; az: "ca.az"; ba: "ca.ba"; bb: "ca.bb"; bc: "ca.bc"; bd: "ca.bd"; be: "ca.be"; bf: "ca.bf"; bg: "ca.bg"; bh: "ca.bh"; bi: "ca.bi"; bj: "ca.bj"; bk: "ca.bk"; bl: "ca.bl"; bm: "ca.bm"; bn: "ca.bn"; bo: "ca.bo"; bp: "ca.bp"; bq: "ca.bq"; br: "ca.br"; bs: "ca.bs"; bt: "ca.bt"; bu: "ca.bu"; bv: "ca.bv"; bw: "ca.bw"; bx: "ca.bx"; by: "ca.by"; bz: "ca.bz"; ca: "ca.ca"; cb: "ca.cb"; cc: "ca.cc"; cd: "ca.cd"; ce: "ca.ce"; cf: "ca.cf"; cg: "ca.cg"; ch: "ca.ch"; ci: "ca.ci"; cj: "ca.cj"; ck: "ca.ck"; cl: "ca.cl"; cm: "ca.cm"; cn: "ca.cn"; co: "ca.co"; cp: "ca.cp"; cq: "ca.cq"; cr: "ca.cr"; cs: "ca.cs"; ct: "ca.ct"; cu: "ca.cu"; cv: "ca.cv"; cw: "ca.cw"; cx: "ca.cx"; cy: "ca.cy"; cz: "ca.cz"; da: "ca.da"; db: "ca.db"; dc: "ca.dc"; dd: "ca.dd"; de: "ca.de"; df: "ca.df"; dg: "ca.dg"; dh: "ca.dh"; di: "ca.di"; dj: "ca.dj"; dk: "ca.dk"; dl: "ca.dl"; dm: "ca.dm"; dn: "ca.dn"; do: "ca.do"; dp: "ca.dp"; dq: "ca.dq"; dr: "ca.dr"; ds: "ca.ds"; dt: "ca.dt"; du: "ca.du"; dv: "ca.dv"; dw: "ca.dw"; dx: "ca.dx"; dy: "ca.dy"; dz: "ca.dz"; ea: "ca.ea"; eb: "ca.eb"; ec: "ca.ec"; ed: "ca.ed"; ee: "ca.ee"; ef: "ca.ef"; eg: "ca.eg"; eh: "ca.eh"; ei: "ca.ei"; ej: "ca.ej"; ek: "ca.ek"; el: "ca.el"; em: "ca.em"; en: "ca.en"; eo: "ca.eo"; ep: "ca.ep"; eq: "ca.eq"; er: "ca.er"; es: "ca.es"; et: "ca.et"; eu: "ca.eu"; ev: "ca.ev"; ew: "ca.ew"; ex: "ca.ex"; ey: "ca.ey"; ez: "ca.ez"; fa: "ca.fa"; fb: "ca.fb"; fc: "ca.fc"; fd: "ca.fd"; fe: "ca.fe"; ff: "ca.ff"; fg: "ca.fg"; fh: "ca.fh"; fi: "ca.fi"; fj: "ca.fj"; fk: "ca.fk"; fl: "ca.fl"; fm: "ca.fm"; fn: "ca.fn"; fo: "ca.fo"; fp: "ca.fp"; fq: "ca.fq"; fr: "ca.fr"; fs: "ca.fs"; ft: "ca.ft"; fu: "ca.fu"; fv: "ca.fv"; fw: "ca.fw"; fx: "ca.fx"; fy: "ca.fy"; fz: "ca.fz"; ga: "ca.ga"; gb: "ca.gb"; gc: "ca.gc"; gd: "ca.gd"; ge: "ca.ge"; gf: "ca.gf"; gg: "ca.gg"; gh: "ca.gh"; gi: "ca.gi"; gj: "ca.gj"; gk: "ca.gk"; gl: "ca.gl"; gm: "ca.gm"; gn: "ca.gn"; go: "ca.go"; gp: "ca.gp"; gq: "ca.gq"; gr: "ca.gr"; gs: "ca.gs"; gt: "ca.gt"; gu: "ca.gu"; gv: "ca.gv"; gw: "ca.gw"; gx: "ca.gx"; gy: "ca.gy"; gz: "ca.gz"; ha: "ca.ha"; hb: "ca.hb"; hc: "ca.hc"; hd: "ca.hd"; he: "ca.he"; hf: "ca.hf"; hg: "ca.hg"; hh: "ca.hh"; hi: "ca.hi"; hj: "ca.hj"; hk: "ca.hk"; hl: "ca.hl"; hm: "ca.hm"; hn: "ca.hn"; ho: "ca.ho"; hp: "ca.hp"; hq: "ca.hq"; hr: "ca.hr"; hs: "ca.hs"; ht: "ca.ht"; hu: "ca.hu"; hv: "ca.hv"; hw: "ca.hw"; hx: "ca.hx"; hy: "ca.hy"; hz: "ca.hz"; ia: "ca.ia"; ib: "ca.ib"; ic: "ca.ic"; id: "ca.id"; ie: "ca.ie"; if: "ca.if"; ig: "ca.ig"; ih: "ca.ih"; ii: "ca.ii"; ij: "ca.ij"; ik: "ca.ik"; il: "ca.il"; im: "ca.im"; in: "ca.in"; io: "ca.io"; ip: "ca.ip"; iq: "ca.iq"; ir: "ca.ir"; is: "ca.is"; it: "ca.it"; iu: "ca.iu"; iv: "ca.iv"; iw: "ca.iw"; ix: "ca.ix"; iy: "ca.iy"; iz: "ca.iz"; ja: "ca.ja"; jb: "ca.jb"; jc: "ca.jc"; jd: "ca.jd"; je: "ca.je"; jf: "ca.jf"; jg: "ca.jg"; jh: "ca.jh"; ji: "ca.ji"; jj: "ca.jj"; jk: "ca.jk"; jl: "ca.jl"; jm: "ca.jm"; jn: "ca.jn"; jo: "ca.jo"; jp: "ca.jp"; jq: "ca.jq"; jr: "ca.jr"; js: "ca.js"; jt: "ca.jt"; ju: "ca.ju"; jv: "ca.jv"; jw: "ca.jw"; jx: "ca.jx"; jy: "ca.jy"; jz: "ca.jz"; ka: "ca.ka"; kb: "ca.kb"; kc: "ca.kc"; kd: "ca.kd"; ke: "ca.ke"; kf: "ca.kf"; kg: "ca.kg"; kh: "ca.kh"; ki: "ca.ki"; kj: "ca.kj"; kk: "ca.kk"; kl: "ca.kl"; km: "ca.km"; kn: "ca.kn"; ko: "ca.ko"; kp: "ca.kp"; kq: "ca.kq"; kr: "ca.kr"; ks: "ca.ks"; kt: "ca.kt"; ku: "ca.ku"; kv: "ca.kv"; kw: "ca.kw"; kx: "ca.kx"; ky: "ca.ky"; kz: "ca.kz"; la: "ca.la"; lb: "ca.lb"; lc: "ca.lc"; ld: "ca.ld"; le: "ca.le"; lf: "ca.lf"; lg: "ca.lg"; lh: "ca.lh"; li: "ca.li"; lj: "ca.lj"; lk: "ca.lk"; ll: "ca.ll"; lm: "ca.lm"; ln: "ca.ln"; lo: "ca.lo"; lp: "ca.lp"; lq: "ca.lq"; lr: "ca.lr"; ls: "ca.ls"; lt: "ca.lt"; lu: "ca.lu"; lv: "ca.lv"; lw: "ca.lw"; lx: "ca.lx"; ly: "ca.ly"; lz: "ca.lz"; ma: "ca.ma"; mb: "ca.mb"; mc: "ca.mc"; md: "ca.md"; me: "ca.me"; mf: "ca.mf"; mg: "ca.mg"; mh: "ca.mh"; mi: "ca.mi"; mj: "ca.mj"; mk: "ca.mk"; ml: "ca.ml"; mm: "ca.mm"; mn: "ca.mn"; mo: "ca.mo"; mp: "ca.mp"; mq: "ca.mq"; mr: "ca.mr"; ms: "ca.ms"; mt: "ca.mt"; mu: "ca.mu"; mv: "ca.mv"; mw: "ca.mw"; mx: "ca.mx"; my: "ca.my"; mz: "ca.mz"; na: "ca.na"; nb: "ca.nb"; nc: "ca.nc"; nd: "ca.nd"; ne: "ca.ne"; nf: "ca.nf"; ng: "ca.ng"; nh: "ca.nh"; ni: "ca.ni"; nj: "ca.nj"; nk: "ca.nk"; nl: "ca.nl"; nm: "ca.nm"; nn: "ca.nn"; no: "ca.no"; np: "ca.np"; nq: "ca.nq"; nr: "ca.nr"; ns: "ca.ns"; nt: "ca.nt"; nu: "ca.nu"; nv: "ca.nv"; nw: "ca.nw"; nx: "ca.nx"; ny: "ca.ny"; nz: "ca.nz"; oa: "ca.oa"; ob: "ca.ob"; oc: "ca.oc"; od: "ca.od"; oe: "ca.oe"; of: "ca.of"; og: "ca.og"; oh: "ca.oh"; oi: "ca.oi"; oj: "ca.oj"; ok: "ca.ok"; ol: "ca.ol"; om: "ca.om"; on: "ca.on"; oo: "ca.oo"; op: "ca.op"; oq: "ca.oq"; or: "ca.or"; os: "ca.os"; ot: "ca.ot"; ou: "ca.ou"; ov: "ca.ov"; ow: "ca.ow"; ox: "ca.ox"; oy: "ca.oy"; oz: "ca.oz"; pa: "ca.pa"; pb: "ca.pb"; pc: "ca.pc"; pd: "ca.pd"; pe: "ca.pe"; pf: "ca.pf"; pg: "ca.pg"; ph: "ca.ph"; pi: "ca.pi"; pj: "ca.pj"; pk: "ca.pk"; pl: "ca.pl"; pm: "ca.pm"; pn: "ca.pn"; po: "ca.po"; pp: "ca.pp"; pq: "ca.pq"; pr: "ca.pr"; ps: "ca.ps"; pt: "ca.pt"; pu: "ca.pu"; pv: "ca.pv"; pw: "ca.pw"; px: "ca.px"; py: "ca.py"; pz: "ca.pz"; qa: "ca.qa"; qb: "ca.qb"; qc: "ca.qc"; qd: "ca.qd"; qe: "ca.qe"; qf: "ca.qf"; qg: "ca.qg"; qh: "ca.qh"; qi: "ca.qi"; qj: "ca.qj"; qk: "ca.qk"; ql: "ca.ql"; qm: "ca.qm"; qn: "ca.qn"; qo: "ca.qo"; qp: "ca.qp"; qq: "ca.qq"; qr: "ca.qr"; qs: "ca.qs"; qt: "ca.qt"; qu: "ca.qu"; qv: "ca.qv"; qw: "ca.qw"; qx: "ca.qx"; qy: "ca.qy"; qz: "ca.qz"; ra: "ca.ra"; rb: "ca.rb"; rc: "ca.rc"; rd: "ca.rd"; re: "ca.re"; rf: "ca.rf"; rg: "ca.rg"; rh: "ca.rh"; ri: "ca.ri"; rj: "ca.rj"; rk: "ca.rk"; rl: "ca.rl"; rm: "ca.rm"; rn: "ca.rn"; ro: "ca.ro"; rp: "ca.rp"; rq: "ca.rq"; rr: "ca.rr"; rs: "ca.rs"; rt: "ca.rt"; ru: "ca.ru"; rv: "ca.rv"; rw: "ca.rw"; rx: "ca.rx"; ry: "ca.ry"; rz: "ca.rz"; sa: "ca.sa"; sb: "ca.sb"; sc: "ca.sc"; sd: "ca.sd"; se: "ca.se"; sf: "ca.sf"; sg: "ca.sg"; sh: "ca.sh"; si: "ca.si"; sj: "ca.sj"; sk: "ca.sk"; sl: "ca.sl"; sm: "ca.sm"; sn: "ca.sn"; so: "ca.so"; sp: "ca.sp"; sq: "ca.sq"; sr: "ca.sr"; ss: "ca.ss"; st: "ca.st"; su: "ca.su"; sv: "ca.sv"; sw: "ca.sw"; sx: "ca.sx"; sy: "ca.sy"; sz: "ca.sz"; ta: "ca.ta"; tb: "ca.tb"; tc: "ca.tc"; td: "ca.td"; te: "ca.te"; tf: "ca.tf"; tg: "ca.tg"; th: "ca.th"; ti: "ca.ti"; tj: "ca.tj"; tk: "ca.tk"; tl: "ca.tl"; tm: "ca.tm"; tn: "ca.tn"; to: "ca.to"; tp: "ca.tp"; tq: "ca.tq"; tr: "ca.tr"; ts: "ca.ts"; tt: "ca.tt"; tu: "ca.tu"; tv: "ca.tv"; tw: "ca.tw"; tx: "ca.tx"; ty: "ca.ty"; tz: "ca.tz"; ua: "ca.ua"; ub: "ca.ub"; uc: "ca.uc"; ud: "ca.ud"; ue: "ca.ue"; uf: "ca.uf"; ug: "ca.ug"; uh: "ca.uh"; ui: "ca.ui"; uj: "ca.uj"; uk: "ca.uk"; ul: "ca.ul"; um: "ca.um"; un: "ca.un"; uo: "ca.uo"; up: "ca.up"; uq: "ca.uq"; ur: "ca.ur"; us: "ca.us"; ut: "ca.ut"; uu: "ca.uu"; uv: "ca.uv"; uw: "ca.uw"; ux: "ca.ux"; uy: "ca.uy"; uz: "ca.uz"; va: "ca.va"; vb: "ca.vb"; vc: "ca.vc"; vd: "ca.vd"; ve: "ca.ve"; vf: "ca.vf"; vg: "ca.vg"; vh: "ca.vh"; vi: "ca.vi"; vj: "ca.vj"; vk: "ca.vk"; vl: "ca.vl"; vm: "ca.vm"; vn: "ca.vn"; vo: "ca.vo"; vp: "ca.vp"; vq: "ca.vq"; vr: "ca.vr"; vs: "ca.vs"; vt: "ca.vt"; vu: "ca.vu"; vv: "ca.vv"; vw: "ca.vw"; vx: "ca.vx"; vy: "ca.vy"; vz: "ca.vz"; wa: "ca.wa"; wb: "ca.wb"; wc: "ca.wc"; wd: "ca.wd"; we: "ca.we"; wf: "ca.wf"; wg: "ca.wg"; wh: "ca.wh"; wi: "ca.wi"; wj: "ca.wj"; wk: "ca.wk"; wl: "ca.wl"; wm: "ca.wm"; wn: "ca.wn"; wo: "ca.wo"; wp: "ca.wp"; wq: "ca.wq"; wr: "ca.wr"; ws: "ca.ws"; wt: "ca.wt"; wu: "ca.wu"; wv: "ca.wv"; ww: "ca.ww"; wx: "ca.wx"; wy: "ca.wy"; wz: "ca.wz"; xa: "ca.xa"; xb: "ca.xb"; xc: "ca.xc"; xd: "ca.xd"; xe: "ca.xe"; xf: "ca.xf"; xg: "ca.xg"; xh: "ca.xh"; xi: "ca.xi"; xj: "ca.xj"; xk: "ca.xk"; xl: "ca.xl"; xm: "ca.xm"; xn: "ca.xn"; xo: "ca.xo"; xp: "ca.xp"; xq: "ca.xq"; xr: "ca.xr"; xs: "ca.xs"; xt: "ca.xt"; xu: "ca.xu"; xv: "ca.xv"; xw: "ca.xw"; xx: "ca.xx"; xy: "ca.xy"; xz: "ca.xz"; ya: "ca.ya"; yb: "ca.yb"; yc: "ca.yc"; yd: "ca.yd"; ye: "ca.ye"; yf: "ca.yf"; yg: "ca.yg"; yh: "ca.yh"; yi: "ca.yi"; yj: "ca.yj"; yk: "ca.yk"; yl: "ca.yl"; ym: "ca.ym"; yn: "ca.yn"; yo: "ca.yo"; yp: "ca.yp"; yq: "ca.yq"; yr: "ca.yr"; ys: "ca.ys"; yt: "ca.yt"; yu: "ca.yu"; yv: "ca.yv"; yw: "ca.yw"; yx: "ca.yx"; yy: "ca.yy"; yz: "ca.yz"; za: "ca.za"; zb: "ca.zb"; zc: "ca.zc"; zd: "ca.zd"; ze: "ca.ze"; zf: "ca.zf"; zg: "ca.zg"; zh: "ca.zh"; zi: "ca.zi"; zj: "ca.zj"; zk: "ca.zk"; zl: "ca.zl"; zm: "ca.zm"; zn: "ca.zn"; zo: "ca.zo"; zp: "ca.zp"; zq: "ca.zq"; zr: "ca.zr"; zs: "ca.zs"; zt: "ca.zt"; zu: "ca.zu"; zv: "ca.zv"; zw: "ca.zw"; zx: "ca.zx"; zy: "ca.zy"; zz: "ca.zz"; }; cb: { aa: "cb.aa"; ab: "cb.ab"; ac: "cb.ac"; ad: "cb.ad"; ae: "cb.ae"; af: "cb.af"; ag: "cb.ag"; ah: "cb.ah"; ai: "cb.ai"; aj: "cb.aj"; ak: "cb.ak"; al: "cb.al"; am: "cb.am"; an: "cb.an"; ao: "cb.ao"; ap: "cb.ap"; aq: "cb.aq"; ar: "cb.ar"; as: "cb.as"; at: "cb.at"; au: "cb.au"; av: "cb.av"; aw: "cb.aw"; ax: "cb.ax"; ay: "cb.ay"; az: "cb.az"; ba: "cb.ba"; bb: "cb.bb"; bc: "cb.bc"; bd: "cb.bd"; be: "cb.be"; bf: "cb.bf"; bg: "cb.bg"; bh: "cb.bh"; bi: "cb.bi"; bj: "cb.bj"; bk: "cb.bk"; bl: "cb.bl"; bm: "cb.bm"; bn: "cb.bn"; bo: "cb.bo"; bp: "cb.bp"; bq: "cb.bq"; br: "cb.br"; bs: "cb.bs"; bt: "cb.bt"; bu: "cb.bu"; bv: "cb.bv"; bw: "cb.bw"; bx: "cb.bx"; by: "cb.by"; bz: "cb.bz"; ca: "cb.ca"; cb: "cb.cb"; cc: "cb.cc"; cd: "cb.cd"; ce: "cb.ce"; cf: "cb.cf"; cg: "cb.cg"; ch: "cb.ch"; ci: "cb.ci"; cj: "cb.cj"; ck: "cb.ck"; cl: "cb.cl"; cm: "cb.cm"; cn: "cb.cn"; co: "cb.co"; cp: "cb.cp"; cq: "cb.cq"; cr: "cb.cr"; cs: "cb.cs"; ct: "cb.ct"; cu: "cb.cu"; cv: "cb.cv"; cw: "cb.cw"; cx: "cb.cx"; cy: "cb.cy"; cz: "cb.cz"; da: "cb.da"; db: "cb.db"; dc: "cb.dc"; dd: "cb.dd"; de: "cb.de"; df: "cb.df"; dg: "cb.dg"; dh: "cb.dh"; di: "cb.di"; dj: "cb.dj"; dk: "cb.dk"; dl: "cb.dl"; dm: "cb.dm"; dn: "cb.dn"; do: "cb.do"; dp: "cb.dp"; dq: "cb.dq"; dr: "cb.dr"; ds: "cb.ds"; dt: "cb.dt"; du: "cb.du"; dv: "cb.dv"; dw: "cb.dw"; dx: "cb.dx"; dy: "cb.dy"; dz: "cb.dz"; ea: "cb.ea"; eb: "cb.eb"; ec: "cb.ec"; ed: "cb.ed"; ee: "cb.ee"; ef: "cb.ef"; eg: "cb.eg"; eh: "cb.eh"; ei: "cb.ei"; ej: "cb.ej"; ek: "cb.ek"; el: "cb.el"; em: "cb.em"; en: "cb.en"; eo: "cb.eo"; ep: "cb.ep"; eq: "cb.eq"; er: "cb.er"; es: "cb.es"; et: "cb.et"; eu: "cb.eu"; ev: "cb.ev"; ew: "cb.ew"; ex: "cb.ex"; ey: "cb.ey"; ez: "cb.ez"; fa: "cb.fa"; fb: "cb.fb"; fc: "cb.fc"; fd: "cb.fd"; fe: "cb.fe"; ff: "cb.ff"; fg: "cb.fg"; fh: "cb.fh"; fi: "cb.fi"; fj: "cb.fj"; fk: "cb.fk"; fl: "cb.fl"; fm: "cb.fm"; fn: "cb.fn"; fo: "cb.fo"; fp: "cb.fp"; fq: "cb.fq"; fr: "cb.fr"; fs: "cb.fs"; ft: "cb.ft"; fu: "cb.fu"; fv: "cb.fv"; fw: "cb.fw"; fx: "cb.fx"; fy: "cb.fy"; fz: "cb.fz"; ga: "cb.ga"; gb: "cb.gb"; gc: "cb.gc"; gd: "cb.gd"; ge: "cb.ge"; gf: "cb.gf"; gg: "cb.gg"; gh: "cb.gh"; gi: "cb.gi"; gj: "cb.gj"; gk: "cb.gk"; gl: "cb.gl"; gm: "cb.gm"; gn: "cb.gn"; go: "cb.go"; gp: "cb.gp"; gq: "cb.gq"; gr: "cb.gr"; gs: "cb.gs"; gt: "cb.gt"; gu: "cb.gu"; gv: "cb.gv"; gw: "cb.gw"; gx: "cb.gx"; gy: "cb.gy"; gz: "cb.gz"; ha: "cb.ha"; hb: "cb.hb"; hc: "cb.hc"; hd: "cb.hd"; he: "cb.he"; hf: "cb.hf"; hg: "cb.hg"; hh: "cb.hh"; hi: "cb.hi"; hj: "cb.hj"; hk: "cb.hk"; hl: "cb.hl"; hm: "cb.hm"; hn: "cb.hn"; ho: "cb.ho"; hp: "cb.hp"; hq: "cb.hq"; hr: "cb.hr"; hs: "cb.hs"; ht: "cb.ht"; hu: "cb.hu"; hv: "cb.hv"; hw: "cb.hw"; hx: "cb.hx"; hy: "cb.hy"; hz: "cb.hz"; ia: "cb.ia"; ib: "cb.ib"; ic: "cb.ic"; id: "cb.id"; ie: "cb.ie"; if: "cb.if"; ig: "cb.ig"; ih: "cb.ih"; ii: "cb.ii"; ij: "cb.ij"; ik: "cb.ik"; il: "cb.il"; im: "cb.im"; in: "cb.in"; io: "cb.io"; ip: "cb.ip"; iq: "cb.iq"; ir: "cb.ir"; is: "cb.is"; it: "cb.it"; iu: "cb.iu"; iv: "cb.iv"; iw: "cb.iw"; ix: "cb.ix"; iy: "cb.iy"; iz: "cb.iz"; ja: "cb.ja"; jb: "cb.jb"; jc: "cb.jc"; jd: "cb.jd"; je: "cb.je"; jf: "cb.jf"; jg: "cb.jg"; jh: "cb.jh"; ji: "cb.ji"; jj: "cb.jj"; jk: "cb.jk"; jl: "cb.jl"; jm: "cb.jm"; jn: "cb.jn"; jo: "cb.jo"; jp: "cb.jp"; jq: "cb.jq"; jr: "cb.jr"; js: "cb.js"; jt: "cb.jt"; ju: "cb.ju"; jv: "cb.jv"; jw: "cb.jw"; jx: "cb.jx"; jy: "cb.jy"; jz: "cb.jz"; ka: "cb.ka"; kb: "cb.kb"; kc: "cb.kc"; kd: "cb.kd"; ke: "cb.ke"; kf: "cb.kf"; kg: "cb.kg"; kh: "cb.kh"; ki: "cb.ki"; kj: "cb.kj"; kk: "cb.kk"; kl: "cb.kl"; km: "cb.km"; kn: "cb.kn"; ko: "cb.ko"; kp: "cb.kp"; kq: "cb.kq"; kr: "cb.kr"; ks: "cb.ks"; kt: "cb.kt"; ku: "cb.ku"; kv: "cb.kv"; kw: "cb.kw"; kx: "cb.kx"; ky: "cb.ky"; kz: "cb.kz"; la: "cb.la"; lb: "cb.lb"; lc: "cb.lc"; ld: "cb.ld"; le: "cb.le"; lf: "cb.lf"; lg: "cb.lg"; lh: "cb.lh"; li: "cb.li"; lj: "cb.lj"; lk: "cb.lk"; ll: "cb.ll"; lm: "cb.lm"; ln: "cb.ln"; lo: "cb.lo"; lp: "cb.lp"; lq: "cb.lq"; lr: "cb.lr"; ls: "cb.ls"; lt: "cb.lt"; lu: "cb.lu"; lv: "cb.lv"; lw: "cb.lw"; lx: "cb.lx"; ly: "cb.ly"; lz: "cb.lz"; ma: "cb.ma"; mb: "cb.mb"; mc: "cb.mc"; md: "cb.md"; me: "cb.me"; mf: "cb.mf"; mg: "cb.mg"; mh: "cb.mh"; mi: "cb.mi"; mj: "cb.mj"; mk: "cb.mk"; ml: "cb.ml"; mm: "cb.mm"; mn: "cb.mn"; mo: "cb.mo"; mp: "cb.mp"; mq: "cb.mq"; mr: "cb.mr"; ms: "cb.ms"; mt: "cb.mt"; mu: "cb.mu"; mv: "cb.mv"; mw: "cb.mw"; mx: "cb.mx"; my: "cb.my"; mz: "cb.mz"; na: "cb.na"; nb: "cb.nb"; nc: "cb.nc"; nd: "cb.nd"; ne: "cb.ne"; nf: "cb.nf"; ng: "cb.ng"; nh: "cb.nh"; ni: "cb.ni"; nj: "cb.nj"; nk: "cb.nk"; nl: "cb.nl"; nm: "cb.nm"; nn: "cb.nn"; no: "cb.no"; np: "cb.np"; nq: "cb.nq"; nr: "cb.nr"; ns: "cb.ns"; nt: "cb.nt"; nu: "cb.nu"; nv: "cb.nv"; nw: "cb.nw"; nx: "cb.nx"; ny: "cb.ny"; nz: "cb.nz"; oa: "cb.oa"; ob: "cb.ob"; oc: "cb.oc"; od: "cb.od"; oe: "cb.oe"; of: "cb.of"; og: "cb.og"; oh: "cb.oh"; oi: "cb.oi"; oj: "cb.oj"; ok: "cb.ok"; ol: "cb.ol"; om: "cb.om"; on: "cb.on"; oo: "cb.oo"; op: "cb.op"; oq: "cb.oq"; or: "cb.or"; os: "cb.os"; ot: "cb.ot"; ou: "cb.ou"; ov: "cb.ov"; ow: "cb.ow"; ox: "cb.ox"; oy: "cb.oy"; oz: "cb.oz"; pa: "cb.pa"; pb: "cb.pb"; pc: "cb.pc"; pd: "cb.pd"; pe: "cb.pe"; pf: "cb.pf"; pg: "cb.pg"; ph: "cb.ph"; pi: "cb.pi"; pj: "cb.pj"; pk: "cb.pk"; pl: "cb.pl"; pm: "cb.pm"; pn: "cb.pn"; po: "cb.po"; pp: "cb.pp"; pq: "cb.pq"; pr: "cb.pr"; ps: "cb.ps"; pt: "cb.pt"; pu: "cb.pu"; pv: "cb.pv"; pw: "cb.pw"; px: "cb.px"; py: "cb.py"; pz: "cb.pz"; qa: "cb.qa"; qb: "cb.qb"; qc: "cb.qc"; qd: "cb.qd"; qe: "cb.qe"; qf: "cb.qf"; qg: "cb.qg"; qh: "cb.qh"; qi: "cb.qi"; qj: "cb.qj"; qk: "cb.qk"; ql: "cb.ql"; qm: "cb.qm"; qn: "cb.qn"; qo: "cb.qo"; qp: "cb.qp"; qq: "cb.qq"; qr: "cb.qr"; qs: "cb.qs"; qt: "cb.qt"; qu: "cb.qu"; qv: "cb.qv"; qw: "cb.qw"; qx: "cb.qx"; qy: "cb.qy"; qz: "cb.qz"; ra: "cb.ra"; rb: "cb.rb"; rc: "cb.rc"; rd: "cb.rd"; re: "cb.re"; rf: "cb.rf"; rg: "cb.rg"; rh: "cb.rh"; ri: "cb.ri"; rj: "cb.rj"; rk: "cb.rk"; rl: "cb.rl"; rm: "cb.rm"; rn: "cb.rn"; ro: "cb.ro"; rp: "cb.rp"; rq: "cb.rq"; rr: "cb.rr"; rs: "cb.rs"; rt: "cb.rt"; ru: "cb.ru"; rv: "cb.rv"; rw: "cb.rw"; rx: "cb.rx"; ry: "cb.ry"; rz: "cb.rz"; sa: "cb.sa"; sb: "cb.sb"; sc: "cb.sc"; sd: "cb.sd"; se: "cb.se"; sf: "cb.sf"; sg: "cb.sg"; sh: "cb.sh"; si: "cb.si"; sj: "cb.sj"; sk: "cb.sk"; sl: "cb.sl"; sm: "cb.sm"; sn: "cb.sn"; so: "cb.so"; sp: "cb.sp"; sq: "cb.sq"; sr: "cb.sr"; ss: "cb.ss"; st: "cb.st"; su: "cb.su"; sv: "cb.sv"; sw: "cb.sw"; sx: "cb.sx"; sy: "cb.sy"; sz: "cb.sz"; ta: "cb.ta"; tb: "cb.tb"; tc: "cb.tc"; td: "cb.td"; te: "cb.te"; tf: "cb.tf"; tg: "cb.tg"; th: "cb.th"; ti: "cb.ti"; tj: "cb.tj"; tk: "cb.tk"; tl: "cb.tl"; tm: "cb.tm"; tn: "cb.tn"; to: "cb.to"; tp: "cb.tp"; tq: "cb.tq"; tr: "cb.tr"; ts: "cb.ts"; tt: "cb.tt"; tu: "cb.tu"; tv: "cb.tv"; tw: "cb.tw"; tx: "cb.tx"; ty: "cb.ty"; tz: "cb.tz"; ua: "cb.ua"; ub: "cb.ub"; uc: "cb.uc"; ud: "cb.ud"; ue: "cb.ue"; uf: "cb.uf"; ug: "cb.ug"; uh: "cb.uh"; ui: "cb.ui"; uj: "cb.uj"; uk: "cb.uk"; ul: "cb.ul"; um: "cb.um"; un: "cb.un"; uo: "cb.uo"; up: "cb.up"; uq: "cb.uq"; ur: "cb.ur"; us: "cb.us"; ut: "cb.ut"; uu: "cb.uu"; uv: "cb.uv"; uw: "cb.uw"; ux: "cb.ux"; uy: "cb.uy"; uz: "cb.uz"; va: "cb.va"; vb: "cb.vb"; vc: "cb.vc"; vd: "cb.vd"; ve: "cb.ve"; vf: "cb.vf"; vg: "cb.vg"; vh: "cb.vh"; vi: "cb.vi"; vj: "cb.vj"; vk: "cb.vk"; vl: "cb.vl"; vm: "cb.vm"; vn: "cb.vn"; vo: "cb.vo"; vp: "cb.vp"; vq: "cb.vq"; vr: "cb.vr"; vs: "cb.vs"; vt: "cb.vt"; vu: "cb.vu"; vv: "cb.vv"; vw: "cb.vw"; vx: "cb.vx"; vy: "cb.vy"; vz: "cb.vz"; wa: "cb.wa"; wb: "cb.wb"; wc: "cb.wc"; wd: "cb.wd"; we: "cb.we"; wf: "cb.wf"; wg: "cb.wg"; wh: "cb.wh"; wi: "cb.wi"; wj: "cb.wj"; wk: "cb.wk"; wl: "cb.wl"; wm: "cb.wm"; wn: "cb.wn"; wo: "cb.wo"; wp: "cb.wp"; wq: "cb.wq"; wr: "cb.wr"; ws: "cb.ws"; wt: "cb.wt"; wu: "cb.wu"; wv: "cb.wv"; ww: "cb.ww"; wx: "cb.wx"; wy: "cb.wy"; wz: "cb.wz"; xa: "cb.xa"; xb: "cb.xb"; xc: "cb.xc"; xd: "cb.xd"; xe: "cb.xe"; xf: "cb.xf"; xg: "cb.xg"; xh: "cb.xh"; xi: "cb.xi"; xj: "cb.xj"; xk: "cb.xk"; xl: "cb.xl"; xm: "cb.xm"; xn: "cb.xn"; xo: "cb.xo"; xp: "cb.xp"; xq: "cb.xq"; xr: "cb.xr"; xs: "cb.xs"; xt: "cb.xt"; xu: "cb.xu"; xv: "cb.xv"; xw: "cb.xw"; xx: "cb.xx"; xy: "cb.xy"; xz: "cb.xz"; ya: "cb.ya"; yb: "cb.yb"; yc: "cb.yc"; yd: "cb.yd"; ye: "cb.ye"; yf: "cb.yf"; yg: "cb.yg"; yh: "cb.yh"; yi: "cb.yi"; yj: "cb.yj"; yk: "cb.yk"; yl: "cb.yl"; ym: "cb.ym"; yn: "cb.yn"; yo: "cb.yo"; yp: "cb.yp"; yq: "cb.yq"; yr: "cb.yr"; ys: "cb.ys"; yt: "cb.yt"; yu: "cb.yu"; yv: "cb.yv"; yw: "cb.yw"; yx: "cb.yx"; yy: "cb.yy"; yz: "cb.yz"; za: "cb.za"; zb: "cb.zb"; zc: "cb.zc"; zd: "cb.zd"; ze: "cb.ze"; zf: "cb.zf"; zg: "cb.zg"; zh: "cb.zh"; zi: "cb.zi"; zj: "cb.zj"; zk: "cb.zk"; zl: "cb.zl"; zm: "cb.zm"; zn: "cb.zn"; zo: "cb.zo"; zp: "cb.zp"; zq: "cb.zq"; zr: "cb.zr"; zs: "cb.zs"; zt: "cb.zt"; zu: "cb.zu"; zv: "cb.zv"; zw: "cb.zw"; zx: "cb.zx"; zy: "cb.zy"; zz: "cb.zz"; }; cc: { aa: "cc.aa"; ab: "cc.ab"; ac: "cc.ac"; ad: "cc.ad"; ae: "cc.ae"; af: "cc.af"; ag: "cc.ag"; ah: "cc.ah"; ai: "cc.ai"; aj: "cc.aj"; ak: "cc.ak"; al: "cc.al"; am: "cc.am"; an: "cc.an"; ao: "cc.ao"; ap: "cc.ap"; aq: "cc.aq"; ar: "cc.ar"; as: "cc.as"; at: "cc.at"; au: "cc.au"; av: "cc.av"; aw: "cc.aw"; ax: "cc.ax"; ay: "cc.ay"; az: "cc.az"; ba: "cc.ba"; bb: "cc.bb"; bc: "cc.bc"; bd: "cc.bd"; be: "cc.be"; bf: "cc.bf"; bg: "cc.bg"; bh: "cc.bh"; bi: "cc.bi"; bj: "cc.bj"; bk: "cc.bk"; bl: "cc.bl"; bm: "cc.bm"; bn: "cc.bn"; bo: "cc.bo"; bp: "cc.bp"; bq: "cc.bq"; br: "cc.br"; bs: "cc.bs"; bt: "cc.bt"; bu: "cc.bu"; bv: "cc.bv"; bw: "cc.bw"; bx: "cc.bx"; by: "cc.by"; bz: "cc.bz"; ca: "cc.ca"; cb: "cc.cb"; cc: "cc.cc"; cd: "cc.cd"; ce: "cc.ce"; cf: "cc.cf"; cg: "cc.cg"; ch: "cc.ch"; ci: "cc.ci"; cj: "cc.cj"; ck: "cc.ck"; cl: "cc.cl"; cm: "cc.cm"; cn: "cc.cn"; co: "cc.co"; cp: "cc.cp"; cq: "cc.cq"; cr: "cc.cr"; cs: "cc.cs"; ct: "cc.ct"; cu: "cc.cu"; cv: "cc.cv"; cw: "cc.cw"; cx: "cc.cx"; cy: "cc.cy"; cz: "cc.cz"; da: "cc.da"; db: "cc.db"; dc: "cc.dc"; dd: "cc.dd"; de: "cc.de"; df: "cc.df"; dg: "cc.dg"; dh: "cc.dh"; di: "cc.di"; dj: "cc.dj"; dk: "cc.dk"; dl: "cc.dl"; dm: "cc.dm"; dn: "cc.dn"; do: "cc.do"; dp: "cc.dp"; dq: "cc.dq"; dr: "cc.dr"; ds: "cc.ds"; dt: "cc.dt"; du: "cc.du"; dv: "cc.dv"; dw: "cc.dw"; dx: "cc.dx"; dy: "cc.dy"; dz: "cc.dz"; ea: "cc.ea"; eb: "cc.eb"; ec: "cc.ec"; ed: "cc.ed"; ee: "cc.ee"; ef: "cc.ef"; eg: "cc.eg"; eh: "cc.eh"; ei: "cc.ei"; ej: "cc.ej"; ek: "cc.ek"; el: "cc.el"; em: "cc.em"; en: "cc.en"; eo: "cc.eo"; ep: "cc.ep"; eq: "cc.eq"; er: "cc.er"; es: "cc.es"; et: "cc.et"; eu: "cc.eu"; ev: "cc.ev"; ew: "cc.ew"; ex: "cc.ex"; ey: "cc.ey"; ez: "cc.ez"; fa: "cc.fa"; fb: "cc.fb"; fc: "cc.fc"; fd: "cc.fd"; fe: "cc.fe"; ff: "cc.ff"; fg: "cc.fg"; fh: "cc.fh"; fi: "cc.fi"; fj: "cc.fj"; fk: "cc.fk"; fl: "cc.fl"; fm: "cc.fm"; fn: "cc.fn"; fo: "cc.fo"; fp: "cc.fp"; fq: "cc.fq"; fr: "cc.fr"; fs: "cc.fs"; ft: "cc.ft"; fu: "cc.fu"; fv: "cc.fv"; fw: "cc.fw"; fx: "cc.fx"; fy: "cc.fy"; fz: "cc.fz"; ga: "cc.ga"; gb: "cc.gb"; gc: "cc.gc"; gd: "cc.gd"; ge: "cc.ge"; gf: "cc.gf"; gg: "cc.gg"; gh: "cc.gh"; gi: "cc.gi"; gj: "cc.gj"; gk: "cc.gk"; gl: "cc.gl"; gm: "cc.gm"; gn: "cc.gn"; go: "cc.go"; gp: "cc.gp"; gq: "cc.gq"; gr: "cc.gr"; gs: "cc.gs"; gt: "cc.gt"; gu: "cc.gu"; gv: "cc.gv"; gw: "cc.gw"; gx: "cc.gx"; gy: "cc.gy"; gz: "cc.gz"; ha: "cc.ha"; hb: "cc.hb"; hc: "cc.hc"; hd: "cc.hd"; he: "cc.he"; hf: "cc.hf"; hg: "cc.hg"; hh: "cc.hh"; hi: "cc.hi"; hj: "cc.hj"; hk: "cc.hk"; hl: "cc.hl"; hm: "cc.hm"; hn: "cc.hn"; ho: "cc.ho"; hp: "cc.hp"; hq: "cc.hq"; hr: "cc.hr"; hs: "cc.hs"; ht: "cc.ht"; hu: "cc.hu"; hv: "cc.hv"; hw: "cc.hw"; hx: "cc.hx"; hy: "cc.hy"; hz: "cc.hz"; ia: "cc.ia"; ib: "cc.ib"; ic: "cc.ic"; id: "cc.id"; ie: "cc.ie"; if: "cc.if"; ig: "cc.ig"; ih: "cc.ih"; ii: "cc.ii"; ij: "cc.ij"; ik: "cc.ik"; il: "cc.il"; im: "cc.im"; in: "cc.in"; io: "cc.io"; ip: "cc.ip"; iq: "cc.iq"; ir: "cc.ir"; is: "cc.is"; it: "cc.it"; iu: "cc.iu"; iv: "cc.iv"; iw: "cc.iw"; ix: "cc.ix"; iy: "cc.iy"; iz: "cc.iz"; ja: "cc.ja"; jb: "cc.jb"; jc: "cc.jc"; jd: "cc.jd"; je: "cc.je"; jf: "cc.jf"; jg: "cc.jg"; jh: "cc.jh"; ji: "cc.ji"; jj: "cc.jj"; jk: "cc.jk"; jl: "cc.jl"; jm: "cc.jm"; jn: "cc.jn"; jo: "cc.jo"; jp: "cc.jp"; jq: "cc.jq"; jr: "cc.jr"; js: "cc.js"; jt: "cc.jt"; ju: "cc.ju"; jv: "cc.jv"; jw: "cc.jw"; jx: "cc.jx"; jy: "cc.jy"; jz: "cc.jz"; ka: "cc.ka"; kb: "cc.kb"; kc: "cc.kc"; kd: "cc.kd"; ke: "cc.ke"; kf: "cc.kf"; kg: "cc.kg"; kh: "cc.kh"; ki: "cc.ki"; kj: "cc.kj"; kk: "cc.kk"; kl: "cc.kl"; km: "cc.km"; kn: "cc.kn"; ko: "cc.ko"; kp: "cc.kp"; kq: "cc.kq"; kr: "cc.kr"; ks: "cc.ks"; kt: "cc.kt"; ku: "cc.ku"; kv: "cc.kv"; kw: "cc.kw"; kx: "cc.kx"; ky: "cc.ky"; kz: "cc.kz"; la: "cc.la"; lb: "cc.lb"; lc: "cc.lc"; ld: "cc.ld"; le: "cc.le"; lf: "cc.lf"; lg: "cc.lg"; lh: "cc.lh"; li: "cc.li"; lj: "cc.lj"; lk: "cc.lk"; ll: "cc.ll"; lm: "cc.lm"; ln: "cc.ln"; lo: "cc.lo"; lp: "cc.lp"; lq: "cc.lq"; lr: "cc.lr"; ls: "cc.ls"; lt: "cc.lt"; lu: "cc.lu"; lv: "cc.lv"; lw: "cc.lw"; lx: "cc.lx"; ly: "cc.ly"; lz: "cc.lz"; ma: "cc.ma"; mb: "cc.mb"; mc: "cc.mc"; md: "cc.md"; me: "cc.me"; mf: "cc.mf"; mg: "cc.mg"; mh: "cc.mh"; mi: "cc.mi"; mj: "cc.mj"; mk: "cc.mk"; ml: "cc.ml"; mm: "cc.mm"; mn: "cc.mn"; mo: "cc.mo"; mp: "cc.mp"; mq: "cc.mq"; mr: "cc.mr"; ms: "cc.ms"; mt: "cc.mt"; mu: "cc.mu"; mv: "cc.mv"; mw: "cc.mw"; mx: "cc.mx"; my: "cc.my"; mz: "cc.mz"; na: "cc.na"; nb: "cc.nb"; nc: "cc.nc"; nd: "cc.nd"; ne: "cc.ne"; nf: "cc.nf"; ng: "cc.ng"; nh: "cc.nh"; ni: "cc.ni"; nj: "cc.nj"; nk: "cc.nk"; nl: "cc.nl"; nm: "cc.nm"; nn: "cc.nn"; no: "cc.no"; np: "cc.np"; nq: "cc.nq"; nr: "cc.nr"; ns: "cc.ns"; nt: "cc.nt"; nu: "cc.nu"; nv: "cc.nv"; nw: "cc.nw"; nx: "cc.nx"; ny: "cc.ny"; nz: "cc.nz"; oa: "cc.oa"; ob: "cc.ob"; oc: "cc.oc"; od: "cc.od"; oe: "cc.oe"; of: "cc.of"; og: "cc.og"; oh: "cc.oh"; oi: "cc.oi"; oj: "cc.oj"; ok: "cc.ok"; ol: "cc.ol"; om: "cc.om"; on: "cc.on"; oo: "cc.oo"; op: "cc.op"; oq: "cc.oq"; or: "cc.or"; os: "cc.os"; ot: "cc.ot"; ou: "cc.ou"; ov: "cc.ov"; ow: "cc.ow"; ox: "cc.ox"; oy: "cc.oy"; oz: "cc.oz"; pa: "cc.pa"; pb: "cc.pb"; pc: "cc.pc"; pd: "cc.pd"; pe: "cc.pe"; pf: "cc.pf"; pg: "cc.pg"; ph: "cc.ph"; pi: "cc.pi"; pj: "cc.pj"; pk: "cc.pk"; pl: "cc.pl"; pm: "cc.pm"; pn: "cc.pn"; po: "cc.po"; pp: "cc.pp"; pq: "cc.pq"; pr: "cc.pr"; ps: "cc.ps"; pt: "cc.pt"; pu: "cc.pu"; pv: "cc.pv"; pw: "cc.pw"; px: "cc.px"; py: "cc.py"; pz: "cc.pz"; qa: "cc.qa"; qb: "cc.qb"; qc: "cc.qc"; qd: "cc.qd"; qe: "cc.qe"; qf: "cc.qf"; qg: "cc.qg"; qh: "cc.qh"; qi: "cc.qi"; qj: "cc.qj"; qk: "cc.qk"; ql: "cc.ql"; qm: "cc.qm"; qn: "cc.qn"; qo: "cc.qo"; qp: "cc.qp"; qq: "cc.qq"; qr: "cc.qr"; qs: "cc.qs"; qt: "cc.qt"; qu: "cc.qu"; qv: "cc.qv"; qw: "cc.qw"; qx: "cc.qx"; qy: "cc.qy"; qz: "cc.qz"; ra: "cc.ra"; rb: "cc.rb"; rc: "cc.rc"; rd: "cc.rd"; re: "cc.re"; rf: "cc.rf"; rg: "cc.rg"; rh: "cc.rh"; ri: "cc.ri"; rj: "cc.rj"; rk: "cc.rk"; rl: "cc.rl"; rm: "cc.rm"; rn: "cc.rn"; ro: "cc.ro"; rp: "cc.rp"; rq: "cc.rq"; rr: "cc.rr"; rs: "cc.rs"; rt: "cc.rt"; ru: "cc.ru"; rv: "cc.rv"; rw: "cc.rw"; rx: "cc.rx"; ry: "cc.ry"; rz: "cc.rz"; sa: "cc.sa"; sb: "cc.sb"; sc: "cc.sc"; sd: "cc.sd"; se: "cc.se"; sf: "cc.sf"; sg: "cc.sg"; sh: "cc.sh"; si: "cc.si"; sj: "cc.sj"; sk: "cc.sk"; sl: "cc.sl"; sm: "cc.sm"; sn: "cc.sn"; so: "cc.so"; sp: "cc.sp"; sq: "cc.sq"; sr: "cc.sr"; ss: "cc.ss"; st: "cc.st"; su: "cc.su"; sv: "cc.sv"; sw: "cc.sw"; sx: "cc.sx"; sy: "cc.sy"; sz: "cc.sz"; ta: "cc.ta"; tb: "cc.tb"; tc: "cc.tc"; td: "cc.td"; te: "cc.te"; tf: "cc.tf"; tg: "cc.tg"; th: "cc.th"; ti: "cc.ti"; tj: "cc.tj"; tk: "cc.tk"; tl: "cc.tl"; tm: "cc.tm"; tn: "cc.tn"; to: "cc.to"; tp: "cc.tp"; tq: "cc.tq"; tr: "cc.tr"; ts: "cc.ts"; tt: "cc.tt"; tu: "cc.tu"; tv: "cc.tv"; tw: "cc.tw"; tx: "cc.tx"; ty: "cc.ty"; tz: "cc.tz"; ua: "cc.ua"; ub: "cc.ub"; uc: "cc.uc"; ud: "cc.ud"; ue: "cc.ue"; uf: "cc.uf"; ug: "cc.ug"; uh: "cc.uh"; ui: "cc.ui"; uj: "cc.uj"; uk: "cc.uk"; ul: "cc.ul"; um: "cc.um"; un: "cc.un"; uo: "cc.uo"; up: "cc.up"; uq: "cc.uq"; ur: "cc.ur"; us: "cc.us"; ut: "cc.ut"; uu: "cc.uu"; uv: "cc.uv"; uw: "cc.uw"; ux: "cc.ux"; uy: "cc.uy"; uz: "cc.uz"; va: "cc.va"; vb: "cc.vb"; vc: "cc.vc"; vd: "cc.vd"; ve: "cc.ve"; vf: "cc.vf"; vg: "cc.vg"; vh: "cc.vh"; vi: "cc.vi"; vj: "cc.vj"; vk: "cc.vk"; vl: "cc.vl"; vm: "cc.vm"; vn: "cc.vn"; vo: "cc.vo"; vp: "cc.vp"; vq: "cc.vq"; vr: "cc.vr"; vs: "cc.vs"; vt: "cc.vt"; vu: "cc.vu"; vv: "cc.vv"; vw: "cc.vw"; vx: "cc.vx"; vy: "cc.vy"; vz: "cc.vz"; wa: "cc.wa"; wb: "cc.wb"; wc: "cc.wc"; wd: "cc.wd"; we: "cc.we"; wf: "cc.wf"; wg: "cc.wg"; wh: "cc.wh"; wi: "cc.wi"; wj: "cc.wj"; wk: "cc.wk"; wl: "cc.wl"; wm: "cc.wm"; wn: "cc.wn"; wo: "cc.wo"; wp: "cc.wp"; wq: "cc.wq"; wr: "cc.wr"; ws: "cc.ws"; wt: "cc.wt"; wu: "cc.wu"; wv: "cc.wv"; ww: "cc.ww"; wx: "cc.wx"; wy: "cc.wy"; wz: "cc.wz"; xa: "cc.xa"; xb: "cc.xb"; xc: "cc.xc"; xd: "cc.xd"; xe: "cc.xe"; xf: "cc.xf"; xg: "cc.xg"; xh: "cc.xh"; xi: "cc.xi"; xj: "cc.xj"; xk: "cc.xk"; xl: "cc.xl"; xm: "cc.xm"; xn: "cc.xn"; xo: "cc.xo"; xp: "cc.xp"; xq: "cc.xq"; xr: "cc.xr"; xs: "cc.xs"; xt: "cc.xt"; xu: "cc.xu"; xv: "cc.xv"; xw: "cc.xw"; xx: "cc.xx"; xy: "cc.xy"; xz: "cc.xz"; ya: "cc.ya"; yb: "cc.yb"; yc: "cc.yc"; yd: "cc.yd"; ye: "cc.ye"; yf: "cc.yf"; yg: "cc.yg"; yh: "cc.yh"; yi: "cc.yi"; yj: "cc.yj"; yk: "cc.yk"; yl: "cc.yl"; ym: "cc.ym"; yn: "cc.yn"; yo: "cc.yo"; yp: "cc.yp"; yq: "cc.yq"; yr: "cc.yr"; ys: "cc.ys"; yt: "cc.yt"; yu: "cc.yu"; yv: "cc.yv"; yw: "cc.yw"; yx: "cc.yx"; yy: "cc.yy"; yz: "cc.yz"; za: "cc.za"; zb: "cc.zb"; zc: "cc.zc"; zd: "cc.zd"; ze: "cc.ze"; zf: "cc.zf"; zg: "cc.zg"; zh: "cc.zh"; zi: "cc.zi"; zj: "cc.zj"; zk: "cc.zk"; zl: "cc.zl"; zm: "cc.zm"; zn: "cc.zn"; zo: "cc.zo"; zp: "cc.zp"; zq: "cc.zq"; zr: "cc.zr"; zs: "cc.zs"; zt: "cc.zt"; zu: "cc.zu"; zv: "cc.zv"; zw: "cc.zw"; zx: "cc.zx"; zy: "cc.zy"; zz: "cc.zz"; }; cd: { aa: "cd.aa"; ab: "cd.ab"; ac: "cd.ac"; ad: "cd.ad"; ae: "cd.ae"; af: "cd.af"; ag: "cd.ag"; ah: "cd.ah"; ai: "cd.ai"; aj: "cd.aj"; ak: "cd.ak"; al: "cd.al"; am: "cd.am"; an: "cd.an"; ao: "cd.ao"; ap: "cd.ap"; aq: "cd.aq"; ar: "cd.ar"; as: "cd.as"; at: "cd.at"; au: "cd.au"; av: "cd.av"; aw: "cd.aw"; ax: "cd.ax"; ay: "cd.ay"; az: "cd.az"; ba: "cd.ba"; bb: "cd.bb"; bc: "cd.bc"; bd: "cd.bd"; be: "cd.be"; bf: "cd.bf"; bg: "cd.bg"; bh: "cd.bh"; bi: "cd.bi"; bj: "cd.bj"; bk: "cd.bk"; bl: "cd.bl"; bm: "cd.bm"; bn: "cd.bn"; bo: "cd.bo"; bp: "cd.bp"; bq: "cd.bq"; br: "cd.br"; bs: "cd.bs"; bt: "cd.bt"; bu: "cd.bu"; bv: "cd.bv"; bw: "cd.bw"; bx: "cd.bx"; by: "cd.by"; bz: "cd.bz"; ca: "cd.ca"; cb: "cd.cb"; cc: "cd.cc"; cd: "cd.cd"; ce: "cd.ce"; cf: "cd.cf"; cg: "cd.cg"; ch: "cd.ch"; ci: "cd.ci"; cj: "cd.cj"; ck: "cd.ck"; cl: "cd.cl"; cm: "cd.cm"; cn: "cd.cn"; co: "cd.co"; cp: "cd.cp"; cq: "cd.cq"; cr: "cd.cr"; cs: "cd.cs"; ct: "cd.ct"; cu: "cd.cu"; cv: "cd.cv"; cw: "cd.cw"; cx: "cd.cx"; cy: "cd.cy"; cz: "cd.cz"; da: "cd.da"; db: "cd.db"; dc: "cd.dc"; dd: "cd.dd"; de: "cd.de"; df: "cd.df"; dg: "cd.dg"; dh: "cd.dh"; di: "cd.di"; dj: "cd.dj"; dk: "cd.dk"; dl: "cd.dl"; dm: "cd.dm"; dn: "cd.dn"; do: "cd.do"; dp: "cd.dp"; dq: "cd.dq"; dr: "cd.dr"; ds: "cd.ds"; dt: "cd.dt"; du: "cd.du"; dv: "cd.dv"; dw: "cd.dw"; dx: "cd.dx"; dy: "cd.dy"; dz: "cd.dz"; ea: "cd.ea"; eb: "cd.eb"; ec: "cd.ec"; ed: "cd.ed"; ee: "cd.ee"; ef: "cd.ef"; eg: "cd.eg"; eh: "cd.eh"; ei: "cd.ei"; ej: "cd.ej"; ek: "cd.ek"; el: "cd.el"; em: "cd.em"; en: "cd.en"; eo: "cd.eo"; ep: "cd.ep"; eq: "cd.eq"; er: "cd.er"; es: "cd.es"; et: "cd.et"; eu: "cd.eu"; ev: "cd.ev"; ew: "cd.ew"; ex: "cd.ex"; ey: "cd.ey"; ez: "cd.ez"; fa: "cd.fa"; fb: "cd.fb"; fc: "cd.fc"; fd: "cd.fd"; fe: "cd.fe"; ff: "cd.ff"; fg: "cd.fg"; fh: "cd.fh"; fi: "cd.fi"; fj: "cd.fj"; fk: "cd.fk"; fl: "cd.fl"; fm: "cd.fm"; fn: "cd.fn"; fo: "cd.fo"; fp: "cd.fp"; fq: "cd.fq"; fr: "cd.fr"; fs: "cd.fs"; ft: "cd.ft"; fu: "cd.fu"; fv: "cd.fv"; fw: "cd.fw"; fx: "cd.fx"; fy: "cd.fy"; fz: "cd.fz"; ga: "cd.ga"; gb: "cd.gb"; gc: "cd.gc"; gd: "cd.gd"; ge: "cd.ge"; gf: "cd.gf"; gg: "cd.gg"; gh: "cd.gh"; gi: "cd.gi"; gj: "cd.gj"; gk: "cd.gk"; gl: "cd.gl"; gm: "cd.gm"; gn: "cd.gn"; go: "cd.go"; gp: "cd.gp"; gq: "cd.gq"; gr: "cd.gr"; gs: "cd.gs"; gt: "cd.gt"; gu: "cd.gu"; gv: "cd.gv"; gw: "cd.gw"; gx: "cd.gx"; gy: "cd.gy"; gz: "cd.gz"; ha: "cd.ha"; hb: "cd.hb"; hc: "cd.hc"; hd: "cd.hd"; he: "cd.he"; hf: "cd.hf"; hg: "cd.hg"; hh: "cd.hh"; hi: "cd.hi"; hj: "cd.hj"; hk: "cd.hk"; hl: "cd.hl"; hm: "cd.hm"; hn: "cd.hn"; ho: "cd.ho"; hp: "cd.hp"; hq: "cd.hq"; hr: "cd.hr"; hs: "cd.hs"; ht: "cd.ht"; hu: "cd.hu"; hv: "cd.hv"; hw: "cd.hw"; hx: "cd.hx"; hy: "cd.hy"; hz: "cd.hz"; ia: "cd.ia"; ib: "cd.ib"; ic: "cd.ic"; id: "cd.id"; ie: "cd.ie"; if: "cd.if"; ig: "cd.ig"; ih: "cd.ih"; ii: "cd.ii"; ij: "cd.ij"; ik: "cd.ik"; il: "cd.il"; im: "cd.im"; in: "cd.in"; io: "cd.io"; ip: "cd.ip"; iq: "cd.iq"; ir: "cd.ir"; is: "cd.is"; it: "cd.it"; iu: "cd.iu"; iv: "cd.iv"; iw: "cd.iw"; ix: "cd.ix"; iy: "cd.iy"; iz: "cd.iz"; ja: "cd.ja"; jb: "cd.jb"; jc: "cd.jc"; jd: "cd.jd"; je: "cd.je"; jf: "cd.jf"; jg: "cd.jg"; jh: "cd.jh"; ji: "cd.ji"; jj: "cd.jj"; jk: "cd.jk"; jl: "cd.jl"; jm: "cd.jm"; jn: "cd.jn"; jo: "cd.jo"; jp: "cd.jp"; jq: "cd.jq"; jr: "cd.jr"; js: "cd.js"; jt: "cd.jt"; ju: "cd.ju"; jv: "cd.jv"; jw: "cd.jw"; jx: "cd.jx"; jy: "cd.jy"; jz: "cd.jz"; ka: "cd.ka"; kb: "cd.kb"; kc: "cd.kc"; kd: "cd.kd"; ke: "cd.ke"; kf: "cd.kf"; kg: "cd.kg"; kh: "cd.kh"; ki: "cd.ki"; kj: "cd.kj"; kk: "cd.kk"; kl: "cd.kl"; km: "cd.km"; kn: "cd.kn"; ko: "cd.ko"; kp: "cd.kp"; kq: "cd.kq"; kr: "cd.kr"; ks: "cd.ks"; kt: "cd.kt"; ku: "cd.ku"; kv: "cd.kv"; kw: "cd.kw"; kx: "cd.kx"; ky: "cd.ky"; kz: "cd.kz"; la: "cd.la"; lb: "cd.lb"; lc: "cd.lc"; ld: "cd.ld"; le: "cd.le"; lf: "cd.lf"; lg: "cd.lg"; lh: "cd.lh"; li: "cd.li"; lj: "cd.lj"; lk: "cd.lk"; ll: "cd.ll"; lm: "cd.lm"; ln: "cd.ln"; lo: "cd.lo"; lp: "cd.lp"; lq: "cd.lq"; lr: "cd.lr"; ls: "cd.ls"; lt: "cd.lt"; lu: "cd.lu"; lv: "cd.lv"; lw: "cd.lw"; lx: "cd.lx"; ly: "cd.ly"; lz: "cd.lz"; ma: "cd.ma"; mb: "cd.mb"; mc: "cd.mc"; md: "cd.md"; me: "cd.me"; mf: "cd.mf"; mg: "cd.mg"; mh: "cd.mh"; mi: "cd.mi"; mj: "cd.mj"; mk: "cd.mk"; ml: "cd.ml"; mm: "cd.mm"; mn: "cd.mn"; mo: "cd.mo"; mp: "cd.mp"; mq: "cd.mq"; mr: "cd.mr"; ms: "cd.ms"; mt: "cd.mt"; mu: "cd.mu"; mv: "cd.mv"; mw: "cd.mw"; mx: "cd.mx"; my: "cd.my"; mz: "cd.mz"; na: "cd.na"; nb: "cd.nb"; nc: "cd.nc"; nd: "cd.nd"; ne: "cd.ne"; nf: "cd.nf"; ng: "cd.ng"; nh: "cd.nh"; ni: "cd.ni"; nj: "cd.nj"; nk: "cd.nk"; nl: "cd.nl"; nm: "cd.nm"; nn: "cd.nn"; no: "cd.no"; np: "cd.np"; nq: "cd.nq"; nr: "cd.nr"; ns: "cd.ns"; nt: "cd.nt"; nu: "cd.nu"; nv: "cd.nv"; nw: "cd.nw"; nx: "cd.nx"; ny: "cd.ny"; nz: "cd.nz"; oa: "cd.oa"; ob: "cd.ob"; oc: "cd.oc"; od: "cd.od"; oe: "cd.oe"; of: "cd.of"; og: "cd.og"; oh: "cd.oh"; oi: "cd.oi"; oj: "cd.oj"; ok: "cd.ok"; ol: "cd.ol"; om: "cd.om"; on: "cd.on"; oo: "cd.oo"; op: "cd.op"; oq: "cd.oq"; or: "cd.or"; os: "cd.os"; ot: "cd.ot"; ou: "cd.ou"; ov: "cd.ov"; ow: "cd.ow"; ox: "cd.ox"; oy: "cd.oy"; oz: "cd.oz"; pa: "cd.pa"; pb: "cd.pb"; pc: "cd.pc"; pd: "cd.pd"; pe: "cd.pe"; pf: "cd.pf"; pg: "cd.pg"; ph: "cd.ph"; pi: "cd.pi"; pj: "cd.pj"; pk: "cd.pk"; pl: "cd.pl"; pm: "cd.pm"; pn: "cd.pn"; po: "cd.po"; pp: "cd.pp"; pq: "cd.pq"; pr: "cd.pr"; ps: "cd.ps"; pt: "cd.pt"; pu: "cd.pu"; pv: "cd.pv"; pw: "cd.pw"; px: "cd.px"; py: "cd.py"; pz: "cd.pz"; qa: "cd.qa"; qb: "cd.qb"; qc: "cd.qc"; qd: "cd.qd"; qe: "cd.qe"; qf: "cd.qf"; qg: "cd.qg"; qh: "cd.qh"; qi: "cd.qi"; qj: "cd.qj"; qk: "cd.qk"; ql: "cd.ql"; qm: "cd.qm"; qn: "cd.qn"; qo: "cd.qo"; qp: "cd.qp"; qq: "cd.qq"; qr: "cd.qr"; qs: "cd.qs"; qt: "cd.qt"; qu: "cd.qu"; qv: "cd.qv"; qw: "cd.qw"; qx: "cd.qx"; qy: "cd.qy"; qz: "cd.qz"; ra: "cd.ra"; rb: "cd.rb"; rc: "cd.rc"; rd: "cd.rd"; re: "cd.re"; rf: "cd.rf"; rg: "cd.rg"; rh: "cd.rh"; ri: "cd.ri"; rj: "cd.rj"; rk: "cd.rk"; rl: "cd.rl"; rm: "cd.rm"; rn: "cd.rn"; ro: "cd.ro"; rp: "cd.rp"; rq: "cd.rq"; rr: "cd.rr"; rs: "cd.rs"; rt: "cd.rt"; ru: "cd.ru"; rv: "cd.rv"; rw: "cd.rw"; rx: "cd.rx"; ry: "cd.ry"; rz: "cd.rz"; sa: "cd.sa"; sb: "cd.sb"; sc: "cd.sc"; sd: "cd.sd"; se: "cd.se"; sf: "cd.sf"; sg: "cd.sg"; sh: "cd.sh"; si: "cd.si"; sj: "cd.sj"; sk: "cd.sk"; sl: "cd.sl"; sm: "cd.sm"; sn: "cd.sn"; so: "cd.so"; sp: "cd.sp"; sq: "cd.sq"; sr: "cd.sr"; ss: "cd.ss"; st: "cd.st"; su: "cd.su"; sv: "cd.sv"; sw: "cd.sw"; sx: "cd.sx"; sy: "cd.sy"; sz: "cd.sz"; ta: "cd.ta"; tb: "cd.tb"; tc: "cd.tc"; td: "cd.td"; te: "cd.te"; tf: "cd.tf"; tg: "cd.tg"; th: "cd.th"; ti: "cd.ti"; tj: "cd.tj"; tk: "cd.tk"; tl: "cd.tl"; tm: "cd.tm"; tn: "cd.tn"; to: "cd.to"; tp: "cd.tp"; tq: "cd.tq"; tr: "cd.tr"; ts: "cd.ts"; tt: "cd.tt"; tu: "cd.tu"; tv: "cd.tv"; tw: "cd.tw"; tx: "cd.tx"; ty: "cd.ty"; tz: "cd.tz"; ua: "cd.ua"; ub: "cd.ub"; uc: "cd.uc"; ud: "cd.ud"; ue: "cd.ue"; uf: "cd.uf"; ug: "cd.ug"; uh: "cd.uh"; ui: "cd.ui"; uj: "cd.uj"; uk: "cd.uk"; ul: "cd.ul"; um: "cd.um"; un: "cd.un"; uo: "cd.uo"; up: "cd.up"; uq: "cd.uq"; ur: "cd.ur"; us: "cd.us"; ut: "cd.ut"; uu: "cd.uu"; uv: "cd.uv"; uw: "cd.uw"; ux: "cd.ux"; uy: "cd.uy"; uz: "cd.uz"; va: "cd.va"; vb: "cd.vb"; vc: "cd.vc"; vd: "cd.vd"; ve: "cd.ve"; vf: "cd.vf"; vg: "cd.vg"; vh: "cd.vh"; vi: "cd.vi"; vj: "cd.vj"; vk: "cd.vk"; vl: "cd.vl"; vm: "cd.vm"; vn: "cd.vn"; vo: "cd.vo"; vp: "cd.vp"; vq: "cd.vq"; vr: "cd.vr"; vs: "cd.vs"; vt: "cd.vt"; vu: "cd.vu"; vv: "cd.vv"; vw: "cd.vw"; vx: "cd.vx"; vy: "cd.vy"; vz: "cd.vz"; wa: "cd.wa"; wb: "cd.wb"; wc: "cd.wc"; wd: "cd.wd"; we: "cd.we"; wf: "cd.wf"; wg: "cd.wg"; wh: "cd.wh"; wi: "cd.wi"; wj: "cd.wj"; wk: "cd.wk"; wl: "cd.wl"; wm: "cd.wm"; wn: "cd.wn"; wo: "cd.wo"; wp: "cd.wp"; wq: "cd.wq"; wr: "cd.wr"; ws: "cd.ws"; wt: "cd.wt"; wu: "cd.wu"; wv: "cd.wv"; ww: "cd.ww"; wx: "cd.wx"; wy: "cd.wy"; wz: "cd.wz"; xa: "cd.xa"; xb: "cd.xb"; xc: "cd.xc"; xd: "cd.xd"; xe: "cd.xe"; xf: "cd.xf"; xg: "cd.xg"; xh: "cd.xh"; xi: "cd.xi"; xj: "cd.xj"; xk: "cd.xk"; xl: "cd.xl"; xm: "cd.xm"; xn: "cd.xn"; xo: "cd.xo"; xp: "cd.xp"; xq: "cd.xq"; xr: "cd.xr"; xs: "cd.xs"; xt: "cd.xt"; xu: "cd.xu"; xv: "cd.xv"; xw: "cd.xw"; xx: "cd.xx"; xy: "cd.xy"; xz: "cd.xz"; ya: "cd.ya"; yb: "cd.yb"; yc: "cd.yc"; yd: "cd.yd"; ye: "cd.ye"; yf: "cd.yf"; yg: "cd.yg"; yh: "cd.yh"; yi: "cd.yi"; yj: "cd.yj"; yk: "cd.yk"; yl: "cd.yl"; ym: "cd.ym"; yn: "cd.yn"; yo: "cd.yo"; yp: "cd.yp"; yq: "cd.yq"; yr: "cd.yr"; ys: "cd.ys"; yt: "cd.yt"; yu: "cd.yu"; yv: "cd.yv"; yw: "cd.yw"; yx: "cd.yx"; yy: "cd.yy"; yz: "cd.yz"; za: "cd.za"; zb: "cd.zb"; zc: "cd.zc"; zd: "cd.zd"; ze: "cd.ze"; zf: "cd.zf"; zg: "cd.zg"; zh: "cd.zh"; zi: "cd.zi"; zj: "cd.zj"; zk: "cd.zk"; zl: "cd.zl"; zm: "cd.zm"; zn: "cd.zn"; zo: "cd.zo"; zp: "cd.zp"; zq: "cd.zq"; zr: "cd.zr"; zs: "cd.zs"; zt: "cd.zt"; zu: "cd.zu"; zv: "cd.zv"; zw: "cd.zw"; zx: "cd.zx"; zy: "cd.zy"; zz: "cd.zz"; }; ce: { aa: "ce.aa"; ab: "ce.ab"; ac: "ce.ac"; ad: "ce.ad"; ae: "ce.ae"; af: "ce.af"; ag: "ce.ag"; ah: "ce.ah"; ai: "ce.ai"; aj: "ce.aj"; ak: "ce.ak"; al: "ce.al"; am: "ce.am"; an: "ce.an"; ao: "ce.ao"; ap: "ce.ap"; aq: "ce.aq"; ar: "ce.ar"; as: "ce.as"; at: "ce.at"; au: "ce.au"; av: "ce.av"; aw: "ce.aw"; ax: "ce.ax"; ay: "ce.ay"; az: "ce.az"; ba: "ce.ba"; bb: "ce.bb"; bc: "ce.bc"; bd: "ce.bd"; be: "ce.be"; bf: "ce.bf"; bg: "ce.bg"; bh: "ce.bh"; bi: "ce.bi"; bj: "ce.bj"; bk: "ce.bk"; bl: "ce.bl"; bm: "ce.bm"; bn: "ce.bn"; bo: "ce.bo"; bp: "ce.bp"; bq: "ce.bq"; br: "ce.br"; bs: "ce.bs"; bt: "ce.bt"; bu: "ce.bu"; bv: "ce.bv"; bw: "ce.bw"; bx: "ce.bx"; by: "ce.by"; bz: "ce.bz"; ca: "ce.ca"; cb: "ce.cb"; cc: "ce.cc"; cd: "ce.cd"; ce: "ce.ce"; cf: "ce.cf"; cg: "ce.cg"; ch: "ce.ch"; ci: "ce.ci"; cj: "ce.cj"; ck: "ce.ck"; cl: "ce.cl"; cm: "ce.cm"; cn: "ce.cn"; co: "ce.co"; cp: "ce.cp"; cq: "ce.cq"; cr: "ce.cr"; cs: "ce.cs"; ct: "ce.ct"; cu: "ce.cu"; cv: "ce.cv"; cw: "ce.cw"; cx: "ce.cx"; cy: "ce.cy"; cz: "ce.cz"; da: "ce.da"; db: "ce.db"; dc: "ce.dc"; dd: "ce.dd"; de: "ce.de"; df: "ce.df"; dg: "ce.dg"; dh: "ce.dh"; di: "ce.di"; dj: "ce.dj"; dk: "ce.dk"; dl: "ce.dl"; dm: "ce.dm"; dn: "ce.dn"; do: "ce.do"; dp: "ce.dp"; dq: "ce.dq"; dr: "ce.dr"; ds: "ce.ds"; dt: "ce.dt"; du: "ce.du"; dv: "ce.dv"; dw: "ce.dw"; dx: "ce.dx"; dy: "ce.dy"; dz: "ce.dz"; ea: "ce.ea"; eb: "ce.eb"; ec: "ce.ec"; ed: "ce.ed"; ee: "ce.ee"; ef: "ce.ef"; eg: "ce.eg"; eh: "ce.eh"; ei: "ce.ei"; ej: "ce.ej"; ek: "ce.ek"; el: "ce.el"; em: "ce.em"; en: "ce.en"; eo: "ce.eo"; ep: "ce.ep"; eq: "ce.eq"; er: "ce.er"; es: "ce.es"; et: "ce.et"; eu: "ce.eu"; ev: "ce.ev"; ew: "ce.ew"; ex: "ce.ex"; ey: "ce.ey"; ez: "ce.ez"; fa: "ce.fa"; fb: "ce.fb"; fc: "ce.fc"; fd: "ce.fd"; fe: "ce.fe"; ff: "ce.ff"; fg: "ce.fg"; fh: "ce.fh"; fi: "ce.fi"; fj: "ce.fj"; fk: "ce.fk"; fl: "ce.fl"; fm: "ce.fm"; fn: "ce.fn"; fo: "ce.fo"; fp: "ce.fp"; fq: "ce.fq"; fr: "ce.fr"; fs: "ce.fs"; ft: "ce.ft"; fu: "ce.fu"; fv: "ce.fv"; fw: "ce.fw"; fx: "ce.fx"; fy: "ce.fy"; fz: "ce.fz"; ga: "ce.ga"; gb: "ce.gb"; gc: "ce.gc"; gd: "ce.gd"; ge: "ce.ge"; gf: "ce.gf"; gg: "ce.gg"; gh: "ce.gh"; gi: "ce.gi"; gj: "ce.gj"; gk: "ce.gk"; gl: "ce.gl"; gm: "ce.gm"; gn: "ce.gn"; go: "ce.go"; gp: "ce.gp"; gq: "ce.gq"; gr: "ce.gr"; gs: "ce.gs"; gt: "ce.gt"; gu: "ce.gu"; gv: "ce.gv"; gw: "ce.gw"; gx: "ce.gx"; gy: "ce.gy"; gz: "ce.gz"; ha: "ce.ha"; hb: "ce.hb"; hc: "ce.hc"; hd: "ce.hd"; he: "ce.he"; hf: "ce.hf"; hg: "ce.hg"; hh: "ce.hh"; hi: "ce.hi"; hj: "ce.hj"; hk: "ce.hk"; hl: "ce.hl"; hm: "ce.hm"; hn: "ce.hn"; ho: "ce.ho"; hp: "ce.hp"; hq: "ce.hq"; hr: "ce.hr"; hs: "ce.hs"; ht: "ce.ht"; hu: "ce.hu"; hv: "ce.hv"; hw: "ce.hw"; hx: "ce.hx"; hy: "ce.hy"; hz: "ce.hz"; ia: "ce.ia"; ib: "ce.ib"; ic: "ce.ic"; id: "ce.id"; ie: "ce.ie"; if: "ce.if"; ig: "ce.ig"; ih: "ce.ih"; ii: "ce.ii"; ij: "ce.ij"; ik: "ce.ik"; il: "ce.il"; im: "ce.im"; in: "ce.in"; io: "ce.io"; ip: "ce.ip"; iq: "ce.iq"; ir: "ce.ir"; is: "ce.is"; it: "ce.it"; iu: "ce.iu"; iv: "ce.iv"; iw: "ce.iw"; ix: "ce.ix"; iy: "ce.iy"; iz: "ce.iz"; ja: "ce.ja"; jb: "ce.jb"; jc: "ce.jc"; jd: "ce.jd"; je: "ce.je"; jf: "ce.jf"; jg: "ce.jg"; jh: "ce.jh"; ji: "ce.ji"; jj: "ce.jj"; jk: "ce.jk"; jl: "ce.jl"; jm: "ce.jm"; jn: "ce.jn"; jo: "ce.jo"; jp: "ce.jp"; jq: "ce.jq"; jr: "ce.jr"; js: "ce.js"; jt: "ce.jt"; ju: "ce.ju"; jv: "ce.jv"; jw: "ce.jw"; jx: "ce.jx"; jy: "ce.jy"; jz: "ce.jz"; ka: "ce.ka"; kb: "ce.kb"; kc: "ce.kc"; kd: "ce.kd"; ke: "ce.ke"; kf: "ce.kf"; kg: "ce.kg"; kh: "ce.kh"; ki: "ce.ki"; kj: "ce.kj"; kk: "ce.kk"; kl: "ce.kl"; km: "ce.km"; kn: "ce.kn"; ko: "ce.ko"; kp: "ce.kp"; kq: "ce.kq"; kr: "ce.kr"; ks: "ce.ks"; kt: "ce.kt"; ku: "ce.ku"; kv: "ce.kv"; kw: "ce.kw"; kx: "ce.kx"; ky: "ce.ky"; kz: "ce.kz"; la: "ce.la"; lb: "ce.lb"; lc: "ce.lc"; ld: "ce.ld"; le: "ce.le"; lf: "ce.lf"; lg: "ce.lg"; lh: "ce.lh"; li: "ce.li"; lj: "ce.lj"; lk: "ce.lk"; ll: "ce.ll"; lm: "ce.lm"; ln: "ce.ln"; lo: "ce.lo"; lp: "ce.lp"; lq: "ce.lq"; lr: "ce.lr"; ls: "ce.ls"; lt: "ce.lt"; lu: "ce.lu"; lv: "ce.lv"; lw: "ce.lw"; lx: "ce.lx"; ly: "ce.ly"; lz: "ce.lz"; ma: "ce.ma"; mb: "ce.mb"; mc: "ce.mc"; md: "ce.md"; me: "ce.me"; mf: "ce.mf"; mg: "ce.mg"; mh: "ce.mh"; mi: "ce.mi"; mj: "ce.mj"; mk: "ce.mk"; ml: "ce.ml"; mm: "ce.mm"; mn: "ce.mn"; mo: "ce.mo"; mp: "ce.mp"; mq: "ce.mq"; mr: "ce.mr"; ms: "ce.ms"; mt: "ce.mt"; mu: "ce.mu"; mv: "ce.mv"; mw: "ce.mw"; mx: "ce.mx"; my: "ce.my"; mz: "ce.mz"; na: "ce.na"; nb: "ce.nb"; nc: "ce.nc"; nd: "ce.nd"; ne: "ce.ne"; nf: "ce.nf"; ng: "ce.ng"; nh: "ce.nh"; ni: "ce.ni"; nj: "ce.nj"; nk: "ce.nk"; nl: "ce.nl"; nm: "ce.nm"; nn: "ce.nn"; no: "ce.no"; np: "ce.np"; nq: "ce.nq"; nr: "ce.nr"; ns: "ce.ns"; nt: "ce.nt"; nu: "ce.nu"; nv: "ce.nv"; nw: "ce.nw"; nx: "ce.nx"; ny: "ce.ny"; nz: "ce.nz"; oa: "ce.oa"; ob: "ce.ob"; oc: "ce.oc"; od: "ce.od"; oe: "ce.oe"; of: "ce.of"; og: "ce.og"; oh: "ce.oh"; oi: "ce.oi"; oj: "ce.oj"; ok: "ce.ok"; ol: "ce.ol"; om: "ce.om"; on: "ce.on"; oo: "ce.oo"; op: "ce.op"; oq: "ce.oq"; or: "ce.or"; os: "ce.os"; ot: "ce.ot"; ou: "ce.ou"; ov: "ce.ov"; ow: "ce.ow"; ox: "ce.ox"; oy: "ce.oy"; oz: "ce.oz"; pa: "ce.pa"; pb: "ce.pb"; pc: "ce.pc"; pd: "ce.pd"; pe: "ce.pe"; pf: "ce.pf"; pg: "ce.pg"; ph: "ce.ph"; pi: "ce.pi"; pj: "ce.pj"; pk: "ce.pk"; pl: "ce.pl"; pm: "ce.pm"; pn: "ce.pn"; po: "ce.po"; pp: "ce.pp"; pq: "ce.pq"; pr: "ce.pr"; ps: "ce.ps"; pt: "ce.pt"; pu: "ce.pu"; pv: "ce.pv"; pw: "ce.pw"; px: "ce.px"; py: "ce.py"; pz: "ce.pz"; qa: "ce.qa"; qb: "ce.qb"; qc: "ce.qc"; qd: "ce.qd"; qe: "ce.qe"; qf: "ce.qf"; qg: "ce.qg"; qh: "ce.qh"; qi: "ce.qi"; qj: "ce.qj"; qk: "ce.qk"; ql: "ce.ql"; qm: "ce.qm"; qn: "ce.qn"; qo: "ce.qo"; qp: "ce.qp"; qq: "ce.qq"; qr: "ce.qr"; qs: "ce.qs"; qt: "ce.qt"; qu: "ce.qu"; qv: "ce.qv"; qw: "ce.qw"; qx: "ce.qx"; qy: "ce.qy"; qz: "ce.qz"; ra: "ce.ra"; rb: "ce.rb"; rc: "ce.rc"; rd: "ce.rd"; re: "ce.re"; rf: "ce.rf"; rg: "ce.rg"; rh: "ce.rh"; ri: "ce.ri"; rj: "ce.rj"; rk: "ce.rk"; rl: "ce.rl"; rm: "ce.rm"; rn: "ce.rn"; ro: "ce.ro"; rp: "ce.rp"; rq: "ce.rq"; rr: "ce.rr"; rs: "ce.rs"; rt: "ce.rt"; ru: "ce.ru"; rv: "ce.rv"; rw: "ce.rw"; rx: "ce.rx"; ry: "ce.ry"; rz: "ce.rz"; sa: "ce.sa"; sb: "ce.sb"; sc: "ce.sc"; sd: "ce.sd"; se: "ce.se"; sf: "ce.sf"; sg: "ce.sg"; sh: "ce.sh"; si: "ce.si"; sj: "ce.sj"; sk: "ce.sk"; sl: "ce.sl"; sm: "ce.sm"; sn: "ce.sn"; so: "ce.so"; sp: "ce.sp"; sq: "ce.sq"; sr: "ce.sr"; ss: "ce.ss"; st: "ce.st"; su: "ce.su"; sv: "ce.sv"; sw: "ce.sw"; sx: "ce.sx"; sy: "ce.sy"; sz: "ce.sz"; ta: "ce.ta"; tb: "ce.tb"; tc: "ce.tc"; td: "ce.td"; te: "ce.te"; tf: "ce.tf"; tg: "ce.tg"; th: "ce.th"; ti: "ce.ti"; tj: "ce.tj"; tk: "ce.tk"; tl: "ce.tl"; tm: "ce.tm"; tn: "ce.tn"; to: "ce.to"; tp: "ce.tp"; tq: "ce.tq"; tr: "ce.tr"; ts: "ce.ts"; tt: "ce.tt"; tu: "ce.tu"; tv: "ce.tv"; tw: "ce.tw"; tx: "ce.tx"; ty: "ce.ty"; tz: "ce.tz"; ua: "ce.ua"; ub: "ce.ub"; uc: "ce.uc"; ud: "ce.ud"; ue: "ce.ue"; uf: "ce.uf"; ug: "ce.ug"; uh: "ce.uh"; ui: "ce.ui"; uj: "ce.uj"; uk: "ce.uk"; ul: "ce.ul"; um: "ce.um"; un: "ce.un"; uo: "ce.uo"; up: "ce.up"; uq: "ce.uq"; ur: "ce.ur"; us: "ce.us"; ut: "ce.ut"; uu: "ce.uu"; uv: "ce.uv"; uw: "ce.uw"; ux: "ce.ux"; uy: "ce.uy"; uz: "ce.uz"; va: "ce.va"; vb: "ce.vb"; vc: "ce.vc"; vd: "ce.vd"; ve: "ce.ve"; vf: "ce.vf"; vg: "ce.vg"; vh: "ce.vh"; vi: "ce.vi"; vj: "ce.vj"; vk: "ce.vk"; vl: "ce.vl"; vm: "ce.vm"; vn: "ce.vn"; vo: "ce.vo"; vp: "ce.vp"; vq: "ce.vq"; vr: "ce.vr"; vs: "ce.vs"; vt: "ce.vt"; vu: "ce.vu"; vv: "ce.vv"; vw: "ce.vw"; vx: "ce.vx"; vy: "ce.vy"; vz: "ce.vz"; wa: "ce.wa"; wb: "ce.wb"; wc: "ce.wc"; wd: "ce.wd"; we: "ce.we"; wf: "ce.wf"; wg: "ce.wg"; wh: "ce.wh"; wi: "ce.wi"; wj: "ce.wj"; wk: "ce.wk"; wl: "ce.wl"; wm: "ce.wm"; wn: "ce.wn"; wo: "ce.wo"; wp: "ce.wp"; wq: "ce.wq"; wr: "ce.wr"; ws: "ce.ws"; wt: "ce.wt"; wu: "ce.wu"; wv: "ce.wv"; ww: "ce.ww"; wx: "ce.wx"; wy: "ce.wy"; wz: "ce.wz"; xa: "ce.xa"; xb: "ce.xb"; xc: "ce.xc"; xd: "ce.xd"; xe: "ce.xe"; xf: "ce.xf"; xg: "ce.xg"; xh: "ce.xh"; xi: "ce.xi"; xj: "ce.xj"; xk: "ce.xk"; xl: "ce.xl"; xm: "ce.xm"; xn: "ce.xn"; xo: "ce.xo"; xp: "ce.xp"; xq: "ce.xq"; xr: "ce.xr"; xs: "ce.xs"; xt: "ce.xt"; xu: "ce.xu"; xv: "ce.xv"; xw: "ce.xw"; xx: "ce.xx"; xy: "ce.xy"; xz: "ce.xz"; ya: "ce.ya"; yb: "ce.yb"; yc: "ce.yc"; yd: "ce.yd"; ye: "ce.ye"; yf: "ce.yf"; yg: "ce.yg"; yh: "ce.yh"; yi: "ce.yi"; yj: "ce.yj"; yk: "ce.yk"; yl: "ce.yl"; ym: "ce.ym"; yn: "ce.yn"; yo: "ce.yo"; yp: "ce.yp"; yq: "ce.yq"; yr: "ce.yr"; ys: "ce.ys"; yt: "ce.yt"; yu: "ce.yu"; yv: "ce.yv"; yw: "ce.yw"; yx: "ce.yx"; yy: "ce.yy"; yz: "ce.yz"; za: "ce.za"; zb: "ce.zb"; zc: "ce.zc"; zd: "ce.zd"; ze: "ce.ze"; zf: "ce.zf"; zg: "ce.zg"; zh: "ce.zh"; zi: "ce.zi"; zj: "ce.zj"; zk: "ce.zk"; zl: "ce.zl"; zm: "ce.zm"; zn: "ce.zn"; zo: "ce.zo"; zp: "ce.zp"; zq: "ce.zq"; zr: "ce.zr"; zs: "ce.zs"; zt: "ce.zt"; zu: "ce.zu"; zv: "ce.zv"; zw: "ce.zw"; zx: "ce.zx"; zy: "ce.zy"; zz: "ce.zz"; }; cf: { aa: "cf.aa"; ab: "cf.ab"; ac: "cf.ac"; ad: "cf.ad"; ae: "cf.ae"; af: "cf.af"; ag: "cf.ag"; ah: "cf.ah"; ai: "cf.ai"; aj: "cf.aj"; ak: "cf.ak"; al: "cf.al"; am: "cf.am"; an: "cf.an"; ao: "cf.ao"; ap: "cf.ap"; aq: "cf.aq"; ar: "cf.ar"; as: "cf.as"; at: "cf.at"; au: "cf.au"; av: "cf.av"; aw: "cf.aw"; ax: "cf.ax"; ay: "cf.ay"; az: "cf.az"; ba: "cf.ba"; bb: "cf.bb"; bc: "cf.bc"; bd: "cf.bd"; be: "cf.be"; bf: "cf.bf"; bg: "cf.bg"; bh: "cf.bh"; bi: "cf.bi"; bj: "cf.bj"; bk: "cf.bk"; bl: "cf.bl"; bm: "cf.bm"; bn: "cf.bn"; bo: "cf.bo"; bp: "cf.bp"; bq: "cf.bq"; br: "cf.br"; bs: "cf.bs"; bt: "cf.bt"; bu: "cf.bu"; bv: "cf.bv"; bw: "cf.bw"; bx: "cf.bx"; by: "cf.by"; bz: "cf.bz"; ca: "cf.ca"; cb: "cf.cb"; cc: "cf.cc"; cd: "cf.cd"; ce: "cf.ce"; cf: "cf.cf"; cg: "cf.cg"; ch: "cf.ch"; ci: "cf.ci"; cj: "cf.cj"; ck: "cf.ck"; cl: "cf.cl"; cm: "cf.cm"; cn: "cf.cn"; co: "cf.co"; cp: "cf.cp"; cq: "cf.cq"; cr: "cf.cr"; cs: "cf.cs"; ct: "cf.ct"; cu: "cf.cu"; cv: "cf.cv"; cw: "cf.cw"; cx: "cf.cx"; cy: "cf.cy"; cz: "cf.cz"; da: "cf.da"; db: "cf.db"; dc: "cf.dc"; dd: "cf.dd"; de: "cf.de"; df: "cf.df"; dg: "cf.dg"; dh: "cf.dh"; di: "cf.di"; dj: "cf.dj"; dk: "cf.dk"; dl: "cf.dl"; dm: "cf.dm"; dn: "cf.dn"; do: "cf.do"; dp: "cf.dp"; dq: "cf.dq"; dr: "cf.dr"; ds: "cf.ds"; dt: "cf.dt"; du: "cf.du"; dv: "cf.dv"; dw: "cf.dw"; dx: "cf.dx"; dy: "cf.dy"; dz: "cf.dz"; ea: "cf.ea"; eb: "cf.eb"; ec: "cf.ec"; ed: "cf.ed"; ee: "cf.ee"; ef: "cf.ef"; eg: "cf.eg"; eh: "cf.eh"; ei: "cf.ei"; ej: "cf.ej"; ek: "cf.ek"; el: "cf.el"; em: "cf.em"; en: "cf.en"; eo: "cf.eo"; ep: "cf.ep"; eq: "cf.eq"; er: "cf.er"; es: "cf.es"; et: "cf.et"; eu: "cf.eu"; ev: "cf.ev"; ew: "cf.ew"; ex: "cf.ex"; ey: "cf.ey"; ez: "cf.ez"; fa: "cf.fa"; fb: "cf.fb"; fc: "cf.fc"; fd: "cf.fd"; fe: "cf.fe"; ff: "cf.ff"; fg: "cf.fg"; fh: "cf.fh"; fi: "cf.fi"; fj: "cf.fj"; fk: "cf.fk"; fl: "cf.fl"; fm: "cf.fm"; fn: "cf.fn"; fo: "cf.fo"; fp: "cf.fp"; fq: "cf.fq"; fr: "cf.fr"; fs: "cf.fs"; ft: "cf.ft"; fu: "cf.fu"; fv: "cf.fv"; fw: "cf.fw"; fx: "cf.fx"; fy: "cf.fy"; fz: "cf.fz"; ga: "cf.ga"; gb: "cf.gb"; gc: "cf.gc"; gd: "cf.gd"; ge: "cf.ge"; gf: "cf.gf"; gg: "cf.gg"; gh: "cf.gh"; gi: "cf.gi"; gj: "cf.gj"; gk: "cf.gk"; gl: "cf.gl"; gm: "cf.gm"; gn: "cf.gn"; go: "cf.go"; gp: "cf.gp"; gq: "cf.gq"; gr: "cf.gr"; gs: "cf.gs"; gt: "cf.gt"; gu: "cf.gu"; gv: "cf.gv"; gw: "cf.gw"; gx: "cf.gx"; gy: "cf.gy"; gz: "cf.gz"; ha: "cf.ha"; hb: "cf.hb"; hc: "cf.hc"; hd: "cf.hd"; he: "cf.he"; hf: "cf.hf"; hg: "cf.hg"; hh: "cf.hh"; hi: "cf.hi"; hj: "cf.hj"; hk: "cf.hk"; hl: "cf.hl"; hm: "cf.hm"; hn: "cf.hn"; ho: "cf.ho"; hp: "cf.hp"; hq: "cf.hq"; hr: "cf.hr"; hs: "cf.hs"; ht: "cf.ht"; hu: "cf.hu"; hv: "cf.hv"; hw: "cf.hw"; hx: "cf.hx"; hy: "cf.hy"; hz: "cf.hz"; ia: "cf.ia"; ib: "cf.ib"; ic: "cf.ic"; id: "cf.id"; ie: "cf.ie"; if: "cf.if"; ig: "cf.ig"; ih: "cf.ih"; ii: "cf.ii"; ij: "cf.ij"; ik: "cf.ik"; il: "cf.il"; im: "cf.im"; in: "cf.in"; io: "cf.io"; ip: "cf.ip"; iq: "cf.iq"; ir: "cf.ir"; is: "cf.is"; it: "cf.it"; iu: "cf.iu"; iv: "cf.iv"; iw: "cf.iw"; ix: "cf.ix"; iy: "cf.iy"; iz: "cf.iz"; ja: "cf.ja"; jb: "cf.jb"; jc: "cf.jc"; jd: "cf.jd"; je: "cf.je"; jf: "cf.jf"; jg: "cf.jg"; jh: "cf.jh"; ji: "cf.ji"; jj: "cf.jj"; jk: "cf.jk"; jl: "cf.jl"; jm: "cf.jm"; jn: "cf.jn"; jo: "cf.jo"; jp: "cf.jp"; jq: "cf.jq"; jr: "cf.jr"; js: "cf.js"; jt: "cf.jt"; ju: "cf.ju"; jv: "cf.jv"; jw: "cf.jw"; jx: "cf.jx"; jy: "cf.jy"; jz: "cf.jz"; ka: "cf.ka"; kb: "cf.kb"; kc: "cf.kc"; kd: "cf.kd"; ke: "cf.ke"; kf: "cf.kf"; kg: "cf.kg"; kh: "cf.kh"; ki: "cf.ki"; kj: "cf.kj"; kk: "cf.kk"; kl: "cf.kl"; km: "cf.km"; kn: "cf.kn"; ko: "cf.ko"; kp: "cf.kp"; kq: "cf.kq"; kr: "cf.kr"; ks: "cf.ks"; kt: "cf.kt"; ku: "cf.ku"; kv: "cf.kv"; kw: "cf.kw"; kx: "cf.kx"; ky: "cf.ky"; kz: "cf.kz"; la: "cf.la"; lb: "cf.lb"; lc: "cf.lc"; ld: "cf.ld"; le: "cf.le"; lf: "cf.lf"; lg: "cf.lg"; lh: "cf.lh"; li: "cf.li"; lj: "cf.lj"; lk: "cf.lk"; ll: "cf.ll"; lm: "cf.lm"; ln: "cf.ln"; lo: "cf.lo"; lp: "cf.lp"; lq: "cf.lq"; lr: "cf.lr"; ls: "cf.ls"; lt: "cf.lt"; lu: "cf.lu"; lv: "cf.lv"; lw: "cf.lw"; lx: "cf.lx"; ly: "cf.ly"; lz: "cf.lz"; ma: "cf.ma"; mb: "cf.mb"; mc: "cf.mc"; md: "cf.md"; me: "cf.me"; mf: "cf.mf"; mg: "cf.mg"; mh: "cf.mh"; mi: "cf.mi"; mj: "cf.mj"; mk: "cf.mk"; ml: "cf.ml"; mm: "cf.mm"; mn: "cf.mn"; mo: "cf.mo"; mp: "cf.mp"; mq: "cf.mq"; mr: "cf.mr"; ms: "cf.ms"; mt: "cf.mt"; mu: "cf.mu"; mv: "cf.mv"; mw: "cf.mw"; mx: "cf.mx"; my: "cf.my"; mz: "cf.mz"; na: "cf.na"; nb: "cf.nb"; nc: "cf.nc"; nd: "cf.nd"; ne: "cf.ne"; nf: "cf.nf"; ng: "cf.ng"; nh: "cf.nh"; ni: "cf.ni"; nj: "cf.nj"; nk: "cf.nk"; nl: "cf.nl"; nm: "cf.nm"; nn: "cf.nn"; no: "cf.no"; np: "cf.np"; nq: "cf.nq"; nr: "cf.nr"; ns: "cf.ns"; nt: "cf.nt"; nu: "cf.nu"; nv: "cf.nv"; nw: "cf.nw"; nx: "cf.nx"; ny: "cf.ny"; nz: "cf.nz"; oa: "cf.oa"; ob: "cf.ob"; oc: "cf.oc"; od: "cf.od"; oe: "cf.oe"; of: "cf.of"; og: "cf.og"; oh: "cf.oh"; oi: "cf.oi"; oj: "cf.oj"; ok: "cf.ok"; ol: "cf.ol"; om: "cf.om"; on: "cf.on"; oo: "cf.oo"; op: "cf.op"; oq: "cf.oq"; or: "cf.or"; os: "cf.os"; ot: "cf.ot"; ou: "cf.ou"; ov: "cf.ov"; ow: "cf.ow"; ox: "cf.ox"; oy: "cf.oy"; oz: "cf.oz"; pa: "cf.pa"; pb: "cf.pb"; pc: "cf.pc"; pd: "cf.pd"; pe: "cf.pe"; pf: "cf.pf"; pg: "cf.pg"; ph: "cf.ph"; pi: "cf.pi"; pj: "cf.pj"; pk: "cf.pk"; pl: "cf.pl"; pm: "cf.pm"; pn: "cf.pn"; po: "cf.po"; pp: "cf.pp"; pq: "cf.pq"; pr: "cf.pr"; ps: "cf.ps"; pt: "cf.pt"; pu: "cf.pu"; pv: "cf.pv"; pw: "cf.pw"; px: "cf.px"; py: "cf.py"; pz: "cf.pz"; qa: "cf.qa"; qb: "cf.qb"; qc: "cf.qc"; qd: "cf.qd"; qe: "cf.qe"; qf: "cf.qf"; qg: "cf.qg"; qh: "cf.qh"; qi: "cf.qi"; qj: "cf.qj"; qk: "cf.qk"; ql: "cf.ql"; qm: "cf.qm"; qn: "cf.qn"; qo: "cf.qo"; qp: "cf.qp"; qq: "cf.qq"; qr: "cf.qr"; qs: "cf.qs"; qt: "cf.qt"; qu: "cf.qu"; qv: "cf.qv"; qw: "cf.qw"; qx: "cf.qx"; qy: "cf.qy"; qz: "cf.qz"; ra: "cf.ra"; rb: "cf.rb"; rc: "cf.rc"; rd: "cf.rd"; re: "cf.re"; rf: "cf.rf"; rg: "cf.rg"; rh: "cf.rh"; ri: "cf.ri"; rj: "cf.rj"; rk: "cf.rk"; rl: "cf.rl"; rm: "cf.rm"; rn: "cf.rn"; ro: "cf.ro"; rp: "cf.rp"; rq: "cf.rq"; rr: "cf.rr"; rs: "cf.rs"; rt: "cf.rt"; ru: "cf.ru"; rv: "cf.rv"; rw: "cf.rw"; rx: "cf.rx"; ry: "cf.ry"; rz: "cf.rz"; sa: "cf.sa"; sb: "cf.sb"; sc: "cf.sc"; sd: "cf.sd"; se: "cf.se"; sf: "cf.sf"; sg: "cf.sg"; sh: "cf.sh"; si: "cf.si"; sj: "cf.sj"; sk: "cf.sk"; sl: "cf.sl"; sm: "cf.sm"; sn: "cf.sn"; so: "cf.so"; sp: "cf.sp"; sq: "cf.sq"; sr: "cf.sr"; ss: "cf.ss"; st: "cf.st"; su: "cf.su"; sv: "cf.sv"; sw: "cf.sw"; sx: "cf.sx"; sy: "cf.sy"; sz: "cf.sz"; ta: "cf.ta"; tb: "cf.tb"; tc: "cf.tc"; td: "cf.td"; te: "cf.te"; tf: "cf.tf"; tg: "cf.tg"; th: "cf.th"; ti: "cf.ti"; tj: "cf.tj"; tk: "cf.tk"; tl: "cf.tl"; tm: "cf.tm"; tn: "cf.tn"; to: "cf.to"; tp: "cf.tp"; tq: "cf.tq"; tr: "cf.tr"; ts: "cf.ts"; tt: "cf.tt"; tu: "cf.tu"; tv: "cf.tv"; tw: "cf.tw"; tx: "cf.tx"; ty: "cf.ty"; tz: "cf.tz"; ua: "cf.ua"; ub: "cf.ub"; uc: "cf.uc"; ud: "cf.ud"; ue: "cf.ue"; uf: "cf.uf"; ug: "cf.ug"; uh: "cf.uh"; ui: "cf.ui"; uj: "cf.uj"; uk: "cf.uk"; ul: "cf.ul"; um: "cf.um"; un: "cf.un"; uo: "cf.uo"; up: "cf.up"; uq: "cf.uq"; ur: "cf.ur"; us: "cf.us"; ut: "cf.ut"; uu: "cf.uu"; uv: "cf.uv"; uw: "cf.uw"; ux: "cf.ux"; uy: "cf.uy"; uz: "cf.uz"; va: "cf.va"; vb: "cf.vb"; vc: "cf.vc"; vd: "cf.vd"; ve: "cf.ve"; vf: "cf.vf"; vg: "cf.vg"; vh: "cf.vh"; vi: "cf.vi"; vj: "cf.vj"; vk: "cf.vk"; vl: "cf.vl"; vm: "cf.vm"; vn: "cf.vn"; vo: "cf.vo"; vp: "cf.vp"; vq: "cf.vq"; vr: "cf.vr"; vs: "cf.vs"; vt: "cf.vt"; vu: "cf.vu"; vv: "cf.vv"; vw: "cf.vw"; vx: "cf.vx"; vy: "cf.vy"; vz: "cf.vz"; wa: "cf.wa"; wb: "cf.wb"; wc: "cf.wc"; wd: "cf.wd"; we: "cf.we"; wf: "cf.wf"; wg: "cf.wg"; wh: "cf.wh"; wi: "cf.wi"; wj: "cf.wj"; wk: "cf.wk"; wl: "cf.wl"; wm: "cf.wm"; wn: "cf.wn"; wo: "cf.wo"; wp: "cf.wp"; wq: "cf.wq"; wr: "cf.wr"; ws: "cf.ws"; wt: "cf.wt"; wu: "cf.wu"; wv: "cf.wv"; ww: "cf.ww"; wx: "cf.wx"; wy: "cf.wy"; wz: "cf.wz"; xa: "cf.xa"; xb: "cf.xb"; xc: "cf.xc"; xd: "cf.xd"; xe: "cf.xe"; xf: "cf.xf"; xg: "cf.xg"; xh: "cf.xh"; xi: "cf.xi"; xj: "cf.xj"; xk: "cf.xk"; xl: "cf.xl"; xm: "cf.xm"; xn: "cf.xn"; xo: "cf.xo"; xp: "cf.xp"; xq: "cf.xq"; xr: "cf.xr"; xs: "cf.xs"; xt: "cf.xt"; xu: "cf.xu"; xv: "cf.xv"; xw: "cf.xw"; xx: "cf.xx"; xy: "cf.xy"; xz: "cf.xz"; ya: "cf.ya"; yb: "cf.yb"; yc: "cf.yc"; yd: "cf.yd"; ye: "cf.ye"; yf: "cf.yf"; yg: "cf.yg"; yh: "cf.yh"; yi: "cf.yi"; yj: "cf.yj"; yk: "cf.yk"; yl: "cf.yl"; ym: "cf.ym"; yn: "cf.yn"; yo: "cf.yo"; yp: "cf.yp"; yq: "cf.yq"; yr: "cf.yr"; ys: "cf.ys"; yt: "cf.yt"; yu: "cf.yu"; yv: "cf.yv"; yw: "cf.yw"; yx: "cf.yx"; yy: "cf.yy"; yz: "cf.yz"; za: "cf.za"; zb: "cf.zb"; zc: "cf.zc"; zd: "cf.zd"; ze: "cf.ze"; zf: "cf.zf"; zg: "cf.zg"; zh: "cf.zh"; zi: "cf.zi"; zj: "cf.zj"; zk: "cf.zk"; zl: "cf.zl"; zm: "cf.zm"; zn: "cf.zn"; zo: "cf.zo"; zp: "cf.zp"; zq: "cf.zq"; zr: "cf.zr"; zs: "cf.zs"; zt: "cf.zt"; zu: "cf.zu"; zv: "cf.zv"; zw: "cf.zw"; zx: "cf.zx"; zy: "cf.zy"; zz: "cf.zz"; }; cg: { aa: "cg.aa"; ab: "cg.ab"; ac: "cg.ac"; ad: "cg.ad"; ae: "cg.ae"; af: "cg.af"; ag: "cg.ag"; ah: "cg.ah"; ai: "cg.ai"; aj: "cg.aj"; ak: "cg.ak"; al: "cg.al"; am: "cg.am"; an: "cg.an"; ao: "cg.ao"; ap: "cg.ap"; aq: "cg.aq"; ar: "cg.ar"; as: "cg.as"; at: "cg.at"; au: "cg.au"; av: "cg.av"; aw: "cg.aw"; ax: "cg.ax"; ay: "cg.ay"; az: "cg.az"; ba: "cg.ba"; bb: "cg.bb"; bc: "cg.bc"; bd: "cg.bd"; be: "cg.be"; bf: "cg.bf"; bg: "cg.bg"; bh: "cg.bh"; bi: "cg.bi"; bj: "cg.bj"; bk: "cg.bk"; bl: "cg.bl"; bm: "cg.bm"; bn: "cg.bn"; bo: "cg.bo"; bp: "cg.bp"; bq: "cg.bq"; br: "cg.br"; bs: "cg.bs"; bt: "cg.bt"; bu: "cg.bu"; bv: "cg.bv"; bw: "cg.bw"; bx: "cg.bx"; by: "cg.by"; bz: "cg.bz"; ca: "cg.ca"; cb: "cg.cb"; cc: "cg.cc"; cd: "cg.cd"; ce: "cg.ce"; cf: "cg.cf"; cg: "cg.cg"; ch: "cg.ch"; ci: "cg.ci"; cj: "cg.cj"; ck: "cg.ck"; cl: "cg.cl"; cm: "cg.cm"; cn: "cg.cn"; co: "cg.co"; cp: "cg.cp"; cq: "cg.cq"; cr: "cg.cr"; cs: "cg.cs"; ct: "cg.ct"; cu: "cg.cu"; cv: "cg.cv"; cw: "cg.cw"; cx: "cg.cx"; cy: "cg.cy"; cz: "cg.cz"; da: "cg.da"; db: "cg.db"; dc: "cg.dc"; dd: "cg.dd"; de: "cg.de"; df: "cg.df"; dg: "cg.dg"; dh: "cg.dh"; di: "cg.di"; dj: "cg.dj"; dk: "cg.dk"; dl: "cg.dl"; dm: "cg.dm"; dn: "cg.dn"; do: "cg.do"; dp: "cg.dp"; dq: "cg.dq"; dr: "cg.dr"; ds: "cg.ds"; dt: "cg.dt"; du: "cg.du"; dv: "cg.dv"; dw: "cg.dw"; dx: "cg.dx"; dy: "cg.dy"; dz: "cg.dz"; ea: "cg.ea"; eb: "cg.eb"; ec: "cg.ec"; ed: "cg.ed"; ee: "cg.ee"; ef: "cg.ef"; eg: "cg.eg"; eh: "cg.eh"; ei: "cg.ei"; ej: "cg.ej"; ek: "cg.ek"; el: "cg.el"; em: "cg.em"; en: "cg.en"; eo: "cg.eo"; ep: "cg.ep"; eq: "cg.eq"; er: "cg.er"; es: "cg.es"; et: "cg.et"; eu: "cg.eu"; ev: "cg.ev"; ew: "cg.ew"; ex: "cg.ex"; ey: "cg.ey"; ez: "cg.ez"; fa: "cg.fa"; fb: "cg.fb"; fc: "cg.fc"; fd: "cg.fd"; fe: "cg.fe"; ff: "cg.ff"; fg: "cg.fg"; fh: "cg.fh"; fi: "cg.fi"; fj: "cg.fj"; fk: "cg.fk"; fl: "cg.fl"; fm: "cg.fm"; fn: "cg.fn"; fo: "cg.fo"; fp: "cg.fp"; fq: "cg.fq"; fr: "cg.fr"; fs: "cg.fs"; ft: "cg.ft"; fu: "cg.fu"; fv: "cg.fv"; fw: "cg.fw"; fx: "cg.fx"; fy: "cg.fy"; fz: "cg.fz"; ga: "cg.ga"; gb: "cg.gb"; gc: "cg.gc"; gd: "cg.gd"; ge: "cg.ge"; gf: "cg.gf"; gg: "cg.gg"; gh: "cg.gh"; gi: "cg.gi"; gj: "cg.gj"; gk: "cg.gk"; gl: "cg.gl"; gm: "cg.gm"; gn: "cg.gn"; go: "cg.go"; gp: "cg.gp"; gq: "cg.gq"; gr: "cg.gr"; gs: "cg.gs"; gt: "cg.gt"; gu: "cg.gu"; gv: "cg.gv"; gw: "cg.gw"; gx: "cg.gx"; gy: "cg.gy"; gz: "cg.gz"; ha: "cg.ha"; hb: "cg.hb"; hc: "cg.hc"; hd: "cg.hd"; he: "cg.he"; hf: "cg.hf"; hg: "cg.hg"; hh: "cg.hh"; hi: "cg.hi"; hj: "cg.hj"; hk: "cg.hk"; hl: "cg.hl"; hm: "cg.hm"; hn: "cg.hn"; ho: "cg.ho"; hp: "cg.hp"; hq: "cg.hq"; hr: "cg.hr"; hs: "cg.hs"; ht: "cg.ht"; hu: "cg.hu"; hv: "cg.hv"; hw: "cg.hw"; hx: "cg.hx"; hy: "cg.hy"; hz: "cg.hz"; ia: "cg.ia"; ib: "cg.ib"; ic: "cg.ic"; id: "cg.id"; ie: "cg.ie"; if: "cg.if"; ig: "cg.ig"; ih: "cg.ih"; ii: "cg.ii"; ij: "cg.ij"; ik: "cg.ik"; il: "cg.il"; im: "cg.im"; in: "cg.in"; io: "cg.io"; ip: "cg.ip"; iq: "cg.iq"; ir: "cg.ir"; is: "cg.is"; it: "cg.it"; iu: "cg.iu"; iv: "cg.iv"; iw: "cg.iw"; ix: "cg.ix"; iy: "cg.iy"; iz: "cg.iz"; ja: "cg.ja"; jb: "cg.jb"; jc: "cg.jc"; jd: "cg.jd"; je: "cg.je"; jf: "cg.jf"; jg: "cg.jg"; jh: "cg.jh"; ji: "cg.ji"; jj: "cg.jj"; jk: "cg.jk"; jl: "cg.jl"; jm: "cg.jm"; jn: "cg.jn"; jo: "cg.jo"; jp: "cg.jp"; jq: "cg.jq"; jr: "cg.jr"; js: "cg.js"; jt: "cg.jt"; ju: "cg.ju"; jv: "cg.jv"; jw: "cg.jw"; jx: "cg.jx"; jy: "cg.jy"; jz: "cg.jz"; ka: "cg.ka"; kb: "cg.kb"; kc: "cg.kc"; kd: "cg.kd"; ke: "cg.ke"; kf: "cg.kf"; kg: "cg.kg"; kh: "cg.kh"; ki: "cg.ki"; kj: "cg.kj"; kk: "cg.kk"; kl: "cg.kl"; km: "cg.km"; kn: "cg.kn"; ko: "cg.ko"; kp: "cg.kp"; kq: "cg.kq"; kr: "cg.kr"; ks: "cg.ks"; kt: "cg.kt"; ku: "cg.ku"; kv: "cg.kv"; kw: "cg.kw"; kx: "cg.kx"; ky: "cg.ky"; kz: "cg.kz"; la: "cg.la"; lb: "cg.lb"; lc: "cg.lc"; ld: "cg.ld"; le: "cg.le"; lf: "cg.lf"; lg: "cg.lg"; lh: "cg.lh"; li: "cg.li"; lj: "cg.lj"; lk: "cg.lk"; ll: "cg.ll"; lm: "cg.lm"; ln: "cg.ln"; lo: "cg.lo"; lp: "cg.lp"; lq: "cg.lq"; lr: "cg.lr"; ls: "cg.ls"; lt: "cg.lt"; lu: "cg.lu"; lv: "cg.lv"; lw: "cg.lw"; lx: "cg.lx"; ly: "cg.ly"; lz: "cg.lz"; ma: "cg.ma"; mb: "cg.mb"; mc: "cg.mc"; md: "cg.md"; me: "cg.me"; mf: "cg.mf"; mg: "cg.mg"; mh: "cg.mh"; mi: "cg.mi"; mj: "cg.mj"; mk: "cg.mk"; ml: "cg.ml"; mm: "cg.mm"; mn: "cg.mn"; mo: "cg.mo"; mp: "cg.mp"; mq: "cg.mq"; mr: "cg.mr"; ms: "cg.ms"; mt: "cg.mt"; mu: "cg.mu"; mv: "cg.mv"; mw: "cg.mw"; mx: "cg.mx"; my: "cg.my"; mz: "cg.mz"; na: "cg.na"; nb: "cg.nb"; nc: "cg.nc"; nd: "cg.nd"; ne: "cg.ne"; nf: "cg.nf"; ng: "cg.ng"; nh: "cg.nh"; ni: "cg.ni"; nj: "cg.nj"; nk: "cg.nk"; nl: "cg.nl"; nm: "cg.nm"; nn: "cg.nn"; no: "cg.no"; np: "cg.np"; nq: "cg.nq"; nr: "cg.nr"; ns: "cg.ns"; nt: "cg.nt"; nu: "cg.nu"; nv: "cg.nv"; nw: "cg.nw"; nx: "cg.nx"; ny: "cg.ny"; nz: "cg.nz"; oa: "cg.oa"; ob: "cg.ob"; oc: "cg.oc"; od: "cg.od"; oe: "cg.oe"; of: "cg.of"; og: "cg.og"; oh: "cg.oh"; oi: "cg.oi"; oj: "cg.oj"; ok: "cg.ok"; ol: "cg.ol"; om: "cg.om"; on: "cg.on"; oo: "cg.oo"; op: "cg.op"; oq: "cg.oq"; or: "cg.or"; os: "cg.os"; ot: "cg.ot"; ou: "cg.ou"; ov: "cg.ov"; ow: "cg.ow"; ox: "cg.ox"; oy: "cg.oy"; oz: "cg.oz"; pa: "cg.pa"; pb: "cg.pb"; pc: "cg.pc"; pd: "cg.pd"; pe: "cg.pe"; pf: "cg.pf"; pg: "cg.pg"; ph: "cg.ph"; pi: "cg.pi"; pj: "cg.pj"; pk: "cg.pk"; pl: "cg.pl"; pm: "cg.pm"; pn: "cg.pn"; po: "cg.po"; pp: "cg.pp"; pq: "cg.pq"; pr: "cg.pr"; ps: "cg.ps"; pt: "cg.pt"; pu: "cg.pu"; pv: "cg.pv"; pw: "cg.pw"; px: "cg.px"; py: "cg.py"; pz: "cg.pz"; qa: "cg.qa"; qb: "cg.qb"; qc: "cg.qc"; qd: "cg.qd"; qe: "cg.qe"; qf: "cg.qf"; qg: "cg.qg"; qh: "cg.qh"; qi: "cg.qi"; qj: "cg.qj"; qk: "cg.qk"; ql: "cg.ql"; qm: "cg.qm"; qn: "cg.qn"; qo: "cg.qo"; qp: "cg.qp"; qq: "cg.qq"; qr: "cg.qr"; qs: "cg.qs"; qt: "cg.qt"; qu: "cg.qu"; qv: "cg.qv"; qw: "cg.qw"; qx: "cg.qx"; qy: "cg.qy"; qz: "cg.qz"; ra: "cg.ra"; rb: "cg.rb"; rc: "cg.rc"; rd: "cg.rd"; re: "cg.re"; rf: "cg.rf"; rg: "cg.rg"; rh: "cg.rh"; ri: "cg.ri"; rj: "cg.rj"; rk: "cg.rk"; rl: "cg.rl"; rm: "cg.rm"; rn: "cg.rn"; ro: "cg.ro"; rp: "cg.rp"; rq: "cg.rq"; rr: "cg.rr"; rs: "cg.rs"; rt: "cg.rt"; ru: "cg.ru"; rv: "cg.rv"; rw: "cg.rw"; rx: "cg.rx"; ry: "cg.ry"; rz: "cg.rz"; sa: "cg.sa"; sb: "cg.sb"; sc: "cg.sc"; sd: "cg.sd"; se: "cg.se"; sf: "cg.sf"; sg: "cg.sg"; sh: "cg.sh"; si: "cg.si"; sj: "cg.sj"; sk: "cg.sk"; sl: "cg.sl"; sm: "cg.sm"; sn: "cg.sn"; so: "cg.so"; sp: "cg.sp"; sq: "cg.sq"; sr: "cg.sr"; ss: "cg.ss"; st: "cg.st"; su: "cg.su"; sv: "cg.sv"; sw: "cg.sw"; sx: "cg.sx"; sy: "cg.sy"; sz: "cg.sz"; ta: "cg.ta"; tb: "cg.tb"; tc: "cg.tc"; td: "cg.td"; te: "cg.te"; tf: "cg.tf"; tg: "cg.tg"; th: "cg.th"; ti: "cg.ti"; tj: "cg.tj"; tk: "cg.tk"; tl: "cg.tl"; tm: "cg.tm"; tn: "cg.tn"; to: "cg.to"; tp: "cg.tp"; tq: "cg.tq"; tr: "cg.tr"; ts: "cg.ts"; tt: "cg.tt"; tu: "cg.tu"; tv: "cg.tv"; tw: "cg.tw"; tx: "cg.tx"; ty: "cg.ty"; tz: "cg.tz"; ua: "cg.ua"; ub: "cg.ub"; uc: "cg.uc"; ud: "cg.ud"; ue: "cg.ue"; uf: "cg.uf"; ug: "cg.ug"; uh: "cg.uh"; ui: "cg.ui"; uj: "cg.uj"; uk: "cg.uk"; ul: "cg.ul"; um: "cg.um"; un: "cg.un"; uo: "cg.uo"; up: "cg.up"; uq: "cg.uq"; ur: "cg.ur"; us: "cg.us"; ut: "cg.ut"; uu: "cg.uu"; uv: "cg.uv"; uw: "cg.uw"; ux: "cg.ux"; uy: "cg.uy"; uz: "cg.uz"; va: "cg.va"; vb: "cg.vb"; vc: "cg.vc"; vd: "cg.vd"; ve: "cg.ve"; vf: "cg.vf"; vg: "cg.vg"; vh: "cg.vh"; vi: "cg.vi"; vj: "cg.vj"; vk: "cg.vk"; vl: "cg.vl"; vm: "cg.vm"; vn: "cg.vn"; vo: "cg.vo"; vp: "cg.vp"; vq: "cg.vq"; vr: "cg.vr"; vs: "cg.vs"; vt: "cg.vt"; vu: "cg.vu"; vv: "cg.vv"; vw: "cg.vw"; vx: "cg.vx"; vy: "cg.vy"; vz: "cg.vz"; wa: "cg.wa"; wb: "cg.wb"; wc: "cg.wc"; wd: "cg.wd"; we: "cg.we"; wf: "cg.wf"; wg: "cg.wg"; wh: "cg.wh"; wi: "cg.wi"; wj: "cg.wj"; wk: "cg.wk"; wl: "cg.wl"; wm: "cg.wm"; wn: "cg.wn"; wo: "cg.wo"; wp: "cg.wp"; wq: "cg.wq"; wr: "cg.wr"; ws: "cg.ws"; wt: "cg.wt"; wu: "cg.wu"; wv: "cg.wv"; ww: "cg.ww"; wx: "cg.wx"; wy: "cg.wy"; wz: "cg.wz"; xa: "cg.xa"; xb: "cg.xb"; xc: "cg.xc"; xd: "cg.xd"; xe: "cg.xe"; xf: "cg.xf"; xg: "cg.xg"; xh: "cg.xh"; xi: "cg.xi"; xj: "cg.xj"; xk: "cg.xk"; xl: "cg.xl"; xm: "cg.xm"; xn: "cg.xn"; xo: "cg.xo"; xp: "cg.xp"; xq: "cg.xq"; xr: "cg.xr"; xs: "cg.xs"; xt: "cg.xt"; xu: "cg.xu"; xv: "cg.xv"; xw: "cg.xw"; xx: "cg.xx"; xy: "cg.xy"; xz: "cg.xz"; ya: "cg.ya"; yb: "cg.yb"; yc: "cg.yc"; yd: "cg.yd"; ye: "cg.ye"; yf: "cg.yf"; yg: "cg.yg"; yh: "cg.yh"; yi: "cg.yi"; yj: "cg.yj"; yk: "cg.yk"; yl: "cg.yl"; ym: "cg.ym"; yn: "cg.yn"; yo: "cg.yo"; yp: "cg.yp"; yq: "cg.yq"; yr: "cg.yr"; ys: "cg.ys"; yt: "cg.yt"; yu: "cg.yu"; yv: "cg.yv"; yw: "cg.yw"; yx: "cg.yx"; yy: "cg.yy"; yz: "cg.yz"; za: "cg.za"; zb: "cg.zb"; zc: "cg.zc"; zd: "cg.zd"; ze: "cg.ze"; zf: "cg.zf"; zg: "cg.zg"; zh: "cg.zh"; zi: "cg.zi"; zj: "cg.zj"; zk: "cg.zk"; zl: "cg.zl"; zm: "cg.zm"; zn: "cg.zn"; zo: "cg.zo"; zp: "cg.zp"; zq: "cg.zq"; zr: "cg.zr"; zs: "cg.zs"; zt: "cg.zt"; zu: "cg.zu"; zv: "cg.zv"; zw: "cg.zw"; zx: "cg.zx"; zy: "cg.zy"; zz: "cg.zz"; }; ch: { aa: "ch.aa"; ab: "ch.ab"; ac: "ch.ac"; ad: "ch.ad"; ae: "ch.ae"; af: "ch.af"; ag: "ch.ag"; ah: "ch.ah"; ai: "ch.ai"; aj: "ch.aj"; ak: "ch.ak"; al: "ch.al"; am: "ch.am"; an: "ch.an"; ao: "ch.ao"; ap: "ch.ap"; aq: "ch.aq"; ar: "ch.ar"; as: "ch.as"; at: "ch.at"; au: "ch.au"; av: "ch.av"; aw: "ch.aw"; ax: "ch.ax"; ay: "ch.ay"; az: "ch.az"; ba: "ch.ba"; bb: "ch.bb"; bc: "ch.bc"; bd: "ch.bd"; be: "ch.be"; bf: "ch.bf"; bg: "ch.bg"; bh: "ch.bh"; bi: "ch.bi"; bj: "ch.bj"; bk: "ch.bk"; bl: "ch.bl"; bm: "ch.bm"; bn: "ch.bn"; bo: "ch.bo"; bp: "ch.bp"; bq: "ch.bq"; br: "ch.br"; bs: "ch.bs"; bt: "ch.bt"; bu: "ch.bu"; bv: "ch.bv"; bw: "ch.bw"; bx: "ch.bx"; by: "ch.by"; bz: "ch.bz"; ca: "ch.ca"; cb: "ch.cb"; cc: "ch.cc"; cd: "ch.cd"; ce: "ch.ce"; cf: "ch.cf"; cg: "ch.cg"; ch: "ch.ch"; ci: "ch.ci"; cj: "ch.cj"; ck: "ch.ck"; cl: "ch.cl"; cm: "ch.cm"; cn: "ch.cn"; co: "ch.co"; cp: "ch.cp"; cq: "ch.cq"; cr: "ch.cr"; cs: "ch.cs"; ct: "ch.ct"; cu: "ch.cu"; cv: "ch.cv"; cw: "ch.cw"; cx: "ch.cx"; cy: "ch.cy"; cz: "ch.cz"; da: "ch.da"; db: "ch.db"; dc: "ch.dc"; dd: "ch.dd"; de: "ch.de"; df: "ch.df"; dg: "ch.dg"; dh: "ch.dh"; di: "ch.di"; dj: "ch.dj"; dk: "ch.dk"; dl: "ch.dl"; dm: "ch.dm"; dn: "ch.dn"; do: "ch.do"; dp: "ch.dp"; dq: "ch.dq"; dr: "ch.dr"; ds: "ch.ds"; dt: "ch.dt"; du: "ch.du"; dv: "ch.dv"; dw: "ch.dw"; dx: "ch.dx"; dy: "ch.dy"; dz: "ch.dz"; ea: "ch.ea"; eb: "ch.eb"; ec: "ch.ec"; ed: "ch.ed"; ee: "ch.ee"; ef: "ch.ef"; eg: "ch.eg"; eh: "ch.eh"; ei: "ch.ei"; ej: "ch.ej"; ek: "ch.ek"; el: "ch.el"; em: "ch.em"; en: "ch.en"; eo: "ch.eo"; ep: "ch.ep"; eq: "ch.eq"; er: "ch.er"; es: "ch.es"; et: "ch.et"; eu: "ch.eu"; ev: "ch.ev"; ew: "ch.ew"; ex: "ch.ex"; ey: "ch.ey"; ez: "ch.ez"; fa: "ch.fa"; fb: "ch.fb"; fc: "ch.fc"; fd: "ch.fd"; fe: "ch.fe"; ff: "ch.ff"; fg: "ch.fg"; fh: "ch.fh"; fi: "ch.fi"; fj: "ch.fj"; fk: "ch.fk"; fl: "ch.fl"; fm: "ch.fm"; fn: "ch.fn"; fo: "ch.fo"; fp: "ch.fp"; fq: "ch.fq"; fr: "ch.fr"; fs: "ch.fs"; ft: "ch.ft"; fu: "ch.fu"; fv: "ch.fv"; fw: "ch.fw"; fx: "ch.fx"; fy: "ch.fy"; fz: "ch.fz"; ga: "ch.ga"; gb: "ch.gb"; gc: "ch.gc"; gd: "ch.gd"; ge: "ch.ge"; gf: "ch.gf"; gg: "ch.gg"; gh: "ch.gh"; gi: "ch.gi"; gj: "ch.gj"; gk: "ch.gk"; gl: "ch.gl"; gm: "ch.gm"; gn: "ch.gn"; go: "ch.go"; gp: "ch.gp"; gq: "ch.gq"; gr: "ch.gr"; gs: "ch.gs"; gt: "ch.gt"; gu: "ch.gu"; gv: "ch.gv"; gw: "ch.gw"; gx: "ch.gx"; gy: "ch.gy"; gz: "ch.gz"; ha: "ch.ha"; hb: "ch.hb"; hc: "ch.hc"; hd: "ch.hd"; he: "ch.he"; hf: "ch.hf"; hg: "ch.hg"; hh: "ch.hh"; hi: "ch.hi"; hj: "ch.hj"; hk: "ch.hk"; hl: "ch.hl"; hm: "ch.hm"; hn: "ch.hn"; ho: "ch.ho"; hp: "ch.hp"; hq: "ch.hq"; hr: "ch.hr"; hs: "ch.hs"; ht: "ch.ht"; hu: "ch.hu"; hv: "ch.hv"; hw: "ch.hw"; hx: "ch.hx"; hy: "ch.hy"; hz: "ch.hz"; ia: "ch.ia"; ib: "ch.ib"; ic: "ch.ic"; id: "ch.id"; ie: "ch.ie"; if: "ch.if"; ig: "ch.ig"; ih: "ch.ih"; ii: "ch.ii"; ij: "ch.ij"; ik: "ch.ik"; il: "ch.il"; im: "ch.im"; in: "ch.in"; io: "ch.io"; ip: "ch.ip"; iq: "ch.iq"; ir: "ch.ir"; is: "ch.is"; it: "ch.it"; iu: "ch.iu"; iv: "ch.iv"; iw: "ch.iw"; ix: "ch.ix"; iy: "ch.iy"; iz: "ch.iz"; ja: "ch.ja"; jb: "ch.jb"; jc: "ch.jc"; jd: "ch.jd"; je: "ch.je"; jf: "ch.jf"; jg: "ch.jg"; jh: "ch.jh"; ji: "ch.ji"; jj: "ch.jj"; jk: "ch.jk"; jl: "ch.jl"; jm: "ch.jm"; jn: "ch.jn"; jo: "ch.jo"; jp: "ch.jp"; jq: "ch.jq"; jr: "ch.jr"; js: "ch.js"; jt: "ch.jt"; ju: "ch.ju"; jv: "ch.jv"; jw: "ch.jw"; jx: "ch.jx"; jy: "ch.jy"; jz: "ch.jz"; ka: "ch.ka"; kb: "ch.kb"; kc: "ch.kc"; kd: "ch.kd"; ke: "ch.ke"; kf: "ch.kf"; kg: "ch.kg"; kh: "ch.kh"; ki: "ch.ki"; kj: "ch.kj"; kk: "ch.kk"; kl: "ch.kl"; km: "ch.km"; kn: "ch.kn"; ko: "ch.ko"; kp: "ch.kp"; kq: "ch.kq"; kr: "ch.kr"; ks: "ch.ks"; kt: "ch.kt"; ku: "ch.ku"; kv: "ch.kv"; kw: "ch.kw"; kx: "ch.kx"; ky: "ch.ky"; kz: "ch.kz"; la: "ch.la"; lb: "ch.lb"; lc: "ch.lc"; ld: "ch.ld"; le: "ch.le"; lf: "ch.lf"; lg: "ch.lg"; lh: "ch.lh"; li: "ch.li"; lj: "ch.lj"; lk: "ch.lk"; ll: "ch.ll"; lm: "ch.lm"; ln: "ch.ln"; lo: "ch.lo"; lp: "ch.lp"; lq: "ch.lq"; lr: "ch.lr"; ls: "ch.ls"; lt: "ch.lt"; lu: "ch.lu"; lv: "ch.lv"; lw: "ch.lw"; lx: "ch.lx"; ly: "ch.ly"; lz: "ch.lz"; ma: "ch.ma"; mb: "ch.mb"; mc: "ch.mc"; md: "ch.md"; me: "ch.me"; mf: "ch.mf"; mg: "ch.mg"; mh: "ch.mh"; mi: "ch.mi"; mj: "ch.mj"; mk: "ch.mk"; ml: "ch.ml"; mm: "ch.mm"; mn: "ch.mn"; mo: "ch.mo"; mp: "ch.mp"; mq: "ch.mq"; mr: "ch.mr"; ms: "ch.ms"; mt: "ch.mt"; mu: "ch.mu"; mv: "ch.mv"; mw: "ch.mw"; mx: "ch.mx"; my: "ch.my"; mz: "ch.mz"; na: "ch.na"; nb: "ch.nb"; nc: "ch.nc"; nd: "ch.nd"; ne: "ch.ne"; nf: "ch.nf"; ng: "ch.ng"; nh: "ch.nh"; ni: "ch.ni"; nj: "ch.nj"; nk: "ch.nk"; nl: "ch.nl"; nm: "ch.nm"; nn: "ch.nn"; no: "ch.no"; np: "ch.np"; nq: "ch.nq"; nr: "ch.nr"; ns: "ch.ns"; nt: "ch.nt"; nu: "ch.nu"; nv: "ch.nv"; nw: "ch.nw"; nx: "ch.nx"; ny: "ch.ny"; nz: "ch.nz"; oa: "ch.oa"; ob: "ch.ob"; oc: "ch.oc"; od: "ch.od"; oe: "ch.oe"; of: "ch.of"; og: "ch.og"; oh: "ch.oh"; oi: "ch.oi"; oj: "ch.oj"; ok: "ch.ok"; ol: "ch.ol"; om: "ch.om"; on: "ch.on"; oo: "ch.oo"; op: "ch.op"; oq: "ch.oq"; or: "ch.or"; os: "ch.os"; ot: "ch.ot"; ou: "ch.ou"; ov: "ch.ov"; ow: "ch.ow"; ox: "ch.ox"; oy: "ch.oy"; oz: "ch.oz"; pa: "ch.pa"; pb: "ch.pb"; pc: "ch.pc"; pd: "ch.pd"; pe: "ch.pe"; pf: "ch.pf"; pg: "ch.pg"; ph: "ch.ph"; pi: "ch.pi"; pj: "ch.pj"; pk: "ch.pk"; pl: "ch.pl"; pm: "ch.pm"; pn: "ch.pn"; po: "ch.po"; pp: "ch.pp"; pq: "ch.pq"; pr: "ch.pr"; ps: "ch.ps"; pt: "ch.pt"; pu: "ch.pu"; pv: "ch.pv"; pw: "ch.pw"; px: "ch.px"; py: "ch.py"; pz: "ch.pz"; qa: "ch.qa"; qb: "ch.qb"; qc: "ch.qc"; qd: "ch.qd"; qe: "ch.qe"; qf: "ch.qf"; qg: "ch.qg"; qh: "ch.qh"; qi: "ch.qi"; qj: "ch.qj"; qk: "ch.qk"; ql: "ch.ql"; qm: "ch.qm"; qn: "ch.qn"; qo: "ch.qo"; qp: "ch.qp"; qq: "ch.qq"; qr: "ch.qr"; qs: "ch.qs"; qt: "ch.qt"; qu: "ch.qu"; qv: "ch.qv"; qw: "ch.qw"; qx: "ch.qx"; qy: "ch.qy"; qz: "ch.qz"; ra: "ch.ra"; rb: "ch.rb"; rc: "ch.rc"; rd: "ch.rd"; re: "ch.re"; rf: "ch.rf"; rg: "ch.rg"; rh: "ch.rh"; ri: "ch.ri"; rj: "ch.rj"; rk: "ch.rk"; rl: "ch.rl"; rm: "ch.rm"; rn: "ch.rn"; ro: "ch.ro"; rp: "ch.rp"; rq: "ch.rq"; rr: "ch.rr"; rs: "ch.rs"; rt: "ch.rt"; ru: "ch.ru"; rv: "ch.rv"; rw: "ch.rw"; rx: "ch.rx"; ry: "ch.ry"; rz: "ch.rz"; sa: "ch.sa"; sb: "ch.sb"; sc: "ch.sc"; sd: "ch.sd"; se: "ch.se"; sf: "ch.sf"; sg: "ch.sg"; sh: "ch.sh"; si: "ch.si"; sj: "ch.sj"; sk: "ch.sk"; sl: "ch.sl"; sm: "ch.sm"; sn: "ch.sn"; so: "ch.so"; sp: "ch.sp"; sq: "ch.sq"; sr: "ch.sr"; ss: "ch.ss"; st: "ch.st"; su: "ch.su"; sv: "ch.sv"; sw: "ch.sw"; sx: "ch.sx"; sy: "ch.sy"; sz: "ch.sz"; ta: "ch.ta"; tb: "ch.tb"; tc: "ch.tc"; td: "ch.td"; te: "ch.te"; tf: "ch.tf"; tg: "ch.tg"; th: "ch.th"; ti: "ch.ti"; tj: "ch.tj"; tk: "ch.tk"; tl: "ch.tl"; tm: "ch.tm"; tn: "ch.tn"; to: "ch.to"; tp: "ch.tp"; tq: "ch.tq"; tr: "ch.tr"; ts: "ch.ts"; tt: "ch.tt"; tu: "ch.tu"; tv: "ch.tv"; tw: "ch.tw"; tx: "ch.tx"; ty: "ch.ty"; tz: "ch.tz"; ua: "ch.ua"; ub: "ch.ub"; uc: "ch.uc"; ud: "ch.ud"; ue: "ch.ue"; uf: "ch.uf"; ug: "ch.ug"; uh: "ch.uh"; ui: "ch.ui"; uj: "ch.uj"; uk: "ch.uk"; ul: "ch.ul"; um: "ch.um"; un: "ch.un"; uo: "ch.uo"; up: "ch.up"; uq: "ch.uq"; ur: "ch.ur"; us: "ch.us"; ut: "ch.ut"; uu: "ch.uu"; uv: "ch.uv"; uw: "ch.uw"; ux: "ch.ux"; uy: "ch.uy"; uz: "ch.uz"; va: "ch.va"; vb: "ch.vb"; vc: "ch.vc"; vd: "ch.vd"; ve: "ch.ve"; vf: "ch.vf"; vg: "ch.vg"; vh: "ch.vh"; vi: "ch.vi"; vj: "ch.vj"; vk: "ch.vk"; vl: "ch.vl"; vm: "ch.vm"; vn: "ch.vn"; vo: "ch.vo"; vp: "ch.vp"; vq: "ch.vq"; vr: "ch.vr"; vs: "ch.vs"; vt: "ch.vt"; vu: "ch.vu"; vv: "ch.vv"; vw: "ch.vw"; vx: "ch.vx"; vy: "ch.vy"; vz: "ch.vz"; wa: "ch.wa"; wb: "ch.wb"; wc: "ch.wc"; wd: "ch.wd"; we: "ch.we"; wf: "ch.wf"; wg: "ch.wg"; wh: "ch.wh"; wi: "ch.wi"; wj: "ch.wj"; wk: "ch.wk"; wl: "ch.wl"; wm: "ch.wm"; wn: "ch.wn"; wo: "ch.wo"; wp: "ch.wp"; wq: "ch.wq"; wr: "ch.wr"; ws: "ch.ws"; wt: "ch.wt"; wu: "ch.wu"; wv: "ch.wv"; ww: "ch.ww"; wx: "ch.wx"; wy: "ch.wy"; wz: "ch.wz"; xa: "ch.xa"; xb: "ch.xb"; xc: "ch.xc"; xd: "ch.xd"; xe: "ch.xe"; xf: "ch.xf"; xg: "ch.xg"; xh: "ch.xh"; xi: "ch.xi"; xj: "ch.xj"; xk: "ch.xk"; xl: "ch.xl"; xm: "ch.xm"; xn: "ch.xn"; xo: "ch.xo"; xp: "ch.xp"; xq: "ch.xq"; xr: "ch.xr"; xs: "ch.xs"; xt: "ch.xt"; xu: "ch.xu"; xv: "ch.xv"; xw: "ch.xw"; xx: "ch.xx"; xy: "ch.xy"; xz: "ch.xz"; ya: "ch.ya"; yb: "ch.yb"; yc: "ch.yc"; yd: "ch.yd"; ye: "ch.ye"; yf: "ch.yf"; yg: "ch.yg"; yh: "ch.yh"; yi: "ch.yi"; yj: "ch.yj"; yk: "ch.yk"; yl: "ch.yl"; ym: "ch.ym"; yn: "ch.yn"; yo: "ch.yo"; yp: "ch.yp"; yq: "ch.yq"; yr: "ch.yr"; ys: "ch.ys"; yt: "ch.yt"; yu: "ch.yu"; yv: "ch.yv"; yw: "ch.yw"; yx: "ch.yx"; yy: "ch.yy"; yz: "ch.yz"; za: "ch.za"; zb: "ch.zb"; zc: "ch.zc"; zd: "ch.zd"; ze: "ch.ze"; zf: "ch.zf"; zg: "ch.zg"; zh: "ch.zh"; zi: "ch.zi"; zj: "ch.zj"; zk: "ch.zk"; zl: "ch.zl"; zm: "ch.zm"; zn: "ch.zn"; zo: "ch.zo"; zp: "ch.zp"; zq: "ch.zq"; zr: "ch.zr"; zs: "ch.zs"; zt: "ch.zt"; zu: "ch.zu"; zv: "ch.zv"; zw: "ch.zw"; zx: "ch.zx"; zy: "ch.zy"; zz: "ch.zz"; }; ci: { aa: "ci.aa"; ab: "ci.ab"; ac: "ci.ac"; ad: "ci.ad"; ae: "ci.ae"; af: "ci.af"; ag: "ci.ag"; ah: "ci.ah"; ai: "ci.ai"; aj: "ci.aj"; ak: "ci.ak"; al: "ci.al"; am: "ci.am"; an: "ci.an"; ao: "ci.ao"; ap: "ci.ap"; aq: "ci.aq"; ar: "ci.ar"; as: "ci.as"; at: "ci.at"; au: "ci.au"; av: "ci.av"; aw: "ci.aw"; ax: "ci.ax"; ay: "ci.ay"; az: "ci.az"; ba: "ci.ba"; bb: "ci.bb"; bc: "ci.bc"; bd: "ci.bd"; be: "ci.be"; bf: "ci.bf"; bg: "ci.bg"; bh: "ci.bh"; bi: "ci.bi"; bj: "ci.bj"; bk: "ci.bk"; bl: "ci.bl"; bm: "ci.bm"; bn: "ci.bn"; bo: "ci.bo"; bp: "ci.bp"; bq: "ci.bq"; br: "ci.br"; bs: "ci.bs"; bt: "ci.bt"; bu: "ci.bu"; bv: "ci.bv"; bw: "ci.bw"; bx: "ci.bx"; by: "ci.by"; bz: "ci.bz"; ca: "ci.ca"; cb: "ci.cb"; cc: "ci.cc"; cd: "ci.cd"; ce: "ci.ce"; cf: "ci.cf"; cg: "ci.cg"; ch: "ci.ch"; ci: "ci.ci"; cj: "ci.cj"; ck: "ci.ck"; cl: "ci.cl"; cm: "ci.cm"; cn: "ci.cn"; co: "ci.co"; cp: "ci.cp"; cq: "ci.cq"; cr: "ci.cr"; cs: "ci.cs"; ct: "ci.ct"; cu: "ci.cu"; cv: "ci.cv"; cw: "ci.cw"; cx: "ci.cx"; cy: "ci.cy"; cz: "ci.cz"; da: "ci.da"; db: "ci.db"; dc: "ci.dc"; dd: "ci.dd"; de: "ci.de"; df: "ci.df"; dg: "ci.dg"; dh: "ci.dh"; di: "ci.di"; dj: "ci.dj"; dk: "ci.dk"; dl: "ci.dl"; dm: "ci.dm"; dn: "ci.dn"; do: "ci.do"; dp: "ci.dp"; dq: "ci.dq"; dr: "ci.dr"; ds: "ci.ds"; dt: "ci.dt"; du: "ci.du"; dv: "ci.dv"; dw: "ci.dw"; dx: "ci.dx"; dy: "ci.dy"; dz: "ci.dz"; ea: "ci.ea"; eb: "ci.eb"; ec: "ci.ec"; ed: "ci.ed"; ee: "ci.ee"; ef: "ci.ef"; eg: "ci.eg"; eh: "ci.eh"; ei: "ci.ei"; ej: "ci.ej"; ek: "ci.ek"; el: "ci.el"; em: "ci.em"; en: "ci.en"; eo: "ci.eo"; ep: "ci.ep"; eq: "ci.eq"; er: "ci.er"; es: "ci.es"; et: "ci.et"; eu: "ci.eu"; ev: "ci.ev"; ew: "ci.ew"; ex: "ci.ex"; ey: "ci.ey"; ez: "ci.ez"; fa: "ci.fa"; fb: "ci.fb"; fc: "ci.fc"; fd: "ci.fd"; fe: "ci.fe"; ff: "ci.ff"; fg: "ci.fg"; fh: "ci.fh"; fi: "ci.fi"; fj: "ci.fj"; fk: "ci.fk"; fl: "ci.fl"; fm: "ci.fm"; fn: "ci.fn"; fo: "ci.fo"; fp: "ci.fp"; fq: "ci.fq"; fr: "ci.fr"; fs: "ci.fs"; ft: "ci.ft"; fu: "ci.fu"; fv: "ci.fv"; fw: "ci.fw"; fx: "ci.fx"; fy: "ci.fy"; fz: "ci.fz"; ga: "ci.ga"; gb: "ci.gb"; gc: "ci.gc"; gd: "ci.gd"; ge: "ci.ge"; gf: "ci.gf"; gg: "ci.gg"; gh: "ci.gh"; gi: "ci.gi"; gj: "ci.gj"; gk: "ci.gk"; gl: "ci.gl"; gm: "ci.gm"; gn: "ci.gn"; go: "ci.go"; gp: "ci.gp"; gq: "ci.gq"; gr: "ci.gr"; gs: "ci.gs"; gt: "ci.gt"; gu: "ci.gu"; gv: "ci.gv"; gw: "ci.gw"; gx: "ci.gx"; gy: "ci.gy"; gz: "ci.gz"; ha: "ci.ha"; hb: "ci.hb"; hc: "ci.hc"; hd: "ci.hd"; he: "ci.he"; hf: "ci.hf"; hg: "ci.hg"; hh: "ci.hh"; hi: "ci.hi"; hj: "ci.hj"; hk: "ci.hk"; hl: "ci.hl"; hm: "ci.hm"; hn: "ci.hn"; ho: "ci.ho"; hp: "ci.hp"; hq: "ci.hq"; hr: "ci.hr"; hs: "ci.hs"; ht: "ci.ht"; hu: "ci.hu"; hv: "ci.hv"; hw: "ci.hw"; hx: "ci.hx"; hy: "ci.hy"; hz: "ci.hz"; ia: "ci.ia"; ib: "ci.ib"; ic: "ci.ic"; id: "ci.id"; ie: "ci.ie"; if: "ci.if"; ig: "ci.ig"; ih: "ci.ih"; ii: "ci.ii"; ij: "ci.ij"; ik: "ci.ik"; il: "ci.il"; im: "ci.im"; in: "ci.in"; io: "ci.io"; ip: "ci.ip"; iq: "ci.iq"; ir: "ci.ir"; is: "ci.is"; it: "ci.it"; iu: "ci.iu"; iv: "ci.iv"; iw: "ci.iw"; ix: "ci.ix"; iy: "ci.iy"; iz: "ci.iz"; ja: "ci.ja"; jb: "ci.jb"; jc: "ci.jc"; jd: "ci.jd"; je: "ci.je"; jf: "ci.jf"; jg: "ci.jg"; jh: "ci.jh"; ji: "ci.ji"; jj: "ci.jj"; jk: "ci.jk"; jl: "ci.jl"; jm: "ci.jm"; jn: "ci.jn"; jo: "ci.jo"; jp: "ci.jp"; jq: "ci.jq"; jr: "ci.jr"; js: "ci.js"; jt: "ci.jt"; ju: "ci.ju"; jv: "ci.jv"; jw: "ci.jw"; jx: "ci.jx"; jy: "ci.jy"; jz: "ci.jz"; ka: "ci.ka"; kb: "ci.kb"; kc: "ci.kc"; kd: "ci.kd"; ke: "ci.ke"; kf: "ci.kf"; kg: "ci.kg"; kh: "ci.kh"; ki: "ci.ki"; kj: "ci.kj"; kk: "ci.kk"; kl: "ci.kl"; km: "ci.km"; kn: "ci.kn"; ko: "ci.ko"; kp: "ci.kp"; kq: "ci.kq"; kr: "ci.kr"; ks: "ci.ks"; kt: "ci.kt"; ku: "ci.ku"; kv: "ci.kv"; kw: "ci.kw"; kx: "ci.kx"; ky: "ci.ky"; kz: "ci.kz"; la: "ci.la"; lb: "ci.lb"; lc: "ci.lc"; ld: "ci.ld"; le: "ci.le"; lf: "ci.lf"; lg: "ci.lg"; lh: "ci.lh"; li: "ci.li"; lj: "ci.lj"; lk: "ci.lk"; ll: "ci.ll"; lm: "ci.lm"; ln: "ci.ln"; lo: "ci.lo"; lp: "ci.lp"; lq: "ci.lq"; lr: "ci.lr"; ls: "ci.ls"; lt: "ci.lt"; lu: "ci.lu"; lv: "ci.lv"; lw: "ci.lw"; lx: "ci.lx"; ly: "ci.ly"; lz: "ci.lz"; ma: "ci.ma"; mb: "ci.mb"; mc: "ci.mc"; md: "ci.md"; me: "ci.me"; mf: "ci.mf"; mg: "ci.mg"; mh: "ci.mh"; mi: "ci.mi"; mj: "ci.mj"; mk: "ci.mk"; ml: "ci.ml"; mm: "ci.mm"; mn: "ci.mn"; mo: "ci.mo"; mp: "ci.mp"; mq: "ci.mq"; mr: "ci.mr"; ms: "ci.ms"; mt: "ci.mt"; mu: "ci.mu"; mv: "ci.mv"; mw: "ci.mw"; mx: "ci.mx"; my: "ci.my"; mz: "ci.mz"; na: "ci.na"; nb: "ci.nb"; nc: "ci.nc"; nd: "ci.nd"; ne: "ci.ne"; nf: "ci.nf"; ng: "ci.ng"; nh: "ci.nh"; ni: "ci.ni"; nj: "ci.nj"; nk: "ci.nk"; nl: "ci.nl"; nm: "ci.nm"; nn: "ci.nn"; no: "ci.no"; np: "ci.np"; nq: "ci.nq"; nr: "ci.nr"; ns: "ci.ns"; nt: "ci.nt"; nu: "ci.nu"; nv: "ci.nv"; nw: "ci.nw"; nx: "ci.nx"; ny: "ci.ny"; nz: "ci.nz"; oa: "ci.oa"; ob: "ci.ob"; oc: "ci.oc"; od: "ci.od"; oe: "ci.oe"; of: "ci.of"; og: "ci.og"; oh: "ci.oh"; oi: "ci.oi"; oj: "ci.oj"; ok: "ci.ok"; ol: "ci.ol"; om: "ci.om"; on: "ci.on"; oo: "ci.oo"; op: "ci.op"; oq: "ci.oq"; or: "ci.or"; os: "ci.os"; ot: "ci.ot"; ou: "ci.ou"; ov: "ci.ov"; ow: "ci.ow"; ox: "ci.ox"; oy: "ci.oy"; oz: "ci.oz"; pa: "ci.pa"; pb: "ci.pb"; pc: "ci.pc"; pd: "ci.pd"; pe: "ci.pe"; pf: "ci.pf"; pg: "ci.pg"; ph: "ci.ph"; pi: "ci.pi"; pj: "ci.pj"; pk: "ci.pk"; pl: "ci.pl"; pm: "ci.pm"; pn: "ci.pn"; po: "ci.po"; pp: "ci.pp"; pq: "ci.pq"; pr: "ci.pr"; ps: "ci.ps"; pt: "ci.pt"; pu: "ci.pu"; pv: "ci.pv"; pw: "ci.pw"; px: "ci.px"; py: "ci.py"; pz: "ci.pz"; qa: "ci.qa"; qb: "ci.qb"; qc: "ci.qc"; qd: "ci.qd"; qe: "ci.qe"; qf: "ci.qf"; qg: "ci.qg"; qh: "ci.qh"; qi: "ci.qi"; qj: "ci.qj"; qk: "ci.qk"; ql: "ci.ql"; qm: "ci.qm"; qn: "ci.qn"; qo: "ci.qo"; qp: "ci.qp"; qq: "ci.qq"; qr: "ci.qr"; qs: "ci.qs"; qt: "ci.qt"; qu: "ci.qu"; qv: "ci.qv"; qw: "ci.qw"; qx: "ci.qx"; qy: "ci.qy"; qz: "ci.qz"; ra: "ci.ra"; rb: "ci.rb"; rc: "ci.rc"; rd: "ci.rd"; re: "ci.re"; rf: "ci.rf"; rg: "ci.rg"; rh: "ci.rh"; ri: "ci.ri"; rj: "ci.rj"; rk: "ci.rk"; rl: "ci.rl"; rm: "ci.rm"; rn: "ci.rn"; ro: "ci.ro"; rp: "ci.rp"; rq: "ci.rq"; rr: "ci.rr"; rs: "ci.rs"; rt: "ci.rt"; ru: "ci.ru"; rv: "ci.rv"; rw: "ci.rw"; rx: "ci.rx"; ry: "ci.ry"; rz: "ci.rz"; sa: "ci.sa"; sb: "ci.sb"; sc: "ci.sc"; sd: "ci.sd"; se: "ci.se"; sf: "ci.sf"; sg: "ci.sg"; sh: "ci.sh"; si: "ci.si"; sj: "ci.sj"; sk: "ci.sk"; sl: "ci.sl"; sm: "ci.sm"; sn: "ci.sn"; so: "ci.so"; sp: "ci.sp"; sq: "ci.sq"; sr: "ci.sr"; ss: "ci.ss"; st: "ci.st"; su: "ci.su"; sv: "ci.sv"; sw: "ci.sw"; sx: "ci.sx"; sy: "ci.sy"; sz: "ci.sz"; ta: "ci.ta"; tb: "ci.tb"; tc: "ci.tc"; td: "ci.td"; te: "ci.te"; tf: "ci.tf"; tg: "ci.tg"; th: "ci.th"; ti: "ci.ti"; tj: "ci.tj"; tk: "ci.tk"; tl: "ci.tl"; tm: "ci.tm"; tn: "ci.tn"; to: "ci.to"; tp: "ci.tp"; tq: "ci.tq"; tr: "ci.tr"; ts: "ci.ts"; tt: "ci.tt"; tu: "ci.tu"; tv: "ci.tv"; tw: "ci.tw"; tx: "ci.tx"; ty: "ci.ty"; tz: "ci.tz"; ua: "ci.ua"; ub: "ci.ub"; uc: "ci.uc"; ud: "ci.ud"; ue: "ci.ue"; uf: "ci.uf"; ug: "ci.ug"; uh: "ci.uh"; ui: "ci.ui"; uj: "ci.uj"; uk: "ci.uk"; ul: "ci.ul"; um: "ci.um"; un: "ci.un"; uo: "ci.uo"; up: "ci.up"; uq: "ci.uq"; ur: "ci.ur"; us: "ci.us"; ut: "ci.ut"; uu: "ci.uu"; uv: "ci.uv"; uw: "ci.uw"; ux: "ci.ux"; uy: "ci.uy"; uz: "ci.uz"; va: "ci.va"; vb: "ci.vb"; vc: "ci.vc"; vd: "ci.vd"; ve: "ci.ve"; vf: "ci.vf"; vg: "ci.vg"; vh: "ci.vh"; vi: "ci.vi"; vj: "ci.vj"; vk: "ci.vk"; vl: "ci.vl"; vm: "ci.vm"; vn: "ci.vn"; vo: "ci.vo"; vp: "ci.vp"; vq: "ci.vq"; vr: "ci.vr"; vs: "ci.vs"; vt: "ci.vt"; vu: "ci.vu"; vv: "ci.vv"; vw: "ci.vw"; vx: "ci.vx"; vy: "ci.vy"; vz: "ci.vz"; wa: "ci.wa"; wb: "ci.wb"; wc: "ci.wc"; wd: "ci.wd"; we: "ci.we"; wf: "ci.wf"; wg: "ci.wg"; wh: "ci.wh"; wi: "ci.wi"; wj: "ci.wj"; wk: "ci.wk"; wl: "ci.wl"; wm: "ci.wm"; wn: "ci.wn"; wo: "ci.wo"; wp: "ci.wp"; wq: "ci.wq"; wr: "ci.wr"; ws: "ci.ws"; wt: "ci.wt"; wu: "ci.wu"; wv: "ci.wv"; ww: "ci.ww"; wx: "ci.wx"; wy: "ci.wy"; wz: "ci.wz"; xa: "ci.xa"; xb: "ci.xb"; xc: "ci.xc"; xd: "ci.xd"; xe: "ci.xe"; xf: "ci.xf"; xg: "ci.xg"; xh: "ci.xh"; xi: "ci.xi"; xj: "ci.xj"; xk: "ci.xk"; xl: "ci.xl"; xm: "ci.xm"; xn: "ci.xn"; xo: "ci.xo"; xp: "ci.xp"; xq: "ci.xq"; xr: "ci.xr"; xs: "ci.xs"; xt: "ci.xt"; xu: "ci.xu"; xv: "ci.xv"; xw: "ci.xw"; xx: "ci.xx"; xy: "ci.xy"; xz: "ci.xz"; ya: "ci.ya"; yb: "ci.yb"; yc: "ci.yc"; yd: "ci.yd"; ye: "ci.ye"; yf: "ci.yf"; yg: "ci.yg"; yh: "ci.yh"; yi: "ci.yi"; yj: "ci.yj"; yk: "ci.yk"; yl: "ci.yl"; ym: "ci.ym"; yn: "ci.yn"; yo: "ci.yo"; yp: "ci.yp"; yq: "ci.yq"; yr: "ci.yr"; ys: "ci.ys"; yt: "ci.yt"; yu: "ci.yu"; yv: "ci.yv"; yw: "ci.yw"; yx: "ci.yx"; yy: "ci.yy"; yz: "ci.yz"; za: "ci.za"; zb: "ci.zb"; zc: "ci.zc"; zd: "ci.zd"; ze: "ci.ze"; zf: "ci.zf"; zg: "ci.zg"; zh: "ci.zh"; zi: "ci.zi"; zj: "ci.zj"; zk: "ci.zk"; zl: "ci.zl"; zm: "ci.zm"; zn: "ci.zn"; zo: "ci.zo"; zp: "ci.zp"; zq: "ci.zq"; zr: "ci.zr"; zs: "ci.zs"; zt: "ci.zt"; zu: "ci.zu"; zv: "ci.zv"; zw: "ci.zw"; zx: "ci.zx"; zy: "ci.zy"; zz: "ci.zz"; }; cj: { aa: "cj.aa"; ab: "cj.ab"; ac: "cj.ac"; ad: "cj.ad"; ae: "cj.ae"; af: "cj.af"; ag: "cj.ag"; ah: "cj.ah"; ai: "cj.ai"; aj: "cj.aj"; ak: "cj.ak"; al: "cj.al"; am: "cj.am"; an: "cj.an"; ao: "cj.ao"; ap: "cj.ap"; aq: "cj.aq"; ar: "cj.ar"; as: "cj.as"; at: "cj.at"; au: "cj.au"; av: "cj.av"; aw: "cj.aw"; ax: "cj.ax"; ay: "cj.ay"; az: "cj.az"; ba: "cj.ba"; bb: "cj.bb"; bc: "cj.bc"; bd: "cj.bd"; be: "cj.be"; bf: "cj.bf"; bg: "cj.bg"; bh: "cj.bh"; bi: "cj.bi"; bj: "cj.bj"; bk: "cj.bk"; bl: "cj.bl"; bm: "cj.bm"; bn: "cj.bn"; bo: "cj.bo"; bp: "cj.bp"; bq: "cj.bq"; br: "cj.br"; bs: "cj.bs"; bt: "cj.bt"; bu: "cj.bu"; bv: "cj.bv"; bw: "cj.bw"; bx: "cj.bx"; by: "cj.by"; bz: "cj.bz"; ca: "cj.ca"; cb: "cj.cb"; cc: "cj.cc"; cd: "cj.cd"; ce: "cj.ce"; cf: "cj.cf"; cg: "cj.cg"; ch: "cj.ch"; ci: "cj.ci"; cj: "cj.cj"; ck: "cj.ck"; cl: "cj.cl"; cm: "cj.cm"; cn: "cj.cn"; co: "cj.co"; cp: "cj.cp"; cq: "cj.cq"; cr: "cj.cr"; cs: "cj.cs"; ct: "cj.ct"; cu: "cj.cu"; cv: "cj.cv"; cw: "cj.cw"; cx: "cj.cx"; cy: "cj.cy"; cz: "cj.cz"; da: "cj.da"; db: "cj.db"; dc: "cj.dc"; dd: "cj.dd"; de: "cj.de"; df: "cj.df"; dg: "cj.dg"; dh: "cj.dh"; di: "cj.di"; dj: "cj.dj"; dk: "cj.dk"; dl: "cj.dl"; dm: "cj.dm"; dn: "cj.dn"; do: "cj.do"; dp: "cj.dp"; dq: "cj.dq"; dr: "cj.dr"; ds: "cj.ds"; dt: "cj.dt"; du: "cj.du"; dv: "cj.dv"; dw: "cj.dw"; dx: "cj.dx"; dy: "cj.dy"; dz: "cj.dz"; ea: "cj.ea"; eb: "cj.eb"; ec: "cj.ec"; ed: "cj.ed"; ee: "cj.ee"; ef: "cj.ef"; eg: "cj.eg"; eh: "cj.eh"; ei: "cj.ei"; ej: "cj.ej"; ek: "cj.ek"; el: "cj.el"; em: "cj.em"; en: "cj.en"; eo: "cj.eo"; ep: "cj.ep"; eq: "cj.eq"; er: "cj.er"; es: "cj.es"; et: "cj.et"; eu: "cj.eu"; ev: "cj.ev"; ew: "cj.ew"; ex: "cj.ex"; ey: "cj.ey"; ez: "cj.ez"; fa: "cj.fa"; fb: "cj.fb"; fc: "cj.fc"; fd: "cj.fd"; fe: "cj.fe"; ff: "cj.ff"; fg: "cj.fg"; fh: "cj.fh"; fi: "cj.fi"; fj: "cj.fj"; fk: "cj.fk"; fl: "cj.fl"; fm: "cj.fm"; fn: "cj.fn"; fo: "cj.fo"; fp: "cj.fp"; fq: "cj.fq"; fr: "cj.fr"; fs: "cj.fs"; ft: "cj.ft"; fu: "cj.fu"; fv: "cj.fv"; fw: "cj.fw"; fx: "cj.fx"; fy: "cj.fy"; fz: "cj.fz"; ga: "cj.ga"; gb: "cj.gb"; gc: "cj.gc"; gd: "cj.gd"; ge: "cj.ge"; gf: "cj.gf"; gg: "cj.gg"; gh: "cj.gh"; gi: "cj.gi"; gj: "cj.gj"; gk: "cj.gk"; gl: "cj.gl"; gm: "cj.gm"; gn: "cj.gn"; go: "cj.go"; gp: "cj.gp"; gq: "cj.gq"; gr: "cj.gr"; gs: "cj.gs"; gt: "cj.gt"; gu: "cj.gu"; gv: "cj.gv"; gw: "cj.gw"; gx: "cj.gx"; gy: "cj.gy"; gz: "cj.gz"; ha: "cj.ha"; hb: "cj.hb"; hc: "cj.hc"; hd: "cj.hd"; he: "cj.he"; hf: "cj.hf"; hg: "cj.hg"; hh: "cj.hh"; hi: "cj.hi"; hj: "cj.hj"; hk: "cj.hk"; hl: "cj.hl"; hm: "cj.hm"; hn: "cj.hn"; ho: "cj.ho"; hp: "cj.hp"; hq: "cj.hq"; hr: "cj.hr"; hs: "cj.hs"; ht: "cj.ht"; hu: "cj.hu"; hv: "cj.hv"; hw: "cj.hw"; hx: "cj.hx"; hy: "cj.hy"; hz: "cj.hz"; ia: "cj.ia"; ib: "cj.ib"; ic: "cj.ic"; id: "cj.id"; ie: "cj.ie"; if: "cj.if"; ig: "cj.ig"; ih: "cj.ih"; ii: "cj.ii"; ij: "cj.ij"; ik: "cj.ik"; il: "cj.il"; im: "cj.im"; in: "cj.in"; io: "cj.io"; ip: "cj.ip"; iq: "cj.iq"; ir: "cj.ir"; is: "cj.is"; it: "cj.it"; iu: "cj.iu"; iv: "cj.iv"; iw: "cj.iw"; ix: "cj.ix"; iy: "cj.iy"; iz: "cj.iz"; ja: "cj.ja"; jb: "cj.jb"; jc: "cj.jc"; jd: "cj.jd"; je: "cj.je"; jf: "cj.jf"; jg: "cj.jg"; jh: "cj.jh"; ji: "cj.ji"; jj: "cj.jj"; jk: "cj.jk"; jl: "cj.jl"; jm: "cj.jm"; jn: "cj.jn"; jo: "cj.jo"; jp: "cj.jp"; jq: "cj.jq"; jr: "cj.jr"; js: "cj.js"; jt: "cj.jt"; ju: "cj.ju"; jv: "cj.jv"; jw: "cj.jw"; jx: "cj.jx"; jy: "cj.jy"; jz: "cj.jz"; ka: "cj.ka"; kb: "cj.kb"; kc: "cj.kc"; kd: "cj.kd"; ke: "cj.ke"; kf: "cj.kf"; kg: "cj.kg"; kh: "cj.kh"; ki: "cj.ki"; kj: "cj.kj"; kk: "cj.kk"; kl: "cj.kl"; km: "cj.km"; kn: "cj.kn"; ko: "cj.ko"; kp: "cj.kp"; kq: "cj.kq"; kr: "cj.kr"; ks: "cj.ks"; kt: "cj.kt"; ku: "cj.ku"; kv: "cj.kv"; kw: "cj.kw"; kx: "cj.kx"; ky: "cj.ky"; kz: "cj.kz"; la: "cj.la"; lb: "cj.lb"; lc: "cj.lc"; ld: "cj.ld"; le: "cj.le"; lf: "cj.lf"; lg: "cj.lg"; lh: "cj.lh"; li: "cj.li"; lj: "cj.lj"; lk: "cj.lk"; ll: "cj.ll"; lm: "cj.lm"; ln: "cj.ln"; lo: "cj.lo"; lp: "cj.lp"; lq: "cj.lq"; lr: "cj.lr"; ls: "cj.ls"; lt: "cj.lt"; lu: "cj.lu"; lv: "cj.lv"; lw: "cj.lw"; lx: "cj.lx"; ly: "cj.ly"; lz: "cj.lz"; ma: "cj.ma"; mb: "cj.mb"; mc: "cj.mc"; md: "cj.md"; me: "cj.me"; mf: "cj.mf"; mg: "cj.mg"; mh: "cj.mh"; mi: "cj.mi"; mj: "cj.mj"; mk: "cj.mk"; ml: "cj.ml"; mm: "cj.mm"; mn: "cj.mn"; mo: "cj.mo"; mp: "cj.mp"; mq: "cj.mq"; mr: "cj.mr"; ms: "cj.ms"; mt: "cj.mt"; mu: "cj.mu"; mv: "cj.mv"; mw: "cj.mw"; mx: "cj.mx"; my: "cj.my"; mz: "cj.mz"; na: "cj.na"; nb: "cj.nb"; nc: "cj.nc"; nd: "cj.nd"; ne: "cj.ne"; nf: "cj.nf"; ng: "cj.ng"; nh: "cj.nh"; ni: "cj.ni"; nj: "cj.nj"; nk: "cj.nk"; nl: "cj.nl"; nm: "cj.nm"; nn: "cj.nn"; no: "cj.no"; np: "cj.np"; nq: "cj.nq"; nr: "cj.nr"; ns: "cj.ns"; nt: "cj.nt"; nu: "cj.nu"; nv: "cj.nv"; nw: "cj.nw"; nx: "cj.nx"; ny: "cj.ny"; nz: "cj.nz"; oa: "cj.oa"; ob: "cj.ob"; oc: "cj.oc"; od: "cj.od"; oe: "cj.oe"; of: "cj.of"; og: "cj.og"; oh: "cj.oh"; oi: "cj.oi"; oj: "cj.oj"; ok: "cj.ok"; ol: "cj.ol"; om: "cj.om"; on: "cj.on"; oo: "cj.oo"; op: "cj.op"; oq: "cj.oq"; or: "cj.or"; os: "cj.os"; ot: "cj.ot"; ou: "cj.ou"; ov: "cj.ov"; ow: "cj.ow"; ox: "cj.ox"; oy: "cj.oy"; oz: "cj.oz"; pa: "cj.pa"; pb: "cj.pb"; pc: "cj.pc"; pd: "cj.pd"; pe: "cj.pe"; pf: "cj.pf"; pg: "cj.pg"; ph: "cj.ph"; pi: "cj.pi"; pj: "cj.pj"; pk: "cj.pk"; pl: "cj.pl"; pm: "cj.pm"; pn: "cj.pn"; po: "cj.po"; pp: "cj.pp"; pq: "cj.pq"; pr: "cj.pr"; ps: "cj.ps"; pt: "cj.pt"; pu: "cj.pu"; pv: "cj.pv"; pw: "cj.pw"; px: "cj.px"; py: "cj.py"; pz: "cj.pz"; qa: "cj.qa"; qb: "cj.qb"; qc: "cj.qc"; qd: "cj.qd"; qe: "cj.qe"; qf: "cj.qf"; qg: "cj.qg"; qh: "cj.qh"; qi: "cj.qi"; qj: "cj.qj"; qk: "cj.qk"; ql: "cj.ql"; qm: "cj.qm"; qn: "cj.qn"; qo: "cj.qo"; qp: "cj.qp"; qq: "cj.qq"; qr: "cj.qr"; qs: "cj.qs"; qt: "cj.qt"; qu: "cj.qu"; qv: "cj.qv"; qw: "cj.qw"; qx: "cj.qx"; qy: "cj.qy"; qz: "cj.qz"; ra: "cj.ra"; rb: "cj.rb"; rc: "cj.rc"; rd: "cj.rd"; re: "cj.re"; rf: "cj.rf"; rg: "cj.rg"; rh: "cj.rh"; ri: "cj.ri"; rj: "cj.rj"; rk: "cj.rk"; rl: "cj.rl"; rm: "cj.rm"; rn: "cj.rn"; ro: "cj.ro"; rp: "cj.rp"; rq: "cj.rq"; rr: "cj.rr"; rs: "cj.rs"; rt: "cj.rt"; ru: "cj.ru"; rv: "cj.rv"; rw: "cj.rw"; rx: "cj.rx"; ry: "cj.ry"; rz: "cj.rz"; sa: "cj.sa"; sb: "cj.sb"; sc: "cj.sc"; sd: "cj.sd"; se: "cj.se"; sf: "cj.sf"; sg: "cj.sg"; sh: "cj.sh"; si: "cj.si"; sj: "cj.sj"; sk: "cj.sk"; sl: "cj.sl"; sm: "cj.sm"; sn: "cj.sn"; so: "cj.so"; sp: "cj.sp"; sq: "cj.sq"; sr: "cj.sr"; ss: "cj.ss"; st: "cj.st"; su: "cj.su"; sv: "cj.sv"; sw: "cj.sw"; sx: "cj.sx"; sy: "cj.sy"; sz: "cj.sz"; ta: "cj.ta"; tb: "cj.tb"; tc: "cj.tc"; td: "cj.td"; te: "cj.te"; tf: "cj.tf"; tg: "cj.tg"; th: "cj.th"; ti: "cj.ti"; tj: "cj.tj"; tk: "cj.tk"; tl: "cj.tl"; tm: "cj.tm"; tn: "cj.tn"; to: "cj.to"; tp: "cj.tp"; tq: "cj.tq"; tr: "cj.tr"; ts: "cj.ts"; tt: "cj.tt"; tu: "cj.tu"; tv: "cj.tv"; tw: "cj.tw"; tx: "cj.tx"; ty: "cj.ty"; tz: "cj.tz"; ua: "cj.ua"; ub: "cj.ub"; uc: "cj.uc"; ud: "cj.ud"; ue: "cj.ue"; uf: "cj.uf"; ug: "cj.ug"; uh: "cj.uh"; ui: "cj.ui"; uj: "cj.uj"; uk: "cj.uk"; ul: "cj.ul"; um: "cj.um"; un: "cj.un"; uo: "cj.uo"; up: "cj.up"; uq: "cj.uq"; ur: "cj.ur"; us: "cj.us"; ut: "cj.ut"; uu: "cj.uu"; uv: "cj.uv"; uw: "cj.uw"; ux: "cj.ux"; uy: "cj.uy"; uz: "cj.uz"; va: "cj.va"; vb: "cj.vb"; vc: "cj.vc"; vd: "cj.vd"; ve: "cj.ve"; vf: "cj.vf"; vg: "cj.vg"; vh: "cj.vh"; vi: "cj.vi"; vj: "cj.vj"; vk: "cj.vk"; vl: "cj.vl"; vm: "cj.vm"; vn: "cj.vn"; vo: "cj.vo"; vp: "cj.vp"; vq: "cj.vq"; vr: "cj.vr"; vs: "cj.vs"; vt: "cj.vt"; vu: "cj.vu"; vv: "cj.vv"; vw: "cj.vw"; vx: "cj.vx"; vy: "cj.vy"; vz: "cj.vz"; wa: "cj.wa"; wb: "cj.wb"; wc: "cj.wc"; wd: "cj.wd"; we: "cj.we"; wf: "cj.wf"; wg: "cj.wg"; wh: "cj.wh"; wi: "cj.wi"; wj: "cj.wj"; wk: "cj.wk"; wl: "cj.wl"; wm: "cj.wm"; wn: "cj.wn"; wo: "cj.wo"; wp: "cj.wp"; wq: "cj.wq"; wr: "cj.wr"; ws: "cj.ws"; wt: "cj.wt"; wu: "cj.wu"; wv: "cj.wv"; ww: "cj.ww"; wx: "cj.wx"; wy: "cj.wy"; wz: "cj.wz"; xa: "cj.xa"; xb: "cj.xb"; xc: "cj.xc"; xd: "cj.xd"; xe: "cj.xe"; xf: "cj.xf"; xg: "cj.xg"; xh: "cj.xh"; xi: "cj.xi"; xj: "cj.xj"; xk: "cj.xk"; xl: "cj.xl"; xm: "cj.xm"; xn: "cj.xn"; xo: "cj.xo"; xp: "cj.xp"; xq: "cj.xq"; xr: "cj.xr"; xs: "cj.xs"; xt: "cj.xt"; xu: "cj.xu"; xv: "cj.xv"; xw: "cj.xw"; xx: "cj.xx"; xy: "cj.xy"; xz: "cj.xz"; ya: "cj.ya"; yb: "cj.yb"; yc: "cj.yc"; yd: "cj.yd"; ye: "cj.ye"; yf: "cj.yf"; yg: "cj.yg"; yh: "cj.yh"; yi: "cj.yi"; yj: "cj.yj"; yk: "cj.yk"; yl: "cj.yl"; ym: "cj.ym"; yn: "cj.yn"; yo: "cj.yo"; yp: "cj.yp"; yq: "cj.yq"; yr: "cj.yr"; ys: "cj.ys"; yt: "cj.yt"; yu: "cj.yu"; yv: "cj.yv"; yw: "cj.yw"; yx: "cj.yx"; yy: "cj.yy"; yz: "cj.yz"; za: "cj.za"; zb: "cj.zb"; zc: "cj.zc"; zd: "cj.zd"; ze: "cj.ze"; zf: "cj.zf"; zg: "cj.zg"; zh: "cj.zh"; zi: "cj.zi"; zj: "cj.zj"; zk: "cj.zk"; zl: "cj.zl"; zm: "cj.zm"; zn: "cj.zn"; zo: "cj.zo"; zp: "cj.zp"; zq: "cj.zq"; zr: "cj.zr"; zs: "cj.zs"; zt: "cj.zt"; zu: "cj.zu"; zv: "cj.zv"; zw: "cj.zw"; zx: "cj.zx"; zy: "cj.zy"; zz: "cj.zz"; }; ck: { aa: "ck.aa"; ab: "ck.ab"; ac: "ck.ac"; ad: "ck.ad"; ae: "ck.ae"; af: "ck.af"; ag: "ck.ag"; ah: "ck.ah"; ai: "ck.ai"; aj: "ck.aj"; ak: "ck.ak"; al: "ck.al"; am: "ck.am"; an: "ck.an"; ao: "ck.ao"; ap: "ck.ap"; aq: "ck.aq"; ar: "ck.ar"; as: "ck.as"; at: "ck.at"; au: "ck.au"; av: "ck.av"; aw: "ck.aw"; ax: "ck.ax"; ay: "ck.ay"; az: "ck.az"; ba: "ck.ba"; bb: "ck.bb"; bc: "ck.bc"; bd: "ck.bd"; be: "ck.be"; bf: "ck.bf"; bg: "ck.bg"; bh: "ck.bh"; bi: "ck.bi"; bj: "ck.bj"; bk: "ck.bk"; bl: "ck.bl"; bm: "ck.bm"; bn: "ck.bn"; bo: "ck.bo"; bp: "ck.bp"; bq: "ck.bq"; br: "ck.br"; bs: "ck.bs"; bt: "ck.bt"; bu: "ck.bu"; bv: "ck.bv"; bw: "ck.bw"; bx: "ck.bx"; by: "ck.by"; bz: "ck.bz"; ca: "ck.ca"; cb: "ck.cb"; cc: "ck.cc"; cd: "ck.cd"; ce: "ck.ce"; cf: "ck.cf"; cg: "ck.cg"; ch: "ck.ch"; ci: "ck.ci"; cj: "ck.cj"; ck: "ck.ck"; cl: "ck.cl"; cm: "ck.cm"; cn: "ck.cn"; co: "ck.co"; cp: "ck.cp"; cq: "ck.cq"; cr: "ck.cr"; cs: "ck.cs"; ct: "ck.ct"; cu: "ck.cu"; cv: "ck.cv"; cw: "ck.cw"; cx: "ck.cx"; cy: "ck.cy"; cz: "ck.cz"; da: "ck.da"; db: "ck.db"; dc: "ck.dc"; dd: "ck.dd"; de: "ck.de"; df: "ck.df"; dg: "ck.dg"; dh: "ck.dh"; di: "ck.di"; dj: "ck.dj"; dk: "ck.dk"; dl: "ck.dl"; dm: "ck.dm"; dn: "ck.dn"; do: "ck.do"; dp: "ck.dp"; dq: "ck.dq"; dr: "ck.dr"; ds: "ck.ds"; dt: "ck.dt"; du: "ck.du"; dv: "ck.dv"; dw: "ck.dw"; dx: "ck.dx"; dy: "ck.dy"; dz: "ck.dz"; ea: "ck.ea"; eb: "ck.eb"; ec: "ck.ec"; ed: "ck.ed"; ee: "ck.ee"; ef: "ck.ef"; eg: "ck.eg"; eh: "ck.eh"; ei: "ck.ei"; ej: "ck.ej"; ek: "ck.ek"; el: "ck.el"; em: "ck.em"; en: "ck.en"; eo: "ck.eo"; ep: "ck.ep"; eq: "ck.eq"; er: "ck.er"; es: "ck.es"; et: "ck.et"; eu: "ck.eu"; ev: "ck.ev"; ew: "ck.ew"; ex: "ck.ex"; ey: "ck.ey"; ez: "ck.ez"; fa: "ck.fa"; fb: "ck.fb"; fc: "ck.fc"; fd: "ck.fd"; fe: "ck.fe"; ff: "ck.ff"; fg: "ck.fg"; fh: "ck.fh"; fi: "ck.fi"; fj: "ck.fj"; fk: "ck.fk"; fl: "ck.fl"; fm: "ck.fm"; fn: "ck.fn"; fo: "ck.fo"; fp: "ck.fp"; fq: "ck.fq"; fr: "ck.fr"; fs: "ck.fs"; ft: "ck.ft"; fu: "ck.fu"; fv: "ck.fv"; fw: "ck.fw"; fx: "ck.fx"; fy: "ck.fy"; fz: "ck.fz"; ga: "ck.ga"; gb: "ck.gb"; gc: "ck.gc"; gd: "ck.gd"; ge: "ck.ge"; gf: "ck.gf"; gg: "ck.gg"; gh: "ck.gh"; gi: "ck.gi"; gj: "ck.gj"; gk: "ck.gk"; gl: "ck.gl"; gm: "ck.gm"; gn: "ck.gn"; go: "ck.go"; gp: "ck.gp"; gq: "ck.gq"; gr: "ck.gr"; gs: "ck.gs"; gt: "ck.gt"; gu: "ck.gu"; gv: "ck.gv"; gw: "ck.gw"; gx: "ck.gx"; gy: "ck.gy"; gz: "ck.gz"; ha: "ck.ha"; hb: "ck.hb"; hc: "ck.hc"; hd: "ck.hd"; he: "ck.he"; hf: "ck.hf"; hg: "ck.hg"; hh: "ck.hh"; hi: "ck.hi"; hj: "ck.hj"; hk: "ck.hk"; hl: "ck.hl"; hm: "ck.hm"; hn: "ck.hn"; ho: "ck.ho"; hp: "ck.hp"; hq: "ck.hq"; hr: "ck.hr"; hs: "ck.hs"; ht: "ck.ht"; hu: "ck.hu"; hv: "ck.hv"; hw: "ck.hw"; hx: "ck.hx"; hy: "ck.hy"; hz: "ck.hz"; ia: "ck.ia"; ib: "ck.ib"; ic: "ck.ic"; id: "ck.id"; ie: "ck.ie"; if: "ck.if"; ig: "ck.ig"; ih: "ck.ih"; ii: "ck.ii"; ij: "ck.ij"; ik: "ck.ik"; il: "ck.il"; im: "ck.im"; in: "ck.in"; io: "ck.io"; ip: "ck.ip"; iq: "ck.iq"; ir: "ck.ir"; is: "ck.is"; it: "ck.it"; iu: "ck.iu"; iv: "ck.iv"; iw: "ck.iw"; ix: "ck.ix"; iy: "ck.iy"; iz: "ck.iz"; ja: "ck.ja"; jb: "ck.jb"; jc: "ck.jc"; jd: "ck.jd"; je: "ck.je"; jf: "ck.jf"; jg: "ck.jg"; jh: "ck.jh"; ji: "ck.ji"; jj: "ck.jj"; jk: "ck.jk"; jl: "ck.jl"; jm: "ck.jm"; jn: "ck.jn"; jo: "ck.jo"; jp: "ck.jp"; jq: "ck.jq"; jr: "ck.jr"; js: "ck.js"; jt: "ck.jt"; ju: "ck.ju"; jv: "ck.jv"; jw: "ck.jw"; jx: "ck.jx"; jy: "ck.jy"; jz: "ck.jz"; ka: "ck.ka"; kb: "ck.kb"; kc: "ck.kc"; kd: "ck.kd"; ke: "ck.ke"; kf: "ck.kf"; kg: "ck.kg"; kh: "ck.kh"; ki: "ck.ki"; kj: "ck.kj"; kk: "ck.kk"; kl: "ck.kl"; km: "ck.km"; kn: "ck.kn"; ko: "ck.ko"; kp: "ck.kp"; kq: "ck.kq"; kr: "ck.kr"; ks: "ck.ks"; kt: "ck.kt"; ku: "ck.ku"; kv: "ck.kv"; kw: "ck.kw"; kx: "ck.kx"; ky: "ck.ky"; kz: "ck.kz"; la: "ck.la"; lb: "ck.lb"; lc: "ck.lc"; ld: "ck.ld"; le: "ck.le"; lf: "ck.lf"; lg: "ck.lg"; lh: "ck.lh"; li: "ck.li"; lj: "ck.lj"; lk: "ck.lk"; ll: "ck.ll"; lm: "ck.lm"; ln: "ck.ln"; lo: "ck.lo"; lp: "ck.lp"; lq: "ck.lq"; lr: "ck.lr"; ls: "ck.ls"; lt: "ck.lt"; lu: "ck.lu"; lv: "ck.lv"; lw: "ck.lw"; lx: "ck.lx"; ly: "ck.ly"; lz: "ck.lz"; ma: "ck.ma"; mb: "ck.mb"; mc: "ck.mc"; md: "ck.md"; me: "ck.me"; mf: "ck.mf"; mg: "ck.mg"; mh: "ck.mh"; mi: "ck.mi"; mj: "ck.mj"; mk: "ck.mk"; ml: "ck.ml"; mm: "ck.mm"; mn: "ck.mn"; mo: "ck.mo"; mp: "ck.mp"; mq: "ck.mq"; mr: "ck.mr"; ms: "ck.ms"; mt: "ck.mt"; mu: "ck.mu"; mv: "ck.mv"; mw: "ck.mw"; mx: "ck.mx"; my: "ck.my"; mz: "ck.mz"; na: "ck.na"; nb: "ck.nb"; nc: "ck.nc"; nd: "ck.nd"; ne: "ck.ne"; nf: "ck.nf"; ng: "ck.ng"; nh: "ck.nh"; ni: "ck.ni"; nj: "ck.nj"; nk: "ck.nk"; nl: "ck.nl"; nm: "ck.nm"; nn: "ck.nn"; no: "ck.no"; np: "ck.np"; nq: "ck.nq"; nr: "ck.nr"; ns: "ck.ns"; nt: "ck.nt"; nu: "ck.nu"; nv: "ck.nv"; nw: "ck.nw"; nx: "ck.nx"; ny: "ck.ny"; nz: "ck.nz"; oa: "ck.oa"; ob: "ck.ob"; oc: "ck.oc"; od: "ck.od"; oe: "ck.oe"; of: "ck.of"; og: "ck.og"; oh: "ck.oh"; oi: "ck.oi"; oj: "ck.oj"; ok: "ck.ok"; ol: "ck.ol"; om: "ck.om"; on: "ck.on"; oo: "ck.oo"; op: "ck.op"; oq: "ck.oq"; or: "ck.or"; os: "ck.os"; ot: "ck.ot"; ou: "ck.ou"; ov: "ck.ov"; ow: "ck.ow"; ox: "ck.ox"; oy: "ck.oy"; oz: "ck.oz"; pa: "ck.pa"; pb: "ck.pb"; pc: "ck.pc"; pd: "ck.pd"; pe: "ck.pe"; pf: "ck.pf"; pg: "ck.pg"; ph: "ck.ph"; pi: "ck.pi"; pj: "ck.pj"; pk: "ck.pk"; pl: "ck.pl"; pm: "ck.pm"; pn: "ck.pn"; po: "ck.po"; pp: "ck.pp"; pq: "ck.pq"; pr: "ck.pr"; ps: "ck.ps"; pt: "ck.pt"; pu: "ck.pu"; pv: "ck.pv"; pw: "ck.pw"; px: "ck.px"; py: "ck.py"; pz: "ck.pz"; qa: "ck.qa"; qb: "ck.qb"; qc: "ck.qc"; qd: "ck.qd"; qe: "ck.qe"; qf: "ck.qf"; qg: "ck.qg"; qh: "ck.qh"; qi: "ck.qi"; qj: "ck.qj"; qk: "ck.qk"; ql: "ck.ql"; qm: "ck.qm"; qn: "ck.qn"; qo: "ck.qo"; qp: "ck.qp"; qq: "ck.qq"; qr: "ck.qr"; qs: "ck.qs"; qt: "ck.qt"; qu: "ck.qu"; qv: "ck.qv"; qw: "ck.qw"; qx: "ck.qx"; qy: "ck.qy"; qz: "ck.qz"; ra: "ck.ra"; rb: "ck.rb"; rc: "ck.rc"; rd: "ck.rd"; re: "ck.re"; rf: "ck.rf"; rg: "ck.rg"; rh: "ck.rh"; ri: "ck.ri"; rj: "ck.rj"; rk: "ck.rk"; rl: "ck.rl"; rm: "ck.rm"; rn: "ck.rn"; ro: "ck.ro"; rp: "ck.rp"; rq: "ck.rq"; rr: "ck.rr"; rs: "ck.rs"; rt: "ck.rt"; ru: "ck.ru"; rv: "ck.rv"; rw: "ck.rw"; rx: "ck.rx"; ry: "ck.ry"; rz: "ck.rz"; sa: "ck.sa"; sb: "ck.sb"; sc: "ck.sc"; sd: "ck.sd"; se: "ck.se"; sf: "ck.sf"; sg: "ck.sg"; sh: "ck.sh"; si: "ck.si"; sj: "ck.sj"; sk: "ck.sk"; sl: "ck.sl"; sm: "ck.sm"; sn: "ck.sn"; so: "ck.so"; sp: "ck.sp"; sq: "ck.sq"; sr: "ck.sr"; ss: "ck.ss"; st: "ck.st"; su: "ck.su"; sv: "ck.sv"; sw: "ck.sw"; sx: "ck.sx"; sy: "ck.sy"; sz: "ck.sz"; ta: "ck.ta"; tb: "ck.tb"; tc: "ck.tc"; td: "ck.td"; te: "ck.te"; tf: "ck.tf"; tg: "ck.tg"; th: "ck.th"; ti: "ck.ti"; tj: "ck.tj"; tk: "ck.tk"; tl: "ck.tl"; tm: "ck.tm"; tn: "ck.tn"; to: "ck.to"; tp: "ck.tp"; tq: "ck.tq"; tr: "ck.tr"; ts: "ck.ts"; tt: "ck.tt"; tu: "ck.tu"; tv: "ck.tv"; tw: "ck.tw"; tx: "ck.tx"; ty: "ck.ty"; tz: "ck.tz"; ua: "ck.ua"; ub: "ck.ub"; uc: "ck.uc"; ud: "ck.ud"; ue: "ck.ue"; uf: "ck.uf"; ug: "ck.ug"; uh: "ck.uh"; ui: "ck.ui"; uj: "ck.uj"; uk: "ck.uk"; ul: "ck.ul"; um: "ck.um"; un: "ck.un"; uo: "ck.uo"; up: "ck.up"; uq: "ck.uq"; ur: "ck.ur"; us: "ck.us"; ut: "ck.ut"; uu: "ck.uu"; uv: "ck.uv"; uw: "ck.uw"; ux: "ck.ux"; uy: "ck.uy"; uz: "ck.uz"; va: "ck.va"; vb: "ck.vb"; vc: "ck.vc"; vd: "ck.vd"; ve: "ck.ve"; vf: "ck.vf"; vg: "ck.vg"; vh: "ck.vh"; vi: "ck.vi"; vj: "ck.vj"; vk: "ck.vk"; vl: "ck.vl"; vm: "ck.vm"; vn: "ck.vn"; vo: "ck.vo"; vp: "ck.vp"; vq: "ck.vq"; vr: "ck.vr"; vs: "ck.vs"; vt: "ck.vt"; vu: "ck.vu"; vv: "ck.vv"; vw: "ck.vw"; vx: "ck.vx"; vy: "ck.vy"; vz: "ck.vz"; wa: "ck.wa"; wb: "ck.wb"; wc: "ck.wc"; wd: "ck.wd"; we: "ck.we"; wf: "ck.wf"; wg: "ck.wg"; wh: "ck.wh"; wi: "ck.wi"; wj: "ck.wj"; wk: "ck.wk"; wl: "ck.wl"; wm: "ck.wm"; wn: "ck.wn"; wo: "ck.wo"; wp: "ck.wp"; wq: "ck.wq"; wr: "ck.wr"; ws: "ck.ws"; wt: "ck.wt"; wu: "ck.wu"; wv: "ck.wv"; ww: "ck.ww"; wx: "ck.wx"; wy: "ck.wy"; wz: "ck.wz"; xa: "ck.xa"; xb: "ck.xb"; xc: "ck.xc"; xd: "ck.xd"; xe: "ck.xe"; xf: "ck.xf"; xg: "ck.xg"; xh: "ck.xh"; xi: "ck.xi"; xj: "ck.xj"; xk: "ck.xk"; xl: "ck.xl"; xm: "ck.xm"; xn: "ck.xn"; xo: "ck.xo"; xp: "ck.xp"; xq: "ck.xq"; xr: "ck.xr"; xs: "ck.xs"; xt: "ck.xt"; xu: "ck.xu"; xv: "ck.xv"; xw: "ck.xw"; xx: "ck.xx"; xy: "ck.xy"; xz: "ck.xz"; ya: "ck.ya"; yb: "ck.yb"; yc: "ck.yc"; yd: "ck.yd"; ye: "ck.ye"; yf: "ck.yf"; yg: "ck.yg"; yh: "ck.yh"; yi: "ck.yi"; yj: "ck.yj"; yk: "ck.yk"; yl: "ck.yl"; ym: "ck.ym"; yn: "ck.yn"; yo: "ck.yo"; yp: "ck.yp"; yq: "ck.yq"; yr: "ck.yr"; ys: "ck.ys"; yt: "ck.yt"; yu: "ck.yu"; yv: "ck.yv"; yw: "ck.yw"; yx: "ck.yx"; yy: "ck.yy"; yz: "ck.yz"; za: "ck.za"; zb: "ck.zb"; zc: "ck.zc"; zd: "ck.zd"; ze: "ck.ze"; zf: "ck.zf"; zg: "ck.zg"; zh: "ck.zh"; zi: "ck.zi"; zj: "ck.zj"; zk: "ck.zk"; zl: "ck.zl"; zm: "ck.zm"; zn: "ck.zn"; zo: "ck.zo"; zp: "ck.zp"; zq: "ck.zq"; zr: "ck.zr"; zs: "ck.zs"; zt: "ck.zt"; zu: "ck.zu"; zv: "ck.zv"; zw: "ck.zw"; zx: "ck.zx"; zy: "ck.zy"; zz: "ck.zz"; }; cl: { aa: "cl.aa"; ab: "cl.ab"; ac: "cl.ac"; ad: "cl.ad"; ae: "cl.ae"; af: "cl.af"; ag: "cl.ag"; ah: "cl.ah"; ai: "cl.ai"; aj: "cl.aj"; ak: "cl.ak"; al: "cl.al"; am: "cl.am"; an: "cl.an"; ao: "cl.ao"; ap: "cl.ap"; aq: "cl.aq"; ar: "cl.ar"; as: "cl.as"; at: "cl.at"; au: "cl.au"; av: "cl.av"; aw: "cl.aw"; ax: "cl.ax"; ay: "cl.ay"; az: "cl.az"; ba: "cl.ba"; bb: "cl.bb"; bc: "cl.bc"; bd: "cl.bd"; be: "cl.be"; bf: "cl.bf"; bg: "cl.bg"; bh: "cl.bh"; bi: "cl.bi"; bj: "cl.bj"; bk: "cl.bk"; bl: "cl.bl"; bm: "cl.bm"; bn: "cl.bn"; bo: "cl.bo"; bp: "cl.bp"; bq: "cl.bq"; br: "cl.br"; bs: "cl.bs"; bt: "cl.bt"; bu: "cl.bu"; bv: "cl.bv"; bw: "cl.bw"; bx: "cl.bx"; by: "cl.by"; bz: "cl.bz"; ca: "cl.ca"; cb: "cl.cb"; cc: "cl.cc"; cd: "cl.cd"; ce: "cl.ce"; cf: "cl.cf"; cg: "cl.cg"; ch: "cl.ch"; ci: "cl.ci"; cj: "cl.cj"; ck: "cl.ck"; cl: "cl.cl"; cm: "cl.cm"; cn: "cl.cn"; co: "cl.co"; cp: "cl.cp"; cq: "cl.cq"; cr: "cl.cr"; cs: "cl.cs"; ct: "cl.ct"; cu: "cl.cu"; cv: "cl.cv"; cw: "cl.cw"; cx: "cl.cx"; cy: "cl.cy"; cz: "cl.cz"; da: "cl.da"; db: "cl.db"; dc: "cl.dc"; dd: "cl.dd"; de: "cl.de"; df: "cl.df"; dg: "cl.dg"; dh: "cl.dh"; di: "cl.di"; dj: "cl.dj"; dk: "cl.dk"; dl: "cl.dl"; dm: "cl.dm"; dn: "cl.dn"; do: "cl.do"; dp: "cl.dp"; dq: "cl.dq"; dr: "cl.dr"; ds: "cl.ds"; dt: "cl.dt"; du: "cl.du"; dv: "cl.dv"; dw: "cl.dw"; dx: "cl.dx"; dy: "cl.dy"; dz: "cl.dz"; ea: "cl.ea"; eb: "cl.eb"; ec: "cl.ec"; ed: "cl.ed"; ee: "cl.ee"; ef: "cl.ef"; eg: "cl.eg"; eh: "cl.eh"; ei: "cl.ei"; ej: "cl.ej"; ek: "cl.ek"; el: "cl.el"; em: "cl.em"; en: "cl.en"; eo: "cl.eo"; ep: "cl.ep"; eq: "cl.eq"; er: "cl.er"; es: "cl.es"; et: "cl.et"; eu: "cl.eu"; ev: "cl.ev"; ew: "cl.ew"; ex: "cl.ex"; ey: "cl.ey"; ez: "cl.ez"; fa: "cl.fa"; fb: "cl.fb"; fc: "cl.fc"; fd: "cl.fd"; fe: "cl.fe"; ff: "cl.ff"; fg: "cl.fg"; fh: "cl.fh"; fi: "cl.fi"; fj: "cl.fj"; fk: "cl.fk"; fl: "cl.fl"; fm: "cl.fm"; fn: "cl.fn"; fo: "cl.fo"; fp: "cl.fp"; fq: "cl.fq"; fr: "cl.fr"; fs: "cl.fs"; ft: "cl.ft"; fu: "cl.fu"; fv: "cl.fv"; fw: "cl.fw"; fx: "cl.fx"; fy: "cl.fy"; fz: "cl.fz"; ga: "cl.ga"; gb: "cl.gb"; gc: "cl.gc"; gd: "cl.gd"; ge: "cl.ge"; gf: "cl.gf"; gg: "cl.gg"; gh: "cl.gh"; gi: "cl.gi"; gj: "cl.gj"; gk: "cl.gk"; gl: "cl.gl"; gm: "cl.gm"; gn: "cl.gn"; go: "cl.go"; gp: "cl.gp"; gq: "cl.gq"; gr: "cl.gr"; gs: "cl.gs"; gt: "cl.gt"; gu: "cl.gu"; gv: "cl.gv"; gw: "cl.gw"; gx: "cl.gx"; gy: "cl.gy"; gz: "cl.gz"; ha: "cl.ha"; hb: "cl.hb"; hc: "cl.hc"; hd: "cl.hd"; he: "cl.he"; hf: "cl.hf"; hg: "cl.hg"; hh: "cl.hh"; hi: "cl.hi"; hj: "cl.hj"; hk: "cl.hk"; hl: "cl.hl"; hm: "cl.hm"; hn: "cl.hn"; ho: "cl.ho"; hp: "cl.hp"; hq: "cl.hq"; hr: "cl.hr"; hs: "cl.hs"; ht: "cl.ht"; hu: "cl.hu"; hv: "cl.hv"; hw: "cl.hw"; hx: "cl.hx"; hy: "cl.hy"; hz: "cl.hz"; ia: "cl.ia"; ib: "cl.ib"; ic: "cl.ic"; id: "cl.id"; ie: "cl.ie"; if: "cl.if"; ig: "cl.ig"; ih: "cl.ih"; ii: "cl.ii"; ij: "cl.ij"; ik: "cl.ik"; il: "cl.il"; im: "cl.im"; in: "cl.in"; io: "cl.io"; ip: "cl.ip"; iq: "cl.iq"; ir: "cl.ir"; is: "cl.is"; it: "cl.it"; iu: "cl.iu"; iv: "cl.iv"; iw: "cl.iw"; ix: "cl.ix"; iy: "cl.iy"; iz: "cl.iz"; ja: "cl.ja"; jb: "cl.jb"; jc: "cl.jc"; jd: "cl.jd"; je: "cl.je"; jf: "cl.jf"; jg: "cl.jg"; jh: "cl.jh"; ji: "cl.ji"; jj: "cl.jj"; jk: "cl.jk"; jl: "cl.jl"; jm: "cl.jm"; jn: "cl.jn"; jo: "cl.jo"; jp: "cl.jp"; jq: "cl.jq"; jr: "cl.jr"; js: "cl.js"; jt: "cl.jt"; ju: "cl.ju"; jv: "cl.jv"; jw: "cl.jw"; jx: "cl.jx"; jy: "cl.jy"; jz: "cl.jz"; ka: "cl.ka"; kb: "cl.kb"; kc: "cl.kc"; kd: "cl.kd"; ke: "cl.ke"; kf: "cl.kf"; kg: "cl.kg"; kh: "cl.kh"; ki: "cl.ki"; kj: "cl.kj"; kk: "cl.kk"; kl: "cl.kl"; km: "cl.km"; kn: "cl.kn"; ko: "cl.ko"; kp: "cl.kp"; kq: "cl.kq"; kr: "cl.kr"; ks: "cl.ks"; kt: "cl.kt"; ku: "cl.ku"; kv: "cl.kv"; kw: "cl.kw"; kx: "cl.kx"; ky: "cl.ky"; kz: "cl.kz"; la: "cl.la"; lb: "cl.lb"; lc: "cl.lc"; ld: "cl.ld"; le: "cl.le"; lf: "cl.lf"; lg: "cl.lg"; lh: "cl.lh"; li: "cl.li"; lj: "cl.lj"; lk: "cl.lk"; ll: "cl.ll"; lm: "cl.lm"; ln: "cl.ln"; lo: "cl.lo"; lp: "cl.lp"; lq: "cl.lq"; lr: "cl.lr"; ls: "cl.ls"; lt: "cl.lt"; lu: "cl.lu"; lv: "cl.lv"; lw: "cl.lw"; lx: "cl.lx"; ly: "cl.ly"; lz: "cl.lz"; ma: "cl.ma"; mb: "cl.mb"; mc: "cl.mc"; md: "cl.md"; me: "cl.me"; mf: "cl.mf"; mg: "cl.mg"; mh: "cl.mh"; mi: "cl.mi"; mj: "cl.mj"; mk: "cl.mk"; ml: "cl.ml"; mm: "cl.mm"; mn: "cl.mn"; mo: "cl.mo"; mp: "cl.mp"; mq: "cl.mq"; mr: "cl.mr"; ms: "cl.ms"; mt: "cl.mt"; mu: "cl.mu"; mv: "cl.mv"; mw: "cl.mw"; mx: "cl.mx"; my: "cl.my"; mz: "cl.mz"; na: "cl.na"; nb: "cl.nb"; nc: "cl.nc"; nd: "cl.nd"; ne: "cl.ne"; nf: "cl.nf"; ng: "cl.ng"; nh: "cl.nh"; ni: "cl.ni"; nj: "cl.nj"; nk: "cl.nk"; nl: "cl.nl"; nm: "cl.nm"; nn: "cl.nn"; no: "cl.no"; np: "cl.np"; nq: "cl.nq"; nr: "cl.nr"; ns: "cl.ns"; nt: "cl.nt"; nu: "cl.nu"; nv: "cl.nv"; nw: "cl.nw"; nx: "cl.nx"; ny: "cl.ny"; nz: "cl.nz"; oa: "cl.oa"; ob: "cl.ob"; oc: "cl.oc"; od: "cl.od"; oe: "cl.oe"; of: "cl.of"; og: "cl.og"; oh: "cl.oh"; oi: "cl.oi"; oj: "cl.oj"; ok: "cl.ok"; ol: "cl.ol"; om: "cl.om"; on: "cl.on"; oo: "cl.oo"; op: "cl.op"; oq: "cl.oq"; or: "cl.or"; os: "cl.os"; ot: "cl.ot"; ou: "cl.ou"; ov: "cl.ov"; ow: "cl.ow"; ox: "cl.ox"; oy: "cl.oy"; oz: "cl.oz"; pa: "cl.pa"; pb: "cl.pb"; pc: "cl.pc"; pd: "cl.pd"; pe: "cl.pe"; pf: "cl.pf"; pg: "cl.pg"; ph: "cl.ph"; pi: "cl.pi"; pj: "cl.pj"; pk: "cl.pk"; pl: "cl.pl"; pm: "cl.pm"; pn: "cl.pn"; po: "cl.po"; pp: "cl.pp"; pq: "cl.pq"; pr: "cl.pr"; ps: "cl.ps"; pt: "cl.pt"; pu: "cl.pu"; pv: "cl.pv"; pw: "cl.pw"; px: "cl.px"; py: "cl.py"; pz: "cl.pz"; qa: "cl.qa"; qb: "cl.qb"; qc: "cl.qc"; qd: "cl.qd"; qe: "cl.qe"; qf: "cl.qf"; qg: "cl.qg"; qh: "cl.qh"; qi: "cl.qi"; qj: "cl.qj"; qk: "cl.qk"; ql: "cl.ql"; qm: "cl.qm"; qn: "cl.qn"; qo: "cl.qo"; qp: "cl.qp"; qq: "cl.qq"; qr: "cl.qr"; qs: "cl.qs"; qt: "cl.qt"; qu: "cl.qu"; qv: "cl.qv"; qw: "cl.qw"; qx: "cl.qx"; qy: "cl.qy"; qz: "cl.qz"; ra: "cl.ra"; rb: "cl.rb"; rc: "cl.rc"; rd: "cl.rd"; re: "cl.re"; rf: "cl.rf"; rg: "cl.rg"; rh: "cl.rh"; ri: "cl.ri"; rj: "cl.rj"; rk: "cl.rk"; rl: "cl.rl"; rm: "cl.rm"; rn: "cl.rn"; ro: "cl.ro"; rp: "cl.rp"; rq: "cl.rq"; rr: "cl.rr"; rs: "cl.rs"; rt: "cl.rt"; ru: "cl.ru"; rv: "cl.rv"; rw: "cl.rw"; rx: "cl.rx"; ry: "cl.ry"; rz: "cl.rz"; sa: "cl.sa"; sb: "cl.sb"; sc: "cl.sc"; sd: "cl.sd"; se: "cl.se"; sf: "cl.sf"; sg: "cl.sg"; sh: "cl.sh"; si: "cl.si"; sj: "cl.sj"; sk: "cl.sk"; sl: "cl.sl"; sm: "cl.sm"; sn: "cl.sn"; so: "cl.so"; sp: "cl.sp"; sq: "cl.sq"; sr: "cl.sr"; ss: "cl.ss"; st: "cl.st"; su: "cl.su"; sv: "cl.sv"; sw: "cl.sw"; sx: "cl.sx"; sy: "cl.sy"; sz: "cl.sz"; ta: "cl.ta"; tb: "cl.tb"; tc: "cl.tc"; td: "cl.td"; te: "cl.te"; tf: "cl.tf"; tg: "cl.tg"; th: "cl.th"; ti: "cl.ti"; tj: "cl.tj"; tk: "cl.tk"; tl: "cl.tl"; tm: "cl.tm"; tn: "cl.tn"; to: "cl.to"; tp: "cl.tp"; tq: "cl.tq"; tr: "cl.tr"; ts: "cl.ts"; tt: "cl.tt"; tu: "cl.tu"; tv: "cl.tv"; tw: "cl.tw"; tx: "cl.tx"; ty: "cl.ty"; tz: "cl.tz"; ua: "cl.ua"; ub: "cl.ub"; uc: "cl.uc"; ud: "cl.ud"; ue: "cl.ue"; uf: "cl.uf"; ug: "cl.ug"; uh: "cl.uh"; ui: "cl.ui"; uj: "cl.uj"; uk: "cl.uk"; ul: "cl.ul"; um: "cl.um"; un: "cl.un"; uo: "cl.uo"; up: "cl.up"; uq: "cl.uq"; ur: "cl.ur"; us: "cl.us"; ut: "cl.ut"; uu: "cl.uu"; uv: "cl.uv"; uw: "cl.uw"; ux: "cl.ux"; uy: "cl.uy"; uz: "cl.uz"; va: "cl.va"; vb: "cl.vb"; vc: "cl.vc"; vd: "cl.vd"; ve: "cl.ve"; vf: "cl.vf"; vg: "cl.vg"; vh: "cl.vh"; vi: "cl.vi"; vj: "cl.vj"; vk: "cl.vk"; vl: "cl.vl"; vm: "cl.vm"; vn: "cl.vn"; vo: "cl.vo"; vp: "cl.vp"; vq: "cl.vq"; vr: "cl.vr"; vs: "cl.vs"; vt: "cl.vt"; vu: "cl.vu"; vv: "cl.vv"; vw: "cl.vw"; vx: "cl.vx"; vy: "cl.vy"; vz: "cl.vz"; wa: "cl.wa"; wb: "cl.wb"; wc: "cl.wc"; wd: "cl.wd"; we: "cl.we"; wf: "cl.wf"; wg: "cl.wg"; wh: "cl.wh"; wi: "cl.wi"; wj: "cl.wj"; wk: "cl.wk"; wl: "cl.wl"; wm: "cl.wm"; wn: "cl.wn"; wo: "cl.wo"; wp: "cl.wp"; wq: "cl.wq"; wr: "cl.wr"; ws: "cl.ws"; wt: "cl.wt"; wu: "cl.wu"; wv: "cl.wv"; ww: "cl.ww"; wx: "cl.wx"; wy: "cl.wy"; wz: "cl.wz"; xa: "cl.xa"; xb: "cl.xb"; xc: "cl.xc"; xd: "cl.xd"; xe: "cl.xe"; xf: "cl.xf"; xg: "cl.xg"; xh: "cl.xh"; xi: "cl.xi"; xj: "cl.xj"; xk: "cl.xk"; xl: "cl.xl"; xm: "cl.xm"; xn: "cl.xn"; xo: "cl.xo"; xp: "cl.xp"; xq: "cl.xq"; xr: "cl.xr"; xs: "cl.xs"; xt: "cl.xt"; xu: "cl.xu"; xv: "cl.xv"; xw: "cl.xw"; xx: "cl.xx"; xy: "cl.xy"; xz: "cl.xz"; ya: "cl.ya"; yb: "cl.yb"; yc: "cl.yc"; yd: "cl.yd"; ye: "cl.ye"; yf: "cl.yf"; yg: "cl.yg"; yh: "cl.yh"; yi: "cl.yi"; yj: "cl.yj"; yk: "cl.yk"; yl: "cl.yl"; ym: "cl.ym"; yn: "cl.yn"; yo: "cl.yo"; yp: "cl.yp"; yq: "cl.yq"; yr: "cl.yr"; ys: "cl.ys"; yt: "cl.yt"; yu: "cl.yu"; yv: "cl.yv"; yw: "cl.yw"; yx: "cl.yx"; yy: "cl.yy"; yz: "cl.yz"; za: "cl.za"; zb: "cl.zb"; zc: "cl.zc"; zd: "cl.zd"; ze: "cl.ze"; zf: "cl.zf"; zg: "cl.zg"; zh: "cl.zh"; zi: "cl.zi"; zj: "cl.zj"; zk: "cl.zk"; zl: "cl.zl"; zm: "cl.zm"; zn: "cl.zn"; zo: "cl.zo"; zp: "cl.zp"; zq: "cl.zq"; zr: "cl.zr"; zs: "cl.zs"; zt: "cl.zt"; zu: "cl.zu"; zv: "cl.zv"; zw: "cl.zw"; zx: "cl.zx"; zy: "cl.zy"; zz: "cl.zz"; }; cm: { aa: "cm.aa"; ab: "cm.ab"; ac: "cm.ac"; ad: "cm.ad"; ae: "cm.ae"; af: "cm.af"; ag: "cm.ag"; ah: "cm.ah"; ai: "cm.ai"; aj: "cm.aj"; ak: "cm.ak"; al: "cm.al"; am: "cm.am"; an: "cm.an"; ao: "cm.ao"; ap: "cm.ap"; aq: "cm.aq"; ar: "cm.ar"; as: "cm.as"; at: "cm.at"; au: "cm.au"; av: "cm.av"; aw: "cm.aw"; ax: "cm.ax"; ay: "cm.ay"; az: "cm.az"; ba: "cm.ba"; bb: "cm.bb"; bc: "cm.bc"; bd: "cm.bd"; be: "cm.be"; bf: "cm.bf"; bg: "cm.bg"; bh: "cm.bh"; bi: "cm.bi"; bj: "cm.bj"; bk: "cm.bk"; bl: "cm.bl"; bm: "cm.bm"; bn: "cm.bn"; bo: "cm.bo"; bp: "cm.bp"; bq: "cm.bq"; br: "cm.br"; bs: "cm.bs"; bt: "cm.bt"; bu: "cm.bu"; bv: "cm.bv"; bw: "cm.bw"; bx: "cm.bx"; by: "cm.by"; bz: "cm.bz"; ca: "cm.ca"; cb: "cm.cb"; cc: "cm.cc"; cd: "cm.cd"; ce: "cm.ce"; cf: "cm.cf"; cg: "cm.cg"; ch: "cm.ch"; ci: "cm.ci"; cj: "cm.cj"; ck: "cm.ck"; cl: "cm.cl"; cm: "cm.cm"; cn: "cm.cn"; co: "cm.co"; cp: "cm.cp"; cq: "cm.cq"; cr: "cm.cr"; cs: "cm.cs"; ct: "cm.ct"; cu: "cm.cu"; cv: "cm.cv"; cw: "cm.cw"; cx: "cm.cx"; cy: "cm.cy"; cz: "cm.cz"; da: "cm.da"; db: "cm.db"; dc: "cm.dc"; dd: "cm.dd"; de: "cm.de"; df: "cm.df"; dg: "cm.dg"; dh: "cm.dh"; di: "cm.di"; dj: "cm.dj"; dk: "cm.dk"; dl: "cm.dl"; dm: "cm.dm"; dn: "cm.dn"; do: "cm.do"; dp: "cm.dp"; dq: "cm.dq"; dr: "cm.dr"; ds: "cm.ds"; dt: "cm.dt"; du: "cm.du"; dv: "cm.dv"; dw: "cm.dw"; dx: "cm.dx"; dy: "cm.dy"; dz: "cm.dz"; ea: "cm.ea"; eb: "cm.eb"; ec: "cm.ec"; ed: "cm.ed"; ee: "cm.ee"; ef: "cm.ef"; eg: "cm.eg"; eh: "cm.eh"; ei: "cm.ei"; ej: "cm.ej"; ek: "cm.ek"; el: "cm.el"; em: "cm.em"; en: "cm.en"; eo: "cm.eo"; ep: "cm.ep"; eq: "cm.eq"; er: "cm.er"; es: "cm.es"; et: "cm.et"; eu: "cm.eu"; ev: "cm.ev"; ew: "cm.ew"; ex: "cm.ex"; ey: "cm.ey"; ez: "cm.ez"; fa: "cm.fa"; fb: "cm.fb"; fc: "cm.fc"; fd: "cm.fd"; fe: "cm.fe"; ff: "cm.ff"; fg: "cm.fg"; fh: "cm.fh"; fi: "cm.fi"; fj: "cm.fj"; fk: "cm.fk"; fl: "cm.fl"; fm: "cm.fm"; fn: "cm.fn"; fo: "cm.fo"; fp: "cm.fp"; fq: "cm.fq"; fr: "cm.fr"; fs: "cm.fs"; ft: "cm.ft"; fu: "cm.fu"; fv: "cm.fv"; fw: "cm.fw"; fx: "cm.fx"; fy: "cm.fy"; fz: "cm.fz"; ga: "cm.ga"; gb: "cm.gb"; gc: "cm.gc"; gd: "cm.gd"; ge: "cm.ge"; gf: "cm.gf"; gg: "cm.gg"; gh: "cm.gh"; gi: "cm.gi"; gj: "cm.gj"; gk: "cm.gk"; gl: "cm.gl"; gm: "cm.gm"; gn: "cm.gn"; go: "cm.go"; gp: "cm.gp"; gq: "cm.gq"; gr: "cm.gr"; gs: "cm.gs"; gt: "cm.gt"; gu: "cm.gu"; gv: "cm.gv"; gw: "cm.gw"; gx: "cm.gx"; gy: "cm.gy"; gz: "cm.gz"; ha: "cm.ha"; hb: "cm.hb"; hc: "cm.hc"; hd: "cm.hd"; he: "cm.he"; hf: "cm.hf"; hg: "cm.hg"; hh: "cm.hh"; hi: "cm.hi"; hj: "cm.hj"; hk: "cm.hk"; hl: "cm.hl"; hm: "cm.hm"; hn: "cm.hn"; ho: "cm.ho"; hp: "cm.hp"; hq: "cm.hq"; hr: "cm.hr"; hs: "cm.hs"; ht: "cm.ht"; hu: "cm.hu"; hv: "cm.hv"; hw: "cm.hw"; hx: "cm.hx"; hy: "cm.hy"; hz: "cm.hz"; ia: "cm.ia"; ib: "cm.ib"; ic: "cm.ic"; id: "cm.id"; ie: "cm.ie"; if: "cm.if"; ig: "cm.ig"; ih: "cm.ih"; ii: "cm.ii"; ij: "cm.ij"; ik: "cm.ik"; il: "cm.il"; im: "cm.im"; in: "cm.in"; io: "cm.io"; ip: "cm.ip"; iq: "cm.iq"; ir: "cm.ir"; is: "cm.is"; it: "cm.it"; iu: "cm.iu"; iv: "cm.iv"; iw: "cm.iw"; ix: "cm.ix"; iy: "cm.iy"; iz: "cm.iz"; ja: "cm.ja"; jb: "cm.jb"; jc: "cm.jc"; jd: "cm.jd"; je: "cm.je"; jf: "cm.jf"; jg: "cm.jg"; jh: "cm.jh"; ji: "cm.ji"; jj: "cm.jj"; jk: "cm.jk"; jl: "cm.jl"; jm: "cm.jm"; jn: "cm.jn"; jo: "cm.jo"; jp: "cm.jp"; jq: "cm.jq"; jr: "cm.jr"; js: "cm.js"; jt: "cm.jt"; ju: "cm.ju"; jv: "cm.jv"; jw: "cm.jw"; jx: "cm.jx"; jy: "cm.jy"; jz: "cm.jz"; ka: "cm.ka"; kb: "cm.kb"; kc: "cm.kc"; kd: "cm.kd"; ke: "cm.ke"; kf: "cm.kf"; kg: "cm.kg"; kh: "cm.kh"; ki: "cm.ki"; kj: "cm.kj"; kk: "cm.kk"; kl: "cm.kl"; km: "cm.km"; kn: "cm.kn"; ko: "cm.ko"; kp: "cm.kp"; kq: "cm.kq"; kr: "cm.kr"; ks: "cm.ks"; kt: "cm.kt"; ku: "cm.ku"; kv: "cm.kv"; kw: "cm.kw"; kx: "cm.kx"; ky: "cm.ky"; kz: "cm.kz"; la: "cm.la"; lb: "cm.lb"; lc: "cm.lc"; ld: "cm.ld"; le: "cm.le"; lf: "cm.lf"; lg: "cm.lg"; lh: "cm.lh"; li: "cm.li"; lj: "cm.lj"; lk: "cm.lk"; ll: "cm.ll"; lm: "cm.lm"; ln: "cm.ln"; lo: "cm.lo"; lp: "cm.lp"; lq: "cm.lq"; lr: "cm.lr"; ls: "cm.ls"; lt: "cm.lt"; lu: "cm.lu"; lv: "cm.lv"; lw: "cm.lw"; lx: "cm.lx"; ly: "cm.ly"; lz: "cm.lz"; ma: "cm.ma"; mb: "cm.mb"; mc: "cm.mc"; md: "cm.md"; me: "cm.me"; mf: "cm.mf"; mg: "cm.mg"; mh: "cm.mh"; mi: "cm.mi"; mj: "cm.mj"; mk: "cm.mk"; ml: "cm.ml"; mm: "cm.mm"; mn: "cm.mn"; mo: "cm.mo"; mp: "cm.mp"; mq: "cm.mq"; mr: "cm.mr"; ms: "cm.ms"; mt: "cm.mt"; mu: "cm.mu"; mv: "cm.mv"; mw: "cm.mw"; mx: "cm.mx"; my: "cm.my"; mz: "cm.mz"; na: "cm.na"; nb: "cm.nb"; nc: "cm.nc"; nd: "cm.nd"; ne: "cm.ne"; nf: "cm.nf"; ng: "cm.ng"; nh: "cm.nh"; ni: "cm.ni"; nj: "cm.nj"; nk: "cm.nk"; nl: "cm.nl"; nm: "cm.nm"; nn: "cm.nn"; no: "cm.no"; np: "cm.np"; nq: "cm.nq"; nr: "cm.nr"; ns: "cm.ns"; nt: "cm.nt"; nu: "cm.nu"; nv: "cm.nv"; nw: "cm.nw"; nx: "cm.nx"; ny: "cm.ny"; nz: "cm.nz"; oa: "cm.oa"; ob: "cm.ob"; oc: "cm.oc"; od: "cm.od"; oe: "cm.oe"; of: "cm.of"; og: "cm.og"; oh: "cm.oh"; oi: "cm.oi"; oj: "cm.oj"; ok: "cm.ok"; ol: "cm.ol"; om: "cm.om"; on: "cm.on"; oo: "cm.oo"; op: "cm.op"; oq: "cm.oq"; or: "cm.or"; os: "cm.os"; ot: "cm.ot"; ou: "cm.ou"; ov: "cm.ov"; ow: "cm.ow"; ox: "cm.ox"; oy: "cm.oy"; oz: "cm.oz"; pa: "cm.pa"; pb: "cm.pb"; pc: "cm.pc"; pd: "cm.pd"; pe: "cm.pe"; pf: "cm.pf"; pg: "cm.pg"; ph: "cm.ph"; pi: "cm.pi"; pj: "cm.pj"; pk: "cm.pk"; pl: "cm.pl"; pm: "cm.pm"; pn: "cm.pn"; po: "cm.po"; pp: "cm.pp"; pq: "cm.pq"; pr: "cm.pr"; ps: "cm.ps"; pt: "cm.pt"; pu: "cm.pu"; pv: "cm.pv"; pw: "cm.pw"; px: "cm.px"; py: "cm.py"; pz: "cm.pz"; qa: "cm.qa"; qb: "cm.qb"; qc: "cm.qc"; qd: "cm.qd"; qe: "cm.qe"; qf: "cm.qf"; qg: "cm.qg"; qh: "cm.qh"; qi: "cm.qi"; qj: "cm.qj"; qk: "cm.qk"; ql: "cm.ql"; qm: "cm.qm"; qn: "cm.qn"; qo: "cm.qo"; qp: "cm.qp"; qq: "cm.qq"; qr: "cm.qr"; qs: "cm.qs"; qt: "cm.qt"; qu: "cm.qu"; qv: "cm.qv"; qw: "cm.qw"; qx: "cm.qx"; qy: "cm.qy"; qz: "cm.qz"; ra: "cm.ra"; rb: "cm.rb"; rc: "cm.rc"; rd: "cm.rd"; re: "cm.re"; rf: "cm.rf"; rg: "cm.rg"; rh: "cm.rh"; ri: "cm.ri"; rj: "cm.rj"; rk: "cm.rk"; rl: "cm.rl"; rm: "cm.rm"; rn: "cm.rn"; ro: "cm.ro"; rp: "cm.rp"; rq: "cm.rq"; rr: "cm.rr"; rs: "cm.rs"; rt: "cm.rt"; ru: "cm.ru"; rv: "cm.rv"; rw: "cm.rw"; rx: "cm.rx"; ry: "cm.ry"; rz: "cm.rz"; sa: "cm.sa"; sb: "cm.sb"; sc: "cm.sc"; sd: "cm.sd"; se: "cm.se"; sf: "cm.sf"; sg: "cm.sg"; sh: "cm.sh"; si: "cm.si"; sj: "cm.sj"; sk: "cm.sk"; sl: "cm.sl"; sm: "cm.sm"; sn: "cm.sn"; so: "cm.so"; sp: "cm.sp"; sq: "cm.sq"; sr: "cm.sr"; ss: "cm.ss"; st: "cm.st"; su: "cm.su"; sv: "cm.sv"; sw: "cm.sw"; sx: "cm.sx"; sy: "cm.sy"; sz: "cm.sz"; ta: "cm.ta"; tb: "cm.tb"; tc: "cm.tc"; td: "cm.td"; te: "cm.te"; tf: "cm.tf"; tg: "cm.tg"; th: "cm.th"; ti: "cm.ti"; tj: "cm.tj"; tk: "cm.tk"; tl: "cm.tl"; tm: "cm.tm"; tn: "cm.tn"; to: "cm.to"; tp: "cm.tp"; tq: "cm.tq"; tr: "cm.tr"; ts: "cm.ts"; tt: "cm.tt"; tu: "cm.tu"; tv: "cm.tv"; tw: "cm.tw"; tx: "cm.tx"; ty: "cm.ty"; tz: "cm.tz"; ua: "cm.ua"; ub: "cm.ub"; uc: "cm.uc"; ud: "cm.ud"; ue: "cm.ue"; uf: "cm.uf"; ug: "cm.ug"; uh: "cm.uh"; ui: "cm.ui"; uj: "cm.uj"; uk: "cm.uk"; ul: "cm.ul"; um: "cm.um"; un: "cm.un"; uo: "cm.uo"; up: "cm.up"; uq: "cm.uq"; ur: "cm.ur"; us: "cm.us"; ut: "cm.ut"; uu: "cm.uu"; uv: "cm.uv"; uw: "cm.uw"; ux: "cm.ux"; uy: "cm.uy"; uz: "cm.uz"; va: "cm.va"; vb: "cm.vb"; vc: "cm.vc"; vd: "cm.vd"; ve: "cm.ve"; vf: "cm.vf"; vg: "cm.vg"; vh: "cm.vh"; vi: "cm.vi"; vj: "cm.vj"; vk: "cm.vk"; vl: "cm.vl"; vm: "cm.vm"; vn: "cm.vn"; vo: "cm.vo"; vp: "cm.vp"; vq: "cm.vq"; vr: "cm.vr"; vs: "cm.vs"; vt: "cm.vt"; vu: "cm.vu"; vv: "cm.vv"; vw: "cm.vw"; vx: "cm.vx"; vy: "cm.vy"; vz: "cm.vz"; wa: "cm.wa"; wb: "cm.wb"; wc: "cm.wc"; wd: "cm.wd"; we: "cm.we"; wf: "cm.wf"; wg: "cm.wg"; wh: "cm.wh"; wi: "cm.wi"; wj: "cm.wj"; wk: "cm.wk"; wl: "cm.wl"; wm: "cm.wm"; wn: "cm.wn"; wo: "cm.wo"; wp: "cm.wp"; wq: "cm.wq"; wr: "cm.wr"; ws: "cm.ws"; wt: "cm.wt"; wu: "cm.wu"; wv: "cm.wv"; ww: "cm.ww"; wx: "cm.wx"; wy: "cm.wy"; wz: "cm.wz"; xa: "cm.xa"; xb: "cm.xb"; xc: "cm.xc"; xd: "cm.xd"; xe: "cm.xe"; xf: "cm.xf"; xg: "cm.xg"; xh: "cm.xh"; xi: "cm.xi"; xj: "cm.xj"; xk: "cm.xk"; xl: "cm.xl"; xm: "cm.xm"; xn: "cm.xn"; xo: "cm.xo"; xp: "cm.xp"; xq: "cm.xq"; xr: "cm.xr"; xs: "cm.xs"; xt: "cm.xt"; xu: "cm.xu"; xv: "cm.xv"; xw: "cm.xw"; xx: "cm.xx"; xy: "cm.xy"; xz: "cm.xz"; ya: "cm.ya"; yb: "cm.yb"; yc: "cm.yc"; yd: "cm.yd"; ye: "cm.ye"; yf: "cm.yf"; yg: "cm.yg"; yh: "cm.yh"; yi: "cm.yi"; yj: "cm.yj"; yk: "cm.yk"; yl: "cm.yl"; ym: "cm.ym"; yn: "cm.yn"; yo: "cm.yo"; yp: "cm.yp"; yq: "cm.yq"; yr: "cm.yr"; ys: "cm.ys"; yt: "cm.yt"; yu: "cm.yu"; yv: "cm.yv"; yw: "cm.yw"; yx: "cm.yx"; yy: "cm.yy"; yz: "cm.yz"; za: "cm.za"; zb: "cm.zb"; zc: "cm.zc"; zd: "cm.zd"; ze: "cm.ze"; zf: "cm.zf"; zg: "cm.zg"; zh: "cm.zh"; zi: "cm.zi"; zj: "cm.zj"; zk: "cm.zk"; zl: "cm.zl"; zm: "cm.zm"; zn: "cm.zn"; zo: "cm.zo"; zp: "cm.zp"; zq: "cm.zq"; zr: "cm.zr"; zs: "cm.zs"; zt: "cm.zt"; zu: "cm.zu"; zv: "cm.zv"; zw: "cm.zw"; zx: "cm.zx"; zy: "cm.zy"; zz: "cm.zz"; }; cn: { aa: "cn.aa"; ab: "cn.ab"; ac: "cn.ac"; ad: "cn.ad"; ae: "cn.ae"; af: "cn.af"; ag: "cn.ag"; ah: "cn.ah"; ai: "cn.ai"; aj: "cn.aj"; ak: "cn.ak"; al: "cn.al"; am: "cn.am"; an: "cn.an"; ao: "cn.ao"; ap: "cn.ap"; aq: "cn.aq"; ar: "cn.ar"; as: "cn.as"; at: "cn.at"; au: "cn.au"; av: "cn.av"; aw: "cn.aw"; ax: "cn.ax"; ay: "cn.ay"; az: "cn.az"; ba: "cn.ba"; bb: "cn.bb"; bc: "cn.bc"; bd: "cn.bd"; be: "cn.be"; bf: "cn.bf"; bg: "cn.bg"; bh: "cn.bh"; bi: "cn.bi"; bj: "cn.bj"; bk: "cn.bk"; bl: "cn.bl"; bm: "cn.bm"; bn: "cn.bn"; bo: "cn.bo"; bp: "cn.bp"; bq: "cn.bq"; br: "cn.br"; bs: "cn.bs"; bt: "cn.bt"; bu: "cn.bu"; bv: "cn.bv"; bw: "cn.bw"; bx: "cn.bx"; by: "cn.by"; bz: "cn.bz"; ca: "cn.ca"; cb: "cn.cb"; cc: "cn.cc"; cd: "cn.cd"; ce: "cn.ce"; cf: "cn.cf"; cg: "cn.cg"; ch: "cn.ch"; ci: "cn.ci"; cj: "cn.cj"; ck: "cn.ck"; cl: "cn.cl"; cm: "cn.cm"; cn: "cn.cn"; co: "cn.co"; cp: "cn.cp"; cq: "cn.cq"; cr: "cn.cr"; cs: "cn.cs"; ct: "cn.ct"; cu: "cn.cu"; cv: "cn.cv"; cw: "cn.cw"; cx: "cn.cx"; cy: "cn.cy"; cz: "cn.cz"; da: "cn.da"; db: "cn.db"; dc: "cn.dc"; dd: "cn.dd"; de: "cn.de"; df: "cn.df"; dg: "cn.dg"; dh: "cn.dh"; di: "cn.di"; dj: "cn.dj"; dk: "cn.dk"; dl: "cn.dl"; dm: "cn.dm"; dn: "cn.dn"; do: "cn.do"; dp: "cn.dp"; dq: "cn.dq"; dr: "cn.dr"; ds: "cn.ds"; dt: "cn.dt"; du: "cn.du"; dv: "cn.dv"; dw: "cn.dw"; dx: "cn.dx"; dy: "cn.dy"; dz: "cn.dz"; ea: "cn.ea"; eb: "cn.eb"; ec: "cn.ec"; ed: "cn.ed"; ee: "cn.ee"; ef: "cn.ef"; eg: "cn.eg"; eh: "cn.eh"; ei: "cn.ei"; ej: "cn.ej"; ek: "cn.ek"; el: "cn.el"; em: "cn.em"; en: "cn.en"; eo: "cn.eo"; ep: "cn.ep"; eq: "cn.eq"; er: "cn.er"; es: "cn.es"; et: "cn.et"; eu: "cn.eu"; ev: "cn.ev"; ew: "cn.ew"; ex: "cn.ex"; ey: "cn.ey"; ez: "cn.ez"; fa: "cn.fa"; fb: "cn.fb"; fc: "cn.fc"; fd: "cn.fd"; fe: "cn.fe"; ff: "cn.ff"; fg: "cn.fg"; fh: "cn.fh"; fi: "cn.fi"; fj: "cn.fj"; fk: "cn.fk"; fl: "cn.fl"; fm: "cn.fm"; fn: "cn.fn"; fo: "cn.fo"; fp: "cn.fp"; fq: "cn.fq"; fr: "cn.fr"; fs: "cn.fs"; ft: "cn.ft"; fu: "cn.fu"; fv: "cn.fv"; fw: "cn.fw"; fx: "cn.fx"; fy: "cn.fy"; fz: "cn.fz"; ga: "cn.ga"; gb: "cn.gb"; gc: "cn.gc"; gd: "cn.gd"; ge: "cn.ge"; gf: "cn.gf"; gg: "cn.gg"; gh: "cn.gh"; gi: "cn.gi"; gj: "cn.gj"; gk: "cn.gk"; gl: "cn.gl"; gm: "cn.gm"; gn: "cn.gn"; go: "cn.go"; gp: "cn.gp"; gq: "cn.gq"; gr: "cn.gr"; gs: "cn.gs"; gt: "cn.gt"; gu: "cn.gu"; gv: "cn.gv"; gw: "cn.gw"; gx: "cn.gx"; gy: "cn.gy"; gz: "cn.gz"; ha: "cn.ha"; hb: "cn.hb"; hc: "cn.hc"; hd: "cn.hd"; he: "cn.he"; hf: "cn.hf"; hg: "cn.hg"; hh: "cn.hh"; hi: "cn.hi"; hj: "cn.hj"; hk: "cn.hk"; hl: "cn.hl"; hm: "cn.hm"; hn: "cn.hn"; ho: "cn.ho"; hp: "cn.hp"; hq: "cn.hq"; hr: "cn.hr"; hs: "cn.hs"; ht: "cn.ht"; hu: "cn.hu"; hv: "cn.hv"; hw: "cn.hw"; hx: "cn.hx"; hy: "cn.hy"; hz: "cn.hz"; ia: "cn.ia"; ib: "cn.ib"; ic: "cn.ic"; id: "cn.id"; ie: "cn.ie"; if: "cn.if"; ig: "cn.ig"; ih: "cn.ih"; ii: "cn.ii"; ij: "cn.ij"; ik: "cn.ik"; il: "cn.il"; im: "cn.im"; in: "cn.in"; io: "cn.io"; ip: "cn.ip"; iq: "cn.iq"; ir: "cn.ir"; is: "cn.is"; it: "cn.it"; iu: "cn.iu"; iv: "cn.iv"; iw: "cn.iw"; ix: "cn.ix"; iy: "cn.iy"; iz: "cn.iz"; ja: "cn.ja"; jb: "cn.jb"; jc: "cn.jc"; jd: "cn.jd"; je: "cn.je"; jf: "cn.jf"; jg: "cn.jg"; jh: "cn.jh"; ji: "cn.ji"; jj: "cn.jj"; jk: "cn.jk"; jl: "cn.jl"; jm: "cn.jm"; jn: "cn.jn"; jo: "cn.jo"; jp: "cn.jp"; jq: "cn.jq"; jr: "cn.jr"; js: "cn.js"; jt: "cn.jt"; ju: "cn.ju"; jv: "cn.jv"; jw: "cn.jw"; jx: "cn.jx"; jy: "cn.jy"; jz: "cn.jz"; ka: "cn.ka"; kb: "cn.kb"; kc: "cn.kc"; kd: "cn.kd"; ke: "cn.ke"; kf: "cn.kf"; kg: "cn.kg"; kh: "cn.kh"; ki: "cn.ki"; kj: "cn.kj"; kk: "cn.kk"; kl: "cn.kl"; km: "cn.km"; kn: "cn.kn"; ko: "cn.ko"; kp: "cn.kp"; kq: "cn.kq"; kr: "cn.kr"; ks: "cn.ks"; kt: "cn.kt"; ku: "cn.ku"; kv: "cn.kv"; kw: "cn.kw"; kx: "cn.kx"; ky: "cn.ky"; kz: "cn.kz"; la: "cn.la"; lb: "cn.lb"; lc: "cn.lc"; ld: "cn.ld"; le: "cn.le"; lf: "cn.lf"; lg: "cn.lg"; lh: "cn.lh"; li: "cn.li"; lj: "cn.lj"; lk: "cn.lk"; ll: "cn.ll"; lm: "cn.lm"; ln: "cn.ln"; lo: "cn.lo"; lp: "cn.lp"; lq: "cn.lq"; lr: "cn.lr"; ls: "cn.ls"; lt: "cn.lt"; lu: "cn.lu"; lv: "cn.lv"; lw: "cn.lw"; lx: "cn.lx"; ly: "cn.ly"; lz: "cn.lz"; ma: "cn.ma"; mb: "cn.mb"; mc: "cn.mc"; md: "cn.md"; me: "cn.me"; mf: "cn.mf"; mg: "cn.mg"; mh: "cn.mh"; mi: "cn.mi"; mj: "cn.mj"; mk: "cn.mk"; ml: "cn.ml"; mm: "cn.mm"; mn: "cn.mn"; mo: "cn.mo"; mp: "cn.mp"; mq: "cn.mq"; mr: "cn.mr"; ms: "cn.ms"; mt: "cn.mt"; mu: "cn.mu"; mv: "cn.mv"; mw: "cn.mw"; mx: "cn.mx"; my: "cn.my"; mz: "cn.mz"; na: "cn.na"; nb: "cn.nb"; nc: "cn.nc"; nd: "cn.nd"; ne: "cn.ne"; nf: "cn.nf"; ng: "cn.ng"; nh: "cn.nh"; ni: "cn.ni"; nj: "cn.nj"; nk: "cn.nk"; nl: "cn.nl"; nm: "cn.nm"; nn: "cn.nn"; no: "cn.no"; np: "cn.np"; nq: "cn.nq"; nr: "cn.nr"; ns: "cn.ns"; nt: "cn.nt"; nu: "cn.nu"; nv: "cn.nv"; nw: "cn.nw"; nx: "cn.nx"; ny: "cn.ny"; nz: "cn.nz"; oa: "cn.oa"; ob: "cn.ob"; oc: "cn.oc"; od: "cn.od"; oe: "cn.oe"; of: "cn.of"; og: "cn.og"; oh: "cn.oh"; oi: "cn.oi"; oj: "cn.oj"; ok: "cn.ok"; ol: "cn.ol"; om: "cn.om"; on: "cn.on"; oo: "cn.oo"; op: "cn.op"; oq: "cn.oq"; or: "cn.or"; os: "cn.os"; ot: "cn.ot"; ou: "cn.ou"; ov: "cn.ov"; ow: "cn.ow"; ox: "cn.ox"; oy: "cn.oy"; oz: "cn.oz"; pa: "cn.pa"; pb: "cn.pb"; pc: "cn.pc"; pd: "cn.pd"; pe: "cn.pe"; pf: "cn.pf"; pg: "cn.pg"; ph: "cn.ph"; pi: "cn.pi"; pj: "cn.pj"; pk: "cn.pk"; pl: "cn.pl"; pm: "cn.pm"; pn: "cn.pn"; po: "cn.po"; pp: "cn.pp"; pq: "cn.pq"; pr: "cn.pr"; ps: "cn.ps"; pt: "cn.pt"; pu: "cn.pu"; pv: "cn.pv"; pw: "cn.pw"; px: "cn.px"; py: "cn.py"; pz: "cn.pz"; qa: "cn.qa"; qb: "cn.qb"; qc: "cn.qc"; qd: "cn.qd"; qe: "cn.qe"; qf: "cn.qf"; qg: "cn.qg"; qh: "cn.qh"; qi: "cn.qi"; qj: "cn.qj"; qk: "cn.qk"; ql: "cn.ql"; qm: "cn.qm"; qn: "cn.qn"; qo: "cn.qo"; qp: "cn.qp"; qq: "cn.qq"; qr: "cn.qr"; qs: "cn.qs"; qt: "cn.qt"; qu: "cn.qu"; qv: "cn.qv"; qw: "cn.qw"; qx: "cn.qx"; qy: "cn.qy"; qz: "cn.qz"; ra: "cn.ra"; rb: "cn.rb"; rc: "cn.rc"; rd: "cn.rd"; re: "cn.re"; rf: "cn.rf"; rg: "cn.rg"; rh: "cn.rh"; ri: "cn.ri"; rj: "cn.rj"; rk: "cn.rk"; rl: "cn.rl"; rm: "cn.rm"; rn: "cn.rn"; ro: "cn.ro"; rp: "cn.rp"; rq: "cn.rq"; rr: "cn.rr"; rs: "cn.rs"; rt: "cn.rt"; ru: "cn.ru"; rv: "cn.rv"; rw: "cn.rw"; rx: "cn.rx"; ry: "cn.ry"; rz: "cn.rz"; sa: "cn.sa"; sb: "cn.sb"; sc: "cn.sc"; sd: "cn.sd"; se: "cn.se"; sf: "cn.sf"; sg: "cn.sg"; sh: "cn.sh"; si: "cn.si"; sj: "cn.sj"; sk: "cn.sk"; sl: "cn.sl"; sm: "cn.sm"; sn: "cn.sn"; so: "cn.so"; sp: "cn.sp"; sq: "cn.sq"; sr: "cn.sr"; ss: "cn.ss"; st: "cn.st"; su: "cn.su"; sv: "cn.sv"; sw: "cn.sw"; sx: "cn.sx"; sy: "cn.sy"; sz: "cn.sz"; ta: "cn.ta"; tb: "cn.tb"; tc: "cn.tc"; td: "cn.td"; te: "cn.te"; tf: "cn.tf"; tg: "cn.tg"; th: "cn.th"; ti: "cn.ti"; tj: "cn.tj"; tk: "cn.tk"; tl: "cn.tl"; tm: "cn.tm"; tn: "cn.tn"; to: "cn.to"; tp: "cn.tp"; tq: "cn.tq"; tr: "cn.tr"; ts: "cn.ts"; tt: "cn.tt"; tu: "cn.tu"; tv: "cn.tv"; tw: "cn.tw"; tx: "cn.tx"; ty: "cn.ty"; tz: "cn.tz"; ua: "cn.ua"; ub: "cn.ub"; uc: "cn.uc"; ud: "cn.ud"; ue: "cn.ue"; uf: "cn.uf"; ug: "cn.ug"; uh: "cn.uh"; ui: "cn.ui"; uj: "cn.uj"; uk: "cn.uk"; ul: "cn.ul"; um: "cn.um"; un: "cn.un"; uo: "cn.uo"; up: "cn.up"; uq: "cn.uq"; ur: "cn.ur"; us: "cn.us"; ut: "cn.ut"; uu: "cn.uu"; uv: "cn.uv"; uw: "cn.uw"; ux: "cn.ux"; uy: "cn.uy"; uz: "cn.uz"; va: "cn.va"; vb: "cn.vb"; vc: "cn.vc"; vd: "cn.vd"; ve: "cn.ve"; vf: "cn.vf"; vg: "cn.vg"; vh: "cn.vh"; vi: "cn.vi"; vj: "cn.vj"; vk: "cn.vk"; vl: "cn.vl"; vm: "cn.vm"; vn: "cn.vn"; vo: "cn.vo"; vp: "cn.vp"; vq: "cn.vq"; vr: "cn.vr"; vs: "cn.vs"; vt: "cn.vt"; vu: "cn.vu"; vv: "cn.vv"; vw: "cn.vw"; vx: "cn.vx"; vy: "cn.vy"; vz: "cn.vz"; wa: "cn.wa"; wb: "cn.wb"; wc: "cn.wc"; wd: "cn.wd"; we: "cn.we"; wf: "cn.wf"; wg: "cn.wg"; wh: "cn.wh"; wi: "cn.wi"; wj: "cn.wj"; wk: "cn.wk"; wl: "cn.wl"; wm: "cn.wm"; wn: "cn.wn"; wo: "cn.wo"; wp: "cn.wp"; wq: "cn.wq"; wr: "cn.wr"; ws: "cn.ws"; wt: "cn.wt"; wu: "cn.wu"; wv: "cn.wv"; ww: "cn.ww"; wx: "cn.wx"; wy: "cn.wy"; wz: "cn.wz"; xa: "cn.xa"; xb: "cn.xb"; xc: "cn.xc"; xd: "cn.xd"; xe: "cn.xe"; xf: "cn.xf"; xg: "cn.xg"; xh: "cn.xh"; xi: "cn.xi"; xj: "cn.xj"; xk: "cn.xk"; xl: "cn.xl"; xm: "cn.xm"; xn: "cn.xn"; xo: "cn.xo"; xp: "cn.xp"; xq: "cn.xq"; xr: "cn.xr"; xs: "cn.xs"; xt: "cn.xt"; xu: "cn.xu"; xv: "cn.xv"; xw: "cn.xw"; xx: "cn.xx"; xy: "cn.xy"; xz: "cn.xz"; ya: "cn.ya"; yb: "cn.yb"; yc: "cn.yc"; yd: "cn.yd"; ye: "cn.ye"; yf: "cn.yf"; yg: "cn.yg"; yh: "cn.yh"; yi: "cn.yi"; yj: "cn.yj"; yk: "cn.yk"; yl: "cn.yl"; ym: "cn.ym"; yn: "cn.yn"; yo: "cn.yo"; yp: "cn.yp"; yq: "cn.yq"; yr: "cn.yr"; ys: "cn.ys"; yt: "cn.yt"; yu: "cn.yu"; yv: "cn.yv"; yw: "cn.yw"; yx: "cn.yx"; yy: "cn.yy"; yz: "cn.yz"; za: "cn.za"; zb: "cn.zb"; zc: "cn.zc"; zd: "cn.zd"; ze: "cn.ze"; zf: "cn.zf"; zg: "cn.zg"; zh: "cn.zh"; zi: "cn.zi"; zj: "cn.zj"; zk: "cn.zk"; zl: "cn.zl"; zm: "cn.zm"; zn: "cn.zn"; zo: "cn.zo"; zp: "cn.zp"; zq: "cn.zq"; zr: "cn.zr"; zs: "cn.zs"; zt: "cn.zt"; zu: "cn.zu"; zv: "cn.zv"; zw: "cn.zw"; zx: "cn.zx"; zy: "cn.zy"; zz: "cn.zz"; }; co: { aa: "co.aa"; ab: "co.ab"; ac: "co.ac"; ad: "co.ad"; ae: "co.ae"; af: "co.af"; ag: "co.ag"; ah: "co.ah"; ai: "co.ai"; aj: "co.aj"; ak: "co.ak"; al: "co.al"; am: "co.am"; an: "co.an"; ao: "co.ao"; ap: "co.ap"; aq: "co.aq"; ar: "co.ar"; as: "co.as"; at: "co.at"; au: "co.au"; av: "co.av"; aw: "co.aw"; ax: "co.ax"; ay: "co.ay"; az: "co.az"; ba: "co.ba"; bb: "co.bb"; bc: "co.bc"; bd: "co.bd"; be: "co.be"; bf: "co.bf"; bg: "co.bg"; bh: "co.bh"; bi: "co.bi"; bj: "co.bj"; bk: "co.bk"; bl: "co.bl"; bm: "co.bm"; bn: "co.bn"; bo: "co.bo"; bp: "co.bp"; bq: "co.bq"; br: "co.br"; bs: "co.bs"; bt: "co.bt"; bu: "co.bu"; bv: "co.bv"; bw: "co.bw"; bx: "co.bx"; by: "co.by"; bz: "co.bz"; ca: "co.ca"; cb: "co.cb"; cc: "co.cc"; cd: "co.cd"; ce: "co.ce"; cf: "co.cf"; cg: "co.cg"; ch: "co.ch"; ci: "co.ci"; cj: "co.cj"; ck: "co.ck"; cl: "co.cl"; cm: "co.cm"; cn: "co.cn"; co: "co.co"; cp: "co.cp"; cq: "co.cq"; cr: "co.cr"; cs: "co.cs"; ct: "co.ct"; cu: "co.cu"; cv: "co.cv"; cw: "co.cw"; cx: "co.cx"; cy: "co.cy"; cz: "co.cz"; da: "co.da"; db: "co.db"; dc: "co.dc"; dd: "co.dd"; de: "co.de"; df: "co.df"; dg: "co.dg"; dh: "co.dh"; di: "co.di"; dj: "co.dj"; dk: "co.dk"; dl: "co.dl"; dm: "co.dm"; dn: "co.dn"; do: "co.do"; dp: "co.dp"; dq: "co.dq"; dr: "co.dr"; ds: "co.ds"; dt: "co.dt"; du: "co.du"; dv: "co.dv"; dw: "co.dw"; dx: "co.dx"; dy: "co.dy"; dz: "co.dz"; ea: "co.ea"; eb: "co.eb"; ec: "co.ec"; ed: "co.ed"; ee: "co.ee"; ef: "co.ef"; eg: "co.eg"; eh: "co.eh"; ei: "co.ei"; ej: "co.ej"; ek: "co.ek"; el: "co.el"; em: "co.em"; en: "co.en"; eo: "co.eo"; ep: "co.ep"; eq: "co.eq"; er: "co.er"; es: "co.es"; et: "co.et"; eu: "co.eu"; ev: "co.ev"; ew: "co.ew"; ex: "co.ex"; ey: "co.ey"; ez: "co.ez"; fa: "co.fa"; fb: "co.fb"; fc: "co.fc"; fd: "co.fd"; fe: "co.fe"; ff: "co.ff"; fg: "co.fg"; fh: "co.fh"; fi: "co.fi"; fj: "co.fj"; fk: "co.fk"; fl: "co.fl"; fm: "co.fm"; fn: "co.fn"; fo: "co.fo"; fp: "co.fp"; fq: "co.fq"; fr: "co.fr"; fs: "co.fs"; ft: "co.ft"; fu: "co.fu"; fv: "co.fv"; fw: "co.fw"; fx: "co.fx"; fy: "co.fy"; fz: "co.fz"; ga: "co.ga"; gb: "co.gb"; gc: "co.gc"; gd: "co.gd"; ge: "co.ge"; gf: "co.gf"; gg: "co.gg"; gh: "co.gh"; gi: "co.gi"; gj: "co.gj"; gk: "co.gk"; gl: "co.gl"; gm: "co.gm"; gn: "co.gn"; go: "co.go"; gp: "co.gp"; gq: "co.gq"; gr: "co.gr"; gs: "co.gs"; gt: "co.gt"; gu: "co.gu"; gv: "co.gv"; gw: "co.gw"; gx: "co.gx"; gy: "co.gy"; gz: "co.gz"; ha: "co.ha"; hb: "co.hb"; hc: "co.hc"; hd: "co.hd"; he: "co.he"; hf: "co.hf"; hg: "co.hg"; hh: "co.hh"; hi: "co.hi"; hj: "co.hj"; hk: "co.hk"; hl: "co.hl"; hm: "co.hm"; hn: "co.hn"; ho: "co.ho"; hp: "co.hp"; hq: "co.hq"; hr: "co.hr"; hs: "co.hs"; ht: "co.ht"; hu: "co.hu"; hv: "co.hv"; hw: "co.hw"; hx: "co.hx"; hy: "co.hy"; hz: "co.hz"; ia: "co.ia"; ib: "co.ib"; ic: "co.ic"; id: "co.id"; ie: "co.ie"; if: "co.if"; ig: "co.ig"; ih: "co.ih"; ii: "co.ii"; ij: "co.ij"; ik: "co.ik"; il: "co.il"; im: "co.im"; in: "co.in"; io: "co.io"; ip: "co.ip"; iq: "co.iq"; ir: "co.ir"; is: "co.is"; it: "co.it"; iu: "co.iu"; iv: "co.iv"; iw: "co.iw"; ix: "co.ix"; iy: "co.iy"; iz: "co.iz"; ja: "co.ja"; jb: "co.jb"; jc: "co.jc"; jd: "co.jd"; je: "co.je"; jf: "co.jf"; jg: "co.jg"; jh: "co.jh"; ji: "co.ji"; jj: "co.jj"; jk: "co.jk"; jl: "co.jl"; jm: "co.jm"; jn: "co.jn"; jo: "co.jo"; jp: "co.jp"; jq: "co.jq"; jr: "co.jr"; js: "co.js"; jt: "co.jt"; ju: "co.ju"; jv: "co.jv"; jw: "co.jw"; jx: "co.jx"; jy: "co.jy"; jz: "co.jz"; ka: "co.ka"; kb: "co.kb"; kc: "co.kc"; kd: "co.kd"; ke: "co.ke"; kf: "co.kf"; kg: "co.kg"; kh: "co.kh"; ki: "co.ki"; kj: "co.kj"; kk: "co.kk"; kl: "co.kl"; km: "co.km"; kn: "co.kn"; ko: "co.ko"; kp: "co.kp"; kq: "co.kq"; kr: "co.kr"; ks: "co.ks"; kt: "co.kt"; ku: "co.ku"; kv: "co.kv"; kw: "co.kw"; kx: "co.kx"; ky: "co.ky"; kz: "co.kz"; la: "co.la"; lb: "co.lb"; lc: "co.lc"; ld: "co.ld"; le: "co.le"; lf: "co.lf"; lg: "co.lg"; lh: "co.lh"; li: "co.li"; lj: "co.lj"; lk: "co.lk"; ll: "co.ll"; lm: "co.lm"; ln: "co.ln"; lo: "co.lo"; lp: "co.lp"; lq: "co.lq"; lr: "co.lr"; ls: "co.ls"; lt: "co.lt"; lu: "co.lu"; lv: "co.lv"; lw: "co.lw"; lx: "co.lx"; ly: "co.ly"; lz: "co.lz"; ma: "co.ma"; mb: "co.mb"; mc: "co.mc"; md: "co.md"; me: "co.me"; mf: "co.mf"; mg: "co.mg"; mh: "co.mh"; mi: "co.mi"; mj: "co.mj"; mk: "co.mk"; ml: "co.ml"; mm: "co.mm"; mn: "co.mn"; mo: "co.mo"; mp: "co.mp"; mq: "co.mq"; mr: "co.mr"; ms: "co.ms"; mt: "co.mt"; mu: "co.mu"; mv: "co.mv"; mw: "co.mw"; mx: "co.mx"; my: "co.my"; mz: "co.mz"; na: "co.na"; nb: "co.nb"; nc: "co.nc"; nd: "co.nd"; ne: "co.ne"; nf: "co.nf"; ng: "co.ng"; nh: "co.nh"; ni: "co.ni"; nj: "co.nj"; nk: "co.nk"; nl: "co.nl"; nm: "co.nm"; nn: "co.nn"; no: "co.no"; np: "co.np"; nq: "co.nq"; nr: "co.nr"; ns: "co.ns"; nt: "co.nt"; nu: "co.nu"; nv: "co.nv"; nw: "co.nw"; nx: "co.nx"; ny: "co.ny"; nz: "co.nz"; oa: "co.oa"; ob: "co.ob"; oc: "co.oc"; od: "co.od"; oe: "co.oe"; of: "co.of"; og: "co.og"; oh: "co.oh"; oi: "co.oi"; oj: "co.oj"; ok: "co.ok"; ol: "co.ol"; om: "co.om"; on: "co.on"; oo: "co.oo"; op: "co.op"; oq: "co.oq"; or: "co.or"; os: "co.os"; ot: "co.ot"; ou: "co.ou"; ov: "co.ov"; ow: "co.ow"; ox: "co.ox"; oy: "co.oy"; oz: "co.oz"; pa: "co.pa"; pb: "co.pb"; pc: "co.pc"; pd: "co.pd"; pe: "co.pe"; pf: "co.pf"; pg: "co.pg"; ph: "co.ph"; pi: "co.pi"; pj: "co.pj"; pk: "co.pk"; pl: "co.pl"; pm: "co.pm"; pn: "co.pn"; po: "co.po"; pp: "co.pp"; pq: "co.pq"; pr: "co.pr"; ps: "co.ps"; pt: "co.pt"; pu: "co.pu"; pv: "co.pv"; pw: "co.pw"; px: "co.px"; py: "co.py"; pz: "co.pz"; qa: "co.qa"; qb: "co.qb"; qc: "co.qc"; qd: "co.qd"; qe: "co.qe"; qf: "co.qf"; qg: "co.qg"; qh: "co.qh"; qi: "co.qi"; qj: "co.qj"; qk: "co.qk"; ql: "co.ql"; qm: "co.qm"; qn: "co.qn"; qo: "co.qo"; qp: "co.qp"; qq: "co.qq"; qr: "co.qr"; qs: "co.qs"; qt: "co.qt"; qu: "co.qu"; qv: "co.qv"; qw: "co.qw"; qx: "co.qx"; qy: "co.qy"; qz: "co.qz"; ra: "co.ra"; rb: "co.rb"; rc: "co.rc"; rd: "co.rd"; re: "co.re"; rf: "co.rf"; rg: "co.rg"; rh: "co.rh"; ri: "co.ri"; rj: "co.rj"; rk: "co.rk"; rl: "co.rl"; rm: "co.rm"; rn: "co.rn"; ro: "co.ro"; rp: "co.rp"; rq: "co.rq"; rr: "co.rr"; rs: "co.rs"; rt: "co.rt"; ru: "co.ru"; rv: "co.rv"; rw: "co.rw"; rx: "co.rx"; ry: "co.ry"; rz: "co.rz"; sa: "co.sa"; sb: "co.sb"; sc: "co.sc"; sd: "co.sd"; se: "co.se"; sf: "co.sf"; sg: "co.sg"; sh: "co.sh"; si: "co.si"; sj: "co.sj"; sk: "co.sk"; sl: "co.sl"; sm: "co.sm"; sn: "co.sn"; so: "co.so"; sp: "co.sp"; sq: "co.sq"; sr: "co.sr"; ss: "co.ss"; st: "co.st"; su: "co.su"; sv: "co.sv"; sw: "co.sw"; sx: "co.sx"; sy: "co.sy"; sz: "co.sz"; ta: "co.ta"; tb: "co.tb"; tc: "co.tc"; td: "co.td"; te: "co.te"; tf: "co.tf"; tg: "co.tg"; th: "co.th"; ti: "co.ti"; tj: "co.tj"; tk: "co.tk"; tl: "co.tl"; tm: "co.tm"; tn: "co.tn"; to: "co.to"; tp: "co.tp"; tq: "co.tq"; tr: "co.tr"; ts: "co.ts"; tt: "co.tt"; tu: "co.tu"; tv: "co.tv"; tw: "co.tw"; tx: "co.tx"; ty: "co.ty"; tz: "co.tz"; ua: "co.ua"; ub: "co.ub"; uc: "co.uc"; ud: "co.ud"; ue: "co.ue"; uf: "co.uf"; ug: "co.ug"; uh: "co.uh"; ui: "co.ui"; uj: "co.uj"; uk: "co.uk"; ul: "co.ul"; um: "co.um"; un: "co.un"; uo: "co.uo"; up: "co.up"; uq: "co.uq"; ur: "co.ur"; us: "co.us"; ut: "co.ut"; uu: "co.uu"; uv: "co.uv"; uw: "co.uw"; ux: "co.ux"; uy: "co.uy"; uz: "co.uz"; va: "co.va"; vb: "co.vb"; vc: "co.vc"; vd: "co.vd"; ve: "co.ve"; vf: "co.vf"; vg: "co.vg"; vh: "co.vh"; vi: "co.vi"; vj: "co.vj"; vk: "co.vk"; vl: "co.vl"; vm: "co.vm"; vn: "co.vn"; vo: "co.vo"; vp: "co.vp"; vq: "co.vq"; vr: "co.vr"; vs: "co.vs"; vt: "co.vt"; vu: "co.vu"; vv: "co.vv"; vw: "co.vw"; vx: "co.vx"; vy: "co.vy"; vz: "co.vz"; wa: "co.wa"; wb: "co.wb"; wc: "co.wc"; wd: "co.wd"; we: "co.we"; wf: "co.wf"; wg: "co.wg"; wh: "co.wh"; wi: "co.wi"; wj: "co.wj"; wk: "co.wk"; wl: "co.wl"; wm: "co.wm"; wn: "co.wn"; wo: "co.wo"; wp: "co.wp"; wq: "co.wq"; wr: "co.wr"; ws: "co.ws"; wt: "co.wt"; wu: "co.wu"; wv: "co.wv"; ww: "co.ww"; wx: "co.wx"; wy: "co.wy"; wz: "co.wz"; xa: "co.xa"; xb: "co.xb"; xc: "co.xc"; xd: "co.xd"; xe: "co.xe"; xf: "co.xf"; xg: "co.xg"; xh: "co.xh"; xi: "co.xi"; xj: "co.xj"; xk: "co.xk"; xl: "co.xl"; xm: "co.xm"; xn: "co.xn"; xo: "co.xo"; xp: "co.xp"; xq: "co.xq"; xr: "co.xr"; xs: "co.xs"; xt: "co.xt"; xu: "co.xu"; xv: "co.xv"; xw: "co.xw"; xx: "co.xx"; xy: "co.xy"; xz: "co.xz"; ya: "co.ya"; yb: "co.yb"; yc: "co.yc"; yd: "co.yd"; ye: "co.ye"; yf: "co.yf"; yg: "co.yg"; yh: "co.yh"; yi: "co.yi"; yj: "co.yj"; yk: "co.yk"; yl: "co.yl"; ym: "co.ym"; yn: "co.yn"; yo: "co.yo"; yp: "co.yp"; yq: "co.yq"; yr: "co.yr"; ys: "co.ys"; yt: "co.yt"; yu: "co.yu"; yv: "co.yv"; yw: "co.yw"; yx: "co.yx"; yy: "co.yy"; yz: "co.yz"; za: "co.za"; zb: "co.zb"; zc: "co.zc"; zd: "co.zd"; ze: "co.ze"; zf: "co.zf"; zg: "co.zg"; zh: "co.zh"; zi: "co.zi"; zj: "co.zj"; zk: "co.zk"; zl: "co.zl"; zm: "co.zm"; zn: "co.zn"; zo: "co.zo"; zp: "co.zp"; zq: "co.zq"; zr: "co.zr"; zs: "co.zs"; zt: "co.zt"; zu: "co.zu"; zv: "co.zv"; zw: "co.zw"; zx: "co.zx"; zy: "co.zy"; zz: "co.zz"; }; cp: { aa: "cp.aa"; ab: "cp.ab"; ac: "cp.ac"; ad: "cp.ad"; ae: "cp.ae"; af: "cp.af"; ag: "cp.ag"; ah: "cp.ah"; ai: "cp.ai"; aj: "cp.aj"; ak: "cp.ak"; al: "cp.al"; am: "cp.am"; an: "cp.an"; ao: "cp.ao"; ap: "cp.ap"; aq: "cp.aq"; ar: "cp.ar"; as: "cp.as"; at: "cp.at"; au: "cp.au"; av: "cp.av"; aw: "cp.aw"; ax: "cp.ax"; ay: "cp.ay"; az: "cp.az"; ba: "cp.ba"; bb: "cp.bb"; bc: "cp.bc"; bd: "cp.bd"; be: "cp.be"; bf: "cp.bf"; bg: "cp.bg"; bh: "cp.bh"; bi: "cp.bi"; bj: "cp.bj"; bk: "cp.bk"; bl: "cp.bl"; bm: "cp.bm"; bn: "cp.bn"; bo: "cp.bo"; bp: "cp.bp"; bq: "cp.bq"; br: "cp.br"; bs: "cp.bs"; bt: "cp.bt"; bu: "cp.bu"; bv: "cp.bv"; bw: "cp.bw"; bx: "cp.bx"; by: "cp.by"; bz: "cp.bz"; ca: "cp.ca"; cb: "cp.cb"; cc: "cp.cc"; cd: "cp.cd"; ce: "cp.ce"; cf: "cp.cf"; cg: "cp.cg"; ch: "cp.ch"; ci: "cp.ci"; cj: "cp.cj"; ck: "cp.ck"; cl: "cp.cl"; cm: "cp.cm"; cn: "cp.cn"; co: "cp.co"; cp: "cp.cp"; cq: "cp.cq"; cr: "cp.cr"; cs: "cp.cs"; ct: "cp.ct"; cu: "cp.cu"; cv: "cp.cv"; cw: "cp.cw"; cx: "cp.cx"; cy: "cp.cy"; cz: "cp.cz"; da: "cp.da"; db: "cp.db"; dc: "cp.dc"; dd: "cp.dd"; de: "cp.de"; df: "cp.df"; dg: "cp.dg"; dh: "cp.dh"; di: "cp.di"; dj: "cp.dj"; dk: "cp.dk"; dl: "cp.dl"; dm: "cp.dm"; dn: "cp.dn"; do: "cp.do"; dp: "cp.dp"; dq: "cp.dq"; dr: "cp.dr"; ds: "cp.ds"; dt: "cp.dt"; du: "cp.du"; dv: "cp.dv"; dw: "cp.dw"; dx: "cp.dx"; dy: "cp.dy"; dz: "cp.dz"; ea: "cp.ea"; eb: "cp.eb"; ec: "cp.ec"; ed: "cp.ed"; ee: "cp.ee"; ef: "cp.ef"; eg: "cp.eg"; eh: "cp.eh"; ei: "cp.ei"; ej: "cp.ej"; ek: "cp.ek"; el: "cp.el"; em: "cp.em"; en: "cp.en"; eo: "cp.eo"; ep: "cp.ep"; eq: "cp.eq"; er: "cp.er"; es: "cp.es"; et: "cp.et"; eu: "cp.eu"; ev: "cp.ev"; ew: "cp.ew"; ex: "cp.ex"; ey: "cp.ey"; ez: "cp.ez"; fa: "cp.fa"; fb: "cp.fb"; fc: "cp.fc"; fd: "cp.fd"; fe: "cp.fe"; ff: "cp.ff"; fg: "cp.fg"; fh: "cp.fh"; fi: "cp.fi"; fj: "cp.fj"; fk: "cp.fk"; fl: "cp.fl"; fm: "cp.fm"; fn: "cp.fn"; fo: "cp.fo"; fp: "cp.fp"; fq: "cp.fq"; fr: "cp.fr"; fs: "cp.fs"; ft: "cp.ft"; fu: "cp.fu"; fv: "cp.fv"; fw: "cp.fw"; fx: "cp.fx"; fy: "cp.fy"; fz: "cp.fz"; ga: "cp.ga"; gb: "cp.gb"; gc: "cp.gc"; gd: "cp.gd"; ge: "cp.ge"; gf: "cp.gf"; gg: "cp.gg"; gh: "cp.gh"; gi: "cp.gi"; gj: "cp.gj"; gk: "cp.gk"; gl: "cp.gl"; gm: "cp.gm"; gn: "cp.gn"; go: "cp.go"; gp: "cp.gp"; gq: "cp.gq"; gr: "cp.gr"; gs: "cp.gs"; gt: "cp.gt"; gu: "cp.gu"; gv: "cp.gv"; gw: "cp.gw"; gx: "cp.gx"; gy: "cp.gy"; gz: "cp.gz"; ha: "cp.ha"; hb: "cp.hb"; hc: "cp.hc"; hd: "cp.hd"; he: "cp.he"; hf: "cp.hf"; hg: "cp.hg"; hh: "cp.hh"; hi: "cp.hi"; hj: "cp.hj"; hk: "cp.hk"; hl: "cp.hl"; hm: "cp.hm"; hn: "cp.hn"; ho: "cp.ho"; hp: "cp.hp"; hq: "cp.hq"; hr: "cp.hr"; hs: "cp.hs"; ht: "cp.ht"; hu: "cp.hu"; hv: "cp.hv"; hw: "cp.hw"; hx: "cp.hx"; hy: "cp.hy"; hz: "cp.hz"; ia: "cp.ia"; ib: "cp.ib"; ic: "cp.ic"; id: "cp.id"; ie: "cp.ie"; if: "cp.if"; ig: "cp.ig"; ih: "cp.ih"; ii: "cp.ii"; ij: "cp.ij"; ik: "cp.ik"; il: "cp.il"; im: "cp.im"; in: "cp.in"; io: "cp.io"; ip: "cp.ip"; iq: "cp.iq"; ir: "cp.ir"; is: "cp.is"; it: "cp.it"; iu: "cp.iu"; iv: "cp.iv"; iw: "cp.iw"; ix: "cp.ix"; iy: "cp.iy"; iz: "cp.iz"; ja: "cp.ja"; jb: "cp.jb"; jc: "cp.jc"; jd: "cp.jd"; je: "cp.je"; jf: "cp.jf"; jg: "cp.jg"; jh: "cp.jh"; ji: "cp.ji"; jj: "cp.jj"; jk: "cp.jk"; jl: "cp.jl"; jm: "cp.jm"; jn: "cp.jn"; jo: "cp.jo"; jp: "cp.jp"; jq: "cp.jq"; jr: "cp.jr"; js: "cp.js"; jt: "cp.jt"; ju: "cp.ju"; jv: "cp.jv"; jw: "cp.jw"; jx: "cp.jx"; jy: "cp.jy"; jz: "cp.jz"; ka: "cp.ka"; kb: "cp.kb"; kc: "cp.kc"; kd: "cp.kd"; ke: "cp.ke"; kf: "cp.kf"; kg: "cp.kg"; kh: "cp.kh"; ki: "cp.ki"; kj: "cp.kj"; kk: "cp.kk"; kl: "cp.kl"; km: "cp.km"; kn: "cp.kn"; ko: "cp.ko"; kp: "cp.kp"; kq: "cp.kq"; kr: "cp.kr"; ks: "cp.ks"; kt: "cp.kt"; ku: "cp.ku"; kv: "cp.kv"; kw: "cp.kw"; kx: "cp.kx"; ky: "cp.ky"; kz: "cp.kz"; la: "cp.la"; lb: "cp.lb"; lc: "cp.lc"; ld: "cp.ld"; le: "cp.le"; lf: "cp.lf"; lg: "cp.lg"; lh: "cp.lh"; li: "cp.li"; lj: "cp.lj"; lk: "cp.lk"; ll: "cp.ll"; lm: "cp.lm"; ln: "cp.ln"; lo: "cp.lo"; lp: "cp.lp"; lq: "cp.lq"; lr: "cp.lr"; ls: "cp.ls"; lt: "cp.lt"; lu: "cp.lu"; lv: "cp.lv"; lw: "cp.lw"; lx: "cp.lx"; ly: "cp.ly"; lz: "cp.lz"; ma: "cp.ma"; mb: "cp.mb"; mc: "cp.mc"; md: "cp.md"; me: "cp.me"; mf: "cp.mf"; mg: "cp.mg"; mh: "cp.mh"; mi: "cp.mi"; mj: "cp.mj"; mk: "cp.mk"; ml: "cp.ml"; mm: "cp.mm"; mn: "cp.mn"; mo: "cp.mo"; mp: "cp.mp"; mq: "cp.mq"; mr: "cp.mr"; ms: "cp.ms"; mt: "cp.mt"; mu: "cp.mu"; mv: "cp.mv"; mw: "cp.mw"; mx: "cp.mx"; my: "cp.my"; mz: "cp.mz"; na: "cp.na"; nb: "cp.nb"; nc: "cp.nc"; nd: "cp.nd"; ne: "cp.ne"; nf: "cp.nf"; ng: "cp.ng"; nh: "cp.nh"; ni: "cp.ni"; nj: "cp.nj"; nk: "cp.nk"; nl: "cp.nl"; nm: "cp.nm"; nn: "cp.nn"; no: "cp.no"; np: "cp.np"; nq: "cp.nq"; nr: "cp.nr"; ns: "cp.ns"; nt: "cp.nt"; nu: "cp.nu"; nv: "cp.nv"; nw: "cp.nw"; nx: "cp.nx"; ny: "cp.ny"; nz: "cp.nz"; oa: "cp.oa"; ob: "cp.ob"; oc: "cp.oc"; od: "cp.od"; oe: "cp.oe"; of: "cp.of"; og: "cp.og"; oh: "cp.oh"; oi: "cp.oi"; oj: "cp.oj"; ok: "cp.ok"; ol: "cp.ol"; om: "cp.om"; on: "cp.on"; oo: "cp.oo"; op: "cp.op"; oq: "cp.oq"; or: "cp.or"; os: "cp.os"; ot: "cp.ot"; ou: "cp.ou"; ov: "cp.ov"; ow: "cp.ow"; ox: "cp.ox"; oy: "cp.oy"; oz: "cp.oz"; pa: "cp.pa"; pb: "cp.pb"; pc: "cp.pc"; pd: "cp.pd"; pe: "cp.pe"; pf: "cp.pf"; pg: "cp.pg"; ph: "cp.ph"; pi: "cp.pi"; pj: "cp.pj"; pk: "cp.pk"; pl: "cp.pl"; pm: "cp.pm"; pn: "cp.pn"; po: "cp.po"; pp: "cp.pp"; pq: "cp.pq"; pr: "cp.pr"; ps: "cp.ps"; pt: "cp.pt"; pu: "cp.pu"; pv: "cp.pv"; pw: "cp.pw"; px: "cp.px"; py: "cp.py"; pz: "cp.pz"; qa: "cp.qa"; qb: "cp.qb"; qc: "cp.qc"; qd: "cp.qd"; qe: "cp.qe"; qf: "cp.qf"; qg: "cp.qg"; qh: "cp.qh"; qi: "cp.qi"; qj: "cp.qj"; qk: "cp.qk"; ql: "cp.ql"; qm: "cp.qm"; qn: "cp.qn"; qo: "cp.qo"; qp: "cp.qp"; qq: "cp.qq"; qr: "cp.qr"; qs: "cp.qs"; qt: "cp.qt"; qu: "cp.qu"; qv: "cp.qv"; qw: "cp.qw"; qx: "cp.qx"; qy: "cp.qy"; qz: "cp.qz"; ra: "cp.ra"; rb: "cp.rb"; rc: "cp.rc"; rd: "cp.rd"; re: "cp.re"; rf: "cp.rf"; rg: "cp.rg"; rh: "cp.rh"; ri: "cp.ri"; rj: "cp.rj"; rk: "cp.rk"; rl: "cp.rl"; rm: "cp.rm"; rn: "cp.rn"; ro: "cp.ro"; rp: "cp.rp"; rq: "cp.rq"; rr: "cp.rr"; rs: "cp.rs"; rt: "cp.rt"; ru: "cp.ru"; rv: "cp.rv"; rw: "cp.rw"; rx: "cp.rx"; ry: "cp.ry"; rz: "cp.rz"; sa: "cp.sa"; sb: "cp.sb"; sc: "cp.sc"; sd: "cp.sd"; se: "cp.se"; sf: "cp.sf"; sg: "cp.sg"; sh: "cp.sh"; si: "cp.si"; sj: "cp.sj"; sk: "cp.sk"; sl: "cp.sl"; sm: "cp.sm"; sn: "cp.sn"; so: "cp.so"; sp: "cp.sp"; sq: "cp.sq"; sr: "cp.sr"; ss: "cp.ss"; st: "cp.st"; su: "cp.su"; sv: "cp.sv"; sw: "cp.sw"; sx: "cp.sx"; sy: "cp.sy"; sz: "cp.sz"; ta: "cp.ta"; tb: "cp.tb"; tc: "cp.tc"; td: "cp.td"; te: "cp.te"; tf: "cp.tf"; tg: "cp.tg"; th: "cp.th"; ti: "cp.ti"; tj: "cp.tj"; tk: "cp.tk"; tl: "cp.tl"; tm: "cp.tm"; tn: "cp.tn"; to: "cp.to"; tp: "cp.tp"; tq: "cp.tq"; tr: "cp.tr"; ts: "cp.ts"; tt: "cp.tt"; tu: "cp.tu"; tv: "cp.tv"; tw: "cp.tw"; tx: "cp.tx"; ty: "cp.ty"; tz: "cp.tz"; ua: "cp.ua"; ub: "cp.ub"; uc: "cp.uc"; ud: "cp.ud"; ue: "cp.ue"; uf: "cp.uf"; ug: "cp.ug"; uh: "cp.uh"; ui: "cp.ui"; uj: "cp.uj"; uk: "cp.uk"; ul: "cp.ul"; um: "cp.um"; un: "cp.un"; uo: "cp.uo"; up: "cp.up"; uq: "cp.uq"; ur: "cp.ur"; us: "cp.us"; ut: "cp.ut"; uu: "cp.uu"; uv: "cp.uv"; uw: "cp.uw"; ux: "cp.ux"; uy: "cp.uy"; uz: "cp.uz"; va: "cp.va"; vb: "cp.vb"; vc: "cp.vc"; vd: "cp.vd"; ve: "cp.ve"; vf: "cp.vf"; vg: "cp.vg"; vh: "cp.vh"; vi: "cp.vi"; vj: "cp.vj"; vk: "cp.vk"; vl: "cp.vl"; vm: "cp.vm"; vn: "cp.vn"; vo: "cp.vo"; vp: "cp.vp"; vq: "cp.vq"; vr: "cp.vr"; vs: "cp.vs"; vt: "cp.vt"; vu: "cp.vu"; vv: "cp.vv"; vw: "cp.vw"; vx: "cp.vx"; vy: "cp.vy"; vz: "cp.vz"; wa: "cp.wa"; wb: "cp.wb"; wc: "cp.wc"; wd: "cp.wd"; we: "cp.we"; wf: "cp.wf"; wg: "cp.wg"; wh: "cp.wh"; wi: "cp.wi"; wj: "cp.wj"; wk: "cp.wk"; wl: "cp.wl"; wm: "cp.wm"; wn: "cp.wn"; wo: "cp.wo"; wp: "cp.wp"; wq: "cp.wq"; wr: "cp.wr"; ws: "cp.ws"; wt: "cp.wt"; wu: "cp.wu"; wv: "cp.wv"; ww: "cp.ww"; wx: "cp.wx"; wy: "cp.wy"; wz: "cp.wz"; xa: "cp.xa"; xb: "cp.xb"; xc: "cp.xc"; xd: "cp.xd"; xe: "cp.xe"; xf: "cp.xf"; xg: "cp.xg"; xh: "cp.xh"; xi: "cp.xi"; xj: "cp.xj"; xk: "cp.xk"; xl: "cp.xl"; xm: "cp.xm"; xn: "cp.xn"; xo: "cp.xo"; xp: "cp.xp"; xq: "cp.xq"; xr: "cp.xr"; xs: "cp.xs"; xt: "cp.xt"; xu: "cp.xu"; xv: "cp.xv"; xw: "cp.xw"; xx: "cp.xx"; xy: "cp.xy"; xz: "cp.xz"; ya: "cp.ya"; yb: "cp.yb"; yc: "cp.yc"; yd: "cp.yd"; ye: "cp.ye"; yf: "cp.yf"; yg: "cp.yg"; yh: "cp.yh"; yi: "cp.yi"; yj: "cp.yj"; yk: "cp.yk"; yl: "cp.yl"; ym: "cp.ym"; yn: "cp.yn"; yo: "cp.yo"; yp: "cp.yp"; yq: "cp.yq"; yr: "cp.yr"; ys: "cp.ys"; yt: "cp.yt"; yu: "cp.yu"; yv: "cp.yv"; yw: "cp.yw"; yx: "cp.yx"; yy: "cp.yy"; yz: "cp.yz"; za: "cp.za"; zb: "cp.zb"; zc: "cp.zc"; zd: "cp.zd"; ze: "cp.ze"; zf: "cp.zf"; zg: "cp.zg"; zh: "cp.zh"; zi: "cp.zi"; zj: "cp.zj"; zk: "cp.zk"; zl: "cp.zl"; zm: "cp.zm"; zn: "cp.zn"; zo: "cp.zo"; zp: "cp.zp"; zq: "cp.zq"; zr: "cp.zr"; zs: "cp.zs"; zt: "cp.zt"; zu: "cp.zu"; zv: "cp.zv"; zw: "cp.zw"; zx: "cp.zx"; zy: "cp.zy"; zz: "cp.zz"; }; cq: { aa: "cq.aa"; ab: "cq.ab"; ac: "cq.ac"; ad: "cq.ad"; ae: "cq.ae"; af: "cq.af"; ag: "cq.ag"; ah: "cq.ah"; ai: "cq.ai"; aj: "cq.aj"; ak: "cq.ak"; al: "cq.al"; am: "cq.am"; an: "cq.an"; ao: "cq.ao"; ap: "cq.ap"; aq: "cq.aq"; ar: "cq.ar"; as: "cq.as"; at: "cq.at"; au: "cq.au"; av: "cq.av"; aw: "cq.aw"; ax: "cq.ax"; ay: "cq.ay"; az: "cq.az"; ba: "cq.ba"; bb: "cq.bb"; bc: "cq.bc"; bd: "cq.bd"; be: "cq.be"; bf: "cq.bf"; bg: "cq.bg"; bh: "cq.bh"; bi: "cq.bi"; bj: "cq.bj"; bk: "cq.bk"; bl: "cq.bl"; bm: "cq.bm"; bn: "cq.bn"; bo: "cq.bo"; bp: "cq.bp"; bq: "cq.bq"; br: "cq.br"; bs: "cq.bs"; bt: "cq.bt"; bu: "cq.bu"; bv: "cq.bv"; bw: "cq.bw"; bx: "cq.bx"; by: "cq.by"; bz: "cq.bz"; ca: "cq.ca"; cb: "cq.cb"; cc: "cq.cc"; cd: "cq.cd"; ce: "cq.ce"; cf: "cq.cf"; cg: "cq.cg"; ch: "cq.ch"; ci: "cq.ci"; cj: "cq.cj"; ck: "cq.ck"; cl: "cq.cl"; cm: "cq.cm"; cn: "cq.cn"; co: "cq.co"; cp: "cq.cp"; cq: "cq.cq"; cr: "cq.cr"; cs: "cq.cs"; ct: "cq.ct"; cu: "cq.cu"; cv: "cq.cv"; cw: "cq.cw"; cx: "cq.cx"; cy: "cq.cy"; cz: "cq.cz"; da: "cq.da"; db: "cq.db"; dc: "cq.dc"; dd: "cq.dd"; de: "cq.de"; df: "cq.df"; dg: "cq.dg"; dh: "cq.dh"; di: "cq.di"; dj: "cq.dj"; dk: "cq.dk"; dl: "cq.dl"; dm: "cq.dm"; dn: "cq.dn"; do: "cq.do"; dp: "cq.dp"; dq: "cq.dq"; dr: "cq.dr"; ds: "cq.ds"; dt: "cq.dt"; du: "cq.du"; dv: "cq.dv"; dw: "cq.dw"; dx: "cq.dx"; dy: "cq.dy"; dz: "cq.dz"; ea: "cq.ea"; eb: "cq.eb"; ec: "cq.ec"; ed: "cq.ed"; ee: "cq.ee"; ef: "cq.ef"; eg: "cq.eg"; eh: "cq.eh"; ei: "cq.ei"; ej: "cq.ej"; ek: "cq.ek"; el: "cq.el"; em: "cq.em"; en: "cq.en"; eo: "cq.eo"; ep: "cq.ep"; eq: "cq.eq"; er: "cq.er"; es: "cq.es"; et: "cq.et"; eu: "cq.eu"; ev: "cq.ev"; ew: "cq.ew"; ex: "cq.ex"; ey: "cq.ey"; ez: "cq.ez"; fa: "cq.fa"; fb: "cq.fb"; fc: "cq.fc"; fd: "cq.fd"; fe: "cq.fe"; ff: "cq.ff"; fg: "cq.fg"; fh: "cq.fh"; fi: "cq.fi"; fj: "cq.fj"; fk: "cq.fk"; fl: "cq.fl"; fm: "cq.fm"; fn: "cq.fn"; fo: "cq.fo"; fp: "cq.fp"; fq: "cq.fq"; fr: "cq.fr"; fs: "cq.fs"; ft: "cq.ft"; fu: "cq.fu"; fv: "cq.fv"; fw: "cq.fw"; fx: "cq.fx"; fy: "cq.fy"; fz: "cq.fz"; ga: "cq.ga"; gb: "cq.gb"; gc: "cq.gc"; gd: "cq.gd"; ge: "cq.ge"; gf: "cq.gf"; gg: "cq.gg"; gh: "cq.gh"; gi: "cq.gi"; gj: "cq.gj"; gk: "cq.gk"; gl: "cq.gl"; gm: "cq.gm"; gn: "cq.gn"; go: "cq.go"; gp: "cq.gp"; gq: "cq.gq"; gr: "cq.gr"; gs: "cq.gs"; gt: "cq.gt"; gu: "cq.gu"; gv: "cq.gv"; gw: "cq.gw"; gx: "cq.gx"; gy: "cq.gy"; gz: "cq.gz"; ha: "cq.ha"; hb: "cq.hb"; hc: "cq.hc"; hd: "cq.hd"; he: "cq.he"; hf: "cq.hf"; hg: "cq.hg"; hh: "cq.hh"; hi: "cq.hi"; hj: "cq.hj"; hk: "cq.hk"; hl: "cq.hl"; hm: "cq.hm"; hn: "cq.hn"; ho: "cq.ho"; hp: "cq.hp"; hq: "cq.hq"; hr: "cq.hr"; hs: "cq.hs"; ht: "cq.ht"; hu: "cq.hu"; hv: "cq.hv"; hw: "cq.hw"; hx: "cq.hx"; hy: "cq.hy"; hz: "cq.hz"; ia: "cq.ia"; ib: "cq.ib"; ic: "cq.ic"; id: "cq.id"; ie: "cq.ie"; if: "cq.if"; ig: "cq.ig"; ih: "cq.ih"; ii: "cq.ii"; ij: "cq.ij"; ik: "cq.ik"; il: "cq.il"; im: "cq.im"; in: "cq.in"; io: "cq.io"; ip: "cq.ip"; iq: "cq.iq"; ir: "cq.ir"; is: "cq.is"; it: "cq.it"; iu: "cq.iu"; iv: "cq.iv"; iw: "cq.iw"; ix: "cq.ix"; iy: "cq.iy"; iz: "cq.iz"; ja: "cq.ja"; jb: "cq.jb"; jc: "cq.jc"; jd: "cq.jd"; je: "cq.je"; jf: "cq.jf"; jg: "cq.jg"; jh: "cq.jh"; ji: "cq.ji"; jj: "cq.jj"; jk: "cq.jk"; jl: "cq.jl"; jm: "cq.jm"; jn: "cq.jn"; jo: "cq.jo"; jp: "cq.jp"; jq: "cq.jq"; jr: "cq.jr"; js: "cq.js"; jt: "cq.jt"; ju: "cq.ju"; jv: "cq.jv"; jw: "cq.jw"; jx: "cq.jx"; jy: "cq.jy"; jz: "cq.jz"; ka: "cq.ka"; kb: "cq.kb"; kc: "cq.kc"; kd: "cq.kd"; ke: "cq.ke"; kf: "cq.kf"; kg: "cq.kg"; kh: "cq.kh"; ki: "cq.ki"; kj: "cq.kj"; kk: "cq.kk"; kl: "cq.kl"; km: "cq.km"; kn: "cq.kn"; ko: "cq.ko"; kp: "cq.kp"; kq: "cq.kq"; kr: "cq.kr"; ks: "cq.ks"; kt: "cq.kt"; ku: "cq.ku"; kv: "cq.kv"; kw: "cq.kw"; kx: "cq.kx"; ky: "cq.ky"; kz: "cq.kz"; la: "cq.la"; lb: "cq.lb"; lc: "cq.lc"; ld: "cq.ld"; le: "cq.le"; lf: "cq.lf"; lg: "cq.lg"; lh: "cq.lh"; li: "cq.li"; lj: "cq.lj"; lk: "cq.lk"; ll: "cq.ll"; lm: "cq.lm"; ln: "cq.ln"; lo: "cq.lo"; lp: "cq.lp"; lq: "cq.lq"; lr: "cq.lr"; ls: "cq.ls"; lt: "cq.lt"; lu: "cq.lu"; lv: "cq.lv"; lw: "cq.lw"; lx: "cq.lx"; ly: "cq.ly"; lz: "cq.lz"; ma: "cq.ma"; mb: "cq.mb"; mc: "cq.mc"; md: "cq.md"; me: "cq.me"; mf: "cq.mf"; mg: "cq.mg"; mh: "cq.mh"; mi: "cq.mi"; mj: "cq.mj"; mk: "cq.mk"; ml: "cq.ml"; mm: "cq.mm"; mn: "cq.mn"; mo: "cq.mo"; mp: "cq.mp"; mq: "cq.mq"; mr: "cq.mr"; ms: "cq.ms"; mt: "cq.mt"; mu: "cq.mu"; mv: "cq.mv"; mw: "cq.mw"; mx: "cq.mx"; my: "cq.my"; mz: "cq.mz"; na: "cq.na"; nb: "cq.nb"; nc: "cq.nc"; nd: "cq.nd"; ne: "cq.ne"; nf: "cq.nf"; ng: "cq.ng"; nh: "cq.nh"; ni: "cq.ni"; nj: "cq.nj"; nk: "cq.nk"; nl: "cq.nl"; nm: "cq.nm"; nn: "cq.nn"; no: "cq.no"; np: "cq.np"; nq: "cq.nq"; nr: "cq.nr"; ns: "cq.ns"; nt: "cq.nt"; nu: "cq.nu"; nv: "cq.nv"; nw: "cq.nw"; nx: "cq.nx"; ny: "cq.ny"; nz: "cq.nz"; oa: "cq.oa"; ob: "cq.ob"; oc: "cq.oc"; od: "cq.od"; oe: "cq.oe"; of: "cq.of"; og: "cq.og"; oh: "cq.oh"; oi: "cq.oi"; oj: "cq.oj"; ok: "cq.ok"; ol: "cq.ol"; om: "cq.om"; on: "cq.on"; oo: "cq.oo"; op: "cq.op"; oq: "cq.oq"; or: "cq.or"; os: "cq.os"; ot: "cq.ot"; ou: "cq.ou"; ov: "cq.ov"; ow: "cq.ow"; ox: "cq.ox"; oy: "cq.oy"; oz: "cq.oz"; pa: "cq.pa"; pb: "cq.pb"; pc: "cq.pc"; pd: "cq.pd"; pe: "cq.pe"; pf: "cq.pf"; pg: "cq.pg"; ph: "cq.ph"; pi: "cq.pi"; pj: "cq.pj"; pk: "cq.pk"; pl: "cq.pl"; pm: "cq.pm"; pn: "cq.pn"; po: "cq.po"; pp: "cq.pp"; pq: "cq.pq"; pr: "cq.pr"; ps: "cq.ps"; pt: "cq.pt"; pu: "cq.pu"; pv: "cq.pv"; pw: "cq.pw"; px: "cq.px"; py: "cq.py"; pz: "cq.pz"; qa: "cq.qa"; qb: "cq.qb"; qc: "cq.qc"; qd: "cq.qd"; qe: "cq.qe"; qf: "cq.qf"; qg: "cq.qg"; qh: "cq.qh"; qi: "cq.qi"; qj: "cq.qj"; qk: "cq.qk"; ql: "cq.ql"; qm: "cq.qm"; qn: "cq.qn"; qo: "cq.qo"; qp: "cq.qp"; qq: "cq.qq"; qr: "cq.qr"; qs: "cq.qs"; qt: "cq.qt"; qu: "cq.qu"; qv: "cq.qv"; qw: "cq.qw"; qx: "cq.qx"; qy: "cq.qy"; qz: "cq.qz"; ra: "cq.ra"; rb: "cq.rb"; rc: "cq.rc"; rd: "cq.rd"; re: "cq.re"; rf: "cq.rf"; rg: "cq.rg"; rh: "cq.rh"; ri: "cq.ri"; rj: "cq.rj"; rk: "cq.rk"; rl: "cq.rl"; rm: "cq.rm"; rn: "cq.rn"; ro: "cq.ro"; rp: "cq.rp"; rq: "cq.rq"; rr: "cq.rr"; rs: "cq.rs"; rt: "cq.rt"; ru: "cq.ru"; rv: "cq.rv"; rw: "cq.rw"; rx: "cq.rx"; ry: "cq.ry"; rz: "cq.rz"; sa: "cq.sa"; sb: "cq.sb"; sc: "cq.sc"; sd: "cq.sd"; se: "cq.se"; sf: "cq.sf"; sg: "cq.sg"; sh: "cq.sh"; si: "cq.si"; sj: "cq.sj"; sk: "cq.sk"; sl: "cq.sl"; sm: "cq.sm"; sn: "cq.sn"; so: "cq.so"; sp: "cq.sp"; sq: "cq.sq"; sr: "cq.sr"; ss: "cq.ss"; st: "cq.st"; su: "cq.su"; sv: "cq.sv"; sw: "cq.sw"; sx: "cq.sx"; sy: "cq.sy"; sz: "cq.sz"; ta: "cq.ta"; tb: "cq.tb"; tc: "cq.tc"; td: "cq.td"; te: "cq.te"; tf: "cq.tf"; tg: "cq.tg"; th: "cq.th"; ti: "cq.ti"; tj: "cq.tj"; tk: "cq.tk"; tl: "cq.tl"; tm: "cq.tm"; tn: "cq.tn"; to: "cq.to"; tp: "cq.tp"; tq: "cq.tq"; tr: "cq.tr"; ts: "cq.ts"; tt: "cq.tt"; tu: "cq.tu"; tv: "cq.tv"; tw: "cq.tw"; tx: "cq.tx"; ty: "cq.ty"; tz: "cq.tz"; ua: "cq.ua"; ub: "cq.ub"; uc: "cq.uc"; ud: "cq.ud"; ue: "cq.ue"; uf: "cq.uf"; ug: "cq.ug"; uh: "cq.uh"; ui: "cq.ui"; uj: "cq.uj"; uk: "cq.uk"; ul: "cq.ul"; um: "cq.um"; un: "cq.un"; uo: "cq.uo"; up: "cq.up"; uq: "cq.uq"; ur: "cq.ur"; us: "cq.us"; ut: "cq.ut"; uu: "cq.uu"; uv: "cq.uv"; uw: "cq.uw"; ux: "cq.ux"; uy: "cq.uy"; uz: "cq.uz"; va: "cq.va"; vb: "cq.vb"; vc: "cq.vc"; vd: "cq.vd"; ve: "cq.ve"; vf: "cq.vf"; vg: "cq.vg"; vh: "cq.vh"; vi: "cq.vi"; vj: "cq.vj"; vk: "cq.vk"; vl: "cq.vl"; vm: "cq.vm"; vn: "cq.vn"; vo: "cq.vo"; vp: "cq.vp"; vq: "cq.vq"; vr: "cq.vr"; vs: "cq.vs"; vt: "cq.vt"; vu: "cq.vu"; vv: "cq.vv"; vw: "cq.vw"; vx: "cq.vx"; vy: "cq.vy"; vz: "cq.vz"; wa: "cq.wa"; wb: "cq.wb"; wc: "cq.wc"; wd: "cq.wd"; we: "cq.we"; wf: "cq.wf"; wg: "cq.wg"; wh: "cq.wh"; wi: "cq.wi"; wj: "cq.wj"; wk: "cq.wk"; wl: "cq.wl"; wm: "cq.wm"; wn: "cq.wn"; wo: "cq.wo"; wp: "cq.wp"; wq: "cq.wq"; wr: "cq.wr"; ws: "cq.ws"; wt: "cq.wt"; wu: "cq.wu"; wv: "cq.wv"; ww: "cq.ww"; wx: "cq.wx"; wy: "cq.wy"; wz: "cq.wz"; xa: "cq.xa"; xb: "cq.xb"; xc: "cq.xc"; xd: "cq.xd"; xe: "cq.xe"; xf: "cq.xf"; xg: "cq.xg"; xh: "cq.xh"; xi: "cq.xi"; xj: "cq.xj"; xk: "cq.xk"; xl: "cq.xl"; xm: "cq.xm"; xn: "cq.xn"; xo: "cq.xo"; xp: "cq.xp"; xq: "cq.xq"; xr: "cq.xr"; xs: "cq.xs"; xt: "cq.xt"; xu: "cq.xu"; xv: "cq.xv"; xw: "cq.xw"; xx: "cq.xx"; xy: "cq.xy"; xz: "cq.xz"; ya: "cq.ya"; yb: "cq.yb"; yc: "cq.yc"; yd: "cq.yd"; ye: "cq.ye"; yf: "cq.yf"; yg: "cq.yg"; yh: "cq.yh"; yi: "cq.yi"; yj: "cq.yj"; yk: "cq.yk"; yl: "cq.yl"; ym: "cq.ym"; yn: "cq.yn"; yo: "cq.yo"; yp: "cq.yp"; yq: "cq.yq"; yr: "cq.yr"; ys: "cq.ys"; yt: "cq.yt"; yu: "cq.yu"; yv: "cq.yv"; yw: "cq.yw"; yx: "cq.yx"; yy: "cq.yy"; yz: "cq.yz"; za: "cq.za"; zb: "cq.zb"; zc: "cq.zc"; zd: "cq.zd"; ze: "cq.ze"; zf: "cq.zf"; zg: "cq.zg"; zh: "cq.zh"; zi: "cq.zi"; zj: "cq.zj"; zk: "cq.zk"; zl: "cq.zl"; zm: "cq.zm"; zn: "cq.zn"; zo: "cq.zo"; zp: "cq.zp"; zq: "cq.zq"; zr: "cq.zr"; zs: "cq.zs"; zt: "cq.zt"; zu: "cq.zu"; zv: "cq.zv"; zw: "cq.zw"; zx: "cq.zx"; zy: "cq.zy"; zz: "cq.zz"; }; cr: { aa: "cr.aa"; ab: "cr.ab"; ac: "cr.ac"; ad: "cr.ad"; ae: "cr.ae"; af: "cr.af"; ag: "cr.ag"; ah: "cr.ah"; ai: "cr.ai"; aj: "cr.aj"; ak: "cr.ak"; al: "cr.al"; am: "cr.am"; an: "cr.an"; ao: "cr.ao"; ap: "cr.ap"; aq: "cr.aq"; ar: "cr.ar"; as: "cr.as"; at: "cr.at"; au: "cr.au"; av: "cr.av"; aw: "cr.aw"; ax: "cr.ax"; ay: "cr.ay"; az: "cr.az"; ba: "cr.ba"; bb: "cr.bb"; bc: "cr.bc"; bd: "cr.bd"; be: "cr.be"; bf: "cr.bf"; bg: "cr.bg"; bh: "cr.bh"; bi: "cr.bi"; bj: "cr.bj"; bk: "cr.bk"; bl: "cr.bl"; bm: "cr.bm"; bn: "cr.bn"; bo: "cr.bo"; bp: "cr.bp"; bq: "cr.bq"; br: "cr.br"; bs: "cr.bs"; bt: "cr.bt"; bu: "cr.bu"; bv: "cr.bv"; bw: "cr.bw"; bx: "cr.bx"; by: "cr.by"; bz: "cr.bz"; ca: "cr.ca"; cb: "cr.cb"; cc: "cr.cc"; cd: "cr.cd"; ce: "cr.ce"; cf: "cr.cf"; cg: "cr.cg"; ch: "cr.ch"; ci: "cr.ci"; cj: "cr.cj"; ck: "cr.ck"; cl: "cr.cl"; cm: "cr.cm"; cn: "cr.cn"; co: "cr.co"; cp: "cr.cp"; cq: "cr.cq"; cr: "cr.cr"; cs: "cr.cs"; ct: "cr.ct"; cu: "cr.cu"; cv: "cr.cv"; cw: "cr.cw"; cx: "cr.cx"; cy: "cr.cy"; cz: "cr.cz"; da: "cr.da"; db: "cr.db"; dc: "cr.dc"; dd: "cr.dd"; de: "cr.de"; df: "cr.df"; dg: "cr.dg"; dh: "cr.dh"; di: "cr.di"; dj: "cr.dj"; dk: "cr.dk"; dl: "cr.dl"; dm: "cr.dm"; dn: "cr.dn"; do: "cr.do"; dp: "cr.dp"; dq: "cr.dq"; dr: "cr.dr"; ds: "cr.ds"; dt: "cr.dt"; du: "cr.du"; dv: "cr.dv"; dw: "cr.dw"; dx: "cr.dx"; dy: "cr.dy"; dz: "cr.dz"; ea: "cr.ea"; eb: "cr.eb"; ec: "cr.ec"; ed: "cr.ed"; ee: "cr.ee"; ef: "cr.ef"; eg: "cr.eg"; eh: "cr.eh"; ei: "cr.ei"; ej: "cr.ej"; ek: "cr.ek"; el: "cr.el"; em: "cr.em"; en: "cr.en"; eo: "cr.eo"; ep: "cr.ep"; eq: "cr.eq"; er: "cr.er"; es: "cr.es"; et: "cr.et"; eu: "cr.eu"; ev: "cr.ev"; ew: "cr.ew"; ex: "cr.ex"; ey: "cr.ey"; ez: "cr.ez"; fa: "cr.fa"; fb: "cr.fb"; fc: "cr.fc"; fd: "cr.fd"; fe: "cr.fe"; ff: "cr.ff"; fg: "cr.fg"; fh: "cr.fh"; fi: "cr.fi"; fj: "cr.fj"; fk: "cr.fk"; fl: "cr.fl"; fm: "cr.fm"; fn: "cr.fn"; fo: "cr.fo"; fp: "cr.fp"; fq: "cr.fq"; fr: "cr.fr"; fs: "cr.fs"; ft: "cr.ft"; fu: "cr.fu"; fv: "cr.fv"; fw: "cr.fw"; fx: "cr.fx"; fy: "cr.fy"; fz: "cr.fz"; ga: "cr.ga"; gb: "cr.gb"; gc: "cr.gc"; gd: "cr.gd"; ge: "cr.ge"; gf: "cr.gf"; gg: "cr.gg"; gh: "cr.gh"; gi: "cr.gi"; gj: "cr.gj"; gk: "cr.gk"; gl: "cr.gl"; gm: "cr.gm"; gn: "cr.gn"; go: "cr.go"; gp: "cr.gp"; gq: "cr.gq"; gr: "cr.gr"; gs: "cr.gs"; gt: "cr.gt"; gu: "cr.gu"; gv: "cr.gv"; gw: "cr.gw"; gx: "cr.gx"; gy: "cr.gy"; gz: "cr.gz"; ha: "cr.ha"; hb: "cr.hb"; hc: "cr.hc"; hd: "cr.hd"; he: "cr.he"; hf: "cr.hf"; hg: "cr.hg"; hh: "cr.hh"; hi: "cr.hi"; hj: "cr.hj"; hk: "cr.hk"; hl: "cr.hl"; hm: "cr.hm"; hn: "cr.hn"; ho: "cr.ho"; hp: "cr.hp"; hq: "cr.hq"; hr: "cr.hr"; hs: "cr.hs"; ht: "cr.ht"; hu: "cr.hu"; hv: "cr.hv"; hw: "cr.hw"; hx: "cr.hx"; hy: "cr.hy"; hz: "cr.hz"; ia: "cr.ia"; ib: "cr.ib"; ic: "cr.ic"; id: "cr.id"; ie: "cr.ie"; if: "cr.if"; ig: "cr.ig"; ih: "cr.ih"; ii: "cr.ii"; ij: "cr.ij"; ik: "cr.ik"; il: "cr.il"; im: "cr.im"; in: "cr.in"; io: "cr.io"; ip: "cr.ip"; iq: "cr.iq"; ir: "cr.ir"; is: "cr.is"; it: "cr.it"; iu: "cr.iu"; iv: "cr.iv"; iw: "cr.iw"; ix: "cr.ix"; iy: "cr.iy"; iz: "cr.iz"; ja: "cr.ja"; jb: "cr.jb"; jc: "cr.jc"; jd: "cr.jd"; je: "cr.je"; jf: "cr.jf"; jg: "cr.jg"; jh: "cr.jh"; ji: "cr.ji"; jj: "cr.jj"; jk: "cr.jk"; jl: "cr.jl"; jm: "cr.jm"; jn: "cr.jn"; jo: "cr.jo"; jp: "cr.jp"; jq: "cr.jq"; jr: "cr.jr"; js: "cr.js"; jt: "cr.jt"; ju: "cr.ju"; jv: "cr.jv"; jw: "cr.jw"; jx: "cr.jx"; jy: "cr.jy"; jz: "cr.jz"; ka: "cr.ka"; kb: "cr.kb"; kc: "cr.kc"; kd: "cr.kd"; ke: "cr.ke"; kf: "cr.kf"; kg: "cr.kg"; kh: "cr.kh"; ki: "cr.ki"; kj: "cr.kj"; kk: "cr.kk"; kl: "cr.kl"; km: "cr.km"; kn: "cr.kn"; ko: "cr.ko"; kp: "cr.kp"; kq: "cr.kq"; kr: "cr.kr"; ks: "cr.ks"; kt: "cr.kt"; ku: "cr.ku"; kv: "cr.kv"; kw: "cr.kw"; kx: "cr.kx"; ky: "cr.ky"; kz: "cr.kz"; la: "cr.la"; lb: "cr.lb"; lc: "cr.lc"; ld: "cr.ld"; le: "cr.le"; lf: "cr.lf"; lg: "cr.lg"; lh: "cr.lh"; li: "cr.li"; lj: "cr.lj"; lk: "cr.lk"; ll: "cr.ll"; lm: "cr.lm"; ln: "cr.ln"; lo: "cr.lo"; lp: "cr.lp"; lq: "cr.lq"; lr: "cr.lr"; ls: "cr.ls"; lt: "cr.lt"; lu: "cr.lu"; lv: "cr.lv"; lw: "cr.lw"; lx: "cr.lx"; ly: "cr.ly"; lz: "cr.lz"; ma: "cr.ma"; mb: "cr.mb"; mc: "cr.mc"; md: "cr.md"; me: "cr.me"; mf: "cr.mf"; mg: "cr.mg"; mh: "cr.mh"; mi: "cr.mi"; mj: "cr.mj"; mk: "cr.mk"; ml: "cr.ml"; mm: "cr.mm"; mn: "cr.mn"; mo: "cr.mo"; mp: "cr.mp"; mq: "cr.mq"; mr: "cr.mr"; ms: "cr.ms"; mt: "cr.mt"; mu: "cr.mu"; mv: "cr.mv"; mw: "cr.mw"; mx: "cr.mx"; my: "cr.my"; mz: "cr.mz"; na: "cr.na"; nb: "cr.nb"; nc: "cr.nc"; nd: "cr.nd"; ne: "cr.ne"; nf: "cr.nf"; ng: "cr.ng"; nh: "cr.nh"; ni: "cr.ni"; nj: "cr.nj"; nk: "cr.nk"; nl: "cr.nl"; nm: "cr.nm"; nn: "cr.nn"; no: "cr.no"; np: "cr.np"; nq: "cr.nq"; nr: "cr.nr"; ns: "cr.ns"; nt: "cr.nt"; nu: "cr.nu"; nv: "cr.nv"; nw: "cr.nw"; nx: "cr.nx"; ny: "cr.ny"; nz: "cr.nz"; oa: "cr.oa"; ob: "cr.ob"; oc: "cr.oc"; od: "cr.od"; oe: "cr.oe"; of: "cr.of"; og: "cr.og"; oh: "cr.oh"; oi: "cr.oi"; oj: "cr.oj"; ok: "cr.ok"; ol: "cr.ol"; om: "cr.om"; on: "cr.on"; oo: "cr.oo"; op: "cr.op"; oq: "cr.oq"; or: "cr.or"; os: "cr.os"; ot: "cr.ot"; ou: "cr.ou"; ov: "cr.ov"; ow: "cr.ow"; ox: "cr.ox"; oy: "cr.oy"; oz: "cr.oz"; pa: "cr.pa"; pb: "cr.pb"; pc: "cr.pc"; pd: "cr.pd"; pe: "cr.pe"; pf: "cr.pf"; pg: "cr.pg"; ph: "cr.ph"; pi: "cr.pi"; pj: "cr.pj"; pk: "cr.pk"; pl: "cr.pl"; pm: "cr.pm"; pn: "cr.pn"; po: "cr.po"; pp: "cr.pp"; pq: "cr.pq"; pr: "cr.pr"; ps: "cr.ps"; pt: "cr.pt"; pu: "cr.pu"; pv: "cr.pv"; pw: "cr.pw"; px: "cr.px"; py: "cr.py"; pz: "cr.pz"; qa: "cr.qa"; qb: "cr.qb"; qc: "cr.qc"; qd: "cr.qd"; qe: "cr.qe"; qf: "cr.qf"; qg: "cr.qg"; qh: "cr.qh"; qi: "cr.qi"; qj: "cr.qj"; qk: "cr.qk"; ql: "cr.ql"; qm: "cr.qm"; qn: "cr.qn"; qo: "cr.qo"; qp: "cr.qp"; qq: "cr.qq"; qr: "cr.qr"; qs: "cr.qs"; qt: "cr.qt"; qu: "cr.qu"; qv: "cr.qv"; qw: "cr.qw"; qx: "cr.qx"; qy: "cr.qy"; qz: "cr.qz"; ra: "cr.ra"; rb: "cr.rb"; rc: "cr.rc"; rd: "cr.rd"; re: "cr.re"; rf: "cr.rf"; rg: "cr.rg"; rh: "cr.rh"; ri: "cr.ri"; rj: "cr.rj"; rk: "cr.rk"; rl: "cr.rl"; rm: "cr.rm"; rn: "cr.rn"; ro: "cr.ro"; rp: "cr.rp"; rq: "cr.rq"; rr: "cr.rr"; rs: "cr.rs"; rt: "cr.rt"; ru: "cr.ru"; rv: "cr.rv"; rw: "cr.rw"; rx: "cr.rx"; ry: "cr.ry"; rz: "cr.rz"; sa: "cr.sa"; sb: "cr.sb"; sc: "cr.sc"; sd: "cr.sd"; se: "cr.se"; sf: "cr.sf"; sg: "cr.sg"; sh: "cr.sh"; si: "cr.si"; sj: "cr.sj"; sk: "cr.sk"; sl: "cr.sl"; sm: "cr.sm"; sn: "cr.sn"; so: "cr.so"; sp: "cr.sp"; sq: "cr.sq"; sr: "cr.sr"; ss: "cr.ss"; st: "cr.st"; su: "cr.su"; sv: "cr.sv"; sw: "cr.sw"; sx: "cr.sx"; sy: "cr.sy"; sz: "cr.sz"; ta: "cr.ta"; tb: "cr.tb"; tc: "cr.tc"; td: "cr.td"; te: "cr.te"; tf: "cr.tf"; tg: "cr.tg"; th: "cr.th"; ti: "cr.ti"; tj: "cr.tj"; tk: "cr.tk"; tl: "cr.tl"; tm: "cr.tm"; tn: "cr.tn"; to: "cr.to"; tp: "cr.tp"; tq: "cr.tq"; tr: "cr.tr"; ts: "cr.ts"; tt: "cr.tt"; tu: "cr.tu"; tv: "cr.tv"; tw: "cr.tw"; tx: "cr.tx"; ty: "cr.ty"; tz: "cr.tz"; ua: "cr.ua"; ub: "cr.ub"; uc: "cr.uc"; ud: "cr.ud"; ue: "cr.ue"; uf: "cr.uf"; ug: "cr.ug"; uh: "cr.uh"; ui: "cr.ui"; uj: "cr.uj"; uk: "cr.uk"; ul: "cr.ul"; um: "cr.um"; un: "cr.un"; uo: "cr.uo"; up: "cr.up"; uq: "cr.uq"; ur: "cr.ur"; us: "cr.us"; ut: "cr.ut"; uu: "cr.uu"; uv: "cr.uv"; uw: "cr.uw"; ux: "cr.ux"; uy: "cr.uy"; uz: "cr.uz"; va: "cr.va"; vb: "cr.vb"; vc: "cr.vc"; vd: "cr.vd"; ve: "cr.ve"; vf: "cr.vf"; vg: "cr.vg"; vh: "cr.vh"; vi: "cr.vi"; vj: "cr.vj"; vk: "cr.vk"; vl: "cr.vl"; vm: "cr.vm"; vn: "cr.vn"; vo: "cr.vo"; vp: "cr.vp"; vq: "cr.vq"; vr: "cr.vr"; vs: "cr.vs"; vt: "cr.vt"; vu: "cr.vu"; vv: "cr.vv"; vw: "cr.vw"; vx: "cr.vx"; vy: "cr.vy"; vz: "cr.vz"; wa: "cr.wa"; wb: "cr.wb"; wc: "cr.wc"; wd: "cr.wd"; we: "cr.we"; wf: "cr.wf"; wg: "cr.wg"; wh: "cr.wh"; wi: "cr.wi"; wj: "cr.wj"; wk: "cr.wk"; wl: "cr.wl"; wm: "cr.wm"; wn: "cr.wn"; wo: "cr.wo"; wp: "cr.wp"; wq: "cr.wq"; wr: "cr.wr"; ws: "cr.ws"; wt: "cr.wt"; wu: "cr.wu"; wv: "cr.wv"; ww: "cr.ww"; wx: "cr.wx"; wy: "cr.wy"; wz: "cr.wz"; xa: "cr.xa"; xb: "cr.xb"; xc: "cr.xc"; xd: "cr.xd"; xe: "cr.xe"; xf: "cr.xf"; xg: "cr.xg"; xh: "cr.xh"; xi: "cr.xi"; xj: "cr.xj"; xk: "cr.xk"; xl: "cr.xl"; xm: "cr.xm"; xn: "cr.xn"; xo: "cr.xo"; xp: "cr.xp"; xq: "cr.xq"; xr: "cr.xr"; xs: "cr.xs"; xt: "cr.xt"; xu: "cr.xu"; xv: "cr.xv"; xw: "cr.xw"; xx: "cr.xx"; xy: "cr.xy"; xz: "cr.xz"; ya: "cr.ya"; yb: "cr.yb"; yc: "cr.yc"; yd: "cr.yd"; ye: "cr.ye"; yf: "cr.yf"; yg: "cr.yg"; yh: "cr.yh"; yi: "cr.yi"; yj: "cr.yj"; yk: "cr.yk"; yl: "cr.yl"; ym: "cr.ym"; yn: "cr.yn"; yo: "cr.yo"; yp: "cr.yp"; yq: "cr.yq"; yr: "cr.yr"; ys: "cr.ys"; yt: "cr.yt"; yu: "cr.yu"; yv: "cr.yv"; yw: "cr.yw"; yx: "cr.yx"; yy: "cr.yy"; yz: "cr.yz"; za: "cr.za"; zb: "cr.zb"; zc: "cr.zc"; zd: "cr.zd"; ze: "cr.ze"; zf: "cr.zf"; zg: "cr.zg"; zh: "cr.zh"; zi: "cr.zi"; zj: "cr.zj"; zk: "cr.zk"; zl: "cr.zl"; zm: "cr.zm"; zn: "cr.zn"; zo: "cr.zo"; zp: "cr.zp"; zq: "cr.zq"; zr: "cr.zr"; zs: "cr.zs"; zt: "cr.zt"; zu: "cr.zu"; zv: "cr.zv"; zw: "cr.zw"; zx: "cr.zx"; zy: "cr.zy"; zz: "cr.zz"; }; cs: { aa: "cs.aa"; ab: "cs.ab"; ac: "cs.ac"; ad: "cs.ad"; ae: "cs.ae"; af: "cs.af"; ag: "cs.ag"; ah: "cs.ah"; ai: "cs.ai"; aj: "cs.aj"; ak: "cs.ak"; al: "cs.al"; am: "cs.am"; an: "cs.an"; ao: "cs.ao"; ap: "cs.ap"; aq: "cs.aq"; ar: "cs.ar"; as: "cs.as"; at: "cs.at"; au: "cs.au"; av: "cs.av"; aw: "cs.aw"; ax: "cs.ax"; ay: "cs.ay"; az: "cs.az"; ba: "cs.ba"; bb: "cs.bb"; bc: "cs.bc"; bd: "cs.bd"; be: "cs.be"; bf: "cs.bf"; bg: "cs.bg"; bh: "cs.bh"; bi: "cs.bi"; bj: "cs.bj"; bk: "cs.bk"; bl: "cs.bl"; bm: "cs.bm"; bn: "cs.bn"; bo: "cs.bo"; bp: "cs.bp"; bq: "cs.bq"; br: "cs.br"; bs: "cs.bs"; bt: "cs.bt"; bu: "cs.bu"; bv: "cs.bv"; bw: "cs.bw"; bx: "cs.bx"; by: "cs.by"; bz: "cs.bz"; ca: "cs.ca"; cb: "cs.cb"; cc: "cs.cc"; cd: "cs.cd"; ce: "cs.ce"; cf: "cs.cf"; cg: "cs.cg"; ch: "cs.ch"; ci: "cs.ci"; cj: "cs.cj"; ck: "cs.ck"; cl: "cs.cl"; cm: "cs.cm"; cn: "cs.cn"; co: "cs.co"; cp: "cs.cp"; cq: "cs.cq"; cr: "cs.cr"; cs: "cs.cs"; ct: "cs.ct"; cu: "cs.cu"; cv: "cs.cv"; cw: "cs.cw"; cx: "cs.cx"; cy: "cs.cy"; cz: "cs.cz"; da: "cs.da"; db: "cs.db"; dc: "cs.dc"; dd: "cs.dd"; de: "cs.de"; df: "cs.df"; dg: "cs.dg"; dh: "cs.dh"; di: "cs.di"; dj: "cs.dj"; dk: "cs.dk"; dl: "cs.dl"; dm: "cs.dm"; dn: "cs.dn"; do: "cs.do"; dp: "cs.dp"; dq: "cs.dq"; dr: "cs.dr"; ds: "cs.ds"; dt: "cs.dt"; du: "cs.du"; dv: "cs.dv"; dw: "cs.dw"; dx: "cs.dx"; dy: "cs.dy"; dz: "cs.dz"; ea: "cs.ea"; eb: "cs.eb"; ec: "cs.ec"; ed: "cs.ed"; ee: "cs.ee"; ef: "cs.ef"; eg: "cs.eg"; eh: "cs.eh"; ei: "cs.ei"; ej: "cs.ej"; ek: "cs.ek"; el: "cs.el"; em: "cs.em"; en: "cs.en"; eo: "cs.eo"; ep: "cs.ep"; eq: "cs.eq"; er: "cs.er"; es: "cs.es"; et: "cs.et"; eu: "cs.eu"; ev: "cs.ev"; ew: "cs.ew"; ex: "cs.ex"; ey: "cs.ey"; ez: "cs.ez"; fa: "cs.fa"; fb: "cs.fb"; fc: "cs.fc"; fd: "cs.fd"; fe: "cs.fe"; ff: "cs.ff"; fg: "cs.fg"; fh: "cs.fh"; fi: "cs.fi"; fj: "cs.fj"; fk: "cs.fk"; fl: "cs.fl"; fm: "cs.fm"; fn: "cs.fn"; fo: "cs.fo"; fp: "cs.fp"; fq: "cs.fq"; fr: "cs.fr"; fs: "cs.fs"; ft: "cs.ft"; fu: "cs.fu"; fv: "cs.fv"; fw: "cs.fw"; fx: "cs.fx"; fy: "cs.fy"; fz: "cs.fz"; ga: "cs.ga"; gb: "cs.gb"; gc: "cs.gc"; gd: "cs.gd"; ge: "cs.ge"; gf: "cs.gf"; gg: "cs.gg"; gh: "cs.gh"; gi: "cs.gi"; gj: "cs.gj"; gk: "cs.gk"; gl: "cs.gl"; gm: "cs.gm"; gn: "cs.gn"; go: "cs.go"; gp: "cs.gp"; gq: "cs.gq"; gr: "cs.gr"; gs: "cs.gs"; gt: "cs.gt"; gu: "cs.gu"; gv: "cs.gv"; gw: "cs.gw"; gx: "cs.gx"; gy: "cs.gy"; gz: "cs.gz"; ha: "cs.ha"; hb: "cs.hb"; hc: "cs.hc"; hd: "cs.hd"; he: "cs.he"; hf: "cs.hf"; hg: "cs.hg"; hh: "cs.hh"; hi: "cs.hi"; hj: "cs.hj"; hk: "cs.hk"; hl: "cs.hl"; hm: "cs.hm"; hn: "cs.hn"; ho: "cs.ho"; hp: "cs.hp"; hq: "cs.hq"; hr: "cs.hr"; hs: "cs.hs"; ht: "cs.ht"; hu: "cs.hu"; hv: "cs.hv"; hw: "cs.hw"; hx: "cs.hx"; hy: "cs.hy"; hz: "cs.hz"; ia: "cs.ia"; ib: "cs.ib"; ic: "cs.ic"; id: "cs.id"; ie: "cs.ie"; if: "cs.if"; ig: "cs.ig"; ih: "cs.ih"; ii: "cs.ii"; ij: "cs.ij"; ik: "cs.ik"; il: "cs.il"; im: "cs.im"; in: "cs.in"; io: "cs.io"; ip: "cs.ip"; iq: "cs.iq"; ir: "cs.ir"; is: "cs.is"; it: "cs.it"; iu: "cs.iu"; iv: "cs.iv"; iw: "cs.iw"; ix: "cs.ix"; iy: "cs.iy"; iz: "cs.iz"; ja: "cs.ja"; jb: "cs.jb"; jc: "cs.jc"; jd: "cs.jd"; je: "cs.je"; jf: "cs.jf"; jg: "cs.jg"; jh: "cs.jh"; ji: "cs.ji"; jj: "cs.jj"; jk: "cs.jk"; jl: "cs.jl"; jm: "cs.jm"; jn: "cs.jn"; jo: "cs.jo"; jp: "cs.jp"; jq: "cs.jq"; jr: "cs.jr"; js: "cs.js"; jt: "cs.jt"; ju: "cs.ju"; jv: "cs.jv"; jw: "cs.jw"; jx: "cs.jx"; jy: "cs.jy"; jz: "cs.jz"; ka: "cs.ka"; kb: "cs.kb"; kc: "cs.kc"; kd: "cs.kd"; ke: "cs.ke"; kf: "cs.kf"; kg: "cs.kg"; kh: "cs.kh"; ki: "cs.ki"; kj: "cs.kj"; kk: "cs.kk"; kl: "cs.kl"; km: "cs.km"; kn: "cs.kn"; ko: "cs.ko"; kp: "cs.kp"; kq: "cs.kq"; kr: "cs.kr"; ks: "cs.ks"; kt: "cs.kt"; ku: "cs.ku"; kv: "cs.kv"; kw: "cs.kw"; kx: "cs.kx"; ky: "cs.ky"; kz: "cs.kz"; la: "cs.la"; lb: "cs.lb"; lc: "cs.lc"; ld: "cs.ld"; le: "cs.le"; lf: "cs.lf"; lg: "cs.lg"; lh: "cs.lh"; li: "cs.li"; lj: "cs.lj"; lk: "cs.lk"; ll: "cs.ll"; lm: "cs.lm"; ln: "cs.ln"; lo: "cs.lo"; lp: "cs.lp"; lq: "cs.lq"; lr: "cs.lr"; ls: "cs.ls"; lt: "cs.lt"; lu: "cs.lu"; lv: "cs.lv"; lw: "cs.lw"; lx: "cs.lx"; ly: "cs.ly"; lz: "cs.lz"; ma: "cs.ma"; mb: "cs.mb"; mc: "cs.mc"; md: "cs.md"; me: "cs.me"; mf: "cs.mf"; mg: "cs.mg"; mh: "cs.mh"; mi: "cs.mi"; mj: "cs.mj"; mk: "cs.mk"; ml: "cs.ml"; mm: "cs.mm"; mn: "cs.mn"; mo: "cs.mo"; mp: "cs.mp"; mq: "cs.mq"; mr: "cs.mr"; ms: "cs.ms"; mt: "cs.mt"; mu: "cs.mu"; mv: "cs.mv"; mw: "cs.mw"; mx: "cs.mx"; my: "cs.my"; mz: "cs.mz"; na: "cs.na"; nb: "cs.nb"; nc: "cs.nc"; nd: "cs.nd"; ne: "cs.ne"; nf: "cs.nf"; ng: "cs.ng"; nh: "cs.nh"; ni: "cs.ni"; nj: "cs.nj"; nk: "cs.nk"; nl: "cs.nl"; nm: "cs.nm"; nn: "cs.nn"; no: "cs.no"; np: "cs.np"; nq: "cs.nq"; nr: "cs.nr"; ns: "cs.ns"; nt: "cs.nt"; nu: "cs.nu"; nv: "cs.nv"; nw: "cs.nw"; nx: "cs.nx"; ny: "cs.ny"; nz: "cs.nz"; oa: "cs.oa"; ob: "cs.ob"; oc: "cs.oc"; od: "cs.od"; oe: "cs.oe"; of: "cs.of"; og: "cs.og"; oh: "cs.oh"; oi: "cs.oi"; oj: "cs.oj"; ok: "cs.ok"; ol: "cs.ol"; om: "cs.om"; on: "cs.on"; oo: "cs.oo"; op: "cs.op"; oq: "cs.oq"; or: "cs.or"; os: "cs.os"; ot: "cs.ot"; ou: "cs.ou"; ov: "cs.ov"; ow: "cs.ow"; ox: "cs.ox"; oy: "cs.oy"; oz: "cs.oz"; pa: "cs.pa"; pb: "cs.pb"; pc: "cs.pc"; pd: "cs.pd"; pe: "cs.pe"; pf: "cs.pf"; pg: "cs.pg"; ph: "cs.ph"; pi: "cs.pi"; pj: "cs.pj"; pk: "cs.pk"; pl: "cs.pl"; pm: "cs.pm"; pn: "cs.pn"; po: "cs.po"; pp: "cs.pp"; pq: "cs.pq"; pr: "cs.pr"; ps: "cs.ps"; pt: "cs.pt"; pu: "cs.pu"; pv: "cs.pv"; pw: "cs.pw"; px: "cs.px"; py: "cs.py"; pz: "cs.pz"; qa: "cs.qa"; qb: "cs.qb"; qc: "cs.qc"; qd: "cs.qd"; qe: "cs.qe"; qf: "cs.qf"; qg: "cs.qg"; qh: "cs.qh"; qi: "cs.qi"; qj: "cs.qj"; qk: "cs.qk"; ql: "cs.ql"; qm: "cs.qm"; qn: "cs.qn"; qo: "cs.qo"; qp: "cs.qp"; qq: "cs.qq"; qr: "cs.qr"; qs: "cs.qs"; qt: "cs.qt"; qu: "cs.qu"; qv: "cs.qv"; qw: "cs.qw"; qx: "cs.qx"; qy: "cs.qy"; qz: "cs.qz"; ra: "cs.ra"; rb: "cs.rb"; rc: "cs.rc"; rd: "cs.rd"; re: "cs.re"; rf: "cs.rf"; rg: "cs.rg"; rh: "cs.rh"; ri: "cs.ri"; rj: "cs.rj"; rk: "cs.rk"; rl: "cs.rl"; rm: "cs.rm"; rn: "cs.rn"; ro: "cs.ro"; rp: "cs.rp"; rq: "cs.rq"; rr: "cs.rr"; rs: "cs.rs"; rt: "cs.rt"; ru: "cs.ru"; rv: "cs.rv"; rw: "cs.rw"; rx: "cs.rx"; ry: "cs.ry"; rz: "cs.rz"; sa: "cs.sa"; sb: "cs.sb"; sc: "cs.sc"; sd: "cs.sd"; se: "cs.se"; sf: "cs.sf"; sg: "cs.sg"; sh: "cs.sh"; si: "cs.si"; sj: "cs.sj"; sk: "cs.sk"; sl: "cs.sl"; sm: "cs.sm"; sn: "cs.sn"; so: "cs.so"; sp: "cs.sp"; sq: "cs.sq"; sr: "cs.sr"; ss: "cs.ss"; st: "cs.st"; su: "cs.su"; sv: "cs.sv"; sw: "cs.sw"; sx: "cs.sx"; sy: "cs.sy"; sz: "cs.sz"; ta: "cs.ta"; tb: "cs.tb"; tc: "cs.tc"; td: "cs.td"; te: "cs.te"; tf: "cs.tf"; tg: "cs.tg"; th: "cs.th"; ti: "cs.ti"; tj: "cs.tj"; tk: "cs.tk"; tl: "cs.tl"; tm: "cs.tm"; tn: "cs.tn"; to: "cs.to"; tp: "cs.tp"; tq: "cs.tq"; tr: "cs.tr"; ts: "cs.ts"; tt: "cs.tt"; tu: "cs.tu"; tv: "cs.tv"; tw: "cs.tw"; tx: "cs.tx"; ty: "cs.ty"; tz: "cs.tz"; ua: "cs.ua"; ub: "cs.ub"; uc: "cs.uc"; ud: "cs.ud"; ue: "cs.ue"; uf: "cs.uf"; ug: "cs.ug"; uh: "cs.uh"; ui: "cs.ui"; uj: "cs.uj"; uk: "cs.uk"; ul: "cs.ul"; um: "cs.um"; un: "cs.un"; uo: "cs.uo"; up: "cs.up"; uq: "cs.uq"; ur: "cs.ur"; us: "cs.us"; ut: "cs.ut"; uu: "cs.uu"; uv: "cs.uv"; uw: "cs.uw"; ux: "cs.ux"; uy: "cs.uy"; uz: "cs.uz"; va: "cs.va"; vb: "cs.vb"; vc: "cs.vc"; vd: "cs.vd"; ve: "cs.ve"; vf: "cs.vf"; vg: "cs.vg"; vh: "cs.vh"; vi: "cs.vi"; vj: "cs.vj"; vk: "cs.vk"; vl: "cs.vl"; vm: "cs.vm"; vn: "cs.vn"; vo: "cs.vo"; vp: "cs.vp"; vq: "cs.vq"; vr: "cs.vr"; vs: "cs.vs"; vt: "cs.vt"; vu: "cs.vu"; vv: "cs.vv"; vw: "cs.vw"; vx: "cs.vx"; vy: "cs.vy"; vz: "cs.vz"; wa: "cs.wa"; wb: "cs.wb"; wc: "cs.wc"; wd: "cs.wd"; we: "cs.we"; wf: "cs.wf"; wg: "cs.wg"; wh: "cs.wh"; wi: "cs.wi"; wj: "cs.wj"; wk: "cs.wk"; wl: "cs.wl"; wm: "cs.wm"; wn: "cs.wn"; wo: "cs.wo"; wp: "cs.wp"; wq: "cs.wq"; wr: "cs.wr"; ws: "cs.ws"; wt: "cs.wt"; wu: "cs.wu"; wv: "cs.wv"; ww: "cs.ww"; wx: "cs.wx"; wy: "cs.wy"; wz: "cs.wz"; xa: "cs.xa"; xb: "cs.xb"; xc: "cs.xc"; xd: "cs.xd"; xe: "cs.xe"; xf: "cs.xf"; xg: "cs.xg"; xh: "cs.xh"; xi: "cs.xi"; xj: "cs.xj"; xk: "cs.xk"; xl: "cs.xl"; xm: "cs.xm"; xn: "cs.xn"; xo: "cs.xo"; xp: "cs.xp"; xq: "cs.xq"; xr: "cs.xr"; xs: "cs.xs"; xt: "cs.xt"; xu: "cs.xu"; xv: "cs.xv"; xw: "cs.xw"; xx: "cs.xx"; xy: "cs.xy"; xz: "cs.xz"; ya: "cs.ya"; yb: "cs.yb"; yc: "cs.yc"; yd: "cs.yd"; ye: "cs.ye"; yf: "cs.yf"; yg: "cs.yg"; yh: "cs.yh"; yi: "cs.yi"; yj: "cs.yj"; yk: "cs.yk"; yl: "cs.yl"; ym: "cs.ym"; yn: "cs.yn"; yo: "cs.yo"; yp: "cs.yp"; yq: "cs.yq"; yr: "cs.yr"; ys: "cs.ys"; yt: "cs.yt"; yu: "cs.yu"; yv: "cs.yv"; yw: "cs.yw"; yx: "cs.yx"; yy: "cs.yy"; yz: "cs.yz"; za: "cs.za"; zb: "cs.zb"; zc: "cs.zc"; zd: "cs.zd"; ze: "cs.ze"; zf: "cs.zf"; zg: "cs.zg"; zh: "cs.zh"; zi: "cs.zi"; zj: "cs.zj"; zk: "cs.zk"; zl: "cs.zl"; zm: "cs.zm"; zn: "cs.zn"; zo: "cs.zo"; zp: "cs.zp"; zq: "cs.zq"; zr: "cs.zr"; zs: "cs.zs"; zt: "cs.zt"; zu: "cs.zu"; zv: "cs.zv"; zw: "cs.zw"; zx: "cs.zx"; zy: "cs.zy"; zz: "cs.zz"; }; ct: { aa: "ct.aa"; ab: "ct.ab"; ac: "ct.ac"; ad: "ct.ad"; ae: "ct.ae"; af: "ct.af"; ag: "ct.ag"; ah: "ct.ah"; ai: "ct.ai"; aj: "ct.aj"; ak: "ct.ak"; al: "ct.al"; am: "ct.am"; an: "ct.an"; ao: "ct.ao"; ap: "ct.ap"; aq: "ct.aq"; ar: "ct.ar"; as: "ct.as"; at: "ct.at"; au: "ct.au"; av: "ct.av"; aw: "ct.aw"; ax: "ct.ax"; ay: "ct.ay"; az: "ct.az"; ba: "ct.ba"; bb: "ct.bb"; bc: "ct.bc"; bd: "ct.bd"; be: "ct.be"; bf: "ct.bf"; bg: "ct.bg"; bh: "ct.bh"; bi: "ct.bi"; bj: "ct.bj"; bk: "ct.bk"; bl: "ct.bl"; bm: "ct.bm"; bn: "ct.bn"; bo: "ct.bo"; bp: "ct.bp"; bq: "ct.bq"; br: "ct.br"; bs: "ct.bs"; bt: "ct.bt"; bu: "ct.bu"; bv: "ct.bv"; bw: "ct.bw"; bx: "ct.bx"; by: "ct.by"; bz: "ct.bz"; ca: "ct.ca"; cb: "ct.cb"; cc: "ct.cc"; cd: "ct.cd"; ce: "ct.ce"; cf: "ct.cf"; cg: "ct.cg"; ch: "ct.ch"; ci: "ct.ci"; cj: "ct.cj"; ck: "ct.ck"; cl: "ct.cl"; cm: "ct.cm"; cn: "ct.cn"; co: "ct.co"; cp: "ct.cp"; cq: "ct.cq"; cr: "ct.cr"; cs: "ct.cs"; ct: "ct.ct"; cu: "ct.cu"; cv: "ct.cv"; cw: "ct.cw"; cx: "ct.cx"; cy: "ct.cy"; cz: "ct.cz"; da: "ct.da"; db: "ct.db"; dc: "ct.dc"; dd: "ct.dd"; de: "ct.de"; df: "ct.df"; dg: "ct.dg"; dh: "ct.dh"; di: "ct.di"; dj: "ct.dj"; dk: "ct.dk"; dl: "ct.dl"; dm: "ct.dm"; dn: "ct.dn"; do: "ct.do"; dp: "ct.dp"; dq: "ct.dq"; dr: "ct.dr"; ds: "ct.ds"; dt: "ct.dt"; du: "ct.du"; dv: "ct.dv"; dw: "ct.dw"; dx: "ct.dx"; dy: "ct.dy"; dz: "ct.dz"; ea: "ct.ea"; eb: "ct.eb"; ec: "ct.ec"; ed: "ct.ed"; ee: "ct.ee"; ef: "ct.ef"; eg: "ct.eg"; eh: "ct.eh"; ei: "ct.ei"; ej: "ct.ej"; ek: "ct.ek"; el: "ct.el"; em: "ct.em"; en: "ct.en"; eo: "ct.eo"; ep: "ct.ep"; eq: "ct.eq"; er: "ct.er"; es: "ct.es"; et: "ct.et"; eu: "ct.eu"; ev: "ct.ev"; ew: "ct.ew"; ex: "ct.ex"; ey: "ct.ey"; ez: "ct.ez"; fa: "ct.fa"; fb: "ct.fb"; fc: "ct.fc"; fd: "ct.fd"; fe: "ct.fe"; ff: "ct.ff"; fg: "ct.fg"; fh: "ct.fh"; fi: "ct.fi"; fj: "ct.fj"; fk: "ct.fk"; fl: "ct.fl"; fm: "ct.fm"; fn: "ct.fn"; fo: "ct.fo"; fp: "ct.fp"; fq: "ct.fq"; fr: "ct.fr"; fs: "ct.fs"; ft: "ct.ft"; fu: "ct.fu"; fv: "ct.fv"; fw: "ct.fw"; fx: "ct.fx"; fy: "ct.fy"; fz: "ct.fz"; ga: "ct.ga"; gb: "ct.gb"; gc: "ct.gc"; gd: "ct.gd"; ge: "ct.ge"; gf: "ct.gf"; gg: "ct.gg"; gh: "ct.gh"; gi: "ct.gi"; gj: "ct.gj"; gk: "ct.gk"; gl: "ct.gl"; gm: "ct.gm"; gn: "ct.gn"; go: "ct.go"; gp: "ct.gp"; gq: "ct.gq"; gr: "ct.gr"; gs: "ct.gs"; gt: "ct.gt"; gu: "ct.gu"; gv: "ct.gv"; gw: "ct.gw"; gx: "ct.gx"; gy: "ct.gy"; gz: "ct.gz"; ha: "ct.ha"; hb: "ct.hb"; hc: "ct.hc"; hd: "ct.hd"; he: "ct.he"; hf: "ct.hf"; hg: "ct.hg"; hh: "ct.hh"; hi: "ct.hi"; hj: "ct.hj"; hk: "ct.hk"; hl: "ct.hl"; hm: "ct.hm"; hn: "ct.hn"; ho: "ct.ho"; hp: "ct.hp"; hq: "ct.hq"; hr: "ct.hr"; hs: "ct.hs"; ht: "ct.ht"; hu: "ct.hu"; hv: "ct.hv"; hw: "ct.hw"; hx: "ct.hx"; hy: "ct.hy"; hz: "ct.hz"; ia: "ct.ia"; ib: "ct.ib"; ic: "ct.ic"; id: "ct.id"; ie: "ct.ie"; if: "ct.if"; ig: "ct.ig"; ih: "ct.ih"; ii: "ct.ii"; ij: "ct.ij"; ik: "ct.ik"; il: "ct.il"; im: "ct.im"; in: "ct.in"; io: "ct.io"; ip: "ct.ip"; iq: "ct.iq"; ir: "ct.ir"; is: "ct.is"; it: "ct.it"; iu: "ct.iu"; iv: "ct.iv"; iw: "ct.iw"; ix: "ct.ix"; iy: "ct.iy"; iz: "ct.iz"; ja: "ct.ja"; jb: "ct.jb"; jc: "ct.jc"; jd: "ct.jd"; je: "ct.je"; jf: "ct.jf"; jg: "ct.jg"; jh: "ct.jh"; ji: "ct.ji"; jj: "ct.jj"; jk: "ct.jk"; jl: "ct.jl"; jm: "ct.jm"; jn: "ct.jn"; jo: "ct.jo"; jp: "ct.jp"; jq: "ct.jq"; jr: "ct.jr"; js: "ct.js"; jt: "ct.jt"; ju: "ct.ju"; jv: "ct.jv"; jw: "ct.jw"; jx: "ct.jx"; jy: "ct.jy"; jz: "ct.jz"; ka: "ct.ka"; kb: "ct.kb"; kc: "ct.kc"; kd: "ct.kd"; ke: "ct.ke"; kf: "ct.kf"; kg: "ct.kg"; kh: "ct.kh"; ki: "ct.ki"; kj: "ct.kj"; kk: "ct.kk"; kl: "ct.kl"; km: "ct.km"; kn: "ct.kn"; ko: "ct.ko"; kp: "ct.kp"; kq: "ct.kq"; kr: "ct.kr"; ks: "ct.ks"; kt: "ct.kt"; ku: "ct.ku"; kv: "ct.kv"; kw: "ct.kw"; kx: "ct.kx"; ky: "ct.ky"; kz: "ct.kz"; la: "ct.la"; lb: "ct.lb"; lc: "ct.lc"; ld: "ct.ld"; le: "ct.le"; lf: "ct.lf"; lg: "ct.lg"; lh: "ct.lh"; li: "ct.li"; lj: "ct.lj"; lk: "ct.lk"; ll: "ct.ll"; lm: "ct.lm"; ln: "ct.ln"; lo: "ct.lo"; lp: "ct.lp"; lq: "ct.lq"; lr: "ct.lr"; ls: "ct.ls"; lt: "ct.lt"; lu: "ct.lu"; lv: "ct.lv"; lw: "ct.lw"; lx: "ct.lx"; ly: "ct.ly"; lz: "ct.lz"; ma: "ct.ma"; mb: "ct.mb"; mc: "ct.mc"; md: "ct.md"; me: "ct.me"; mf: "ct.mf"; mg: "ct.mg"; mh: "ct.mh"; mi: "ct.mi"; mj: "ct.mj"; mk: "ct.mk"; ml: "ct.ml"; mm: "ct.mm"; mn: "ct.mn"; mo: "ct.mo"; mp: "ct.mp"; mq: "ct.mq"; mr: "ct.mr"; ms: "ct.ms"; mt: "ct.mt"; mu: "ct.mu"; mv: "ct.mv"; mw: "ct.mw"; mx: "ct.mx"; my: "ct.my"; mz: "ct.mz"; na: "ct.na"; nb: "ct.nb"; nc: "ct.nc"; nd: "ct.nd"; ne: "ct.ne"; nf: "ct.nf"; ng: "ct.ng"; nh: "ct.nh"; ni: "ct.ni"; nj: "ct.nj"; nk: "ct.nk"; nl: "ct.nl"; nm: "ct.nm"; nn: "ct.nn"; no: "ct.no"; np: "ct.np"; nq: "ct.nq"; nr: "ct.nr"; ns: "ct.ns"; nt: "ct.nt"; nu: "ct.nu"; nv: "ct.nv"; nw: "ct.nw"; nx: "ct.nx"; ny: "ct.ny"; nz: "ct.nz"; oa: "ct.oa"; ob: "ct.ob"; oc: "ct.oc"; od: "ct.od"; oe: "ct.oe"; of: "ct.of"; og: "ct.og"; oh: "ct.oh"; oi: "ct.oi"; oj: "ct.oj"; ok: "ct.ok"; ol: "ct.ol"; om: "ct.om"; on: "ct.on"; oo: "ct.oo"; op: "ct.op"; oq: "ct.oq"; or: "ct.or"; os: "ct.os"; ot: "ct.ot"; ou: "ct.ou"; ov: "ct.ov"; ow: "ct.ow"; ox: "ct.ox"; oy: "ct.oy"; oz: "ct.oz"; pa: "ct.pa"; pb: "ct.pb"; pc: "ct.pc"; pd: "ct.pd"; pe: "ct.pe"; pf: "ct.pf"; pg: "ct.pg"; ph: "ct.ph"; pi: "ct.pi"; pj: "ct.pj"; pk: "ct.pk"; pl: "ct.pl"; pm: "ct.pm"; pn: "ct.pn"; po: "ct.po"; pp: "ct.pp"; pq: "ct.pq"; pr: "ct.pr"; ps: "ct.ps"; pt: "ct.pt"; pu: "ct.pu"; pv: "ct.pv"; pw: "ct.pw"; px: "ct.px"; py: "ct.py"; pz: "ct.pz"; qa: "ct.qa"; qb: "ct.qb"; qc: "ct.qc"; qd: "ct.qd"; qe: "ct.qe"; qf: "ct.qf"; qg: "ct.qg"; qh: "ct.qh"; qi: "ct.qi"; qj: "ct.qj"; qk: "ct.qk"; ql: "ct.ql"; qm: "ct.qm"; qn: "ct.qn"; qo: "ct.qo"; qp: "ct.qp"; qq: "ct.qq"; qr: "ct.qr"; qs: "ct.qs"; qt: "ct.qt"; qu: "ct.qu"; qv: "ct.qv"; qw: "ct.qw"; qx: "ct.qx"; qy: "ct.qy"; qz: "ct.qz"; ra: "ct.ra"; rb: "ct.rb"; rc: "ct.rc"; rd: "ct.rd"; re: "ct.re"; rf: "ct.rf"; rg: "ct.rg"; rh: "ct.rh"; ri: "ct.ri"; rj: "ct.rj"; rk: "ct.rk"; rl: "ct.rl"; rm: "ct.rm"; rn: "ct.rn"; ro: "ct.ro"; rp: "ct.rp"; rq: "ct.rq"; rr: "ct.rr"; rs: "ct.rs"; rt: "ct.rt"; ru: "ct.ru"; rv: "ct.rv"; rw: "ct.rw"; rx: "ct.rx"; ry: "ct.ry"; rz: "ct.rz"; sa: "ct.sa"; sb: "ct.sb"; sc: "ct.sc"; sd: "ct.sd"; se: "ct.se"; sf: "ct.sf"; sg: "ct.sg"; sh: "ct.sh"; si: "ct.si"; sj: "ct.sj"; sk: "ct.sk"; sl: "ct.sl"; sm: "ct.sm"; sn: "ct.sn"; so: "ct.so"; sp: "ct.sp"; sq: "ct.sq"; sr: "ct.sr"; ss: "ct.ss"; st: "ct.st"; su: "ct.su"; sv: "ct.sv"; sw: "ct.sw"; sx: "ct.sx"; sy: "ct.sy"; sz: "ct.sz"; ta: "ct.ta"; tb: "ct.tb"; tc: "ct.tc"; td: "ct.td"; te: "ct.te"; tf: "ct.tf"; tg: "ct.tg"; th: "ct.th"; ti: "ct.ti"; tj: "ct.tj"; tk: "ct.tk"; tl: "ct.tl"; tm: "ct.tm"; tn: "ct.tn"; to: "ct.to"; tp: "ct.tp"; tq: "ct.tq"; tr: "ct.tr"; ts: "ct.ts"; tt: "ct.tt"; tu: "ct.tu"; tv: "ct.tv"; tw: "ct.tw"; tx: "ct.tx"; ty: "ct.ty"; tz: "ct.tz"; ua: "ct.ua"; ub: "ct.ub"; uc: "ct.uc"; ud: "ct.ud"; ue: "ct.ue"; uf: "ct.uf"; ug: "ct.ug"; uh: "ct.uh"; ui: "ct.ui"; uj: "ct.uj"; uk: "ct.uk"; ul: "ct.ul"; um: "ct.um"; un: "ct.un"; uo: "ct.uo"; up: "ct.up"; uq: "ct.uq"; ur: "ct.ur"; us: "ct.us"; ut: "ct.ut"; uu: "ct.uu"; uv: "ct.uv"; uw: "ct.uw"; ux: "ct.ux"; uy: "ct.uy"; uz: "ct.uz"; va: "ct.va"; vb: "ct.vb"; vc: "ct.vc"; vd: "ct.vd"; ve: "ct.ve"; vf: "ct.vf"; vg: "ct.vg"; vh: "ct.vh"; vi: "ct.vi"; vj: "ct.vj"; vk: "ct.vk"; vl: "ct.vl"; vm: "ct.vm"; vn: "ct.vn"; vo: "ct.vo"; vp: "ct.vp"; vq: "ct.vq"; vr: "ct.vr"; vs: "ct.vs"; vt: "ct.vt"; vu: "ct.vu"; vv: "ct.vv"; vw: "ct.vw"; vx: "ct.vx"; vy: "ct.vy"; vz: "ct.vz"; wa: "ct.wa"; wb: "ct.wb"; wc: "ct.wc"; wd: "ct.wd"; we: "ct.we"; wf: "ct.wf"; wg: "ct.wg"; wh: "ct.wh"; wi: "ct.wi"; wj: "ct.wj"; wk: "ct.wk"; wl: "ct.wl"; wm: "ct.wm"; wn: "ct.wn"; wo: "ct.wo"; wp: "ct.wp"; wq: "ct.wq"; wr: "ct.wr"; ws: "ct.ws"; wt: "ct.wt"; wu: "ct.wu"; wv: "ct.wv"; ww: "ct.ww"; wx: "ct.wx"; wy: "ct.wy"; wz: "ct.wz"; xa: "ct.xa"; xb: "ct.xb"; xc: "ct.xc"; xd: "ct.xd"; xe: "ct.xe"; xf: "ct.xf"; xg: "ct.xg"; xh: "ct.xh"; xi: "ct.xi"; xj: "ct.xj"; xk: "ct.xk"; xl: "ct.xl"; xm: "ct.xm"; xn: "ct.xn"; xo: "ct.xo"; xp: "ct.xp"; xq: "ct.xq"; xr: "ct.xr"; xs: "ct.xs"; xt: "ct.xt"; xu: "ct.xu"; xv: "ct.xv"; xw: "ct.xw"; xx: "ct.xx"; xy: "ct.xy"; xz: "ct.xz"; ya: "ct.ya"; yb: "ct.yb"; yc: "ct.yc"; yd: "ct.yd"; ye: "ct.ye"; yf: "ct.yf"; yg: "ct.yg"; yh: "ct.yh"; yi: "ct.yi"; yj: "ct.yj"; yk: "ct.yk"; yl: "ct.yl"; ym: "ct.ym"; yn: "ct.yn"; yo: "ct.yo"; yp: "ct.yp"; yq: "ct.yq"; yr: "ct.yr"; ys: "ct.ys"; yt: "ct.yt"; yu: "ct.yu"; yv: "ct.yv"; yw: "ct.yw"; yx: "ct.yx"; yy: "ct.yy"; yz: "ct.yz"; za: "ct.za"; zb: "ct.zb"; zc: "ct.zc"; zd: "ct.zd"; ze: "ct.ze"; zf: "ct.zf"; zg: "ct.zg"; zh: "ct.zh"; zi: "ct.zi"; zj: "ct.zj"; zk: "ct.zk"; zl: "ct.zl"; zm: "ct.zm"; zn: "ct.zn"; zo: "ct.zo"; zp: "ct.zp"; zq: "ct.zq"; zr: "ct.zr"; zs: "ct.zs"; zt: "ct.zt"; zu: "ct.zu"; zv: "ct.zv"; zw: "ct.zw"; zx: "ct.zx"; zy: "ct.zy"; zz: "ct.zz"; }; cu: { aa: "cu.aa"; ab: "cu.ab"; ac: "cu.ac"; ad: "cu.ad"; ae: "cu.ae"; af: "cu.af"; ag: "cu.ag"; ah: "cu.ah"; ai: "cu.ai"; aj: "cu.aj"; ak: "cu.ak"; al: "cu.al"; am: "cu.am"; an: "cu.an"; ao: "cu.ao"; ap: "cu.ap"; aq: "cu.aq"; ar: "cu.ar"; as: "cu.as"; at: "cu.at"; au: "cu.au"; av: "cu.av"; aw: "cu.aw"; ax: "cu.ax"; ay: "cu.ay"; az: "cu.az"; ba: "cu.ba"; bb: "cu.bb"; bc: "cu.bc"; bd: "cu.bd"; be: "cu.be"; bf: "cu.bf"; bg: "cu.bg"; bh: "cu.bh"; bi: "cu.bi"; bj: "cu.bj"; bk: "cu.bk"; bl: "cu.bl"; bm: "cu.bm"; bn: "cu.bn"; bo: "cu.bo"; bp: "cu.bp"; bq: "cu.bq"; br: "cu.br"; bs: "cu.bs"; bt: "cu.bt"; bu: "cu.bu"; bv: "cu.bv"; bw: "cu.bw"; bx: "cu.bx"; by: "cu.by"; bz: "cu.bz"; ca: "cu.ca"; cb: "cu.cb"; cc: "cu.cc"; cd: "cu.cd"; ce: "cu.ce"; cf: "cu.cf"; cg: "cu.cg"; ch: "cu.ch"; ci: "cu.ci"; cj: "cu.cj"; ck: "cu.ck"; cl: "cu.cl"; cm: "cu.cm"; cn: "cu.cn"; co: "cu.co"; cp: "cu.cp"; cq: "cu.cq"; cr: "cu.cr"; cs: "cu.cs"; ct: "cu.ct"; cu: "cu.cu"; cv: "cu.cv"; cw: "cu.cw"; cx: "cu.cx"; cy: "cu.cy"; cz: "cu.cz"; da: "cu.da"; db: "cu.db"; dc: "cu.dc"; dd: "cu.dd"; de: "cu.de"; df: "cu.df"; dg: "cu.dg"; dh: "cu.dh"; di: "cu.di"; dj: "cu.dj"; dk: "cu.dk"; dl: "cu.dl"; dm: "cu.dm"; dn: "cu.dn"; do: "cu.do"; dp: "cu.dp"; dq: "cu.dq"; dr: "cu.dr"; ds: "cu.ds"; dt: "cu.dt"; du: "cu.du"; dv: "cu.dv"; dw: "cu.dw"; dx: "cu.dx"; dy: "cu.dy"; dz: "cu.dz"; ea: "cu.ea"; eb: "cu.eb"; ec: "cu.ec"; ed: "cu.ed"; ee: "cu.ee"; ef: "cu.ef"; eg: "cu.eg"; eh: "cu.eh"; ei: "cu.ei"; ej: "cu.ej"; ek: "cu.ek"; el: "cu.el"; em: "cu.em"; en: "cu.en"; eo: "cu.eo"; ep: "cu.ep"; eq: "cu.eq"; er: "cu.er"; es: "cu.es"; et: "cu.et"; eu: "cu.eu"; ev: "cu.ev"; ew: "cu.ew"; ex: "cu.ex"; ey: "cu.ey"; ez: "cu.ez"; fa: "cu.fa"; fb: "cu.fb"; fc: "cu.fc"; fd: "cu.fd"; fe: "cu.fe"; ff: "cu.ff"; fg: "cu.fg"; fh: "cu.fh"; fi: "cu.fi"; fj: "cu.fj"; fk: "cu.fk"; fl: "cu.fl"; fm: "cu.fm"; fn: "cu.fn"; fo: "cu.fo"; fp: "cu.fp"; fq: "cu.fq"; fr: "cu.fr"; fs: "cu.fs"; ft: "cu.ft"; fu: "cu.fu"; fv: "cu.fv"; fw: "cu.fw"; fx: "cu.fx"; fy: "cu.fy"; fz: "cu.fz"; ga: "cu.ga"; gb: "cu.gb"; gc: "cu.gc"; gd: "cu.gd"; ge: "cu.ge"; gf: "cu.gf"; gg: "cu.gg"; gh: "cu.gh"; gi: "cu.gi"; gj: "cu.gj"; gk: "cu.gk"; gl: "cu.gl"; gm: "cu.gm"; gn: "cu.gn"; go: "cu.go"; gp: "cu.gp"; gq: "cu.gq"; gr: "cu.gr"; gs: "cu.gs"; gt: "cu.gt"; gu: "cu.gu"; gv: "cu.gv"; gw: "cu.gw"; gx: "cu.gx"; gy: "cu.gy"; gz: "cu.gz"; ha: "cu.ha"; hb: "cu.hb"; hc: "cu.hc"; hd: "cu.hd"; he: "cu.he"; hf: "cu.hf"; hg: "cu.hg"; hh: "cu.hh"; hi: "cu.hi"; hj: "cu.hj"; hk: "cu.hk"; hl: "cu.hl"; hm: "cu.hm"; hn: "cu.hn"; ho: "cu.ho"; hp: "cu.hp"; hq: "cu.hq"; hr: "cu.hr"; hs: "cu.hs"; ht: "cu.ht"; hu: "cu.hu"; hv: "cu.hv"; hw: "cu.hw"; hx: "cu.hx"; hy: "cu.hy"; hz: "cu.hz"; ia: "cu.ia"; ib: "cu.ib"; ic: "cu.ic"; id: "cu.id"; ie: "cu.ie"; if: "cu.if"; ig: "cu.ig"; ih: "cu.ih"; ii: "cu.ii"; ij: "cu.ij"; ik: "cu.ik"; il: "cu.il"; im: "cu.im"; in: "cu.in"; io: "cu.io"; ip: "cu.ip"; iq: "cu.iq"; ir: "cu.ir"; is: "cu.is"; it: "cu.it"; iu: "cu.iu"; iv: "cu.iv"; iw: "cu.iw"; ix: "cu.ix"; iy: "cu.iy"; iz: "cu.iz"; ja: "cu.ja"; jb: "cu.jb"; jc: "cu.jc"; jd: "cu.jd"; je: "cu.je"; jf: "cu.jf"; jg: "cu.jg"; jh: "cu.jh"; ji: "cu.ji"; jj: "cu.jj"; jk: "cu.jk"; jl: "cu.jl"; jm: "cu.jm"; jn: "cu.jn"; jo: "cu.jo"; jp: "cu.jp"; jq: "cu.jq"; jr: "cu.jr"; js: "cu.js"; jt: "cu.jt"; ju: "cu.ju"; jv: "cu.jv"; jw: "cu.jw"; jx: "cu.jx"; jy: "cu.jy"; jz: "cu.jz"; ka: "cu.ka"; kb: "cu.kb"; kc: "cu.kc"; kd: "cu.kd"; ke: "cu.ke"; kf: "cu.kf"; kg: "cu.kg"; kh: "cu.kh"; ki: "cu.ki"; kj: "cu.kj"; kk: "cu.kk"; kl: "cu.kl"; km: "cu.km"; kn: "cu.kn"; ko: "cu.ko"; kp: "cu.kp"; kq: "cu.kq"; kr: "cu.kr"; ks: "cu.ks"; kt: "cu.kt"; ku: "cu.ku"; kv: "cu.kv"; kw: "cu.kw"; kx: "cu.kx"; ky: "cu.ky"; kz: "cu.kz"; la: "cu.la"; lb: "cu.lb"; lc: "cu.lc"; ld: "cu.ld"; le: "cu.le"; lf: "cu.lf"; lg: "cu.lg"; lh: "cu.lh"; li: "cu.li"; lj: "cu.lj"; lk: "cu.lk"; ll: "cu.ll"; lm: "cu.lm"; ln: "cu.ln"; lo: "cu.lo"; lp: "cu.lp"; lq: "cu.lq"; lr: "cu.lr"; ls: "cu.ls"; lt: "cu.lt"; lu: "cu.lu"; lv: "cu.lv"; lw: "cu.lw"; lx: "cu.lx"; ly: "cu.ly"; lz: "cu.lz"; ma: "cu.ma"; mb: "cu.mb"; mc: "cu.mc"; md: "cu.md"; me: "cu.me"; mf: "cu.mf"; mg: "cu.mg"; mh: "cu.mh"; mi: "cu.mi"; mj: "cu.mj"; mk: "cu.mk"; ml: "cu.ml"; mm: "cu.mm"; mn: "cu.mn"; mo: "cu.mo"; mp: "cu.mp"; mq: "cu.mq"; mr: "cu.mr"; ms: "cu.ms"; mt: "cu.mt"; mu: "cu.mu"; mv: "cu.mv"; mw: "cu.mw"; mx: "cu.mx"; my: "cu.my"; mz: "cu.mz"; na: "cu.na"; nb: "cu.nb"; nc: "cu.nc"; nd: "cu.nd"; ne: "cu.ne"; nf: "cu.nf"; ng: "cu.ng"; nh: "cu.nh"; ni: "cu.ni"; nj: "cu.nj"; nk: "cu.nk"; nl: "cu.nl"; nm: "cu.nm"; nn: "cu.nn"; no: "cu.no"; np: "cu.np"; nq: "cu.nq"; nr: "cu.nr"; ns: "cu.ns"; nt: "cu.nt"; nu: "cu.nu"; nv: "cu.nv"; nw: "cu.nw"; nx: "cu.nx"; ny: "cu.ny"; nz: "cu.nz"; oa: "cu.oa"; ob: "cu.ob"; oc: "cu.oc"; od: "cu.od"; oe: "cu.oe"; of: "cu.of"; og: "cu.og"; oh: "cu.oh"; oi: "cu.oi"; oj: "cu.oj"; ok: "cu.ok"; ol: "cu.ol"; om: "cu.om"; on: "cu.on"; oo: "cu.oo"; op: "cu.op"; oq: "cu.oq"; or: "cu.or"; os: "cu.os"; ot: "cu.ot"; ou: "cu.ou"; ov: "cu.ov"; ow: "cu.ow"; ox: "cu.ox"; oy: "cu.oy"; oz: "cu.oz"; pa: "cu.pa"; pb: "cu.pb"; pc: "cu.pc"; pd: "cu.pd"; pe: "cu.pe"; pf: "cu.pf"; pg: "cu.pg"; ph: "cu.ph"; pi: "cu.pi"; pj: "cu.pj"; pk: "cu.pk"; pl: "cu.pl"; pm: "cu.pm"; pn: "cu.pn"; po: "cu.po"; pp: "cu.pp"; pq: "cu.pq"; pr: "cu.pr"; ps: "cu.ps"; pt: "cu.pt"; pu: "cu.pu"; pv: "cu.pv"; pw: "cu.pw"; px: "cu.px"; py: "cu.py"; pz: "cu.pz"; qa: "cu.qa"; qb: "cu.qb"; qc: "cu.qc"; qd: "cu.qd"; qe: "cu.qe"; qf: "cu.qf"; qg: "cu.qg"; qh: "cu.qh"; qi: "cu.qi"; qj: "cu.qj"; qk: "cu.qk"; ql: "cu.ql"; qm: "cu.qm"; qn: "cu.qn"; qo: "cu.qo"; qp: "cu.qp"; qq: "cu.qq"; qr: "cu.qr"; qs: "cu.qs"; qt: "cu.qt"; qu: "cu.qu"; qv: "cu.qv"; qw: "cu.qw"; qx: "cu.qx"; qy: "cu.qy"; qz: "cu.qz"; ra: "cu.ra"; rb: "cu.rb"; rc: "cu.rc"; rd: "cu.rd"; re: "cu.re"; rf: "cu.rf"; rg: "cu.rg"; rh: "cu.rh"; ri: "cu.ri"; rj: "cu.rj"; rk: "cu.rk"; rl: "cu.rl"; rm: "cu.rm"; rn: "cu.rn"; ro: "cu.ro"; rp: "cu.rp"; rq: "cu.rq"; rr: "cu.rr"; rs: "cu.rs"; rt: "cu.rt"; ru: "cu.ru"; rv: "cu.rv"; rw: "cu.rw"; rx: "cu.rx"; ry: "cu.ry"; rz: "cu.rz"; sa: "cu.sa"; sb: "cu.sb"; sc: "cu.sc"; sd: "cu.sd"; se: "cu.se"; sf: "cu.sf"; sg: "cu.sg"; sh: "cu.sh"; si: "cu.si"; sj: "cu.sj"; sk: "cu.sk"; sl: "cu.sl"; sm: "cu.sm"; sn: "cu.sn"; so: "cu.so"; sp: "cu.sp"; sq: "cu.sq"; sr: "cu.sr"; ss: "cu.ss"; st: "cu.st"; su: "cu.su"; sv: "cu.sv"; sw: "cu.sw"; sx: "cu.sx"; sy: "cu.sy"; sz: "cu.sz"; ta: "cu.ta"; tb: "cu.tb"; tc: "cu.tc"; td: "cu.td"; te: "cu.te"; tf: "cu.tf"; tg: "cu.tg"; th: "cu.th"; ti: "cu.ti"; tj: "cu.tj"; tk: "cu.tk"; tl: "cu.tl"; tm: "cu.tm"; tn: "cu.tn"; to: "cu.to"; tp: "cu.tp"; tq: "cu.tq"; tr: "cu.tr"; ts: "cu.ts"; tt: "cu.tt"; tu: "cu.tu"; tv: "cu.tv"; tw: "cu.tw"; tx: "cu.tx"; ty: "cu.ty"; tz: "cu.tz"; ua: "cu.ua"; ub: "cu.ub"; uc: "cu.uc"; ud: "cu.ud"; ue: "cu.ue"; uf: "cu.uf"; ug: "cu.ug"; uh: "cu.uh"; ui: "cu.ui"; uj: "cu.uj"; uk: "cu.uk"; ul: "cu.ul"; um: "cu.um"; un: "cu.un"; uo: "cu.uo"; up: "cu.up"; uq: "cu.uq"; ur: "cu.ur"; us: "cu.us"; ut: "cu.ut"; uu: "cu.uu"; uv: "cu.uv"; uw: "cu.uw"; ux: "cu.ux"; uy: "cu.uy"; uz: "cu.uz"; va: "cu.va"; vb: "cu.vb"; vc: "cu.vc"; vd: "cu.vd"; ve: "cu.ve"; vf: "cu.vf"; vg: "cu.vg"; vh: "cu.vh"; vi: "cu.vi"; vj: "cu.vj"; vk: "cu.vk"; vl: "cu.vl"; vm: "cu.vm"; vn: "cu.vn"; vo: "cu.vo"; vp: "cu.vp"; vq: "cu.vq"; vr: "cu.vr"; vs: "cu.vs"; vt: "cu.vt"; vu: "cu.vu"; vv: "cu.vv"; vw: "cu.vw"; vx: "cu.vx"; vy: "cu.vy"; vz: "cu.vz"; wa: "cu.wa"; wb: "cu.wb"; wc: "cu.wc"; wd: "cu.wd"; we: "cu.we"; wf: "cu.wf"; wg: "cu.wg"; wh: "cu.wh"; wi: "cu.wi"; wj: "cu.wj"; wk: "cu.wk"; wl: "cu.wl"; wm: "cu.wm"; wn: "cu.wn"; wo: "cu.wo"; wp: "cu.wp"; wq: "cu.wq"; wr: "cu.wr"; ws: "cu.ws"; wt: "cu.wt"; wu: "cu.wu"; wv: "cu.wv"; ww: "cu.ww"; wx: "cu.wx"; wy: "cu.wy"; wz: "cu.wz"; xa: "cu.xa"; xb: "cu.xb"; xc: "cu.xc"; xd: "cu.xd"; xe: "cu.xe"; xf: "cu.xf"; xg: "cu.xg"; xh: "cu.xh"; xi: "cu.xi"; xj: "cu.xj"; xk: "cu.xk"; xl: "cu.xl"; xm: "cu.xm"; xn: "cu.xn"; xo: "cu.xo"; xp: "cu.xp"; xq: "cu.xq"; xr: "cu.xr"; xs: "cu.xs"; xt: "cu.xt"; xu: "cu.xu"; xv: "cu.xv"; xw: "cu.xw"; xx: "cu.xx"; xy: "cu.xy"; xz: "cu.xz"; ya: "cu.ya"; yb: "cu.yb"; yc: "cu.yc"; yd: "cu.yd"; ye: "cu.ye"; yf: "cu.yf"; yg: "cu.yg"; yh: "cu.yh"; yi: "cu.yi"; yj: "cu.yj"; yk: "cu.yk"; yl: "cu.yl"; ym: "cu.ym"; yn: "cu.yn"; yo: "cu.yo"; yp: "cu.yp"; yq: "cu.yq"; yr: "cu.yr"; ys: "cu.ys"; yt: "cu.yt"; yu: "cu.yu"; yv: "cu.yv"; yw: "cu.yw"; yx: "cu.yx"; yy: "cu.yy"; yz: "cu.yz"; za: "cu.za"; zb: "cu.zb"; zc: "cu.zc"; zd: "cu.zd"; ze: "cu.ze"; zf: "cu.zf"; zg: "cu.zg"; zh: "cu.zh"; zi: "cu.zi"; zj: "cu.zj"; zk: "cu.zk"; zl: "cu.zl"; zm: "cu.zm"; zn: "cu.zn"; zo: "cu.zo"; zp: "cu.zp"; zq: "cu.zq"; zr: "cu.zr"; zs: "cu.zs"; zt: "cu.zt"; zu: "cu.zu"; zv: "cu.zv"; zw: "cu.zw"; zx: "cu.zx"; zy: "cu.zy"; zz: "cu.zz"; }; cv: { aa: "cv.aa"; ab: "cv.ab"; ac: "cv.ac"; ad: "cv.ad"; ae: "cv.ae"; af: "cv.af"; ag: "cv.ag"; ah: "cv.ah"; ai: "cv.ai"; aj: "cv.aj"; ak: "cv.ak"; al: "cv.al"; am: "cv.am"; an: "cv.an"; ao: "cv.ao"; ap: "cv.ap"; aq: "cv.aq"; ar: "cv.ar"; as: "cv.as"; at: "cv.at"; au: "cv.au"; av: "cv.av"; aw: "cv.aw"; ax: "cv.ax"; ay: "cv.ay"; az: "cv.az"; ba: "cv.ba"; bb: "cv.bb"; bc: "cv.bc"; bd: "cv.bd"; be: "cv.be"; bf: "cv.bf"; bg: "cv.bg"; bh: "cv.bh"; bi: "cv.bi"; bj: "cv.bj"; bk: "cv.bk"; bl: "cv.bl"; bm: "cv.bm"; bn: "cv.bn"; bo: "cv.bo"; bp: "cv.bp"; bq: "cv.bq"; br: "cv.br"; bs: "cv.bs"; bt: "cv.bt"; bu: "cv.bu"; bv: "cv.bv"; bw: "cv.bw"; bx: "cv.bx"; by: "cv.by"; bz: "cv.bz"; ca: "cv.ca"; cb: "cv.cb"; cc: "cv.cc"; cd: "cv.cd"; ce: "cv.ce"; cf: "cv.cf"; cg: "cv.cg"; ch: "cv.ch"; ci: "cv.ci"; cj: "cv.cj"; ck: "cv.ck"; cl: "cv.cl"; cm: "cv.cm"; cn: "cv.cn"; co: "cv.co"; cp: "cv.cp"; cq: "cv.cq"; cr: "cv.cr"; cs: "cv.cs"; ct: "cv.ct"; cu: "cv.cu"; cv: "cv.cv"; cw: "cv.cw"; cx: "cv.cx"; cy: "cv.cy"; cz: "cv.cz"; da: "cv.da"; db: "cv.db"; dc: "cv.dc"; dd: "cv.dd"; de: "cv.de"; df: "cv.df"; dg: "cv.dg"; dh: "cv.dh"; di: "cv.di"; dj: "cv.dj"; dk: "cv.dk"; dl: "cv.dl"; dm: "cv.dm"; dn: "cv.dn"; do: "cv.do"; dp: "cv.dp"; dq: "cv.dq"; dr: "cv.dr"; ds: "cv.ds"; dt: "cv.dt"; du: "cv.du"; dv: "cv.dv"; dw: "cv.dw"; dx: "cv.dx"; dy: "cv.dy"; dz: "cv.dz"; ea: "cv.ea"; eb: "cv.eb"; ec: "cv.ec"; ed: "cv.ed"; ee: "cv.ee"; ef: "cv.ef"; eg: "cv.eg"; eh: "cv.eh"; ei: "cv.ei"; ej: "cv.ej"; ek: "cv.ek"; el: "cv.el"; em: "cv.em"; en: "cv.en"; eo: "cv.eo"; ep: "cv.ep"; eq: "cv.eq"; er: "cv.er"; es: "cv.es"; et: "cv.et"; eu: "cv.eu"; ev: "cv.ev"; ew: "cv.ew"; ex: "cv.ex"; ey: "cv.ey"; ez: "cv.ez"; fa: "cv.fa"; fb: "cv.fb"; fc: "cv.fc"; fd: "cv.fd"; fe: "cv.fe"; ff: "cv.ff"; fg: "cv.fg"; fh: "cv.fh"; fi: "cv.fi"; fj: "cv.fj"; fk: "cv.fk"; fl: "cv.fl"; fm: "cv.fm"; fn: "cv.fn"; fo: "cv.fo"; fp: "cv.fp"; fq: "cv.fq"; fr: "cv.fr"; fs: "cv.fs"; ft: "cv.ft"; fu: "cv.fu"; fv: "cv.fv"; fw: "cv.fw"; fx: "cv.fx"; fy: "cv.fy"; fz: "cv.fz"; ga: "cv.ga"; gb: "cv.gb"; gc: "cv.gc"; gd: "cv.gd"; ge: "cv.ge"; gf: "cv.gf"; gg: "cv.gg"; gh: "cv.gh"; gi: "cv.gi"; gj: "cv.gj"; gk: "cv.gk"; gl: "cv.gl"; gm: "cv.gm"; gn: "cv.gn"; go: "cv.go"; gp: "cv.gp"; gq: "cv.gq"; gr: "cv.gr"; gs: "cv.gs"; gt: "cv.gt"; gu: "cv.gu"; gv: "cv.gv"; gw: "cv.gw"; gx: "cv.gx"; gy: "cv.gy"; gz: "cv.gz"; ha: "cv.ha"; hb: "cv.hb"; hc: "cv.hc"; hd: "cv.hd"; he: "cv.he"; hf: "cv.hf"; hg: "cv.hg"; hh: "cv.hh"; hi: "cv.hi"; hj: "cv.hj"; hk: "cv.hk"; hl: "cv.hl"; hm: "cv.hm"; hn: "cv.hn"; ho: "cv.ho"; hp: "cv.hp"; hq: "cv.hq"; hr: "cv.hr"; hs: "cv.hs"; ht: "cv.ht"; hu: "cv.hu"; hv: "cv.hv"; hw: "cv.hw"; hx: "cv.hx"; hy: "cv.hy"; hz: "cv.hz"; ia: "cv.ia"; ib: "cv.ib"; ic: "cv.ic"; id: "cv.id"; ie: "cv.ie"; if: "cv.if"; ig: "cv.ig"; ih: "cv.ih"; ii: "cv.ii"; ij: "cv.ij"; ik: "cv.ik"; il: "cv.il"; im: "cv.im"; in: "cv.in"; io: "cv.io"; ip: "cv.ip"; iq: "cv.iq"; ir: "cv.ir"; is: "cv.is"; it: "cv.it"; iu: "cv.iu"; iv: "cv.iv"; iw: "cv.iw"; ix: "cv.ix"; iy: "cv.iy"; iz: "cv.iz"; ja: "cv.ja"; jb: "cv.jb"; jc: "cv.jc"; jd: "cv.jd"; je: "cv.je"; jf: "cv.jf"; jg: "cv.jg"; jh: "cv.jh"; ji: "cv.ji"; jj: "cv.jj"; jk: "cv.jk"; jl: "cv.jl"; jm: "cv.jm"; jn: "cv.jn"; jo: "cv.jo"; jp: "cv.jp"; jq: "cv.jq"; jr: "cv.jr"; js: "cv.js"; jt: "cv.jt"; ju: "cv.ju"; jv: "cv.jv"; jw: "cv.jw"; jx: "cv.jx"; jy: "cv.jy"; jz: "cv.jz"; ka: "cv.ka"; kb: "cv.kb"; kc: "cv.kc"; kd: "cv.kd"; ke: "cv.ke"; kf: "cv.kf"; kg: "cv.kg"; kh: "cv.kh"; ki: "cv.ki"; kj: "cv.kj"; kk: "cv.kk"; kl: "cv.kl"; km: "cv.km"; kn: "cv.kn"; ko: "cv.ko"; kp: "cv.kp"; kq: "cv.kq"; kr: "cv.kr"; ks: "cv.ks"; kt: "cv.kt"; ku: "cv.ku"; kv: "cv.kv"; kw: "cv.kw"; kx: "cv.kx"; ky: "cv.ky"; kz: "cv.kz"; la: "cv.la"; lb: "cv.lb"; lc: "cv.lc"; ld: "cv.ld"; le: "cv.le"; lf: "cv.lf"; lg: "cv.lg"; lh: "cv.lh"; li: "cv.li"; lj: "cv.lj"; lk: "cv.lk"; ll: "cv.ll"; lm: "cv.lm"; ln: "cv.ln"; lo: "cv.lo"; lp: "cv.lp"; lq: "cv.lq"; lr: "cv.lr"; ls: "cv.ls"; lt: "cv.lt"; lu: "cv.lu"; lv: "cv.lv"; lw: "cv.lw"; lx: "cv.lx"; ly: "cv.ly"; lz: "cv.lz"; ma: "cv.ma"; mb: "cv.mb"; mc: "cv.mc"; md: "cv.md"; me: "cv.me"; mf: "cv.mf"; mg: "cv.mg"; mh: "cv.mh"; mi: "cv.mi"; mj: "cv.mj"; mk: "cv.mk"; ml: "cv.ml"; mm: "cv.mm"; mn: "cv.mn"; mo: "cv.mo"; mp: "cv.mp"; mq: "cv.mq"; mr: "cv.mr"; ms: "cv.ms"; mt: "cv.mt"; mu: "cv.mu"; mv: "cv.mv"; mw: "cv.mw"; mx: "cv.mx"; my: "cv.my"; mz: "cv.mz"; na: "cv.na"; nb: "cv.nb"; nc: "cv.nc"; nd: "cv.nd"; ne: "cv.ne"; nf: "cv.nf"; ng: "cv.ng"; nh: "cv.nh"; ni: "cv.ni"; nj: "cv.nj"; nk: "cv.nk"; nl: "cv.nl"; nm: "cv.nm"; nn: "cv.nn"; no: "cv.no"; np: "cv.np"; nq: "cv.nq"; nr: "cv.nr"; ns: "cv.ns"; nt: "cv.nt"; nu: "cv.nu"; nv: "cv.nv"; nw: "cv.nw"; nx: "cv.nx"; ny: "cv.ny"; nz: "cv.nz"; oa: "cv.oa"; ob: "cv.ob"; oc: "cv.oc"; od: "cv.od"; oe: "cv.oe"; of: "cv.of"; og: "cv.og"; oh: "cv.oh"; oi: "cv.oi"; oj: "cv.oj"; ok: "cv.ok"; ol: "cv.ol"; om: "cv.om"; on: "cv.on"; oo: "cv.oo"; op: "cv.op"; oq: "cv.oq"; or: "cv.or"; os: "cv.os"; ot: "cv.ot"; ou: "cv.ou"; ov: "cv.ov"; ow: "cv.ow"; ox: "cv.ox"; oy: "cv.oy"; oz: "cv.oz"; pa: "cv.pa"; pb: "cv.pb"; pc: "cv.pc"; pd: "cv.pd"; pe: "cv.pe"; pf: "cv.pf"; pg: "cv.pg"; ph: "cv.ph"; pi: "cv.pi"; pj: "cv.pj"; pk: "cv.pk"; pl: "cv.pl"; pm: "cv.pm"; pn: "cv.pn"; po: "cv.po"; pp: "cv.pp"; pq: "cv.pq"; pr: "cv.pr"; ps: "cv.ps"; pt: "cv.pt"; pu: "cv.pu"; pv: "cv.pv"; pw: "cv.pw"; px: "cv.px"; py: "cv.py"; pz: "cv.pz"; qa: "cv.qa"; qb: "cv.qb"; qc: "cv.qc"; qd: "cv.qd"; qe: "cv.qe"; qf: "cv.qf"; qg: "cv.qg"; qh: "cv.qh"; qi: "cv.qi"; qj: "cv.qj"; qk: "cv.qk"; ql: "cv.ql"; qm: "cv.qm"; qn: "cv.qn"; qo: "cv.qo"; qp: "cv.qp"; qq: "cv.qq"; qr: "cv.qr"; qs: "cv.qs"; qt: "cv.qt"; qu: "cv.qu"; qv: "cv.qv"; qw: "cv.qw"; qx: "cv.qx"; qy: "cv.qy"; qz: "cv.qz"; ra: "cv.ra"; rb: "cv.rb"; rc: "cv.rc"; rd: "cv.rd"; re: "cv.re"; rf: "cv.rf"; rg: "cv.rg"; rh: "cv.rh"; ri: "cv.ri"; rj: "cv.rj"; rk: "cv.rk"; rl: "cv.rl"; rm: "cv.rm"; rn: "cv.rn"; ro: "cv.ro"; rp: "cv.rp"; rq: "cv.rq"; rr: "cv.rr"; rs: "cv.rs"; rt: "cv.rt"; ru: "cv.ru"; rv: "cv.rv"; rw: "cv.rw"; rx: "cv.rx"; ry: "cv.ry"; rz: "cv.rz"; sa: "cv.sa"; sb: "cv.sb"; sc: "cv.sc"; sd: "cv.sd"; se: "cv.se"; sf: "cv.sf"; sg: "cv.sg"; sh: "cv.sh"; si: "cv.si"; sj: "cv.sj"; sk: "cv.sk"; sl: "cv.sl"; sm: "cv.sm"; sn: "cv.sn"; so: "cv.so"; sp: "cv.sp"; sq: "cv.sq"; sr: "cv.sr"; ss: "cv.ss"; st: "cv.st"; su: "cv.su"; sv: "cv.sv"; sw: "cv.sw"; sx: "cv.sx"; sy: "cv.sy"; sz: "cv.sz"; ta: "cv.ta"; tb: "cv.tb"; tc: "cv.tc"; td: "cv.td"; te: "cv.te"; tf: "cv.tf"; tg: "cv.tg"; th: "cv.th"; ti: "cv.ti"; tj: "cv.tj"; tk: "cv.tk"; tl: "cv.tl"; tm: "cv.tm"; tn: "cv.tn"; to: "cv.to"; tp: "cv.tp"; tq: "cv.tq"; tr: "cv.tr"; ts: "cv.ts"; tt: "cv.tt"; tu: "cv.tu"; tv: "cv.tv"; tw: "cv.tw"; tx: "cv.tx"; ty: "cv.ty"; tz: "cv.tz"; ua: "cv.ua"; ub: "cv.ub"; uc: "cv.uc"; ud: "cv.ud"; ue: "cv.ue"; uf: "cv.uf"; ug: "cv.ug"; uh: "cv.uh"; ui: "cv.ui"; uj: "cv.uj"; uk: "cv.uk"; ul: "cv.ul"; um: "cv.um"; un: "cv.un"; uo: "cv.uo"; up: "cv.up"; uq: "cv.uq"; ur: "cv.ur"; us: "cv.us"; ut: "cv.ut"; uu: "cv.uu"; uv: "cv.uv"; uw: "cv.uw"; ux: "cv.ux"; uy: "cv.uy"; uz: "cv.uz"; va: "cv.va"; vb: "cv.vb"; vc: "cv.vc"; vd: "cv.vd"; ve: "cv.ve"; vf: "cv.vf"; vg: "cv.vg"; vh: "cv.vh"; vi: "cv.vi"; vj: "cv.vj"; vk: "cv.vk"; vl: "cv.vl"; vm: "cv.vm"; vn: "cv.vn"; vo: "cv.vo"; vp: "cv.vp"; vq: "cv.vq"; vr: "cv.vr"; vs: "cv.vs"; vt: "cv.vt"; vu: "cv.vu"; vv: "cv.vv"; vw: "cv.vw"; vx: "cv.vx"; vy: "cv.vy"; vz: "cv.vz"; wa: "cv.wa"; wb: "cv.wb"; wc: "cv.wc"; wd: "cv.wd"; we: "cv.we"; wf: "cv.wf"; wg: "cv.wg"; wh: "cv.wh"; wi: "cv.wi"; wj: "cv.wj"; wk: "cv.wk"; wl: "cv.wl"; wm: "cv.wm"; wn: "cv.wn"; wo: "cv.wo"; wp: "cv.wp"; wq: "cv.wq"; wr: "cv.wr"; ws: "cv.ws"; wt: "cv.wt"; wu: "cv.wu"; wv: "cv.wv"; ww: "cv.ww"; wx: "cv.wx"; wy: "cv.wy"; wz: "cv.wz"; xa: "cv.xa"; xb: "cv.xb"; xc: "cv.xc"; xd: "cv.xd"; xe: "cv.xe"; xf: "cv.xf"; xg: "cv.xg"; xh: "cv.xh"; xi: "cv.xi"; xj: "cv.xj"; xk: "cv.xk"; xl: "cv.xl"; xm: "cv.xm"; xn: "cv.xn"; xo: "cv.xo"; xp: "cv.xp"; xq: "cv.xq"; xr: "cv.xr"; xs: "cv.xs"; xt: "cv.xt"; xu: "cv.xu"; xv: "cv.xv"; xw: "cv.xw"; xx: "cv.xx"; xy: "cv.xy"; xz: "cv.xz"; ya: "cv.ya"; yb: "cv.yb"; yc: "cv.yc"; yd: "cv.yd"; ye: "cv.ye"; yf: "cv.yf"; yg: "cv.yg"; yh: "cv.yh"; yi: "cv.yi"; yj: "cv.yj"; yk: "cv.yk"; yl: "cv.yl"; ym: "cv.ym"; yn: "cv.yn"; yo: "cv.yo"; yp: "cv.yp"; yq: "cv.yq"; yr: "cv.yr"; ys: "cv.ys"; yt: "cv.yt"; yu: "cv.yu"; yv: "cv.yv"; yw: "cv.yw"; yx: "cv.yx"; yy: "cv.yy"; yz: "cv.yz"; za: "cv.za"; zb: "cv.zb"; zc: "cv.zc"; zd: "cv.zd"; ze: "cv.ze"; zf: "cv.zf"; zg: "cv.zg"; zh: "cv.zh"; zi: "cv.zi"; zj: "cv.zj"; zk: "cv.zk"; zl: "cv.zl"; zm: "cv.zm"; zn: "cv.zn"; zo: "cv.zo"; zp: "cv.zp"; zq: "cv.zq"; zr: "cv.zr"; zs: "cv.zs"; zt: "cv.zt"; zu: "cv.zu"; zv: "cv.zv"; zw: "cv.zw"; zx: "cv.zx"; zy: "cv.zy"; zz: "cv.zz"; }; cw: { aa: "cw.aa"; ab: "cw.ab"; ac: "cw.ac"; ad: "cw.ad"; ae: "cw.ae"; af: "cw.af"; ag: "cw.ag"; ah: "cw.ah"; ai: "cw.ai"; aj: "cw.aj"; ak: "cw.ak"; al: "cw.al"; am: "cw.am"; an: "cw.an"; ao: "cw.ao"; ap: "cw.ap"; aq: "cw.aq"; ar: "cw.ar"; as: "cw.as"; at: "cw.at"; au: "cw.au"; av: "cw.av"; aw: "cw.aw"; ax: "cw.ax"; ay: "cw.ay"; az: "cw.az"; ba: "cw.ba"; bb: "cw.bb"; bc: "cw.bc"; bd: "cw.bd"; be: "cw.be"; bf: "cw.bf"; bg: "cw.bg"; bh: "cw.bh"; bi: "cw.bi"; bj: "cw.bj"; bk: "cw.bk"; bl: "cw.bl"; bm: "cw.bm"; bn: "cw.bn"; bo: "cw.bo"; bp: "cw.bp"; bq: "cw.bq"; br: "cw.br"; bs: "cw.bs"; bt: "cw.bt"; bu: "cw.bu"; bv: "cw.bv"; bw: "cw.bw"; bx: "cw.bx"; by: "cw.by"; bz: "cw.bz"; ca: "cw.ca"; cb: "cw.cb"; cc: "cw.cc"; cd: "cw.cd"; ce: "cw.ce"; cf: "cw.cf"; cg: "cw.cg"; ch: "cw.ch"; ci: "cw.ci"; cj: "cw.cj"; ck: "cw.ck"; cl: "cw.cl"; cm: "cw.cm"; cn: "cw.cn"; co: "cw.co"; cp: "cw.cp"; cq: "cw.cq"; cr: "cw.cr"; cs: "cw.cs"; ct: "cw.ct"; cu: "cw.cu"; cv: "cw.cv"; cw: "cw.cw"; cx: "cw.cx"; cy: "cw.cy"; cz: "cw.cz"; da: "cw.da"; db: "cw.db"; dc: "cw.dc"; dd: "cw.dd"; de: "cw.de"; df: "cw.df"; dg: "cw.dg"; dh: "cw.dh"; di: "cw.di"; dj: "cw.dj"; dk: "cw.dk"; dl: "cw.dl"; dm: "cw.dm"; dn: "cw.dn"; do: "cw.do"; dp: "cw.dp"; dq: "cw.dq"; dr: "cw.dr"; ds: "cw.ds"; dt: "cw.dt"; du: "cw.du"; dv: "cw.dv"; dw: "cw.dw"; dx: "cw.dx"; dy: "cw.dy"; dz: "cw.dz"; ea: "cw.ea"; eb: "cw.eb"; ec: "cw.ec"; ed: "cw.ed"; ee: "cw.ee"; ef: "cw.ef"; eg: "cw.eg"; eh: "cw.eh"; ei: "cw.ei"; ej: "cw.ej"; ek: "cw.ek"; el: "cw.el"; em: "cw.em"; en: "cw.en"; eo: "cw.eo"; ep: "cw.ep"; eq: "cw.eq"; er: "cw.er"; es: "cw.es"; et: "cw.et"; eu: "cw.eu"; ev: "cw.ev"; ew: "cw.ew"; ex: "cw.ex"; ey: "cw.ey"; ez: "cw.ez"; fa: "cw.fa"; fb: "cw.fb"; fc: "cw.fc"; fd: "cw.fd"; fe: "cw.fe"; ff: "cw.ff"; fg: "cw.fg"; fh: "cw.fh"; fi: "cw.fi"; fj: "cw.fj"; fk: "cw.fk"; fl: "cw.fl"; fm: "cw.fm"; fn: "cw.fn"; fo: "cw.fo"; fp: "cw.fp"; fq: "cw.fq"; fr: "cw.fr"; fs: "cw.fs"; ft: "cw.ft"; fu: "cw.fu"; fv: "cw.fv"; fw: "cw.fw"; fx: "cw.fx"; fy: "cw.fy"; fz: "cw.fz"; ga: "cw.ga"; gb: "cw.gb"; gc: "cw.gc"; gd: "cw.gd"; ge: "cw.ge"; gf: "cw.gf"; gg: "cw.gg"; gh: "cw.gh"; gi: "cw.gi"; gj: "cw.gj"; gk: "cw.gk"; gl: "cw.gl"; gm: "cw.gm"; gn: "cw.gn"; go: "cw.go"; gp: "cw.gp"; gq: "cw.gq"; gr: "cw.gr"; gs: "cw.gs"; gt: "cw.gt"; gu: "cw.gu"; gv: "cw.gv"; gw: "cw.gw"; gx: "cw.gx"; gy: "cw.gy"; gz: "cw.gz"; ha: "cw.ha"; hb: "cw.hb"; hc: "cw.hc"; hd: "cw.hd"; he: "cw.he"; hf: "cw.hf"; hg: "cw.hg"; hh: "cw.hh"; hi: "cw.hi"; hj: "cw.hj"; hk: "cw.hk"; hl: "cw.hl"; hm: "cw.hm"; hn: "cw.hn"; ho: "cw.ho"; hp: "cw.hp"; hq: "cw.hq"; hr: "cw.hr"; hs: "cw.hs"; ht: "cw.ht"; hu: "cw.hu"; hv: "cw.hv"; hw: "cw.hw"; hx: "cw.hx"; hy: "cw.hy"; hz: "cw.hz"; ia: "cw.ia"; ib: "cw.ib"; ic: "cw.ic"; id: "cw.id"; ie: "cw.ie"; if: "cw.if"; ig: "cw.ig"; ih: "cw.ih"; ii: "cw.ii"; ij: "cw.ij"; ik: "cw.ik"; il: "cw.il"; im: "cw.im"; in: "cw.in"; io: "cw.io"; ip: "cw.ip"; iq: "cw.iq"; ir: "cw.ir"; is: "cw.is"; it: "cw.it"; iu: "cw.iu"; iv: "cw.iv"; iw: "cw.iw"; ix: "cw.ix"; iy: "cw.iy"; iz: "cw.iz"; ja: "cw.ja"; jb: "cw.jb"; jc: "cw.jc"; jd: "cw.jd"; je: "cw.je"; jf: "cw.jf"; jg: "cw.jg"; jh: "cw.jh"; ji: "cw.ji"; jj: "cw.jj"; jk: "cw.jk"; jl: "cw.jl"; jm: "cw.jm"; jn: "cw.jn"; jo: "cw.jo"; jp: "cw.jp"; jq: "cw.jq"; jr: "cw.jr"; js: "cw.js"; jt: "cw.jt"; ju: "cw.ju"; jv: "cw.jv"; jw: "cw.jw"; jx: "cw.jx"; jy: "cw.jy"; jz: "cw.jz"; ka: "cw.ka"; kb: "cw.kb"; kc: "cw.kc"; kd: "cw.kd"; ke: "cw.ke"; kf: "cw.kf"; kg: "cw.kg"; kh: "cw.kh"; ki: "cw.ki"; kj: "cw.kj"; kk: "cw.kk"; kl: "cw.kl"; km: "cw.km"; kn: "cw.kn"; ko: "cw.ko"; kp: "cw.kp"; kq: "cw.kq"; kr: "cw.kr"; ks: "cw.ks"; kt: "cw.kt"; ku: "cw.ku"; kv: "cw.kv"; kw: "cw.kw"; kx: "cw.kx"; ky: "cw.ky"; kz: "cw.kz"; la: "cw.la"; lb: "cw.lb"; lc: "cw.lc"; ld: "cw.ld"; le: "cw.le"; lf: "cw.lf"; lg: "cw.lg"; lh: "cw.lh"; li: "cw.li"; lj: "cw.lj"; lk: "cw.lk"; ll: "cw.ll"; lm: "cw.lm"; ln: "cw.ln"; lo: "cw.lo"; lp: "cw.lp"; lq: "cw.lq"; lr: "cw.lr"; ls: "cw.ls"; lt: "cw.lt"; lu: "cw.lu"; lv: "cw.lv"; lw: "cw.lw"; lx: "cw.lx"; ly: "cw.ly"; lz: "cw.lz"; ma: "cw.ma"; mb: "cw.mb"; mc: "cw.mc"; md: "cw.md"; me: "cw.me"; mf: "cw.mf"; mg: "cw.mg"; mh: "cw.mh"; mi: "cw.mi"; mj: "cw.mj"; mk: "cw.mk"; ml: "cw.ml"; mm: "cw.mm"; mn: "cw.mn"; mo: "cw.mo"; mp: "cw.mp"; mq: "cw.mq"; mr: "cw.mr"; ms: "cw.ms"; mt: "cw.mt"; mu: "cw.mu"; mv: "cw.mv"; mw: "cw.mw"; mx: "cw.mx"; my: "cw.my"; mz: "cw.mz"; na: "cw.na"; nb: "cw.nb"; nc: "cw.nc"; nd: "cw.nd"; ne: "cw.ne"; nf: "cw.nf"; ng: "cw.ng"; nh: "cw.nh"; ni: "cw.ni"; nj: "cw.nj"; nk: "cw.nk"; nl: "cw.nl"; nm: "cw.nm"; nn: "cw.nn"; no: "cw.no"; np: "cw.np"; nq: "cw.nq"; nr: "cw.nr"; ns: "cw.ns"; nt: "cw.nt"; nu: "cw.nu"; nv: "cw.nv"; nw: "cw.nw"; nx: "cw.nx"; ny: "cw.ny"; nz: "cw.nz"; oa: "cw.oa"; ob: "cw.ob"; oc: "cw.oc"; od: "cw.od"; oe: "cw.oe"; of: "cw.of"; og: "cw.og"; oh: "cw.oh"; oi: "cw.oi"; oj: "cw.oj"; ok: "cw.ok"; ol: "cw.ol"; om: "cw.om"; on: "cw.on"; oo: "cw.oo"; op: "cw.op"; oq: "cw.oq"; or: "cw.or"; os: "cw.os"; ot: "cw.ot"; ou: "cw.ou"; ov: "cw.ov"; ow: "cw.ow"; ox: "cw.ox"; oy: "cw.oy"; oz: "cw.oz"; pa: "cw.pa"; pb: "cw.pb"; pc: "cw.pc"; pd: "cw.pd"; pe: "cw.pe"; pf: "cw.pf"; pg: "cw.pg"; ph: "cw.ph"; pi: "cw.pi"; pj: "cw.pj"; pk: "cw.pk"; pl: "cw.pl"; pm: "cw.pm"; pn: "cw.pn"; po: "cw.po"; pp: "cw.pp"; pq: "cw.pq"; pr: "cw.pr"; ps: "cw.ps"; pt: "cw.pt"; pu: "cw.pu"; pv: "cw.pv"; pw: "cw.pw"; px: "cw.px"; py: "cw.py"; pz: "cw.pz"; qa: "cw.qa"; qb: "cw.qb"; qc: "cw.qc"; qd: "cw.qd"; qe: "cw.qe"; qf: "cw.qf"; qg: "cw.qg"; qh: "cw.qh"; qi: "cw.qi"; qj: "cw.qj"; qk: "cw.qk"; ql: "cw.ql"; qm: "cw.qm"; qn: "cw.qn"; qo: "cw.qo"; qp: "cw.qp"; qq: "cw.qq"; qr: "cw.qr"; qs: "cw.qs"; qt: "cw.qt"; qu: "cw.qu"; qv: "cw.qv"; qw: "cw.qw"; qx: "cw.qx"; qy: "cw.qy"; qz: "cw.qz"; ra: "cw.ra"; rb: "cw.rb"; rc: "cw.rc"; rd: "cw.rd"; re: "cw.re"; rf: "cw.rf"; rg: "cw.rg"; rh: "cw.rh"; ri: "cw.ri"; rj: "cw.rj"; rk: "cw.rk"; rl: "cw.rl"; rm: "cw.rm"; rn: "cw.rn"; ro: "cw.ro"; rp: "cw.rp"; rq: "cw.rq"; rr: "cw.rr"; rs: "cw.rs"; rt: "cw.rt"; ru: "cw.ru"; rv: "cw.rv"; rw: "cw.rw"; rx: "cw.rx"; ry: "cw.ry"; rz: "cw.rz"; sa: "cw.sa"; sb: "cw.sb"; sc: "cw.sc"; sd: "cw.sd"; se: "cw.se"; sf: "cw.sf"; sg: "cw.sg"; sh: "cw.sh"; si: "cw.si"; sj: "cw.sj"; sk: "cw.sk"; sl: "cw.sl"; sm: "cw.sm"; sn: "cw.sn"; so: "cw.so"; sp: "cw.sp"; sq: "cw.sq"; sr: "cw.sr"; ss: "cw.ss"; st: "cw.st"; su: "cw.su"; sv: "cw.sv"; sw: "cw.sw"; sx: "cw.sx"; sy: "cw.sy"; sz: "cw.sz"; ta: "cw.ta"; tb: "cw.tb"; tc: "cw.tc"; td: "cw.td"; te: "cw.te"; tf: "cw.tf"; tg: "cw.tg"; th: "cw.th"; ti: "cw.ti"; tj: "cw.tj"; tk: "cw.tk"; tl: "cw.tl"; tm: "cw.tm"; tn: "cw.tn"; to: "cw.to"; tp: "cw.tp"; tq: "cw.tq"; tr: "cw.tr"; ts: "cw.ts"; tt: "cw.tt"; tu: "cw.tu"; tv: "cw.tv"; tw: "cw.tw"; tx: "cw.tx"; ty: "cw.ty"; tz: "cw.tz"; ua: "cw.ua"; ub: "cw.ub"; uc: "cw.uc"; ud: "cw.ud"; ue: "cw.ue"; uf: "cw.uf"; ug: "cw.ug"; uh: "cw.uh"; ui: "cw.ui"; uj: "cw.uj"; uk: "cw.uk"; ul: "cw.ul"; um: "cw.um"; un: "cw.un"; uo: "cw.uo"; up: "cw.up"; uq: "cw.uq"; ur: "cw.ur"; us: "cw.us"; ut: "cw.ut"; uu: "cw.uu"; uv: "cw.uv"; uw: "cw.uw"; ux: "cw.ux"; uy: "cw.uy"; uz: "cw.uz"; va: "cw.va"; vb: "cw.vb"; vc: "cw.vc"; vd: "cw.vd"; ve: "cw.ve"; vf: "cw.vf"; vg: "cw.vg"; vh: "cw.vh"; vi: "cw.vi"; vj: "cw.vj"; vk: "cw.vk"; vl: "cw.vl"; vm: "cw.vm"; vn: "cw.vn"; vo: "cw.vo"; vp: "cw.vp"; vq: "cw.vq"; vr: "cw.vr"; vs: "cw.vs"; vt: "cw.vt"; vu: "cw.vu"; vv: "cw.vv"; vw: "cw.vw"; vx: "cw.vx"; vy: "cw.vy"; vz: "cw.vz"; wa: "cw.wa"; wb: "cw.wb"; wc: "cw.wc"; wd: "cw.wd"; we: "cw.we"; wf: "cw.wf"; wg: "cw.wg"; wh: "cw.wh"; wi: "cw.wi"; wj: "cw.wj"; wk: "cw.wk"; wl: "cw.wl"; wm: "cw.wm"; wn: "cw.wn"; wo: "cw.wo"; wp: "cw.wp"; wq: "cw.wq"; wr: "cw.wr"; ws: "cw.ws"; wt: "cw.wt"; wu: "cw.wu"; wv: "cw.wv"; ww: "cw.ww"; wx: "cw.wx"; wy: "cw.wy"; wz: "cw.wz"; xa: "cw.xa"; xb: "cw.xb"; xc: "cw.xc"; xd: "cw.xd"; xe: "cw.xe"; xf: "cw.xf"; xg: "cw.xg"; xh: "cw.xh"; xi: "cw.xi"; xj: "cw.xj"; xk: "cw.xk"; xl: "cw.xl"; xm: "cw.xm"; xn: "cw.xn"; xo: "cw.xo"; xp: "cw.xp"; xq: "cw.xq"; xr: "cw.xr"; xs: "cw.xs"; xt: "cw.xt"; xu: "cw.xu"; xv: "cw.xv"; xw: "cw.xw"; xx: "cw.xx"; xy: "cw.xy"; xz: "cw.xz"; ya: "cw.ya"; yb: "cw.yb"; yc: "cw.yc"; yd: "cw.yd"; ye: "cw.ye"; yf: "cw.yf"; yg: "cw.yg"; yh: "cw.yh"; yi: "cw.yi"; yj: "cw.yj"; yk: "cw.yk"; yl: "cw.yl"; ym: "cw.ym"; yn: "cw.yn"; yo: "cw.yo"; yp: "cw.yp"; yq: "cw.yq"; yr: "cw.yr"; ys: "cw.ys"; yt: "cw.yt"; yu: "cw.yu"; yv: "cw.yv"; yw: "cw.yw"; yx: "cw.yx"; yy: "cw.yy"; yz: "cw.yz"; za: "cw.za"; zb: "cw.zb"; zc: "cw.zc"; zd: "cw.zd"; ze: "cw.ze"; zf: "cw.zf"; zg: "cw.zg"; zh: "cw.zh"; zi: "cw.zi"; zj: "cw.zj"; zk: "cw.zk"; zl: "cw.zl"; zm: "cw.zm"; zn: "cw.zn"; zo: "cw.zo"; zp: "cw.zp"; zq: "cw.zq"; zr: "cw.zr"; zs: "cw.zs"; zt: "cw.zt"; zu: "cw.zu"; zv: "cw.zv"; zw: "cw.zw"; zx: "cw.zx"; zy: "cw.zy"; zz: "cw.zz"; }; cx: { aa: "cx.aa"; ab: "cx.ab"; ac: "cx.ac"; ad: "cx.ad"; ae: "cx.ae"; af: "cx.af"; ag: "cx.ag"; ah: "cx.ah"; ai: "cx.ai"; aj: "cx.aj"; ak: "cx.ak"; al: "cx.al"; am: "cx.am"; an: "cx.an"; ao: "cx.ao"; ap: "cx.ap"; aq: "cx.aq"; ar: "cx.ar"; as: "cx.as"; at: "cx.at"; au: "cx.au"; av: "cx.av"; aw: "cx.aw"; ax: "cx.ax"; ay: "cx.ay"; az: "cx.az"; ba: "cx.ba"; bb: "cx.bb"; bc: "cx.bc"; bd: "cx.bd"; be: "cx.be"; bf: "cx.bf"; bg: "cx.bg"; bh: "cx.bh"; bi: "cx.bi"; bj: "cx.bj"; bk: "cx.bk"; bl: "cx.bl"; bm: "cx.bm"; bn: "cx.bn"; bo: "cx.bo"; bp: "cx.bp"; bq: "cx.bq"; br: "cx.br"; bs: "cx.bs"; bt: "cx.bt"; bu: "cx.bu"; bv: "cx.bv"; bw: "cx.bw"; bx: "cx.bx"; by: "cx.by"; bz: "cx.bz"; ca: "cx.ca"; cb: "cx.cb"; cc: "cx.cc"; cd: "cx.cd"; ce: "cx.ce"; cf: "cx.cf"; cg: "cx.cg"; ch: "cx.ch"; ci: "cx.ci"; cj: "cx.cj"; ck: "cx.ck"; cl: "cx.cl"; cm: "cx.cm"; cn: "cx.cn"; co: "cx.co"; cp: "cx.cp"; cq: "cx.cq"; cr: "cx.cr"; cs: "cx.cs"; ct: "cx.ct"; cu: "cx.cu"; cv: "cx.cv"; cw: "cx.cw"; cx: "cx.cx"; cy: "cx.cy"; cz: "cx.cz"; da: "cx.da"; db: "cx.db"; dc: "cx.dc"; dd: "cx.dd"; de: "cx.de"; df: "cx.df"; dg: "cx.dg"; dh: "cx.dh"; di: "cx.di"; dj: "cx.dj"; dk: "cx.dk"; dl: "cx.dl"; dm: "cx.dm"; dn: "cx.dn"; do: "cx.do"; dp: "cx.dp"; dq: "cx.dq"; dr: "cx.dr"; ds: "cx.ds"; dt: "cx.dt"; du: "cx.du"; dv: "cx.dv"; dw: "cx.dw"; dx: "cx.dx"; dy: "cx.dy"; dz: "cx.dz"; ea: "cx.ea"; eb: "cx.eb"; ec: "cx.ec"; ed: "cx.ed"; ee: "cx.ee"; ef: "cx.ef"; eg: "cx.eg"; eh: "cx.eh"; ei: "cx.ei"; ej: "cx.ej"; ek: "cx.ek"; el: "cx.el"; em: "cx.em"; en: "cx.en"; eo: "cx.eo"; ep: "cx.ep"; eq: "cx.eq"; er: "cx.er"; es: "cx.es"; et: "cx.et"; eu: "cx.eu"; ev: "cx.ev"; ew: "cx.ew"; ex: "cx.ex"; ey: "cx.ey"; ez: "cx.ez"; fa: "cx.fa"; fb: "cx.fb"; fc: "cx.fc"; fd: "cx.fd"; fe: "cx.fe"; ff: "cx.ff"; fg: "cx.fg"; fh: "cx.fh"; fi: "cx.fi"; fj: "cx.fj"; fk: "cx.fk"; fl: "cx.fl"; fm: "cx.fm"; fn: "cx.fn"; fo: "cx.fo"; fp: "cx.fp"; fq: "cx.fq"; fr: "cx.fr"; fs: "cx.fs"; ft: "cx.ft"; fu: "cx.fu"; fv: "cx.fv"; fw: "cx.fw"; fx: "cx.fx"; fy: "cx.fy"; fz: "cx.fz"; ga: "cx.ga"; gb: "cx.gb"; gc: "cx.gc"; gd: "cx.gd"; ge: "cx.ge"; gf: "cx.gf"; gg: "cx.gg"; gh: "cx.gh"; gi: "cx.gi"; gj: "cx.gj"; gk: "cx.gk"; gl: "cx.gl"; gm: "cx.gm"; gn: "cx.gn"; go: "cx.go"; gp: "cx.gp"; gq: "cx.gq"; gr: "cx.gr"; gs: "cx.gs"; gt: "cx.gt"; gu: "cx.gu"; gv: "cx.gv"; gw: "cx.gw"; gx: "cx.gx"; gy: "cx.gy"; gz: "cx.gz"; ha: "cx.ha"; hb: "cx.hb"; hc: "cx.hc"; hd: "cx.hd"; he: "cx.he"; hf: "cx.hf"; hg: "cx.hg"; hh: "cx.hh"; hi: "cx.hi"; hj: "cx.hj"; hk: "cx.hk"; hl: "cx.hl"; hm: "cx.hm"; hn: "cx.hn"; ho: "cx.ho"; hp: "cx.hp"; hq: "cx.hq"; hr: "cx.hr"; hs: "cx.hs"; ht: "cx.ht"; hu: "cx.hu"; hv: "cx.hv"; hw: "cx.hw"; hx: "cx.hx"; hy: "cx.hy"; hz: "cx.hz"; ia: "cx.ia"; ib: "cx.ib"; ic: "cx.ic"; id: "cx.id"; ie: "cx.ie"; if: "cx.if"; ig: "cx.ig"; ih: "cx.ih"; ii: "cx.ii"; ij: "cx.ij"; ik: "cx.ik"; il: "cx.il"; im: "cx.im"; in: "cx.in"; io: "cx.io"; ip: "cx.ip"; iq: "cx.iq"; ir: "cx.ir"; is: "cx.is"; it: "cx.it"; iu: "cx.iu"; iv: "cx.iv"; iw: "cx.iw"; ix: "cx.ix"; iy: "cx.iy"; iz: "cx.iz"; ja: "cx.ja"; jb: "cx.jb"; jc: "cx.jc"; jd: "cx.jd"; je: "cx.je"; jf: "cx.jf"; jg: "cx.jg"; jh: "cx.jh"; ji: "cx.ji"; jj: "cx.jj"; jk: "cx.jk"; jl: "cx.jl"; jm: "cx.jm"; jn: "cx.jn"; jo: "cx.jo"; jp: "cx.jp"; jq: "cx.jq"; jr: "cx.jr"; js: "cx.js"; jt: "cx.jt"; ju: "cx.ju"; jv: "cx.jv"; jw: "cx.jw"; jx: "cx.jx"; jy: "cx.jy"; jz: "cx.jz"; ka: "cx.ka"; kb: "cx.kb"; kc: "cx.kc"; kd: "cx.kd"; ke: "cx.ke"; kf: "cx.kf"; kg: "cx.kg"; kh: "cx.kh"; ki: "cx.ki"; kj: "cx.kj"; kk: "cx.kk"; kl: "cx.kl"; km: "cx.km"; kn: "cx.kn"; ko: "cx.ko"; kp: "cx.kp"; kq: "cx.kq"; kr: "cx.kr"; ks: "cx.ks"; kt: "cx.kt"; ku: "cx.ku"; kv: "cx.kv"; kw: "cx.kw"; kx: "cx.kx"; ky: "cx.ky"; kz: "cx.kz"; la: "cx.la"; lb: "cx.lb"; lc: "cx.lc"; ld: "cx.ld"; le: "cx.le"; lf: "cx.lf"; lg: "cx.lg"; lh: "cx.lh"; li: "cx.li"; lj: "cx.lj"; lk: "cx.lk"; ll: "cx.ll"; lm: "cx.lm"; ln: "cx.ln"; lo: "cx.lo"; lp: "cx.lp"; lq: "cx.lq"; lr: "cx.lr"; ls: "cx.ls"; lt: "cx.lt"; lu: "cx.lu"; lv: "cx.lv"; lw: "cx.lw"; lx: "cx.lx"; ly: "cx.ly"; lz: "cx.lz"; ma: "cx.ma"; mb: "cx.mb"; mc: "cx.mc"; md: "cx.md"; me: "cx.me"; mf: "cx.mf"; mg: "cx.mg"; mh: "cx.mh"; mi: "cx.mi"; mj: "cx.mj"; mk: "cx.mk"; ml: "cx.ml"; mm: "cx.mm"; mn: "cx.mn"; mo: "cx.mo"; mp: "cx.mp"; mq: "cx.mq"; mr: "cx.mr"; ms: "cx.ms"; mt: "cx.mt"; mu: "cx.mu"; mv: "cx.mv"; mw: "cx.mw"; mx: "cx.mx"; my: "cx.my"; mz: "cx.mz"; na: "cx.na"; nb: "cx.nb"; nc: "cx.nc"; nd: "cx.nd"; ne: "cx.ne"; nf: "cx.nf"; ng: "cx.ng"; nh: "cx.nh"; ni: "cx.ni"; nj: "cx.nj"; nk: "cx.nk"; nl: "cx.nl"; nm: "cx.nm"; nn: "cx.nn"; no: "cx.no"; np: "cx.np"; nq: "cx.nq"; nr: "cx.nr"; ns: "cx.ns"; nt: "cx.nt"; nu: "cx.nu"; nv: "cx.nv"; nw: "cx.nw"; nx: "cx.nx"; ny: "cx.ny"; nz: "cx.nz"; oa: "cx.oa"; ob: "cx.ob"; oc: "cx.oc"; od: "cx.od"; oe: "cx.oe"; of: "cx.of"; og: "cx.og"; oh: "cx.oh"; oi: "cx.oi"; oj: "cx.oj"; ok: "cx.ok"; ol: "cx.ol"; om: "cx.om"; on: "cx.on"; oo: "cx.oo"; op: "cx.op"; oq: "cx.oq"; or: "cx.or"; os: "cx.os"; ot: "cx.ot"; ou: "cx.ou"; ov: "cx.ov"; ow: "cx.ow"; ox: "cx.ox"; oy: "cx.oy"; oz: "cx.oz"; pa: "cx.pa"; pb: "cx.pb"; pc: "cx.pc"; pd: "cx.pd"; pe: "cx.pe"; pf: "cx.pf"; pg: "cx.pg"; ph: "cx.ph"; pi: "cx.pi"; pj: "cx.pj"; pk: "cx.pk"; pl: "cx.pl"; pm: "cx.pm"; pn: "cx.pn"; po: "cx.po"; pp: "cx.pp"; pq: "cx.pq"; pr: "cx.pr"; ps: "cx.ps"; pt: "cx.pt"; pu: "cx.pu"; pv: "cx.pv"; pw: "cx.pw"; px: "cx.px"; py: "cx.py"; pz: "cx.pz"; qa: "cx.qa"; qb: "cx.qb"; qc: "cx.qc"; qd: "cx.qd"; qe: "cx.qe"; qf: "cx.qf"; qg: "cx.qg"; qh: "cx.qh"; qi: "cx.qi"; qj: "cx.qj"; qk: "cx.qk"; ql: "cx.ql"; qm: "cx.qm"; qn: "cx.qn"; qo: "cx.qo"; qp: "cx.qp"; qq: "cx.qq"; qr: "cx.qr"; qs: "cx.qs"; qt: "cx.qt"; qu: "cx.qu"; qv: "cx.qv"; qw: "cx.qw"; qx: "cx.qx"; qy: "cx.qy"; qz: "cx.qz"; ra: "cx.ra"; rb: "cx.rb"; rc: "cx.rc"; rd: "cx.rd"; re: "cx.re"; rf: "cx.rf"; rg: "cx.rg"; rh: "cx.rh"; ri: "cx.ri"; rj: "cx.rj"; rk: "cx.rk"; rl: "cx.rl"; rm: "cx.rm"; rn: "cx.rn"; ro: "cx.ro"; rp: "cx.rp"; rq: "cx.rq"; rr: "cx.rr"; rs: "cx.rs"; rt: "cx.rt"; ru: "cx.ru"; rv: "cx.rv"; rw: "cx.rw"; rx: "cx.rx"; ry: "cx.ry"; rz: "cx.rz"; sa: "cx.sa"; sb: "cx.sb"; sc: "cx.sc"; sd: "cx.sd"; se: "cx.se"; sf: "cx.sf"; sg: "cx.sg"; sh: "cx.sh"; si: "cx.si"; sj: "cx.sj"; sk: "cx.sk"; sl: "cx.sl"; sm: "cx.sm"; sn: "cx.sn"; so: "cx.so"; sp: "cx.sp"; sq: "cx.sq"; sr: "cx.sr"; ss: "cx.ss"; st: "cx.st"; su: "cx.su"; sv: "cx.sv"; sw: "cx.sw"; sx: "cx.sx"; sy: "cx.sy"; sz: "cx.sz"; ta: "cx.ta"; tb: "cx.tb"; tc: "cx.tc"; td: "cx.td"; te: "cx.te"; tf: "cx.tf"; tg: "cx.tg"; th: "cx.th"; ti: "cx.ti"; tj: "cx.tj"; tk: "cx.tk"; tl: "cx.tl"; tm: "cx.tm"; tn: "cx.tn"; to: "cx.to"; tp: "cx.tp"; tq: "cx.tq"; tr: "cx.tr"; ts: "cx.ts"; tt: "cx.tt"; tu: "cx.tu"; tv: "cx.tv"; tw: "cx.tw"; tx: "cx.tx"; ty: "cx.ty"; tz: "cx.tz"; ua: "cx.ua"; ub: "cx.ub"; uc: "cx.uc"; ud: "cx.ud"; ue: "cx.ue"; uf: "cx.uf"; ug: "cx.ug"; uh: "cx.uh"; ui: "cx.ui"; uj: "cx.uj"; uk: "cx.uk"; ul: "cx.ul"; um: "cx.um"; un: "cx.un"; uo: "cx.uo"; up: "cx.up"; uq: "cx.uq"; ur: "cx.ur"; us: "cx.us"; ut: "cx.ut"; uu: "cx.uu"; uv: "cx.uv"; uw: "cx.uw"; ux: "cx.ux"; uy: "cx.uy"; uz: "cx.uz"; va: "cx.va"; vb: "cx.vb"; vc: "cx.vc"; vd: "cx.vd"; ve: "cx.ve"; vf: "cx.vf"; vg: "cx.vg"; vh: "cx.vh"; vi: "cx.vi"; vj: "cx.vj"; vk: "cx.vk"; vl: "cx.vl"; vm: "cx.vm"; vn: "cx.vn"; vo: "cx.vo"; vp: "cx.vp"; vq: "cx.vq"; vr: "cx.vr"; vs: "cx.vs"; vt: "cx.vt"; vu: "cx.vu"; vv: "cx.vv"; vw: "cx.vw"; vx: "cx.vx"; vy: "cx.vy"; vz: "cx.vz"; wa: "cx.wa"; wb: "cx.wb"; wc: "cx.wc"; wd: "cx.wd"; we: "cx.we"; wf: "cx.wf"; wg: "cx.wg"; wh: "cx.wh"; wi: "cx.wi"; wj: "cx.wj"; wk: "cx.wk"; wl: "cx.wl"; wm: "cx.wm"; wn: "cx.wn"; wo: "cx.wo"; wp: "cx.wp"; wq: "cx.wq"; wr: "cx.wr"; ws: "cx.ws"; wt: "cx.wt"; wu: "cx.wu"; wv: "cx.wv"; ww: "cx.ww"; wx: "cx.wx"; wy: "cx.wy"; wz: "cx.wz"; xa: "cx.xa"; xb: "cx.xb"; xc: "cx.xc"; xd: "cx.xd"; xe: "cx.xe"; xf: "cx.xf"; xg: "cx.xg"; xh: "cx.xh"; xi: "cx.xi"; xj: "cx.xj"; xk: "cx.xk"; xl: "cx.xl"; xm: "cx.xm"; xn: "cx.xn"; xo: "cx.xo"; xp: "cx.xp"; xq: "cx.xq"; xr: "cx.xr"; xs: "cx.xs"; xt: "cx.xt"; xu: "cx.xu"; xv: "cx.xv"; xw: "cx.xw"; xx: "cx.xx"; xy: "cx.xy"; xz: "cx.xz"; ya: "cx.ya"; yb: "cx.yb"; yc: "cx.yc"; yd: "cx.yd"; ye: "cx.ye"; yf: "cx.yf"; yg: "cx.yg"; yh: "cx.yh"; yi: "cx.yi"; yj: "cx.yj"; yk: "cx.yk"; yl: "cx.yl"; ym: "cx.ym"; yn: "cx.yn"; yo: "cx.yo"; yp: "cx.yp"; yq: "cx.yq"; yr: "cx.yr"; ys: "cx.ys"; yt: "cx.yt"; yu: "cx.yu"; yv: "cx.yv"; yw: "cx.yw"; yx: "cx.yx"; yy: "cx.yy"; yz: "cx.yz"; za: "cx.za"; zb: "cx.zb"; zc: "cx.zc"; zd: "cx.zd"; ze: "cx.ze"; zf: "cx.zf"; zg: "cx.zg"; zh: "cx.zh"; zi: "cx.zi"; zj: "cx.zj"; zk: "cx.zk"; zl: "cx.zl"; zm: "cx.zm"; zn: "cx.zn"; zo: "cx.zo"; zp: "cx.zp"; zq: "cx.zq"; zr: "cx.zr"; zs: "cx.zs"; zt: "cx.zt"; zu: "cx.zu"; zv: "cx.zv"; zw: "cx.zw"; zx: "cx.zx"; zy: "cx.zy"; zz: "cx.zz"; }; cy: { aa: "cy.aa"; ab: "cy.ab"; ac: "cy.ac"; ad: "cy.ad"; ae: "cy.ae"; af: "cy.af"; ag: "cy.ag"; ah: "cy.ah"; ai: "cy.ai"; aj: "cy.aj"; ak: "cy.ak"; al: "cy.al"; am: "cy.am"; an: "cy.an"; ao: "cy.ao"; ap: "cy.ap"; aq: "cy.aq"; ar: "cy.ar"; as: "cy.as"; at: "cy.at"; au: "cy.au"; av: "cy.av"; aw: "cy.aw"; ax: "cy.ax"; ay: "cy.ay"; az: "cy.az"; ba: "cy.ba"; bb: "cy.bb"; bc: "cy.bc"; bd: "cy.bd"; be: "cy.be"; bf: "cy.bf"; bg: "cy.bg"; bh: "cy.bh"; bi: "cy.bi"; bj: "cy.bj"; bk: "cy.bk"; bl: "cy.bl"; bm: "cy.bm"; bn: "cy.bn"; bo: "cy.bo"; bp: "cy.bp"; bq: "cy.bq"; br: "cy.br"; bs: "cy.bs"; bt: "cy.bt"; bu: "cy.bu"; bv: "cy.bv"; bw: "cy.bw"; bx: "cy.bx"; by: "cy.by"; bz: "cy.bz"; ca: "cy.ca"; cb: "cy.cb"; cc: "cy.cc"; cd: "cy.cd"; ce: "cy.ce"; cf: "cy.cf"; cg: "cy.cg"; ch: "cy.ch"; ci: "cy.ci"; cj: "cy.cj"; ck: "cy.ck"; cl: "cy.cl"; cm: "cy.cm"; cn: "cy.cn"; co: "cy.co"; cp: "cy.cp"; cq: "cy.cq"; cr: "cy.cr"; cs: "cy.cs"; ct: "cy.ct"; cu: "cy.cu"; cv: "cy.cv"; cw: "cy.cw"; cx: "cy.cx"; cy: "cy.cy"; cz: "cy.cz"; da: "cy.da"; db: "cy.db"; dc: "cy.dc"; dd: "cy.dd"; de: "cy.de"; df: "cy.df"; dg: "cy.dg"; dh: "cy.dh"; di: "cy.di"; dj: "cy.dj"; dk: "cy.dk"; dl: "cy.dl"; dm: "cy.dm"; dn: "cy.dn"; do: "cy.do"; dp: "cy.dp"; dq: "cy.dq"; dr: "cy.dr"; ds: "cy.ds"; dt: "cy.dt"; du: "cy.du"; dv: "cy.dv"; dw: "cy.dw"; dx: "cy.dx"; dy: "cy.dy"; dz: "cy.dz"; ea: "cy.ea"; eb: "cy.eb"; ec: "cy.ec"; ed: "cy.ed"; ee: "cy.ee"; ef: "cy.ef"; eg: "cy.eg"; eh: "cy.eh"; ei: "cy.ei"; ej: "cy.ej"; ek: "cy.ek"; el: "cy.el"; em: "cy.em"; en: "cy.en"; eo: "cy.eo"; ep: "cy.ep"; eq: "cy.eq"; er: "cy.er"; es: "cy.es"; et: "cy.et"; eu: "cy.eu"; ev: "cy.ev"; ew: "cy.ew"; ex: "cy.ex"; ey: "cy.ey"; ez: "cy.ez"; fa: "cy.fa"; fb: "cy.fb"; fc: "cy.fc"; fd: "cy.fd"; fe: "cy.fe"; ff: "cy.ff"; fg: "cy.fg"; fh: "cy.fh"; fi: "cy.fi"; fj: "cy.fj"; fk: "cy.fk"; fl: "cy.fl"; fm: "cy.fm"; fn: "cy.fn"; fo: "cy.fo"; fp: "cy.fp"; fq: "cy.fq"; fr: "cy.fr"; fs: "cy.fs"; ft: "cy.ft"; fu: "cy.fu"; fv: "cy.fv"; fw: "cy.fw"; fx: "cy.fx"; fy: "cy.fy"; fz: "cy.fz"; ga: "cy.ga"; gb: "cy.gb"; gc: "cy.gc"; gd: "cy.gd"; ge: "cy.ge"; gf: "cy.gf"; gg: "cy.gg"; gh: "cy.gh"; gi: "cy.gi"; gj: "cy.gj"; gk: "cy.gk"; gl: "cy.gl"; gm: "cy.gm"; gn: "cy.gn"; go: "cy.go"; gp: "cy.gp"; gq: "cy.gq"; gr: "cy.gr"; gs: "cy.gs"; gt: "cy.gt"; gu: "cy.gu"; gv: "cy.gv"; gw: "cy.gw"; gx: "cy.gx"; gy: "cy.gy"; gz: "cy.gz"; ha: "cy.ha"; hb: "cy.hb"; hc: "cy.hc"; hd: "cy.hd"; he: "cy.he"; hf: "cy.hf"; hg: "cy.hg"; hh: "cy.hh"; hi: "cy.hi"; hj: "cy.hj"; hk: "cy.hk"; hl: "cy.hl"; hm: "cy.hm"; hn: "cy.hn"; ho: "cy.ho"; hp: "cy.hp"; hq: "cy.hq"; hr: "cy.hr"; hs: "cy.hs"; ht: "cy.ht"; hu: "cy.hu"; hv: "cy.hv"; hw: "cy.hw"; hx: "cy.hx"; hy: "cy.hy"; hz: "cy.hz"; ia: "cy.ia"; ib: "cy.ib"; ic: "cy.ic"; id: "cy.id"; ie: "cy.ie"; if: "cy.if"; ig: "cy.ig"; ih: "cy.ih"; ii: "cy.ii"; ij: "cy.ij"; ik: "cy.ik"; il: "cy.il"; im: "cy.im"; in: "cy.in"; io: "cy.io"; ip: "cy.ip"; iq: "cy.iq"; ir: "cy.ir"; is: "cy.is"; it: "cy.it"; iu: "cy.iu"; iv: "cy.iv"; iw: "cy.iw"; ix: "cy.ix"; iy: "cy.iy"; iz: "cy.iz"; ja: "cy.ja"; jb: "cy.jb"; jc: "cy.jc"; jd: "cy.jd"; je: "cy.je"; jf: "cy.jf"; jg: "cy.jg"; jh: "cy.jh"; ji: "cy.ji"; jj: "cy.jj"; jk: "cy.jk"; jl: "cy.jl"; jm: "cy.jm"; jn: "cy.jn"; jo: "cy.jo"; jp: "cy.jp"; jq: "cy.jq"; jr: "cy.jr"; js: "cy.js"; jt: "cy.jt"; ju: "cy.ju"; jv: "cy.jv"; jw: "cy.jw"; jx: "cy.jx"; jy: "cy.jy"; jz: "cy.jz"; ka: "cy.ka"; kb: "cy.kb"; kc: "cy.kc"; kd: "cy.kd"; ke: "cy.ke"; kf: "cy.kf"; kg: "cy.kg"; kh: "cy.kh"; ki: "cy.ki"; kj: "cy.kj"; kk: "cy.kk"; kl: "cy.kl"; km: "cy.km"; kn: "cy.kn"; ko: "cy.ko"; kp: "cy.kp"; kq: "cy.kq"; kr: "cy.kr"; ks: "cy.ks"; kt: "cy.kt"; ku: "cy.ku"; kv: "cy.kv"; kw: "cy.kw"; kx: "cy.kx"; ky: "cy.ky"; kz: "cy.kz"; la: "cy.la"; lb: "cy.lb"; lc: "cy.lc"; ld: "cy.ld"; le: "cy.le"; lf: "cy.lf"; lg: "cy.lg"; lh: "cy.lh"; li: "cy.li"; lj: "cy.lj"; lk: "cy.lk"; ll: "cy.ll"; lm: "cy.lm"; ln: "cy.ln"; lo: "cy.lo"; lp: "cy.lp"; lq: "cy.lq"; lr: "cy.lr"; ls: "cy.ls"; lt: "cy.lt"; lu: "cy.lu"; lv: "cy.lv"; lw: "cy.lw"; lx: "cy.lx"; ly: "cy.ly"; lz: "cy.lz"; ma: "cy.ma"; mb: "cy.mb"; mc: "cy.mc"; md: "cy.md"; me: "cy.me"; mf: "cy.mf"; mg: "cy.mg"; mh: "cy.mh"; mi: "cy.mi"; mj: "cy.mj"; mk: "cy.mk"; ml: "cy.ml"; mm: "cy.mm"; mn: "cy.mn"; mo: "cy.mo"; mp: "cy.mp"; mq: "cy.mq"; mr: "cy.mr"; ms: "cy.ms"; mt: "cy.mt"; mu: "cy.mu"; mv: "cy.mv"; mw: "cy.mw"; mx: "cy.mx"; my: "cy.my"; mz: "cy.mz"; na: "cy.na"; nb: "cy.nb"; nc: "cy.nc"; nd: "cy.nd"; ne: "cy.ne"; nf: "cy.nf"; ng: "cy.ng"; nh: "cy.nh"; ni: "cy.ni"; nj: "cy.nj"; nk: "cy.nk"; nl: "cy.nl"; nm: "cy.nm"; nn: "cy.nn"; no: "cy.no"; np: "cy.np"; nq: "cy.nq"; nr: "cy.nr"; ns: "cy.ns"; nt: "cy.nt"; nu: "cy.nu"; nv: "cy.nv"; nw: "cy.nw"; nx: "cy.nx"; ny: "cy.ny"; nz: "cy.nz"; oa: "cy.oa"; ob: "cy.ob"; oc: "cy.oc"; od: "cy.od"; oe: "cy.oe"; of: "cy.of"; og: "cy.og"; oh: "cy.oh"; oi: "cy.oi"; oj: "cy.oj"; ok: "cy.ok"; ol: "cy.ol"; om: "cy.om"; on: "cy.on"; oo: "cy.oo"; op: "cy.op"; oq: "cy.oq"; or: "cy.or"; os: "cy.os"; ot: "cy.ot"; ou: "cy.ou"; ov: "cy.ov"; ow: "cy.ow"; ox: "cy.ox"; oy: "cy.oy"; oz: "cy.oz"; pa: "cy.pa"; pb: "cy.pb"; pc: "cy.pc"; pd: "cy.pd"; pe: "cy.pe"; pf: "cy.pf"; pg: "cy.pg"; ph: "cy.ph"; pi: "cy.pi"; pj: "cy.pj"; pk: "cy.pk"; pl: "cy.pl"; pm: "cy.pm"; pn: "cy.pn"; po: "cy.po"; pp: "cy.pp"; pq: "cy.pq"; pr: "cy.pr"; ps: "cy.ps"; pt: "cy.pt"; pu: "cy.pu"; pv: "cy.pv"; pw: "cy.pw"; px: "cy.px"; py: "cy.py"; pz: "cy.pz"; qa: "cy.qa"; qb: "cy.qb"; qc: "cy.qc"; qd: "cy.qd"; qe: "cy.qe"; qf: "cy.qf"; qg: "cy.qg"; qh: "cy.qh"; qi: "cy.qi"; qj: "cy.qj"; qk: "cy.qk"; ql: "cy.ql"; qm: "cy.qm"; qn: "cy.qn"; qo: "cy.qo"; qp: "cy.qp"; qq: "cy.qq"; qr: "cy.qr"; qs: "cy.qs"; qt: "cy.qt"; qu: "cy.qu"; qv: "cy.qv"; qw: "cy.qw"; qx: "cy.qx"; qy: "cy.qy"; qz: "cy.qz"; ra: "cy.ra"; rb: "cy.rb"; rc: "cy.rc"; rd: "cy.rd"; re: "cy.re"; rf: "cy.rf"; rg: "cy.rg"; rh: "cy.rh"; ri: "cy.ri"; rj: "cy.rj"; rk: "cy.rk"; rl: "cy.rl"; rm: "cy.rm"; rn: "cy.rn"; ro: "cy.ro"; rp: "cy.rp"; rq: "cy.rq"; rr: "cy.rr"; rs: "cy.rs"; rt: "cy.rt"; ru: "cy.ru"; rv: "cy.rv"; rw: "cy.rw"; rx: "cy.rx"; ry: "cy.ry"; rz: "cy.rz"; sa: "cy.sa"; sb: "cy.sb"; sc: "cy.sc"; sd: "cy.sd"; se: "cy.se"; sf: "cy.sf"; sg: "cy.sg"; sh: "cy.sh"; si: "cy.si"; sj: "cy.sj"; sk: "cy.sk"; sl: "cy.sl"; sm: "cy.sm"; sn: "cy.sn"; so: "cy.so"; sp: "cy.sp"; sq: "cy.sq"; sr: "cy.sr"; ss: "cy.ss"; st: "cy.st"; su: "cy.su"; sv: "cy.sv"; sw: "cy.sw"; sx: "cy.sx"; sy: "cy.sy"; sz: "cy.sz"; ta: "cy.ta"; tb: "cy.tb"; tc: "cy.tc"; td: "cy.td"; te: "cy.te"; tf: "cy.tf"; tg: "cy.tg"; th: "cy.th"; ti: "cy.ti"; tj: "cy.tj"; tk: "cy.tk"; tl: "cy.tl"; tm: "cy.tm"; tn: "cy.tn"; to: "cy.to"; tp: "cy.tp"; tq: "cy.tq"; tr: "cy.tr"; ts: "cy.ts"; tt: "cy.tt"; tu: "cy.tu"; tv: "cy.tv"; tw: "cy.tw"; tx: "cy.tx"; ty: "cy.ty"; tz: "cy.tz"; ua: "cy.ua"; ub: "cy.ub"; uc: "cy.uc"; ud: "cy.ud"; ue: "cy.ue"; uf: "cy.uf"; ug: "cy.ug"; uh: "cy.uh"; ui: "cy.ui"; uj: "cy.uj"; uk: "cy.uk"; ul: "cy.ul"; um: "cy.um"; un: "cy.un"; uo: "cy.uo"; up: "cy.up"; uq: "cy.uq"; ur: "cy.ur"; us: "cy.us"; ut: "cy.ut"; uu: "cy.uu"; uv: "cy.uv"; uw: "cy.uw"; ux: "cy.ux"; uy: "cy.uy"; uz: "cy.uz"; va: "cy.va"; vb: "cy.vb"; vc: "cy.vc"; vd: "cy.vd"; ve: "cy.ve"; vf: "cy.vf"; vg: "cy.vg"; vh: "cy.vh"; vi: "cy.vi"; vj: "cy.vj"; vk: "cy.vk"; vl: "cy.vl"; vm: "cy.vm"; vn: "cy.vn"; vo: "cy.vo"; vp: "cy.vp"; vq: "cy.vq"; vr: "cy.vr"; vs: "cy.vs"; vt: "cy.vt"; vu: "cy.vu"; vv: "cy.vv"; vw: "cy.vw"; vx: "cy.vx"; vy: "cy.vy"; vz: "cy.vz"; wa: "cy.wa"; wb: "cy.wb"; wc: "cy.wc"; wd: "cy.wd"; we: "cy.we"; wf: "cy.wf"; wg: "cy.wg"; wh: "cy.wh"; wi: "cy.wi"; wj: "cy.wj"; wk: "cy.wk"; wl: "cy.wl"; wm: "cy.wm"; wn: "cy.wn"; wo: "cy.wo"; wp: "cy.wp"; wq: "cy.wq"; wr: "cy.wr"; ws: "cy.ws"; wt: "cy.wt"; wu: "cy.wu"; wv: "cy.wv"; ww: "cy.ww"; wx: "cy.wx"; wy: "cy.wy"; wz: "cy.wz"; xa: "cy.xa"; xb: "cy.xb"; xc: "cy.xc"; xd: "cy.xd"; xe: "cy.xe"; xf: "cy.xf"; xg: "cy.xg"; xh: "cy.xh"; xi: "cy.xi"; xj: "cy.xj"; xk: "cy.xk"; xl: "cy.xl"; xm: "cy.xm"; xn: "cy.xn"; xo: "cy.xo"; xp: "cy.xp"; xq: "cy.xq"; xr: "cy.xr"; xs: "cy.xs"; xt: "cy.xt"; xu: "cy.xu"; xv: "cy.xv"; xw: "cy.xw"; xx: "cy.xx"; xy: "cy.xy"; xz: "cy.xz"; ya: "cy.ya"; yb: "cy.yb"; yc: "cy.yc"; yd: "cy.yd"; ye: "cy.ye"; yf: "cy.yf"; yg: "cy.yg"; yh: "cy.yh"; yi: "cy.yi"; yj: "cy.yj"; yk: "cy.yk"; yl: "cy.yl"; ym: "cy.ym"; yn: "cy.yn"; yo: "cy.yo"; yp: "cy.yp"; yq: "cy.yq"; yr: "cy.yr"; ys: "cy.ys"; yt: "cy.yt"; yu: "cy.yu"; yv: "cy.yv"; yw: "cy.yw"; yx: "cy.yx"; yy: "cy.yy"; yz: "cy.yz"; za: "cy.za"; zb: "cy.zb"; zc: "cy.zc"; zd: "cy.zd"; ze: "cy.ze"; zf: "cy.zf"; zg: "cy.zg"; zh: "cy.zh"; zi: "cy.zi"; zj: "cy.zj"; zk: "cy.zk"; zl: "cy.zl"; zm: "cy.zm"; zn: "cy.zn"; zo: "cy.zo"; zp: "cy.zp"; zq: "cy.zq"; zr: "cy.zr"; zs: "cy.zs"; zt: "cy.zt"; zu: "cy.zu"; zv: "cy.zv"; zw: "cy.zw"; zx: "cy.zx"; zy: "cy.zy"; zz: "cy.zz"; }; cz: { aa: "cz.aa"; ab: "cz.ab"; ac: "cz.ac"; ad: "cz.ad"; ae: "cz.ae"; af: "cz.af"; ag: "cz.ag"; ah: "cz.ah"; ai: "cz.ai"; aj: "cz.aj"; ak: "cz.ak"; al: "cz.al"; am: "cz.am"; an: "cz.an"; ao: "cz.ao"; ap: "cz.ap"; aq: "cz.aq"; ar: "cz.ar"; as: "cz.as"; at: "cz.at"; au: "cz.au"; av: "cz.av"; aw: "cz.aw"; ax: "cz.ax"; ay: "cz.ay"; az: "cz.az"; ba: "cz.ba"; bb: "cz.bb"; bc: "cz.bc"; bd: "cz.bd"; be: "cz.be"; bf: "cz.bf"; bg: "cz.bg"; bh: "cz.bh"; bi: "cz.bi"; bj: "cz.bj"; bk: "cz.bk"; bl: "cz.bl"; bm: "cz.bm"; bn: "cz.bn"; bo: "cz.bo"; bp: "cz.bp"; bq: "cz.bq"; br: "cz.br"; bs: "cz.bs"; bt: "cz.bt"; bu: "cz.bu"; bv: "cz.bv"; bw: "cz.bw"; bx: "cz.bx"; by: "cz.by"; bz: "cz.bz"; ca: "cz.ca"; cb: "cz.cb"; cc: "cz.cc"; cd: "cz.cd"; ce: "cz.ce"; cf: "cz.cf"; cg: "cz.cg"; ch: "cz.ch"; ci: "cz.ci"; cj: "cz.cj"; ck: "cz.ck"; cl: "cz.cl"; cm: "cz.cm"; cn: "cz.cn"; co: "cz.co"; cp: "cz.cp"; cq: "cz.cq"; cr: "cz.cr"; cs: "cz.cs"; ct: "cz.ct"; cu: "cz.cu"; cv: "cz.cv"; cw: "cz.cw"; cx: "cz.cx"; cy: "cz.cy"; cz: "cz.cz"; da: "cz.da"; db: "cz.db"; dc: "cz.dc"; dd: "cz.dd"; de: "cz.de"; df: "cz.df"; dg: "cz.dg"; dh: "cz.dh"; di: "cz.di"; dj: "cz.dj"; dk: "cz.dk"; dl: "cz.dl"; dm: "cz.dm"; dn: "cz.dn"; do: "cz.do"; dp: "cz.dp"; dq: "cz.dq"; dr: "cz.dr"; ds: "cz.ds"; dt: "cz.dt"; du: "cz.du"; dv: "cz.dv"; dw: "cz.dw"; dx: "cz.dx"; dy: "cz.dy"; dz: "cz.dz"; ea: "cz.ea"; eb: "cz.eb"; ec: "cz.ec"; ed: "cz.ed"; ee: "cz.ee"; ef: "cz.ef"; eg: "cz.eg"; eh: "cz.eh"; ei: "cz.ei"; ej: "cz.ej"; ek: "cz.ek"; el: "cz.el"; em: "cz.em"; en: "cz.en"; eo: "cz.eo"; ep: "cz.ep"; eq: "cz.eq"; er: "cz.er"; es: "cz.es"; et: "cz.et"; eu: "cz.eu"; ev: "cz.ev"; ew: "cz.ew"; ex: "cz.ex"; ey: "cz.ey"; ez: "cz.ez"; fa: "cz.fa"; fb: "cz.fb"; fc: "cz.fc"; fd: "cz.fd"; fe: "cz.fe"; ff: "cz.ff"; fg: "cz.fg"; fh: "cz.fh"; fi: "cz.fi"; fj: "cz.fj"; fk: "cz.fk"; fl: "cz.fl"; fm: "cz.fm"; fn: "cz.fn"; fo: "cz.fo"; fp: "cz.fp"; fq: "cz.fq"; fr: "cz.fr"; fs: "cz.fs"; ft: "cz.ft"; fu: "cz.fu"; fv: "cz.fv"; fw: "cz.fw"; fx: "cz.fx"; fy: "cz.fy"; fz: "cz.fz"; ga: "cz.ga"; gb: "cz.gb"; gc: "cz.gc"; gd: "cz.gd"; ge: "cz.ge"; gf: "cz.gf"; gg: "cz.gg"; gh: "cz.gh"; gi: "cz.gi"; gj: "cz.gj"; gk: "cz.gk"; gl: "cz.gl"; gm: "cz.gm"; gn: "cz.gn"; go: "cz.go"; gp: "cz.gp"; gq: "cz.gq"; gr: "cz.gr"; gs: "cz.gs"; gt: "cz.gt"; gu: "cz.gu"; gv: "cz.gv"; gw: "cz.gw"; gx: "cz.gx"; gy: "cz.gy"; gz: "cz.gz"; ha: "cz.ha"; hb: "cz.hb"; hc: "cz.hc"; hd: "cz.hd"; he: "cz.he"; hf: "cz.hf"; hg: "cz.hg"; hh: "cz.hh"; hi: "cz.hi"; hj: "cz.hj"; hk: "cz.hk"; hl: "cz.hl"; hm: "cz.hm"; hn: "cz.hn"; ho: "cz.ho"; hp: "cz.hp"; hq: "cz.hq"; hr: "cz.hr"; hs: "cz.hs"; ht: "cz.ht"; hu: "cz.hu"; hv: "cz.hv"; hw: "cz.hw"; hx: "cz.hx"; hy: "cz.hy"; hz: "cz.hz"; ia: "cz.ia"; ib: "cz.ib"; ic: "cz.ic"; id: "cz.id"; ie: "cz.ie"; if: "cz.if"; ig: "cz.ig"; ih: "cz.ih"; ii: "cz.ii"; ij: "cz.ij"; ik: "cz.ik"; il: "cz.il"; im: "cz.im"; in: "cz.in"; io: "cz.io"; ip: "cz.ip"; iq: "cz.iq"; ir: "cz.ir"; is: "cz.is"; it: "cz.it"; iu: "cz.iu"; iv: "cz.iv"; iw: "cz.iw"; ix: "cz.ix"; iy: "cz.iy"; iz: "cz.iz"; ja: "cz.ja"; jb: "cz.jb"; jc: "cz.jc"; jd: "cz.jd"; je: "cz.je"; jf: "cz.jf"; jg: "cz.jg"; jh: "cz.jh"; ji: "cz.ji"; jj: "cz.jj"; jk: "cz.jk"; jl: "cz.jl"; jm: "cz.jm"; jn: "cz.jn"; jo: "cz.jo"; jp: "cz.jp"; jq: "cz.jq"; jr: "cz.jr"; js: "cz.js"; jt: "cz.jt"; ju: "cz.ju"; jv: "cz.jv"; jw: "cz.jw"; jx: "cz.jx"; jy: "cz.jy"; jz: "cz.jz"; ka: "cz.ka"; kb: "cz.kb"; kc: "cz.kc"; kd: "cz.kd"; ke: "cz.ke"; kf: "cz.kf"; kg: "cz.kg"; kh: "cz.kh"; ki: "cz.ki"; kj: "cz.kj"; kk: "cz.kk"; kl: "cz.kl"; km: "cz.km"; kn: "cz.kn"; ko: "cz.ko"; kp: "cz.kp"; kq: "cz.kq"; kr: "cz.kr"; ks: "cz.ks"; kt: "cz.kt"; ku: "cz.ku"; kv: "cz.kv"; kw: "cz.kw"; kx: "cz.kx"; ky: "cz.ky"; kz: "cz.kz"; la: "cz.la"; lb: "cz.lb"; lc: "cz.lc"; ld: "cz.ld"; le: "cz.le"; lf: "cz.lf"; lg: "cz.lg"; lh: "cz.lh"; li: "cz.li"; lj: "cz.lj"; lk: "cz.lk"; ll: "cz.ll"; lm: "cz.lm"; ln: "cz.ln"; lo: "cz.lo"; lp: "cz.lp"; lq: "cz.lq"; lr: "cz.lr"; ls: "cz.ls"; lt: "cz.lt"; lu: "cz.lu"; lv: "cz.lv"; lw: "cz.lw"; lx: "cz.lx"; ly: "cz.ly"; lz: "cz.lz"; ma: "cz.ma"; mb: "cz.mb"; mc: "cz.mc"; md: "cz.md"; me: "cz.me"; mf: "cz.mf"; mg: "cz.mg"; mh: "cz.mh"; mi: "cz.mi"; mj: "cz.mj"; mk: "cz.mk"; ml: "cz.ml"; mm: "cz.mm"; mn: "cz.mn"; mo: "cz.mo"; mp: "cz.mp"; mq: "cz.mq"; mr: "cz.mr"; ms: "cz.ms"; mt: "cz.mt"; mu: "cz.mu"; mv: "cz.mv"; mw: "cz.mw"; mx: "cz.mx"; my: "cz.my"; mz: "cz.mz"; na: "cz.na"; nb: "cz.nb"; nc: "cz.nc"; nd: "cz.nd"; ne: "cz.ne"; nf: "cz.nf"; ng: "cz.ng"; nh: "cz.nh"; ni: "cz.ni"; nj: "cz.nj"; nk: "cz.nk"; nl: "cz.nl"; nm: "cz.nm"; nn: "cz.nn"; no: "cz.no"; np: "cz.np"; nq: "cz.nq"; nr: "cz.nr"; ns: "cz.ns"; nt: "cz.nt"; nu: "cz.nu"; nv: "cz.nv"; nw: "cz.nw"; nx: "cz.nx"; ny: "cz.ny"; nz: "cz.nz"; oa: "cz.oa"; ob: "cz.ob"; oc: "cz.oc"; od: "cz.od"; oe: "cz.oe"; of: "cz.of"; og: "cz.og"; oh: "cz.oh"; oi: "cz.oi"; oj: "cz.oj"; ok: "cz.ok"; ol: "cz.ol"; om: "cz.om"; on: "cz.on"; oo: "cz.oo"; op: "cz.op"; oq: "cz.oq"; or: "cz.or"; os: "cz.os"; ot: "cz.ot"; ou: "cz.ou"; ov: "cz.ov"; ow: "cz.ow"; ox: "cz.ox"; oy: "cz.oy"; oz: "cz.oz"; pa: "cz.pa"; pb: "cz.pb"; pc: "cz.pc"; pd: "cz.pd"; pe: "cz.pe"; pf: "cz.pf"; pg: "cz.pg"; ph: "cz.ph"; pi: "cz.pi"; pj: "cz.pj"; pk: "cz.pk"; pl: "cz.pl"; pm: "cz.pm"; pn: "cz.pn"; po: "cz.po"; pp: "cz.pp"; pq: "cz.pq"; pr: "cz.pr"; ps: "cz.ps"; pt: "cz.pt"; pu: "cz.pu"; pv: "cz.pv"; pw: "cz.pw"; px: "cz.px"; py: "cz.py"; pz: "cz.pz"; qa: "cz.qa"; qb: "cz.qb"; qc: "cz.qc"; qd: "cz.qd"; qe: "cz.qe"; qf: "cz.qf"; qg: "cz.qg"; qh: "cz.qh"; qi: "cz.qi"; qj: "cz.qj"; qk: "cz.qk"; ql: "cz.ql"; qm: "cz.qm"; qn: "cz.qn"; qo: "cz.qo"; qp: "cz.qp"; qq: "cz.qq"; qr: "cz.qr"; qs: "cz.qs"; qt: "cz.qt"; qu: "cz.qu"; qv: "cz.qv"; qw: "cz.qw"; qx: "cz.qx"; qy: "cz.qy"; qz: "cz.qz"; ra: "cz.ra"; rb: "cz.rb"; rc: "cz.rc"; rd: "cz.rd"; re: "cz.re"; rf: "cz.rf"; rg: "cz.rg"; rh: "cz.rh"; ri: "cz.ri"; rj: "cz.rj"; rk: "cz.rk"; rl: "cz.rl"; rm: "cz.rm"; rn: "cz.rn"; ro: "cz.ro"; rp: "cz.rp"; rq: "cz.rq"; rr: "cz.rr"; rs: "cz.rs"; rt: "cz.rt"; ru: "cz.ru"; rv: "cz.rv"; rw: "cz.rw"; rx: "cz.rx"; ry: "cz.ry"; rz: "cz.rz"; sa: "cz.sa"; sb: "cz.sb"; sc: "cz.sc"; sd: "cz.sd"; se: "cz.se"; sf: "cz.sf"; sg: "cz.sg"; sh: "cz.sh"; si: "cz.si"; sj: "cz.sj"; sk: "cz.sk"; sl: "cz.sl"; sm: "cz.sm"; sn: "cz.sn"; so: "cz.so"; sp: "cz.sp"; sq: "cz.sq"; sr: "cz.sr"; ss: "cz.ss"; st: "cz.st"; su: "cz.su"; sv: "cz.sv"; sw: "cz.sw"; sx: "cz.sx"; sy: "cz.sy"; sz: "cz.sz"; ta: "cz.ta"; tb: "cz.tb"; tc: "cz.tc"; td: "cz.td"; te: "cz.te"; tf: "cz.tf"; tg: "cz.tg"; th: "cz.th"; ti: "cz.ti"; tj: "cz.tj"; tk: "cz.tk"; tl: "cz.tl"; tm: "cz.tm"; tn: "cz.tn"; to: "cz.to"; tp: "cz.tp"; tq: "cz.tq"; tr: "cz.tr"; ts: "cz.ts"; tt: "cz.tt"; tu: "cz.tu"; tv: "cz.tv"; tw: "cz.tw"; tx: "cz.tx"; ty: "cz.ty"; tz: "cz.tz"; ua: "cz.ua"; ub: "cz.ub"; uc: "cz.uc"; ud: "cz.ud"; ue: "cz.ue"; uf: "cz.uf"; ug: "cz.ug"; uh: "cz.uh"; ui: "cz.ui"; uj: "cz.uj"; uk: "cz.uk"; ul: "cz.ul"; um: "cz.um"; un: "cz.un"; uo: "cz.uo"; up: "cz.up"; uq: "cz.uq"; ur: "cz.ur"; us: "cz.us"; ut: "cz.ut"; uu: "cz.uu"; uv: "cz.uv"; uw: "cz.uw"; ux: "cz.ux"; uy: "cz.uy"; uz: "cz.uz"; va: "cz.va"; vb: "cz.vb"; vc: "cz.vc"; vd: "cz.vd"; ve: "cz.ve"; vf: "cz.vf"; vg: "cz.vg"; vh: "cz.vh"; vi: "cz.vi"; vj: "cz.vj"; vk: "cz.vk"; vl: "cz.vl"; vm: "cz.vm"; vn: "cz.vn"; vo: "cz.vo"; vp: "cz.vp"; vq: "cz.vq"; vr: "cz.vr"; vs: "cz.vs"; vt: "cz.vt"; vu: "cz.vu"; vv: "cz.vv"; vw: "cz.vw"; vx: "cz.vx"; vy: "cz.vy"; vz: "cz.vz"; wa: "cz.wa"; wb: "cz.wb"; wc: "cz.wc"; wd: "cz.wd"; we: "cz.we"; wf: "cz.wf"; wg: "cz.wg"; wh: "cz.wh"; wi: "cz.wi"; wj: "cz.wj"; wk: "cz.wk"; wl: "cz.wl"; wm: "cz.wm"; wn: "cz.wn"; wo: "cz.wo"; wp: "cz.wp"; wq: "cz.wq"; wr: "cz.wr"; ws: "cz.ws"; wt: "cz.wt"; wu: "cz.wu"; wv: "cz.wv"; ww: "cz.ww"; wx: "cz.wx"; wy: "cz.wy"; wz: "cz.wz"; xa: "cz.xa"; xb: "cz.xb"; xc: "cz.xc"; xd: "cz.xd"; xe: "cz.xe"; xf: "cz.xf"; xg: "cz.xg"; xh: "cz.xh"; xi: "cz.xi"; xj: "cz.xj"; xk: "cz.xk"; xl: "cz.xl"; xm: "cz.xm"; xn: "cz.xn"; xo: "cz.xo"; xp: "cz.xp"; xq: "cz.xq"; xr: "cz.xr"; xs: "cz.xs"; xt: "cz.xt"; xu: "cz.xu"; xv: "cz.xv"; xw: "cz.xw"; xx: "cz.xx"; xy: "cz.xy"; xz: "cz.xz"; ya: "cz.ya"; yb: "cz.yb"; yc: "cz.yc"; yd: "cz.yd"; ye: "cz.ye"; yf: "cz.yf"; yg: "cz.yg"; yh: "cz.yh"; yi: "cz.yi"; yj: "cz.yj"; yk: "cz.yk"; yl: "cz.yl"; ym: "cz.ym"; yn: "cz.yn"; yo: "cz.yo"; yp: "cz.yp"; yq: "cz.yq"; yr: "cz.yr"; ys: "cz.ys"; yt: "cz.yt"; yu: "cz.yu"; yv: "cz.yv"; yw: "cz.yw"; yx: "cz.yx"; yy: "cz.yy"; yz: "cz.yz"; za: "cz.za"; zb: "cz.zb"; zc: "cz.zc"; zd: "cz.zd"; ze: "cz.ze"; zf: "cz.zf"; zg: "cz.zg"; zh: "cz.zh"; zi: "cz.zi"; zj: "cz.zj"; zk: "cz.zk"; zl: "cz.zl"; zm: "cz.zm"; zn: "cz.zn"; zo: "cz.zo"; zp: "cz.zp"; zq: "cz.zq"; zr: "cz.zr"; zs: "cz.zs"; zt: "cz.zt"; zu: "cz.zu"; zv: "cz.zv"; zw: "cz.zw"; zx: "cz.zx"; zy: "cz.zy"; zz: "cz.zz"; }; da: { aa: "da.aa"; ab: "da.ab"; ac: "da.ac"; ad: "da.ad"; ae: "da.ae"; af: "da.af"; ag: "da.ag"; ah: "da.ah"; ai: "da.ai"; aj: "da.aj"; ak: "da.ak"; al: "da.al"; am: "da.am"; an: "da.an"; ao: "da.ao"; ap: "da.ap"; aq: "da.aq"; ar: "da.ar"; as: "da.as"; at: "da.at"; au: "da.au"; av: "da.av"; aw: "da.aw"; ax: "da.ax"; ay: "da.ay"; az: "da.az"; ba: "da.ba"; bb: "da.bb"; bc: "da.bc"; bd: "da.bd"; be: "da.be"; bf: "da.bf"; bg: "da.bg"; bh: "da.bh"; bi: "da.bi"; bj: "da.bj"; bk: "da.bk"; bl: "da.bl"; bm: "da.bm"; bn: "da.bn"; bo: "da.bo"; bp: "da.bp"; bq: "da.bq"; br: "da.br"; bs: "da.bs"; bt: "da.bt"; bu: "da.bu"; bv: "da.bv"; bw: "da.bw"; bx: "da.bx"; by: "da.by"; bz: "da.bz"; ca: "da.ca"; cb: "da.cb"; cc: "da.cc"; cd: "da.cd"; ce: "da.ce"; cf: "da.cf"; cg: "da.cg"; ch: "da.ch"; ci: "da.ci"; cj: "da.cj"; ck: "da.ck"; cl: "da.cl"; cm: "da.cm"; cn: "da.cn"; co: "da.co"; cp: "da.cp"; cq: "da.cq"; cr: "da.cr"; cs: "da.cs"; ct: "da.ct"; cu: "da.cu"; cv: "da.cv"; cw: "da.cw"; cx: "da.cx"; cy: "da.cy"; cz: "da.cz"; da: "da.da"; db: "da.db"; dc: "da.dc"; dd: "da.dd"; de: "da.de"; df: "da.df"; dg: "da.dg"; dh: "da.dh"; di: "da.di"; dj: "da.dj"; dk: "da.dk"; dl: "da.dl"; dm: "da.dm"; dn: "da.dn"; do: "da.do"; dp: "da.dp"; dq: "da.dq"; dr: "da.dr"; ds: "da.ds"; dt: "da.dt"; du: "da.du"; dv: "da.dv"; dw: "da.dw"; dx: "da.dx"; dy: "da.dy"; dz: "da.dz"; ea: "da.ea"; eb: "da.eb"; ec: "da.ec"; ed: "da.ed"; ee: "da.ee"; ef: "da.ef"; eg: "da.eg"; eh: "da.eh"; ei: "da.ei"; ej: "da.ej"; ek: "da.ek"; el: "da.el"; em: "da.em"; en: "da.en"; eo: "da.eo"; ep: "da.ep"; eq: "da.eq"; er: "da.er"; es: "da.es"; et: "da.et"; eu: "da.eu"; ev: "da.ev"; ew: "da.ew"; ex: "da.ex"; ey: "da.ey"; ez: "da.ez"; fa: "da.fa"; fb: "da.fb"; fc: "da.fc"; fd: "da.fd"; fe: "da.fe"; ff: "da.ff"; fg: "da.fg"; fh: "da.fh"; fi: "da.fi"; fj: "da.fj"; fk: "da.fk"; fl: "da.fl"; fm: "da.fm"; fn: "da.fn"; fo: "da.fo"; fp: "da.fp"; fq: "da.fq"; fr: "da.fr"; fs: "da.fs"; ft: "da.ft"; fu: "da.fu"; fv: "da.fv"; fw: "da.fw"; fx: "da.fx"; fy: "da.fy"; fz: "da.fz"; ga: "da.ga"; gb: "da.gb"; gc: "da.gc"; gd: "da.gd"; ge: "da.ge"; gf: "da.gf"; gg: "da.gg"; gh: "da.gh"; gi: "da.gi"; gj: "da.gj"; gk: "da.gk"; gl: "da.gl"; gm: "da.gm"; gn: "da.gn"; go: "da.go"; gp: "da.gp"; gq: "da.gq"; gr: "da.gr"; gs: "da.gs"; gt: "da.gt"; gu: "da.gu"; gv: "da.gv"; gw: "da.gw"; gx: "da.gx"; gy: "da.gy"; gz: "da.gz"; ha: "da.ha"; hb: "da.hb"; hc: "da.hc"; hd: "da.hd"; he: "da.he"; hf: "da.hf"; hg: "da.hg"; hh: "da.hh"; hi: "da.hi"; hj: "da.hj"; hk: "da.hk"; hl: "da.hl"; hm: "da.hm"; hn: "da.hn"; ho: "da.ho"; hp: "da.hp"; hq: "da.hq"; hr: "da.hr"; hs: "da.hs"; ht: "da.ht"; hu: "da.hu"; hv: "da.hv"; hw: "da.hw"; hx: "da.hx"; hy: "da.hy"; hz: "da.hz"; ia: "da.ia"; ib: "da.ib"; ic: "da.ic"; id: "da.id"; ie: "da.ie"; if: "da.if"; ig: "da.ig"; ih: "da.ih"; ii: "da.ii"; ij: "da.ij"; ik: "da.ik"; il: "da.il"; im: "da.im"; in: "da.in"; io: "da.io"; ip: "da.ip"; iq: "da.iq"; ir: "da.ir"; is: "da.is"; it: "da.it"; iu: "da.iu"; iv: "da.iv"; iw: "da.iw"; ix: "da.ix"; iy: "da.iy"; iz: "da.iz"; ja: "da.ja"; jb: "da.jb"; jc: "da.jc"; jd: "da.jd"; je: "da.je"; jf: "da.jf"; jg: "da.jg"; jh: "da.jh"; ji: "da.ji"; jj: "da.jj"; jk: "da.jk"; jl: "da.jl"; jm: "da.jm"; jn: "da.jn"; jo: "da.jo"; jp: "da.jp"; jq: "da.jq"; jr: "da.jr"; js: "da.js"; jt: "da.jt"; ju: "da.ju"; jv: "da.jv"; jw: "da.jw"; jx: "da.jx"; jy: "da.jy"; jz: "da.jz"; ka: "da.ka"; kb: "da.kb"; kc: "da.kc"; kd: "da.kd"; ke: "da.ke"; kf: "da.kf"; kg: "da.kg"; kh: "da.kh"; ki: "da.ki"; kj: "da.kj"; kk: "da.kk"; kl: "da.kl"; km: "da.km"; kn: "da.kn"; ko: "da.ko"; kp: "da.kp"; kq: "da.kq"; kr: "da.kr"; ks: "da.ks"; kt: "da.kt"; ku: "da.ku"; kv: "da.kv"; kw: "da.kw"; kx: "da.kx"; ky: "da.ky"; kz: "da.kz"; la: "da.la"; lb: "da.lb"; lc: "da.lc"; ld: "da.ld"; le: "da.le"; lf: "da.lf"; lg: "da.lg"; lh: "da.lh"; li: "da.li"; lj: "da.lj"; lk: "da.lk"; ll: "da.ll"; lm: "da.lm"; ln: "da.ln"; lo: "da.lo"; lp: "da.lp"; lq: "da.lq"; lr: "da.lr"; ls: "da.ls"; lt: "da.lt"; lu: "da.lu"; lv: "da.lv"; lw: "da.lw"; lx: "da.lx"; ly: "da.ly"; lz: "da.lz"; ma: "da.ma"; mb: "da.mb"; mc: "da.mc"; md: "da.md"; me: "da.me"; mf: "da.mf"; mg: "da.mg"; mh: "da.mh"; mi: "da.mi"; mj: "da.mj"; mk: "da.mk"; ml: "da.ml"; mm: "da.mm"; mn: "da.mn"; mo: "da.mo"; mp: "da.mp"; mq: "da.mq"; mr: "da.mr"; ms: "da.ms"; mt: "da.mt"; mu: "da.mu"; mv: "da.mv"; mw: "da.mw"; mx: "da.mx"; my: "da.my"; mz: "da.mz"; na: "da.na"; nb: "da.nb"; nc: "da.nc"; nd: "da.nd"; ne: "da.ne"; nf: "da.nf"; ng: "da.ng"; nh: "da.nh"; ni: "da.ni"; nj: "da.nj"; nk: "da.nk"; nl: "da.nl"; nm: "da.nm"; nn: "da.nn"; no: "da.no"; np: "da.np"; nq: "da.nq"; nr: "da.nr"; ns: "da.ns"; nt: "da.nt"; nu: "da.nu"; nv: "da.nv"; nw: "da.nw"; nx: "da.nx"; ny: "da.ny"; nz: "da.nz"; oa: "da.oa"; ob: "da.ob"; oc: "da.oc"; od: "da.od"; oe: "da.oe"; of: "da.of"; og: "da.og"; oh: "da.oh"; oi: "da.oi"; oj: "da.oj"; ok: "da.ok"; ol: "da.ol"; om: "da.om"; on: "da.on"; oo: "da.oo"; op: "da.op"; oq: "da.oq"; or: "da.or"; os: "da.os"; ot: "da.ot"; ou: "da.ou"; ov: "da.ov"; ow: "da.ow"; ox: "da.ox"; oy: "da.oy"; oz: "da.oz"; pa: "da.pa"; pb: "da.pb"; pc: "da.pc"; pd: "da.pd"; pe: "da.pe"; pf: "da.pf"; pg: "da.pg"; ph: "da.ph"; pi: "da.pi"; pj: "da.pj"; pk: "da.pk"; pl: "da.pl"; pm: "da.pm"; pn: "da.pn"; po: "da.po"; pp: "da.pp"; pq: "da.pq"; pr: "da.pr"; ps: "da.ps"; pt: "da.pt"; pu: "da.pu"; pv: "da.pv"; pw: "da.pw"; px: "da.px"; py: "da.py"; pz: "da.pz"; qa: "da.qa"; qb: "da.qb"; qc: "da.qc"; qd: "da.qd"; qe: "da.qe"; qf: "da.qf"; qg: "da.qg"; qh: "da.qh"; qi: "da.qi"; qj: "da.qj"; qk: "da.qk"; ql: "da.ql"; qm: "da.qm"; qn: "da.qn"; qo: "da.qo"; qp: "da.qp"; qq: "da.qq"; qr: "da.qr"; qs: "da.qs"; qt: "da.qt"; qu: "da.qu"; qv: "da.qv"; qw: "da.qw"; qx: "da.qx"; qy: "da.qy"; qz: "da.qz"; ra: "da.ra"; rb: "da.rb"; rc: "da.rc"; rd: "da.rd"; re: "da.re"; rf: "da.rf"; rg: "da.rg"; rh: "da.rh"; ri: "da.ri"; rj: "da.rj"; rk: "da.rk"; rl: "da.rl"; rm: "da.rm"; rn: "da.rn"; ro: "da.ro"; rp: "da.rp"; rq: "da.rq"; rr: "da.rr"; rs: "da.rs"; rt: "da.rt"; ru: "da.ru"; rv: "da.rv"; rw: "da.rw"; rx: "da.rx"; ry: "da.ry"; rz: "da.rz"; sa: "da.sa"; sb: "da.sb"; sc: "da.sc"; sd: "da.sd"; se: "da.se"; sf: "da.sf"; sg: "da.sg"; sh: "da.sh"; si: "da.si"; sj: "da.sj"; sk: "da.sk"; sl: "da.sl"; sm: "da.sm"; sn: "da.sn"; so: "da.so"; sp: "da.sp"; sq: "da.sq"; sr: "da.sr"; ss: "da.ss"; st: "da.st"; su: "da.su"; sv: "da.sv"; sw: "da.sw"; sx: "da.sx"; sy: "da.sy"; sz: "da.sz"; ta: "da.ta"; tb: "da.tb"; tc: "da.tc"; td: "da.td"; te: "da.te"; tf: "da.tf"; tg: "da.tg"; th: "da.th"; ti: "da.ti"; tj: "da.tj"; tk: "da.tk"; tl: "da.tl"; tm: "da.tm"; tn: "da.tn"; to: "da.to"; tp: "da.tp"; tq: "da.tq"; tr: "da.tr"; ts: "da.ts"; tt: "da.tt"; tu: "da.tu"; tv: "da.tv"; tw: "da.tw"; tx: "da.tx"; ty: "da.ty"; tz: "da.tz"; ua: "da.ua"; ub: "da.ub"; uc: "da.uc"; ud: "da.ud"; ue: "da.ue"; uf: "da.uf"; ug: "da.ug"; uh: "da.uh"; ui: "da.ui"; uj: "da.uj"; uk: "da.uk"; ul: "da.ul"; um: "da.um"; un: "da.un"; uo: "da.uo"; up: "da.up"; uq: "da.uq"; ur: "da.ur"; us: "da.us"; ut: "da.ut"; uu: "da.uu"; uv: "da.uv"; uw: "da.uw"; ux: "da.ux"; uy: "da.uy"; uz: "da.uz"; va: "da.va"; vb: "da.vb"; vc: "da.vc"; vd: "da.vd"; ve: "da.ve"; vf: "da.vf"; vg: "da.vg"; vh: "da.vh"; vi: "da.vi"; vj: "da.vj"; vk: "da.vk"; vl: "da.vl"; vm: "da.vm"; vn: "da.vn"; vo: "da.vo"; vp: "da.vp"; vq: "da.vq"; vr: "da.vr"; vs: "da.vs"; vt: "da.vt"; vu: "da.vu"; vv: "da.vv"; vw: "da.vw"; vx: "da.vx"; vy: "da.vy"; vz: "da.vz"; wa: "da.wa"; wb: "da.wb"; wc: "da.wc"; wd: "da.wd"; we: "da.we"; wf: "da.wf"; wg: "da.wg"; wh: "da.wh"; wi: "da.wi"; wj: "da.wj"; wk: "da.wk"; wl: "da.wl"; wm: "da.wm"; wn: "da.wn"; wo: "da.wo"; wp: "da.wp"; wq: "da.wq"; wr: "da.wr"; ws: "da.ws"; wt: "da.wt"; wu: "da.wu"; wv: "da.wv"; ww: "da.ww"; wx: "da.wx"; wy: "da.wy"; wz: "da.wz"; xa: "da.xa"; xb: "da.xb"; xc: "da.xc"; xd: "da.xd"; xe: "da.xe"; xf: "da.xf"; xg: "da.xg"; xh: "da.xh"; xi: "da.xi"; xj: "da.xj"; xk: "da.xk"; xl: "da.xl"; xm: "da.xm"; xn: "da.xn"; xo: "da.xo"; xp: "da.xp"; xq: "da.xq"; xr: "da.xr"; xs: "da.xs"; xt: "da.xt"; xu: "da.xu"; xv: "da.xv"; xw: "da.xw"; xx: "da.xx"; xy: "da.xy"; xz: "da.xz"; ya: "da.ya"; yb: "da.yb"; yc: "da.yc"; yd: "da.yd"; ye: "da.ye"; yf: "da.yf"; yg: "da.yg"; yh: "da.yh"; yi: "da.yi"; yj: "da.yj"; yk: "da.yk"; yl: "da.yl"; ym: "da.ym"; yn: "da.yn"; yo: "da.yo"; yp: "da.yp"; yq: "da.yq"; yr: "da.yr"; ys: "da.ys"; yt: "da.yt"; yu: "da.yu"; yv: "da.yv"; yw: "da.yw"; yx: "da.yx"; yy: "da.yy"; yz: "da.yz"; za: "da.za"; zb: "da.zb"; zc: "da.zc"; zd: "da.zd"; ze: "da.ze"; zf: "da.zf"; zg: "da.zg"; zh: "da.zh"; zi: "da.zi"; zj: "da.zj"; zk: "da.zk"; zl: "da.zl"; zm: "da.zm"; zn: "da.zn"; zo: "da.zo"; zp: "da.zp"; zq: "da.zq"; zr: "da.zr"; zs: "da.zs"; zt: "da.zt"; zu: "da.zu"; zv: "da.zv"; zw: "da.zw"; zx: "da.zx"; zy: "da.zy"; zz: "da.zz"; }; db: { aa: "db.aa"; ab: "db.ab"; ac: "db.ac"; ad: "db.ad"; ae: "db.ae"; af: "db.af"; ag: "db.ag"; ah: "db.ah"; ai: "db.ai"; aj: "db.aj"; ak: "db.ak"; al: "db.al"; am: "db.am"; an: "db.an"; ao: "db.ao"; ap: "db.ap"; aq: "db.aq"; ar: "db.ar"; as: "db.as"; at: "db.at"; au: "db.au"; av: "db.av"; aw: "db.aw"; ax: "db.ax"; ay: "db.ay"; az: "db.az"; ba: "db.ba"; bb: "db.bb"; bc: "db.bc"; bd: "db.bd"; be: "db.be"; bf: "db.bf"; bg: "db.bg"; bh: "db.bh"; bi: "db.bi"; bj: "db.bj"; bk: "db.bk"; bl: "db.bl"; bm: "db.bm"; bn: "db.bn"; bo: "db.bo"; bp: "db.bp"; bq: "db.bq"; br: "db.br"; bs: "db.bs"; bt: "db.bt"; bu: "db.bu"; bv: "db.bv"; bw: "db.bw"; bx: "db.bx"; by: "db.by"; bz: "db.bz"; ca: "db.ca"; cb: "db.cb"; cc: "db.cc"; cd: "db.cd"; ce: "db.ce"; cf: "db.cf"; cg: "db.cg"; ch: "db.ch"; ci: "db.ci"; cj: "db.cj"; ck: "db.ck"; cl: "db.cl"; cm: "db.cm"; cn: "db.cn"; co: "db.co"; cp: "db.cp"; cq: "db.cq"; cr: "db.cr"; cs: "db.cs"; ct: "db.ct"; cu: "db.cu"; cv: "db.cv"; cw: "db.cw"; cx: "db.cx"; cy: "db.cy"; cz: "db.cz"; da: "db.da"; db: "db.db"; dc: "db.dc"; dd: "db.dd"; de: "db.de"; df: "db.df"; dg: "db.dg"; dh: "db.dh"; di: "db.di"; dj: "db.dj"; dk: "db.dk"; dl: "db.dl"; dm: "db.dm"; dn: "db.dn"; do: "db.do"; dp: "db.dp"; dq: "db.dq"; dr: "db.dr"; ds: "db.ds"; dt: "db.dt"; du: "db.du"; dv: "db.dv"; dw: "db.dw"; dx: "db.dx"; dy: "db.dy"; dz: "db.dz"; ea: "db.ea"; eb: "db.eb"; ec: "db.ec"; ed: "db.ed"; ee: "db.ee"; ef: "db.ef"; eg: "db.eg"; eh: "db.eh"; ei: "db.ei"; ej: "db.ej"; ek: "db.ek"; el: "db.el"; em: "db.em"; en: "db.en"; eo: "db.eo"; ep: "db.ep"; eq: "db.eq"; er: "db.er"; es: "db.es"; et: "db.et"; eu: "db.eu"; ev: "db.ev"; ew: "db.ew"; ex: "db.ex"; ey: "db.ey"; ez: "db.ez"; fa: "db.fa"; fb: "db.fb"; fc: "db.fc"; fd: "db.fd"; fe: "db.fe"; ff: "db.ff"; fg: "db.fg"; fh: "db.fh"; fi: "db.fi"; fj: "db.fj"; fk: "db.fk"; fl: "db.fl"; fm: "db.fm"; fn: "db.fn"; fo: "db.fo"; fp: "db.fp"; fq: "db.fq"; fr: "db.fr"; fs: "db.fs"; ft: "db.ft"; fu: "db.fu"; fv: "db.fv"; fw: "db.fw"; fx: "db.fx"; fy: "db.fy"; fz: "db.fz"; ga: "db.ga"; gb: "db.gb"; gc: "db.gc"; gd: "db.gd"; ge: "db.ge"; gf: "db.gf"; gg: "db.gg"; gh: "db.gh"; gi: "db.gi"; gj: "db.gj"; gk: "db.gk"; gl: "db.gl"; gm: "db.gm"; gn: "db.gn"; go: "db.go"; gp: "db.gp"; gq: "db.gq"; gr: "db.gr"; gs: "db.gs"; gt: "db.gt"; gu: "db.gu"; gv: "db.gv"; gw: "db.gw"; gx: "db.gx"; gy: "db.gy"; gz: "db.gz"; ha: "db.ha"; hb: "db.hb"; hc: "db.hc"; hd: "db.hd"; he: "db.he"; hf: "db.hf"; hg: "db.hg"; hh: "db.hh"; hi: "db.hi"; hj: "db.hj"; hk: "db.hk"; hl: "db.hl"; hm: "db.hm"; hn: "db.hn"; ho: "db.ho"; hp: "db.hp"; hq: "db.hq"; hr: "db.hr"; hs: "db.hs"; ht: "db.ht"; hu: "db.hu"; hv: "db.hv"; hw: "db.hw"; hx: "db.hx"; hy: "db.hy"; hz: "db.hz"; ia: "db.ia"; ib: "db.ib"; ic: "db.ic"; id: "db.id"; ie: "db.ie"; if: "db.if"; ig: "db.ig"; ih: "db.ih"; ii: "db.ii"; ij: "db.ij"; ik: "db.ik"; il: "db.il"; im: "db.im"; in: "db.in"; io: "db.io"; ip: "db.ip"; iq: "db.iq"; ir: "db.ir"; is: "db.is"; it: "db.it"; iu: "db.iu"; iv: "db.iv"; iw: "db.iw"; ix: "db.ix"; iy: "db.iy"; iz: "db.iz"; ja: "db.ja"; jb: "db.jb"; jc: "db.jc"; jd: "db.jd"; je: "db.je"; jf: "db.jf"; jg: "db.jg"; jh: "db.jh"; ji: "db.ji"; jj: "db.jj"; jk: "db.jk"; jl: "db.jl"; jm: "db.jm"; jn: "db.jn"; jo: "db.jo"; jp: "db.jp"; jq: "db.jq"; jr: "db.jr"; js: "db.js"; jt: "db.jt"; ju: "db.ju"; jv: "db.jv"; jw: "db.jw"; jx: "db.jx"; jy: "db.jy"; jz: "db.jz"; ka: "db.ka"; kb: "db.kb"; kc: "db.kc"; kd: "db.kd"; ke: "db.ke"; kf: "db.kf"; kg: "db.kg"; kh: "db.kh"; ki: "db.ki"; kj: "db.kj"; kk: "db.kk"; kl: "db.kl"; km: "db.km"; kn: "db.kn"; ko: "db.ko"; kp: "db.kp"; kq: "db.kq"; kr: "db.kr"; ks: "db.ks"; kt: "db.kt"; ku: "db.ku"; kv: "db.kv"; kw: "db.kw"; kx: "db.kx"; ky: "db.ky"; kz: "db.kz"; la: "db.la"; lb: "db.lb"; lc: "db.lc"; ld: "db.ld"; le: "db.le"; lf: "db.lf"; lg: "db.lg"; lh: "db.lh"; li: "db.li"; lj: "db.lj"; lk: "db.lk"; ll: "db.ll"; lm: "db.lm"; ln: "db.ln"; lo: "db.lo"; lp: "db.lp"; lq: "db.lq"; lr: "db.lr"; ls: "db.ls"; lt: "db.lt"; lu: "db.lu"; lv: "db.lv"; lw: "db.lw"; lx: "db.lx"; ly: "db.ly"; lz: "db.lz"; ma: "db.ma"; mb: "db.mb"; mc: "db.mc"; md: "db.md"; me: "db.me"; mf: "db.mf"; mg: "db.mg"; mh: "db.mh"; mi: "db.mi"; mj: "db.mj"; mk: "db.mk"; ml: "db.ml"; mm: "db.mm"; mn: "db.mn"; mo: "db.mo"; mp: "db.mp"; mq: "db.mq"; mr: "db.mr"; ms: "db.ms"; mt: "db.mt"; mu: "db.mu"; mv: "db.mv"; mw: "db.mw"; mx: "db.mx"; my: "db.my"; mz: "db.mz"; na: "db.na"; nb: "db.nb"; nc: "db.nc"; nd: "db.nd"; ne: "db.ne"; nf: "db.nf"; ng: "db.ng"; nh: "db.nh"; ni: "db.ni"; nj: "db.nj"; nk: "db.nk"; nl: "db.nl"; nm: "db.nm"; nn: "db.nn"; no: "db.no"; np: "db.np"; nq: "db.nq"; nr: "db.nr"; ns: "db.ns"; nt: "db.nt"; nu: "db.nu"; nv: "db.nv"; nw: "db.nw"; nx: "db.nx"; ny: "db.ny"; nz: "db.nz"; oa: "db.oa"; ob: "db.ob"; oc: "db.oc"; od: "db.od"; oe: "db.oe"; of: "db.of"; og: "db.og"; oh: "db.oh"; oi: "db.oi"; oj: "db.oj"; ok: "db.ok"; ol: "db.ol"; om: "db.om"; on: "db.on"; oo: "db.oo"; op: "db.op"; oq: "db.oq"; or: "db.or"; os: "db.os"; ot: "db.ot"; ou: "db.ou"; ov: "db.ov"; ow: "db.ow"; ox: "db.ox"; oy: "db.oy"; oz: "db.oz"; pa: "db.pa"; pb: "db.pb"; pc: "db.pc"; pd: "db.pd"; pe: "db.pe"; pf: "db.pf"; pg: "db.pg"; ph: "db.ph"; pi: "db.pi"; pj: "db.pj"; pk: "db.pk"; pl: "db.pl"; pm: "db.pm"; pn: "db.pn"; po: "db.po"; pp: "db.pp"; pq: "db.pq"; pr: "db.pr"; ps: "db.ps"; pt: "db.pt"; pu: "db.pu"; pv: "db.pv"; pw: "db.pw"; px: "db.px"; py: "db.py"; pz: "db.pz"; qa: "db.qa"; qb: "db.qb"; qc: "db.qc"; qd: "db.qd"; qe: "db.qe"; qf: "db.qf"; qg: "db.qg"; qh: "db.qh"; qi: "db.qi"; qj: "db.qj"; qk: "db.qk"; ql: "db.ql"; qm: "db.qm"; qn: "db.qn"; qo: "db.qo"; qp: "db.qp"; qq: "db.qq"; qr: "db.qr"; qs: "db.qs"; qt: "db.qt"; qu: "db.qu"; qv: "db.qv"; qw: "db.qw"; qx: "db.qx"; qy: "db.qy"; qz: "db.qz"; ra: "db.ra"; rb: "db.rb"; rc: "db.rc"; rd: "db.rd"; re: "db.re"; rf: "db.rf"; rg: "db.rg"; rh: "db.rh"; ri: "db.ri"; rj: "db.rj"; rk: "db.rk"; rl: "db.rl"; rm: "db.rm"; rn: "db.rn"; ro: "db.ro"; rp: "db.rp"; rq: "db.rq"; rr: "db.rr"; rs: "db.rs"; rt: "db.rt"; ru: "db.ru"; rv: "db.rv"; rw: "db.rw"; rx: "db.rx"; ry: "db.ry"; rz: "db.rz"; sa: "db.sa"; sb: "db.sb"; sc: "db.sc"; sd: "db.sd"; se: "db.se"; sf: "db.sf"; sg: "db.sg"; sh: "db.sh"; si: "db.si"; sj: "db.sj"; sk: "db.sk"; sl: "db.sl"; sm: "db.sm"; sn: "db.sn"; so: "db.so"; sp: "db.sp"; sq: "db.sq"; sr: "db.sr"; ss: "db.ss"; st: "db.st"; su: "db.su"; sv: "db.sv"; sw: "db.sw"; sx: "db.sx"; sy: "db.sy"; sz: "db.sz"; ta: "db.ta"; tb: "db.tb"; tc: "db.tc"; td: "db.td"; te: "db.te"; tf: "db.tf"; tg: "db.tg"; th: "db.th"; ti: "db.ti"; tj: "db.tj"; tk: "db.tk"; tl: "db.tl"; tm: "db.tm"; tn: "db.tn"; to: "db.to"; tp: "db.tp"; tq: "db.tq"; tr: "db.tr"; ts: "db.ts"; tt: "db.tt"; tu: "db.tu"; tv: "db.tv"; tw: "db.tw"; tx: "db.tx"; ty: "db.ty"; tz: "db.tz"; ua: "db.ua"; ub: "db.ub"; uc: "db.uc"; ud: "db.ud"; ue: "db.ue"; uf: "db.uf"; ug: "db.ug"; uh: "db.uh"; ui: "db.ui"; uj: "db.uj"; uk: "db.uk"; ul: "db.ul"; um: "db.um"; un: "db.un"; uo: "db.uo"; up: "db.up"; uq: "db.uq"; ur: "db.ur"; us: "db.us"; ut: "db.ut"; uu: "db.uu"; uv: "db.uv"; uw: "db.uw"; ux: "db.ux"; uy: "db.uy"; uz: "db.uz"; va: "db.va"; vb: "db.vb"; vc: "db.vc"; vd: "db.vd"; ve: "db.ve"; vf: "db.vf"; vg: "db.vg"; vh: "db.vh"; vi: "db.vi"; vj: "db.vj"; vk: "db.vk"; vl: "db.vl"; vm: "db.vm"; vn: "db.vn"; vo: "db.vo"; vp: "db.vp"; vq: "db.vq"; vr: "db.vr"; vs: "db.vs"; vt: "db.vt"; vu: "db.vu"; vv: "db.vv"; vw: "db.vw"; vx: "db.vx"; vy: "db.vy"; vz: "db.vz"; wa: "db.wa"; wb: "db.wb"; wc: "db.wc"; wd: "db.wd"; we: "db.we"; wf: "db.wf"; wg: "db.wg"; wh: "db.wh"; wi: "db.wi"; wj: "db.wj"; wk: "db.wk"; wl: "db.wl"; wm: "db.wm"; wn: "db.wn"; wo: "db.wo"; wp: "db.wp"; wq: "db.wq"; wr: "db.wr"; ws: "db.ws"; wt: "db.wt"; wu: "db.wu"; wv: "db.wv"; ww: "db.ww"; wx: "db.wx"; wy: "db.wy"; wz: "db.wz"; xa: "db.xa"; xb: "db.xb"; xc: "db.xc"; xd: "db.xd"; xe: "db.xe"; xf: "db.xf"; xg: "db.xg"; xh: "db.xh"; xi: "db.xi"; xj: "db.xj"; xk: "db.xk"; xl: "db.xl"; xm: "db.xm"; xn: "db.xn"; xo: "db.xo"; xp: "db.xp"; xq: "db.xq"; xr: "db.xr"; xs: "db.xs"; xt: "db.xt"; xu: "db.xu"; xv: "db.xv"; xw: "db.xw"; xx: "db.xx"; xy: "db.xy"; xz: "db.xz"; ya: "db.ya"; yb: "db.yb"; yc: "db.yc"; yd: "db.yd"; ye: "db.ye"; yf: "db.yf"; yg: "db.yg"; yh: "db.yh"; yi: "db.yi"; yj: "db.yj"; yk: "db.yk"; yl: "db.yl"; ym: "db.ym"; yn: "db.yn"; yo: "db.yo"; yp: "db.yp"; yq: "db.yq"; yr: "db.yr"; ys: "db.ys"; yt: "db.yt"; yu: "db.yu"; yv: "db.yv"; yw: "db.yw"; yx: "db.yx"; yy: "db.yy"; yz: "db.yz"; za: "db.za"; zb: "db.zb"; zc: "db.zc"; zd: "db.zd"; ze: "db.ze"; zf: "db.zf"; zg: "db.zg"; zh: "db.zh"; zi: "db.zi"; zj: "db.zj"; zk: "db.zk"; zl: "db.zl"; zm: "db.zm"; zn: "db.zn"; zo: "db.zo"; zp: "db.zp"; zq: "db.zq"; zr: "db.zr"; zs: "db.zs"; zt: "db.zt"; zu: "db.zu"; zv: "db.zv"; zw: "db.zw"; zx: "db.zx"; zy: "db.zy"; zz: "db.zz"; }; dc: { aa: "dc.aa"; ab: "dc.ab"; ac: "dc.ac"; ad: "dc.ad"; ae: "dc.ae"; af: "dc.af"; ag: "dc.ag"; ah: "dc.ah"; ai: "dc.ai"; aj: "dc.aj"; ak: "dc.ak"; al: "dc.al"; am: "dc.am"; an: "dc.an"; ao: "dc.ao"; ap: "dc.ap"; aq: "dc.aq"; ar: "dc.ar"; as: "dc.as"; at: "dc.at"; au: "dc.au"; av: "dc.av"; aw: "dc.aw"; ax: "dc.ax"; ay: "dc.ay"; az: "dc.az"; ba: "dc.ba"; bb: "dc.bb"; bc: "dc.bc"; bd: "dc.bd"; be: "dc.be"; bf: "dc.bf"; bg: "dc.bg"; bh: "dc.bh"; bi: "dc.bi"; bj: "dc.bj"; bk: "dc.bk"; bl: "dc.bl"; bm: "dc.bm"; bn: "dc.bn"; bo: "dc.bo"; bp: "dc.bp"; bq: "dc.bq"; br: "dc.br"; bs: "dc.bs"; bt: "dc.bt"; bu: "dc.bu"; bv: "dc.bv"; bw: "dc.bw"; bx: "dc.bx"; by: "dc.by"; bz: "dc.bz"; ca: "dc.ca"; cb: "dc.cb"; cc: "dc.cc"; cd: "dc.cd"; ce: "dc.ce"; cf: "dc.cf"; cg: "dc.cg"; ch: "dc.ch"; ci: "dc.ci"; cj: "dc.cj"; ck: "dc.ck"; cl: "dc.cl"; cm: "dc.cm"; cn: "dc.cn"; co: "dc.co"; cp: "dc.cp"; cq: "dc.cq"; cr: "dc.cr"; cs: "dc.cs"; ct: "dc.ct"; cu: "dc.cu"; cv: "dc.cv"; cw: "dc.cw"; cx: "dc.cx"; cy: "dc.cy"; cz: "dc.cz"; da: "dc.da"; db: "dc.db"; dc: "dc.dc"; dd: "dc.dd"; de: "dc.de"; df: "dc.df"; dg: "dc.dg"; dh: "dc.dh"; di: "dc.di"; dj: "dc.dj"; dk: "dc.dk"; dl: "dc.dl"; dm: "dc.dm"; dn: "dc.dn"; do: "dc.do"; dp: "dc.dp"; dq: "dc.dq"; dr: "dc.dr"; ds: "dc.ds"; dt: "dc.dt"; du: "dc.du"; dv: "dc.dv"; dw: "dc.dw"; dx: "dc.dx"; dy: "dc.dy"; dz: "dc.dz"; ea: "dc.ea"; eb: "dc.eb"; ec: "dc.ec"; ed: "dc.ed"; ee: "dc.ee"; ef: "dc.ef"; eg: "dc.eg"; eh: "dc.eh"; ei: "dc.ei"; ej: "dc.ej"; ek: "dc.ek"; el: "dc.el"; em: "dc.em"; en: "dc.en"; eo: "dc.eo"; ep: "dc.ep"; eq: "dc.eq"; er: "dc.er"; es: "dc.es"; et: "dc.et"; eu: "dc.eu"; ev: "dc.ev"; ew: "dc.ew"; ex: "dc.ex"; ey: "dc.ey"; ez: "dc.ez"; fa: "dc.fa"; fb: "dc.fb"; fc: "dc.fc"; fd: "dc.fd"; fe: "dc.fe"; ff: "dc.ff"; fg: "dc.fg"; fh: "dc.fh"; fi: "dc.fi"; fj: "dc.fj"; fk: "dc.fk"; fl: "dc.fl"; fm: "dc.fm"; fn: "dc.fn"; fo: "dc.fo"; fp: "dc.fp"; fq: "dc.fq"; fr: "dc.fr"; fs: "dc.fs"; ft: "dc.ft"; fu: "dc.fu"; fv: "dc.fv"; fw: "dc.fw"; fx: "dc.fx"; fy: "dc.fy"; fz: "dc.fz"; ga: "dc.ga"; gb: "dc.gb"; gc: "dc.gc"; gd: "dc.gd"; ge: "dc.ge"; gf: "dc.gf"; gg: "dc.gg"; gh: "dc.gh"; gi: "dc.gi"; gj: "dc.gj"; gk: "dc.gk"; gl: "dc.gl"; gm: "dc.gm"; gn: "dc.gn"; go: "dc.go"; gp: "dc.gp"; gq: "dc.gq"; gr: "dc.gr"; gs: "dc.gs"; gt: "dc.gt"; gu: "dc.gu"; gv: "dc.gv"; gw: "dc.gw"; gx: "dc.gx"; gy: "dc.gy"; gz: "dc.gz"; ha: "dc.ha"; hb: "dc.hb"; hc: "dc.hc"; hd: "dc.hd"; he: "dc.he"; hf: "dc.hf"; hg: "dc.hg"; hh: "dc.hh"; hi: "dc.hi"; hj: "dc.hj"; hk: "dc.hk"; hl: "dc.hl"; hm: "dc.hm"; hn: "dc.hn"; ho: "dc.ho"; hp: "dc.hp"; hq: "dc.hq"; hr: "dc.hr"; hs: "dc.hs"; ht: "dc.ht"; hu: "dc.hu"; hv: "dc.hv"; hw: "dc.hw"; hx: "dc.hx"; hy: "dc.hy"; hz: "dc.hz"; ia: "dc.ia"; ib: "dc.ib"; ic: "dc.ic"; id: "dc.id"; ie: "dc.ie"; if: "dc.if"; ig: "dc.ig"; ih: "dc.ih"; ii: "dc.ii"; ij: "dc.ij"; ik: "dc.ik"; il: "dc.il"; im: "dc.im"; in: "dc.in"; io: "dc.io"; ip: "dc.ip"; iq: "dc.iq"; ir: "dc.ir"; is: "dc.is"; it: "dc.it"; iu: "dc.iu"; iv: "dc.iv"; iw: "dc.iw"; ix: "dc.ix"; iy: "dc.iy"; iz: "dc.iz"; ja: "dc.ja"; jb: "dc.jb"; jc: "dc.jc"; jd: "dc.jd"; je: "dc.je"; jf: "dc.jf"; jg: "dc.jg"; jh: "dc.jh"; ji: "dc.ji"; jj: "dc.jj"; jk: "dc.jk"; jl: "dc.jl"; jm: "dc.jm"; jn: "dc.jn"; jo: "dc.jo"; jp: "dc.jp"; jq: "dc.jq"; jr: "dc.jr"; js: "dc.js"; jt: "dc.jt"; ju: "dc.ju"; jv: "dc.jv"; jw: "dc.jw"; jx: "dc.jx"; jy: "dc.jy"; jz: "dc.jz"; ka: "dc.ka"; kb: "dc.kb"; kc: "dc.kc"; kd: "dc.kd"; ke: "dc.ke"; kf: "dc.kf"; kg: "dc.kg"; kh: "dc.kh"; ki: "dc.ki"; kj: "dc.kj"; kk: "dc.kk"; kl: "dc.kl"; km: "dc.km"; kn: "dc.kn"; ko: "dc.ko"; kp: "dc.kp"; kq: "dc.kq"; kr: "dc.kr"; ks: "dc.ks"; kt: "dc.kt"; ku: "dc.ku"; kv: "dc.kv"; kw: "dc.kw"; kx: "dc.kx"; ky: "dc.ky"; kz: "dc.kz"; la: "dc.la"; lb: "dc.lb"; lc: "dc.lc"; ld: "dc.ld"; le: "dc.le"; lf: "dc.lf"; lg: "dc.lg"; lh: "dc.lh"; li: "dc.li"; lj: "dc.lj"; lk: "dc.lk"; ll: "dc.ll"; lm: "dc.lm"; ln: "dc.ln"; lo: "dc.lo"; lp: "dc.lp"; lq: "dc.lq"; lr: "dc.lr"; ls: "dc.ls"; lt: "dc.lt"; lu: "dc.lu"; lv: "dc.lv"; lw: "dc.lw"; lx: "dc.lx"; ly: "dc.ly"; lz: "dc.lz"; ma: "dc.ma"; mb: "dc.mb"; mc: "dc.mc"; md: "dc.md"; me: "dc.me"; mf: "dc.mf"; mg: "dc.mg"; mh: "dc.mh"; mi: "dc.mi"; mj: "dc.mj"; mk: "dc.mk"; ml: "dc.ml"; mm: "dc.mm"; mn: "dc.mn"; mo: "dc.mo"; mp: "dc.mp"; mq: "dc.mq"; mr: "dc.mr"; ms: "dc.ms"; mt: "dc.mt"; mu: "dc.mu"; mv: "dc.mv"; mw: "dc.mw"; mx: "dc.mx"; my: "dc.my"; mz: "dc.mz"; na: "dc.na"; nb: "dc.nb"; nc: "dc.nc"; nd: "dc.nd"; ne: "dc.ne"; nf: "dc.nf"; ng: "dc.ng"; nh: "dc.nh"; ni: "dc.ni"; nj: "dc.nj"; nk: "dc.nk"; nl: "dc.nl"; nm: "dc.nm"; nn: "dc.nn"; no: "dc.no"; np: "dc.np"; nq: "dc.nq"; nr: "dc.nr"; ns: "dc.ns"; nt: "dc.nt"; nu: "dc.nu"; nv: "dc.nv"; nw: "dc.nw"; nx: "dc.nx"; ny: "dc.ny"; nz: "dc.nz"; oa: "dc.oa"; ob: "dc.ob"; oc: "dc.oc"; od: "dc.od"; oe: "dc.oe"; of: "dc.of"; og: "dc.og"; oh: "dc.oh"; oi: "dc.oi"; oj: "dc.oj"; ok: "dc.ok"; ol: "dc.ol"; om: "dc.om"; on: "dc.on"; oo: "dc.oo"; op: "dc.op"; oq: "dc.oq"; or: "dc.or"; os: "dc.os"; ot: "dc.ot"; ou: "dc.ou"; ov: "dc.ov"; ow: "dc.ow"; ox: "dc.ox"; oy: "dc.oy"; oz: "dc.oz"; pa: "dc.pa"; pb: "dc.pb"; pc: "dc.pc"; pd: "dc.pd"; pe: "dc.pe"; pf: "dc.pf"; pg: "dc.pg"; ph: "dc.ph"; pi: "dc.pi"; pj: "dc.pj"; pk: "dc.pk"; pl: "dc.pl"; pm: "dc.pm"; pn: "dc.pn"; po: "dc.po"; pp: "dc.pp"; pq: "dc.pq"; pr: "dc.pr"; ps: "dc.ps"; pt: "dc.pt"; pu: "dc.pu"; pv: "dc.pv"; pw: "dc.pw"; px: "dc.px"; py: "dc.py"; pz: "dc.pz"; qa: "dc.qa"; qb: "dc.qb"; qc: "dc.qc"; qd: "dc.qd"; qe: "dc.qe"; qf: "dc.qf"; qg: "dc.qg"; qh: "dc.qh"; qi: "dc.qi"; qj: "dc.qj"; qk: "dc.qk"; ql: "dc.ql"; qm: "dc.qm"; qn: "dc.qn"; qo: "dc.qo"; qp: "dc.qp"; qq: "dc.qq"; qr: "dc.qr"; qs: "dc.qs"; qt: "dc.qt"; qu: "dc.qu"; qv: "dc.qv"; qw: "dc.qw"; qx: "dc.qx"; qy: "dc.qy"; qz: "dc.qz"; ra: "dc.ra"; rb: "dc.rb"; rc: "dc.rc"; rd: "dc.rd"; re: "dc.re"; rf: "dc.rf"; rg: "dc.rg"; rh: "dc.rh"; ri: "dc.ri"; rj: "dc.rj"; rk: "dc.rk"; rl: "dc.rl"; rm: "dc.rm"; rn: "dc.rn"; ro: "dc.ro"; rp: "dc.rp"; rq: "dc.rq"; rr: "dc.rr"; rs: "dc.rs"; rt: "dc.rt"; ru: "dc.ru"; rv: "dc.rv"; rw: "dc.rw"; rx: "dc.rx"; ry: "dc.ry"; rz: "dc.rz"; sa: "dc.sa"; sb: "dc.sb"; sc: "dc.sc"; sd: "dc.sd"; se: "dc.se"; sf: "dc.sf"; sg: "dc.sg"; sh: "dc.sh"; si: "dc.si"; sj: "dc.sj"; sk: "dc.sk"; sl: "dc.sl"; sm: "dc.sm"; sn: "dc.sn"; so: "dc.so"; sp: "dc.sp"; sq: "dc.sq"; sr: "dc.sr"; ss: "dc.ss"; st: "dc.st"; su: "dc.su"; sv: "dc.sv"; sw: "dc.sw"; sx: "dc.sx"; sy: "dc.sy"; sz: "dc.sz"; ta: "dc.ta"; tb: "dc.tb"; tc: "dc.tc"; td: "dc.td"; te: "dc.te"; tf: "dc.tf"; tg: "dc.tg"; th: "dc.th"; ti: "dc.ti"; tj: "dc.tj"; tk: "dc.tk"; tl: "dc.tl"; tm: "dc.tm"; tn: "dc.tn"; to: "dc.to"; tp: "dc.tp"; tq: "dc.tq"; tr: "dc.tr"; ts: "dc.ts"; tt: "dc.tt"; tu: "dc.tu"; tv: "dc.tv"; tw: "dc.tw"; tx: "dc.tx"; ty: "dc.ty"; tz: "dc.tz"; ua: "dc.ua"; ub: "dc.ub"; uc: "dc.uc"; ud: "dc.ud"; ue: "dc.ue"; uf: "dc.uf"; ug: "dc.ug"; uh: "dc.uh"; ui: "dc.ui"; uj: "dc.uj"; uk: "dc.uk"; ul: "dc.ul"; um: "dc.um"; un: "dc.un"; uo: "dc.uo"; up: "dc.up"; uq: "dc.uq"; ur: "dc.ur"; us: "dc.us"; ut: "dc.ut"; uu: "dc.uu"; uv: "dc.uv"; uw: "dc.uw"; ux: "dc.ux"; uy: "dc.uy"; uz: "dc.uz"; va: "dc.va"; vb: "dc.vb"; vc: "dc.vc"; vd: "dc.vd"; ve: "dc.ve"; vf: "dc.vf"; vg: "dc.vg"; vh: "dc.vh"; vi: "dc.vi"; vj: "dc.vj"; vk: "dc.vk"; vl: "dc.vl"; vm: "dc.vm"; vn: "dc.vn"; vo: "dc.vo"; vp: "dc.vp"; vq: "dc.vq"; vr: "dc.vr"; vs: "dc.vs"; vt: "dc.vt"; vu: "dc.vu"; vv: "dc.vv"; vw: "dc.vw"; vx: "dc.vx"; vy: "dc.vy"; vz: "dc.vz"; wa: "dc.wa"; wb: "dc.wb"; wc: "dc.wc"; wd: "dc.wd"; we: "dc.we"; wf: "dc.wf"; wg: "dc.wg"; wh: "dc.wh"; wi: "dc.wi"; wj: "dc.wj"; wk: "dc.wk"; wl: "dc.wl"; wm: "dc.wm"; wn: "dc.wn"; wo: "dc.wo"; wp: "dc.wp"; wq: "dc.wq"; wr: "dc.wr"; ws: "dc.ws"; wt: "dc.wt"; wu: "dc.wu"; wv: "dc.wv"; ww: "dc.ww"; wx: "dc.wx"; wy: "dc.wy"; wz: "dc.wz"; xa: "dc.xa"; xb: "dc.xb"; xc: "dc.xc"; xd: "dc.xd"; xe: "dc.xe"; xf: "dc.xf"; xg: "dc.xg"; xh: "dc.xh"; xi: "dc.xi"; xj: "dc.xj"; xk: "dc.xk"; xl: "dc.xl"; xm: "dc.xm"; xn: "dc.xn"; xo: "dc.xo"; xp: "dc.xp"; xq: "dc.xq"; xr: "dc.xr"; xs: "dc.xs"; xt: "dc.xt"; xu: "dc.xu"; xv: "dc.xv"; xw: "dc.xw"; xx: "dc.xx"; xy: "dc.xy"; xz: "dc.xz"; ya: "dc.ya"; yb: "dc.yb"; yc: "dc.yc"; yd: "dc.yd"; ye: "dc.ye"; yf: "dc.yf"; yg: "dc.yg"; yh: "dc.yh"; yi: "dc.yi"; yj: "dc.yj"; yk: "dc.yk"; yl: "dc.yl"; ym: "dc.ym"; yn: "dc.yn"; yo: "dc.yo"; yp: "dc.yp"; yq: "dc.yq"; yr: "dc.yr"; ys: "dc.ys"; yt: "dc.yt"; yu: "dc.yu"; yv: "dc.yv"; yw: "dc.yw"; yx: "dc.yx"; yy: "dc.yy"; yz: "dc.yz"; za: "dc.za"; zb: "dc.zb"; zc: "dc.zc"; zd: "dc.zd"; ze: "dc.ze"; zf: "dc.zf"; zg: "dc.zg"; zh: "dc.zh"; zi: "dc.zi"; zj: "dc.zj"; zk: "dc.zk"; zl: "dc.zl"; zm: "dc.zm"; zn: "dc.zn"; zo: "dc.zo"; zp: "dc.zp"; zq: "dc.zq"; zr: "dc.zr"; zs: "dc.zs"; zt: "dc.zt"; zu: "dc.zu"; zv: "dc.zv"; zw: "dc.zw"; zx: "dc.zx"; zy: "dc.zy"; zz: "dc.zz"; }; dd: { aa: "dd.aa"; ab: "dd.ab"; ac: "dd.ac"; ad: "dd.ad"; ae: "dd.ae"; af: "dd.af"; ag: "dd.ag"; ah: "dd.ah"; ai: "dd.ai"; aj: "dd.aj"; ak: "dd.ak"; al: "dd.al"; am: "dd.am"; an: "dd.an"; ao: "dd.ao"; ap: "dd.ap"; aq: "dd.aq"; ar: "dd.ar"; as: "dd.as"; at: "dd.at"; au: "dd.au"; av: "dd.av"; aw: "dd.aw"; ax: "dd.ax"; ay: "dd.ay"; az: "dd.az"; ba: "dd.ba"; bb: "dd.bb"; bc: "dd.bc"; bd: "dd.bd"; be: "dd.be"; bf: "dd.bf"; bg: "dd.bg"; bh: "dd.bh"; bi: "dd.bi"; bj: "dd.bj"; bk: "dd.bk"; bl: "dd.bl"; bm: "dd.bm"; bn: "dd.bn"; bo: "dd.bo"; bp: "dd.bp"; bq: "dd.bq"; br: "dd.br"; bs: "dd.bs"; bt: "dd.bt"; bu: "dd.bu"; bv: "dd.bv"; bw: "dd.bw"; bx: "dd.bx"; by: "dd.by"; bz: "dd.bz"; ca: "dd.ca"; cb: "dd.cb"; cc: "dd.cc"; cd: "dd.cd"; ce: "dd.ce"; cf: "dd.cf"; cg: "dd.cg"; ch: "dd.ch"; ci: "dd.ci"; cj: "dd.cj"; ck: "dd.ck"; cl: "dd.cl"; cm: "dd.cm"; cn: "dd.cn"; co: "dd.co"; cp: "dd.cp"; cq: "dd.cq"; cr: "dd.cr"; cs: "dd.cs"; ct: "dd.ct"; cu: "dd.cu"; cv: "dd.cv"; cw: "dd.cw"; cx: "dd.cx"; cy: "dd.cy"; cz: "dd.cz"; da: "dd.da"; db: "dd.db"; dc: "dd.dc"; dd: "dd.dd"; de: "dd.de"; df: "dd.df"; dg: "dd.dg"; dh: "dd.dh"; di: "dd.di"; dj: "dd.dj"; dk: "dd.dk"; dl: "dd.dl"; dm: "dd.dm"; dn: "dd.dn"; do: "dd.do"; dp: "dd.dp"; dq: "dd.dq"; dr: "dd.dr"; ds: "dd.ds"; dt: "dd.dt"; du: "dd.du"; dv: "dd.dv"; dw: "dd.dw"; dx: "dd.dx"; dy: "dd.dy"; dz: "dd.dz"; ea: "dd.ea"; eb: "dd.eb"; ec: "dd.ec"; ed: "dd.ed"; ee: "dd.ee"; ef: "dd.ef"; eg: "dd.eg"; eh: "dd.eh"; ei: "dd.ei"; ej: "dd.ej"; ek: "dd.ek"; el: "dd.el"; em: "dd.em"; en: "dd.en"; eo: "dd.eo"; ep: "dd.ep"; eq: "dd.eq"; er: "dd.er"; es: "dd.es"; et: "dd.et"; eu: "dd.eu"; ev: "dd.ev"; ew: "dd.ew"; ex: "dd.ex"; ey: "dd.ey"; ez: "dd.ez"; fa: "dd.fa"; fb: "dd.fb"; fc: "dd.fc"; fd: "dd.fd"; fe: "dd.fe"; ff: "dd.ff"; fg: "dd.fg"; fh: "dd.fh"; fi: "dd.fi"; fj: "dd.fj"; fk: "dd.fk"; fl: "dd.fl"; fm: "dd.fm"; fn: "dd.fn"; fo: "dd.fo"; fp: "dd.fp"; fq: "dd.fq"; fr: "dd.fr"; fs: "dd.fs"; ft: "dd.ft"; fu: "dd.fu"; fv: "dd.fv"; fw: "dd.fw"; fx: "dd.fx"; fy: "dd.fy"; fz: "dd.fz"; ga: "dd.ga"; gb: "dd.gb"; gc: "dd.gc"; gd: "dd.gd"; ge: "dd.ge"; gf: "dd.gf"; gg: "dd.gg"; gh: "dd.gh"; gi: "dd.gi"; gj: "dd.gj"; gk: "dd.gk"; gl: "dd.gl"; gm: "dd.gm"; gn: "dd.gn"; go: "dd.go"; gp: "dd.gp"; gq: "dd.gq"; gr: "dd.gr"; gs: "dd.gs"; gt: "dd.gt"; gu: "dd.gu"; gv: "dd.gv"; gw: "dd.gw"; gx: "dd.gx"; gy: "dd.gy"; gz: "dd.gz"; ha: "dd.ha"; hb: "dd.hb"; hc: "dd.hc"; hd: "dd.hd"; he: "dd.he"; hf: "dd.hf"; hg: "dd.hg"; hh: "dd.hh"; hi: "dd.hi"; hj: "dd.hj"; hk: "dd.hk"; hl: "dd.hl"; hm: "dd.hm"; hn: "dd.hn"; ho: "dd.ho"; hp: "dd.hp"; hq: "dd.hq"; hr: "dd.hr"; hs: "dd.hs"; ht: "dd.ht"; hu: "dd.hu"; hv: "dd.hv"; hw: "dd.hw"; hx: "dd.hx"; hy: "dd.hy"; hz: "dd.hz"; ia: "dd.ia"; ib: "dd.ib"; ic: "dd.ic"; id: "dd.id"; ie: "dd.ie"; if: "dd.if"; ig: "dd.ig"; ih: "dd.ih"; ii: "dd.ii"; ij: "dd.ij"; ik: "dd.ik"; il: "dd.il"; im: "dd.im"; in: "dd.in"; io: "dd.io"; ip: "dd.ip"; iq: "dd.iq"; ir: "dd.ir"; is: "dd.is"; it: "dd.it"; iu: "dd.iu"; iv: "dd.iv"; iw: "dd.iw"; ix: "dd.ix"; iy: "dd.iy"; iz: "dd.iz"; ja: "dd.ja"; jb: "dd.jb"; jc: "dd.jc"; jd: "dd.jd"; je: "dd.je"; jf: "dd.jf"; jg: "dd.jg"; jh: "dd.jh"; ji: "dd.ji"; jj: "dd.jj"; jk: "dd.jk"; jl: "dd.jl"; jm: "dd.jm"; jn: "dd.jn"; jo: "dd.jo"; jp: "dd.jp"; jq: "dd.jq"; jr: "dd.jr"; js: "dd.js"; jt: "dd.jt"; ju: "dd.ju"; jv: "dd.jv"; jw: "dd.jw"; jx: "dd.jx"; jy: "dd.jy"; jz: "dd.jz"; ka: "dd.ka"; kb: "dd.kb"; kc: "dd.kc"; kd: "dd.kd"; ke: "dd.ke"; kf: "dd.kf"; kg: "dd.kg"; kh: "dd.kh"; ki: "dd.ki"; kj: "dd.kj"; kk: "dd.kk"; kl: "dd.kl"; km: "dd.km"; kn: "dd.kn"; ko: "dd.ko"; kp: "dd.kp"; kq: "dd.kq"; kr: "dd.kr"; ks: "dd.ks"; kt: "dd.kt"; ku: "dd.ku"; kv: "dd.kv"; kw: "dd.kw"; kx: "dd.kx"; ky: "dd.ky"; kz: "dd.kz"; la: "dd.la"; lb: "dd.lb"; lc: "dd.lc"; ld: "dd.ld"; le: "dd.le"; lf: "dd.lf"; lg: "dd.lg"; lh: "dd.lh"; li: "dd.li"; lj: "dd.lj"; lk: "dd.lk"; ll: "dd.ll"; lm: "dd.lm"; ln: "dd.ln"; lo: "dd.lo"; lp: "dd.lp"; lq: "dd.lq"; lr: "dd.lr"; ls: "dd.ls"; lt: "dd.lt"; lu: "dd.lu"; lv: "dd.lv"; lw: "dd.lw"; lx: "dd.lx"; ly: "dd.ly"; lz: "dd.lz"; ma: "dd.ma"; mb: "dd.mb"; mc: "dd.mc"; md: "dd.md"; me: "dd.me"; mf: "dd.mf"; mg: "dd.mg"; mh: "dd.mh"; mi: "dd.mi"; mj: "dd.mj"; mk: "dd.mk"; ml: "dd.ml"; mm: "dd.mm"; mn: "dd.mn"; mo: "dd.mo"; mp: "dd.mp"; mq: "dd.mq"; mr: "dd.mr"; ms: "dd.ms"; mt: "dd.mt"; mu: "dd.mu"; mv: "dd.mv"; mw: "dd.mw"; mx: "dd.mx"; my: "dd.my"; mz: "dd.mz"; na: "dd.na"; nb: "dd.nb"; nc: "dd.nc"; nd: "dd.nd"; ne: "dd.ne"; nf: "dd.nf"; ng: "dd.ng"; nh: "dd.nh"; ni: "dd.ni"; nj: "dd.nj"; nk: "dd.nk"; nl: "dd.nl"; nm: "dd.nm"; nn: "dd.nn"; no: "dd.no"; np: "dd.np"; nq: "dd.nq"; nr: "dd.nr"; ns: "dd.ns"; nt: "dd.nt"; nu: "dd.nu"; nv: "dd.nv"; nw: "dd.nw"; nx: "dd.nx"; ny: "dd.ny"; nz: "dd.nz"; oa: "dd.oa"; ob: "dd.ob"; oc: "dd.oc"; od: "dd.od"; oe: "dd.oe"; of: "dd.of"; og: "dd.og"; oh: "dd.oh"; oi: "dd.oi"; oj: "dd.oj"; ok: "dd.ok"; ol: "dd.ol"; om: "dd.om"; on: "dd.on"; oo: "dd.oo"; op: "dd.op"; oq: "dd.oq"; or: "dd.or"; os: "dd.os"; ot: "dd.ot"; ou: "dd.ou"; ov: "dd.ov"; ow: "dd.ow"; ox: "dd.ox"; oy: "dd.oy"; oz: "dd.oz"; pa: "dd.pa"; pb: "dd.pb"; pc: "dd.pc"; pd: "dd.pd"; pe: "dd.pe"; pf: "dd.pf"; pg: "dd.pg"; ph: "dd.ph"; pi: "dd.pi"; pj: "dd.pj"; pk: "dd.pk"; pl: "dd.pl"; pm: "dd.pm"; pn: "dd.pn"; po: "dd.po"; pp: "dd.pp"; pq: "dd.pq"; pr: "dd.pr"; ps: "dd.ps"; pt: "dd.pt"; pu: "dd.pu"; pv: "dd.pv"; pw: "dd.pw"; px: "dd.px"; py: "dd.py"; pz: "dd.pz"; qa: "dd.qa"; qb: "dd.qb"; qc: "dd.qc"; qd: "dd.qd"; qe: "dd.qe"; qf: "dd.qf"; qg: "dd.qg"; qh: "dd.qh"; qi: "dd.qi"; qj: "dd.qj"; qk: "dd.qk"; ql: "dd.ql"; qm: "dd.qm"; qn: "dd.qn"; qo: "dd.qo"; qp: "dd.qp"; qq: "dd.qq"; qr: "dd.qr"; qs: "dd.qs"; qt: "dd.qt"; qu: "dd.qu"; qv: "dd.qv"; qw: "dd.qw"; qx: "dd.qx"; qy: "dd.qy"; qz: "dd.qz"; ra: "dd.ra"; rb: "dd.rb"; rc: "dd.rc"; rd: "dd.rd"; re: "dd.re"; rf: "dd.rf"; rg: "dd.rg"; rh: "dd.rh"; ri: "dd.ri"; rj: "dd.rj"; rk: "dd.rk"; rl: "dd.rl"; rm: "dd.rm"; rn: "dd.rn"; ro: "dd.ro"; rp: "dd.rp"; rq: "dd.rq"; rr: "dd.rr"; rs: "dd.rs"; rt: "dd.rt"; ru: "dd.ru"; rv: "dd.rv"; rw: "dd.rw"; rx: "dd.rx"; ry: "dd.ry"; rz: "dd.rz"; sa: "dd.sa"; sb: "dd.sb"; sc: "dd.sc"; sd: "dd.sd"; se: "dd.se"; sf: "dd.sf"; sg: "dd.sg"; sh: "dd.sh"; si: "dd.si"; sj: "dd.sj"; sk: "dd.sk"; sl: "dd.sl"; sm: "dd.sm"; sn: "dd.sn"; so: "dd.so"; sp: "dd.sp"; sq: "dd.sq"; sr: "dd.sr"; ss: "dd.ss"; st: "dd.st"; su: "dd.su"; sv: "dd.sv"; sw: "dd.sw"; sx: "dd.sx"; sy: "dd.sy"; sz: "dd.sz"; ta: "dd.ta"; tb: "dd.tb"; tc: "dd.tc"; td: "dd.td"; te: "dd.te"; tf: "dd.tf"; tg: "dd.tg"; th: "dd.th"; ti: "dd.ti"; tj: "dd.tj"; tk: "dd.tk"; tl: "dd.tl"; tm: "dd.tm"; tn: "dd.tn"; to: "dd.to"; tp: "dd.tp"; tq: "dd.tq"; tr: "dd.tr"; ts: "dd.ts"; tt: "dd.tt"; tu: "dd.tu"; tv: "dd.tv"; tw: "dd.tw"; tx: "dd.tx"; ty: "dd.ty"; tz: "dd.tz"; ua: "dd.ua"; ub: "dd.ub"; uc: "dd.uc"; ud: "dd.ud"; ue: "dd.ue"; uf: "dd.uf"; ug: "dd.ug"; uh: "dd.uh"; ui: "dd.ui"; uj: "dd.uj"; uk: "dd.uk"; ul: "dd.ul"; um: "dd.um"; un: "dd.un"; uo: "dd.uo"; up: "dd.up"; uq: "dd.uq"; ur: "dd.ur"; us: "dd.us"; ut: "dd.ut"; uu: "dd.uu"; uv: "dd.uv"; uw: "dd.uw"; ux: "dd.ux"; uy: "dd.uy"; uz: "dd.uz"; va: "dd.va"; vb: "dd.vb"; vc: "dd.vc"; vd: "dd.vd"; ve: "dd.ve"; vf: "dd.vf"; vg: "dd.vg"; vh: "dd.vh"; vi: "dd.vi"; vj: "dd.vj"; vk: "dd.vk"; vl: "dd.vl"; vm: "dd.vm"; vn: "dd.vn"; vo: "dd.vo"; vp: "dd.vp"; vq: "dd.vq"; vr: "dd.vr"; vs: "dd.vs"; vt: "dd.vt"; vu: "dd.vu"; vv: "dd.vv"; vw: "dd.vw"; vx: "dd.vx"; vy: "dd.vy"; vz: "dd.vz"; wa: "dd.wa"; wb: "dd.wb"; wc: "dd.wc"; wd: "dd.wd"; we: "dd.we"; wf: "dd.wf"; wg: "dd.wg"; wh: "dd.wh"; wi: "dd.wi"; wj: "dd.wj"; wk: "dd.wk"; wl: "dd.wl"; wm: "dd.wm"; wn: "dd.wn"; wo: "dd.wo"; wp: "dd.wp"; wq: "dd.wq"; wr: "dd.wr"; ws: "dd.ws"; wt: "dd.wt"; wu: "dd.wu"; wv: "dd.wv"; ww: "dd.ww"; wx: "dd.wx"; wy: "dd.wy"; wz: "dd.wz"; xa: "dd.xa"; xb: "dd.xb"; xc: "dd.xc"; xd: "dd.xd"; xe: "dd.xe"; xf: "dd.xf"; xg: "dd.xg"; xh: "dd.xh"; xi: "dd.xi"; xj: "dd.xj"; xk: "dd.xk"; xl: "dd.xl"; xm: "dd.xm"; xn: "dd.xn"; xo: "dd.xo"; xp: "dd.xp"; xq: "dd.xq"; xr: "dd.xr"; xs: "dd.xs"; xt: "dd.xt"; xu: "dd.xu"; xv: "dd.xv"; xw: "dd.xw"; xx: "dd.xx"; xy: "dd.xy"; xz: "dd.xz"; ya: "dd.ya"; yb: "dd.yb"; yc: "dd.yc"; yd: "dd.yd"; ye: "dd.ye"; yf: "dd.yf"; yg: "dd.yg"; yh: "dd.yh"; yi: "dd.yi"; yj: "dd.yj"; yk: "dd.yk"; yl: "dd.yl"; ym: "dd.ym"; yn: "dd.yn"; yo: "dd.yo"; yp: "dd.yp"; yq: "dd.yq"; yr: "dd.yr"; ys: "dd.ys"; yt: "dd.yt"; yu: "dd.yu"; yv: "dd.yv"; yw: "dd.yw"; yx: "dd.yx"; yy: "dd.yy"; yz: "dd.yz"; za: "dd.za"; zb: "dd.zb"; zc: "dd.zc"; zd: "dd.zd"; ze: "dd.ze"; zf: "dd.zf"; zg: "dd.zg"; zh: "dd.zh"; zi: "dd.zi"; zj: "dd.zj"; zk: "dd.zk"; zl: "dd.zl"; zm: "dd.zm"; zn: "dd.zn"; zo: "dd.zo"; zp: "dd.zp"; zq: "dd.zq"; zr: "dd.zr"; zs: "dd.zs"; zt: "dd.zt"; zu: "dd.zu"; zv: "dd.zv"; zw: "dd.zw"; zx: "dd.zx"; zy: "dd.zy"; zz: "dd.zz"; }; de: { aa: "de.aa"; ab: "de.ab"; ac: "de.ac"; ad: "de.ad"; ae: "de.ae"; af: "de.af"; ag: "de.ag"; ah: "de.ah"; ai: "de.ai"; aj: "de.aj"; ak: "de.ak"; al: "de.al"; am: "de.am"; an: "de.an"; ao: "de.ao"; ap: "de.ap"; aq: "de.aq"; ar: "de.ar"; as: "de.as"; at: "de.at"; au: "de.au"; av: "de.av"; aw: "de.aw"; ax: "de.ax"; ay: "de.ay"; az: "de.az"; ba: "de.ba"; bb: "de.bb"; bc: "de.bc"; bd: "de.bd"; be: "de.be"; bf: "de.bf"; bg: "de.bg"; bh: "de.bh"; bi: "de.bi"; bj: "de.bj"; bk: "de.bk"; bl: "de.bl"; bm: "de.bm"; bn: "de.bn"; bo: "de.bo"; bp: "de.bp"; bq: "de.bq"; br: "de.br"; bs: "de.bs"; bt: "de.bt"; bu: "de.bu"; bv: "de.bv"; bw: "de.bw"; bx: "de.bx"; by: "de.by"; bz: "de.bz"; ca: "de.ca"; cb: "de.cb"; cc: "de.cc"; cd: "de.cd"; ce: "de.ce"; cf: "de.cf"; cg: "de.cg"; ch: "de.ch"; ci: "de.ci"; cj: "de.cj"; ck: "de.ck"; cl: "de.cl"; cm: "de.cm"; cn: "de.cn"; co: "de.co"; cp: "de.cp"; cq: "de.cq"; cr: "de.cr"; cs: "de.cs"; ct: "de.ct"; cu: "de.cu"; cv: "de.cv"; cw: "de.cw"; cx: "de.cx"; cy: "de.cy"; cz: "de.cz"; da: "de.da"; db: "de.db"; dc: "de.dc"; dd: "de.dd"; de: "de.de"; df: "de.df"; dg: "de.dg"; dh: "de.dh"; di: "de.di"; dj: "de.dj"; dk: "de.dk"; dl: "de.dl"; dm: "de.dm"; dn: "de.dn"; do: "de.do"; dp: "de.dp"; dq: "de.dq"; dr: "de.dr"; ds: "de.ds"; dt: "de.dt"; du: "de.du"; dv: "de.dv"; dw: "de.dw"; dx: "de.dx"; dy: "de.dy"; dz: "de.dz"; ea: "de.ea"; eb: "de.eb"; ec: "de.ec"; ed: "de.ed"; ee: "de.ee"; ef: "de.ef"; eg: "de.eg"; eh: "de.eh"; ei: "de.ei"; ej: "de.ej"; ek: "de.ek"; el: "de.el"; em: "de.em"; en: "de.en"; eo: "de.eo"; ep: "de.ep"; eq: "de.eq"; er: "de.er"; es: "de.es"; et: "de.et"; eu: "de.eu"; ev: "de.ev"; ew: "de.ew"; ex: "de.ex"; ey: "de.ey"; ez: "de.ez"; fa: "de.fa"; fb: "de.fb"; fc: "de.fc"; fd: "de.fd"; fe: "de.fe"; ff: "de.ff"; fg: "de.fg"; fh: "de.fh"; fi: "de.fi"; fj: "de.fj"; fk: "de.fk"; fl: "de.fl"; fm: "de.fm"; fn: "de.fn"; fo: "de.fo"; fp: "de.fp"; fq: "de.fq"; fr: "de.fr"; fs: "de.fs"; ft: "de.ft"; fu: "de.fu"; fv: "de.fv"; fw: "de.fw"; fx: "de.fx"; fy: "de.fy"; fz: "de.fz"; ga: "de.ga"; gb: "de.gb"; gc: "de.gc"; gd: "de.gd"; ge: "de.ge"; gf: "de.gf"; gg: "de.gg"; gh: "de.gh"; gi: "de.gi"; gj: "de.gj"; gk: "de.gk"; gl: "de.gl"; gm: "de.gm"; gn: "de.gn"; go: "de.go"; gp: "de.gp"; gq: "de.gq"; gr: "de.gr"; gs: "de.gs"; gt: "de.gt"; gu: "de.gu"; gv: "de.gv"; gw: "de.gw"; gx: "de.gx"; gy: "de.gy"; gz: "de.gz"; ha: "de.ha"; hb: "de.hb"; hc: "de.hc"; hd: "de.hd"; he: "de.he"; hf: "de.hf"; hg: "de.hg"; hh: "de.hh"; hi: "de.hi"; hj: "de.hj"; hk: "de.hk"; hl: "de.hl"; hm: "de.hm"; hn: "de.hn"; ho: "de.ho"; hp: "de.hp"; hq: "de.hq"; hr: "de.hr"; hs: "de.hs"; ht: "de.ht"; hu: "de.hu"; hv: "de.hv"; hw: "de.hw"; hx: "de.hx"; hy: "de.hy"; hz: "de.hz"; ia: "de.ia"; ib: "de.ib"; ic: "de.ic"; id: "de.id"; ie: "de.ie"; if: "de.if"; ig: "de.ig"; ih: "de.ih"; ii: "de.ii"; ij: "de.ij"; ik: "de.ik"; il: "de.il"; im: "de.im"; in: "de.in"; io: "de.io"; ip: "de.ip"; iq: "de.iq"; ir: "de.ir"; is: "de.is"; it: "de.it"; iu: "de.iu"; iv: "de.iv"; iw: "de.iw"; ix: "de.ix"; iy: "de.iy"; iz: "de.iz"; ja: "de.ja"; jb: "de.jb"; jc: "de.jc"; jd: "de.jd"; je: "de.je"; jf: "de.jf"; jg: "de.jg"; jh: "de.jh"; ji: "de.ji"; jj: "de.jj"; jk: "de.jk"; jl: "de.jl"; jm: "de.jm"; jn: "de.jn"; jo: "de.jo"; jp: "de.jp"; jq: "de.jq"; jr: "de.jr"; js: "de.js"; jt: "de.jt"; ju: "de.ju"; jv: "de.jv"; jw: "de.jw"; jx: "de.jx"; jy: "de.jy"; jz: "de.jz"; ka: "de.ka"; kb: "de.kb"; kc: "de.kc"; kd: "de.kd"; ke: "de.ke"; kf: "de.kf"; kg: "de.kg"; kh: "de.kh"; ki: "de.ki"; kj: "de.kj"; kk: "de.kk"; kl: "de.kl"; km: "de.km"; kn: "de.kn"; ko: "de.ko"; kp: "de.kp"; kq: "de.kq"; kr: "de.kr"; ks: "de.ks"; kt: "de.kt"; ku: "de.ku"; kv: "de.kv"; kw: "de.kw"; kx: "de.kx"; ky: "de.ky"; kz: "de.kz"; la: "de.la"; lb: "de.lb"; lc: "de.lc"; ld: "de.ld"; le: "de.le"; lf: "de.lf"; lg: "de.lg"; lh: "de.lh"; li: "de.li"; lj: "de.lj"; lk: "de.lk"; ll: "de.ll"; lm: "de.lm"; ln: "de.ln"; lo: "de.lo"; lp: "de.lp"; lq: "de.lq"; lr: "de.lr"; ls: "de.ls"; lt: "de.lt"; lu: "de.lu"; lv: "de.lv"; lw: "de.lw"; lx: "de.lx"; ly: "de.ly"; lz: "de.lz"; ma: "de.ma"; mb: "de.mb"; mc: "de.mc"; md: "de.md"; me: "de.me"; mf: "de.mf"; mg: "de.mg"; mh: "de.mh"; mi: "de.mi"; mj: "de.mj"; mk: "de.mk"; ml: "de.ml"; mm: "de.mm"; mn: "de.mn"; mo: "de.mo"; mp: "de.mp"; mq: "de.mq"; mr: "de.mr"; ms: "de.ms"; mt: "de.mt"; mu: "de.mu"; mv: "de.mv"; mw: "de.mw"; mx: "de.mx"; my: "de.my"; mz: "de.mz"; na: "de.na"; nb: "de.nb"; nc: "de.nc"; nd: "de.nd"; ne: "de.ne"; nf: "de.nf"; ng: "de.ng"; nh: "de.nh"; ni: "de.ni"; nj: "de.nj"; nk: "de.nk"; nl: "de.nl"; nm: "de.nm"; nn: "de.nn"; no: "de.no"; np: "de.np"; nq: "de.nq"; nr: "de.nr"; ns: "de.ns"; nt: "de.nt"; nu: "de.nu"; nv: "de.nv"; nw: "de.nw"; nx: "de.nx"; ny: "de.ny"; nz: "de.nz"; oa: "de.oa"; ob: "de.ob"; oc: "de.oc"; od: "de.od"; oe: "de.oe"; of: "de.of"; og: "de.og"; oh: "de.oh"; oi: "de.oi"; oj: "de.oj"; ok: "de.ok"; ol: "de.ol"; om: "de.om"; on: "de.on"; oo: "de.oo"; op: "de.op"; oq: "de.oq"; or: "de.or"; os: "de.os"; ot: "de.ot"; ou: "de.ou"; ov: "de.ov"; ow: "de.ow"; ox: "de.ox"; oy: "de.oy"; oz: "de.oz"; pa: "de.pa"; pb: "de.pb"; pc: "de.pc"; pd: "de.pd"; pe: "de.pe"; pf: "de.pf"; pg: "de.pg"; ph: "de.ph"; pi: "de.pi"; pj: "de.pj"; pk: "de.pk"; pl: "de.pl"; pm: "de.pm"; pn: "de.pn"; po: "de.po"; pp: "de.pp"; pq: "de.pq"; pr: "de.pr"; ps: "de.ps"; pt: "de.pt"; pu: "de.pu"; pv: "de.pv"; pw: "de.pw"; px: "de.px"; py: "de.py"; pz: "de.pz"; qa: "de.qa"; qb: "de.qb"; qc: "de.qc"; qd: "de.qd"; qe: "de.qe"; qf: "de.qf"; qg: "de.qg"; qh: "de.qh"; qi: "de.qi"; qj: "de.qj"; qk: "de.qk"; ql: "de.ql"; qm: "de.qm"; qn: "de.qn"; qo: "de.qo"; qp: "de.qp"; qq: "de.qq"; qr: "de.qr"; qs: "de.qs"; qt: "de.qt"; qu: "de.qu"; qv: "de.qv"; qw: "de.qw"; qx: "de.qx"; qy: "de.qy"; qz: "de.qz"; ra: "de.ra"; rb: "de.rb"; rc: "de.rc"; rd: "de.rd"; re: "de.re"; rf: "de.rf"; rg: "de.rg"; rh: "de.rh"; ri: "de.ri"; rj: "de.rj"; rk: "de.rk"; rl: "de.rl"; rm: "de.rm"; rn: "de.rn"; ro: "de.ro"; rp: "de.rp"; rq: "de.rq"; rr: "de.rr"; rs: "de.rs"; rt: "de.rt"; ru: "de.ru"; rv: "de.rv"; rw: "de.rw"; rx: "de.rx"; ry: "de.ry"; rz: "de.rz"; sa: "de.sa"; sb: "de.sb"; sc: "de.sc"; sd: "de.sd"; se: "de.se"; sf: "de.sf"; sg: "de.sg"; sh: "de.sh"; si: "de.si"; sj: "de.sj"; sk: "de.sk"; sl: "de.sl"; sm: "de.sm"; sn: "de.sn"; so: "de.so"; sp: "de.sp"; sq: "de.sq"; sr: "de.sr"; ss: "de.ss"; st: "de.st"; su: "de.su"; sv: "de.sv"; sw: "de.sw"; sx: "de.sx"; sy: "de.sy"; sz: "de.sz"; ta: "de.ta"; tb: "de.tb"; tc: "de.tc"; td: "de.td"; te: "de.te"; tf: "de.tf"; tg: "de.tg"; th: "de.th"; ti: "de.ti"; tj: "de.tj"; tk: "de.tk"; tl: "de.tl"; tm: "de.tm"; tn: "de.tn"; to: "de.to"; tp: "de.tp"; tq: "de.tq"; tr: "de.tr"; ts: "de.ts"; tt: "de.tt"; tu: "de.tu"; tv: "de.tv"; tw: "de.tw"; tx: "de.tx"; ty: "de.ty"; tz: "de.tz"; ua: "de.ua"; ub: "de.ub"; uc: "de.uc"; ud: "de.ud"; ue: "de.ue"; uf: "de.uf"; ug: "de.ug"; uh: "de.uh"; ui: "de.ui"; uj: "de.uj"; uk: "de.uk"; ul: "de.ul"; um: "de.um"; un: "de.un"; uo: "de.uo"; up: "de.up"; uq: "de.uq"; ur: "de.ur"; us: "de.us"; ut: "de.ut"; uu: "de.uu"; uv: "de.uv"; uw: "de.uw"; ux: "de.ux"; uy: "de.uy"; uz: "de.uz"; va: "de.va"; vb: "de.vb"; vc: "de.vc"; vd: "de.vd"; ve: "de.ve"; vf: "de.vf"; vg: "de.vg"; vh: "de.vh"; vi: "de.vi"; vj: "de.vj"; vk: "de.vk"; vl: "de.vl"; vm: "de.vm"; vn: "de.vn"; vo: "de.vo"; vp: "de.vp"; vq: "de.vq"; vr: "de.vr"; vs: "de.vs"; vt: "de.vt"; vu: "de.vu"; vv: "de.vv"; vw: "de.vw"; vx: "de.vx"; vy: "de.vy"; vz: "de.vz"; wa: "de.wa"; wb: "de.wb"; wc: "de.wc"; wd: "de.wd"; we: "de.we"; wf: "de.wf"; wg: "de.wg"; wh: "de.wh"; wi: "de.wi"; wj: "de.wj"; wk: "de.wk"; wl: "de.wl"; wm: "de.wm"; wn: "de.wn"; wo: "de.wo"; wp: "de.wp"; wq: "de.wq"; wr: "de.wr"; ws: "de.ws"; wt: "de.wt"; wu: "de.wu"; wv: "de.wv"; ww: "de.ww"; wx: "de.wx"; wy: "de.wy"; wz: "de.wz"; xa: "de.xa"; xb: "de.xb"; xc: "de.xc"; xd: "de.xd"; xe: "de.xe"; xf: "de.xf"; xg: "de.xg"; xh: "de.xh"; xi: "de.xi"; xj: "de.xj"; xk: "de.xk"; xl: "de.xl"; xm: "de.xm"; xn: "de.xn"; xo: "de.xo"; xp: "de.xp"; xq: "de.xq"; xr: "de.xr"; xs: "de.xs"; xt: "de.xt"; xu: "de.xu"; xv: "de.xv"; xw: "de.xw"; xx: "de.xx"; xy: "de.xy"; xz: "de.xz"; ya: "de.ya"; yb: "de.yb"; yc: "de.yc"; yd: "de.yd"; ye: "de.ye"; yf: "de.yf"; yg: "de.yg"; yh: "de.yh"; yi: "de.yi"; yj: "de.yj"; yk: "de.yk"; yl: "de.yl"; ym: "de.ym"; yn: "de.yn"; yo: "de.yo"; yp: "de.yp"; yq: "de.yq"; yr: "de.yr"; ys: "de.ys"; yt: "de.yt"; yu: "de.yu"; yv: "de.yv"; yw: "de.yw"; yx: "de.yx"; yy: "de.yy"; yz: "de.yz"; za: "de.za"; zb: "de.zb"; zc: "de.zc"; zd: "de.zd"; ze: "de.ze"; zf: "de.zf"; zg: "de.zg"; zh: "de.zh"; zi: "de.zi"; zj: "de.zj"; zk: "de.zk"; zl: "de.zl"; zm: "de.zm"; zn: "de.zn"; zo: "de.zo"; zp: "de.zp"; zq: "de.zq"; zr: "de.zr"; zs: "de.zs"; zt: "de.zt"; zu: "de.zu"; zv: "de.zv"; zw: "de.zw"; zx: "de.zx"; zy: "de.zy"; zz: "de.zz"; }; df: { aa: "df.aa"; ab: "df.ab"; ac: "df.ac"; ad: "df.ad"; ae: "df.ae"; af: "df.af"; ag: "df.ag"; ah: "df.ah"; ai: "df.ai"; aj: "df.aj"; ak: "df.ak"; al: "df.al"; am: "df.am"; an: "df.an"; ao: "df.ao"; ap: "df.ap"; aq: "df.aq"; ar: "df.ar"; as: "df.as"; at: "df.at"; au: "df.au"; av: "df.av"; aw: "df.aw"; ax: "df.ax"; ay: "df.ay"; az: "df.az"; ba: "df.ba"; bb: "df.bb"; bc: "df.bc"; bd: "df.bd"; be: "df.be"; bf: "df.bf"; bg: "df.bg"; bh: "df.bh"; bi: "df.bi"; bj: "df.bj"; bk: "df.bk"; bl: "df.bl"; bm: "df.bm"; bn: "df.bn"; bo: "df.bo"; bp: "df.bp"; bq: "df.bq"; br: "df.br"; bs: "df.bs"; bt: "df.bt"; bu: "df.bu"; bv: "df.bv"; bw: "df.bw"; bx: "df.bx"; by: "df.by"; bz: "df.bz"; ca: "df.ca"; cb: "df.cb"; cc: "df.cc"; cd: "df.cd"; ce: "df.ce"; cf: "df.cf"; cg: "df.cg"; ch: "df.ch"; ci: "df.ci"; cj: "df.cj"; ck: "df.ck"; cl: "df.cl"; cm: "df.cm"; cn: "df.cn"; co: "df.co"; cp: "df.cp"; cq: "df.cq"; cr: "df.cr"; cs: "df.cs"; ct: "df.ct"; cu: "df.cu"; cv: "df.cv"; cw: "df.cw"; cx: "df.cx"; cy: "df.cy"; cz: "df.cz"; da: "df.da"; db: "df.db"; dc: "df.dc"; dd: "df.dd"; de: "df.de"; df: "df.df"; dg: "df.dg"; dh: "df.dh"; di: "df.di"; dj: "df.dj"; dk: "df.dk"; dl: "df.dl"; dm: "df.dm"; dn: "df.dn"; do: "df.do"; dp: "df.dp"; dq: "df.dq"; dr: "df.dr"; ds: "df.ds"; dt: "df.dt"; du: "df.du"; dv: "df.dv"; dw: "df.dw"; dx: "df.dx"; dy: "df.dy"; dz: "df.dz"; ea: "df.ea"; eb: "df.eb"; ec: "df.ec"; ed: "df.ed"; ee: "df.ee"; ef: "df.ef"; eg: "df.eg"; eh: "df.eh"; ei: "df.ei"; ej: "df.ej"; ek: "df.ek"; el: "df.el"; em: "df.em"; en: "df.en"; eo: "df.eo"; ep: "df.ep"; eq: "df.eq"; er: "df.er"; es: "df.es"; et: "df.et"; eu: "df.eu"; ev: "df.ev"; ew: "df.ew"; ex: "df.ex"; ey: "df.ey"; ez: "df.ez"; fa: "df.fa"; fb: "df.fb"; fc: "df.fc"; fd: "df.fd"; fe: "df.fe"; ff: "df.ff"; fg: "df.fg"; fh: "df.fh"; fi: "df.fi"; fj: "df.fj"; fk: "df.fk"; fl: "df.fl"; fm: "df.fm"; fn: "df.fn"; fo: "df.fo"; fp: "df.fp"; fq: "df.fq"; fr: "df.fr"; fs: "df.fs"; ft: "df.ft"; fu: "df.fu"; fv: "df.fv"; fw: "df.fw"; fx: "df.fx"; fy: "df.fy"; fz: "df.fz"; ga: "df.ga"; gb: "df.gb"; gc: "df.gc"; gd: "df.gd"; ge: "df.ge"; gf: "df.gf"; gg: "df.gg"; gh: "df.gh"; gi: "df.gi"; gj: "df.gj"; gk: "df.gk"; gl: "df.gl"; gm: "df.gm"; gn: "df.gn"; go: "df.go"; gp: "df.gp"; gq: "df.gq"; gr: "df.gr"; gs: "df.gs"; gt: "df.gt"; gu: "df.gu"; gv: "df.gv"; gw: "df.gw"; gx: "df.gx"; gy: "df.gy"; gz: "df.gz"; ha: "df.ha"; hb: "df.hb"; hc: "df.hc"; hd: "df.hd"; he: "df.he"; hf: "df.hf"; hg: "df.hg"; hh: "df.hh"; hi: "df.hi"; hj: "df.hj"; hk: "df.hk"; hl: "df.hl"; hm: "df.hm"; hn: "df.hn"; ho: "df.ho"; hp: "df.hp"; hq: "df.hq"; hr: "df.hr"; hs: "df.hs"; ht: "df.ht"; hu: "df.hu"; hv: "df.hv"; hw: "df.hw"; hx: "df.hx"; hy: "df.hy"; hz: "df.hz"; ia: "df.ia"; ib: "df.ib"; ic: "df.ic"; id: "df.id"; ie: "df.ie"; if: "df.if"; ig: "df.ig"; ih: "df.ih"; ii: "df.ii"; ij: "df.ij"; ik: "df.ik"; il: "df.il"; im: "df.im"; in: "df.in"; io: "df.io"; ip: "df.ip"; iq: "df.iq"; ir: "df.ir"; is: "df.is"; it: "df.it"; iu: "df.iu"; iv: "df.iv"; iw: "df.iw"; ix: "df.ix"; iy: "df.iy"; iz: "df.iz"; ja: "df.ja"; jb: "df.jb"; jc: "df.jc"; jd: "df.jd"; je: "df.je"; jf: "df.jf"; jg: "df.jg"; jh: "df.jh"; ji: "df.ji"; jj: "df.jj"; jk: "df.jk"; jl: "df.jl"; jm: "df.jm"; jn: "df.jn"; jo: "df.jo"; jp: "df.jp"; jq: "df.jq"; jr: "df.jr"; js: "df.js"; jt: "df.jt"; ju: "df.ju"; jv: "df.jv"; jw: "df.jw"; jx: "df.jx"; jy: "df.jy"; jz: "df.jz"; ka: "df.ka"; kb: "df.kb"; kc: "df.kc"; kd: "df.kd"; ke: "df.ke"; kf: "df.kf"; kg: "df.kg"; kh: "df.kh"; ki: "df.ki"; kj: "df.kj"; kk: "df.kk"; kl: "df.kl"; km: "df.km"; kn: "df.kn"; ko: "df.ko"; kp: "df.kp"; kq: "df.kq"; kr: "df.kr"; ks: "df.ks"; kt: "df.kt"; ku: "df.ku"; kv: "df.kv"; kw: "df.kw"; kx: "df.kx"; ky: "df.ky"; kz: "df.kz"; la: "df.la"; lb: "df.lb"; lc: "df.lc"; ld: "df.ld"; le: "df.le"; lf: "df.lf"; lg: "df.lg"; lh: "df.lh"; li: "df.li"; lj: "df.lj"; lk: "df.lk"; ll: "df.ll"; lm: "df.lm"; ln: "df.ln"; lo: "df.lo"; lp: "df.lp"; lq: "df.lq"; lr: "df.lr"; ls: "df.ls"; lt: "df.lt"; lu: "df.lu"; lv: "df.lv"; lw: "df.lw"; lx: "df.lx"; ly: "df.ly"; lz: "df.lz"; ma: "df.ma"; mb: "df.mb"; mc: "df.mc"; md: "df.md"; me: "df.me"; mf: "df.mf"; mg: "df.mg"; mh: "df.mh"; mi: "df.mi"; mj: "df.mj"; mk: "df.mk"; ml: "df.ml"; mm: "df.mm"; mn: "df.mn"; mo: "df.mo"; mp: "df.mp"; mq: "df.mq"; mr: "df.mr"; ms: "df.ms"; mt: "df.mt"; mu: "df.mu"; mv: "df.mv"; mw: "df.mw"; mx: "df.mx"; my: "df.my"; mz: "df.mz"; na: "df.na"; nb: "df.nb"; nc: "df.nc"; nd: "df.nd"; ne: "df.ne"; nf: "df.nf"; ng: "df.ng"; nh: "df.nh"; ni: "df.ni"; nj: "df.nj"; nk: "df.nk"; nl: "df.nl"; nm: "df.nm"; nn: "df.nn"; no: "df.no"; np: "df.np"; nq: "df.nq"; nr: "df.nr"; ns: "df.ns"; nt: "df.nt"; nu: "df.nu"; nv: "df.nv"; nw: "df.nw"; nx: "df.nx"; ny: "df.ny"; nz: "df.nz"; oa: "df.oa"; ob: "df.ob"; oc: "df.oc"; od: "df.od"; oe: "df.oe"; of: "df.of"; og: "df.og"; oh: "df.oh"; oi: "df.oi"; oj: "df.oj"; ok: "df.ok"; ol: "df.ol"; om: "df.om"; on: "df.on"; oo: "df.oo"; op: "df.op"; oq: "df.oq"; or: "df.or"; os: "df.os"; ot: "df.ot"; ou: "df.ou"; ov: "df.ov"; ow: "df.ow"; ox: "df.ox"; oy: "df.oy"; oz: "df.oz"; pa: "df.pa"; pb: "df.pb"; pc: "df.pc"; pd: "df.pd"; pe: "df.pe"; pf: "df.pf"; pg: "df.pg"; ph: "df.ph"; pi: "df.pi"; pj: "df.pj"; pk: "df.pk"; pl: "df.pl"; pm: "df.pm"; pn: "df.pn"; po: "df.po"; pp: "df.pp"; pq: "df.pq"; pr: "df.pr"; ps: "df.ps"; pt: "df.pt"; pu: "df.pu"; pv: "df.pv"; pw: "df.pw"; px: "df.px"; py: "df.py"; pz: "df.pz"; qa: "df.qa"; qb: "df.qb"; qc: "df.qc"; qd: "df.qd"; qe: "df.qe"; qf: "df.qf"; qg: "df.qg"; qh: "df.qh"; qi: "df.qi"; qj: "df.qj"; qk: "df.qk"; ql: "df.ql"; qm: "df.qm"; qn: "df.qn"; qo: "df.qo"; qp: "df.qp"; qq: "df.qq"; qr: "df.qr"; qs: "df.qs"; qt: "df.qt"; qu: "df.qu"; qv: "df.qv"; qw: "df.qw"; qx: "df.qx"; qy: "df.qy"; qz: "df.qz"; ra: "df.ra"; rb: "df.rb"; rc: "df.rc"; rd: "df.rd"; re: "df.re"; rf: "df.rf"; rg: "df.rg"; rh: "df.rh"; ri: "df.ri"; rj: "df.rj"; rk: "df.rk"; rl: "df.rl"; rm: "df.rm"; rn: "df.rn"; ro: "df.ro"; rp: "df.rp"; rq: "df.rq"; rr: "df.rr"; rs: "df.rs"; rt: "df.rt"; ru: "df.ru"; rv: "df.rv"; rw: "df.rw"; rx: "df.rx"; ry: "df.ry"; rz: "df.rz"; sa: "df.sa"; sb: "df.sb"; sc: "df.sc"; sd: "df.sd"; se: "df.se"; sf: "df.sf"; sg: "df.sg"; sh: "df.sh"; si: "df.si"; sj: "df.sj"; sk: "df.sk"; sl: "df.sl"; sm: "df.sm"; sn: "df.sn"; so: "df.so"; sp: "df.sp"; sq: "df.sq"; sr: "df.sr"; ss: "df.ss"; st: "df.st"; su: "df.su"; sv: "df.sv"; sw: "df.sw"; sx: "df.sx"; sy: "df.sy"; sz: "df.sz"; ta: "df.ta"; tb: "df.tb"; tc: "df.tc"; td: "df.td"; te: "df.te"; tf: "df.tf"; tg: "df.tg"; th: "df.th"; ti: "df.ti"; tj: "df.tj"; tk: "df.tk"; tl: "df.tl"; tm: "df.tm"; tn: "df.tn"; to: "df.to"; tp: "df.tp"; tq: "df.tq"; tr: "df.tr"; ts: "df.ts"; tt: "df.tt"; tu: "df.tu"; tv: "df.tv"; tw: "df.tw"; tx: "df.tx"; ty: "df.ty"; tz: "df.tz"; ua: "df.ua"; ub: "df.ub"; uc: "df.uc"; ud: "df.ud"; ue: "df.ue"; uf: "df.uf"; ug: "df.ug"; uh: "df.uh"; ui: "df.ui"; uj: "df.uj"; uk: "df.uk"; ul: "df.ul"; um: "df.um"; un: "df.un"; uo: "df.uo"; up: "df.up"; uq: "df.uq"; ur: "df.ur"; us: "df.us"; ut: "df.ut"; uu: "df.uu"; uv: "df.uv"; uw: "df.uw"; ux: "df.ux"; uy: "df.uy"; uz: "df.uz"; va: "df.va"; vb: "df.vb"; vc: "df.vc"; vd: "df.vd"; ve: "df.ve"; vf: "df.vf"; vg: "df.vg"; vh: "df.vh"; vi: "df.vi"; vj: "df.vj"; vk: "df.vk"; vl: "df.vl"; vm: "df.vm"; vn: "df.vn"; vo: "df.vo"; vp: "df.vp"; vq: "df.vq"; vr: "df.vr"; vs: "df.vs"; vt: "df.vt"; vu: "df.vu"; vv: "df.vv"; vw: "df.vw"; vx: "df.vx"; vy: "df.vy"; vz: "df.vz"; wa: "df.wa"; wb: "df.wb"; wc: "df.wc"; wd: "df.wd"; we: "df.we"; wf: "df.wf"; wg: "df.wg"; wh: "df.wh"; wi: "df.wi"; wj: "df.wj"; wk: "df.wk"; wl: "df.wl"; wm: "df.wm"; wn: "df.wn"; wo: "df.wo"; wp: "df.wp"; wq: "df.wq"; wr: "df.wr"; ws: "df.ws"; wt: "df.wt"; wu: "df.wu"; wv: "df.wv"; ww: "df.ww"; wx: "df.wx"; wy: "df.wy"; wz: "df.wz"; xa: "df.xa"; xb: "df.xb"; xc: "df.xc"; xd: "df.xd"; xe: "df.xe"; xf: "df.xf"; xg: "df.xg"; xh: "df.xh"; xi: "df.xi"; xj: "df.xj"; xk: "df.xk"; xl: "df.xl"; xm: "df.xm"; xn: "df.xn"; xo: "df.xo"; xp: "df.xp"; xq: "df.xq"; xr: "df.xr"; xs: "df.xs"; xt: "df.xt"; xu: "df.xu"; xv: "df.xv"; xw: "df.xw"; xx: "df.xx"; xy: "df.xy"; xz: "df.xz"; ya: "df.ya"; yb: "df.yb"; yc: "df.yc"; yd: "df.yd"; ye: "df.ye"; yf: "df.yf"; yg: "df.yg"; yh: "df.yh"; yi: "df.yi"; yj: "df.yj"; yk: "df.yk"; yl: "df.yl"; ym: "df.ym"; yn: "df.yn"; yo: "df.yo"; yp: "df.yp"; yq: "df.yq"; yr: "df.yr"; ys: "df.ys"; yt: "df.yt"; yu: "df.yu"; yv: "df.yv"; yw: "df.yw"; yx: "df.yx"; yy: "df.yy"; yz: "df.yz"; za: "df.za"; zb: "df.zb"; zc: "df.zc"; zd: "df.zd"; ze: "df.ze"; zf: "df.zf"; zg: "df.zg"; zh: "df.zh"; zi: "df.zi"; zj: "df.zj"; zk: "df.zk"; zl: "df.zl"; zm: "df.zm"; zn: "df.zn"; zo: "df.zo"; zp: "df.zp"; zq: "df.zq"; zr: "df.zr"; zs: "df.zs"; zt: "df.zt"; zu: "df.zu"; zv: "df.zv"; zw: "df.zw"; zx: "df.zx"; zy: "df.zy"; zz: "df.zz"; }; dg: { aa: "dg.aa"; ab: "dg.ab"; ac: "dg.ac"; ad: "dg.ad"; ae: "dg.ae"; af: "dg.af"; ag: "dg.ag"; ah: "dg.ah"; ai: "dg.ai"; aj: "dg.aj"; ak: "dg.ak"; al: "dg.al"; am: "dg.am"; an: "dg.an"; ao: "dg.ao"; ap: "dg.ap"; aq: "dg.aq"; ar: "dg.ar"; as: "dg.as"; at: "dg.at"; au: "dg.au"; av: "dg.av"; aw: "dg.aw"; ax: "dg.ax"; ay: "dg.ay"; az: "dg.az"; ba: "dg.ba"; bb: "dg.bb"; bc: "dg.bc"; bd: "dg.bd"; be: "dg.be"; bf: "dg.bf"; bg: "dg.bg"; bh: "dg.bh"; bi: "dg.bi"; bj: "dg.bj"; bk: "dg.bk"; bl: "dg.bl"; bm: "dg.bm"; bn: "dg.bn"; bo: "dg.bo"; bp: "dg.bp"; bq: "dg.bq"; br: "dg.br"; bs: "dg.bs"; bt: "dg.bt"; bu: "dg.bu"; bv: "dg.bv"; bw: "dg.bw"; bx: "dg.bx"; by: "dg.by"; bz: "dg.bz"; ca: "dg.ca"; cb: "dg.cb"; cc: "dg.cc"; cd: "dg.cd"; ce: "dg.ce"; cf: "dg.cf"; cg: "dg.cg"; ch: "dg.ch"; ci: "dg.ci"; cj: "dg.cj"; ck: "dg.ck"; cl: "dg.cl"; cm: "dg.cm"; cn: "dg.cn"; co: "dg.co"; cp: "dg.cp"; cq: "dg.cq"; cr: "dg.cr"; cs: "dg.cs"; ct: "dg.ct"; cu: "dg.cu"; cv: "dg.cv"; cw: "dg.cw"; cx: "dg.cx"; cy: "dg.cy"; cz: "dg.cz"; da: "dg.da"; db: "dg.db"; dc: "dg.dc"; dd: "dg.dd"; de: "dg.de"; df: "dg.df"; dg: "dg.dg"; dh: "dg.dh"; di: "dg.di"; dj: "dg.dj"; dk: "dg.dk"; dl: "dg.dl"; dm: "dg.dm"; dn: "dg.dn"; do: "dg.do"; dp: "dg.dp"; dq: "dg.dq"; dr: "dg.dr"; ds: "dg.ds"; dt: "dg.dt"; du: "dg.du"; dv: "dg.dv"; dw: "dg.dw"; dx: "dg.dx"; dy: "dg.dy"; dz: "dg.dz"; ea: "dg.ea"; eb: "dg.eb"; ec: "dg.ec"; ed: "dg.ed"; ee: "dg.ee"; ef: "dg.ef"; eg: "dg.eg"; eh: "dg.eh"; ei: "dg.ei"; ej: "dg.ej"; ek: "dg.ek"; el: "dg.el"; em: "dg.em"; en: "dg.en"; eo: "dg.eo"; ep: "dg.ep"; eq: "dg.eq"; er: "dg.er"; es: "dg.es"; et: "dg.et"; eu: "dg.eu"; ev: "dg.ev"; ew: "dg.ew"; ex: "dg.ex"; ey: "dg.ey"; ez: "dg.ez"; fa: "dg.fa"; fb: "dg.fb"; fc: "dg.fc"; fd: "dg.fd"; fe: "dg.fe"; ff: "dg.ff"; fg: "dg.fg"; fh: "dg.fh"; fi: "dg.fi"; fj: "dg.fj"; fk: "dg.fk"; fl: "dg.fl"; fm: "dg.fm"; fn: "dg.fn"; fo: "dg.fo"; fp: "dg.fp"; fq: "dg.fq"; fr: "dg.fr"; fs: "dg.fs"; ft: "dg.ft"; fu: "dg.fu"; fv: "dg.fv"; fw: "dg.fw"; fx: "dg.fx"; fy: "dg.fy"; fz: "dg.fz"; ga: "dg.ga"; gb: "dg.gb"; gc: "dg.gc"; gd: "dg.gd"; ge: "dg.ge"; gf: "dg.gf"; gg: "dg.gg"; gh: "dg.gh"; gi: "dg.gi"; gj: "dg.gj"; gk: "dg.gk"; gl: "dg.gl"; gm: "dg.gm"; gn: "dg.gn"; go: "dg.go"; gp: "dg.gp"; gq: "dg.gq"; gr: "dg.gr"; gs: "dg.gs"; gt: "dg.gt"; gu: "dg.gu"; gv: "dg.gv"; gw: "dg.gw"; gx: "dg.gx"; gy: "dg.gy"; gz: "dg.gz"; ha: "dg.ha"; hb: "dg.hb"; hc: "dg.hc"; hd: "dg.hd"; he: "dg.he"; hf: "dg.hf"; hg: "dg.hg"; hh: "dg.hh"; hi: "dg.hi"; hj: "dg.hj"; hk: "dg.hk"; hl: "dg.hl"; hm: "dg.hm"; hn: "dg.hn"; ho: "dg.ho"; hp: "dg.hp"; hq: "dg.hq"; hr: "dg.hr"; hs: "dg.hs"; ht: "dg.ht"; hu: "dg.hu"; hv: "dg.hv"; hw: "dg.hw"; hx: "dg.hx"; hy: "dg.hy"; hz: "dg.hz"; ia: "dg.ia"; ib: "dg.ib"; ic: "dg.ic"; id: "dg.id"; ie: "dg.ie"; if: "dg.if"; ig: "dg.ig"; ih: "dg.ih"; ii: "dg.ii"; ij: "dg.ij"; ik: "dg.ik"; il: "dg.il"; im: "dg.im"; in: "dg.in"; io: "dg.io"; ip: "dg.ip"; iq: "dg.iq"; ir: "dg.ir"; is: "dg.is"; it: "dg.it"; iu: "dg.iu"; iv: "dg.iv"; iw: "dg.iw"; ix: "dg.ix"; iy: "dg.iy"; iz: "dg.iz"; ja: "dg.ja"; jb: "dg.jb"; jc: "dg.jc"; jd: "dg.jd"; je: "dg.je"; jf: "dg.jf"; jg: "dg.jg"; jh: "dg.jh"; ji: "dg.ji"; jj: "dg.jj"; jk: "dg.jk"; jl: "dg.jl"; jm: "dg.jm"; jn: "dg.jn"; jo: "dg.jo"; jp: "dg.jp"; jq: "dg.jq"; jr: "dg.jr"; js: "dg.js"; jt: "dg.jt"; ju: "dg.ju"; jv: "dg.jv"; jw: "dg.jw"; jx: "dg.jx"; jy: "dg.jy"; jz: "dg.jz"; ka: "dg.ka"; kb: "dg.kb"; kc: "dg.kc"; kd: "dg.kd"; ke: "dg.ke"; kf: "dg.kf"; kg: "dg.kg"; kh: "dg.kh"; ki: "dg.ki"; kj: "dg.kj"; kk: "dg.kk"; kl: "dg.kl"; km: "dg.km"; kn: "dg.kn"; ko: "dg.ko"; kp: "dg.kp"; kq: "dg.kq"; kr: "dg.kr"; ks: "dg.ks"; kt: "dg.kt"; ku: "dg.ku"; kv: "dg.kv"; kw: "dg.kw"; kx: "dg.kx"; ky: "dg.ky"; kz: "dg.kz"; la: "dg.la"; lb: "dg.lb"; lc: "dg.lc"; ld: "dg.ld"; le: "dg.le"; lf: "dg.lf"; lg: "dg.lg"; lh: "dg.lh"; li: "dg.li"; lj: "dg.lj"; lk: "dg.lk"; ll: "dg.ll"; lm: "dg.lm"; ln: "dg.ln"; lo: "dg.lo"; lp: "dg.lp"; lq: "dg.lq"; lr: "dg.lr"; ls: "dg.ls"; lt: "dg.lt"; lu: "dg.lu"; lv: "dg.lv"; lw: "dg.lw"; lx: "dg.lx"; ly: "dg.ly"; lz: "dg.lz"; ma: "dg.ma"; mb: "dg.mb"; mc: "dg.mc"; md: "dg.md"; me: "dg.me"; mf: "dg.mf"; mg: "dg.mg"; mh: "dg.mh"; mi: "dg.mi"; mj: "dg.mj"; mk: "dg.mk"; ml: "dg.ml"; mm: "dg.mm"; mn: "dg.mn"; mo: "dg.mo"; mp: "dg.mp"; mq: "dg.mq"; mr: "dg.mr"; ms: "dg.ms"; mt: "dg.mt"; mu: "dg.mu"; mv: "dg.mv"; mw: "dg.mw"; mx: "dg.mx"; my: "dg.my"; mz: "dg.mz"; na: "dg.na"; nb: "dg.nb"; nc: "dg.nc"; nd: "dg.nd"; ne: "dg.ne"; nf: "dg.nf"; ng: "dg.ng"; nh: "dg.nh"; ni: "dg.ni"; nj: "dg.nj"; nk: "dg.nk"; nl: "dg.nl"; nm: "dg.nm"; nn: "dg.nn"; no: "dg.no"; np: "dg.np"; nq: "dg.nq"; nr: "dg.nr"; ns: "dg.ns"; nt: "dg.nt"; nu: "dg.nu"; nv: "dg.nv"; nw: "dg.nw"; nx: "dg.nx"; ny: "dg.ny"; nz: "dg.nz"; oa: "dg.oa"; ob: "dg.ob"; oc: "dg.oc"; od: "dg.od"; oe: "dg.oe"; of: "dg.of"; og: "dg.og"; oh: "dg.oh"; oi: "dg.oi"; oj: "dg.oj"; ok: "dg.ok"; ol: "dg.ol"; om: "dg.om"; on: "dg.on"; oo: "dg.oo"; op: "dg.op"; oq: "dg.oq"; or: "dg.or"; os: "dg.os"; ot: "dg.ot"; ou: "dg.ou"; ov: "dg.ov"; ow: "dg.ow"; ox: "dg.ox"; oy: "dg.oy"; oz: "dg.oz"; pa: "dg.pa"; pb: "dg.pb"; pc: "dg.pc"; pd: "dg.pd"; pe: "dg.pe"; pf: "dg.pf"; pg: "dg.pg"; ph: "dg.ph"; pi: "dg.pi"; pj: "dg.pj"; pk: "dg.pk"; pl: "dg.pl"; pm: "dg.pm"; pn: "dg.pn"; po: "dg.po"; pp: "dg.pp"; pq: "dg.pq"; pr: "dg.pr"; ps: "dg.ps"; pt: "dg.pt"; pu: "dg.pu"; pv: "dg.pv"; pw: "dg.pw"; px: "dg.px"; py: "dg.py"; pz: "dg.pz"; qa: "dg.qa"; qb: "dg.qb"; qc: "dg.qc"; qd: "dg.qd"; qe: "dg.qe"; qf: "dg.qf"; qg: "dg.qg"; qh: "dg.qh"; qi: "dg.qi"; qj: "dg.qj"; qk: "dg.qk"; ql: "dg.ql"; qm: "dg.qm"; qn: "dg.qn"; qo: "dg.qo"; qp: "dg.qp"; qq: "dg.qq"; qr: "dg.qr"; qs: "dg.qs"; qt: "dg.qt"; qu: "dg.qu"; qv: "dg.qv"; qw: "dg.qw"; qx: "dg.qx"; qy: "dg.qy"; qz: "dg.qz"; ra: "dg.ra"; rb: "dg.rb"; rc: "dg.rc"; rd: "dg.rd"; re: "dg.re"; rf: "dg.rf"; rg: "dg.rg"; rh: "dg.rh"; ri: "dg.ri"; rj: "dg.rj"; rk: "dg.rk"; rl: "dg.rl"; rm: "dg.rm"; rn: "dg.rn"; ro: "dg.ro"; rp: "dg.rp"; rq: "dg.rq"; rr: "dg.rr"; rs: "dg.rs"; rt: "dg.rt"; ru: "dg.ru"; rv: "dg.rv"; rw: "dg.rw"; rx: "dg.rx"; ry: "dg.ry"; rz: "dg.rz"; sa: "dg.sa"; sb: "dg.sb"; sc: "dg.sc"; sd: "dg.sd"; se: "dg.se"; sf: "dg.sf"; sg: "dg.sg"; sh: "dg.sh"; si: "dg.si"; sj: "dg.sj"; sk: "dg.sk"; sl: "dg.sl"; sm: "dg.sm"; sn: "dg.sn"; so: "dg.so"; sp: "dg.sp"; sq: "dg.sq"; sr: "dg.sr"; ss: "dg.ss"; st: "dg.st"; su: "dg.su"; sv: "dg.sv"; sw: "dg.sw"; sx: "dg.sx"; sy: "dg.sy"; sz: "dg.sz"; ta: "dg.ta"; tb: "dg.tb"; tc: "dg.tc"; td: "dg.td"; te: "dg.te"; tf: "dg.tf"; tg: "dg.tg"; th: "dg.th"; ti: "dg.ti"; tj: "dg.tj"; tk: "dg.tk"; tl: "dg.tl"; tm: "dg.tm"; tn: "dg.tn"; to: "dg.to"; tp: "dg.tp"; tq: "dg.tq"; tr: "dg.tr"; ts: "dg.ts"; tt: "dg.tt"; tu: "dg.tu"; tv: "dg.tv"; tw: "dg.tw"; tx: "dg.tx"; ty: "dg.ty"; tz: "dg.tz"; ua: "dg.ua"; ub: "dg.ub"; uc: "dg.uc"; ud: "dg.ud"; ue: "dg.ue"; uf: "dg.uf"; ug: "dg.ug"; uh: "dg.uh"; ui: "dg.ui"; uj: "dg.uj"; uk: "dg.uk"; ul: "dg.ul"; um: "dg.um"; un: "dg.un"; uo: "dg.uo"; up: "dg.up"; uq: "dg.uq"; ur: "dg.ur"; us: "dg.us"; ut: "dg.ut"; uu: "dg.uu"; uv: "dg.uv"; uw: "dg.uw"; ux: "dg.ux"; uy: "dg.uy"; uz: "dg.uz"; va: "dg.va"; vb: "dg.vb"; vc: "dg.vc"; vd: "dg.vd"; ve: "dg.ve"; vf: "dg.vf"; vg: "dg.vg"; vh: "dg.vh"; vi: "dg.vi"; vj: "dg.vj"; vk: "dg.vk"; vl: "dg.vl"; vm: "dg.vm"; vn: "dg.vn"; vo: "dg.vo"; vp: "dg.vp"; vq: "dg.vq"; vr: "dg.vr"; vs: "dg.vs"; vt: "dg.vt"; vu: "dg.vu"; vv: "dg.vv"; vw: "dg.vw"; vx: "dg.vx"; vy: "dg.vy"; vz: "dg.vz"; wa: "dg.wa"; wb: "dg.wb"; wc: "dg.wc"; wd: "dg.wd"; we: "dg.we"; wf: "dg.wf"; wg: "dg.wg"; wh: "dg.wh"; wi: "dg.wi"; wj: "dg.wj"; wk: "dg.wk"; wl: "dg.wl"; wm: "dg.wm"; wn: "dg.wn"; wo: "dg.wo"; wp: "dg.wp"; wq: "dg.wq"; wr: "dg.wr"; ws: "dg.ws"; wt: "dg.wt"; wu: "dg.wu"; wv: "dg.wv"; ww: "dg.ww"; wx: "dg.wx"; wy: "dg.wy"; wz: "dg.wz"; xa: "dg.xa"; xb: "dg.xb"; xc: "dg.xc"; xd: "dg.xd"; xe: "dg.xe"; xf: "dg.xf"; xg: "dg.xg"; xh: "dg.xh"; xi: "dg.xi"; xj: "dg.xj"; xk: "dg.xk"; xl: "dg.xl"; xm: "dg.xm"; xn: "dg.xn"; xo: "dg.xo"; xp: "dg.xp"; xq: "dg.xq"; xr: "dg.xr"; xs: "dg.xs"; xt: "dg.xt"; xu: "dg.xu"; xv: "dg.xv"; xw: "dg.xw"; xx: "dg.xx"; xy: "dg.xy"; xz: "dg.xz"; ya: "dg.ya"; yb: "dg.yb"; yc: "dg.yc"; yd: "dg.yd"; ye: "dg.ye"; yf: "dg.yf"; yg: "dg.yg"; yh: "dg.yh"; yi: "dg.yi"; yj: "dg.yj"; yk: "dg.yk"; yl: "dg.yl"; ym: "dg.ym"; yn: "dg.yn"; yo: "dg.yo"; yp: "dg.yp"; yq: "dg.yq"; yr: "dg.yr"; ys: "dg.ys"; yt: "dg.yt"; yu: "dg.yu"; yv: "dg.yv"; yw: "dg.yw"; yx: "dg.yx"; yy: "dg.yy"; yz: "dg.yz"; za: "dg.za"; zb: "dg.zb"; zc: "dg.zc"; zd: "dg.zd"; ze: "dg.ze"; zf: "dg.zf"; zg: "dg.zg"; zh: "dg.zh"; zi: "dg.zi"; zj: "dg.zj"; zk: "dg.zk"; zl: "dg.zl"; zm: "dg.zm"; zn: "dg.zn"; zo: "dg.zo"; zp: "dg.zp"; zq: "dg.zq"; zr: "dg.zr"; zs: "dg.zs"; zt: "dg.zt"; zu: "dg.zu"; zv: "dg.zv"; zw: "dg.zw"; zx: "dg.zx"; zy: "dg.zy"; zz: "dg.zz"; }; dh: { aa: "dh.aa"; ab: "dh.ab"; ac: "dh.ac"; ad: "dh.ad"; ae: "dh.ae"; af: "dh.af"; ag: "dh.ag"; ah: "dh.ah"; ai: "dh.ai"; aj: "dh.aj"; ak: "dh.ak"; al: "dh.al"; am: "dh.am"; an: "dh.an"; ao: "dh.ao"; ap: "dh.ap"; aq: "dh.aq"; ar: "dh.ar"; as: "dh.as"; at: "dh.at"; au: "dh.au"; av: "dh.av"; aw: "dh.aw"; ax: "dh.ax"; ay: "dh.ay"; az: "dh.az"; ba: "dh.ba"; bb: "dh.bb"; bc: "dh.bc"; bd: "dh.bd"; be: "dh.be"; bf: "dh.bf"; bg: "dh.bg"; bh: "dh.bh"; bi: "dh.bi"; bj: "dh.bj"; bk: "dh.bk"; bl: "dh.bl"; bm: "dh.bm"; bn: "dh.bn"; bo: "dh.bo"; bp: "dh.bp"; bq: "dh.bq"; br: "dh.br"; bs: "dh.bs"; bt: "dh.bt"; bu: "dh.bu"; bv: "dh.bv"; bw: "dh.bw"; bx: "dh.bx"; by: "dh.by"; bz: "dh.bz"; ca: "dh.ca"; cb: "dh.cb"; cc: "dh.cc"; cd: "dh.cd"; ce: "dh.ce"; cf: "dh.cf"; cg: "dh.cg"; ch: "dh.ch"; ci: "dh.ci"; cj: "dh.cj"; ck: "dh.ck"; cl: "dh.cl"; cm: "dh.cm"; cn: "dh.cn"; co: "dh.co"; cp: "dh.cp"; cq: "dh.cq"; cr: "dh.cr"; cs: "dh.cs"; ct: "dh.ct"; cu: "dh.cu"; cv: "dh.cv"; cw: "dh.cw"; cx: "dh.cx"; cy: "dh.cy"; cz: "dh.cz"; da: "dh.da"; db: "dh.db"; dc: "dh.dc"; dd: "dh.dd"; de: "dh.de"; df: "dh.df"; dg: "dh.dg"; dh: "dh.dh"; di: "dh.di"; dj: "dh.dj"; dk: "dh.dk"; dl: "dh.dl"; dm: "dh.dm"; dn: "dh.dn"; do: "dh.do"; dp: "dh.dp"; dq: "dh.dq"; dr: "dh.dr"; ds: "dh.ds"; dt: "dh.dt"; du: "dh.du"; dv: "dh.dv"; dw: "dh.dw"; dx: "dh.dx"; dy: "dh.dy"; dz: "dh.dz"; ea: "dh.ea"; eb: "dh.eb"; ec: "dh.ec"; ed: "dh.ed"; ee: "dh.ee"; ef: "dh.ef"; eg: "dh.eg"; eh: "dh.eh"; ei: "dh.ei"; ej: "dh.ej"; ek: "dh.ek"; el: "dh.el"; em: "dh.em"; en: "dh.en"; eo: "dh.eo"; ep: "dh.ep"; eq: "dh.eq"; er: "dh.er"; es: "dh.es"; et: "dh.et"; eu: "dh.eu"; ev: "dh.ev"; ew: "dh.ew"; ex: "dh.ex"; ey: "dh.ey"; ez: "dh.ez"; fa: "dh.fa"; fb: "dh.fb"; fc: "dh.fc"; fd: "dh.fd"; fe: "dh.fe"; ff: "dh.ff"; fg: "dh.fg"; fh: "dh.fh"; fi: "dh.fi"; fj: "dh.fj"; fk: "dh.fk"; fl: "dh.fl"; fm: "dh.fm"; fn: "dh.fn"; fo: "dh.fo"; fp: "dh.fp"; fq: "dh.fq"; fr: "dh.fr"; fs: "dh.fs"; ft: "dh.ft"; fu: "dh.fu"; fv: "dh.fv"; fw: "dh.fw"; fx: "dh.fx"; fy: "dh.fy"; fz: "dh.fz"; ga: "dh.ga"; gb: "dh.gb"; gc: "dh.gc"; gd: "dh.gd"; ge: "dh.ge"; gf: "dh.gf"; gg: "dh.gg"; gh: "dh.gh"; gi: "dh.gi"; gj: "dh.gj"; gk: "dh.gk"; gl: "dh.gl"; gm: "dh.gm"; gn: "dh.gn"; go: "dh.go"; gp: "dh.gp"; gq: "dh.gq"; gr: "dh.gr"; gs: "dh.gs"; gt: "dh.gt"; gu: "dh.gu"; gv: "dh.gv"; gw: "dh.gw"; gx: "dh.gx"; gy: "dh.gy"; gz: "dh.gz"; ha: "dh.ha"; hb: "dh.hb"; hc: "dh.hc"; hd: "dh.hd"; he: "dh.he"; hf: "dh.hf"; hg: "dh.hg"; hh: "dh.hh"; hi: "dh.hi"; hj: "dh.hj"; hk: "dh.hk"; hl: "dh.hl"; hm: "dh.hm"; hn: "dh.hn"; ho: "dh.ho"; hp: "dh.hp"; hq: "dh.hq"; hr: "dh.hr"; hs: "dh.hs"; ht: "dh.ht"; hu: "dh.hu"; hv: "dh.hv"; hw: "dh.hw"; hx: "dh.hx"; hy: "dh.hy"; hz: "dh.hz"; ia: "dh.ia"; ib: "dh.ib"; ic: "dh.ic"; id: "dh.id"; ie: "dh.ie"; if: "dh.if"; ig: "dh.ig"; ih: "dh.ih"; ii: "dh.ii"; ij: "dh.ij"; ik: "dh.ik"; il: "dh.il"; im: "dh.im"; in: "dh.in"; io: "dh.io"; ip: "dh.ip"; iq: "dh.iq"; ir: "dh.ir"; is: "dh.is"; it: "dh.it"; iu: "dh.iu"; iv: "dh.iv"; iw: "dh.iw"; ix: "dh.ix"; iy: "dh.iy"; iz: "dh.iz"; ja: "dh.ja"; jb: "dh.jb"; jc: "dh.jc"; jd: "dh.jd"; je: "dh.je"; jf: "dh.jf"; jg: "dh.jg"; jh: "dh.jh"; ji: "dh.ji"; jj: "dh.jj"; jk: "dh.jk"; jl: "dh.jl"; jm: "dh.jm"; jn: "dh.jn"; jo: "dh.jo"; jp: "dh.jp"; jq: "dh.jq"; jr: "dh.jr"; js: "dh.js"; jt: "dh.jt"; ju: "dh.ju"; jv: "dh.jv"; jw: "dh.jw"; jx: "dh.jx"; jy: "dh.jy"; jz: "dh.jz"; ka: "dh.ka"; kb: "dh.kb"; kc: "dh.kc"; kd: "dh.kd"; ke: "dh.ke"; kf: "dh.kf"; kg: "dh.kg"; kh: "dh.kh"; ki: "dh.ki"; kj: "dh.kj"; kk: "dh.kk"; kl: "dh.kl"; km: "dh.km"; kn: "dh.kn"; ko: "dh.ko"; kp: "dh.kp"; kq: "dh.kq"; kr: "dh.kr"; ks: "dh.ks"; kt: "dh.kt"; ku: "dh.ku"; kv: "dh.kv"; kw: "dh.kw"; kx: "dh.kx"; ky: "dh.ky"; kz: "dh.kz"; la: "dh.la"; lb: "dh.lb"; lc: "dh.lc"; ld: "dh.ld"; le: "dh.le"; lf: "dh.lf"; lg: "dh.lg"; lh: "dh.lh"; li: "dh.li"; lj: "dh.lj"; lk: "dh.lk"; ll: "dh.ll"; lm: "dh.lm"; ln: "dh.ln"; lo: "dh.lo"; lp: "dh.lp"; lq: "dh.lq"; lr: "dh.lr"; ls: "dh.ls"; lt: "dh.lt"; lu: "dh.lu"; lv: "dh.lv"; lw: "dh.lw"; lx: "dh.lx"; ly: "dh.ly"; lz: "dh.lz"; ma: "dh.ma"; mb: "dh.mb"; mc: "dh.mc"; md: "dh.md"; me: "dh.me"; mf: "dh.mf"; mg: "dh.mg"; mh: "dh.mh"; mi: "dh.mi"; mj: "dh.mj"; mk: "dh.mk"; ml: "dh.ml"; mm: "dh.mm"; mn: "dh.mn"; mo: "dh.mo"; mp: "dh.mp"; mq: "dh.mq"; mr: "dh.mr"; ms: "dh.ms"; mt: "dh.mt"; mu: "dh.mu"; mv: "dh.mv"; mw: "dh.mw"; mx: "dh.mx"; my: "dh.my"; mz: "dh.mz"; na: "dh.na"; nb: "dh.nb"; nc: "dh.nc"; nd: "dh.nd"; ne: "dh.ne"; nf: "dh.nf"; ng: "dh.ng"; nh: "dh.nh"; ni: "dh.ni"; nj: "dh.nj"; nk: "dh.nk"; nl: "dh.nl"; nm: "dh.nm"; nn: "dh.nn"; no: "dh.no"; np: "dh.np"; nq: "dh.nq"; nr: "dh.nr"; ns: "dh.ns"; nt: "dh.nt"; nu: "dh.nu"; nv: "dh.nv"; nw: "dh.nw"; nx: "dh.nx"; ny: "dh.ny"; nz: "dh.nz"; oa: "dh.oa"; ob: "dh.ob"; oc: "dh.oc"; od: "dh.od"; oe: "dh.oe"; of: "dh.of"; og: "dh.og"; oh: "dh.oh"; oi: "dh.oi"; oj: "dh.oj"; ok: "dh.ok"; ol: "dh.ol"; om: "dh.om"; on: "dh.on"; oo: "dh.oo"; op: "dh.op"; oq: "dh.oq"; or: "dh.or"; os: "dh.os"; ot: "dh.ot"; ou: "dh.ou"; ov: "dh.ov"; ow: "dh.ow"; ox: "dh.ox"; oy: "dh.oy"; oz: "dh.oz"; pa: "dh.pa"; pb: "dh.pb"; pc: "dh.pc"; pd: "dh.pd"; pe: "dh.pe"; pf: "dh.pf"; pg: "dh.pg"; ph: "dh.ph"; pi: "dh.pi"; pj: "dh.pj"; pk: "dh.pk"; pl: "dh.pl"; pm: "dh.pm"; pn: "dh.pn"; po: "dh.po"; pp: "dh.pp"; pq: "dh.pq"; pr: "dh.pr"; ps: "dh.ps"; pt: "dh.pt"; pu: "dh.pu"; pv: "dh.pv"; pw: "dh.pw"; px: "dh.px"; py: "dh.py"; pz: "dh.pz"; qa: "dh.qa"; qb: "dh.qb"; qc: "dh.qc"; qd: "dh.qd"; qe: "dh.qe"; qf: "dh.qf"; qg: "dh.qg"; qh: "dh.qh"; qi: "dh.qi"; qj: "dh.qj"; qk: "dh.qk"; ql: "dh.ql"; qm: "dh.qm"; qn: "dh.qn"; qo: "dh.qo"; qp: "dh.qp"; qq: "dh.qq"; qr: "dh.qr"; qs: "dh.qs"; qt: "dh.qt"; qu: "dh.qu"; qv: "dh.qv"; qw: "dh.qw"; qx: "dh.qx"; qy: "dh.qy"; qz: "dh.qz"; ra: "dh.ra"; rb: "dh.rb"; rc: "dh.rc"; rd: "dh.rd"; re: "dh.re"; rf: "dh.rf"; rg: "dh.rg"; rh: "dh.rh"; ri: "dh.ri"; rj: "dh.rj"; rk: "dh.rk"; rl: "dh.rl"; rm: "dh.rm"; rn: "dh.rn"; ro: "dh.ro"; rp: "dh.rp"; rq: "dh.rq"; rr: "dh.rr"; rs: "dh.rs"; rt: "dh.rt"; ru: "dh.ru"; rv: "dh.rv"; rw: "dh.rw"; rx: "dh.rx"; ry: "dh.ry"; rz: "dh.rz"; sa: "dh.sa"; sb: "dh.sb"; sc: "dh.sc"; sd: "dh.sd"; se: "dh.se"; sf: "dh.sf"; sg: "dh.sg"; sh: "dh.sh"; si: "dh.si"; sj: "dh.sj"; sk: "dh.sk"; sl: "dh.sl"; sm: "dh.sm"; sn: "dh.sn"; so: "dh.so"; sp: "dh.sp"; sq: "dh.sq"; sr: "dh.sr"; ss: "dh.ss"; st: "dh.st"; su: "dh.su"; sv: "dh.sv"; sw: "dh.sw"; sx: "dh.sx"; sy: "dh.sy"; sz: "dh.sz"; ta: "dh.ta"; tb: "dh.tb"; tc: "dh.tc"; td: "dh.td"; te: "dh.te"; tf: "dh.tf"; tg: "dh.tg"; th: "dh.th"; ti: "dh.ti"; tj: "dh.tj"; tk: "dh.tk"; tl: "dh.tl"; tm: "dh.tm"; tn: "dh.tn"; to: "dh.to"; tp: "dh.tp"; tq: "dh.tq"; tr: "dh.tr"; ts: "dh.ts"; tt: "dh.tt"; tu: "dh.tu"; tv: "dh.tv"; tw: "dh.tw"; tx: "dh.tx"; ty: "dh.ty"; tz: "dh.tz"; ua: "dh.ua"; ub: "dh.ub"; uc: "dh.uc"; ud: "dh.ud"; ue: "dh.ue"; uf: "dh.uf"; ug: "dh.ug"; uh: "dh.uh"; ui: "dh.ui"; uj: "dh.uj"; uk: "dh.uk"; ul: "dh.ul"; um: "dh.um"; un: "dh.un"; uo: "dh.uo"; up: "dh.up"; uq: "dh.uq"; ur: "dh.ur"; us: "dh.us"; ut: "dh.ut"; uu: "dh.uu"; uv: "dh.uv"; uw: "dh.uw"; ux: "dh.ux"; uy: "dh.uy"; uz: "dh.uz"; va: "dh.va"; vb: "dh.vb"; vc: "dh.vc"; vd: "dh.vd"; ve: "dh.ve"; vf: "dh.vf"; vg: "dh.vg"; vh: "dh.vh"; vi: "dh.vi"; vj: "dh.vj"; vk: "dh.vk"; vl: "dh.vl"; vm: "dh.vm"; vn: "dh.vn"; vo: "dh.vo"; vp: "dh.vp"; vq: "dh.vq"; vr: "dh.vr"; vs: "dh.vs"; vt: "dh.vt"; vu: "dh.vu"; vv: "dh.vv"; vw: "dh.vw"; vx: "dh.vx"; vy: "dh.vy"; vz: "dh.vz"; wa: "dh.wa"; wb: "dh.wb"; wc: "dh.wc"; wd: "dh.wd"; we: "dh.we"; wf: "dh.wf"; wg: "dh.wg"; wh: "dh.wh"; wi: "dh.wi"; wj: "dh.wj"; wk: "dh.wk"; wl: "dh.wl"; wm: "dh.wm"; wn: "dh.wn"; wo: "dh.wo"; wp: "dh.wp"; wq: "dh.wq"; wr: "dh.wr"; ws: "dh.ws"; wt: "dh.wt"; wu: "dh.wu"; wv: "dh.wv"; ww: "dh.ww"; wx: "dh.wx"; wy: "dh.wy"; wz: "dh.wz"; xa: "dh.xa"; xb: "dh.xb"; xc: "dh.xc"; xd: "dh.xd"; xe: "dh.xe"; xf: "dh.xf"; xg: "dh.xg"; xh: "dh.xh"; xi: "dh.xi"; xj: "dh.xj"; xk: "dh.xk"; xl: "dh.xl"; xm: "dh.xm"; xn: "dh.xn"; xo: "dh.xo"; xp: "dh.xp"; xq: "dh.xq"; xr: "dh.xr"; xs: "dh.xs"; xt: "dh.xt"; xu: "dh.xu"; xv: "dh.xv"; xw: "dh.xw"; xx: "dh.xx"; xy: "dh.xy"; xz: "dh.xz"; ya: "dh.ya"; yb: "dh.yb"; yc: "dh.yc"; yd: "dh.yd"; ye: "dh.ye"; yf: "dh.yf"; yg: "dh.yg"; yh: "dh.yh"; yi: "dh.yi"; yj: "dh.yj"; yk: "dh.yk"; yl: "dh.yl"; ym: "dh.ym"; yn: "dh.yn"; yo: "dh.yo"; yp: "dh.yp"; yq: "dh.yq"; yr: "dh.yr"; ys: "dh.ys"; yt: "dh.yt"; yu: "dh.yu"; yv: "dh.yv"; yw: "dh.yw"; yx: "dh.yx"; yy: "dh.yy"; yz: "dh.yz"; za: "dh.za"; zb: "dh.zb"; zc: "dh.zc"; zd: "dh.zd"; ze: "dh.ze"; zf: "dh.zf"; zg: "dh.zg"; zh: "dh.zh"; zi: "dh.zi"; zj: "dh.zj"; zk: "dh.zk"; zl: "dh.zl"; zm: "dh.zm"; zn: "dh.zn"; zo: "dh.zo"; zp: "dh.zp"; zq: "dh.zq"; zr: "dh.zr"; zs: "dh.zs"; zt: "dh.zt"; zu: "dh.zu"; zv: "dh.zv"; zw: "dh.zw"; zx: "dh.zx"; zy: "dh.zy"; zz: "dh.zz"; }; di: { aa: "di.aa"; ab: "di.ab"; ac: "di.ac"; ad: "di.ad"; ae: "di.ae"; af: "di.af"; ag: "di.ag"; ah: "di.ah"; ai: "di.ai"; aj: "di.aj"; ak: "di.ak"; al: "di.al"; am: "di.am"; an: "di.an"; ao: "di.ao"; ap: "di.ap"; aq: "di.aq"; ar: "di.ar"; as: "di.as"; at: "di.at"; au: "di.au"; av: "di.av"; aw: "di.aw"; ax: "di.ax"; ay: "di.ay"; az: "di.az"; ba: "di.ba"; bb: "di.bb"; bc: "di.bc"; bd: "di.bd"; be: "di.be"; bf: "di.bf"; bg: "di.bg"; bh: "di.bh"; bi: "di.bi"; bj: "di.bj"; bk: "di.bk"; bl: "di.bl"; bm: "di.bm"; bn: "di.bn"; bo: "di.bo"; bp: "di.bp"; bq: "di.bq"; br: "di.br"; bs: "di.bs"; bt: "di.bt"; bu: "di.bu"; bv: "di.bv"; bw: "di.bw"; bx: "di.bx"; by: "di.by"; bz: "di.bz"; ca: "di.ca"; cb: "di.cb"; cc: "di.cc"; cd: "di.cd"; ce: "di.ce"; cf: "di.cf"; cg: "di.cg"; ch: "di.ch"; ci: "di.ci"; cj: "di.cj"; ck: "di.ck"; cl: "di.cl"; cm: "di.cm"; cn: "di.cn"; co: "di.co"; cp: "di.cp"; cq: "di.cq"; cr: "di.cr"; cs: "di.cs"; ct: "di.ct"; cu: "di.cu"; cv: "di.cv"; cw: "di.cw"; cx: "di.cx"; cy: "di.cy"; cz: "di.cz"; da: "di.da"; db: "di.db"; dc: "di.dc"; dd: "di.dd"; de: "di.de"; df: "di.df"; dg: "di.dg"; dh: "di.dh"; di: "di.di"; dj: "di.dj"; dk: "di.dk"; dl: "di.dl"; dm: "di.dm"; dn: "di.dn"; do: "di.do"; dp: "di.dp"; dq: "di.dq"; dr: "di.dr"; ds: "di.ds"; dt: "di.dt"; du: "di.du"; dv: "di.dv"; dw: "di.dw"; dx: "di.dx"; dy: "di.dy"; dz: "di.dz"; ea: "di.ea"; eb: "di.eb"; ec: "di.ec"; ed: "di.ed"; ee: "di.ee"; ef: "di.ef"; eg: "di.eg"; eh: "di.eh"; ei: "di.ei"; ej: "di.ej"; ek: "di.ek"; el: "di.el"; em: "di.em"; en: "di.en"; eo: "di.eo"; ep: "di.ep"; eq: "di.eq"; er: "di.er"; es: "di.es"; et: "di.et"; eu: "di.eu"; ev: "di.ev"; ew: "di.ew"; ex: "di.ex"; ey: "di.ey"; ez: "di.ez"; fa: "di.fa"; fb: "di.fb"; fc: "di.fc"; fd: "di.fd"; fe: "di.fe"; ff: "di.ff"; fg: "di.fg"; fh: "di.fh"; fi: "di.fi"; fj: "di.fj"; fk: "di.fk"; fl: "di.fl"; fm: "di.fm"; fn: "di.fn"; fo: "di.fo"; fp: "di.fp"; fq: "di.fq"; fr: "di.fr"; fs: "di.fs"; ft: "di.ft"; fu: "di.fu"; fv: "di.fv"; fw: "di.fw"; fx: "di.fx"; fy: "di.fy"; fz: "di.fz"; ga: "di.ga"; gb: "di.gb"; gc: "di.gc"; gd: "di.gd"; ge: "di.ge"; gf: "di.gf"; gg: "di.gg"; gh: "di.gh"; gi: "di.gi"; gj: "di.gj"; gk: "di.gk"; gl: "di.gl"; gm: "di.gm"; gn: "di.gn"; go: "di.go"; gp: "di.gp"; gq: "di.gq"; gr: "di.gr"; gs: "di.gs"; gt: "di.gt"; gu: "di.gu"; gv: "di.gv"; gw: "di.gw"; gx: "di.gx"; gy: "di.gy"; gz: "di.gz"; ha: "di.ha"; hb: "di.hb"; hc: "di.hc"; hd: "di.hd"; he: "di.he"; hf: "di.hf"; hg: "di.hg"; hh: "di.hh"; hi: "di.hi"; hj: "di.hj"; hk: "di.hk"; hl: "di.hl"; hm: "di.hm"; hn: "di.hn"; ho: "di.ho"; hp: "di.hp"; hq: "di.hq"; hr: "di.hr"; hs: "di.hs"; ht: "di.ht"; hu: "di.hu"; hv: "di.hv"; hw: "di.hw"; hx: "di.hx"; hy: "di.hy"; hz: "di.hz"; ia: "di.ia"; ib: "di.ib"; ic: "di.ic"; id: "di.id"; ie: "di.ie"; if: "di.if"; ig: "di.ig"; ih: "di.ih"; ii: "di.ii"; ij: "di.ij"; ik: "di.ik"; il: "di.il"; im: "di.im"; in: "di.in"; io: "di.io"; ip: "di.ip"; iq: "di.iq"; ir: "di.ir"; is: "di.is"; it: "di.it"; iu: "di.iu"; iv: "di.iv"; iw: "di.iw"; ix: "di.ix"; iy: "di.iy"; iz: "di.iz"; ja: "di.ja"; jb: "di.jb"; jc: "di.jc"; jd: "di.jd"; je: "di.je"; jf: "di.jf"; jg: "di.jg"; jh: "di.jh"; ji: "di.ji"; jj: "di.jj"; jk: "di.jk"; jl: "di.jl"; jm: "di.jm"; jn: "di.jn"; jo: "di.jo"; jp: "di.jp"; jq: "di.jq"; jr: "di.jr"; js: "di.js"; jt: "di.jt"; ju: "di.ju"; jv: "di.jv"; jw: "di.jw"; jx: "di.jx"; jy: "di.jy"; jz: "di.jz"; ka: "di.ka"; kb: "di.kb"; kc: "di.kc"; kd: "di.kd"; ke: "di.ke"; kf: "di.kf"; kg: "di.kg"; kh: "di.kh"; ki: "di.ki"; kj: "di.kj"; kk: "di.kk"; kl: "di.kl"; km: "di.km"; kn: "di.kn"; ko: "di.ko"; kp: "di.kp"; kq: "di.kq"; kr: "di.kr"; ks: "di.ks"; kt: "di.kt"; ku: "di.ku"; kv: "di.kv"; kw: "di.kw"; kx: "di.kx"; ky: "di.ky"; kz: "di.kz"; la: "di.la"; lb: "di.lb"; lc: "di.lc"; ld: "di.ld"; le: "di.le"; lf: "di.lf"; lg: "di.lg"; lh: "di.lh"; li: "di.li"; lj: "di.lj"; lk: "di.lk"; ll: "di.ll"; lm: "di.lm"; ln: "di.ln"; lo: "di.lo"; lp: "di.lp"; lq: "di.lq"; lr: "di.lr"; ls: "di.ls"; lt: "di.lt"; lu: "di.lu"; lv: "di.lv"; lw: "di.lw"; lx: "di.lx"; ly: "di.ly"; lz: "di.lz"; ma: "di.ma"; mb: "di.mb"; mc: "di.mc"; md: "di.md"; me: "di.me"; mf: "di.mf"; mg: "di.mg"; mh: "di.mh"; mi: "di.mi"; mj: "di.mj"; mk: "di.mk"; ml: "di.ml"; mm: "di.mm"; mn: "di.mn"; mo: "di.mo"; mp: "di.mp"; mq: "di.mq"; mr: "di.mr"; ms: "di.ms"; mt: "di.mt"; mu: "di.mu"; mv: "di.mv"; mw: "di.mw"; mx: "di.mx"; my: "di.my"; mz: "di.mz"; na: "di.na"; nb: "di.nb"; nc: "di.nc"; nd: "di.nd"; ne: "di.ne"; nf: "di.nf"; ng: "di.ng"; nh: "di.nh"; ni: "di.ni"; nj: "di.nj"; nk: "di.nk"; nl: "di.nl"; nm: "di.nm"; nn: "di.nn"; no: "di.no"; np: "di.np"; nq: "di.nq"; nr: "di.nr"; ns: "di.ns"; nt: "di.nt"; nu: "di.nu"; nv: "di.nv"; nw: "di.nw"; nx: "di.nx"; ny: "di.ny"; nz: "di.nz"; oa: "di.oa"; ob: "di.ob"; oc: "di.oc"; od: "di.od"; oe: "di.oe"; of: "di.of"; og: "di.og"; oh: "di.oh"; oi: "di.oi"; oj: "di.oj"; ok: "di.ok"; ol: "di.ol"; om: "di.om"; on: "di.on"; oo: "di.oo"; op: "di.op"; oq: "di.oq"; or: "di.or"; os: "di.os"; ot: "di.ot"; ou: "di.ou"; ov: "di.ov"; ow: "di.ow"; ox: "di.ox"; oy: "di.oy"; oz: "di.oz"; pa: "di.pa"; pb: "di.pb"; pc: "di.pc"; pd: "di.pd"; pe: "di.pe"; pf: "di.pf"; pg: "di.pg"; ph: "di.ph"; pi: "di.pi"; pj: "di.pj"; pk: "di.pk"; pl: "di.pl"; pm: "di.pm"; pn: "di.pn"; po: "di.po"; pp: "di.pp"; pq: "di.pq"; pr: "di.pr"; ps: "di.ps"; pt: "di.pt"; pu: "di.pu"; pv: "di.pv"; pw: "di.pw"; px: "di.px"; py: "di.py"; pz: "di.pz"; qa: "di.qa"; qb: "di.qb"; qc: "di.qc"; qd: "di.qd"; qe: "di.qe"; qf: "di.qf"; qg: "di.qg"; qh: "di.qh"; qi: "di.qi"; qj: "di.qj"; qk: "di.qk"; ql: "di.ql"; qm: "di.qm"; qn: "di.qn"; qo: "di.qo"; qp: "di.qp"; qq: "di.qq"; qr: "di.qr"; qs: "di.qs"; qt: "di.qt"; qu: "di.qu"; qv: "di.qv"; qw: "di.qw"; qx: "di.qx"; qy: "di.qy"; qz: "di.qz"; ra: "di.ra"; rb: "di.rb"; rc: "di.rc"; rd: "di.rd"; re: "di.re"; rf: "di.rf"; rg: "di.rg"; rh: "di.rh"; ri: "di.ri"; rj: "di.rj"; rk: "di.rk"; rl: "di.rl"; rm: "di.rm"; rn: "di.rn"; ro: "di.ro"; rp: "di.rp"; rq: "di.rq"; rr: "di.rr"; rs: "di.rs"; rt: "di.rt"; ru: "di.ru"; rv: "di.rv"; rw: "di.rw"; rx: "di.rx"; ry: "di.ry"; rz: "di.rz"; sa: "di.sa"; sb: "di.sb"; sc: "di.sc"; sd: "di.sd"; se: "di.se"; sf: "di.sf"; sg: "di.sg"; sh: "di.sh"; si: "di.si"; sj: "di.sj"; sk: "di.sk"; sl: "di.sl"; sm: "di.sm"; sn: "di.sn"; so: "di.so"; sp: "di.sp"; sq: "di.sq"; sr: "di.sr"; ss: "di.ss"; st: "di.st"; su: "di.su"; sv: "di.sv"; sw: "di.sw"; sx: "di.sx"; sy: "di.sy"; sz: "di.sz"; ta: "di.ta"; tb: "di.tb"; tc: "di.tc"; td: "di.td"; te: "di.te"; tf: "di.tf"; tg: "di.tg"; th: "di.th"; ti: "di.ti"; tj: "di.tj"; tk: "di.tk"; tl: "di.tl"; tm: "di.tm"; tn: "di.tn"; to: "di.to"; tp: "di.tp"; tq: "di.tq"; tr: "di.tr"; ts: "di.ts"; tt: "di.tt"; tu: "di.tu"; tv: "di.tv"; tw: "di.tw"; tx: "di.tx"; ty: "di.ty"; tz: "di.tz"; ua: "di.ua"; ub: "di.ub"; uc: "di.uc"; ud: "di.ud"; ue: "di.ue"; uf: "di.uf"; ug: "di.ug"; uh: "di.uh"; ui: "di.ui"; uj: "di.uj"; uk: "di.uk"; ul: "di.ul"; um: "di.um"; un: "di.un"; uo: "di.uo"; up: "di.up"; uq: "di.uq"; ur: "di.ur"; us: "di.us"; ut: "di.ut"; uu: "di.uu"; uv: "di.uv"; uw: "di.uw"; ux: "di.ux"; uy: "di.uy"; uz: "di.uz"; va: "di.va"; vb: "di.vb"; vc: "di.vc"; vd: "di.vd"; ve: "di.ve"; vf: "di.vf"; vg: "di.vg"; vh: "di.vh"; vi: "di.vi"; vj: "di.vj"; vk: "di.vk"; vl: "di.vl"; vm: "di.vm"; vn: "di.vn"; vo: "di.vo"; vp: "di.vp"; vq: "di.vq"; vr: "di.vr"; vs: "di.vs"; vt: "di.vt"; vu: "di.vu"; vv: "di.vv"; vw: "di.vw"; vx: "di.vx"; vy: "di.vy"; vz: "di.vz"; wa: "di.wa"; wb: "di.wb"; wc: "di.wc"; wd: "di.wd"; we: "di.we"; wf: "di.wf"; wg: "di.wg"; wh: "di.wh"; wi: "di.wi"; wj: "di.wj"; wk: "di.wk"; wl: "di.wl"; wm: "di.wm"; wn: "di.wn"; wo: "di.wo"; wp: "di.wp"; wq: "di.wq"; wr: "di.wr"; ws: "di.ws"; wt: "di.wt"; wu: "di.wu"; wv: "di.wv"; ww: "di.ww"; wx: "di.wx"; wy: "di.wy"; wz: "di.wz"; xa: "di.xa"; xb: "di.xb"; xc: "di.xc"; xd: "di.xd"; xe: "di.xe"; xf: "di.xf"; xg: "di.xg"; xh: "di.xh"; xi: "di.xi"; xj: "di.xj"; xk: "di.xk"; xl: "di.xl"; xm: "di.xm"; xn: "di.xn"; xo: "di.xo"; xp: "di.xp"; xq: "di.xq"; xr: "di.xr"; xs: "di.xs"; xt: "di.xt"; xu: "di.xu"; xv: "di.xv"; xw: "di.xw"; xx: "di.xx"; xy: "di.xy"; xz: "di.xz"; ya: "di.ya"; yb: "di.yb"; yc: "di.yc"; yd: "di.yd"; ye: "di.ye"; yf: "di.yf"; yg: "di.yg"; yh: "di.yh"; yi: "di.yi"; yj: "di.yj"; yk: "di.yk"; yl: "di.yl"; ym: "di.ym"; yn: "di.yn"; yo: "di.yo"; yp: "di.yp"; yq: "di.yq"; yr: "di.yr"; ys: "di.ys"; yt: "di.yt"; yu: "di.yu"; yv: "di.yv"; yw: "di.yw"; yx: "di.yx"; yy: "di.yy"; yz: "di.yz"; za: "di.za"; zb: "di.zb"; zc: "di.zc"; zd: "di.zd"; ze: "di.ze"; zf: "di.zf"; zg: "di.zg"; zh: "di.zh"; zi: "di.zi"; zj: "di.zj"; zk: "di.zk"; zl: "di.zl"; zm: "di.zm"; zn: "di.zn"; zo: "di.zo"; zp: "di.zp"; zq: "di.zq"; zr: "di.zr"; zs: "di.zs"; zt: "di.zt"; zu: "di.zu"; zv: "di.zv"; zw: "di.zw"; zx: "di.zx"; zy: "di.zy"; zz: "di.zz"; }; dj: { aa: "dj.aa"; ab: "dj.ab"; ac: "dj.ac"; ad: "dj.ad"; ae: "dj.ae"; af: "dj.af"; ag: "dj.ag"; ah: "dj.ah"; ai: "dj.ai"; aj: "dj.aj"; ak: "dj.ak"; al: "dj.al"; am: "dj.am"; an: "dj.an"; ao: "dj.ao"; ap: "dj.ap"; aq: "dj.aq"; ar: "dj.ar"; as: "dj.as"; at: "dj.at"; au: "dj.au"; av: "dj.av"; aw: "dj.aw"; ax: "dj.ax"; ay: "dj.ay"; az: "dj.az"; ba: "dj.ba"; bb: "dj.bb"; bc: "dj.bc"; bd: "dj.bd"; be: "dj.be"; bf: "dj.bf"; bg: "dj.bg"; bh: "dj.bh"; bi: "dj.bi"; bj: "dj.bj"; bk: "dj.bk"; bl: "dj.bl"; bm: "dj.bm"; bn: "dj.bn"; bo: "dj.bo"; bp: "dj.bp"; bq: "dj.bq"; br: "dj.br"; bs: "dj.bs"; bt: "dj.bt"; bu: "dj.bu"; bv: "dj.bv"; bw: "dj.bw"; bx: "dj.bx"; by: "dj.by"; bz: "dj.bz"; ca: "dj.ca"; cb: "dj.cb"; cc: "dj.cc"; cd: "dj.cd"; ce: "dj.ce"; cf: "dj.cf"; cg: "dj.cg"; ch: "dj.ch"; ci: "dj.ci"; cj: "dj.cj"; ck: "dj.ck"; cl: "dj.cl"; cm: "dj.cm"; cn: "dj.cn"; co: "dj.co"; cp: "dj.cp"; cq: "dj.cq"; cr: "dj.cr"; cs: "dj.cs"; ct: "dj.ct"; cu: "dj.cu"; cv: "dj.cv"; cw: "dj.cw"; cx: "dj.cx"; cy: "dj.cy"; cz: "dj.cz"; da: "dj.da"; db: "dj.db"; dc: "dj.dc"; dd: "dj.dd"; de: "dj.de"; df: "dj.df"; dg: "dj.dg"; dh: "dj.dh"; di: "dj.di"; dj: "dj.dj"; dk: "dj.dk"; dl: "dj.dl"; dm: "dj.dm"; dn: "dj.dn"; do: "dj.do"; dp: "dj.dp"; dq: "dj.dq"; dr: "dj.dr"; ds: "dj.ds"; dt: "dj.dt"; du: "dj.du"; dv: "dj.dv"; dw: "dj.dw"; dx: "dj.dx"; dy: "dj.dy"; dz: "dj.dz"; ea: "dj.ea"; eb: "dj.eb"; ec: "dj.ec"; ed: "dj.ed"; ee: "dj.ee"; ef: "dj.ef"; eg: "dj.eg"; eh: "dj.eh"; ei: "dj.ei"; ej: "dj.ej"; ek: "dj.ek"; el: "dj.el"; em: "dj.em"; en: "dj.en"; eo: "dj.eo"; ep: "dj.ep"; eq: "dj.eq"; er: "dj.er"; es: "dj.es"; et: "dj.et"; eu: "dj.eu"; ev: "dj.ev"; ew: "dj.ew"; ex: "dj.ex"; ey: "dj.ey"; ez: "dj.ez"; fa: "dj.fa"; fb: "dj.fb"; fc: "dj.fc"; fd: "dj.fd"; fe: "dj.fe"; ff: "dj.ff"; fg: "dj.fg"; fh: "dj.fh"; fi: "dj.fi"; fj: "dj.fj"; fk: "dj.fk"; fl: "dj.fl"; fm: "dj.fm"; fn: "dj.fn"; fo: "dj.fo"; fp: "dj.fp"; fq: "dj.fq"; fr: "dj.fr"; fs: "dj.fs"; ft: "dj.ft"; fu: "dj.fu"; fv: "dj.fv"; fw: "dj.fw"; fx: "dj.fx"; fy: "dj.fy"; fz: "dj.fz"; ga: "dj.ga"; gb: "dj.gb"; gc: "dj.gc"; gd: "dj.gd"; ge: "dj.ge"; gf: "dj.gf"; gg: "dj.gg"; gh: "dj.gh"; gi: "dj.gi"; gj: "dj.gj"; gk: "dj.gk"; gl: "dj.gl"; gm: "dj.gm"; gn: "dj.gn"; go: "dj.go"; gp: "dj.gp"; gq: "dj.gq"; gr: "dj.gr"; gs: "dj.gs"; gt: "dj.gt"; gu: "dj.gu"; gv: "dj.gv"; gw: "dj.gw"; gx: "dj.gx"; gy: "dj.gy"; gz: "dj.gz"; ha: "dj.ha"; hb: "dj.hb"; hc: "dj.hc"; hd: "dj.hd"; he: "dj.he"; hf: "dj.hf"; hg: "dj.hg"; hh: "dj.hh"; hi: "dj.hi"; hj: "dj.hj"; hk: "dj.hk"; hl: "dj.hl"; hm: "dj.hm"; hn: "dj.hn"; ho: "dj.ho"; hp: "dj.hp"; hq: "dj.hq"; hr: "dj.hr"; hs: "dj.hs"; ht: "dj.ht"; hu: "dj.hu"; hv: "dj.hv"; hw: "dj.hw"; hx: "dj.hx"; hy: "dj.hy"; hz: "dj.hz"; ia: "dj.ia"; ib: "dj.ib"; ic: "dj.ic"; id: "dj.id"; ie: "dj.ie"; if: "dj.if"; ig: "dj.ig"; ih: "dj.ih"; ii: "dj.ii"; ij: "dj.ij"; ik: "dj.ik"; il: "dj.il"; im: "dj.im"; in: "dj.in"; io: "dj.io"; ip: "dj.ip"; iq: "dj.iq"; ir: "dj.ir"; is: "dj.is"; it: "dj.it"; iu: "dj.iu"; iv: "dj.iv"; iw: "dj.iw"; ix: "dj.ix"; iy: "dj.iy"; iz: "dj.iz"; ja: "dj.ja"; jb: "dj.jb"; jc: "dj.jc"; jd: "dj.jd"; je: "dj.je"; jf: "dj.jf"; jg: "dj.jg"; jh: "dj.jh"; ji: "dj.ji"; jj: "dj.jj"; jk: "dj.jk"; jl: "dj.jl"; jm: "dj.jm"; jn: "dj.jn"; jo: "dj.jo"; jp: "dj.jp"; jq: "dj.jq"; jr: "dj.jr"; js: "dj.js"; jt: "dj.jt"; ju: "dj.ju"; jv: "dj.jv"; jw: "dj.jw"; jx: "dj.jx"; jy: "dj.jy"; jz: "dj.jz"; ka: "dj.ka"; kb: "dj.kb"; kc: "dj.kc"; kd: "dj.kd"; ke: "dj.ke"; kf: "dj.kf"; kg: "dj.kg"; kh: "dj.kh"; ki: "dj.ki"; kj: "dj.kj"; kk: "dj.kk"; kl: "dj.kl"; km: "dj.km"; kn: "dj.kn"; ko: "dj.ko"; kp: "dj.kp"; kq: "dj.kq"; kr: "dj.kr"; ks: "dj.ks"; kt: "dj.kt"; ku: "dj.ku"; kv: "dj.kv"; kw: "dj.kw"; kx: "dj.kx"; ky: "dj.ky"; kz: "dj.kz"; la: "dj.la"; lb: "dj.lb"; lc: "dj.lc"; ld: "dj.ld"; le: "dj.le"; lf: "dj.lf"; lg: "dj.lg"; lh: "dj.lh"; li: "dj.li"; lj: "dj.lj"; lk: "dj.lk"; ll: "dj.ll"; lm: "dj.lm"; ln: "dj.ln"; lo: "dj.lo"; lp: "dj.lp"; lq: "dj.lq"; lr: "dj.lr"; ls: "dj.ls"; lt: "dj.lt"; lu: "dj.lu"; lv: "dj.lv"; lw: "dj.lw"; lx: "dj.lx"; ly: "dj.ly"; lz: "dj.lz"; ma: "dj.ma"; mb: "dj.mb"; mc: "dj.mc"; md: "dj.md"; me: "dj.me"; mf: "dj.mf"; mg: "dj.mg"; mh: "dj.mh"; mi: "dj.mi"; mj: "dj.mj"; mk: "dj.mk"; ml: "dj.ml"; mm: "dj.mm"; mn: "dj.mn"; mo: "dj.mo"; mp: "dj.mp"; mq: "dj.mq"; mr: "dj.mr"; ms: "dj.ms"; mt: "dj.mt"; mu: "dj.mu"; mv: "dj.mv"; mw: "dj.mw"; mx: "dj.mx"; my: "dj.my"; mz: "dj.mz"; na: "dj.na"; nb: "dj.nb"; nc: "dj.nc"; nd: "dj.nd"; ne: "dj.ne"; nf: "dj.nf"; ng: "dj.ng"; nh: "dj.nh"; ni: "dj.ni"; nj: "dj.nj"; nk: "dj.nk"; nl: "dj.nl"; nm: "dj.nm"; nn: "dj.nn"; no: "dj.no"; np: "dj.np"; nq: "dj.nq"; nr: "dj.nr"; ns: "dj.ns"; nt: "dj.nt"; nu: "dj.nu"; nv: "dj.nv"; nw: "dj.nw"; nx: "dj.nx"; ny: "dj.ny"; nz: "dj.nz"; oa: "dj.oa"; ob: "dj.ob"; oc: "dj.oc"; od: "dj.od"; oe: "dj.oe"; of: "dj.of"; og: "dj.og"; oh: "dj.oh"; oi: "dj.oi"; oj: "dj.oj"; ok: "dj.ok"; ol: "dj.ol"; om: "dj.om"; on: "dj.on"; oo: "dj.oo"; op: "dj.op"; oq: "dj.oq"; or: "dj.or"; os: "dj.os"; ot: "dj.ot"; ou: "dj.ou"; ov: "dj.ov"; ow: "dj.ow"; ox: "dj.ox"; oy: "dj.oy"; oz: "dj.oz"; pa: "dj.pa"; pb: "dj.pb"; pc: "dj.pc"; pd: "dj.pd"; pe: "dj.pe"; pf: "dj.pf"; pg: "dj.pg"; ph: "dj.ph"; pi: "dj.pi"; pj: "dj.pj"; pk: "dj.pk"; pl: "dj.pl"; pm: "dj.pm"; pn: "dj.pn"; po: "dj.po"; pp: "dj.pp"; pq: "dj.pq"; pr: "dj.pr"; ps: "dj.ps"; pt: "dj.pt"; pu: "dj.pu"; pv: "dj.pv"; pw: "dj.pw"; px: "dj.px"; py: "dj.py"; pz: "dj.pz"; qa: "dj.qa"; qb: "dj.qb"; qc: "dj.qc"; qd: "dj.qd"; qe: "dj.qe"; qf: "dj.qf"; qg: "dj.qg"; qh: "dj.qh"; qi: "dj.qi"; qj: "dj.qj"; qk: "dj.qk"; ql: "dj.ql"; qm: "dj.qm"; qn: "dj.qn"; qo: "dj.qo"; qp: "dj.qp"; qq: "dj.qq"; qr: "dj.qr"; qs: "dj.qs"; qt: "dj.qt"; qu: "dj.qu"; qv: "dj.qv"; qw: "dj.qw"; qx: "dj.qx"; qy: "dj.qy"; qz: "dj.qz"; ra: "dj.ra"; rb: "dj.rb"; rc: "dj.rc"; rd: "dj.rd"; re: "dj.re"; rf: "dj.rf"; rg: "dj.rg"; rh: "dj.rh"; ri: "dj.ri"; rj: "dj.rj"; rk: "dj.rk"; rl: "dj.rl"; rm: "dj.rm"; rn: "dj.rn"; ro: "dj.ro"; rp: "dj.rp"; rq: "dj.rq"; rr: "dj.rr"; rs: "dj.rs"; rt: "dj.rt"; ru: "dj.ru"; rv: "dj.rv"; rw: "dj.rw"; rx: "dj.rx"; ry: "dj.ry"; rz: "dj.rz"; sa: "dj.sa"; sb: "dj.sb"; sc: "dj.sc"; sd: "dj.sd"; se: "dj.se"; sf: "dj.sf"; sg: "dj.sg"; sh: "dj.sh"; si: "dj.si"; sj: "dj.sj"; sk: "dj.sk"; sl: "dj.sl"; sm: "dj.sm"; sn: "dj.sn"; so: "dj.so"; sp: "dj.sp"; sq: "dj.sq"; sr: "dj.sr"; ss: "dj.ss"; st: "dj.st"; su: "dj.su"; sv: "dj.sv"; sw: "dj.sw"; sx: "dj.sx"; sy: "dj.sy"; sz: "dj.sz"; ta: "dj.ta"; tb: "dj.tb"; tc: "dj.tc"; td: "dj.td"; te: "dj.te"; tf: "dj.tf"; tg: "dj.tg"; th: "dj.th"; ti: "dj.ti"; tj: "dj.tj"; tk: "dj.tk"; tl: "dj.tl"; tm: "dj.tm"; tn: "dj.tn"; to: "dj.to"; tp: "dj.tp"; tq: "dj.tq"; tr: "dj.tr"; ts: "dj.ts"; tt: "dj.tt"; tu: "dj.tu"; tv: "dj.tv"; tw: "dj.tw"; tx: "dj.tx"; ty: "dj.ty"; tz: "dj.tz"; ua: "dj.ua"; ub: "dj.ub"; uc: "dj.uc"; ud: "dj.ud"; ue: "dj.ue"; uf: "dj.uf"; ug: "dj.ug"; uh: "dj.uh"; ui: "dj.ui"; uj: "dj.uj"; uk: "dj.uk"; ul: "dj.ul"; um: "dj.um"; un: "dj.un"; uo: "dj.uo"; up: "dj.up"; uq: "dj.uq"; ur: "dj.ur"; us: "dj.us"; ut: "dj.ut"; uu: "dj.uu"; uv: "dj.uv"; uw: "dj.uw"; ux: "dj.ux"; uy: "dj.uy"; uz: "dj.uz"; va: "dj.va"; vb: "dj.vb"; vc: "dj.vc"; vd: "dj.vd"; ve: "dj.ve"; vf: "dj.vf"; vg: "dj.vg"; vh: "dj.vh"; vi: "dj.vi"; vj: "dj.vj"; vk: "dj.vk"; vl: "dj.vl"; vm: "dj.vm"; vn: "dj.vn"; vo: "dj.vo"; vp: "dj.vp"; vq: "dj.vq"; vr: "dj.vr"; vs: "dj.vs"; vt: "dj.vt"; vu: "dj.vu"; vv: "dj.vv"; vw: "dj.vw"; vx: "dj.vx"; vy: "dj.vy"; vz: "dj.vz"; wa: "dj.wa"; wb: "dj.wb"; wc: "dj.wc"; wd: "dj.wd"; we: "dj.we"; wf: "dj.wf"; wg: "dj.wg"; wh: "dj.wh"; wi: "dj.wi"; wj: "dj.wj"; wk: "dj.wk"; wl: "dj.wl"; wm: "dj.wm"; wn: "dj.wn"; wo: "dj.wo"; wp: "dj.wp"; wq: "dj.wq"; wr: "dj.wr"; ws: "dj.ws"; wt: "dj.wt"; wu: "dj.wu"; wv: "dj.wv"; ww: "dj.ww"; wx: "dj.wx"; wy: "dj.wy"; wz: "dj.wz"; xa: "dj.xa"; xb: "dj.xb"; xc: "dj.xc"; xd: "dj.xd"; xe: "dj.xe"; xf: "dj.xf"; xg: "dj.xg"; xh: "dj.xh"; xi: "dj.xi"; xj: "dj.xj"; xk: "dj.xk"; xl: "dj.xl"; xm: "dj.xm"; xn: "dj.xn"; xo: "dj.xo"; xp: "dj.xp"; xq: "dj.xq"; xr: "dj.xr"; xs: "dj.xs"; xt: "dj.xt"; xu: "dj.xu"; xv: "dj.xv"; xw: "dj.xw"; xx: "dj.xx"; xy: "dj.xy"; xz: "dj.xz"; ya: "dj.ya"; yb: "dj.yb"; yc: "dj.yc"; yd: "dj.yd"; ye: "dj.ye"; yf: "dj.yf"; yg: "dj.yg"; yh: "dj.yh"; yi: "dj.yi"; yj: "dj.yj"; yk: "dj.yk"; yl: "dj.yl"; ym: "dj.ym"; yn: "dj.yn"; yo: "dj.yo"; yp: "dj.yp"; yq: "dj.yq"; yr: "dj.yr"; ys: "dj.ys"; yt: "dj.yt"; yu: "dj.yu"; yv: "dj.yv"; yw: "dj.yw"; yx: "dj.yx"; yy: "dj.yy"; yz: "dj.yz"; za: "dj.za"; zb: "dj.zb"; zc: "dj.zc"; zd: "dj.zd"; ze: "dj.ze"; zf: "dj.zf"; zg: "dj.zg"; zh: "dj.zh"; zi: "dj.zi"; zj: "dj.zj"; zk: "dj.zk"; zl: "dj.zl"; zm: "dj.zm"; zn: "dj.zn"; zo: "dj.zo"; zp: "dj.zp"; zq: "dj.zq"; zr: "dj.zr"; zs: "dj.zs"; zt: "dj.zt"; zu: "dj.zu"; zv: "dj.zv"; zw: "dj.zw"; zx: "dj.zx"; zy: "dj.zy"; zz: "dj.zz"; }; dk: { aa: "dk.aa"; ab: "dk.ab"; ac: "dk.ac"; ad: "dk.ad"; ae: "dk.ae"; af: "dk.af"; ag: "dk.ag"; ah: "dk.ah"; ai: "dk.ai"; aj: "dk.aj"; ak: "dk.ak"; al: "dk.al"; am: "dk.am"; an: "dk.an"; ao: "dk.ao"; ap: "dk.ap"; aq: "dk.aq"; ar: "dk.ar"; as: "dk.as"; at: "dk.at"; au: "dk.au"; av: "dk.av"; aw: "dk.aw"; ax: "dk.ax"; ay: "dk.ay"; az: "dk.az"; ba: "dk.ba"; bb: "dk.bb"; bc: "dk.bc"; bd: "dk.bd"; be: "dk.be"; bf: "dk.bf"; bg: "dk.bg"; bh: "dk.bh"; bi: "dk.bi"; bj: "dk.bj"; bk: "dk.bk"; bl: "dk.bl"; bm: "dk.bm"; bn: "dk.bn"; bo: "dk.bo"; bp: "dk.bp"; bq: "dk.bq"; br: "dk.br"; bs: "dk.bs"; bt: "dk.bt"; bu: "dk.bu"; bv: "dk.bv"; bw: "dk.bw"; bx: "dk.bx"; by: "dk.by"; bz: "dk.bz"; ca: "dk.ca"; cb: "dk.cb"; cc: "dk.cc"; cd: "dk.cd"; ce: "dk.ce"; cf: "dk.cf"; cg: "dk.cg"; ch: "dk.ch"; ci: "dk.ci"; cj: "dk.cj"; ck: "dk.ck"; cl: "dk.cl"; cm: "dk.cm"; cn: "dk.cn"; co: "dk.co"; cp: "dk.cp"; cq: "dk.cq"; cr: "dk.cr"; cs: "dk.cs"; ct: "dk.ct"; cu: "dk.cu"; cv: "dk.cv"; cw: "dk.cw"; cx: "dk.cx"; cy: "dk.cy"; cz: "dk.cz"; da: "dk.da"; db: "dk.db"; dc: "dk.dc"; dd: "dk.dd"; de: "dk.de"; df: "dk.df"; dg: "dk.dg"; dh: "dk.dh"; di: "dk.di"; dj: "dk.dj"; dk: "dk.dk"; dl: "dk.dl"; dm: "dk.dm"; dn: "dk.dn"; do: "dk.do"; dp: "dk.dp"; dq: "dk.dq"; dr: "dk.dr"; ds: "dk.ds"; dt: "dk.dt"; du: "dk.du"; dv: "dk.dv"; dw: "dk.dw"; dx: "dk.dx"; dy: "dk.dy"; dz: "dk.dz"; ea: "dk.ea"; eb: "dk.eb"; ec: "dk.ec"; ed: "dk.ed"; ee: "dk.ee"; ef: "dk.ef"; eg: "dk.eg"; eh: "dk.eh"; ei: "dk.ei"; ej: "dk.ej"; ek: "dk.ek"; el: "dk.el"; em: "dk.em"; en: "dk.en"; eo: "dk.eo"; ep: "dk.ep"; eq: "dk.eq"; er: "dk.er"; es: "dk.es"; et: "dk.et"; eu: "dk.eu"; ev: "dk.ev"; ew: "dk.ew"; ex: "dk.ex"; ey: "dk.ey"; ez: "dk.ez"; fa: "dk.fa"; fb: "dk.fb"; fc: "dk.fc"; fd: "dk.fd"; fe: "dk.fe"; ff: "dk.ff"; fg: "dk.fg"; fh: "dk.fh"; fi: "dk.fi"; fj: "dk.fj"; fk: "dk.fk"; fl: "dk.fl"; fm: "dk.fm"; fn: "dk.fn"; fo: "dk.fo"; fp: "dk.fp"; fq: "dk.fq"; fr: "dk.fr"; fs: "dk.fs"; ft: "dk.ft"; fu: "dk.fu"; fv: "dk.fv"; fw: "dk.fw"; fx: "dk.fx"; fy: "dk.fy"; fz: "dk.fz"; ga: "dk.ga"; gb: "dk.gb"; gc: "dk.gc"; gd: "dk.gd"; ge: "dk.ge"; gf: "dk.gf"; gg: "dk.gg"; gh: "dk.gh"; gi: "dk.gi"; gj: "dk.gj"; gk: "dk.gk"; gl: "dk.gl"; gm: "dk.gm"; gn: "dk.gn"; go: "dk.go"; gp: "dk.gp"; gq: "dk.gq"; gr: "dk.gr"; gs: "dk.gs"; gt: "dk.gt"; gu: "dk.gu"; gv: "dk.gv"; gw: "dk.gw"; gx: "dk.gx"; gy: "dk.gy"; gz: "dk.gz"; ha: "dk.ha"; hb: "dk.hb"; hc: "dk.hc"; hd: "dk.hd"; he: "dk.he"; hf: "dk.hf"; hg: "dk.hg"; hh: "dk.hh"; hi: "dk.hi"; hj: "dk.hj"; hk: "dk.hk"; hl: "dk.hl"; hm: "dk.hm"; hn: "dk.hn"; ho: "dk.ho"; hp: "dk.hp"; hq: "dk.hq"; hr: "dk.hr"; hs: "dk.hs"; ht: "dk.ht"; hu: "dk.hu"; hv: "dk.hv"; hw: "dk.hw"; hx: "dk.hx"; hy: "dk.hy"; hz: "dk.hz"; ia: "dk.ia"; ib: "dk.ib"; ic: "dk.ic"; id: "dk.id"; ie: "dk.ie"; if: "dk.if"; ig: "dk.ig"; ih: "dk.ih"; ii: "dk.ii"; ij: "dk.ij"; ik: "dk.ik"; il: "dk.il"; im: "dk.im"; in: "dk.in"; io: "dk.io"; ip: "dk.ip"; iq: "dk.iq"; ir: "dk.ir"; is: "dk.is"; it: "dk.it"; iu: "dk.iu"; iv: "dk.iv"; iw: "dk.iw"; ix: "dk.ix"; iy: "dk.iy"; iz: "dk.iz"; ja: "dk.ja"; jb: "dk.jb"; jc: "dk.jc"; jd: "dk.jd"; je: "dk.je"; jf: "dk.jf"; jg: "dk.jg"; jh: "dk.jh"; ji: "dk.ji"; jj: "dk.jj"; jk: "dk.jk"; jl: "dk.jl"; jm: "dk.jm"; jn: "dk.jn"; jo: "dk.jo"; jp: "dk.jp"; jq: "dk.jq"; jr: "dk.jr"; js: "dk.js"; jt: "dk.jt"; ju: "dk.ju"; jv: "dk.jv"; jw: "dk.jw"; jx: "dk.jx"; jy: "dk.jy"; jz: "dk.jz"; ka: "dk.ka"; kb: "dk.kb"; kc: "dk.kc"; kd: "dk.kd"; ke: "dk.ke"; kf: "dk.kf"; kg: "dk.kg"; kh: "dk.kh"; ki: "dk.ki"; kj: "dk.kj"; kk: "dk.kk"; kl: "dk.kl"; km: "dk.km"; kn: "dk.kn"; ko: "dk.ko"; kp: "dk.kp"; kq: "dk.kq"; kr: "dk.kr"; ks: "dk.ks"; kt: "dk.kt"; ku: "dk.ku"; kv: "dk.kv"; kw: "dk.kw"; kx: "dk.kx"; ky: "dk.ky"; kz: "dk.kz"; la: "dk.la"; lb: "dk.lb"; lc: "dk.lc"; ld: "dk.ld"; le: "dk.le"; lf: "dk.lf"; lg: "dk.lg"; lh: "dk.lh"; li: "dk.li"; lj: "dk.lj"; lk: "dk.lk"; ll: "dk.ll"; lm: "dk.lm"; ln: "dk.ln"; lo: "dk.lo"; lp: "dk.lp"; lq: "dk.lq"; lr: "dk.lr"; ls: "dk.ls"; lt: "dk.lt"; lu: "dk.lu"; lv: "dk.lv"; lw: "dk.lw"; lx: "dk.lx"; ly: "dk.ly"; lz: "dk.lz"; ma: "dk.ma"; mb: "dk.mb"; mc: "dk.mc"; md: "dk.md"; me: "dk.me"; mf: "dk.mf"; mg: "dk.mg"; mh: "dk.mh"; mi: "dk.mi"; mj: "dk.mj"; mk: "dk.mk"; ml: "dk.ml"; mm: "dk.mm"; mn: "dk.mn"; mo: "dk.mo"; mp: "dk.mp"; mq: "dk.mq"; mr: "dk.mr"; ms: "dk.ms"; mt: "dk.mt"; mu: "dk.mu"; mv: "dk.mv"; mw: "dk.mw"; mx: "dk.mx"; my: "dk.my"; mz: "dk.mz"; na: "dk.na"; nb: "dk.nb"; nc: "dk.nc"; nd: "dk.nd"; ne: "dk.ne"; nf: "dk.nf"; ng: "dk.ng"; nh: "dk.nh"; ni: "dk.ni"; nj: "dk.nj"; nk: "dk.nk"; nl: "dk.nl"; nm: "dk.nm"; nn: "dk.nn"; no: "dk.no"; np: "dk.np"; nq: "dk.nq"; nr: "dk.nr"; ns: "dk.ns"; nt: "dk.nt"; nu: "dk.nu"; nv: "dk.nv"; nw: "dk.nw"; nx: "dk.nx"; ny: "dk.ny"; nz: "dk.nz"; oa: "dk.oa"; ob: "dk.ob"; oc: "dk.oc"; od: "dk.od"; oe: "dk.oe"; of: "dk.of"; og: "dk.og"; oh: "dk.oh"; oi: "dk.oi"; oj: "dk.oj"; ok: "dk.ok"; ol: "dk.ol"; om: "dk.om"; on: "dk.on"; oo: "dk.oo"; op: "dk.op"; oq: "dk.oq"; or: "dk.or"; os: "dk.os"; ot: "dk.ot"; ou: "dk.ou"; ov: "dk.ov"; ow: "dk.ow"; ox: "dk.ox"; oy: "dk.oy"; oz: "dk.oz"; pa: "dk.pa"; pb: "dk.pb"; pc: "dk.pc"; pd: "dk.pd"; pe: "dk.pe"; pf: "dk.pf"; pg: "dk.pg"; ph: "dk.ph"; pi: "dk.pi"; pj: "dk.pj"; pk: "dk.pk"; pl: "dk.pl"; pm: "dk.pm"; pn: "dk.pn"; po: "dk.po"; pp: "dk.pp"; pq: "dk.pq"; pr: "dk.pr"; ps: "dk.ps"; pt: "dk.pt"; pu: "dk.pu"; pv: "dk.pv"; pw: "dk.pw"; px: "dk.px"; py: "dk.py"; pz: "dk.pz"; qa: "dk.qa"; qb: "dk.qb"; qc: "dk.qc"; qd: "dk.qd"; qe: "dk.qe"; qf: "dk.qf"; qg: "dk.qg"; qh: "dk.qh"; qi: "dk.qi"; qj: "dk.qj"; qk: "dk.qk"; ql: "dk.ql"; qm: "dk.qm"; qn: "dk.qn"; qo: "dk.qo"; qp: "dk.qp"; qq: "dk.qq"; qr: "dk.qr"; qs: "dk.qs"; qt: "dk.qt"; qu: "dk.qu"; qv: "dk.qv"; qw: "dk.qw"; qx: "dk.qx"; qy: "dk.qy"; qz: "dk.qz"; ra: "dk.ra"; rb: "dk.rb"; rc: "dk.rc"; rd: "dk.rd"; re: "dk.re"; rf: "dk.rf"; rg: "dk.rg"; rh: "dk.rh"; ri: "dk.ri"; rj: "dk.rj"; rk: "dk.rk"; rl: "dk.rl"; rm: "dk.rm"; rn: "dk.rn"; ro: "dk.ro"; rp: "dk.rp"; rq: "dk.rq"; rr: "dk.rr"; rs: "dk.rs"; rt: "dk.rt"; ru: "dk.ru"; rv: "dk.rv"; rw: "dk.rw"; rx: "dk.rx"; ry: "dk.ry"; rz: "dk.rz"; sa: "dk.sa"; sb: "dk.sb"; sc: "dk.sc"; sd: "dk.sd"; se: "dk.se"; sf: "dk.sf"; sg: "dk.sg"; sh: "dk.sh"; si: "dk.si"; sj: "dk.sj"; sk: "dk.sk"; sl: "dk.sl"; sm: "dk.sm"; sn: "dk.sn"; so: "dk.so"; sp: "dk.sp"; sq: "dk.sq"; sr: "dk.sr"; ss: "dk.ss"; st: "dk.st"; su: "dk.su"; sv: "dk.sv"; sw: "dk.sw"; sx: "dk.sx"; sy: "dk.sy"; sz: "dk.sz"; ta: "dk.ta"; tb: "dk.tb"; tc: "dk.tc"; td: "dk.td"; te: "dk.te"; tf: "dk.tf"; tg: "dk.tg"; th: "dk.th"; ti: "dk.ti"; tj: "dk.tj"; tk: "dk.tk"; tl: "dk.tl"; tm: "dk.tm"; tn: "dk.tn"; to: "dk.to"; tp: "dk.tp"; tq: "dk.tq"; tr: "dk.tr"; ts: "dk.ts"; tt: "dk.tt"; tu: "dk.tu"; tv: "dk.tv"; tw: "dk.tw"; tx: "dk.tx"; ty: "dk.ty"; tz: "dk.tz"; ua: "dk.ua"; ub: "dk.ub"; uc: "dk.uc"; ud: "dk.ud"; ue: "dk.ue"; uf: "dk.uf"; ug: "dk.ug"; uh: "dk.uh"; ui: "dk.ui"; uj: "dk.uj"; uk: "dk.uk"; ul: "dk.ul"; um: "dk.um"; un: "dk.un"; uo: "dk.uo"; up: "dk.up"; uq: "dk.uq"; ur: "dk.ur"; us: "dk.us"; ut: "dk.ut"; uu: "dk.uu"; uv: "dk.uv"; uw: "dk.uw"; ux: "dk.ux"; uy: "dk.uy"; uz: "dk.uz"; va: "dk.va"; vb: "dk.vb"; vc: "dk.vc"; vd: "dk.vd"; ve: "dk.ve"; vf: "dk.vf"; vg: "dk.vg"; vh: "dk.vh"; vi: "dk.vi"; vj: "dk.vj"; vk: "dk.vk"; vl: "dk.vl"; vm: "dk.vm"; vn: "dk.vn"; vo: "dk.vo"; vp: "dk.vp"; vq: "dk.vq"; vr: "dk.vr"; vs: "dk.vs"; vt: "dk.vt"; vu: "dk.vu"; vv: "dk.vv"; vw: "dk.vw"; vx: "dk.vx"; vy: "dk.vy"; vz: "dk.vz"; wa: "dk.wa"; wb: "dk.wb"; wc: "dk.wc"; wd: "dk.wd"; we: "dk.we"; wf: "dk.wf"; wg: "dk.wg"; wh: "dk.wh"; wi: "dk.wi"; wj: "dk.wj"; wk: "dk.wk"; wl: "dk.wl"; wm: "dk.wm"; wn: "dk.wn"; wo: "dk.wo"; wp: "dk.wp"; wq: "dk.wq"; wr: "dk.wr"; ws: "dk.ws"; wt: "dk.wt"; wu: "dk.wu"; wv: "dk.wv"; ww: "dk.ww"; wx: "dk.wx"; wy: "dk.wy"; wz: "dk.wz"; xa: "dk.xa"; xb: "dk.xb"; xc: "dk.xc"; xd: "dk.xd"; xe: "dk.xe"; xf: "dk.xf"; xg: "dk.xg"; xh: "dk.xh"; xi: "dk.xi"; xj: "dk.xj"; xk: "dk.xk"; xl: "dk.xl"; xm: "dk.xm"; xn: "dk.xn"; xo: "dk.xo"; xp: "dk.xp"; xq: "dk.xq"; xr: "dk.xr"; xs: "dk.xs"; xt: "dk.xt"; xu: "dk.xu"; xv: "dk.xv"; xw: "dk.xw"; xx: "dk.xx"; xy: "dk.xy"; xz: "dk.xz"; ya: "dk.ya"; yb: "dk.yb"; yc: "dk.yc"; yd: "dk.yd"; ye: "dk.ye"; yf: "dk.yf"; yg: "dk.yg"; yh: "dk.yh"; yi: "dk.yi"; yj: "dk.yj"; yk: "dk.yk"; yl: "dk.yl"; ym: "dk.ym"; yn: "dk.yn"; yo: "dk.yo"; yp: "dk.yp"; yq: "dk.yq"; yr: "dk.yr"; ys: "dk.ys"; yt: "dk.yt"; yu: "dk.yu"; yv: "dk.yv"; yw: "dk.yw"; yx: "dk.yx"; yy: "dk.yy"; yz: "dk.yz"; za: "dk.za"; zb: "dk.zb"; zc: "dk.zc"; zd: "dk.zd"; ze: "dk.ze"; zf: "dk.zf"; zg: "dk.zg"; zh: "dk.zh"; zi: "dk.zi"; zj: "dk.zj"; zk: "dk.zk"; zl: "dk.zl"; zm: "dk.zm"; zn: "dk.zn"; zo: "dk.zo"; zp: "dk.zp"; zq: "dk.zq"; zr: "dk.zr"; zs: "dk.zs"; zt: "dk.zt"; zu: "dk.zu"; zv: "dk.zv"; zw: "dk.zw"; zx: "dk.zx"; zy: "dk.zy"; zz: "dk.zz"; }; dl: { aa: "dl.aa"; ab: "dl.ab"; ac: "dl.ac"; ad: "dl.ad"; ae: "dl.ae"; af: "dl.af"; ag: "dl.ag"; ah: "dl.ah"; ai: "dl.ai"; aj: "dl.aj"; ak: "dl.ak"; al: "dl.al"; am: "dl.am"; an: "dl.an"; ao: "dl.ao"; ap: "dl.ap"; aq: "dl.aq"; ar: "dl.ar"; as: "dl.as"; at: "dl.at"; au: "dl.au"; av: "dl.av"; aw: "dl.aw"; ax: "dl.ax"; ay: "dl.ay"; az: "dl.az"; ba: "dl.ba"; bb: "dl.bb"; bc: "dl.bc"; bd: "dl.bd"; be: "dl.be"; bf: "dl.bf"; bg: "dl.bg"; bh: "dl.bh"; bi: "dl.bi"; bj: "dl.bj"; bk: "dl.bk"; bl: "dl.bl"; bm: "dl.bm"; bn: "dl.bn"; bo: "dl.bo"; bp: "dl.bp"; bq: "dl.bq"; br: "dl.br"; bs: "dl.bs"; bt: "dl.bt"; bu: "dl.bu"; bv: "dl.bv"; bw: "dl.bw"; bx: "dl.bx"; by: "dl.by"; bz: "dl.bz"; ca: "dl.ca"; cb: "dl.cb"; cc: "dl.cc"; cd: "dl.cd"; ce: "dl.ce"; cf: "dl.cf"; cg: "dl.cg"; ch: "dl.ch"; ci: "dl.ci"; cj: "dl.cj"; ck: "dl.ck"; cl: "dl.cl"; cm: "dl.cm"; cn: "dl.cn"; co: "dl.co"; cp: "dl.cp"; cq: "dl.cq"; cr: "dl.cr"; cs: "dl.cs"; ct: "dl.ct"; cu: "dl.cu"; cv: "dl.cv"; cw: "dl.cw"; cx: "dl.cx"; cy: "dl.cy"; cz: "dl.cz"; da: "dl.da"; db: "dl.db"; dc: "dl.dc"; dd: "dl.dd"; de: "dl.de"; df: "dl.df"; dg: "dl.dg"; dh: "dl.dh"; di: "dl.di"; dj: "dl.dj"; dk: "dl.dk"; dl: "dl.dl"; dm: "dl.dm"; dn: "dl.dn"; do: "dl.do"; dp: "dl.dp"; dq: "dl.dq"; dr: "dl.dr"; ds: "dl.ds"; dt: "dl.dt"; du: "dl.du"; dv: "dl.dv"; dw: "dl.dw"; dx: "dl.dx"; dy: "dl.dy"; dz: "dl.dz"; ea: "dl.ea"; eb: "dl.eb"; ec: "dl.ec"; ed: "dl.ed"; ee: "dl.ee"; ef: "dl.ef"; eg: "dl.eg"; eh: "dl.eh"; ei: "dl.ei"; ej: "dl.ej"; ek: "dl.ek"; el: "dl.el"; em: "dl.em"; en: "dl.en"; eo: "dl.eo"; ep: "dl.ep"; eq: "dl.eq"; er: "dl.er"; es: "dl.es"; et: "dl.et"; eu: "dl.eu"; ev: "dl.ev"; ew: "dl.ew"; ex: "dl.ex"; ey: "dl.ey"; ez: "dl.ez"; fa: "dl.fa"; fb: "dl.fb"; fc: "dl.fc"; fd: "dl.fd"; fe: "dl.fe"; ff: "dl.ff"; fg: "dl.fg"; fh: "dl.fh"; fi: "dl.fi"; fj: "dl.fj"; fk: "dl.fk"; fl: "dl.fl"; fm: "dl.fm"; fn: "dl.fn"; fo: "dl.fo"; fp: "dl.fp"; fq: "dl.fq"; fr: "dl.fr"; fs: "dl.fs"; ft: "dl.ft"; fu: "dl.fu"; fv: "dl.fv"; fw: "dl.fw"; fx: "dl.fx"; fy: "dl.fy"; fz: "dl.fz"; ga: "dl.ga"; gb: "dl.gb"; gc: "dl.gc"; gd: "dl.gd"; ge: "dl.ge"; gf: "dl.gf"; gg: "dl.gg"; gh: "dl.gh"; gi: "dl.gi"; gj: "dl.gj"; gk: "dl.gk"; gl: "dl.gl"; gm: "dl.gm"; gn: "dl.gn"; go: "dl.go"; gp: "dl.gp"; gq: "dl.gq"; gr: "dl.gr"; gs: "dl.gs"; gt: "dl.gt"; gu: "dl.gu"; gv: "dl.gv"; gw: "dl.gw"; gx: "dl.gx"; gy: "dl.gy"; gz: "dl.gz"; ha: "dl.ha"; hb: "dl.hb"; hc: "dl.hc"; hd: "dl.hd"; he: "dl.he"; hf: "dl.hf"; hg: "dl.hg"; hh: "dl.hh"; hi: "dl.hi"; hj: "dl.hj"; hk: "dl.hk"; hl: "dl.hl"; hm: "dl.hm"; hn: "dl.hn"; ho: "dl.ho"; hp: "dl.hp"; hq: "dl.hq"; hr: "dl.hr"; hs: "dl.hs"; ht: "dl.ht"; hu: "dl.hu"; hv: "dl.hv"; hw: "dl.hw"; hx: "dl.hx"; hy: "dl.hy"; hz: "dl.hz"; ia: "dl.ia"; ib: "dl.ib"; ic: "dl.ic"; id: "dl.id"; ie: "dl.ie"; if: "dl.if"; ig: "dl.ig"; ih: "dl.ih"; ii: "dl.ii"; ij: "dl.ij"; ik: "dl.ik"; il: "dl.il"; im: "dl.im"; in: "dl.in"; io: "dl.io"; ip: "dl.ip"; iq: "dl.iq"; ir: "dl.ir"; is: "dl.is"; it: "dl.it"; iu: "dl.iu"; iv: "dl.iv"; iw: "dl.iw"; ix: "dl.ix"; iy: "dl.iy"; iz: "dl.iz"; ja: "dl.ja"; jb: "dl.jb"; jc: "dl.jc"; jd: "dl.jd"; je: "dl.je"; jf: "dl.jf"; jg: "dl.jg"; jh: "dl.jh"; ji: "dl.ji"; jj: "dl.jj"; jk: "dl.jk"; jl: "dl.jl"; jm: "dl.jm"; jn: "dl.jn"; jo: "dl.jo"; jp: "dl.jp"; jq: "dl.jq"; jr: "dl.jr"; js: "dl.js"; jt: "dl.jt"; ju: "dl.ju"; jv: "dl.jv"; jw: "dl.jw"; jx: "dl.jx"; jy: "dl.jy"; jz: "dl.jz"; ka: "dl.ka"; kb: "dl.kb"; kc: "dl.kc"; kd: "dl.kd"; ke: "dl.ke"; kf: "dl.kf"; kg: "dl.kg"; kh: "dl.kh"; ki: "dl.ki"; kj: "dl.kj"; kk: "dl.kk"; kl: "dl.kl"; km: "dl.km"; kn: "dl.kn"; ko: "dl.ko"; kp: "dl.kp"; kq: "dl.kq"; kr: "dl.kr"; ks: "dl.ks"; kt: "dl.kt"; ku: "dl.ku"; kv: "dl.kv"; kw: "dl.kw"; kx: "dl.kx"; ky: "dl.ky"; kz: "dl.kz"; la: "dl.la"; lb: "dl.lb"; lc: "dl.lc"; ld: "dl.ld"; le: "dl.le"; lf: "dl.lf"; lg: "dl.lg"; lh: "dl.lh"; li: "dl.li"; lj: "dl.lj"; lk: "dl.lk"; ll: "dl.ll"; lm: "dl.lm"; ln: "dl.ln"; lo: "dl.lo"; lp: "dl.lp"; lq: "dl.lq"; lr: "dl.lr"; ls: "dl.ls"; lt: "dl.lt"; lu: "dl.lu"; lv: "dl.lv"; lw: "dl.lw"; lx: "dl.lx"; ly: "dl.ly"; lz: "dl.lz"; ma: "dl.ma"; mb: "dl.mb"; mc: "dl.mc"; md: "dl.md"; me: "dl.me"; mf: "dl.mf"; mg: "dl.mg"; mh: "dl.mh"; mi: "dl.mi"; mj: "dl.mj"; mk: "dl.mk"; ml: "dl.ml"; mm: "dl.mm"; mn: "dl.mn"; mo: "dl.mo"; mp: "dl.mp"; mq: "dl.mq"; mr: "dl.mr"; ms: "dl.ms"; mt: "dl.mt"; mu: "dl.mu"; mv: "dl.mv"; mw: "dl.mw"; mx: "dl.mx"; my: "dl.my"; mz: "dl.mz"; na: "dl.na"; nb: "dl.nb"; nc: "dl.nc"; nd: "dl.nd"; ne: "dl.ne"; nf: "dl.nf"; ng: "dl.ng"; nh: "dl.nh"; ni: "dl.ni"; nj: "dl.nj"; nk: "dl.nk"; nl: "dl.nl"; nm: "dl.nm"; nn: "dl.nn"; no: "dl.no"; np: "dl.np"; nq: "dl.nq"; nr: "dl.nr"; ns: "dl.ns"; nt: "dl.nt"; nu: "dl.nu"; nv: "dl.nv"; nw: "dl.nw"; nx: "dl.nx"; ny: "dl.ny"; nz: "dl.nz"; oa: "dl.oa"; ob: "dl.ob"; oc: "dl.oc"; od: "dl.od"; oe: "dl.oe"; of: "dl.of"; og: "dl.og"; oh: "dl.oh"; oi: "dl.oi"; oj: "dl.oj"; ok: "dl.ok"; ol: "dl.ol"; om: "dl.om"; on: "dl.on"; oo: "dl.oo"; op: "dl.op"; oq: "dl.oq"; or: "dl.or"; os: "dl.os"; ot: "dl.ot"; ou: "dl.ou"; ov: "dl.ov"; ow: "dl.ow"; ox: "dl.ox"; oy: "dl.oy"; oz: "dl.oz"; pa: "dl.pa"; pb: "dl.pb"; pc: "dl.pc"; pd: "dl.pd"; pe: "dl.pe"; pf: "dl.pf"; pg: "dl.pg"; ph: "dl.ph"; pi: "dl.pi"; pj: "dl.pj"; pk: "dl.pk"; pl: "dl.pl"; pm: "dl.pm"; pn: "dl.pn"; po: "dl.po"; pp: "dl.pp"; pq: "dl.pq"; pr: "dl.pr"; ps: "dl.ps"; pt: "dl.pt"; pu: "dl.pu"; pv: "dl.pv"; pw: "dl.pw"; px: "dl.px"; py: "dl.py"; pz: "dl.pz"; qa: "dl.qa"; qb: "dl.qb"; qc: "dl.qc"; qd: "dl.qd"; qe: "dl.qe"; qf: "dl.qf"; qg: "dl.qg"; qh: "dl.qh"; qi: "dl.qi"; qj: "dl.qj"; qk: "dl.qk"; ql: "dl.ql"; qm: "dl.qm"; qn: "dl.qn"; qo: "dl.qo"; qp: "dl.qp"; qq: "dl.qq"; qr: "dl.qr"; qs: "dl.qs"; qt: "dl.qt"; qu: "dl.qu"; qv: "dl.qv"; qw: "dl.qw"; qx: "dl.qx"; qy: "dl.qy"; qz: "dl.qz"; ra: "dl.ra"; rb: "dl.rb"; rc: "dl.rc"; rd: "dl.rd"; re: "dl.re"; rf: "dl.rf"; rg: "dl.rg"; rh: "dl.rh"; ri: "dl.ri"; rj: "dl.rj"; rk: "dl.rk"; rl: "dl.rl"; rm: "dl.rm"; rn: "dl.rn"; ro: "dl.ro"; rp: "dl.rp"; rq: "dl.rq"; rr: "dl.rr"; rs: "dl.rs"; rt: "dl.rt"; ru: "dl.ru"; rv: "dl.rv"; rw: "dl.rw"; rx: "dl.rx"; ry: "dl.ry"; rz: "dl.rz"; sa: "dl.sa"; sb: "dl.sb"; sc: "dl.sc"; sd: "dl.sd"; se: "dl.se"; sf: "dl.sf"; sg: "dl.sg"; sh: "dl.sh"; si: "dl.si"; sj: "dl.sj"; sk: "dl.sk"; sl: "dl.sl"; sm: "dl.sm"; sn: "dl.sn"; so: "dl.so"; sp: "dl.sp"; sq: "dl.sq"; sr: "dl.sr"; ss: "dl.ss"; st: "dl.st"; su: "dl.su"; sv: "dl.sv"; sw: "dl.sw"; sx: "dl.sx"; sy: "dl.sy"; sz: "dl.sz"; ta: "dl.ta"; tb: "dl.tb"; tc: "dl.tc"; td: "dl.td"; te: "dl.te"; tf: "dl.tf"; tg: "dl.tg"; th: "dl.th"; ti: "dl.ti"; tj: "dl.tj"; tk: "dl.tk"; tl: "dl.tl"; tm: "dl.tm"; tn: "dl.tn"; to: "dl.to"; tp: "dl.tp"; tq: "dl.tq"; tr: "dl.tr"; ts: "dl.ts"; tt: "dl.tt"; tu: "dl.tu"; tv: "dl.tv"; tw: "dl.tw"; tx: "dl.tx"; ty: "dl.ty"; tz: "dl.tz"; ua: "dl.ua"; ub: "dl.ub"; uc: "dl.uc"; ud: "dl.ud"; ue: "dl.ue"; uf: "dl.uf"; ug: "dl.ug"; uh: "dl.uh"; ui: "dl.ui"; uj: "dl.uj"; uk: "dl.uk"; ul: "dl.ul"; um: "dl.um"; un: "dl.un"; uo: "dl.uo"; up: "dl.up"; uq: "dl.uq"; ur: "dl.ur"; us: "dl.us"; ut: "dl.ut"; uu: "dl.uu"; uv: "dl.uv"; uw: "dl.uw"; ux: "dl.ux"; uy: "dl.uy"; uz: "dl.uz"; va: "dl.va"; vb: "dl.vb"; vc: "dl.vc"; vd: "dl.vd"; ve: "dl.ve"; vf: "dl.vf"; vg: "dl.vg"; vh: "dl.vh"; vi: "dl.vi"; vj: "dl.vj"; vk: "dl.vk"; vl: "dl.vl"; vm: "dl.vm"; vn: "dl.vn"; vo: "dl.vo"; vp: "dl.vp"; vq: "dl.vq"; vr: "dl.vr"; vs: "dl.vs"; vt: "dl.vt"; vu: "dl.vu"; vv: "dl.vv"; vw: "dl.vw"; vx: "dl.vx"; vy: "dl.vy"; vz: "dl.vz"; wa: "dl.wa"; wb: "dl.wb"; wc: "dl.wc"; wd: "dl.wd"; we: "dl.we"; wf: "dl.wf"; wg: "dl.wg"; wh: "dl.wh"; wi: "dl.wi"; wj: "dl.wj"; wk: "dl.wk"; wl: "dl.wl"; wm: "dl.wm"; wn: "dl.wn"; wo: "dl.wo"; wp: "dl.wp"; wq: "dl.wq"; wr: "dl.wr"; ws: "dl.ws"; wt: "dl.wt"; wu: "dl.wu"; wv: "dl.wv"; ww: "dl.ww"; wx: "dl.wx"; wy: "dl.wy"; wz: "dl.wz"; xa: "dl.xa"; xb: "dl.xb"; xc: "dl.xc"; xd: "dl.xd"; xe: "dl.xe"; xf: "dl.xf"; xg: "dl.xg"; xh: "dl.xh"; xi: "dl.xi"; xj: "dl.xj"; xk: "dl.xk"; xl: "dl.xl"; xm: "dl.xm"; xn: "dl.xn"; xo: "dl.xo"; xp: "dl.xp"; xq: "dl.xq"; xr: "dl.xr"; xs: "dl.xs"; xt: "dl.xt"; xu: "dl.xu"; xv: "dl.xv"; xw: "dl.xw"; xx: "dl.xx"; xy: "dl.xy"; xz: "dl.xz"; ya: "dl.ya"; yb: "dl.yb"; yc: "dl.yc"; yd: "dl.yd"; ye: "dl.ye"; yf: "dl.yf"; yg: "dl.yg"; yh: "dl.yh"; yi: "dl.yi"; yj: "dl.yj"; yk: "dl.yk"; yl: "dl.yl"; ym: "dl.ym"; yn: "dl.yn"; yo: "dl.yo"; yp: "dl.yp"; yq: "dl.yq"; yr: "dl.yr"; ys: "dl.ys"; yt: "dl.yt"; yu: "dl.yu"; yv: "dl.yv"; yw: "dl.yw"; yx: "dl.yx"; yy: "dl.yy"; yz: "dl.yz"; za: "dl.za"; zb: "dl.zb"; zc: "dl.zc"; zd: "dl.zd"; ze: "dl.ze"; zf: "dl.zf"; zg: "dl.zg"; zh: "dl.zh"; zi: "dl.zi"; zj: "dl.zj"; zk: "dl.zk"; zl: "dl.zl"; zm: "dl.zm"; zn: "dl.zn"; zo: "dl.zo"; zp: "dl.zp"; zq: "dl.zq"; zr: "dl.zr"; zs: "dl.zs"; zt: "dl.zt"; zu: "dl.zu"; zv: "dl.zv"; zw: "dl.zw"; zx: "dl.zx"; zy: "dl.zy"; zz: "dl.zz"; }; dm: { aa: "dm.aa"; ab: "dm.ab"; ac: "dm.ac"; ad: "dm.ad"; ae: "dm.ae"; af: "dm.af"; ag: "dm.ag"; ah: "dm.ah"; ai: "dm.ai"; aj: "dm.aj"; ak: "dm.ak"; al: "dm.al"; am: "dm.am"; an: "dm.an"; ao: "dm.ao"; ap: "dm.ap"; aq: "dm.aq"; ar: "dm.ar"; as: "dm.as"; at: "dm.at"; au: "dm.au"; av: "dm.av"; aw: "dm.aw"; ax: "dm.ax"; ay: "dm.ay"; az: "dm.az"; ba: "dm.ba"; bb: "dm.bb"; bc: "dm.bc"; bd: "dm.bd"; be: "dm.be"; bf: "dm.bf"; bg: "dm.bg"; bh: "dm.bh"; bi: "dm.bi"; bj: "dm.bj"; bk: "dm.bk"; bl: "dm.bl"; bm: "dm.bm"; bn: "dm.bn"; bo: "dm.bo"; bp: "dm.bp"; bq: "dm.bq"; br: "dm.br"; bs: "dm.bs"; bt: "dm.bt"; bu: "dm.bu"; bv: "dm.bv"; bw: "dm.bw"; bx: "dm.bx"; by: "dm.by"; bz: "dm.bz"; ca: "dm.ca"; cb: "dm.cb"; cc: "dm.cc"; cd: "dm.cd"; ce: "dm.ce"; cf: "dm.cf"; cg: "dm.cg"; ch: "dm.ch"; ci: "dm.ci"; cj: "dm.cj"; ck: "dm.ck"; cl: "dm.cl"; cm: "dm.cm"; cn: "dm.cn"; co: "dm.co"; cp: "dm.cp"; cq: "dm.cq"; cr: "dm.cr"; cs: "dm.cs"; ct: "dm.ct"; cu: "dm.cu"; cv: "dm.cv"; cw: "dm.cw"; cx: "dm.cx"; cy: "dm.cy"; cz: "dm.cz"; da: "dm.da"; db: "dm.db"; dc: "dm.dc"; dd: "dm.dd"; de: "dm.de"; df: "dm.df"; dg: "dm.dg"; dh: "dm.dh"; di: "dm.di"; dj: "dm.dj"; dk: "dm.dk"; dl: "dm.dl"; dm: "dm.dm"; dn: "dm.dn"; do: "dm.do"; dp: "dm.dp"; dq: "dm.dq"; dr: "dm.dr"; ds: "dm.ds"; dt: "dm.dt"; du: "dm.du"; dv: "dm.dv"; dw: "dm.dw"; dx: "dm.dx"; dy: "dm.dy"; dz: "dm.dz"; ea: "dm.ea"; eb: "dm.eb"; ec: "dm.ec"; ed: "dm.ed"; ee: "dm.ee"; ef: "dm.ef"; eg: "dm.eg"; eh: "dm.eh"; ei: "dm.ei"; ej: "dm.ej"; ek: "dm.ek"; el: "dm.el"; em: "dm.em"; en: "dm.en"; eo: "dm.eo"; ep: "dm.ep"; eq: "dm.eq"; er: "dm.er"; es: "dm.es"; et: "dm.et"; eu: "dm.eu"; ev: "dm.ev"; ew: "dm.ew"; ex: "dm.ex"; ey: "dm.ey"; ez: "dm.ez"; fa: "dm.fa"; fb: "dm.fb"; fc: "dm.fc"; fd: "dm.fd"; fe: "dm.fe"; ff: "dm.ff"; fg: "dm.fg"; fh: "dm.fh"; fi: "dm.fi"; fj: "dm.fj"; fk: "dm.fk"; fl: "dm.fl"; fm: "dm.fm"; fn: "dm.fn"; fo: "dm.fo"; fp: "dm.fp"; fq: "dm.fq"; fr: "dm.fr"; fs: "dm.fs"; ft: "dm.ft"; fu: "dm.fu"; fv: "dm.fv"; fw: "dm.fw"; fx: "dm.fx"; fy: "dm.fy"; fz: "dm.fz"; ga: "dm.ga"; gb: "dm.gb"; gc: "dm.gc"; gd: "dm.gd"; ge: "dm.ge"; gf: "dm.gf"; gg: "dm.gg"; gh: "dm.gh"; gi: "dm.gi"; gj: "dm.gj"; gk: "dm.gk"; gl: "dm.gl"; gm: "dm.gm"; gn: "dm.gn"; go: "dm.go"; gp: "dm.gp"; gq: "dm.gq"; gr: "dm.gr"; gs: "dm.gs"; gt: "dm.gt"; gu: "dm.gu"; gv: "dm.gv"; gw: "dm.gw"; gx: "dm.gx"; gy: "dm.gy"; gz: "dm.gz"; ha: "dm.ha"; hb: "dm.hb"; hc: "dm.hc"; hd: "dm.hd"; he: "dm.he"; hf: "dm.hf"; hg: "dm.hg"; hh: "dm.hh"; hi: "dm.hi"; hj: "dm.hj"; hk: "dm.hk"; hl: "dm.hl"; hm: "dm.hm"; hn: "dm.hn"; ho: "dm.ho"; hp: "dm.hp"; hq: "dm.hq"; hr: "dm.hr"; hs: "dm.hs"; ht: "dm.ht"; hu: "dm.hu"; hv: "dm.hv"; hw: "dm.hw"; hx: "dm.hx"; hy: "dm.hy"; hz: "dm.hz"; ia: "dm.ia"; ib: "dm.ib"; ic: "dm.ic"; id: "dm.id"; ie: "dm.ie"; if: "dm.if"; ig: "dm.ig"; ih: "dm.ih"; ii: "dm.ii"; ij: "dm.ij"; ik: "dm.ik"; il: "dm.il"; im: "dm.im"; in: "dm.in"; io: "dm.io"; ip: "dm.ip"; iq: "dm.iq"; ir: "dm.ir"; is: "dm.is"; it: "dm.it"; iu: "dm.iu"; iv: "dm.iv"; iw: "dm.iw"; ix: "dm.ix"; iy: "dm.iy"; iz: "dm.iz"; ja: "dm.ja"; jb: "dm.jb"; jc: "dm.jc"; jd: "dm.jd"; je: "dm.je"; jf: "dm.jf"; jg: "dm.jg"; jh: "dm.jh"; ji: "dm.ji"; jj: "dm.jj"; jk: "dm.jk"; jl: "dm.jl"; jm: "dm.jm"; jn: "dm.jn"; jo: "dm.jo"; jp: "dm.jp"; jq: "dm.jq"; jr: "dm.jr"; js: "dm.js"; jt: "dm.jt"; ju: "dm.ju"; jv: "dm.jv"; jw: "dm.jw"; jx: "dm.jx"; jy: "dm.jy"; jz: "dm.jz"; ka: "dm.ka"; kb: "dm.kb"; kc: "dm.kc"; kd: "dm.kd"; ke: "dm.ke"; kf: "dm.kf"; kg: "dm.kg"; kh: "dm.kh"; ki: "dm.ki"; kj: "dm.kj"; kk: "dm.kk"; kl: "dm.kl"; km: "dm.km"; kn: "dm.kn"; ko: "dm.ko"; kp: "dm.kp"; kq: "dm.kq"; kr: "dm.kr"; ks: "dm.ks"; kt: "dm.kt"; ku: "dm.ku"; kv: "dm.kv"; kw: "dm.kw"; kx: "dm.kx"; ky: "dm.ky"; kz: "dm.kz"; la: "dm.la"; lb: "dm.lb"; lc: "dm.lc"; ld: "dm.ld"; le: "dm.le"; lf: "dm.lf"; lg: "dm.lg"; lh: "dm.lh"; li: "dm.li"; lj: "dm.lj"; lk: "dm.lk"; ll: "dm.ll"; lm: "dm.lm"; ln: "dm.ln"; lo: "dm.lo"; lp: "dm.lp"; lq: "dm.lq"; lr: "dm.lr"; ls: "dm.ls"; lt: "dm.lt"; lu: "dm.lu"; lv: "dm.lv"; lw: "dm.lw"; lx: "dm.lx"; ly: "dm.ly"; lz: "dm.lz"; ma: "dm.ma"; mb: "dm.mb"; mc: "dm.mc"; md: "dm.md"; me: "dm.me"; mf: "dm.mf"; mg: "dm.mg"; mh: "dm.mh"; mi: "dm.mi"; mj: "dm.mj"; mk: "dm.mk"; ml: "dm.ml"; mm: "dm.mm"; mn: "dm.mn"; mo: "dm.mo"; mp: "dm.mp"; mq: "dm.mq"; mr: "dm.mr"; ms: "dm.ms"; mt: "dm.mt"; mu: "dm.mu"; mv: "dm.mv"; mw: "dm.mw"; mx: "dm.mx"; my: "dm.my"; mz: "dm.mz"; na: "dm.na"; nb: "dm.nb"; nc: "dm.nc"; nd: "dm.nd"; ne: "dm.ne"; nf: "dm.nf"; ng: "dm.ng"; nh: "dm.nh"; ni: "dm.ni"; nj: "dm.nj"; nk: "dm.nk"; nl: "dm.nl"; nm: "dm.nm"; nn: "dm.nn"; no: "dm.no"; np: "dm.np"; nq: "dm.nq"; nr: "dm.nr"; ns: "dm.ns"; nt: "dm.nt"; nu: "dm.nu"; nv: "dm.nv"; nw: "dm.nw"; nx: "dm.nx"; ny: "dm.ny"; nz: "dm.nz"; oa: "dm.oa"; ob: "dm.ob"; oc: "dm.oc"; od: "dm.od"; oe: "dm.oe"; of: "dm.of"; og: "dm.og"; oh: "dm.oh"; oi: "dm.oi"; oj: "dm.oj"; ok: "dm.ok"; ol: "dm.ol"; om: "dm.om"; on: "dm.on"; oo: "dm.oo"; op: "dm.op"; oq: "dm.oq"; or: "dm.or"; os: "dm.os"; ot: "dm.ot"; ou: "dm.ou"; ov: "dm.ov"; ow: "dm.ow"; ox: "dm.ox"; oy: "dm.oy"; oz: "dm.oz"; pa: "dm.pa"; pb: "dm.pb"; pc: "dm.pc"; pd: "dm.pd"; pe: "dm.pe"; pf: "dm.pf"; pg: "dm.pg"; ph: "dm.ph"; pi: "dm.pi"; pj: "dm.pj"; pk: "dm.pk"; pl: "dm.pl"; pm: "dm.pm"; pn: "dm.pn"; po: "dm.po"; pp: "dm.pp"; pq: "dm.pq"; pr: "dm.pr"; ps: "dm.ps"; pt: "dm.pt"; pu: "dm.pu"; pv: "dm.pv"; pw: "dm.pw"; px: "dm.px"; py: "dm.py"; pz: "dm.pz"; qa: "dm.qa"; qb: "dm.qb"; qc: "dm.qc"; qd: "dm.qd"; qe: "dm.qe"; qf: "dm.qf"; qg: "dm.qg"; qh: "dm.qh"; qi: "dm.qi"; qj: "dm.qj"; qk: "dm.qk"; ql: "dm.ql"; qm: "dm.qm"; qn: "dm.qn"; qo: "dm.qo"; qp: "dm.qp"; qq: "dm.qq"; qr: "dm.qr"; qs: "dm.qs"; qt: "dm.qt"; qu: "dm.qu"; qv: "dm.qv"; qw: "dm.qw"; qx: "dm.qx"; qy: "dm.qy"; qz: "dm.qz"; ra: "dm.ra"; rb: "dm.rb"; rc: "dm.rc"; rd: "dm.rd"; re: "dm.re"; rf: "dm.rf"; rg: "dm.rg"; rh: "dm.rh"; ri: "dm.ri"; rj: "dm.rj"; rk: "dm.rk"; rl: "dm.rl"; rm: "dm.rm"; rn: "dm.rn"; ro: "dm.ro"; rp: "dm.rp"; rq: "dm.rq"; rr: "dm.rr"; rs: "dm.rs"; rt: "dm.rt"; ru: "dm.ru"; rv: "dm.rv"; rw: "dm.rw"; rx: "dm.rx"; ry: "dm.ry"; rz: "dm.rz"; sa: "dm.sa"; sb: "dm.sb"; sc: "dm.sc"; sd: "dm.sd"; se: "dm.se"; sf: "dm.sf"; sg: "dm.sg"; sh: "dm.sh"; si: "dm.si"; sj: "dm.sj"; sk: "dm.sk"; sl: "dm.sl"; sm: "dm.sm"; sn: "dm.sn"; so: "dm.so"; sp: "dm.sp"; sq: "dm.sq"; sr: "dm.sr"; ss: "dm.ss"; st: "dm.st"; su: "dm.su"; sv: "dm.sv"; sw: "dm.sw"; sx: "dm.sx"; sy: "dm.sy"; sz: "dm.sz"; ta: "dm.ta"; tb: "dm.tb"; tc: "dm.tc"; td: "dm.td"; te: "dm.te"; tf: "dm.tf"; tg: "dm.tg"; th: "dm.th"; ti: "dm.ti"; tj: "dm.tj"; tk: "dm.tk"; tl: "dm.tl"; tm: "dm.tm"; tn: "dm.tn"; to: "dm.to"; tp: "dm.tp"; tq: "dm.tq"; tr: "dm.tr"; ts: "dm.ts"; tt: "dm.tt"; tu: "dm.tu"; tv: "dm.tv"; tw: "dm.tw"; tx: "dm.tx"; ty: "dm.ty"; tz: "dm.tz"; ua: "dm.ua"; ub: "dm.ub"; uc: "dm.uc"; ud: "dm.ud"; ue: "dm.ue"; uf: "dm.uf"; ug: "dm.ug"; uh: "dm.uh"; ui: "dm.ui"; uj: "dm.uj"; uk: "dm.uk"; ul: "dm.ul"; um: "dm.um"; un: "dm.un"; uo: "dm.uo"; up: "dm.up"; uq: "dm.uq"; ur: "dm.ur"; us: "dm.us"; ut: "dm.ut"; uu: "dm.uu"; uv: "dm.uv"; uw: "dm.uw"; ux: "dm.ux"; uy: "dm.uy"; uz: "dm.uz"; va: "dm.va"; vb: "dm.vb"; vc: "dm.vc"; vd: "dm.vd"; ve: "dm.ve"; vf: "dm.vf"; vg: "dm.vg"; vh: "dm.vh"; vi: "dm.vi"; vj: "dm.vj"; vk: "dm.vk"; vl: "dm.vl"; vm: "dm.vm"; vn: "dm.vn"; vo: "dm.vo"; vp: "dm.vp"; vq: "dm.vq"; vr: "dm.vr"; vs: "dm.vs"; vt: "dm.vt"; vu: "dm.vu"; vv: "dm.vv"; vw: "dm.vw"; vx: "dm.vx"; vy: "dm.vy"; vz: "dm.vz"; wa: "dm.wa"; wb: "dm.wb"; wc: "dm.wc"; wd: "dm.wd"; we: "dm.we"; wf: "dm.wf"; wg: "dm.wg"; wh: "dm.wh"; wi: "dm.wi"; wj: "dm.wj"; wk: "dm.wk"; wl: "dm.wl"; wm: "dm.wm"; wn: "dm.wn"; wo: "dm.wo"; wp: "dm.wp"; wq: "dm.wq"; wr: "dm.wr"; ws: "dm.ws"; wt: "dm.wt"; wu: "dm.wu"; wv: "dm.wv"; ww: "dm.ww"; wx: "dm.wx"; wy: "dm.wy"; wz: "dm.wz"; xa: "dm.xa"; xb: "dm.xb"; xc: "dm.xc"; xd: "dm.xd"; xe: "dm.xe"; xf: "dm.xf"; xg: "dm.xg"; xh: "dm.xh"; xi: "dm.xi"; xj: "dm.xj"; xk: "dm.xk"; xl: "dm.xl"; xm: "dm.xm"; xn: "dm.xn"; xo: "dm.xo"; xp: "dm.xp"; xq: "dm.xq"; xr: "dm.xr"; xs: "dm.xs"; xt: "dm.xt"; xu: "dm.xu"; xv: "dm.xv"; xw: "dm.xw"; xx: "dm.xx"; xy: "dm.xy"; xz: "dm.xz"; ya: "dm.ya"; yb: "dm.yb"; yc: "dm.yc"; yd: "dm.yd"; ye: "dm.ye"; yf: "dm.yf"; yg: "dm.yg"; yh: "dm.yh"; yi: "dm.yi"; yj: "dm.yj"; yk: "dm.yk"; yl: "dm.yl"; ym: "dm.ym"; yn: "dm.yn"; yo: "dm.yo"; yp: "dm.yp"; yq: "dm.yq"; yr: "dm.yr"; ys: "dm.ys"; yt: "dm.yt"; yu: "dm.yu"; yv: "dm.yv"; yw: "dm.yw"; yx: "dm.yx"; yy: "dm.yy"; yz: "dm.yz"; za: "dm.za"; zb: "dm.zb"; zc: "dm.zc"; zd: "dm.zd"; ze: "dm.ze"; zf: "dm.zf"; zg: "dm.zg"; zh: "dm.zh"; zi: "dm.zi"; zj: "dm.zj"; zk: "dm.zk"; zl: "dm.zl"; zm: "dm.zm"; zn: "dm.zn"; zo: "dm.zo"; zp: "dm.zp"; zq: "dm.zq"; zr: "dm.zr"; zs: "dm.zs"; zt: "dm.zt"; zu: "dm.zu"; zv: "dm.zv"; zw: "dm.zw"; zx: "dm.zx"; zy: "dm.zy"; zz: "dm.zz"; }; dn: { aa: "dn.aa"; ab: "dn.ab"; ac: "dn.ac"; ad: "dn.ad"; ae: "dn.ae"; af: "dn.af"; ag: "dn.ag"; ah: "dn.ah"; ai: "dn.ai"; aj: "dn.aj"; ak: "dn.ak"; al: "dn.al"; am: "dn.am"; an: "dn.an"; ao: "dn.ao"; ap: "dn.ap"; aq: "dn.aq"; ar: "dn.ar"; as: "dn.as"; at: "dn.at"; au: "dn.au"; av: "dn.av"; aw: "dn.aw"; ax: "dn.ax"; ay: "dn.ay"; az: "dn.az"; ba: "dn.ba"; bb: "dn.bb"; bc: "dn.bc"; bd: "dn.bd"; be: "dn.be"; bf: "dn.bf"; bg: "dn.bg"; bh: "dn.bh"; bi: "dn.bi"; bj: "dn.bj"; bk: "dn.bk"; bl: "dn.bl"; bm: "dn.bm"; bn: "dn.bn"; bo: "dn.bo"; bp: "dn.bp"; bq: "dn.bq"; br: "dn.br"; bs: "dn.bs"; bt: "dn.bt"; bu: "dn.bu"; bv: "dn.bv"; bw: "dn.bw"; bx: "dn.bx"; by: "dn.by"; bz: "dn.bz"; ca: "dn.ca"; cb: "dn.cb"; cc: "dn.cc"; cd: "dn.cd"; ce: "dn.ce"; cf: "dn.cf"; cg: "dn.cg"; ch: "dn.ch"; ci: "dn.ci"; cj: "dn.cj"; ck: "dn.ck"; cl: "dn.cl"; cm: "dn.cm"; cn: "dn.cn"; co: "dn.co"; cp: "dn.cp"; cq: "dn.cq"; cr: "dn.cr"; cs: "dn.cs"; ct: "dn.ct"; cu: "dn.cu"; cv: "dn.cv"; cw: "dn.cw"; cx: "dn.cx"; cy: "dn.cy"; cz: "dn.cz"; da: "dn.da"; db: "dn.db"; dc: "dn.dc"; dd: "dn.dd"; de: "dn.de"; df: "dn.df"; dg: "dn.dg"; dh: "dn.dh"; di: "dn.di"; dj: "dn.dj"; dk: "dn.dk"; dl: "dn.dl"; dm: "dn.dm"; dn: "dn.dn"; do: "dn.do"; dp: "dn.dp"; dq: "dn.dq"; dr: "dn.dr"; ds: "dn.ds"; dt: "dn.dt"; du: "dn.du"; dv: "dn.dv"; dw: "dn.dw"; dx: "dn.dx"; dy: "dn.dy"; dz: "dn.dz"; ea: "dn.ea"; eb: "dn.eb"; ec: "dn.ec"; ed: "dn.ed"; ee: "dn.ee"; ef: "dn.ef"; eg: "dn.eg"; eh: "dn.eh"; ei: "dn.ei"; ej: "dn.ej"; ek: "dn.ek"; el: "dn.el"; em: "dn.em"; en: "dn.en"; eo: "dn.eo"; ep: "dn.ep"; eq: "dn.eq"; er: "dn.er"; es: "dn.es"; et: "dn.et"; eu: "dn.eu"; ev: "dn.ev"; ew: "dn.ew"; ex: "dn.ex"; ey: "dn.ey"; ez: "dn.ez"; fa: "dn.fa"; fb: "dn.fb"; fc: "dn.fc"; fd: "dn.fd"; fe: "dn.fe"; ff: "dn.ff"; fg: "dn.fg"; fh: "dn.fh"; fi: "dn.fi"; fj: "dn.fj"; fk: "dn.fk"; fl: "dn.fl"; fm: "dn.fm"; fn: "dn.fn"; fo: "dn.fo"; fp: "dn.fp"; fq: "dn.fq"; fr: "dn.fr"; fs: "dn.fs"; ft: "dn.ft"; fu: "dn.fu"; fv: "dn.fv"; fw: "dn.fw"; fx: "dn.fx"; fy: "dn.fy"; fz: "dn.fz"; ga: "dn.ga"; gb: "dn.gb"; gc: "dn.gc"; gd: "dn.gd"; ge: "dn.ge"; gf: "dn.gf"; gg: "dn.gg"; gh: "dn.gh"; gi: "dn.gi"; gj: "dn.gj"; gk: "dn.gk"; gl: "dn.gl"; gm: "dn.gm"; gn: "dn.gn"; go: "dn.go"; gp: "dn.gp"; gq: "dn.gq"; gr: "dn.gr"; gs: "dn.gs"; gt: "dn.gt"; gu: "dn.gu"; gv: "dn.gv"; gw: "dn.gw"; gx: "dn.gx"; gy: "dn.gy"; gz: "dn.gz"; ha: "dn.ha"; hb: "dn.hb"; hc: "dn.hc"; hd: "dn.hd"; he: "dn.he"; hf: "dn.hf"; hg: "dn.hg"; hh: "dn.hh"; hi: "dn.hi"; hj: "dn.hj"; hk: "dn.hk"; hl: "dn.hl"; hm: "dn.hm"; hn: "dn.hn"; ho: "dn.ho"; hp: "dn.hp"; hq: "dn.hq"; hr: "dn.hr"; hs: "dn.hs"; ht: "dn.ht"; hu: "dn.hu"; hv: "dn.hv"; hw: "dn.hw"; hx: "dn.hx"; hy: "dn.hy"; hz: "dn.hz"; ia: "dn.ia"; ib: "dn.ib"; ic: "dn.ic"; id: "dn.id"; ie: "dn.ie"; if: "dn.if"; ig: "dn.ig"; ih: "dn.ih"; ii: "dn.ii"; ij: "dn.ij"; ik: "dn.ik"; il: "dn.il"; im: "dn.im"; in: "dn.in"; io: "dn.io"; ip: "dn.ip"; iq: "dn.iq"; ir: "dn.ir"; is: "dn.is"; it: "dn.it"; iu: "dn.iu"; iv: "dn.iv"; iw: "dn.iw"; ix: "dn.ix"; iy: "dn.iy"; iz: "dn.iz"; ja: "dn.ja"; jb: "dn.jb"; jc: "dn.jc"; jd: "dn.jd"; je: "dn.je"; jf: "dn.jf"; jg: "dn.jg"; jh: "dn.jh"; ji: "dn.ji"; jj: "dn.jj"; jk: "dn.jk"; jl: "dn.jl"; jm: "dn.jm"; jn: "dn.jn"; jo: "dn.jo"; jp: "dn.jp"; jq: "dn.jq"; jr: "dn.jr"; js: "dn.js"; jt: "dn.jt"; ju: "dn.ju"; jv: "dn.jv"; jw: "dn.jw"; jx: "dn.jx"; jy: "dn.jy"; jz: "dn.jz"; ka: "dn.ka"; kb: "dn.kb"; kc: "dn.kc"; kd: "dn.kd"; ke: "dn.ke"; kf: "dn.kf"; kg: "dn.kg"; kh: "dn.kh"; ki: "dn.ki"; kj: "dn.kj"; kk: "dn.kk"; kl: "dn.kl"; km: "dn.km"; kn: "dn.kn"; ko: "dn.ko"; kp: "dn.kp"; kq: "dn.kq"; kr: "dn.kr"; ks: "dn.ks"; kt: "dn.kt"; ku: "dn.ku"; kv: "dn.kv"; kw: "dn.kw"; kx: "dn.kx"; ky: "dn.ky"; kz: "dn.kz"; la: "dn.la"; lb: "dn.lb"; lc: "dn.lc"; ld: "dn.ld"; le: "dn.le"; lf: "dn.lf"; lg: "dn.lg"; lh: "dn.lh"; li: "dn.li"; lj: "dn.lj"; lk: "dn.lk"; ll: "dn.ll"; lm: "dn.lm"; ln: "dn.ln"; lo: "dn.lo"; lp: "dn.lp"; lq: "dn.lq"; lr: "dn.lr"; ls: "dn.ls"; lt: "dn.lt"; lu: "dn.lu"; lv: "dn.lv"; lw: "dn.lw"; lx: "dn.lx"; ly: "dn.ly"; lz: "dn.lz"; ma: "dn.ma"; mb: "dn.mb"; mc: "dn.mc"; md: "dn.md"; me: "dn.me"; mf: "dn.mf"; mg: "dn.mg"; mh: "dn.mh"; mi: "dn.mi"; mj: "dn.mj"; mk: "dn.mk"; ml: "dn.ml"; mm: "dn.mm"; mn: "dn.mn"; mo: "dn.mo"; mp: "dn.mp"; mq: "dn.mq"; mr: "dn.mr"; ms: "dn.ms"; mt: "dn.mt"; mu: "dn.mu"; mv: "dn.mv"; mw: "dn.mw"; mx: "dn.mx"; my: "dn.my"; mz: "dn.mz"; na: "dn.na"; nb: "dn.nb"; nc: "dn.nc"; nd: "dn.nd"; ne: "dn.ne"; nf: "dn.nf"; ng: "dn.ng"; nh: "dn.nh"; ni: "dn.ni"; nj: "dn.nj"; nk: "dn.nk"; nl: "dn.nl"; nm: "dn.nm"; nn: "dn.nn"; no: "dn.no"; np: "dn.np"; nq: "dn.nq"; nr: "dn.nr"; ns: "dn.ns"; nt: "dn.nt"; nu: "dn.nu"; nv: "dn.nv"; nw: "dn.nw"; nx: "dn.nx"; ny: "dn.ny"; nz: "dn.nz"; oa: "dn.oa"; ob: "dn.ob"; oc: "dn.oc"; od: "dn.od"; oe: "dn.oe"; of: "dn.of"; og: "dn.og"; oh: "dn.oh"; oi: "dn.oi"; oj: "dn.oj"; ok: "dn.ok"; ol: "dn.ol"; om: "dn.om"; on: "dn.on"; oo: "dn.oo"; op: "dn.op"; oq: "dn.oq"; or: "dn.or"; os: "dn.os"; ot: "dn.ot"; ou: "dn.ou"; ov: "dn.ov"; ow: "dn.ow"; ox: "dn.ox"; oy: "dn.oy"; oz: "dn.oz"; pa: "dn.pa"; pb: "dn.pb"; pc: "dn.pc"; pd: "dn.pd"; pe: "dn.pe"; pf: "dn.pf"; pg: "dn.pg"; ph: "dn.ph"; pi: "dn.pi"; pj: "dn.pj"; pk: "dn.pk"; pl: "dn.pl"; pm: "dn.pm"; pn: "dn.pn"; po: "dn.po"; pp: "dn.pp"; pq: "dn.pq"; pr: "dn.pr"; ps: "dn.ps"; pt: "dn.pt"; pu: "dn.pu"; pv: "dn.pv"; pw: "dn.pw"; px: "dn.px"; py: "dn.py"; pz: "dn.pz"; qa: "dn.qa"; qb: "dn.qb"; qc: "dn.qc"; qd: "dn.qd"; qe: "dn.qe"; qf: "dn.qf"; qg: "dn.qg"; qh: "dn.qh"; qi: "dn.qi"; qj: "dn.qj"; qk: "dn.qk"; ql: "dn.ql"; qm: "dn.qm"; qn: "dn.qn"; qo: "dn.qo"; qp: "dn.qp"; qq: "dn.qq"; qr: "dn.qr"; qs: "dn.qs"; qt: "dn.qt"; qu: "dn.qu"; qv: "dn.qv"; qw: "dn.qw"; qx: "dn.qx"; qy: "dn.qy"; qz: "dn.qz"; ra: "dn.ra"; rb: "dn.rb"; rc: "dn.rc"; rd: "dn.rd"; re: "dn.re"; rf: "dn.rf"; rg: "dn.rg"; rh: "dn.rh"; ri: "dn.ri"; rj: "dn.rj"; rk: "dn.rk"; rl: "dn.rl"; rm: "dn.rm"; rn: "dn.rn"; ro: "dn.ro"; rp: "dn.rp"; rq: "dn.rq"; rr: "dn.rr"; rs: "dn.rs"; rt: "dn.rt"; ru: "dn.ru"; rv: "dn.rv"; rw: "dn.rw"; rx: "dn.rx"; ry: "dn.ry"; rz: "dn.rz"; sa: "dn.sa"; sb: "dn.sb"; sc: "dn.sc"; sd: "dn.sd"; se: "dn.se"; sf: "dn.sf"; sg: "dn.sg"; sh: "dn.sh"; si: "dn.si"; sj: "dn.sj"; sk: "dn.sk"; sl: "dn.sl"; sm: "dn.sm"; sn: "dn.sn"; so: "dn.so"; sp: "dn.sp"; sq: "dn.sq"; sr: "dn.sr"; ss: "dn.ss"; st: "dn.st"; su: "dn.su"; sv: "dn.sv"; sw: "dn.sw"; sx: "dn.sx"; sy: "dn.sy"; sz: "dn.sz"; ta: "dn.ta"; tb: "dn.tb"; tc: "dn.tc"; td: "dn.td"; te: "dn.te"; tf: "dn.tf"; tg: "dn.tg"; th: "dn.th"; ti: "dn.ti"; tj: "dn.tj"; tk: "dn.tk"; tl: "dn.tl"; tm: "dn.tm"; tn: "dn.tn"; to: "dn.to"; tp: "dn.tp"; tq: "dn.tq"; tr: "dn.tr"; ts: "dn.ts"; tt: "dn.tt"; tu: "dn.tu"; tv: "dn.tv"; tw: "dn.tw"; tx: "dn.tx"; ty: "dn.ty"; tz: "dn.tz"; ua: "dn.ua"; ub: "dn.ub"; uc: "dn.uc"; ud: "dn.ud"; ue: "dn.ue"; uf: "dn.uf"; ug: "dn.ug"; uh: "dn.uh"; ui: "dn.ui"; uj: "dn.uj"; uk: "dn.uk"; ul: "dn.ul"; um: "dn.um"; un: "dn.un"; uo: "dn.uo"; up: "dn.up"; uq: "dn.uq"; ur: "dn.ur"; us: "dn.us"; ut: "dn.ut"; uu: "dn.uu"; uv: "dn.uv"; uw: "dn.uw"; ux: "dn.ux"; uy: "dn.uy"; uz: "dn.uz"; va: "dn.va"; vb: "dn.vb"; vc: "dn.vc"; vd: "dn.vd"; ve: "dn.ve"; vf: "dn.vf"; vg: "dn.vg"; vh: "dn.vh"; vi: "dn.vi"; vj: "dn.vj"; vk: "dn.vk"; vl: "dn.vl"; vm: "dn.vm"; vn: "dn.vn"; vo: "dn.vo"; vp: "dn.vp"; vq: "dn.vq"; vr: "dn.vr"; vs: "dn.vs"; vt: "dn.vt"; vu: "dn.vu"; vv: "dn.vv"; vw: "dn.vw"; vx: "dn.vx"; vy: "dn.vy"; vz: "dn.vz"; wa: "dn.wa"; wb: "dn.wb"; wc: "dn.wc"; wd: "dn.wd"; we: "dn.we"; wf: "dn.wf"; wg: "dn.wg"; wh: "dn.wh"; wi: "dn.wi"; wj: "dn.wj"; wk: "dn.wk"; wl: "dn.wl"; wm: "dn.wm"; wn: "dn.wn"; wo: "dn.wo"; wp: "dn.wp"; wq: "dn.wq"; wr: "dn.wr"; ws: "dn.ws"; wt: "dn.wt"; wu: "dn.wu"; wv: "dn.wv"; ww: "dn.ww"; wx: "dn.wx"; wy: "dn.wy"; wz: "dn.wz"; xa: "dn.xa"; xb: "dn.xb"; xc: "dn.xc"; xd: "dn.xd"; xe: "dn.xe"; xf: "dn.xf"; xg: "dn.xg"; xh: "dn.xh"; xi: "dn.xi"; xj: "dn.xj"; xk: "dn.xk"; xl: "dn.xl"; xm: "dn.xm"; xn: "dn.xn"; xo: "dn.xo"; xp: "dn.xp"; xq: "dn.xq"; xr: "dn.xr"; xs: "dn.xs"; xt: "dn.xt"; xu: "dn.xu"; xv: "dn.xv"; xw: "dn.xw"; xx: "dn.xx"; xy: "dn.xy"; xz: "dn.xz"; ya: "dn.ya"; yb: "dn.yb"; yc: "dn.yc"; yd: "dn.yd"; ye: "dn.ye"; yf: "dn.yf"; yg: "dn.yg"; yh: "dn.yh"; yi: "dn.yi"; yj: "dn.yj"; yk: "dn.yk"; yl: "dn.yl"; ym: "dn.ym"; yn: "dn.yn"; yo: "dn.yo"; yp: "dn.yp"; yq: "dn.yq"; yr: "dn.yr"; ys: "dn.ys"; yt: "dn.yt"; yu: "dn.yu"; yv: "dn.yv"; yw: "dn.yw"; yx: "dn.yx"; yy: "dn.yy"; yz: "dn.yz"; za: "dn.za"; zb: "dn.zb"; zc: "dn.zc"; zd: "dn.zd"; ze: "dn.ze"; zf: "dn.zf"; zg: "dn.zg"; zh: "dn.zh"; zi: "dn.zi"; zj: "dn.zj"; zk: "dn.zk"; zl: "dn.zl"; zm: "dn.zm"; zn: "dn.zn"; zo: "dn.zo"; zp: "dn.zp"; zq: "dn.zq"; zr: "dn.zr"; zs: "dn.zs"; zt: "dn.zt"; zu: "dn.zu"; zv: "dn.zv"; zw: "dn.zw"; zx: "dn.zx"; zy: "dn.zy"; zz: "dn.zz"; }; do: { aa: "do.aa"; ab: "do.ab"; ac: "do.ac"; ad: "do.ad"; ae: "do.ae"; af: "do.af"; ag: "do.ag"; ah: "do.ah"; ai: "do.ai"; aj: "do.aj"; ak: "do.ak"; al: "do.al"; am: "do.am"; an: "do.an"; ao: "do.ao"; ap: "do.ap"; aq: "do.aq"; ar: "do.ar"; as: "do.as"; at: "do.at"; au: "do.au"; av: "do.av"; aw: "do.aw"; ax: "do.ax"; ay: "do.ay"; az: "do.az"; ba: "do.ba"; bb: "do.bb"; bc: "do.bc"; bd: "do.bd"; be: "do.be"; bf: "do.bf"; bg: "do.bg"; bh: "do.bh"; bi: "do.bi"; bj: "do.bj"; bk: "do.bk"; bl: "do.bl"; bm: "do.bm"; bn: "do.bn"; bo: "do.bo"; bp: "do.bp"; bq: "do.bq"; br: "do.br"; bs: "do.bs"; bt: "do.bt"; bu: "do.bu"; bv: "do.bv"; bw: "do.bw"; bx: "do.bx"; by: "do.by"; bz: "do.bz"; ca: "do.ca"; cb: "do.cb"; cc: "do.cc"; cd: "do.cd"; ce: "do.ce"; cf: "do.cf"; cg: "do.cg"; ch: "do.ch"; ci: "do.ci"; cj: "do.cj"; ck: "do.ck"; cl: "do.cl"; cm: "do.cm"; cn: "do.cn"; co: "do.co"; cp: "do.cp"; cq: "do.cq"; cr: "do.cr"; cs: "do.cs"; ct: "do.ct"; cu: "do.cu"; cv: "do.cv"; cw: "do.cw"; cx: "do.cx"; cy: "do.cy"; cz: "do.cz"; da: "do.da"; db: "do.db"; dc: "do.dc"; dd: "do.dd"; de: "do.de"; df: "do.df"; dg: "do.dg"; dh: "do.dh"; di: "do.di"; dj: "do.dj"; dk: "do.dk"; dl: "do.dl"; dm: "do.dm"; dn: "do.dn"; do: "do.do"; dp: "do.dp"; dq: "do.dq"; dr: "do.dr"; ds: "do.ds"; dt: "do.dt"; du: "do.du"; dv: "do.dv"; dw: "do.dw"; dx: "do.dx"; dy: "do.dy"; dz: "do.dz"; ea: "do.ea"; eb: "do.eb"; ec: "do.ec"; ed: "do.ed"; ee: "do.ee"; ef: "do.ef"; eg: "do.eg"; eh: "do.eh"; ei: "do.ei"; ej: "do.ej"; ek: "do.ek"; el: "do.el"; em: "do.em"; en: "do.en"; eo: "do.eo"; ep: "do.ep"; eq: "do.eq"; er: "do.er"; es: "do.es"; et: "do.et"; eu: "do.eu"; ev: "do.ev"; ew: "do.ew"; ex: "do.ex"; ey: "do.ey"; ez: "do.ez"; fa: "do.fa"; fb: "do.fb"; fc: "do.fc"; fd: "do.fd"; fe: "do.fe"; ff: "do.ff"; fg: "do.fg"; fh: "do.fh"; fi: "do.fi"; fj: "do.fj"; fk: "do.fk"; fl: "do.fl"; fm: "do.fm"; fn: "do.fn"; fo: "do.fo"; fp: "do.fp"; fq: "do.fq"; fr: "do.fr"; fs: "do.fs"; ft: "do.ft"; fu: "do.fu"; fv: "do.fv"; fw: "do.fw"; fx: "do.fx"; fy: "do.fy"; fz: "do.fz"; ga: "do.ga"; gb: "do.gb"; gc: "do.gc"; gd: "do.gd"; ge: "do.ge"; gf: "do.gf"; gg: "do.gg"; gh: "do.gh"; gi: "do.gi"; gj: "do.gj"; gk: "do.gk"; gl: "do.gl"; gm: "do.gm"; gn: "do.gn"; go: "do.go"; gp: "do.gp"; gq: "do.gq"; gr: "do.gr"; gs: "do.gs"; gt: "do.gt"; gu: "do.gu"; gv: "do.gv"; gw: "do.gw"; gx: "do.gx"; gy: "do.gy"; gz: "do.gz"; ha: "do.ha"; hb: "do.hb"; hc: "do.hc"; hd: "do.hd"; he: "do.he"; hf: "do.hf"; hg: "do.hg"; hh: "do.hh"; hi: "do.hi"; hj: "do.hj"; hk: "do.hk"; hl: "do.hl"; hm: "do.hm"; hn: "do.hn"; ho: "do.ho"; hp: "do.hp"; hq: "do.hq"; hr: "do.hr"; hs: "do.hs"; ht: "do.ht"; hu: "do.hu"; hv: "do.hv"; hw: "do.hw"; hx: "do.hx"; hy: "do.hy"; hz: "do.hz"; ia: "do.ia"; ib: "do.ib"; ic: "do.ic"; id: "do.id"; ie: "do.ie"; if: "do.if"; ig: "do.ig"; ih: "do.ih"; ii: "do.ii"; ij: "do.ij"; ik: "do.ik"; il: "do.il"; im: "do.im"; in: "do.in"; io: "do.io"; ip: "do.ip"; iq: "do.iq"; ir: "do.ir"; is: "do.is"; it: "do.it"; iu: "do.iu"; iv: "do.iv"; iw: "do.iw"; ix: "do.ix"; iy: "do.iy"; iz: "do.iz"; ja: "do.ja"; jb: "do.jb"; jc: "do.jc"; jd: "do.jd"; je: "do.je"; jf: "do.jf"; jg: "do.jg"; jh: "do.jh"; ji: "do.ji"; jj: "do.jj"; jk: "do.jk"; jl: "do.jl"; jm: "do.jm"; jn: "do.jn"; jo: "do.jo"; jp: "do.jp"; jq: "do.jq"; jr: "do.jr"; js: "do.js"; jt: "do.jt"; ju: "do.ju"; jv: "do.jv"; jw: "do.jw"; jx: "do.jx"; jy: "do.jy"; jz: "do.jz"; ka: "do.ka"; kb: "do.kb"; kc: "do.kc"; kd: "do.kd"; ke: "do.ke"; kf: "do.kf"; kg: "do.kg"; kh: "do.kh"; ki: "do.ki"; kj: "do.kj"; kk: "do.kk"; kl: "do.kl"; km: "do.km"; kn: "do.kn"; ko: "do.ko"; kp: "do.kp"; kq: "do.kq"; kr: "do.kr"; ks: "do.ks"; kt: "do.kt"; ku: "do.ku"; kv: "do.kv"; kw: "do.kw"; kx: "do.kx"; ky: "do.ky"; kz: "do.kz"; la: "do.la"; lb: "do.lb"; lc: "do.lc"; ld: "do.ld"; le: "do.le"; lf: "do.lf"; lg: "do.lg"; lh: "do.lh"; li: "do.li"; lj: "do.lj"; lk: "do.lk"; ll: "do.ll"; lm: "do.lm"; ln: "do.ln"; lo: "do.lo"; lp: "do.lp"; lq: "do.lq"; lr: "do.lr"; ls: "do.ls"; lt: "do.lt"; lu: "do.lu"; lv: "do.lv"; lw: "do.lw"; lx: "do.lx"; ly: "do.ly"; lz: "do.lz"; ma: "do.ma"; mb: "do.mb"; mc: "do.mc"; md: "do.md"; me: "do.me"; mf: "do.mf"; mg: "do.mg"; mh: "do.mh"; mi: "do.mi"; mj: "do.mj"; mk: "do.mk"; ml: "do.ml"; mm: "do.mm"; mn: "do.mn"; mo: "do.mo"; mp: "do.mp"; mq: "do.mq"; mr: "do.mr"; ms: "do.ms"; mt: "do.mt"; mu: "do.mu"; mv: "do.mv"; mw: "do.mw"; mx: "do.mx"; my: "do.my"; mz: "do.mz"; na: "do.na"; nb: "do.nb"; nc: "do.nc"; nd: "do.nd"; ne: "do.ne"; nf: "do.nf"; ng: "do.ng"; nh: "do.nh"; ni: "do.ni"; nj: "do.nj"; nk: "do.nk"; nl: "do.nl"; nm: "do.nm"; nn: "do.nn"; no: "do.no"; np: "do.np"; nq: "do.nq"; nr: "do.nr"; ns: "do.ns"; nt: "do.nt"; nu: "do.nu"; nv: "do.nv"; nw: "do.nw"; nx: "do.nx"; ny: "do.ny"; nz: "do.nz"; oa: "do.oa"; ob: "do.ob"; oc: "do.oc"; od: "do.od"; oe: "do.oe"; of: "do.of"; og: "do.og"; oh: "do.oh"; oi: "do.oi"; oj: "do.oj"; ok: "do.ok"; ol: "do.ol"; om: "do.om"; on: "do.on"; oo: "do.oo"; op: "do.op"; oq: "do.oq"; or: "do.or"; os: "do.os"; ot: "do.ot"; ou: "do.ou"; ov: "do.ov"; ow: "do.ow"; ox: "do.ox"; oy: "do.oy"; oz: "do.oz"; pa: "do.pa"; pb: "do.pb"; pc: "do.pc"; pd: "do.pd"; pe: "do.pe"; pf: "do.pf"; pg: "do.pg"; ph: "do.ph"; pi: "do.pi"; pj: "do.pj"; pk: "do.pk"; pl: "do.pl"; pm: "do.pm"; pn: "do.pn"; po: "do.po"; pp: "do.pp"; pq: "do.pq"; pr: "do.pr"; ps: "do.ps"; pt: "do.pt"; pu: "do.pu"; pv: "do.pv"; pw: "do.pw"; px: "do.px"; py: "do.py"; pz: "do.pz"; qa: "do.qa"; qb: "do.qb"; qc: "do.qc"; qd: "do.qd"; qe: "do.qe"; qf: "do.qf"; qg: "do.qg"; qh: "do.qh"; qi: "do.qi"; qj: "do.qj"; qk: "do.qk"; ql: "do.ql"; qm: "do.qm"; qn: "do.qn"; qo: "do.qo"; qp: "do.qp"; qq: "do.qq"; qr: "do.qr"; qs: "do.qs"; qt: "do.qt"; qu: "do.qu"; qv: "do.qv"; qw: "do.qw"; qx: "do.qx"; qy: "do.qy"; qz: "do.qz"; ra: "do.ra"; rb: "do.rb"; rc: "do.rc"; rd: "do.rd"; re: "do.re"; rf: "do.rf"; rg: "do.rg"; rh: "do.rh"; ri: "do.ri"; rj: "do.rj"; rk: "do.rk"; rl: "do.rl"; rm: "do.rm"; rn: "do.rn"; ro: "do.ro"; rp: "do.rp"; rq: "do.rq"; rr: "do.rr"; rs: "do.rs"; rt: "do.rt"; ru: "do.ru"; rv: "do.rv"; rw: "do.rw"; rx: "do.rx"; ry: "do.ry"; rz: "do.rz"; sa: "do.sa"; sb: "do.sb"; sc: "do.sc"; sd: "do.sd"; se: "do.se"; sf: "do.sf"; sg: "do.sg"; sh: "do.sh"; si: "do.si"; sj: "do.sj"; sk: "do.sk"; sl: "do.sl"; sm: "do.sm"; sn: "do.sn"; so: "do.so"; sp: "do.sp"; sq: "do.sq"; sr: "do.sr"; ss: "do.ss"; st: "do.st"; su: "do.su"; sv: "do.sv"; sw: "do.sw"; sx: "do.sx"; sy: "do.sy"; sz: "do.sz"; ta: "do.ta"; tb: "do.tb"; tc: "do.tc"; td: "do.td"; te: "do.te"; tf: "do.tf"; tg: "do.tg"; th: "do.th"; ti: "do.ti"; tj: "do.tj"; tk: "do.tk"; tl: "do.tl"; tm: "do.tm"; tn: "do.tn"; to: "do.to"; tp: "do.tp"; tq: "do.tq"; tr: "do.tr"; ts: "do.ts"; tt: "do.tt"; tu: "do.tu"; tv: "do.tv"; tw: "do.tw"; tx: "do.tx"; ty: "do.ty"; tz: "do.tz"; ua: "do.ua"; ub: "do.ub"; uc: "do.uc"; ud: "do.ud"; ue: "do.ue"; uf: "do.uf"; ug: "do.ug"; uh: "do.uh"; ui: "do.ui"; uj: "do.uj"; uk: "do.uk"; ul: "do.ul"; um: "do.um"; un: "do.un"; uo: "do.uo"; up: "do.up"; uq: "do.uq"; ur: "do.ur"; us: "do.us"; ut: "do.ut"; uu: "do.uu"; uv: "do.uv"; uw: "do.uw"; ux: "do.ux"; uy: "do.uy"; uz: "do.uz"; va: "do.va"; vb: "do.vb"; vc: "do.vc"; vd: "do.vd"; ve: "do.ve"; vf: "do.vf"; vg: "do.vg"; vh: "do.vh"; vi: "do.vi"; vj: "do.vj"; vk: "do.vk"; vl: "do.vl"; vm: "do.vm"; vn: "do.vn"; vo: "do.vo"; vp: "do.vp"; vq: "do.vq"; vr: "do.vr"; vs: "do.vs"; vt: "do.vt"; vu: "do.vu"; vv: "do.vv"; vw: "do.vw"; vx: "do.vx"; vy: "do.vy"; vz: "do.vz"; wa: "do.wa"; wb: "do.wb"; wc: "do.wc"; wd: "do.wd"; we: "do.we"; wf: "do.wf"; wg: "do.wg"; wh: "do.wh"; wi: "do.wi"; wj: "do.wj"; wk: "do.wk"; wl: "do.wl"; wm: "do.wm"; wn: "do.wn"; wo: "do.wo"; wp: "do.wp"; wq: "do.wq"; wr: "do.wr"; ws: "do.ws"; wt: "do.wt"; wu: "do.wu"; wv: "do.wv"; ww: "do.ww"; wx: "do.wx"; wy: "do.wy"; wz: "do.wz"; xa: "do.xa"; xb: "do.xb"; xc: "do.xc"; xd: "do.xd"; xe: "do.xe"; xf: "do.xf"; xg: "do.xg"; xh: "do.xh"; xi: "do.xi"; xj: "do.xj"; xk: "do.xk"; xl: "do.xl"; xm: "do.xm"; xn: "do.xn"; xo: "do.xo"; xp: "do.xp"; xq: "do.xq"; xr: "do.xr"; xs: "do.xs"; xt: "do.xt"; xu: "do.xu"; xv: "do.xv"; xw: "do.xw"; xx: "do.xx"; xy: "do.xy"; xz: "do.xz"; ya: "do.ya"; yb: "do.yb"; yc: "do.yc"; yd: "do.yd"; ye: "do.ye"; yf: "do.yf"; yg: "do.yg"; yh: "do.yh"; yi: "do.yi"; yj: "do.yj"; yk: "do.yk"; yl: "do.yl"; ym: "do.ym"; yn: "do.yn"; yo: "do.yo"; yp: "do.yp"; yq: "do.yq"; yr: "do.yr"; ys: "do.ys"; yt: "do.yt"; yu: "do.yu"; yv: "do.yv"; yw: "do.yw"; yx: "do.yx"; yy: "do.yy"; yz: "do.yz"; za: "do.za"; zb: "do.zb"; zc: "do.zc"; zd: "do.zd"; ze: "do.ze"; zf: "do.zf"; zg: "do.zg"; zh: "do.zh"; zi: "do.zi"; zj: "do.zj"; zk: "do.zk"; zl: "do.zl"; zm: "do.zm"; zn: "do.zn"; zo: "do.zo"; zp: "do.zp"; zq: "do.zq"; zr: "do.zr"; zs: "do.zs"; zt: "do.zt"; zu: "do.zu"; zv: "do.zv"; zw: "do.zw"; zx: "do.zx"; zy: "do.zy"; zz: "do.zz"; }; dp: { aa: "dp.aa"; ab: "dp.ab"; ac: "dp.ac"; ad: "dp.ad"; ae: "dp.ae"; af: "dp.af"; ag: "dp.ag"; ah: "dp.ah"; ai: "dp.ai"; aj: "dp.aj"; ak: "dp.ak"; al: "dp.al"; am: "dp.am"; an: "dp.an"; ao: "dp.ao"; ap: "dp.ap"; aq: "dp.aq"; ar: "dp.ar"; as: "dp.as"; at: "dp.at"; au: "dp.au"; av: "dp.av"; aw: "dp.aw"; ax: "dp.ax"; ay: "dp.ay"; az: "dp.az"; ba: "dp.ba"; bb: "dp.bb"; bc: "dp.bc"; bd: "dp.bd"; be: "dp.be"; bf: "dp.bf"; bg: "dp.bg"; bh: "dp.bh"; bi: "dp.bi"; bj: "dp.bj"; bk: "dp.bk"; bl: "dp.bl"; bm: "dp.bm"; bn: "dp.bn"; bo: "dp.bo"; bp: "dp.bp"; bq: "dp.bq"; br: "dp.br"; bs: "dp.bs"; bt: "dp.bt"; bu: "dp.bu"; bv: "dp.bv"; bw: "dp.bw"; bx: "dp.bx"; by: "dp.by"; bz: "dp.bz"; ca: "dp.ca"; cb: "dp.cb"; cc: "dp.cc"; cd: "dp.cd"; ce: "dp.ce"; cf: "dp.cf"; cg: "dp.cg"; ch: "dp.ch"; ci: "dp.ci"; cj: "dp.cj"; ck: "dp.ck"; cl: "dp.cl"; cm: "dp.cm"; cn: "dp.cn"; co: "dp.co"; cp: "dp.cp"; cq: "dp.cq"; cr: "dp.cr"; cs: "dp.cs"; ct: "dp.ct"; cu: "dp.cu"; cv: "dp.cv"; cw: "dp.cw"; cx: "dp.cx"; cy: "dp.cy"; cz: "dp.cz"; da: "dp.da"; db: "dp.db"; dc: "dp.dc"; dd: "dp.dd"; de: "dp.de"; df: "dp.df"; dg: "dp.dg"; dh: "dp.dh"; di: "dp.di"; dj: "dp.dj"; dk: "dp.dk"; dl: "dp.dl"; dm: "dp.dm"; dn: "dp.dn"; do: "dp.do"; dp: "dp.dp"; dq: "dp.dq"; dr: "dp.dr"; ds: "dp.ds"; dt: "dp.dt"; du: "dp.du"; dv: "dp.dv"; dw: "dp.dw"; dx: "dp.dx"; dy: "dp.dy"; dz: "dp.dz"; ea: "dp.ea"; eb: "dp.eb"; ec: "dp.ec"; ed: "dp.ed"; ee: "dp.ee"; ef: "dp.ef"; eg: "dp.eg"; eh: "dp.eh"; ei: "dp.ei"; ej: "dp.ej"; ek: "dp.ek"; el: "dp.el"; em: "dp.em"; en: "dp.en"; eo: "dp.eo"; ep: "dp.ep"; eq: "dp.eq"; er: "dp.er"; es: "dp.es"; et: "dp.et"; eu: "dp.eu"; ev: "dp.ev"; ew: "dp.ew"; ex: "dp.ex"; ey: "dp.ey"; ez: "dp.ez"; fa: "dp.fa"; fb: "dp.fb"; fc: "dp.fc"; fd: "dp.fd"; fe: "dp.fe"; ff: "dp.ff"; fg: "dp.fg"; fh: "dp.fh"; fi: "dp.fi"; fj: "dp.fj"; fk: "dp.fk"; fl: "dp.fl"; fm: "dp.fm"; fn: "dp.fn"; fo: "dp.fo"; fp: "dp.fp"; fq: "dp.fq"; fr: "dp.fr"; fs: "dp.fs"; ft: "dp.ft"; fu: "dp.fu"; fv: "dp.fv"; fw: "dp.fw"; fx: "dp.fx"; fy: "dp.fy"; fz: "dp.fz"; ga: "dp.ga"; gb: "dp.gb"; gc: "dp.gc"; gd: "dp.gd"; ge: "dp.ge"; gf: "dp.gf"; gg: "dp.gg"; gh: "dp.gh"; gi: "dp.gi"; gj: "dp.gj"; gk: "dp.gk"; gl: "dp.gl"; gm: "dp.gm"; gn: "dp.gn"; go: "dp.go"; gp: "dp.gp"; gq: "dp.gq"; gr: "dp.gr"; gs: "dp.gs"; gt: "dp.gt"; gu: "dp.gu"; gv: "dp.gv"; gw: "dp.gw"; gx: "dp.gx"; gy: "dp.gy"; gz: "dp.gz"; ha: "dp.ha"; hb: "dp.hb"; hc: "dp.hc"; hd: "dp.hd"; he: "dp.he"; hf: "dp.hf"; hg: "dp.hg"; hh: "dp.hh"; hi: "dp.hi"; hj: "dp.hj"; hk: "dp.hk"; hl: "dp.hl"; hm: "dp.hm"; hn: "dp.hn"; ho: "dp.ho"; hp: "dp.hp"; hq: "dp.hq"; hr: "dp.hr"; hs: "dp.hs"; ht: "dp.ht"; hu: "dp.hu"; hv: "dp.hv"; hw: "dp.hw"; hx: "dp.hx"; hy: "dp.hy"; hz: "dp.hz"; ia: "dp.ia"; ib: "dp.ib"; ic: "dp.ic"; id: "dp.id"; ie: "dp.ie"; if: "dp.if"; ig: "dp.ig"; ih: "dp.ih"; ii: "dp.ii"; ij: "dp.ij"; ik: "dp.ik"; il: "dp.il"; im: "dp.im"; in: "dp.in"; io: "dp.io"; ip: "dp.ip"; iq: "dp.iq"; ir: "dp.ir"; is: "dp.is"; it: "dp.it"; iu: "dp.iu"; iv: "dp.iv"; iw: "dp.iw"; ix: "dp.ix"; iy: "dp.iy"; iz: "dp.iz"; ja: "dp.ja"; jb: "dp.jb"; jc: "dp.jc"; jd: "dp.jd"; je: "dp.je"; jf: "dp.jf"; jg: "dp.jg"; jh: "dp.jh"; ji: "dp.ji"; jj: "dp.jj"; jk: "dp.jk"; jl: "dp.jl"; jm: "dp.jm"; jn: "dp.jn"; jo: "dp.jo"; jp: "dp.jp"; jq: "dp.jq"; jr: "dp.jr"; js: "dp.js"; jt: "dp.jt"; ju: "dp.ju"; jv: "dp.jv"; jw: "dp.jw"; jx: "dp.jx"; jy: "dp.jy"; jz: "dp.jz"; ka: "dp.ka"; kb: "dp.kb"; kc: "dp.kc"; kd: "dp.kd"; ke: "dp.ke"; kf: "dp.kf"; kg: "dp.kg"; kh: "dp.kh"; ki: "dp.ki"; kj: "dp.kj"; kk: "dp.kk"; kl: "dp.kl"; km: "dp.km"; kn: "dp.kn"; ko: "dp.ko"; kp: "dp.kp"; kq: "dp.kq"; kr: "dp.kr"; ks: "dp.ks"; kt: "dp.kt"; ku: "dp.ku"; kv: "dp.kv"; kw: "dp.kw"; kx: "dp.kx"; ky: "dp.ky"; kz: "dp.kz"; la: "dp.la"; lb: "dp.lb"; lc: "dp.lc"; ld: "dp.ld"; le: "dp.le"; lf: "dp.lf"; lg: "dp.lg"; lh: "dp.lh"; li: "dp.li"; lj: "dp.lj"; lk: "dp.lk"; ll: "dp.ll"; lm: "dp.lm"; ln: "dp.ln"; lo: "dp.lo"; lp: "dp.lp"; lq: "dp.lq"; lr: "dp.lr"; ls: "dp.ls"; lt: "dp.lt"; lu: "dp.lu"; lv: "dp.lv"; lw: "dp.lw"; lx: "dp.lx"; ly: "dp.ly"; lz: "dp.lz"; ma: "dp.ma"; mb: "dp.mb"; mc: "dp.mc"; md: "dp.md"; me: "dp.me"; mf: "dp.mf"; mg: "dp.mg"; mh: "dp.mh"; mi: "dp.mi"; mj: "dp.mj"; mk: "dp.mk"; ml: "dp.ml"; mm: "dp.mm"; mn: "dp.mn"; mo: "dp.mo"; mp: "dp.mp"; mq: "dp.mq"; mr: "dp.mr"; ms: "dp.ms"; mt: "dp.mt"; mu: "dp.mu"; mv: "dp.mv"; mw: "dp.mw"; mx: "dp.mx"; my: "dp.my"; mz: "dp.mz"; na: "dp.na"; nb: "dp.nb"; nc: "dp.nc"; nd: "dp.nd"; ne: "dp.ne"; nf: "dp.nf"; ng: "dp.ng"; nh: "dp.nh"; ni: "dp.ni"; nj: "dp.nj"; nk: "dp.nk"; nl: "dp.nl"; nm: "dp.nm"; nn: "dp.nn"; no: "dp.no"; np: "dp.np"; nq: "dp.nq"; nr: "dp.nr"; ns: "dp.ns"; nt: "dp.nt"; nu: "dp.nu"; nv: "dp.nv"; nw: "dp.nw"; nx: "dp.nx"; ny: "dp.ny"; nz: "dp.nz"; oa: "dp.oa"; ob: "dp.ob"; oc: "dp.oc"; od: "dp.od"; oe: "dp.oe"; of: "dp.of"; og: "dp.og"; oh: "dp.oh"; oi: "dp.oi"; oj: "dp.oj"; ok: "dp.ok"; ol: "dp.ol"; om: "dp.om"; on: "dp.on"; oo: "dp.oo"; op: "dp.op"; oq: "dp.oq"; or: "dp.or"; os: "dp.os"; ot: "dp.ot"; ou: "dp.ou"; ov: "dp.ov"; ow: "dp.ow"; ox: "dp.ox"; oy: "dp.oy"; oz: "dp.oz"; pa: "dp.pa"; pb: "dp.pb"; pc: "dp.pc"; pd: "dp.pd"; pe: "dp.pe"; pf: "dp.pf"; pg: "dp.pg"; ph: "dp.ph"; pi: "dp.pi"; pj: "dp.pj"; pk: "dp.pk"; pl: "dp.pl"; pm: "dp.pm"; pn: "dp.pn"; po: "dp.po"; pp: "dp.pp"; pq: "dp.pq"; pr: "dp.pr"; ps: "dp.ps"; pt: "dp.pt"; pu: "dp.pu"; pv: "dp.pv"; pw: "dp.pw"; px: "dp.px"; py: "dp.py"; pz: "dp.pz"; qa: "dp.qa"; qb: "dp.qb"; qc: "dp.qc"; qd: "dp.qd"; qe: "dp.qe"; qf: "dp.qf"; qg: "dp.qg"; qh: "dp.qh"; qi: "dp.qi"; qj: "dp.qj"; qk: "dp.qk"; ql: "dp.ql"; qm: "dp.qm"; qn: "dp.qn"; qo: "dp.qo"; qp: "dp.qp"; qq: "dp.qq"; qr: "dp.qr"; qs: "dp.qs"; qt: "dp.qt"; qu: "dp.qu"; qv: "dp.qv"; qw: "dp.qw"; qx: "dp.qx"; qy: "dp.qy"; qz: "dp.qz"; ra: "dp.ra"; rb: "dp.rb"; rc: "dp.rc"; rd: "dp.rd"; re: "dp.re"; rf: "dp.rf"; rg: "dp.rg"; rh: "dp.rh"; ri: "dp.ri"; rj: "dp.rj"; rk: "dp.rk"; rl: "dp.rl"; rm: "dp.rm"; rn: "dp.rn"; ro: "dp.ro"; rp: "dp.rp"; rq: "dp.rq"; rr: "dp.rr"; rs: "dp.rs"; rt: "dp.rt"; ru: "dp.ru"; rv: "dp.rv"; rw: "dp.rw"; rx: "dp.rx"; ry: "dp.ry"; rz: "dp.rz"; sa: "dp.sa"; sb: "dp.sb"; sc: "dp.sc"; sd: "dp.sd"; se: "dp.se"; sf: "dp.sf"; sg: "dp.sg"; sh: "dp.sh"; si: "dp.si"; sj: "dp.sj"; sk: "dp.sk"; sl: "dp.sl"; sm: "dp.sm"; sn: "dp.sn"; so: "dp.so"; sp: "dp.sp"; sq: "dp.sq"; sr: "dp.sr"; ss: "dp.ss"; st: "dp.st"; su: "dp.su"; sv: "dp.sv"; sw: "dp.sw"; sx: "dp.sx"; sy: "dp.sy"; sz: "dp.sz"; ta: "dp.ta"; tb: "dp.tb"; tc: "dp.tc"; td: "dp.td"; te: "dp.te"; tf: "dp.tf"; tg: "dp.tg"; th: "dp.th"; ti: "dp.ti"; tj: "dp.tj"; tk: "dp.tk"; tl: "dp.tl"; tm: "dp.tm"; tn: "dp.tn"; to: "dp.to"; tp: "dp.tp"; tq: "dp.tq"; tr: "dp.tr"; ts: "dp.ts"; tt: "dp.tt"; tu: "dp.tu"; tv: "dp.tv"; tw: "dp.tw"; tx: "dp.tx"; ty: "dp.ty"; tz: "dp.tz"; ua: "dp.ua"; ub: "dp.ub"; uc: "dp.uc"; ud: "dp.ud"; ue: "dp.ue"; uf: "dp.uf"; ug: "dp.ug"; uh: "dp.uh"; ui: "dp.ui"; uj: "dp.uj"; uk: "dp.uk"; ul: "dp.ul"; um: "dp.um"; un: "dp.un"; uo: "dp.uo"; up: "dp.up"; uq: "dp.uq"; ur: "dp.ur"; us: "dp.us"; ut: "dp.ut"; uu: "dp.uu"; uv: "dp.uv"; uw: "dp.uw"; ux: "dp.ux"; uy: "dp.uy"; uz: "dp.uz"; va: "dp.va"; vb: "dp.vb"; vc: "dp.vc"; vd: "dp.vd"; ve: "dp.ve"; vf: "dp.vf"; vg: "dp.vg"; vh: "dp.vh"; vi: "dp.vi"; vj: "dp.vj"; vk: "dp.vk"; vl: "dp.vl"; vm: "dp.vm"; vn: "dp.vn"; vo: "dp.vo"; vp: "dp.vp"; vq: "dp.vq"; vr: "dp.vr"; vs: "dp.vs"; vt: "dp.vt"; vu: "dp.vu"; vv: "dp.vv"; vw: "dp.vw"; vx: "dp.vx"; vy: "dp.vy"; vz: "dp.vz"; wa: "dp.wa"; wb: "dp.wb"; wc: "dp.wc"; wd: "dp.wd"; we: "dp.we"; wf: "dp.wf"; wg: "dp.wg"; wh: "dp.wh"; wi: "dp.wi"; wj: "dp.wj"; wk: "dp.wk"; wl: "dp.wl"; wm: "dp.wm"; wn: "dp.wn"; wo: "dp.wo"; wp: "dp.wp"; wq: "dp.wq"; wr: "dp.wr"; ws: "dp.ws"; wt: "dp.wt"; wu: "dp.wu"; wv: "dp.wv"; ww: "dp.ww"; wx: "dp.wx"; wy: "dp.wy"; wz: "dp.wz"; xa: "dp.xa"; xb: "dp.xb"; xc: "dp.xc"; xd: "dp.xd"; xe: "dp.xe"; xf: "dp.xf"; xg: "dp.xg"; xh: "dp.xh"; xi: "dp.xi"; xj: "dp.xj"; xk: "dp.xk"; xl: "dp.xl"; xm: "dp.xm"; xn: "dp.xn"; xo: "dp.xo"; xp: "dp.xp"; xq: "dp.xq"; xr: "dp.xr"; xs: "dp.xs"; xt: "dp.xt"; xu: "dp.xu"; xv: "dp.xv"; xw: "dp.xw"; xx: "dp.xx"; xy: "dp.xy"; xz: "dp.xz"; ya: "dp.ya"; yb: "dp.yb"; yc: "dp.yc"; yd: "dp.yd"; ye: "dp.ye"; yf: "dp.yf"; yg: "dp.yg"; yh: "dp.yh"; yi: "dp.yi"; yj: "dp.yj"; yk: "dp.yk"; yl: "dp.yl"; ym: "dp.ym"; yn: "dp.yn"; yo: "dp.yo"; yp: "dp.yp"; yq: "dp.yq"; yr: "dp.yr"; ys: "dp.ys"; yt: "dp.yt"; yu: "dp.yu"; yv: "dp.yv"; yw: "dp.yw"; yx: "dp.yx"; yy: "dp.yy"; yz: "dp.yz"; za: "dp.za"; zb: "dp.zb"; zc: "dp.zc"; zd: "dp.zd"; ze: "dp.ze"; zf: "dp.zf"; zg: "dp.zg"; zh: "dp.zh"; zi: "dp.zi"; zj: "dp.zj"; zk: "dp.zk"; zl: "dp.zl"; zm: "dp.zm"; zn: "dp.zn"; zo: "dp.zo"; zp: "dp.zp"; zq: "dp.zq"; zr: "dp.zr"; zs: "dp.zs"; zt: "dp.zt"; zu: "dp.zu"; zv: "dp.zv"; zw: "dp.zw"; zx: "dp.zx"; zy: "dp.zy"; zz: "dp.zz"; }; dq: { aa: "dq.aa"; ab: "dq.ab"; ac: "dq.ac"; ad: "dq.ad"; ae: "dq.ae"; af: "dq.af"; ag: "dq.ag"; ah: "dq.ah"; ai: "dq.ai"; aj: "dq.aj"; ak: "dq.ak"; al: "dq.al"; am: "dq.am"; an: "dq.an"; ao: "dq.ao"; ap: "dq.ap"; aq: "dq.aq"; ar: "dq.ar"; as: "dq.as"; at: "dq.at"; au: "dq.au"; av: "dq.av"; aw: "dq.aw"; ax: "dq.ax"; ay: "dq.ay"; az: "dq.az"; ba: "dq.ba"; bb: "dq.bb"; bc: "dq.bc"; bd: "dq.bd"; be: "dq.be"; bf: "dq.bf"; bg: "dq.bg"; bh: "dq.bh"; bi: "dq.bi"; bj: "dq.bj"; bk: "dq.bk"; bl: "dq.bl"; bm: "dq.bm"; bn: "dq.bn"; bo: "dq.bo"; bp: "dq.bp"; bq: "dq.bq"; br: "dq.br"; bs: "dq.bs"; bt: "dq.bt"; bu: "dq.bu"; bv: "dq.bv"; bw: "dq.bw"; bx: "dq.bx"; by: "dq.by"; bz: "dq.bz"; ca: "dq.ca"; cb: "dq.cb"; cc: "dq.cc"; cd: "dq.cd"; ce: "dq.ce"; cf: "dq.cf"; cg: "dq.cg"; ch: "dq.ch"; ci: "dq.ci"; cj: "dq.cj"; ck: "dq.ck"; cl: "dq.cl"; cm: "dq.cm"; cn: "dq.cn"; co: "dq.co"; cp: "dq.cp"; cq: "dq.cq"; cr: "dq.cr"; cs: "dq.cs"; ct: "dq.ct"; cu: "dq.cu"; cv: "dq.cv"; cw: "dq.cw"; cx: "dq.cx"; cy: "dq.cy"; cz: "dq.cz"; da: "dq.da"; db: "dq.db"; dc: "dq.dc"; dd: "dq.dd"; de: "dq.de"; df: "dq.df"; dg: "dq.dg"; dh: "dq.dh"; di: "dq.di"; dj: "dq.dj"; dk: "dq.dk"; dl: "dq.dl"; dm: "dq.dm"; dn: "dq.dn"; do: "dq.do"; dp: "dq.dp"; dq: "dq.dq"; dr: "dq.dr"; ds: "dq.ds"; dt: "dq.dt"; du: "dq.du"; dv: "dq.dv"; dw: "dq.dw"; dx: "dq.dx"; dy: "dq.dy"; dz: "dq.dz"; ea: "dq.ea"; eb: "dq.eb"; ec: "dq.ec"; ed: "dq.ed"; ee: "dq.ee"; ef: "dq.ef"; eg: "dq.eg"; eh: "dq.eh"; ei: "dq.ei"; ej: "dq.ej"; ek: "dq.ek"; el: "dq.el"; em: "dq.em"; en: "dq.en"; eo: "dq.eo"; ep: "dq.ep"; eq: "dq.eq"; er: "dq.er"; es: "dq.es"; et: "dq.et"; eu: "dq.eu"; ev: "dq.ev"; ew: "dq.ew"; ex: "dq.ex"; ey: "dq.ey"; ez: "dq.ez"; fa: "dq.fa"; fb: "dq.fb"; fc: "dq.fc"; fd: "dq.fd"; fe: "dq.fe"; ff: "dq.ff"; fg: "dq.fg"; fh: "dq.fh"; fi: "dq.fi"; fj: "dq.fj"; fk: "dq.fk"; fl: "dq.fl"; fm: "dq.fm"; fn: "dq.fn"; fo: "dq.fo"; fp: "dq.fp"; fq: "dq.fq"; fr: "dq.fr"; fs: "dq.fs"; ft: "dq.ft"; fu: "dq.fu"; fv: "dq.fv"; fw: "dq.fw"; fx: "dq.fx"; fy: "dq.fy"; fz: "dq.fz"; ga: "dq.ga"; gb: "dq.gb"; gc: "dq.gc"; gd: "dq.gd"; ge: "dq.ge"; gf: "dq.gf"; gg: "dq.gg"; gh: "dq.gh"; gi: "dq.gi"; gj: "dq.gj"; gk: "dq.gk"; gl: "dq.gl"; gm: "dq.gm"; gn: "dq.gn"; go: "dq.go"; gp: "dq.gp"; gq: "dq.gq"; gr: "dq.gr"; gs: "dq.gs"; gt: "dq.gt"; gu: "dq.gu"; gv: "dq.gv"; gw: "dq.gw"; gx: "dq.gx"; gy: "dq.gy"; gz: "dq.gz"; ha: "dq.ha"; hb: "dq.hb"; hc: "dq.hc"; hd: "dq.hd"; he: "dq.he"; hf: "dq.hf"; hg: "dq.hg"; hh: "dq.hh"; hi: "dq.hi"; hj: "dq.hj"; hk: "dq.hk"; hl: "dq.hl"; hm: "dq.hm"; hn: "dq.hn"; ho: "dq.ho"; hp: "dq.hp"; hq: "dq.hq"; hr: "dq.hr"; hs: "dq.hs"; ht: "dq.ht"; hu: "dq.hu"; hv: "dq.hv"; hw: "dq.hw"; hx: "dq.hx"; hy: "dq.hy"; hz: "dq.hz"; ia: "dq.ia"; ib: "dq.ib"; ic: "dq.ic"; id: "dq.id"; ie: "dq.ie"; if: "dq.if"; ig: "dq.ig"; ih: "dq.ih"; ii: "dq.ii"; ij: "dq.ij"; ik: "dq.ik"; il: "dq.il"; im: "dq.im"; in: "dq.in"; io: "dq.io"; ip: "dq.ip"; iq: "dq.iq"; ir: "dq.ir"; is: "dq.is"; it: "dq.it"; iu: "dq.iu"; iv: "dq.iv"; iw: "dq.iw"; ix: "dq.ix"; iy: "dq.iy"; iz: "dq.iz"; ja: "dq.ja"; jb: "dq.jb"; jc: "dq.jc"; jd: "dq.jd"; je: "dq.je"; jf: "dq.jf"; jg: "dq.jg"; jh: "dq.jh"; ji: "dq.ji"; jj: "dq.jj"; jk: "dq.jk"; jl: "dq.jl"; jm: "dq.jm"; jn: "dq.jn"; jo: "dq.jo"; jp: "dq.jp"; jq: "dq.jq"; jr: "dq.jr"; js: "dq.js"; jt: "dq.jt"; ju: "dq.ju"; jv: "dq.jv"; jw: "dq.jw"; jx: "dq.jx"; jy: "dq.jy"; jz: "dq.jz"; ka: "dq.ka"; kb: "dq.kb"; kc: "dq.kc"; kd: "dq.kd"; ke: "dq.ke"; kf: "dq.kf"; kg: "dq.kg"; kh: "dq.kh"; ki: "dq.ki"; kj: "dq.kj"; kk: "dq.kk"; kl: "dq.kl"; km: "dq.km"; kn: "dq.kn"; ko: "dq.ko"; kp: "dq.kp"; kq: "dq.kq"; kr: "dq.kr"; ks: "dq.ks"; kt: "dq.kt"; ku: "dq.ku"; kv: "dq.kv"; kw: "dq.kw"; kx: "dq.kx"; ky: "dq.ky"; kz: "dq.kz"; la: "dq.la"; lb: "dq.lb"; lc: "dq.lc"; ld: "dq.ld"; le: "dq.le"; lf: "dq.lf"; lg: "dq.lg"; lh: "dq.lh"; li: "dq.li"; lj: "dq.lj"; lk: "dq.lk"; ll: "dq.ll"; lm: "dq.lm"; ln: "dq.ln"; lo: "dq.lo"; lp: "dq.lp"; lq: "dq.lq"; lr: "dq.lr"; ls: "dq.ls"; lt: "dq.lt"; lu: "dq.lu"; lv: "dq.lv"; lw: "dq.lw"; lx: "dq.lx"; ly: "dq.ly"; lz: "dq.lz"; ma: "dq.ma"; mb: "dq.mb"; mc: "dq.mc"; md: "dq.md"; me: "dq.me"; mf: "dq.mf"; mg: "dq.mg"; mh: "dq.mh"; mi: "dq.mi"; mj: "dq.mj"; mk: "dq.mk"; ml: "dq.ml"; mm: "dq.mm"; mn: "dq.mn"; mo: "dq.mo"; mp: "dq.mp"; mq: "dq.mq"; mr: "dq.mr"; ms: "dq.ms"; mt: "dq.mt"; mu: "dq.mu"; mv: "dq.mv"; mw: "dq.mw"; mx: "dq.mx"; my: "dq.my"; mz: "dq.mz"; na: "dq.na"; nb: "dq.nb"; nc: "dq.nc"; nd: "dq.nd"; ne: "dq.ne"; nf: "dq.nf"; ng: "dq.ng"; nh: "dq.nh"; ni: "dq.ni"; nj: "dq.nj"; nk: "dq.nk"; nl: "dq.nl"; nm: "dq.nm"; nn: "dq.nn"; no: "dq.no"; np: "dq.np"; nq: "dq.nq"; nr: "dq.nr"; ns: "dq.ns"; nt: "dq.nt"; nu: "dq.nu"; nv: "dq.nv"; nw: "dq.nw"; nx: "dq.nx"; ny: "dq.ny"; nz: "dq.nz"; oa: "dq.oa"; ob: "dq.ob"; oc: "dq.oc"; od: "dq.od"; oe: "dq.oe"; of: "dq.of"; og: "dq.og"; oh: "dq.oh"; oi: "dq.oi"; oj: "dq.oj"; ok: "dq.ok"; ol: "dq.ol"; om: "dq.om"; on: "dq.on"; oo: "dq.oo"; op: "dq.op"; oq: "dq.oq"; or: "dq.or"; os: "dq.os"; ot: "dq.ot"; ou: "dq.ou"; ov: "dq.ov"; ow: "dq.ow"; ox: "dq.ox"; oy: "dq.oy"; oz: "dq.oz"; pa: "dq.pa"; pb: "dq.pb"; pc: "dq.pc"; pd: "dq.pd"; pe: "dq.pe"; pf: "dq.pf"; pg: "dq.pg"; ph: "dq.ph"; pi: "dq.pi"; pj: "dq.pj"; pk: "dq.pk"; pl: "dq.pl"; pm: "dq.pm"; pn: "dq.pn"; po: "dq.po"; pp: "dq.pp"; pq: "dq.pq"; pr: "dq.pr"; ps: "dq.ps"; pt: "dq.pt"; pu: "dq.pu"; pv: "dq.pv"; pw: "dq.pw"; px: "dq.px"; py: "dq.py"; pz: "dq.pz"; qa: "dq.qa"; qb: "dq.qb"; qc: "dq.qc"; qd: "dq.qd"; qe: "dq.qe"; qf: "dq.qf"; qg: "dq.qg"; qh: "dq.qh"; qi: "dq.qi"; qj: "dq.qj"; qk: "dq.qk"; ql: "dq.ql"; qm: "dq.qm"; qn: "dq.qn"; qo: "dq.qo"; qp: "dq.qp"; qq: "dq.qq"; qr: "dq.qr"; qs: "dq.qs"; qt: "dq.qt"; qu: "dq.qu"; qv: "dq.qv"; qw: "dq.qw"; qx: "dq.qx"; qy: "dq.qy"; qz: "dq.qz"; ra: "dq.ra"; rb: "dq.rb"; rc: "dq.rc"; rd: "dq.rd"; re: "dq.re"; rf: "dq.rf"; rg: "dq.rg"; rh: "dq.rh"; ri: "dq.ri"; rj: "dq.rj"; rk: "dq.rk"; rl: "dq.rl"; rm: "dq.rm"; rn: "dq.rn"; ro: "dq.ro"; rp: "dq.rp"; rq: "dq.rq"; rr: "dq.rr"; rs: "dq.rs"; rt: "dq.rt"; ru: "dq.ru"; rv: "dq.rv"; rw: "dq.rw"; rx: "dq.rx"; ry: "dq.ry"; rz: "dq.rz"; sa: "dq.sa"; sb: "dq.sb"; sc: "dq.sc"; sd: "dq.sd"; se: "dq.se"; sf: "dq.sf"; sg: "dq.sg"; sh: "dq.sh"; si: "dq.si"; sj: "dq.sj"; sk: "dq.sk"; sl: "dq.sl"; sm: "dq.sm"; sn: "dq.sn"; so: "dq.so"; sp: "dq.sp"; sq: "dq.sq"; sr: "dq.sr"; ss: "dq.ss"; st: "dq.st"; su: "dq.su"; sv: "dq.sv"; sw: "dq.sw"; sx: "dq.sx"; sy: "dq.sy"; sz: "dq.sz"; ta: "dq.ta"; tb: "dq.tb"; tc: "dq.tc"; td: "dq.td"; te: "dq.te"; tf: "dq.tf"; tg: "dq.tg"; th: "dq.th"; ti: "dq.ti"; tj: "dq.tj"; tk: "dq.tk"; tl: "dq.tl"; tm: "dq.tm"; tn: "dq.tn"; to: "dq.to"; tp: "dq.tp"; tq: "dq.tq"; tr: "dq.tr"; ts: "dq.ts"; tt: "dq.tt"; tu: "dq.tu"; tv: "dq.tv"; tw: "dq.tw"; tx: "dq.tx"; ty: "dq.ty"; tz: "dq.tz"; ua: "dq.ua"; ub: "dq.ub"; uc: "dq.uc"; ud: "dq.ud"; ue: "dq.ue"; uf: "dq.uf"; ug: "dq.ug"; uh: "dq.uh"; ui: "dq.ui"; uj: "dq.uj"; uk: "dq.uk"; ul: "dq.ul"; um: "dq.um"; un: "dq.un"; uo: "dq.uo"; up: "dq.up"; uq: "dq.uq"; ur: "dq.ur"; us: "dq.us"; ut: "dq.ut"; uu: "dq.uu"; uv: "dq.uv"; uw: "dq.uw"; ux: "dq.ux"; uy: "dq.uy"; uz: "dq.uz"; va: "dq.va"; vb: "dq.vb"; vc: "dq.vc"; vd: "dq.vd"; ve: "dq.ve"; vf: "dq.vf"; vg: "dq.vg"; vh: "dq.vh"; vi: "dq.vi"; vj: "dq.vj"; vk: "dq.vk"; vl: "dq.vl"; vm: "dq.vm"; vn: "dq.vn"; vo: "dq.vo"; vp: "dq.vp"; vq: "dq.vq"; vr: "dq.vr"; vs: "dq.vs"; vt: "dq.vt"; vu: "dq.vu"; vv: "dq.vv"; vw: "dq.vw"; vx: "dq.vx"; vy: "dq.vy"; vz: "dq.vz"; wa: "dq.wa"; wb: "dq.wb"; wc: "dq.wc"; wd: "dq.wd"; we: "dq.we"; wf: "dq.wf"; wg: "dq.wg"; wh: "dq.wh"; wi: "dq.wi"; wj: "dq.wj"; wk: "dq.wk"; wl: "dq.wl"; wm: "dq.wm"; wn: "dq.wn"; wo: "dq.wo"; wp: "dq.wp"; wq: "dq.wq"; wr: "dq.wr"; ws: "dq.ws"; wt: "dq.wt"; wu: "dq.wu"; wv: "dq.wv"; ww: "dq.ww"; wx: "dq.wx"; wy: "dq.wy"; wz: "dq.wz"; xa: "dq.xa"; xb: "dq.xb"; xc: "dq.xc"; xd: "dq.xd"; xe: "dq.xe"; xf: "dq.xf"; xg: "dq.xg"; xh: "dq.xh"; xi: "dq.xi"; xj: "dq.xj"; xk: "dq.xk"; xl: "dq.xl"; xm: "dq.xm"; xn: "dq.xn"; xo: "dq.xo"; xp: "dq.xp"; xq: "dq.xq"; xr: "dq.xr"; xs: "dq.xs"; xt: "dq.xt"; xu: "dq.xu"; xv: "dq.xv"; xw: "dq.xw"; xx: "dq.xx"; xy: "dq.xy"; xz: "dq.xz"; ya: "dq.ya"; yb: "dq.yb"; yc: "dq.yc"; yd: "dq.yd"; ye: "dq.ye"; yf: "dq.yf"; yg: "dq.yg"; yh: "dq.yh"; yi: "dq.yi"; yj: "dq.yj"; yk: "dq.yk"; yl: "dq.yl"; ym: "dq.ym"; yn: "dq.yn"; yo: "dq.yo"; yp: "dq.yp"; yq: "dq.yq"; yr: "dq.yr"; ys: "dq.ys"; yt: "dq.yt"; yu: "dq.yu"; yv: "dq.yv"; yw: "dq.yw"; yx: "dq.yx"; yy: "dq.yy"; yz: "dq.yz"; za: "dq.za"; zb: "dq.zb"; zc: "dq.zc"; zd: "dq.zd"; ze: "dq.ze"; zf: "dq.zf"; zg: "dq.zg"; zh: "dq.zh"; zi: "dq.zi"; zj: "dq.zj"; zk: "dq.zk"; zl: "dq.zl"; zm: "dq.zm"; zn: "dq.zn"; zo: "dq.zo"; zp: "dq.zp"; zq: "dq.zq"; zr: "dq.zr"; zs: "dq.zs"; zt: "dq.zt"; zu: "dq.zu"; zv: "dq.zv"; zw: "dq.zw"; zx: "dq.zx"; zy: "dq.zy"; zz: "dq.zz"; }; dr: { aa: "dr.aa"; ab: "dr.ab"; ac: "dr.ac"; ad: "dr.ad"; ae: "dr.ae"; af: "dr.af"; ag: "dr.ag"; ah: "dr.ah"; ai: "dr.ai"; aj: "dr.aj"; ak: "dr.ak"; al: "dr.al"; am: "dr.am"; an: "dr.an"; ao: "dr.ao"; ap: "dr.ap"; aq: "dr.aq"; ar: "dr.ar"; as: "dr.as"; at: "dr.at"; au: "dr.au"; av: "dr.av"; aw: "dr.aw"; ax: "dr.ax"; ay: "dr.ay"; az: "dr.az"; ba: "dr.ba"; bb: "dr.bb"; bc: "dr.bc"; bd: "dr.bd"; be: "dr.be"; bf: "dr.bf"; bg: "dr.bg"; bh: "dr.bh"; bi: "dr.bi"; bj: "dr.bj"; bk: "dr.bk"; bl: "dr.bl"; bm: "dr.bm"; bn: "dr.bn"; bo: "dr.bo"; bp: "dr.bp"; bq: "dr.bq"; br: "dr.br"; bs: "dr.bs"; bt: "dr.bt"; bu: "dr.bu"; bv: "dr.bv"; bw: "dr.bw"; bx: "dr.bx"; by: "dr.by"; bz: "dr.bz"; ca: "dr.ca"; cb: "dr.cb"; cc: "dr.cc"; cd: "dr.cd"; ce: "dr.ce"; cf: "dr.cf"; cg: "dr.cg"; ch: "dr.ch"; ci: "dr.ci"; cj: "dr.cj"; ck: "dr.ck"; cl: "dr.cl"; cm: "dr.cm"; cn: "dr.cn"; co: "dr.co"; cp: "dr.cp"; cq: "dr.cq"; cr: "dr.cr"; cs: "dr.cs"; ct: "dr.ct"; cu: "dr.cu"; cv: "dr.cv"; cw: "dr.cw"; cx: "dr.cx"; cy: "dr.cy"; cz: "dr.cz"; da: "dr.da"; db: "dr.db"; dc: "dr.dc"; dd: "dr.dd"; de: "dr.de"; df: "dr.df"; dg: "dr.dg"; dh: "dr.dh"; di: "dr.di"; dj: "dr.dj"; dk: "dr.dk"; dl: "dr.dl"; dm: "dr.dm"; dn: "dr.dn"; do: "dr.do"; dp: "dr.dp"; dq: "dr.dq"; dr: "dr.dr"; ds: "dr.ds"; dt: "dr.dt"; du: "dr.du"; dv: "dr.dv"; dw: "dr.dw"; dx: "dr.dx"; dy: "dr.dy"; dz: "dr.dz"; ea: "dr.ea"; eb: "dr.eb"; ec: "dr.ec"; ed: "dr.ed"; ee: "dr.ee"; ef: "dr.ef"; eg: "dr.eg"; eh: "dr.eh"; ei: "dr.ei"; ej: "dr.ej"; ek: "dr.ek"; el: "dr.el"; em: "dr.em"; en: "dr.en"; eo: "dr.eo"; ep: "dr.ep"; eq: "dr.eq"; er: "dr.er"; es: "dr.es"; et: "dr.et"; eu: "dr.eu"; ev: "dr.ev"; ew: "dr.ew"; ex: "dr.ex"; ey: "dr.ey"; ez: "dr.ez"; fa: "dr.fa"; fb: "dr.fb"; fc: "dr.fc"; fd: "dr.fd"; fe: "dr.fe"; ff: "dr.ff"; fg: "dr.fg"; fh: "dr.fh"; fi: "dr.fi"; fj: "dr.fj"; fk: "dr.fk"; fl: "dr.fl"; fm: "dr.fm"; fn: "dr.fn"; fo: "dr.fo"; fp: "dr.fp"; fq: "dr.fq"; fr: "dr.fr"; fs: "dr.fs"; ft: "dr.ft"; fu: "dr.fu"; fv: "dr.fv"; fw: "dr.fw"; fx: "dr.fx"; fy: "dr.fy"; fz: "dr.fz"; ga: "dr.ga"; gb: "dr.gb"; gc: "dr.gc"; gd: "dr.gd"; ge: "dr.ge"; gf: "dr.gf"; gg: "dr.gg"; gh: "dr.gh"; gi: "dr.gi"; gj: "dr.gj"; gk: "dr.gk"; gl: "dr.gl"; gm: "dr.gm"; gn: "dr.gn"; go: "dr.go"; gp: "dr.gp"; gq: "dr.gq"; gr: "dr.gr"; gs: "dr.gs"; gt: "dr.gt"; gu: "dr.gu"; gv: "dr.gv"; gw: "dr.gw"; gx: "dr.gx"; gy: "dr.gy"; gz: "dr.gz"; ha: "dr.ha"; hb: "dr.hb"; hc: "dr.hc"; hd: "dr.hd"; he: "dr.he"; hf: "dr.hf"; hg: "dr.hg"; hh: "dr.hh"; hi: "dr.hi"; hj: "dr.hj"; hk: "dr.hk"; hl: "dr.hl"; hm: "dr.hm"; hn: "dr.hn"; ho: "dr.ho"; hp: "dr.hp"; hq: "dr.hq"; hr: "dr.hr"; hs: "dr.hs"; ht: "dr.ht"; hu: "dr.hu"; hv: "dr.hv"; hw: "dr.hw"; hx: "dr.hx"; hy: "dr.hy"; hz: "dr.hz"; ia: "dr.ia"; ib: "dr.ib"; ic: "dr.ic"; id: "dr.id"; ie: "dr.ie"; if: "dr.if"; ig: "dr.ig"; ih: "dr.ih"; ii: "dr.ii"; ij: "dr.ij"; ik: "dr.ik"; il: "dr.il"; im: "dr.im"; in: "dr.in"; io: "dr.io"; ip: "dr.ip"; iq: "dr.iq"; ir: "dr.ir"; is: "dr.is"; it: "dr.it"; iu: "dr.iu"; iv: "dr.iv"; iw: "dr.iw"; ix: "dr.ix"; iy: "dr.iy"; iz: "dr.iz"; ja: "dr.ja"; jb: "dr.jb"; jc: "dr.jc"; jd: "dr.jd"; je: "dr.je"; jf: "dr.jf"; jg: "dr.jg"; jh: "dr.jh"; ji: "dr.ji"; jj: "dr.jj"; jk: "dr.jk"; jl: "dr.jl"; jm: "dr.jm"; jn: "dr.jn"; jo: "dr.jo"; jp: "dr.jp"; jq: "dr.jq"; jr: "dr.jr"; js: "dr.js"; jt: "dr.jt"; ju: "dr.ju"; jv: "dr.jv"; jw: "dr.jw"; jx: "dr.jx"; jy: "dr.jy"; jz: "dr.jz"; ka: "dr.ka"; kb: "dr.kb"; kc: "dr.kc"; kd: "dr.kd"; ke: "dr.ke"; kf: "dr.kf"; kg: "dr.kg"; kh: "dr.kh"; ki: "dr.ki"; kj: "dr.kj"; kk: "dr.kk"; kl: "dr.kl"; km: "dr.km"; kn: "dr.kn"; ko: "dr.ko"; kp: "dr.kp"; kq: "dr.kq"; kr: "dr.kr"; ks: "dr.ks"; kt: "dr.kt"; ku: "dr.ku"; kv: "dr.kv"; kw: "dr.kw"; kx: "dr.kx"; ky: "dr.ky"; kz: "dr.kz"; la: "dr.la"; lb: "dr.lb"; lc: "dr.lc"; ld: "dr.ld"; le: "dr.le"; lf: "dr.lf"; lg: "dr.lg"; lh: "dr.lh"; li: "dr.li"; lj: "dr.lj"; lk: "dr.lk"; ll: "dr.ll"; lm: "dr.lm"; ln: "dr.ln"; lo: "dr.lo"; lp: "dr.lp"; lq: "dr.lq"; lr: "dr.lr"; ls: "dr.ls"; lt: "dr.lt"; lu: "dr.lu"; lv: "dr.lv"; lw: "dr.lw"; lx: "dr.lx"; ly: "dr.ly"; lz: "dr.lz"; ma: "dr.ma"; mb: "dr.mb"; mc: "dr.mc"; md: "dr.md"; me: "dr.me"; mf: "dr.mf"; mg: "dr.mg"; mh: "dr.mh"; mi: "dr.mi"; mj: "dr.mj"; mk: "dr.mk"; ml: "dr.ml"; mm: "dr.mm"; mn: "dr.mn"; mo: "dr.mo"; mp: "dr.mp"; mq: "dr.mq"; mr: "dr.mr"; ms: "dr.ms"; mt: "dr.mt"; mu: "dr.mu"; mv: "dr.mv"; mw: "dr.mw"; mx: "dr.mx"; my: "dr.my"; mz: "dr.mz"; na: "dr.na"; nb: "dr.nb"; nc: "dr.nc"; nd: "dr.nd"; ne: "dr.ne"; nf: "dr.nf"; ng: "dr.ng"; nh: "dr.nh"; ni: "dr.ni"; nj: "dr.nj"; nk: "dr.nk"; nl: "dr.nl"; nm: "dr.nm"; nn: "dr.nn"; no: "dr.no"; np: "dr.np"; nq: "dr.nq"; nr: "dr.nr"; ns: "dr.ns"; nt: "dr.nt"; nu: "dr.nu"; nv: "dr.nv"; nw: "dr.nw"; nx: "dr.nx"; ny: "dr.ny"; nz: "dr.nz"; oa: "dr.oa"; ob: "dr.ob"; oc: "dr.oc"; od: "dr.od"; oe: "dr.oe"; of: "dr.of"; og: "dr.og"; oh: "dr.oh"; oi: "dr.oi"; oj: "dr.oj"; ok: "dr.ok"; ol: "dr.ol"; om: "dr.om"; on: "dr.on"; oo: "dr.oo"; op: "dr.op"; oq: "dr.oq"; or: "dr.or"; os: "dr.os"; ot: "dr.ot"; ou: "dr.ou"; ov: "dr.ov"; ow: "dr.ow"; ox: "dr.ox"; oy: "dr.oy"; oz: "dr.oz"; pa: "dr.pa"; pb: "dr.pb"; pc: "dr.pc"; pd: "dr.pd"; pe: "dr.pe"; pf: "dr.pf"; pg: "dr.pg"; ph: "dr.ph"; pi: "dr.pi"; pj: "dr.pj"; pk: "dr.pk"; pl: "dr.pl"; pm: "dr.pm"; pn: "dr.pn"; po: "dr.po"; pp: "dr.pp"; pq: "dr.pq"; pr: "dr.pr"; ps: "dr.ps"; pt: "dr.pt"; pu: "dr.pu"; pv: "dr.pv"; pw: "dr.pw"; px: "dr.px"; py: "dr.py"; pz: "dr.pz"; qa: "dr.qa"; qb: "dr.qb"; qc: "dr.qc"; qd: "dr.qd"; qe: "dr.qe"; qf: "dr.qf"; qg: "dr.qg"; qh: "dr.qh"; qi: "dr.qi"; qj: "dr.qj"; qk: "dr.qk"; ql: "dr.ql"; qm: "dr.qm"; qn: "dr.qn"; qo: "dr.qo"; qp: "dr.qp"; qq: "dr.qq"; qr: "dr.qr"; qs: "dr.qs"; qt: "dr.qt"; qu: "dr.qu"; qv: "dr.qv"; qw: "dr.qw"; qx: "dr.qx"; qy: "dr.qy"; qz: "dr.qz"; ra: "dr.ra"; rb: "dr.rb"; rc: "dr.rc"; rd: "dr.rd"; re: "dr.re"; rf: "dr.rf"; rg: "dr.rg"; rh: "dr.rh"; ri: "dr.ri"; rj: "dr.rj"; rk: "dr.rk"; rl: "dr.rl"; rm: "dr.rm"; rn: "dr.rn"; ro: "dr.ro"; rp: "dr.rp"; rq: "dr.rq"; rr: "dr.rr"; rs: "dr.rs"; rt: "dr.rt"; ru: "dr.ru"; rv: "dr.rv"; rw: "dr.rw"; rx: "dr.rx"; ry: "dr.ry"; rz: "dr.rz"; sa: "dr.sa"; sb: "dr.sb"; sc: "dr.sc"; sd: "dr.sd"; se: "dr.se"; sf: "dr.sf"; sg: "dr.sg"; sh: "dr.sh"; si: "dr.si"; sj: "dr.sj"; sk: "dr.sk"; sl: "dr.sl"; sm: "dr.sm"; sn: "dr.sn"; so: "dr.so"; sp: "dr.sp"; sq: "dr.sq"; sr: "dr.sr"; ss: "dr.ss"; st: "dr.st"; su: "dr.su"; sv: "dr.sv"; sw: "dr.sw"; sx: "dr.sx"; sy: "dr.sy"; sz: "dr.sz"; ta: "dr.ta"; tb: "dr.tb"; tc: "dr.tc"; td: "dr.td"; te: "dr.te"; tf: "dr.tf"; tg: "dr.tg"; th: "dr.th"; ti: "dr.ti"; tj: "dr.tj"; tk: "dr.tk"; tl: "dr.tl"; tm: "dr.tm"; tn: "dr.tn"; to: "dr.to"; tp: "dr.tp"; tq: "dr.tq"; tr: "dr.tr"; ts: "dr.ts"; tt: "dr.tt"; tu: "dr.tu"; tv: "dr.tv"; tw: "dr.tw"; tx: "dr.tx"; ty: "dr.ty"; tz: "dr.tz"; ua: "dr.ua"; ub: "dr.ub"; uc: "dr.uc"; ud: "dr.ud"; ue: "dr.ue"; uf: "dr.uf"; ug: "dr.ug"; uh: "dr.uh"; ui: "dr.ui"; uj: "dr.uj"; uk: "dr.uk"; ul: "dr.ul"; um: "dr.um"; un: "dr.un"; uo: "dr.uo"; up: "dr.up"; uq: "dr.uq"; ur: "dr.ur"; us: "dr.us"; ut: "dr.ut"; uu: "dr.uu"; uv: "dr.uv"; uw: "dr.uw"; ux: "dr.ux"; uy: "dr.uy"; uz: "dr.uz"; va: "dr.va"; vb: "dr.vb"; vc: "dr.vc"; vd: "dr.vd"; ve: "dr.ve"; vf: "dr.vf"; vg: "dr.vg"; vh: "dr.vh"; vi: "dr.vi"; vj: "dr.vj"; vk: "dr.vk"; vl: "dr.vl"; vm: "dr.vm"; vn: "dr.vn"; vo: "dr.vo"; vp: "dr.vp"; vq: "dr.vq"; vr: "dr.vr"; vs: "dr.vs"; vt: "dr.vt"; vu: "dr.vu"; vv: "dr.vv"; vw: "dr.vw"; vx: "dr.vx"; vy: "dr.vy"; vz: "dr.vz"; wa: "dr.wa"; wb: "dr.wb"; wc: "dr.wc"; wd: "dr.wd"; we: "dr.we"; wf: "dr.wf"; wg: "dr.wg"; wh: "dr.wh"; wi: "dr.wi"; wj: "dr.wj"; wk: "dr.wk"; wl: "dr.wl"; wm: "dr.wm"; wn: "dr.wn"; wo: "dr.wo"; wp: "dr.wp"; wq: "dr.wq"; wr: "dr.wr"; ws: "dr.ws"; wt: "dr.wt"; wu: "dr.wu"; wv: "dr.wv"; ww: "dr.ww"; wx: "dr.wx"; wy: "dr.wy"; wz: "dr.wz"; xa: "dr.xa"; xb: "dr.xb"; xc: "dr.xc"; xd: "dr.xd"; xe: "dr.xe"; xf: "dr.xf"; xg: "dr.xg"; xh: "dr.xh"; xi: "dr.xi"; xj: "dr.xj"; xk: "dr.xk"; xl: "dr.xl"; xm: "dr.xm"; xn: "dr.xn"; xo: "dr.xo"; xp: "dr.xp"; xq: "dr.xq"; xr: "dr.xr"; xs: "dr.xs"; xt: "dr.xt"; xu: "dr.xu"; xv: "dr.xv"; xw: "dr.xw"; xx: "dr.xx"; xy: "dr.xy"; xz: "dr.xz"; ya: "dr.ya"; yb: "dr.yb"; yc: "dr.yc"; yd: "dr.yd"; ye: "dr.ye"; yf: "dr.yf"; yg: "dr.yg"; yh: "dr.yh"; yi: "dr.yi"; yj: "dr.yj"; yk: "dr.yk"; yl: "dr.yl"; ym: "dr.ym"; yn: "dr.yn"; yo: "dr.yo"; yp: "dr.yp"; yq: "dr.yq"; yr: "dr.yr"; ys: "dr.ys"; yt: "dr.yt"; yu: "dr.yu"; yv: "dr.yv"; yw: "dr.yw"; yx: "dr.yx"; yy: "dr.yy"; yz: "dr.yz"; za: "dr.za"; zb: "dr.zb"; zc: "dr.zc"; zd: "dr.zd"; ze: "dr.ze"; zf: "dr.zf"; zg: "dr.zg"; zh: "dr.zh"; zi: "dr.zi"; zj: "dr.zj"; zk: "dr.zk"; zl: "dr.zl"; zm: "dr.zm"; zn: "dr.zn"; zo: "dr.zo"; zp: "dr.zp"; zq: "dr.zq"; zr: "dr.zr"; zs: "dr.zs"; zt: "dr.zt"; zu: "dr.zu"; zv: "dr.zv"; zw: "dr.zw"; zx: "dr.zx"; zy: "dr.zy"; zz: "dr.zz"; }; ds: { aa: "ds.aa"; ab: "ds.ab"; ac: "ds.ac"; ad: "ds.ad"; ae: "ds.ae"; af: "ds.af"; ag: "ds.ag"; ah: "ds.ah"; ai: "ds.ai"; aj: "ds.aj"; ak: "ds.ak"; al: "ds.al"; am: "ds.am"; an: "ds.an"; ao: "ds.ao"; ap: "ds.ap"; aq: "ds.aq"; ar: "ds.ar"; as: "ds.as"; at: "ds.at"; au: "ds.au"; av: "ds.av"; aw: "ds.aw"; ax: "ds.ax"; ay: "ds.ay"; az: "ds.az"; ba: "ds.ba"; bb: "ds.bb"; bc: "ds.bc"; bd: "ds.bd"; be: "ds.be"; bf: "ds.bf"; bg: "ds.bg"; bh: "ds.bh"; bi: "ds.bi"; bj: "ds.bj"; bk: "ds.bk"; bl: "ds.bl"; bm: "ds.bm"; bn: "ds.bn"; bo: "ds.bo"; bp: "ds.bp"; bq: "ds.bq"; br: "ds.br"; bs: "ds.bs"; bt: "ds.bt"; bu: "ds.bu"; bv: "ds.bv"; bw: "ds.bw"; bx: "ds.bx"; by: "ds.by"; bz: "ds.bz"; ca: "ds.ca"; cb: "ds.cb"; cc: "ds.cc"; cd: "ds.cd"; ce: "ds.ce"; cf: "ds.cf"; cg: "ds.cg"; ch: "ds.ch"; ci: "ds.ci"; cj: "ds.cj"; ck: "ds.ck"; cl: "ds.cl"; cm: "ds.cm"; cn: "ds.cn"; co: "ds.co"; cp: "ds.cp"; cq: "ds.cq"; cr: "ds.cr"; cs: "ds.cs"; ct: "ds.ct"; cu: "ds.cu"; cv: "ds.cv"; cw: "ds.cw"; cx: "ds.cx"; cy: "ds.cy"; cz: "ds.cz"; da: "ds.da"; db: "ds.db"; dc: "ds.dc"; dd: "ds.dd"; de: "ds.de"; df: "ds.df"; dg: "ds.dg"; dh: "ds.dh"; di: "ds.di"; dj: "ds.dj"; dk: "ds.dk"; dl: "ds.dl"; dm: "ds.dm"; dn: "ds.dn"; do: "ds.do"; dp: "ds.dp"; dq: "ds.dq"; dr: "ds.dr"; ds: "ds.ds"; dt: "ds.dt"; du: "ds.du"; dv: "ds.dv"; dw: "ds.dw"; dx: "ds.dx"; dy: "ds.dy"; dz: "ds.dz"; ea: "ds.ea"; eb: "ds.eb"; ec: "ds.ec"; ed: "ds.ed"; ee: "ds.ee"; ef: "ds.ef"; eg: "ds.eg"; eh: "ds.eh"; ei: "ds.ei"; ej: "ds.ej"; ek: "ds.ek"; el: "ds.el"; em: "ds.em"; en: "ds.en"; eo: "ds.eo"; ep: "ds.ep"; eq: "ds.eq"; er: "ds.er"; es: "ds.es"; et: "ds.et"; eu: "ds.eu"; ev: "ds.ev"; ew: "ds.ew"; ex: "ds.ex"; ey: "ds.ey"; ez: "ds.ez"; fa: "ds.fa"; fb: "ds.fb"; fc: "ds.fc"; fd: "ds.fd"; fe: "ds.fe"; ff: "ds.ff"; fg: "ds.fg"; fh: "ds.fh"; fi: "ds.fi"; fj: "ds.fj"; fk: "ds.fk"; fl: "ds.fl"; fm: "ds.fm"; fn: "ds.fn"; fo: "ds.fo"; fp: "ds.fp"; fq: "ds.fq"; fr: "ds.fr"; fs: "ds.fs"; ft: "ds.ft"; fu: "ds.fu"; fv: "ds.fv"; fw: "ds.fw"; fx: "ds.fx"; fy: "ds.fy"; fz: "ds.fz"; ga: "ds.ga"; gb: "ds.gb"; gc: "ds.gc"; gd: "ds.gd"; ge: "ds.ge"; gf: "ds.gf"; gg: "ds.gg"; gh: "ds.gh"; gi: "ds.gi"; gj: "ds.gj"; gk: "ds.gk"; gl: "ds.gl"; gm: "ds.gm"; gn: "ds.gn"; go: "ds.go"; gp: "ds.gp"; gq: "ds.gq"; gr: "ds.gr"; gs: "ds.gs"; gt: "ds.gt"; gu: "ds.gu"; gv: "ds.gv"; gw: "ds.gw"; gx: "ds.gx"; gy: "ds.gy"; gz: "ds.gz"; ha: "ds.ha"; hb: "ds.hb"; hc: "ds.hc"; hd: "ds.hd"; he: "ds.he"; hf: "ds.hf"; hg: "ds.hg"; hh: "ds.hh"; hi: "ds.hi"; hj: "ds.hj"; hk: "ds.hk"; hl: "ds.hl"; hm: "ds.hm"; hn: "ds.hn"; ho: "ds.ho"; hp: "ds.hp"; hq: "ds.hq"; hr: "ds.hr"; hs: "ds.hs"; ht: "ds.ht"; hu: "ds.hu"; hv: "ds.hv"; hw: "ds.hw"; hx: "ds.hx"; hy: "ds.hy"; hz: "ds.hz"; ia: "ds.ia"; ib: "ds.ib"; ic: "ds.ic"; id: "ds.id"; ie: "ds.ie"; if: "ds.if"; ig: "ds.ig"; ih: "ds.ih"; ii: "ds.ii"; ij: "ds.ij"; ik: "ds.ik"; il: "ds.il"; im: "ds.im"; in: "ds.in"; io: "ds.io"; ip: "ds.ip"; iq: "ds.iq"; ir: "ds.ir"; is: "ds.is"; it: "ds.it"; iu: "ds.iu"; iv: "ds.iv"; iw: "ds.iw"; ix: "ds.ix"; iy: "ds.iy"; iz: "ds.iz"; ja: "ds.ja"; jb: "ds.jb"; jc: "ds.jc"; jd: "ds.jd"; je: "ds.je"; jf: "ds.jf"; jg: "ds.jg"; jh: "ds.jh"; ji: "ds.ji"; jj: "ds.jj"; jk: "ds.jk"; jl: "ds.jl"; jm: "ds.jm"; jn: "ds.jn"; jo: "ds.jo"; jp: "ds.jp"; jq: "ds.jq"; jr: "ds.jr"; js: "ds.js"; jt: "ds.jt"; ju: "ds.ju"; jv: "ds.jv"; jw: "ds.jw"; jx: "ds.jx"; jy: "ds.jy"; jz: "ds.jz"; ka: "ds.ka"; kb: "ds.kb"; kc: "ds.kc"; kd: "ds.kd"; ke: "ds.ke"; kf: "ds.kf"; kg: "ds.kg"; kh: "ds.kh"; ki: "ds.ki"; kj: "ds.kj"; kk: "ds.kk"; kl: "ds.kl"; km: "ds.km"; kn: "ds.kn"; ko: "ds.ko"; kp: "ds.kp"; kq: "ds.kq"; kr: "ds.kr"; ks: "ds.ks"; kt: "ds.kt"; ku: "ds.ku"; kv: "ds.kv"; kw: "ds.kw"; kx: "ds.kx"; ky: "ds.ky"; kz: "ds.kz"; la: "ds.la"; lb: "ds.lb"; lc: "ds.lc"; ld: "ds.ld"; le: "ds.le"; lf: "ds.lf"; lg: "ds.lg"; lh: "ds.lh"; li: "ds.li"; lj: "ds.lj"; lk: "ds.lk"; ll: "ds.ll"; lm: "ds.lm"; ln: "ds.ln"; lo: "ds.lo"; lp: "ds.lp"; lq: "ds.lq"; lr: "ds.lr"; ls: "ds.ls"; lt: "ds.lt"; lu: "ds.lu"; lv: "ds.lv"; lw: "ds.lw"; lx: "ds.lx"; ly: "ds.ly"; lz: "ds.lz"; ma: "ds.ma"; mb: "ds.mb"; mc: "ds.mc"; md: "ds.md"; me: "ds.me"; mf: "ds.mf"; mg: "ds.mg"; mh: "ds.mh"; mi: "ds.mi"; mj: "ds.mj"; mk: "ds.mk"; ml: "ds.ml"; mm: "ds.mm"; mn: "ds.mn"; mo: "ds.mo"; mp: "ds.mp"; mq: "ds.mq"; mr: "ds.mr"; ms: "ds.ms"; mt: "ds.mt"; mu: "ds.mu"; mv: "ds.mv"; mw: "ds.mw"; mx: "ds.mx"; my: "ds.my"; mz: "ds.mz"; na: "ds.na"; nb: "ds.nb"; nc: "ds.nc"; nd: "ds.nd"; ne: "ds.ne"; nf: "ds.nf"; ng: "ds.ng"; nh: "ds.nh"; ni: "ds.ni"; nj: "ds.nj"; nk: "ds.nk"; nl: "ds.nl"; nm: "ds.nm"; nn: "ds.nn"; no: "ds.no"; np: "ds.np"; nq: "ds.nq"; nr: "ds.nr"; ns: "ds.ns"; nt: "ds.nt"; nu: "ds.nu"; nv: "ds.nv"; nw: "ds.nw"; nx: "ds.nx"; ny: "ds.ny"; nz: "ds.nz"; oa: "ds.oa"; ob: "ds.ob"; oc: "ds.oc"; od: "ds.od"; oe: "ds.oe"; of: "ds.of"; og: "ds.og"; oh: "ds.oh"; oi: "ds.oi"; oj: "ds.oj"; ok: "ds.ok"; ol: "ds.ol"; om: "ds.om"; on: "ds.on"; oo: "ds.oo"; op: "ds.op"; oq: "ds.oq"; or: "ds.or"; os: "ds.os"; ot: "ds.ot"; ou: "ds.ou"; ov: "ds.ov"; ow: "ds.ow"; ox: "ds.ox"; oy: "ds.oy"; oz: "ds.oz"; pa: "ds.pa"; pb: "ds.pb"; pc: "ds.pc"; pd: "ds.pd"; pe: "ds.pe"; pf: "ds.pf"; pg: "ds.pg"; ph: "ds.ph"; pi: "ds.pi"; pj: "ds.pj"; pk: "ds.pk"; pl: "ds.pl"; pm: "ds.pm"; pn: "ds.pn"; po: "ds.po"; pp: "ds.pp"; pq: "ds.pq"; pr: "ds.pr"; ps: "ds.ps"; pt: "ds.pt"; pu: "ds.pu"; pv: "ds.pv"; pw: "ds.pw"; px: "ds.px"; py: "ds.py"; pz: "ds.pz"; qa: "ds.qa"; qb: "ds.qb"; qc: "ds.qc"; qd: "ds.qd"; qe: "ds.qe"; qf: "ds.qf"; qg: "ds.qg"; qh: "ds.qh"; qi: "ds.qi"; qj: "ds.qj"; qk: "ds.qk"; ql: "ds.ql"; qm: "ds.qm"; qn: "ds.qn"; qo: "ds.qo"; qp: "ds.qp"; qq: "ds.qq"; qr: "ds.qr"; qs: "ds.qs"; qt: "ds.qt"; qu: "ds.qu"; qv: "ds.qv"; qw: "ds.qw"; qx: "ds.qx"; qy: "ds.qy"; qz: "ds.qz"; ra: "ds.ra"; rb: "ds.rb"; rc: "ds.rc"; rd: "ds.rd"; re: "ds.re"; rf: "ds.rf"; rg: "ds.rg"; rh: "ds.rh"; ri: "ds.ri"; rj: "ds.rj"; rk: "ds.rk"; rl: "ds.rl"; rm: "ds.rm"; rn: "ds.rn"; ro: "ds.ro"; rp: "ds.rp"; rq: "ds.rq"; rr: "ds.rr"; rs: "ds.rs"; rt: "ds.rt"; ru: "ds.ru"; rv: "ds.rv"; rw: "ds.rw"; rx: "ds.rx"; ry: "ds.ry"; rz: "ds.rz"; sa: "ds.sa"; sb: "ds.sb"; sc: "ds.sc"; sd: "ds.sd"; se: "ds.se"; sf: "ds.sf"; sg: "ds.sg"; sh: "ds.sh"; si: "ds.si"; sj: "ds.sj"; sk: "ds.sk"; sl: "ds.sl"; sm: "ds.sm"; sn: "ds.sn"; so: "ds.so"; sp: "ds.sp"; sq: "ds.sq"; sr: "ds.sr"; ss: "ds.ss"; st: "ds.st"; su: "ds.su"; sv: "ds.sv"; sw: "ds.sw"; sx: "ds.sx"; sy: "ds.sy"; sz: "ds.sz"; ta: "ds.ta"; tb: "ds.tb"; tc: "ds.tc"; td: "ds.td"; te: "ds.te"; tf: "ds.tf"; tg: "ds.tg"; th: "ds.th"; ti: "ds.ti"; tj: "ds.tj"; tk: "ds.tk"; tl: "ds.tl"; tm: "ds.tm"; tn: "ds.tn"; to: "ds.to"; tp: "ds.tp"; tq: "ds.tq"; tr: "ds.tr"; ts: "ds.ts"; tt: "ds.tt"; tu: "ds.tu"; tv: "ds.tv"; tw: "ds.tw"; tx: "ds.tx"; ty: "ds.ty"; tz: "ds.tz"; ua: "ds.ua"; ub: "ds.ub"; uc: "ds.uc"; ud: "ds.ud"; ue: "ds.ue"; uf: "ds.uf"; ug: "ds.ug"; uh: "ds.uh"; ui: "ds.ui"; uj: "ds.uj"; uk: "ds.uk"; ul: "ds.ul"; um: "ds.um"; un: "ds.un"; uo: "ds.uo"; up: "ds.up"; uq: "ds.uq"; ur: "ds.ur"; us: "ds.us"; ut: "ds.ut"; uu: "ds.uu"; uv: "ds.uv"; uw: "ds.uw"; ux: "ds.ux"; uy: "ds.uy"; uz: "ds.uz"; va: "ds.va"; vb: "ds.vb"; vc: "ds.vc"; vd: "ds.vd"; ve: "ds.ve"; vf: "ds.vf"; vg: "ds.vg"; vh: "ds.vh"; vi: "ds.vi"; vj: "ds.vj"; vk: "ds.vk"; vl: "ds.vl"; vm: "ds.vm"; vn: "ds.vn"; vo: "ds.vo"; vp: "ds.vp"; vq: "ds.vq"; vr: "ds.vr"; vs: "ds.vs"; vt: "ds.vt"; vu: "ds.vu"; vv: "ds.vv"; vw: "ds.vw"; vx: "ds.vx"; vy: "ds.vy"; vz: "ds.vz"; wa: "ds.wa"; wb: "ds.wb"; wc: "ds.wc"; wd: "ds.wd"; we: "ds.we"; wf: "ds.wf"; wg: "ds.wg"; wh: "ds.wh"; wi: "ds.wi"; wj: "ds.wj"; wk: "ds.wk"; wl: "ds.wl"; wm: "ds.wm"; wn: "ds.wn"; wo: "ds.wo"; wp: "ds.wp"; wq: "ds.wq"; wr: "ds.wr"; ws: "ds.ws"; wt: "ds.wt"; wu: "ds.wu"; wv: "ds.wv"; ww: "ds.ww"; wx: "ds.wx"; wy: "ds.wy"; wz: "ds.wz"; xa: "ds.xa"; xb: "ds.xb"; xc: "ds.xc"; xd: "ds.xd"; xe: "ds.xe"; xf: "ds.xf"; xg: "ds.xg"; xh: "ds.xh"; xi: "ds.xi"; xj: "ds.xj"; xk: "ds.xk"; xl: "ds.xl"; xm: "ds.xm"; xn: "ds.xn"; xo: "ds.xo"; xp: "ds.xp"; xq: "ds.xq"; xr: "ds.xr"; xs: "ds.xs"; xt: "ds.xt"; xu: "ds.xu"; xv: "ds.xv"; xw: "ds.xw"; xx: "ds.xx"; xy: "ds.xy"; xz: "ds.xz"; ya: "ds.ya"; yb: "ds.yb"; yc: "ds.yc"; yd: "ds.yd"; ye: "ds.ye"; yf: "ds.yf"; yg: "ds.yg"; yh: "ds.yh"; yi: "ds.yi"; yj: "ds.yj"; yk: "ds.yk"; yl: "ds.yl"; ym: "ds.ym"; yn: "ds.yn"; yo: "ds.yo"; yp: "ds.yp"; yq: "ds.yq"; yr: "ds.yr"; ys: "ds.ys"; yt: "ds.yt"; yu: "ds.yu"; yv: "ds.yv"; yw: "ds.yw"; yx: "ds.yx"; yy: "ds.yy"; yz: "ds.yz"; za: "ds.za"; zb: "ds.zb"; zc: "ds.zc"; zd: "ds.zd"; ze: "ds.ze"; zf: "ds.zf"; zg: "ds.zg"; zh: "ds.zh"; zi: "ds.zi"; zj: "ds.zj"; zk: "ds.zk"; zl: "ds.zl"; zm: "ds.zm"; zn: "ds.zn"; zo: "ds.zo"; zp: "ds.zp"; zq: "ds.zq"; zr: "ds.zr"; zs: "ds.zs"; zt: "ds.zt"; zu: "ds.zu"; zv: "ds.zv"; zw: "ds.zw"; zx: "ds.zx"; zy: "ds.zy"; zz: "ds.zz"; }; dt: { aa: "dt.aa"; ab: "dt.ab"; ac: "dt.ac"; ad: "dt.ad"; ae: "dt.ae"; af: "dt.af"; ag: "dt.ag"; ah: "dt.ah"; ai: "dt.ai"; aj: "dt.aj"; ak: "dt.ak"; al: "dt.al"; am: "dt.am"; an: "dt.an"; ao: "dt.ao"; ap: "dt.ap"; aq: "dt.aq"; ar: "dt.ar"; as: "dt.as"; at: "dt.at"; au: "dt.au"; av: "dt.av"; aw: "dt.aw"; ax: "dt.ax"; ay: "dt.ay"; az: "dt.az"; ba: "dt.ba"; bb: "dt.bb"; bc: "dt.bc"; bd: "dt.bd"; be: "dt.be"; bf: "dt.bf"; bg: "dt.bg"; bh: "dt.bh"; bi: "dt.bi"; bj: "dt.bj"; bk: "dt.bk"; bl: "dt.bl"; bm: "dt.bm"; bn: "dt.bn"; bo: "dt.bo"; bp: "dt.bp"; bq: "dt.bq"; br: "dt.br"; bs: "dt.bs"; bt: "dt.bt"; bu: "dt.bu"; bv: "dt.bv"; bw: "dt.bw"; bx: "dt.bx"; by: "dt.by"; bz: "dt.bz"; ca: "dt.ca"; cb: "dt.cb"; cc: "dt.cc"; cd: "dt.cd"; ce: "dt.ce"; cf: "dt.cf"; cg: "dt.cg"; ch: "dt.ch"; ci: "dt.ci"; cj: "dt.cj"; ck: "dt.ck"; cl: "dt.cl"; cm: "dt.cm"; cn: "dt.cn"; co: "dt.co"; cp: "dt.cp"; cq: "dt.cq"; cr: "dt.cr"; cs: "dt.cs"; ct: "dt.ct"; cu: "dt.cu"; cv: "dt.cv"; cw: "dt.cw"; cx: "dt.cx"; cy: "dt.cy"; cz: "dt.cz"; da: "dt.da"; db: "dt.db"; dc: "dt.dc"; dd: "dt.dd"; de: "dt.de"; df: "dt.df"; dg: "dt.dg"; dh: "dt.dh"; di: "dt.di"; dj: "dt.dj"; dk: "dt.dk"; dl: "dt.dl"; dm: "dt.dm"; dn: "dt.dn"; do: "dt.do"; dp: "dt.dp"; dq: "dt.dq"; dr: "dt.dr"; ds: "dt.ds"; dt: "dt.dt"; du: "dt.du"; dv: "dt.dv"; dw: "dt.dw"; dx: "dt.dx"; dy: "dt.dy"; dz: "dt.dz"; ea: "dt.ea"; eb: "dt.eb"; ec: "dt.ec"; ed: "dt.ed"; ee: "dt.ee"; ef: "dt.ef"; eg: "dt.eg"; eh: "dt.eh"; ei: "dt.ei"; ej: "dt.ej"; ek: "dt.ek"; el: "dt.el"; em: "dt.em"; en: "dt.en"; eo: "dt.eo"; ep: "dt.ep"; eq: "dt.eq"; er: "dt.er"; es: "dt.es"; et: "dt.et"; eu: "dt.eu"; ev: "dt.ev"; ew: "dt.ew"; ex: "dt.ex"; ey: "dt.ey"; ez: "dt.ez"; fa: "dt.fa"; fb: "dt.fb"; fc: "dt.fc"; fd: "dt.fd"; fe: "dt.fe"; ff: "dt.ff"; fg: "dt.fg"; fh: "dt.fh"; fi: "dt.fi"; fj: "dt.fj"; fk: "dt.fk"; fl: "dt.fl"; fm: "dt.fm"; fn: "dt.fn"; fo: "dt.fo"; fp: "dt.fp"; fq: "dt.fq"; fr: "dt.fr"; fs: "dt.fs"; ft: "dt.ft"; fu: "dt.fu"; fv: "dt.fv"; fw: "dt.fw"; fx: "dt.fx"; fy: "dt.fy"; fz: "dt.fz"; ga: "dt.ga"; gb: "dt.gb"; gc: "dt.gc"; gd: "dt.gd"; ge: "dt.ge"; gf: "dt.gf"; gg: "dt.gg"; gh: "dt.gh"; gi: "dt.gi"; gj: "dt.gj"; gk: "dt.gk"; gl: "dt.gl"; gm: "dt.gm"; gn: "dt.gn"; go: "dt.go"; gp: "dt.gp"; gq: "dt.gq"; gr: "dt.gr"; gs: "dt.gs"; gt: "dt.gt"; gu: "dt.gu"; gv: "dt.gv"; gw: "dt.gw"; gx: "dt.gx"; gy: "dt.gy"; gz: "dt.gz"; ha: "dt.ha"; hb: "dt.hb"; hc: "dt.hc"; hd: "dt.hd"; he: "dt.he"; hf: "dt.hf"; hg: "dt.hg"; hh: "dt.hh"; hi: "dt.hi"; hj: "dt.hj"; hk: "dt.hk"; hl: "dt.hl"; hm: "dt.hm"; hn: "dt.hn"; ho: "dt.ho"; hp: "dt.hp"; hq: "dt.hq"; hr: "dt.hr"; hs: "dt.hs"; ht: "dt.ht"; hu: "dt.hu"; hv: "dt.hv"; hw: "dt.hw"; hx: "dt.hx"; hy: "dt.hy"; hz: "dt.hz"; ia: "dt.ia"; ib: "dt.ib"; ic: "dt.ic"; id: "dt.id"; ie: "dt.ie"; if: "dt.if"; ig: "dt.ig"; ih: "dt.ih"; ii: "dt.ii"; ij: "dt.ij"; ik: "dt.ik"; il: "dt.il"; im: "dt.im"; in: "dt.in"; io: "dt.io"; ip: "dt.ip"; iq: "dt.iq"; ir: "dt.ir"; is: "dt.is"; it: "dt.it"; iu: "dt.iu"; iv: "dt.iv"; iw: "dt.iw"; ix: "dt.ix"; iy: "dt.iy"; iz: "dt.iz"; ja: "dt.ja"; jb: "dt.jb"; jc: "dt.jc"; jd: "dt.jd"; je: "dt.je"; jf: "dt.jf"; jg: "dt.jg"; jh: "dt.jh"; ji: "dt.ji"; jj: "dt.jj"; jk: "dt.jk"; jl: "dt.jl"; jm: "dt.jm"; jn: "dt.jn"; jo: "dt.jo"; jp: "dt.jp"; jq: "dt.jq"; jr: "dt.jr"; js: "dt.js"; jt: "dt.jt"; ju: "dt.ju"; jv: "dt.jv"; jw: "dt.jw"; jx: "dt.jx"; jy: "dt.jy"; jz: "dt.jz"; ka: "dt.ka"; kb: "dt.kb"; kc: "dt.kc"; kd: "dt.kd"; ke: "dt.ke"; kf: "dt.kf"; kg: "dt.kg"; kh: "dt.kh"; ki: "dt.ki"; kj: "dt.kj"; kk: "dt.kk"; kl: "dt.kl"; km: "dt.km"; kn: "dt.kn"; ko: "dt.ko"; kp: "dt.kp"; kq: "dt.kq"; kr: "dt.kr"; ks: "dt.ks"; kt: "dt.kt"; ku: "dt.ku"; kv: "dt.kv"; kw: "dt.kw"; kx: "dt.kx"; ky: "dt.ky"; kz: "dt.kz"; la: "dt.la"; lb: "dt.lb"; lc: "dt.lc"; ld: "dt.ld"; le: "dt.le"; lf: "dt.lf"; lg: "dt.lg"; lh: "dt.lh"; li: "dt.li"; lj: "dt.lj"; lk: "dt.lk"; ll: "dt.ll"; lm: "dt.lm"; ln: "dt.ln"; lo: "dt.lo"; lp: "dt.lp"; lq: "dt.lq"; lr: "dt.lr"; ls: "dt.ls"; lt: "dt.lt"; lu: "dt.lu"; lv: "dt.lv"; lw: "dt.lw"; lx: "dt.lx"; ly: "dt.ly"; lz: "dt.lz"; ma: "dt.ma"; mb: "dt.mb"; mc: "dt.mc"; md: "dt.md"; me: "dt.me"; mf: "dt.mf"; mg: "dt.mg"; mh: "dt.mh"; mi: "dt.mi"; mj: "dt.mj"; mk: "dt.mk"; ml: "dt.ml"; mm: "dt.mm"; mn: "dt.mn"; mo: "dt.mo"; mp: "dt.mp"; mq: "dt.mq"; mr: "dt.mr"; ms: "dt.ms"; mt: "dt.mt"; mu: "dt.mu"; mv: "dt.mv"; mw: "dt.mw"; mx: "dt.mx"; my: "dt.my"; mz: "dt.mz"; na: "dt.na"; nb: "dt.nb"; nc: "dt.nc"; nd: "dt.nd"; ne: "dt.ne"; nf: "dt.nf"; ng: "dt.ng"; nh: "dt.nh"; ni: "dt.ni"; nj: "dt.nj"; nk: "dt.nk"; nl: "dt.nl"; nm: "dt.nm"; nn: "dt.nn"; no: "dt.no"; np: "dt.np"; nq: "dt.nq"; nr: "dt.nr"; ns: "dt.ns"; nt: "dt.nt"; nu: "dt.nu"; nv: "dt.nv"; nw: "dt.nw"; nx: "dt.nx"; ny: "dt.ny"; nz: "dt.nz"; oa: "dt.oa"; ob: "dt.ob"; oc: "dt.oc"; od: "dt.od"; oe: "dt.oe"; of: "dt.of"; og: "dt.og"; oh: "dt.oh"; oi: "dt.oi"; oj: "dt.oj"; ok: "dt.ok"; ol: "dt.ol"; om: "dt.om"; on: "dt.on"; oo: "dt.oo"; op: "dt.op"; oq: "dt.oq"; or: "dt.or"; os: "dt.os"; ot: "dt.ot"; ou: "dt.ou"; ov: "dt.ov"; ow: "dt.ow"; ox: "dt.ox"; oy: "dt.oy"; oz: "dt.oz"; pa: "dt.pa"; pb: "dt.pb"; pc: "dt.pc"; pd: "dt.pd"; pe: "dt.pe"; pf: "dt.pf"; pg: "dt.pg"; ph: "dt.ph"; pi: "dt.pi"; pj: "dt.pj"; pk: "dt.pk"; pl: "dt.pl"; pm: "dt.pm"; pn: "dt.pn"; po: "dt.po"; pp: "dt.pp"; pq: "dt.pq"; pr: "dt.pr"; ps: "dt.ps"; pt: "dt.pt"; pu: "dt.pu"; pv: "dt.pv"; pw: "dt.pw"; px: "dt.px"; py: "dt.py"; pz: "dt.pz"; qa: "dt.qa"; qb: "dt.qb"; qc: "dt.qc"; qd: "dt.qd"; qe: "dt.qe"; qf: "dt.qf"; qg: "dt.qg"; qh: "dt.qh"; qi: "dt.qi"; qj: "dt.qj"; qk: "dt.qk"; ql: "dt.ql"; qm: "dt.qm"; qn: "dt.qn"; qo: "dt.qo"; qp: "dt.qp"; qq: "dt.qq"; qr: "dt.qr"; qs: "dt.qs"; qt: "dt.qt"; qu: "dt.qu"; qv: "dt.qv"; qw: "dt.qw"; qx: "dt.qx"; qy: "dt.qy"; qz: "dt.qz"; ra: "dt.ra"; rb: "dt.rb"; rc: "dt.rc"; rd: "dt.rd"; re: "dt.re"; rf: "dt.rf"; rg: "dt.rg"; rh: "dt.rh"; ri: "dt.ri"; rj: "dt.rj"; rk: "dt.rk"; rl: "dt.rl"; rm: "dt.rm"; rn: "dt.rn"; ro: "dt.ro"; rp: "dt.rp"; rq: "dt.rq"; rr: "dt.rr"; rs: "dt.rs"; rt: "dt.rt"; ru: "dt.ru"; rv: "dt.rv"; rw: "dt.rw"; rx: "dt.rx"; ry: "dt.ry"; rz: "dt.rz"; sa: "dt.sa"; sb: "dt.sb"; sc: "dt.sc"; sd: "dt.sd"; se: "dt.se"; sf: "dt.sf"; sg: "dt.sg"; sh: "dt.sh"; si: "dt.si"; sj: "dt.sj"; sk: "dt.sk"; sl: "dt.sl"; sm: "dt.sm"; sn: "dt.sn"; so: "dt.so"; sp: "dt.sp"; sq: "dt.sq"; sr: "dt.sr"; ss: "dt.ss"; st: "dt.st"; su: "dt.su"; sv: "dt.sv"; sw: "dt.sw"; sx: "dt.sx"; sy: "dt.sy"; sz: "dt.sz"; ta: "dt.ta"; tb: "dt.tb"; tc: "dt.tc"; td: "dt.td"; te: "dt.te"; tf: "dt.tf"; tg: "dt.tg"; th: "dt.th"; ti: "dt.ti"; tj: "dt.tj"; tk: "dt.tk"; tl: "dt.tl"; tm: "dt.tm"; tn: "dt.tn"; to: "dt.to"; tp: "dt.tp"; tq: "dt.tq"; tr: "dt.tr"; ts: "dt.ts"; tt: "dt.tt"; tu: "dt.tu"; tv: "dt.tv"; tw: "dt.tw"; tx: "dt.tx"; ty: "dt.ty"; tz: "dt.tz"; ua: "dt.ua"; ub: "dt.ub"; uc: "dt.uc"; ud: "dt.ud"; ue: "dt.ue"; uf: "dt.uf"; ug: "dt.ug"; uh: "dt.uh"; ui: "dt.ui"; uj: "dt.uj"; uk: "dt.uk"; ul: "dt.ul"; um: "dt.um"; un: "dt.un"; uo: "dt.uo"; up: "dt.up"; uq: "dt.uq"; ur: "dt.ur"; us: "dt.us"; ut: "dt.ut"; uu: "dt.uu"; uv: "dt.uv"; uw: "dt.uw"; ux: "dt.ux"; uy: "dt.uy"; uz: "dt.uz"; va: "dt.va"; vb: "dt.vb"; vc: "dt.vc"; vd: "dt.vd"; ve: "dt.ve"; vf: "dt.vf"; vg: "dt.vg"; vh: "dt.vh"; vi: "dt.vi"; vj: "dt.vj"; vk: "dt.vk"; vl: "dt.vl"; vm: "dt.vm"; vn: "dt.vn"; vo: "dt.vo"; vp: "dt.vp"; vq: "dt.vq"; vr: "dt.vr"; vs: "dt.vs"; vt: "dt.vt"; vu: "dt.vu"; vv: "dt.vv"; vw: "dt.vw"; vx: "dt.vx"; vy: "dt.vy"; vz: "dt.vz"; wa: "dt.wa"; wb: "dt.wb"; wc: "dt.wc"; wd: "dt.wd"; we: "dt.we"; wf: "dt.wf"; wg: "dt.wg"; wh: "dt.wh"; wi: "dt.wi"; wj: "dt.wj"; wk: "dt.wk"; wl: "dt.wl"; wm: "dt.wm"; wn: "dt.wn"; wo: "dt.wo"; wp: "dt.wp"; wq: "dt.wq"; wr: "dt.wr"; ws: "dt.ws"; wt: "dt.wt"; wu: "dt.wu"; wv: "dt.wv"; ww: "dt.ww"; wx: "dt.wx"; wy: "dt.wy"; wz: "dt.wz"; xa: "dt.xa"; xb: "dt.xb"; xc: "dt.xc"; xd: "dt.xd"; xe: "dt.xe"; xf: "dt.xf"; xg: "dt.xg"; xh: "dt.xh"; xi: "dt.xi"; xj: "dt.xj"; xk: "dt.xk"; xl: "dt.xl"; xm: "dt.xm"; xn: "dt.xn"; xo: "dt.xo"; xp: "dt.xp"; xq: "dt.xq"; xr: "dt.xr"; xs: "dt.xs"; xt: "dt.xt"; xu: "dt.xu"; xv: "dt.xv"; xw: "dt.xw"; xx: "dt.xx"; xy: "dt.xy"; xz: "dt.xz"; ya: "dt.ya"; yb: "dt.yb"; yc: "dt.yc"; yd: "dt.yd"; ye: "dt.ye"; yf: "dt.yf"; yg: "dt.yg"; yh: "dt.yh"; yi: "dt.yi"; yj: "dt.yj"; yk: "dt.yk"; yl: "dt.yl"; ym: "dt.ym"; yn: "dt.yn"; yo: "dt.yo"; yp: "dt.yp"; yq: "dt.yq"; yr: "dt.yr"; ys: "dt.ys"; yt: "dt.yt"; yu: "dt.yu"; yv: "dt.yv"; yw: "dt.yw"; yx: "dt.yx"; yy: "dt.yy"; yz: "dt.yz"; za: "dt.za"; zb: "dt.zb"; zc: "dt.zc"; zd: "dt.zd"; ze: "dt.ze"; zf: "dt.zf"; zg: "dt.zg"; zh: "dt.zh"; zi: "dt.zi"; zj: "dt.zj"; zk: "dt.zk"; zl: "dt.zl"; zm: "dt.zm"; zn: "dt.zn"; zo: "dt.zo"; zp: "dt.zp"; zq: "dt.zq"; zr: "dt.zr"; zs: "dt.zs"; zt: "dt.zt"; zu: "dt.zu"; zv: "dt.zv"; zw: "dt.zw"; zx: "dt.zx"; zy: "dt.zy"; zz: "dt.zz"; }; du: { aa: "du.aa"; ab: "du.ab"; ac: "du.ac"; ad: "du.ad"; ae: "du.ae"; af: "du.af"; ag: "du.ag"; ah: "du.ah"; ai: "du.ai"; aj: "du.aj"; ak: "du.ak"; al: "du.al"; am: "du.am"; an: "du.an"; ao: "du.ao"; ap: "du.ap"; aq: "du.aq"; ar: "du.ar"; as: "du.as"; at: "du.at"; au: "du.au"; av: "du.av"; aw: "du.aw"; ax: "du.ax"; ay: "du.ay"; az: "du.az"; ba: "du.ba"; bb: "du.bb"; bc: "du.bc"; bd: "du.bd"; be: "du.be"; bf: "du.bf"; bg: "du.bg"; bh: "du.bh"; bi: "du.bi"; bj: "du.bj"; bk: "du.bk"; bl: "du.bl"; bm: "du.bm"; bn: "du.bn"; bo: "du.bo"; bp: "du.bp"; bq: "du.bq"; br: "du.br"; bs: "du.bs"; bt: "du.bt"; bu: "du.bu"; bv: "du.bv"; bw: "du.bw"; bx: "du.bx"; by: "du.by"; bz: "du.bz"; ca: "du.ca"; cb: "du.cb"; cc: "du.cc"; cd: "du.cd"; ce: "du.ce"; cf: "du.cf"; cg: "du.cg"; ch: "du.ch"; ci: "du.ci"; cj: "du.cj"; ck: "du.ck"; cl: "du.cl"; cm: "du.cm"; cn: "du.cn"; co: "du.co"; cp: "du.cp"; cq: "du.cq"; cr: "du.cr"; cs: "du.cs"; ct: "du.ct"; cu: "du.cu"; cv: "du.cv"; cw: "du.cw"; cx: "du.cx"; cy: "du.cy"; cz: "du.cz"; da: "du.da"; db: "du.db"; dc: "du.dc"; dd: "du.dd"; de: "du.de"; df: "du.df"; dg: "du.dg"; dh: "du.dh"; di: "du.di"; dj: "du.dj"; dk: "du.dk"; dl: "du.dl"; dm: "du.dm"; dn: "du.dn"; do: "du.do"; dp: "du.dp"; dq: "du.dq"; dr: "du.dr"; ds: "du.ds"; dt: "du.dt"; du: "du.du"; dv: "du.dv"; dw: "du.dw"; dx: "du.dx"; dy: "du.dy"; dz: "du.dz"; ea: "du.ea"; eb: "du.eb"; ec: "du.ec"; ed: "du.ed"; ee: "du.ee"; ef: "du.ef"; eg: "du.eg"; eh: "du.eh"; ei: "du.ei"; ej: "du.ej"; ek: "du.ek"; el: "du.el"; em: "du.em"; en: "du.en"; eo: "du.eo"; ep: "du.ep"; eq: "du.eq"; er: "du.er"; es: "du.es"; et: "du.et"; eu: "du.eu"; ev: "du.ev"; ew: "du.ew"; ex: "du.ex"; ey: "du.ey"; ez: "du.ez"; fa: "du.fa"; fb: "du.fb"; fc: "du.fc"; fd: "du.fd"; fe: "du.fe"; ff: "du.ff"; fg: "du.fg"; fh: "du.fh"; fi: "du.fi"; fj: "du.fj"; fk: "du.fk"; fl: "du.fl"; fm: "du.fm"; fn: "du.fn"; fo: "du.fo"; fp: "du.fp"; fq: "du.fq"; fr: "du.fr"; fs: "du.fs"; ft: "du.ft"; fu: "du.fu"; fv: "du.fv"; fw: "du.fw"; fx: "du.fx"; fy: "du.fy"; fz: "du.fz"; ga: "du.ga"; gb: "du.gb"; gc: "du.gc"; gd: "du.gd"; ge: "du.ge"; gf: "du.gf"; gg: "du.gg"; gh: "du.gh"; gi: "du.gi"; gj: "du.gj"; gk: "du.gk"; gl: "du.gl"; gm: "du.gm"; gn: "du.gn"; go: "du.go"; gp: "du.gp"; gq: "du.gq"; gr: "du.gr"; gs: "du.gs"; gt: "du.gt"; gu: "du.gu"; gv: "du.gv"; gw: "du.gw"; gx: "du.gx"; gy: "du.gy"; gz: "du.gz"; ha: "du.ha"; hb: "du.hb"; hc: "du.hc"; hd: "du.hd"; he: "du.he"; hf: "du.hf"; hg: "du.hg"; hh: "du.hh"; hi: "du.hi"; hj: "du.hj"; hk: "du.hk"; hl: "du.hl"; hm: "du.hm"; hn: "du.hn"; ho: "du.ho"; hp: "du.hp"; hq: "du.hq"; hr: "du.hr"; hs: "du.hs"; ht: "du.ht"; hu: "du.hu"; hv: "du.hv"; hw: "du.hw"; hx: "du.hx"; hy: "du.hy"; hz: "du.hz"; ia: "du.ia"; ib: "du.ib"; ic: "du.ic"; id: "du.id"; ie: "du.ie"; if: "du.if"; ig: "du.ig"; ih: "du.ih"; ii: "du.ii"; ij: "du.ij"; ik: "du.ik"; il: "du.il"; im: "du.im"; in: "du.in"; io: "du.io"; ip: "du.ip"; iq: "du.iq"; ir: "du.ir"; is: "du.is"; it: "du.it"; iu: "du.iu"; iv: "du.iv"; iw: "du.iw"; ix: "du.ix"; iy: "du.iy"; iz: "du.iz"; ja: "du.ja"; jb: "du.jb"; jc: "du.jc"; jd: "du.jd"; je: "du.je"; jf: "du.jf"; jg: "du.jg"; jh: "du.jh"; ji: "du.ji"; jj: "du.jj"; jk: "du.jk"; jl: "du.jl"; jm: "du.jm"; jn: "du.jn"; jo: "du.jo"; jp: "du.jp"; jq: "du.jq"; jr: "du.jr"; js: "du.js"; jt: "du.jt"; ju: "du.ju"; jv: "du.jv"; jw: "du.jw"; jx: "du.jx"; jy: "du.jy"; jz: "du.jz"; ka: "du.ka"; kb: "du.kb"; kc: "du.kc"; kd: "du.kd"; ke: "du.ke"; kf: "du.kf"; kg: "du.kg"; kh: "du.kh"; ki: "du.ki"; kj: "du.kj"; kk: "du.kk"; kl: "du.kl"; km: "du.km"; kn: "du.kn"; ko: "du.ko"; kp: "du.kp"; kq: "du.kq"; kr: "du.kr"; ks: "du.ks"; kt: "du.kt"; ku: "du.ku"; kv: "du.kv"; kw: "du.kw"; kx: "du.kx"; ky: "du.ky"; kz: "du.kz"; la: "du.la"; lb: "du.lb"; lc: "du.lc"; ld: "du.ld"; le: "du.le"; lf: "du.lf"; lg: "du.lg"; lh: "du.lh"; li: "du.li"; lj: "du.lj"; lk: "du.lk"; ll: "du.ll"; lm: "du.lm"; ln: "du.ln"; lo: "du.lo"; lp: "du.lp"; lq: "du.lq"; lr: "du.lr"; ls: "du.ls"; lt: "du.lt"; lu: "du.lu"; lv: "du.lv"; lw: "du.lw"; lx: "du.lx"; ly: "du.ly"; lz: "du.lz"; ma: "du.ma"; mb: "du.mb"; mc: "du.mc"; md: "du.md"; me: "du.me"; mf: "du.mf"; mg: "du.mg"; mh: "du.mh"; mi: "du.mi"; mj: "du.mj"; mk: "du.mk"; ml: "du.ml"; mm: "du.mm"; mn: "du.mn"; mo: "du.mo"; mp: "du.mp"; mq: "du.mq"; mr: "du.mr"; ms: "du.ms"; mt: "du.mt"; mu: "du.mu"; mv: "du.mv"; mw: "du.mw"; mx: "du.mx"; my: "du.my"; mz: "du.mz"; na: "du.na"; nb: "du.nb"; nc: "du.nc"; nd: "du.nd"; ne: "du.ne"; nf: "du.nf"; ng: "du.ng"; nh: "du.nh"; ni: "du.ni"; nj: "du.nj"; nk: "du.nk"; nl: "du.nl"; nm: "du.nm"; nn: "du.nn"; no: "du.no"; np: "du.np"; nq: "du.nq"; nr: "du.nr"; ns: "du.ns"; nt: "du.nt"; nu: "du.nu"; nv: "du.nv"; nw: "du.nw"; nx: "du.nx"; ny: "du.ny"; nz: "du.nz"; oa: "du.oa"; ob: "du.ob"; oc: "du.oc"; od: "du.od"; oe: "du.oe"; of: "du.of"; og: "du.og"; oh: "du.oh"; oi: "du.oi"; oj: "du.oj"; ok: "du.ok"; ol: "du.ol"; om: "du.om"; on: "du.on"; oo: "du.oo"; op: "du.op"; oq: "du.oq"; or: "du.or"; os: "du.os"; ot: "du.ot"; ou: "du.ou"; ov: "du.ov"; ow: "du.ow"; ox: "du.ox"; oy: "du.oy"; oz: "du.oz"; pa: "du.pa"; pb: "du.pb"; pc: "du.pc"; pd: "du.pd"; pe: "du.pe"; pf: "du.pf"; pg: "du.pg"; ph: "du.ph"; pi: "du.pi"; pj: "du.pj"; pk: "du.pk"; pl: "du.pl"; pm: "du.pm"; pn: "du.pn"; po: "du.po"; pp: "du.pp"; pq: "du.pq"; pr: "du.pr"; ps: "du.ps"; pt: "du.pt"; pu: "du.pu"; pv: "du.pv"; pw: "du.pw"; px: "du.px"; py: "du.py"; pz: "du.pz"; qa: "du.qa"; qb: "du.qb"; qc: "du.qc"; qd: "du.qd"; qe: "du.qe"; qf: "du.qf"; qg: "du.qg"; qh: "du.qh"; qi: "du.qi"; qj: "du.qj"; qk: "du.qk"; ql: "du.ql"; qm: "du.qm"; qn: "du.qn"; qo: "du.qo"; qp: "du.qp"; qq: "du.qq"; qr: "du.qr"; qs: "du.qs"; qt: "du.qt"; qu: "du.qu"; qv: "du.qv"; qw: "du.qw"; qx: "du.qx"; qy: "du.qy"; qz: "du.qz"; ra: "du.ra"; rb: "du.rb"; rc: "du.rc"; rd: "du.rd"; re: "du.re"; rf: "du.rf"; rg: "du.rg"; rh: "du.rh"; ri: "du.ri"; rj: "du.rj"; rk: "du.rk"; rl: "du.rl"; rm: "du.rm"; rn: "du.rn"; ro: "du.ro"; rp: "du.rp"; rq: "du.rq"; rr: "du.rr"; rs: "du.rs"; rt: "du.rt"; ru: "du.ru"; rv: "du.rv"; rw: "du.rw"; rx: "du.rx"; ry: "du.ry"; rz: "du.rz"; sa: "du.sa"; sb: "du.sb"; sc: "du.sc"; sd: "du.sd"; se: "du.se"; sf: "du.sf"; sg: "du.sg"; sh: "du.sh"; si: "du.si"; sj: "du.sj"; sk: "du.sk"; sl: "du.sl"; sm: "du.sm"; sn: "du.sn"; so: "du.so"; sp: "du.sp"; sq: "du.sq"; sr: "du.sr"; ss: "du.ss"; st: "du.st"; su: "du.su"; sv: "du.sv"; sw: "du.sw"; sx: "du.sx"; sy: "du.sy"; sz: "du.sz"; ta: "du.ta"; tb: "du.tb"; tc: "du.tc"; td: "du.td"; te: "du.te"; tf: "du.tf"; tg: "du.tg"; th: "du.th"; ti: "du.ti"; tj: "du.tj"; tk: "du.tk"; tl: "du.tl"; tm: "du.tm"; tn: "du.tn"; to: "du.to"; tp: "du.tp"; tq: "du.tq"; tr: "du.tr"; ts: "du.ts"; tt: "du.tt"; tu: "du.tu"; tv: "du.tv"; tw: "du.tw"; tx: "du.tx"; ty: "du.ty"; tz: "du.tz"; ua: "du.ua"; ub: "du.ub"; uc: "du.uc"; ud: "du.ud"; ue: "du.ue"; uf: "du.uf"; ug: "du.ug"; uh: "du.uh"; ui: "du.ui"; uj: "du.uj"; uk: "du.uk"; ul: "du.ul"; um: "du.um"; un: "du.un"; uo: "du.uo"; up: "du.up"; uq: "du.uq"; ur: "du.ur"; us: "du.us"; ut: "du.ut"; uu: "du.uu"; uv: "du.uv"; uw: "du.uw"; ux: "du.ux"; uy: "du.uy"; uz: "du.uz"; va: "du.va"; vb: "du.vb"; vc: "du.vc"; vd: "du.vd"; ve: "du.ve"; vf: "du.vf"; vg: "du.vg"; vh: "du.vh"; vi: "du.vi"; vj: "du.vj"; vk: "du.vk"; vl: "du.vl"; vm: "du.vm"; vn: "du.vn"; vo: "du.vo"; vp: "du.vp"; vq: "du.vq"; vr: "du.vr"; vs: "du.vs"; vt: "du.vt"; vu: "du.vu"; vv: "du.vv"; vw: "du.vw"; vx: "du.vx"; vy: "du.vy"; vz: "du.vz"; wa: "du.wa"; wb: "du.wb"; wc: "du.wc"; wd: "du.wd"; we: "du.we"; wf: "du.wf"; wg: "du.wg"; wh: "du.wh"; wi: "du.wi"; wj: "du.wj"; wk: "du.wk"; wl: "du.wl"; wm: "du.wm"; wn: "du.wn"; wo: "du.wo"; wp: "du.wp"; wq: "du.wq"; wr: "du.wr"; ws: "du.ws"; wt: "du.wt"; wu: "du.wu"; wv: "du.wv"; ww: "du.ww"; wx: "du.wx"; wy: "du.wy"; wz: "du.wz"; xa: "du.xa"; xb: "du.xb"; xc: "du.xc"; xd: "du.xd"; xe: "du.xe"; xf: "du.xf"; xg: "du.xg"; xh: "du.xh"; xi: "du.xi"; xj: "du.xj"; xk: "du.xk"; xl: "du.xl"; xm: "du.xm"; xn: "du.xn"; xo: "du.xo"; xp: "du.xp"; xq: "du.xq"; xr: "du.xr"; xs: "du.xs"; xt: "du.xt"; xu: "du.xu"; xv: "du.xv"; xw: "du.xw"; xx: "du.xx"; xy: "du.xy"; xz: "du.xz"; ya: "du.ya"; yb: "du.yb"; yc: "du.yc"; yd: "du.yd"; ye: "du.ye"; yf: "du.yf"; yg: "du.yg"; yh: "du.yh"; yi: "du.yi"; yj: "du.yj"; yk: "du.yk"; yl: "du.yl"; ym: "du.ym"; yn: "du.yn"; yo: "du.yo"; yp: "du.yp"; yq: "du.yq"; yr: "du.yr"; ys: "du.ys"; yt: "du.yt"; yu: "du.yu"; yv: "du.yv"; yw: "du.yw"; yx: "du.yx"; yy: "du.yy"; yz: "du.yz"; za: "du.za"; zb: "du.zb"; zc: "du.zc"; zd: "du.zd"; ze: "du.ze"; zf: "du.zf"; zg: "du.zg"; zh: "du.zh"; zi: "du.zi"; zj: "du.zj"; zk: "du.zk"; zl: "du.zl"; zm: "du.zm"; zn: "du.zn"; zo: "du.zo"; zp: "du.zp"; zq: "du.zq"; zr: "du.zr"; zs: "du.zs"; zt: "du.zt"; zu: "du.zu"; zv: "du.zv"; zw: "du.zw"; zx: "du.zx"; zy: "du.zy"; zz: "du.zz"; }; dv: { aa: "dv.aa"; ab: "dv.ab"; ac: "dv.ac"; ad: "dv.ad"; ae: "dv.ae"; af: "dv.af"; ag: "dv.ag"; ah: "dv.ah"; ai: "dv.ai"; aj: "dv.aj"; ak: "dv.ak"; al: "dv.al"; am: "dv.am"; an: "dv.an"; ao: "dv.ao"; ap: "dv.ap"; aq: "dv.aq"; ar: "dv.ar"; as: "dv.as"; at: "dv.at"; au: "dv.au"; av: "dv.av"; aw: "dv.aw"; ax: "dv.ax"; ay: "dv.ay"; az: "dv.az"; ba: "dv.ba"; bb: "dv.bb"; bc: "dv.bc"; bd: "dv.bd"; be: "dv.be"; bf: "dv.bf"; bg: "dv.bg"; bh: "dv.bh"; bi: "dv.bi"; bj: "dv.bj"; bk: "dv.bk"; bl: "dv.bl"; bm: "dv.bm"; bn: "dv.bn"; bo: "dv.bo"; bp: "dv.bp"; bq: "dv.bq"; br: "dv.br"; bs: "dv.bs"; bt: "dv.bt"; bu: "dv.bu"; bv: "dv.bv"; bw: "dv.bw"; bx: "dv.bx"; by: "dv.by"; bz: "dv.bz"; ca: "dv.ca"; cb: "dv.cb"; cc: "dv.cc"; cd: "dv.cd"; ce: "dv.ce"; cf: "dv.cf"; cg: "dv.cg"; ch: "dv.ch"; ci: "dv.ci"; cj: "dv.cj"; ck: "dv.ck"; cl: "dv.cl"; cm: "dv.cm"; cn: "dv.cn"; co: "dv.co"; cp: "dv.cp"; cq: "dv.cq"; cr: "dv.cr"; cs: "dv.cs"; ct: "dv.ct"; cu: "dv.cu"; cv: "dv.cv"; cw: "dv.cw"; cx: "dv.cx"; cy: "dv.cy"; cz: "dv.cz"; da: "dv.da"; db: "dv.db"; dc: "dv.dc"; dd: "dv.dd"; de: "dv.de"; df: "dv.df"; dg: "dv.dg"; dh: "dv.dh"; di: "dv.di"; dj: "dv.dj"; dk: "dv.dk"; dl: "dv.dl"; dm: "dv.dm"; dn: "dv.dn"; do: "dv.do"; dp: "dv.dp"; dq: "dv.dq"; dr: "dv.dr"; ds: "dv.ds"; dt: "dv.dt"; du: "dv.du"; dv: "dv.dv"; dw: "dv.dw"; dx: "dv.dx"; dy: "dv.dy"; dz: "dv.dz"; ea: "dv.ea"; eb: "dv.eb"; ec: "dv.ec"; ed: "dv.ed"; ee: "dv.ee"; ef: "dv.ef"; eg: "dv.eg"; eh: "dv.eh"; ei: "dv.ei"; ej: "dv.ej"; ek: "dv.ek"; el: "dv.el"; em: "dv.em"; en: "dv.en"; eo: "dv.eo"; ep: "dv.ep"; eq: "dv.eq"; er: "dv.er"; es: "dv.es"; et: "dv.et"; eu: "dv.eu"; ev: "dv.ev"; ew: "dv.ew"; ex: "dv.ex"; ey: "dv.ey"; ez: "dv.ez"; fa: "dv.fa"; fb: "dv.fb"; fc: "dv.fc"; fd: "dv.fd"; fe: "dv.fe"; ff: "dv.ff"; fg: "dv.fg"; fh: "dv.fh"; fi: "dv.fi"; fj: "dv.fj"; fk: "dv.fk"; fl: "dv.fl"; fm: "dv.fm"; fn: "dv.fn"; fo: "dv.fo"; fp: "dv.fp"; fq: "dv.fq"; fr: "dv.fr"; fs: "dv.fs"; ft: "dv.ft"; fu: "dv.fu"; fv: "dv.fv"; fw: "dv.fw"; fx: "dv.fx"; fy: "dv.fy"; fz: "dv.fz"; ga: "dv.ga"; gb: "dv.gb"; gc: "dv.gc"; gd: "dv.gd"; ge: "dv.ge"; gf: "dv.gf"; gg: "dv.gg"; gh: "dv.gh"; gi: "dv.gi"; gj: "dv.gj"; gk: "dv.gk"; gl: "dv.gl"; gm: "dv.gm"; gn: "dv.gn"; go: "dv.go"; gp: "dv.gp"; gq: "dv.gq"; gr: "dv.gr"; gs: "dv.gs"; gt: "dv.gt"; gu: "dv.gu"; gv: "dv.gv"; gw: "dv.gw"; gx: "dv.gx"; gy: "dv.gy"; gz: "dv.gz"; ha: "dv.ha"; hb: "dv.hb"; hc: "dv.hc"; hd: "dv.hd"; he: "dv.he"; hf: "dv.hf"; hg: "dv.hg"; hh: "dv.hh"; hi: "dv.hi"; hj: "dv.hj"; hk: "dv.hk"; hl: "dv.hl"; hm: "dv.hm"; hn: "dv.hn"; ho: "dv.ho"; hp: "dv.hp"; hq: "dv.hq"; hr: "dv.hr"; hs: "dv.hs"; ht: "dv.ht"; hu: "dv.hu"; hv: "dv.hv"; hw: "dv.hw"; hx: "dv.hx"; hy: "dv.hy"; hz: "dv.hz"; ia: "dv.ia"; ib: "dv.ib"; ic: "dv.ic"; id: "dv.id"; ie: "dv.ie"; if: "dv.if"; ig: "dv.ig"; ih: "dv.ih"; ii: "dv.ii"; ij: "dv.ij"; ik: "dv.ik"; il: "dv.il"; im: "dv.im"; in: "dv.in"; io: "dv.io"; ip: "dv.ip"; iq: "dv.iq"; ir: "dv.ir"; is: "dv.is"; it: "dv.it"; iu: "dv.iu"; iv: "dv.iv"; iw: "dv.iw"; ix: "dv.ix"; iy: "dv.iy"; iz: "dv.iz"; ja: "dv.ja"; jb: "dv.jb"; jc: "dv.jc"; jd: "dv.jd"; je: "dv.je"; jf: "dv.jf"; jg: "dv.jg"; jh: "dv.jh"; ji: "dv.ji"; jj: "dv.jj"; jk: "dv.jk"; jl: "dv.jl"; jm: "dv.jm"; jn: "dv.jn"; jo: "dv.jo"; jp: "dv.jp"; jq: "dv.jq"; jr: "dv.jr"; js: "dv.js"; jt: "dv.jt"; ju: "dv.ju"; jv: "dv.jv"; jw: "dv.jw"; jx: "dv.jx"; jy: "dv.jy"; jz: "dv.jz"; ka: "dv.ka"; kb: "dv.kb"; kc: "dv.kc"; kd: "dv.kd"; ke: "dv.ke"; kf: "dv.kf"; kg: "dv.kg"; kh: "dv.kh"; ki: "dv.ki"; kj: "dv.kj"; kk: "dv.kk"; kl: "dv.kl"; km: "dv.km"; kn: "dv.kn"; ko: "dv.ko"; kp: "dv.kp"; kq: "dv.kq"; kr: "dv.kr"; ks: "dv.ks"; kt: "dv.kt"; ku: "dv.ku"; kv: "dv.kv"; kw: "dv.kw"; kx: "dv.kx"; ky: "dv.ky"; kz: "dv.kz"; la: "dv.la"; lb: "dv.lb"; lc: "dv.lc"; ld: "dv.ld"; le: "dv.le"; lf: "dv.lf"; lg: "dv.lg"; lh: "dv.lh"; li: "dv.li"; lj: "dv.lj"; lk: "dv.lk"; ll: "dv.ll"; lm: "dv.lm"; ln: "dv.ln"; lo: "dv.lo"; lp: "dv.lp"; lq: "dv.lq"; lr: "dv.lr"; ls: "dv.ls"; lt: "dv.lt"; lu: "dv.lu"; lv: "dv.lv"; lw: "dv.lw"; lx: "dv.lx"; ly: "dv.ly"; lz: "dv.lz"; ma: "dv.ma"; mb: "dv.mb"; mc: "dv.mc"; md: "dv.md"; me: "dv.me"; mf: "dv.mf"; mg: "dv.mg"; mh: "dv.mh"; mi: "dv.mi"; mj: "dv.mj"; mk: "dv.mk"; ml: "dv.ml"; mm: "dv.mm"; mn: "dv.mn"; mo: "dv.mo"; mp: "dv.mp"; mq: "dv.mq"; mr: "dv.mr"; ms: "dv.ms"; mt: "dv.mt"; mu: "dv.mu"; mv: "dv.mv"; mw: "dv.mw"; mx: "dv.mx"; my: "dv.my"; mz: "dv.mz"; na: "dv.na"; nb: "dv.nb"; nc: "dv.nc"; nd: "dv.nd"; ne: "dv.ne"; nf: "dv.nf"; ng: "dv.ng"; nh: "dv.nh"; ni: "dv.ni"; nj: "dv.nj"; nk: "dv.nk"; nl: "dv.nl"; nm: "dv.nm"; nn: "dv.nn"; no: "dv.no"; np: "dv.np"; nq: "dv.nq"; nr: "dv.nr"; ns: "dv.ns"; nt: "dv.nt"; nu: "dv.nu"; nv: "dv.nv"; nw: "dv.nw"; nx: "dv.nx"; ny: "dv.ny"; nz: "dv.nz"; oa: "dv.oa"; ob: "dv.ob"; oc: "dv.oc"; od: "dv.od"; oe: "dv.oe"; of: "dv.of"; og: "dv.og"; oh: "dv.oh"; oi: "dv.oi"; oj: "dv.oj"; ok: "dv.ok"; ol: "dv.ol"; om: "dv.om"; on: "dv.on"; oo: "dv.oo"; op: "dv.op"; oq: "dv.oq"; or: "dv.or"; os: "dv.os"; ot: "dv.ot"; ou: "dv.ou"; ov: "dv.ov"; ow: "dv.ow"; ox: "dv.ox"; oy: "dv.oy"; oz: "dv.oz"; pa: "dv.pa"; pb: "dv.pb"; pc: "dv.pc"; pd: "dv.pd"; pe: "dv.pe"; pf: "dv.pf"; pg: "dv.pg"; ph: "dv.ph"; pi: "dv.pi"; pj: "dv.pj"; pk: "dv.pk"; pl: "dv.pl"; pm: "dv.pm"; pn: "dv.pn"; po: "dv.po"; pp: "dv.pp"; pq: "dv.pq"; pr: "dv.pr"; ps: "dv.ps"; pt: "dv.pt"; pu: "dv.pu"; pv: "dv.pv"; pw: "dv.pw"; px: "dv.px"; py: "dv.py"; pz: "dv.pz"; qa: "dv.qa"; qb: "dv.qb"; qc: "dv.qc"; qd: "dv.qd"; qe: "dv.qe"; qf: "dv.qf"; qg: "dv.qg"; qh: "dv.qh"; qi: "dv.qi"; qj: "dv.qj"; qk: "dv.qk"; ql: "dv.ql"; qm: "dv.qm"; qn: "dv.qn"; qo: "dv.qo"; qp: "dv.qp"; qq: "dv.qq"; qr: "dv.qr"; qs: "dv.qs"; qt: "dv.qt"; qu: "dv.qu"; qv: "dv.qv"; qw: "dv.qw"; qx: "dv.qx"; qy: "dv.qy"; qz: "dv.qz"; ra: "dv.ra"; rb: "dv.rb"; rc: "dv.rc"; rd: "dv.rd"; re: "dv.re"; rf: "dv.rf"; rg: "dv.rg"; rh: "dv.rh"; ri: "dv.ri"; rj: "dv.rj"; rk: "dv.rk"; rl: "dv.rl"; rm: "dv.rm"; rn: "dv.rn"; ro: "dv.ro"; rp: "dv.rp"; rq: "dv.rq"; rr: "dv.rr"; rs: "dv.rs"; rt: "dv.rt"; ru: "dv.ru"; rv: "dv.rv"; rw: "dv.rw"; rx: "dv.rx"; ry: "dv.ry"; rz: "dv.rz"; sa: "dv.sa"; sb: "dv.sb"; sc: "dv.sc"; sd: "dv.sd"; se: "dv.se"; sf: "dv.sf"; sg: "dv.sg"; sh: "dv.sh"; si: "dv.si"; sj: "dv.sj"; sk: "dv.sk"; sl: "dv.sl"; sm: "dv.sm"; sn: "dv.sn"; so: "dv.so"; sp: "dv.sp"; sq: "dv.sq"; sr: "dv.sr"; ss: "dv.ss"; st: "dv.st"; su: "dv.su"; sv: "dv.sv"; sw: "dv.sw"; sx: "dv.sx"; sy: "dv.sy"; sz: "dv.sz"; ta: "dv.ta"; tb: "dv.tb"; tc: "dv.tc"; td: "dv.td"; te: "dv.te"; tf: "dv.tf"; tg: "dv.tg"; th: "dv.th"; ti: "dv.ti"; tj: "dv.tj"; tk: "dv.tk"; tl: "dv.tl"; tm: "dv.tm"; tn: "dv.tn"; to: "dv.to"; tp: "dv.tp"; tq: "dv.tq"; tr: "dv.tr"; ts: "dv.ts"; tt: "dv.tt"; tu: "dv.tu"; tv: "dv.tv"; tw: "dv.tw"; tx: "dv.tx"; ty: "dv.ty"; tz: "dv.tz"; ua: "dv.ua"; ub: "dv.ub"; uc: "dv.uc"; ud: "dv.ud"; ue: "dv.ue"; uf: "dv.uf"; ug: "dv.ug"; uh: "dv.uh"; ui: "dv.ui"; uj: "dv.uj"; uk: "dv.uk"; ul: "dv.ul"; um: "dv.um"; un: "dv.un"; uo: "dv.uo"; up: "dv.up"; uq: "dv.uq"; ur: "dv.ur"; us: "dv.us"; ut: "dv.ut"; uu: "dv.uu"; uv: "dv.uv"; uw: "dv.uw"; ux: "dv.ux"; uy: "dv.uy"; uz: "dv.uz"; va: "dv.va"; vb: "dv.vb"; vc: "dv.vc"; vd: "dv.vd"; ve: "dv.ve"; vf: "dv.vf"; vg: "dv.vg"; vh: "dv.vh"; vi: "dv.vi"; vj: "dv.vj"; vk: "dv.vk"; vl: "dv.vl"; vm: "dv.vm"; vn: "dv.vn"; vo: "dv.vo"; vp: "dv.vp"; vq: "dv.vq"; vr: "dv.vr"; vs: "dv.vs"; vt: "dv.vt"; vu: "dv.vu"; vv: "dv.vv"; vw: "dv.vw"; vx: "dv.vx"; vy: "dv.vy"; vz: "dv.vz"; wa: "dv.wa"; wb: "dv.wb"; wc: "dv.wc"; wd: "dv.wd"; we: "dv.we"; wf: "dv.wf"; wg: "dv.wg"; wh: "dv.wh"; wi: "dv.wi"; wj: "dv.wj"; wk: "dv.wk"; wl: "dv.wl"; wm: "dv.wm"; wn: "dv.wn"; wo: "dv.wo"; wp: "dv.wp"; wq: "dv.wq"; wr: "dv.wr"; ws: "dv.ws"; wt: "dv.wt"; wu: "dv.wu"; wv: "dv.wv"; ww: "dv.ww"; wx: "dv.wx"; wy: "dv.wy"; wz: "dv.wz"; xa: "dv.xa"; xb: "dv.xb"; xc: "dv.xc"; xd: "dv.xd"; xe: "dv.xe"; xf: "dv.xf"; xg: "dv.xg"; xh: "dv.xh"; xi: "dv.xi"; xj: "dv.xj"; xk: "dv.xk"; xl: "dv.xl"; xm: "dv.xm"; xn: "dv.xn"; xo: "dv.xo"; xp: "dv.xp"; xq: "dv.xq"; xr: "dv.xr"; xs: "dv.xs"; xt: "dv.xt"; xu: "dv.xu"; xv: "dv.xv"; xw: "dv.xw"; xx: "dv.xx"; xy: "dv.xy"; xz: "dv.xz"; ya: "dv.ya"; yb: "dv.yb"; yc: "dv.yc"; yd: "dv.yd"; ye: "dv.ye"; yf: "dv.yf"; yg: "dv.yg"; yh: "dv.yh"; yi: "dv.yi"; yj: "dv.yj"; yk: "dv.yk"; yl: "dv.yl"; ym: "dv.ym"; yn: "dv.yn"; yo: "dv.yo"; yp: "dv.yp"; yq: "dv.yq"; yr: "dv.yr"; ys: "dv.ys"; yt: "dv.yt"; yu: "dv.yu"; yv: "dv.yv"; yw: "dv.yw"; yx: "dv.yx"; yy: "dv.yy"; yz: "dv.yz"; za: "dv.za"; zb: "dv.zb"; zc: "dv.zc"; zd: "dv.zd"; ze: "dv.ze"; zf: "dv.zf"; zg: "dv.zg"; zh: "dv.zh"; zi: "dv.zi"; zj: "dv.zj"; zk: "dv.zk"; zl: "dv.zl"; zm: "dv.zm"; zn: "dv.zn"; zo: "dv.zo"; zp: "dv.zp"; zq: "dv.zq"; zr: "dv.zr"; zs: "dv.zs"; zt: "dv.zt"; zu: "dv.zu"; zv: "dv.zv"; zw: "dv.zw"; zx: "dv.zx"; zy: "dv.zy"; zz: "dv.zz"; }; dw: { aa: "dw.aa"; ab: "dw.ab"; ac: "dw.ac"; ad: "dw.ad"; ae: "dw.ae"; af: "dw.af"; ag: "dw.ag"; ah: "dw.ah"; ai: "dw.ai"; aj: "dw.aj"; ak: "dw.ak"; al: "dw.al"; am: "dw.am"; an: "dw.an"; ao: "dw.ao"; ap: "dw.ap"; aq: "dw.aq"; ar: "dw.ar"; as: "dw.as"; at: "dw.at"; au: "dw.au"; av: "dw.av"; aw: "dw.aw"; ax: "dw.ax"; ay: "dw.ay"; az: "dw.az"; ba: "dw.ba"; bb: "dw.bb"; bc: "dw.bc"; bd: "dw.bd"; be: "dw.be"; bf: "dw.bf"; bg: "dw.bg"; bh: "dw.bh"; bi: "dw.bi"; bj: "dw.bj"; bk: "dw.bk"; bl: "dw.bl"; bm: "dw.bm"; bn: "dw.bn"; bo: "dw.bo"; bp: "dw.bp"; bq: "dw.bq"; br: "dw.br"; bs: "dw.bs"; bt: "dw.bt"; bu: "dw.bu"; bv: "dw.bv"; bw: "dw.bw"; bx: "dw.bx"; by: "dw.by"; bz: "dw.bz"; ca: "dw.ca"; cb: "dw.cb"; cc: "dw.cc"; cd: "dw.cd"; ce: "dw.ce"; cf: "dw.cf"; cg: "dw.cg"; ch: "dw.ch"; ci: "dw.ci"; cj: "dw.cj"; ck: "dw.ck"; cl: "dw.cl"; cm: "dw.cm"; cn: "dw.cn"; co: "dw.co"; cp: "dw.cp"; cq: "dw.cq"; cr: "dw.cr"; cs: "dw.cs"; ct: "dw.ct"; cu: "dw.cu"; cv: "dw.cv"; cw: "dw.cw"; cx: "dw.cx"; cy: "dw.cy"; cz: "dw.cz"; da: "dw.da"; db: "dw.db"; dc: "dw.dc"; dd: "dw.dd"; de: "dw.de"; df: "dw.df"; dg: "dw.dg"; dh: "dw.dh"; di: "dw.di"; dj: "dw.dj"; dk: "dw.dk"; dl: "dw.dl"; dm: "dw.dm"; dn: "dw.dn"; do: "dw.do"; dp: "dw.dp"; dq: "dw.dq"; dr: "dw.dr"; ds: "dw.ds"; dt: "dw.dt"; du: "dw.du"; dv: "dw.dv"; dw: "dw.dw"; dx: "dw.dx"; dy: "dw.dy"; dz: "dw.dz"; ea: "dw.ea"; eb: "dw.eb"; ec: "dw.ec"; ed: "dw.ed"; ee: "dw.ee"; ef: "dw.ef"; eg: "dw.eg"; eh: "dw.eh"; ei: "dw.ei"; ej: "dw.ej"; ek: "dw.ek"; el: "dw.el"; em: "dw.em"; en: "dw.en"; eo: "dw.eo"; ep: "dw.ep"; eq: "dw.eq"; er: "dw.er"; es: "dw.es"; et: "dw.et"; eu: "dw.eu"; ev: "dw.ev"; ew: "dw.ew"; ex: "dw.ex"; ey: "dw.ey"; ez: "dw.ez"; fa: "dw.fa"; fb: "dw.fb"; fc: "dw.fc"; fd: "dw.fd"; fe: "dw.fe"; ff: "dw.ff"; fg: "dw.fg"; fh: "dw.fh"; fi: "dw.fi"; fj: "dw.fj"; fk: "dw.fk"; fl: "dw.fl"; fm: "dw.fm"; fn: "dw.fn"; fo: "dw.fo"; fp: "dw.fp"; fq: "dw.fq"; fr: "dw.fr"; fs: "dw.fs"; ft: "dw.ft"; fu: "dw.fu"; fv: "dw.fv"; fw: "dw.fw"; fx: "dw.fx"; fy: "dw.fy"; fz: "dw.fz"; ga: "dw.ga"; gb: "dw.gb"; gc: "dw.gc"; gd: "dw.gd"; ge: "dw.ge"; gf: "dw.gf"; gg: "dw.gg"; gh: "dw.gh"; gi: "dw.gi"; gj: "dw.gj"; gk: "dw.gk"; gl: "dw.gl"; gm: "dw.gm"; gn: "dw.gn"; go: "dw.go"; gp: "dw.gp"; gq: "dw.gq"; gr: "dw.gr"; gs: "dw.gs"; gt: "dw.gt"; gu: "dw.gu"; gv: "dw.gv"; gw: "dw.gw"; gx: "dw.gx"; gy: "dw.gy"; gz: "dw.gz"; ha: "dw.ha"; hb: "dw.hb"; hc: "dw.hc"; hd: "dw.hd"; he: "dw.he"; hf: "dw.hf"; hg: "dw.hg"; hh: "dw.hh"; hi: "dw.hi"; hj: "dw.hj"; hk: "dw.hk"; hl: "dw.hl"; hm: "dw.hm"; hn: "dw.hn"; ho: "dw.ho"; hp: "dw.hp"; hq: "dw.hq"; hr: "dw.hr"; hs: "dw.hs"; ht: "dw.ht"; hu: "dw.hu"; hv: "dw.hv"; hw: "dw.hw"; hx: "dw.hx"; hy: "dw.hy"; hz: "dw.hz"; ia: "dw.ia"; ib: "dw.ib"; ic: "dw.ic"; id: "dw.id"; ie: "dw.ie"; if: "dw.if"; ig: "dw.ig"; ih: "dw.ih"; ii: "dw.ii"; ij: "dw.ij"; ik: "dw.ik"; il: "dw.il"; im: "dw.im"; in: "dw.in"; io: "dw.io"; ip: "dw.ip"; iq: "dw.iq"; ir: "dw.ir"; is: "dw.is"; it: "dw.it"; iu: "dw.iu"; iv: "dw.iv"; iw: "dw.iw"; ix: "dw.ix"; iy: "dw.iy"; iz: "dw.iz"; ja: "dw.ja"; jb: "dw.jb"; jc: "dw.jc"; jd: "dw.jd"; je: "dw.je"; jf: "dw.jf"; jg: "dw.jg"; jh: "dw.jh"; ji: "dw.ji"; jj: "dw.jj"; jk: "dw.jk"; jl: "dw.jl"; jm: "dw.jm"; jn: "dw.jn"; jo: "dw.jo"; jp: "dw.jp"; jq: "dw.jq"; jr: "dw.jr"; js: "dw.js"; jt: "dw.jt"; ju: "dw.ju"; jv: "dw.jv"; jw: "dw.jw"; jx: "dw.jx"; jy: "dw.jy"; jz: "dw.jz"; ka: "dw.ka"; kb: "dw.kb"; kc: "dw.kc"; kd: "dw.kd"; ke: "dw.ke"; kf: "dw.kf"; kg: "dw.kg"; kh: "dw.kh"; ki: "dw.ki"; kj: "dw.kj"; kk: "dw.kk"; kl: "dw.kl"; km: "dw.km"; kn: "dw.kn"; ko: "dw.ko"; kp: "dw.kp"; kq: "dw.kq"; kr: "dw.kr"; ks: "dw.ks"; kt: "dw.kt"; ku: "dw.ku"; kv: "dw.kv"; kw: "dw.kw"; kx: "dw.kx"; ky: "dw.ky"; kz: "dw.kz"; la: "dw.la"; lb: "dw.lb"; lc: "dw.lc"; ld: "dw.ld"; le: "dw.le"; lf: "dw.lf"; lg: "dw.lg"; lh: "dw.lh"; li: "dw.li"; lj: "dw.lj"; lk: "dw.lk"; ll: "dw.ll"; lm: "dw.lm"; ln: "dw.ln"; lo: "dw.lo"; lp: "dw.lp"; lq: "dw.lq"; lr: "dw.lr"; ls: "dw.ls"; lt: "dw.lt"; lu: "dw.lu"; lv: "dw.lv"; lw: "dw.lw"; lx: "dw.lx"; ly: "dw.ly"; lz: "dw.lz"; ma: "dw.ma"; mb: "dw.mb"; mc: "dw.mc"; md: "dw.md"; me: "dw.me"; mf: "dw.mf"; mg: "dw.mg"; mh: "dw.mh"; mi: "dw.mi"; mj: "dw.mj"; mk: "dw.mk"; ml: "dw.ml"; mm: "dw.mm"; mn: "dw.mn"; mo: "dw.mo"; mp: "dw.mp"; mq: "dw.mq"; mr: "dw.mr"; ms: "dw.ms"; mt: "dw.mt"; mu: "dw.mu"; mv: "dw.mv"; mw: "dw.mw"; mx: "dw.mx"; my: "dw.my"; mz: "dw.mz"; na: "dw.na"; nb: "dw.nb"; nc: "dw.nc"; nd: "dw.nd"; ne: "dw.ne"; nf: "dw.nf"; ng: "dw.ng"; nh: "dw.nh"; ni: "dw.ni"; nj: "dw.nj"; nk: "dw.nk"; nl: "dw.nl"; nm: "dw.nm"; nn: "dw.nn"; no: "dw.no"; np: "dw.np"; nq: "dw.nq"; nr: "dw.nr"; ns: "dw.ns"; nt: "dw.nt"; nu: "dw.nu"; nv: "dw.nv"; nw: "dw.nw"; nx: "dw.nx"; ny: "dw.ny"; nz: "dw.nz"; oa: "dw.oa"; ob: "dw.ob"; oc: "dw.oc"; od: "dw.od"; oe: "dw.oe"; of: "dw.of"; og: "dw.og"; oh: "dw.oh"; oi: "dw.oi"; oj: "dw.oj"; ok: "dw.ok"; ol: "dw.ol"; om: "dw.om"; on: "dw.on"; oo: "dw.oo"; op: "dw.op"; oq: "dw.oq"; or: "dw.or"; os: "dw.os"; ot: "dw.ot"; ou: "dw.ou"; ov: "dw.ov"; ow: "dw.ow"; ox: "dw.ox"; oy: "dw.oy"; oz: "dw.oz"; pa: "dw.pa"; pb: "dw.pb"; pc: "dw.pc"; pd: "dw.pd"; pe: "dw.pe"; pf: "dw.pf"; pg: "dw.pg"; ph: "dw.ph"; pi: "dw.pi"; pj: "dw.pj"; pk: "dw.pk"; pl: "dw.pl"; pm: "dw.pm"; pn: "dw.pn"; po: "dw.po"; pp: "dw.pp"; pq: "dw.pq"; pr: "dw.pr"; ps: "dw.ps"; pt: "dw.pt"; pu: "dw.pu"; pv: "dw.pv"; pw: "dw.pw"; px: "dw.px"; py: "dw.py"; pz: "dw.pz"; qa: "dw.qa"; qb: "dw.qb"; qc: "dw.qc"; qd: "dw.qd"; qe: "dw.qe"; qf: "dw.qf"; qg: "dw.qg"; qh: "dw.qh"; qi: "dw.qi"; qj: "dw.qj"; qk: "dw.qk"; ql: "dw.ql"; qm: "dw.qm"; qn: "dw.qn"; qo: "dw.qo"; qp: "dw.qp"; qq: "dw.qq"; qr: "dw.qr"; qs: "dw.qs"; qt: "dw.qt"; qu: "dw.qu"; qv: "dw.qv"; qw: "dw.qw"; qx: "dw.qx"; qy: "dw.qy"; qz: "dw.qz"; ra: "dw.ra"; rb: "dw.rb"; rc: "dw.rc"; rd: "dw.rd"; re: "dw.re"; rf: "dw.rf"; rg: "dw.rg"; rh: "dw.rh"; ri: "dw.ri"; rj: "dw.rj"; rk: "dw.rk"; rl: "dw.rl"; rm: "dw.rm"; rn: "dw.rn"; ro: "dw.ro"; rp: "dw.rp"; rq: "dw.rq"; rr: "dw.rr"; rs: "dw.rs"; rt: "dw.rt"; ru: "dw.ru"; rv: "dw.rv"; rw: "dw.rw"; rx: "dw.rx"; ry: "dw.ry"; rz: "dw.rz"; sa: "dw.sa"; sb: "dw.sb"; sc: "dw.sc"; sd: "dw.sd"; se: "dw.se"; sf: "dw.sf"; sg: "dw.sg"; sh: "dw.sh"; si: "dw.si"; sj: "dw.sj"; sk: "dw.sk"; sl: "dw.sl"; sm: "dw.sm"; sn: "dw.sn"; so: "dw.so"; sp: "dw.sp"; sq: "dw.sq"; sr: "dw.sr"; ss: "dw.ss"; st: "dw.st"; su: "dw.su"; sv: "dw.sv"; sw: "dw.sw"; sx: "dw.sx"; sy: "dw.sy"; sz: "dw.sz"; ta: "dw.ta"; tb: "dw.tb"; tc: "dw.tc"; td: "dw.td"; te: "dw.te"; tf: "dw.tf"; tg: "dw.tg"; th: "dw.th"; ti: "dw.ti"; tj: "dw.tj"; tk: "dw.tk"; tl: "dw.tl"; tm: "dw.tm"; tn: "dw.tn"; to: "dw.to"; tp: "dw.tp"; tq: "dw.tq"; tr: "dw.tr"; ts: "dw.ts"; tt: "dw.tt"; tu: "dw.tu"; tv: "dw.tv"; tw: "dw.tw"; tx: "dw.tx"; ty: "dw.ty"; tz: "dw.tz"; ua: "dw.ua"; ub: "dw.ub"; uc: "dw.uc"; ud: "dw.ud"; ue: "dw.ue"; uf: "dw.uf"; ug: "dw.ug"; uh: "dw.uh"; ui: "dw.ui"; uj: "dw.uj"; uk: "dw.uk"; ul: "dw.ul"; um: "dw.um"; un: "dw.un"; uo: "dw.uo"; up: "dw.up"; uq: "dw.uq"; ur: "dw.ur"; us: "dw.us"; ut: "dw.ut"; uu: "dw.uu"; uv: "dw.uv"; uw: "dw.uw"; ux: "dw.ux"; uy: "dw.uy"; uz: "dw.uz"; va: "dw.va"; vb: "dw.vb"; vc: "dw.vc"; vd: "dw.vd"; ve: "dw.ve"; vf: "dw.vf"; vg: "dw.vg"; vh: "dw.vh"; vi: "dw.vi"; vj: "dw.vj"; vk: "dw.vk"; vl: "dw.vl"; vm: "dw.vm"; vn: "dw.vn"; vo: "dw.vo"; vp: "dw.vp"; vq: "dw.vq"; vr: "dw.vr"; vs: "dw.vs"; vt: "dw.vt"; vu: "dw.vu"; vv: "dw.vv"; vw: "dw.vw"; vx: "dw.vx"; vy: "dw.vy"; vz: "dw.vz"; wa: "dw.wa"; wb: "dw.wb"; wc: "dw.wc"; wd: "dw.wd"; we: "dw.we"; wf: "dw.wf"; wg: "dw.wg"; wh: "dw.wh"; wi: "dw.wi"; wj: "dw.wj"; wk: "dw.wk"; wl: "dw.wl"; wm: "dw.wm"; wn: "dw.wn"; wo: "dw.wo"; wp: "dw.wp"; wq: "dw.wq"; wr: "dw.wr"; ws: "dw.ws"; wt: "dw.wt"; wu: "dw.wu"; wv: "dw.wv"; ww: "dw.ww"; wx: "dw.wx"; wy: "dw.wy"; wz: "dw.wz"; xa: "dw.xa"; xb: "dw.xb"; xc: "dw.xc"; xd: "dw.xd"; xe: "dw.xe"; xf: "dw.xf"; xg: "dw.xg"; xh: "dw.xh"; xi: "dw.xi"; xj: "dw.xj"; xk: "dw.xk"; xl: "dw.xl"; xm: "dw.xm"; xn: "dw.xn"; xo: "dw.xo"; xp: "dw.xp"; xq: "dw.xq"; xr: "dw.xr"; xs: "dw.xs"; xt: "dw.xt"; xu: "dw.xu"; xv: "dw.xv"; xw: "dw.xw"; xx: "dw.xx"; xy: "dw.xy"; xz: "dw.xz"; ya: "dw.ya"; yb: "dw.yb"; yc: "dw.yc"; yd: "dw.yd"; ye: "dw.ye"; yf: "dw.yf"; yg: "dw.yg"; yh: "dw.yh"; yi: "dw.yi"; yj: "dw.yj"; yk: "dw.yk"; yl: "dw.yl"; ym: "dw.ym"; yn: "dw.yn"; yo: "dw.yo"; yp: "dw.yp"; yq: "dw.yq"; yr: "dw.yr"; ys: "dw.ys"; yt: "dw.yt"; yu: "dw.yu"; yv: "dw.yv"; yw: "dw.yw"; yx: "dw.yx"; yy: "dw.yy"; yz: "dw.yz"; za: "dw.za"; zb: "dw.zb"; zc: "dw.zc"; zd: "dw.zd"; ze: "dw.ze"; zf: "dw.zf"; zg: "dw.zg"; zh: "dw.zh"; zi: "dw.zi"; zj: "dw.zj"; zk: "dw.zk"; zl: "dw.zl"; zm: "dw.zm"; zn: "dw.zn"; zo: "dw.zo"; zp: "dw.zp"; zq: "dw.zq"; zr: "dw.zr"; zs: "dw.zs"; zt: "dw.zt"; zu: "dw.zu"; zv: "dw.zv"; zw: "dw.zw"; zx: "dw.zx"; zy: "dw.zy"; zz: "dw.zz"; }; dx: { aa: "dx.aa"; ab: "dx.ab"; ac: "dx.ac"; ad: "dx.ad"; ae: "dx.ae"; af: "dx.af"; ag: "dx.ag"; ah: "dx.ah"; ai: "dx.ai"; aj: "dx.aj"; ak: "dx.ak"; al: "dx.al"; am: "dx.am"; an: "dx.an"; ao: "dx.ao"; ap: "dx.ap"; aq: "dx.aq"; ar: "dx.ar"; as: "dx.as"; at: "dx.at"; au: "dx.au"; av: "dx.av"; aw: "dx.aw"; ax: "dx.ax"; ay: "dx.ay"; az: "dx.az"; ba: "dx.ba"; bb: "dx.bb"; bc: "dx.bc"; bd: "dx.bd"; be: "dx.be"; bf: "dx.bf"; bg: "dx.bg"; bh: "dx.bh"; bi: "dx.bi"; bj: "dx.bj"; bk: "dx.bk"; bl: "dx.bl"; bm: "dx.bm"; bn: "dx.bn"; bo: "dx.bo"; bp: "dx.bp"; bq: "dx.bq"; br: "dx.br"; bs: "dx.bs"; bt: "dx.bt"; bu: "dx.bu"; bv: "dx.bv"; bw: "dx.bw"; bx: "dx.bx"; by: "dx.by"; bz: "dx.bz"; ca: "dx.ca"; cb: "dx.cb"; cc: "dx.cc"; cd: "dx.cd"; ce: "dx.ce"; cf: "dx.cf"; cg: "dx.cg"; ch: "dx.ch"; ci: "dx.ci"; cj: "dx.cj"; ck: "dx.ck"; cl: "dx.cl"; cm: "dx.cm"; cn: "dx.cn"; co: "dx.co"; cp: "dx.cp"; cq: "dx.cq"; cr: "dx.cr"; cs: "dx.cs"; ct: "dx.ct"; cu: "dx.cu"; cv: "dx.cv"; cw: "dx.cw"; cx: "dx.cx"; cy: "dx.cy"; cz: "dx.cz"; da: "dx.da"; db: "dx.db"; dc: "dx.dc"; dd: "dx.dd"; de: "dx.de"; df: "dx.df"; dg: "dx.dg"; dh: "dx.dh"; di: "dx.di"; dj: "dx.dj"; dk: "dx.dk"; dl: "dx.dl"; dm: "dx.dm"; dn: "dx.dn"; do: "dx.do"; dp: "dx.dp"; dq: "dx.dq"; dr: "dx.dr"; ds: "dx.ds"; dt: "dx.dt"; du: "dx.du"; dv: "dx.dv"; dw: "dx.dw"; dx: "dx.dx"; dy: "dx.dy"; dz: "dx.dz"; ea: "dx.ea"; eb: "dx.eb"; ec: "dx.ec"; ed: "dx.ed"; ee: "dx.ee"; ef: "dx.ef"; eg: "dx.eg"; eh: "dx.eh"; ei: "dx.ei"; ej: "dx.ej"; ek: "dx.ek"; el: "dx.el"; em: "dx.em"; en: "dx.en"; eo: "dx.eo"; ep: "dx.ep"; eq: "dx.eq"; er: "dx.er"; es: "dx.es"; et: "dx.et"; eu: "dx.eu"; ev: "dx.ev"; ew: "dx.ew"; ex: "dx.ex"; ey: "dx.ey"; ez: "dx.ez"; fa: "dx.fa"; fb: "dx.fb"; fc: "dx.fc"; fd: "dx.fd"; fe: "dx.fe"; ff: "dx.ff"; fg: "dx.fg"; fh: "dx.fh"; fi: "dx.fi"; fj: "dx.fj"; fk: "dx.fk"; fl: "dx.fl"; fm: "dx.fm"; fn: "dx.fn"; fo: "dx.fo"; fp: "dx.fp"; fq: "dx.fq"; fr: "dx.fr"; fs: "dx.fs"; ft: "dx.ft"; fu: "dx.fu"; fv: "dx.fv"; fw: "dx.fw"; fx: "dx.fx"; fy: "dx.fy"; fz: "dx.fz"; ga: "dx.ga"; gb: "dx.gb"; gc: "dx.gc"; gd: "dx.gd"; ge: "dx.ge"; gf: "dx.gf"; gg: "dx.gg"; gh: "dx.gh"; gi: "dx.gi"; gj: "dx.gj"; gk: "dx.gk"; gl: "dx.gl"; gm: "dx.gm"; gn: "dx.gn"; go: "dx.go"; gp: "dx.gp"; gq: "dx.gq"; gr: "dx.gr"; gs: "dx.gs"; gt: "dx.gt"; gu: "dx.gu"; gv: "dx.gv"; gw: "dx.gw"; gx: "dx.gx"; gy: "dx.gy"; gz: "dx.gz"; ha: "dx.ha"; hb: "dx.hb"; hc: "dx.hc"; hd: "dx.hd"; he: "dx.he"; hf: "dx.hf"; hg: "dx.hg"; hh: "dx.hh"; hi: "dx.hi"; hj: "dx.hj"; hk: "dx.hk"; hl: "dx.hl"; hm: "dx.hm"; hn: "dx.hn"; ho: "dx.ho"; hp: "dx.hp"; hq: "dx.hq"; hr: "dx.hr"; hs: "dx.hs"; ht: "dx.ht"; hu: "dx.hu"; hv: "dx.hv"; hw: "dx.hw"; hx: "dx.hx"; hy: "dx.hy"; hz: "dx.hz"; ia: "dx.ia"; ib: "dx.ib"; ic: "dx.ic"; id: "dx.id"; ie: "dx.ie"; if: "dx.if"; ig: "dx.ig"; ih: "dx.ih"; ii: "dx.ii"; ij: "dx.ij"; ik: "dx.ik"; il: "dx.il"; im: "dx.im"; in: "dx.in"; io: "dx.io"; ip: "dx.ip"; iq: "dx.iq"; ir: "dx.ir"; is: "dx.is"; it: "dx.it"; iu: "dx.iu"; iv: "dx.iv"; iw: "dx.iw"; ix: "dx.ix"; iy: "dx.iy"; iz: "dx.iz"; ja: "dx.ja"; jb: "dx.jb"; jc: "dx.jc"; jd: "dx.jd"; je: "dx.je"; jf: "dx.jf"; jg: "dx.jg"; jh: "dx.jh"; ji: "dx.ji"; jj: "dx.jj"; jk: "dx.jk"; jl: "dx.jl"; jm: "dx.jm"; jn: "dx.jn"; jo: "dx.jo"; jp: "dx.jp"; jq: "dx.jq"; jr: "dx.jr"; js: "dx.js"; jt: "dx.jt"; ju: "dx.ju"; jv: "dx.jv"; jw: "dx.jw"; jx: "dx.jx"; jy: "dx.jy"; jz: "dx.jz"; ka: "dx.ka"; kb: "dx.kb"; kc: "dx.kc"; kd: "dx.kd"; ke: "dx.ke"; kf: "dx.kf"; kg: "dx.kg"; kh: "dx.kh"; ki: "dx.ki"; kj: "dx.kj"; kk: "dx.kk"; kl: "dx.kl"; km: "dx.km"; kn: "dx.kn"; ko: "dx.ko"; kp: "dx.kp"; kq: "dx.kq"; kr: "dx.kr"; ks: "dx.ks"; kt: "dx.kt"; ku: "dx.ku"; kv: "dx.kv"; kw: "dx.kw"; kx: "dx.kx"; ky: "dx.ky"; kz: "dx.kz"; la: "dx.la"; lb: "dx.lb"; lc: "dx.lc"; ld: "dx.ld"; le: "dx.le"; lf: "dx.lf"; lg: "dx.lg"; lh: "dx.lh"; li: "dx.li"; lj: "dx.lj"; lk: "dx.lk"; ll: "dx.ll"; lm: "dx.lm"; ln: "dx.ln"; lo: "dx.lo"; lp: "dx.lp"; lq: "dx.lq"; lr: "dx.lr"; ls: "dx.ls"; lt: "dx.lt"; lu: "dx.lu"; lv: "dx.lv"; lw: "dx.lw"; lx: "dx.lx"; ly: "dx.ly"; lz: "dx.lz"; ma: "dx.ma"; mb: "dx.mb"; mc: "dx.mc"; md: "dx.md"; me: "dx.me"; mf: "dx.mf"; mg: "dx.mg"; mh: "dx.mh"; mi: "dx.mi"; mj: "dx.mj"; mk: "dx.mk"; ml: "dx.ml"; mm: "dx.mm"; mn: "dx.mn"; mo: "dx.mo"; mp: "dx.mp"; mq: "dx.mq"; mr: "dx.mr"; ms: "dx.ms"; mt: "dx.mt"; mu: "dx.mu"; mv: "dx.mv"; mw: "dx.mw"; mx: "dx.mx"; my: "dx.my"; mz: "dx.mz"; na: "dx.na"; nb: "dx.nb"; nc: "dx.nc"; nd: "dx.nd"; ne: "dx.ne"; nf: "dx.nf"; ng: "dx.ng"; nh: "dx.nh"; ni: "dx.ni"; nj: "dx.nj"; nk: "dx.nk"; nl: "dx.nl"; nm: "dx.nm"; nn: "dx.nn"; no: "dx.no"; np: "dx.np"; nq: "dx.nq"; nr: "dx.nr"; ns: "dx.ns"; nt: "dx.nt"; nu: "dx.nu"; nv: "dx.nv"; nw: "dx.nw"; nx: "dx.nx"; ny: "dx.ny"; nz: "dx.nz"; oa: "dx.oa"; ob: "dx.ob"; oc: "dx.oc"; od: "dx.od"; oe: "dx.oe"; of: "dx.of"; og: "dx.og"; oh: "dx.oh"; oi: "dx.oi"; oj: "dx.oj"; ok: "dx.ok"; ol: "dx.ol"; om: "dx.om"; on: "dx.on"; oo: "dx.oo"; op: "dx.op"; oq: "dx.oq"; or: "dx.or"; os: "dx.os"; ot: "dx.ot"; ou: "dx.ou"; ov: "dx.ov"; ow: "dx.ow"; ox: "dx.ox"; oy: "dx.oy"; oz: "dx.oz"; pa: "dx.pa"; pb: "dx.pb"; pc: "dx.pc"; pd: "dx.pd"; pe: "dx.pe"; pf: "dx.pf"; pg: "dx.pg"; ph: "dx.ph"; pi: "dx.pi"; pj: "dx.pj"; pk: "dx.pk"; pl: "dx.pl"; pm: "dx.pm"; pn: "dx.pn"; po: "dx.po"; pp: "dx.pp"; pq: "dx.pq"; pr: "dx.pr"; ps: "dx.ps"; pt: "dx.pt"; pu: "dx.pu"; pv: "dx.pv"; pw: "dx.pw"; px: "dx.px"; py: "dx.py"; pz: "dx.pz"; qa: "dx.qa"; qb: "dx.qb"; qc: "dx.qc"; qd: "dx.qd"; qe: "dx.qe"; qf: "dx.qf"; qg: "dx.qg"; qh: "dx.qh"; qi: "dx.qi"; qj: "dx.qj"; qk: "dx.qk"; ql: "dx.ql"; qm: "dx.qm"; qn: "dx.qn"; qo: "dx.qo"; qp: "dx.qp"; qq: "dx.qq"; qr: "dx.qr"; qs: "dx.qs"; qt: "dx.qt"; qu: "dx.qu"; qv: "dx.qv"; qw: "dx.qw"; qx: "dx.qx"; qy: "dx.qy"; qz: "dx.qz"; ra: "dx.ra"; rb: "dx.rb"; rc: "dx.rc"; rd: "dx.rd"; re: "dx.re"; rf: "dx.rf"; rg: "dx.rg"; rh: "dx.rh"; ri: "dx.ri"; rj: "dx.rj"; rk: "dx.rk"; rl: "dx.rl"; rm: "dx.rm"; rn: "dx.rn"; ro: "dx.ro"; rp: "dx.rp"; rq: "dx.rq"; rr: "dx.rr"; rs: "dx.rs"; rt: "dx.rt"; ru: "dx.ru"; rv: "dx.rv"; rw: "dx.rw"; rx: "dx.rx"; ry: "dx.ry"; rz: "dx.rz"; sa: "dx.sa"; sb: "dx.sb"; sc: "dx.sc"; sd: "dx.sd"; se: "dx.se"; sf: "dx.sf"; sg: "dx.sg"; sh: "dx.sh"; si: "dx.si"; sj: "dx.sj"; sk: "dx.sk"; sl: "dx.sl"; sm: "dx.sm"; sn: "dx.sn"; so: "dx.so"; sp: "dx.sp"; sq: "dx.sq"; sr: "dx.sr"; ss: "dx.ss"; st: "dx.st"; su: "dx.su"; sv: "dx.sv"; sw: "dx.sw"; sx: "dx.sx"; sy: "dx.sy"; sz: "dx.sz"; ta: "dx.ta"; tb: "dx.tb"; tc: "dx.tc"; td: "dx.td"; te: "dx.te"; tf: "dx.tf"; tg: "dx.tg"; th: "dx.th"; ti: "dx.ti"; tj: "dx.tj"; tk: "dx.tk"; tl: "dx.tl"; tm: "dx.tm"; tn: "dx.tn"; to: "dx.to"; tp: "dx.tp"; tq: "dx.tq"; tr: "dx.tr"; ts: "dx.ts"; tt: "dx.tt"; tu: "dx.tu"; tv: "dx.tv"; tw: "dx.tw"; tx: "dx.tx"; ty: "dx.ty"; tz: "dx.tz"; ua: "dx.ua"; ub: "dx.ub"; uc: "dx.uc"; ud: "dx.ud"; ue: "dx.ue"; uf: "dx.uf"; ug: "dx.ug"; uh: "dx.uh"; ui: "dx.ui"; uj: "dx.uj"; uk: "dx.uk"; ul: "dx.ul"; um: "dx.um"; un: "dx.un"; uo: "dx.uo"; up: "dx.up"; uq: "dx.uq"; ur: "dx.ur"; us: "dx.us"; ut: "dx.ut"; uu: "dx.uu"; uv: "dx.uv"; uw: "dx.uw"; ux: "dx.ux"; uy: "dx.uy"; uz: "dx.uz"; va: "dx.va"; vb: "dx.vb"; vc: "dx.vc"; vd: "dx.vd"; ve: "dx.ve"; vf: "dx.vf"; vg: "dx.vg"; vh: "dx.vh"; vi: "dx.vi"; vj: "dx.vj"; vk: "dx.vk"; vl: "dx.vl"; vm: "dx.vm"; vn: "dx.vn"; vo: "dx.vo"; vp: "dx.vp"; vq: "dx.vq"; vr: "dx.vr"; vs: "dx.vs"; vt: "dx.vt"; vu: "dx.vu"; vv: "dx.vv"; vw: "dx.vw"; vx: "dx.vx"; vy: "dx.vy"; vz: "dx.vz"; wa: "dx.wa"; wb: "dx.wb"; wc: "dx.wc"; wd: "dx.wd"; we: "dx.we"; wf: "dx.wf"; wg: "dx.wg"; wh: "dx.wh"; wi: "dx.wi"; wj: "dx.wj"; wk: "dx.wk"; wl: "dx.wl"; wm: "dx.wm"; wn: "dx.wn"; wo: "dx.wo"; wp: "dx.wp"; wq: "dx.wq"; wr: "dx.wr"; ws: "dx.ws"; wt: "dx.wt"; wu: "dx.wu"; wv: "dx.wv"; ww: "dx.ww"; wx: "dx.wx"; wy: "dx.wy"; wz: "dx.wz"; xa: "dx.xa"; xb: "dx.xb"; xc: "dx.xc"; xd: "dx.xd"; xe: "dx.xe"; xf: "dx.xf"; xg: "dx.xg"; xh: "dx.xh"; xi: "dx.xi"; xj: "dx.xj"; xk: "dx.xk"; xl: "dx.xl"; xm: "dx.xm"; xn: "dx.xn"; xo: "dx.xo"; xp: "dx.xp"; xq: "dx.xq"; xr: "dx.xr"; xs: "dx.xs"; xt: "dx.xt"; xu: "dx.xu"; xv: "dx.xv"; xw: "dx.xw"; xx: "dx.xx"; xy: "dx.xy"; xz: "dx.xz"; ya: "dx.ya"; yb: "dx.yb"; yc: "dx.yc"; yd: "dx.yd"; ye: "dx.ye"; yf: "dx.yf"; yg: "dx.yg"; yh: "dx.yh"; yi: "dx.yi"; yj: "dx.yj"; yk: "dx.yk"; yl: "dx.yl"; ym: "dx.ym"; yn: "dx.yn"; yo: "dx.yo"; yp: "dx.yp"; yq: "dx.yq"; yr: "dx.yr"; ys: "dx.ys"; yt: "dx.yt"; yu: "dx.yu"; yv: "dx.yv"; yw: "dx.yw"; yx: "dx.yx"; yy: "dx.yy"; yz: "dx.yz"; za: "dx.za"; zb: "dx.zb"; zc: "dx.zc"; zd: "dx.zd"; ze: "dx.ze"; zf: "dx.zf"; zg: "dx.zg"; zh: "dx.zh"; zi: "dx.zi"; zj: "dx.zj"; zk: "dx.zk"; zl: "dx.zl"; zm: "dx.zm"; zn: "dx.zn"; zo: "dx.zo"; zp: "dx.zp"; zq: "dx.zq"; zr: "dx.zr"; zs: "dx.zs"; zt: "dx.zt"; zu: "dx.zu"; zv: "dx.zv"; zw: "dx.zw"; zx: "dx.zx"; zy: "dx.zy"; zz: "dx.zz"; }; dy: { aa: "dy.aa"; ab: "dy.ab"; ac: "dy.ac"; ad: "dy.ad"; ae: "dy.ae"; af: "dy.af"; ag: "dy.ag"; ah: "dy.ah"; ai: "dy.ai"; aj: "dy.aj"; ak: "dy.ak"; al: "dy.al"; am: "dy.am"; an: "dy.an"; ao: "dy.ao"; ap: "dy.ap"; aq: "dy.aq"; ar: "dy.ar"; as: "dy.as"; at: "dy.at"; au: "dy.au"; av: "dy.av"; aw: "dy.aw"; ax: "dy.ax"; ay: "dy.ay"; az: "dy.az"; ba: "dy.ba"; bb: "dy.bb"; bc: "dy.bc"; bd: "dy.bd"; be: "dy.be"; bf: "dy.bf"; bg: "dy.bg"; bh: "dy.bh"; bi: "dy.bi"; bj: "dy.bj"; bk: "dy.bk"; bl: "dy.bl"; bm: "dy.bm"; bn: "dy.bn"; bo: "dy.bo"; bp: "dy.bp"; bq: "dy.bq"; br: "dy.br"; bs: "dy.bs"; bt: "dy.bt"; bu: "dy.bu"; bv: "dy.bv"; bw: "dy.bw"; bx: "dy.bx"; by: "dy.by"; bz: "dy.bz"; ca: "dy.ca"; cb: "dy.cb"; cc: "dy.cc"; cd: "dy.cd"; ce: "dy.ce"; cf: "dy.cf"; cg: "dy.cg"; ch: "dy.ch"; ci: "dy.ci"; cj: "dy.cj"; ck: "dy.ck"; cl: "dy.cl"; cm: "dy.cm"; cn: "dy.cn"; co: "dy.co"; cp: "dy.cp"; cq: "dy.cq"; cr: "dy.cr"; cs: "dy.cs"; ct: "dy.ct"; cu: "dy.cu"; cv: "dy.cv"; cw: "dy.cw"; cx: "dy.cx"; cy: "dy.cy"; cz: "dy.cz"; da: "dy.da"; db: "dy.db"; dc: "dy.dc"; dd: "dy.dd"; de: "dy.de"; df: "dy.df"; dg: "dy.dg"; dh: "dy.dh"; di: "dy.di"; dj: "dy.dj"; dk: "dy.dk"; dl: "dy.dl"; dm: "dy.dm"; dn: "dy.dn"; do: "dy.do"; dp: "dy.dp"; dq: "dy.dq"; dr: "dy.dr"; ds: "dy.ds"; dt: "dy.dt"; du: "dy.du"; dv: "dy.dv"; dw: "dy.dw"; dx: "dy.dx"; dy: "dy.dy"; dz: "dy.dz"; ea: "dy.ea"; eb: "dy.eb"; ec: "dy.ec"; ed: "dy.ed"; ee: "dy.ee"; ef: "dy.ef"; eg: "dy.eg"; eh: "dy.eh"; ei: "dy.ei"; ej: "dy.ej"; ek: "dy.ek"; el: "dy.el"; em: "dy.em"; en: "dy.en"; eo: "dy.eo"; ep: "dy.ep"; eq: "dy.eq"; er: "dy.er"; es: "dy.es"; et: "dy.et"; eu: "dy.eu"; ev: "dy.ev"; ew: "dy.ew"; ex: "dy.ex"; ey: "dy.ey"; ez: "dy.ez"; fa: "dy.fa"; fb: "dy.fb"; fc: "dy.fc"; fd: "dy.fd"; fe: "dy.fe"; ff: "dy.ff"; fg: "dy.fg"; fh: "dy.fh"; fi: "dy.fi"; fj: "dy.fj"; fk: "dy.fk"; fl: "dy.fl"; fm: "dy.fm"; fn: "dy.fn"; fo: "dy.fo"; fp: "dy.fp"; fq: "dy.fq"; fr: "dy.fr"; fs: "dy.fs"; ft: "dy.ft"; fu: "dy.fu"; fv: "dy.fv"; fw: "dy.fw"; fx: "dy.fx"; fy: "dy.fy"; fz: "dy.fz"; ga: "dy.ga"; gb: "dy.gb"; gc: "dy.gc"; gd: "dy.gd"; ge: "dy.ge"; gf: "dy.gf"; gg: "dy.gg"; gh: "dy.gh"; gi: "dy.gi"; gj: "dy.gj"; gk: "dy.gk"; gl: "dy.gl"; gm: "dy.gm"; gn: "dy.gn"; go: "dy.go"; gp: "dy.gp"; gq: "dy.gq"; gr: "dy.gr"; gs: "dy.gs"; gt: "dy.gt"; gu: "dy.gu"; gv: "dy.gv"; gw: "dy.gw"; gx: "dy.gx"; gy: "dy.gy"; gz: "dy.gz"; ha: "dy.ha"; hb: "dy.hb"; hc: "dy.hc"; hd: "dy.hd"; he: "dy.he"; hf: "dy.hf"; hg: "dy.hg"; hh: "dy.hh"; hi: "dy.hi"; hj: "dy.hj"; hk: "dy.hk"; hl: "dy.hl"; hm: "dy.hm"; hn: "dy.hn"; ho: "dy.ho"; hp: "dy.hp"; hq: "dy.hq"; hr: "dy.hr"; hs: "dy.hs"; ht: "dy.ht"; hu: "dy.hu"; hv: "dy.hv"; hw: "dy.hw"; hx: "dy.hx"; hy: "dy.hy"; hz: "dy.hz"; ia: "dy.ia"; ib: "dy.ib"; ic: "dy.ic"; id: "dy.id"; ie: "dy.ie"; if: "dy.if"; ig: "dy.ig"; ih: "dy.ih"; ii: "dy.ii"; ij: "dy.ij"; ik: "dy.ik"; il: "dy.il"; im: "dy.im"; in: "dy.in"; io: "dy.io"; ip: "dy.ip"; iq: "dy.iq"; ir: "dy.ir"; is: "dy.is"; it: "dy.it"; iu: "dy.iu"; iv: "dy.iv"; iw: "dy.iw"; ix: "dy.ix"; iy: "dy.iy"; iz: "dy.iz"; ja: "dy.ja"; jb: "dy.jb"; jc: "dy.jc"; jd: "dy.jd"; je: "dy.je"; jf: "dy.jf"; jg: "dy.jg"; jh: "dy.jh"; ji: "dy.ji"; jj: "dy.jj"; jk: "dy.jk"; jl: "dy.jl"; jm: "dy.jm"; jn: "dy.jn"; jo: "dy.jo"; jp: "dy.jp"; jq: "dy.jq"; jr: "dy.jr"; js: "dy.js"; jt: "dy.jt"; ju: "dy.ju"; jv: "dy.jv"; jw: "dy.jw"; jx: "dy.jx"; jy: "dy.jy"; jz: "dy.jz"; ka: "dy.ka"; kb: "dy.kb"; kc: "dy.kc"; kd: "dy.kd"; ke: "dy.ke"; kf: "dy.kf"; kg: "dy.kg"; kh: "dy.kh"; ki: "dy.ki"; kj: "dy.kj"; kk: "dy.kk"; kl: "dy.kl"; km: "dy.km"; kn: "dy.kn"; ko: "dy.ko"; kp: "dy.kp"; kq: "dy.kq"; kr: "dy.kr"; ks: "dy.ks"; kt: "dy.kt"; ku: "dy.ku"; kv: "dy.kv"; kw: "dy.kw"; kx: "dy.kx"; ky: "dy.ky"; kz: "dy.kz"; la: "dy.la"; lb: "dy.lb"; lc: "dy.lc"; ld: "dy.ld"; le: "dy.le"; lf: "dy.lf"; lg: "dy.lg"; lh: "dy.lh"; li: "dy.li"; lj: "dy.lj"; lk: "dy.lk"; ll: "dy.ll"; lm: "dy.lm"; ln: "dy.ln"; lo: "dy.lo"; lp: "dy.lp"; lq: "dy.lq"; lr: "dy.lr"; ls: "dy.ls"; lt: "dy.lt"; lu: "dy.lu"; lv: "dy.lv"; lw: "dy.lw"; lx: "dy.lx"; ly: "dy.ly"; lz: "dy.lz"; ma: "dy.ma"; mb: "dy.mb"; mc: "dy.mc"; md: "dy.md"; me: "dy.me"; mf: "dy.mf"; mg: "dy.mg"; mh: "dy.mh"; mi: "dy.mi"; mj: "dy.mj"; mk: "dy.mk"; ml: "dy.ml"; mm: "dy.mm"; mn: "dy.mn"; mo: "dy.mo"; mp: "dy.mp"; mq: "dy.mq"; mr: "dy.mr"; ms: "dy.ms"; mt: "dy.mt"; mu: "dy.mu"; mv: "dy.mv"; mw: "dy.mw"; mx: "dy.mx"; my: "dy.my"; mz: "dy.mz"; na: "dy.na"; nb: "dy.nb"; nc: "dy.nc"; nd: "dy.nd"; ne: "dy.ne"; nf: "dy.nf"; ng: "dy.ng"; nh: "dy.nh"; ni: "dy.ni"; nj: "dy.nj"; nk: "dy.nk"; nl: "dy.nl"; nm: "dy.nm"; nn: "dy.nn"; no: "dy.no"; np: "dy.np"; nq: "dy.nq"; nr: "dy.nr"; ns: "dy.ns"; nt: "dy.nt"; nu: "dy.nu"; nv: "dy.nv"; nw: "dy.nw"; nx: "dy.nx"; ny: "dy.ny"; nz: "dy.nz"; oa: "dy.oa"; ob: "dy.ob"; oc: "dy.oc"; od: "dy.od"; oe: "dy.oe"; of: "dy.of"; og: "dy.og"; oh: "dy.oh"; oi: "dy.oi"; oj: "dy.oj"; ok: "dy.ok"; ol: "dy.ol"; om: "dy.om"; on: "dy.on"; oo: "dy.oo"; op: "dy.op"; oq: "dy.oq"; or: "dy.or"; os: "dy.os"; ot: "dy.ot"; ou: "dy.ou"; ov: "dy.ov"; ow: "dy.ow"; ox: "dy.ox"; oy: "dy.oy"; oz: "dy.oz"; pa: "dy.pa"; pb: "dy.pb"; pc: "dy.pc"; pd: "dy.pd"; pe: "dy.pe"; pf: "dy.pf"; pg: "dy.pg"; ph: "dy.ph"; pi: "dy.pi"; pj: "dy.pj"; pk: "dy.pk"; pl: "dy.pl"; pm: "dy.pm"; pn: "dy.pn"; po: "dy.po"; pp: "dy.pp"; pq: "dy.pq"; pr: "dy.pr"; ps: "dy.ps"; pt: "dy.pt"; pu: "dy.pu"; pv: "dy.pv"; pw: "dy.pw"; px: "dy.px"; py: "dy.py"; pz: "dy.pz"; qa: "dy.qa"; qb: "dy.qb"; qc: "dy.qc"; qd: "dy.qd"; qe: "dy.qe"; qf: "dy.qf"; qg: "dy.qg"; qh: "dy.qh"; qi: "dy.qi"; qj: "dy.qj"; qk: "dy.qk"; ql: "dy.ql"; qm: "dy.qm"; qn: "dy.qn"; qo: "dy.qo"; qp: "dy.qp"; qq: "dy.qq"; qr: "dy.qr"; qs: "dy.qs"; qt: "dy.qt"; qu: "dy.qu"; qv: "dy.qv"; qw: "dy.qw"; qx: "dy.qx"; qy: "dy.qy"; qz: "dy.qz"; ra: "dy.ra"; rb: "dy.rb"; rc: "dy.rc"; rd: "dy.rd"; re: "dy.re"; rf: "dy.rf"; rg: "dy.rg"; rh: "dy.rh"; ri: "dy.ri"; rj: "dy.rj"; rk: "dy.rk"; rl: "dy.rl"; rm: "dy.rm"; rn: "dy.rn"; ro: "dy.ro"; rp: "dy.rp"; rq: "dy.rq"; rr: "dy.rr"; rs: "dy.rs"; rt: "dy.rt"; ru: "dy.ru"; rv: "dy.rv"; rw: "dy.rw"; rx: "dy.rx"; ry: "dy.ry"; rz: "dy.rz"; sa: "dy.sa"; sb: "dy.sb"; sc: "dy.sc"; sd: "dy.sd"; se: "dy.se"; sf: "dy.sf"; sg: "dy.sg"; sh: "dy.sh"; si: "dy.si"; sj: "dy.sj"; sk: "dy.sk"; sl: "dy.sl"; sm: "dy.sm"; sn: "dy.sn"; so: "dy.so"; sp: "dy.sp"; sq: "dy.sq"; sr: "dy.sr"; ss: "dy.ss"; st: "dy.st"; su: "dy.su"; sv: "dy.sv"; sw: "dy.sw"; sx: "dy.sx"; sy: "dy.sy"; sz: "dy.sz"; ta: "dy.ta"; tb: "dy.tb"; tc: "dy.tc"; td: "dy.td"; te: "dy.te"; tf: "dy.tf"; tg: "dy.tg"; th: "dy.th"; ti: "dy.ti"; tj: "dy.tj"; tk: "dy.tk"; tl: "dy.tl"; tm: "dy.tm"; tn: "dy.tn"; to: "dy.to"; tp: "dy.tp"; tq: "dy.tq"; tr: "dy.tr"; ts: "dy.ts"; tt: "dy.tt"; tu: "dy.tu"; tv: "dy.tv"; tw: "dy.tw"; tx: "dy.tx"; ty: "dy.ty"; tz: "dy.tz"; ua: "dy.ua"; ub: "dy.ub"; uc: "dy.uc"; ud: "dy.ud"; ue: "dy.ue"; uf: "dy.uf"; ug: "dy.ug"; uh: "dy.uh"; ui: "dy.ui"; uj: "dy.uj"; uk: "dy.uk"; ul: "dy.ul"; um: "dy.um"; un: "dy.un"; uo: "dy.uo"; up: "dy.up"; uq: "dy.uq"; ur: "dy.ur"; us: "dy.us"; ut: "dy.ut"; uu: "dy.uu"; uv: "dy.uv"; uw: "dy.uw"; ux: "dy.ux"; uy: "dy.uy"; uz: "dy.uz"; va: "dy.va"; vb: "dy.vb"; vc: "dy.vc"; vd: "dy.vd"; ve: "dy.ve"; vf: "dy.vf"; vg: "dy.vg"; vh: "dy.vh"; vi: "dy.vi"; vj: "dy.vj"; vk: "dy.vk"; vl: "dy.vl"; vm: "dy.vm"; vn: "dy.vn"; vo: "dy.vo"; vp: "dy.vp"; vq: "dy.vq"; vr: "dy.vr"; vs: "dy.vs"; vt: "dy.vt"; vu: "dy.vu"; vv: "dy.vv"; vw: "dy.vw"; vx: "dy.vx"; vy: "dy.vy"; vz: "dy.vz"; wa: "dy.wa"; wb: "dy.wb"; wc: "dy.wc"; wd: "dy.wd"; we: "dy.we"; wf: "dy.wf"; wg: "dy.wg"; wh: "dy.wh"; wi: "dy.wi"; wj: "dy.wj"; wk: "dy.wk"; wl: "dy.wl"; wm: "dy.wm"; wn: "dy.wn"; wo: "dy.wo"; wp: "dy.wp"; wq: "dy.wq"; wr: "dy.wr"; ws: "dy.ws"; wt: "dy.wt"; wu: "dy.wu"; wv: "dy.wv"; ww: "dy.ww"; wx: "dy.wx"; wy: "dy.wy"; wz: "dy.wz"; xa: "dy.xa"; xb: "dy.xb"; xc: "dy.xc"; xd: "dy.xd"; xe: "dy.xe"; xf: "dy.xf"; xg: "dy.xg"; xh: "dy.xh"; xi: "dy.xi"; xj: "dy.xj"; xk: "dy.xk"; xl: "dy.xl"; xm: "dy.xm"; xn: "dy.xn"; xo: "dy.xo"; xp: "dy.xp"; xq: "dy.xq"; xr: "dy.xr"; xs: "dy.xs"; xt: "dy.xt"; xu: "dy.xu"; xv: "dy.xv"; xw: "dy.xw"; xx: "dy.xx"; xy: "dy.xy"; xz: "dy.xz"; ya: "dy.ya"; yb: "dy.yb"; yc: "dy.yc"; yd: "dy.yd"; ye: "dy.ye"; yf: "dy.yf"; yg: "dy.yg"; yh: "dy.yh"; yi: "dy.yi"; yj: "dy.yj"; yk: "dy.yk"; yl: "dy.yl"; ym: "dy.ym"; yn: "dy.yn"; yo: "dy.yo"; yp: "dy.yp"; yq: "dy.yq"; yr: "dy.yr"; ys: "dy.ys"; yt: "dy.yt"; yu: "dy.yu"; yv: "dy.yv"; yw: "dy.yw"; yx: "dy.yx"; yy: "dy.yy"; yz: "dy.yz"; za: "dy.za"; zb: "dy.zb"; zc: "dy.zc"; zd: "dy.zd"; ze: "dy.ze"; zf: "dy.zf"; zg: "dy.zg"; zh: "dy.zh"; zi: "dy.zi"; zj: "dy.zj"; zk: "dy.zk"; zl: "dy.zl"; zm: "dy.zm"; zn: "dy.zn"; zo: "dy.zo"; zp: "dy.zp"; zq: "dy.zq"; zr: "dy.zr"; zs: "dy.zs"; zt: "dy.zt"; zu: "dy.zu"; zv: "dy.zv"; zw: "dy.zw"; zx: "dy.zx"; zy: "dy.zy"; zz: "dy.zz"; }; dz: { aa: "dz.aa"; ab: "dz.ab"; ac: "dz.ac"; ad: "dz.ad"; ae: "dz.ae"; af: "dz.af"; ag: "dz.ag"; ah: "dz.ah"; ai: "dz.ai"; aj: "dz.aj"; ak: "dz.ak"; al: "dz.al"; am: "dz.am"; an: "dz.an"; ao: "dz.ao"; ap: "dz.ap"; aq: "dz.aq"; ar: "dz.ar"; as: "dz.as"; at: "dz.at"; au: "dz.au"; av: "dz.av"; aw: "dz.aw"; ax: "dz.ax"; ay: "dz.ay"; az: "dz.az"; ba: "dz.ba"; bb: "dz.bb"; bc: "dz.bc"; bd: "dz.bd"; be: "dz.be"; bf: "dz.bf"; bg: "dz.bg"; bh: "dz.bh"; bi: "dz.bi"; bj: "dz.bj"; bk: "dz.bk"; bl: "dz.bl"; bm: "dz.bm"; bn: "dz.bn"; bo: "dz.bo"; bp: "dz.bp"; bq: "dz.bq"; br: "dz.br"; bs: "dz.bs"; bt: "dz.bt"; bu: "dz.bu"; bv: "dz.bv"; bw: "dz.bw"; bx: "dz.bx"; by: "dz.by"; bz: "dz.bz"; ca: "dz.ca"; cb: "dz.cb"; cc: "dz.cc"; cd: "dz.cd"; ce: "dz.ce"; cf: "dz.cf"; cg: "dz.cg"; ch: "dz.ch"; ci: "dz.ci"; cj: "dz.cj"; ck: "dz.ck"; cl: "dz.cl"; cm: "dz.cm"; cn: "dz.cn"; co: "dz.co"; cp: "dz.cp"; cq: "dz.cq"; cr: "dz.cr"; cs: "dz.cs"; ct: "dz.ct"; cu: "dz.cu"; cv: "dz.cv"; cw: "dz.cw"; cx: "dz.cx"; cy: "dz.cy"; cz: "dz.cz"; da: "dz.da"; db: "dz.db"; dc: "dz.dc"; dd: "dz.dd"; de: "dz.de"; df: "dz.df"; dg: "dz.dg"; dh: "dz.dh"; di: "dz.di"; dj: "dz.dj"; dk: "dz.dk"; dl: "dz.dl"; dm: "dz.dm"; dn: "dz.dn"; do: "dz.do"; dp: "dz.dp"; dq: "dz.dq"; dr: "dz.dr"; ds: "dz.ds"; dt: "dz.dt"; du: "dz.du"; dv: "dz.dv"; dw: "dz.dw"; dx: "dz.dx"; dy: "dz.dy"; dz: "dz.dz"; ea: "dz.ea"; eb: "dz.eb"; ec: "dz.ec"; ed: "dz.ed"; ee: "dz.ee"; ef: "dz.ef"; eg: "dz.eg"; eh: "dz.eh"; ei: "dz.ei"; ej: "dz.ej"; ek: "dz.ek"; el: "dz.el"; em: "dz.em"; en: "dz.en"; eo: "dz.eo"; ep: "dz.ep"; eq: "dz.eq"; er: "dz.er"; es: "dz.es"; et: "dz.et"; eu: "dz.eu"; ev: "dz.ev"; ew: "dz.ew"; ex: "dz.ex"; ey: "dz.ey"; ez: "dz.ez"; fa: "dz.fa"; fb: "dz.fb"; fc: "dz.fc"; fd: "dz.fd"; fe: "dz.fe"; ff: "dz.ff"; fg: "dz.fg"; fh: "dz.fh"; fi: "dz.fi"; fj: "dz.fj"; fk: "dz.fk"; fl: "dz.fl"; fm: "dz.fm"; fn: "dz.fn"; fo: "dz.fo"; fp: "dz.fp"; fq: "dz.fq"; fr: "dz.fr"; fs: "dz.fs"; ft: "dz.ft"; fu: "dz.fu"; fv: "dz.fv"; fw: "dz.fw"; fx: "dz.fx"; fy: "dz.fy"; fz: "dz.fz"; ga: "dz.ga"; gb: "dz.gb"; gc: "dz.gc"; gd: "dz.gd"; ge: "dz.ge"; gf: "dz.gf"; gg: "dz.gg"; gh: "dz.gh"; gi: "dz.gi"; gj: "dz.gj"; gk: "dz.gk"; gl: "dz.gl"; gm: "dz.gm"; gn: "dz.gn"; go: "dz.go"; gp: "dz.gp"; gq: "dz.gq"; gr: "dz.gr"; gs: "dz.gs"; gt: "dz.gt"; gu: "dz.gu"; gv: "dz.gv"; gw: "dz.gw"; gx: "dz.gx"; gy: "dz.gy"; gz: "dz.gz"; ha: "dz.ha"; hb: "dz.hb"; hc: "dz.hc"; hd: "dz.hd"; he: "dz.he"; hf: "dz.hf"; hg: "dz.hg"; hh: "dz.hh"; hi: "dz.hi"; hj: "dz.hj"; hk: "dz.hk"; hl: "dz.hl"; hm: "dz.hm"; hn: "dz.hn"; ho: "dz.ho"; hp: "dz.hp"; hq: "dz.hq"; hr: "dz.hr"; hs: "dz.hs"; ht: "dz.ht"; hu: "dz.hu"; hv: "dz.hv"; hw: "dz.hw"; hx: "dz.hx"; hy: "dz.hy"; hz: "dz.hz"; ia: "dz.ia"; ib: "dz.ib"; ic: "dz.ic"; id: "dz.id"; ie: "dz.ie"; if: "dz.if"; ig: "dz.ig"; ih: "dz.ih"; ii: "dz.ii"; ij: "dz.ij"; ik: "dz.ik"; il: "dz.il"; im: "dz.im"; in: "dz.in"; io: "dz.io"; ip: "dz.ip"; iq: "dz.iq"; ir: "dz.ir"; is: "dz.is"; it: "dz.it"; iu: "dz.iu"; iv: "dz.iv"; iw: "dz.iw"; ix: "dz.ix"; iy: "dz.iy"; iz: "dz.iz"; ja: "dz.ja"; jb: "dz.jb"; jc: "dz.jc"; jd: "dz.jd"; je: "dz.je"; jf: "dz.jf"; jg: "dz.jg"; jh: "dz.jh"; ji: "dz.ji"; jj: "dz.jj"; jk: "dz.jk"; jl: "dz.jl"; jm: "dz.jm"; jn: "dz.jn"; jo: "dz.jo"; jp: "dz.jp"; jq: "dz.jq"; jr: "dz.jr"; js: "dz.js"; jt: "dz.jt"; ju: "dz.ju"; jv: "dz.jv"; jw: "dz.jw"; jx: "dz.jx"; jy: "dz.jy"; jz: "dz.jz"; ka: "dz.ka"; kb: "dz.kb"; kc: "dz.kc"; kd: "dz.kd"; ke: "dz.ke"; kf: "dz.kf"; kg: "dz.kg"; kh: "dz.kh"; ki: "dz.ki"; kj: "dz.kj"; kk: "dz.kk"; kl: "dz.kl"; km: "dz.km"; kn: "dz.kn"; ko: "dz.ko"; kp: "dz.kp"; kq: "dz.kq"; kr: "dz.kr"; ks: "dz.ks"; kt: "dz.kt"; ku: "dz.ku"; kv: "dz.kv"; kw: "dz.kw"; kx: "dz.kx"; ky: "dz.ky"; kz: "dz.kz"; la: "dz.la"; lb: "dz.lb"; lc: "dz.lc"; ld: "dz.ld"; le: "dz.le"; lf: "dz.lf"; lg: "dz.lg"; lh: "dz.lh"; li: "dz.li"; lj: "dz.lj"; lk: "dz.lk"; ll: "dz.ll"; lm: "dz.lm"; ln: "dz.ln"; lo: "dz.lo"; lp: "dz.lp"; lq: "dz.lq"; lr: "dz.lr"; ls: "dz.ls"; lt: "dz.lt"; lu: "dz.lu"; lv: "dz.lv"; lw: "dz.lw"; lx: "dz.lx"; ly: "dz.ly"; lz: "dz.lz"; ma: "dz.ma"; mb: "dz.mb"; mc: "dz.mc"; md: "dz.md"; me: "dz.me"; mf: "dz.mf"; mg: "dz.mg"; mh: "dz.mh"; mi: "dz.mi"; mj: "dz.mj"; mk: "dz.mk"; ml: "dz.ml"; mm: "dz.mm"; mn: "dz.mn"; mo: "dz.mo"; mp: "dz.mp"; mq: "dz.mq"; mr: "dz.mr"; ms: "dz.ms"; mt: "dz.mt"; mu: "dz.mu"; mv: "dz.mv"; mw: "dz.mw"; mx: "dz.mx"; my: "dz.my"; mz: "dz.mz"; na: "dz.na"; nb: "dz.nb"; nc: "dz.nc"; nd: "dz.nd"; ne: "dz.ne"; nf: "dz.nf"; ng: "dz.ng"; nh: "dz.nh"; ni: "dz.ni"; nj: "dz.nj"; nk: "dz.nk"; nl: "dz.nl"; nm: "dz.nm"; nn: "dz.nn"; no: "dz.no"; np: "dz.np"; nq: "dz.nq"; nr: "dz.nr"; ns: "dz.ns"; nt: "dz.nt"; nu: "dz.nu"; nv: "dz.nv"; nw: "dz.nw"; nx: "dz.nx"; ny: "dz.ny"; nz: "dz.nz"; oa: "dz.oa"; ob: "dz.ob"; oc: "dz.oc"; od: "dz.od"; oe: "dz.oe"; of: "dz.of"; og: "dz.og"; oh: "dz.oh"; oi: "dz.oi"; oj: "dz.oj"; ok: "dz.ok"; ol: "dz.ol"; om: "dz.om"; on: "dz.on"; oo: "dz.oo"; op: "dz.op"; oq: "dz.oq"; or: "dz.or"; os: "dz.os"; ot: "dz.ot"; ou: "dz.ou"; ov: "dz.ov"; ow: "dz.ow"; ox: "dz.ox"; oy: "dz.oy"; oz: "dz.oz"; pa: "dz.pa"; pb: "dz.pb"; pc: "dz.pc"; pd: "dz.pd"; pe: "dz.pe"; pf: "dz.pf"; pg: "dz.pg"; ph: "dz.ph"; pi: "dz.pi"; pj: "dz.pj"; pk: "dz.pk"; pl: "dz.pl"; pm: "dz.pm"; pn: "dz.pn"; po: "dz.po"; pp: "dz.pp"; pq: "dz.pq"; pr: "dz.pr"; ps: "dz.ps"; pt: "dz.pt"; pu: "dz.pu"; pv: "dz.pv"; pw: "dz.pw"; px: "dz.px"; py: "dz.py"; pz: "dz.pz"; qa: "dz.qa"; qb: "dz.qb"; qc: "dz.qc"; qd: "dz.qd"; qe: "dz.qe"; qf: "dz.qf"; qg: "dz.qg"; qh: "dz.qh"; qi: "dz.qi"; qj: "dz.qj"; qk: "dz.qk"; ql: "dz.ql"; qm: "dz.qm"; qn: "dz.qn"; qo: "dz.qo"; qp: "dz.qp"; qq: "dz.qq"; qr: "dz.qr"; qs: "dz.qs"; qt: "dz.qt"; qu: "dz.qu"; qv: "dz.qv"; qw: "dz.qw"; qx: "dz.qx"; qy: "dz.qy"; qz: "dz.qz"; ra: "dz.ra"; rb: "dz.rb"; rc: "dz.rc"; rd: "dz.rd"; re: "dz.re"; rf: "dz.rf"; rg: "dz.rg"; rh: "dz.rh"; ri: "dz.ri"; rj: "dz.rj"; rk: "dz.rk"; rl: "dz.rl"; rm: "dz.rm"; rn: "dz.rn"; ro: "dz.ro"; rp: "dz.rp"; rq: "dz.rq"; rr: "dz.rr"; rs: "dz.rs"; rt: "dz.rt"; ru: "dz.ru"; rv: "dz.rv"; rw: "dz.rw"; rx: "dz.rx"; ry: "dz.ry"; rz: "dz.rz"; sa: "dz.sa"; sb: "dz.sb"; sc: "dz.sc"; sd: "dz.sd"; se: "dz.se"; sf: "dz.sf"; sg: "dz.sg"; sh: "dz.sh"; si: "dz.si"; sj: "dz.sj"; sk: "dz.sk"; sl: "dz.sl"; sm: "dz.sm"; sn: "dz.sn"; so: "dz.so"; sp: "dz.sp"; sq: "dz.sq"; sr: "dz.sr"; ss: "dz.ss"; st: "dz.st"; su: "dz.su"; sv: "dz.sv"; sw: "dz.sw"; sx: "dz.sx"; sy: "dz.sy"; sz: "dz.sz"; ta: "dz.ta"; tb: "dz.tb"; tc: "dz.tc"; td: "dz.td"; te: "dz.te"; tf: "dz.tf"; tg: "dz.tg"; th: "dz.th"; ti: "dz.ti"; tj: "dz.tj"; tk: "dz.tk"; tl: "dz.tl"; tm: "dz.tm"; tn: "dz.tn"; to: "dz.to"; tp: "dz.tp"; tq: "dz.tq"; tr: "dz.tr"; ts: "dz.ts"; tt: "dz.tt"; tu: "dz.tu"; tv: "dz.tv"; tw: "dz.tw"; tx: "dz.tx"; ty: "dz.ty"; tz: "dz.tz"; ua: "dz.ua"; ub: "dz.ub"; uc: "dz.uc"; ud: "dz.ud"; ue: "dz.ue"; uf: "dz.uf"; ug: "dz.ug"; uh: "dz.uh"; ui: "dz.ui"; uj: "dz.uj"; uk: "dz.uk"; ul: "dz.ul"; um: "dz.um"; un: "dz.un"; uo: "dz.uo"; up: "dz.up"; uq: "dz.uq"; ur: "dz.ur"; us: "dz.us"; ut: "dz.ut"; uu: "dz.uu"; uv: "dz.uv"; uw: "dz.uw"; ux: "dz.ux"; uy: "dz.uy"; uz: "dz.uz"; va: "dz.va"; vb: "dz.vb"; vc: "dz.vc"; vd: "dz.vd"; ve: "dz.ve"; vf: "dz.vf"; vg: "dz.vg"; vh: "dz.vh"; vi: "dz.vi"; vj: "dz.vj"; vk: "dz.vk"; vl: "dz.vl"; vm: "dz.vm"; vn: "dz.vn"; vo: "dz.vo"; vp: "dz.vp"; vq: "dz.vq"; vr: "dz.vr"; vs: "dz.vs"; vt: "dz.vt"; vu: "dz.vu"; vv: "dz.vv"; vw: "dz.vw"; vx: "dz.vx"; vy: "dz.vy"; vz: "dz.vz"; wa: "dz.wa"; wb: "dz.wb"; wc: "dz.wc"; wd: "dz.wd"; we: "dz.we"; wf: "dz.wf"; wg: "dz.wg"; wh: "dz.wh"; wi: "dz.wi"; wj: "dz.wj"; wk: "dz.wk"; wl: "dz.wl"; wm: "dz.wm"; wn: "dz.wn"; wo: "dz.wo"; wp: "dz.wp"; wq: "dz.wq"; wr: "dz.wr"; ws: "dz.ws"; wt: "dz.wt"; wu: "dz.wu"; wv: "dz.wv"; ww: "dz.ww"; wx: "dz.wx"; wy: "dz.wy"; wz: "dz.wz"; xa: "dz.xa"; xb: "dz.xb"; xc: "dz.xc"; xd: "dz.xd"; xe: "dz.xe"; xf: "dz.xf"; xg: "dz.xg"; xh: "dz.xh"; xi: "dz.xi"; xj: "dz.xj"; xk: "dz.xk"; xl: "dz.xl"; xm: "dz.xm"; xn: "dz.xn"; xo: "dz.xo"; xp: "dz.xp"; xq: "dz.xq"; xr: "dz.xr"; xs: "dz.xs"; xt: "dz.xt"; xu: "dz.xu"; xv: "dz.xv"; xw: "dz.xw"; xx: "dz.xx"; xy: "dz.xy"; xz: "dz.xz"; ya: "dz.ya"; yb: "dz.yb"; yc: "dz.yc"; yd: "dz.yd"; ye: "dz.ye"; yf: "dz.yf"; yg: "dz.yg"; yh: "dz.yh"; yi: "dz.yi"; yj: "dz.yj"; yk: "dz.yk"; yl: "dz.yl"; ym: "dz.ym"; yn: "dz.yn"; yo: "dz.yo"; yp: "dz.yp"; yq: "dz.yq"; yr: "dz.yr"; ys: "dz.ys"; yt: "dz.yt"; yu: "dz.yu"; yv: "dz.yv"; yw: "dz.yw"; yx: "dz.yx"; yy: "dz.yy"; yz: "dz.yz"; za: "dz.za"; zb: "dz.zb"; zc: "dz.zc"; zd: "dz.zd"; ze: "dz.ze"; zf: "dz.zf"; zg: "dz.zg"; zh: "dz.zh"; zi: "dz.zi"; zj: "dz.zj"; zk: "dz.zk"; zl: "dz.zl"; zm: "dz.zm"; zn: "dz.zn"; zo: "dz.zo"; zp: "dz.zp"; zq: "dz.zq"; zr: "dz.zr"; zs: "dz.zs"; zt: "dz.zt"; zu: "dz.zu"; zv: "dz.zv"; zw: "dz.zw"; zx: "dz.zx"; zy: "dz.zy"; zz: "dz.zz"; }; ea: { aa: "ea.aa"; ab: "ea.ab"; ac: "ea.ac"; ad: "ea.ad"; ae: "ea.ae"; af: "ea.af"; ag: "ea.ag"; ah: "ea.ah"; ai: "ea.ai"; aj: "ea.aj"; ak: "ea.ak"; al: "ea.al"; am: "ea.am"; an: "ea.an"; ao: "ea.ao"; ap: "ea.ap"; aq: "ea.aq"; ar: "ea.ar"; as: "ea.as"; at: "ea.at"; au: "ea.au"; av: "ea.av"; aw: "ea.aw"; ax: "ea.ax"; ay: "ea.ay"; az: "ea.az"; ba: "ea.ba"; bb: "ea.bb"; bc: "ea.bc"; bd: "ea.bd"; be: "ea.be"; bf: "ea.bf"; bg: "ea.bg"; bh: "ea.bh"; bi: "ea.bi"; bj: "ea.bj"; bk: "ea.bk"; bl: "ea.bl"; bm: "ea.bm"; bn: "ea.bn"; bo: "ea.bo"; bp: "ea.bp"; bq: "ea.bq"; br: "ea.br"; bs: "ea.bs"; bt: "ea.bt"; bu: "ea.bu"; bv: "ea.bv"; bw: "ea.bw"; bx: "ea.bx"; by: "ea.by"; bz: "ea.bz"; ca: "ea.ca"; cb: "ea.cb"; cc: "ea.cc"; cd: "ea.cd"; ce: "ea.ce"; cf: "ea.cf"; cg: "ea.cg"; ch: "ea.ch"; ci: "ea.ci"; cj: "ea.cj"; ck: "ea.ck"; cl: "ea.cl"; cm: "ea.cm"; cn: "ea.cn"; co: "ea.co"; cp: "ea.cp"; cq: "ea.cq"; cr: "ea.cr"; cs: "ea.cs"; ct: "ea.ct"; cu: "ea.cu"; cv: "ea.cv"; cw: "ea.cw"; cx: "ea.cx"; cy: "ea.cy"; cz: "ea.cz"; da: "ea.da"; db: "ea.db"; dc: "ea.dc"; dd: "ea.dd"; de: "ea.de"; df: "ea.df"; dg: "ea.dg"; dh: "ea.dh"; di: "ea.di"; dj: "ea.dj"; dk: "ea.dk"; dl: "ea.dl"; dm: "ea.dm"; dn: "ea.dn"; do: "ea.do"; dp: "ea.dp"; dq: "ea.dq"; dr: "ea.dr"; ds: "ea.ds"; dt: "ea.dt"; du: "ea.du"; dv: "ea.dv"; dw: "ea.dw"; dx: "ea.dx"; dy: "ea.dy"; dz: "ea.dz"; ea: "ea.ea"; eb: "ea.eb"; ec: "ea.ec"; ed: "ea.ed"; ee: "ea.ee"; ef: "ea.ef"; eg: "ea.eg"; eh: "ea.eh"; ei: "ea.ei"; ej: "ea.ej"; ek: "ea.ek"; el: "ea.el"; em: "ea.em"; en: "ea.en"; eo: "ea.eo"; ep: "ea.ep"; eq: "ea.eq"; er: "ea.er"; es: "ea.es"; et: "ea.et"; eu: "ea.eu"; ev: "ea.ev"; ew: "ea.ew"; ex: "ea.ex"; ey: "ea.ey"; ez: "ea.ez"; fa: "ea.fa"; fb: "ea.fb"; fc: "ea.fc"; fd: "ea.fd"; fe: "ea.fe"; ff: "ea.ff"; fg: "ea.fg"; fh: "ea.fh"; fi: "ea.fi"; fj: "ea.fj"; fk: "ea.fk"; fl: "ea.fl"; fm: "ea.fm"; fn: "ea.fn"; fo: "ea.fo"; fp: "ea.fp"; fq: "ea.fq"; fr: "ea.fr"; fs: "ea.fs"; ft: "ea.ft"; fu: "ea.fu"; fv: "ea.fv"; fw: "ea.fw"; fx: "ea.fx"; fy: "ea.fy"; fz: "ea.fz"; ga: "ea.ga"; gb: "ea.gb"; gc: "ea.gc"; gd: "ea.gd"; ge: "ea.ge"; gf: "ea.gf"; gg: "ea.gg"; gh: "ea.gh"; gi: "ea.gi"; gj: "ea.gj"; gk: "ea.gk"; gl: "ea.gl"; gm: "ea.gm"; gn: "ea.gn"; go: "ea.go"; gp: "ea.gp"; gq: "ea.gq"; gr: "ea.gr"; gs: "ea.gs"; gt: "ea.gt"; gu: "ea.gu"; gv: "ea.gv"; gw: "ea.gw"; gx: "ea.gx"; gy: "ea.gy"; gz: "ea.gz"; ha: "ea.ha"; hb: "ea.hb"; hc: "ea.hc"; hd: "ea.hd"; he: "ea.he"; hf: "ea.hf"; hg: "ea.hg"; hh: "ea.hh"; hi: "ea.hi"; hj: "ea.hj"; hk: "ea.hk"; hl: "ea.hl"; hm: "ea.hm"; hn: "ea.hn"; ho: "ea.ho"; hp: "ea.hp"; hq: "ea.hq"; hr: "ea.hr"; hs: "ea.hs"; ht: "ea.ht"; hu: "ea.hu"; hv: "ea.hv"; hw: "ea.hw"; hx: "ea.hx"; hy: "ea.hy"; hz: "ea.hz"; ia: "ea.ia"; ib: "ea.ib"; ic: "ea.ic"; id: "ea.id"; ie: "ea.ie"; if: "ea.if"; ig: "ea.ig"; ih: "ea.ih"; ii: "ea.ii"; ij: "ea.ij"; ik: "ea.ik"; il: "ea.il"; im: "ea.im"; in: "ea.in"; io: "ea.io"; ip: "ea.ip"; iq: "ea.iq"; ir: "ea.ir"; is: "ea.is"; it: "ea.it"; iu: "ea.iu"; iv: "ea.iv"; iw: "ea.iw"; ix: "ea.ix"; iy: "ea.iy"; iz: "ea.iz"; ja: "ea.ja"; jb: "ea.jb"; jc: "ea.jc"; jd: "ea.jd"; je: "ea.je"; jf: "ea.jf"; jg: "ea.jg"; jh: "ea.jh"; ji: "ea.ji"; jj: "ea.jj"; jk: "ea.jk"; jl: "ea.jl"; jm: "ea.jm"; jn: "ea.jn"; jo: "ea.jo"; jp: "ea.jp"; jq: "ea.jq"; jr: "ea.jr"; js: "ea.js"; jt: "ea.jt"; ju: "ea.ju"; jv: "ea.jv"; jw: "ea.jw"; jx: "ea.jx"; jy: "ea.jy"; jz: "ea.jz"; ka: "ea.ka"; kb: "ea.kb"; kc: "ea.kc"; kd: "ea.kd"; ke: "ea.ke"; kf: "ea.kf"; kg: "ea.kg"; kh: "ea.kh"; ki: "ea.ki"; kj: "ea.kj"; kk: "ea.kk"; kl: "ea.kl"; km: "ea.km"; kn: "ea.kn"; ko: "ea.ko"; kp: "ea.kp"; kq: "ea.kq"; kr: "ea.kr"; ks: "ea.ks"; kt: "ea.kt"; ku: "ea.ku"; kv: "ea.kv"; kw: "ea.kw"; kx: "ea.kx"; ky: "ea.ky"; kz: "ea.kz"; la: "ea.la"; lb: "ea.lb"; lc: "ea.lc"; ld: "ea.ld"; le: "ea.le"; lf: "ea.lf"; lg: "ea.lg"; lh: "ea.lh"; li: "ea.li"; lj: "ea.lj"; lk: "ea.lk"; ll: "ea.ll"; lm: "ea.lm"; ln: "ea.ln"; lo: "ea.lo"; lp: "ea.lp"; lq: "ea.lq"; lr: "ea.lr"; ls: "ea.ls"; lt: "ea.lt"; lu: "ea.lu"; lv: "ea.lv"; lw: "ea.lw"; lx: "ea.lx"; ly: "ea.ly"; lz: "ea.lz"; ma: "ea.ma"; mb: "ea.mb"; mc: "ea.mc"; md: "ea.md"; me: "ea.me"; mf: "ea.mf"; mg: "ea.mg"; mh: "ea.mh"; mi: "ea.mi"; mj: "ea.mj"; mk: "ea.mk"; ml: "ea.ml"; mm: "ea.mm"; mn: "ea.mn"; mo: "ea.mo"; mp: "ea.mp"; mq: "ea.mq"; mr: "ea.mr"; ms: "ea.ms"; mt: "ea.mt"; mu: "ea.mu"; mv: "ea.mv"; mw: "ea.mw"; mx: "ea.mx"; my: "ea.my"; mz: "ea.mz"; na: "ea.na"; nb: "ea.nb"; nc: "ea.nc"; nd: "ea.nd"; ne: "ea.ne"; nf: "ea.nf"; ng: "ea.ng"; nh: "ea.nh"; ni: "ea.ni"; nj: "ea.nj"; nk: "ea.nk"; nl: "ea.nl"; nm: "ea.nm"; nn: "ea.nn"; no: "ea.no"; np: "ea.np"; nq: "ea.nq"; nr: "ea.nr"; ns: "ea.ns"; nt: "ea.nt"; nu: "ea.nu"; nv: "ea.nv"; nw: "ea.nw"; nx: "ea.nx"; ny: "ea.ny"; nz: "ea.nz"; oa: "ea.oa"; ob: "ea.ob"; oc: "ea.oc"; od: "ea.od"; oe: "ea.oe"; of: "ea.of"; og: "ea.og"; oh: "ea.oh"; oi: "ea.oi"; oj: "ea.oj"; ok: "ea.ok"; ol: "ea.ol"; om: "ea.om"; on: "ea.on"; oo: "ea.oo"; op: "ea.op"; oq: "ea.oq"; or: "ea.or"; os: "ea.os"; ot: "ea.ot"; ou: "ea.ou"; ov: "ea.ov"; ow: "ea.ow"; ox: "ea.ox"; oy: "ea.oy"; oz: "ea.oz"; pa: "ea.pa"; pb: "ea.pb"; pc: "ea.pc"; pd: "ea.pd"; pe: "ea.pe"; pf: "ea.pf"; pg: "ea.pg"; ph: "ea.ph"; pi: "ea.pi"; pj: "ea.pj"; pk: "ea.pk"; pl: "ea.pl"; pm: "ea.pm"; pn: "ea.pn"; po: "ea.po"; pp: "ea.pp"; pq: "ea.pq"; pr: "ea.pr"; ps: "ea.ps"; pt: "ea.pt"; pu: "ea.pu"; pv: "ea.pv"; pw: "ea.pw"; px: "ea.px"; py: "ea.py"; pz: "ea.pz"; qa: "ea.qa"; qb: "ea.qb"; qc: "ea.qc"; qd: "ea.qd"; qe: "ea.qe"; qf: "ea.qf"; qg: "ea.qg"; qh: "ea.qh"; qi: "ea.qi"; qj: "ea.qj"; qk: "ea.qk"; ql: "ea.ql"; qm: "ea.qm"; qn: "ea.qn"; qo: "ea.qo"; qp: "ea.qp"; qq: "ea.qq"; qr: "ea.qr"; qs: "ea.qs"; qt: "ea.qt"; qu: "ea.qu"; qv: "ea.qv"; qw: "ea.qw"; qx: "ea.qx"; qy: "ea.qy"; qz: "ea.qz"; ra: "ea.ra"; rb: "ea.rb"; rc: "ea.rc"; rd: "ea.rd"; re: "ea.re"; rf: "ea.rf"; rg: "ea.rg"; rh: "ea.rh"; ri: "ea.ri"; rj: "ea.rj"; rk: "ea.rk"; rl: "ea.rl"; rm: "ea.rm"; rn: "ea.rn"; ro: "ea.ro"; rp: "ea.rp"; rq: "ea.rq"; rr: "ea.rr"; rs: "ea.rs"; rt: "ea.rt"; ru: "ea.ru"; rv: "ea.rv"; rw: "ea.rw"; rx: "ea.rx"; ry: "ea.ry"; rz: "ea.rz"; sa: "ea.sa"; sb: "ea.sb"; sc: "ea.sc"; sd: "ea.sd"; se: "ea.se"; sf: "ea.sf"; sg: "ea.sg"; sh: "ea.sh"; si: "ea.si"; sj: "ea.sj"; sk: "ea.sk"; sl: "ea.sl"; sm: "ea.sm"; sn: "ea.sn"; so: "ea.so"; sp: "ea.sp"; sq: "ea.sq"; sr: "ea.sr"; ss: "ea.ss"; st: "ea.st"; su: "ea.su"; sv: "ea.sv"; sw: "ea.sw"; sx: "ea.sx"; sy: "ea.sy"; sz: "ea.sz"; ta: "ea.ta"; tb: "ea.tb"; tc: "ea.tc"; td: "ea.td"; te: "ea.te"; tf: "ea.tf"; tg: "ea.tg"; th: "ea.th"; ti: "ea.ti"; tj: "ea.tj"; tk: "ea.tk"; tl: "ea.tl"; tm: "ea.tm"; tn: "ea.tn"; to: "ea.to"; tp: "ea.tp"; tq: "ea.tq"; tr: "ea.tr"; ts: "ea.ts"; tt: "ea.tt"; tu: "ea.tu"; tv: "ea.tv"; tw: "ea.tw"; tx: "ea.tx"; ty: "ea.ty"; tz: "ea.tz"; ua: "ea.ua"; ub: "ea.ub"; uc: "ea.uc"; ud: "ea.ud"; ue: "ea.ue"; uf: "ea.uf"; ug: "ea.ug"; uh: "ea.uh"; ui: "ea.ui"; uj: "ea.uj"; uk: "ea.uk"; ul: "ea.ul"; um: "ea.um"; un: "ea.un"; uo: "ea.uo"; up: "ea.up"; uq: "ea.uq"; ur: "ea.ur"; us: "ea.us"; ut: "ea.ut"; uu: "ea.uu"; uv: "ea.uv"; uw: "ea.uw"; ux: "ea.ux"; uy: "ea.uy"; uz: "ea.uz"; va: "ea.va"; vb: "ea.vb"; vc: "ea.vc"; vd: "ea.vd"; ve: "ea.ve"; vf: "ea.vf"; vg: "ea.vg"; vh: "ea.vh"; vi: "ea.vi"; vj: "ea.vj"; vk: "ea.vk"; vl: "ea.vl"; vm: "ea.vm"; vn: "ea.vn"; vo: "ea.vo"; vp: "ea.vp"; vq: "ea.vq"; vr: "ea.vr"; vs: "ea.vs"; vt: "ea.vt"; vu: "ea.vu"; vv: "ea.vv"; vw: "ea.vw"; vx: "ea.vx"; vy: "ea.vy"; vz: "ea.vz"; wa: "ea.wa"; wb: "ea.wb"; wc: "ea.wc"; wd: "ea.wd"; we: "ea.we"; wf: "ea.wf"; wg: "ea.wg"; wh: "ea.wh"; wi: "ea.wi"; wj: "ea.wj"; wk: "ea.wk"; wl: "ea.wl"; wm: "ea.wm"; wn: "ea.wn"; wo: "ea.wo"; wp: "ea.wp"; wq: "ea.wq"; wr: "ea.wr"; ws: "ea.ws"; wt: "ea.wt"; wu: "ea.wu"; wv: "ea.wv"; ww: "ea.ww"; wx: "ea.wx"; wy: "ea.wy"; wz: "ea.wz"; xa: "ea.xa"; xb: "ea.xb"; xc: "ea.xc"; xd: "ea.xd"; xe: "ea.xe"; xf: "ea.xf"; xg: "ea.xg"; xh: "ea.xh"; xi: "ea.xi"; xj: "ea.xj"; xk: "ea.xk"; xl: "ea.xl"; xm: "ea.xm"; xn: "ea.xn"; xo: "ea.xo"; xp: "ea.xp"; xq: "ea.xq"; xr: "ea.xr"; xs: "ea.xs"; xt: "ea.xt"; xu: "ea.xu"; xv: "ea.xv"; xw: "ea.xw"; xx: "ea.xx"; xy: "ea.xy"; xz: "ea.xz"; ya: "ea.ya"; yb: "ea.yb"; yc: "ea.yc"; yd: "ea.yd"; ye: "ea.ye"; yf: "ea.yf"; yg: "ea.yg"; yh: "ea.yh"; yi: "ea.yi"; yj: "ea.yj"; yk: "ea.yk"; yl: "ea.yl"; ym: "ea.ym"; yn: "ea.yn"; yo: "ea.yo"; yp: "ea.yp"; yq: "ea.yq"; yr: "ea.yr"; ys: "ea.ys"; yt: "ea.yt"; yu: "ea.yu"; yv: "ea.yv"; yw: "ea.yw"; yx: "ea.yx"; yy: "ea.yy"; yz: "ea.yz"; za: "ea.za"; zb: "ea.zb"; zc: "ea.zc"; zd: "ea.zd"; ze: "ea.ze"; zf: "ea.zf"; zg: "ea.zg"; zh: "ea.zh"; zi: "ea.zi"; zj: "ea.zj"; zk: "ea.zk"; zl: "ea.zl"; zm: "ea.zm"; zn: "ea.zn"; zo: "ea.zo"; zp: "ea.zp"; zq: "ea.zq"; zr: "ea.zr"; zs: "ea.zs"; zt: "ea.zt"; zu: "ea.zu"; zv: "ea.zv"; zw: "ea.zw"; zx: "ea.zx"; zy: "ea.zy"; zz: "ea.zz"; }; eb: { aa: "eb.aa"; ab: "eb.ab"; ac: "eb.ac"; ad: "eb.ad"; ae: "eb.ae"; af: "eb.af"; ag: "eb.ag"; ah: "eb.ah"; ai: "eb.ai"; aj: "eb.aj"; ak: "eb.ak"; al: "eb.al"; am: "eb.am"; an: "eb.an"; ao: "eb.ao"; ap: "eb.ap"; aq: "eb.aq"; ar: "eb.ar"; as: "eb.as"; at: "eb.at"; au: "eb.au"; av: "eb.av"; aw: "eb.aw"; ax: "eb.ax"; ay: "eb.ay"; az: "eb.az"; ba: "eb.ba"; bb: "eb.bb"; bc: "eb.bc"; bd: "eb.bd"; be: "eb.be"; bf: "eb.bf"; bg: "eb.bg"; bh: "eb.bh"; bi: "eb.bi"; bj: "eb.bj"; bk: "eb.bk"; bl: "eb.bl"; bm: "eb.bm"; bn: "eb.bn"; bo: "eb.bo"; bp: "eb.bp"; bq: "eb.bq"; br: "eb.br"; bs: "eb.bs"; bt: "eb.bt"; bu: "eb.bu"; bv: "eb.bv"; bw: "eb.bw"; bx: "eb.bx"; by: "eb.by"; bz: "eb.bz"; ca: "eb.ca"; cb: "eb.cb"; cc: "eb.cc"; cd: "eb.cd"; ce: "eb.ce"; cf: "eb.cf"; cg: "eb.cg"; ch: "eb.ch"; ci: "eb.ci"; cj: "eb.cj"; ck: "eb.ck"; cl: "eb.cl"; cm: "eb.cm"; cn: "eb.cn"; co: "eb.co"; cp: "eb.cp"; cq: "eb.cq"; cr: "eb.cr"; cs: "eb.cs"; ct: "eb.ct"; cu: "eb.cu"; cv: "eb.cv"; cw: "eb.cw"; cx: "eb.cx"; cy: "eb.cy"; cz: "eb.cz"; da: "eb.da"; db: "eb.db"; dc: "eb.dc"; dd: "eb.dd"; de: "eb.de"; df: "eb.df"; dg: "eb.dg"; dh: "eb.dh"; di: "eb.di"; dj: "eb.dj"; dk: "eb.dk"; dl: "eb.dl"; dm: "eb.dm"; dn: "eb.dn"; do: "eb.do"; dp: "eb.dp"; dq: "eb.dq"; dr: "eb.dr"; ds: "eb.ds"; dt: "eb.dt"; du: "eb.du"; dv: "eb.dv"; dw: "eb.dw"; dx: "eb.dx"; dy: "eb.dy"; dz: "eb.dz"; ea: "eb.ea"; eb: "eb.eb"; ec: "eb.ec"; ed: "eb.ed"; ee: "eb.ee"; ef: "eb.ef"; eg: "eb.eg"; eh: "eb.eh"; ei: "eb.ei"; ej: "eb.ej"; ek: "eb.ek"; el: "eb.el"; em: "eb.em"; en: "eb.en"; eo: "eb.eo"; ep: "eb.ep"; eq: "eb.eq"; er: "eb.er"; es: "eb.es"; et: "eb.et"; eu: "eb.eu"; ev: "eb.ev"; ew: "eb.ew"; ex: "eb.ex"; ey: "eb.ey"; ez: "eb.ez"; fa: "eb.fa"; fb: "eb.fb"; fc: "eb.fc"; fd: "eb.fd"; fe: "eb.fe"; ff: "eb.ff"; fg: "eb.fg"; fh: "eb.fh"; fi: "eb.fi"; fj: "eb.fj"; fk: "eb.fk"; fl: "eb.fl"; fm: "eb.fm"; fn: "eb.fn"; fo: "eb.fo"; fp: "eb.fp"; fq: "eb.fq"; fr: "eb.fr"; fs: "eb.fs"; ft: "eb.ft"; fu: "eb.fu"; fv: "eb.fv"; fw: "eb.fw"; fx: "eb.fx"; fy: "eb.fy"; fz: "eb.fz"; ga: "eb.ga"; gb: "eb.gb"; gc: "eb.gc"; gd: "eb.gd"; ge: "eb.ge"; gf: "eb.gf"; gg: "eb.gg"; gh: "eb.gh"; gi: "eb.gi"; gj: "eb.gj"; gk: "eb.gk"; gl: "eb.gl"; gm: "eb.gm"; gn: "eb.gn"; go: "eb.go"; gp: "eb.gp"; gq: "eb.gq"; gr: "eb.gr"; gs: "eb.gs"; gt: "eb.gt"; gu: "eb.gu"; gv: "eb.gv"; gw: "eb.gw"; gx: "eb.gx"; gy: "eb.gy"; gz: "eb.gz"; ha: "eb.ha"; hb: "eb.hb"; hc: "eb.hc"; hd: "eb.hd"; he: "eb.he"; hf: "eb.hf"; hg: "eb.hg"; hh: "eb.hh"; hi: "eb.hi"; hj: "eb.hj"; hk: "eb.hk"; hl: "eb.hl"; hm: "eb.hm"; hn: "eb.hn"; ho: "eb.ho"; hp: "eb.hp"; hq: "eb.hq"; hr: "eb.hr"; hs: "eb.hs"; ht: "eb.ht"; hu: "eb.hu"; hv: "eb.hv"; hw: "eb.hw"; hx: "eb.hx"; hy: "eb.hy"; hz: "eb.hz"; ia: "eb.ia"; ib: "eb.ib"; ic: "eb.ic"; id: "eb.id"; ie: "eb.ie"; if: "eb.if"; ig: "eb.ig"; ih: "eb.ih"; ii: "eb.ii"; ij: "eb.ij"; ik: "eb.ik"; il: "eb.il"; im: "eb.im"; in: "eb.in"; io: "eb.io"; ip: "eb.ip"; iq: "eb.iq"; ir: "eb.ir"; is: "eb.is"; it: "eb.it"; iu: "eb.iu"; iv: "eb.iv"; iw: "eb.iw"; ix: "eb.ix"; iy: "eb.iy"; iz: "eb.iz"; ja: "eb.ja"; jb: "eb.jb"; jc: "eb.jc"; jd: "eb.jd"; je: "eb.je"; jf: "eb.jf"; jg: "eb.jg"; jh: "eb.jh"; ji: "eb.ji"; jj: "eb.jj"; jk: "eb.jk"; jl: "eb.jl"; jm: "eb.jm"; jn: "eb.jn"; jo: "eb.jo"; jp: "eb.jp"; jq: "eb.jq"; jr: "eb.jr"; js: "eb.js"; jt: "eb.jt"; ju: "eb.ju"; jv: "eb.jv"; jw: "eb.jw"; jx: "eb.jx"; jy: "eb.jy"; jz: "eb.jz"; ka: "eb.ka"; kb: "eb.kb"; kc: "eb.kc"; kd: "eb.kd"; ke: "eb.ke"; kf: "eb.kf"; kg: "eb.kg"; kh: "eb.kh"; ki: "eb.ki"; kj: "eb.kj"; kk: "eb.kk"; kl: "eb.kl"; km: "eb.km"; kn: "eb.kn"; ko: "eb.ko"; kp: "eb.kp"; kq: "eb.kq"; kr: "eb.kr"; ks: "eb.ks"; kt: "eb.kt"; ku: "eb.ku"; kv: "eb.kv"; kw: "eb.kw"; kx: "eb.kx"; ky: "eb.ky"; kz: "eb.kz"; la: "eb.la"; lb: "eb.lb"; lc: "eb.lc"; ld: "eb.ld"; le: "eb.le"; lf: "eb.lf"; lg: "eb.lg"; lh: "eb.lh"; li: "eb.li"; lj: "eb.lj"; lk: "eb.lk"; ll: "eb.ll"; lm: "eb.lm"; ln: "eb.ln"; lo: "eb.lo"; lp: "eb.lp"; lq: "eb.lq"; lr: "eb.lr"; ls: "eb.ls"; lt: "eb.lt"; lu: "eb.lu"; lv: "eb.lv"; lw: "eb.lw"; lx: "eb.lx"; ly: "eb.ly"; lz: "eb.lz"; ma: "eb.ma"; mb: "eb.mb"; mc: "eb.mc"; md: "eb.md"; me: "eb.me"; mf: "eb.mf"; mg: "eb.mg"; mh: "eb.mh"; mi: "eb.mi"; mj: "eb.mj"; mk: "eb.mk"; ml: "eb.ml"; mm: "eb.mm"; mn: "eb.mn"; mo: "eb.mo"; mp: "eb.mp"; mq: "eb.mq"; mr: "eb.mr"; ms: "eb.ms"; mt: "eb.mt"; mu: "eb.mu"; mv: "eb.mv"; mw: "eb.mw"; mx: "eb.mx"; my: "eb.my"; mz: "eb.mz"; na: "eb.na"; nb: "eb.nb"; nc: "eb.nc"; nd: "eb.nd"; ne: "eb.ne"; nf: "eb.nf"; ng: "eb.ng"; nh: "eb.nh"; ni: "eb.ni"; nj: "eb.nj"; nk: "eb.nk"; nl: "eb.nl"; nm: "eb.nm"; nn: "eb.nn"; no: "eb.no"; np: "eb.np"; nq: "eb.nq"; nr: "eb.nr"; ns: "eb.ns"; nt: "eb.nt"; nu: "eb.nu"; nv: "eb.nv"; nw: "eb.nw"; nx: "eb.nx"; ny: "eb.ny"; nz: "eb.nz"; oa: "eb.oa"; ob: "eb.ob"; oc: "eb.oc"; od: "eb.od"; oe: "eb.oe"; of: "eb.of"; og: "eb.og"; oh: "eb.oh"; oi: "eb.oi"; oj: "eb.oj"; ok: "eb.ok"; ol: "eb.ol"; om: "eb.om"; on: "eb.on"; oo: "eb.oo"; op: "eb.op"; oq: "eb.oq"; or: "eb.or"; os: "eb.os"; ot: "eb.ot"; ou: "eb.ou"; ov: "eb.ov"; ow: "eb.ow"; ox: "eb.ox"; oy: "eb.oy"; oz: "eb.oz"; pa: "eb.pa"; pb: "eb.pb"; pc: "eb.pc"; pd: "eb.pd"; pe: "eb.pe"; pf: "eb.pf"; pg: "eb.pg"; ph: "eb.ph"; pi: "eb.pi"; pj: "eb.pj"; pk: "eb.pk"; pl: "eb.pl"; pm: "eb.pm"; pn: "eb.pn"; po: "eb.po"; pp: "eb.pp"; pq: "eb.pq"; pr: "eb.pr"; ps: "eb.ps"; pt: "eb.pt"; pu: "eb.pu"; pv: "eb.pv"; pw: "eb.pw"; px: "eb.px"; py: "eb.py"; pz: "eb.pz"; qa: "eb.qa"; qb: "eb.qb"; qc: "eb.qc"; qd: "eb.qd"; qe: "eb.qe"; qf: "eb.qf"; qg: "eb.qg"; qh: "eb.qh"; qi: "eb.qi"; qj: "eb.qj"; qk: "eb.qk"; ql: "eb.ql"; qm: "eb.qm"; qn: "eb.qn"; qo: "eb.qo"; qp: "eb.qp"; qq: "eb.qq"; qr: "eb.qr"; qs: "eb.qs"; qt: "eb.qt"; qu: "eb.qu"; qv: "eb.qv"; qw: "eb.qw"; qx: "eb.qx"; qy: "eb.qy"; qz: "eb.qz"; ra: "eb.ra"; rb: "eb.rb"; rc: "eb.rc"; rd: "eb.rd"; re: "eb.re"; rf: "eb.rf"; rg: "eb.rg"; rh: "eb.rh"; ri: "eb.ri"; rj: "eb.rj"; rk: "eb.rk"; rl: "eb.rl"; rm: "eb.rm"; rn: "eb.rn"; ro: "eb.ro"; rp: "eb.rp"; rq: "eb.rq"; rr: "eb.rr"; rs: "eb.rs"; rt: "eb.rt"; ru: "eb.ru"; rv: "eb.rv"; rw: "eb.rw"; rx: "eb.rx"; ry: "eb.ry"; rz: "eb.rz"; sa: "eb.sa"; sb: "eb.sb"; sc: "eb.sc"; sd: "eb.sd"; se: "eb.se"; sf: "eb.sf"; sg: "eb.sg"; sh: "eb.sh"; si: "eb.si"; sj: "eb.sj"; sk: "eb.sk"; sl: "eb.sl"; sm: "eb.sm"; sn: "eb.sn"; so: "eb.so"; sp: "eb.sp"; sq: "eb.sq"; sr: "eb.sr"; ss: "eb.ss"; st: "eb.st"; su: "eb.su"; sv: "eb.sv"; sw: "eb.sw"; sx: "eb.sx"; sy: "eb.sy"; sz: "eb.sz"; ta: "eb.ta"; tb: "eb.tb"; tc: "eb.tc"; td: "eb.td"; te: "eb.te"; tf: "eb.tf"; tg: "eb.tg"; th: "eb.th"; ti: "eb.ti"; tj: "eb.tj"; tk: "eb.tk"; tl: "eb.tl"; tm: "eb.tm"; tn: "eb.tn"; to: "eb.to"; tp: "eb.tp"; tq: "eb.tq"; tr: "eb.tr"; ts: "eb.ts"; tt: "eb.tt"; tu: "eb.tu"; tv: "eb.tv"; tw: "eb.tw"; tx: "eb.tx"; ty: "eb.ty"; tz: "eb.tz"; ua: "eb.ua"; ub: "eb.ub"; uc: "eb.uc"; ud: "eb.ud"; ue: "eb.ue"; uf: "eb.uf"; ug: "eb.ug"; uh: "eb.uh"; ui: "eb.ui"; uj: "eb.uj"; uk: "eb.uk"; ul: "eb.ul"; um: "eb.um"; un: "eb.un"; uo: "eb.uo"; up: "eb.up"; uq: "eb.uq"; ur: "eb.ur"; us: "eb.us"; ut: "eb.ut"; uu: "eb.uu"; uv: "eb.uv"; uw: "eb.uw"; ux: "eb.ux"; uy: "eb.uy"; uz: "eb.uz"; va: "eb.va"; vb: "eb.vb"; vc: "eb.vc"; vd: "eb.vd"; ve: "eb.ve"; vf: "eb.vf"; vg: "eb.vg"; vh: "eb.vh"; vi: "eb.vi"; vj: "eb.vj"; vk: "eb.vk"; vl: "eb.vl"; vm: "eb.vm"; vn: "eb.vn"; vo: "eb.vo"; vp: "eb.vp"; vq: "eb.vq"; vr: "eb.vr"; vs: "eb.vs"; vt: "eb.vt"; vu: "eb.vu"; vv: "eb.vv"; vw: "eb.vw"; vx: "eb.vx"; vy: "eb.vy"; vz: "eb.vz"; wa: "eb.wa"; wb: "eb.wb"; wc: "eb.wc"; wd: "eb.wd"; we: "eb.we"; wf: "eb.wf"; wg: "eb.wg"; wh: "eb.wh"; wi: "eb.wi"; wj: "eb.wj"; wk: "eb.wk"; wl: "eb.wl"; wm: "eb.wm"; wn: "eb.wn"; wo: "eb.wo"; wp: "eb.wp"; wq: "eb.wq"; wr: "eb.wr"; ws: "eb.ws"; wt: "eb.wt"; wu: "eb.wu"; wv: "eb.wv"; ww: "eb.ww"; wx: "eb.wx"; wy: "eb.wy"; wz: "eb.wz"; xa: "eb.xa"; xb: "eb.xb"; xc: "eb.xc"; xd: "eb.xd"; xe: "eb.xe"; xf: "eb.xf"; xg: "eb.xg"; xh: "eb.xh"; xi: "eb.xi"; xj: "eb.xj"; xk: "eb.xk"; xl: "eb.xl"; xm: "eb.xm"; xn: "eb.xn"; xo: "eb.xo"; xp: "eb.xp"; xq: "eb.xq"; xr: "eb.xr"; xs: "eb.xs"; xt: "eb.xt"; xu: "eb.xu"; xv: "eb.xv"; xw: "eb.xw"; xx: "eb.xx"; xy: "eb.xy"; xz: "eb.xz"; ya: "eb.ya"; yb: "eb.yb"; yc: "eb.yc"; yd: "eb.yd"; ye: "eb.ye"; yf: "eb.yf"; yg: "eb.yg"; yh: "eb.yh"; yi: "eb.yi"; yj: "eb.yj"; yk: "eb.yk"; yl: "eb.yl"; ym: "eb.ym"; yn: "eb.yn"; yo: "eb.yo"; yp: "eb.yp"; yq: "eb.yq"; yr: "eb.yr"; ys: "eb.ys"; yt: "eb.yt"; yu: "eb.yu"; yv: "eb.yv"; yw: "eb.yw"; yx: "eb.yx"; yy: "eb.yy"; yz: "eb.yz"; za: "eb.za"; zb: "eb.zb"; zc: "eb.zc"; zd: "eb.zd"; ze: "eb.ze"; zf: "eb.zf"; zg: "eb.zg"; zh: "eb.zh"; zi: "eb.zi"; zj: "eb.zj"; zk: "eb.zk"; zl: "eb.zl"; zm: "eb.zm"; zn: "eb.zn"; zo: "eb.zo"; zp: "eb.zp"; zq: "eb.zq"; zr: "eb.zr"; zs: "eb.zs"; zt: "eb.zt"; zu: "eb.zu"; zv: "eb.zv"; zw: "eb.zw"; zx: "eb.zx"; zy: "eb.zy"; zz: "eb.zz"; }; ec: { aa: "ec.aa"; ab: "ec.ab"; ac: "ec.ac"; ad: "ec.ad"; ae: "ec.ae"; af: "ec.af"; ag: "ec.ag"; ah: "ec.ah"; ai: "ec.ai"; aj: "ec.aj"; ak: "ec.ak"; al: "ec.al"; am: "ec.am"; an: "ec.an"; ao: "ec.ao"; ap: "ec.ap"; aq: "ec.aq"; ar: "ec.ar"; as: "ec.as"; at: "ec.at"; au: "ec.au"; av: "ec.av"; aw: "ec.aw"; ax: "ec.ax"; ay: "ec.ay"; az: "ec.az"; ba: "ec.ba"; bb: "ec.bb"; bc: "ec.bc"; bd: "ec.bd"; be: "ec.be"; bf: "ec.bf"; bg: "ec.bg"; bh: "ec.bh"; bi: "ec.bi"; bj: "ec.bj"; bk: "ec.bk"; bl: "ec.bl"; bm: "ec.bm"; bn: "ec.bn"; bo: "ec.bo"; bp: "ec.bp"; bq: "ec.bq"; br: "ec.br"; bs: "ec.bs"; bt: "ec.bt"; bu: "ec.bu"; bv: "ec.bv"; bw: "ec.bw"; bx: "ec.bx"; by: "ec.by"; bz: "ec.bz"; ca: "ec.ca"; cb: "ec.cb"; cc: "ec.cc"; cd: "ec.cd"; ce: "ec.ce"; cf: "ec.cf"; cg: "ec.cg"; ch: "ec.ch"; ci: "ec.ci"; cj: "ec.cj"; ck: "ec.ck"; cl: "ec.cl"; cm: "ec.cm"; cn: "ec.cn"; co: "ec.co"; cp: "ec.cp"; cq: "ec.cq"; cr: "ec.cr"; cs: "ec.cs"; ct: "ec.ct"; cu: "ec.cu"; cv: "ec.cv"; cw: "ec.cw"; cx: "ec.cx"; cy: "ec.cy"; cz: "ec.cz"; da: "ec.da"; db: "ec.db"; dc: "ec.dc"; dd: "ec.dd"; de: "ec.de"; df: "ec.df"; dg: "ec.dg"; dh: "ec.dh"; di: "ec.di"; dj: "ec.dj"; dk: "ec.dk"; dl: "ec.dl"; dm: "ec.dm"; dn: "ec.dn"; do: "ec.do"; dp: "ec.dp"; dq: "ec.dq"; dr: "ec.dr"; ds: "ec.ds"; dt: "ec.dt"; du: "ec.du"; dv: "ec.dv"; dw: "ec.dw"; dx: "ec.dx"; dy: "ec.dy"; dz: "ec.dz"; ea: "ec.ea"; eb: "ec.eb"; ec: "ec.ec"; ed: "ec.ed"; ee: "ec.ee"; ef: "ec.ef"; eg: "ec.eg"; eh: "ec.eh"; ei: "ec.ei"; ej: "ec.ej"; ek: "ec.ek"; el: "ec.el"; em: "ec.em"; en: "ec.en"; eo: "ec.eo"; ep: "ec.ep"; eq: "ec.eq"; er: "ec.er"; es: "ec.es"; et: "ec.et"; eu: "ec.eu"; ev: "ec.ev"; ew: "ec.ew"; ex: "ec.ex"; ey: "ec.ey"; ez: "ec.ez"; fa: "ec.fa"; fb: "ec.fb"; fc: "ec.fc"; fd: "ec.fd"; fe: "ec.fe"; ff: "ec.ff"; fg: "ec.fg"; fh: "ec.fh"; fi: "ec.fi"; fj: "ec.fj"; fk: "ec.fk"; fl: "ec.fl"; fm: "ec.fm"; fn: "ec.fn"; fo: "ec.fo"; fp: "ec.fp"; fq: "ec.fq"; fr: "ec.fr"; fs: "ec.fs"; ft: "ec.ft"; fu: "ec.fu"; fv: "ec.fv"; fw: "ec.fw"; fx: "ec.fx"; fy: "ec.fy"; fz: "ec.fz"; ga: "ec.ga"; gb: "ec.gb"; gc: "ec.gc"; gd: "ec.gd"; ge: "ec.ge"; gf: "ec.gf"; gg: "ec.gg"; gh: "ec.gh"; gi: "ec.gi"; gj: "ec.gj"; gk: "ec.gk"; gl: "ec.gl"; gm: "ec.gm"; gn: "ec.gn"; go: "ec.go"; gp: "ec.gp"; gq: "ec.gq"; gr: "ec.gr"; gs: "ec.gs"; gt: "ec.gt"; gu: "ec.gu"; gv: "ec.gv"; gw: "ec.gw"; gx: "ec.gx"; gy: "ec.gy"; gz: "ec.gz"; ha: "ec.ha"; hb: "ec.hb"; hc: "ec.hc"; hd: "ec.hd"; he: "ec.he"; hf: "ec.hf"; hg: "ec.hg"; hh: "ec.hh"; hi: "ec.hi"; hj: "ec.hj"; hk: "ec.hk"; hl: "ec.hl"; hm: "ec.hm"; hn: "ec.hn"; ho: "ec.ho"; hp: "ec.hp"; hq: "ec.hq"; hr: "ec.hr"; hs: "ec.hs"; ht: "ec.ht"; hu: "ec.hu"; hv: "ec.hv"; hw: "ec.hw"; hx: "ec.hx"; hy: "ec.hy"; hz: "ec.hz"; ia: "ec.ia"; ib: "ec.ib"; ic: "ec.ic"; id: "ec.id"; ie: "ec.ie"; if: "ec.if"; ig: "ec.ig"; ih: "ec.ih"; ii: "ec.ii"; ij: "ec.ij"; ik: "ec.ik"; il: "ec.il"; im: "ec.im"; in: "ec.in"; io: "ec.io"; ip: "ec.ip"; iq: "ec.iq"; ir: "ec.ir"; is: "ec.is"; it: "ec.it"; iu: "ec.iu"; iv: "ec.iv"; iw: "ec.iw"; ix: "ec.ix"; iy: "ec.iy"; iz: "ec.iz"; ja: "ec.ja"; jb: "ec.jb"; jc: "ec.jc"; jd: "ec.jd"; je: "ec.je"; jf: "ec.jf"; jg: "ec.jg"; jh: "ec.jh"; ji: "ec.ji"; jj: "ec.jj"; jk: "ec.jk"; jl: "ec.jl"; jm: "ec.jm"; jn: "ec.jn"; jo: "ec.jo"; jp: "ec.jp"; jq: "ec.jq"; jr: "ec.jr"; js: "ec.js"; jt: "ec.jt"; ju: "ec.ju"; jv: "ec.jv"; jw: "ec.jw"; jx: "ec.jx"; jy: "ec.jy"; jz: "ec.jz"; ka: "ec.ka"; kb: "ec.kb"; kc: "ec.kc"; kd: "ec.kd"; ke: "ec.ke"; kf: "ec.kf"; kg: "ec.kg"; kh: "ec.kh"; ki: "ec.ki"; kj: "ec.kj"; kk: "ec.kk"; kl: "ec.kl"; km: "ec.km"; kn: "ec.kn"; ko: "ec.ko"; kp: "ec.kp"; kq: "ec.kq"; kr: "ec.kr"; ks: "ec.ks"; kt: "ec.kt"; ku: "ec.ku"; kv: "ec.kv"; kw: "ec.kw"; kx: "ec.kx"; ky: "ec.ky"; kz: "ec.kz"; la: "ec.la"; lb: "ec.lb"; lc: "ec.lc"; ld: "ec.ld"; le: "ec.le"; lf: "ec.lf"; lg: "ec.lg"; lh: "ec.lh"; li: "ec.li"; lj: "ec.lj"; lk: "ec.lk"; ll: "ec.ll"; lm: "ec.lm"; ln: "ec.ln"; lo: "ec.lo"; lp: "ec.lp"; lq: "ec.lq"; lr: "ec.lr"; ls: "ec.ls"; lt: "ec.lt"; lu: "ec.lu"; lv: "ec.lv"; lw: "ec.lw"; lx: "ec.lx"; ly: "ec.ly"; lz: "ec.lz"; ma: "ec.ma"; mb: "ec.mb"; mc: "ec.mc"; md: "ec.md"; me: "ec.me"; mf: "ec.mf"; mg: "ec.mg"; mh: "ec.mh"; mi: "ec.mi"; mj: "ec.mj"; mk: "ec.mk"; ml: "ec.ml"; mm: "ec.mm"; mn: "ec.mn"; mo: "ec.mo"; mp: "ec.mp"; mq: "ec.mq"; mr: "ec.mr"; ms: "ec.ms"; mt: "ec.mt"; mu: "ec.mu"; mv: "ec.mv"; mw: "ec.mw"; mx: "ec.mx"; my: "ec.my"; mz: "ec.mz"; na: "ec.na"; nb: "ec.nb"; nc: "ec.nc"; nd: "ec.nd"; ne: "ec.ne"; nf: "ec.nf"; ng: "ec.ng"; nh: "ec.nh"; ni: "ec.ni"; nj: "ec.nj"; nk: "ec.nk"; nl: "ec.nl"; nm: "ec.nm"; nn: "ec.nn"; no: "ec.no"; np: "ec.np"; nq: "ec.nq"; nr: "ec.nr"; ns: "ec.ns"; nt: "ec.nt"; nu: "ec.nu"; nv: "ec.nv"; nw: "ec.nw"; nx: "ec.nx"; ny: "ec.ny"; nz: "ec.nz"; oa: "ec.oa"; ob: "ec.ob"; oc: "ec.oc"; od: "ec.od"; oe: "ec.oe"; of: "ec.of"; og: "ec.og"; oh: "ec.oh"; oi: "ec.oi"; oj: "ec.oj"; ok: "ec.ok"; ol: "ec.ol"; om: "ec.om"; on: "ec.on"; oo: "ec.oo"; op: "ec.op"; oq: "ec.oq"; or: "ec.or"; os: "ec.os"; ot: "ec.ot"; ou: "ec.ou"; ov: "ec.ov"; ow: "ec.ow"; ox: "ec.ox"; oy: "ec.oy"; oz: "ec.oz"; pa: "ec.pa"; pb: "ec.pb"; pc: "ec.pc"; pd: "ec.pd"; pe: "ec.pe"; pf: "ec.pf"; pg: "ec.pg"; ph: "ec.ph"; pi: "ec.pi"; pj: "ec.pj"; pk: "ec.pk"; pl: "ec.pl"; pm: "ec.pm"; pn: "ec.pn"; po: "ec.po"; pp: "ec.pp"; pq: "ec.pq"; pr: "ec.pr"; ps: "ec.ps"; pt: "ec.pt"; pu: "ec.pu"; pv: "ec.pv"; pw: "ec.pw"; px: "ec.px"; py: "ec.py"; pz: "ec.pz"; qa: "ec.qa"; qb: "ec.qb"; qc: "ec.qc"; qd: "ec.qd"; qe: "ec.qe"; qf: "ec.qf"; qg: "ec.qg"; qh: "ec.qh"; qi: "ec.qi"; qj: "ec.qj"; qk: "ec.qk"; ql: "ec.ql"; qm: "ec.qm"; qn: "ec.qn"; qo: "ec.qo"; qp: "ec.qp"; qq: "ec.qq"; qr: "ec.qr"; qs: "ec.qs"; qt: "ec.qt"; qu: "ec.qu"; qv: "ec.qv"; qw: "ec.qw"; qx: "ec.qx"; qy: "ec.qy"; qz: "ec.qz"; ra: "ec.ra"; rb: "ec.rb"; rc: "ec.rc"; rd: "ec.rd"; re: "ec.re"; rf: "ec.rf"; rg: "ec.rg"; rh: "ec.rh"; ri: "ec.ri"; rj: "ec.rj"; rk: "ec.rk"; rl: "ec.rl"; rm: "ec.rm"; rn: "ec.rn"; ro: "ec.ro"; rp: "ec.rp"; rq: "ec.rq"; rr: "ec.rr"; rs: "ec.rs"; rt: "ec.rt"; ru: "ec.ru"; rv: "ec.rv"; rw: "ec.rw"; rx: "ec.rx"; ry: "ec.ry"; rz: "ec.rz"; sa: "ec.sa"; sb: "ec.sb"; sc: "ec.sc"; sd: "ec.sd"; se: "ec.se"; sf: "ec.sf"; sg: "ec.sg"; sh: "ec.sh"; si: "ec.si"; sj: "ec.sj"; sk: "ec.sk"; sl: "ec.sl"; sm: "ec.sm"; sn: "ec.sn"; so: "ec.so"; sp: "ec.sp"; sq: "ec.sq"; sr: "ec.sr"; ss: "ec.ss"; st: "ec.st"; su: "ec.su"; sv: "ec.sv"; sw: "ec.sw"; sx: "ec.sx"; sy: "ec.sy"; sz: "ec.sz"; ta: "ec.ta"; tb: "ec.tb"; tc: "ec.tc"; td: "ec.td"; te: "ec.te"; tf: "ec.tf"; tg: "ec.tg"; th: "ec.th"; ti: "ec.ti"; tj: "ec.tj"; tk: "ec.tk"; tl: "ec.tl"; tm: "ec.tm"; tn: "ec.tn"; to: "ec.to"; tp: "ec.tp"; tq: "ec.tq"; tr: "ec.tr"; ts: "ec.ts"; tt: "ec.tt"; tu: "ec.tu"; tv: "ec.tv"; tw: "ec.tw"; tx: "ec.tx"; ty: "ec.ty"; tz: "ec.tz"; ua: "ec.ua"; ub: "ec.ub"; uc: "ec.uc"; ud: "ec.ud"; ue: "ec.ue"; uf: "ec.uf"; ug: "ec.ug"; uh: "ec.uh"; ui: "ec.ui"; uj: "ec.uj"; uk: "ec.uk"; ul: "ec.ul"; um: "ec.um"; un: "ec.un"; uo: "ec.uo"; up: "ec.up"; uq: "ec.uq"; ur: "ec.ur"; us: "ec.us"; ut: "ec.ut"; uu: "ec.uu"; uv: "ec.uv"; uw: "ec.uw"; ux: "ec.ux"; uy: "ec.uy"; uz: "ec.uz"; va: "ec.va"; vb: "ec.vb"; vc: "ec.vc"; vd: "ec.vd"; ve: "ec.ve"; vf: "ec.vf"; vg: "ec.vg"; vh: "ec.vh"; vi: "ec.vi"; vj: "ec.vj"; vk: "ec.vk"; vl: "ec.vl"; vm: "ec.vm"; vn: "ec.vn"; vo: "ec.vo"; vp: "ec.vp"; vq: "ec.vq"; vr: "ec.vr"; vs: "ec.vs"; vt: "ec.vt"; vu: "ec.vu"; vv: "ec.vv"; vw: "ec.vw"; vx: "ec.vx"; vy: "ec.vy"; vz: "ec.vz"; wa: "ec.wa"; wb: "ec.wb"; wc: "ec.wc"; wd: "ec.wd"; we: "ec.we"; wf: "ec.wf"; wg: "ec.wg"; wh: "ec.wh"; wi: "ec.wi"; wj: "ec.wj"; wk: "ec.wk"; wl: "ec.wl"; wm: "ec.wm"; wn: "ec.wn"; wo: "ec.wo"; wp: "ec.wp"; wq: "ec.wq"; wr: "ec.wr"; ws: "ec.ws"; wt: "ec.wt"; wu: "ec.wu"; wv: "ec.wv"; ww: "ec.ww"; wx: "ec.wx"; wy: "ec.wy"; wz: "ec.wz"; xa: "ec.xa"; xb: "ec.xb"; xc: "ec.xc"; xd: "ec.xd"; xe: "ec.xe"; xf: "ec.xf"; xg: "ec.xg"; xh: "ec.xh"; xi: "ec.xi"; xj: "ec.xj"; xk: "ec.xk"; xl: "ec.xl"; xm: "ec.xm"; xn: "ec.xn"; xo: "ec.xo"; xp: "ec.xp"; xq: "ec.xq"; xr: "ec.xr"; xs: "ec.xs"; xt: "ec.xt"; xu: "ec.xu"; xv: "ec.xv"; xw: "ec.xw"; xx: "ec.xx"; xy: "ec.xy"; xz: "ec.xz"; ya: "ec.ya"; yb: "ec.yb"; yc: "ec.yc"; yd: "ec.yd"; ye: "ec.ye"; yf: "ec.yf"; yg: "ec.yg"; yh: "ec.yh"; yi: "ec.yi"; yj: "ec.yj"; yk: "ec.yk"; yl: "ec.yl"; ym: "ec.ym"; yn: "ec.yn"; yo: "ec.yo"; yp: "ec.yp"; yq: "ec.yq"; yr: "ec.yr"; ys: "ec.ys"; yt: "ec.yt"; yu: "ec.yu"; yv: "ec.yv"; yw: "ec.yw"; yx: "ec.yx"; yy: "ec.yy"; yz: "ec.yz"; za: "ec.za"; zb: "ec.zb"; zc: "ec.zc"; zd: "ec.zd"; ze: "ec.ze"; zf: "ec.zf"; zg: "ec.zg"; zh: "ec.zh"; zi: "ec.zi"; zj: "ec.zj"; zk: "ec.zk"; zl: "ec.zl"; zm: "ec.zm"; zn: "ec.zn"; zo: "ec.zo"; zp: "ec.zp"; zq: "ec.zq"; zr: "ec.zr"; zs: "ec.zs"; zt: "ec.zt"; zu: "ec.zu"; zv: "ec.zv"; zw: "ec.zw"; zx: "ec.zx"; zy: "ec.zy"; zz: "ec.zz"; }; ed: { aa: "ed.aa"; ab: "ed.ab"; ac: "ed.ac"; ad: "ed.ad"; ae: "ed.ae"; af: "ed.af"; ag: "ed.ag"; ah: "ed.ah"; ai: "ed.ai"; aj: "ed.aj"; ak: "ed.ak"; al: "ed.al"; am: "ed.am"; an: "ed.an"; ao: "ed.ao"; ap: "ed.ap"; aq: "ed.aq"; ar: "ed.ar"; as: "ed.as"; at: "ed.at"; au: "ed.au"; av: "ed.av"; aw: "ed.aw"; ax: "ed.ax"; ay: "ed.ay"; az: "ed.az"; ba: "ed.ba"; bb: "ed.bb"; bc: "ed.bc"; bd: "ed.bd"; be: "ed.be"; bf: "ed.bf"; bg: "ed.bg"; bh: "ed.bh"; bi: "ed.bi"; bj: "ed.bj"; bk: "ed.bk"; bl: "ed.bl"; bm: "ed.bm"; bn: "ed.bn"; bo: "ed.bo"; bp: "ed.bp"; bq: "ed.bq"; br: "ed.br"; bs: "ed.bs"; bt: "ed.bt"; bu: "ed.bu"; bv: "ed.bv"; bw: "ed.bw"; bx: "ed.bx"; by: "ed.by"; bz: "ed.bz"; ca: "ed.ca"; cb: "ed.cb"; cc: "ed.cc"; cd: "ed.cd"; ce: "ed.ce"; cf: "ed.cf"; cg: "ed.cg"; ch: "ed.ch"; ci: "ed.ci"; cj: "ed.cj"; ck: "ed.ck"; cl: "ed.cl"; cm: "ed.cm"; cn: "ed.cn"; co: "ed.co"; cp: "ed.cp"; cq: "ed.cq"; cr: "ed.cr"; cs: "ed.cs"; ct: "ed.ct"; cu: "ed.cu"; cv: "ed.cv"; cw: "ed.cw"; cx: "ed.cx"; cy: "ed.cy"; cz: "ed.cz"; da: "ed.da"; db: "ed.db"; dc: "ed.dc"; dd: "ed.dd"; de: "ed.de"; df: "ed.df"; dg: "ed.dg"; dh: "ed.dh"; di: "ed.di"; dj: "ed.dj"; dk: "ed.dk"; dl: "ed.dl"; dm: "ed.dm"; dn: "ed.dn"; do: "ed.do"; dp: "ed.dp"; dq: "ed.dq"; dr: "ed.dr"; ds: "ed.ds"; dt: "ed.dt"; du: "ed.du"; dv: "ed.dv"; dw: "ed.dw"; dx: "ed.dx"; dy: "ed.dy"; dz: "ed.dz"; ea: "ed.ea"; eb: "ed.eb"; ec: "ed.ec"; ed: "ed.ed"; ee: "ed.ee"; ef: "ed.ef"; eg: "ed.eg"; eh: "ed.eh"; ei: "ed.ei"; ej: "ed.ej"; ek: "ed.ek"; el: "ed.el"; em: "ed.em"; en: "ed.en"; eo: "ed.eo"; ep: "ed.ep"; eq: "ed.eq"; er: "ed.er"; es: "ed.es"; et: "ed.et"; eu: "ed.eu"; ev: "ed.ev"; ew: "ed.ew"; ex: "ed.ex"; ey: "ed.ey"; ez: "ed.ez"; fa: "ed.fa"; fb: "ed.fb"; fc: "ed.fc"; fd: "ed.fd"; fe: "ed.fe"; ff: "ed.ff"; fg: "ed.fg"; fh: "ed.fh"; fi: "ed.fi"; fj: "ed.fj"; fk: "ed.fk"; fl: "ed.fl"; fm: "ed.fm"; fn: "ed.fn"; fo: "ed.fo"; fp: "ed.fp"; fq: "ed.fq"; fr: "ed.fr"; fs: "ed.fs"; ft: "ed.ft"; fu: "ed.fu"; fv: "ed.fv"; fw: "ed.fw"; fx: "ed.fx"; fy: "ed.fy"; fz: "ed.fz"; ga: "ed.ga"; gb: "ed.gb"; gc: "ed.gc"; gd: "ed.gd"; ge: "ed.ge"; gf: "ed.gf"; gg: "ed.gg"; gh: "ed.gh"; gi: "ed.gi"; gj: "ed.gj"; gk: "ed.gk"; gl: "ed.gl"; gm: "ed.gm"; gn: "ed.gn"; go: "ed.go"; gp: "ed.gp"; gq: "ed.gq"; gr: "ed.gr"; gs: "ed.gs"; gt: "ed.gt"; gu: "ed.gu"; gv: "ed.gv"; gw: "ed.gw"; gx: "ed.gx"; gy: "ed.gy"; gz: "ed.gz"; ha: "ed.ha"; hb: "ed.hb"; hc: "ed.hc"; hd: "ed.hd"; he: "ed.he"; hf: "ed.hf"; hg: "ed.hg"; hh: "ed.hh"; hi: "ed.hi"; hj: "ed.hj"; hk: "ed.hk"; hl: "ed.hl"; hm: "ed.hm"; hn: "ed.hn"; ho: "ed.ho"; hp: "ed.hp"; hq: "ed.hq"; hr: "ed.hr"; hs: "ed.hs"; ht: "ed.ht"; hu: "ed.hu"; hv: "ed.hv"; hw: "ed.hw"; hx: "ed.hx"; hy: "ed.hy"; hz: "ed.hz"; ia: "ed.ia"; ib: "ed.ib"; ic: "ed.ic"; id: "ed.id"; ie: "ed.ie"; if: "ed.if"; ig: "ed.ig"; ih: "ed.ih"; ii: "ed.ii"; ij: "ed.ij"; ik: "ed.ik"; il: "ed.il"; im: "ed.im"; in: "ed.in"; io: "ed.io"; ip: "ed.ip"; iq: "ed.iq"; ir: "ed.ir"; is: "ed.is"; it: "ed.it"; iu: "ed.iu"; iv: "ed.iv"; iw: "ed.iw"; ix: "ed.ix"; iy: "ed.iy"; iz: "ed.iz"; ja: "ed.ja"; jb: "ed.jb"; jc: "ed.jc"; jd: "ed.jd"; je: "ed.je"; jf: "ed.jf"; jg: "ed.jg"; jh: "ed.jh"; ji: "ed.ji"; jj: "ed.jj"; jk: "ed.jk"; jl: "ed.jl"; jm: "ed.jm"; jn: "ed.jn"; jo: "ed.jo"; jp: "ed.jp"; jq: "ed.jq"; jr: "ed.jr"; js: "ed.js"; jt: "ed.jt"; ju: "ed.ju"; jv: "ed.jv"; jw: "ed.jw"; jx: "ed.jx"; jy: "ed.jy"; jz: "ed.jz"; ka: "ed.ka"; kb: "ed.kb"; kc: "ed.kc"; kd: "ed.kd"; ke: "ed.ke"; kf: "ed.kf"; kg: "ed.kg"; kh: "ed.kh"; ki: "ed.ki"; kj: "ed.kj"; kk: "ed.kk"; kl: "ed.kl"; km: "ed.km"; kn: "ed.kn"; ko: "ed.ko"; kp: "ed.kp"; kq: "ed.kq"; kr: "ed.kr"; ks: "ed.ks"; kt: "ed.kt"; ku: "ed.ku"; kv: "ed.kv"; kw: "ed.kw"; kx: "ed.kx"; ky: "ed.ky"; kz: "ed.kz"; la: "ed.la"; lb: "ed.lb"; lc: "ed.lc"; ld: "ed.ld"; le: "ed.le"; lf: "ed.lf"; lg: "ed.lg"; lh: "ed.lh"; li: "ed.li"; lj: "ed.lj"; lk: "ed.lk"; ll: "ed.ll"; lm: "ed.lm"; ln: "ed.ln"; lo: "ed.lo"; lp: "ed.lp"; lq: "ed.lq"; lr: "ed.lr"; ls: "ed.ls"; lt: "ed.lt"; lu: "ed.lu"; lv: "ed.lv"; lw: "ed.lw"; lx: "ed.lx"; ly: "ed.ly"; lz: "ed.lz"; ma: "ed.ma"; mb: "ed.mb"; mc: "ed.mc"; md: "ed.md"; me: "ed.me"; mf: "ed.mf"; mg: "ed.mg"; mh: "ed.mh"; mi: "ed.mi"; mj: "ed.mj"; mk: "ed.mk"; ml: "ed.ml"; mm: "ed.mm"; mn: "ed.mn"; mo: "ed.mo"; mp: "ed.mp"; mq: "ed.mq"; mr: "ed.mr"; ms: "ed.ms"; mt: "ed.mt"; mu: "ed.mu"; mv: "ed.mv"; mw: "ed.mw"; mx: "ed.mx"; my: "ed.my"; mz: "ed.mz"; na: "ed.na"; nb: "ed.nb"; nc: "ed.nc"; nd: "ed.nd"; ne: "ed.ne"; nf: "ed.nf"; ng: "ed.ng"; nh: "ed.nh"; ni: "ed.ni"; nj: "ed.nj"; nk: "ed.nk"; nl: "ed.nl"; nm: "ed.nm"; nn: "ed.nn"; no: "ed.no"; np: "ed.np"; nq: "ed.nq"; nr: "ed.nr"; ns: "ed.ns"; nt: "ed.nt"; nu: "ed.nu"; nv: "ed.nv"; nw: "ed.nw"; nx: "ed.nx"; ny: "ed.ny"; nz: "ed.nz"; oa: "ed.oa"; ob: "ed.ob"; oc: "ed.oc"; od: "ed.od"; oe: "ed.oe"; of: "ed.of"; og: "ed.og"; oh: "ed.oh"; oi: "ed.oi"; oj: "ed.oj"; ok: "ed.ok"; ol: "ed.ol"; om: "ed.om"; on: "ed.on"; oo: "ed.oo"; op: "ed.op"; oq: "ed.oq"; or: "ed.or"; os: "ed.os"; ot: "ed.ot"; ou: "ed.ou"; ov: "ed.ov"; ow: "ed.ow"; ox: "ed.ox"; oy: "ed.oy"; oz: "ed.oz"; pa: "ed.pa"; pb: "ed.pb"; pc: "ed.pc"; pd: "ed.pd"; pe: "ed.pe"; pf: "ed.pf"; pg: "ed.pg"; ph: "ed.ph"; pi: "ed.pi"; pj: "ed.pj"; pk: "ed.pk"; pl: "ed.pl"; pm: "ed.pm"; pn: "ed.pn"; po: "ed.po"; pp: "ed.pp"; pq: "ed.pq"; pr: "ed.pr"; ps: "ed.ps"; pt: "ed.pt"; pu: "ed.pu"; pv: "ed.pv"; pw: "ed.pw"; px: "ed.px"; py: "ed.py"; pz: "ed.pz"; qa: "ed.qa"; qb: "ed.qb"; qc: "ed.qc"; qd: "ed.qd"; qe: "ed.qe"; qf: "ed.qf"; qg: "ed.qg"; qh: "ed.qh"; qi: "ed.qi"; qj: "ed.qj"; qk: "ed.qk"; ql: "ed.ql"; qm: "ed.qm"; qn: "ed.qn"; qo: "ed.qo"; qp: "ed.qp"; qq: "ed.qq"; qr: "ed.qr"; qs: "ed.qs"; qt: "ed.qt"; qu: "ed.qu"; qv: "ed.qv"; qw: "ed.qw"; qx: "ed.qx"; qy: "ed.qy"; qz: "ed.qz"; ra: "ed.ra"; rb: "ed.rb"; rc: "ed.rc"; rd: "ed.rd"; re: "ed.re"; rf: "ed.rf"; rg: "ed.rg"; rh: "ed.rh"; ri: "ed.ri"; rj: "ed.rj"; rk: "ed.rk"; rl: "ed.rl"; rm: "ed.rm"; rn: "ed.rn"; ro: "ed.ro"; rp: "ed.rp"; rq: "ed.rq"; rr: "ed.rr"; rs: "ed.rs"; rt: "ed.rt"; ru: "ed.ru"; rv: "ed.rv"; rw: "ed.rw"; rx: "ed.rx"; ry: "ed.ry"; rz: "ed.rz"; sa: "ed.sa"; sb: "ed.sb"; sc: "ed.sc"; sd: "ed.sd"; se: "ed.se"; sf: "ed.sf"; sg: "ed.sg"; sh: "ed.sh"; si: "ed.si"; sj: "ed.sj"; sk: "ed.sk"; sl: "ed.sl"; sm: "ed.sm"; sn: "ed.sn"; so: "ed.so"; sp: "ed.sp"; sq: "ed.sq"; sr: "ed.sr"; ss: "ed.ss"; st: "ed.st"; su: "ed.su"; sv: "ed.sv"; sw: "ed.sw"; sx: "ed.sx"; sy: "ed.sy"; sz: "ed.sz"; ta: "ed.ta"; tb: "ed.tb"; tc: "ed.tc"; td: "ed.td"; te: "ed.te"; tf: "ed.tf"; tg: "ed.tg"; th: "ed.th"; ti: "ed.ti"; tj: "ed.tj"; tk: "ed.tk"; tl: "ed.tl"; tm: "ed.tm"; tn: "ed.tn"; to: "ed.to"; tp: "ed.tp"; tq: "ed.tq"; tr: "ed.tr"; ts: "ed.ts"; tt: "ed.tt"; tu: "ed.tu"; tv: "ed.tv"; tw: "ed.tw"; tx: "ed.tx"; ty: "ed.ty"; tz: "ed.tz"; ua: "ed.ua"; ub: "ed.ub"; uc: "ed.uc"; ud: "ed.ud"; ue: "ed.ue"; uf: "ed.uf"; ug: "ed.ug"; uh: "ed.uh"; ui: "ed.ui"; uj: "ed.uj"; uk: "ed.uk"; ul: "ed.ul"; um: "ed.um"; un: "ed.un"; uo: "ed.uo"; up: "ed.up"; uq: "ed.uq"; ur: "ed.ur"; us: "ed.us"; ut: "ed.ut"; uu: "ed.uu"; uv: "ed.uv"; uw: "ed.uw"; ux: "ed.ux"; uy: "ed.uy"; uz: "ed.uz"; va: "ed.va"; vb: "ed.vb"; vc: "ed.vc"; vd: "ed.vd"; ve: "ed.ve"; vf: "ed.vf"; vg: "ed.vg"; vh: "ed.vh"; vi: "ed.vi"; vj: "ed.vj"; vk: "ed.vk"; vl: "ed.vl"; vm: "ed.vm"; vn: "ed.vn"; vo: "ed.vo"; vp: "ed.vp"; vq: "ed.vq"; vr: "ed.vr"; vs: "ed.vs"; vt: "ed.vt"; vu: "ed.vu"; vv: "ed.vv"; vw: "ed.vw"; vx: "ed.vx"; vy: "ed.vy"; vz: "ed.vz"; wa: "ed.wa"; wb: "ed.wb"; wc: "ed.wc"; wd: "ed.wd"; we: "ed.we"; wf: "ed.wf"; wg: "ed.wg"; wh: "ed.wh"; wi: "ed.wi"; wj: "ed.wj"; wk: "ed.wk"; wl: "ed.wl"; wm: "ed.wm"; wn: "ed.wn"; wo: "ed.wo"; wp: "ed.wp"; wq: "ed.wq"; wr: "ed.wr"; ws: "ed.ws"; wt: "ed.wt"; wu: "ed.wu"; wv: "ed.wv"; ww: "ed.ww"; wx: "ed.wx"; wy: "ed.wy"; wz: "ed.wz"; xa: "ed.xa"; xb: "ed.xb"; xc: "ed.xc"; xd: "ed.xd"; xe: "ed.xe"; xf: "ed.xf"; xg: "ed.xg"; xh: "ed.xh"; xi: "ed.xi"; xj: "ed.xj"; xk: "ed.xk"; xl: "ed.xl"; xm: "ed.xm"; xn: "ed.xn"; xo: "ed.xo"; xp: "ed.xp"; xq: "ed.xq"; xr: "ed.xr"; xs: "ed.xs"; xt: "ed.xt"; xu: "ed.xu"; xv: "ed.xv"; xw: "ed.xw"; xx: "ed.xx"; xy: "ed.xy"; xz: "ed.xz"; ya: "ed.ya"; yb: "ed.yb"; yc: "ed.yc"; yd: "ed.yd"; ye: "ed.ye"; yf: "ed.yf"; yg: "ed.yg"; yh: "ed.yh"; yi: "ed.yi"; yj: "ed.yj"; yk: "ed.yk"; yl: "ed.yl"; ym: "ed.ym"; yn: "ed.yn"; yo: "ed.yo"; yp: "ed.yp"; yq: "ed.yq"; yr: "ed.yr"; ys: "ed.ys"; yt: "ed.yt"; yu: "ed.yu"; yv: "ed.yv"; yw: "ed.yw"; yx: "ed.yx"; yy: "ed.yy"; yz: "ed.yz"; za: "ed.za"; zb: "ed.zb"; zc: "ed.zc"; zd: "ed.zd"; ze: "ed.ze"; zf: "ed.zf"; zg: "ed.zg"; zh: "ed.zh"; zi: "ed.zi"; zj: "ed.zj"; zk: "ed.zk"; zl: "ed.zl"; zm: "ed.zm"; zn: "ed.zn"; zo: "ed.zo"; zp: "ed.zp"; zq: "ed.zq"; zr: "ed.zr"; zs: "ed.zs"; zt: "ed.zt"; zu: "ed.zu"; zv: "ed.zv"; zw: "ed.zw"; zx: "ed.zx"; zy: "ed.zy"; zz: "ed.zz"; }; ee: { aa: "ee.aa"; ab: "ee.ab"; ac: "ee.ac"; ad: "ee.ad"; ae: "ee.ae"; af: "ee.af"; ag: "ee.ag"; ah: "ee.ah"; ai: "ee.ai"; aj: "ee.aj"; ak: "ee.ak"; al: "ee.al"; am: "ee.am"; an: "ee.an"; ao: "ee.ao"; ap: "ee.ap"; aq: "ee.aq"; ar: "ee.ar"; as: "ee.as"; at: "ee.at"; au: "ee.au"; av: "ee.av"; aw: "ee.aw"; ax: "ee.ax"; ay: "ee.ay"; az: "ee.az"; ba: "ee.ba"; bb: "ee.bb"; bc: "ee.bc"; bd: "ee.bd"; be: "ee.be"; bf: "ee.bf"; bg: "ee.bg"; bh: "ee.bh"; bi: "ee.bi"; bj: "ee.bj"; bk: "ee.bk"; bl: "ee.bl"; bm: "ee.bm"; bn: "ee.bn"; bo: "ee.bo"; bp: "ee.bp"; bq: "ee.bq"; br: "ee.br"; bs: "ee.bs"; bt: "ee.bt"; bu: "ee.bu"; bv: "ee.bv"; bw: "ee.bw"; bx: "ee.bx"; by: "ee.by"; bz: "ee.bz"; ca: "ee.ca"; cb: "ee.cb"; cc: "ee.cc"; cd: "ee.cd"; ce: "ee.ce"; cf: "ee.cf"; cg: "ee.cg"; ch: "ee.ch"; ci: "ee.ci"; cj: "ee.cj"; ck: "ee.ck"; cl: "ee.cl"; cm: "ee.cm"; cn: "ee.cn"; co: "ee.co"; cp: "ee.cp"; cq: "ee.cq"; cr: "ee.cr"; cs: "ee.cs"; ct: "ee.ct"; cu: "ee.cu"; cv: "ee.cv"; cw: "ee.cw"; cx: "ee.cx"; cy: "ee.cy"; cz: "ee.cz"; da: "ee.da"; db: "ee.db"; dc: "ee.dc"; dd: "ee.dd"; de: "ee.de"; df: "ee.df"; dg: "ee.dg"; dh: "ee.dh"; di: "ee.di"; dj: "ee.dj"; dk: "ee.dk"; dl: "ee.dl"; dm: "ee.dm"; dn: "ee.dn"; do: "ee.do"; dp: "ee.dp"; dq: "ee.dq"; dr: "ee.dr"; ds: "ee.ds"; dt: "ee.dt"; du: "ee.du"; dv: "ee.dv"; dw: "ee.dw"; dx: "ee.dx"; dy: "ee.dy"; dz: "ee.dz"; ea: "ee.ea"; eb: "ee.eb"; ec: "ee.ec"; ed: "ee.ed"; ee: "ee.ee"; ef: "ee.ef"; eg: "ee.eg"; eh: "ee.eh"; ei: "ee.ei"; ej: "ee.ej"; ek: "ee.ek"; el: "ee.el"; em: "ee.em"; en: "ee.en"; eo: "ee.eo"; ep: "ee.ep"; eq: "ee.eq"; er: "ee.er"; es: "ee.es"; et: "ee.et"; eu: "ee.eu"; ev: "ee.ev"; ew: "ee.ew"; ex: "ee.ex"; ey: "ee.ey"; ez: "ee.ez"; fa: "ee.fa"; fb: "ee.fb"; fc: "ee.fc"; fd: "ee.fd"; fe: "ee.fe"; ff: "ee.ff"; fg: "ee.fg"; fh: "ee.fh"; fi: "ee.fi"; fj: "ee.fj"; fk: "ee.fk"; fl: "ee.fl"; fm: "ee.fm"; fn: "ee.fn"; fo: "ee.fo"; fp: "ee.fp"; fq: "ee.fq"; fr: "ee.fr"; fs: "ee.fs"; ft: "ee.ft"; fu: "ee.fu"; fv: "ee.fv"; fw: "ee.fw"; fx: "ee.fx"; fy: "ee.fy"; fz: "ee.fz"; ga: "ee.ga"; gb: "ee.gb"; gc: "ee.gc"; gd: "ee.gd"; ge: "ee.ge"; gf: "ee.gf"; gg: "ee.gg"; gh: "ee.gh"; gi: "ee.gi"; gj: "ee.gj"; gk: "ee.gk"; gl: "ee.gl"; gm: "ee.gm"; gn: "ee.gn"; go: "ee.go"; gp: "ee.gp"; gq: "ee.gq"; gr: "ee.gr"; gs: "ee.gs"; gt: "ee.gt"; gu: "ee.gu"; gv: "ee.gv"; gw: "ee.gw"; gx: "ee.gx"; gy: "ee.gy"; gz: "ee.gz"; ha: "ee.ha"; hb: "ee.hb"; hc: "ee.hc"; hd: "ee.hd"; he: "ee.he"; hf: "ee.hf"; hg: "ee.hg"; hh: "ee.hh"; hi: "ee.hi"; hj: "ee.hj"; hk: "ee.hk"; hl: "ee.hl"; hm: "ee.hm"; hn: "ee.hn"; ho: "ee.ho"; hp: "ee.hp"; hq: "ee.hq"; hr: "ee.hr"; hs: "ee.hs"; ht: "ee.ht"; hu: "ee.hu"; hv: "ee.hv"; hw: "ee.hw"; hx: "ee.hx"; hy: "ee.hy"; hz: "ee.hz"; ia: "ee.ia"; ib: "ee.ib"; ic: "ee.ic"; id: "ee.id"; ie: "ee.ie"; if: "ee.if"; ig: "ee.ig"; ih: "ee.ih"; ii: "ee.ii"; ij: "ee.ij"; ik: "ee.ik"; il: "ee.il"; im: "ee.im"; in: "ee.in"; io: "ee.io"; ip: "ee.ip"; iq: "ee.iq"; ir: "ee.ir"; is: "ee.is"; it: "ee.it"; iu: "ee.iu"; iv: "ee.iv"; iw: "ee.iw"; ix: "ee.ix"; iy: "ee.iy"; iz: "ee.iz"; ja: "ee.ja"; jb: "ee.jb"; jc: "ee.jc"; jd: "ee.jd"; je: "ee.je"; jf: "ee.jf"; jg: "ee.jg"; jh: "ee.jh"; ji: "ee.ji"; jj: "ee.jj"; jk: "ee.jk"; jl: "ee.jl"; jm: "ee.jm"; jn: "ee.jn"; jo: "ee.jo"; jp: "ee.jp"; jq: "ee.jq"; jr: "ee.jr"; js: "ee.js"; jt: "ee.jt"; ju: "ee.ju"; jv: "ee.jv"; jw: "ee.jw"; jx: "ee.jx"; jy: "ee.jy"; jz: "ee.jz"; ka: "ee.ka"; kb: "ee.kb"; kc: "ee.kc"; kd: "ee.kd"; ke: "ee.ke"; kf: "ee.kf"; kg: "ee.kg"; kh: "ee.kh"; ki: "ee.ki"; kj: "ee.kj"; kk: "ee.kk"; kl: "ee.kl"; km: "ee.km"; kn: "ee.kn"; ko: "ee.ko"; kp: "ee.kp"; kq: "ee.kq"; kr: "ee.kr"; ks: "ee.ks"; kt: "ee.kt"; ku: "ee.ku"; kv: "ee.kv"; kw: "ee.kw"; kx: "ee.kx"; ky: "ee.ky"; kz: "ee.kz"; la: "ee.la"; lb: "ee.lb"; lc: "ee.lc"; ld: "ee.ld"; le: "ee.le"; lf: "ee.lf"; lg: "ee.lg"; lh: "ee.lh"; li: "ee.li"; lj: "ee.lj"; lk: "ee.lk"; ll: "ee.ll"; lm: "ee.lm"; ln: "ee.ln"; lo: "ee.lo"; lp: "ee.lp"; lq: "ee.lq"; lr: "ee.lr"; ls: "ee.ls"; lt: "ee.lt"; lu: "ee.lu"; lv: "ee.lv"; lw: "ee.lw"; lx: "ee.lx"; ly: "ee.ly"; lz: "ee.lz"; ma: "ee.ma"; mb: "ee.mb"; mc: "ee.mc"; md: "ee.md"; me: "ee.me"; mf: "ee.mf"; mg: "ee.mg"; mh: "ee.mh"; mi: "ee.mi"; mj: "ee.mj"; mk: "ee.mk"; ml: "ee.ml"; mm: "ee.mm"; mn: "ee.mn"; mo: "ee.mo"; mp: "ee.mp"; mq: "ee.mq"; mr: "ee.mr"; ms: "ee.ms"; mt: "ee.mt"; mu: "ee.mu"; mv: "ee.mv"; mw: "ee.mw"; mx: "ee.mx"; my: "ee.my"; mz: "ee.mz"; na: "ee.na"; nb: "ee.nb"; nc: "ee.nc"; nd: "ee.nd"; ne: "ee.ne"; nf: "ee.nf"; ng: "ee.ng"; nh: "ee.nh"; ni: "ee.ni"; nj: "ee.nj"; nk: "ee.nk"; nl: "ee.nl"; nm: "ee.nm"; nn: "ee.nn"; no: "ee.no"; np: "ee.np"; nq: "ee.nq"; nr: "ee.nr"; ns: "ee.ns"; nt: "ee.nt"; nu: "ee.nu"; nv: "ee.nv"; nw: "ee.nw"; nx: "ee.nx"; ny: "ee.ny"; nz: "ee.nz"; oa: "ee.oa"; ob: "ee.ob"; oc: "ee.oc"; od: "ee.od"; oe: "ee.oe"; of: "ee.of"; og: "ee.og"; oh: "ee.oh"; oi: "ee.oi"; oj: "ee.oj"; ok: "ee.ok"; ol: "ee.ol"; om: "ee.om"; on: "ee.on"; oo: "ee.oo"; op: "ee.op"; oq: "ee.oq"; or: "ee.or"; os: "ee.os"; ot: "ee.ot"; ou: "ee.ou"; ov: "ee.ov"; ow: "ee.ow"; ox: "ee.ox"; oy: "ee.oy"; oz: "ee.oz"; pa: "ee.pa"; pb: "ee.pb"; pc: "ee.pc"; pd: "ee.pd"; pe: "ee.pe"; pf: "ee.pf"; pg: "ee.pg"; ph: "ee.ph"; pi: "ee.pi"; pj: "ee.pj"; pk: "ee.pk"; pl: "ee.pl"; pm: "ee.pm"; pn: "ee.pn"; po: "ee.po"; pp: "ee.pp"; pq: "ee.pq"; pr: "ee.pr"; ps: "ee.ps"; pt: "ee.pt"; pu: "ee.pu"; pv: "ee.pv"; pw: "ee.pw"; px: "ee.px"; py: "ee.py"; pz: "ee.pz"; qa: "ee.qa"; qb: "ee.qb"; qc: "ee.qc"; qd: "ee.qd"; qe: "ee.qe"; qf: "ee.qf"; qg: "ee.qg"; qh: "ee.qh"; qi: "ee.qi"; qj: "ee.qj"; qk: "ee.qk"; ql: "ee.ql"; qm: "ee.qm"; qn: "ee.qn"; qo: "ee.qo"; qp: "ee.qp"; qq: "ee.qq"; qr: "ee.qr"; qs: "ee.qs"; qt: "ee.qt"; qu: "ee.qu"; qv: "ee.qv"; qw: "ee.qw"; qx: "ee.qx"; qy: "ee.qy"; qz: "ee.qz"; ra: "ee.ra"; rb: "ee.rb"; rc: "ee.rc"; rd: "ee.rd"; re: "ee.re"; rf: "ee.rf"; rg: "ee.rg"; rh: "ee.rh"; ri: "ee.ri"; rj: "ee.rj"; rk: "ee.rk"; rl: "ee.rl"; rm: "ee.rm"; rn: "ee.rn"; ro: "ee.ro"; rp: "ee.rp"; rq: "ee.rq"; rr: "ee.rr"; rs: "ee.rs"; rt: "ee.rt"; ru: "ee.ru"; rv: "ee.rv"; rw: "ee.rw"; rx: "ee.rx"; ry: "ee.ry"; rz: "ee.rz"; sa: "ee.sa"; sb: "ee.sb"; sc: "ee.sc"; sd: "ee.sd"; se: "ee.se"; sf: "ee.sf"; sg: "ee.sg"; sh: "ee.sh"; si: "ee.si"; sj: "ee.sj"; sk: "ee.sk"; sl: "ee.sl"; sm: "ee.sm"; sn: "ee.sn"; so: "ee.so"; sp: "ee.sp"; sq: "ee.sq"; sr: "ee.sr"; ss: "ee.ss"; st: "ee.st"; su: "ee.su"; sv: "ee.sv"; sw: "ee.sw"; sx: "ee.sx"; sy: "ee.sy"; sz: "ee.sz"; ta: "ee.ta"; tb: "ee.tb"; tc: "ee.tc"; td: "ee.td"; te: "ee.te"; tf: "ee.tf"; tg: "ee.tg"; th: "ee.th"; ti: "ee.ti"; tj: "ee.tj"; tk: "ee.tk"; tl: "ee.tl"; tm: "ee.tm"; tn: "ee.tn"; to: "ee.to"; tp: "ee.tp"; tq: "ee.tq"; tr: "ee.tr"; ts: "ee.ts"; tt: "ee.tt"; tu: "ee.tu"; tv: "ee.tv"; tw: "ee.tw"; tx: "ee.tx"; ty: "ee.ty"; tz: "ee.tz"; ua: "ee.ua"; ub: "ee.ub"; uc: "ee.uc"; ud: "ee.ud"; ue: "ee.ue"; uf: "ee.uf"; ug: "ee.ug"; uh: "ee.uh"; ui: "ee.ui"; uj: "ee.uj"; uk: "ee.uk"; ul: "ee.ul"; um: "ee.um"; un: "ee.un"; uo: "ee.uo"; up: "ee.up"; uq: "ee.uq"; ur: "ee.ur"; us: "ee.us"; ut: "ee.ut"; uu: "ee.uu"; uv: "ee.uv"; uw: "ee.uw"; ux: "ee.ux"; uy: "ee.uy"; uz: "ee.uz"; va: "ee.va"; vb: "ee.vb"; vc: "ee.vc"; vd: "ee.vd"; ve: "ee.ve"; vf: "ee.vf"; vg: "ee.vg"; vh: "ee.vh"; vi: "ee.vi"; vj: "ee.vj"; vk: "ee.vk"; vl: "ee.vl"; vm: "ee.vm"; vn: "ee.vn"; vo: "ee.vo"; vp: "ee.vp"; vq: "ee.vq"; vr: "ee.vr"; vs: "ee.vs"; vt: "ee.vt"; vu: "ee.vu"; vv: "ee.vv"; vw: "ee.vw"; vx: "ee.vx"; vy: "ee.vy"; vz: "ee.vz"; wa: "ee.wa"; wb: "ee.wb"; wc: "ee.wc"; wd: "ee.wd"; we: "ee.we"; wf: "ee.wf"; wg: "ee.wg"; wh: "ee.wh"; wi: "ee.wi"; wj: "ee.wj"; wk: "ee.wk"; wl: "ee.wl"; wm: "ee.wm"; wn: "ee.wn"; wo: "ee.wo"; wp: "ee.wp"; wq: "ee.wq"; wr: "ee.wr"; ws: "ee.ws"; wt: "ee.wt"; wu: "ee.wu"; wv: "ee.wv"; ww: "ee.ww"; wx: "ee.wx"; wy: "ee.wy"; wz: "ee.wz"; xa: "ee.xa"; xb: "ee.xb"; xc: "ee.xc"; xd: "ee.xd"; xe: "ee.xe"; xf: "ee.xf"; xg: "ee.xg"; xh: "ee.xh"; xi: "ee.xi"; xj: "ee.xj"; xk: "ee.xk"; xl: "ee.xl"; xm: "ee.xm"; xn: "ee.xn"; xo: "ee.xo"; xp: "ee.xp"; xq: "ee.xq"; xr: "ee.xr"; xs: "ee.xs"; xt: "ee.xt"; xu: "ee.xu"; xv: "ee.xv"; xw: "ee.xw"; xx: "ee.xx"; xy: "ee.xy"; xz: "ee.xz"; ya: "ee.ya"; yb: "ee.yb"; yc: "ee.yc"; yd: "ee.yd"; ye: "ee.ye"; yf: "ee.yf"; yg: "ee.yg"; yh: "ee.yh"; yi: "ee.yi"; yj: "ee.yj"; yk: "ee.yk"; yl: "ee.yl"; ym: "ee.ym"; yn: "ee.yn"; yo: "ee.yo"; yp: "ee.yp"; yq: "ee.yq"; yr: "ee.yr"; ys: "ee.ys"; yt: "ee.yt"; yu: "ee.yu"; yv: "ee.yv"; yw: "ee.yw"; yx: "ee.yx"; yy: "ee.yy"; yz: "ee.yz"; za: "ee.za"; zb: "ee.zb"; zc: "ee.zc"; zd: "ee.zd"; ze: "ee.ze"; zf: "ee.zf"; zg: "ee.zg"; zh: "ee.zh"; zi: "ee.zi"; zj: "ee.zj"; zk: "ee.zk"; zl: "ee.zl"; zm: "ee.zm"; zn: "ee.zn"; zo: "ee.zo"; zp: "ee.zp"; zq: "ee.zq"; zr: "ee.zr"; zs: "ee.zs"; zt: "ee.zt"; zu: "ee.zu"; zv: "ee.zv"; zw: "ee.zw"; zx: "ee.zx"; zy: "ee.zy"; zz: "ee.zz"; }; ef: { aa: "ef.aa"; ab: "ef.ab"; ac: "ef.ac"; ad: "ef.ad"; ae: "ef.ae"; af: "ef.af"; ag: "ef.ag"; ah: "ef.ah"; ai: "ef.ai"; aj: "ef.aj"; ak: "ef.ak"; al: "ef.al"; am: "ef.am"; an: "ef.an"; ao: "ef.ao"; ap: "ef.ap"; aq: "ef.aq"; ar: "ef.ar"; as: "ef.as"; at: "ef.at"; au: "ef.au"; av: "ef.av"; aw: "ef.aw"; ax: "ef.ax"; ay: "ef.ay"; az: "ef.az"; ba: "ef.ba"; bb: "ef.bb"; bc: "ef.bc"; bd: "ef.bd"; be: "ef.be"; bf: "ef.bf"; bg: "ef.bg"; bh: "ef.bh"; bi: "ef.bi"; bj: "ef.bj"; bk: "ef.bk"; bl: "ef.bl"; bm: "ef.bm"; bn: "ef.bn"; bo: "ef.bo"; bp: "ef.bp"; bq: "ef.bq"; br: "ef.br"; bs: "ef.bs"; bt: "ef.bt"; bu: "ef.bu"; bv: "ef.bv"; bw: "ef.bw"; bx: "ef.bx"; by: "ef.by"; bz: "ef.bz"; ca: "ef.ca"; cb: "ef.cb"; cc: "ef.cc"; cd: "ef.cd"; ce: "ef.ce"; cf: "ef.cf"; cg: "ef.cg"; ch: "ef.ch"; ci: "ef.ci"; cj: "ef.cj"; ck: "ef.ck"; cl: "ef.cl"; cm: "ef.cm"; cn: "ef.cn"; co: "ef.co"; cp: "ef.cp"; cq: "ef.cq"; cr: "ef.cr"; cs: "ef.cs"; ct: "ef.ct"; cu: "ef.cu"; cv: "ef.cv"; cw: "ef.cw"; cx: "ef.cx"; cy: "ef.cy"; cz: "ef.cz"; da: "ef.da"; db: "ef.db"; dc: "ef.dc"; dd: "ef.dd"; de: "ef.de"; df: "ef.df"; dg: "ef.dg"; dh: "ef.dh"; di: "ef.di"; dj: "ef.dj"; dk: "ef.dk"; dl: "ef.dl"; dm: "ef.dm"; dn: "ef.dn"; do: "ef.do"; dp: "ef.dp"; dq: "ef.dq"; dr: "ef.dr"; ds: "ef.ds"; dt: "ef.dt"; du: "ef.du"; dv: "ef.dv"; dw: "ef.dw"; dx: "ef.dx"; dy: "ef.dy"; dz: "ef.dz"; ea: "ef.ea"; eb: "ef.eb"; ec: "ef.ec"; ed: "ef.ed"; ee: "ef.ee"; ef: "ef.ef"; eg: "ef.eg"; eh: "ef.eh"; ei: "ef.ei"; ej: "ef.ej"; ek: "ef.ek"; el: "ef.el"; em: "ef.em"; en: "ef.en"; eo: "ef.eo"; ep: "ef.ep"; eq: "ef.eq"; er: "ef.er"; es: "ef.es"; et: "ef.et"; eu: "ef.eu"; ev: "ef.ev"; ew: "ef.ew"; ex: "ef.ex"; ey: "ef.ey"; ez: "ef.ez"; fa: "ef.fa"; fb: "ef.fb"; fc: "ef.fc"; fd: "ef.fd"; fe: "ef.fe"; ff: "ef.ff"; fg: "ef.fg"; fh: "ef.fh"; fi: "ef.fi"; fj: "ef.fj"; fk: "ef.fk"; fl: "ef.fl"; fm: "ef.fm"; fn: "ef.fn"; fo: "ef.fo"; fp: "ef.fp"; fq: "ef.fq"; fr: "ef.fr"; fs: "ef.fs"; ft: "ef.ft"; fu: "ef.fu"; fv: "ef.fv"; fw: "ef.fw"; fx: "ef.fx"; fy: "ef.fy"; fz: "ef.fz"; ga: "ef.ga"; gb: "ef.gb"; gc: "ef.gc"; gd: "ef.gd"; ge: "ef.ge"; gf: "ef.gf"; gg: "ef.gg"; gh: "ef.gh"; gi: "ef.gi"; gj: "ef.gj"; gk: "ef.gk"; gl: "ef.gl"; gm: "ef.gm"; gn: "ef.gn"; go: "ef.go"; gp: "ef.gp"; gq: "ef.gq"; gr: "ef.gr"; gs: "ef.gs"; gt: "ef.gt"; gu: "ef.gu"; gv: "ef.gv"; gw: "ef.gw"; gx: "ef.gx"; gy: "ef.gy"; gz: "ef.gz"; ha: "ef.ha"; hb: "ef.hb"; hc: "ef.hc"; hd: "ef.hd"; he: "ef.he"; hf: "ef.hf"; hg: "ef.hg"; hh: "ef.hh"; hi: "ef.hi"; hj: "ef.hj"; hk: "ef.hk"; hl: "ef.hl"; hm: "ef.hm"; hn: "ef.hn"; ho: "ef.ho"; hp: "ef.hp"; hq: "ef.hq"; hr: "ef.hr"; hs: "ef.hs"; ht: "ef.ht"; hu: "ef.hu"; hv: "ef.hv"; hw: "ef.hw"; hx: "ef.hx"; hy: "ef.hy"; hz: "ef.hz"; ia: "ef.ia"; ib: "ef.ib"; ic: "ef.ic"; id: "ef.id"; ie: "ef.ie"; if: "ef.if"; ig: "ef.ig"; ih: "ef.ih"; ii: "ef.ii"; ij: "ef.ij"; ik: "ef.ik"; il: "ef.il"; im: "ef.im"; in: "ef.in"; io: "ef.io"; ip: "ef.ip"; iq: "ef.iq"; ir: "ef.ir"; is: "ef.is"; it: "ef.it"; iu: "ef.iu"; iv: "ef.iv"; iw: "ef.iw"; ix: "ef.ix"; iy: "ef.iy"; iz: "ef.iz"; ja: "ef.ja"; jb: "ef.jb"; jc: "ef.jc"; jd: "ef.jd"; je: "ef.je"; jf: "ef.jf"; jg: "ef.jg"; jh: "ef.jh"; ji: "ef.ji"; jj: "ef.jj"; jk: "ef.jk"; jl: "ef.jl"; jm: "ef.jm"; jn: "ef.jn"; jo: "ef.jo"; jp: "ef.jp"; jq: "ef.jq"; jr: "ef.jr"; js: "ef.js"; jt: "ef.jt"; ju: "ef.ju"; jv: "ef.jv"; jw: "ef.jw"; jx: "ef.jx"; jy: "ef.jy"; jz: "ef.jz"; ka: "ef.ka"; kb: "ef.kb"; kc: "ef.kc"; kd: "ef.kd"; ke: "ef.ke"; kf: "ef.kf"; kg: "ef.kg"; kh: "ef.kh"; ki: "ef.ki"; kj: "ef.kj"; kk: "ef.kk"; kl: "ef.kl"; km: "ef.km"; kn: "ef.kn"; ko: "ef.ko"; kp: "ef.kp"; kq: "ef.kq"; kr: "ef.kr"; ks: "ef.ks"; kt: "ef.kt"; ku: "ef.ku"; kv: "ef.kv"; kw: "ef.kw"; kx: "ef.kx"; ky: "ef.ky"; kz: "ef.kz"; la: "ef.la"; lb: "ef.lb"; lc: "ef.lc"; ld: "ef.ld"; le: "ef.le"; lf: "ef.lf"; lg: "ef.lg"; lh: "ef.lh"; li: "ef.li"; lj: "ef.lj"; lk: "ef.lk"; ll: "ef.ll"; lm: "ef.lm"; ln: "ef.ln"; lo: "ef.lo"; lp: "ef.lp"; lq: "ef.lq"; lr: "ef.lr"; ls: "ef.ls"; lt: "ef.lt"; lu: "ef.lu"; lv: "ef.lv"; lw: "ef.lw"; lx: "ef.lx"; ly: "ef.ly"; lz: "ef.lz"; ma: "ef.ma"; mb: "ef.mb"; mc: "ef.mc"; md: "ef.md"; me: "ef.me"; mf: "ef.mf"; mg: "ef.mg"; mh: "ef.mh"; mi: "ef.mi"; mj: "ef.mj"; mk: "ef.mk"; ml: "ef.ml"; mm: "ef.mm"; mn: "ef.mn"; mo: "ef.mo"; mp: "ef.mp"; mq: "ef.mq"; mr: "ef.mr"; ms: "ef.ms"; mt: "ef.mt"; mu: "ef.mu"; mv: "ef.mv"; mw: "ef.mw"; mx: "ef.mx"; my: "ef.my"; mz: "ef.mz"; na: "ef.na"; nb: "ef.nb"; nc: "ef.nc"; nd: "ef.nd"; ne: "ef.ne"; nf: "ef.nf"; ng: "ef.ng"; nh: "ef.nh"; ni: "ef.ni"; nj: "ef.nj"; nk: "ef.nk"; nl: "ef.nl"; nm: "ef.nm"; nn: "ef.nn"; no: "ef.no"; np: "ef.np"; nq: "ef.nq"; nr: "ef.nr"; ns: "ef.ns"; nt: "ef.nt"; nu: "ef.nu"; nv: "ef.nv"; nw: "ef.nw"; nx: "ef.nx"; ny: "ef.ny"; nz: "ef.nz"; oa: "ef.oa"; ob: "ef.ob"; oc: "ef.oc"; od: "ef.od"; oe: "ef.oe"; of: "ef.of"; og: "ef.og"; oh: "ef.oh"; oi: "ef.oi"; oj: "ef.oj"; ok: "ef.ok"; ol: "ef.ol"; om: "ef.om"; on: "ef.on"; oo: "ef.oo"; op: "ef.op"; oq: "ef.oq"; or: "ef.or"; os: "ef.os"; ot: "ef.ot"; ou: "ef.ou"; ov: "ef.ov"; ow: "ef.ow"; ox: "ef.ox"; oy: "ef.oy"; oz: "ef.oz"; pa: "ef.pa"; pb: "ef.pb"; pc: "ef.pc"; pd: "ef.pd"; pe: "ef.pe"; pf: "ef.pf"; pg: "ef.pg"; ph: "ef.ph"; pi: "ef.pi"; pj: "ef.pj"; pk: "ef.pk"; pl: "ef.pl"; pm: "ef.pm"; pn: "ef.pn"; po: "ef.po"; pp: "ef.pp"; pq: "ef.pq"; pr: "ef.pr"; ps: "ef.ps"; pt: "ef.pt"; pu: "ef.pu"; pv: "ef.pv"; pw: "ef.pw"; px: "ef.px"; py: "ef.py"; pz: "ef.pz"; qa: "ef.qa"; qb: "ef.qb"; qc: "ef.qc"; qd: "ef.qd"; qe: "ef.qe"; qf: "ef.qf"; qg: "ef.qg"; qh: "ef.qh"; qi: "ef.qi"; qj: "ef.qj"; qk: "ef.qk"; ql: "ef.ql"; qm: "ef.qm"; qn: "ef.qn"; qo: "ef.qo"; qp: "ef.qp"; qq: "ef.qq"; qr: "ef.qr"; qs: "ef.qs"; qt: "ef.qt"; qu: "ef.qu"; qv: "ef.qv"; qw: "ef.qw"; qx: "ef.qx"; qy: "ef.qy"; qz: "ef.qz"; ra: "ef.ra"; rb: "ef.rb"; rc: "ef.rc"; rd: "ef.rd"; re: "ef.re"; rf: "ef.rf"; rg: "ef.rg"; rh: "ef.rh"; ri: "ef.ri"; rj: "ef.rj"; rk: "ef.rk"; rl: "ef.rl"; rm: "ef.rm"; rn: "ef.rn"; ro: "ef.ro"; rp: "ef.rp"; rq: "ef.rq"; rr: "ef.rr"; rs: "ef.rs"; rt: "ef.rt"; ru: "ef.ru"; rv: "ef.rv"; rw: "ef.rw"; rx: "ef.rx"; ry: "ef.ry"; rz: "ef.rz"; sa: "ef.sa"; sb: "ef.sb"; sc: "ef.sc"; sd: "ef.sd"; se: "ef.se"; sf: "ef.sf"; sg: "ef.sg"; sh: "ef.sh"; si: "ef.si"; sj: "ef.sj"; sk: "ef.sk"; sl: "ef.sl"; sm: "ef.sm"; sn: "ef.sn"; so: "ef.so"; sp: "ef.sp"; sq: "ef.sq"; sr: "ef.sr"; ss: "ef.ss"; st: "ef.st"; su: "ef.su"; sv: "ef.sv"; sw: "ef.sw"; sx: "ef.sx"; sy: "ef.sy"; sz: "ef.sz"; ta: "ef.ta"; tb: "ef.tb"; tc: "ef.tc"; td: "ef.td"; te: "ef.te"; tf: "ef.tf"; tg: "ef.tg"; th: "ef.th"; ti: "ef.ti"; tj: "ef.tj"; tk: "ef.tk"; tl: "ef.tl"; tm: "ef.tm"; tn: "ef.tn"; to: "ef.to"; tp: "ef.tp"; tq: "ef.tq"; tr: "ef.tr"; ts: "ef.ts"; tt: "ef.tt"; tu: "ef.tu"; tv: "ef.tv"; tw: "ef.tw"; tx: "ef.tx"; ty: "ef.ty"; tz: "ef.tz"; ua: "ef.ua"; ub: "ef.ub"; uc: "ef.uc"; ud: "ef.ud"; ue: "ef.ue"; uf: "ef.uf"; ug: "ef.ug"; uh: "ef.uh"; ui: "ef.ui"; uj: "ef.uj"; uk: "ef.uk"; ul: "ef.ul"; um: "ef.um"; un: "ef.un"; uo: "ef.uo"; up: "ef.up"; uq: "ef.uq"; ur: "ef.ur"; us: "ef.us"; ut: "ef.ut"; uu: "ef.uu"; uv: "ef.uv"; uw: "ef.uw"; ux: "ef.ux"; uy: "ef.uy"; uz: "ef.uz"; va: "ef.va"; vb: "ef.vb"; vc: "ef.vc"; vd: "ef.vd"; ve: "ef.ve"; vf: "ef.vf"; vg: "ef.vg"; vh: "ef.vh"; vi: "ef.vi"; vj: "ef.vj"; vk: "ef.vk"; vl: "ef.vl"; vm: "ef.vm"; vn: "ef.vn"; vo: "ef.vo"; vp: "ef.vp"; vq: "ef.vq"; vr: "ef.vr"; vs: "ef.vs"; vt: "ef.vt"; vu: "ef.vu"; vv: "ef.vv"; vw: "ef.vw"; vx: "ef.vx"; vy: "ef.vy"; vz: "ef.vz"; wa: "ef.wa"; wb: "ef.wb"; wc: "ef.wc"; wd: "ef.wd"; we: "ef.we"; wf: "ef.wf"; wg: "ef.wg"; wh: "ef.wh"; wi: "ef.wi"; wj: "ef.wj"; wk: "ef.wk"; wl: "ef.wl"; wm: "ef.wm"; wn: "ef.wn"; wo: "ef.wo"; wp: "ef.wp"; wq: "ef.wq"; wr: "ef.wr"; ws: "ef.ws"; wt: "ef.wt"; wu: "ef.wu"; wv: "ef.wv"; ww: "ef.ww"; wx: "ef.wx"; wy: "ef.wy"; wz: "ef.wz"; xa: "ef.xa"; xb: "ef.xb"; xc: "ef.xc"; xd: "ef.xd"; xe: "ef.xe"; xf: "ef.xf"; xg: "ef.xg"; xh: "ef.xh"; xi: "ef.xi"; xj: "ef.xj"; xk: "ef.xk"; xl: "ef.xl"; xm: "ef.xm"; xn: "ef.xn"; xo: "ef.xo"; xp: "ef.xp"; xq: "ef.xq"; xr: "ef.xr"; xs: "ef.xs"; xt: "ef.xt"; xu: "ef.xu"; xv: "ef.xv"; xw: "ef.xw"; xx: "ef.xx"; xy: "ef.xy"; xz: "ef.xz"; ya: "ef.ya"; yb: "ef.yb"; yc: "ef.yc"; yd: "ef.yd"; ye: "ef.ye"; yf: "ef.yf"; yg: "ef.yg"; yh: "ef.yh"; yi: "ef.yi"; yj: "ef.yj"; yk: "ef.yk"; yl: "ef.yl"; ym: "ef.ym"; yn: "ef.yn"; yo: "ef.yo"; yp: "ef.yp"; yq: "ef.yq"; yr: "ef.yr"; ys: "ef.ys"; yt: "ef.yt"; yu: "ef.yu"; yv: "ef.yv"; yw: "ef.yw"; yx: "ef.yx"; yy: "ef.yy"; yz: "ef.yz"; za: "ef.za"; zb: "ef.zb"; zc: "ef.zc"; zd: "ef.zd"; ze: "ef.ze"; zf: "ef.zf"; zg: "ef.zg"; zh: "ef.zh"; zi: "ef.zi"; zj: "ef.zj"; zk: "ef.zk"; zl: "ef.zl"; zm: "ef.zm"; zn: "ef.zn"; zo: "ef.zo"; zp: "ef.zp"; zq: "ef.zq"; zr: "ef.zr"; zs: "ef.zs"; zt: "ef.zt"; zu: "ef.zu"; zv: "ef.zv"; zw: "ef.zw"; zx: "ef.zx"; zy: "ef.zy"; zz: "ef.zz"; }; eg: { aa: "eg.aa"; ab: "eg.ab"; ac: "eg.ac"; ad: "eg.ad"; ae: "eg.ae"; af: "eg.af"; ag: "eg.ag"; ah: "eg.ah"; ai: "eg.ai"; aj: "eg.aj"; ak: "eg.ak"; al: "eg.al"; am: "eg.am"; an: "eg.an"; ao: "eg.ao"; ap: "eg.ap"; aq: "eg.aq"; ar: "eg.ar"; as: "eg.as"; at: "eg.at"; au: "eg.au"; av: "eg.av"; aw: "eg.aw"; ax: "eg.ax"; ay: "eg.ay"; az: "eg.az"; ba: "eg.ba"; bb: "eg.bb"; bc: "eg.bc"; bd: "eg.bd"; be: "eg.be"; bf: "eg.bf"; bg: "eg.bg"; bh: "eg.bh"; bi: "eg.bi"; bj: "eg.bj"; bk: "eg.bk"; bl: "eg.bl"; bm: "eg.bm"; bn: "eg.bn"; bo: "eg.bo"; bp: "eg.bp"; bq: "eg.bq"; br: "eg.br"; bs: "eg.bs"; bt: "eg.bt"; bu: "eg.bu"; bv: "eg.bv"; bw: "eg.bw"; bx: "eg.bx"; by: "eg.by"; bz: "eg.bz"; ca: "eg.ca"; cb: "eg.cb"; cc: "eg.cc"; cd: "eg.cd"; ce: "eg.ce"; cf: "eg.cf"; cg: "eg.cg"; ch: "eg.ch"; ci: "eg.ci"; cj: "eg.cj"; ck: "eg.ck"; cl: "eg.cl"; cm: "eg.cm"; cn: "eg.cn"; co: "eg.co"; cp: "eg.cp"; cq: "eg.cq"; cr: "eg.cr"; cs: "eg.cs"; ct: "eg.ct"; cu: "eg.cu"; cv: "eg.cv"; cw: "eg.cw"; cx: "eg.cx"; cy: "eg.cy"; cz: "eg.cz"; da: "eg.da"; db: "eg.db"; dc: "eg.dc"; dd: "eg.dd"; de: "eg.de"; df: "eg.df"; dg: "eg.dg"; dh: "eg.dh"; di: "eg.di"; dj: "eg.dj"; dk: "eg.dk"; dl: "eg.dl"; dm: "eg.dm"; dn: "eg.dn"; do: "eg.do"; dp: "eg.dp"; dq: "eg.dq"; dr: "eg.dr"; ds: "eg.ds"; dt: "eg.dt"; du: "eg.du"; dv: "eg.dv"; dw: "eg.dw"; dx: "eg.dx"; dy: "eg.dy"; dz: "eg.dz"; ea: "eg.ea"; eb: "eg.eb"; ec: "eg.ec"; ed: "eg.ed"; ee: "eg.ee"; ef: "eg.ef"; eg: "eg.eg"; eh: "eg.eh"; ei: "eg.ei"; ej: "eg.ej"; ek: "eg.ek"; el: "eg.el"; em: "eg.em"; en: "eg.en"; eo: "eg.eo"; ep: "eg.ep"; eq: "eg.eq"; er: "eg.er"; es: "eg.es"; et: "eg.et"; eu: "eg.eu"; ev: "eg.ev"; ew: "eg.ew"; ex: "eg.ex"; ey: "eg.ey"; ez: "eg.ez"; fa: "eg.fa"; fb: "eg.fb"; fc: "eg.fc"; fd: "eg.fd"; fe: "eg.fe"; ff: "eg.ff"; fg: "eg.fg"; fh: "eg.fh"; fi: "eg.fi"; fj: "eg.fj"; fk: "eg.fk"; fl: "eg.fl"; fm: "eg.fm"; fn: "eg.fn"; fo: "eg.fo"; fp: "eg.fp"; fq: "eg.fq"; fr: "eg.fr"; fs: "eg.fs"; ft: "eg.ft"; fu: "eg.fu"; fv: "eg.fv"; fw: "eg.fw"; fx: "eg.fx"; fy: "eg.fy"; fz: "eg.fz"; ga: "eg.ga"; gb: "eg.gb"; gc: "eg.gc"; gd: "eg.gd"; ge: "eg.ge"; gf: "eg.gf"; gg: "eg.gg"; gh: "eg.gh"; gi: "eg.gi"; gj: "eg.gj"; gk: "eg.gk"; gl: "eg.gl"; gm: "eg.gm"; gn: "eg.gn"; go: "eg.go"; gp: "eg.gp"; gq: "eg.gq"; gr: "eg.gr"; gs: "eg.gs"; gt: "eg.gt"; gu: "eg.gu"; gv: "eg.gv"; gw: "eg.gw"; gx: "eg.gx"; gy: "eg.gy"; gz: "eg.gz"; ha: "eg.ha"; hb: "eg.hb"; hc: "eg.hc"; hd: "eg.hd"; he: "eg.he"; hf: "eg.hf"; hg: "eg.hg"; hh: "eg.hh"; hi: "eg.hi"; hj: "eg.hj"; hk: "eg.hk"; hl: "eg.hl"; hm: "eg.hm"; hn: "eg.hn"; ho: "eg.ho"; hp: "eg.hp"; hq: "eg.hq"; hr: "eg.hr"; hs: "eg.hs"; ht: "eg.ht"; hu: "eg.hu"; hv: "eg.hv"; hw: "eg.hw"; hx: "eg.hx"; hy: "eg.hy"; hz: "eg.hz"; ia: "eg.ia"; ib: "eg.ib"; ic: "eg.ic"; id: "eg.id"; ie: "eg.ie"; if: "eg.if"; ig: "eg.ig"; ih: "eg.ih"; ii: "eg.ii"; ij: "eg.ij"; ik: "eg.ik"; il: "eg.il"; im: "eg.im"; in: "eg.in"; io: "eg.io"; ip: "eg.ip"; iq: "eg.iq"; ir: "eg.ir"; is: "eg.is"; it: "eg.it"; iu: "eg.iu"; iv: "eg.iv"; iw: "eg.iw"; ix: "eg.ix"; iy: "eg.iy"; iz: "eg.iz"; ja: "eg.ja"; jb: "eg.jb"; jc: "eg.jc"; jd: "eg.jd"; je: "eg.je"; jf: "eg.jf"; jg: "eg.jg"; jh: "eg.jh"; ji: "eg.ji"; jj: "eg.jj"; jk: "eg.jk"; jl: "eg.jl"; jm: "eg.jm"; jn: "eg.jn"; jo: "eg.jo"; jp: "eg.jp"; jq: "eg.jq"; jr: "eg.jr"; js: "eg.js"; jt: "eg.jt"; ju: "eg.ju"; jv: "eg.jv"; jw: "eg.jw"; jx: "eg.jx"; jy: "eg.jy"; jz: "eg.jz"; ka: "eg.ka"; kb: "eg.kb"; kc: "eg.kc"; kd: "eg.kd"; ke: "eg.ke"; kf: "eg.kf"; kg: "eg.kg"; kh: "eg.kh"; ki: "eg.ki"; kj: "eg.kj"; kk: "eg.kk"; kl: "eg.kl"; km: "eg.km"; kn: "eg.kn"; ko: "eg.ko"; kp: "eg.kp"; kq: "eg.kq"; kr: "eg.kr"; ks: "eg.ks"; kt: "eg.kt"; ku: "eg.ku"; kv: "eg.kv"; kw: "eg.kw"; kx: "eg.kx"; ky: "eg.ky"; kz: "eg.kz"; la: "eg.la"; lb: "eg.lb"; lc: "eg.lc"; ld: "eg.ld"; le: "eg.le"; lf: "eg.lf"; lg: "eg.lg"; lh: "eg.lh"; li: "eg.li"; lj: "eg.lj"; lk: "eg.lk"; ll: "eg.ll"; lm: "eg.lm"; ln: "eg.ln"; lo: "eg.lo"; lp: "eg.lp"; lq: "eg.lq"; lr: "eg.lr"; ls: "eg.ls"; lt: "eg.lt"; lu: "eg.lu"; lv: "eg.lv"; lw: "eg.lw"; lx: "eg.lx"; ly: "eg.ly"; lz: "eg.lz"; ma: "eg.ma"; mb: "eg.mb"; mc: "eg.mc"; md: "eg.md"; me: "eg.me"; mf: "eg.mf"; mg: "eg.mg"; mh: "eg.mh"; mi: "eg.mi"; mj: "eg.mj"; mk: "eg.mk"; ml: "eg.ml"; mm: "eg.mm"; mn: "eg.mn"; mo: "eg.mo"; mp: "eg.mp"; mq: "eg.mq"; mr: "eg.mr"; ms: "eg.ms"; mt: "eg.mt"; mu: "eg.mu"; mv: "eg.mv"; mw: "eg.mw"; mx: "eg.mx"; my: "eg.my"; mz: "eg.mz"; na: "eg.na"; nb: "eg.nb"; nc: "eg.nc"; nd: "eg.nd"; ne: "eg.ne"; nf: "eg.nf"; ng: "eg.ng"; nh: "eg.nh"; ni: "eg.ni"; nj: "eg.nj"; nk: "eg.nk"; nl: "eg.nl"; nm: "eg.nm"; nn: "eg.nn"; no: "eg.no"; np: "eg.np"; nq: "eg.nq"; nr: "eg.nr"; ns: "eg.ns"; nt: "eg.nt"; nu: "eg.nu"; nv: "eg.nv"; nw: "eg.nw"; nx: "eg.nx"; ny: "eg.ny"; nz: "eg.nz"; oa: "eg.oa"; ob: "eg.ob"; oc: "eg.oc"; od: "eg.od"; oe: "eg.oe"; of: "eg.of"; og: "eg.og"; oh: "eg.oh"; oi: "eg.oi"; oj: "eg.oj"; ok: "eg.ok"; ol: "eg.ol"; om: "eg.om"; on: "eg.on"; oo: "eg.oo"; op: "eg.op"; oq: "eg.oq"; or: "eg.or"; os: "eg.os"; ot: "eg.ot"; ou: "eg.ou"; ov: "eg.ov"; ow: "eg.ow"; ox: "eg.ox"; oy: "eg.oy"; oz: "eg.oz"; pa: "eg.pa"; pb: "eg.pb"; pc: "eg.pc"; pd: "eg.pd"; pe: "eg.pe"; pf: "eg.pf"; pg: "eg.pg"; ph: "eg.ph"; pi: "eg.pi"; pj: "eg.pj"; pk: "eg.pk"; pl: "eg.pl"; pm: "eg.pm"; pn: "eg.pn"; po: "eg.po"; pp: "eg.pp"; pq: "eg.pq"; pr: "eg.pr"; ps: "eg.ps"; pt: "eg.pt"; pu: "eg.pu"; pv: "eg.pv"; pw: "eg.pw"; px: "eg.px"; py: "eg.py"; pz: "eg.pz"; qa: "eg.qa"; qb: "eg.qb"; qc: "eg.qc"; qd: "eg.qd"; qe: "eg.qe"; qf: "eg.qf"; qg: "eg.qg"; qh: "eg.qh"; qi: "eg.qi"; qj: "eg.qj"; qk: "eg.qk"; ql: "eg.ql"; qm: "eg.qm"; qn: "eg.qn"; qo: "eg.qo"; qp: "eg.qp"; qq: "eg.qq"; qr: "eg.qr"; qs: "eg.qs"; qt: "eg.qt"; qu: "eg.qu"; qv: "eg.qv"; qw: "eg.qw"; qx: "eg.qx"; qy: "eg.qy"; qz: "eg.qz"; ra: "eg.ra"; rb: "eg.rb"; rc: "eg.rc"; rd: "eg.rd"; re: "eg.re"; rf: "eg.rf"; rg: "eg.rg"; rh: "eg.rh"; ri: "eg.ri"; rj: "eg.rj"; rk: "eg.rk"; rl: "eg.rl"; rm: "eg.rm"; rn: "eg.rn"; ro: "eg.ro"; rp: "eg.rp"; rq: "eg.rq"; rr: "eg.rr"; rs: "eg.rs"; rt: "eg.rt"; ru: "eg.ru"; rv: "eg.rv"; rw: "eg.rw"; rx: "eg.rx"; ry: "eg.ry"; rz: "eg.rz"; sa: "eg.sa"; sb: "eg.sb"; sc: "eg.sc"; sd: "eg.sd"; se: "eg.se"; sf: "eg.sf"; sg: "eg.sg"; sh: "eg.sh"; si: "eg.si"; sj: "eg.sj"; sk: "eg.sk"; sl: "eg.sl"; sm: "eg.sm"; sn: "eg.sn"; so: "eg.so"; sp: "eg.sp"; sq: "eg.sq"; sr: "eg.sr"; ss: "eg.ss"; st: "eg.st"; su: "eg.su"; sv: "eg.sv"; sw: "eg.sw"; sx: "eg.sx"; sy: "eg.sy"; sz: "eg.sz"; ta: "eg.ta"; tb: "eg.tb"; tc: "eg.tc"; td: "eg.td"; te: "eg.te"; tf: "eg.tf"; tg: "eg.tg"; th: "eg.th"; ti: "eg.ti"; tj: "eg.tj"; tk: "eg.tk"; tl: "eg.tl"; tm: "eg.tm"; tn: "eg.tn"; to: "eg.to"; tp: "eg.tp"; tq: "eg.tq"; tr: "eg.tr"; ts: "eg.ts"; tt: "eg.tt"; tu: "eg.tu"; tv: "eg.tv"; tw: "eg.tw"; tx: "eg.tx"; ty: "eg.ty"; tz: "eg.tz"; ua: "eg.ua"; ub: "eg.ub"; uc: "eg.uc"; ud: "eg.ud"; ue: "eg.ue"; uf: "eg.uf"; ug: "eg.ug"; uh: "eg.uh"; ui: "eg.ui"; uj: "eg.uj"; uk: "eg.uk"; ul: "eg.ul"; um: "eg.um"; un: "eg.un"; uo: "eg.uo"; up: "eg.up"; uq: "eg.uq"; ur: "eg.ur"; us: "eg.us"; ut: "eg.ut"; uu: "eg.uu"; uv: "eg.uv"; uw: "eg.uw"; ux: "eg.ux"; uy: "eg.uy"; uz: "eg.uz"; va: "eg.va"; vb: "eg.vb"; vc: "eg.vc"; vd: "eg.vd"; ve: "eg.ve"; vf: "eg.vf"; vg: "eg.vg"; vh: "eg.vh"; vi: "eg.vi"; vj: "eg.vj"; vk: "eg.vk"; vl: "eg.vl"; vm: "eg.vm"; vn: "eg.vn"; vo: "eg.vo"; vp: "eg.vp"; vq: "eg.vq"; vr: "eg.vr"; vs: "eg.vs"; vt: "eg.vt"; vu: "eg.vu"; vv: "eg.vv"; vw: "eg.vw"; vx: "eg.vx"; vy: "eg.vy"; vz: "eg.vz"; wa: "eg.wa"; wb: "eg.wb"; wc: "eg.wc"; wd: "eg.wd"; we: "eg.we"; wf: "eg.wf"; wg: "eg.wg"; wh: "eg.wh"; wi: "eg.wi"; wj: "eg.wj"; wk: "eg.wk"; wl: "eg.wl"; wm: "eg.wm"; wn: "eg.wn"; wo: "eg.wo"; wp: "eg.wp"; wq: "eg.wq"; wr: "eg.wr"; ws: "eg.ws"; wt: "eg.wt"; wu: "eg.wu"; wv: "eg.wv"; ww: "eg.ww"; wx: "eg.wx"; wy: "eg.wy"; wz: "eg.wz"; xa: "eg.xa"; xb: "eg.xb"; xc: "eg.xc"; xd: "eg.xd"; xe: "eg.xe"; xf: "eg.xf"; xg: "eg.xg"; xh: "eg.xh"; xi: "eg.xi"; xj: "eg.xj"; xk: "eg.xk"; xl: "eg.xl"; xm: "eg.xm"; xn: "eg.xn"; xo: "eg.xo"; xp: "eg.xp"; xq: "eg.xq"; xr: "eg.xr"; xs: "eg.xs"; xt: "eg.xt"; xu: "eg.xu"; xv: "eg.xv"; xw: "eg.xw"; xx: "eg.xx"; xy: "eg.xy"; xz: "eg.xz"; ya: "eg.ya"; yb: "eg.yb"; yc: "eg.yc"; yd: "eg.yd"; ye: "eg.ye"; yf: "eg.yf"; yg: "eg.yg"; yh: "eg.yh"; yi: "eg.yi"; yj: "eg.yj"; yk: "eg.yk"; yl: "eg.yl"; ym: "eg.ym"; yn: "eg.yn"; yo: "eg.yo"; yp: "eg.yp"; yq: "eg.yq"; yr: "eg.yr"; ys: "eg.ys"; yt: "eg.yt"; yu: "eg.yu"; yv: "eg.yv"; yw: "eg.yw"; yx: "eg.yx"; yy: "eg.yy"; yz: "eg.yz"; za: "eg.za"; zb: "eg.zb"; zc: "eg.zc"; zd: "eg.zd"; ze: "eg.ze"; zf: "eg.zf"; zg: "eg.zg"; zh: "eg.zh"; zi: "eg.zi"; zj: "eg.zj"; zk: "eg.zk"; zl: "eg.zl"; zm: "eg.zm"; zn: "eg.zn"; zo: "eg.zo"; zp: "eg.zp"; zq: "eg.zq"; zr: "eg.zr"; zs: "eg.zs"; zt: "eg.zt"; zu: "eg.zu"; zv: "eg.zv"; zw: "eg.zw"; zx: "eg.zx"; zy: "eg.zy"; zz: "eg.zz"; }; eh: { aa: "eh.aa"; ab: "eh.ab"; ac: "eh.ac"; ad: "eh.ad"; ae: "eh.ae"; af: "eh.af"; ag: "eh.ag"; ah: "eh.ah"; ai: "eh.ai"; aj: "eh.aj"; ak: "eh.ak"; al: "eh.al"; am: "eh.am"; an: "eh.an"; ao: "eh.ao"; ap: "eh.ap"; aq: "eh.aq"; ar: "eh.ar"; as: "eh.as"; at: "eh.at"; au: "eh.au"; av: "eh.av"; aw: "eh.aw"; ax: "eh.ax"; ay: "eh.ay"; az: "eh.az"; ba: "eh.ba"; bb: "eh.bb"; bc: "eh.bc"; bd: "eh.bd"; be: "eh.be"; bf: "eh.bf"; bg: "eh.bg"; bh: "eh.bh"; bi: "eh.bi"; bj: "eh.bj"; bk: "eh.bk"; bl: "eh.bl"; bm: "eh.bm"; bn: "eh.bn"; bo: "eh.bo"; bp: "eh.bp"; bq: "eh.bq"; br: "eh.br"; bs: "eh.bs"; bt: "eh.bt"; bu: "eh.bu"; bv: "eh.bv"; bw: "eh.bw"; bx: "eh.bx"; by: "eh.by"; bz: "eh.bz"; ca: "eh.ca"; cb: "eh.cb"; cc: "eh.cc"; cd: "eh.cd"; ce: "eh.ce"; cf: "eh.cf"; cg: "eh.cg"; ch: "eh.ch"; ci: "eh.ci"; cj: "eh.cj"; ck: "eh.ck"; cl: "eh.cl"; cm: "eh.cm"; cn: "eh.cn"; co: "eh.co"; cp: "eh.cp"; cq: "eh.cq"; cr: "eh.cr"; cs: "eh.cs"; ct: "eh.ct"; cu: "eh.cu"; cv: "eh.cv"; cw: "eh.cw"; cx: "eh.cx"; cy: "eh.cy"; cz: "eh.cz"; da: "eh.da"; db: "eh.db"; dc: "eh.dc"; dd: "eh.dd"; de: "eh.de"; df: "eh.df"; dg: "eh.dg"; dh: "eh.dh"; di: "eh.di"; dj: "eh.dj"; dk: "eh.dk"; dl: "eh.dl"; dm: "eh.dm"; dn: "eh.dn"; do: "eh.do"; dp: "eh.dp"; dq: "eh.dq"; dr: "eh.dr"; ds: "eh.ds"; dt: "eh.dt"; du: "eh.du"; dv: "eh.dv"; dw: "eh.dw"; dx: "eh.dx"; dy: "eh.dy"; dz: "eh.dz"; ea: "eh.ea"; eb: "eh.eb"; ec: "eh.ec"; ed: "eh.ed"; ee: "eh.ee"; ef: "eh.ef"; eg: "eh.eg"; eh: "eh.eh"; ei: "eh.ei"; ej: "eh.ej"; ek: "eh.ek"; el: "eh.el"; em: "eh.em"; en: "eh.en"; eo: "eh.eo"; ep: "eh.ep"; eq: "eh.eq"; er: "eh.er"; es: "eh.es"; et: "eh.et"; eu: "eh.eu"; ev: "eh.ev"; ew: "eh.ew"; ex: "eh.ex"; ey: "eh.ey"; ez: "eh.ez"; fa: "eh.fa"; fb: "eh.fb"; fc: "eh.fc"; fd: "eh.fd"; fe: "eh.fe"; ff: "eh.ff"; fg: "eh.fg"; fh: "eh.fh"; fi: "eh.fi"; fj: "eh.fj"; fk: "eh.fk"; fl: "eh.fl"; fm: "eh.fm"; fn: "eh.fn"; fo: "eh.fo"; fp: "eh.fp"; fq: "eh.fq"; fr: "eh.fr"; fs: "eh.fs"; ft: "eh.ft"; fu: "eh.fu"; fv: "eh.fv"; fw: "eh.fw"; fx: "eh.fx"; fy: "eh.fy"; fz: "eh.fz"; ga: "eh.ga"; gb: "eh.gb"; gc: "eh.gc"; gd: "eh.gd"; ge: "eh.ge"; gf: "eh.gf"; gg: "eh.gg"; gh: "eh.gh"; gi: "eh.gi"; gj: "eh.gj"; gk: "eh.gk"; gl: "eh.gl"; gm: "eh.gm"; gn: "eh.gn"; go: "eh.go"; gp: "eh.gp"; gq: "eh.gq"; gr: "eh.gr"; gs: "eh.gs"; gt: "eh.gt"; gu: "eh.gu"; gv: "eh.gv"; gw: "eh.gw"; gx: "eh.gx"; gy: "eh.gy"; gz: "eh.gz"; ha: "eh.ha"; hb: "eh.hb"; hc: "eh.hc"; hd: "eh.hd"; he: "eh.he"; hf: "eh.hf"; hg: "eh.hg"; hh: "eh.hh"; hi: "eh.hi"; hj: "eh.hj"; hk: "eh.hk"; hl: "eh.hl"; hm: "eh.hm"; hn: "eh.hn"; ho: "eh.ho"; hp: "eh.hp"; hq: "eh.hq"; hr: "eh.hr"; hs: "eh.hs"; ht: "eh.ht"; hu: "eh.hu"; hv: "eh.hv"; hw: "eh.hw"; hx: "eh.hx"; hy: "eh.hy"; hz: "eh.hz"; ia: "eh.ia"; ib: "eh.ib"; ic: "eh.ic"; id: "eh.id"; ie: "eh.ie"; if: "eh.if"; ig: "eh.ig"; ih: "eh.ih"; ii: "eh.ii"; ij: "eh.ij"; ik: "eh.ik"; il: "eh.il"; im: "eh.im"; in: "eh.in"; io: "eh.io"; ip: "eh.ip"; iq: "eh.iq"; ir: "eh.ir"; is: "eh.is"; it: "eh.it"; iu: "eh.iu"; iv: "eh.iv"; iw: "eh.iw"; ix: "eh.ix"; iy: "eh.iy"; iz: "eh.iz"; ja: "eh.ja"; jb: "eh.jb"; jc: "eh.jc"; jd: "eh.jd"; je: "eh.je"; jf: "eh.jf"; jg: "eh.jg"; jh: "eh.jh"; ji: "eh.ji"; jj: "eh.jj"; jk: "eh.jk"; jl: "eh.jl"; jm: "eh.jm"; jn: "eh.jn"; jo: "eh.jo"; jp: "eh.jp"; jq: "eh.jq"; jr: "eh.jr"; js: "eh.js"; jt: "eh.jt"; ju: "eh.ju"; jv: "eh.jv"; jw: "eh.jw"; jx: "eh.jx"; jy: "eh.jy"; jz: "eh.jz"; ka: "eh.ka"; kb: "eh.kb"; kc: "eh.kc"; kd: "eh.kd"; ke: "eh.ke"; kf: "eh.kf"; kg: "eh.kg"; kh: "eh.kh"; ki: "eh.ki"; kj: "eh.kj"; kk: "eh.kk"; kl: "eh.kl"; km: "eh.km"; kn: "eh.kn"; ko: "eh.ko"; kp: "eh.kp"; kq: "eh.kq"; kr: "eh.kr"; ks: "eh.ks"; kt: "eh.kt"; ku: "eh.ku"; kv: "eh.kv"; kw: "eh.kw"; kx: "eh.kx"; ky: "eh.ky"; kz: "eh.kz"; la: "eh.la"; lb: "eh.lb"; lc: "eh.lc"; ld: "eh.ld"; le: "eh.le"; lf: "eh.lf"; lg: "eh.lg"; lh: "eh.lh"; li: "eh.li"; lj: "eh.lj"; lk: "eh.lk"; ll: "eh.ll"; lm: "eh.lm"; ln: "eh.ln"; lo: "eh.lo"; lp: "eh.lp"; lq: "eh.lq"; lr: "eh.lr"; ls: "eh.ls"; lt: "eh.lt"; lu: "eh.lu"; lv: "eh.lv"; lw: "eh.lw"; lx: "eh.lx"; ly: "eh.ly"; lz: "eh.lz"; ma: "eh.ma"; mb: "eh.mb"; mc: "eh.mc"; md: "eh.md"; me: "eh.me"; mf: "eh.mf"; mg: "eh.mg"; mh: "eh.mh"; mi: "eh.mi"; mj: "eh.mj"; mk: "eh.mk"; ml: "eh.ml"; mm: "eh.mm"; mn: "eh.mn"; mo: "eh.mo"; mp: "eh.mp"; mq: "eh.mq"; mr: "eh.mr"; ms: "eh.ms"; mt: "eh.mt"; mu: "eh.mu"; mv: "eh.mv"; mw: "eh.mw"; mx: "eh.mx"; my: "eh.my"; mz: "eh.mz"; na: "eh.na"; nb: "eh.nb"; nc: "eh.nc"; nd: "eh.nd"; ne: "eh.ne"; nf: "eh.nf"; ng: "eh.ng"; nh: "eh.nh"; ni: "eh.ni"; nj: "eh.nj"; nk: "eh.nk"; nl: "eh.nl"; nm: "eh.nm"; nn: "eh.nn"; no: "eh.no"; np: "eh.np"; nq: "eh.nq"; nr: "eh.nr"; ns: "eh.ns"; nt: "eh.nt"; nu: "eh.nu"; nv: "eh.nv"; nw: "eh.nw"; nx: "eh.nx"; ny: "eh.ny"; nz: "eh.nz"; oa: "eh.oa"; ob: "eh.ob"; oc: "eh.oc"; od: "eh.od"; oe: "eh.oe"; of: "eh.of"; og: "eh.og"; oh: "eh.oh"; oi: "eh.oi"; oj: "eh.oj"; ok: "eh.ok"; ol: "eh.ol"; om: "eh.om"; on: "eh.on"; oo: "eh.oo"; op: "eh.op"; oq: "eh.oq"; or: "eh.or"; os: "eh.os"; ot: "eh.ot"; ou: "eh.ou"; ov: "eh.ov"; ow: "eh.ow"; ox: "eh.ox"; oy: "eh.oy"; oz: "eh.oz"; pa: "eh.pa"; pb: "eh.pb"; pc: "eh.pc"; pd: "eh.pd"; pe: "eh.pe"; pf: "eh.pf"; pg: "eh.pg"; ph: "eh.ph"; pi: "eh.pi"; pj: "eh.pj"; pk: "eh.pk"; pl: "eh.pl"; pm: "eh.pm"; pn: "eh.pn"; po: "eh.po"; pp: "eh.pp"; pq: "eh.pq"; pr: "eh.pr"; ps: "eh.ps"; pt: "eh.pt"; pu: "eh.pu"; pv: "eh.pv"; pw: "eh.pw"; px: "eh.px"; py: "eh.py"; pz: "eh.pz"; qa: "eh.qa"; qb: "eh.qb"; qc: "eh.qc"; qd: "eh.qd"; qe: "eh.qe"; qf: "eh.qf"; qg: "eh.qg"; qh: "eh.qh"; qi: "eh.qi"; qj: "eh.qj"; qk: "eh.qk"; ql: "eh.ql"; qm: "eh.qm"; qn: "eh.qn"; qo: "eh.qo"; qp: "eh.qp"; qq: "eh.qq"; qr: "eh.qr"; qs: "eh.qs"; qt: "eh.qt"; qu: "eh.qu"; qv: "eh.qv"; qw: "eh.qw"; qx: "eh.qx"; qy: "eh.qy"; qz: "eh.qz"; ra: "eh.ra"; rb: "eh.rb"; rc: "eh.rc"; rd: "eh.rd"; re: "eh.re"; rf: "eh.rf"; rg: "eh.rg"; rh: "eh.rh"; ri: "eh.ri"; rj: "eh.rj"; rk: "eh.rk"; rl: "eh.rl"; rm: "eh.rm"; rn: "eh.rn"; ro: "eh.ro"; rp: "eh.rp"; rq: "eh.rq"; rr: "eh.rr"; rs: "eh.rs"; rt: "eh.rt"; ru: "eh.ru"; rv: "eh.rv"; rw: "eh.rw"; rx: "eh.rx"; ry: "eh.ry"; rz: "eh.rz"; sa: "eh.sa"; sb: "eh.sb"; sc: "eh.sc"; sd: "eh.sd"; se: "eh.se"; sf: "eh.sf"; sg: "eh.sg"; sh: "eh.sh"; si: "eh.si"; sj: "eh.sj"; sk: "eh.sk"; sl: "eh.sl"; sm: "eh.sm"; sn: "eh.sn"; so: "eh.so"; sp: "eh.sp"; sq: "eh.sq"; sr: "eh.sr"; ss: "eh.ss"; st: "eh.st"; su: "eh.su"; sv: "eh.sv"; sw: "eh.sw"; sx: "eh.sx"; sy: "eh.sy"; sz: "eh.sz"; ta: "eh.ta"; tb: "eh.tb"; tc: "eh.tc"; td: "eh.td"; te: "eh.te"; tf: "eh.tf"; tg: "eh.tg"; th: "eh.th"; ti: "eh.ti"; tj: "eh.tj"; tk: "eh.tk"; tl: "eh.tl"; tm: "eh.tm"; tn: "eh.tn"; to: "eh.to"; tp: "eh.tp"; tq: "eh.tq"; tr: "eh.tr"; ts: "eh.ts"; tt: "eh.tt"; tu: "eh.tu"; tv: "eh.tv"; tw: "eh.tw"; tx: "eh.tx"; ty: "eh.ty"; tz: "eh.tz"; ua: "eh.ua"; ub: "eh.ub"; uc: "eh.uc"; ud: "eh.ud"; ue: "eh.ue"; uf: "eh.uf"; ug: "eh.ug"; uh: "eh.uh"; ui: "eh.ui"; uj: "eh.uj"; uk: "eh.uk"; ul: "eh.ul"; um: "eh.um"; un: "eh.un"; uo: "eh.uo"; up: "eh.up"; uq: "eh.uq"; ur: "eh.ur"; us: "eh.us"; ut: "eh.ut"; uu: "eh.uu"; uv: "eh.uv"; uw: "eh.uw"; ux: "eh.ux"; uy: "eh.uy"; uz: "eh.uz"; va: "eh.va"; vb: "eh.vb"; vc: "eh.vc"; vd: "eh.vd"; ve: "eh.ve"; vf: "eh.vf"; vg: "eh.vg"; vh: "eh.vh"; vi: "eh.vi"; vj: "eh.vj"; vk: "eh.vk"; vl: "eh.vl"; vm: "eh.vm"; vn: "eh.vn"; vo: "eh.vo"; vp: "eh.vp"; vq: "eh.vq"; vr: "eh.vr"; vs: "eh.vs"; vt: "eh.vt"; vu: "eh.vu"; vv: "eh.vv"; vw: "eh.vw"; vx: "eh.vx"; vy: "eh.vy"; vz: "eh.vz"; wa: "eh.wa"; wb: "eh.wb"; wc: "eh.wc"; wd: "eh.wd"; we: "eh.we"; wf: "eh.wf"; wg: "eh.wg"; wh: "eh.wh"; wi: "eh.wi"; wj: "eh.wj"; wk: "eh.wk"; wl: "eh.wl"; wm: "eh.wm"; wn: "eh.wn"; wo: "eh.wo"; wp: "eh.wp"; wq: "eh.wq"; wr: "eh.wr"; ws: "eh.ws"; wt: "eh.wt"; wu: "eh.wu"; wv: "eh.wv"; ww: "eh.ww"; wx: "eh.wx"; wy: "eh.wy"; wz: "eh.wz"; xa: "eh.xa"; xb: "eh.xb"; xc: "eh.xc"; xd: "eh.xd"; xe: "eh.xe"; xf: "eh.xf"; xg: "eh.xg"; xh: "eh.xh"; xi: "eh.xi"; xj: "eh.xj"; xk: "eh.xk"; xl: "eh.xl"; xm: "eh.xm"; xn: "eh.xn"; xo: "eh.xo"; xp: "eh.xp"; xq: "eh.xq"; xr: "eh.xr"; xs: "eh.xs"; xt: "eh.xt"; xu: "eh.xu"; xv: "eh.xv"; xw: "eh.xw"; xx: "eh.xx"; xy: "eh.xy"; xz: "eh.xz"; ya: "eh.ya"; yb: "eh.yb"; yc: "eh.yc"; yd: "eh.yd"; ye: "eh.ye"; yf: "eh.yf"; yg: "eh.yg"; yh: "eh.yh"; yi: "eh.yi"; yj: "eh.yj"; yk: "eh.yk"; yl: "eh.yl"; ym: "eh.ym"; yn: "eh.yn"; yo: "eh.yo"; yp: "eh.yp"; yq: "eh.yq"; yr: "eh.yr"; ys: "eh.ys"; yt: "eh.yt"; yu: "eh.yu"; yv: "eh.yv"; yw: "eh.yw"; yx: "eh.yx"; yy: "eh.yy"; yz: "eh.yz"; za: "eh.za"; zb: "eh.zb"; zc: "eh.zc"; zd: "eh.zd"; ze: "eh.ze"; zf: "eh.zf"; zg: "eh.zg"; zh: "eh.zh"; zi: "eh.zi"; zj: "eh.zj"; zk: "eh.zk"; zl: "eh.zl"; zm: "eh.zm"; zn: "eh.zn"; zo: "eh.zo"; zp: "eh.zp"; zq: "eh.zq"; zr: "eh.zr"; zs: "eh.zs"; zt: "eh.zt"; zu: "eh.zu"; zv: "eh.zv"; zw: "eh.zw"; zx: "eh.zx"; zy: "eh.zy"; zz: "eh.zz"; }; ei: { aa: "ei.aa"; ab: "ei.ab"; ac: "ei.ac"; ad: "ei.ad"; ae: "ei.ae"; af: "ei.af"; ag: "ei.ag"; ah: "ei.ah"; ai: "ei.ai"; aj: "ei.aj"; ak: "ei.ak"; al: "ei.al"; am: "ei.am"; an: "ei.an"; ao: "ei.ao"; ap: "ei.ap"; aq: "ei.aq"; ar: "ei.ar"; as: "ei.as"; at: "ei.at"; au: "ei.au"; av: "ei.av"; aw: "ei.aw"; ax: "ei.ax"; ay: "ei.ay"; az: "ei.az"; ba: "ei.ba"; bb: "ei.bb"; bc: "ei.bc"; bd: "ei.bd"; be: "ei.be"; bf: "ei.bf"; bg: "ei.bg"; bh: "ei.bh"; bi: "ei.bi"; bj: "ei.bj"; bk: "ei.bk"; bl: "ei.bl"; bm: "ei.bm"; bn: "ei.bn"; bo: "ei.bo"; bp: "ei.bp"; bq: "ei.bq"; br: "ei.br"; bs: "ei.bs"; bt: "ei.bt"; bu: "ei.bu"; bv: "ei.bv"; bw: "ei.bw"; bx: "ei.bx"; by: "ei.by"; bz: "ei.bz"; ca: "ei.ca"; cb: "ei.cb"; cc: "ei.cc"; cd: "ei.cd"; ce: "ei.ce"; cf: "ei.cf"; cg: "ei.cg"; ch: "ei.ch"; ci: "ei.ci"; cj: "ei.cj"; ck: "ei.ck"; cl: "ei.cl"; cm: "ei.cm"; cn: "ei.cn"; co: "ei.co"; cp: "ei.cp"; cq: "ei.cq"; cr: "ei.cr"; cs: "ei.cs"; ct: "ei.ct"; cu: "ei.cu"; cv: "ei.cv"; cw: "ei.cw"; cx: "ei.cx"; cy: "ei.cy"; cz: "ei.cz"; da: "ei.da"; db: "ei.db"; dc: "ei.dc"; dd: "ei.dd"; de: "ei.de"; df: "ei.df"; dg: "ei.dg"; dh: "ei.dh"; di: "ei.di"; dj: "ei.dj"; dk: "ei.dk"; dl: "ei.dl"; dm: "ei.dm"; dn: "ei.dn"; do: "ei.do"; dp: "ei.dp"; dq: "ei.dq"; dr: "ei.dr"; ds: "ei.ds"; dt: "ei.dt"; du: "ei.du"; dv: "ei.dv"; dw: "ei.dw"; dx: "ei.dx"; dy: "ei.dy"; dz: "ei.dz"; ea: "ei.ea"; eb: "ei.eb"; ec: "ei.ec"; ed: "ei.ed"; ee: "ei.ee"; ef: "ei.ef"; eg: "ei.eg"; eh: "ei.eh"; ei: "ei.ei"; ej: "ei.ej"; ek: "ei.ek"; el: "ei.el"; em: "ei.em"; en: "ei.en"; eo: "ei.eo"; ep: "ei.ep"; eq: "ei.eq"; er: "ei.er"; es: "ei.es"; et: "ei.et"; eu: "ei.eu"; ev: "ei.ev"; ew: "ei.ew"; ex: "ei.ex"; ey: "ei.ey"; ez: "ei.ez"; fa: "ei.fa"; fb: "ei.fb"; fc: "ei.fc"; fd: "ei.fd"; fe: "ei.fe"; ff: "ei.ff"; fg: "ei.fg"; fh: "ei.fh"; fi: "ei.fi"; fj: "ei.fj"; fk: "ei.fk"; fl: "ei.fl"; fm: "ei.fm"; fn: "ei.fn"; fo: "ei.fo"; fp: "ei.fp"; fq: "ei.fq"; fr: "ei.fr"; fs: "ei.fs"; ft: "ei.ft"; fu: "ei.fu"; fv: "ei.fv"; fw: "ei.fw"; fx: "ei.fx"; fy: "ei.fy"; fz: "ei.fz"; ga: "ei.ga"; gb: "ei.gb"; gc: "ei.gc"; gd: "ei.gd"; ge: "ei.ge"; gf: "ei.gf"; gg: "ei.gg"; gh: "ei.gh"; gi: "ei.gi"; gj: "ei.gj"; gk: "ei.gk"; gl: "ei.gl"; gm: "ei.gm"; gn: "ei.gn"; go: "ei.go"; gp: "ei.gp"; gq: "ei.gq"; gr: "ei.gr"; gs: "ei.gs"; gt: "ei.gt"; gu: "ei.gu"; gv: "ei.gv"; gw: "ei.gw"; gx: "ei.gx"; gy: "ei.gy"; gz: "ei.gz"; ha: "ei.ha"; hb: "ei.hb"; hc: "ei.hc"; hd: "ei.hd"; he: "ei.he"; hf: "ei.hf"; hg: "ei.hg"; hh: "ei.hh"; hi: "ei.hi"; hj: "ei.hj"; hk: "ei.hk"; hl: "ei.hl"; hm: "ei.hm"; hn: "ei.hn"; ho: "ei.ho"; hp: "ei.hp"; hq: "ei.hq"; hr: "ei.hr"; hs: "ei.hs"; ht: "ei.ht"; hu: "ei.hu"; hv: "ei.hv"; hw: "ei.hw"; hx: "ei.hx"; hy: "ei.hy"; hz: "ei.hz"; ia: "ei.ia"; ib: "ei.ib"; ic: "ei.ic"; id: "ei.id"; ie: "ei.ie"; if: "ei.if"; ig: "ei.ig"; ih: "ei.ih"; ii: "ei.ii"; ij: "ei.ij"; ik: "ei.ik"; il: "ei.il"; im: "ei.im"; in: "ei.in"; io: "ei.io"; ip: "ei.ip"; iq: "ei.iq"; ir: "ei.ir"; is: "ei.is"; it: "ei.it"; iu: "ei.iu"; iv: "ei.iv"; iw: "ei.iw"; ix: "ei.ix"; iy: "ei.iy"; iz: "ei.iz"; ja: "ei.ja"; jb: "ei.jb"; jc: "ei.jc"; jd: "ei.jd"; je: "ei.je"; jf: "ei.jf"; jg: "ei.jg"; jh: "ei.jh"; ji: "ei.ji"; jj: "ei.jj"; jk: "ei.jk"; jl: "ei.jl"; jm: "ei.jm"; jn: "ei.jn"; jo: "ei.jo"; jp: "ei.jp"; jq: "ei.jq"; jr: "ei.jr"; js: "ei.js"; jt: "ei.jt"; ju: "ei.ju"; jv: "ei.jv"; jw: "ei.jw"; jx: "ei.jx"; jy: "ei.jy"; jz: "ei.jz"; ka: "ei.ka"; kb: "ei.kb"; kc: "ei.kc"; kd: "ei.kd"; ke: "ei.ke"; kf: "ei.kf"; kg: "ei.kg"; kh: "ei.kh"; ki: "ei.ki"; kj: "ei.kj"; kk: "ei.kk"; kl: "ei.kl"; km: "ei.km"; kn: "ei.kn"; ko: "ei.ko"; kp: "ei.kp"; kq: "ei.kq"; kr: "ei.kr"; ks: "ei.ks"; kt: "ei.kt"; ku: "ei.ku"; kv: "ei.kv"; kw: "ei.kw"; kx: "ei.kx"; ky: "ei.ky"; kz: "ei.kz"; la: "ei.la"; lb: "ei.lb"; lc: "ei.lc"; ld: "ei.ld"; le: "ei.le"; lf: "ei.lf"; lg: "ei.lg"; lh: "ei.lh"; li: "ei.li"; lj: "ei.lj"; lk: "ei.lk"; ll: "ei.ll"; lm: "ei.lm"; ln: "ei.ln"; lo: "ei.lo"; lp: "ei.lp"; lq: "ei.lq"; lr: "ei.lr"; ls: "ei.ls"; lt: "ei.lt"; lu: "ei.lu"; lv: "ei.lv"; lw: "ei.lw"; lx: "ei.lx"; ly: "ei.ly"; lz: "ei.lz"; ma: "ei.ma"; mb: "ei.mb"; mc: "ei.mc"; md: "ei.md"; me: "ei.me"; mf: "ei.mf"; mg: "ei.mg"; mh: "ei.mh"; mi: "ei.mi"; mj: "ei.mj"; mk: "ei.mk"; ml: "ei.ml"; mm: "ei.mm"; mn: "ei.mn"; mo: "ei.mo"; mp: "ei.mp"; mq: "ei.mq"; mr: "ei.mr"; ms: "ei.ms"; mt: "ei.mt"; mu: "ei.mu"; mv: "ei.mv"; mw: "ei.mw"; mx: "ei.mx"; my: "ei.my"; mz: "ei.mz"; na: "ei.na"; nb: "ei.nb"; nc: "ei.nc"; nd: "ei.nd"; ne: "ei.ne"; nf: "ei.nf"; ng: "ei.ng"; nh: "ei.nh"; ni: "ei.ni"; nj: "ei.nj"; nk: "ei.nk"; nl: "ei.nl"; nm: "ei.nm"; nn: "ei.nn"; no: "ei.no"; np: "ei.np"; nq: "ei.nq"; nr: "ei.nr"; ns: "ei.ns"; nt: "ei.nt"; nu: "ei.nu"; nv: "ei.nv"; nw: "ei.nw"; nx: "ei.nx"; ny: "ei.ny"; nz: "ei.nz"; oa: "ei.oa"; ob: "ei.ob"; oc: "ei.oc"; od: "ei.od"; oe: "ei.oe"; of: "ei.of"; og: "ei.og"; oh: "ei.oh"; oi: "ei.oi"; oj: "ei.oj"; ok: "ei.ok"; ol: "ei.ol"; om: "ei.om"; on: "ei.on"; oo: "ei.oo"; op: "ei.op"; oq: "ei.oq"; or: "ei.or"; os: "ei.os"; ot: "ei.ot"; ou: "ei.ou"; ov: "ei.ov"; ow: "ei.ow"; ox: "ei.ox"; oy: "ei.oy"; oz: "ei.oz"; pa: "ei.pa"; pb: "ei.pb"; pc: "ei.pc"; pd: "ei.pd"; pe: "ei.pe"; pf: "ei.pf"; pg: "ei.pg"; ph: "ei.ph"; pi: "ei.pi"; pj: "ei.pj"; pk: "ei.pk"; pl: "ei.pl"; pm: "ei.pm"; pn: "ei.pn"; po: "ei.po"; pp: "ei.pp"; pq: "ei.pq"; pr: "ei.pr"; ps: "ei.ps"; pt: "ei.pt"; pu: "ei.pu"; pv: "ei.pv"; pw: "ei.pw"; px: "ei.px"; py: "ei.py"; pz: "ei.pz"; qa: "ei.qa"; qb: "ei.qb"; qc: "ei.qc"; qd: "ei.qd"; qe: "ei.qe"; qf: "ei.qf"; qg: "ei.qg"; qh: "ei.qh"; qi: "ei.qi"; qj: "ei.qj"; qk: "ei.qk"; ql: "ei.ql"; qm: "ei.qm"; qn: "ei.qn"; qo: "ei.qo"; qp: "ei.qp"; qq: "ei.qq"; qr: "ei.qr"; qs: "ei.qs"; qt: "ei.qt"; qu: "ei.qu"; qv: "ei.qv"; qw: "ei.qw"; qx: "ei.qx"; qy: "ei.qy"; qz: "ei.qz"; ra: "ei.ra"; rb: "ei.rb"; rc: "ei.rc"; rd: "ei.rd"; re: "ei.re"; rf: "ei.rf"; rg: "ei.rg"; rh: "ei.rh"; ri: "ei.ri"; rj: "ei.rj"; rk: "ei.rk"; rl: "ei.rl"; rm: "ei.rm"; rn: "ei.rn"; ro: "ei.ro"; rp: "ei.rp"; rq: "ei.rq"; rr: "ei.rr"; rs: "ei.rs"; rt: "ei.rt"; ru: "ei.ru"; rv: "ei.rv"; rw: "ei.rw"; rx: "ei.rx"; ry: "ei.ry"; rz: "ei.rz"; sa: "ei.sa"; sb: "ei.sb"; sc: "ei.sc"; sd: "ei.sd"; se: "ei.se"; sf: "ei.sf"; sg: "ei.sg"; sh: "ei.sh"; si: "ei.si"; sj: "ei.sj"; sk: "ei.sk"; sl: "ei.sl"; sm: "ei.sm"; sn: "ei.sn"; so: "ei.so"; sp: "ei.sp"; sq: "ei.sq"; sr: "ei.sr"; ss: "ei.ss"; st: "ei.st"; su: "ei.su"; sv: "ei.sv"; sw: "ei.sw"; sx: "ei.sx"; sy: "ei.sy"; sz: "ei.sz"; ta: "ei.ta"; tb: "ei.tb"; tc: "ei.tc"; td: "ei.td"; te: "ei.te"; tf: "ei.tf"; tg: "ei.tg"; th: "ei.th"; ti: "ei.ti"; tj: "ei.tj"; tk: "ei.tk"; tl: "ei.tl"; tm: "ei.tm"; tn: "ei.tn"; to: "ei.to"; tp: "ei.tp"; tq: "ei.tq"; tr: "ei.tr"; ts: "ei.ts"; tt: "ei.tt"; tu: "ei.tu"; tv: "ei.tv"; tw: "ei.tw"; tx: "ei.tx"; ty: "ei.ty"; tz: "ei.tz"; ua: "ei.ua"; ub: "ei.ub"; uc: "ei.uc"; ud: "ei.ud"; ue: "ei.ue"; uf: "ei.uf"; ug: "ei.ug"; uh: "ei.uh"; ui: "ei.ui"; uj: "ei.uj"; uk: "ei.uk"; ul: "ei.ul"; um: "ei.um"; un: "ei.un"; uo: "ei.uo"; up: "ei.up"; uq: "ei.uq"; ur: "ei.ur"; us: "ei.us"; ut: "ei.ut"; uu: "ei.uu"; uv: "ei.uv"; uw: "ei.uw"; ux: "ei.ux"; uy: "ei.uy"; uz: "ei.uz"; va: "ei.va"; vb: "ei.vb"; vc: "ei.vc"; vd: "ei.vd"; ve: "ei.ve"; vf: "ei.vf"; vg: "ei.vg"; vh: "ei.vh"; vi: "ei.vi"; vj: "ei.vj"; vk: "ei.vk"; vl: "ei.vl"; vm: "ei.vm"; vn: "ei.vn"; vo: "ei.vo"; vp: "ei.vp"; vq: "ei.vq"; vr: "ei.vr"; vs: "ei.vs"; vt: "ei.vt"; vu: "ei.vu"; vv: "ei.vv"; vw: "ei.vw"; vx: "ei.vx"; vy: "ei.vy"; vz: "ei.vz"; wa: "ei.wa"; wb: "ei.wb"; wc: "ei.wc"; wd: "ei.wd"; we: "ei.we"; wf: "ei.wf"; wg: "ei.wg"; wh: "ei.wh"; wi: "ei.wi"; wj: "ei.wj"; wk: "ei.wk"; wl: "ei.wl"; wm: "ei.wm"; wn: "ei.wn"; wo: "ei.wo"; wp: "ei.wp"; wq: "ei.wq"; wr: "ei.wr"; ws: "ei.ws"; wt: "ei.wt"; wu: "ei.wu"; wv: "ei.wv"; ww: "ei.ww"; wx: "ei.wx"; wy: "ei.wy"; wz: "ei.wz"; xa: "ei.xa"; xb: "ei.xb"; xc: "ei.xc"; xd: "ei.xd"; xe: "ei.xe"; xf: "ei.xf"; xg: "ei.xg"; xh: "ei.xh"; xi: "ei.xi"; xj: "ei.xj"; xk: "ei.xk"; xl: "ei.xl"; xm: "ei.xm"; xn: "ei.xn"; xo: "ei.xo"; xp: "ei.xp"; xq: "ei.xq"; xr: "ei.xr"; xs: "ei.xs"; xt: "ei.xt"; xu: "ei.xu"; xv: "ei.xv"; xw: "ei.xw"; xx: "ei.xx"; xy: "ei.xy"; xz: "ei.xz"; ya: "ei.ya"; yb: "ei.yb"; yc: "ei.yc"; yd: "ei.yd"; ye: "ei.ye"; yf: "ei.yf"; yg: "ei.yg"; yh: "ei.yh"; yi: "ei.yi"; yj: "ei.yj"; yk: "ei.yk"; yl: "ei.yl"; ym: "ei.ym"; yn: "ei.yn"; yo: "ei.yo"; yp: "ei.yp"; yq: "ei.yq"; yr: "ei.yr"; ys: "ei.ys"; yt: "ei.yt"; yu: "ei.yu"; yv: "ei.yv"; yw: "ei.yw"; yx: "ei.yx"; yy: "ei.yy"; yz: "ei.yz"; za: "ei.za"; zb: "ei.zb"; zc: "ei.zc"; zd: "ei.zd"; ze: "ei.ze"; zf: "ei.zf"; zg: "ei.zg"; zh: "ei.zh"; zi: "ei.zi"; zj: "ei.zj"; zk: "ei.zk"; zl: "ei.zl"; zm: "ei.zm"; zn: "ei.zn"; zo: "ei.zo"; zp: "ei.zp"; zq: "ei.zq"; zr: "ei.zr"; zs: "ei.zs"; zt: "ei.zt"; zu: "ei.zu"; zv: "ei.zv"; zw: "ei.zw"; zx: "ei.zx"; zy: "ei.zy"; zz: "ei.zz"; }; ej: { aa: "ej.aa"; ab: "ej.ab"; ac: "ej.ac"; ad: "ej.ad"; ae: "ej.ae"; af: "ej.af"; ag: "ej.ag"; ah: "ej.ah"; ai: "ej.ai"; aj: "ej.aj"; ak: "ej.ak"; al: "ej.al"; am: "ej.am"; an: "ej.an"; ao: "ej.ao"; ap: "ej.ap"; aq: "ej.aq"; ar: "ej.ar"; as: "ej.as"; at: "ej.at"; au: "ej.au"; av: "ej.av"; aw: "ej.aw"; ax: "ej.ax"; ay: "ej.ay"; az: "ej.az"; ba: "ej.ba"; bb: "ej.bb"; bc: "ej.bc"; bd: "ej.bd"; be: "ej.be"; bf: "ej.bf"; bg: "ej.bg"; bh: "ej.bh"; bi: "ej.bi"; bj: "ej.bj"; bk: "ej.bk"; bl: "ej.bl"; bm: "ej.bm"; bn: "ej.bn"; bo: "ej.bo"; bp: "ej.bp"; bq: "ej.bq"; br: "ej.br"; bs: "ej.bs"; bt: "ej.bt"; bu: "ej.bu"; bv: "ej.bv"; bw: "ej.bw"; bx: "ej.bx"; by: "ej.by"; bz: "ej.bz"; ca: "ej.ca"; cb: "ej.cb"; cc: "ej.cc"; cd: "ej.cd"; ce: "ej.ce"; cf: "ej.cf"; cg: "ej.cg"; ch: "ej.ch"; ci: "ej.ci"; cj: "ej.cj"; ck: "ej.ck"; cl: "ej.cl"; cm: "ej.cm"; cn: "ej.cn"; co: "ej.co"; cp: "ej.cp"; cq: "ej.cq"; cr: "ej.cr"; cs: "ej.cs"; ct: "ej.ct"; cu: "ej.cu"; cv: "ej.cv"; cw: "ej.cw"; cx: "ej.cx"; cy: "ej.cy"; cz: "ej.cz"; da: "ej.da"; db: "ej.db"; dc: "ej.dc"; dd: "ej.dd"; de: "ej.de"; df: "ej.df"; dg: "ej.dg"; dh: "ej.dh"; di: "ej.di"; dj: "ej.dj"; dk: "ej.dk"; dl: "ej.dl"; dm: "ej.dm"; dn: "ej.dn"; do: "ej.do"; dp: "ej.dp"; dq: "ej.dq"; dr: "ej.dr"; ds: "ej.ds"; dt: "ej.dt"; du: "ej.du"; dv: "ej.dv"; dw: "ej.dw"; dx: "ej.dx"; dy: "ej.dy"; dz: "ej.dz"; ea: "ej.ea"; eb: "ej.eb"; ec: "ej.ec"; ed: "ej.ed"; ee: "ej.ee"; ef: "ej.ef"; eg: "ej.eg"; eh: "ej.eh"; ei: "ej.ei"; ej: "ej.ej"; ek: "ej.ek"; el: "ej.el"; em: "ej.em"; en: "ej.en"; eo: "ej.eo"; ep: "ej.ep"; eq: "ej.eq"; er: "ej.er"; es: "ej.es"; et: "ej.et"; eu: "ej.eu"; ev: "ej.ev"; ew: "ej.ew"; ex: "ej.ex"; ey: "ej.ey"; ez: "ej.ez"; fa: "ej.fa"; fb: "ej.fb"; fc: "ej.fc"; fd: "ej.fd"; fe: "ej.fe"; ff: "ej.ff"; fg: "ej.fg"; fh: "ej.fh"; fi: "ej.fi"; fj: "ej.fj"; fk: "ej.fk"; fl: "ej.fl"; fm: "ej.fm"; fn: "ej.fn"; fo: "ej.fo"; fp: "ej.fp"; fq: "ej.fq"; fr: "ej.fr"; fs: "ej.fs"; ft: "ej.ft"; fu: "ej.fu"; fv: "ej.fv"; fw: "ej.fw"; fx: "ej.fx"; fy: "ej.fy"; fz: "ej.fz"; ga: "ej.ga"; gb: "ej.gb"; gc: "ej.gc"; gd: "ej.gd"; ge: "ej.ge"; gf: "ej.gf"; gg: "ej.gg"; gh: "ej.gh"; gi: "ej.gi"; gj: "ej.gj"; gk: "ej.gk"; gl: "ej.gl"; gm: "ej.gm"; gn: "ej.gn"; go: "ej.go"; gp: "ej.gp"; gq: "ej.gq"; gr: "ej.gr"; gs: "ej.gs"; gt: "ej.gt"; gu: "ej.gu"; gv: "ej.gv"; gw: "ej.gw"; gx: "ej.gx"; gy: "ej.gy"; gz: "ej.gz"; ha: "ej.ha"; hb: "ej.hb"; hc: "ej.hc"; hd: "ej.hd"; he: "ej.he"; hf: "ej.hf"; hg: "ej.hg"; hh: "ej.hh"; hi: "ej.hi"; hj: "ej.hj"; hk: "ej.hk"; hl: "ej.hl"; hm: "ej.hm"; hn: "ej.hn"; ho: "ej.ho"; hp: "ej.hp"; hq: "ej.hq"; hr: "ej.hr"; hs: "ej.hs"; ht: "ej.ht"; hu: "ej.hu"; hv: "ej.hv"; hw: "ej.hw"; hx: "ej.hx"; hy: "ej.hy"; hz: "ej.hz"; ia: "ej.ia"; ib: "ej.ib"; ic: "ej.ic"; id: "ej.id"; ie: "ej.ie"; if: "ej.if"; ig: "ej.ig"; ih: "ej.ih"; ii: "ej.ii"; ij: "ej.ij"; ik: "ej.ik"; il: "ej.il"; im: "ej.im"; in: "ej.in"; io: "ej.io"; ip: "ej.ip"; iq: "ej.iq"; ir: "ej.ir"; is: "ej.is"; it: "ej.it"; iu: "ej.iu"; iv: "ej.iv"; iw: "ej.iw"; ix: "ej.ix"; iy: "ej.iy"; iz: "ej.iz"; ja: "ej.ja"; jb: "ej.jb"; jc: "ej.jc"; jd: "ej.jd"; je: "ej.je"; jf: "ej.jf"; jg: "ej.jg"; jh: "ej.jh"; ji: "ej.ji"; jj: "ej.jj"; jk: "ej.jk"; jl: "ej.jl"; jm: "ej.jm"; jn: "ej.jn"; jo: "ej.jo"; jp: "ej.jp"; jq: "ej.jq"; jr: "ej.jr"; js: "ej.js"; jt: "ej.jt"; ju: "ej.ju"; jv: "ej.jv"; jw: "ej.jw"; jx: "ej.jx"; jy: "ej.jy"; jz: "ej.jz"; ka: "ej.ka"; kb: "ej.kb"; kc: "ej.kc"; kd: "ej.kd"; ke: "ej.ke"; kf: "ej.kf"; kg: "ej.kg"; kh: "ej.kh"; ki: "ej.ki"; kj: "ej.kj"; kk: "ej.kk"; kl: "ej.kl"; km: "ej.km"; kn: "ej.kn"; ko: "ej.ko"; kp: "ej.kp"; kq: "ej.kq"; kr: "ej.kr"; ks: "ej.ks"; kt: "ej.kt"; ku: "ej.ku"; kv: "ej.kv"; kw: "ej.kw"; kx: "ej.kx"; ky: "ej.ky"; kz: "ej.kz"; la: "ej.la"; lb: "ej.lb"; lc: "ej.lc"; ld: "ej.ld"; le: "ej.le"; lf: "ej.lf"; lg: "ej.lg"; lh: "ej.lh"; li: "ej.li"; lj: "ej.lj"; lk: "ej.lk"; ll: "ej.ll"; lm: "ej.lm"; ln: "ej.ln"; lo: "ej.lo"; lp: "ej.lp"; lq: "ej.lq"; lr: "ej.lr"; ls: "ej.ls"; lt: "ej.lt"; lu: "ej.lu"; lv: "ej.lv"; lw: "ej.lw"; lx: "ej.lx"; ly: "ej.ly"; lz: "ej.lz"; ma: "ej.ma"; mb: "ej.mb"; mc: "ej.mc"; md: "ej.md"; me: "ej.me"; mf: "ej.mf"; mg: "ej.mg"; mh: "ej.mh"; mi: "ej.mi"; mj: "ej.mj"; mk: "ej.mk"; ml: "ej.ml"; mm: "ej.mm"; mn: "ej.mn"; mo: "ej.mo"; mp: "ej.mp"; mq: "ej.mq"; mr: "ej.mr"; ms: "ej.ms"; mt: "ej.mt"; mu: "ej.mu"; mv: "ej.mv"; mw: "ej.mw"; mx: "ej.mx"; my: "ej.my"; mz: "ej.mz"; na: "ej.na"; nb: "ej.nb"; nc: "ej.nc"; nd: "ej.nd"; ne: "ej.ne"; nf: "ej.nf"; ng: "ej.ng"; nh: "ej.nh"; ni: "ej.ni"; nj: "ej.nj"; nk: "ej.nk"; nl: "ej.nl"; nm: "ej.nm"; nn: "ej.nn"; no: "ej.no"; np: "ej.np"; nq: "ej.nq"; nr: "ej.nr"; ns: "ej.ns"; nt: "ej.nt"; nu: "ej.nu"; nv: "ej.nv"; nw: "ej.nw"; nx: "ej.nx"; ny: "ej.ny"; nz: "ej.nz"; oa: "ej.oa"; ob: "ej.ob"; oc: "ej.oc"; od: "ej.od"; oe: "ej.oe"; of: "ej.of"; og: "ej.og"; oh: "ej.oh"; oi: "ej.oi"; oj: "ej.oj"; ok: "ej.ok"; ol: "ej.ol"; om: "ej.om"; on: "ej.on"; oo: "ej.oo"; op: "ej.op"; oq: "ej.oq"; or: "ej.or"; os: "ej.os"; ot: "ej.ot"; ou: "ej.ou"; ov: "ej.ov"; ow: "ej.ow"; ox: "ej.ox"; oy: "ej.oy"; oz: "ej.oz"; pa: "ej.pa"; pb: "ej.pb"; pc: "ej.pc"; pd: "ej.pd"; pe: "ej.pe"; pf: "ej.pf"; pg: "ej.pg"; ph: "ej.ph"; pi: "ej.pi"; pj: "ej.pj"; pk: "ej.pk"; pl: "ej.pl"; pm: "ej.pm"; pn: "ej.pn"; po: "ej.po"; pp: "ej.pp"; pq: "ej.pq"; pr: "ej.pr"; ps: "ej.ps"; pt: "ej.pt"; pu: "ej.pu"; pv: "ej.pv"; pw: "ej.pw"; px: "ej.px"; py: "ej.py"; pz: "ej.pz"; qa: "ej.qa"; qb: "ej.qb"; qc: "ej.qc"; qd: "ej.qd"; qe: "ej.qe"; qf: "ej.qf"; qg: "ej.qg"; qh: "ej.qh"; qi: "ej.qi"; qj: "ej.qj"; qk: "ej.qk"; ql: "ej.ql"; qm: "ej.qm"; qn: "ej.qn"; qo: "ej.qo"; qp: "ej.qp"; qq: "ej.qq"; qr: "ej.qr"; qs: "ej.qs"; qt: "ej.qt"; qu: "ej.qu"; qv: "ej.qv"; qw: "ej.qw"; qx: "ej.qx"; qy: "ej.qy"; qz: "ej.qz"; ra: "ej.ra"; rb: "ej.rb"; rc: "ej.rc"; rd: "ej.rd"; re: "ej.re"; rf: "ej.rf"; rg: "ej.rg"; rh: "ej.rh"; ri: "ej.ri"; rj: "ej.rj"; rk: "ej.rk"; rl: "ej.rl"; rm: "ej.rm"; rn: "ej.rn"; ro: "ej.ro"; rp: "ej.rp"; rq: "ej.rq"; rr: "ej.rr"; rs: "ej.rs"; rt: "ej.rt"; ru: "ej.ru"; rv: "ej.rv"; rw: "ej.rw"; rx: "ej.rx"; ry: "ej.ry"; rz: "ej.rz"; sa: "ej.sa"; sb: "ej.sb"; sc: "ej.sc"; sd: "ej.sd"; se: "ej.se"; sf: "ej.sf"; sg: "ej.sg"; sh: "ej.sh"; si: "ej.si"; sj: "ej.sj"; sk: "ej.sk"; sl: "ej.sl"; sm: "ej.sm"; sn: "ej.sn"; so: "ej.so"; sp: "ej.sp"; sq: "ej.sq"; sr: "ej.sr"; ss: "ej.ss"; st: "ej.st"; su: "ej.su"; sv: "ej.sv"; sw: "ej.sw"; sx: "ej.sx"; sy: "ej.sy"; sz: "ej.sz"; ta: "ej.ta"; tb: "ej.tb"; tc: "ej.tc"; td: "ej.td"; te: "ej.te"; tf: "ej.tf"; tg: "ej.tg"; th: "ej.th"; ti: "ej.ti"; tj: "ej.tj"; tk: "ej.tk"; tl: "ej.tl"; tm: "ej.tm"; tn: "ej.tn"; to: "ej.to"; tp: "ej.tp"; tq: "ej.tq"; tr: "ej.tr"; ts: "ej.ts"; tt: "ej.tt"; tu: "ej.tu"; tv: "ej.tv"; tw: "ej.tw"; tx: "ej.tx"; ty: "ej.ty"; tz: "ej.tz"; ua: "ej.ua"; ub: "ej.ub"; uc: "ej.uc"; ud: "ej.ud"; ue: "ej.ue"; uf: "ej.uf"; ug: "ej.ug"; uh: "ej.uh"; ui: "ej.ui"; uj: "ej.uj"; uk: "ej.uk"; ul: "ej.ul"; um: "ej.um"; un: "ej.un"; uo: "ej.uo"; up: "ej.up"; uq: "ej.uq"; ur: "ej.ur"; us: "ej.us"; ut: "ej.ut"; uu: "ej.uu"; uv: "ej.uv"; uw: "ej.uw"; ux: "ej.ux"; uy: "ej.uy"; uz: "ej.uz"; va: "ej.va"; vb: "ej.vb"; vc: "ej.vc"; vd: "ej.vd"; ve: "ej.ve"; vf: "ej.vf"; vg: "ej.vg"; vh: "ej.vh"; vi: "ej.vi"; vj: "ej.vj"; vk: "ej.vk"; vl: "ej.vl"; vm: "ej.vm"; vn: "ej.vn"; vo: "ej.vo"; vp: "ej.vp"; vq: "ej.vq"; vr: "ej.vr"; vs: "ej.vs"; vt: "ej.vt"; vu: "ej.vu"; vv: "ej.vv"; vw: "ej.vw"; vx: "ej.vx"; vy: "ej.vy"; vz: "ej.vz"; wa: "ej.wa"; wb: "ej.wb"; wc: "ej.wc"; wd: "ej.wd"; we: "ej.we"; wf: "ej.wf"; wg: "ej.wg"; wh: "ej.wh"; wi: "ej.wi"; wj: "ej.wj"; wk: "ej.wk"; wl: "ej.wl"; wm: "ej.wm"; wn: "ej.wn"; wo: "ej.wo"; wp: "ej.wp"; wq: "ej.wq"; wr: "ej.wr"; ws: "ej.ws"; wt: "ej.wt"; wu: "ej.wu"; wv: "ej.wv"; ww: "ej.ww"; wx: "ej.wx"; wy: "ej.wy"; wz: "ej.wz"; xa: "ej.xa"; xb: "ej.xb"; xc: "ej.xc"; xd: "ej.xd"; xe: "ej.xe"; xf: "ej.xf"; xg: "ej.xg"; xh: "ej.xh"; xi: "ej.xi"; xj: "ej.xj"; xk: "ej.xk"; xl: "ej.xl"; xm: "ej.xm"; xn: "ej.xn"; xo: "ej.xo"; xp: "ej.xp"; xq: "ej.xq"; xr: "ej.xr"; xs: "ej.xs"; xt: "ej.xt"; xu: "ej.xu"; xv: "ej.xv"; xw: "ej.xw"; xx: "ej.xx"; xy: "ej.xy"; xz: "ej.xz"; ya: "ej.ya"; yb: "ej.yb"; yc: "ej.yc"; yd: "ej.yd"; ye: "ej.ye"; yf: "ej.yf"; yg: "ej.yg"; yh: "ej.yh"; yi: "ej.yi"; yj: "ej.yj"; yk: "ej.yk"; yl: "ej.yl"; ym: "ej.ym"; yn: "ej.yn"; yo: "ej.yo"; yp: "ej.yp"; yq: "ej.yq"; yr: "ej.yr"; ys: "ej.ys"; yt: "ej.yt"; yu: "ej.yu"; yv: "ej.yv"; yw: "ej.yw"; yx: "ej.yx"; yy: "ej.yy"; yz: "ej.yz"; za: "ej.za"; zb: "ej.zb"; zc: "ej.zc"; zd: "ej.zd"; ze: "ej.ze"; zf: "ej.zf"; zg: "ej.zg"; zh: "ej.zh"; zi: "ej.zi"; zj: "ej.zj"; zk: "ej.zk"; zl: "ej.zl"; zm: "ej.zm"; zn: "ej.zn"; zo: "ej.zo"; zp: "ej.zp"; zq: "ej.zq"; zr: "ej.zr"; zs: "ej.zs"; zt: "ej.zt"; zu: "ej.zu"; zv: "ej.zv"; zw: "ej.zw"; zx: "ej.zx"; zy: "ej.zy"; zz: "ej.zz"; }; ek: { aa: "ek.aa"; ab: "ek.ab"; ac: "ek.ac"; ad: "ek.ad"; ae: "ek.ae"; af: "ek.af"; ag: "ek.ag"; ah: "ek.ah"; ai: "ek.ai"; aj: "ek.aj"; ak: "ek.ak"; al: "ek.al"; am: "ek.am"; an: "ek.an"; ao: "ek.ao"; ap: "ek.ap"; aq: "ek.aq"; ar: "ek.ar"; as: "ek.as"; at: "ek.at"; au: "ek.au"; av: "ek.av"; aw: "ek.aw"; ax: "ek.ax"; ay: "ek.ay"; az: "ek.az"; ba: "ek.ba"; bb: "ek.bb"; bc: "ek.bc"; bd: "ek.bd"; be: "ek.be"; bf: "ek.bf"; bg: "ek.bg"; bh: "ek.bh"; bi: "ek.bi"; bj: "ek.bj"; bk: "ek.bk"; bl: "ek.bl"; bm: "ek.bm"; bn: "ek.bn"; bo: "ek.bo"; bp: "ek.bp"; bq: "ek.bq"; br: "ek.br"; bs: "ek.bs"; bt: "ek.bt"; bu: "ek.bu"; bv: "ek.bv"; bw: "ek.bw"; bx: "ek.bx"; by: "ek.by"; bz: "ek.bz"; ca: "ek.ca"; cb: "ek.cb"; cc: "ek.cc"; cd: "ek.cd"; ce: "ek.ce"; cf: "ek.cf"; cg: "ek.cg"; ch: "ek.ch"; ci: "ek.ci"; cj: "ek.cj"; ck: "ek.ck"; cl: "ek.cl"; cm: "ek.cm"; cn: "ek.cn"; co: "ek.co"; cp: "ek.cp"; cq: "ek.cq"; cr: "ek.cr"; cs: "ek.cs"; ct: "ek.ct"; cu: "ek.cu"; cv: "ek.cv"; cw: "ek.cw"; cx: "ek.cx"; cy: "ek.cy"; cz: "ek.cz"; da: "ek.da"; db: "ek.db"; dc: "ek.dc"; dd: "ek.dd"; de: "ek.de"; df: "ek.df"; dg: "ek.dg"; dh: "ek.dh"; di: "ek.di"; dj: "ek.dj"; dk: "ek.dk"; dl: "ek.dl"; dm: "ek.dm"; dn: "ek.dn"; do: "ek.do"; dp: "ek.dp"; dq: "ek.dq"; dr: "ek.dr"; ds: "ek.ds"; dt: "ek.dt"; du: "ek.du"; dv: "ek.dv"; dw: "ek.dw"; dx: "ek.dx"; dy: "ek.dy"; dz: "ek.dz"; ea: "ek.ea"; eb: "ek.eb"; ec: "ek.ec"; ed: "ek.ed"; ee: "ek.ee"; ef: "ek.ef"; eg: "ek.eg"; eh: "ek.eh"; ei: "ek.ei"; ej: "ek.ej"; ek: "ek.ek"; el: "ek.el"; em: "ek.em"; en: "ek.en"; eo: "ek.eo"; ep: "ek.ep"; eq: "ek.eq"; er: "ek.er"; es: "ek.es"; et: "ek.et"; eu: "ek.eu"; ev: "ek.ev"; ew: "ek.ew"; ex: "ek.ex"; ey: "ek.ey"; ez: "ek.ez"; fa: "ek.fa"; fb: "ek.fb"; fc: "ek.fc"; fd: "ek.fd"; fe: "ek.fe"; ff: "ek.ff"; fg: "ek.fg"; fh: "ek.fh"; fi: "ek.fi"; fj: "ek.fj"; fk: "ek.fk"; fl: "ek.fl"; fm: "ek.fm"; fn: "ek.fn"; fo: "ek.fo"; fp: "ek.fp"; fq: "ek.fq"; fr: "ek.fr"; fs: "ek.fs"; ft: "ek.ft"; fu: "ek.fu"; fv: "ek.fv"; fw: "ek.fw"; fx: "ek.fx"; fy: "ek.fy"; fz: "ek.fz"; ga: "ek.ga"; gb: "ek.gb"; gc: "ek.gc"; gd: "ek.gd"; ge: "ek.ge"; gf: "ek.gf"; gg: "ek.gg"; gh: "ek.gh"; gi: "ek.gi"; gj: "ek.gj"; gk: "ek.gk"; gl: "ek.gl"; gm: "ek.gm"; gn: "ek.gn"; go: "ek.go"; gp: "ek.gp"; gq: "ek.gq"; gr: "ek.gr"; gs: "ek.gs"; gt: "ek.gt"; gu: "ek.gu"; gv: "ek.gv"; gw: "ek.gw"; gx: "ek.gx"; gy: "ek.gy"; gz: "ek.gz"; ha: "ek.ha"; hb: "ek.hb"; hc: "ek.hc"; hd: "ek.hd"; he: "ek.he"; hf: "ek.hf"; hg: "ek.hg"; hh: "ek.hh"; hi: "ek.hi"; hj: "ek.hj"; hk: "ek.hk"; hl: "ek.hl"; hm: "ek.hm"; hn: "ek.hn"; ho: "ek.ho"; hp: "ek.hp"; hq: "ek.hq"; hr: "ek.hr"; hs: "ek.hs"; ht: "ek.ht"; hu: "ek.hu"; hv: "ek.hv"; hw: "ek.hw"; hx: "ek.hx"; hy: "ek.hy"; hz: "ek.hz"; ia: "ek.ia"; ib: "ek.ib"; ic: "ek.ic"; id: "ek.id"; ie: "ek.ie"; if: "ek.if"; ig: "ek.ig"; ih: "ek.ih"; ii: "ek.ii"; ij: "ek.ij"; ik: "ek.ik"; il: "ek.il"; im: "ek.im"; in: "ek.in"; io: "ek.io"; ip: "ek.ip"; iq: "ek.iq"; ir: "ek.ir"; is: "ek.is"; it: "ek.it"; iu: "ek.iu"; iv: "ek.iv"; iw: "ek.iw"; ix: "ek.ix"; iy: "ek.iy"; iz: "ek.iz"; ja: "ek.ja"; jb: "ek.jb"; jc: "ek.jc"; jd: "ek.jd"; je: "ek.je"; jf: "ek.jf"; jg: "ek.jg"; jh: "ek.jh"; ji: "ek.ji"; jj: "ek.jj"; jk: "ek.jk"; jl: "ek.jl"; jm: "ek.jm"; jn: "ek.jn"; jo: "ek.jo"; jp: "ek.jp"; jq: "ek.jq"; jr: "ek.jr"; js: "ek.js"; jt: "ek.jt"; ju: "ek.ju"; jv: "ek.jv"; jw: "ek.jw"; jx: "ek.jx"; jy: "ek.jy"; jz: "ek.jz"; ka: "ek.ka"; kb: "ek.kb"; kc: "ek.kc"; kd: "ek.kd"; ke: "ek.ke"; kf: "ek.kf"; kg: "ek.kg"; kh: "ek.kh"; ki: "ek.ki"; kj: "ek.kj"; kk: "ek.kk"; kl: "ek.kl"; km: "ek.km"; kn: "ek.kn"; ko: "ek.ko"; kp: "ek.kp"; kq: "ek.kq"; kr: "ek.kr"; ks: "ek.ks"; kt: "ek.kt"; ku: "ek.ku"; kv: "ek.kv"; kw: "ek.kw"; kx: "ek.kx"; ky: "ek.ky"; kz: "ek.kz"; la: "ek.la"; lb: "ek.lb"; lc: "ek.lc"; ld: "ek.ld"; le: "ek.le"; lf: "ek.lf"; lg: "ek.lg"; lh: "ek.lh"; li: "ek.li"; lj: "ek.lj"; lk: "ek.lk"; ll: "ek.ll"; lm: "ek.lm"; ln: "ek.ln"; lo: "ek.lo"; lp: "ek.lp"; lq: "ek.lq"; lr: "ek.lr"; ls: "ek.ls"; lt: "ek.lt"; lu: "ek.lu"; lv: "ek.lv"; lw: "ek.lw"; lx: "ek.lx"; ly: "ek.ly"; lz: "ek.lz"; ma: "ek.ma"; mb: "ek.mb"; mc: "ek.mc"; md: "ek.md"; me: "ek.me"; mf: "ek.mf"; mg: "ek.mg"; mh: "ek.mh"; mi: "ek.mi"; mj: "ek.mj"; mk: "ek.mk"; ml: "ek.ml"; mm: "ek.mm"; mn: "ek.mn"; mo: "ek.mo"; mp: "ek.mp"; mq: "ek.mq"; mr: "ek.mr"; ms: "ek.ms"; mt: "ek.mt"; mu: "ek.mu"; mv: "ek.mv"; mw: "ek.mw"; mx: "ek.mx"; my: "ek.my"; mz: "ek.mz"; na: "ek.na"; nb: "ek.nb"; nc: "ek.nc"; nd: "ek.nd"; ne: "ek.ne"; nf: "ek.nf"; ng: "ek.ng"; nh: "ek.nh"; ni: "ek.ni"; nj: "ek.nj"; nk: "ek.nk"; nl: "ek.nl"; nm: "ek.nm"; nn: "ek.nn"; no: "ek.no"; np: "ek.np"; nq: "ek.nq"; nr: "ek.nr"; ns: "ek.ns"; nt: "ek.nt"; nu: "ek.nu"; nv: "ek.nv"; nw: "ek.nw"; nx: "ek.nx"; ny: "ek.ny"; nz: "ek.nz"; oa: "ek.oa"; ob: "ek.ob"; oc: "ek.oc"; od: "ek.od"; oe: "ek.oe"; of: "ek.of"; og: "ek.og"; oh: "ek.oh"; oi: "ek.oi"; oj: "ek.oj"; ok: "ek.ok"; ol: "ek.ol"; om: "ek.om"; on: "ek.on"; oo: "ek.oo"; op: "ek.op"; oq: "ek.oq"; or: "ek.or"; os: "ek.os"; ot: "ek.ot"; ou: "ek.ou"; ov: "ek.ov"; ow: "ek.ow"; ox: "ek.ox"; oy: "ek.oy"; oz: "ek.oz"; pa: "ek.pa"; pb: "ek.pb"; pc: "ek.pc"; pd: "ek.pd"; pe: "ek.pe"; pf: "ek.pf"; pg: "ek.pg"; ph: "ek.ph"; pi: "ek.pi"; pj: "ek.pj"; pk: "ek.pk"; pl: "ek.pl"; pm: "ek.pm"; pn: "ek.pn"; po: "ek.po"; pp: "ek.pp"; pq: "ek.pq"; pr: "ek.pr"; ps: "ek.ps"; pt: "ek.pt"; pu: "ek.pu"; pv: "ek.pv"; pw: "ek.pw"; px: "ek.px"; py: "ek.py"; pz: "ek.pz"; qa: "ek.qa"; qb: "ek.qb"; qc: "ek.qc"; qd: "ek.qd"; qe: "ek.qe"; qf: "ek.qf"; qg: "ek.qg"; qh: "ek.qh"; qi: "ek.qi"; qj: "ek.qj"; qk: "ek.qk"; ql: "ek.ql"; qm: "ek.qm"; qn: "ek.qn"; qo: "ek.qo"; qp: "ek.qp"; qq: "ek.qq"; qr: "ek.qr"; qs: "ek.qs"; qt: "ek.qt"; qu: "ek.qu"; qv: "ek.qv"; qw: "ek.qw"; qx: "ek.qx"; qy: "ek.qy"; qz: "ek.qz"; ra: "ek.ra"; rb: "ek.rb"; rc: "ek.rc"; rd: "ek.rd"; re: "ek.re"; rf: "ek.rf"; rg: "ek.rg"; rh: "ek.rh"; ri: "ek.ri"; rj: "ek.rj"; rk: "ek.rk"; rl: "ek.rl"; rm: "ek.rm"; rn: "ek.rn"; ro: "ek.ro"; rp: "ek.rp"; rq: "ek.rq"; rr: "ek.rr"; rs: "ek.rs"; rt: "ek.rt"; ru: "ek.ru"; rv: "ek.rv"; rw: "ek.rw"; rx: "ek.rx"; ry: "ek.ry"; rz: "ek.rz"; sa: "ek.sa"; sb: "ek.sb"; sc: "ek.sc"; sd: "ek.sd"; se: "ek.se"; sf: "ek.sf"; sg: "ek.sg"; sh: "ek.sh"; si: "ek.si"; sj: "ek.sj"; sk: "ek.sk"; sl: "ek.sl"; sm: "ek.sm"; sn: "ek.sn"; so: "ek.so"; sp: "ek.sp"; sq: "ek.sq"; sr: "ek.sr"; ss: "ek.ss"; st: "ek.st"; su: "ek.su"; sv: "ek.sv"; sw: "ek.sw"; sx: "ek.sx"; sy: "ek.sy"; sz: "ek.sz"; ta: "ek.ta"; tb: "ek.tb"; tc: "ek.tc"; td: "ek.td"; te: "ek.te"; tf: "ek.tf"; tg: "ek.tg"; th: "ek.th"; ti: "ek.ti"; tj: "ek.tj"; tk: "ek.tk"; tl: "ek.tl"; tm: "ek.tm"; tn: "ek.tn"; to: "ek.to"; tp: "ek.tp"; tq: "ek.tq"; tr: "ek.tr"; ts: "ek.ts"; tt: "ek.tt"; tu: "ek.tu"; tv: "ek.tv"; tw: "ek.tw"; tx: "ek.tx"; ty: "ek.ty"; tz: "ek.tz"; ua: "ek.ua"; ub: "ek.ub"; uc: "ek.uc"; ud: "ek.ud"; ue: "ek.ue"; uf: "ek.uf"; ug: "ek.ug"; uh: "ek.uh"; ui: "ek.ui"; uj: "ek.uj"; uk: "ek.uk"; ul: "ek.ul"; um: "ek.um"; un: "ek.un"; uo: "ek.uo"; up: "ek.up"; uq: "ek.uq"; ur: "ek.ur"; us: "ek.us"; ut: "ek.ut"; uu: "ek.uu"; uv: "ek.uv"; uw: "ek.uw"; ux: "ek.ux"; uy: "ek.uy"; uz: "ek.uz"; va: "ek.va"; vb: "ek.vb"; vc: "ek.vc"; vd: "ek.vd"; ve: "ek.ve"; vf: "ek.vf"; vg: "ek.vg"; vh: "ek.vh"; vi: "ek.vi"; vj: "ek.vj"; vk: "ek.vk"; vl: "ek.vl"; vm: "ek.vm"; vn: "ek.vn"; vo: "ek.vo"; vp: "ek.vp"; vq: "ek.vq"; vr: "ek.vr"; vs: "ek.vs"; vt: "ek.vt"; vu: "ek.vu"; vv: "ek.vv"; vw: "ek.vw"; vx: "ek.vx"; vy: "ek.vy"; vz: "ek.vz"; wa: "ek.wa"; wb: "ek.wb"; wc: "ek.wc"; wd: "ek.wd"; we: "ek.we"; wf: "ek.wf"; wg: "ek.wg"; wh: "ek.wh"; wi: "ek.wi"; wj: "ek.wj"; wk: "ek.wk"; wl: "ek.wl"; wm: "ek.wm"; wn: "ek.wn"; wo: "ek.wo"; wp: "ek.wp"; wq: "ek.wq"; wr: "ek.wr"; ws: "ek.ws"; wt: "ek.wt"; wu: "ek.wu"; wv: "ek.wv"; ww: "ek.ww"; wx: "ek.wx"; wy: "ek.wy"; wz: "ek.wz"; xa: "ek.xa"; xb: "ek.xb"; xc: "ek.xc"; xd: "ek.xd"; xe: "ek.xe"; xf: "ek.xf"; xg: "ek.xg"; xh: "ek.xh"; xi: "ek.xi"; xj: "ek.xj"; xk: "ek.xk"; xl: "ek.xl"; xm: "ek.xm"; xn: "ek.xn"; xo: "ek.xo"; xp: "ek.xp"; xq: "ek.xq"; xr: "ek.xr"; xs: "ek.xs"; xt: "ek.xt"; xu: "ek.xu"; xv: "ek.xv"; xw: "ek.xw"; xx: "ek.xx"; xy: "ek.xy"; xz: "ek.xz"; ya: "ek.ya"; yb: "ek.yb"; yc: "ek.yc"; yd: "ek.yd"; ye: "ek.ye"; yf: "ek.yf"; yg: "ek.yg"; yh: "ek.yh"; yi: "ek.yi"; yj: "ek.yj"; yk: "ek.yk"; yl: "ek.yl"; ym: "ek.ym"; yn: "ek.yn"; yo: "ek.yo"; yp: "ek.yp"; yq: "ek.yq"; yr: "ek.yr"; ys: "ek.ys"; yt: "ek.yt"; yu: "ek.yu"; yv: "ek.yv"; yw: "ek.yw"; yx: "ek.yx"; yy: "ek.yy"; yz: "ek.yz"; za: "ek.za"; zb: "ek.zb"; zc: "ek.zc"; zd: "ek.zd"; ze: "ek.ze"; zf: "ek.zf"; zg: "ek.zg"; zh: "ek.zh"; zi: "ek.zi"; zj: "ek.zj"; zk: "ek.zk"; zl: "ek.zl"; zm: "ek.zm"; zn: "ek.zn"; zo: "ek.zo"; zp: "ek.zp"; zq: "ek.zq"; zr: "ek.zr"; zs: "ek.zs"; zt: "ek.zt"; zu: "ek.zu"; zv: "ek.zv"; zw: "ek.zw"; zx: "ek.zx"; zy: "ek.zy"; zz: "ek.zz"; }; el: { aa: "el.aa"; ab: "el.ab"; ac: "el.ac"; ad: "el.ad"; ae: "el.ae"; af: "el.af"; ag: "el.ag"; ah: "el.ah"; ai: "el.ai"; aj: "el.aj"; ak: "el.ak"; al: "el.al"; am: "el.am"; an: "el.an"; ao: "el.ao"; ap: "el.ap"; aq: "el.aq"; ar: "el.ar"; as: "el.as"; at: "el.at"; au: "el.au"; av: "el.av"; aw: "el.aw"; ax: "el.ax"; ay: "el.ay"; az: "el.az"; ba: "el.ba"; bb: "el.bb"; bc: "el.bc"; bd: "el.bd"; be: "el.be"; bf: "el.bf"; bg: "el.bg"; bh: "el.bh"; bi: "el.bi"; bj: "el.bj"; bk: "el.bk"; bl: "el.bl"; bm: "el.bm"; bn: "el.bn"; bo: "el.bo"; bp: "el.bp"; bq: "el.bq"; br: "el.br"; bs: "el.bs"; bt: "el.bt"; bu: "el.bu"; bv: "el.bv"; bw: "el.bw"; bx: "el.bx"; by: "el.by"; bz: "el.bz"; ca: "el.ca"; cb: "el.cb"; cc: "el.cc"; cd: "el.cd"; ce: "el.ce"; cf: "el.cf"; cg: "el.cg"; ch: "el.ch"; ci: "el.ci"; cj: "el.cj"; ck: "el.ck"; cl: "el.cl"; cm: "el.cm"; cn: "el.cn"; co: "el.co"; cp: "el.cp"; cq: "el.cq"; cr: "el.cr"; cs: "el.cs"; ct: "el.ct"; cu: "el.cu"; cv: "el.cv"; cw: "el.cw"; cx: "el.cx"; cy: "el.cy"; cz: "el.cz"; da: "el.da"; db: "el.db"; dc: "el.dc"; dd: "el.dd"; de: "el.de"; df: "el.df"; dg: "el.dg"; dh: "el.dh"; di: "el.di"; dj: "el.dj"; dk: "el.dk"; dl: "el.dl"; dm: "el.dm"; dn: "el.dn"; do: "el.do"; dp: "el.dp"; dq: "el.dq"; dr: "el.dr"; ds: "el.ds"; dt: "el.dt"; du: "el.du"; dv: "el.dv"; dw: "el.dw"; dx: "el.dx"; dy: "el.dy"; dz: "el.dz"; ea: "el.ea"; eb: "el.eb"; ec: "el.ec"; ed: "el.ed"; ee: "el.ee"; ef: "el.ef"; eg: "el.eg"; eh: "el.eh"; ei: "el.ei"; ej: "el.ej"; ek: "el.ek"; el: "el.el"; em: "el.em"; en: "el.en"; eo: "el.eo"; ep: "el.ep"; eq: "el.eq"; er: "el.er"; es: "el.es"; et: "el.et"; eu: "el.eu"; ev: "el.ev"; ew: "el.ew"; ex: "el.ex"; ey: "el.ey"; ez: "el.ez"; fa: "el.fa"; fb: "el.fb"; fc: "el.fc"; fd: "el.fd"; fe: "el.fe"; ff: "el.ff"; fg: "el.fg"; fh: "el.fh"; fi: "el.fi"; fj: "el.fj"; fk: "el.fk"; fl: "el.fl"; fm: "el.fm"; fn: "el.fn"; fo: "el.fo"; fp: "el.fp"; fq: "el.fq"; fr: "el.fr"; fs: "el.fs"; ft: "el.ft"; fu: "el.fu"; fv: "el.fv"; fw: "el.fw"; fx: "el.fx"; fy: "el.fy"; fz: "el.fz"; ga: "el.ga"; gb: "el.gb"; gc: "el.gc"; gd: "el.gd"; ge: "el.ge"; gf: "el.gf"; gg: "el.gg"; gh: "el.gh"; gi: "el.gi"; gj: "el.gj"; gk: "el.gk"; gl: "el.gl"; gm: "el.gm"; gn: "el.gn"; go: "el.go"; gp: "el.gp"; gq: "el.gq"; gr: "el.gr"; gs: "el.gs"; gt: "el.gt"; gu: "el.gu"; gv: "el.gv"; gw: "el.gw"; gx: "el.gx"; gy: "el.gy"; gz: "el.gz"; ha: "el.ha"; hb: "el.hb"; hc: "el.hc"; hd: "el.hd"; he: "el.he"; hf: "el.hf"; hg: "el.hg"; hh: "el.hh"; hi: "el.hi"; hj: "el.hj"; hk: "el.hk"; hl: "el.hl"; hm: "el.hm"; hn: "el.hn"; ho: "el.ho"; hp: "el.hp"; hq: "el.hq"; hr: "el.hr"; hs: "el.hs"; ht: "el.ht"; hu: "el.hu"; hv: "el.hv"; hw: "el.hw"; hx: "el.hx"; hy: "el.hy"; hz: "el.hz"; ia: "el.ia"; ib: "el.ib"; ic: "el.ic"; id: "el.id"; ie: "el.ie"; if: "el.if"; ig: "el.ig"; ih: "el.ih"; ii: "el.ii"; ij: "el.ij"; ik: "el.ik"; il: "el.il"; im: "el.im"; in: "el.in"; io: "el.io"; ip: "el.ip"; iq: "el.iq"; ir: "el.ir"; is: "el.is"; it: "el.it"; iu: "el.iu"; iv: "el.iv"; iw: "el.iw"; ix: "el.ix"; iy: "el.iy"; iz: "el.iz"; ja: "el.ja"; jb: "el.jb"; jc: "el.jc"; jd: "el.jd"; je: "el.je"; jf: "el.jf"; jg: "el.jg"; jh: "el.jh"; ji: "el.ji"; jj: "el.jj"; jk: "el.jk"; jl: "el.jl"; jm: "el.jm"; jn: "el.jn"; jo: "el.jo"; jp: "el.jp"; jq: "el.jq"; jr: "el.jr"; js: "el.js"; jt: "el.jt"; ju: "el.ju"; jv: "el.jv"; jw: "el.jw"; jx: "el.jx"; jy: "el.jy"; jz: "el.jz"; ka: "el.ka"; kb: "el.kb"; kc: "el.kc"; kd: "el.kd"; ke: "el.ke"; kf: "el.kf"; kg: "el.kg"; kh: "el.kh"; ki: "el.ki"; kj: "el.kj"; kk: "el.kk"; kl: "el.kl"; km: "el.km"; kn: "el.kn"; ko: "el.ko"; kp: "el.kp"; kq: "el.kq"; kr: "el.kr"; ks: "el.ks"; kt: "el.kt"; ku: "el.ku"; kv: "el.kv"; kw: "el.kw"; kx: "el.kx"; ky: "el.ky"; kz: "el.kz"; la: "el.la"; lb: "el.lb"; lc: "el.lc"; ld: "el.ld"; le: "el.le"; lf: "el.lf"; lg: "el.lg"; lh: "el.lh"; li: "el.li"; lj: "el.lj"; lk: "el.lk"; ll: "el.ll"; lm: "el.lm"; ln: "el.ln"; lo: "el.lo"; lp: "el.lp"; lq: "el.lq"; lr: "el.lr"; ls: "el.ls"; lt: "el.lt"; lu: "el.lu"; lv: "el.lv"; lw: "el.lw"; lx: "el.lx"; ly: "el.ly"; lz: "el.lz"; ma: "el.ma"; mb: "el.mb"; mc: "el.mc"; md: "el.md"; me: "el.me"; mf: "el.mf"; mg: "el.mg"; mh: "el.mh"; mi: "el.mi"; mj: "el.mj"; mk: "el.mk"; ml: "el.ml"; mm: "el.mm"; mn: "el.mn"; mo: "el.mo"; mp: "el.mp"; mq: "el.mq"; mr: "el.mr"; ms: "el.ms"; mt: "el.mt"; mu: "el.mu"; mv: "el.mv"; mw: "el.mw"; mx: "el.mx"; my: "el.my"; mz: "el.mz"; na: "el.na"; nb: "el.nb"; nc: "el.nc"; nd: "el.nd"; ne: "el.ne"; nf: "el.nf"; ng: "el.ng"; nh: "el.nh"; ni: "el.ni"; nj: "el.nj"; nk: "el.nk"; nl: "el.nl"; nm: "el.nm"; nn: "el.nn"; no: "el.no"; np: "el.np"; nq: "el.nq"; nr: "el.nr"; ns: "el.ns"; nt: "el.nt"; nu: "el.nu"; nv: "el.nv"; nw: "el.nw"; nx: "el.nx"; ny: "el.ny"; nz: "el.nz"; oa: "el.oa"; ob: "el.ob"; oc: "el.oc"; od: "el.od"; oe: "el.oe"; of: "el.of"; og: "el.og"; oh: "el.oh"; oi: "el.oi"; oj: "el.oj"; ok: "el.ok"; ol: "el.ol"; om: "el.om"; on: "el.on"; oo: "el.oo"; op: "el.op"; oq: "el.oq"; or: "el.or"; os: "el.os"; ot: "el.ot"; ou: "el.ou"; ov: "el.ov"; ow: "el.ow"; ox: "el.ox"; oy: "el.oy"; oz: "el.oz"; pa: "el.pa"; pb: "el.pb"; pc: "el.pc"; pd: "el.pd"; pe: "el.pe"; pf: "el.pf"; pg: "el.pg"; ph: "el.ph"; pi: "el.pi"; pj: "el.pj"; pk: "el.pk"; pl: "el.pl"; pm: "el.pm"; pn: "el.pn"; po: "el.po"; pp: "el.pp"; pq: "el.pq"; pr: "el.pr"; ps: "el.ps"; pt: "el.pt"; pu: "el.pu"; pv: "el.pv"; pw: "el.pw"; px: "el.px"; py: "el.py"; pz: "el.pz"; qa: "el.qa"; qb: "el.qb"; qc: "el.qc"; qd: "el.qd"; qe: "el.qe"; qf: "el.qf"; qg: "el.qg"; qh: "el.qh"; qi: "el.qi"; qj: "el.qj"; qk: "el.qk"; ql: "el.ql"; qm: "el.qm"; qn: "el.qn"; qo: "el.qo"; qp: "el.qp"; qq: "el.qq"; qr: "el.qr"; qs: "el.qs"; qt: "el.qt"; qu: "el.qu"; qv: "el.qv"; qw: "el.qw"; qx: "el.qx"; qy: "el.qy"; qz: "el.qz"; ra: "el.ra"; rb: "el.rb"; rc: "el.rc"; rd: "el.rd"; re: "el.re"; rf: "el.rf"; rg: "el.rg"; rh: "el.rh"; ri: "el.ri"; rj: "el.rj"; rk: "el.rk"; rl: "el.rl"; rm: "el.rm"; rn: "el.rn"; ro: "el.ro"; rp: "el.rp"; rq: "el.rq"; rr: "el.rr"; rs: "el.rs"; rt: "el.rt"; ru: "el.ru"; rv: "el.rv"; rw: "el.rw"; rx: "el.rx"; ry: "el.ry"; rz: "el.rz"; sa: "el.sa"; sb: "el.sb"; sc: "el.sc"; sd: "el.sd"; se: "el.se"; sf: "el.sf"; sg: "el.sg"; sh: "el.sh"; si: "el.si"; sj: "el.sj"; sk: "el.sk"; sl: "el.sl"; sm: "el.sm"; sn: "el.sn"; so: "el.so"; sp: "el.sp"; sq: "el.sq"; sr: "el.sr"; ss: "el.ss"; st: "el.st"; su: "el.su"; sv: "el.sv"; sw: "el.sw"; sx: "el.sx"; sy: "el.sy"; sz: "el.sz"; ta: "el.ta"; tb: "el.tb"; tc: "el.tc"; td: "el.td"; te: "el.te"; tf: "el.tf"; tg: "el.tg"; th: "el.th"; ti: "el.ti"; tj: "el.tj"; tk: "el.tk"; tl: "el.tl"; tm: "el.tm"; tn: "el.tn"; to: "el.to"; tp: "el.tp"; tq: "el.tq"; tr: "el.tr"; ts: "el.ts"; tt: "el.tt"; tu: "el.tu"; tv: "el.tv"; tw: "el.tw"; tx: "el.tx"; ty: "el.ty"; tz: "el.tz"; ua: "el.ua"; ub: "el.ub"; uc: "el.uc"; ud: "el.ud"; ue: "el.ue"; uf: "el.uf"; ug: "el.ug"; uh: "el.uh"; ui: "el.ui"; uj: "el.uj"; uk: "el.uk"; ul: "el.ul"; um: "el.um"; un: "el.un"; uo: "el.uo"; up: "el.up"; uq: "el.uq"; ur: "el.ur"; us: "el.us"; ut: "el.ut"; uu: "el.uu"; uv: "el.uv"; uw: "el.uw"; ux: "el.ux"; uy: "el.uy"; uz: "el.uz"; va: "el.va"; vb: "el.vb"; vc: "el.vc"; vd: "el.vd"; ve: "el.ve"; vf: "el.vf"; vg: "el.vg"; vh: "el.vh"; vi: "el.vi"; vj: "el.vj"; vk: "el.vk"; vl: "el.vl"; vm: "el.vm"; vn: "el.vn"; vo: "el.vo"; vp: "el.vp"; vq: "el.vq"; vr: "el.vr"; vs: "el.vs"; vt: "el.vt"; vu: "el.vu"; vv: "el.vv"; vw: "el.vw"; vx: "el.vx"; vy: "el.vy"; vz: "el.vz"; wa: "el.wa"; wb: "el.wb"; wc: "el.wc"; wd: "el.wd"; we: "el.we"; wf: "el.wf"; wg: "el.wg"; wh: "el.wh"; wi: "el.wi"; wj: "el.wj"; wk: "el.wk"; wl: "el.wl"; wm: "el.wm"; wn: "el.wn"; wo: "el.wo"; wp: "el.wp"; wq: "el.wq"; wr: "el.wr"; ws: "el.ws"; wt: "el.wt"; wu: "el.wu"; wv: "el.wv"; ww: "el.ww"; wx: "el.wx"; wy: "el.wy"; wz: "el.wz"; xa: "el.xa"; xb: "el.xb"; xc: "el.xc"; xd: "el.xd"; xe: "el.xe"; xf: "el.xf"; xg: "el.xg"; xh: "el.xh"; xi: "el.xi"; xj: "el.xj"; xk: "el.xk"; xl: "el.xl"; xm: "el.xm"; xn: "el.xn"; xo: "el.xo"; xp: "el.xp"; xq: "el.xq"; xr: "el.xr"; xs: "el.xs"; xt: "el.xt"; xu: "el.xu"; xv: "el.xv"; xw: "el.xw"; xx: "el.xx"; xy: "el.xy"; xz: "el.xz"; ya: "el.ya"; yb: "el.yb"; yc: "el.yc"; yd: "el.yd"; ye: "el.ye"; yf: "el.yf"; yg: "el.yg"; yh: "el.yh"; yi: "el.yi"; yj: "el.yj"; yk: "el.yk"; yl: "el.yl"; ym: "el.ym"; yn: "el.yn"; yo: "el.yo"; yp: "el.yp"; yq: "el.yq"; yr: "el.yr"; ys: "el.ys"; yt: "el.yt"; yu: "el.yu"; yv: "el.yv"; yw: "el.yw"; yx: "el.yx"; yy: "el.yy"; yz: "el.yz"; za: "el.za"; zb: "el.zb"; zc: "el.zc"; zd: "el.zd"; ze: "el.ze"; zf: "el.zf"; zg: "el.zg"; zh: "el.zh"; zi: "el.zi"; zj: "el.zj"; zk: "el.zk"; zl: "el.zl"; zm: "el.zm"; zn: "el.zn"; zo: "el.zo"; zp: "el.zp"; zq: "el.zq"; zr: "el.zr"; zs: "el.zs"; zt: "el.zt"; zu: "el.zu"; zv: "el.zv"; zw: "el.zw"; zx: "el.zx"; zy: "el.zy"; zz: "el.zz"; }; em: { aa: "em.aa"; ab: "em.ab"; ac: "em.ac"; ad: "em.ad"; ae: "em.ae"; af: "em.af"; ag: "em.ag"; ah: "em.ah"; ai: "em.ai"; aj: "em.aj"; ak: "em.ak"; al: "em.al"; am: "em.am"; an: "em.an"; ao: "em.ao"; ap: "em.ap"; aq: "em.aq"; ar: "em.ar"; as: "em.as"; at: "em.at"; au: "em.au"; av: "em.av"; aw: "em.aw"; ax: "em.ax"; ay: "em.ay"; az: "em.az"; ba: "em.ba"; bb: "em.bb"; bc: "em.bc"; bd: "em.bd"; be: "em.be"; bf: "em.bf"; bg: "em.bg"; bh: "em.bh"; bi: "em.bi"; bj: "em.bj"; bk: "em.bk"; bl: "em.bl"; bm: "em.bm"; bn: "em.bn"; bo: "em.bo"; bp: "em.bp"; bq: "em.bq"; br: "em.br"; bs: "em.bs"; bt: "em.bt"; bu: "em.bu"; bv: "em.bv"; bw: "em.bw"; bx: "em.bx"; by: "em.by"; bz: "em.bz"; ca: "em.ca"; cb: "em.cb"; cc: "em.cc"; cd: "em.cd"; ce: "em.ce"; cf: "em.cf"; cg: "em.cg"; ch: "em.ch"; ci: "em.ci"; cj: "em.cj"; ck: "em.ck"; cl: "em.cl"; cm: "em.cm"; cn: "em.cn"; co: "em.co"; cp: "em.cp"; cq: "em.cq"; cr: "em.cr"; cs: "em.cs"; ct: "em.ct"; cu: "em.cu"; cv: "em.cv"; cw: "em.cw"; cx: "em.cx"; cy: "em.cy"; cz: "em.cz"; da: "em.da"; db: "em.db"; dc: "em.dc"; dd: "em.dd"; de: "em.de"; df: "em.df"; dg: "em.dg"; dh: "em.dh"; di: "em.di"; dj: "em.dj"; dk: "em.dk"; dl: "em.dl"; dm: "em.dm"; dn: "em.dn"; do: "em.do"; dp: "em.dp"; dq: "em.dq"; dr: "em.dr"; ds: "em.ds"; dt: "em.dt"; du: "em.du"; dv: "em.dv"; dw: "em.dw"; dx: "em.dx"; dy: "em.dy"; dz: "em.dz"; ea: "em.ea"; eb: "em.eb"; ec: "em.ec"; ed: "em.ed"; ee: "em.ee"; ef: "em.ef"; eg: "em.eg"; eh: "em.eh"; ei: "em.ei"; ej: "em.ej"; ek: "em.ek"; el: "em.el"; em: "em.em"; en: "em.en"; eo: "em.eo"; ep: "em.ep"; eq: "em.eq"; er: "em.er"; es: "em.es"; et: "em.et"; eu: "em.eu"; ev: "em.ev"; ew: "em.ew"; ex: "em.ex"; ey: "em.ey"; ez: "em.ez"; fa: "em.fa"; fb: "em.fb"; fc: "em.fc"; fd: "em.fd"; fe: "em.fe"; ff: "em.ff"; fg: "em.fg"; fh: "em.fh"; fi: "em.fi"; fj: "em.fj"; fk: "em.fk"; fl: "em.fl"; fm: "em.fm"; fn: "em.fn"; fo: "em.fo"; fp: "em.fp"; fq: "em.fq"; fr: "em.fr"; fs: "em.fs"; ft: "em.ft"; fu: "em.fu"; fv: "em.fv"; fw: "em.fw"; fx: "em.fx"; fy: "em.fy"; fz: "em.fz"; ga: "em.ga"; gb: "em.gb"; gc: "em.gc"; gd: "em.gd"; ge: "em.ge"; gf: "em.gf"; gg: "em.gg"; gh: "em.gh"; gi: "em.gi"; gj: "em.gj"; gk: "em.gk"; gl: "em.gl"; gm: "em.gm"; gn: "em.gn"; go: "em.go"; gp: "em.gp"; gq: "em.gq"; gr: "em.gr"; gs: "em.gs"; gt: "em.gt"; gu: "em.gu"; gv: "em.gv"; gw: "em.gw"; gx: "em.gx"; gy: "em.gy"; gz: "em.gz"; ha: "em.ha"; hb: "em.hb"; hc: "em.hc"; hd: "em.hd"; he: "em.he"; hf: "em.hf"; hg: "em.hg"; hh: "em.hh"; hi: "em.hi"; hj: "em.hj"; hk: "em.hk"; hl: "em.hl"; hm: "em.hm"; hn: "em.hn"; ho: "em.ho"; hp: "em.hp"; hq: "em.hq"; hr: "em.hr"; hs: "em.hs"; ht: "em.ht"; hu: "em.hu"; hv: "em.hv"; hw: "em.hw"; hx: "em.hx"; hy: "em.hy"; hz: "em.hz"; ia: "em.ia"; ib: "em.ib"; ic: "em.ic"; id: "em.id"; ie: "em.ie"; if: "em.if"; ig: "em.ig"; ih: "em.ih"; ii: "em.ii"; ij: "em.ij"; ik: "em.ik"; il: "em.il"; im: "em.im"; in: "em.in"; io: "em.io"; ip: "em.ip"; iq: "em.iq"; ir: "em.ir"; is: "em.is"; it: "em.it"; iu: "em.iu"; iv: "em.iv"; iw: "em.iw"; ix: "em.ix"; iy: "em.iy"; iz: "em.iz"; ja: "em.ja"; jb: "em.jb"; jc: "em.jc"; jd: "em.jd"; je: "em.je"; jf: "em.jf"; jg: "em.jg"; jh: "em.jh"; ji: "em.ji"; jj: "em.jj"; jk: "em.jk"; jl: "em.jl"; jm: "em.jm"; jn: "em.jn"; jo: "em.jo"; jp: "em.jp"; jq: "em.jq"; jr: "em.jr"; js: "em.js"; jt: "em.jt"; ju: "em.ju"; jv: "em.jv"; jw: "em.jw"; jx: "em.jx"; jy: "em.jy"; jz: "em.jz"; ka: "em.ka"; kb: "em.kb"; kc: "em.kc"; kd: "em.kd"; ke: "em.ke"; kf: "em.kf"; kg: "em.kg"; kh: "em.kh"; ki: "em.ki"; kj: "em.kj"; kk: "em.kk"; kl: "em.kl"; km: "em.km"; kn: "em.kn"; ko: "em.ko"; kp: "em.kp"; kq: "em.kq"; kr: "em.kr"; ks: "em.ks"; kt: "em.kt"; ku: "em.ku"; kv: "em.kv"; kw: "em.kw"; kx: "em.kx"; ky: "em.ky"; kz: "em.kz"; la: "em.la"; lb: "em.lb"; lc: "em.lc"; ld: "em.ld"; le: "em.le"; lf: "em.lf"; lg: "em.lg"; lh: "em.lh"; li: "em.li"; lj: "em.lj"; lk: "em.lk"; ll: "em.ll"; lm: "em.lm"; ln: "em.ln"; lo: "em.lo"; lp: "em.lp"; lq: "em.lq"; lr: "em.lr"; ls: "em.ls"; lt: "em.lt"; lu: "em.lu"; lv: "em.lv"; lw: "em.lw"; lx: "em.lx"; ly: "em.ly"; lz: "em.lz"; ma: "em.ma"; mb: "em.mb"; mc: "em.mc"; md: "em.md"; me: "em.me"; mf: "em.mf"; mg: "em.mg"; mh: "em.mh"; mi: "em.mi"; mj: "em.mj"; mk: "em.mk"; ml: "em.ml"; mm: "em.mm"; mn: "em.mn"; mo: "em.mo"; mp: "em.mp"; mq: "em.mq"; mr: "em.mr"; ms: "em.ms"; mt: "em.mt"; mu: "em.mu"; mv: "em.mv"; mw: "em.mw"; mx: "em.mx"; my: "em.my"; mz: "em.mz"; na: "em.na"; nb: "em.nb"; nc: "em.nc"; nd: "em.nd"; ne: "em.ne"; nf: "em.nf"; ng: "em.ng"; nh: "em.nh"; ni: "em.ni"; nj: "em.nj"; nk: "em.nk"; nl: "em.nl"; nm: "em.nm"; nn: "em.nn"; no: "em.no"; np: "em.np"; nq: "em.nq"; nr: "em.nr"; ns: "em.ns"; nt: "em.nt"; nu: "em.nu"; nv: "em.nv"; nw: "em.nw"; nx: "em.nx"; ny: "em.ny"; nz: "em.nz"; oa: "em.oa"; ob: "em.ob"; oc: "em.oc"; od: "em.od"; oe: "em.oe"; of: "em.of"; og: "em.og"; oh: "em.oh"; oi: "em.oi"; oj: "em.oj"; ok: "em.ok"; ol: "em.ol"; om: "em.om"; on: "em.on"; oo: "em.oo"; op: "em.op"; oq: "em.oq"; or: "em.or"; os: "em.os"; ot: "em.ot"; ou: "em.ou"; ov: "em.ov"; ow: "em.ow"; ox: "em.ox"; oy: "em.oy"; oz: "em.oz"; pa: "em.pa"; pb: "em.pb"; pc: "em.pc"; pd: "em.pd"; pe: "em.pe"; pf: "em.pf"; pg: "em.pg"; ph: "em.ph"; pi: "em.pi"; pj: "em.pj"; pk: "em.pk"; pl: "em.pl"; pm: "em.pm"; pn: "em.pn"; po: "em.po"; pp: "em.pp"; pq: "em.pq"; pr: "em.pr"; ps: "em.ps"; pt: "em.pt"; pu: "em.pu"; pv: "em.pv"; pw: "em.pw"; px: "em.px"; py: "em.py"; pz: "em.pz"; qa: "em.qa"; qb: "em.qb"; qc: "em.qc"; qd: "em.qd"; qe: "em.qe"; qf: "em.qf"; qg: "em.qg"; qh: "em.qh"; qi: "em.qi"; qj: "em.qj"; qk: "em.qk"; ql: "em.ql"; qm: "em.qm"; qn: "em.qn"; qo: "em.qo"; qp: "em.qp"; qq: "em.qq"; qr: "em.qr"; qs: "em.qs"; qt: "em.qt"; qu: "em.qu"; qv: "em.qv"; qw: "em.qw"; qx: "em.qx"; qy: "em.qy"; qz: "em.qz"; ra: "em.ra"; rb: "em.rb"; rc: "em.rc"; rd: "em.rd"; re: "em.re"; rf: "em.rf"; rg: "em.rg"; rh: "em.rh"; ri: "em.ri"; rj: "em.rj"; rk: "em.rk"; rl: "em.rl"; rm: "em.rm"; rn: "em.rn"; ro: "em.ro"; rp: "em.rp"; rq: "em.rq"; rr: "em.rr"; rs: "em.rs"; rt: "em.rt"; ru: "em.ru"; rv: "em.rv"; rw: "em.rw"; rx: "em.rx"; ry: "em.ry"; rz: "em.rz"; sa: "em.sa"; sb: "em.sb"; sc: "em.sc"; sd: "em.sd"; se: "em.se"; sf: "em.sf"; sg: "em.sg"; sh: "em.sh"; si: "em.si"; sj: "em.sj"; sk: "em.sk"; sl: "em.sl"; sm: "em.sm"; sn: "em.sn"; so: "em.so"; sp: "em.sp"; sq: "em.sq"; sr: "em.sr"; ss: "em.ss"; st: "em.st"; su: "em.su"; sv: "em.sv"; sw: "em.sw"; sx: "em.sx"; sy: "em.sy"; sz: "em.sz"; ta: "em.ta"; tb: "em.tb"; tc: "em.tc"; td: "em.td"; te: "em.te"; tf: "em.tf"; tg: "em.tg"; th: "em.th"; ti: "em.ti"; tj: "em.tj"; tk: "em.tk"; tl: "em.tl"; tm: "em.tm"; tn: "em.tn"; to: "em.to"; tp: "em.tp"; tq: "em.tq"; tr: "em.tr"; ts: "em.ts"; tt: "em.tt"; tu: "em.tu"; tv: "em.tv"; tw: "em.tw"; tx: "em.tx"; ty: "em.ty"; tz: "em.tz"; ua: "em.ua"; ub: "em.ub"; uc: "em.uc"; ud: "em.ud"; ue: "em.ue"; uf: "em.uf"; ug: "em.ug"; uh: "em.uh"; ui: "em.ui"; uj: "em.uj"; uk: "em.uk"; ul: "em.ul"; um: "em.um"; un: "em.un"; uo: "em.uo"; up: "em.up"; uq: "em.uq"; ur: "em.ur"; us: "em.us"; ut: "em.ut"; uu: "em.uu"; uv: "em.uv"; uw: "em.uw"; ux: "em.ux"; uy: "em.uy"; uz: "em.uz"; va: "em.va"; vb: "em.vb"; vc: "em.vc"; vd: "em.vd"; ve: "em.ve"; vf: "em.vf"; vg: "em.vg"; vh: "em.vh"; vi: "em.vi"; vj: "em.vj"; vk: "em.vk"; vl: "em.vl"; vm: "em.vm"; vn: "em.vn"; vo: "em.vo"; vp: "em.vp"; vq: "em.vq"; vr: "em.vr"; vs: "em.vs"; vt: "em.vt"; vu: "em.vu"; vv: "em.vv"; vw: "em.vw"; vx: "em.vx"; vy: "em.vy"; vz: "em.vz"; wa: "em.wa"; wb: "em.wb"; wc: "em.wc"; wd: "em.wd"; we: "em.we"; wf: "em.wf"; wg: "em.wg"; wh: "em.wh"; wi: "em.wi"; wj: "em.wj"; wk: "em.wk"; wl: "em.wl"; wm: "em.wm"; wn: "em.wn"; wo: "em.wo"; wp: "em.wp"; wq: "em.wq"; wr: "em.wr"; ws: "em.ws"; wt: "em.wt"; wu: "em.wu"; wv: "em.wv"; ww: "em.ww"; wx: "em.wx"; wy: "em.wy"; wz: "em.wz"; xa: "em.xa"; xb: "em.xb"; xc: "em.xc"; xd: "em.xd"; xe: "em.xe"; xf: "em.xf"; xg: "em.xg"; xh: "em.xh"; xi: "em.xi"; xj: "em.xj"; xk: "em.xk"; xl: "em.xl"; xm: "em.xm"; xn: "em.xn"; xo: "em.xo"; xp: "em.xp"; xq: "em.xq"; xr: "em.xr"; xs: "em.xs"; xt: "em.xt"; xu: "em.xu"; xv: "em.xv"; xw: "em.xw"; xx: "em.xx"; xy: "em.xy"; xz: "em.xz"; ya: "em.ya"; yb: "em.yb"; yc: "em.yc"; yd: "em.yd"; ye: "em.ye"; yf: "em.yf"; yg: "em.yg"; yh: "em.yh"; yi: "em.yi"; yj: "em.yj"; yk: "em.yk"; yl: "em.yl"; ym: "em.ym"; yn: "em.yn"; yo: "em.yo"; yp: "em.yp"; yq: "em.yq"; yr: "em.yr"; ys: "em.ys"; yt: "em.yt"; yu: "em.yu"; yv: "em.yv"; yw: "em.yw"; yx: "em.yx"; yy: "em.yy"; yz: "em.yz"; za: "em.za"; zb: "em.zb"; zc: "em.zc"; zd: "em.zd"; ze: "em.ze"; zf: "em.zf"; zg: "em.zg"; zh: "em.zh"; zi: "em.zi"; zj: "em.zj"; zk: "em.zk"; zl: "em.zl"; zm: "em.zm"; zn: "em.zn"; zo: "em.zo"; zp: "em.zp"; zq: "em.zq"; zr: "em.zr"; zs: "em.zs"; zt: "em.zt"; zu: "em.zu"; zv: "em.zv"; zw: "em.zw"; zx: "em.zx"; zy: "em.zy"; zz: "em.zz"; }; en: { aa: "en.aa"; ab: "en.ab"; ac: "en.ac"; ad: "en.ad"; ae: "en.ae"; af: "en.af"; ag: "en.ag"; ah: "en.ah"; ai: "en.ai"; aj: "en.aj"; ak: "en.ak"; al: "en.al"; am: "en.am"; an: "en.an"; ao: "en.ao"; ap: "en.ap"; aq: "en.aq"; ar: "en.ar"; as: "en.as"; at: "en.at"; au: "en.au"; av: "en.av"; aw: "en.aw"; ax: "en.ax"; ay: "en.ay"; az: "en.az"; ba: "en.ba"; bb: "en.bb"; bc: "en.bc"; bd: "en.bd"; be: "en.be"; bf: "en.bf"; bg: "en.bg"; bh: "en.bh"; bi: "en.bi"; bj: "en.bj"; bk: "en.bk"; bl: "en.bl"; bm: "en.bm"; bn: "en.bn"; bo: "en.bo"; bp: "en.bp"; bq: "en.bq"; br: "en.br"; bs: "en.bs"; bt: "en.bt"; bu: "en.bu"; bv: "en.bv"; bw: "en.bw"; bx: "en.bx"; by: "en.by"; bz: "en.bz"; ca: "en.ca"; cb: "en.cb"; cc: "en.cc"; cd: "en.cd"; ce: "en.ce"; cf: "en.cf"; cg: "en.cg"; ch: "en.ch"; ci: "en.ci"; cj: "en.cj"; ck: "en.ck"; cl: "en.cl"; cm: "en.cm"; cn: "en.cn"; co: "en.co"; cp: "en.cp"; cq: "en.cq"; cr: "en.cr"; cs: "en.cs"; ct: "en.ct"; cu: "en.cu"; cv: "en.cv"; cw: "en.cw"; cx: "en.cx"; cy: "en.cy"; cz: "en.cz"; da: "en.da"; db: "en.db"; dc: "en.dc"; dd: "en.dd"; de: "en.de"; df: "en.df"; dg: "en.dg"; dh: "en.dh"; di: "en.di"; dj: "en.dj"; dk: "en.dk"; dl: "en.dl"; dm: "en.dm"; dn: "en.dn"; do: "en.do"; dp: "en.dp"; dq: "en.dq"; dr: "en.dr"; ds: "en.ds"; dt: "en.dt"; du: "en.du"; dv: "en.dv"; dw: "en.dw"; dx: "en.dx"; dy: "en.dy"; dz: "en.dz"; ea: "en.ea"; eb: "en.eb"; ec: "en.ec"; ed: "en.ed"; ee: "en.ee"; ef: "en.ef"; eg: "en.eg"; eh: "en.eh"; ei: "en.ei"; ej: "en.ej"; ek: "en.ek"; el: "en.el"; em: "en.em"; en: "en.en"; eo: "en.eo"; ep: "en.ep"; eq: "en.eq"; er: "en.er"; es: "en.es"; et: "en.et"; eu: "en.eu"; ev: "en.ev"; ew: "en.ew"; ex: "en.ex"; ey: "en.ey"; ez: "en.ez"; fa: "en.fa"; fb: "en.fb"; fc: "en.fc"; fd: "en.fd"; fe: "en.fe"; ff: "en.ff"; fg: "en.fg"; fh: "en.fh"; fi: "en.fi"; fj: "en.fj"; fk: "en.fk"; fl: "en.fl"; fm: "en.fm"; fn: "en.fn"; fo: "en.fo"; fp: "en.fp"; fq: "en.fq"; fr: "en.fr"; fs: "en.fs"; ft: "en.ft"; fu: "en.fu"; fv: "en.fv"; fw: "en.fw"; fx: "en.fx"; fy: "en.fy"; fz: "en.fz"; ga: "en.ga"; gb: "en.gb"; gc: "en.gc"; gd: "en.gd"; ge: "en.ge"; gf: "en.gf"; gg: "en.gg"; gh: "en.gh"; gi: "en.gi"; gj: "en.gj"; gk: "en.gk"; gl: "en.gl"; gm: "en.gm"; gn: "en.gn"; go: "en.go"; gp: "en.gp"; gq: "en.gq"; gr: "en.gr"; gs: "en.gs"; gt: "en.gt"; gu: "en.gu"; gv: "en.gv"; gw: "en.gw"; gx: "en.gx"; gy: "en.gy"; gz: "en.gz"; ha: "en.ha"; hb: "en.hb"; hc: "en.hc"; hd: "en.hd"; he: "en.he"; hf: "en.hf"; hg: "en.hg"; hh: "en.hh"; hi: "en.hi"; hj: "en.hj"; hk: "en.hk"; hl: "en.hl"; hm: "en.hm"; hn: "en.hn"; ho: "en.ho"; hp: "en.hp"; hq: "en.hq"; hr: "en.hr"; hs: "en.hs"; ht: "en.ht"; hu: "en.hu"; hv: "en.hv"; hw: "en.hw"; hx: "en.hx"; hy: "en.hy"; hz: "en.hz"; ia: "en.ia"; ib: "en.ib"; ic: "en.ic"; id: "en.id"; ie: "en.ie"; if: "en.if"; ig: "en.ig"; ih: "en.ih"; ii: "en.ii"; ij: "en.ij"; ik: "en.ik"; il: "en.il"; im: "en.im"; in: "en.in"; io: "en.io"; ip: "en.ip"; iq: "en.iq"; ir: "en.ir"; is: "en.is"; it: "en.it"; iu: "en.iu"; iv: "en.iv"; iw: "en.iw"; ix: "en.ix"; iy: "en.iy"; iz: "en.iz"; ja: "en.ja"; jb: "en.jb"; jc: "en.jc"; jd: "en.jd"; je: "en.je"; jf: "en.jf"; jg: "en.jg"; jh: "en.jh"; ji: "en.ji"; jj: "en.jj"; jk: "en.jk"; jl: "en.jl"; jm: "en.jm"; jn: "en.jn"; jo: "en.jo"; jp: "en.jp"; jq: "en.jq"; jr: "en.jr"; js: "en.js"; jt: "en.jt"; ju: "en.ju"; jv: "en.jv"; jw: "en.jw"; jx: "en.jx"; jy: "en.jy"; jz: "en.jz"; ka: "en.ka"; kb: "en.kb"; kc: "en.kc"; kd: "en.kd"; ke: "en.ke"; kf: "en.kf"; kg: "en.kg"; kh: "en.kh"; ki: "en.ki"; kj: "en.kj"; kk: "en.kk"; kl: "en.kl"; km: "en.km"; kn: "en.kn"; ko: "en.ko"; kp: "en.kp"; kq: "en.kq"; kr: "en.kr"; ks: "en.ks"; kt: "en.kt"; ku: "en.ku"; kv: "en.kv"; kw: "en.kw"; kx: "en.kx"; ky: "en.ky"; kz: "en.kz"; la: "en.la"; lb: "en.lb"; lc: "en.lc"; ld: "en.ld"; le: "en.le"; lf: "en.lf"; lg: "en.lg"; lh: "en.lh"; li: "en.li"; lj: "en.lj"; lk: "en.lk"; ll: "en.ll"; lm: "en.lm"; ln: "en.ln"; lo: "en.lo"; lp: "en.lp"; lq: "en.lq"; lr: "en.lr"; ls: "en.ls"; lt: "en.lt"; lu: "en.lu"; lv: "en.lv"; lw: "en.lw"; lx: "en.lx"; ly: "en.ly"; lz: "en.lz"; ma: "en.ma"; mb: "en.mb"; mc: "en.mc"; md: "en.md"; me: "en.me"; mf: "en.mf"; mg: "en.mg"; mh: "en.mh"; mi: "en.mi"; mj: "en.mj"; mk: "en.mk"; ml: "en.ml"; mm: "en.mm"; mn: "en.mn"; mo: "en.mo"; mp: "en.mp"; mq: "en.mq"; mr: "en.mr"; ms: "en.ms"; mt: "en.mt"; mu: "en.mu"; mv: "en.mv"; mw: "en.mw"; mx: "en.mx"; my: "en.my"; mz: "en.mz"; na: "en.na"; nb: "en.nb"; nc: "en.nc"; nd: "en.nd"; ne: "en.ne"; nf: "en.nf"; ng: "en.ng"; nh: "en.nh"; ni: "en.ni"; nj: "en.nj"; nk: "en.nk"; nl: "en.nl"; nm: "en.nm"; nn: "en.nn"; no: "en.no"; np: "en.np"; nq: "en.nq"; nr: "en.nr"; ns: "en.ns"; nt: "en.nt"; nu: "en.nu"; nv: "en.nv"; nw: "en.nw"; nx: "en.nx"; ny: "en.ny"; nz: "en.nz"; oa: "en.oa"; ob: "en.ob"; oc: "en.oc"; od: "en.od"; oe: "en.oe"; of: "en.of"; og: "en.og"; oh: "en.oh"; oi: "en.oi"; oj: "en.oj"; ok: "en.ok"; ol: "en.ol"; om: "en.om"; on: "en.on"; oo: "en.oo"; op: "en.op"; oq: "en.oq"; or: "en.or"; os: "en.os"; ot: "en.ot"; ou: "en.ou"; ov: "en.ov"; ow: "en.ow"; ox: "en.ox"; oy: "en.oy"; oz: "en.oz"; pa: "en.pa"; pb: "en.pb"; pc: "en.pc"; pd: "en.pd"; pe: "en.pe"; pf: "en.pf"; pg: "en.pg"; ph: "en.ph"; pi: "en.pi"; pj: "en.pj"; pk: "en.pk"; pl: "en.pl"; pm: "en.pm"; pn: "en.pn"; po: "en.po"; pp: "en.pp"; pq: "en.pq"; pr: "en.pr"; ps: "en.ps"; pt: "en.pt"; pu: "en.pu"; pv: "en.pv"; pw: "en.pw"; px: "en.px"; py: "en.py"; pz: "en.pz"; qa: "en.qa"; qb: "en.qb"; qc: "en.qc"; qd: "en.qd"; qe: "en.qe"; qf: "en.qf"; qg: "en.qg"; qh: "en.qh"; qi: "en.qi"; qj: "en.qj"; qk: "en.qk"; ql: "en.ql"; qm: "en.qm"; qn: "en.qn"; qo: "en.qo"; qp: "en.qp"; qq: "en.qq"; qr: "en.qr"; qs: "en.qs"; qt: "en.qt"; qu: "en.qu"; qv: "en.qv"; qw: "en.qw"; qx: "en.qx"; qy: "en.qy"; qz: "en.qz"; ra: "en.ra"; rb: "en.rb"; rc: "en.rc"; rd: "en.rd"; re: "en.re"; rf: "en.rf"; rg: "en.rg"; rh: "en.rh"; ri: "en.ri"; rj: "en.rj"; rk: "en.rk"; rl: "en.rl"; rm: "en.rm"; rn: "en.rn"; ro: "en.ro"; rp: "en.rp"; rq: "en.rq"; rr: "en.rr"; rs: "en.rs"; rt: "en.rt"; ru: "en.ru"; rv: "en.rv"; rw: "en.rw"; rx: "en.rx"; ry: "en.ry"; rz: "en.rz"; sa: "en.sa"; sb: "en.sb"; sc: "en.sc"; sd: "en.sd"; se: "en.se"; sf: "en.sf"; sg: "en.sg"; sh: "en.sh"; si: "en.si"; sj: "en.sj"; sk: "en.sk"; sl: "en.sl"; sm: "en.sm"; sn: "en.sn"; so: "en.so"; sp: "en.sp"; sq: "en.sq"; sr: "en.sr"; ss: "en.ss"; st: "en.st"; su: "en.su"; sv: "en.sv"; sw: "en.sw"; sx: "en.sx"; sy: "en.sy"; sz: "en.sz"; ta: "en.ta"; tb: "en.tb"; tc: "en.tc"; td: "en.td"; te: "en.te"; tf: "en.tf"; tg: "en.tg"; th: "en.th"; ti: "en.ti"; tj: "en.tj"; tk: "en.tk"; tl: "en.tl"; tm: "en.tm"; tn: "en.tn"; to: "en.to"; tp: "en.tp"; tq: "en.tq"; tr: "en.tr"; ts: "en.ts"; tt: "en.tt"; tu: "en.tu"; tv: "en.tv"; tw: "en.tw"; tx: "en.tx"; ty: "en.ty"; tz: "en.tz"; ua: "en.ua"; ub: "en.ub"; uc: "en.uc"; ud: "en.ud"; ue: "en.ue"; uf: "en.uf"; ug: "en.ug"; uh: "en.uh"; ui: "en.ui"; uj: "en.uj"; uk: "en.uk"; ul: "en.ul"; um: "en.um"; un: "en.un"; uo: "en.uo"; up: "en.up"; uq: "en.uq"; ur: "en.ur"; us: "en.us"; ut: "en.ut"; uu: "en.uu"; uv: "en.uv"; uw: "en.uw"; ux: "en.ux"; uy: "en.uy"; uz: "en.uz"; va: "en.va"; vb: "en.vb"; vc: "en.vc"; vd: "en.vd"; ve: "en.ve"; vf: "en.vf"; vg: "en.vg"; vh: "en.vh"; vi: "en.vi"; vj: "en.vj"; vk: "en.vk"; vl: "en.vl"; vm: "en.vm"; vn: "en.vn"; vo: "en.vo"; vp: "en.vp"; vq: "en.vq"; vr: "en.vr"; vs: "en.vs"; vt: "en.vt"; vu: "en.vu"; vv: "en.vv"; vw: "en.vw"; vx: "en.vx"; vy: "en.vy"; vz: "en.vz"; wa: "en.wa"; wb: "en.wb"; wc: "en.wc"; wd: "en.wd"; we: "en.we"; wf: "en.wf"; wg: "en.wg"; wh: "en.wh"; wi: "en.wi"; wj: "en.wj"; wk: "en.wk"; wl: "en.wl"; wm: "en.wm"; wn: "en.wn"; wo: "en.wo"; wp: "en.wp"; wq: "en.wq"; wr: "en.wr"; ws: "en.ws"; wt: "en.wt"; wu: "en.wu"; wv: "en.wv"; ww: "en.ww"; wx: "en.wx"; wy: "en.wy"; wz: "en.wz"; xa: "en.xa"; xb: "en.xb"; xc: "en.xc"; xd: "en.xd"; xe: "en.xe"; xf: "en.xf"; xg: "en.xg"; xh: "en.xh"; xi: "en.xi"; xj: "en.xj"; xk: "en.xk"; xl: "en.xl"; xm: "en.xm"; xn: "en.xn"; xo: "en.xo"; xp: "en.xp"; xq: "en.xq"; xr: "en.xr"; xs: "en.xs"; xt: "en.xt"; xu: "en.xu"; xv: "en.xv"; xw: "en.xw"; xx: "en.xx"; xy: "en.xy"; xz: "en.xz"; ya: "en.ya"; yb: "en.yb"; yc: "en.yc"; yd: "en.yd"; ye: "en.ye"; yf: "en.yf"; yg: "en.yg"; yh: "en.yh"; yi: "en.yi"; yj: "en.yj"; yk: "en.yk"; yl: "en.yl"; ym: "en.ym"; yn: "en.yn"; yo: "en.yo"; yp: "en.yp"; yq: "en.yq"; yr: "en.yr"; ys: "en.ys"; yt: "en.yt"; yu: "en.yu"; yv: "en.yv"; yw: "en.yw"; yx: "en.yx"; yy: "en.yy"; yz: "en.yz"; za: "en.za"; zb: "en.zb"; zc: "en.zc"; zd: "en.zd"; ze: "en.ze"; zf: "en.zf"; zg: "en.zg"; zh: "en.zh"; zi: "en.zi"; zj: "en.zj"; zk: "en.zk"; zl: "en.zl"; zm: "en.zm"; zn: "en.zn"; zo: "en.zo"; zp: "en.zp"; zq: "en.zq"; zr: "en.zr"; zs: "en.zs"; zt: "en.zt"; zu: "en.zu"; zv: "en.zv"; zw: "en.zw"; zx: "en.zx"; zy: "en.zy"; zz: "en.zz"; }; eo: { aa: "eo.aa"; ab: "eo.ab"; ac: "eo.ac"; ad: "eo.ad"; ae: "eo.ae"; af: "eo.af"; ag: "eo.ag"; ah: "eo.ah"; ai: "eo.ai"; aj: "eo.aj"; ak: "eo.ak"; al: "eo.al"; am: "eo.am"; an: "eo.an"; ao: "eo.ao"; ap: "eo.ap"; aq: "eo.aq"; ar: "eo.ar"; as: "eo.as"; at: "eo.at"; au: "eo.au"; av: "eo.av"; aw: "eo.aw"; ax: "eo.ax"; ay: "eo.ay"; az: "eo.az"; ba: "eo.ba"; bb: "eo.bb"; bc: "eo.bc"; bd: "eo.bd"; be: "eo.be"; bf: "eo.bf"; bg: "eo.bg"; bh: "eo.bh"; bi: "eo.bi"; bj: "eo.bj"; bk: "eo.bk"; bl: "eo.bl"; bm: "eo.bm"; bn: "eo.bn"; bo: "eo.bo"; bp: "eo.bp"; bq: "eo.bq"; br: "eo.br"; bs: "eo.bs"; bt: "eo.bt"; bu: "eo.bu"; bv: "eo.bv"; bw: "eo.bw"; bx: "eo.bx"; by: "eo.by"; bz: "eo.bz"; ca: "eo.ca"; cb: "eo.cb"; cc: "eo.cc"; cd: "eo.cd"; ce: "eo.ce"; cf: "eo.cf"; cg: "eo.cg"; ch: "eo.ch"; ci: "eo.ci"; cj: "eo.cj"; ck: "eo.ck"; cl: "eo.cl"; cm: "eo.cm"; cn: "eo.cn"; co: "eo.co"; cp: "eo.cp"; cq: "eo.cq"; cr: "eo.cr"; cs: "eo.cs"; ct: "eo.ct"; cu: "eo.cu"; cv: "eo.cv"; cw: "eo.cw"; cx: "eo.cx"; cy: "eo.cy"; cz: "eo.cz"; da: "eo.da"; db: "eo.db"; dc: "eo.dc"; dd: "eo.dd"; de: "eo.de"; df: "eo.df"; dg: "eo.dg"; dh: "eo.dh"; di: "eo.di"; dj: "eo.dj"; dk: "eo.dk"; dl: "eo.dl"; dm: "eo.dm"; dn: "eo.dn"; do: "eo.do"; dp: "eo.dp"; dq: "eo.dq"; dr: "eo.dr"; ds: "eo.ds"; dt: "eo.dt"; du: "eo.du"; dv: "eo.dv"; dw: "eo.dw"; dx: "eo.dx"; dy: "eo.dy"; dz: "eo.dz"; ea: "eo.ea"; eb: "eo.eb"; ec: "eo.ec"; ed: "eo.ed"; ee: "eo.ee"; ef: "eo.ef"; eg: "eo.eg"; eh: "eo.eh"; ei: "eo.ei"; ej: "eo.ej"; ek: "eo.ek"; el: "eo.el"; em: "eo.em"; en: "eo.en"; eo: "eo.eo"; ep: "eo.ep"; eq: "eo.eq"; er: "eo.er"; es: "eo.es"; et: "eo.et"; eu: "eo.eu"; ev: "eo.ev"; ew: "eo.ew"; ex: "eo.ex"; ey: "eo.ey"; ez: "eo.ez"; fa: "eo.fa"; fb: "eo.fb"; fc: "eo.fc"; fd: "eo.fd"; fe: "eo.fe"; ff: "eo.ff"; fg: "eo.fg"; fh: "eo.fh"; fi: "eo.fi"; fj: "eo.fj"; fk: "eo.fk"; fl: "eo.fl"; fm: "eo.fm"; fn: "eo.fn"; fo: "eo.fo"; fp: "eo.fp"; fq: "eo.fq"; fr: "eo.fr"; fs: "eo.fs"; ft: "eo.ft"; fu: "eo.fu"; fv: "eo.fv"; fw: "eo.fw"; fx: "eo.fx"; fy: "eo.fy"; fz: "eo.fz"; ga: "eo.ga"; gb: "eo.gb"; gc: "eo.gc"; gd: "eo.gd"; ge: "eo.ge"; gf: "eo.gf"; gg: "eo.gg"; gh: "eo.gh"; gi: "eo.gi"; gj: "eo.gj"; gk: "eo.gk"; gl: "eo.gl"; gm: "eo.gm"; gn: "eo.gn"; go: "eo.go"; gp: "eo.gp"; gq: "eo.gq"; gr: "eo.gr"; gs: "eo.gs"; gt: "eo.gt"; gu: "eo.gu"; gv: "eo.gv"; gw: "eo.gw"; gx: "eo.gx"; gy: "eo.gy"; gz: "eo.gz"; ha: "eo.ha"; hb: "eo.hb"; hc: "eo.hc"; hd: "eo.hd"; he: "eo.he"; hf: "eo.hf"; hg: "eo.hg"; hh: "eo.hh"; hi: "eo.hi"; hj: "eo.hj"; hk: "eo.hk"; hl: "eo.hl"; hm: "eo.hm"; hn: "eo.hn"; ho: "eo.ho"; hp: "eo.hp"; hq: "eo.hq"; hr: "eo.hr"; hs: "eo.hs"; ht: "eo.ht"; hu: "eo.hu"; hv: "eo.hv"; hw: "eo.hw"; hx: "eo.hx"; hy: "eo.hy"; hz: "eo.hz"; ia: "eo.ia"; ib: "eo.ib"; ic: "eo.ic"; id: "eo.id"; ie: "eo.ie"; if: "eo.if"; ig: "eo.ig"; ih: "eo.ih"; ii: "eo.ii"; ij: "eo.ij"; ik: "eo.ik"; il: "eo.il"; im: "eo.im"; in: "eo.in"; io: "eo.io"; ip: "eo.ip"; iq: "eo.iq"; ir: "eo.ir"; is: "eo.is"; it: "eo.it"; iu: "eo.iu"; iv: "eo.iv"; iw: "eo.iw"; ix: "eo.ix"; iy: "eo.iy"; iz: "eo.iz"; ja: "eo.ja"; jb: "eo.jb"; jc: "eo.jc"; jd: "eo.jd"; je: "eo.je"; jf: "eo.jf"; jg: "eo.jg"; jh: "eo.jh"; ji: "eo.ji"; jj: "eo.jj"; jk: "eo.jk"; jl: "eo.jl"; jm: "eo.jm"; jn: "eo.jn"; jo: "eo.jo"; jp: "eo.jp"; jq: "eo.jq"; jr: "eo.jr"; js: "eo.js"; jt: "eo.jt"; ju: "eo.ju"; jv: "eo.jv"; jw: "eo.jw"; jx: "eo.jx"; jy: "eo.jy"; jz: "eo.jz"; ka: "eo.ka"; kb: "eo.kb"; kc: "eo.kc"; kd: "eo.kd"; ke: "eo.ke"; kf: "eo.kf"; kg: "eo.kg"; kh: "eo.kh"; ki: "eo.ki"; kj: "eo.kj"; kk: "eo.kk"; kl: "eo.kl"; km: "eo.km"; kn: "eo.kn"; ko: "eo.ko"; kp: "eo.kp"; kq: "eo.kq"; kr: "eo.kr"; ks: "eo.ks"; kt: "eo.kt"; ku: "eo.ku"; kv: "eo.kv"; kw: "eo.kw"; kx: "eo.kx"; ky: "eo.ky"; kz: "eo.kz"; la: "eo.la"; lb: "eo.lb"; lc: "eo.lc"; ld: "eo.ld"; le: "eo.le"; lf: "eo.lf"; lg: "eo.lg"; lh: "eo.lh"; li: "eo.li"; lj: "eo.lj"; lk: "eo.lk"; ll: "eo.ll"; lm: "eo.lm"; ln: "eo.ln"; lo: "eo.lo"; lp: "eo.lp"; lq: "eo.lq"; lr: "eo.lr"; ls: "eo.ls"; lt: "eo.lt"; lu: "eo.lu"; lv: "eo.lv"; lw: "eo.lw"; lx: "eo.lx"; ly: "eo.ly"; lz: "eo.lz"; ma: "eo.ma"; mb: "eo.mb"; mc: "eo.mc"; md: "eo.md"; me: "eo.me"; mf: "eo.mf"; mg: "eo.mg"; mh: "eo.mh"; mi: "eo.mi"; mj: "eo.mj"; mk: "eo.mk"; ml: "eo.ml"; mm: "eo.mm"; mn: "eo.mn"; mo: "eo.mo"; mp: "eo.mp"; mq: "eo.mq"; mr: "eo.mr"; ms: "eo.ms"; mt: "eo.mt"; mu: "eo.mu"; mv: "eo.mv"; mw: "eo.mw"; mx: "eo.mx"; my: "eo.my"; mz: "eo.mz"; na: "eo.na"; nb: "eo.nb"; nc: "eo.nc"; nd: "eo.nd"; ne: "eo.ne"; nf: "eo.nf"; ng: "eo.ng"; nh: "eo.nh"; ni: "eo.ni"; nj: "eo.nj"; nk: "eo.nk"; nl: "eo.nl"; nm: "eo.nm"; nn: "eo.nn"; no: "eo.no"; np: "eo.np"; nq: "eo.nq"; nr: "eo.nr"; ns: "eo.ns"; nt: "eo.nt"; nu: "eo.nu"; nv: "eo.nv"; nw: "eo.nw"; nx: "eo.nx"; ny: "eo.ny"; nz: "eo.nz"; oa: "eo.oa"; ob: "eo.ob"; oc: "eo.oc"; od: "eo.od"; oe: "eo.oe"; of: "eo.of"; og: "eo.og"; oh: "eo.oh"; oi: "eo.oi"; oj: "eo.oj"; ok: "eo.ok"; ol: "eo.ol"; om: "eo.om"; on: "eo.on"; oo: "eo.oo"; op: "eo.op"; oq: "eo.oq"; or: "eo.or"; os: "eo.os"; ot: "eo.ot"; ou: "eo.ou"; ov: "eo.ov"; ow: "eo.ow"; ox: "eo.ox"; oy: "eo.oy"; oz: "eo.oz"; pa: "eo.pa"; pb: "eo.pb"; pc: "eo.pc"; pd: "eo.pd"; pe: "eo.pe"; pf: "eo.pf"; pg: "eo.pg"; ph: "eo.ph"; pi: "eo.pi"; pj: "eo.pj"; pk: "eo.pk"; pl: "eo.pl"; pm: "eo.pm"; pn: "eo.pn"; po: "eo.po"; pp: "eo.pp"; pq: "eo.pq"; pr: "eo.pr"; ps: "eo.ps"; pt: "eo.pt"; pu: "eo.pu"; pv: "eo.pv"; pw: "eo.pw"; px: "eo.px"; py: "eo.py"; pz: "eo.pz"; qa: "eo.qa"; qb: "eo.qb"; qc: "eo.qc"; qd: "eo.qd"; qe: "eo.qe"; qf: "eo.qf"; qg: "eo.qg"; qh: "eo.qh"; qi: "eo.qi"; qj: "eo.qj"; qk: "eo.qk"; ql: "eo.ql"; qm: "eo.qm"; qn: "eo.qn"; qo: "eo.qo"; qp: "eo.qp"; qq: "eo.qq"; qr: "eo.qr"; qs: "eo.qs"; qt: "eo.qt"; qu: "eo.qu"; qv: "eo.qv"; qw: "eo.qw"; qx: "eo.qx"; qy: "eo.qy"; qz: "eo.qz"; ra: "eo.ra"; rb: "eo.rb"; rc: "eo.rc"; rd: "eo.rd"; re: "eo.re"; rf: "eo.rf"; rg: "eo.rg"; rh: "eo.rh"; ri: "eo.ri"; rj: "eo.rj"; rk: "eo.rk"; rl: "eo.rl"; rm: "eo.rm"; rn: "eo.rn"; ro: "eo.ro"; rp: "eo.rp"; rq: "eo.rq"; rr: "eo.rr"; rs: "eo.rs"; rt: "eo.rt"; ru: "eo.ru"; rv: "eo.rv"; rw: "eo.rw"; rx: "eo.rx"; ry: "eo.ry"; rz: "eo.rz"; sa: "eo.sa"; sb: "eo.sb"; sc: "eo.sc"; sd: "eo.sd"; se: "eo.se"; sf: "eo.sf"; sg: "eo.sg"; sh: "eo.sh"; si: "eo.si"; sj: "eo.sj"; sk: "eo.sk"; sl: "eo.sl"; sm: "eo.sm"; sn: "eo.sn"; so: "eo.so"; sp: "eo.sp"; sq: "eo.sq"; sr: "eo.sr"; ss: "eo.ss"; st: "eo.st"; su: "eo.su"; sv: "eo.sv"; sw: "eo.sw"; sx: "eo.sx"; sy: "eo.sy"; sz: "eo.sz"; ta: "eo.ta"; tb: "eo.tb"; tc: "eo.tc"; td: "eo.td"; te: "eo.te"; tf: "eo.tf"; tg: "eo.tg"; th: "eo.th"; ti: "eo.ti"; tj: "eo.tj"; tk: "eo.tk"; tl: "eo.tl"; tm: "eo.tm"; tn: "eo.tn"; to: "eo.to"; tp: "eo.tp"; tq: "eo.tq"; tr: "eo.tr"; ts: "eo.ts"; tt: "eo.tt"; tu: "eo.tu"; tv: "eo.tv"; tw: "eo.tw"; tx: "eo.tx"; ty: "eo.ty"; tz: "eo.tz"; ua: "eo.ua"; ub: "eo.ub"; uc: "eo.uc"; ud: "eo.ud"; ue: "eo.ue"; uf: "eo.uf"; ug: "eo.ug"; uh: "eo.uh"; ui: "eo.ui"; uj: "eo.uj"; uk: "eo.uk"; ul: "eo.ul"; um: "eo.um"; un: "eo.un"; uo: "eo.uo"; up: "eo.up"; uq: "eo.uq"; ur: "eo.ur"; us: "eo.us"; ut: "eo.ut"; uu: "eo.uu"; uv: "eo.uv"; uw: "eo.uw"; ux: "eo.ux"; uy: "eo.uy"; uz: "eo.uz"; va: "eo.va"; vb: "eo.vb"; vc: "eo.vc"; vd: "eo.vd"; ve: "eo.ve"; vf: "eo.vf"; vg: "eo.vg"; vh: "eo.vh"; vi: "eo.vi"; vj: "eo.vj"; vk: "eo.vk"; vl: "eo.vl"; vm: "eo.vm"; vn: "eo.vn"; vo: "eo.vo"; vp: "eo.vp"; vq: "eo.vq"; vr: "eo.vr"; vs: "eo.vs"; vt: "eo.vt"; vu: "eo.vu"; vv: "eo.vv"; vw: "eo.vw"; vx: "eo.vx"; vy: "eo.vy"; vz: "eo.vz"; wa: "eo.wa"; wb: "eo.wb"; wc: "eo.wc"; wd: "eo.wd"; we: "eo.we"; wf: "eo.wf"; wg: "eo.wg"; wh: "eo.wh"; wi: "eo.wi"; wj: "eo.wj"; wk: "eo.wk"; wl: "eo.wl"; wm: "eo.wm"; wn: "eo.wn"; wo: "eo.wo"; wp: "eo.wp"; wq: "eo.wq"; wr: "eo.wr"; ws: "eo.ws"; wt: "eo.wt"; wu: "eo.wu"; wv: "eo.wv"; ww: "eo.ww"; wx: "eo.wx"; wy: "eo.wy"; wz: "eo.wz"; xa: "eo.xa"; xb: "eo.xb"; xc: "eo.xc"; xd: "eo.xd"; xe: "eo.xe"; xf: "eo.xf"; xg: "eo.xg"; xh: "eo.xh"; xi: "eo.xi"; xj: "eo.xj"; xk: "eo.xk"; xl: "eo.xl"; xm: "eo.xm"; xn: "eo.xn"; xo: "eo.xo"; xp: "eo.xp"; xq: "eo.xq"; xr: "eo.xr"; xs: "eo.xs"; xt: "eo.xt"; xu: "eo.xu"; xv: "eo.xv"; xw: "eo.xw"; xx: "eo.xx"; xy: "eo.xy"; xz: "eo.xz"; ya: "eo.ya"; yb: "eo.yb"; yc: "eo.yc"; yd: "eo.yd"; ye: "eo.ye"; yf: "eo.yf"; yg: "eo.yg"; yh: "eo.yh"; yi: "eo.yi"; yj: "eo.yj"; yk: "eo.yk"; yl: "eo.yl"; ym: "eo.ym"; yn: "eo.yn"; yo: "eo.yo"; yp: "eo.yp"; yq: "eo.yq"; yr: "eo.yr"; ys: "eo.ys"; yt: "eo.yt"; yu: "eo.yu"; yv: "eo.yv"; yw: "eo.yw"; yx: "eo.yx"; yy: "eo.yy"; yz: "eo.yz"; za: "eo.za"; zb: "eo.zb"; zc: "eo.zc"; zd: "eo.zd"; ze: "eo.ze"; zf: "eo.zf"; zg: "eo.zg"; zh: "eo.zh"; zi: "eo.zi"; zj: "eo.zj"; zk: "eo.zk"; zl: "eo.zl"; zm: "eo.zm"; zn: "eo.zn"; zo: "eo.zo"; zp: "eo.zp"; zq: "eo.zq"; zr: "eo.zr"; zs: "eo.zs"; zt: "eo.zt"; zu: "eo.zu"; zv: "eo.zv"; zw: "eo.zw"; zx: "eo.zx"; zy: "eo.zy"; zz: "eo.zz"; }; ep: { aa: "ep.aa"; ab: "ep.ab"; ac: "ep.ac"; ad: "ep.ad"; ae: "ep.ae"; af: "ep.af"; ag: "ep.ag"; ah: "ep.ah"; ai: "ep.ai"; aj: "ep.aj"; ak: "ep.ak"; al: "ep.al"; am: "ep.am"; an: "ep.an"; ao: "ep.ao"; ap: "ep.ap"; aq: "ep.aq"; ar: "ep.ar"; as: "ep.as"; at: "ep.at"; au: "ep.au"; av: "ep.av"; aw: "ep.aw"; ax: "ep.ax"; ay: "ep.ay"; az: "ep.az"; ba: "ep.ba"; bb: "ep.bb"; bc: "ep.bc"; bd: "ep.bd"; be: "ep.be"; bf: "ep.bf"; bg: "ep.bg"; bh: "ep.bh"; bi: "ep.bi"; bj: "ep.bj"; bk: "ep.bk"; bl: "ep.bl"; bm: "ep.bm"; bn: "ep.bn"; bo: "ep.bo"; bp: "ep.bp"; bq: "ep.bq"; br: "ep.br"; bs: "ep.bs"; bt: "ep.bt"; bu: "ep.bu"; bv: "ep.bv"; bw: "ep.bw"; bx: "ep.bx"; by: "ep.by"; bz: "ep.bz"; ca: "ep.ca"; cb: "ep.cb"; cc: "ep.cc"; cd: "ep.cd"; ce: "ep.ce"; cf: "ep.cf"; cg: "ep.cg"; ch: "ep.ch"; ci: "ep.ci"; cj: "ep.cj"; ck: "ep.ck"; cl: "ep.cl"; cm: "ep.cm"; cn: "ep.cn"; co: "ep.co"; cp: "ep.cp"; cq: "ep.cq"; cr: "ep.cr"; cs: "ep.cs"; ct: "ep.ct"; cu: "ep.cu"; cv: "ep.cv"; cw: "ep.cw"; cx: "ep.cx"; cy: "ep.cy"; cz: "ep.cz"; da: "ep.da"; db: "ep.db"; dc: "ep.dc"; dd: "ep.dd"; de: "ep.de"; df: "ep.df"; dg: "ep.dg"; dh: "ep.dh"; di: "ep.di"; dj: "ep.dj"; dk: "ep.dk"; dl: "ep.dl"; dm: "ep.dm"; dn: "ep.dn"; do: "ep.do"; dp: "ep.dp"; dq: "ep.dq"; dr: "ep.dr"; ds: "ep.ds"; dt: "ep.dt"; du: "ep.du"; dv: "ep.dv"; dw: "ep.dw"; dx: "ep.dx"; dy: "ep.dy"; dz: "ep.dz"; ea: "ep.ea"; eb: "ep.eb"; ec: "ep.ec"; ed: "ep.ed"; ee: "ep.ee"; ef: "ep.ef"; eg: "ep.eg"; eh: "ep.eh"; ei: "ep.ei"; ej: "ep.ej"; ek: "ep.ek"; el: "ep.el"; em: "ep.em"; en: "ep.en"; eo: "ep.eo"; ep: "ep.ep"; eq: "ep.eq"; er: "ep.er"; es: "ep.es"; et: "ep.et"; eu: "ep.eu"; ev: "ep.ev"; ew: "ep.ew"; ex: "ep.ex"; ey: "ep.ey"; ez: "ep.ez"; fa: "ep.fa"; fb: "ep.fb"; fc: "ep.fc"; fd: "ep.fd"; fe: "ep.fe"; ff: "ep.ff"; fg: "ep.fg"; fh: "ep.fh"; fi: "ep.fi"; fj: "ep.fj"; fk: "ep.fk"; fl: "ep.fl"; fm: "ep.fm"; fn: "ep.fn"; fo: "ep.fo"; fp: "ep.fp"; fq: "ep.fq"; fr: "ep.fr"; fs: "ep.fs"; ft: "ep.ft"; fu: "ep.fu"; fv: "ep.fv"; fw: "ep.fw"; fx: "ep.fx"; fy: "ep.fy"; fz: "ep.fz"; ga: "ep.ga"; gb: "ep.gb"; gc: "ep.gc"; gd: "ep.gd"; ge: "ep.ge"; gf: "ep.gf"; gg: "ep.gg"; gh: "ep.gh"; gi: "ep.gi"; gj: "ep.gj"; gk: "ep.gk"; gl: "ep.gl"; gm: "ep.gm"; gn: "ep.gn"; go: "ep.go"; gp: "ep.gp"; gq: "ep.gq"; gr: "ep.gr"; gs: "ep.gs"; gt: "ep.gt"; gu: "ep.gu"; gv: "ep.gv"; gw: "ep.gw"; gx: "ep.gx"; gy: "ep.gy"; gz: "ep.gz"; ha: "ep.ha"; hb: "ep.hb"; hc: "ep.hc"; hd: "ep.hd"; he: "ep.he"; hf: "ep.hf"; hg: "ep.hg"; hh: "ep.hh"; hi: "ep.hi"; hj: "ep.hj"; hk: "ep.hk"; hl: "ep.hl"; hm: "ep.hm"; hn: "ep.hn"; ho: "ep.ho"; hp: "ep.hp"; hq: "ep.hq"; hr: "ep.hr"; hs: "ep.hs"; ht: "ep.ht"; hu: "ep.hu"; hv: "ep.hv"; hw: "ep.hw"; hx: "ep.hx"; hy: "ep.hy"; hz: "ep.hz"; ia: "ep.ia"; ib: "ep.ib"; ic: "ep.ic"; id: "ep.id"; ie: "ep.ie"; if: "ep.if"; ig: "ep.ig"; ih: "ep.ih"; ii: "ep.ii"; ij: "ep.ij"; ik: "ep.ik"; il: "ep.il"; im: "ep.im"; in: "ep.in"; io: "ep.io"; ip: "ep.ip"; iq: "ep.iq"; ir: "ep.ir"; is: "ep.is"; it: "ep.it"; iu: "ep.iu"; iv: "ep.iv"; iw: "ep.iw"; ix: "ep.ix"; iy: "ep.iy"; iz: "ep.iz"; ja: "ep.ja"; jb: "ep.jb"; jc: "ep.jc"; jd: "ep.jd"; je: "ep.je"; jf: "ep.jf"; jg: "ep.jg"; jh: "ep.jh"; ji: "ep.ji"; jj: "ep.jj"; jk: "ep.jk"; jl: "ep.jl"; jm: "ep.jm"; jn: "ep.jn"; jo: "ep.jo"; jp: "ep.jp"; jq: "ep.jq"; jr: "ep.jr"; js: "ep.js"; jt: "ep.jt"; ju: "ep.ju"; jv: "ep.jv"; jw: "ep.jw"; jx: "ep.jx"; jy: "ep.jy"; jz: "ep.jz"; ka: "ep.ka"; kb: "ep.kb"; kc: "ep.kc"; kd: "ep.kd"; ke: "ep.ke"; kf: "ep.kf"; kg: "ep.kg"; kh: "ep.kh"; ki: "ep.ki"; kj: "ep.kj"; kk: "ep.kk"; kl: "ep.kl"; km: "ep.km"; kn: "ep.kn"; ko: "ep.ko"; kp: "ep.kp"; kq: "ep.kq"; kr: "ep.kr"; ks: "ep.ks"; kt: "ep.kt"; ku: "ep.ku"; kv: "ep.kv"; kw: "ep.kw"; kx: "ep.kx"; ky: "ep.ky"; kz: "ep.kz"; la: "ep.la"; lb: "ep.lb"; lc: "ep.lc"; ld: "ep.ld"; le: "ep.le"; lf: "ep.lf"; lg: "ep.lg"; lh: "ep.lh"; li: "ep.li"; lj: "ep.lj"; lk: "ep.lk"; ll: "ep.ll"; lm: "ep.lm"; ln: "ep.ln"; lo: "ep.lo"; lp: "ep.lp"; lq: "ep.lq"; lr: "ep.lr"; ls: "ep.ls"; lt: "ep.lt"; lu: "ep.lu"; lv: "ep.lv"; lw: "ep.lw"; lx: "ep.lx"; ly: "ep.ly"; lz: "ep.lz"; ma: "ep.ma"; mb: "ep.mb"; mc: "ep.mc"; md: "ep.md"; me: "ep.me"; mf: "ep.mf"; mg: "ep.mg"; mh: "ep.mh"; mi: "ep.mi"; mj: "ep.mj"; mk: "ep.mk"; ml: "ep.ml"; mm: "ep.mm"; mn: "ep.mn"; mo: "ep.mo"; mp: "ep.mp"; mq: "ep.mq"; mr: "ep.mr"; ms: "ep.ms"; mt: "ep.mt"; mu: "ep.mu"; mv: "ep.mv"; mw: "ep.mw"; mx: "ep.mx"; my: "ep.my"; mz: "ep.mz"; na: "ep.na"; nb: "ep.nb"; nc: "ep.nc"; nd: "ep.nd"; ne: "ep.ne"; nf: "ep.nf"; ng: "ep.ng"; nh: "ep.nh"; ni: "ep.ni"; nj: "ep.nj"; nk: "ep.nk"; nl: "ep.nl"; nm: "ep.nm"; nn: "ep.nn"; no: "ep.no"; np: "ep.np"; nq: "ep.nq"; nr: "ep.nr"; ns: "ep.ns"; nt: "ep.nt"; nu: "ep.nu"; nv: "ep.nv"; nw: "ep.nw"; nx: "ep.nx"; ny: "ep.ny"; nz: "ep.nz"; oa: "ep.oa"; ob: "ep.ob"; oc: "ep.oc"; od: "ep.od"; oe: "ep.oe"; of: "ep.of"; og: "ep.og"; oh: "ep.oh"; oi: "ep.oi"; oj: "ep.oj"; ok: "ep.ok"; ol: "ep.ol"; om: "ep.om"; on: "ep.on"; oo: "ep.oo"; op: "ep.op"; oq: "ep.oq"; or: "ep.or"; os: "ep.os"; ot: "ep.ot"; ou: "ep.ou"; ov: "ep.ov"; ow: "ep.ow"; ox: "ep.ox"; oy: "ep.oy"; oz: "ep.oz"; pa: "ep.pa"; pb: "ep.pb"; pc: "ep.pc"; pd: "ep.pd"; pe: "ep.pe"; pf: "ep.pf"; pg: "ep.pg"; ph: "ep.ph"; pi: "ep.pi"; pj: "ep.pj"; pk: "ep.pk"; pl: "ep.pl"; pm: "ep.pm"; pn: "ep.pn"; po: "ep.po"; pp: "ep.pp"; pq: "ep.pq"; pr: "ep.pr"; ps: "ep.ps"; pt: "ep.pt"; pu: "ep.pu"; pv: "ep.pv"; pw: "ep.pw"; px: "ep.px"; py: "ep.py"; pz: "ep.pz"; qa: "ep.qa"; qb: "ep.qb"; qc: "ep.qc"; qd: "ep.qd"; qe: "ep.qe"; qf: "ep.qf"; qg: "ep.qg"; qh: "ep.qh"; qi: "ep.qi"; qj: "ep.qj"; qk: "ep.qk"; ql: "ep.ql"; qm: "ep.qm"; qn: "ep.qn"; qo: "ep.qo"; qp: "ep.qp"; qq: "ep.qq"; qr: "ep.qr"; qs: "ep.qs"; qt: "ep.qt"; qu: "ep.qu"; qv: "ep.qv"; qw: "ep.qw"; qx: "ep.qx"; qy: "ep.qy"; qz: "ep.qz"; ra: "ep.ra"; rb: "ep.rb"; rc: "ep.rc"; rd: "ep.rd"; re: "ep.re"; rf: "ep.rf"; rg: "ep.rg"; rh: "ep.rh"; ri: "ep.ri"; rj: "ep.rj"; rk: "ep.rk"; rl: "ep.rl"; rm: "ep.rm"; rn: "ep.rn"; ro: "ep.ro"; rp: "ep.rp"; rq: "ep.rq"; rr: "ep.rr"; rs: "ep.rs"; rt: "ep.rt"; ru: "ep.ru"; rv: "ep.rv"; rw: "ep.rw"; rx: "ep.rx"; ry: "ep.ry"; rz: "ep.rz"; sa: "ep.sa"; sb: "ep.sb"; sc: "ep.sc"; sd: "ep.sd"; se: "ep.se"; sf: "ep.sf"; sg: "ep.sg"; sh: "ep.sh"; si: "ep.si"; sj: "ep.sj"; sk: "ep.sk"; sl: "ep.sl"; sm: "ep.sm"; sn: "ep.sn"; so: "ep.so"; sp: "ep.sp"; sq: "ep.sq"; sr: "ep.sr"; ss: "ep.ss"; st: "ep.st"; su: "ep.su"; sv: "ep.sv"; sw: "ep.sw"; sx: "ep.sx"; sy: "ep.sy"; sz: "ep.sz"; ta: "ep.ta"; tb: "ep.tb"; tc: "ep.tc"; td: "ep.td"; te: "ep.te"; tf: "ep.tf"; tg: "ep.tg"; th: "ep.th"; ti: "ep.ti"; tj: "ep.tj"; tk: "ep.tk"; tl: "ep.tl"; tm: "ep.tm"; tn: "ep.tn"; to: "ep.to"; tp: "ep.tp"; tq: "ep.tq"; tr: "ep.tr"; ts: "ep.ts"; tt: "ep.tt"; tu: "ep.tu"; tv: "ep.tv"; tw: "ep.tw"; tx: "ep.tx"; ty: "ep.ty"; tz: "ep.tz"; ua: "ep.ua"; ub: "ep.ub"; uc: "ep.uc"; ud: "ep.ud"; ue: "ep.ue"; uf: "ep.uf"; ug: "ep.ug"; uh: "ep.uh"; ui: "ep.ui"; uj: "ep.uj"; uk: "ep.uk"; ul: "ep.ul"; um: "ep.um"; un: "ep.un"; uo: "ep.uo"; up: "ep.up"; uq: "ep.uq"; ur: "ep.ur"; us: "ep.us"; ut: "ep.ut"; uu: "ep.uu"; uv: "ep.uv"; uw: "ep.uw"; ux: "ep.ux"; uy: "ep.uy"; uz: "ep.uz"; va: "ep.va"; vb: "ep.vb"; vc: "ep.vc"; vd: "ep.vd"; ve: "ep.ve"; vf: "ep.vf"; vg: "ep.vg"; vh: "ep.vh"; vi: "ep.vi"; vj: "ep.vj"; vk: "ep.vk"; vl: "ep.vl"; vm: "ep.vm"; vn: "ep.vn"; vo: "ep.vo"; vp: "ep.vp"; vq: "ep.vq"; vr: "ep.vr"; vs: "ep.vs"; vt: "ep.vt"; vu: "ep.vu"; vv: "ep.vv"; vw: "ep.vw"; vx: "ep.vx"; vy: "ep.vy"; vz: "ep.vz"; wa: "ep.wa"; wb: "ep.wb"; wc: "ep.wc"; wd: "ep.wd"; we: "ep.we"; wf: "ep.wf"; wg: "ep.wg"; wh: "ep.wh"; wi: "ep.wi"; wj: "ep.wj"; wk: "ep.wk"; wl: "ep.wl"; wm: "ep.wm"; wn: "ep.wn"; wo: "ep.wo"; wp: "ep.wp"; wq: "ep.wq"; wr: "ep.wr"; ws: "ep.ws"; wt: "ep.wt"; wu: "ep.wu"; wv: "ep.wv"; ww: "ep.ww"; wx: "ep.wx"; wy: "ep.wy"; wz: "ep.wz"; xa: "ep.xa"; xb: "ep.xb"; xc: "ep.xc"; xd: "ep.xd"; xe: "ep.xe"; xf: "ep.xf"; xg: "ep.xg"; xh: "ep.xh"; xi: "ep.xi"; xj: "ep.xj"; xk: "ep.xk"; xl: "ep.xl"; xm: "ep.xm"; xn: "ep.xn"; xo: "ep.xo"; xp: "ep.xp"; xq: "ep.xq"; xr: "ep.xr"; xs: "ep.xs"; xt: "ep.xt"; xu: "ep.xu"; xv: "ep.xv"; xw: "ep.xw"; xx: "ep.xx"; xy: "ep.xy"; xz: "ep.xz"; ya: "ep.ya"; yb: "ep.yb"; yc: "ep.yc"; yd: "ep.yd"; ye: "ep.ye"; yf: "ep.yf"; yg: "ep.yg"; yh: "ep.yh"; yi: "ep.yi"; yj: "ep.yj"; yk: "ep.yk"; yl: "ep.yl"; ym: "ep.ym"; yn: "ep.yn"; yo: "ep.yo"; yp: "ep.yp"; yq: "ep.yq"; yr: "ep.yr"; ys: "ep.ys"; yt: "ep.yt"; yu: "ep.yu"; yv: "ep.yv"; yw: "ep.yw"; yx: "ep.yx"; yy: "ep.yy"; yz: "ep.yz"; za: "ep.za"; zb: "ep.zb"; zc: "ep.zc"; zd: "ep.zd"; ze: "ep.ze"; zf: "ep.zf"; zg: "ep.zg"; zh: "ep.zh"; zi: "ep.zi"; zj: "ep.zj"; zk: "ep.zk"; zl: "ep.zl"; zm: "ep.zm"; zn: "ep.zn"; zo: "ep.zo"; zp: "ep.zp"; zq: "ep.zq"; zr: "ep.zr"; zs: "ep.zs"; zt: "ep.zt"; zu: "ep.zu"; zv: "ep.zv"; zw: "ep.zw"; zx: "ep.zx"; zy: "ep.zy"; zz: "ep.zz"; }; eq: { aa: "eq.aa"; ab: "eq.ab"; ac: "eq.ac"; ad: "eq.ad"; ae: "eq.ae"; af: "eq.af"; ag: "eq.ag"; ah: "eq.ah"; ai: "eq.ai"; aj: "eq.aj"; ak: "eq.ak"; al: "eq.al"; am: "eq.am"; an: "eq.an"; ao: "eq.ao"; ap: "eq.ap"; aq: "eq.aq"; ar: "eq.ar"; as: "eq.as"; at: "eq.at"; au: "eq.au"; av: "eq.av"; aw: "eq.aw"; ax: "eq.ax"; ay: "eq.ay"; az: "eq.az"; ba: "eq.ba"; bb: "eq.bb"; bc: "eq.bc"; bd: "eq.bd"; be: "eq.be"; bf: "eq.bf"; bg: "eq.bg"; bh: "eq.bh"; bi: "eq.bi"; bj: "eq.bj"; bk: "eq.bk"; bl: "eq.bl"; bm: "eq.bm"; bn: "eq.bn"; bo: "eq.bo"; bp: "eq.bp"; bq: "eq.bq"; br: "eq.br"; bs: "eq.bs"; bt: "eq.bt"; bu: "eq.bu"; bv: "eq.bv"; bw: "eq.bw"; bx: "eq.bx"; by: "eq.by"; bz: "eq.bz"; ca: "eq.ca"; cb: "eq.cb"; cc: "eq.cc"; cd: "eq.cd"; ce: "eq.ce"; cf: "eq.cf"; cg: "eq.cg"; ch: "eq.ch"; ci: "eq.ci"; cj: "eq.cj"; ck: "eq.ck"; cl: "eq.cl"; cm: "eq.cm"; cn: "eq.cn"; co: "eq.co"; cp: "eq.cp"; cq: "eq.cq"; cr: "eq.cr"; cs: "eq.cs"; ct: "eq.ct"; cu: "eq.cu"; cv: "eq.cv"; cw: "eq.cw"; cx: "eq.cx"; cy: "eq.cy"; cz: "eq.cz"; da: "eq.da"; db: "eq.db"; dc: "eq.dc"; dd: "eq.dd"; de: "eq.de"; df: "eq.df"; dg: "eq.dg"; dh: "eq.dh"; di: "eq.di"; dj: "eq.dj"; dk: "eq.dk"; dl: "eq.dl"; dm: "eq.dm"; dn: "eq.dn"; do: "eq.do"; dp: "eq.dp"; dq: "eq.dq"; dr: "eq.dr"; ds: "eq.ds"; dt: "eq.dt"; du: "eq.du"; dv: "eq.dv"; dw: "eq.dw"; dx: "eq.dx"; dy: "eq.dy"; dz: "eq.dz"; ea: "eq.ea"; eb: "eq.eb"; ec: "eq.ec"; ed: "eq.ed"; ee: "eq.ee"; ef: "eq.ef"; eg: "eq.eg"; eh: "eq.eh"; ei: "eq.ei"; ej: "eq.ej"; ek: "eq.ek"; el: "eq.el"; em: "eq.em"; en: "eq.en"; eo: "eq.eo"; ep: "eq.ep"; eq: "eq.eq"; er: "eq.er"; es: "eq.es"; et: "eq.et"; eu: "eq.eu"; ev: "eq.ev"; ew: "eq.ew"; ex: "eq.ex"; ey: "eq.ey"; ez: "eq.ez"; fa: "eq.fa"; fb: "eq.fb"; fc: "eq.fc"; fd: "eq.fd"; fe: "eq.fe"; ff: "eq.ff"; fg: "eq.fg"; fh: "eq.fh"; fi: "eq.fi"; fj: "eq.fj"; fk: "eq.fk"; fl: "eq.fl"; fm: "eq.fm"; fn: "eq.fn"; fo: "eq.fo"; fp: "eq.fp"; fq: "eq.fq"; fr: "eq.fr"; fs: "eq.fs"; ft: "eq.ft"; fu: "eq.fu"; fv: "eq.fv"; fw: "eq.fw"; fx: "eq.fx"; fy: "eq.fy"; fz: "eq.fz"; ga: "eq.ga"; gb: "eq.gb"; gc: "eq.gc"; gd: "eq.gd"; ge: "eq.ge"; gf: "eq.gf"; gg: "eq.gg"; gh: "eq.gh"; gi: "eq.gi"; gj: "eq.gj"; gk: "eq.gk"; gl: "eq.gl"; gm: "eq.gm"; gn: "eq.gn"; go: "eq.go"; gp: "eq.gp"; gq: "eq.gq"; gr: "eq.gr"; gs: "eq.gs"; gt: "eq.gt"; gu: "eq.gu"; gv: "eq.gv"; gw: "eq.gw"; gx: "eq.gx"; gy: "eq.gy"; gz: "eq.gz"; ha: "eq.ha"; hb: "eq.hb"; hc: "eq.hc"; hd: "eq.hd"; he: "eq.he"; hf: "eq.hf"; hg: "eq.hg"; hh: "eq.hh"; hi: "eq.hi"; hj: "eq.hj"; hk: "eq.hk"; hl: "eq.hl"; hm: "eq.hm"; hn: "eq.hn"; ho: "eq.ho"; hp: "eq.hp"; hq: "eq.hq"; hr: "eq.hr"; hs: "eq.hs"; ht: "eq.ht"; hu: "eq.hu"; hv: "eq.hv"; hw: "eq.hw"; hx: "eq.hx"; hy: "eq.hy"; hz: "eq.hz"; ia: "eq.ia"; ib: "eq.ib"; ic: "eq.ic"; id: "eq.id"; ie: "eq.ie"; if: "eq.if"; ig: "eq.ig"; ih: "eq.ih"; ii: "eq.ii"; ij: "eq.ij"; ik: "eq.ik"; il: "eq.il"; im: "eq.im"; in: "eq.in"; io: "eq.io"; ip: "eq.ip"; iq: "eq.iq"; ir: "eq.ir"; is: "eq.is"; it: "eq.it"; iu: "eq.iu"; iv: "eq.iv"; iw: "eq.iw"; ix: "eq.ix"; iy: "eq.iy"; iz: "eq.iz"; ja: "eq.ja"; jb: "eq.jb"; jc: "eq.jc"; jd: "eq.jd"; je: "eq.je"; jf: "eq.jf"; jg: "eq.jg"; jh: "eq.jh"; ji: "eq.ji"; jj: "eq.jj"; jk: "eq.jk"; jl: "eq.jl"; jm: "eq.jm"; jn: "eq.jn"; jo: "eq.jo"; jp: "eq.jp"; jq: "eq.jq"; jr: "eq.jr"; js: "eq.js"; jt: "eq.jt"; ju: "eq.ju"; jv: "eq.jv"; jw: "eq.jw"; jx: "eq.jx"; jy: "eq.jy"; jz: "eq.jz"; ka: "eq.ka"; kb: "eq.kb"; kc: "eq.kc"; kd: "eq.kd"; ke: "eq.ke"; kf: "eq.kf"; kg: "eq.kg"; kh: "eq.kh"; ki: "eq.ki"; kj: "eq.kj"; kk: "eq.kk"; kl: "eq.kl"; km: "eq.km"; kn: "eq.kn"; ko: "eq.ko"; kp: "eq.kp"; kq: "eq.kq"; kr: "eq.kr"; ks: "eq.ks"; kt: "eq.kt"; ku: "eq.ku"; kv: "eq.kv"; kw: "eq.kw"; kx: "eq.kx"; ky: "eq.ky"; kz: "eq.kz"; la: "eq.la"; lb: "eq.lb"; lc: "eq.lc"; ld: "eq.ld"; le: "eq.le"; lf: "eq.lf"; lg: "eq.lg"; lh: "eq.lh"; li: "eq.li"; lj: "eq.lj"; lk: "eq.lk"; ll: "eq.ll"; lm: "eq.lm"; ln: "eq.ln"; lo: "eq.lo"; lp: "eq.lp"; lq: "eq.lq"; lr: "eq.lr"; ls: "eq.ls"; lt: "eq.lt"; lu: "eq.lu"; lv: "eq.lv"; lw: "eq.lw"; lx: "eq.lx"; ly: "eq.ly"; lz: "eq.lz"; ma: "eq.ma"; mb: "eq.mb"; mc: "eq.mc"; md: "eq.md"; me: "eq.me"; mf: "eq.mf"; mg: "eq.mg"; mh: "eq.mh"; mi: "eq.mi"; mj: "eq.mj"; mk: "eq.mk"; ml: "eq.ml"; mm: "eq.mm"; mn: "eq.mn"; mo: "eq.mo"; mp: "eq.mp"; mq: "eq.mq"; mr: "eq.mr"; ms: "eq.ms"; mt: "eq.mt"; mu: "eq.mu"; mv: "eq.mv"; mw: "eq.mw"; mx: "eq.mx"; my: "eq.my"; mz: "eq.mz"; na: "eq.na"; nb: "eq.nb"; nc: "eq.nc"; nd: "eq.nd"; ne: "eq.ne"; nf: "eq.nf"; ng: "eq.ng"; nh: "eq.nh"; ni: "eq.ni"; nj: "eq.nj"; nk: "eq.nk"; nl: "eq.nl"; nm: "eq.nm"; nn: "eq.nn"; no: "eq.no"; np: "eq.np"; nq: "eq.nq"; nr: "eq.nr"; ns: "eq.ns"; nt: "eq.nt"; nu: "eq.nu"; nv: "eq.nv"; nw: "eq.nw"; nx: "eq.nx"; ny: "eq.ny"; nz: "eq.nz"; oa: "eq.oa"; ob: "eq.ob"; oc: "eq.oc"; od: "eq.od"; oe: "eq.oe"; of: "eq.of"; og: "eq.og"; oh: "eq.oh"; oi: "eq.oi"; oj: "eq.oj"; ok: "eq.ok"; ol: "eq.ol"; om: "eq.om"; on: "eq.on"; oo: "eq.oo"; op: "eq.op"; oq: "eq.oq"; or: "eq.or"; os: "eq.os"; ot: "eq.ot"; ou: "eq.ou"; ov: "eq.ov"; ow: "eq.ow"; ox: "eq.ox"; oy: "eq.oy"; oz: "eq.oz"; pa: "eq.pa"; pb: "eq.pb"; pc: "eq.pc"; pd: "eq.pd"; pe: "eq.pe"; pf: "eq.pf"; pg: "eq.pg"; ph: "eq.ph"; pi: "eq.pi"; pj: "eq.pj"; pk: "eq.pk"; pl: "eq.pl"; pm: "eq.pm"; pn: "eq.pn"; po: "eq.po"; pp: "eq.pp"; pq: "eq.pq"; pr: "eq.pr"; ps: "eq.ps"; pt: "eq.pt"; pu: "eq.pu"; pv: "eq.pv"; pw: "eq.pw"; px: "eq.px"; py: "eq.py"; pz: "eq.pz"; qa: "eq.qa"; qb: "eq.qb"; qc: "eq.qc"; qd: "eq.qd"; qe: "eq.qe"; qf: "eq.qf"; qg: "eq.qg"; qh: "eq.qh"; qi: "eq.qi"; qj: "eq.qj"; qk: "eq.qk"; ql: "eq.ql"; qm: "eq.qm"; qn: "eq.qn"; qo: "eq.qo"; qp: "eq.qp"; qq: "eq.qq"; qr: "eq.qr"; qs: "eq.qs"; qt: "eq.qt"; qu: "eq.qu"; qv: "eq.qv"; qw: "eq.qw"; qx: "eq.qx"; qy: "eq.qy"; qz: "eq.qz"; ra: "eq.ra"; rb: "eq.rb"; rc: "eq.rc"; rd: "eq.rd"; re: "eq.re"; rf: "eq.rf"; rg: "eq.rg"; rh: "eq.rh"; ri: "eq.ri"; rj: "eq.rj"; rk: "eq.rk"; rl: "eq.rl"; rm: "eq.rm"; rn: "eq.rn"; ro: "eq.ro"; rp: "eq.rp"; rq: "eq.rq"; rr: "eq.rr"; rs: "eq.rs"; rt: "eq.rt"; ru: "eq.ru"; rv: "eq.rv"; rw: "eq.rw"; rx: "eq.rx"; ry: "eq.ry"; rz: "eq.rz"; sa: "eq.sa"; sb: "eq.sb"; sc: "eq.sc"; sd: "eq.sd"; se: "eq.se"; sf: "eq.sf"; sg: "eq.sg"; sh: "eq.sh"; si: "eq.si"; sj: "eq.sj"; sk: "eq.sk"; sl: "eq.sl"; sm: "eq.sm"; sn: "eq.sn"; so: "eq.so"; sp: "eq.sp"; sq: "eq.sq"; sr: "eq.sr"; ss: "eq.ss"; st: "eq.st"; su: "eq.su"; sv: "eq.sv"; sw: "eq.sw"; sx: "eq.sx"; sy: "eq.sy"; sz: "eq.sz"; ta: "eq.ta"; tb: "eq.tb"; tc: "eq.tc"; td: "eq.td"; te: "eq.te"; tf: "eq.tf"; tg: "eq.tg"; th: "eq.th"; ti: "eq.ti"; tj: "eq.tj"; tk: "eq.tk"; tl: "eq.tl"; tm: "eq.tm"; tn: "eq.tn"; to: "eq.to"; tp: "eq.tp"; tq: "eq.tq"; tr: "eq.tr"; ts: "eq.ts"; tt: "eq.tt"; tu: "eq.tu"; tv: "eq.tv"; tw: "eq.tw"; tx: "eq.tx"; ty: "eq.ty"; tz: "eq.tz"; ua: "eq.ua"; ub: "eq.ub"; uc: "eq.uc"; ud: "eq.ud"; ue: "eq.ue"; uf: "eq.uf"; ug: "eq.ug"; uh: "eq.uh"; ui: "eq.ui"; uj: "eq.uj"; uk: "eq.uk"; ul: "eq.ul"; um: "eq.um"; un: "eq.un"; uo: "eq.uo"; up: "eq.up"; uq: "eq.uq"; ur: "eq.ur"; us: "eq.us"; ut: "eq.ut"; uu: "eq.uu"; uv: "eq.uv"; uw: "eq.uw"; ux: "eq.ux"; uy: "eq.uy"; uz: "eq.uz"; va: "eq.va"; vb: "eq.vb"; vc: "eq.vc"; vd: "eq.vd"; ve: "eq.ve"; vf: "eq.vf"; vg: "eq.vg"; vh: "eq.vh"; vi: "eq.vi"; vj: "eq.vj"; vk: "eq.vk"; vl: "eq.vl"; vm: "eq.vm"; vn: "eq.vn"; vo: "eq.vo"; vp: "eq.vp"; vq: "eq.vq"; vr: "eq.vr"; vs: "eq.vs"; vt: "eq.vt"; vu: "eq.vu"; vv: "eq.vv"; vw: "eq.vw"; vx: "eq.vx"; vy: "eq.vy"; vz: "eq.vz"; wa: "eq.wa"; wb: "eq.wb"; wc: "eq.wc"; wd: "eq.wd"; we: "eq.we"; wf: "eq.wf"; wg: "eq.wg"; wh: "eq.wh"; wi: "eq.wi"; wj: "eq.wj"; wk: "eq.wk"; wl: "eq.wl"; wm: "eq.wm"; wn: "eq.wn"; wo: "eq.wo"; wp: "eq.wp"; wq: "eq.wq"; wr: "eq.wr"; ws: "eq.ws"; wt: "eq.wt"; wu: "eq.wu"; wv: "eq.wv"; ww: "eq.ww"; wx: "eq.wx"; wy: "eq.wy"; wz: "eq.wz"; xa: "eq.xa"; xb: "eq.xb"; xc: "eq.xc"; xd: "eq.xd"; xe: "eq.xe"; xf: "eq.xf"; xg: "eq.xg"; xh: "eq.xh"; xi: "eq.xi"; xj: "eq.xj"; xk: "eq.xk"; xl: "eq.xl"; xm: "eq.xm"; xn: "eq.xn"; xo: "eq.xo"; xp: "eq.xp"; xq: "eq.xq"; xr: "eq.xr"; xs: "eq.xs"; xt: "eq.xt"; xu: "eq.xu"; xv: "eq.xv"; xw: "eq.xw"; xx: "eq.xx"; xy: "eq.xy"; xz: "eq.xz"; ya: "eq.ya"; yb: "eq.yb"; yc: "eq.yc"; yd: "eq.yd"; ye: "eq.ye"; yf: "eq.yf"; yg: "eq.yg"; yh: "eq.yh"; yi: "eq.yi"; yj: "eq.yj"; yk: "eq.yk"; yl: "eq.yl"; ym: "eq.ym"; yn: "eq.yn"; yo: "eq.yo"; yp: "eq.yp"; yq: "eq.yq"; yr: "eq.yr"; ys: "eq.ys"; yt: "eq.yt"; yu: "eq.yu"; yv: "eq.yv"; yw: "eq.yw"; yx: "eq.yx"; yy: "eq.yy"; yz: "eq.yz"; za: "eq.za"; zb: "eq.zb"; zc: "eq.zc"; zd: "eq.zd"; ze: "eq.ze"; zf: "eq.zf"; zg: "eq.zg"; zh: "eq.zh"; zi: "eq.zi"; zj: "eq.zj"; zk: "eq.zk"; zl: "eq.zl"; zm: "eq.zm"; zn: "eq.zn"; zo: "eq.zo"; zp: "eq.zp"; zq: "eq.zq"; zr: "eq.zr"; zs: "eq.zs"; zt: "eq.zt"; zu: "eq.zu"; zv: "eq.zv"; zw: "eq.zw"; zx: "eq.zx"; zy: "eq.zy"; zz: "eq.zz"; }; er: { aa: "er.aa"; ab: "er.ab"; ac: "er.ac"; ad: "er.ad"; ae: "er.ae"; af: "er.af"; ag: "er.ag"; ah: "er.ah"; ai: "er.ai"; aj: "er.aj"; ak: "er.ak"; al: "er.al"; am: "er.am"; an: "er.an"; ao: "er.ao"; ap: "er.ap"; aq: "er.aq"; ar: "er.ar"; as: "er.as"; at: "er.at"; au: "er.au"; av: "er.av"; aw: "er.aw"; ax: "er.ax"; ay: "er.ay"; az: "er.az"; ba: "er.ba"; bb: "er.bb"; bc: "er.bc"; bd: "er.bd"; be: "er.be"; bf: "er.bf"; bg: "er.bg"; bh: "er.bh"; bi: "er.bi"; bj: "er.bj"; bk: "er.bk"; bl: "er.bl"; bm: "er.bm"; bn: "er.bn"; bo: "er.bo"; bp: "er.bp"; bq: "er.bq"; br: "er.br"; bs: "er.bs"; bt: "er.bt"; bu: "er.bu"; bv: "er.bv"; bw: "er.bw"; bx: "er.bx"; by: "er.by"; bz: "er.bz"; ca: "er.ca"; cb: "er.cb"; cc: "er.cc"; cd: "er.cd"; ce: "er.ce"; cf: "er.cf"; cg: "er.cg"; ch: "er.ch"; ci: "er.ci"; cj: "er.cj"; ck: "er.ck"; cl: "er.cl"; cm: "er.cm"; cn: "er.cn"; co: "er.co"; cp: "er.cp"; cq: "er.cq"; cr: "er.cr"; cs: "er.cs"; ct: "er.ct"; cu: "er.cu"; cv: "er.cv"; cw: "er.cw"; cx: "er.cx"; cy: "er.cy"; cz: "er.cz"; da: "er.da"; db: "er.db"; dc: "er.dc"; dd: "er.dd"; de: "er.de"; df: "er.df"; dg: "er.dg"; dh: "er.dh"; di: "er.di"; dj: "er.dj"; dk: "er.dk"; dl: "er.dl"; dm: "er.dm"; dn: "er.dn"; do: "er.do"; dp: "er.dp"; dq: "er.dq"; dr: "er.dr"; ds: "er.ds"; dt: "er.dt"; du: "er.du"; dv: "er.dv"; dw: "er.dw"; dx: "er.dx"; dy: "er.dy"; dz: "er.dz"; ea: "er.ea"; eb: "er.eb"; ec: "er.ec"; ed: "er.ed"; ee: "er.ee"; ef: "er.ef"; eg: "er.eg"; eh: "er.eh"; ei: "er.ei"; ej: "er.ej"; ek: "er.ek"; el: "er.el"; em: "er.em"; en: "er.en"; eo: "er.eo"; ep: "er.ep"; eq: "er.eq"; er: "er.er"; es: "er.es"; et: "er.et"; eu: "er.eu"; ev: "er.ev"; ew: "er.ew"; ex: "er.ex"; ey: "er.ey"; ez: "er.ez"; fa: "er.fa"; fb: "er.fb"; fc: "er.fc"; fd: "er.fd"; fe: "er.fe"; ff: "er.ff"; fg: "er.fg"; fh: "er.fh"; fi: "er.fi"; fj: "er.fj"; fk: "er.fk"; fl: "er.fl"; fm: "er.fm"; fn: "er.fn"; fo: "er.fo"; fp: "er.fp"; fq: "er.fq"; fr: "er.fr"; fs: "er.fs"; ft: "er.ft"; fu: "er.fu"; fv: "er.fv"; fw: "er.fw"; fx: "er.fx"; fy: "er.fy"; fz: "er.fz"; ga: "er.ga"; gb: "er.gb"; gc: "er.gc"; gd: "er.gd"; ge: "er.ge"; gf: "er.gf"; gg: "er.gg"; gh: "er.gh"; gi: "er.gi"; gj: "er.gj"; gk: "er.gk"; gl: "er.gl"; gm: "er.gm"; gn: "er.gn"; go: "er.go"; gp: "er.gp"; gq: "er.gq"; gr: "er.gr"; gs: "er.gs"; gt: "er.gt"; gu: "er.gu"; gv: "er.gv"; gw: "er.gw"; gx: "er.gx"; gy: "er.gy"; gz: "er.gz"; ha: "er.ha"; hb: "er.hb"; hc: "er.hc"; hd: "er.hd"; he: "er.he"; hf: "er.hf"; hg: "er.hg"; hh: "er.hh"; hi: "er.hi"; hj: "er.hj"; hk: "er.hk"; hl: "er.hl"; hm: "er.hm"; hn: "er.hn"; ho: "er.ho"; hp: "er.hp"; hq: "er.hq"; hr: "er.hr"; hs: "er.hs"; ht: "er.ht"; hu: "er.hu"; hv: "er.hv"; hw: "er.hw"; hx: "er.hx"; hy: "er.hy"; hz: "er.hz"; ia: "er.ia"; ib: "er.ib"; ic: "er.ic"; id: "er.id"; ie: "er.ie"; if: "er.if"; ig: "er.ig"; ih: "er.ih"; ii: "er.ii"; ij: "er.ij"; ik: "er.ik"; il: "er.il"; im: "er.im"; in: "er.in"; io: "er.io"; ip: "er.ip"; iq: "er.iq"; ir: "er.ir"; is: "er.is"; it: "er.it"; iu: "er.iu"; iv: "er.iv"; iw: "er.iw"; ix: "er.ix"; iy: "er.iy"; iz: "er.iz"; ja: "er.ja"; jb: "er.jb"; jc: "er.jc"; jd: "er.jd"; je: "er.je"; jf: "er.jf"; jg: "er.jg"; jh: "er.jh"; ji: "er.ji"; jj: "er.jj"; jk: "er.jk"; jl: "er.jl"; jm: "er.jm"; jn: "er.jn"; jo: "er.jo"; jp: "er.jp"; jq: "er.jq"; jr: "er.jr"; js: "er.js"; jt: "er.jt"; ju: "er.ju"; jv: "er.jv"; jw: "er.jw"; jx: "er.jx"; jy: "er.jy"; jz: "er.jz"; ka: "er.ka"; kb: "er.kb"; kc: "er.kc"; kd: "er.kd"; ke: "er.ke"; kf: "er.kf"; kg: "er.kg"; kh: "er.kh"; ki: "er.ki"; kj: "er.kj"; kk: "er.kk"; kl: "er.kl"; km: "er.km"; kn: "er.kn"; ko: "er.ko"; kp: "er.kp"; kq: "er.kq"; kr: "er.kr"; ks: "er.ks"; kt: "er.kt"; ku: "er.ku"; kv: "er.kv"; kw: "er.kw"; kx: "er.kx"; ky: "er.ky"; kz: "er.kz"; la: "er.la"; lb: "er.lb"; lc: "er.lc"; ld: "er.ld"; le: "er.le"; lf: "er.lf"; lg: "er.lg"; lh: "er.lh"; li: "er.li"; lj: "er.lj"; lk: "er.lk"; ll: "er.ll"; lm: "er.lm"; ln: "er.ln"; lo: "er.lo"; lp: "er.lp"; lq: "er.lq"; lr: "er.lr"; ls: "er.ls"; lt: "er.lt"; lu: "er.lu"; lv: "er.lv"; lw: "er.lw"; lx: "er.lx"; ly: "er.ly"; lz: "er.lz"; ma: "er.ma"; mb: "er.mb"; mc: "er.mc"; md: "er.md"; me: "er.me"; mf: "er.mf"; mg: "er.mg"; mh: "er.mh"; mi: "er.mi"; mj: "er.mj"; mk: "er.mk"; ml: "er.ml"; mm: "er.mm"; mn: "er.mn"; mo: "er.mo"; mp: "er.mp"; mq: "er.mq"; mr: "er.mr"; ms: "er.ms"; mt: "er.mt"; mu: "er.mu"; mv: "er.mv"; mw: "er.mw"; mx: "er.mx"; my: "er.my"; mz: "er.mz"; na: "er.na"; nb: "er.nb"; nc: "er.nc"; nd: "er.nd"; ne: "er.ne"; nf: "er.nf"; ng: "er.ng"; nh: "er.nh"; ni: "er.ni"; nj: "er.nj"; nk: "er.nk"; nl: "er.nl"; nm: "er.nm"; nn: "er.nn"; no: "er.no"; np: "er.np"; nq: "er.nq"; nr: "er.nr"; ns: "er.ns"; nt: "er.nt"; nu: "er.nu"; nv: "er.nv"; nw: "er.nw"; nx: "er.nx"; ny: "er.ny"; nz: "er.nz"; oa: "er.oa"; ob: "er.ob"; oc: "er.oc"; od: "er.od"; oe: "er.oe"; of: "er.of"; og: "er.og"; oh: "er.oh"; oi: "er.oi"; oj: "er.oj"; ok: "er.ok"; ol: "er.ol"; om: "er.om"; on: "er.on"; oo: "er.oo"; op: "er.op"; oq: "er.oq"; or: "er.or"; os: "er.os"; ot: "er.ot"; ou: "er.ou"; ov: "er.ov"; ow: "er.ow"; ox: "er.ox"; oy: "er.oy"; oz: "er.oz"; pa: "er.pa"; pb: "er.pb"; pc: "er.pc"; pd: "er.pd"; pe: "er.pe"; pf: "er.pf"; pg: "er.pg"; ph: "er.ph"; pi: "er.pi"; pj: "er.pj"; pk: "er.pk"; pl: "er.pl"; pm: "er.pm"; pn: "er.pn"; po: "er.po"; pp: "er.pp"; pq: "er.pq"; pr: "er.pr"; ps: "er.ps"; pt: "er.pt"; pu: "er.pu"; pv: "er.pv"; pw: "er.pw"; px: "er.px"; py: "er.py"; pz: "er.pz"; qa: "er.qa"; qb: "er.qb"; qc: "er.qc"; qd: "er.qd"; qe: "er.qe"; qf: "er.qf"; qg: "er.qg"; qh: "er.qh"; qi: "er.qi"; qj: "er.qj"; qk: "er.qk"; ql: "er.ql"; qm: "er.qm"; qn: "er.qn"; qo: "er.qo"; qp: "er.qp"; qq: "er.qq"; qr: "er.qr"; qs: "er.qs"; qt: "er.qt"; qu: "er.qu"; qv: "er.qv"; qw: "er.qw"; qx: "er.qx"; qy: "er.qy"; qz: "er.qz"; ra: "er.ra"; rb: "er.rb"; rc: "er.rc"; rd: "er.rd"; re: "er.re"; rf: "er.rf"; rg: "er.rg"; rh: "er.rh"; ri: "er.ri"; rj: "er.rj"; rk: "er.rk"; rl: "er.rl"; rm: "er.rm"; rn: "er.rn"; ro: "er.ro"; rp: "er.rp"; rq: "er.rq"; rr: "er.rr"; rs: "er.rs"; rt: "er.rt"; ru: "er.ru"; rv: "er.rv"; rw: "er.rw"; rx: "er.rx"; ry: "er.ry"; rz: "er.rz"; sa: "er.sa"; sb: "er.sb"; sc: "er.sc"; sd: "er.sd"; se: "er.se"; sf: "er.sf"; sg: "er.sg"; sh: "er.sh"; si: "er.si"; sj: "er.sj"; sk: "er.sk"; sl: "er.sl"; sm: "er.sm"; sn: "er.sn"; so: "er.so"; sp: "er.sp"; sq: "er.sq"; sr: "er.sr"; ss: "er.ss"; st: "er.st"; su: "er.su"; sv: "er.sv"; sw: "er.sw"; sx: "er.sx"; sy: "er.sy"; sz: "er.sz"; ta: "er.ta"; tb: "er.tb"; tc: "er.tc"; td: "er.td"; te: "er.te"; tf: "er.tf"; tg: "er.tg"; th: "er.th"; ti: "er.ti"; tj: "er.tj"; tk: "er.tk"; tl: "er.tl"; tm: "er.tm"; tn: "er.tn"; to: "er.to"; tp: "er.tp"; tq: "er.tq"; tr: "er.tr"; ts: "er.ts"; tt: "er.tt"; tu: "er.tu"; tv: "er.tv"; tw: "er.tw"; tx: "er.tx"; ty: "er.ty"; tz: "er.tz"; ua: "er.ua"; ub: "er.ub"; uc: "er.uc"; ud: "er.ud"; ue: "er.ue"; uf: "er.uf"; ug: "er.ug"; uh: "er.uh"; ui: "er.ui"; uj: "er.uj"; uk: "er.uk"; ul: "er.ul"; um: "er.um"; un: "er.un"; uo: "er.uo"; up: "er.up"; uq: "er.uq"; ur: "er.ur"; us: "er.us"; ut: "er.ut"; uu: "er.uu"; uv: "er.uv"; uw: "er.uw"; ux: "er.ux"; uy: "er.uy"; uz: "er.uz"; va: "er.va"; vb: "er.vb"; vc: "er.vc"; vd: "er.vd"; ve: "er.ve"; vf: "er.vf"; vg: "er.vg"; vh: "er.vh"; vi: "er.vi"; vj: "er.vj"; vk: "er.vk"; vl: "er.vl"; vm: "er.vm"; vn: "er.vn"; vo: "er.vo"; vp: "er.vp"; vq: "er.vq"; vr: "er.vr"; vs: "er.vs"; vt: "er.vt"; vu: "er.vu"; vv: "er.vv"; vw: "er.vw"; vx: "er.vx"; vy: "er.vy"; vz: "er.vz"; wa: "er.wa"; wb: "er.wb"; wc: "er.wc"; wd: "er.wd"; we: "er.we"; wf: "er.wf"; wg: "er.wg"; wh: "er.wh"; wi: "er.wi"; wj: "er.wj"; wk: "er.wk"; wl: "er.wl"; wm: "er.wm"; wn: "er.wn"; wo: "er.wo"; wp: "er.wp"; wq: "er.wq"; wr: "er.wr"; ws: "er.ws"; wt: "er.wt"; wu: "er.wu"; wv: "er.wv"; ww: "er.ww"; wx: "er.wx"; wy: "er.wy"; wz: "er.wz"; xa: "er.xa"; xb: "er.xb"; xc: "er.xc"; xd: "er.xd"; xe: "er.xe"; xf: "er.xf"; xg: "er.xg"; xh: "er.xh"; xi: "er.xi"; xj: "er.xj"; xk: "er.xk"; xl: "er.xl"; xm: "er.xm"; xn: "er.xn"; xo: "er.xo"; xp: "er.xp"; xq: "er.xq"; xr: "er.xr"; xs: "er.xs"; xt: "er.xt"; xu: "er.xu"; xv: "er.xv"; xw: "er.xw"; xx: "er.xx"; xy: "er.xy"; xz: "er.xz"; ya: "er.ya"; yb: "er.yb"; yc: "er.yc"; yd: "er.yd"; ye: "er.ye"; yf: "er.yf"; yg: "er.yg"; yh: "er.yh"; yi: "er.yi"; yj: "er.yj"; yk: "er.yk"; yl: "er.yl"; ym: "er.ym"; yn: "er.yn"; yo: "er.yo"; yp: "er.yp"; yq: "er.yq"; yr: "er.yr"; ys: "er.ys"; yt: "er.yt"; yu: "er.yu"; yv: "er.yv"; yw: "er.yw"; yx: "er.yx"; yy: "er.yy"; yz: "er.yz"; za: "er.za"; zb: "er.zb"; zc: "er.zc"; zd: "er.zd"; ze: "er.ze"; zf: "er.zf"; zg: "er.zg"; zh: "er.zh"; zi: "er.zi"; zj: "er.zj"; zk: "er.zk"; zl: "er.zl"; zm: "er.zm"; zn: "er.zn"; zo: "er.zo"; zp: "er.zp"; zq: "er.zq"; zr: "er.zr"; zs: "er.zs"; zt: "er.zt"; zu: "er.zu"; zv: "er.zv"; zw: "er.zw"; zx: "er.zx"; zy: "er.zy"; zz: "er.zz"; }; es: { aa: "es.aa"; ab: "es.ab"; ac: "es.ac"; ad: "es.ad"; ae: "es.ae"; af: "es.af"; ag: "es.ag"; ah: "es.ah"; ai: "es.ai"; aj: "es.aj"; ak: "es.ak"; al: "es.al"; am: "es.am"; an: "es.an"; ao: "es.ao"; ap: "es.ap"; aq: "es.aq"; ar: "es.ar"; as: "es.as"; at: "es.at"; au: "es.au"; av: "es.av"; aw: "es.aw"; ax: "es.ax"; ay: "es.ay"; az: "es.az"; ba: "es.ba"; bb: "es.bb"; bc: "es.bc"; bd: "es.bd"; be: "es.be"; bf: "es.bf"; bg: "es.bg"; bh: "es.bh"; bi: "es.bi"; bj: "es.bj"; bk: "es.bk"; bl: "es.bl"; bm: "es.bm"; bn: "es.bn"; bo: "es.bo"; bp: "es.bp"; bq: "es.bq"; br: "es.br"; bs: "es.bs"; bt: "es.bt"; bu: "es.bu"; bv: "es.bv"; bw: "es.bw"; bx: "es.bx"; by: "es.by"; bz: "es.bz"; ca: "es.ca"; cb: "es.cb"; cc: "es.cc"; cd: "es.cd"; ce: "es.ce"; cf: "es.cf"; cg: "es.cg"; ch: "es.ch"; ci: "es.ci"; cj: "es.cj"; ck: "es.ck"; cl: "es.cl"; cm: "es.cm"; cn: "es.cn"; co: "es.co"; cp: "es.cp"; cq: "es.cq"; cr: "es.cr"; cs: "es.cs"; ct: "es.ct"; cu: "es.cu"; cv: "es.cv"; cw: "es.cw"; cx: "es.cx"; cy: "es.cy"; cz: "es.cz"; da: "es.da"; db: "es.db"; dc: "es.dc"; dd: "es.dd"; de: "es.de"; df: "es.df"; dg: "es.dg"; dh: "es.dh"; di: "es.di"; dj: "es.dj"; dk: "es.dk"; dl: "es.dl"; dm: "es.dm"; dn: "es.dn"; do: "es.do"; dp: "es.dp"; dq: "es.dq"; dr: "es.dr"; ds: "es.ds"; dt: "es.dt"; du: "es.du"; dv: "es.dv"; dw: "es.dw"; dx: "es.dx"; dy: "es.dy"; dz: "es.dz"; ea: "es.ea"; eb: "es.eb"; ec: "es.ec"; ed: "es.ed"; ee: "es.ee"; ef: "es.ef"; eg: "es.eg"; eh: "es.eh"; ei: "es.ei"; ej: "es.ej"; ek: "es.ek"; el: "es.el"; em: "es.em"; en: "es.en"; eo: "es.eo"; ep: "es.ep"; eq: "es.eq"; er: "es.er"; es: "es.es"; et: "es.et"; eu: "es.eu"; ev: "es.ev"; ew: "es.ew"; ex: "es.ex"; ey: "es.ey"; ez: "es.ez"; fa: "es.fa"; fb: "es.fb"; fc: "es.fc"; fd: "es.fd"; fe: "es.fe"; ff: "es.ff"; fg: "es.fg"; fh: "es.fh"; fi: "es.fi"; fj: "es.fj"; fk: "es.fk"; fl: "es.fl"; fm: "es.fm"; fn: "es.fn"; fo: "es.fo"; fp: "es.fp"; fq: "es.fq"; fr: "es.fr"; fs: "es.fs"; ft: "es.ft"; fu: "es.fu"; fv: "es.fv"; fw: "es.fw"; fx: "es.fx"; fy: "es.fy"; fz: "es.fz"; ga: "es.ga"; gb: "es.gb"; gc: "es.gc"; gd: "es.gd"; ge: "es.ge"; gf: "es.gf"; gg: "es.gg"; gh: "es.gh"; gi: "es.gi"; gj: "es.gj"; gk: "es.gk"; gl: "es.gl"; gm: "es.gm"; gn: "es.gn"; go: "es.go"; gp: "es.gp"; gq: "es.gq"; gr: "es.gr"; gs: "es.gs"; gt: "es.gt"; gu: "es.gu"; gv: "es.gv"; gw: "es.gw"; gx: "es.gx"; gy: "es.gy"; gz: "es.gz"; ha: "es.ha"; hb: "es.hb"; hc: "es.hc"; hd: "es.hd"; he: "es.he"; hf: "es.hf"; hg: "es.hg"; hh: "es.hh"; hi: "es.hi"; hj: "es.hj"; hk: "es.hk"; hl: "es.hl"; hm: "es.hm"; hn: "es.hn"; ho: "es.ho"; hp: "es.hp"; hq: "es.hq"; hr: "es.hr"; hs: "es.hs"; ht: "es.ht"; hu: "es.hu"; hv: "es.hv"; hw: "es.hw"; hx: "es.hx"; hy: "es.hy"; hz: "es.hz"; ia: "es.ia"; ib: "es.ib"; ic: "es.ic"; id: "es.id"; ie: "es.ie"; if: "es.if"; ig: "es.ig"; ih: "es.ih"; ii: "es.ii"; ij: "es.ij"; ik: "es.ik"; il: "es.il"; im: "es.im"; in: "es.in"; io: "es.io"; ip: "es.ip"; iq: "es.iq"; ir: "es.ir"; is: "es.is"; it: "es.it"; iu: "es.iu"; iv: "es.iv"; iw: "es.iw"; ix: "es.ix"; iy: "es.iy"; iz: "es.iz"; ja: "es.ja"; jb: "es.jb"; jc: "es.jc"; jd: "es.jd"; je: "es.je"; jf: "es.jf"; jg: "es.jg"; jh: "es.jh"; ji: "es.ji"; jj: "es.jj"; jk: "es.jk"; jl: "es.jl"; jm: "es.jm"; jn: "es.jn"; jo: "es.jo"; jp: "es.jp"; jq: "es.jq"; jr: "es.jr"; js: "es.js"; jt: "es.jt"; ju: "es.ju"; jv: "es.jv"; jw: "es.jw"; jx: "es.jx"; jy: "es.jy"; jz: "es.jz"; ka: "es.ka"; kb: "es.kb"; kc: "es.kc"; kd: "es.kd"; ke: "es.ke"; kf: "es.kf"; kg: "es.kg"; kh: "es.kh"; ki: "es.ki"; kj: "es.kj"; kk: "es.kk"; kl: "es.kl"; km: "es.km"; kn: "es.kn"; ko: "es.ko"; kp: "es.kp"; kq: "es.kq"; kr: "es.kr"; ks: "es.ks"; kt: "es.kt"; ku: "es.ku"; kv: "es.kv"; kw: "es.kw"; kx: "es.kx"; ky: "es.ky"; kz: "es.kz"; la: "es.la"; lb: "es.lb"; lc: "es.lc"; ld: "es.ld"; le: "es.le"; lf: "es.lf"; lg: "es.lg"; lh: "es.lh"; li: "es.li"; lj: "es.lj"; lk: "es.lk"; ll: "es.ll"; lm: "es.lm"; ln: "es.ln"; lo: "es.lo"; lp: "es.lp"; lq: "es.lq"; lr: "es.lr"; ls: "es.ls"; lt: "es.lt"; lu: "es.lu"; lv: "es.lv"; lw: "es.lw"; lx: "es.lx"; ly: "es.ly"; lz: "es.lz"; ma: "es.ma"; mb: "es.mb"; mc: "es.mc"; md: "es.md"; me: "es.me"; mf: "es.mf"; mg: "es.mg"; mh: "es.mh"; mi: "es.mi"; mj: "es.mj"; mk: "es.mk"; ml: "es.ml"; mm: "es.mm"; mn: "es.mn"; mo: "es.mo"; mp: "es.mp"; mq: "es.mq"; mr: "es.mr"; ms: "es.ms"; mt: "es.mt"; mu: "es.mu"; mv: "es.mv"; mw: "es.mw"; mx: "es.mx"; my: "es.my"; mz: "es.mz"; na: "es.na"; nb: "es.nb"; nc: "es.nc"; nd: "es.nd"; ne: "es.ne"; nf: "es.nf"; ng: "es.ng"; nh: "es.nh"; ni: "es.ni"; nj: "es.nj"; nk: "es.nk"; nl: "es.nl"; nm: "es.nm"; nn: "es.nn"; no: "es.no"; np: "es.np"; nq: "es.nq"; nr: "es.nr"; ns: "es.ns"; nt: "es.nt"; nu: "es.nu"; nv: "es.nv"; nw: "es.nw"; nx: "es.nx"; ny: "es.ny"; nz: "es.nz"; oa: "es.oa"; ob: "es.ob"; oc: "es.oc"; od: "es.od"; oe: "es.oe"; of: "es.of"; og: "es.og"; oh: "es.oh"; oi: "es.oi"; oj: "es.oj"; ok: "es.ok"; ol: "es.ol"; om: "es.om"; on: "es.on"; oo: "es.oo"; op: "es.op"; oq: "es.oq"; or: "es.or"; os: "es.os"; ot: "es.ot"; ou: "es.ou"; ov: "es.ov"; ow: "es.ow"; ox: "es.ox"; oy: "es.oy"; oz: "es.oz"; pa: "es.pa"; pb: "es.pb"; pc: "es.pc"; pd: "es.pd"; pe: "es.pe"; pf: "es.pf"; pg: "es.pg"; ph: "es.ph"; pi: "es.pi"; pj: "es.pj"; pk: "es.pk"; pl: "es.pl"; pm: "es.pm"; pn: "es.pn"; po: "es.po"; pp: "es.pp"; pq: "es.pq"; pr: "es.pr"; ps: "es.ps"; pt: "es.pt"; pu: "es.pu"; pv: "es.pv"; pw: "es.pw"; px: "es.px"; py: "es.py"; pz: "es.pz"; qa: "es.qa"; qb: "es.qb"; qc: "es.qc"; qd: "es.qd"; qe: "es.qe"; qf: "es.qf"; qg: "es.qg"; qh: "es.qh"; qi: "es.qi"; qj: "es.qj"; qk: "es.qk"; ql: "es.ql"; qm: "es.qm"; qn: "es.qn"; qo: "es.qo"; qp: "es.qp"; qq: "es.qq"; qr: "es.qr"; qs: "es.qs"; qt: "es.qt"; qu: "es.qu"; qv: "es.qv"; qw: "es.qw"; qx: "es.qx"; qy: "es.qy"; qz: "es.qz"; ra: "es.ra"; rb: "es.rb"; rc: "es.rc"; rd: "es.rd"; re: "es.re"; rf: "es.rf"; rg: "es.rg"; rh: "es.rh"; ri: "es.ri"; rj: "es.rj"; rk: "es.rk"; rl: "es.rl"; rm: "es.rm"; rn: "es.rn"; ro: "es.ro"; rp: "es.rp"; rq: "es.rq"; rr: "es.rr"; rs: "es.rs"; rt: "es.rt"; ru: "es.ru"; rv: "es.rv"; rw: "es.rw"; rx: "es.rx"; ry: "es.ry"; rz: "es.rz"; sa: "es.sa"; sb: "es.sb"; sc: "es.sc"; sd: "es.sd"; se: "es.se"; sf: "es.sf"; sg: "es.sg"; sh: "es.sh"; si: "es.si"; sj: "es.sj"; sk: "es.sk"; sl: "es.sl"; sm: "es.sm"; sn: "es.sn"; so: "es.so"; sp: "es.sp"; sq: "es.sq"; sr: "es.sr"; ss: "es.ss"; st: "es.st"; su: "es.su"; sv: "es.sv"; sw: "es.sw"; sx: "es.sx"; sy: "es.sy"; sz: "es.sz"; ta: "es.ta"; tb: "es.tb"; tc: "es.tc"; td: "es.td"; te: "es.te"; tf: "es.tf"; tg: "es.tg"; th: "es.th"; ti: "es.ti"; tj: "es.tj"; tk: "es.tk"; tl: "es.tl"; tm: "es.tm"; tn: "es.tn"; to: "es.to"; tp: "es.tp"; tq: "es.tq"; tr: "es.tr"; ts: "es.ts"; tt: "es.tt"; tu: "es.tu"; tv: "es.tv"; tw: "es.tw"; tx: "es.tx"; ty: "es.ty"; tz: "es.tz"; ua: "es.ua"; ub: "es.ub"; uc: "es.uc"; ud: "es.ud"; ue: "es.ue"; uf: "es.uf"; ug: "es.ug"; uh: "es.uh"; ui: "es.ui"; uj: "es.uj"; uk: "es.uk"; ul: "es.ul"; um: "es.um"; un: "es.un"; uo: "es.uo"; up: "es.up"; uq: "es.uq"; ur: "es.ur"; us: "es.us"; ut: "es.ut"; uu: "es.uu"; uv: "es.uv"; uw: "es.uw"; ux: "es.ux"; uy: "es.uy"; uz: "es.uz"; va: "es.va"; vb: "es.vb"; vc: "es.vc"; vd: "es.vd"; ve: "es.ve"; vf: "es.vf"; vg: "es.vg"; vh: "es.vh"; vi: "es.vi"; vj: "es.vj"; vk: "es.vk"; vl: "es.vl"; vm: "es.vm"; vn: "es.vn"; vo: "es.vo"; vp: "es.vp"; vq: "es.vq"; vr: "es.vr"; vs: "es.vs"; vt: "es.vt"; vu: "es.vu"; vv: "es.vv"; vw: "es.vw"; vx: "es.vx"; vy: "es.vy"; vz: "es.vz"; wa: "es.wa"; wb: "es.wb"; wc: "es.wc"; wd: "es.wd"; we: "es.we"; wf: "es.wf"; wg: "es.wg"; wh: "es.wh"; wi: "es.wi"; wj: "es.wj"; wk: "es.wk"; wl: "es.wl"; wm: "es.wm"; wn: "es.wn"; wo: "es.wo"; wp: "es.wp"; wq: "es.wq"; wr: "es.wr"; ws: "es.ws"; wt: "es.wt"; wu: "es.wu"; wv: "es.wv"; ww: "es.ww"; wx: "es.wx"; wy: "es.wy"; wz: "es.wz"; xa: "es.xa"; xb: "es.xb"; xc: "es.xc"; xd: "es.xd"; xe: "es.xe"; xf: "es.xf"; xg: "es.xg"; xh: "es.xh"; xi: "es.xi"; xj: "es.xj"; xk: "es.xk"; xl: "es.xl"; xm: "es.xm"; xn: "es.xn"; xo: "es.xo"; xp: "es.xp"; xq: "es.xq"; xr: "es.xr"; xs: "es.xs"; xt: "es.xt"; xu: "es.xu"; xv: "es.xv"; xw: "es.xw"; xx: "es.xx"; xy: "es.xy"; xz: "es.xz"; ya: "es.ya"; yb: "es.yb"; yc: "es.yc"; yd: "es.yd"; ye: "es.ye"; yf: "es.yf"; yg: "es.yg"; yh: "es.yh"; yi: "es.yi"; yj: "es.yj"; yk: "es.yk"; yl: "es.yl"; ym: "es.ym"; yn: "es.yn"; yo: "es.yo"; yp: "es.yp"; yq: "es.yq"; yr: "es.yr"; ys: "es.ys"; yt: "es.yt"; yu: "es.yu"; yv: "es.yv"; yw: "es.yw"; yx: "es.yx"; yy: "es.yy"; yz: "es.yz"; za: "es.za"; zb: "es.zb"; zc: "es.zc"; zd: "es.zd"; ze: "es.ze"; zf: "es.zf"; zg: "es.zg"; zh: "es.zh"; zi: "es.zi"; zj: "es.zj"; zk: "es.zk"; zl: "es.zl"; zm: "es.zm"; zn: "es.zn"; zo: "es.zo"; zp: "es.zp"; zq: "es.zq"; zr: "es.zr"; zs: "es.zs"; zt: "es.zt"; zu: "es.zu"; zv: "es.zv"; zw: "es.zw"; zx: "es.zx"; zy: "es.zy"; zz: "es.zz"; }; et: { aa: "et.aa"; ab: "et.ab"; ac: "et.ac"; ad: "et.ad"; ae: "et.ae"; af: "et.af"; ag: "et.ag"; ah: "et.ah"; ai: "et.ai"; aj: "et.aj"; ak: "et.ak"; al: "et.al"; am: "et.am"; an: "et.an"; ao: "et.ao"; ap: "et.ap"; aq: "et.aq"; ar: "et.ar"; as: "et.as"; at: "et.at"; au: "et.au"; av: "et.av"; aw: "et.aw"; ax: "et.ax"; ay: "et.ay"; az: "et.az"; ba: "et.ba"; bb: "et.bb"; bc: "et.bc"; bd: "et.bd"; be: "et.be"; bf: "et.bf"; bg: "et.bg"; bh: "et.bh"; bi: "et.bi"; bj: "et.bj"; bk: "et.bk"; bl: "et.bl"; bm: "et.bm"; bn: "et.bn"; bo: "et.bo"; bp: "et.bp"; bq: "et.bq"; br: "et.br"; bs: "et.bs"; bt: "et.bt"; bu: "et.bu"; bv: "et.bv"; bw: "et.bw"; bx: "et.bx"; by: "et.by"; bz: "et.bz"; ca: "et.ca"; cb: "et.cb"; cc: "et.cc"; cd: "et.cd"; ce: "et.ce"; cf: "et.cf"; cg: "et.cg"; ch: "et.ch"; ci: "et.ci"; cj: "et.cj"; ck: "et.ck"; cl: "et.cl"; cm: "et.cm"; cn: "et.cn"; co: "et.co"; cp: "et.cp"; cq: "et.cq"; cr: "et.cr"; cs: "et.cs"; ct: "et.ct"; cu: "et.cu"; cv: "et.cv"; cw: "et.cw"; cx: "et.cx"; cy: "et.cy"; cz: "et.cz"; da: "et.da"; db: "et.db"; dc: "et.dc"; dd: "et.dd"; de: "et.de"; df: "et.df"; dg: "et.dg"; dh: "et.dh"; di: "et.di"; dj: "et.dj"; dk: "et.dk"; dl: "et.dl"; dm: "et.dm"; dn: "et.dn"; do: "et.do"; dp: "et.dp"; dq: "et.dq"; dr: "et.dr"; ds: "et.ds"; dt: "et.dt"; du: "et.du"; dv: "et.dv"; dw: "et.dw"; dx: "et.dx"; dy: "et.dy"; dz: "et.dz"; ea: "et.ea"; eb: "et.eb"; ec: "et.ec"; ed: "et.ed"; ee: "et.ee"; ef: "et.ef"; eg: "et.eg"; eh: "et.eh"; ei: "et.ei"; ej: "et.ej"; ek: "et.ek"; el: "et.el"; em: "et.em"; en: "et.en"; eo: "et.eo"; ep: "et.ep"; eq: "et.eq"; er: "et.er"; es: "et.es"; et: "et.et"; eu: "et.eu"; ev: "et.ev"; ew: "et.ew"; ex: "et.ex"; ey: "et.ey"; ez: "et.ez"; fa: "et.fa"; fb: "et.fb"; fc: "et.fc"; fd: "et.fd"; fe: "et.fe"; ff: "et.ff"; fg: "et.fg"; fh: "et.fh"; fi: "et.fi"; fj: "et.fj"; fk: "et.fk"; fl: "et.fl"; fm: "et.fm"; fn: "et.fn"; fo: "et.fo"; fp: "et.fp"; fq: "et.fq"; fr: "et.fr"; fs: "et.fs"; ft: "et.ft"; fu: "et.fu"; fv: "et.fv"; fw: "et.fw"; fx: "et.fx"; fy: "et.fy"; fz: "et.fz"; ga: "et.ga"; gb: "et.gb"; gc: "et.gc"; gd: "et.gd"; ge: "et.ge"; gf: "et.gf"; gg: "et.gg"; gh: "et.gh"; gi: "et.gi"; gj: "et.gj"; gk: "et.gk"; gl: "et.gl"; gm: "et.gm"; gn: "et.gn"; go: "et.go"; gp: "et.gp"; gq: "et.gq"; gr: "et.gr"; gs: "et.gs"; gt: "et.gt"; gu: "et.gu"; gv: "et.gv"; gw: "et.gw"; gx: "et.gx"; gy: "et.gy"; gz: "et.gz"; ha: "et.ha"; hb: "et.hb"; hc: "et.hc"; hd: "et.hd"; he: "et.he"; hf: "et.hf"; hg: "et.hg"; hh: "et.hh"; hi: "et.hi"; hj: "et.hj"; hk: "et.hk"; hl: "et.hl"; hm: "et.hm"; hn: "et.hn"; ho: "et.ho"; hp: "et.hp"; hq: "et.hq"; hr: "et.hr"; hs: "et.hs"; ht: "et.ht"; hu: "et.hu"; hv: "et.hv"; hw: "et.hw"; hx: "et.hx"; hy: "et.hy"; hz: "et.hz"; ia: "et.ia"; ib: "et.ib"; ic: "et.ic"; id: "et.id"; ie: "et.ie"; if: "et.if"; ig: "et.ig"; ih: "et.ih"; ii: "et.ii"; ij: "et.ij"; ik: "et.ik"; il: "et.il"; im: "et.im"; in: "et.in"; io: "et.io"; ip: "et.ip"; iq: "et.iq"; ir: "et.ir"; is: "et.is"; it: "et.it"; iu: "et.iu"; iv: "et.iv"; iw: "et.iw"; ix: "et.ix"; iy: "et.iy"; iz: "et.iz"; ja: "et.ja"; jb: "et.jb"; jc: "et.jc"; jd: "et.jd"; je: "et.je"; jf: "et.jf"; jg: "et.jg"; jh: "et.jh"; ji: "et.ji"; jj: "et.jj"; jk: "et.jk"; jl: "et.jl"; jm: "et.jm"; jn: "et.jn"; jo: "et.jo"; jp: "et.jp"; jq: "et.jq"; jr: "et.jr"; js: "et.js"; jt: "et.jt"; ju: "et.ju"; jv: "et.jv"; jw: "et.jw"; jx: "et.jx"; jy: "et.jy"; jz: "et.jz"; ka: "et.ka"; kb: "et.kb"; kc: "et.kc"; kd: "et.kd"; ke: "et.ke"; kf: "et.kf"; kg: "et.kg"; kh: "et.kh"; ki: "et.ki"; kj: "et.kj"; kk: "et.kk"; kl: "et.kl"; km: "et.km"; kn: "et.kn"; ko: "et.ko"; kp: "et.kp"; kq: "et.kq"; kr: "et.kr"; ks: "et.ks"; kt: "et.kt"; ku: "et.ku"; kv: "et.kv"; kw: "et.kw"; kx: "et.kx"; ky: "et.ky"; kz: "et.kz"; la: "et.la"; lb: "et.lb"; lc: "et.lc"; ld: "et.ld"; le: "et.le"; lf: "et.lf"; lg: "et.lg"; lh: "et.lh"; li: "et.li"; lj: "et.lj"; lk: "et.lk"; ll: "et.ll"; lm: "et.lm"; ln: "et.ln"; lo: "et.lo"; lp: "et.lp"; lq: "et.lq"; lr: "et.lr"; ls: "et.ls"; lt: "et.lt"; lu: "et.lu"; lv: "et.lv"; lw: "et.lw"; lx: "et.lx"; ly: "et.ly"; lz: "et.lz"; ma: "et.ma"; mb: "et.mb"; mc: "et.mc"; md: "et.md"; me: "et.me"; mf: "et.mf"; mg: "et.mg"; mh: "et.mh"; mi: "et.mi"; mj: "et.mj"; mk: "et.mk"; ml: "et.ml"; mm: "et.mm"; mn: "et.mn"; mo: "et.mo"; mp: "et.mp"; mq: "et.mq"; mr: "et.mr"; ms: "et.ms"; mt: "et.mt"; mu: "et.mu"; mv: "et.mv"; mw: "et.mw"; mx: "et.mx"; my: "et.my"; mz: "et.mz"; na: "et.na"; nb: "et.nb"; nc: "et.nc"; nd: "et.nd"; ne: "et.ne"; nf: "et.nf"; ng: "et.ng"; nh: "et.nh"; ni: "et.ni"; nj: "et.nj"; nk: "et.nk"; nl: "et.nl"; nm: "et.nm"; nn: "et.nn"; no: "et.no"; np: "et.np"; nq: "et.nq"; nr: "et.nr"; ns: "et.ns"; nt: "et.nt"; nu: "et.nu"; nv: "et.nv"; nw: "et.nw"; nx: "et.nx"; ny: "et.ny"; nz: "et.nz"; oa: "et.oa"; ob: "et.ob"; oc: "et.oc"; od: "et.od"; oe: "et.oe"; of: "et.of"; og: "et.og"; oh: "et.oh"; oi: "et.oi"; oj: "et.oj"; ok: "et.ok"; ol: "et.ol"; om: "et.om"; on: "et.on"; oo: "et.oo"; op: "et.op"; oq: "et.oq"; or: "et.or"; os: "et.os"; ot: "et.ot"; ou: "et.ou"; ov: "et.ov"; ow: "et.ow"; ox: "et.ox"; oy: "et.oy"; oz: "et.oz"; pa: "et.pa"; pb: "et.pb"; pc: "et.pc"; pd: "et.pd"; pe: "et.pe"; pf: "et.pf"; pg: "et.pg"; ph: "et.ph"; pi: "et.pi"; pj: "et.pj"; pk: "et.pk"; pl: "et.pl"; pm: "et.pm"; pn: "et.pn"; po: "et.po"; pp: "et.pp"; pq: "et.pq"; pr: "et.pr"; ps: "et.ps"; pt: "et.pt"; pu: "et.pu"; pv: "et.pv"; pw: "et.pw"; px: "et.px"; py: "et.py"; pz: "et.pz"; qa: "et.qa"; qb: "et.qb"; qc: "et.qc"; qd: "et.qd"; qe: "et.qe"; qf: "et.qf"; qg: "et.qg"; qh: "et.qh"; qi: "et.qi"; qj: "et.qj"; qk: "et.qk"; ql: "et.ql"; qm: "et.qm"; qn: "et.qn"; qo: "et.qo"; qp: "et.qp"; qq: "et.qq"; qr: "et.qr"; qs: "et.qs"; qt: "et.qt"; qu: "et.qu"; qv: "et.qv"; qw: "et.qw"; qx: "et.qx"; qy: "et.qy"; qz: "et.qz"; ra: "et.ra"; rb: "et.rb"; rc: "et.rc"; rd: "et.rd"; re: "et.re"; rf: "et.rf"; rg: "et.rg"; rh: "et.rh"; ri: "et.ri"; rj: "et.rj"; rk: "et.rk"; rl: "et.rl"; rm: "et.rm"; rn: "et.rn"; ro: "et.ro"; rp: "et.rp"; rq: "et.rq"; rr: "et.rr"; rs: "et.rs"; rt: "et.rt"; ru: "et.ru"; rv: "et.rv"; rw: "et.rw"; rx: "et.rx"; ry: "et.ry"; rz: "et.rz"; sa: "et.sa"; sb: "et.sb"; sc: "et.sc"; sd: "et.sd"; se: "et.se"; sf: "et.sf"; sg: "et.sg"; sh: "et.sh"; si: "et.si"; sj: "et.sj"; sk: "et.sk"; sl: "et.sl"; sm: "et.sm"; sn: "et.sn"; so: "et.so"; sp: "et.sp"; sq: "et.sq"; sr: "et.sr"; ss: "et.ss"; st: "et.st"; su: "et.su"; sv: "et.sv"; sw: "et.sw"; sx: "et.sx"; sy: "et.sy"; sz: "et.sz"; ta: "et.ta"; tb: "et.tb"; tc: "et.tc"; td: "et.td"; te: "et.te"; tf: "et.tf"; tg: "et.tg"; th: "et.th"; ti: "et.ti"; tj: "et.tj"; tk: "et.tk"; tl: "et.tl"; tm: "et.tm"; tn: "et.tn"; to: "et.to"; tp: "et.tp"; tq: "et.tq"; tr: "et.tr"; ts: "et.ts"; tt: "et.tt"; tu: "et.tu"; tv: "et.tv"; tw: "et.tw"; tx: "et.tx"; ty: "et.ty"; tz: "et.tz"; ua: "et.ua"; ub: "et.ub"; uc: "et.uc"; ud: "et.ud"; ue: "et.ue"; uf: "et.uf"; ug: "et.ug"; uh: "et.uh"; ui: "et.ui"; uj: "et.uj"; uk: "et.uk"; ul: "et.ul"; um: "et.um"; un: "et.un"; uo: "et.uo"; up: "et.up"; uq: "et.uq"; ur: "et.ur"; us: "et.us"; ut: "et.ut"; uu: "et.uu"; uv: "et.uv"; uw: "et.uw"; ux: "et.ux"; uy: "et.uy"; uz: "et.uz"; va: "et.va"; vb: "et.vb"; vc: "et.vc"; vd: "et.vd"; ve: "et.ve"; vf: "et.vf"; vg: "et.vg"; vh: "et.vh"; vi: "et.vi"; vj: "et.vj"; vk: "et.vk"; vl: "et.vl"; vm: "et.vm"; vn: "et.vn"; vo: "et.vo"; vp: "et.vp"; vq: "et.vq"; vr: "et.vr"; vs: "et.vs"; vt: "et.vt"; vu: "et.vu"; vv: "et.vv"; vw: "et.vw"; vx: "et.vx"; vy: "et.vy"; vz: "et.vz"; wa: "et.wa"; wb: "et.wb"; wc: "et.wc"; wd: "et.wd"; we: "et.we"; wf: "et.wf"; wg: "et.wg"; wh: "et.wh"; wi: "et.wi"; wj: "et.wj"; wk: "et.wk"; wl: "et.wl"; wm: "et.wm"; wn: "et.wn"; wo: "et.wo"; wp: "et.wp"; wq: "et.wq"; wr: "et.wr"; ws: "et.ws"; wt: "et.wt"; wu: "et.wu"; wv: "et.wv"; ww: "et.ww"; wx: "et.wx"; wy: "et.wy"; wz: "et.wz"; xa: "et.xa"; xb: "et.xb"; xc: "et.xc"; xd: "et.xd"; xe: "et.xe"; xf: "et.xf"; xg: "et.xg"; xh: "et.xh"; xi: "et.xi"; xj: "et.xj"; xk: "et.xk"; xl: "et.xl"; xm: "et.xm"; xn: "et.xn"; xo: "et.xo"; xp: "et.xp"; xq: "et.xq"; xr: "et.xr"; xs: "et.xs"; xt: "et.xt"; xu: "et.xu"; xv: "et.xv"; xw: "et.xw"; xx: "et.xx"; xy: "et.xy"; xz: "et.xz"; ya: "et.ya"; yb: "et.yb"; yc: "et.yc"; yd: "et.yd"; ye: "et.ye"; yf: "et.yf"; yg: "et.yg"; yh: "et.yh"; yi: "et.yi"; yj: "et.yj"; yk: "et.yk"; yl: "et.yl"; ym: "et.ym"; yn: "et.yn"; yo: "et.yo"; yp: "et.yp"; yq: "et.yq"; yr: "et.yr"; ys: "et.ys"; yt: "et.yt"; yu: "et.yu"; yv: "et.yv"; yw: "et.yw"; yx: "et.yx"; yy: "et.yy"; yz: "et.yz"; za: "et.za"; zb: "et.zb"; zc: "et.zc"; zd: "et.zd"; ze: "et.ze"; zf: "et.zf"; zg: "et.zg"; zh: "et.zh"; zi: "et.zi"; zj: "et.zj"; zk: "et.zk"; zl: "et.zl"; zm: "et.zm"; zn: "et.zn"; zo: "et.zo"; zp: "et.zp"; zq: "et.zq"; zr: "et.zr"; zs: "et.zs"; zt: "et.zt"; zu: "et.zu"; zv: "et.zv"; zw: "et.zw"; zx: "et.zx"; zy: "et.zy"; zz: "et.zz"; }; eu: { aa: "eu.aa"; ab: "eu.ab"; ac: "eu.ac"; ad: "eu.ad"; ae: "eu.ae"; af: "eu.af"; ag: "eu.ag"; ah: "eu.ah"; ai: "eu.ai"; aj: "eu.aj"; ak: "eu.ak"; al: "eu.al"; am: "eu.am"; an: "eu.an"; ao: "eu.ao"; ap: "eu.ap"; aq: "eu.aq"; ar: "eu.ar"; as: "eu.as"; at: "eu.at"; au: "eu.au"; av: "eu.av"; aw: "eu.aw"; ax: "eu.ax"; ay: "eu.ay"; az: "eu.az"; ba: "eu.ba"; bb: "eu.bb"; bc: "eu.bc"; bd: "eu.bd"; be: "eu.be"; bf: "eu.bf"; bg: "eu.bg"; bh: "eu.bh"; bi: "eu.bi"; bj: "eu.bj"; bk: "eu.bk"; bl: "eu.bl"; bm: "eu.bm"; bn: "eu.bn"; bo: "eu.bo"; bp: "eu.bp"; bq: "eu.bq"; br: "eu.br"; bs: "eu.bs"; bt: "eu.bt"; bu: "eu.bu"; bv: "eu.bv"; bw: "eu.bw"; bx: "eu.bx"; by: "eu.by"; bz: "eu.bz"; ca: "eu.ca"; cb: "eu.cb"; cc: "eu.cc"; cd: "eu.cd"; ce: "eu.ce"; cf: "eu.cf"; cg: "eu.cg"; ch: "eu.ch"; ci: "eu.ci"; cj: "eu.cj"; ck: "eu.ck"; cl: "eu.cl"; cm: "eu.cm"; cn: "eu.cn"; co: "eu.co"; cp: "eu.cp"; cq: "eu.cq"; cr: "eu.cr"; cs: "eu.cs"; ct: "eu.ct"; cu: "eu.cu"; cv: "eu.cv"; cw: "eu.cw"; cx: "eu.cx"; cy: "eu.cy"; cz: "eu.cz"; da: "eu.da"; db: "eu.db"; dc: "eu.dc"; dd: "eu.dd"; de: "eu.de"; df: "eu.df"; dg: "eu.dg"; dh: "eu.dh"; di: "eu.di"; dj: "eu.dj"; dk: "eu.dk"; dl: "eu.dl"; dm: "eu.dm"; dn: "eu.dn"; do: "eu.do"; dp: "eu.dp"; dq: "eu.dq"; dr: "eu.dr"; ds: "eu.ds"; dt: "eu.dt"; du: "eu.du"; dv: "eu.dv"; dw: "eu.dw"; dx: "eu.dx"; dy: "eu.dy"; dz: "eu.dz"; ea: "eu.ea"; eb: "eu.eb"; ec: "eu.ec"; ed: "eu.ed"; ee: "eu.ee"; ef: "eu.ef"; eg: "eu.eg"; eh: "eu.eh"; ei: "eu.ei"; ej: "eu.ej"; ek: "eu.ek"; el: "eu.el"; em: "eu.em"; en: "eu.en"; eo: "eu.eo"; ep: "eu.ep"; eq: "eu.eq"; er: "eu.er"; es: "eu.es"; et: "eu.et"; eu: "eu.eu"; ev: "eu.ev"; ew: "eu.ew"; ex: "eu.ex"; ey: "eu.ey"; ez: "eu.ez"; fa: "eu.fa"; fb: "eu.fb"; fc: "eu.fc"; fd: "eu.fd"; fe: "eu.fe"; ff: "eu.ff"; fg: "eu.fg"; fh: "eu.fh"; fi: "eu.fi"; fj: "eu.fj"; fk: "eu.fk"; fl: "eu.fl"; fm: "eu.fm"; fn: "eu.fn"; fo: "eu.fo"; fp: "eu.fp"; fq: "eu.fq"; fr: "eu.fr"; fs: "eu.fs"; ft: "eu.ft"; fu: "eu.fu"; fv: "eu.fv"; fw: "eu.fw"; fx: "eu.fx"; fy: "eu.fy"; fz: "eu.fz"; ga: "eu.ga"; gb: "eu.gb"; gc: "eu.gc"; gd: "eu.gd"; ge: "eu.ge"; gf: "eu.gf"; gg: "eu.gg"; gh: "eu.gh"; gi: "eu.gi"; gj: "eu.gj"; gk: "eu.gk"; gl: "eu.gl"; gm: "eu.gm"; gn: "eu.gn"; go: "eu.go"; gp: "eu.gp"; gq: "eu.gq"; gr: "eu.gr"; gs: "eu.gs"; gt: "eu.gt"; gu: "eu.gu"; gv: "eu.gv"; gw: "eu.gw"; gx: "eu.gx"; gy: "eu.gy"; gz: "eu.gz"; ha: "eu.ha"; hb: "eu.hb"; hc: "eu.hc"; hd: "eu.hd"; he: "eu.he"; hf: "eu.hf"; hg: "eu.hg"; hh: "eu.hh"; hi: "eu.hi"; hj: "eu.hj"; hk: "eu.hk"; hl: "eu.hl"; hm: "eu.hm"; hn: "eu.hn"; ho: "eu.ho"; hp: "eu.hp"; hq: "eu.hq"; hr: "eu.hr"; hs: "eu.hs"; ht: "eu.ht"; hu: "eu.hu"; hv: "eu.hv"; hw: "eu.hw"; hx: "eu.hx"; hy: "eu.hy"; hz: "eu.hz"; ia: "eu.ia"; ib: "eu.ib"; ic: "eu.ic"; id: "eu.id"; ie: "eu.ie"; if: "eu.if"; ig: "eu.ig"; ih: "eu.ih"; ii: "eu.ii"; ij: "eu.ij"; ik: "eu.ik"; il: "eu.il"; im: "eu.im"; in: "eu.in"; io: "eu.io"; ip: "eu.ip"; iq: "eu.iq"; ir: "eu.ir"; is: "eu.is"; it: "eu.it"; iu: "eu.iu"; iv: "eu.iv"; iw: "eu.iw"; ix: "eu.ix"; iy: "eu.iy"; iz: "eu.iz"; ja: "eu.ja"; jb: "eu.jb"; jc: "eu.jc"; jd: "eu.jd"; je: "eu.je"; jf: "eu.jf"; jg: "eu.jg"; jh: "eu.jh"; ji: "eu.ji"; jj: "eu.jj"; jk: "eu.jk"; jl: "eu.jl"; jm: "eu.jm"; jn: "eu.jn"; jo: "eu.jo"; jp: "eu.jp"; jq: "eu.jq"; jr: "eu.jr"; js: "eu.js"; jt: "eu.jt"; ju: "eu.ju"; jv: "eu.jv"; jw: "eu.jw"; jx: "eu.jx"; jy: "eu.jy"; jz: "eu.jz"; ka: "eu.ka"; kb: "eu.kb"; kc: "eu.kc"; kd: "eu.kd"; ke: "eu.ke"; kf: "eu.kf"; kg: "eu.kg"; kh: "eu.kh"; ki: "eu.ki"; kj: "eu.kj"; kk: "eu.kk"; kl: "eu.kl"; km: "eu.km"; kn: "eu.kn"; ko: "eu.ko"; kp: "eu.kp"; kq: "eu.kq"; kr: "eu.kr"; ks: "eu.ks"; kt: "eu.kt"; ku: "eu.ku"; kv: "eu.kv"; kw: "eu.kw"; kx: "eu.kx"; ky: "eu.ky"; kz: "eu.kz"; la: "eu.la"; lb: "eu.lb"; lc: "eu.lc"; ld: "eu.ld"; le: "eu.le"; lf: "eu.lf"; lg: "eu.lg"; lh: "eu.lh"; li: "eu.li"; lj: "eu.lj"; lk: "eu.lk"; ll: "eu.ll"; lm: "eu.lm"; ln: "eu.ln"; lo: "eu.lo"; lp: "eu.lp"; lq: "eu.lq"; lr: "eu.lr"; ls: "eu.ls"; lt: "eu.lt"; lu: "eu.lu"; lv: "eu.lv"; lw: "eu.lw"; lx: "eu.lx"; ly: "eu.ly"; lz: "eu.lz"; ma: "eu.ma"; mb: "eu.mb"; mc: "eu.mc"; md: "eu.md"; me: "eu.me"; mf: "eu.mf"; mg: "eu.mg"; mh: "eu.mh"; mi: "eu.mi"; mj: "eu.mj"; mk: "eu.mk"; ml: "eu.ml"; mm: "eu.mm"; mn: "eu.mn"; mo: "eu.mo"; mp: "eu.mp"; mq: "eu.mq"; mr: "eu.mr"; ms: "eu.ms"; mt: "eu.mt"; mu: "eu.mu"; mv: "eu.mv"; mw: "eu.mw"; mx: "eu.mx"; my: "eu.my"; mz: "eu.mz"; na: "eu.na"; nb: "eu.nb"; nc: "eu.nc"; nd: "eu.nd"; ne: "eu.ne"; nf: "eu.nf"; ng: "eu.ng"; nh: "eu.nh"; ni: "eu.ni"; nj: "eu.nj"; nk: "eu.nk"; nl: "eu.nl"; nm: "eu.nm"; nn: "eu.nn"; no: "eu.no"; np: "eu.np"; nq: "eu.nq"; nr: "eu.nr"; ns: "eu.ns"; nt: "eu.nt"; nu: "eu.nu"; nv: "eu.nv"; nw: "eu.nw"; nx: "eu.nx"; ny: "eu.ny"; nz: "eu.nz"; oa: "eu.oa"; ob: "eu.ob"; oc: "eu.oc"; od: "eu.od"; oe: "eu.oe"; of: "eu.of"; og: "eu.og"; oh: "eu.oh"; oi: "eu.oi"; oj: "eu.oj"; ok: "eu.ok"; ol: "eu.ol"; om: "eu.om"; on: "eu.on"; oo: "eu.oo"; op: "eu.op"; oq: "eu.oq"; or: "eu.or"; os: "eu.os"; ot: "eu.ot"; ou: "eu.ou"; ov: "eu.ov"; ow: "eu.ow"; ox: "eu.ox"; oy: "eu.oy"; oz: "eu.oz"; pa: "eu.pa"; pb: "eu.pb"; pc: "eu.pc"; pd: "eu.pd"; pe: "eu.pe"; pf: "eu.pf"; pg: "eu.pg"; ph: "eu.ph"; pi: "eu.pi"; pj: "eu.pj"; pk: "eu.pk"; pl: "eu.pl"; pm: "eu.pm"; pn: "eu.pn"; po: "eu.po"; pp: "eu.pp"; pq: "eu.pq"; pr: "eu.pr"; ps: "eu.ps"; pt: "eu.pt"; pu: "eu.pu"; pv: "eu.pv"; pw: "eu.pw"; px: "eu.px"; py: "eu.py"; pz: "eu.pz"; qa: "eu.qa"; qb: "eu.qb"; qc: "eu.qc"; qd: "eu.qd"; qe: "eu.qe"; qf: "eu.qf"; qg: "eu.qg"; qh: "eu.qh"; qi: "eu.qi"; qj: "eu.qj"; qk: "eu.qk"; ql: "eu.ql"; qm: "eu.qm"; qn: "eu.qn"; qo: "eu.qo"; qp: "eu.qp"; qq: "eu.qq"; qr: "eu.qr"; qs: "eu.qs"; qt: "eu.qt"; qu: "eu.qu"; qv: "eu.qv"; qw: "eu.qw"; qx: "eu.qx"; qy: "eu.qy"; qz: "eu.qz"; ra: "eu.ra"; rb: "eu.rb"; rc: "eu.rc"; rd: "eu.rd"; re: "eu.re"; rf: "eu.rf"; rg: "eu.rg"; rh: "eu.rh"; ri: "eu.ri"; rj: "eu.rj"; rk: "eu.rk"; rl: "eu.rl"; rm: "eu.rm"; rn: "eu.rn"; ro: "eu.ro"; rp: "eu.rp"; rq: "eu.rq"; rr: "eu.rr"; rs: "eu.rs"; rt: "eu.rt"; ru: "eu.ru"; rv: "eu.rv"; rw: "eu.rw"; rx: "eu.rx"; ry: "eu.ry"; rz: "eu.rz"; sa: "eu.sa"; sb: "eu.sb"; sc: "eu.sc"; sd: "eu.sd"; se: "eu.se"; sf: "eu.sf"; sg: "eu.sg"; sh: "eu.sh"; si: "eu.si"; sj: "eu.sj"; sk: "eu.sk"; sl: "eu.sl"; sm: "eu.sm"; sn: "eu.sn"; so: "eu.so"; sp: "eu.sp"; sq: "eu.sq"; sr: "eu.sr"; ss: "eu.ss"; st: "eu.st"; su: "eu.su"; sv: "eu.sv"; sw: "eu.sw"; sx: "eu.sx"; sy: "eu.sy"; sz: "eu.sz"; ta: "eu.ta"; tb: "eu.tb"; tc: "eu.tc"; td: "eu.td"; te: "eu.te"; tf: "eu.tf"; tg: "eu.tg"; th: "eu.th"; ti: "eu.ti"; tj: "eu.tj"; tk: "eu.tk"; tl: "eu.tl"; tm: "eu.tm"; tn: "eu.tn"; to: "eu.to"; tp: "eu.tp"; tq: "eu.tq"; tr: "eu.tr"; ts: "eu.ts"; tt: "eu.tt"; tu: "eu.tu"; tv: "eu.tv"; tw: "eu.tw"; tx: "eu.tx"; ty: "eu.ty"; tz: "eu.tz"; ua: "eu.ua"; ub: "eu.ub"; uc: "eu.uc"; ud: "eu.ud"; ue: "eu.ue"; uf: "eu.uf"; ug: "eu.ug"; uh: "eu.uh"; ui: "eu.ui"; uj: "eu.uj"; uk: "eu.uk"; ul: "eu.ul"; um: "eu.um"; un: "eu.un"; uo: "eu.uo"; up: "eu.up"; uq: "eu.uq"; ur: "eu.ur"; us: "eu.us"; ut: "eu.ut"; uu: "eu.uu"; uv: "eu.uv"; uw: "eu.uw"; ux: "eu.ux"; uy: "eu.uy"; uz: "eu.uz"; va: "eu.va"; vb: "eu.vb"; vc: "eu.vc"; vd: "eu.vd"; ve: "eu.ve"; vf: "eu.vf"; vg: "eu.vg"; vh: "eu.vh"; vi: "eu.vi"; vj: "eu.vj"; vk: "eu.vk"; vl: "eu.vl"; vm: "eu.vm"; vn: "eu.vn"; vo: "eu.vo"; vp: "eu.vp"; vq: "eu.vq"; vr: "eu.vr"; vs: "eu.vs"; vt: "eu.vt"; vu: "eu.vu"; vv: "eu.vv"; vw: "eu.vw"; vx: "eu.vx"; vy: "eu.vy"; vz: "eu.vz"; wa: "eu.wa"; wb: "eu.wb"; wc: "eu.wc"; wd: "eu.wd"; we: "eu.we"; wf: "eu.wf"; wg: "eu.wg"; wh: "eu.wh"; wi: "eu.wi"; wj: "eu.wj"; wk: "eu.wk"; wl: "eu.wl"; wm: "eu.wm"; wn: "eu.wn"; wo: "eu.wo"; wp: "eu.wp"; wq: "eu.wq"; wr: "eu.wr"; ws: "eu.ws"; wt: "eu.wt"; wu: "eu.wu"; wv: "eu.wv"; ww: "eu.ww"; wx: "eu.wx"; wy: "eu.wy"; wz: "eu.wz"; xa: "eu.xa"; xb: "eu.xb"; xc: "eu.xc"; xd: "eu.xd"; xe: "eu.xe"; xf: "eu.xf"; xg: "eu.xg"; xh: "eu.xh"; xi: "eu.xi"; xj: "eu.xj"; xk: "eu.xk"; xl: "eu.xl"; xm: "eu.xm"; xn: "eu.xn"; xo: "eu.xo"; xp: "eu.xp"; xq: "eu.xq"; xr: "eu.xr"; xs: "eu.xs"; xt: "eu.xt"; xu: "eu.xu"; xv: "eu.xv"; xw: "eu.xw"; xx: "eu.xx"; xy: "eu.xy"; xz: "eu.xz"; ya: "eu.ya"; yb: "eu.yb"; yc: "eu.yc"; yd: "eu.yd"; ye: "eu.ye"; yf: "eu.yf"; yg: "eu.yg"; yh: "eu.yh"; yi: "eu.yi"; yj: "eu.yj"; yk: "eu.yk"; yl: "eu.yl"; ym: "eu.ym"; yn: "eu.yn"; yo: "eu.yo"; yp: "eu.yp"; yq: "eu.yq"; yr: "eu.yr"; ys: "eu.ys"; yt: "eu.yt"; yu: "eu.yu"; yv: "eu.yv"; yw: "eu.yw"; yx: "eu.yx"; yy: "eu.yy"; yz: "eu.yz"; za: "eu.za"; zb: "eu.zb"; zc: "eu.zc"; zd: "eu.zd"; ze: "eu.ze"; zf: "eu.zf"; zg: "eu.zg"; zh: "eu.zh"; zi: "eu.zi"; zj: "eu.zj"; zk: "eu.zk"; zl: "eu.zl"; zm: "eu.zm"; zn: "eu.zn"; zo: "eu.zo"; zp: "eu.zp"; zq: "eu.zq"; zr: "eu.zr"; zs: "eu.zs"; zt: "eu.zt"; zu: "eu.zu"; zv: "eu.zv"; zw: "eu.zw"; zx: "eu.zx"; zy: "eu.zy"; zz: "eu.zz"; }; ev: { aa: "ev.aa"; ab: "ev.ab"; ac: "ev.ac"; ad: "ev.ad"; ae: "ev.ae"; af: "ev.af"; ag: "ev.ag"; ah: "ev.ah"; ai: "ev.ai"; aj: "ev.aj"; ak: "ev.ak"; al: "ev.al"; am: "ev.am"; an: "ev.an"; ao: "ev.ao"; ap: "ev.ap"; aq: "ev.aq"; ar: "ev.ar"; as: "ev.as"; at: "ev.at"; au: "ev.au"; av: "ev.av"; aw: "ev.aw"; ax: "ev.ax"; ay: "ev.ay"; az: "ev.az"; ba: "ev.ba"; bb: "ev.bb"; bc: "ev.bc"; bd: "ev.bd"; be: "ev.be"; bf: "ev.bf"; bg: "ev.bg"; bh: "ev.bh"; bi: "ev.bi"; bj: "ev.bj"; bk: "ev.bk"; bl: "ev.bl"; bm: "ev.bm"; bn: "ev.bn"; bo: "ev.bo"; bp: "ev.bp"; bq: "ev.bq"; br: "ev.br"; bs: "ev.bs"; bt: "ev.bt"; bu: "ev.bu"; bv: "ev.bv"; bw: "ev.bw"; bx: "ev.bx"; by: "ev.by"; bz: "ev.bz"; ca: "ev.ca"; cb: "ev.cb"; cc: "ev.cc"; cd: "ev.cd"; ce: "ev.ce"; cf: "ev.cf"; cg: "ev.cg"; ch: "ev.ch"; ci: "ev.ci"; cj: "ev.cj"; ck: "ev.ck"; cl: "ev.cl"; cm: "ev.cm"; cn: "ev.cn"; co: "ev.co"; cp: "ev.cp"; cq: "ev.cq"; cr: "ev.cr"; cs: "ev.cs"; ct: "ev.ct"; cu: "ev.cu"; cv: "ev.cv"; cw: "ev.cw"; cx: "ev.cx"; cy: "ev.cy"; cz: "ev.cz"; da: "ev.da"; db: "ev.db"; dc: "ev.dc"; dd: "ev.dd"; de: "ev.de"; df: "ev.df"; dg: "ev.dg"; dh: "ev.dh"; di: "ev.di"; dj: "ev.dj"; dk: "ev.dk"; dl: "ev.dl"; dm: "ev.dm"; dn: "ev.dn"; do: "ev.do"; dp: "ev.dp"; dq: "ev.dq"; dr: "ev.dr"; ds: "ev.ds"; dt: "ev.dt"; du: "ev.du"; dv: "ev.dv"; dw: "ev.dw"; dx: "ev.dx"; dy: "ev.dy"; dz: "ev.dz"; ea: "ev.ea"; eb: "ev.eb"; ec: "ev.ec"; ed: "ev.ed"; ee: "ev.ee"; ef: "ev.ef"; eg: "ev.eg"; eh: "ev.eh"; ei: "ev.ei"; ej: "ev.ej"; ek: "ev.ek"; el: "ev.el"; em: "ev.em"; en: "ev.en"; eo: "ev.eo"; ep: "ev.ep"; eq: "ev.eq"; er: "ev.er"; es: "ev.es"; et: "ev.et"; eu: "ev.eu"; ev: "ev.ev"; ew: "ev.ew"; ex: "ev.ex"; ey: "ev.ey"; ez: "ev.ez"; fa: "ev.fa"; fb: "ev.fb"; fc: "ev.fc"; fd: "ev.fd"; fe: "ev.fe"; ff: "ev.ff"; fg: "ev.fg"; fh: "ev.fh"; fi: "ev.fi"; fj: "ev.fj"; fk: "ev.fk"; fl: "ev.fl"; fm: "ev.fm"; fn: "ev.fn"; fo: "ev.fo"; fp: "ev.fp"; fq: "ev.fq"; fr: "ev.fr"; fs: "ev.fs"; ft: "ev.ft"; fu: "ev.fu"; fv: "ev.fv"; fw: "ev.fw"; fx: "ev.fx"; fy: "ev.fy"; fz: "ev.fz"; ga: "ev.ga"; gb: "ev.gb"; gc: "ev.gc"; gd: "ev.gd"; ge: "ev.ge"; gf: "ev.gf"; gg: "ev.gg"; gh: "ev.gh"; gi: "ev.gi"; gj: "ev.gj"; gk: "ev.gk"; gl: "ev.gl"; gm: "ev.gm"; gn: "ev.gn"; go: "ev.go"; gp: "ev.gp"; gq: "ev.gq"; gr: "ev.gr"; gs: "ev.gs"; gt: "ev.gt"; gu: "ev.gu"; gv: "ev.gv"; gw: "ev.gw"; gx: "ev.gx"; gy: "ev.gy"; gz: "ev.gz"; ha: "ev.ha"; hb: "ev.hb"; hc: "ev.hc"; hd: "ev.hd"; he: "ev.he"; hf: "ev.hf"; hg: "ev.hg"; hh: "ev.hh"; hi: "ev.hi"; hj: "ev.hj"; hk: "ev.hk"; hl: "ev.hl"; hm: "ev.hm"; hn: "ev.hn"; ho: "ev.ho"; hp: "ev.hp"; hq: "ev.hq"; hr: "ev.hr"; hs: "ev.hs"; ht: "ev.ht"; hu: "ev.hu"; hv: "ev.hv"; hw: "ev.hw"; hx: "ev.hx"; hy: "ev.hy"; hz: "ev.hz"; ia: "ev.ia"; ib: "ev.ib"; ic: "ev.ic"; id: "ev.id"; ie: "ev.ie"; if: "ev.if"; ig: "ev.ig"; ih: "ev.ih"; ii: "ev.ii"; ij: "ev.ij"; ik: "ev.ik"; il: "ev.il"; im: "ev.im"; in: "ev.in"; io: "ev.io"; ip: "ev.ip"; iq: "ev.iq"; ir: "ev.ir"; is: "ev.is"; it: "ev.it"; iu: "ev.iu"; iv: "ev.iv"; iw: "ev.iw"; ix: "ev.ix"; iy: "ev.iy"; iz: "ev.iz"; ja: "ev.ja"; jb: "ev.jb"; jc: "ev.jc"; jd: "ev.jd"; je: "ev.je"; jf: "ev.jf"; jg: "ev.jg"; jh: "ev.jh"; ji: "ev.ji"; jj: "ev.jj"; jk: "ev.jk"; jl: "ev.jl"; jm: "ev.jm"; jn: "ev.jn"; jo: "ev.jo"; jp: "ev.jp"; jq: "ev.jq"; jr: "ev.jr"; js: "ev.js"; jt: "ev.jt"; ju: "ev.ju"; jv: "ev.jv"; jw: "ev.jw"; jx: "ev.jx"; jy: "ev.jy"; jz: "ev.jz"; ka: "ev.ka"; kb: "ev.kb"; kc: "ev.kc"; kd: "ev.kd"; ke: "ev.ke"; kf: "ev.kf"; kg: "ev.kg"; kh: "ev.kh"; ki: "ev.ki"; kj: "ev.kj"; kk: "ev.kk"; kl: "ev.kl"; km: "ev.km"; kn: "ev.kn"; ko: "ev.ko"; kp: "ev.kp"; kq: "ev.kq"; kr: "ev.kr"; ks: "ev.ks"; kt: "ev.kt"; ku: "ev.ku"; kv: "ev.kv"; kw: "ev.kw"; kx: "ev.kx"; ky: "ev.ky"; kz: "ev.kz"; la: "ev.la"; lb: "ev.lb"; lc: "ev.lc"; ld: "ev.ld"; le: "ev.le"; lf: "ev.lf"; lg: "ev.lg"; lh: "ev.lh"; li: "ev.li"; lj: "ev.lj"; lk: "ev.lk"; ll: "ev.ll"; lm: "ev.lm"; ln: "ev.ln"; lo: "ev.lo"; lp: "ev.lp"; lq: "ev.lq"; lr: "ev.lr"; ls: "ev.ls"; lt: "ev.lt"; lu: "ev.lu"; lv: "ev.lv"; lw: "ev.lw"; lx: "ev.lx"; ly: "ev.ly"; lz: "ev.lz"; ma: "ev.ma"; mb: "ev.mb"; mc: "ev.mc"; md: "ev.md"; me: "ev.me"; mf: "ev.mf"; mg: "ev.mg"; mh: "ev.mh"; mi: "ev.mi"; mj: "ev.mj"; mk: "ev.mk"; ml: "ev.ml"; mm: "ev.mm"; mn: "ev.mn"; mo: "ev.mo"; mp: "ev.mp"; mq: "ev.mq"; mr: "ev.mr"; ms: "ev.ms"; mt: "ev.mt"; mu: "ev.mu"; mv: "ev.mv"; mw: "ev.mw"; mx: "ev.mx"; my: "ev.my"; mz: "ev.mz"; na: "ev.na"; nb: "ev.nb"; nc: "ev.nc"; nd: "ev.nd"; ne: "ev.ne"; nf: "ev.nf"; ng: "ev.ng"; nh: "ev.nh"; ni: "ev.ni"; nj: "ev.nj"; nk: "ev.nk"; nl: "ev.nl"; nm: "ev.nm"; nn: "ev.nn"; no: "ev.no"; np: "ev.np"; nq: "ev.nq"; nr: "ev.nr"; ns: "ev.ns"; nt: "ev.nt"; nu: "ev.nu"; nv: "ev.nv"; nw: "ev.nw"; nx: "ev.nx"; ny: "ev.ny"; nz: "ev.nz"; oa: "ev.oa"; ob: "ev.ob"; oc: "ev.oc"; od: "ev.od"; oe: "ev.oe"; of: "ev.of"; og: "ev.og"; oh: "ev.oh"; oi: "ev.oi"; oj: "ev.oj"; ok: "ev.ok"; ol: "ev.ol"; om: "ev.om"; on: "ev.on"; oo: "ev.oo"; op: "ev.op"; oq: "ev.oq"; or: "ev.or"; os: "ev.os"; ot: "ev.ot"; ou: "ev.ou"; ov: "ev.ov"; ow: "ev.ow"; ox: "ev.ox"; oy: "ev.oy"; oz: "ev.oz"; pa: "ev.pa"; pb: "ev.pb"; pc: "ev.pc"; pd: "ev.pd"; pe: "ev.pe"; pf: "ev.pf"; pg: "ev.pg"; ph: "ev.ph"; pi: "ev.pi"; pj: "ev.pj"; pk: "ev.pk"; pl: "ev.pl"; pm: "ev.pm"; pn: "ev.pn"; po: "ev.po"; pp: "ev.pp"; pq: "ev.pq"; pr: "ev.pr"; ps: "ev.ps"; pt: "ev.pt"; pu: "ev.pu"; pv: "ev.pv"; pw: "ev.pw"; px: "ev.px"; py: "ev.py"; pz: "ev.pz"; qa: "ev.qa"; qb: "ev.qb"; qc: "ev.qc"; qd: "ev.qd"; qe: "ev.qe"; qf: "ev.qf"; qg: "ev.qg"; qh: "ev.qh"; qi: "ev.qi"; qj: "ev.qj"; qk: "ev.qk"; ql: "ev.ql"; qm: "ev.qm"; qn: "ev.qn"; qo: "ev.qo"; qp: "ev.qp"; qq: "ev.qq"; qr: "ev.qr"; qs: "ev.qs"; qt: "ev.qt"; qu: "ev.qu"; qv: "ev.qv"; qw: "ev.qw"; qx: "ev.qx"; qy: "ev.qy"; qz: "ev.qz"; ra: "ev.ra"; rb: "ev.rb"; rc: "ev.rc"; rd: "ev.rd"; re: "ev.re"; rf: "ev.rf"; rg: "ev.rg"; rh: "ev.rh"; ri: "ev.ri"; rj: "ev.rj"; rk: "ev.rk"; rl: "ev.rl"; rm: "ev.rm"; rn: "ev.rn"; ro: "ev.ro"; rp: "ev.rp"; rq: "ev.rq"; rr: "ev.rr"; rs: "ev.rs"; rt: "ev.rt"; ru: "ev.ru"; rv: "ev.rv"; rw: "ev.rw"; rx: "ev.rx"; ry: "ev.ry"; rz: "ev.rz"; sa: "ev.sa"; sb: "ev.sb"; sc: "ev.sc"; sd: "ev.sd"; se: "ev.se"; sf: "ev.sf"; sg: "ev.sg"; sh: "ev.sh"; si: "ev.si"; sj: "ev.sj"; sk: "ev.sk"; sl: "ev.sl"; sm: "ev.sm"; sn: "ev.sn"; so: "ev.so"; sp: "ev.sp"; sq: "ev.sq"; sr: "ev.sr"; ss: "ev.ss"; st: "ev.st"; su: "ev.su"; sv: "ev.sv"; sw: "ev.sw"; sx: "ev.sx"; sy: "ev.sy"; sz: "ev.sz"; ta: "ev.ta"; tb: "ev.tb"; tc: "ev.tc"; td: "ev.td"; te: "ev.te"; tf: "ev.tf"; tg: "ev.tg"; th: "ev.th"; ti: "ev.ti"; tj: "ev.tj"; tk: "ev.tk"; tl: "ev.tl"; tm: "ev.tm"; tn: "ev.tn"; to: "ev.to"; tp: "ev.tp"; tq: "ev.tq"; tr: "ev.tr"; ts: "ev.ts"; tt: "ev.tt"; tu: "ev.tu"; tv: "ev.tv"; tw: "ev.tw"; tx: "ev.tx"; ty: "ev.ty"; tz: "ev.tz"; ua: "ev.ua"; ub: "ev.ub"; uc: "ev.uc"; ud: "ev.ud"; ue: "ev.ue"; uf: "ev.uf"; ug: "ev.ug"; uh: "ev.uh"; ui: "ev.ui"; uj: "ev.uj"; uk: "ev.uk"; ul: "ev.ul"; um: "ev.um"; un: "ev.un"; uo: "ev.uo"; up: "ev.up"; uq: "ev.uq"; ur: "ev.ur"; us: "ev.us"; ut: "ev.ut"; uu: "ev.uu"; uv: "ev.uv"; uw: "ev.uw"; ux: "ev.ux"; uy: "ev.uy"; uz: "ev.uz"; va: "ev.va"; vb: "ev.vb"; vc: "ev.vc"; vd: "ev.vd"; ve: "ev.ve"; vf: "ev.vf"; vg: "ev.vg"; vh: "ev.vh"; vi: "ev.vi"; vj: "ev.vj"; vk: "ev.vk"; vl: "ev.vl"; vm: "ev.vm"; vn: "ev.vn"; vo: "ev.vo"; vp: "ev.vp"; vq: "ev.vq"; vr: "ev.vr"; vs: "ev.vs"; vt: "ev.vt"; vu: "ev.vu"; vv: "ev.vv"; vw: "ev.vw"; vx: "ev.vx"; vy: "ev.vy"; vz: "ev.vz"; wa: "ev.wa"; wb: "ev.wb"; wc: "ev.wc"; wd: "ev.wd"; we: "ev.we"; wf: "ev.wf"; wg: "ev.wg"; wh: "ev.wh"; wi: "ev.wi"; wj: "ev.wj"; wk: "ev.wk"; wl: "ev.wl"; wm: "ev.wm"; wn: "ev.wn"; wo: "ev.wo"; wp: "ev.wp"; wq: "ev.wq"; wr: "ev.wr"; ws: "ev.ws"; wt: "ev.wt"; wu: "ev.wu"; wv: "ev.wv"; ww: "ev.ww"; wx: "ev.wx"; wy: "ev.wy"; wz: "ev.wz"; xa: "ev.xa"; xb: "ev.xb"; xc: "ev.xc"; xd: "ev.xd"; xe: "ev.xe"; xf: "ev.xf"; xg: "ev.xg"; xh: "ev.xh"; xi: "ev.xi"; xj: "ev.xj"; xk: "ev.xk"; xl: "ev.xl"; xm: "ev.xm"; xn: "ev.xn"; xo: "ev.xo"; xp: "ev.xp"; xq: "ev.xq"; xr: "ev.xr"; xs: "ev.xs"; xt: "ev.xt"; xu: "ev.xu"; xv: "ev.xv"; xw: "ev.xw"; xx: "ev.xx"; xy: "ev.xy"; xz: "ev.xz"; ya: "ev.ya"; yb: "ev.yb"; yc: "ev.yc"; yd: "ev.yd"; ye: "ev.ye"; yf: "ev.yf"; yg: "ev.yg"; yh: "ev.yh"; yi: "ev.yi"; yj: "ev.yj"; yk: "ev.yk"; yl: "ev.yl"; ym: "ev.ym"; yn: "ev.yn"; yo: "ev.yo"; yp: "ev.yp"; yq: "ev.yq"; yr: "ev.yr"; ys: "ev.ys"; yt: "ev.yt"; yu: "ev.yu"; yv: "ev.yv"; yw: "ev.yw"; yx: "ev.yx"; yy: "ev.yy"; yz: "ev.yz"; za: "ev.za"; zb: "ev.zb"; zc: "ev.zc"; zd: "ev.zd"; ze: "ev.ze"; zf: "ev.zf"; zg: "ev.zg"; zh: "ev.zh"; zi: "ev.zi"; zj: "ev.zj"; zk: "ev.zk"; zl: "ev.zl"; zm: "ev.zm"; zn: "ev.zn"; zo: "ev.zo"; zp: "ev.zp"; zq: "ev.zq"; zr: "ev.zr"; zs: "ev.zs"; zt: "ev.zt"; zu: "ev.zu"; zv: "ev.zv"; zw: "ev.zw"; zx: "ev.zx"; zy: "ev.zy"; zz: "ev.zz"; }; ew: { aa: "ew.aa"; ab: "ew.ab"; ac: "ew.ac"; ad: "ew.ad"; ae: "ew.ae"; af: "ew.af"; ag: "ew.ag"; ah: "ew.ah"; ai: "ew.ai"; aj: "ew.aj"; ak: "ew.ak"; al: "ew.al"; am: "ew.am"; an: "ew.an"; ao: "ew.ao"; ap: "ew.ap"; aq: "ew.aq"; ar: "ew.ar"; as: "ew.as"; at: "ew.at"; au: "ew.au"; av: "ew.av"; aw: "ew.aw"; ax: "ew.ax"; ay: "ew.ay"; az: "ew.az"; ba: "ew.ba"; bb: "ew.bb"; bc: "ew.bc"; bd: "ew.bd"; be: "ew.be"; bf: "ew.bf"; bg: "ew.bg"; bh: "ew.bh"; bi: "ew.bi"; bj: "ew.bj"; bk: "ew.bk"; bl: "ew.bl"; bm: "ew.bm"; bn: "ew.bn"; bo: "ew.bo"; bp: "ew.bp"; bq: "ew.bq"; br: "ew.br"; bs: "ew.bs"; bt: "ew.bt"; bu: "ew.bu"; bv: "ew.bv"; bw: "ew.bw"; bx: "ew.bx"; by: "ew.by"; bz: "ew.bz"; ca: "ew.ca"; cb: "ew.cb"; cc: "ew.cc"; cd: "ew.cd"; ce: "ew.ce"; cf: "ew.cf"; cg: "ew.cg"; ch: "ew.ch"; ci: "ew.ci"; cj: "ew.cj"; ck: "ew.ck"; cl: "ew.cl"; cm: "ew.cm"; cn: "ew.cn"; co: "ew.co"; cp: "ew.cp"; cq: "ew.cq"; cr: "ew.cr"; cs: "ew.cs"; ct: "ew.ct"; cu: "ew.cu"; cv: "ew.cv"; cw: "ew.cw"; cx: "ew.cx"; cy: "ew.cy"; cz: "ew.cz"; da: "ew.da"; db: "ew.db"; dc: "ew.dc"; dd: "ew.dd"; de: "ew.de"; df: "ew.df"; dg: "ew.dg"; dh: "ew.dh"; di: "ew.di"; dj: "ew.dj"; dk: "ew.dk"; dl: "ew.dl"; dm: "ew.dm"; dn: "ew.dn"; do: "ew.do"; dp: "ew.dp"; dq: "ew.dq"; dr: "ew.dr"; ds: "ew.ds"; dt: "ew.dt"; du: "ew.du"; dv: "ew.dv"; dw: "ew.dw"; dx: "ew.dx"; dy: "ew.dy"; dz: "ew.dz"; ea: "ew.ea"; eb: "ew.eb"; ec: "ew.ec"; ed: "ew.ed"; ee: "ew.ee"; ef: "ew.ef"; eg: "ew.eg"; eh: "ew.eh"; ei: "ew.ei"; ej: "ew.ej"; ek: "ew.ek"; el: "ew.el"; em: "ew.em"; en: "ew.en"; eo: "ew.eo"; ep: "ew.ep"; eq: "ew.eq"; er: "ew.er"; es: "ew.es"; et: "ew.et"; eu: "ew.eu"; ev: "ew.ev"; ew: "ew.ew"; ex: "ew.ex"; ey: "ew.ey"; ez: "ew.ez"; fa: "ew.fa"; fb: "ew.fb"; fc: "ew.fc"; fd: "ew.fd"; fe: "ew.fe"; ff: "ew.ff"; fg: "ew.fg"; fh: "ew.fh"; fi: "ew.fi"; fj: "ew.fj"; fk: "ew.fk"; fl: "ew.fl"; fm: "ew.fm"; fn: "ew.fn"; fo: "ew.fo"; fp: "ew.fp"; fq: "ew.fq"; fr: "ew.fr"; fs: "ew.fs"; ft: "ew.ft"; fu: "ew.fu"; fv: "ew.fv"; fw: "ew.fw"; fx: "ew.fx"; fy: "ew.fy"; fz: "ew.fz"; ga: "ew.ga"; gb: "ew.gb"; gc: "ew.gc"; gd: "ew.gd"; ge: "ew.ge"; gf: "ew.gf"; gg: "ew.gg"; gh: "ew.gh"; gi: "ew.gi"; gj: "ew.gj"; gk: "ew.gk"; gl: "ew.gl"; gm: "ew.gm"; gn: "ew.gn"; go: "ew.go"; gp: "ew.gp"; gq: "ew.gq"; gr: "ew.gr"; gs: "ew.gs"; gt: "ew.gt"; gu: "ew.gu"; gv: "ew.gv"; gw: "ew.gw"; gx: "ew.gx"; gy: "ew.gy"; gz: "ew.gz"; ha: "ew.ha"; hb: "ew.hb"; hc: "ew.hc"; hd: "ew.hd"; he: "ew.he"; hf: "ew.hf"; hg: "ew.hg"; hh: "ew.hh"; hi: "ew.hi"; hj: "ew.hj"; hk: "ew.hk"; hl: "ew.hl"; hm: "ew.hm"; hn: "ew.hn"; ho: "ew.ho"; hp: "ew.hp"; hq: "ew.hq"; hr: "ew.hr"; hs: "ew.hs"; ht: "ew.ht"; hu: "ew.hu"; hv: "ew.hv"; hw: "ew.hw"; hx: "ew.hx"; hy: "ew.hy"; hz: "ew.hz"; ia: "ew.ia"; ib: "ew.ib"; ic: "ew.ic"; id: "ew.id"; ie: "ew.ie"; if: "ew.if"; ig: "ew.ig"; ih: "ew.ih"; ii: "ew.ii"; ij: "ew.ij"; ik: "ew.ik"; il: "ew.il"; im: "ew.im"; in: "ew.in"; io: "ew.io"; ip: "ew.ip"; iq: "ew.iq"; ir: "ew.ir"; is: "ew.is"; it: "ew.it"; iu: "ew.iu"; iv: "ew.iv"; iw: "ew.iw"; ix: "ew.ix"; iy: "ew.iy"; iz: "ew.iz"; ja: "ew.ja"; jb: "ew.jb"; jc: "ew.jc"; jd: "ew.jd"; je: "ew.je"; jf: "ew.jf"; jg: "ew.jg"; jh: "ew.jh"; ji: "ew.ji"; jj: "ew.jj"; jk: "ew.jk"; jl: "ew.jl"; jm: "ew.jm"; jn: "ew.jn"; jo: "ew.jo"; jp: "ew.jp"; jq: "ew.jq"; jr: "ew.jr"; js: "ew.js"; jt: "ew.jt"; ju: "ew.ju"; jv: "ew.jv"; jw: "ew.jw"; jx: "ew.jx"; jy: "ew.jy"; jz: "ew.jz"; ka: "ew.ka"; kb: "ew.kb"; kc: "ew.kc"; kd: "ew.kd"; ke: "ew.ke"; kf: "ew.kf"; kg: "ew.kg"; kh: "ew.kh"; ki: "ew.ki"; kj: "ew.kj"; kk: "ew.kk"; kl: "ew.kl"; km: "ew.km"; kn: "ew.kn"; ko: "ew.ko"; kp: "ew.kp"; kq: "ew.kq"; kr: "ew.kr"; ks: "ew.ks"; kt: "ew.kt"; ku: "ew.ku"; kv: "ew.kv"; kw: "ew.kw"; kx: "ew.kx"; ky: "ew.ky"; kz: "ew.kz"; la: "ew.la"; lb: "ew.lb"; lc: "ew.lc"; ld: "ew.ld"; le: "ew.le"; lf: "ew.lf"; lg: "ew.lg"; lh: "ew.lh"; li: "ew.li"; lj: "ew.lj"; lk: "ew.lk"; ll: "ew.ll"; lm: "ew.lm"; ln: "ew.ln"; lo: "ew.lo"; lp: "ew.lp"; lq: "ew.lq"; lr: "ew.lr"; ls: "ew.ls"; lt: "ew.lt"; lu: "ew.lu"; lv: "ew.lv"; lw: "ew.lw"; lx: "ew.lx"; ly: "ew.ly"; lz: "ew.lz"; ma: "ew.ma"; mb: "ew.mb"; mc: "ew.mc"; md: "ew.md"; me: "ew.me"; mf: "ew.mf"; mg: "ew.mg"; mh: "ew.mh"; mi: "ew.mi"; mj: "ew.mj"; mk: "ew.mk"; ml: "ew.ml"; mm: "ew.mm"; mn: "ew.mn"; mo: "ew.mo"; mp: "ew.mp"; mq: "ew.mq"; mr: "ew.mr"; ms: "ew.ms"; mt: "ew.mt"; mu: "ew.mu"; mv: "ew.mv"; mw: "ew.mw"; mx: "ew.mx"; my: "ew.my"; mz: "ew.mz"; na: "ew.na"; nb: "ew.nb"; nc: "ew.nc"; nd: "ew.nd"; ne: "ew.ne"; nf: "ew.nf"; ng: "ew.ng"; nh: "ew.nh"; ni: "ew.ni"; nj: "ew.nj"; nk: "ew.nk"; nl: "ew.nl"; nm: "ew.nm"; nn: "ew.nn"; no: "ew.no"; np: "ew.np"; nq: "ew.nq"; nr: "ew.nr"; ns: "ew.ns"; nt: "ew.nt"; nu: "ew.nu"; nv: "ew.nv"; nw: "ew.nw"; nx: "ew.nx"; ny: "ew.ny"; nz: "ew.nz"; oa: "ew.oa"; ob: "ew.ob"; oc: "ew.oc"; od: "ew.od"; oe: "ew.oe"; of: "ew.of"; og: "ew.og"; oh: "ew.oh"; oi: "ew.oi"; oj: "ew.oj"; ok: "ew.ok"; ol: "ew.ol"; om: "ew.om"; on: "ew.on"; oo: "ew.oo"; op: "ew.op"; oq: "ew.oq"; or: "ew.or"; os: "ew.os"; ot: "ew.ot"; ou: "ew.ou"; ov: "ew.ov"; ow: "ew.ow"; ox: "ew.ox"; oy: "ew.oy"; oz: "ew.oz"; pa: "ew.pa"; pb: "ew.pb"; pc: "ew.pc"; pd: "ew.pd"; pe: "ew.pe"; pf: "ew.pf"; pg: "ew.pg"; ph: "ew.ph"; pi: "ew.pi"; pj: "ew.pj"; pk: "ew.pk"; pl: "ew.pl"; pm: "ew.pm"; pn: "ew.pn"; po: "ew.po"; pp: "ew.pp"; pq: "ew.pq"; pr: "ew.pr"; ps: "ew.ps"; pt: "ew.pt"; pu: "ew.pu"; pv: "ew.pv"; pw: "ew.pw"; px: "ew.px"; py: "ew.py"; pz: "ew.pz"; qa: "ew.qa"; qb: "ew.qb"; qc: "ew.qc"; qd: "ew.qd"; qe: "ew.qe"; qf: "ew.qf"; qg: "ew.qg"; qh: "ew.qh"; qi: "ew.qi"; qj: "ew.qj"; qk: "ew.qk"; ql: "ew.ql"; qm: "ew.qm"; qn: "ew.qn"; qo: "ew.qo"; qp: "ew.qp"; qq: "ew.qq"; qr: "ew.qr"; qs: "ew.qs"; qt: "ew.qt"; qu: "ew.qu"; qv: "ew.qv"; qw: "ew.qw"; qx: "ew.qx"; qy: "ew.qy"; qz: "ew.qz"; ra: "ew.ra"; rb: "ew.rb"; rc: "ew.rc"; rd: "ew.rd"; re: "ew.re"; rf: "ew.rf"; rg: "ew.rg"; rh: "ew.rh"; ri: "ew.ri"; rj: "ew.rj"; rk: "ew.rk"; rl: "ew.rl"; rm: "ew.rm"; rn: "ew.rn"; ro: "ew.ro"; rp: "ew.rp"; rq: "ew.rq"; rr: "ew.rr"; rs: "ew.rs"; rt: "ew.rt"; ru: "ew.ru"; rv: "ew.rv"; rw: "ew.rw"; rx: "ew.rx"; ry: "ew.ry"; rz: "ew.rz"; sa: "ew.sa"; sb: "ew.sb"; sc: "ew.sc"; sd: "ew.sd"; se: "ew.se"; sf: "ew.sf"; sg: "ew.sg"; sh: "ew.sh"; si: "ew.si"; sj: "ew.sj"; sk: "ew.sk"; sl: "ew.sl"; sm: "ew.sm"; sn: "ew.sn"; so: "ew.so"; sp: "ew.sp"; sq: "ew.sq"; sr: "ew.sr"; ss: "ew.ss"; st: "ew.st"; su: "ew.su"; sv: "ew.sv"; sw: "ew.sw"; sx: "ew.sx"; sy: "ew.sy"; sz: "ew.sz"; ta: "ew.ta"; tb: "ew.tb"; tc: "ew.tc"; td: "ew.td"; te: "ew.te"; tf: "ew.tf"; tg: "ew.tg"; th: "ew.th"; ti: "ew.ti"; tj: "ew.tj"; tk: "ew.tk"; tl: "ew.tl"; tm: "ew.tm"; tn: "ew.tn"; to: "ew.to"; tp: "ew.tp"; tq: "ew.tq"; tr: "ew.tr"; ts: "ew.ts"; tt: "ew.tt"; tu: "ew.tu"; tv: "ew.tv"; tw: "ew.tw"; tx: "ew.tx"; ty: "ew.ty"; tz: "ew.tz"; ua: "ew.ua"; ub: "ew.ub"; uc: "ew.uc"; ud: "ew.ud"; ue: "ew.ue"; uf: "ew.uf"; ug: "ew.ug"; uh: "ew.uh"; ui: "ew.ui"; uj: "ew.uj"; uk: "ew.uk"; ul: "ew.ul"; um: "ew.um"; un: "ew.un"; uo: "ew.uo"; up: "ew.up"; uq: "ew.uq"; ur: "ew.ur"; us: "ew.us"; ut: "ew.ut"; uu: "ew.uu"; uv: "ew.uv"; uw: "ew.uw"; ux: "ew.ux"; uy: "ew.uy"; uz: "ew.uz"; va: "ew.va"; vb: "ew.vb"; vc: "ew.vc"; vd: "ew.vd"; ve: "ew.ve"; vf: "ew.vf"; vg: "ew.vg"; vh: "ew.vh"; vi: "ew.vi"; vj: "ew.vj"; vk: "ew.vk"; vl: "ew.vl"; vm: "ew.vm"; vn: "ew.vn"; vo: "ew.vo"; vp: "ew.vp"; vq: "ew.vq"; vr: "ew.vr"; vs: "ew.vs"; vt: "ew.vt"; vu: "ew.vu"; vv: "ew.vv"; vw: "ew.vw"; vx: "ew.vx"; vy: "ew.vy"; vz: "ew.vz"; wa: "ew.wa"; wb: "ew.wb"; wc: "ew.wc"; wd: "ew.wd"; we: "ew.we"; wf: "ew.wf"; wg: "ew.wg"; wh: "ew.wh"; wi: "ew.wi"; wj: "ew.wj"; wk: "ew.wk"; wl: "ew.wl"; wm: "ew.wm"; wn: "ew.wn"; wo: "ew.wo"; wp: "ew.wp"; wq: "ew.wq"; wr: "ew.wr"; ws: "ew.ws"; wt: "ew.wt"; wu: "ew.wu"; wv: "ew.wv"; ww: "ew.ww"; wx: "ew.wx"; wy: "ew.wy"; wz: "ew.wz"; xa: "ew.xa"; xb: "ew.xb"; xc: "ew.xc"; xd: "ew.xd"; xe: "ew.xe"; xf: "ew.xf"; xg: "ew.xg"; xh: "ew.xh"; xi: "ew.xi"; xj: "ew.xj"; xk: "ew.xk"; xl: "ew.xl"; xm: "ew.xm"; xn: "ew.xn"; xo: "ew.xo"; xp: "ew.xp"; xq: "ew.xq"; xr: "ew.xr"; xs: "ew.xs"; xt: "ew.xt"; xu: "ew.xu"; xv: "ew.xv"; xw: "ew.xw"; xx: "ew.xx"; xy: "ew.xy"; xz: "ew.xz"; ya: "ew.ya"; yb: "ew.yb"; yc: "ew.yc"; yd: "ew.yd"; ye: "ew.ye"; yf: "ew.yf"; yg: "ew.yg"; yh: "ew.yh"; yi: "ew.yi"; yj: "ew.yj"; yk: "ew.yk"; yl: "ew.yl"; ym: "ew.ym"; yn: "ew.yn"; yo: "ew.yo"; yp: "ew.yp"; yq: "ew.yq"; yr: "ew.yr"; ys: "ew.ys"; yt: "ew.yt"; yu: "ew.yu"; yv: "ew.yv"; yw: "ew.yw"; yx: "ew.yx"; yy: "ew.yy"; yz: "ew.yz"; za: "ew.za"; zb: "ew.zb"; zc: "ew.zc"; zd: "ew.zd"; ze: "ew.ze"; zf: "ew.zf"; zg: "ew.zg"; zh: "ew.zh"; zi: "ew.zi"; zj: "ew.zj"; zk: "ew.zk"; zl: "ew.zl"; zm: "ew.zm"; zn: "ew.zn"; zo: "ew.zo"; zp: "ew.zp"; zq: "ew.zq"; zr: "ew.zr"; zs: "ew.zs"; zt: "ew.zt"; zu: "ew.zu"; zv: "ew.zv"; zw: "ew.zw"; zx: "ew.zx"; zy: "ew.zy"; zz: "ew.zz"; }; ex: { aa: "ex.aa"; ab: "ex.ab"; ac: "ex.ac"; ad: "ex.ad"; ae: "ex.ae"; af: "ex.af"; ag: "ex.ag"; ah: "ex.ah"; ai: "ex.ai"; aj: "ex.aj"; ak: "ex.ak"; al: "ex.al"; am: "ex.am"; an: "ex.an"; ao: "ex.ao"; ap: "ex.ap"; aq: "ex.aq"; ar: "ex.ar"; as: "ex.as"; at: "ex.at"; au: "ex.au"; av: "ex.av"; aw: "ex.aw"; ax: "ex.ax"; ay: "ex.ay"; az: "ex.az"; ba: "ex.ba"; bb: "ex.bb"; bc: "ex.bc"; bd: "ex.bd"; be: "ex.be"; bf: "ex.bf"; bg: "ex.bg"; bh: "ex.bh"; bi: "ex.bi"; bj: "ex.bj"; bk: "ex.bk"; bl: "ex.bl"; bm: "ex.bm"; bn: "ex.bn"; bo: "ex.bo"; bp: "ex.bp"; bq: "ex.bq"; br: "ex.br"; bs: "ex.bs"; bt: "ex.bt"; bu: "ex.bu"; bv: "ex.bv"; bw: "ex.bw"; bx: "ex.bx"; by: "ex.by"; bz: "ex.bz"; ca: "ex.ca"; cb: "ex.cb"; cc: "ex.cc"; cd: "ex.cd"; ce: "ex.ce"; cf: "ex.cf"; cg: "ex.cg"; ch: "ex.ch"; ci: "ex.ci"; cj: "ex.cj"; ck: "ex.ck"; cl: "ex.cl"; cm: "ex.cm"; cn: "ex.cn"; co: "ex.co"; cp: "ex.cp"; cq: "ex.cq"; cr: "ex.cr"; cs: "ex.cs"; ct: "ex.ct"; cu: "ex.cu"; cv: "ex.cv"; cw: "ex.cw"; cx: "ex.cx"; cy: "ex.cy"; cz: "ex.cz"; da: "ex.da"; db: "ex.db"; dc: "ex.dc"; dd: "ex.dd"; de: "ex.de"; df: "ex.df"; dg: "ex.dg"; dh: "ex.dh"; di: "ex.di"; dj: "ex.dj"; dk: "ex.dk"; dl: "ex.dl"; dm: "ex.dm"; dn: "ex.dn"; do: "ex.do"; dp: "ex.dp"; dq: "ex.dq"; dr: "ex.dr"; ds: "ex.ds"; dt: "ex.dt"; du: "ex.du"; dv: "ex.dv"; dw: "ex.dw"; dx: "ex.dx"; dy: "ex.dy"; dz: "ex.dz"; ea: "ex.ea"; eb: "ex.eb"; ec: "ex.ec"; ed: "ex.ed"; ee: "ex.ee"; ef: "ex.ef"; eg: "ex.eg"; eh: "ex.eh"; ei: "ex.ei"; ej: "ex.ej"; ek: "ex.ek"; el: "ex.el"; em: "ex.em"; en: "ex.en"; eo: "ex.eo"; ep: "ex.ep"; eq: "ex.eq"; er: "ex.er"; es: "ex.es"; et: "ex.et"; eu: "ex.eu"; ev: "ex.ev"; ew: "ex.ew"; ex: "ex.ex"; ey: "ex.ey"; ez: "ex.ez"; fa: "ex.fa"; fb: "ex.fb"; fc: "ex.fc"; fd: "ex.fd"; fe: "ex.fe"; ff: "ex.ff"; fg: "ex.fg"; fh: "ex.fh"; fi: "ex.fi"; fj: "ex.fj"; fk: "ex.fk"; fl: "ex.fl"; fm: "ex.fm"; fn: "ex.fn"; fo: "ex.fo"; fp: "ex.fp"; fq: "ex.fq"; fr: "ex.fr"; fs: "ex.fs"; ft: "ex.ft"; fu: "ex.fu"; fv: "ex.fv"; fw: "ex.fw"; fx: "ex.fx"; fy: "ex.fy"; fz: "ex.fz"; ga: "ex.ga"; gb: "ex.gb"; gc: "ex.gc"; gd: "ex.gd"; ge: "ex.ge"; gf: "ex.gf"; gg: "ex.gg"; gh: "ex.gh"; gi: "ex.gi"; gj: "ex.gj"; gk: "ex.gk"; gl: "ex.gl"; gm: "ex.gm"; gn: "ex.gn"; go: "ex.go"; gp: "ex.gp"; gq: "ex.gq"; gr: "ex.gr"; gs: "ex.gs"; gt: "ex.gt"; gu: "ex.gu"; gv: "ex.gv"; gw: "ex.gw"; gx: "ex.gx"; gy: "ex.gy"; gz: "ex.gz"; ha: "ex.ha"; hb: "ex.hb"; hc: "ex.hc"; hd: "ex.hd"; he: "ex.he"; hf: "ex.hf"; hg: "ex.hg"; hh: "ex.hh"; hi: "ex.hi"; hj: "ex.hj"; hk: "ex.hk"; hl: "ex.hl"; hm: "ex.hm"; hn: "ex.hn"; ho: "ex.ho"; hp: "ex.hp"; hq: "ex.hq"; hr: "ex.hr"; hs: "ex.hs"; ht: "ex.ht"; hu: "ex.hu"; hv: "ex.hv"; hw: "ex.hw"; hx: "ex.hx"; hy: "ex.hy"; hz: "ex.hz"; ia: "ex.ia"; ib: "ex.ib"; ic: "ex.ic"; id: "ex.id"; ie: "ex.ie"; if: "ex.if"; ig: "ex.ig"; ih: "ex.ih"; ii: "ex.ii"; ij: "ex.ij"; ik: "ex.ik"; il: "ex.il"; im: "ex.im"; in: "ex.in"; io: "ex.io"; ip: "ex.ip"; iq: "ex.iq"; ir: "ex.ir"; is: "ex.is"; it: "ex.it"; iu: "ex.iu"; iv: "ex.iv"; iw: "ex.iw"; ix: "ex.ix"; iy: "ex.iy"; iz: "ex.iz"; ja: "ex.ja"; jb: "ex.jb"; jc: "ex.jc"; jd: "ex.jd"; je: "ex.je"; jf: "ex.jf"; jg: "ex.jg"; jh: "ex.jh"; ji: "ex.ji"; jj: "ex.jj"; jk: "ex.jk"; jl: "ex.jl"; jm: "ex.jm"; jn: "ex.jn"; jo: "ex.jo"; jp: "ex.jp"; jq: "ex.jq"; jr: "ex.jr"; js: "ex.js"; jt: "ex.jt"; ju: "ex.ju"; jv: "ex.jv"; jw: "ex.jw"; jx: "ex.jx"; jy: "ex.jy"; jz: "ex.jz"; ka: "ex.ka"; kb: "ex.kb"; kc: "ex.kc"; kd: "ex.kd"; ke: "ex.ke"; kf: "ex.kf"; kg: "ex.kg"; kh: "ex.kh"; ki: "ex.ki"; kj: "ex.kj"; kk: "ex.kk"; kl: "ex.kl"; km: "ex.km"; kn: "ex.kn"; ko: "ex.ko"; kp: "ex.kp"; kq: "ex.kq"; kr: "ex.kr"; ks: "ex.ks"; kt: "ex.kt"; ku: "ex.ku"; kv: "ex.kv"; kw: "ex.kw"; kx: "ex.kx"; ky: "ex.ky"; kz: "ex.kz"; la: "ex.la"; lb: "ex.lb"; lc: "ex.lc"; ld: "ex.ld"; le: "ex.le"; lf: "ex.lf"; lg: "ex.lg"; lh: "ex.lh"; li: "ex.li"; lj: "ex.lj"; lk: "ex.lk"; ll: "ex.ll"; lm: "ex.lm"; ln: "ex.ln"; lo: "ex.lo"; lp: "ex.lp"; lq: "ex.lq"; lr: "ex.lr"; ls: "ex.ls"; lt: "ex.lt"; lu: "ex.lu"; lv: "ex.lv"; lw: "ex.lw"; lx: "ex.lx"; ly: "ex.ly"; lz: "ex.lz"; ma: "ex.ma"; mb: "ex.mb"; mc: "ex.mc"; md: "ex.md"; me: "ex.me"; mf: "ex.mf"; mg: "ex.mg"; mh: "ex.mh"; mi: "ex.mi"; mj: "ex.mj"; mk: "ex.mk"; ml: "ex.ml"; mm: "ex.mm"; mn: "ex.mn"; mo: "ex.mo"; mp: "ex.mp"; mq: "ex.mq"; mr: "ex.mr"; ms: "ex.ms"; mt: "ex.mt"; mu: "ex.mu"; mv: "ex.mv"; mw: "ex.mw"; mx: "ex.mx"; my: "ex.my"; mz: "ex.mz"; na: "ex.na"; nb: "ex.nb"; nc: "ex.nc"; nd: "ex.nd"; ne: "ex.ne"; nf: "ex.nf"; ng: "ex.ng"; nh: "ex.nh"; ni: "ex.ni"; nj: "ex.nj"; nk: "ex.nk"; nl: "ex.nl"; nm: "ex.nm"; nn: "ex.nn"; no: "ex.no"; np: "ex.np"; nq: "ex.nq"; nr: "ex.nr"; ns: "ex.ns"; nt: "ex.nt"; nu: "ex.nu"; nv: "ex.nv"; nw: "ex.nw"; nx: "ex.nx"; ny: "ex.ny"; nz: "ex.nz"; oa: "ex.oa"; ob: "ex.ob"; oc: "ex.oc"; od: "ex.od"; oe: "ex.oe"; of: "ex.of"; og: "ex.og"; oh: "ex.oh"; oi: "ex.oi"; oj: "ex.oj"; ok: "ex.ok"; ol: "ex.ol"; om: "ex.om"; on: "ex.on"; oo: "ex.oo"; op: "ex.op"; oq: "ex.oq"; or: "ex.or"; os: "ex.os"; ot: "ex.ot"; ou: "ex.ou"; ov: "ex.ov"; ow: "ex.ow"; ox: "ex.ox"; oy: "ex.oy"; oz: "ex.oz"; pa: "ex.pa"; pb: "ex.pb"; pc: "ex.pc"; pd: "ex.pd"; pe: "ex.pe"; pf: "ex.pf"; pg: "ex.pg"; ph: "ex.ph"; pi: "ex.pi"; pj: "ex.pj"; pk: "ex.pk"; pl: "ex.pl"; pm: "ex.pm"; pn: "ex.pn"; po: "ex.po"; pp: "ex.pp"; pq: "ex.pq"; pr: "ex.pr"; ps: "ex.ps"; pt: "ex.pt"; pu: "ex.pu"; pv: "ex.pv"; pw: "ex.pw"; px: "ex.px"; py: "ex.py"; pz: "ex.pz"; qa: "ex.qa"; qb: "ex.qb"; qc: "ex.qc"; qd: "ex.qd"; qe: "ex.qe"; qf: "ex.qf"; qg: "ex.qg"; qh: "ex.qh"; qi: "ex.qi"; qj: "ex.qj"; qk: "ex.qk"; ql: "ex.ql"; qm: "ex.qm"; qn: "ex.qn"; qo: "ex.qo"; qp: "ex.qp"; qq: "ex.qq"; qr: "ex.qr"; qs: "ex.qs"; qt: "ex.qt"; qu: "ex.qu"; qv: "ex.qv"; qw: "ex.qw"; qx: "ex.qx"; qy: "ex.qy"; qz: "ex.qz"; ra: "ex.ra"; rb: "ex.rb"; rc: "ex.rc"; rd: "ex.rd"; re: "ex.re"; rf: "ex.rf"; rg: "ex.rg"; rh: "ex.rh"; ri: "ex.ri"; rj: "ex.rj"; rk: "ex.rk"; rl: "ex.rl"; rm: "ex.rm"; rn: "ex.rn"; ro: "ex.ro"; rp: "ex.rp"; rq: "ex.rq"; rr: "ex.rr"; rs: "ex.rs"; rt: "ex.rt"; ru: "ex.ru"; rv: "ex.rv"; rw: "ex.rw"; rx: "ex.rx"; ry: "ex.ry"; rz: "ex.rz"; sa: "ex.sa"; sb: "ex.sb"; sc: "ex.sc"; sd: "ex.sd"; se: "ex.se"; sf: "ex.sf"; sg: "ex.sg"; sh: "ex.sh"; si: "ex.si"; sj: "ex.sj"; sk: "ex.sk"; sl: "ex.sl"; sm: "ex.sm"; sn: "ex.sn"; so: "ex.so"; sp: "ex.sp"; sq: "ex.sq"; sr: "ex.sr"; ss: "ex.ss"; st: "ex.st"; su: "ex.su"; sv: "ex.sv"; sw: "ex.sw"; sx: "ex.sx"; sy: "ex.sy"; sz: "ex.sz"; ta: "ex.ta"; tb: "ex.tb"; tc: "ex.tc"; td: "ex.td"; te: "ex.te"; tf: "ex.tf"; tg: "ex.tg"; th: "ex.th"; ti: "ex.ti"; tj: "ex.tj"; tk: "ex.tk"; tl: "ex.tl"; tm: "ex.tm"; tn: "ex.tn"; to: "ex.to"; tp: "ex.tp"; tq: "ex.tq"; tr: "ex.tr"; ts: "ex.ts"; tt: "ex.tt"; tu: "ex.tu"; tv: "ex.tv"; tw: "ex.tw"; tx: "ex.tx"; ty: "ex.ty"; tz: "ex.tz"; ua: "ex.ua"; ub: "ex.ub"; uc: "ex.uc"; ud: "ex.ud"; ue: "ex.ue"; uf: "ex.uf"; ug: "ex.ug"; uh: "ex.uh"; ui: "ex.ui"; uj: "ex.uj"; uk: "ex.uk"; ul: "ex.ul"; um: "ex.um"; un: "ex.un"; uo: "ex.uo"; up: "ex.up"; uq: "ex.uq"; ur: "ex.ur"; us: "ex.us"; ut: "ex.ut"; uu: "ex.uu"; uv: "ex.uv"; uw: "ex.uw"; ux: "ex.ux"; uy: "ex.uy"; uz: "ex.uz"; va: "ex.va"; vb: "ex.vb"; vc: "ex.vc"; vd: "ex.vd"; ve: "ex.ve"; vf: "ex.vf"; vg: "ex.vg"; vh: "ex.vh"; vi: "ex.vi"; vj: "ex.vj"; vk: "ex.vk"; vl: "ex.vl"; vm: "ex.vm"; vn: "ex.vn"; vo: "ex.vo"; vp: "ex.vp"; vq: "ex.vq"; vr: "ex.vr"; vs: "ex.vs"; vt: "ex.vt"; vu: "ex.vu"; vv: "ex.vv"; vw: "ex.vw"; vx: "ex.vx"; vy: "ex.vy"; vz: "ex.vz"; wa: "ex.wa"; wb: "ex.wb"; wc: "ex.wc"; wd: "ex.wd"; we: "ex.we"; wf: "ex.wf"; wg: "ex.wg"; wh: "ex.wh"; wi: "ex.wi"; wj: "ex.wj"; wk: "ex.wk"; wl: "ex.wl"; wm: "ex.wm"; wn: "ex.wn"; wo: "ex.wo"; wp: "ex.wp"; wq: "ex.wq"; wr: "ex.wr"; ws: "ex.ws"; wt: "ex.wt"; wu: "ex.wu"; wv: "ex.wv"; ww: "ex.ww"; wx: "ex.wx"; wy: "ex.wy"; wz: "ex.wz"; xa: "ex.xa"; xb: "ex.xb"; xc: "ex.xc"; xd: "ex.xd"; xe: "ex.xe"; xf: "ex.xf"; xg: "ex.xg"; xh: "ex.xh"; xi: "ex.xi"; xj: "ex.xj"; xk: "ex.xk"; xl: "ex.xl"; xm: "ex.xm"; xn: "ex.xn"; xo: "ex.xo"; xp: "ex.xp"; xq: "ex.xq"; xr: "ex.xr"; xs: "ex.xs"; xt: "ex.xt"; xu: "ex.xu"; xv: "ex.xv"; xw: "ex.xw"; xx: "ex.xx"; xy: "ex.xy"; xz: "ex.xz"; ya: "ex.ya"; yb: "ex.yb"; yc: "ex.yc"; yd: "ex.yd"; ye: "ex.ye"; yf: "ex.yf"; yg: "ex.yg"; yh: "ex.yh"; yi: "ex.yi"; yj: "ex.yj"; yk: "ex.yk"; yl: "ex.yl"; ym: "ex.ym"; yn: "ex.yn"; yo: "ex.yo"; yp: "ex.yp"; yq: "ex.yq"; yr: "ex.yr"; ys: "ex.ys"; yt: "ex.yt"; yu: "ex.yu"; yv: "ex.yv"; yw: "ex.yw"; yx: "ex.yx"; yy: "ex.yy"; yz: "ex.yz"; za: "ex.za"; zb: "ex.zb"; zc: "ex.zc"; zd: "ex.zd"; ze: "ex.ze"; zf: "ex.zf"; zg: "ex.zg"; zh: "ex.zh"; zi: "ex.zi"; zj: "ex.zj"; zk: "ex.zk"; zl: "ex.zl"; zm: "ex.zm"; zn: "ex.zn"; zo: "ex.zo"; zp: "ex.zp"; zq: "ex.zq"; zr: "ex.zr"; zs: "ex.zs"; zt: "ex.zt"; zu: "ex.zu"; zv: "ex.zv"; zw: "ex.zw"; zx: "ex.zx"; zy: "ex.zy"; zz: "ex.zz"; }; ey: { aa: "ey.aa"; ab: "ey.ab"; ac: "ey.ac"; ad: "ey.ad"; ae: "ey.ae"; af: "ey.af"; ag: "ey.ag"; ah: "ey.ah"; ai: "ey.ai"; aj: "ey.aj"; ak: "ey.ak"; al: "ey.al"; am: "ey.am"; an: "ey.an"; ao: "ey.ao"; ap: "ey.ap"; aq: "ey.aq"; ar: "ey.ar"; as: "ey.as"; at: "ey.at"; au: "ey.au"; av: "ey.av"; aw: "ey.aw"; ax: "ey.ax"; ay: "ey.ay"; az: "ey.az"; ba: "ey.ba"; bb: "ey.bb"; bc: "ey.bc"; bd: "ey.bd"; be: "ey.be"; bf: "ey.bf"; bg: "ey.bg"; bh: "ey.bh"; bi: "ey.bi"; bj: "ey.bj"; bk: "ey.bk"; bl: "ey.bl"; bm: "ey.bm"; bn: "ey.bn"; bo: "ey.bo"; bp: "ey.bp"; bq: "ey.bq"; br: "ey.br"; bs: "ey.bs"; bt: "ey.bt"; bu: "ey.bu"; bv: "ey.bv"; bw: "ey.bw"; bx: "ey.bx"; by: "ey.by"; bz: "ey.bz"; ca: "ey.ca"; cb: "ey.cb"; cc: "ey.cc"; cd: "ey.cd"; ce: "ey.ce"; cf: "ey.cf"; cg: "ey.cg"; ch: "ey.ch"; ci: "ey.ci"; cj: "ey.cj"; ck: "ey.ck"; cl: "ey.cl"; cm: "ey.cm"; cn: "ey.cn"; co: "ey.co"; cp: "ey.cp"; cq: "ey.cq"; cr: "ey.cr"; cs: "ey.cs"; ct: "ey.ct"; cu: "ey.cu"; cv: "ey.cv"; cw: "ey.cw"; cx: "ey.cx"; cy: "ey.cy"; cz: "ey.cz"; da: "ey.da"; db: "ey.db"; dc: "ey.dc"; dd: "ey.dd"; de: "ey.de"; df: "ey.df"; dg: "ey.dg"; dh: "ey.dh"; di: "ey.di"; dj: "ey.dj"; dk: "ey.dk"; dl: "ey.dl"; dm: "ey.dm"; dn: "ey.dn"; do: "ey.do"; dp: "ey.dp"; dq: "ey.dq"; dr: "ey.dr"; ds: "ey.ds"; dt: "ey.dt"; du: "ey.du"; dv: "ey.dv"; dw: "ey.dw"; dx: "ey.dx"; dy: "ey.dy"; dz: "ey.dz"; ea: "ey.ea"; eb: "ey.eb"; ec: "ey.ec"; ed: "ey.ed"; ee: "ey.ee"; ef: "ey.ef"; eg: "ey.eg"; eh: "ey.eh"; ei: "ey.ei"; ej: "ey.ej"; ek: "ey.ek"; el: "ey.el"; em: "ey.em"; en: "ey.en"; eo: "ey.eo"; ep: "ey.ep"; eq: "ey.eq"; er: "ey.er"; es: "ey.es"; et: "ey.et"; eu: "ey.eu"; ev: "ey.ev"; ew: "ey.ew"; ex: "ey.ex"; ey: "ey.ey"; ez: "ey.ez"; fa: "ey.fa"; fb: "ey.fb"; fc: "ey.fc"; fd: "ey.fd"; fe: "ey.fe"; ff: "ey.ff"; fg: "ey.fg"; fh: "ey.fh"; fi: "ey.fi"; fj: "ey.fj"; fk: "ey.fk"; fl: "ey.fl"; fm: "ey.fm"; fn: "ey.fn"; fo: "ey.fo"; fp: "ey.fp"; fq: "ey.fq"; fr: "ey.fr"; fs: "ey.fs"; ft: "ey.ft"; fu: "ey.fu"; fv: "ey.fv"; fw: "ey.fw"; fx: "ey.fx"; fy: "ey.fy"; fz: "ey.fz"; ga: "ey.ga"; gb: "ey.gb"; gc: "ey.gc"; gd: "ey.gd"; ge: "ey.ge"; gf: "ey.gf"; gg: "ey.gg"; gh: "ey.gh"; gi: "ey.gi"; gj: "ey.gj"; gk: "ey.gk"; gl: "ey.gl"; gm: "ey.gm"; gn: "ey.gn"; go: "ey.go"; gp: "ey.gp"; gq: "ey.gq"; gr: "ey.gr"; gs: "ey.gs"; gt: "ey.gt"; gu: "ey.gu"; gv: "ey.gv"; gw: "ey.gw"; gx: "ey.gx"; gy: "ey.gy"; gz: "ey.gz"; ha: "ey.ha"; hb: "ey.hb"; hc: "ey.hc"; hd: "ey.hd"; he: "ey.he"; hf: "ey.hf"; hg: "ey.hg"; hh: "ey.hh"; hi: "ey.hi"; hj: "ey.hj"; hk: "ey.hk"; hl: "ey.hl"; hm: "ey.hm"; hn: "ey.hn"; ho: "ey.ho"; hp: "ey.hp"; hq: "ey.hq"; hr: "ey.hr"; hs: "ey.hs"; ht: "ey.ht"; hu: "ey.hu"; hv: "ey.hv"; hw: "ey.hw"; hx: "ey.hx"; hy: "ey.hy"; hz: "ey.hz"; ia: "ey.ia"; ib: "ey.ib"; ic: "ey.ic"; id: "ey.id"; ie: "ey.ie"; if: "ey.if"; ig: "ey.ig"; ih: "ey.ih"; ii: "ey.ii"; ij: "ey.ij"; ik: "ey.ik"; il: "ey.il"; im: "ey.im"; in: "ey.in"; io: "ey.io"; ip: "ey.ip"; iq: "ey.iq"; ir: "ey.ir"; is: "ey.is"; it: "ey.it"; iu: "ey.iu"; iv: "ey.iv"; iw: "ey.iw"; ix: "ey.ix"; iy: "ey.iy"; iz: "ey.iz"; ja: "ey.ja"; jb: "ey.jb"; jc: "ey.jc"; jd: "ey.jd"; je: "ey.je"; jf: "ey.jf"; jg: "ey.jg"; jh: "ey.jh"; ji: "ey.ji"; jj: "ey.jj"; jk: "ey.jk"; jl: "ey.jl"; jm: "ey.jm"; jn: "ey.jn"; jo: "ey.jo"; jp: "ey.jp"; jq: "ey.jq"; jr: "ey.jr"; js: "ey.js"; jt: "ey.jt"; ju: "ey.ju"; jv: "ey.jv"; jw: "ey.jw"; jx: "ey.jx"; jy: "ey.jy"; jz: "ey.jz"; ka: "ey.ka"; kb: "ey.kb"; kc: "ey.kc"; kd: "ey.kd"; ke: "ey.ke"; kf: "ey.kf"; kg: "ey.kg"; kh: "ey.kh"; ki: "ey.ki"; kj: "ey.kj"; kk: "ey.kk"; kl: "ey.kl"; km: "ey.km"; kn: "ey.kn"; ko: "ey.ko"; kp: "ey.kp"; kq: "ey.kq"; kr: "ey.kr"; ks: "ey.ks"; kt: "ey.kt"; ku: "ey.ku"; kv: "ey.kv"; kw: "ey.kw"; kx: "ey.kx"; ky: "ey.ky"; kz: "ey.kz"; la: "ey.la"; lb: "ey.lb"; lc: "ey.lc"; ld: "ey.ld"; le: "ey.le"; lf: "ey.lf"; lg: "ey.lg"; lh: "ey.lh"; li: "ey.li"; lj: "ey.lj"; lk: "ey.lk"; ll: "ey.ll"; lm: "ey.lm"; ln: "ey.ln"; lo: "ey.lo"; lp: "ey.lp"; lq: "ey.lq"; lr: "ey.lr"; ls: "ey.ls"; lt: "ey.lt"; lu: "ey.lu"; lv: "ey.lv"; lw: "ey.lw"; lx: "ey.lx"; ly: "ey.ly"; lz: "ey.lz"; ma: "ey.ma"; mb: "ey.mb"; mc: "ey.mc"; md: "ey.md"; me: "ey.me"; mf: "ey.mf"; mg: "ey.mg"; mh: "ey.mh"; mi: "ey.mi"; mj: "ey.mj"; mk: "ey.mk"; ml: "ey.ml"; mm: "ey.mm"; mn: "ey.mn"; mo: "ey.mo"; mp: "ey.mp"; mq: "ey.mq"; mr: "ey.mr"; ms: "ey.ms"; mt: "ey.mt"; mu: "ey.mu"; mv: "ey.mv"; mw: "ey.mw"; mx: "ey.mx"; my: "ey.my"; mz: "ey.mz"; na: "ey.na"; nb: "ey.nb"; nc: "ey.nc"; nd: "ey.nd"; ne: "ey.ne"; nf: "ey.nf"; ng: "ey.ng"; nh: "ey.nh"; ni: "ey.ni"; nj: "ey.nj"; nk: "ey.nk"; nl: "ey.nl"; nm: "ey.nm"; nn: "ey.nn"; no: "ey.no"; np: "ey.np"; nq: "ey.nq"; nr: "ey.nr"; ns: "ey.ns"; nt: "ey.nt"; nu: "ey.nu"; nv: "ey.nv"; nw: "ey.nw"; nx: "ey.nx"; ny: "ey.ny"; nz: "ey.nz"; oa: "ey.oa"; ob: "ey.ob"; oc: "ey.oc"; od: "ey.od"; oe: "ey.oe"; of: "ey.of"; og: "ey.og"; oh: "ey.oh"; oi: "ey.oi"; oj: "ey.oj"; ok: "ey.ok"; ol: "ey.ol"; om: "ey.om"; on: "ey.on"; oo: "ey.oo"; op: "ey.op"; oq: "ey.oq"; or: "ey.or"; os: "ey.os"; ot: "ey.ot"; ou: "ey.ou"; ov: "ey.ov"; ow: "ey.ow"; ox: "ey.ox"; oy: "ey.oy"; oz: "ey.oz"; pa: "ey.pa"; pb: "ey.pb"; pc: "ey.pc"; pd: "ey.pd"; pe: "ey.pe"; pf: "ey.pf"; pg: "ey.pg"; ph: "ey.ph"; pi: "ey.pi"; pj: "ey.pj"; pk: "ey.pk"; pl: "ey.pl"; pm: "ey.pm"; pn: "ey.pn"; po: "ey.po"; pp: "ey.pp"; pq: "ey.pq"; pr: "ey.pr"; ps: "ey.ps"; pt: "ey.pt"; pu: "ey.pu"; pv: "ey.pv"; pw: "ey.pw"; px: "ey.px"; py: "ey.py"; pz: "ey.pz"; qa: "ey.qa"; qb: "ey.qb"; qc: "ey.qc"; qd: "ey.qd"; qe: "ey.qe"; qf: "ey.qf"; qg: "ey.qg"; qh: "ey.qh"; qi: "ey.qi"; qj: "ey.qj"; qk: "ey.qk"; ql: "ey.ql"; qm: "ey.qm"; qn: "ey.qn"; qo: "ey.qo"; qp: "ey.qp"; qq: "ey.qq"; qr: "ey.qr"; qs: "ey.qs"; qt: "ey.qt"; qu: "ey.qu"; qv: "ey.qv"; qw: "ey.qw"; qx: "ey.qx"; qy: "ey.qy"; qz: "ey.qz"; ra: "ey.ra"; rb: "ey.rb"; rc: "ey.rc"; rd: "ey.rd"; re: "ey.re"; rf: "ey.rf"; rg: "ey.rg"; rh: "ey.rh"; ri: "ey.ri"; rj: "ey.rj"; rk: "ey.rk"; rl: "ey.rl"; rm: "ey.rm"; rn: "ey.rn"; ro: "ey.ro"; rp: "ey.rp"; rq: "ey.rq"; rr: "ey.rr"; rs: "ey.rs"; rt: "ey.rt"; ru: "ey.ru"; rv: "ey.rv"; rw: "ey.rw"; rx: "ey.rx"; ry: "ey.ry"; rz: "ey.rz"; sa: "ey.sa"; sb: "ey.sb"; sc: "ey.sc"; sd: "ey.sd"; se: "ey.se"; sf: "ey.sf"; sg: "ey.sg"; sh: "ey.sh"; si: "ey.si"; sj: "ey.sj"; sk: "ey.sk"; sl: "ey.sl"; sm: "ey.sm"; sn: "ey.sn"; so: "ey.so"; sp: "ey.sp"; sq: "ey.sq"; sr: "ey.sr"; ss: "ey.ss"; st: "ey.st"; su: "ey.su"; sv: "ey.sv"; sw: "ey.sw"; sx: "ey.sx"; sy: "ey.sy"; sz: "ey.sz"; ta: "ey.ta"; tb: "ey.tb"; tc: "ey.tc"; td: "ey.td"; te: "ey.te"; tf: "ey.tf"; tg: "ey.tg"; th: "ey.th"; ti: "ey.ti"; tj: "ey.tj"; tk: "ey.tk"; tl: "ey.tl"; tm: "ey.tm"; tn: "ey.tn"; to: "ey.to"; tp: "ey.tp"; tq: "ey.tq"; tr: "ey.tr"; ts: "ey.ts"; tt: "ey.tt"; tu: "ey.tu"; tv: "ey.tv"; tw: "ey.tw"; tx: "ey.tx"; ty: "ey.ty"; tz: "ey.tz"; ua: "ey.ua"; ub: "ey.ub"; uc: "ey.uc"; ud: "ey.ud"; ue: "ey.ue"; uf: "ey.uf"; ug: "ey.ug"; uh: "ey.uh"; ui: "ey.ui"; uj: "ey.uj"; uk: "ey.uk"; ul: "ey.ul"; um: "ey.um"; un: "ey.un"; uo: "ey.uo"; up: "ey.up"; uq: "ey.uq"; ur: "ey.ur"; us: "ey.us"; ut: "ey.ut"; uu: "ey.uu"; uv: "ey.uv"; uw: "ey.uw"; ux: "ey.ux"; uy: "ey.uy"; uz: "ey.uz"; va: "ey.va"; vb: "ey.vb"; vc: "ey.vc"; vd: "ey.vd"; ve: "ey.ve"; vf: "ey.vf"; vg: "ey.vg"; vh: "ey.vh"; vi: "ey.vi"; vj: "ey.vj"; vk: "ey.vk"; vl: "ey.vl"; vm: "ey.vm"; vn: "ey.vn"; vo: "ey.vo"; vp: "ey.vp"; vq: "ey.vq"; vr: "ey.vr"; vs: "ey.vs"; vt: "ey.vt"; vu: "ey.vu"; vv: "ey.vv"; vw: "ey.vw"; vx: "ey.vx"; vy: "ey.vy"; vz: "ey.vz"; wa: "ey.wa"; wb: "ey.wb"; wc: "ey.wc"; wd: "ey.wd"; we: "ey.we"; wf: "ey.wf"; wg: "ey.wg"; wh: "ey.wh"; wi: "ey.wi"; wj: "ey.wj"; wk: "ey.wk"; wl: "ey.wl"; wm: "ey.wm"; wn: "ey.wn"; wo: "ey.wo"; wp: "ey.wp"; wq: "ey.wq"; wr: "ey.wr"; ws: "ey.ws"; wt: "ey.wt"; wu: "ey.wu"; wv: "ey.wv"; ww: "ey.ww"; wx: "ey.wx"; wy: "ey.wy"; wz: "ey.wz"; xa: "ey.xa"; xb: "ey.xb"; xc: "ey.xc"; xd: "ey.xd"; xe: "ey.xe"; xf: "ey.xf"; xg: "ey.xg"; xh: "ey.xh"; xi: "ey.xi"; xj: "ey.xj"; xk: "ey.xk"; xl: "ey.xl"; xm: "ey.xm"; xn: "ey.xn"; xo: "ey.xo"; xp: "ey.xp"; xq: "ey.xq"; xr: "ey.xr"; xs: "ey.xs"; xt: "ey.xt"; xu: "ey.xu"; xv: "ey.xv"; xw: "ey.xw"; xx: "ey.xx"; xy: "ey.xy"; xz: "ey.xz"; ya: "ey.ya"; yb: "ey.yb"; yc: "ey.yc"; yd: "ey.yd"; ye: "ey.ye"; yf: "ey.yf"; yg: "ey.yg"; yh: "ey.yh"; yi: "ey.yi"; yj: "ey.yj"; yk: "ey.yk"; yl: "ey.yl"; ym: "ey.ym"; yn: "ey.yn"; yo: "ey.yo"; yp: "ey.yp"; yq: "ey.yq"; yr: "ey.yr"; ys: "ey.ys"; yt: "ey.yt"; yu: "ey.yu"; yv: "ey.yv"; yw: "ey.yw"; yx: "ey.yx"; yy: "ey.yy"; yz: "ey.yz"; za: "ey.za"; zb: "ey.zb"; zc: "ey.zc"; zd: "ey.zd"; ze: "ey.ze"; zf: "ey.zf"; zg: "ey.zg"; zh: "ey.zh"; zi: "ey.zi"; zj: "ey.zj"; zk: "ey.zk"; zl: "ey.zl"; zm: "ey.zm"; zn: "ey.zn"; zo: "ey.zo"; zp: "ey.zp"; zq: "ey.zq"; zr: "ey.zr"; zs: "ey.zs"; zt: "ey.zt"; zu: "ey.zu"; zv: "ey.zv"; zw: "ey.zw"; zx: "ey.zx"; zy: "ey.zy"; zz: "ey.zz"; }; ez: { aa: "ez.aa"; ab: "ez.ab"; ac: "ez.ac"; ad: "ez.ad"; ae: "ez.ae"; af: "ez.af"; ag: "ez.ag"; ah: "ez.ah"; ai: "ez.ai"; aj: "ez.aj"; ak: "ez.ak"; al: "ez.al"; am: "ez.am"; an: "ez.an"; ao: "ez.ao"; ap: "ez.ap"; aq: "ez.aq"; ar: "ez.ar"; as: "ez.as"; at: "ez.at"; au: "ez.au"; av: "ez.av"; aw: "ez.aw"; ax: "ez.ax"; ay: "ez.ay"; az: "ez.az"; ba: "ez.ba"; bb: "ez.bb"; bc: "ez.bc"; bd: "ez.bd"; be: "ez.be"; bf: "ez.bf"; bg: "ez.bg"; bh: "ez.bh"; bi: "ez.bi"; bj: "ez.bj"; bk: "ez.bk"; bl: "ez.bl"; bm: "ez.bm"; bn: "ez.bn"; bo: "ez.bo"; bp: "ez.bp"; bq: "ez.bq"; br: "ez.br"; bs: "ez.bs"; bt: "ez.bt"; bu: "ez.bu"; bv: "ez.bv"; bw: "ez.bw"; bx: "ez.bx"; by: "ez.by"; bz: "ez.bz"; ca: "ez.ca"; cb: "ez.cb"; cc: "ez.cc"; cd: "ez.cd"; ce: "ez.ce"; cf: "ez.cf"; cg: "ez.cg"; ch: "ez.ch"; ci: "ez.ci"; cj: "ez.cj"; ck: "ez.ck"; cl: "ez.cl"; cm: "ez.cm"; cn: "ez.cn"; co: "ez.co"; cp: "ez.cp"; cq: "ez.cq"; cr: "ez.cr"; cs: "ez.cs"; ct: "ez.ct"; cu: "ez.cu"; cv: "ez.cv"; cw: "ez.cw"; cx: "ez.cx"; cy: "ez.cy"; cz: "ez.cz"; da: "ez.da"; db: "ez.db"; dc: "ez.dc"; dd: "ez.dd"; de: "ez.de"; df: "ez.df"; dg: "ez.dg"; dh: "ez.dh"; di: "ez.di"; dj: "ez.dj"; dk: "ez.dk"; dl: "ez.dl"; dm: "ez.dm"; dn: "ez.dn"; do: "ez.do"; dp: "ez.dp"; dq: "ez.dq"; dr: "ez.dr"; ds: "ez.ds"; dt: "ez.dt"; du: "ez.du"; dv: "ez.dv"; dw: "ez.dw"; dx: "ez.dx"; dy: "ez.dy"; dz: "ez.dz"; ea: "ez.ea"; eb: "ez.eb"; ec: "ez.ec"; ed: "ez.ed"; ee: "ez.ee"; ef: "ez.ef"; eg: "ez.eg"; eh: "ez.eh"; ei: "ez.ei"; ej: "ez.ej"; ek: "ez.ek"; el: "ez.el"; em: "ez.em"; en: "ez.en"; eo: "ez.eo"; ep: "ez.ep"; eq: "ez.eq"; er: "ez.er"; es: "ez.es"; et: "ez.et"; eu: "ez.eu"; ev: "ez.ev"; ew: "ez.ew"; ex: "ez.ex"; ey: "ez.ey"; ez: "ez.ez"; fa: "ez.fa"; fb: "ez.fb"; fc: "ez.fc"; fd: "ez.fd"; fe: "ez.fe"; ff: "ez.ff"; fg: "ez.fg"; fh: "ez.fh"; fi: "ez.fi"; fj: "ez.fj"; fk: "ez.fk"; fl: "ez.fl"; fm: "ez.fm"; fn: "ez.fn"; fo: "ez.fo"; fp: "ez.fp"; fq: "ez.fq"; fr: "ez.fr"; fs: "ez.fs"; ft: "ez.ft"; fu: "ez.fu"; fv: "ez.fv"; fw: "ez.fw"; fx: "ez.fx"; fy: "ez.fy"; fz: "ez.fz"; ga: "ez.ga"; gb: "ez.gb"; gc: "ez.gc"; gd: "ez.gd"; ge: "ez.ge"; gf: "ez.gf"; gg: "ez.gg"; gh: "ez.gh"; gi: "ez.gi"; gj: "ez.gj"; gk: "ez.gk"; gl: "ez.gl"; gm: "ez.gm"; gn: "ez.gn"; go: "ez.go"; gp: "ez.gp"; gq: "ez.gq"; gr: "ez.gr"; gs: "ez.gs"; gt: "ez.gt"; gu: "ez.gu"; gv: "ez.gv"; gw: "ez.gw"; gx: "ez.gx"; gy: "ez.gy"; gz: "ez.gz"; ha: "ez.ha"; hb: "ez.hb"; hc: "ez.hc"; hd: "ez.hd"; he: "ez.he"; hf: "ez.hf"; hg: "ez.hg"; hh: "ez.hh"; hi: "ez.hi"; hj: "ez.hj"; hk: "ez.hk"; hl: "ez.hl"; hm: "ez.hm"; hn: "ez.hn"; ho: "ez.ho"; hp: "ez.hp"; hq: "ez.hq"; hr: "ez.hr"; hs: "ez.hs"; ht: "ez.ht"; hu: "ez.hu"; hv: "ez.hv"; hw: "ez.hw"; hx: "ez.hx"; hy: "ez.hy"; hz: "ez.hz"; ia: "ez.ia"; ib: "ez.ib"; ic: "ez.ic"; id: "ez.id"; ie: "ez.ie"; if: "ez.if"; ig: "ez.ig"; ih: "ez.ih"; ii: "ez.ii"; ij: "ez.ij"; ik: "ez.ik"; il: "ez.il"; im: "ez.im"; in: "ez.in"; io: "ez.io"; ip: "ez.ip"; iq: "ez.iq"; ir: "ez.ir"; is: "ez.is"; it: "ez.it"; iu: "ez.iu"; iv: "ez.iv"; iw: "ez.iw"; ix: "ez.ix"; iy: "ez.iy"; iz: "ez.iz"; ja: "ez.ja"; jb: "ez.jb"; jc: "ez.jc"; jd: "ez.jd"; je: "ez.je"; jf: "ez.jf"; jg: "ez.jg"; jh: "ez.jh"; ji: "ez.ji"; jj: "ez.jj"; jk: "ez.jk"; jl: "ez.jl"; jm: "ez.jm"; jn: "ez.jn"; jo: "ez.jo"; jp: "ez.jp"; jq: "ez.jq"; jr: "ez.jr"; js: "ez.js"; jt: "ez.jt"; ju: "ez.ju"; jv: "ez.jv"; jw: "ez.jw"; jx: "ez.jx"; jy: "ez.jy"; jz: "ez.jz"; ka: "ez.ka"; kb: "ez.kb"; kc: "ez.kc"; kd: "ez.kd"; ke: "ez.ke"; kf: "ez.kf"; kg: "ez.kg"; kh: "ez.kh"; ki: "ez.ki"; kj: "ez.kj"; kk: "ez.kk"; kl: "ez.kl"; km: "ez.km"; kn: "ez.kn"; ko: "ez.ko"; kp: "ez.kp"; kq: "ez.kq"; kr: "ez.kr"; ks: "ez.ks"; kt: "ez.kt"; ku: "ez.ku"; kv: "ez.kv"; kw: "ez.kw"; kx: "ez.kx"; ky: "ez.ky"; kz: "ez.kz"; la: "ez.la"; lb: "ez.lb"; lc: "ez.lc"; ld: "ez.ld"; le: "ez.le"; lf: "ez.lf"; lg: "ez.lg"; lh: "ez.lh"; li: "ez.li"; lj: "ez.lj"; lk: "ez.lk"; ll: "ez.ll"; lm: "ez.lm"; ln: "ez.ln"; lo: "ez.lo"; lp: "ez.lp"; lq: "ez.lq"; lr: "ez.lr"; ls: "ez.ls"; lt: "ez.lt"; lu: "ez.lu"; lv: "ez.lv"; lw: "ez.lw"; lx: "ez.lx"; ly: "ez.ly"; lz: "ez.lz"; ma: "ez.ma"; mb: "ez.mb"; mc: "ez.mc"; md: "ez.md"; me: "ez.me"; mf: "ez.mf"; mg: "ez.mg"; mh: "ez.mh"; mi: "ez.mi"; mj: "ez.mj"; mk: "ez.mk"; ml: "ez.ml"; mm: "ez.mm"; mn: "ez.mn"; mo: "ez.mo"; mp: "ez.mp"; mq: "ez.mq"; mr: "ez.mr"; ms: "ez.ms"; mt: "ez.mt"; mu: "ez.mu"; mv: "ez.mv"; mw: "ez.mw"; mx: "ez.mx"; my: "ez.my"; mz: "ez.mz"; na: "ez.na"; nb: "ez.nb"; nc: "ez.nc"; nd: "ez.nd"; ne: "ez.ne"; nf: "ez.nf"; ng: "ez.ng"; nh: "ez.nh"; ni: "ez.ni"; nj: "ez.nj"; nk: "ez.nk"; nl: "ez.nl"; nm: "ez.nm"; nn: "ez.nn"; no: "ez.no"; np: "ez.np"; nq: "ez.nq"; nr: "ez.nr"; ns: "ez.ns"; nt: "ez.nt"; nu: "ez.nu"; nv: "ez.nv"; nw: "ez.nw"; nx: "ez.nx"; ny: "ez.ny"; nz: "ez.nz"; oa: "ez.oa"; ob: "ez.ob"; oc: "ez.oc"; od: "ez.od"; oe: "ez.oe"; of: "ez.of"; og: "ez.og"; oh: "ez.oh"; oi: "ez.oi"; oj: "ez.oj"; ok: "ez.ok"; ol: "ez.ol"; om: "ez.om"; on: "ez.on"; oo: "ez.oo"; op: "ez.op"; oq: "ez.oq"; or: "ez.or"; os: "ez.os"; ot: "ez.ot"; ou: "ez.ou"; ov: "ez.ov"; ow: "ez.ow"; ox: "ez.ox"; oy: "ez.oy"; oz: "ez.oz"; pa: "ez.pa"; pb: "ez.pb"; pc: "ez.pc"; pd: "ez.pd"; pe: "ez.pe"; pf: "ez.pf"; pg: "ez.pg"; ph: "ez.ph"; pi: "ez.pi"; pj: "ez.pj"; pk: "ez.pk"; pl: "ez.pl"; pm: "ez.pm"; pn: "ez.pn"; po: "ez.po"; pp: "ez.pp"; pq: "ez.pq"; pr: "ez.pr"; ps: "ez.ps"; pt: "ez.pt"; pu: "ez.pu"; pv: "ez.pv"; pw: "ez.pw"; px: "ez.px"; py: "ez.py"; pz: "ez.pz"; qa: "ez.qa"; qb: "ez.qb"; qc: "ez.qc"; qd: "ez.qd"; qe: "ez.qe"; qf: "ez.qf"; qg: "ez.qg"; qh: "ez.qh"; qi: "ez.qi"; qj: "ez.qj"; qk: "ez.qk"; ql: "ez.ql"; qm: "ez.qm"; qn: "ez.qn"; qo: "ez.qo"; qp: "ez.qp"; qq: "ez.qq"; qr: "ez.qr"; qs: "ez.qs"; qt: "ez.qt"; qu: "ez.qu"; qv: "ez.qv"; qw: "ez.qw"; qx: "ez.qx"; qy: "ez.qy"; qz: "ez.qz"; ra: "ez.ra"; rb: "ez.rb"; rc: "ez.rc"; rd: "ez.rd"; re: "ez.re"; rf: "ez.rf"; rg: "ez.rg"; rh: "ez.rh"; ri: "ez.ri"; rj: "ez.rj"; rk: "ez.rk"; rl: "ez.rl"; rm: "ez.rm"; rn: "ez.rn"; ro: "ez.ro"; rp: "ez.rp"; rq: "ez.rq"; rr: "ez.rr"; rs: "ez.rs"; rt: "ez.rt"; ru: "ez.ru"; rv: "ez.rv"; rw: "ez.rw"; rx: "ez.rx"; ry: "ez.ry"; rz: "ez.rz"; sa: "ez.sa"; sb: "ez.sb"; sc: "ez.sc"; sd: "ez.sd"; se: "ez.se"; sf: "ez.sf"; sg: "ez.sg"; sh: "ez.sh"; si: "ez.si"; sj: "ez.sj"; sk: "ez.sk"; sl: "ez.sl"; sm: "ez.sm"; sn: "ez.sn"; so: "ez.so"; sp: "ez.sp"; sq: "ez.sq"; sr: "ez.sr"; ss: "ez.ss"; st: "ez.st"; su: "ez.su"; sv: "ez.sv"; sw: "ez.sw"; sx: "ez.sx"; sy: "ez.sy"; sz: "ez.sz"; ta: "ez.ta"; tb: "ez.tb"; tc: "ez.tc"; td: "ez.td"; te: "ez.te"; tf: "ez.tf"; tg: "ez.tg"; th: "ez.th"; ti: "ez.ti"; tj: "ez.tj"; tk: "ez.tk"; tl: "ez.tl"; tm: "ez.tm"; tn: "ez.tn"; to: "ez.to"; tp: "ez.tp"; tq: "ez.tq"; tr: "ez.tr"; ts: "ez.ts"; tt: "ez.tt"; tu: "ez.tu"; tv: "ez.tv"; tw: "ez.tw"; tx: "ez.tx"; ty: "ez.ty"; tz: "ez.tz"; ua: "ez.ua"; ub: "ez.ub"; uc: "ez.uc"; ud: "ez.ud"; ue: "ez.ue"; uf: "ez.uf"; ug: "ez.ug"; uh: "ez.uh"; ui: "ez.ui"; uj: "ez.uj"; uk: "ez.uk"; ul: "ez.ul"; um: "ez.um"; un: "ez.un"; uo: "ez.uo"; up: "ez.up"; uq: "ez.uq"; ur: "ez.ur"; us: "ez.us"; ut: "ez.ut"; uu: "ez.uu"; uv: "ez.uv"; uw: "ez.uw"; ux: "ez.ux"; uy: "ez.uy"; uz: "ez.uz"; va: "ez.va"; vb: "ez.vb"; vc: "ez.vc"; vd: "ez.vd"; ve: "ez.ve"; vf: "ez.vf"; vg: "ez.vg"; vh: "ez.vh"; vi: "ez.vi"; vj: "ez.vj"; vk: "ez.vk"; vl: "ez.vl"; vm: "ez.vm"; vn: "ez.vn"; vo: "ez.vo"; vp: "ez.vp"; vq: "ez.vq"; vr: "ez.vr"; vs: "ez.vs"; vt: "ez.vt"; vu: "ez.vu"; vv: "ez.vv"; vw: "ez.vw"; vx: "ez.vx"; vy: "ez.vy"; vz: "ez.vz"; wa: "ez.wa"; wb: "ez.wb"; wc: "ez.wc"; wd: "ez.wd"; we: "ez.we"; wf: "ez.wf"; wg: "ez.wg"; wh: "ez.wh"; wi: "ez.wi"; wj: "ez.wj"; wk: "ez.wk"; wl: "ez.wl"; wm: "ez.wm"; wn: "ez.wn"; wo: "ez.wo"; wp: "ez.wp"; wq: "ez.wq"; wr: "ez.wr"; ws: "ez.ws"; wt: "ez.wt"; wu: "ez.wu"; wv: "ez.wv"; ww: "ez.ww"; wx: "ez.wx"; wy: "ez.wy"; wz: "ez.wz"; xa: "ez.xa"; xb: "ez.xb"; xc: "ez.xc"; xd: "ez.xd"; xe: "ez.xe"; xf: "ez.xf"; xg: "ez.xg"; xh: "ez.xh"; xi: "ez.xi"; xj: "ez.xj"; xk: "ez.xk"; xl: "ez.xl"; xm: "ez.xm"; xn: "ez.xn"; xo: "ez.xo"; xp: "ez.xp"; xq: "ez.xq"; xr: "ez.xr"; xs: "ez.xs"; xt: "ez.xt"; xu: "ez.xu"; xv: "ez.xv"; xw: "ez.xw"; xx: "ez.xx"; xy: "ez.xy"; xz: "ez.xz"; ya: "ez.ya"; yb: "ez.yb"; yc: "ez.yc"; yd: "ez.yd"; ye: "ez.ye"; yf: "ez.yf"; yg: "ez.yg"; yh: "ez.yh"; yi: "ez.yi"; yj: "ez.yj"; yk: "ez.yk"; yl: "ez.yl"; ym: "ez.ym"; yn: "ez.yn"; yo: "ez.yo"; yp: "ez.yp"; yq: "ez.yq"; yr: "ez.yr"; ys: "ez.ys"; yt: "ez.yt"; yu: "ez.yu"; yv: "ez.yv"; yw: "ez.yw"; yx: "ez.yx"; yy: "ez.yy"; yz: "ez.yz"; za: "ez.za"; zb: "ez.zb"; zc: "ez.zc"; zd: "ez.zd"; ze: "ez.ze"; zf: "ez.zf"; zg: "ez.zg"; zh: "ez.zh"; zi: "ez.zi"; zj: "ez.zj"; zk: "ez.zk"; zl: "ez.zl"; zm: "ez.zm"; zn: "ez.zn"; zo: "ez.zo"; zp: "ez.zp"; zq: "ez.zq"; zr: "ez.zr"; zs: "ez.zs"; zt: "ez.zt"; zu: "ez.zu"; zv: "ez.zv"; zw: "ez.zw"; zx: "ez.zx"; zy: "ez.zy"; zz: "ez.zz"; }; fa: { aa: "fa.aa"; ab: "fa.ab"; ac: "fa.ac"; ad: "fa.ad"; ae: "fa.ae"; af: "fa.af"; ag: "fa.ag"; ah: "fa.ah"; ai: "fa.ai"; aj: "fa.aj"; ak: "fa.ak"; al: "fa.al"; am: "fa.am"; an: "fa.an"; ao: "fa.ao"; ap: "fa.ap"; aq: "fa.aq"; ar: "fa.ar"; as: "fa.as"; at: "fa.at"; au: "fa.au"; av: "fa.av"; aw: "fa.aw"; ax: "fa.ax"; ay: "fa.ay"; az: "fa.az"; ba: "fa.ba"; bb: "fa.bb"; bc: "fa.bc"; bd: "fa.bd"; be: "fa.be"; bf: "fa.bf"; bg: "fa.bg"; bh: "fa.bh"; bi: "fa.bi"; bj: "fa.bj"; bk: "fa.bk"; bl: "fa.bl"; bm: "fa.bm"; bn: "fa.bn"; bo: "fa.bo"; bp: "fa.bp"; bq: "fa.bq"; br: "fa.br"; bs: "fa.bs"; bt: "fa.bt"; bu: "fa.bu"; bv: "fa.bv"; bw: "fa.bw"; bx: "fa.bx"; by: "fa.by"; bz: "fa.bz"; ca: "fa.ca"; cb: "fa.cb"; cc: "fa.cc"; cd: "fa.cd"; ce: "fa.ce"; cf: "fa.cf"; cg: "fa.cg"; ch: "fa.ch"; ci: "fa.ci"; cj: "fa.cj"; ck: "fa.ck"; cl: "fa.cl"; cm: "fa.cm"; cn: "fa.cn"; co: "fa.co"; cp: "fa.cp"; cq: "fa.cq"; cr: "fa.cr"; cs: "fa.cs"; ct: "fa.ct"; cu: "fa.cu"; cv: "fa.cv"; cw: "fa.cw"; cx: "fa.cx"; cy: "fa.cy"; cz: "fa.cz"; da: "fa.da"; db: "fa.db"; dc: "fa.dc"; dd: "fa.dd"; de: "fa.de"; df: "fa.df"; dg: "fa.dg"; dh: "fa.dh"; di: "fa.di"; dj: "fa.dj"; dk: "fa.dk"; dl: "fa.dl"; dm: "fa.dm"; dn: "fa.dn"; do: "fa.do"; dp: "fa.dp"; dq: "fa.dq"; dr: "fa.dr"; ds: "fa.ds"; dt: "fa.dt"; du: "fa.du"; dv: "fa.dv"; dw: "fa.dw"; dx: "fa.dx"; dy: "fa.dy"; dz: "fa.dz"; ea: "fa.ea"; eb: "fa.eb"; ec: "fa.ec"; ed: "fa.ed"; ee: "fa.ee"; ef: "fa.ef"; eg: "fa.eg"; eh: "fa.eh"; ei: "fa.ei"; ej: "fa.ej"; ek: "fa.ek"; el: "fa.el"; em: "fa.em"; en: "fa.en"; eo: "fa.eo"; ep: "fa.ep"; eq: "fa.eq"; er: "fa.er"; es: "fa.es"; et: "fa.et"; eu: "fa.eu"; ev: "fa.ev"; ew: "fa.ew"; ex: "fa.ex"; ey: "fa.ey"; ez: "fa.ez"; fa: "fa.fa"; fb: "fa.fb"; fc: "fa.fc"; fd: "fa.fd"; fe: "fa.fe"; ff: "fa.ff"; fg: "fa.fg"; fh: "fa.fh"; fi: "fa.fi"; fj: "fa.fj"; fk: "fa.fk"; fl: "fa.fl"; fm: "fa.fm"; fn: "fa.fn"; fo: "fa.fo"; fp: "fa.fp"; fq: "fa.fq"; fr: "fa.fr"; fs: "fa.fs"; ft: "fa.ft"; fu: "fa.fu"; fv: "fa.fv"; fw: "fa.fw"; fx: "fa.fx"; fy: "fa.fy"; fz: "fa.fz"; ga: "fa.ga"; gb: "fa.gb"; gc: "fa.gc"; gd: "fa.gd"; ge: "fa.ge"; gf: "fa.gf"; gg: "fa.gg"; gh: "fa.gh"; gi: "fa.gi"; gj: "fa.gj"; gk: "fa.gk"; gl: "fa.gl"; gm: "fa.gm"; gn: "fa.gn"; go: "fa.go"; gp: "fa.gp"; gq: "fa.gq"; gr: "fa.gr"; gs: "fa.gs"; gt: "fa.gt"; gu: "fa.gu"; gv: "fa.gv"; gw: "fa.gw"; gx: "fa.gx"; gy: "fa.gy"; gz: "fa.gz"; ha: "fa.ha"; hb: "fa.hb"; hc: "fa.hc"; hd: "fa.hd"; he: "fa.he"; hf: "fa.hf"; hg: "fa.hg"; hh: "fa.hh"; hi: "fa.hi"; hj: "fa.hj"; hk: "fa.hk"; hl: "fa.hl"; hm: "fa.hm"; hn: "fa.hn"; ho: "fa.ho"; hp: "fa.hp"; hq: "fa.hq"; hr: "fa.hr"; hs: "fa.hs"; ht: "fa.ht"; hu: "fa.hu"; hv: "fa.hv"; hw: "fa.hw"; hx: "fa.hx"; hy: "fa.hy"; hz: "fa.hz"; ia: "fa.ia"; ib: "fa.ib"; ic: "fa.ic"; id: "fa.id"; ie: "fa.ie"; if: "fa.if"; ig: "fa.ig"; ih: "fa.ih"; ii: "fa.ii"; ij: "fa.ij"; ik: "fa.ik"; il: "fa.il"; im: "fa.im"; in: "fa.in"; io: "fa.io"; ip: "fa.ip"; iq: "fa.iq"; ir: "fa.ir"; is: "fa.is"; it: "fa.it"; iu: "fa.iu"; iv: "fa.iv"; iw: "fa.iw"; ix: "fa.ix"; iy: "fa.iy"; iz: "fa.iz"; ja: "fa.ja"; jb: "fa.jb"; jc: "fa.jc"; jd: "fa.jd"; je: "fa.je"; jf: "fa.jf"; jg: "fa.jg"; jh: "fa.jh"; ji: "fa.ji"; jj: "fa.jj"; jk: "fa.jk"; jl: "fa.jl"; jm: "fa.jm"; jn: "fa.jn"; jo: "fa.jo"; jp: "fa.jp"; jq: "fa.jq"; jr: "fa.jr"; js: "fa.js"; jt: "fa.jt"; ju: "fa.ju"; jv: "fa.jv"; jw: "fa.jw"; jx: "fa.jx"; jy: "fa.jy"; jz: "fa.jz"; ka: "fa.ka"; kb: "fa.kb"; kc: "fa.kc"; kd: "fa.kd"; ke: "fa.ke"; kf: "fa.kf"; kg: "fa.kg"; kh: "fa.kh"; ki: "fa.ki"; kj: "fa.kj"; kk: "fa.kk"; kl: "fa.kl"; km: "fa.km"; kn: "fa.kn"; ko: "fa.ko"; kp: "fa.kp"; kq: "fa.kq"; kr: "fa.kr"; ks: "fa.ks"; kt: "fa.kt"; ku: "fa.ku"; kv: "fa.kv"; kw: "fa.kw"; kx: "fa.kx"; ky: "fa.ky"; kz: "fa.kz"; la: "fa.la"; lb: "fa.lb"; lc: "fa.lc"; ld: "fa.ld"; le: "fa.le"; lf: "fa.lf"; lg: "fa.lg"; lh: "fa.lh"; li: "fa.li"; lj: "fa.lj"; lk: "fa.lk"; ll: "fa.ll"; lm: "fa.lm"; ln: "fa.ln"; lo: "fa.lo"; lp: "fa.lp"; lq: "fa.lq"; lr: "fa.lr"; ls: "fa.ls"; lt: "fa.lt"; lu: "fa.lu"; lv: "fa.lv"; lw: "fa.lw"; lx: "fa.lx"; ly: "fa.ly"; lz: "fa.lz"; ma: "fa.ma"; mb: "fa.mb"; mc: "fa.mc"; md: "fa.md"; me: "fa.me"; mf: "fa.mf"; mg: "fa.mg"; mh: "fa.mh"; mi: "fa.mi"; mj: "fa.mj"; mk: "fa.mk"; ml: "fa.ml"; mm: "fa.mm"; mn: "fa.mn"; mo: "fa.mo"; mp: "fa.mp"; mq: "fa.mq"; mr: "fa.mr"; ms: "fa.ms"; mt: "fa.mt"; mu: "fa.mu"; mv: "fa.mv"; mw: "fa.mw"; mx: "fa.mx"; my: "fa.my"; mz: "fa.mz"; na: "fa.na"; nb: "fa.nb"; nc: "fa.nc"; nd: "fa.nd"; ne: "fa.ne"; nf: "fa.nf"; ng: "fa.ng"; nh: "fa.nh"; ni: "fa.ni"; nj: "fa.nj"; nk: "fa.nk"; nl: "fa.nl"; nm: "fa.nm"; nn: "fa.nn"; no: "fa.no"; np: "fa.np"; nq: "fa.nq"; nr: "fa.nr"; ns: "fa.ns"; nt: "fa.nt"; nu: "fa.nu"; nv: "fa.nv"; nw: "fa.nw"; nx: "fa.nx"; ny: "fa.ny"; nz: "fa.nz"; oa: "fa.oa"; ob: "fa.ob"; oc: "fa.oc"; od: "fa.od"; oe: "fa.oe"; of: "fa.of"; og: "fa.og"; oh: "fa.oh"; oi: "fa.oi"; oj: "fa.oj"; ok: "fa.ok"; ol: "fa.ol"; om: "fa.om"; on: "fa.on"; oo: "fa.oo"; op: "fa.op"; oq: "fa.oq"; or: "fa.or"; os: "fa.os"; ot: "fa.ot"; ou: "fa.ou"; ov: "fa.ov"; ow: "fa.ow"; ox: "fa.ox"; oy: "fa.oy"; oz: "fa.oz"; pa: "fa.pa"; pb: "fa.pb"; pc: "fa.pc"; pd: "fa.pd"; pe: "fa.pe"; pf: "fa.pf"; pg: "fa.pg"; ph: "fa.ph"; pi: "fa.pi"; pj: "fa.pj"; pk: "fa.pk"; pl: "fa.pl"; pm: "fa.pm"; pn: "fa.pn"; po: "fa.po"; pp: "fa.pp"; pq: "fa.pq"; pr: "fa.pr"; ps: "fa.ps"; pt: "fa.pt"; pu: "fa.pu"; pv: "fa.pv"; pw: "fa.pw"; px: "fa.px"; py: "fa.py"; pz: "fa.pz"; qa: "fa.qa"; qb: "fa.qb"; qc: "fa.qc"; qd: "fa.qd"; qe: "fa.qe"; qf: "fa.qf"; qg: "fa.qg"; qh: "fa.qh"; qi: "fa.qi"; qj: "fa.qj"; qk: "fa.qk"; ql: "fa.ql"; qm: "fa.qm"; qn: "fa.qn"; qo: "fa.qo"; qp: "fa.qp"; qq: "fa.qq"; qr: "fa.qr"; qs: "fa.qs"; qt: "fa.qt"; qu: "fa.qu"; qv: "fa.qv"; qw: "fa.qw"; qx: "fa.qx"; qy: "fa.qy"; qz: "fa.qz"; ra: "fa.ra"; rb: "fa.rb"; rc: "fa.rc"; rd: "fa.rd"; re: "fa.re"; rf: "fa.rf"; rg: "fa.rg"; rh: "fa.rh"; ri: "fa.ri"; rj: "fa.rj"; rk: "fa.rk"; rl: "fa.rl"; rm: "fa.rm"; rn: "fa.rn"; ro: "fa.ro"; rp: "fa.rp"; rq: "fa.rq"; rr: "fa.rr"; rs: "fa.rs"; rt: "fa.rt"; ru: "fa.ru"; rv: "fa.rv"; rw: "fa.rw"; rx: "fa.rx"; ry: "fa.ry"; rz: "fa.rz"; sa: "fa.sa"; sb: "fa.sb"; sc: "fa.sc"; sd: "fa.sd"; se: "fa.se"; sf: "fa.sf"; sg: "fa.sg"; sh: "fa.sh"; si: "fa.si"; sj: "fa.sj"; sk: "fa.sk"; sl: "fa.sl"; sm: "fa.sm"; sn: "fa.sn"; so: "fa.so"; sp: "fa.sp"; sq: "fa.sq"; sr: "fa.sr"; ss: "fa.ss"; st: "fa.st"; su: "fa.su"; sv: "fa.sv"; sw: "fa.sw"; sx: "fa.sx"; sy: "fa.sy"; sz: "fa.sz"; ta: "fa.ta"; tb: "fa.tb"; tc: "fa.tc"; td: "fa.td"; te: "fa.te"; tf: "fa.tf"; tg: "fa.tg"; th: "fa.th"; ti: "fa.ti"; tj: "fa.tj"; tk: "fa.tk"; tl: "fa.tl"; tm: "fa.tm"; tn: "fa.tn"; to: "fa.to"; tp: "fa.tp"; tq: "fa.tq"; tr: "fa.tr"; ts: "fa.ts"; tt: "fa.tt"; tu: "fa.tu"; tv: "fa.tv"; tw: "fa.tw"; tx: "fa.tx"; ty: "fa.ty"; tz: "fa.tz"; ua: "fa.ua"; ub: "fa.ub"; uc: "fa.uc"; ud: "fa.ud"; ue: "fa.ue"; uf: "fa.uf"; ug: "fa.ug"; uh: "fa.uh"; ui: "fa.ui"; uj: "fa.uj"; uk: "fa.uk"; ul: "fa.ul"; um: "fa.um"; un: "fa.un"; uo: "fa.uo"; up: "fa.up"; uq: "fa.uq"; ur: "fa.ur"; us: "fa.us"; ut: "fa.ut"; uu: "fa.uu"; uv: "fa.uv"; uw: "fa.uw"; ux: "fa.ux"; uy: "fa.uy"; uz: "fa.uz"; va: "fa.va"; vb: "fa.vb"; vc: "fa.vc"; vd: "fa.vd"; ve: "fa.ve"; vf: "fa.vf"; vg: "fa.vg"; vh: "fa.vh"; vi: "fa.vi"; vj: "fa.vj"; vk: "fa.vk"; vl: "fa.vl"; vm: "fa.vm"; vn: "fa.vn"; vo: "fa.vo"; vp: "fa.vp"; vq: "fa.vq"; vr: "fa.vr"; vs: "fa.vs"; vt: "fa.vt"; vu: "fa.vu"; vv: "fa.vv"; vw: "fa.vw"; vx: "fa.vx"; vy: "fa.vy"; vz: "fa.vz"; wa: "fa.wa"; wb: "fa.wb"; wc: "fa.wc"; wd: "fa.wd"; we: "fa.we"; wf: "fa.wf"; wg: "fa.wg"; wh: "fa.wh"; wi: "fa.wi"; wj: "fa.wj"; wk: "fa.wk"; wl: "fa.wl"; wm: "fa.wm"; wn: "fa.wn"; wo: "fa.wo"; wp: "fa.wp"; wq: "fa.wq"; wr: "fa.wr"; ws: "fa.ws"; wt: "fa.wt"; wu: "fa.wu"; wv: "fa.wv"; ww: "fa.ww"; wx: "fa.wx"; wy: "fa.wy"; wz: "fa.wz"; xa: "fa.xa"; xb: "fa.xb"; xc: "fa.xc"; xd: "fa.xd"; xe: "fa.xe"; xf: "fa.xf"; xg: "fa.xg"; xh: "fa.xh"; xi: "fa.xi"; xj: "fa.xj"; xk: "fa.xk"; xl: "fa.xl"; xm: "fa.xm"; xn: "fa.xn"; xo: "fa.xo"; xp: "fa.xp"; xq: "fa.xq"; xr: "fa.xr"; xs: "fa.xs"; xt: "fa.xt"; xu: "fa.xu"; xv: "fa.xv"; xw: "fa.xw"; xx: "fa.xx"; xy: "fa.xy"; xz: "fa.xz"; ya: "fa.ya"; yb: "fa.yb"; yc: "fa.yc"; yd: "fa.yd"; ye: "fa.ye"; yf: "fa.yf"; yg: "fa.yg"; yh: "fa.yh"; yi: "fa.yi"; yj: "fa.yj"; yk: "fa.yk"; yl: "fa.yl"; ym: "fa.ym"; yn: "fa.yn"; yo: "fa.yo"; yp: "fa.yp"; yq: "fa.yq"; yr: "fa.yr"; ys: "fa.ys"; yt: "fa.yt"; yu: "fa.yu"; yv: "fa.yv"; yw: "fa.yw"; yx: "fa.yx"; yy: "fa.yy"; yz: "fa.yz"; za: "fa.za"; zb: "fa.zb"; zc: "fa.zc"; zd: "fa.zd"; ze: "fa.ze"; zf: "fa.zf"; zg: "fa.zg"; zh: "fa.zh"; zi: "fa.zi"; zj: "fa.zj"; zk: "fa.zk"; zl: "fa.zl"; zm: "fa.zm"; zn: "fa.zn"; zo: "fa.zo"; zp: "fa.zp"; zq: "fa.zq"; zr: "fa.zr"; zs: "fa.zs"; zt: "fa.zt"; zu: "fa.zu"; zv: "fa.zv"; zw: "fa.zw"; zx: "fa.zx"; zy: "fa.zy"; zz: "fa.zz"; }; fb: { aa: "fb.aa"; ab: "fb.ab"; ac: "fb.ac"; ad: "fb.ad"; ae: "fb.ae"; af: "fb.af"; ag: "fb.ag"; ah: "fb.ah"; ai: "fb.ai"; aj: "fb.aj"; ak: "fb.ak"; al: "fb.al"; am: "fb.am"; an: "fb.an"; ao: "fb.ao"; ap: "fb.ap"; aq: "fb.aq"; ar: "fb.ar"; as: "fb.as"; at: "fb.at"; au: "fb.au"; av: "fb.av"; aw: "fb.aw"; ax: "fb.ax"; ay: "fb.ay"; az: "fb.az"; ba: "fb.ba"; bb: "fb.bb"; bc: "fb.bc"; bd: "fb.bd"; be: "fb.be"; bf: "fb.bf"; bg: "fb.bg"; bh: "fb.bh"; bi: "fb.bi"; bj: "fb.bj"; bk: "fb.bk"; bl: "fb.bl"; bm: "fb.bm"; bn: "fb.bn"; bo: "fb.bo"; bp: "fb.bp"; bq: "fb.bq"; br: "fb.br"; bs: "fb.bs"; bt: "fb.bt"; bu: "fb.bu"; bv: "fb.bv"; bw: "fb.bw"; bx: "fb.bx"; by: "fb.by"; bz: "fb.bz"; ca: "fb.ca"; cb: "fb.cb"; cc: "fb.cc"; cd: "fb.cd"; ce: "fb.ce"; cf: "fb.cf"; cg: "fb.cg"; ch: "fb.ch"; ci: "fb.ci"; cj: "fb.cj"; ck: "fb.ck"; cl: "fb.cl"; cm: "fb.cm"; cn: "fb.cn"; co: "fb.co"; cp: "fb.cp"; cq: "fb.cq"; cr: "fb.cr"; cs: "fb.cs"; ct: "fb.ct"; cu: "fb.cu"; cv: "fb.cv"; cw: "fb.cw"; cx: "fb.cx"; cy: "fb.cy"; cz: "fb.cz"; da: "fb.da"; db: "fb.db"; dc: "fb.dc"; dd: "fb.dd"; de: "fb.de"; df: "fb.df"; dg: "fb.dg"; dh: "fb.dh"; di: "fb.di"; dj: "fb.dj"; dk: "fb.dk"; dl: "fb.dl"; dm: "fb.dm"; dn: "fb.dn"; do: "fb.do"; dp: "fb.dp"; dq: "fb.dq"; dr: "fb.dr"; ds: "fb.ds"; dt: "fb.dt"; du: "fb.du"; dv: "fb.dv"; dw: "fb.dw"; dx: "fb.dx"; dy: "fb.dy"; dz: "fb.dz"; ea: "fb.ea"; eb: "fb.eb"; ec: "fb.ec"; ed: "fb.ed"; ee: "fb.ee"; ef: "fb.ef"; eg: "fb.eg"; eh: "fb.eh"; ei: "fb.ei"; ej: "fb.ej"; ek: "fb.ek"; el: "fb.el"; em: "fb.em"; en: "fb.en"; eo: "fb.eo"; ep: "fb.ep"; eq: "fb.eq"; er: "fb.er"; es: "fb.es"; et: "fb.et"; eu: "fb.eu"; ev: "fb.ev"; ew: "fb.ew"; ex: "fb.ex"; ey: "fb.ey"; ez: "fb.ez"; fa: "fb.fa"; fb: "fb.fb"; fc: "fb.fc"; fd: "fb.fd"; fe: "fb.fe"; ff: "fb.ff"; fg: "fb.fg"; fh: "fb.fh"; fi: "fb.fi"; fj: "fb.fj"; fk: "fb.fk"; fl: "fb.fl"; fm: "fb.fm"; fn: "fb.fn"; fo: "fb.fo"; fp: "fb.fp"; fq: "fb.fq"; fr: "fb.fr"; fs: "fb.fs"; ft: "fb.ft"; fu: "fb.fu"; fv: "fb.fv"; fw: "fb.fw"; fx: "fb.fx"; fy: "fb.fy"; fz: "fb.fz"; ga: "fb.ga"; gb: "fb.gb"; gc: "fb.gc"; gd: "fb.gd"; ge: "fb.ge"; gf: "fb.gf"; gg: "fb.gg"; gh: "fb.gh"; gi: "fb.gi"; gj: "fb.gj"; gk: "fb.gk"; gl: "fb.gl"; gm: "fb.gm"; gn: "fb.gn"; go: "fb.go"; gp: "fb.gp"; gq: "fb.gq"; gr: "fb.gr"; gs: "fb.gs"; gt: "fb.gt"; gu: "fb.gu"; gv: "fb.gv"; gw: "fb.gw"; gx: "fb.gx"; gy: "fb.gy"; gz: "fb.gz"; ha: "fb.ha"; hb: "fb.hb"; hc: "fb.hc"; hd: "fb.hd"; he: "fb.he"; hf: "fb.hf"; hg: "fb.hg"; hh: "fb.hh"; hi: "fb.hi"; hj: "fb.hj"; hk: "fb.hk"; hl: "fb.hl"; hm: "fb.hm"; hn: "fb.hn"; ho: "fb.ho"; hp: "fb.hp"; hq: "fb.hq"; hr: "fb.hr"; hs: "fb.hs"; ht: "fb.ht"; hu: "fb.hu"; hv: "fb.hv"; hw: "fb.hw"; hx: "fb.hx"; hy: "fb.hy"; hz: "fb.hz"; ia: "fb.ia"; ib: "fb.ib"; ic: "fb.ic"; id: "fb.id"; ie: "fb.ie"; if: "fb.if"; ig: "fb.ig"; ih: "fb.ih"; ii: "fb.ii"; ij: "fb.ij"; ik: "fb.ik"; il: "fb.il"; im: "fb.im"; in: "fb.in"; io: "fb.io"; ip: "fb.ip"; iq: "fb.iq"; ir: "fb.ir"; is: "fb.is"; it: "fb.it"; iu: "fb.iu"; iv: "fb.iv"; iw: "fb.iw"; ix: "fb.ix"; iy: "fb.iy"; iz: "fb.iz"; ja: "fb.ja"; jb: "fb.jb"; jc: "fb.jc"; jd: "fb.jd"; je: "fb.je"; jf: "fb.jf"; jg: "fb.jg"; jh: "fb.jh"; ji: "fb.ji"; jj: "fb.jj"; jk: "fb.jk"; jl: "fb.jl"; jm: "fb.jm"; jn: "fb.jn"; jo: "fb.jo"; jp: "fb.jp"; jq: "fb.jq"; jr: "fb.jr"; js: "fb.js"; jt: "fb.jt"; ju: "fb.ju"; jv: "fb.jv"; jw: "fb.jw"; jx: "fb.jx"; jy: "fb.jy"; jz: "fb.jz"; ka: "fb.ka"; kb: "fb.kb"; kc: "fb.kc"; kd: "fb.kd"; ke: "fb.ke"; kf: "fb.kf"; kg: "fb.kg"; kh: "fb.kh"; ki: "fb.ki"; kj: "fb.kj"; kk: "fb.kk"; kl: "fb.kl"; km: "fb.km"; kn: "fb.kn"; ko: "fb.ko"; kp: "fb.kp"; kq: "fb.kq"; kr: "fb.kr"; ks: "fb.ks"; kt: "fb.kt"; ku: "fb.ku"; kv: "fb.kv"; kw: "fb.kw"; kx: "fb.kx"; ky: "fb.ky"; kz: "fb.kz"; la: "fb.la"; lb: "fb.lb"; lc: "fb.lc"; ld: "fb.ld"; le: "fb.le"; lf: "fb.lf"; lg: "fb.lg"; lh: "fb.lh"; li: "fb.li"; lj: "fb.lj"; lk: "fb.lk"; ll: "fb.ll"; lm: "fb.lm"; ln: "fb.ln"; lo: "fb.lo"; lp: "fb.lp"; lq: "fb.lq"; lr: "fb.lr"; ls: "fb.ls"; lt: "fb.lt"; lu: "fb.lu"; lv: "fb.lv"; lw: "fb.lw"; lx: "fb.lx"; ly: "fb.ly"; lz: "fb.lz"; ma: "fb.ma"; mb: "fb.mb"; mc: "fb.mc"; md: "fb.md"; me: "fb.me"; mf: "fb.mf"; mg: "fb.mg"; mh: "fb.mh"; mi: "fb.mi"; mj: "fb.mj"; mk: "fb.mk"; ml: "fb.ml"; mm: "fb.mm"; mn: "fb.mn"; mo: "fb.mo"; mp: "fb.mp"; mq: "fb.mq"; mr: "fb.mr"; ms: "fb.ms"; mt: "fb.mt"; mu: "fb.mu"; mv: "fb.mv"; mw: "fb.mw"; mx: "fb.mx"; my: "fb.my"; mz: "fb.mz"; na: "fb.na"; nb: "fb.nb"; nc: "fb.nc"; nd: "fb.nd"; ne: "fb.ne"; nf: "fb.nf"; ng: "fb.ng"; nh: "fb.nh"; ni: "fb.ni"; nj: "fb.nj"; nk: "fb.nk"; nl: "fb.nl"; nm: "fb.nm"; nn: "fb.nn"; no: "fb.no"; np: "fb.np"; nq: "fb.nq"; nr: "fb.nr"; ns: "fb.ns"; nt: "fb.nt"; nu: "fb.nu"; nv: "fb.nv"; nw: "fb.nw"; nx: "fb.nx"; ny: "fb.ny"; nz: "fb.nz"; oa: "fb.oa"; ob: "fb.ob"; oc: "fb.oc"; od: "fb.od"; oe: "fb.oe"; of: "fb.of"; og: "fb.og"; oh: "fb.oh"; oi: "fb.oi"; oj: "fb.oj"; ok: "fb.ok"; ol: "fb.ol"; om: "fb.om"; on: "fb.on"; oo: "fb.oo"; op: "fb.op"; oq: "fb.oq"; or: "fb.or"; os: "fb.os"; ot: "fb.ot"; ou: "fb.ou"; ov: "fb.ov"; ow: "fb.ow"; ox: "fb.ox"; oy: "fb.oy"; oz: "fb.oz"; pa: "fb.pa"; pb: "fb.pb"; pc: "fb.pc"; pd: "fb.pd"; pe: "fb.pe"; pf: "fb.pf"; pg: "fb.pg"; ph: "fb.ph"; pi: "fb.pi"; pj: "fb.pj"; pk: "fb.pk"; pl: "fb.pl"; pm: "fb.pm"; pn: "fb.pn"; po: "fb.po"; pp: "fb.pp"; pq: "fb.pq"; pr: "fb.pr"; ps: "fb.ps"; pt: "fb.pt"; pu: "fb.pu"; pv: "fb.pv"; pw: "fb.pw"; px: "fb.px"; py: "fb.py"; pz: "fb.pz"; qa: "fb.qa"; qb: "fb.qb"; qc: "fb.qc"; qd: "fb.qd"; qe: "fb.qe"; qf: "fb.qf"; qg: "fb.qg"; qh: "fb.qh"; qi: "fb.qi"; qj: "fb.qj"; qk: "fb.qk"; ql: "fb.ql"; qm: "fb.qm"; qn: "fb.qn"; qo: "fb.qo"; qp: "fb.qp"; qq: "fb.qq"; qr: "fb.qr"; qs: "fb.qs"; qt: "fb.qt"; qu: "fb.qu"; qv: "fb.qv"; qw: "fb.qw"; qx: "fb.qx"; qy: "fb.qy"; qz: "fb.qz"; ra: "fb.ra"; rb: "fb.rb"; rc: "fb.rc"; rd: "fb.rd"; re: "fb.re"; rf: "fb.rf"; rg: "fb.rg"; rh: "fb.rh"; ri: "fb.ri"; rj: "fb.rj"; rk: "fb.rk"; rl: "fb.rl"; rm: "fb.rm"; rn: "fb.rn"; ro: "fb.ro"; rp: "fb.rp"; rq: "fb.rq"; rr: "fb.rr"; rs: "fb.rs"; rt: "fb.rt"; ru: "fb.ru"; rv: "fb.rv"; rw: "fb.rw"; rx: "fb.rx"; ry: "fb.ry"; rz: "fb.rz"; sa: "fb.sa"; sb: "fb.sb"; sc: "fb.sc"; sd: "fb.sd"; se: "fb.se"; sf: "fb.sf"; sg: "fb.sg"; sh: "fb.sh"; si: "fb.si"; sj: "fb.sj"; sk: "fb.sk"; sl: "fb.sl"; sm: "fb.sm"; sn: "fb.sn"; so: "fb.so"; sp: "fb.sp"; sq: "fb.sq"; sr: "fb.sr"; ss: "fb.ss"; st: "fb.st"; su: "fb.su"; sv: "fb.sv"; sw: "fb.sw"; sx: "fb.sx"; sy: "fb.sy"; sz: "fb.sz"; ta: "fb.ta"; tb: "fb.tb"; tc: "fb.tc"; td: "fb.td"; te: "fb.te"; tf: "fb.tf"; tg: "fb.tg"; th: "fb.th"; ti: "fb.ti"; tj: "fb.tj"; tk: "fb.tk"; tl: "fb.tl"; tm: "fb.tm"; tn: "fb.tn"; to: "fb.to"; tp: "fb.tp"; tq: "fb.tq"; tr: "fb.tr"; ts: "fb.ts"; tt: "fb.tt"; tu: "fb.tu"; tv: "fb.tv"; tw: "fb.tw"; tx: "fb.tx"; ty: "fb.ty"; tz: "fb.tz"; ua: "fb.ua"; ub: "fb.ub"; uc: "fb.uc"; ud: "fb.ud"; ue: "fb.ue"; uf: "fb.uf"; ug: "fb.ug"; uh: "fb.uh"; ui: "fb.ui"; uj: "fb.uj"; uk: "fb.uk"; ul: "fb.ul"; um: "fb.um"; un: "fb.un"; uo: "fb.uo"; up: "fb.up"; uq: "fb.uq"; ur: "fb.ur"; us: "fb.us"; ut: "fb.ut"; uu: "fb.uu"; uv: "fb.uv"; uw: "fb.uw"; ux: "fb.ux"; uy: "fb.uy"; uz: "fb.uz"; va: "fb.va"; vb: "fb.vb"; vc: "fb.vc"; vd: "fb.vd"; ve: "fb.ve"; vf: "fb.vf"; vg: "fb.vg"; vh: "fb.vh"; vi: "fb.vi"; vj: "fb.vj"; vk: "fb.vk"; vl: "fb.vl"; vm: "fb.vm"; vn: "fb.vn"; vo: "fb.vo"; vp: "fb.vp"; vq: "fb.vq"; vr: "fb.vr"; vs: "fb.vs"; vt: "fb.vt"; vu: "fb.vu"; vv: "fb.vv"; vw: "fb.vw"; vx: "fb.vx"; vy: "fb.vy"; vz: "fb.vz"; wa: "fb.wa"; wb: "fb.wb"; wc: "fb.wc"; wd: "fb.wd"; we: "fb.we"; wf: "fb.wf"; wg: "fb.wg"; wh: "fb.wh"; wi: "fb.wi"; wj: "fb.wj"; wk: "fb.wk"; wl: "fb.wl"; wm: "fb.wm"; wn: "fb.wn"; wo: "fb.wo"; wp: "fb.wp"; wq: "fb.wq"; wr: "fb.wr"; ws: "fb.ws"; wt: "fb.wt"; wu: "fb.wu"; wv: "fb.wv"; ww: "fb.ww"; wx: "fb.wx"; wy: "fb.wy"; wz: "fb.wz"; xa: "fb.xa"; xb: "fb.xb"; xc: "fb.xc"; xd: "fb.xd"; xe: "fb.xe"; xf: "fb.xf"; xg: "fb.xg"; xh: "fb.xh"; xi: "fb.xi"; xj: "fb.xj"; xk: "fb.xk"; xl: "fb.xl"; xm: "fb.xm"; xn: "fb.xn"; xo: "fb.xo"; xp: "fb.xp"; xq: "fb.xq"; xr: "fb.xr"; xs: "fb.xs"; xt: "fb.xt"; xu: "fb.xu"; xv: "fb.xv"; xw: "fb.xw"; xx: "fb.xx"; xy: "fb.xy"; xz: "fb.xz"; ya: "fb.ya"; yb: "fb.yb"; yc: "fb.yc"; yd: "fb.yd"; ye: "fb.ye"; yf: "fb.yf"; yg: "fb.yg"; yh: "fb.yh"; yi: "fb.yi"; yj: "fb.yj"; yk: "fb.yk"; yl: "fb.yl"; ym: "fb.ym"; yn: "fb.yn"; yo: "fb.yo"; yp: "fb.yp"; yq: "fb.yq"; yr: "fb.yr"; ys: "fb.ys"; yt: "fb.yt"; yu: "fb.yu"; yv: "fb.yv"; yw: "fb.yw"; yx: "fb.yx"; yy: "fb.yy"; yz: "fb.yz"; za: "fb.za"; zb: "fb.zb"; zc: "fb.zc"; zd: "fb.zd"; ze: "fb.ze"; zf: "fb.zf"; zg: "fb.zg"; zh: "fb.zh"; zi: "fb.zi"; zj: "fb.zj"; zk: "fb.zk"; zl: "fb.zl"; zm: "fb.zm"; zn: "fb.zn"; zo: "fb.zo"; zp: "fb.zp"; zq: "fb.zq"; zr: "fb.zr"; zs: "fb.zs"; zt: "fb.zt"; zu: "fb.zu"; zv: "fb.zv"; zw: "fb.zw"; zx: "fb.zx"; zy: "fb.zy"; zz: "fb.zz"; }; fc: { aa: "fc.aa"; ab: "fc.ab"; ac: "fc.ac"; ad: "fc.ad"; ae: "fc.ae"; af: "fc.af"; ag: "fc.ag"; ah: "fc.ah"; ai: "fc.ai"; aj: "fc.aj"; ak: "fc.ak"; al: "fc.al"; am: "fc.am"; an: "fc.an"; ao: "fc.ao"; ap: "fc.ap"; aq: "fc.aq"; ar: "fc.ar"; as: "fc.as"; at: "fc.at"; au: "fc.au"; av: "fc.av"; aw: "fc.aw"; ax: "fc.ax"; ay: "fc.ay"; az: "fc.az"; ba: "fc.ba"; bb: "fc.bb"; bc: "fc.bc"; bd: "fc.bd"; be: "fc.be"; bf: "fc.bf"; bg: "fc.bg"; bh: "fc.bh"; bi: "fc.bi"; bj: "fc.bj"; bk: "fc.bk"; bl: "fc.bl"; bm: "fc.bm"; bn: "fc.bn"; bo: "fc.bo"; bp: "fc.bp"; bq: "fc.bq"; br: "fc.br"; bs: "fc.bs"; bt: "fc.bt"; bu: "fc.bu"; bv: "fc.bv"; bw: "fc.bw"; bx: "fc.bx"; by: "fc.by"; bz: "fc.bz"; ca: "fc.ca"; cb: "fc.cb"; cc: "fc.cc"; cd: "fc.cd"; ce: "fc.ce"; cf: "fc.cf"; cg: "fc.cg"; ch: "fc.ch"; ci: "fc.ci"; cj: "fc.cj"; ck: "fc.ck"; cl: "fc.cl"; cm: "fc.cm"; cn: "fc.cn"; co: "fc.co"; cp: "fc.cp"; cq: "fc.cq"; cr: "fc.cr"; cs: "fc.cs"; ct: "fc.ct"; cu: "fc.cu"; cv: "fc.cv"; cw: "fc.cw"; cx: "fc.cx"; cy: "fc.cy"; cz: "fc.cz"; da: "fc.da"; db: "fc.db"; dc: "fc.dc"; dd: "fc.dd"; de: "fc.de"; df: "fc.df"; dg: "fc.dg"; dh: "fc.dh"; di: "fc.di"; dj: "fc.dj"; dk: "fc.dk"; dl: "fc.dl"; dm: "fc.dm"; dn: "fc.dn"; do: "fc.do"; dp: "fc.dp"; dq: "fc.dq"; dr: "fc.dr"; ds: "fc.ds"; dt: "fc.dt"; du: "fc.du"; dv: "fc.dv"; dw: "fc.dw"; dx: "fc.dx"; dy: "fc.dy"; dz: "fc.dz"; ea: "fc.ea"; eb: "fc.eb"; ec: "fc.ec"; ed: "fc.ed"; ee: "fc.ee"; ef: "fc.ef"; eg: "fc.eg"; eh: "fc.eh"; ei: "fc.ei"; ej: "fc.ej"; ek: "fc.ek"; el: "fc.el"; em: "fc.em"; en: "fc.en"; eo: "fc.eo"; ep: "fc.ep"; eq: "fc.eq"; er: "fc.er"; es: "fc.es"; et: "fc.et"; eu: "fc.eu"; ev: "fc.ev"; ew: "fc.ew"; ex: "fc.ex"; ey: "fc.ey"; ez: "fc.ez"; fa: "fc.fa"; fb: "fc.fb"; fc: "fc.fc"; fd: "fc.fd"; fe: "fc.fe"; ff: "fc.ff"; fg: "fc.fg"; fh: "fc.fh"; fi: "fc.fi"; fj: "fc.fj"; fk: "fc.fk"; fl: "fc.fl"; fm: "fc.fm"; fn: "fc.fn"; fo: "fc.fo"; fp: "fc.fp"; fq: "fc.fq"; fr: "fc.fr"; fs: "fc.fs"; ft: "fc.ft"; fu: "fc.fu"; fv: "fc.fv"; fw: "fc.fw"; fx: "fc.fx"; fy: "fc.fy"; fz: "fc.fz"; ga: "fc.ga"; gb: "fc.gb"; gc: "fc.gc"; gd: "fc.gd"; ge: "fc.ge"; gf: "fc.gf"; gg: "fc.gg"; gh: "fc.gh"; gi: "fc.gi"; gj: "fc.gj"; gk: "fc.gk"; gl: "fc.gl"; gm: "fc.gm"; gn: "fc.gn"; go: "fc.go"; gp: "fc.gp"; gq: "fc.gq"; gr: "fc.gr"; gs: "fc.gs"; gt: "fc.gt"; gu: "fc.gu"; gv: "fc.gv"; gw: "fc.gw"; gx: "fc.gx"; gy: "fc.gy"; gz: "fc.gz"; ha: "fc.ha"; hb: "fc.hb"; hc: "fc.hc"; hd: "fc.hd"; he: "fc.he"; hf: "fc.hf"; hg: "fc.hg"; hh: "fc.hh"; hi: "fc.hi"; hj: "fc.hj"; hk: "fc.hk"; hl: "fc.hl"; hm: "fc.hm"; hn: "fc.hn"; ho: "fc.ho"; hp: "fc.hp"; hq: "fc.hq"; hr: "fc.hr"; hs: "fc.hs"; ht: "fc.ht"; hu: "fc.hu"; hv: "fc.hv"; hw: "fc.hw"; hx: "fc.hx"; hy: "fc.hy"; hz: "fc.hz"; ia: "fc.ia"; ib: "fc.ib"; ic: "fc.ic"; id: "fc.id"; ie: "fc.ie"; if: "fc.if"; ig: "fc.ig"; ih: "fc.ih"; ii: "fc.ii"; ij: "fc.ij"; ik: "fc.ik"; il: "fc.il"; im: "fc.im"; in: "fc.in"; io: "fc.io"; ip: "fc.ip"; iq: "fc.iq"; ir: "fc.ir"; is: "fc.is"; it: "fc.it"; iu: "fc.iu"; iv: "fc.iv"; iw: "fc.iw"; ix: "fc.ix"; iy: "fc.iy"; iz: "fc.iz"; ja: "fc.ja"; jb: "fc.jb"; jc: "fc.jc"; jd: "fc.jd"; je: "fc.je"; jf: "fc.jf"; jg: "fc.jg"; jh: "fc.jh"; ji: "fc.ji"; jj: "fc.jj"; jk: "fc.jk"; jl: "fc.jl"; jm: "fc.jm"; jn: "fc.jn"; jo: "fc.jo"; jp: "fc.jp"; jq: "fc.jq"; jr: "fc.jr"; js: "fc.js"; jt: "fc.jt"; ju: "fc.ju"; jv: "fc.jv"; jw: "fc.jw"; jx: "fc.jx"; jy: "fc.jy"; jz: "fc.jz"; ka: "fc.ka"; kb: "fc.kb"; kc: "fc.kc"; kd: "fc.kd"; ke: "fc.ke"; kf: "fc.kf"; kg: "fc.kg"; kh: "fc.kh"; ki: "fc.ki"; kj: "fc.kj"; kk: "fc.kk"; kl: "fc.kl"; km: "fc.km"; kn: "fc.kn"; ko: "fc.ko"; kp: "fc.kp"; kq: "fc.kq"; kr: "fc.kr"; ks: "fc.ks"; kt: "fc.kt"; ku: "fc.ku"; kv: "fc.kv"; kw: "fc.kw"; kx: "fc.kx"; ky: "fc.ky"; kz: "fc.kz"; la: "fc.la"; lb: "fc.lb"; lc: "fc.lc"; ld: "fc.ld"; le: "fc.le"; lf: "fc.lf"; lg: "fc.lg"; lh: "fc.lh"; li: "fc.li"; lj: "fc.lj"; lk: "fc.lk"; ll: "fc.ll"; lm: "fc.lm"; ln: "fc.ln"; lo: "fc.lo"; lp: "fc.lp"; lq: "fc.lq"; lr: "fc.lr"; ls: "fc.ls"; lt: "fc.lt"; lu: "fc.lu"; lv: "fc.lv"; lw: "fc.lw"; lx: "fc.lx"; ly: "fc.ly"; lz: "fc.lz"; ma: "fc.ma"; mb: "fc.mb"; mc: "fc.mc"; md: "fc.md"; me: "fc.me"; mf: "fc.mf"; mg: "fc.mg"; mh: "fc.mh"; mi: "fc.mi"; mj: "fc.mj"; mk: "fc.mk"; ml: "fc.ml"; mm: "fc.mm"; mn: "fc.mn"; mo: "fc.mo"; mp: "fc.mp"; mq: "fc.mq"; mr: "fc.mr"; ms: "fc.ms"; mt: "fc.mt"; mu: "fc.mu"; mv: "fc.mv"; mw: "fc.mw"; mx: "fc.mx"; my: "fc.my"; mz: "fc.mz"; na: "fc.na"; nb: "fc.nb"; nc: "fc.nc"; nd: "fc.nd"; ne: "fc.ne"; nf: "fc.nf"; ng: "fc.ng"; nh: "fc.nh"; ni: "fc.ni"; nj: "fc.nj"; nk: "fc.nk"; nl: "fc.nl"; nm: "fc.nm"; nn: "fc.nn"; no: "fc.no"; np: "fc.np"; nq: "fc.nq"; nr: "fc.nr"; ns: "fc.ns"; nt: "fc.nt"; nu: "fc.nu"; nv: "fc.nv"; nw: "fc.nw"; nx: "fc.nx"; ny: "fc.ny"; nz: "fc.nz"; oa: "fc.oa"; ob: "fc.ob"; oc: "fc.oc"; od: "fc.od"; oe: "fc.oe"; of: "fc.of"; og: "fc.og"; oh: "fc.oh"; oi: "fc.oi"; oj: "fc.oj"; ok: "fc.ok"; ol: "fc.ol"; om: "fc.om"; on: "fc.on"; oo: "fc.oo"; op: "fc.op"; oq: "fc.oq"; or: "fc.or"; os: "fc.os"; ot: "fc.ot"; ou: "fc.ou"; ov: "fc.ov"; ow: "fc.ow"; ox: "fc.ox"; oy: "fc.oy"; oz: "fc.oz"; pa: "fc.pa"; pb: "fc.pb"; pc: "fc.pc"; pd: "fc.pd"; pe: "fc.pe"; pf: "fc.pf"; pg: "fc.pg"; ph: "fc.ph"; pi: "fc.pi"; pj: "fc.pj"; pk: "fc.pk"; pl: "fc.pl"; pm: "fc.pm"; pn: "fc.pn"; po: "fc.po"; pp: "fc.pp"; pq: "fc.pq"; pr: "fc.pr"; ps: "fc.ps"; pt: "fc.pt"; pu: "fc.pu"; pv: "fc.pv"; pw: "fc.pw"; px: "fc.px"; py: "fc.py"; pz: "fc.pz"; qa: "fc.qa"; qb: "fc.qb"; qc: "fc.qc"; qd: "fc.qd"; qe: "fc.qe"; qf: "fc.qf"; qg: "fc.qg"; qh: "fc.qh"; qi: "fc.qi"; qj: "fc.qj"; qk: "fc.qk"; ql: "fc.ql"; qm: "fc.qm"; qn: "fc.qn"; qo: "fc.qo"; qp: "fc.qp"; qq: "fc.qq"; qr: "fc.qr"; qs: "fc.qs"; qt: "fc.qt"; qu: "fc.qu"; qv: "fc.qv"; qw: "fc.qw"; qx: "fc.qx"; qy: "fc.qy"; qz: "fc.qz"; ra: "fc.ra"; rb: "fc.rb"; rc: "fc.rc"; rd: "fc.rd"; re: "fc.re"; rf: "fc.rf"; rg: "fc.rg"; rh: "fc.rh"; ri: "fc.ri"; rj: "fc.rj"; rk: "fc.rk"; rl: "fc.rl"; rm: "fc.rm"; rn: "fc.rn"; ro: "fc.ro"; rp: "fc.rp"; rq: "fc.rq"; rr: "fc.rr"; rs: "fc.rs"; rt: "fc.rt"; ru: "fc.ru"; rv: "fc.rv"; rw: "fc.rw"; rx: "fc.rx"; ry: "fc.ry"; rz: "fc.rz"; sa: "fc.sa"; sb: "fc.sb"; sc: "fc.sc"; sd: "fc.sd"; se: "fc.se"; sf: "fc.sf"; sg: "fc.sg"; sh: "fc.sh"; si: "fc.si"; sj: "fc.sj"; sk: "fc.sk"; sl: "fc.sl"; sm: "fc.sm"; sn: "fc.sn"; so: "fc.so"; sp: "fc.sp"; sq: "fc.sq"; sr: "fc.sr"; ss: "fc.ss"; st: "fc.st"; su: "fc.su"; sv: "fc.sv"; sw: "fc.sw"; sx: "fc.sx"; sy: "fc.sy"; sz: "fc.sz"; ta: "fc.ta"; tb: "fc.tb"; tc: "fc.tc"; td: "fc.td"; te: "fc.te"; tf: "fc.tf"; tg: "fc.tg"; th: "fc.th"; ti: "fc.ti"; tj: "fc.tj"; tk: "fc.tk"; tl: "fc.tl"; tm: "fc.tm"; tn: "fc.tn"; to: "fc.to"; tp: "fc.tp"; tq: "fc.tq"; tr: "fc.tr"; ts: "fc.ts"; tt: "fc.tt"; tu: "fc.tu"; tv: "fc.tv"; tw: "fc.tw"; tx: "fc.tx"; ty: "fc.ty"; tz: "fc.tz"; ua: "fc.ua"; ub: "fc.ub"; uc: "fc.uc"; ud: "fc.ud"; ue: "fc.ue"; uf: "fc.uf"; ug: "fc.ug"; uh: "fc.uh"; ui: "fc.ui"; uj: "fc.uj"; uk: "fc.uk"; ul: "fc.ul"; um: "fc.um"; un: "fc.un"; uo: "fc.uo"; up: "fc.up"; uq: "fc.uq"; ur: "fc.ur"; us: "fc.us"; ut: "fc.ut"; uu: "fc.uu"; uv: "fc.uv"; uw: "fc.uw"; ux: "fc.ux"; uy: "fc.uy"; uz: "fc.uz"; va: "fc.va"; vb: "fc.vb"; vc: "fc.vc"; vd: "fc.vd"; ve: "fc.ve"; vf: "fc.vf"; vg: "fc.vg"; vh: "fc.vh"; vi: "fc.vi"; vj: "fc.vj"; vk: "fc.vk"; vl: "fc.vl"; vm: "fc.vm"; vn: "fc.vn"; vo: "fc.vo"; vp: "fc.vp"; vq: "fc.vq"; vr: "fc.vr"; vs: "fc.vs"; vt: "fc.vt"; vu: "fc.vu"; vv: "fc.vv"; vw: "fc.vw"; vx: "fc.vx"; vy: "fc.vy"; vz: "fc.vz"; wa: "fc.wa"; wb: "fc.wb"; wc: "fc.wc"; wd: "fc.wd"; we: "fc.we"; wf: "fc.wf"; wg: "fc.wg"; wh: "fc.wh"; wi: "fc.wi"; wj: "fc.wj"; wk: "fc.wk"; wl: "fc.wl"; wm: "fc.wm"; wn: "fc.wn"; wo: "fc.wo"; wp: "fc.wp"; wq: "fc.wq"; wr: "fc.wr"; ws: "fc.ws"; wt: "fc.wt"; wu: "fc.wu"; wv: "fc.wv"; ww: "fc.ww"; wx: "fc.wx"; wy: "fc.wy"; wz: "fc.wz"; xa: "fc.xa"; xb: "fc.xb"; xc: "fc.xc"; xd: "fc.xd"; xe: "fc.xe"; xf: "fc.xf"; xg: "fc.xg"; xh: "fc.xh"; xi: "fc.xi"; xj: "fc.xj"; xk: "fc.xk"; xl: "fc.xl"; xm: "fc.xm"; xn: "fc.xn"; xo: "fc.xo"; xp: "fc.xp"; xq: "fc.xq"; xr: "fc.xr"; xs: "fc.xs"; xt: "fc.xt"; xu: "fc.xu"; xv: "fc.xv"; xw: "fc.xw"; xx: "fc.xx"; xy: "fc.xy"; xz: "fc.xz"; ya: "fc.ya"; yb: "fc.yb"; yc: "fc.yc"; yd: "fc.yd"; ye: "fc.ye"; yf: "fc.yf"; yg: "fc.yg"; yh: "fc.yh"; yi: "fc.yi"; yj: "fc.yj"; yk: "fc.yk"; yl: "fc.yl"; ym: "fc.ym"; yn: "fc.yn"; yo: "fc.yo"; yp: "fc.yp"; yq: "fc.yq"; yr: "fc.yr"; ys: "fc.ys"; yt: "fc.yt"; yu: "fc.yu"; yv: "fc.yv"; yw: "fc.yw"; yx: "fc.yx"; yy: "fc.yy"; yz: "fc.yz"; za: "fc.za"; zb: "fc.zb"; zc: "fc.zc"; zd: "fc.zd"; ze: "fc.ze"; zf: "fc.zf"; zg: "fc.zg"; zh: "fc.zh"; zi: "fc.zi"; zj: "fc.zj"; zk: "fc.zk"; zl: "fc.zl"; zm: "fc.zm"; zn: "fc.zn"; zo: "fc.zo"; zp: "fc.zp"; zq: "fc.zq"; zr: "fc.zr"; zs: "fc.zs"; zt: "fc.zt"; zu: "fc.zu"; zv: "fc.zv"; zw: "fc.zw"; zx: "fc.zx"; zy: "fc.zy"; zz: "fc.zz"; }; fd: { aa: "fd.aa"; ab: "fd.ab"; ac: "fd.ac"; ad: "fd.ad"; ae: "fd.ae"; af: "fd.af"; ag: "fd.ag"; ah: "fd.ah"; ai: "fd.ai"; aj: "fd.aj"; ak: "fd.ak"; al: "fd.al"; am: "fd.am"; an: "fd.an"; ao: "fd.ao"; ap: "fd.ap"; aq: "fd.aq"; ar: "fd.ar"; as: "fd.as"; at: "fd.at"; au: "fd.au"; av: "fd.av"; aw: "fd.aw"; ax: "fd.ax"; ay: "fd.ay"; az: "fd.az"; ba: "fd.ba"; bb: "fd.bb"; bc: "fd.bc"; bd: "fd.bd"; be: "fd.be"; bf: "fd.bf"; bg: "fd.bg"; bh: "fd.bh"; bi: "fd.bi"; bj: "fd.bj"; bk: "fd.bk"; bl: "fd.bl"; bm: "fd.bm"; bn: "fd.bn"; bo: "fd.bo"; bp: "fd.bp"; bq: "fd.bq"; br: "fd.br"; bs: "fd.bs"; bt: "fd.bt"; bu: "fd.bu"; bv: "fd.bv"; bw: "fd.bw"; bx: "fd.bx"; by: "fd.by"; bz: "fd.bz"; ca: "fd.ca"; cb: "fd.cb"; cc: "fd.cc"; cd: "fd.cd"; ce: "fd.ce"; cf: "fd.cf"; cg: "fd.cg"; ch: "fd.ch"; ci: "fd.ci"; cj: "fd.cj"; ck: "fd.ck"; cl: "fd.cl"; cm: "fd.cm"; cn: "fd.cn"; co: "fd.co"; cp: "fd.cp"; cq: "fd.cq"; cr: "fd.cr"; cs: "fd.cs"; ct: "fd.ct"; cu: "fd.cu"; cv: "fd.cv"; cw: "fd.cw"; cx: "fd.cx"; cy: "fd.cy"; cz: "fd.cz"; da: "fd.da"; db: "fd.db"; dc: "fd.dc"; dd: "fd.dd"; de: "fd.de"; df: "fd.df"; dg: "fd.dg"; dh: "fd.dh"; di: "fd.di"; dj: "fd.dj"; dk: "fd.dk"; dl: "fd.dl"; dm: "fd.dm"; dn: "fd.dn"; do: "fd.do"; dp: "fd.dp"; dq: "fd.dq"; dr: "fd.dr"; ds: "fd.ds"; dt: "fd.dt"; du: "fd.du"; dv: "fd.dv"; dw: "fd.dw"; dx: "fd.dx"; dy: "fd.dy"; dz: "fd.dz"; ea: "fd.ea"; eb: "fd.eb"; ec: "fd.ec"; ed: "fd.ed"; ee: "fd.ee"; ef: "fd.ef"; eg: "fd.eg"; eh: "fd.eh"; ei: "fd.ei"; ej: "fd.ej"; ek: "fd.ek"; el: "fd.el"; em: "fd.em"; en: "fd.en"; eo: "fd.eo"; ep: "fd.ep"; eq: "fd.eq"; er: "fd.er"; es: "fd.es"; et: "fd.et"; eu: "fd.eu"; ev: "fd.ev"; ew: "fd.ew"; ex: "fd.ex"; ey: "fd.ey"; ez: "fd.ez"; fa: "fd.fa"; fb: "fd.fb"; fc: "fd.fc"; fd: "fd.fd"; fe: "fd.fe"; ff: "fd.ff"; fg: "fd.fg"; fh: "fd.fh"; fi: "fd.fi"; fj: "fd.fj"; fk: "fd.fk"; fl: "fd.fl"; fm: "fd.fm"; fn: "fd.fn"; fo: "fd.fo"; fp: "fd.fp"; fq: "fd.fq"; fr: "fd.fr"; fs: "fd.fs"; ft: "fd.ft"; fu: "fd.fu"; fv: "fd.fv"; fw: "fd.fw"; fx: "fd.fx"; fy: "fd.fy"; fz: "fd.fz"; ga: "fd.ga"; gb: "fd.gb"; gc: "fd.gc"; gd: "fd.gd"; ge: "fd.ge"; gf: "fd.gf"; gg: "fd.gg"; gh: "fd.gh"; gi: "fd.gi"; gj: "fd.gj"; gk: "fd.gk"; gl: "fd.gl"; gm: "fd.gm"; gn: "fd.gn"; go: "fd.go"; gp: "fd.gp"; gq: "fd.gq"; gr: "fd.gr"; gs: "fd.gs"; gt: "fd.gt"; gu: "fd.gu"; gv: "fd.gv"; gw: "fd.gw"; gx: "fd.gx"; gy: "fd.gy"; gz: "fd.gz"; ha: "fd.ha"; hb: "fd.hb"; hc: "fd.hc"; hd: "fd.hd"; he: "fd.he"; hf: "fd.hf"; hg: "fd.hg"; hh: "fd.hh"; hi: "fd.hi"; hj: "fd.hj"; hk: "fd.hk"; hl: "fd.hl"; hm: "fd.hm"; hn: "fd.hn"; ho: "fd.ho"; hp: "fd.hp"; hq: "fd.hq"; hr: "fd.hr"; hs: "fd.hs"; ht: "fd.ht"; hu: "fd.hu"; hv: "fd.hv"; hw: "fd.hw"; hx: "fd.hx"; hy: "fd.hy"; hz: "fd.hz"; ia: "fd.ia"; ib: "fd.ib"; ic: "fd.ic"; id: "fd.id"; ie: "fd.ie"; if: "fd.if"; ig: "fd.ig"; ih: "fd.ih"; ii: "fd.ii"; ij: "fd.ij"; ik: "fd.ik"; il: "fd.il"; im: "fd.im"; in: "fd.in"; io: "fd.io"; ip: "fd.ip"; iq: "fd.iq"; ir: "fd.ir"; is: "fd.is"; it: "fd.it"; iu: "fd.iu"; iv: "fd.iv"; iw: "fd.iw"; ix: "fd.ix"; iy: "fd.iy"; iz: "fd.iz"; ja: "fd.ja"; jb: "fd.jb"; jc: "fd.jc"; jd: "fd.jd"; je: "fd.je"; jf: "fd.jf"; jg: "fd.jg"; jh: "fd.jh"; ji: "fd.ji"; jj: "fd.jj"; jk: "fd.jk"; jl: "fd.jl"; jm: "fd.jm"; jn: "fd.jn"; jo: "fd.jo"; jp: "fd.jp"; jq: "fd.jq"; jr: "fd.jr"; js: "fd.js"; jt: "fd.jt"; ju: "fd.ju"; jv: "fd.jv"; jw: "fd.jw"; jx: "fd.jx"; jy: "fd.jy"; jz: "fd.jz"; ka: "fd.ka"; kb: "fd.kb"; kc: "fd.kc"; kd: "fd.kd"; ke: "fd.ke"; kf: "fd.kf"; kg: "fd.kg"; kh: "fd.kh"; ki: "fd.ki"; kj: "fd.kj"; kk: "fd.kk"; kl: "fd.kl"; km: "fd.km"; kn: "fd.kn"; ko: "fd.ko"; kp: "fd.kp"; kq: "fd.kq"; kr: "fd.kr"; ks: "fd.ks"; kt: "fd.kt"; ku: "fd.ku"; kv: "fd.kv"; kw: "fd.kw"; kx: "fd.kx"; ky: "fd.ky"; kz: "fd.kz"; la: "fd.la"; lb: "fd.lb"; lc: "fd.lc"; ld: "fd.ld"; le: "fd.le"; lf: "fd.lf"; lg: "fd.lg"; lh: "fd.lh"; li: "fd.li"; lj: "fd.lj"; lk: "fd.lk"; ll: "fd.ll"; lm: "fd.lm"; ln: "fd.ln"; lo: "fd.lo"; lp: "fd.lp"; lq: "fd.lq"; lr: "fd.lr"; ls: "fd.ls"; lt: "fd.lt"; lu: "fd.lu"; lv: "fd.lv"; lw: "fd.lw"; lx: "fd.lx"; ly: "fd.ly"; lz: "fd.lz"; ma: "fd.ma"; mb: "fd.mb"; mc: "fd.mc"; md: "fd.md"; me: "fd.me"; mf: "fd.mf"; mg: "fd.mg"; mh: "fd.mh"; mi: "fd.mi"; mj: "fd.mj"; mk: "fd.mk"; ml: "fd.ml"; mm: "fd.mm"; mn: "fd.mn"; mo: "fd.mo"; mp: "fd.mp"; mq: "fd.mq"; mr: "fd.mr"; ms: "fd.ms"; mt: "fd.mt"; mu: "fd.mu"; mv: "fd.mv"; mw: "fd.mw"; mx: "fd.mx"; my: "fd.my"; mz: "fd.mz"; na: "fd.na"; nb: "fd.nb"; nc: "fd.nc"; nd: "fd.nd"; ne: "fd.ne"; nf: "fd.nf"; ng: "fd.ng"; nh: "fd.nh"; ni: "fd.ni"; nj: "fd.nj"; nk: "fd.nk"; nl: "fd.nl"; nm: "fd.nm"; nn: "fd.nn"; no: "fd.no"; np: "fd.np"; nq: "fd.nq"; nr: "fd.nr"; ns: "fd.ns"; nt: "fd.nt"; nu: "fd.nu"; nv: "fd.nv"; nw: "fd.nw"; nx: "fd.nx"; ny: "fd.ny"; nz: "fd.nz"; oa: "fd.oa"; ob: "fd.ob"; oc: "fd.oc"; od: "fd.od"; oe: "fd.oe"; of: "fd.of"; og: "fd.og"; oh: "fd.oh"; oi: "fd.oi"; oj: "fd.oj"; ok: "fd.ok"; ol: "fd.ol"; om: "fd.om"; on: "fd.on"; oo: "fd.oo"; op: "fd.op"; oq: "fd.oq"; or: "fd.or"; os: "fd.os"; ot: "fd.ot"; ou: "fd.ou"; ov: "fd.ov"; ow: "fd.ow"; ox: "fd.ox"; oy: "fd.oy"; oz: "fd.oz"; pa: "fd.pa"; pb: "fd.pb"; pc: "fd.pc"; pd: "fd.pd"; pe: "fd.pe"; pf: "fd.pf"; pg: "fd.pg"; ph: "fd.ph"; pi: "fd.pi"; pj: "fd.pj"; pk: "fd.pk"; pl: "fd.pl"; pm: "fd.pm"; pn: "fd.pn"; po: "fd.po"; pp: "fd.pp"; pq: "fd.pq"; pr: "fd.pr"; ps: "fd.ps"; pt: "fd.pt"; pu: "fd.pu"; pv: "fd.pv"; pw: "fd.pw"; px: "fd.px"; py: "fd.py"; pz: "fd.pz"; qa: "fd.qa"; qb: "fd.qb"; qc: "fd.qc"; qd: "fd.qd"; qe: "fd.qe"; qf: "fd.qf"; qg: "fd.qg"; qh: "fd.qh"; qi: "fd.qi"; qj: "fd.qj"; qk: "fd.qk"; ql: "fd.ql"; qm: "fd.qm"; qn: "fd.qn"; qo: "fd.qo"; qp: "fd.qp"; qq: "fd.qq"; qr: "fd.qr"; qs: "fd.qs"; qt: "fd.qt"; qu: "fd.qu"; qv: "fd.qv"; qw: "fd.qw"; qx: "fd.qx"; qy: "fd.qy"; qz: "fd.qz"; ra: "fd.ra"; rb: "fd.rb"; rc: "fd.rc"; rd: "fd.rd"; re: "fd.re"; rf: "fd.rf"; rg: "fd.rg"; rh: "fd.rh"; ri: "fd.ri"; rj: "fd.rj"; rk: "fd.rk"; rl: "fd.rl"; rm: "fd.rm"; rn: "fd.rn"; ro: "fd.ro"; rp: "fd.rp"; rq: "fd.rq"; rr: "fd.rr"; rs: "fd.rs"; rt: "fd.rt"; ru: "fd.ru"; rv: "fd.rv"; rw: "fd.rw"; rx: "fd.rx"; ry: "fd.ry"; rz: "fd.rz"; sa: "fd.sa"; sb: "fd.sb"; sc: "fd.sc"; sd: "fd.sd"; se: "fd.se"; sf: "fd.sf"; sg: "fd.sg"; sh: "fd.sh"; si: "fd.si"; sj: "fd.sj"; sk: "fd.sk"; sl: "fd.sl"; sm: "fd.sm"; sn: "fd.sn"; so: "fd.so"; sp: "fd.sp"; sq: "fd.sq"; sr: "fd.sr"; ss: "fd.ss"; st: "fd.st"; su: "fd.su"; sv: "fd.sv"; sw: "fd.sw"; sx: "fd.sx"; sy: "fd.sy"; sz: "fd.sz"; ta: "fd.ta"; tb: "fd.tb"; tc: "fd.tc"; td: "fd.td"; te: "fd.te"; tf: "fd.tf"; tg: "fd.tg"; th: "fd.th"; ti: "fd.ti"; tj: "fd.tj"; tk: "fd.tk"; tl: "fd.tl"; tm: "fd.tm"; tn: "fd.tn"; to: "fd.to"; tp: "fd.tp"; tq: "fd.tq"; tr: "fd.tr"; ts: "fd.ts"; tt: "fd.tt"; tu: "fd.tu"; tv: "fd.tv"; tw: "fd.tw"; tx: "fd.tx"; ty: "fd.ty"; tz: "fd.tz"; ua: "fd.ua"; ub: "fd.ub"; uc: "fd.uc"; ud: "fd.ud"; ue: "fd.ue"; uf: "fd.uf"; ug: "fd.ug"; uh: "fd.uh"; ui: "fd.ui"; uj: "fd.uj"; uk: "fd.uk"; ul: "fd.ul"; um: "fd.um"; un: "fd.un"; uo: "fd.uo"; up: "fd.up"; uq: "fd.uq"; ur: "fd.ur"; us: "fd.us"; ut: "fd.ut"; uu: "fd.uu"; uv: "fd.uv"; uw: "fd.uw"; ux: "fd.ux"; uy: "fd.uy"; uz: "fd.uz"; va: "fd.va"; vb: "fd.vb"; vc: "fd.vc"; vd: "fd.vd"; ve: "fd.ve"; vf: "fd.vf"; vg: "fd.vg"; vh: "fd.vh"; vi: "fd.vi"; vj: "fd.vj"; vk: "fd.vk"; vl: "fd.vl"; vm: "fd.vm"; vn: "fd.vn"; vo: "fd.vo"; vp: "fd.vp"; vq: "fd.vq"; vr: "fd.vr"; vs: "fd.vs"; vt: "fd.vt"; vu: "fd.vu"; vv: "fd.vv"; vw: "fd.vw"; vx: "fd.vx"; vy: "fd.vy"; vz: "fd.vz"; wa: "fd.wa"; wb: "fd.wb"; wc: "fd.wc"; wd: "fd.wd"; we: "fd.we"; wf: "fd.wf"; wg: "fd.wg"; wh: "fd.wh"; wi: "fd.wi"; wj: "fd.wj"; wk: "fd.wk"; wl: "fd.wl"; wm: "fd.wm"; wn: "fd.wn"; wo: "fd.wo"; wp: "fd.wp"; wq: "fd.wq"; wr: "fd.wr"; ws: "fd.ws"; wt: "fd.wt"; wu: "fd.wu"; wv: "fd.wv"; ww: "fd.ww"; wx: "fd.wx"; wy: "fd.wy"; wz: "fd.wz"; xa: "fd.xa"; xb: "fd.xb"; xc: "fd.xc"; xd: "fd.xd"; xe: "fd.xe"; xf: "fd.xf"; xg: "fd.xg"; xh: "fd.xh"; xi: "fd.xi"; xj: "fd.xj"; xk: "fd.xk"; xl: "fd.xl"; xm: "fd.xm"; xn: "fd.xn"; xo: "fd.xo"; xp: "fd.xp"; xq: "fd.xq"; xr: "fd.xr"; xs: "fd.xs"; xt: "fd.xt"; xu: "fd.xu"; xv: "fd.xv"; xw: "fd.xw"; xx: "fd.xx"; xy: "fd.xy"; xz: "fd.xz"; ya: "fd.ya"; yb: "fd.yb"; yc: "fd.yc"; yd: "fd.yd"; ye: "fd.ye"; yf: "fd.yf"; yg: "fd.yg"; yh: "fd.yh"; yi: "fd.yi"; yj: "fd.yj"; yk: "fd.yk"; yl: "fd.yl"; ym: "fd.ym"; yn: "fd.yn"; yo: "fd.yo"; yp: "fd.yp"; yq: "fd.yq"; yr: "fd.yr"; ys: "fd.ys"; yt: "fd.yt"; yu: "fd.yu"; yv: "fd.yv"; yw: "fd.yw"; yx: "fd.yx"; yy: "fd.yy"; yz: "fd.yz"; za: "fd.za"; zb: "fd.zb"; zc: "fd.zc"; zd: "fd.zd"; ze: "fd.ze"; zf: "fd.zf"; zg: "fd.zg"; zh: "fd.zh"; zi: "fd.zi"; zj: "fd.zj"; zk: "fd.zk"; zl: "fd.zl"; zm: "fd.zm"; zn: "fd.zn"; zo: "fd.zo"; zp: "fd.zp"; zq: "fd.zq"; zr: "fd.zr"; zs: "fd.zs"; zt: "fd.zt"; zu: "fd.zu"; zv: "fd.zv"; zw: "fd.zw"; zx: "fd.zx"; zy: "fd.zy"; zz: "fd.zz"; }; fe: { aa: "fe.aa"; ab: "fe.ab"; ac: "fe.ac"; ad: "fe.ad"; ae: "fe.ae"; af: "fe.af"; ag: "fe.ag"; ah: "fe.ah"; ai: "fe.ai"; aj: "fe.aj"; ak: "fe.ak"; al: "fe.al"; am: "fe.am"; an: "fe.an"; ao: "fe.ao"; ap: "fe.ap"; aq: "fe.aq"; ar: "fe.ar"; as: "fe.as"; at: "fe.at"; au: "fe.au"; av: "fe.av"; aw: "fe.aw"; ax: "fe.ax"; ay: "fe.ay"; az: "fe.az"; ba: "fe.ba"; bb: "fe.bb"; bc: "fe.bc"; bd: "fe.bd"; be: "fe.be"; bf: "fe.bf"; bg: "fe.bg"; bh: "fe.bh"; bi: "fe.bi"; bj: "fe.bj"; bk: "fe.bk"; bl: "fe.bl"; bm: "fe.bm"; bn: "fe.bn"; bo: "fe.bo"; bp: "fe.bp"; bq: "fe.bq"; br: "fe.br"; bs: "fe.bs"; bt: "fe.bt"; bu: "fe.bu"; bv: "fe.bv"; bw: "fe.bw"; bx: "fe.bx"; by: "fe.by"; bz: "fe.bz"; ca: "fe.ca"; cb: "fe.cb"; cc: "fe.cc"; cd: "fe.cd"; ce: "fe.ce"; cf: "fe.cf"; cg: "fe.cg"; ch: "fe.ch"; ci: "fe.ci"; cj: "fe.cj"; ck: "fe.ck"; cl: "fe.cl"; cm: "fe.cm"; cn: "fe.cn"; co: "fe.co"; cp: "fe.cp"; cq: "fe.cq"; cr: "fe.cr"; cs: "fe.cs"; ct: "fe.ct"; cu: "fe.cu"; cv: "fe.cv"; cw: "fe.cw"; cx: "fe.cx"; cy: "fe.cy"; cz: "fe.cz"; da: "fe.da"; db: "fe.db"; dc: "fe.dc"; dd: "fe.dd"; de: "fe.de"; df: "fe.df"; dg: "fe.dg"; dh: "fe.dh"; di: "fe.di"; dj: "fe.dj"; dk: "fe.dk"; dl: "fe.dl"; dm: "fe.dm"; dn: "fe.dn"; do: "fe.do"; dp: "fe.dp"; dq: "fe.dq"; dr: "fe.dr"; ds: "fe.ds"; dt: "fe.dt"; du: "fe.du"; dv: "fe.dv"; dw: "fe.dw"; dx: "fe.dx"; dy: "fe.dy"; dz: "fe.dz"; ea: "fe.ea"; eb: "fe.eb"; ec: "fe.ec"; ed: "fe.ed"; ee: "fe.ee"; ef: "fe.ef"; eg: "fe.eg"; eh: "fe.eh"; ei: "fe.ei"; ej: "fe.ej"; ek: "fe.ek"; el: "fe.el"; em: "fe.em"; en: "fe.en"; eo: "fe.eo"; ep: "fe.ep"; eq: "fe.eq"; er: "fe.er"; es: "fe.es"; et: "fe.et"; eu: "fe.eu"; ev: "fe.ev"; ew: "fe.ew"; ex: "fe.ex"; ey: "fe.ey"; ez: "fe.ez"; fa: "fe.fa"; fb: "fe.fb"; fc: "fe.fc"; fd: "fe.fd"; fe: "fe.fe"; ff: "fe.ff"; fg: "fe.fg"; fh: "fe.fh"; fi: "fe.fi"; fj: "fe.fj"; fk: "fe.fk"; fl: "fe.fl"; fm: "fe.fm"; fn: "fe.fn"; fo: "fe.fo"; fp: "fe.fp"; fq: "fe.fq"; fr: "fe.fr"; fs: "fe.fs"; ft: "fe.ft"; fu: "fe.fu"; fv: "fe.fv"; fw: "fe.fw"; fx: "fe.fx"; fy: "fe.fy"; fz: "fe.fz"; ga: "fe.ga"; gb: "fe.gb"; gc: "fe.gc"; gd: "fe.gd"; ge: "fe.ge"; gf: "fe.gf"; gg: "fe.gg"; gh: "fe.gh"; gi: "fe.gi"; gj: "fe.gj"; gk: "fe.gk"; gl: "fe.gl"; gm: "fe.gm"; gn: "fe.gn"; go: "fe.go"; gp: "fe.gp"; gq: "fe.gq"; gr: "fe.gr"; gs: "fe.gs"; gt: "fe.gt"; gu: "fe.gu"; gv: "fe.gv"; gw: "fe.gw"; gx: "fe.gx"; gy: "fe.gy"; gz: "fe.gz"; ha: "fe.ha"; hb: "fe.hb"; hc: "fe.hc"; hd: "fe.hd"; he: "fe.he"; hf: "fe.hf"; hg: "fe.hg"; hh: "fe.hh"; hi: "fe.hi"; hj: "fe.hj"; hk: "fe.hk"; hl: "fe.hl"; hm: "fe.hm"; hn: "fe.hn"; ho: "fe.ho"; hp: "fe.hp"; hq: "fe.hq"; hr: "fe.hr"; hs: "fe.hs"; ht: "fe.ht"; hu: "fe.hu"; hv: "fe.hv"; hw: "fe.hw"; hx: "fe.hx"; hy: "fe.hy"; hz: "fe.hz"; ia: "fe.ia"; ib: "fe.ib"; ic: "fe.ic"; id: "fe.id"; ie: "fe.ie"; if: "fe.if"; ig: "fe.ig"; ih: "fe.ih"; ii: "fe.ii"; ij: "fe.ij"; ik: "fe.ik"; il: "fe.il"; im: "fe.im"; in: "fe.in"; io: "fe.io"; ip: "fe.ip"; iq: "fe.iq"; ir: "fe.ir"; is: "fe.is"; it: "fe.it"; iu: "fe.iu"; iv: "fe.iv"; iw: "fe.iw"; ix: "fe.ix"; iy: "fe.iy"; iz: "fe.iz"; ja: "fe.ja"; jb: "fe.jb"; jc: "fe.jc"; jd: "fe.jd"; je: "fe.je"; jf: "fe.jf"; jg: "fe.jg"; jh: "fe.jh"; ji: "fe.ji"; jj: "fe.jj"; jk: "fe.jk"; jl: "fe.jl"; jm: "fe.jm"; jn: "fe.jn"; jo: "fe.jo"; jp: "fe.jp"; jq: "fe.jq"; jr: "fe.jr"; js: "fe.js"; jt: "fe.jt"; ju: "fe.ju"; jv: "fe.jv"; jw: "fe.jw"; jx: "fe.jx"; jy: "fe.jy"; jz: "fe.jz"; ka: "fe.ka"; kb: "fe.kb"; kc: "fe.kc"; kd: "fe.kd"; ke: "fe.ke"; kf: "fe.kf"; kg: "fe.kg"; kh: "fe.kh"; ki: "fe.ki"; kj: "fe.kj"; kk: "fe.kk"; kl: "fe.kl"; km: "fe.km"; kn: "fe.kn"; ko: "fe.ko"; kp: "fe.kp"; kq: "fe.kq"; kr: "fe.kr"; ks: "fe.ks"; kt: "fe.kt"; ku: "fe.ku"; kv: "fe.kv"; kw: "fe.kw"; kx: "fe.kx"; ky: "fe.ky"; kz: "fe.kz"; la: "fe.la"; lb: "fe.lb"; lc: "fe.lc"; ld: "fe.ld"; le: "fe.le"; lf: "fe.lf"; lg: "fe.lg"; lh: "fe.lh"; li: "fe.li"; lj: "fe.lj"; lk: "fe.lk"; ll: "fe.ll"; lm: "fe.lm"; ln: "fe.ln"; lo: "fe.lo"; lp: "fe.lp"; lq: "fe.lq"; lr: "fe.lr"; ls: "fe.ls"; lt: "fe.lt"; lu: "fe.lu"; lv: "fe.lv"; lw: "fe.lw"; lx: "fe.lx"; ly: "fe.ly"; lz: "fe.lz"; ma: "fe.ma"; mb: "fe.mb"; mc: "fe.mc"; md: "fe.md"; me: "fe.me"; mf: "fe.mf"; mg: "fe.mg"; mh: "fe.mh"; mi: "fe.mi"; mj: "fe.mj"; mk: "fe.mk"; ml: "fe.ml"; mm: "fe.mm"; mn: "fe.mn"; mo: "fe.mo"; mp: "fe.mp"; mq: "fe.mq"; mr: "fe.mr"; ms: "fe.ms"; mt: "fe.mt"; mu: "fe.mu"; mv: "fe.mv"; mw: "fe.mw"; mx: "fe.mx"; my: "fe.my"; mz: "fe.mz"; na: "fe.na"; nb: "fe.nb"; nc: "fe.nc"; nd: "fe.nd"; ne: "fe.ne"; nf: "fe.nf"; ng: "fe.ng"; nh: "fe.nh"; ni: "fe.ni"; nj: "fe.nj"; nk: "fe.nk"; nl: "fe.nl"; nm: "fe.nm"; nn: "fe.nn"; no: "fe.no"; np: "fe.np"; nq: "fe.nq"; nr: "fe.nr"; ns: "fe.ns"; nt: "fe.nt"; nu: "fe.nu"; nv: "fe.nv"; nw: "fe.nw"; nx: "fe.nx"; ny: "fe.ny"; nz: "fe.nz"; oa: "fe.oa"; ob: "fe.ob"; oc: "fe.oc"; od: "fe.od"; oe: "fe.oe"; of: "fe.of"; og: "fe.og"; oh: "fe.oh"; oi: "fe.oi"; oj: "fe.oj"; ok: "fe.ok"; ol: "fe.ol"; om: "fe.om"; on: "fe.on"; oo: "fe.oo"; op: "fe.op"; oq: "fe.oq"; or: "fe.or"; os: "fe.os"; ot: "fe.ot"; ou: "fe.ou"; ov: "fe.ov"; ow: "fe.ow"; ox: "fe.ox"; oy: "fe.oy"; oz: "fe.oz"; pa: "fe.pa"; pb: "fe.pb"; pc: "fe.pc"; pd: "fe.pd"; pe: "fe.pe"; pf: "fe.pf"; pg: "fe.pg"; ph: "fe.ph"; pi: "fe.pi"; pj: "fe.pj"; pk: "fe.pk"; pl: "fe.pl"; pm: "fe.pm"; pn: "fe.pn"; po: "fe.po"; pp: "fe.pp"; pq: "fe.pq"; pr: "fe.pr"; ps: "fe.ps"; pt: "fe.pt"; pu: "fe.pu"; pv: "fe.pv"; pw: "fe.pw"; px: "fe.px"; py: "fe.py"; pz: "fe.pz"; qa: "fe.qa"; qb: "fe.qb"; qc: "fe.qc"; qd: "fe.qd"; qe: "fe.qe"; qf: "fe.qf"; qg: "fe.qg"; qh: "fe.qh"; qi: "fe.qi"; qj: "fe.qj"; qk: "fe.qk"; ql: "fe.ql"; qm: "fe.qm"; qn: "fe.qn"; qo: "fe.qo"; qp: "fe.qp"; qq: "fe.qq"; qr: "fe.qr"; qs: "fe.qs"; qt: "fe.qt"; qu: "fe.qu"; qv: "fe.qv"; qw: "fe.qw"; qx: "fe.qx"; qy: "fe.qy"; qz: "fe.qz"; ra: "fe.ra"; rb: "fe.rb"; rc: "fe.rc"; rd: "fe.rd"; re: "fe.re"; rf: "fe.rf"; rg: "fe.rg"; rh: "fe.rh"; ri: "fe.ri"; rj: "fe.rj"; rk: "fe.rk"; rl: "fe.rl"; rm: "fe.rm"; rn: "fe.rn"; ro: "fe.ro"; rp: "fe.rp"; rq: "fe.rq"; rr: "fe.rr"; rs: "fe.rs"; rt: "fe.rt"; ru: "fe.ru"; rv: "fe.rv"; rw: "fe.rw"; rx: "fe.rx"; ry: "fe.ry"; rz: "fe.rz"; sa: "fe.sa"; sb: "fe.sb"; sc: "fe.sc"; sd: "fe.sd"; se: "fe.se"; sf: "fe.sf"; sg: "fe.sg"; sh: "fe.sh"; si: "fe.si"; sj: "fe.sj"; sk: "fe.sk"; sl: "fe.sl"; sm: "fe.sm"; sn: "fe.sn"; so: "fe.so"; sp: "fe.sp"; sq: "fe.sq"; sr: "fe.sr"; ss: "fe.ss"; st: "fe.st"; su: "fe.su"; sv: "fe.sv"; sw: "fe.sw"; sx: "fe.sx"; sy: "fe.sy"; sz: "fe.sz"; ta: "fe.ta"; tb: "fe.tb"; tc: "fe.tc"; td: "fe.td"; te: "fe.te"; tf: "fe.tf"; tg: "fe.tg"; th: "fe.th"; ti: "fe.ti"; tj: "fe.tj"; tk: "fe.tk"; tl: "fe.tl"; tm: "fe.tm"; tn: "fe.tn"; to: "fe.to"; tp: "fe.tp"; tq: "fe.tq"; tr: "fe.tr"; ts: "fe.ts"; tt: "fe.tt"; tu: "fe.tu"; tv: "fe.tv"; tw: "fe.tw"; tx: "fe.tx"; ty: "fe.ty"; tz: "fe.tz"; ua: "fe.ua"; ub: "fe.ub"; uc: "fe.uc"; ud: "fe.ud"; ue: "fe.ue"; uf: "fe.uf"; ug: "fe.ug"; uh: "fe.uh"; ui: "fe.ui"; uj: "fe.uj"; uk: "fe.uk"; ul: "fe.ul"; um: "fe.um"; un: "fe.un"; uo: "fe.uo"; up: "fe.up"; uq: "fe.uq"; ur: "fe.ur"; us: "fe.us"; ut: "fe.ut"; uu: "fe.uu"; uv: "fe.uv"; uw: "fe.uw"; ux: "fe.ux"; uy: "fe.uy"; uz: "fe.uz"; va: "fe.va"; vb: "fe.vb"; vc: "fe.vc"; vd: "fe.vd"; ve: "fe.ve"; vf: "fe.vf"; vg: "fe.vg"; vh: "fe.vh"; vi: "fe.vi"; vj: "fe.vj"; vk: "fe.vk"; vl: "fe.vl"; vm: "fe.vm"; vn: "fe.vn"; vo: "fe.vo"; vp: "fe.vp"; vq: "fe.vq"; vr: "fe.vr"; vs: "fe.vs"; vt: "fe.vt"; vu: "fe.vu"; vv: "fe.vv"; vw: "fe.vw"; vx: "fe.vx"; vy: "fe.vy"; vz: "fe.vz"; wa: "fe.wa"; wb: "fe.wb"; wc: "fe.wc"; wd: "fe.wd"; we: "fe.we"; wf: "fe.wf"; wg: "fe.wg"; wh: "fe.wh"; wi: "fe.wi"; wj: "fe.wj"; wk: "fe.wk"; wl: "fe.wl"; wm: "fe.wm"; wn: "fe.wn"; wo: "fe.wo"; wp: "fe.wp"; wq: "fe.wq"; wr: "fe.wr"; ws: "fe.ws"; wt: "fe.wt"; wu: "fe.wu"; wv: "fe.wv"; ww: "fe.ww"; wx: "fe.wx"; wy: "fe.wy"; wz: "fe.wz"; xa: "fe.xa"; xb: "fe.xb"; xc: "fe.xc"; xd: "fe.xd"; xe: "fe.xe"; xf: "fe.xf"; xg: "fe.xg"; xh: "fe.xh"; xi: "fe.xi"; xj: "fe.xj"; xk: "fe.xk"; xl: "fe.xl"; xm: "fe.xm"; xn: "fe.xn"; xo: "fe.xo"; xp: "fe.xp"; xq: "fe.xq"; xr: "fe.xr"; xs: "fe.xs"; xt: "fe.xt"; xu: "fe.xu"; xv: "fe.xv"; xw: "fe.xw"; xx: "fe.xx"; xy: "fe.xy"; xz: "fe.xz"; ya: "fe.ya"; yb: "fe.yb"; yc: "fe.yc"; yd: "fe.yd"; ye: "fe.ye"; yf: "fe.yf"; yg: "fe.yg"; yh: "fe.yh"; yi: "fe.yi"; yj: "fe.yj"; yk: "fe.yk"; yl: "fe.yl"; ym: "fe.ym"; yn: "fe.yn"; yo: "fe.yo"; yp: "fe.yp"; yq: "fe.yq"; yr: "fe.yr"; ys: "fe.ys"; yt: "fe.yt"; yu: "fe.yu"; yv: "fe.yv"; yw: "fe.yw"; yx: "fe.yx"; yy: "fe.yy"; yz: "fe.yz"; za: "fe.za"; zb: "fe.zb"; zc: "fe.zc"; zd: "fe.zd"; ze: "fe.ze"; zf: "fe.zf"; zg: "fe.zg"; zh: "fe.zh"; zi: "fe.zi"; zj: "fe.zj"; zk: "fe.zk"; zl: "fe.zl"; zm: "fe.zm"; zn: "fe.zn"; zo: "fe.zo"; zp: "fe.zp"; zq: "fe.zq"; zr: "fe.zr"; zs: "fe.zs"; zt: "fe.zt"; zu: "fe.zu"; zv: "fe.zv"; zw: "fe.zw"; zx: "fe.zx"; zy: "fe.zy"; zz: "fe.zz"; }; ff: { aa: "ff.aa"; ab: "ff.ab"; ac: "ff.ac"; ad: "ff.ad"; ae: "ff.ae"; af: "ff.af"; ag: "ff.ag"; ah: "ff.ah"; ai: "ff.ai"; aj: "ff.aj"; ak: "ff.ak"; al: "ff.al"; am: "ff.am"; an: "ff.an"; ao: "ff.ao"; ap: "ff.ap"; aq: "ff.aq"; ar: "ff.ar"; as: "ff.as"; at: "ff.at"; au: "ff.au"; av: "ff.av"; aw: "ff.aw"; ax: "ff.ax"; ay: "ff.ay"; az: "ff.az"; ba: "ff.ba"; bb: "ff.bb"; bc: "ff.bc"; bd: "ff.bd"; be: "ff.be"; bf: "ff.bf"; bg: "ff.bg"; bh: "ff.bh"; bi: "ff.bi"; bj: "ff.bj"; bk: "ff.bk"; bl: "ff.bl"; bm: "ff.bm"; bn: "ff.bn"; bo: "ff.bo"; bp: "ff.bp"; bq: "ff.bq"; br: "ff.br"; bs: "ff.bs"; bt: "ff.bt"; bu: "ff.bu"; bv: "ff.bv"; bw: "ff.bw"; bx: "ff.bx"; by: "ff.by"; bz: "ff.bz"; ca: "ff.ca"; cb: "ff.cb"; cc: "ff.cc"; cd: "ff.cd"; ce: "ff.ce"; cf: "ff.cf"; cg: "ff.cg"; ch: "ff.ch"; ci: "ff.ci"; cj: "ff.cj"; ck: "ff.ck"; cl: "ff.cl"; cm: "ff.cm"; cn: "ff.cn"; co: "ff.co"; cp: "ff.cp"; cq: "ff.cq"; cr: "ff.cr"; cs: "ff.cs"; ct: "ff.ct"; cu: "ff.cu"; cv: "ff.cv"; cw: "ff.cw"; cx: "ff.cx"; cy: "ff.cy"; cz: "ff.cz"; da: "ff.da"; db: "ff.db"; dc: "ff.dc"; dd: "ff.dd"; de: "ff.de"; df: "ff.df"; dg: "ff.dg"; dh: "ff.dh"; di: "ff.di"; dj: "ff.dj"; dk: "ff.dk"; dl: "ff.dl"; dm: "ff.dm"; dn: "ff.dn"; do: "ff.do"; dp: "ff.dp"; dq: "ff.dq"; dr: "ff.dr"; ds: "ff.ds"; dt: "ff.dt"; du: "ff.du"; dv: "ff.dv"; dw: "ff.dw"; dx: "ff.dx"; dy: "ff.dy"; dz: "ff.dz"; ea: "ff.ea"; eb: "ff.eb"; ec: "ff.ec"; ed: "ff.ed"; ee: "ff.ee"; ef: "ff.ef"; eg: "ff.eg"; eh: "ff.eh"; ei: "ff.ei"; ej: "ff.ej"; ek: "ff.ek"; el: "ff.el"; em: "ff.em"; en: "ff.en"; eo: "ff.eo"; ep: "ff.ep"; eq: "ff.eq"; er: "ff.er"; es: "ff.es"; et: "ff.et"; eu: "ff.eu"; ev: "ff.ev"; ew: "ff.ew"; ex: "ff.ex"; ey: "ff.ey"; ez: "ff.ez"; fa: "ff.fa"; fb: "ff.fb"; fc: "ff.fc"; fd: "ff.fd"; fe: "ff.fe"; ff: "ff.ff"; fg: "ff.fg"; fh: "ff.fh"; fi: "ff.fi"; fj: "ff.fj"; fk: "ff.fk"; fl: "ff.fl"; fm: "ff.fm"; fn: "ff.fn"; fo: "ff.fo"; fp: "ff.fp"; fq: "ff.fq"; fr: "ff.fr"; fs: "ff.fs"; ft: "ff.ft"; fu: "ff.fu"; fv: "ff.fv"; fw: "ff.fw"; fx: "ff.fx"; fy: "ff.fy"; fz: "ff.fz"; ga: "ff.ga"; gb: "ff.gb"; gc: "ff.gc"; gd: "ff.gd"; ge: "ff.ge"; gf: "ff.gf"; gg: "ff.gg"; gh: "ff.gh"; gi: "ff.gi"; gj: "ff.gj"; gk: "ff.gk"; gl: "ff.gl"; gm: "ff.gm"; gn: "ff.gn"; go: "ff.go"; gp: "ff.gp"; gq: "ff.gq"; gr: "ff.gr"; gs: "ff.gs"; gt: "ff.gt"; gu: "ff.gu"; gv: "ff.gv"; gw: "ff.gw"; gx: "ff.gx"; gy: "ff.gy"; gz: "ff.gz"; ha: "ff.ha"; hb: "ff.hb"; hc: "ff.hc"; hd: "ff.hd"; he: "ff.he"; hf: "ff.hf"; hg: "ff.hg"; hh: "ff.hh"; hi: "ff.hi"; hj: "ff.hj"; hk: "ff.hk"; hl: "ff.hl"; hm: "ff.hm"; hn: "ff.hn"; ho: "ff.ho"; hp: "ff.hp"; hq: "ff.hq"; hr: "ff.hr"; hs: "ff.hs"; ht: "ff.ht"; hu: "ff.hu"; hv: "ff.hv"; hw: "ff.hw"; hx: "ff.hx"; hy: "ff.hy"; hz: "ff.hz"; ia: "ff.ia"; ib: "ff.ib"; ic: "ff.ic"; id: "ff.id"; ie: "ff.ie"; if: "ff.if"; ig: "ff.ig"; ih: "ff.ih"; ii: "ff.ii"; ij: "ff.ij"; ik: "ff.ik"; il: "ff.il"; im: "ff.im"; in: "ff.in"; io: "ff.io"; ip: "ff.ip"; iq: "ff.iq"; ir: "ff.ir"; is: "ff.is"; it: "ff.it"; iu: "ff.iu"; iv: "ff.iv"; iw: "ff.iw"; ix: "ff.ix"; iy: "ff.iy"; iz: "ff.iz"; ja: "ff.ja"; jb: "ff.jb"; jc: "ff.jc"; jd: "ff.jd"; je: "ff.je"; jf: "ff.jf"; jg: "ff.jg"; jh: "ff.jh"; ji: "ff.ji"; jj: "ff.jj"; jk: "ff.jk"; jl: "ff.jl"; jm: "ff.jm"; jn: "ff.jn"; jo: "ff.jo"; jp: "ff.jp"; jq: "ff.jq"; jr: "ff.jr"; js: "ff.js"; jt: "ff.jt"; ju: "ff.ju"; jv: "ff.jv"; jw: "ff.jw"; jx: "ff.jx"; jy: "ff.jy"; jz: "ff.jz"; ka: "ff.ka"; kb: "ff.kb"; kc: "ff.kc"; kd: "ff.kd"; ke: "ff.ke"; kf: "ff.kf"; kg: "ff.kg"; kh: "ff.kh"; ki: "ff.ki"; kj: "ff.kj"; kk: "ff.kk"; kl: "ff.kl"; km: "ff.km"; kn: "ff.kn"; ko: "ff.ko"; kp: "ff.kp"; kq: "ff.kq"; kr: "ff.kr"; ks: "ff.ks"; kt: "ff.kt"; ku: "ff.ku"; kv: "ff.kv"; kw: "ff.kw"; kx: "ff.kx"; ky: "ff.ky"; kz: "ff.kz"; la: "ff.la"; lb: "ff.lb"; lc: "ff.lc"; ld: "ff.ld"; le: "ff.le"; lf: "ff.lf"; lg: "ff.lg"; lh: "ff.lh"; li: "ff.li"; lj: "ff.lj"; lk: "ff.lk"; ll: "ff.ll"; lm: "ff.lm"; ln: "ff.ln"; lo: "ff.lo"; lp: "ff.lp"; lq: "ff.lq"; lr: "ff.lr"; ls: "ff.ls"; lt: "ff.lt"; lu: "ff.lu"; lv: "ff.lv"; lw: "ff.lw"; lx: "ff.lx"; ly: "ff.ly"; lz: "ff.lz"; ma: "ff.ma"; mb: "ff.mb"; mc: "ff.mc"; md: "ff.md"; me: "ff.me"; mf: "ff.mf"; mg: "ff.mg"; mh: "ff.mh"; mi: "ff.mi"; mj: "ff.mj"; mk: "ff.mk"; ml: "ff.ml"; mm: "ff.mm"; mn: "ff.mn"; mo: "ff.mo"; mp: "ff.mp"; mq: "ff.mq"; mr: "ff.mr"; ms: "ff.ms"; mt: "ff.mt"; mu: "ff.mu"; mv: "ff.mv"; mw: "ff.mw"; mx: "ff.mx"; my: "ff.my"; mz: "ff.mz"; na: "ff.na"; nb: "ff.nb"; nc: "ff.nc"; nd: "ff.nd"; ne: "ff.ne"; nf: "ff.nf"; ng: "ff.ng"; nh: "ff.nh"; ni: "ff.ni"; nj: "ff.nj"; nk: "ff.nk"; nl: "ff.nl"; nm: "ff.nm"; nn: "ff.nn"; no: "ff.no"; np: "ff.np"; nq: "ff.nq"; nr: "ff.nr"; ns: "ff.ns"; nt: "ff.nt"; nu: "ff.nu"; nv: "ff.nv"; nw: "ff.nw"; nx: "ff.nx"; ny: "ff.ny"; nz: "ff.nz"; oa: "ff.oa"; ob: "ff.ob"; oc: "ff.oc"; od: "ff.od"; oe: "ff.oe"; of: "ff.of"; og: "ff.og"; oh: "ff.oh"; oi: "ff.oi"; oj: "ff.oj"; ok: "ff.ok"; ol: "ff.ol"; om: "ff.om"; on: "ff.on"; oo: "ff.oo"; op: "ff.op"; oq: "ff.oq"; or: "ff.or"; os: "ff.os"; ot: "ff.ot"; ou: "ff.ou"; ov: "ff.ov"; ow: "ff.ow"; ox: "ff.ox"; oy: "ff.oy"; oz: "ff.oz"; pa: "ff.pa"; pb: "ff.pb"; pc: "ff.pc"; pd: "ff.pd"; pe: "ff.pe"; pf: "ff.pf"; pg: "ff.pg"; ph: "ff.ph"; pi: "ff.pi"; pj: "ff.pj"; pk: "ff.pk"; pl: "ff.pl"; pm: "ff.pm"; pn: "ff.pn"; po: "ff.po"; pp: "ff.pp"; pq: "ff.pq"; pr: "ff.pr"; ps: "ff.ps"; pt: "ff.pt"; pu: "ff.pu"; pv: "ff.pv"; pw: "ff.pw"; px: "ff.px"; py: "ff.py"; pz: "ff.pz"; qa: "ff.qa"; qb: "ff.qb"; qc: "ff.qc"; qd: "ff.qd"; qe: "ff.qe"; qf: "ff.qf"; qg: "ff.qg"; qh: "ff.qh"; qi: "ff.qi"; qj: "ff.qj"; qk: "ff.qk"; ql: "ff.ql"; qm: "ff.qm"; qn: "ff.qn"; qo: "ff.qo"; qp: "ff.qp"; qq: "ff.qq"; qr: "ff.qr"; qs: "ff.qs"; qt: "ff.qt"; qu: "ff.qu"; qv: "ff.qv"; qw: "ff.qw"; qx: "ff.qx"; qy: "ff.qy"; qz: "ff.qz"; ra: "ff.ra"; rb: "ff.rb"; rc: "ff.rc"; rd: "ff.rd"; re: "ff.re"; rf: "ff.rf"; rg: "ff.rg"; rh: "ff.rh"; ri: "ff.ri"; rj: "ff.rj"; rk: "ff.rk"; rl: "ff.rl"; rm: "ff.rm"; rn: "ff.rn"; ro: "ff.ro"; rp: "ff.rp"; rq: "ff.rq"; rr: "ff.rr"; rs: "ff.rs"; rt: "ff.rt"; ru: "ff.ru"; rv: "ff.rv"; rw: "ff.rw"; rx: "ff.rx"; ry: "ff.ry"; rz: "ff.rz"; sa: "ff.sa"; sb: "ff.sb"; sc: "ff.sc"; sd: "ff.sd"; se: "ff.se"; sf: "ff.sf"; sg: "ff.sg"; sh: "ff.sh"; si: "ff.si"; sj: "ff.sj"; sk: "ff.sk"; sl: "ff.sl"; sm: "ff.sm"; sn: "ff.sn"; so: "ff.so"; sp: "ff.sp"; sq: "ff.sq"; sr: "ff.sr"; ss: "ff.ss"; st: "ff.st"; su: "ff.su"; sv: "ff.sv"; sw: "ff.sw"; sx: "ff.sx"; sy: "ff.sy"; sz: "ff.sz"; ta: "ff.ta"; tb: "ff.tb"; tc: "ff.tc"; td: "ff.td"; te: "ff.te"; tf: "ff.tf"; tg: "ff.tg"; th: "ff.th"; ti: "ff.ti"; tj: "ff.tj"; tk: "ff.tk"; tl: "ff.tl"; tm: "ff.tm"; tn: "ff.tn"; to: "ff.to"; tp: "ff.tp"; tq: "ff.tq"; tr: "ff.tr"; ts: "ff.ts"; tt: "ff.tt"; tu: "ff.tu"; tv: "ff.tv"; tw: "ff.tw"; tx: "ff.tx"; ty: "ff.ty"; tz: "ff.tz"; ua: "ff.ua"; ub: "ff.ub"; uc: "ff.uc"; ud: "ff.ud"; ue: "ff.ue"; uf: "ff.uf"; ug: "ff.ug"; uh: "ff.uh"; ui: "ff.ui"; uj: "ff.uj"; uk: "ff.uk"; ul: "ff.ul"; um: "ff.um"; un: "ff.un"; uo: "ff.uo"; up: "ff.up"; uq: "ff.uq"; ur: "ff.ur"; us: "ff.us"; ut: "ff.ut"; uu: "ff.uu"; uv: "ff.uv"; uw: "ff.uw"; ux: "ff.ux"; uy: "ff.uy"; uz: "ff.uz"; va: "ff.va"; vb: "ff.vb"; vc: "ff.vc"; vd: "ff.vd"; ve: "ff.ve"; vf: "ff.vf"; vg: "ff.vg"; vh: "ff.vh"; vi: "ff.vi"; vj: "ff.vj"; vk: "ff.vk"; vl: "ff.vl"; vm: "ff.vm"; vn: "ff.vn"; vo: "ff.vo"; vp: "ff.vp"; vq: "ff.vq"; vr: "ff.vr"; vs: "ff.vs"; vt: "ff.vt"; vu: "ff.vu"; vv: "ff.vv"; vw: "ff.vw"; vx: "ff.vx"; vy: "ff.vy"; vz: "ff.vz"; wa: "ff.wa"; wb: "ff.wb"; wc: "ff.wc"; wd: "ff.wd"; we: "ff.we"; wf: "ff.wf"; wg: "ff.wg"; wh: "ff.wh"; wi: "ff.wi"; wj: "ff.wj"; wk: "ff.wk"; wl: "ff.wl"; wm: "ff.wm"; wn: "ff.wn"; wo: "ff.wo"; wp: "ff.wp"; wq: "ff.wq"; wr: "ff.wr"; ws: "ff.ws"; wt: "ff.wt"; wu: "ff.wu"; wv: "ff.wv"; ww: "ff.ww"; wx: "ff.wx"; wy: "ff.wy"; wz: "ff.wz"; xa: "ff.xa"; xb: "ff.xb"; xc: "ff.xc"; xd: "ff.xd"; xe: "ff.xe"; xf: "ff.xf"; xg: "ff.xg"; xh: "ff.xh"; xi: "ff.xi"; xj: "ff.xj"; xk: "ff.xk"; xl: "ff.xl"; xm: "ff.xm"; xn: "ff.xn"; xo: "ff.xo"; xp: "ff.xp"; xq: "ff.xq"; xr: "ff.xr"; xs: "ff.xs"; xt: "ff.xt"; xu: "ff.xu"; xv: "ff.xv"; xw: "ff.xw"; xx: "ff.xx"; xy: "ff.xy"; xz: "ff.xz"; ya: "ff.ya"; yb: "ff.yb"; yc: "ff.yc"; yd: "ff.yd"; ye: "ff.ye"; yf: "ff.yf"; yg: "ff.yg"; yh: "ff.yh"; yi: "ff.yi"; yj: "ff.yj"; yk: "ff.yk"; yl: "ff.yl"; ym: "ff.ym"; yn: "ff.yn"; yo: "ff.yo"; yp: "ff.yp"; yq: "ff.yq"; yr: "ff.yr"; ys: "ff.ys"; yt: "ff.yt"; yu: "ff.yu"; yv: "ff.yv"; yw: "ff.yw"; yx: "ff.yx"; yy: "ff.yy"; yz: "ff.yz"; za: "ff.za"; zb: "ff.zb"; zc: "ff.zc"; zd: "ff.zd"; ze: "ff.ze"; zf: "ff.zf"; zg: "ff.zg"; zh: "ff.zh"; zi: "ff.zi"; zj: "ff.zj"; zk: "ff.zk"; zl: "ff.zl"; zm: "ff.zm"; zn: "ff.zn"; zo: "ff.zo"; zp: "ff.zp"; zq: "ff.zq"; zr: "ff.zr"; zs: "ff.zs"; zt: "ff.zt"; zu: "ff.zu"; zv: "ff.zv"; zw: "ff.zw"; zx: "ff.zx"; zy: "ff.zy"; zz: "ff.zz"; }; fg: { aa: "fg.aa"; ab: "fg.ab"; ac: "fg.ac"; ad: "fg.ad"; ae: "fg.ae"; af: "fg.af"; ag: "fg.ag"; ah: "fg.ah"; ai: "fg.ai"; aj: "fg.aj"; ak: "fg.ak"; al: "fg.al"; am: "fg.am"; an: "fg.an"; ao: "fg.ao"; ap: "fg.ap"; aq: "fg.aq"; ar: "fg.ar"; as: "fg.as"; at: "fg.at"; au: "fg.au"; av: "fg.av"; aw: "fg.aw"; ax: "fg.ax"; ay: "fg.ay"; az: "fg.az"; ba: "fg.ba"; bb: "fg.bb"; bc: "fg.bc"; bd: "fg.bd"; be: "fg.be"; bf: "fg.bf"; bg: "fg.bg"; bh: "fg.bh"; bi: "fg.bi"; bj: "fg.bj"; bk: "fg.bk"; bl: "fg.bl"; bm: "fg.bm"; bn: "fg.bn"; bo: "fg.bo"; bp: "fg.bp"; bq: "fg.bq"; br: "fg.br"; bs: "fg.bs"; bt: "fg.bt"; bu: "fg.bu"; bv: "fg.bv"; bw: "fg.bw"; bx: "fg.bx"; by: "fg.by"; bz: "fg.bz"; ca: "fg.ca"; cb: "fg.cb"; cc: "fg.cc"; cd: "fg.cd"; ce: "fg.ce"; cf: "fg.cf"; cg: "fg.cg"; ch: "fg.ch"; ci: "fg.ci"; cj: "fg.cj"; ck: "fg.ck"; cl: "fg.cl"; cm: "fg.cm"; cn: "fg.cn"; co: "fg.co"; cp: "fg.cp"; cq: "fg.cq"; cr: "fg.cr"; cs: "fg.cs"; ct: "fg.ct"; cu: "fg.cu"; cv: "fg.cv"; cw: "fg.cw"; cx: "fg.cx"; cy: "fg.cy"; cz: "fg.cz"; da: "fg.da"; db: "fg.db"; dc: "fg.dc"; dd: "fg.dd"; de: "fg.de"; df: "fg.df"; dg: "fg.dg"; dh: "fg.dh"; di: "fg.di"; dj: "fg.dj"; dk: "fg.dk"; dl: "fg.dl"; dm: "fg.dm"; dn: "fg.dn"; do: "fg.do"; dp: "fg.dp"; dq: "fg.dq"; dr: "fg.dr"; ds: "fg.ds"; dt: "fg.dt"; du: "fg.du"; dv: "fg.dv"; dw: "fg.dw"; dx: "fg.dx"; dy: "fg.dy"; dz: "fg.dz"; ea: "fg.ea"; eb: "fg.eb"; ec: "fg.ec"; ed: "fg.ed"; ee: "fg.ee"; ef: "fg.ef"; eg: "fg.eg"; eh: "fg.eh"; ei: "fg.ei"; ej: "fg.ej"; ek: "fg.ek"; el: "fg.el"; em: "fg.em"; en: "fg.en"; eo: "fg.eo"; ep: "fg.ep"; eq: "fg.eq"; er: "fg.er"; es: "fg.es"; et: "fg.et"; eu: "fg.eu"; ev: "fg.ev"; ew: "fg.ew"; ex: "fg.ex"; ey: "fg.ey"; ez: "fg.ez"; fa: "fg.fa"; fb: "fg.fb"; fc: "fg.fc"; fd: "fg.fd"; fe: "fg.fe"; ff: "fg.ff"; fg: "fg.fg"; fh: "fg.fh"; fi: "fg.fi"; fj: "fg.fj"; fk: "fg.fk"; fl: "fg.fl"; fm: "fg.fm"; fn: "fg.fn"; fo: "fg.fo"; fp: "fg.fp"; fq: "fg.fq"; fr: "fg.fr"; fs: "fg.fs"; ft: "fg.ft"; fu: "fg.fu"; fv: "fg.fv"; fw: "fg.fw"; fx: "fg.fx"; fy: "fg.fy"; fz: "fg.fz"; ga: "fg.ga"; gb: "fg.gb"; gc: "fg.gc"; gd: "fg.gd"; ge: "fg.ge"; gf: "fg.gf"; gg: "fg.gg"; gh: "fg.gh"; gi: "fg.gi"; gj: "fg.gj"; gk: "fg.gk"; gl: "fg.gl"; gm: "fg.gm"; gn: "fg.gn"; go: "fg.go"; gp: "fg.gp"; gq: "fg.gq"; gr: "fg.gr"; gs: "fg.gs"; gt: "fg.gt"; gu: "fg.gu"; gv: "fg.gv"; gw: "fg.gw"; gx: "fg.gx"; gy: "fg.gy"; gz: "fg.gz"; ha: "fg.ha"; hb: "fg.hb"; hc: "fg.hc"; hd: "fg.hd"; he: "fg.he"; hf: "fg.hf"; hg: "fg.hg"; hh: "fg.hh"; hi: "fg.hi"; hj: "fg.hj"; hk: "fg.hk"; hl: "fg.hl"; hm: "fg.hm"; hn: "fg.hn"; ho: "fg.ho"; hp: "fg.hp"; hq: "fg.hq"; hr: "fg.hr"; hs: "fg.hs"; ht: "fg.ht"; hu: "fg.hu"; hv: "fg.hv"; hw: "fg.hw"; hx: "fg.hx"; hy: "fg.hy"; hz: "fg.hz"; ia: "fg.ia"; ib: "fg.ib"; ic: "fg.ic"; id: "fg.id"; ie: "fg.ie"; if: "fg.if"; ig: "fg.ig"; ih: "fg.ih"; ii: "fg.ii"; ij: "fg.ij"; ik: "fg.ik"; il: "fg.il"; im: "fg.im"; in: "fg.in"; io: "fg.io"; ip: "fg.ip"; iq: "fg.iq"; ir: "fg.ir"; is: "fg.is"; it: "fg.it"; iu: "fg.iu"; iv: "fg.iv"; iw: "fg.iw"; ix: "fg.ix"; iy: "fg.iy"; iz: "fg.iz"; ja: "fg.ja"; jb: "fg.jb"; jc: "fg.jc"; jd: "fg.jd"; je: "fg.je"; jf: "fg.jf"; jg: "fg.jg"; jh: "fg.jh"; ji: "fg.ji"; jj: "fg.jj"; jk: "fg.jk"; jl: "fg.jl"; jm: "fg.jm"; jn: "fg.jn"; jo: "fg.jo"; jp: "fg.jp"; jq: "fg.jq"; jr: "fg.jr"; js: "fg.js"; jt: "fg.jt"; ju: "fg.ju"; jv: "fg.jv"; jw: "fg.jw"; jx: "fg.jx"; jy: "fg.jy"; jz: "fg.jz"; ka: "fg.ka"; kb: "fg.kb"; kc: "fg.kc"; kd: "fg.kd"; ke: "fg.ke"; kf: "fg.kf"; kg: "fg.kg"; kh: "fg.kh"; ki: "fg.ki"; kj: "fg.kj"; kk: "fg.kk"; kl: "fg.kl"; km: "fg.km"; kn: "fg.kn"; ko: "fg.ko"; kp: "fg.kp"; kq: "fg.kq"; kr: "fg.kr"; ks: "fg.ks"; kt: "fg.kt"; ku: "fg.ku"; kv: "fg.kv"; kw: "fg.kw"; kx: "fg.kx"; ky: "fg.ky"; kz: "fg.kz"; la: "fg.la"; lb: "fg.lb"; lc: "fg.lc"; ld: "fg.ld"; le: "fg.le"; lf: "fg.lf"; lg: "fg.lg"; lh: "fg.lh"; li: "fg.li"; lj: "fg.lj"; lk: "fg.lk"; ll: "fg.ll"; lm: "fg.lm"; ln: "fg.ln"; lo: "fg.lo"; lp: "fg.lp"; lq: "fg.lq"; lr: "fg.lr"; ls: "fg.ls"; lt: "fg.lt"; lu: "fg.lu"; lv: "fg.lv"; lw: "fg.lw"; lx: "fg.lx"; ly: "fg.ly"; lz: "fg.lz"; ma: "fg.ma"; mb: "fg.mb"; mc: "fg.mc"; md: "fg.md"; me: "fg.me"; mf: "fg.mf"; mg: "fg.mg"; mh: "fg.mh"; mi: "fg.mi"; mj: "fg.mj"; mk: "fg.mk"; ml: "fg.ml"; mm: "fg.mm"; mn: "fg.mn"; mo: "fg.mo"; mp: "fg.mp"; mq: "fg.mq"; mr: "fg.mr"; ms: "fg.ms"; mt: "fg.mt"; mu: "fg.mu"; mv: "fg.mv"; mw: "fg.mw"; mx: "fg.mx"; my: "fg.my"; mz: "fg.mz"; na: "fg.na"; nb: "fg.nb"; nc: "fg.nc"; nd: "fg.nd"; ne: "fg.ne"; nf: "fg.nf"; ng: "fg.ng"; nh: "fg.nh"; ni: "fg.ni"; nj: "fg.nj"; nk: "fg.nk"; nl: "fg.nl"; nm: "fg.nm"; nn: "fg.nn"; no: "fg.no"; np: "fg.np"; nq: "fg.nq"; nr: "fg.nr"; ns: "fg.ns"; nt: "fg.nt"; nu: "fg.nu"; nv: "fg.nv"; nw: "fg.nw"; nx: "fg.nx"; ny: "fg.ny"; nz: "fg.nz"; oa: "fg.oa"; ob: "fg.ob"; oc: "fg.oc"; od: "fg.od"; oe: "fg.oe"; of: "fg.of"; og: "fg.og"; oh: "fg.oh"; oi: "fg.oi"; oj: "fg.oj"; ok: "fg.ok"; ol: "fg.ol"; om: "fg.om"; on: "fg.on"; oo: "fg.oo"; op: "fg.op"; oq: "fg.oq"; or: "fg.or"; os: "fg.os"; ot: "fg.ot"; ou: "fg.ou"; ov: "fg.ov"; ow: "fg.ow"; ox: "fg.ox"; oy: "fg.oy"; oz: "fg.oz"; pa: "fg.pa"; pb: "fg.pb"; pc: "fg.pc"; pd: "fg.pd"; pe: "fg.pe"; pf: "fg.pf"; pg: "fg.pg"; ph: "fg.ph"; pi: "fg.pi"; pj: "fg.pj"; pk: "fg.pk"; pl: "fg.pl"; pm: "fg.pm"; pn: "fg.pn"; po: "fg.po"; pp: "fg.pp"; pq: "fg.pq"; pr: "fg.pr"; ps: "fg.ps"; pt: "fg.pt"; pu: "fg.pu"; pv: "fg.pv"; pw: "fg.pw"; px: "fg.px"; py: "fg.py"; pz: "fg.pz"; qa: "fg.qa"; qb: "fg.qb"; qc: "fg.qc"; qd: "fg.qd"; qe: "fg.qe"; qf: "fg.qf"; qg: "fg.qg"; qh: "fg.qh"; qi: "fg.qi"; qj: "fg.qj"; qk: "fg.qk"; ql: "fg.ql"; qm: "fg.qm"; qn: "fg.qn"; qo: "fg.qo"; qp: "fg.qp"; qq: "fg.qq"; qr: "fg.qr"; qs: "fg.qs"; qt: "fg.qt"; qu: "fg.qu"; qv: "fg.qv"; qw: "fg.qw"; qx: "fg.qx"; qy: "fg.qy"; qz: "fg.qz"; ra: "fg.ra"; rb: "fg.rb"; rc: "fg.rc"; rd: "fg.rd"; re: "fg.re"; rf: "fg.rf"; rg: "fg.rg"; rh: "fg.rh"; ri: "fg.ri"; rj: "fg.rj"; rk: "fg.rk"; rl: "fg.rl"; rm: "fg.rm"; rn: "fg.rn"; ro: "fg.ro"; rp: "fg.rp"; rq: "fg.rq"; rr: "fg.rr"; rs: "fg.rs"; rt: "fg.rt"; ru: "fg.ru"; rv: "fg.rv"; rw: "fg.rw"; rx: "fg.rx"; ry: "fg.ry"; rz: "fg.rz"; sa: "fg.sa"; sb: "fg.sb"; sc: "fg.sc"; sd: "fg.sd"; se: "fg.se"; sf: "fg.sf"; sg: "fg.sg"; sh: "fg.sh"; si: "fg.si"; sj: "fg.sj"; sk: "fg.sk"; sl: "fg.sl"; sm: "fg.sm"; sn: "fg.sn"; so: "fg.so"; sp: "fg.sp"; sq: "fg.sq"; sr: "fg.sr"; ss: "fg.ss"; st: "fg.st"; su: "fg.su"; sv: "fg.sv"; sw: "fg.sw"; sx: "fg.sx"; sy: "fg.sy"; sz: "fg.sz"; ta: "fg.ta"; tb: "fg.tb"; tc: "fg.tc"; td: "fg.td"; te: "fg.te"; tf: "fg.tf"; tg: "fg.tg"; th: "fg.th"; ti: "fg.ti"; tj: "fg.tj"; tk: "fg.tk"; tl: "fg.tl"; tm: "fg.tm"; tn: "fg.tn"; to: "fg.to"; tp: "fg.tp"; tq: "fg.tq"; tr: "fg.tr"; ts: "fg.ts"; tt: "fg.tt"; tu: "fg.tu"; tv: "fg.tv"; tw: "fg.tw"; tx: "fg.tx"; ty: "fg.ty"; tz: "fg.tz"; ua: "fg.ua"; ub: "fg.ub"; uc: "fg.uc"; ud: "fg.ud"; ue: "fg.ue"; uf: "fg.uf"; ug: "fg.ug"; uh: "fg.uh"; ui: "fg.ui"; uj: "fg.uj"; uk: "fg.uk"; ul: "fg.ul"; um: "fg.um"; un: "fg.un"; uo: "fg.uo"; up: "fg.up"; uq: "fg.uq"; ur: "fg.ur"; us: "fg.us"; ut: "fg.ut"; uu: "fg.uu"; uv: "fg.uv"; uw: "fg.uw"; ux: "fg.ux"; uy: "fg.uy"; uz: "fg.uz"; va: "fg.va"; vb: "fg.vb"; vc: "fg.vc"; vd: "fg.vd"; ve: "fg.ve"; vf: "fg.vf"; vg: "fg.vg"; vh: "fg.vh"; vi: "fg.vi"; vj: "fg.vj"; vk: "fg.vk"; vl: "fg.vl"; vm: "fg.vm"; vn: "fg.vn"; vo: "fg.vo"; vp: "fg.vp"; vq: "fg.vq"; vr: "fg.vr"; vs: "fg.vs"; vt: "fg.vt"; vu: "fg.vu"; vv: "fg.vv"; vw: "fg.vw"; vx: "fg.vx"; vy: "fg.vy"; vz: "fg.vz"; wa: "fg.wa"; wb: "fg.wb"; wc: "fg.wc"; wd: "fg.wd"; we: "fg.we"; wf: "fg.wf"; wg: "fg.wg"; wh: "fg.wh"; wi: "fg.wi"; wj: "fg.wj"; wk: "fg.wk"; wl: "fg.wl"; wm: "fg.wm"; wn: "fg.wn"; wo: "fg.wo"; wp: "fg.wp"; wq: "fg.wq"; wr: "fg.wr"; ws: "fg.ws"; wt: "fg.wt"; wu: "fg.wu"; wv: "fg.wv"; ww: "fg.ww"; wx: "fg.wx"; wy: "fg.wy"; wz: "fg.wz"; xa: "fg.xa"; xb: "fg.xb"; xc: "fg.xc"; xd: "fg.xd"; xe: "fg.xe"; xf: "fg.xf"; xg: "fg.xg"; xh: "fg.xh"; xi: "fg.xi"; xj: "fg.xj"; xk: "fg.xk"; xl: "fg.xl"; xm: "fg.xm"; xn: "fg.xn"; xo: "fg.xo"; xp: "fg.xp"; xq: "fg.xq"; xr: "fg.xr"; xs: "fg.xs"; xt: "fg.xt"; xu: "fg.xu"; xv: "fg.xv"; xw: "fg.xw"; xx: "fg.xx"; xy: "fg.xy"; xz: "fg.xz"; ya: "fg.ya"; yb: "fg.yb"; yc: "fg.yc"; yd: "fg.yd"; ye: "fg.ye"; yf: "fg.yf"; yg: "fg.yg"; yh: "fg.yh"; yi: "fg.yi"; yj: "fg.yj"; yk: "fg.yk"; yl: "fg.yl"; ym: "fg.ym"; yn: "fg.yn"; yo: "fg.yo"; yp: "fg.yp"; yq: "fg.yq"; yr: "fg.yr"; ys: "fg.ys"; yt: "fg.yt"; yu: "fg.yu"; yv: "fg.yv"; yw: "fg.yw"; yx: "fg.yx"; yy: "fg.yy"; yz: "fg.yz"; za: "fg.za"; zb: "fg.zb"; zc: "fg.zc"; zd: "fg.zd"; ze: "fg.ze"; zf: "fg.zf"; zg: "fg.zg"; zh: "fg.zh"; zi: "fg.zi"; zj: "fg.zj"; zk: "fg.zk"; zl: "fg.zl"; zm: "fg.zm"; zn: "fg.zn"; zo: "fg.zo"; zp: "fg.zp"; zq: "fg.zq"; zr: "fg.zr"; zs: "fg.zs"; zt: "fg.zt"; zu: "fg.zu"; zv: "fg.zv"; zw: "fg.zw"; zx: "fg.zx"; zy: "fg.zy"; zz: "fg.zz"; }; fh: { aa: "fh.aa"; ab: "fh.ab"; ac: "fh.ac"; ad: "fh.ad"; ae: "fh.ae"; af: "fh.af"; ag: "fh.ag"; ah: "fh.ah"; ai: "fh.ai"; aj: "fh.aj"; ak: "fh.ak"; al: "fh.al"; am: "fh.am"; an: "fh.an"; ao: "fh.ao"; ap: "fh.ap"; aq: "fh.aq"; ar: "fh.ar"; as: "fh.as"; at: "fh.at"; au: "fh.au"; av: "fh.av"; aw: "fh.aw"; ax: "fh.ax"; ay: "fh.ay"; az: "fh.az"; ba: "fh.ba"; bb: "fh.bb"; bc: "fh.bc"; bd: "fh.bd"; be: "fh.be"; bf: "fh.bf"; bg: "fh.bg"; bh: "fh.bh"; bi: "fh.bi"; bj: "fh.bj"; bk: "fh.bk"; bl: "fh.bl"; bm: "fh.bm"; bn: "fh.bn"; bo: "fh.bo"; bp: "fh.bp"; bq: "fh.bq"; br: "fh.br"; bs: "fh.bs"; bt: "fh.bt"; bu: "fh.bu"; bv: "fh.bv"; bw: "fh.bw"; bx: "fh.bx"; by: "fh.by"; bz: "fh.bz"; ca: "fh.ca"; cb: "fh.cb"; cc: "fh.cc"; cd: "fh.cd"; ce: "fh.ce"; cf: "fh.cf"; cg: "fh.cg"; ch: "fh.ch"; ci: "fh.ci"; cj: "fh.cj"; ck: "fh.ck"; cl: "fh.cl"; cm: "fh.cm"; cn: "fh.cn"; co: "fh.co"; cp: "fh.cp"; cq: "fh.cq"; cr: "fh.cr"; cs: "fh.cs"; ct: "fh.ct"; cu: "fh.cu"; cv: "fh.cv"; cw: "fh.cw"; cx: "fh.cx"; cy: "fh.cy"; cz: "fh.cz"; da: "fh.da"; db: "fh.db"; dc: "fh.dc"; dd: "fh.dd"; de: "fh.de"; df: "fh.df"; dg: "fh.dg"; dh: "fh.dh"; di: "fh.di"; dj: "fh.dj"; dk: "fh.dk"; dl: "fh.dl"; dm: "fh.dm"; dn: "fh.dn"; do: "fh.do"; dp: "fh.dp"; dq: "fh.dq"; dr: "fh.dr"; ds: "fh.ds"; dt: "fh.dt"; du: "fh.du"; dv: "fh.dv"; dw: "fh.dw"; dx: "fh.dx"; dy: "fh.dy"; dz: "fh.dz"; ea: "fh.ea"; eb: "fh.eb"; ec: "fh.ec"; ed: "fh.ed"; ee: "fh.ee"; ef: "fh.ef"; eg: "fh.eg"; eh: "fh.eh"; ei: "fh.ei"; ej: "fh.ej"; ek: "fh.ek"; el: "fh.el"; em: "fh.em"; en: "fh.en"; eo: "fh.eo"; ep: "fh.ep"; eq: "fh.eq"; er: "fh.er"; es: "fh.es"; et: "fh.et"; eu: "fh.eu"; ev: "fh.ev"; ew: "fh.ew"; ex: "fh.ex"; ey: "fh.ey"; ez: "fh.ez"; fa: "fh.fa"; fb: "fh.fb"; fc: "fh.fc"; fd: "fh.fd"; fe: "fh.fe"; ff: "fh.ff"; fg: "fh.fg"; fh: "fh.fh"; fi: "fh.fi"; fj: "fh.fj"; fk: "fh.fk"; fl: "fh.fl"; fm: "fh.fm"; fn: "fh.fn"; fo: "fh.fo"; fp: "fh.fp"; fq: "fh.fq"; fr: "fh.fr"; fs: "fh.fs"; ft: "fh.ft"; fu: "fh.fu"; fv: "fh.fv"; fw: "fh.fw"; fx: "fh.fx"; fy: "fh.fy"; fz: "fh.fz"; ga: "fh.ga"; gb: "fh.gb"; gc: "fh.gc"; gd: "fh.gd"; ge: "fh.ge"; gf: "fh.gf"; gg: "fh.gg"; gh: "fh.gh"; gi: "fh.gi"; gj: "fh.gj"; gk: "fh.gk"; gl: "fh.gl"; gm: "fh.gm"; gn: "fh.gn"; go: "fh.go"; gp: "fh.gp"; gq: "fh.gq"; gr: "fh.gr"; gs: "fh.gs"; gt: "fh.gt"; gu: "fh.gu"; gv: "fh.gv"; gw: "fh.gw"; gx: "fh.gx"; gy: "fh.gy"; gz: "fh.gz"; ha: "fh.ha"; hb: "fh.hb"; hc: "fh.hc"; hd: "fh.hd"; he: "fh.he"; hf: "fh.hf"; hg: "fh.hg"; hh: "fh.hh"; hi: "fh.hi"; hj: "fh.hj"; hk: "fh.hk"; hl: "fh.hl"; hm: "fh.hm"; hn: "fh.hn"; ho: "fh.ho"; hp: "fh.hp"; hq: "fh.hq"; hr: "fh.hr"; hs: "fh.hs"; ht: "fh.ht"; hu: "fh.hu"; hv: "fh.hv"; hw: "fh.hw"; hx: "fh.hx"; hy: "fh.hy"; hz: "fh.hz"; ia: "fh.ia"; ib: "fh.ib"; ic: "fh.ic"; id: "fh.id"; ie: "fh.ie"; if: "fh.if"; ig: "fh.ig"; ih: "fh.ih"; ii: "fh.ii"; ij: "fh.ij"; ik: "fh.ik"; il: "fh.il"; im: "fh.im"; in: "fh.in"; io: "fh.io"; ip: "fh.ip"; iq: "fh.iq"; ir: "fh.ir"; is: "fh.is"; it: "fh.it"; iu: "fh.iu"; iv: "fh.iv"; iw: "fh.iw"; ix: "fh.ix"; iy: "fh.iy"; iz: "fh.iz"; ja: "fh.ja"; jb: "fh.jb"; jc: "fh.jc"; jd: "fh.jd"; je: "fh.je"; jf: "fh.jf"; jg: "fh.jg"; jh: "fh.jh"; ji: "fh.ji"; jj: "fh.jj"; jk: "fh.jk"; jl: "fh.jl"; jm: "fh.jm"; jn: "fh.jn"; jo: "fh.jo"; jp: "fh.jp"; jq: "fh.jq"; jr: "fh.jr"; js: "fh.js"; jt: "fh.jt"; ju: "fh.ju"; jv: "fh.jv"; jw: "fh.jw"; jx: "fh.jx"; jy: "fh.jy"; jz: "fh.jz"; ka: "fh.ka"; kb: "fh.kb"; kc: "fh.kc"; kd: "fh.kd"; ke: "fh.ke"; kf: "fh.kf"; kg: "fh.kg"; kh: "fh.kh"; ki: "fh.ki"; kj: "fh.kj"; kk: "fh.kk"; kl: "fh.kl"; km: "fh.km"; kn: "fh.kn"; ko: "fh.ko"; kp: "fh.kp"; kq: "fh.kq"; kr: "fh.kr"; ks: "fh.ks"; kt: "fh.kt"; ku: "fh.ku"; kv: "fh.kv"; kw: "fh.kw"; kx: "fh.kx"; ky: "fh.ky"; kz: "fh.kz"; la: "fh.la"; lb: "fh.lb"; lc: "fh.lc"; ld: "fh.ld"; le: "fh.le"; lf: "fh.lf"; lg: "fh.lg"; lh: "fh.lh"; li: "fh.li"; lj: "fh.lj"; lk: "fh.lk"; ll: "fh.ll"; lm: "fh.lm"; ln: "fh.ln"; lo: "fh.lo"; lp: "fh.lp"; lq: "fh.lq"; lr: "fh.lr"; ls: "fh.ls"; lt: "fh.lt"; lu: "fh.lu"; lv: "fh.lv"; lw: "fh.lw"; lx: "fh.lx"; ly: "fh.ly"; lz: "fh.lz"; ma: "fh.ma"; mb: "fh.mb"; mc: "fh.mc"; md: "fh.md"; me: "fh.me"; mf: "fh.mf"; mg: "fh.mg"; mh: "fh.mh"; mi: "fh.mi"; mj: "fh.mj"; mk: "fh.mk"; ml: "fh.ml"; mm: "fh.mm"; mn: "fh.mn"; mo: "fh.mo"; mp: "fh.mp"; mq: "fh.mq"; mr: "fh.mr"; ms: "fh.ms"; mt: "fh.mt"; mu: "fh.mu"; mv: "fh.mv"; mw: "fh.mw"; mx: "fh.mx"; my: "fh.my"; mz: "fh.mz"; na: "fh.na"; nb: "fh.nb"; nc: "fh.nc"; nd: "fh.nd"; ne: "fh.ne"; nf: "fh.nf"; ng: "fh.ng"; nh: "fh.nh"; ni: "fh.ni"; nj: "fh.nj"; nk: "fh.nk"; nl: "fh.nl"; nm: "fh.nm"; nn: "fh.nn"; no: "fh.no"; np: "fh.np"; nq: "fh.nq"; nr: "fh.nr"; ns: "fh.ns"; nt: "fh.nt"; nu: "fh.nu"; nv: "fh.nv"; nw: "fh.nw"; nx: "fh.nx"; ny: "fh.ny"; nz: "fh.nz"; oa: "fh.oa"; ob: "fh.ob"; oc: "fh.oc"; od: "fh.od"; oe: "fh.oe"; of: "fh.of"; og: "fh.og"; oh: "fh.oh"; oi: "fh.oi"; oj: "fh.oj"; ok: "fh.ok"; ol: "fh.ol"; om: "fh.om"; on: "fh.on"; oo: "fh.oo"; op: "fh.op"; oq: "fh.oq"; or: "fh.or"; os: "fh.os"; ot: "fh.ot"; ou: "fh.ou"; ov: "fh.ov"; ow: "fh.ow"; ox: "fh.ox"; oy: "fh.oy"; oz: "fh.oz"; pa: "fh.pa"; pb: "fh.pb"; pc: "fh.pc"; pd: "fh.pd"; pe: "fh.pe"; pf: "fh.pf"; pg: "fh.pg"; ph: "fh.ph"; pi: "fh.pi"; pj: "fh.pj"; pk: "fh.pk"; pl: "fh.pl"; pm: "fh.pm"; pn: "fh.pn"; po: "fh.po"; pp: "fh.pp"; pq: "fh.pq"; pr: "fh.pr"; ps: "fh.ps"; pt: "fh.pt"; pu: "fh.pu"; pv: "fh.pv"; pw: "fh.pw"; px: "fh.px"; py: "fh.py"; pz: "fh.pz"; qa: "fh.qa"; qb: "fh.qb"; qc: "fh.qc"; qd: "fh.qd"; qe: "fh.qe"; qf: "fh.qf"; qg: "fh.qg"; qh: "fh.qh"; qi: "fh.qi"; qj: "fh.qj"; qk: "fh.qk"; ql: "fh.ql"; qm: "fh.qm"; qn: "fh.qn"; qo: "fh.qo"; qp: "fh.qp"; qq: "fh.qq"; qr: "fh.qr"; qs: "fh.qs"; qt: "fh.qt"; qu: "fh.qu"; qv: "fh.qv"; qw: "fh.qw"; qx: "fh.qx"; qy: "fh.qy"; qz: "fh.qz"; ra: "fh.ra"; rb: "fh.rb"; rc: "fh.rc"; rd: "fh.rd"; re: "fh.re"; rf: "fh.rf"; rg: "fh.rg"; rh: "fh.rh"; ri: "fh.ri"; rj: "fh.rj"; rk: "fh.rk"; rl: "fh.rl"; rm: "fh.rm"; rn: "fh.rn"; ro: "fh.ro"; rp: "fh.rp"; rq: "fh.rq"; rr: "fh.rr"; rs: "fh.rs"; rt: "fh.rt"; ru: "fh.ru"; rv: "fh.rv"; rw: "fh.rw"; rx: "fh.rx"; ry: "fh.ry"; rz: "fh.rz"; sa: "fh.sa"; sb: "fh.sb"; sc: "fh.sc"; sd: "fh.sd"; se: "fh.se"; sf: "fh.sf"; sg: "fh.sg"; sh: "fh.sh"; si: "fh.si"; sj: "fh.sj"; sk: "fh.sk"; sl: "fh.sl"; sm: "fh.sm"; sn: "fh.sn"; so: "fh.so"; sp: "fh.sp"; sq: "fh.sq"; sr: "fh.sr"; ss: "fh.ss"; st: "fh.st"; su: "fh.su"; sv: "fh.sv"; sw: "fh.sw"; sx: "fh.sx"; sy: "fh.sy"; sz: "fh.sz"; ta: "fh.ta"; tb: "fh.tb"; tc: "fh.tc"; td: "fh.td"; te: "fh.te"; tf: "fh.tf"; tg: "fh.tg"; th: "fh.th"; ti: "fh.ti"; tj: "fh.tj"; tk: "fh.tk"; tl: "fh.tl"; tm: "fh.tm"; tn: "fh.tn"; to: "fh.to"; tp: "fh.tp"; tq: "fh.tq"; tr: "fh.tr"; ts: "fh.ts"; tt: "fh.tt"; tu: "fh.tu"; tv: "fh.tv"; tw: "fh.tw"; tx: "fh.tx"; ty: "fh.ty"; tz: "fh.tz"; ua: "fh.ua"; ub: "fh.ub"; uc: "fh.uc"; ud: "fh.ud"; ue: "fh.ue"; uf: "fh.uf"; ug: "fh.ug"; uh: "fh.uh"; ui: "fh.ui"; uj: "fh.uj"; uk: "fh.uk"; ul: "fh.ul"; um: "fh.um"; un: "fh.un"; uo: "fh.uo"; up: "fh.up"; uq: "fh.uq"; ur: "fh.ur"; us: "fh.us"; ut: "fh.ut"; uu: "fh.uu"; uv: "fh.uv"; uw: "fh.uw"; ux: "fh.ux"; uy: "fh.uy"; uz: "fh.uz"; va: "fh.va"; vb: "fh.vb"; vc: "fh.vc"; vd: "fh.vd"; ve: "fh.ve"; vf: "fh.vf"; vg: "fh.vg"; vh: "fh.vh"; vi: "fh.vi"; vj: "fh.vj"; vk: "fh.vk"; vl: "fh.vl"; vm: "fh.vm"; vn: "fh.vn"; vo: "fh.vo"; vp: "fh.vp"; vq: "fh.vq"; vr: "fh.vr"; vs: "fh.vs"; vt: "fh.vt"; vu: "fh.vu"; vv: "fh.vv"; vw: "fh.vw"; vx: "fh.vx"; vy: "fh.vy"; vz: "fh.vz"; wa: "fh.wa"; wb: "fh.wb"; wc: "fh.wc"; wd: "fh.wd"; we: "fh.we"; wf: "fh.wf"; wg: "fh.wg"; wh: "fh.wh"; wi: "fh.wi"; wj: "fh.wj"; wk: "fh.wk"; wl: "fh.wl"; wm: "fh.wm"; wn: "fh.wn"; wo: "fh.wo"; wp: "fh.wp"; wq: "fh.wq"; wr: "fh.wr"; ws: "fh.ws"; wt: "fh.wt"; wu: "fh.wu"; wv: "fh.wv"; ww: "fh.ww"; wx: "fh.wx"; wy: "fh.wy"; wz: "fh.wz"; xa: "fh.xa"; xb: "fh.xb"; xc: "fh.xc"; xd: "fh.xd"; xe: "fh.xe"; xf: "fh.xf"; xg: "fh.xg"; xh: "fh.xh"; xi: "fh.xi"; xj: "fh.xj"; xk: "fh.xk"; xl: "fh.xl"; xm: "fh.xm"; xn: "fh.xn"; xo: "fh.xo"; xp: "fh.xp"; xq: "fh.xq"; xr: "fh.xr"; xs: "fh.xs"; xt: "fh.xt"; xu: "fh.xu"; xv: "fh.xv"; xw: "fh.xw"; xx: "fh.xx"; xy: "fh.xy"; xz: "fh.xz"; ya: "fh.ya"; yb: "fh.yb"; yc: "fh.yc"; yd: "fh.yd"; ye: "fh.ye"; yf: "fh.yf"; yg: "fh.yg"; yh: "fh.yh"; yi: "fh.yi"; yj: "fh.yj"; yk: "fh.yk"; yl: "fh.yl"; ym: "fh.ym"; yn: "fh.yn"; yo: "fh.yo"; yp: "fh.yp"; yq: "fh.yq"; yr: "fh.yr"; ys: "fh.ys"; yt: "fh.yt"; yu: "fh.yu"; yv: "fh.yv"; yw: "fh.yw"; yx: "fh.yx"; yy: "fh.yy"; yz: "fh.yz"; za: "fh.za"; zb: "fh.zb"; zc: "fh.zc"; zd: "fh.zd"; ze: "fh.ze"; zf: "fh.zf"; zg: "fh.zg"; zh: "fh.zh"; zi: "fh.zi"; zj: "fh.zj"; zk: "fh.zk"; zl: "fh.zl"; zm: "fh.zm"; zn: "fh.zn"; zo: "fh.zo"; zp: "fh.zp"; zq: "fh.zq"; zr: "fh.zr"; zs: "fh.zs"; zt: "fh.zt"; zu: "fh.zu"; zv: "fh.zv"; zw: "fh.zw"; zx: "fh.zx"; zy: "fh.zy"; zz: "fh.zz"; }; fi: { aa: "fi.aa"; ab: "fi.ab"; ac: "fi.ac"; ad: "fi.ad"; ae: "fi.ae"; af: "fi.af"; ag: "fi.ag"; ah: "fi.ah"; ai: "fi.ai"; aj: "fi.aj"; ak: "fi.ak"; al: "fi.al"; am: "fi.am"; an: "fi.an"; ao: "fi.ao"; ap: "fi.ap"; aq: "fi.aq"; ar: "fi.ar"; as: "fi.as"; at: "fi.at"; au: "fi.au"; av: "fi.av"; aw: "fi.aw"; ax: "fi.ax"; ay: "fi.ay"; az: "fi.az"; ba: "fi.ba"; bb: "fi.bb"; bc: "fi.bc"; bd: "fi.bd"; be: "fi.be"; bf: "fi.bf"; bg: "fi.bg"; bh: "fi.bh"; bi: "fi.bi"; bj: "fi.bj"; bk: "fi.bk"; bl: "fi.bl"; bm: "fi.bm"; bn: "fi.bn"; bo: "fi.bo"; bp: "fi.bp"; bq: "fi.bq"; br: "fi.br"; bs: "fi.bs"; bt: "fi.bt"; bu: "fi.bu"; bv: "fi.bv"; bw: "fi.bw"; bx: "fi.bx"; by: "fi.by"; bz: "fi.bz"; ca: "fi.ca"; cb: "fi.cb"; cc: "fi.cc"; cd: "fi.cd"; ce: "fi.ce"; cf: "fi.cf"; cg: "fi.cg"; ch: "fi.ch"; ci: "fi.ci"; cj: "fi.cj"; ck: "fi.ck"; cl: "fi.cl"; cm: "fi.cm"; cn: "fi.cn"; co: "fi.co"; cp: "fi.cp"; cq: "fi.cq"; cr: "fi.cr"; cs: "fi.cs"; ct: "fi.ct"; cu: "fi.cu"; cv: "fi.cv"; cw: "fi.cw"; cx: "fi.cx"; cy: "fi.cy"; cz: "fi.cz"; da: "fi.da"; db: "fi.db"; dc: "fi.dc"; dd: "fi.dd"; de: "fi.de"; df: "fi.df"; dg: "fi.dg"; dh: "fi.dh"; di: "fi.di"; dj: "fi.dj"; dk: "fi.dk"; dl: "fi.dl"; dm: "fi.dm"; dn: "fi.dn"; do: "fi.do"; dp: "fi.dp"; dq: "fi.dq"; dr: "fi.dr"; ds: "fi.ds"; dt: "fi.dt"; du: "fi.du"; dv: "fi.dv"; dw: "fi.dw"; dx: "fi.dx"; dy: "fi.dy"; dz: "fi.dz"; ea: "fi.ea"; eb: "fi.eb"; ec: "fi.ec"; ed: "fi.ed"; ee: "fi.ee"; ef: "fi.ef"; eg: "fi.eg"; eh: "fi.eh"; ei: "fi.ei"; ej: "fi.ej"; ek: "fi.ek"; el: "fi.el"; em: "fi.em"; en: "fi.en"; eo: "fi.eo"; ep: "fi.ep"; eq: "fi.eq"; er: "fi.er"; es: "fi.es"; et: "fi.et"; eu: "fi.eu"; ev: "fi.ev"; ew: "fi.ew"; ex: "fi.ex"; ey: "fi.ey"; ez: "fi.ez"; fa: "fi.fa"; fb: "fi.fb"; fc: "fi.fc"; fd: "fi.fd"; fe: "fi.fe"; ff: "fi.ff"; fg: "fi.fg"; fh: "fi.fh"; fi: "fi.fi"; fj: "fi.fj"; fk: "fi.fk"; fl: "fi.fl"; fm: "fi.fm"; fn: "fi.fn"; fo: "fi.fo"; fp: "fi.fp"; fq: "fi.fq"; fr: "fi.fr"; fs: "fi.fs"; ft: "fi.ft"; fu: "fi.fu"; fv: "fi.fv"; fw: "fi.fw"; fx: "fi.fx"; fy: "fi.fy"; fz: "fi.fz"; ga: "fi.ga"; gb: "fi.gb"; gc: "fi.gc"; gd: "fi.gd"; ge: "fi.ge"; gf: "fi.gf"; gg: "fi.gg"; gh: "fi.gh"; gi: "fi.gi"; gj: "fi.gj"; gk: "fi.gk"; gl: "fi.gl"; gm: "fi.gm"; gn: "fi.gn"; go: "fi.go"; gp: "fi.gp"; gq: "fi.gq"; gr: "fi.gr"; gs: "fi.gs"; gt: "fi.gt"; gu: "fi.gu"; gv: "fi.gv"; gw: "fi.gw"; gx: "fi.gx"; gy: "fi.gy"; gz: "fi.gz"; ha: "fi.ha"; hb: "fi.hb"; hc: "fi.hc"; hd: "fi.hd"; he: "fi.he"; hf: "fi.hf"; hg: "fi.hg"; hh: "fi.hh"; hi: "fi.hi"; hj: "fi.hj"; hk: "fi.hk"; hl: "fi.hl"; hm: "fi.hm"; hn: "fi.hn"; ho: "fi.ho"; hp: "fi.hp"; hq: "fi.hq"; hr: "fi.hr"; hs: "fi.hs"; ht: "fi.ht"; hu: "fi.hu"; hv: "fi.hv"; hw: "fi.hw"; hx: "fi.hx"; hy: "fi.hy"; hz: "fi.hz"; ia: "fi.ia"; ib: "fi.ib"; ic: "fi.ic"; id: "fi.id"; ie: "fi.ie"; if: "fi.if"; ig: "fi.ig"; ih: "fi.ih"; ii: "fi.ii"; ij: "fi.ij"; ik: "fi.ik"; il: "fi.il"; im: "fi.im"; in: "fi.in"; io: "fi.io"; ip: "fi.ip"; iq: "fi.iq"; ir: "fi.ir"; is: "fi.is"; it: "fi.it"; iu: "fi.iu"; iv: "fi.iv"; iw: "fi.iw"; ix: "fi.ix"; iy: "fi.iy"; iz: "fi.iz"; ja: "fi.ja"; jb: "fi.jb"; jc: "fi.jc"; jd: "fi.jd"; je: "fi.je"; jf: "fi.jf"; jg: "fi.jg"; jh: "fi.jh"; ji: "fi.ji"; jj: "fi.jj"; jk: "fi.jk"; jl: "fi.jl"; jm: "fi.jm"; jn: "fi.jn"; jo: "fi.jo"; jp: "fi.jp"; jq: "fi.jq"; jr: "fi.jr"; js: "fi.js"; jt: "fi.jt"; ju: "fi.ju"; jv: "fi.jv"; jw: "fi.jw"; jx: "fi.jx"; jy: "fi.jy"; jz: "fi.jz"; ka: "fi.ka"; kb: "fi.kb"; kc: "fi.kc"; kd: "fi.kd"; ke: "fi.ke"; kf: "fi.kf"; kg: "fi.kg"; kh: "fi.kh"; ki: "fi.ki"; kj: "fi.kj"; kk: "fi.kk"; kl: "fi.kl"; km: "fi.km"; kn: "fi.kn"; ko: "fi.ko"; kp: "fi.kp"; kq: "fi.kq"; kr: "fi.kr"; ks: "fi.ks"; kt: "fi.kt"; ku: "fi.ku"; kv: "fi.kv"; kw: "fi.kw"; kx: "fi.kx"; ky: "fi.ky"; kz: "fi.kz"; la: "fi.la"; lb: "fi.lb"; lc: "fi.lc"; ld: "fi.ld"; le: "fi.le"; lf: "fi.lf"; lg: "fi.lg"; lh: "fi.lh"; li: "fi.li"; lj: "fi.lj"; lk: "fi.lk"; ll: "fi.ll"; lm: "fi.lm"; ln: "fi.ln"; lo: "fi.lo"; lp: "fi.lp"; lq: "fi.lq"; lr: "fi.lr"; ls: "fi.ls"; lt: "fi.lt"; lu: "fi.lu"; lv: "fi.lv"; lw: "fi.lw"; lx: "fi.lx"; ly: "fi.ly"; lz: "fi.lz"; ma: "fi.ma"; mb: "fi.mb"; mc: "fi.mc"; md: "fi.md"; me: "fi.me"; mf: "fi.mf"; mg: "fi.mg"; mh: "fi.mh"; mi: "fi.mi"; mj: "fi.mj"; mk: "fi.mk"; ml: "fi.ml"; mm: "fi.mm"; mn: "fi.mn"; mo: "fi.mo"; mp: "fi.mp"; mq: "fi.mq"; mr: "fi.mr"; ms: "fi.ms"; mt: "fi.mt"; mu: "fi.mu"; mv: "fi.mv"; mw: "fi.mw"; mx: "fi.mx"; my: "fi.my"; mz: "fi.mz"; na: "fi.na"; nb: "fi.nb"; nc: "fi.nc"; nd: "fi.nd"; ne: "fi.ne"; nf: "fi.nf"; ng: "fi.ng"; nh: "fi.nh"; ni: "fi.ni"; nj: "fi.nj"; nk: "fi.nk"; nl: "fi.nl"; nm: "fi.nm"; nn: "fi.nn"; no: "fi.no"; np: "fi.np"; nq: "fi.nq"; nr: "fi.nr"; ns: "fi.ns"; nt: "fi.nt"; nu: "fi.nu"; nv: "fi.nv"; nw: "fi.nw"; nx: "fi.nx"; ny: "fi.ny"; nz: "fi.nz"; oa: "fi.oa"; ob: "fi.ob"; oc: "fi.oc"; od: "fi.od"; oe: "fi.oe"; of: "fi.of"; og: "fi.og"; oh: "fi.oh"; oi: "fi.oi"; oj: "fi.oj"; ok: "fi.ok"; ol: "fi.ol"; om: "fi.om"; on: "fi.on"; oo: "fi.oo"; op: "fi.op"; oq: "fi.oq"; or: "fi.or"; os: "fi.os"; ot: "fi.ot"; ou: "fi.ou"; ov: "fi.ov"; ow: "fi.ow"; ox: "fi.ox"; oy: "fi.oy"; oz: "fi.oz"; pa: "fi.pa"; pb: "fi.pb"; pc: "fi.pc"; pd: "fi.pd"; pe: "fi.pe"; pf: "fi.pf"; pg: "fi.pg"; ph: "fi.ph"; pi: "fi.pi"; pj: "fi.pj"; pk: "fi.pk"; pl: "fi.pl"; pm: "fi.pm"; pn: "fi.pn"; po: "fi.po"; pp: "fi.pp"; pq: "fi.pq"; pr: "fi.pr"; ps: "fi.ps"; pt: "fi.pt"; pu: "fi.pu"; pv: "fi.pv"; pw: "fi.pw"; px: "fi.px"; py: "fi.py"; pz: "fi.pz"; qa: "fi.qa"; qb: "fi.qb"; qc: "fi.qc"; qd: "fi.qd"; qe: "fi.qe"; qf: "fi.qf"; qg: "fi.qg"; qh: "fi.qh"; qi: "fi.qi"; qj: "fi.qj"; qk: "fi.qk"; ql: "fi.ql"; qm: "fi.qm"; qn: "fi.qn"; qo: "fi.qo"; qp: "fi.qp"; qq: "fi.qq"; qr: "fi.qr"; qs: "fi.qs"; qt: "fi.qt"; qu: "fi.qu"; qv: "fi.qv"; qw: "fi.qw"; qx: "fi.qx"; qy: "fi.qy"; qz: "fi.qz"; ra: "fi.ra"; rb: "fi.rb"; rc: "fi.rc"; rd: "fi.rd"; re: "fi.re"; rf: "fi.rf"; rg: "fi.rg"; rh: "fi.rh"; ri: "fi.ri"; rj: "fi.rj"; rk: "fi.rk"; rl: "fi.rl"; rm: "fi.rm"; rn: "fi.rn"; ro: "fi.ro"; rp: "fi.rp"; rq: "fi.rq"; rr: "fi.rr"; rs: "fi.rs"; rt: "fi.rt"; ru: "fi.ru"; rv: "fi.rv"; rw: "fi.rw"; rx: "fi.rx"; ry: "fi.ry"; rz: "fi.rz"; sa: "fi.sa"; sb: "fi.sb"; sc: "fi.sc"; sd: "fi.sd"; se: "fi.se"; sf: "fi.sf"; sg: "fi.sg"; sh: "fi.sh"; si: "fi.si"; sj: "fi.sj"; sk: "fi.sk"; sl: "fi.sl"; sm: "fi.sm"; sn: "fi.sn"; so: "fi.so"; sp: "fi.sp"; sq: "fi.sq"; sr: "fi.sr"; ss: "fi.ss"; st: "fi.st"; su: "fi.su"; sv: "fi.sv"; sw: "fi.sw"; sx: "fi.sx"; sy: "fi.sy"; sz: "fi.sz"; ta: "fi.ta"; tb: "fi.tb"; tc: "fi.tc"; td: "fi.td"; te: "fi.te"; tf: "fi.tf"; tg: "fi.tg"; th: "fi.th"; ti: "fi.ti"; tj: "fi.tj"; tk: "fi.tk"; tl: "fi.tl"; tm: "fi.tm"; tn: "fi.tn"; to: "fi.to"; tp: "fi.tp"; tq: "fi.tq"; tr: "fi.tr"; ts: "fi.ts"; tt: "fi.tt"; tu: "fi.tu"; tv: "fi.tv"; tw: "fi.tw"; tx: "fi.tx"; ty: "fi.ty"; tz: "fi.tz"; ua: "fi.ua"; ub: "fi.ub"; uc: "fi.uc"; ud: "fi.ud"; ue: "fi.ue"; uf: "fi.uf"; ug: "fi.ug"; uh: "fi.uh"; ui: "fi.ui"; uj: "fi.uj"; uk: "fi.uk"; ul: "fi.ul"; um: "fi.um"; un: "fi.un"; uo: "fi.uo"; up: "fi.up"; uq: "fi.uq"; ur: "fi.ur"; us: "fi.us"; ut: "fi.ut"; uu: "fi.uu"; uv: "fi.uv"; uw: "fi.uw"; ux: "fi.ux"; uy: "fi.uy"; uz: "fi.uz"; va: "fi.va"; vb: "fi.vb"; vc: "fi.vc"; vd: "fi.vd"; ve: "fi.ve"; vf: "fi.vf"; vg: "fi.vg"; vh: "fi.vh"; vi: "fi.vi"; vj: "fi.vj"; vk: "fi.vk"; vl: "fi.vl"; vm: "fi.vm"; vn: "fi.vn"; vo: "fi.vo"; vp: "fi.vp"; vq: "fi.vq"; vr: "fi.vr"; vs: "fi.vs"; vt: "fi.vt"; vu: "fi.vu"; vv: "fi.vv"; vw: "fi.vw"; vx: "fi.vx"; vy: "fi.vy"; vz: "fi.vz"; wa: "fi.wa"; wb: "fi.wb"; wc: "fi.wc"; wd: "fi.wd"; we: "fi.we"; wf: "fi.wf"; wg: "fi.wg"; wh: "fi.wh"; wi: "fi.wi"; wj: "fi.wj"; wk: "fi.wk"; wl: "fi.wl"; wm: "fi.wm"; wn: "fi.wn"; wo: "fi.wo"; wp: "fi.wp"; wq: "fi.wq"; wr: "fi.wr"; ws: "fi.ws"; wt: "fi.wt"; wu: "fi.wu"; wv: "fi.wv"; ww: "fi.ww"; wx: "fi.wx"; wy: "fi.wy"; wz: "fi.wz"; xa: "fi.xa"; xb: "fi.xb"; xc: "fi.xc"; xd: "fi.xd"; xe: "fi.xe"; xf: "fi.xf"; xg: "fi.xg"; xh: "fi.xh"; xi: "fi.xi"; xj: "fi.xj"; xk: "fi.xk"; xl: "fi.xl"; xm: "fi.xm"; xn: "fi.xn"; xo: "fi.xo"; xp: "fi.xp"; xq: "fi.xq"; xr: "fi.xr"; xs: "fi.xs"; xt: "fi.xt"; xu: "fi.xu"; xv: "fi.xv"; xw: "fi.xw"; xx: "fi.xx"; xy: "fi.xy"; xz: "fi.xz"; ya: "fi.ya"; yb: "fi.yb"; yc: "fi.yc"; yd: "fi.yd"; ye: "fi.ye"; yf: "fi.yf"; yg: "fi.yg"; yh: "fi.yh"; yi: "fi.yi"; yj: "fi.yj"; yk: "fi.yk"; yl: "fi.yl"; ym: "fi.ym"; yn: "fi.yn"; yo: "fi.yo"; yp: "fi.yp"; yq: "fi.yq"; yr: "fi.yr"; ys: "fi.ys"; yt: "fi.yt"; yu: "fi.yu"; yv: "fi.yv"; yw: "fi.yw"; yx: "fi.yx"; yy: "fi.yy"; yz: "fi.yz"; za: "fi.za"; zb: "fi.zb"; zc: "fi.zc"; zd: "fi.zd"; ze: "fi.ze"; zf: "fi.zf"; zg: "fi.zg"; zh: "fi.zh"; zi: "fi.zi"; zj: "fi.zj"; zk: "fi.zk"; zl: "fi.zl"; zm: "fi.zm"; zn: "fi.zn"; zo: "fi.zo"; zp: "fi.zp"; zq: "fi.zq"; zr: "fi.zr"; zs: "fi.zs"; zt: "fi.zt"; zu: "fi.zu"; zv: "fi.zv"; zw: "fi.zw"; zx: "fi.zx"; zy: "fi.zy"; zz: "fi.zz"; }; fj: { aa: "fj.aa"; ab: "fj.ab"; ac: "fj.ac"; ad: "fj.ad"; ae: "fj.ae"; af: "fj.af"; ag: "fj.ag"; ah: "fj.ah"; ai: "fj.ai"; aj: "fj.aj"; ak: "fj.ak"; al: "fj.al"; am: "fj.am"; an: "fj.an"; ao: "fj.ao"; ap: "fj.ap"; aq: "fj.aq"; ar: "fj.ar"; as: "fj.as"; at: "fj.at"; au: "fj.au"; av: "fj.av"; aw: "fj.aw"; ax: "fj.ax"; ay: "fj.ay"; az: "fj.az"; ba: "fj.ba"; bb: "fj.bb"; bc: "fj.bc"; bd: "fj.bd"; be: "fj.be"; bf: "fj.bf"; bg: "fj.bg"; bh: "fj.bh"; bi: "fj.bi"; bj: "fj.bj"; bk: "fj.bk"; bl: "fj.bl"; bm: "fj.bm"; bn: "fj.bn"; bo: "fj.bo"; bp: "fj.bp"; bq: "fj.bq"; br: "fj.br"; bs: "fj.bs"; bt: "fj.bt"; bu: "fj.bu"; bv: "fj.bv"; bw: "fj.bw"; bx: "fj.bx"; by: "fj.by"; bz: "fj.bz"; ca: "fj.ca"; cb: "fj.cb"; cc: "fj.cc"; cd: "fj.cd"; ce: "fj.ce"; cf: "fj.cf"; cg: "fj.cg"; ch: "fj.ch"; ci: "fj.ci"; cj: "fj.cj"; ck: "fj.ck"; cl: "fj.cl"; cm: "fj.cm"; cn: "fj.cn"; co: "fj.co"; cp: "fj.cp"; cq: "fj.cq"; cr: "fj.cr"; cs: "fj.cs"; ct: "fj.ct"; cu: "fj.cu"; cv: "fj.cv"; cw: "fj.cw"; cx: "fj.cx"; cy: "fj.cy"; cz: "fj.cz"; da: "fj.da"; db: "fj.db"; dc: "fj.dc"; dd: "fj.dd"; de: "fj.de"; df: "fj.df"; dg: "fj.dg"; dh: "fj.dh"; di: "fj.di"; dj: "fj.dj"; dk: "fj.dk"; dl: "fj.dl"; dm: "fj.dm"; dn: "fj.dn"; do: "fj.do"; dp: "fj.dp"; dq: "fj.dq"; dr: "fj.dr"; ds: "fj.ds"; dt: "fj.dt"; du: "fj.du"; dv: "fj.dv"; dw: "fj.dw"; dx: "fj.dx"; dy: "fj.dy"; dz: "fj.dz"; ea: "fj.ea"; eb: "fj.eb"; ec: "fj.ec"; ed: "fj.ed"; ee: "fj.ee"; ef: "fj.ef"; eg: "fj.eg"; eh: "fj.eh"; ei: "fj.ei"; ej: "fj.ej"; ek: "fj.ek"; el: "fj.el"; em: "fj.em"; en: "fj.en"; eo: "fj.eo"; ep: "fj.ep"; eq: "fj.eq"; er: "fj.er"; es: "fj.es"; et: "fj.et"; eu: "fj.eu"; ev: "fj.ev"; ew: "fj.ew"; ex: "fj.ex"; ey: "fj.ey"; ez: "fj.ez"; fa: "fj.fa"; fb: "fj.fb"; fc: "fj.fc"; fd: "fj.fd"; fe: "fj.fe"; ff: "fj.ff"; fg: "fj.fg"; fh: "fj.fh"; fi: "fj.fi"; fj: "fj.fj"; fk: "fj.fk"; fl: "fj.fl"; fm: "fj.fm"; fn: "fj.fn"; fo: "fj.fo"; fp: "fj.fp"; fq: "fj.fq"; fr: "fj.fr"; fs: "fj.fs"; ft: "fj.ft"; fu: "fj.fu"; fv: "fj.fv"; fw: "fj.fw"; fx: "fj.fx"; fy: "fj.fy"; fz: "fj.fz"; ga: "fj.ga"; gb: "fj.gb"; gc: "fj.gc"; gd: "fj.gd"; ge: "fj.ge"; gf: "fj.gf"; gg: "fj.gg"; gh: "fj.gh"; gi: "fj.gi"; gj: "fj.gj"; gk: "fj.gk"; gl: "fj.gl"; gm: "fj.gm"; gn: "fj.gn"; go: "fj.go"; gp: "fj.gp"; gq: "fj.gq"; gr: "fj.gr"; gs: "fj.gs"; gt: "fj.gt"; gu: "fj.gu"; gv: "fj.gv"; gw: "fj.gw"; gx: "fj.gx"; gy: "fj.gy"; gz: "fj.gz"; ha: "fj.ha"; hb: "fj.hb"; hc: "fj.hc"; hd: "fj.hd"; he: "fj.he"; hf: "fj.hf"; hg: "fj.hg"; hh: "fj.hh"; hi: "fj.hi"; hj: "fj.hj"; hk: "fj.hk"; hl: "fj.hl"; hm: "fj.hm"; hn: "fj.hn"; ho: "fj.ho"; hp: "fj.hp"; hq: "fj.hq"; hr: "fj.hr"; hs: "fj.hs"; ht: "fj.ht"; hu: "fj.hu"; hv: "fj.hv"; hw: "fj.hw"; hx: "fj.hx"; hy: "fj.hy"; hz: "fj.hz"; ia: "fj.ia"; ib: "fj.ib"; ic: "fj.ic"; id: "fj.id"; ie: "fj.ie"; if: "fj.if"; ig: "fj.ig"; ih: "fj.ih"; ii: "fj.ii"; ij: "fj.ij"; ik: "fj.ik"; il: "fj.il"; im: "fj.im"; in: "fj.in"; io: "fj.io"; ip: "fj.ip"; iq: "fj.iq"; ir: "fj.ir"; is: "fj.is"; it: "fj.it"; iu: "fj.iu"; iv: "fj.iv"; iw: "fj.iw"; ix: "fj.ix"; iy: "fj.iy"; iz: "fj.iz"; ja: "fj.ja"; jb: "fj.jb"; jc: "fj.jc"; jd: "fj.jd"; je: "fj.je"; jf: "fj.jf"; jg: "fj.jg"; jh: "fj.jh"; ji: "fj.ji"; jj: "fj.jj"; jk: "fj.jk"; jl: "fj.jl"; jm: "fj.jm"; jn: "fj.jn"; jo: "fj.jo"; jp: "fj.jp"; jq: "fj.jq"; jr: "fj.jr"; js: "fj.js"; jt: "fj.jt"; ju: "fj.ju"; jv: "fj.jv"; jw: "fj.jw"; jx: "fj.jx"; jy: "fj.jy"; jz: "fj.jz"; ka: "fj.ka"; kb: "fj.kb"; kc: "fj.kc"; kd: "fj.kd"; ke: "fj.ke"; kf: "fj.kf"; kg: "fj.kg"; kh: "fj.kh"; ki: "fj.ki"; kj: "fj.kj"; kk: "fj.kk"; kl: "fj.kl"; km: "fj.km"; kn: "fj.kn"; ko: "fj.ko"; kp: "fj.kp"; kq: "fj.kq"; kr: "fj.kr"; ks: "fj.ks"; kt: "fj.kt"; ku: "fj.ku"; kv: "fj.kv"; kw: "fj.kw"; kx: "fj.kx"; ky: "fj.ky"; kz: "fj.kz"; la: "fj.la"; lb: "fj.lb"; lc: "fj.lc"; ld: "fj.ld"; le: "fj.le"; lf: "fj.lf"; lg: "fj.lg"; lh: "fj.lh"; li: "fj.li"; lj: "fj.lj"; lk: "fj.lk"; ll: "fj.ll"; lm: "fj.lm"; ln: "fj.ln"; lo: "fj.lo"; lp: "fj.lp"; lq: "fj.lq"; lr: "fj.lr"; ls: "fj.ls"; lt: "fj.lt"; lu: "fj.lu"; lv: "fj.lv"; lw: "fj.lw"; lx: "fj.lx"; ly: "fj.ly"; lz: "fj.lz"; ma: "fj.ma"; mb: "fj.mb"; mc: "fj.mc"; md: "fj.md"; me: "fj.me"; mf: "fj.mf"; mg: "fj.mg"; mh: "fj.mh"; mi: "fj.mi"; mj: "fj.mj"; mk: "fj.mk"; ml: "fj.ml"; mm: "fj.mm"; mn: "fj.mn"; mo: "fj.mo"; mp: "fj.mp"; mq: "fj.mq"; mr: "fj.mr"; ms: "fj.ms"; mt: "fj.mt"; mu: "fj.mu"; mv: "fj.mv"; mw: "fj.mw"; mx: "fj.mx"; my: "fj.my"; mz: "fj.mz"; na: "fj.na"; nb: "fj.nb"; nc: "fj.nc"; nd: "fj.nd"; ne: "fj.ne"; nf: "fj.nf"; ng: "fj.ng"; nh: "fj.nh"; ni: "fj.ni"; nj: "fj.nj"; nk: "fj.nk"; nl: "fj.nl"; nm: "fj.nm"; nn: "fj.nn"; no: "fj.no"; np: "fj.np"; nq: "fj.nq"; nr: "fj.nr"; ns: "fj.ns"; nt: "fj.nt"; nu: "fj.nu"; nv: "fj.nv"; nw: "fj.nw"; nx: "fj.nx"; ny: "fj.ny"; nz: "fj.nz"; oa: "fj.oa"; ob: "fj.ob"; oc: "fj.oc"; od: "fj.od"; oe: "fj.oe"; of: "fj.of"; og: "fj.og"; oh: "fj.oh"; oi: "fj.oi"; oj: "fj.oj"; ok: "fj.ok"; ol: "fj.ol"; om: "fj.om"; on: "fj.on"; oo: "fj.oo"; op: "fj.op"; oq: "fj.oq"; or: "fj.or"; os: "fj.os"; ot: "fj.ot"; ou: "fj.ou"; ov: "fj.ov"; ow: "fj.ow"; ox: "fj.ox"; oy: "fj.oy"; oz: "fj.oz"; pa: "fj.pa"; pb: "fj.pb"; pc: "fj.pc"; pd: "fj.pd"; pe: "fj.pe"; pf: "fj.pf"; pg: "fj.pg"; ph: "fj.ph"; pi: "fj.pi"; pj: "fj.pj"; pk: "fj.pk"; pl: "fj.pl"; pm: "fj.pm"; pn: "fj.pn"; po: "fj.po"; pp: "fj.pp"; pq: "fj.pq"; pr: "fj.pr"; ps: "fj.ps"; pt: "fj.pt"; pu: "fj.pu"; pv: "fj.pv"; pw: "fj.pw"; px: "fj.px"; py: "fj.py"; pz: "fj.pz"; qa: "fj.qa"; qb: "fj.qb"; qc: "fj.qc"; qd: "fj.qd"; qe: "fj.qe"; qf: "fj.qf"; qg: "fj.qg"; qh: "fj.qh"; qi: "fj.qi"; qj: "fj.qj"; qk: "fj.qk"; ql: "fj.ql"; qm: "fj.qm"; qn: "fj.qn"; qo: "fj.qo"; qp: "fj.qp"; qq: "fj.qq"; qr: "fj.qr"; qs: "fj.qs"; qt: "fj.qt"; qu: "fj.qu"; qv: "fj.qv"; qw: "fj.qw"; qx: "fj.qx"; qy: "fj.qy"; qz: "fj.qz"; ra: "fj.ra"; rb: "fj.rb"; rc: "fj.rc"; rd: "fj.rd"; re: "fj.re"; rf: "fj.rf"; rg: "fj.rg"; rh: "fj.rh"; ri: "fj.ri"; rj: "fj.rj"; rk: "fj.rk"; rl: "fj.rl"; rm: "fj.rm"; rn: "fj.rn"; ro: "fj.ro"; rp: "fj.rp"; rq: "fj.rq"; rr: "fj.rr"; rs: "fj.rs"; rt: "fj.rt"; ru: "fj.ru"; rv: "fj.rv"; rw: "fj.rw"; rx: "fj.rx"; ry: "fj.ry"; rz: "fj.rz"; sa: "fj.sa"; sb: "fj.sb"; sc: "fj.sc"; sd: "fj.sd"; se: "fj.se"; sf: "fj.sf"; sg: "fj.sg"; sh: "fj.sh"; si: "fj.si"; sj: "fj.sj"; sk: "fj.sk"; sl: "fj.sl"; sm: "fj.sm"; sn: "fj.sn"; so: "fj.so"; sp: "fj.sp"; sq: "fj.sq"; sr: "fj.sr"; ss: "fj.ss"; st: "fj.st"; su: "fj.su"; sv: "fj.sv"; sw: "fj.sw"; sx: "fj.sx"; sy: "fj.sy"; sz: "fj.sz"; ta: "fj.ta"; tb: "fj.tb"; tc: "fj.tc"; td: "fj.td"; te: "fj.te"; tf: "fj.tf"; tg: "fj.tg"; th: "fj.th"; ti: "fj.ti"; tj: "fj.tj"; tk: "fj.tk"; tl: "fj.tl"; tm: "fj.tm"; tn: "fj.tn"; to: "fj.to"; tp: "fj.tp"; tq: "fj.tq"; tr: "fj.tr"; ts: "fj.ts"; tt: "fj.tt"; tu: "fj.tu"; tv: "fj.tv"; tw: "fj.tw"; tx: "fj.tx"; ty: "fj.ty"; tz: "fj.tz"; ua: "fj.ua"; ub: "fj.ub"; uc: "fj.uc"; ud: "fj.ud"; ue: "fj.ue"; uf: "fj.uf"; ug: "fj.ug"; uh: "fj.uh"; ui: "fj.ui"; uj: "fj.uj"; uk: "fj.uk"; ul: "fj.ul"; um: "fj.um"; un: "fj.un"; uo: "fj.uo"; up: "fj.up"; uq: "fj.uq"; ur: "fj.ur"; us: "fj.us"; ut: "fj.ut"; uu: "fj.uu"; uv: "fj.uv"; uw: "fj.uw"; ux: "fj.ux"; uy: "fj.uy"; uz: "fj.uz"; va: "fj.va"; vb: "fj.vb"; vc: "fj.vc"; vd: "fj.vd"; ve: "fj.ve"; vf: "fj.vf"; vg: "fj.vg"; vh: "fj.vh"; vi: "fj.vi"; vj: "fj.vj"; vk: "fj.vk"; vl: "fj.vl"; vm: "fj.vm"; vn: "fj.vn"; vo: "fj.vo"; vp: "fj.vp"; vq: "fj.vq"; vr: "fj.vr"; vs: "fj.vs"; vt: "fj.vt"; vu: "fj.vu"; vv: "fj.vv"; vw: "fj.vw"; vx: "fj.vx"; vy: "fj.vy"; vz: "fj.vz"; wa: "fj.wa"; wb: "fj.wb"; wc: "fj.wc"; wd: "fj.wd"; we: "fj.we"; wf: "fj.wf"; wg: "fj.wg"; wh: "fj.wh"; wi: "fj.wi"; wj: "fj.wj"; wk: "fj.wk"; wl: "fj.wl"; wm: "fj.wm"; wn: "fj.wn"; wo: "fj.wo"; wp: "fj.wp"; wq: "fj.wq"; wr: "fj.wr"; ws: "fj.ws"; wt: "fj.wt"; wu: "fj.wu"; wv: "fj.wv"; ww: "fj.ww"; wx: "fj.wx"; wy: "fj.wy"; wz: "fj.wz"; xa: "fj.xa"; xb: "fj.xb"; xc: "fj.xc"; xd: "fj.xd"; xe: "fj.xe"; xf: "fj.xf"; xg: "fj.xg"; xh: "fj.xh"; xi: "fj.xi"; xj: "fj.xj"; xk: "fj.xk"; xl: "fj.xl"; xm: "fj.xm"; xn: "fj.xn"; xo: "fj.xo"; xp: "fj.xp"; xq: "fj.xq"; xr: "fj.xr"; xs: "fj.xs"; xt: "fj.xt"; xu: "fj.xu"; xv: "fj.xv"; xw: "fj.xw"; xx: "fj.xx"; xy: "fj.xy"; xz: "fj.xz"; ya: "fj.ya"; yb: "fj.yb"; yc: "fj.yc"; yd: "fj.yd"; ye: "fj.ye"; yf: "fj.yf"; yg: "fj.yg"; yh: "fj.yh"; yi: "fj.yi"; yj: "fj.yj"; yk: "fj.yk"; yl: "fj.yl"; ym: "fj.ym"; yn: "fj.yn"; yo: "fj.yo"; yp: "fj.yp"; yq: "fj.yq"; yr: "fj.yr"; ys: "fj.ys"; yt: "fj.yt"; yu: "fj.yu"; yv: "fj.yv"; yw: "fj.yw"; yx: "fj.yx"; yy: "fj.yy"; yz: "fj.yz"; za: "fj.za"; zb: "fj.zb"; zc: "fj.zc"; zd: "fj.zd"; ze: "fj.ze"; zf: "fj.zf"; zg: "fj.zg"; zh: "fj.zh"; zi: "fj.zi"; zj: "fj.zj"; zk: "fj.zk"; zl: "fj.zl"; zm: "fj.zm"; zn: "fj.zn"; zo: "fj.zo"; zp: "fj.zp"; zq: "fj.zq"; zr: "fj.zr"; zs: "fj.zs"; zt: "fj.zt"; zu: "fj.zu"; zv: "fj.zv"; zw: "fj.zw"; zx: "fj.zx"; zy: "fj.zy"; zz: "fj.zz"; }; fk: { aa: "fk.aa"; ab: "fk.ab"; ac: "fk.ac"; ad: "fk.ad"; ae: "fk.ae"; af: "fk.af"; ag: "fk.ag"; ah: "fk.ah"; ai: "fk.ai"; aj: "fk.aj"; ak: "fk.ak"; al: "fk.al"; am: "fk.am"; an: "fk.an"; ao: "fk.ao"; ap: "fk.ap"; aq: "fk.aq"; ar: "fk.ar"; as: "fk.as"; at: "fk.at"; au: "fk.au"; av: "fk.av"; aw: "fk.aw"; ax: "fk.ax"; ay: "fk.ay"; az: "fk.az"; ba: "fk.ba"; bb: "fk.bb"; bc: "fk.bc"; bd: "fk.bd"; be: "fk.be"; bf: "fk.bf"; bg: "fk.bg"; bh: "fk.bh"; bi: "fk.bi"; bj: "fk.bj"; bk: "fk.bk"; bl: "fk.bl"; bm: "fk.bm"; bn: "fk.bn"; bo: "fk.bo"; bp: "fk.bp"; bq: "fk.bq"; br: "fk.br"; bs: "fk.bs"; bt: "fk.bt"; bu: "fk.bu"; bv: "fk.bv"; bw: "fk.bw"; bx: "fk.bx"; by: "fk.by"; bz: "fk.bz"; ca: "fk.ca"; cb: "fk.cb"; cc: "fk.cc"; cd: "fk.cd"; ce: "fk.ce"; cf: "fk.cf"; cg: "fk.cg"; ch: "fk.ch"; ci: "fk.ci"; cj: "fk.cj"; ck: "fk.ck"; cl: "fk.cl"; cm: "fk.cm"; cn: "fk.cn"; co: "fk.co"; cp: "fk.cp"; cq: "fk.cq"; cr: "fk.cr"; cs: "fk.cs"; ct: "fk.ct"; cu: "fk.cu"; cv: "fk.cv"; cw: "fk.cw"; cx: "fk.cx"; cy: "fk.cy"; cz: "fk.cz"; da: "fk.da"; db: "fk.db"; dc: "fk.dc"; dd: "fk.dd"; de: "fk.de"; df: "fk.df"; dg: "fk.dg"; dh: "fk.dh"; di: "fk.di"; dj: "fk.dj"; dk: "fk.dk"; dl: "fk.dl"; dm: "fk.dm"; dn: "fk.dn"; do: "fk.do"; dp: "fk.dp"; dq: "fk.dq"; dr: "fk.dr"; ds: "fk.ds"; dt: "fk.dt"; du: "fk.du"; dv: "fk.dv"; dw: "fk.dw"; dx: "fk.dx"; dy: "fk.dy"; dz: "fk.dz"; ea: "fk.ea"; eb: "fk.eb"; ec: "fk.ec"; ed: "fk.ed"; ee: "fk.ee"; ef: "fk.ef"; eg: "fk.eg"; eh: "fk.eh"; ei: "fk.ei"; ej: "fk.ej"; ek: "fk.ek"; el: "fk.el"; em: "fk.em"; en: "fk.en"; eo: "fk.eo"; ep: "fk.ep"; eq: "fk.eq"; er: "fk.er"; es: "fk.es"; et: "fk.et"; eu: "fk.eu"; ev: "fk.ev"; ew: "fk.ew"; ex: "fk.ex"; ey: "fk.ey"; ez: "fk.ez"; fa: "fk.fa"; fb: "fk.fb"; fc: "fk.fc"; fd: "fk.fd"; fe: "fk.fe"; ff: "fk.ff"; fg: "fk.fg"; fh: "fk.fh"; fi: "fk.fi"; fj: "fk.fj"; fk: "fk.fk"; fl: "fk.fl"; fm: "fk.fm"; fn: "fk.fn"; fo: "fk.fo"; fp: "fk.fp"; fq: "fk.fq"; fr: "fk.fr"; fs: "fk.fs"; ft: "fk.ft"; fu: "fk.fu"; fv: "fk.fv"; fw: "fk.fw"; fx: "fk.fx"; fy: "fk.fy"; fz: "fk.fz"; ga: "fk.ga"; gb: "fk.gb"; gc: "fk.gc"; gd: "fk.gd"; ge: "fk.ge"; gf: "fk.gf"; gg: "fk.gg"; gh: "fk.gh"; gi: "fk.gi"; gj: "fk.gj"; gk: "fk.gk"; gl: "fk.gl"; gm: "fk.gm"; gn: "fk.gn"; go: "fk.go"; gp: "fk.gp"; gq: "fk.gq"; gr: "fk.gr"; gs: "fk.gs"; gt: "fk.gt"; gu: "fk.gu"; gv: "fk.gv"; gw: "fk.gw"; gx: "fk.gx"; gy: "fk.gy"; gz: "fk.gz"; ha: "fk.ha"; hb: "fk.hb"; hc: "fk.hc"; hd: "fk.hd"; he: "fk.he"; hf: "fk.hf"; hg: "fk.hg"; hh: "fk.hh"; hi: "fk.hi"; hj: "fk.hj"; hk: "fk.hk"; hl: "fk.hl"; hm: "fk.hm"; hn: "fk.hn"; ho: "fk.ho"; hp: "fk.hp"; hq: "fk.hq"; hr: "fk.hr"; hs: "fk.hs"; ht: "fk.ht"; hu: "fk.hu"; hv: "fk.hv"; hw: "fk.hw"; hx: "fk.hx"; hy: "fk.hy"; hz: "fk.hz"; ia: "fk.ia"; ib: "fk.ib"; ic: "fk.ic"; id: "fk.id"; ie: "fk.ie"; if: "fk.if"; ig: "fk.ig"; ih: "fk.ih"; ii: "fk.ii"; ij: "fk.ij"; ik: "fk.ik"; il: "fk.il"; im: "fk.im"; in: "fk.in"; io: "fk.io"; ip: "fk.ip"; iq: "fk.iq"; ir: "fk.ir"; is: "fk.is"; it: "fk.it"; iu: "fk.iu"; iv: "fk.iv"; iw: "fk.iw"; ix: "fk.ix"; iy: "fk.iy"; iz: "fk.iz"; ja: "fk.ja"; jb: "fk.jb"; jc: "fk.jc"; jd: "fk.jd"; je: "fk.je"; jf: "fk.jf"; jg: "fk.jg"; jh: "fk.jh"; ji: "fk.ji"; jj: "fk.jj"; jk: "fk.jk"; jl: "fk.jl"; jm: "fk.jm"; jn: "fk.jn"; jo: "fk.jo"; jp: "fk.jp"; jq: "fk.jq"; jr: "fk.jr"; js: "fk.js"; jt: "fk.jt"; ju: "fk.ju"; jv: "fk.jv"; jw: "fk.jw"; jx: "fk.jx"; jy: "fk.jy"; jz: "fk.jz"; ka: "fk.ka"; kb: "fk.kb"; kc: "fk.kc"; kd: "fk.kd"; ke: "fk.ke"; kf: "fk.kf"; kg: "fk.kg"; kh: "fk.kh"; ki: "fk.ki"; kj: "fk.kj"; kk: "fk.kk"; kl: "fk.kl"; km: "fk.km"; kn: "fk.kn"; ko: "fk.ko"; kp: "fk.kp"; kq: "fk.kq"; kr: "fk.kr"; ks: "fk.ks"; kt: "fk.kt"; ku: "fk.ku"; kv: "fk.kv"; kw: "fk.kw"; kx: "fk.kx"; ky: "fk.ky"; kz: "fk.kz"; la: "fk.la"; lb: "fk.lb"; lc: "fk.lc"; ld: "fk.ld"; le: "fk.le"; lf: "fk.lf"; lg: "fk.lg"; lh: "fk.lh"; li: "fk.li"; lj: "fk.lj"; lk: "fk.lk"; ll: "fk.ll"; lm: "fk.lm"; ln: "fk.ln"; lo: "fk.lo"; lp: "fk.lp"; lq: "fk.lq"; lr: "fk.lr"; ls: "fk.ls"; lt: "fk.lt"; lu: "fk.lu"; lv: "fk.lv"; lw: "fk.lw"; lx: "fk.lx"; ly: "fk.ly"; lz: "fk.lz"; ma: "fk.ma"; mb: "fk.mb"; mc: "fk.mc"; md: "fk.md"; me: "fk.me"; mf: "fk.mf"; mg: "fk.mg"; mh: "fk.mh"; mi: "fk.mi"; mj: "fk.mj"; mk: "fk.mk"; ml: "fk.ml"; mm: "fk.mm"; mn: "fk.mn"; mo: "fk.mo"; mp: "fk.mp"; mq: "fk.mq"; mr: "fk.mr"; ms: "fk.ms"; mt: "fk.mt"; mu: "fk.mu"; mv: "fk.mv"; mw: "fk.mw"; mx: "fk.mx"; my: "fk.my"; mz: "fk.mz"; na: "fk.na"; nb: "fk.nb"; nc: "fk.nc"; nd: "fk.nd"; ne: "fk.ne"; nf: "fk.nf"; ng: "fk.ng"; nh: "fk.nh"; ni: "fk.ni"; nj: "fk.nj"; nk: "fk.nk"; nl: "fk.nl"; nm: "fk.nm"; nn: "fk.nn"; no: "fk.no"; np: "fk.np"; nq: "fk.nq"; nr: "fk.nr"; ns: "fk.ns"; nt: "fk.nt"; nu: "fk.nu"; nv: "fk.nv"; nw: "fk.nw"; nx: "fk.nx"; ny: "fk.ny"; nz: "fk.nz"; oa: "fk.oa"; ob: "fk.ob"; oc: "fk.oc"; od: "fk.od"; oe: "fk.oe"; of: "fk.of"; og: "fk.og"; oh: "fk.oh"; oi: "fk.oi"; oj: "fk.oj"; ok: "fk.ok"; ol: "fk.ol"; om: "fk.om"; on: "fk.on"; oo: "fk.oo"; op: "fk.op"; oq: "fk.oq"; or: "fk.or"; os: "fk.os"; ot: "fk.ot"; ou: "fk.ou"; ov: "fk.ov"; ow: "fk.ow"; ox: "fk.ox"; oy: "fk.oy"; oz: "fk.oz"; pa: "fk.pa"; pb: "fk.pb"; pc: "fk.pc"; pd: "fk.pd"; pe: "fk.pe"; pf: "fk.pf"; pg: "fk.pg"; ph: "fk.ph"; pi: "fk.pi"; pj: "fk.pj"; pk: "fk.pk"; pl: "fk.pl"; pm: "fk.pm"; pn: "fk.pn"; po: "fk.po"; pp: "fk.pp"; pq: "fk.pq"; pr: "fk.pr"; ps: "fk.ps"; pt: "fk.pt"; pu: "fk.pu"; pv: "fk.pv"; pw: "fk.pw"; px: "fk.px"; py: "fk.py"; pz: "fk.pz"; qa: "fk.qa"; qb: "fk.qb"; qc: "fk.qc"; qd: "fk.qd"; qe: "fk.qe"; qf: "fk.qf"; qg: "fk.qg"; qh: "fk.qh"; qi: "fk.qi"; qj: "fk.qj"; qk: "fk.qk"; ql: "fk.ql"; qm: "fk.qm"; qn: "fk.qn"; qo: "fk.qo"; qp: "fk.qp"; qq: "fk.qq"; qr: "fk.qr"; qs: "fk.qs"; qt: "fk.qt"; qu: "fk.qu"; qv: "fk.qv"; qw: "fk.qw"; qx: "fk.qx"; qy: "fk.qy"; qz: "fk.qz"; ra: "fk.ra"; rb: "fk.rb"; rc: "fk.rc"; rd: "fk.rd"; re: "fk.re"; rf: "fk.rf"; rg: "fk.rg"; rh: "fk.rh"; ri: "fk.ri"; rj: "fk.rj"; rk: "fk.rk"; rl: "fk.rl"; rm: "fk.rm"; rn: "fk.rn"; ro: "fk.ro"; rp: "fk.rp"; rq: "fk.rq"; rr: "fk.rr"; rs: "fk.rs"; rt: "fk.rt"; ru: "fk.ru"; rv: "fk.rv"; rw: "fk.rw"; rx: "fk.rx"; ry: "fk.ry"; rz: "fk.rz"; sa: "fk.sa"; sb: "fk.sb"; sc: "fk.sc"; sd: "fk.sd"; se: "fk.se"; sf: "fk.sf"; sg: "fk.sg"; sh: "fk.sh"; si: "fk.si"; sj: "fk.sj"; sk: "fk.sk"; sl: "fk.sl"; sm: "fk.sm"; sn: "fk.sn"; so: "fk.so"; sp: "fk.sp"; sq: "fk.sq"; sr: "fk.sr"; ss: "fk.ss"; st: "fk.st"; su: "fk.su"; sv: "fk.sv"; sw: "fk.sw"; sx: "fk.sx"; sy: "fk.sy"; sz: "fk.sz"; ta: "fk.ta"; tb: "fk.tb"; tc: "fk.tc"; td: "fk.td"; te: "fk.te"; tf: "fk.tf"; tg: "fk.tg"; th: "fk.th"; ti: "fk.ti"; tj: "fk.tj"; tk: "fk.tk"; tl: "fk.tl"; tm: "fk.tm"; tn: "fk.tn"; to: "fk.to"; tp: "fk.tp"; tq: "fk.tq"; tr: "fk.tr"; ts: "fk.ts"; tt: "fk.tt"; tu: "fk.tu"; tv: "fk.tv"; tw: "fk.tw"; tx: "fk.tx"; ty: "fk.ty"; tz: "fk.tz"; ua: "fk.ua"; ub: "fk.ub"; uc: "fk.uc"; ud: "fk.ud"; ue: "fk.ue"; uf: "fk.uf"; ug: "fk.ug"; uh: "fk.uh"; ui: "fk.ui"; uj: "fk.uj"; uk: "fk.uk"; ul: "fk.ul"; um: "fk.um"; un: "fk.un"; uo: "fk.uo"; up: "fk.up"; uq: "fk.uq"; ur: "fk.ur"; us: "fk.us"; ut: "fk.ut"; uu: "fk.uu"; uv: "fk.uv"; uw: "fk.uw"; ux: "fk.ux"; uy: "fk.uy"; uz: "fk.uz"; va: "fk.va"; vb: "fk.vb"; vc: "fk.vc"; vd: "fk.vd"; ve: "fk.ve"; vf: "fk.vf"; vg: "fk.vg"; vh: "fk.vh"; vi: "fk.vi"; vj: "fk.vj"; vk: "fk.vk"; vl: "fk.vl"; vm: "fk.vm"; vn: "fk.vn"; vo: "fk.vo"; vp: "fk.vp"; vq: "fk.vq"; vr: "fk.vr"; vs: "fk.vs"; vt: "fk.vt"; vu: "fk.vu"; vv: "fk.vv"; vw: "fk.vw"; vx: "fk.vx"; vy: "fk.vy"; vz: "fk.vz"; wa: "fk.wa"; wb: "fk.wb"; wc: "fk.wc"; wd: "fk.wd"; we: "fk.we"; wf: "fk.wf"; wg: "fk.wg"; wh: "fk.wh"; wi: "fk.wi"; wj: "fk.wj"; wk: "fk.wk"; wl: "fk.wl"; wm: "fk.wm"; wn: "fk.wn"; wo: "fk.wo"; wp: "fk.wp"; wq: "fk.wq"; wr: "fk.wr"; ws: "fk.ws"; wt: "fk.wt"; wu: "fk.wu"; wv: "fk.wv"; ww: "fk.ww"; wx: "fk.wx"; wy: "fk.wy"; wz: "fk.wz"; xa: "fk.xa"; xb: "fk.xb"; xc: "fk.xc"; xd: "fk.xd"; xe: "fk.xe"; xf: "fk.xf"; xg: "fk.xg"; xh: "fk.xh"; xi: "fk.xi"; xj: "fk.xj"; xk: "fk.xk"; xl: "fk.xl"; xm: "fk.xm"; xn: "fk.xn"; xo: "fk.xo"; xp: "fk.xp"; xq: "fk.xq"; xr: "fk.xr"; xs: "fk.xs"; xt: "fk.xt"; xu: "fk.xu"; xv: "fk.xv"; xw: "fk.xw"; xx: "fk.xx"; xy: "fk.xy"; xz: "fk.xz"; ya: "fk.ya"; yb: "fk.yb"; yc: "fk.yc"; yd: "fk.yd"; ye: "fk.ye"; yf: "fk.yf"; yg: "fk.yg"; yh: "fk.yh"; yi: "fk.yi"; yj: "fk.yj"; yk: "fk.yk"; yl: "fk.yl"; ym: "fk.ym"; yn: "fk.yn"; yo: "fk.yo"; yp: "fk.yp"; yq: "fk.yq"; yr: "fk.yr"; ys: "fk.ys"; yt: "fk.yt"; yu: "fk.yu"; yv: "fk.yv"; yw: "fk.yw"; yx: "fk.yx"; yy: "fk.yy"; yz: "fk.yz"; za: "fk.za"; zb: "fk.zb"; zc: "fk.zc"; zd: "fk.zd"; ze: "fk.ze"; zf: "fk.zf"; zg: "fk.zg"; zh: "fk.zh"; zi: "fk.zi"; zj: "fk.zj"; zk: "fk.zk"; zl: "fk.zl"; zm: "fk.zm"; zn: "fk.zn"; zo: "fk.zo"; zp: "fk.zp"; zq: "fk.zq"; zr: "fk.zr"; zs: "fk.zs"; zt: "fk.zt"; zu: "fk.zu"; zv: "fk.zv"; zw: "fk.zw"; zx: "fk.zx"; zy: "fk.zy"; zz: "fk.zz"; }; fl: { aa: "fl.aa"; ab: "fl.ab"; ac: "fl.ac"; ad: "fl.ad"; ae: "fl.ae"; af: "fl.af"; ag: "fl.ag"; ah: "fl.ah"; ai: "fl.ai"; aj: "fl.aj"; ak: "fl.ak"; al: "fl.al"; am: "fl.am"; an: "fl.an"; ao: "fl.ao"; ap: "fl.ap"; aq: "fl.aq"; ar: "fl.ar"; as: "fl.as"; at: "fl.at"; au: "fl.au"; av: "fl.av"; aw: "fl.aw"; ax: "fl.ax"; ay: "fl.ay"; az: "fl.az"; ba: "fl.ba"; bb: "fl.bb"; bc: "fl.bc"; bd: "fl.bd"; be: "fl.be"; bf: "fl.bf"; bg: "fl.bg"; bh: "fl.bh"; bi: "fl.bi"; bj: "fl.bj"; bk: "fl.bk"; bl: "fl.bl"; bm: "fl.bm"; bn: "fl.bn"; bo: "fl.bo"; bp: "fl.bp"; bq: "fl.bq"; br: "fl.br"; bs: "fl.bs"; bt: "fl.bt"; bu: "fl.bu"; bv: "fl.bv"; bw: "fl.bw"; bx: "fl.bx"; by: "fl.by"; bz: "fl.bz"; ca: "fl.ca"; cb: "fl.cb"; cc: "fl.cc"; cd: "fl.cd"; ce: "fl.ce"; cf: "fl.cf"; cg: "fl.cg"; ch: "fl.ch"; ci: "fl.ci"; cj: "fl.cj"; ck: "fl.ck"; cl: "fl.cl"; cm: "fl.cm"; cn: "fl.cn"; co: "fl.co"; cp: "fl.cp"; cq: "fl.cq"; cr: "fl.cr"; cs: "fl.cs"; ct: "fl.ct"; cu: "fl.cu"; cv: "fl.cv"; cw: "fl.cw"; cx: "fl.cx"; cy: "fl.cy"; cz: "fl.cz"; da: "fl.da"; db: "fl.db"; dc: "fl.dc"; dd: "fl.dd"; de: "fl.de"; df: "fl.df"; dg: "fl.dg"; dh: "fl.dh"; di: "fl.di"; dj: "fl.dj"; dk: "fl.dk"; dl: "fl.dl"; dm: "fl.dm"; dn: "fl.dn"; do: "fl.do"; dp: "fl.dp"; dq: "fl.dq"; dr: "fl.dr"; ds: "fl.ds"; dt: "fl.dt"; du: "fl.du"; dv: "fl.dv"; dw: "fl.dw"; dx: "fl.dx"; dy: "fl.dy"; dz: "fl.dz"; ea: "fl.ea"; eb: "fl.eb"; ec: "fl.ec"; ed: "fl.ed"; ee: "fl.ee"; ef: "fl.ef"; eg: "fl.eg"; eh: "fl.eh"; ei: "fl.ei"; ej: "fl.ej"; ek: "fl.ek"; el: "fl.el"; em: "fl.em"; en: "fl.en"; eo: "fl.eo"; ep: "fl.ep"; eq: "fl.eq"; er: "fl.er"; es: "fl.es"; et: "fl.et"; eu: "fl.eu"; ev: "fl.ev"; ew: "fl.ew"; ex: "fl.ex"; ey: "fl.ey"; ez: "fl.ez"; fa: "fl.fa"; fb: "fl.fb"; fc: "fl.fc"; fd: "fl.fd"; fe: "fl.fe"; ff: "fl.ff"; fg: "fl.fg"; fh: "fl.fh"; fi: "fl.fi"; fj: "fl.fj"; fk: "fl.fk"; fl: "fl.fl"; fm: "fl.fm"; fn: "fl.fn"; fo: "fl.fo"; fp: "fl.fp"; fq: "fl.fq"; fr: "fl.fr"; fs: "fl.fs"; ft: "fl.ft"; fu: "fl.fu"; fv: "fl.fv"; fw: "fl.fw"; fx: "fl.fx"; fy: "fl.fy"; fz: "fl.fz"; ga: "fl.ga"; gb: "fl.gb"; gc: "fl.gc"; gd: "fl.gd"; ge: "fl.ge"; gf: "fl.gf"; gg: "fl.gg"; gh: "fl.gh"; gi: "fl.gi"; gj: "fl.gj"; gk: "fl.gk"; gl: "fl.gl"; gm: "fl.gm"; gn: "fl.gn"; go: "fl.go"; gp: "fl.gp"; gq: "fl.gq"; gr: "fl.gr"; gs: "fl.gs"; gt: "fl.gt"; gu: "fl.gu"; gv: "fl.gv"; gw: "fl.gw"; gx: "fl.gx"; gy: "fl.gy"; gz: "fl.gz"; ha: "fl.ha"; hb: "fl.hb"; hc: "fl.hc"; hd: "fl.hd"; he: "fl.he"; hf: "fl.hf"; hg: "fl.hg"; hh: "fl.hh"; hi: "fl.hi"; hj: "fl.hj"; hk: "fl.hk"; hl: "fl.hl"; hm: "fl.hm"; hn: "fl.hn"; ho: "fl.ho"; hp: "fl.hp"; hq: "fl.hq"; hr: "fl.hr"; hs: "fl.hs"; ht: "fl.ht"; hu: "fl.hu"; hv: "fl.hv"; hw: "fl.hw"; hx: "fl.hx"; hy: "fl.hy"; hz: "fl.hz"; ia: "fl.ia"; ib: "fl.ib"; ic: "fl.ic"; id: "fl.id"; ie: "fl.ie"; if: "fl.if"; ig: "fl.ig"; ih: "fl.ih"; ii: "fl.ii"; ij: "fl.ij"; ik: "fl.ik"; il: "fl.il"; im: "fl.im"; in: "fl.in"; io: "fl.io"; ip: "fl.ip"; iq: "fl.iq"; ir: "fl.ir"; is: "fl.is"; it: "fl.it"; iu: "fl.iu"; iv: "fl.iv"; iw: "fl.iw"; ix: "fl.ix"; iy: "fl.iy"; iz: "fl.iz"; ja: "fl.ja"; jb: "fl.jb"; jc: "fl.jc"; jd: "fl.jd"; je: "fl.je"; jf: "fl.jf"; jg: "fl.jg"; jh: "fl.jh"; ji: "fl.ji"; jj: "fl.jj"; jk: "fl.jk"; jl: "fl.jl"; jm: "fl.jm"; jn: "fl.jn"; jo: "fl.jo"; jp: "fl.jp"; jq: "fl.jq"; jr: "fl.jr"; js: "fl.js"; jt: "fl.jt"; ju: "fl.ju"; jv: "fl.jv"; jw: "fl.jw"; jx: "fl.jx"; jy: "fl.jy"; jz: "fl.jz"; ka: "fl.ka"; kb: "fl.kb"; kc: "fl.kc"; kd: "fl.kd"; ke: "fl.ke"; kf: "fl.kf"; kg: "fl.kg"; kh: "fl.kh"; ki: "fl.ki"; kj: "fl.kj"; kk: "fl.kk"; kl: "fl.kl"; km: "fl.km"; kn: "fl.kn"; ko: "fl.ko"; kp: "fl.kp"; kq: "fl.kq"; kr: "fl.kr"; ks: "fl.ks"; kt: "fl.kt"; ku: "fl.ku"; kv: "fl.kv"; kw: "fl.kw"; kx: "fl.kx"; ky: "fl.ky"; kz: "fl.kz"; la: "fl.la"; lb: "fl.lb"; lc: "fl.lc"; ld: "fl.ld"; le: "fl.le"; lf: "fl.lf"; lg: "fl.lg"; lh: "fl.lh"; li: "fl.li"; lj: "fl.lj"; lk: "fl.lk"; ll: "fl.ll"; lm: "fl.lm"; ln: "fl.ln"; lo: "fl.lo"; lp: "fl.lp"; lq: "fl.lq"; lr: "fl.lr"; ls: "fl.ls"; lt: "fl.lt"; lu: "fl.lu"; lv: "fl.lv"; lw: "fl.lw"; lx: "fl.lx"; ly: "fl.ly"; lz: "fl.lz"; ma: "fl.ma"; mb: "fl.mb"; mc: "fl.mc"; md: "fl.md"; me: "fl.me"; mf: "fl.mf"; mg: "fl.mg"; mh: "fl.mh"; mi: "fl.mi"; mj: "fl.mj"; mk: "fl.mk"; ml: "fl.ml"; mm: "fl.mm"; mn: "fl.mn"; mo: "fl.mo"; mp: "fl.mp"; mq: "fl.mq"; mr: "fl.mr"; ms: "fl.ms"; mt: "fl.mt"; mu: "fl.mu"; mv: "fl.mv"; mw: "fl.mw"; mx: "fl.mx"; my: "fl.my"; mz: "fl.mz"; na: "fl.na"; nb: "fl.nb"; nc: "fl.nc"; nd: "fl.nd"; ne: "fl.ne"; nf: "fl.nf"; ng: "fl.ng"; nh: "fl.nh"; ni: "fl.ni"; nj: "fl.nj"; nk: "fl.nk"; nl: "fl.nl"; nm: "fl.nm"; nn: "fl.nn"; no: "fl.no"; np: "fl.np"; nq: "fl.nq"; nr: "fl.nr"; ns: "fl.ns"; nt: "fl.nt"; nu: "fl.nu"; nv: "fl.nv"; nw: "fl.nw"; nx: "fl.nx"; ny: "fl.ny"; nz: "fl.nz"; oa: "fl.oa"; ob: "fl.ob"; oc: "fl.oc"; od: "fl.od"; oe: "fl.oe"; of: "fl.of"; og: "fl.og"; oh: "fl.oh"; oi: "fl.oi"; oj: "fl.oj"; ok: "fl.ok"; ol: "fl.ol"; om: "fl.om"; on: "fl.on"; oo: "fl.oo"; op: "fl.op"; oq: "fl.oq"; or: "fl.or"; os: "fl.os"; ot: "fl.ot"; ou: "fl.ou"; ov: "fl.ov"; ow: "fl.ow"; ox: "fl.ox"; oy: "fl.oy"; oz: "fl.oz"; pa: "fl.pa"; pb: "fl.pb"; pc: "fl.pc"; pd: "fl.pd"; pe: "fl.pe"; pf: "fl.pf"; pg: "fl.pg"; ph: "fl.ph"; pi: "fl.pi"; pj: "fl.pj"; pk: "fl.pk"; pl: "fl.pl"; pm: "fl.pm"; pn: "fl.pn"; po: "fl.po"; pp: "fl.pp"; pq: "fl.pq"; pr: "fl.pr"; ps: "fl.ps"; pt: "fl.pt"; pu: "fl.pu"; pv: "fl.pv"; pw: "fl.pw"; px: "fl.px"; py: "fl.py"; pz: "fl.pz"; qa: "fl.qa"; qb: "fl.qb"; qc: "fl.qc"; qd: "fl.qd"; qe: "fl.qe"; qf: "fl.qf"; qg: "fl.qg"; qh: "fl.qh"; qi: "fl.qi"; qj: "fl.qj"; qk: "fl.qk"; ql: "fl.ql"; qm: "fl.qm"; qn: "fl.qn"; qo: "fl.qo"; qp: "fl.qp"; qq: "fl.qq"; qr: "fl.qr"; qs: "fl.qs"; qt: "fl.qt"; qu: "fl.qu"; qv: "fl.qv"; qw: "fl.qw"; qx: "fl.qx"; qy: "fl.qy"; qz: "fl.qz"; ra: "fl.ra"; rb: "fl.rb"; rc: "fl.rc"; rd: "fl.rd"; re: "fl.re"; rf: "fl.rf"; rg: "fl.rg"; rh: "fl.rh"; ri: "fl.ri"; rj: "fl.rj"; rk: "fl.rk"; rl: "fl.rl"; rm: "fl.rm"; rn: "fl.rn"; ro: "fl.ro"; rp: "fl.rp"; rq: "fl.rq"; rr: "fl.rr"; rs: "fl.rs"; rt: "fl.rt"; ru: "fl.ru"; rv: "fl.rv"; rw: "fl.rw"; rx: "fl.rx"; ry: "fl.ry"; rz: "fl.rz"; sa: "fl.sa"; sb: "fl.sb"; sc: "fl.sc"; sd: "fl.sd"; se: "fl.se"; sf: "fl.sf"; sg: "fl.sg"; sh: "fl.sh"; si: "fl.si"; sj: "fl.sj"; sk: "fl.sk"; sl: "fl.sl"; sm: "fl.sm"; sn: "fl.sn"; so: "fl.so"; sp: "fl.sp"; sq: "fl.sq"; sr: "fl.sr"; ss: "fl.ss"; st: "fl.st"; su: "fl.su"; sv: "fl.sv"; sw: "fl.sw"; sx: "fl.sx"; sy: "fl.sy"; sz: "fl.sz"; ta: "fl.ta"; tb: "fl.tb"; tc: "fl.tc"; td: "fl.td"; te: "fl.te"; tf: "fl.tf"; tg: "fl.tg"; th: "fl.th"; ti: "fl.ti"; tj: "fl.tj"; tk: "fl.tk"; tl: "fl.tl"; tm: "fl.tm"; tn: "fl.tn"; to: "fl.to"; tp: "fl.tp"; tq: "fl.tq"; tr: "fl.tr"; ts: "fl.ts"; tt: "fl.tt"; tu: "fl.tu"; tv: "fl.tv"; tw: "fl.tw"; tx: "fl.tx"; ty: "fl.ty"; tz: "fl.tz"; ua: "fl.ua"; ub: "fl.ub"; uc: "fl.uc"; ud: "fl.ud"; ue: "fl.ue"; uf: "fl.uf"; ug: "fl.ug"; uh: "fl.uh"; ui: "fl.ui"; uj: "fl.uj"; uk: "fl.uk"; ul: "fl.ul"; um: "fl.um"; un: "fl.un"; uo: "fl.uo"; up: "fl.up"; uq: "fl.uq"; ur: "fl.ur"; us: "fl.us"; ut: "fl.ut"; uu: "fl.uu"; uv: "fl.uv"; uw: "fl.uw"; ux: "fl.ux"; uy: "fl.uy"; uz: "fl.uz"; va: "fl.va"; vb: "fl.vb"; vc: "fl.vc"; vd: "fl.vd"; ve: "fl.ve"; vf: "fl.vf"; vg: "fl.vg"; vh: "fl.vh"; vi: "fl.vi"; vj: "fl.vj"; vk: "fl.vk"; vl: "fl.vl"; vm: "fl.vm"; vn: "fl.vn"; vo: "fl.vo"; vp: "fl.vp"; vq: "fl.vq"; vr: "fl.vr"; vs: "fl.vs"; vt: "fl.vt"; vu: "fl.vu"; vv: "fl.vv"; vw: "fl.vw"; vx: "fl.vx"; vy: "fl.vy"; vz: "fl.vz"; wa: "fl.wa"; wb: "fl.wb"; wc: "fl.wc"; wd: "fl.wd"; we: "fl.we"; wf: "fl.wf"; wg: "fl.wg"; wh: "fl.wh"; wi: "fl.wi"; wj: "fl.wj"; wk: "fl.wk"; wl: "fl.wl"; wm: "fl.wm"; wn: "fl.wn"; wo: "fl.wo"; wp: "fl.wp"; wq: "fl.wq"; wr: "fl.wr"; ws: "fl.ws"; wt: "fl.wt"; wu: "fl.wu"; wv: "fl.wv"; ww: "fl.ww"; wx: "fl.wx"; wy: "fl.wy"; wz: "fl.wz"; xa: "fl.xa"; xb: "fl.xb"; xc: "fl.xc"; xd: "fl.xd"; xe: "fl.xe"; xf: "fl.xf"; xg: "fl.xg"; xh: "fl.xh"; xi: "fl.xi"; xj: "fl.xj"; xk: "fl.xk"; xl: "fl.xl"; xm: "fl.xm"; xn: "fl.xn"; xo: "fl.xo"; xp: "fl.xp"; xq: "fl.xq"; xr: "fl.xr"; xs: "fl.xs"; xt: "fl.xt"; xu: "fl.xu"; xv: "fl.xv"; xw: "fl.xw"; xx: "fl.xx"; xy: "fl.xy"; xz: "fl.xz"; ya: "fl.ya"; yb: "fl.yb"; yc: "fl.yc"; yd: "fl.yd"; ye: "fl.ye"; yf: "fl.yf"; yg: "fl.yg"; yh: "fl.yh"; yi: "fl.yi"; yj: "fl.yj"; yk: "fl.yk"; yl: "fl.yl"; ym: "fl.ym"; yn: "fl.yn"; yo: "fl.yo"; yp: "fl.yp"; yq: "fl.yq"; yr: "fl.yr"; ys: "fl.ys"; yt: "fl.yt"; yu: "fl.yu"; yv: "fl.yv"; yw: "fl.yw"; yx: "fl.yx"; yy: "fl.yy"; yz: "fl.yz"; za: "fl.za"; zb: "fl.zb"; zc: "fl.zc"; zd: "fl.zd"; ze: "fl.ze"; zf: "fl.zf"; zg: "fl.zg"; zh: "fl.zh"; zi: "fl.zi"; zj: "fl.zj"; zk: "fl.zk"; zl: "fl.zl"; zm: "fl.zm"; zn: "fl.zn"; zo: "fl.zo"; zp: "fl.zp"; zq: "fl.zq"; zr: "fl.zr"; zs: "fl.zs"; zt: "fl.zt"; zu: "fl.zu"; zv: "fl.zv"; zw: "fl.zw"; zx: "fl.zx"; zy: "fl.zy"; zz: "fl.zz"; }; fm: { aa: "fm.aa"; ab: "fm.ab"; ac: "fm.ac"; ad: "fm.ad"; ae: "fm.ae"; af: "fm.af"; ag: "fm.ag"; ah: "fm.ah"; ai: "fm.ai"; aj: "fm.aj"; ak: "fm.ak"; al: "fm.al"; am: "fm.am"; an: "fm.an"; ao: "fm.ao"; ap: "fm.ap"; aq: "fm.aq"; ar: "fm.ar"; as: "fm.as"; at: "fm.at"; au: "fm.au"; av: "fm.av"; aw: "fm.aw"; ax: "fm.ax"; ay: "fm.ay"; az: "fm.az"; ba: "fm.ba"; bb: "fm.bb"; bc: "fm.bc"; bd: "fm.bd"; be: "fm.be"; bf: "fm.bf"; bg: "fm.bg"; bh: "fm.bh"; bi: "fm.bi"; bj: "fm.bj"; bk: "fm.bk"; bl: "fm.bl"; bm: "fm.bm"; bn: "fm.bn"; bo: "fm.bo"; bp: "fm.bp"; bq: "fm.bq"; br: "fm.br"; bs: "fm.bs"; bt: "fm.bt"; bu: "fm.bu"; bv: "fm.bv"; bw: "fm.bw"; bx: "fm.bx"; by: "fm.by"; bz: "fm.bz"; ca: "fm.ca"; cb: "fm.cb"; cc: "fm.cc"; cd: "fm.cd"; ce: "fm.ce"; cf: "fm.cf"; cg: "fm.cg"; ch: "fm.ch"; ci: "fm.ci"; cj: "fm.cj"; ck: "fm.ck"; cl: "fm.cl"; cm: "fm.cm"; cn: "fm.cn"; co: "fm.co"; cp: "fm.cp"; cq: "fm.cq"; cr: "fm.cr"; cs: "fm.cs"; ct: "fm.ct"; cu: "fm.cu"; cv: "fm.cv"; cw: "fm.cw"; cx: "fm.cx"; cy: "fm.cy"; cz: "fm.cz"; da: "fm.da"; db: "fm.db"; dc: "fm.dc"; dd: "fm.dd"; de: "fm.de"; df: "fm.df"; dg: "fm.dg"; dh: "fm.dh"; di: "fm.di"; dj: "fm.dj"; dk: "fm.dk"; dl: "fm.dl"; dm: "fm.dm"; dn: "fm.dn"; do: "fm.do"; dp: "fm.dp"; dq: "fm.dq"; dr: "fm.dr"; ds: "fm.ds"; dt: "fm.dt"; du: "fm.du"; dv: "fm.dv"; dw: "fm.dw"; dx: "fm.dx"; dy: "fm.dy"; dz: "fm.dz"; ea: "fm.ea"; eb: "fm.eb"; ec: "fm.ec"; ed: "fm.ed"; ee: "fm.ee"; ef: "fm.ef"; eg: "fm.eg"; eh: "fm.eh"; ei: "fm.ei"; ej: "fm.ej"; ek: "fm.ek"; el: "fm.el"; em: "fm.em"; en: "fm.en"; eo: "fm.eo"; ep: "fm.ep"; eq: "fm.eq"; er: "fm.er"; es: "fm.es"; et: "fm.et"; eu: "fm.eu"; ev: "fm.ev"; ew: "fm.ew"; ex: "fm.ex"; ey: "fm.ey"; ez: "fm.ez"; fa: "fm.fa"; fb: "fm.fb"; fc: "fm.fc"; fd: "fm.fd"; fe: "fm.fe"; ff: "fm.ff"; fg: "fm.fg"; fh: "fm.fh"; fi: "fm.fi"; fj: "fm.fj"; fk: "fm.fk"; fl: "fm.fl"; fm: "fm.fm"; fn: "fm.fn"; fo: "fm.fo"; fp: "fm.fp"; fq: "fm.fq"; fr: "fm.fr"; fs: "fm.fs"; ft: "fm.ft"; fu: "fm.fu"; fv: "fm.fv"; fw: "fm.fw"; fx: "fm.fx"; fy: "fm.fy"; fz: "fm.fz"; ga: "fm.ga"; gb: "fm.gb"; gc: "fm.gc"; gd: "fm.gd"; ge: "fm.ge"; gf: "fm.gf"; gg: "fm.gg"; gh: "fm.gh"; gi: "fm.gi"; gj: "fm.gj"; gk: "fm.gk"; gl: "fm.gl"; gm: "fm.gm"; gn: "fm.gn"; go: "fm.go"; gp: "fm.gp"; gq: "fm.gq"; gr: "fm.gr"; gs: "fm.gs"; gt: "fm.gt"; gu: "fm.gu"; gv: "fm.gv"; gw: "fm.gw"; gx: "fm.gx"; gy: "fm.gy"; gz: "fm.gz"; ha: "fm.ha"; hb: "fm.hb"; hc: "fm.hc"; hd: "fm.hd"; he: "fm.he"; hf: "fm.hf"; hg: "fm.hg"; hh: "fm.hh"; hi: "fm.hi"; hj: "fm.hj"; hk: "fm.hk"; hl: "fm.hl"; hm: "fm.hm"; hn: "fm.hn"; ho: "fm.ho"; hp: "fm.hp"; hq: "fm.hq"; hr: "fm.hr"; hs: "fm.hs"; ht: "fm.ht"; hu: "fm.hu"; hv: "fm.hv"; hw: "fm.hw"; hx: "fm.hx"; hy: "fm.hy"; hz: "fm.hz"; ia: "fm.ia"; ib: "fm.ib"; ic: "fm.ic"; id: "fm.id"; ie: "fm.ie"; if: "fm.if"; ig: "fm.ig"; ih: "fm.ih"; ii: "fm.ii"; ij: "fm.ij"; ik: "fm.ik"; il: "fm.il"; im: "fm.im"; in: "fm.in"; io: "fm.io"; ip: "fm.ip"; iq: "fm.iq"; ir: "fm.ir"; is: "fm.is"; it: "fm.it"; iu: "fm.iu"; iv: "fm.iv"; iw: "fm.iw"; ix: "fm.ix"; iy: "fm.iy"; iz: "fm.iz"; ja: "fm.ja"; jb: "fm.jb"; jc: "fm.jc"; jd: "fm.jd"; je: "fm.je"; jf: "fm.jf"; jg: "fm.jg"; jh: "fm.jh"; ji: "fm.ji"; jj: "fm.jj"; jk: "fm.jk"; jl: "fm.jl"; jm: "fm.jm"; jn: "fm.jn"; jo: "fm.jo"; jp: "fm.jp"; jq: "fm.jq"; jr: "fm.jr"; js: "fm.js"; jt: "fm.jt"; ju: "fm.ju"; jv: "fm.jv"; jw: "fm.jw"; jx: "fm.jx"; jy: "fm.jy"; jz: "fm.jz"; ka: "fm.ka"; kb: "fm.kb"; kc: "fm.kc"; kd: "fm.kd"; ke: "fm.ke"; kf: "fm.kf"; kg: "fm.kg"; kh: "fm.kh"; ki: "fm.ki"; kj: "fm.kj"; kk: "fm.kk"; kl: "fm.kl"; km: "fm.km"; kn: "fm.kn"; ko: "fm.ko"; kp: "fm.kp"; kq: "fm.kq"; kr: "fm.kr"; ks: "fm.ks"; kt: "fm.kt"; ku: "fm.ku"; kv: "fm.kv"; kw: "fm.kw"; kx: "fm.kx"; ky: "fm.ky"; kz: "fm.kz"; la: "fm.la"; lb: "fm.lb"; lc: "fm.lc"; ld: "fm.ld"; le: "fm.le"; lf: "fm.lf"; lg: "fm.lg"; lh: "fm.lh"; li: "fm.li"; lj: "fm.lj"; lk: "fm.lk"; ll: "fm.ll"; lm: "fm.lm"; ln: "fm.ln"; lo: "fm.lo"; lp: "fm.lp"; lq: "fm.lq"; lr: "fm.lr"; ls: "fm.ls"; lt: "fm.lt"; lu: "fm.lu"; lv: "fm.lv"; lw: "fm.lw"; lx: "fm.lx"; ly: "fm.ly"; lz: "fm.lz"; ma: "fm.ma"; mb: "fm.mb"; mc: "fm.mc"; md: "fm.md"; me: "fm.me"; mf: "fm.mf"; mg: "fm.mg"; mh: "fm.mh"; mi: "fm.mi"; mj: "fm.mj"; mk: "fm.mk"; ml: "fm.ml"; mm: "fm.mm"; mn: "fm.mn"; mo: "fm.mo"; mp: "fm.mp"; mq: "fm.mq"; mr: "fm.mr"; ms: "fm.ms"; mt: "fm.mt"; mu: "fm.mu"; mv: "fm.mv"; mw: "fm.mw"; mx: "fm.mx"; my: "fm.my"; mz: "fm.mz"; na: "fm.na"; nb: "fm.nb"; nc: "fm.nc"; nd: "fm.nd"; ne: "fm.ne"; nf: "fm.nf"; ng: "fm.ng"; nh: "fm.nh"; ni: "fm.ni"; nj: "fm.nj"; nk: "fm.nk"; nl: "fm.nl"; nm: "fm.nm"; nn: "fm.nn"; no: "fm.no"; np: "fm.np"; nq: "fm.nq"; nr: "fm.nr"; ns: "fm.ns"; nt: "fm.nt"; nu: "fm.nu"; nv: "fm.nv"; nw: "fm.nw"; nx: "fm.nx"; ny: "fm.ny"; nz: "fm.nz"; oa: "fm.oa"; ob: "fm.ob"; oc: "fm.oc"; od: "fm.od"; oe: "fm.oe"; of: "fm.of"; og: "fm.og"; oh: "fm.oh"; oi: "fm.oi"; oj: "fm.oj"; ok: "fm.ok"; ol: "fm.ol"; om: "fm.om"; on: "fm.on"; oo: "fm.oo"; op: "fm.op"; oq: "fm.oq"; or: "fm.or"; os: "fm.os"; ot: "fm.ot"; ou: "fm.ou"; ov: "fm.ov"; ow: "fm.ow"; ox: "fm.ox"; oy: "fm.oy"; oz: "fm.oz"; pa: "fm.pa"; pb: "fm.pb"; pc: "fm.pc"; pd: "fm.pd"; pe: "fm.pe"; pf: "fm.pf"; pg: "fm.pg"; ph: "fm.ph"; pi: "fm.pi"; pj: "fm.pj"; pk: "fm.pk"; pl: "fm.pl"; pm: "fm.pm"; pn: "fm.pn"; po: "fm.po"; pp: "fm.pp"; pq: "fm.pq"; pr: "fm.pr"; ps: "fm.ps"; pt: "fm.pt"; pu: "fm.pu"; pv: "fm.pv"; pw: "fm.pw"; px: "fm.px"; py: "fm.py"; pz: "fm.pz"; qa: "fm.qa"; qb: "fm.qb"; qc: "fm.qc"; qd: "fm.qd"; qe: "fm.qe"; qf: "fm.qf"; qg: "fm.qg"; qh: "fm.qh"; qi: "fm.qi"; qj: "fm.qj"; qk: "fm.qk"; ql: "fm.ql"; qm: "fm.qm"; qn: "fm.qn"; qo: "fm.qo"; qp: "fm.qp"; qq: "fm.qq"; qr: "fm.qr"; qs: "fm.qs"; qt: "fm.qt"; qu: "fm.qu"; qv: "fm.qv"; qw: "fm.qw"; qx: "fm.qx"; qy: "fm.qy"; qz: "fm.qz"; ra: "fm.ra"; rb: "fm.rb"; rc: "fm.rc"; rd: "fm.rd"; re: "fm.re"; rf: "fm.rf"; rg: "fm.rg"; rh: "fm.rh"; ri: "fm.ri"; rj: "fm.rj"; rk: "fm.rk"; rl: "fm.rl"; rm: "fm.rm"; rn: "fm.rn"; ro: "fm.ro"; rp: "fm.rp"; rq: "fm.rq"; rr: "fm.rr"; rs: "fm.rs"; rt: "fm.rt"; ru: "fm.ru"; rv: "fm.rv"; rw: "fm.rw"; rx: "fm.rx"; ry: "fm.ry"; rz: "fm.rz"; sa: "fm.sa"; sb: "fm.sb"; sc: "fm.sc"; sd: "fm.sd"; se: "fm.se"; sf: "fm.sf"; sg: "fm.sg"; sh: "fm.sh"; si: "fm.si"; sj: "fm.sj"; sk: "fm.sk"; sl: "fm.sl"; sm: "fm.sm"; sn: "fm.sn"; so: "fm.so"; sp: "fm.sp"; sq: "fm.sq"; sr: "fm.sr"; ss: "fm.ss"; st: "fm.st"; su: "fm.su"; sv: "fm.sv"; sw: "fm.sw"; sx: "fm.sx"; sy: "fm.sy"; sz: "fm.sz"; ta: "fm.ta"; tb: "fm.tb"; tc: "fm.tc"; td: "fm.td"; te: "fm.te"; tf: "fm.tf"; tg: "fm.tg"; th: "fm.th"; ti: "fm.ti"; tj: "fm.tj"; tk: "fm.tk"; tl: "fm.tl"; tm: "fm.tm"; tn: "fm.tn"; to: "fm.to"; tp: "fm.tp"; tq: "fm.tq"; tr: "fm.tr"; ts: "fm.ts"; tt: "fm.tt"; tu: "fm.tu"; tv: "fm.tv"; tw: "fm.tw"; tx: "fm.tx"; ty: "fm.ty"; tz: "fm.tz"; ua: "fm.ua"; ub: "fm.ub"; uc: "fm.uc"; ud: "fm.ud"; ue: "fm.ue"; uf: "fm.uf"; ug: "fm.ug"; uh: "fm.uh"; ui: "fm.ui"; uj: "fm.uj"; uk: "fm.uk"; ul: "fm.ul"; um: "fm.um"; un: "fm.un"; uo: "fm.uo"; up: "fm.up"; uq: "fm.uq"; ur: "fm.ur"; us: "fm.us"; ut: "fm.ut"; uu: "fm.uu"; uv: "fm.uv"; uw: "fm.uw"; ux: "fm.ux"; uy: "fm.uy"; uz: "fm.uz"; va: "fm.va"; vb: "fm.vb"; vc: "fm.vc"; vd: "fm.vd"; ve: "fm.ve"; vf: "fm.vf"; vg: "fm.vg"; vh: "fm.vh"; vi: "fm.vi"; vj: "fm.vj"; vk: "fm.vk"; vl: "fm.vl"; vm: "fm.vm"; vn: "fm.vn"; vo: "fm.vo"; vp: "fm.vp"; vq: "fm.vq"; vr: "fm.vr"; vs: "fm.vs"; vt: "fm.vt"; vu: "fm.vu"; vv: "fm.vv"; vw: "fm.vw"; vx: "fm.vx"; vy: "fm.vy"; vz: "fm.vz"; wa: "fm.wa"; wb: "fm.wb"; wc: "fm.wc"; wd: "fm.wd"; we: "fm.we"; wf: "fm.wf"; wg: "fm.wg"; wh: "fm.wh"; wi: "fm.wi"; wj: "fm.wj"; wk: "fm.wk"; wl: "fm.wl"; wm: "fm.wm"; wn: "fm.wn"; wo: "fm.wo"; wp: "fm.wp"; wq: "fm.wq"; wr: "fm.wr"; ws: "fm.ws"; wt: "fm.wt"; wu: "fm.wu"; wv: "fm.wv"; ww: "fm.ww"; wx: "fm.wx"; wy: "fm.wy"; wz: "fm.wz"; xa: "fm.xa"; xb: "fm.xb"; xc: "fm.xc"; xd: "fm.xd"; xe: "fm.xe"; xf: "fm.xf"; xg: "fm.xg"; xh: "fm.xh"; xi: "fm.xi"; xj: "fm.xj"; xk: "fm.xk"; xl: "fm.xl"; xm: "fm.xm"; xn: "fm.xn"; xo: "fm.xo"; xp: "fm.xp"; xq: "fm.xq"; xr: "fm.xr"; xs: "fm.xs"; xt: "fm.xt"; xu: "fm.xu"; xv: "fm.xv"; xw: "fm.xw"; xx: "fm.xx"; xy: "fm.xy"; xz: "fm.xz"; ya: "fm.ya"; yb: "fm.yb"; yc: "fm.yc"; yd: "fm.yd"; ye: "fm.ye"; yf: "fm.yf"; yg: "fm.yg"; yh: "fm.yh"; yi: "fm.yi"; yj: "fm.yj"; yk: "fm.yk"; yl: "fm.yl"; ym: "fm.ym"; yn: "fm.yn"; yo: "fm.yo"; yp: "fm.yp"; yq: "fm.yq"; yr: "fm.yr"; ys: "fm.ys"; yt: "fm.yt"; yu: "fm.yu"; yv: "fm.yv"; yw: "fm.yw"; yx: "fm.yx"; yy: "fm.yy"; yz: "fm.yz"; za: "fm.za"; zb: "fm.zb"; zc: "fm.zc"; zd: "fm.zd"; ze: "fm.ze"; zf: "fm.zf"; zg: "fm.zg"; zh: "fm.zh"; zi: "fm.zi"; zj: "fm.zj"; zk: "fm.zk"; zl: "fm.zl"; zm: "fm.zm"; zn: "fm.zn"; zo: "fm.zo"; zp: "fm.zp"; zq: "fm.zq"; zr: "fm.zr"; zs: "fm.zs"; zt: "fm.zt"; zu: "fm.zu"; zv: "fm.zv"; zw: "fm.zw"; zx: "fm.zx"; zy: "fm.zy"; zz: "fm.zz"; }; fn: { aa: "fn.aa"; ab: "fn.ab"; ac: "fn.ac"; ad: "fn.ad"; ae: "fn.ae"; af: "fn.af"; ag: "fn.ag"; ah: "fn.ah"; ai: "fn.ai"; aj: "fn.aj"; ak: "fn.ak"; al: "fn.al"; am: "fn.am"; an: "fn.an"; ao: "fn.ao"; ap: "fn.ap"; aq: "fn.aq"; ar: "fn.ar"; as: "fn.as"; at: "fn.at"; au: "fn.au"; av: "fn.av"; aw: "fn.aw"; ax: "fn.ax"; ay: "fn.ay"; az: "fn.az"; ba: "fn.ba"; bb: "fn.bb"; bc: "fn.bc"; bd: "fn.bd"; be: "fn.be"; bf: "fn.bf"; bg: "fn.bg"; bh: "fn.bh"; bi: "fn.bi"; bj: "fn.bj"; bk: "fn.bk"; bl: "fn.bl"; bm: "fn.bm"; bn: "fn.bn"; bo: "fn.bo"; bp: "fn.bp"; bq: "fn.bq"; br: "fn.br"; bs: "fn.bs"; bt: "fn.bt"; bu: "fn.bu"; bv: "fn.bv"; bw: "fn.bw"; bx: "fn.bx"; by: "fn.by"; bz: "fn.bz"; ca: "fn.ca"; cb: "fn.cb"; cc: "fn.cc"; cd: "fn.cd"; ce: "fn.ce"; cf: "fn.cf"; cg: "fn.cg"; ch: "fn.ch"; ci: "fn.ci"; cj: "fn.cj"; ck: "fn.ck"; cl: "fn.cl"; cm: "fn.cm"; cn: "fn.cn"; co: "fn.co"; cp: "fn.cp"; cq: "fn.cq"; cr: "fn.cr"; cs: "fn.cs"; ct: "fn.ct"; cu: "fn.cu"; cv: "fn.cv"; cw: "fn.cw"; cx: "fn.cx"; cy: "fn.cy"; cz: "fn.cz"; da: "fn.da"; db: "fn.db"; dc: "fn.dc"; dd: "fn.dd"; de: "fn.de"; df: "fn.df"; dg: "fn.dg"; dh: "fn.dh"; di: "fn.di"; dj: "fn.dj"; dk: "fn.dk"; dl: "fn.dl"; dm: "fn.dm"; dn: "fn.dn"; do: "fn.do"; dp: "fn.dp"; dq: "fn.dq"; dr: "fn.dr"; ds: "fn.ds"; dt: "fn.dt"; du: "fn.du"; dv: "fn.dv"; dw: "fn.dw"; dx: "fn.dx"; dy: "fn.dy"; dz: "fn.dz"; ea: "fn.ea"; eb: "fn.eb"; ec: "fn.ec"; ed: "fn.ed"; ee: "fn.ee"; ef: "fn.ef"; eg: "fn.eg"; eh: "fn.eh"; ei: "fn.ei"; ej: "fn.ej"; ek: "fn.ek"; el: "fn.el"; em: "fn.em"; en: "fn.en"; eo: "fn.eo"; ep: "fn.ep"; eq: "fn.eq"; er: "fn.er"; es: "fn.es"; et: "fn.et"; eu: "fn.eu"; ev: "fn.ev"; ew: "fn.ew"; ex: "fn.ex"; ey: "fn.ey"; ez: "fn.ez"; fa: "fn.fa"; fb: "fn.fb"; fc: "fn.fc"; fd: "fn.fd"; fe: "fn.fe"; ff: "fn.ff"; fg: "fn.fg"; fh: "fn.fh"; fi: "fn.fi"; fj: "fn.fj"; fk: "fn.fk"; fl: "fn.fl"; fm: "fn.fm"; fn: "fn.fn"; fo: "fn.fo"; fp: "fn.fp"; fq: "fn.fq"; fr: "fn.fr"; fs: "fn.fs"; ft: "fn.ft"; fu: "fn.fu"; fv: "fn.fv"; fw: "fn.fw"; fx: "fn.fx"; fy: "fn.fy"; fz: "fn.fz"; ga: "fn.ga"; gb: "fn.gb"; gc: "fn.gc"; gd: "fn.gd"; ge: "fn.ge"; gf: "fn.gf"; gg: "fn.gg"; gh: "fn.gh"; gi: "fn.gi"; gj: "fn.gj"; gk: "fn.gk"; gl: "fn.gl"; gm: "fn.gm"; gn: "fn.gn"; go: "fn.go"; gp: "fn.gp"; gq: "fn.gq"; gr: "fn.gr"; gs: "fn.gs"; gt: "fn.gt"; gu: "fn.gu"; gv: "fn.gv"; gw: "fn.gw"; gx: "fn.gx"; gy: "fn.gy"; gz: "fn.gz"; ha: "fn.ha"; hb: "fn.hb"; hc: "fn.hc"; hd: "fn.hd"; he: "fn.he"; hf: "fn.hf"; hg: "fn.hg"; hh: "fn.hh"; hi: "fn.hi"; hj: "fn.hj"; hk: "fn.hk"; hl: "fn.hl"; hm: "fn.hm"; hn: "fn.hn"; ho: "fn.ho"; hp: "fn.hp"; hq: "fn.hq"; hr: "fn.hr"; hs: "fn.hs"; ht: "fn.ht"; hu: "fn.hu"; hv: "fn.hv"; hw: "fn.hw"; hx: "fn.hx"; hy: "fn.hy"; hz: "fn.hz"; ia: "fn.ia"; ib: "fn.ib"; ic: "fn.ic"; id: "fn.id"; ie: "fn.ie"; if: "fn.if"; ig: "fn.ig"; ih: "fn.ih"; ii: "fn.ii"; ij: "fn.ij"; ik: "fn.ik"; il: "fn.il"; im: "fn.im"; in: "fn.in"; io: "fn.io"; ip: "fn.ip"; iq: "fn.iq"; ir: "fn.ir"; is: "fn.is"; it: "fn.it"; iu: "fn.iu"; iv: "fn.iv"; iw: "fn.iw"; ix: "fn.ix"; iy: "fn.iy"; iz: "fn.iz"; ja: "fn.ja"; jb: "fn.jb"; jc: "fn.jc"; jd: "fn.jd"; je: "fn.je"; jf: "fn.jf"; jg: "fn.jg"; jh: "fn.jh"; ji: "fn.ji"; jj: "fn.jj"; jk: "fn.jk"; jl: "fn.jl"; jm: "fn.jm"; jn: "fn.jn"; jo: "fn.jo"; jp: "fn.jp"; jq: "fn.jq"; jr: "fn.jr"; js: "fn.js"; jt: "fn.jt"; ju: "fn.ju"; jv: "fn.jv"; jw: "fn.jw"; jx: "fn.jx"; jy: "fn.jy"; jz: "fn.jz"; ka: "fn.ka"; kb: "fn.kb"; kc: "fn.kc"; kd: "fn.kd"; ke: "fn.ke"; kf: "fn.kf"; kg: "fn.kg"; kh: "fn.kh"; ki: "fn.ki"; kj: "fn.kj"; kk: "fn.kk"; kl: "fn.kl"; km: "fn.km"; kn: "fn.kn"; ko: "fn.ko"; kp: "fn.kp"; kq: "fn.kq"; kr: "fn.kr"; ks: "fn.ks"; kt: "fn.kt"; ku: "fn.ku"; kv: "fn.kv"; kw: "fn.kw"; kx: "fn.kx"; ky: "fn.ky"; kz: "fn.kz"; la: "fn.la"; lb: "fn.lb"; lc: "fn.lc"; ld: "fn.ld"; le: "fn.le"; lf: "fn.lf"; lg: "fn.lg"; lh: "fn.lh"; li: "fn.li"; lj: "fn.lj"; lk: "fn.lk"; ll: "fn.ll"; lm: "fn.lm"; ln: "fn.ln"; lo: "fn.lo"; lp: "fn.lp"; lq: "fn.lq"; lr: "fn.lr"; ls: "fn.ls"; lt: "fn.lt"; lu: "fn.lu"; lv: "fn.lv"; lw: "fn.lw"; lx: "fn.lx"; ly: "fn.ly"; lz: "fn.lz"; ma: "fn.ma"; mb: "fn.mb"; mc: "fn.mc"; md: "fn.md"; me: "fn.me"; mf: "fn.mf"; mg: "fn.mg"; mh: "fn.mh"; mi: "fn.mi"; mj: "fn.mj"; mk: "fn.mk"; ml: "fn.ml"; mm: "fn.mm"; mn: "fn.mn"; mo: "fn.mo"; mp: "fn.mp"; mq: "fn.mq"; mr: "fn.mr"; ms: "fn.ms"; mt: "fn.mt"; mu: "fn.mu"; mv: "fn.mv"; mw: "fn.mw"; mx: "fn.mx"; my: "fn.my"; mz: "fn.mz"; na: "fn.na"; nb: "fn.nb"; nc: "fn.nc"; nd: "fn.nd"; ne: "fn.ne"; nf: "fn.nf"; ng: "fn.ng"; nh: "fn.nh"; ni: "fn.ni"; nj: "fn.nj"; nk: "fn.nk"; nl: "fn.nl"; nm: "fn.nm"; nn: "fn.nn"; no: "fn.no"; np: "fn.np"; nq: "fn.nq"; nr: "fn.nr"; ns: "fn.ns"; nt: "fn.nt"; nu: "fn.nu"; nv: "fn.nv"; nw: "fn.nw"; nx: "fn.nx"; ny: "fn.ny"; nz: "fn.nz"; oa: "fn.oa"; ob: "fn.ob"; oc: "fn.oc"; od: "fn.od"; oe: "fn.oe"; of: "fn.of"; og: "fn.og"; oh: "fn.oh"; oi: "fn.oi"; oj: "fn.oj"; ok: "fn.ok"; ol: "fn.ol"; om: "fn.om"; on: "fn.on"; oo: "fn.oo"; op: "fn.op"; oq: "fn.oq"; or: "fn.or"; os: "fn.os"; ot: "fn.ot"; ou: "fn.ou"; ov: "fn.ov"; ow: "fn.ow"; ox: "fn.ox"; oy: "fn.oy"; oz: "fn.oz"; pa: "fn.pa"; pb: "fn.pb"; pc: "fn.pc"; pd: "fn.pd"; pe: "fn.pe"; pf: "fn.pf"; pg: "fn.pg"; ph: "fn.ph"; pi: "fn.pi"; pj: "fn.pj"; pk: "fn.pk"; pl: "fn.pl"; pm: "fn.pm"; pn: "fn.pn"; po: "fn.po"; pp: "fn.pp"; pq: "fn.pq"; pr: "fn.pr"; ps: "fn.ps"; pt: "fn.pt"; pu: "fn.pu"; pv: "fn.pv"; pw: "fn.pw"; px: "fn.px"; py: "fn.py"; pz: "fn.pz"; qa: "fn.qa"; qb: "fn.qb"; qc: "fn.qc"; qd: "fn.qd"; qe: "fn.qe"; qf: "fn.qf"; qg: "fn.qg"; qh: "fn.qh"; qi: "fn.qi"; qj: "fn.qj"; qk: "fn.qk"; ql: "fn.ql"; qm: "fn.qm"; qn: "fn.qn"; qo: "fn.qo"; qp: "fn.qp"; qq: "fn.qq"; qr: "fn.qr"; qs: "fn.qs"; qt: "fn.qt"; qu: "fn.qu"; qv: "fn.qv"; qw: "fn.qw"; qx: "fn.qx"; qy: "fn.qy"; qz: "fn.qz"; ra: "fn.ra"; rb: "fn.rb"; rc: "fn.rc"; rd: "fn.rd"; re: "fn.re"; rf: "fn.rf"; rg: "fn.rg"; rh: "fn.rh"; ri: "fn.ri"; rj: "fn.rj"; rk: "fn.rk"; rl: "fn.rl"; rm: "fn.rm"; rn: "fn.rn"; ro: "fn.ro"; rp: "fn.rp"; rq: "fn.rq"; rr: "fn.rr"; rs: "fn.rs"; rt: "fn.rt"; ru: "fn.ru"; rv: "fn.rv"; rw: "fn.rw"; rx: "fn.rx"; ry: "fn.ry"; rz: "fn.rz"; sa: "fn.sa"; sb: "fn.sb"; sc: "fn.sc"; sd: "fn.sd"; se: "fn.se"; sf: "fn.sf"; sg: "fn.sg"; sh: "fn.sh"; si: "fn.si"; sj: "fn.sj"; sk: "fn.sk"; sl: "fn.sl"; sm: "fn.sm"; sn: "fn.sn"; so: "fn.so"; sp: "fn.sp"; sq: "fn.sq"; sr: "fn.sr"; ss: "fn.ss"; st: "fn.st"; su: "fn.su"; sv: "fn.sv"; sw: "fn.sw"; sx: "fn.sx"; sy: "fn.sy"; sz: "fn.sz"; ta: "fn.ta"; tb: "fn.tb"; tc: "fn.tc"; td: "fn.td"; te: "fn.te"; tf: "fn.tf"; tg: "fn.tg"; th: "fn.th"; ti: "fn.ti"; tj: "fn.tj"; tk: "fn.tk"; tl: "fn.tl"; tm: "fn.tm"; tn: "fn.tn"; to: "fn.to"; tp: "fn.tp"; tq: "fn.tq"; tr: "fn.tr"; ts: "fn.ts"; tt: "fn.tt"; tu: "fn.tu"; tv: "fn.tv"; tw: "fn.tw"; tx: "fn.tx"; ty: "fn.ty"; tz: "fn.tz"; ua: "fn.ua"; ub: "fn.ub"; uc: "fn.uc"; ud: "fn.ud"; ue: "fn.ue"; uf: "fn.uf"; ug: "fn.ug"; uh: "fn.uh"; ui: "fn.ui"; uj: "fn.uj"; uk: "fn.uk"; ul: "fn.ul"; um: "fn.um"; un: "fn.un"; uo: "fn.uo"; up: "fn.up"; uq: "fn.uq"; ur: "fn.ur"; us: "fn.us"; ut: "fn.ut"; uu: "fn.uu"; uv: "fn.uv"; uw: "fn.uw"; ux: "fn.ux"; uy: "fn.uy"; uz: "fn.uz"; va: "fn.va"; vb: "fn.vb"; vc: "fn.vc"; vd: "fn.vd"; ve: "fn.ve"; vf: "fn.vf"; vg: "fn.vg"; vh: "fn.vh"; vi: "fn.vi"; vj: "fn.vj"; vk: "fn.vk"; vl: "fn.vl"; vm: "fn.vm"; vn: "fn.vn"; vo: "fn.vo"; vp: "fn.vp"; vq: "fn.vq"; vr: "fn.vr"; vs: "fn.vs"; vt: "fn.vt"; vu: "fn.vu"; vv: "fn.vv"; vw: "fn.vw"; vx: "fn.vx"; vy: "fn.vy"; vz: "fn.vz"; wa: "fn.wa"; wb: "fn.wb"; wc: "fn.wc"; wd: "fn.wd"; we: "fn.we"; wf: "fn.wf"; wg: "fn.wg"; wh: "fn.wh"; wi: "fn.wi"; wj: "fn.wj"; wk: "fn.wk"; wl: "fn.wl"; wm: "fn.wm"; wn: "fn.wn"; wo: "fn.wo"; wp: "fn.wp"; wq: "fn.wq"; wr: "fn.wr"; ws: "fn.ws"; wt: "fn.wt"; wu: "fn.wu"; wv: "fn.wv"; ww: "fn.ww"; wx: "fn.wx"; wy: "fn.wy"; wz: "fn.wz"; xa: "fn.xa"; xb: "fn.xb"; xc: "fn.xc"; xd: "fn.xd"; xe: "fn.xe"; xf: "fn.xf"; xg: "fn.xg"; xh: "fn.xh"; xi: "fn.xi"; xj: "fn.xj"; xk: "fn.xk"; xl: "fn.xl"; xm: "fn.xm"; xn: "fn.xn"; xo: "fn.xo"; xp: "fn.xp"; xq: "fn.xq"; xr: "fn.xr"; xs: "fn.xs"; xt: "fn.xt"; xu: "fn.xu"; xv: "fn.xv"; xw: "fn.xw"; xx: "fn.xx"; xy: "fn.xy"; xz: "fn.xz"; ya: "fn.ya"; yb: "fn.yb"; yc: "fn.yc"; yd: "fn.yd"; ye: "fn.ye"; yf: "fn.yf"; yg: "fn.yg"; yh: "fn.yh"; yi: "fn.yi"; yj: "fn.yj"; yk: "fn.yk"; yl: "fn.yl"; ym: "fn.ym"; yn: "fn.yn"; yo: "fn.yo"; yp: "fn.yp"; yq: "fn.yq"; yr: "fn.yr"; ys: "fn.ys"; yt: "fn.yt"; yu: "fn.yu"; yv: "fn.yv"; yw: "fn.yw"; yx: "fn.yx"; yy: "fn.yy"; yz: "fn.yz"; za: "fn.za"; zb: "fn.zb"; zc: "fn.zc"; zd: "fn.zd"; ze: "fn.ze"; zf: "fn.zf"; zg: "fn.zg"; zh: "fn.zh"; zi: "fn.zi"; zj: "fn.zj"; zk: "fn.zk"; zl: "fn.zl"; zm: "fn.zm"; zn: "fn.zn"; zo: "fn.zo"; zp: "fn.zp"; zq: "fn.zq"; zr: "fn.zr"; zs: "fn.zs"; zt: "fn.zt"; zu: "fn.zu"; zv: "fn.zv"; zw: "fn.zw"; zx: "fn.zx"; zy: "fn.zy"; zz: "fn.zz"; }; fo: { aa: "fo.aa"; ab: "fo.ab"; ac: "fo.ac"; ad: "fo.ad"; ae: "fo.ae"; af: "fo.af"; ag: "fo.ag"; ah: "fo.ah"; ai: "fo.ai"; aj: "fo.aj"; ak: "fo.ak"; al: "fo.al"; am: "fo.am"; an: "fo.an"; ao: "fo.ao"; ap: "fo.ap"; aq: "fo.aq"; ar: "fo.ar"; as: "fo.as"; at: "fo.at"; au: "fo.au"; av: "fo.av"; aw: "fo.aw"; ax: "fo.ax"; ay: "fo.ay"; az: "fo.az"; ba: "fo.ba"; bb: "fo.bb"; bc: "fo.bc"; bd: "fo.bd"; be: "fo.be"; bf: "fo.bf"; bg: "fo.bg"; bh: "fo.bh"; bi: "fo.bi"; bj: "fo.bj"; bk: "fo.bk"; bl: "fo.bl"; bm: "fo.bm"; bn: "fo.bn"; bo: "fo.bo"; bp: "fo.bp"; bq: "fo.bq"; br: "fo.br"; bs: "fo.bs"; bt: "fo.bt"; bu: "fo.bu"; bv: "fo.bv"; bw: "fo.bw"; bx: "fo.bx"; by: "fo.by"; bz: "fo.bz"; ca: "fo.ca"; cb: "fo.cb"; cc: "fo.cc"; cd: "fo.cd"; ce: "fo.ce"; cf: "fo.cf"; cg: "fo.cg"; ch: "fo.ch"; ci: "fo.ci"; cj: "fo.cj"; ck: "fo.ck"; cl: "fo.cl"; cm: "fo.cm"; cn: "fo.cn"; co: "fo.co"; cp: "fo.cp"; cq: "fo.cq"; cr: "fo.cr"; cs: "fo.cs"; ct: "fo.ct"; cu: "fo.cu"; cv: "fo.cv"; cw: "fo.cw"; cx: "fo.cx"; cy: "fo.cy"; cz: "fo.cz"; da: "fo.da"; db: "fo.db"; dc: "fo.dc"; dd: "fo.dd"; de: "fo.de"; df: "fo.df"; dg: "fo.dg"; dh: "fo.dh"; di: "fo.di"; dj: "fo.dj"; dk: "fo.dk"; dl: "fo.dl"; dm: "fo.dm"; dn: "fo.dn"; do: "fo.do"; dp: "fo.dp"; dq: "fo.dq"; dr: "fo.dr"; ds: "fo.ds"; dt: "fo.dt"; du: "fo.du"; dv: "fo.dv"; dw: "fo.dw"; dx: "fo.dx"; dy: "fo.dy"; dz: "fo.dz"; ea: "fo.ea"; eb: "fo.eb"; ec: "fo.ec"; ed: "fo.ed"; ee: "fo.ee"; ef: "fo.ef"; eg: "fo.eg"; eh: "fo.eh"; ei: "fo.ei"; ej: "fo.ej"; ek: "fo.ek"; el: "fo.el"; em: "fo.em"; en: "fo.en"; eo: "fo.eo"; ep: "fo.ep"; eq: "fo.eq"; er: "fo.er"; es: "fo.es"; et: "fo.et"; eu: "fo.eu"; ev: "fo.ev"; ew: "fo.ew"; ex: "fo.ex"; ey: "fo.ey"; ez: "fo.ez"; fa: "fo.fa"; fb: "fo.fb"; fc: "fo.fc"; fd: "fo.fd"; fe: "fo.fe"; ff: "fo.ff"; fg: "fo.fg"; fh: "fo.fh"; fi: "fo.fi"; fj: "fo.fj"; fk: "fo.fk"; fl: "fo.fl"; fm: "fo.fm"; fn: "fo.fn"; fo: "fo.fo"; fp: "fo.fp"; fq: "fo.fq"; fr: "fo.fr"; fs: "fo.fs"; ft: "fo.ft"; fu: "fo.fu"; fv: "fo.fv"; fw: "fo.fw"; fx: "fo.fx"; fy: "fo.fy"; fz: "fo.fz"; ga: "fo.ga"; gb: "fo.gb"; gc: "fo.gc"; gd: "fo.gd"; ge: "fo.ge"; gf: "fo.gf"; gg: "fo.gg"; gh: "fo.gh"; gi: "fo.gi"; gj: "fo.gj"; gk: "fo.gk"; gl: "fo.gl"; gm: "fo.gm"; gn: "fo.gn"; go: "fo.go"; gp: "fo.gp"; gq: "fo.gq"; gr: "fo.gr"; gs: "fo.gs"; gt: "fo.gt"; gu: "fo.gu"; gv: "fo.gv"; gw: "fo.gw"; gx: "fo.gx"; gy: "fo.gy"; gz: "fo.gz"; ha: "fo.ha"; hb: "fo.hb"; hc: "fo.hc"; hd: "fo.hd"; he: "fo.he"; hf: "fo.hf"; hg: "fo.hg"; hh: "fo.hh"; hi: "fo.hi"; hj: "fo.hj"; hk: "fo.hk"; hl: "fo.hl"; hm: "fo.hm"; hn: "fo.hn"; ho: "fo.ho"; hp: "fo.hp"; hq: "fo.hq"; hr: "fo.hr"; hs: "fo.hs"; ht: "fo.ht"; hu: "fo.hu"; hv: "fo.hv"; hw: "fo.hw"; hx: "fo.hx"; hy: "fo.hy"; hz: "fo.hz"; ia: "fo.ia"; ib: "fo.ib"; ic: "fo.ic"; id: "fo.id"; ie: "fo.ie"; if: "fo.if"; ig: "fo.ig"; ih: "fo.ih"; ii: "fo.ii"; ij: "fo.ij"; ik: "fo.ik"; il: "fo.il"; im: "fo.im"; in: "fo.in"; io: "fo.io"; ip: "fo.ip"; iq: "fo.iq"; ir: "fo.ir"; is: "fo.is"; it: "fo.it"; iu: "fo.iu"; iv: "fo.iv"; iw: "fo.iw"; ix: "fo.ix"; iy: "fo.iy"; iz: "fo.iz"; ja: "fo.ja"; jb: "fo.jb"; jc: "fo.jc"; jd: "fo.jd"; je: "fo.je"; jf: "fo.jf"; jg: "fo.jg"; jh: "fo.jh"; ji: "fo.ji"; jj: "fo.jj"; jk: "fo.jk"; jl: "fo.jl"; jm: "fo.jm"; jn: "fo.jn"; jo: "fo.jo"; jp: "fo.jp"; jq: "fo.jq"; jr: "fo.jr"; js: "fo.js"; jt: "fo.jt"; ju: "fo.ju"; jv: "fo.jv"; jw: "fo.jw"; jx: "fo.jx"; jy: "fo.jy"; jz: "fo.jz"; ka: "fo.ka"; kb: "fo.kb"; kc: "fo.kc"; kd: "fo.kd"; ke: "fo.ke"; kf: "fo.kf"; kg: "fo.kg"; kh: "fo.kh"; ki: "fo.ki"; kj: "fo.kj"; kk: "fo.kk"; kl: "fo.kl"; km: "fo.km"; kn: "fo.kn"; ko: "fo.ko"; kp: "fo.kp"; kq: "fo.kq"; kr: "fo.kr"; ks: "fo.ks"; kt: "fo.kt"; ku: "fo.ku"; kv: "fo.kv"; kw: "fo.kw"; kx: "fo.kx"; ky: "fo.ky"; kz: "fo.kz"; la: "fo.la"; lb: "fo.lb"; lc: "fo.lc"; ld: "fo.ld"; le: "fo.le"; lf: "fo.lf"; lg: "fo.lg"; lh: "fo.lh"; li: "fo.li"; lj: "fo.lj"; lk: "fo.lk"; ll: "fo.ll"; lm: "fo.lm"; ln: "fo.ln"; lo: "fo.lo"; lp: "fo.lp"; lq: "fo.lq"; lr: "fo.lr"; ls: "fo.ls"; lt: "fo.lt"; lu: "fo.lu"; lv: "fo.lv"; lw: "fo.lw"; lx: "fo.lx"; ly: "fo.ly"; lz: "fo.lz"; ma: "fo.ma"; mb: "fo.mb"; mc: "fo.mc"; md: "fo.md"; me: "fo.me"; mf: "fo.mf"; mg: "fo.mg"; mh: "fo.mh"; mi: "fo.mi"; mj: "fo.mj"; mk: "fo.mk"; ml: "fo.ml"; mm: "fo.mm"; mn: "fo.mn"; mo: "fo.mo"; mp: "fo.mp"; mq: "fo.mq"; mr: "fo.mr"; ms: "fo.ms"; mt: "fo.mt"; mu: "fo.mu"; mv: "fo.mv"; mw: "fo.mw"; mx: "fo.mx"; my: "fo.my"; mz: "fo.mz"; na: "fo.na"; nb: "fo.nb"; nc: "fo.nc"; nd: "fo.nd"; ne: "fo.ne"; nf: "fo.nf"; ng: "fo.ng"; nh: "fo.nh"; ni: "fo.ni"; nj: "fo.nj"; nk: "fo.nk"; nl: "fo.nl"; nm: "fo.nm"; nn: "fo.nn"; no: "fo.no"; np: "fo.np"; nq: "fo.nq"; nr: "fo.nr"; ns: "fo.ns"; nt: "fo.nt"; nu: "fo.nu"; nv: "fo.nv"; nw: "fo.nw"; nx: "fo.nx"; ny: "fo.ny"; nz: "fo.nz"; oa: "fo.oa"; ob: "fo.ob"; oc: "fo.oc"; od: "fo.od"; oe: "fo.oe"; of: "fo.of"; og: "fo.og"; oh: "fo.oh"; oi: "fo.oi"; oj: "fo.oj"; ok: "fo.ok"; ol: "fo.ol"; om: "fo.om"; on: "fo.on"; oo: "fo.oo"; op: "fo.op"; oq: "fo.oq"; or: "fo.or"; os: "fo.os"; ot: "fo.ot"; ou: "fo.ou"; ov: "fo.ov"; ow: "fo.ow"; ox: "fo.ox"; oy: "fo.oy"; oz: "fo.oz"; pa: "fo.pa"; pb: "fo.pb"; pc: "fo.pc"; pd: "fo.pd"; pe: "fo.pe"; pf: "fo.pf"; pg: "fo.pg"; ph: "fo.ph"; pi: "fo.pi"; pj: "fo.pj"; pk: "fo.pk"; pl: "fo.pl"; pm: "fo.pm"; pn: "fo.pn"; po: "fo.po"; pp: "fo.pp"; pq: "fo.pq"; pr: "fo.pr"; ps: "fo.ps"; pt: "fo.pt"; pu: "fo.pu"; pv: "fo.pv"; pw: "fo.pw"; px: "fo.px"; py: "fo.py"; pz: "fo.pz"; qa: "fo.qa"; qb: "fo.qb"; qc: "fo.qc"; qd: "fo.qd"; qe: "fo.qe"; qf: "fo.qf"; qg: "fo.qg"; qh: "fo.qh"; qi: "fo.qi"; qj: "fo.qj"; qk: "fo.qk"; ql: "fo.ql"; qm: "fo.qm"; qn: "fo.qn"; qo: "fo.qo"; qp: "fo.qp"; qq: "fo.qq"; qr: "fo.qr"; qs: "fo.qs"; qt: "fo.qt"; qu: "fo.qu"; qv: "fo.qv"; qw: "fo.qw"; qx: "fo.qx"; qy: "fo.qy"; qz: "fo.qz"; ra: "fo.ra"; rb: "fo.rb"; rc: "fo.rc"; rd: "fo.rd"; re: "fo.re"; rf: "fo.rf"; rg: "fo.rg"; rh: "fo.rh"; ri: "fo.ri"; rj: "fo.rj"; rk: "fo.rk"; rl: "fo.rl"; rm: "fo.rm"; rn: "fo.rn"; ro: "fo.ro"; rp: "fo.rp"; rq: "fo.rq"; rr: "fo.rr"; rs: "fo.rs"; rt: "fo.rt"; ru: "fo.ru"; rv: "fo.rv"; rw: "fo.rw"; rx: "fo.rx"; ry: "fo.ry"; rz: "fo.rz"; sa: "fo.sa"; sb: "fo.sb"; sc: "fo.sc"; sd: "fo.sd"; se: "fo.se"; sf: "fo.sf"; sg: "fo.sg"; sh: "fo.sh"; si: "fo.si"; sj: "fo.sj"; sk: "fo.sk"; sl: "fo.sl"; sm: "fo.sm"; sn: "fo.sn"; so: "fo.so"; sp: "fo.sp"; sq: "fo.sq"; sr: "fo.sr"; ss: "fo.ss"; st: "fo.st"; su: "fo.su"; sv: "fo.sv"; sw: "fo.sw"; sx: "fo.sx"; sy: "fo.sy"; sz: "fo.sz"; ta: "fo.ta"; tb: "fo.tb"; tc: "fo.tc"; td: "fo.td"; te: "fo.te"; tf: "fo.tf"; tg: "fo.tg"; th: "fo.th"; ti: "fo.ti"; tj: "fo.tj"; tk: "fo.tk"; tl: "fo.tl"; tm: "fo.tm"; tn: "fo.tn"; to: "fo.to"; tp: "fo.tp"; tq: "fo.tq"; tr: "fo.tr"; ts: "fo.ts"; tt: "fo.tt"; tu: "fo.tu"; tv: "fo.tv"; tw: "fo.tw"; tx: "fo.tx"; ty: "fo.ty"; tz: "fo.tz"; ua: "fo.ua"; ub: "fo.ub"; uc: "fo.uc"; ud: "fo.ud"; ue: "fo.ue"; uf: "fo.uf"; ug: "fo.ug"; uh: "fo.uh"; ui: "fo.ui"; uj: "fo.uj"; uk: "fo.uk"; ul: "fo.ul"; um: "fo.um"; un: "fo.un"; uo: "fo.uo"; up: "fo.up"; uq: "fo.uq"; ur: "fo.ur"; us: "fo.us"; ut: "fo.ut"; uu: "fo.uu"; uv: "fo.uv"; uw: "fo.uw"; ux: "fo.ux"; uy: "fo.uy"; uz: "fo.uz"; va: "fo.va"; vb: "fo.vb"; vc: "fo.vc"; vd: "fo.vd"; ve: "fo.ve"; vf: "fo.vf"; vg: "fo.vg"; vh: "fo.vh"; vi: "fo.vi"; vj: "fo.vj"; vk: "fo.vk"; vl: "fo.vl"; vm: "fo.vm"; vn: "fo.vn"; vo: "fo.vo"; vp: "fo.vp"; vq: "fo.vq"; vr: "fo.vr"; vs: "fo.vs"; vt: "fo.vt"; vu: "fo.vu"; vv: "fo.vv"; vw: "fo.vw"; vx: "fo.vx"; vy: "fo.vy"; vz: "fo.vz"; wa: "fo.wa"; wb: "fo.wb"; wc: "fo.wc"; wd: "fo.wd"; we: "fo.we"; wf: "fo.wf"; wg: "fo.wg"; wh: "fo.wh"; wi: "fo.wi"; wj: "fo.wj"; wk: "fo.wk"; wl: "fo.wl"; wm: "fo.wm"; wn: "fo.wn"; wo: "fo.wo"; wp: "fo.wp"; wq: "fo.wq"; wr: "fo.wr"; ws: "fo.ws"; wt: "fo.wt"; wu: "fo.wu"; wv: "fo.wv"; ww: "fo.ww"; wx: "fo.wx"; wy: "fo.wy"; wz: "fo.wz"; xa: "fo.xa"; xb: "fo.xb"; xc: "fo.xc"; xd: "fo.xd"; xe: "fo.xe"; xf: "fo.xf"; xg: "fo.xg"; xh: "fo.xh"; xi: "fo.xi"; xj: "fo.xj"; xk: "fo.xk"; xl: "fo.xl"; xm: "fo.xm"; xn: "fo.xn"; xo: "fo.xo"; xp: "fo.xp"; xq: "fo.xq"; xr: "fo.xr"; xs: "fo.xs"; xt: "fo.xt"; xu: "fo.xu"; xv: "fo.xv"; xw: "fo.xw"; xx: "fo.xx"; xy: "fo.xy"; xz: "fo.xz"; ya: "fo.ya"; yb: "fo.yb"; yc: "fo.yc"; yd: "fo.yd"; ye: "fo.ye"; yf: "fo.yf"; yg: "fo.yg"; yh: "fo.yh"; yi: "fo.yi"; yj: "fo.yj"; yk: "fo.yk"; yl: "fo.yl"; ym: "fo.ym"; yn: "fo.yn"; yo: "fo.yo"; yp: "fo.yp"; yq: "fo.yq"; yr: "fo.yr"; ys: "fo.ys"; yt: "fo.yt"; yu: "fo.yu"; yv: "fo.yv"; yw: "fo.yw"; yx: "fo.yx"; yy: "fo.yy"; yz: "fo.yz"; za: "fo.za"; zb: "fo.zb"; zc: "fo.zc"; zd: "fo.zd"; ze: "fo.ze"; zf: "fo.zf"; zg: "fo.zg"; zh: "fo.zh"; zi: "fo.zi"; zj: "fo.zj"; zk: "fo.zk"; zl: "fo.zl"; zm: "fo.zm"; zn: "fo.zn"; zo: "fo.zo"; zp: "fo.zp"; zq: "fo.zq"; zr: "fo.zr"; zs: "fo.zs"; zt: "fo.zt"; zu: "fo.zu"; zv: "fo.zv"; zw: "fo.zw"; zx: "fo.zx"; zy: "fo.zy"; zz: "fo.zz"; }; fp: { aa: "fp.aa"; ab: "fp.ab"; ac: "fp.ac"; ad: "fp.ad"; ae: "fp.ae"; af: "fp.af"; ag: "fp.ag"; ah: "fp.ah"; ai: "fp.ai"; aj: "fp.aj"; ak: "fp.ak"; al: "fp.al"; am: "fp.am"; an: "fp.an"; ao: "fp.ao"; ap: "fp.ap"; aq: "fp.aq"; ar: "fp.ar"; as: "fp.as"; at: "fp.at"; au: "fp.au"; av: "fp.av"; aw: "fp.aw"; ax: "fp.ax"; ay: "fp.ay"; az: "fp.az"; ba: "fp.ba"; bb: "fp.bb"; bc: "fp.bc"; bd: "fp.bd"; be: "fp.be"; bf: "fp.bf"; bg: "fp.bg"; bh: "fp.bh"; bi: "fp.bi"; bj: "fp.bj"; bk: "fp.bk"; bl: "fp.bl"; bm: "fp.bm"; bn: "fp.bn"; bo: "fp.bo"; bp: "fp.bp"; bq: "fp.bq"; br: "fp.br"; bs: "fp.bs"; bt: "fp.bt"; bu: "fp.bu"; bv: "fp.bv"; bw: "fp.bw"; bx: "fp.bx"; by: "fp.by"; bz: "fp.bz"; ca: "fp.ca"; cb: "fp.cb"; cc: "fp.cc"; cd: "fp.cd"; ce: "fp.ce"; cf: "fp.cf"; cg: "fp.cg"; ch: "fp.ch"; ci: "fp.ci"; cj: "fp.cj"; ck: "fp.ck"; cl: "fp.cl"; cm: "fp.cm"; cn: "fp.cn"; co: "fp.co"; cp: "fp.cp"; cq: "fp.cq"; cr: "fp.cr"; cs: "fp.cs"; ct: "fp.ct"; cu: "fp.cu"; cv: "fp.cv"; cw: "fp.cw"; cx: "fp.cx"; cy: "fp.cy"; cz: "fp.cz"; da: "fp.da"; db: "fp.db"; dc: "fp.dc"; dd: "fp.dd"; de: "fp.de"; df: "fp.df"; dg: "fp.dg"; dh: "fp.dh"; di: "fp.di"; dj: "fp.dj"; dk: "fp.dk"; dl: "fp.dl"; dm: "fp.dm"; dn: "fp.dn"; do: "fp.do"; dp: "fp.dp"; dq: "fp.dq"; dr: "fp.dr"; ds: "fp.ds"; dt: "fp.dt"; du: "fp.du"; dv: "fp.dv"; dw: "fp.dw"; dx: "fp.dx"; dy: "fp.dy"; dz: "fp.dz"; ea: "fp.ea"; eb: "fp.eb"; ec: "fp.ec"; ed: "fp.ed"; ee: "fp.ee"; ef: "fp.ef"; eg: "fp.eg"; eh: "fp.eh"; ei: "fp.ei"; ej: "fp.ej"; ek: "fp.ek"; el: "fp.el"; em: "fp.em"; en: "fp.en"; eo: "fp.eo"; ep: "fp.ep"; eq: "fp.eq"; er: "fp.er"; es: "fp.es"; et: "fp.et"; eu: "fp.eu"; ev: "fp.ev"; ew: "fp.ew"; ex: "fp.ex"; ey: "fp.ey"; ez: "fp.ez"; fa: "fp.fa"; fb: "fp.fb"; fc: "fp.fc"; fd: "fp.fd"; fe: "fp.fe"; ff: "fp.ff"; fg: "fp.fg"; fh: "fp.fh"; fi: "fp.fi"; fj: "fp.fj"; fk: "fp.fk"; fl: "fp.fl"; fm: "fp.fm"; fn: "fp.fn"; fo: "fp.fo"; fp: "fp.fp"; fq: "fp.fq"; fr: "fp.fr"; fs: "fp.fs"; ft: "fp.ft"; fu: "fp.fu"; fv: "fp.fv"; fw: "fp.fw"; fx: "fp.fx"; fy: "fp.fy"; fz: "fp.fz"; ga: "fp.ga"; gb: "fp.gb"; gc: "fp.gc"; gd: "fp.gd"; ge: "fp.ge"; gf: "fp.gf"; gg: "fp.gg"; gh: "fp.gh"; gi: "fp.gi"; gj: "fp.gj"; gk: "fp.gk"; gl: "fp.gl"; gm: "fp.gm"; gn: "fp.gn"; go: "fp.go"; gp: "fp.gp"; gq: "fp.gq"; gr: "fp.gr"; gs: "fp.gs"; gt: "fp.gt"; gu: "fp.gu"; gv: "fp.gv"; gw: "fp.gw"; gx: "fp.gx"; gy: "fp.gy"; gz: "fp.gz"; ha: "fp.ha"; hb: "fp.hb"; hc: "fp.hc"; hd: "fp.hd"; he: "fp.he"; hf: "fp.hf"; hg: "fp.hg"; hh: "fp.hh"; hi: "fp.hi"; hj: "fp.hj"; hk: "fp.hk"; hl: "fp.hl"; hm: "fp.hm"; hn: "fp.hn"; ho: "fp.ho"; hp: "fp.hp"; hq: "fp.hq"; hr: "fp.hr"; hs: "fp.hs"; ht: "fp.ht"; hu: "fp.hu"; hv: "fp.hv"; hw: "fp.hw"; hx: "fp.hx"; hy: "fp.hy"; hz: "fp.hz"; ia: "fp.ia"; ib: "fp.ib"; ic: "fp.ic"; id: "fp.id"; ie: "fp.ie"; if: "fp.if"; ig: "fp.ig"; ih: "fp.ih"; ii: "fp.ii"; ij: "fp.ij"; ik: "fp.ik"; il: "fp.il"; im: "fp.im"; in: "fp.in"; io: "fp.io"; ip: "fp.ip"; iq: "fp.iq"; ir: "fp.ir"; is: "fp.is"; it: "fp.it"; iu: "fp.iu"; iv: "fp.iv"; iw: "fp.iw"; ix: "fp.ix"; iy: "fp.iy"; iz: "fp.iz"; ja: "fp.ja"; jb: "fp.jb"; jc: "fp.jc"; jd: "fp.jd"; je: "fp.je"; jf: "fp.jf"; jg: "fp.jg"; jh: "fp.jh"; ji: "fp.ji"; jj: "fp.jj"; jk: "fp.jk"; jl: "fp.jl"; jm: "fp.jm"; jn: "fp.jn"; jo: "fp.jo"; jp: "fp.jp"; jq: "fp.jq"; jr: "fp.jr"; js: "fp.js"; jt: "fp.jt"; ju: "fp.ju"; jv: "fp.jv"; jw: "fp.jw"; jx: "fp.jx"; jy: "fp.jy"; jz: "fp.jz"; ka: "fp.ka"; kb: "fp.kb"; kc: "fp.kc"; kd: "fp.kd"; ke: "fp.ke"; kf: "fp.kf"; kg: "fp.kg"; kh: "fp.kh"; ki: "fp.ki"; kj: "fp.kj"; kk: "fp.kk"; kl: "fp.kl"; km: "fp.km"; kn: "fp.kn"; ko: "fp.ko"; kp: "fp.kp"; kq: "fp.kq"; kr: "fp.kr"; ks: "fp.ks"; kt: "fp.kt"; ku: "fp.ku"; kv: "fp.kv"; kw: "fp.kw"; kx: "fp.kx"; ky: "fp.ky"; kz: "fp.kz"; la: "fp.la"; lb: "fp.lb"; lc: "fp.lc"; ld: "fp.ld"; le: "fp.le"; lf: "fp.lf"; lg: "fp.lg"; lh: "fp.lh"; li: "fp.li"; lj: "fp.lj"; lk: "fp.lk"; ll: "fp.ll"; lm: "fp.lm"; ln: "fp.ln"; lo: "fp.lo"; lp: "fp.lp"; lq: "fp.lq"; lr: "fp.lr"; ls: "fp.ls"; lt: "fp.lt"; lu: "fp.lu"; lv: "fp.lv"; lw: "fp.lw"; lx: "fp.lx"; ly: "fp.ly"; lz: "fp.lz"; ma: "fp.ma"; mb: "fp.mb"; mc: "fp.mc"; md: "fp.md"; me: "fp.me"; mf: "fp.mf"; mg: "fp.mg"; mh: "fp.mh"; mi: "fp.mi"; mj: "fp.mj"; mk: "fp.mk"; ml: "fp.ml"; mm: "fp.mm"; mn: "fp.mn"; mo: "fp.mo"; mp: "fp.mp"; mq: "fp.mq"; mr: "fp.mr"; ms: "fp.ms"; mt: "fp.mt"; mu: "fp.mu"; mv: "fp.mv"; mw: "fp.mw"; mx: "fp.mx"; my: "fp.my"; mz: "fp.mz"; na: "fp.na"; nb: "fp.nb"; nc: "fp.nc"; nd: "fp.nd"; ne: "fp.ne"; nf: "fp.nf"; ng: "fp.ng"; nh: "fp.nh"; ni: "fp.ni"; nj: "fp.nj"; nk: "fp.nk"; nl: "fp.nl"; nm: "fp.nm"; nn: "fp.nn"; no: "fp.no"; np: "fp.np"; nq: "fp.nq"; nr: "fp.nr"; ns: "fp.ns"; nt: "fp.nt"; nu: "fp.nu"; nv: "fp.nv"; nw: "fp.nw"; nx: "fp.nx"; ny: "fp.ny"; nz: "fp.nz"; oa: "fp.oa"; ob: "fp.ob"; oc: "fp.oc"; od: "fp.od"; oe: "fp.oe"; of: "fp.of"; og: "fp.og"; oh: "fp.oh"; oi: "fp.oi"; oj: "fp.oj"; ok: "fp.ok"; ol: "fp.ol"; om: "fp.om"; on: "fp.on"; oo: "fp.oo"; op: "fp.op"; oq: "fp.oq"; or: "fp.or"; os: "fp.os"; ot: "fp.ot"; ou: "fp.ou"; ov: "fp.ov"; ow: "fp.ow"; ox: "fp.ox"; oy: "fp.oy"; oz: "fp.oz"; pa: "fp.pa"; pb: "fp.pb"; pc: "fp.pc"; pd: "fp.pd"; pe: "fp.pe"; pf: "fp.pf"; pg: "fp.pg"; ph: "fp.ph"; pi: "fp.pi"; pj: "fp.pj"; pk: "fp.pk"; pl: "fp.pl"; pm: "fp.pm"; pn: "fp.pn"; po: "fp.po"; pp: "fp.pp"; pq: "fp.pq"; pr: "fp.pr"; ps: "fp.ps"; pt: "fp.pt"; pu: "fp.pu"; pv: "fp.pv"; pw: "fp.pw"; px: "fp.px"; py: "fp.py"; pz: "fp.pz"; qa: "fp.qa"; qb: "fp.qb"; qc: "fp.qc"; qd: "fp.qd"; qe: "fp.qe"; qf: "fp.qf"; qg: "fp.qg"; qh: "fp.qh"; qi: "fp.qi"; qj: "fp.qj"; qk: "fp.qk"; ql: "fp.ql"; qm: "fp.qm"; qn: "fp.qn"; qo: "fp.qo"; qp: "fp.qp"; qq: "fp.qq"; qr: "fp.qr"; qs: "fp.qs"; qt: "fp.qt"; qu: "fp.qu"; qv: "fp.qv"; qw: "fp.qw"; qx: "fp.qx"; qy: "fp.qy"; qz: "fp.qz"; ra: "fp.ra"; rb: "fp.rb"; rc: "fp.rc"; rd: "fp.rd"; re: "fp.re"; rf: "fp.rf"; rg: "fp.rg"; rh: "fp.rh"; ri: "fp.ri"; rj: "fp.rj"; rk: "fp.rk"; rl: "fp.rl"; rm: "fp.rm"; rn: "fp.rn"; ro: "fp.ro"; rp: "fp.rp"; rq: "fp.rq"; rr: "fp.rr"; rs: "fp.rs"; rt: "fp.rt"; ru: "fp.ru"; rv: "fp.rv"; rw: "fp.rw"; rx: "fp.rx"; ry: "fp.ry"; rz: "fp.rz"; sa: "fp.sa"; sb: "fp.sb"; sc: "fp.sc"; sd: "fp.sd"; se: "fp.se"; sf: "fp.sf"; sg: "fp.sg"; sh: "fp.sh"; si: "fp.si"; sj: "fp.sj"; sk: "fp.sk"; sl: "fp.sl"; sm: "fp.sm"; sn: "fp.sn"; so: "fp.so"; sp: "fp.sp"; sq: "fp.sq"; sr: "fp.sr"; ss: "fp.ss"; st: "fp.st"; su: "fp.su"; sv: "fp.sv"; sw: "fp.sw"; sx: "fp.sx"; sy: "fp.sy"; sz: "fp.sz"; ta: "fp.ta"; tb: "fp.tb"; tc: "fp.tc"; td: "fp.td"; te: "fp.te"; tf: "fp.tf"; tg: "fp.tg"; th: "fp.th"; ti: "fp.ti"; tj: "fp.tj"; tk: "fp.tk"; tl: "fp.tl"; tm: "fp.tm"; tn: "fp.tn"; to: "fp.to"; tp: "fp.tp"; tq: "fp.tq"; tr: "fp.tr"; ts: "fp.ts"; tt: "fp.tt"; tu: "fp.tu"; tv: "fp.tv"; tw: "fp.tw"; tx: "fp.tx"; ty: "fp.ty"; tz: "fp.tz"; ua: "fp.ua"; ub: "fp.ub"; uc: "fp.uc"; ud: "fp.ud"; ue: "fp.ue"; uf: "fp.uf"; ug: "fp.ug"; uh: "fp.uh"; ui: "fp.ui"; uj: "fp.uj"; uk: "fp.uk"; ul: "fp.ul"; um: "fp.um"; un: "fp.un"; uo: "fp.uo"; up: "fp.up"; uq: "fp.uq"; ur: "fp.ur"; us: "fp.us"; ut: "fp.ut"; uu: "fp.uu"; uv: "fp.uv"; uw: "fp.uw"; ux: "fp.ux"; uy: "fp.uy"; uz: "fp.uz"; va: "fp.va"; vb: "fp.vb"; vc: "fp.vc"; vd: "fp.vd"; ve: "fp.ve"; vf: "fp.vf"; vg: "fp.vg"; vh: "fp.vh"; vi: "fp.vi"; vj: "fp.vj"; vk: "fp.vk"; vl: "fp.vl"; vm: "fp.vm"; vn: "fp.vn"; vo: "fp.vo"; vp: "fp.vp"; vq: "fp.vq"; vr: "fp.vr"; vs: "fp.vs"; vt: "fp.vt"; vu: "fp.vu"; vv: "fp.vv"; vw: "fp.vw"; vx: "fp.vx"; vy: "fp.vy"; vz: "fp.vz"; wa: "fp.wa"; wb: "fp.wb"; wc: "fp.wc"; wd: "fp.wd"; we: "fp.we"; wf: "fp.wf"; wg: "fp.wg"; wh: "fp.wh"; wi: "fp.wi"; wj: "fp.wj"; wk: "fp.wk"; wl: "fp.wl"; wm: "fp.wm"; wn: "fp.wn"; wo: "fp.wo"; wp: "fp.wp"; wq: "fp.wq"; wr: "fp.wr"; ws: "fp.ws"; wt: "fp.wt"; wu: "fp.wu"; wv: "fp.wv"; ww: "fp.ww"; wx: "fp.wx"; wy: "fp.wy"; wz: "fp.wz"; xa: "fp.xa"; xb: "fp.xb"; xc: "fp.xc"; xd: "fp.xd"; xe: "fp.xe"; xf: "fp.xf"; xg: "fp.xg"; xh: "fp.xh"; xi: "fp.xi"; xj: "fp.xj"; xk: "fp.xk"; xl: "fp.xl"; xm: "fp.xm"; xn: "fp.xn"; xo: "fp.xo"; xp: "fp.xp"; xq: "fp.xq"; xr: "fp.xr"; xs: "fp.xs"; xt: "fp.xt"; xu: "fp.xu"; xv: "fp.xv"; xw: "fp.xw"; xx: "fp.xx"; xy: "fp.xy"; xz: "fp.xz"; ya: "fp.ya"; yb: "fp.yb"; yc: "fp.yc"; yd: "fp.yd"; ye: "fp.ye"; yf: "fp.yf"; yg: "fp.yg"; yh: "fp.yh"; yi: "fp.yi"; yj: "fp.yj"; yk: "fp.yk"; yl: "fp.yl"; ym: "fp.ym"; yn: "fp.yn"; yo: "fp.yo"; yp: "fp.yp"; yq: "fp.yq"; yr: "fp.yr"; ys: "fp.ys"; yt: "fp.yt"; yu: "fp.yu"; yv: "fp.yv"; yw: "fp.yw"; yx: "fp.yx"; yy: "fp.yy"; yz: "fp.yz"; za: "fp.za"; zb: "fp.zb"; zc: "fp.zc"; zd: "fp.zd"; ze: "fp.ze"; zf: "fp.zf"; zg: "fp.zg"; zh: "fp.zh"; zi: "fp.zi"; zj: "fp.zj"; zk: "fp.zk"; zl: "fp.zl"; zm: "fp.zm"; zn: "fp.zn"; zo: "fp.zo"; zp: "fp.zp"; zq: "fp.zq"; zr: "fp.zr"; zs: "fp.zs"; zt: "fp.zt"; zu: "fp.zu"; zv: "fp.zv"; zw: "fp.zw"; zx: "fp.zx"; zy: "fp.zy"; zz: "fp.zz"; }; fq: { aa: "fq.aa"; ab: "fq.ab"; ac: "fq.ac"; ad: "fq.ad"; ae: "fq.ae"; af: "fq.af"; ag: "fq.ag"; ah: "fq.ah"; ai: "fq.ai"; aj: "fq.aj"; ak: "fq.ak"; al: "fq.al"; am: "fq.am"; an: "fq.an"; ao: "fq.ao"; ap: "fq.ap"; aq: "fq.aq"; ar: "fq.ar"; as: "fq.as"; at: "fq.at"; au: "fq.au"; av: "fq.av"; aw: "fq.aw"; ax: "fq.ax"; ay: "fq.ay"; az: "fq.az"; ba: "fq.ba"; bb: "fq.bb"; bc: "fq.bc"; bd: "fq.bd"; be: "fq.be"; bf: "fq.bf"; bg: "fq.bg"; bh: "fq.bh"; bi: "fq.bi"; bj: "fq.bj"; bk: "fq.bk"; bl: "fq.bl"; bm: "fq.bm"; bn: "fq.bn"; bo: "fq.bo"; bp: "fq.bp"; bq: "fq.bq"; br: "fq.br"; bs: "fq.bs"; bt: "fq.bt"; bu: "fq.bu"; bv: "fq.bv"; bw: "fq.bw"; bx: "fq.bx"; by: "fq.by"; bz: "fq.bz"; ca: "fq.ca"; cb: "fq.cb"; cc: "fq.cc"; cd: "fq.cd"; ce: "fq.ce"; cf: "fq.cf"; cg: "fq.cg"; ch: "fq.ch"; ci: "fq.ci"; cj: "fq.cj"; ck: "fq.ck"; cl: "fq.cl"; cm: "fq.cm"; cn: "fq.cn"; co: "fq.co"; cp: "fq.cp"; cq: "fq.cq"; cr: "fq.cr"; cs: "fq.cs"; ct: "fq.ct"; cu: "fq.cu"; cv: "fq.cv"; cw: "fq.cw"; cx: "fq.cx"; cy: "fq.cy"; cz: "fq.cz"; da: "fq.da"; db: "fq.db"; dc: "fq.dc"; dd: "fq.dd"; de: "fq.de"; df: "fq.df"; dg: "fq.dg"; dh: "fq.dh"; di: "fq.di"; dj: "fq.dj"; dk: "fq.dk"; dl: "fq.dl"; dm: "fq.dm"; dn: "fq.dn"; do: "fq.do"; dp: "fq.dp"; dq: "fq.dq"; dr: "fq.dr"; ds: "fq.ds"; dt: "fq.dt"; du: "fq.du"; dv: "fq.dv"; dw: "fq.dw"; dx: "fq.dx"; dy: "fq.dy"; dz: "fq.dz"; ea: "fq.ea"; eb: "fq.eb"; ec: "fq.ec"; ed: "fq.ed"; ee: "fq.ee"; ef: "fq.ef"; eg: "fq.eg"; eh: "fq.eh"; ei: "fq.ei"; ej: "fq.ej"; ek: "fq.ek"; el: "fq.el"; em: "fq.em"; en: "fq.en"; eo: "fq.eo"; ep: "fq.ep"; eq: "fq.eq"; er: "fq.er"; es: "fq.es"; et: "fq.et"; eu: "fq.eu"; ev: "fq.ev"; ew: "fq.ew"; ex: "fq.ex"; ey: "fq.ey"; ez: "fq.ez"; fa: "fq.fa"; fb: "fq.fb"; fc: "fq.fc"; fd: "fq.fd"; fe: "fq.fe"; ff: "fq.ff"; fg: "fq.fg"; fh: "fq.fh"; fi: "fq.fi"; fj: "fq.fj"; fk: "fq.fk"; fl: "fq.fl"; fm: "fq.fm"; fn: "fq.fn"; fo: "fq.fo"; fp: "fq.fp"; fq: "fq.fq"; fr: "fq.fr"; fs: "fq.fs"; ft: "fq.ft"; fu: "fq.fu"; fv: "fq.fv"; fw: "fq.fw"; fx: "fq.fx"; fy: "fq.fy"; fz: "fq.fz"; ga: "fq.ga"; gb: "fq.gb"; gc: "fq.gc"; gd: "fq.gd"; ge: "fq.ge"; gf: "fq.gf"; gg: "fq.gg"; gh: "fq.gh"; gi: "fq.gi"; gj: "fq.gj"; gk: "fq.gk"; gl: "fq.gl"; gm: "fq.gm"; gn: "fq.gn"; go: "fq.go"; gp: "fq.gp"; gq: "fq.gq"; gr: "fq.gr"; gs: "fq.gs"; gt: "fq.gt"; gu: "fq.gu"; gv: "fq.gv"; gw: "fq.gw"; gx: "fq.gx"; gy: "fq.gy"; gz: "fq.gz"; ha: "fq.ha"; hb: "fq.hb"; hc: "fq.hc"; hd: "fq.hd"; he: "fq.he"; hf: "fq.hf"; hg: "fq.hg"; hh: "fq.hh"; hi: "fq.hi"; hj: "fq.hj"; hk: "fq.hk"; hl: "fq.hl"; hm: "fq.hm"; hn: "fq.hn"; ho: "fq.ho"; hp: "fq.hp"; hq: "fq.hq"; hr: "fq.hr"; hs: "fq.hs"; ht: "fq.ht"; hu: "fq.hu"; hv: "fq.hv"; hw: "fq.hw"; hx: "fq.hx"; hy: "fq.hy"; hz: "fq.hz"; ia: "fq.ia"; ib: "fq.ib"; ic: "fq.ic"; id: "fq.id"; ie: "fq.ie"; if: "fq.if"; ig: "fq.ig"; ih: "fq.ih"; ii: "fq.ii"; ij: "fq.ij"; ik: "fq.ik"; il: "fq.il"; im: "fq.im"; in: "fq.in"; io: "fq.io"; ip: "fq.ip"; iq: "fq.iq"; ir: "fq.ir"; is: "fq.is"; it: "fq.it"; iu: "fq.iu"; iv: "fq.iv"; iw: "fq.iw"; ix: "fq.ix"; iy: "fq.iy"; iz: "fq.iz"; ja: "fq.ja"; jb: "fq.jb"; jc: "fq.jc"; jd: "fq.jd"; je: "fq.je"; jf: "fq.jf"; jg: "fq.jg"; jh: "fq.jh"; ji: "fq.ji"; jj: "fq.jj"; jk: "fq.jk"; jl: "fq.jl"; jm: "fq.jm"; jn: "fq.jn"; jo: "fq.jo"; jp: "fq.jp"; jq: "fq.jq"; jr: "fq.jr"; js: "fq.js"; jt: "fq.jt"; ju: "fq.ju"; jv: "fq.jv"; jw: "fq.jw"; jx: "fq.jx"; jy: "fq.jy"; jz: "fq.jz"; ka: "fq.ka"; kb: "fq.kb"; kc: "fq.kc"; kd: "fq.kd"; ke: "fq.ke"; kf: "fq.kf"; kg: "fq.kg"; kh: "fq.kh"; ki: "fq.ki"; kj: "fq.kj"; kk: "fq.kk"; kl: "fq.kl"; km: "fq.km"; kn: "fq.kn"; ko: "fq.ko"; kp: "fq.kp"; kq: "fq.kq"; kr: "fq.kr"; ks: "fq.ks"; kt: "fq.kt"; ku: "fq.ku"; kv: "fq.kv"; kw: "fq.kw"; kx: "fq.kx"; ky: "fq.ky"; kz: "fq.kz"; la: "fq.la"; lb: "fq.lb"; lc: "fq.lc"; ld: "fq.ld"; le: "fq.le"; lf: "fq.lf"; lg: "fq.lg"; lh: "fq.lh"; li: "fq.li"; lj: "fq.lj"; lk: "fq.lk"; ll: "fq.ll"; lm: "fq.lm"; ln: "fq.ln"; lo: "fq.lo"; lp: "fq.lp"; lq: "fq.lq"; lr: "fq.lr"; ls: "fq.ls"; lt: "fq.lt"; lu: "fq.lu"; lv: "fq.lv"; lw: "fq.lw"; lx: "fq.lx"; ly: "fq.ly"; lz: "fq.lz"; ma: "fq.ma"; mb: "fq.mb"; mc: "fq.mc"; md: "fq.md"; me: "fq.me"; mf: "fq.mf"; mg: "fq.mg"; mh: "fq.mh"; mi: "fq.mi"; mj: "fq.mj"; mk: "fq.mk"; ml: "fq.ml"; mm: "fq.mm"; mn: "fq.mn"; mo: "fq.mo"; mp: "fq.mp"; mq: "fq.mq"; mr: "fq.mr"; ms: "fq.ms"; mt: "fq.mt"; mu: "fq.mu"; mv: "fq.mv"; mw: "fq.mw"; mx: "fq.mx"; my: "fq.my"; mz: "fq.mz"; na: "fq.na"; nb: "fq.nb"; nc: "fq.nc"; nd: "fq.nd"; ne: "fq.ne"; nf: "fq.nf"; ng: "fq.ng"; nh: "fq.nh"; ni: "fq.ni"; nj: "fq.nj"; nk: "fq.nk"; nl: "fq.nl"; nm: "fq.nm"; nn: "fq.nn"; no: "fq.no"; np: "fq.np"; nq: "fq.nq"; nr: "fq.nr"; ns: "fq.ns"; nt: "fq.nt"; nu: "fq.nu"; nv: "fq.nv"; nw: "fq.nw"; nx: "fq.nx"; ny: "fq.ny"; nz: "fq.nz"; oa: "fq.oa"; ob: "fq.ob"; oc: "fq.oc"; od: "fq.od"; oe: "fq.oe"; of: "fq.of"; og: "fq.og"; oh: "fq.oh"; oi: "fq.oi"; oj: "fq.oj"; ok: "fq.ok"; ol: "fq.ol"; om: "fq.om"; on: "fq.on"; oo: "fq.oo"; op: "fq.op"; oq: "fq.oq"; or: "fq.or"; os: "fq.os"; ot: "fq.ot"; ou: "fq.ou"; ov: "fq.ov"; ow: "fq.ow"; ox: "fq.ox"; oy: "fq.oy"; oz: "fq.oz"; pa: "fq.pa"; pb: "fq.pb"; pc: "fq.pc"; pd: "fq.pd"; pe: "fq.pe"; pf: "fq.pf"; pg: "fq.pg"; ph: "fq.ph"; pi: "fq.pi"; pj: "fq.pj"; pk: "fq.pk"; pl: "fq.pl"; pm: "fq.pm"; pn: "fq.pn"; po: "fq.po"; pp: "fq.pp"; pq: "fq.pq"; pr: "fq.pr"; ps: "fq.ps"; pt: "fq.pt"; pu: "fq.pu"; pv: "fq.pv"; pw: "fq.pw"; px: "fq.px"; py: "fq.py"; pz: "fq.pz"; qa: "fq.qa"; qb: "fq.qb"; qc: "fq.qc"; qd: "fq.qd"; qe: "fq.qe"; qf: "fq.qf"; qg: "fq.qg"; qh: "fq.qh"; qi: "fq.qi"; qj: "fq.qj"; qk: "fq.qk"; ql: "fq.ql"; qm: "fq.qm"; qn: "fq.qn"; qo: "fq.qo"; qp: "fq.qp"; qq: "fq.qq"; qr: "fq.qr"; qs: "fq.qs"; qt: "fq.qt"; qu: "fq.qu"; qv: "fq.qv"; qw: "fq.qw"; qx: "fq.qx"; qy: "fq.qy"; qz: "fq.qz"; ra: "fq.ra"; rb: "fq.rb"; rc: "fq.rc"; rd: "fq.rd"; re: "fq.re"; rf: "fq.rf"; rg: "fq.rg"; rh: "fq.rh"; ri: "fq.ri"; rj: "fq.rj"; rk: "fq.rk"; rl: "fq.rl"; rm: "fq.rm"; rn: "fq.rn"; ro: "fq.ro"; rp: "fq.rp"; rq: "fq.rq"; rr: "fq.rr"; rs: "fq.rs"; rt: "fq.rt"; ru: "fq.ru"; rv: "fq.rv"; rw: "fq.rw"; rx: "fq.rx"; ry: "fq.ry"; rz: "fq.rz"; sa: "fq.sa"; sb: "fq.sb"; sc: "fq.sc"; sd: "fq.sd"; se: "fq.se"; sf: "fq.sf"; sg: "fq.sg"; sh: "fq.sh"; si: "fq.si"; sj: "fq.sj"; sk: "fq.sk"; sl: "fq.sl"; sm: "fq.sm"; sn: "fq.sn"; so: "fq.so"; sp: "fq.sp"; sq: "fq.sq"; sr: "fq.sr"; ss: "fq.ss"; st: "fq.st"; su: "fq.su"; sv: "fq.sv"; sw: "fq.sw"; sx: "fq.sx"; sy: "fq.sy"; sz: "fq.sz"; ta: "fq.ta"; tb: "fq.tb"; tc: "fq.tc"; td: "fq.td"; te: "fq.te"; tf: "fq.tf"; tg: "fq.tg"; th: "fq.th"; ti: "fq.ti"; tj: "fq.tj"; tk: "fq.tk"; tl: "fq.tl"; tm: "fq.tm"; tn: "fq.tn"; to: "fq.to"; tp: "fq.tp"; tq: "fq.tq"; tr: "fq.tr"; ts: "fq.ts"; tt: "fq.tt"; tu: "fq.tu"; tv: "fq.tv"; tw: "fq.tw"; tx: "fq.tx"; ty: "fq.ty"; tz: "fq.tz"; ua: "fq.ua"; ub: "fq.ub"; uc: "fq.uc"; ud: "fq.ud"; ue: "fq.ue"; uf: "fq.uf"; ug: "fq.ug"; uh: "fq.uh"; ui: "fq.ui"; uj: "fq.uj"; uk: "fq.uk"; ul: "fq.ul"; um: "fq.um"; un: "fq.un"; uo: "fq.uo"; up: "fq.up"; uq: "fq.uq"; ur: "fq.ur"; us: "fq.us"; ut: "fq.ut"; uu: "fq.uu"; uv: "fq.uv"; uw: "fq.uw"; ux: "fq.ux"; uy: "fq.uy"; uz: "fq.uz"; va: "fq.va"; vb: "fq.vb"; vc: "fq.vc"; vd: "fq.vd"; ve: "fq.ve"; vf: "fq.vf"; vg: "fq.vg"; vh: "fq.vh"; vi: "fq.vi"; vj: "fq.vj"; vk: "fq.vk"; vl: "fq.vl"; vm: "fq.vm"; vn: "fq.vn"; vo: "fq.vo"; vp: "fq.vp"; vq: "fq.vq"; vr: "fq.vr"; vs: "fq.vs"; vt: "fq.vt"; vu: "fq.vu"; vv: "fq.vv"; vw: "fq.vw"; vx: "fq.vx"; vy: "fq.vy"; vz: "fq.vz"; wa: "fq.wa"; wb: "fq.wb"; wc: "fq.wc"; wd: "fq.wd"; we: "fq.we"; wf: "fq.wf"; wg: "fq.wg"; wh: "fq.wh"; wi: "fq.wi"; wj: "fq.wj"; wk: "fq.wk"; wl: "fq.wl"; wm: "fq.wm"; wn: "fq.wn"; wo: "fq.wo"; wp: "fq.wp"; wq: "fq.wq"; wr: "fq.wr"; ws: "fq.ws"; wt: "fq.wt"; wu: "fq.wu"; wv: "fq.wv"; ww: "fq.ww"; wx: "fq.wx"; wy: "fq.wy"; wz: "fq.wz"; xa: "fq.xa"; xb: "fq.xb"; xc: "fq.xc"; xd: "fq.xd"; xe: "fq.xe"; xf: "fq.xf"; xg: "fq.xg"; xh: "fq.xh"; xi: "fq.xi"; xj: "fq.xj"; xk: "fq.xk"; xl: "fq.xl"; xm: "fq.xm"; xn: "fq.xn"; xo: "fq.xo"; xp: "fq.xp"; xq: "fq.xq"; xr: "fq.xr"; xs: "fq.xs"; xt: "fq.xt"; xu: "fq.xu"; xv: "fq.xv"; xw: "fq.xw"; xx: "fq.xx"; xy: "fq.xy"; xz: "fq.xz"; ya: "fq.ya"; yb: "fq.yb"; yc: "fq.yc"; yd: "fq.yd"; ye: "fq.ye"; yf: "fq.yf"; yg: "fq.yg"; yh: "fq.yh"; yi: "fq.yi"; yj: "fq.yj"; yk: "fq.yk"; yl: "fq.yl"; ym: "fq.ym"; yn: "fq.yn"; yo: "fq.yo"; yp: "fq.yp"; yq: "fq.yq"; yr: "fq.yr"; ys: "fq.ys"; yt: "fq.yt"; yu: "fq.yu"; yv: "fq.yv"; yw: "fq.yw"; yx: "fq.yx"; yy: "fq.yy"; yz: "fq.yz"; za: "fq.za"; zb: "fq.zb"; zc: "fq.zc"; zd: "fq.zd"; ze: "fq.ze"; zf: "fq.zf"; zg: "fq.zg"; zh: "fq.zh"; zi: "fq.zi"; zj: "fq.zj"; zk: "fq.zk"; zl: "fq.zl"; zm: "fq.zm"; zn: "fq.zn"; zo: "fq.zo"; zp: "fq.zp"; zq: "fq.zq"; zr: "fq.zr"; zs: "fq.zs"; zt: "fq.zt"; zu: "fq.zu"; zv: "fq.zv"; zw: "fq.zw"; zx: "fq.zx"; zy: "fq.zy"; zz: "fq.zz"; }; fr: { aa: "fr.aa"; ab: "fr.ab"; ac: "fr.ac"; ad: "fr.ad"; ae: "fr.ae"; af: "fr.af"; ag: "fr.ag"; ah: "fr.ah"; ai: "fr.ai"; aj: "fr.aj"; ak: "fr.ak"; al: "fr.al"; am: "fr.am"; an: "fr.an"; ao: "fr.ao"; ap: "fr.ap"; aq: "fr.aq"; ar: "fr.ar"; as: "fr.as"; at: "fr.at"; au: "fr.au"; av: "fr.av"; aw: "fr.aw"; ax: "fr.ax"; ay: "fr.ay"; az: "fr.az"; ba: "fr.ba"; bb: "fr.bb"; bc: "fr.bc"; bd: "fr.bd"; be: "fr.be"; bf: "fr.bf"; bg: "fr.bg"; bh: "fr.bh"; bi: "fr.bi"; bj: "fr.bj"; bk: "fr.bk"; bl: "fr.bl"; bm: "fr.bm"; bn: "fr.bn"; bo: "fr.bo"; bp: "fr.bp"; bq: "fr.bq"; br: "fr.br"; bs: "fr.bs"; bt: "fr.bt"; bu: "fr.bu"; bv: "fr.bv"; bw: "fr.bw"; bx: "fr.bx"; by: "fr.by"; bz: "fr.bz"; ca: "fr.ca"; cb: "fr.cb"; cc: "fr.cc"; cd: "fr.cd"; ce: "fr.ce"; cf: "fr.cf"; cg: "fr.cg"; ch: "fr.ch"; ci: "fr.ci"; cj: "fr.cj"; ck: "fr.ck"; cl: "fr.cl"; cm: "fr.cm"; cn: "fr.cn"; co: "fr.co"; cp: "fr.cp"; cq: "fr.cq"; cr: "fr.cr"; cs: "fr.cs"; ct: "fr.ct"; cu: "fr.cu"; cv: "fr.cv"; cw: "fr.cw"; cx: "fr.cx"; cy: "fr.cy"; cz: "fr.cz"; da: "fr.da"; db: "fr.db"; dc: "fr.dc"; dd: "fr.dd"; de: "fr.de"; df: "fr.df"; dg: "fr.dg"; dh: "fr.dh"; di: "fr.di"; dj: "fr.dj"; dk: "fr.dk"; dl: "fr.dl"; dm: "fr.dm"; dn: "fr.dn"; do: "fr.do"; dp: "fr.dp"; dq: "fr.dq"; dr: "fr.dr"; ds: "fr.ds"; dt: "fr.dt"; du: "fr.du"; dv: "fr.dv"; dw: "fr.dw"; dx: "fr.dx"; dy: "fr.dy"; dz: "fr.dz"; ea: "fr.ea"; eb: "fr.eb"; ec: "fr.ec"; ed: "fr.ed"; ee: "fr.ee"; ef: "fr.ef"; eg: "fr.eg"; eh: "fr.eh"; ei: "fr.ei"; ej: "fr.ej"; ek: "fr.ek"; el: "fr.el"; em: "fr.em"; en: "fr.en"; eo: "fr.eo"; ep: "fr.ep"; eq: "fr.eq"; er: "fr.er"; es: "fr.es"; et: "fr.et"; eu: "fr.eu"; ev: "fr.ev"; ew: "fr.ew"; ex: "fr.ex"; ey: "fr.ey"; ez: "fr.ez"; fa: "fr.fa"; fb: "fr.fb"; fc: "fr.fc"; fd: "fr.fd"; fe: "fr.fe"; ff: "fr.ff"; fg: "fr.fg"; fh: "fr.fh"; fi: "fr.fi"; fj: "fr.fj"; fk: "fr.fk"; fl: "fr.fl"; fm: "fr.fm"; fn: "fr.fn"; fo: "fr.fo"; fp: "fr.fp"; fq: "fr.fq"; fr: "fr.fr"; fs: "fr.fs"; ft: "fr.ft"; fu: "fr.fu"; fv: "fr.fv"; fw: "fr.fw"; fx: "fr.fx"; fy: "fr.fy"; fz: "fr.fz"; ga: "fr.ga"; gb: "fr.gb"; gc: "fr.gc"; gd: "fr.gd"; ge: "fr.ge"; gf: "fr.gf"; gg: "fr.gg"; gh: "fr.gh"; gi: "fr.gi"; gj: "fr.gj"; gk: "fr.gk"; gl: "fr.gl"; gm: "fr.gm"; gn: "fr.gn"; go: "fr.go"; gp: "fr.gp"; gq: "fr.gq"; gr: "fr.gr"; gs: "fr.gs"; gt: "fr.gt"; gu: "fr.gu"; gv: "fr.gv"; gw: "fr.gw"; gx: "fr.gx"; gy: "fr.gy"; gz: "fr.gz"; ha: "fr.ha"; hb: "fr.hb"; hc: "fr.hc"; hd: "fr.hd"; he: "fr.he"; hf: "fr.hf"; hg: "fr.hg"; hh: "fr.hh"; hi: "fr.hi"; hj: "fr.hj"; hk: "fr.hk"; hl: "fr.hl"; hm: "fr.hm"; hn: "fr.hn"; ho: "fr.ho"; hp: "fr.hp"; hq: "fr.hq"; hr: "fr.hr"; hs: "fr.hs"; ht: "fr.ht"; hu: "fr.hu"; hv: "fr.hv"; hw: "fr.hw"; hx: "fr.hx"; hy: "fr.hy"; hz: "fr.hz"; ia: "fr.ia"; ib: "fr.ib"; ic: "fr.ic"; id: "fr.id"; ie: "fr.ie"; if: "fr.if"; ig: "fr.ig"; ih: "fr.ih"; ii: "fr.ii"; ij: "fr.ij"; ik: "fr.ik"; il: "fr.il"; im: "fr.im"; in: "fr.in"; io: "fr.io"; ip: "fr.ip"; iq: "fr.iq"; ir: "fr.ir"; is: "fr.is"; it: "fr.it"; iu: "fr.iu"; iv: "fr.iv"; iw: "fr.iw"; ix: "fr.ix"; iy: "fr.iy"; iz: "fr.iz"; ja: "fr.ja"; jb: "fr.jb"; jc: "fr.jc"; jd: "fr.jd"; je: "fr.je"; jf: "fr.jf"; jg: "fr.jg"; jh: "fr.jh"; ji: "fr.ji"; jj: "fr.jj"; jk: "fr.jk"; jl: "fr.jl"; jm: "fr.jm"; jn: "fr.jn"; jo: "fr.jo"; jp: "fr.jp"; jq: "fr.jq"; jr: "fr.jr"; js: "fr.js"; jt: "fr.jt"; ju: "fr.ju"; jv: "fr.jv"; jw: "fr.jw"; jx: "fr.jx"; jy: "fr.jy"; jz: "fr.jz"; ka: "fr.ka"; kb: "fr.kb"; kc: "fr.kc"; kd: "fr.kd"; ke: "fr.ke"; kf: "fr.kf"; kg: "fr.kg"; kh: "fr.kh"; ki: "fr.ki"; kj: "fr.kj"; kk: "fr.kk"; kl: "fr.kl"; km: "fr.km"; kn: "fr.kn"; ko: "fr.ko"; kp: "fr.kp"; kq: "fr.kq"; kr: "fr.kr"; ks: "fr.ks"; kt: "fr.kt"; ku: "fr.ku"; kv: "fr.kv"; kw: "fr.kw"; kx: "fr.kx"; ky: "fr.ky"; kz: "fr.kz"; la: "fr.la"; lb: "fr.lb"; lc: "fr.lc"; ld: "fr.ld"; le: "fr.le"; lf: "fr.lf"; lg: "fr.lg"; lh: "fr.lh"; li: "fr.li"; lj: "fr.lj"; lk: "fr.lk"; ll: "fr.ll"; lm: "fr.lm"; ln: "fr.ln"; lo: "fr.lo"; lp: "fr.lp"; lq: "fr.lq"; lr: "fr.lr"; ls: "fr.ls"; lt: "fr.lt"; lu: "fr.lu"; lv: "fr.lv"; lw: "fr.lw"; lx: "fr.lx"; ly: "fr.ly"; lz: "fr.lz"; ma: "fr.ma"; mb: "fr.mb"; mc: "fr.mc"; md: "fr.md"; me: "fr.me"; mf: "fr.mf"; mg: "fr.mg"; mh: "fr.mh"; mi: "fr.mi"; mj: "fr.mj"; mk: "fr.mk"; ml: "fr.ml"; mm: "fr.mm"; mn: "fr.mn"; mo: "fr.mo"; mp: "fr.mp"; mq: "fr.mq"; mr: "fr.mr"; ms: "fr.ms"; mt: "fr.mt"; mu: "fr.mu"; mv: "fr.mv"; mw: "fr.mw"; mx: "fr.mx"; my: "fr.my"; mz: "fr.mz"; na: "fr.na"; nb: "fr.nb"; nc: "fr.nc"; nd: "fr.nd"; ne: "fr.ne"; nf: "fr.nf"; ng: "fr.ng"; nh: "fr.nh"; ni: "fr.ni"; nj: "fr.nj"; nk: "fr.nk"; nl: "fr.nl"; nm: "fr.nm"; nn: "fr.nn"; no: "fr.no"; np: "fr.np"; nq: "fr.nq"; nr: "fr.nr"; ns: "fr.ns"; nt: "fr.nt"; nu: "fr.nu"; nv: "fr.nv"; nw: "fr.nw"; nx: "fr.nx"; ny: "fr.ny"; nz: "fr.nz"; oa: "fr.oa"; ob: "fr.ob"; oc: "fr.oc"; od: "fr.od"; oe: "fr.oe"; of: "fr.of"; og: "fr.og"; oh: "fr.oh"; oi: "fr.oi"; oj: "fr.oj"; ok: "fr.ok"; ol: "fr.ol"; om: "fr.om"; on: "fr.on"; oo: "fr.oo"; op: "fr.op"; oq: "fr.oq"; or: "fr.or"; os: "fr.os"; ot: "fr.ot"; ou: "fr.ou"; ov: "fr.ov"; ow: "fr.ow"; ox: "fr.ox"; oy: "fr.oy"; oz: "fr.oz"; pa: "fr.pa"; pb: "fr.pb"; pc: "fr.pc"; pd: "fr.pd"; pe: "fr.pe"; pf: "fr.pf"; pg: "fr.pg"; ph: "fr.ph"; pi: "fr.pi"; pj: "fr.pj"; pk: "fr.pk"; pl: "fr.pl"; pm: "fr.pm"; pn: "fr.pn"; po: "fr.po"; pp: "fr.pp"; pq: "fr.pq"; pr: "fr.pr"; ps: "fr.ps"; pt: "fr.pt"; pu: "fr.pu"; pv: "fr.pv"; pw: "fr.pw"; px: "fr.px"; py: "fr.py"; pz: "fr.pz"; qa: "fr.qa"; qb: "fr.qb"; qc: "fr.qc"; qd: "fr.qd"; qe: "fr.qe"; qf: "fr.qf"; qg: "fr.qg"; qh: "fr.qh"; qi: "fr.qi"; qj: "fr.qj"; qk: "fr.qk"; ql: "fr.ql"; qm: "fr.qm"; qn: "fr.qn"; qo: "fr.qo"; qp: "fr.qp"; qq: "fr.qq"; qr: "fr.qr"; qs: "fr.qs"; qt: "fr.qt"; qu: "fr.qu"; qv: "fr.qv"; qw: "fr.qw"; qx: "fr.qx"; qy: "fr.qy"; qz: "fr.qz"; ra: "fr.ra"; rb: "fr.rb"; rc: "fr.rc"; rd: "fr.rd"; re: "fr.re"; rf: "fr.rf"; rg: "fr.rg"; rh: "fr.rh"; ri: "fr.ri"; rj: "fr.rj"; rk: "fr.rk"; rl: "fr.rl"; rm: "fr.rm"; rn: "fr.rn"; ro: "fr.ro"; rp: "fr.rp"; rq: "fr.rq"; rr: "fr.rr"; rs: "fr.rs"; rt: "fr.rt"; ru: "fr.ru"; rv: "fr.rv"; rw: "fr.rw"; rx: "fr.rx"; ry: "fr.ry"; rz: "fr.rz"; sa: "fr.sa"; sb: "fr.sb"; sc: "fr.sc"; sd: "fr.sd"; se: "fr.se"; sf: "fr.sf"; sg: "fr.sg"; sh: "fr.sh"; si: "fr.si"; sj: "fr.sj"; sk: "fr.sk"; sl: "fr.sl"; sm: "fr.sm"; sn: "fr.sn"; so: "fr.so"; sp: "fr.sp"; sq: "fr.sq"; sr: "fr.sr"; ss: "fr.ss"; st: "fr.st"; su: "fr.su"; sv: "fr.sv"; sw: "fr.sw"; sx: "fr.sx"; sy: "fr.sy"; sz: "fr.sz"; ta: "fr.ta"; tb: "fr.tb"; tc: "fr.tc"; td: "fr.td"; te: "fr.te"; tf: "fr.tf"; tg: "fr.tg"; th: "fr.th"; ti: "fr.ti"; tj: "fr.tj"; tk: "fr.tk"; tl: "fr.tl"; tm: "fr.tm"; tn: "fr.tn"; to: "fr.to"; tp: "fr.tp"; tq: "fr.tq"; tr: "fr.tr"; ts: "fr.ts"; tt: "fr.tt"; tu: "fr.tu"; tv: "fr.tv"; tw: "fr.tw"; tx: "fr.tx"; ty: "fr.ty"; tz: "fr.tz"; ua: "fr.ua"; ub: "fr.ub"; uc: "fr.uc"; ud: "fr.ud"; ue: "fr.ue"; uf: "fr.uf"; ug: "fr.ug"; uh: "fr.uh"; ui: "fr.ui"; uj: "fr.uj"; uk: "fr.uk"; ul: "fr.ul"; um: "fr.um"; un: "fr.un"; uo: "fr.uo"; up: "fr.up"; uq: "fr.uq"; ur: "fr.ur"; us: "fr.us"; ut: "fr.ut"; uu: "fr.uu"; uv: "fr.uv"; uw: "fr.uw"; ux: "fr.ux"; uy: "fr.uy"; uz: "fr.uz"; va: "fr.va"; vb: "fr.vb"; vc: "fr.vc"; vd: "fr.vd"; ve: "fr.ve"; vf: "fr.vf"; vg: "fr.vg"; vh: "fr.vh"; vi: "fr.vi"; ... 120 more ...; zz: "fr.zz"; }; ... 527 more ...; zz: { ...; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[null as any as {[K in manyprops]: {[K2 in manyprops]: `${K}.${K2}`}}][0] : { aa: { aa: "aa.aa"; ab: "aa.ab"; ac: "aa.ac"; ad: "aa.ad"; ae: "aa.ae"; af: "aa.af"; ag: "aa.ag"; ah: "aa.ah"; ai: "aa.ai"; aj: "aa.aj"; ak: "aa.ak"; al: "aa.al"; am: "aa.am"; an: "aa.an"; ao: "aa.ao"; ap: "aa.ap"; aq: "aa.aq"; ar: "aa.ar"; as: "aa.as"; at: "aa.at"; au: "aa.au"; av: "aa.av"; aw: "aa.aw"; ax: "aa.ax"; ay: "aa.ay"; az: "aa.az"; ba: "aa.ba"; bb: "aa.bb"; bc: "aa.bc"; bd: "aa.bd"; be: "aa.be"; bf: "aa.bf"; bg: "aa.bg"; bh: "aa.bh"; bi: "aa.bi"; bj: "aa.bj"; bk: "aa.bk"; bl: "aa.bl"; bm: "aa.bm"; bn: "aa.bn"; bo: "aa.bo"; bp: "aa.bp"; bq: "aa.bq"; br: "aa.br"; bs: "aa.bs"; bt: "aa.bt"; bu: "aa.bu"; bv: "aa.bv"; bw: "aa.bw"; bx: "aa.bx"; by: "aa.by"; bz: "aa.bz"; ca: "aa.ca"; cb: "aa.cb"; cc: "aa.cc"; cd: "aa.cd"; ce: "aa.ce"; cf: "aa.cf"; cg: "aa.cg"; ch: "aa.ch"; ci: "aa.ci"; cj: "aa.cj"; ck: "aa.ck"; cl: "aa.cl"; cm: "aa.cm"; cn: "aa.cn"; co: "aa.co"; cp: "aa.cp"; cq: "aa.cq"; cr: "aa.cr"; cs: "aa.cs"; ct: "aa.ct"; cu: "aa.cu"; cv: "aa.cv"; cw: "aa.cw"; cx: "aa.cx"; cy: "aa.cy"; cz: "aa.cz"; da: "aa.da"; db: "aa.db"; dc: "aa.dc"; dd: "aa.dd"; de: "aa.de"; df: "aa.df"; dg: "aa.dg"; dh: "aa.dh"; di: "aa.di"; dj: "aa.dj"; dk: "aa.dk"; dl: "aa.dl"; dm: "aa.dm"; dn: "aa.dn"; do: "aa.do"; dp: "aa.dp"; dq: "aa.dq"; dr: "aa.dr"; ds: "aa.ds"; dt: "aa.dt"; du: "aa.du"; dv: "aa.dv"; dw: "aa.dw"; dx: "aa.dx"; dy: "aa.dy"; dz: "aa.dz"; ea: "aa.ea"; eb: "aa.eb"; ec: "aa.ec"; ed: "aa.ed"; ee: "aa.ee"; ef: "aa.ef"; eg: "aa.eg"; eh: "aa.eh"; ei: "aa.ei"; ej: "aa.ej"; ek: "aa.ek"; el: "aa.el"; em: "aa.em"; en: "aa.en"; eo: "aa.eo"; ep: "aa.ep"; eq: "aa.eq"; er: "aa.er"; es: "aa.es"; et: "aa.et"; eu: "aa.eu"; ev: "aa.ev"; ew: "aa.ew"; ex: "aa.ex"; ey: "aa.ey"; ez: "aa.ez"; fa: "aa.fa"; fb: "aa.fb"; fc: "aa.fc"; fd: "aa.fd"; fe: "aa.fe"; ff: "aa.ff"; fg: "aa.fg"; fh: "aa.fh"; fi: "aa.fi"; fj: "aa.fj"; fk: "aa.fk"; fl: "aa.fl"; fm: "aa.fm"; fn: "aa.fn"; fo: "aa.fo"; fp: "aa.fp"; fq: "aa.fq"; fr: "aa.fr"; fs: "aa.fs"; ft: "aa.ft"; fu: "aa.fu"; fv: "aa.fv"; fw: "aa.fw"; fx: "aa.fx"; fy: "aa.fy"; fz: "aa.fz"; ga: "aa.ga"; gb: "aa.gb"; gc: "aa.gc"; gd: "aa.gd"; ge: "aa.ge"; gf: "aa.gf"; gg: "aa.gg"; gh: "aa.gh"; gi: "aa.gi"; gj: "aa.gj"; gk: "aa.gk"; gl: "aa.gl"; gm: "aa.gm"; gn: "aa.gn"; go: "aa.go"; gp: "aa.gp"; gq: "aa.gq"; gr: "aa.gr"; gs: "aa.gs"; gt: "aa.gt"; gu: "aa.gu"; gv: "aa.gv"; gw: "aa.gw"; gx: "aa.gx"; gy: "aa.gy"; gz: "aa.gz"; ha: "aa.ha"; hb: "aa.hb"; hc: "aa.hc"; hd: "aa.hd"; he: "aa.he"; hf: "aa.hf"; hg: "aa.hg"; hh: "aa.hh"; hi: "aa.hi"; hj: "aa.hj"; hk: "aa.hk"; hl: "aa.hl"; hm: "aa.hm"; hn: "aa.hn"; ho: "aa.ho"; hp: "aa.hp"; hq: "aa.hq"; hr: "aa.hr"; hs: "aa.hs"; ht: "aa.ht"; hu: "aa.hu"; hv: "aa.hv"; hw: "aa.hw"; hx: "aa.hx"; hy: "aa.hy"; hz: "aa.hz"; ia: "aa.ia"; ib: "aa.ib"; ic: "aa.ic"; id: "aa.id"; ie: "aa.ie"; if: "aa.if"; ig: "aa.ig"; ih: "aa.ih"; ii: "aa.ii"; ij: "aa.ij"; ik: "aa.ik"; il: "aa.il"; im: "aa.im"; in: "aa.in"; io: "aa.io"; ip: "aa.ip"; iq: "aa.iq"; ir: "aa.ir"; is: "aa.is"; it: "aa.it"; iu: "aa.iu"; iv: "aa.iv"; iw: "aa.iw"; ix: "aa.ix"; iy: "aa.iy"; iz: "aa.iz"; ja: "aa.ja"; jb: "aa.jb"; jc: "aa.jc"; jd: "aa.jd"; je: "aa.je"; jf: "aa.jf"; jg: "aa.jg"; jh: "aa.jh"; ji: "aa.ji"; jj: "aa.jj"; jk: "aa.jk"; jl: "aa.jl"; jm: "aa.jm"; jn: "aa.jn"; jo: "aa.jo"; jp: "aa.jp"; jq: "aa.jq"; jr: "aa.jr"; js: "aa.js"; jt: "aa.jt"; ju: "aa.ju"; jv: "aa.jv"; jw: "aa.jw"; jx: "aa.jx"; jy: "aa.jy"; jz: "aa.jz"; ka: "aa.ka"; kb: "aa.kb"; kc: "aa.kc"; kd: "aa.kd"; ke: "aa.ke"; kf: "aa.kf"; kg: "aa.kg"; kh: "aa.kh"; ki: "aa.ki"; kj: "aa.kj"; kk: "aa.kk"; kl: "aa.kl"; km: "aa.km"; kn: "aa.kn"; ko: "aa.ko"; kp: "aa.kp"; kq: "aa.kq"; kr: "aa.kr"; ks: "aa.ks"; kt: "aa.kt"; ku: "aa.ku"; kv: "aa.kv"; kw: "aa.kw"; kx: "aa.kx"; ky: "aa.ky"; kz: "aa.kz"; la: "aa.la"; lb: "aa.lb"; lc: "aa.lc"; ld: "aa.ld"; le: "aa.le"; lf: "aa.lf"; lg: "aa.lg"; lh: "aa.lh"; li: "aa.li"; lj: "aa.lj"; lk: "aa.lk"; ll: "aa.ll"; lm: "aa.lm"; ln: "aa.ln"; lo: "aa.lo"; lp: "aa.lp"; lq: "aa.lq"; lr: "aa.lr"; ls: "aa.ls"; lt: "aa.lt"; lu: "aa.lu"; lv: "aa.lv"; lw: "aa.lw"; lx: "aa.lx"; ly: "aa.ly"; lz: "aa.lz"; ma: "aa.ma"; mb: "aa.mb"; mc: "aa.mc"; md: "aa.md"; me: "aa.me"; mf: "aa.mf"; mg: "aa.mg"; mh: "aa.mh"; mi: "aa.mi"; mj: "aa.mj"; mk: "aa.mk"; ml: "aa.ml"; mm: "aa.mm"; mn: "aa.mn"; mo: "aa.mo"; mp: "aa.mp"; mq: "aa.mq"; mr: "aa.mr"; ms: "aa.ms"; mt: "aa.mt"; mu: "aa.mu"; mv: "aa.mv"; mw: "aa.mw"; mx: "aa.mx"; my: "aa.my"; mz: "aa.mz"; na: "aa.na"; nb: "aa.nb"; nc: "aa.nc"; nd: "aa.nd"; ne: "aa.ne"; nf: "aa.nf"; ng: "aa.ng"; nh: "aa.nh"; ni: "aa.ni"; nj: "aa.nj"; nk: "aa.nk"; nl: "aa.nl"; nm: "aa.nm"; nn: "aa.nn"; no: "aa.no"; np: "aa.np"; nq: "aa.nq"; nr: "aa.nr"; ns: "aa.ns"; nt: "aa.nt"; nu: "aa.nu"; nv: "aa.nv"; nw: "aa.nw"; nx: "aa.nx"; ny: "aa.ny"; nz: "aa.nz"; oa: "aa.oa"; ob: "aa.ob"; oc: "aa.oc"; od: "aa.od"; oe: "aa.oe"; of: "aa.of"; og: "aa.og"; oh: "aa.oh"; oi: "aa.oi"; oj: "aa.oj"; ok: "aa.ok"; ol: "aa.ol"; om: "aa.om"; on: "aa.on"; oo: "aa.oo"; op: "aa.op"; oq: "aa.oq"; or: "aa.or"; os: "aa.os"; ot: "aa.ot"; ou: "aa.ou"; ov: "aa.ov"; ow: "aa.ow"; ox: "aa.ox"; oy: "aa.oy"; oz: "aa.oz"; pa: "aa.pa"; pb: "aa.pb"; pc: "aa.pc"; pd: "aa.pd"; pe: "aa.pe"; pf: "aa.pf"; pg: "aa.pg"; ph: "aa.ph"; pi: "aa.pi"; pj: "aa.pj"; pk: "aa.pk"; pl: "aa.pl"; pm: "aa.pm"; pn: "aa.pn"; po: "aa.po"; pp: "aa.pp"; pq: "aa.pq"; pr: "aa.pr"; ps: "aa.ps"; pt: "aa.pt"; pu: "aa.pu"; pv: "aa.pv"; pw: "aa.pw"; px: "aa.px"; py: "aa.py"; pz: "aa.pz"; qa: "aa.qa"; qb: "aa.qb"; qc: "aa.qc"; qd: "aa.qd"; qe: "aa.qe"; qf: "aa.qf"; qg: "aa.qg"; qh: "aa.qh"; qi: "aa.qi"; qj: "aa.qj"; qk: "aa.qk"; ql: "aa.ql"; qm: "aa.qm"; qn: "aa.qn"; qo: "aa.qo"; qp: "aa.qp"; qq: "aa.qq"; qr: "aa.qr"; qs: "aa.qs"; qt: "aa.qt"; qu: "aa.qu"; qv: "aa.qv"; qw: "aa.qw"; qx: "aa.qx"; qy: "aa.qy"; qz: "aa.qz"; ra: "aa.ra"; rb: "aa.rb"; rc: "aa.rc"; rd: "aa.rd"; re: "aa.re"; rf: "aa.rf"; rg: "aa.rg"; rh: "aa.rh"; ri: "aa.ri"; rj: "aa.rj"; rk: "aa.rk"; rl: "aa.rl"; rm: "aa.rm"; rn: "aa.rn"; ro: "aa.ro"; rp: "aa.rp"; rq: "aa.rq"; rr: "aa.rr"; rs: "aa.rs"; rt: "aa.rt"; ru: "aa.ru"; rv: "aa.rv"; rw: "aa.rw"; rx: "aa.rx"; ry: "aa.ry"; rz: "aa.rz"; sa: "aa.sa"; sb: "aa.sb"; sc: "aa.sc"; sd: "aa.sd"; se: "aa.se"; sf: "aa.sf"; sg: "aa.sg"; sh: "aa.sh"; si: "aa.si"; sj: "aa.sj"; sk: "aa.sk"; sl: "aa.sl"; sm: "aa.sm"; sn: "aa.sn"; so: "aa.so"; sp: "aa.sp"; sq: "aa.sq"; sr: "aa.sr"; ss: "aa.ss"; st: "aa.st"; su: "aa.su"; sv: "aa.sv"; sw: "aa.sw"; sx: "aa.sx"; sy: "aa.sy"; sz: "aa.sz"; ta: "aa.ta"; tb: "aa.tb"; tc: "aa.tc"; td: "aa.td"; te: "aa.te"; tf: "aa.tf"; tg: "aa.tg"; th: "aa.th"; ti: "aa.ti"; tj: "aa.tj"; tk: "aa.tk"; tl: "aa.tl"; tm: "aa.tm"; tn: "aa.tn"; to: "aa.to"; tp: "aa.tp"; tq: "aa.tq"; tr: "aa.tr"; ts: "aa.ts"; tt: "aa.tt"; tu: "aa.tu"; tv: "aa.tv"; tw: "aa.tw"; tx: "aa.tx"; ty: "aa.ty"; tz: "aa.tz"; ua: "aa.ua"; ub: "aa.ub"; uc: "aa.uc"; ud: "aa.ud"; ue: "aa.ue"; uf: "aa.uf"; ug: "aa.ug"; uh: "aa.uh"; ui: "aa.ui"; uj: "aa.uj"; uk: "aa.uk"; ul: "aa.ul"; um: "aa.um"; un: "aa.un"; uo: "aa.uo"; up: "aa.up"; uq: "aa.uq"; ur: "aa.ur"; us: "aa.us"; ut: "aa.ut"; uu: "aa.uu"; uv: "aa.uv"; uw: "aa.uw"; ux: "aa.ux"; uy: "aa.uy"; uz: "aa.uz"; va: "aa.va"; vb: "aa.vb"; vc: "aa.vc"; vd: "aa.vd"; ve: "aa.ve"; vf: "aa.vf"; vg: "aa.vg"; vh: "aa.vh"; vi: "aa.vi"; vj: "aa.vj"; vk: "aa.vk"; vl: "aa.vl"; vm: "aa.vm"; vn: "aa.vn"; vo: "aa.vo"; vp: "aa.vp"; vq: "aa.vq"; vr: "aa.vr"; vs: "aa.vs"; vt: "aa.vt"; vu: "aa.vu"; vv: "aa.vv"; vw: "aa.vw"; vx: "aa.vx"; vy: "aa.vy"; vz: "aa.vz"; wa: "aa.wa"; wb: "aa.wb"; wc: "aa.wc"; wd: "aa.wd"; we: "aa.we"; wf: "aa.wf"; wg: "aa.wg"; wh: "aa.wh"; wi: "aa.wi"; wj: "aa.wj"; wk: "aa.wk"; wl: "aa.wl"; wm: "aa.wm"; wn: "aa.wn"; wo: "aa.wo"; wp: "aa.wp"; wq: "aa.wq"; wr: "aa.wr"; ws: "aa.ws"; wt: "aa.wt"; wu: "aa.wu"; wv: "aa.wv"; ww: "aa.ww"; wx: "aa.wx"; wy: "aa.wy"; wz: "aa.wz"; xa: "aa.xa"; xb: "aa.xb"; xc: "aa.xc"; xd: "aa.xd"; xe: "aa.xe"; xf: "aa.xf"; xg: "aa.xg"; xh: "aa.xh"; xi: "aa.xi"; xj: "aa.xj"; xk: "aa.xk"; xl: "aa.xl"; xm: "aa.xm"; xn: "aa.xn"; xo: "aa.xo"; xp: "aa.xp"; xq: "aa.xq"; xr: "aa.xr"; xs: "aa.xs"; xt: "aa.xt"; xu: "aa.xu"; xv: "aa.xv"; xw: "aa.xw"; xx: "aa.xx"; xy: "aa.xy"; xz: "aa.xz"; ya: "aa.ya"; yb: "aa.yb"; yc: "aa.yc"; yd: "aa.yd"; ye: "aa.ye"; yf: "aa.yf"; yg: "aa.yg"; yh: "aa.yh"; yi: "aa.yi"; yj: "aa.yj"; yk: "aa.yk"; yl: "aa.yl"; ym: "aa.ym"; yn: "aa.yn"; yo: "aa.yo"; yp: "aa.yp"; yq: "aa.yq"; yr: "aa.yr"; ys: "aa.ys"; yt: "aa.yt"; yu: "aa.yu"; yv: "aa.yv"; yw: "aa.yw"; yx: "aa.yx"; yy: "aa.yy"; yz: "aa.yz"; za: "aa.za"; zb: "aa.zb"; zc: "aa.zc"; zd: "aa.zd"; ze: "aa.ze"; zf: "aa.zf"; zg: "aa.zg"; zh: "aa.zh"; zi: "aa.zi"; zj: "aa.zj"; zk: "aa.zk"; zl: "aa.zl"; zm: "aa.zm"; zn: "aa.zn"; zo: "aa.zo"; zp: "aa.zp"; zq: "aa.zq"; zr: "aa.zr"; zs: "aa.zs"; zt: "aa.zt"; zu: "aa.zu"; zv: "aa.zv"; zw: "aa.zw"; zx: "aa.zx"; zy: "aa.zy"; zz: "aa.zz"; }; ab: { aa: "ab.aa"; ab: "ab.ab"; ac: "ab.ac"; ad: "ab.ad"; ae: "ab.ae"; af: "ab.af"; ag: "ab.ag"; ah: "ab.ah"; ai: "ab.ai"; aj: "ab.aj"; ak: "ab.ak"; al: "ab.al"; am: "ab.am"; an: "ab.an"; ao: "ab.ao"; ap: "ab.ap"; aq: "ab.aq"; ar: "ab.ar"; as: "ab.as"; at: "ab.at"; au: "ab.au"; av: "ab.av"; aw: "ab.aw"; ax: "ab.ax"; ay: "ab.ay"; az: "ab.az"; ba: "ab.ba"; bb: "ab.bb"; bc: "ab.bc"; bd: "ab.bd"; be: "ab.be"; bf: "ab.bf"; bg: "ab.bg"; bh: "ab.bh"; bi: "ab.bi"; bj: "ab.bj"; bk: "ab.bk"; bl: "ab.bl"; bm: "ab.bm"; bn: "ab.bn"; bo: "ab.bo"; bp: "ab.bp"; bq: "ab.bq"; br: "ab.br"; bs: "ab.bs"; bt: "ab.bt"; bu: "ab.bu"; bv: "ab.bv"; bw: "ab.bw"; bx: "ab.bx"; by: "ab.by"; bz: "ab.bz"; ca: "ab.ca"; cb: "ab.cb"; cc: "ab.cc"; cd: "ab.cd"; ce: "ab.ce"; cf: "ab.cf"; cg: "ab.cg"; ch: "ab.ch"; ci: "ab.ci"; cj: "ab.cj"; ck: "ab.ck"; cl: "ab.cl"; cm: "ab.cm"; cn: "ab.cn"; co: "ab.co"; cp: "ab.cp"; cq: "ab.cq"; cr: "ab.cr"; cs: "ab.cs"; ct: "ab.ct"; cu: "ab.cu"; cv: "ab.cv"; cw: "ab.cw"; cx: "ab.cx"; cy: "ab.cy"; cz: "ab.cz"; da: "ab.da"; db: "ab.db"; dc: "ab.dc"; dd: "ab.dd"; de: "ab.de"; df: "ab.df"; dg: "ab.dg"; dh: "ab.dh"; di: "ab.di"; dj: "ab.dj"; dk: "ab.dk"; dl: "ab.dl"; dm: "ab.dm"; dn: "ab.dn"; do: "ab.do"; dp: "ab.dp"; dq: "ab.dq"; dr: "ab.dr"; ds: "ab.ds"; dt: "ab.dt"; du: "ab.du"; dv: "ab.dv"; dw: "ab.dw"; dx: "ab.dx"; dy: "ab.dy"; dz: "ab.dz"; ea: "ab.ea"; eb: "ab.eb"; ec: "ab.ec"; ed: "ab.ed"; ee: "ab.ee"; ef: "ab.ef"; eg: "ab.eg"; eh: "ab.eh"; ei: "ab.ei"; ej: "ab.ej"; ek: "ab.ek"; el: "ab.el"; em: "ab.em"; en: "ab.en"; eo: "ab.eo"; ep: "ab.ep"; eq: "ab.eq"; er: "ab.er"; es: "ab.es"; et: "ab.et"; eu: "ab.eu"; ev: "ab.ev"; ew: "ab.ew"; ex: "ab.ex"; ey: "ab.ey"; ez: "ab.ez"; fa: "ab.fa"; fb: "ab.fb"; fc: "ab.fc"; fd: "ab.fd"; fe: "ab.fe"; ff: "ab.ff"; fg: "ab.fg"; fh: "ab.fh"; fi: "ab.fi"; fj: "ab.fj"; fk: "ab.fk"; fl: "ab.fl"; fm: "ab.fm"; fn: "ab.fn"; fo: "ab.fo"; fp: "ab.fp"; fq: "ab.fq"; fr: "ab.fr"; fs: "ab.fs"; ft: "ab.ft"; fu: "ab.fu"; fv: "ab.fv"; fw: "ab.fw"; fx: "ab.fx"; fy: "ab.fy"; fz: "ab.fz"; ga: "ab.ga"; gb: "ab.gb"; gc: "ab.gc"; gd: "ab.gd"; ge: "ab.ge"; gf: "ab.gf"; gg: "ab.gg"; gh: "ab.gh"; gi: "ab.gi"; gj: "ab.gj"; gk: "ab.gk"; gl: "ab.gl"; gm: "ab.gm"; gn: "ab.gn"; go: "ab.go"; gp: "ab.gp"; gq: "ab.gq"; gr: "ab.gr"; gs: "ab.gs"; gt: "ab.gt"; gu: "ab.gu"; gv: "ab.gv"; gw: "ab.gw"; gx: "ab.gx"; gy: "ab.gy"; gz: "ab.gz"; ha: "ab.ha"; hb: "ab.hb"; hc: "ab.hc"; hd: "ab.hd"; he: "ab.he"; hf: "ab.hf"; hg: "ab.hg"; hh: "ab.hh"; hi: "ab.hi"; hj: "ab.hj"; hk: "ab.hk"; hl: "ab.hl"; hm: "ab.hm"; hn: "ab.hn"; ho: "ab.ho"; hp: "ab.hp"; hq: "ab.hq"; hr: "ab.hr"; hs: "ab.hs"; ht: "ab.ht"; hu: "ab.hu"; hv: "ab.hv"; hw: "ab.hw"; hx: "ab.hx"; hy: "ab.hy"; hz: "ab.hz"; ia: "ab.ia"; ib: "ab.ib"; ic: "ab.ic"; id: "ab.id"; ie: "ab.ie"; if: "ab.if"; ig: "ab.ig"; ih: "ab.ih"; ii: "ab.ii"; ij: "ab.ij"; ik: "ab.ik"; il: "ab.il"; im: "ab.im"; in: "ab.in"; io: "ab.io"; ip: "ab.ip"; iq: "ab.iq"; ir: "ab.ir"; is: "ab.is"; it: "ab.it"; iu: "ab.iu"; iv: "ab.iv"; iw: "ab.iw"; ix: "ab.ix"; iy: "ab.iy"; iz: "ab.iz"; ja: "ab.ja"; jb: "ab.jb"; jc: "ab.jc"; jd: "ab.jd"; je: "ab.je"; jf: "ab.jf"; jg: "ab.jg"; jh: "ab.jh"; ji: "ab.ji"; jj: "ab.jj"; jk: "ab.jk"; jl: "ab.jl"; jm: "ab.jm"; jn: "ab.jn"; jo: "ab.jo"; jp: "ab.jp"; jq: "ab.jq"; jr: "ab.jr"; js: "ab.js"; jt: "ab.jt"; ju: "ab.ju"; jv: "ab.jv"; jw: "ab.jw"; jx: "ab.jx"; jy: "ab.jy"; jz: "ab.jz"; ka: "ab.ka"; kb: "ab.kb"; kc: "ab.kc"; kd: "ab.kd"; ke: "ab.ke"; kf: "ab.kf"; kg: "ab.kg"; kh: "ab.kh"; ki: "ab.ki"; kj: "ab.kj"; kk: "ab.kk"; kl: "ab.kl"; km: "ab.km"; kn: "ab.kn"; ko: "ab.ko"; kp: "ab.kp"; kq: "ab.kq"; kr: "ab.kr"; ks: "ab.ks"; kt: "ab.kt"; ku: "ab.ku"; kv: "ab.kv"; kw: "ab.kw"; kx: "ab.kx"; ky: "ab.ky"; kz: "ab.kz"; la: "ab.la"; lb: "ab.lb"; lc: "ab.lc"; ld: "ab.ld"; le: "ab.le"; lf: "ab.lf"; lg: "ab.lg"; lh: "ab.lh"; li: "ab.li"; lj: "ab.lj"; lk: "ab.lk"; ll: "ab.ll"; lm: "ab.lm"; ln: "ab.ln"; lo: "ab.lo"; lp: "ab.lp"; lq: "ab.lq"; lr: "ab.lr"; ls: "ab.ls"; lt: "ab.lt"; lu: "ab.lu"; lv: "ab.lv"; lw: "ab.lw"; lx: "ab.lx"; ly: "ab.ly"; lz: "ab.lz"; ma: "ab.ma"; mb: "ab.mb"; mc: "ab.mc"; md: "ab.md"; me: "ab.me"; mf: "ab.mf"; mg: "ab.mg"; mh: "ab.mh"; mi: "ab.mi"; mj: "ab.mj"; mk: "ab.mk"; ml: "ab.ml"; mm: "ab.mm"; mn: "ab.mn"; mo: "ab.mo"; mp: "ab.mp"; mq: "ab.mq"; mr: "ab.mr"; ms: "ab.ms"; mt: "ab.mt"; mu: "ab.mu"; mv: "ab.mv"; mw: "ab.mw"; mx: "ab.mx"; my: "ab.my"; mz: "ab.mz"; na: "ab.na"; nb: "ab.nb"; nc: "ab.nc"; nd: "ab.nd"; ne: "ab.ne"; nf: "ab.nf"; ng: "ab.ng"; nh: "ab.nh"; ni: "ab.ni"; nj: "ab.nj"; nk: "ab.nk"; nl: "ab.nl"; nm: "ab.nm"; nn: "ab.nn"; no: "ab.no"; np: "ab.np"; nq: "ab.nq"; nr: "ab.nr"; ns: "ab.ns"; nt: "ab.nt"; nu: "ab.nu"; nv: "ab.nv"; nw: "ab.nw"; nx: "ab.nx"; ny: "ab.ny"; nz: "ab.nz"; oa: "ab.oa"; ob: "ab.ob"; oc: "ab.oc"; od: "ab.od"; oe: "ab.oe"; of: "ab.of"; og: "ab.og"; oh: "ab.oh"; oi: "ab.oi"; oj: "ab.oj"; ok: "ab.ok"; ol: "ab.ol"; om: "ab.om"; on: "ab.on"; oo: "ab.oo"; op: "ab.op"; oq: "ab.oq"; or: "ab.or"; os: "ab.os"; ot: "ab.ot"; ou: "ab.ou"; ov: "ab.ov"; ow: "ab.ow"; ox: "ab.ox"; oy: "ab.oy"; oz: "ab.oz"; pa: "ab.pa"; pb: "ab.pb"; pc: "ab.pc"; pd: "ab.pd"; pe: "ab.pe"; pf: "ab.pf"; pg: "ab.pg"; ph: "ab.ph"; pi: "ab.pi"; pj: "ab.pj"; pk: "ab.pk"; pl: "ab.pl"; pm: "ab.pm"; pn: "ab.pn"; po: "ab.po"; pp: "ab.pp"; pq: "ab.pq"; pr: "ab.pr"; ps: "ab.ps"; pt: "ab.pt"; pu: "ab.pu"; pv: "ab.pv"; pw: "ab.pw"; px: "ab.px"; py: "ab.py"; pz: "ab.pz"; qa: "ab.qa"; qb: "ab.qb"; qc: "ab.qc"; qd: "ab.qd"; qe: "ab.qe"; qf: "ab.qf"; qg: "ab.qg"; qh: "ab.qh"; qi: "ab.qi"; qj: "ab.qj"; qk: "ab.qk"; ql: "ab.ql"; qm: "ab.qm"; qn: "ab.qn"; qo: "ab.qo"; qp: "ab.qp"; qq: "ab.qq"; qr: "ab.qr"; qs: "ab.qs"; qt: "ab.qt"; qu: "ab.qu"; qv: "ab.qv"; qw: "ab.qw"; qx: "ab.qx"; qy: "ab.qy"; qz: "ab.qz"; ra: "ab.ra"; rb: "ab.rb"; rc: "ab.rc"; rd: "ab.rd"; re: "ab.re"; rf: "ab.rf"; rg: "ab.rg"; rh: "ab.rh"; ri: "ab.ri"; rj: "ab.rj"; rk: "ab.rk"; rl: "ab.rl"; rm: "ab.rm"; rn: "ab.rn"; ro: "ab.ro"; rp: "ab.rp"; rq: "ab.rq"; rr: "ab.rr"; rs: "ab.rs"; rt: "ab.rt"; ru: "ab.ru"; rv: "ab.rv"; rw: "ab.rw"; rx: "ab.rx"; ry: "ab.ry"; rz: "ab.rz"; sa: "ab.sa"; sb: "ab.sb"; sc: "ab.sc"; sd: "ab.sd"; se: "ab.se"; sf: "ab.sf"; sg: "ab.sg"; sh: "ab.sh"; si: "ab.si"; sj: "ab.sj"; sk: "ab.sk"; sl: "ab.sl"; sm: "ab.sm"; sn: "ab.sn"; so: "ab.so"; sp: "ab.sp"; sq: "ab.sq"; sr: "ab.sr"; ss: "ab.ss"; st: "ab.st"; su: "ab.su"; sv: "ab.sv"; sw: "ab.sw"; sx: "ab.sx"; sy: "ab.sy"; sz: "ab.sz"; ta: "ab.ta"; tb: "ab.tb"; tc: "ab.tc"; td: "ab.td"; te: "ab.te"; tf: "ab.tf"; tg: "ab.tg"; th: "ab.th"; ti: "ab.ti"; tj: "ab.tj"; tk: "ab.tk"; tl: "ab.tl"; tm: "ab.tm"; tn: "ab.tn"; to: "ab.to"; tp: "ab.tp"; tq: "ab.tq"; tr: "ab.tr"; ts: "ab.ts"; tt: "ab.tt"; tu: "ab.tu"; tv: "ab.tv"; tw: "ab.tw"; tx: "ab.tx"; ty: "ab.ty"; tz: "ab.tz"; ua: "ab.ua"; ub: "ab.ub"; uc: "ab.uc"; ud: "ab.ud"; ue: "ab.ue"; uf: "ab.uf"; ug: "ab.ug"; uh: "ab.uh"; ui: "ab.ui"; uj: "ab.uj"; uk: "ab.uk"; ul: "ab.ul"; um: "ab.um"; un: "ab.un"; uo: "ab.uo"; up: "ab.up"; uq: "ab.uq"; ur: "ab.ur"; us: "ab.us"; ut: "ab.ut"; uu: "ab.uu"; uv: "ab.uv"; uw: "ab.uw"; ux: "ab.ux"; uy: "ab.uy"; uz: "ab.uz"; va: "ab.va"; vb: "ab.vb"; vc: "ab.vc"; vd: "ab.vd"; ve: "ab.ve"; vf: "ab.vf"; vg: "ab.vg"; vh: "ab.vh"; vi: "ab.vi"; vj: "ab.vj"; vk: "ab.vk"; vl: "ab.vl"; vm: "ab.vm"; vn: "ab.vn"; vo: "ab.vo"; vp: "ab.vp"; vq: "ab.vq"; vr: "ab.vr"; vs: "ab.vs"; vt: "ab.vt"; vu: "ab.vu"; vv: "ab.vv"; vw: "ab.vw"; vx: "ab.vx"; vy: "ab.vy"; vz: "ab.vz"; wa: "ab.wa"; wb: "ab.wb"; wc: "ab.wc"; wd: "ab.wd"; we: "ab.we"; wf: "ab.wf"; wg: "ab.wg"; wh: "ab.wh"; wi: "ab.wi"; wj: "ab.wj"; wk: "ab.wk"; wl: "ab.wl"; wm: "ab.wm"; wn: "ab.wn"; wo: "ab.wo"; wp: "ab.wp"; wq: "ab.wq"; wr: "ab.wr"; ws: "ab.ws"; wt: "ab.wt"; wu: "ab.wu"; wv: "ab.wv"; ww: "ab.ww"; wx: "ab.wx"; wy: "ab.wy"; wz: "ab.wz"; xa: "ab.xa"; xb: "ab.xb"; xc: "ab.xc"; xd: "ab.xd"; xe: "ab.xe"; xf: "ab.xf"; xg: "ab.xg"; xh: "ab.xh"; xi: "ab.xi"; xj: "ab.xj"; xk: "ab.xk"; xl: "ab.xl"; xm: "ab.xm"; xn: "ab.xn"; xo: "ab.xo"; xp: "ab.xp"; xq: "ab.xq"; xr: "ab.xr"; xs: "ab.xs"; xt: "ab.xt"; xu: "ab.xu"; xv: "ab.xv"; xw: "ab.xw"; xx: "ab.xx"; xy: "ab.xy"; xz: "ab.xz"; ya: "ab.ya"; yb: "ab.yb"; yc: "ab.yc"; yd: "ab.yd"; ye: "ab.ye"; yf: "ab.yf"; yg: "ab.yg"; yh: "ab.yh"; yi: "ab.yi"; yj: "ab.yj"; yk: "ab.yk"; yl: "ab.yl"; ym: "ab.ym"; yn: "ab.yn"; yo: "ab.yo"; yp: "ab.yp"; yq: "ab.yq"; yr: "ab.yr"; ys: "ab.ys"; yt: "ab.yt"; yu: "ab.yu"; yv: "ab.yv"; yw: "ab.yw"; yx: "ab.yx"; yy: "ab.yy"; yz: "ab.yz"; za: "ab.za"; zb: "ab.zb"; zc: "ab.zc"; zd: "ab.zd"; ze: "ab.ze"; zf: "ab.zf"; zg: "ab.zg"; zh: "ab.zh"; zi: "ab.zi"; zj: "ab.zj"; zk: "ab.zk"; zl: "ab.zl"; zm: "ab.zm"; zn: "ab.zn"; zo: "ab.zo"; zp: "ab.zp"; zq: "ab.zq"; zr: "ab.zr"; zs: "ab.zs"; zt: "ab.zt"; zu: "ab.zu"; zv: "ab.zv"; zw: "ab.zw"; zx: "ab.zx"; zy: "ab.zy"; zz: "ab.zz"; }; ac: { aa: "ac.aa"; ab: "ac.ab"; ac: "ac.ac"; ad: "ac.ad"; ae: "ac.ae"; af: "ac.af"; ag: "ac.ag"; ah: "ac.ah"; ai: "ac.ai"; aj: "ac.aj"; ak: "ac.ak"; al: "ac.al"; am: "ac.am"; an: "ac.an"; ao: "ac.ao"; ap: "ac.ap"; aq: "ac.aq"; ar: "ac.ar"; as: "ac.as"; at: "ac.at"; au: "ac.au"; av: "ac.av"; aw: "ac.aw"; ax: "ac.ax"; ay: "ac.ay"; az: "ac.az"; ba: "ac.ba"; bb: "ac.bb"; bc: "ac.bc"; bd: "ac.bd"; be: "ac.be"; bf: "ac.bf"; bg: "ac.bg"; bh: "ac.bh"; bi: "ac.bi"; bj: "ac.bj"; bk: "ac.bk"; bl: "ac.bl"; bm: "ac.bm"; bn: "ac.bn"; bo: "ac.bo"; bp: "ac.bp"; bq: "ac.bq"; br: "ac.br"; bs: "ac.bs"; bt: "ac.bt"; bu: "ac.bu"; bv: "ac.bv"; bw: "ac.bw"; bx: "ac.bx"; by: "ac.by"; bz: "ac.bz"; ca: "ac.ca"; cb: "ac.cb"; cc: "ac.cc"; cd: "ac.cd"; ce: "ac.ce"; cf: "ac.cf"; cg: "ac.cg"; ch: "ac.ch"; ci: "ac.ci"; cj: "ac.cj"; ck: "ac.ck"; cl: "ac.cl"; cm: "ac.cm"; cn: "ac.cn"; co: "ac.co"; cp: "ac.cp"; cq: "ac.cq"; cr: "ac.cr"; cs: "ac.cs"; ct: "ac.ct"; cu: "ac.cu"; cv: "ac.cv"; cw: "ac.cw"; cx: "ac.cx"; cy: "ac.cy"; cz: "ac.cz"; da: "ac.da"; db: "ac.db"; dc: "ac.dc"; dd: "ac.dd"; de: "ac.de"; df: "ac.df"; dg: "ac.dg"; dh: "ac.dh"; di: "ac.di"; dj: "ac.dj"; dk: "ac.dk"; dl: "ac.dl"; dm: "ac.dm"; dn: "ac.dn"; do: "ac.do"; dp: "ac.dp"; dq: "ac.dq"; dr: "ac.dr"; ds: "ac.ds"; dt: "ac.dt"; du: "ac.du"; dv: "ac.dv"; dw: "ac.dw"; dx: "ac.dx"; dy: "ac.dy"; dz: "ac.dz"; ea: "ac.ea"; eb: "ac.eb"; ec: "ac.ec"; ed: "ac.ed"; ee: "ac.ee"; ef: "ac.ef"; eg: "ac.eg"; eh: "ac.eh"; ei: "ac.ei"; ej: "ac.ej"; ek: "ac.ek"; el: "ac.el"; em: "ac.em"; en: "ac.en"; eo: "ac.eo"; ep: "ac.ep"; eq: "ac.eq"; er: "ac.er"; es: "ac.es"; et: "ac.et"; eu: "ac.eu"; ev: "ac.ev"; ew: "ac.ew"; ex: "ac.ex"; ey: "ac.ey"; ez: "ac.ez"; fa: "ac.fa"; fb: "ac.fb"; fc: "ac.fc"; fd: "ac.fd"; fe: "ac.fe"; ff: "ac.ff"; fg: "ac.fg"; fh: "ac.fh"; fi: "ac.fi"; fj: "ac.fj"; fk: "ac.fk"; fl: "ac.fl"; fm: "ac.fm"; fn: "ac.fn"; fo: "ac.fo"; fp: "ac.fp"; fq: "ac.fq"; fr: "ac.fr"; fs: "ac.fs"; ft: "ac.ft"; fu: "ac.fu"; fv: "ac.fv"; fw: "ac.fw"; fx: "ac.fx"; fy: "ac.fy"; fz: "ac.fz"; ga: "ac.ga"; gb: "ac.gb"; gc: "ac.gc"; gd: "ac.gd"; ge: "ac.ge"; gf: "ac.gf"; gg: "ac.gg"; gh: "ac.gh"; gi: "ac.gi"; gj: "ac.gj"; gk: "ac.gk"; gl: "ac.gl"; gm: "ac.gm"; gn: "ac.gn"; go: "ac.go"; gp: "ac.gp"; gq: "ac.gq"; gr: "ac.gr"; gs: "ac.gs"; gt: "ac.gt"; gu: "ac.gu"; gv: "ac.gv"; gw: "ac.gw"; gx: "ac.gx"; gy: "ac.gy"; gz: "ac.gz"; ha: "ac.ha"; hb: "ac.hb"; hc: "ac.hc"; hd: "ac.hd"; he: "ac.he"; hf: "ac.hf"; hg: "ac.hg"; hh: "ac.hh"; hi: "ac.hi"; hj: "ac.hj"; hk: "ac.hk"; hl: "ac.hl"; hm: "ac.hm"; hn: "ac.hn"; ho: "ac.ho"; hp: "ac.hp"; hq: "ac.hq"; hr: "ac.hr"; hs: "ac.hs"; ht: "ac.ht"; hu: "ac.hu"; hv: "ac.hv"; hw: "ac.hw"; hx: "ac.hx"; hy: "ac.hy"; hz: "ac.hz"; ia: "ac.ia"; ib: "ac.ib"; ic: "ac.ic"; id: "ac.id"; ie: "ac.ie"; if: "ac.if"; ig: "ac.ig"; ih: "ac.ih"; ii: "ac.ii"; ij: "ac.ij"; ik: "ac.ik"; il: "ac.il"; im: "ac.im"; in: "ac.in"; io: "ac.io"; ip: "ac.ip"; iq: "ac.iq"; ir: "ac.ir"; is: "ac.is"; it: "ac.it"; iu: "ac.iu"; iv: "ac.iv"; iw: "ac.iw"; ix: "ac.ix"; iy: "ac.iy"; iz: "ac.iz"; ja: "ac.ja"; jb: "ac.jb"; jc: "ac.jc"; jd: "ac.jd"; je: "ac.je"; jf: "ac.jf"; jg: "ac.jg"; jh: "ac.jh"; ji: "ac.ji"; jj: "ac.jj"; jk: "ac.jk"; jl: "ac.jl"; jm: "ac.jm"; jn: "ac.jn"; jo: "ac.jo"; jp: "ac.jp"; jq: "ac.jq"; jr: "ac.jr"; js: "ac.js"; jt: "ac.jt"; ju: "ac.ju"; jv: "ac.jv"; jw: "ac.jw"; jx: "ac.jx"; jy: "ac.jy"; jz: "ac.jz"; ka: "ac.ka"; kb: "ac.kb"; kc: "ac.kc"; kd: "ac.kd"; ke: "ac.ke"; kf: "ac.kf"; kg: "ac.kg"; kh: "ac.kh"; ki: "ac.ki"; kj: "ac.kj"; kk: "ac.kk"; kl: "ac.kl"; km: "ac.km"; kn: "ac.kn"; ko: "ac.ko"; kp: "ac.kp"; kq: "ac.kq"; kr: "ac.kr"; ks: "ac.ks"; kt: "ac.kt"; ku: "ac.ku"; kv: "ac.kv"; kw: "ac.kw"; kx: "ac.kx"; ky: "ac.ky"; kz: "ac.kz"; la: "ac.la"; lb: "ac.lb"; lc: "ac.lc"; ld: "ac.ld"; le: "ac.le"; lf: "ac.lf"; lg: "ac.lg"; lh: "ac.lh"; li: "ac.li"; lj: "ac.lj"; lk: "ac.lk"; ll: "ac.ll"; lm: "ac.lm"; ln: "ac.ln"; lo: "ac.lo"; lp: "ac.lp"; lq: "ac.lq"; lr: "ac.lr"; ls: "ac.ls"; lt: "ac.lt"; lu: "ac.lu"; lv: "ac.lv"; lw: "ac.lw"; lx: "ac.lx"; ly: "ac.ly"; lz: "ac.lz"; ma: "ac.ma"; mb: "ac.mb"; mc: "ac.mc"; md: "ac.md"; me: "ac.me"; mf: "ac.mf"; mg: "ac.mg"; mh: "ac.mh"; mi: "ac.mi"; mj: "ac.mj"; mk: "ac.mk"; ml: "ac.ml"; mm: "ac.mm"; mn: "ac.mn"; mo: "ac.mo"; mp: "ac.mp"; mq: "ac.mq"; mr: "ac.mr"; ms: "ac.ms"; mt: "ac.mt"; mu: "ac.mu"; mv: "ac.mv"; mw: "ac.mw"; mx: "ac.mx"; my: "ac.my"; mz: "ac.mz"; na: "ac.na"; nb: "ac.nb"; nc: "ac.nc"; nd: "ac.nd"; ne: "ac.ne"; nf: "ac.nf"; ng: "ac.ng"; nh: "ac.nh"; ni: "ac.ni"; nj: "ac.nj"; nk: "ac.nk"; nl: "ac.nl"; nm: "ac.nm"; nn: "ac.nn"; no: "ac.no"; np: "ac.np"; nq: "ac.nq"; nr: "ac.nr"; ns: "ac.ns"; nt: "ac.nt"; nu: "ac.nu"; nv: "ac.nv"; nw: "ac.nw"; nx: "ac.nx"; ny: "ac.ny"; nz: "ac.nz"; oa: "ac.oa"; ob: "ac.ob"; oc: "ac.oc"; od: "ac.od"; oe: "ac.oe"; of: "ac.of"; og: "ac.og"; oh: "ac.oh"; oi: "ac.oi"; oj: "ac.oj"; ok: "ac.ok"; ol: "ac.ol"; om: "ac.om"; on: "ac.on"; oo: "ac.oo"; op: "ac.op"; oq: "ac.oq"; or: "ac.or"; os: "ac.os"; ot: "ac.ot"; ou: "ac.ou"; ov: "ac.ov"; ow: "ac.ow"; ox: "ac.ox"; oy: "ac.oy"; oz: "ac.oz"; pa: "ac.pa"; pb: "ac.pb"; pc: "ac.pc"; pd: "ac.pd"; pe: "ac.pe"; pf: "ac.pf"; pg: "ac.pg"; ph: "ac.ph"; pi: "ac.pi"; pj: "ac.pj"; pk: "ac.pk"; pl: "ac.pl"; pm: "ac.pm"; pn: "ac.pn"; po: "ac.po"; pp: "ac.pp"; pq: "ac.pq"; pr: "ac.pr"; ps: "ac.ps"; pt: "ac.pt"; pu: "ac.pu"; pv: "ac.pv"; pw: "ac.pw"; px: "ac.px"; py: "ac.py"; pz: "ac.pz"; qa: "ac.qa"; qb: "ac.qb"; qc: "ac.qc"; qd: "ac.qd"; qe: "ac.qe"; qf: "ac.qf"; qg: "ac.qg"; qh: "ac.qh"; qi: "ac.qi"; qj: "ac.qj"; qk: "ac.qk"; ql: "ac.ql"; qm: "ac.qm"; qn: "ac.qn"; qo: "ac.qo"; qp: "ac.qp"; qq: "ac.qq"; qr: "ac.qr"; qs: "ac.qs"; qt: "ac.qt"; qu: "ac.qu"; qv: "ac.qv"; qw: "ac.qw"; qx: "ac.qx"; qy: "ac.qy"; qz: "ac.qz"; ra: "ac.ra"; rb: "ac.rb"; rc: "ac.rc"; rd: "ac.rd"; re: "ac.re"; rf: "ac.rf"; rg: "ac.rg"; rh: "ac.rh"; ri: "ac.ri"; rj: "ac.rj"; rk: "ac.rk"; rl: "ac.rl"; rm: "ac.rm"; rn: "ac.rn"; ro: "ac.ro"; rp: "ac.rp"; rq: "ac.rq"; rr: "ac.rr"; rs: "ac.rs"; rt: "ac.rt"; ru: "ac.ru"; rv: "ac.rv"; rw: "ac.rw"; rx: "ac.rx"; ry: "ac.ry"; rz: "ac.rz"; sa: "ac.sa"; sb: "ac.sb"; sc: "ac.sc"; sd: "ac.sd"; se: "ac.se"; sf: "ac.sf"; sg: "ac.sg"; sh: "ac.sh"; si: "ac.si"; sj: "ac.sj"; sk: "ac.sk"; sl: "ac.sl"; sm: "ac.sm"; sn: "ac.sn"; so: "ac.so"; sp: "ac.sp"; sq: "ac.sq"; sr: "ac.sr"; ss: "ac.ss"; st: "ac.st"; su: "ac.su"; sv: "ac.sv"; sw: "ac.sw"; sx: "ac.sx"; sy: "ac.sy"; sz: "ac.sz"; ta: "ac.ta"; tb: "ac.tb"; tc: "ac.tc"; td: "ac.td"; te: "ac.te"; tf: "ac.tf"; tg: "ac.tg"; th: "ac.th"; ti: "ac.ti"; tj: "ac.tj"; tk: "ac.tk"; tl: "ac.tl"; tm: "ac.tm"; tn: "ac.tn"; to: "ac.to"; tp: "ac.tp"; tq: "ac.tq"; tr: "ac.tr"; ts: "ac.ts"; tt: "ac.tt"; tu: "ac.tu"; tv: "ac.tv"; tw: "ac.tw"; tx: "ac.tx"; ty: "ac.ty"; tz: "ac.tz"; ua: "ac.ua"; ub: "ac.ub"; uc: "ac.uc"; ud: "ac.ud"; ue: "ac.ue"; uf: "ac.uf"; ug: "ac.ug"; uh: "ac.uh"; ui: "ac.ui"; uj: "ac.uj"; uk: "ac.uk"; ul: "ac.ul"; um: "ac.um"; un: "ac.un"; uo: "ac.uo"; up: "ac.up"; uq: "ac.uq"; ur: "ac.ur"; us: "ac.us"; ut: "ac.ut"; uu: "ac.uu"; uv: "ac.uv"; uw: "ac.uw"; ux: "ac.ux"; uy: "ac.uy"; uz: "ac.uz"; va: "ac.va"; vb: "ac.vb"; vc: "ac.vc"; vd: "ac.vd"; ve: "ac.ve"; vf: "ac.vf"; vg: "ac.vg"; vh: "ac.vh"; vi: "ac.vi"; vj: "ac.vj"; vk: "ac.vk"; vl: "ac.vl"; vm: "ac.vm"; vn: "ac.vn"; vo: "ac.vo"; vp: "ac.vp"; vq: "ac.vq"; vr: "ac.vr"; vs: "ac.vs"; vt: "ac.vt"; vu: "ac.vu"; vv: "ac.vv"; vw: "ac.vw"; vx: "ac.vx"; vy: "ac.vy"; vz: "ac.vz"; wa: "ac.wa"; wb: "ac.wb"; wc: "ac.wc"; wd: "ac.wd"; we: "ac.we"; wf: "ac.wf"; wg: "ac.wg"; wh: "ac.wh"; wi: "ac.wi"; wj: "ac.wj"; wk: "ac.wk"; wl: "ac.wl"; wm: "ac.wm"; wn: "ac.wn"; wo: "ac.wo"; wp: "ac.wp"; wq: "ac.wq"; wr: "ac.wr"; ws: "ac.ws"; wt: "ac.wt"; wu: "ac.wu"; wv: "ac.wv"; ww: "ac.ww"; wx: "ac.wx"; wy: "ac.wy"; wz: "ac.wz"; xa: "ac.xa"; xb: "ac.xb"; xc: "ac.xc"; xd: "ac.xd"; xe: "ac.xe"; xf: "ac.xf"; xg: "ac.xg"; xh: "ac.xh"; xi: "ac.xi"; xj: "ac.xj"; xk: "ac.xk"; xl: "ac.xl"; xm: "ac.xm"; xn: "ac.xn"; xo: "ac.xo"; xp: "ac.xp"; xq: "ac.xq"; xr: "ac.xr"; xs: "ac.xs"; xt: "ac.xt"; xu: "ac.xu"; xv: "ac.xv"; xw: "ac.xw"; xx: "ac.xx"; xy: "ac.xy"; xz: "ac.xz"; ya: "ac.ya"; yb: "ac.yb"; yc: "ac.yc"; yd: "ac.yd"; ye: "ac.ye"; yf: "ac.yf"; yg: "ac.yg"; yh: "ac.yh"; yi: "ac.yi"; yj: "ac.yj"; yk: "ac.yk"; yl: "ac.yl"; ym: "ac.ym"; yn: "ac.yn"; yo: "ac.yo"; yp: "ac.yp"; yq: "ac.yq"; yr: "ac.yr"; ys: "ac.ys"; yt: "ac.yt"; yu: "ac.yu"; yv: "ac.yv"; yw: "ac.yw"; yx: "ac.yx"; yy: "ac.yy"; yz: "ac.yz"; za: "ac.za"; zb: "ac.zb"; zc: "ac.zc"; zd: "ac.zd"; ze: "ac.ze"; zf: "ac.zf"; zg: "ac.zg"; zh: "ac.zh"; zi: "ac.zi"; zj: "ac.zj"; zk: "ac.zk"; zl: "ac.zl"; zm: "ac.zm"; zn: "ac.zn"; zo: "ac.zo"; zp: "ac.zp"; zq: "ac.zq"; zr: "ac.zr"; zs: "ac.zs"; zt: "ac.zt"; zu: "ac.zu"; zv: "ac.zv"; zw: "ac.zw"; zx: "ac.zx"; zy: "ac.zy"; zz: "ac.zz"; }; ad: { aa: "ad.aa"; ab: "ad.ab"; ac: "ad.ac"; ad: "ad.ad"; ae: "ad.ae"; af: "ad.af"; ag: "ad.ag"; ah: "ad.ah"; ai: "ad.ai"; aj: "ad.aj"; ak: "ad.ak"; al: "ad.al"; am: "ad.am"; an: "ad.an"; ao: "ad.ao"; ap: "ad.ap"; aq: "ad.aq"; ar: "ad.ar"; as: "ad.as"; at: "ad.at"; au: "ad.au"; av: "ad.av"; aw: "ad.aw"; ax: "ad.ax"; ay: "ad.ay"; az: "ad.az"; ba: "ad.ba"; bb: "ad.bb"; bc: "ad.bc"; bd: "ad.bd"; be: "ad.be"; bf: "ad.bf"; bg: "ad.bg"; bh: "ad.bh"; bi: "ad.bi"; bj: "ad.bj"; bk: "ad.bk"; bl: "ad.bl"; bm: "ad.bm"; bn: "ad.bn"; bo: "ad.bo"; bp: "ad.bp"; bq: "ad.bq"; br: "ad.br"; bs: "ad.bs"; bt: "ad.bt"; bu: "ad.bu"; bv: "ad.bv"; bw: "ad.bw"; bx: "ad.bx"; by: "ad.by"; bz: "ad.bz"; ca: "ad.ca"; cb: "ad.cb"; cc: "ad.cc"; cd: "ad.cd"; ce: "ad.ce"; cf: "ad.cf"; cg: "ad.cg"; ch: "ad.ch"; ci: "ad.ci"; cj: "ad.cj"; ck: "ad.ck"; cl: "ad.cl"; cm: "ad.cm"; cn: "ad.cn"; co: "ad.co"; cp: "ad.cp"; cq: "ad.cq"; cr: "ad.cr"; cs: "ad.cs"; ct: "ad.ct"; cu: "ad.cu"; cv: "ad.cv"; cw: "ad.cw"; cx: "ad.cx"; cy: "ad.cy"; cz: "ad.cz"; da: "ad.da"; db: "ad.db"; dc: "ad.dc"; dd: "ad.dd"; de: "ad.de"; df: "ad.df"; dg: "ad.dg"; dh: "ad.dh"; di: "ad.di"; dj: "ad.dj"; dk: "ad.dk"; dl: "ad.dl"; dm: "ad.dm"; dn: "ad.dn"; do: "ad.do"; dp: "ad.dp"; dq: "ad.dq"; dr: "ad.dr"; ds: "ad.ds"; dt: "ad.dt"; du: "ad.du"; dv: "ad.dv"; dw: "ad.dw"; dx: "ad.dx"; dy: "ad.dy"; dz: "ad.dz"; ea: "ad.ea"; eb: "ad.eb"; ec: "ad.ec"; ed: "ad.ed"; ee: "ad.ee"; ef: "ad.ef"; eg: "ad.eg"; eh: "ad.eh"; ei: "ad.ei"; ej: "ad.ej"; ek: "ad.ek"; el: "ad.el"; em: "ad.em"; en: "ad.en"; eo: "ad.eo"; ep: "ad.ep"; eq: "ad.eq"; er: "ad.er"; es: "ad.es"; et: "ad.et"; eu: "ad.eu"; ev: "ad.ev"; ew: "ad.ew"; ex: "ad.ex"; ey: "ad.ey"; ez: "ad.ez"; fa: "ad.fa"; fb: "ad.fb"; fc: "ad.fc"; fd: "ad.fd"; fe: "ad.fe"; ff: "ad.ff"; fg: "ad.fg"; fh: "ad.fh"; fi: "ad.fi"; fj: "ad.fj"; fk: "ad.fk"; fl: "ad.fl"; fm: "ad.fm"; fn: "ad.fn"; fo: "ad.fo"; fp: "ad.fp"; fq: "ad.fq"; fr: "ad.fr"; fs: "ad.fs"; ft: "ad.ft"; fu: "ad.fu"; fv: "ad.fv"; fw: "ad.fw"; fx: "ad.fx"; fy: "ad.fy"; fz: "ad.fz"; ga: "ad.ga"; gb: "ad.gb"; gc: "ad.gc"; gd: "ad.gd"; ge: "ad.ge"; gf: "ad.gf"; gg: "ad.gg"; gh: "ad.gh"; gi: "ad.gi"; gj: "ad.gj"; gk: "ad.gk"; gl: "ad.gl"; gm: "ad.gm"; gn: "ad.gn"; go: "ad.go"; gp: "ad.gp"; gq: "ad.gq"; gr: "ad.gr"; gs: "ad.gs"; gt: "ad.gt"; gu: "ad.gu"; gv: "ad.gv"; gw: "ad.gw"; gx: "ad.gx"; gy: "ad.gy"; gz: "ad.gz"; ha: "ad.ha"; hb: "ad.hb"; hc: "ad.hc"; hd: "ad.hd"; he: "ad.he"; hf: "ad.hf"; hg: "ad.hg"; hh: "ad.hh"; hi: "ad.hi"; hj: "ad.hj"; hk: "ad.hk"; hl: "ad.hl"; hm: "ad.hm"; hn: "ad.hn"; ho: "ad.ho"; hp: "ad.hp"; hq: "ad.hq"; hr: "ad.hr"; hs: "ad.hs"; ht: "ad.ht"; hu: "ad.hu"; hv: "ad.hv"; hw: "ad.hw"; hx: "ad.hx"; hy: "ad.hy"; hz: "ad.hz"; ia: "ad.ia"; ib: "ad.ib"; ic: "ad.ic"; id: "ad.id"; ie: "ad.ie"; if: "ad.if"; ig: "ad.ig"; ih: "ad.ih"; ii: "ad.ii"; ij: "ad.ij"; ik: "ad.ik"; il: "ad.il"; im: "ad.im"; in: "ad.in"; io: "ad.io"; ip: "ad.ip"; iq: "ad.iq"; ir: "ad.ir"; is: "ad.is"; it: "ad.it"; iu: "ad.iu"; iv: "ad.iv"; iw: "ad.iw"; ix: "ad.ix"; iy: "ad.iy"; iz: "ad.iz"; ja: "ad.ja"; jb: "ad.jb"; jc: "ad.jc"; jd: "ad.jd"; je: "ad.je"; jf: "ad.jf"; jg: "ad.jg"; jh: "ad.jh"; ji: "ad.ji"; jj: "ad.jj"; jk: "ad.jk"; jl: "ad.jl"; jm: "ad.jm"; jn: "ad.jn"; jo: "ad.jo"; jp: "ad.jp"; jq: "ad.jq"; jr: "ad.jr"; js: "ad.js"; jt: "ad.jt"; ju: "ad.ju"; jv: "ad.jv"; jw: "ad.jw"; jx: "ad.jx"; jy: "ad.jy"; jz: "ad.jz"; ka: "ad.ka"; kb: "ad.kb"; kc: "ad.kc"; kd: "ad.kd"; ke: "ad.ke"; kf: "ad.kf"; kg: "ad.kg"; kh: "ad.kh"; ki: "ad.ki"; kj: "ad.kj"; kk: "ad.kk"; kl: "ad.kl"; km: "ad.km"; kn: "ad.kn"; ko: "ad.ko"; kp: "ad.kp"; kq: "ad.kq"; kr: "ad.kr"; ks: "ad.ks"; kt: "ad.kt"; ku: "ad.ku"; kv: "ad.kv"; kw: "ad.kw"; kx: "ad.kx"; ky: "ad.ky"; kz: "ad.kz"; la: "ad.la"; lb: "ad.lb"; lc: "ad.lc"; ld: "ad.ld"; le: "ad.le"; lf: "ad.lf"; lg: "ad.lg"; lh: "ad.lh"; li: "ad.li"; lj: "ad.lj"; lk: "ad.lk"; ll: "ad.ll"; lm: "ad.lm"; ln: "ad.ln"; lo: "ad.lo"; lp: "ad.lp"; lq: "ad.lq"; lr: "ad.lr"; ls: "ad.ls"; lt: "ad.lt"; lu: "ad.lu"; lv: "ad.lv"; lw: "ad.lw"; lx: "ad.lx"; ly: "ad.ly"; lz: "ad.lz"; ma: "ad.ma"; mb: "ad.mb"; mc: "ad.mc"; md: "ad.md"; me: "ad.me"; mf: "ad.mf"; mg: "ad.mg"; mh: "ad.mh"; mi: "ad.mi"; mj: "ad.mj"; mk: "ad.mk"; ml: "ad.ml"; mm: "ad.mm"; mn: "ad.mn"; mo: "ad.mo"; mp: "ad.mp"; mq: "ad.mq"; mr: "ad.mr"; ms: "ad.ms"; mt: "ad.mt"; mu: "ad.mu"; mv: "ad.mv"; mw: "ad.mw"; mx: "ad.mx"; my: "ad.my"; mz: "ad.mz"; na: "ad.na"; nb: "ad.nb"; nc: "ad.nc"; nd: "ad.nd"; ne: "ad.ne"; nf: "ad.nf"; ng: "ad.ng"; nh: "ad.nh"; ni: "ad.ni"; nj: "ad.nj"; nk: "ad.nk"; nl: "ad.nl"; nm: "ad.nm"; nn: "ad.nn"; no: "ad.no"; np: "ad.np"; nq: "ad.nq"; nr: "ad.nr"; ns: "ad.ns"; nt: "ad.nt"; nu: "ad.nu"; nv: "ad.nv"; nw: "ad.nw"; nx: "ad.nx"; ny: "ad.ny"; nz: "ad.nz"; oa: "ad.oa"; ob: "ad.ob"; oc: "ad.oc"; od: "ad.od"; oe: "ad.oe"; of: "ad.of"; og: "ad.og"; oh: "ad.oh"; oi: "ad.oi"; oj: "ad.oj"; ok: "ad.ok"; ol: "ad.ol"; om: "ad.om"; on: "ad.on"; oo: "ad.oo"; op: "ad.op"; oq: "ad.oq"; or: "ad.or"; os: "ad.os"; ot: "ad.ot"; ou: "ad.ou"; ov: "ad.ov"; ow: "ad.ow"; ox: "ad.ox"; oy: "ad.oy"; oz: "ad.oz"; pa: "ad.pa"; pb: "ad.pb"; pc: "ad.pc"; pd: "ad.pd"; pe: "ad.pe"; pf: "ad.pf"; pg: "ad.pg"; ph: "ad.ph"; pi: "ad.pi"; pj: "ad.pj"; pk: "ad.pk"; pl: "ad.pl"; pm: "ad.pm"; pn: "ad.pn"; po: "ad.po"; pp: "ad.pp"; pq: "ad.pq"; pr: "ad.pr"; ps: "ad.ps"; pt: "ad.pt"; pu: "ad.pu"; pv: "ad.pv"; pw: "ad.pw"; px: "ad.px"; py: "ad.py"; pz: "ad.pz"; qa: "ad.qa"; qb: "ad.qb"; qc: "ad.qc"; qd: "ad.qd"; qe: "ad.qe"; qf: "ad.qf"; qg: "ad.qg"; qh: "ad.qh"; qi: "ad.qi"; qj: "ad.qj"; qk: "ad.qk"; ql: "ad.ql"; qm: "ad.qm"; qn: "ad.qn"; qo: "ad.qo"; qp: "ad.qp"; qq: "ad.qq"; qr: "ad.qr"; qs: "ad.qs"; qt: "ad.qt"; qu: "ad.qu"; qv: "ad.qv"; qw: "ad.qw"; qx: "ad.qx"; qy: "ad.qy"; qz: "ad.qz"; ra: "ad.ra"; rb: "ad.rb"; rc: "ad.rc"; rd: "ad.rd"; re: "ad.re"; rf: "ad.rf"; rg: "ad.rg"; rh: "ad.rh"; ri: "ad.ri"; rj: "ad.rj"; rk: "ad.rk"; rl: "ad.rl"; rm: "ad.rm"; rn: "ad.rn"; ro: "ad.ro"; rp: "ad.rp"; rq: "ad.rq"; rr: "ad.rr"; rs: "ad.rs"; rt: "ad.rt"; ru: "ad.ru"; rv: "ad.rv"; rw: "ad.rw"; rx: "ad.rx"; ry: "ad.ry"; rz: "ad.rz"; sa: "ad.sa"; sb: "ad.sb"; sc: "ad.sc"; sd: "ad.sd"; se: "ad.se"; sf: "ad.sf"; sg: "ad.sg"; sh: "ad.sh"; si: "ad.si"; sj: "ad.sj"; sk: "ad.sk"; sl: "ad.sl"; sm: "ad.sm"; sn: "ad.sn"; so: "ad.so"; sp: "ad.sp"; sq: "ad.sq"; sr: "ad.sr"; ss: "ad.ss"; st: "ad.st"; su: "ad.su"; sv: "ad.sv"; sw: "ad.sw"; sx: "ad.sx"; sy: "ad.sy"; sz: "ad.sz"; ta: "ad.ta"; tb: "ad.tb"; tc: "ad.tc"; td: "ad.td"; te: "ad.te"; tf: "ad.tf"; tg: "ad.tg"; th: "ad.th"; ti: "ad.ti"; tj: "ad.tj"; tk: "ad.tk"; tl: "ad.tl"; tm: "ad.tm"; tn: "ad.tn"; to: "ad.to"; tp: "ad.tp"; tq: "ad.tq"; tr: "ad.tr"; ts: "ad.ts"; tt: "ad.tt"; tu: "ad.tu"; tv: "ad.tv"; tw: "ad.tw"; tx: "ad.tx"; ty: "ad.ty"; tz: "ad.tz"; ua: "ad.ua"; ub: "ad.ub"; uc: "ad.uc"; ud: "ad.ud"; ue: "ad.ue"; uf: "ad.uf"; ug: "ad.ug"; uh: "ad.uh"; ui: "ad.ui"; uj: "ad.uj"; uk: "ad.uk"; ul: "ad.ul"; um: "ad.um"; un: "ad.un"; uo: "ad.uo"; up: "ad.up"; uq: "ad.uq"; ur: "ad.ur"; us: "ad.us"; ut: "ad.ut"; uu: "ad.uu"; uv: "ad.uv"; uw: "ad.uw"; ux: "ad.ux"; uy: "ad.uy"; uz: "ad.uz"; va: "ad.va"; vb: "ad.vb"; vc: "ad.vc"; vd: "ad.vd"; ve: "ad.ve"; vf: "ad.vf"; vg: "ad.vg"; vh: "ad.vh"; vi: "ad.vi"; vj: "ad.vj"; vk: "ad.vk"; vl: "ad.vl"; vm: "ad.vm"; vn: "ad.vn"; vo: "ad.vo"; vp: "ad.vp"; vq: "ad.vq"; vr: "ad.vr"; vs: "ad.vs"; vt: "ad.vt"; vu: "ad.vu"; vv: "ad.vv"; vw: "ad.vw"; vx: "ad.vx"; vy: "ad.vy"; vz: "ad.vz"; wa: "ad.wa"; wb: "ad.wb"; wc: "ad.wc"; wd: "ad.wd"; we: "ad.we"; wf: "ad.wf"; wg: "ad.wg"; wh: "ad.wh"; wi: "ad.wi"; wj: "ad.wj"; wk: "ad.wk"; wl: "ad.wl"; wm: "ad.wm"; wn: "ad.wn"; wo: "ad.wo"; wp: "ad.wp"; wq: "ad.wq"; wr: "ad.wr"; ws: "ad.ws"; wt: "ad.wt"; wu: "ad.wu"; wv: "ad.wv"; ww: "ad.ww"; wx: "ad.wx"; wy: "ad.wy"; wz: "ad.wz"; xa: "ad.xa"; xb: "ad.xb"; xc: "ad.xc"; xd: "ad.xd"; xe: "ad.xe"; xf: "ad.xf"; xg: "ad.xg"; xh: "ad.xh"; xi: "ad.xi"; xj: "ad.xj"; xk: "ad.xk"; xl: "ad.xl"; xm: "ad.xm"; xn: "ad.xn"; xo: "ad.xo"; xp: "ad.xp"; xq: "ad.xq"; xr: "ad.xr"; xs: "ad.xs"; xt: "ad.xt"; xu: "ad.xu"; xv: "ad.xv"; xw: "ad.xw"; xx: "ad.xx"; xy: "ad.xy"; xz: "ad.xz"; ya: "ad.ya"; yb: "ad.yb"; yc: "ad.yc"; yd: "ad.yd"; ye: "ad.ye"; yf: "ad.yf"; yg: "ad.yg"; yh: "ad.yh"; yi: "ad.yi"; yj: "ad.yj"; yk: "ad.yk"; yl: "ad.yl"; ym: "ad.ym"; yn: "ad.yn"; yo: "ad.yo"; yp: "ad.yp"; yq: "ad.yq"; yr: "ad.yr"; ys: "ad.ys"; yt: "ad.yt"; yu: "ad.yu"; yv: "ad.yv"; yw: "ad.yw"; yx: "ad.yx"; yy: "ad.yy"; yz: "ad.yz"; za: "ad.za"; zb: "ad.zb"; zc: "ad.zc"; zd: "ad.zd"; ze: "ad.ze"; zf: "ad.zf"; zg: "ad.zg"; zh: "ad.zh"; zi: "ad.zi"; zj: "ad.zj"; zk: "ad.zk"; zl: "ad.zl"; zm: "ad.zm"; zn: "ad.zn"; zo: "ad.zo"; zp: "ad.zp"; zq: "ad.zq"; zr: "ad.zr"; zs: "ad.zs"; zt: "ad.zt"; zu: "ad.zu"; zv: "ad.zv"; zw: "ad.zw"; zx: "ad.zx"; zy: "ad.zy"; zz: "ad.zz"; }; ae: { aa: "ae.aa"; ab: "ae.ab"; ac: "ae.ac"; ad: "ae.ad"; ae: "ae.ae"; af: "ae.af"; ag: "ae.ag"; ah: "ae.ah"; ai: "ae.ai"; aj: "ae.aj"; ak: "ae.ak"; al: "ae.al"; am: "ae.am"; an: "ae.an"; ao: "ae.ao"; ap: "ae.ap"; aq: "ae.aq"; ar: "ae.ar"; as: "ae.as"; at: "ae.at"; au: "ae.au"; av: "ae.av"; aw: "ae.aw"; ax: "ae.ax"; ay: "ae.ay"; az: "ae.az"; ba: "ae.ba"; bb: "ae.bb"; bc: "ae.bc"; bd: "ae.bd"; be: "ae.be"; bf: "ae.bf"; bg: "ae.bg"; bh: "ae.bh"; bi: "ae.bi"; bj: "ae.bj"; bk: "ae.bk"; bl: "ae.bl"; bm: "ae.bm"; bn: "ae.bn"; bo: "ae.bo"; bp: "ae.bp"; bq: "ae.bq"; br: "ae.br"; bs: "ae.bs"; bt: "ae.bt"; bu: "ae.bu"; bv: "ae.bv"; bw: "ae.bw"; bx: "ae.bx"; by: "ae.by"; bz: "ae.bz"; ca: "ae.ca"; cb: "ae.cb"; cc: "ae.cc"; cd: "ae.cd"; ce: "ae.ce"; cf: "ae.cf"; cg: "ae.cg"; ch: "ae.ch"; ci: "ae.ci"; cj: "ae.cj"; ck: "ae.ck"; cl: "ae.cl"; cm: "ae.cm"; cn: "ae.cn"; co: "ae.co"; cp: "ae.cp"; cq: "ae.cq"; cr: "ae.cr"; cs: "ae.cs"; ct: "ae.ct"; cu: "ae.cu"; cv: "ae.cv"; cw: "ae.cw"; cx: "ae.cx"; cy: "ae.cy"; cz: "ae.cz"; da: "ae.da"; db: "ae.db"; dc: "ae.dc"; dd: "ae.dd"; de: "ae.de"; df: "ae.df"; dg: "ae.dg"; dh: "ae.dh"; di: "ae.di"; dj: "ae.dj"; dk: "ae.dk"; dl: "ae.dl"; dm: "ae.dm"; dn: "ae.dn"; do: "ae.do"; dp: "ae.dp"; dq: "ae.dq"; dr: "ae.dr"; ds: "ae.ds"; dt: "ae.dt"; du: "ae.du"; dv: "ae.dv"; dw: "ae.dw"; dx: "ae.dx"; dy: "ae.dy"; dz: "ae.dz"; ea: "ae.ea"; eb: "ae.eb"; ec: "ae.ec"; ed: "ae.ed"; ee: "ae.ee"; ef: "ae.ef"; eg: "ae.eg"; eh: "ae.eh"; ei: "ae.ei"; ej: "ae.ej"; ek: "ae.ek"; el: "ae.el"; em: "ae.em"; en: "ae.en"; eo: "ae.eo"; ep: "ae.ep"; eq: "ae.eq"; er: "ae.er"; es: "ae.es"; et: "ae.et"; eu: "ae.eu"; ev: "ae.ev"; ew: "ae.ew"; ex: "ae.ex"; ey: "ae.ey"; ez: "ae.ez"; fa: "ae.fa"; fb: "ae.fb"; fc: "ae.fc"; fd: "ae.fd"; fe: "ae.fe"; ff: "ae.ff"; fg: "ae.fg"; fh: "ae.fh"; fi: "ae.fi"; fj: "ae.fj"; fk: "ae.fk"; fl: "ae.fl"; fm: "ae.fm"; fn: "ae.fn"; fo: "ae.fo"; fp: "ae.fp"; fq: "ae.fq"; fr: "ae.fr"; fs: "ae.fs"; ft: "ae.ft"; fu: "ae.fu"; fv: "ae.fv"; fw: "ae.fw"; fx: "ae.fx"; fy: "ae.fy"; fz: "ae.fz"; ga: "ae.ga"; gb: "ae.gb"; gc: "ae.gc"; gd: "ae.gd"; ge: "ae.ge"; gf: "ae.gf"; gg: "ae.gg"; gh: "ae.gh"; gi: "ae.gi"; gj: "ae.gj"; gk: "ae.gk"; gl: "ae.gl"; gm: "ae.gm"; gn: "ae.gn"; go: "ae.go"; gp: "ae.gp"; gq: "ae.gq"; gr: "ae.gr"; gs: "ae.gs"; gt: "ae.gt"; gu: "ae.gu"; gv: "ae.gv"; gw: "ae.gw"; gx: "ae.gx"; gy: "ae.gy"; gz: "ae.gz"; ha: "ae.ha"; hb: "ae.hb"; hc: "ae.hc"; hd: "ae.hd"; he: "ae.he"; hf: "ae.hf"; hg: "ae.hg"; hh: "ae.hh"; hi: "ae.hi"; hj: "ae.hj"; hk: "ae.hk"; hl: "ae.hl"; hm: "ae.hm"; hn: "ae.hn"; ho: "ae.ho"; hp: "ae.hp"; hq: "ae.hq"; hr: "ae.hr"; hs: "ae.hs"; ht: "ae.ht"; hu: "ae.hu"; hv: "ae.hv"; hw: "ae.hw"; hx: "ae.hx"; hy: "ae.hy"; hz: "ae.hz"; ia: "ae.ia"; ib: "ae.ib"; ic: "ae.ic"; id: "ae.id"; ie: "ae.ie"; if: "ae.if"; ig: "ae.ig"; ih: "ae.ih"; ii: "ae.ii"; ij: "ae.ij"; ik: "ae.ik"; il: "ae.il"; im: "ae.im"; in: "ae.in"; io: "ae.io"; ip: "ae.ip"; iq: "ae.iq"; ir: "ae.ir"; is: "ae.is"; it: "ae.it"; iu: "ae.iu"; iv: "ae.iv"; iw: "ae.iw"; ix: "ae.ix"; iy: "ae.iy"; iz: "ae.iz"; ja: "ae.ja"; jb: "ae.jb"; jc: "ae.jc"; jd: "ae.jd"; je: "ae.je"; jf: "ae.jf"; jg: "ae.jg"; jh: "ae.jh"; ji: "ae.ji"; jj: "ae.jj"; jk: "ae.jk"; jl: "ae.jl"; jm: "ae.jm"; jn: "ae.jn"; jo: "ae.jo"; jp: "ae.jp"; jq: "ae.jq"; jr: "ae.jr"; js: "ae.js"; jt: "ae.jt"; ju: "ae.ju"; jv: "ae.jv"; jw: "ae.jw"; jx: "ae.jx"; jy: "ae.jy"; jz: "ae.jz"; ka: "ae.ka"; kb: "ae.kb"; kc: "ae.kc"; kd: "ae.kd"; ke: "ae.ke"; kf: "ae.kf"; kg: "ae.kg"; kh: "ae.kh"; ki: "ae.ki"; kj: "ae.kj"; kk: "ae.kk"; kl: "ae.kl"; km: "ae.km"; kn: "ae.kn"; ko: "ae.ko"; kp: "ae.kp"; kq: "ae.kq"; kr: "ae.kr"; ks: "ae.ks"; kt: "ae.kt"; ku: "ae.ku"; kv: "ae.kv"; kw: "ae.kw"; kx: "ae.kx"; ky: "ae.ky"; kz: "ae.kz"; la: "ae.la"; lb: "ae.lb"; lc: "ae.lc"; ld: "ae.ld"; le: "ae.le"; lf: "ae.lf"; lg: "ae.lg"; lh: "ae.lh"; li: "ae.li"; lj: "ae.lj"; lk: "ae.lk"; ll: "ae.ll"; lm: "ae.lm"; ln: "ae.ln"; lo: "ae.lo"; lp: "ae.lp"; lq: "ae.lq"; lr: "ae.lr"; ls: "ae.ls"; lt: "ae.lt"; lu: "ae.lu"; lv: "ae.lv"; lw: "ae.lw"; lx: "ae.lx"; ly: "ae.ly"; lz: "ae.lz"; ma: "ae.ma"; mb: "ae.mb"; mc: "ae.mc"; md: "ae.md"; me: "ae.me"; mf: "ae.mf"; mg: "ae.mg"; mh: "ae.mh"; mi: "ae.mi"; mj: "ae.mj"; mk: "ae.mk"; ml: "ae.ml"; mm: "ae.mm"; mn: "ae.mn"; mo: "ae.mo"; mp: "ae.mp"; mq: "ae.mq"; mr: "ae.mr"; ms: "ae.ms"; mt: "ae.mt"; mu: "ae.mu"; mv: "ae.mv"; mw: "ae.mw"; mx: "ae.mx"; my: "ae.my"; mz: "ae.mz"; na: "ae.na"; nb: "ae.nb"; nc: "ae.nc"; nd: "ae.nd"; ne: "ae.ne"; nf: "ae.nf"; ng: "ae.ng"; nh: "ae.nh"; ni: "ae.ni"; nj: "ae.nj"; nk: "ae.nk"; nl: "ae.nl"; nm: "ae.nm"; nn: "ae.nn"; no: "ae.no"; np: "ae.np"; nq: "ae.nq"; nr: "ae.nr"; ns: "ae.ns"; nt: "ae.nt"; nu: "ae.nu"; nv: "ae.nv"; nw: "ae.nw"; nx: "ae.nx"; ny: "ae.ny"; nz: "ae.nz"; oa: "ae.oa"; ob: "ae.ob"; oc: "ae.oc"; od: "ae.od"; oe: "ae.oe"; of: "ae.of"; og: "ae.og"; oh: "ae.oh"; oi: "ae.oi"; oj: "ae.oj"; ok: "ae.ok"; ol: "ae.ol"; om: "ae.om"; on: "ae.on"; oo: "ae.oo"; op: "ae.op"; oq: "ae.oq"; or: "ae.or"; os: "ae.os"; ot: "ae.ot"; ou: "ae.ou"; ov: "ae.ov"; ow: "ae.ow"; ox: "ae.ox"; oy: "ae.oy"; oz: "ae.oz"; pa: "ae.pa"; pb: "ae.pb"; pc: "ae.pc"; pd: "ae.pd"; pe: "ae.pe"; pf: "ae.pf"; pg: "ae.pg"; ph: "ae.ph"; pi: "ae.pi"; pj: "ae.pj"; pk: "ae.pk"; pl: "ae.pl"; pm: "ae.pm"; pn: "ae.pn"; po: "ae.po"; pp: "ae.pp"; pq: "ae.pq"; pr: "ae.pr"; ps: "ae.ps"; pt: "ae.pt"; pu: "ae.pu"; pv: "ae.pv"; pw: "ae.pw"; px: "ae.px"; py: "ae.py"; pz: "ae.pz"; qa: "ae.qa"; qb: "ae.qb"; qc: "ae.qc"; qd: "ae.qd"; qe: "ae.qe"; qf: "ae.qf"; qg: "ae.qg"; qh: "ae.qh"; qi: "ae.qi"; qj: "ae.qj"; qk: "ae.qk"; ql: "ae.ql"; qm: "ae.qm"; qn: "ae.qn"; qo: "ae.qo"; qp: "ae.qp"; qq: "ae.qq"; qr: "ae.qr"; qs: "ae.qs"; qt: "ae.qt"; qu: "ae.qu"; qv: "ae.qv"; qw: "ae.qw"; qx: "ae.qx"; qy: "ae.qy"; qz: "ae.qz"; ra: "ae.ra"; rb: "ae.rb"; rc: "ae.rc"; rd: "ae.rd"; re: "ae.re"; rf: "ae.rf"; rg: "ae.rg"; rh: "ae.rh"; ri: "ae.ri"; rj: "ae.rj"; rk: "ae.rk"; rl: "ae.rl"; rm: "ae.rm"; rn: "ae.rn"; ro: "ae.ro"; rp: "ae.rp"; rq: "ae.rq"; rr: "ae.rr"; rs: "ae.rs"; rt: "ae.rt"; ru: "ae.ru"; rv: "ae.rv"; rw: "ae.rw"; rx: "ae.rx"; ry: "ae.ry"; rz: "ae.rz"; sa: "ae.sa"; sb: "ae.sb"; sc: "ae.sc"; sd: "ae.sd"; se: "ae.se"; sf: "ae.sf"; sg: "ae.sg"; sh: "ae.sh"; si: "ae.si"; sj: "ae.sj"; sk: "ae.sk"; sl: "ae.sl"; sm: "ae.sm"; sn: "ae.sn"; so: "ae.so"; sp: "ae.sp"; sq: "ae.sq"; sr: "ae.sr"; ss: "ae.ss"; st: "ae.st"; su: "ae.su"; sv: "ae.sv"; sw: "ae.sw"; sx: "ae.sx"; sy: "ae.sy"; sz: "ae.sz"; ta: "ae.ta"; tb: "ae.tb"; tc: "ae.tc"; td: "ae.td"; te: "ae.te"; tf: "ae.tf"; tg: "ae.tg"; th: "ae.th"; ti: "ae.ti"; tj: "ae.tj"; tk: "ae.tk"; tl: "ae.tl"; tm: "ae.tm"; tn: "ae.tn"; to: "ae.to"; tp: "ae.tp"; tq: "ae.tq"; tr: "ae.tr"; ts: "ae.ts"; tt: "ae.tt"; tu: "ae.tu"; tv: "ae.tv"; tw: "ae.tw"; tx: "ae.tx"; ty: "ae.ty"; tz: "ae.tz"; ua: "ae.ua"; ub: "ae.ub"; uc: "ae.uc"; ud: "ae.ud"; ue: "ae.ue"; uf: "ae.uf"; ug: "ae.ug"; uh: "ae.uh"; ui: "ae.ui"; uj: "ae.uj"; uk: "ae.uk"; ul: "ae.ul"; um: "ae.um"; un: "ae.un"; uo: "ae.uo"; up: "ae.up"; uq: "ae.uq"; ur: "ae.ur"; us: "ae.us"; ut: "ae.ut"; uu: "ae.uu"; uv: "ae.uv"; uw: "ae.uw"; ux: "ae.ux"; uy: "ae.uy"; uz: "ae.uz"; va: "ae.va"; vb: "ae.vb"; vc: "ae.vc"; vd: "ae.vd"; ve: "ae.ve"; vf: "ae.vf"; vg: "ae.vg"; vh: "ae.vh"; vi: "ae.vi"; vj: "ae.vj"; vk: "ae.vk"; vl: "ae.vl"; vm: "ae.vm"; vn: "ae.vn"; vo: "ae.vo"; vp: "ae.vp"; vq: "ae.vq"; vr: "ae.vr"; vs: "ae.vs"; vt: "ae.vt"; vu: "ae.vu"; vv: "ae.vv"; vw: "ae.vw"; vx: "ae.vx"; vy: "ae.vy"; vz: "ae.vz"; wa: "ae.wa"; wb: "ae.wb"; wc: "ae.wc"; wd: "ae.wd"; we: "ae.we"; wf: "ae.wf"; wg: "ae.wg"; wh: "ae.wh"; wi: "ae.wi"; wj: "ae.wj"; wk: "ae.wk"; wl: "ae.wl"; wm: "ae.wm"; wn: "ae.wn"; wo: "ae.wo"; wp: "ae.wp"; wq: "ae.wq"; wr: "ae.wr"; ws: "ae.ws"; wt: "ae.wt"; wu: "ae.wu"; wv: "ae.wv"; ww: "ae.ww"; wx: "ae.wx"; wy: "ae.wy"; wz: "ae.wz"; xa: "ae.xa"; xb: "ae.xb"; xc: "ae.xc"; xd: "ae.xd"; xe: "ae.xe"; xf: "ae.xf"; xg: "ae.xg"; xh: "ae.xh"; xi: "ae.xi"; xj: "ae.xj"; xk: "ae.xk"; xl: "ae.xl"; xm: "ae.xm"; xn: "ae.xn"; xo: "ae.xo"; xp: "ae.xp"; xq: "ae.xq"; xr: "ae.xr"; xs: "ae.xs"; xt: "ae.xt"; xu: "ae.xu"; xv: "ae.xv"; xw: "ae.xw"; xx: "ae.xx"; xy: "ae.xy"; xz: "ae.xz"; ya: "ae.ya"; yb: "ae.yb"; yc: "ae.yc"; yd: "ae.yd"; ye: "ae.ye"; yf: "ae.yf"; yg: "ae.yg"; yh: "ae.yh"; yi: "ae.yi"; yj: "ae.yj"; yk: "ae.yk"; yl: "ae.yl"; ym: "ae.ym"; yn: "ae.yn"; yo: "ae.yo"; yp: "ae.yp"; yq: "ae.yq"; yr: "ae.yr"; ys: "ae.ys"; yt: "ae.yt"; yu: "ae.yu"; yv: "ae.yv"; yw: "ae.yw"; yx: "ae.yx"; yy: "ae.yy"; yz: "ae.yz"; za: "ae.za"; zb: "ae.zb"; zc: "ae.zc"; zd: "ae.zd"; ze: "ae.ze"; zf: "ae.zf"; zg: "ae.zg"; zh: "ae.zh"; zi: "ae.zi"; zj: "ae.zj"; zk: "ae.zk"; zl: "ae.zl"; zm: "ae.zm"; zn: "ae.zn"; zo: "ae.zo"; zp: "ae.zp"; zq: "ae.zq"; zr: "ae.zr"; zs: "ae.zs"; zt: "ae.zt"; zu: "ae.zu"; zv: "ae.zv"; zw: "ae.zw"; zx: "ae.zx"; zy: "ae.zy"; zz: "ae.zz"; }; af: { aa: "af.aa"; ab: "af.ab"; ac: "af.ac"; ad: "af.ad"; ae: "af.ae"; af: "af.af"; ag: "af.ag"; ah: "af.ah"; ai: "af.ai"; aj: "af.aj"; ak: "af.ak"; al: "af.al"; am: "af.am"; an: "af.an"; ao: "af.ao"; ap: "af.ap"; aq: "af.aq"; ar: "af.ar"; as: "af.as"; at: "af.at"; au: "af.au"; av: "af.av"; aw: "af.aw"; ax: "af.ax"; ay: "af.ay"; az: "af.az"; ba: "af.ba"; bb: "af.bb"; bc: "af.bc"; bd: "af.bd"; be: "af.be"; bf: "af.bf"; bg: "af.bg"; bh: "af.bh"; bi: "af.bi"; bj: "af.bj"; bk: "af.bk"; bl: "af.bl"; bm: "af.bm"; bn: "af.bn"; bo: "af.bo"; bp: "af.bp"; bq: "af.bq"; br: "af.br"; bs: "af.bs"; bt: "af.bt"; bu: "af.bu"; bv: "af.bv"; bw: "af.bw"; bx: "af.bx"; by: "af.by"; bz: "af.bz"; ca: "af.ca"; cb: "af.cb"; cc: "af.cc"; cd: "af.cd"; ce: "af.ce"; cf: "af.cf"; cg: "af.cg"; ch: "af.ch"; ci: "af.ci"; cj: "af.cj"; ck: "af.ck"; cl: "af.cl"; cm: "af.cm"; cn: "af.cn"; co: "af.co"; cp: "af.cp"; cq: "af.cq"; cr: "af.cr"; cs: "af.cs"; ct: "af.ct"; cu: "af.cu"; cv: "af.cv"; cw: "af.cw"; cx: "af.cx"; cy: "af.cy"; cz: "af.cz"; da: "af.da"; db: "af.db"; dc: "af.dc"; dd: "af.dd"; de: "af.de"; df: "af.df"; dg: "af.dg"; dh: "af.dh"; di: "af.di"; dj: "af.dj"; dk: "af.dk"; dl: "af.dl"; dm: "af.dm"; dn: "af.dn"; do: "af.do"; dp: "af.dp"; dq: "af.dq"; dr: "af.dr"; ds: "af.ds"; dt: "af.dt"; du: "af.du"; dv: "af.dv"; dw: "af.dw"; dx: "af.dx"; dy: "af.dy"; dz: "af.dz"; ea: "af.ea"; eb: "af.eb"; ec: "af.ec"; ed: "af.ed"; ee: "af.ee"; ef: "af.ef"; eg: "af.eg"; eh: "af.eh"; ei: "af.ei"; ej: "af.ej"; ek: "af.ek"; el: "af.el"; em: "af.em"; en: "af.en"; eo: "af.eo"; ep: "af.ep"; eq: "af.eq"; er: "af.er"; es: "af.es"; et: "af.et"; eu: "af.eu"; ev: "af.ev"; ew: "af.ew"; ex: "af.ex"; ey: "af.ey"; ez: "af.ez"; fa: "af.fa"; fb: "af.fb"; fc: "af.fc"; fd: "af.fd"; fe: "af.fe"; ff: "af.ff"; fg: "af.fg"; fh: "af.fh"; fi: "af.fi"; fj: "af.fj"; fk: "af.fk"; fl: "af.fl"; fm: "af.fm"; fn: "af.fn"; fo: "af.fo"; fp: "af.fp"; fq: "af.fq"; fr: "af.fr"; fs: "af.fs"; ft: "af.ft"; fu: "af.fu"; fv: "af.fv"; fw: "af.fw"; fx: "af.fx"; fy: "af.fy"; fz: "af.fz"; ga: "af.ga"; gb: "af.gb"; gc: "af.gc"; gd: "af.gd"; ge: "af.ge"; gf: "af.gf"; gg: "af.gg"; gh: "af.gh"; gi: "af.gi"; gj: "af.gj"; gk: "af.gk"; gl: "af.gl"; gm: "af.gm"; gn: "af.gn"; go: "af.go"; gp: "af.gp"; gq: "af.gq"; gr: "af.gr"; gs: "af.gs"; gt: "af.gt"; gu: "af.gu"; gv: "af.gv"; gw: "af.gw"; gx: "af.gx"; gy: "af.gy"; gz: "af.gz"; ha: "af.ha"; hb: "af.hb"; hc: "af.hc"; hd: "af.hd"; he: "af.he"; hf: "af.hf"; hg: "af.hg"; hh: "af.hh"; hi: "af.hi"; hj: "af.hj"; hk: "af.hk"; hl: "af.hl"; hm: "af.hm"; hn: "af.hn"; ho: "af.ho"; hp: "af.hp"; hq: "af.hq"; hr: "af.hr"; hs: "af.hs"; ht: "af.ht"; hu: "af.hu"; hv: "af.hv"; hw: "af.hw"; hx: "af.hx"; hy: "af.hy"; hz: "af.hz"; ia: "af.ia"; ib: "af.ib"; ic: "af.ic"; id: "af.id"; ie: "af.ie"; if: "af.if"; ig: "af.ig"; ih: "af.ih"; ii: "af.ii"; ij: "af.ij"; ik: "af.ik"; il: "af.il"; im: "af.im"; in: "af.in"; io: "af.io"; ip: "af.ip"; iq: "af.iq"; ir: "af.ir"; is: "af.is"; it: "af.it"; iu: "af.iu"; iv: "af.iv"; iw: "af.iw"; ix: "af.ix"; iy: "af.iy"; iz: "af.iz"; ja: "af.ja"; jb: "af.jb"; jc: "af.jc"; jd: "af.jd"; je: "af.je"; jf: "af.jf"; jg: "af.jg"; jh: "af.jh"; ji: "af.ji"; jj: "af.jj"; jk: "af.jk"; jl: "af.jl"; jm: "af.jm"; jn: "af.jn"; jo: "af.jo"; jp: "af.jp"; jq: "af.jq"; jr: "af.jr"; js: "af.js"; jt: "af.jt"; ju: "af.ju"; jv: "af.jv"; jw: "af.jw"; jx: "af.jx"; jy: "af.jy"; jz: "af.jz"; ka: "af.ka"; kb: "af.kb"; kc: "af.kc"; kd: "af.kd"; ke: "af.ke"; kf: "af.kf"; kg: "af.kg"; kh: "af.kh"; ki: "af.ki"; kj: "af.kj"; kk: "af.kk"; kl: "af.kl"; km: "af.km"; kn: "af.kn"; ko: "af.ko"; kp: "af.kp"; kq: "af.kq"; kr: "af.kr"; ks: "af.ks"; kt: "af.kt"; ku: "af.ku"; kv: "af.kv"; kw: "af.kw"; kx: "af.kx"; ky: "af.ky"; kz: "af.kz"; la: "af.la"; lb: "af.lb"; lc: "af.lc"; ld: "af.ld"; le: "af.le"; lf: "af.lf"; lg: "af.lg"; lh: "af.lh"; li: "af.li"; lj: "af.lj"; lk: "af.lk"; ll: "af.ll"; lm: "af.lm"; ln: "af.ln"; lo: "af.lo"; lp: "af.lp"; lq: "af.lq"; lr: "af.lr"; ls: "af.ls"; lt: "af.lt"; lu: "af.lu"; lv: "af.lv"; lw: "af.lw"; lx: "af.lx"; ly: "af.ly"; lz: "af.lz"; ma: "af.ma"; mb: "af.mb"; mc: "af.mc"; md: "af.md"; me: "af.me"; mf: "af.mf"; mg: "af.mg"; mh: "af.mh"; mi: "af.mi"; mj: "af.mj"; mk: "af.mk"; ml: "af.ml"; mm: "af.mm"; mn: "af.mn"; mo: "af.mo"; mp: "af.mp"; mq: "af.mq"; mr: "af.mr"; ms: "af.ms"; mt: "af.mt"; mu: "af.mu"; mv: "af.mv"; mw: "af.mw"; mx: "af.mx"; my: "af.my"; mz: "af.mz"; na: "af.na"; nb: "af.nb"; nc: "af.nc"; nd: "af.nd"; ne: "af.ne"; nf: "af.nf"; ng: "af.ng"; nh: "af.nh"; ni: "af.ni"; nj: "af.nj"; nk: "af.nk"; nl: "af.nl"; nm: "af.nm"; nn: "af.nn"; no: "af.no"; np: "af.np"; nq: "af.nq"; nr: "af.nr"; ns: "af.ns"; nt: "af.nt"; nu: "af.nu"; nv: "af.nv"; nw: "af.nw"; nx: "af.nx"; ny: "af.ny"; nz: "af.nz"; oa: "af.oa"; ob: "af.ob"; oc: "af.oc"; od: "af.od"; oe: "af.oe"; of: "af.of"; og: "af.og"; oh: "af.oh"; oi: "af.oi"; oj: "af.oj"; ok: "af.ok"; ol: "af.ol"; om: "af.om"; on: "af.on"; oo: "af.oo"; op: "af.op"; oq: "af.oq"; or: "af.or"; os: "af.os"; ot: "af.ot"; ou: "af.ou"; ov: "af.ov"; ow: "af.ow"; ox: "af.ox"; oy: "af.oy"; oz: "af.oz"; pa: "af.pa"; pb: "af.pb"; pc: "af.pc"; pd: "af.pd"; pe: "af.pe"; pf: "af.pf"; pg: "af.pg"; ph: "af.ph"; pi: "af.pi"; pj: "af.pj"; pk: "af.pk"; pl: "af.pl"; pm: "af.pm"; pn: "af.pn"; po: "af.po"; pp: "af.pp"; pq: "af.pq"; pr: "af.pr"; ps: "af.ps"; pt: "af.pt"; pu: "af.pu"; pv: "af.pv"; pw: "af.pw"; px: "af.px"; py: "af.py"; pz: "af.pz"; qa: "af.qa"; qb: "af.qb"; qc: "af.qc"; qd: "af.qd"; qe: "af.qe"; qf: "af.qf"; qg: "af.qg"; qh: "af.qh"; qi: "af.qi"; qj: "af.qj"; qk: "af.qk"; ql: "af.ql"; qm: "af.qm"; qn: "af.qn"; qo: "af.qo"; qp: "af.qp"; qq: "af.qq"; qr: "af.qr"; qs: "af.qs"; qt: "af.qt"; qu: "af.qu"; qv: "af.qv"; qw: "af.qw"; qx: "af.qx"; qy: "af.qy"; qz: "af.qz"; ra: "af.ra"; rb: "af.rb"; rc: "af.rc"; rd: "af.rd"; re: "af.re"; rf: "af.rf"; rg: "af.rg"; rh: "af.rh"; ri: "af.ri"; rj: "af.rj"; rk: "af.rk"; rl: "af.rl"; rm: "af.rm"; rn: "af.rn"; ro: "af.ro"; rp: "af.rp"; rq: "af.rq"; rr: "af.rr"; rs: "af.rs"; rt: "af.rt"; ru: "af.ru"; rv: "af.rv"; rw: "af.rw"; rx: "af.rx"; ry: "af.ry"; rz: "af.rz"; sa: "af.sa"; sb: "af.sb"; sc: "af.sc"; sd: "af.sd"; se: "af.se"; sf: "af.sf"; sg: "af.sg"; sh: "af.sh"; si: "af.si"; sj: "af.sj"; sk: "af.sk"; sl: "af.sl"; sm: "af.sm"; sn: "af.sn"; so: "af.so"; sp: "af.sp"; sq: "af.sq"; sr: "af.sr"; ss: "af.ss"; st: "af.st"; su: "af.su"; sv: "af.sv"; sw: "af.sw"; sx: "af.sx"; sy: "af.sy"; sz: "af.sz"; ta: "af.ta"; tb: "af.tb"; tc: "af.tc"; td: "af.td"; te: "af.te"; tf: "af.tf"; tg: "af.tg"; th: "af.th"; ti: "af.ti"; tj: "af.tj"; tk: "af.tk"; tl: "af.tl"; tm: "af.tm"; tn: "af.tn"; to: "af.to"; tp: "af.tp"; tq: "af.tq"; tr: "af.tr"; ts: "af.ts"; tt: "af.tt"; tu: "af.tu"; tv: "af.tv"; tw: "af.tw"; tx: "af.tx"; ty: "af.ty"; tz: "af.tz"; ua: "af.ua"; ub: "af.ub"; uc: "af.uc"; ud: "af.ud"; ue: "af.ue"; uf: "af.uf"; ug: "af.ug"; uh: "af.uh"; ui: "af.ui"; uj: "af.uj"; uk: "af.uk"; ul: "af.ul"; um: "af.um"; un: "af.un"; uo: "af.uo"; up: "af.up"; uq: "af.uq"; ur: "af.ur"; us: "af.us"; ut: "af.ut"; uu: "af.uu"; uv: "af.uv"; uw: "af.uw"; ux: "af.ux"; uy: "af.uy"; uz: "af.uz"; va: "af.va"; vb: "af.vb"; vc: "af.vc"; vd: "af.vd"; ve: "af.ve"; vf: "af.vf"; vg: "af.vg"; vh: "af.vh"; vi: "af.vi"; vj: "af.vj"; vk: "af.vk"; vl: "af.vl"; vm: "af.vm"; vn: "af.vn"; vo: "af.vo"; vp: "af.vp"; vq: "af.vq"; vr: "af.vr"; vs: "af.vs"; vt: "af.vt"; vu: "af.vu"; vv: "af.vv"; vw: "af.vw"; vx: "af.vx"; vy: "af.vy"; vz: "af.vz"; wa: "af.wa"; wb: "af.wb"; wc: "af.wc"; wd: "af.wd"; we: "af.we"; wf: "af.wf"; wg: "af.wg"; wh: "af.wh"; wi: "af.wi"; wj: "af.wj"; wk: "af.wk"; wl: "af.wl"; wm: "af.wm"; wn: "af.wn"; wo: "af.wo"; wp: "af.wp"; wq: "af.wq"; wr: "af.wr"; ws: "af.ws"; wt: "af.wt"; wu: "af.wu"; wv: "af.wv"; ww: "af.ww"; wx: "af.wx"; wy: "af.wy"; wz: "af.wz"; xa: "af.xa"; xb: "af.xb"; xc: "af.xc"; xd: "af.xd"; xe: "af.xe"; xf: "af.xf"; xg: "af.xg"; xh: "af.xh"; xi: "af.xi"; xj: "af.xj"; xk: "af.xk"; xl: "af.xl"; xm: "af.xm"; xn: "af.xn"; xo: "af.xo"; xp: "af.xp"; xq: "af.xq"; xr: "af.xr"; xs: "af.xs"; xt: "af.xt"; xu: "af.xu"; xv: "af.xv"; xw: "af.xw"; xx: "af.xx"; xy: "af.xy"; xz: "af.xz"; ya: "af.ya"; yb: "af.yb"; yc: "af.yc"; yd: "af.yd"; ye: "af.ye"; yf: "af.yf"; yg: "af.yg"; yh: "af.yh"; yi: "af.yi"; yj: "af.yj"; yk: "af.yk"; yl: "af.yl"; ym: "af.ym"; yn: "af.yn"; yo: "af.yo"; yp: "af.yp"; yq: "af.yq"; yr: "af.yr"; ys: "af.ys"; yt: "af.yt"; yu: "af.yu"; yv: "af.yv"; yw: "af.yw"; yx: "af.yx"; yy: "af.yy"; yz: "af.yz"; za: "af.za"; zb: "af.zb"; zc: "af.zc"; zd: "af.zd"; ze: "af.ze"; zf: "af.zf"; zg: "af.zg"; zh: "af.zh"; zi: "af.zi"; zj: "af.zj"; zk: "af.zk"; zl: "af.zl"; zm: "af.zm"; zn: "af.zn"; zo: "af.zo"; zp: "af.zp"; zq: "af.zq"; zr: "af.zr"; zs: "af.zs"; zt: "af.zt"; zu: "af.zu"; zv: "af.zv"; zw: "af.zw"; zx: "af.zx"; zy: "af.zy"; zz: "af.zz"; }; ag: { aa: "ag.aa"; ab: "ag.ab"; ac: "ag.ac"; ad: "ag.ad"; ae: "ag.ae"; af: "ag.af"; ag: "ag.ag"; ah: "ag.ah"; ai: "ag.ai"; aj: "ag.aj"; ak: "ag.ak"; al: "ag.al"; am: "ag.am"; an: "ag.an"; ao: "ag.ao"; ap: "ag.ap"; aq: "ag.aq"; ar: "ag.ar"; as: "ag.as"; at: "ag.at"; au: "ag.au"; av: "ag.av"; aw: "ag.aw"; ax: "ag.ax"; ay: "ag.ay"; az: "ag.az"; ba: "ag.ba"; bb: "ag.bb"; bc: "ag.bc"; bd: "ag.bd"; be: "ag.be"; bf: "ag.bf"; bg: "ag.bg"; bh: "ag.bh"; bi: "ag.bi"; bj: "ag.bj"; bk: "ag.bk"; bl: "ag.bl"; bm: "ag.bm"; bn: "ag.bn"; bo: "ag.bo"; bp: "ag.bp"; bq: "ag.bq"; br: "ag.br"; bs: "ag.bs"; bt: "ag.bt"; bu: "ag.bu"; bv: "ag.bv"; bw: "ag.bw"; bx: "ag.bx"; by: "ag.by"; bz: "ag.bz"; ca: "ag.ca"; cb: "ag.cb"; cc: "ag.cc"; cd: "ag.cd"; ce: "ag.ce"; cf: "ag.cf"; cg: "ag.cg"; ch: "ag.ch"; ci: "ag.ci"; cj: "ag.cj"; ck: "ag.ck"; cl: "ag.cl"; cm: "ag.cm"; cn: "ag.cn"; co: "ag.co"; cp: "ag.cp"; cq: "ag.cq"; cr: "ag.cr"; cs: "ag.cs"; ct: "ag.ct"; cu: "ag.cu"; cv: "ag.cv"; cw: "ag.cw"; cx: "ag.cx"; cy: "ag.cy"; cz: "ag.cz"; da: "ag.da"; db: "ag.db"; dc: "ag.dc"; dd: "ag.dd"; de: "ag.de"; df: "ag.df"; dg: "ag.dg"; dh: "ag.dh"; di: "ag.di"; dj: "ag.dj"; dk: "ag.dk"; dl: "ag.dl"; dm: "ag.dm"; dn: "ag.dn"; do: "ag.do"; dp: "ag.dp"; dq: "ag.dq"; dr: "ag.dr"; ds: "ag.ds"; dt: "ag.dt"; du: "ag.du"; dv: "ag.dv"; dw: "ag.dw"; dx: "ag.dx"; dy: "ag.dy"; dz: "ag.dz"; ea: "ag.ea"; eb: "ag.eb"; ec: "ag.ec"; ed: "ag.ed"; ee: "ag.ee"; ef: "ag.ef"; eg: "ag.eg"; eh: "ag.eh"; ei: "ag.ei"; ej: "ag.ej"; ek: "ag.ek"; el: "ag.el"; em: "ag.em"; en: "ag.en"; eo: "ag.eo"; ep: "ag.ep"; eq: "ag.eq"; er: "ag.er"; es: "ag.es"; et: "ag.et"; eu: "ag.eu"; ev: "ag.ev"; ew: "ag.ew"; ex: "ag.ex"; ey: "ag.ey"; ez: "ag.ez"; fa: "ag.fa"; fb: "ag.fb"; fc: "ag.fc"; fd: "ag.fd"; fe: "ag.fe"; ff: "ag.ff"; fg: "ag.fg"; fh: "ag.fh"; fi: "ag.fi"; fj: "ag.fj"; fk: "ag.fk"; fl: "ag.fl"; fm: "ag.fm"; fn: "ag.fn"; fo: "ag.fo"; fp: "ag.fp"; fq: "ag.fq"; fr: "ag.fr"; fs: "ag.fs"; ft: "ag.ft"; fu: "ag.fu"; fv: "ag.fv"; fw: "ag.fw"; fx: "ag.fx"; fy: "ag.fy"; fz: "ag.fz"; ga: "ag.ga"; gb: "ag.gb"; gc: "ag.gc"; gd: "ag.gd"; ge: "ag.ge"; gf: "ag.gf"; gg: "ag.gg"; gh: "ag.gh"; gi: "ag.gi"; gj: "ag.gj"; gk: "ag.gk"; gl: "ag.gl"; gm: "ag.gm"; gn: "ag.gn"; go: "ag.go"; gp: "ag.gp"; gq: "ag.gq"; gr: "ag.gr"; gs: "ag.gs"; gt: "ag.gt"; gu: "ag.gu"; gv: "ag.gv"; gw: "ag.gw"; gx: "ag.gx"; gy: "ag.gy"; gz: "ag.gz"; ha: "ag.ha"; hb: "ag.hb"; hc: "ag.hc"; hd: "ag.hd"; he: "ag.he"; hf: "ag.hf"; hg: "ag.hg"; hh: "ag.hh"; hi: "ag.hi"; hj: "ag.hj"; hk: "ag.hk"; hl: "ag.hl"; hm: "ag.hm"; hn: "ag.hn"; ho: "ag.ho"; hp: "ag.hp"; hq: "ag.hq"; hr: "ag.hr"; hs: "ag.hs"; ht: "ag.ht"; hu: "ag.hu"; hv: "ag.hv"; hw: "ag.hw"; hx: "ag.hx"; hy: "ag.hy"; hz: "ag.hz"; ia: "ag.ia"; ib: "ag.ib"; ic: "ag.ic"; id: "ag.id"; ie: "ag.ie"; if: "ag.if"; ig: "ag.ig"; ih: "ag.ih"; ii: "ag.ii"; ij: "ag.ij"; ik: "ag.ik"; il: "ag.il"; im: "ag.im"; in: "ag.in"; io: "ag.io"; ip: "ag.ip"; iq: "ag.iq"; ir: "ag.ir"; is: "ag.is"; it: "ag.it"; iu: "ag.iu"; iv: "ag.iv"; iw: "ag.iw"; ix: "ag.ix"; iy: "ag.iy"; iz: "ag.iz"; ja: "ag.ja"; jb: "ag.jb"; jc: "ag.jc"; jd: "ag.jd"; je: "ag.je"; jf: "ag.jf"; jg: "ag.jg"; jh: "ag.jh"; ji: "ag.ji"; jj: "ag.jj"; jk: "ag.jk"; jl: "ag.jl"; jm: "ag.jm"; jn: "ag.jn"; jo: "ag.jo"; jp: "ag.jp"; jq: "ag.jq"; jr: "ag.jr"; js: "ag.js"; jt: "ag.jt"; ju: "ag.ju"; jv: "ag.jv"; jw: "ag.jw"; jx: "ag.jx"; jy: "ag.jy"; jz: "ag.jz"; ka: "ag.ka"; kb: "ag.kb"; kc: "ag.kc"; kd: "ag.kd"; ke: "ag.ke"; kf: "ag.kf"; kg: "ag.kg"; kh: "ag.kh"; ki: "ag.ki"; kj: "ag.kj"; kk: "ag.kk"; kl: "ag.kl"; km: "ag.km"; kn: "ag.kn"; ko: "ag.ko"; kp: "ag.kp"; kq: "ag.kq"; kr: "ag.kr"; ks: "ag.ks"; kt: "ag.kt"; ku: "ag.ku"; kv: "ag.kv"; kw: "ag.kw"; kx: "ag.kx"; ky: "ag.ky"; kz: "ag.kz"; la: "ag.la"; lb: "ag.lb"; lc: "ag.lc"; ld: "ag.ld"; le: "ag.le"; lf: "ag.lf"; lg: "ag.lg"; lh: "ag.lh"; li: "ag.li"; lj: "ag.lj"; lk: "ag.lk"; ll: "ag.ll"; lm: "ag.lm"; ln: "ag.ln"; lo: "ag.lo"; lp: "ag.lp"; lq: "ag.lq"; lr: "ag.lr"; ls: "ag.ls"; lt: "ag.lt"; lu: "ag.lu"; lv: "ag.lv"; lw: "ag.lw"; lx: "ag.lx"; ly: "ag.ly"; lz: "ag.lz"; ma: "ag.ma"; mb: "ag.mb"; mc: "ag.mc"; md: "ag.md"; me: "ag.me"; mf: "ag.mf"; mg: "ag.mg"; mh: "ag.mh"; mi: "ag.mi"; mj: "ag.mj"; mk: "ag.mk"; ml: "ag.ml"; mm: "ag.mm"; mn: "ag.mn"; mo: "ag.mo"; mp: "ag.mp"; mq: "ag.mq"; mr: "ag.mr"; ms: "ag.ms"; mt: "ag.mt"; mu: "ag.mu"; mv: "ag.mv"; mw: "ag.mw"; mx: "ag.mx"; my: "ag.my"; mz: "ag.mz"; na: "ag.na"; nb: "ag.nb"; nc: "ag.nc"; nd: "ag.nd"; ne: "ag.ne"; nf: "ag.nf"; ng: "ag.ng"; nh: "ag.nh"; ni: "ag.ni"; nj: "ag.nj"; nk: "ag.nk"; nl: "ag.nl"; nm: "ag.nm"; nn: "ag.nn"; no: "ag.no"; np: "ag.np"; nq: "ag.nq"; nr: "ag.nr"; ns: "ag.ns"; nt: "ag.nt"; nu: "ag.nu"; nv: "ag.nv"; nw: "ag.nw"; nx: "ag.nx"; ny: "ag.ny"; nz: "ag.nz"; oa: "ag.oa"; ob: "ag.ob"; oc: "ag.oc"; od: "ag.od"; oe: "ag.oe"; of: "ag.of"; og: "ag.og"; oh: "ag.oh"; oi: "ag.oi"; oj: "ag.oj"; ok: "ag.ok"; ol: "ag.ol"; om: "ag.om"; on: "ag.on"; oo: "ag.oo"; op: "ag.op"; oq: "ag.oq"; or: "ag.or"; os: "ag.os"; ot: "ag.ot"; ou: "ag.ou"; ov: "ag.ov"; ow: "ag.ow"; ox: "ag.ox"; oy: "ag.oy"; oz: "ag.oz"; pa: "ag.pa"; pb: "ag.pb"; pc: "ag.pc"; pd: "ag.pd"; pe: "ag.pe"; pf: "ag.pf"; pg: "ag.pg"; ph: "ag.ph"; pi: "ag.pi"; pj: "ag.pj"; pk: "ag.pk"; pl: "ag.pl"; pm: "ag.pm"; pn: "ag.pn"; po: "ag.po"; pp: "ag.pp"; pq: "ag.pq"; pr: "ag.pr"; ps: "ag.ps"; pt: "ag.pt"; pu: "ag.pu"; pv: "ag.pv"; pw: "ag.pw"; px: "ag.px"; py: "ag.py"; pz: "ag.pz"; qa: "ag.qa"; qb: "ag.qb"; qc: "ag.qc"; qd: "ag.qd"; qe: "ag.qe"; qf: "ag.qf"; qg: "ag.qg"; qh: "ag.qh"; qi: "ag.qi"; qj: "ag.qj"; qk: "ag.qk"; ql: "ag.ql"; qm: "ag.qm"; qn: "ag.qn"; qo: "ag.qo"; qp: "ag.qp"; qq: "ag.qq"; qr: "ag.qr"; qs: "ag.qs"; qt: "ag.qt"; qu: "ag.qu"; qv: "ag.qv"; qw: "ag.qw"; qx: "ag.qx"; qy: "ag.qy"; qz: "ag.qz"; ra: "ag.ra"; rb: "ag.rb"; rc: "ag.rc"; rd: "ag.rd"; re: "ag.re"; rf: "ag.rf"; rg: "ag.rg"; rh: "ag.rh"; ri: "ag.ri"; rj: "ag.rj"; rk: "ag.rk"; rl: "ag.rl"; rm: "ag.rm"; rn: "ag.rn"; ro: "ag.ro"; rp: "ag.rp"; rq: "ag.rq"; rr: "ag.rr"; rs: "ag.rs"; rt: "ag.rt"; ru: "ag.ru"; rv: "ag.rv"; rw: "ag.rw"; rx: "ag.rx"; ry: "ag.ry"; rz: "ag.rz"; sa: "ag.sa"; sb: "ag.sb"; sc: "ag.sc"; sd: "ag.sd"; se: "ag.se"; sf: "ag.sf"; sg: "ag.sg"; sh: "ag.sh"; si: "ag.si"; sj: "ag.sj"; sk: "ag.sk"; sl: "ag.sl"; sm: "ag.sm"; sn: "ag.sn"; so: "ag.so"; sp: "ag.sp"; sq: "ag.sq"; sr: "ag.sr"; ss: "ag.ss"; st: "ag.st"; su: "ag.su"; sv: "ag.sv"; sw: "ag.sw"; sx: "ag.sx"; sy: "ag.sy"; sz: "ag.sz"; ta: "ag.ta"; tb: "ag.tb"; tc: "ag.tc"; td: "ag.td"; te: "ag.te"; tf: "ag.tf"; tg: "ag.tg"; th: "ag.th"; ti: "ag.ti"; tj: "ag.tj"; tk: "ag.tk"; tl: "ag.tl"; tm: "ag.tm"; tn: "ag.tn"; to: "ag.to"; tp: "ag.tp"; tq: "ag.tq"; tr: "ag.tr"; ts: "ag.ts"; tt: "ag.tt"; tu: "ag.tu"; tv: "ag.tv"; tw: "ag.tw"; tx: "ag.tx"; ty: "ag.ty"; tz: "ag.tz"; ua: "ag.ua"; ub: "ag.ub"; uc: "ag.uc"; ud: "ag.ud"; ue: "ag.ue"; uf: "ag.uf"; ug: "ag.ug"; uh: "ag.uh"; ui: "ag.ui"; uj: "ag.uj"; uk: "ag.uk"; ul: "ag.ul"; um: "ag.um"; un: "ag.un"; uo: "ag.uo"; up: "ag.up"; uq: "ag.uq"; ur: "ag.ur"; us: "ag.us"; ut: "ag.ut"; uu: "ag.uu"; uv: "ag.uv"; uw: "ag.uw"; ux: "ag.ux"; uy: "ag.uy"; uz: "ag.uz"; va: "ag.va"; vb: "ag.vb"; vc: "ag.vc"; vd: "ag.vd"; ve: "ag.ve"; vf: "ag.vf"; vg: "ag.vg"; vh: "ag.vh"; vi: "ag.vi"; vj: "ag.vj"; vk: "ag.vk"; vl: "ag.vl"; vm: "ag.vm"; vn: "ag.vn"; vo: "ag.vo"; vp: "ag.vp"; vq: "ag.vq"; vr: "ag.vr"; vs: "ag.vs"; vt: "ag.vt"; vu: "ag.vu"; vv: "ag.vv"; vw: "ag.vw"; vx: "ag.vx"; vy: "ag.vy"; vz: "ag.vz"; wa: "ag.wa"; wb: "ag.wb"; wc: "ag.wc"; wd: "ag.wd"; we: "ag.we"; wf: "ag.wf"; wg: "ag.wg"; wh: "ag.wh"; wi: "ag.wi"; wj: "ag.wj"; wk: "ag.wk"; wl: "ag.wl"; wm: "ag.wm"; wn: "ag.wn"; wo: "ag.wo"; wp: "ag.wp"; wq: "ag.wq"; wr: "ag.wr"; ws: "ag.ws"; wt: "ag.wt"; wu: "ag.wu"; wv: "ag.wv"; ww: "ag.ww"; wx: "ag.wx"; wy: "ag.wy"; wz: "ag.wz"; xa: "ag.xa"; xb: "ag.xb"; xc: "ag.xc"; xd: "ag.xd"; xe: "ag.xe"; xf: "ag.xf"; xg: "ag.xg"; xh: "ag.xh"; xi: "ag.xi"; xj: "ag.xj"; xk: "ag.xk"; xl: "ag.xl"; xm: "ag.xm"; xn: "ag.xn"; xo: "ag.xo"; xp: "ag.xp"; xq: "ag.xq"; xr: "ag.xr"; xs: "ag.xs"; xt: "ag.xt"; xu: "ag.xu"; xv: "ag.xv"; xw: "ag.xw"; xx: "ag.xx"; xy: "ag.xy"; xz: "ag.xz"; ya: "ag.ya"; yb: "ag.yb"; yc: "ag.yc"; yd: "ag.yd"; ye: "ag.ye"; yf: "ag.yf"; yg: "ag.yg"; yh: "ag.yh"; yi: "ag.yi"; yj: "ag.yj"; yk: "ag.yk"; yl: "ag.yl"; ym: "ag.ym"; yn: "ag.yn"; yo: "ag.yo"; yp: "ag.yp"; yq: "ag.yq"; yr: "ag.yr"; ys: "ag.ys"; yt: "ag.yt"; yu: "ag.yu"; yv: "ag.yv"; yw: "ag.yw"; yx: "ag.yx"; yy: "ag.yy"; yz: "ag.yz"; za: "ag.za"; zb: "ag.zb"; zc: "ag.zc"; zd: "ag.zd"; ze: "ag.ze"; zf: "ag.zf"; zg: "ag.zg"; zh: "ag.zh"; zi: "ag.zi"; zj: "ag.zj"; zk: "ag.zk"; zl: "ag.zl"; zm: "ag.zm"; zn: "ag.zn"; zo: "ag.zo"; zp: "ag.zp"; zq: "ag.zq"; zr: "ag.zr"; zs: "ag.zs"; zt: "ag.zt"; zu: "ag.zu"; zv: "ag.zv"; zw: "ag.zw"; zx: "ag.zx"; zy: "ag.zy"; zz: "ag.zz"; }; ah: { aa: "ah.aa"; ab: "ah.ab"; ac: "ah.ac"; ad: "ah.ad"; ae: "ah.ae"; af: "ah.af"; ag: "ah.ag"; ah: "ah.ah"; ai: "ah.ai"; aj: "ah.aj"; ak: "ah.ak"; al: "ah.al"; am: "ah.am"; an: "ah.an"; ao: "ah.ao"; ap: "ah.ap"; aq: "ah.aq"; ar: "ah.ar"; as: "ah.as"; at: "ah.at"; au: "ah.au"; av: "ah.av"; aw: "ah.aw"; ax: "ah.ax"; ay: "ah.ay"; az: "ah.az"; ba: "ah.ba"; bb: "ah.bb"; bc: "ah.bc"; bd: "ah.bd"; be: "ah.be"; bf: "ah.bf"; bg: "ah.bg"; bh: "ah.bh"; bi: "ah.bi"; bj: "ah.bj"; bk: "ah.bk"; bl: "ah.bl"; bm: "ah.bm"; bn: "ah.bn"; bo: "ah.bo"; bp: "ah.bp"; bq: "ah.bq"; br: "ah.br"; bs: "ah.bs"; bt: "ah.bt"; bu: "ah.bu"; bv: "ah.bv"; bw: "ah.bw"; bx: "ah.bx"; by: "ah.by"; bz: "ah.bz"; ca: "ah.ca"; cb: "ah.cb"; cc: "ah.cc"; cd: "ah.cd"; ce: "ah.ce"; cf: "ah.cf"; cg: "ah.cg"; ch: "ah.ch"; ci: "ah.ci"; cj: "ah.cj"; ck: "ah.ck"; cl: "ah.cl"; cm: "ah.cm"; cn: "ah.cn"; co: "ah.co"; cp: "ah.cp"; cq: "ah.cq"; cr: "ah.cr"; cs: "ah.cs"; ct: "ah.ct"; cu: "ah.cu"; cv: "ah.cv"; cw: "ah.cw"; cx: "ah.cx"; cy: "ah.cy"; cz: "ah.cz"; da: "ah.da"; db: "ah.db"; dc: "ah.dc"; dd: "ah.dd"; de: "ah.de"; df: "ah.df"; dg: "ah.dg"; dh: "ah.dh"; di: "ah.di"; dj: "ah.dj"; dk: "ah.dk"; dl: "ah.dl"; dm: "ah.dm"; dn: "ah.dn"; do: "ah.do"; dp: "ah.dp"; dq: "ah.dq"; dr: "ah.dr"; ds: "ah.ds"; dt: "ah.dt"; du: "ah.du"; dv: "ah.dv"; dw: "ah.dw"; dx: "ah.dx"; dy: "ah.dy"; dz: "ah.dz"; ea: "ah.ea"; eb: "ah.eb"; ec: "ah.ec"; ed: "ah.ed"; ee: "ah.ee"; ef: "ah.ef"; eg: "ah.eg"; eh: "ah.eh"; ei: "ah.ei"; ej: "ah.ej"; ek: "ah.ek"; el: "ah.el"; em: "ah.em"; en: "ah.en"; eo: "ah.eo"; ep: "ah.ep"; eq: "ah.eq"; er: "ah.er"; es: "ah.es"; et: "ah.et"; eu: "ah.eu"; ev: "ah.ev"; ew: "ah.ew"; ex: "ah.ex"; ey: "ah.ey"; ez: "ah.ez"; fa: "ah.fa"; fb: "ah.fb"; fc: "ah.fc"; fd: "ah.fd"; fe: "ah.fe"; ff: "ah.ff"; fg: "ah.fg"; fh: "ah.fh"; fi: "ah.fi"; fj: "ah.fj"; fk: "ah.fk"; fl: "ah.fl"; fm: "ah.fm"; fn: "ah.fn"; fo: "ah.fo"; fp: "ah.fp"; fq: "ah.fq"; fr: "ah.fr"; fs: "ah.fs"; ft: "ah.ft"; fu: "ah.fu"; fv: "ah.fv"; fw: "ah.fw"; fx: "ah.fx"; fy: "ah.fy"; fz: "ah.fz"; ga: "ah.ga"; gb: "ah.gb"; gc: "ah.gc"; gd: "ah.gd"; ge: "ah.ge"; gf: "ah.gf"; gg: "ah.gg"; gh: "ah.gh"; gi: "ah.gi"; gj: "ah.gj"; gk: "ah.gk"; gl: "ah.gl"; gm: "ah.gm"; gn: "ah.gn"; go: "ah.go"; gp: "ah.gp"; gq: "ah.gq"; gr: "ah.gr"; gs: "ah.gs"; gt: "ah.gt"; gu: "ah.gu"; gv: "ah.gv"; gw: "ah.gw"; gx: "ah.gx"; gy: "ah.gy"; gz: "ah.gz"; ha: "ah.ha"; hb: "ah.hb"; hc: "ah.hc"; hd: "ah.hd"; he: "ah.he"; hf: "ah.hf"; hg: "ah.hg"; hh: "ah.hh"; hi: "ah.hi"; hj: "ah.hj"; hk: "ah.hk"; hl: "ah.hl"; hm: "ah.hm"; hn: "ah.hn"; ho: "ah.ho"; hp: "ah.hp"; hq: "ah.hq"; hr: "ah.hr"; hs: "ah.hs"; ht: "ah.ht"; hu: "ah.hu"; hv: "ah.hv"; hw: "ah.hw"; hx: "ah.hx"; hy: "ah.hy"; hz: "ah.hz"; ia: "ah.ia"; ib: "ah.ib"; ic: "ah.ic"; id: "ah.id"; ie: "ah.ie"; if: "ah.if"; ig: "ah.ig"; ih: "ah.ih"; ii: "ah.ii"; ij: "ah.ij"; ik: "ah.ik"; il: "ah.il"; im: "ah.im"; in: "ah.in"; io: "ah.io"; ip: "ah.ip"; iq: "ah.iq"; ir: "ah.ir"; is: "ah.is"; it: "ah.it"; iu: "ah.iu"; iv: "ah.iv"; iw: "ah.iw"; ix: "ah.ix"; iy: "ah.iy"; iz: "ah.iz"; ja: "ah.ja"; jb: "ah.jb"; jc: "ah.jc"; jd: "ah.jd"; je: "ah.je"; jf: "ah.jf"; jg: "ah.jg"; jh: "ah.jh"; ji: "ah.ji"; jj: "ah.jj"; jk: "ah.jk"; jl: "ah.jl"; jm: "ah.jm"; jn: "ah.jn"; jo: "ah.jo"; jp: "ah.jp"; jq: "ah.jq"; jr: "ah.jr"; js: "ah.js"; jt: "ah.jt"; ju: "ah.ju"; jv: "ah.jv"; jw: "ah.jw"; jx: "ah.jx"; jy: "ah.jy"; jz: "ah.jz"; ka: "ah.ka"; kb: "ah.kb"; kc: "ah.kc"; kd: "ah.kd"; ke: "ah.ke"; kf: "ah.kf"; kg: "ah.kg"; kh: "ah.kh"; ki: "ah.ki"; kj: "ah.kj"; kk: "ah.kk"; kl: "ah.kl"; km: "ah.km"; kn: "ah.kn"; ko: "ah.ko"; kp: "ah.kp"; kq: "ah.kq"; kr: "ah.kr"; ks: "ah.ks"; kt: "ah.kt"; ku: "ah.ku"; kv: "ah.kv"; kw: "ah.kw"; kx: "ah.kx"; ky: "ah.ky"; kz: "ah.kz"; la: "ah.la"; lb: "ah.lb"; lc: "ah.lc"; ld: "ah.ld"; le: "ah.le"; lf: "ah.lf"; lg: "ah.lg"; lh: "ah.lh"; li: "ah.li"; lj: "ah.lj"; lk: "ah.lk"; ll: "ah.ll"; lm: "ah.lm"; ln: "ah.ln"; lo: "ah.lo"; lp: "ah.lp"; lq: "ah.lq"; lr: "ah.lr"; ls: "ah.ls"; lt: "ah.lt"; lu: "ah.lu"; lv: "ah.lv"; lw: "ah.lw"; lx: "ah.lx"; ly: "ah.ly"; lz: "ah.lz"; ma: "ah.ma"; mb: "ah.mb"; mc: "ah.mc"; md: "ah.md"; me: "ah.me"; mf: "ah.mf"; mg: "ah.mg"; mh: "ah.mh"; mi: "ah.mi"; mj: "ah.mj"; mk: "ah.mk"; ml: "ah.ml"; mm: "ah.mm"; mn: "ah.mn"; mo: "ah.mo"; mp: "ah.mp"; mq: "ah.mq"; mr: "ah.mr"; ms: "ah.ms"; mt: "ah.mt"; mu: "ah.mu"; mv: "ah.mv"; mw: "ah.mw"; mx: "ah.mx"; my: "ah.my"; mz: "ah.mz"; na: "ah.na"; nb: "ah.nb"; nc: "ah.nc"; nd: "ah.nd"; ne: "ah.ne"; nf: "ah.nf"; ng: "ah.ng"; nh: "ah.nh"; ni: "ah.ni"; nj: "ah.nj"; nk: "ah.nk"; nl: "ah.nl"; nm: "ah.nm"; nn: "ah.nn"; no: "ah.no"; np: "ah.np"; nq: "ah.nq"; nr: "ah.nr"; ns: "ah.ns"; nt: "ah.nt"; nu: "ah.nu"; nv: "ah.nv"; nw: "ah.nw"; nx: "ah.nx"; ny: "ah.ny"; nz: "ah.nz"; oa: "ah.oa"; ob: "ah.ob"; oc: "ah.oc"; od: "ah.od"; oe: "ah.oe"; of: "ah.of"; og: "ah.og"; oh: "ah.oh"; oi: "ah.oi"; oj: "ah.oj"; ok: "ah.ok"; ol: "ah.ol"; om: "ah.om"; on: "ah.on"; oo: "ah.oo"; op: "ah.op"; oq: "ah.oq"; or: "ah.or"; os: "ah.os"; ot: "ah.ot"; ou: "ah.ou"; ov: "ah.ov"; ow: "ah.ow"; ox: "ah.ox"; oy: "ah.oy"; oz: "ah.oz"; pa: "ah.pa"; pb: "ah.pb"; pc: "ah.pc"; pd: "ah.pd"; pe: "ah.pe"; pf: "ah.pf"; pg: "ah.pg"; ph: "ah.ph"; pi: "ah.pi"; pj: "ah.pj"; pk: "ah.pk"; pl: "ah.pl"; pm: "ah.pm"; pn: "ah.pn"; po: "ah.po"; pp: "ah.pp"; pq: "ah.pq"; pr: "ah.pr"; ps: "ah.ps"; pt: "ah.pt"; pu: "ah.pu"; pv: "ah.pv"; pw: "ah.pw"; px: "ah.px"; py: "ah.py"; pz: "ah.pz"; qa: "ah.qa"; qb: "ah.qb"; qc: "ah.qc"; qd: "ah.qd"; qe: "ah.qe"; qf: "ah.qf"; qg: "ah.qg"; qh: "ah.qh"; qi: "ah.qi"; qj: "ah.qj"; qk: "ah.qk"; ql: "ah.ql"; qm: "ah.qm"; qn: "ah.qn"; qo: "ah.qo"; qp: "ah.qp"; qq: "ah.qq"; qr: "ah.qr"; qs: "ah.qs"; qt: "ah.qt"; qu: "ah.qu"; qv: "ah.qv"; qw: "ah.qw"; qx: "ah.qx"; qy: "ah.qy"; qz: "ah.qz"; ra: "ah.ra"; rb: "ah.rb"; rc: "ah.rc"; rd: "ah.rd"; re: "ah.re"; rf: "ah.rf"; rg: "ah.rg"; rh: "ah.rh"; ri: "ah.ri"; rj: "ah.rj"; rk: "ah.rk"; rl: "ah.rl"; rm: "ah.rm"; rn: "ah.rn"; ro: "ah.ro"; rp: "ah.rp"; rq: "ah.rq"; rr: "ah.rr"; rs: "ah.rs"; rt: "ah.rt"; ru: "ah.ru"; rv: "ah.rv"; rw: "ah.rw"; rx: "ah.rx"; ry: "ah.ry"; rz: "ah.rz"; sa: "ah.sa"; sb: "ah.sb"; sc: "ah.sc"; sd: "ah.sd"; se: "ah.se"; sf: "ah.sf"; sg: "ah.sg"; sh: "ah.sh"; si: "ah.si"; sj: "ah.sj"; sk: "ah.sk"; sl: "ah.sl"; sm: "ah.sm"; sn: "ah.sn"; so: "ah.so"; sp: "ah.sp"; sq: "ah.sq"; sr: "ah.sr"; ss: "ah.ss"; st: "ah.st"; su: "ah.su"; sv: "ah.sv"; sw: "ah.sw"; sx: "ah.sx"; sy: "ah.sy"; sz: "ah.sz"; ta: "ah.ta"; tb: "ah.tb"; tc: "ah.tc"; td: "ah.td"; te: "ah.te"; tf: "ah.tf"; tg: "ah.tg"; th: "ah.th"; ti: "ah.ti"; tj: "ah.tj"; tk: "ah.tk"; tl: "ah.tl"; tm: "ah.tm"; tn: "ah.tn"; to: "ah.to"; tp: "ah.tp"; tq: "ah.tq"; tr: "ah.tr"; ts: "ah.ts"; tt: "ah.tt"; tu: "ah.tu"; tv: "ah.tv"; tw: "ah.tw"; tx: "ah.tx"; ty: "ah.ty"; tz: "ah.tz"; ua: "ah.ua"; ub: "ah.ub"; uc: "ah.uc"; ud: "ah.ud"; ue: "ah.ue"; uf: "ah.uf"; ug: "ah.ug"; uh: "ah.uh"; ui: "ah.ui"; uj: "ah.uj"; uk: "ah.uk"; ul: "ah.ul"; um: "ah.um"; un: "ah.un"; uo: "ah.uo"; up: "ah.up"; uq: "ah.uq"; ur: "ah.ur"; us: "ah.us"; ut: "ah.ut"; uu: "ah.uu"; uv: "ah.uv"; uw: "ah.uw"; ux: "ah.ux"; uy: "ah.uy"; uz: "ah.uz"; va: "ah.va"; vb: "ah.vb"; vc: "ah.vc"; vd: "ah.vd"; ve: "ah.ve"; vf: "ah.vf"; vg: "ah.vg"; vh: "ah.vh"; vi: "ah.vi"; vj: "ah.vj"; vk: "ah.vk"; vl: "ah.vl"; vm: "ah.vm"; vn: "ah.vn"; vo: "ah.vo"; vp: "ah.vp"; vq: "ah.vq"; vr: "ah.vr"; vs: "ah.vs"; vt: "ah.vt"; vu: "ah.vu"; vv: "ah.vv"; vw: "ah.vw"; vx: "ah.vx"; vy: "ah.vy"; vz: "ah.vz"; wa: "ah.wa"; wb: "ah.wb"; wc: "ah.wc"; wd: "ah.wd"; we: "ah.we"; wf: "ah.wf"; wg: "ah.wg"; wh: "ah.wh"; wi: "ah.wi"; wj: "ah.wj"; wk: "ah.wk"; wl: "ah.wl"; wm: "ah.wm"; wn: "ah.wn"; wo: "ah.wo"; wp: "ah.wp"; wq: "ah.wq"; wr: "ah.wr"; ws: "ah.ws"; wt: "ah.wt"; wu: "ah.wu"; wv: "ah.wv"; ww: "ah.ww"; wx: "ah.wx"; wy: "ah.wy"; wz: "ah.wz"; xa: "ah.xa"; xb: "ah.xb"; xc: "ah.xc"; xd: "ah.xd"; xe: "ah.xe"; xf: "ah.xf"; xg: "ah.xg"; xh: "ah.xh"; xi: "ah.xi"; xj: "ah.xj"; xk: "ah.xk"; xl: "ah.xl"; xm: "ah.xm"; xn: "ah.xn"; xo: "ah.xo"; xp: "ah.xp"; xq: "ah.xq"; xr: "ah.xr"; xs: "ah.xs"; xt: "ah.xt"; xu: "ah.xu"; xv: "ah.xv"; xw: "ah.xw"; xx: "ah.xx"; xy: "ah.xy"; xz: "ah.xz"; ya: "ah.ya"; yb: "ah.yb"; yc: "ah.yc"; yd: "ah.yd"; ye: "ah.ye"; yf: "ah.yf"; yg: "ah.yg"; yh: "ah.yh"; yi: "ah.yi"; yj: "ah.yj"; yk: "ah.yk"; yl: "ah.yl"; ym: "ah.ym"; yn: "ah.yn"; yo: "ah.yo"; yp: "ah.yp"; yq: "ah.yq"; yr: "ah.yr"; ys: "ah.ys"; yt: "ah.yt"; yu: "ah.yu"; yv: "ah.yv"; yw: "ah.yw"; yx: "ah.yx"; yy: "ah.yy"; yz: "ah.yz"; za: "ah.za"; zb: "ah.zb"; zc: "ah.zc"; zd: "ah.zd"; ze: "ah.ze"; zf: "ah.zf"; zg: "ah.zg"; zh: "ah.zh"; zi: "ah.zi"; zj: "ah.zj"; zk: "ah.zk"; zl: "ah.zl"; zm: "ah.zm"; zn: "ah.zn"; zo: "ah.zo"; zp: "ah.zp"; zq: "ah.zq"; zr: "ah.zr"; zs: "ah.zs"; zt: "ah.zt"; zu: "ah.zu"; zv: "ah.zv"; zw: "ah.zw"; zx: "ah.zx"; zy: "ah.zy"; zz: "ah.zz"; }; ai: { aa: "ai.aa"; ab: "ai.ab"; ac: "ai.ac"; ad: "ai.ad"; ae: "ai.ae"; af: "ai.af"; ag: "ai.ag"; ah: "ai.ah"; ai: "ai.ai"; aj: "ai.aj"; ak: "ai.ak"; al: "ai.al"; am: "ai.am"; an: "ai.an"; ao: "ai.ao"; ap: "ai.ap"; aq: "ai.aq"; ar: "ai.ar"; as: "ai.as"; at: "ai.at"; au: "ai.au"; av: "ai.av"; aw: "ai.aw"; ax: "ai.ax"; ay: "ai.ay"; az: "ai.az"; ba: "ai.ba"; bb: "ai.bb"; bc: "ai.bc"; bd: "ai.bd"; be: "ai.be"; bf: "ai.bf"; bg: "ai.bg"; bh: "ai.bh"; bi: "ai.bi"; bj: "ai.bj"; bk: "ai.bk"; bl: "ai.bl"; bm: "ai.bm"; bn: "ai.bn"; bo: "ai.bo"; bp: "ai.bp"; bq: "ai.bq"; br: "ai.br"; bs: "ai.bs"; bt: "ai.bt"; bu: "ai.bu"; bv: "ai.bv"; bw: "ai.bw"; bx: "ai.bx"; by: "ai.by"; bz: "ai.bz"; ca: "ai.ca"; cb: "ai.cb"; cc: "ai.cc"; cd: "ai.cd"; ce: "ai.ce"; cf: "ai.cf"; cg: "ai.cg"; ch: "ai.ch"; ci: "ai.ci"; cj: "ai.cj"; ck: "ai.ck"; cl: "ai.cl"; cm: "ai.cm"; cn: "ai.cn"; co: "ai.co"; cp: "ai.cp"; cq: "ai.cq"; cr: "ai.cr"; cs: "ai.cs"; ct: "ai.ct"; cu: "ai.cu"; cv: "ai.cv"; cw: "ai.cw"; cx: "ai.cx"; cy: "ai.cy"; cz: "ai.cz"; da: "ai.da"; db: "ai.db"; dc: "ai.dc"; dd: "ai.dd"; de: "ai.de"; df: "ai.df"; dg: "ai.dg"; dh: "ai.dh"; di: "ai.di"; dj: "ai.dj"; dk: "ai.dk"; dl: "ai.dl"; dm: "ai.dm"; dn: "ai.dn"; do: "ai.do"; dp: "ai.dp"; dq: "ai.dq"; dr: "ai.dr"; ds: "ai.ds"; dt: "ai.dt"; du: "ai.du"; dv: "ai.dv"; dw: "ai.dw"; dx: "ai.dx"; dy: "ai.dy"; dz: "ai.dz"; ea: "ai.ea"; eb: "ai.eb"; ec: "ai.ec"; ed: "ai.ed"; ee: "ai.ee"; ef: "ai.ef"; eg: "ai.eg"; eh: "ai.eh"; ei: "ai.ei"; ej: "ai.ej"; ek: "ai.ek"; el: "ai.el"; em: "ai.em"; en: "ai.en"; eo: "ai.eo"; ep: "ai.ep"; eq: "ai.eq"; er: "ai.er"; es: "ai.es"; et: "ai.et"; eu: "ai.eu"; ev: "ai.ev"; ew: "ai.ew"; ex: "ai.ex"; ey: "ai.ey"; ez: "ai.ez"; fa: "ai.fa"; fb: "ai.fb"; fc: "ai.fc"; fd: "ai.fd"; fe: "ai.fe"; ff: "ai.ff"; fg: "ai.fg"; fh: "ai.fh"; fi: "ai.fi"; fj: "ai.fj"; fk: "ai.fk"; fl: "ai.fl"; fm: "ai.fm"; fn: "ai.fn"; fo: "ai.fo"; fp: "ai.fp"; fq: "ai.fq"; fr: "ai.fr"; fs: "ai.fs"; ft: "ai.ft"; fu: "ai.fu"; fv: "ai.fv"; fw: "ai.fw"; fx: "ai.fx"; fy: "ai.fy"; fz: "ai.fz"; ga: "ai.ga"; gb: "ai.gb"; gc: "ai.gc"; gd: "ai.gd"; ge: "ai.ge"; gf: "ai.gf"; gg: "ai.gg"; gh: "ai.gh"; gi: "ai.gi"; gj: "ai.gj"; gk: "ai.gk"; gl: "ai.gl"; gm: "ai.gm"; gn: "ai.gn"; go: "ai.go"; gp: "ai.gp"; gq: "ai.gq"; gr: "ai.gr"; gs: "ai.gs"; gt: "ai.gt"; gu: "ai.gu"; gv: "ai.gv"; gw: "ai.gw"; gx: "ai.gx"; gy: "ai.gy"; gz: "ai.gz"; ha: "ai.ha"; hb: "ai.hb"; hc: "ai.hc"; hd: "ai.hd"; he: "ai.he"; hf: "ai.hf"; hg: "ai.hg"; hh: "ai.hh"; hi: "ai.hi"; hj: "ai.hj"; hk: "ai.hk"; hl: "ai.hl"; hm: "ai.hm"; hn: "ai.hn"; ho: "ai.ho"; hp: "ai.hp"; hq: "ai.hq"; hr: "ai.hr"; hs: "ai.hs"; ht: "ai.ht"; hu: "ai.hu"; hv: "ai.hv"; hw: "ai.hw"; hx: "ai.hx"; hy: "ai.hy"; hz: "ai.hz"; ia: "ai.ia"; ib: "ai.ib"; ic: "ai.ic"; id: "ai.id"; ie: "ai.ie"; if: "ai.if"; ig: "ai.ig"; ih: "ai.ih"; ii: "ai.ii"; ij: "ai.ij"; ik: "ai.ik"; il: "ai.il"; im: "ai.im"; in: "ai.in"; io: "ai.io"; ip: "ai.ip"; iq: "ai.iq"; ir: "ai.ir"; is: "ai.is"; it: "ai.it"; iu: "ai.iu"; iv: "ai.iv"; iw: "ai.iw"; ix: "ai.ix"; iy: "ai.iy"; iz: "ai.iz"; ja: "ai.ja"; jb: "ai.jb"; jc: "ai.jc"; jd: "ai.jd"; je: "ai.je"; jf: "ai.jf"; jg: "ai.jg"; jh: "ai.jh"; ji: "ai.ji"; jj: "ai.jj"; jk: "ai.jk"; jl: "ai.jl"; jm: "ai.jm"; jn: "ai.jn"; jo: "ai.jo"; jp: "ai.jp"; jq: "ai.jq"; jr: "ai.jr"; js: "ai.js"; jt: "ai.jt"; ju: "ai.ju"; jv: "ai.jv"; jw: "ai.jw"; jx: "ai.jx"; jy: "ai.jy"; jz: "ai.jz"; ka: "ai.ka"; kb: "ai.kb"; kc: "ai.kc"; kd: "ai.kd"; ke: "ai.ke"; kf: "ai.kf"; kg: "ai.kg"; kh: "ai.kh"; ki: "ai.ki"; kj: "ai.kj"; kk: "ai.kk"; kl: "ai.kl"; km: "ai.km"; kn: "ai.kn"; ko: "ai.ko"; kp: "ai.kp"; kq: "ai.kq"; kr: "ai.kr"; ks: "ai.ks"; kt: "ai.kt"; ku: "ai.ku"; kv: "ai.kv"; kw: "ai.kw"; kx: "ai.kx"; ky: "ai.ky"; kz: "ai.kz"; la: "ai.la"; lb: "ai.lb"; lc: "ai.lc"; ld: "ai.ld"; le: "ai.le"; lf: "ai.lf"; lg: "ai.lg"; lh: "ai.lh"; li: "ai.li"; lj: "ai.lj"; lk: "ai.lk"; ll: "ai.ll"; lm: "ai.lm"; ln: "ai.ln"; lo: "ai.lo"; lp: "ai.lp"; lq: "ai.lq"; lr: "ai.lr"; ls: "ai.ls"; lt: "ai.lt"; lu: "ai.lu"; lv: "ai.lv"; lw: "ai.lw"; lx: "ai.lx"; ly: "ai.ly"; lz: "ai.lz"; ma: "ai.ma"; mb: "ai.mb"; mc: "ai.mc"; md: "ai.md"; me: "ai.me"; mf: "ai.mf"; mg: "ai.mg"; mh: "ai.mh"; mi: "ai.mi"; mj: "ai.mj"; mk: "ai.mk"; ml: "ai.ml"; mm: "ai.mm"; mn: "ai.mn"; mo: "ai.mo"; mp: "ai.mp"; mq: "ai.mq"; mr: "ai.mr"; ms: "ai.ms"; mt: "ai.mt"; mu: "ai.mu"; mv: "ai.mv"; mw: "ai.mw"; mx: "ai.mx"; my: "ai.my"; mz: "ai.mz"; na: "ai.na"; nb: "ai.nb"; nc: "ai.nc"; nd: "ai.nd"; ne: "ai.ne"; nf: "ai.nf"; ng: "ai.ng"; nh: "ai.nh"; ni: "ai.ni"; nj: "ai.nj"; nk: "ai.nk"; nl: "ai.nl"; nm: "ai.nm"; nn: "ai.nn"; no: "ai.no"; np: "ai.np"; nq: "ai.nq"; nr: "ai.nr"; ns: "ai.ns"; nt: "ai.nt"; nu: "ai.nu"; nv: "ai.nv"; nw: "ai.nw"; nx: "ai.nx"; ny: "ai.ny"; nz: "ai.nz"; oa: "ai.oa"; ob: "ai.ob"; oc: "ai.oc"; od: "ai.od"; oe: "ai.oe"; of: "ai.of"; og: "ai.og"; oh: "ai.oh"; oi: "ai.oi"; oj: "ai.oj"; ok: "ai.ok"; ol: "ai.ol"; om: "ai.om"; on: "ai.on"; oo: "ai.oo"; op: "ai.op"; oq: "ai.oq"; or: "ai.or"; os: "ai.os"; ot: "ai.ot"; ou: "ai.ou"; ov: "ai.ov"; ow: "ai.ow"; ox: "ai.ox"; oy: "ai.oy"; oz: "ai.oz"; pa: "ai.pa"; pb: "ai.pb"; pc: "ai.pc"; pd: "ai.pd"; pe: "ai.pe"; pf: "ai.pf"; pg: "ai.pg"; ph: "ai.ph"; pi: "ai.pi"; pj: "ai.pj"; pk: "ai.pk"; pl: "ai.pl"; pm: "ai.pm"; pn: "ai.pn"; po: "ai.po"; pp: "ai.pp"; pq: "ai.pq"; pr: "ai.pr"; ps: "ai.ps"; pt: "ai.pt"; pu: "ai.pu"; pv: "ai.pv"; pw: "ai.pw"; px: "ai.px"; py: "ai.py"; pz: "ai.pz"; qa: "ai.qa"; qb: "ai.qb"; qc: "ai.qc"; qd: "ai.qd"; qe: "ai.qe"; qf: "ai.qf"; qg: "ai.qg"; qh: "ai.qh"; qi: "ai.qi"; qj: "ai.qj"; qk: "ai.qk"; ql: "ai.ql"; qm: "ai.qm"; qn: "ai.qn"; qo: "ai.qo"; qp: "ai.qp"; qq: "ai.qq"; qr: "ai.qr"; qs: "ai.qs"; qt: "ai.qt"; qu: "ai.qu"; qv: "ai.qv"; qw: "ai.qw"; qx: "ai.qx"; qy: "ai.qy"; qz: "ai.qz"; ra: "ai.ra"; rb: "ai.rb"; rc: "ai.rc"; rd: "ai.rd"; re: "ai.re"; rf: "ai.rf"; rg: "ai.rg"; rh: "ai.rh"; ri: "ai.ri"; rj: "ai.rj"; rk: "ai.rk"; rl: "ai.rl"; rm: "ai.rm"; rn: "ai.rn"; ro: "ai.ro"; rp: "ai.rp"; rq: "ai.rq"; rr: "ai.rr"; rs: "ai.rs"; rt: "ai.rt"; ru: "ai.ru"; rv: "ai.rv"; rw: "ai.rw"; rx: "ai.rx"; ry: "ai.ry"; rz: "ai.rz"; sa: "ai.sa"; sb: "ai.sb"; sc: "ai.sc"; sd: "ai.sd"; se: "ai.se"; sf: "ai.sf"; sg: "ai.sg"; sh: "ai.sh"; si: "ai.si"; sj: "ai.sj"; sk: "ai.sk"; sl: "ai.sl"; sm: "ai.sm"; sn: "ai.sn"; so: "ai.so"; sp: "ai.sp"; sq: "ai.sq"; sr: "ai.sr"; ss: "ai.ss"; st: "ai.st"; su: "ai.su"; sv: "ai.sv"; sw: "ai.sw"; sx: "ai.sx"; sy: "ai.sy"; sz: "ai.sz"; ta: "ai.ta"; tb: "ai.tb"; tc: "ai.tc"; td: "ai.td"; te: "ai.te"; tf: "ai.tf"; tg: "ai.tg"; th: "ai.th"; ti: "ai.ti"; tj: "ai.tj"; tk: "ai.tk"; tl: "ai.tl"; tm: "ai.tm"; tn: "ai.tn"; to: "ai.to"; tp: "ai.tp"; tq: "ai.tq"; tr: "ai.tr"; ts: "ai.ts"; tt: "ai.tt"; tu: "ai.tu"; tv: "ai.tv"; tw: "ai.tw"; tx: "ai.tx"; ty: "ai.ty"; tz: "ai.tz"; ua: "ai.ua"; ub: "ai.ub"; uc: "ai.uc"; ud: "ai.ud"; ue: "ai.ue"; uf: "ai.uf"; ug: "ai.ug"; uh: "ai.uh"; ui: "ai.ui"; uj: "ai.uj"; uk: "ai.uk"; ul: "ai.ul"; um: "ai.um"; un: "ai.un"; uo: "ai.uo"; up: "ai.up"; uq: "ai.uq"; ur: "ai.ur"; us: "ai.us"; ut: "ai.ut"; uu: "ai.uu"; uv: "ai.uv"; uw: "ai.uw"; ux: "ai.ux"; uy: "ai.uy"; uz: "ai.uz"; va: "ai.va"; vb: "ai.vb"; vc: "ai.vc"; vd: "ai.vd"; ve: "ai.ve"; vf: "ai.vf"; vg: "ai.vg"; vh: "ai.vh"; vi: "ai.vi"; vj: "ai.vj"; vk: "ai.vk"; vl: "ai.vl"; vm: "ai.vm"; vn: "ai.vn"; vo: "ai.vo"; vp: "ai.vp"; vq: "ai.vq"; vr: "ai.vr"; vs: "ai.vs"; vt: "ai.vt"; vu: "ai.vu"; vv: "ai.vv"; vw: "ai.vw"; vx: "ai.vx"; vy: "ai.vy"; vz: "ai.vz"; wa: "ai.wa"; wb: "ai.wb"; wc: "ai.wc"; wd: "ai.wd"; we: "ai.we"; wf: "ai.wf"; wg: "ai.wg"; wh: "ai.wh"; wi: "ai.wi"; wj: "ai.wj"; wk: "ai.wk"; wl: "ai.wl"; wm: "ai.wm"; wn: "ai.wn"; wo: "ai.wo"; wp: "ai.wp"; wq: "ai.wq"; wr: "ai.wr"; ws: "ai.ws"; wt: "ai.wt"; wu: "ai.wu"; wv: "ai.wv"; ww: "ai.ww"; wx: "ai.wx"; wy: "ai.wy"; wz: "ai.wz"; xa: "ai.xa"; xb: "ai.xb"; xc: "ai.xc"; xd: "ai.xd"; xe: "ai.xe"; xf: "ai.xf"; xg: "ai.xg"; xh: "ai.xh"; xi: "ai.xi"; xj: "ai.xj"; xk: "ai.xk"; xl: "ai.xl"; xm: "ai.xm"; xn: "ai.xn"; xo: "ai.xo"; xp: "ai.xp"; xq: "ai.xq"; xr: "ai.xr"; xs: "ai.xs"; xt: "ai.xt"; xu: "ai.xu"; xv: "ai.xv"; xw: "ai.xw"; xx: "ai.xx"; xy: "ai.xy"; xz: "ai.xz"; ya: "ai.ya"; yb: "ai.yb"; yc: "ai.yc"; yd: "ai.yd"; ye: "ai.ye"; yf: "ai.yf"; yg: "ai.yg"; yh: "ai.yh"; yi: "ai.yi"; yj: "ai.yj"; yk: "ai.yk"; yl: "ai.yl"; ym: "ai.ym"; yn: "ai.yn"; yo: "ai.yo"; yp: "ai.yp"; yq: "ai.yq"; yr: "ai.yr"; ys: "ai.ys"; yt: "ai.yt"; yu: "ai.yu"; yv: "ai.yv"; yw: "ai.yw"; yx: "ai.yx"; yy: "ai.yy"; yz: "ai.yz"; za: "ai.za"; zb: "ai.zb"; zc: "ai.zc"; zd: "ai.zd"; ze: "ai.ze"; zf: "ai.zf"; zg: "ai.zg"; zh: "ai.zh"; zi: "ai.zi"; zj: "ai.zj"; zk: "ai.zk"; zl: "ai.zl"; zm: "ai.zm"; zn: "ai.zn"; zo: "ai.zo"; zp: "ai.zp"; zq: "ai.zq"; zr: "ai.zr"; zs: "ai.zs"; zt: "ai.zt"; zu: "ai.zu"; zv: "ai.zv"; zw: "ai.zw"; zx: "ai.zx"; zy: "ai.zy"; zz: "ai.zz"; }; aj: { aa: "aj.aa"; ab: "aj.ab"; ac: "aj.ac"; ad: "aj.ad"; ae: "aj.ae"; af: "aj.af"; ag: "aj.ag"; ah: "aj.ah"; ai: "aj.ai"; aj: "aj.aj"; ak: "aj.ak"; al: "aj.al"; am: "aj.am"; an: "aj.an"; ao: "aj.ao"; ap: "aj.ap"; aq: "aj.aq"; ar: "aj.ar"; as: "aj.as"; at: "aj.at"; au: "aj.au"; av: "aj.av"; aw: "aj.aw"; ax: "aj.ax"; ay: "aj.ay"; az: "aj.az"; ba: "aj.ba"; bb: "aj.bb"; bc: "aj.bc"; bd: "aj.bd"; be: "aj.be"; bf: "aj.bf"; bg: "aj.bg"; bh: "aj.bh"; bi: "aj.bi"; bj: "aj.bj"; bk: "aj.bk"; bl: "aj.bl"; bm: "aj.bm"; bn: "aj.bn"; bo: "aj.bo"; bp: "aj.bp"; bq: "aj.bq"; br: "aj.br"; bs: "aj.bs"; bt: "aj.bt"; bu: "aj.bu"; bv: "aj.bv"; bw: "aj.bw"; bx: "aj.bx"; by: "aj.by"; bz: "aj.bz"; ca: "aj.ca"; cb: "aj.cb"; cc: "aj.cc"; cd: "aj.cd"; ce: "aj.ce"; cf: "aj.cf"; cg: "aj.cg"; ch: "aj.ch"; ci: "aj.ci"; cj: "aj.cj"; ck: "aj.ck"; cl: "aj.cl"; cm: "aj.cm"; cn: "aj.cn"; co: "aj.co"; cp: "aj.cp"; cq: "aj.cq"; cr: "aj.cr"; cs: "aj.cs"; ct: "aj.ct"; cu: "aj.cu"; cv: "aj.cv"; cw: "aj.cw"; cx: "aj.cx"; cy: "aj.cy"; cz: "aj.cz"; da: "aj.da"; db: "aj.db"; dc: "aj.dc"; dd: "aj.dd"; de: "aj.de"; df: "aj.df"; dg: "aj.dg"; dh: "aj.dh"; di: "aj.di"; dj: "aj.dj"; dk: "aj.dk"; dl: "aj.dl"; dm: "aj.dm"; dn: "aj.dn"; do: "aj.do"; dp: "aj.dp"; dq: "aj.dq"; dr: "aj.dr"; ds: "aj.ds"; dt: "aj.dt"; du: "aj.du"; dv: "aj.dv"; dw: "aj.dw"; dx: "aj.dx"; dy: "aj.dy"; dz: "aj.dz"; ea: "aj.ea"; eb: "aj.eb"; ec: "aj.ec"; ed: "aj.ed"; ee: "aj.ee"; ef: "aj.ef"; eg: "aj.eg"; eh: "aj.eh"; ei: "aj.ei"; ej: "aj.ej"; ek: "aj.ek"; el: "aj.el"; em: "aj.em"; en: "aj.en"; eo: "aj.eo"; ep: "aj.ep"; eq: "aj.eq"; er: "aj.er"; es: "aj.es"; et: "aj.et"; eu: "aj.eu"; ev: "aj.ev"; ew: "aj.ew"; ex: "aj.ex"; ey: "aj.ey"; ez: "aj.ez"; fa: "aj.fa"; fb: "aj.fb"; fc: "aj.fc"; fd: "aj.fd"; fe: "aj.fe"; ff: "aj.ff"; fg: "aj.fg"; fh: "aj.fh"; fi: "aj.fi"; fj: "aj.fj"; fk: "aj.fk"; fl: "aj.fl"; fm: "aj.fm"; fn: "aj.fn"; fo: "aj.fo"; fp: "aj.fp"; fq: "aj.fq"; fr: "aj.fr"; fs: "aj.fs"; ft: "aj.ft"; fu: "aj.fu"; fv: "aj.fv"; fw: "aj.fw"; fx: "aj.fx"; fy: "aj.fy"; fz: "aj.fz"; ga: "aj.ga"; gb: "aj.gb"; gc: "aj.gc"; gd: "aj.gd"; ge: "aj.ge"; gf: "aj.gf"; gg: "aj.gg"; gh: "aj.gh"; gi: "aj.gi"; gj: "aj.gj"; gk: "aj.gk"; gl: "aj.gl"; gm: "aj.gm"; gn: "aj.gn"; go: "aj.go"; gp: "aj.gp"; gq: "aj.gq"; gr: "aj.gr"; gs: "aj.gs"; gt: "aj.gt"; gu: "aj.gu"; gv: "aj.gv"; gw: "aj.gw"; gx: "aj.gx"; gy: "aj.gy"; gz: "aj.gz"; ha: "aj.ha"; hb: "aj.hb"; hc: "aj.hc"; hd: "aj.hd"; he: "aj.he"; hf: "aj.hf"; hg: "aj.hg"; hh: "aj.hh"; hi: "aj.hi"; hj: "aj.hj"; hk: "aj.hk"; hl: "aj.hl"; hm: "aj.hm"; hn: "aj.hn"; ho: "aj.ho"; hp: "aj.hp"; hq: "aj.hq"; hr: "aj.hr"; hs: "aj.hs"; ht: "aj.ht"; hu: "aj.hu"; hv: "aj.hv"; hw: "aj.hw"; hx: "aj.hx"; hy: "aj.hy"; hz: "aj.hz"; ia: "aj.ia"; ib: "aj.ib"; ic: "aj.ic"; id: "aj.id"; ie: "aj.ie"; if: "aj.if"; ig: "aj.ig"; ih: "aj.ih"; ii: "aj.ii"; ij: "aj.ij"; ik: "aj.ik"; il: "aj.il"; im: "aj.im"; in: "aj.in"; io: "aj.io"; ip: "aj.ip"; iq: "aj.iq"; ir: "aj.ir"; is: "aj.is"; it: "aj.it"; iu: "aj.iu"; iv: "aj.iv"; iw: "aj.iw"; ix: "aj.ix"; iy: "aj.iy"; iz: "aj.iz"; ja: "aj.ja"; jb: "aj.jb"; jc: "aj.jc"; jd: "aj.jd"; je: "aj.je"; jf: "aj.jf"; jg: "aj.jg"; jh: "aj.jh"; ji: "aj.ji"; jj: "aj.jj"; jk: "aj.jk"; jl: "aj.jl"; jm: "aj.jm"; jn: "aj.jn"; jo: "aj.jo"; jp: "aj.jp"; jq: "aj.jq"; jr: "aj.jr"; js: "aj.js"; jt: "aj.jt"; ju: "aj.ju"; jv: "aj.jv"; jw: "aj.jw"; jx: "aj.jx"; jy: "aj.jy"; jz: "aj.jz"; ka: "aj.ka"; kb: "aj.kb"; kc: "aj.kc"; kd: "aj.kd"; ke: "aj.ke"; kf: "aj.kf"; kg: "aj.kg"; kh: "aj.kh"; ki: "aj.ki"; kj: "aj.kj"; kk: "aj.kk"; kl: "aj.kl"; km: "aj.km"; kn: "aj.kn"; ko: "aj.ko"; kp: "aj.kp"; kq: "aj.kq"; kr: "aj.kr"; ks: "aj.ks"; kt: "aj.kt"; ku: "aj.ku"; kv: "aj.kv"; kw: "aj.kw"; kx: "aj.kx"; ky: "aj.ky"; kz: "aj.kz"; la: "aj.la"; lb: "aj.lb"; lc: "aj.lc"; ld: "aj.ld"; le: "aj.le"; lf: "aj.lf"; lg: "aj.lg"; lh: "aj.lh"; li: "aj.li"; lj: "aj.lj"; lk: "aj.lk"; ll: "aj.ll"; lm: "aj.lm"; ln: "aj.ln"; lo: "aj.lo"; lp: "aj.lp"; lq: "aj.lq"; lr: "aj.lr"; ls: "aj.ls"; lt: "aj.lt"; lu: "aj.lu"; lv: "aj.lv"; lw: "aj.lw"; lx: "aj.lx"; ly: "aj.ly"; lz: "aj.lz"; ma: "aj.ma"; mb: "aj.mb"; mc: "aj.mc"; md: "aj.md"; me: "aj.me"; mf: "aj.mf"; mg: "aj.mg"; mh: "aj.mh"; mi: "aj.mi"; mj: "aj.mj"; mk: "aj.mk"; ml: "aj.ml"; mm: "aj.mm"; mn: "aj.mn"; mo: "aj.mo"; mp: "aj.mp"; mq: "aj.mq"; mr: "aj.mr"; ms: "aj.ms"; mt: "aj.mt"; mu: "aj.mu"; mv: "aj.mv"; mw: "aj.mw"; mx: "aj.mx"; my: "aj.my"; mz: "aj.mz"; na: "aj.na"; nb: "aj.nb"; nc: "aj.nc"; nd: "aj.nd"; ne: "aj.ne"; nf: "aj.nf"; ng: "aj.ng"; nh: "aj.nh"; ni: "aj.ni"; nj: "aj.nj"; nk: "aj.nk"; nl: "aj.nl"; nm: "aj.nm"; nn: "aj.nn"; no: "aj.no"; np: "aj.np"; nq: "aj.nq"; nr: "aj.nr"; ns: "aj.ns"; nt: "aj.nt"; nu: "aj.nu"; nv: "aj.nv"; nw: "aj.nw"; nx: "aj.nx"; ny: "aj.ny"; nz: "aj.nz"; oa: "aj.oa"; ob: "aj.ob"; oc: "aj.oc"; od: "aj.od"; oe: "aj.oe"; of: "aj.of"; og: "aj.og"; oh: "aj.oh"; oi: "aj.oi"; oj: "aj.oj"; ok: "aj.ok"; ol: "aj.ol"; om: "aj.om"; on: "aj.on"; oo: "aj.oo"; op: "aj.op"; oq: "aj.oq"; or: "aj.or"; os: "aj.os"; ot: "aj.ot"; ou: "aj.ou"; ov: "aj.ov"; ow: "aj.ow"; ox: "aj.ox"; oy: "aj.oy"; oz: "aj.oz"; pa: "aj.pa"; pb: "aj.pb"; pc: "aj.pc"; pd: "aj.pd"; pe: "aj.pe"; pf: "aj.pf"; pg: "aj.pg"; ph: "aj.ph"; pi: "aj.pi"; pj: "aj.pj"; pk: "aj.pk"; pl: "aj.pl"; pm: "aj.pm"; pn: "aj.pn"; po: "aj.po"; pp: "aj.pp"; pq: "aj.pq"; pr: "aj.pr"; ps: "aj.ps"; pt: "aj.pt"; pu: "aj.pu"; pv: "aj.pv"; pw: "aj.pw"; px: "aj.px"; py: "aj.py"; pz: "aj.pz"; qa: "aj.qa"; qb: "aj.qb"; qc: "aj.qc"; qd: "aj.qd"; qe: "aj.qe"; qf: "aj.qf"; qg: "aj.qg"; qh: "aj.qh"; qi: "aj.qi"; qj: "aj.qj"; qk: "aj.qk"; ql: "aj.ql"; qm: "aj.qm"; qn: "aj.qn"; qo: "aj.qo"; qp: "aj.qp"; qq: "aj.qq"; qr: "aj.qr"; qs: "aj.qs"; qt: "aj.qt"; qu: "aj.qu"; qv: "aj.qv"; qw: "aj.qw"; qx: "aj.qx"; qy: "aj.qy"; qz: "aj.qz"; ra: "aj.ra"; rb: "aj.rb"; rc: "aj.rc"; rd: "aj.rd"; re: "aj.re"; rf: "aj.rf"; rg: "aj.rg"; rh: "aj.rh"; ri: "aj.ri"; rj: "aj.rj"; rk: "aj.rk"; rl: "aj.rl"; rm: "aj.rm"; rn: "aj.rn"; ro: "aj.ro"; rp: "aj.rp"; rq: "aj.rq"; rr: "aj.rr"; rs: "aj.rs"; rt: "aj.rt"; ru: "aj.ru"; rv: "aj.rv"; rw: "aj.rw"; rx: "aj.rx"; ry: "aj.ry"; rz: "aj.rz"; sa: "aj.sa"; sb: "aj.sb"; sc: "aj.sc"; sd: "aj.sd"; se: "aj.se"; sf: "aj.sf"; sg: "aj.sg"; sh: "aj.sh"; si: "aj.si"; sj: "aj.sj"; sk: "aj.sk"; sl: "aj.sl"; sm: "aj.sm"; sn: "aj.sn"; so: "aj.so"; sp: "aj.sp"; sq: "aj.sq"; sr: "aj.sr"; ss: "aj.ss"; st: "aj.st"; su: "aj.su"; sv: "aj.sv"; sw: "aj.sw"; sx: "aj.sx"; sy: "aj.sy"; sz: "aj.sz"; ta: "aj.ta"; tb: "aj.tb"; tc: "aj.tc"; td: "aj.td"; te: "aj.te"; tf: "aj.tf"; tg: "aj.tg"; th: "aj.th"; ti: "aj.ti"; tj: "aj.tj"; tk: "aj.tk"; tl: "aj.tl"; tm: "aj.tm"; tn: "aj.tn"; to: "aj.to"; tp: "aj.tp"; tq: "aj.tq"; tr: "aj.tr"; ts: "aj.ts"; tt: "aj.tt"; tu: "aj.tu"; tv: "aj.tv"; tw: "aj.tw"; tx: "aj.tx"; ty: "aj.ty"; tz: "aj.tz"; ua: "aj.ua"; ub: "aj.ub"; uc: "aj.uc"; ud: "aj.ud"; ue: "aj.ue"; uf: "aj.uf"; ug: "aj.ug"; uh: "aj.uh"; ui: "aj.ui"; uj: "aj.uj"; uk: "aj.uk"; ul: "aj.ul"; um: "aj.um"; un: "aj.un"; uo: "aj.uo"; up: "aj.up"; uq: "aj.uq"; ur: "aj.ur"; us: "aj.us"; ut: "aj.ut"; uu: "aj.uu"; uv: "aj.uv"; uw: "aj.uw"; ux: "aj.ux"; uy: "aj.uy"; uz: "aj.uz"; va: "aj.va"; vb: "aj.vb"; vc: "aj.vc"; vd: "aj.vd"; ve: "aj.ve"; vf: "aj.vf"; vg: "aj.vg"; vh: "aj.vh"; vi: "aj.vi"; vj: "aj.vj"; vk: "aj.vk"; vl: "aj.vl"; vm: "aj.vm"; vn: "aj.vn"; vo: "aj.vo"; vp: "aj.vp"; vq: "aj.vq"; vr: "aj.vr"; vs: "aj.vs"; vt: "aj.vt"; vu: "aj.vu"; vv: "aj.vv"; vw: "aj.vw"; vx: "aj.vx"; vy: "aj.vy"; vz: "aj.vz"; wa: "aj.wa"; wb: "aj.wb"; wc: "aj.wc"; wd: "aj.wd"; we: "aj.we"; wf: "aj.wf"; wg: "aj.wg"; wh: "aj.wh"; wi: "aj.wi"; wj: "aj.wj"; wk: "aj.wk"; wl: "aj.wl"; wm: "aj.wm"; wn: "aj.wn"; wo: "aj.wo"; wp: "aj.wp"; wq: "aj.wq"; wr: "aj.wr"; ws: "aj.ws"; wt: "aj.wt"; wu: "aj.wu"; wv: "aj.wv"; ww: "aj.ww"; wx: "aj.wx"; wy: "aj.wy"; wz: "aj.wz"; xa: "aj.xa"; xb: "aj.xb"; xc: "aj.xc"; xd: "aj.xd"; xe: "aj.xe"; xf: "aj.xf"; xg: "aj.xg"; xh: "aj.xh"; xi: "aj.xi"; xj: "aj.xj"; xk: "aj.xk"; xl: "aj.xl"; xm: "aj.xm"; xn: "aj.xn"; xo: "aj.xo"; xp: "aj.xp"; xq: "aj.xq"; xr: "aj.xr"; xs: "aj.xs"; xt: "aj.xt"; xu: "aj.xu"; xv: "aj.xv"; xw: "aj.xw"; xx: "aj.xx"; xy: "aj.xy"; xz: "aj.xz"; ya: "aj.ya"; yb: "aj.yb"; yc: "aj.yc"; yd: "aj.yd"; ye: "aj.ye"; yf: "aj.yf"; yg: "aj.yg"; yh: "aj.yh"; yi: "aj.yi"; yj: "aj.yj"; yk: "aj.yk"; yl: "aj.yl"; ym: "aj.ym"; yn: "aj.yn"; yo: "aj.yo"; yp: "aj.yp"; yq: "aj.yq"; yr: "aj.yr"; ys: "aj.ys"; yt: "aj.yt"; yu: "aj.yu"; yv: "aj.yv"; yw: "aj.yw"; yx: "aj.yx"; yy: "aj.yy"; yz: "aj.yz"; za: "aj.za"; zb: "aj.zb"; zc: "aj.zc"; zd: "aj.zd"; ze: "aj.ze"; zf: "aj.zf"; zg: "aj.zg"; zh: "aj.zh"; zi: "aj.zi"; zj: "aj.zj"; zk: "aj.zk"; zl: "aj.zl"; zm: "aj.zm"; zn: "aj.zn"; zo: "aj.zo"; zp: "aj.zp"; zq: "aj.zq"; zr: "aj.zr"; zs: "aj.zs"; zt: "aj.zt"; zu: "aj.zu"; zv: "aj.zv"; zw: "aj.zw"; zx: "aj.zx"; zy: "aj.zy"; zz: "aj.zz"; }; ak: { aa: "ak.aa"; ab: "ak.ab"; ac: "ak.ac"; ad: "ak.ad"; ae: "ak.ae"; af: "ak.af"; ag: "ak.ag"; ah: "ak.ah"; ai: "ak.ai"; aj: "ak.aj"; ak: "ak.ak"; al: "ak.al"; am: "ak.am"; an: "ak.an"; ao: "ak.ao"; ap: "ak.ap"; aq: "ak.aq"; ar: "ak.ar"; as: "ak.as"; at: "ak.at"; au: "ak.au"; av: "ak.av"; aw: "ak.aw"; ax: "ak.ax"; ay: "ak.ay"; az: "ak.az"; ba: "ak.ba"; bb: "ak.bb"; bc: "ak.bc"; bd: "ak.bd"; be: "ak.be"; bf: "ak.bf"; bg: "ak.bg"; bh: "ak.bh"; bi: "ak.bi"; bj: "ak.bj"; bk: "ak.bk"; bl: "ak.bl"; bm: "ak.bm"; bn: "ak.bn"; bo: "ak.bo"; bp: "ak.bp"; bq: "ak.bq"; br: "ak.br"; bs: "ak.bs"; bt: "ak.bt"; bu: "ak.bu"; bv: "ak.bv"; bw: "ak.bw"; bx: "ak.bx"; by: "ak.by"; bz: "ak.bz"; ca: "ak.ca"; cb: "ak.cb"; cc: "ak.cc"; cd: "ak.cd"; ce: "ak.ce"; cf: "ak.cf"; cg: "ak.cg"; ch: "ak.ch"; ci: "ak.ci"; cj: "ak.cj"; ck: "ak.ck"; cl: "ak.cl"; cm: "ak.cm"; cn: "ak.cn"; co: "ak.co"; cp: "ak.cp"; cq: "ak.cq"; cr: "ak.cr"; cs: "ak.cs"; ct: "ak.ct"; cu: "ak.cu"; cv: "ak.cv"; cw: "ak.cw"; cx: "ak.cx"; cy: "ak.cy"; cz: "ak.cz"; da: "ak.da"; db: "ak.db"; dc: "ak.dc"; dd: "ak.dd"; de: "ak.de"; df: "ak.df"; dg: "ak.dg"; dh: "ak.dh"; di: "ak.di"; dj: "ak.dj"; dk: "ak.dk"; dl: "ak.dl"; dm: "ak.dm"; dn: "ak.dn"; do: "ak.do"; dp: "ak.dp"; dq: "ak.dq"; dr: "ak.dr"; ds: "ak.ds"; dt: "ak.dt"; du: "ak.du"; dv: "ak.dv"; dw: "ak.dw"; dx: "ak.dx"; dy: "ak.dy"; dz: "ak.dz"; ea: "ak.ea"; eb: "ak.eb"; ec: "ak.ec"; ed: "ak.ed"; ee: "ak.ee"; ef: "ak.ef"; eg: "ak.eg"; eh: "ak.eh"; ei: "ak.ei"; ej: "ak.ej"; ek: "ak.ek"; el: "ak.el"; em: "ak.em"; en: "ak.en"; eo: "ak.eo"; ep: "ak.ep"; eq: "ak.eq"; er: "ak.er"; es: "ak.es"; et: "ak.et"; eu: "ak.eu"; ev: "ak.ev"; ew: "ak.ew"; ex: "ak.ex"; ey: "ak.ey"; ez: "ak.ez"; fa: "ak.fa"; fb: "ak.fb"; fc: "ak.fc"; fd: "ak.fd"; fe: "ak.fe"; ff: "ak.ff"; fg: "ak.fg"; fh: "ak.fh"; fi: "ak.fi"; fj: "ak.fj"; fk: "ak.fk"; fl: "ak.fl"; fm: "ak.fm"; fn: "ak.fn"; fo: "ak.fo"; fp: "ak.fp"; fq: "ak.fq"; fr: "ak.fr"; fs: "ak.fs"; ft: "ak.ft"; fu: "ak.fu"; fv: "ak.fv"; fw: "ak.fw"; fx: "ak.fx"; fy: "ak.fy"; fz: "ak.fz"; ga: "ak.ga"; gb: "ak.gb"; gc: "ak.gc"; gd: "ak.gd"; ge: "ak.ge"; gf: "ak.gf"; gg: "ak.gg"; gh: "ak.gh"; gi: "ak.gi"; gj: "ak.gj"; gk: "ak.gk"; gl: "ak.gl"; gm: "ak.gm"; gn: "ak.gn"; go: "ak.go"; gp: "ak.gp"; gq: "ak.gq"; gr: "ak.gr"; gs: "ak.gs"; gt: "ak.gt"; gu: "ak.gu"; gv: "ak.gv"; gw: "ak.gw"; gx: "ak.gx"; gy: "ak.gy"; gz: "ak.gz"; ha: "ak.ha"; hb: "ak.hb"; hc: "ak.hc"; hd: "ak.hd"; he: "ak.he"; hf: "ak.hf"; hg: "ak.hg"; hh: "ak.hh"; hi: "ak.hi"; hj: "ak.hj"; hk: "ak.hk"; hl: "ak.hl"; hm: "ak.hm"; hn: "ak.hn"; ho: "ak.ho"; hp: "ak.hp"; hq: "ak.hq"; hr: "ak.hr"; hs: "ak.hs"; ht: "ak.ht"; hu: "ak.hu"; hv: "ak.hv"; hw: "ak.hw"; hx: "ak.hx"; hy: "ak.hy"; hz: "ak.hz"; ia: "ak.ia"; ib: "ak.ib"; ic: "ak.ic"; id: "ak.id"; ie: "ak.ie"; if: "ak.if"; ig: "ak.ig"; ih: "ak.ih"; ii: "ak.ii"; ij: "ak.ij"; ik: "ak.ik"; il: "ak.il"; im: "ak.im"; in: "ak.in"; io: "ak.io"; ip: "ak.ip"; iq: "ak.iq"; ir: "ak.ir"; is: "ak.is"; it: "ak.it"; iu: "ak.iu"; iv: "ak.iv"; iw: "ak.iw"; ix: "ak.ix"; iy: "ak.iy"; iz: "ak.iz"; ja: "ak.ja"; jb: "ak.jb"; jc: "ak.jc"; jd: "ak.jd"; je: "ak.je"; jf: "ak.jf"; jg: "ak.jg"; jh: "ak.jh"; ji: "ak.ji"; jj: "ak.jj"; jk: "ak.jk"; jl: "ak.jl"; jm: "ak.jm"; jn: "ak.jn"; jo: "ak.jo"; jp: "ak.jp"; jq: "ak.jq"; jr: "ak.jr"; js: "ak.js"; jt: "ak.jt"; ju: "ak.ju"; jv: "ak.jv"; jw: "ak.jw"; jx: "ak.jx"; jy: "ak.jy"; jz: "ak.jz"; ka: "ak.ka"; kb: "ak.kb"; kc: "ak.kc"; kd: "ak.kd"; ke: "ak.ke"; kf: "ak.kf"; kg: "ak.kg"; kh: "ak.kh"; ki: "ak.ki"; kj: "ak.kj"; kk: "ak.kk"; kl: "ak.kl"; km: "ak.km"; kn: "ak.kn"; ko: "ak.ko"; kp: "ak.kp"; kq: "ak.kq"; kr: "ak.kr"; ks: "ak.ks"; kt: "ak.kt"; ku: "ak.ku"; kv: "ak.kv"; kw: "ak.kw"; kx: "ak.kx"; ky: "ak.ky"; kz: "ak.kz"; la: "ak.la"; lb: "ak.lb"; lc: "ak.lc"; ld: "ak.ld"; le: "ak.le"; lf: "ak.lf"; lg: "ak.lg"; lh: "ak.lh"; li: "ak.li"; lj: "ak.lj"; lk: "ak.lk"; ll: "ak.ll"; lm: "ak.lm"; ln: "ak.ln"; lo: "ak.lo"; lp: "ak.lp"; lq: "ak.lq"; lr: "ak.lr"; ls: "ak.ls"; lt: "ak.lt"; lu: "ak.lu"; lv: "ak.lv"; lw: "ak.lw"; lx: "ak.lx"; ly: "ak.ly"; lz: "ak.lz"; ma: "ak.ma"; mb: "ak.mb"; mc: "ak.mc"; md: "ak.md"; me: "ak.me"; mf: "ak.mf"; mg: "ak.mg"; mh: "ak.mh"; mi: "ak.mi"; mj: "ak.mj"; mk: "ak.mk"; ml: "ak.ml"; mm: "ak.mm"; mn: "ak.mn"; mo: "ak.mo"; mp: "ak.mp"; mq: "ak.mq"; mr: "ak.mr"; ms: "ak.ms"; mt: "ak.mt"; mu: "ak.mu"; mv: "ak.mv"; mw: "ak.mw"; mx: "ak.mx"; my: "ak.my"; mz: "ak.mz"; na: "ak.na"; nb: "ak.nb"; nc: "ak.nc"; nd: "ak.nd"; ne: "ak.ne"; nf: "ak.nf"; ng: "ak.ng"; nh: "ak.nh"; ni: "ak.ni"; nj: "ak.nj"; nk: "ak.nk"; nl: "ak.nl"; nm: "ak.nm"; nn: "ak.nn"; no: "ak.no"; np: "ak.np"; nq: "ak.nq"; nr: "ak.nr"; ns: "ak.ns"; nt: "ak.nt"; nu: "ak.nu"; nv: "ak.nv"; nw: "ak.nw"; nx: "ak.nx"; ny: "ak.ny"; nz: "ak.nz"; oa: "ak.oa"; ob: "ak.ob"; oc: "ak.oc"; od: "ak.od"; oe: "ak.oe"; of: "ak.of"; og: "ak.og"; oh: "ak.oh"; oi: "ak.oi"; oj: "ak.oj"; ok: "ak.ok"; ol: "ak.ol"; om: "ak.om"; on: "ak.on"; oo: "ak.oo"; op: "ak.op"; oq: "ak.oq"; or: "ak.or"; os: "ak.os"; ot: "ak.ot"; ou: "ak.ou"; ov: "ak.ov"; ow: "ak.ow"; ox: "ak.ox"; oy: "ak.oy"; oz: "ak.oz"; pa: "ak.pa"; pb: "ak.pb"; pc: "ak.pc"; pd: "ak.pd"; pe: "ak.pe"; pf: "ak.pf"; pg: "ak.pg"; ph: "ak.ph"; pi: "ak.pi"; pj: "ak.pj"; pk: "ak.pk"; pl: "ak.pl"; pm: "ak.pm"; pn: "ak.pn"; po: "ak.po"; pp: "ak.pp"; pq: "ak.pq"; pr: "ak.pr"; ps: "ak.ps"; pt: "ak.pt"; pu: "ak.pu"; pv: "ak.pv"; pw: "ak.pw"; px: "ak.px"; py: "ak.py"; pz: "ak.pz"; qa: "ak.qa"; qb: "ak.qb"; qc: "ak.qc"; qd: "ak.qd"; qe: "ak.qe"; qf: "ak.qf"; qg: "ak.qg"; qh: "ak.qh"; qi: "ak.qi"; qj: "ak.qj"; qk: "ak.qk"; ql: "ak.ql"; qm: "ak.qm"; qn: "ak.qn"; qo: "ak.qo"; qp: "ak.qp"; qq: "ak.qq"; qr: "ak.qr"; qs: "ak.qs"; qt: "ak.qt"; qu: "ak.qu"; qv: "ak.qv"; qw: "ak.qw"; qx: "ak.qx"; qy: "ak.qy"; qz: "ak.qz"; ra: "ak.ra"; rb: "ak.rb"; rc: "ak.rc"; rd: "ak.rd"; re: "ak.re"; rf: "ak.rf"; rg: "ak.rg"; rh: "ak.rh"; ri: "ak.ri"; rj: "ak.rj"; rk: "ak.rk"; rl: "ak.rl"; rm: "ak.rm"; rn: "ak.rn"; ro: "ak.ro"; rp: "ak.rp"; rq: "ak.rq"; rr: "ak.rr"; rs: "ak.rs"; rt: "ak.rt"; ru: "ak.ru"; rv: "ak.rv"; rw: "ak.rw"; rx: "ak.rx"; ry: "ak.ry"; rz: "ak.rz"; sa: "ak.sa"; sb: "ak.sb"; sc: "ak.sc"; sd: "ak.sd"; se: "ak.se"; sf: "ak.sf"; sg: "ak.sg"; sh: "ak.sh"; si: "ak.si"; sj: "ak.sj"; sk: "ak.sk"; sl: "ak.sl"; sm: "ak.sm"; sn: "ak.sn"; so: "ak.so"; sp: "ak.sp"; sq: "ak.sq"; sr: "ak.sr"; ss: "ak.ss"; st: "ak.st"; su: "ak.su"; sv: "ak.sv"; sw: "ak.sw"; sx: "ak.sx"; sy: "ak.sy"; sz: "ak.sz"; ta: "ak.ta"; tb: "ak.tb"; tc: "ak.tc"; td: "ak.td"; te: "ak.te"; tf: "ak.tf"; tg: "ak.tg"; th: "ak.th"; ti: "ak.ti"; tj: "ak.tj"; tk: "ak.tk"; tl: "ak.tl"; tm: "ak.tm"; tn: "ak.tn"; to: "ak.to"; tp: "ak.tp"; tq: "ak.tq"; tr: "ak.tr"; ts: "ak.ts"; tt: "ak.tt"; tu: "ak.tu"; tv: "ak.tv"; tw: "ak.tw"; tx: "ak.tx"; ty: "ak.ty"; tz: "ak.tz"; ua: "ak.ua"; ub: "ak.ub"; uc: "ak.uc"; ud: "ak.ud"; ue: "ak.ue"; uf: "ak.uf"; ug: "ak.ug"; uh: "ak.uh"; ui: "ak.ui"; uj: "ak.uj"; uk: "ak.uk"; ul: "ak.ul"; um: "ak.um"; un: "ak.un"; uo: "ak.uo"; up: "ak.up"; uq: "ak.uq"; ur: "ak.ur"; us: "ak.us"; ut: "ak.ut"; uu: "ak.uu"; uv: "ak.uv"; uw: "ak.uw"; ux: "ak.ux"; uy: "ak.uy"; uz: "ak.uz"; va: "ak.va"; vb: "ak.vb"; vc: "ak.vc"; vd: "ak.vd"; ve: "ak.ve"; vf: "ak.vf"; vg: "ak.vg"; vh: "ak.vh"; vi: "ak.vi"; vj: "ak.vj"; vk: "ak.vk"; vl: "ak.vl"; vm: "ak.vm"; vn: "ak.vn"; vo: "ak.vo"; vp: "ak.vp"; vq: "ak.vq"; vr: "ak.vr"; vs: "ak.vs"; vt: "ak.vt"; vu: "ak.vu"; vv: "ak.vv"; vw: "ak.vw"; vx: "ak.vx"; vy: "ak.vy"; vz: "ak.vz"; wa: "ak.wa"; wb: "ak.wb"; wc: "ak.wc"; wd: "ak.wd"; we: "ak.we"; wf: "ak.wf"; wg: "ak.wg"; wh: "ak.wh"; wi: "ak.wi"; wj: "ak.wj"; wk: "ak.wk"; wl: "ak.wl"; wm: "ak.wm"; wn: "ak.wn"; wo: "ak.wo"; wp: "ak.wp"; wq: "ak.wq"; wr: "ak.wr"; ws: "ak.ws"; wt: "ak.wt"; wu: "ak.wu"; wv: "ak.wv"; ww: "ak.ww"; wx: "ak.wx"; wy: "ak.wy"; wz: "ak.wz"; xa: "ak.xa"; xb: "ak.xb"; xc: "ak.xc"; xd: "ak.xd"; xe: "ak.xe"; xf: "ak.xf"; xg: "ak.xg"; xh: "ak.xh"; xi: "ak.xi"; xj: "ak.xj"; xk: "ak.xk"; xl: "ak.xl"; xm: "ak.xm"; xn: "ak.xn"; xo: "ak.xo"; xp: "ak.xp"; xq: "ak.xq"; xr: "ak.xr"; xs: "ak.xs"; xt: "ak.xt"; xu: "ak.xu"; xv: "ak.xv"; xw: "ak.xw"; xx: "ak.xx"; xy: "ak.xy"; xz: "ak.xz"; ya: "ak.ya"; yb: "ak.yb"; yc: "ak.yc"; yd: "ak.yd"; ye: "ak.ye"; yf: "ak.yf"; yg: "ak.yg"; yh: "ak.yh"; yi: "ak.yi"; yj: "ak.yj"; yk: "ak.yk"; yl: "ak.yl"; ym: "ak.ym"; yn: "ak.yn"; yo: "ak.yo"; yp: "ak.yp"; yq: "ak.yq"; yr: "ak.yr"; ys: "ak.ys"; yt: "ak.yt"; yu: "ak.yu"; yv: "ak.yv"; yw: "ak.yw"; yx: "ak.yx"; yy: "ak.yy"; yz: "ak.yz"; za: "ak.za"; zb: "ak.zb"; zc: "ak.zc"; zd: "ak.zd"; ze: "ak.ze"; zf: "ak.zf"; zg: "ak.zg"; zh: "ak.zh"; zi: "ak.zi"; zj: "ak.zj"; zk: "ak.zk"; zl: "ak.zl"; zm: "ak.zm"; zn: "ak.zn"; zo: "ak.zo"; zp: "ak.zp"; zq: "ak.zq"; zr: "ak.zr"; zs: "ak.zs"; zt: "ak.zt"; zu: "ak.zu"; zv: "ak.zv"; zw: "ak.zw"; zx: "ak.zx"; zy: "ak.zy"; zz: "ak.zz"; }; al: { aa: "al.aa"; ab: "al.ab"; ac: "al.ac"; ad: "al.ad"; ae: "al.ae"; af: "al.af"; ag: "al.ag"; ah: "al.ah"; ai: "al.ai"; aj: "al.aj"; ak: "al.ak"; al: "al.al"; am: "al.am"; an: "al.an"; ao: "al.ao"; ap: "al.ap"; aq: "al.aq"; ar: "al.ar"; as: "al.as"; at: "al.at"; au: "al.au"; av: "al.av"; aw: "al.aw"; ax: "al.ax"; ay: "al.ay"; az: "al.az"; ba: "al.ba"; bb: "al.bb"; bc: "al.bc"; bd: "al.bd"; be: "al.be"; bf: "al.bf"; bg: "al.bg"; bh: "al.bh"; bi: "al.bi"; bj: "al.bj"; bk: "al.bk"; bl: "al.bl"; bm: "al.bm"; bn: "al.bn"; bo: "al.bo"; bp: "al.bp"; bq: "al.bq"; br: "al.br"; bs: "al.bs"; bt: "al.bt"; bu: "al.bu"; bv: "al.bv"; bw: "al.bw"; bx: "al.bx"; by: "al.by"; bz: "al.bz"; ca: "al.ca"; cb: "al.cb"; cc: "al.cc"; cd: "al.cd"; ce: "al.ce"; cf: "al.cf"; cg: "al.cg"; ch: "al.ch"; ci: "al.ci"; cj: "al.cj"; ck: "al.ck"; cl: "al.cl"; cm: "al.cm"; cn: "al.cn"; co: "al.co"; cp: "al.cp"; cq: "al.cq"; cr: "al.cr"; cs: "al.cs"; ct: "al.ct"; cu: "al.cu"; cv: "al.cv"; cw: "al.cw"; cx: "al.cx"; cy: "al.cy"; cz: "al.cz"; da: "al.da"; db: "al.db"; dc: "al.dc"; dd: "al.dd"; de: "al.de"; df: "al.df"; dg: "al.dg"; dh: "al.dh"; di: "al.di"; dj: "al.dj"; dk: "al.dk"; dl: "al.dl"; dm: "al.dm"; dn: "al.dn"; do: "al.do"; dp: "al.dp"; dq: "al.dq"; dr: "al.dr"; ds: "al.ds"; dt: "al.dt"; du: "al.du"; dv: "al.dv"; dw: "al.dw"; dx: "al.dx"; dy: "al.dy"; dz: "al.dz"; ea: "al.ea"; eb: "al.eb"; ec: "al.ec"; ed: "al.ed"; ee: "al.ee"; ef: "al.ef"; eg: "al.eg"; eh: "al.eh"; ei: "al.ei"; ej: "al.ej"; ek: "al.ek"; el: "al.el"; em: "al.em"; en: "al.en"; eo: "al.eo"; ep: "al.ep"; eq: "al.eq"; er: "al.er"; es: "al.es"; et: "al.et"; eu: "al.eu"; ev: "al.ev"; ew: "al.ew"; ex: "al.ex"; ey: "al.ey"; ez: "al.ez"; fa: "al.fa"; fb: "al.fb"; fc: "al.fc"; fd: "al.fd"; fe: "al.fe"; ff: "al.ff"; fg: "al.fg"; fh: "al.fh"; fi: "al.fi"; fj: "al.fj"; fk: "al.fk"; fl: "al.fl"; fm: "al.fm"; fn: "al.fn"; fo: "al.fo"; fp: "al.fp"; fq: "al.fq"; fr: "al.fr"; fs: "al.fs"; ft: "al.ft"; fu: "al.fu"; fv: "al.fv"; fw: "al.fw"; fx: "al.fx"; fy: "al.fy"; fz: "al.fz"; ga: "al.ga"; gb: "al.gb"; gc: "al.gc"; gd: "al.gd"; ge: "al.ge"; gf: "al.gf"; gg: "al.gg"; gh: "al.gh"; gi: "al.gi"; gj: "al.gj"; gk: "al.gk"; gl: "al.gl"; gm: "al.gm"; gn: "al.gn"; go: "al.go"; gp: "al.gp"; gq: "al.gq"; gr: "al.gr"; gs: "al.gs"; gt: "al.gt"; gu: "al.gu"; gv: "al.gv"; gw: "al.gw"; gx: "al.gx"; gy: "al.gy"; gz: "al.gz"; ha: "al.ha"; hb: "al.hb"; hc: "al.hc"; hd: "al.hd"; he: "al.he"; hf: "al.hf"; hg: "al.hg"; hh: "al.hh"; hi: "al.hi"; hj: "al.hj"; hk: "al.hk"; hl: "al.hl"; hm: "al.hm"; hn: "al.hn"; ho: "al.ho"; hp: "al.hp"; hq: "al.hq"; hr: "al.hr"; hs: "al.hs"; ht: "al.ht"; hu: "al.hu"; hv: "al.hv"; hw: "al.hw"; hx: "al.hx"; hy: "al.hy"; hz: "al.hz"; ia: "al.ia"; ib: "al.ib"; ic: "al.ic"; id: "al.id"; ie: "al.ie"; if: "al.if"; ig: "al.ig"; ih: "al.ih"; ii: "al.ii"; ij: "al.ij"; ik: "al.ik"; il: "al.il"; im: "al.im"; in: "al.in"; io: "al.io"; ip: "al.ip"; iq: "al.iq"; ir: "al.ir"; is: "al.is"; it: "al.it"; iu: "al.iu"; iv: "al.iv"; iw: "al.iw"; ix: "al.ix"; iy: "al.iy"; iz: "al.iz"; ja: "al.ja"; jb: "al.jb"; jc: "al.jc"; jd: "al.jd"; je: "al.je"; jf: "al.jf"; jg: "al.jg"; jh: "al.jh"; ji: "al.ji"; jj: "al.jj"; jk: "al.jk"; jl: "al.jl"; jm: "al.jm"; jn: "al.jn"; jo: "al.jo"; jp: "al.jp"; jq: "al.jq"; jr: "al.jr"; js: "al.js"; jt: "al.jt"; ju: "al.ju"; jv: "al.jv"; jw: "al.jw"; jx: "al.jx"; jy: "al.jy"; jz: "al.jz"; ka: "al.ka"; kb: "al.kb"; kc: "al.kc"; kd: "al.kd"; ke: "al.ke"; kf: "al.kf"; kg: "al.kg"; kh: "al.kh"; ki: "al.ki"; kj: "al.kj"; kk: "al.kk"; kl: "al.kl"; km: "al.km"; kn: "al.kn"; ko: "al.ko"; kp: "al.kp"; kq: "al.kq"; kr: "al.kr"; ks: "al.ks"; kt: "al.kt"; ku: "al.ku"; kv: "al.kv"; kw: "al.kw"; kx: "al.kx"; ky: "al.ky"; kz: "al.kz"; la: "al.la"; lb: "al.lb"; lc: "al.lc"; ld: "al.ld"; le: "al.le"; lf: "al.lf"; lg: "al.lg"; lh: "al.lh"; li: "al.li"; lj: "al.lj"; lk: "al.lk"; ll: "al.ll"; lm: "al.lm"; ln: "al.ln"; lo: "al.lo"; lp: "al.lp"; lq: "al.lq"; lr: "al.lr"; ls: "al.ls"; lt: "al.lt"; lu: "al.lu"; lv: "al.lv"; lw: "al.lw"; lx: "al.lx"; ly: "al.ly"; lz: "al.lz"; ma: "al.ma"; mb: "al.mb"; mc: "al.mc"; md: "al.md"; me: "al.me"; mf: "al.mf"; mg: "al.mg"; mh: "al.mh"; mi: "al.mi"; mj: "al.mj"; mk: "al.mk"; ml: "al.ml"; mm: "al.mm"; mn: "al.mn"; mo: "al.mo"; mp: "al.mp"; mq: "al.mq"; mr: "al.mr"; ms: "al.ms"; mt: "al.mt"; mu: "al.mu"; mv: "al.mv"; mw: "al.mw"; mx: "al.mx"; my: "al.my"; mz: "al.mz"; na: "al.na"; nb: "al.nb"; nc: "al.nc"; nd: "al.nd"; ne: "al.ne"; nf: "al.nf"; ng: "al.ng"; nh: "al.nh"; ni: "al.ni"; nj: "al.nj"; nk: "al.nk"; nl: "al.nl"; nm: "al.nm"; nn: "al.nn"; no: "al.no"; np: "al.np"; nq: "al.nq"; nr: "al.nr"; ns: "al.ns"; nt: "al.nt"; nu: "al.nu"; nv: "al.nv"; nw: "al.nw"; nx: "al.nx"; ny: "al.ny"; nz: "al.nz"; oa: "al.oa"; ob: "al.ob"; oc: "al.oc"; od: "al.od"; oe: "al.oe"; of: "al.of"; og: "al.og"; oh: "al.oh"; oi: "al.oi"; oj: "al.oj"; ok: "al.ok"; ol: "al.ol"; om: "al.om"; on: "al.on"; oo: "al.oo"; op: "al.op"; oq: "al.oq"; or: "al.or"; os: "al.os"; ot: "al.ot"; ou: "al.ou"; ov: "al.ov"; ow: "al.ow"; ox: "al.ox"; oy: "al.oy"; oz: "al.oz"; pa: "al.pa"; pb: "al.pb"; pc: "al.pc"; pd: "al.pd"; pe: "al.pe"; pf: "al.pf"; pg: "al.pg"; ph: "al.ph"; pi: "al.pi"; pj: "al.pj"; pk: "al.pk"; pl: "al.pl"; pm: "al.pm"; pn: "al.pn"; po: "al.po"; pp: "al.pp"; pq: "al.pq"; pr: "al.pr"; ps: "al.ps"; pt: "al.pt"; pu: "al.pu"; pv: "al.pv"; pw: "al.pw"; px: "al.px"; py: "al.py"; pz: "al.pz"; qa: "al.qa"; qb: "al.qb"; qc: "al.qc"; qd: "al.qd"; qe: "al.qe"; qf: "al.qf"; qg: "al.qg"; qh: "al.qh"; qi: "al.qi"; qj: "al.qj"; qk: "al.qk"; ql: "al.ql"; qm: "al.qm"; qn: "al.qn"; qo: "al.qo"; qp: "al.qp"; qq: "al.qq"; qr: "al.qr"; qs: "al.qs"; qt: "al.qt"; qu: "al.qu"; qv: "al.qv"; qw: "al.qw"; qx: "al.qx"; qy: "al.qy"; qz: "al.qz"; ra: "al.ra"; rb: "al.rb"; rc: "al.rc"; rd: "al.rd"; re: "al.re"; rf: "al.rf"; rg: "al.rg"; rh: "al.rh"; ri: "al.ri"; rj: "al.rj"; rk: "al.rk"; rl: "al.rl"; rm: "al.rm"; rn: "al.rn"; ro: "al.ro"; rp: "al.rp"; rq: "al.rq"; rr: "al.rr"; rs: "al.rs"; rt: "al.rt"; ru: "al.ru"; rv: "al.rv"; rw: "al.rw"; rx: "al.rx"; ry: "al.ry"; rz: "al.rz"; sa: "al.sa"; sb: "al.sb"; sc: "al.sc"; sd: "al.sd"; se: "al.se"; sf: "al.sf"; sg: "al.sg"; sh: "al.sh"; si: "al.si"; sj: "al.sj"; sk: "al.sk"; sl: "al.sl"; sm: "al.sm"; sn: "al.sn"; so: "al.so"; sp: "al.sp"; sq: "al.sq"; sr: "al.sr"; ss: "al.ss"; st: "al.st"; su: "al.su"; sv: "al.sv"; sw: "al.sw"; sx: "al.sx"; sy: "al.sy"; sz: "al.sz"; ta: "al.ta"; tb: "al.tb"; tc: "al.tc"; td: "al.td"; te: "al.te"; tf: "al.tf"; tg: "al.tg"; th: "al.th"; ti: "al.ti"; tj: "al.tj"; tk: "al.tk"; tl: "al.tl"; tm: "al.tm"; tn: "al.tn"; to: "al.to"; tp: "al.tp"; tq: "al.tq"; tr: "al.tr"; ts: "al.ts"; tt: "al.tt"; tu: "al.tu"; tv: "al.tv"; tw: "al.tw"; tx: "al.tx"; ty: "al.ty"; tz: "al.tz"; ua: "al.ua"; ub: "al.ub"; uc: "al.uc"; ud: "al.ud"; ue: "al.ue"; uf: "al.uf"; ug: "al.ug"; uh: "al.uh"; ui: "al.ui"; uj: "al.uj"; uk: "al.uk"; ul: "al.ul"; um: "al.um"; un: "al.un"; uo: "al.uo"; up: "al.up"; uq: "al.uq"; ur: "al.ur"; us: "al.us"; ut: "al.ut"; uu: "al.uu"; uv: "al.uv"; uw: "al.uw"; ux: "al.ux"; uy: "al.uy"; uz: "al.uz"; va: "al.va"; vb: "al.vb"; vc: "al.vc"; vd: "al.vd"; ve: "al.ve"; vf: "al.vf"; vg: "al.vg"; vh: "al.vh"; vi: "al.vi"; vj: "al.vj"; vk: "al.vk"; vl: "al.vl"; vm: "al.vm"; vn: "al.vn"; vo: "al.vo"; vp: "al.vp"; vq: "al.vq"; vr: "al.vr"; vs: "al.vs"; vt: "al.vt"; vu: "al.vu"; vv: "al.vv"; vw: "al.vw"; vx: "al.vx"; vy: "al.vy"; vz: "al.vz"; wa: "al.wa"; wb: "al.wb"; wc: "al.wc"; wd: "al.wd"; we: "al.we"; wf: "al.wf"; wg: "al.wg"; wh: "al.wh"; wi: "al.wi"; wj: "al.wj"; wk: "al.wk"; wl: "al.wl"; wm: "al.wm"; wn: "al.wn"; wo: "al.wo"; wp: "al.wp"; wq: "al.wq"; wr: "al.wr"; ws: "al.ws"; wt: "al.wt"; wu: "al.wu"; wv: "al.wv"; ww: "al.ww"; wx: "al.wx"; wy: "al.wy"; wz: "al.wz"; xa: "al.xa"; xb: "al.xb"; xc: "al.xc"; xd: "al.xd"; xe: "al.xe"; xf: "al.xf"; xg: "al.xg"; xh: "al.xh"; xi: "al.xi"; xj: "al.xj"; xk: "al.xk"; xl: "al.xl"; xm: "al.xm"; xn: "al.xn"; xo: "al.xo"; xp: "al.xp"; xq: "al.xq"; xr: "al.xr"; xs: "al.xs"; xt: "al.xt"; xu: "al.xu"; xv: "al.xv"; xw: "al.xw"; xx: "al.xx"; xy: "al.xy"; xz: "al.xz"; ya: "al.ya"; yb: "al.yb"; yc: "al.yc"; yd: "al.yd"; ye: "al.ye"; yf: "al.yf"; yg: "al.yg"; yh: "al.yh"; yi: "al.yi"; yj: "al.yj"; yk: "al.yk"; yl: "al.yl"; ym: "al.ym"; yn: "al.yn"; yo: "al.yo"; yp: "al.yp"; yq: "al.yq"; yr: "al.yr"; ys: "al.ys"; yt: "al.yt"; yu: "al.yu"; yv: "al.yv"; yw: "al.yw"; yx: "al.yx"; yy: "al.yy"; yz: "al.yz"; za: "al.za"; zb: "al.zb"; zc: "al.zc"; zd: "al.zd"; ze: "al.ze"; zf: "al.zf"; zg: "al.zg"; zh: "al.zh"; zi: "al.zi"; zj: "al.zj"; zk: "al.zk"; zl: "al.zl"; zm: "al.zm"; zn: "al.zn"; zo: "al.zo"; zp: "al.zp"; zq: "al.zq"; zr: "al.zr"; zs: "al.zs"; zt: "al.zt"; zu: "al.zu"; zv: "al.zv"; zw: "al.zw"; zx: "al.zx"; zy: "al.zy"; zz: "al.zz"; }; am: { aa: "am.aa"; ab: "am.ab"; ac: "am.ac"; ad: "am.ad"; ae: "am.ae"; af: "am.af"; ag: "am.ag"; ah: "am.ah"; ai: "am.ai"; aj: "am.aj"; ak: "am.ak"; al: "am.al"; am: "am.am"; an: "am.an"; ao: "am.ao"; ap: "am.ap"; aq: "am.aq"; ar: "am.ar"; as: "am.as"; at: "am.at"; au: "am.au"; av: "am.av"; aw: "am.aw"; ax: "am.ax"; ay: "am.ay"; az: "am.az"; ba: "am.ba"; bb: "am.bb"; bc: "am.bc"; bd: "am.bd"; be: "am.be"; bf: "am.bf"; bg: "am.bg"; bh: "am.bh"; bi: "am.bi"; bj: "am.bj"; bk: "am.bk"; bl: "am.bl"; bm: "am.bm"; bn: "am.bn"; bo: "am.bo"; bp: "am.bp"; bq: "am.bq"; br: "am.br"; bs: "am.bs"; bt: "am.bt"; bu: "am.bu"; bv: "am.bv"; bw: "am.bw"; bx: "am.bx"; by: "am.by"; bz: "am.bz"; ca: "am.ca"; cb: "am.cb"; cc: "am.cc"; cd: "am.cd"; ce: "am.ce"; cf: "am.cf"; cg: "am.cg"; ch: "am.ch"; ci: "am.ci"; cj: "am.cj"; ck: "am.ck"; cl: "am.cl"; cm: "am.cm"; cn: "am.cn"; co: "am.co"; cp: "am.cp"; cq: "am.cq"; cr: "am.cr"; cs: "am.cs"; ct: "am.ct"; cu: "am.cu"; cv: "am.cv"; cw: "am.cw"; cx: "am.cx"; cy: "am.cy"; cz: "am.cz"; da: "am.da"; db: "am.db"; dc: "am.dc"; dd: "am.dd"; de: "am.de"; df: "am.df"; dg: "am.dg"; dh: "am.dh"; di: "am.di"; dj: "am.dj"; dk: "am.dk"; dl: "am.dl"; dm: "am.dm"; dn: "am.dn"; do: "am.do"; dp: "am.dp"; dq: "am.dq"; dr: "am.dr"; ds: "am.ds"; dt: "am.dt"; du: "am.du"; dv: "am.dv"; dw: "am.dw"; dx: "am.dx"; dy: "am.dy"; dz: "am.dz"; ea: "am.ea"; eb: "am.eb"; ec: "am.ec"; ed: "am.ed"; ee: "am.ee"; ef: "am.ef"; eg: "am.eg"; eh: "am.eh"; ei: "am.ei"; ej: "am.ej"; ek: "am.ek"; el: "am.el"; em: "am.em"; en: "am.en"; eo: "am.eo"; ep: "am.ep"; eq: "am.eq"; er: "am.er"; es: "am.es"; et: "am.et"; eu: "am.eu"; ev: "am.ev"; ew: "am.ew"; ex: "am.ex"; ey: "am.ey"; ez: "am.ez"; fa: "am.fa"; fb: "am.fb"; fc: "am.fc"; fd: "am.fd"; fe: "am.fe"; ff: "am.ff"; fg: "am.fg"; fh: "am.fh"; fi: "am.fi"; fj: "am.fj"; fk: "am.fk"; fl: "am.fl"; fm: "am.fm"; fn: "am.fn"; fo: "am.fo"; fp: "am.fp"; fq: "am.fq"; fr: "am.fr"; fs: "am.fs"; ft: "am.ft"; fu: "am.fu"; fv: "am.fv"; fw: "am.fw"; fx: "am.fx"; fy: "am.fy"; fz: "am.fz"; ga: "am.ga"; gb: "am.gb"; gc: "am.gc"; gd: "am.gd"; ge: "am.ge"; gf: "am.gf"; gg: "am.gg"; gh: "am.gh"; gi: "am.gi"; gj: "am.gj"; gk: "am.gk"; gl: "am.gl"; gm: "am.gm"; gn: "am.gn"; go: "am.go"; gp: "am.gp"; gq: "am.gq"; gr: "am.gr"; gs: "am.gs"; gt: "am.gt"; gu: "am.gu"; gv: "am.gv"; gw: "am.gw"; gx: "am.gx"; gy: "am.gy"; gz: "am.gz"; ha: "am.ha"; hb: "am.hb"; hc: "am.hc"; hd: "am.hd"; he: "am.he"; hf: "am.hf"; hg: "am.hg"; hh: "am.hh"; hi: "am.hi"; hj: "am.hj"; hk: "am.hk"; hl: "am.hl"; hm: "am.hm"; hn: "am.hn"; ho: "am.ho"; hp: "am.hp"; hq: "am.hq"; hr: "am.hr"; hs: "am.hs"; ht: "am.ht"; hu: "am.hu"; hv: "am.hv"; hw: "am.hw"; hx: "am.hx"; hy: "am.hy"; hz: "am.hz"; ia: "am.ia"; ib: "am.ib"; ic: "am.ic"; id: "am.id"; ie: "am.ie"; if: "am.if"; ig: "am.ig"; ih: "am.ih"; ii: "am.ii"; ij: "am.ij"; ik: "am.ik"; il: "am.il"; im: "am.im"; in: "am.in"; io: "am.io"; ip: "am.ip"; iq: "am.iq"; ir: "am.ir"; is: "am.is"; it: "am.it"; iu: "am.iu"; iv: "am.iv"; iw: "am.iw"; ix: "am.ix"; iy: "am.iy"; iz: "am.iz"; ja: "am.ja"; jb: "am.jb"; jc: "am.jc"; jd: "am.jd"; je: "am.je"; jf: "am.jf"; jg: "am.jg"; jh: "am.jh"; ji: "am.ji"; jj: "am.jj"; jk: "am.jk"; jl: "am.jl"; jm: "am.jm"; jn: "am.jn"; jo: "am.jo"; jp: "am.jp"; jq: "am.jq"; jr: "am.jr"; js: "am.js"; jt: "am.jt"; ju: "am.ju"; jv: "am.jv"; jw: "am.jw"; jx: "am.jx"; jy: "am.jy"; jz: "am.jz"; ka: "am.ka"; kb: "am.kb"; kc: "am.kc"; kd: "am.kd"; ke: "am.ke"; kf: "am.kf"; kg: "am.kg"; kh: "am.kh"; ki: "am.ki"; kj: "am.kj"; kk: "am.kk"; kl: "am.kl"; km: "am.km"; kn: "am.kn"; ko: "am.ko"; kp: "am.kp"; kq: "am.kq"; kr: "am.kr"; ks: "am.ks"; kt: "am.kt"; ku: "am.ku"; kv: "am.kv"; kw: "am.kw"; kx: "am.kx"; ky: "am.ky"; kz: "am.kz"; la: "am.la"; lb: "am.lb"; lc: "am.lc"; ld: "am.ld"; le: "am.le"; lf: "am.lf"; lg: "am.lg"; lh: "am.lh"; li: "am.li"; lj: "am.lj"; lk: "am.lk"; ll: "am.ll"; lm: "am.lm"; ln: "am.ln"; lo: "am.lo"; lp: "am.lp"; lq: "am.lq"; lr: "am.lr"; ls: "am.ls"; lt: "am.lt"; lu: "am.lu"; lv: "am.lv"; lw: "am.lw"; lx: "am.lx"; ly: "am.ly"; lz: "am.lz"; ma: "am.ma"; mb: "am.mb"; mc: "am.mc"; md: "am.md"; me: "am.me"; mf: "am.mf"; mg: "am.mg"; mh: "am.mh"; mi: "am.mi"; mj: "am.mj"; mk: "am.mk"; ml: "am.ml"; mm: "am.mm"; mn: "am.mn"; mo: "am.mo"; mp: "am.mp"; mq: "am.mq"; mr: "am.mr"; ms: "am.ms"; mt: "am.mt"; mu: "am.mu"; mv: "am.mv"; mw: "am.mw"; mx: "am.mx"; my: "am.my"; mz: "am.mz"; na: "am.na"; nb: "am.nb"; nc: "am.nc"; nd: "am.nd"; ne: "am.ne"; nf: "am.nf"; ng: "am.ng"; nh: "am.nh"; ni: "am.ni"; nj: "am.nj"; nk: "am.nk"; nl: "am.nl"; nm: "am.nm"; nn: "am.nn"; no: "am.no"; np: "am.np"; nq: "am.nq"; nr: "am.nr"; ns: "am.ns"; nt: "am.nt"; nu: "am.nu"; nv: "am.nv"; nw: "am.nw"; nx: "am.nx"; ny: "am.ny"; nz: "am.nz"; oa: "am.oa"; ob: "am.ob"; oc: "am.oc"; od: "am.od"; oe: "am.oe"; of: "am.of"; og: "am.og"; oh: "am.oh"; oi: "am.oi"; oj: "am.oj"; ok: "am.ok"; ol: "am.ol"; om: "am.om"; on: "am.on"; oo: "am.oo"; op: "am.op"; oq: "am.oq"; or: "am.or"; os: "am.os"; ot: "am.ot"; ou: "am.ou"; ov: "am.ov"; ow: "am.ow"; ox: "am.ox"; oy: "am.oy"; oz: "am.oz"; pa: "am.pa"; pb: "am.pb"; pc: "am.pc"; pd: "am.pd"; pe: "am.pe"; pf: "am.pf"; pg: "am.pg"; ph: "am.ph"; pi: "am.pi"; pj: "am.pj"; pk: "am.pk"; pl: "am.pl"; pm: "am.pm"; pn: "am.pn"; po: "am.po"; pp: "am.pp"; pq: "am.pq"; pr: "am.pr"; ps: "am.ps"; pt: "am.pt"; pu: "am.pu"; pv: "am.pv"; pw: "am.pw"; px: "am.px"; py: "am.py"; pz: "am.pz"; qa: "am.qa"; qb: "am.qb"; qc: "am.qc"; qd: "am.qd"; qe: "am.qe"; qf: "am.qf"; qg: "am.qg"; qh: "am.qh"; qi: "am.qi"; qj: "am.qj"; qk: "am.qk"; ql: "am.ql"; qm: "am.qm"; qn: "am.qn"; qo: "am.qo"; qp: "am.qp"; qq: "am.qq"; qr: "am.qr"; qs: "am.qs"; qt: "am.qt"; qu: "am.qu"; qv: "am.qv"; qw: "am.qw"; qx: "am.qx"; qy: "am.qy"; qz: "am.qz"; ra: "am.ra"; rb: "am.rb"; rc: "am.rc"; rd: "am.rd"; re: "am.re"; rf: "am.rf"; rg: "am.rg"; rh: "am.rh"; ri: "am.ri"; rj: "am.rj"; rk: "am.rk"; rl: "am.rl"; rm: "am.rm"; rn: "am.rn"; ro: "am.ro"; rp: "am.rp"; rq: "am.rq"; rr: "am.rr"; rs: "am.rs"; rt: "am.rt"; ru: "am.ru"; rv: "am.rv"; rw: "am.rw"; rx: "am.rx"; ry: "am.ry"; rz: "am.rz"; sa: "am.sa"; sb: "am.sb"; sc: "am.sc"; sd: "am.sd"; se: "am.se"; sf: "am.sf"; sg: "am.sg"; sh: "am.sh"; si: "am.si"; sj: "am.sj"; sk: "am.sk"; sl: "am.sl"; sm: "am.sm"; sn: "am.sn"; so: "am.so"; sp: "am.sp"; sq: "am.sq"; sr: "am.sr"; ss: "am.ss"; st: "am.st"; su: "am.su"; sv: "am.sv"; sw: "am.sw"; sx: "am.sx"; sy: "am.sy"; sz: "am.sz"; ta: "am.ta"; tb: "am.tb"; tc: "am.tc"; td: "am.td"; te: "am.te"; tf: "am.tf"; tg: "am.tg"; th: "am.th"; ti: "am.ti"; tj: "am.tj"; tk: "am.tk"; tl: "am.tl"; tm: "am.tm"; tn: "am.tn"; to: "am.to"; tp: "am.tp"; tq: "am.tq"; tr: "am.tr"; ts: "am.ts"; tt: "am.tt"; tu: "am.tu"; tv: "am.tv"; tw: "am.tw"; tx: "am.tx"; ty: "am.ty"; tz: "am.tz"; ua: "am.ua"; ub: "am.ub"; uc: "am.uc"; ud: "am.ud"; ue: "am.ue"; uf: "am.uf"; ug: "am.ug"; uh: "am.uh"; ui: "am.ui"; uj: "am.uj"; uk: "am.uk"; ul: "am.ul"; um: "am.um"; un: "am.un"; uo: "am.uo"; up: "am.up"; uq: "am.uq"; ur: "am.ur"; us: "am.us"; ut: "am.ut"; uu: "am.uu"; uv: "am.uv"; uw: "am.uw"; ux: "am.ux"; uy: "am.uy"; uz: "am.uz"; va: "am.va"; vb: "am.vb"; vc: "am.vc"; vd: "am.vd"; ve: "am.ve"; vf: "am.vf"; vg: "am.vg"; vh: "am.vh"; vi: "am.vi"; vj: "am.vj"; vk: "am.vk"; vl: "am.vl"; vm: "am.vm"; vn: "am.vn"; vo: "am.vo"; vp: "am.vp"; vq: "am.vq"; vr: "am.vr"; vs: "am.vs"; vt: "am.vt"; vu: "am.vu"; vv: "am.vv"; vw: "am.vw"; vx: "am.vx"; vy: "am.vy"; vz: "am.vz"; wa: "am.wa"; wb: "am.wb"; wc: "am.wc"; wd: "am.wd"; we: "am.we"; wf: "am.wf"; wg: "am.wg"; wh: "am.wh"; wi: "am.wi"; wj: "am.wj"; wk: "am.wk"; wl: "am.wl"; wm: "am.wm"; wn: "am.wn"; wo: "am.wo"; wp: "am.wp"; wq: "am.wq"; wr: "am.wr"; ws: "am.ws"; wt: "am.wt"; wu: "am.wu"; wv: "am.wv"; ww: "am.ww"; wx: "am.wx"; wy: "am.wy"; wz: "am.wz"; xa: "am.xa"; xb: "am.xb"; xc: "am.xc"; xd: "am.xd"; xe: "am.xe"; xf: "am.xf"; xg: "am.xg"; xh: "am.xh"; xi: "am.xi"; xj: "am.xj"; xk: "am.xk"; xl: "am.xl"; xm: "am.xm"; xn: "am.xn"; xo: "am.xo"; xp: "am.xp"; xq: "am.xq"; xr: "am.xr"; xs: "am.xs"; xt: "am.xt"; xu: "am.xu"; xv: "am.xv"; xw: "am.xw"; xx: "am.xx"; xy: "am.xy"; xz: "am.xz"; ya: "am.ya"; yb: "am.yb"; yc: "am.yc"; yd: "am.yd"; ye: "am.ye"; yf: "am.yf"; yg: "am.yg"; yh: "am.yh"; yi: "am.yi"; yj: "am.yj"; yk: "am.yk"; yl: "am.yl"; ym: "am.ym"; yn: "am.yn"; yo: "am.yo"; yp: "am.yp"; yq: "am.yq"; yr: "am.yr"; ys: "am.ys"; yt: "am.yt"; yu: "am.yu"; yv: "am.yv"; yw: "am.yw"; yx: "am.yx"; yy: "am.yy"; yz: "am.yz"; za: "am.za"; zb: "am.zb"; zc: "am.zc"; zd: "am.zd"; ze: "am.ze"; zf: "am.zf"; zg: "am.zg"; zh: "am.zh"; zi: "am.zi"; zj: "am.zj"; zk: "am.zk"; zl: "am.zl"; zm: "am.zm"; zn: "am.zn"; zo: "am.zo"; zp: "am.zp"; zq: "am.zq"; zr: "am.zr"; zs: "am.zs"; zt: "am.zt"; zu: "am.zu"; zv: "am.zv"; zw: "am.zw"; zx: "am.zx"; zy: "am.zy"; zz: "am.zz"; }; an: { aa: "an.aa"; ab: "an.ab"; ac: "an.ac"; ad: "an.ad"; ae: "an.ae"; af: "an.af"; ag: "an.ag"; ah: "an.ah"; ai: "an.ai"; aj: "an.aj"; ak: "an.ak"; al: "an.al"; am: "an.am"; an: "an.an"; ao: "an.ao"; ap: "an.ap"; aq: "an.aq"; ar: "an.ar"; as: "an.as"; at: "an.at"; au: "an.au"; av: "an.av"; aw: "an.aw"; ax: "an.ax"; ay: "an.ay"; az: "an.az"; ba: "an.ba"; bb: "an.bb"; bc: "an.bc"; bd: "an.bd"; be: "an.be"; bf: "an.bf"; bg: "an.bg"; bh: "an.bh"; bi: "an.bi"; bj: "an.bj"; bk: "an.bk"; bl: "an.bl"; bm: "an.bm"; bn: "an.bn"; bo: "an.bo"; bp: "an.bp"; bq: "an.bq"; br: "an.br"; bs: "an.bs"; bt: "an.bt"; bu: "an.bu"; bv: "an.bv"; bw: "an.bw"; bx: "an.bx"; by: "an.by"; bz: "an.bz"; ca: "an.ca"; cb: "an.cb"; cc: "an.cc"; cd: "an.cd"; ce: "an.ce"; cf: "an.cf"; cg: "an.cg"; ch: "an.ch"; ci: "an.ci"; cj: "an.cj"; ck: "an.ck"; cl: "an.cl"; cm: "an.cm"; cn: "an.cn"; co: "an.co"; cp: "an.cp"; cq: "an.cq"; cr: "an.cr"; cs: "an.cs"; ct: "an.ct"; cu: "an.cu"; cv: "an.cv"; cw: "an.cw"; cx: "an.cx"; cy: "an.cy"; cz: "an.cz"; da: "an.da"; db: "an.db"; dc: "an.dc"; dd: "an.dd"; de: "an.de"; df: "an.df"; dg: "an.dg"; dh: "an.dh"; di: "an.di"; dj: "an.dj"; dk: "an.dk"; dl: "an.dl"; dm: "an.dm"; dn: "an.dn"; do: "an.do"; dp: "an.dp"; dq: "an.dq"; dr: "an.dr"; ds: "an.ds"; dt: "an.dt"; du: "an.du"; dv: "an.dv"; dw: "an.dw"; dx: "an.dx"; dy: "an.dy"; dz: "an.dz"; ea: "an.ea"; eb: "an.eb"; ec: "an.ec"; ed: "an.ed"; ee: "an.ee"; ef: "an.ef"; eg: "an.eg"; eh: "an.eh"; ei: "an.ei"; ej: "an.ej"; ek: "an.ek"; el: "an.el"; em: "an.em"; en: "an.en"; eo: "an.eo"; ep: "an.ep"; eq: "an.eq"; er: "an.er"; es: "an.es"; et: "an.et"; eu: "an.eu"; ev: "an.ev"; ew: "an.ew"; ex: "an.ex"; ey: "an.ey"; ez: "an.ez"; fa: "an.fa"; fb: "an.fb"; fc: "an.fc"; fd: "an.fd"; fe: "an.fe"; ff: "an.ff"; fg: "an.fg"; fh: "an.fh"; fi: "an.fi"; fj: "an.fj"; fk: "an.fk"; fl: "an.fl"; fm: "an.fm"; fn: "an.fn"; fo: "an.fo"; fp: "an.fp"; fq: "an.fq"; fr: "an.fr"; fs: "an.fs"; ft: "an.ft"; fu: "an.fu"; fv: "an.fv"; fw: "an.fw"; fx: "an.fx"; fy: "an.fy"; fz: "an.fz"; ga: "an.ga"; gb: "an.gb"; gc: "an.gc"; gd: "an.gd"; ge: "an.ge"; gf: "an.gf"; gg: "an.gg"; gh: "an.gh"; gi: "an.gi"; gj: "an.gj"; gk: "an.gk"; gl: "an.gl"; gm: "an.gm"; gn: "an.gn"; go: "an.go"; gp: "an.gp"; gq: "an.gq"; gr: "an.gr"; gs: "an.gs"; gt: "an.gt"; gu: "an.gu"; gv: "an.gv"; gw: "an.gw"; gx: "an.gx"; gy: "an.gy"; gz: "an.gz"; ha: "an.ha"; hb: "an.hb"; hc: "an.hc"; hd: "an.hd"; he: "an.he"; hf: "an.hf"; hg: "an.hg"; hh: "an.hh"; hi: "an.hi"; hj: "an.hj"; hk: "an.hk"; hl: "an.hl"; hm: "an.hm"; hn: "an.hn"; ho: "an.ho"; hp: "an.hp"; hq: "an.hq"; hr: "an.hr"; hs: "an.hs"; ht: "an.ht"; hu: "an.hu"; hv: "an.hv"; hw: "an.hw"; hx: "an.hx"; hy: "an.hy"; hz: "an.hz"; ia: "an.ia"; ib: "an.ib"; ic: "an.ic"; id: "an.id"; ie: "an.ie"; if: "an.if"; ig: "an.ig"; ih: "an.ih"; ii: "an.ii"; ij: "an.ij"; ik: "an.ik"; il: "an.il"; im: "an.im"; in: "an.in"; io: "an.io"; ip: "an.ip"; iq: "an.iq"; ir: "an.ir"; is: "an.is"; it: "an.it"; iu: "an.iu"; iv: "an.iv"; iw: "an.iw"; ix: "an.ix"; iy: "an.iy"; iz: "an.iz"; ja: "an.ja"; jb: "an.jb"; jc: "an.jc"; jd: "an.jd"; je: "an.je"; jf: "an.jf"; jg: "an.jg"; jh: "an.jh"; ji: "an.ji"; jj: "an.jj"; jk: "an.jk"; jl: "an.jl"; jm: "an.jm"; jn: "an.jn"; jo: "an.jo"; jp: "an.jp"; jq: "an.jq"; jr: "an.jr"; js: "an.js"; jt: "an.jt"; ju: "an.ju"; jv: "an.jv"; jw: "an.jw"; jx: "an.jx"; jy: "an.jy"; jz: "an.jz"; ka: "an.ka"; kb: "an.kb"; kc: "an.kc"; kd: "an.kd"; ke: "an.ke"; kf: "an.kf"; kg: "an.kg"; kh: "an.kh"; ki: "an.ki"; kj: "an.kj"; kk: "an.kk"; kl: "an.kl"; km: "an.km"; kn: "an.kn"; ko: "an.ko"; kp: "an.kp"; kq: "an.kq"; kr: "an.kr"; ks: "an.ks"; kt: "an.kt"; ku: "an.ku"; kv: "an.kv"; kw: "an.kw"; kx: "an.kx"; ky: "an.ky"; kz: "an.kz"; la: "an.la"; lb: "an.lb"; lc: "an.lc"; ld: "an.ld"; le: "an.le"; lf: "an.lf"; lg: "an.lg"; lh: "an.lh"; li: "an.li"; lj: "an.lj"; lk: "an.lk"; ll: "an.ll"; lm: "an.lm"; ln: "an.ln"; lo: "an.lo"; lp: "an.lp"; lq: "an.lq"; lr: "an.lr"; ls: "an.ls"; lt: "an.lt"; lu: "an.lu"; lv: "an.lv"; lw: "an.lw"; lx: "an.lx"; ly: "an.ly"; lz: "an.lz"; ma: "an.ma"; mb: "an.mb"; mc: "an.mc"; md: "an.md"; me: "an.me"; mf: "an.mf"; mg: "an.mg"; mh: "an.mh"; mi: "an.mi"; mj: "an.mj"; mk: "an.mk"; ml: "an.ml"; mm: "an.mm"; mn: "an.mn"; mo: "an.mo"; mp: "an.mp"; mq: "an.mq"; mr: "an.mr"; ms: "an.ms"; mt: "an.mt"; mu: "an.mu"; mv: "an.mv"; mw: "an.mw"; mx: "an.mx"; my: "an.my"; mz: "an.mz"; na: "an.na"; nb: "an.nb"; nc: "an.nc"; nd: "an.nd"; ne: "an.ne"; nf: "an.nf"; ng: "an.ng"; nh: "an.nh"; ni: "an.ni"; nj: "an.nj"; nk: "an.nk"; nl: "an.nl"; nm: "an.nm"; nn: "an.nn"; no: "an.no"; np: "an.np"; nq: "an.nq"; nr: "an.nr"; ns: "an.ns"; nt: "an.nt"; nu: "an.nu"; nv: "an.nv"; nw: "an.nw"; nx: "an.nx"; ny: "an.ny"; nz: "an.nz"; oa: "an.oa"; ob: "an.ob"; oc: "an.oc"; od: "an.od"; oe: "an.oe"; of: "an.of"; og: "an.og"; oh: "an.oh"; oi: "an.oi"; oj: "an.oj"; ok: "an.ok"; ol: "an.ol"; om: "an.om"; on: "an.on"; oo: "an.oo"; op: "an.op"; oq: "an.oq"; or: "an.or"; os: "an.os"; ot: "an.ot"; ou: "an.ou"; ov: "an.ov"; ow: "an.ow"; ox: "an.ox"; oy: "an.oy"; oz: "an.oz"; pa: "an.pa"; pb: "an.pb"; pc: "an.pc"; pd: "an.pd"; pe: "an.pe"; pf: "an.pf"; pg: "an.pg"; ph: "an.ph"; pi: "an.pi"; pj: "an.pj"; pk: "an.pk"; pl: "an.pl"; pm: "an.pm"; pn: "an.pn"; po: "an.po"; pp: "an.pp"; pq: "an.pq"; pr: "an.pr"; ps: "an.ps"; pt: "an.pt"; pu: "an.pu"; pv: "an.pv"; pw: "an.pw"; px: "an.px"; py: "an.py"; pz: "an.pz"; qa: "an.qa"; qb: "an.qb"; qc: "an.qc"; qd: "an.qd"; qe: "an.qe"; qf: "an.qf"; qg: "an.qg"; qh: "an.qh"; qi: "an.qi"; qj: "an.qj"; qk: "an.qk"; ql: "an.ql"; qm: "an.qm"; qn: "an.qn"; qo: "an.qo"; qp: "an.qp"; qq: "an.qq"; qr: "an.qr"; qs: "an.qs"; qt: "an.qt"; qu: "an.qu"; qv: "an.qv"; qw: "an.qw"; qx: "an.qx"; qy: "an.qy"; qz: "an.qz"; ra: "an.ra"; rb: "an.rb"; rc: "an.rc"; rd: "an.rd"; re: "an.re"; rf: "an.rf"; rg: "an.rg"; rh: "an.rh"; ri: "an.ri"; rj: "an.rj"; rk: "an.rk"; rl: "an.rl"; rm: "an.rm"; rn: "an.rn"; ro: "an.ro"; rp: "an.rp"; rq: "an.rq"; rr: "an.rr"; rs: "an.rs"; rt: "an.rt"; ru: "an.ru"; rv: "an.rv"; rw: "an.rw"; rx: "an.rx"; ry: "an.ry"; rz: "an.rz"; sa: "an.sa"; sb: "an.sb"; sc: "an.sc"; sd: "an.sd"; se: "an.se"; sf: "an.sf"; sg: "an.sg"; sh: "an.sh"; si: "an.si"; sj: "an.sj"; sk: "an.sk"; sl: "an.sl"; sm: "an.sm"; sn: "an.sn"; so: "an.so"; sp: "an.sp"; sq: "an.sq"; sr: "an.sr"; ss: "an.ss"; st: "an.st"; su: "an.su"; sv: "an.sv"; sw: "an.sw"; sx: "an.sx"; sy: "an.sy"; sz: "an.sz"; ta: "an.ta"; tb: "an.tb"; tc: "an.tc"; td: "an.td"; te: "an.te"; tf: "an.tf"; tg: "an.tg"; th: "an.th"; ti: "an.ti"; tj: "an.tj"; tk: "an.tk"; tl: "an.tl"; tm: "an.tm"; tn: "an.tn"; to: "an.to"; tp: "an.tp"; tq: "an.tq"; tr: "an.tr"; ts: "an.ts"; tt: "an.tt"; tu: "an.tu"; tv: "an.tv"; tw: "an.tw"; tx: "an.tx"; ty: "an.ty"; tz: "an.tz"; ua: "an.ua"; ub: "an.ub"; uc: "an.uc"; ud: "an.ud"; ue: "an.ue"; uf: "an.uf"; ug: "an.ug"; uh: "an.uh"; ui: "an.ui"; uj: "an.uj"; uk: "an.uk"; ul: "an.ul"; um: "an.um"; un: "an.un"; uo: "an.uo"; up: "an.up"; uq: "an.uq"; ur: "an.ur"; us: "an.us"; ut: "an.ut"; uu: "an.uu"; uv: "an.uv"; uw: "an.uw"; ux: "an.ux"; uy: "an.uy"; uz: "an.uz"; va: "an.va"; vb: "an.vb"; vc: "an.vc"; vd: "an.vd"; ve: "an.ve"; vf: "an.vf"; vg: "an.vg"; vh: "an.vh"; vi: "an.vi"; vj: "an.vj"; vk: "an.vk"; vl: "an.vl"; vm: "an.vm"; vn: "an.vn"; vo: "an.vo"; vp: "an.vp"; vq: "an.vq"; vr: "an.vr"; vs: "an.vs"; vt: "an.vt"; vu: "an.vu"; vv: "an.vv"; vw: "an.vw"; vx: "an.vx"; vy: "an.vy"; vz: "an.vz"; wa: "an.wa"; wb: "an.wb"; wc: "an.wc"; wd: "an.wd"; we: "an.we"; wf: "an.wf"; wg: "an.wg"; wh: "an.wh"; wi: "an.wi"; wj: "an.wj"; wk: "an.wk"; wl: "an.wl"; wm: "an.wm"; wn: "an.wn"; wo: "an.wo"; wp: "an.wp"; wq: "an.wq"; wr: "an.wr"; ws: "an.ws"; wt: "an.wt"; wu: "an.wu"; wv: "an.wv"; ww: "an.ww"; wx: "an.wx"; wy: "an.wy"; wz: "an.wz"; xa: "an.xa"; xb: "an.xb"; xc: "an.xc"; xd: "an.xd"; xe: "an.xe"; xf: "an.xf"; xg: "an.xg"; xh: "an.xh"; xi: "an.xi"; xj: "an.xj"; xk: "an.xk"; xl: "an.xl"; xm: "an.xm"; xn: "an.xn"; xo: "an.xo"; xp: "an.xp"; xq: "an.xq"; xr: "an.xr"; xs: "an.xs"; xt: "an.xt"; xu: "an.xu"; xv: "an.xv"; xw: "an.xw"; xx: "an.xx"; xy: "an.xy"; xz: "an.xz"; ya: "an.ya"; yb: "an.yb"; yc: "an.yc"; yd: "an.yd"; ye: "an.ye"; yf: "an.yf"; yg: "an.yg"; yh: "an.yh"; yi: "an.yi"; yj: "an.yj"; yk: "an.yk"; yl: "an.yl"; ym: "an.ym"; yn: "an.yn"; yo: "an.yo"; yp: "an.yp"; yq: "an.yq"; yr: "an.yr"; ys: "an.ys"; yt: "an.yt"; yu: "an.yu"; yv: "an.yv"; yw: "an.yw"; yx: "an.yx"; yy: "an.yy"; yz: "an.yz"; za: "an.za"; zb: "an.zb"; zc: "an.zc"; zd: "an.zd"; ze: "an.ze"; zf: "an.zf"; zg: "an.zg"; zh: "an.zh"; zi: "an.zi"; zj: "an.zj"; zk: "an.zk"; zl: "an.zl"; zm: "an.zm"; zn: "an.zn"; zo: "an.zo"; zp: "an.zp"; zq: "an.zq"; zr: "an.zr"; zs: "an.zs"; zt: "an.zt"; zu: "an.zu"; zv: "an.zv"; zw: "an.zw"; zx: "an.zx"; zy: "an.zy"; zz: "an.zz"; }; ao: { aa: "ao.aa"; ab: "ao.ab"; ac: "ao.ac"; ad: "ao.ad"; ae: "ao.ae"; af: "ao.af"; ag: "ao.ag"; ah: "ao.ah"; ai: "ao.ai"; aj: "ao.aj"; ak: "ao.ak"; al: "ao.al"; am: "ao.am"; an: "ao.an"; ao: "ao.ao"; ap: "ao.ap"; aq: "ao.aq"; ar: "ao.ar"; as: "ao.as"; at: "ao.at"; au: "ao.au"; av: "ao.av"; aw: "ao.aw"; ax: "ao.ax"; ay: "ao.ay"; az: "ao.az"; ba: "ao.ba"; bb: "ao.bb"; bc: "ao.bc"; bd: "ao.bd"; be: "ao.be"; bf: "ao.bf"; bg: "ao.bg"; bh: "ao.bh"; bi: "ao.bi"; bj: "ao.bj"; bk: "ao.bk"; bl: "ao.bl"; bm: "ao.bm"; bn: "ao.bn"; bo: "ao.bo"; bp: "ao.bp"; bq: "ao.bq"; br: "ao.br"; bs: "ao.bs"; bt: "ao.bt"; bu: "ao.bu"; bv: "ao.bv"; bw: "ao.bw"; bx: "ao.bx"; by: "ao.by"; bz: "ao.bz"; ca: "ao.ca"; cb: "ao.cb"; cc: "ao.cc"; cd: "ao.cd"; ce: "ao.ce"; cf: "ao.cf"; cg: "ao.cg"; ch: "ao.ch"; ci: "ao.ci"; cj: "ao.cj"; ck: "ao.ck"; cl: "ao.cl"; cm: "ao.cm"; cn: "ao.cn"; co: "ao.co"; cp: "ao.cp"; cq: "ao.cq"; cr: "ao.cr"; cs: "ao.cs"; ct: "ao.ct"; cu: "ao.cu"; cv: "ao.cv"; cw: "ao.cw"; cx: "ao.cx"; cy: "ao.cy"; cz: "ao.cz"; da: "ao.da"; db: "ao.db"; dc: "ao.dc"; dd: "ao.dd"; de: "ao.de"; df: "ao.df"; dg: "ao.dg"; dh: "ao.dh"; di: "ao.di"; dj: "ao.dj"; dk: "ao.dk"; dl: "ao.dl"; dm: "ao.dm"; dn: "ao.dn"; do: "ao.do"; dp: "ao.dp"; dq: "ao.dq"; dr: "ao.dr"; ds: "ao.ds"; dt: "ao.dt"; du: "ao.du"; dv: "ao.dv"; dw: "ao.dw"; dx: "ao.dx"; dy: "ao.dy"; dz: "ao.dz"; ea: "ao.ea"; eb: "ao.eb"; ec: "ao.ec"; ed: "ao.ed"; ee: "ao.ee"; ef: "ao.ef"; eg: "ao.eg"; eh: "ao.eh"; ei: "ao.ei"; ej: "ao.ej"; ek: "ao.ek"; el: "ao.el"; em: "ao.em"; en: "ao.en"; eo: "ao.eo"; ep: "ao.ep"; eq: "ao.eq"; er: "ao.er"; es: "ao.es"; et: "ao.et"; eu: "ao.eu"; ev: "ao.ev"; ew: "ao.ew"; ex: "ao.ex"; ey: "ao.ey"; ez: "ao.ez"; fa: "ao.fa"; fb: "ao.fb"; fc: "ao.fc"; fd: "ao.fd"; fe: "ao.fe"; ff: "ao.ff"; fg: "ao.fg"; fh: "ao.fh"; fi: "ao.fi"; fj: "ao.fj"; fk: "ao.fk"; fl: "ao.fl"; fm: "ao.fm"; fn: "ao.fn"; fo: "ao.fo"; fp: "ao.fp"; fq: "ao.fq"; fr: "ao.fr"; fs: "ao.fs"; ft: "ao.ft"; fu: "ao.fu"; fv: "ao.fv"; fw: "ao.fw"; fx: "ao.fx"; fy: "ao.fy"; fz: "ao.fz"; ga: "ao.ga"; gb: "ao.gb"; gc: "ao.gc"; gd: "ao.gd"; ge: "ao.ge"; gf: "ao.gf"; gg: "ao.gg"; gh: "ao.gh"; gi: "ao.gi"; gj: "ao.gj"; gk: "ao.gk"; gl: "ao.gl"; gm: "ao.gm"; gn: "ao.gn"; go: "ao.go"; gp: "ao.gp"; gq: "ao.gq"; gr: "ao.gr"; gs: "ao.gs"; gt: "ao.gt"; gu: "ao.gu"; gv: "ao.gv"; gw: "ao.gw"; gx: "ao.gx"; gy: "ao.gy"; gz: "ao.gz"; ha: "ao.ha"; hb: "ao.hb"; hc: "ao.hc"; hd: "ao.hd"; he: "ao.he"; hf: "ao.hf"; hg: "ao.hg"; hh: "ao.hh"; hi: "ao.hi"; hj: "ao.hj"; hk: "ao.hk"; hl: "ao.hl"; hm: "ao.hm"; hn: "ao.hn"; ho: "ao.ho"; hp: "ao.hp"; hq: "ao.hq"; hr: "ao.hr"; hs: "ao.hs"; ht: "ao.ht"; hu: "ao.hu"; hv: "ao.hv"; hw: "ao.hw"; hx: "ao.hx"; hy: "ao.hy"; hz: "ao.hz"; ia: "ao.ia"; ib: "ao.ib"; ic: "ao.ic"; id: "ao.id"; ie: "ao.ie"; if: "ao.if"; ig: "ao.ig"; ih: "ao.ih"; ii: "ao.ii"; ij: "ao.ij"; ik: "ao.ik"; il: "ao.il"; im: "ao.im"; in: "ao.in"; io: "ao.io"; ip: "ao.ip"; iq: "ao.iq"; ir: "ao.ir"; is: "ao.is"; it: "ao.it"; iu: "ao.iu"; iv: "ao.iv"; iw: "ao.iw"; ix: "ao.ix"; iy: "ao.iy"; iz: "ao.iz"; ja: "ao.ja"; jb: "ao.jb"; jc: "ao.jc"; jd: "ao.jd"; je: "ao.je"; jf: "ao.jf"; jg: "ao.jg"; jh: "ao.jh"; ji: "ao.ji"; jj: "ao.jj"; jk: "ao.jk"; jl: "ao.jl"; jm: "ao.jm"; jn: "ao.jn"; jo: "ao.jo"; jp: "ao.jp"; jq: "ao.jq"; jr: "ao.jr"; js: "ao.js"; jt: "ao.jt"; ju: "ao.ju"; jv: "ao.jv"; jw: "ao.jw"; jx: "ao.jx"; jy: "ao.jy"; jz: "ao.jz"; ka: "ao.ka"; kb: "ao.kb"; kc: "ao.kc"; kd: "ao.kd"; ke: "ao.ke"; kf: "ao.kf"; kg: "ao.kg"; kh: "ao.kh"; ki: "ao.ki"; kj: "ao.kj"; kk: "ao.kk"; kl: "ao.kl"; km: "ao.km"; kn: "ao.kn"; ko: "ao.ko"; kp: "ao.kp"; kq: "ao.kq"; kr: "ao.kr"; ks: "ao.ks"; kt: "ao.kt"; ku: "ao.ku"; kv: "ao.kv"; kw: "ao.kw"; kx: "ao.kx"; ky: "ao.ky"; kz: "ao.kz"; la: "ao.la"; lb: "ao.lb"; lc: "ao.lc"; ld: "ao.ld"; le: "ao.le"; lf: "ao.lf"; lg: "ao.lg"; lh: "ao.lh"; li: "ao.li"; lj: "ao.lj"; lk: "ao.lk"; ll: "ao.ll"; lm: "ao.lm"; ln: "ao.ln"; lo: "ao.lo"; lp: "ao.lp"; lq: "ao.lq"; lr: "ao.lr"; ls: "ao.ls"; lt: "ao.lt"; lu: "ao.lu"; lv: "ao.lv"; lw: "ao.lw"; lx: "ao.lx"; ly: "ao.ly"; lz: "ao.lz"; ma: "ao.ma"; mb: "ao.mb"; mc: "ao.mc"; md: "ao.md"; me: "ao.me"; mf: "ao.mf"; mg: "ao.mg"; mh: "ao.mh"; mi: "ao.mi"; mj: "ao.mj"; mk: "ao.mk"; ml: "ao.ml"; mm: "ao.mm"; mn: "ao.mn"; mo: "ao.mo"; mp: "ao.mp"; mq: "ao.mq"; mr: "ao.mr"; ms: "ao.ms"; mt: "ao.mt"; mu: "ao.mu"; mv: "ao.mv"; mw: "ao.mw"; mx: "ao.mx"; my: "ao.my"; mz: "ao.mz"; na: "ao.na"; nb: "ao.nb"; nc: "ao.nc"; nd: "ao.nd"; ne: "ao.ne"; nf: "ao.nf"; ng: "ao.ng"; nh: "ao.nh"; ni: "ao.ni"; nj: "ao.nj"; nk: "ao.nk"; nl: "ao.nl"; nm: "ao.nm"; nn: "ao.nn"; no: "ao.no"; np: "ao.np"; nq: "ao.nq"; nr: "ao.nr"; ns: "ao.ns"; nt: "ao.nt"; nu: "ao.nu"; nv: "ao.nv"; nw: "ao.nw"; nx: "ao.nx"; ny: "ao.ny"; nz: "ao.nz"; oa: "ao.oa"; ob: "ao.ob"; oc: "ao.oc"; od: "ao.od"; oe: "ao.oe"; of: "ao.of"; og: "ao.og"; oh: "ao.oh"; oi: "ao.oi"; oj: "ao.oj"; ok: "ao.ok"; ol: "ao.ol"; om: "ao.om"; on: "ao.on"; oo: "ao.oo"; op: "ao.op"; oq: "ao.oq"; or: "ao.or"; os: "ao.os"; ot: "ao.ot"; ou: "ao.ou"; ov: "ao.ov"; ow: "ao.ow"; ox: "ao.ox"; oy: "ao.oy"; oz: "ao.oz"; pa: "ao.pa"; pb: "ao.pb"; pc: "ao.pc"; pd: "ao.pd"; pe: "ao.pe"; pf: "ao.pf"; pg: "ao.pg"; ph: "ao.ph"; pi: "ao.pi"; pj: "ao.pj"; pk: "ao.pk"; pl: "ao.pl"; pm: "ao.pm"; pn: "ao.pn"; po: "ao.po"; pp: "ao.pp"; pq: "ao.pq"; pr: "ao.pr"; ps: "ao.ps"; pt: "ao.pt"; pu: "ao.pu"; pv: "ao.pv"; pw: "ao.pw"; px: "ao.px"; py: "ao.py"; pz: "ao.pz"; qa: "ao.qa"; qb: "ao.qb"; qc: "ao.qc"; qd: "ao.qd"; qe: "ao.qe"; qf: "ao.qf"; qg: "ao.qg"; qh: "ao.qh"; qi: "ao.qi"; qj: "ao.qj"; qk: "ao.qk"; ql: "ao.ql"; qm: "ao.qm"; qn: "ao.qn"; qo: "ao.qo"; qp: "ao.qp"; qq: "ao.qq"; qr: "ao.qr"; qs: "ao.qs"; qt: "ao.qt"; qu: "ao.qu"; qv: "ao.qv"; qw: "ao.qw"; qx: "ao.qx"; qy: "ao.qy"; qz: "ao.qz"; ra: "ao.ra"; rb: "ao.rb"; rc: "ao.rc"; rd: "ao.rd"; re: "ao.re"; rf: "ao.rf"; rg: "ao.rg"; rh: "ao.rh"; ri: "ao.ri"; rj: "ao.rj"; rk: "ao.rk"; rl: "ao.rl"; rm: "ao.rm"; rn: "ao.rn"; ro: "ao.ro"; rp: "ao.rp"; rq: "ao.rq"; rr: "ao.rr"; rs: "ao.rs"; rt: "ao.rt"; ru: "ao.ru"; rv: "ao.rv"; rw: "ao.rw"; rx: "ao.rx"; ry: "ao.ry"; rz: "ao.rz"; sa: "ao.sa"; sb: "ao.sb"; sc: "ao.sc"; sd: "ao.sd"; se: "ao.se"; sf: "ao.sf"; sg: "ao.sg"; sh: "ao.sh"; si: "ao.si"; sj: "ao.sj"; sk: "ao.sk"; sl: "ao.sl"; sm: "ao.sm"; sn: "ao.sn"; so: "ao.so"; sp: "ao.sp"; sq: "ao.sq"; sr: "ao.sr"; ss: "ao.ss"; st: "ao.st"; su: "ao.su"; sv: "ao.sv"; sw: "ao.sw"; sx: "ao.sx"; sy: "ao.sy"; sz: "ao.sz"; ta: "ao.ta"; tb: "ao.tb"; tc: "ao.tc"; td: "ao.td"; te: "ao.te"; tf: "ao.tf"; tg: "ao.tg"; th: "ao.th"; ti: "ao.ti"; tj: "ao.tj"; tk: "ao.tk"; tl: "ao.tl"; tm: "ao.tm"; tn: "ao.tn"; to: "ao.to"; tp: "ao.tp"; tq: "ao.tq"; tr: "ao.tr"; ts: "ao.ts"; tt: "ao.tt"; tu: "ao.tu"; tv: "ao.tv"; tw: "ao.tw"; tx: "ao.tx"; ty: "ao.ty"; tz: "ao.tz"; ua: "ao.ua"; ub: "ao.ub"; uc: "ao.uc"; ud: "ao.ud"; ue: "ao.ue"; uf: "ao.uf"; ug: "ao.ug"; uh: "ao.uh"; ui: "ao.ui"; uj: "ao.uj"; uk: "ao.uk"; ul: "ao.ul"; um: "ao.um"; un: "ao.un"; uo: "ao.uo"; up: "ao.up"; uq: "ao.uq"; ur: "ao.ur"; us: "ao.us"; ut: "ao.ut"; uu: "ao.uu"; uv: "ao.uv"; uw: "ao.uw"; ux: "ao.ux"; uy: "ao.uy"; uz: "ao.uz"; va: "ao.va"; vb: "ao.vb"; vc: "ao.vc"; vd: "ao.vd"; ve: "ao.ve"; vf: "ao.vf"; vg: "ao.vg"; vh: "ao.vh"; vi: "ao.vi"; vj: "ao.vj"; vk: "ao.vk"; vl: "ao.vl"; vm: "ao.vm"; vn: "ao.vn"; vo: "ao.vo"; vp: "ao.vp"; vq: "ao.vq"; vr: "ao.vr"; vs: "ao.vs"; vt: "ao.vt"; vu: "ao.vu"; vv: "ao.vv"; vw: "ao.vw"; vx: "ao.vx"; vy: "ao.vy"; vz: "ao.vz"; wa: "ao.wa"; wb: "ao.wb"; wc: "ao.wc"; wd: "ao.wd"; we: "ao.we"; wf: "ao.wf"; wg: "ao.wg"; wh: "ao.wh"; wi: "ao.wi"; wj: "ao.wj"; wk: "ao.wk"; wl: "ao.wl"; wm: "ao.wm"; wn: "ao.wn"; wo: "ao.wo"; wp: "ao.wp"; wq: "ao.wq"; wr: "ao.wr"; ws: "ao.ws"; wt: "ao.wt"; wu: "ao.wu"; wv: "ao.wv"; ww: "ao.ww"; wx: "ao.wx"; wy: "ao.wy"; wz: "ao.wz"; xa: "ao.xa"; xb: "ao.xb"; xc: "ao.xc"; xd: "ao.xd"; xe: "ao.xe"; xf: "ao.xf"; xg: "ao.xg"; xh: "ao.xh"; xi: "ao.xi"; xj: "ao.xj"; xk: "ao.xk"; xl: "ao.xl"; xm: "ao.xm"; xn: "ao.xn"; xo: "ao.xo"; xp: "ao.xp"; xq: "ao.xq"; xr: "ao.xr"; xs: "ao.xs"; xt: "ao.xt"; xu: "ao.xu"; xv: "ao.xv"; xw: "ao.xw"; xx: "ao.xx"; xy: "ao.xy"; xz: "ao.xz"; ya: "ao.ya"; yb: "ao.yb"; yc: "ao.yc"; yd: "ao.yd"; ye: "ao.ye"; yf: "ao.yf"; yg: "ao.yg"; yh: "ao.yh"; yi: "ao.yi"; yj: "ao.yj"; yk: "ao.yk"; yl: "ao.yl"; ym: "ao.ym"; yn: "ao.yn"; yo: "ao.yo"; yp: "ao.yp"; yq: "ao.yq"; yr: "ao.yr"; ys: "ao.ys"; yt: "ao.yt"; yu: "ao.yu"; yv: "ao.yv"; yw: "ao.yw"; yx: "ao.yx"; yy: "ao.yy"; yz: "ao.yz"; za: "ao.za"; zb: "ao.zb"; zc: "ao.zc"; zd: "ao.zd"; ze: "ao.ze"; zf: "ao.zf"; zg: "ao.zg"; zh: "ao.zh"; zi: "ao.zi"; zj: "ao.zj"; zk: "ao.zk"; zl: "ao.zl"; zm: "ao.zm"; zn: "ao.zn"; zo: "ao.zo"; zp: "ao.zp"; zq: "ao.zq"; zr: "ao.zr"; zs: "ao.zs"; zt: "ao.zt"; zu: "ao.zu"; zv: "ao.zv"; zw: "ao.zw"; zx: "ao.zx"; zy: "ao.zy"; zz: "ao.zz"; }; ap: { aa: "ap.aa"; ab: "ap.ab"; ac: "ap.ac"; ad: "ap.ad"; ae: "ap.ae"; af: "ap.af"; ag: "ap.ag"; ah: "ap.ah"; ai: "ap.ai"; aj: "ap.aj"; ak: "ap.ak"; al: "ap.al"; am: "ap.am"; an: "ap.an"; ao: "ap.ao"; ap: "ap.ap"; aq: "ap.aq"; ar: "ap.ar"; as: "ap.as"; at: "ap.at"; au: "ap.au"; av: "ap.av"; aw: "ap.aw"; ax: "ap.ax"; ay: "ap.ay"; az: "ap.az"; ba: "ap.ba"; bb: "ap.bb"; bc: "ap.bc"; bd: "ap.bd"; be: "ap.be"; bf: "ap.bf"; bg: "ap.bg"; bh: "ap.bh"; bi: "ap.bi"; bj: "ap.bj"; bk: "ap.bk"; bl: "ap.bl"; bm: "ap.bm"; bn: "ap.bn"; bo: "ap.bo"; bp: "ap.bp"; bq: "ap.bq"; br: "ap.br"; bs: "ap.bs"; bt: "ap.bt"; bu: "ap.bu"; bv: "ap.bv"; bw: "ap.bw"; bx: "ap.bx"; by: "ap.by"; bz: "ap.bz"; ca: "ap.ca"; cb: "ap.cb"; cc: "ap.cc"; cd: "ap.cd"; ce: "ap.ce"; cf: "ap.cf"; cg: "ap.cg"; ch: "ap.ch"; ci: "ap.ci"; cj: "ap.cj"; ck: "ap.ck"; cl: "ap.cl"; cm: "ap.cm"; cn: "ap.cn"; co: "ap.co"; cp: "ap.cp"; cq: "ap.cq"; cr: "ap.cr"; cs: "ap.cs"; ct: "ap.ct"; cu: "ap.cu"; cv: "ap.cv"; cw: "ap.cw"; cx: "ap.cx"; cy: "ap.cy"; cz: "ap.cz"; da: "ap.da"; db: "ap.db"; dc: "ap.dc"; dd: "ap.dd"; de: "ap.de"; df: "ap.df"; dg: "ap.dg"; dh: "ap.dh"; di: "ap.di"; dj: "ap.dj"; dk: "ap.dk"; dl: "ap.dl"; dm: "ap.dm"; dn: "ap.dn"; do: "ap.do"; dp: "ap.dp"; dq: "ap.dq"; dr: "ap.dr"; ds: "ap.ds"; dt: "ap.dt"; du: "ap.du"; dv: "ap.dv"; dw: "ap.dw"; dx: "ap.dx"; dy: "ap.dy"; dz: "ap.dz"; ea: "ap.ea"; eb: "ap.eb"; ec: "ap.ec"; ed: "ap.ed"; ee: "ap.ee"; ef: "ap.ef"; eg: "ap.eg"; eh: "ap.eh"; ei: "ap.ei"; ej: "ap.ej"; ek: "ap.ek"; el: "ap.el"; em: "ap.em"; en: "ap.en"; eo: "ap.eo"; ep: "ap.ep"; eq: "ap.eq"; er: "ap.er"; es: "ap.es"; et: "ap.et"; eu: "ap.eu"; ev: "ap.ev"; ew: "ap.ew"; ex: "ap.ex"; ey: "ap.ey"; ez: "ap.ez"; fa: "ap.fa"; fb: "ap.fb"; fc: "ap.fc"; fd: "ap.fd"; fe: "ap.fe"; ff: "ap.ff"; fg: "ap.fg"; fh: "ap.fh"; fi: "ap.fi"; fj: "ap.fj"; fk: "ap.fk"; fl: "ap.fl"; fm: "ap.fm"; fn: "ap.fn"; fo: "ap.fo"; fp: "ap.fp"; fq: "ap.fq"; fr: "ap.fr"; fs: "ap.fs"; ft: "ap.ft"; fu: "ap.fu"; fv: "ap.fv"; fw: "ap.fw"; fx: "ap.fx"; fy: "ap.fy"; fz: "ap.fz"; ga: "ap.ga"; gb: "ap.gb"; gc: "ap.gc"; gd: "ap.gd"; ge: "ap.ge"; gf: "ap.gf"; gg: "ap.gg"; gh: "ap.gh"; gi: "ap.gi"; gj: "ap.gj"; gk: "ap.gk"; gl: "ap.gl"; gm: "ap.gm"; gn: "ap.gn"; go: "ap.go"; gp: "ap.gp"; gq: "ap.gq"; gr: "ap.gr"; gs: "ap.gs"; gt: "ap.gt"; gu: "ap.gu"; gv: "ap.gv"; gw: "ap.gw"; gx: "ap.gx"; gy: "ap.gy"; gz: "ap.gz"; ha: "ap.ha"; hb: "ap.hb"; hc: "ap.hc"; hd: "ap.hd"; he: "ap.he"; hf: "ap.hf"; hg: "ap.hg"; hh: "ap.hh"; hi: "ap.hi"; hj: "ap.hj"; hk: "ap.hk"; hl: "ap.hl"; hm: "ap.hm"; hn: "ap.hn"; ho: "ap.ho"; hp: "ap.hp"; hq: "ap.hq"; hr: "ap.hr"; hs: "ap.hs"; ht: "ap.ht"; hu: "ap.hu"; hv: "ap.hv"; hw: "ap.hw"; hx: "ap.hx"; hy: "ap.hy"; hz: "ap.hz"; ia: "ap.ia"; ib: "ap.ib"; ic: "ap.ic"; id: "ap.id"; ie: "ap.ie"; if: "ap.if"; ig: "ap.ig"; ih: "ap.ih"; ii: "ap.ii"; ij: "ap.ij"; ik: "ap.ik"; il: "ap.il"; im: "ap.im"; in: "ap.in"; io: "ap.io"; ip: "ap.ip"; iq: "ap.iq"; ir: "ap.ir"; is: "ap.is"; it: "ap.it"; iu: "ap.iu"; iv: "ap.iv"; iw: "ap.iw"; ix: "ap.ix"; iy: "ap.iy"; iz: "ap.iz"; ja: "ap.ja"; jb: "ap.jb"; jc: "ap.jc"; jd: "ap.jd"; je: "ap.je"; jf: "ap.jf"; jg: "ap.jg"; jh: "ap.jh"; ji: "ap.ji"; jj: "ap.jj"; jk: "ap.jk"; jl: "ap.jl"; jm: "ap.jm"; jn: "ap.jn"; jo: "ap.jo"; jp: "ap.jp"; jq: "ap.jq"; jr: "ap.jr"; js: "ap.js"; jt: "ap.jt"; ju: "ap.ju"; jv: "ap.jv"; jw: "ap.jw"; jx: "ap.jx"; jy: "ap.jy"; jz: "ap.jz"; ka: "ap.ka"; kb: "ap.kb"; kc: "ap.kc"; kd: "ap.kd"; ke: "ap.ke"; kf: "ap.kf"; kg: "ap.kg"; kh: "ap.kh"; ki: "ap.ki"; kj: "ap.kj"; kk: "ap.kk"; kl: "ap.kl"; km: "ap.km"; kn: "ap.kn"; ko: "ap.ko"; kp: "ap.kp"; kq: "ap.kq"; kr: "ap.kr"; ks: "ap.ks"; kt: "ap.kt"; ku: "ap.ku"; kv: "ap.kv"; kw: "ap.kw"; kx: "ap.kx"; ky: "ap.ky"; kz: "ap.kz"; la: "ap.la"; lb: "ap.lb"; lc: "ap.lc"; ld: "ap.ld"; le: "ap.le"; lf: "ap.lf"; lg: "ap.lg"; lh: "ap.lh"; li: "ap.li"; lj: "ap.lj"; lk: "ap.lk"; ll: "ap.ll"; lm: "ap.lm"; ln: "ap.ln"; lo: "ap.lo"; lp: "ap.lp"; lq: "ap.lq"; lr: "ap.lr"; ls: "ap.ls"; lt: "ap.lt"; lu: "ap.lu"; lv: "ap.lv"; lw: "ap.lw"; lx: "ap.lx"; ly: "ap.ly"; lz: "ap.lz"; ma: "ap.ma"; mb: "ap.mb"; mc: "ap.mc"; md: "ap.md"; me: "ap.me"; mf: "ap.mf"; mg: "ap.mg"; mh: "ap.mh"; mi: "ap.mi"; mj: "ap.mj"; mk: "ap.mk"; ml: "ap.ml"; mm: "ap.mm"; mn: "ap.mn"; mo: "ap.mo"; mp: "ap.mp"; mq: "ap.mq"; mr: "ap.mr"; ms: "ap.ms"; mt: "ap.mt"; mu: "ap.mu"; mv: "ap.mv"; mw: "ap.mw"; mx: "ap.mx"; my: "ap.my"; mz: "ap.mz"; na: "ap.na"; nb: "ap.nb"; nc: "ap.nc"; nd: "ap.nd"; ne: "ap.ne"; nf: "ap.nf"; ng: "ap.ng"; nh: "ap.nh"; ni: "ap.ni"; nj: "ap.nj"; nk: "ap.nk"; nl: "ap.nl"; nm: "ap.nm"; nn: "ap.nn"; no: "ap.no"; np: "ap.np"; nq: "ap.nq"; nr: "ap.nr"; ns: "ap.ns"; nt: "ap.nt"; nu: "ap.nu"; nv: "ap.nv"; nw: "ap.nw"; nx: "ap.nx"; ny: "ap.ny"; nz: "ap.nz"; oa: "ap.oa"; ob: "ap.ob"; oc: "ap.oc"; od: "ap.od"; oe: "ap.oe"; of: "ap.of"; og: "ap.og"; oh: "ap.oh"; oi: "ap.oi"; oj: "ap.oj"; ok: "ap.ok"; ol: "ap.ol"; om: "ap.om"; on: "ap.on"; oo: "ap.oo"; op: "ap.op"; oq: "ap.oq"; or: "ap.or"; os: "ap.os"; ot: "ap.ot"; ou: "ap.ou"; ov: "ap.ov"; ow: "ap.ow"; ox: "ap.ox"; oy: "ap.oy"; oz: "ap.oz"; pa: "ap.pa"; pb: "ap.pb"; pc: "ap.pc"; pd: "ap.pd"; pe: "ap.pe"; pf: "ap.pf"; pg: "ap.pg"; ph: "ap.ph"; pi: "ap.pi"; pj: "ap.pj"; pk: "ap.pk"; pl: "ap.pl"; pm: "ap.pm"; pn: "ap.pn"; po: "ap.po"; pp: "ap.pp"; pq: "ap.pq"; pr: "ap.pr"; ps: "ap.ps"; pt: "ap.pt"; pu: "ap.pu"; pv: "ap.pv"; pw: "ap.pw"; px: "ap.px"; py: "ap.py"; pz: "ap.pz"; qa: "ap.qa"; qb: "ap.qb"; qc: "ap.qc"; qd: "ap.qd"; qe: "ap.qe"; qf: "ap.qf"; qg: "ap.qg"; qh: "ap.qh"; qi: "ap.qi"; qj: "ap.qj"; qk: "ap.qk"; ql: "ap.ql"; qm: "ap.qm"; qn: "ap.qn"; qo: "ap.qo"; qp: "ap.qp"; qq: "ap.qq"; qr: "ap.qr"; qs: "ap.qs"; qt: "ap.qt"; qu: "ap.qu"; qv: "ap.qv"; qw: "ap.qw"; qx: "ap.qx"; qy: "ap.qy"; qz: "ap.qz"; ra: "ap.ra"; rb: "ap.rb"; rc: "ap.rc"; rd: "ap.rd"; re: "ap.re"; rf: "ap.rf"; rg: "ap.rg"; rh: "ap.rh"; ri: "ap.ri"; rj: "ap.rj"; rk: "ap.rk"; rl: "ap.rl"; rm: "ap.rm"; rn: "ap.rn"; ro: "ap.ro"; rp: "ap.rp"; rq: "ap.rq"; rr: "ap.rr"; rs: "ap.rs"; rt: "ap.rt"; ru: "ap.ru"; rv: "ap.rv"; rw: "ap.rw"; rx: "ap.rx"; ry: "ap.ry"; rz: "ap.rz"; sa: "ap.sa"; sb: "ap.sb"; sc: "ap.sc"; sd: "ap.sd"; se: "ap.se"; sf: "ap.sf"; sg: "ap.sg"; sh: "ap.sh"; si: "ap.si"; sj: "ap.sj"; sk: "ap.sk"; sl: "ap.sl"; sm: "ap.sm"; sn: "ap.sn"; so: "ap.so"; sp: "ap.sp"; sq: "ap.sq"; sr: "ap.sr"; ss: "ap.ss"; st: "ap.st"; su: "ap.su"; sv: "ap.sv"; sw: "ap.sw"; sx: "ap.sx"; sy: "ap.sy"; sz: "ap.sz"; ta: "ap.ta"; tb: "ap.tb"; tc: "ap.tc"; td: "ap.td"; te: "ap.te"; tf: "ap.tf"; tg: "ap.tg"; th: "ap.th"; ti: "ap.ti"; tj: "ap.tj"; tk: "ap.tk"; tl: "ap.tl"; tm: "ap.tm"; tn: "ap.tn"; to: "ap.to"; tp: "ap.tp"; tq: "ap.tq"; tr: "ap.tr"; ts: "ap.ts"; tt: "ap.tt"; tu: "ap.tu"; tv: "ap.tv"; tw: "ap.tw"; tx: "ap.tx"; ty: "ap.ty"; tz: "ap.tz"; ua: "ap.ua"; ub: "ap.ub"; uc: "ap.uc"; ud: "ap.ud"; ue: "ap.ue"; uf: "ap.uf"; ug: "ap.ug"; uh: "ap.uh"; ui: "ap.ui"; uj: "ap.uj"; uk: "ap.uk"; ul: "ap.ul"; um: "ap.um"; un: "ap.un"; uo: "ap.uo"; up: "ap.up"; uq: "ap.uq"; ur: "ap.ur"; us: "ap.us"; ut: "ap.ut"; uu: "ap.uu"; uv: "ap.uv"; uw: "ap.uw"; ux: "ap.ux"; uy: "ap.uy"; uz: "ap.uz"; va: "ap.va"; vb: "ap.vb"; vc: "ap.vc"; vd: "ap.vd"; ve: "ap.ve"; vf: "ap.vf"; vg: "ap.vg"; vh: "ap.vh"; vi: "ap.vi"; vj: "ap.vj"; vk: "ap.vk"; vl: "ap.vl"; vm: "ap.vm"; vn: "ap.vn"; vo: "ap.vo"; vp: "ap.vp"; vq: "ap.vq"; vr: "ap.vr"; vs: "ap.vs"; vt: "ap.vt"; vu: "ap.vu"; vv: "ap.vv"; vw: "ap.vw"; vx: "ap.vx"; vy: "ap.vy"; vz: "ap.vz"; wa: "ap.wa"; wb: "ap.wb"; wc: "ap.wc"; wd: "ap.wd"; we: "ap.we"; wf: "ap.wf"; wg: "ap.wg"; wh: "ap.wh"; wi: "ap.wi"; wj: "ap.wj"; wk: "ap.wk"; wl: "ap.wl"; wm: "ap.wm"; wn: "ap.wn"; wo: "ap.wo"; wp: "ap.wp"; wq: "ap.wq"; wr: "ap.wr"; ws: "ap.ws"; wt: "ap.wt"; wu: "ap.wu"; wv: "ap.wv"; ww: "ap.ww"; wx: "ap.wx"; wy: "ap.wy"; wz: "ap.wz"; xa: "ap.xa"; xb: "ap.xb"; xc: "ap.xc"; xd: "ap.xd"; xe: "ap.xe"; xf: "ap.xf"; xg: "ap.xg"; xh: "ap.xh"; xi: "ap.xi"; xj: "ap.xj"; xk: "ap.xk"; xl: "ap.xl"; xm: "ap.xm"; xn: "ap.xn"; xo: "ap.xo"; xp: "ap.xp"; xq: "ap.xq"; xr: "ap.xr"; xs: "ap.xs"; xt: "ap.xt"; xu: "ap.xu"; xv: "ap.xv"; xw: "ap.xw"; xx: "ap.xx"; xy: "ap.xy"; xz: "ap.xz"; ya: "ap.ya"; yb: "ap.yb"; yc: "ap.yc"; yd: "ap.yd"; ye: "ap.ye"; yf: "ap.yf"; yg: "ap.yg"; yh: "ap.yh"; yi: "ap.yi"; yj: "ap.yj"; yk: "ap.yk"; yl: "ap.yl"; ym: "ap.ym"; yn: "ap.yn"; yo: "ap.yo"; yp: "ap.yp"; yq: "ap.yq"; yr: "ap.yr"; ys: "ap.ys"; yt: "ap.yt"; yu: "ap.yu"; yv: "ap.yv"; yw: "ap.yw"; yx: "ap.yx"; yy: "ap.yy"; yz: "ap.yz"; za: "ap.za"; zb: "ap.zb"; zc: "ap.zc"; zd: "ap.zd"; ze: "ap.ze"; zf: "ap.zf"; zg: "ap.zg"; zh: "ap.zh"; zi: "ap.zi"; zj: "ap.zj"; zk: "ap.zk"; zl: "ap.zl"; zm: "ap.zm"; zn: "ap.zn"; zo: "ap.zo"; zp: "ap.zp"; zq: "ap.zq"; zr: "ap.zr"; zs: "ap.zs"; zt: "ap.zt"; zu: "ap.zu"; zv: "ap.zv"; zw: "ap.zw"; zx: "ap.zx"; zy: "ap.zy"; zz: "ap.zz"; }; aq: { aa: "aq.aa"; ab: "aq.ab"; ac: "aq.ac"; ad: "aq.ad"; ae: "aq.ae"; af: "aq.af"; ag: "aq.ag"; ah: "aq.ah"; ai: "aq.ai"; aj: "aq.aj"; ak: "aq.ak"; al: "aq.al"; am: "aq.am"; an: "aq.an"; ao: "aq.ao"; ap: "aq.ap"; aq: "aq.aq"; ar: "aq.ar"; as: "aq.as"; at: "aq.at"; au: "aq.au"; av: "aq.av"; aw: "aq.aw"; ax: "aq.ax"; ay: "aq.ay"; az: "aq.az"; ba: "aq.ba"; bb: "aq.bb"; bc: "aq.bc"; bd: "aq.bd"; be: "aq.be"; bf: "aq.bf"; bg: "aq.bg"; bh: "aq.bh"; bi: "aq.bi"; bj: "aq.bj"; bk: "aq.bk"; bl: "aq.bl"; bm: "aq.bm"; bn: "aq.bn"; bo: "aq.bo"; bp: "aq.bp"; bq: "aq.bq"; br: "aq.br"; bs: "aq.bs"; bt: "aq.bt"; bu: "aq.bu"; bv: "aq.bv"; bw: "aq.bw"; bx: "aq.bx"; by: "aq.by"; bz: "aq.bz"; ca: "aq.ca"; cb: "aq.cb"; cc: "aq.cc"; cd: "aq.cd"; ce: "aq.ce"; cf: "aq.cf"; cg: "aq.cg"; ch: "aq.ch"; ci: "aq.ci"; cj: "aq.cj"; ck: "aq.ck"; cl: "aq.cl"; cm: "aq.cm"; cn: "aq.cn"; co: "aq.co"; cp: "aq.cp"; cq: "aq.cq"; cr: "aq.cr"; cs: "aq.cs"; ct: "aq.ct"; cu: "aq.cu"; cv: "aq.cv"; cw: "aq.cw"; cx: "aq.cx"; cy: "aq.cy"; cz: "aq.cz"; da: "aq.da"; db: "aq.db"; dc: "aq.dc"; dd: "aq.dd"; de: "aq.de"; df: "aq.df"; dg: "aq.dg"; dh: "aq.dh"; di: "aq.di"; dj: "aq.dj"; dk: "aq.dk"; dl: "aq.dl"; dm: "aq.dm"; dn: "aq.dn"; do: "aq.do"; dp: "aq.dp"; dq: "aq.dq"; dr: "aq.dr"; ds: "aq.ds"; dt: "aq.dt"; du: "aq.du"; dv: "aq.dv"; dw: "aq.dw"; dx: "aq.dx"; dy: "aq.dy"; dz: "aq.dz"; ea: "aq.ea"; eb: "aq.eb"; ec: "aq.ec"; ed: "aq.ed"; ee: "aq.ee"; ef: "aq.ef"; eg: "aq.eg"; eh: "aq.eh"; ei: "aq.ei"; ej: "aq.ej"; ek: "aq.ek"; el: "aq.el"; em: "aq.em"; en: "aq.en"; eo: "aq.eo"; ep: "aq.ep"; eq: "aq.eq"; er: "aq.er"; es: "aq.es"; et: "aq.et"; eu: "aq.eu"; ev: "aq.ev"; ew: "aq.ew"; ex: "aq.ex"; ey: "aq.ey"; ez: "aq.ez"; fa: "aq.fa"; fb: "aq.fb"; fc: "aq.fc"; fd: "aq.fd"; fe: "aq.fe"; ff: "aq.ff"; fg: "aq.fg"; fh: "aq.fh"; fi: "aq.fi"; fj: "aq.fj"; fk: "aq.fk"; fl: "aq.fl"; fm: "aq.fm"; fn: "aq.fn"; fo: "aq.fo"; fp: "aq.fp"; fq: "aq.fq"; fr: "aq.fr"; fs: "aq.fs"; ft: "aq.ft"; fu: "aq.fu"; fv: "aq.fv"; fw: "aq.fw"; fx: "aq.fx"; fy: "aq.fy"; fz: "aq.fz"; ga: "aq.ga"; gb: "aq.gb"; gc: "aq.gc"; gd: "aq.gd"; ge: "aq.ge"; gf: "aq.gf"; gg: "aq.gg"; gh: "aq.gh"; gi: "aq.gi"; gj: "aq.gj"; gk: "aq.gk"; gl: "aq.gl"; gm: "aq.gm"; gn: "aq.gn"; go: "aq.go"; gp: "aq.gp"; gq: "aq.gq"; gr: "aq.gr"; gs: "aq.gs"; gt: "aq.gt"; gu: "aq.gu"; gv: "aq.gv"; gw: "aq.gw"; gx: "aq.gx"; gy: "aq.gy"; gz: "aq.gz"; ha: "aq.ha"; hb: "aq.hb"; hc: "aq.hc"; hd: "aq.hd"; he: "aq.he"; hf: "aq.hf"; hg: "aq.hg"; hh: "aq.hh"; hi: "aq.hi"; hj: "aq.hj"; hk: "aq.hk"; hl: "aq.hl"; hm: "aq.hm"; hn: "aq.hn"; ho: "aq.ho"; hp: "aq.hp"; hq: "aq.hq"; hr: "aq.hr"; hs: "aq.hs"; ht: "aq.ht"; hu: "aq.hu"; hv: "aq.hv"; hw: "aq.hw"; hx: "aq.hx"; hy: "aq.hy"; hz: "aq.hz"; ia: "aq.ia"; ib: "aq.ib"; ic: "aq.ic"; id: "aq.id"; ie: "aq.ie"; if: "aq.if"; ig: "aq.ig"; ih: "aq.ih"; ii: "aq.ii"; ij: "aq.ij"; ik: "aq.ik"; il: "aq.il"; im: "aq.im"; in: "aq.in"; io: "aq.io"; ip: "aq.ip"; iq: "aq.iq"; ir: "aq.ir"; is: "aq.is"; it: "aq.it"; iu: "aq.iu"; iv: "aq.iv"; iw: "aq.iw"; ix: "aq.ix"; iy: "aq.iy"; iz: "aq.iz"; ja: "aq.ja"; jb: "aq.jb"; jc: "aq.jc"; jd: "aq.jd"; je: "aq.je"; jf: "aq.jf"; jg: "aq.jg"; jh: "aq.jh"; ji: "aq.ji"; jj: "aq.jj"; jk: "aq.jk"; jl: "aq.jl"; jm: "aq.jm"; jn: "aq.jn"; jo: "aq.jo"; jp: "aq.jp"; jq: "aq.jq"; jr: "aq.jr"; js: "aq.js"; jt: "aq.jt"; ju: "aq.ju"; jv: "aq.jv"; jw: "aq.jw"; jx: "aq.jx"; jy: "aq.jy"; jz: "aq.jz"; ka: "aq.ka"; kb: "aq.kb"; kc: "aq.kc"; kd: "aq.kd"; ke: "aq.ke"; kf: "aq.kf"; kg: "aq.kg"; kh: "aq.kh"; ki: "aq.ki"; kj: "aq.kj"; kk: "aq.kk"; kl: "aq.kl"; km: "aq.km"; kn: "aq.kn"; ko: "aq.ko"; kp: "aq.kp"; kq: "aq.kq"; kr: "aq.kr"; ks: "aq.ks"; kt: "aq.kt"; ku: "aq.ku"; kv: "aq.kv"; kw: "aq.kw"; kx: "aq.kx"; ky: "aq.ky"; kz: "aq.kz"; la: "aq.la"; lb: "aq.lb"; lc: "aq.lc"; ld: "aq.ld"; le: "aq.le"; lf: "aq.lf"; lg: "aq.lg"; lh: "aq.lh"; li: "aq.li"; lj: "aq.lj"; lk: "aq.lk"; ll: "aq.ll"; lm: "aq.lm"; ln: "aq.ln"; lo: "aq.lo"; lp: "aq.lp"; lq: "aq.lq"; lr: "aq.lr"; ls: "aq.ls"; lt: "aq.lt"; lu: "aq.lu"; lv: "aq.lv"; lw: "aq.lw"; lx: "aq.lx"; ly: "aq.ly"; lz: "aq.lz"; ma: "aq.ma"; mb: "aq.mb"; mc: "aq.mc"; md: "aq.md"; me: "aq.me"; mf: "aq.mf"; mg: "aq.mg"; mh: "aq.mh"; mi: "aq.mi"; mj: "aq.mj"; mk: "aq.mk"; ml: "aq.ml"; mm: "aq.mm"; mn: "aq.mn"; mo: "aq.mo"; mp: "aq.mp"; mq: "aq.mq"; mr: "aq.mr"; ms: "aq.ms"; mt: "aq.mt"; mu: "aq.mu"; mv: "aq.mv"; mw: "aq.mw"; mx: "aq.mx"; my: "aq.my"; mz: "aq.mz"; na: "aq.na"; nb: "aq.nb"; nc: "aq.nc"; nd: "aq.nd"; ne: "aq.ne"; nf: "aq.nf"; ng: "aq.ng"; nh: "aq.nh"; ni: "aq.ni"; nj: "aq.nj"; nk: "aq.nk"; nl: "aq.nl"; nm: "aq.nm"; nn: "aq.nn"; no: "aq.no"; np: "aq.np"; nq: "aq.nq"; nr: "aq.nr"; ns: "aq.ns"; nt: "aq.nt"; nu: "aq.nu"; nv: "aq.nv"; nw: "aq.nw"; nx: "aq.nx"; ny: "aq.ny"; nz: "aq.nz"; oa: "aq.oa"; ob: "aq.ob"; oc: "aq.oc"; od: "aq.od"; oe: "aq.oe"; of: "aq.of"; og: "aq.og"; oh: "aq.oh"; oi: "aq.oi"; oj: "aq.oj"; ok: "aq.ok"; ol: "aq.ol"; om: "aq.om"; on: "aq.on"; oo: "aq.oo"; op: "aq.op"; oq: "aq.oq"; or: "aq.or"; os: "aq.os"; ot: "aq.ot"; ou: "aq.ou"; ov: "aq.ov"; ow: "aq.ow"; ox: "aq.ox"; oy: "aq.oy"; oz: "aq.oz"; pa: "aq.pa"; pb: "aq.pb"; pc: "aq.pc"; pd: "aq.pd"; pe: "aq.pe"; pf: "aq.pf"; pg: "aq.pg"; ph: "aq.ph"; pi: "aq.pi"; pj: "aq.pj"; pk: "aq.pk"; pl: "aq.pl"; pm: "aq.pm"; pn: "aq.pn"; po: "aq.po"; pp: "aq.pp"; pq: "aq.pq"; pr: "aq.pr"; ps: "aq.ps"; pt: "aq.pt"; pu: "aq.pu"; pv: "aq.pv"; pw: "aq.pw"; px: "aq.px"; py: "aq.py"; pz: "aq.pz"; qa: "aq.qa"; qb: "aq.qb"; qc: "aq.qc"; qd: "aq.qd"; qe: "aq.qe"; qf: "aq.qf"; qg: "aq.qg"; qh: "aq.qh"; qi: "aq.qi"; qj: "aq.qj"; qk: "aq.qk"; ql: "aq.ql"; qm: "aq.qm"; qn: "aq.qn"; qo: "aq.qo"; qp: "aq.qp"; qq: "aq.qq"; qr: "aq.qr"; qs: "aq.qs"; qt: "aq.qt"; qu: "aq.qu"; qv: "aq.qv"; qw: "aq.qw"; qx: "aq.qx"; qy: "aq.qy"; qz: "aq.qz"; ra: "aq.ra"; rb: "aq.rb"; rc: "aq.rc"; rd: "aq.rd"; re: "aq.re"; rf: "aq.rf"; rg: "aq.rg"; rh: "aq.rh"; ri: "aq.ri"; rj: "aq.rj"; rk: "aq.rk"; rl: "aq.rl"; rm: "aq.rm"; rn: "aq.rn"; ro: "aq.ro"; rp: "aq.rp"; rq: "aq.rq"; rr: "aq.rr"; rs: "aq.rs"; rt: "aq.rt"; ru: "aq.ru"; rv: "aq.rv"; rw: "aq.rw"; rx: "aq.rx"; ry: "aq.ry"; rz: "aq.rz"; sa: "aq.sa"; sb: "aq.sb"; sc: "aq.sc"; sd: "aq.sd"; se: "aq.se"; sf: "aq.sf"; sg: "aq.sg"; sh: "aq.sh"; si: "aq.si"; sj: "aq.sj"; sk: "aq.sk"; sl: "aq.sl"; sm: "aq.sm"; sn: "aq.sn"; so: "aq.so"; sp: "aq.sp"; sq: "aq.sq"; sr: "aq.sr"; ss: "aq.ss"; st: "aq.st"; su: "aq.su"; sv: "aq.sv"; sw: "aq.sw"; sx: "aq.sx"; sy: "aq.sy"; sz: "aq.sz"; ta: "aq.ta"; tb: "aq.tb"; tc: "aq.tc"; td: "aq.td"; te: "aq.te"; tf: "aq.tf"; tg: "aq.tg"; th: "aq.th"; ti: "aq.ti"; tj: "aq.tj"; tk: "aq.tk"; tl: "aq.tl"; tm: "aq.tm"; tn: "aq.tn"; to: "aq.to"; tp: "aq.tp"; tq: "aq.tq"; tr: "aq.tr"; ts: "aq.ts"; tt: "aq.tt"; tu: "aq.tu"; tv: "aq.tv"; tw: "aq.tw"; tx: "aq.tx"; ty: "aq.ty"; tz: "aq.tz"; ua: "aq.ua"; ub: "aq.ub"; uc: "aq.uc"; ud: "aq.ud"; ue: "aq.ue"; uf: "aq.uf"; ug: "aq.ug"; uh: "aq.uh"; ui: "aq.ui"; uj: "aq.uj"; uk: "aq.uk"; ul: "aq.ul"; um: "aq.um"; un: "aq.un"; uo: "aq.uo"; up: "aq.up"; uq: "aq.uq"; ur: "aq.ur"; us: "aq.us"; ut: "aq.ut"; uu: "aq.uu"; uv: "aq.uv"; uw: "aq.uw"; ux: "aq.ux"; uy: "aq.uy"; uz: "aq.uz"; va: "aq.va"; vb: "aq.vb"; vc: "aq.vc"; vd: "aq.vd"; ve: "aq.ve"; vf: "aq.vf"; vg: "aq.vg"; vh: "aq.vh"; vi: "aq.vi"; vj: "aq.vj"; vk: "aq.vk"; vl: "aq.vl"; vm: "aq.vm"; vn: "aq.vn"; vo: "aq.vo"; vp: "aq.vp"; vq: "aq.vq"; vr: "aq.vr"; vs: "aq.vs"; vt: "aq.vt"; vu: "aq.vu"; vv: "aq.vv"; vw: "aq.vw"; vx: "aq.vx"; vy: "aq.vy"; vz: "aq.vz"; wa: "aq.wa"; wb: "aq.wb"; wc: "aq.wc"; wd: "aq.wd"; we: "aq.we"; wf: "aq.wf"; wg: "aq.wg"; wh: "aq.wh"; wi: "aq.wi"; wj: "aq.wj"; wk: "aq.wk"; wl: "aq.wl"; wm: "aq.wm"; wn: "aq.wn"; wo: "aq.wo"; wp: "aq.wp"; wq: "aq.wq"; wr: "aq.wr"; ws: "aq.ws"; wt: "aq.wt"; wu: "aq.wu"; wv: "aq.wv"; ww: "aq.ww"; wx: "aq.wx"; wy: "aq.wy"; wz: "aq.wz"; xa: "aq.xa"; xb: "aq.xb"; xc: "aq.xc"; xd: "aq.xd"; xe: "aq.xe"; xf: "aq.xf"; xg: "aq.xg"; xh: "aq.xh"; xi: "aq.xi"; xj: "aq.xj"; xk: "aq.xk"; xl: "aq.xl"; xm: "aq.xm"; xn: "aq.xn"; xo: "aq.xo"; xp: "aq.xp"; xq: "aq.xq"; xr: "aq.xr"; xs: "aq.xs"; xt: "aq.xt"; xu: "aq.xu"; xv: "aq.xv"; xw: "aq.xw"; xx: "aq.xx"; xy: "aq.xy"; xz: "aq.xz"; ya: "aq.ya"; yb: "aq.yb"; yc: "aq.yc"; yd: "aq.yd"; ye: "aq.ye"; yf: "aq.yf"; yg: "aq.yg"; yh: "aq.yh"; yi: "aq.yi"; yj: "aq.yj"; yk: "aq.yk"; yl: "aq.yl"; ym: "aq.ym"; yn: "aq.yn"; yo: "aq.yo"; yp: "aq.yp"; yq: "aq.yq"; yr: "aq.yr"; ys: "aq.ys"; yt: "aq.yt"; yu: "aq.yu"; yv: "aq.yv"; yw: "aq.yw"; yx: "aq.yx"; yy: "aq.yy"; yz: "aq.yz"; za: "aq.za"; zb: "aq.zb"; zc: "aq.zc"; zd: "aq.zd"; ze: "aq.ze"; zf: "aq.zf"; zg: "aq.zg"; zh: "aq.zh"; zi: "aq.zi"; zj: "aq.zj"; zk: "aq.zk"; zl: "aq.zl"; zm: "aq.zm"; zn: "aq.zn"; zo: "aq.zo"; zp: "aq.zp"; zq: "aq.zq"; zr: "aq.zr"; zs: "aq.zs"; zt: "aq.zt"; zu: "aq.zu"; zv: "aq.zv"; zw: "aq.zw"; zx: "aq.zx"; zy: "aq.zy"; zz: "aq.zz"; }; ar: { aa: "ar.aa"; ab: "ar.ab"; ac: "ar.ac"; ad: "ar.ad"; ae: "ar.ae"; af: "ar.af"; ag: "ar.ag"; ah: "ar.ah"; ai: "ar.ai"; aj: "ar.aj"; ak: "ar.ak"; al: "ar.al"; am: "ar.am"; an: "ar.an"; ao: "ar.ao"; ap: "ar.ap"; aq: "ar.aq"; ar: "ar.ar"; as: "ar.as"; at: "ar.at"; au: "ar.au"; av: "ar.av"; aw: "ar.aw"; ax: "ar.ax"; ay: "ar.ay"; az: "ar.az"; ba: "ar.ba"; bb: "ar.bb"; bc: "ar.bc"; bd: "ar.bd"; be: "ar.be"; bf: "ar.bf"; bg: "ar.bg"; bh: "ar.bh"; bi: "ar.bi"; bj: "ar.bj"; bk: "ar.bk"; bl: "ar.bl"; bm: "ar.bm"; bn: "ar.bn"; bo: "ar.bo"; bp: "ar.bp"; bq: "ar.bq"; br: "ar.br"; bs: "ar.bs"; bt: "ar.bt"; bu: "ar.bu"; bv: "ar.bv"; bw: "ar.bw"; bx: "ar.bx"; by: "ar.by"; bz: "ar.bz"; ca: "ar.ca"; cb: "ar.cb"; cc: "ar.cc"; cd: "ar.cd"; ce: "ar.ce"; cf: "ar.cf"; cg: "ar.cg"; ch: "ar.ch"; ci: "ar.ci"; cj: "ar.cj"; ck: "ar.ck"; cl: "ar.cl"; cm: "ar.cm"; cn: "ar.cn"; co: "ar.co"; cp: "ar.cp"; cq: "ar.cq"; cr: "ar.cr"; cs: "ar.cs"; ct: "ar.ct"; cu: "ar.cu"; cv: "ar.cv"; cw: "ar.cw"; cx: "ar.cx"; cy: "ar.cy"; cz: "ar.cz"; da: "ar.da"; db: "ar.db"; dc: "ar.dc"; dd: "ar.dd"; de: "ar.de"; df: "ar.df"; dg: "ar.dg"; dh: "ar.dh"; di: "ar.di"; dj: "ar.dj"; dk: "ar.dk"; dl: "ar.dl"; dm: "ar.dm"; dn: "ar.dn"; do: "ar.do"; dp: "ar.dp"; dq: "ar.dq"; dr: "ar.dr"; ds: "ar.ds"; dt: "ar.dt"; du: "ar.du"; dv: "ar.dv"; dw: "ar.dw"; dx: "ar.dx"; dy: "ar.dy"; dz: "ar.dz"; ea: "ar.ea"; eb: "ar.eb"; ec: "ar.ec"; ed: "ar.ed"; ee: "ar.ee"; ef: "ar.ef"; eg: "ar.eg"; eh: "ar.eh"; ei: "ar.ei"; ej: "ar.ej"; ek: "ar.ek"; el: "ar.el"; em: "ar.em"; en: "ar.en"; eo: "ar.eo"; ep: "ar.ep"; eq: "ar.eq"; er: "ar.er"; es: "ar.es"; et: "ar.et"; eu: "ar.eu"; ev: "ar.ev"; ew: "ar.ew"; ex: "ar.ex"; ey: "ar.ey"; ez: "ar.ez"; fa: "ar.fa"; fb: "ar.fb"; fc: "ar.fc"; fd: "ar.fd"; fe: "ar.fe"; ff: "ar.ff"; fg: "ar.fg"; fh: "ar.fh"; fi: "ar.fi"; fj: "ar.fj"; fk: "ar.fk"; fl: "ar.fl"; fm: "ar.fm"; fn: "ar.fn"; fo: "ar.fo"; fp: "ar.fp"; fq: "ar.fq"; fr: "ar.fr"; fs: "ar.fs"; ft: "ar.ft"; fu: "ar.fu"; fv: "ar.fv"; fw: "ar.fw"; fx: "ar.fx"; fy: "ar.fy"; fz: "ar.fz"; ga: "ar.ga"; gb: "ar.gb"; gc: "ar.gc"; gd: "ar.gd"; ge: "ar.ge"; gf: "ar.gf"; gg: "ar.gg"; gh: "ar.gh"; gi: "ar.gi"; gj: "ar.gj"; gk: "ar.gk"; gl: "ar.gl"; gm: "ar.gm"; gn: "ar.gn"; go: "ar.go"; gp: "ar.gp"; gq: "ar.gq"; gr: "ar.gr"; gs: "ar.gs"; gt: "ar.gt"; gu: "ar.gu"; gv: "ar.gv"; gw: "ar.gw"; gx: "ar.gx"; gy: "ar.gy"; gz: "ar.gz"; ha: "ar.ha"; hb: "ar.hb"; hc: "ar.hc"; hd: "ar.hd"; he: "ar.he"; hf: "ar.hf"; hg: "ar.hg"; hh: "ar.hh"; hi: "ar.hi"; hj: "ar.hj"; hk: "ar.hk"; hl: "ar.hl"; hm: "ar.hm"; hn: "ar.hn"; ho: "ar.ho"; hp: "ar.hp"; hq: "ar.hq"; hr: "ar.hr"; hs: "ar.hs"; ht: "ar.ht"; hu: "ar.hu"; hv: "ar.hv"; hw: "ar.hw"; hx: "ar.hx"; hy: "ar.hy"; hz: "ar.hz"; ia: "ar.ia"; ib: "ar.ib"; ic: "ar.ic"; id: "ar.id"; ie: "ar.ie"; if: "ar.if"; ig: "ar.ig"; ih: "ar.ih"; ii: "ar.ii"; ij: "ar.ij"; ik: "ar.ik"; il: "ar.il"; im: "ar.im"; in: "ar.in"; io: "ar.io"; ip: "ar.ip"; iq: "ar.iq"; ir: "ar.ir"; is: "ar.is"; it: "ar.it"; iu: "ar.iu"; iv: "ar.iv"; iw: "ar.iw"; ix: "ar.ix"; iy: "ar.iy"; iz: "ar.iz"; ja: "ar.ja"; jb: "ar.jb"; jc: "ar.jc"; jd: "ar.jd"; je: "ar.je"; jf: "ar.jf"; jg: "ar.jg"; jh: "ar.jh"; ji: "ar.ji"; jj: "ar.jj"; jk: "ar.jk"; jl: "ar.jl"; jm: "ar.jm"; jn: "ar.jn"; jo: "ar.jo"; jp: "ar.jp"; jq: "ar.jq"; jr: "ar.jr"; js: "ar.js"; jt: "ar.jt"; ju: "ar.ju"; jv: "ar.jv"; jw: "ar.jw"; jx: "ar.jx"; jy: "ar.jy"; jz: "ar.jz"; ka: "ar.ka"; kb: "ar.kb"; kc: "ar.kc"; kd: "ar.kd"; ke: "ar.ke"; kf: "ar.kf"; kg: "ar.kg"; kh: "ar.kh"; ki: "ar.ki"; kj: "ar.kj"; kk: "ar.kk"; kl: "ar.kl"; km: "ar.km"; kn: "ar.kn"; ko: "ar.ko"; kp: "ar.kp"; kq: "ar.kq"; kr: "ar.kr"; ks: "ar.ks"; kt: "ar.kt"; ku: "ar.ku"; kv: "ar.kv"; kw: "ar.kw"; kx: "ar.kx"; ky: "ar.ky"; kz: "ar.kz"; la: "ar.la"; lb: "ar.lb"; lc: "ar.lc"; ld: "ar.ld"; le: "ar.le"; lf: "ar.lf"; lg: "ar.lg"; lh: "ar.lh"; li: "ar.li"; lj: "ar.lj"; lk: "ar.lk"; ll: "ar.ll"; lm: "ar.lm"; ln: "ar.ln"; lo: "ar.lo"; lp: "ar.lp"; lq: "ar.lq"; lr: "ar.lr"; ls: "ar.ls"; lt: "ar.lt"; lu: "ar.lu"; lv: "ar.lv"; lw: "ar.lw"; lx: "ar.lx"; ly: "ar.ly"; lz: "ar.lz"; ma: "ar.ma"; mb: "ar.mb"; mc: "ar.mc"; md: "ar.md"; me: "ar.me"; mf: "ar.mf"; mg: "ar.mg"; mh: "ar.mh"; mi: "ar.mi"; mj: "ar.mj"; mk: "ar.mk"; ml: "ar.ml"; mm: "ar.mm"; mn: "ar.mn"; mo: "ar.mo"; mp: "ar.mp"; mq: "ar.mq"; mr: "ar.mr"; ms: "ar.ms"; mt: "ar.mt"; mu: "ar.mu"; mv: "ar.mv"; mw: "ar.mw"; mx: "ar.mx"; my: "ar.my"; mz: "ar.mz"; na: "ar.na"; nb: "ar.nb"; nc: "ar.nc"; nd: "ar.nd"; ne: "ar.ne"; nf: "ar.nf"; ng: "ar.ng"; nh: "ar.nh"; ni: "ar.ni"; nj: "ar.nj"; nk: "ar.nk"; nl: "ar.nl"; nm: "ar.nm"; nn: "ar.nn"; no: "ar.no"; np: "ar.np"; nq: "ar.nq"; nr: "ar.nr"; ns: "ar.ns"; nt: "ar.nt"; nu: "ar.nu"; nv: "ar.nv"; nw: "ar.nw"; nx: "ar.nx"; ny: "ar.ny"; nz: "ar.nz"; oa: "ar.oa"; ob: "ar.ob"; oc: "ar.oc"; od: "ar.od"; oe: "ar.oe"; of: "ar.of"; og: "ar.og"; oh: "ar.oh"; oi: "ar.oi"; oj: "ar.oj"; ok: "ar.ok"; ol: "ar.ol"; om: "ar.om"; on: "ar.on"; oo: "ar.oo"; op: "ar.op"; oq: "ar.oq"; or: "ar.or"; os: "ar.os"; ot: "ar.ot"; ou: "ar.ou"; ov: "ar.ov"; ow: "ar.ow"; ox: "ar.ox"; oy: "ar.oy"; oz: "ar.oz"; pa: "ar.pa"; pb: "ar.pb"; pc: "ar.pc"; pd: "ar.pd"; pe: "ar.pe"; pf: "ar.pf"; pg: "ar.pg"; ph: "ar.ph"; pi: "ar.pi"; pj: "ar.pj"; pk: "ar.pk"; pl: "ar.pl"; pm: "ar.pm"; pn: "ar.pn"; po: "ar.po"; pp: "ar.pp"; pq: "ar.pq"; pr: "ar.pr"; ps: "ar.ps"; pt: "ar.pt"; pu: "ar.pu"; pv: "ar.pv"; pw: "ar.pw"; px: "ar.px"; py: "ar.py"; pz: "ar.pz"; qa: "ar.qa"; qb: "ar.qb"; qc: "ar.qc"; qd: "ar.qd"; qe: "ar.qe"; qf: "ar.qf"; qg: "ar.qg"; qh: "ar.qh"; qi: "ar.qi"; qj: "ar.qj"; qk: "ar.qk"; ql: "ar.ql"; qm: "ar.qm"; qn: "ar.qn"; qo: "ar.qo"; qp: "ar.qp"; qq: "ar.qq"; qr: "ar.qr"; qs: "ar.qs"; qt: "ar.qt"; qu: "ar.qu"; qv: "ar.qv"; qw: "ar.qw"; qx: "ar.qx"; qy: "ar.qy"; qz: "ar.qz"; ra: "ar.ra"; rb: "ar.rb"; rc: "ar.rc"; rd: "ar.rd"; re: "ar.re"; rf: "ar.rf"; rg: "ar.rg"; rh: "ar.rh"; ri: "ar.ri"; rj: "ar.rj"; rk: "ar.rk"; rl: "ar.rl"; rm: "ar.rm"; rn: "ar.rn"; ro: "ar.ro"; rp: "ar.rp"; rq: "ar.rq"; rr: "ar.rr"; rs: "ar.rs"; rt: "ar.rt"; ru: "ar.ru"; rv: "ar.rv"; rw: "ar.rw"; rx: "ar.rx"; ry: "ar.ry"; rz: "ar.rz"; sa: "ar.sa"; sb: "ar.sb"; sc: "ar.sc"; sd: "ar.sd"; se: "ar.se"; sf: "ar.sf"; sg: "ar.sg"; sh: "ar.sh"; si: "ar.si"; sj: "ar.sj"; sk: "ar.sk"; sl: "ar.sl"; sm: "ar.sm"; sn: "ar.sn"; so: "ar.so"; sp: "ar.sp"; sq: "ar.sq"; sr: "ar.sr"; ss: "ar.ss"; st: "ar.st"; su: "ar.su"; sv: "ar.sv"; sw: "ar.sw"; sx: "ar.sx"; sy: "ar.sy"; sz: "ar.sz"; ta: "ar.ta"; tb: "ar.tb"; tc: "ar.tc"; td: "ar.td"; te: "ar.te"; tf: "ar.tf"; tg: "ar.tg"; th: "ar.th"; ti: "ar.ti"; tj: "ar.tj"; tk: "ar.tk"; tl: "ar.tl"; tm: "ar.tm"; tn: "ar.tn"; to: "ar.to"; tp: "ar.tp"; tq: "ar.tq"; tr: "ar.tr"; ts: "ar.ts"; tt: "ar.tt"; tu: "ar.tu"; tv: "ar.tv"; tw: "ar.tw"; tx: "ar.tx"; ty: "ar.ty"; tz: "ar.tz"; ua: "ar.ua"; ub: "ar.ub"; uc: "ar.uc"; ud: "ar.ud"; ue: "ar.ue"; uf: "ar.uf"; ug: "ar.ug"; uh: "ar.uh"; ui: "ar.ui"; uj: "ar.uj"; uk: "ar.uk"; ul: "ar.ul"; um: "ar.um"; un: "ar.un"; uo: "ar.uo"; up: "ar.up"; uq: "ar.uq"; ur: "ar.ur"; us: "ar.us"; ut: "ar.ut"; uu: "ar.uu"; uv: "ar.uv"; uw: "ar.uw"; ux: "ar.ux"; uy: "ar.uy"; uz: "ar.uz"; va: "ar.va"; vb: "ar.vb"; vc: "ar.vc"; vd: "ar.vd"; ve: "ar.ve"; vf: "ar.vf"; vg: "ar.vg"; vh: "ar.vh"; vi: "ar.vi"; vj: "ar.vj"; vk: "ar.vk"; vl: "ar.vl"; vm: "ar.vm"; vn: "ar.vn"; vo: "ar.vo"; vp: "ar.vp"; vq: "ar.vq"; vr: "ar.vr"; vs: "ar.vs"; vt: "ar.vt"; vu: "ar.vu"; vv: "ar.vv"; vw: "ar.vw"; vx: "ar.vx"; vy: "ar.vy"; vz: "ar.vz"; wa: "ar.wa"; wb: "ar.wb"; wc: "ar.wc"; wd: "ar.wd"; we: "ar.we"; wf: "ar.wf"; wg: "ar.wg"; wh: "ar.wh"; wi: "ar.wi"; wj: "ar.wj"; wk: "ar.wk"; wl: "ar.wl"; wm: "ar.wm"; wn: "ar.wn"; wo: "ar.wo"; wp: "ar.wp"; wq: "ar.wq"; wr: "ar.wr"; ws: "ar.ws"; wt: "ar.wt"; wu: "ar.wu"; wv: "ar.wv"; ww: "ar.ww"; wx: "ar.wx"; wy: "ar.wy"; wz: "ar.wz"; xa: "ar.xa"; xb: "ar.xb"; xc: "ar.xc"; xd: "ar.xd"; xe: "ar.xe"; xf: "ar.xf"; xg: "ar.xg"; xh: "ar.xh"; xi: "ar.xi"; xj: "ar.xj"; xk: "ar.xk"; xl: "ar.xl"; xm: "ar.xm"; xn: "ar.xn"; xo: "ar.xo"; xp: "ar.xp"; xq: "ar.xq"; xr: "ar.xr"; xs: "ar.xs"; xt: "ar.xt"; xu: "ar.xu"; xv: "ar.xv"; xw: "ar.xw"; xx: "ar.xx"; xy: "ar.xy"; xz: "ar.xz"; ya: "ar.ya"; yb: "ar.yb"; yc: "ar.yc"; yd: "ar.yd"; ye: "ar.ye"; yf: "ar.yf"; yg: "ar.yg"; yh: "ar.yh"; yi: "ar.yi"; yj: "ar.yj"; yk: "ar.yk"; yl: "ar.yl"; ym: "ar.ym"; yn: "ar.yn"; yo: "ar.yo"; yp: "ar.yp"; yq: "ar.yq"; yr: "ar.yr"; ys: "ar.ys"; yt: "ar.yt"; yu: "ar.yu"; yv: "ar.yv"; yw: "ar.yw"; yx: "ar.yx"; yy: "ar.yy"; yz: "ar.yz"; za: "ar.za"; zb: "ar.zb"; zc: "ar.zc"; zd: "ar.zd"; ze: "ar.ze"; zf: "ar.zf"; zg: "ar.zg"; zh: "ar.zh"; zi: "ar.zi"; zj: "ar.zj"; zk: "ar.zk"; zl: "ar.zl"; zm: "ar.zm"; zn: "ar.zn"; zo: "ar.zo"; zp: "ar.zp"; zq: "ar.zq"; zr: "ar.zr"; zs: "ar.zs"; zt: "ar.zt"; zu: "ar.zu"; zv: "ar.zv"; zw: "ar.zw"; zx: "ar.zx"; zy: "ar.zy"; zz: "ar.zz"; }; as: { aa: "as.aa"; ab: "as.ab"; ac: "as.ac"; ad: "as.ad"; ae: "as.ae"; af: "as.af"; ag: "as.ag"; ah: "as.ah"; ai: "as.ai"; aj: "as.aj"; ak: "as.ak"; al: "as.al"; am: "as.am"; an: "as.an"; ao: "as.ao"; ap: "as.ap"; aq: "as.aq"; ar: "as.ar"; as: "as.as"; at: "as.at"; au: "as.au"; av: "as.av"; aw: "as.aw"; ax: "as.ax"; ay: "as.ay"; az: "as.az"; ba: "as.ba"; bb: "as.bb"; bc: "as.bc"; bd: "as.bd"; be: "as.be"; bf: "as.bf"; bg: "as.bg"; bh: "as.bh"; bi: "as.bi"; bj: "as.bj"; bk: "as.bk"; bl: "as.bl"; bm: "as.bm"; bn: "as.bn"; bo: "as.bo"; bp: "as.bp"; bq: "as.bq"; br: "as.br"; bs: "as.bs"; bt: "as.bt"; bu: "as.bu"; bv: "as.bv"; bw: "as.bw"; bx: "as.bx"; by: "as.by"; bz: "as.bz"; ca: "as.ca"; cb: "as.cb"; cc: "as.cc"; cd: "as.cd"; ce: "as.ce"; cf: "as.cf"; cg: "as.cg"; ch: "as.ch"; ci: "as.ci"; cj: "as.cj"; ck: "as.ck"; cl: "as.cl"; cm: "as.cm"; cn: "as.cn"; co: "as.co"; cp: "as.cp"; cq: "as.cq"; cr: "as.cr"; cs: "as.cs"; ct: "as.ct"; cu: "as.cu"; cv: "as.cv"; cw: "as.cw"; cx: "as.cx"; cy: "as.cy"; cz: "as.cz"; da: "as.da"; db: "as.db"; dc: "as.dc"; dd: "as.dd"; de: "as.de"; df: "as.df"; dg: "as.dg"; dh: "as.dh"; di: "as.di"; dj: "as.dj"; dk: "as.dk"; dl: "as.dl"; dm: "as.dm"; dn: "as.dn"; do: "as.do"; dp: "as.dp"; dq: "as.dq"; dr: "as.dr"; ds: "as.ds"; dt: "as.dt"; du: "as.du"; dv: "as.dv"; dw: "as.dw"; dx: "as.dx"; dy: "as.dy"; dz: "as.dz"; ea: "as.ea"; eb: "as.eb"; ec: "as.ec"; ed: "as.ed"; ee: "as.ee"; ef: "as.ef"; eg: "as.eg"; eh: "as.eh"; ei: "as.ei"; ej: "as.ej"; ek: "as.ek"; el: "as.el"; em: "as.em"; en: "as.en"; eo: "as.eo"; ep: "as.ep"; eq: "as.eq"; er: "as.er"; es: "as.es"; et: "as.et"; eu: "as.eu"; ev: "as.ev"; ew: "as.ew"; ex: "as.ex"; ey: "as.ey"; ez: "as.ez"; fa: "as.fa"; fb: "as.fb"; fc: "as.fc"; fd: "as.fd"; fe: "as.fe"; ff: "as.ff"; fg: "as.fg"; fh: "as.fh"; fi: "as.fi"; fj: "as.fj"; fk: "as.fk"; fl: "as.fl"; fm: "as.fm"; fn: "as.fn"; fo: "as.fo"; fp: "as.fp"; fq: "as.fq"; fr: "as.fr"; fs: "as.fs"; ft: "as.ft"; fu: "as.fu"; fv: "as.fv"; fw: "as.fw"; fx: "as.fx"; fy: "as.fy"; fz: "as.fz"; ga: "as.ga"; gb: "as.gb"; gc: "as.gc"; gd: "as.gd"; ge: "as.ge"; gf: "as.gf"; gg: "as.gg"; gh: "as.gh"; gi: "as.gi"; gj: "as.gj"; gk: "as.gk"; gl: "as.gl"; gm: "as.gm"; gn: "as.gn"; go: "as.go"; gp: "as.gp"; gq: "as.gq"; gr: "as.gr"; gs: "as.gs"; gt: "as.gt"; gu: "as.gu"; gv: "as.gv"; gw: "as.gw"; gx: "as.gx"; gy: "as.gy"; gz: "as.gz"; ha: "as.ha"; hb: "as.hb"; hc: "as.hc"; hd: "as.hd"; he: "as.he"; hf: "as.hf"; hg: "as.hg"; hh: "as.hh"; hi: "as.hi"; hj: "as.hj"; hk: "as.hk"; hl: "as.hl"; hm: "as.hm"; hn: "as.hn"; ho: "as.ho"; hp: "as.hp"; hq: "as.hq"; hr: "as.hr"; hs: "as.hs"; ht: "as.ht"; hu: "as.hu"; hv: "as.hv"; hw: "as.hw"; hx: "as.hx"; hy: "as.hy"; hz: "as.hz"; ia: "as.ia"; ib: "as.ib"; ic: "as.ic"; id: "as.id"; ie: "as.ie"; if: "as.if"; ig: "as.ig"; ih: "as.ih"; ii: "as.ii"; ij: "as.ij"; ik: "as.ik"; il: "as.il"; im: "as.im"; in: "as.in"; io: "as.io"; ip: "as.ip"; iq: "as.iq"; ir: "as.ir"; is: "as.is"; it: "as.it"; iu: "as.iu"; iv: "as.iv"; iw: "as.iw"; ix: "as.ix"; iy: "as.iy"; iz: "as.iz"; ja: "as.ja"; jb: "as.jb"; jc: "as.jc"; jd: "as.jd"; je: "as.je"; jf: "as.jf"; jg: "as.jg"; jh: "as.jh"; ji: "as.ji"; jj: "as.jj"; jk: "as.jk"; jl: "as.jl"; jm: "as.jm"; jn: "as.jn"; jo: "as.jo"; jp: "as.jp"; jq: "as.jq"; jr: "as.jr"; js: "as.js"; jt: "as.jt"; ju: "as.ju"; jv: "as.jv"; jw: "as.jw"; jx: "as.jx"; jy: "as.jy"; jz: "as.jz"; ka: "as.ka"; kb: "as.kb"; kc: "as.kc"; kd: "as.kd"; ke: "as.ke"; kf: "as.kf"; kg: "as.kg"; kh: "as.kh"; ki: "as.ki"; kj: "as.kj"; kk: "as.kk"; kl: "as.kl"; km: "as.km"; kn: "as.kn"; ko: "as.ko"; kp: "as.kp"; kq: "as.kq"; kr: "as.kr"; ks: "as.ks"; kt: "as.kt"; ku: "as.ku"; kv: "as.kv"; kw: "as.kw"; kx: "as.kx"; ky: "as.ky"; kz: "as.kz"; la: "as.la"; lb: "as.lb"; lc: "as.lc"; ld: "as.ld"; le: "as.le"; lf: "as.lf"; lg: "as.lg"; lh: "as.lh"; li: "as.li"; lj: "as.lj"; lk: "as.lk"; ll: "as.ll"; lm: "as.lm"; ln: "as.ln"; lo: "as.lo"; lp: "as.lp"; lq: "as.lq"; lr: "as.lr"; ls: "as.ls"; lt: "as.lt"; lu: "as.lu"; lv: "as.lv"; lw: "as.lw"; lx: "as.lx"; ly: "as.ly"; lz: "as.lz"; ma: "as.ma"; mb: "as.mb"; mc: "as.mc"; md: "as.md"; me: "as.me"; mf: "as.mf"; mg: "as.mg"; mh: "as.mh"; mi: "as.mi"; mj: "as.mj"; mk: "as.mk"; ml: "as.ml"; mm: "as.mm"; mn: "as.mn"; mo: "as.mo"; mp: "as.mp"; mq: "as.mq"; mr: "as.mr"; ms: "as.ms"; mt: "as.mt"; mu: "as.mu"; mv: "as.mv"; mw: "as.mw"; mx: "as.mx"; my: "as.my"; mz: "as.mz"; na: "as.na"; nb: "as.nb"; nc: "as.nc"; nd: "as.nd"; ne: "as.ne"; nf: "as.nf"; ng: "as.ng"; nh: "as.nh"; ni: "as.ni"; nj: "as.nj"; nk: "as.nk"; nl: "as.nl"; nm: "as.nm"; nn: "as.nn"; no: "as.no"; np: "as.np"; nq: "as.nq"; nr: "as.nr"; ns: "as.ns"; nt: "as.nt"; nu: "as.nu"; nv: "as.nv"; nw: "as.nw"; nx: "as.nx"; ny: "as.ny"; nz: "as.nz"; oa: "as.oa"; ob: "as.ob"; oc: "as.oc"; od: "as.od"; oe: "as.oe"; of: "as.of"; og: "as.og"; oh: "as.oh"; oi: "as.oi"; oj: "as.oj"; ok: "as.ok"; ol: "as.ol"; om: "as.om"; on: "as.on"; oo: "as.oo"; op: "as.op"; oq: "as.oq"; or: "as.or"; os: "as.os"; ot: "as.ot"; ou: "as.ou"; ov: "as.ov"; ow: "as.ow"; ox: "as.ox"; oy: "as.oy"; oz: "as.oz"; pa: "as.pa"; pb: "as.pb"; pc: "as.pc"; pd: "as.pd"; pe: "as.pe"; pf: "as.pf"; pg: "as.pg"; ph: "as.ph"; pi: "as.pi"; pj: "as.pj"; pk: "as.pk"; pl: "as.pl"; pm: "as.pm"; pn: "as.pn"; po: "as.po"; pp: "as.pp"; pq: "as.pq"; pr: "as.pr"; ps: "as.ps"; pt: "as.pt"; pu: "as.pu"; pv: "as.pv"; pw: "as.pw"; px: "as.px"; py: "as.py"; pz: "as.pz"; qa: "as.qa"; qb: "as.qb"; qc: "as.qc"; qd: "as.qd"; qe: "as.qe"; qf: "as.qf"; qg: "as.qg"; qh: "as.qh"; qi: "as.qi"; qj: "as.qj"; qk: "as.qk"; ql: "as.ql"; qm: "as.qm"; qn: "as.qn"; qo: "as.qo"; qp: "as.qp"; qq: "as.qq"; qr: "as.qr"; qs: "as.qs"; qt: "as.qt"; qu: "as.qu"; qv: "as.qv"; qw: "as.qw"; qx: "as.qx"; qy: "as.qy"; qz: "as.qz"; ra: "as.ra"; rb: "as.rb"; rc: "as.rc"; rd: "as.rd"; re: "as.re"; rf: "as.rf"; rg: "as.rg"; rh: "as.rh"; ri: "as.ri"; rj: "as.rj"; rk: "as.rk"; rl: "as.rl"; rm: "as.rm"; rn: "as.rn"; ro: "as.ro"; rp: "as.rp"; rq: "as.rq"; rr: "as.rr"; rs: "as.rs"; rt: "as.rt"; ru: "as.ru"; rv: "as.rv"; rw: "as.rw"; rx: "as.rx"; ry: "as.ry"; rz: "as.rz"; sa: "as.sa"; sb: "as.sb"; sc: "as.sc"; sd: "as.sd"; se: "as.se"; sf: "as.sf"; sg: "as.sg"; sh: "as.sh"; si: "as.si"; sj: "as.sj"; sk: "as.sk"; sl: "as.sl"; sm: "as.sm"; sn: "as.sn"; so: "as.so"; sp: "as.sp"; sq: "as.sq"; sr: "as.sr"; ss: "as.ss"; st: "as.st"; su: "as.su"; sv: "as.sv"; sw: "as.sw"; sx: "as.sx"; sy: "as.sy"; sz: "as.sz"; ta: "as.ta"; tb: "as.tb"; tc: "as.tc"; td: "as.td"; te: "as.te"; tf: "as.tf"; tg: "as.tg"; th: "as.th"; ti: "as.ti"; tj: "as.tj"; tk: "as.tk"; tl: "as.tl"; tm: "as.tm"; tn: "as.tn"; to: "as.to"; tp: "as.tp"; tq: "as.tq"; tr: "as.tr"; ts: "as.ts"; tt: "as.tt"; tu: "as.tu"; tv: "as.tv"; tw: "as.tw"; tx: "as.tx"; ty: "as.ty"; tz: "as.tz"; ua: "as.ua"; ub: "as.ub"; uc: "as.uc"; ud: "as.ud"; ue: "as.ue"; uf: "as.uf"; ug: "as.ug"; uh: "as.uh"; ui: "as.ui"; uj: "as.uj"; uk: "as.uk"; ul: "as.ul"; um: "as.um"; un: "as.un"; uo: "as.uo"; up: "as.up"; uq: "as.uq"; ur: "as.ur"; us: "as.us"; ut: "as.ut"; uu: "as.uu"; uv: "as.uv"; uw: "as.uw"; ux: "as.ux"; uy: "as.uy"; uz: "as.uz"; va: "as.va"; vb: "as.vb"; vc: "as.vc"; vd: "as.vd"; ve: "as.ve"; vf: "as.vf"; vg: "as.vg"; vh: "as.vh"; vi: "as.vi"; vj: "as.vj"; vk: "as.vk"; vl: "as.vl"; vm: "as.vm"; vn: "as.vn"; vo: "as.vo"; vp: "as.vp"; vq: "as.vq"; vr: "as.vr"; vs: "as.vs"; vt: "as.vt"; vu: "as.vu"; vv: "as.vv"; vw: "as.vw"; vx: "as.vx"; vy: "as.vy"; vz: "as.vz"; wa: "as.wa"; wb: "as.wb"; wc: "as.wc"; wd: "as.wd"; we: "as.we"; wf: "as.wf"; wg: "as.wg"; wh: "as.wh"; wi: "as.wi"; wj: "as.wj"; wk: "as.wk"; wl: "as.wl"; wm: "as.wm"; wn: "as.wn"; wo: "as.wo"; wp: "as.wp"; wq: "as.wq"; wr: "as.wr"; ws: "as.ws"; wt: "as.wt"; wu: "as.wu"; wv: "as.wv"; ww: "as.ww"; wx: "as.wx"; wy: "as.wy"; wz: "as.wz"; xa: "as.xa"; xb: "as.xb"; xc: "as.xc"; xd: "as.xd"; xe: "as.xe"; xf: "as.xf"; xg: "as.xg"; xh: "as.xh"; xi: "as.xi"; xj: "as.xj"; xk: "as.xk"; xl: "as.xl"; xm: "as.xm"; xn: "as.xn"; xo: "as.xo"; xp: "as.xp"; xq: "as.xq"; xr: "as.xr"; xs: "as.xs"; xt: "as.xt"; xu: "as.xu"; xv: "as.xv"; xw: "as.xw"; xx: "as.xx"; xy: "as.xy"; xz: "as.xz"; ya: "as.ya"; yb: "as.yb"; yc: "as.yc"; yd: "as.yd"; ye: "as.ye"; yf: "as.yf"; yg: "as.yg"; yh: "as.yh"; yi: "as.yi"; yj: "as.yj"; yk: "as.yk"; yl: "as.yl"; ym: "as.ym"; yn: "as.yn"; yo: "as.yo"; yp: "as.yp"; yq: "as.yq"; yr: "as.yr"; ys: "as.ys"; yt: "as.yt"; yu: "as.yu"; yv: "as.yv"; yw: "as.yw"; yx: "as.yx"; yy: "as.yy"; yz: "as.yz"; za: "as.za"; zb: "as.zb"; zc: "as.zc"; zd: "as.zd"; ze: "as.ze"; zf: "as.zf"; zg: "as.zg"; zh: "as.zh"; zi: "as.zi"; zj: "as.zj"; zk: "as.zk"; zl: "as.zl"; zm: "as.zm"; zn: "as.zn"; zo: "as.zo"; zp: "as.zp"; zq: "as.zq"; zr: "as.zr"; zs: "as.zs"; zt: "as.zt"; zu: "as.zu"; zv: "as.zv"; zw: "as.zw"; zx: "as.zx"; zy: "as.zy"; zz: "as.zz"; }; at: { aa: "at.aa"; ab: "at.ab"; ac: "at.ac"; ad: "at.ad"; ae: "at.ae"; af: "at.af"; ag: "at.ag"; ah: "at.ah"; ai: "at.ai"; aj: "at.aj"; ak: "at.ak"; al: "at.al"; am: "at.am"; an: "at.an"; ao: "at.ao"; ap: "at.ap"; aq: "at.aq"; ar: "at.ar"; as: "at.as"; at: "at.at"; au: "at.au"; av: "at.av"; aw: "at.aw"; ax: "at.ax"; ay: "at.ay"; az: "at.az"; ba: "at.ba"; bb: "at.bb"; bc: "at.bc"; bd: "at.bd"; be: "at.be"; bf: "at.bf"; bg: "at.bg"; bh: "at.bh"; bi: "at.bi"; bj: "at.bj"; bk: "at.bk"; bl: "at.bl"; bm: "at.bm"; bn: "at.bn"; bo: "at.bo"; bp: "at.bp"; bq: "at.bq"; br: "at.br"; bs: "at.bs"; bt: "at.bt"; bu: "at.bu"; bv: "at.bv"; bw: "at.bw"; bx: "at.bx"; by: "at.by"; bz: "at.bz"; ca: "at.ca"; cb: "at.cb"; cc: "at.cc"; cd: "at.cd"; ce: "at.ce"; cf: "at.cf"; cg: "at.cg"; ch: "at.ch"; ci: "at.ci"; cj: "at.cj"; ck: "at.ck"; cl: "at.cl"; cm: "at.cm"; cn: "at.cn"; co: "at.co"; cp: "at.cp"; cq: "at.cq"; cr: "at.cr"; cs: "at.cs"; ct: "at.ct"; cu: "at.cu"; cv: "at.cv"; cw: "at.cw"; cx: "at.cx"; cy: "at.cy"; cz: "at.cz"; da: "at.da"; db: "at.db"; dc: "at.dc"; dd: "at.dd"; de: "at.de"; df: "at.df"; dg: "at.dg"; dh: "at.dh"; di: "at.di"; dj: "at.dj"; dk: "at.dk"; dl: "at.dl"; dm: "at.dm"; dn: "at.dn"; do: "at.do"; dp: "at.dp"; dq: "at.dq"; dr: "at.dr"; ds: "at.ds"; dt: "at.dt"; du: "at.du"; dv: "at.dv"; dw: "at.dw"; dx: "at.dx"; dy: "at.dy"; dz: "at.dz"; ea: "at.ea"; eb: "at.eb"; ec: "at.ec"; ed: "at.ed"; ee: "at.ee"; ef: "at.ef"; eg: "at.eg"; eh: "at.eh"; ei: "at.ei"; ej: "at.ej"; ek: "at.ek"; el: "at.el"; em: "at.em"; en: "at.en"; eo: "at.eo"; ep: "at.ep"; eq: "at.eq"; er: "at.er"; es: "at.es"; et: "at.et"; eu: "at.eu"; ev: "at.ev"; ew: "at.ew"; ex: "at.ex"; ey: "at.ey"; ez: "at.ez"; fa: "at.fa"; fb: "at.fb"; fc: "at.fc"; fd: "at.fd"; fe: "at.fe"; ff: "at.ff"; fg: "at.fg"; fh: "at.fh"; fi: "at.fi"; fj: "at.fj"; fk: "at.fk"; fl: "at.fl"; fm: "at.fm"; fn: "at.fn"; fo: "at.fo"; fp: "at.fp"; fq: "at.fq"; fr: "at.fr"; fs: "at.fs"; ft: "at.ft"; fu: "at.fu"; fv: "at.fv"; fw: "at.fw"; fx: "at.fx"; fy: "at.fy"; fz: "at.fz"; ga: "at.ga"; gb: "at.gb"; gc: "at.gc"; gd: "at.gd"; ge: "at.ge"; gf: "at.gf"; gg: "at.gg"; gh: "at.gh"; gi: "at.gi"; gj: "at.gj"; gk: "at.gk"; gl: "at.gl"; gm: "at.gm"; gn: "at.gn"; go: "at.go"; gp: "at.gp"; gq: "at.gq"; gr: "at.gr"; gs: "at.gs"; gt: "at.gt"; gu: "at.gu"; gv: "at.gv"; gw: "at.gw"; gx: "at.gx"; gy: "at.gy"; gz: "at.gz"; ha: "at.ha"; hb: "at.hb"; hc: "at.hc"; hd: "at.hd"; he: "at.he"; hf: "at.hf"; hg: "at.hg"; hh: "at.hh"; hi: "at.hi"; hj: "at.hj"; hk: "at.hk"; hl: "at.hl"; hm: "at.hm"; hn: "at.hn"; ho: "at.ho"; hp: "at.hp"; hq: "at.hq"; hr: "at.hr"; hs: "at.hs"; ht: "at.ht"; hu: "at.hu"; hv: "at.hv"; hw: "at.hw"; hx: "at.hx"; hy: "at.hy"; hz: "at.hz"; ia: "at.ia"; ib: "at.ib"; ic: "at.ic"; id: "at.id"; ie: "at.ie"; if: "at.if"; ig: "at.ig"; ih: "at.ih"; ii: "at.ii"; ij: "at.ij"; ik: "at.ik"; il: "at.il"; im: "at.im"; in: "at.in"; io: "at.io"; ip: "at.ip"; iq: "at.iq"; ir: "at.ir"; is: "at.is"; it: "at.it"; iu: "at.iu"; iv: "at.iv"; iw: "at.iw"; ix: "at.ix"; iy: "at.iy"; iz: "at.iz"; ja: "at.ja"; jb: "at.jb"; jc: "at.jc"; jd: "at.jd"; je: "at.je"; jf: "at.jf"; jg: "at.jg"; jh: "at.jh"; ji: "at.ji"; jj: "at.jj"; jk: "at.jk"; jl: "at.jl"; jm: "at.jm"; jn: "at.jn"; jo: "at.jo"; jp: "at.jp"; jq: "at.jq"; jr: "at.jr"; js: "at.js"; jt: "at.jt"; ju: "at.ju"; jv: "at.jv"; jw: "at.jw"; jx: "at.jx"; jy: "at.jy"; jz: "at.jz"; ka: "at.ka"; kb: "at.kb"; kc: "at.kc"; kd: "at.kd"; ke: "at.ke"; kf: "at.kf"; kg: "at.kg"; kh: "at.kh"; ki: "at.ki"; kj: "at.kj"; kk: "at.kk"; kl: "at.kl"; km: "at.km"; kn: "at.kn"; ko: "at.ko"; kp: "at.kp"; kq: "at.kq"; kr: "at.kr"; ks: "at.ks"; kt: "at.kt"; ku: "at.ku"; kv: "at.kv"; kw: "at.kw"; kx: "at.kx"; ky: "at.ky"; kz: "at.kz"; la: "at.la"; lb: "at.lb"; lc: "at.lc"; ld: "at.ld"; le: "at.le"; lf: "at.lf"; lg: "at.lg"; lh: "at.lh"; li: "at.li"; lj: "at.lj"; lk: "at.lk"; ll: "at.ll"; lm: "at.lm"; ln: "at.ln"; lo: "at.lo"; lp: "at.lp"; lq: "at.lq"; lr: "at.lr"; ls: "at.ls"; lt: "at.lt"; lu: "at.lu"; lv: "at.lv"; lw: "at.lw"; lx: "at.lx"; ly: "at.ly"; lz: "at.lz"; ma: "at.ma"; mb: "at.mb"; mc: "at.mc"; md: "at.md"; me: "at.me"; mf: "at.mf"; mg: "at.mg"; mh: "at.mh"; mi: "at.mi"; mj: "at.mj"; mk: "at.mk"; ml: "at.ml"; mm: "at.mm"; mn: "at.mn"; mo: "at.mo"; mp: "at.mp"; mq: "at.mq"; mr: "at.mr"; ms: "at.ms"; mt: "at.mt"; mu: "at.mu"; mv: "at.mv"; mw: "at.mw"; mx: "at.mx"; my: "at.my"; mz: "at.mz"; na: "at.na"; nb: "at.nb"; nc: "at.nc"; nd: "at.nd"; ne: "at.ne"; nf: "at.nf"; ng: "at.ng"; nh: "at.nh"; ni: "at.ni"; nj: "at.nj"; nk: "at.nk"; nl: "at.nl"; nm: "at.nm"; nn: "at.nn"; no: "at.no"; np: "at.np"; nq: "at.nq"; nr: "at.nr"; ns: "at.ns"; nt: "at.nt"; nu: "at.nu"; nv: "at.nv"; nw: "at.nw"; nx: "at.nx"; ny: "at.ny"; nz: "at.nz"; oa: "at.oa"; ob: "at.ob"; oc: "at.oc"; od: "at.od"; oe: "at.oe"; of: "at.of"; og: "at.og"; oh: "at.oh"; oi: "at.oi"; oj: "at.oj"; ok: "at.ok"; ol: "at.ol"; om: "at.om"; on: "at.on"; oo: "at.oo"; op: "at.op"; oq: "at.oq"; or: "at.or"; os: "at.os"; ot: "at.ot"; ou: "at.ou"; ov: "at.ov"; ow: "at.ow"; ox: "at.ox"; oy: "at.oy"; oz: "at.oz"; pa: "at.pa"; pb: "at.pb"; pc: "at.pc"; pd: "at.pd"; pe: "at.pe"; pf: "at.pf"; pg: "at.pg"; ph: "at.ph"; pi: "at.pi"; pj: "at.pj"; pk: "at.pk"; pl: "at.pl"; pm: "at.pm"; pn: "at.pn"; po: "at.po"; pp: "at.pp"; pq: "at.pq"; pr: "at.pr"; ps: "at.ps"; pt: "at.pt"; pu: "at.pu"; pv: "at.pv"; pw: "at.pw"; px: "at.px"; py: "at.py"; pz: "at.pz"; qa: "at.qa"; qb: "at.qb"; qc: "at.qc"; qd: "at.qd"; qe: "at.qe"; qf: "at.qf"; qg: "at.qg"; qh: "at.qh"; qi: "at.qi"; qj: "at.qj"; qk: "at.qk"; ql: "at.ql"; qm: "at.qm"; qn: "at.qn"; qo: "at.qo"; qp: "at.qp"; qq: "at.qq"; qr: "at.qr"; qs: "at.qs"; qt: "at.qt"; qu: "at.qu"; qv: "at.qv"; qw: "at.qw"; qx: "at.qx"; qy: "at.qy"; qz: "at.qz"; ra: "at.ra"; rb: "at.rb"; rc: "at.rc"; rd: "at.rd"; re: "at.re"; rf: "at.rf"; rg: "at.rg"; rh: "at.rh"; ri: "at.ri"; rj: "at.rj"; rk: "at.rk"; rl: "at.rl"; rm: "at.rm"; rn: "at.rn"; ro: "at.ro"; rp: "at.rp"; rq: "at.rq"; rr: "at.rr"; rs: "at.rs"; rt: "at.rt"; ru: "at.ru"; rv: "at.rv"; rw: "at.rw"; rx: "at.rx"; ry: "at.ry"; rz: "at.rz"; sa: "at.sa"; sb: "at.sb"; sc: "at.sc"; sd: "at.sd"; se: "at.se"; sf: "at.sf"; sg: "at.sg"; sh: "at.sh"; si: "at.si"; sj: "at.sj"; sk: "at.sk"; sl: "at.sl"; sm: "at.sm"; sn: "at.sn"; so: "at.so"; sp: "at.sp"; sq: "at.sq"; sr: "at.sr"; ss: "at.ss"; st: "at.st"; su: "at.su"; sv: "at.sv"; sw: "at.sw"; sx: "at.sx"; sy: "at.sy"; sz: "at.sz"; ta: "at.ta"; tb: "at.tb"; tc: "at.tc"; td: "at.td"; te: "at.te"; tf: "at.tf"; tg: "at.tg"; th: "at.th"; ti: "at.ti"; tj: "at.tj"; tk: "at.tk"; tl: "at.tl"; tm: "at.tm"; tn: "at.tn"; to: "at.to"; tp: "at.tp"; tq: "at.tq"; tr: "at.tr"; ts: "at.ts"; tt: "at.tt"; tu: "at.tu"; tv: "at.tv"; tw: "at.tw"; tx: "at.tx"; ty: "at.ty"; tz: "at.tz"; ua: "at.ua"; ub: "at.ub"; uc: "at.uc"; ud: "at.ud"; ue: "at.ue"; uf: "at.uf"; ug: "at.ug"; uh: "at.uh"; ui: "at.ui"; uj: "at.uj"; uk: "at.uk"; ul: "at.ul"; um: "at.um"; un: "at.un"; uo: "at.uo"; up: "at.up"; uq: "at.uq"; ur: "at.ur"; us: "at.us"; ut: "at.ut"; uu: "at.uu"; uv: "at.uv"; uw: "at.uw"; ux: "at.ux"; uy: "at.uy"; uz: "at.uz"; va: "at.va"; vb: "at.vb"; vc: "at.vc"; vd: "at.vd"; ve: "at.ve"; vf: "at.vf"; vg: "at.vg"; vh: "at.vh"; vi: "at.vi"; vj: "at.vj"; vk: "at.vk"; vl: "at.vl"; vm: "at.vm"; vn: "at.vn"; vo: "at.vo"; vp: "at.vp"; vq: "at.vq"; vr: "at.vr"; vs: "at.vs"; vt: "at.vt"; vu: "at.vu"; vv: "at.vv"; vw: "at.vw"; vx: "at.vx"; vy: "at.vy"; vz: "at.vz"; wa: "at.wa"; wb: "at.wb"; wc: "at.wc"; wd: "at.wd"; we: "at.we"; wf: "at.wf"; wg: "at.wg"; wh: "at.wh"; wi: "at.wi"; wj: "at.wj"; wk: "at.wk"; wl: "at.wl"; wm: "at.wm"; wn: "at.wn"; wo: "at.wo"; wp: "at.wp"; wq: "at.wq"; wr: "at.wr"; ws: "at.ws"; wt: "at.wt"; wu: "at.wu"; wv: "at.wv"; ww: "at.ww"; wx: "at.wx"; wy: "at.wy"; wz: "at.wz"; xa: "at.xa"; xb: "at.xb"; xc: "at.xc"; xd: "at.xd"; xe: "at.xe"; xf: "at.xf"; xg: "at.xg"; xh: "at.xh"; xi: "at.xi"; xj: "at.xj"; xk: "at.xk"; xl: "at.xl"; xm: "at.xm"; xn: "at.xn"; xo: "at.xo"; xp: "at.xp"; xq: "at.xq"; xr: "at.xr"; xs: "at.xs"; xt: "at.xt"; xu: "at.xu"; xv: "at.xv"; xw: "at.xw"; xx: "at.xx"; xy: "at.xy"; xz: "at.xz"; ya: "at.ya"; yb: "at.yb"; yc: "at.yc"; yd: "at.yd"; ye: "at.ye"; yf: "at.yf"; yg: "at.yg"; yh: "at.yh"; yi: "at.yi"; yj: "at.yj"; yk: "at.yk"; yl: "at.yl"; ym: "at.ym"; yn: "at.yn"; yo: "at.yo"; yp: "at.yp"; yq: "at.yq"; yr: "at.yr"; ys: "at.ys"; yt: "at.yt"; yu: "at.yu"; yv: "at.yv"; yw: "at.yw"; yx: "at.yx"; yy: "at.yy"; yz: "at.yz"; za: "at.za"; zb: "at.zb"; zc: "at.zc"; zd: "at.zd"; ze: "at.ze"; zf: "at.zf"; zg: "at.zg"; zh: "at.zh"; zi: "at.zi"; zj: "at.zj"; zk: "at.zk"; zl: "at.zl"; zm: "at.zm"; zn: "at.zn"; zo: "at.zo"; zp: "at.zp"; zq: "at.zq"; zr: "at.zr"; zs: "at.zs"; zt: "at.zt"; zu: "at.zu"; zv: "at.zv"; zw: "at.zw"; zx: "at.zx"; zy: "at.zy"; zz: "at.zz"; }; au: { aa: "au.aa"; ab: "au.ab"; ac: "au.ac"; ad: "au.ad"; ae: "au.ae"; af: "au.af"; ag: "au.ag"; ah: "au.ah"; ai: "au.ai"; aj: "au.aj"; ak: "au.ak"; al: "au.al"; am: "au.am"; an: "au.an"; ao: "au.ao"; ap: "au.ap"; aq: "au.aq"; ar: "au.ar"; as: "au.as"; at: "au.at"; au: "au.au"; av: "au.av"; aw: "au.aw"; ax: "au.ax"; ay: "au.ay"; az: "au.az"; ba: "au.ba"; bb: "au.bb"; bc: "au.bc"; bd: "au.bd"; be: "au.be"; bf: "au.bf"; bg: "au.bg"; bh: "au.bh"; bi: "au.bi"; bj: "au.bj"; bk: "au.bk"; bl: "au.bl"; bm: "au.bm"; bn: "au.bn"; bo: "au.bo"; bp: "au.bp"; bq: "au.bq"; br: "au.br"; bs: "au.bs"; bt: "au.bt"; bu: "au.bu"; bv: "au.bv"; bw: "au.bw"; bx: "au.bx"; by: "au.by"; bz: "au.bz"; ca: "au.ca"; cb: "au.cb"; cc: "au.cc"; cd: "au.cd"; ce: "au.ce"; cf: "au.cf"; cg: "au.cg"; ch: "au.ch"; ci: "au.ci"; cj: "au.cj"; ck: "au.ck"; cl: "au.cl"; cm: "au.cm"; cn: "au.cn"; co: "au.co"; cp: "au.cp"; cq: "au.cq"; cr: "au.cr"; cs: "au.cs"; ct: "au.ct"; cu: "au.cu"; cv: "au.cv"; cw: "au.cw"; cx: "au.cx"; cy: "au.cy"; cz: "au.cz"; da: "au.da"; db: "au.db"; dc: "au.dc"; dd: "au.dd"; de: "au.de"; df: "au.df"; dg: "au.dg"; dh: "au.dh"; di: "au.di"; dj: "au.dj"; dk: "au.dk"; dl: "au.dl"; dm: "au.dm"; dn: "au.dn"; do: "au.do"; dp: "au.dp"; dq: "au.dq"; dr: "au.dr"; ds: "au.ds"; dt: "au.dt"; du: "au.du"; dv: "au.dv"; dw: "au.dw"; dx: "au.dx"; dy: "au.dy"; dz: "au.dz"; ea: "au.ea"; eb: "au.eb"; ec: "au.ec"; ed: "au.ed"; ee: "au.ee"; ef: "au.ef"; eg: "au.eg"; eh: "au.eh"; ei: "au.ei"; ej: "au.ej"; ek: "au.ek"; el: "au.el"; em: "au.em"; en: "au.en"; eo: "au.eo"; ep: "au.ep"; eq: "au.eq"; er: "au.er"; es: "au.es"; et: "au.et"; eu: "au.eu"; ev: "au.ev"; ew: "au.ew"; ex: "au.ex"; ey: "au.ey"; ez: "au.ez"; fa: "au.fa"; fb: "au.fb"; fc: "au.fc"; fd: "au.fd"; fe: "au.fe"; ff: "au.ff"; fg: "au.fg"; fh: "au.fh"; fi: "au.fi"; fj: "au.fj"; fk: "au.fk"; fl: "au.fl"; fm: "au.fm"; fn: "au.fn"; fo: "au.fo"; fp: "au.fp"; fq: "au.fq"; fr: "au.fr"; fs: "au.fs"; ft: "au.ft"; fu: "au.fu"; fv: "au.fv"; fw: "au.fw"; fx: "au.fx"; fy: "au.fy"; fz: "au.fz"; ga: "au.ga"; gb: "au.gb"; gc: "au.gc"; gd: "au.gd"; ge: "au.ge"; gf: "au.gf"; gg: "au.gg"; gh: "au.gh"; gi: "au.gi"; gj: "au.gj"; gk: "au.gk"; gl: "au.gl"; gm: "au.gm"; gn: "au.gn"; go: "au.go"; gp: "au.gp"; gq: "au.gq"; gr: "au.gr"; gs: "au.gs"; gt: "au.gt"; gu: "au.gu"; gv: "au.gv"; gw: "au.gw"; gx: "au.gx"; gy: "au.gy"; gz: "au.gz"; ha: "au.ha"; hb: "au.hb"; hc: "au.hc"; hd: "au.hd"; he: "au.he"; hf: "au.hf"; hg: "au.hg"; hh: "au.hh"; hi: "au.hi"; hj: "au.hj"; hk: "au.hk"; hl: "au.hl"; hm: "au.hm"; hn: "au.hn"; ho: "au.ho"; hp: "au.hp"; hq: "au.hq"; hr: "au.hr"; hs: "au.hs"; ht: "au.ht"; hu: "au.hu"; hv: "au.hv"; hw: "au.hw"; hx: "au.hx"; hy: "au.hy"; hz: "au.hz"; ia: "au.ia"; ib: "au.ib"; ic: "au.ic"; id: "au.id"; ie: "au.ie"; if: "au.if"; ig: "au.ig"; ih: "au.ih"; ii: "au.ii"; ij: "au.ij"; ik: "au.ik"; il: "au.il"; im: "au.im"; in: "au.in"; io: "au.io"; ip: "au.ip"; iq: "au.iq"; ir: "au.ir"; is: "au.is"; it: "au.it"; iu: "au.iu"; iv: "au.iv"; iw: "au.iw"; ix: "au.ix"; iy: "au.iy"; iz: "au.iz"; ja: "au.ja"; jb: "au.jb"; jc: "au.jc"; jd: "au.jd"; je: "au.je"; jf: "au.jf"; jg: "au.jg"; jh: "au.jh"; ji: "au.ji"; jj: "au.jj"; jk: "au.jk"; jl: "au.jl"; jm: "au.jm"; jn: "au.jn"; jo: "au.jo"; jp: "au.jp"; jq: "au.jq"; jr: "au.jr"; js: "au.js"; jt: "au.jt"; ju: "au.ju"; jv: "au.jv"; jw: "au.jw"; jx: "au.jx"; jy: "au.jy"; jz: "au.jz"; ka: "au.ka"; kb: "au.kb"; kc: "au.kc"; kd: "au.kd"; ke: "au.ke"; kf: "au.kf"; kg: "au.kg"; kh: "au.kh"; ki: "au.ki"; kj: "au.kj"; kk: "au.kk"; kl: "au.kl"; km: "au.km"; kn: "au.kn"; ko: "au.ko"; kp: "au.kp"; kq: "au.kq"; kr: "au.kr"; ks: "au.ks"; kt: "au.kt"; ku: "au.ku"; kv: "au.kv"; kw: "au.kw"; kx: "au.kx"; ky: "au.ky"; kz: "au.kz"; la: "au.la"; lb: "au.lb"; lc: "au.lc"; ld: "au.ld"; le: "au.le"; lf: "au.lf"; lg: "au.lg"; lh: "au.lh"; li: "au.li"; lj: "au.lj"; lk: "au.lk"; ll: "au.ll"; lm: "au.lm"; ln: "au.ln"; lo: "au.lo"; lp: "au.lp"; lq: "au.lq"; lr: "au.lr"; ls: "au.ls"; lt: "au.lt"; lu: "au.lu"; lv: "au.lv"; lw: "au.lw"; lx: "au.lx"; ly: "au.ly"; lz: "au.lz"; ma: "au.ma"; mb: "au.mb"; mc: "au.mc"; md: "au.md"; me: "au.me"; mf: "au.mf"; mg: "au.mg"; mh: "au.mh"; mi: "au.mi"; mj: "au.mj"; mk: "au.mk"; ml: "au.ml"; mm: "au.mm"; mn: "au.mn"; mo: "au.mo"; mp: "au.mp"; mq: "au.mq"; mr: "au.mr"; ms: "au.ms"; mt: "au.mt"; mu: "au.mu"; mv: "au.mv"; mw: "au.mw"; mx: "au.mx"; my: "au.my"; mz: "au.mz"; na: "au.na"; nb: "au.nb"; nc: "au.nc"; nd: "au.nd"; ne: "au.ne"; nf: "au.nf"; ng: "au.ng"; nh: "au.nh"; ni: "au.ni"; nj: "au.nj"; nk: "au.nk"; nl: "au.nl"; nm: "au.nm"; nn: "au.nn"; no: "au.no"; np: "au.np"; nq: "au.nq"; nr: "au.nr"; ns: "au.ns"; nt: "au.nt"; nu: "au.nu"; nv: "au.nv"; nw: "au.nw"; nx: "au.nx"; ny: "au.ny"; nz: "au.nz"; oa: "au.oa"; ob: "au.ob"; oc: "au.oc"; od: "au.od"; oe: "au.oe"; of: "au.of"; og: "au.og"; oh: "au.oh"; oi: "au.oi"; oj: "au.oj"; ok: "au.ok"; ol: "au.ol"; om: "au.om"; on: "au.on"; oo: "au.oo"; op: "au.op"; oq: "au.oq"; or: "au.or"; os: "au.os"; ot: "au.ot"; ou: "au.ou"; ov: "au.ov"; ow: "au.ow"; ox: "au.ox"; oy: "au.oy"; oz: "au.oz"; pa: "au.pa"; pb: "au.pb"; pc: "au.pc"; pd: "au.pd"; pe: "au.pe"; pf: "au.pf"; pg: "au.pg"; ph: "au.ph"; pi: "au.pi"; pj: "au.pj"; pk: "au.pk"; pl: "au.pl"; pm: "au.pm"; pn: "au.pn"; po: "au.po"; pp: "au.pp"; pq: "au.pq"; pr: "au.pr"; ps: "au.ps"; pt: "au.pt"; pu: "au.pu"; pv: "au.pv"; pw: "au.pw"; px: "au.px"; py: "au.py"; pz: "au.pz"; qa: "au.qa"; qb: "au.qb"; qc: "au.qc"; qd: "au.qd"; qe: "au.qe"; qf: "au.qf"; qg: "au.qg"; qh: "au.qh"; qi: "au.qi"; qj: "au.qj"; qk: "au.qk"; ql: "au.ql"; qm: "au.qm"; qn: "au.qn"; qo: "au.qo"; qp: "au.qp"; qq: "au.qq"; qr: "au.qr"; qs: "au.qs"; qt: "au.qt"; qu: "au.qu"; qv: "au.qv"; qw: "au.qw"; qx: "au.qx"; qy: "au.qy"; qz: "au.qz"; ra: "au.ra"; rb: "au.rb"; rc: "au.rc"; rd: "au.rd"; re: "au.re"; rf: "au.rf"; rg: "au.rg"; rh: "au.rh"; ri: "au.ri"; rj: "au.rj"; rk: "au.rk"; rl: "au.rl"; rm: "au.rm"; rn: "au.rn"; ro: "au.ro"; rp: "au.rp"; rq: "au.rq"; rr: "au.rr"; rs: "au.rs"; rt: "au.rt"; ru: "au.ru"; rv: "au.rv"; rw: "au.rw"; rx: "au.rx"; ry: "au.ry"; rz: "au.rz"; sa: "au.sa"; sb: "au.sb"; sc: "au.sc"; sd: "au.sd"; se: "au.se"; sf: "au.sf"; sg: "au.sg"; sh: "au.sh"; si: "au.si"; sj: "au.sj"; sk: "au.sk"; sl: "au.sl"; sm: "au.sm"; sn: "au.sn"; so: "au.so"; sp: "au.sp"; sq: "au.sq"; sr: "au.sr"; ss: "au.ss"; st: "au.st"; su: "au.su"; sv: "au.sv"; sw: "au.sw"; sx: "au.sx"; sy: "au.sy"; sz: "au.sz"; ta: "au.ta"; tb: "au.tb"; tc: "au.tc"; td: "au.td"; te: "au.te"; tf: "au.tf"; tg: "au.tg"; th: "au.th"; ti: "au.ti"; tj: "au.tj"; tk: "au.tk"; tl: "au.tl"; tm: "au.tm"; tn: "au.tn"; to: "au.to"; tp: "au.tp"; tq: "au.tq"; tr: "au.tr"; ts: "au.ts"; tt: "au.tt"; tu: "au.tu"; tv: "au.tv"; tw: "au.tw"; tx: "au.tx"; ty: "au.ty"; tz: "au.tz"; ua: "au.ua"; ub: "au.ub"; uc: "au.uc"; ud: "au.ud"; ue: "au.ue"; uf: "au.uf"; ug: "au.ug"; uh: "au.uh"; ui: "au.ui"; uj: "au.uj"; uk: "au.uk"; ul: "au.ul"; um: "au.um"; un: "au.un"; uo: "au.uo"; up: "au.up"; uq: "au.uq"; ur: "au.ur"; us: "au.us"; ut: "au.ut"; uu: "au.uu"; uv: "au.uv"; uw: "au.uw"; ux: "au.ux"; uy: "au.uy"; uz: "au.uz"; va: "au.va"; vb: "au.vb"; vc: "au.vc"; vd: "au.vd"; ve: "au.ve"; vf: "au.vf"; vg: "au.vg"; vh: "au.vh"; vi: "au.vi"; vj: "au.vj"; vk: "au.vk"; vl: "au.vl"; vm: "au.vm"; vn: "au.vn"; vo: "au.vo"; vp: "au.vp"; vq: "au.vq"; vr: "au.vr"; vs: "au.vs"; vt: "au.vt"; vu: "au.vu"; vv: "au.vv"; vw: "au.vw"; vx: "au.vx"; vy: "au.vy"; vz: "au.vz"; wa: "au.wa"; wb: "au.wb"; wc: "au.wc"; wd: "au.wd"; we: "au.we"; wf: "au.wf"; wg: "au.wg"; wh: "au.wh"; wi: "au.wi"; wj: "au.wj"; wk: "au.wk"; wl: "au.wl"; wm: "au.wm"; wn: "au.wn"; wo: "au.wo"; wp: "au.wp"; wq: "au.wq"; wr: "au.wr"; ws: "au.ws"; wt: "au.wt"; wu: "au.wu"; wv: "au.wv"; ww: "au.ww"; wx: "au.wx"; wy: "au.wy"; wz: "au.wz"; xa: "au.xa"; xb: "au.xb"; xc: "au.xc"; xd: "au.xd"; xe: "au.xe"; xf: "au.xf"; xg: "au.xg"; xh: "au.xh"; xi: "au.xi"; xj: "au.xj"; xk: "au.xk"; xl: "au.xl"; xm: "au.xm"; xn: "au.xn"; xo: "au.xo"; xp: "au.xp"; xq: "au.xq"; xr: "au.xr"; xs: "au.xs"; xt: "au.xt"; xu: "au.xu"; xv: "au.xv"; xw: "au.xw"; xx: "au.xx"; xy: "au.xy"; xz: "au.xz"; ya: "au.ya"; yb: "au.yb"; yc: "au.yc"; yd: "au.yd"; ye: "au.ye"; yf: "au.yf"; yg: "au.yg"; yh: "au.yh"; yi: "au.yi"; yj: "au.yj"; yk: "au.yk"; yl: "au.yl"; ym: "au.ym"; yn: "au.yn"; yo: "au.yo"; yp: "au.yp"; yq: "au.yq"; yr: "au.yr"; ys: "au.ys"; yt: "au.yt"; yu: "au.yu"; yv: "au.yv"; yw: "au.yw"; yx: "au.yx"; yy: "au.yy"; yz: "au.yz"; za: "au.za"; zb: "au.zb"; zc: "au.zc"; zd: "au.zd"; ze: "au.ze"; zf: "au.zf"; zg: "au.zg"; zh: "au.zh"; zi: "au.zi"; zj: "au.zj"; zk: "au.zk"; zl: "au.zl"; zm: "au.zm"; zn: "au.zn"; zo: "au.zo"; zp: "au.zp"; zq: "au.zq"; zr: "au.zr"; zs: "au.zs"; zt: "au.zt"; zu: "au.zu"; zv: "au.zv"; zw: "au.zw"; zx: "au.zx"; zy: "au.zy"; zz: "au.zz"; }; av: { aa: "av.aa"; ab: "av.ab"; ac: "av.ac"; ad: "av.ad"; ae: "av.ae"; af: "av.af"; ag: "av.ag"; ah: "av.ah"; ai: "av.ai"; aj: "av.aj"; ak: "av.ak"; al: "av.al"; am: "av.am"; an: "av.an"; ao: "av.ao"; ap: "av.ap"; aq: "av.aq"; ar: "av.ar"; as: "av.as"; at: "av.at"; au: "av.au"; av: "av.av"; aw: "av.aw"; ax: "av.ax"; ay: "av.ay"; az: "av.az"; ba: "av.ba"; bb: "av.bb"; bc: "av.bc"; bd: "av.bd"; be: "av.be"; bf: "av.bf"; bg: "av.bg"; bh: "av.bh"; bi: "av.bi"; bj: "av.bj"; bk: "av.bk"; bl: "av.bl"; bm: "av.bm"; bn: "av.bn"; bo: "av.bo"; bp: "av.bp"; bq: "av.bq"; br: "av.br"; bs: "av.bs"; bt: "av.bt"; bu: "av.bu"; bv: "av.bv"; bw: "av.bw"; bx: "av.bx"; by: "av.by"; bz: "av.bz"; ca: "av.ca"; cb: "av.cb"; cc: "av.cc"; cd: "av.cd"; ce: "av.ce"; cf: "av.cf"; cg: "av.cg"; ch: "av.ch"; ci: "av.ci"; cj: "av.cj"; ck: "av.ck"; cl: "av.cl"; cm: "av.cm"; cn: "av.cn"; co: "av.co"; cp: "av.cp"; cq: "av.cq"; cr: "av.cr"; cs: "av.cs"; ct: "av.ct"; cu: "av.cu"; cv: "av.cv"; cw: "av.cw"; cx: "av.cx"; cy: "av.cy"; cz: "av.cz"; da: "av.da"; db: "av.db"; dc: "av.dc"; dd: "av.dd"; de: "av.de"; df: "av.df"; dg: "av.dg"; dh: "av.dh"; di: "av.di"; dj: "av.dj"; dk: "av.dk"; dl: "av.dl"; dm: "av.dm"; dn: "av.dn"; do: "av.do"; dp: "av.dp"; dq: "av.dq"; dr: "av.dr"; ds: "av.ds"; dt: "av.dt"; du: "av.du"; dv: "av.dv"; dw: "av.dw"; dx: "av.dx"; dy: "av.dy"; dz: "av.dz"; ea: "av.ea"; eb: "av.eb"; ec: "av.ec"; ed: "av.ed"; ee: "av.ee"; ef: "av.ef"; eg: "av.eg"; eh: "av.eh"; ei: "av.ei"; ej: "av.ej"; ek: "av.ek"; el: "av.el"; em: "av.em"; en: "av.en"; eo: "av.eo"; ep: "av.ep"; eq: "av.eq"; er: "av.er"; es: "av.es"; et: "av.et"; eu: "av.eu"; ev: "av.ev"; ew: "av.ew"; ex: "av.ex"; ey: "av.ey"; ez: "av.ez"; fa: "av.fa"; fb: "av.fb"; fc: "av.fc"; fd: "av.fd"; fe: "av.fe"; ff: "av.ff"; fg: "av.fg"; fh: "av.fh"; fi: "av.fi"; fj: "av.fj"; fk: "av.fk"; fl: "av.fl"; fm: "av.fm"; fn: "av.fn"; fo: "av.fo"; fp: "av.fp"; fq: "av.fq"; fr: "av.fr"; fs: "av.fs"; ft: "av.ft"; fu: "av.fu"; fv: "av.fv"; fw: "av.fw"; fx: "av.fx"; fy: "av.fy"; fz: "av.fz"; ga: "av.ga"; gb: "av.gb"; gc: "av.gc"; gd: "av.gd"; ge: "av.ge"; gf: "av.gf"; gg: "av.gg"; gh: "av.gh"; gi: "av.gi"; gj: "av.gj"; gk: "av.gk"; gl: "av.gl"; gm: "av.gm"; gn: "av.gn"; go: "av.go"; gp: "av.gp"; gq: "av.gq"; gr: "av.gr"; gs: "av.gs"; gt: "av.gt"; gu: "av.gu"; gv: "av.gv"; gw: "av.gw"; gx: "av.gx"; gy: "av.gy"; gz: "av.gz"; ha: "av.ha"; hb: "av.hb"; hc: "av.hc"; hd: "av.hd"; he: "av.he"; hf: "av.hf"; hg: "av.hg"; hh: "av.hh"; hi: "av.hi"; hj: "av.hj"; hk: "av.hk"; hl: "av.hl"; hm: "av.hm"; hn: "av.hn"; ho: "av.ho"; hp: "av.hp"; hq: "av.hq"; hr: "av.hr"; hs: "av.hs"; ht: "av.ht"; hu: "av.hu"; hv: "av.hv"; hw: "av.hw"; hx: "av.hx"; hy: "av.hy"; hz: "av.hz"; ia: "av.ia"; ib: "av.ib"; ic: "av.ic"; id: "av.id"; ie: "av.ie"; if: "av.if"; ig: "av.ig"; ih: "av.ih"; ii: "av.ii"; ij: "av.ij"; ik: "av.ik"; il: "av.il"; im: "av.im"; in: "av.in"; io: "av.io"; ip: "av.ip"; iq: "av.iq"; ir: "av.ir"; is: "av.is"; it: "av.it"; iu: "av.iu"; iv: "av.iv"; iw: "av.iw"; ix: "av.ix"; iy: "av.iy"; iz: "av.iz"; ja: "av.ja"; jb: "av.jb"; jc: "av.jc"; jd: "av.jd"; je: "av.je"; jf: "av.jf"; jg: "av.jg"; jh: "av.jh"; ji: "av.ji"; jj: "av.jj"; jk: "av.jk"; jl: "av.jl"; jm: "av.jm"; jn: "av.jn"; jo: "av.jo"; jp: "av.jp"; jq: "av.jq"; jr: "av.jr"; js: "av.js"; jt: "av.jt"; ju: "av.ju"; jv: "av.jv"; jw: "av.jw"; jx: "av.jx"; jy: "av.jy"; jz: "av.jz"; ka: "av.ka"; kb: "av.kb"; kc: "av.kc"; kd: "av.kd"; ke: "av.ke"; kf: "av.kf"; kg: "av.kg"; kh: "av.kh"; ki: "av.ki"; kj: "av.kj"; kk: "av.kk"; kl: "av.kl"; km: "av.km"; kn: "av.kn"; ko: "av.ko"; kp: "av.kp"; kq: "av.kq"; kr: "av.kr"; ks: "av.ks"; kt: "av.kt"; ku: "av.ku"; kv: "av.kv"; kw: "av.kw"; kx: "av.kx"; ky: "av.ky"; kz: "av.kz"; la: "av.la"; lb: "av.lb"; lc: "av.lc"; ld: "av.ld"; le: "av.le"; lf: "av.lf"; lg: "av.lg"; lh: "av.lh"; li: "av.li"; lj: "av.lj"; lk: "av.lk"; ll: "av.ll"; lm: "av.lm"; ln: "av.ln"; lo: "av.lo"; lp: "av.lp"; lq: "av.lq"; lr: "av.lr"; ls: "av.ls"; lt: "av.lt"; lu: "av.lu"; lv: "av.lv"; lw: "av.lw"; lx: "av.lx"; ly: "av.ly"; lz: "av.lz"; ma: "av.ma"; mb: "av.mb"; mc: "av.mc"; md: "av.md"; me: "av.me"; mf: "av.mf"; mg: "av.mg"; mh: "av.mh"; mi: "av.mi"; mj: "av.mj"; mk: "av.mk"; ml: "av.ml"; mm: "av.mm"; mn: "av.mn"; mo: "av.mo"; mp: "av.mp"; mq: "av.mq"; mr: "av.mr"; ms: "av.ms"; mt: "av.mt"; mu: "av.mu"; mv: "av.mv"; mw: "av.mw"; mx: "av.mx"; my: "av.my"; mz: "av.mz"; na: "av.na"; nb: "av.nb"; nc: "av.nc"; nd: "av.nd"; ne: "av.ne"; nf: "av.nf"; ng: "av.ng"; nh: "av.nh"; ni: "av.ni"; nj: "av.nj"; nk: "av.nk"; nl: "av.nl"; nm: "av.nm"; nn: "av.nn"; no: "av.no"; np: "av.np"; nq: "av.nq"; nr: "av.nr"; ns: "av.ns"; nt: "av.nt"; nu: "av.nu"; nv: "av.nv"; nw: "av.nw"; nx: "av.nx"; ny: "av.ny"; nz: "av.nz"; oa: "av.oa"; ob: "av.ob"; oc: "av.oc"; od: "av.od"; oe: "av.oe"; of: "av.of"; og: "av.og"; oh: "av.oh"; oi: "av.oi"; oj: "av.oj"; ok: "av.ok"; ol: "av.ol"; om: "av.om"; on: "av.on"; oo: "av.oo"; op: "av.op"; oq: "av.oq"; or: "av.or"; os: "av.os"; ot: "av.ot"; ou: "av.ou"; ov: "av.ov"; ow: "av.ow"; ox: "av.ox"; oy: "av.oy"; oz: "av.oz"; pa: "av.pa"; pb: "av.pb"; pc: "av.pc"; pd: "av.pd"; pe: "av.pe"; pf: "av.pf"; pg: "av.pg"; ph: "av.ph"; pi: "av.pi"; pj: "av.pj"; pk: "av.pk"; pl: "av.pl"; pm: "av.pm"; pn: "av.pn"; po: "av.po"; pp: "av.pp"; pq: "av.pq"; pr: "av.pr"; ps: "av.ps"; pt: "av.pt"; pu: "av.pu"; pv: "av.pv"; pw: "av.pw"; px: "av.px"; py: "av.py"; pz: "av.pz"; qa: "av.qa"; qb: "av.qb"; qc: "av.qc"; qd: "av.qd"; qe: "av.qe"; qf: "av.qf"; qg: "av.qg"; qh: "av.qh"; qi: "av.qi"; qj: "av.qj"; qk: "av.qk"; ql: "av.ql"; qm: "av.qm"; qn: "av.qn"; qo: "av.qo"; qp: "av.qp"; qq: "av.qq"; qr: "av.qr"; qs: "av.qs"; qt: "av.qt"; qu: "av.qu"; qv: "av.qv"; qw: "av.qw"; qx: "av.qx"; qy: "av.qy"; qz: "av.qz"; ra: "av.ra"; rb: "av.rb"; rc: "av.rc"; rd: "av.rd"; re: "av.re"; rf: "av.rf"; rg: "av.rg"; rh: "av.rh"; ri: "av.ri"; rj: "av.rj"; rk: "av.rk"; rl: "av.rl"; rm: "av.rm"; rn: "av.rn"; ro: "av.ro"; rp: "av.rp"; rq: "av.rq"; rr: "av.rr"; rs: "av.rs"; rt: "av.rt"; ru: "av.ru"; rv: "av.rv"; rw: "av.rw"; rx: "av.rx"; ry: "av.ry"; rz: "av.rz"; sa: "av.sa"; sb: "av.sb"; sc: "av.sc"; sd: "av.sd"; se: "av.se"; sf: "av.sf"; sg: "av.sg"; sh: "av.sh"; si: "av.si"; sj: "av.sj"; sk: "av.sk"; sl: "av.sl"; sm: "av.sm"; sn: "av.sn"; so: "av.so"; sp: "av.sp"; sq: "av.sq"; sr: "av.sr"; ss: "av.ss"; st: "av.st"; su: "av.su"; sv: "av.sv"; sw: "av.sw"; sx: "av.sx"; sy: "av.sy"; sz: "av.sz"; ta: "av.ta"; tb: "av.tb"; tc: "av.tc"; td: "av.td"; te: "av.te"; tf: "av.tf"; tg: "av.tg"; th: "av.th"; ti: "av.ti"; tj: "av.tj"; tk: "av.tk"; tl: "av.tl"; tm: "av.tm"; tn: "av.tn"; to: "av.to"; tp: "av.tp"; tq: "av.tq"; tr: "av.tr"; ts: "av.ts"; tt: "av.tt"; tu: "av.tu"; tv: "av.tv"; tw: "av.tw"; tx: "av.tx"; ty: "av.ty"; tz: "av.tz"; ua: "av.ua"; ub: "av.ub"; uc: "av.uc"; ud: "av.ud"; ue: "av.ue"; uf: "av.uf"; ug: "av.ug"; uh: "av.uh"; ui: "av.ui"; uj: "av.uj"; uk: "av.uk"; ul: "av.ul"; um: "av.um"; un: "av.un"; uo: "av.uo"; up: "av.up"; uq: "av.uq"; ur: "av.ur"; us: "av.us"; ut: "av.ut"; uu: "av.uu"; uv: "av.uv"; uw: "av.uw"; ux: "av.ux"; uy: "av.uy"; uz: "av.uz"; va: "av.va"; vb: "av.vb"; vc: "av.vc"; vd: "av.vd"; ve: "av.ve"; vf: "av.vf"; vg: "av.vg"; vh: "av.vh"; vi: "av.vi"; vj: "av.vj"; vk: "av.vk"; vl: "av.vl"; vm: "av.vm"; vn: "av.vn"; vo: "av.vo"; vp: "av.vp"; vq: "av.vq"; vr: "av.vr"; vs: "av.vs"; vt: "av.vt"; vu: "av.vu"; vv: "av.vv"; vw: "av.vw"; vx: "av.vx"; vy: "av.vy"; vz: "av.vz"; wa: "av.wa"; wb: "av.wb"; wc: "av.wc"; wd: "av.wd"; we: "av.we"; wf: "av.wf"; wg: "av.wg"; wh: "av.wh"; wi: "av.wi"; wj: "av.wj"; wk: "av.wk"; wl: "av.wl"; wm: "av.wm"; wn: "av.wn"; wo: "av.wo"; wp: "av.wp"; wq: "av.wq"; wr: "av.wr"; ws: "av.ws"; wt: "av.wt"; wu: "av.wu"; wv: "av.wv"; ww: "av.ww"; wx: "av.wx"; wy: "av.wy"; wz: "av.wz"; xa: "av.xa"; xb: "av.xb"; xc: "av.xc"; xd: "av.xd"; xe: "av.xe"; xf: "av.xf"; xg: "av.xg"; xh: "av.xh"; xi: "av.xi"; xj: "av.xj"; xk: "av.xk"; xl: "av.xl"; xm: "av.xm"; xn: "av.xn"; xo: "av.xo"; xp: "av.xp"; xq: "av.xq"; xr: "av.xr"; xs: "av.xs"; xt: "av.xt"; xu: "av.xu"; xv: "av.xv"; xw: "av.xw"; xx: "av.xx"; xy: "av.xy"; xz: "av.xz"; ya: "av.ya"; yb: "av.yb"; yc: "av.yc"; yd: "av.yd"; ye: "av.ye"; yf: "av.yf"; yg: "av.yg"; yh: "av.yh"; yi: "av.yi"; yj: "av.yj"; yk: "av.yk"; yl: "av.yl"; ym: "av.ym"; yn: "av.yn"; yo: "av.yo"; yp: "av.yp"; yq: "av.yq"; yr: "av.yr"; ys: "av.ys"; yt: "av.yt"; yu: "av.yu"; yv: "av.yv"; yw: "av.yw"; yx: "av.yx"; yy: "av.yy"; yz: "av.yz"; za: "av.za"; zb: "av.zb"; zc: "av.zc"; zd: "av.zd"; ze: "av.ze"; zf: "av.zf"; zg: "av.zg"; zh: "av.zh"; zi: "av.zi"; zj: "av.zj"; zk: "av.zk"; zl: "av.zl"; zm: "av.zm"; zn: "av.zn"; zo: "av.zo"; zp: "av.zp"; zq: "av.zq"; zr: "av.zr"; zs: "av.zs"; zt: "av.zt"; zu: "av.zu"; zv: "av.zv"; zw: "av.zw"; zx: "av.zx"; zy: "av.zy"; zz: "av.zz"; }; aw: { aa: "aw.aa"; ab: "aw.ab"; ac: "aw.ac"; ad: "aw.ad"; ae: "aw.ae"; af: "aw.af"; ag: "aw.ag"; ah: "aw.ah"; ai: "aw.ai"; aj: "aw.aj"; ak: "aw.ak"; al: "aw.al"; am: "aw.am"; an: "aw.an"; ao: "aw.ao"; ap: "aw.ap"; aq: "aw.aq"; ar: "aw.ar"; as: "aw.as"; at: "aw.at"; au: "aw.au"; av: "aw.av"; aw: "aw.aw"; ax: "aw.ax"; ay: "aw.ay"; az: "aw.az"; ba: "aw.ba"; bb: "aw.bb"; bc: "aw.bc"; bd: "aw.bd"; be: "aw.be"; bf: "aw.bf"; bg: "aw.bg"; bh: "aw.bh"; bi: "aw.bi"; bj: "aw.bj"; bk: "aw.bk"; bl: "aw.bl"; bm: "aw.bm"; bn: "aw.bn"; bo: "aw.bo"; bp: "aw.bp"; bq: "aw.bq"; br: "aw.br"; bs: "aw.bs"; bt: "aw.bt"; bu: "aw.bu"; bv: "aw.bv"; bw: "aw.bw"; bx: "aw.bx"; by: "aw.by"; bz: "aw.bz"; ca: "aw.ca"; cb: "aw.cb"; cc: "aw.cc"; cd: "aw.cd"; ce: "aw.ce"; cf: "aw.cf"; cg: "aw.cg"; ch: "aw.ch"; ci: "aw.ci"; cj: "aw.cj"; ck: "aw.ck"; cl: "aw.cl"; cm: "aw.cm"; cn: "aw.cn"; co: "aw.co"; cp: "aw.cp"; cq: "aw.cq"; cr: "aw.cr"; cs: "aw.cs"; ct: "aw.ct"; cu: "aw.cu"; cv: "aw.cv"; cw: "aw.cw"; cx: "aw.cx"; cy: "aw.cy"; cz: "aw.cz"; da: "aw.da"; db: "aw.db"; dc: "aw.dc"; dd: "aw.dd"; de: "aw.de"; df: "aw.df"; dg: "aw.dg"; dh: "aw.dh"; di: "aw.di"; dj: "aw.dj"; dk: "aw.dk"; dl: "aw.dl"; dm: "aw.dm"; dn: "aw.dn"; do: "aw.do"; dp: "aw.dp"; dq: "aw.dq"; dr: "aw.dr"; ds: "aw.ds"; dt: "aw.dt"; du: "aw.du"; dv: "aw.dv"; dw: "aw.dw"; dx: "aw.dx"; dy: "aw.dy"; dz: "aw.dz"; ea: "aw.ea"; eb: "aw.eb"; ec: "aw.ec"; ed: "aw.ed"; ee: "aw.ee"; ef: "aw.ef"; eg: "aw.eg"; eh: "aw.eh"; ei: "aw.ei"; ej: "aw.ej"; ek: "aw.ek"; el: "aw.el"; em: "aw.em"; en: "aw.en"; eo: "aw.eo"; ep: "aw.ep"; eq: "aw.eq"; er: "aw.er"; es: "aw.es"; et: "aw.et"; eu: "aw.eu"; ev: "aw.ev"; ew: "aw.ew"; ex: "aw.ex"; ey: "aw.ey"; ez: "aw.ez"; fa: "aw.fa"; fb: "aw.fb"; fc: "aw.fc"; fd: "aw.fd"; fe: "aw.fe"; ff: "aw.ff"; fg: "aw.fg"; fh: "aw.fh"; fi: "aw.fi"; fj: "aw.fj"; fk: "aw.fk"; fl: "aw.fl"; fm: "aw.fm"; fn: "aw.fn"; fo: "aw.fo"; fp: "aw.fp"; fq: "aw.fq"; fr: "aw.fr"; fs: "aw.fs"; ft: "aw.ft"; fu: "aw.fu"; fv: "aw.fv"; fw: "aw.fw"; fx: "aw.fx"; fy: "aw.fy"; fz: "aw.fz"; ga: "aw.ga"; gb: "aw.gb"; gc: "aw.gc"; gd: "aw.gd"; ge: "aw.ge"; gf: "aw.gf"; gg: "aw.gg"; gh: "aw.gh"; gi: "aw.gi"; gj: "aw.gj"; gk: "aw.gk"; gl: "aw.gl"; gm: "aw.gm"; gn: "aw.gn"; go: "aw.go"; gp: "aw.gp"; gq: "aw.gq"; gr: "aw.gr"; gs: "aw.gs"; gt: "aw.gt"; gu: "aw.gu"; gv: "aw.gv"; gw: "aw.gw"; gx: "aw.gx"; gy: "aw.gy"; gz: "aw.gz"; ha: "aw.ha"; hb: "aw.hb"; hc: "aw.hc"; hd: "aw.hd"; he: "aw.he"; hf: "aw.hf"; hg: "aw.hg"; hh: "aw.hh"; hi: "aw.hi"; hj: "aw.hj"; hk: "aw.hk"; hl: "aw.hl"; hm: "aw.hm"; hn: "aw.hn"; ho: "aw.ho"; hp: "aw.hp"; hq: "aw.hq"; hr: "aw.hr"; hs: "aw.hs"; ht: "aw.ht"; hu: "aw.hu"; hv: "aw.hv"; hw: "aw.hw"; hx: "aw.hx"; hy: "aw.hy"; hz: "aw.hz"; ia: "aw.ia"; ib: "aw.ib"; ic: "aw.ic"; id: "aw.id"; ie: "aw.ie"; if: "aw.if"; ig: "aw.ig"; ih: "aw.ih"; ii: "aw.ii"; ij: "aw.ij"; ik: "aw.ik"; il: "aw.il"; im: "aw.im"; in: "aw.in"; io: "aw.io"; ip: "aw.ip"; iq: "aw.iq"; ir: "aw.ir"; is: "aw.is"; it: "aw.it"; iu: "aw.iu"; iv: "aw.iv"; iw: "aw.iw"; ix: "aw.ix"; iy: "aw.iy"; iz: "aw.iz"; ja: "aw.ja"; jb: "aw.jb"; jc: "aw.jc"; jd: "aw.jd"; je: "aw.je"; jf: "aw.jf"; jg: "aw.jg"; jh: "aw.jh"; ji: "aw.ji"; jj: "aw.jj"; jk: "aw.jk"; jl: "aw.jl"; jm: "aw.jm"; jn: "aw.jn"; jo: "aw.jo"; jp: "aw.jp"; jq: "aw.jq"; jr: "aw.jr"; js: "aw.js"; jt: "aw.jt"; ju: "aw.ju"; jv: "aw.jv"; jw: "aw.jw"; jx: "aw.jx"; jy: "aw.jy"; jz: "aw.jz"; ka: "aw.ka"; kb: "aw.kb"; kc: "aw.kc"; kd: "aw.kd"; ke: "aw.ke"; kf: "aw.kf"; kg: "aw.kg"; kh: "aw.kh"; ki: "aw.ki"; kj: "aw.kj"; kk: "aw.kk"; kl: "aw.kl"; km: "aw.km"; kn: "aw.kn"; ko: "aw.ko"; kp: "aw.kp"; kq: "aw.kq"; kr: "aw.kr"; ks: "aw.ks"; kt: "aw.kt"; ku: "aw.ku"; kv: "aw.kv"; kw: "aw.kw"; kx: "aw.kx"; ky: "aw.ky"; kz: "aw.kz"; la: "aw.la"; lb: "aw.lb"; lc: "aw.lc"; ld: "aw.ld"; le: "aw.le"; lf: "aw.lf"; lg: "aw.lg"; lh: "aw.lh"; li: "aw.li"; lj: "aw.lj"; lk: "aw.lk"; ll: "aw.ll"; lm: "aw.lm"; ln: "aw.ln"; lo: "aw.lo"; lp: "aw.lp"; lq: "aw.lq"; lr: "aw.lr"; ls: "aw.ls"; lt: "aw.lt"; lu: "aw.lu"; lv: "aw.lv"; lw: "aw.lw"; lx: "aw.lx"; ly: "aw.ly"; lz: "aw.lz"; ma: "aw.ma"; mb: "aw.mb"; mc: "aw.mc"; md: "aw.md"; me: "aw.me"; mf: "aw.mf"; mg: "aw.mg"; mh: "aw.mh"; mi: "aw.mi"; mj: "aw.mj"; mk: "aw.mk"; ml: "aw.ml"; mm: "aw.mm"; mn: "aw.mn"; mo: "aw.mo"; mp: "aw.mp"; mq: "aw.mq"; mr: "aw.mr"; ms: "aw.ms"; mt: "aw.mt"; mu: "aw.mu"; mv: "aw.mv"; mw: "aw.mw"; mx: "aw.mx"; my: "aw.my"; mz: "aw.mz"; na: "aw.na"; nb: "aw.nb"; nc: "aw.nc"; nd: "aw.nd"; ne: "aw.ne"; nf: "aw.nf"; ng: "aw.ng"; nh: "aw.nh"; ni: "aw.ni"; nj: "aw.nj"; nk: "aw.nk"; nl: "aw.nl"; nm: "aw.nm"; nn: "aw.nn"; no: "aw.no"; np: "aw.np"; nq: "aw.nq"; nr: "aw.nr"; ns: "aw.ns"; nt: "aw.nt"; nu: "aw.nu"; nv: "aw.nv"; nw: "aw.nw"; nx: "aw.nx"; ny: "aw.ny"; nz: "aw.nz"; oa: "aw.oa"; ob: "aw.ob"; oc: "aw.oc"; od: "aw.od"; oe: "aw.oe"; of: "aw.of"; og: "aw.og"; oh: "aw.oh"; oi: "aw.oi"; oj: "aw.oj"; ok: "aw.ok"; ol: "aw.ol"; om: "aw.om"; on: "aw.on"; oo: "aw.oo"; op: "aw.op"; oq: "aw.oq"; or: "aw.or"; os: "aw.os"; ot: "aw.ot"; ou: "aw.ou"; ov: "aw.ov"; ow: "aw.ow"; ox: "aw.ox"; oy: "aw.oy"; oz: "aw.oz"; pa: "aw.pa"; pb: "aw.pb"; pc: "aw.pc"; pd: "aw.pd"; pe: "aw.pe"; pf: "aw.pf"; pg: "aw.pg"; ph: "aw.ph"; pi: "aw.pi"; pj: "aw.pj"; pk: "aw.pk"; pl: "aw.pl"; pm: "aw.pm"; pn: "aw.pn"; po: "aw.po"; pp: "aw.pp"; pq: "aw.pq"; pr: "aw.pr"; ps: "aw.ps"; pt: "aw.pt"; pu: "aw.pu"; pv: "aw.pv"; pw: "aw.pw"; px: "aw.px"; py: "aw.py"; pz: "aw.pz"; qa: "aw.qa"; qb: "aw.qb"; qc: "aw.qc"; qd: "aw.qd"; qe: "aw.qe"; qf: "aw.qf"; qg: "aw.qg"; qh: "aw.qh"; qi: "aw.qi"; qj: "aw.qj"; qk: "aw.qk"; ql: "aw.ql"; qm: "aw.qm"; qn: "aw.qn"; qo: "aw.qo"; qp: "aw.qp"; qq: "aw.qq"; qr: "aw.qr"; qs: "aw.qs"; qt: "aw.qt"; qu: "aw.qu"; qv: "aw.qv"; qw: "aw.qw"; qx: "aw.qx"; qy: "aw.qy"; qz: "aw.qz"; ra: "aw.ra"; rb: "aw.rb"; rc: "aw.rc"; rd: "aw.rd"; re: "aw.re"; rf: "aw.rf"; rg: "aw.rg"; rh: "aw.rh"; ri: "aw.ri"; rj: "aw.rj"; rk: "aw.rk"; rl: "aw.rl"; rm: "aw.rm"; rn: "aw.rn"; ro: "aw.ro"; rp: "aw.rp"; rq: "aw.rq"; rr: "aw.rr"; rs: "aw.rs"; rt: "aw.rt"; ru: "aw.ru"; rv: "aw.rv"; rw: "aw.rw"; rx: "aw.rx"; ry: "aw.ry"; rz: "aw.rz"; sa: "aw.sa"; sb: "aw.sb"; sc: "aw.sc"; sd: "aw.sd"; se: "aw.se"; sf: "aw.sf"; sg: "aw.sg"; sh: "aw.sh"; si: "aw.si"; sj: "aw.sj"; sk: "aw.sk"; sl: "aw.sl"; sm: "aw.sm"; sn: "aw.sn"; so: "aw.so"; sp: "aw.sp"; sq: "aw.sq"; sr: "aw.sr"; ss: "aw.ss"; st: "aw.st"; su: "aw.su"; sv: "aw.sv"; sw: "aw.sw"; sx: "aw.sx"; sy: "aw.sy"; sz: "aw.sz"; ta: "aw.ta"; tb: "aw.tb"; tc: "aw.tc"; td: "aw.td"; te: "aw.te"; tf: "aw.tf"; tg: "aw.tg"; th: "aw.th"; ti: "aw.ti"; tj: "aw.tj"; tk: "aw.tk"; tl: "aw.tl"; tm: "aw.tm"; tn: "aw.tn"; to: "aw.to"; tp: "aw.tp"; tq: "aw.tq"; tr: "aw.tr"; ts: "aw.ts"; tt: "aw.tt"; tu: "aw.tu"; tv: "aw.tv"; tw: "aw.tw"; tx: "aw.tx"; ty: "aw.ty"; tz: "aw.tz"; ua: "aw.ua"; ub: "aw.ub"; uc: "aw.uc"; ud: "aw.ud"; ue: "aw.ue"; uf: "aw.uf"; ug: "aw.ug"; uh: "aw.uh"; ui: "aw.ui"; uj: "aw.uj"; uk: "aw.uk"; ul: "aw.ul"; um: "aw.um"; un: "aw.un"; uo: "aw.uo"; up: "aw.up"; uq: "aw.uq"; ur: "aw.ur"; us: "aw.us"; ut: "aw.ut"; uu: "aw.uu"; uv: "aw.uv"; uw: "aw.uw"; ux: "aw.ux"; uy: "aw.uy"; uz: "aw.uz"; va: "aw.va"; vb: "aw.vb"; vc: "aw.vc"; vd: "aw.vd"; ve: "aw.ve"; vf: "aw.vf"; vg: "aw.vg"; vh: "aw.vh"; vi: "aw.vi"; vj: "aw.vj"; vk: "aw.vk"; vl: "aw.vl"; vm: "aw.vm"; vn: "aw.vn"; vo: "aw.vo"; vp: "aw.vp"; vq: "aw.vq"; vr: "aw.vr"; vs: "aw.vs"; vt: "aw.vt"; vu: "aw.vu"; vv: "aw.vv"; vw: "aw.vw"; vx: "aw.vx"; vy: "aw.vy"; vz: "aw.vz"; wa: "aw.wa"; wb: "aw.wb"; wc: "aw.wc"; wd: "aw.wd"; we: "aw.we"; wf: "aw.wf"; wg: "aw.wg"; wh: "aw.wh"; wi: "aw.wi"; wj: "aw.wj"; wk: "aw.wk"; wl: "aw.wl"; wm: "aw.wm"; wn: "aw.wn"; wo: "aw.wo"; wp: "aw.wp"; wq: "aw.wq"; wr: "aw.wr"; ws: "aw.ws"; wt: "aw.wt"; wu: "aw.wu"; wv: "aw.wv"; ww: "aw.ww"; wx: "aw.wx"; wy: "aw.wy"; wz: "aw.wz"; xa: "aw.xa"; xb: "aw.xb"; xc: "aw.xc"; xd: "aw.xd"; xe: "aw.xe"; xf: "aw.xf"; xg: "aw.xg"; xh: "aw.xh"; xi: "aw.xi"; xj: "aw.xj"; xk: "aw.xk"; xl: "aw.xl"; xm: "aw.xm"; xn: "aw.xn"; xo: "aw.xo"; xp: "aw.xp"; xq: "aw.xq"; xr: "aw.xr"; xs: "aw.xs"; xt: "aw.xt"; xu: "aw.xu"; xv: "aw.xv"; xw: "aw.xw"; xx: "aw.xx"; xy: "aw.xy"; xz: "aw.xz"; ya: "aw.ya"; yb: "aw.yb"; yc: "aw.yc"; yd: "aw.yd"; ye: "aw.ye"; yf: "aw.yf"; yg: "aw.yg"; yh: "aw.yh"; yi: "aw.yi"; yj: "aw.yj"; yk: "aw.yk"; yl: "aw.yl"; ym: "aw.ym"; yn: "aw.yn"; yo: "aw.yo"; yp: "aw.yp"; yq: "aw.yq"; yr: "aw.yr"; ys: "aw.ys"; yt: "aw.yt"; yu: "aw.yu"; yv: "aw.yv"; yw: "aw.yw"; yx: "aw.yx"; yy: "aw.yy"; yz: "aw.yz"; za: "aw.za"; zb: "aw.zb"; zc: "aw.zc"; zd: "aw.zd"; ze: "aw.ze"; zf: "aw.zf"; zg: "aw.zg"; zh: "aw.zh"; zi: "aw.zi"; zj: "aw.zj"; zk: "aw.zk"; zl: "aw.zl"; zm: "aw.zm"; zn: "aw.zn"; zo: "aw.zo"; zp: "aw.zp"; zq: "aw.zq"; zr: "aw.zr"; zs: "aw.zs"; zt: "aw.zt"; zu: "aw.zu"; zv: "aw.zv"; zw: "aw.zw"; zx: "aw.zx"; zy: "aw.zy"; zz: "aw.zz"; }; ax: { aa: "ax.aa"; ab: "ax.ab"; ac: "ax.ac"; ad: "ax.ad"; ae: "ax.ae"; af: "ax.af"; ag: "ax.ag"; ah: "ax.ah"; ai: "ax.ai"; aj: "ax.aj"; ak: "ax.ak"; al: "ax.al"; am: "ax.am"; an: "ax.an"; ao: "ax.ao"; ap: "ax.ap"; aq: "ax.aq"; ar: "ax.ar"; as: "ax.as"; at: "ax.at"; au: "ax.au"; av: "ax.av"; aw: "ax.aw"; ax: "ax.ax"; ay: "ax.ay"; az: "ax.az"; ba: "ax.ba"; bb: "ax.bb"; bc: "ax.bc"; bd: "ax.bd"; be: "ax.be"; bf: "ax.bf"; bg: "ax.bg"; bh: "ax.bh"; bi: "ax.bi"; bj: "ax.bj"; bk: "ax.bk"; bl: "ax.bl"; bm: "ax.bm"; bn: "ax.bn"; bo: "ax.bo"; bp: "ax.bp"; bq: "ax.bq"; br: "ax.br"; bs: "ax.bs"; bt: "ax.bt"; bu: "ax.bu"; bv: "ax.bv"; bw: "ax.bw"; bx: "ax.bx"; by: "ax.by"; bz: "ax.bz"; ca: "ax.ca"; cb: "ax.cb"; cc: "ax.cc"; cd: "ax.cd"; ce: "ax.ce"; cf: "ax.cf"; cg: "ax.cg"; ch: "ax.ch"; ci: "ax.ci"; cj: "ax.cj"; ck: "ax.ck"; cl: "ax.cl"; cm: "ax.cm"; cn: "ax.cn"; co: "ax.co"; cp: "ax.cp"; cq: "ax.cq"; cr: "ax.cr"; cs: "ax.cs"; ct: "ax.ct"; cu: "ax.cu"; cv: "ax.cv"; cw: "ax.cw"; cx: "ax.cx"; cy: "ax.cy"; cz: "ax.cz"; da: "ax.da"; db: "ax.db"; dc: "ax.dc"; dd: "ax.dd"; de: "ax.de"; df: "ax.df"; dg: "ax.dg"; dh: "ax.dh"; di: "ax.di"; dj: "ax.dj"; dk: "ax.dk"; dl: "ax.dl"; dm: "ax.dm"; dn: "ax.dn"; do: "ax.do"; dp: "ax.dp"; dq: "ax.dq"; dr: "ax.dr"; ds: "ax.ds"; dt: "ax.dt"; du: "ax.du"; dv: "ax.dv"; dw: "ax.dw"; dx: "ax.dx"; dy: "ax.dy"; dz: "ax.dz"; ea: "ax.ea"; eb: "ax.eb"; ec: "ax.ec"; ed: "ax.ed"; ee: "ax.ee"; ef: "ax.ef"; eg: "ax.eg"; eh: "ax.eh"; ei: "ax.ei"; ej: "ax.ej"; ek: "ax.ek"; el: "ax.el"; em: "ax.em"; en: "ax.en"; eo: "ax.eo"; ep: "ax.ep"; eq: "ax.eq"; er: "ax.er"; es: "ax.es"; et: "ax.et"; eu: "ax.eu"; ev: "ax.ev"; ew: "ax.ew"; ex: "ax.ex"; ey: "ax.ey"; ez: "ax.ez"; fa: "ax.fa"; fb: "ax.fb"; fc: "ax.fc"; fd: "ax.fd"; fe: "ax.fe"; ff: "ax.ff"; fg: "ax.fg"; fh: "ax.fh"; fi: "ax.fi"; fj: "ax.fj"; fk: "ax.fk"; fl: "ax.fl"; fm: "ax.fm"; fn: "ax.fn"; fo: "ax.fo"; fp: "ax.fp"; fq: "ax.fq"; fr: "ax.fr"; fs: "ax.fs"; ft: "ax.ft"; fu: "ax.fu"; fv: "ax.fv"; fw: "ax.fw"; fx: "ax.fx"; fy: "ax.fy"; fz: "ax.fz"; ga: "ax.ga"; gb: "ax.gb"; gc: "ax.gc"; gd: "ax.gd"; ge: "ax.ge"; gf: "ax.gf"; gg: "ax.gg"; gh: "ax.gh"; gi: "ax.gi"; gj: "ax.gj"; gk: "ax.gk"; gl: "ax.gl"; gm: "ax.gm"; gn: "ax.gn"; go: "ax.go"; gp: "ax.gp"; gq: "ax.gq"; gr: "ax.gr"; gs: "ax.gs"; gt: "ax.gt"; gu: "ax.gu"; gv: "ax.gv"; gw: "ax.gw"; gx: "ax.gx"; gy: "ax.gy"; gz: "ax.gz"; ha: "ax.ha"; hb: "ax.hb"; hc: "ax.hc"; hd: "ax.hd"; he: "ax.he"; hf: "ax.hf"; hg: "ax.hg"; hh: "ax.hh"; hi: "ax.hi"; hj: "ax.hj"; hk: "ax.hk"; hl: "ax.hl"; hm: "ax.hm"; hn: "ax.hn"; ho: "ax.ho"; hp: "ax.hp"; hq: "ax.hq"; hr: "ax.hr"; hs: "ax.hs"; ht: "ax.ht"; hu: "ax.hu"; hv: "ax.hv"; hw: "ax.hw"; hx: "ax.hx"; hy: "ax.hy"; hz: "ax.hz"; ia: "ax.ia"; ib: "ax.ib"; ic: "ax.ic"; id: "ax.id"; ie: "ax.ie"; if: "ax.if"; ig: "ax.ig"; ih: "ax.ih"; ii: "ax.ii"; ij: "ax.ij"; ik: "ax.ik"; il: "ax.il"; im: "ax.im"; in: "ax.in"; io: "ax.io"; ip: "ax.ip"; iq: "ax.iq"; ir: "ax.ir"; is: "ax.is"; it: "ax.it"; iu: "ax.iu"; iv: "ax.iv"; iw: "ax.iw"; ix: "ax.ix"; iy: "ax.iy"; iz: "ax.iz"; ja: "ax.ja"; jb: "ax.jb"; jc: "ax.jc"; jd: "ax.jd"; je: "ax.je"; jf: "ax.jf"; jg: "ax.jg"; jh: "ax.jh"; ji: "ax.ji"; jj: "ax.jj"; jk: "ax.jk"; jl: "ax.jl"; jm: "ax.jm"; jn: "ax.jn"; jo: "ax.jo"; jp: "ax.jp"; jq: "ax.jq"; jr: "ax.jr"; js: "ax.js"; jt: "ax.jt"; ju: "ax.ju"; jv: "ax.jv"; jw: "ax.jw"; jx: "ax.jx"; jy: "ax.jy"; jz: "ax.jz"; ka: "ax.ka"; kb: "ax.kb"; kc: "ax.kc"; kd: "ax.kd"; ke: "ax.ke"; kf: "ax.kf"; kg: "ax.kg"; kh: "ax.kh"; ki: "ax.ki"; kj: "ax.kj"; kk: "ax.kk"; kl: "ax.kl"; km: "ax.km"; kn: "ax.kn"; ko: "ax.ko"; kp: "ax.kp"; kq: "ax.kq"; kr: "ax.kr"; ks: "ax.ks"; kt: "ax.kt"; ku: "ax.ku"; kv: "ax.kv"; kw: "ax.kw"; kx: "ax.kx"; ky: "ax.ky"; kz: "ax.kz"; la: "ax.la"; lb: "ax.lb"; lc: "ax.lc"; ld: "ax.ld"; le: "ax.le"; lf: "ax.lf"; lg: "ax.lg"; lh: "ax.lh"; li: "ax.li"; lj: "ax.lj"; lk: "ax.lk"; ll: "ax.ll"; lm: "ax.lm"; ln: "ax.ln"; lo: "ax.lo"; lp: "ax.lp"; lq: "ax.lq"; lr: "ax.lr"; ls: "ax.ls"; lt: "ax.lt"; lu: "ax.lu"; lv: "ax.lv"; lw: "ax.lw"; lx: "ax.lx"; ly: "ax.ly"; lz: "ax.lz"; ma: "ax.ma"; mb: "ax.mb"; mc: "ax.mc"; md: "ax.md"; me: "ax.me"; mf: "ax.mf"; mg: "ax.mg"; mh: "ax.mh"; mi: "ax.mi"; mj: "ax.mj"; mk: "ax.mk"; ml: "ax.ml"; mm: "ax.mm"; mn: "ax.mn"; mo: "ax.mo"; mp: "ax.mp"; mq: "ax.mq"; mr: "ax.mr"; ms: "ax.ms"; mt: "ax.mt"; mu: "ax.mu"; mv: "ax.mv"; mw: "ax.mw"; mx: "ax.mx"; my: "ax.my"; mz: "ax.mz"; na: "ax.na"; nb: "ax.nb"; nc: "ax.nc"; nd: "ax.nd"; ne: "ax.ne"; nf: "ax.nf"; ng: "ax.ng"; nh: "ax.nh"; ni: "ax.ni"; nj: "ax.nj"; nk: "ax.nk"; nl: "ax.nl"; nm: "ax.nm"; nn: "ax.nn"; no: "ax.no"; np: "ax.np"; nq: "ax.nq"; nr: "ax.nr"; ns: "ax.ns"; nt: "ax.nt"; nu: "ax.nu"; nv: "ax.nv"; nw: "ax.nw"; nx: "ax.nx"; ny: "ax.ny"; nz: "ax.nz"; oa: "ax.oa"; ob: "ax.ob"; oc: "ax.oc"; od: "ax.od"; oe: "ax.oe"; of: "ax.of"; og: "ax.og"; oh: "ax.oh"; oi: "ax.oi"; oj: "ax.oj"; ok: "ax.ok"; ol: "ax.ol"; om: "ax.om"; on: "ax.on"; oo: "ax.oo"; op: "ax.op"; oq: "ax.oq"; or: "ax.or"; os: "ax.os"; ot: "ax.ot"; ou: "ax.ou"; ov: "ax.ov"; ow: "ax.ow"; ox: "ax.ox"; oy: "ax.oy"; oz: "ax.oz"; pa: "ax.pa"; pb: "ax.pb"; pc: "ax.pc"; pd: "ax.pd"; pe: "ax.pe"; pf: "ax.pf"; pg: "ax.pg"; ph: "ax.ph"; pi: "ax.pi"; pj: "ax.pj"; pk: "ax.pk"; pl: "ax.pl"; pm: "ax.pm"; pn: "ax.pn"; po: "ax.po"; pp: "ax.pp"; pq: "ax.pq"; pr: "ax.pr"; ps: "ax.ps"; pt: "ax.pt"; pu: "ax.pu"; pv: "ax.pv"; pw: "ax.pw"; px: "ax.px"; py: "ax.py"; pz: "ax.pz"; qa: "ax.qa"; qb: "ax.qb"; qc: "ax.qc"; qd: "ax.qd"; qe: "ax.qe"; qf: "ax.qf"; qg: "ax.qg"; qh: "ax.qh"; qi: "ax.qi"; qj: "ax.qj"; qk: "ax.qk"; ql: "ax.ql"; qm: "ax.qm"; qn: "ax.qn"; qo: "ax.qo"; qp: "ax.qp"; qq: "ax.qq"; qr: "ax.qr"; qs: "ax.qs"; qt: "ax.qt"; qu: "ax.qu"; qv: "ax.qv"; qw: "ax.qw"; qx: "ax.qx"; qy: "ax.qy"; qz: "ax.qz"; ra: "ax.ra"; rb: "ax.rb"; rc: "ax.rc"; rd: "ax.rd"; re: "ax.re"; rf: "ax.rf"; rg: "ax.rg"; rh: "ax.rh"; ri: "ax.ri"; rj: "ax.rj"; rk: "ax.rk"; rl: "ax.rl"; rm: "ax.rm"; rn: "ax.rn"; ro: "ax.ro"; rp: "ax.rp"; rq: "ax.rq"; rr: "ax.rr"; rs: "ax.rs"; rt: "ax.rt"; ru: "ax.ru"; rv: "ax.rv"; rw: "ax.rw"; rx: "ax.rx"; ry: "ax.ry"; rz: "ax.rz"; sa: "ax.sa"; sb: "ax.sb"; sc: "ax.sc"; sd: "ax.sd"; se: "ax.se"; sf: "ax.sf"; sg: "ax.sg"; sh: "ax.sh"; si: "ax.si"; sj: "ax.sj"; sk: "ax.sk"; sl: "ax.sl"; sm: "ax.sm"; sn: "ax.sn"; so: "ax.so"; sp: "ax.sp"; sq: "ax.sq"; sr: "ax.sr"; ss: "ax.ss"; st: "ax.st"; su: "ax.su"; sv: "ax.sv"; sw: "ax.sw"; sx: "ax.sx"; sy: "ax.sy"; sz: "ax.sz"; ta: "ax.ta"; tb: "ax.tb"; tc: "ax.tc"; td: "ax.td"; te: "ax.te"; tf: "ax.tf"; tg: "ax.tg"; th: "ax.th"; ti: "ax.ti"; tj: "ax.tj"; tk: "ax.tk"; tl: "ax.tl"; tm: "ax.tm"; tn: "ax.tn"; to: "ax.to"; tp: "ax.tp"; tq: "ax.tq"; tr: "ax.tr"; ts: "ax.ts"; tt: "ax.tt"; tu: "ax.tu"; tv: "ax.tv"; tw: "ax.tw"; tx: "ax.tx"; ty: "ax.ty"; tz: "ax.tz"; ua: "ax.ua"; ub: "ax.ub"; uc: "ax.uc"; ud: "ax.ud"; ue: "ax.ue"; uf: "ax.uf"; ug: "ax.ug"; uh: "ax.uh"; ui: "ax.ui"; uj: "ax.uj"; uk: "ax.uk"; ul: "ax.ul"; um: "ax.um"; un: "ax.un"; uo: "ax.uo"; up: "ax.up"; uq: "ax.uq"; ur: "ax.ur"; us: "ax.us"; ut: "ax.ut"; uu: "ax.uu"; uv: "ax.uv"; uw: "ax.uw"; ux: "ax.ux"; uy: "ax.uy"; uz: "ax.uz"; va: "ax.va"; vb: "ax.vb"; vc: "ax.vc"; vd: "ax.vd"; ve: "ax.ve"; vf: "ax.vf"; vg: "ax.vg"; vh: "ax.vh"; vi: "ax.vi"; vj: "ax.vj"; vk: "ax.vk"; vl: "ax.vl"; vm: "ax.vm"; vn: "ax.vn"; vo: "ax.vo"; vp: "ax.vp"; vq: "ax.vq"; vr: "ax.vr"; vs: "ax.vs"; vt: "ax.vt"; vu: "ax.vu"; vv: "ax.vv"; vw: "ax.vw"; vx: "ax.vx"; vy: "ax.vy"; vz: "ax.vz"; wa: "ax.wa"; wb: "ax.wb"; wc: "ax.wc"; wd: "ax.wd"; we: "ax.we"; wf: "ax.wf"; wg: "ax.wg"; wh: "ax.wh"; wi: "ax.wi"; wj: "ax.wj"; wk: "ax.wk"; wl: "ax.wl"; wm: "ax.wm"; wn: "ax.wn"; wo: "ax.wo"; wp: "ax.wp"; wq: "ax.wq"; wr: "ax.wr"; ws: "ax.ws"; wt: "ax.wt"; wu: "ax.wu"; wv: "ax.wv"; ww: "ax.ww"; wx: "ax.wx"; wy: "ax.wy"; wz: "ax.wz"; xa: "ax.xa"; xb: "ax.xb"; xc: "ax.xc"; xd: "ax.xd"; xe: "ax.xe"; xf: "ax.xf"; xg: "ax.xg"; xh: "ax.xh"; xi: "ax.xi"; xj: "ax.xj"; xk: "ax.xk"; xl: "ax.xl"; xm: "ax.xm"; xn: "ax.xn"; xo: "ax.xo"; xp: "ax.xp"; xq: "ax.xq"; xr: "ax.xr"; xs: "ax.xs"; xt: "ax.xt"; xu: "ax.xu"; xv: "ax.xv"; xw: "ax.xw"; xx: "ax.xx"; xy: "ax.xy"; xz: "ax.xz"; ya: "ax.ya"; yb: "ax.yb"; yc: "ax.yc"; yd: "ax.yd"; ye: "ax.ye"; yf: "ax.yf"; yg: "ax.yg"; yh: "ax.yh"; yi: "ax.yi"; yj: "ax.yj"; yk: "ax.yk"; yl: "ax.yl"; ym: "ax.ym"; yn: "ax.yn"; yo: "ax.yo"; yp: "ax.yp"; yq: "ax.yq"; yr: "ax.yr"; ys: "ax.ys"; yt: "ax.yt"; yu: "ax.yu"; yv: "ax.yv"; yw: "ax.yw"; yx: "ax.yx"; yy: "ax.yy"; yz: "ax.yz"; za: "ax.za"; zb: "ax.zb"; zc: "ax.zc"; zd: "ax.zd"; ze: "ax.ze"; zf: "ax.zf"; zg: "ax.zg"; zh: "ax.zh"; zi: "ax.zi"; zj: "ax.zj"; zk: "ax.zk"; zl: "ax.zl"; zm: "ax.zm"; zn: "ax.zn"; zo: "ax.zo"; zp: "ax.zp"; zq: "ax.zq"; zr: "ax.zr"; zs: "ax.zs"; zt: "ax.zt"; zu: "ax.zu"; zv: "ax.zv"; zw: "ax.zw"; zx: "ax.zx"; zy: "ax.zy"; zz: "ax.zz"; }; ay: { aa: "ay.aa"; ab: "ay.ab"; ac: "ay.ac"; ad: "ay.ad"; ae: "ay.ae"; af: "ay.af"; ag: "ay.ag"; ah: "ay.ah"; ai: "ay.ai"; aj: "ay.aj"; ak: "ay.ak"; al: "ay.al"; am: "ay.am"; an: "ay.an"; ao: "ay.ao"; ap: "ay.ap"; aq: "ay.aq"; ar: "ay.ar"; as: "ay.as"; at: "ay.at"; au: "ay.au"; av: "ay.av"; aw: "ay.aw"; ax: "ay.ax"; ay: "ay.ay"; az: "ay.az"; ba: "ay.ba"; bb: "ay.bb"; bc: "ay.bc"; bd: "ay.bd"; be: "ay.be"; bf: "ay.bf"; bg: "ay.bg"; bh: "ay.bh"; bi: "ay.bi"; bj: "ay.bj"; bk: "ay.bk"; bl: "ay.bl"; bm: "ay.bm"; bn: "ay.bn"; bo: "ay.bo"; bp: "ay.bp"; bq: "ay.bq"; br: "ay.br"; bs: "ay.bs"; bt: "ay.bt"; bu: "ay.bu"; bv: "ay.bv"; bw: "ay.bw"; bx: "ay.bx"; by: "ay.by"; bz: "ay.bz"; ca: "ay.ca"; cb: "ay.cb"; cc: "ay.cc"; cd: "ay.cd"; ce: "ay.ce"; cf: "ay.cf"; cg: "ay.cg"; ch: "ay.ch"; ci: "ay.ci"; cj: "ay.cj"; ck: "ay.ck"; cl: "ay.cl"; cm: "ay.cm"; cn: "ay.cn"; co: "ay.co"; cp: "ay.cp"; cq: "ay.cq"; cr: "ay.cr"; cs: "ay.cs"; ct: "ay.ct"; cu: "ay.cu"; cv: "ay.cv"; cw: "ay.cw"; cx: "ay.cx"; cy: "ay.cy"; cz: "ay.cz"; da: "ay.da"; db: "ay.db"; dc: "ay.dc"; dd: "ay.dd"; de: "ay.de"; df: "ay.df"; dg: "ay.dg"; dh: "ay.dh"; di: "ay.di"; dj: "ay.dj"; dk: "ay.dk"; dl: "ay.dl"; dm: "ay.dm"; dn: "ay.dn"; do: "ay.do"; dp: "ay.dp"; dq: "ay.dq"; dr: "ay.dr"; ds: "ay.ds"; dt: "ay.dt"; du: "ay.du"; dv: "ay.dv"; dw: "ay.dw"; dx: "ay.dx"; dy: "ay.dy"; dz: "ay.dz"; ea: "ay.ea"; eb: "ay.eb"; ec: "ay.ec"; ed: "ay.ed"; ee: "ay.ee"; ef: "ay.ef"; eg: "ay.eg"; eh: "ay.eh"; ei: "ay.ei"; ej: "ay.ej"; ek: "ay.ek"; el: "ay.el"; em: "ay.em"; en: "ay.en"; eo: "ay.eo"; ep: "ay.ep"; eq: "ay.eq"; er: "ay.er"; es: "ay.es"; et: "ay.et"; eu: "ay.eu"; ev: "ay.ev"; ew: "ay.ew"; ex: "ay.ex"; ey: "ay.ey"; ez: "ay.ez"; fa: "ay.fa"; fb: "ay.fb"; fc: "ay.fc"; fd: "ay.fd"; fe: "ay.fe"; ff: "ay.ff"; fg: "ay.fg"; fh: "ay.fh"; fi: "ay.fi"; fj: "ay.fj"; fk: "ay.fk"; fl: "ay.fl"; fm: "ay.fm"; fn: "ay.fn"; fo: "ay.fo"; fp: "ay.fp"; fq: "ay.fq"; fr: "ay.fr"; fs: "ay.fs"; ft: "ay.ft"; fu: "ay.fu"; fv: "ay.fv"; fw: "ay.fw"; fx: "ay.fx"; fy: "ay.fy"; fz: "ay.fz"; ga: "ay.ga"; gb: "ay.gb"; gc: "ay.gc"; gd: "ay.gd"; ge: "ay.ge"; gf: "ay.gf"; gg: "ay.gg"; gh: "ay.gh"; gi: "ay.gi"; gj: "ay.gj"; gk: "ay.gk"; gl: "ay.gl"; gm: "ay.gm"; gn: "ay.gn"; go: "ay.go"; gp: "ay.gp"; gq: "ay.gq"; gr: "ay.gr"; gs: "ay.gs"; gt: "ay.gt"; gu: "ay.gu"; gv: "ay.gv"; gw: "ay.gw"; gx: "ay.gx"; gy: "ay.gy"; gz: "ay.gz"; ha: "ay.ha"; hb: "ay.hb"; hc: "ay.hc"; hd: "ay.hd"; he: "ay.he"; hf: "ay.hf"; hg: "ay.hg"; hh: "ay.hh"; hi: "ay.hi"; hj: "ay.hj"; hk: "ay.hk"; hl: "ay.hl"; hm: "ay.hm"; hn: "ay.hn"; ho: "ay.ho"; hp: "ay.hp"; hq: "ay.hq"; hr: "ay.hr"; hs: "ay.hs"; ht: "ay.ht"; hu: "ay.hu"; hv: "ay.hv"; hw: "ay.hw"; hx: "ay.hx"; hy: "ay.hy"; hz: "ay.hz"; ia: "ay.ia"; ib: "ay.ib"; ic: "ay.ic"; id: "ay.id"; ie: "ay.ie"; if: "ay.if"; ig: "ay.ig"; ih: "ay.ih"; ii: "ay.ii"; ij: "ay.ij"; ik: "ay.ik"; il: "ay.il"; im: "ay.im"; in: "ay.in"; io: "ay.io"; ip: "ay.ip"; iq: "ay.iq"; ir: "ay.ir"; is: "ay.is"; it: "ay.it"; iu: "ay.iu"; iv: "ay.iv"; iw: "ay.iw"; ix: "ay.ix"; iy: "ay.iy"; iz: "ay.iz"; ja: "ay.ja"; jb: "ay.jb"; jc: "ay.jc"; jd: "ay.jd"; je: "ay.je"; jf: "ay.jf"; jg: "ay.jg"; jh: "ay.jh"; ji: "ay.ji"; jj: "ay.jj"; jk: "ay.jk"; jl: "ay.jl"; jm: "ay.jm"; jn: "ay.jn"; jo: "ay.jo"; jp: "ay.jp"; jq: "ay.jq"; jr: "ay.jr"; js: "ay.js"; jt: "ay.jt"; ju: "ay.ju"; jv: "ay.jv"; jw: "ay.jw"; jx: "ay.jx"; jy: "ay.jy"; jz: "ay.jz"; ka: "ay.ka"; kb: "ay.kb"; kc: "ay.kc"; kd: "ay.kd"; ke: "ay.ke"; kf: "ay.kf"; kg: "ay.kg"; kh: "ay.kh"; ki: "ay.ki"; kj: "ay.kj"; kk: "ay.kk"; kl: "ay.kl"; km: "ay.km"; kn: "ay.kn"; ko: "ay.ko"; kp: "ay.kp"; kq: "ay.kq"; kr: "ay.kr"; ks: "ay.ks"; kt: "ay.kt"; ku: "ay.ku"; kv: "ay.kv"; kw: "ay.kw"; kx: "ay.kx"; ky: "ay.ky"; kz: "ay.kz"; la: "ay.la"; lb: "ay.lb"; lc: "ay.lc"; ld: "ay.ld"; le: "ay.le"; lf: "ay.lf"; lg: "ay.lg"; lh: "ay.lh"; li: "ay.li"; lj: "ay.lj"; lk: "ay.lk"; ll: "ay.ll"; lm: "ay.lm"; ln: "ay.ln"; lo: "ay.lo"; lp: "ay.lp"; lq: "ay.lq"; lr: "ay.lr"; ls: "ay.ls"; lt: "ay.lt"; lu: "ay.lu"; lv: "ay.lv"; lw: "ay.lw"; lx: "ay.lx"; ly: "ay.ly"; lz: "ay.lz"; ma: "ay.ma"; mb: "ay.mb"; mc: "ay.mc"; md: "ay.md"; me: "ay.me"; mf: "ay.mf"; mg: "ay.mg"; mh: "ay.mh"; mi: "ay.mi"; mj: "ay.mj"; mk: "ay.mk"; ml: "ay.ml"; mm: "ay.mm"; mn: "ay.mn"; mo: "ay.mo"; mp: "ay.mp"; mq: "ay.mq"; mr: "ay.mr"; ms: "ay.ms"; mt: "ay.mt"; mu: "ay.mu"; mv: "ay.mv"; mw: "ay.mw"; mx: "ay.mx"; my: "ay.my"; mz: "ay.mz"; na: "ay.na"; nb: "ay.nb"; nc: "ay.nc"; nd: "ay.nd"; ne: "ay.ne"; nf: "ay.nf"; ng: "ay.ng"; nh: "ay.nh"; ni: "ay.ni"; nj: "ay.nj"; nk: "ay.nk"; nl: "ay.nl"; nm: "ay.nm"; nn: "ay.nn"; no: "ay.no"; np: "ay.np"; nq: "ay.nq"; nr: "ay.nr"; ns: "ay.ns"; nt: "ay.nt"; nu: "ay.nu"; nv: "ay.nv"; nw: "ay.nw"; nx: "ay.nx"; ny: "ay.ny"; nz: "ay.nz"; oa: "ay.oa"; ob: "ay.ob"; oc: "ay.oc"; od: "ay.od"; oe: "ay.oe"; of: "ay.of"; og: "ay.og"; oh: "ay.oh"; oi: "ay.oi"; oj: "ay.oj"; ok: "ay.ok"; ol: "ay.ol"; om: "ay.om"; on: "ay.on"; oo: "ay.oo"; op: "ay.op"; oq: "ay.oq"; or: "ay.or"; os: "ay.os"; ot: "ay.ot"; ou: "ay.ou"; ov: "ay.ov"; ow: "ay.ow"; ox: "ay.ox"; oy: "ay.oy"; oz: "ay.oz"; pa: "ay.pa"; pb: "ay.pb"; pc: "ay.pc"; pd: "ay.pd"; pe: "ay.pe"; pf: "ay.pf"; pg: "ay.pg"; ph: "ay.ph"; pi: "ay.pi"; pj: "ay.pj"; pk: "ay.pk"; pl: "ay.pl"; pm: "ay.pm"; pn: "ay.pn"; po: "ay.po"; pp: "ay.pp"; pq: "ay.pq"; pr: "ay.pr"; ps: "ay.ps"; pt: "ay.pt"; pu: "ay.pu"; pv: "ay.pv"; pw: "ay.pw"; px: "ay.px"; py: "ay.py"; pz: "ay.pz"; qa: "ay.qa"; qb: "ay.qb"; qc: "ay.qc"; qd: "ay.qd"; qe: "ay.qe"; qf: "ay.qf"; qg: "ay.qg"; qh: "ay.qh"; qi: "ay.qi"; qj: "ay.qj"; qk: "ay.qk"; ql: "ay.ql"; qm: "ay.qm"; qn: "ay.qn"; qo: "ay.qo"; qp: "ay.qp"; qq: "ay.qq"; qr: "ay.qr"; qs: "ay.qs"; qt: "ay.qt"; qu: "ay.qu"; qv: "ay.qv"; qw: "ay.qw"; qx: "ay.qx"; qy: "ay.qy"; qz: "ay.qz"; ra: "ay.ra"; rb: "ay.rb"; rc: "ay.rc"; rd: "ay.rd"; re: "ay.re"; rf: "ay.rf"; rg: "ay.rg"; rh: "ay.rh"; ri: "ay.ri"; rj: "ay.rj"; rk: "ay.rk"; rl: "ay.rl"; rm: "ay.rm"; rn: "ay.rn"; ro: "ay.ro"; rp: "ay.rp"; rq: "ay.rq"; rr: "ay.rr"; rs: "ay.rs"; rt: "ay.rt"; ru: "ay.ru"; rv: "ay.rv"; rw: "ay.rw"; rx: "ay.rx"; ry: "ay.ry"; rz: "ay.rz"; sa: "ay.sa"; sb: "ay.sb"; sc: "ay.sc"; sd: "ay.sd"; se: "ay.se"; sf: "ay.sf"; sg: "ay.sg"; sh: "ay.sh"; si: "ay.si"; sj: "ay.sj"; sk: "ay.sk"; sl: "ay.sl"; sm: "ay.sm"; sn: "ay.sn"; so: "ay.so"; sp: "ay.sp"; sq: "ay.sq"; sr: "ay.sr"; ss: "ay.ss"; st: "ay.st"; su: "ay.su"; sv: "ay.sv"; sw: "ay.sw"; sx: "ay.sx"; sy: "ay.sy"; sz: "ay.sz"; ta: "ay.ta"; tb: "ay.tb"; tc: "ay.tc"; td: "ay.td"; te: "ay.te"; tf: "ay.tf"; tg: "ay.tg"; th: "ay.th"; ti: "ay.ti"; tj: "ay.tj"; tk: "ay.tk"; tl: "ay.tl"; tm: "ay.tm"; tn: "ay.tn"; to: "ay.to"; tp: "ay.tp"; tq: "ay.tq"; tr: "ay.tr"; ts: "ay.ts"; tt: "ay.tt"; tu: "ay.tu"; tv: "ay.tv"; tw: "ay.tw"; tx: "ay.tx"; ty: "ay.ty"; tz: "ay.tz"; ua: "ay.ua"; ub: "ay.ub"; uc: "ay.uc"; ud: "ay.ud"; ue: "ay.ue"; uf: "ay.uf"; ug: "ay.ug"; uh: "ay.uh"; ui: "ay.ui"; uj: "ay.uj"; uk: "ay.uk"; ul: "ay.ul"; um: "ay.um"; un: "ay.un"; uo: "ay.uo"; up: "ay.up"; uq: "ay.uq"; ur: "ay.ur"; us: "ay.us"; ut: "ay.ut"; uu: "ay.uu"; uv: "ay.uv"; uw: "ay.uw"; ux: "ay.ux"; uy: "ay.uy"; uz: "ay.uz"; va: "ay.va"; vb: "ay.vb"; vc: "ay.vc"; vd: "ay.vd"; ve: "ay.ve"; vf: "ay.vf"; vg: "ay.vg"; vh: "ay.vh"; vi: "ay.vi"; vj: "ay.vj"; vk: "ay.vk"; vl: "ay.vl"; vm: "ay.vm"; vn: "ay.vn"; vo: "ay.vo"; vp: "ay.vp"; vq: "ay.vq"; vr: "ay.vr"; vs: "ay.vs"; vt: "ay.vt"; vu: "ay.vu"; vv: "ay.vv"; vw: "ay.vw"; vx: "ay.vx"; vy: "ay.vy"; vz: "ay.vz"; wa: "ay.wa"; wb: "ay.wb"; wc: "ay.wc"; wd: "ay.wd"; we: "ay.we"; wf: "ay.wf"; wg: "ay.wg"; wh: "ay.wh"; wi: "ay.wi"; wj: "ay.wj"; wk: "ay.wk"; wl: "ay.wl"; wm: "ay.wm"; wn: "ay.wn"; wo: "ay.wo"; wp: "ay.wp"; wq: "ay.wq"; wr: "ay.wr"; ws: "ay.ws"; wt: "ay.wt"; wu: "ay.wu"; wv: "ay.wv"; ww: "ay.ww"; wx: "ay.wx"; wy: "ay.wy"; wz: "ay.wz"; xa: "ay.xa"; xb: "ay.xb"; xc: "ay.xc"; xd: "ay.xd"; xe: "ay.xe"; xf: "ay.xf"; xg: "ay.xg"; xh: "ay.xh"; xi: "ay.xi"; xj: "ay.xj"; xk: "ay.xk"; xl: "ay.xl"; xm: "ay.xm"; xn: "ay.xn"; xo: "ay.xo"; xp: "ay.xp"; xq: "ay.xq"; xr: "ay.xr"; xs: "ay.xs"; xt: "ay.xt"; xu: "ay.xu"; xv: "ay.xv"; xw: "ay.xw"; xx: "ay.xx"; xy: "ay.xy"; xz: "ay.xz"; ya: "ay.ya"; yb: "ay.yb"; yc: "ay.yc"; yd: "ay.yd"; ye: "ay.ye"; yf: "ay.yf"; yg: "ay.yg"; yh: "ay.yh"; yi: "ay.yi"; yj: "ay.yj"; yk: "ay.yk"; yl: "ay.yl"; ym: "ay.ym"; yn: "ay.yn"; yo: "ay.yo"; yp: "ay.yp"; yq: "ay.yq"; yr: "ay.yr"; ys: "ay.ys"; yt: "ay.yt"; yu: "ay.yu"; yv: "ay.yv"; yw: "ay.yw"; yx: "ay.yx"; yy: "ay.yy"; yz: "ay.yz"; za: "ay.za"; zb: "ay.zb"; zc: "ay.zc"; zd: "ay.zd"; ze: "ay.ze"; zf: "ay.zf"; zg: "ay.zg"; zh: "ay.zh"; zi: "ay.zi"; zj: "ay.zj"; zk: "ay.zk"; zl: "ay.zl"; zm: "ay.zm"; zn: "ay.zn"; zo: "ay.zo"; zp: "ay.zp"; zq: "ay.zq"; zr: "ay.zr"; zs: "ay.zs"; zt: "ay.zt"; zu: "ay.zu"; zv: "ay.zv"; zw: "ay.zw"; zx: "ay.zx"; zy: "ay.zy"; zz: "ay.zz"; }; az: { aa: "az.aa"; ab: "az.ab"; ac: "az.ac"; ad: "az.ad"; ae: "az.ae"; af: "az.af"; ag: "az.ag"; ah: "az.ah"; ai: "az.ai"; aj: "az.aj"; ak: "az.ak"; al: "az.al"; am: "az.am"; an: "az.an"; ao: "az.ao"; ap: "az.ap"; aq: "az.aq"; ar: "az.ar"; as: "az.as"; at: "az.at"; au: "az.au"; av: "az.av"; aw: "az.aw"; ax: "az.ax"; ay: "az.ay"; az: "az.az"; ba: "az.ba"; bb: "az.bb"; bc: "az.bc"; bd: "az.bd"; be: "az.be"; bf: "az.bf"; bg: "az.bg"; bh: "az.bh"; bi: "az.bi"; bj: "az.bj"; bk: "az.bk"; bl: "az.bl"; bm: "az.bm"; bn: "az.bn"; bo: "az.bo"; bp: "az.bp"; bq: "az.bq"; br: "az.br"; bs: "az.bs"; bt: "az.bt"; bu: "az.bu"; bv: "az.bv"; bw: "az.bw"; bx: "az.bx"; by: "az.by"; bz: "az.bz"; ca: "az.ca"; cb: "az.cb"; cc: "az.cc"; cd: "az.cd"; ce: "az.ce"; cf: "az.cf"; cg: "az.cg"; ch: "az.ch"; ci: "az.ci"; cj: "az.cj"; ck: "az.ck"; cl: "az.cl"; cm: "az.cm"; cn: "az.cn"; co: "az.co"; cp: "az.cp"; cq: "az.cq"; cr: "az.cr"; cs: "az.cs"; ct: "az.ct"; cu: "az.cu"; cv: "az.cv"; cw: "az.cw"; cx: "az.cx"; cy: "az.cy"; cz: "az.cz"; da: "az.da"; db: "az.db"; dc: "az.dc"; dd: "az.dd"; de: "az.de"; df: "az.df"; dg: "az.dg"; dh: "az.dh"; di: "az.di"; dj: "az.dj"; dk: "az.dk"; dl: "az.dl"; dm: "az.dm"; dn: "az.dn"; do: "az.do"; dp: "az.dp"; dq: "az.dq"; dr: "az.dr"; ds: "az.ds"; dt: "az.dt"; du: "az.du"; dv: "az.dv"; dw: "az.dw"; dx: "az.dx"; dy: "az.dy"; dz: "az.dz"; ea: "az.ea"; eb: "az.eb"; ec: "az.ec"; ed: "az.ed"; ee: "az.ee"; ef: "az.ef"; eg: "az.eg"; eh: "az.eh"; ei: "az.ei"; ej: "az.ej"; ek: "az.ek"; el: "az.el"; em: "az.em"; en: "az.en"; eo: "az.eo"; ep: "az.ep"; eq: "az.eq"; er: "az.er"; es: "az.es"; et: "az.et"; eu: "az.eu"; ev: "az.ev"; ew: "az.ew"; ex: "az.ex"; ey: "az.ey"; ez: "az.ez"; fa: "az.fa"; fb: "az.fb"; fc: "az.fc"; fd: "az.fd"; fe: "az.fe"; ff: "az.ff"; fg: "az.fg"; fh: "az.fh"; fi: "az.fi"; fj: "az.fj"; fk: "az.fk"; fl: "az.fl"; fm: "az.fm"; fn: "az.fn"; fo: "az.fo"; fp: "az.fp"; fq: "az.fq"; fr: "az.fr"; fs: "az.fs"; ft: "az.ft"; fu: "az.fu"; fv: "az.fv"; fw: "az.fw"; fx: "az.fx"; fy: "az.fy"; fz: "az.fz"; ga: "az.ga"; gb: "az.gb"; gc: "az.gc"; gd: "az.gd"; ge: "az.ge"; gf: "az.gf"; gg: "az.gg"; gh: "az.gh"; gi: "az.gi"; gj: "az.gj"; gk: "az.gk"; gl: "az.gl"; gm: "az.gm"; gn: "az.gn"; go: "az.go"; gp: "az.gp"; gq: "az.gq"; gr: "az.gr"; gs: "az.gs"; gt: "az.gt"; gu: "az.gu"; gv: "az.gv"; gw: "az.gw"; gx: "az.gx"; gy: "az.gy"; gz: "az.gz"; ha: "az.ha"; hb: "az.hb"; hc: "az.hc"; hd: "az.hd"; he: "az.he"; hf: "az.hf"; hg: "az.hg"; hh: "az.hh"; hi: "az.hi"; hj: "az.hj"; hk: "az.hk"; hl: "az.hl"; hm: "az.hm"; hn: "az.hn"; ho: "az.ho"; hp: "az.hp"; hq: "az.hq"; hr: "az.hr"; hs: "az.hs"; ht: "az.ht"; hu: "az.hu"; hv: "az.hv"; hw: "az.hw"; hx: "az.hx"; hy: "az.hy"; hz: "az.hz"; ia: "az.ia"; ib: "az.ib"; ic: "az.ic"; id: "az.id"; ie: "az.ie"; if: "az.if"; ig: "az.ig"; ih: "az.ih"; ii: "az.ii"; ij: "az.ij"; ik: "az.ik"; il: "az.il"; im: "az.im"; in: "az.in"; io: "az.io"; ip: "az.ip"; iq: "az.iq"; ir: "az.ir"; is: "az.is"; it: "az.it"; iu: "az.iu"; iv: "az.iv"; iw: "az.iw"; ix: "az.ix"; iy: "az.iy"; iz: "az.iz"; ja: "az.ja"; jb: "az.jb"; jc: "az.jc"; jd: "az.jd"; je: "az.je"; jf: "az.jf"; jg: "az.jg"; jh: "az.jh"; ji: "az.ji"; jj: "az.jj"; jk: "az.jk"; jl: "az.jl"; jm: "az.jm"; jn: "az.jn"; jo: "az.jo"; jp: "az.jp"; jq: "az.jq"; jr: "az.jr"; js: "az.js"; jt: "az.jt"; ju: "az.ju"; jv: "az.jv"; jw: "az.jw"; jx: "az.jx"; jy: "az.jy"; jz: "az.jz"; ka: "az.ka"; kb: "az.kb"; kc: "az.kc"; kd: "az.kd"; ke: "az.ke"; kf: "az.kf"; kg: "az.kg"; kh: "az.kh"; ki: "az.ki"; kj: "az.kj"; kk: "az.kk"; kl: "az.kl"; km: "az.km"; kn: "az.kn"; ko: "az.ko"; kp: "az.kp"; kq: "az.kq"; kr: "az.kr"; ks: "az.ks"; kt: "az.kt"; ku: "az.ku"; kv: "az.kv"; kw: "az.kw"; kx: "az.kx"; ky: "az.ky"; kz: "az.kz"; la: "az.la"; lb: "az.lb"; lc: "az.lc"; ld: "az.ld"; le: "az.le"; lf: "az.lf"; lg: "az.lg"; lh: "az.lh"; li: "az.li"; lj: "az.lj"; lk: "az.lk"; ll: "az.ll"; lm: "az.lm"; ln: "az.ln"; lo: "az.lo"; lp: "az.lp"; lq: "az.lq"; lr: "az.lr"; ls: "az.ls"; lt: "az.lt"; lu: "az.lu"; lv: "az.lv"; lw: "az.lw"; lx: "az.lx"; ly: "az.ly"; lz: "az.lz"; ma: "az.ma"; mb: "az.mb"; mc: "az.mc"; md: "az.md"; me: "az.me"; mf: "az.mf"; mg: "az.mg"; mh: "az.mh"; mi: "az.mi"; mj: "az.mj"; mk: "az.mk"; ml: "az.ml"; mm: "az.mm"; mn: "az.mn"; mo: "az.mo"; mp: "az.mp"; mq: "az.mq"; mr: "az.mr"; ms: "az.ms"; mt: "az.mt"; mu: "az.mu"; mv: "az.mv"; mw: "az.mw"; mx: "az.mx"; my: "az.my"; mz: "az.mz"; na: "az.na"; nb: "az.nb"; nc: "az.nc"; nd: "az.nd"; ne: "az.ne"; nf: "az.nf"; ng: "az.ng"; nh: "az.nh"; ni: "az.ni"; nj: "az.nj"; nk: "az.nk"; nl: "az.nl"; nm: "az.nm"; nn: "az.nn"; no: "az.no"; np: "az.np"; nq: "az.nq"; nr: "az.nr"; ns: "az.ns"; nt: "az.nt"; nu: "az.nu"; nv: "az.nv"; nw: "az.nw"; nx: "az.nx"; ny: "az.ny"; nz: "az.nz"; oa: "az.oa"; ob: "az.ob"; oc: "az.oc"; od: "az.od"; oe: "az.oe"; of: "az.of"; og: "az.og"; oh: "az.oh"; oi: "az.oi"; oj: "az.oj"; ok: "az.ok"; ol: "az.ol"; om: "az.om"; on: "az.on"; oo: "az.oo"; op: "az.op"; oq: "az.oq"; or: "az.or"; os: "az.os"; ot: "az.ot"; ou: "az.ou"; ov: "az.ov"; ow: "az.ow"; ox: "az.ox"; oy: "az.oy"; oz: "az.oz"; pa: "az.pa"; pb: "az.pb"; pc: "az.pc"; pd: "az.pd"; pe: "az.pe"; pf: "az.pf"; pg: "az.pg"; ph: "az.ph"; pi: "az.pi"; pj: "az.pj"; pk: "az.pk"; pl: "az.pl"; pm: "az.pm"; pn: "az.pn"; po: "az.po"; pp: "az.pp"; pq: "az.pq"; pr: "az.pr"; ps: "az.ps"; pt: "az.pt"; pu: "az.pu"; pv: "az.pv"; pw: "az.pw"; px: "az.px"; py: "az.py"; pz: "az.pz"; qa: "az.qa"; qb: "az.qb"; qc: "az.qc"; qd: "az.qd"; qe: "az.qe"; qf: "az.qf"; qg: "az.qg"; qh: "az.qh"; qi: "az.qi"; qj: "az.qj"; qk: "az.qk"; ql: "az.ql"; qm: "az.qm"; qn: "az.qn"; qo: "az.qo"; qp: "az.qp"; qq: "az.qq"; qr: "az.qr"; qs: "az.qs"; qt: "az.qt"; qu: "az.qu"; qv: "az.qv"; qw: "az.qw"; qx: "az.qx"; qy: "az.qy"; qz: "az.qz"; ra: "az.ra"; rb: "az.rb"; rc: "az.rc"; rd: "az.rd"; re: "az.re"; rf: "az.rf"; rg: "az.rg"; rh: "az.rh"; ri: "az.ri"; rj: "az.rj"; rk: "az.rk"; rl: "az.rl"; rm: "az.rm"; rn: "az.rn"; ro: "az.ro"; rp: "az.rp"; rq: "az.rq"; rr: "az.rr"; rs: "az.rs"; rt: "az.rt"; ru: "az.ru"; rv: "az.rv"; rw: "az.rw"; rx: "az.rx"; ry: "az.ry"; rz: "az.rz"; sa: "az.sa"; sb: "az.sb"; sc: "az.sc"; sd: "az.sd"; se: "az.se"; sf: "az.sf"; sg: "az.sg"; sh: "az.sh"; si: "az.si"; sj: "az.sj"; sk: "az.sk"; sl: "az.sl"; sm: "az.sm"; sn: "az.sn"; so: "az.so"; sp: "az.sp"; sq: "az.sq"; sr: "az.sr"; ss: "az.ss"; st: "az.st"; su: "az.su"; sv: "az.sv"; sw: "az.sw"; sx: "az.sx"; sy: "az.sy"; sz: "az.sz"; ta: "az.ta"; tb: "az.tb"; tc: "az.tc"; td: "az.td"; te: "az.te"; tf: "az.tf"; tg: "az.tg"; th: "az.th"; ti: "az.ti"; tj: "az.tj"; tk: "az.tk"; tl: "az.tl"; tm: "az.tm"; tn: "az.tn"; to: "az.to"; tp: "az.tp"; tq: "az.tq"; tr: "az.tr"; ts: "az.ts"; tt: "az.tt"; tu: "az.tu"; tv: "az.tv"; tw: "az.tw"; tx: "az.tx"; ty: "az.ty"; tz: "az.tz"; ua: "az.ua"; ub: "az.ub"; uc: "az.uc"; ud: "az.ud"; ue: "az.ue"; uf: "az.uf"; ug: "az.ug"; uh: "az.uh"; ui: "az.ui"; uj: "az.uj"; uk: "az.uk"; ul: "az.ul"; um: "az.um"; un: "az.un"; uo: "az.uo"; up: "az.up"; uq: "az.uq"; ur: "az.ur"; us: "az.us"; ut: "az.ut"; uu: "az.uu"; uv: "az.uv"; uw: "az.uw"; ux: "az.ux"; uy: "az.uy"; uz: "az.uz"; va: "az.va"; vb: "az.vb"; vc: "az.vc"; vd: "az.vd"; ve: "az.ve"; vf: "az.vf"; vg: "az.vg"; vh: "az.vh"; vi: "az.vi"; vj: "az.vj"; vk: "az.vk"; vl: "az.vl"; vm: "az.vm"; vn: "az.vn"; vo: "az.vo"; vp: "az.vp"; vq: "az.vq"; vr: "az.vr"; vs: "az.vs"; vt: "az.vt"; vu: "az.vu"; vv: "az.vv"; vw: "az.vw"; vx: "az.vx"; vy: "az.vy"; vz: "az.vz"; wa: "az.wa"; wb: "az.wb"; wc: "az.wc"; wd: "az.wd"; we: "az.we"; wf: "az.wf"; wg: "az.wg"; wh: "az.wh"; wi: "az.wi"; wj: "az.wj"; wk: "az.wk"; wl: "az.wl"; wm: "az.wm"; wn: "az.wn"; wo: "az.wo"; wp: "az.wp"; wq: "az.wq"; wr: "az.wr"; ws: "az.ws"; wt: "az.wt"; wu: "az.wu"; wv: "az.wv"; ww: "az.ww"; wx: "az.wx"; wy: "az.wy"; wz: "az.wz"; xa: "az.xa"; xb: "az.xb"; xc: "az.xc"; xd: "az.xd"; xe: "az.xe"; xf: "az.xf"; xg: "az.xg"; xh: "az.xh"; xi: "az.xi"; xj: "az.xj"; xk: "az.xk"; xl: "az.xl"; xm: "az.xm"; xn: "az.xn"; xo: "az.xo"; xp: "az.xp"; xq: "az.xq"; xr: "az.xr"; xs: "az.xs"; xt: "az.xt"; xu: "az.xu"; xv: "az.xv"; xw: "az.xw"; xx: "az.xx"; xy: "az.xy"; xz: "az.xz"; ya: "az.ya"; yb: "az.yb"; yc: "az.yc"; yd: "az.yd"; ye: "az.ye"; yf: "az.yf"; yg: "az.yg"; yh: "az.yh"; yi: "az.yi"; yj: "az.yj"; yk: "az.yk"; yl: "az.yl"; ym: "az.ym"; yn: "az.yn"; yo: "az.yo"; yp: "az.yp"; yq: "az.yq"; yr: "az.yr"; ys: "az.ys"; yt: "az.yt"; yu: "az.yu"; yv: "az.yv"; yw: "az.yw"; yx: "az.yx"; yy: "az.yy"; yz: "az.yz"; za: "az.za"; zb: "az.zb"; zc: "az.zc"; zd: "az.zd"; ze: "az.ze"; zf: "az.zf"; zg: "az.zg"; zh: "az.zh"; zi: "az.zi"; zj: "az.zj"; zk: "az.zk"; zl: "az.zl"; zm: "az.zm"; zn: "az.zn"; zo: "az.zo"; zp: "az.zp"; zq: "az.zq"; zr: "az.zr"; zs: "az.zs"; zt: "az.zt"; zu: "az.zu"; zv: "az.zv"; zw: "az.zw"; zx: "az.zx"; zy: "az.zy"; zz: "az.zz"; }; ba: { aa: "ba.aa"; ab: "ba.ab"; ac: "ba.ac"; ad: "ba.ad"; ae: "ba.ae"; af: "ba.af"; ag: "ba.ag"; ah: "ba.ah"; ai: "ba.ai"; aj: "ba.aj"; ak: "ba.ak"; al: "ba.al"; am: "ba.am"; an: "ba.an"; ao: "ba.ao"; ap: "ba.ap"; aq: "ba.aq"; ar: "ba.ar"; as: "ba.as"; at: "ba.at"; au: "ba.au"; av: "ba.av"; aw: "ba.aw"; ax: "ba.ax"; ay: "ba.ay"; az: "ba.az"; ba: "ba.ba"; bb: "ba.bb"; bc: "ba.bc"; bd: "ba.bd"; be: "ba.be"; bf: "ba.bf"; bg: "ba.bg"; bh: "ba.bh"; bi: "ba.bi"; bj: "ba.bj"; bk: "ba.bk"; bl: "ba.bl"; bm: "ba.bm"; bn: "ba.bn"; bo: "ba.bo"; bp: "ba.bp"; bq: "ba.bq"; br: "ba.br"; bs: "ba.bs"; bt: "ba.bt"; bu: "ba.bu"; bv: "ba.bv"; bw: "ba.bw"; bx: "ba.bx"; by: "ba.by"; bz: "ba.bz"; ca: "ba.ca"; cb: "ba.cb"; cc: "ba.cc"; cd: "ba.cd"; ce: "ba.ce"; cf: "ba.cf"; cg: "ba.cg"; ch: "ba.ch"; ci: "ba.ci"; cj: "ba.cj"; ck: "ba.ck"; cl: "ba.cl"; cm: "ba.cm"; cn: "ba.cn"; co: "ba.co"; cp: "ba.cp"; cq: "ba.cq"; cr: "ba.cr"; cs: "ba.cs"; ct: "ba.ct"; cu: "ba.cu"; cv: "ba.cv"; cw: "ba.cw"; cx: "ba.cx"; cy: "ba.cy"; cz: "ba.cz"; da: "ba.da"; db: "ba.db"; dc: "ba.dc"; dd: "ba.dd"; de: "ba.de"; df: "ba.df"; dg: "ba.dg"; dh: "ba.dh"; di: "ba.di"; dj: "ba.dj"; dk: "ba.dk"; dl: "ba.dl"; dm: "ba.dm"; dn: "ba.dn"; do: "ba.do"; dp: "ba.dp"; dq: "ba.dq"; dr: "ba.dr"; ds: "ba.ds"; dt: "ba.dt"; du: "ba.du"; dv: "ba.dv"; dw: "ba.dw"; dx: "ba.dx"; dy: "ba.dy"; dz: "ba.dz"; ea: "ba.ea"; eb: "ba.eb"; ec: "ba.ec"; ed: "ba.ed"; ee: "ba.ee"; ef: "ba.ef"; eg: "ba.eg"; eh: "ba.eh"; ei: "ba.ei"; ej: "ba.ej"; ek: "ba.ek"; el: "ba.el"; em: "ba.em"; en: "ba.en"; eo: "ba.eo"; ep: "ba.ep"; eq: "ba.eq"; er: "ba.er"; es: "ba.es"; et: "ba.et"; eu: "ba.eu"; ev: "ba.ev"; ew: "ba.ew"; ex: "ba.ex"; ey: "ba.ey"; ez: "ba.ez"; fa: "ba.fa"; fb: "ba.fb"; fc: "ba.fc"; fd: "ba.fd"; fe: "ba.fe"; ff: "ba.ff"; fg: "ba.fg"; fh: "ba.fh"; fi: "ba.fi"; fj: "ba.fj"; fk: "ba.fk"; fl: "ba.fl"; fm: "ba.fm"; fn: "ba.fn"; fo: "ba.fo"; fp: "ba.fp"; fq: "ba.fq"; fr: "ba.fr"; fs: "ba.fs"; ft: "ba.ft"; fu: "ba.fu"; fv: "ba.fv"; fw: "ba.fw"; fx: "ba.fx"; fy: "ba.fy"; fz: "ba.fz"; ga: "ba.ga"; gb: "ba.gb"; gc: "ba.gc"; gd: "ba.gd"; ge: "ba.ge"; gf: "ba.gf"; gg: "ba.gg"; gh: "ba.gh"; gi: "ba.gi"; gj: "ba.gj"; gk: "ba.gk"; gl: "ba.gl"; gm: "ba.gm"; gn: "ba.gn"; go: "ba.go"; gp: "ba.gp"; gq: "ba.gq"; gr: "ba.gr"; gs: "ba.gs"; gt: "ba.gt"; gu: "ba.gu"; gv: "ba.gv"; gw: "ba.gw"; gx: "ba.gx"; gy: "ba.gy"; gz: "ba.gz"; ha: "ba.ha"; hb: "ba.hb"; hc: "ba.hc"; hd: "ba.hd"; he: "ba.he"; hf: "ba.hf"; hg: "ba.hg"; hh: "ba.hh"; hi: "ba.hi"; hj: "ba.hj"; hk: "ba.hk"; hl: "ba.hl"; hm: "ba.hm"; hn: "ba.hn"; ho: "ba.ho"; hp: "ba.hp"; hq: "ba.hq"; hr: "ba.hr"; hs: "ba.hs"; ht: "ba.ht"; hu: "ba.hu"; hv: "ba.hv"; hw: "ba.hw"; hx: "ba.hx"; hy: "ba.hy"; hz: "ba.hz"; ia: "ba.ia"; ib: "ba.ib"; ic: "ba.ic"; id: "ba.id"; ie: "ba.ie"; if: "ba.if"; ig: "ba.ig"; ih: "ba.ih"; ii: "ba.ii"; ij: "ba.ij"; ik: "ba.ik"; il: "ba.il"; im: "ba.im"; in: "ba.in"; io: "ba.io"; ip: "ba.ip"; iq: "ba.iq"; ir: "ba.ir"; is: "ba.is"; it: "ba.it"; iu: "ba.iu"; iv: "ba.iv"; iw: "ba.iw"; ix: "ba.ix"; iy: "ba.iy"; iz: "ba.iz"; ja: "ba.ja"; jb: "ba.jb"; jc: "ba.jc"; jd: "ba.jd"; je: "ba.je"; jf: "ba.jf"; jg: "ba.jg"; jh: "ba.jh"; ji: "ba.ji"; jj: "ba.jj"; jk: "ba.jk"; jl: "ba.jl"; jm: "ba.jm"; jn: "ba.jn"; jo: "ba.jo"; jp: "ba.jp"; jq: "ba.jq"; jr: "ba.jr"; js: "ba.js"; jt: "ba.jt"; ju: "ba.ju"; jv: "ba.jv"; jw: "ba.jw"; jx: "ba.jx"; jy: "ba.jy"; jz: "ba.jz"; ka: "ba.ka"; kb: "ba.kb"; kc: "ba.kc"; kd: "ba.kd"; ke: "ba.ke"; kf: "ba.kf"; kg: "ba.kg"; kh: "ba.kh"; ki: "ba.ki"; kj: "ba.kj"; kk: "ba.kk"; kl: "ba.kl"; km: "ba.km"; kn: "ba.kn"; ko: "ba.ko"; kp: "ba.kp"; kq: "ba.kq"; kr: "ba.kr"; ks: "ba.ks"; kt: "ba.kt"; ku: "ba.ku"; kv: "ba.kv"; kw: "ba.kw"; kx: "ba.kx"; ky: "ba.ky"; kz: "ba.kz"; la: "ba.la"; lb: "ba.lb"; lc: "ba.lc"; ld: "ba.ld"; le: "ba.le"; lf: "ba.lf"; lg: "ba.lg"; lh: "ba.lh"; li: "ba.li"; lj: "ba.lj"; lk: "ba.lk"; ll: "ba.ll"; lm: "ba.lm"; ln: "ba.ln"; lo: "ba.lo"; lp: "ba.lp"; lq: "ba.lq"; lr: "ba.lr"; ls: "ba.ls"; lt: "ba.lt"; lu: "ba.lu"; lv: "ba.lv"; lw: "ba.lw"; lx: "ba.lx"; ly: "ba.ly"; lz: "ba.lz"; ma: "ba.ma"; mb: "ba.mb"; mc: "ba.mc"; md: "ba.md"; me: "ba.me"; mf: "ba.mf"; mg: "ba.mg"; mh: "ba.mh"; mi: "ba.mi"; mj: "ba.mj"; mk: "ba.mk"; ml: "ba.ml"; mm: "ba.mm"; mn: "ba.mn"; mo: "ba.mo"; mp: "ba.mp"; mq: "ba.mq"; mr: "ba.mr"; ms: "ba.ms"; mt: "ba.mt"; mu: "ba.mu"; mv: "ba.mv"; mw: "ba.mw"; mx: "ba.mx"; my: "ba.my"; mz: "ba.mz"; na: "ba.na"; nb: "ba.nb"; nc: "ba.nc"; nd: "ba.nd"; ne: "ba.ne"; nf: "ba.nf"; ng: "ba.ng"; nh: "ba.nh"; ni: "ba.ni"; nj: "ba.nj"; nk: "ba.nk"; nl: "ba.nl"; nm: "ba.nm"; nn: "ba.nn"; no: "ba.no"; np: "ba.np"; nq: "ba.nq"; nr: "ba.nr"; ns: "ba.ns"; nt: "ba.nt"; nu: "ba.nu"; nv: "ba.nv"; nw: "ba.nw"; nx: "ba.nx"; ny: "ba.ny"; nz: "ba.nz"; oa: "ba.oa"; ob: "ba.ob"; oc: "ba.oc"; od: "ba.od"; oe: "ba.oe"; of: "ba.of"; og: "ba.og"; oh: "ba.oh"; oi: "ba.oi"; oj: "ba.oj"; ok: "ba.ok"; ol: "ba.ol"; om: "ba.om"; on: "ba.on"; oo: "ba.oo"; op: "ba.op"; oq: "ba.oq"; or: "ba.or"; os: "ba.os"; ot: "ba.ot"; ou: "ba.ou"; ov: "ba.ov"; ow: "ba.ow"; ox: "ba.ox"; oy: "ba.oy"; oz: "ba.oz"; pa: "ba.pa"; pb: "ba.pb"; pc: "ba.pc"; pd: "ba.pd"; pe: "ba.pe"; pf: "ba.pf"; pg: "ba.pg"; ph: "ba.ph"; pi: "ba.pi"; pj: "ba.pj"; pk: "ba.pk"; pl: "ba.pl"; pm: "ba.pm"; pn: "ba.pn"; po: "ba.po"; pp: "ba.pp"; pq: "ba.pq"; pr: "ba.pr"; ps: "ba.ps"; pt: "ba.pt"; pu: "ba.pu"; pv: "ba.pv"; pw: "ba.pw"; px: "ba.px"; py: "ba.py"; pz: "ba.pz"; qa: "ba.qa"; qb: "ba.qb"; qc: "ba.qc"; qd: "ba.qd"; qe: "ba.qe"; qf: "ba.qf"; qg: "ba.qg"; qh: "ba.qh"; qi: "ba.qi"; qj: "ba.qj"; qk: "ba.qk"; ql: "ba.ql"; qm: "ba.qm"; qn: "ba.qn"; qo: "ba.qo"; qp: "ba.qp"; qq: "ba.qq"; qr: "ba.qr"; qs: "ba.qs"; qt: "ba.qt"; qu: "ba.qu"; qv: "ba.qv"; qw: "ba.qw"; qx: "ba.qx"; qy: "ba.qy"; qz: "ba.qz"; ra: "ba.ra"; rb: "ba.rb"; rc: "ba.rc"; rd: "ba.rd"; re: "ba.re"; rf: "ba.rf"; rg: "ba.rg"; rh: "ba.rh"; ri: "ba.ri"; rj: "ba.rj"; rk: "ba.rk"; rl: "ba.rl"; rm: "ba.rm"; rn: "ba.rn"; ro: "ba.ro"; rp: "ba.rp"; rq: "ba.rq"; rr: "ba.rr"; rs: "ba.rs"; rt: "ba.rt"; ru: "ba.ru"; rv: "ba.rv"; rw: "ba.rw"; rx: "ba.rx"; ry: "ba.ry"; rz: "ba.rz"; sa: "ba.sa"; sb: "ba.sb"; sc: "ba.sc"; sd: "ba.sd"; se: "ba.se"; sf: "ba.sf"; sg: "ba.sg"; sh: "ba.sh"; si: "ba.si"; sj: "ba.sj"; sk: "ba.sk"; sl: "ba.sl"; sm: "ba.sm"; sn: "ba.sn"; so: "ba.so"; sp: "ba.sp"; sq: "ba.sq"; sr: "ba.sr"; ss: "ba.ss"; st: "ba.st"; su: "ba.su"; sv: "ba.sv"; sw: "ba.sw"; sx: "ba.sx"; sy: "ba.sy"; sz: "ba.sz"; ta: "ba.ta"; tb: "ba.tb"; tc: "ba.tc"; td: "ba.td"; te: "ba.te"; tf: "ba.tf"; tg: "ba.tg"; th: "ba.th"; ti: "ba.ti"; tj: "ba.tj"; tk: "ba.tk"; tl: "ba.tl"; tm: "ba.tm"; tn: "ba.tn"; to: "ba.to"; tp: "ba.tp"; tq: "ba.tq"; tr: "ba.tr"; ts: "ba.ts"; tt: "ba.tt"; tu: "ba.tu"; tv: "ba.tv"; tw: "ba.tw"; tx: "ba.tx"; ty: "ba.ty"; tz: "ba.tz"; ua: "ba.ua"; ub: "ba.ub"; uc: "ba.uc"; ud: "ba.ud"; ue: "ba.ue"; uf: "ba.uf"; ug: "ba.ug"; uh: "ba.uh"; ui: "ba.ui"; uj: "ba.uj"; uk: "ba.uk"; ul: "ba.ul"; um: "ba.um"; un: "ba.un"; uo: "ba.uo"; up: "ba.up"; uq: "ba.uq"; ur: "ba.ur"; us: "ba.us"; ut: "ba.ut"; uu: "ba.uu"; uv: "ba.uv"; uw: "ba.uw"; ux: "ba.ux"; uy: "ba.uy"; uz: "ba.uz"; va: "ba.va"; vb: "ba.vb"; vc: "ba.vc"; vd: "ba.vd"; ve: "ba.ve"; vf: "ba.vf"; vg: "ba.vg"; vh: "ba.vh"; vi: "ba.vi"; vj: "ba.vj"; vk: "ba.vk"; vl: "ba.vl"; vm: "ba.vm"; vn: "ba.vn"; vo: "ba.vo"; vp: "ba.vp"; vq: "ba.vq"; vr: "ba.vr"; vs: "ba.vs"; vt: "ba.vt"; vu: "ba.vu"; vv: "ba.vv"; vw: "ba.vw"; vx: "ba.vx"; vy: "ba.vy"; vz: "ba.vz"; wa: "ba.wa"; wb: "ba.wb"; wc: "ba.wc"; wd: "ba.wd"; we: "ba.we"; wf: "ba.wf"; wg: "ba.wg"; wh: "ba.wh"; wi: "ba.wi"; wj: "ba.wj"; wk: "ba.wk"; wl: "ba.wl"; wm: "ba.wm"; wn: "ba.wn"; wo: "ba.wo"; wp: "ba.wp"; wq: "ba.wq"; wr: "ba.wr"; ws: "ba.ws"; wt: "ba.wt"; wu: "ba.wu"; wv: "ba.wv"; ww: "ba.ww"; wx: "ba.wx"; wy: "ba.wy"; wz: "ba.wz"; xa: "ba.xa"; xb: "ba.xb"; xc: "ba.xc"; xd: "ba.xd"; xe: "ba.xe"; xf: "ba.xf"; xg: "ba.xg"; xh: "ba.xh"; xi: "ba.xi"; xj: "ba.xj"; xk: "ba.xk"; xl: "ba.xl"; xm: "ba.xm"; xn: "ba.xn"; xo: "ba.xo"; xp: "ba.xp"; xq: "ba.xq"; xr: "ba.xr"; xs: "ba.xs"; xt: "ba.xt"; xu: "ba.xu"; xv: "ba.xv"; xw: "ba.xw"; xx: "ba.xx"; xy: "ba.xy"; xz: "ba.xz"; ya: "ba.ya"; yb: "ba.yb"; yc: "ba.yc"; yd: "ba.yd"; ye: "ba.ye"; yf: "ba.yf"; yg: "ba.yg"; yh: "ba.yh"; yi: "ba.yi"; yj: "ba.yj"; yk: "ba.yk"; yl: "ba.yl"; ym: "ba.ym"; yn: "ba.yn"; yo: "ba.yo"; yp: "ba.yp"; yq: "ba.yq"; yr: "ba.yr"; ys: "ba.ys"; yt: "ba.yt"; yu: "ba.yu"; yv: "ba.yv"; yw: "ba.yw"; yx: "ba.yx"; yy: "ba.yy"; yz: "ba.yz"; za: "ba.za"; zb: "ba.zb"; zc: "ba.zc"; zd: "ba.zd"; ze: "ba.ze"; zf: "ba.zf"; zg: "ba.zg"; zh: "ba.zh"; zi: "ba.zi"; zj: "ba.zj"; zk: "ba.zk"; zl: "ba.zl"; zm: "ba.zm"; zn: "ba.zn"; zo: "ba.zo"; zp: "ba.zp"; zq: "ba.zq"; zr: "ba.zr"; zs: "ba.zs"; zt: "ba.zt"; zu: "ba.zu"; zv: "ba.zv"; zw: "ba.zw"; zx: "ba.zx"; zy: "ba.zy"; zz: "ba.zz"; }; bb: { aa: "bb.aa"; ab: "bb.ab"; ac: "bb.ac"; ad: "bb.ad"; ae: "bb.ae"; af: "bb.af"; ag: "bb.ag"; ah: "bb.ah"; ai: "bb.ai"; aj: "bb.aj"; ak: "bb.ak"; al: "bb.al"; am: "bb.am"; an: "bb.an"; ao: "bb.ao"; ap: "bb.ap"; aq: "bb.aq"; ar: "bb.ar"; as: "bb.as"; at: "bb.at"; au: "bb.au"; av: "bb.av"; aw: "bb.aw"; ax: "bb.ax"; ay: "bb.ay"; az: "bb.az"; ba: "bb.ba"; bb: "bb.bb"; bc: "bb.bc"; bd: "bb.bd"; be: "bb.be"; bf: "bb.bf"; bg: "bb.bg"; bh: "bb.bh"; bi: "bb.bi"; bj: "bb.bj"; bk: "bb.bk"; bl: "bb.bl"; bm: "bb.bm"; bn: "bb.bn"; bo: "bb.bo"; bp: "bb.bp"; bq: "bb.bq"; br: "bb.br"; bs: "bb.bs"; bt: "bb.bt"; bu: "bb.bu"; bv: "bb.bv"; bw: "bb.bw"; bx: "bb.bx"; by: "bb.by"; bz: "bb.bz"; ca: "bb.ca"; cb: "bb.cb"; cc: "bb.cc"; cd: "bb.cd"; ce: "bb.ce"; cf: "bb.cf"; cg: "bb.cg"; ch: "bb.ch"; ci: "bb.ci"; cj: "bb.cj"; ck: "bb.ck"; cl: "bb.cl"; cm: "bb.cm"; cn: "bb.cn"; co: "bb.co"; cp: "bb.cp"; cq: "bb.cq"; cr: "bb.cr"; cs: "bb.cs"; ct: "bb.ct"; cu: "bb.cu"; cv: "bb.cv"; cw: "bb.cw"; cx: "bb.cx"; cy: "bb.cy"; cz: "bb.cz"; da: "bb.da"; db: "bb.db"; dc: "bb.dc"; dd: "bb.dd"; de: "bb.de"; df: "bb.df"; dg: "bb.dg"; dh: "bb.dh"; di: "bb.di"; dj: "bb.dj"; dk: "bb.dk"; dl: "bb.dl"; dm: "bb.dm"; dn: "bb.dn"; do: "bb.do"; dp: "bb.dp"; dq: "bb.dq"; dr: "bb.dr"; ds: "bb.ds"; dt: "bb.dt"; du: "bb.du"; dv: "bb.dv"; dw: "bb.dw"; dx: "bb.dx"; dy: "bb.dy"; dz: "bb.dz"; ea: "bb.ea"; eb: "bb.eb"; ec: "bb.ec"; ed: "bb.ed"; ee: "bb.ee"; ef: "bb.ef"; eg: "bb.eg"; eh: "bb.eh"; ei: "bb.ei"; ej: "bb.ej"; ek: "bb.ek"; el: "bb.el"; em: "bb.em"; en: "bb.en"; eo: "bb.eo"; ep: "bb.ep"; eq: "bb.eq"; er: "bb.er"; es: "bb.es"; et: "bb.et"; eu: "bb.eu"; ev: "bb.ev"; ew: "bb.ew"; ex: "bb.ex"; ey: "bb.ey"; ez: "bb.ez"; fa: "bb.fa"; fb: "bb.fb"; fc: "bb.fc"; fd: "bb.fd"; fe: "bb.fe"; ff: "bb.ff"; fg: "bb.fg"; fh: "bb.fh"; fi: "bb.fi"; fj: "bb.fj"; fk: "bb.fk"; fl: "bb.fl"; fm: "bb.fm"; fn: "bb.fn"; fo: "bb.fo"; fp: "bb.fp"; fq: "bb.fq"; fr: "bb.fr"; fs: "bb.fs"; ft: "bb.ft"; fu: "bb.fu"; fv: "bb.fv"; fw: "bb.fw"; fx: "bb.fx"; fy: "bb.fy"; fz: "bb.fz"; ga: "bb.ga"; gb: "bb.gb"; gc: "bb.gc"; gd: "bb.gd"; ge: "bb.ge"; gf: "bb.gf"; gg: "bb.gg"; gh: "bb.gh"; gi: "bb.gi"; gj: "bb.gj"; gk: "bb.gk"; gl: "bb.gl"; gm: "bb.gm"; gn: "bb.gn"; go: "bb.go"; gp: "bb.gp"; gq: "bb.gq"; gr: "bb.gr"; gs: "bb.gs"; gt: "bb.gt"; gu: "bb.gu"; gv: "bb.gv"; gw: "bb.gw"; gx: "bb.gx"; gy: "bb.gy"; gz: "bb.gz"; ha: "bb.ha"; hb: "bb.hb"; hc: "bb.hc"; hd: "bb.hd"; he: "bb.he"; hf: "bb.hf"; hg: "bb.hg"; hh: "bb.hh"; hi: "bb.hi"; hj: "bb.hj"; hk: "bb.hk"; hl: "bb.hl"; hm: "bb.hm"; hn: "bb.hn"; ho: "bb.ho"; hp: "bb.hp"; hq: "bb.hq"; hr: "bb.hr"; hs: "bb.hs"; ht: "bb.ht"; hu: "bb.hu"; hv: "bb.hv"; hw: "bb.hw"; hx: "bb.hx"; hy: "bb.hy"; hz: "bb.hz"; ia: "bb.ia"; ib: "bb.ib"; ic: "bb.ic"; id: "bb.id"; ie: "bb.ie"; if: "bb.if"; ig: "bb.ig"; ih: "bb.ih"; ii: "bb.ii"; ij: "bb.ij"; ik: "bb.ik"; il: "bb.il"; im: "bb.im"; in: "bb.in"; io: "bb.io"; ip: "bb.ip"; iq: "bb.iq"; ir: "bb.ir"; is: "bb.is"; it: "bb.it"; iu: "bb.iu"; iv: "bb.iv"; iw: "bb.iw"; ix: "bb.ix"; iy: "bb.iy"; iz: "bb.iz"; ja: "bb.ja"; jb: "bb.jb"; jc: "bb.jc"; jd: "bb.jd"; je: "bb.je"; jf: "bb.jf"; jg: "bb.jg"; jh: "bb.jh"; ji: "bb.ji"; jj: "bb.jj"; jk: "bb.jk"; jl: "bb.jl"; jm: "bb.jm"; jn: "bb.jn"; jo: "bb.jo"; jp: "bb.jp"; jq: "bb.jq"; jr: "bb.jr"; js: "bb.js"; jt: "bb.jt"; ju: "bb.ju"; jv: "bb.jv"; jw: "bb.jw"; jx: "bb.jx"; jy: "bb.jy"; jz: "bb.jz"; ka: "bb.ka"; kb: "bb.kb"; kc: "bb.kc"; kd: "bb.kd"; ke: "bb.ke"; kf: "bb.kf"; kg: "bb.kg"; kh: "bb.kh"; ki: "bb.ki"; kj: "bb.kj"; kk: "bb.kk"; kl: "bb.kl"; km: "bb.km"; kn: "bb.kn"; ko: "bb.ko"; kp: "bb.kp"; kq: "bb.kq"; kr: "bb.kr"; ks: "bb.ks"; kt: "bb.kt"; ku: "bb.ku"; kv: "bb.kv"; kw: "bb.kw"; kx: "bb.kx"; ky: "bb.ky"; kz: "bb.kz"; la: "bb.la"; lb: "bb.lb"; lc: "bb.lc"; ld: "bb.ld"; le: "bb.le"; lf: "bb.lf"; lg: "bb.lg"; lh: "bb.lh"; li: "bb.li"; lj: "bb.lj"; lk: "bb.lk"; ll: "bb.ll"; lm: "bb.lm"; ln: "bb.ln"; lo: "bb.lo"; lp: "bb.lp"; lq: "bb.lq"; lr: "bb.lr"; ls: "bb.ls"; lt: "bb.lt"; lu: "bb.lu"; lv: "bb.lv"; lw: "bb.lw"; lx: "bb.lx"; ly: "bb.ly"; lz: "bb.lz"; ma: "bb.ma"; mb: "bb.mb"; mc: "bb.mc"; md: "bb.md"; me: "bb.me"; mf: "bb.mf"; mg: "bb.mg"; mh: "bb.mh"; mi: "bb.mi"; mj: "bb.mj"; mk: "bb.mk"; ml: "bb.ml"; mm: "bb.mm"; mn: "bb.mn"; mo: "bb.mo"; mp: "bb.mp"; mq: "bb.mq"; mr: "bb.mr"; ms: "bb.ms"; mt: "bb.mt"; mu: "bb.mu"; mv: "bb.mv"; mw: "bb.mw"; mx: "bb.mx"; my: "bb.my"; mz: "bb.mz"; na: "bb.na"; nb: "bb.nb"; nc: "bb.nc"; nd: "bb.nd"; ne: "bb.ne"; nf: "bb.nf"; ng: "bb.ng"; nh: "bb.nh"; ni: "bb.ni"; nj: "bb.nj"; nk: "bb.nk"; nl: "bb.nl"; nm: "bb.nm"; nn: "bb.nn"; no: "bb.no"; np: "bb.np"; nq: "bb.nq"; nr: "bb.nr"; ns: "bb.ns"; nt: "bb.nt"; nu: "bb.nu"; nv: "bb.nv"; nw: "bb.nw"; nx: "bb.nx"; ny: "bb.ny"; nz: "bb.nz"; oa: "bb.oa"; ob: "bb.ob"; oc: "bb.oc"; od: "bb.od"; oe: "bb.oe"; of: "bb.of"; og: "bb.og"; oh: "bb.oh"; oi: "bb.oi"; oj: "bb.oj"; ok: "bb.ok"; ol: "bb.ol"; om: "bb.om"; on: "bb.on"; oo: "bb.oo"; op: "bb.op"; oq: "bb.oq"; or: "bb.or"; os: "bb.os"; ot: "bb.ot"; ou: "bb.ou"; ov: "bb.ov"; ow: "bb.ow"; ox: "bb.ox"; oy: "bb.oy"; oz: "bb.oz"; pa: "bb.pa"; pb: "bb.pb"; pc: "bb.pc"; pd: "bb.pd"; pe: "bb.pe"; pf: "bb.pf"; pg: "bb.pg"; ph: "bb.ph"; pi: "bb.pi"; pj: "bb.pj"; pk: "bb.pk"; pl: "bb.pl"; pm: "bb.pm"; pn: "bb.pn"; po: "bb.po"; pp: "bb.pp"; pq: "bb.pq"; pr: "bb.pr"; ps: "bb.ps"; pt: "bb.pt"; pu: "bb.pu"; pv: "bb.pv"; pw: "bb.pw"; px: "bb.px"; py: "bb.py"; pz: "bb.pz"; qa: "bb.qa"; qb: "bb.qb"; qc: "bb.qc"; qd: "bb.qd"; qe: "bb.qe"; qf: "bb.qf"; qg: "bb.qg"; qh: "bb.qh"; qi: "bb.qi"; qj: "bb.qj"; qk: "bb.qk"; ql: "bb.ql"; qm: "bb.qm"; qn: "bb.qn"; qo: "bb.qo"; qp: "bb.qp"; qq: "bb.qq"; qr: "bb.qr"; qs: "bb.qs"; qt: "bb.qt"; qu: "bb.qu"; qv: "bb.qv"; qw: "bb.qw"; qx: "bb.qx"; qy: "bb.qy"; qz: "bb.qz"; ra: "bb.ra"; rb: "bb.rb"; rc: "bb.rc"; rd: "bb.rd"; re: "bb.re"; rf: "bb.rf"; rg: "bb.rg"; rh: "bb.rh"; ri: "bb.ri"; rj: "bb.rj"; rk: "bb.rk"; rl: "bb.rl"; rm: "bb.rm"; rn: "bb.rn"; ro: "bb.ro"; rp: "bb.rp"; rq: "bb.rq"; rr: "bb.rr"; rs: "bb.rs"; rt: "bb.rt"; ru: "bb.ru"; rv: "bb.rv"; rw: "bb.rw"; rx: "bb.rx"; ry: "bb.ry"; rz: "bb.rz"; sa: "bb.sa"; sb: "bb.sb"; sc: "bb.sc"; sd: "bb.sd"; se: "bb.se"; sf: "bb.sf"; sg: "bb.sg"; sh: "bb.sh"; si: "bb.si"; sj: "bb.sj"; sk: "bb.sk"; sl: "bb.sl"; sm: "bb.sm"; sn: "bb.sn"; so: "bb.so"; sp: "bb.sp"; sq: "bb.sq"; sr: "bb.sr"; ss: "bb.ss"; st: "bb.st"; su: "bb.su"; sv: "bb.sv"; sw: "bb.sw"; sx: "bb.sx"; sy: "bb.sy"; sz: "bb.sz"; ta: "bb.ta"; tb: "bb.tb"; tc: "bb.tc"; td: "bb.td"; te: "bb.te"; tf: "bb.tf"; tg: "bb.tg"; th: "bb.th"; ti: "bb.ti"; tj: "bb.tj"; tk: "bb.tk"; tl: "bb.tl"; tm: "bb.tm"; tn: "bb.tn"; to: "bb.to"; tp: "bb.tp"; tq: "bb.tq"; tr: "bb.tr"; ts: "bb.ts"; tt: "bb.tt"; tu: "bb.tu"; tv: "bb.tv"; tw: "bb.tw"; tx: "bb.tx"; ty: "bb.ty"; tz: "bb.tz"; ua: "bb.ua"; ub: "bb.ub"; uc: "bb.uc"; ud: "bb.ud"; ue: "bb.ue"; uf: "bb.uf"; ug: "bb.ug"; uh: "bb.uh"; ui: "bb.ui"; uj: "bb.uj"; uk: "bb.uk"; ul: "bb.ul"; um: "bb.um"; un: "bb.un"; uo: "bb.uo"; up: "bb.up"; uq: "bb.uq"; ur: "bb.ur"; us: "bb.us"; ut: "bb.ut"; uu: "bb.uu"; uv: "bb.uv"; uw: "bb.uw"; ux: "bb.ux"; uy: "bb.uy"; uz: "bb.uz"; va: "bb.va"; vb: "bb.vb"; vc: "bb.vc"; vd: "bb.vd"; ve: "bb.ve"; vf: "bb.vf"; vg: "bb.vg"; vh: "bb.vh"; vi: "bb.vi"; vj: "bb.vj"; vk: "bb.vk"; vl: "bb.vl"; vm: "bb.vm"; vn: "bb.vn"; vo: "bb.vo"; vp: "bb.vp"; vq: "bb.vq"; vr: "bb.vr"; vs: "bb.vs"; vt: "bb.vt"; vu: "bb.vu"; vv: "bb.vv"; vw: "bb.vw"; vx: "bb.vx"; vy: "bb.vy"; vz: "bb.vz"; wa: "bb.wa"; wb: "bb.wb"; wc: "bb.wc"; wd: "bb.wd"; we: "bb.we"; wf: "bb.wf"; wg: "bb.wg"; wh: "bb.wh"; wi: "bb.wi"; wj: "bb.wj"; wk: "bb.wk"; wl: "bb.wl"; wm: "bb.wm"; wn: "bb.wn"; wo: "bb.wo"; wp: "bb.wp"; wq: "bb.wq"; wr: "bb.wr"; ws: "bb.ws"; wt: "bb.wt"; wu: "bb.wu"; wv: "bb.wv"; ww: "bb.ww"; wx: "bb.wx"; wy: "bb.wy"; wz: "bb.wz"; xa: "bb.xa"; xb: "bb.xb"; xc: "bb.xc"; xd: "bb.xd"; xe: "bb.xe"; xf: "bb.xf"; xg: "bb.xg"; xh: "bb.xh"; xi: "bb.xi"; xj: "bb.xj"; xk: "bb.xk"; xl: "bb.xl"; xm: "bb.xm"; xn: "bb.xn"; xo: "bb.xo"; xp: "bb.xp"; xq: "bb.xq"; xr: "bb.xr"; xs: "bb.xs"; xt: "bb.xt"; xu: "bb.xu"; xv: "bb.xv"; xw: "bb.xw"; xx: "bb.xx"; xy: "bb.xy"; xz: "bb.xz"; ya: "bb.ya"; yb: "bb.yb"; yc: "bb.yc"; yd: "bb.yd"; ye: "bb.ye"; yf: "bb.yf"; yg: "bb.yg"; yh: "bb.yh"; yi: "bb.yi"; yj: "bb.yj"; yk: "bb.yk"; yl: "bb.yl"; ym: "bb.ym"; yn: "bb.yn"; yo: "bb.yo"; yp: "bb.yp"; yq: "bb.yq"; yr: "bb.yr"; ys: "bb.ys"; yt: "bb.yt"; yu: "bb.yu"; yv: "bb.yv"; yw: "bb.yw"; yx: "bb.yx"; yy: "bb.yy"; yz: "bb.yz"; za: "bb.za"; zb: "bb.zb"; zc: "bb.zc"; zd: "bb.zd"; ze: "bb.ze"; zf: "bb.zf"; zg: "bb.zg"; zh: "bb.zh"; zi: "bb.zi"; zj: "bb.zj"; zk: "bb.zk"; zl: "bb.zl"; zm: "bb.zm"; zn: "bb.zn"; zo: "bb.zo"; zp: "bb.zp"; zq: "bb.zq"; zr: "bb.zr"; zs: "bb.zs"; zt: "bb.zt"; zu: "bb.zu"; zv: "bb.zv"; zw: "bb.zw"; zx: "bb.zx"; zy: "bb.zy"; zz: "bb.zz"; }; bc: { aa: "bc.aa"; ab: "bc.ab"; ac: "bc.ac"; ad: "bc.ad"; ae: "bc.ae"; af: "bc.af"; ag: "bc.ag"; ah: "bc.ah"; ai: "bc.ai"; aj: "bc.aj"; ak: "bc.ak"; al: "bc.al"; am: "bc.am"; an: "bc.an"; ao: "bc.ao"; ap: "bc.ap"; aq: "bc.aq"; ar: "bc.ar"; as: "bc.as"; at: "bc.at"; au: "bc.au"; av: "bc.av"; aw: "bc.aw"; ax: "bc.ax"; ay: "bc.ay"; az: "bc.az"; ba: "bc.ba"; bb: "bc.bb"; bc: "bc.bc"; bd: "bc.bd"; be: "bc.be"; bf: "bc.bf"; bg: "bc.bg"; bh: "bc.bh"; bi: "bc.bi"; bj: "bc.bj"; bk: "bc.bk"; bl: "bc.bl"; bm: "bc.bm"; bn: "bc.bn"; bo: "bc.bo"; bp: "bc.bp"; bq: "bc.bq"; br: "bc.br"; bs: "bc.bs"; bt: "bc.bt"; bu: "bc.bu"; bv: "bc.bv"; bw: "bc.bw"; bx: "bc.bx"; by: "bc.by"; bz: "bc.bz"; ca: "bc.ca"; cb: "bc.cb"; cc: "bc.cc"; cd: "bc.cd"; ce: "bc.ce"; cf: "bc.cf"; cg: "bc.cg"; ch: "bc.ch"; ci: "bc.ci"; cj: "bc.cj"; ck: "bc.ck"; cl: "bc.cl"; cm: "bc.cm"; cn: "bc.cn"; co: "bc.co"; cp: "bc.cp"; cq: "bc.cq"; cr: "bc.cr"; cs: "bc.cs"; ct: "bc.ct"; cu: "bc.cu"; cv: "bc.cv"; cw: "bc.cw"; cx: "bc.cx"; cy: "bc.cy"; cz: "bc.cz"; da: "bc.da"; db: "bc.db"; dc: "bc.dc"; dd: "bc.dd"; de: "bc.de"; df: "bc.df"; dg: "bc.dg"; dh: "bc.dh"; di: "bc.di"; dj: "bc.dj"; dk: "bc.dk"; dl: "bc.dl"; dm: "bc.dm"; dn: "bc.dn"; do: "bc.do"; dp: "bc.dp"; dq: "bc.dq"; dr: "bc.dr"; ds: "bc.ds"; dt: "bc.dt"; du: "bc.du"; dv: "bc.dv"; dw: "bc.dw"; dx: "bc.dx"; dy: "bc.dy"; dz: "bc.dz"; ea: "bc.ea"; eb: "bc.eb"; ec: "bc.ec"; ed: "bc.ed"; ee: "bc.ee"; ef: "bc.ef"; eg: "bc.eg"; eh: "bc.eh"; ei: "bc.ei"; ej: "bc.ej"; ek: "bc.ek"; el: "bc.el"; em: "bc.em"; en: "bc.en"; eo: "bc.eo"; ep: "bc.ep"; eq: "bc.eq"; er: "bc.er"; es: "bc.es"; et: "bc.et"; eu: "bc.eu"; ev: "bc.ev"; ew: "bc.ew"; ex: "bc.ex"; ey: "bc.ey"; ez: "bc.ez"; fa: "bc.fa"; fb: "bc.fb"; fc: "bc.fc"; fd: "bc.fd"; fe: "bc.fe"; ff: "bc.ff"; fg: "bc.fg"; fh: "bc.fh"; fi: "bc.fi"; fj: "bc.fj"; fk: "bc.fk"; fl: "bc.fl"; fm: "bc.fm"; fn: "bc.fn"; fo: "bc.fo"; fp: "bc.fp"; fq: "bc.fq"; fr: "bc.fr"; fs: "bc.fs"; ft: "bc.ft"; fu: "bc.fu"; fv: "bc.fv"; fw: "bc.fw"; fx: "bc.fx"; fy: "bc.fy"; fz: "bc.fz"; ga: "bc.ga"; gb: "bc.gb"; gc: "bc.gc"; gd: "bc.gd"; ge: "bc.ge"; gf: "bc.gf"; gg: "bc.gg"; gh: "bc.gh"; gi: "bc.gi"; gj: "bc.gj"; gk: "bc.gk"; gl: "bc.gl"; gm: "bc.gm"; gn: "bc.gn"; go: "bc.go"; gp: "bc.gp"; gq: "bc.gq"; gr: "bc.gr"; gs: "bc.gs"; gt: "bc.gt"; gu: "bc.gu"; gv: "bc.gv"; gw: "bc.gw"; gx: "bc.gx"; gy: "bc.gy"; gz: "bc.gz"; ha: "bc.ha"; hb: "bc.hb"; hc: "bc.hc"; hd: "bc.hd"; he: "bc.he"; hf: "bc.hf"; hg: "bc.hg"; hh: "bc.hh"; hi: "bc.hi"; hj: "bc.hj"; hk: "bc.hk"; hl: "bc.hl"; hm: "bc.hm"; hn: "bc.hn"; ho: "bc.ho"; hp: "bc.hp"; hq: "bc.hq"; hr: "bc.hr"; hs: "bc.hs"; ht: "bc.ht"; hu: "bc.hu"; hv: "bc.hv"; hw: "bc.hw"; hx: "bc.hx"; hy: "bc.hy"; hz: "bc.hz"; ia: "bc.ia"; ib: "bc.ib"; ic: "bc.ic"; id: "bc.id"; ie: "bc.ie"; if: "bc.if"; ig: "bc.ig"; ih: "bc.ih"; ii: "bc.ii"; ij: "bc.ij"; ik: "bc.ik"; il: "bc.il"; im: "bc.im"; in: "bc.in"; io: "bc.io"; ip: "bc.ip"; iq: "bc.iq"; ir: "bc.ir"; is: "bc.is"; it: "bc.it"; iu: "bc.iu"; iv: "bc.iv"; iw: "bc.iw"; ix: "bc.ix"; iy: "bc.iy"; iz: "bc.iz"; ja: "bc.ja"; jb: "bc.jb"; jc: "bc.jc"; jd: "bc.jd"; je: "bc.je"; jf: "bc.jf"; jg: "bc.jg"; jh: "bc.jh"; ji: "bc.ji"; jj: "bc.jj"; jk: "bc.jk"; jl: "bc.jl"; jm: "bc.jm"; jn: "bc.jn"; jo: "bc.jo"; jp: "bc.jp"; jq: "bc.jq"; jr: "bc.jr"; js: "bc.js"; jt: "bc.jt"; ju: "bc.ju"; jv: "bc.jv"; jw: "bc.jw"; jx: "bc.jx"; jy: "bc.jy"; jz: "bc.jz"; ka: "bc.ka"; kb: "bc.kb"; kc: "bc.kc"; kd: "bc.kd"; ke: "bc.ke"; kf: "bc.kf"; kg: "bc.kg"; kh: "bc.kh"; ki: "bc.ki"; kj: "bc.kj"; kk: "bc.kk"; kl: "bc.kl"; km: "bc.km"; kn: "bc.kn"; ko: "bc.ko"; kp: "bc.kp"; kq: "bc.kq"; kr: "bc.kr"; ks: "bc.ks"; kt: "bc.kt"; ku: "bc.ku"; kv: "bc.kv"; kw: "bc.kw"; kx: "bc.kx"; ky: "bc.ky"; kz: "bc.kz"; la: "bc.la"; lb: "bc.lb"; lc: "bc.lc"; ld: "bc.ld"; le: "bc.le"; lf: "bc.lf"; lg: "bc.lg"; lh: "bc.lh"; li: "bc.li"; lj: "bc.lj"; lk: "bc.lk"; ll: "bc.ll"; lm: "bc.lm"; ln: "bc.ln"; lo: "bc.lo"; lp: "bc.lp"; lq: "bc.lq"; lr: "bc.lr"; ls: "bc.ls"; lt: "bc.lt"; lu: "bc.lu"; lv: "bc.lv"; lw: "bc.lw"; lx: "bc.lx"; ly: "bc.ly"; lz: "bc.lz"; ma: "bc.ma"; mb: "bc.mb"; mc: "bc.mc"; md: "bc.md"; me: "bc.me"; mf: "bc.mf"; mg: "bc.mg"; mh: "bc.mh"; mi: "bc.mi"; mj: "bc.mj"; mk: "bc.mk"; ml: "bc.ml"; mm: "bc.mm"; mn: "bc.mn"; mo: "bc.mo"; mp: "bc.mp"; mq: "bc.mq"; mr: "bc.mr"; ms: "bc.ms"; mt: "bc.mt"; mu: "bc.mu"; mv: "bc.mv"; mw: "bc.mw"; mx: "bc.mx"; my: "bc.my"; mz: "bc.mz"; na: "bc.na"; nb: "bc.nb"; nc: "bc.nc"; nd: "bc.nd"; ne: "bc.ne"; nf: "bc.nf"; ng: "bc.ng"; nh: "bc.nh"; ni: "bc.ni"; nj: "bc.nj"; nk: "bc.nk"; nl: "bc.nl"; nm: "bc.nm"; nn: "bc.nn"; no: "bc.no"; np: "bc.np"; nq: "bc.nq"; nr: "bc.nr"; ns: "bc.ns"; nt: "bc.nt"; nu: "bc.nu"; nv: "bc.nv"; nw: "bc.nw"; nx: "bc.nx"; ny: "bc.ny"; nz: "bc.nz"; oa: "bc.oa"; ob: "bc.ob"; oc: "bc.oc"; od: "bc.od"; oe: "bc.oe"; of: "bc.of"; og: "bc.og"; oh: "bc.oh"; oi: "bc.oi"; oj: "bc.oj"; ok: "bc.ok"; ol: "bc.ol"; om: "bc.om"; on: "bc.on"; oo: "bc.oo"; op: "bc.op"; oq: "bc.oq"; or: "bc.or"; os: "bc.os"; ot: "bc.ot"; ou: "bc.ou"; ov: "bc.ov"; ow: "bc.ow"; ox: "bc.ox"; oy: "bc.oy"; oz: "bc.oz"; pa: "bc.pa"; pb: "bc.pb"; pc: "bc.pc"; pd: "bc.pd"; pe: "bc.pe"; pf: "bc.pf"; pg: "bc.pg"; ph: "bc.ph"; pi: "bc.pi"; pj: "bc.pj"; pk: "bc.pk"; pl: "bc.pl"; pm: "bc.pm"; pn: "bc.pn"; po: "bc.po"; pp: "bc.pp"; pq: "bc.pq"; pr: "bc.pr"; ps: "bc.ps"; pt: "bc.pt"; pu: "bc.pu"; pv: "bc.pv"; pw: "bc.pw"; px: "bc.px"; py: "bc.py"; pz: "bc.pz"; qa: "bc.qa"; qb: "bc.qb"; qc: "bc.qc"; qd: "bc.qd"; qe: "bc.qe"; qf: "bc.qf"; qg: "bc.qg"; qh: "bc.qh"; qi: "bc.qi"; qj: "bc.qj"; qk: "bc.qk"; ql: "bc.ql"; qm: "bc.qm"; qn: "bc.qn"; qo: "bc.qo"; qp: "bc.qp"; qq: "bc.qq"; qr: "bc.qr"; qs: "bc.qs"; qt: "bc.qt"; qu: "bc.qu"; qv: "bc.qv"; qw: "bc.qw"; qx: "bc.qx"; qy: "bc.qy"; qz: "bc.qz"; ra: "bc.ra"; rb: "bc.rb"; rc: "bc.rc"; rd: "bc.rd"; re: "bc.re"; rf: "bc.rf"; rg: "bc.rg"; rh: "bc.rh"; ri: "bc.ri"; rj: "bc.rj"; rk: "bc.rk"; rl: "bc.rl"; rm: "bc.rm"; rn: "bc.rn"; ro: "bc.ro"; rp: "bc.rp"; rq: "bc.rq"; rr: "bc.rr"; rs: "bc.rs"; rt: "bc.rt"; ru: "bc.ru"; rv: "bc.rv"; rw: "bc.rw"; rx: "bc.rx"; ry: "bc.ry"; rz: "bc.rz"; sa: "bc.sa"; sb: "bc.sb"; sc: "bc.sc"; sd: "bc.sd"; se: "bc.se"; sf: "bc.sf"; sg: "bc.sg"; sh: "bc.sh"; si: "bc.si"; sj: "bc.sj"; sk: "bc.sk"; sl: "bc.sl"; sm: "bc.sm"; sn: "bc.sn"; so: "bc.so"; sp: "bc.sp"; sq: "bc.sq"; sr: "bc.sr"; ss: "bc.ss"; st: "bc.st"; su: "bc.su"; sv: "bc.sv"; sw: "bc.sw"; sx: "bc.sx"; sy: "bc.sy"; sz: "bc.sz"; ta: "bc.ta"; tb: "bc.tb"; tc: "bc.tc"; td: "bc.td"; te: "bc.te"; tf: "bc.tf"; tg: "bc.tg"; th: "bc.th"; ti: "bc.ti"; tj: "bc.tj"; tk: "bc.tk"; tl: "bc.tl"; tm: "bc.tm"; tn: "bc.tn"; to: "bc.to"; tp: "bc.tp"; tq: "bc.tq"; tr: "bc.tr"; ts: "bc.ts"; tt: "bc.tt"; tu: "bc.tu"; tv: "bc.tv"; tw: "bc.tw"; tx: "bc.tx"; ty: "bc.ty"; tz: "bc.tz"; ua: "bc.ua"; ub: "bc.ub"; uc: "bc.uc"; ud: "bc.ud"; ue: "bc.ue"; uf: "bc.uf"; ug: "bc.ug"; uh: "bc.uh"; ui: "bc.ui"; uj: "bc.uj"; uk: "bc.uk"; ul: "bc.ul"; um: "bc.um"; un: "bc.un"; uo: "bc.uo"; up: "bc.up"; uq: "bc.uq"; ur: "bc.ur"; us: "bc.us"; ut: "bc.ut"; uu: "bc.uu"; uv: "bc.uv"; uw: "bc.uw"; ux: "bc.ux"; uy: "bc.uy"; uz: "bc.uz"; va: "bc.va"; vb: "bc.vb"; vc: "bc.vc"; vd: "bc.vd"; ve: "bc.ve"; vf: "bc.vf"; vg: "bc.vg"; vh: "bc.vh"; vi: "bc.vi"; vj: "bc.vj"; vk: "bc.vk"; vl: "bc.vl"; vm: "bc.vm"; vn: "bc.vn"; vo: "bc.vo"; vp: "bc.vp"; vq: "bc.vq"; vr: "bc.vr"; vs: "bc.vs"; vt: "bc.vt"; vu: "bc.vu"; vv: "bc.vv"; vw: "bc.vw"; vx: "bc.vx"; vy: "bc.vy"; vz: "bc.vz"; wa: "bc.wa"; wb: "bc.wb"; wc: "bc.wc"; wd: "bc.wd"; we: "bc.we"; wf: "bc.wf"; wg: "bc.wg"; wh: "bc.wh"; wi: "bc.wi"; wj: "bc.wj"; wk: "bc.wk"; wl: "bc.wl"; wm: "bc.wm"; wn: "bc.wn"; wo: "bc.wo"; wp: "bc.wp"; wq: "bc.wq"; wr: "bc.wr"; ws: "bc.ws"; wt: "bc.wt"; wu: "bc.wu"; wv: "bc.wv"; ww: "bc.ww"; wx: "bc.wx"; wy: "bc.wy"; wz: "bc.wz"; xa: "bc.xa"; xb: "bc.xb"; xc: "bc.xc"; xd: "bc.xd"; xe: "bc.xe"; xf: "bc.xf"; xg: "bc.xg"; xh: "bc.xh"; xi: "bc.xi"; xj: "bc.xj"; xk: "bc.xk"; xl: "bc.xl"; xm: "bc.xm"; xn: "bc.xn"; xo: "bc.xo"; xp: "bc.xp"; xq: "bc.xq"; xr: "bc.xr"; xs: "bc.xs"; xt: "bc.xt"; xu: "bc.xu"; xv: "bc.xv"; xw: "bc.xw"; xx: "bc.xx"; xy: "bc.xy"; xz: "bc.xz"; ya: "bc.ya"; yb: "bc.yb"; yc: "bc.yc"; yd: "bc.yd"; ye: "bc.ye"; yf: "bc.yf"; yg: "bc.yg"; yh: "bc.yh"; yi: "bc.yi"; yj: "bc.yj"; yk: "bc.yk"; yl: "bc.yl"; ym: "bc.ym"; yn: "bc.yn"; yo: "bc.yo"; yp: "bc.yp"; yq: "bc.yq"; yr: "bc.yr"; ys: "bc.ys"; yt: "bc.yt"; yu: "bc.yu"; yv: "bc.yv"; yw: "bc.yw"; yx: "bc.yx"; yy: "bc.yy"; yz: "bc.yz"; za: "bc.za"; zb: "bc.zb"; zc: "bc.zc"; zd: "bc.zd"; ze: "bc.ze"; zf: "bc.zf"; zg: "bc.zg"; zh: "bc.zh"; zi: "bc.zi"; zj: "bc.zj"; zk: "bc.zk"; zl: "bc.zl"; zm: "bc.zm"; zn: "bc.zn"; zo: "bc.zo"; zp: "bc.zp"; zq: "bc.zq"; zr: "bc.zr"; zs: "bc.zs"; zt: "bc.zt"; zu: "bc.zu"; zv: "bc.zv"; zw: "bc.zw"; zx: "bc.zx"; zy: "bc.zy"; zz: "bc.zz"; }; bd: { aa: "bd.aa"; ab: "bd.ab"; ac: "bd.ac"; ad: "bd.ad"; ae: "bd.ae"; af: "bd.af"; ag: "bd.ag"; ah: "bd.ah"; ai: "bd.ai"; aj: "bd.aj"; ak: "bd.ak"; al: "bd.al"; am: "bd.am"; an: "bd.an"; ao: "bd.ao"; ap: "bd.ap"; aq: "bd.aq"; ar: "bd.ar"; as: "bd.as"; at: "bd.at"; au: "bd.au"; av: "bd.av"; aw: "bd.aw"; ax: "bd.ax"; ay: "bd.ay"; az: "bd.az"; ba: "bd.ba"; bb: "bd.bb"; bc: "bd.bc"; bd: "bd.bd"; be: "bd.be"; bf: "bd.bf"; bg: "bd.bg"; bh: "bd.bh"; bi: "bd.bi"; bj: "bd.bj"; bk: "bd.bk"; bl: "bd.bl"; bm: "bd.bm"; bn: "bd.bn"; bo: "bd.bo"; bp: "bd.bp"; bq: "bd.bq"; br: "bd.br"; bs: "bd.bs"; bt: "bd.bt"; bu: "bd.bu"; bv: "bd.bv"; bw: "bd.bw"; bx: "bd.bx"; by: "bd.by"; bz: "bd.bz"; ca: "bd.ca"; cb: "bd.cb"; cc: "bd.cc"; cd: "bd.cd"; ce: "bd.ce"; cf: "bd.cf"; cg: "bd.cg"; ch: "bd.ch"; ci: "bd.ci"; cj: "bd.cj"; ck: "bd.ck"; cl: "bd.cl"; cm: "bd.cm"; cn: "bd.cn"; co: "bd.co"; cp: "bd.cp"; cq: "bd.cq"; cr: "bd.cr"; cs: "bd.cs"; ct: "bd.ct"; cu: "bd.cu"; cv: "bd.cv"; cw: "bd.cw"; cx: "bd.cx"; cy: "bd.cy"; cz: "bd.cz"; da: "bd.da"; db: "bd.db"; dc: "bd.dc"; dd: "bd.dd"; de: "bd.de"; df: "bd.df"; dg: "bd.dg"; dh: "bd.dh"; di: "bd.di"; dj: "bd.dj"; dk: "bd.dk"; dl: "bd.dl"; dm: "bd.dm"; dn: "bd.dn"; do: "bd.do"; dp: "bd.dp"; dq: "bd.dq"; dr: "bd.dr"; ds: "bd.ds"; dt: "bd.dt"; du: "bd.du"; dv: "bd.dv"; dw: "bd.dw"; dx: "bd.dx"; dy: "bd.dy"; dz: "bd.dz"; ea: "bd.ea"; eb: "bd.eb"; ec: "bd.ec"; ed: "bd.ed"; ee: "bd.ee"; ef: "bd.ef"; eg: "bd.eg"; eh: "bd.eh"; ei: "bd.ei"; ej: "bd.ej"; ek: "bd.ek"; el: "bd.el"; em: "bd.em"; en: "bd.en"; eo: "bd.eo"; ep: "bd.ep"; eq: "bd.eq"; er: "bd.er"; es: "bd.es"; et: "bd.et"; eu: "bd.eu"; ev: "bd.ev"; ew: "bd.ew"; ex: "bd.ex"; ey: "bd.ey"; ez: "bd.ez"; fa: "bd.fa"; fb: "bd.fb"; fc: "bd.fc"; fd: "bd.fd"; fe: "bd.fe"; ff: "bd.ff"; fg: "bd.fg"; fh: "bd.fh"; fi: "bd.fi"; fj: "bd.fj"; fk: "bd.fk"; fl: "bd.fl"; fm: "bd.fm"; fn: "bd.fn"; fo: "bd.fo"; fp: "bd.fp"; fq: "bd.fq"; fr: "bd.fr"; fs: "bd.fs"; ft: "bd.ft"; fu: "bd.fu"; fv: "bd.fv"; fw: "bd.fw"; fx: "bd.fx"; fy: "bd.fy"; fz: "bd.fz"; ga: "bd.ga"; gb: "bd.gb"; gc: "bd.gc"; gd: "bd.gd"; ge: "bd.ge"; gf: "bd.gf"; gg: "bd.gg"; gh: "bd.gh"; gi: "bd.gi"; gj: "bd.gj"; gk: "bd.gk"; gl: "bd.gl"; gm: "bd.gm"; gn: "bd.gn"; go: "bd.go"; gp: "bd.gp"; gq: "bd.gq"; gr: "bd.gr"; gs: "bd.gs"; gt: "bd.gt"; gu: "bd.gu"; gv: "bd.gv"; gw: "bd.gw"; gx: "bd.gx"; gy: "bd.gy"; gz: "bd.gz"; ha: "bd.ha"; hb: "bd.hb"; hc: "bd.hc"; hd: "bd.hd"; he: "bd.he"; hf: "bd.hf"; hg: "bd.hg"; hh: "bd.hh"; hi: "bd.hi"; hj: "bd.hj"; hk: "bd.hk"; hl: "bd.hl"; hm: "bd.hm"; hn: "bd.hn"; ho: "bd.ho"; hp: "bd.hp"; hq: "bd.hq"; hr: "bd.hr"; hs: "bd.hs"; ht: "bd.ht"; hu: "bd.hu"; hv: "bd.hv"; hw: "bd.hw"; hx: "bd.hx"; hy: "bd.hy"; hz: "bd.hz"; ia: "bd.ia"; ib: "bd.ib"; ic: "bd.ic"; id: "bd.id"; ie: "bd.ie"; if: "bd.if"; ig: "bd.ig"; ih: "bd.ih"; ii: "bd.ii"; ij: "bd.ij"; ik: "bd.ik"; il: "bd.il"; im: "bd.im"; in: "bd.in"; io: "bd.io"; ip: "bd.ip"; iq: "bd.iq"; ir: "bd.ir"; is: "bd.is"; it: "bd.it"; iu: "bd.iu"; iv: "bd.iv"; iw: "bd.iw"; ix: "bd.ix"; iy: "bd.iy"; iz: "bd.iz"; ja: "bd.ja"; jb: "bd.jb"; jc: "bd.jc"; jd: "bd.jd"; je: "bd.je"; jf: "bd.jf"; jg: "bd.jg"; jh: "bd.jh"; ji: "bd.ji"; jj: "bd.jj"; jk: "bd.jk"; jl: "bd.jl"; jm: "bd.jm"; jn: "bd.jn"; jo: "bd.jo"; jp: "bd.jp"; jq: "bd.jq"; jr: "bd.jr"; js: "bd.js"; jt: "bd.jt"; ju: "bd.ju"; jv: "bd.jv"; jw: "bd.jw"; jx: "bd.jx"; jy: "bd.jy"; jz: "bd.jz"; ka: "bd.ka"; kb: "bd.kb"; kc: "bd.kc"; kd: "bd.kd"; ke: "bd.ke"; kf: "bd.kf"; kg: "bd.kg"; kh: "bd.kh"; ki: "bd.ki"; kj: "bd.kj"; kk: "bd.kk"; kl: "bd.kl"; km: "bd.km"; kn: "bd.kn"; ko: "bd.ko"; kp: "bd.kp"; kq: "bd.kq"; kr: "bd.kr"; ks: "bd.ks"; kt: "bd.kt"; ku: "bd.ku"; kv: "bd.kv"; kw: "bd.kw"; kx: "bd.kx"; ky: "bd.ky"; kz: "bd.kz"; la: "bd.la"; lb: "bd.lb"; lc: "bd.lc"; ld: "bd.ld"; le: "bd.le"; lf: "bd.lf"; lg: "bd.lg"; lh: "bd.lh"; li: "bd.li"; lj: "bd.lj"; lk: "bd.lk"; ll: "bd.ll"; lm: "bd.lm"; ln: "bd.ln"; lo: "bd.lo"; lp: "bd.lp"; lq: "bd.lq"; lr: "bd.lr"; ls: "bd.ls"; lt: "bd.lt"; lu: "bd.lu"; lv: "bd.lv"; lw: "bd.lw"; lx: "bd.lx"; ly: "bd.ly"; lz: "bd.lz"; ma: "bd.ma"; mb: "bd.mb"; mc: "bd.mc"; md: "bd.md"; me: "bd.me"; mf: "bd.mf"; mg: "bd.mg"; mh: "bd.mh"; mi: "bd.mi"; mj: "bd.mj"; mk: "bd.mk"; ml: "bd.ml"; mm: "bd.mm"; mn: "bd.mn"; mo: "bd.mo"; mp: "bd.mp"; mq: "bd.mq"; mr: "bd.mr"; ms: "bd.ms"; mt: "bd.mt"; mu: "bd.mu"; mv: "bd.mv"; mw: "bd.mw"; mx: "bd.mx"; my: "bd.my"; mz: "bd.mz"; na: "bd.na"; nb: "bd.nb"; nc: "bd.nc"; nd: "bd.nd"; ne: "bd.ne"; nf: "bd.nf"; ng: "bd.ng"; nh: "bd.nh"; ni: "bd.ni"; nj: "bd.nj"; nk: "bd.nk"; nl: "bd.nl"; nm: "bd.nm"; nn: "bd.nn"; no: "bd.no"; np: "bd.np"; nq: "bd.nq"; nr: "bd.nr"; ns: "bd.ns"; nt: "bd.nt"; nu: "bd.nu"; nv: "bd.nv"; nw: "bd.nw"; nx: "bd.nx"; ny: "bd.ny"; nz: "bd.nz"; oa: "bd.oa"; ob: "bd.ob"; oc: "bd.oc"; od: "bd.od"; oe: "bd.oe"; of: "bd.of"; og: "bd.og"; oh: "bd.oh"; oi: "bd.oi"; oj: "bd.oj"; ok: "bd.ok"; ol: "bd.ol"; om: "bd.om"; on: "bd.on"; oo: "bd.oo"; op: "bd.op"; oq: "bd.oq"; or: "bd.or"; os: "bd.os"; ot: "bd.ot"; ou: "bd.ou"; ov: "bd.ov"; ow: "bd.ow"; ox: "bd.ox"; oy: "bd.oy"; oz: "bd.oz"; pa: "bd.pa"; pb: "bd.pb"; pc: "bd.pc"; pd: "bd.pd"; pe: "bd.pe"; pf: "bd.pf"; pg: "bd.pg"; ph: "bd.ph"; pi: "bd.pi"; pj: "bd.pj"; pk: "bd.pk"; pl: "bd.pl"; pm: "bd.pm"; pn: "bd.pn"; po: "bd.po"; pp: "bd.pp"; pq: "bd.pq"; pr: "bd.pr"; ps: "bd.ps"; pt: "bd.pt"; pu: "bd.pu"; pv: "bd.pv"; pw: "bd.pw"; px: "bd.px"; py: "bd.py"; pz: "bd.pz"; qa: "bd.qa"; qb: "bd.qb"; qc: "bd.qc"; qd: "bd.qd"; qe: "bd.qe"; qf: "bd.qf"; qg: "bd.qg"; qh: "bd.qh"; qi: "bd.qi"; qj: "bd.qj"; qk: "bd.qk"; ql: "bd.ql"; qm: "bd.qm"; qn: "bd.qn"; qo: "bd.qo"; qp: "bd.qp"; qq: "bd.qq"; qr: "bd.qr"; qs: "bd.qs"; qt: "bd.qt"; qu: "bd.qu"; qv: "bd.qv"; qw: "bd.qw"; qx: "bd.qx"; qy: "bd.qy"; qz: "bd.qz"; ra: "bd.ra"; rb: "bd.rb"; rc: "bd.rc"; rd: "bd.rd"; re: "bd.re"; rf: "bd.rf"; rg: "bd.rg"; rh: "bd.rh"; ri: "bd.ri"; rj: "bd.rj"; rk: "bd.rk"; rl: "bd.rl"; rm: "bd.rm"; rn: "bd.rn"; ro: "bd.ro"; rp: "bd.rp"; rq: "bd.rq"; rr: "bd.rr"; rs: "bd.rs"; rt: "bd.rt"; ru: "bd.ru"; rv: "bd.rv"; rw: "bd.rw"; rx: "bd.rx"; ry: "bd.ry"; rz: "bd.rz"; sa: "bd.sa"; sb: "bd.sb"; sc: "bd.sc"; sd: "bd.sd"; se: "bd.se"; sf: "bd.sf"; sg: "bd.sg"; sh: "bd.sh"; si: "bd.si"; sj: "bd.sj"; sk: "bd.sk"; sl: "bd.sl"; sm: "bd.sm"; sn: "bd.sn"; so: "bd.so"; sp: "bd.sp"; sq: "bd.sq"; sr: "bd.sr"; ss: "bd.ss"; st: "bd.st"; su: "bd.su"; sv: "bd.sv"; sw: "bd.sw"; sx: "bd.sx"; sy: "bd.sy"; sz: "bd.sz"; ta: "bd.ta"; tb: "bd.tb"; tc: "bd.tc"; td: "bd.td"; te: "bd.te"; tf: "bd.tf"; tg: "bd.tg"; th: "bd.th"; ti: "bd.ti"; tj: "bd.tj"; tk: "bd.tk"; tl: "bd.tl"; tm: "bd.tm"; tn: "bd.tn"; to: "bd.to"; tp: "bd.tp"; tq: "bd.tq"; tr: "bd.tr"; ts: "bd.ts"; tt: "bd.tt"; tu: "bd.tu"; tv: "bd.tv"; tw: "bd.tw"; tx: "bd.tx"; ty: "bd.ty"; tz: "bd.tz"; ua: "bd.ua"; ub: "bd.ub"; uc: "bd.uc"; ud: "bd.ud"; ue: "bd.ue"; uf: "bd.uf"; ug: "bd.ug"; uh: "bd.uh"; ui: "bd.ui"; uj: "bd.uj"; uk: "bd.uk"; ul: "bd.ul"; um: "bd.um"; un: "bd.un"; uo: "bd.uo"; up: "bd.up"; uq: "bd.uq"; ur: "bd.ur"; us: "bd.us"; ut: "bd.ut"; uu: "bd.uu"; uv: "bd.uv"; uw: "bd.uw"; ux: "bd.ux"; uy: "bd.uy"; uz: "bd.uz"; va: "bd.va"; vb: "bd.vb"; vc: "bd.vc"; vd: "bd.vd"; ve: "bd.ve"; vf: "bd.vf"; vg: "bd.vg"; vh: "bd.vh"; vi: "bd.vi"; vj: "bd.vj"; vk: "bd.vk"; vl: "bd.vl"; vm: "bd.vm"; vn: "bd.vn"; vo: "bd.vo"; vp: "bd.vp"; vq: "bd.vq"; vr: "bd.vr"; vs: "bd.vs"; vt: "bd.vt"; vu: "bd.vu"; vv: "bd.vv"; vw: "bd.vw"; vx: "bd.vx"; vy: "bd.vy"; vz: "bd.vz"; wa: "bd.wa"; wb: "bd.wb"; wc: "bd.wc"; wd: "bd.wd"; we: "bd.we"; wf: "bd.wf"; wg: "bd.wg"; wh: "bd.wh"; wi: "bd.wi"; wj: "bd.wj"; wk: "bd.wk"; wl: "bd.wl"; wm: "bd.wm"; wn: "bd.wn"; wo: "bd.wo"; wp: "bd.wp"; wq: "bd.wq"; wr: "bd.wr"; ws: "bd.ws"; wt: "bd.wt"; wu: "bd.wu"; wv: "bd.wv"; ww: "bd.ww"; wx: "bd.wx"; wy: "bd.wy"; wz: "bd.wz"; xa: "bd.xa"; xb: "bd.xb"; xc: "bd.xc"; xd: "bd.xd"; xe: "bd.xe"; xf: "bd.xf"; xg: "bd.xg"; xh: "bd.xh"; xi: "bd.xi"; xj: "bd.xj"; xk: "bd.xk"; xl: "bd.xl"; xm: "bd.xm"; xn: "bd.xn"; xo: "bd.xo"; xp: "bd.xp"; xq: "bd.xq"; xr: "bd.xr"; xs: "bd.xs"; xt: "bd.xt"; xu: "bd.xu"; xv: "bd.xv"; xw: "bd.xw"; xx: "bd.xx"; xy: "bd.xy"; xz: "bd.xz"; ya: "bd.ya"; yb: "bd.yb"; yc: "bd.yc"; yd: "bd.yd"; ye: "bd.ye"; yf: "bd.yf"; yg: "bd.yg"; yh: "bd.yh"; yi: "bd.yi"; yj: "bd.yj"; yk: "bd.yk"; yl: "bd.yl"; ym: "bd.ym"; yn: "bd.yn"; yo: "bd.yo"; yp: "bd.yp"; yq: "bd.yq"; yr: "bd.yr"; ys: "bd.ys"; yt: "bd.yt"; yu: "bd.yu"; yv: "bd.yv"; yw: "bd.yw"; yx: "bd.yx"; yy: "bd.yy"; yz: "bd.yz"; za: "bd.za"; zb: "bd.zb"; zc: "bd.zc"; zd: "bd.zd"; ze: "bd.ze"; zf: "bd.zf"; zg: "bd.zg"; zh: "bd.zh"; zi: "bd.zi"; zj: "bd.zj"; zk: "bd.zk"; zl: "bd.zl"; zm: "bd.zm"; zn: "bd.zn"; zo: "bd.zo"; zp: "bd.zp"; zq: "bd.zq"; zr: "bd.zr"; zs: "bd.zs"; zt: "bd.zt"; zu: "bd.zu"; zv: "bd.zv"; zw: "bd.zw"; zx: "bd.zx"; zy: "bd.zy"; zz: "bd.zz"; }; be: { aa: "be.aa"; ab: "be.ab"; ac: "be.ac"; ad: "be.ad"; ae: "be.ae"; af: "be.af"; ag: "be.ag"; ah: "be.ah"; ai: "be.ai"; aj: "be.aj"; ak: "be.ak"; al: "be.al"; am: "be.am"; an: "be.an"; ao: "be.ao"; ap: "be.ap"; aq: "be.aq"; ar: "be.ar"; as: "be.as"; at: "be.at"; au: "be.au"; av: "be.av"; aw: "be.aw"; ax: "be.ax"; ay: "be.ay"; az: "be.az"; ba: "be.ba"; bb: "be.bb"; bc: "be.bc"; bd: "be.bd"; be: "be.be"; bf: "be.bf"; bg: "be.bg"; bh: "be.bh"; bi: "be.bi"; bj: "be.bj"; bk: "be.bk"; bl: "be.bl"; bm: "be.bm"; bn: "be.bn"; bo: "be.bo"; bp: "be.bp"; bq: "be.bq"; br: "be.br"; bs: "be.bs"; bt: "be.bt"; bu: "be.bu"; bv: "be.bv"; bw: "be.bw"; bx: "be.bx"; by: "be.by"; bz: "be.bz"; ca: "be.ca"; cb: "be.cb"; cc: "be.cc"; cd: "be.cd"; ce: "be.ce"; cf: "be.cf"; cg: "be.cg"; ch: "be.ch"; ci: "be.ci"; cj: "be.cj"; ck: "be.ck"; cl: "be.cl"; cm: "be.cm"; cn: "be.cn"; co: "be.co"; cp: "be.cp"; cq: "be.cq"; cr: "be.cr"; cs: "be.cs"; ct: "be.ct"; cu: "be.cu"; cv: "be.cv"; cw: "be.cw"; cx: "be.cx"; cy: "be.cy"; cz: "be.cz"; da: "be.da"; db: "be.db"; dc: "be.dc"; dd: "be.dd"; de: "be.de"; df: "be.df"; dg: "be.dg"; dh: "be.dh"; di: "be.di"; dj: "be.dj"; dk: "be.dk"; dl: "be.dl"; dm: "be.dm"; dn: "be.dn"; do: "be.do"; dp: "be.dp"; dq: "be.dq"; dr: "be.dr"; ds: "be.ds"; dt: "be.dt"; du: "be.du"; dv: "be.dv"; dw: "be.dw"; dx: "be.dx"; dy: "be.dy"; dz: "be.dz"; ea: "be.ea"; eb: "be.eb"; ec: "be.ec"; ed: "be.ed"; ee: "be.ee"; ef: "be.ef"; eg: "be.eg"; eh: "be.eh"; ei: "be.ei"; ej: "be.ej"; ek: "be.ek"; el: "be.el"; em: "be.em"; en: "be.en"; eo: "be.eo"; ep: "be.ep"; eq: "be.eq"; er: "be.er"; es: "be.es"; et: "be.et"; eu: "be.eu"; ev: "be.ev"; ew: "be.ew"; ex: "be.ex"; ey: "be.ey"; ez: "be.ez"; fa: "be.fa"; fb: "be.fb"; fc: "be.fc"; fd: "be.fd"; fe: "be.fe"; ff: "be.ff"; fg: "be.fg"; fh: "be.fh"; fi: "be.fi"; fj: "be.fj"; fk: "be.fk"; fl: "be.fl"; fm: "be.fm"; fn: "be.fn"; fo: "be.fo"; fp: "be.fp"; fq: "be.fq"; fr: "be.fr"; fs: "be.fs"; ft: "be.ft"; fu: "be.fu"; fv: "be.fv"; fw: "be.fw"; fx: "be.fx"; fy: "be.fy"; fz: "be.fz"; ga: "be.ga"; gb: "be.gb"; gc: "be.gc"; gd: "be.gd"; ge: "be.ge"; gf: "be.gf"; gg: "be.gg"; gh: "be.gh"; gi: "be.gi"; gj: "be.gj"; gk: "be.gk"; gl: "be.gl"; gm: "be.gm"; gn: "be.gn"; go: "be.go"; gp: "be.gp"; gq: "be.gq"; gr: "be.gr"; gs: "be.gs"; gt: "be.gt"; gu: "be.gu"; gv: "be.gv"; gw: "be.gw"; gx: "be.gx"; gy: "be.gy"; gz: "be.gz"; ha: "be.ha"; hb: "be.hb"; hc: "be.hc"; hd: "be.hd"; he: "be.he"; hf: "be.hf"; hg: "be.hg"; hh: "be.hh"; hi: "be.hi"; hj: "be.hj"; hk: "be.hk"; hl: "be.hl"; hm: "be.hm"; hn: "be.hn"; ho: "be.ho"; hp: "be.hp"; hq: "be.hq"; hr: "be.hr"; hs: "be.hs"; ht: "be.ht"; hu: "be.hu"; hv: "be.hv"; hw: "be.hw"; hx: "be.hx"; hy: "be.hy"; hz: "be.hz"; ia: "be.ia"; ib: "be.ib"; ic: "be.ic"; id: "be.id"; ie: "be.ie"; if: "be.if"; ig: "be.ig"; ih: "be.ih"; ii: "be.ii"; ij: "be.ij"; ik: "be.ik"; il: "be.il"; im: "be.im"; in: "be.in"; io: "be.io"; ip: "be.ip"; iq: "be.iq"; ir: "be.ir"; is: "be.is"; it: "be.it"; iu: "be.iu"; iv: "be.iv"; iw: "be.iw"; ix: "be.ix"; iy: "be.iy"; iz: "be.iz"; ja: "be.ja"; jb: "be.jb"; jc: "be.jc"; jd: "be.jd"; je: "be.je"; jf: "be.jf"; jg: "be.jg"; jh: "be.jh"; ji: "be.ji"; jj: "be.jj"; jk: "be.jk"; jl: "be.jl"; jm: "be.jm"; jn: "be.jn"; jo: "be.jo"; jp: "be.jp"; jq: "be.jq"; jr: "be.jr"; js: "be.js"; jt: "be.jt"; ju: "be.ju"; jv: "be.jv"; jw: "be.jw"; jx: "be.jx"; jy: "be.jy"; jz: "be.jz"; ka: "be.ka"; kb: "be.kb"; kc: "be.kc"; kd: "be.kd"; ke: "be.ke"; kf: "be.kf"; kg: "be.kg"; kh: "be.kh"; ki: "be.ki"; kj: "be.kj"; kk: "be.kk"; kl: "be.kl"; km: "be.km"; kn: "be.kn"; ko: "be.ko"; kp: "be.kp"; kq: "be.kq"; kr: "be.kr"; ks: "be.ks"; kt: "be.kt"; ku: "be.ku"; kv: "be.kv"; kw: "be.kw"; kx: "be.kx"; ky: "be.ky"; kz: "be.kz"; la: "be.la"; lb: "be.lb"; lc: "be.lc"; ld: "be.ld"; le: "be.le"; lf: "be.lf"; lg: "be.lg"; lh: "be.lh"; li: "be.li"; lj: "be.lj"; lk: "be.lk"; ll: "be.ll"; lm: "be.lm"; ln: "be.ln"; lo: "be.lo"; lp: "be.lp"; lq: "be.lq"; lr: "be.lr"; ls: "be.ls"; lt: "be.lt"; lu: "be.lu"; lv: "be.lv"; lw: "be.lw"; lx: "be.lx"; ly: "be.ly"; lz: "be.lz"; ma: "be.ma"; mb: "be.mb"; mc: "be.mc"; md: "be.md"; me: "be.me"; mf: "be.mf"; mg: "be.mg"; mh: "be.mh"; mi: "be.mi"; mj: "be.mj"; mk: "be.mk"; ml: "be.ml"; mm: "be.mm"; mn: "be.mn"; mo: "be.mo"; mp: "be.mp"; mq: "be.mq"; mr: "be.mr"; ms: "be.ms"; mt: "be.mt"; mu: "be.mu"; mv: "be.mv"; mw: "be.mw"; mx: "be.mx"; my: "be.my"; mz: "be.mz"; na: "be.na"; nb: "be.nb"; nc: "be.nc"; nd: "be.nd"; ne: "be.ne"; nf: "be.nf"; ng: "be.ng"; nh: "be.nh"; ni: "be.ni"; nj: "be.nj"; nk: "be.nk"; nl: "be.nl"; nm: "be.nm"; nn: "be.nn"; no: "be.no"; np: "be.np"; nq: "be.nq"; nr: "be.nr"; ns: "be.ns"; nt: "be.nt"; nu: "be.nu"; nv: "be.nv"; nw: "be.nw"; nx: "be.nx"; ny: "be.ny"; nz: "be.nz"; oa: "be.oa"; ob: "be.ob"; oc: "be.oc"; od: "be.od"; oe: "be.oe"; of: "be.of"; og: "be.og"; oh: "be.oh"; oi: "be.oi"; oj: "be.oj"; ok: "be.ok"; ol: "be.ol"; om: "be.om"; on: "be.on"; oo: "be.oo"; op: "be.op"; oq: "be.oq"; or: "be.or"; os: "be.os"; ot: "be.ot"; ou: "be.ou"; ov: "be.ov"; ow: "be.ow"; ox: "be.ox"; oy: "be.oy"; oz: "be.oz"; pa: "be.pa"; pb: "be.pb"; pc: "be.pc"; pd: "be.pd"; pe: "be.pe"; pf: "be.pf"; pg: "be.pg"; ph: "be.ph"; pi: "be.pi"; pj: "be.pj"; pk: "be.pk"; pl: "be.pl"; pm: "be.pm"; pn: "be.pn"; po: "be.po"; pp: "be.pp"; pq: "be.pq"; pr: "be.pr"; ps: "be.ps"; pt: "be.pt"; pu: "be.pu"; pv: "be.pv"; pw: "be.pw"; px: "be.px"; py: "be.py"; pz: "be.pz"; qa: "be.qa"; qb: "be.qb"; qc: "be.qc"; qd: "be.qd"; qe: "be.qe"; qf: "be.qf"; qg: "be.qg"; qh: "be.qh"; qi: "be.qi"; qj: "be.qj"; qk: "be.qk"; ql: "be.ql"; qm: "be.qm"; qn: "be.qn"; qo: "be.qo"; qp: "be.qp"; qq: "be.qq"; qr: "be.qr"; qs: "be.qs"; qt: "be.qt"; qu: "be.qu"; qv: "be.qv"; qw: "be.qw"; qx: "be.qx"; qy: "be.qy"; qz: "be.qz"; ra: "be.ra"; rb: "be.rb"; rc: "be.rc"; rd: "be.rd"; re: "be.re"; rf: "be.rf"; rg: "be.rg"; rh: "be.rh"; ri: "be.ri"; rj: "be.rj"; rk: "be.rk"; rl: "be.rl"; rm: "be.rm"; rn: "be.rn"; ro: "be.ro"; rp: "be.rp"; rq: "be.rq"; rr: "be.rr"; rs: "be.rs"; rt: "be.rt"; ru: "be.ru"; rv: "be.rv"; rw: "be.rw"; rx: "be.rx"; ry: "be.ry"; rz: "be.rz"; sa: "be.sa"; sb: "be.sb"; sc: "be.sc"; sd: "be.sd"; se: "be.se"; sf: "be.sf"; sg: "be.sg"; sh: "be.sh"; si: "be.si"; sj: "be.sj"; sk: "be.sk"; sl: "be.sl"; sm: "be.sm"; sn: "be.sn"; so: "be.so"; sp: "be.sp"; sq: "be.sq"; sr: "be.sr"; ss: "be.ss"; st: "be.st"; su: "be.su"; sv: "be.sv"; sw: "be.sw"; sx: "be.sx"; sy: "be.sy"; sz: "be.sz"; ta: "be.ta"; tb: "be.tb"; tc: "be.tc"; td: "be.td"; te: "be.te"; tf: "be.tf"; tg: "be.tg"; th: "be.th"; ti: "be.ti"; tj: "be.tj"; tk: "be.tk"; tl: "be.tl"; tm: "be.tm"; tn: "be.tn"; to: "be.to"; tp: "be.tp"; tq: "be.tq"; tr: "be.tr"; ts: "be.ts"; tt: "be.tt"; tu: "be.tu"; tv: "be.tv"; tw: "be.tw"; tx: "be.tx"; ty: "be.ty"; tz: "be.tz"; ua: "be.ua"; ub: "be.ub"; uc: "be.uc"; ud: "be.ud"; ue: "be.ue"; uf: "be.uf"; ug: "be.ug"; uh: "be.uh"; ui: "be.ui"; uj: "be.uj"; uk: "be.uk"; ul: "be.ul"; um: "be.um"; un: "be.un"; uo: "be.uo"; up: "be.up"; uq: "be.uq"; ur: "be.ur"; us: "be.us"; ut: "be.ut"; uu: "be.uu"; uv: "be.uv"; uw: "be.uw"; ux: "be.ux"; uy: "be.uy"; uz: "be.uz"; va: "be.va"; vb: "be.vb"; vc: "be.vc"; vd: "be.vd"; ve: "be.ve"; vf: "be.vf"; vg: "be.vg"; vh: "be.vh"; vi: "be.vi"; vj: "be.vj"; vk: "be.vk"; vl: "be.vl"; vm: "be.vm"; vn: "be.vn"; vo: "be.vo"; vp: "be.vp"; vq: "be.vq"; vr: "be.vr"; vs: "be.vs"; vt: "be.vt"; vu: "be.vu"; vv: "be.vv"; vw: "be.vw"; vx: "be.vx"; vy: "be.vy"; vz: "be.vz"; wa: "be.wa"; wb: "be.wb"; wc: "be.wc"; wd: "be.wd"; we: "be.we"; wf: "be.wf"; wg: "be.wg"; wh: "be.wh"; wi: "be.wi"; wj: "be.wj"; wk: "be.wk"; wl: "be.wl"; wm: "be.wm"; wn: "be.wn"; wo: "be.wo"; wp: "be.wp"; wq: "be.wq"; wr: "be.wr"; ws: "be.ws"; wt: "be.wt"; wu: "be.wu"; wv: "be.wv"; ww: "be.ww"; wx: "be.wx"; wy: "be.wy"; wz: "be.wz"; xa: "be.xa"; xb: "be.xb"; xc: "be.xc"; xd: "be.xd"; xe: "be.xe"; xf: "be.xf"; xg: "be.xg"; xh: "be.xh"; xi: "be.xi"; xj: "be.xj"; xk: "be.xk"; xl: "be.xl"; xm: "be.xm"; xn: "be.xn"; xo: "be.xo"; xp: "be.xp"; xq: "be.xq"; xr: "be.xr"; xs: "be.xs"; xt: "be.xt"; xu: "be.xu"; xv: "be.xv"; xw: "be.xw"; xx: "be.xx"; xy: "be.xy"; xz: "be.xz"; ya: "be.ya"; yb: "be.yb"; yc: "be.yc"; yd: "be.yd"; ye: "be.ye"; yf: "be.yf"; yg: "be.yg"; yh: "be.yh"; yi: "be.yi"; yj: "be.yj"; yk: "be.yk"; yl: "be.yl"; ym: "be.ym"; yn: "be.yn"; yo: "be.yo"; yp: "be.yp"; yq: "be.yq"; yr: "be.yr"; ys: "be.ys"; yt: "be.yt"; yu: "be.yu"; yv: "be.yv"; yw: "be.yw"; yx: "be.yx"; yy: "be.yy"; yz: "be.yz"; za: "be.za"; zb: "be.zb"; zc: "be.zc"; zd: "be.zd"; ze: "be.ze"; zf: "be.zf"; zg: "be.zg"; zh: "be.zh"; zi: "be.zi"; zj: "be.zj"; zk: "be.zk"; zl: "be.zl"; zm: "be.zm"; zn: "be.zn"; zo: "be.zo"; zp: "be.zp"; zq: "be.zq"; zr: "be.zr"; zs: "be.zs"; zt: "be.zt"; zu: "be.zu"; zv: "be.zv"; zw: "be.zw"; zx: "be.zx"; zy: "be.zy"; zz: "be.zz"; }; bf: { aa: "bf.aa"; ab: "bf.ab"; ac: "bf.ac"; ad: "bf.ad"; ae: "bf.ae"; af: "bf.af"; ag: "bf.ag"; ah: "bf.ah"; ai: "bf.ai"; aj: "bf.aj"; ak: "bf.ak"; al: "bf.al"; am: "bf.am"; an: "bf.an"; ao: "bf.ao"; ap: "bf.ap"; aq: "bf.aq"; ar: "bf.ar"; as: "bf.as"; at: "bf.at"; au: "bf.au"; av: "bf.av"; aw: "bf.aw"; ax: "bf.ax"; ay: "bf.ay"; az: "bf.az"; ba: "bf.ba"; bb: "bf.bb"; bc: "bf.bc"; bd: "bf.bd"; be: "bf.be"; bf: "bf.bf"; bg: "bf.bg"; bh: "bf.bh"; bi: "bf.bi"; bj: "bf.bj"; bk: "bf.bk"; bl: "bf.bl"; bm: "bf.bm"; bn: "bf.bn"; bo: "bf.bo"; bp: "bf.bp"; bq: "bf.bq"; br: "bf.br"; bs: "bf.bs"; bt: "bf.bt"; bu: "bf.bu"; bv: "bf.bv"; bw: "bf.bw"; bx: "bf.bx"; by: "bf.by"; bz: "bf.bz"; ca: "bf.ca"; cb: "bf.cb"; cc: "bf.cc"; cd: "bf.cd"; ce: "bf.ce"; cf: "bf.cf"; cg: "bf.cg"; ch: "bf.ch"; ci: "bf.ci"; cj: "bf.cj"; ck: "bf.ck"; cl: "bf.cl"; cm: "bf.cm"; cn: "bf.cn"; co: "bf.co"; cp: "bf.cp"; cq: "bf.cq"; cr: "bf.cr"; cs: "bf.cs"; ct: "bf.ct"; cu: "bf.cu"; cv: "bf.cv"; cw: "bf.cw"; cx: "bf.cx"; cy: "bf.cy"; cz: "bf.cz"; da: "bf.da"; db: "bf.db"; dc: "bf.dc"; dd: "bf.dd"; de: "bf.de"; df: "bf.df"; dg: "bf.dg"; dh: "bf.dh"; di: "bf.di"; dj: "bf.dj"; dk: "bf.dk"; dl: "bf.dl"; dm: "bf.dm"; dn: "bf.dn"; do: "bf.do"; dp: "bf.dp"; dq: "bf.dq"; dr: "bf.dr"; ds: "bf.ds"; dt: "bf.dt"; du: "bf.du"; dv: "bf.dv"; dw: "bf.dw"; dx: "bf.dx"; dy: "bf.dy"; dz: "bf.dz"; ea: "bf.ea"; eb: "bf.eb"; ec: "bf.ec"; ed: "bf.ed"; ee: "bf.ee"; ef: "bf.ef"; eg: "bf.eg"; eh: "bf.eh"; ei: "bf.ei"; ej: "bf.ej"; ek: "bf.ek"; el: "bf.el"; em: "bf.em"; en: "bf.en"; eo: "bf.eo"; ep: "bf.ep"; eq: "bf.eq"; er: "bf.er"; es: "bf.es"; et: "bf.et"; eu: "bf.eu"; ev: "bf.ev"; ew: "bf.ew"; ex: "bf.ex"; ey: "bf.ey"; ez: "bf.ez"; fa: "bf.fa"; fb: "bf.fb"; fc: "bf.fc"; fd: "bf.fd"; fe: "bf.fe"; ff: "bf.ff"; fg: "bf.fg"; fh: "bf.fh"; fi: "bf.fi"; fj: "bf.fj"; fk: "bf.fk"; fl: "bf.fl"; fm: "bf.fm"; fn: "bf.fn"; fo: "bf.fo"; fp: "bf.fp"; fq: "bf.fq"; fr: "bf.fr"; fs: "bf.fs"; ft: "bf.ft"; fu: "bf.fu"; fv: "bf.fv"; fw: "bf.fw"; fx: "bf.fx"; fy: "bf.fy"; fz: "bf.fz"; ga: "bf.ga"; gb: "bf.gb"; gc: "bf.gc"; gd: "bf.gd"; ge: "bf.ge"; gf: "bf.gf"; gg: "bf.gg"; gh: "bf.gh"; gi: "bf.gi"; gj: "bf.gj"; gk: "bf.gk"; gl: "bf.gl"; gm: "bf.gm"; gn: "bf.gn"; go: "bf.go"; gp: "bf.gp"; gq: "bf.gq"; gr: "bf.gr"; gs: "bf.gs"; gt: "bf.gt"; gu: "bf.gu"; gv: "bf.gv"; gw: "bf.gw"; gx: "bf.gx"; gy: "bf.gy"; gz: "bf.gz"; ha: "bf.ha"; hb: "bf.hb"; hc: "bf.hc"; hd: "bf.hd"; he: "bf.he"; hf: "bf.hf"; hg: "bf.hg"; hh: "bf.hh"; hi: "bf.hi"; hj: "bf.hj"; hk: "bf.hk"; hl: "bf.hl"; hm: "bf.hm"; hn: "bf.hn"; ho: "bf.ho"; hp: "bf.hp"; hq: "bf.hq"; hr: "bf.hr"; hs: "bf.hs"; ht: "bf.ht"; hu: "bf.hu"; hv: "bf.hv"; hw: "bf.hw"; hx: "bf.hx"; hy: "bf.hy"; hz: "bf.hz"; ia: "bf.ia"; ib: "bf.ib"; ic: "bf.ic"; id: "bf.id"; ie: "bf.ie"; if: "bf.if"; ig: "bf.ig"; ih: "bf.ih"; ii: "bf.ii"; ij: "bf.ij"; ik: "bf.ik"; il: "bf.il"; im: "bf.im"; in: "bf.in"; io: "bf.io"; ip: "bf.ip"; iq: "bf.iq"; ir: "bf.ir"; is: "bf.is"; it: "bf.it"; iu: "bf.iu"; iv: "bf.iv"; iw: "bf.iw"; ix: "bf.ix"; iy: "bf.iy"; iz: "bf.iz"; ja: "bf.ja"; jb: "bf.jb"; jc: "bf.jc"; jd: "bf.jd"; je: "bf.je"; jf: "bf.jf"; jg: "bf.jg"; jh: "bf.jh"; ji: "bf.ji"; jj: "bf.jj"; jk: "bf.jk"; jl: "bf.jl"; jm: "bf.jm"; jn: "bf.jn"; jo: "bf.jo"; jp: "bf.jp"; jq: "bf.jq"; jr: "bf.jr"; js: "bf.js"; jt: "bf.jt"; ju: "bf.ju"; jv: "bf.jv"; jw: "bf.jw"; jx: "bf.jx"; jy: "bf.jy"; jz: "bf.jz"; ka: "bf.ka"; kb: "bf.kb"; kc: "bf.kc"; kd: "bf.kd"; ke: "bf.ke"; kf: "bf.kf"; kg: "bf.kg"; kh: "bf.kh"; ki: "bf.ki"; kj: "bf.kj"; kk: "bf.kk"; kl: "bf.kl"; km: "bf.km"; kn: "bf.kn"; ko: "bf.ko"; kp: "bf.kp"; kq: "bf.kq"; kr: "bf.kr"; ks: "bf.ks"; kt: "bf.kt"; ku: "bf.ku"; kv: "bf.kv"; kw: "bf.kw"; kx: "bf.kx"; ky: "bf.ky"; kz: "bf.kz"; la: "bf.la"; lb: "bf.lb"; lc: "bf.lc"; ld: "bf.ld"; le: "bf.le"; lf: "bf.lf"; lg: "bf.lg"; lh: "bf.lh"; li: "bf.li"; lj: "bf.lj"; lk: "bf.lk"; ll: "bf.ll"; lm: "bf.lm"; ln: "bf.ln"; lo: "bf.lo"; lp: "bf.lp"; lq: "bf.lq"; lr: "bf.lr"; ls: "bf.ls"; lt: "bf.lt"; lu: "bf.lu"; lv: "bf.lv"; lw: "bf.lw"; lx: "bf.lx"; ly: "bf.ly"; lz: "bf.lz"; ma: "bf.ma"; mb: "bf.mb"; mc: "bf.mc"; md: "bf.md"; me: "bf.me"; mf: "bf.mf"; mg: "bf.mg"; mh: "bf.mh"; mi: "bf.mi"; mj: "bf.mj"; mk: "bf.mk"; ml: "bf.ml"; mm: "bf.mm"; mn: "bf.mn"; mo: "bf.mo"; mp: "bf.mp"; mq: "bf.mq"; mr: "bf.mr"; ms: "bf.ms"; mt: "bf.mt"; mu: "bf.mu"; mv: "bf.mv"; mw: "bf.mw"; mx: "bf.mx"; my: "bf.my"; mz: "bf.mz"; na: "bf.na"; nb: "bf.nb"; nc: "bf.nc"; nd: "bf.nd"; ne: "bf.ne"; nf: "bf.nf"; ng: "bf.ng"; nh: "bf.nh"; ni: "bf.ni"; nj: "bf.nj"; nk: "bf.nk"; nl: "bf.nl"; nm: "bf.nm"; nn: "bf.nn"; no: "bf.no"; np: "bf.np"; nq: "bf.nq"; nr: "bf.nr"; ns: "bf.ns"; nt: "bf.nt"; nu: "bf.nu"; nv: "bf.nv"; nw: "bf.nw"; nx: "bf.nx"; ny: "bf.ny"; nz: "bf.nz"; oa: "bf.oa"; ob: "bf.ob"; oc: "bf.oc"; od: "bf.od"; oe: "bf.oe"; of: "bf.of"; og: "bf.og"; oh: "bf.oh"; oi: "bf.oi"; oj: "bf.oj"; ok: "bf.ok"; ol: "bf.ol"; om: "bf.om"; on: "bf.on"; oo: "bf.oo"; op: "bf.op"; oq: "bf.oq"; or: "bf.or"; os: "bf.os"; ot: "bf.ot"; ou: "bf.ou"; ov: "bf.ov"; ow: "bf.ow"; ox: "bf.ox"; oy: "bf.oy"; oz: "bf.oz"; pa: "bf.pa"; pb: "bf.pb"; pc: "bf.pc"; pd: "bf.pd"; pe: "bf.pe"; pf: "bf.pf"; pg: "bf.pg"; ph: "bf.ph"; pi: "bf.pi"; pj: "bf.pj"; pk: "bf.pk"; pl: "bf.pl"; pm: "bf.pm"; pn: "bf.pn"; po: "bf.po"; pp: "bf.pp"; pq: "bf.pq"; pr: "bf.pr"; ps: "bf.ps"; pt: "bf.pt"; pu: "bf.pu"; pv: "bf.pv"; pw: "bf.pw"; px: "bf.px"; py: "bf.py"; pz: "bf.pz"; qa: "bf.qa"; qb: "bf.qb"; qc: "bf.qc"; qd: "bf.qd"; qe: "bf.qe"; qf: "bf.qf"; qg: "bf.qg"; qh: "bf.qh"; qi: "bf.qi"; qj: "bf.qj"; qk: "bf.qk"; ql: "bf.ql"; qm: "bf.qm"; qn: "bf.qn"; qo: "bf.qo"; qp: "bf.qp"; qq: "bf.qq"; qr: "bf.qr"; qs: "bf.qs"; qt: "bf.qt"; qu: "bf.qu"; qv: "bf.qv"; qw: "bf.qw"; qx: "bf.qx"; qy: "bf.qy"; qz: "bf.qz"; ra: "bf.ra"; rb: "bf.rb"; rc: "bf.rc"; rd: "bf.rd"; re: "bf.re"; rf: "bf.rf"; rg: "bf.rg"; rh: "bf.rh"; ri: "bf.ri"; rj: "bf.rj"; rk: "bf.rk"; rl: "bf.rl"; rm: "bf.rm"; rn: "bf.rn"; ro: "bf.ro"; rp: "bf.rp"; rq: "bf.rq"; rr: "bf.rr"; rs: "bf.rs"; rt: "bf.rt"; ru: "bf.ru"; rv: "bf.rv"; rw: "bf.rw"; rx: "bf.rx"; ry: "bf.ry"; rz: "bf.rz"; sa: "bf.sa"; sb: "bf.sb"; sc: "bf.sc"; sd: "bf.sd"; se: "bf.se"; sf: "bf.sf"; sg: "bf.sg"; sh: "bf.sh"; si: "bf.si"; sj: "bf.sj"; sk: "bf.sk"; sl: "bf.sl"; sm: "bf.sm"; sn: "bf.sn"; so: "bf.so"; sp: "bf.sp"; sq: "bf.sq"; sr: "bf.sr"; ss: "bf.ss"; st: "bf.st"; su: "bf.su"; sv: "bf.sv"; sw: "bf.sw"; sx: "bf.sx"; sy: "bf.sy"; sz: "bf.sz"; ta: "bf.ta"; tb: "bf.tb"; tc: "bf.tc"; td: "bf.td"; te: "bf.te"; tf: "bf.tf"; tg: "bf.tg"; th: "bf.th"; ti: "bf.ti"; tj: "bf.tj"; tk: "bf.tk"; tl: "bf.tl"; tm: "bf.tm"; tn: "bf.tn"; to: "bf.to"; tp: "bf.tp"; tq: "bf.tq"; tr: "bf.tr"; ts: "bf.ts"; tt: "bf.tt"; tu: "bf.tu"; tv: "bf.tv"; tw: "bf.tw"; tx: "bf.tx"; ty: "bf.ty"; tz: "bf.tz"; ua: "bf.ua"; ub: "bf.ub"; uc: "bf.uc"; ud: "bf.ud"; ue: "bf.ue"; uf: "bf.uf"; ug: "bf.ug"; uh: "bf.uh"; ui: "bf.ui"; uj: "bf.uj"; uk: "bf.uk"; ul: "bf.ul"; um: "bf.um"; un: "bf.un"; uo: "bf.uo"; up: "bf.up"; uq: "bf.uq"; ur: "bf.ur"; us: "bf.us"; ut: "bf.ut"; uu: "bf.uu"; uv: "bf.uv"; uw: "bf.uw"; ux: "bf.ux"; uy: "bf.uy"; uz: "bf.uz"; va: "bf.va"; vb: "bf.vb"; vc: "bf.vc"; vd: "bf.vd"; ve: "bf.ve"; vf: "bf.vf"; vg: "bf.vg"; vh: "bf.vh"; vi: "bf.vi"; vj: "bf.vj"; vk: "bf.vk"; vl: "bf.vl"; vm: "bf.vm"; vn: "bf.vn"; vo: "bf.vo"; vp: "bf.vp"; vq: "bf.vq"; vr: "bf.vr"; vs: "bf.vs"; vt: "bf.vt"; vu: "bf.vu"; vv: "bf.vv"; vw: "bf.vw"; vx: "bf.vx"; vy: "bf.vy"; vz: "bf.vz"; wa: "bf.wa"; wb: "bf.wb"; wc: "bf.wc"; wd: "bf.wd"; we: "bf.we"; wf: "bf.wf"; wg: "bf.wg"; wh: "bf.wh"; wi: "bf.wi"; wj: "bf.wj"; wk: "bf.wk"; wl: "bf.wl"; wm: "bf.wm"; wn: "bf.wn"; wo: "bf.wo"; wp: "bf.wp"; wq: "bf.wq"; wr: "bf.wr"; ws: "bf.ws"; wt: "bf.wt"; wu: "bf.wu"; wv: "bf.wv"; ww: "bf.ww"; wx: "bf.wx"; wy: "bf.wy"; wz: "bf.wz"; xa: "bf.xa"; xb: "bf.xb"; xc: "bf.xc"; xd: "bf.xd"; xe: "bf.xe"; xf: "bf.xf"; xg: "bf.xg"; xh: "bf.xh"; xi: "bf.xi"; xj: "bf.xj"; xk: "bf.xk"; xl: "bf.xl"; xm: "bf.xm"; xn: "bf.xn"; xo: "bf.xo"; xp: "bf.xp"; xq: "bf.xq"; xr: "bf.xr"; xs: "bf.xs"; xt: "bf.xt"; xu: "bf.xu"; xv: "bf.xv"; xw: "bf.xw"; xx: "bf.xx"; xy: "bf.xy"; xz: "bf.xz"; ya: "bf.ya"; yb: "bf.yb"; yc: "bf.yc"; yd: "bf.yd"; ye: "bf.ye"; yf: "bf.yf"; yg: "bf.yg"; yh: "bf.yh"; yi: "bf.yi"; yj: "bf.yj"; yk: "bf.yk"; yl: "bf.yl"; ym: "bf.ym"; yn: "bf.yn"; yo: "bf.yo"; yp: "bf.yp"; yq: "bf.yq"; yr: "bf.yr"; ys: "bf.ys"; yt: "bf.yt"; yu: "bf.yu"; yv: "bf.yv"; yw: "bf.yw"; yx: "bf.yx"; yy: "bf.yy"; yz: "bf.yz"; za: "bf.za"; zb: "bf.zb"; zc: "bf.zc"; zd: "bf.zd"; ze: "bf.ze"; zf: "bf.zf"; zg: "bf.zg"; zh: "bf.zh"; zi: "bf.zi"; zj: "bf.zj"; zk: "bf.zk"; zl: "bf.zl"; zm: "bf.zm"; zn: "bf.zn"; zo: "bf.zo"; zp: "bf.zp"; zq: "bf.zq"; zr: "bf.zr"; zs: "bf.zs"; zt: "bf.zt"; zu: "bf.zu"; zv: "bf.zv"; zw: "bf.zw"; zx: "bf.zx"; zy: "bf.zy"; zz: "bf.zz"; }; bg: { aa: "bg.aa"; ab: "bg.ab"; ac: "bg.ac"; ad: "bg.ad"; ae: "bg.ae"; af: "bg.af"; ag: "bg.ag"; ah: "bg.ah"; ai: "bg.ai"; aj: "bg.aj"; ak: "bg.ak"; al: "bg.al"; am: "bg.am"; an: "bg.an"; ao: "bg.ao"; ap: "bg.ap"; aq: "bg.aq"; ar: "bg.ar"; as: "bg.as"; at: "bg.at"; au: "bg.au"; av: "bg.av"; aw: "bg.aw"; ax: "bg.ax"; ay: "bg.ay"; az: "bg.az"; ba: "bg.ba"; bb: "bg.bb"; bc: "bg.bc"; bd: "bg.bd"; be: "bg.be"; bf: "bg.bf"; bg: "bg.bg"; bh: "bg.bh"; bi: "bg.bi"; bj: "bg.bj"; bk: "bg.bk"; bl: "bg.bl"; bm: "bg.bm"; bn: "bg.bn"; bo: "bg.bo"; bp: "bg.bp"; bq: "bg.bq"; br: "bg.br"; bs: "bg.bs"; bt: "bg.bt"; bu: "bg.bu"; bv: "bg.bv"; bw: "bg.bw"; bx: "bg.bx"; by: "bg.by"; bz: "bg.bz"; ca: "bg.ca"; cb: "bg.cb"; cc: "bg.cc"; cd: "bg.cd"; ce: "bg.ce"; cf: "bg.cf"; cg: "bg.cg"; ch: "bg.ch"; ci: "bg.ci"; cj: "bg.cj"; ck: "bg.ck"; cl: "bg.cl"; cm: "bg.cm"; cn: "bg.cn"; co: "bg.co"; cp: "bg.cp"; cq: "bg.cq"; cr: "bg.cr"; cs: "bg.cs"; ct: "bg.ct"; cu: "bg.cu"; cv: "bg.cv"; cw: "bg.cw"; cx: "bg.cx"; cy: "bg.cy"; cz: "bg.cz"; da: "bg.da"; db: "bg.db"; dc: "bg.dc"; dd: "bg.dd"; de: "bg.de"; df: "bg.df"; dg: "bg.dg"; dh: "bg.dh"; di: "bg.di"; dj: "bg.dj"; dk: "bg.dk"; dl: "bg.dl"; dm: "bg.dm"; dn: "bg.dn"; do: "bg.do"; dp: "bg.dp"; dq: "bg.dq"; dr: "bg.dr"; ds: "bg.ds"; dt: "bg.dt"; du: "bg.du"; dv: "bg.dv"; dw: "bg.dw"; dx: "bg.dx"; dy: "bg.dy"; dz: "bg.dz"; ea: "bg.ea"; eb: "bg.eb"; ec: "bg.ec"; ed: "bg.ed"; ee: "bg.ee"; ef: "bg.ef"; eg: "bg.eg"; eh: "bg.eh"; ei: "bg.ei"; ej: "bg.ej"; ek: "bg.ek"; el: "bg.el"; em: "bg.em"; en: "bg.en"; eo: "bg.eo"; ep: "bg.ep"; eq: "bg.eq"; er: "bg.er"; es: "bg.es"; et: "bg.et"; eu: "bg.eu"; ev: "bg.ev"; ew: "bg.ew"; ex: "bg.ex"; ey: "bg.ey"; ez: "bg.ez"; fa: "bg.fa"; fb: "bg.fb"; fc: "bg.fc"; fd: "bg.fd"; fe: "bg.fe"; ff: "bg.ff"; fg: "bg.fg"; fh: "bg.fh"; fi: "bg.fi"; fj: "bg.fj"; fk: "bg.fk"; fl: "bg.fl"; fm: "bg.fm"; fn: "bg.fn"; fo: "bg.fo"; fp: "bg.fp"; fq: "bg.fq"; fr: "bg.fr"; fs: "bg.fs"; ft: "bg.ft"; fu: "bg.fu"; fv: "bg.fv"; fw: "bg.fw"; fx: "bg.fx"; fy: "bg.fy"; fz: "bg.fz"; ga: "bg.ga"; gb: "bg.gb"; gc: "bg.gc"; gd: "bg.gd"; ge: "bg.ge"; gf: "bg.gf"; gg: "bg.gg"; gh: "bg.gh"; gi: "bg.gi"; gj: "bg.gj"; gk: "bg.gk"; gl: "bg.gl"; gm: "bg.gm"; gn: "bg.gn"; go: "bg.go"; gp: "bg.gp"; gq: "bg.gq"; gr: "bg.gr"; gs: "bg.gs"; gt: "bg.gt"; gu: "bg.gu"; gv: "bg.gv"; gw: "bg.gw"; gx: "bg.gx"; gy: "bg.gy"; gz: "bg.gz"; ha: "bg.ha"; hb: "bg.hb"; hc: "bg.hc"; hd: "bg.hd"; he: "bg.he"; hf: "bg.hf"; hg: "bg.hg"; hh: "bg.hh"; hi: "bg.hi"; hj: "bg.hj"; hk: "bg.hk"; hl: "bg.hl"; hm: "bg.hm"; hn: "bg.hn"; ho: "bg.ho"; hp: "bg.hp"; hq: "bg.hq"; hr: "bg.hr"; hs: "bg.hs"; ht: "bg.ht"; hu: "bg.hu"; hv: "bg.hv"; hw: "bg.hw"; hx: "bg.hx"; hy: "bg.hy"; hz: "bg.hz"; ia: "bg.ia"; ib: "bg.ib"; ic: "bg.ic"; id: "bg.id"; ie: "bg.ie"; if: "bg.if"; ig: "bg.ig"; ih: "bg.ih"; ii: "bg.ii"; ij: "bg.ij"; ik: "bg.ik"; il: "bg.il"; im: "bg.im"; in: "bg.in"; io: "bg.io"; ip: "bg.ip"; iq: "bg.iq"; ir: "bg.ir"; is: "bg.is"; it: "bg.it"; iu: "bg.iu"; iv: "bg.iv"; iw: "bg.iw"; ix: "bg.ix"; iy: "bg.iy"; iz: "bg.iz"; ja: "bg.ja"; jb: "bg.jb"; jc: "bg.jc"; jd: "bg.jd"; je: "bg.je"; jf: "bg.jf"; jg: "bg.jg"; jh: "bg.jh"; ji: "bg.ji"; jj: "bg.jj"; jk: "bg.jk"; jl: "bg.jl"; jm: "bg.jm"; jn: "bg.jn"; jo: "bg.jo"; jp: "bg.jp"; jq: "bg.jq"; jr: "bg.jr"; js: "bg.js"; jt: "bg.jt"; ju: "bg.ju"; jv: "bg.jv"; jw: "bg.jw"; jx: "bg.jx"; jy: "bg.jy"; jz: "bg.jz"; ka: "bg.ka"; kb: "bg.kb"; kc: "bg.kc"; kd: "bg.kd"; ke: "bg.ke"; kf: "bg.kf"; kg: "bg.kg"; kh: "bg.kh"; ki: "bg.ki"; kj: "bg.kj"; kk: "bg.kk"; kl: "bg.kl"; km: "bg.km"; kn: "bg.kn"; ko: "bg.ko"; kp: "bg.kp"; kq: "bg.kq"; kr: "bg.kr"; ks: "bg.ks"; kt: "bg.kt"; ku: "bg.ku"; kv: "bg.kv"; kw: "bg.kw"; kx: "bg.kx"; ky: "bg.ky"; kz: "bg.kz"; la: "bg.la"; lb: "bg.lb"; lc: "bg.lc"; ld: "bg.ld"; le: "bg.le"; lf: "bg.lf"; lg: "bg.lg"; lh: "bg.lh"; li: "bg.li"; lj: "bg.lj"; lk: "bg.lk"; ll: "bg.ll"; lm: "bg.lm"; ln: "bg.ln"; lo: "bg.lo"; lp: "bg.lp"; lq: "bg.lq"; lr: "bg.lr"; ls: "bg.ls"; lt: "bg.lt"; lu: "bg.lu"; lv: "bg.lv"; lw: "bg.lw"; lx: "bg.lx"; ly: "bg.ly"; lz: "bg.lz"; ma: "bg.ma"; mb: "bg.mb"; mc: "bg.mc"; md: "bg.md"; me: "bg.me"; mf: "bg.mf"; mg: "bg.mg"; mh: "bg.mh"; mi: "bg.mi"; mj: "bg.mj"; mk: "bg.mk"; ml: "bg.ml"; mm: "bg.mm"; mn: "bg.mn"; mo: "bg.mo"; mp: "bg.mp"; mq: "bg.mq"; mr: "bg.mr"; ms: "bg.ms"; mt: "bg.mt"; mu: "bg.mu"; mv: "bg.mv"; mw: "bg.mw"; mx: "bg.mx"; my: "bg.my"; mz: "bg.mz"; na: "bg.na"; nb: "bg.nb"; nc: "bg.nc"; nd: "bg.nd"; ne: "bg.ne"; nf: "bg.nf"; ng: "bg.ng"; nh: "bg.nh"; ni: "bg.ni"; nj: "bg.nj"; nk: "bg.nk"; nl: "bg.nl"; nm: "bg.nm"; nn: "bg.nn"; no: "bg.no"; np: "bg.np"; nq: "bg.nq"; nr: "bg.nr"; ns: "bg.ns"; nt: "bg.nt"; nu: "bg.nu"; nv: "bg.nv"; nw: "bg.nw"; nx: "bg.nx"; ny: "bg.ny"; nz: "bg.nz"; oa: "bg.oa"; ob: "bg.ob"; oc: "bg.oc"; od: "bg.od"; oe: "bg.oe"; of: "bg.of"; og: "bg.og"; oh: "bg.oh"; oi: "bg.oi"; oj: "bg.oj"; ok: "bg.ok"; ol: "bg.ol"; om: "bg.om"; on: "bg.on"; oo: "bg.oo"; op: "bg.op"; oq: "bg.oq"; or: "bg.or"; os: "bg.os"; ot: "bg.ot"; ou: "bg.ou"; ov: "bg.ov"; ow: "bg.ow"; ox: "bg.ox"; oy: "bg.oy"; oz: "bg.oz"; pa: "bg.pa"; pb: "bg.pb"; pc: "bg.pc"; pd: "bg.pd"; pe: "bg.pe"; pf: "bg.pf"; pg: "bg.pg"; ph: "bg.ph"; pi: "bg.pi"; pj: "bg.pj"; pk: "bg.pk"; pl: "bg.pl"; pm: "bg.pm"; pn: "bg.pn"; po: "bg.po"; pp: "bg.pp"; pq: "bg.pq"; pr: "bg.pr"; ps: "bg.ps"; pt: "bg.pt"; pu: "bg.pu"; pv: "bg.pv"; pw: "bg.pw"; px: "bg.px"; py: "bg.py"; pz: "bg.pz"; qa: "bg.qa"; qb: "bg.qb"; qc: "bg.qc"; qd: "bg.qd"; qe: "bg.qe"; qf: "bg.qf"; qg: "bg.qg"; qh: "bg.qh"; qi: "bg.qi"; qj: "bg.qj"; qk: "bg.qk"; ql: "bg.ql"; qm: "bg.qm"; qn: "bg.qn"; qo: "bg.qo"; qp: "bg.qp"; qq: "bg.qq"; qr: "bg.qr"; qs: "bg.qs"; qt: "bg.qt"; qu: "bg.qu"; qv: "bg.qv"; qw: "bg.qw"; qx: "bg.qx"; qy: "bg.qy"; qz: "bg.qz"; ra: "bg.ra"; rb: "bg.rb"; rc: "bg.rc"; rd: "bg.rd"; re: "bg.re"; rf: "bg.rf"; rg: "bg.rg"; rh: "bg.rh"; ri: "bg.ri"; rj: "bg.rj"; rk: "bg.rk"; rl: "bg.rl"; rm: "bg.rm"; rn: "bg.rn"; ro: "bg.ro"; rp: "bg.rp"; rq: "bg.rq"; rr: "bg.rr"; rs: "bg.rs"; rt: "bg.rt"; ru: "bg.ru"; rv: "bg.rv"; rw: "bg.rw"; rx: "bg.rx"; ry: "bg.ry"; rz: "bg.rz"; sa: "bg.sa"; sb: "bg.sb"; sc: "bg.sc"; sd: "bg.sd"; se: "bg.se"; sf: "bg.sf"; sg: "bg.sg"; sh: "bg.sh"; si: "bg.si"; sj: "bg.sj"; sk: "bg.sk"; sl: "bg.sl"; sm: "bg.sm"; sn: "bg.sn"; so: "bg.so"; sp: "bg.sp"; sq: "bg.sq"; sr: "bg.sr"; ss: "bg.ss"; st: "bg.st"; su: "bg.su"; sv: "bg.sv"; sw: "bg.sw"; sx: "bg.sx"; sy: "bg.sy"; sz: "bg.sz"; ta: "bg.ta"; tb: "bg.tb"; tc: "bg.tc"; td: "bg.td"; te: "bg.te"; tf: "bg.tf"; tg: "bg.tg"; th: "bg.th"; ti: "bg.ti"; tj: "bg.tj"; tk: "bg.tk"; tl: "bg.tl"; tm: "bg.tm"; tn: "bg.tn"; to: "bg.to"; tp: "bg.tp"; tq: "bg.tq"; tr: "bg.tr"; ts: "bg.ts"; tt: "bg.tt"; tu: "bg.tu"; tv: "bg.tv"; tw: "bg.tw"; tx: "bg.tx"; ty: "bg.ty"; tz: "bg.tz"; ua: "bg.ua"; ub: "bg.ub"; uc: "bg.uc"; ud: "bg.ud"; ue: "bg.ue"; uf: "bg.uf"; ug: "bg.ug"; uh: "bg.uh"; ui: "bg.ui"; uj: "bg.uj"; uk: "bg.uk"; ul: "bg.ul"; um: "bg.um"; un: "bg.un"; uo: "bg.uo"; up: "bg.up"; uq: "bg.uq"; ur: "bg.ur"; us: "bg.us"; ut: "bg.ut"; uu: "bg.uu"; uv: "bg.uv"; uw: "bg.uw"; ux: "bg.ux"; uy: "bg.uy"; uz: "bg.uz"; va: "bg.va"; vb: "bg.vb"; vc: "bg.vc"; vd: "bg.vd"; ve: "bg.ve"; vf: "bg.vf"; vg: "bg.vg"; vh: "bg.vh"; vi: "bg.vi"; vj: "bg.vj"; vk: "bg.vk"; vl: "bg.vl"; vm: "bg.vm"; vn: "bg.vn"; vo: "bg.vo"; vp: "bg.vp"; vq: "bg.vq"; vr: "bg.vr"; vs: "bg.vs"; vt: "bg.vt"; vu: "bg.vu"; vv: "bg.vv"; vw: "bg.vw"; vx: "bg.vx"; vy: "bg.vy"; vz: "bg.vz"; wa: "bg.wa"; wb: "bg.wb"; wc: "bg.wc"; wd: "bg.wd"; we: "bg.we"; wf: "bg.wf"; wg: "bg.wg"; wh: "bg.wh"; wi: "bg.wi"; wj: "bg.wj"; wk: "bg.wk"; wl: "bg.wl"; wm: "bg.wm"; wn: "bg.wn"; wo: "bg.wo"; wp: "bg.wp"; wq: "bg.wq"; wr: "bg.wr"; ws: "bg.ws"; wt: "bg.wt"; wu: "bg.wu"; wv: "bg.wv"; ww: "bg.ww"; wx: "bg.wx"; wy: "bg.wy"; wz: "bg.wz"; xa: "bg.xa"; xb: "bg.xb"; xc: "bg.xc"; xd: "bg.xd"; xe: "bg.xe"; xf: "bg.xf"; xg: "bg.xg"; xh: "bg.xh"; xi: "bg.xi"; xj: "bg.xj"; xk: "bg.xk"; xl: "bg.xl"; xm: "bg.xm"; xn: "bg.xn"; xo: "bg.xo"; xp: "bg.xp"; xq: "bg.xq"; xr: "bg.xr"; xs: "bg.xs"; xt: "bg.xt"; xu: "bg.xu"; xv: "bg.xv"; xw: "bg.xw"; xx: "bg.xx"; xy: "bg.xy"; xz: "bg.xz"; ya: "bg.ya"; yb: "bg.yb"; yc: "bg.yc"; yd: "bg.yd"; ye: "bg.ye"; yf: "bg.yf"; yg: "bg.yg"; yh: "bg.yh"; yi: "bg.yi"; yj: "bg.yj"; yk: "bg.yk"; yl: "bg.yl"; ym: "bg.ym"; yn: "bg.yn"; yo: "bg.yo"; yp: "bg.yp"; yq: "bg.yq"; yr: "bg.yr"; ys: "bg.ys"; yt: "bg.yt"; yu: "bg.yu"; yv: "bg.yv"; yw: "bg.yw"; yx: "bg.yx"; yy: "bg.yy"; yz: "bg.yz"; za: "bg.za"; zb: "bg.zb"; zc: "bg.zc"; zd: "bg.zd"; ze: "bg.ze"; zf: "bg.zf"; zg: "bg.zg"; zh: "bg.zh"; zi: "bg.zi"; zj: "bg.zj"; zk: "bg.zk"; zl: "bg.zl"; zm: "bg.zm"; zn: "bg.zn"; zo: "bg.zo"; zp: "bg.zp"; zq: "bg.zq"; zr: "bg.zr"; zs: "bg.zs"; zt: "bg.zt"; zu: "bg.zu"; zv: "bg.zv"; zw: "bg.zw"; zx: "bg.zx"; zy: "bg.zy"; zz: "bg.zz"; }; bh: { aa: "bh.aa"; ab: "bh.ab"; ac: "bh.ac"; ad: "bh.ad"; ae: "bh.ae"; af: "bh.af"; ag: "bh.ag"; ah: "bh.ah"; ai: "bh.ai"; aj: "bh.aj"; ak: "bh.ak"; al: "bh.al"; am: "bh.am"; an: "bh.an"; ao: "bh.ao"; ap: "bh.ap"; aq: "bh.aq"; ar: "bh.ar"; as: "bh.as"; at: "bh.at"; au: "bh.au"; av: "bh.av"; aw: "bh.aw"; ax: "bh.ax"; ay: "bh.ay"; az: "bh.az"; ba: "bh.ba"; bb: "bh.bb"; bc: "bh.bc"; bd: "bh.bd"; be: "bh.be"; bf: "bh.bf"; bg: "bh.bg"; bh: "bh.bh"; bi: "bh.bi"; bj: "bh.bj"; bk: "bh.bk"; bl: "bh.bl"; bm: "bh.bm"; bn: "bh.bn"; bo: "bh.bo"; bp: "bh.bp"; bq: "bh.bq"; br: "bh.br"; bs: "bh.bs"; bt: "bh.bt"; bu: "bh.bu"; bv: "bh.bv"; bw: "bh.bw"; bx: "bh.bx"; by: "bh.by"; bz: "bh.bz"; ca: "bh.ca"; cb: "bh.cb"; cc: "bh.cc"; cd: "bh.cd"; ce: "bh.ce"; cf: "bh.cf"; cg: "bh.cg"; ch: "bh.ch"; ci: "bh.ci"; cj: "bh.cj"; ck: "bh.ck"; cl: "bh.cl"; cm: "bh.cm"; cn: "bh.cn"; co: "bh.co"; cp: "bh.cp"; cq: "bh.cq"; cr: "bh.cr"; cs: "bh.cs"; ct: "bh.ct"; cu: "bh.cu"; cv: "bh.cv"; cw: "bh.cw"; cx: "bh.cx"; cy: "bh.cy"; cz: "bh.cz"; da: "bh.da"; db: "bh.db"; dc: "bh.dc"; dd: "bh.dd"; de: "bh.de"; df: "bh.df"; dg: "bh.dg"; dh: "bh.dh"; di: "bh.di"; dj: "bh.dj"; dk: "bh.dk"; dl: "bh.dl"; dm: "bh.dm"; dn: "bh.dn"; do: "bh.do"; dp: "bh.dp"; dq: "bh.dq"; dr: "bh.dr"; ds: "bh.ds"; dt: "bh.dt"; du: "bh.du"; dv: "bh.dv"; dw: "bh.dw"; dx: "bh.dx"; dy: "bh.dy"; dz: "bh.dz"; ea: "bh.ea"; eb: "bh.eb"; ec: "bh.ec"; ed: "bh.ed"; ee: "bh.ee"; ef: "bh.ef"; eg: "bh.eg"; eh: "bh.eh"; ei: "bh.ei"; ej: "bh.ej"; ek: "bh.ek"; el: "bh.el"; em: "bh.em"; en: "bh.en"; eo: "bh.eo"; ep: "bh.ep"; eq: "bh.eq"; er: "bh.er"; es: "bh.es"; et: "bh.et"; eu: "bh.eu"; ev: "bh.ev"; ew: "bh.ew"; ex: "bh.ex"; ey: "bh.ey"; ez: "bh.ez"; fa: "bh.fa"; fb: "bh.fb"; fc: "bh.fc"; fd: "bh.fd"; fe: "bh.fe"; ff: "bh.ff"; fg: "bh.fg"; fh: "bh.fh"; fi: "bh.fi"; fj: "bh.fj"; fk: "bh.fk"; fl: "bh.fl"; fm: "bh.fm"; fn: "bh.fn"; fo: "bh.fo"; fp: "bh.fp"; fq: "bh.fq"; fr: "bh.fr"; fs: "bh.fs"; ft: "bh.ft"; fu: "bh.fu"; fv: "bh.fv"; fw: "bh.fw"; fx: "bh.fx"; fy: "bh.fy"; fz: "bh.fz"; ga: "bh.ga"; gb: "bh.gb"; gc: "bh.gc"; gd: "bh.gd"; ge: "bh.ge"; gf: "bh.gf"; gg: "bh.gg"; gh: "bh.gh"; gi: "bh.gi"; gj: "bh.gj"; gk: "bh.gk"; gl: "bh.gl"; gm: "bh.gm"; gn: "bh.gn"; go: "bh.go"; gp: "bh.gp"; gq: "bh.gq"; gr: "bh.gr"; gs: "bh.gs"; gt: "bh.gt"; gu: "bh.gu"; gv: "bh.gv"; gw: "bh.gw"; gx: "bh.gx"; gy: "bh.gy"; gz: "bh.gz"; ha: "bh.ha"; hb: "bh.hb"; hc: "bh.hc"; hd: "bh.hd"; he: "bh.he"; hf: "bh.hf"; hg: "bh.hg"; hh: "bh.hh"; hi: "bh.hi"; hj: "bh.hj"; hk: "bh.hk"; hl: "bh.hl"; hm: "bh.hm"; hn: "bh.hn"; ho: "bh.ho"; hp: "bh.hp"; hq: "bh.hq"; hr: "bh.hr"; hs: "bh.hs"; ht: "bh.ht"; hu: "bh.hu"; hv: "bh.hv"; hw: "bh.hw"; hx: "bh.hx"; hy: "bh.hy"; hz: "bh.hz"; ia: "bh.ia"; ib: "bh.ib"; ic: "bh.ic"; id: "bh.id"; ie: "bh.ie"; if: "bh.if"; ig: "bh.ig"; ih: "bh.ih"; ii: "bh.ii"; ij: "bh.ij"; ik: "bh.ik"; il: "bh.il"; im: "bh.im"; in: "bh.in"; io: "bh.io"; ip: "bh.ip"; iq: "bh.iq"; ir: "bh.ir"; is: "bh.is"; it: "bh.it"; iu: "bh.iu"; iv: "bh.iv"; iw: "bh.iw"; ix: "bh.ix"; iy: "bh.iy"; iz: "bh.iz"; ja: "bh.ja"; jb: "bh.jb"; jc: "bh.jc"; jd: "bh.jd"; je: "bh.je"; jf: "bh.jf"; jg: "bh.jg"; jh: "bh.jh"; ji: "bh.ji"; jj: "bh.jj"; jk: "bh.jk"; jl: "bh.jl"; jm: "bh.jm"; jn: "bh.jn"; jo: "bh.jo"; jp: "bh.jp"; jq: "bh.jq"; jr: "bh.jr"; js: "bh.js"; jt: "bh.jt"; ju: "bh.ju"; jv: "bh.jv"; jw: "bh.jw"; jx: "bh.jx"; jy: "bh.jy"; jz: "bh.jz"; ka: "bh.ka"; kb: "bh.kb"; kc: "bh.kc"; kd: "bh.kd"; ke: "bh.ke"; kf: "bh.kf"; kg: "bh.kg"; kh: "bh.kh"; ki: "bh.ki"; kj: "bh.kj"; kk: "bh.kk"; kl: "bh.kl"; km: "bh.km"; kn: "bh.kn"; ko: "bh.ko"; kp: "bh.kp"; kq: "bh.kq"; kr: "bh.kr"; ks: "bh.ks"; kt: "bh.kt"; ku: "bh.ku"; kv: "bh.kv"; kw: "bh.kw"; kx: "bh.kx"; ky: "bh.ky"; kz: "bh.kz"; la: "bh.la"; lb: "bh.lb"; lc: "bh.lc"; ld: "bh.ld"; le: "bh.le"; lf: "bh.lf"; lg: "bh.lg"; lh: "bh.lh"; li: "bh.li"; lj: "bh.lj"; lk: "bh.lk"; ll: "bh.ll"; lm: "bh.lm"; ln: "bh.ln"; lo: "bh.lo"; lp: "bh.lp"; lq: "bh.lq"; lr: "bh.lr"; ls: "bh.ls"; lt: "bh.lt"; lu: "bh.lu"; lv: "bh.lv"; lw: "bh.lw"; lx: "bh.lx"; ly: "bh.ly"; lz: "bh.lz"; ma: "bh.ma"; mb: "bh.mb"; mc: "bh.mc"; md: "bh.md"; me: "bh.me"; mf: "bh.mf"; mg: "bh.mg"; mh: "bh.mh"; mi: "bh.mi"; mj: "bh.mj"; mk: "bh.mk"; ml: "bh.ml"; mm: "bh.mm"; mn: "bh.mn"; mo: "bh.mo"; mp: "bh.mp"; mq: "bh.mq"; mr: "bh.mr"; ms: "bh.ms"; mt: "bh.mt"; mu: "bh.mu"; mv: "bh.mv"; mw: "bh.mw"; mx: "bh.mx"; my: "bh.my"; mz: "bh.mz"; na: "bh.na"; nb: "bh.nb"; nc: "bh.nc"; nd: "bh.nd"; ne: "bh.ne"; nf: "bh.nf"; ng: "bh.ng"; nh: "bh.nh"; ni: "bh.ni"; nj: "bh.nj"; nk: "bh.nk"; nl: "bh.nl"; nm: "bh.nm"; nn: "bh.nn"; no: "bh.no"; np: "bh.np"; nq: "bh.nq"; nr: "bh.nr"; ns: "bh.ns"; nt: "bh.nt"; nu: "bh.nu"; nv: "bh.nv"; nw: "bh.nw"; nx: "bh.nx"; ny: "bh.ny"; nz: "bh.nz"; oa: "bh.oa"; ob: "bh.ob"; oc: "bh.oc"; od: "bh.od"; oe: "bh.oe"; of: "bh.of"; og: "bh.og"; oh: "bh.oh"; oi: "bh.oi"; oj: "bh.oj"; ok: "bh.ok"; ol: "bh.ol"; om: "bh.om"; on: "bh.on"; oo: "bh.oo"; op: "bh.op"; oq: "bh.oq"; or: "bh.or"; os: "bh.os"; ot: "bh.ot"; ou: "bh.ou"; ov: "bh.ov"; ow: "bh.ow"; ox: "bh.ox"; oy: "bh.oy"; oz: "bh.oz"; pa: "bh.pa"; pb: "bh.pb"; pc: "bh.pc"; pd: "bh.pd"; pe: "bh.pe"; pf: "bh.pf"; pg: "bh.pg"; ph: "bh.ph"; pi: "bh.pi"; pj: "bh.pj"; pk: "bh.pk"; pl: "bh.pl"; pm: "bh.pm"; pn: "bh.pn"; po: "bh.po"; pp: "bh.pp"; pq: "bh.pq"; pr: "bh.pr"; ps: "bh.ps"; pt: "bh.pt"; pu: "bh.pu"; pv: "bh.pv"; pw: "bh.pw"; px: "bh.px"; py: "bh.py"; pz: "bh.pz"; qa: "bh.qa"; qb: "bh.qb"; qc: "bh.qc"; qd: "bh.qd"; qe: "bh.qe"; qf: "bh.qf"; qg: "bh.qg"; qh: "bh.qh"; qi: "bh.qi"; qj: "bh.qj"; qk: "bh.qk"; ql: "bh.ql"; qm: "bh.qm"; qn: "bh.qn"; qo: "bh.qo"; qp: "bh.qp"; qq: "bh.qq"; qr: "bh.qr"; qs: "bh.qs"; qt: "bh.qt"; qu: "bh.qu"; qv: "bh.qv"; qw: "bh.qw"; qx: "bh.qx"; qy: "bh.qy"; qz: "bh.qz"; ra: "bh.ra"; rb: "bh.rb"; rc: "bh.rc"; rd: "bh.rd"; re: "bh.re"; rf: "bh.rf"; rg: "bh.rg"; rh: "bh.rh"; ri: "bh.ri"; rj: "bh.rj"; rk: "bh.rk"; rl: "bh.rl"; rm: "bh.rm"; rn: "bh.rn"; ro: "bh.ro"; rp: "bh.rp"; rq: "bh.rq"; rr: "bh.rr"; rs: "bh.rs"; rt: "bh.rt"; ru: "bh.ru"; rv: "bh.rv"; rw: "bh.rw"; rx: "bh.rx"; ry: "bh.ry"; rz: "bh.rz"; sa: "bh.sa"; sb: "bh.sb"; sc: "bh.sc"; sd: "bh.sd"; se: "bh.se"; sf: "bh.sf"; sg: "bh.sg"; sh: "bh.sh"; si: "bh.si"; sj: "bh.sj"; sk: "bh.sk"; sl: "bh.sl"; sm: "bh.sm"; sn: "bh.sn"; so: "bh.so"; sp: "bh.sp"; sq: "bh.sq"; sr: "bh.sr"; ss: "bh.ss"; st: "bh.st"; su: "bh.su"; sv: "bh.sv"; sw: "bh.sw"; sx: "bh.sx"; sy: "bh.sy"; sz: "bh.sz"; ta: "bh.ta"; tb: "bh.tb"; tc: "bh.tc"; td: "bh.td"; te: "bh.te"; tf: "bh.tf"; tg: "bh.tg"; th: "bh.th"; ti: "bh.ti"; tj: "bh.tj"; tk: "bh.tk"; tl: "bh.tl"; tm: "bh.tm"; tn: "bh.tn"; to: "bh.to"; tp: "bh.tp"; tq: "bh.tq"; tr: "bh.tr"; ts: "bh.ts"; tt: "bh.tt"; tu: "bh.tu"; tv: "bh.tv"; tw: "bh.tw"; tx: "bh.tx"; ty: "bh.ty"; tz: "bh.tz"; ua: "bh.ua"; ub: "bh.ub"; uc: "bh.uc"; ud: "bh.ud"; ue: "bh.ue"; uf: "bh.uf"; ug: "bh.ug"; uh: "bh.uh"; ui: "bh.ui"; uj: "bh.uj"; uk: "bh.uk"; ul: "bh.ul"; um: "bh.um"; un: "bh.un"; uo: "bh.uo"; up: "bh.up"; uq: "bh.uq"; ur: "bh.ur"; us: "bh.us"; ut: "bh.ut"; uu: "bh.uu"; uv: "bh.uv"; uw: "bh.uw"; ux: "bh.ux"; uy: "bh.uy"; uz: "bh.uz"; va: "bh.va"; vb: "bh.vb"; vc: "bh.vc"; vd: "bh.vd"; ve: "bh.ve"; vf: "bh.vf"; vg: "bh.vg"; vh: "bh.vh"; vi: "bh.vi"; vj: "bh.vj"; vk: "bh.vk"; vl: "bh.vl"; vm: "bh.vm"; vn: "bh.vn"; vo: "bh.vo"; vp: "bh.vp"; vq: "bh.vq"; vr: "bh.vr"; vs: "bh.vs"; vt: "bh.vt"; vu: "bh.vu"; vv: "bh.vv"; vw: "bh.vw"; vx: "bh.vx"; vy: "bh.vy"; vz: "bh.vz"; wa: "bh.wa"; wb: "bh.wb"; wc: "bh.wc"; wd: "bh.wd"; we: "bh.we"; wf: "bh.wf"; wg: "bh.wg"; wh: "bh.wh"; wi: "bh.wi"; wj: "bh.wj"; wk: "bh.wk"; wl: "bh.wl"; wm: "bh.wm"; wn: "bh.wn"; wo: "bh.wo"; wp: "bh.wp"; wq: "bh.wq"; wr: "bh.wr"; ws: "bh.ws"; wt: "bh.wt"; wu: "bh.wu"; wv: "bh.wv"; ww: "bh.ww"; wx: "bh.wx"; wy: "bh.wy"; wz: "bh.wz"; xa: "bh.xa"; xb: "bh.xb"; xc: "bh.xc"; xd: "bh.xd"; xe: "bh.xe"; xf: "bh.xf"; xg: "bh.xg"; xh: "bh.xh"; xi: "bh.xi"; xj: "bh.xj"; xk: "bh.xk"; xl: "bh.xl"; xm: "bh.xm"; xn: "bh.xn"; xo: "bh.xo"; xp: "bh.xp"; xq: "bh.xq"; xr: "bh.xr"; xs: "bh.xs"; xt: "bh.xt"; xu: "bh.xu"; xv: "bh.xv"; xw: "bh.xw"; xx: "bh.xx"; xy: "bh.xy"; xz: "bh.xz"; ya: "bh.ya"; yb: "bh.yb"; yc: "bh.yc"; yd: "bh.yd"; ye: "bh.ye"; yf: "bh.yf"; yg: "bh.yg"; yh: "bh.yh"; yi: "bh.yi"; yj: "bh.yj"; yk: "bh.yk"; yl: "bh.yl"; ym: "bh.ym"; yn: "bh.yn"; yo: "bh.yo"; yp: "bh.yp"; yq: "bh.yq"; yr: "bh.yr"; ys: "bh.ys"; yt: "bh.yt"; yu: "bh.yu"; yv: "bh.yv"; yw: "bh.yw"; yx: "bh.yx"; yy: "bh.yy"; yz: "bh.yz"; za: "bh.za"; zb: "bh.zb"; zc: "bh.zc"; zd: "bh.zd"; ze: "bh.ze"; zf: "bh.zf"; zg: "bh.zg"; zh: "bh.zh"; zi: "bh.zi"; zj: "bh.zj"; zk: "bh.zk"; zl: "bh.zl"; zm: "bh.zm"; zn: "bh.zn"; zo: "bh.zo"; zp: "bh.zp"; zq: "bh.zq"; zr: "bh.zr"; zs: "bh.zs"; zt: "bh.zt"; zu: "bh.zu"; zv: "bh.zv"; zw: "bh.zw"; zx: "bh.zx"; zy: "bh.zy"; zz: "bh.zz"; }; bi: { aa: "bi.aa"; ab: "bi.ab"; ac: "bi.ac"; ad: "bi.ad"; ae: "bi.ae"; af: "bi.af"; ag: "bi.ag"; ah: "bi.ah"; ai: "bi.ai"; aj: "bi.aj"; ak: "bi.ak"; al: "bi.al"; am: "bi.am"; an: "bi.an"; ao: "bi.ao"; ap: "bi.ap"; aq: "bi.aq"; ar: "bi.ar"; as: "bi.as"; at: "bi.at"; au: "bi.au"; av: "bi.av"; aw: "bi.aw"; ax: "bi.ax"; ay: "bi.ay"; az: "bi.az"; ba: "bi.ba"; bb: "bi.bb"; bc: "bi.bc"; bd: "bi.bd"; be: "bi.be"; bf: "bi.bf"; bg: "bi.bg"; bh: "bi.bh"; bi: "bi.bi"; bj: "bi.bj"; bk: "bi.bk"; bl: "bi.bl"; bm: "bi.bm"; bn: "bi.bn"; bo: "bi.bo"; bp: "bi.bp"; bq: "bi.bq"; br: "bi.br"; bs: "bi.bs"; bt: "bi.bt"; bu: "bi.bu"; bv: "bi.bv"; bw: "bi.bw"; bx: "bi.bx"; by: "bi.by"; bz: "bi.bz"; ca: "bi.ca"; cb: "bi.cb"; cc: "bi.cc"; cd: "bi.cd"; ce: "bi.ce"; cf: "bi.cf"; cg: "bi.cg"; ch: "bi.ch"; ci: "bi.ci"; cj: "bi.cj"; ck: "bi.ck"; cl: "bi.cl"; cm: "bi.cm"; cn: "bi.cn"; co: "bi.co"; cp: "bi.cp"; cq: "bi.cq"; cr: "bi.cr"; cs: "bi.cs"; ct: "bi.ct"; cu: "bi.cu"; cv: "bi.cv"; cw: "bi.cw"; cx: "bi.cx"; cy: "bi.cy"; cz: "bi.cz"; da: "bi.da"; db: "bi.db"; dc: "bi.dc"; dd: "bi.dd"; de: "bi.de"; df: "bi.df"; dg: "bi.dg"; dh: "bi.dh"; di: "bi.di"; dj: "bi.dj"; dk: "bi.dk"; dl: "bi.dl"; dm: "bi.dm"; dn: "bi.dn"; do: "bi.do"; dp: "bi.dp"; dq: "bi.dq"; dr: "bi.dr"; ds: "bi.ds"; dt: "bi.dt"; du: "bi.du"; dv: "bi.dv"; dw: "bi.dw"; dx: "bi.dx"; dy: "bi.dy"; dz: "bi.dz"; ea: "bi.ea"; eb: "bi.eb"; ec: "bi.ec"; ed: "bi.ed"; ee: "bi.ee"; ef: "bi.ef"; eg: "bi.eg"; eh: "bi.eh"; ei: "bi.ei"; ej: "bi.ej"; ek: "bi.ek"; el: "bi.el"; em: "bi.em"; en: "bi.en"; eo: "bi.eo"; ep: "bi.ep"; eq: "bi.eq"; er: "bi.er"; es: "bi.es"; et: "bi.et"; eu: "bi.eu"; ev: "bi.ev"; ew: "bi.ew"; ex: "bi.ex"; ey: "bi.ey"; ez: "bi.ez"; fa: "bi.fa"; fb: "bi.fb"; fc: "bi.fc"; fd: "bi.fd"; fe: "bi.fe"; ff: "bi.ff"; fg: "bi.fg"; fh: "bi.fh"; fi: "bi.fi"; fj: "bi.fj"; fk: "bi.fk"; fl: "bi.fl"; fm: "bi.fm"; fn: "bi.fn"; fo: "bi.fo"; fp: "bi.fp"; fq: "bi.fq"; fr: "bi.fr"; fs: "bi.fs"; ft: "bi.ft"; fu: "bi.fu"; fv: "bi.fv"; fw: "bi.fw"; fx: "bi.fx"; fy: "bi.fy"; fz: "bi.fz"; ga: "bi.ga"; gb: "bi.gb"; gc: "bi.gc"; gd: "bi.gd"; ge: "bi.ge"; gf: "bi.gf"; gg: "bi.gg"; gh: "bi.gh"; gi: "bi.gi"; gj: "bi.gj"; gk: "bi.gk"; gl: "bi.gl"; gm: "bi.gm"; gn: "bi.gn"; go: "bi.go"; gp: "bi.gp"; gq: "bi.gq"; gr: "bi.gr"; gs: "bi.gs"; gt: "bi.gt"; gu: "bi.gu"; gv: "bi.gv"; gw: "bi.gw"; gx: "bi.gx"; gy: "bi.gy"; gz: "bi.gz"; ha: "bi.ha"; hb: "bi.hb"; hc: "bi.hc"; hd: "bi.hd"; he: "bi.he"; hf: "bi.hf"; hg: "bi.hg"; hh: "bi.hh"; hi: "bi.hi"; hj: "bi.hj"; hk: "bi.hk"; hl: "bi.hl"; hm: "bi.hm"; hn: "bi.hn"; ho: "bi.ho"; hp: "bi.hp"; hq: "bi.hq"; hr: "bi.hr"; hs: "bi.hs"; ht: "bi.ht"; hu: "bi.hu"; hv: "bi.hv"; hw: "bi.hw"; hx: "bi.hx"; hy: "bi.hy"; hz: "bi.hz"; ia: "bi.ia"; ib: "bi.ib"; ic: "bi.ic"; id: "bi.id"; ie: "bi.ie"; if: "bi.if"; ig: "bi.ig"; ih: "bi.ih"; ii: "bi.ii"; ij: "bi.ij"; ik: "bi.ik"; il: "bi.il"; im: "bi.im"; in: "bi.in"; io: "bi.io"; ip: "bi.ip"; iq: "bi.iq"; ir: "bi.ir"; is: "bi.is"; it: "bi.it"; iu: "bi.iu"; iv: "bi.iv"; iw: "bi.iw"; ix: "bi.ix"; iy: "bi.iy"; iz: "bi.iz"; ja: "bi.ja"; jb: "bi.jb"; jc: "bi.jc"; jd: "bi.jd"; je: "bi.je"; jf: "bi.jf"; jg: "bi.jg"; jh: "bi.jh"; ji: "bi.ji"; jj: "bi.jj"; jk: "bi.jk"; jl: "bi.jl"; jm: "bi.jm"; jn: "bi.jn"; jo: "bi.jo"; jp: "bi.jp"; jq: "bi.jq"; jr: "bi.jr"; js: "bi.js"; jt: "bi.jt"; ju: "bi.ju"; jv: "bi.jv"; jw: "bi.jw"; jx: "bi.jx"; jy: "bi.jy"; jz: "bi.jz"; ka: "bi.ka"; kb: "bi.kb"; kc: "bi.kc"; kd: "bi.kd"; ke: "bi.ke"; kf: "bi.kf"; kg: "bi.kg"; kh: "bi.kh"; ki: "bi.ki"; kj: "bi.kj"; kk: "bi.kk"; kl: "bi.kl"; km: "bi.km"; kn: "bi.kn"; ko: "bi.ko"; kp: "bi.kp"; kq: "bi.kq"; kr: "bi.kr"; ks: "bi.ks"; kt: "bi.kt"; ku: "bi.ku"; kv: "bi.kv"; kw: "bi.kw"; kx: "bi.kx"; ky: "bi.ky"; kz: "bi.kz"; la: "bi.la"; lb: "bi.lb"; lc: "bi.lc"; ld: "bi.ld"; le: "bi.le"; lf: "bi.lf"; lg: "bi.lg"; lh: "bi.lh"; li: "bi.li"; lj: "bi.lj"; lk: "bi.lk"; ll: "bi.ll"; lm: "bi.lm"; ln: "bi.ln"; lo: "bi.lo"; lp: "bi.lp"; lq: "bi.lq"; lr: "bi.lr"; ls: "bi.ls"; lt: "bi.lt"; lu: "bi.lu"; lv: "bi.lv"; lw: "bi.lw"; lx: "bi.lx"; ly: "bi.ly"; lz: "bi.lz"; ma: "bi.ma"; mb: "bi.mb"; mc: "bi.mc"; md: "bi.md"; me: "bi.me"; mf: "bi.mf"; mg: "bi.mg"; mh: "bi.mh"; mi: "bi.mi"; mj: "bi.mj"; mk: "bi.mk"; ml: "bi.ml"; mm: "bi.mm"; mn: "bi.mn"; mo: "bi.mo"; mp: "bi.mp"; mq: "bi.mq"; mr: "bi.mr"; ms: "bi.ms"; mt: "bi.mt"; mu: "bi.mu"; mv: "bi.mv"; mw: "bi.mw"; mx: "bi.mx"; my: "bi.my"; mz: "bi.mz"; na: "bi.na"; nb: "bi.nb"; nc: "bi.nc"; nd: "bi.nd"; ne: "bi.ne"; nf: "bi.nf"; ng: "bi.ng"; nh: "bi.nh"; ni: "bi.ni"; nj: "bi.nj"; nk: "bi.nk"; nl: "bi.nl"; nm: "bi.nm"; nn: "bi.nn"; no: "bi.no"; np: "bi.np"; nq: "bi.nq"; nr: "bi.nr"; ns: "bi.ns"; nt: "bi.nt"; nu: "bi.nu"; nv: "bi.nv"; nw: "bi.nw"; nx: "bi.nx"; ny: "bi.ny"; nz: "bi.nz"; oa: "bi.oa"; ob: "bi.ob"; oc: "bi.oc"; od: "bi.od"; oe: "bi.oe"; of: "bi.of"; og: "bi.og"; oh: "bi.oh"; oi: "bi.oi"; oj: "bi.oj"; ok: "bi.ok"; ol: "bi.ol"; om: "bi.om"; on: "bi.on"; oo: "bi.oo"; op: "bi.op"; oq: "bi.oq"; or: "bi.or"; os: "bi.os"; ot: "bi.ot"; ou: "bi.ou"; ov: "bi.ov"; ow: "bi.ow"; ox: "bi.ox"; oy: "bi.oy"; oz: "bi.oz"; pa: "bi.pa"; pb: "bi.pb"; pc: "bi.pc"; pd: "bi.pd"; pe: "bi.pe"; pf: "bi.pf"; pg: "bi.pg"; ph: "bi.ph"; pi: "bi.pi"; pj: "bi.pj"; pk: "bi.pk"; pl: "bi.pl"; pm: "bi.pm"; pn: "bi.pn"; po: "bi.po"; pp: "bi.pp"; pq: "bi.pq"; pr: "bi.pr"; ps: "bi.ps"; pt: "bi.pt"; pu: "bi.pu"; pv: "bi.pv"; pw: "bi.pw"; px: "bi.px"; py: "bi.py"; pz: "bi.pz"; qa: "bi.qa"; qb: "bi.qb"; qc: "bi.qc"; qd: "bi.qd"; qe: "bi.qe"; qf: "bi.qf"; qg: "bi.qg"; qh: "bi.qh"; qi: "bi.qi"; qj: "bi.qj"; qk: "bi.qk"; ql: "bi.ql"; qm: "bi.qm"; qn: "bi.qn"; qo: "bi.qo"; qp: "bi.qp"; qq: "bi.qq"; qr: "bi.qr"; qs: "bi.qs"; qt: "bi.qt"; qu: "bi.qu"; qv: "bi.qv"; qw: "bi.qw"; qx: "bi.qx"; qy: "bi.qy"; qz: "bi.qz"; ra: "bi.ra"; rb: "bi.rb"; rc: "bi.rc"; rd: "bi.rd"; re: "bi.re"; rf: "bi.rf"; rg: "bi.rg"; rh: "bi.rh"; ri: "bi.ri"; rj: "bi.rj"; rk: "bi.rk"; rl: "bi.rl"; rm: "bi.rm"; rn: "bi.rn"; ro: "bi.ro"; rp: "bi.rp"; rq: "bi.rq"; rr: "bi.rr"; rs: "bi.rs"; rt: "bi.rt"; ru: "bi.ru"; rv: "bi.rv"; rw: "bi.rw"; rx: "bi.rx"; ry: "bi.ry"; rz: "bi.rz"; sa: "bi.sa"; sb: "bi.sb"; sc: "bi.sc"; sd: "bi.sd"; se: "bi.se"; sf: "bi.sf"; sg: "bi.sg"; sh: "bi.sh"; si: "bi.si"; sj: "bi.sj"; sk: "bi.sk"; sl: "bi.sl"; sm: "bi.sm"; sn: "bi.sn"; so: "bi.so"; sp: "bi.sp"; sq: "bi.sq"; sr: "bi.sr"; ss: "bi.ss"; st: "bi.st"; su: "bi.su"; sv: "bi.sv"; sw: "bi.sw"; sx: "bi.sx"; sy: "bi.sy"; sz: "bi.sz"; ta: "bi.ta"; tb: "bi.tb"; tc: "bi.tc"; td: "bi.td"; te: "bi.te"; tf: "bi.tf"; tg: "bi.tg"; th: "bi.th"; ti: "bi.ti"; tj: "bi.tj"; tk: "bi.tk"; tl: "bi.tl"; tm: "bi.tm"; tn: "bi.tn"; to: "bi.to"; tp: "bi.tp"; tq: "bi.tq"; tr: "bi.tr"; ts: "bi.ts"; tt: "bi.tt"; tu: "bi.tu"; tv: "bi.tv"; tw: "bi.tw"; tx: "bi.tx"; ty: "bi.ty"; tz: "bi.tz"; ua: "bi.ua"; ub: "bi.ub"; uc: "bi.uc"; ud: "bi.ud"; ue: "bi.ue"; uf: "bi.uf"; ug: "bi.ug"; uh: "bi.uh"; ui: "bi.ui"; uj: "bi.uj"; uk: "bi.uk"; ul: "bi.ul"; um: "bi.um"; un: "bi.un"; uo: "bi.uo"; up: "bi.up"; uq: "bi.uq"; ur: "bi.ur"; us: "bi.us"; ut: "bi.ut"; uu: "bi.uu"; uv: "bi.uv"; uw: "bi.uw"; ux: "bi.ux"; uy: "bi.uy"; uz: "bi.uz"; va: "bi.va"; vb: "bi.vb"; vc: "bi.vc"; vd: "bi.vd"; ve: "bi.ve"; vf: "bi.vf"; vg: "bi.vg"; vh: "bi.vh"; vi: "bi.vi"; vj: "bi.vj"; vk: "bi.vk"; vl: "bi.vl"; vm: "bi.vm"; vn: "bi.vn"; vo: "bi.vo"; vp: "bi.vp"; vq: "bi.vq"; vr: "bi.vr"; vs: "bi.vs"; vt: "bi.vt"; vu: "bi.vu"; vv: "bi.vv"; vw: "bi.vw"; vx: "bi.vx"; vy: "bi.vy"; vz: "bi.vz"; wa: "bi.wa"; wb: "bi.wb"; wc: "bi.wc"; wd: "bi.wd"; we: "bi.we"; wf: "bi.wf"; wg: "bi.wg"; wh: "bi.wh"; wi: "bi.wi"; wj: "bi.wj"; wk: "bi.wk"; wl: "bi.wl"; wm: "bi.wm"; wn: "bi.wn"; wo: "bi.wo"; wp: "bi.wp"; wq: "bi.wq"; wr: "bi.wr"; ws: "bi.ws"; wt: "bi.wt"; wu: "bi.wu"; wv: "bi.wv"; ww: "bi.ww"; wx: "bi.wx"; wy: "bi.wy"; wz: "bi.wz"; xa: "bi.xa"; xb: "bi.xb"; xc: "bi.xc"; xd: "bi.xd"; xe: "bi.xe"; xf: "bi.xf"; xg: "bi.xg"; xh: "bi.xh"; xi: "bi.xi"; xj: "bi.xj"; xk: "bi.xk"; xl: "bi.xl"; xm: "bi.xm"; xn: "bi.xn"; xo: "bi.xo"; xp: "bi.xp"; xq: "bi.xq"; xr: "bi.xr"; xs: "bi.xs"; xt: "bi.xt"; xu: "bi.xu"; xv: "bi.xv"; xw: "bi.xw"; xx: "bi.xx"; xy: "bi.xy"; xz: "bi.xz"; ya: "bi.ya"; yb: "bi.yb"; yc: "bi.yc"; yd: "bi.yd"; ye: "bi.ye"; yf: "bi.yf"; yg: "bi.yg"; yh: "bi.yh"; yi: "bi.yi"; yj: "bi.yj"; yk: "bi.yk"; yl: "bi.yl"; ym: "bi.ym"; yn: "bi.yn"; yo: "bi.yo"; yp: "bi.yp"; yq: "bi.yq"; yr: "bi.yr"; ys: "bi.ys"; yt: "bi.yt"; yu: "bi.yu"; yv: "bi.yv"; yw: "bi.yw"; yx: "bi.yx"; yy: "bi.yy"; yz: "bi.yz"; za: "bi.za"; zb: "bi.zb"; zc: "bi.zc"; zd: "bi.zd"; ze: "bi.ze"; zf: "bi.zf"; zg: "bi.zg"; zh: "bi.zh"; zi: "bi.zi"; zj: "bi.zj"; zk: "bi.zk"; zl: "bi.zl"; zm: "bi.zm"; zn: "bi.zn"; zo: "bi.zo"; zp: "bi.zp"; zq: "bi.zq"; zr: "bi.zr"; zs: "bi.zs"; zt: "bi.zt"; zu: "bi.zu"; zv: "bi.zv"; zw: "bi.zw"; zx: "bi.zx"; zy: "bi.zy"; zz: "bi.zz"; }; bj: { aa: "bj.aa"; ab: "bj.ab"; ac: "bj.ac"; ad: "bj.ad"; ae: "bj.ae"; af: "bj.af"; ag: "bj.ag"; ah: "bj.ah"; ai: "bj.ai"; aj: "bj.aj"; ak: "bj.ak"; al: "bj.al"; am: "bj.am"; an: "bj.an"; ao: "bj.ao"; ap: "bj.ap"; aq: "bj.aq"; ar: "bj.ar"; as: "bj.as"; at: "bj.at"; au: "bj.au"; av: "bj.av"; aw: "bj.aw"; ax: "bj.ax"; ay: "bj.ay"; az: "bj.az"; ba: "bj.ba"; bb: "bj.bb"; bc: "bj.bc"; bd: "bj.bd"; be: "bj.be"; bf: "bj.bf"; bg: "bj.bg"; bh: "bj.bh"; bi: "bj.bi"; bj: "bj.bj"; bk: "bj.bk"; bl: "bj.bl"; bm: "bj.bm"; bn: "bj.bn"; bo: "bj.bo"; bp: "bj.bp"; bq: "bj.bq"; br: "bj.br"; bs: "bj.bs"; bt: "bj.bt"; bu: "bj.bu"; bv: "bj.bv"; bw: "bj.bw"; bx: "bj.bx"; by: "bj.by"; bz: "bj.bz"; ca: "bj.ca"; cb: "bj.cb"; cc: "bj.cc"; cd: "bj.cd"; ce: "bj.ce"; cf: "bj.cf"; cg: "bj.cg"; ch: "bj.ch"; ci: "bj.ci"; cj: "bj.cj"; ck: "bj.ck"; cl: "bj.cl"; cm: "bj.cm"; cn: "bj.cn"; co: "bj.co"; cp: "bj.cp"; cq: "bj.cq"; cr: "bj.cr"; cs: "bj.cs"; ct: "bj.ct"; cu: "bj.cu"; cv: "bj.cv"; cw: "bj.cw"; cx: "bj.cx"; cy: "bj.cy"; cz: "bj.cz"; da: "bj.da"; db: "bj.db"; dc: "bj.dc"; dd: "bj.dd"; de: "bj.de"; df: "bj.df"; dg: "bj.dg"; dh: "bj.dh"; di: "bj.di"; dj: "bj.dj"; dk: "bj.dk"; dl: "bj.dl"; dm: "bj.dm"; dn: "bj.dn"; do: "bj.do"; dp: "bj.dp"; dq: "bj.dq"; dr: "bj.dr"; ds: "bj.ds"; dt: "bj.dt"; du: "bj.du"; dv: "bj.dv"; dw: "bj.dw"; dx: "bj.dx"; dy: "bj.dy"; dz: "bj.dz"; ea: "bj.ea"; eb: "bj.eb"; ec: "bj.ec"; ed: "bj.ed"; ee: "bj.ee"; ef: "bj.ef"; eg: "bj.eg"; eh: "bj.eh"; ei: "bj.ei"; ej: "bj.ej"; ek: "bj.ek"; el: "bj.el"; em: "bj.em"; en: "bj.en"; eo: "bj.eo"; ep: "bj.ep"; eq: "bj.eq"; er: "bj.er"; es: "bj.es"; et: "bj.et"; eu: "bj.eu"; ev: "bj.ev"; ew: "bj.ew"; ex: "bj.ex"; ey: "bj.ey"; ez: "bj.ez"; fa: "bj.fa"; fb: "bj.fb"; fc: "bj.fc"; fd: "bj.fd"; fe: "bj.fe"; ff: "bj.ff"; fg: "bj.fg"; fh: "bj.fh"; fi: "bj.fi"; fj: "bj.fj"; fk: "bj.fk"; fl: "bj.fl"; fm: "bj.fm"; fn: "bj.fn"; fo: "bj.fo"; fp: "bj.fp"; fq: "bj.fq"; fr: "bj.fr"; fs: "bj.fs"; ft: "bj.ft"; fu: "bj.fu"; fv: "bj.fv"; fw: "bj.fw"; fx: "bj.fx"; fy: "bj.fy"; fz: "bj.fz"; ga: "bj.ga"; gb: "bj.gb"; gc: "bj.gc"; gd: "bj.gd"; ge: "bj.ge"; gf: "bj.gf"; gg: "bj.gg"; gh: "bj.gh"; gi: "bj.gi"; gj: "bj.gj"; gk: "bj.gk"; gl: "bj.gl"; gm: "bj.gm"; gn: "bj.gn"; go: "bj.go"; gp: "bj.gp"; gq: "bj.gq"; gr: "bj.gr"; gs: "bj.gs"; gt: "bj.gt"; gu: "bj.gu"; gv: "bj.gv"; gw: "bj.gw"; gx: "bj.gx"; gy: "bj.gy"; gz: "bj.gz"; ha: "bj.ha"; hb: "bj.hb"; hc: "bj.hc"; hd: "bj.hd"; he: "bj.he"; hf: "bj.hf"; hg: "bj.hg"; hh: "bj.hh"; hi: "bj.hi"; hj: "bj.hj"; hk: "bj.hk"; hl: "bj.hl"; hm: "bj.hm"; hn: "bj.hn"; ho: "bj.ho"; hp: "bj.hp"; hq: "bj.hq"; hr: "bj.hr"; hs: "bj.hs"; ht: "bj.ht"; hu: "bj.hu"; hv: "bj.hv"; hw: "bj.hw"; hx: "bj.hx"; hy: "bj.hy"; hz: "bj.hz"; ia: "bj.ia"; ib: "bj.ib"; ic: "bj.ic"; id: "bj.id"; ie: "bj.ie"; if: "bj.if"; ig: "bj.ig"; ih: "bj.ih"; ii: "bj.ii"; ij: "bj.ij"; ik: "bj.ik"; il: "bj.il"; im: "bj.im"; in: "bj.in"; io: "bj.io"; ip: "bj.ip"; iq: "bj.iq"; ir: "bj.ir"; is: "bj.is"; it: "bj.it"; iu: "bj.iu"; iv: "bj.iv"; iw: "bj.iw"; ix: "bj.ix"; iy: "bj.iy"; iz: "bj.iz"; ja: "bj.ja"; jb: "bj.jb"; jc: "bj.jc"; jd: "bj.jd"; je: "bj.je"; jf: "bj.jf"; jg: "bj.jg"; jh: "bj.jh"; ji: "bj.ji"; jj: "bj.jj"; jk: "bj.jk"; jl: "bj.jl"; jm: "bj.jm"; jn: "bj.jn"; jo: "bj.jo"; jp: "bj.jp"; jq: "bj.jq"; jr: "bj.jr"; js: "bj.js"; jt: "bj.jt"; ju: "bj.ju"; jv: "bj.jv"; jw: "bj.jw"; jx: "bj.jx"; jy: "bj.jy"; jz: "bj.jz"; ka: "bj.ka"; kb: "bj.kb"; kc: "bj.kc"; kd: "bj.kd"; ke: "bj.ke"; kf: "bj.kf"; kg: "bj.kg"; kh: "bj.kh"; ki: "bj.ki"; kj: "bj.kj"; kk: "bj.kk"; kl: "bj.kl"; km: "bj.km"; kn: "bj.kn"; ko: "bj.ko"; kp: "bj.kp"; kq: "bj.kq"; kr: "bj.kr"; ks: "bj.ks"; kt: "bj.kt"; ku: "bj.ku"; kv: "bj.kv"; kw: "bj.kw"; kx: "bj.kx"; ky: "bj.ky"; kz: "bj.kz"; la: "bj.la"; lb: "bj.lb"; lc: "bj.lc"; ld: "bj.ld"; le: "bj.le"; lf: "bj.lf"; lg: "bj.lg"; lh: "bj.lh"; li: "bj.li"; lj: "bj.lj"; lk: "bj.lk"; ll: "bj.ll"; lm: "bj.lm"; ln: "bj.ln"; lo: "bj.lo"; lp: "bj.lp"; lq: "bj.lq"; lr: "bj.lr"; ls: "bj.ls"; lt: "bj.lt"; lu: "bj.lu"; lv: "bj.lv"; lw: "bj.lw"; lx: "bj.lx"; ly: "bj.ly"; lz: "bj.lz"; ma: "bj.ma"; mb: "bj.mb"; mc: "bj.mc"; md: "bj.md"; me: "bj.me"; mf: "bj.mf"; mg: "bj.mg"; mh: "bj.mh"; mi: "bj.mi"; mj: "bj.mj"; mk: "bj.mk"; ml: "bj.ml"; mm: "bj.mm"; mn: "bj.mn"; mo: "bj.mo"; mp: "bj.mp"; mq: "bj.mq"; mr: "bj.mr"; ms: "bj.ms"; mt: "bj.mt"; mu: "bj.mu"; mv: "bj.mv"; mw: "bj.mw"; mx: "bj.mx"; my: "bj.my"; mz: "bj.mz"; na: "bj.na"; nb: "bj.nb"; nc: "bj.nc"; nd: "bj.nd"; ne: "bj.ne"; nf: "bj.nf"; ng: "bj.ng"; nh: "bj.nh"; ni: "bj.ni"; nj: "bj.nj"; nk: "bj.nk"; nl: "bj.nl"; nm: "bj.nm"; nn: "bj.nn"; no: "bj.no"; np: "bj.np"; nq: "bj.nq"; nr: "bj.nr"; ns: "bj.ns"; nt: "bj.nt"; nu: "bj.nu"; nv: "bj.nv"; nw: "bj.nw"; nx: "bj.nx"; ny: "bj.ny"; nz: "bj.nz"; oa: "bj.oa"; ob: "bj.ob"; oc: "bj.oc"; od: "bj.od"; oe: "bj.oe"; of: "bj.of"; og: "bj.og"; oh: "bj.oh"; oi: "bj.oi"; oj: "bj.oj"; ok: "bj.ok"; ol: "bj.ol"; om: "bj.om"; on: "bj.on"; oo: "bj.oo"; op: "bj.op"; oq: "bj.oq"; or: "bj.or"; os: "bj.os"; ot: "bj.ot"; ou: "bj.ou"; ov: "bj.ov"; ow: "bj.ow"; ox: "bj.ox"; oy: "bj.oy"; oz: "bj.oz"; pa: "bj.pa"; pb: "bj.pb"; pc: "bj.pc"; pd: "bj.pd"; pe: "bj.pe"; pf: "bj.pf"; pg: "bj.pg"; ph: "bj.ph"; pi: "bj.pi"; pj: "bj.pj"; pk: "bj.pk"; pl: "bj.pl"; pm: "bj.pm"; pn: "bj.pn"; po: "bj.po"; pp: "bj.pp"; pq: "bj.pq"; pr: "bj.pr"; ps: "bj.ps"; pt: "bj.pt"; pu: "bj.pu"; pv: "bj.pv"; pw: "bj.pw"; px: "bj.px"; py: "bj.py"; pz: "bj.pz"; qa: "bj.qa"; qb: "bj.qb"; qc: "bj.qc"; qd: "bj.qd"; qe: "bj.qe"; qf: "bj.qf"; qg: "bj.qg"; qh: "bj.qh"; qi: "bj.qi"; qj: "bj.qj"; qk: "bj.qk"; ql: "bj.ql"; qm: "bj.qm"; qn: "bj.qn"; qo: "bj.qo"; qp: "bj.qp"; qq: "bj.qq"; qr: "bj.qr"; qs: "bj.qs"; qt: "bj.qt"; qu: "bj.qu"; qv: "bj.qv"; qw: "bj.qw"; qx: "bj.qx"; qy: "bj.qy"; qz: "bj.qz"; ra: "bj.ra"; rb: "bj.rb"; rc: "bj.rc"; rd: "bj.rd"; re: "bj.re"; rf: "bj.rf"; rg: "bj.rg"; rh: "bj.rh"; ri: "bj.ri"; rj: "bj.rj"; rk: "bj.rk"; rl: "bj.rl"; rm: "bj.rm"; rn: "bj.rn"; ro: "bj.ro"; rp: "bj.rp"; rq: "bj.rq"; rr: "bj.rr"; rs: "bj.rs"; rt: "bj.rt"; ru: "bj.ru"; rv: "bj.rv"; rw: "bj.rw"; rx: "bj.rx"; ry: "bj.ry"; rz: "bj.rz"; sa: "bj.sa"; sb: "bj.sb"; sc: "bj.sc"; sd: "bj.sd"; se: "bj.se"; sf: "bj.sf"; sg: "bj.sg"; sh: "bj.sh"; si: "bj.si"; sj: "bj.sj"; sk: "bj.sk"; sl: "bj.sl"; sm: "bj.sm"; sn: "bj.sn"; so: "bj.so"; sp: "bj.sp"; sq: "bj.sq"; sr: "bj.sr"; ss: "bj.ss"; st: "bj.st"; su: "bj.su"; sv: "bj.sv"; sw: "bj.sw"; sx: "bj.sx"; sy: "bj.sy"; sz: "bj.sz"; ta: "bj.ta"; tb: "bj.tb"; tc: "bj.tc"; td: "bj.td"; te: "bj.te"; tf: "bj.tf"; tg: "bj.tg"; th: "bj.th"; ti: "bj.ti"; tj: "bj.tj"; tk: "bj.tk"; tl: "bj.tl"; tm: "bj.tm"; tn: "bj.tn"; to: "bj.to"; tp: "bj.tp"; tq: "bj.tq"; tr: "bj.tr"; ts: "bj.ts"; tt: "bj.tt"; tu: "bj.tu"; tv: "bj.tv"; tw: "bj.tw"; tx: "bj.tx"; ty: "bj.ty"; tz: "bj.tz"; ua: "bj.ua"; ub: "bj.ub"; uc: "bj.uc"; ud: "bj.ud"; ue: "bj.ue"; uf: "bj.uf"; ug: "bj.ug"; uh: "bj.uh"; ui: "bj.ui"; uj: "bj.uj"; uk: "bj.uk"; ul: "bj.ul"; um: "bj.um"; un: "bj.un"; uo: "bj.uo"; up: "bj.up"; uq: "bj.uq"; ur: "bj.ur"; us: "bj.us"; ut: "bj.ut"; uu: "bj.uu"; uv: "bj.uv"; uw: "bj.uw"; ux: "bj.ux"; uy: "bj.uy"; uz: "bj.uz"; va: "bj.va"; vb: "bj.vb"; vc: "bj.vc"; vd: "bj.vd"; ve: "bj.ve"; vf: "bj.vf"; vg: "bj.vg"; vh: "bj.vh"; vi: "bj.vi"; vj: "bj.vj"; vk: "bj.vk"; vl: "bj.vl"; vm: "bj.vm"; vn: "bj.vn"; vo: "bj.vo"; vp: "bj.vp"; vq: "bj.vq"; vr: "bj.vr"; vs: "bj.vs"; vt: "bj.vt"; vu: "bj.vu"; vv: "bj.vv"; vw: "bj.vw"; vx: "bj.vx"; vy: "bj.vy"; vz: "bj.vz"; wa: "bj.wa"; wb: "bj.wb"; wc: "bj.wc"; wd: "bj.wd"; we: "bj.we"; wf: "bj.wf"; wg: "bj.wg"; wh: "bj.wh"; wi: "bj.wi"; wj: "bj.wj"; wk: "bj.wk"; wl: "bj.wl"; wm: "bj.wm"; wn: "bj.wn"; wo: "bj.wo"; wp: "bj.wp"; wq: "bj.wq"; wr: "bj.wr"; ws: "bj.ws"; wt: "bj.wt"; wu: "bj.wu"; wv: "bj.wv"; ww: "bj.ww"; wx: "bj.wx"; wy: "bj.wy"; wz: "bj.wz"; xa: "bj.xa"; xb: "bj.xb"; xc: "bj.xc"; xd: "bj.xd"; xe: "bj.xe"; xf: "bj.xf"; xg: "bj.xg"; xh: "bj.xh"; xi: "bj.xi"; xj: "bj.xj"; xk: "bj.xk"; xl: "bj.xl"; xm: "bj.xm"; xn: "bj.xn"; xo: "bj.xo"; xp: "bj.xp"; xq: "bj.xq"; xr: "bj.xr"; xs: "bj.xs"; xt: "bj.xt"; xu: "bj.xu"; xv: "bj.xv"; xw: "bj.xw"; xx: "bj.xx"; xy: "bj.xy"; xz: "bj.xz"; ya: "bj.ya"; yb: "bj.yb"; yc: "bj.yc"; yd: "bj.yd"; ye: "bj.ye"; yf: "bj.yf"; yg: "bj.yg"; yh: "bj.yh"; yi: "bj.yi"; yj: "bj.yj"; yk: "bj.yk"; yl: "bj.yl"; ym: "bj.ym"; yn: "bj.yn"; yo: "bj.yo"; yp: "bj.yp"; yq: "bj.yq"; yr: "bj.yr"; ys: "bj.ys"; yt: "bj.yt"; yu: "bj.yu"; yv: "bj.yv"; yw: "bj.yw"; yx: "bj.yx"; yy: "bj.yy"; yz: "bj.yz"; za: "bj.za"; zb: "bj.zb"; zc: "bj.zc"; zd: "bj.zd"; ze: "bj.ze"; zf: "bj.zf"; zg: "bj.zg"; zh: "bj.zh"; zi: "bj.zi"; zj: "bj.zj"; zk: "bj.zk"; zl: "bj.zl"; zm: "bj.zm"; zn: "bj.zn"; zo: "bj.zo"; zp: "bj.zp"; zq: "bj.zq"; zr: "bj.zr"; zs: "bj.zs"; zt: "bj.zt"; zu: "bj.zu"; zv: "bj.zv"; zw: "bj.zw"; zx: "bj.zx"; zy: "bj.zy"; zz: "bj.zz"; }; bk: { aa: "bk.aa"; ab: "bk.ab"; ac: "bk.ac"; ad: "bk.ad"; ae: "bk.ae"; af: "bk.af"; ag: "bk.ag"; ah: "bk.ah"; ai: "bk.ai"; aj: "bk.aj"; ak: "bk.ak"; al: "bk.al"; am: "bk.am"; an: "bk.an"; ao: "bk.ao"; ap: "bk.ap"; aq: "bk.aq"; ar: "bk.ar"; as: "bk.as"; at: "bk.at"; au: "bk.au"; av: "bk.av"; aw: "bk.aw"; ax: "bk.ax"; ay: "bk.ay"; az: "bk.az"; ba: "bk.ba"; bb: "bk.bb"; bc: "bk.bc"; bd: "bk.bd"; be: "bk.be"; bf: "bk.bf"; bg: "bk.bg"; bh: "bk.bh"; bi: "bk.bi"; bj: "bk.bj"; bk: "bk.bk"; bl: "bk.bl"; bm: "bk.bm"; bn: "bk.bn"; bo: "bk.bo"; bp: "bk.bp"; bq: "bk.bq"; br: "bk.br"; bs: "bk.bs"; bt: "bk.bt"; bu: "bk.bu"; bv: "bk.bv"; bw: "bk.bw"; bx: "bk.bx"; by: "bk.by"; bz: "bk.bz"; ca: "bk.ca"; cb: "bk.cb"; cc: "bk.cc"; cd: "bk.cd"; ce: "bk.ce"; cf: "bk.cf"; cg: "bk.cg"; ch: "bk.ch"; ci: "bk.ci"; cj: "bk.cj"; ck: "bk.ck"; cl: "bk.cl"; cm: "bk.cm"; cn: "bk.cn"; co: "bk.co"; cp: "bk.cp"; cq: "bk.cq"; cr: "bk.cr"; cs: "bk.cs"; ct: "bk.ct"; cu: "bk.cu"; cv: "bk.cv"; cw: "bk.cw"; cx: "bk.cx"; cy: "bk.cy"; cz: "bk.cz"; da: "bk.da"; db: "bk.db"; dc: "bk.dc"; dd: "bk.dd"; de: "bk.de"; df: "bk.df"; dg: "bk.dg"; dh: "bk.dh"; di: "bk.di"; dj: "bk.dj"; dk: "bk.dk"; dl: "bk.dl"; dm: "bk.dm"; dn: "bk.dn"; do: "bk.do"; dp: "bk.dp"; dq: "bk.dq"; dr: "bk.dr"; ds: "bk.ds"; dt: "bk.dt"; du: "bk.du"; dv: "bk.dv"; dw: "bk.dw"; dx: "bk.dx"; dy: "bk.dy"; dz: "bk.dz"; ea: "bk.ea"; eb: "bk.eb"; ec: "bk.ec"; ed: "bk.ed"; ee: "bk.ee"; ef: "bk.ef"; eg: "bk.eg"; eh: "bk.eh"; ei: "bk.ei"; ej: "bk.ej"; ek: "bk.ek"; el: "bk.el"; em: "bk.em"; en: "bk.en"; eo: "bk.eo"; ep: "bk.ep"; eq: "bk.eq"; er: "bk.er"; es: "bk.es"; et: "bk.et"; eu: "bk.eu"; ev: "bk.ev"; ew: "bk.ew"; ex: "bk.ex"; ey: "bk.ey"; ez: "bk.ez"; fa: "bk.fa"; fb: "bk.fb"; fc: "bk.fc"; fd: "bk.fd"; fe: "bk.fe"; ff: "bk.ff"; fg: "bk.fg"; fh: "bk.fh"; fi: "bk.fi"; fj: "bk.fj"; fk: "bk.fk"; fl: "bk.fl"; fm: "bk.fm"; fn: "bk.fn"; fo: "bk.fo"; fp: "bk.fp"; fq: "bk.fq"; fr: "bk.fr"; fs: "bk.fs"; ft: "bk.ft"; fu: "bk.fu"; fv: "bk.fv"; fw: "bk.fw"; fx: "bk.fx"; fy: "bk.fy"; fz: "bk.fz"; ga: "bk.ga"; gb: "bk.gb"; gc: "bk.gc"; gd: "bk.gd"; ge: "bk.ge"; gf: "bk.gf"; gg: "bk.gg"; gh: "bk.gh"; gi: "bk.gi"; gj: "bk.gj"; gk: "bk.gk"; gl: "bk.gl"; gm: "bk.gm"; gn: "bk.gn"; go: "bk.go"; gp: "bk.gp"; gq: "bk.gq"; gr: "bk.gr"; gs: "bk.gs"; gt: "bk.gt"; gu: "bk.gu"; gv: "bk.gv"; gw: "bk.gw"; gx: "bk.gx"; gy: "bk.gy"; gz: "bk.gz"; ha: "bk.ha"; hb: "bk.hb"; hc: "bk.hc"; hd: "bk.hd"; he: "bk.he"; hf: "bk.hf"; hg: "bk.hg"; hh: "bk.hh"; hi: "bk.hi"; hj: "bk.hj"; hk: "bk.hk"; hl: "bk.hl"; hm: "bk.hm"; hn: "bk.hn"; ho: "bk.ho"; hp: "bk.hp"; hq: "bk.hq"; hr: "bk.hr"; hs: "bk.hs"; ht: "bk.ht"; hu: "bk.hu"; hv: "bk.hv"; hw: "bk.hw"; hx: "bk.hx"; hy: "bk.hy"; hz: "bk.hz"; ia: "bk.ia"; ib: "bk.ib"; ic: "bk.ic"; id: "bk.id"; ie: "bk.ie"; if: "bk.if"; ig: "bk.ig"; ih: "bk.ih"; ii: "bk.ii"; ij: "bk.ij"; ik: "bk.ik"; il: "bk.il"; im: "bk.im"; in: "bk.in"; io: "bk.io"; ip: "bk.ip"; iq: "bk.iq"; ir: "bk.ir"; is: "bk.is"; it: "bk.it"; iu: "bk.iu"; iv: "bk.iv"; iw: "bk.iw"; ix: "bk.ix"; iy: "bk.iy"; iz: "bk.iz"; ja: "bk.ja"; jb: "bk.jb"; jc: "bk.jc"; jd: "bk.jd"; je: "bk.je"; jf: "bk.jf"; jg: "bk.jg"; jh: "bk.jh"; ji: "bk.ji"; jj: "bk.jj"; jk: "bk.jk"; jl: "bk.jl"; jm: "bk.jm"; jn: "bk.jn"; jo: "bk.jo"; jp: "bk.jp"; jq: "bk.jq"; jr: "bk.jr"; js: "bk.js"; jt: "bk.jt"; ju: "bk.ju"; jv: "bk.jv"; jw: "bk.jw"; jx: "bk.jx"; jy: "bk.jy"; jz: "bk.jz"; ka: "bk.ka"; kb: "bk.kb"; kc: "bk.kc"; kd: "bk.kd"; ke: "bk.ke"; kf: "bk.kf"; kg: "bk.kg"; kh: "bk.kh"; ki: "bk.ki"; kj: "bk.kj"; kk: "bk.kk"; kl: "bk.kl"; km: "bk.km"; kn: "bk.kn"; ko: "bk.ko"; kp: "bk.kp"; kq: "bk.kq"; kr: "bk.kr"; ks: "bk.ks"; kt: "bk.kt"; ku: "bk.ku"; kv: "bk.kv"; kw: "bk.kw"; kx: "bk.kx"; ky: "bk.ky"; kz: "bk.kz"; la: "bk.la"; lb: "bk.lb"; lc: "bk.lc"; ld: "bk.ld"; le: "bk.le"; lf: "bk.lf"; lg: "bk.lg"; lh: "bk.lh"; li: "bk.li"; lj: "bk.lj"; lk: "bk.lk"; ll: "bk.ll"; lm: "bk.lm"; ln: "bk.ln"; lo: "bk.lo"; lp: "bk.lp"; lq: "bk.lq"; lr: "bk.lr"; ls: "bk.ls"; lt: "bk.lt"; lu: "bk.lu"; lv: "bk.lv"; lw: "bk.lw"; lx: "bk.lx"; ly: "bk.ly"; lz: "bk.lz"; ma: "bk.ma"; mb: "bk.mb"; mc: "bk.mc"; md: "bk.md"; me: "bk.me"; mf: "bk.mf"; mg: "bk.mg"; mh: "bk.mh"; mi: "bk.mi"; mj: "bk.mj"; mk: "bk.mk"; ml: "bk.ml"; mm: "bk.mm"; mn: "bk.mn"; mo: "bk.mo"; mp: "bk.mp"; mq: "bk.mq"; mr: "bk.mr"; ms: "bk.ms"; mt: "bk.mt"; mu: "bk.mu"; mv: "bk.mv"; mw: "bk.mw"; mx: "bk.mx"; my: "bk.my"; mz: "bk.mz"; na: "bk.na"; nb: "bk.nb"; nc: "bk.nc"; nd: "bk.nd"; ne: "bk.ne"; nf: "bk.nf"; ng: "bk.ng"; nh: "bk.nh"; ni: "bk.ni"; nj: "bk.nj"; nk: "bk.nk"; nl: "bk.nl"; nm: "bk.nm"; nn: "bk.nn"; no: "bk.no"; np: "bk.np"; nq: "bk.nq"; nr: "bk.nr"; ns: "bk.ns"; nt: "bk.nt"; nu: "bk.nu"; nv: "bk.nv"; nw: "bk.nw"; nx: "bk.nx"; ny: "bk.ny"; nz: "bk.nz"; oa: "bk.oa"; ob: "bk.ob"; oc: "bk.oc"; od: "bk.od"; oe: "bk.oe"; of: "bk.of"; og: "bk.og"; oh: "bk.oh"; oi: "bk.oi"; oj: "bk.oj"; ok: "bk.ok"; ol: "bk.ol"; om: "bk.om"; on: "bk.on"; oo: "bk.oo"; op: "bk.op"; oq: "bk.oq"; or: "bk.or"; os: "bk.os"; ot: "bk.ot"; ou: "bk.ou"; ov: "bk.ov"; ow: "bk.ow"; ox: "bk.ox"; oy: "bk.oy"; oz: "bk.oz"; pa: "bk.pa"; pb: "bk.pb"; pc: "bk.pc"; pd: "bk.pd"; pe: "bk.pe"; pf: "bk.pf"; pg: "bk.pg"; ph: "bk.ph"; pi: "bk.pi"; pj: "bk.pj"; pk: "bk.pk"; pl: "bk.pl"; pm: "bk.pm"; pn: "bk.pn"; po: "bk.po"; pp: "bk.pp"; pq: "bk.pq"; pr: "bk.pr"; ps: "bk.ps"; pt: "bk.pt"; pu: "bk.pu"; pv: "bk.pv"; pw: "bk.pw"; px: "bk.px"; py: "bk.py"; pz: "bk.pz"; qa: "bk.qa"; qb: "bk.qb"; qc: "bk.qc"; qd: "bk.qd"; qe: "bk.qe"; qf: "bk.qf"; qg: "bk.qg"; qh: "bk.qh"; qi: "bk.qi"; qj: "bk.qj"; qk: "bk.qk"; ql: "bk.ql"; qm: "bk.qm"; qn: "bk.qn"; qo: "bk.qo"; qp: "bk.qp"; qq: "bk.qq"; qr: "bk.qr"; qs: "bk.qs"; qt: "bk.qt"; qu: "bk.qu"; qv: "bk.qv"; qw: "bk.qw"; qx: "bk.qx"; qy: "bk.qy"; qz: "bk.qz"; ra: "bk.ra"; rb: "bk.rb"; rc: "bk.rc"; rd: "bk.rd"; re: "bk.re"; rf: "bk.rf"; rg: "bk.rg"; rh: "bk.rh"; ri: "bk.ri"; rj: "bk.rj"; rk: "bk.rk"; rl: "bk.rl"; rm: "bk.rm"; rn: "bk.rn"; ro: "bk.ro"; rp: "bk.rp"; rq: "bk.rq"; rr: "bk.rr"; rs: "bk.rs"; rt: "bk.rt"; ru: "bk.ru"; rv: "bk.rv"; rw: "bk.rw"; rx: "bk.rx"; ry: "bk.ry"; rz: "bk.rz"; sa: "bk.sa"; sb: "bk.sb"; sc: "bk.sc"; sd: "bk.sd"; se: "bk.se"; sf: "bk.sf"; sg: "bk.sg"; sh: "bk.sh"; si: "bk.si"; sj: "bk.sj"; sk: "bk.sk"; sl: "bk.sl"; sm: "bk.sm"; sn: "bk.sn"; so: "bk.so"; sp: "bk.sp"; sq: "bk.sq"; sr: "bk.sr"; ss: "bk.ss"; st: "bk.st"; su: "bk.su"; sv: "bk.sv"; sw: "bk.sw"; sx: "bk.sx"; sy: "bk.sy"; sz: "bk.sz"; ta: "bk.ta"; tb: "bk.tb"; tc: "bk.tc"; td: "bk.td"; te: "bk.te"; tf: "bk.tf"; tg: "bk.tg"; th: "bk.th"; ti: "bk.ti"; tj: "bk.tj"; tk: "bk.tk"; tl: "bk.tl"; tm: "bk.tm"; tn: "bk.tn"; to: "bk.to"; tp: "bk.tp"; tq: "bk.tq"; tr: "bk.tr"; ts: "bk.ts"; tt: "bk.tt"; tu: "bk.tu"; tv: "bk.tv"; tw: "bk.tw"; tx: "bk.tx"; ty: "bk.ty"; tz: "bk.tz"; ua: "bk.ua"; ub: "bk.ub"; uc: "bk.uc"; ud: "bk.ud"; ue: "bk.ue"; uf: "bk.uf"; ug: "bk.ug"; uh: "bk.uh"; ui: "bk.ui"; uj: "bk.uj"; uk: "bk.uk"; ul: "bk.ul"; um: "bk.um"; un: "bk.un"; uo: "bk.uo"; up: "bk.up"; uq: "bk.uq"; ur: "bk.ur"; us: "bk.us"; ut: "bk.ut"; uu: "bk.uu"; uv: "bk.uv"; uw: "bk.uw"; ux: "bk.ux"; uy: "bk.uy"; uz: "bk.uz"; va: "bk.va"; vb: "bk.vb"; vc: "bk.vc"; vd: "bk.vd"; ve: "bk.ve"; vf: "bk.vf"; vg: "bk.vg"; vh: "bk.vh"; vi: "bk.vi"; vj: "bk.vj"; vk: "bk.vk"; vl: "bk.vl"; vm: "bk.vm"; vn: "bk.vn"; vo: "bk.vo"; vp: "bk.vp"; vq: "bk.vq"; vr: "bk.vr"; vs: "bk.vs"; vt: "bk.vt"; vu: "bk.vu"; vv: "bk.vv"; vw: "bk.vw"; vx: "bk.vx"; vy: "bk.vy"; vz: "bk.vz"; wa: "bk.wa"; wb: "bk.wb"; wc: "bk.wc"; wd: "bk.wd"; we: "bk.we"; wf: "bk.wf"; wg: "bk.wg"; wh: "bk.wh"; wi: "bk.wi"; wj: "bk.wj"; wk: "bk.wk"; wl: "bk.wl"; wm: "bk.wm"; wn: "bk.wn"; wo: "bk.wo"; wp: "bk.wp"; wq: "bk.wq"; wr: "bk.wr"; ws: "bk.ws"; wt: "bk.wt"; wu: "bk.wu"; wv: "bk.wv"; ww: "bk.ww"; wx: "bk.wx"; wy: "bk.wy"; wz: "bk.wz"; xa: "bk.xa"; xb: "bk.xb"; xc: "bk.xc"; xd: "bk.xd"; xe: "bk.xe"; xf: "bk.xf"; xg: "bk.xg"; xh: "bk.xh"; xi: "bk.xi"; xj: "bk.xj"; xk: "bk.xk"; xl: "bk.xl"; xm: "bk.xm"; xn: "bk.xn"; xo: "bk.xo"; xp: "bk.xp"; xq: "bk.xq"; xr: "bk.xr"; xs: "bk.xs"; xt: "bk.xt"; xu: "bk.xu"; xv: "bk.xv"; xw: "bk.xw"; xx: "bk.xx"; xy: "bk.xy"; xz: "bk.xz"; ya: "bk.ya"; yb: "bk.yb"; yc: "bk.yc"; yd: "bk.yd"; ye: "bk.ye"; yf: "bk.yf"; yg: "bk.yg"; yh: "bk.yh"; yi: "bk.yi"; yj: "bk.yj"; yk: "bk.yk"; yl: "bk.yl"; ym: "bk.ym"; yn: "bk.yn"; yo: "bk.yo"; yp: "bk.yp"; yq: "bk.yq"; yr: "bk.yr"; ys: "bk.ys"; yt: "bk.yt"; yu: "bk.yu"; yv: "bk.yv"; yw: "bk.yw"; yx: "bk.yx"; yy: "bk.yy"; yz: "bk.yz"; za: "bk.za"; zb: "bk.zb"; zc: "bk.zc"; zd: "bk.zd"; ze: "bk.ze"; zf: "bk.zf"; zg: "bk.zg"; zh: "bk.zh"; zi: "bk.zi"; zj: "bk.zj"; zk: "bk.zk"; zl: "bk.zl"; zm: "bk.zm"; zn: "bk.zn"; zo: "bk.zo"; zp: "bk.zp"; zq: "bk.zq"; zr: "bk.zr"; zs: "bk.zs"; zt: "bk.zt"; zu: "bk.zu"; zv: "bk.zv"; zw: "bk.zw"; zx: "bk.zx"; zy: "bk.zy"; zz: "bk.zz"; }; bl: { aa: "bl.aa"; ab: "bl.ab"; ac: "bl.ac"; ad: "bl.ad"; ae: "bl.ae"; af: "bl.af"; ag: "bl.ag"; ah: "bl.ah"; ai: "bl.ai"; aj: "bl.aj"; ak: "bl.ak"; al: "bl.al"; am: "bl.am"; an: "bl.an"; ao: "bl.ao"; ap: "bl.ap"; aq: "bl.aq"; ar: "bl.ar"; as: "bl.as"; at: "bl.at"; au: "bl.au"; av: "bl.av"; aw: "bl.aw"; ax: "bl.ax"; ay: "bl.ay"; az: "bl.az"; ba: "bl.ba"; bb: "bl.bb"; bc: "bl.bc"; bd: "bl.bd"; be: "bl.be"; bf: "bl.bf"; bg: "bl.bg"; bh: "bl.bh"; bi: "bl.bi"; bj: "bl.bj"; bk: "bl.bk"; bl: "bl.bl"; bm: "bl.bm"; bn: "bl.bn"; bo: "bl.bo"; bp: "bl.bp"; bq: "bl.bq"; br: "bl.br"; bs: "bl.bs"; bt: "bl.bt"; bu: "bl.bu"; bv: "bl.bv"; bw: "bl.bw"; bx: "bl.bx"; by: "bl.by"; bz: "bl.bz"; ca: "bl.ca"; cb: "bl.cb"; cc: "bl.cc"; cd: "bl.cd"; ce: "bl.ce"; cf: "bl.cf"; cg: "bl.cg"; ch: "bl.ch"; ci: "bl.ci"; cj: "bl.cj"; ck: "bl.ck"; cl: "bl.cl"; cm: "bl.cm"; cn: "bl.cn"; co: "bl.co"; cp: "bl.cp"; cq: "bl.cq"; cr: "bl.cr"; cs: "bl.cs"; ct: "bl.ct"; cu: "bl.cu"; cv: "bl.cv"; cw: "bl.cw"; cx: "bl.cx"; cy: "bl.cy"; cz: "bl.cz"; da: "bl.da"; db: "bl.db"; dc: "bl.dc"; dd: "bl.dd"; de: "bl.de"; df: "bl.df"; dg: "bl.dg"; dh: "bl.dh"; di: "bl.di"; dj: "bl.dj"; dk: "bl.dk"; dl: "bl.dl"; dm: "bl.dm"; dn: "bl.dn"; do: "bl.do"; dp: "bl.dp"; dq: "bl.dq"; dr: "bl.dr"; ds: "bl.ds"; dt: "bl.dt"; du: "bl.du"; dv: "bl.dv"; dw: "bl.dw"; dx: "bl.dx"; dy: "bl.dy"; dz: "bl.dz"; ea: "bl.ea"; eb: "bl.eb"; ec: "bl.ec"; ed: "bl.ed"; ee: "bl.ee"; ef: "bl.ef"; eg: "bl.eg"; eh: "bl.eh"; ei: "bl.ei"; ej: "bl.ej"; ek: "bl.ek"; el: "bl.el"; em: "bl.em"; en: "bl.en"; eo: "bl.eo"; ep: "bl.ep"; eq: "bl.eq"; er: "bl.er"; es: "bl.es"; et: "bl.et"; eu: "bl.eu"; ev: "bl.ev"; ew: "bl.ew"; ex: "bl.ex"; ey: "bl.ey"; ez: "bl.ez"; fa: "bl.fa"; fb: "bl.fb"; fc: "bl.fc"; fd: "bl.fd"; fe: "bl.fe"; ff: "bl.ff"; fg: "bl.fg"; fh: "bl.fh"; fi: "bl.fi"; fj: "bl.fj"; fk: "bl.fk"; fl: "bl.fl"; fm: "bl.fm"; fn: "bl.fn"; fo: "bl.fo"; fp: "bl.fp"; fq: "bl.fq"; fr: "bl.fr"; fs: "bl.fs"; ft: "bl.ft"; fu: "bl.fu"; fv: "bl.fv"; fw: "bl.fw"; fx: "bl.fx"; fy: "bl.fy"; fz: "bl.fz"; ga: "bl.ga"; gb: "bl.gb"; gc: "bl.gc"; gd: "bl.gd"; ge: "bl.ge"; gf: "bl.gf"; gg: "bl.gg"; gh: "bl.gh"; gi: "bl.gi"; gj: "bl.gj"; gk: "bl.gk"; gl: "bl.gl"; gm: "bl.gm"; gn: "bl.gn"; go: "bl.go"; gp: "bl.gp"; gq: "bl.gq"; gr: "bl.gr"; gs: "bl.gs"; gt: "bl.gt"; gu: "bl.gu"; gv: "bl.gv"; gw: "bl.gw"; gx: "bl.gx"; gy: "bl.gy"; gz: "bl.gz"; ha: "bl.ha"; hb: "bl.hb"; hc: "bl.hc"; hd: "bl.hd"; he: "bl.he"; hf: "bl.hf"; hg: "bl.hg"; hh: "bl.hh"; hi: "bl.hi"; hj: "bl.hj"; hk: "bl.hk"; hl: "bl.hl"; hm: "bl.hm"; hn: "bl.hn"; ho: "bl.ho"; hp: "bl.hp"; hq: "bl.hq"; hr: "bl.hr"; hs: "bl.hs"; ht: "bl.ht"; hu: "bl.hu"; hv: "bl.hv"; hw: "bl.hw"; hx: "bl.hx"; hy: "bl.hy"; hz: "bl.hz"; ia: "bl.ia"; ib: "bl.ib"; ic: "bl.ic"; id: "bl.id"; ie: "bl.ie"; if: "bl.if"; ig: "bl.ig"; ih: "bl.ih"; ii: "bl.ii"; ij: "bl.ij"; ik: "bl.ik"; il: "bl.il"; im: "bl.im"; in: "bl.in"; io: "bl.io"; ip: "bl.ip"; iq: "bl.iq"; ir: "bl.ir"; is: "bl.is"; it: "bl.it"; iu: "bl.iu"; iv: "bl.iv"; iw: "bl.iw"; ix: "bl.ix"; iy: "bl.iy"; iz: "bl.iz"; ja: "bl.ja"; jb: "bl.jb"; jc: "bl.jc"; jd: "bl.jd"; je: "bl.je"; jf: "bl.jf"; jg: "bl.jg"; jh: "bl.jh"; ji: "bl.ji"; jj: "bl.jj"; jk: "bl.jk"; jl: "bl.jl"; jm: "bl.jm"; jn: "bl.jn"; jo: "bl.jo"; jp: "bl.jp"; jq: "bl.jq"; jr: "bl.jr"; js: "bl.js"; jt: "bl.jt"; ju: "bl.ju"; jv: "bl.jv"; jw: "bl.jw"; jx: "bl.jx"; jy: "bl.jy"; jz: "bl.jz"; ka: "bl.ka"; kb: "bl.kb"; kc: "bl.kc"; kd: "bl.kd"; ke: "bl.ke"; kf: "bl.kf"; kg: "bl.kg"; kh: "bl.kh"; ki: "bl.ki"; kj: "bl.kj"; kk: "bl.kk"; kl: "bl.kl"; km: "bl.km"; kn: "bl.kn"; ko: "bl.ko"; kp: "bl.kp"; kq: "bl.kq"; kr: "bl.kr"; ks: "bl.ks"; kt: "bl.kt"; ku: "bl.ku"; kv: "bl.kv"; kw: "bl.kw"; kx: "bl.kx"; ky: "bl.ky"; kz: "bl.kz"; la: "bl.la"; lb: "bl.lb"; lc: "bl.lc"; ld: "bl.ld"; le: "bl.le"; lf: "bl.lf"; lg: "bl.lg"; lh: "bl.lh"; li: "bl.li"; lj: "bl.lj"; lk: "bl.lk"; ll: "bl.ll"; lm: "bl.lm"; ln: "bl.ln"; lo: "bl.lo"; lp: "bl.lp"; lq: "bl.lq"; lr: "bl.lr"; ls: "bl.ls"; lt: "bl.lt"; lu: "bl.lu"; lv: "bl.lv"; lw: "bl.lw"; lx: "bl.lx"; ly: "bl.ly"; lz: "bl.lz"; ma: "bl.ma"; mb: "bl.mb"; mc: "bl.mc"; md: "bl.md"; me: "bl.me"; mf: "bl.mf"; mg: "bl.mg"; mh: "bl.mh"; mi: "bl.mi"; mj: "bl.mj"; mk: "bl.mk"; ml: "bl.ml"; mm: "bl.mm"; mn: "bl.mn"; mo: "bl.mo"; mp: "bl.mp"; mq: "bl.mq"; mr: "bl.mr"; ms: "bl.ms"; mt: "bl.mt"; mu: "bl.mu"; mv: "bl.mv"; mw: "bl.mw"; mx: "bl.mx"; my: "bl.my"; mz: "bl.mz"; na: "bl.na"; nb: "bl.nb"; nc: "bl.nc"; nd: "bl.nd"; ne: "bl.ne"; nf: "bl.nf"; ng: "bl.ng"; nh: "bl.nh"; ni: "bl.ni"; nj: "bl.nj"; nk: "bl.nk"; nl: "bl.nl"; nm: "bl.nm"; nn: "bl.nn"; no: "bl.no"; np: "bl.np"; nq: "bl.nq"; nr: "bl.nr"; ns: "bl.ns"; nt: "bl.nt"; nu: "bl.nu"; nv: "bl.nv"; nw: "bl.nw"; nx: "bl.nx"; ny: "bl.ny"; nz: "bl.nz"; oa: "bl.oa"; ob: "bl.ob"; oc: "bl.oc"; od: "bl.od"; oe: "bl.oe"; of: "bl.of"; og: "bl.og"; oh: "bl.oh"; oi: "bl.oi"; oj: "bl.oj"; ok: "bl.ok"; ol: "bl.ol"; om: "bl.om"; on: "bl.on"; oo: "bl.oo"; op: "bl.op"; oq: "bl.oq"; or: "bl.or"; os: "bl.os"; ot: "bl.ot"; ou: "bl.ou"; ov: "bl.ov"; ow: "bl.ow"; ox: "bl.ox"; oy: "bl.oy"; oz: "bl.oz"; pa: "bl.pa"; pb: "bl.pb"; pc: "bl.pc"; pd: "bl.pd"; pe: "bl.pe"; pf: "bl.pf"; pg: "bl.pg"; ph: "bl.ph"; pi: "bl.pi"; pj: "bl.pj"; pk: "bl.pk"; pl: "bl.pl"; pm: "bl.pm"; pn: "bl.pn"; po: "bl.po"; pp: "bl.pp"; pq: "bl.pq"; pr: "bl.pr"; ps: "bl.ps"; pt: "bl.pt"; pu: "bl.pu"; pv: "bl.pv"; pw: "bl.pw"; px: "bl.px"; py: "bl.py"; pz: "bl.pz"; qa: "bl.qa"; qb: "bl.qb"; qc: "bl.qc"; qd: "bl.qd"; qe: "bl.qe"; qf: "bl.qf"; qg: "bl.qg"; qh: "bl.qh"; qi: "bl.qi"; qj: "bl.qj"; qk: "bl.qk"; ql: "bl.ql"; qm: "bl.qm"; qn: "bl.qn"; qo: "bl.qo"; qp: "bl.qp"; qq: "bl.qq"; qr: "bl.qr"; qs: "bl.qs"; qt: "bl.qt"; qu: "bl.qu"; qv: "bl.qv"; qw: "bl.qw"; qx: "bl.qx"; qy: "bl.qy"; qz: "bl.qz"; ra: "bl.ra"; rb: "bl.rb"; rc: "bl.rc"; rd: "bl.rd"; re: "bl.re"; rf: "bl.rf"; rg: "bl.rg"; rh: "bl.rh"; ri: "bl.ri"; rj: "bl.rj"; rk: "bl.rk"; rl: "bl.rl"; rm: "bl.rm"; rn: "bl.rn"; ro: "bl.ro"; rp: "bl.rp"; rq: "bl.rq"; rr: "bl.rr"; rs: "bl.rs"; rt: "bl.rt"; ru: "bl.ru"; rv: "bl.rv"; rw: "bl.rw"; rx: "bl.rx"; ry: "bl.ry"; rz: "bl.rz"; sa: "bl.sa"; sb: "bl.sb"; sc: "bl.sc"; sd: "bl.sd"; se: "bl.se"; sf: "bl.sf"; sg: "bl.sg"; sh: "bl.sh"; si: "bl.si"; sj: "bl.sj"; sk: "bl.sk"; sl: "bl.sl"; sm: "bl.sm"; sn: "bl.sn"; so: "bl.so"; sp: "bl.sp"; sq: "bl.sq"; sr: "bl.sr"; ss: "bl.ss"; st: "bl.st"; su: "bl.su"; sv: "bl.sv"; sw: "bl.sw"; sx: "bl.sx"; sy: "bl.sy"; sz: "bl.sz"; ta: "bl.ta"; tb: "bl.tb"; tc: "bl.tc"; td: "bl.td"; te: "bl.te"; tf: "bl.tf"; tg: "bl.tg"; th: "bl.th"; ti: "bl.ti"; tj: "bl.tj"; tk: "bl.tk"; tl: "bl.tl"; tm: "bl.tm"; tn: "bl.tn"; to: "bl.to"; tp: "bl.tp"; tq: "bl.tq"; tr: "bl.tr"; ts: "bl.ts"; tt: "bl.tt"; tu: "bl.tu"; tv: "bl.tv"; tw: "bl.tw"; tx: "bl.tx"; ty: "bl.ty"; tz: "bl.tz"; ua: "bl.ua"; ub: "bl.ub"; uc: "bl.uc"; ud: "bl.ud"; ue: "bl.ue"; uf: "bl.uf"; ug: "bl.ug"; uh: "bl.uh"; ui: "bl.ui"; uj: "bl.uj"; uk: "bl.uk"; ul: "bl.ul"; um: "bl.um"; un: "bl.un"; uo: "bl.uo"; up: "bl.up"; uq: "bl.uq"; ur: "bl.ur"; us: "bl.us"; ut: "bl.ut"; uu: "bl.uu"; uv: "bl.uv"; uw: "bl.uw"; ux: "bl.ux"; uy: "bl.uy"; uz: "bl.uz"; va: "bl.va"; vb: "bl.vb"; vc: "bl.vc"; vd: "bl.vd"; ve: "bl.ve"; vf: "bl.vf"; vg: "bl.vg"; vh: "bl.vh"; vi: "bl.vi"; vj: "bl.vj"; vk: "bl.vk"; vl: "bl.vl"; vm: "bl.vm"; vn: "bl.vn"; vo: "bl.vo"; vp: "bl.vp"; vq: "bl.vq"; vr: "bl.vr"; vs: "bl.vs"; vt: "bl.vt"; vu: "bl.vu"; vv: "bl.vv"; vw: "bl.vw"; vx: "bl.vx"; vy: "bl.vy"; vz: "bl.vz"; wa: "bl.wa"; wb: "bl.wb"; wc: "bl.wc"; wd: "bl.wd"; we: "bl.we"; wf: "bl.wf"; wg: "bl.wg"; wh: "bl.wh"; wi: "bl.wi"; wj: "bl.wj"; wk: "bl.wk"; wl: "bl.wl"; wm: "bl.wm"; wn: "bl.wn"; wo: "bl.wo"; wp: "bl.wp"; wq: "bl.wq"; wr: "bl.wr"; ws: "bl.ws"; wt: "bl.wt"; wu: "bl.wu"; wv: "bl.wv"; ww: "bl.ww"; wx: "bl.wx"; wy: "bl.wy"; wz: "bl.wz"; xa: "bl.xa"; xb: "bl.xb"; xc: "bl.xc"; xd: "bl.xd"; xe: "bl.xe"; xf: "bl.xf"; xg: "bl.xg"; xh: "bl.xh"; xi: "bl.xi"; xj: "bl.xj"; xk: "bl.xk"; xl: "bl.xl"; xm: "bl.xm"; xn: "bl.xn"; xo: "bl.xo"; xp: "bl.xp"; xq: "bl.xq"; xr: "bl.xr"; xs: "bl.xs"; xt: "bl.xt"; xu: "bl.xu"; xv: "bl.xv"; xw: "bl.xw"; xx: "bl.xx"; xy: "bl.xy"; xz: "bl.xz"; ya: "bl.ya"; yb: "bl.yb"; yc: "bl.yc"; yd: "bl.yd"; ye: "bl.ye"; yf: "bl.yf"; yg: "bl.yg"; yh: "bl.yh"; yi: "bl.yi"; yj: "bl.yj"; yk: "bl.yk"; yl: "bl.yl"; ym: "bl.ym"; yn: "bl.yn"; yo: "bl.yo"; yp: "bl.yp"; yq: "bl.yq"; yr: "bl.yr"; ys: "bl.ys"; yt: "bl.yt"; yu: "bl.yu"; yv: "bl.yv"; yw: "bl.yw"; yx: "bl.yx"; yy: "bl.yy"; yz: "bl.yz"; za: "bl.za"; zb: "bl.zb"; zc: "bl.zc"; zd: "bl.zd"; ze: "bl.ze"; zf: "bl.zf"; zg: "bl.zg"; zh: "bl.zh"; zi: "bl.zi"; zj: "bl.zj"; zk: "bl.zk"; zl: "bl.zl"; zm: "bl.zm"; zn: "bl.zn"; zo: "bl.zo"; zp: "bl.zp"; zq: "bl.zq"; zr: "bl.zr"; zs: "bl.zs"; zt: "bl.zt"; zu: "bl.zu"; zv: "bl.zv"; zw: "bl.zw"; zx: "bl.zx"; zy: "bl.zy"; zz: "bl.zz"; }; bm: { aa: "bm.aa"; ab: "bm.ab"; ac: "bm.ac"; ad: "bm.ad"; ae: "bm.ae"; af: "bm.af"; ag: "bm.ag"; ah: "bm.ah"; ai: "bm.ai"; aj: "bm.aj"; ak: "bm.ak"; al: "bm.al"; am: "bm.am"; an: "bm.an"; ao: "bm.ao"; ap: "bm.ap"; aq: "bm.aq"; ar: "bm.ar"; as: "bm.as"; at: "bm.at"; au: "bm.au"; av: "bm.av"; aw: "bm.aw"; ax: "bm.ax"; ay: "bm.ay"; az: "bm.az"; ba: "bm.ba"; bb: "bm.bb"; bc: "bm.bc"; bd: "bm.bd"; be: "bm.be"; bf: "bm.bf"; bg: "bm.bg"; bh: "bm.bh"; bi: "bm.bi"; bj: "bm.bj"; bk: "bm.bk"; bl: "bm.bl"; bm: "bm.bm"; bn: "bm.bn"; bo: "bm.bo"; bp: "bm.bp"; bq: "bm.bq"; br: "bm.br"; bs: "bm.bs"; bt: "bm.bt"; bu: "bm.bu"; bv: "bm.bv"; bw: "bm.bw"; bx: "bm.bx"; by: "bm.by"; bz: "bm.bz"; ca: "bm.ca"; cb: "bm.cb"; cc: "bm.cc"; cd: "bm.cd"; ce: "bm.ce"; cf: "bm.cf"; cg: "bm.cg"; ch: "bm.ch"; ci: "bm.ci"; cj: "bm.cj"; ck: "bm.ck"; cl: "bm.cl"; cm: "bm.cm"; cn: "bm.cn"; co: "bm.co"; cp: "bm.cp"; cq: "bm.cq"; cr: "bm.cr"; cs: "bm.cs"; ct: "bm.ct"; cu: "bm.cu"; cv: "bm.cv"; cw: "bm.cw"; cx: "bm.cx"; cy: "bm.cy"; cz: "bm.cz"; da: "bm.da"; db: "bm.db"; dc: "bm.dc"; dd: "bm.dd"; de: "bm.de"; df: "bm.df"; dg: "bm.dg"; dh: "bm.dh"; di: "bm.di"; dj: "bm.dj"; dk: "bm.dk"; dl: "bm.dl"; dm: "bm.dm"; dn: "bm.dn"; do: "bm.do"; dp: "bm.dp"; dq: "bm.dq"; dr: "bm.dr"; ds: "bm.ds"; dt: "bm.dt"; du: "bm.du"; dv: "bm.dv"; dw: "bm.dw"; dx: "bm.dx"; dy: "bm.dy"; dz: "bm.dz"; ea: "bm.ea"; eb: "bm.eb"; ec: "bm.ec"; ed: "bm.ed"; ee: "bm.ee"; ef: "bm.ef"; eg: "bm.eg"; eh: "bm.eh"; ei: "bm.ei"; ej: "bm.ej"; ek: "bm.ek"; el: "bm.el"; em: "bm.em"; en: "bm.en"; eo: "bm.eo"; ep: "bm.ep"; eq: "bm.eq"; er: "bm.er"; es: "bm.es"; et: "bm.et"; eu: "bm.eu"; ev: "bm.ev"; ew: "bm.ew"; ex: "bm.ex"; ey: "bm.ey"; ez: "bm.ez"; fa: "bm.fa"; fb: "bm.fb"; fc: "bm.fc"; fd: "bm.fd"; fe: "bm.fe"; ff: "bm.ff"; fg: "bm.fg"; fh: "bm.fh"; fi: "bm.fi"; fj: "bm.fj"; fk: "bm.fk"; fl: "bm.fl"; fm: "bm.fm"; fn: "bm.fn"; fo: "bm.fo"; fp: "bm.fp"; fq: "bm.fq"; fr: "bm.fr"; fs: "bm.fs"; ft: "bm.ft"; fu: "bm.fu"; fv: "bm.fv"; fw: "bm.fw"; fx: "bm.fx"; fy: "bm.fy"; fz: "bm.fz"; ga: "bm.ga"; gb: "bm.gb"; gc: "bm.gc"; gd: "bm.gd"; ge: "bm.ge"; gf: "bm.gf"; gg: "bm.gg"; gh: "bm.gh"; gi: "bm.gi"; gj: "bm.gj"; gk: "bm.gk"; gl: "bm.gl"; gm: "bm.gm"; gn: "bm.gn"; go: "bm.go"; gp: "bm.gp"; gq: "bm.gq"; gr: "bm.gr"; gs: "bm.gs"; gt: "bm.gt"; gu: "bm.gu"; gv: "bm.gv"; gw: "bm.gw"; gx: "bm.gx"; gy: "bm.gy"; gz: "bm.gz"; ha: "bm.ha"; hb: "bm.hb"; hc: "bm.hc"; hd: "bm.hd"; he: "bm.he"; hf: "bm.hf"; hg: "bm.hg"; hh: "bm.hh"; hi: "bm.hi"; hj: "bm.hj"; hk: "bm.hk"; hl: "bm.hl"; hm: "bm.hm"; hn: "bm.hn"; ho: "bm.ho"; hp: "bm.hp"; hq: "bm.hq"; hr: "bm.hr"; hs: "bm.hs"; ht: "bm.ht"; hu: "bm.hu"; hv: "bm.hv"; hw: "bm.hw"; hx: "bm.hx"; hy: "bm.hy"; hz: "bm.hz"; ia: "bm.ia"; ib: "bm.ib"; ic: "bm.ic"; id: "bm.id"; ie: "bm.ie"; if: "bm.if"; ig: "bm.ig"; ih: "bm.ih"; ii: "bm.ii"; ij: "bm.ij"; ik: "bm.ik"; il: "bm.il"; im: "bm.im"; in: "bm.in"; io: "bm.io"; ip: "bm.ip"; iq: "bm.iq"; ir: "bm.ir"; is: "bm.is"; it: "bm.it"; iu: "bm.iu"; iv: "bm.iv"; iw: "bm.iw"; ix: "bm.ix"; iy: "bm.iy"; iz: "bm.iz"; ja: "bm.ja"; jb: "bm.jb"; jc: "bm.jc"; jd: "bm.jd"; je: "bm.je"; jf: "bm.jf"; jg: "bm.jg"; jh: "bm.jh"; ji: "bm.ji"; jj: "bm.jj"; jk: "bm.jk"; jl: "bm.jl"; jm: "bm.jm"; jn: "bm.jn"; jo: "bm.jo"; jp: "bm.jp"; jq: "bm.jq"; jr: "bm.jr"; js: "bm.js"; jt: "bm.jt"; ju: "bm.ju"; jv: "bm.jv"; jw: "bm.jw"; jx: "bm.jx"; jy: "bm.jy"; jz: "bm.jz"; ka: "bm.ka"; kb: "bm.kb"; kc: "bm.kc"; kd: "bm.kd"; ke: "bm.ke"; kf: "bm.kf"; kg: "bm.kg"; kh: "bm.kh"; ki: "bm.ki"; kj: "bm.kj"; kk: "bm.kk"; kl: "bm.kl"; km: "bm.km"; kn: "bm.kn"; ko: "bm.ko"; kp: "bm.kp"; kq: "bm.kq"; kr: "bm.kr"; ks: "bm.ks"; kt: "bm.kt"; ku: "bm.ku"; kv: "bm.kv"; kw: "bm.kw"; kx: "bm.kx"; ky: "bm.ky"; kz: "bm.kz"; la: "bm.la"; lb: "bm.lb"; lc: "bm.lc"; ld: "bm.ld"; le: "bm.le"; lf: "bm.lf"; lg: "bm.lg"; lh: "bm.lh"; li: "bm.li"; lj: "bm.lj"; lk: "bm.lk"; ll: "bm.ll"; lm: "bm.lm"; ln: "bm.ln"; lo: "bm.lo"; lp: "bm.lp"; lq: "bm.lq"; lr: "bm.lr"; ls: "bm.ls"; lt: "bm.lt"; lu: "bm.lu"; lv: "bm.lv"; lw: "bm.lw"; lx: "bm.lx"; ly: "bm.ly"; lz: "bm.lz"; ma: "bm.ma"; mb: "bm.mb"; mc: "bm.mc"; md: "bm.md"; me: "bm.me"; mf: "bm.mf"; mg: "bm.mg"; mh: "bm.mh"; mi: "bm.mi"; mj: "bm.mj"; mk: "bm.mk"; ml: "bm.ml"; mm: "bm.mm"; mn: "bm.mn"; mo: "bm.mo"; mp: "bm.mp"; mq: "bm.mq"; mr: "bm.mr"; ms: "bm.ms"; mt: "bm.mt"; mu: "bm.mu"; mv: "bm.mv"; mw: "bm.mw"; mx: "bm.mx"; my: "bm.my"; mz: "bm.mz"; na: "bm.na"; nb: "bm.nb"; nc: "bm.nc"; nd: "bm.nd"; ne: "bm.ne"; nf: "bm.nf"; ng: "bm.ng"; nh: "bm.nh"; ni: "bm.ni"; nj: "bm.nj"; nk: "bm.nk"; nl: "bm.nl"; nm: "bm.nm"; nn: "bm.nn"; no: "bm.no"; np: "bm.np"; nq: "bm.nq"; nr: "bm.nr"; ns: "bm.ns"; nt: "bm.nt"; nu: "bm.nu"; nv: "bm.nv"; nw: "bm.nw"; nx: "bm.nx"; ny: "bm.ny"; nz: "bm.nz"; oa: "bm.oa"; ob: "bm.ob"; oc: "bm.oc"; od: "bm.od"; oe: "bm.oe"; of: "bm.of"; og: "bm.og"; oh: "bm.oh"; oi: "bm.oi"; oj: "bm.oj"; ok: "bm.ok"; ol: "bm.ol"; om: "bm.om"; on: "bm.on"; oo: "bm.oo"; op: "bm.op"; oq: "bm.oq"; or: "bm.or"; os: "bm.os"; ot: "bm.ot"; ou: "bm.ou"; ov: "bm.ov"; ow: "bm.ow"; ox: "bm.ox"; oy: "bm.oy"; oz: "bm.oz"; pa: "bm.pa"; pb: "bm.pb"; pc: "bm.pc"; pd: "bm.pd"; pe: "bm.pe"; pf: "bm.pf"; pg: "bm.pg"; ph: "bm.ph"; pi: "bm.pi"; pj: "bm.pj"; pk: "bm.pk"; pl: "bm.pl"; pm: "bm.pm"; pn: "bm.pn"; po: "bm.po"; pp: "bm.pp"; pq: "bm.pq"; pr: "bm.pr"; ps: "bm.ps"; pt: "bm.pt"; pu: "bm.pu"; pv: "bm.pv"; pw: "bm.pw"; px: "bm.px"; py: "bm.py"; pz: "bm.pz"; qa: "bm.qa"; qb: "bm.qb"; qc: "bm.qc"; qd: "bm.qd"; qe: "bm.qe"; qf: "bm.qf"; qg: "bm.qg"; qh: "bm.qh"; qi: "bm.qi"; qj: "bm.qj"; qk: "bm.qk"; ql: "bm.ql"; qm: "bm.qm"; qn: "bm.qn"; qo: "bm.qo"; qp: "bm.qp"; qq: "bm.qq"; qr: "bm.qr"; qs: "bm.qs"; qt: "bm.qt"; qu: "bm.qu"; qv: "bm.qv"; qw: "bm.qw"; qx: "bm.qx"; qy: "bm.qy"; qz: "bm.qz"; ra: "bm.ra"; rb: "bm.rb"; rc: "bm.rc"; rd: "bm.rd"; re: "bm.re"; rf: "bm.rf"; rg: "bm.rg"; rh: "bm.rh"; ri: "bm.ri"; rj: "bm.rj"; rk: "bm.rk"; rl: "bm.rl"; rm: "bm.rm"; rn: "bm.rn"; ro: "bm.ro"; rp: "bm.rp"; rq: "bm.rq"; rr: "bm.rr"; rs: "bm.rs"; rt: "bm.rt"; ru: "bm.ru"; rv: "bm.rv"; rw: "bm.rw"; rx: "bm.rx"; ry: "bm.ry"; rz: "bm.rz"; sa: "bm.sa"; sb: "bm.sb"; sc: "bm.sc"; sd: "bm.sd"; se: "bm.se"; sf: "bm.sf"; sg: "bm.sg"; sh: "bm.sh"; si: "bm.si"; sj: "bm.sj"; sk: "bm.sk"; sl: "bm.sl"; sm: "bm.sm"; sn: "bm.sn"; so: "bm.so"; sp: "bm.sp"; sq: "bm.sq"; sr: "bm.sr"; ss: "bm.ss"; st: "bm.st"; su: "bm.su"; sv: "bm.sv"; sw: "bm.sw"; sx: "bm.sx"; sy: "bm.sy"; sz: "bm.sz"; ta: "bm.ta"; tb: "bm.tb"; tc: "bm.tc"; td: "bm.td"; te: "bm.te"; tf: "bm.tf"; tg: "bm.tg"; th: "bm.th"; ti: "bm.ti"; tj: "bm.tj"; tk: "bm.tk"; tl: "bm.tl"; tm: "bm.tm"; tn: "bm.tn"; to: "bm.to"; tp: "bm.tp"; tq: "bm.tq"; tr: "bm.tr"; ts: "bm.ts"; tt: "bm.tt"; tu: "bm.tu"; tv: "bm.tv"; tw: "bm.tw"; tx: "bm.tx"; ty: "bm.ty"; tz: "bm.tz"; ua: "bm.ua"; ub: "bm.ub"; uc: "bm.uc"; ud: "bm.ud"; ue: "bm.ue"; uf: "bm.uf"; ug: "bm.ug"; uh: "bm.uh"; ui: "bm.ui"; uj: "bm.uj"; uk: "bm.uk"; ul: "bm.ul"; um: "bm.um"; un: "bm.un"; uo: "bm.uo"; up: "bm.up"; uq: "bm.uq"; ur: "bm.ur"; us: "bm.us"; ut: "bm.ut"; uu: "bm.uu"; uv: "bm.uv"; uw: "bm.uw"; ux: "bm.ux"; uy: "bm.uy"; uz: "bm.uz"; va: "bm.va"; vb: "bm.vb"; vc: "bm.vc"; vd: "bm.vd"; ve: "bm.ve"; vf: "bm.vf"; vg: "bm.vg"; vh: "bm.vh"; vi: "bm.vi"; vj: "bm.vj"; vk: "bm.vk"; vl: "bm.vl"; vm: "bm.vm"; vn: "bm.vn"; vo: "bm.vo"; vp: "bm.vp"; vq: "bm.vq"; vr: "bm.vr"; vs: "bm.vs"; vt: "bm.vt"; vu: "bm.vu"; vv: "bm.vv"; vw: "bm.vw"; vx: "bm.vx"; vy: "bm.vy"; vz: "bm.vz"; wa: "bm.wa"; wb: "bm.wb"; wc: "bm.wc"; wd: "bm.wd"; we: "bm.we"; wf: "bm.wf"; wg: "bm.wg"; wh: "bm.wh"; wi: "bm.wi"; wj: "bm.wj"; wk: "bm.wk"; wl: "bm.wl"; wm: "bm.wm"; wn: "bm.wn"; wo: "bm.wo"; wp: "bm.wp"; wq: "bm.wq"; wr: "bm.wr"; ws: "bm.ws"; wt: "bm.wt"; wu: "bm.wu"; wv: "bm.wv"; ww: "bm.ww"; wx: "bm.wx"; wy: "bm.wy"; wz: "bm.wz"; xa: "bm.xa"; xb: "bm.xb"; xc: "bm.xc"; xd: "bm.xd"; xe: "bm.xe"; xf: "bm.xf"; xg: "bm.xg"; xh: "bm.xh"; xi: "bm.xi"; xj: "bm.xj"; xk: "bm.xk"; xl: "bm.xl"; xm: "bm.xm"; xn: "bm.xn"; xo: "bm.xo"; xp: "bm.xp"; xq: "bm.xq"; xr: "bm.xr"; xs: "bm.xs"; xt: "bm.xt"; xu: "bm.xu"; xv: "bm.xv"; xw: "bm.xw"; xx: "bm.xx"; xy: "bm.xy"; xz: "bm.xz"; ya: "bm.ya"; yb: "bm.yb"; yc: "bm.yc"; yd: "bm.yd"; ye: "bm.ye"; yf: "bm.yf"; yg: "bm.yg"; yh: "bm.yh"; yi: "bm.yi"; yj: "bm.yj"; yk: "bm.yk"; yl: "bm.yl"; ym: "bm.ym"; yn: "bm.yn"; yo: "bm.yo"; yp: "bm.yp"; yq: "bm.yq"; yr: "bm.yr"; ys: "bm.ys"; yt: "bm.yt"; yu: "bm.yu"; yv: "bm.yv"; yw: "bm.yw"; yx: "bm.yx"; yy: "bm.yy"; yz: "bm.yz"; za: "bm.za"; zb: "bm.zb"; zc: "bm.zc"; zd: "bm.zd"; ze: "bm.ze"; zf: "bm.zf"; zg: "bm.zg"; zh: "bm.zh"; zi: "bm.zi"; zj: "bm.zj"; zk: "bm.zk"; zl: "bm.zl"; zm: "bm.zm"; zn: "bm.zn"; zo: "bm.zo"; zp: "bm.zp"; zq: "bm.zq"; zr: "bm.zr"; zs: "bm.zs"; zt: "bm.zt"; zu: "bm.zu"; zv: "bm.zv"; zw: "bm.zw"; zx: "bm.zx"; zy: "bm.zy"; zz: "bm.zz"; }; bn: { aa: "bn.aa"; ab: "bn.ab"; ac: "bn.ac"; ad: "bn.ad"; ae: "bn.ae"; af: "bn.af"; ag: "bn.ag"; ah: "bn.ah"; ai: "bn.ai"; aj: "bn.aj"; ak: "bn.ak"; al: "bn.al"; am: "bn.am"; an: "bn.an"; ao: "bn.ao"; ap: "bn.ap"; aq: "bn.aq"; ar: "bn.ar"; as: "bn.as"; at: "bn.at"; au: "bn.au"; av: "bn.av"; aw: "bn.aw"; ax: "bn.ax"; ay: "bn.ay"; az: "bn.az"; ba: "bn.ba"; bb: "bn.bb"; bc: "bn.bc"; bd: "bn.bd"; be: "bn.be"; bf: "bn.bf"; bg: "bn.bg"; bh: "bn.bh"; bi: "bn.bi"; bj: "bn.bj"; bk: "bn.bk"; bl: "bn.bl"; bm: "bn.bm"; bn: "bn.bn"; bo: "bn.bo"; bp: "bn.bp"; bq: "bn.bq"; br: "bn.br"; bs: "bn.bs"; bt: "bn.bt"; bu: "bn.bu"; bv: "bn.bv"; bw: "bn.bw"; bx: "bn.bx"; by: "bn.by"; bz: "bn.bz"; ca: "bn.ca"; cb: "bn.cb"; cc: "bn.cc"; cd: "bn.cd"; ce: "bn.ce"; cf: "bn.cf"; cg: "bn.cg"; ch: "bn.ch"; ci: "bn.ci"; cj: "bn.cj"; ck: "bn.ck"; cl: "bn.cl"; cm: "bn.cm"; cn: "bn.cn"; co: "bn.co"; cp: "bn.cp"; cq: "bn.cq"; cr: "bn.cr"; cs: "bn.cs"; ct: "bn.ct"; cu: "bn.cu"; cv: "bn.cv"; cw: "bn.cw"; cx: "bn.cx"; cy: "bn.cy"; cz: "bn.cz"; da: "bn.da"; db: "bn.db"; dc: "bn.dc"; dd: "bn.dd"; de: "bn.de"; df: "bn.df"; dg: "bn.dg"; dh: "bn.dh"; di: "bn.di"; dj: "bn.dj"; dk: "bn.dk"; dl: "bn.dl"; dm: "bn.dm"; dn: "bn.dn"; do: "bn.do"; dp: "bn.dp"; dq: "bn.dq"; dr: "bn.dr"; ds: "bn.ds"; dt: "bn.dt"; du: "bn.du"; dv: "bn.dv"; dw: "bn.dw"; dx: "bn.dx"; dy: "bn.dy"; dz: "bn.dz"; ea: "bn.ea"; eb: "bn.eb"; ec: "bn.ec"; ed: "bn.ed"; ee: "bn.ee"; ef: "bn.ef"; eg: "bn.eg"; eh: "bn.eh"; ei: "bn.ei"; ej: "bn.ej"; ek: "bn.ek"; el: "bn.el"; em: "bn.em"; en: "bn.en"; eo: "bn.eo"; ep: "bn.ep"; eq: "bn.eq"; er: "bn.er"; es: "bn.es"; et: "bn.et"; eu: "bn.eu"; ev: "bn.ev"; ew: "bn.ew"; ex: "bn.ex"; ey: "bn.ey"; ez: "bn.ez"; fa: "bn.fa"; fb: "bn.fb"; fc: "bn.fc"; fd: "bn.fd"; fe: "bn.fe"; ff: "bn.ff"; fg: "bn.fg"; fh: "bn.fh"; fi: "bn.fi"; fj: "bn.fj"; fk: "bn.fk"; fl: "bn.fl"; fm: "bn.fm"; fn: "bn.fn"; fo: "bn.fo"; fp: "bn.fp"; fq: "bn.fq"; fr: "bn.fr"; fs: "bn.fs"; ft: "bn.ft"; fu: "bn.fu"; fv: "bn.fv"; fw: "bn.fw"; fx: "bn.fx"; fy: "bn.fy"; fz: "bn.fz"; ga: "bn.ga"; gb: "bn.gb"; gc: "bn.gc"; gd: "bn.gd"; ge: "bn.ge"; gf: "bn.gf"; gg: "bn.gg"; gh: "bn.gh"; gi: "bn.gi"; gj: "bn.gj"; gk: "bn.gk"; gl: "bn.gl"; gm: "bn.gm"; gn: "bn.gn"; go: "bn.go"; gp: "bn.gp"; gq: "bn.gq"; gr: "bn.gr"; gs: "bn.gs"; gt: "bn.gt"; gu: "bn.gu"; gv: "bn.gv"; gw: "bn.gw"; gx: "bn.gx"; gy: "bn.gy"; gz: "bn.gz"; ha: "bn.ha"; hb: "bn.hb"; hc: "bn.hc"; hd: "bn.hd"; he: "bn.he"; hf: "bn.hf"; hg: "bn.hg"; hh: "bn.hh"; hi: "bn.hi"; hj: "bn.hj"; hk: "bn.hk"; hl: "bn.hl"; hm: "bn.hm"; hn: "bn.hn"; ho: "bn.ho"; hp: "bn.hp"; hq: "bn.hq"; hr: "bn.hr"; hs: "bn.hs"; ht: "bn.ht"; hu: "bn.hu"; hv: "bn.hv"; hw: "bn.hw"; hx: "bn.hx"; hy: "bn.hy"; hz: "bn.hz"; ia: "bn.ia"; ib: "bn.ib"; ic: "bn.ic"; id: "bn.id"; ie: "bn.ie"; if: "bn.if"; ig: "bn.ig"; ih: "bn.ih"; ii: "bn.ii"; ij: "bn.ij"; ik: "bn.ik"; il: "bn.il"; im: "bn.im"; in: "bn.in"; io: "bn.io"; ip: "bn.ip"; iq: "bn.iq"; ir: "bn.ir"; is: "bn.is"; it: "bn.it"; iu: "bn.iu"; iv: "bn.iv"; iw: "bn.iw"; ix: "bn.ix"; iy: "bn.iy"; iz: "bn.iz"; ja: "bn.ja"; jb: "bn.jb"; jc: "bn.jc"; jd: "bn.jd"; je: "bn.je"; jf: "bn.jf"; jg: "bn.jg"; jh: "bn.jh"; ji: "bn.ji"; jj: "bn.jj"; jk: "bn.jk"; jl: "bn.jl"; jm: "bn.jm"; jn: "bn.jn"; jo: "bn.jo"; jp: "bn.jp"; jq: "bn.jq"; jr: "bn.jr"; js: "bn.js"; jt: "bn.jt"; ju: "bn.ju"; jv: "bn.jv"; jw: "bn.jw"; jx: "bn.jx"; jy: "bn.jy"; jz: "bn.jz"; ka: "bn.ka"; kb: "bn.kb"; kc: "bn.kc"; kd: "bn.kd"; ke: "bn.ke"; kf: "bn.kf"; kg: "bn.kg"; kh: "bn.kh"; ki: "bn.ki"; kj: "bn.kj"; kk: "bn.kk"; kl: "bn.kl"; km: "bn.km"; kn: "bn.kn"; ko: "bn.ko"; kp: "bn.kp"; kq: "bn.kq"; kr: "bn.kr"; ks: "bn.ks"; kt: "bn.kt"; ku: "bn.ku"; kv: "bn.kv"; kw: "bn.kw"; kx: "bn.kx"; ky: "bn.ky"; kz: "bn.kz"; la: "bn.la"; lb: "bn.lb"; lc: "bn.lc"; ld: "bn.ld"; le: "bn.le"; lf: "bn.lf"; lg: "bn.lg"; lh: "bn.lh"; li: "bn.li"; lj: "bn.lj"; lk: "bn.lk"; ll: "bn.ll"; lm: "bn.lm"; ln: "bn.ln"; lo: "bn.lo"; lp: "bn.lp"; lq: "bn.lq"; lr: "bn.lr"; ls: "bn.ls"; lt: "bn.lt"; lu: "bn.lu"; lv: "bn.lv"; lw: "bn.lw"; lx: "bn.lx"; ly: "bn.ly"; lz: "bn.lz"; ma: "bn.ma"; mb: "bn.mb"; mc: "bn.mc"; md: "bn.md"; me: "bn.me"; mf: "bn.mf"; mg: "bn.mg"; mh: "bn.mh"; mi: "bn.mi"; mj: "bn.mj"; mk: "bn.mk"; ml: "bn.ml"; mm: "bn.mm"; mn: "bn.mn"; mo: "bn.mo"; mp: "bn.mp"; mq: "bn.mq"; mr: "bn.mr"; ms: "bn.ms"; mt: "bn.mt"; mu: "bn.mu"; mv: "bn.mv"; mw: "bn.mw"; mx: "bn.mx"; my: "bn.my"; mz: "bn.mz"; na: "bn.na"; nb: "bn.nb"; nc: "bn.nc"; nd: "bn.nd"; ne: "bn.ne"; nf: "bn.nf"; ng: "bn.ng"; nh: "bn.nh"; ni: "bn.ni"; nj: "bn.nj"; nk: "bn.nk"; nl: "bn.nl"; nm: "bn.nm"; nn: "bn.nn"; no: "bn.no"; np: "bn.np"; nq: "bn.nq"; nr: "bn.nr"; ns: "bn.ns"; nt: "bn.nt"; nu: "bn.nu"; nv: "bn.nv"; nw: "bn.nw"; nx: "bn.nx"; ny: "bn.ny"; nz: "bn.nz"; oa: "bn.oa"; ob: "bn.ob"; oc: "bn.oc"; od: "bn.od"; oe: "bn.oe"; of: "bn.of"; og: "bn.og"; oh: "bn.oh"; oi: "bn.oi"; oj: "bn.oj"; ok: "bn.ok"; ol: "bn.ol"; om: "bn.om"; on: "bn.on"; oo: "bn.oo"; op: "bn.op"; oq: "bn.oq"; or: "bn.or"; os: "bn.os"; ot: "bn.ot"; ou: "bn.ou"; ov: "bn.ov"; ow: "bn.ow"; ox: "bn.ox"; oy: "bn.oy"; oz: "bn.oz"; pa: "bn.pa"; pb: "bn.pb"; pc: "bn.pc"; pd: "bn.pd"; pe: "bn.pe"; pf: "bn.pf"; pg: "bn.pg"; ph: "bn.ph"; pi: "bn.pi"; pj: "bn.pj"; pk: "bn.pk"; pl: "bn.pl"; pm: "bn.pm"; pn: "bn.pn"; po: "bn.po"; pp: "bn.pp"; pq: "bn.pq"; pr: "bn.pr"; ps: "bn.ps"; pt: "bn.pt"; pu: "bn.pu"; pv: "bn.pv"; pw: "bn.pw"; px: "bn.px"; py: "bn.py"; pz: "bn.pz"; qa: "bn.qa"; qb: "bn.qb"; qc: "bn.qc"; qd: "bn.qd"; qe: "bn.qe"; qf: "bn.qf"; qg: "bn.qg"; qh: "bn.qh"; qi: "bn.qi"; qj: "bn.qj"; qk: "bn.qk"; ql: "bn.ql"; qm: "bn.qm"; qn: "bn.qn"; qo: "bn.qo"; qp: "bn.qp"; qq: "bn.qq"; qr: "bn.qr"; qs: "bn.qs"; qt: "bn.qt"; qu: "bn.qu"; qv: "bn.qv"; qw: "bn.qw"; qx: "bn.qx"; qy: "bn.qy"; qz: "bn.qz"; ra: "bn.ra"; rb: "bn.rb"; rc: "bn.rc"; rd: "bn.rd"; re: "bn.re"; rf: "bn.rf"; rg: "bn.rg"; rh: "bn.rh"; ri: "bn.ri"; rj: "bn.rj"; rk: "bn.rk"; rl: "bn.rl"; rm: "bn.rm"; rn: "bn.rn"; ro: "bn.ro"; rp: "bn.rp"; rq: "bn.rq"; rr: "bn.rr"; rs: "bn.rs"; rt: "bn.rt"; ru: "bn.ru"; rv: "bn.rv"; rw: "bn.rw"; rx: "bn.rx"; ry: "bn.ry"; rz: "bn.rz"; sa: "bn.sa"; sb: "bn.sb"; sc: "bn.sc"; sd: "bn.sd"; se: "bn.se"; sf: "bn.sf"; sg: "bn.sg"; sh: "bn.sh"; si: "bn.si"; sj: "bn.sj"; sk: "bn.sk"; sl: "bn.sl"; sm: "bn.sm"; sn: "bn.sn"; so: "bn.so"; sp: "bn.sp"; sq: "bn.sq"; sr: "bn.sr"; ss: "bn.ss"; st: "bn.st"; su: "bn.su"; sv: "bn.sv"; sw: "bn.sw"; sx: "bn.sx"; sy: "bn.sy"; sz: "bn.sz"; ta: "bn.ta"; tb: "bn.tb"; tc: "bn.tc"; td: "bn.td"; te: "bn.te"; tf: "bn.tf"; tg: "bn.tg"; th: "bn.th"; ti: "bn.ti"; tj: "bn.tj"; tk: "bn.tk"; tl: "bn.tl"; tm: "bn.tm"; tn: "bn.tn"; to: "bn.to"; tp: "bn.tp"; tq: "bn.tq"; tr: "bn.tr"; ts: "bn.ts"; tt: "bn.tt"; tu: "bn.tu"; tv: "bn.tv"; tw: "bn.tw"; tx: "bn.tx"; ty: "bn.ty"; tz: "bn.tz"; ua: "bn.ua"; ub: "bn.ub"; uc: "bn.uc"; ud: "bn.ud"; ue: "bn.ue"; uf: "bn.uf"; ug: "bn.ug"; uh: "bn.uh"; ui: "bn.ui"; uj: "bn.uj"; uk: "bn.uk"; ul: "bn.ul"; um: "bn.um"; un: "bn.un"; uo: "bn.uo"; up: "bn.up"; uq: "bn.uq"; ur: "bn.ur"; us: "bn.us"; ut: "bn.ut"; uu: "bn.uu"; uv: "bn.uv"; uw: "bn.uw"; ux: "bn.ux"; uy: "bn.uy"; uz: "bn.uz"; va: "bn.va"; vb: "bn.vb"; vc: "bn.vc"; vd: "bn.vd"; ve: "bn.ve"; vf: "bn.vf"; vg: "bn.vg"; vh: "bn.vh"; vi: "bn.vi"; vj: "bn.vj"; vk: "bn.vk"; vl: "bn.vl"; vm: "bn.vm"; vn: "bn.vn"; vo: "bn.vo"; vp: "bn.vp"; vq: "bn.vq"; vr: "bn.vr"; vs: "bn.vs"; vt: "bn.vt"; vu: "bn.vu"; vv: "bn.vv"; vw: "bn.vw"; vx: "bn.vx"; vy: "bn.vy"; vz: "bn.vz"; wa: "bn.wa"; wb: "bn.wb"; wc: "bn.wc"; wd: "bn.wd"; we: "bn.we"; wf: "bn.wf"; wg: "bn.wg"; wh: "bn.wh"; wi: "bn.wi"; wj: "bn.wj"; wk: "bn.wk"; wl: "bn.wl"; wm: "bn.wm"; wn: "bn.wn"; wo: "bn.wo"; wp: "bn.wp"; wq: "bn.wq"; wr: "bn.wr"; ws: "bn.ws"; wt: "bn.wt"; wu: "bn.wu"; wv: "bn.wv"; ww: "bn.ww"; wx: "bn.wx"; wy: "bn.wy"; wz: "bn.wz"; xa: "bn.xa"; xb: "bn.xb"; xc: "bn.xc"; xd: "bn.xd"; xe: "bn.xe"; xf: "bn.xf"; xg: "bn.xg"; xh: "bn.xh"; xi: "bn.xi"; xj: "bn.xj"; xk: "bn.xk"; xl: "bn.xl"; xm: "bn.xm"; xn: "bn.xn"; xo: "bn.xo"; xp: "bn.xp"; xq: "bn.xq"; xr: "bn.xr"; xs: "bn.xs"; xt: "bn.xt"; xu: "bn.xu"; xv: "bn.xv"; xw: "bn.xw"; xx: "bn.xx"; xy: "bn.xy"; xz: "bn.xz"; ya: "bn.ya"; yb: "bn.yb"; yc: "bn.yc"; yd: "bn.yd"; ye: "bn.ye"; yf: "bn.yf"; yg: "bn.yg"; yh: "bn.yh"; yi: "bn.yi"; yj: "bn.yj"; yk: "bn.yk"; yl: "bn.yl"; ym: "bn.ym"; yn: "bn.yn"; yo: "bn.yo"; yp: "bn.yp"; yq: "bn.yq"; yr: "bn.yr"; ys: "bn.ys"; yt: "bn.yt"; yu: "bn.yu"; yv: "bn.yv"; yw: "bn.yw"; yx: "bn.yx"; yy: "bn.yy"; yz: "bn.yz"; za: "bn.za"; zb: "bn.zb"; zc: "bn.zc"; zd: "bn.zd"; ze: "bn.ze"; zf: "bn.zf"; zg: "bn.zg"; zh: "bn.zh"; zi: "bn.zi"; zj: "bn.zj"; zk: "bn.zk"; zl: "bn.zl"; zm: "bn.zm"; zn: "bn.zn"; zo: "bn.zo"; zp: "bn.zp"; zq: "bn.zq"; zr: "bn.zr"; zs: "bn.zs"; zt: "bn.zt"; zu: "bn.zu"; zv: "bn.zv"; zw: "bn.zw"; zx: "bn.zx"; zy: "bn.zy"; zz: "bn.zz"; }; bo: { aa: "bo.aa"; ab: "bo.ab"; ac: "bo.ac"; ad: "bo.ad"; ae: "bo.ae"; af: "bo.af"; ag: "bo.ag"; ah: "bo.ah"; ai: "bo.ai"; aj: "bo.aj"; ak: "bo.ak"; al: "bo.al"; am: "bo.am"; an: "bo.an"; ao: "bo.ao"; ap: "bo.ap"; aq: "bo.aq"; ar: "bo.ar"; as: "bo.as"; at: "bo.at"; au: "bo.au"; av: "bo.av"; aw: "bo.aw"; ax: "bo.ax"; ay: "bo.ay"; az: "bo.az"; ba: "bo.ba"; bb: "bo.bb"; bc: "bo.bc"; bd: "bo.bd"; be: "bo.be"; bf: "bo.bf"; bg: "bo.bg"; bh: "bo.bh"; bi: "bo.bi"; bj: "bo.bj"; bk: "bo.bk"; bl: "bo.bl"; bm: "bo.bm"; bn: "bo.bn"; bo: "bo.bo"; bp: "bo.bp"; bq: "bo.bq"; br: "bo.br"; bs: "bo.bs"; bt: "bo.bt"; bu: "bo.bu"; bv: "bo.bv"; bw: "bo.bw"; bx: "bo.bx"; by: "bo.by"; bz: "bo.bz"; ca: "bo.ca"; cb: "bo.cb"; cc: "bo.cc"; cd: "bo.cd"; ce: "bo.ce"; cf: "bo.cf"; cg: "bo.cg"; ch: "bo.ch"; ci: "bo.ci"; cj: "bo.cj"; ck: "bo.ck"; cl: "bo.cl"; cm: "bo.cm"; cn: "bo.cn"; co: "bo.co"; cp: "bo.cp"; cq: "bo.cq"; cr: "bo.cr"; cs: "bo.cs"; ct: "bo.ct"; cu: "bo.cu"; cv: "bo.cv"; cw: "bo.cw"; cx: "bo.cx"; cy: "bo.cy"; cz: "bo.cz"; da: "bo.da"; db: "bo.db"; dc: "bo.dc"; dd: "bo.dd"; de: "bo.de"; df: "bo.df"; dg: "bo.dg"; dh: "bo.dh"; di: "bo.di"; dj: "bo.dj"; dk: "bo.dk"; dl: "bo.dl"; dm: "bo.dm"; dn: "bo.dn"; do: "bo.do"; dp: "bo.dp"; dq: "bo.dq"; dr: "bo.dr"; ds: "bo.ds"; dt: "bo.dt"; du: "bo.du"; dv: "bo.dv"; dw: "bo.dw"; dx: "bo.dx"; dy: "bo.dy"; dz: "bo.dz"; ea: "bo.ea"; eb: "bo.eb"; ec: "bo.ec"; ed: "bo.ed"; ee: "bo.ee"; ef: "bo.ef"; eg: "bo.eg"; eh: "bo.eh"; ei: "bo.ei"; ej: "bo.ej"; ek: "bo.ek"; el: "bo.el"; em: "bo.em"; en: "bo.en"; eo: "bo.eo"; ep: "bo.ep"; eq: "bo.eq"; er: "bo.er"; es: "bo.es"; et: "bo.et"; eu: "bo.eu"; ev: "bo.ev"; ew: "bo.ew"; ex: "bo.ex"; ey: "bo.ey"; ez: "bo.ez"; fa: "bo.fa"; fb: "bo.fb"; fc: "bo.fc"; fd: "bo.fd"; fe: "bo.fe"; ff: "bo.ff"; fg: "bo.fg"; fh: "bo.fh"; fi: "bo.fi"; fj: "bo.fj"; fk: "bo.fk"; fl: "bo.fl"; fm: "bo.fm"; fn: "bo.fn"; fo: "bo.fo"; fp: "bo.fp"; fq: "bo.fq"; fr: "bo.fr"; fs: "bo.fs"; ft: "bo.ft"; fu: "bo.fu"; fv: "bo.fv"; fw: "bo.fw"; fx: "bo.fx"; fy: "bo.fy"; fz: "bo.fz"; ga: "bo.ga"; gb: "bo.gb"; gc: "bo.gc"; gd: "bo.gd"; ge: "bo.ge"; gf: "bo.gf"; gg: "bo.gg"; gh: "bo.gh"; gi: "bo.gi"; gj: "bo.gj"; gk: "bo.gk"; gl: "bo.gl"; gm: "bo.gm"; gn: "bo.gn"; go: "bo.go"; gp: "bo.gp"; gq: "bo.gq"; gr: "bo.gr"; gs: "bo.gs"; gt: "bo.gt"; gu: "bo.gu"; gv: "bo.gv"; gw: "bo.gw"; gx: "bo.gx"; gy: "bo.gy"; gz: "bo.gz"; ha: "bo.ha"; hb: "bo.hb"; hc: "bo.hc"; hd: "bo.hd"; he: "bo.he"; hf: "bo.hf"; hg: "bo.hg"; hh: "bo.hh"; hi: "bo.hi"; hj: "bo.hj"; hk: "bo.hk"; hl: "bo.hl"; hm: "bo.hm"; hn: "bo.hn"; ho: "bo.ho"; hp: "bo.hp"; hq: "bo.hq"; hr: "bo.hr"; hs: "bo.hs"; ht: "bo.ht"; hu: "bo.hu"; hv: "bo.hv"; hw: "bo.hw"; hx: "bo.hx"; hy: "bo.hy"; hz: "bo.hz"; ia: "bo.ia"; ib: "bo.ib"; ic: "bo.ic"; id: "bo.id"; ie: "bo.ie"; if: "bo.if"; ig: "bo.ig"; ih: "bo.ih"; ii: "bo.ii"; ij: "bo.ij"; ik: "bo.ik"; il: "bo.il"; im: "bo.im"; in: "bo.in"; io: "bo.io"; ip: "bo.ip"; iq: "bo.iq"; ir: "bo.ir"; is: "bo.is"; it: "bo.it"; iu: "bo.iu"; iv: "bo.iv"; iw: "bo.iw"; ix: "bo.ix"; iy: "bo.iy"; iz: "bo.iz"; ja: "bo.ja"; jb: "bo.jb"; jc: "bo.jc"; jd: "bo.jd"; je: "bo.je"; jf: "bo.jf"; jg: "bo.jg"; jh: "bo.jh"; ji: "bo.ji"; jj: "bo.jj"; jk: "bo.jk"; jl: "bo.jl"; jm: "bo.jm"; jn: "bo.jn"; jo: "bo.jo"; jp: "bo.jp"; jq: "bo.jq"; jr: "bo.jr"; js: "bo.js"; jt: "bo.jt"; ju: "bo.ju"; jv: "bo.jv"; jw: "bo.jw"; jx: "bo.jx"; jy: "bo.jy"; jz: "bo.jz"; ka: "bo.ka"; kb: "bo.kb"; kc: "bo.kc"; kd: "bo.kd"; ke: "bo.ke"; kf: "bo.kf"; kg: "bo.kg"; kh: "bo.kh"; ki: "bo.ki"; kj: "bo.kj"; kk: "bo.kk"; kl: "bo.kl"; km: "bo.km"; kn: "bo.kn"; ko: "bo.ko"; kp: "bo.kp"; kq: "bo.kq"; kr: "bo.kr"; ks: "bo.ks"; kt: "bo.kt"; ku: "bo.ku"; kv: "bo.kv"; kw: "bo.kw"; kx: "bo.kx"; ky: "bo.ky"; kz: "bo.kz"; la: "bo.la"; lb: "bo.lb"; lc: "bo.lc"; ld: "bo.ld"; le: "bo.le"; lf: "bo.lf"; lg: "bo.lg"; lh: "bo.lh"; li: "bo.li"; lj: "bo.lj"; lk: "bo.lk"; ll: "bo.ll"; lm: "bo.lm"; ln: "bo.ln"; lo: "bo.lo"; lp: "bo.lp"; lq: "bo.lq"; lr: "bo.lr"; ls: "bo.ls"; lt: "bo.lt"; lu: "bo.lu"; lv: "bo.lv"; lw: "bo.lw"; lx: "bo.lx"; ly: "bo.ly"; lz: "bo.lz"; ma: "bo.ma"; mb: "bo.mb"; mc: "bo.mc"; md: "bo.md"; me: "bo.me"; mf: "bo.mf"; mg: "bo.mg"; mh: "bo.mh"; mi: "bo.mi"; mj: "bo.mj"; mk: "bo.mk"; ml: "bo.ml"; mm: "bo.mm"; mn: "bo.mn"; mo: "bo.mo"; mp: "bo.mp"; mq: "bo.mq"; mr: "bo.mr"; ms: "bo.ms"; mt: "bo.mt"; mu: "bo.mu"; mv: "bo.mv"; mw: "bo.mw"; mx: "bo.mx"; my: "bo.my"; mz: "bo.mz"; na: "bo.na"; nb: "bo.nb"; nc: "bo.nc"; nd: "bo.nd"; ne: "bo.ne"; nf: "bo.nf"; ng: "bo.ng"; nh: "bo.nh"; ni: "bo.ni"; nj: "bo.nj"; nk: "bo.nk"; nl: "bo.nl"; nm: "bo.nm"; nn: "bo.nn"; no: "bo.no"; np: "bo.np"; nq: "bo.nq"; nr: "bo.nr"; ns: "bo.ns"; nt: "bo.nt"; nu: "bo.nu"; nv: "bo.nv"; nw: "bo.nw"; nx: "bo.nx"; ny: "bo.ny"; nz: "bo.nz"; oa: "bo.oa"; ob: "bo.ob"; oc: "bo.oc"; od: "bo.od"; oe: "bo.oe"; of: "bo.of"; og: "bo.og"; oh: "bo.oh"; oi: "bo.oi"; oj: "bo.oj"; ok: "bo.ok"; ol: "bo.ol"; om: "bo.om"; on: "bo.on"; oo: "bo.oo"; op: "bo.op"; oq: "bo.oq"; or: "bo.or"; os: "bo.os"; ot: "bo.ot"; ou: "bo.ou"; ov: "bo.ov"; ow: "bo.ow"; ox: "bo.ox"; oy: "bo.oy"; oz: "bo.oz"; pa: "bo.pa"; pb: "bo.pb"; pc: "bo.pc"; pd: "bo.pd"; pe: "bo.pe"; pf: "bo.pf"; pg: "bo.pg"; ph: "bo.ph"; pi: "bo.pi"; pj: "bo.pj"; pk: "bo.pk"; pl: "bo.pl"; pm: "bo.pm"; pn: "bo.pn"; po: "bo.po"; pp: "bo.pp"; pq: "bo.pq"; pr: "bo.pr"; ps: "bo.ps"; pt: "bo.pt"; pu: "bo.pu"; pv: "bo.pv"; pw: "bo.pw"; px: "bo.px"; py: "bo.py"; pz: "bo.pz"; qa: "bo.qa"; qb: "bo.qb"; qc: "bo.qc"; qd: "bo.qd"; qe: "bo.qe"; qf: "bo.qf"; qg: "bo.qg"; qh: "bo.qh"; qi: "bo.qi"; qj: "bo.qj"; qk: "bo.qk"; ql: "bo.ql"; qm: "bo.qm"; qn: "bo.qn"; qo: "bo.qo"; qp: "bo.qp"; qq: "bo.qq"; qr: "bo.qr"; qs: "bo.qs"; qt: "bo.qt"; qu: "bo.qu"; qv: "bo.qv"; qw: "bo.qw"; qx: "bo.qx"; qy: "bo.qy"; qz: "bo.qz"; ra: "bo.ra"; rb: "bo.rb"; rc: "bo.rc"; rd: "bo.rd"; re: "bo.re"; rf: "bo.rf"; rg: "bo.rg"; rh: "bo.rh"; ri: "bo.ri"; rj: "bo.rj"; rk: "bo.rk"; rl: "bo.rl"; rm: "bo.rm"; rn: "bo.rn"; ro: "bo.ro"; rp: "bo.rp"; rq: "bo.rq"; rr: "bo.rr"; rs: "bo.rs"; rt: "bo.rt"; ru: "bo.ru"; rv: "bo.rv"; rw: "bo.rw"; rx: "bo.rx"; ry: "bo.ry"; rz: "bo.rz"; sa: "bo.sa"; sb: "bo.sb"; sc: "bo.sc"; sd: "bo.sd"; se: "bo.se"; sf: "bo.sf"; sg: "bo.sg"; sh: "bo.sh"; si: "bo.si"; sj: "bo.sj"; sk: "bo.sk"; sl: "bo.sl"; sm: "bo.sm"; sn: "bo.sn"; so: "bo.so"; sp: "bo.sp"; sq: "bo.sq"; sr: "bo.sr"; ss: "bo.ss"; st: "bo.st"; su: "bo.su"; sv: "bo.sv"; sw: "bo.sw"; sx: "bo.sx"; sy: "bo.sy"; sz: "bo.sz"; ta: "bo.ta"; tb: "bo.tb"; tc: "bo.tc"; td: "bo.td"; te: "bo.te"; tf: "bo.tf"; tg: "bo.tg"; th: "bo.th"; ti: "bo.ti"; tj: "bo.tj"; tk: "bo.tk"; tl: "bo.tl"; tm: "bo.tm"; tn: "bo.tn"; to: "bo.to"; tp: "bo.tp"; tq: "bo.tq"; tr: "bo.tr"; ts: "bo.ts"; tt: "bo.tt"; tu: "bo.tu"; tv: "bo.tv"; tw: "bo.tw"; tx: "bo.tx"; ty: "bo.ty"; tz: "bo.tz"; ua: "bo.ua"; ub: "bo.ub"; uc: "bo.uc"; ud: "bo.ud"; ue: "bo.ue"; uf: "bo.uf"; ug: "bo.ug"; uh: "bo.uh"; ui: "bo.ui"; uj: "bo.uj"; uk: "bo.uk"; ul: "bo.ul"; um: "bo.um"; un: "bo.un"; uo: "bo.uo"; up: "bo.up"; uq: "bo.uq"; ur: "bo.ur"; us: "bo.us"; ut: "bo.ut"; uu: "bo.uu"; uv: "bo.uv"; uw: "bo.uw"; ux: "bo.ux"; uy: "bo.uy"; uz: "bo.uz"; va: "bo.va"; vb: "bo.vb"; vc: "bo.vc"; vd: "bo.vd"; ve: "bo.ve"; vf: "bo.vf"; vg: "bo.vg"; vh: "bo.vh"; vi: "bo.vi"; vj: "bo.vj"; vk: "bo.vk"; vl: "bo.vl"; vm: "bo.vm"; vn: "bo.vn"; vo: "bo.vo"; vp: "bo.vp"; vq: "bo.vq"; vr: "bo.vr"; vs: "bo.vs"; vt: "bo.vt"; vu: "bo.vu"; vv: "bo.vv"; vw: "bo.vw"; vx: "bo.vx"; vy: "bo.vy"; vz: "bo.vz"; wa: "bo.wa"; wb: "bo.wb"; wc: "bo.wc"; wd: "bo.wd"; we: "bo.we"; wf: "bo.wf"; wg: "bo.wg"; wh: "bo.wh"; wi: "bo.wi"; wj: "bo.wj"; wk: "bo.wk"; wl: "bo.wl"; wm: "bo.wm"; wn: "bo.wn"; wo: "bo.wo"; wp: "bo.wp"; wq: "bo.wq"; wr: "bo.wr"; ws: "bo.ws"; wt: "bo.wt"; wu: "bo.wu"; wv: "bo.wv"; ww: "bo.ww"; wx: "bo.wx"; wy: "bo.wy"; wz: "bo.wz"; xa: "bo.xa"; xb: "bo.xb"; xc: "bo.xc"; xd: "bo.xd"; xe: "bo.xe"; xf: "bo.xf"; xg: "bo.xg"; xh: "bo.xh"; xi: "bo.xi"; xj: "bo.xj"; xk: "bo.xk"; xl: "bo.xl"; xm: "bo.xm"; xn: "bo.xn"; xo: "bo.xo"; xp: "bo.xp"; xq: "bo.xq"; xr: "bo.xr"; xs: "bo.xs"; xt: "bo.xt"; xu: "bo.xu"; xv: "bo.xv"; xw: "bo.xw"; xx: "bo.xx"; xy: "bo.xy"; xz: "bo.xz"; ya: "bo.ya"; yb: "bo.yb"; yc: "bo.yc"; yd: "bo.yd"; ye: "bo.ye"; yf: "bo.yf"; yg: "bo.yg"; yh: "bo.yh"; yi: "bo.yi"; yj: "bo.yj"; yk: "bo.yk"; yl: "bo.yl"; ym: "bo.ym"; yn: "bo.yn"; yo: "bo.yo"; yp: "bo.yp"; yq: "bo.yq"; yr: "bo.yr"; ys: "bo.ys"; yt: "bo.yt"; yu: "bo.yu"; yv: "bo.yv"; yw: "bo.yw"; yx: "bo.yx"; yy: "bo.yy"; yz: "bo.yz"; za: "bo.za"; zb: "bo.zb"; zc: "bo.zc"; zd: "bo.zd"; ze: "bo.ze"; zf: "bo.zf"; zg: "bo.zg"; zh: "bo.zh"; zi: "bo.zi"; zj: "bo.zj"; zk: "bo.zk"; zl: "bo.zl"; zm: "bo.zm"; zn: "bo.zn"; zo: "bo.zo"; zp: "bo.zp"; zq: "bo.zq"; zr: "bo.zr"; zs: "bo.zs"; zt: "bo.zt"; zu: "bo.zu"; zv: "bo.zv"; zw: "bo.zw"; zx: "bo.zx"; zy: "bo.zy"; zz: "bo.zz"; }; bp: { aa: "bp.aa"; ab: "bp.ab"; ac: "bp.ac"; ad: "bp.ad"; ae: "bp.ae"; af: "bp.af"; ag: "bp.ag"; ah: "bp.ah"; ai: "bp.ai"; aj: "bp.aj"; ak: "bp.ak"; al: "bp.al"; am: "bp.am"; an: "bp.an"; ao: "bp.ao"; ap: "bp.ap"; aq: "bp.aq"; ar: "bp.ar"; as: "bp.as"; at: "bp.at"; au: "bp.au"; av: "bp.av"; aw: "bp.aw"; ax: "bp.ax"; ay: "bp.ay"; az: "bp.az"; ba: "bp.ba"; bb: "bp.bb"; bc: "bp.bc"; bd: "bp.bd"; be: "bp.be"; bf: "bp.bf"; bg: "bp.bg"; bh: "bp.bh"; bi: "bp.bi"; bj: "bp.bj"; bk: "bp.bk"; bl: "bp.bl"; bm: "bp.bm"; bn: "bp.bn"; bo: "bp.bo"; bp: "bp.bp"; bq: "bp.bq"; br: "bp.br"; bs: "bp.bs"; bt: "bp.bt"; bu: "bp.bu"; bv: "bp.bv"; bw: "bp.bw"; bx: "bp.bx"; by: "bp.by"; bz: "bp.bz"; ca: "bp.ca"; cb: "bp.cb"; cc: "bp.cc"; cd: "bp.cd"; ce: "bp.ce"; cf: "bp.cf"; cg: "bp.cg"; ch: "bp.ch"; ci: "bp.ci"; cj: "bp.cj"; ck: "bp.ck"; cl: "bp.cl"; cm: "bp.cm"; cn: "bp.cn"; co: "bp.co"; cp: "bp.cp"; cq: "bp.cq"; cr: "bp.cr"; cs: "bp.cs"; ct: "bp.ct"; cu: "bp.cu"; cv: "bp.cv"; cw: "bp.cw"; cx: "bp.cx"; cy: "bp.cy"; cz: "bp.cz"; da: "bp.da"; db: "bp.db"; dc: "bp.dc"; dd: "bp.dd"; de: "bp.de"; df: "bp.df"; dg: "bp.dg"; dh: "bp.dh"; di: "bp.di"; dj: "bp.dj"; dk: "bp.dk"; dl: "bp.dl"; dm: "bp.dm"; dn: "bp.dn"; do: "bp.do"; dp: "bp.dp"; dq: "bp.dq"; dr: "bp.dr"; ds: "bp.ds"; dt: "bp.dt"; du: "bp.du"; dv: "bp.dv"; dw: "bp.dw"; dx: "bp.dx"; dy: "bp.dy"; dz: "bp.dz"; ea: "bp.ea"; eb: "bp.eb"; ec: "bp.ec"; ed: "bp.ed"; ee: "bp.ee"; ef: "bp.ef"; eg: "bp.eg"; eh: "bp.eh"; ei: "bp.ei"; ej: "bp.ej"; ek: "bp.ek"; el: "bp.el"; em: "bp.em"; en: "bp.en"; eo: "bp.eo"; ep: "bp.ep"; eq: "bp.eq"; er: "bp.er"; es: "bp.es"; et: "bp.et"; eu: "bp.eu"; ev: "bp.ev"; ew: "bp.ew"; ex: "bp.ex"; ey: "bp.ey"; ez: "bp.ez"; fa: "bp.fa"; fb: "bp.fb"; fc: "bp.fc"; fd: "bp.fd"; fe: "bp.fe"; ff: "bp.ff"; fg: "bp.fg"; fh: "bp.fh"; fi: "bp.fi"; fj: "bp.fj"; fk: "bp.fk"; fl: "bp.fl"; fm: "bp.fm"; fn: "bp.fn"; fo: "bp.fo"; fp: "bp.fp"; fq: "bp.fq"; fr: "bp.fr"; fs: "bp.fs"; ft: "bp.ft"; fu: "bp.fu"; fv: "bp.fv"; fw: "bp.fw"; fx: "bp.fx"; fy: "bp.fy"; fz: "bp.fz"; ga: "bp.ga"; gb: "bp.gb"; gc: "bp.gc"; gd: "bp.gd"; ge: "bp.ge"; gf: "bp.gf"; gg: "bp.gg"; gh: "bp.gh"; gi: "bp.gi"; gj: "bp.gj"; gk: "bp.gk"; gl: "bp.gl"; gm: "bp.gm"; gn: "bp.gn"; go: "bp.go"; gp: "bp.gp"; gq: "bp.gq"; gr: "bp.gr"; gs: "bp.gs"; gt: "bp.gt"; gu: "bp.gu"; gv: "bp.gv"; gw: "bp.gw"; gx: "bp.gx"; gy: "bp.gy"; gz: "bp.gz"; ha: "bp.ha"; hb: "bp.hb"; hc: "bp.hc"; hd: "bp.hd"; he: "bp.he"; hf: "bp.hf"; hg: "bp.hg"; hh: "bp.hh"; hi: "bp.hi"; hj: "bp.hj"; hk: "bp.hk"; hl: "bp.hl"; hm: "bp.hm"; hn: "bp.hn"; ho: "bp.ho"; hp: "bp.hp"; hq: "bp.hq"; hr: "bp.hr"; hs: "bp.hs"; ht: "bp.ht"; hu: "bp.hu"; hv: "bp.hv"; hw: "bp.hw"; hx: "bp.hx"; hy: "bp.hy"; hz: "bp.hz"; ia: "bp.ia"; ib: "bp.ib"; ic: "bp.ic"; id: "bp.id"; ie: "bp.ie"; if: "bp.if"; ig: "bp.ig"; ih: "bp.ih"; ii: "bp.ii"; ij: "bp.ij"; ik: "bp.ik"; il: "bp.il"; im: "bp.im"; in: "bp.in"; io: "bp.io"; ip: "bp.ip"; iq: "bp.iq"; ir: "bp.ir"; is: "bp.is"; it: "bp.it"; iu: "bp.iu"; iv: "bp.iv"; iw: "bp.iw"; ix: "bp.ix"; iy: "bp.iy"; iz: "bp.iz"; ja: "bp.ja"; jb: "bp.jb"; jc: "bp.jc"; jd: "bp.jd"; je: "bp.je"; jf: "bp.jf"; jg: "bp.jg"; jh: "bp.jh"; ji: "bp.ji"; jj: "bp.jj"; jk: "bp.jk"; jl: "bp.jl"; jm: "bp.jm"; jn: "bp.jn"; jo: "bp.jo"; jp: "bp.jp"; jq: "bp.jq"; jr: "bp.jr"; js: "bp.js"; jt: "bp.jt"; ju: "bp.ju"; jv: "bp.jv"; jw: "bp.jw"; jx: "bp.jx"; jy: "bp.jy"; jz: "bp.jz"; ka: "bp.ka"; kb: "bp.kb"; kc: "bp.kc"; kd: "bp.kd"; ke: "bp.ke"; kf: "bp.kf"; kg: "bp.kg"; kh: "bp.kh"; ki: "bp.ki"; kj: "bp.kj"; kk: "bp.kk"; kl: "bp.kl"; km: "bp.km"; kn: "bp.kn"; ko: "bp.ko"; kp: "bp.kp"; kq: "bp.kq"; kr: "bp.kr"; ks: "bp.ks"; kt: "bp.kt"; ku: "bp.ku"; kv: "bp.kv"; kw: "bp.kw"; kx: "bp.kx"; ky: "bp.ky"; kz: "bp.kz"; la: "bp.la"; lb: "bp.lb"; lc: "bp.lc"; ld: "bp.ld"; le: "bp.le"; lf: "bp.lf"; lg: "bp.lg"; lh: "bp.lh"; li: "bp.li"; lj: "bp.lj"; lk: "bp.lk"; ll: "bp.ll"; lm: "bp.lm"; ln: "bp.ln"; lo: "bp.lo"; lp: "bp.lp"; lq: "bp.lq"; lr: "bp.lr"; ls: "bp.ls"; lt: "bp.lt"; lu: "bp.lu"; lv: "bp.lv"; lw: "bp.lw"; lx: "bp.lx"; ly: "bp.ly"; lz: "bp.lz"; ma: "bp.ma"; mb: "bp.mb"; mc: "bp.mc"; md: "bp.md"; me: "bp.me"; mf: "bp.mf"; mg: "bp.mg"; mh: "bp.mh"; mi: "bp.mi"; mj: "bp.mj"; mk: "bp.mk"; ml: "bp.ml"; mm: "bp.mm"; mn: "bp.mn"; mo: "bp.mo"; mp: "bp.mp"; mq: "bp.mq"; mr: "bp.mr"; ms: "bp.ms"; mt: "bp.mt"; mu: "bp.mu"; mv: "bp.mv"; mw: "bp.mw"; mx: "bp.mx"; my: "bp.my"; mz: "bp.mz"; na: "bp.na"; nb: "bp.nb"; nc: "bp.nc"; nd: "bp.nd"; ne: "bp.ne"; nf: "bp.nf"; ng: "bp.ng"; nh: "bp.nh"; ni: "bp.ni"; nj: "bp.nj"; nk: "bp.nk"; nl: "bp.nl"; nm: "bp.nm"; nn: "bp.nn"; no: "bp.no"; np: "bp.np"; nq: "bp.nq"; nr: "bp.nr"; ns: "bp.ns"; nt: "bp.nt"; nu: "bp.nu"; nv: "bp.nv"; nw: "bp.nw"; nx: "bp.nx"; ny: "bp.ny"; nz: "bp.nz"; oa: "bp.oa"; ob: "bp.ob"; oc: "bp.oc"; od: "bp.od"; oe: "bp.oe"; of: "bp.of"; og: "bp.og"; oh: "bp.oh"; oi: "bp.oi"; oj: "bp.oj"; ok: "bp.ok"; ol: "bp.ol"; om: "bp.om"; on: "bp.on"; oo: "bp.oo"; op: "bp.op"; oq: "bp.oq"; or: "bp.or"; os: "bp.os"; ot: "bp.ot"; ou: "bp.ou"; ov: "bp.ov"; ow: "bp.ow"; ox: "bp.ox"; oy: "bp.oy"; oz: "bp.oz"; pa: "bp.pa"; pb: "bp.pb"; pc: "bp.pc"; pd: "bp.pd"; pe: "bp.pe"; pf: "bp.pf"; pg: "bp.pg"; ph: "bp.ph"; pi: "bp.pi"; pj: "bp.pj"; pk: "bp.pk"; pl: "bp.pl"; pm: "bp.pm"; pn: "bp.pn"; po: "bp.po"; pp: "bp.pp"; pq: "bp.pq"; pr: "bp.pr"; ps: "bp.ps"; pt: "bp.pt"; pu: "bp.pu"; pv: "bp.pv"; pw: "bp.pw"; px: "bp.px"; py: "bp.py"; pz: "bp.pz"; qa: "bp.qa"; qb: "bp.qb"; qc: "bp.qc"; qd: "bp.qd"; qe: "bp.qe"; qf: "bp.qf"; qg: "bp.qg"; qh: "bp.qh"; qi: "bp.qi"; qj: "bp.qj"; qk: "bp.qk"; ql: "bp.ql"; qm: "bp.qm"; qn: "bp.qn"; qo: "bp.qo"; qp: "bp.qp"; qq: "bp.qq"; qr: "bp.qr"; qs: "bp.qs"; qt: "bp.qt"; qu: "bp.qu"; qv: "bp.qv"; qw: "bp.qw"; qx: "bp.qx"; qy: "bp.qy"; qz: "bp.qz"; ra: "bp.ra"; rb: "bp.rb"; rc: "bp.rc"; rd: "bp.rd"; re: "bp.re"; rf: "bp.rf"; rg: "bp.rg"; rh: "bp.rh"; ri: "bp.ri"; rj: "bp.rj"; rk: "bp.rk"; rl: "bp.rl"; rm: "bp.rm"; rn: "bp.rn"; ro: "bp.ro"; rp: "bp.rp"; rq: "bp.rq"; rr: "bp.rr"; rs: "bp.rs"; rt: "bp.rt"; ru: "bp.ru"; rv: "bp.rv"; rw: "bp.rw"; rx: "bp.rx"; ry: "bp.ry"; rz: "bp.rz"; sa: "bp.sa"; sb: "bp.sb"; sc: "bp.sc"; sd: "bp.sd"; se: "bp.se"; sf: "bp.sf"; sg: "bp.sg"; sh: "bp.sh"; si: "bp.si"; sj: "bp.sj"; sk: "bp.sk"; sl: "bp.sl"; sm: "bp.sm"; sn: "bp.sn"; so: "bp.so"; sp: "bp.sp"; sq: "bp.sq"; sr: "bp.sr"; ss: "bp.ss"; st: "bp.st"; su: "bp.su"; sv: "bp.sv"; sw: "bp.sw"; sx: "bp.sx"; sy: "bp.sy"; sz: "bp.sz"; ta: "bp.ta"; tb: "bp.tb"; tc: "bp.tc"; td: "bp.td"; te: "bp.te"; tf: "bp.tf"; tg: "bp.tg"; th: "bp.th"; ti: "bp.ti"; tj: "bp.tj"; tk: "bp.tk"; tl: "bp.tl"; tm: "bp.tm"; tn: "bp.tn"; to: "bp.to"; tp: "bp.tp"; tq: "bp.tq"; tr: "bp.tr"; ts: "bp.ts"; tt: "bp.tt"; tu: "bp.tu"; tv: "bp.tv"; tw: "bp.tw"; tx: "bp.tx"; ty: "bp.ty"; tz: "bp.tz"; ua: "bp.ua"; ub: "bp.ub"; uc: "bp.uc"; ud: "bp.ud"; ue: "bp.ue"; uf: "bp.uf"; ug: "bp.ug"; uh: "bp.uh"; ui: "bp.ui"; uj: "bp.uj"; uk: "bp.uk"; ul: "bp.ul"; um: "bp.um"; un: "bp.un"; uo: "bp.uo"; up: "bp.up"; uq: "bp.uq"; ur: "bp.ur"; us: "bp.us"; ut: "bp.ut"; uu: "bp.uu"; uv: "bp.uv"; uw: "bp.uw"; ux: "bp.ux"; uy: "bp.uy"; uz: "bp.uz"; va: "bp.va"; vb: "bp.vb"; vc: "bp.vc"; vd: "bp.vd"; ve: "bp.ve"; vf: "bp.vf"; vg: "bp.vg"; vh: "bp.vh"; vi: "bp.vi"; vj: "bp.vj"; vk: "bp.vk"; vl: "bp.vl"; vm: "bp.vm"; vn: "bp.vn"; vo: "bp.vo"; vp: "bp.vp"; vq: "bp.vq"; vr: "bp.vr"; vs: "bp.vs"; vt: "bp.vt"; vu: "bp.vu"; vv: "bp.vv"; vw: "bp.vw"; vx: "bp.vx"; vy: "bp.vy"; vz: "bp.vz"; wa: "bp.wa"; wb: "bp.wb"; wc: "bp.wc"; wd: "bp.wd"; we: "bp.we"; wf: "bp.wf"; wg: "bp.wg"; wh: "bp.wh"; wi: "bp.wi"; wj: "bp.wj"; wk: "bp.wk"; wl: "bp.wl"; wm: "bp.wm"; wn: "bp.wn"; wo: "bp.wo"; wp: "bp.wp"; wq: "bp.wq"; wr: "bp.wr"; ws: "bp.ws"; wt: "bp.wt"; wu: "bp.wu"; wv: "bp.wv"; ww: "bp.ww"; wx: "bp.wx"; wy: "bp.wy"; wz: "bp.wz"; xa: "bp.xa"; xb: "bp.xb"; xc: "bp.xc"; xd: "bp.xd"; xe: "bp.xe"; xf: "bp.xf"; xg: "bp.xg"; xh: "bp.xh"; xi: "bp.xi"; xj: "bp.xj"; xk: "bp.xk"; xl: "bp.xl"; xm: "bp.xm"; xn: "bp.xn"; xo: "bp.xo"; xp: "bp.xp"; xq: "bp.xq"; xr: "bp.xr"; xs: "bp.xs"; xt: "bp.xt"; xu: "bp.xu"; xv: "bp.xv"; xw: "bp.xw"; xx: "bp.xx"; xy: "bp.xy"; xz: "bp.xz"; ya: "bp.ya"; yb: "bp.yb"; yc: "bp.yc"; yd: "bp.yd"; ye: "bp.ye"; yf: "bp.yf"; yg: "bp.yg"; yh: "bp.yh"; yi: "bp.yi"; yj: "bp.yj"; yk: "bp.yk"; yl: "bp.yl"; ym: "bp.ym"; yn: "bp.yn"; yo: "bp.yo"; yp: "bp.yp"; yq: "bp.yq"; yr: "bp.yr"; ys: "bp.ys"; yt: "bp.yt"; yu: "bp.yu"; yv: "bp.yv"; yw: "bp.yw"; yx: "bp.yx"; yy: "bp.yy"; yz: "bp.yz"; za: "bp.za"; zb: "bp.zb"; zc: "bp.zc"; zd: "bp.zd"; ze: "bp.ze"; zf: "bp.zf"; zg: "bp.zg"; zh: "bp.zh"; zi: "bp.zi"; zj: "bp.zj"; zk: "bp.zk"; zl: "bp.zl"; zm: "bp.zm"; zn: "bp.zn"; zo: "bp.zo"; zp: "bp.zp"; zq: "bp.zq"; zr: "bp.zr"; zs: "bp.zs"; zt: "bp.zt"; zu: "bp.zu"; zv: "bp.zv"; zw: "bp.zw"; zx: "bp.zx"; zy: "bp.zy"; zz: "bp.zz"; }; bq: { aa: "bq.aa"; ab: "bq.ab"; ac: "bq.ac"; ad: "bq.ad"; ae: "bq.ae"; af: "bq.af"; ag: "bq.ag"; ah: "bq.ah"; ai: "bq.ai"; aj: "bq.aj"; ak: "bq.ak"; al: "bq.al"; am: "bq.am"; an: "bq.an"; ao: "bq.ao"; ap: "bq.ap"; aq: "bq.aq"; ar: "bq.ar"; as: "bq.as"; at: "bq.at"; au: "bq.au"; av: "bq.av"; aw: "bq.aw"; ax: "bq.ax"; ay: "bq.ay"; az: "bq.az"; ba: "bq.ba"; bb: "bq.bb"; bc: "bq.bc"; bd: "bq.bd"; be: "bq.be"; bf: "bq.bf"; bg: "bq.bg"; bh: "bq.bh"; bi: "bq.bi"; bj: "bq.bj"; bk: "bq.bk"; bl: "bq.bl"; bm: "bq.bm"; bn: "bq.bn"; bo: "bq.bo"; bp: "bq.bp"; bq: "bq.bq"; br: "bq.br"; bs: "bq.bs"; bt: "bq.bt"; bu: "bq.bu"; bv: "bq.bv"; bw: "bq.bw"; bx: "bq.bx"; by: "bq.by"; bz: "bq.bz"; ca: "bq.ca"; cb: "bq.cb"; cc: "bq.cc"; cd: "bq.cd"; ce: "bq.ce"; cf: "bq.cf"; cg: "bq.cg"; ch: "bq.ch"; ci: "bq.ci"; cj: "bq.cj"; ck: "bq.ck"; cl: "bq.cl"; cm: "bq.cm"; cn: "bq.cn"; co: "bq.co"; cp: "bq.cp"; cq: "bq.cq"; cr: "bq.cr"; cs: "bq.cs"; ct: "bq.ct"; cu: "bq.cu"; cv: "bq.cv"; cw: "bq.cw"; cx: "bq.cx"; cy: "bq.cy"; cz: "bq.cz"; da: "bq.da"; db: "bq.db"; dc: "bq.dc"; dd: "bq.dd"; de: "bq.de"; df: "bq.df"; dg: "bq.dg"; dh: "bq.dh"; di: "bq.di"; dj: "bq.dj"; dk: "bq.dk"; dl: "bq.dl"; dm: "bq.dm"; dn: "bq.dn"; do: "bq.do"; dp: "bq.dp"; dq: "bq.dq"; dr: "bq.dr"; ds: "bq.ds"; dt: "bq.dt"; du: "bq.du"; dv: "bq.dv"; dw: "bq.dw"; dx: "bq.dx"; dy: "bq.dy"; dz: "bq.dz"; ea: "bq.ea"; eb: "bq.eb"; ec: "bq.ec"; ed: "bq.ed"; ee: "bq.ee"; ef: "bq.ef"; eg: "bq.eg"; eh: "bq.eh"; ei: "bq.ei"; ej: "bq.ej"; ek: "bq.ek"; el: "bq.el"; em: "bq.em"; en: "bq.en"; eo: "bq.eo"; ep: "bq.ep"; eq: "bq.eq"; er: "bq.er"; es: "bq.es"; et: "bq.et"; eu: "bq.eu"; ev: "bq.ev"; ew: "bq.ew"; ex: "bq.ex"; ey: "bq.ey"; ez: "bq.ez"; fa: "bq.fa"; fb: "bq.fb"; fc: "bq.fc"; fd: "bq.fd"; fe: "bq.fe"; ff: "bq.ff"; fg: "bq.fg"; fh: "bq.fh"; fi: "bq.fi"; fj: "bq.fj"; fk: "bq.fk"; fl: "bq.fl"; fm: "bq.fm"; fn: "bq.fn"; fo: "bq.fo"; fp: "bq.fp"; fq: "bq.fq"; fr: "bq.fr"; fs: "bq.fs"; ft: "bq.ft"; fu: "bq.fu"; fv: "bq.fv"; fw: "bq.fw"; fx: "bq.fx"; fy: "bq.fy"; fz: "bq.fz"; ga: "bq.ga"; gb: "bq.gb"; gc: "bq.gc"; gd: "bq.gd"; ge: "bq.ge"; gf: "bq.gf"; gg: "bq.gg"; gh: "bq.gh"; gi: "bq.gi"; gj: "bq.gj"; gk: "bq.gk"; gl: "bq.gl"; gm: "bq.gm"; gn: "bq.gn"; go: "bq.go"; gp: "bq.gp"; gq: "bq.gq"; gr: "bq.gr"; gs: "bq.gs"; gt: "bq.gt"; gu: "bq.gu"; gv: "bq.gv"; gw: "bq.gw"; gx: "bq.gx"; gy: "bq.gy"; gz: "bq.gz"; ha: "bq.ha"; hb: "bq.hb"; hc: "bq.hc"; hd: "bq.hd"; he: "bq.he"; hf: "bq.hf"; hg: "bq.hg"; hh: "bq.hh"; hi: "bq.hi"; hj: "bq.hj"; hk: "bq.hk"; hl: "bq.hl"; hm: "bq.hm"; hn: "bq.hn"; ho: "bq.ho"; hp: "bq.hp"; hq: "bq.hq"; hr: "bq.hr"; hs: "bq.hs"; ht: "bq.ht"; hu: "bq.hu"; hv: "bq.hv"; hw: "bq.hw"; hx: "bq.hx"; hy: "bq.hy"; hz: "bq.hz"; ia: "bq.ia"; ib: "bq.ib"; ic: "bq.ic"; id: "bq.id"; ie: "bq.ie"; if: "bq.if"; ig: "bq.ig"; ih: "bq.ih"; ii: "bq.ii"; ij: "bq.ij"; ik: "bq.ik"; il: "bq.il"; im: "bq.im"; in: "bq.in"; io: "bq.io"; ip: "bq.ip"; iq: "bq.iq"; ir: "bq.ir"; is: "bq.is"; it: "bq.it"; iu: "bq.iu"; iv: "bq.iv"; iw: "bq.iw"; ix: "bq.ix"; iy: "bq.iy"; iz: "bq.iz"; ja: "bq.ja"; jb: "bq.jb"; jc: "bq.jc"; jd: "bq.jd"; je: "bq.je"; jf: "bq.jf"; jg: "bq.jg"; jh: "bq.jh"; ji: "bq.ji"; jj: "bq.jj"; jk: "bq.jk"; jl: "bq.jl"; jm: "bq.jm"; jn: "bq.jn"; jo: "bq.jo"; jp: "bq.jp"; jq: "bq.jq"; jr: "bq.jr"; js: "bq.js"; jt: "bq.jt"; ju: "bq.ju"; jv: "bq.jv"; jw: "bq.jw"; jx: "bq.jx"; jy: "bq.jy"; jz: "bq.jz"; ka: "bq.ka"; kb: "bq.kb"; kc: "bq.kc"; kd: "bq.kd"; ke: "bq.ke"; kf: "bq.kf"; kg: "bq.kg"; kh: "bq.kh"; ki: "bq.ki"; kj: "bq.kj"; kk: "bq.kk"; kl: "bq.kl"; km: "bq.km"; kn: "bq.kn"; ko: "bq.ko"; kp: "bq.kp"; kq: "bq.kq"; kr: "bq.kr"; ks: "bq.ks"; kt: "bq.kt"; ku: "bq.ku"; kv: "bq.kv"; kw: "bq.kw"; kx: "bq.kx"; ky: "bq.ky"; kz: "bq.kz"; la: "bq.la"; lb: "bq.lb"; lc: "bq.lc"; ld: "bq.ld"; le: "bq.le"; lf: "bq.lf"; lg: "bq.lg"; lh: "bq.lh"; li: "bq.li"; lj: "bq.lj"; lk: "bq.lk"; ll: "bq.ll"; lm: "bq.lm"; ln: "bq.ln"; lo: "bq.lo"; lp: "bq.lp"; lq: "bq.lq"; lr: "bq.lr"; ls: "bq.ls"; lt: "bq.lt"; lu: "bq.lu"; lv: "bq.lv"; lw: "bq.lw"; lx: "bq.lx"; ly: "bq.ly"; lz: "bq.lz"; ma: "bq.ma"; mb: "bq.mb"; mc: "bq.mc"; md: "bq.md"; me: "bq.me"; mf: "bq.mf"; mg: "bq.mg"; mh: "bq.mh"; mi: "bq.mi"; mj: "bq.mj"; mk: "bq.mk"; ml: "bq.ml"; mm: "bq.mm"; mn: "bq.mn"; mo: "bq.mo"; mp: "bq.mp"; mq: "bq.mq"; mr: "bq.mr"; ms: "bq.ms"; mt: "bq.mt"; mu: "bq.mu"; mv: "bq.mv"; mw: "bq.mw"; mx: "bq.mx"; my: "bq.my"; mz: "bq.mz"; na: "bq.na"; nb: "bq.nb"; nc: "bq.nc"; nd: "bq.nd"; ne: "bq.ne"; nf: "bq.nf"; ng: "bq.ng"; nh: "bq.nh"; ni: "bq.ni"; nj: "bq.nj"; nk: "bq.nk"; nl: "bq.nl"; nm: "bq.nm"; nn: "bq.nn"; no: "bq.no"; np: "bq.np"; nq: "bq.nq"; nr: "bq.nr"; ns: "bq.ns"; nt: "bq.nt"; nu: "bq.nu"; nv: "bq.nv"; nw: "bq.nw"; nx: "bq.nx"; ny: "bq.ny"; nz: "bq.nz"; oa: "bq.oa"; ob: "bq.ob"; oc: "bq.oc"; od: "bq.od"; oe: "bq.oe"; of: "bq.of"; og: "bq.og"; oh: "bq.oh"; oi: "bq.oi"; oj: "bq.oj"; ok: "bq.ok"; ol: "bq.ol"; om: "bq.om"; on: "bq.on"; oo: "bq.oo"; op: "bq.op"; oq: "bq.oq"; or: "bq.or"; os: "bq.os"; ot: "bq.ot"; ou: "bq.ou"; ov: "bq.ov"; ow: "bq.ow"; ox: "bq.ox"; oy: "bq.oy"; oz: "bq.oz"; pa: "bq.pa"; pb: "bq.pb"; pc: "bq.pc"; pd: "bq.pd"; pe: "bq.pe"; pf: "bq.pf"; pg: "bq.pg"; ph: "bq.ph"; pi: "bq.pi"; pj: "bq.pj"; pk: "bq.pk"; pl: "bq.pl"; pm: "bq.pm"; pn: "bq.pn"; po: "bq.po"; pp: "bq.pp"; pq: "bq.pq"; pr: "bq.pr"; ps: "bq.ps"; pt: "bq.pt"; pu: "bq.pu"; pv: "bq.pv"; pw: "bq.pw"; px: "bq.px"; py: "bq.py"; pz: "bq.pz"; qa: "bq.qa"; qb: "bq.qb"; qc: "bq.qc"; qd: "bq.qd"; qe: "bq.qe"; qf: "bq.qf"; qg: "bq.qg"; qh: "bq.qh"; qi: "bq.qi"; qj: "bq.qj"; qk: "bq.qk"; ql: "bq.ql"; qm: "bq.qm"; qn: "bq.qn"; qo: "bq.qo"; qp: "bq.qp"; qq: "bq.qq"; qr: "bq.qr"; qs: "bq.qs"; qt: "bq.qt"; qu: "bq.qu"; qv: "bq.qv"; qw: "bq.qw"; qx: "bq.qx"; qy: "bq.qy"; qz: "bq.qz"; ra: "bq.ra"; rb: "bq.rb"; rc: "bq.rc"; rd: "bq.rd"; re: "bq.re"; rf: "bq.rf"; rg: "bq.rg"; rh: "bq.rh"; ri: "bq.ri"; rj: "bq.rj"; rk: "bq.rk"; rl: "bq.rl"; rm: "bq.rm"; rn: "bq.rn"; ro: "bq.ro"; rp: "bq.rp"; rq: "bq.rq"; rr: "bq.rr"; rs: "bq.rs"; rt: "bq.rt"; ru: "bq.ru"; rv: "bq.rv"; rw: "bq.rw"; rx: "bq.rx"; ry: "bq.ry"; rz: "bq.rz"; sa: "bq.sa"; sb: "bq.sb"; sc: "bq.sc"; sd: "bq.sd"; se: "bq.se"; sf: "bq.sf"; sg: "bq.sg"; sh: "bq.sh"; si: "bq.si"; sj: "bq.sj"; sk: "bq.sk"; sl: "bq.sl"; sm: "bq.sm"; sn: "bq.sn"; so: "bq.so"; sp: "bq.sp"; sq: "bq.sq"; sr: "bq.sr"; ss: "bq.ss"; st: "bq.st"; su: "bq.su"; sv: "bq.sv"; sw: "bq.sw"; sx: "bq.sx"; sy: "bq.sy"; sz: "bq.sz"; ta: "bq.ta"; tb: "bq.tb"; tc: "bq.tc"; td: "bq.td"; te: "bq.te"; tf: "bq.tf"; tg: "bq.tg"; th: "bq.th"; ti: "bq.ti"; tj: "bq.tj"; tk: "bq.tk"; tl: "bq.tl"; tm: "bq.tm"; tn: "bq.tn"; to: "bq.to"; tp: "bq.tp"; tq: "bq.tq"; tr: "bq.tr"; ts: "bq.ts"; tt: "bq.tt"; tu: "bq.tu"; tv: "bq.tv"; tw: "bq.tw"; tx: "bq.tx"; ty: "bq.ty"; tz: "bq.tz"; ua: "bq.ua"; ub: "bq.ub"; uc: "bq.uc"; ud: "bq.ud"; ue: "bq.ue"; uf: "bq.uf"; ug: "bq.ug"; uh: "bq.uh"; ui: "bq.ui"; uj: "bq.uj"; uk: "bq.uk"; ul: "bq.ul"; um: "bq.um"; un: "bq.un"; uo: "bq.uo"; up: "bq.up"; uq: "bq.uq"; ur: "bq.ur"; us: "bq.us"; ut: "bq.ut"; uu: "bq.uu"; uv: "bq.uv"; uw: "bq.uw"; ux: "bq.ux"; uy: "bq.uy"; uz: "bq.uz"; va: "bq.va"; vb: "bq.vb"; vc: "bq.vc"; vd: "bq.vd"; ve: "bq.ve"; vf: "bq.vf"; vg: "bq.vg"; vh: "bq.vh"; vi: "bq.vi"; vj: "bq.vj"; vk: "bq.vk"; vl: "bq.vl"; vm: "bq.vm"; vn: "bq.vn"; vo: "bq.vo"; vp: "bq.vp"; vq: "bq.vq"; vr: "bq.vr"; vs: "bq.vs"; vt: "bq.vt"; vu: "bq.vu"; vv: "bq.vv"; vw: "bq.vw"; vx: "bq.vx"; vy: "bq.vy"; vz: "bq.vz"; wa: "bq.wa"; wb: "bq.wb"; wc: "bq.wc"; wd: "bq.wd"; we: "bq.we"; wf: "bq.wf"; wg: "bq.wg"; wh: "bq.wh"; wi: "bq.wi"; wj: "bq.wj"; wk: "bq.wk"; wl: "bq.wl"; wm: "bq.wm"; wn: "bq.wn"; wo: "bq.wo"; wp: "bq.wp"; wq: "bq.wq"; wr: "bq.wr"; ws: "bq.ws"; wt: "bq.wt"; wu: "bq.wu"; wv: "bq.wv"; ww: "bq.ww"; wx: "bq.wx"; wy: "bq.wy"; wz: "bq.wz"; xa: "bq.xa"; xb: "bq.xb"; xc: "bq.xc"; xd: "bq.xd"; xe: "bq.xe"; xf: "bq.xf"; xg: "bq.xg"; xh: "bq.xh"; xi: "bq.xi"; xj: "bq.xj"; xk: "bq.xk"; xl: "bq.xl"; xm: "bq.xm"; xn: "bq.xn"; xo: "bq.xo"; xp: "bq.xp"; xq: "bq.xq"; xr: "bq.xr"; xs: "bq.xs"; xt: "bq.xt"; xu: "bq.xu"; xv: "bq.xv"; xw: "bq.xw"; xx: "bq.xx"; xy: "bq.xy"; xz: "bq.xz"; ya: "bq.ya"; yb: "bq.yb"; yc: "bq.yc"; yd: "bq.yd"; ye: "bq.ye"; yf: "bq.yf"; yg: "bq.yg"; yh: "bq.yh"; yi: "bq.yi"; yj: "bq.yj"; yk: "bq.yk"; yl: "bq.yl"; ym: "bq.ym"; yn: "bq.yn"; yo: "bq.yo"; yp: "bq.yp"; yq: "bq.yq"; yr: "bq.yr"; ys: "bq.ys"; yt: "bq.yt"; yu: "bq.yu"; yv: "bq.yv"; yw: "bq.yw"; yx: "bq.yx"; yy: "bq.yy"; yz: "bq.yz"; za: "bq.za"; zb: "bq.zb"; zc: "bq.zc"; zd: "bq.zd"; ze: "bq.ze"; zf: "bq.zf"; zg: "bq.zg"; zh: "bq.zh"; zi: "bq.zi"; zj: "bq.zj"; zk: "bq.zk"; zl: "bq.zl"; zm: "bq.zm"; zn: "bq.zn"; zo: "bq.zo"; zp: "bq.zp"; zq: "bq.zq"; zr: "bq.zr"; zs: "bq.zs"; zt: "bq.zt"; zu: "bq.zu"; zv: "bq.zv"; zw: "bq.zw"; zx: "bq.zx"; zy: "bq.zy"; zz: "bq.zz"; }; br: { aa: "br.aa"; ab: "br.ab"; ac: "br.ac"; ad: "br.ad"; ae: "br.ae"; af: "br.af"; ag: "br.ag"; ah: "br.ah"; ai: "br.ai"; aj: "br.aj"; ak: "br.ak"; al: "br.al"; am: "br.am"; an: "br.an"; ao: "br.ao"; ap: "br.ap"; aq: "br.aq"; ar: "br.ar"; as: "br.as"; at: "br.at"; au: "br.au"; av: "br.av"; aw: "br.aw"; ax: "br.ax"; ay: "br.ay"; az: "br.az"; ba: "br.ba"; bb: "br.bb"; bc: "br.bc"; bd: "br.bd"; be: "br.be"; bf: "br.bf"; bg: "br.bg"; bh: "br.bh"; bi: "br.bi"; bj: "br.bj"; bk: "br.bk"; bl: "br.bl"; bm: "br.bm"; bn: "br.bn"; bo: "br.bo"; bp: "br.bp"; bq: "br.bq"; br: "br.br"; bs: "br.bs"; bt: "br.bt"; bu: "br.bu"; bv: "br.bv"; bw: "br.bw"; bx: "br.bx"; by: "br.by"; bz: "br.bz"; ca: "br.ca"; cb: "br.cb"; cc: "br.cc"; cd: "br.cd"; ce: "br.ce"; cf: "br.cf"; cg: "br.cg"; ch: "br.ch"; ci: "br.ci"; cj: "br.cj"; ck: "br.ck"; cl: "br.cl"; cm: "br.cm"; cn: "br.cn"; co: "br.co"; cp: "br.cp"; cq: "br.cq"; cr: "br.cr"; cs: "br.cs"; ct: "br.ct"; cu: "br.cu"; cv: "br.cv"; cw: "br.cw"; cx: "br.cx"; cy: "br.cy"; cz: "br.cz"; da: "br.da"; db: "br.db"; dc: "br.dc"; dd: "br.dd"; de: "br.de"; df: "br.df"; dg: "br.dg"; dh: "br.dh"; di: "br.di"; dj: "br.dj"; dk: "br.dk"; dl: "br.dl"; dm: "br.dm"; dn: "br.dn"; do: "br.do"; dp: "br.dp"; dq: "br.dq"; dr: "br.dr"; ds: "br.ds"; dt: "br.dt"; du: "br.du"; dv: "br.dv"; dw: "br.dw"; dx: "br.dx"; dy: "br.dy"; dz: "br.dz"; ea: "br.ea"; eb: "br.eb"; ec: "br.ec"; ed: "br.ed"; ee: "br.ee"; ef: "br.ef"; eg: "br.eg"; eh: "br.eh"; ei: "br.ei"; ej: "br.ej"; ek: "br.ek"; el: "br.el"; em: "br.em"; en: "br.en"; eo: "br.eo"; ep: "br.ep"; eq: "br.eq"; er: "br.er"; es: "br.es"; et: "br.et"; eu: "br.eu"; ev: "br.ev"; ew: "br.ew"; ex: "br.ex"; ey: "br.ey"; ez: "br.ez"; fa: "br.fa"; fb: "br.fb"; fc: "br.fc"; fd: "br.fd"; fe: "br.fe"; ff: "br.ff"; fg: "br.fg"; fh: "br.fh"; fi: "br.fi"; fj: "br.fj"; fk: "br.fk"; fl: "br.fl"; fm: "br.fm"; fn: "br.fn"; fo: "br.fo"; fp: "br.fp"; fq: "br.fq"; fr: "br.fr"; fs: "br.fs"; ft: "br.ft"; fu: "br.fu"; fv: "br.fv"; fw: "br.fw"; fx: "br.fx"; fy: "br.fy"; fz: "br.fz"; ga: "br.ga"; gb: "br.gb"; gc: "br.gc"; gd: "br.gd"; ge: "br.ge"; gf: "br.gf"; gg: "br.gg"; gh: "br.gh"; gi: "br.gi"; gj: "br.gj"; gk: "br.gk"; gl: "br.gl"; gm: "br.gm"; gn: "br.gn"; go: "br.go"; gp: "br.gp"; gq: "br.gq"; gr: "br.gr"; gs: "br.gs"; gt: "br.gt"; gu: "br.gu"; gv: "br.gv"; gw: "br.gw"; gx: "br.gx"; gy: "br.gy"; gz: "br.gz"; ha: "br.ha"; hb: "br.hb"; hc: "br.hc"; hd: "br.hd"; he: "br.he"; hf: "br.hf"; hg: "br.hg"; hh: "br.hh"; hi: "br.hi"; hj: "br.hj"; hk: "br.hk"; hl: "br.hl"; hm: "br.hm"; hn: "br.hn"; ho: "br.ho"; hp: "br.hp"; hq: "br.hq"; hr: "br.hr"; hs: "br.hs"; ht: "br.ht"; hu: "br.hu"; hv: "br.hv"; hw: "br.hw"; hx: "br.hx"; hy: "br.hy"; hz: "br.hz"; ia: "br.ia"; ib: "br.ib"; ic: "br.ic"; id: "br.id"; ie: "br.ie"; if: "br.if"; ig: "br.ig"; ih: "br.ih"; ii: "br.ii"; ij: "br.ij"; ik: "br.ik"; il: "br.il"; im: "br.im"; in: "br.in"; io: "br.io"; ip: "br.ip"; iq: "br.iq"; ir: "br.ir"; is: "br.is"; it: "br.it"; iu: "br.iu"; iv: "br.iv"; iw: "br.iw"; ix: "br.ix"; iy: "br.iy"; iz: "br.iz"; ja: "br.ja"; jb: "br.jb"; jc: "br.jc"; jd: "br.jd"; je: "br.je"; jf: "br.jf"; jg: "br.jg"; jh: "br.jh"; ji: "br.ji"; jj: "br.jj"; jk: "br.jk"; jl: "br.jl"; jm: "br.jm"; jn: "br.jn"; jo: "br.jo"; jp: "br.jp"; jq: "br.jq"; jr: "br.jr"; js: "br.js"; jt: "br.jt"; ju: "br.ju"; jv: "br.jv"; jw: "br.jw"; jx: "br.jx"; jy: "br.jy"; jz: "br.jz"; ka: "br.ka"; kb: "br.kb"; kc: "br.kc"; kd: "br.kd"; ke: "br.ke"; kf: "br.kf"; kg: "br.kg"; kh: "br.kh"; ki: "br.ki"; kj: "br.kj"; kk: "br.kk"; kl: "br.kl"; km: "br.km"; kn: "br.kn"; ko: "br.ko"; kp: "br.kp"; kq: "br.kq"; kr: "br.kr"; ks: "br.ks"; kt: "br.kt"; ku: "br.ku"; kv: "br.kv"; kw: "br.kw"; kx: "br.kx"; ky: "br.ky"; kz: "br.kz"; la: "br.la"; lb: "br.lb"; lc: "br.lc"; ld: "br.ld"; le: "br.le"; lf: "br.lf"; lg: "br.lg"; lh: "br.lh"; li: "br.li"; lj: "br.lj"; lk: "br.lk"; ll: "br.ll"; lm: "br.lm"; ln: "br.ln"; lo: "br.lo"; lp: "br.lp"; lq: "br.lq"; lr: "br.lr"; ls: "br.ls"; lt: "br.lt"; lu: "br.lu"; lv: "br.lv"; lw: "br.lw"; lx: "br.lx"; ly: "br.ly"; lz: "br.lz"; ma: "br.ma"; mb: "br.mb"; mc: "br.mc"; md: "br.md"; me: "br.me"; mf: "br.mf"; mg: "br.mg"; mh: "br.mh"; mi: "br.mi"; mj: "br.mj"; mk: "br.mk"; ml: "br.ml"; mm: "br.mm"; mn: "br.mn"; mo: "br.mo"; mp: "br.mp"; mq: "br.mq"; mr: "br.mr"; ms: "br.ms"; mt: "br.mt"; mu: "br.mu"; mv: "br.mv"; mw: "br.mw"; mx: "br.mx"; my: "br.my"; mz: "br.mz"; na: "br.na"; nb: "br.nb"; nc: "br.nc"; nd: "br.nd"; ne: "br.ne"; nf: "br.nf"; ng: "br.ng"; nh: "br.nh"; ni: "br.ni"; nj: "br.nj"; nk: "br.nk"; nl: "br.nl"; nm: "br.nm"; nn: "br.nn"; no: "br.no"; np: "br.np"; nq: "br.nq"; nr: "br.nr"; ns: "br.ns"; nt: "br.nt"; nu: "br.nu"; nv: "br.nv"; nw: "br.nw"; nx: "br.nx"; ny: "br.ny"; nz: "br.nz"; oa: "br.oa"; ob: "br.ob"; oc: "br.oc"; od: "br.od"; oe: "br.oe"; of: "br.of"; og: "br.og"; oh: "br.oh"; oi: "br.oi"; oj: "br.oj"; ok: "br.ok"; ol: "br.ol"; om: "br.om"; on: "br.on"; oo: "br.oo"; op: "br.op"; oq: "br.oq"; or: "br.or"; os: "br.os"; ot: "br.ot"; ou: "br.ou"; ov: "br.ov"; ow: "br.ow"; ox: "br.ox"; oy: "br.oy"; oz: "br.oz"; pa: "br.pa"; pb: "br.pb"; pc: "br.pc"; pd: "br.pd"; pe: "br.pe"; pf: "br.pf"; pg: "br.pg"; ph: "br.ph"; pi: "br.pi"; pj: "br.pj"; pk: "br.pk"; pl: "br.pl"; pm: "br.pm"; pn: "br.pn"; po: "br.po"; pp: "br.pp"; pq: "br.pq"; pr: "br.pr"; ps: "br.ps"; pt: "br.pt"; pu: "br.pu"; pv: "br.pv"; pw: "br.pw"; px: "br.px"; py: "br.py"; pz: "br.pz"; qa: "br.qa"; qb: "br.qb"; qc: "br.qc"; qd: "br.qd"; qe: "br.qe"; qf: "br.qf"; qg: "br.qg"; qh: "br.qh"; qi: "br.qi"; qj: "br.qj"; qk: "br.qk"; ql: "br.ql"; qm: "br.qm"; qn: "br.qn"; qo: "br.qo"; qp: "br.qp"; qq: "br.qq"; qr: "br.qr"; qs: "br.qs"; qt: "br.qt"; qu: "br.qu"; qv: "br.qv"; qw: "br.qw"; qx: "br.qx"; qy: "br.qy"; qz: "br.qz"; ra: "br.ra"; rb: "br.rb"; rc: "br.rc"; rd: "br.rd"; re: "br.re"; rf: "br.rf"; rg: "br.rg"; rh: "br.rh"; ri: "br.ri"; rj: "br.rj"; rk: "br.rk"; rl: "br.rl"; rm: "br.rm"; rn: "br.rn"; ro: "br.ro"; rp: "br.rp"; rq: "br.rq"; rr: "br.rr"; rs: "br.rs"; rt: "br.rt"; ru: "br.ru"; rv: "br.rv"; rw: "br.rw"; rx: "br.rx"; ry: "br.ry"; rz: "br.rz"; sa: "br.sa"; sb: "br.sb"; sc: "br.sc"; sd: "br.sd"; se: "br.se"; sf: "br.sf"; sg: "br.sg"; sh: "br.sh"; si: "br.si"; sj: "br.sj"; sk: "br.sk"; sl: "br.sl"; sm: "br.sm"; sn: "br.sn"; so: "br.so"; sp: "br.sp"; sq: "br.sq"; sr: "br.sr"; ss: "br.ss"; st: "br.st"; su: "br.su"; sv: "br.sv"; sw: "br.sw"; sx: "br.sx"; sy: "br.sy"; sz: "br.sz"; ta: "br.ta"; tb: "br.tb"; tc: "br.tc"; td: "br.td"; te: "br.te"; tf: "br.tf"; tg: "br.tg"; th: "br.th"; ti: "br.ti"; tj: "br.tj"; tk: "br.tk"; tl: "br.tl"; tm: "br.tm"; tn: "br.tn"; to: "br.to"; tp: "br.tp"; tq: "br.tq"; tr: "br.tr"; ts: "br.ts"; tt: "br.tt"; tu: "br.tu"; tv: "br.tv"; tw: "br.tw"; tx: "br.tx"; ty: "br.ty"; tz: "br.tz"; ua: "br.ua"; ub: "br.ub"; uc: "br.uc"; ud: "br.ud"; ue: "br.ue"; uf: "br.uf"; ug: "br.ug"; uh: "br.uh"; ui: "br.ui"; uj: "br.uj"; uk: "br.uk"; ul: "br.ul"; um: "br.um"; un: "br.un"; uo: "br.uo"; up: "br.up"; uq: "br.uq"; ur: "br.ur"; us: "br.us"; ut: "br.ut"; uu: "br.uu"; uv: "br.uv"; uw: "br.uw"; ux: "br.ux"; uy: "br.uy"; uz: "br.uz"; va: "br.va"; vb: "br.vb"; vc: "br.vc"; vd: "br.vd"; ve: "br.ve"; vf: "br.vf"; vg: "br.vg"; vh: "br.vh"; vi: "br.vi"; vj: "br.vj"; vk: "br.vk"; vl: "br.vl"; vm: "br.vm"; vn: "br.vn"; vo: "br.vo"; vp: "br.vp"; vq: "br.vq"; vr: "br.vr"; vs: "br.vs"; vt: "br.vt"; vu: "br.vu"; vv: "br.vv"; vw: "br.vw"; vx: "br.vx"; vy: "br.vy"; vz: "br.vz"; wa: "br.wa"; wb: "br.wb"; wc: "br.wc"; wd: "br.wd"; we: "br.we"; wf: "br.wf"; wg: "br.wg"; wh: "br.wh"; wi: "br.wi"; wj: "br.wj"; wk: "br.wk"; wl: "br.wl"; wm: "br.wm"; wn: "br.wn"; wo: "br.wo"; wp: "br.wp"; wq: "br.wq"; wr: "br.wr"; ws: "br.ws"; wt: "br.wt"; wu: "br.wu"; wv: "br.wv"; ww: "br.ww"; wx: "br.wx"; wy: "br.wy"; wz: "br.wz"; xa: "br.xa"; xb: "br.xb"; xc: "br.xc"; xd: "br.xd"; xe: "br.xe"; xf: "br.xf"; xg: "br.xg"; xh: "br.xh"; xi: "br.xi"; xj: "br.xj"; xk: "br.xk"; xl: "br.xl"; xm: "br.xm"; xn: "br.xn"; xo: "br.xo"; xp: "br.xp"; xq: "br.xq"; xr: "br.xr"; xs: "br.xs"; xt: "br.xt"; xu: "br.xu"; xv: "br.xv"; xw: "br.xw"; xx: "br.xx"; xy: "br.xy"; xz: "br.xz"; ya: "br.ya"; yb: "br.yb"; yc: "br.yc"; yd: "br.yd"; ye: "br.ye"; yf: "br.yf"; yg: "br.yg"; yh: "br.yh"; yi: "br.yi"; yj: "br.yj"; yk: "br.yk"; yl: "br.yl"; ym: "br.ym"; yn: "br.yn"; yo: "br.yo"; yp: "br.yp"; yq: "br.yq"; yr: "br.yr"; ys: "br.ys"; yt: "br.yt"; yu: "br.yu"; yv: "br.yv"; yw: "br.yw"; yx: "br.yx"; yy: "br.yy"; yz: "br.yz"; za: "br.za"; zb: "br.zb"; zc: "br.zc"; zd: "br.zd"; ze: "br.ze"; zf: "br.zf"; zg: "br.zg"; zh: "br.zh"; zi: "br.zi"; zj: "br.zj"; zk: "br.zk"; zl: "br.zl"; zm: "br.zm"; zn: "br.zn"; zo: "br.zo"; zp: "br.zp"; zq: "br.zq"; zr: "br.zr"; zs: "br.zs"; zt: "br.zt"; zu: "br.zu"; zv: "br.zv"; zw: "br.zw"; zx: "br.zx"; zy: "br.zy"; zz: "br.zz"; }; bs: { aa: "bs.aa"; ab: "bs.ab"; ac: "bs.ac"; ad: "bs.ad"; ae: "bs.ae"; af: "bs.af"; ag: "bs.ag"; ah: "bs.ah"; ai: "bs.ai"; aj: "bs.aj"; ak: "bs.ak"; al: "bs.al"; am: "bs.am"; an: "bs.an"; ao: "bs.ao"; ap: "bs.ap"; aq: "bs.aq"; ar: "bs.ar"; as: "bs.as"; at: "bs.at"; au: "bs.au"; av: "bs.av"; aw: "bs.aw"; ax: "bs.ax"; ay: "bs.ay"; az: "bs.az"; ba: "bs.ba"; bb: "bs.bb"; bc: "bs.bc"; bd: "bs.bd"; be: "bs.be"; bf: "bs.bf"; bg: "bs.bg"; bh: "bs.bh"; bi: "bs.bi"; bj: "bs.bj"; bk: "bs.bk"; bl: "bs.bl"; bm: "bs.bm"; bn: "bs.bn"; bo: "bs.bo"; bp: "bs.bp"; bq: "bs.bq"; br: "bs.br"; bs: "bs.bs"; bt: "bs.bt"; bu: "bs.bu"; bv: "bs.bv"; bw: "bs.bw"; bx: "bs.bx"; by: "bs.by"; bz: "bs.bz"; ca: "bs.ca"; cb: "bs.cb"; cc: "bs.cc"; cd: "bs.cd"; ce: "bs.ce"; cf: "bs.cf"; cg: "bs.cg"; ch: "bs.ch"; ci: "bs.ci"; cj: "bs.cj"; ck: "bs.ck"; cl: "bs.cl"; cm: "bs.cm"; cn: "bs.cn"; co: "bs.co"; cp: "bs.cp"; cq: "bs.cq"; cr: "bs.cr"; cs: "bs.cs"; ct: "bs.ct"; cu: "bs.cu"; cv: "bs.cv"; cw: "bs.cw"; cx: "bs.cx"; cy: "bs.cy"; cz: "bs.cz"; da: "bs.da"; db: "bs.db"; dc: "bs.dc"; dd: "bs.dd"; de: "bs.de"; df: "bs.df"; dg: "bs.dg"; dh: "bs.dh"; di: "bs.di"; dj: "bs.dj"; dk: "bs.dk"; dl: "bs.dl"; dm: "bs.dm"; dn: "bs.dn"; do: "bs.do"; dp: "bs.dp"; dq: "bs.dq"; dr: "bs.dr"; ds: "bs.ds"; dt: "bs.dt"; du: "bs.du"; dv: "bs.dv"; dw: "bs.dw"; dx: "bs.dx"; dy: "bs.dy"; dz: "bs.dz"; ea: "bs.ea"; eb: "bs.eb"; ec: "bs.ec"; ed: "bs.ed"; ee: "bs.ee"; ef: "bs.ef"; eg: "bs.eg"; eh: "bs.eh"; ei: "bs.ei"; ej: "bs.ej"; ek: "bs.ek"; el: "bs.el"; em: "bs.em"; en: "bs.en"; eo: "bs.eo"; ep: "bs.ep"; eq: "bs.eq"; er: "bs.er"; es: "bs.es"; et: "bs.et"; eu: "bs.eu"; ev: "bs.ev"; ew: "bs.ew"; ex: "bs.ex"; ey: "bs.ey"; ez: "bs.ez"; fa: "bs.fa"; fb: "bs.fb"; fc: "bs.fc"; fd: "bs.fd"; fe: "bs.fe"; ff: "bs.ff"; fg: "bs.fg"; fh: "bs.fh"; fi: "bs.fi"; fj: "bs.fj"; fk: "bs.fk"; fl: "bs.fl"; fm: "bs.fm"; fn: "bs.fn"; fo: "bs.fo"; fp: "bs.fp"; fq: "bs.fq"; fr: "bs.fr"; fs: "bs.fs"; ft: "bs.ft"; fu: "bs.fu"; fv: "bs.fv"; fw: "bs.fw"; fx: "bs.fx"; fy: "bs.fy"; fz: "bs.fz"; ga: "bs.ga"; gb: "bs.gb"; gc: "bs.gc"; gd: "bs.gd"; ge: "bs.ge"; gf: "bs.gf"; gg: "bs.gg"; gh: "bs.gh"; gi: "bs.gi"; gj: "bs.gj"; gk: "bs.gk"; gl: "bs.gl"; gm: "bs.gm"; gn: "bs.gn"; go: "bs.go"; gp: "bs.gp"; gq: "bs.gq"; gr: "bs.gr"; gs: "bs.gs"; gt: "bs.gt"; gu: "bs.gu"; gv: "bs.gv"; gw: "bs.gw"; gx: "bs.gx"; gy: "bs.gy"; gz: "bs.gz"; ha: "bs.ha"; hb: "bs.hb"; hc: "bs.hc"; hd: "bs.hd"; he: "bs.he"; hf: "bs.hf"; hg: "bs.hg"; hh: "bs.hh"; hi: "bs.hi"; hj: "bs.hj"; hk: "bs.hk"; hl: "bs.hl"; hm: "bs.hm"; hn: "bs.hn"; ho: "bs.ho"; hp: "bs.hp"; hq: "bs.hq"; hr: "bs.hr"; hs: "bs.hs"; ht: "bs.ht"; hu: "bs.hu"; hv: "bs.hv"; hw: "bs.hw"; hx: "bs.hx"; hy: "bs.hy"; hz: "bs.hz"; ia: "bs.ia"; ib: "bs.ib"; ic: "bs.ic"; id: "bs.id"; ie: "bs.ie"; if: "bs.if"; ig: "bs.ig"; ih: "bs.ih"; ii: "bs.ii"; ij: "bs.ij"; ik: "bs.ik"; il: "bs.il"; im: "bs.im"; in: "bs.in"; io: "bs.io"; ip: "bs.ip"; iq: "bs.iq"; ir: "bs.ir"; is: "bs.is"; it: "bs.it"; iu: "bs.iu"; iv: "bs.iv"; iw: "bs.iw"; ix: "bs.ix"; iy: "bs.iy"; iz: "bs.iz"; ja: "bs.ja"; jb: "bs.jb"; jc: "bs.jc"; jd: "bs.jd"; je: "bs.je"; jf: "bs.jf"; jg: "bs.jg"; jh: "bs.jh"; ji: "bs.ji"; jj: "bs.jj"; jk: "bs.jk"; jl: "bs.jl"; jm: "bs.jm"; jn: "bs.jn"; jo: "bs.jo"; jp: "bs.jp"; jq: "bs.jq"; jr: "bs.jr"; js: "bs.js"; jt: "bs.jt"; ju: "bs.ju"; jv: "bs.jv"; jw: "bs.jw"; jx: "bs.jx"; jy: "bs.jy"; jz: "bs.jz"; ka: "bs.ka"; kb: "bs.kb"; kc: "bs.kc"; kd: "bs.kd"; ke: "bs.ke"; kf: "bs.kf"; kg: "bs.kg"; kh: "bs.kh"; ki: "bs.ki"; kj: "bs.kj"; kk: "bs.kk"; kl: "bs.kl"; km: "bs.km"; kn: "bs.kn"; ko: "bs.ko"; kp: "bs.kp"; kq: "bs.kq"; kr: "bs.kr"; ks: "bs.ks"; kt: "bs.kt"; ku: "bs.ku"; kv: "bs.kv"; kw: "bs.kw"; kx: "bs.kx"; ky: "bs.ky"; kz: "bs.kz"; la: "bs.la"; lb: "bs.lb"; lc: "bs.lc"; ld: "bs.ld"; le: "bs.le"; lf: "bs.lf"; lg: "bs.lg"; lh: "bs.lh"; li: "bs.li"; lj: "bs.lj"; lk: "bs.lk"; ll: "bs.ll"; lm: "bs.lm"; ln: "bs.ln"; lo: "bs.lo"; lp: "bs.lp"; lq: "bs.lq"; lr: "bs.lr"; ls: "bs.ls"; lt: "bs.lt"; lu: "bs.lu"; lv: "bs.lv"; lw: "bs.lw"; lx: "bs.lx"; ly: "bs.ly"; lz: "bs.lz"; ma: "bs.ma"; mb: "bs.mb"; mc: "bs.mc"; md: "bs.md"; me: "bs.me"; mf: "bs.mf"; mg: "bs.mg"; mh: "bs.mh"; mi: "bs.mi"; mj: "bs.mj"; mk: "bs.mk"; ml: "bs.ml"; mm: "bs.mm"; mn: "bs.mn"; mo: "bs.mo"; mp: "bs.mp"; mq: "bs.mq"; mr: "bs.mr"; ms: "bs.ms"; mt: "bs.mt"; mu: "bs.mu"; mv: "bs.mv"; mw: "bs.mw"; mx: "bs.mx"; my: "bs.my"; mz: "bs.mz"; na: "bs.na"; nb: "bs.nb"; nc: "bs.nc"; nd: "bs.nd"; ne: "bs.ne"; nf: "bs.nf"; ng: "bs.ng"; nh: "bs.nh"; ni: "bs.ni"; nj: "bs.nj"; nk: "bs.nk"; nl: "bs.nl"; nm: "bs.nm"; nn: "bs.nn"; no: "bs.no"; np: "bs.np"; nq: "bs.nq"; nr: "bs.nr"; ns: "bs.ns"; nt: "bs.nt"; nu: "bs.nu"; nv: "bs.nv"; nw: "bs.nw"; nx: "bs.nx"; ny: "bs.ny"; nz: "bs.nz"; oa: "bs.oa"; ob: "bs.ob"; oc: "bs.oc"; od: "bs.od"; oe: "bs.oe"; of: "bs.of"; og: "bs.og"; oh: "bs.oh"; oi: "bs.oi"; oj: "bs.oj"; ok: "bs.ok"; ol: "bs.ol"; om: "bs.om"; on: "bs.on"; oo: "bs.oo"; op: "bs.op"; oq: "bs.oq"; or: "bs.or"; os: "bs.os"; ot: "bs.ot"; ou: "bs.ou"; ov: "bs.ov"; ow: "bs.ow"; ox: "bs.ox"; oy: "bs.oy"; oz: "bs.oz"; pa: "bs.pa"; pb: "bs.pb"; pc: "bs.pc"; pd: "bs.pd"; pe: "bs.pe"; pf: "bs.pf"; pg: "bs.pg"; ph: "bs.ph"; pi: "bs.pi"; pj: "bs.pj"; pk: "bs.pk"; pl: "bs.pl"; pm: "bs.pm"; pn: "bs.pn"; po: "bs.po"; pp: "bs.pp"; pq: "bs.pq"; pr: "bs.pr"; ps: "bs.ps"; pt: "bs.pt"; pu: "bs.pu"; pv: "bs.pv"; pw: "bs.pw"; px: "bs.px"; py: "bs.py"; pz: "bs.pz"; qa: "bs.qa"; qb: "bs.qb"; qc: "bs.qc"; qd: "bs.qd"; qe: "bs.qe"; qf: "bs.qf"; qg: "bs.qg"; qh: "bs.qh"; qi: "bs.qi"; qj: "bs.qj"; qk: "bs.qk"; ql: "bs.ql"; qm: "bs.qm"; qn: "bs.qn"; qo: "bs.qo"; qp: "bs.qp"; qq: "bs.qq"; qr: "bs.qr"; qs: "bs.qs"; qt: "bs.qt"; qu: "bs.qu"; qv: "bs.qv"; qw: "bs.qw"; qx: "bs.qx"; qy: "bs.qy"; qz: "bs.qz"; ra: "bs.ra"; rb: "bs.rb"; rc: "bs.rc"; rd: "bs.rd"; re: "bs.re"; rf: "bs.rf"; rg: "bs.rg"; rh: "bs.rh"; ri: "bs.ri"; rj: "bs.rj"; rk: "bs.rk"; rl: "bs.rl"; rm: "bs.rm"; rn: "bs.rn"; ro: "bs.ro"; rp: "bs.rp"; rq: "bs.rq"; rr: "bs.rr"; rs: "bs.rs"; rt: "bs.rt"; ru: "bs.ru"; rv: "bs.rv"; rw: "bs.rw"; rx: "bs.rx"; ry: "bs.ry"; rz: "bs.rz"; sa: "bs.sa"; sb: "bs.sb"; sc: "bs.sc"; sd: "bs.sd"; se: "bs.se"; sf: "bs.sf"; sg: "bs.sg"; sh: "bs.sh"; si: "bs.si"; sj: "bs.sj"; sk: "bs.sk"; sl: "bs.sl"; sm: "bs.sm"; sn: "bs.sn"; so: "bs.so"; sp: "bs.sp"; sq: "bs.sq"; sr: "bs.sr"; ss: "bs.ss"; st: "bs.st"; su: "bs.su"; sv: "bs.sv"; sw: "bs.sw"; sx: "bs.sx"; sy: "bs.sy"; sz: "bs.sz"; ta: "bs.ta"; tb: "bs.tb"; tc: "bs.tc"; td: "bs.td"; te: "bs.te"; tf: "bs.tf"; tg: "bs.tg"; th: "bs.th"; ti: "bs.ti"; tj: "bs.tj"; tk: "bs.tk"; tl: "bs.tl"; tm: "bs.tm"; tn: "bs.tn"; to: "bs.to"; tp: "bs.tp"; tq: "bs.tq"; tr: "bs.tr"; ts: "bs.ts"; tt: "bs.tt"; tu: "bs.tu"; tv: "bs.tv"; tw: "bs.tw"; tx: "bs.tx"; ty: "bs.ty"; tz: "bs.tz"; ua: "bs.ua"; ub: "bs.ub"; uc: "bs.uc"; ud: "bs.ud"; ue: "bs.ue"; uf: "bs.uf"; ug: "bs.ug"; uh: "bs.uh"; ui: "bs.ui"; uj: "bs.uj"; uk: "bs.uk"; ul: "bs.ul"; um: "bs.um"; un: "bs.un"; uo: "bs.uo"; up: "bs.up"; uq: "bs.uq"; ur: "bs.ur"; us: "bs.us"; ut: "bs.ut"; uu: "bs.uu"; uv: "bs.uv"; uw: "bs.uw"; ux: "bs.ux"; uy: "bs.uy"; uz: "bs.uz"; va: "bs.va"; vb: "bs.vb"; vc: "bs.vc"; vd: "bs.vd"; ve: "bs.ve"; vf: "bs.vf"; vg: "bs.vg"; vh: "bs.vh"; vi: "bs.vi"; vj: "bs.vj"; vk: "bs.vk"; vl: "bs.vl"; vm: "bs.vm"; vn: "bs.vn"; vo: "bs.vo"; vp: "bs.vp"; vq: "bs.vq"; vr: "bs.vr"; vs: "bs.vs"; vt: "bs.vt"; vu: "bs.vu"; vv: "bs.vv"; vw: "bs.vw"; vx: "bs.vx"; vy: "bs.vy"; vz: "bs.vz"; wa: "bs.wa"; wb: "bs.wb"; wc: "bs.wc"; wd: "bs.wd"; we: "bs.we"; wf: "bs.wf"; wg: "bs.wg"; wh: "bs.wh"; wi: "bs.wi"; wj: "bs.wj"; wk: "bs.wk"; wl: "bs.wl"; wm: "bs.wm"; wn: "bs.wn"; wo: "bs.wo"; wp: "bs.wp"; wq: "bs.wq"; wr: "bs.wr"; ws: "bs.ws"; wt: "bs.wt"; wu: "bs.wu"; wv: "bs.wv"; ww: "bs.ww"; wx: "bs.wx"; wy: "bs.wy"; wz: "bs.wz"; xa: "bs.xa"; xb: "bs.xb"; xc: "bs.xc"; xd: "bs.xd"; xe: "bs.xe"; xf: "bs.xf"; xg: "bs.xg"; xh: "bs.xh"; xi: "bs.xi"; xj: "bs.xj"; xk: "bs.xk"; xl: "bs.xl"; xm: "bs.xm"; xn: "bs.xn"; xo: "bs.xo"; xp: "bs.xp"; xq: "bs.xq"; xr: "bs.xr"; xs: "bs.xs"; xt: "bs.xt"; xu: "bs.xu"; xv: "bs.xv"; xw: "bs.xw"; xx: "bs.xx"; xy: "bs.xy"; xz: "bs.xz"; ya: "bs.ya"; yb: "bs.yb"; yc: "bs.yc"; yd: "bs.yd"; ye: "bs.ye"; yf: "bs.yf"; yg: "bs.yg"; yh: "bs.yh"; yi: "bs.yi"; yj: "bs.yj"; yk: "bs.yk"; yl: "bs.yl"; ym: "bs.ym"; yn: "bs.yn"; yo: "bs.yo"; yp: "bs.yp"; yq: "bs.yq"; yr: "bs.yr"; ys: "bs.ys"; yt: "bs.yt"; yu: "bs.yu"; yv: "bs.yv"; yw: "bs.yw"; yx: "bs.yx"; yy: "bs.yy"; yz: "bs.yz"; za: "bs.za"; zb: "bs.zb"; zc: "bs.zc"; zd: "bs.zd"; ze: "bs.ze"; zf: "bs.zf"; zg: "bs.zg"; zh: "bs.zh"; zi: "bs.zi"; zj: "bs.zj"; zk: "bs.zk"; zl: "bs.zl"; zm: "bs.zm"; zn: "bs.zn"; zo: "bs.zo"; zp: "bs.zp"; zq: "bs.zq"; zr: "bs.zr"; zs: "bs.zs"; zt: "bs.zt"; zu: "bs.zu"; zv: "bs.zv"; zw: "bs.zw"; zx: "bs.zx"; zy: "bs.zy"; zz: "bs.zz"; }; bt: { aa: "bt.aa"; ab: "bt.ab"; ac: "bt.ac"; ad: "bt.ad"; ae: "bt.ae"; af: "bt.af"; ag: "bt.ag"; ah: "bt.ah"; ai: "bt.ai"; aj: "bt.aj"; ak: "bt.ak"; al: "bt.al"; am: "bt.am"; an: "bt.an"; ao: "bt.ao"; ap: "bt.ap"; aq: "bt.aq"; ar: "bt.ar"; as: "bt.as"; at: "bt.at"; au: "bt.au"; av: "bt.av"; aw: "bt.aw"; ax: "bt.ax"; ay: "bt.ay"; az: "bt.az"; ba: "bt.ba"; bb: "bt.bb"; bc: "bt.bc"; bd: "bt.bd"; be: "bt.be"; bf: "bt.bf"; bg: "bt.bg"; bh: "bt.bh"; bi: "bt.bi"; bj: "bt.bj"; bk: "bt.bk"; bl: "bt.bl"; bm: "bt.bm"; bn: "bt.bn"; bo: "bt.bo"; bp: "bt.bp"; bq: "bt.bq"; br: "bt.br"; bs: "bt.bs"; bt: "bt.bt"; bu: "bt.bu"; bv: "bt.bv"; bw: "bt.bw"; bx: "bt.bx"; by: "bt.by"; bz: "bt.bz"; ca: "bt.ca"; cb: "bt.cb"; cc: "bt.cc"; cd: "bt.cd"; ce: "bt.ce"; cf: "bt.cf"; cg: "bt.cg"; ch: "bt.ch"; ci: "bt.ci"; cj: "bt.cj"; ck: "bt.ck"; cl: "bt.cl"; cm: "bt.cm"; cn: "bt.cn"; co: "bt.co"; cp: "bt.cp"; cq: "bt.cq"; cr: "bt.cr"; cs: "bt.cs"; ct: "bt.ct"; cu: "bt.cu"; cv: "bt.cv"; cw: "bt.cw"; cx: "bt.cx"; cy: "bt.cy"; cz: "bt.cz"; da: "bt.da"; db: "bt.db"; dc: "bt.dc"; dd: "bt.dd"; de: "bt.de"; df: "bt.df"; dg: "bt.dg"; dh: "bt.dh"; di: "bt.di"; dj: "bt.dj"; dk: "bt.dk"; dl: "bt.dl"; dm: "bt.dm"; dn: "bt.dn"; do: "bt.do"; dp: "bt.dp"; dq: "bt.dq"; dr: "bt.dr"; ds: "bt.ds"; dt: "bt.dt"; du: "bt.du"; dv: "bt.dv"; dw: "bt.dw"; dx: "bt.dx"; dy: "bt.dy"; dz: "bt.dz"; ea: "bt.ea"; eb: "bt.eb"; ec: "bt.ec"; ed: "bt.ed"; ee: "bt.ee"; ef: "bt.ef"; eg: "bt.eg"; eh: "bt.eh"; ei: "bt.ei"; ej: "bt.ej"; ek: "bt.ek"; el: "bt.el"; em: "bt.em"; en: "bt.en"; eo: "bt.eo"; ep: "bt.ep"; eq: "bt.eq"; er: "bt.er"; es: "bt.es"; et: "bt.et"; eu: "bt.eu"; ev: "bt.ev"; ew: "bt.ew"; ex: "bt.ex"; ey: "bt.ey"; ez: "bt.ez"; fa: "bt.fa"; fb: "bt.fb"; fc: "bt.fc"; fd: "bt.fd"; fe: "bt.fe"; ff: "bt.ff"; fg: "bt.fg"; fh: "bt.fh"; fi: "bt.fi"; fj: "bt.fj"; fk: "bt.fk"; fl: "bt.fl"; fm: "bt.fm"; fn: "bt.fn"; fo: "bt.fo"; fp: "bt.fp"; fq: "bt.fq"; fr: "bt.fr"; fs: "bt.fs"; ft: "bt.ft"; fu: "bt.fu"; fv: "bt.fv"; fw: "bt.fw"; fx: "bt.fx"; fy: "bt.fy"; fz: "bt.fz"; ga: "bt.ga"; gb: "bt.gb"; gc: "bt.gc"; gd: "bt.gd"; ge: "bt.ge"; gf: "bt.gf"; gg: "bt.gg"; gh: "bt.gh"; gi: "bt.gi"; gj: "bt.gj"; gk: "bt.gk"; gl: "bt.gl"; gm: "bt.gm"; gn: "bt.gn"; go: "bt.go"; gp: "bt.gp"; gq: "bt.gq"; gr: "bt.gr"; gs: "bt.gs"; gt: "bt.gt"; gu: "bt.gu"; gv: "bt.gv"; gw: "bt.gw"; gx: "bt.gx"; gy: "bt.gy"; gz: "bt.gz"; ha: "bt.ha"; hb: "bt.hb"; hc: "bt.hc"; hd: "bt.hd"; he: "bt.he"; hf: "bt.hf"; hg: "bt.hg"; hh: "bt.hh"; hi: "bt.hi"; hj: "bt.hj"; hk: "bt.hk"; hl: "bt.hl"; hm: "bt.hm"; hn: "bt.hn"; ho: "bt.ho"; hp: "bt.hp"; hq: "bt.hq"; hr: "bt.hr"; hs: "bt.hs"; ht: "bt.ht"; hu: "bt.hu"; hv: "bt.hv"; hw: "bt.hw"; hx: "bt.hx"; hy: "bt.hy"; hz: "bt.hz"; ia: "bt.ia"; ib: "bt.ib"; ic: "bt.ic"; id: "bt.id"; ie: "bt.ie"; if: "bt.if"; ig: "bt.ig"; ih: "bt.ih"; ii: "bt.ii"; ij: "bt.ij"; ik: "bt.ik"; il: "bt.il"; im: "bt.im"; in: "bt.in"; io: "bt.io"; ip: "bt.ip"; iq: "bt.iq"; ir: "bt.ir"; is: "bt.is"; it: "bt.it"; iu: "bt.iu"; iv: "bt.iv"; iw: "bt.iw"; ix: "bt.ix"; iy: "bt.iy"; iz: "bt.iz"; ja: "bt.ja"; jb: "bt.jb"; jc: "bt.jc"; jd: "bt.jd"; je: "bt.je"; jf: "bt.jf"; jg: "bt.jg"; jh: "bt.jh"; ji: "bt.ji"; jj: "bt.jj"; jk: "bt.jk"; jl: "bt.jl"; jm: "bt.jm"; jn: "bt.jn"; jo: "bt.jo"; jp: "bt.jp"; jq: "bt.jq"; jr: "bt.jr"; js: "bt.js"; jt: "bt.jt"; ju: "bt.ju"; jv: "bt.jv"; jw: "bt.jw"; jx: "bt.jx"; jy: "bt.jy"; jz: "bt.jz"; ka: "bt.ka"; kb: "bt.kb"; kc: "bt.kc"; kd: "bt.kd"; ke: "bt.ke"; kf: "bt.kf"; kg: "bt.kg"; kh: "bt.kh"; ki: "bt.ki"; kj: "bt.kj"; kk: "bt.kk"; kl: "bt.kl"; km: "bt.km"; kn: "bt.kn"; ko: "bt.ko"; kp: "bt.kp"; kq: "bt.kq"; kr: "bt.kr"; ks: "bt.ks"; kt: "bt.kt"; ku: "bt.ku"; kv: "bt.kv"; kw: "bt.kw"; kx: "bt.kx"; ky: "bt.ky"; kz: "bt.kz"; la: "bt.la"; lb: "bt.lb"; lc: "bt.lc"; ld: "bt.ld"; le: "bt.le"; lf: "bt.lf"; lg: "bt.lg"; lh: "bt.lh"; li: "bt.li"; lj: "bt.lj"; lk: "bt.lk"; ll: "bt.ll"; lm: "bt.lm"; ln: "bt.ln"; lo: "bt.lo"; lp: "bt.lp"; lq: "bt.lq"; lr: "bt.lr"; ls: "bt.ls"; lt: "bt.lt"; lu: "bt.lu"; lv: "bt.lv"; lw: "bt.lw"; lx: "bt.lx"; ly: "bt.ly"; lz: "bt.lz"; ma: "bt.ma"; mb: "bt.mb"; mc: "bt.mc"; md: "bt.md"; me: "bt.me"; mf: "bt.mf"; mg: "bt.mg"; mh: "bt.mh"; mi: "bt.mi"; mj: "bt.mj"; mk: "bt.mk"; ml: "bt.ml"; mm: "bt.mm"; mn: "bt.mn"; mo: "bt.mo"; mp: "bt.mp"; mq: "bt.mq"; mr: "bt.mr"; ms: "bt.ms"; mt: "bt.mt"; mu: "bt.mu"; mv: "bt.mv"; mw: "bt.mw"; mx: "bt.mx"; my: "bt.my"; mz: "bt.mz"; na: "bt.na"; nb: "bt.nb"; nc: "bt.nc"; nd: "bt.nd"; ne: "bt.ne"; nf: "bt.nf"; ng: "bt.ng"; nh: "bt.nh"; ni: "bt.ni"; nj: "bt.nj"; nk: "bt.nk"; nl: "bt.nl"; nm: "bt.nm"; nn: "bt.nn"; no: "bt.no"; np: "bt.np"; nq: "bt.nq"; nr: "bt.nr"; ns: "bt.ns"; nt: "bt.nt"; nu: "bt.nu"; nv: "bt.nv"; nw: "bt.nw"; nx: "bt.nx"; ny: "bt.ny"; nz: "bt.nz"; oa: "bt.oa"; ob: "bt.ob"; oc: "bt.oc"; od: "bt.od"; oe: "bt.oe"; of: "bt.of"; og: "bt.og"; oh: "bt.oh"; oi: "bt.oi"; oj: "bt.oj"; ok: "bt.ok"; ol: "bt.ol"; om: "bt.om"; on: "bt.on"; oo: "bt.oo"; op: "bt.op"; oq: "bt.oq"; or: "bt.or"; os: "bt.os"; ot: "bt.ot"; ou: "bt.ou"; ov: "bt.ov"; ow: "bt.ow"; ox: "bt.ox"; oy: "bt.oy"; oz: "bt.oz"; pa: "bt.pa"; pb: "bt.pb"; pc: "bt.pc"; pd: "bt.pd"; pe: "bt.pe"; pf: "bt.pf"; pg: "bt.pg"; ph: "bt.ph"; pi: "bt.pi"; pj: "bt.pj"; pk: "bt.pk"; pl: "bt.pl"; pm: "bt.pm"; pn: "bt.pn"; po: "bt.po"; pp: "bt.pp"; pq: "bt.pq"; pr: "bt.pr"; ps: "bt.ps"; pt: "bt.pt"; pu: "bt.pu"; pv: "bt.pv"; pw: "bt.pw"; px: "bt.px"; py: "bt.py"; pz: "bt.pz"; qa: "bt.qa"; qb: "bt.qb"; qc: "bt.qc"; qd: "bt.qd"; qe: "bt.qe"; qf: "bt.qf"; qg: "bt.qg"; qh: "bt.qh"; qi: "bt.qi"; qj: "bt.qj"; qk: "bt.qk"; ql: "bt.ql"; qm: "bt.qm"; qn: "bt.qn"; qo: "bt.qo"; qp: "bt.qp"; qq: "bt.qq"; qr: "bt.qr"; qs: "bt.qs"; qt: "bt.qt"; qu: "bt.qu"; qv: "bt.qv"; qw: "bt.qw"; qx: "bt.qx"; qy: "bt.qy"; qz: "bt.qz"; ra: "bt.ra"; rb: "bt.rb"; rc: "bt.rc"; rd: "bt.rd"; re: "bt.re"; rf: "bt.rf"; rg: "bt.rg"; rh: "bt.rh"; ri: "bt.ri"; rj: "bt.rj"; rk: "bt.rk"; rl: "bt.rl"; rm: "bt.rm"; rn: "bt.rn"; ro: "bt.ro"; rp: "bt.rp"; rq: "bt.rq"; rr: "bt.rr"; rs: "bt.rs"; rt: "bt.rt"; ru: "bt.ru"; rv: "bt.rv"; rw: "bt.rw"; rx: "bt.rx"; ry: "bt.ry"; rz: "bt.rz"; sa: "bt.sa"; sb: "bt.sb"; sc: "bt.sc"; sd: "bt.sd"; se: "bt.se"; sf: "bt.sf"; sg: "bt.sg"; sh: "bt.sh"; si: "bt.si"; sj: "bt.sj"; sk: "bt.sk"; sl: "bt.sl"; sm: "bt.sm"; sn: "bt.sn"; so: "bt.so"; sp: "bt.sp"; sq: "bt.sq"; sr: "bt.sr"; ss: "bt.ss"; st: "bt.st"; su: "bt.su"; sv: "bt.sv"; sw: "bt.sw"; sx: "bt.sx"; sy: "bt.sy"; sz: "bt.sz"; ta: "bt.ta"; tb: "bt.tb"; tc: "bt.tc"; td: "bt.td"; te: "bt.te"; tf: "bt.tf"; tg: "bt.tg"; th: "bt.th"; ti: "bt.ti"; tj: "bt.tj"; tk: "bt.tk"; tl: "bt.tl"; tm: "bt.tm"; tn: "bt.tn"; to: "bt.to"; tp: "bt.tp"; tq: "bt.tq"; tr: "bt.tr"; ts: "bt.ts"; tt: "bt.tt"; tu: "bt.tu"; tv: "bt.tv"; tw: "bt.tw"; tx: "bt.tx"; ty: "bt.ty"; tz: "bt.tz"; ua: "bt.ua"; ub: "bt.ub"; uc: "bt.uc"; ud: "bt.ud"; ue: "bt.ue"; uf: "bt.uf"; ug: "bt.ug"; uh: "bt.uh"; ui: "bt.ui"; uj: "bt.uj"; uk: "bt.uk"; ul: "bt.ul"; um: "bt.um"; un: "bt.un"; uo: "bt.uo"; up: "bt.up"; uq: "bt.uq"; ur: "bt.ur"; us: "bt.us"; ut: "bt.ut"; uu: "bt.uu"; uv: "bt.uv"; uw: "bt.uw"; ux: "bt.ux"; uy: "bt.uy"; uz: "bt.uz"; va: "bt.va"; vb: "bt.vb"; vc: "bt.vc"; vd: "bt.vd"; ve: "bt.ve"; vf: "bt.vf"; vg: "bt.vg"; vh: "bt.vh"; vi: "bt.vi"; vj: "bt.vj"; vk: "bt.vk"; vl: "bt.vl"; vm: "bt.vm"; vn: "bt.vn"; vo: "bt.vo"; vp: "bt.vp"; vq: "bt.vq"; vr: "bt.vr"; vs: "bt.vs"; vt: "bt.vt"; vu: "bt.vu"; vv: "bt.vv"; vw: "bt.vw"; vx: "bt.vx"; vy: "bt.vy"; vz: "bt.vz"; wa: "bt.wa"; wb: "bt.wb"; wc: "bt.wc"; wd: "bt.wd"; we: "bt.we"; wf: "bt.wf"; wg: "bt.wg"; wh: "bt.wh"; wi: "bt.wi"; wj: "bt.wj"; wk: "bt.wk"; wl: "bt.wl"; wm: "bt.wm"; wn: "bt.wn"; wo: "bt.wo"; wp: "bt.wp"; wq: "bt.wq"; wr: "bt.wr"; ws: "bt.ws"; wt: "bt.wt"; wu: "bt.wu"; wv: "bt.wv"; ww: "bt.ww"; wx: "bt.wx"; wy: "bt.wy"; wz: "bt.wz"; xa: "bt.xa"; xb: "bt.xb"; xc: "bt.xc"; xd: "bt.xd"; xe: "bt.xe"; xf: "bt.xf"; xg: "bt.xg"; xh: "bt.xh"; xi: "bt.xi"; xj: "bt.xj"; xk: "bt.xk"; xl: "bt.xl"; xm: "bt.xm"; xn: "bt.xn"; xo: "bt.xo"; xp: "bt.xp"; xq: "bt.xq"; xr: "bt.xr"; xs: "bt.xs"; xt: "bt.xt"; xu: "bt.xu"; xv: "bt.xv"; xw: "bt.xw"; xx: "bt.xx"; xy: "bt.xy"; xz: "bt.xz"; ya: "bt.ya"; yb: "bt.yb"; yc: "bt.yc"; yd: "bt.yd"; ye: "bt.ye"; yf: "bt.yf"; yg: "bt.yg"; yh: "bt.yh"; yi: "bt.yi"; yj: "bt.yj"; yk: "bt.yk"; yl: "bt.yl"; ym: "bt.ym"; yn: "bt.yn"; yo: "bt.yo"; yp: "bt.yp"; yq: "bt.yq"; yr: "bt.yr"; ys: "bt.ys"; yt: "bt.yt"; yu: "bt.yu"; yv: "bt.yv"; yw: "bt.yw"; yx: "bt.yx"; yy: "bt.yy"; yz: "bt.yz"; za: "bt.za"; zb: "bt.zb"; zc: "bt.zc"; zd: "bt.zd"; ze: "bt.ze"; zf: "bt.zf"; zg: "bt.zg"; zh: "bt.zh"; zi: "bt.zi"; zj: "bt.zj"; zk: "bt.zk"; zl: "bt.zl"; zm: "bt.zm"; zn: "bt.zn"; zo: "bt.zo"; zp: "bt.zp"; zq: "bt.zq"; zr: "bt.zr"; zs: "bt.zs"; zt: "bt.zt"; zu: "bt.zu"; zv: "bt.zv"; zw: "bt.zw"; zx: "bt.zx"; zy: "bt.zy"; zz: "bt.zz"; }; bu: { aa: "bu.aa"; ab: "bu.ab"; ac: "bu.ac"; ad: "bu.ad"; ae: "bu.ae"; af: "bu.af"; ag: "bu.ag"; ah: "bu.ah"; ai: "bu.ai"; aj: "bu.aj"; ak: "bu.ak"; al: "bu.al"; am: "bu.am"; an: "bu.an"; ao: "bu.ao"; ap: "bu.ap"; aq: "bu.aq"; ar: "bu.ar"; as: "bu.as"; at: "bu.at"; au: "bu.au"; av: "bu.av"; aw: "bu.aw"; ax: "bu.ax"; ay: "bu.ay"; az: "bu.az"; ba: "bu.ba"; bb: "bu.bb"; bc: "bu.bc"; bd: "bu.bd"; be: "bu.be"; bf: "bu.bf"; bg: "bu.bg"; bh: "bu.bh"; bi: "bu.bi"; bj: "bu.bj"; bk: "bu.bk"; bl: "bu.bl"; bm: "bu.bm"; bn: "bu.bn"; bo: "bu.bo"; bp: "bu.bp"; bq: "bu.bq"; br: "bu.br"; bs: "bu.bs"; bt: "bu.bt"; bu: "bu.bu"; bv: "bu.bv"; bw: "bu.bw"; bx: "bu.bx"; by: "bu.by"; bz: "bu.bz"; ca: "bu.ca"; cb: "bu.cb"; cc: "bu.cc"; cd: "bu.cd"; ce: "bu.ce"; cf: "bu.cf"; cg: "bu.cg"; ch: "bu.ch"; ci: "bu.ci"; cj: "bu.cj"; ck: "bu.ck"; cl: "bu.cl"; cm: "bu.cm"; cn: "bu.cn"; co: "bu.co"; cp: "bu.cp"; cq: "bu.cq"; cr: "bu.cr"; cs: "bu.cs"; ct: "bu.ct"; cu: "bu.cu"; cv: "bu.cv"; cw: "bu.cw"; cx: "bu.cx"; cy: "bu.cy"; cz: "bu.cz"; da: "bu.da"; db: "bu.db"; dc: "bu.dc"; dd: "bu.dd"; de: "bu.de"; df: "bu.df"; dg: "bu.dg"; dh: "bu.dh"; di: "bu.di"; dj: "bu.dj"; dk: "bu.dk"; dl: "bu.dl"; dm: "bu.dm"; dn: "bu.dn"; do: "bu.do"; dp: "bu.dp"; dq: "bu.dq"; dr: "bu.dr"; ds: "bu.ds"; dt: "bu.dt"; du: "bu.du"; dv: "bu.dv"; dw: "bu.dw"; dx: "bu.dx"; dy: "bu.dy"; dz: "bu.dz"; ea: "bu.ea"; eb: "bu.eb"; ec: "bu.ec"; ed: "bu.ed"; ee: "bu.ee"; ef: "bu.ef"; eg: "bu.eg"; eh: "bu.eh"; ei: "bu.ei"; ej: "bu.ej"; ek: "bu.ek"; el: "bu.el"; em: "bu.em"; en: "bu.en"; eo: "bu.eo"; ep: "bu.ep"; eq: "bu.eq"; er: "bu.er"; es: "bu.es"; et: "bu.et"; eu: "bu.eu"; ev: "bu.ev"; ew: "bu.ew"; ex: "bu.ex"; ey: "bu.ey"; ez: "bu.ez"; fa: "bu.fa"; fb: "bu.fb"; fc: "bu.fc"; fd: "bu.fd"; fe: "bu.fe"; ff: "bu.ff"; fg: "bu.fg"; fh: "bu.fh"; fi: "bu.fi"; fj: "bu.fj"; fk: "bu.fk"; fl: "bu.fl"; fm: "bu.fm"; fn: "bu.fn"; fo: "bu.fo"; fp: "bu.fp"; fq: "bu.fq"; fr: "bu.fr"; fs: "bu.fs"; ft: "bu.ft"; fu: "bu.fu"; fv: "bu.fv"; fw: "bu.fw"; fx: "bu.fx"; fy: "bu.fy"; fz: "bu.fz"; ga: "bu.ga"; gb: "bu.gb"; gc: "bu.gc"; gd: "bu.gd"; ge: "bu.ge"; gf: "bu.gf"; gg: "bu.gg"; gh: "bu.gh"; gi: "bu.gi"; gj: "bu.gj"; gk: "bu.gk"; gl: "bu.gl"; gm: "bu.gm"; gn: "bu.gn"; go: "bu.go"; gp: "bu.gp"; gq: "bu.gq"; gr: "bu.gr"; gs: "bu.gs"; gt: "bu.gt"; gu: "bu.gu"; gv: "bu.gv"; gw: "bu.gw"; gx: "bu.gx"; gy: "bu.gy"; gz: "bu.gz"; ha: "bu.ha"; hb: "bu.hb"; hc: "bu.hc"; hd: "bu.hd"; he: "bu.he"; hf: "bu.hf"; hg: "bu.hg"; hh: "bu.hh"; hi: "bu.hi"; hj: "bu.hj"; hk: "bu.hk"; hl: "bu.hl"; hm: "bu.hm"; hn: "bu.hn"; ho: "bu.ho"; hp: "bu.hp"; hq: "bu.hq"; hr: "bu.hr"; hs: "bu.hs"; ht: "bu.ht"; hu: "bu.hu"; hv: "bu.hv"; hw: "bu.hw"; hx: "bu.hx"; hy: "bu.hy"; hz: "bu.hz"; ia: "bu.ia"; ib: "bu.ib"; ic: "bu.ic"; id: "bu.id"; ie: "bu.ie"; if: "bu.if"; ig: "bu.ig"; ih: "bu.ih"; ii: "bu.ii"; ij: "bu.ij"; ik: "bu.ik"; il: "bu.il"; im: "bu.im"; in: "bu.in"; io: "bu.io"; ip: "bu.ip"; iq: "bu.iq"; ir: "bu.ir"; is: "bu.is"; it: "bu.it"; iu: "bu.iu"; iv: "bu.iv"; iw: "bu.iw"; ix: "bu.ix"; iy: "bu.iy"; iz: "bu.iz"; ja: "bu.ja"; jb: "bu.jb"; jc: "bu.jc"; jd: "bu.jd"; je: "bu.je"; jf: "bu.jf"; jg: "bu.jg"; jh: "bu.jh"; ji: "bu.ji"; jj: "bu.jj"; jk: "bu.jk"; jl: "bu.jl"; jm: "bu.jm"; jn: "bu.jn"; jo: "bu.jo"; jp: "bu.jp"; jq: "bu.jq"; jr: "bu.jr"; js: "bu.js"; jt: "bu.jt"; ju: "bu.ju"; jv: "bu.jv"; jw: "bu.jw"; jx: "bu.jx"; jy: "bu.jy"; jz: "bu.jz"; ka: "bu.ka"; kb: "bu.kb"; kc: "bu.kc"; kd: "bu.kd"; ke: "bu.ke"; kf: "bu.kf"; kg: "bu.kg"; kh: "bu.kh"; ki: "bu.ki"; kj: "bu.kj"; kk: "bu.kk"; kl: "bu.kl"; km: "bu.km"; kn: "bu.kn"; ko: "bu.ko"; kp: "bu.kp"; kq: "bu.kq"; kr: "bu.kr"; ks: "bu.ks"; kt: "bu.kt"; ku: "bu.ku"; kv: "bu.kv"; kw: "bu.kw"; kx: "bu.kx"; ky: "bu.ky"; kz: "bu.kz"; la: "bu.la"; lb: "bu.lb"; lc: "bu.lc"; ld: "bu.ld"; le: "bu.le"; lf: "bu.lf"; lg: "bu.lg"; lh: "bu.lh"; li: "bu.li"; lj: "bu.lj"; lk: "bu.lk"; ll: "bu.ll"; lm: "bu.lm"; ln: "bu.ln"; lo: "bu.lo"; lp: "bu.lp"; lq: "bu.lq"; lr: "bu.lr"; ls: "bu.ls"; lt: "bu.lt"; lu: "bu.lu"; lv: "bu.lv"; lw: "bu.lw"; lx: "bu.lx"; ly: "bu.ly"; lz: "bu.lz"; ma: "bu.ma"; mb: "bu.mb"; mc: "bu.mc"; md: "bu.md"; me: "bu.me"; mf: "bu.mf"; mg: "bu.mg"; mh: "bu.mh"; mi: "bu.mi"; mj: "bu.mj"; mk: "bu.mk"; ml: "bu.ml"; mm: "bu.mm"; mn: "bu.mn"; mo: "bu.mo"; mp: "bu.mp"; mq: "bu.mq"; mr: "bu.mr"; ms: "bu.ms"; mt: "bu.mt"; mu: "bu.mu"; mv: "bu.mv"; mw: "bu.mw"; mx: "bu.mx"; my: "bu.my"; mz: "bu.mz"; na: "bu.na"; nb: "bu.nb"; nc: "bu.nc"; nd: "bu.nd"; ne: "bu.ne"; nf: "bu.nf"; ng: "bu.ng"; nh: "bu.nh"; ni: "bu.ni"; nj: "bu.nj"; nk: "bu.nk"; nl: "bu.nl"; nm: "bu.nm"; nn: "bu.nn"; no: "bu.no"; np: "bu.np"; nq: "bu.nq"; nr: "bu.nr"; ns: "bu.ns"; nt: "bu.nt"; nu: "bu.nu"; nv: "bu.nv"; nw: "bu.nw"; nx: "bu.nx"; ny: "bu.ny"; nz: "bu.nz"; oa: "bu.oa"; ob: "bu.ob"; oc: "bu.oc"; od: "bu.od"; oe: "bu.oe"; of: "bu.of"; og: "bu.og"; oh: "bu.oh"; oi: "bu.oi"; oj: "bu.oj"; ok: "bu.ok"; ol: "bu.ol"; om: "bu.om"; on: "bu.on"; oo: "bu.oo"; op: "bu.op"; oq: "bu.oq"; or: "bu.or"; os: "bu.os"; ot: "bu.ot"; ou: "bu.ou"; ov: "bu.ov"; ow: "bu.ow"; ox: "bu.ox"; oy: "bu.oy"; oz: "bu.oz"; pa: "bu.pa"; pb: "bu.pb"; pc: "bu.pc"; pd: "bu.pd"; pe: "bu.pe"; pf: "bu.pf"; pg: "bu.pg"; ph: "bu.ph"; pi: "bu.pi"; pj: "bu.pj"; pk: "bu.pk"; pl: "bu.pl"; pm: "bu.pm"; pn: "bu.pn"; po: "bu.po"; pp: "bu.pp"; pq: "bu.pq"; pr: "bu.pr"; ps: "bu.ps"; pt: "bu.pt"; pu: "bu.pu"; pv: "bu.pv"; pw: "bu.pw"; px: "bu.px"; py: "bu.py"; pz: "bu.pz"; qa: "bu.qa"; qb: "bu.qb"; qc: "bu.qc"; qd: "bu.qd"; qe: "bu.qe"; qf: "bu.qf"; qg: "bu.qg"; qh: "bu.qh"; qi: "bu.qi"; qj: "bu.qj"; qk: "bu.qk"; ql: "bu.ql"; qm: "bu.qm"; qn: "bu.qn"; qo: "bu.qo"; qp: "bu.qp"; qq: "bu.qq"; qr: "bu.qr"; qs: "bu.qs"; qt: "bu.qt"; qu: "bu.qu"; qv: "bu.qv"; qw: "bu.qw"; qx: "bu.qx"; qy: "bu.qy"; qz: "bu.qz"; ra: "bu.ra"; rb: "bu.rb"; rc: "bu.rc"; rd: "bu.rd"; re: "bu.re"; rf: "bu.rf"; rg: "bu.rg"; rh: "bu.rh"; ri: "bu.ri"; rj: "bu.rj"; rk: "bu.rk"; rl: "bu.rl"; rm: "bu.rm"; rn: "bu.rn"; ro: "bu.ro"; rp: "bu.rp"; rq: "bu.rq"; rr: "bu.rr"; rs: "bu.rs"; rt: "bu.rt"; ru: "bu.ru"; rv: "bu.rv"; rw: "bu.rw"; rx: "bu.rx"; ry: "bu.ry"; rz: "bu.rz"; sa: "bu.sa"; sb: "bu.sb"; sc: "bu.sc"; sd: "bu.sd"; se: "bu.se"; sf: "bu.sf"; sg: "bu.sg"; sh: "bu.sh"; si: "bu.si"; sj: "bu.sj"; sk: "bu.sk"; sl: "bu.sl"; sm: "bu.sm"; sn: "bu.sn"; so: "bu.so"; sp: "bu.sp"; sq: "bu.sq"; sr: "bu.sr"; ss: "bu.ss"; st: "bu.st"; su: "bu.su"; sv: "bu.sv"; sw: "bu.sw"; sx: "bu.sx"; sy: "bu.sy"; sz: "bu.sz"; ta: "bu.ta"; tb: "bu.tb"; tc: "bu.tc"; td: "bu.td"; te: "bu.te"; tf: "bu.tf"; tg: "bu.tg"; th: "bu.th"; ti: "bu.ti"; tj: "bu.tj"; tk: "bu.tk"; tl: "bu.tl"; tm: "bu.tm"; tn: "bu.tn"; to: "bu.to"; tp: "bu.tp"; tq: "bu.tq"; tr: "bu.tr"; ts: "bu.ts"; tt: "bu.tt"; tu: "bu.tu"; tv: "bu.tv"; tw: "bu.tw"; tx: "bu.tx"; ty: "bu.ty"; tz: "bu.tz"; ua: "bu.ua"; ub: "bu.ub"; uc: "bu.uc"; ud: "bu.ud"; ue: "bu.ue"; uf: "bu.uf"; ug: "bu.ug"; uh: "bu.uh"; ui: "bu.ui"; uj: "bu.uj"; uk: "bu.uk"; ul: "bu.ul"; um: "bu.um"; un: "bu.un"; uo: "bu.uo"; up: "bu.up"; uq: "bu.uq"; ur: "bu.ur"; us: "bu.us"; ut: "bu.ut"; uu: "bu.uu"; uv: "bu.uv"; uw: "bu.uw"; ux: "bu.ux"; uy: "bu.uy"; uz: "bu.uz"; va: "bu.va"; vb: "bu.vb"; vc: "bu.vc"; vd: "bu.vd"; ve: "bu.ve"; vf: "bu.vf"; vg: "bu.vg"; vh: "bu.vh"; vi: "bu.vi"; vj: "bu.vj"; vk: "bu.vk"; vl: "bu.vl"; vm: "bu.vm"; vn: "bu.vn"; vo: "bu.vo"; vp: "bu.vp"; vq: "bu.vq"; vr: "bu.vr"; vs: "bu.vs"; vt: "bu.vt"; vu: "bu.vu"; vv: "bu.vv"; vw: "bu.vw"; vx: "bu.vx"; vy: "bu.vy"; vz: "bu.vz"; wa: "bu.wa"; wb: "bu.wb"; wc: "bu.wc"; wd: "bu.wd"; we: "bu.we"; wf: "bu.wf"; wg: "bu.wg"; wh: "bu.wh"; wi: "bu.wi"; wj: "bu.wj"; wk: "bu.wk"; wl: "bu.wl"; wm: "bu.wm"; wn: "bu.wn"; wo: "bu.wo"; wp: "bu.wp"; wq: "bu.wq"; wr: "bu.wr"; ws: "bu.ws"; wt: "bu.wt"; wu: "bu.wu"; wv: "bu.wv"; ww: "bu.ww"; wx: "bu.wx"; wy: "bu.wy"; wz: "bu.wz"; xa: "bu.xa"; xb: "bu.xb"; xc: "bu.xc"; xd: "bu.xd"; xe: "bu.xe"; xf: "bu.xf"; xg: "bu.xg"; xh: "bu.xh"; xi: "bu.xi"; xj: "bu.xj"; xk: "bu.xk"; xl: "bu.xl"; xm: "bu.xm"; xn: "bu.xn"; xo: "bu.xo"; xp: "bu.xp"; xq: "bu.xq"; xr: "bu.xr"; xs: "bu.xs"; xt: "bu.xt"; xu: "bu.xu"; xv: "bu.xv"; xw: "bu.xw"; xx: "bu.xx"; xy: "bu.xy"; xz: "bu.xz"; ya: "bu.ya"; yb: "bu.yb"; yc: "bu.yc"; yd: "bu.yd"; ye: "bu.ye"; yf: "bu.yf"; yg: "bu.yg"; yh: "bu.yh"; yi: "bu.yi"; yj: "bu.yj"; yk: "bu.yk"; yl: "bu.yl"; ym: "bu.ym"; yn: "bu.yn"; yo: "bu.yo"; yp: "bu.yp"; yq: "bu.yq"; yr: "bu.yr"; ys: "bu.ys"; yt: "bu.yt"; yu: "bu.yu"; yv: "bu.yv"; yw: "bu.yw"; yx: "bu.yx"; yy: "bu.yy"; yz: "bu.yz"; za: "bu.za"; zb: "bu.zb"; zc: "bu.zc"; zd: "bu.zd"; ze: "bu.ze"; zf: "bu.zf"; zg: "bu.zg"; zh: "bu.zh"; zi: "bu.zi"; zj: "bu.zj"; zk: "bu.zk"; zl: "bu.zl"; zm: "bu.zm"; zn: "bu.zn"; zo: "bu.zo"; zp: "bu.zp"; zq: "bu.zq"; zr: "bu.zr"; zs: "bu.zs"; zt: "bu.zt"; zu: "bu.zu"; zv: "bu.zv"; zw: "bu.zw"; zx: "bu.zx"; zy: "bu.zy"; zz: "bu.zz"; }; bv: { aa: "bv.aa"; ab: "bv.ab"; ac: "bv.ac"; ad: "bv.ad"; ae: "bv.ae"; af: "bv.af"; ag: "bv.ag"; ah: "bv.ah"; ai: "bv.ai"; aj: "bv.aj"; ak: "bv.ak"; al: "bv.al"; am: "bv.am"; an: "bv.an"; ao: "bv.ao"; ap: "bv.ap"; aq: "bv.aq"; ar: "bv.ar"; as: "bv.as"; at: "bv.at"; au: "bv.au"; av: "bv.av"; aw: "bv.aw"; ax: "bv.ax"; ay: "bv.ay"; az: "bv.az"; ba: "bv.ba"; bb: "bv.bb"; bc: "bv.bc"; bd: "bv.bd"; be: "bv.be"; bf: "bv.bf"; bg: "bv.bg"; bh: "bv.bh"; bi: "bv.bi"; bj: "bv.bj"; bk: "bv.bk"; bl: "bv.bl"; bm: "bv.bm"; bn: "bv.bn"; bo: "bv.bo"; bp: "bv.bp"; bq: "bv.bq"; br: "bv.br"; bs: "bv.bs"; bt: "bv.bt"; bu: "bv.bu"; bv: "bv.bv"; bw: "bv.bw"; bx: "bv.bx"; by: "bv.by"; bz: "bv.bz"; ca: "bv.ca"; cb: "bv.cb"; cc: "bv.cc"; cd: "bv.cd"; ce: "bv.ce"; cf: "bv.cf"; cg: "bv.cg"; ch: "bv.ch"; ci: "bv.ci"; cj: "bv.cj"; ck: "bv.ck"; cl: "bv.cl"; cm: "bv.cm"; cn: "bv.cn"; co: "bv.co"; cp: "bv.cp"; cq: "bv.cq"; cr: "bv.cr"; cs: "bv.cs"; ct: "bv.ct"; cu: "bv.cu"; cv: "bv.cv"; cw: "bv.cw"; cx: "bv.cx"; cy: "bv.cy"; cz: "bv.cz"; da: "bv.da"; db: "bv.db"; dc: "bv.dc"; dd: "bv.dd"; de: "bv.de"; df: "bv.df"; dg: "bv.dg"; dh: "bv.dh"; di: "bv.di"; dj: "bv.dj"; dk: "bv.dk"; dl: "bv.dl"; dm: "bv.dm"; dn: "bv.dn"; do: "bv.do"; dp: "bv.dp"; dq: "bv.dq"; dr: "bv.dr"; ds: "bv.ds"; dt: "bv.dt"; du: "bv.du"; dv: "bv.dv"; dw: "bv.dw"; dx: "bv.dx"; dy: "bv.dy"; dz: "bv.dz"; ea: "bv.ea"; eb: "bv.eb"; ec: "bv.ec"; ed: "bv.ed"; ee: "bv.ee"; ef: "bv.ef"; eg: "bv.eg"; eh: "bv.eh"; ei: "bv.ei"; ej: "bv.ej"; ek: "bv.ek"; el: "bv.el"; em: "bv.em"; en: "bv.en"; eo: "bv.eo"; ep: "bv.ep"; eq: "bv.eq"; er: "bv.er"; es: "bv.es"; et: "bv.et"; eu: "bv.eu"; ev: "bv.ev"; ew: "bv.ew"; ex: "bv.ex"; ey: "bv.ey"; ez: "bv.ez"; fa: "bv.fa"; fb: "bv.fb"; fc: "bv.fc"; fd: "bv.fd"; fe: "bv.fe"; ff: "bv.ff"; fg: "bv.fg"; fh: "bv.fh"; fi: "bv.fi"; fj: "bv.fj"; fk: "bv.fk"; fl: "bv.fl"; fm: "bv.fm"; fn: "bv.fn"; fo: "bv.fo"; fp: "bv.fp"; fq: "bv.fq"; fr: "bv.fr"; fs: "bv.fs"; ft: "bv.ft"; fu: "bv.fu"; fv: "bv.fv"; fw: "bv.fw"; fx: "bv.fx"; fy: "bv.fy"; fz: "bv.fz"; ga: "bv.ga"; gb: "bv.gb"; gc: "bv.gc"; gd: "bv.gd"; ge: "bv.ge"; gf: "bv.gf"; gg: "bv.gg"; gh: "bv.gh"; gi: "bv.gi"; gj: "bv.gj"; gk: "bv.gk"; gl: "bv.gl"; gm: "bv.gm"; gn: "bv.gn"; go: "bv.go"; gp: "bv.gp"; gq: "bv.gq"; gr: "bv.gr"; gs: "bv.gs"; gt: "bv.gt"; gu: "bv.gu"; gv: "bv.gv"; gw: "bv.gw"; gx: "bv.gx"; gy: "bv.gy"; gz: "bv.gz"; ha: "bv.ha"; hb: "bv.hb"; hc: "bv.hc"; hd: "bv.hd"; he: "bv.he"; hf: "bv.hf"; hg: "bv.hg"; hh: "bv.hh"; hi: "bv.hi"; hj: "bv.hj"; hk: "bv.hk"; hl: "bv.hl"; hm: "bv.hm"; hn: "bv.hn"; ho: "bv.ho"; hp: "bv.hp"; hq: "bv.hq"; hr: "bv.hr"; hs: "bv.hs"; ht: "bv.ht"; hu: "bv.hu"; hv: "bv.hv"; hw: "bv.hw"; hx: "bv.hx"; hy: "bv.hy"; hz: "bv.hz"; ia: "bv.ia"; ib: "bv.ib"; ic: "bv.ic"; id: "bv.id"; ie: "bv.ie"; if: "bv.if"; ig: "bv.ig"; ih: "bv.ih"; ii: "bv.ii"; ij: "bv.ij"; ik: "bv.ik"; il: "bv.il"; im: "bv.im"; in: "bv.in"; io: "bv.io"; ip: "bv.ip"; iq: "bv.iq"; ir: "bv.ir"; is: "bv.is"; it: "bv.it"; iu: "bv.iu"; iv: "bv.iv"; iw: "bv.iw"; ix: "bv.ix"; iy: "bv.iy"; iz: "bv.iz"; ja: "bv.ja"; jb: "bv.jb"; jc: "bv.jc"; jd: "bv.jd"; je: "bv.je"; jf: "bv.jf"; jg: "bv.jg"; jh: "bv.jh"; ji: "bv.ji"; jj: "bv.jj"; jk: "bv.jk"; jl: "bv.jl"; jm: "bv.jm"; jn: "bv.jn"; jo: "bv.jo"; jp: "bv.jp"; jq: "bv.jq"; jr: "bv.jr"; js: "bv.js"; jt: "bv.jt"; ju: "bv.ju"; jv: "bv.jv"; jw: "bv.jw"; jx: "bv.jx"; jy: "bv.jy"; jz: "bv.jz"; ka: "bv.ka"; kb: "bv.kb"; kc: "bv.kc"; kd: "bv.kd"; ke: "bv.ke"; kf: "bv.kf"; kg: "bv.kg"; kh: "bv.kh"; ki: "bv.ki"; kj: "bv.kj"; kk: "bv.kk"; kl: "bv.kl"; km: "bv.km"; kn: "bv.kn"; ko: "bv.ko"; kp: "bv.kp"; kq: "bv.kq"; kr: "bv.kr"; ks: "bv.ks"; kt: "bv.kt"; ku: "bv.ku"; kv: "bv.kv"; kw: "bv.kw"; kx: "bv.kx"; ky: "bv.ky"; kz: "bv.kz"; la: "bv.la"; lb: "bv.lb"; lc: "bv.lc"; ld: "bv.ld"; le: "bv.le"; lf: "bv.lf"; lg: "bv.lg"; lh: "bv.lh"; li: "bv.li"; lj: "bv.lj"; lk: "bv.lk"; ll: "bv.ll"; lm: "bv.lm"; ln: "bv.ln"; lo: "bv.lo"; lp: "bv.lp"; lq: "bv.lq"; lr: "bv.lr"; ls: "bv.ls"; lt: "bv.lt"; lu: "bv.lu"; lv: "bv.lv"; lw: "bv.lw"; lx: "bv.lx"; ly: "bv.ly"; lz: "bv.lz"; ma: "bv.ma"; mb: "bv.mb"; mc: "bv.mc"; md: "bv.md"; me: "bv.me"; mf: "bv.mf"; mg: "bv.mg"; mh: "bv.mh"; mi: "bv.mi"; mj: "bv.mj"; mk: "bv.mk"; ml: "bv.ml"; mm: "bv.mm"; mn: "bv.mn"; mo: "bv.mo"; mp: "bv.mp"; mq: "bv.mq"; mr: "bv.mr"; ms: "bv.ms"; mt: "bv.mt"; mu: "bv.mu"; mv: "bv.mv"; mw: "bv.mw"; mx: "bv.mx"; my: "bv.my"; mz: "bv.mz"; na: "bv.na"; nb: "bv.nb"; nc: "bv.nc"; nd: "bv.nd"; ne: "bv.ne"; nf: "bv.nf"; ng: "bv.ng"; nh: "bv.nh"; ni: "bv.ni"; nj: "bv.nj"; nk: "bv.nk"; nl: "bv.nl"; nm: "bv.nm"; nn: "bv.nn"; no: "bv.no"; np: "bv.np"; nq: "bv.nq"; nr: "bv.nr"; ns: "bv.ns"; nt: "bv.nt"; nu: "bv.nu"; nv: "bv.nv"; nw: "bv.nw"; nx: "bv.nx"; ny: "bv.ny"; nz: "bv.nz"; oa: "bv.oa"; ob: "bv.ob"; oc: "bv.oc"; od: "bv.od"; oe: "bv.oe"; of: "bv.of"; og: "bv.og"; oh: "bv.oh"; oi: "bv.oi"; oj: "bv.oj"; ok: "bv.ok"; ol: "bv.ol"; om: "bv.om"; on: "bv.on"; oo: "bv.oo"; op: "bv.op"; oq: "bv.oq"; or: "bv.or"; os: "bv.os"; ot: "bv.ot"; ou: "bv.ou"; ov: "bv.ov"; ow: "bv.ow"; ox: "bv.ox"; oy: "bv.oy"; oz: "bv.oz"; pa: "bv.pa"; pb: "bv.pb"; pc: "bv.pc"; pd: "bv.pd"; pe: "bv.pe"; pf: "bv.pf"; pg: "bv.pg"; ph: "bv.ph"; pi: "bv.pi"; pj: "bv.pj"; pk: "bv.pk"; pl: "bv.pl"; pm: "bv.pm"; pn: "bv.pn"; po: "bv.po"; pp: "bv.pp"; pq: "bv.pq"; pr: "bv.pr"; ps: "bv.ps"; pt: "bv.pt"; pu: "bv.pu"; pv: "bv.pv"; pw: "bv.pw"; px: "bv.px"; py: "bv.py"; pz: "bv.pz"; qa: "bv.qa"; qb: "bv.qb"; qc: "bv.qc"; qd: "bv.qd"; qe: "bv.qe"; qf: "bv.qf"; qg: "bv.qg"; qh: "bv.qh"; qi: "bv.qi"; qj: "bv.qj"; qk: "bv.qk"; ql: "bv.ql"; qm: "bv.qm"; qn: "bv.qn"; qo: "bv.qo"; qp: "bv.qp"; qq: "bv.qq"; qr: "bv.qr"; qs: "bv.qs"; qt: "bv.qt"; qu: "bv.qu"; qv: "bv.qv"; qw: "bv.qw"; qx: "bv.qx"; qy: "bv.qy"; qz: "bv.qz"; ra: "bv.ra"; rb: "bv.rb"; rc: "bv.rc"; rd: "bv.rd"; re: "bv.re"; rf: "bv.rf"; rg: "bv.rg"; rh: "bv.rh"; ri: "bv.ri"; rj: "bv.rj"; rk: "bv.rk"; rl: "bv.rl"; rm: "bv.rm"; rn: "bv.rn"; ro: "bv.ro"; rp: "bv.rp"; rq: "bv.rq"; rr: "bv.rr"; rs: "bv.rs"; rt: "bv.rt"; ru: "bv.ru"; rv: "bv.rv"; rw: "bv.rw"; rx: "bv.rx"; ry: "bv.ry"; rz: "bv.rz"; sa: "bv.sa"; sb: "bv.sb"; sc: "bv.sc"; sd: "bv.sd"; se: "bv.se"; sf: "bv.sf"; sg: "bv.sg"; sh: "bv.sh"; si: "bv.si"; sj: "bv.sj"; sk: "bv.sk"; sl: "bv.sl"; sm: "bv.sm"; sn: "bv.sn"; so: "bv.so"; sp: "bv.sp"; sq: "bv.sq"; sr: "bv.sr"; ss: "bv.ss"; st: "bv.st"; su: "bv.su"; sv: "bv.sv"; sw: "bv.sw"; sx: "bv.sx"; sy: "bv.sy"; sz: "bv.sz"; ta: "bv.ta"; tb: "bv.tb"; tc: "bv.tc"; td: "bv.td"; te: "bv.te"; tf: "bv.tf"; tg: "bv.tg"; th: "bv.th"; ti: "bv.ti"; tj: "bv.tj"; tk: "bv.tk"; tl: "bv.tl"; tm: "bv.tm"; tn: "bv.tn"; to: "bv.to"; tp: "bv.tp"; tq: "bv.tq"; tr: "bv.tr"; ts: "bv.ts"; tt: "bv.tt"; tu: "bv.tu"; tv: "bv.tv"; tw: "bv.tw"; tx: "bv.tx"; ty: "bv.ty"; tz: "bv.tz"; ua: "bv.ua"; ub: "bv.ub"; uc: "bv.uc"; ud: "bv.ud"; ue: "bv.ue"; uf: "bv.uf"; ug: "bv.ug"; uh: "bv.uh"; ui: "bv.ui"; uj: "bv.uj"; uk: "bv.uk"; ul: "bv.ul"; um: "bv.um"; un: "bv.un"; uo: "bv.uo"; up: "bv.up"; uq: "bv.uq"; ur: "bv.ur"; us: "bv.us"; ut: "bv.ut"; uu: "bv.uu"; uv: "bv.uv"; uw: "bv.uw"; ux: "bv.ux"; uy: "bv.uy"; uz: "bv.uz"; va: "bv.va"; vb: "bv.vb"; vc: "bv.vc"; vd: "bv.vd"; ve: "bv.ve"; vf: "bv.vf"; vg: "bv.vg"; vh: "bv.vh"; vi: "bv.vi"; vj: "bv.vj"; vk: "bv.vk"; vl: "bv.vl"; vm: "bv.vm"; vn: "bv.vn"; vo: "bv.vo"; vp: "bv.vp"; vq: "bv.vq"; vr: "bv.vr"; vs: "bv.vs"; vt: "bv.vt"; vu: "bv.vu"; vv: "bv.vv"; vw: "bv.vw"; vx: "bv.vx"; vy: "bv.vy"; vz: "bv.vz"; wa: "bv.wa"; wb: "bv.wb"; wc: "bv.wc"; wd: "bv.wd"; we: "bv.we"; wf: "bv.wf"; wg: "bv.wg"; wh: "bv.wh"; wi: "bv.wi"; wj: "bv.wj"; wk: "bv.wk"; wl: "bv.wl"; wm: "bv.wm"; wn: "bv.wn"; wo: "bv.wo"; wp: "bv.wp"; wq: "bv.wq"; wr: "bv.wr"; ws: "bv.ws"; wt: "bv.wt"; wu: "bv.wu"; wv: "bv.wv"; ww: "bv.ww"; wx: "bv.wx"; wy: "bv.wy"; wz: "bv.wz"; xa: "bv.xa"; xb: "bv.xb"; xc: "bv.xc"; xd: "bv.xd"; xe: "bv.xe"; xf: "bv.xf"; xg: "bv.xg"; xh: "bv.xh"; xi: "bv.xi"; xj: "bv.xj"; xk: "bv.xk"; xl: "bv.xl"; xm: "bv.xm"; xn: "bv.xn"; xo: "bv.xo"; xp: "bv.xp"; xq: "bv.xq"; xr: "bv.xr"; xs: "bv.xs"; xt: "bv.xt"; xu: "bv.xu"; xv: "bv.xv"; xw: "bv.xw"; xx: "bv.xx"; xy: "bv.xy"; xz: "bv.xz"; ya: "bv.ya"; yb: "bv.yb"; yc: "bv.yc"; yd: "bv.yd"; ye: "bv.ye"; yf: "bv.yf"; yg: "bv.yg"; yh: "bv.yh"; yi: "bv.yi"; yj: "bv.yj"; yk: "bv.yk"; yl: "bv.yl"; ym: "bv.ym"; yn: "bv.yn"; yo: "bv.yo"; yp: "bv.yp"; yq: "bv.yq"; yr: "bv.yr"; ys: "bv.ys"; yt: "bv.yt"; yu: "bv.yu"; yv: "bv.yv"; yw: "bv.yw"; yx: "bv.yx"; yy: "bv.yy"; yz: "bv.yz"; za: "bv.za"; zb: "bv.zb"; zc: "bv.zc"; zd: "bv.zd"; ze: "bv.ze"; zf: "bv.zf"; zg: "bv.zg"; zh: "bv.zh"; zi: "bv.zi"; zj: "bv.zj"; zk: "bv.zk"; zl: "bv.zl"; zm: "bv.zm"; zn: "bv.zn"; zo: "bv.zo"; zp: "bv.zp"; zq: "bv.zq"; zr: "bv.zr"; zs: "bv.zs"; zt: "bv.zt"; zu: "bv.zu"; zv: "bv.zv"; zw: "bv.zw"; zx: "bv.zx"; zy: "bv.zy"; zz: "bv.zz"; }; bw: { aa: "bw.aa"; ab: "bw.ab"; ac: "bw.ac"; ad: "bw.ad"; ae: "bw.ae"; af: "bw.af"; ag: "bw.ag"; ah: "bw.ah"; ai: "bw.ai"; aj: "bw.aj"; ak: "bw.ak"; al: "bw.al"; am: "bw.am"; an: "bw.an"; ao: "bw.ao"; ap: "bw.ap"; aq: "bw.aq"; ar: "bw.ar"; as: "bw.as"; at: "bw.at"; au: "bw.au"; av: "bw.av"; aw: "bw.aw"; ax: "bw.ax"; ay: "bw.ay"; az: "bw.az"; ba: "bw.ba"; bb: "bw.bb"; bc: "bw.bc"; bd: "bw.bd"; be: "bw.be"; bf: "bw.bf"; bg: "bw.bg"; bh: "bw.bh"; bi: "bw.bi"; bj: "bw.bj"; bk: "bw.bk"; bl: "bw.bl"; bm: "bw.bm"; bn: "bw.bn"; bo: "bw.bo"; bp: "bw.bp"; bq: "bw.bq"; br: "bw.br"; bs: "bw.bs"; bt: "bw.bt"; bu: "bw.bu"; bv: "bw.bv"; bw: "bw.bw"; bx: "bw.bx"; by: "bw.by"; bz: "bw.bz"; ca: "bw.ca"; cb: "bw.cb"; cc: "bw.cc"; cd: "bw.cd"; ce: "bw.ce"; cf: "bw.cf"; cg: "bw.cg"; ch: "bw.ch"; ci: "bw.ci"; cj: "bw.cj"; ck: "bw.ck"; cl: "bw.cl"; cm: "bw.cm"; cn: "bw.cn"; co: "bw.co"; cp: "bw.cp"; cq: "bw.cq"; cr: "bw.cr"; cs: "bw.cs"; ct: "bw.ct"; cu: "bw.cu"; cv: "bw.cv"; cw: "bw.cw"; cx: "bw.cx"; cy: "bw.cy"; cz: "bw.cz"; da: "bw.da"; db: "bw.db"; dc: "bw.dc"; dd: "bw.dd"; de: "bw.de"; df: "bw.df"; dg: "bw.dg"; dh: "bw.dh"; di: "bw.di"; dj: "bw.dj"; dk: "bw.dk"; dl: "bw.dl"; dm: "bw.dm"; dn: "bw.dn"; do: "bw.do"; dp: "bw.dp"; dq: "bw.dq"; dr: "bw.dr"; ds: "bw.ds"; dt: "bw.dt"; du: "bw.du"; dv: "bw.dv"; dw: "bw.dw"; dx: "bw.dx"; dy: "bw.dy"; dz: "bw.dz"; ea: "bw.ea"; eb: "bw.eb"; ec: "bw.ec"; ed: "bw.ed"; ee: "bw.ee"; ef: "bw.ef"; eg: "bw.eg"; eh: "bw.eh"; ei: "bw.ei"; ej: "bw.ej"; ek: "bw.ek"; el: "bw.el"; em: "bw.em"; en: "bw.en"; eo: "bw.eo"; ep: "bw.ep"; eq: "bw.eq"; er: "bw.er"; es: "bw.es"; et: "bw.et"; eu: "bw.eu"; ev: "bw.ev"; ew: "bw.ew"; ex: "bw.ex"; ey: "bw.ey"; ez: "bw.ez"; fa: "bw.fa"; fb: "bw.fb"; fc: "bw.fc"; fd: "bw.fd"; fe: "bw.fe"; ff: "bw.ff"; fg: "bw.fg"; fh: "bw.fh"; fi: "bw.fi"; fj: "bw.fj"; fk: "bw.fk"; fl: "bw.fl"; fm: "bw.fm"; fn: "bw.fn"; fo: "bw.fo"; fp: "bw.fp"; fq: "bw.fq"; fr: "bw.fr"; fs: "bw.fs"; ft: "bw.ft"; fu: "bw.fu"; fv: "bw.fv"; fw: "bw.fw"; fx: "bw.fx"; fy: "bw.fy"; fz: "bw.fz"; ga: "bw.ga"; gb: "bw.gb"; gc: "bw.gc"; gd: "bw.gd"; ge: "bw.ge"; gf: "bw.gf"; gg: "bw.gg"; gh: "bw.gh"; gi: "bw.gi"; gj: "bw.gj"; gk: "bw.gk"; gl: "bw.gl"; gm: "bw.gm"; gn: "bw.gn"; go: "bw.go"; gp: "bw.gp"; gq: "bw.gq"; gr: "bw.gr"; gs: "bw.gs"; gt: "bw.gt"; gu: "bw.gu"; gv: "bw.gv"; gw: "bw.gw"; gx: "bw.gx"; gy: "bw.gy"; gz: "bw.gz"; ha: "bw.ha"; hb: "bw.hb"; hc: "bw.hc"; hd: "bw.hd"; he: "bw.he"; hf: "bw.hf"; hg: "bw.hg"; hh: "bw.hh"; hi: "bw.hi"; hj: "bw.hj"; hk: "bw.hk"; hl: "bw.hl"; hm: "bw.hm"; hn: "bw.hn"; ho: "bw.ho"; hp: "bw.hp"; hq: "bw.hq"; hr: "bw.hr"; hs: "bw.hs"; ht: "bw.ht"; hu: "bw.hu"; hv: "bw.hv"; hw: "bw.hw"; hx: "bw.hx"; hy: "bw.hy"; hz: "bw.hz"; ia: "bw.ia"; ib: "bw.ib"; ic: "bw.ic"; id: "bw.id"; ie: "bw.ie"; if: "bw.if"; ig: "bw.ig"; ih: "bw.ih"; ii: "bw.ii"; ij: "bw.ij"; ik: "bw.ik"; il: "bw.il"; im: "bw.im"; in: "bw.in"; io: "bw.io"; ip: "bw.ip"; iq: "bw.iq"; ir: "bw.ir"; is: "bw.is"; it: "bw.it"; iu: "bw.iu"; iv: "bw.iv"; iw: "bw.iw"; ix: "bw.ix"; iy: "bw.iy"; iz: "bw.iz"; ja: "bw.ja"; jb: "bw.jb"; jc: "bw.jc"; jd: "bw.jd"; je: "bw.je"; jf: "bw.jf"; jg: "bw.jg"; jh: "bw.jh"; ji: "bw.ji"; jj: "bw.jj"; jk: "bw.jk"; jl: "bw.jl"; jm: "bw.jm"; jn: "bw.jn"; jo: "bw.jo"; jp: "bw.jp"; jq: "bw.jq"; jr: "bw.jr"; js: "bw.js"; jt: "bw.jt"; ju: "bw.ju"; jv: "bw.jv"; jw: "bw.jw"; jx: "bw.jx"; jy: "bw.jy"; jz: "bw.jz"; ka: "bw.ka"; kb: "bw.kb"; kc: "bw.kc"; kd: "bw.kd"; ke: "bw.ke"; kf: "bw.kf"; kg: "bw.kg"; kh: "bw.kh"; ki: "bw.ki"; kj: "bw.kj"; kk: "bw.kk"; kl: "bw.kl"; km: "bw.km"; kn: "bw.kn"; ko: "bw.ko"; kp: "bw.kp"; kq: "bw.kq"; kr: "bw.kr"; ks: "bw.ks"; kt: "bw.kt"; ku: "bw.ku"; kv: "bw.kv"; kw: "bw.kw"; kx: "bw.kx"; ky: "bw.ky"; kz: "bw.kz"; la: "bw.la"; lb: "bw.lb"; lc: "bw.lc"; ld: "bw.ld"; le: "bw.le"; lf: "bw.lf"; lg: "bw.lg"; lh: "bw.lh"; li: "bw.li"; lj: "bw.lj"; lk: "bw.lk"; ll: "bw.ll"; lm: "bw.lm"; ln: "bw.ln"; lo: "bw.lo"; lp: "bw.lp"; lq: "bw.lq"; lr: "bw.lr"; ls: "bw.ls"; lt: "bw.lt"; lu: "bw.lu"; lv: "bw.lv"; lw: "bw.lw"; lx: "bw.lx"; ly: "bw.ly"; lz: "bw.lz"; ma: "bw.ma"; mb: "bw.mb"; mc: "bw.mc"; md: "bw.md"; me: "bw.me"; mf: "bw.mf"; mg: "bw.mg"; mh: "bw.mh"; mi: "bw.mi"; mj: "bw.mj"; mk: "bw.mk"; ml: "bw.ml"; mm: "bw.mm"; mn: "bw.mn"; mo: "bw.mo"; mp: "bw.mp"; mq: "bw.mq"; mr: "bw.mr"; ms: "bw.ms"; mt: "bw.mt"; mu: "bw.mu"; mv: "bw.mv"; mw: "bw.mw"; mx: "bw.mx"; my: "bw.my"; mz: "bw.mz"; na: "bw.na"; nb: "bw.nb"; nc: "bw.nc"; nd: "bw.nd"; ne: "bw.ne"; nf: "bw.nf"; ng: "bw.ng"; nh: "bw.nh"; ni: "bw.ni"; nj: "bw.nj"; nk: "bw.nk"; nl: "bw.nl"; nm: "bw.nm"; nn: "bw.nn"; no: "bw.no"; np: "bw.np"; nq: "bw.nq"; nr: "bw.nr"; ns: "bw.ns"; nt: "bw.nt"; nu: "bw.nu"; nv: "bw.nv"; nw: "bw.nw"; nx: "bw.nx"; ny: "bw.ny"; nz: "bw.nz"; oa: "bw.oa"; ob: "bw.ob"; oc: "bw.oc"; od: "bw.od"; oe: "bw.oe"; of: "bw.of"; og: "bw.og"; oh: "bw.oh"; oi: "bw.oi"; oj: "bw.oj"; ok: "bw.ok"; ol: "bw.ol"; om: "bw.om"; on: "bw.on"; oo: "bw.oo"; op: "bw.op"; oq: "bw.oq"; or: "bw.or"; os: "bw.os"; ot: "bw.ot"; ou: "bw.ou"; ov: "bw.ov"; ow: "bw.ow"; ox: "bw.ox"; oy: "bw.oy"; oz: "bw.oz"; pa: "bw.pa"; pb: "bw.pb"; pc: "bw.pc"; pd: "bw.pd"; pe: "bw.pe"; pf: "bw.pf"; pg: "bw.pg"; ph: "bw.ph"; pi: "bw.pi"; pj: "bw.pj"; pk: "bw.pk"; pl: "bw.pl"; pm: "bw.pm"; pn: "bw.pn"; po: "bw.po"; pp: "bw.pp"; pq: "bw.pq"; pr: "bw.pr"; ps: "bw.ps"; pt: "bw.pt"; pu: "bw.pu"; pv: "bw.pv"; pw: "bw.pw"; px: "bw.px"; py: "bw.py"; pz: "bw.pz"; qa: "bw.qa"; qb: "bw.qb"; qc: "bw.qc"; qd: "bw.qd"; qe: "bw.qe"; qf: "bw.qf"; qg: "bw.qg"; qh: "bw.qh"; qi: "bw.qi"; qj: "bw.qj"; qk: "bw.qk"; ql: "bw.ql"; qm: "bw.qm"; qn: "bw.qn"; qo: "bw.qo"; qp: "bw.qp"; qq: "bw.qq"; qr: "bw.qr"; qs: "bw.qs"; qt: "bw.qt"; qu: "bw.qu"; qv: "bw.qv"; qw: "bw.qw"; qx: "bw.qx"; qy: "bw.qy"; qz: "bw.qz"; ra: "bw.ra"; rb: "bw.rb"; rc: "bw.rc"; rd: "bw.rd"; re: "bw.re"; rf: "bw.rf"; rg: "bw.rg"; rh: "bw.rh"; ri: "bw.ri"; rj: "bw.rj"; rk: "bw.rk"; rl: "bw.rl"; rm: "bw.rm"; rn: "bw.rn"; ro: "bw.ro"; rp: "bw.rp"; rq: "bw.rq"; rr: "bw.rr"; rs: "bw.rs"; rt: "bw.rt"; ru: "bw.ru"; rv: "bw.rv"; rw: "bw.rw"; rx: "bw.rx"; ry: "bw.ry"; rz: "bw.rz"; sa: "bw.sa"; sb: "bw.sb"; sc: "bw.sc"; sd: "bw.sd"; se: "bw.se"; sf: "bw.sf"; sg: "bw.sg"; sh: "bw.sh"; si: "bw.si"; sj: "bw.sj"; sk: "bw.sk"; sl: "bw.sl"; sm: "bw.sm"; sn: "bw.sn"; so: "bw.so"; sp: "bw.sp"; sq: "bw.sq"; sr: "bw.sr"; ss: "bw.ss"; st: "bw.st"; su: "bw.su"; sv: "bw.sv"; sw: "bw.sw"; sx: "bw.sx"; sy: "bw.sy"; sz: "bw.sz"; ta: "bw.ta"; tb: "bw.tb"; tc: "bw.tc"; td: "bw.td"; te: "bw.te"; tf: "bw.tf"; tg: "bw.tg"; th: "bw.th"; ti: "bw.ti"; tj: "bw.tj"; tk: "bw.tk"; tl: "bw.tl"; tm: "bw.tm"; tn: "bw.tn"; to: "bw.to"; tp: "bw.tp"; tq: "bw.tq"; tr: "bw.tr"; ts: "bw.ts"; tt: "bw.tt"; tu: "bw.tu"; tv: "bw.tv"; tw: "bw.tw"; tx: "bw.tx"; ty: "bw.ty"; tz: "bw.tz"; ua: "bw.ua"; ub: "bw.ub"; uc: "bw.uc"; ud: "bw.ud"; ue: "bw.ue"; uf: "bw.uf"; ug: "bw.ug"; uh: "bw.uh"; ui: "bw.ui"; uj: "bw.uj"; uk: "bw.uk"; ul: "bw.ul"; um: "bw.um"; un: "bw.un"; uo: "bw.uo"; up: "bw.up"; uq: "bw.uq"; ur: "bw.ur"; us: "bw.us"; ut: "bw.ut"; uu: "bw.uu"; uv: "bw.uv"; uw: "bw.uw"; ux: "bw.ux"; uy: "bw.uy"; uz: "bw.uz"; va: "bw.va"; vb: "bw.vb"; vc: "bw.vc"; vd: "bw.vd"; ve: "bw.ve"; vf: "bw.vf"; vg: "bw.vg"; vh: "bw.vh"; vi: "bw.vi"; vj: "bw.vj"; vk: "bw.vk"; vl: "bw.vl"; vm: "bw.vm"; vn: "bw.vn"; vo: "bw.vo"; vp: "bw.vp"; vq: "bw.vq"; vr: "bw.vr"; vs: "bw.vs"; vt: "bw.vt"; vu: "bw.vu"; vv: "bw.vv"; vw: "bw.vw"; vx: "bw.vx"; vy: "bw.vy"; vz: "bw.vz"; wa: "bw.wa"; wb: "bw.wb"; wc: "bw.wc"; wd: "bw.wd"; we: "bw.we"; wf: "bw.wf"; wg: "bw.wg"; wh: "bw.wh"; wi: "bw.wi"; wj: "bw.wj"; wk: "bw.wk"; wl: "bw.wl"; wm: "bw.wm"; wn: "bw.wn"; wo: "bw.wo"; wp: "bw.wp"; wq: "bw.wq"; wr: "bw.wr"; ws: "bw.ws"; wt: "bw.wt"; wu: "bw.wu"; wv: "bw.wv"; ww: "bw.ww"; wx: "bw.wx"; wy: "bw.wy"; wz: "bw.wz"; xa: "bw.xa"; xb: "bw.xb"; xc: "bw.xc"; xd: "bw.xd"; xe: "bw.xe"; xf: "bw.xf"; xg: "bw.xg"; xh: "bw.xh"; xi: "bw.xi"; xj: "bw.xj"; xk: "bw.xk"; xl: "bw.xl"; xm: "bw.xm"; xn: "bw.xn"; xo: "bw.xo"; xp: "bw.xp"; xq: "bw.xq"; xr: "bw.xr"; xs: "bw.xs"; xt: "bw.xt"; xu: "bw.xu"; xv: "bw.xv"; xw: "bw.xw"; xx: "bw.xx"; xy: "bw.xy"; xz: "bw.xz"; ya: "bw.ya"; yb: "bw.yb"; yc: "bw.yc"; yd: "bw.yd"; ye: "bw.ye"; yf: "bw.yf"; yg: "bw.yg"; yh: "bw.yh"; yi: "bw.yi"; yj: "bw.yj"; yk: "bw.yk"; yl: "bw.yl"; ym: "bw.ym"; yn: "bw.yn"; yo: "bw.yo"; yp: "bw.yp"; yq: "bw.yq"; yr: "bw.yr"; ys: "bw.ys"; yt: "bw.yt"; yu: "bw.yu"; yv: "bw.yv"; yw: "bw.yw"; yx: "bw.yx"; yy: "bw.yy"; yz: "bw.yz"; za: "bw.za"; zb: "bw.zb"; zc: "bw.zc"; zd: "bw.zd"; ze: "bw.ze"; zf: "bw.zf"; zg: "bw.zg"; zh: "bw.zh"; zi: "bw.zi"; zj: "bw.zj"; zk: "bw.zk"; zl: "bw.zl"; zm: "bw.zm"; zn: "bw.zn"; zo: "bw.zo"; zp: "bw.zp"; zq: "bw.zq"; zr: "bw.zr"; zs: "bw.zs"; zt: "bw.zt"; zu: "bw.zu"; zv: "bw.zv"; zw: "bw.zw"; zx: "bw.zx"; zy: "bw.zy"; zz: "bw.zz"; }; bx: { aa: "bx.aa"; ab: "bx.ab"; ac: "bx.ac"; ad: "bx.ad"; ae: "bx.ae"; af: "bx.af"; ag: "bx.ag"; ah: "bx.ah"; ai: "bx.ai"; aj: "bx.aj"; ak: "bx.ak"; al: "bx.al"; am: "bx.am"; an: "bx.an"; ao: "bx.ao"; ap: "bx.ap"; aq: "bx.aq"; ar: "bx.ar"; as: "bx.as"; at: "bx.at"; au: "bx.au"; av: "bx.av"; aw: "bx.aw"; ax: "bx.ax"; ay: "bx.ay"; az: "bx.az"; ba: "bx.ba"; bb: "bx.bb"; bc: "bx.bc"; bd: "bx.bd"; be: "bx.be"; bf: "bx.bf"; bg: "bx.bg"; bh: "bx.bh"; bi: "bx.bi"; bj: "bx.bj"; bk: "bx.bk"; bl: "bx.bl"; bm: "bx.bm"; bn: "bx.bn"; bo: "bx.bo"; bp: "bx.bp"; bq: "bx.bq"; br: "bx.br"; bs: "bx.bs"; bt: "bx.bt"; bu: "bx.bu"; bv: "bx.bv"; bw: "bx.bw"; bx: "bx.bx"; by: "bx.by"; bz: "bx.bz"; ca: "bx.ca"; cb: "bx.cb"; cc: "bx.cc"; cd: "bx.cd"; ce: "bx.ce"; cf: "bx.cf"; cg: "bx.cg"; ch: "bx.ch"; ci: "bx.ci"; cj: "bx.cj"; ck: "bx.ck"; cl: "bx.cl"; cm: "bx.cm"; cn: "bx.cn"; co: "bx.co"; cp: "bx.cp"; cq: "bx.cq"; cr: "bx.cr"; cs: "bx.cs"; ct: "bx.ct"; cu: "bx.cu"; cv: "bx.cv"; cw: "bx.cw"; cx: "bx.cx"; cy: "bx.cy"; cz: "bx.cz"; da: "bx.da"; db: "bx.db"; dc: "bx.dc"; dd: "bx.dd"; de: "bx.de"; df: "bx.df"; dg: "bx.dg"; dh: "bx.dh"; di: "bx.di"; dj: "bx.dj"; dk: "bx.dk"; dl: "bx.dl"; dm: "bx.dm"; dn: "bx.dn"; do: "bx.do"; dp: "bx.dp"; dq: "bx.dq"; dr: "bx.dr"; ds: "bx.ds"; dt: "bx.dt"; du: "bx.du"; dv: "bx.dv"; dw: "bx.dw"; dx: "bx.dx"; dy: "bx.dy"; dz: "bx.dz"; ea: "bx.ea"; eb: "bx.eb"; ec: "bx.ec"; ed: "bx.ed"; ee: "bx.ee"; ef: "bx.ef"; eg: "bx.eg"; eh: "bx.eh"; ei: "bx.ei"; ej: "bx.ej"; ek: "bx.ek"; el: "bx.el"; em: "bx.em"; en: "bx.en"; eo: "bx.eo"; ep: "bx.ep"; eq: "bx.eq"; er: "bx.er"; es: "bx.es"; et: "bx.et"; eu: "bx.eu"; ev: "bx.ev"; ew: "bx.ew"; ex: "bx.ex"; ey: "bx.ey"; ez: "bx.ez"; fa: "bx.fa"; fb: "bx.fb"; fc: "bx.fc"; fd: "bx.fd"; fe: "bx.fe"; ff: "bx.ff"; fg: "bx.fg"; fh: "bx.fh"; fi: "bx.fi"; fj: "bx.fj"; fk: "bx.fk"; fl: "bx.fl"; fm: "bx.fm"; fn: "bx.fn"; fo: "bx.fo"; fp: "bx.fp"; fq: "bx.fq"; fr: "bx.fr"; fs: "bx.fs"; ft: "bx.ft"; fu: "bx.fu"; fv: "bx.fv"; fw: "bx.fw"; fx: "bx.fx"; fy: "bx.fy"; fz: "bx.fz"; ga: "bx.ga"; gb: "bx.gb"; gc: "bx.gc"; gd: "bx.gd"; ge: "bx.ge"; gf: "bx.gf"; gg: "bx.gg"; gh: "bx.gh"; gi: "bx.gi"; gj: "bx.gj"; gk: "bx.gk"; gl: "bx.gl"; gm: "bx.gm"; gn: "bx.gn"; go: "bx.go"; gp: "bx.gp"; gq: "bx.gq"; gr: "bx.gr"; gs: "bx.gs"; gt: "bx.gt"; gu: "bx.gu"; gv: "bx.gv"; gw: "bx.gw"; gx: "bx.gx"; gy: "bx.gy"; gz: "bx.gz"; ha: "bx.ha"; hb: "bx.hb"; hc: "bx.hc"; hd: "bx.hd"; he: "bx.he"; hf: "bx.hf"; hg: "bx.hg"; hh: "bx.hh"; hi: "bx.hi"; hj: "bx.hj"; hk: "bx.hk"; hl: "bx.hl"; hm: "bx.hm"; hn: "bx.hn"; ho: "bx.ho"; hp: "bx.hp"; hq: "bx.hq"; hr: "bx.hr"; hs: "bx.hs"; ht: "bx.ht"; hu: "bx.hu"; hv: "bx.hv"; hw: "bx.hw"; hx: "bx.hx"; hy: "bx.hy"; hz: "bx.hz"; ia: "bx.ia"; ib: "bx.ib"; ic: "bx.ic"; id: "bx.id"; ie: "bx.ie"; if: "bx.if"; ig: "bx.ig"; ih: "bx.ih"; ii: "bx.ii"; ij: "bx.ij"; ik: "bx.ik"; il: "bx.il"; im: "bx.im"; in: "bx.in"; io: "bx.io"; ip: "bx.ip"; iq: "bx.iq"; ir: "bx.ir"; is: "bx.is"; it: "bx.it"; iu: "bx.iu"; iv: "bx.iv"; iw: "bx.iw"; ix: "bx.ix"; iy: "bx.iy"; iz: "bx.iz"; ja: "bx.ja"; jb: "bx.jb"; jc: "bx.jc"; jd: "bx.jd"; je: "bx.je"; jf: "bx.jf"; jg: "bx.jg"; jh: "bx.jh"; ji: "bx.ji"; jj: "bx.jj"; jk: "bx.jk"; jl: "bx.jl"; jm: "bx.jm"; jn: "bx.jn"; jo: "bx.jo"; jp: "bx.jp"; jq: "bx.jq"; jr: "bx.jr"; js: "bx.js"; jt: "bx.jt"; ju: "bx.ju"; jv: "bx.jv"; jw: "bx.jw"; jx: "bx.jx"; jy: "bx.jy"; jz: "bx.jz"; ka: "bx.ka"; kb: "bx.kb"; kc: "bx.kc"; kd: "bx.kd"; ke: "bx.ke"; kf: "bx.kf"; kg: "bx.kg"; kh: "bx.kh"; ki: "bx.ki"; kj: "bx.kj"; kk: "bx.kk"; kl: "bx.kl"; km: "bx.km"; kn: "bx.kn"; ko: "bx.ko"; kp: "bx.kp"; kq: "bx.kq"; kr: "bx.kr"; ks: "bx.ks"; kt: "bx.kt"; ku: "bx.ku"; kv: "bx.kv"; kw: "bx.kw"; kx: "bx.kx"; ky: "bx.ky"; kz: "bx.kz"; la: "bx.la"; lb: "bx.lb"; lc: "bx.lc"; ld: "bx.ld"; le: "bx.le"; lf: "bx.lf"; lg: "bx.lg"; lh: "bx.lh"; li: "bx.li"; lj: "bx.lj"; lk: "bx.lk"; ll: "bx.ll"; lm: "bx.lm"; ln: "bx.ln"; lo: "bx.lo"; lp: "bx.lp"; lq: "bx.lq"; lr: "bx.lr"; ls: "bx.ls"; lt: "bx.lt"; lu: "bx.lu"; lv: "bx.lv"; lw: "bx.lw"; lx: "bx.lx"; ly: "bx.ly"; lz: "bx.lz"; ma: "bx.ma"; mb: "bx.mb"; mc: "bx.mc"; md: "bx.md"; me: "bx.me"; mf: "bx.mf"; mg: "bx.mg"; mh: "bx.mh"; mi: "bx.mi"; mj: "bx.mj"; mk: "bx.mk"; ml: "bx.ml"; mm: "bx.mm"; mn: "bx.mn"; mo: "bx.mo"; mp: "bx.mp"; mq: "bx.mq"; mr: "bx.mr"; ms: "bx.ms"; mt: "bx.mt"; mu: "bx.mu"; mv: "bx.mv"; mw: "bx.mw"; mx: "bx.mx"; my: "bx.my"; mz: "bx.mz"; na: "bx.na"; nb: "bx.nb"; nc: "bx.nc"; nd: "bx.nd"; ne: "bx.ne"; nf: "bx.nf"; ng: "bx.ng"; nh: "bx.nh"; ni: "bx.ni"; nj: "bx.nj"; nk: "bx.nk"; nl: "bx.nl"; nm: "bx.nm"; nn: "bx.nn"; no: "bx.no"; np: "bx.np"; nq: "bx.nq"; nr: "bx.nr"; ns: "bx.ns"; nt: "bx.nt"; nu: "bx.nu"; nv: "bx.nv"; nw: "bx.nw"; nx: "bx.nx"; ny: "bx.ny"; nz: "bx.nz"; oa: "bx.oa"; ob: "bx.ob"; oc: "bx.oc"; od: "bx.od"; oe: "bx.oe"; of: "bx.of"; og: "bx.og"; oh: "bx.oh"; oi: "bx.oi"; oj: "bx.oj"; ok: "bx.ok"; ol: "bx.ol"; om: "bx.om"; on: "bx.on"; oo: "bx.oo"; op: "bx.op"; oq: "bx.oq"; or: "bx.or"; os: "bx.os"; ot: "bx.ot"; ou: "bx.ou"; ov: "bx.ov"; ow: "bx.ow"; ox: "bx.ox"; oy: "bx.oy"; oz: "bx.oz"; pa: "bx.pa"; pb: "bx.pb"; pc: "bx.pc"; pd: "bx.pd"; pe: "bx.pe"; pf: "bx.pf"; pg: "bx.pg"; ph: "bx.ph"; pi: "bx.pi"; pj: "bx.pj"; pk: "bx.pk"; pl: "bx.pl"; pm: "bx.pm"; pn: "bx.pn"; po: "bx.po"; pp: "bx.pp"; pq: "bx.pq"; pr: "bx.pr"; ps: "bx.ps"; pt: "bx.pt"; pu: "bx.pu"; pv: "bx.pv"; pw: "bx.pw"; px: "bx.px"; py: "bx.py"; pz: "bx.pz"; qa: "bx.qa"; qb: "bx.qb"; qc: "bx.qc"; qd: "bx.qd"; qe: "bx.qe"; qf: "bx.qf"; qg: "bx.qg"; qh: "bx.qh"; qi: "bx.qi"; qj: "bx.qj"; qk: "bx.qk"; ql: "bx.ql"; qm: "bx.qm"; qn: "bx.qn"; qo: "bx.qo"; qp: "bx.qp"; qq: "bx.qq"; qr: "bx.qr"; qs: "bx.qs"; qt: "bx.qt"; qu: "bx.qu"; qv: "bx.qv"; qw: "bx.qw"; qx: "bx.qx"; qy: "bx.qy"; qz: "bx.qz"; ra: "bx.ra"; rb: "bx.rb"; rc: "bx.rc"; rd: "bx.rd"; re: "bx.re"; rf: "bx.rf"; rg: "bx.rg"; rh: "bx.rh"; ri: "bx.ri"; rj: "bx.rj"; rk: "bx.rk"; rl: "bx.rl"; rm: "bx.rm"; rn: "bx.rn"; ro: "bx.ro"; rp: "bx.rp"; rq: "bx.rq"; rr: "bx.rr"; rs: "bx.rs"; rt: "bx.rt"; ru: "bx.ru"; rv: "bx.rv"; rw: "bx.rw"; rx: "bx.rx"; ry: "bx.ry"; rz: "bx.rz"; sa: "bx.sa"; sb: "bx.sb"; sc: "bx.sc"; sd: "bx.sd"; se: "bx.se"; sf: "bx.sf"; sg: "bx.sg"; sh: "bx.sh"; si: "bx.si"; sj: "bx.sj"; sk: "bx.sk"; sl: "bx.sl"; sm: "bx.sm"; sn: "bx.sn"; so: "bx.so"; sp: "bx.sp"; sq: "bx.sq"; sr: "bx.sr"; ss: "bx.ss"; st: "bx.st"; su: "bx.su"; sv: "bx.sv"; sw: "bx.sw"; sx: "bx.sx"; sy: "bx.sy"; sz: "bx.sz"; ta: "bx.ta"; tb: "bx.tb"; tc: "bx.tc"; td: "bx.td"; te: "bx.te"; tf: "bx.tf"; tg: "bx.tg"; th: "bx.th"; ti: "bx.ti"; tj: "bx.tj"; tk: "bx.tk"; tl: "bx.tl"; tm: "bx.tm"; tn: "bx.tn"; to: "bx.to"; tp: "bx.tp"; tq: "bx.tq"; tr: "bx.tr"; ts: "bx.ts"; tt: "bx.tt"; tu: "bx.tu"; tv: "bx.tv"; tw: "bx.tw"; tx: "bx.tx"; ty: "bx.ty"; tz: "bx.tz"; ua: "bx.ua"; ub: "bx.ub"; uc: "bx.uc"; ud: "bx.ud"; ue: "bx.ue"; uf: "bx.uf"; ug: "bx.ug"; uh: "bx.uh"; ui: "bx.ui"; uj: "bx.uj"; uk: "bx.uk"; ul: "bx.ul"; um: "bx.um"; un: "bx.un"; uo: "bx.uo"; up: "bx.up"; uq: "bx.uq"; ur: "bx.ur"; us: "bx.us"; ut: "bx.ut"; uu: "bx.uu"; uv: "bx.uv"; uw: "bx.uw"; ux: "bx.ux"; uy: "bx.uy"; uz: "bx.uz"; va: "bx.va"; vb: "bx.vb"; vc: "bx.vc"; vd: "bx.vd"; ve: "bx.ve"; vf: "bx.vf"; vg: "bx.vg"; vh: "bx.vh"; vi: "bx.vi"; vj: "bx.vj"; vk: "bx.vk"; vl: "bx.vl"; vm: "bx.vm"; vn: "bx.vn"; vo: "bx.vo"; vp: "bx.vp"; vq: "bx.vq"; vr: "bx.vr"; vs: "bx.vs"; vt: "bx.vt"; vu: "bx.vu"; vv: "bx.vv"; vw: "bx.vw"; vx: "bx.vx"; vy: "bx.vy"; vz: "bx.vz"; wa: "bx.wa"; wb: "bx.wb"; wc: "bx.wc"; wd: "bx.wd"; we: "bx.we"; wf: "bx.wf"; wg: "bx.wg"; wh: "bx.wh"; wi: "bx.wi"; wj: "bx.wj"; wk: "bx.wk"; wl: "bx.wl"; wm: "bx.wm"; wn: "bx.wn"; wo: "bx.wo"; wp: "bx.wp"; wq: "bx.wq"; wr: "bx.wr"; ws: "bx.ws"; wt: "bx.wt"; wu: "bx.wu"; wv: "bx.wv"; ww: "bx.ww"; wx: "bx.wx"; wy: "bx.wy"; wz: "bx.wz"; xa: "bx.xa"; xb: "bx.xb"; xc: "bx.xc"; xd: "bx.xd"; xe: "bx.xe"; xf: "bx.xf"; xg: "bx.xg"; xh: "bx.xh"; xi: "bx.xi"; xj: "bx.xj"; xk: "bx.xk"; xl: "bx.xl"; xm: "bx.xm"; xn: "bx.xn"; xo: "bx.xo"; xp: "bx.xp"; xq: "bx.xq"; xr: "bx.xr"; xs: "bx.xs"; xt: "bx.xt"; xu: "bx.xu"; xv: "bx.xv"; xw: "bx.xw"; xx: "bx.xx"; xy: "bx.xy"; xz: "bx.xz"; ya: "bx.ya"; yb: "bx.yb"; yc: "bx.yc"; yd: "bx.yd"; ye: "bx.ye"; yf: "bx.yf"; yg: "bx.yg"; yh: "bx.yh"; yi: "bx.yi"; yj: "bx.yj"; yk: "bx.yk"; yl: "bx.yl"; ym: "bx.ym"; yn: "bx.yn"; yo: "bx.yo"; yp: "bx.yp"; yq: "bx.yq"; yr: "bx.yr"; ys: "bx.ys"; yt: "bx.yt"; yu: "bx.yu"; yv: "bx.yv"; yw: "bx.yw"; yx: "bx.yx"; yy: "bx.yy"; yz: "bx.yz"; za: "bx.za"; zb: "bx.zb"; zc: "bx.zc"; zd: "bx.zd"; ze: "bx.ze"; zf: "bx.zf"; zg: "bx.zg"; zh: "bx.zh"; zi: "bx.zi"; zj: "bx.zj"; zk: "bx.zk"; zl: "bx.zl"; zm: "bx.zm"; zn: "bx.zn"; zo: "bx.zo"; zp: "bx.zp"; zq: "bx.zq"; zr: "bx.zr"; zs: "bx.zs"; zt: "bx.zt"; zu: "bx.zu"; zv: "bx.zv"; zw: "bx.zw"; zx: "bx.zx"; zy: "bx.zy"; zz: "bx.zz"; }; by: { aa: "by.aa"; ab: "by.ab"; ac: "by.ac"; ad: "by.ad"; ae: "by.ae"; af: "by.af"; ag: "by.ag"; ah: "by.ah"; ai: "by.ai"; aj: "by.aj"; ak: "by.ak"; al: "by.al"; am: "by.am"; an: "by.an"; ao: "by.ao"; ap: "by.ap"; aq: "by.aq"; ar: "by.ar"; as: "by.as"; at: "by.at"; au: "by.au"; av: "by.av"; aw: "by.aw"; ax: "by.ax"; ay: "by.ay"; az: "by.az"; ba: "by.ba"; bb: "by.bb"; bc: "by.bc"; bd: "by.bd"; be: "by.be"; bf: "by.bf"; bg: "by.bg"; bh: "by.bh"; bi: "by.bi"; bj: "by.bj"; bk: "by.bk"; bl: "by.bl"; bm: "by.bm"; bn: "by.bn"; bo: "by.bo"; bp: "by.bp"; bq: "by.bq"; br: "by.br"; bs: "by.bs"; bt: "by.bt"; bu: "by.bu"; bv: "by.bv"; bw: "by.bw"; bx: "by.bx"; by: "by.by"; bz: "by.bz"; ca: "by.ca"; cb: "by.cb"; cc: "by.cc"; cd: "by.cd"; ce: "by.ce"; cf: "by.cf"; cg: "by.cg"; ch: "by.ch"; ci: "by.ci"; cj: "by.cj"; ck: "by.ck"; cl: "by.cl"; cm: "by.cm"; cn: "by.cn"; co: "by.co"; cp: "by.cp"; cq: "by.cq"; cr: "by.cr"; cs: "by.cs"; ct: "by.ct"; cu: "by.cu"; cv: "by.cv"; cw: "by.cw"; cx: "by.cx"; cy: "by.cy"; cz: "by.cz"; da: "by.da"; db: "by.db"; dc: "by.dc"; dd: "by.dd"; de: "by.de"; df: "by.df"; dg: "by.dg"; dh: "by.dh"; di: "by.di"; dj: "by.dj"; dk: "by.dk"; dl: "by.dl"; dm: "by.dm"; dn: "by.dn"; do: "by.do"; dp: "by.dp"; dq: "by.dq"; dr: "by.dr"; ds: "by.ds"; dt: "by.dt"; du: "by.du"; dv: "by.dv"; dw: "by.dw"; dx: "by.dx"; dy: "by.dy"; dz: "by.dz"; ea: "by.ea"; eb: "by.eb"; ec: "by.ec"; ed: "by.ed"; ee: "by.ee"; ef: "by.ef"; eg: "by.eg"; eh: "by.eh"; ei: "by.ei"; ej: "by.ej"; ek: "by.ek"; el: "by.el"; em: "by.em"; en: "by.en"; eo: "by.eo"; ep: "by.ep"; eq: "by.eq"; er: "by.er"; es: "by.es"; et: "by.et"; eu: "by.eu"; ev: "by.ev"; ew: "by.ew"; ex: "by.ex"; ey: "by.ey"; ez: "by.ez"; fa: "by.fa"; fb: "by.fb"; fc: "by.fc"; fd: "by.fd"; fe: "by.fe"; ff: "by.ff"; fg: "by.fg"; fh: "by.fh"; fi: "by.fi"; fj: "by.fj"; fk: "by.fk"; fl: "by.fl"; fm: "by.fm"; fn: "by.fn"; fo: "by.fo"; fp: "by.fp"; fq: "by.fq"; fr: "by.fr"; fs: "by.fs"; ft: "by.ft"; fu: "by.fu"; fv: "by.fv"; fw: "by.fw"; fx: "by.fx"; fy: "by.fy"; fz: "by.fz"; ga: "by.ga"; gb: "by.gb"; gc: "by.gc"; gd: "by.gd"; ge: "by.ge"; gf: "by.gf"; gg: "by.gg"; gh: "by.gh"; gi: "by.gi"; gj: "by.gj"; gk: "by.gk"; gl: "by.gl"; gm: "by.gm"; gn: "by.gn"; go: "by.go"; gp: "by.gp"; gq: "by.gq"; gr: "by.gr"; gs: "by.gs"; gt: "by.gt"; gu: "by.gu"; gv: "by.gv"; gw: "by.gw"; gx: "by.gx"; gy: "by.gy"; gz: "by.gz"; ha: "by.ha"; hb: "by.hb"; hc: "by.hc"; hd: "by.hd"; he: "by.he"; hf: "by.hf"; hg: "by.hg"; hh: "by.hh"; hi: "by.hi"; hj: "by.hj"; hk: "by.hk"; hl: "by.hl"; hm: "by.hm"; hn: "by.hn"; ho: "by.ho"; hp: "by.hp"; hq: "by.hq"; hr: "by.hr"; hs: "by.hs"; ht: "by.ht"; hu: "by.hu"; hv: "by.hv"; hw: "by.hw"; hx: "by.hx"; hy: "by.hy"; hz: "by.hz"; ia: "by.ia"; ib: "by.ib"; ic: "by.ic"; id: "by.id"; ie: "by.ie"; if: "by.if"; ig: "by.ig"; ih: "by.ih"; ii: "by.ii"; ij: "by.ij"; ik: "by.ik"; il: "by.il"; im: "by.im"; in: "by.in"; io: "by.io"; ip: "by.ip"; iq: "by.iq"; ir: "by.ir"; is: "by.is"; it: "by.it"; iu: "by.iu"; iv: "by.iv"; iw: "by.iw"; ix: "by.ix"; iy: "by.iy"; iz: "by.iz"; ja: "by.ja"; jb: "by.jb"; jc: "by.jc"; jd: "by.jd"; je: "by.je"; jf: "by.jf"; jg: "by.jg"; jh: "by.jh"; ji: "by.ji"; jj: "by.jj"; jk: "by.jk"; jl: "by.jl"; jm: "by.jm"; jn: "by.jn"; jo: "by.jo"; jp: "by.jp"; jq: "by.jq"; jr: "by.jr"; js: "by.js"; jt: "by.jt"; ju: "by.ju"; jv: "by.jv"; jw: "by.jw"; jx: "by.jx"; jy: "by.jy"; jz: "by.jz"; ka: "by.ka"; kb: "by.kb"; kc: "by.kc"; kd: "by.kd"; ke: "by.ke"; kf: "by.kf"; kg: "by.kg"; kh: "by.kh"; ki: "by.ki"; kj: "by.kj"; kk: "by.kk"; kl: "by.kl"; km: "by.km"; kn: "by.kn"; ko: "by.ko"; kp: "by.kp"; kq: "by.kq"; kr: "by.kr"; ks: "by.ks"; kt: "by.kt"; ku: "by.ku"; kv: "by.kv"; kw: "by.kw"; kx: "by.kx"; ky: "by.ky"; kz: "by.kz"; la: "by.la"; lb: "by.lb"; lc: "by.lc"; ld: "by.ld"; le: "by.le"; lf: "by.lf"; lg: "by.lg"; lh: "by.lh"; li: "by.li"; lj: "by.lj"; lk: "by.lk"; ll: "by.ll"; lm: "by.lm"; ln: "by.ln"; lo: "by.lo"; lp: "by.lp"; lq: "by.lq"; lr: "by.lr"; ls: "by.ls"; lt: "by.lt"; lu: "by.lu"; lv: "by.lv"; lw: "by.lw"; lx: "by.lx"; ly: "by.ly"; lz: "by.lz"; ma: "by.ma"; mb: "by.mb"; mc: "by.mc"; md: "by.md"; me: "by.me"; mf: "by.mf"; mg: "by.mg"; mh: "by.mh"; mi: "by.mi"; mj: "by.mj"; mk: "by.mk"; ml: "by.ml"; mm: "by.mm"; mn: "by.mn"; mo: "by.mo"; mp: "by.mp"; mq: "by.mq"; mr: "by.mr"; ms: "by.ms"; mt: "by.mt"; mu: "by.mu"; mv: "by.mv"; mw: "by.mw"; mx: "by.mx"; my: "by.my"; mz: "by.mz"; na: "by.na"; nb: "by.nb"; nc: "by.nc"; nd: "by.nd"; ne: "by.ne"; nf: "by.nf"; ng: "by.ng"; nh: "by.nh"; ni: "by.ni"; nj: "by.nj"; nk: "by.nk"; nl: "by.nl"; nm: "by.nm"; nn: "by.nn"; no: "by.no"; np: "by.np"; nq: "by.nq"; nr: "by.nr"; ns: "by.ns"; nt: "by.nt"; nu: "by.nu"; nv: "by.nv"; nw: "by.nw"; nx: "by.nx"; ny: "by.ny"; nz: "by.nz"; oa: "by.oa"; ob: "by.ob"; oc: "by.oc"; od: "by.od"; oe: "by.oe"; of: "by.of"; og: "by.og"; oh: "by.oh"; oi: "by.oi"; oj: "by.oj"; ok: "by.ok"; ol: "by.ol"; om: "by.om"; on: "by.on"; oo: "by.oo"; op: "by.op"; oq: "by.oq"; or: "by.or"; os: "by.os"; ot: "by.ot"; ou: "by.ou"; ov: "by.ov"; ow: "by.ow"; ox: "by.ox"; oy: "by.oy"; oz: "by.oz"; pa: "by.pa"; pb: "by.pb"; pc: "by.pc"; pd: "by.pd"; pe: "by.pe"; pf: "by.pf"; pg: "by.pg"; ph: "by.ph"; pi: "by.pi"; pj: "by.pj"; pk: "by.pk"; pl: "by.pl"; pm: "by.pm"; pn: "by.pn"; po: "by.po"; pp: "by.pp"; pq: "by.pq"; pr: "by.pr"; ps: "by.ps"; pt: "by.pt"; pu: "by.pu"; pv: "by.pv"; pw: "by.pw"; px: "by.px"; py: "by.py"; pz: "by.pz"; qa: "by.qa"; qb: "by.qb"; qc: "by.qc"; qd: "by.qd"; qe: "by.qe"; qf: "by.qf"; qg: "by.qg"; qh: "by.qh"; qi: "by.qi"; qj: "by.qj"; qk: "by.qk"; ql: "by.ql"; qm: "by.qm"; qn: "by.qn"; qo: "by.qo"; qp: "by.qp"; qq: "by.qq"; qr: "by.qr"; qs: "by.qs"; qt: "by.qt"; qu: "by.qu"; qv: "by.qv"; qw: "by.qw"; qx: "by.qx"; qy: "by.qy"; qz: "by.qz"; ra: "by.ra"; rb: "by.rb"; rc: "by.rc"; rd: "by.rd"; re: "by.re"; rf: "by.rf"; rg: "by.rg"; rh: "by.rh"; ri: "by.ri"; rj: "by.rj"; rk: "by.rk"; rl: "by.rl"; rm: "by.rm"; rn: "by.rn"; ro: "by.ro"; rp: "by.rp"; rq: "by.rq"; rr: "by.rr"; rs: "by.rs"; rt: "by.rt"; ru: "by.ru"; rv: "by.rv"; rw: "by.rw"; rx: "by.rx"; ry: "by.ry"; rz: "by.rz"; sa: "by.sa"; sb: "by.sb"; sc: "by.sc"; sd: "by.sd"; se: "by.se"; sf: "by.sf"; sg: "by.sg"; sh: "by.sh"; si: "by.si"; sj: "by.sj"; sk: "by.sk"; sl: "by.sl"; sm: "by.sm"; sn: "by.sn"; so: "by.so"; sp: "by.sp"; sq: "by.sq"; sr: "by.sr"; ss: "by.ss"; st: "by.st"; su: "by.su"; sv: "by.sv"; sw: "by.sw"; sx: "by.sx"; sy: "by.sy"; sz: "by.sz"; ta: "by.ta"; tb: "by.tb"; tc: "by.tc"; td: "by.td"; te: "by.te"; tf: "by.tf"; tg: "by.tg"; th: "by.th"; ti: "by.ti"; tj: "by.tj"; tk: "by.tk"; tl: "by.tl"; tm: "by.tm"; tn: "by.tn"; to: "by.to"; tp: "by.tp"; tq: "by.tq"; tr: "by.tr"; ts: "by.ts"; tt: "by.tt"; tu: "by.tu"; tv: "by.tv"; tw: "by.tw"; tx: "by.tx"; ty: "by.ty"; tz: "by.tz"; ua: "by.ua"; ub: "by.ub"; uc: "by.uc"; ud: "by.ud"; ue: "by.ue"; uf: "by.uf"; ug: "by.ug"; uh: "by.uh"; ui: "by.ui"; uj: "by.uj"; uk: "by.uk"; ul: "by.ul"; um: "by.um"; un: "by.un"; uo: "by.uo"; up: "by.up"; uq: "by.uq"; ur: "by.ur"; us: "by.us"; ut: "by.ut"; uu: "by.uu"; uv: "by.uv"; uw: "by.uw"; ux: "by.ux"; uy: "by.uy"; uz: "by.uz"; va: "by.va"; vb: "by.vb"; vc: "by.vc"; vd: "by.vd"; ve: "by.ve"; vf: "by.vf"; vg: "by.vg"; vh: "by.vh"; vi: "by.vi"; vj: "by.vj"; vk: "by.vk"; vl: "by.vl"; vm: "by.vm"; vn: "by.vn"; vo: "by.vo"; vp: "by.vp"; vq: "by.vq"; vr: "by.vr"; vs: "by.vs"; vt: "by.vt"; vu: "by.vu"; vv: "by.vv"; vw: "by.vw"; vx: "by.vx"; vy: "by.vy"; vz: "by.vz"; wa: "by.wa"; wb: "by.wb"; wc: "by.wc"; wd: "by.wd"; we: "by.we"; wf: "by.wf"; wg: "by.wg"; wh: "by.wh"; wi: "by.wi"; wj: "by.wj"; wk: "by.wk"; wl: "by.wl"; wm: "by.wm"; wn: "by.wn"; wo: "by.wo"; wp: "by.wp"; wq: "by.wq"; wr: "by.wr"; ws: "by.ws"; wt: "by.wt"; wu: "by.wu"; wv: "by.wv"; ww: "by.ww"; wx: "by.wx"; wy: "by.wy"; wz: "by.wz"; xa: "by.xa"; xb: "by.xb"; xc: "by.xc"; xd: "by.xd"; xe: "by.xe"; xf: "by.xf"; xg: "by.xg"; xh: "by.xh"; xi: "by.xi"; xj: "by.xj"; xk: "by.xk"; xl: "by.xl"; xm: "by.xm"; xn: "by.xn"; xo: "by.xo"; xp: "by.xp"; xq: "by.xq"; xr: "by.xr"; xs: "by.xs"; xt: "by.xt"; xu: "by.xu"; xv: "by.xv"; xw: "by.xw"; xx: "by.xx"; xy: "by.xy"; xz: "by.xz"; ya: "by.ya"; yb: "by.yb"; yc: "by.yc"; yd: "by.yd"; ye: "by.ye"; yf: "by.yf"; yg: "by.yg"; yh: "by.yh"; yi: "by.yi"; yj: "by.yj"; yk: "by.yk"; yl: "by.yl"; ym: "by.ym"; yn: "by.yn"; yo: "by.yo"; yp: "by.yp"; yq: "by.yq"; yr: "by.yr"; ys: "by.ys"; yt: "by.yt"; yu: "by.yu"; yv: "by.yv"; yw: "by.yw"; yx: "by.yx"; yy: "by.yy"; yz: "by.yz"; za: "by.za"; zb: "by.zb"; zc: "by.zc"; zd: "by.zd"; ze: "by.ze"; zf: "by.zf"; zg: "by.zg"; zh: "by.zh"; zi: "by.zi"; zj: "by.zj"; zk: "by.zk"; zl: "by.zl"; zm: "by.zm"; zn: "by.zn"; zo: "by.zo"; zp: "by.zp"; zq: "by.zq"; zr: "by.zr"; zs: "by.zs"; zt: "by.zt"; zu: "by.zu"; zv: "by.zv"; zw: "by.zw"; zx: "by.zx"; zy: "by.zy"; zz: "by.zz"; }; bz: { aa: "bz.aa"; ab: "bz.ab"; ac: "bz.ac"; ad: "bz.ad"; ae: "bz.ae"; af: "bz.af"; ag: "bz.ag"; ah: "bz.ah"; ai: "bz.ai"; aj: "bz.aj"; ak: "bz.ak"; al: "bz.al"; am: "bz.am"; an: "bz.an"; ao: "bz.ao"; ap: "bz.ap"; aq: "bz.aq"; ar: "bz.ar"; as: "bz.as"; at: "bz.at"; au: "bz.au"; av: "bz.av"; aw: "bz.aw"; ax: "bz.ax"; ay: "bz.ay"; az: "bz.az"; ba: "bz.ba"; bb: "bz.bb"; bc: "bz.bc"; bd: "bz.bd"; be: "bz.be"; bf: "bz.bf"; bg: "bz.bg"; bh: "bz.bh"; bi: "bz.bi"; bj: "bz.bj"; bk: "bz.bk"; bl: "bz.bl"; bm: "bz.bm"; bn: "bz.bn"; bo: "bz.bo"; bp: "bz.bp"; bq: "bz.bq"; br: "bz.br"; bs: "bz.bs"; bt: "bz.bt"; bu: "bz.bu"; bv: "bz.bv"; bw: "bz.bw"; bx: "bz.bx"; by: "bz.by"; bz: "bz.bz"; ca: "bz.ca"; cb: "bz.cb"; cc: "bz.cc"; cd: "bz.cd"; ce: "bz.ce"; cf: "bz.cf"; cg: "bz.cg"; ch: "bz.ch"; ci: "bz.ci"; cj: "bz.cj"; ck: "bz.ck"; cl: "bz.cl"; cm: "bz.cm"; cn: "bz.cn"; co: "bz.co"; cp: "bz.cp"; cq: "bz.cq"; cr: "bz.cr"; cs: "bz.cs"; ct: "bz.ct"; cu: "bz.cu"; cv: "bz.cv"; cw: "bz.cw"; cx: "bz.cx"; cy: "bz.cy"; cz: "bz.cz"; da: "bz.da"; db: "bz.db"; dc: "bz.dc"; dd: "bz.dd"; de: "bz.de"; df: "bz.df"; dg: "bz.dg"; dh: "bz.dh"; di: "bz.di"; dj: "bz.dj"; dk: "bz.dk"; dl: "bz.dl"; dm: "bz.dm"; dn: "bz.dn"; do: "bz.do"; dp: "bz.dp"; dq: "bz.dq"; dr: "bz.dr"; ds: "bz.ds"; dt: "bz.dt"; du: "bz.du"; dv: "bz.dv"; dw: "bz.dw"; dx: "bz.dx"; dy: "bz.dy"; dz: "bz.dz"; ea: "bz.ea"; eb: "bz.eb"; ec: "bz.ec"; ed: "bz.ed"; ee: "bz.ee"; ef: "bz.ef"; eg: "bz.eg"; eh: "bz.eh"; ei: "bz.ei"; ej: "bz.ej"; ek: "bz.ek"; el: "bz.el"; em: "bz.em"; en: "bz.en"; eo: "bz.eo"; ep: "bz.ep"; eq: "bz.eq"; er: "bz.er"; es: "bz.es"; et: "bz.et"; eu: "bz.eu"; ev: "bz.ev"; ew: "bz.ew"; ex: "bz.ex"; ey: "bz.ey"; ez: "bz.ez"; fa: "bz.fa"; fb: "bz.fb"; fc: "bz.fc"; fd: "bz.fd"; fe: "bz.fe"; ff: "bz.ff"; fg: "bz.fg"; fh: "bz.fh"; fi: "bz.fi"; fj: "bz.fj"; fk: "bz.fk"; fl: "bz.fl"; fm: "bz.fm"; fn: "bz.fn"; fo: "bz.fo"; fp: "bz.fp"; fq: "bz.fq"; fr: "bz.fr"; fs: "bz.fs"; ft: "bz.ft"; fu: "bz.fu"; fv: "bz.fv"; fw: "bz.fw"; fx: "bz.fx"; fy: "bz.fy"; fz: "bz.fz"; ga: "bz.ga"; gb: "bz.gb"; gc: "bz.gc"; gd: "bz.gd"; ge: "bz.ge"; gf: "bz.gf"; gg: "bz.gg"; gh: "bz.gh"; gi: "bz.gi"; gj: "bz.gj"; gk: "bz.gk"; gl: "bz.gl"; gm: "bz.gm"; gn: "bz.gn"; go: "bz.go"; gp: "bz.gp"; gq: "bz.gq"; gr: "bz.gr"; gs: "bz.gs"; gt: "bz.gt"; gu: "bz.gu"; gv: "bz.gv"; gw: "bz.gw"; gx: "bz.gx"; gy: "bz.gy"; gz: "bz.gz"; ha: "bz.ha"; hb: "bz.hb"; hc: "bz.hc"; hd: "bz.hd"; he: "bz.he"; hf: "bz.hf"; hg: "bz.hg"; hh: "bz.hh"; hi: "bz.hi"; hj: "bz.hj"; hk: "bz.hk"; hl: "bz.hl"; hm: "bz.hm"; hn: "bz.hn"; ho: "bz.ho"; hp: "bz.hp"; hq: "bz.hq"; hr: "bz.hr"; hs: "bz.hs"; ht: "bz.ht"; hu: "bz.hu"; hv: "bz.hv"; hw: "bz.hw"; hx: "bz.hx"; hy: "bz.hy"; hz: "bz.hz"; ia: "bz.ia"; ib: "bz.ib"; ic: "bz.ic"; id: "bz.id"; ie: "bz.ie"; if: "bz.if"; ig: "bz.ig"; ih: "bz.ih"; ii: "bz.ii"; ij: "bz.ij"; ik: "bz.ik"; il: "bz.il"; im: "bz.im"; in: "bz.in"; io: "bz.io"; ip: "bz.ip"; iq: "bz.iq"; ir: "bz.ir"; is: "bz.is"; it: "bz.it"; iu: "bz.iu"; iv: "bz.iv"; iw: "bz.iw"; ix: "bz.ix"; iy: "bz.iy"; iz: "bz.iz"; ja: "bz.ja"; jb: "bz.jb"; jc: "bz.jc"; jd: "bz.jd"; je: "bz.je"; jf: "bz.jf"; jg: "bz.jg"; jh: "bz.jh"; ji: "bz.ji"; jj: "bz.jj"; jk: "bz.jk"; jl: "bz.jl"; jm: "bz.jm"; jn: "bz.jn"; jo: "bz.jo"; jp: "bz.jp"; jq: "bz.jq"; jr: "bz.jr"; js: "bz.js"; jt: "bz.jt"; ju: "bz.ju"; jv: "bz.jv"; jw: "bz.jw"; jx: "bz.jx"; jy: "bz.jy"; jz: "bz.jz"; ka: "bz.ka"; kb: "bz.kb"; kc: "bz.kc"; kd: "bz.kd"; ke: "bz.ke"; kf: "bz.kf"; kg: "bz.kg"; kh: "bz.kh"; ki: "bz.ki"; kj: "bz.kj"; kk: "bz.kk"; kl: "bz.kl"; km: "bz.km"; kn: "bz.kn"; ko: "bz.ko"; kp: "bz.kp"; kq: "bz.kq"; kr: "bz.kr"; ks: "bz.ks"; kt: "bz.kt"; ku: "bz.ku"; kv: "bz.kv"; kw: "bz.kw"; kx: "bz.kx"; ky: "bz.ky"; kz: "bz.kz"; la: "bz.la"; lb: "bz.lb"; lc: "bz.lc"; ld: "bz.ld"; le: "bz.le"; lf: "bz.lf"; lg: "bz.lg"; lh: "bz.lh"; li: "bz.li"; lj: "bz.lj"; lk: "bz.lk"; ll: "bz.ll"; lm: "bz.lm"; ln: "bz.ln"; lo: "bz.lo"; lp: "bz.lp"; lq: "bz.lq"; lr: "bz.lr"; ls: "bz.ls"; lt: "bz.lt"; lu: "bz.lu"; lv: "bz.lv"; lw: "bz.lw"; lx: "bz.lx"; ly: "bz.ly"; lz: "bz.lz"; ma: "bz.ma"; mb: "bz.mb"; mc: "bz.mc"; md: "bz.md"; me: "bz.me"; mf: "bz.mf"; mg: "bz.mg"; mh: "bz.mh"; mi: "bz.mi"; mj: "bz.mj"; mk: "bz.mk"; ml: "bz.ml"; mm: "bz.mm"; mn: "bz.mn"; mo: "bz.mo"; mp: "bz.mp"; mq: "bz.mq"; mr: "bz.mr"; ms: "bz.ms"; mt: "bz.mt"; mu: "bz.mu"; mv: "bz.mv"; mw: "bz.mw"; mx: "bz.mx"; my: "bz.my"; mz: "bz.mz"; na: "bz.na"; nb: "bz.nb"; nc: "bz.nc"; nd: "bz.nd"; ne: "bz.ne"; nf: "bz.nf"; ng: "bz.ng"; nh: "bz.nh"; ni: "bz.ni"; nj: "bz.nj"; nk: "bz.nk"; nl: "bz.nl"; nm: "bz.nm"; nn: "bz.nn"; no: "bz.no"; np: "bz.np"; nq: "bz.nq"; nr: "bz.nr"; ns: "bz.ns"; nt: "bz.nt"; nu: "bz.nu"; nv: "bz.nv"; nw: "bz.nw"; nx: "bz.nx"; ny: "bz.ny"; nz: "bz.nz"; oa: "bz.oa"; ob: "bz.ob"; oc: "bz.oc"; od: "bz.od"; oe: "bz.oe"; of: "bz.of"; og: "bz.og"; oh: "bz.oh"; oi: "bz.oi"; oj: "bz.oj"; ok: "bz.ok"; ol: "bz.ol"; om: "bz.om"; on: "bz.on"; oo: "bz.oo"; op: "bz.op"; oq: "bz.oq"; or: "bz.or"; os: "bz.os"; ot: "bz.ot"; ou: "bz.ou"; ov: "bz.ov"; ow: "bz.ow"; ox: "bz.ox"; oy: "bz.oy"; oz: "bz.oz"; pa: "bz.pa"; pb: "bz.pb"; pc: "bz.pc"; pd: "bz.pd"; pe: "bz.pe"; pf: "bz.pf"; pg: "bz.pg"; ph: "bz.ph"; pi: "bz.pi"; pj: "bz.pj"; pk: "bz.pk"; pl: "bz.pl"; pm: "bz.pm"; pn: "bz.pn"; po: "bz.po"; pp: "bz.pp"; pq: "bz.pq"; pr: "bz.pr"; ps: "bz.ps"; pt: "bz.pt"; pu: "bz.pu"; pv: "bz.pv"; pw: "bz.pw"; px: "bz.px"; py: "bz.py"; pz: "bz.pz"; qa: "bz.qa"; qb: "bz.qb"; qc: "bz.qc"; qd: "bz.qd"; qe: "bz.qe"; qf: "bz.qf"; qg: "bz.qg"; qh: "bz.qh"; qi: "bz.qi"; qj: "bz.qj"; qk: "bz.qk"; ql: "bz.ql"; qm: "bz.qm"; qn: "bz.qn"; qo: "bz.qo"; qp: "bz.qp"; qq: "bz.qq"; qr: "bz.qr"; qs: "bz.qs"; qt: "bz.qt"; qu: "bz.qu"; qv: "bz.qv"; qw: "bz.qw"; qx: "bz.qx"; qy: "bz.qy"; qz: "bz.qz"; ra: "bz.ra"; rb: "bz.rb"; rc: "bz.rc"; rd: "bz.rd"; re: "bz.re"; rf: "bz.rf"; rg: "bz.rg"; rh: "bz.rh"; ri: "bz.ri"; rj: "bz.rj"; rk: "bz.rk"; rl: "bz.rl"; rm: "bz.rm"; rn: "bz.rn"; ro: "bz.ro"; rp: "bz.rp"; rq: "bz.rq"; rr: "bz.rr"; rs: "bz.rs"; rt: "bz.rt"; ru: "bz.ru"; rv: "bz.rv"; rw: "bz.rw"; rx: "bz.rx"; ry: "bz.ry"; rz: "bz.rz"; sa: "bz.sa"; sb: "bz.sb"; sc: "bz.sc"; sd: "bz.sd"; se: "bz.se"; sf: "bz.sf"; sg: "bz.sg"; sh: "bz.sh"; si: "bz.si"; sj: "bz.sj"; sk: "bz.sk"; sl: "bz.sl"; sm: "bz.sm"; sn: "bz.sn"; so: "bz.so"; sp: "bz.sp"; sq: "bz.sq"; sr: "bz.sr"; ss: "bz.ss"; st: "bz.st"; su: "bz.su"; sv: "bz.sv"; sw: "bz.sw"; sx: "bz.sx"; sy: "bz.sy"; sz: "bz.sz"; ta: "bz.ta"; tb: "bz.tb"; tc: "bz.tc"; td: "bz.td"; te: "bz.te"; tf: "bz.tf"; tg: "bz.tg"; th: "bz.th"; ti: "bz.ti"; tj: "bz.tj"; tk: "bz.tk"; tl: "bz.tl"; tm: "bz.tm"; tn: "bz.tn"; to: "bz.to"; tp: "bz.tp"; tq: "bz.tq"; tr: "bz.tr"; ts: "bz.ts"; tt: "bz.tt"; tu: "bz.tu"; tv: "bz.tv"; tw: "bz.tw"; tx: "bz.tx"; ty: "bz.ty"; tz: "bz.tz"; ua: "bz.ua"; ub: "bz.ub"; uc: "bz.uc"; ud: "bz.ud"; ue: "bz.ue"; uf: "bz.uf"; ug: "bz.ug"; uh: "bz.uh"; ui: "bz.ui"; uj: "bz.uj"; uk: "bz.uk"; ul: "bz.ul"; um: "bz.um"; un: "bz.un"; uo: "bz.uo"; up: "bz.up"; uq: "bz.uq"; ur: "bz.ur"; us: "bz.us"; ut: "bz.ut"; uu: "bz.uu"; uv: "bz.uv"; uw: "bz.uw"; ux: "bz.ux"; uy: "bz.uy"; uz: "bz.uz"; va: "bz.va"; vb: "bz.vb"; vc: "bz.vc"; vd: "bz.vd"; ve: "bz.ve"; vf: "bz.vf"; vg: "bz.vg"; vh: "bz.vh"; vi: "bz.vi"; vj: "bz.vj"; vk: "bz.vk"; vl: "bz.vl"; vm: "bz.vm"; vn: "bz.vn"; vo: "bz.vo"; vp: "bz.vp"; vq: "bz.vq"; vr: "bz.vr"; vs: "bz.vs"; vt: "bz.vt"; vu: "bz.vu"; vv: "bz.vv"; vw: "bz.vw"; vx: "bz.vx"; vy: "bz.vy"; vz: "bz.vz"; wa: "bz.wa"; wb: "bz.wb"; wc: "bz.wc"; wd: "bz.wd"; we: "bz.we"; wf: "bz.wf"; wg: "bz.wg"; wh: "bz.wh"; wi: "bz.wi"; wj: "bz.wj"; wk: "bz.wk"; wl: "bz.wl"; wm: "bz.wm"; wn: "bz.wn"; wo: "bz.wo"; wp: "bz.wp"; wq: "bz.wq"; wr: "bz.wr"; ws: "bz.ws"; wt: "bz.wt"; wu: "bz.wu"; wv: "bz.wv"; ww: "bz.ww"; wx: "bz.wx"; wy: "bz.wy"; wz: "bz.wz"; xa: "bz.xa"; xb: "bz.xb"; xc: "bz.xc"; xd: "bz.xd"; xe: "bz.xe"; xf: "bz.xf"; xg: "bz.xg"; xh: "bz.xh"; xi: "bz.xi"; xj: "bz.xj"; xk: "bz.xk"; xl: "bz.xl"; xm: "bz.xm"; xn: "bz.xn"; xo: "bz.xo"; xp: "bz.xp"; xq: "bz.xq"; xr: "bz.xr"; xs: "bz.xs"; xt: "bz.xt"; xu: "bz.xu"; xv: "bz.xv"; xw: "bz.xw"; xx: "bz.xx"; xy: "bz.xy"; xz: "bz.xz"; ya: "bz.ya"; yb: "bz.yb"; yc: "bz.yc"; yd: "bz.yd"; ye: "bz.ye"; yf: "bz.yf"; yg: "bz.yg"; yh: "bz.yh"; yi: "bz.yi"; yj: "bz.yj"; yk: "bz.yk"; yl: "bz.yl"; ym: "bz.ym"; yn: "bz.yn"; yo: "bz.yo"; yp: "bz.yp"; yq: "bz.yq"; yr: "bz.yr"; ys: "bz.ys"; yt: "bz.yt"; yu: "bz.yu"; yv: "bz.yv"; yw: "bz.yw"; yx: "bz.yx"; yy: "bz.yy"; yz: "bz.yz"; za: "bz.za"; zb: "bz.zb"; zc: "bz.zc"; zd: "bz.zd"; ze: "bz.ze"; zf: "bz.zf"; zg: "bz.zg"; zh: "bz.zh"; zi: "bz.zi"; zj: "bz.zj"; zk: "bz.zk"; zl: "bz.zl"; zm: "bz.zm"; zn: "bz.zn"; zo: "bz.zo"; zp: "bz.zp"; zq: "bz.zq"; zr: "bz.zr"; zs: "bz.zs"; zt: "bz.zt"; zu: "bz.zu"; zv: "bz.zv"; zw: "bz.zw"; zx: "bz.zx"; zy: "bz.zy"; zz: "bz.zz"; }; ca: { aa: "ca.aa"; ab: "ca.ab"; ac: "ca.ac"; ad: "ca.ad"; ae: "ca.ae"; af: "ca.af"; ag: "ca.ag"; ah: "ca.ah"; ai: "ca.ai"; aj: "ca.aj"; ak: "ca.ak"; al: "ca.al"; am: "ca.am"; an: "ca.an"; ao: "ca.ao"; ap: "ca.ap"; aq: "ca.aq"; ar: "ca.ar"; as: "ca.as"; at: "ca.at"; au: "ca.au"; av: "ca.av"; aw: "ca.aw"; ax: "ca.ax"; ay: "ca.ay"; az: "ca.az"; ba: "ca.ba"; bb: "ca.bb"; bc: "ca.bc"; bd: "ca.bd"; be: "ca.be"; bf: "ca.bf"; bg: "ca.bg"; bh: "ca.bh"; bi: "ca.bi"; bj: "ca.bj"; bk: "ca.bk"; bl: "ca.bl"; bm: "ca.bm"; bn: "ca.bn"; bo: "ca.bo"; bp: "ca.bp"; bq: "ca.bq"; br: "ca.br"; bs: "ca.bs"; bt: "ca.bt"; bu: "ca.bu"; bv: "ca.bv"; bw: "ca.bw"; bx: "ca.bx"; by: "ca.by"; bz: "ca.bz"; ca: "ca.ca"; cb: "ca.cb"; cc: "ca.cc"; cd: "ca.cd"; ce: "ca.ce"; cf: "ca.cf"; cg: "ca.cg"; ch: "ca.ch"; ci: "ca.ci"; cj: "ca.cj"; ck: "ca.ck"; cl: "ca.cl"; cm: "ca.cm"; cn: "ca.cn"; co: "ca.co"; cp: "ca.cp"; cq: "ca.cq"; cr: "ca.cr"; cs: "ca.cs"; ct: "ca.ct"; cu: "ca.cu"; cv: "ca.cv"; cw: "ca.cw"; cx: "ca.cx"; cy: "ca.cy"; cz: "ca.cz"; da: "ca.da"; db: "ca.db"; dc: "ca.dc"; dd: "ca.dd"; de: "ca.de"; df: "ca.df"; dg: "ca.dg"; dh: "ca.dh"; di: "ca.di"; dj: "ca.dj"; dk: "ca.dk"; dl: "ca.dl"; dm: "ca.dm"; dn: "ca.dn"; do: "ca.do"; dp: "ca.dp"; dq: "ca.dq"; dr: "ca.dr"; ds: "ca.ds"; dt: "ca.dt"; du: "ca.du"; dv: "ca.dv"; dw: "ca.dw"; dx: "ca.dx"; dy: "ca.dy"; dz: "ca.dz"; ea: "ca.ea"; eb: "ca.eb"; ec: "ca.ec"; ed: "ca.ed"; ee: "ca.ee"; ef: "ca.ef"; eg: "ca.eg"; eh: "ca.eh"; ei: "ca.ei"; ej: "ca.ej"; ek: "ca.ek"; el: "ca.el"; em: "ca.em"; en: "ca.en"; eo: "ca.eo"; ep: "ca.ep"; eq: "ca.eq"; er: "ca.er"; es: "ca.es"; et: "ca.et"; eu: "ca.eu"; ev: "ca.ev"; ew: "ca.ew"; ex: "ca.ex"; ey: "ca.ey"; ez: "ca.ez"; fa: "ca.fa"; fb: "ca.fb"; fc: "ca.fc"; fd: "ca.fd"; fe: "ca.fe"; ff: "ca.ff"; fg: "ca.fg"; fh: "ca.fh"; fi: "ca.fi"; fj: "ca.fj"; fk: "ca.fk"; fl: "ca.fl"; fm: "ca.fm"; fn: "ca.fn"; fo: "ca.fo"; fp: "ca.fp"; fq: "ca.fq"; fr: "ca.fr"; fs: "ca.fs"; ft: "ca.ft"; fu: "ca.fu"; fv: "ca.fv"; fw: "ca.fw"; fx: "ca.fx"; fy: "ca.fy"; fz: "ca.fz"; ga: "ca.ga"; gb: "ca.gb"; gc: "ca.gc"; gd: "ca.gd"; ge: "ca.ge"; gf: "ca.gf"; gg: "ca.gg"; gh: "ca.gh"; gi: "ca.gi"; gj: "ca.gj"; gk: "ca.gk"; gl: "ca.gl"; gm: "ca.gm"; gn: "ca.gn"; go: "ca.go"; gp: "ca.gp"; gq: "ca.gq"; gr: "ca.gr"; gs: "ca.gs"; gt: "ca.gt"; gu: "ca.gu"; gv: "ca.gv"; gw: "ca.gw"; gx: "ca.gx"; gy: "ca.gy"; gz: "ca.gz"; ha: "ca.ha"; hb: "ca.hb"; hc: "ca.hc"; hd: "ca.hd"; he: "ca.he"; hf: "ca.hf"; hg: "ca.hg"; hh: "ca.hh"; hi: "ca.hi"; hj: "ca.hj"; hk: "ca.hk"; hl: "ca.hl"; hm: "ca.hm"; hn: "ca.hn"; ho: "ca.ho"; hp: "ca.hp"; hq: "ca.hq"; hr: "ca.hr"; hs: "ca.hs"; ht: "ca.ht"; hu: "ca.hu"; hv: "ca.hv"; hw: "ca.hw"; hx: "ca.hx"; hy: "ca.hy"; hz: "ca.hz"; ia: "ca.ia"; ib: "ca.ib"; ic: "ca.ic"; id: "ca.id"; ie: "ca.ie"; if: "ca.if"; ig: "ca.ig"; ih: "ca.ih"; ii: "ca.ii"; ij: "ca.ij"; ik: "ca.ik"; il: "ca.il"; im: "ca.im"; in: "ca.in"; io: "ca.io"; ip: "ca.ip"; iq: "ca.iq"; ir: "ca.ir"; is: "ca.is"; it: "ca.it"; iu: "ca.iu"; iv: "ca.iv"; iw: "ca.iw"; ix: "ca.ix"; iy: "ca.iy"; iz: "ca.iz"; ja: "ca.ja"; jb: "ca.jb"; jc: "ca.jc"; jd: "ca.jd"; je: "ca.je"; jf: "ca.jf"; jg: "ca.jg"; jh: "ca.jh"; ji: "ca.ji"; jj: "ca.jj"; jk: "ca.jk"; jl: "ca.jl"; jm: "ca.jm"; jn: "ca.jn"; jo: "ca.jo"; jp: "ca.jp"; jq: "ca.jq"; jr: "ca.jr"; js: "ca.js"; jt: "ca.jt"; ju: "ca.ju"; jv: "ca.jv"; jw: "ca.jw"; jx: "ca.jx"; jy: "ca.jy"; jz: "ca.jz"; ka: "ca.ka"; kb: "ca.kb"; kc: "ca.kc"; kd: "ca.kd"; ke: "ca.ke"; kf: "ca.kf"; kg: "ca.kg"; kh: "ca.kh"; ki: "ca.ki"; kj: "ca.kj"; kk: "ca.kk"; kl: "ca.kl"; km: "ca.km"; kn: "ca.kn"; ko: "ca.ko"; kp: "ca.kp"; kq: "ca.kq"; kr: "ca.kr"; ks: "ca.ks"; kt: "ca.kt"; ku: "ca.ku"; kv: "ca.kv"; kw: "ca.kw"; kx: "ca.kx"; ky: "ca.ky"; kz: "ca.kz"; la: "ca.la"; lb: "ca.lb"; lc: "ca.lc"; ld: "ca.ld"; le: "ca.le"; lf: "ca.lf"; lg: "ca.lg"; lh: "ca.lh"; li: "ca.li"; lj: "ca.lj"; lk: "ca.lk"; ll: "ca.ll"; lm: "ca.lm"; ln: "ca.ln"; lo: "ca.lo"; lp: "ca.lp"; lq: "ca.lq"; lr: "ca.lr"; ls: "ca.ls"; lt: "ca.lt"; lu: "ca.lu"; lv: "ca.lv"; lw: "ca.lw"; lx: "ca.lx"; ly: "ca.ly"; lz: "ca.lz"; ma: "ca.ma"; mb: "ca.mb"; mc: "ca.mc"; md: "ca.md"; me: "ca.me"; mf: "ca.mf"; mg: "ca.mg"; mh: "ca.mh"; mi: "ca.mi"; mj: "ca.mj"; mk: "ca.mk"; ml: "ca.ml"; mm: "ca.mm"; mn: "ca.mn"; mo: "ca.mo"; mp: "ca.mp"; mq: "ca.mq"; mr: "ca.mr"; ms: "ca.ms"; mt: "ca.mt"; mu: "ca.mu"; mv: "ca.mv"; mw: "ca.mw"; mx: "ca.mx"; my: "ca.my"; mz: "ca.mz"; na: "ca.na"; nb: "ca.nb"; nc: "ca.nc"; nd: "ca.nd"; ne: "ca.ne"; nf: "ca.nf"; ng: "ca.ng"; nh: "ca.nh"; ni: "ca.ni"; nj: "ca.nj"; nk: "ca.nk"; nl: "ca.nl"; nm: "ca.nm"; nn: "ca.nn"; no: "ca.no"; np: "ca.np"; nq: "ca.nq"; nr: "ca.nr"; ns: "ca.ns"; nt: "ca.nt"; nu: "ca.nu"; nv: "ca.nv"; nw: "ca.nw"; nx: "ca.nx"; ny: "ca.ny"; nz: "ca.nz"; oa: "ca.oa"; ob: "ca.ob"; oc: "ca.oc"; od: "ca.od"; oe: "ca.oe"; of: "ca.of"; og: "ca.og"; oh: "ca.oh"; oi: "ca.oi"; oj: "ca.oj"; ok: "ca.ok"; ol: "ca.ol"; om: "ca.om"; on: "ca.on"; oo: "ca.oo"; op: "ca.op"; oq: "ca.oq"; or: "ca.or"; os: "ca.os"; ot: "ca.ot"; ou: "ca.ou"; ov: "ca.ov"; ow: "ca.ow"; ox: "ca.ox"; oy: "ca.oy"; oz: "ca.oz"; pa: "ca.pa"; pb: "ca.pb"; pc: "ca.pc"; pd: "ca.pd"; pe: "ca.pe"; pf: "ca.pf"; pg: "ca.pg"; ph: "ca.ph"; pi: "ca.pi"; pj: "ca.pj"; pk: "ca.pk"; pl: "ca.pl"; pm: "ca.pm"; pn: "ca.pn"; po: "ca.po"; pp: "ca.pp"; pq: "ca.pq"; pr: "ca.pr"; ps: "ca.ps"; pt: "ca.pt"; pu: "ca.pu"; pv: "ca.pv"; pw: "ca.pw"; px: "ca.px"; py: "ca.py"; pz: "ca.pz"; qa: "ca.qa"; qb: "ca.qb"; qc: "ca.qc"; qd: "ca.qd"; qe: "ca.qe"; qf: "ca.qf"; qg: "ca.qg"; qh: "ca.qh"; qi: "ca.qi"; qj: "ca.qj"; qk: "ca.qk"; ql: "ca.ql"; qm: "ca.qm"; qn: "ca.qn"; qo: "ca.qo"; qp: "ca.qp"; qq: "ca.qq"; qr: "ca.qr"; qs: "ca.qs"; qt: "ca.qt"; qu: "ca.qu"; qv: "ca.qv"; qw: "ca.qw"; qx: "ca.qx"; qy: "ca.qy"; qz: "ca.qz"; ra: "ca.ra"; rb: "ca.rb"; rc: "ca.rc"; rd: "ca.rd"; re: "ca.re"; rf: "ca.rf"; rg: "ca.rg"; rh: "ca.rh"; ri: "ca.ri"; rj: "ca.rj"; rk: "ca.rk"; rl: "ca.rl"; rm: "ca.rm"; rn: "ca.rn"; ro: "ca.ro"; rp: "ca.rp"; rq: "ca.rq"; rr: "ca.rr"; rs: "ca.rs"; rt: "ca.rt"; ru: "ca.ru"; rv: "ca.rv"; rw: "ca.rw"; rx: "ca.rx"; ry: "ca.ry"; rz: "ca.rz"; sa: "ca.sa"; sb: "ca.sb"; sc: "ca.sc"; sd: "ca.sd"; se: "ca.se"; sf: "ca.sf"; sg: "ca.sg"; sh: "ca.sh"; si: "ca.si"; sj: "ca.sj"; sk: "ca.sk"; sl: "ca.sl"; sm: "ca.sm"; sn: "ca.sn"; so: "ca.so"; sp: "ca.sp"; sq: "ca.sq"; sr: "ca.sr"; ss: "ca.ss"; st: "ca.st"; su: "ca.su"; sv: "ca.sv"; sw: "ca.sw"; sx: "ca.sx"; sy: "ca.sy"; sz: "ca.sz"; ta: "ca.ta"; tb: "ca.tb"; tc: "ca.tc"; td: "ca.td"; te: "ca.te"; tf: "ca.tf"; tg: "ca.tg"; th: "ca.th"; ti: "ca.ti"; tj: "ca.tj"; tk: "ca.tk"; tl: "ca.tl"; tm: "ca.tm"; tn: "ca.tn"; to: "ca.to"; tp: "ca.tp"; tq: "ca.tq"; tr: "ca.tr"; ts: "ca.ts"; tt: "ca.tt"; tu: "ca.tu"; tv: "ca.tv"; tw: "ca.tw"; tx: "ca.tx"; ty: "ca.ty"; tz: "ca.tz"; ua: "ca.ua"; ub: "ca.ub"; uc: "ca.uc"; ud: "ca.ud"; ue: "ca.ue"; uf: "ca.uf"; ug: "ca.ug"; uh: "ca.uh"; ui: "ca.ui"; uj: "ca.uj"; uk: "ca.uk"; ul: "ca.ul"; um: "ca.um"; un: "ca.un"; uo: "ca.uo"; up: "ca.up"; uq: "ca.uq"; ur: "ca.ur"; us: "ca.us"; ut: "ca.ut"; uu: "ca.uu"; uv: "ca.uv"; uw: "ca.uw"; ux: "ca.ux"; uy: "ca.uy"; uz: "ca.uz"; va: "ca.va"; vb: "ca.vb"; vc: "ca.vc"; vd: "ca.vd"; ve: "ca.ve"; vf: "ca.vf"; vg: "ca.vg"; vh: "ca.vh"; vi: "ca.vi"; vj: "ca.vj"; vk: "ca.vk"; vl: "ca.vl"; vm: "ca.vm"; vn: "ca.vn"; vo: "ca.vo"; vp: "ca.vp"; vq: "ca.vq"; vr: "ca.vr"; vs: "ca.vs"; vt: "ca.vt"; vu: "ca.vu"; vv: "ca.vv"; vw: "ca.vw"; vx: "ca.vx"; vy: "ca.vy"; vz: "ca.vz"; wa: "ca.wa"; wb: "ca.wb"; wc: "ca.wc"; wd: "ca.wd"; we: "ca.we"; wf: "ca.wf"; wg: "ca.wg"; wh: "ca.wh"; wi: "ca.wi"; wj: "ca.wj"; wk: "ca.wk"; wl: "ca.wl"; wm: "ca.wm"; wn: "ca.wn"; wo: "ca.wo"; wp: "ca.wp"; wq: "ca.wq"; wr: "ca.wr"; ws: "ca.ws"; wt: "ca.wt"; wu: "ca.wu"; wv: "ca.wv"; ww: "ca.ww"; wx: "ca.wx"; wy: "ca.wy"; wz: "ca.wz"; xa: "ca.xa"; xb: "ca.xb"; xc: "ca.xc"; xd: "ca.xd"; xe: "ca.xe"; xf: "ca.xf"; xg: "ca.xg"; xh: "ca.xh"; xi: "ca.xi"; xj: "ca.xj"; xk: "ca.xk"; xl: "ca.xl"; xm: "ca.xm"; xn: "ca.xn"; xo: "ca.xo"; xp: "ca.xp"; xq: "ca.xq"; xr: "ca.xr"; xs: "ca.xs"; xt: "ca.xt"; xu: "ca.xu"; xv: "ca.xv"; xw: "ca.xw"; xx: "ca.xx"; xy: "ca.xy"; xz: "ca.xz"; ya: "ca.ya"; yb: "ca.yb"; yc: "ca.yc"; yd: "ca.yd"; ye: "ca.ye"; yf: "ca.yf"; yg: "ca.yg"; yh: "ca.yh"; yi: "ca.yi"; yj: "ca.yj"; yk: "ca.yk"; yl: "ca.yl"; ym: "ca.ym"; yn: "ca.yn"; yo: "ca.yo"; yp: "ca.yp"; yq: "ca.yq"; yr: "ca.yr"; ys: "ca.ys"; yt: "ca.yt"; yu: "ca.yu"; yv: "ca.yv"; yw: "ca.yw"; yx: "ca.yx"; yy: "ca.yy"; yz: "ca.yz"; za: "ca.za"; zb: "ca.zb"; zc: "ca.zc"; zd: "ca.zd"; ze: "ca.ze"; zf: "ca.zf"; zg: "ca.zg"; zh: "ca.zh"; zi: "ca.zi"; zj: "ca.zj"; zk: "ca.zk"; zl: "ca.zl"; zm: "ca.zm"; zn: "ca.zn"; zo: "ca.zo"; zp: "ca.zp"; zq: "ca.zq"; zr: "ca.zr"; zs: "ca.zs"; zt: "ca.zt"; zu: "ca.zu"; zv: "ca.zv"; zw: "ca.zw"; zx: "ca.zx"; zy: "ca.zy"; zz: "ca.zz"; }; cb: { aa: "cb.aa"; ab: "cb.ab"; ac: "cb.ac"; ad: "cb.ad"; ae: "cb.ae"; af: "cb.af"; ag: "cb.ag"; ah: "cb.ah"; ai: "cb.ai"; aj: "cb.aj"; ak: "cb.ak"; al: "cb.al"; am: "cb.am"; an: "cb.an"; ao: "cb.ao"; ap: "cb.ap"; aq: "cb.aq"; ar: "cb.ar"; as: "cb.as"; at: "cb.at"; au: "cb.au"; av: "cb.av"; aw: "cb.aw"; ax: "cb.ax"; ay: "cb.ay"; az: "cb.az"; ba: "cb.ba"; bb: "cb.bb"; bc: "cb.bc"; bd: "cb.bd"; be: "cb.be"; bf: "cb.bf"; bg: "cb.bg"; bh: "cb.bh"; bi: "cb.bi"; bj: "cb.bj"; bk: "cb.bk"; bl: "cb.bl"; bm: "cb.bm"; bn: "cb.bn"; bo: "cb.bo"; bp: "cb.bp"; bq: "cb.bq"; br: "cb.br"; bs: "cb.bs"; bt: "cb.bt"; bu: "cb.bu"; bv: "cb.bv"; bw: "cb.bw"; bx: "cb.bx"; by: "cb.by"; bz: "cb.bz"; ca: "cb.ca"; cb: "cb.cb"; cc: "cb.cc"; cd: "cb.cd"; ce: "cb.ce"; cf: "cb.cf"; cg: "cb.cg"; ch: "cb.ch"; ci: "cb.ci"; cj: "cb.cj"; ck: "cb.ck"; cl: "cb.cl"; cm: "cb.cm"; cn: "cb.cn"; co: "cb.co"; cp: "cb.cp"; cq: "cb.cq"; cr: "cb.cr"; cs: "cb.cs"; ct: "cb.ct"; cu: "cb.cu"; cv: "cb.cv"; cw: "cb.cw"; cx: "cb.cx"; cy: "cb.cy"; cz: "cb.cz"; da: "cb.da"; db: "cb.db"; dc: "cb.dc"; dd: "cb.dd"; de: "cb.de"; df: "cb.df"; dg: "cb.dg"; dh: "cb.dh"; di: "cb.di"; dj: "cb.dj"; dk: "cb.dk"; dl: "cb.dl"; dm: "cb.dm"; dn: "cb.dn"; do: "cb.do"; dp: "cb.dp"; dq: "cb.dq"; dr: "cb.dr"; ds: "cb.ds"; dt: "cb.dt"; du: "cb.du"; dv: "cb.dv"; dw: "cb.dw"; dx: "cb.dx"; dy: "cb.dy"; dz: "cb.dz"; ea: "cb.ea"; eb: "cb.eb"; ec: "cb.ec"; ed: "cb.ed"; ee: "cb.ee"; ef: "cb.ef"; eg: "cb.eg"; eh: "cb.eh"; ei: "cb.ei"; ej: "cb.ej"; ek: "cb.ek"; el: "cb.el"; em: "cb.em"; en: "cb.en"; eo: "cb.eo"; ep: "cb.ep"; eq: "cb.eq"; er: "cb.er"; es: "cb.es"; et: "cb.et"; eu: "cb.eu"; ev: "cb.ev"; ew: "cb.ew"; ex: "cb.ex"; ey: "cb.ey"; ez: "cb.ez"; fa: "cb.fa"; fb: "cb.fb"; fc: "cb.fc"; fd: "cb.fd"; fe: "cb.fe"; ff: "cb.ff"; fg: "cb.fg"; fh: "cb.fh"; fi: "cb.fi"; fj: "cb.fj"; fk: "cb.fk"; fl: "cb.fl"; fm: "cb.fm"; fn: "cb.fn"; fo: "cb.fo"; fp: "cb.fp"; fq: "cb.fq"; fr: "cb.fr"; fs: "cb.fs"; ft: "cb.ft"; fu: "cb.fu"; fv: "cb.fv"; fw: "cb.fw"; fx: "cb.fx"; fy: "cb.fy"; fz: "cb.fz"; ga: "cb.ga"; gb: "cb.gb"; gc: "cb.gc"; gd: "cb.gd"; ge: "cb.ge"; gf: "cb.gf"; gg: "cb.gg"; gh: "cb.gh"; gi: "cb.gi"; gj: "cb.gj"; gk: "cb.gk"; gl: "cb.gl"; gm: "cb.gm"; gn: "cb.gn"; go: "cb.go"; gp: "cb.gp"; gq: "cb.gq"; gr: "cb.gr"; gs: "cb.gs"; gt: "cb.gt"; gu: "cb.gu"; gv: "cb.gv"; gw: "cb.gw"; gx: "cb.gx"; gy: "cb.gy"; gz: "cb.gz"; ha: "cb.ha"; hb: "cb.hb"; hc: "cb.hc"; hd: "cb.hd"; he: "cb.he"; hf: "cb.hf"; hg: "cb.hg"; hh: "cb.hh"; hi: "cb.hi"; hj: "cb.hj"; hk: "cb.hk"; hl: "cb.hl"; hm: "cb.hm"; hn: "cb.hn"; ho: "cb.ho"; hp: "cb.hp"; hq: "cb.hq"; hr: "cb.hr"; hs: "cb.hs"; ht: "cb.ht"; hu: "cb.hu"; hv: "cb.hv"; hw: "cb.hw"; hx: "cb.hx"; hy: "cb.hy"; hz: "cb.hz"; ia: "cb.ia"; ib: "cb.ib"; ic: "cb.ic"; id: "cb.id"; ie: "cb.ie"; if: "cb.if"; ig: "cb.ig"; ih: "cb.ih"; ii: "cb.ii"; ij: "cb.ij"; ik: "cb.ik"; il: "cb.il"; im: "cb.im"; in: "cb.in"; io: "cb.io"; ip: "cb.ip"; iq: "cb.iq"; ir: "cb.ir"; is: "cb.is"; it: "cb.it"; iu: "cb.iu"; iv: "cb.iv"; iw: "cb.iw"; ix: "cb.ix"; iy: "cb.iy"; iz: "cb.iz"; ja: "cb.ja"; jb: "cb.jb"; jc: "cb.jc"; jd: "cb.jd"; je: "cb.je"; jf: "cb.jf"; jg: "cb.jg"; jh: "cb.jh"; ji: "cb.ji"; jj: "cb.jj"; jk: "cb.jk"; jl: "cb.jl"; jm: "cb.jm"; jn: "cb.jn"; jo: "cb.jo"; jp: "cb.jp"; jq: "cb.jq"; jr: "cb.jr"; js: "cb.js"; jt: "cb.jt"; ju: "cb.ju"; jv: "cb.jv"; jw: "cb.jw"; jx: "cb.jx"; jy: "cb.jy"; jz: "cb.jz"; ka: "cb.ka"; kb: "cb.kb"; kc: "cb.kc"; kd: "cb.kd"; ke: "cb.ke"; kf: "cb.kf"; kg: "cb.kg"; kh: "cb.kh"; ki: "cb.ki"; kj: "cb.kj"; kk: "cb.kk"; kl: "cb.kl"; km: "cb.km"; kn: "cb.kn"; ko: "cb.ko"; kp: "cb.kp"; kq: "cb.kq"; kr: "cb.kr"; ks: "cb.ks"; kt: "cb.kt"; ku: "cb.ku"; kv: "cb.kv"; kw: "cb.kw"; kx: "cb.kx"; ky: "cb.ky"; kz: "cb.kz"; la: "cb.la"; lb: "cb.lb"; lc: "cb.lc"; ld: "cb.ld"; le: "cb.le"; lf: "cb.lf"; lg: "cb.lg"; lh: "cb.lh"; li: "cb.li"; lj: "cb.lj"; lk: "cb.lk"; ll: "cb.ll"; lm: "cb.lm"; ln: "cb.ln"; lo: "cb.lo"; lp: "cb.lp"; lq: "cb.lq"; lr: "cb.lr"; ls: "cb.ls"; lt: "cb.lt"; lu: "cb.lu"; lv: "cb.lv"; lw: "cb.lw"; lx: "cb.lx"; ly: "cb.ly"; lz: "cb.lz"; ma: "cb.ma"; mb: "cb.mb"; mc: "cb.mc"; md: "cb.md"; me: "cb.me"; mf: "cb.mf"; mg: "cb.mg"; mh: "cb.mh"; mi: "cb.mi"; mj: "cb.mj"; mk: "cb.mk"; ml: "cb.ml"; mm: "cb.mm"; mn: "cb.mn"; mo: "cb.mo"; mp: "cb.mp"; mq: "cb.mq"; mr: "cb.mr"; ms: "cb.ms"; mt: "cb.mt"; mu: "cb.mu"; mv: "cb.mv"; mw: "cb.mw"; mx: "cb.mx"; my: "cb.my"; mz: "cb.mz"; na: "cb.na"; nb: "cb.nb"; nc: "cb.nc"; nd: "cb.nd"; ne: "cb.ne"; nf: "cb.nf"; ng: "cb.ng"; nh: "cb.nh"; ni: "cb.ni"; nj: "cb.nj"; nk: "cb.nk"; nl: "cb.nl"; nm: "cb.nm"; nn: "cb.nn"; no: "cb.no"; np: "cb.np"; nq: "cb.nq"; nr: "cb.nr"; ns: "cb.ns"; nt: "cb.nt"; nu: "cb.nu"; nv: "cb.nv"; nw: "cb.nw"; nx: "cb.nx"; ny: "cb.ny"; nz: "cb.nz"; oa: "cb.oa"; ob: "cb.ob"; oc: "cb.oc"; od: "cb.od"; oe: "cb.oe"; of: "cb.of"; og: "cb.og"; oh: "cb.oh"; oi: "cb.oi"; oj: "cb.oj"; ok: "cb.ok"; ol: "cb.ol"; om: "cb.om"; on: "cb.on"; oo: "cb.oo"; op: "cb.op"; oq: "cb.oq"; or: "cb.or"; os: "cb.os"; ot: "cb.ot"; ou: "cb.ou"; ov: "cb.ov"; ow: "cb.ow"; ox: "cb.ox"; oy: "cb.oy"; oz: "cb.oz"; pa: "cb.pa"; pb: "cb.pb"; pc: "cb.pc"; pd: "cb.pd"; pe: "cb.pe"; pf: "cb.pf"; pg: "cb.pg"; ph: "cb.ph"; pi: "cb.pi"; pj: "cb.pj"; pk: "cb.pk"; pl: "cb.pl"; pm: "cb.pm"; pn: "cb.pn"; po: "cb.po"; pp: "cb.pp"; pq: "cb.pq"; pr: "cb.pr"; ps: "cb.ps"; pt: "cb.pt"; pu: "cb.pu"; pv: "cb.pv"; pw: "cb.pw"; px: "cb.px"; py: "cb.py"; pz: "cb.pz"; qa: "cb.qa"; qb: "cb.qb"; qc: "cb.qc"; qd: "cb.qd"; qe: "cb.qe"; qf: "cb.qf"; qg: "cb.qg"; qh: "cb.qh"; qi: "cb.qi"; qj: "cb.qj"; qk: "cb.qk"; ql: "cb.ql"; qm: "cb.qm"; qn: "cb.qn"; qo: "cb.qo"; qp: "cb.qp"; qq: "cb.qq"; qr: "cb.qr"; qs: "cb.qs"; qt: "cb.qt"; qu: "cb.qu"; qv: "cb.qv"; qw: "cb.qw"; qx: "cb.qx"; qy: "cb.qy"; qz: "cb.qz"; ra: "cb.ra"; rb: "cb.rb"; rc: "cb.rc"; rd: "cb.rd"; re: "cb.re"; rf: "cb.rf"; rg: "cb.rg"; rh: "cb.rh"; ri: "cb.ri"; rj: "cb.rj"; rk: "cb.rk"; rl: "cb.rl"; rm: "cb.rm"; rn: "cb.rn"; ro: "cb.ro"; rp: "cb.rp"; rq: "cb.rq"; rr: "cb.rr"; rs: "cb.rs"; rt: "cb.rt"; ru: "cb.ru"; rv: "cb.rv"; rw: "cb.rw"; rx: "cb.rx"; ry: "cb.ry"; rz: "cb.rz"; sa: "cb.sa"; sb: "cb.sb"; sc: "cb.sc"; sd: "cb.sd"; se: "cb.se"; sf: "cb.sf"; sg: "cb.sg"; sh: "cb.sh"; si: "cb.si"; sj: "cb.sj"; sk: "cb.sk"; sl: "cb.sl"; sm: "cb.sm"; sn: "cb.sn"; so: "cb.so"; sp: "cb.sp"; sq: "cb.sq"; sr: "cb.sr"; ss: "cb.ss"; st: "cb.st"; su: "cb.su"; sv: "cb.sv"; sw: "cb.sw"; sx: "cb.sx"; sy: "cb.sy"; sz: "cb.sz"; ta: "cb.ta"; tb: "cb.tb"; tc: "cb.tc"; td: "cb.td"; te: "cb.te"; tf: "cb.tf"; tg: "cb.tg"; th: "cb.th"; ti: "cb.ti"; tj: "cb.tj"; tk: "cb.tk"; tl: "cb.tl"; tm: "cb.tm"; tn: "cb.tn"; to: "cb.to"; tp: "cb.tp"; tq: "cb.tq"; tr: "cb.tr"; ts: "cb.ts"; tt: "cb.tt"; tu: "cb.tu"; tv: "cb.tv"; tw: "cb.tw"; tx: "cb.tx"; ty: "cb.ty"; tz: "cb.tz"; ua: "cb.ua"; ub: "cb.ub"; uc: "cb.uc"; ud: "cb.ud"; ue: "cb.ue"; uf: "cb.uf"; ug: "cb.ug"; uh: "cb.uh"; ui: "cb.ui"; uj: "cb.uj"; uk: "cb.uk"; ul: "cb.ul"; um: "cb.um"; un: "cb.un"; uo: "cb.uo"; up: "cb.up"; uq: "cb.uq"; ur: "cb.ur"; us: "cb.us"; ut: "cb.ut"; uu: "cb.uu"; uv: "cb.uv"; uw: "cb.uw"; ux: "cb.ux"; uy: "cb.uy"; uz: "cb.uz"; va: "cb.va"; vb: "cb.vb"; vc: "cb.vc"; vd: "cb.vd"; ve: "cb.ve"; vf: "cb.vf"; vg: "cb.vg"; vh: "cb.vh"; vi: "cb.vi"; vj: "cb.vj"; vk: "cb.vk"; vl: "cb.vl"; vm: "cb.vm"; vn: "cb.vn"; vo: "cb.vo"; vp: "cb.vp"; vq: "cb.vq"; vr: "cb.vr"; vs: "cb.vs"; vt: "cb.vt"; vu: "cb.vu"; vv: "cb.vv"; vw: "cb.vw"; vx: "cb.vx"; vy: "cb.vy"; vz: "cb.vz"; wa: "cb.wa"; wb: "cb.wb"; wc: "cb.wc"; wd: "cb.wd"; we: "cb.we"; wf: "cb.wf"; wg: "cb.wg"; wh: "cb.wh"; wi: "cb.wi"; wj: "cb.wj"; wk: "cb.wk"; wl: "cb.wl"; wm: "cb.wm"; wn: "cb.wn"; wo: "cb.wo"; wp: "cb.wp"; wq: "cb.wq"; wr: "cb.wr"; ws: "cb.ws"; wt: "cb.wt"; wu: "cb.wu"; wv: "cb.wv"; ww: "cb.ww"; wx: "cb.wx"; wy: "cb.wy"; wz: "cb.wz"; xa: "cb.xa"; xb: "cb.xb"; xc: "cb.xc"; xd: "cb.xd"; xe: "cb.xe"; xf: "cb.xf"; xg: "cb.xg"; xh: "cb.xh"; xi: "cb.xi"; xj: "cb.xj"; xk: "cb.xk"; xl: "cb.xl"; xm: "cb.xm"; xn: "cb.xn"; xo: "cb.xo"; xp: "cb.xp"; xq: "cb.xq"; xr: "cb.xr"; xs: "cb.xs"; xt: "cb.xt"; xu: "cb.xu"; xv: "cb.xv"; xw: "cb.xw"; xx: "cb.xx"; xy: "cb.xy"; xz: "cb.xz"; ya: "cb.ya"; yb: "cb.yb"; yc: "cb.yc"; yd: "cb.yd"; ye: "cb.ye"; yf: "cb.yf"; yg: "cb.yg"; yh: "cb.yh"; yi: "cb.yi"; yj: "cb.yj"; yk: "cb.yk"; yl: "cb.yl"; ym: "cb.ym"; yn: "cb.yn"; yo: "cb.yo"; yp: "cb.yp"; yq: "cb.yq"; yr: "cb.yr"; ys: "cb.ys"; yt: "cb.yt"; yu: "cb.yu"; yv: "cb.yv"; yw: "cb.yw"; yx: "cb.yx"; yy: "cb.yy"; yz: "cb.yz"; za: "cb.za"; zb: "cb.zb"; zc: "cb.zc"; zd: "cb.zd"; ze: "cb.ze"; zf: "cb.zf"; zg: "cb.zg"; zh: "cb.zh"; zi: "cb.zi"; zj: "cb.zj"; zk: "cb.zk"; zl: "cb.zl"; zm: "cb.zm"; zn: "cb.zn"; zo: "cb.zo"; zp: "cb.zp"; zq: "cb.zq"; zr: "cb.zr"; zs: "cb.zs"; zt: "cb.zt"; zu: "cb.zu"; zv: "cb.zv"; zw: "cb.zw"; zx: "cb.zx"; zy: "cb.zy"; zz: "cb.zz"; }; cc: { aa: "cc.aa"; ab: "cc.ab"; ac: "cc.ac"; ad: "cc.ad"; ae: "cc.ae"; af: "cc.af"; ag: "cc.ag"; ah: "cc.ah"; ai: "cc.ai"; aj: "cc.aj"; ak: "cc.ak"; al: "cc.al"; am: "cc.am"; an: "cc.an"; ao: "cc.ao"; ap: "cc.ap"; aq: "cc.aq"; ar: "cc.ar"; as: "cc.as"; at: "cc.at"; au: "cc.au"; av: "cc.av"; aw: "cc.aw"; ax: "cc.ax"; ay: "cc.ay"; az: "cc.az"; ba: "cc.ba"; bb: "cc.bb"; bc: "cc.bc"; bd: "cc.bd"; be: "cc.be"; bf: "cc.bf"; bg: "cc.bg"; bh: "cc.bh"; bi: "cc.bi"; bj: "cc.bj"; bk: "cc.bk"; bl: "cc.bl"; bm: "cc.bm"; bn: "cc.bn"; bo: "cc.bo"; bp: "cc.bp"; bq: "cc.bq"; br: "cc.br"; bs: "cc.bs"; bt: "cc.bt"; bu: "cc.bu"; bv: "cc.bv"; bw: "cc.bw"; bx: "cc.bx"; by: "cc.by"; bz: "cc.bz"; ca: "cc.ca"; cb: "cc.cb"; cc: "cc.cc"; cd: "cc.cd"; ce: "cc.ce"; cf: "cc.cf"; cg: "cc.cg"; ch: "cc.ch"; ci: "cc.ci"; cj: "cc.cj"; ck: "cc.ck"; cl: "cc.cl"; cm: "cc.cm"; cn: "cc.cn"; co: "cc.co"; cp: "cc.cp"; cq: "cc.cq"; cr: "cc.cr"; cs: "cc.cs"; ct: "cc.ct"; cu: "cc.cu"; cv: "cc.cv"; cw: "cc.cw"; cx: "cc.cx"; cy: "cc.cy"; cz: "cc.cz"; da: "cc.da"; db: "cc.db"; dc: "cc.dc"; dd: "cc.dd"; de: "cc.de"; df: "cc.df"; dg: "cc.dg"; dh: "cc.dh"; di: "cc.di"; dj: "cc.dj"; dk: "cc.dk"; dl: "cc.dl"; dm: "cc.dm"; dn: "cc.dn"; do: "cc.do"; dp: "cc.dp"; dq: "cc.dq"; dr: "cc.dr"; ds: "cc.ds"; dt: "cc.dt"; du: "cc.du"; dv: "cc.dv"; dw: "cc.dw"; dx: "cc.dx"; dy: "cc.dy"; dz: "cc.dz"; ea: "cc.ea"; eb: "cc.eb"; ec: "cc.ec"; ed: "cc.ed"; ee: "cc.ee"; ef: "cc.ef"; eg: "cc.eg"; eh: "cc.eh"; ei: "cc.ei"; ej: "cc.ej"; ek: "cc.ek"; el: "cc.el"; em: "cc.em"; en: "cc.en"; eo: "cc.eo"; ep: "cc.ep"; eq: "cc.eq"; er: "cc.er"; es: "cc.es"; et: "cc.et"; eu: "cc.eu"; ev: "cc.ev"; ew: "cc.ew"; ex: "cc.ex"; ey: "cc.ey"; ez: "cc.ez"; fa: "cc.fa"; fb: "cc.fb"; fc: "cc.fc"; fd: "cc.fd"; fe: "cc.fe"; ff: "cc.ff"; fg: "cc.fg"; fh: "cc.fh"; fi: "cc.fi"; fj: "cc.fj"; fk: "cc.fk"; fl: "cc.fl"; fm: "cc.fm"; fn: "cc.fn"; fo: "cc.fo"; fp: "cc.fp"; fq: "cc.fq"; fr: "cc.fr"; fs: "cc.fs"; ft: "cc.ft"; fu: "cc.fu"; fv: "cc.fv"; fw: "cc.fw"; fx: "cc.fx"; fy: "cc.fy"; fz: "cc.fz"; ga: "cc.ga"; gb: "cc.gb"; gc: "cc.gc"; gd: "cc.gd"; ge: "cc.ge"; gf: "cc.gf"; gg: "cc.gg"; gh: "cc.gh"; gi: "cc.gi"; gj: "cc.gj"; gk: "cc.gk"; gl: "cc.gl"; gm: "cc.gm"; gn: "cc.gn"; go: "cc.go"; gp: "cc.gp"; gq: "cc.gq"; gr: "cc.gr"; gs: "cc.gs"; gt: "cc.gt"; gu: "cc.gu"; gv: "cc.gv"; gw: "cc.gw"; gx: "cc.gx"; gy: "cc.gy"; gz: "cc.gz"; ha: "cc.ha"; hb: "cc.hb"; hc: "cc.hc"; hd: "cc.hd"; he: "cc.he"; hf: "cc.hf"; hg: "cc.hg"; hh: "cc.hh"; hi: "cc.hi"; hj: "cc.hj"; hk: "cc.hk"; hl: "cc.hl"; hm: "cc.hm"; hn: "cc.hn"; ho: "cc.ho"; hp: "cc.hp"; hq: "cc.hq"; hr: "cc.hr"; hs: "cc.hs"; ht: "cc.ht"; hu: "cc.hu"; hv: "cc.hv"; hw: "cc.hw"; hx: "cc.hx"; hy: "cc.hy"; hz: "cc.hz"; ia: "cc.ia"; ib: "cc.ib"; ic: "cc.ic"; id: "cc.id"; ie: "cc.ie"; if: "cc.if"; ig: "cc.ig"; ih: "cc.ih"; ii: "cc.ii"; ij: "cc.ij"; ik: "cc.ik"; il: "cc.il"; im: "cc.im"; in: "cc.in"; io: "cc.io"; ip: "cc.ip"; iq: "cc.iq"; ir: "cc.ir"; is: "cc.is"; it: "cc.it"; iu: "cc.iu"; iv: "cc.iv"; iw: "cc.iw"; ix: "cc.ix"; iy: "cc.iy"; iz: "cc.iz"; ja: "cc.ja"; jb: "cc.jb"; jc: "cc.jc"; jd: "cc.jd"; je: "cc.je"; jf: "cc.jf"; jg: "cc.jg"; jh: "cc.jh"; ji: "cc.ji"; jj: "cc.jj"; jk: "cc.jk"; jl: "cc.jl"; jm: "cc.jm"; jn: "cc.jn"; jo: "cc.jo"; jp: "cc.jp"; jq: "cc.jq"; jr: "cc.jr"; js: "cc.js"; jt: "cc.jt"; ju: "cc.ju"; jv: "cc.jv"; jw: "cc.jw"; jx: "cc.jx"; jy: "cc.jy"; jz: "cc.jz"; ka: "cc.ka"; kb: "cc.kb"; kc: "cc.kc"; kd: "cc.kd"; ke: "cc.ke"; kf: "cc.kf"; kg: "cc.kg"; kh: "cc.kh"; ki: "cc.ki"; kj: "cc.kj"; kk: "cc.kk"; kl: "cc.kl"; km: "cc.km"; kn: "cc.kn"; ko: "cc.ko"; kp: "cc.kp"; kq: "cc.kq"; kr: "cc.kr"; ks: "cc.ks"; kt: "cc.kt"; ku: "cc.ku"; kv: "cc.kv"; kw: "cc.kw"; kx: "cc.kx"; ky: "cc.ky"; kz: "cc.kz"; la: "cc.la"; lb: "cc.lb"; lc: "cc.lc"; ld: "cc.ld"; le: "cc.le"; lf: "cc.lf"; lg: "cc.lg"; lh: "cc.lh"; li: "cc.li"; lj: "cc.lj"; lk: "cc.lk"; ll: "cc.ll"; lm: "cc.lm"; ln: "cc.ln"; lo: "cc.lo"; lp: "cc.lp"; lq: "cc.lq"; lr: "cc.lr"; ls: "cc.ls"; lt: "cc.lt"; lu: "cc.lu"; lv: "cc.lv"; lw: "cc.lw"; lx: "cc.lx"; ly: "cc.ly"; lz: "cc.lz"; ma: "cc.ma"; mb: "cc.mb"; mc: "cc.mc"; md: "cc.md"; me: "cc.me"; mf: "cc.mf"; mg: "cc.mg"; mh: "cc.mh"; mi: "cc.mi"; mj: "cc.mj"; mk: "cc.mk"; ml: "cc.ml"; mm: "cc.mm"; mn: "cc.mn"; mo: "cc.mo"; mp: "cc.mp"; mq: "cc.mq"; mr: "cc.mr"; ms: "cc.ms"; mt: "cc.mt"; mu: "cc.mu"; mv: "cc.mv"; mw: "cc.mw"; mx: "cc.mx"; my: "cc.my"; mz: "cc.mz"; na: "cc.na"; nb: "cc.nb"; nc: "cc.nc"; nd: "cc.nd"; ne: "cc.ne"; nf: "cc.nf"; ng: "cc.ng"; nh: "cc.nh"; ni: "cc.ni"; nj: "cc.nj"; nk: "cc.nk"; nl: "cc.nl"; nm: "cc.nm"; nn: "cc.nn"; no: "cc.no"; np: "cc.np"; nq: "cc.nq"; nr: "cc.nr"; ns: "cc.ns"; nt: "cc.nt"; nu: "cc.nu"; nv: "cc.nv"; nw: "cc.nw"; nx: "cc.nx"; ny: "cc.ny"; nz: "cc.nz"; oa: "cc.oa"; ob: "cc.ob"; oc: "cc.oc"; od: "cc.od"; oe: "cc.oe"; of: "cc.of"; og: "cc.og"; oh: "cc.oh"; oi: "cc.oi"; oj: "cc.oj"; ok: "cc.ok"; ol: "cc.ol"; om: "cc.om"; on: "cc.on"; oo: "cc.oo"; op: "cc.op"; oq: "cc.oq"; or: "cc.or"; os: "cc.os"; ot: "cc.ot"; ou: "cc.ou"; ov: "cc.ov"; ow: "cc.ow"; ox: "cc.ox"; oy: "cc.oy"; oz: "cc.oz"; pa: "cc.pa"; pb: "cc.pb"; pc: "cc.pc"; pd: "cc.pd"; pe: "cc.pe"; pf: "cc.pf"; pg: "cc.pg"; ph: "cc.ph"; pi: "cc.pi"; pj: "cc.pj"; pk: "cc.pk"; pl: "cc.pl"; pm: "cc.pm"; pn: "cc.pn"; po: "cc.po"; pp: "cc.pp"; pq: "cc.pq"; pr: "cc.pr"; ps: "cc.ps"; pt: "cc.pt"; pu: "cc.pu"; pv: "cc.pv"; pw: "cc.pw"; px: "cc.px"; py: "cc.py"; pz: "cc.pz"; qa: "cc.qa"; qb: "cc.qb"; qc: "cc.qc"; qd: "cc.qd"; qe: "cc.qe"; qf: "cc.qf"; qg: "cc.qg"; qh: "cc.qh"; qi: "cc.qi"; qj: "cc.qj"; qk: "cc.qk"; ql: "cc.ql"; qm: "cc.qm"; qn: "cc.qn"; qo: "cc.qo"; qp: "cc.qp"; qq: "cc.qq"; qr: "cc.qr"; qs: "cc.qs"; qt: "cc.qt"; qu: "cc.qu"; qv: "cc.qv"; qw: "cc.qw"; qx: "cc.qx"; qy: "cc.qy"; qz: "cc.qz"; ra: "cc.ra"; rb: "cc.rb"; rc: "cc.rc"; rd: "cc.rd"; re: "cc.re"; rf: "cc.rf"; rg: "cc.rg"; rh: "cc.rh"; ri: "cc.ri"; rj: "cc.rj"; rk: "cc.rk"; rl: "cc.rl"; rm: "cc.rm"; rn: "cc.rn"; ro: "cc.ro"; rp: "cc.rp"; rq: "cc.rq"; rr: "cc.rr"; rs: "cc.rs"; rt: "cc.rt"; ru: "cc.ru"; rv: "cc.rv"; rw: "cc.rw"; rx: "cc.rx"; ry: "cc.ry"; rz: "cc.rz"; sa: "cc.sa"; sb: "cc.sb"; sc: "cc.sc"; sd: "cc.sd"; se: "cc.se"; sf: "cc.sf"; sg: "cc.sg"; sh: "cc.sh"; si: "cc.si"; sj: "cc.sj"; sk: "cc.sk"; sl: "cc.sl"; sm: "cc.sm"; sn: "cc.sn"; so: "cc.so"; sp: "cc.sp"; sq: "cc.sq"; sr: "cc.sr"; ss: "cc.ss"; st: "cc.st"; su: "cc.su"; sv: "cc.sv"; sw: "cc.sw"; sx: "cc.sx"; sy: "cc.sy"; sz: "cc.sz"; ta: "cc.ta"; tb: "cc.tb"; tc: "cc.tc"; td: "cc.td"; te: "cc.te"; tf: "cc.tf"; tg: "cc.tg"; th: "cc.th"; ti: "cc.ti"; tj: "cc.tj"; tk: "cc.tk"; tl: "cc.tl"; tm: "cc.tm"; tn: "cc.tn"; to: "cc.to"; tp: "cc.tp"; tq: "cc.tq"; tr: "cc.tr"; ts: "cc.ts"; tt: "cc.tt"; tu: "cc.tu"; tv: "cc.tv"; tw: "cc.tw"; tx: "cc.tx"; ty: "cc.ty"; tz: "cc.tz"; ua: "cc.ua"; ub: "cc.ub"; uc: "cc.uc"; ud: "cc.ud"; ue: "cc.ue"; uf: "cc.uf"; ug: "cc.ug"; uh: "cc.uh"; ui: "cc.ui"; uj: "cc.uj"; uk: "cc.uk"; ul: "cc.ul"; um: "cc.um"; un: "cc.un"; uo: "cc.uo"; up: "cc.up"; uq: "cc.uq"; ur: "cc.ur"; us: "cc.us"; ut: "cc.ut"; uu: "cc.uu"; uv: "cc.uv"; uw: "cc.uw"; ux: "cc.ux"; uy: "cc.uy"; uz: "cc.uz"; va: "cc.va"; vb: "cc.vb"; vc: "cc.vc"; vd: "cc.vd"; ve: "cc.ve"; vf: "cc.vf"; vg: "cc.vg"; vh: "cc.vh"; vi: "cc.vi"; vj: "cc.vj"; vk: "cc.vk"; vl: "cc.vl"; vm: "cc.vm"; vn: "cc.vn"; vo: "cc.vo"; vp: "cc.vp"; vq: "cc.vq"; vr: "cc.vr"; vs: "cc.vs"; vt: "cc.vt"; vu: "cc.vu"; vv: "cc.vv"; vw: "cc.vw"; vx: "cc.vx"; vy: "cc.vy"; vz: "cc.vz"; wa: "cc.wa"; wb: "cc.wb"; wc: "cc.wc"; wd: "cc.wd"; we: "cc.we"; wf: "cc.wf"; wg: "cc.wg"; wh: "cc.wh"; wi: "cc.wi"; wj: "cc.wj"; wk: "cc.wk"; wl: "cc.wl"; wm: "cc.wm"; wn: "cc.wn"; wo: "cc.wo"; wp: "cc.wp"; wq: "cc.wq"; wr: "cc.wr"; ws: "cc.ws"; wt: "cc.wt"; wu: "cc.wu"; wv: "cc.wv"; ww: "cc.ww"; wx: "cc.wx"; wy: "cc.wy"; wz: "cc.wz"; xa: "cc.xa"; xb: "cc.xb"; xc: "cc.xc"; xd: "cc.xd"; xe: "cc.xe"; xf: "cc.xf"; xg: "cc.xg"; xh: "cc.xh"; xi: "cc.xi"; xj: "cc.xj"; xk: "cc.xk"; xl: "cc.xl"; xm: "cc.xm"; xn: "cc.xn"; xo: "cc.xo"; xp: "cc.xp"; xq: "cc.xq"; xr: "cc.xr"; xs: "cc.xs"; xt: "cc.xt"; xu: "cc.xu"; xv: "cc.xv"; xw: "cc.xw"; xx: "cc.xx"; xy: "cc.xy"; xz: "cc.xz"; ya: "cc.ya"; yb: "cc.yb"; yc: "cc.yc"; yd: "cc.yd"; ye: "cc.ye"; yf: "cc.yf"; yg: "cc.yg"; yh: "cc.yh"; yi: "cc.yi"; yj: "cc.yj"; yk: "cc.yk"; yl: "cc.yl"; ym: "cc.ym"; yn: "cc.yn"; yo: "cc.yo"; yp: "cc.yp"; yq: "cc.yq"; yr: "cc.yr"; ys: "cc.ys"; yt: "cc.yt"; yu: "cc.yu"; yv: "cc.yv"; yw: "cc.yw"; yx: "cc.yx"; yy: "cc.yy"; yz: "cc.yz"; za: "cc.za"; zb: "cc.zb"; zc: "cc.zc"; zd: "cc.zd"; ze: "cc.ze"; zf: "cc.zf"; zg: "cc.zg"; zh: "cc.zh"; zi: "cc.zi"; zj: "cc.zj"; zk: "cc.zk"; zl: "cc.zl"; zm: "cc.zm"; zn: "cc.zn"; zo: "cc.zo"; zp: "cc.zp"; zq: "cc.zq"; zr: "cc.zr"; zs: "cc.zs"; zt: "cc.zt"; zu: "cc.zu"; zv: "cc.zv"; zw: "cc.zw"; zx: "cc.zx"; zy: "cc.zy"; zz: "cc.zz"; }; cd: { aa: "cd.aa"; ab: "cd.ab"; ac: "cd.ac"; ad: "cd.ad"; ae: "cd.ae"; af: "cd.af"; ag: "cd.ag"; ah: "cd.ah"; ai: "cd.ai"; aj: "cd.aj"; ak: "cd.ak"; al: "cd.al"; am: "cd.am"; an: "cd.an"; ao: "cd.ao"; ap: "cd.ap"; aq: "cd.aq"; ar: "cd.ar"; as: "cd.as"; at: "cd.at"; au: "cd.au"; av: "cd.av"; aw: "cd.aw"; ax: "cd.ax"; ay: "cd.ay"; az: "cd.az"; ba: "cd.ba"; bb: "cd.bb"; bc: "cd.bc"; bd: "cd.bd"; be: "cd.be"; bf: "cd.bf"; bg: "cd.bg"; bh: "cd.bh"; bi: "cd.bi"; bj: "cd.bj"; bk: "cd.bk"; bl: "cd.bl"; bm: "cd.bm"; bn: "cd.bn"; bo: "cd.bo"; bp: "cd.bp"; bq: "cd.bq"; br: "cd.br"; bs: "cd.bs"; bt: "cd.bt"; bu: "cd.bu"; bv: "cd.bv"; bw: "cd.bw"; bx: "cd.bx"; by: "cd.by"; bz: "cd.bz"; ca: "cd.ca"; cb: "cd.cb"; cc: "cd.cc"; cd: "cd.cd"; ce: "cd.ce"; cf: "cd.cf"; cg: "cd.cg"; ch: "cd.ch"; ci: "cd.ci"; cj: "cd.cj"; ck: "cd.ck"; cl: "cd.cl"; cm: "cd.cm"; cn: "cd.cn"; co: "cd.co"; cp: "cd.cp"; cq: "cd.cq"; cr: "cd.cr"; cs: "cd.cs"; ct: "cd.ct"; cu: "cd.cu"; cv: "cd.cv"; cw: "cd.cw"; cx: "cd.cx"; cy: "cd.cy"; cz: "cd.cz"; da: "cd.da"; db: "cd.db"; dc: "cd.dc"; dd: "cd.dd"; de: "cd.de"; df: "cd.df"; dg: "cd.dg"; dh: "cd.dh"; di: "cd.di"; dj: "cd.dj"; dk: "cd.dk"; dl: "cd.dl"; dm: "cd.dm"; dn: "cd.dn"; do: "cd.do"; dp: "cd.dp"; dq: "cd.dq"; dr: "cd.dr"; ds: "cd.ds"; dt: "cd.dt"; du: "cd.du"; dv: "cd.dv"; dw: "cd.dw"; dx: "cd.dx"; dy: "cd.dy"; dz: "cd.dz"; ea: "cd.ea"; eb: "cd.eb"; ec: "cd.ec"; ed: "cd.ed"; ee: "cd.ee"; ef: "cd.ef"; eg: "cd.eg"; eh: "cd.eh"; ei: "cd.ei"; ej: "cd.ej"; ek: "cd.ek"; el: "cd.el"; em: "cd.em"; en: "cd.en"; eo: "cd.eo"; ep: "cd.ep"; eq: "cd.eq"; er: "cd.er"; es: "cd.es"; et: "cd.et"; eu: "cd.eu"; ev: "cd.ev"; ew: "cd.ew"; ex: "cd.ex"; ey: "cd.ey"; ez: "cd.ez"; fa: "cd.fa"; fb: "cd.fb"; fc: "cd.fc"; fd: "cd.fd"; fe: "cd.fe"; ff: "cd.ff"; fg: "cd.fg"; fh: "cd.fh"; fi: "cd.fi"; fj: "cd.fj"; fk: "cd.fk"; fl: "cd.fl"; fm: "cd.fm"; fn: "cd.fn"; fo: "cd.fo"; fp: "cd.fp"; fq: "cd.fq"; fr: "cd.fr"; fs: "cd.fs"; ft: "cd.ft"; fu: "cd.fu"; fv: "cd.fv"; fw: "cd.fw"; fx: "cd.fx"; fy: "cd.fy"; fz: "cd.fz"; ga: "cd.ga"; gb: "cd.gb"; gc: "cd.gc"; gd: "cd.gd"; ge: "cd.ge"; gf: "cd.gf"; gg: "cd.gg"; gh: "cd.gh"; gi: "cd.gi"; gj: "cd.gj"; gk: "cd.gk"; gl: "cd.gl"; gm: "cd.gm"; gn: "cd.gn"; go: "cd.go"; gp: "cd.gp"; gq: "cd.gq"; gr: "cd.gr"; gs: "cd.gs"; gt: "cd.gt"; gu: "cd.gu"; gv: "cd.gv"; gw: "cd.gw"; gx: "cd.gx"; gy: "cd.gy"; gz: "cd.gz"; ha: "cd.ha"; hb: "cd.hb"; hc: "cd.hc"; hd: "cd.hd"; he: "cd.he"; hf: "cd.hf"; hg: "cd.hg"; hh: "cd.hh"; hi: "cd.hi"; hj: "cd.hj"; hk: "cd.hk"; hl: "cd.hl"; hm: "cd.hm"; hn: "cd.hn"; ho: "cd.ho"; hp: "cd.hp"; hq: "cd.hq"; hr: "cd.hr"; hs: "cd.hs"; ht: "cd.ht"; hu: "cd.hu"; hv: "cd.hv"; hw: "cd.hw"; hx: "cd.hx"; hy: "cd.hy"; hz: "cd.hz"; ia: "cd.ia"; ib: "cd.ib"; ic: "cd.ic"; id: "cd.id"; ie: "cd.ie"; if: "cd.if"; ig: "cd.ig"; ih: "cd.ih"; ii: "cd.ii"; ij: "cd.ij"; ik: "cd.ik"; il: "cd.il"; im: "cd.im"; in: "cd.in"; io: "cd.io"; ip: "cd.ip"; iq: "cd.iq"; ir: "cd.ir"; is: "cd.is"; it: "cd.it"; iu: "cd.iu"; iv: "cd.iv"; iw: "cd.iw"; ix: "cd.ix"; iy: "cd.iy"; iz: "cd.iz"; ja: "cd.ja"; jb: "cd.jb"; jc: "cd.jc"; jd: "cd.jd"; je: "cd.je"; jf: "cd.jf"; jg: "cd.jg"; jh: "cd.jh"; ji: "cd.ji"; jj: "cd.jj"; jk: "cd.jk"; jl: "cd.jl"; jm: "cd.jm"; jn: "cd.jn"; jo: "cd.jo"; jp: "cd.jp"; jq: "cd.jq"; jr: "cd.jr"; js: "cd.js"; jt: "cd.jt"; ju: "cd.ju"; jv: "cd.jv"; jw: "cd.jw"; jx: "cd.jx"; jy: "cd.jy"; jz: "cd.jz"; ka: "cd.ka"; kb: "cd.kb"; kc: "cd.kc"; kd: "cd.kd"; ke: "cd.ke"; kf: "cd.kf"; kg: "cd.kg"; kh: "cd.kh"; ki: "cd.ki"; kj: "cd.kj"; kk: "cd.kk"; kl: "cd.kl"; km: "cd.km"; kn: "cd.kn"; ko: "cd.ko"; kp: "cd.kp"; kq: "cd.kq"; kr: "cd.kr"; ks: "cd.ks"; kt: "cd.kt"; ku: "cd.ku"; kv: "cd.kv"; kw: "cd.kw"; kx: "cd.kx"; ky: "cd.ky"; kz: "cd.kz"; la: "cd.la"; lb: "cd.lb"; lc: "cd.lc"; ld: "cd.ld"; le: "cd.le"; lf: "cd.lf"; lg: "cd.lg"; lh: "cd.lh"; li: "cd.li"; lj: "cd.lj"; lk: "cd.lk"; ll: "cd.ll"; lm: "cd.lm"; ln: "cd.ln"; lo: "cd.lo"; lp: "cd.lp"; lq: "cd.lq"; lr: "cd.lr"; ls: "cd.ls"; lt: "cd.lt"; lu: "cd.lu"; lv: "cd.lv"; lw: "cd.lw"; lx: "cd.lx"; ly: "cd.ly"; lz: "cd.lz"; ma: "cd.ma"; mb: "cd.mb"; mc: "cd.mc"; md: "cd.md"; me: "cd.me"; mf: "cd.mf"; mg: "cd.mg"; mh: "cd.mh"; mi: "cd.mi"; mj: "cd.mj"; mk: "cd.mk"; ml: "cd.ml"; mm: "cd.mm"; mn: "cd.mn"; mo: "cd.mo"; mp: "cd.mp"; mq: "cd.mq"; mr: "cd.mr"; ms: "cd.ms"; mt: "cd.mt"; mu: "cd.mu"; mv: "cd.mv"; mw: "cd.mw"; mx: "cd.mx"; my: "cd.my"; mz: "cd.mz"; na: "cd.na"; nb: "cd.nb"; nc: "cd.nc"; nd: "cd.nd"; ne: "cd.ne"; nf: "cd.nf"; ng: "cd.ng"; nh: "cd.nh"; ni: "cd.ni"; nj: "cd.nj"; nk: "cd.nk"; nl: "cd.nl"; nm: "cd.nm"; nn: "cd.nn"; no: "cd.no"; np: "cd.np"; nq: "cd.nq"; nr: "cd.nr"; ns: "cd.ns"; nt: "cd.nt"; nu: "cd.nu"; nv: "cd.nv"; nw: "cd.nw"; nx: "cd.nx"; ny: "cd.ny"; nz: "cd.nz"; oa: "cd.oa"; ob: "cd.ob"; oc: "cd.oc"; od: "cd.od"; oe: "cd.oe"; of: "cd.of"; og: "cd.og"; oh: "cd.oh"; oi: "cd.oi"; oj: "cd.oj"; ok: "cd.ok"; ol: "cd.ol"; om: "cd.om"; on: "cd.on"; oo: "cd.oo"; op: "cd.op"; oq: "cd.oq"; or: "cd.or"; os: "cd.os"; ot: "cd.ot"; ou: "cd.ou"; ov: "cd.ov"; ow: "cd.ow"; ox: "cd.ox"; oy: "cd.oy"; oz: "cd.oz"; pa: "cd.pa"; pb: "cd.pb"; pc: "cd.pc"; pd: "cd.pd"; pe: "cd.pe"; pf: "cd.pf"; pg: "cd.pg"; ph: "cd.ph"; pi: "cd.pi"; pj: "cd.pj"; pk: "cd.pk"; pl: "cd.pl"; pm: "cd.pm"; pn: "cd.pn"; po: "cd.po"; pp: "cd.pp"; pq: "cd.pq"; pr: "cd.pr"; ps: "cd.ps"; pt: "cd.pt"; pu: "cd.pu"; pv: "cd.pv"; pw: "cd.pw"; px: "cd.px"; py: "cd.py"; pz: "cd.pz"; qa: "cd.qa"; qb: "cd.qb"; qc: "cd.qc"; qd: "cd.qd"; qe: "cd.qe"; qf: "cd.qf"; qg: "cd.qg"; qh: "cd.qh"; qi: "cd.qi"; qj: "cd.qj"; qk: "cd.qk"; ql: "cd.ql"; qm: "cd.qm"; qn: "cd.qn"; qo: "cd.qo"; qp: "cd.qp"; qq: "cd.qq"; qr: "cd.qr"; qs: "cd.qs"; qt: "cd.qt"; qu: "cd.qu"; qv: "cd.qv"; qw: "cd.qw"; qx: "cd.qx"; qy: "cd.qy"; qz: "cd.qz"; ra: "cd.ra"; rb: "cd.rb"; rc: "cd.rc"; rd: "cd.rd"; re: "cd.re"; rf: "cd.rf"; rg: "cd.rg"; rh: "cd.rh"; ri: "cd.ri"; rj: "cd.rj"; rk: "cd.rk"; rl: "cd.rl"; rm: "cd.rm"; rn: "cd.rn"; ro: "cd.ro"; rp: "cd.rp"; rq: "cd.rq"; rr: "cd.rr"; rs: "cd.rs"; rt: "cd.rt"; ru: "cd.ru"; rv: "cd.rv"; rw: "cd.rw"; rx: "cd.rx"; ry: "cd.ry"; rz: "cd.rz"; sa: "cd.sa"; sb: "cd.sb"; sc: "cd.sc"; sd: "cd.sd"; se: "cd.se"; sf: "cd.sf"; sg: "cd.sg"; sh: "cd.sh"; si: "cd.si"; sj: "cd.sj"; sk: "cd.sk"; sl: "cd.sl"; sm: "cd.sm"; sn: "cd.sn"; so: "cd.so"; sp: "cd.sp"; sq: "cd.sq"; sr: "cd.sr"; ss: "cd.ss"; st: "cd.st"; su: "cd.su"; sv: "cd.sv"; sw: "cd.sw"; sx: "cd.sx"; sy: "cd.sy"; sz: "cd.sz"; ta: "cd.ta"; tb: "cd.tb"; tc: "cd.tc"; td: "cd.td"; te: "cd.te"; tf: "cd.tf"; tg: "cd.tg"; th: "cd.th"; ti: "cd.ti"; tj: "cd.tj"; tk: "cd.tk"; tl: "cd.tl"; tm: "cd.tm"; tn: "cd.tn"; to: "cd.to"; tp: "cd.tp"; tq: "cd.tq"; tr: "cd.tr"; ts: "cd.ts"; tt: "cd.tt"; tu: "cd.tu"; tv: "cd.tv"; tw: "cd.tw"; tx: "cd.tx"; ty: "cd.ty"; tz: "cd.tz"; ua: "cd.ua"; ub: "cd.ub"; uc: "cd.uc"; ud: "cd.ud"; ue: "cd.ue"; uf: "cd.uf"; ug: "cd.ug"; uh: "cd.uh"; ui: "cd.ui"; uj: "cd.uj"; uk: "cd.uk"; ul: "cd.ul"; um: "cd.um"; un: "cd.un"; uo: "cd.uo"; up: "cd.up"; uq: "cd.uq"; ur: "cd.ur"; us: "cd.us"; ut: "cd.ut"; uu: "cd.uu"; uv: "cd.uv"; uw: "cd.uw"; ux: "cd.ux"; uy: "cd.uy"; uz: "cd.uz"; va: "cd.va"; vb: "cd.vb"; vc: "cd.vc"; vd: "cd.vd"; ve: "cd.ve"; vf: "cd.vf"; vg: "cd.vg"; vh: "cd.vh"; vi: "cd.vi"; vj: "cd.vj"; vk: "cd.vk"; vl: "cd.vl"; vm: "cd.vm"; vn: "cd.vn"; vo: "cd.vo"; vp: "cd.vp"; vq: "cd.vq"; vr: "cd.vr"; vs: "cd.vs"; vt: "cd.vt"; vu: "cd.vu"; vv: "cd.vv"; vw: "cd.vw"; vx: "cd.vx"; vy: "cd.vy"; vz: "cd.vz"; wa: "cd.wa"; wb: "cd.wb"; wc: "cd.wc"; wd: "cd.wd"; we: "cd.we"; wf: "cd.wf"; wg: "cd.wg"; wh: "cd.wh"; wi: "cd.wi"; wj: "cd.wj"; wk: "cd.wk"; wl: "cd.wl"; wm: "cd.wm"; wn: "cd.wn"; wo: "cd.wo"; wp: "cd.wp"; wq: "cd.wq"; wr: "cd.wr"; ws: "cd.ws"; wt: "cd.wt"; wu: "cd.wu"; wv: "cd.wv"; ww: "cd.ww"; wx: "cd.wx"; wy: "cd.wy"; wz: "cd.wz"; xa: "cd.xa"; xb: "cd.xb"; xc: "cd.xc"; xd: "cd.xd"; xe: "cd.xe"; xf: "cd.xf"; xg: "cd.xg"; xh: "cd.xh"; xi: "cd.xi"; xj: "cd.xj"; xk: "cd.xk"; xl: "cd.xl"; xm: "cd.xm"; xn: "cd.xn"; xo: "cd.xo"; xp: "cd.xp"; xq: "cd.xq"; xr: "cd.xr"; xs: "cd.xs"; xt: "cd.xt"; xu: "cd.xu"; xv: "cd.xv"; xw: "cd.xw"; xx: "cd.xx"; xy: "cd.xy"; xz: "cd.xz"; ya: "cd.ya"; yb: "cd.yb"; yc: "cd.yc"; yd: "cd.yd"; ye: "cd.ye"; yf: "cd.yf"; yg: "cd.yg"; yh: "cd.yh"; yi: "cd.yi"; yj: "cd.yj"; yk: "cd.yk"; yl: "cd.yl"; ym: "cd.ym"; yn: "cd.yn"; yo: "cd.yo"; yp: "cd.yp"; yq: "cd.yq"; yr: "cd.yr"; ys: "cd.ys"; yt: "cd.yt"; yu: "cd.yu"; yv: "cd.yv"; yw: "cd.yw"; yx: "cd.yx"; yy: "cd.yy"; yz: "cd.yz"; za: "cd.za"; zb: "cd.zb"; zc: "cd.zc"; zd: "cd.zd"; ze: "cd.ze"; zf: "cd.zf"; zg: "cd.zg"; zh: "cd.zh"; zi: "cd.zi"; zj: "cd.zj"; zk: "cd.zk"; zl: "cd.zl"; zm: "cd.zm"; zn: "cd.zn"; zo: "cd.zo"; zp: "cd.zp"; zq: "cd.zq"; zr: "cd.zr"; zs: "cd.zs"; zt: "cd.zt"; zu: "cd.zu"; zv: "cd.zv"; zw: "cd.zw"; zx: "cd.zx"; zy: "cd.zy"; zz: "cd.zz"; }; ce: { aa: "ce.aa"; ab: "ce.ab"; ac: "ce.ac"; ad: "ce.ad"; ae: "ce.ae"; af: "ce.af"; ag: "ce.ag"; ah: "ce.ah"; ai: "ce.ai"; aj: "ce.aj"; ak: "ce.ak"; al: "ce.al"; am: "ce.am"; an: "ce.an"; ao: "ce.ao"; ap: "ce.ap"; aq: "ce.aq"; ar: "ce.ar"; as: "ce.as"; at: "ce.at"; au: "ce.au"; av: "ce.av"; aw: "ce.aw"; ax: "ce.ax"; ay: "ce.ay"; az: "ce.az"; ba: "ce.ba"; bb: "ce.bb"; bc: "ce.bc"; bd: "ce.bd"; be: "ce.be"; bf: "ce.bf"; bg: "ce.bg"; bh: "ce.bh"; bi: "ce.bi"; bj: "ce.bj"; bk: "ce.bk"; bl: "ce.bl"; bm: "ce.bm"; bn: "ce.bn"; bo: "ce.bo"; bp: "ce.bp"; bq: "ce.bq"; br: "ce.br"; bs: "ce.bs"; bt: "ce.bt"; bu: "ce.bu"; bv: "ce.bv"; bw: "ce.bw"; bx: "ce.bx"; by: "ce.by"; bz: "ce.bz"; ca: "ce.ca"; cb: "ce.cb"; cc: "ce.cc"; cd: "ce.cd"; ce: "ce.ce"; cf: "ce.cf"; cg: "ce.cg"; ch: "ce.ch"; ci: "ce.ci"; cj: "ce.cj"; ck: "ce.ck"; cl: "ce.cl"; cm: "ce.cm"; cn: "ce.cn"; co: "ce.co"; cp: "ce.cp"; cq: "ce.cq"; cr: "ce.cr"; cs: "ce.cs"; ct: "ce.ct"; cu: "ce.cu"; cv: "ce.cv"; cw: "ce.cw"; cx: "ce.cx"; cy: "ce.cy"; cz: "ce.cz"; da: "ce.da"; db: "ce.db"; dc: "ce.dc"; dd: "ce.dd"; de: "ce.de"; df: "ce.df"; dg: "ce.dg"; dh: "ce.dh"; di: "ce.di"; dj: "ce.dj"; dk: "ce.dk"; dl: "ce.dl"; dm: "ce.dm"; dn: "ce.dn"; do: "ce.do"; dp: "ce.dp"; dq: "ce.dq"; dr: "ce.dr"; ds: "ce.ds"; dt: "ce.dt"; du: "ce.du"; dv: "ce.dv"; dw: "ce.dw"; dx: "ce.dx"; dy: "ce.dy"; dz: "ce.dz"; ea: "ce.ea"; eb: "ce.eb"; ec: "ce.ec"; ed: "ce.ed"; ee: "ce.ee"; ef: "ce.ef"; eg: "ce.eg"; eh: "ce.eh"; ei: "ce.ei"; ej: "ce.ej"; ek: "ce.ek"; el: "ce.el"; em: "ce.em"; en: "ce.en"; eo: "ce.eo"; ep: "ce.ep"; eq: "ce.eq"; er: "ce.er"; es: "ce.es"; et: "ce.et"; eu: "ce.eu"; ev: "ce.ev"; ew: "ce.ew"; ex: "ce.ex"; ey: "ce.ey"; ez: "ce.ez"; fa: "ce.fa"; fb: "ce.fb"; fc: "ce.fc"; fd: "ce.fd"; fe: "ce.fe"; ff: "ce.ff"; fg: "ce.fg"; fh: "ce.fh"; fi: "ce.fi"; fj: "ce.fj"; fk: "ce.fk"; fl: "ce.fl"; fm: "ce.fm"; fn: "ce.fn"; fo: "ce.fo"; fp: "ce.fp"; fq: "ce.fq"; fr: "ce.fr"; fs: "ce.fs"; ft: "ce.ft"; fu: "ce.fu"; fv: "ce.fv"; fw: "ce.fw"; fx: "ce.fx"; fy: "ce.fy"; fz: "ce.fz"; ga: "ce.ga"; gb: "ce.gb"; gc: "ce.gc"; gd: "ce.gd"; ge: "ce.ge"; gf: "ce.gf"; gg: "ce.gg"; gh: "ce.gh"; gi: "ce.gi"; gj: "ce.gj"; gk: "ce.gk"; gl: "ce.gl"; gm: "ce.gm"; gn: "ce.gn"; go: "ce.go"; gp: "ce.gp"; gq: "ce.gq"; gr: "ce.gr"; gs: "ce.gs"; gt: "ce.gt"; gu: "ce.gu"; gv: "ce.gv"; gw: "ce.gw"; gx: "ce.gx"; gy: "ce.gy"; gz: "ce.gz"; ha: "ce.ha"; hb: "ce.hb"; hc: "ce.hc"; hd: "ce.hd"; he: "ce.he"; hf: "ce.hf"; hg: "ce.hg"; hh: "ce.hh"; hi: "ce.hi"; hj: "ce.hj"; hk: "ce.hk"; hl: "ce.hl"; hm: "ce.hm"; hn: "ce.hn"; ho: "ce.ho"; hp: "ce.hp"; hq: "ce.hq"; hr: "ce.hr"; hs: "ce.hs"; ht: "ce.ht"; hu: "ce.hu"; hv: "ce.hv"; hw: "ce.hw"; hx: "ce.hx"; hy: "ce.hy"; hz: "ce.hz"; ia: "ce.ia"; ib: "ce.ib"; ic: "ce.ic"; id: "ce.id"; ie: "ce.ie"; if: "ce.if"; ig: "ce.ig"; ih: "ce.ih"; ii: "ce.ii"; ij: "ce.ij"; ik: "ce.ik"; il: "ce.il"; im: "ce.im"; in: "ce.in"; io: "ce.io"; ip: "ce.ip"; iq: "ce.iq"; ir: "ce.ir"; is: "ce.is"; it: "ce.it"; iu: "ce.iu"; iv: "ce.iv"; iw: "ce.iw"; ix: "ce.ix"; iy: "ce.iy"; iz: "ce.iz"; ja: "ce.ja"; jb: "ce.jb"; jc: "ce.jc"; jd: "ce.jd"; je: "ce.je"; jf: "ce.jf"; jg: "ce.jg"; jh: "ce.jh"; ji: "ce.ji"; jj: "ce.jj"; jk: "ce.jk"; jl: "ce.jl"; jm: "ce.jm"; jn: "ce.jn"; jo: "ce.jo"; jp: "ce.jp"; jq: "ce.jq"; jr: "ce.jr"; js: "ce.js"; jt: "ce.jt"; ju: "ce.ju"; jv: "ce.jv"; jw: "ce.jw"; jx: "ce.jx"; jy: "ce.jy"; jz: "ce.jz"; ka: "ce.ka"; kb: "ce.kb"; kc: "ce.kc"; kd: "ce.kd"; ke: "ce.ke"; kf: "ce.kf"; kg: "ce.kg"; kh: "ce.kh"; ki: "ce.ki"; kj: "ce.kj"; kk: "ce.kk"; kl: "ce.kl"; km: "ce.km"; kn: "ce.kn"; ko: "ce.ko"; kp: "ce.kp"; kq: "ce.kq"; kr: "ce.kr"; ks: "ce.ks"; kt: "ce.kt"; ku: "ce.ku"; kv: "ce.kv"; kw: "ce.kw"; kx: "ce.kx"; ky: "ce.ky"; kz: "ce.kz"; la: "ce.la"; lb: "ce.lb"; lc: "ce.lc"; ld: "ce.ld"; le: "ce.le"; lf: "ce.lf"; lg: "ce.lg"; lh: "ce.lh"; li: "ce.li"; lj: "ce.lj"; lk: "ce.lk"; ll: "ce.ll"; lm: "ce.lm"; ln: "ce.ln"; lo: "ce.lo"; lp: "ce.lp"; lq: "ce.lq"; lr: "ce.lr"; ls: "ce.ls"; lt: "ce.lt"; lu: "ce.lu"; lv: "ce.lv"; lw: "ce.lw"; lx: "ce.lx"; ly: "ce.ly"; lz: "ce.lz"; ma: "ce.ma"; mb: "ce.mb"; mc: "ce.mc"; md: "ce.md"; me: "ce.me"; mf: "ce.mf"; mg: "ce.mg"; mh: "ce.mh"; mi: "ce.mi"; mj: "ce.mj"; mk: "ce.mk"; ml: "ce.ml"; mm: "ce.mm"; mn: "ce.mn"; mo: "ce.mo"; mp: "ce.mp"; mq: "ce.mq"; mr: "ce.mr"; ms: "ce.ms"; mt: "ce.mt"; mu: "ce.mu"; mv: "ce.mv"; mw: "ce.mw"; mx: "ce.mx"; my: "ce.my"; mz: "ce.mz"; na: "ce.na"; nb: "ce.nb"; nc: "ce.nc"; nd: "ce.nd"; ne: "ce.ne"; nf: "ce.nf"; ng: "ce.ng"; nh: "ce.nh"; ni: "ce.ni"; nj: "ce.nj"; nk: "ce.nk"; nl: "ce.nl"; nm: "ce.nm"; nn: "ce.nn"; no: "ce.no"; np: "ce.np"; nq: "ce.nq"; nr: "ce.nr"; ns: "ce.ns"; nt: "ce.nt"; nu: "ce.nu"; nv: "ce.nv"; nw: "ce.nw"; nx: "ce.nx"; ny: "ce.ny"; nz: "ce.nz"; oa: "ce.oa"; ob: "ce.ob"; oc: "ce.oc"; od: "ce.od"; oe: "ce.oe"; of: "ce.of"; og: "ce.og"; oh: "ce.oh"; oi: "ce.oi"; oj: "ce.oj"; ok: "ce.ok"; ol: "ce.ol"; om: "ce.om"; on: "ce.on"; oo: "ce.oo"; op: "ce.op"; oq: "ce.oq"; or: "ce.or"; os: "ce.os"; ot: "ce.ot"; ou: "ce.ou"; ov: "ce.ov"; ow: "ce.ow"; ox: "ce.ox"; oy: "ce.oy"; oz: "ce.oz"; pa: "ce.pa"; pb: "ce.pb"; pc: "ce.pc"; pd: "ce.pd"; pe: "ce.pe"; pf: "ce.pf"; pg: "ce.pg"; ph: "ce.ph"; pi: "ce.pi"; pj: "ce.pj"; pk: "ce.pk"; pl: "ce.pl"; pm: "ce.pm"; pn: "ce.pn"; po: "ce.po"; pp: "ce.pp"; pq: "ce.pq"; pr: "ce.pr"; ps: "ce.ps"; pt: "ce.pt"; pu: "ce.pu"; pv: "ce.pv"; pw: "ce.pw"; px: "ce.px"; py: "ce.py"; pz: "ce.pz"; qa: "ce.qa"; qb: "ce.qb"; qc: "ce.qc"; qd: "ce.qd"; qe: "ce.qe"; qf: "ce.qf"; qg: "ce.qg"; qh: "ce.qh"; qi: "ce.qi"; qj: "ce.qj"; qk: "ce.qk"; ql: "ce.ql"; qm: "ce.qm"; qn: "ce.qn"; qo: "ce.qo"; qp: "ce.qp"; qq: "ce.qq"; qr: "ce.qr"; qs: "ce.qs"; qt: "ce.qt"; qu: "ce.qu"; qv: "ce.qv"; qw: "ce.qw"; qx: "ce.qx"; qy: "ce.qy"; qz: "ce.qz"; ra: "ce.ra"; rb: "ce.rb"; rc: "ce.rc"; rd: "ce.rd"; re: "ce.re"; rf: "ce.rf"; rg: "ce.rg"; rh: "ce.rh"; ri: "ce.ri"; rj: "ce.rj"; rk: "ce.rk"; rl: "ce.rl"; rm: "ce.rm"; rn: "ce.rn"; ro: "ce.ro"; rp: "ce.rp"; rq: "ce.rq"; rr: "ce.rr"; rs: "ce.rs"; rt: "ce.rt"; ru: "ce.ru"; rv: "ce.rv"; rw: "ce.rw"; rx: "ce.rx"; ry: "ce.ry"; rz: "ce.rz"; sa: "ce.sa"; sb: "ce.sb"; sc: "ce.sc"; sd: "ce.sd"; se: "ce.se"; sf: "ce.sf"; sg: "ce.sg"; sh: "ce.sh"; si: "ce.si"; sj: "ce.sj"; sk: "ce.sk"; sl: "ce.sl"; sm: "ce.sm"; sn: "ce.sn"; so: "ce.so"; sp: "ce.sp"; sq: "ce.sq"; sr: "ce.sr"; ss: "ce.ss"; st: "ce.st"; su: "ce.su"; sv: "ce.sv"; sw: "ce.sw"; sx: "ce.sx"; sy: "ce.sy"; sz: "ce.sz"; ta: "ce.ta"; tb: "ce.tb"; tc: "ce.tc"; td: "ce.td"; te: "ce.te"; tf: "ce.tf"; tg: "ce.tg"; th: "ce.th"; ti: "ce.ti"; tj: "ce.tj"; tk: "ce.tk"; tl: "ce.tl"; tm: "ce.tm"; tn: "ce.tn"; to: "ce.to"; tp: "ce.tp"; tq: "ce.tq"; tr: "ce.tr"; ts: "ce.ts"; tt: "ce.tt"; tu: "ce.tu"; tv: "ce.tv"; tw: "ce.tw"; tx: "ce.tx"; ty: "ce.ty"; tz: "ce.tz"; ua: "ce.ua"; ub: "ce.ub"; uc: "ce.uc"; ud: "ce.ud"; ue: "ce.ue"; uf: "ce.uf"; ug: "ce.ug"; uh: "ce.uh"; ui: "ce.ui"; uj: "ce.uj"; uk: "ce.uk"; ul: "ce.ul"; um: "ce.um"; un: "ce.un"; uo: "ce.uo"; up: "ce.up"; uq: "ce.uq"; ur: "ce.ur"; us: "ce.us"; ut: "ce.ut"; uu: "ce.uu"; uv: "ce.uv"; uw: "ce.uw"; ux: "ce.ux"; uy: "ce.uy"; uz: "ce.uz"; va: "ce.va"; vb: "ce.vb"; vc: "ce.vc"; vd: "ce.vd"; ve: "ce.ve"; vf: "ce.vf"; vg: "ce.vg"; vh: "ce.vh"; vi: "ce.vi"; vj: "ce.vj"; vk: "ce.vk"; vl: "ce.vl"; vm: "ce.vm"; vn: "ce.vn"; vo: "ce.vo"; vp: "ce.vp"; vq: "ce.vq"; vr: "ce.vr"; vs: "ce.vs"; vt: "ce.vt"; vu: "ce.vu"; vv: "ce.vv"; vw: "ce.vw"; vx: "ce.vx"; vy: "ce.vy"; vz: "ce.vz"; wa: "ce.wa"; wb: "ce.wb"; wc: "ce.wc"; wd: "ce.wd"; we: "ce.we"; wf: "ce.wf"; wg: "ce.wg"; wh: "ce.wh"; wi: "ce.wi"; wj: "ce.wj"; wk: "ce.wk"; wl: "ce.wl"; wm: "ce.wm"; wn: "ce.wn"; wo: "ce.wo"; wp: "ce.wp"; wq: "ce.wq"; wr: "ce.wr"; ws: "ce.ws"; wt: "ce.wt"; wu: "ce.wu"; wv: "ce.wv"; ww: "ce.ww"; wx: "ce.wx"; wy: "ce.wy"; wz: "ce.wz"; xa: "ce.xa"; xb: "ce.xb"; xc: "ce.xc"; xd: "ce.xd"; xe: "ce.xe"; xf: "ce.xf"; xg: "ce.xg"; xh: "ce.xh"; xi: "ce.xi"; xj: "ce.xj"; xk: "ce.xk"; xl: "ce.xl"; xm: "ce.xm"; xn: "ce.xn"; xo: "ce.xo"; xp: "ce.xp"; xq: "ce.xq"; xr: "ce.xr"; xs: "ce.xs"; xt: "ce.xt"; xu: "ce.xu"; xv: "ce.xv"; xw: "ce.xw"; xx: "ce.xx"; xy: "ce.xy"; xz: "ce.xz"; ya: "ce.ya"; yb: "ce.yb"; yc: "ce.yc"; yd: "ce.yd"; ye: "ce.ye"; yf: "ce.yf"; yg: "ce.yg"; yh: "ce.yh"; yi: "ce.yi"; yj: "ce.yj"; yk: "ce.yk"; yl: "ce.yl"; ym: "ce.ym"; yn: "ce.yn"; yo: "ce.yo"; yp: "ce.yp"; yq: "ce.yq"; yr: "ce.yr"; ys: "ce.ys"; yt: "ce.yt"; yu: "ce.yu"; yv: "ce.yv"; yw: "ce.yw"; yx: "ce.yx"; yy: "ce.yy"; yz: "ce.yz"; za: "ce.za"; zb: "ce.zb"; zc: "ce.zc"; zd: "ce.zd"; ze: "ce.ze"; zf: "ce.zf"; zg: "ce.zg"; zh: "ce.zh"; zi: "ce.zi"; zj: "ce.zj"; zk: "ce.zk"; zl: "ce.zl"; zm: "ce.zm"; zn: "ce.zn"; zo: "ce.zo"; zp: "ce.zp"; zq: "ce.zq"; zr: "ce.zr"; zs: "ce.zs"; zt: "ce.zt"; zu: "ce.zu"; zv: "ce.zv"; zw: "ce.zw"; zx: "ce.zx"; zy: "ce.zy"; zz: "ce.zz"; }; cf: { aa: "cf.aa"; ab: "cf.ab"; ac: "cf.ac"; ad: "cf.ad"; ae: "cf.ae"; af: "cf.af"; ag: "cf.ag"; ah: "cf.ah"; ai: "cf.ai"; aj: "cf.aj"; ak: "cf.ak"; al: "cf.al"; am: "cf.am"; an: "cf.an"; ao: "cf.ao"; ap: "cf.ap"; aq: "cf.aq"; ar: "cf.ar"; as: "cf.as"; at: "cf.at"; au: "cf.au"; av: "cf.av"; aw: "cf.aw"; ax: "cf.ax"; ay: "cf.ay"; az: "cf.az"; ba: "cf.ba"; bb: "cf.bb"; bc: "cf.bc"; bd: "cf.bd"; be: "cf.be"; bf: "cf.bf"; bg: "cf.bg"; bh: "cf.bh"; bi: "cf.bi"; bj: "cf.bj"; bk: "cf.bk"; bl: "cf.bl"; bm: "cf.bm"; bn: "cf.bn"; bo: "cf.bo"; bp: "cf.bp"; bq: "cf.bq"; br: "cf.br"; bs: "cf.bs"; bt: "cf.bt"; bu: "cf.bu"; bv: "cf.bv"; bw: "cf.bw"; bx: "cf.bx"; by: "cf.by"; bz: "cf.bz"; ca: "cf.ca"; cb: "cf.cb"; cc: "cf.cc"; cd: "cf.cd"; ce: "cf.ce"; cf: "cf.cf"; cg: "cf.cg"; ch: "cf.ch"; ci: "cf.ci"; cj: "cf.cj"; ck: "cf.ck"; cl: "cf.cl"; cm: "cf.cm"; cn: "cf.cn"; co: "cf.co"; cp: "cf.cp"; cq: "cf.cq"; cr: "cf.cr"; cs: "cf.cs"; ct: "cf.ct"; cu: "cf.cu"; cv: "cf.cv"; cw: "cf.cw"; cx: "cf.cx"; cy: "cf.cy"; cz: "cf.cz"; da: "cf.da"; db: "cf.db"; dc: "cf.dc"; dd: "cf.dd"; de: "cf.de"; df: "cf.df"; dg: "cf.dg"; dh: "cf.dh"; di: "cf.di"; dj: "cf.dj"; dk: "cf.dk"; dl: "cf.dl"; dm: "cf.dm"; dn: "cf.dn"; do: "cf.do"; dp: "cf.dp"; dq: "cf.dq"; dr: "cf.dr"; ds: "cf.ds"; dt: "cf.dt"; du: "cf.du"; dv: "cf.dv"; dw: "cf.dw"; dx: "cf.dx"; dy: "cf.dy"; dz: "cf.dz"; ea: "cf.ea"; eb: "cf.eb"; ec: "cf.ec"; ed: "cf.ed"; ee: "cf.ee"; ef: "cf.ef"; eg: "cf.eg"; eh: "cf.eh"; ei: "cf.ei"; ej: "cf.ej"; ek: "cf.ek"; el: "cf.el"; em: "cf.em"; en: "cf.en"; eo: "cf.eo"; ep: "cf.ep"; eq: "cf.eq"; er: "cf.er"; es: "cf.es"; et: "cf.et"; eu: "cf.eu"; ev: "cf.ev"; ew: "cf.ew"; ex: "cf.ex"; ey: "cf.ey"; ez: "cf.ez"; fa: "cf.fa"; fb: "cf.fb"; fc: "cf.fc"; fd: "cf.fd"; fe: "cf.fe"; ff: "cf.ff"; fg: "cf.fg"; fh: "cf.fh"; fi: "cf.fi"; fj: "cf.fj"; fk: "cf.fk"; fl: "cf.fl"; fm: "cf.fm"; fn: "cf.fn"; fo: "cf.fo"; fp: "cf.fp"; fq: "cf.fq"; fr: "cf.fr"; fs: "cf.fs"; ft: "cf.ft"; fu: "cf.fu"; fv: "cf.fv"; fw: "cf.fw"; fx: "cf.fx"; fy: "cf.fy"; fz: "cf.fz"; ga: "cf.ga"; gb: "cf.gb"; gc: "cf.gc"; gd: "cf.gd"; ge: "cf.ge"; gf: "cf.gf"; gg: "cf.gg"; gh: "cf.gh"; gi: "cf.gi"; gj: "cf.gj"; gk: "cf.gk"; gl: "cf.gl"; gm: "cf.gm"; gn: "cf.gn"; go: "cf.go"; gp: "cf.gp"; gq: "cf.gq"; gr: "cf.gr"; gs: "cf.gs"; gt: "cf.gt"; gu: "cf.gu"; gv: "cf.gv"; gw: "cf.gw"; gx: "cf.gx"; gy: "cf.gy"; gz: "cf.gz"; ha: "cf.ha"; hb: "cf.hb"; hc: "cf.hc"; hd: "cf.hd"; he: "cf.he"; hf: "cf.hf"; hg: "cf.hg"; hh: "cf.hh"; hi: "cf.hi"; hj: "cf.hj"; hk: "cf.hk"; hl: "cf.hl"; hm: "cf.hm"; hn: "cf.hn"; ho: "cf.ho"; hp: "cf.hp"; hq: "cf.hq"; hr: "cf.hr"; hs: "cf.hs"; ht: "cf.ht"; hu: "cf.hu"; hv: "cf.hv"; hw: "cf.hw"; hx: "cf.hx"; hy: "cf.hy"; hz: "cf.hz"; ia: "cf.ia"; ib: "cf.ib"; ic: "cf.ic"; id: "cf.id"; ie: "cf.ie"; if: "cf.if"; ig: "cf.ig"; ih: "cf.ih"; ii: "cf.ii"; ij: "cf.ij"; ik: "cf.ik"; il: "cf.il"; im: "cf.im"; in: "cf.in"; io: "cf.io"; ip: "cf.ip"; iq: "cf.iq"; ir: "cf.ir"; is: "cf.is"; it: "cf.it"; iu: "cf.iu"; iv: "cf.iv"; iw: "cf.iw"; ix: "cf.ix"; iy: "cf.iy"; iz: "cf.iz"; ja: "cf.ja"; jb: "cf.jb"; jc: "cf.jc"; jd: "cf.jd"; je: "cf.je"; jf: "cf.jf"; jg: "cf.jg"; jh: "cf.jh"; ji: "cf.ji"; jj: "cf.jj"; jk: "cf.jk"; jl: "cf.jl"; jm: "cf.jm"; jn: "cf.jn"; jo: "cf.jo"; jp: "cf.jp"; jq: "cf.jq"; jr: "cf.jr"; js: "cf.js"; jt: "cf.jt"; ju: "cf.ju"; jv: "cf.jv"; jw: "cf.jw"; jx: "cf.jx"; jy: "cf.jy"; jz: "cf.jz"; ka: "cf.ka"; kb: "cf.kb"; kc: "cf.kc"; kd: "cf.kd"; ke: "cf.ke"; kf: "cf.kf"; kg: "cf.kg"; kh: "cf.kh"; ki: "cf.ki"; kj: "cf.kj"; kk: "cf.kk"; kl: "cf.kl"; km: "cf.km"; kn: "cf.kn"; ko: "cf.ko"; kp: "cf.kp"; kq: "cf.kq"; kr: "cf.kr"; ks: "cf.ks"; kt: "cf.kt"; ku: "cf.ku"; kv: "cf.kv"; kw: "cf.kw"; kx: "cf.kx"; ky: "cf.ky"; kz: "cf.kz"; la: "cf.la"; lb: "cf.lb"; lc: "cf.lc"; ld: "cf.ld"; le: "cf.le"; lf: "cf.lf"; lg: "cf.lg"; lh: "cf.lh"; li: "cf.li"; lj: "cf.lj"; lk: "cf.lk"; ll: "cf.ll"; lm: "cf.lm"; ln: "cf.ln"; lo: "cf.lo"; lp: "cf.lp"; lq: "cf.lq"; lr: "cf.lr"; ls: "cf.ls"; lt: "cf.lt"; lu: "cf.lu"; lv: "cf.lv"; lw: "cf.lw"; lx: "cf.lx"; ly: "cf.ly"; lz: "cf.lz"; ma: "cf.ma"; mb: "cf.mb"; mc: "cf.mc"; md: "cf.md"; me: "cf.me"; mf: "cf.mf"; mg: "cf.mg"; mh: "cf.mh"; mi: "cf.mi"; mj: "cf.mj"; mk: "cf.mk"; ml: "cf.ml"; mm: "cf.mm"; mn: "cf.mn"; mo: "cf.mo"; mp: "cf.mp"; mq: "cf.mq"; mr: "cf.mr"; ms: "cf.ms"; mt: "cf.mt"; mu: "cf.mu"; mv: "cf.mv"; mw: "cf.mw"; mx: "cf.mx"; my: "cf.my"; mz: "cf.mz"; na: "cf.na"; nb: "cf.nb"; nc: "cf.nc"; nd: "cf.nd"; ne: "cf.ne"; nf: "cf.nf"; ng: "cf.ng"; nh: "cf.nh"; ni: "cf.ni"; nj: "cf.nj"; nk: "cf.nk"; nl: "cf.nl"; nm: "cf.nm"; nn: "cf.nn"; no: "cf.no"; np: "cf.np"; nq: "cf.nq"; nr: "cf.nr"; ns: "cf.ns"; nt: "cf.nt"; nu: "cf.nu"; nv: "cf.nv"; nw: "cf.nw"; nx: "cf.nx"; ny: "cf.ny"; nz: "cf.nz"; oa: "cf.oa"; ob: "cf.ob"; oc: "cf.oc"; od: "cf.od"; oe: "cf.oe"; of: "cf.of"; og: "cf.og"; oh: "cf.oh"; oi: "cf.oi"; oj: "cf.oj"; ok: "cf.ok"; ol: "cf.ol"; om: "cf.om"; on: "cf.on"; oo: "cf.oo"; op: "cf.op"; oq: "cf.oq"; or: "cf.or"; os: "cf.os"; ot: "cf.ot"; ou: "cf.ou"; ov: "cf.ov"; ow: "cf.ow"; ox: "cf.ox"; oy: "cf.oy"; oz: "cf.oz"; pa: "cf.pa"; pb: "cf.pb"; pc: "cf.pc"; pd: "cf.pd"; pe: "cf.pe"; pf: "cf.pf"; pg: "cf.pg"; ph: "cf.ph"; pi: "cf.pi"; pj: "cf.pj"; pk: "cf.pk"; pl: "cf.pl"; pm: "cf.pm"; pn: "cf.pn"; po: "cf.po"; pp: "cf.pp"; pq: "cf.pq"; pr: "cf.pr"; ps: "cf.ps"; pt: "cf.pt"; pu: "cf.pu"; pv: "cf.pv"; pw: "cf.pw"; px: "cf.px"; py: "cf.py"; pz: "cf.pz"; qa: "cf.qa"; qb: "cf.qb"; qc: "cf.qc"; qd: "cf.qd"; qe: "cf.qe"; qf: "cf.qf"; qg: "cf.qg"; qh: "cf.qh"; qi: "cf.qi"; qj: "cf.qj"; qk: "cf.qk"; ql: "cf.ql"; qm: "cf.qm"; qn: "cf.qn"; qo: "cf.qo"; qp: "cf.qp"; qq: "cf.qq"; qr: "cf.qr"; qs: "cf.qs"; qt: "cf.qt"; qu: "cf.qu"; qv: "cf.qv"; qw: "cf.qw"; qx: "cf.qx"; qy: "cf.qy"; qz: "cf.qz"; ra: "cf.ra"; rb: "cf.rb"; rc: "cf.rc"; rd: "cf.rd"; re: "cf.re"; rf: "cf.rf"; rg: "cf.rg"; rh: "cf.rh"; ri: "cf.ri"; rj: "cf.rj"; rk: "cf.rk"; rl: "cf.rl"; rm: "cf.rm"; rn: "cf.rn"; ro: "cf.ro"; rp: "cf.rp"; rq: "cf.rq"; rr: "cf.rr"; rs: "cf.rs"; rt: "cf.rt"; ru: "cf.ru"; rv: "cf.rv"; rw: "cf.rw"; rx: "cf.rx"; ry: "cf.ry"; rz: "cf.rz"; sa: "cf.sa"; sb: "cf.sb"; sc: "cf.sc"; sd: "cf.sd"; se: "cf.se"; sf: "cf.sf"; sg: "cf.sg"; sh: "cf.sh"; si: "cf.si"; sj: "cf.sj"; sk: "cf.sk"; sl: "cf.sl"; sm: "cf.sm"; sn: "cf.sn"; so: "cf.so"; sp: "cf.sp"; sq: "cf.sq"; sr: "cf.sr"; ss: "cf.ss"; st: "cf.st"; su: "cf.su"; sv: "cf.sv"; sw: "cf.sw"; sx: "cf.sx"; sy: "cf.sy"; sz: "cf.sz"; ta: "cf.ta"; tb: "cf.tb"; tc: "cf.tc"; td: "cf.td"; te: "cf.te"; tf: "cf.tf"; tg: "cf.tg"; th: "cf.th"; ti: "cf.ti"; tj: "cf.tj"; tk: "cf.tk"; tl: "cf.tl"; tm: "cf.tm"; tn: "cf.tn"; to: "cf.to"; tp: "cf.tp"; tq: "cf.tq"; tr: "cf.tr"; ts: "cf.ts"; tt: "cf.tt"; tu: "cf.tu"; tv: "cf.tv"; tw: "cf.tw"; tx: "cf.tx"; ty: "cf.ty"; tz: "cf.tz"; ua: "cf.ua"; ub: "cf.ub"; uc: "cf.uc"; ud: "cf.ud"; ue: "cf.ue"; uf: "cf.uf"; ug: "cf.ug"; uh: "cf.uh"; ui: "cf.ui"; uj: "cf.uj"; uk: "cf.uk"; ul: "cf.ul"; um: "cf.um"; un: "cf.un"; uo: "cf.uo"; up: "cf.up"; uq: "cf.uq"; ur: "cf.ur"; us: "cf.us"; ut: "cf.ut"; uu: "cf.uu"; uv: "cf.uv"; uw: "cf.uw"; ux: "cf.ux"; uy: "cf.uy"; uz: "cf.uz"; va: "cf.va"; vb: "cf.vb"; vc: "cf.vc"; vd: "cf.vd"; ve: "cf.ve"; vf: "cf.vf"; vg: "cf.vg"; vh: "cf.vh"; vi: "cf.vi"; vj: "cf.vj"; vk: "cf.vk"; vl: "cf.vl"; vm: "cf.vm"; vn: "cf.vn"; vo: "cf.vo"; vp: "cf.vp"; vq: "cf.vq"; vr: "cf.vr"; vs: "cf.vs"; vt: "cf.vt"; vu: "cf.vu"; vv: "cf.vv"; vw: "cf.vw"; vx: "cf.vx"; vy: "cf.vy"; vz: "cf.vz"; wa: "cf.wa"; wb: "cf.wb"; wc: "cf.wc"; wd: "cf.wd"; we: "cf.we"; wf: "cf.wf"; wg: "cf.wg"; wh: "cf.wh"; wi: "cf.wi"; wj: "cf.wj"; wk: "cf.wk"; wl: "cf.wl"; wm: "cf.wm"; wn: "cf.wn"; wo: "cf.wo"; wp: "cf.wp"; wq: "cf.wq"; wr: "cf.wr"; ws: "cf.ws"; wt: "cf.wt"; wu: "cf.wu"; wv: "cf.wv"; ww: "cf.ww"; wx: "cf.wx"; wy: "cf.wy"; wz: "cf.wz"; xa: "cf.xa"; xb: "cf.xb"; xc: "cf.xc"; xd: "cf.xd"; xe: "cf.xe"; xf: "cf.xf"; xg: "cf.xg"; xh: "cf.xh"; xi: "cf.xi"; xj: "cf.xj"; xk: "cf.xk"; xl: "cf.xl"; xm: "cf.xm"; xn: "cf.xn"; xo: "cf.xo"; xp: "cf.xp"; xq: "cf.xq"; xr: "cf.xr"; xs: "cf.xs"; xt: "cf.xt"; xu: "cf.xu"; xv: "cf.xv"; xw: "cf.xw"; xx: "cf.xx"; xy: "cf.xy"; xz: "cf.xz"; ya: "cf.ya"; yb: "cf.yb"; yc: "cf.yc"; yd: "cf.yd"; ye: "cf.ye"; yf: "cf.yf"; yg: "cf.yg"; yh: "cf.yh"; yi: "cf.yi"; yj: "cf.yj"; yk: "cf.yk"; yl: "cf.yl"; ym: "cf.ym"; yn: "cf.yn"; yo: "cf.yo"; yp: "cf.yp"; yq: "cf.yq"; yr: "cf.yr"; ys: "cf.ys"; yt: "cf.yt"; yu: "cf.yu"; yv: "cf.yv"; yw: "cf.yw"; yx: "cf.yx"; yy: "cf.yy"; yz: "cf.yz"; za: "cf.za"; zb: "cf.zb"; zc: "cf.zc"; zd: "cf.zd"; ze: "cf.ze"; zf: "cf.zf"; zg: "cf.zg"; zh: "cf.zh"; zi: "cf.zi"; zj: "cf.zj"; zk: "cf.zk"; zl: "cf.zl"; zm: "cf.zm"; zn: "cf.zn"; zo: "cf.zo"; zp: "cf.zp"; zq: "cf.zq"; zr: "cf.zr"; zs: "cf.zs"; zt: "cf.zt"; zu: "cf.zu"; zv: "cf.zv"; zw: "cf.zw"; zx: "cf.zx"; zy: "cf.zy"; zz: "cf.zz"; }; cg: { aa: "cg.aa"; ab: "cg.ab"; ac: "cg.ac"; ad: "cg.ad"; ae: "cg.ae"; af: "cg.af"; ag: "cg.ag"; ah: "cg.ah"; ai: "cg.ai"; aj: "cg.aj"; ak: "cg.ak"; al: "cg.al"; am: "cg.am"; an: "cg.an"; ao: "cg.ao"; ap: "cg.ap"; aq: "cg.aq"; ar: "cg.ar"; as: "cg.as"; at: "cg.at"; au: "cg.au"; av: "cg.av"; aw: "cg.aw"; ax: "cg.ax"; ay: "cg.ay"; az: "cg.az"; ba: "cg.ba"; bb: "cg.bb"; bc: "cg.bc"; bd: "cg.bd"; be: "cg.be"; bf: "cg.bf"; bg: "cg.bg"; bh: "cg.bh"; bi: "cg.bi"; bj: "cg.bj"; bk: "cg.bk"; bl: "cg.bl"; bm: "cg.bm"; bn: "cg.bn"; bo: "cg.bo"; bp: "cg.bp"; bq: "cg.bq"; br: "cg.br"; bs: "cg.bs"; bt: "cg.bt"; bu: "cg.bu"; bv: "cg.bv"; bw: "cg.bw"; bx: "cg.bx"; by: "cg.by"; bz: "cg.bz"; ca: "cg.ca"; cb: "cg.cb"; cc: "cg.cc"; cd: "cg.cd"; ce: "cg.ce"; cf: "cg.cf"; cg: "cg.cg"; ch: "cg.ch"; ci: "cg.ci"; cj: "cg.cj"; ck: "cg.ck"; cl: "cg.cl"; cm: "cg.cm"; cn: "cg.cn"; co: "cg.co"; cp: "cg.cp"; cq: "cg.cq"; cr: "cg.cr"; cs: "cg.cs"; ct: "cg.ct"; cu: "cg.cu"; cv: "cg.cv"; cw: "cg.cw"; cx: "cg.cx"; cy: "cg.cy"; cz: "cg.cz"; da: "cg.da"; db: "cg.db"; dc: "cg.dc"; dd: "cg.dd"; de: "cg.de"; df: "cg.df"; dg: "cg.dg"; dh: "cg.dh"; di: "cg.di"; dj: "cg.dj"; dk: "cg.dk"; dl: "cg.dl"; dm: "cg.dm"; dn: "cg.dn"; do: "cg.do"; dp: "cg.dp"; dq: "cg.dq"; dr: "cg.dr"; ds: "cg.ds"; dt: "cg.dt"; du: "cg.du"; dv: "cg.dv"; dw: "cg.dw"; dx: "cg.dx"; dy: "cg.dy"; dz: "cg.dz"; ea: "cg.ea"; eb: "cg.eb"; ec: "cg.ec"; ed: "cg.ed"; ee: "cg.ee"; ef: "cg.ef"; eg: "cg.eg"; eh: "cg.eh"; ei: "cg.ei"; ej: "cg.ej"; ek: "cg.ek"; el: "cg.el"; em: "cg.em"; en: "cg.en"; eo: "cg.eo"; ep: "cg.ep"; eq: "cg.eq"; er: "cg.er"; es: "cg.es"; et: "cg.et"; eu: "cg.eu"; ev: "cg.ev"; ew: "cg.ew"; ex: "cg.ex"; ey: "cg.ey"; ez: "cg.ez"; fa: "cg.fa"; fb: "cg.fb"; fc: "cg.fc"; fd: "cg.fd"; fe: "cg.fe"; ff: "cg.ff"; fg: "cg.fg"; fh: "cg.fh"; fi: "cg.fi"; fj: "cg.fj"; fk: "cg.fk"; fl: "cg.fl"; fm: "cg.fm"; fn: "cg.fn"; fo: "cg.fo"; fp: "cg.fp"; fq: "cg.fq"; fr: "cg.fr"; fs: "cg.fs"; ft: "cg.ft"; fu: "cg.fu"; fv: "cg.fv"; fw: "cg.fw"; fx: "cg.fx"; fy: "cg.fy"; fz: "cg.fz"; ga: "cg.ga"; gb: "cg.gb"; gc: "cg.gc"; gd: "cg.gd"; ge: "cg.ge"; gf: "cg.gf"; gg: "cg.gg"; gh: "cg.gh"; gi: "cg.gi"; gj: "cg.gj"; gk: "cg.gk"; gl: "cg.gl"; gm: "cg.gm"; gn: "cg.gn"; go: "cg.go"; gp: "cg.gp"; gq: "cg.gq"; gr: "cg.gr"; gs: "cg.gs"; gt: "cg.gt"; gu: "cg.gu"; gv: "cg.gv"; gw: "cg.gw"; gx: "cg.gx"; gy: "cg.gy"; gz: "cg.gz"; ha: "cg.ha"; hb: "cg.hb"; hc: "cg.hc"; hd: "cg.hd"; he: "cg.he"; hf: "cg.hf"; hg: "cg.hg"; hh: "cg.hh"; hi: "cg.hi"; hj: "cg.hj"; hk: "cg.hk"; hl: "cg.hl"; hm: "cg.hm"; hn: "cg.hn"; ho: "cg.ho"; hp: "cg.hp"; hq: "cg.hq"; hr: "cg.hr"; hs: "cg.hs"; ht: "cg.ht"; hu: "cg.hu"; hv: "cg.hv"; hw: "cg.hw"; hx: "cg.hx"; hy: "cg.hy"; hz: "cg.hz"; ia: "cg.ia"; ib: "cg.ib"; ic: "cg.ic"; id: "cg.id"; ie: "cg.ie"; if: "cg.if"; ig: "cg.ig"; ih: "cg.ih"; ii: "cg.ii"; ij: "cg.ij"; ik: "cg.ik"; il: "cg.il"; im: "cg.im"; in: "cg.in"; io: "cg.io"; ip: "cg.ip"; iq: "cg.iq"; ir: "cg.ir"; is: "cg.is"; it: "cg.it"; iu: "cg.iu"; iv: "cg.iv"; iw: "cg.iw"; ix: "cg.ix"; iy: "cg.iy"; iz: "cg.iz"; ja: "cg.ja"; jb: "cg.jb"; jc: "cg.jc"; jd: "cg.jd"; je: "cg.je"; jf: "cg.jf"; jg: "cg.jg"; jh: "cg.jh"; ji: "cg.ji"; jj: "cg.jj"; jk: "cg.jk"; jl: "cg.jl"; jm: "cg.jm"; jn: "cg.jn"; jo: "cg.jo"; jp: "cg.jp"; jq: "cg.jq"; jr: "cg.jr"; js: "cg.js"; jt: "cg.jt"; ju: "cg.ju"; jv: "cg.jv"; jw: "cg.jw"; jx: "cg.jx"; jy: "cg.jy"; jz: "cg.jz"; ka: "cg.ka"; kb: "cg.kb"; kc: "cg.kc"; kd: "cg.kd"; ke: "cg.ke"; kf: "cg.kf"; kg: "cg.kg"; kh: "cg.kh"; ki: "cg.ki"; kj: "cg.kj"; kk: "cg.kk"; kl: "cg.kl"; km: "cg.km"; kn: "cg.kn"; ko: "cg.ko"; kp: "cg.kp"; kq: "cg.kq"; kr: "cg.kr"; ks: "cg.ks"; kt: "cg.kt"; ku: "cg.ku"; kv: "cg.kv"; kw: "cg.kw"; kx: "cg.kx"; ky: "cg.ky"; kz: "cg.kz"; la: "cg.la"; lb: "cg.lb"; lc: "cg.lc"; ld: "cg.ld"; le: "cg.le"; lf: "cg.lf"; lg: "cg.lg"; lh: "cg.lh"; li: "cg.li"; lj: "cg.lj"; lk: "cg.lk"; ll: "cg.ll"; lm: "cg.lm"; ln: "cg.ln"; lo: "cg.lo"; lp: "cg.lp"; lq: "cg.lq"; lr: "cg.lr"; ls: "cg.ls"; lt: "cg.lt"; lu: "cg.lu"; lv: "cg.lv"; lw: "cg.lw"; lx: "cg.lx"; ly: "cg.ly"; lz: "cg.lz"; ma: "cg.ma"; mb: "cg.mb"; mc: "cg.mc"; md: "cg.md"; me: "cg.me"; mf: "cg.mf"; mg: "cg.mg"; mh: "cg.mh"; mi: "cg.mi"; mj: "cg.mj"; mk: "cg.mk"; ml: "cg.ml"; mm: "cg.mm"; mn: "cg.mn"; mo: "cg.mo"; mp: "cg.mp"; mq: "cg.mq"; mr: "cg.mr"; ms: "cg.ms"; mt: "cg.mt"; mu: "cg.mu"; mv: "cg.mv"; mw: "cg.mw"; mx: "cg.mx"; my: "cg.my"; mz: "cg.mz"; na: "cg.na"; nb: "cg.nb"; nc: "cg.nc"; nd: "cg.nd"; ne: "cg.ne"; nf: "cg.nf"; ng: "cg.ng"; nh: "cg.nh"; ni: "cg.ni"; nj: "cg.nj"; nk: "cg.nk"; nl: "cg.nl"; nm: "cg.nm"; nn: "cg.nn"; no: "cg.no"; np: "cg.np"; nq: "cg.nq"; nr: "cg.nr"; ns: "cg.ns"; nt: "cg.nt"; nu: "cg.nu"; nv: "cg.nv"; nw: "cg.nw"; nx: "cg.nx"; ny: "cg.ny"; nz: "cg.nz"; oa: "cg.oa"; ob: "cg.ob"; oc: "cg.oc"; od: "cg.od"; oe: "cg.oe"; of: "cg.of"; og: "cg.og"; oh: "cg.oh"; oi: "cg.oi"; oj: "cg.oj"; ok: "cg.ok"; ol: "cg.ol"; om: "cg.om"; on: "cg.on"; oo: "cg.oo"; op: "cg.op"; oq: "cg.oq"; or: "cg.or"; os: "cg.os"; ot: "cg.ot"; ou: "cg.ou"; ov: "cg.ov"; ow: "cg.ow"; ox: "cg.ox"; oy: "cg.oy"; oz: "cg.oz"; pa: "cg.pa"; pb: "cg.pb"; pc: "cg.pc"; pd: "cg.pd"; pe: "cg.pe"; pf: "cg.pf"; pg: "cg.pg"; ph: "cg.ph"; pi: "cg.pi"; pj: "cg.pj"; pk: "cg.pk"; pl: "cg.pl"; pm: "cg.pm"; pn: "cg.pn"; po: "cg.po"; pp: "cg.pp"; pq: "cg.pq"; pr: "cg.pr"; ps: "cg.ps"; pt: "cg.pt"; pu: "cg.pu"; pv: "cg.pv"; pw: "cg.pw"; px: "cg.px"; py: "cg.py"; pz: "cg.pz"; qa: "cg.qa"; qb: "cg.qb"; qc: "cg.qc"; qd: "cg.qd"; qe: "cg.qe"; qf: "cg.qf"; qg: "cg.qg"; qh: "cg.qh"; qi: "cg.qi"; qj: "cg.qj"; qk: "cg.qk"; ql: "cg.ql"; qm: "cg.qm"; qn: "cg.qn"; qo: "cg.qo"; qp: "cg.qp"; qq: "cg.qq"; qr: "cg.qr"; qs: "cg.qs"; qt: "cg.qt"; qu: "cg.qu"; qv: "cg.qv"; qw: "cg.qw"; qx: "cg.qx"; qy: "cg.qy"; qz: "cg.qz"; ra: "cg.ra"; rb: "cg.rb"; rc: "cg.rc"; rd: "cg.rd"; re: "cg.re"; rf: "cg.rf"; rg: "cg.rg"; rh: "cg.rh"; ri: "cg.ri"; rj: "cg.rj"; rk: "cg.rk"; rl: "cg.rl"; rm: "cg.rm"; rn: "cg.rn"; ro: "cg.ro"; rp: "cg.rp"; rq: "cg.rq"; rr: "cg.rr"; rs: "cg.rs"; rt: "cg.rt"; ru: "cg.ru"; rv: "cg.rv"; rw: "cg.rw"; rx: "cg.rx"; ry: "cg.ry"; rz: "cg.rz"; sa: "cg.sa"; sb: "cg.sb"; sc: "cg.sc"; sd: "cg.sd"; se: "cg.se"; sf: "cg.sf"; sg: "cg.sg"; sh: "cg.sh"; si: "cg.si"; sj: "cg.sj"; sk: "cg.sk"; sl: "cg.sl"; sm: "cg.sm"; sn: "cg.sn"; so: "cg.so"; sp: "cg.sp"; sq: "cg.sq"; sr: "cg.sr"; ss: "cg.ss"; st: "cg.st"; su: "cg.su"; sv: "cg.sv"; sw: "cg.sw"; sx: "cg.sx"; sy: "cg.sy"; sz: "cg.sz"; ta: "cg.ta"; tb: "cg.tb"; tc: "cg.tc"; td: "cg.td"; te: "cg.te"; tf: "cg.tf"; tg: "cg.tg"; th: "cg.th"; ti: "cg.ti"; tj: "cg.tj"; tk: "cg.tk"; tl: "cg.tl"; tm: "cg.tm"; tn: "cg.tn"; to: "cg.to"; tp: "cg.tp"; tq: "cg.tq"; tr: "cg.tr"; ts: "cg.ts"; tt: "cg.tt"; tu: "cg.tu"; tv: "cg.tv"; tw: "cg.tw"; tx: "cg.tx"; ty: "cg.ty"; tz: "cg.tz"; ua: "cg.ua"; ub: "cg.ub"; uc: "cg.uc"; ud: "cg.ud"; ue: "cg.ue"; uf: "cg.uf"; ug: "cg.ug"; uh: "cg.uh"; ui: "cg.ui"; uj: "cg.uj"; uk: "cg.uk"; ul: "cg.ul"; um: "cg.um"; un: "cg.un"; uo: "cg.uo"; up: "cg.up"; uq: "cg.uq"; ur: "cg.ur"; us: "cg.us"; ut: "cg.ut"; uu: "cg.uu"; uv: "cg.uv"; uw: "cg.uw"; ux: "cg.ux"; uy: "cg.uy"; uz: "cg.uz"; va: "cg.va"; vb: "cg.vb"; vc: "cg.vc"; vd: "cg.vd"; ve: "cg.ve"; vf: "cg.vf"; vg: "cg.vg"; vh: "cg.vh"; vi: "cg.vi"; vj: "cg.vj"; vk: "cg.vk"; vl: "cg.vl"; vm: "cg.vm"; vn: "cg.vn"; vo: "cg.vo"; vp: "cg.vp"; vq: "cg.vq"; vr: "cg.vr"; vs: "cg.vs"; vt: "cg.vt"; vu: "cg.vu"; vv: "cg.vv"; vw: "cg.vw"; vx: "cg.vx"; vy: "cg.vy"; vz: "cg.vz"; wa: "cg.wa"; wb: "cg.wb"; wc: "cg.wc"; wd: "cg.wd"; we: "cg.we"; wf: "cg.wf"; wg: "cg.wg"; wh: "cg.wh"; wi: "cg.wi"; wj: "cg.wj"; wk: "cg.wk"; wl: "cg.wl"; wm: "cg.wm"; wn: "cg.wn"; wo: "cg.wo"; wp: "cg.wp"; wq: "cg.wq"; wr: "cg.wr"; ws: "cg.ws"; wt: "cg.wt"; wu: "cg.wu"; wv: "cg.wv"; ww: "cg.ww"; wx: "cg.wx"; wy: "cg.wy"; wz: "cg.wz"; xa: "cg.xa"; xb: "cg.xb"; xc: "cg.xc"; xd: "cg.xd"; xe: "cg.xe"; xf: "cg.xf"; xg: "cg.xg"; xh: "cg.xh"; xi: "cg.xi"; xj: "cg.xj"; xk: "cg.xk"; xl: "cg.xl"; xm: "cg.xm"; xn: "cg.xn"; xo: "cg.xo"; xp: "cg.xp"; xq: "cg.xq"; xr: "cg.xr"; xs: "cg.xs"; xt: "cg.xt"; xu: "cg.xu"; xv: "cg.xv"; xw: "cg.xw"; xx: "cg.xx"; xy: "cg.xy"; xz: "cg.xz"; ya: "cg.ya"; yb: "cg.yb"; yc: "cg.yc"; yd: "cg.yd"; ye: "cg.ye"; yf: "cg.yf"; yg: "cg.yg"; yh: "cg.yh"; yi: "cg.yi"; yj: "cg.yj"; yk: "cg.yk"; yl: "cg.yl"; ym: "cg.ym"; yn: "cg.yn"; yo: "cg.yo"; yp: "cg.yp"; yq: "cg.yq"; yr: "cg.yr"; ys: "cg.ys"; yt: "cg.yt"; yu: "cg.yu"; yv: "cg.yv"; yw: "cg.yw"; yx: "cg.yx"; yy: "cg.yy"; yz: "cg.yz"; za: "cg.za"; zb: "cg.zb"; zc: "cg.zc"; zd: "cg.zd"; ze: "cg.ze"; zf: "cg.zf"; zg: "cg.zg"; zh: "cg.zh"; zi: "cg.zi"; zj: "cg.zj"; zk: "cg.zk"; zl: "cg.zl"; zm: "cg.zm"; zn: "cg.zn"; zo: "cg.zo"; zp: "cg.zp"; zq: "cg.zq"; zr: "cg.zr"; zs: "cg.zs"; zt: "cg.zt"; zu: "cg.zu"; zv: "cg.zv"; zw: "cg.zw"; zx: "cg.zx"; zy: "cg.zy"; zz: "cg.zz"; }; ch: { aa: "ch.aa"; ab: "ch.ab"; ac: "ch.ac"; ad: "ch.ad"; ae: "ch.ae"; af: "ch.af"; ag: "ch.ag"; ah: "ch.ah"; ai: "ch.ai"; aj: "ch.aj"; ak: "ch.ak"; al: "ch.al"; am: "ch.am"; an: "ch.an"; ao: "ch.ao"; ap: "ch.ap"; aq: "ch.aq"; ar: "ch.ar"; as: "ch.as"; at: "ch.at"; au: "ch.au"; av: "ch.av"; aw: "ch.aw"; ax: "ch.ax"; ay: "ch.ay"; az: "ch.az"; ba: "ch.ba"; bb: "ch.bb"; bc: "ch.bc"; bd: "ch.bd"; be: "ch.be"; bf: "ch.bf"; bg: "ch.bg"; bh: "ch.bh"; bi: "ch.bi"; bj: "ch.bj"; bk: "ch.bk"; bl: "ch.bl"; bm: "ch.bm"; bn: "ch.bn"; bo: "ch.bo"; bp: "ch.bp"; bq: "ch.bq"; br: "ch.br"; bs: "ch.bs"; bt: "ch.bt"; bu: "ch.bu"; bv: "ch.bv"; bw: "ch.bw"; bx: "ch.bx"; by: "ch.by"; bz: "ch.bz"; ca: "ch.ca"; cb: "ch.cb"; cc: "ch.cc"; cd: "ch.cd"; ce: "ch.ce"; cf: "ch.cf"; cg: "ch.cg"; ch: "ch.ch"; ci: "ch.ci"; cj: "ch.cj"; ck: "ch.ck"; cl: "ch.cl"; cm: "ch.cm"; cn: "ch.cn"; co: "ch.co"; cp: "ch.cp"; cq: "ch.cq"; cr: "ch.cr"; cs: "ch.cs"; ct: "ch.ct"; cu: "ch.cu"; cv: "ch.cv"; cw: "ch.cw"; cx: "ch.cx"; cy: "ch.cy"; cz: "ch.cz"; da: "ch.da"; db: "ch.db"; dc: "ch.dc"; dd: "ch.dd"; de: "ch.de"; df: "ch.df"; dg: "ch.dg"; dh: "ch.dh"; di: "ch.di"; dj: "ch.dj"; dk: "ch.dk"; dl: "ch.dl"; dm: "ch.dm"; dn: "ch.dn"; do: "ch.do"; dp: "ch.dp"; dq: "ch.dq"; dr: "ch.dr"; ds: "ch.ds"; dt: "ch.dt"; du: "ch.du"; dv: "ch.dv"; dw: "ch.dw"; dx: "ch.dx"; dy: "ch.dy"; dz: "ch.dz"; ea: "ch.ea"; eb: "ch.eb"; ec: "ch.ec"; ed: "ch.ed"; ee: "ch.ee"; ef: "ch.ef"; eg: "ch.eg"; eh: "ch.eh"; ei: "ch.ei"; ej: "ch.ej"; ek: "ch.ek"; el: "ch.el"; em: "ch.em"; en: "ch.en"; eo: "ch.eo"; ep: "ch.ep"; eq: "ch.eq"; er: "ch.er"; es: "ch.es"; et: "ch.et"; eu: "ch.eu"; ev: "ch.ev"; ew: "ch.ew"; ex: "ch.ex"; ey: "ch.ey"; ez: "ch.ez"; fa: "ch.fa"; fb: "ch.fb"; fc: "ch.fc"; fd: "ch.fd"; fe: "ch.fe"; ff: "ch.ff"; fg: "ch.fg"; fh: "ch.fh"; fi: "ch.fi"; fj: "ch.fj"; fk: "ch.fk"; fl: "ch.fl"; fm: "ch.fm"; fn: "ch.fn"; fo: "ch.fo"; fp: "ch.fp"; fq: "ch.fq"; fr: "ch.fr"; fs: "ch.fs"; ft: "ch.ft"; fu: "ch.fu"; fv: "ch.fv"; fw: "ch.fw"; fx: "ch.fx"; fy: "ch.fy"; fz: "ch.fz"; ga: "ch.ga"; gb: "ch.gb"; gc: "ch.gc"; gd: "ch.gd"; ge: "ch.ge"; gf: "ch.gf"; gg: "ch.gg"; gh: "ch.gh"; gi: "ch.gi"; gj: "ch.gj"; gk: "ch.gk"; gl: "ch.gl"; gm: "ch.gm"; gn: "ch.gn"; go: "ch.go"; gp: "ch.gp"; gq: "ch.gq"; gr: "ch.gr"; gs: "ch.gs"; gt: "ch.gt"; gu: "ch.gu"; gv: "ch.gv"; gw: "ch.gw"; gx: "ch.gx"; gy: "ch.gy"; gz: "ch.gz"; ha: "ch.ha"; hb: "ch.hb"; hc: "ch.hc"; hd: "ch.hd"; he: "ch.he"; hf: "ch.hf"; hg: "ch.hg"; hh: "ch.hh"; hi: "ch.hi"; hj: "ch.hj"; hk: "ch.hk"; hl: "ch.hl"; hm: "ch.hm"; hn: "ch.hn"; ho: "ch.ho"; hp: "ch.hp"; hq: "ch.hq"; hr: "ch.hr"; hs: "ch.hs"; ht: "ch.ht"; hu: "ch.hu"; hv: "ch.hv"; hw: "ch.hw"; hx: "ch.hx"; hy: "ch.hy"; hz: "ch.hz"; ia: "ch.ia"; ib: "ch.ib"; ic: "ch.ic"; id: "ch.id"; ie: "ch.ie"; if: "ch.if"; ig: "ch.ig"; ih: "ch.ih"; ii: "ch.ii"; ij: "ch.ij"; ik: "ch.ik"; il: "ch.il"; im: "ch.im"; in: "ch.in"; io: "ch.io"; ip: "ch.ip"; iq: "ch.iq"; ir: "ch.ir"; is: "ch.is"; it: "ch.it"; iu: "ch.iu"; iv: "ch.iv"; iw: "ch.iw"; ix: "ch.ix"; iy: "ch.iy"; iz: "ch.iz"; ja: "ch.ja"; jb: "ch.jb"; jc: "ch.jc"; jd: "ch.jd"; je: "ch.je"; jf: "ch.jf"; jg: "ch.jg"; jh: "ch.jh"; ji: "ch.ji"; jj: "ch.jj"; jk: "ch.jk"; jl: "ch.jl"; jm: "ch.jm"; jn: "ch.jn"; jo: "ch.jo"; jp: "ch.jp"; jq: "ch.jq"; jr: "ch.jr"; js: "ch.js"; jt: "ch.jt"; ju: "ch.ju"; jv: "ch.jv"; jw: "ch.jw"; jx: "ch.jx"; jy: "ch.jy"; jz: "ch.jz"; ka: "ch.ka"; kb: "ch.kb"; kc: "ch.kc"; kd: "ch.kd"; ke: "ch.ke"; kf: "ch.kf"; kg: "ch.kg"; kh: "ch.kh"; ki: "ch.ki"; kj: "ch.kj"; kk: "ch.kk"; kl: "ch.kl"; km: "ch.km"; kn: "ch.kn"; ko: "ch.ko"; kp: "ch.kp"; kq: "ch.kq"; kr: "ch.kr"; ks: "ch.ks"; kt: "ch.kt"; ku: "ch.ku"; kv: "ch.kv"; kw: "ch.kw"; kx: "ch.kx"; ky: "ch.ky"; kz: "ch.kz"; la: "ch.la"; lb: "ch.lb"; lc: "ch.lc"; ld: "ch.ld"; le: "ch.le"; lf: "ch.lf"; lg: "ch.lg"; lh: "ch.lh"; li: "ch.li"; lj: "ch.lj"; lk: "ch.lk"; ll: "ch.ll"; lm: "ch.lm"; ln: "ch.ln"; lo: "ch.lo"; lp: "ch.lp"; lq: "ch.lq"; lr: "ch.lr"; ls: "ch.ls"; lt: "ch.lt"; lu: "ch.lu"; lv: "ch.lv"; lw: "ch.lw"; lx: "ch.lx"; ly: "ch.ly"; lz: "ch.lz"; ma: "ch.ma"; mb: "ch.mb"; mc: "ch.mc"; md: "ch.md"; me: "ch.me"; mf: "ch.mf"; mg: "ch.mg"; mh: "ch.mh"; mi: "ch.mi"; mj: "ch.mj"; mk: "ch.mk"; ml: "ch.ml"; mm: "ch.mm"; mn: "ch.mn"; mo: "ch.mo"; mp: "ch.mp"; mq: "ch.mq"; mr: "ch.mr"; ms: "ch.ms"; mt: "ch.mt"; mu: "ch.mu"; mv: "ch.mv"; mw: "ch.mw"; mx: "ch.mx"; my: "ch.my"; mz: "ch.mz"; na: "ch.na"; nb: "ch.nb"; nc: "ch.nc"; nd: "ch.nd"; ne: "ch.ne"; nf: "ch.nf"; ng: "ch.ng"; nh: "ch.nh"; ni: "ch.ni"; nj: "ch.nj"; nk: "ch.nk"; nl: "ch.nl"; nm: "ch.nm"; nn: "ch.nn"; no: "ch.no"; np: "ch.np"; nq: "ch.nq"; nr: "ch.nr"; ns: "ch.ns"; nt: "ch.nt"; nu: "ch.nu"; nv: "ch.nv"; nw: "ch.nw"; nx: "ch.nx"; ny: "ch.ny"; nz: "ch.nz"; oa: "ch.oa"; ob: "ch.ob"; oc: "ch.oc"; od: "ch.od"; oe: "ch.oe"; of: "ch.of"; og: "ch.og"; oh: "ch.oh"; oi: "ch.oi"; oj: "ch.oj"; ok: "ch.ok"; ol: "ch.ol"; om: "ch.om"; on: "ch.on"; oo: "ch.oo"; op: "ch.op"; oq: "ch.oq"; or: "ch.or"; os: "ch.os"; ot: "ch.ot"; ou: "ch.ou"; ov: "ch.ov"; ow: "ch.ow"; ox: "ch.ox"; oy: "ch.oy"; oz: "ch.oz"; pa: "ch.pa"; pb: "ch.pb"; pc: "ch.pc"; pd: "ch.pd"; pe: "ch.pe"; pf: "ch.pf"; pg: "ch.pg"; ph: "ch.ph"; pi: "ch.pi"; pj: "ch.pj"; pk: "ch.pk"; pl: "ch.pl"; pm: "ch.pm"; pn: "ch.pn"; po: "ch.po"; pp: "ch.pp"; pq: "ch.pq"; pr: "ch.pr"; ps: "ch.ps"; pt: "ch.pt"; pu: "ch.pu"; pv: "ch.pv"; pw: "ch.pw"; px: "ch.px"; py: "ch.py"; pz: "ch.pz"; qa: "ch.qa"; qb: "ch.qb"; qc: "ch.qc"; qd: "ch.qd"; qe: "ch.qe"; qf: "ch.qf"; qg: "ch.qg"; qh: "ch.qh"; qi: "ch.qi"; qj: "ch.qj"; qk: "ch.qk"; ql: "ch.ql"; qm: "ch.qm"; qn: "ch.qn"; qo: "ch.qo"; qp: "ch.qp"; qq: "ch.qq"; qr: "ch.qr"; qs: "ch.qs"; qt: "ch.qt"; qu: "ch.qu"; qv: "ch.qv"; qw: "ch.qw"; qx: "ch.qx"; qy: "ch.qy"; qz: "ch.qz"; ra: "ch.ra"; rb: "ch.rb"; rc: "ch.rc"; rd: "ch.rd"; re: "ch.re"; rf: "ch.rf"; rg: "ch.rg"; rh: "ch.rh"; ri: "ch.ri"; rj: "ch.rj"; rk: "ch.rk"; rl: "ch.rl"; rm: "ch.rm"; rn: "ch.rn"; ro: "ch.ro"; rp: "ch.rp"; rq: "ch.rq"; rr: "ch.rr"; rs: "ch.rs"; rt: "ch.rt"; ru: "ch.ru"; rv: "ch.rv"; rw: "ch.rw"; rx: "ch.rx"; ry: "ch.ry"; rz: "ch.rz"; sa: "ch.sa"; sb: "ch.sb"; sc: "ch.sc"; sd: "ch.sd"; se: "ch.se"; sf: "ch.sf"; sg: "ch.sg"; sh: "ch.sh"; si: "ch.si"; sj: "ch.sj"; sk: "ch.sk"; sl: "ch.sl"; sm: "ch.sm"; sn: "ch.sn"; so: "ch.so"; sp: "ch.sp"; sq: "ch.sq"; sr: "ch.sr"; ss: "ch.ss"; st: "ch.st"; su: "ch.su"; sv: "ch.sv"; sw: "ch.sw"; sx: "ch.sx"; sy: "ch.sy"; sz: "ch.sz"; ta: "ch.ta"; tb: "ch.tb"; tc: "ch.tc"; td: "ch.td"; te: "ch.te"; tf: "ch.tf"; tg: "ch.tg"; th: "ch.th"; ti: "ch.ti"; tj: "ch.tj"; tk: "ch.tk"; tl: "ch.tl"; tm: "ch.tm"; tn: "ch.tn"; to: "ch.to"; tp: "ch.tp"; tq: "ch.tq"; tr: "ch.tr"; ts: "ch.ts"; tt: "ch.tt"; tu: "ch.tu"; tv: "ch.tv"; tw: "ch.tw"; tx: "ch.tx"; ty: "ch.ty"; tz: "ch.tz"; ua: "ch.ua"; ub: "ch.ub"; uc: "ch.uc"; ud: "ch.ud"; ue: "ch.ue"; uf: "ch.uf"; ug: "ch.ug"; uh: "ch.uh"; ui: "ch.ui"; uj: "ch.uj"; uk: "ch.uk"; ul: "ch.ul"; um: "ch.um"; un: "ch.un"; uo: "ch.uo"; up: "ch.up"; uq: "ch.uq"; ur: "ch.ur"; us: "ch.us"; ut: "ch.ut"; uu: "ch.uu"; uv: "ch.uv"; uw: "ch.uw"; ux: "ch.ux"; uy: "ch.uy"; uz: "ch.uz"; va: "ch.va"; vb: "ch.vb"; vc: "ch.vc"; vd: "ch.vd"; ve: "ch.ve"; vf: "ch.vf"; vg: "ch.vg"; vh: "ch.vh"; vi: "ch.vi"; vj: "ch.vj"; vk: "ch.vk"; vl: "ch.vl"; vm: "ch.vm"; vn: "ch.vn"; vo: "ch.vo"; vp: "ch.vp"; vq: "ch.vq"; vr: "ch.vr"; vs: "ch.vs"; vt: "ch.vt"; vu: "ch.vu"; vv: "ch.vv"; vw: "ch.vw"; vx: "ch.vx"; vy: "ch.vy"; vz: "ch.vz"; wa: "ch.wa"; wb: "ch.wb"; wc: "ch.wc"; wd: "ch.wd"; we: "ch.we"; wf: "ch.wf"; wg: "ch.wg"; wh: "ch.wh"; wi: "ch.wi"; wj: "ch.wj"; wk: "ch.wk"; wl: "ch.wl"; wm: "ch.wm"; wn: "ch.wn"; wo: "ch.wo"; wp: "ch.wp"; wq: "ch.wq"; wr: "ch.wr"; ws: "ch.ws"; wt: "ch.wt"; wu: "ch.wu"; wv: "ch.wv"; ww: "ch.ww"; wx: "ch.wx"; wy: "ch.wy"; wz: "ch.wz"; xa: "ch.xa"; xb: "ch.xb"; xc: "ch.xc"; xd: "ch.xd"; xe: "ch.xe"; xf: "ch.xf"; xg: "ch.xg"; xh: "ch.xh"; xi: "ch.xi"; xj: "ch.xj"; xk: "ch.xk"; xl: "ch.xl"; xm: "ch.xm"; xn: "ch.xn"; xo: "ch.xo"; xp: "ch.xp"; xq: "ch.xq"; xr: "ch.xr"; xs: "ch.xs"; xt: "ch.xt"; xu: "ch.xu"; xv: "ch.xv"; xw: "ch.xw"; xx: "ch.xx"; xy: "ch.xy"; xz: "ch.xz"; ya: "ch.ya"; yb: "ch.yb"; yc: "ch.yc"; yd: "ch.yd"; ye: "ch.ye"; yf: "ch.yf"; yg: "ch.yg"; yh: "ch.yh"; yi: "ch.yi"; yj: "ch.yj"; yk: "ch.yk"; yl: "ch.yl"; ym: "ch.ym"; yn: "ch.yn"; yo: "ch.yo"; yp: "ch.yp"; yq: "ch.yq"; yr: "ch.yr"; ys: "ch.ys"; yt: "ch.yt"; yu: "ch.yu"; yv: "ch.yv"; yw: "ch.yw"; yx: "ch.yx"; yy: "ch.yy"; yz: "ch.yz"; za: "ch.za"; zb: "ch.zb"; zc: "ch.zc"; zd: "ch.zd"; ze: "ch.ze"; zf: "ch.zf"; zg: "ch.zg"; zh: "ch.zh"; zi: "ch.zi"; zj: "ch.zj"; zk: "ch.zk"; zl: "ch.zl"; zm: "ch.zm"; zn: "ch.zn"; zo: "ch.zo"; zp: "ch.zp"; zq: "ch.zq"; zr: "ch.zr"; zs: "ch.zs"; zt: "ch.zt"; zu: "ch.zu"; zv: "ch.zv"; zw: "ch.zw"; zx: "ch.zx"; zy: "ch.zy"; zz: "ch.zz"; }; ci: { aa: "ci.aa"; ab: "ci.ab"; ac: "ci.ac"; ad: "ci.ad"; ae: "ci.ae"; af: "ci.af"; ag: "ci.ag"; ah: "ci.ah"; ai: "ci.ai"; aj: "ci.aj"; ak: "ci.ak"; al: "ci.al"; am: "ci.am"; an: "ci.an"; ao: "ci.ao"; ap: "ci.ap"; aq: "ci.aq"; ar: "ci.ar"; as: "ci.as"; at: "ci.at"; au: "ci.au"; av: "ci.av"; aw: "ci.aw"; ax: "ci.ax"; ay: "ci.ay"; az: "ci.az"; ba: "ci.ba"; bb: "ci.bb"; bc: "ci.bc"; bd: "ci.bd"; be: "ci.be"; bf: "ci.bf"; bg: "ci.bg"; bh: "ci.bh"; bi: "ci.bi"; bj: "ci.bj"; bk: "ci.bk"; bl: "ci.bl"; bm: "ci.bm"; bn: "ci.bn"; bo: "ci.bo"; bp: "ci.bp"; bq: "ci.bq"; br: "ci.br"; bs: "ci.bs"; bt: "ci.bt"; bu: "ci.bu"; bv: "ci.bv"; bw: "ci.bw"; bx: "ci.bx"; by: "ci.by"; bz: "ci.bz"; ca: "ci.ca"; cb: "ci.cb"; cc: "ci.cc"; cd: "ci.cd"; ce: "ci.ce"; cf: "ci.cf"; cg: "ci.cg"; ch: "ci.ch"; ci: "ci.ci"; cj: "ci.cj"; ck: "ci.ck"; cl: "ci.cl"; cm: "ci.cm"; cn: "ci.cn"; co: "ci.co"; cp: "ci.cp"; cq: "ci.cq"; cr: "ci.cr"; cs: "ci.cs"; ct: "ci.ct"; cu: "ci.cu"; cv: "ci.cv"; cw: "ci.cw"; cx: "ci.cx"; cy: "ci.cy"; cz: "ci.cz"; da: "ci.da"; db: "ci.db"; dc: "ci.dc"; dd: "ci.dd"; de: "ci.de"; df: "ci.df"; dg: "ci.dg"; dh: "ci.dh"; di: "ci.di"; dj: "ci.dj"; dk: "ci.dk"; dl: "ci.dl"; dm: "ci.dm"; dn: "ci.dn"; do: "ci.do"; dp: "ci.dp"; dq: "ci.dq"; dr: "ci.dr"; ds: "ci.ds"; dt: "ci.dt"; du: "ci.du"; dv: "ci.dv"; dw: "ci.dw"; dx: "ci.dx"; dy: "ci.dy"; dz: "ci.dz"; ea: "ci.ea"; eb: "ci.eb"; ec: "ci.ec"; ed: "ci.ed"; ee: "ci.ee"; ef: "ci.ef"; eg: "ci.eg"; eh: "ci.eh"; ei: "ci.ei"; ej: "ci.ej"; ek: "ci.ek"; el: "ci.el"; em: "ci.em"; en: "ci.en"; eo: "ci.eo"; ep: "ci.ep"; eq: "ci.eq"; er: "ci.er"; es: "ci.es"; et: "ci.et"; eu: "ci.eu"; ev: "ci.ev"; ew: "ci.ew"; ex: "ci.ex"; ey: "ci.ey"; ez: "ci.ez"; fa: "ci.fa"; fb: "ci.fb"; fc: "ci.fc"; fd: "ci.fd"; fe: "ci.fe"; ff: "ci.ff"; fg: "ci.fg"; fh: "ci.fh"; fi: "ci.fi"; fj: "ci.fj"; fk: "ci.fk"; fl: "ci.fl"; fm: "ci.fm"; fn: "ci.fn"; fo: "ci.fo"; fp: "ci.fp"; fq: "ci.fq"; fr: "ci.fr"; fs: "ci.fs"; ft: "ci.ft"; fu: "ci.fu"; fv: "ci.fv"; fw: "ci.fw"; fx: "ci.fx"; fy: "ci.fy"; fz: "ci.fz"; ga: "ci.ga"; gb: "ci.gb"; gc: "ci.gc"; gd: "ci.gd"; ge: "ci.ge"; gf: "ci.gf"; gg: "ci.gg"; gh: "ci.gh"; gi: "ci.gi"; gj: "ci.gj"; gk: "ci.gk"; gl: "ci.gl"; gm: "ci.gm"; gn: "ci.gn"; go: "ci.go"; gp: "ci.gp"; gq: "ci.gq"; gr: "ci.gr"; gs: "ci.gs"; gt: "ci.gt"; gu: "ci.gu"; gv: "ci.gv"; gw: "ci.gw"; gx: "ci.gx"; gy: "ci.gy"; gz: "ci.gz"; ha: "ci.ha"; hb: "ci.hb"; hc: "ci.hc"; hd: "ci.hd"; he: "ci.he"; hf: "ci.hf"; hg: "ci.hg"; hh: "ci.hh"; hi: "ci.hi"; hj: "ci.hj"; hk: "ci.hk"; hl: "ci.hl"; hm: "ci.hm"; hn: "ci.hn"; ho: "ci.ho"; hp: "ci.hp"; hq: "ci.hq"; hr: "ci.hr"; hs: "ci.hs"; ht: "ci.ht"; hu: "ci.hu"; hv: "ci.hv"; hw: "ci.hw"; hx: "ci.hx"; hy: "ci.hy"; hz: "ci.hz"; ia: "ci.ia"; ib: "ci.ib"; ic: "ci.ic"; id: "ci.id"; ie: "ci.ie"; if: "ci.if"; ig: "ci.ig"; ih: "ci.ih"; ii: "ci.ii"; ij: "ci.ij"; ik: "ci.ik"; il: "ci.il"; im: "ci.im"; in: "ci.in"; io: "ci.io"; ip: "ci.ip"; iq: "ci.iq"; ir: "ci.ir"; is: "ci.is"; it: "ci.it"; iu: "ci.iu"; iv: "ci.iv"; iw: "ci.iw"; ix: "ci.ix"; iy: "ci.iy"; iz: "ci.iz"; ja: "ci.ja"; jb: "ci.jb"; jc: "ci.jc"; jd: "ci.jd"; je: "ci.je"; jf: "ci.jf"; jg: "ci.jg"; jh: "ci.jh"; ji: "ci.ji"; jj: "ci.jj"; jk: "ci.jk"; jl: "ci.jl"; jm: "ci.jm"; jn: "ci.jn"; jo: "ci.jo"; jp: "ci.jp"; jq: "ci.jq"; jr: "ci.jr"; js: "ci.js"; jt: "ci.jt"; ju: "ci.ju"; jv: "ci.jv"; jw: "ci.jw"; jx: "ci.jx"; jy: "ci.jy"; jz: "ci.jz"; ka: "ci.ka"; kb: "ci.kb"; kc: "ci.kc"; kd: "ci.kd"; ke: "ci.ke"; kf: "ci.kf"; kg: "ci.kg"; kh: "ci.kh"; ki: "ci.ki"; kj: "ci.kj"; kk: "ci.kk"; kl: "ci.kl"; km: "ci.km"; kn: "ci.kn"; ko: "ci.ko"; kp: "ci.kp"; kq: "ci.kq"; kr: "ci.kr"; ks: "ci.ks"; kt: "ci.kt"; ku: "ci.ku"; kv: "ci.kv"; kw: "ci.kw"; kx: "ci.kx"; ky: "ci.ky"; kz: "ci.kz"; la: "ci.la"; lb: "ci.lb"; lc: "ci.lc"; ld: "ci.ld"; le: "ci.le"; lf: "ci.lf"; lg: "ci.lg"; lh: "ci.lh"; li: "ci.li"; lj: "ci.lj"; lk: "ci.lk"; ll: "ci.ll"; lm: "ci.lm"; ln: "ci.ln"; lo: "ci.lo"; lp: "ci.lp"; lq: "ci.lq"; lr: "ci.lr"; ls: "ci.ls"; lt: "ci.lt"; lu: "ci.lu"; lv: "ci.lv"; lw: "ci.lw"; lx: "ci.lx"; ly: "ci.ly"; lz: "ci.lz"; ma: "ci.ma"; mb: "ci.mb"; mc: "ci.mc"; md: "ci.md"; me: "ci.me"; mf: "ci.mf"; mg: "ci.mg"; mh: "ci.mh"; mi: "ci.mi"; mj: "ci.mj"; mk: "ci.mk"; ml: "ci.ml"; mm: "ci.mm"; mn: "ci.mn"; mo: "ci.mo"; mp: "ci.mp"; mq: "ci.mq"; mr: "ci.mr"; ms: "ci.ms"; mt: "ci.mt"; mu: "ci.mu"; mv: "ci.mv"; mw: "ci.mw"; mx: "ci.mx"; my: "ci.my"; mz: "ci.mz"; na: "ci.na"; nb: "ci.nb"; nc: "ci.nc"; nd: "ci.nd"; ne: "ci.ne"; nf: "ci.nf"; ng: "ci.ng"; nh: "ci.nh"; ni: "ci.ni"; nj: "ci.nj"; nk: "ci.nk"; nl: "ci.nl"; nm: "ci.nm"; nn: "ci.nn"; no: "ci.no"; np: "ci.np"; nq: "ci.nq"; nr: "ci.nr"; ns: "ci.ns"; nt: "ci.nt"; nu: "ci.nu"; nv: "ci.nv"; nw: "ci.nw"; nx: "ci.nx"; ny: "ci.ny"; nz: "ci.nz"; oa: "ci.oa"; ob: "ci.ob"; oc: "ci.oc"; od: "ci.od"; oe: "ci.oe"; of: "ci.of"; og: "ci.og"; oh: "ci.oh"; oi: "ci.oi"; oj: "ci.oj"; ok: "ci.ok"; ol: "ci.ol"; om: "ci.om"; on: "ci.on"; oo: "ci.oo"; op: "ci.op"; oq: "ci.oq"; or: "ci.or"; os: "ci.os"; ot: "ci.ot"; ou: "ci.ou"; ov: "ci.ov"; ow: "ci.ow"; ox: "ci.ox"; oy: "ci.oy"; oz: "ci.oz"; pa: "ci.pa"; pb: "ci.pb"; pc: "ci.pc"; pd: "ci.pd"; pe: "ci.pe"; pf: "ci.pf"; pg: "ci.pg"; ph: "ci.ph"; pi: "ci.pi"; pj: "ci.pj"; pk: "ci.pk"; pl: "ci.pl"; pm: "ci.pm"; pn: "ci.pn"; po: "ci.po"; pp: "ci.pp"; pq: "ci.pq"; pr: "ci.pr"; ps: "ci.ps"; pt: "ci.pt"; pu: "ci.pu"; pv: "ci.pv"; pw: "ci.pw"; px: "ci.px"; py: "ci.py"; pz: "ci.pz"; qa: "ci.qa"; qb: "ci.qb"; qc: "ci.qc"; qd: "ci.qd"; qe: "ci.qe"; qf: "ci.qf"; qg: "ci.qg"; qh: "ci.qh"; qi: "ci.qi"; qj: "ci.qj"; qk: "ci.qk"; ql: "ci.ql"; qm: "ci.qm"; qn: "ci.qn"; qo: "ci.qo"; qp: "ci.qp"; qq: "ci.qq"; qr: "ci.qr"; qs: "ci.qs"; qt: "ci.qt"; qu: "ci.qu"; qv: "ci.qv"; qw: "ci.qw"; qx: "ci.qx"; qy: "ci.qy"; qz: "ci.qz"; ra: "ci.ra"; rb: "ci.rb"; rc: "ci.rc"; rd: "ci.rd"; re: "ci.re"; rf: "ci.rf"; rg: "ci.rg"; rh: "ci.rh"; ri: "ci.ri"; rj: "ci.rj"; rk: "ci.rk"; rl: "ci.rl"; rm: "ci.rm"; rn: "ci.rn"; ro: "ci.ro"; rp: "ci.rp"; rq: "ci.rq"; rr: "ci.rr"; rs: "ci.rs"; rt: "ci.rt"; ru: "ci.ru"; rv: "ci.rv"; rw: "ci.rw"; rx: "ci.rx"; ry: "ci.ry"; rz: "ci.rz"; sa: "ci.sa"; sb: "ci.sb"; sc: "ci.sc"; sd: "ci.sd"; se: "ci.se"; sf: "ci.sf"; sg: "ci.sg"; sh: "ci.sh"; si: "ci.si"; sj: "ci.sj"; sk: "ci.sk"; sl: "ci.sl"; sm: "ci.sm"; sn: "ci.sn"; so: "ci.so"; sp: "ci.sp"; sq: "ci.sq"; sr: "ci.sr"; ss: "ci.ss"; st: "ci.st"; su: "ci.su"; sv: "ci.sv"; sw: "ci.sw"; sx: "ci.sx"; sy: "ci.sy"; sz: "ci.sz"; ta: "ci.ta"; tb: "ci.tb"; tc: "ci.tc"; td: "ci.td"; te: "ci.te"; tf: "ci.tf"; tg: "ci.tg"; th: "ci.th"; ti: "ci.ti"; tj: "ci.tj"; tk: "ci.tk"; tl: "ci.tl"; tm: "ci.tm"; tn: "ci.tn"; to: "ci.to"; tp: "ci.tp"; tq: "ci.tq"; tr: "ci.tr"; ts: "ci.ts"; tt: "ci.tt"; tu: "ci.tu"; tv: "ci.tv"; tw: "ci.tw"; tx: "ci.tx"; ty: "ci.ty"; tz: "ci.tz"; ua: "ci.ua"; ub: "ci.ub"; uc: "ci.uc"; ud: "ci.ud"; ue: "ci.ue"; uf: "ci.uf"; ug: "ci.ug"; uh: "ci.uh"; ui: "ci.ui"; uj: "ci.uj"; uk: "ci.uk"; ul: "ci.ul"; um: "ci.um"; un: "ci.un"; uo: "ci.uo"; up: "ci.up"; uq: "ci.uq"; ur: "ci.ur"; us: "ci.us"; ut: "ci.ut"; uu: "ci.uu"; uv: "ci.uv"; uw: "ci.uw"; ux: "ci.ux"; uy: "ci.uy"; uz: "ci.uz"; va: "ci.va"; vb: "ci.vb"; vc: "ci.vc"; vd: "ci.vd"; ve: "ci.ve"; vf: "ci.vf"; vg: "ci.vg"; vh: "ci.vh"; vi: "ci.vi"; vj: "ci.vj"; vk: "ci.vk"; vl: "ci.vl"; vm: "ci.vm"; vn: "ci.vn"; vo: "ci.vo"; vp: "ci.vp"; vq: "ci.vq"; vr: "ci.vr"; vs: "ci.vs"; vt: "ci.vt"; vu: "ci.vu"; vv: "ci.vv"; vw: "ci.vw"; vx: "ci.vx"; vy: "ci.vy"; vz: "ci.vz"; wa: "ci.wa"; wb: "ci.wb"; wc: "ci.wc"; wd: "ci.wd"; we: "ci.we"; wf: "ci.wf"; wg: "ci.wg"; wh: "ci.wh"; wi: "ci.wi"; wj: "ci.wj"; wk: "ci.wk"; wl: "ci.wl"; wm: "ci.wm"; wn: "ci.wn"; wo: "ci.wo"; wp: "ci.wp"; wq: "ci.wq"; wr: "ci.wr"; ws: "ci.ws"; wt: "ci.wt"; wu: "ci.wu"; wv: "ci.wv"; ww: "ci.ww"; wx: "ci.wx"; wy: "ci.wy"; wz: "ci.wz"; xa: "ci.xa"; xb: "ci.xb"; xc: "ci.xc"; xd: "ci.xd"; xe: "ci.xe"; xf: "ci.xf"; xg: "ci.xg"; xh: "ci.xh"; xi: "ci.xi"; xj: "ci.xj"; xk: "ci.xk"; xl: "ci.xl"; xm: "ci.xm"; xn: "ci.xn"; xo: "ci.xo"; xp: "ci.xp"; xq: "ci.xq"; xr: "ci.xr"; xs: "ci.xs"; xt: "ci.xt"; xu: "ci.xu"; xv: "ci.xv"; xw: "ci.xw"; xx: "ci.xx"; xy: "ci.xy"; xz: "ci.xz"; ya: "ci.ya"; yb: "ci.yb"; yc: "ci.yc"; yd: "ci.yd"; ye: "ci.ye"; yf: "ci.yf"; yg: "ci.yg"; yh: "ci.yh"; yi: "ci.yi"; yj: "ci.yj"; yk: "ci.yk"; yl: "ci.yl"; ym: "ci.ym"; yn: "ci.yn"; yo: "ci.yo"; yp: "ci.yp"; yq: "ci.yq"; yr: "ci.yr"; ys: "ci.ys"; yt: "ci.yt"; yu: "ci.yu"; yv: "ci.yv"; yw: "ci.yw"; yx: "ci.yx"; yy: "ci.yy"; yz: "ci.yz"; za: "ci.za"; zb: "ci.zb"; zc: "ci.zc"; zd: "ci.zd"; ze: "ci.ze"; zf: "ci.zf"; zg: "ci.zg"; zh: "ci.zh"; zi: "ci.zi"; zj: "ci.zj"; zk: "ci.zk"; zl: "ci.zl"; zm: "ci.zm"; zn: "ci.zn"; zo: "ci.zo"; zp: "ci.zp"; zq: "ci.zq"; zr: "ci.zr"; zs: "ci.zs"; zt: "ci.zt"; zu: "ci.zu"; zv: "ci.zv"; zw: "ci.zw"; zx: "ci.zx"; zy: "ci.zy"; zz: "ci.zz"; }; cj: { aa: "cj.aa"; ab: "cj.ab"; ac: "cj.ac"; ad: "cj.ad"; ae: "cj.ae"; af: "cj.af"; ag: "cj.ag"; ah: "cj.ah"; ai: "cj.ai"; aj: "cj.aj"; ak: "cj.ak"; al: "cj.al"; am: "cj.am"; an: "cj.an"; ao: "cj.ao"; ap: "cj.ap"; aq: "cj.aq"; ar: "cj.ar"; as: "cj.as"; at: "cj.at"; au: "cj.au"; av: "cj.av"; aw: "cj.aw"; ax: "cj.ax"; ay: "cj.ay"; az: "cj.az"; ba: "cj.ba"; bb: "cj.bb"; bc: "cj.bc"; bd: "cj.bd"; be: "cj.be"; bf: "cj.bf"; bg: "cj.bg"; bh: "cj.bh"; bi: "cj.bi"; bj: "cj.bj"; bk: "cj.bk"; bl: "cj.bl"; bm: "cj.bm"; bn: "cj.bn"; bo: "cj.bo"; bp: "cj.bp"; bq: "cj.bq"; br: "cj.br"; bs: "cj.bs"; bt: "cj.bt"; bu: "cj.bu"; bv: "cj.bv"; bw: "cj.bw"; bx: "cj.bx"; by: "cj.by"; bz: "cj.bz"; ca: "cj.ca"; cb: "cj.cb"; cc: "cj.cc"; cd: "cj.cd"; ce: "cj.ce"; cf: "cj.cf"; cg: "cj.cg"; ch: "cj.ch"; ci: "cj.ci"; cj: "cj.cj"; ck: "cj.ck"; cl: "cj.cl"; cm: "cj.cm"; cn: "cj.cn"; co: "cj.co"; cp: "cj.cp"; cq: "cj.cq"; cr: "cj.cr"; cs: "cj.cs"; ct: "cj.ct"; cu: "cj.cu"; cv: "cj.cv"; cw: "cj.cw"; cx: "cj.cx"; cy: "cj.cy"; cz: "cj.cz"; da: "cj.da"; db: "cj.db"; dc: "cj.dc"; dd: "cj.dd"; de: "cj.de"; df: "cj.df"; dg: "cj.dg"; dh: "cj.dh"; di: "cj.di"; dj: "cj.dj"; dk: "cj.dk"; dl: "cj.dl"; dm: "cj.dm"; dn: "cj.dn"; do: "cj.do"; dp: "cj.dp"; dq: "cj.dq"; dr: "cj.dr"; ds: "cj.ds"; dt: "cj.dt"; du: "cj.du"; dv: "cj.dv"; dw: "cj.dw"; dx: "cj.dx"; dy: "cj.dy"; dz: "cj.dz"; ea: "cj.ea"; eb: "cj.eb"; ec: "cj.ec"; ed: "cj.ed"; ee: "cj.ee"; ef: "cj.ef"; eg: "cj.eg"; eh: "cj.eh"; ei: "cj.ei"; ej: "cj.ej"; ek: "cj.ek"; el: "cj.el"; em: "cj.em"; en: "cj.en"; eo: "cj.eo"; ep: "cj.ep"; eq: "cj.eq"; er: "cj.er"; es: "cj.es"; et: "cj.et"; eu: "cj.eu"; ev: "cj.ev"; ew: "cj.ew"; ex: "cj.ex"; ey: "cj.ey"; ez: "cj.ez"; fa: "cj.fa"; fb: "cj.fb"; fc: "cj.fc"; fd: "cj.fd"; fe: "cj.fe"; ff: "cj.ff"; fg: "cj.fg"; fh: "cj.fh"; fi: "cj.fi"; fj: "cj.fj"; fk: "cj.fk"; fl: "cj.fl"; fm: "cj.fm"; fn: "cj.fn"; fo: "cj.fo"; fp: "cj.fp"; fq: "cj.fq"; fr: "cj.fr"; fs: "cj.fs"; ft: "cj.ft"; fu: "cj.fu"; fv: "cj.fv"; fw: "cj.fw"; fx: "cj.fx"; fy: "cj.fy"; fz: "cj.fz"; ga: "cj.ga"; gb: "cj.gb"; gc: "cj.gc"; gd: "cj.gd"; ge: "cj.ge"; gf: "cj.gf"; gg: "cj.gg"; gh: "cj.gh"; gi: "cj.gi"; gj: "cj.gj"; gk: "cj.gk"; gl: "cj.gl"; gm: "cj.gm"; gn: "cj.gn"; go: "cj.go"; gp: "cj.gp"; gq: "cj.gq"; gr: "cj.gr"; gs: "cj.gs"; gt: "cj.gt"; gu: "cj.gu"; gv: "cj.gv"; gw: "cj.gw"; gx: "cj.gx"; gy: "cj.gy"; gz: "cj.gz"; ha: "cj.ha"; hb: "cj.hb"; hc: "cj.hc"; hd: "cj.hd"; he: "cj.he"; hf: "cj.hf"; hg: "cj.hg"; hh: "cj.hh"; hi: "cj.hi"; hj: "cj.hj"; hk: "cj.hk"; hl: "cj.hl"; hm: "cj.hm"; hn: "cj.hn"; ho: "cj.ho"; hp: "cj.hp"; hq: "cj.hq"; hr: "cj.hr"; hs: "cj.hs"; ht: "cj.ht"; hu: "cj.hu"; hv: "cj.hv"; hw: "cj.hw"; hx: "cj.hx"; hy: "cj.hy"; hz: "cj.hz"; ia: "cj.ia"; ib: "cj.ib"; ic: "cj.ic"; id: "cj.id"; ie: "cj.ie"; if: "cj.if"; ig: "cj.ig"; ih: "cj.ih"; ii: "cj.ii"; ij: "cj.ij"; ik: "cj.ik"; il: "cj.il"; im: "cj.im"; in: "cj.in"; io: "cj.io"; ip: "cj.ip"; iq: "cj.iq"; ir: "cj.ir"; is: "cj.is"; it: "cj.it"; iu: "cj.iu"; iv: "cj.iv"; iw: "cj.iw"; ix: "cj.ix"; iy: "cj.iy"; iz: "cj.iz"; ja: "cj.ja"; jb: "cj.jb"; jc: "cj.jc"; jd: "cj.jd"; je: "cj.je"; jf: "cj.jf"; jg: "cj.jg"; jh: "cj.jh"; ji: "cj.ji"; jj: "cj.jj"; jk: "cj.jk"; jl: "cj.jl"; jm: "cj.jm"; jn: "cj.jn"; jo: "cj.jo"; jp: "cj.jp"; jq: "cj.jq"; jr: "cj.jr"; js: "cj.js"; jt: "cj.jt"; ju: "cj.ju"; jv: "cj.jv"; jw: "cj.jw"; jx: "cj.jx"; jy: "cj.jy"; jz: "cj.jz"; ka: "cj.ka"; kb: "cj.kb"; kc: "cj.kc"; kd: "cj.kd"; ke: "cj.ke"; kf: "cj.kf"; kg: "cj.kg"; kh: "cj.kh"; ki: "cj.ki"; kj: "cj.kj"; kk: "cj.kk"; kl: "cj.kl"; km: "cj.km"; kn: "cj.kn"; ko: "cj.ko"; kp: "cj.kp"; kq: "cj.kq"; kr: "cj.kr"; ks: "cj.ks"; kt: "cj.kt"; ku: "cj.ku"; kv: "cj.kv"; kw: "cj.kw"; kx: "cj.kx"; ky: "cj.ky"; kz: "cj.kz"; la: "cj.la"; lb: "cj.lb"; lc: "cj.lc"; ld: "cj.ld"; le: "cj.le"; lf: "cj.lf"; lg: "cj.lg"; lh: "cj.lh"; li: "cj.li"; lj: "cj.lj"; lk: "cj.lk"; ll: "cj.ll"; lm: "cj.lm"; ln: "cj.ln"; lo: "cj.lo"; lp: "cj.lp"; lq: "cj.lq"; lr: "cj.lr"; ls: "cj.ls"; lt: "cj.lt"; lu: "cj.lu"; lv: "cj.lv"; lw: "cj.lw"; lx: "cj.lx"; ly: "cj.ly"; lz: "cj.lz"; ma: "cj.ma"; mb: "cj.mb"; mc: "cj.mc"; md: "cj.md"; me: "cj.me"; mf: "cj.mf"; mg: "cj.mg"; mh: "cj.mh"; mi: "cj.mi"; mj: "cj.mj"; mk: "cj.mk"; ml: "cj.ml"; mm: "cj.mm"; mn: "cj.mn"; mo: "cj.mo"; mp: "cj.mp"; mq: "cj.mq"; mr: "cj.mr"; ms: "cj.ms"; mt: "cj.mt"; mu: "cj.mu"; mv: "cj.mv"; mw: "cj.mw"; mx: "cj.mx"; my: "cj.my"; mz: "cj.mz"; na: "cj.na"; nb: "cj.nb"; nc: "cj.nc"; nd: "cj.nd"; ne: "cj.ne"; nf: "cj.nf"; ng: "cj.ng"; nh: "cj.nh"; ni: "cj.ni"; nj: "cj.nj"; nk: "cj.nk"; nl: "cj.nl"; nm: "cj.nm"; nn: "cj.nn"; no: "cj.no"; np: "cj.np"; nq: "cj.nq"; nr: "cj.nr"; ns: "cj.ns"; nt: "cj.nt"; nu: "cj.nu"; nv: "cj.nv"; nw: "cj.nw"; nx: "cj.nx"; ny: "cj.ny"; nz: "cj.nz"; oa: "cj.oa"; ob: "cj.ob"; oc: "cj.oc"; od: "cj.od"; oe: "cj.oe"; of: "cj.of"; og: "cj.og"; oh: "cj.oh"; oi: "cj.oi"; oj: "cj.oj"; ok: "cj.ok"; ol: "cj.ol"; om: "cj.om"; on: "cj.on"; oo: "cj.oo"; op: "cj.op"; oq: "cj.oq"; or: "cj.or"; os: "cj.os"; ot: "cj.ot"; ou: "cj.ou"; ov: "cj.ov"; ow: "cj.ow"; ox: "cj.ox"; oy: "cj.oy"; oz: "cj.oz"; pa: "cj.pa"; pb: "cj.pb"; pc: "cj.pc"; pd: "cj.pd"; pe: "cj.pe"; pf: "cj.pf"; pg: "cj.pg"; ph: "cj.ph"; pi: "cj.pi"; pj: "cj.pj"; pk: "cj.pk"; pl: "cj.pl"; pm: "cj.pm"; pn: "cj.pn"; po: "cj.po"; pp: "cj.pp"; pq: "cj.pq"; pr: "cj.pr"; ps: "cj.ps"; pt: "cj.pt"; pu: "cj.pu"; pv: "cj.pv"; pw: "cj.pw"; px: "cj.px"; py: "cj.py"; pz: "cj.pz"; qa: "cj.qa"; qb: "cj.qb"; qc: "cj.qc"; qd: "cj.qd"; qe: "cj.qe"; qf: "cj.qf"; qg: "cj.qg"; qh: "cj.qh"; qi: "cj.qi"; qj: "cj.qj"; qk: "cj.qk"; ql: "cj.ql"; qm: "cj.qm"; qn: "cj.qn"; qo: "cj.qo"; qp: "cj.qp"; qq: "cj.qq"; qr: "cj.qr"; qs: "cj.qs"; qt: "cj.qt"; qu: "cj.qu"; qv: "cj.qv"; qw: "cj.qw"; qx: "cj.qx"; qy: "cj.qy"; qz: "cj.qz"; ra: "cj.ra"; rb: "cj.rb"; rc: "cj.rc"; rd: "cj.rd"; re: "cj.re"; rf: "cj.rf"; rg: "cj.rg"; rh: "cj.rh"; ri: "cj.ri"; rj: "cj.rj"; rk: "cj.rk"; rl: "cj.rl"; rm: "cj.rm"; rn: "cj.rn"; ro: "cj.ro"; rp: "cj.rp"; rq: "cj.rq"; rr: "cj.rr"; rs: "cj.rs"; rt: "cj.rt"; ru: "cj.ru"; rv: "cj.rv"; rw: "cj.rw"; rx: "cj.rx"; ry: "cj.ry"; rz: "cj.rz"; sa: "cj.sa"; sb: "cj.sb"; sc: "cj.sc"; sd: "cj.sd"; se: "cj.se"; sf: "cj.sf"; sg: "cj.sg"; sh: "cj.sh"; si: "cj.si"; sj: "cj.sj"; sk: "cj.sk"; sl: "cj.sl"; sm: "cj.sm"; sn: "cj.sn"; so: "cj.so"; sp: "cj.sp"; sq: "cj.sq"; sr: "cj.sr"; ss: "cj.ss"; st: "cj.st"; su: "cj.su"; sv: "cj.sv"; sw: "cj.sw"; sx: "cj.sx"; sy: "cj.sy"; sz: "cj.sz"; ta: "cj.ta"; tb: "cj.tb"; tc: "cj.tc"; td: "cj.td"; te: "cj.te"; tf: "cj.tf"; tg: "cj.tg"; th: "cj.th"; ti: "cj.ti"; tj: "cj.tj"; tk: "cj.tk"; tl: "cj.tl"; tm: "cj.tm"; tn: "cj.tn"; to: "cj.to"; tp: "cj.tp"; tq: "cj.tq"; tr: "cj.tr"; ts: "cj.ts"; tt: "cj.tt"; tu: "cj.tu"; tv: "cj.tv"; tw: "cj.tw"; tx: "cj.tx"; ty: "cj.ty"; tz: "cj.tz"; ua: "cj.ua"; ub: "cj.ub"; uc: "cj.uc"; ud: "cj.ud"; ue: "cj.ue"; uf: "cj.uf"; ug: "cj.ug"; uh: "cj.uh"; ui: "cj.ui"; uj: "cj.uj"; uk: "cj.uk"; ul: "cj.ul"; um: "cj.um"; un: "cj.un"; uo: "cj.uo"; up: "cj.up"; uq: "cj.uq"; ur: "cj.ur"; us: "cj.us"; ut: "cj.ut"; uu: "cj.uu"; uv: "cj.uv"; uw: "cj.uw"; ux: "cj.ux"; uy: "cj.uy"; uz: "cj.uz"; va: "cj.va"; vb: "cj.vb"; vc: "cj.vc"; vd: "cj.vd"; ve: "cj.ve"; vf: "cj.vf"; vg: "cj.vg"; vh: "cj.vh"; vi: "cj.vi"; vj: "cj.vj"; vk: "cj.vk"; vl: "cj.vl"; vm: "cj.vm"; vn: "cj.vn"; vo: "cj.vo"; vp: "cj.vp"; vq: "cj.vq"; vr: "cj.vr"; vs: "cj.vs"; vt: "cj.vt"; vu: "cj.vu"; vv: "cj.vv"; vw: "cj.vw"; vx: "cj.vx"; vy: "cj.vy"; vz: "cj.vz"; wa: "cj.wa"; wb: "cj.wb"; wc: "cj.wc"; wd: "cj.wd"; we: "cj.we"; wf: "cj.wf"; wg: "cj.wg"; wh: "cj.wh"; wi: "cj.wi"; wj: "cj.wj"; wk: "cj.wk"; wl: "cj.wl"; wm: "cj.wm"; wn: "cj.wn"; wo: "cj.wo"; wp: "cj.wp"; wq: "cj.wq"; wr: "cj.wr"; ws: "cj.ws"; wt: "cj.wt"; wu: "cj.wu"; wv: "cj.wv"; ww: "cj.ww"; wx: "cj.wx"; wy: "cj.wy"; wz: "cj.wz"; xa: "cj.xa"; xb: "cj.xb"; xc: "cj.xc"; xd: "cj.xd"; xe: "cj.xe"; xf: "cj.xf"; xg: "cj.xg"; xh: "cj.xh"; xi: "cj.xi"; xj: "cj.xj"; xk: "cj.xk"; xl: "cj.xl"; xm: "cj.xm"; xn: "cj.xn"; xo: "cj.xo"; xp: "cj.xp"; xq: "cj.xq"; xr: "cj.xr"; xs: "cj.xs"; xt: "cj.xt"; xu: "cj.xu"; xv: "cj.xv"; xw: "cj.xw"; xx: "cj.xx"; xy: "cj.xy"; xz: "cj.xz"; ya: "cj.ya"; yb: "cj.yb"; yc: "cj.yc"; yd: "cj.yd"; ye: "cj.ye"; yf: "cj.yf"; yg: "cj.yg"; yh: "cj.yh"; yi: "cj.yi"; yj: "cj.yj"; yk: "cj.yk"; yl: "cj.yl"; ym: "cj.ym"; yn: "cj.yn"; yo: "cj.yo"; yp: "cj.yp"; yq: "cj.yq"; yr: "cj.yr"; ys: "cj.ys"; yt: "cj.yt"; yu: "cj.yu"; yv: "cj.yv"; yw: "cj.yw"; yx: "cj.yx"; yy: "cj.yy"; yz: "cj.yz"; za: "cj.za"; zb: "cj.zb"; zc: "cj.zc"; zd: "cj.zd"; ze: "cj.ze"; zf: "cj.zf"; zg: "cj.zg"; zh: "cj.zh"; zi: "cj.zi"; zj: "cj.zj"; zk: "cj.zk"; zl: "cj.zl"; zm: "cj.zm"; zn: "cj.zn"; zo: "cj.zo"; zp: "cj.zp"; zq: "cj.zq"; zr: "cj.zr"; zs: "cj.zs"; zt: "cj.zt"; zu: "cj.zu"; zv: "cj.zv"; zw: "cj.zw"; zx: "cj.zx"; zy: "cj.zy"; zz: "cj.zz"; }; ck: { aa: "ck.aa"; ab: "ck.ab"; ac: "ck.ac"; ad: "ck.ad"; ae: "ck.ae"; af: "ck.af"; ag: "ck.ag"; ah: "ck.ah"; ai: "ck.ai"; aj: "ck.aj"; ak: "ck.ak"; al: "ck.al"; am: "ck.am"; an: "ck.an"; ao: "ck.ao"; ap: "ck.ap"; aq: "ck.aq"; ar: "ck.ar"; as: "ck.as"; at: "ck.at"; au: "ck.au"; av: "ck.av"; aw: "ck.aw"; ax: "ck.ax"; ay: "ck.ay"; az: "ck.az"; ba: "ck.ba"; bb: "ck.bb"; bc: "ck.bc"; bd: "ck.bd"; be: "ck.be"; bf: "ck.bf"; bg: "ck.bg"; bh: "ck.bh"; bi: "ck.bi"; bj: "ck.bj"; bk: "ck.bk"; bl: "ck.bl"; bm: "ck.bm"; bn: "ck.bn"; bo: "ck.bo"; bp: "ck.bp"; bq: "ck.bq"; br: "ck.br"; bs: "ck.bs"; bt: "ck.bt"; bu: "ck.bu"; bv: "ck.bv"; bw: "ck.bw"; bx: "ck.bx"; by: "ck.by"; bz: "ck.bz"; ca: "ck.ca"; cb: "ck.cb"; cc: "ck.cc"; cd: "ck.cd"; ce: "ck.ce"; cf: "ck.cf"; cg: "ck.cg"; ch: "ck.ch"; ci: "ck.ci"; cj: "ck.cj"; ck: "ck.ck"; cl: "ck.cl"; cm: "ck.cm"; cn: "ck.cn"; co: "ck.co"; cp: "ck.cp"; cq: "ck.cq"; cr: "ck.cr"; cs: "ck.cs"; ct: "ck.ct"; cu: "ck.cu"; cv: "ck.cv"; cw: "ck.cw"; cx: "ck.cx"; cy: "ck.cy"; cz: "ck.cz"; da: "ck.da"; db: "ck.db"; dc: "ck.dc"; dd: "ck.dd"; de: "ck.de"; df: "ck.df"; dg: "ck.dg"; dh: "ck.dh"; di: "ck.di"; dj: "ck.dj"; dk: "ck.dk"; dl: "ck.dl"; dm: "ck.dm"; dn: "ck.dn"; do: "ck.do"; dp: "ck.dp"; dq: "ck.dq"; dr: "ck.dr"; ds: "ck.ds"; dt: "ck.dt"; du: "ck.du"; dv: "ck.dv"; dw: "ck.dw"; dx: "ck.dx"; dy: "ck.dy"; dz: "ck.dz"; ea: "ck.ea"; eb: "ck.eb"; ec: "ck.ec"; ed: "ck.ed"; ee: "ck.ee"; ef: "ck.ef"; eg: "ck.eg"; eh: "ck.eh"; ei: "ck.ei"; ej: "ck.ej"; ek: "ck.ek"; el: "ck.el"; em: "ck.em"; en: "ck.en"; eo: "ck.eo"; ep: "ck.ep"; eq: "ck.eq"; er: "ck.er"; es: "ck.es"; et: "ck.et"; eu: "ck.eu"; ev: "ck.ev"; ew: "ck.ew"; ex: "ck.ex"; ey: "ck.ey"; ez: "ck.ez"; fa: "ck.fa"; fb: "ck.fb"; fc: "ck.fc"; fd: "ck.fd"; fe: "ck.fe"; ff: "ck.ff"; fg: "ck.fg"; fh: "ck.fh"; fi: "ck.fi"; fj: "ck.fj"; fk: "ck.fk"; fl: "ck.fl"; fm: "ck.fm"; fn: "ck.fn"; fo: "ck.fo"; fp: "ck.fp"; fq: "ck.fq"; fr: "ck.fr"; fs: "ck.fs"; ft: "ck.ft"; fu: "ck.fu"; fv: "ck.fv"; fw: "ck.fw"; fx: "ck.fx"; fy: "ck.fy"; fz: "ck.fz"; ga: "ck.ga"; gb: "ck.gb"; gc: "ck.gc"; gd: "ck.gd"; ge: "ck.ge"; gf: "ck.gf"; gg: "ck.gg"; gh: "ck.gh"; gi: "ck.gi"; gj: "ck.gj"; gk: "ck.gk"; gl: "ck.gl"; gm: "ck.gm"; gn: "ck.gn"; go: "ck.go"; gp: "ck.gp"; gq: "ck.gq"; gr: "ck.gr"; gs: "ck.gs"; gt: "ck.gt"; gu: "ck.gu"; gv: "ck.gv"; gw: "ck.gw"; gx: "ck.gx"; gy: "ck.gy"; gz: "ck.gz"; ha: "ck.ha"; hb: "ck.hb"; hc: "ck.hc"; hd: "ck.hd"; he: "ck.he"; hf: "ck.hf"; hg: "ck.hg"; hh: "ck.hh"; hi: "ck.hi"; hj: "ck.hj"; hk: "ck.hk"; hl: "ck.hl"; hm: "ck.hm"; hn: "ck.hn"; ho: "ck.ho"; hp: "ck.hp"; hq: "ck.hq"; hr: "ck.hr"; hs: "ck.hs"; ht: "ck.ht"; hu: "ck.hu"; hv: "ck.hv"; hw: "ck.hw"; hx: "ck.hx"; hy: "ck.hy"; hz: "ck.hz"; ia: "ck.ia"; ib: "ck.ib"; ic: "ck.ic"; id: "ck.id"; ie: "ck.ie"; if: "ck.if"; ig: "ck.ig"; ih: "ck.ih"; ii: "ck.ii"; ij: "ck.ij"; ik: "ck.ik"; il: "ck.il"; im: "ck.im"; in: "ck.in"; io: "ck.io"; ip: "ck.ip"; iq: "ck.iq"; ir: "ck.ir"; is: "ck.is"; it: "ck.it"; iu: "ck.iu"; iv: "ck.iv"; iw: "ck.iw"; ix: "ck.ix"; iy: "ck.iy"; iz: "ck.iz"; ja: "ck.ja"; jb: "ck.jb"; jc: "ck.jc"; jd: "ck.jd"; je: "ck.je"; jf: "ck.jf"; jg: "ck.jg"; jh: "ck.jh"; ji: "ck.ji"; jj: "ck.jj"; jk: "ck.jk"; jl: "ck.jl"; jm: "ck.jm"; jn: "ck.jn"; jo: "ck.jo"; jp: "ck.jp"; jq: "ck.jq"; jr: "ck.jr"; js: "ck.js"; jt: "ck.jt"; ju: "ck.ju"; jv: "ck.jv"; jw: "ck.jw"; jx: "ck.jx"; jy: "ck.jy"; jz: "ck.jz"; ka: "ck.ka"; kb: "ck.kb"; kc: "ck.kc"; kd: "ck.kd"; ke: "ck.ke"; kf: "ck.kf"; kg: "ck.kg"; kh: "ck.kh"; ki: "ck.ki"; kj: "ck.kj"; kk: "ck.kk"; kl: "ck.kl"; km: "ck.km"; kn: "ck.kn"; ko: "ck.ko"; kp: "ck.kp"; kq: "ck.kq"; kr: "ck.kr"; ks: "ck.ks"; kt: "ck.kt"; ku: "ck.ku"; kv: "ck.kv"; kw: "ck.kw"; kx: "ck.kx"; ky: "ck.ky"; kz: "ck.kz"; la: "ck.la"; lb: "ck.lb"; lc: "ck.lc"; ld: "ck.ld"; le: "ck.le"; lf: "ck.lf"; lg: "ck.lg"; lh: "ck.lh"; li: "ck.li"; lj: "ck.lj"; lk: "ck.lk"; ll: "ck.ll"; lm: "ck.lm"; ln: "ck.ln"; lo: "ck.lo"; lp: "ck.lp"; lq: "ck.lq"; lr: "ck.lr"; ls: "ck.ls"; lt: "ck.lt"; lu: "ck.lu"; lv: "ck.lv"; lw: "ck.lw"; lx: "ck.lx"; ly: "ck.ly"; lz: "ck.lz"; ma: "ck.ma"; mb: "ck.mb"; mc: "ck.mc"; md: "ck.md"; me: "ck.me"; mf: "ck.mf"; mg: "ck.mg"; mh: "ck.mh"; mi: "ck.mi"; mj: "ck.mj"; mk: "ck.mk"; ml: "ck.ml"; mm: "ck.mm"; mn: "ck.mn"; mo: "ck.mo"; mp: "ck.mp"; mq: "ck.mq"; mr: "ck.mr"; ms: "ck.ms"; mt: "ck.mt"; mu: "ck.mu"; mv: "ck.mv"; mw: "ck.mw"; mx: "ck.mx"; my: "ck.my"; mz: "ck.mz"; na: "ck.na"; nb: "ck.nb"; nc: "ck.nc"; nd: "ck.nd"; ne: "ck.ne"; nf: "ck.nf"; ng: "ck.ng"; nh: "ck.nh"; ni: "ck.ni"; nj: "ck.nj"; nk: "ck.nk"; nl: "ck.nl"; nm: "ck.nm"; nn: "ck.nn"; no: "ck.no"; np: "ck.np"; nq: "ck.nq"; nr: "ck.nr"; ns: "ck.ns"; nt: "ck.nt"; nu: "ck.nu"; nv: "ck.nv"; nw: "ck.nw"; nx: "ck.nx"; ny: "ck.ny"; nz: "ck.nz"; oa: "ck.oa"; ob: "ck.ob"; oc: "ck.oc"; od: "ck.od"; oe: "ck.oe"; of: "ck.of"; og: "ck.og"; oh: "ck.oh"; oi: "ck.oi"; oj: "ck.oj"; ok: "ck.ok"; ol: "ck.ol"; om: "ck.om"; on: "ck.on"; oo: "ck.oo"; op: "ck.op"; oq: "ck.oq"; or: "ck.or"; os: "ck.os"; ot: "ck.ot"; ou: "ck.ou"; ov: "ck.ov"; ow: "ck.ow"; ox: "ck.ox"; oy: "ck.oy"; oz: "ck.oz"; pa: "ck.pa"; pb: "ck.pb"; pc: "ck.pc"; pd: "ck.pd"; pe: "ck.pe"; pf: "ck.pf"; pg: "ck.pg"; ph: "ck.ph"; pi: "ck.pi"; pj: "ck.pj"; pk: "ck.pk"; pl: "ck.pl"; pm: "ck.pm"; pn: "ck.pn"; po: "ck.po"; pp: "ck.pp"; pq: "ck.pq"; pr: "ck.pr"; ps: "ck.ps"; pt: "ck.pt"; pu: "ck.pu"; pv: "ck.pv"; pw: "ck.pw"; px: "ck.px"; py: "ck.py"; pz: "ck.pz"; qa: "ck.qa"; qb: "ck.qb"; qc: "ck.qc"; qd: "ck.qd"; qe: "ck.qe"; qf: "ck.qf"; qg: "ck.qg"; qh: "ck.qh"; qi: "ck.qi"; qj: "ck.qj"; qk: "ck.qk"; ql: "ck.ql"; qm: "ck.qm"; qn: "ck.qn"; qo: "ck.qo"; qp: "ck.qp"; qq: "ck.qq"; qr: "ck.qr"; qs: "ck.qs"; qt: "ck.qt"; qu: "ck.qu"; qv: "ck.qv"; qw: "ck.qw"; qx: "ck.qx"; qy: "ck.qy"; qz: "ck.qz"; ra: "ck.ra"; rb: "ck.rb"; rc: "ck.rc"; rd: "ck.rd"; re: "ck.re"; rf: "ck.rf"; rg: "ck.rg"; rh: "ck.rh"; ri: "ck.ri"; rj: "ck.rj"; rk: "ck.rk"; rl: "ck.rl"; rm: "ck.rm"; rn: "ck.rn"; ro: "ck.ro"; rp: "ck.rp"; rq: "ck.rq"; rr: "ck.rr"; rs: "ck.rs"; rt: "ck.rt"; ru: "ck.ru"; rv: "ck.rv"; rw: "ck.rw"; rx: "ck.rx"; ry: "ck.ry"; rz: "ck.rz"; sa: "ck.sa"; sb: "ck.sb"; sc: "ck.sc"; sd: "ck.sd"; se: "ck.se"; sf: "ck.sf"; sg: "ck.sg"; sh: "ck.sh"; si: "ck.si"; sj: "ck.sj"; sk: "ck.sk"; sl: "ck.sl"; sm: "ck.sm"; sn: "ck.sn"; so: "ck.so"; sp: "ck.sp"; sq: "ck.sq"; sr: "ck.sr"; ss: "ck.ss"; st: "ck.st"; su: "ck.su"; sv: "ck.sv"; sw: "ck.sw"; sx: "ck.sx"; sy: "ck.sy"; sz: "ck.sz"; ta: "ck.ta"; tb: "ck.tb"; tc: "ck.tc"; td: "ck.td"; te: "ck.te"; tf: "ck.tf"; tg: "ck.tg"; th: "ck.th"; ti: "ck.ti"; tj: "ck.tj"; tk: "ck.tk"; tl: "ck.tl"; tm: "ck.tm"; tn: "ck.tn"; to: "ck.to"; tp: "ck.tp"; tq: "ck.tq"; tr: "ck.tr"; ts: "ck.ts"; tt: "ck.tt"; tu: "ck.tu"; tv: "ck.tv"; tw: "ck.tw"; tx: "ck.tx"; ty: "ck.ty"; tz: "ck.tz"; ua: "ck.ua"; ub: "ck.ub"; uc: "ck.uc"; ud: "ck.ud"; ue: "ck.ue"; uf: "ck.uf"; ug: "ck.ug"; uh: "ck.uh"; ui: "ck.ui"; uj: "ck.uj"; uk: "ck.uk"; ul: "ck.ul"; um: "ck.um"; un: "ck.un"; uo: "ck.uo"; up: "ck.up"; uq: "ck.uq"; ur: "ck.ur"; us: "ck.us"; ut: "ck.ut"; uu: "ck.uu"; uv: "ck.uv"; uw: "ck.uw"; ux: "ck.ux"; uy: "ck.uy"; uz: "ck.uz"; va: "ck.va"; vb: "ck.vb"; vc: "ck.vc"; vd: "ck.vd"; ve: "ck.ve"; vf: "ck.vf"; vg: "ck.vg"; vh: "ck.vh"; vi: "ck.vi"; vj: "ck.vj"; vk: "ck.vk"; vl: "ck.vl"; vm: "ck.vm"; vn: "ck.vn"; vo: "ck.vo"; vp: "ck.vp"; vq: "ck.vq"; vr: "ck.vr"; vs: "ck.vs"; vt: "ck.vt"; vu: "ck.vu"; vv: "ck.vv"; vw: "ck.vw"; vx: "ck.vx"; vy: "ck.vy"; vz: "ck.vz"; wa: "ck.wa"; wb: "ck.wb"; wc: "ck.wc"; wd: "ck.wd"; we: "ck.we"; wf: "ck.wf"; wg: "ck.wg"; wh: "ck.wh"; wi: "ck.wi"; wj: "ck.wj"; wk: "ck.wk"; wl: "ck.wl"; wm: "ck.wm"; wn: "ck.wn"; wo: "ck.wo"; wp: "ck.wp"; wq: "ck.wq"; wr: "ck.wr"; ws: "ck.ws"; wt: "ck.wt"; wu: "ck.wu"; wv: "ck.wv"; ww: "ck.ww"; wx: "ck.wx"; wy: "ck.wy"; wz: "ck.wz"; xa: "ck.xa"; xb: "ck.xb"; xc: "ck.xc"; xd: "ck.xd"; xe: "ck.xe"; xf: "ck.xf"; xg: "ck.xg"; xh: "ck.xh"; xi: "ck.xi"; xj: "ck.xj"; xk: "ck.xk"; xl: "ck.xl"; xm: "ck.xm"; xn: "ck.xn"; xo: "ck.xo"; xp: "ck.xp"; xq: "ck.xq"; xr: "ck.xr"; xs: "ck.xs"; xt: "ck.xt"; xu: "ck.xu"; xv: "ck.xv"; xw: "ck.xw"; xx: "ck.xx"; xy: "ck.xy"; xz: "ck.xz"; ya: "ck.ya"; yb: "ck.yb"; yc: "ck.yc"; yd: "ck.yd"; ye: "ck.ye"; yf: "ck.yf"; yg: "ck.yg"; yh: "ck.yh"; yi: "ck.yi"; yj: "ck.yj"; yk: "ck.yk"; yl: "ck.yl"; ym: "ck.ym"; yn: "ck.yn"; yo: "ck.yo"; yp: "ck.yp"; yq: "ck.yq"; yr: "ck.yr"; ys: "ck.ys"; yt: "ck.yt"; yu: "ck.yu"; yv: "ck.yv"; yw: "ck.yw"; yx: "ck.yx"; yy: "ck.yy"; yz: "ck.yz"; za: "ck.za"; zb: "ck.zb"; zc: "ck.zc"; zd: "ck.zd"; ze: "ck.ze"; zf: "ck.zf"; zg: "ck.zg"; zh: "ck.zh"; zi: "ck.zi"; zj: "ck.zj"; zk: "ck.zk"; zl: "ck.zl"; zm: "ck.zm"; zn: "ck.zn"; zo: "ck.zo"; zp: "ck.zp"; zq: "ck.zq"; zr: "ck.zr"; zs: "ck.zs"; zt: "ck.zt"; zu: "ck.zu"; zv: "ck.zv"; zw: "ck.zw"; zx: "ck.zx"; zy: "ck.zy"; zz: "ck.zz"; }; cl: { aa: "cl.aa"; ab: "cl.ab"; ac: "cl.ac"; ad: "cl.ad"; ae: "cl.ae"; af: "cl.af"; ag: "cl.ag"; ah: "cl.ah"; ai: "cl.ai"; aj: "cl.aj"; ak: "cl.ak"; al: "cl.al"; am: "cl.am"; an: "cl.an"; ao: "cl.ao"; ap: "cl.ap"; aq: "cl.aq"; ar: "cl.ar"; as: "cl.as"; at: "cl.at"; au: "cl.au"; av: "cl.av"; aw: "cl.aw"; ax: "cl.ax"; ay: "cl.ay"; az: "cl.az"; ba: "cl.ba"; bb: "cl.bb"; bc: "cl.bc"; bd: "cl.bd"; be: "cl.be"; bf: "cl.bf"; bg: "cl.bg"; bh: "cl.bh"; bi: "cl.bi"; bj: "cl.bj"; bk: "cl.bk"; bl: "cl.bl"; bm: "cl.bm"; bn: "cl.bn"; bo: "cl.bo"; bp: "cl.bp"; bq: "cl.bq"; br: "cl.br"; bs: "cl.bs"; bt: "cl.bt"; bu: "cl.bu"; bv: "cl.bv"; bw: "cl.bw"; bx: "cl.bx"; by: "cl.by"; bz: "cl.bz"; ca: "cl.ca"; cb: "cl.cb"; cc: "cl.cc"; cd: "cl.cd"; ce: "cl.ce"; cf: "cl.cf"; cg: "cl.cg"; ch: "cl.ch"; ci: "cl.ci"; cj: "cl.cj"; ck: "cl.ck"; cl: "cl.cl"; cm: "cl.cm"; cn: "cl.cn"; co: "cl.co"; cp: "cl.cp"; cq: "cl.cq"; cr: "cl.cr"; cs: "cl.cs"; ct: "cl.ct"; cu: "cl.cu"; cv: "cl.cv"; cw: "cl.cw"; cx: "cl.cx"; cy: "cl.cy"; cz: "cl.cz"; da: "cl.da"; db: "cl.db"; dc: "cl.dc"; dd: "cl.dd"; de: "cl.de"; df: "cl.df"; dg: "cl.dg"; dh: "cl.dh"; di: "cl.di"; dj: "cl.dj"; dk: "cl.dk"; dl: "cl.dl"; dm: "cl.dm"; dn: "cl.dn"; do: "cl.do"; dp: "cl.dp"; dq: "cl.dq"; dr: "cl.dr"; ds: "cl.ds"; dt: "cl.dt"; du: "cl.du"; dv: "cl.dv"; dw: "cl.dw"; dx: "cl.dx"; dy: "cl.dy"; dz: "cl.dz"; ea: "cl.ea"; eb: "cl.eb"; ec: "cl.ec"; ed: "cl.ed"; ee: "cl.ee"; ef: "cl.ef"; eg: "cl.eg"; eh: "cl.eh"; ei: "cl.ei"; ej: "cl.ej"; ek: "cl.ek"; el: "cl.el"; em: "cl.em"; en: "cl.en"; eo: "cl.eo"; ep: "cl.ep"; eq: "cl.eq"; er: "cl.er"; es: "cl.es"; et: "cl.et"; eu: "cl.eu"; ev: "cl.ev"; ew: "cl.ew"; ex: "cl.ex"; ey: "cl.ey"; ez: "cl.ez"; fa: "cl.fa"; fb: "cl.fb"; fc: "cl.fc"; fd: "cl.fd"; fe: "cl.fe"; ff: "cl.ff"; fg: "cl.fg"; fh: "cl.fh"; fi: "cl.fi"; fj: "cl.fj"; fk: "cl.fk"; fl: "cl.fl"; fm: "cl.fm"; fn: "cl.fn"; fo: "cl.fo"; fp: "cl.fp"; fq: "cl.fq"; fr: "cl.fr"; fs: "cl.fs"; ft: "cl.ft"; fu: "cl.fu"; fv: "cl.fv"; fw: "cl.fw"; fx: "cl.fx"; fy: "cl.fy"; fz: "cl.fz"; ga: "cl.ga"; gb: "cl.gb"; gc: "cl.gc"; gd: "cl.gd"; ge: "cl.ge"; gf: "cl.gf"; gg: "cl.gg"; gh: "cl.gh"; gi: "cl.gi"; gj: "cl.gj"; gk: "cl.gk"; gl: "cl.gl"; gm: "cl.gm"; gn: "cl.gn"; go: "cl.go"; gp: "cl.gp"; gq: "cl.gq"; gr: "cl.gr"; gs: "cl.gs"; gt: "cl.gt"; gu: "cl.gu"; gv: "cl.gv"; gw: "cl.gw"; gx: "cl.gx"; gy: "cl.gy"; gz: "cl.gz"; ha: "cl.ha"; hb: "cl.hb"; hc: "cl.hc"; hd: "cl.hd"; he: "cl.he"; hf: "cl.hf"; hg: "cl.hg"; hh: "cl.hh"; hi: "cl.hi"; hj: "cl.hj"; hk: "cl.hk"; hl: "cl.hl"; hm: "cl.hm"; hn: "cl.hn"; ho: "cl.ho"; hp: "cl.hp"; hq: "cl.hq"; hr: "cl.hr"; hs: "cl.hs"; ht: "cl.ht"; hu: "cl.hu"; hv: "cl.hv"; hw: "cl.hw"; hx: "cl.hx"; hy: "cl.hy"; hz: "cl.hz"; ia: "cl.ia"; ib: "cl.ib"; ic: "cl.ic"; id: "cl.id"; ie: "cl.ie"; if: "cl.if"; ig: "cl.ig"; ih: "cl.ih"; ii: "cl.ii"; ij: "cl.ij"; ik: "cl.ik"; il: "cl.il"; im: "cl.im"; in: "cl.in"; io: "cl.io"; ip: "cl.ip"; iq: "cl.iq"; ir: "cl.ir"; is: "cl.is"; it: "cl.it"; iu: "cl.iu"; iv: "cl.iv"; iw: "cl.iw"; ix: "cl.ix"; iy: "cl.iy"; iz: "cl.iz"; ja: "cl.ja"; jb: "cl.jb"; jc: "cl.jc"; jd: "cl.jd"; je: "cl.je"; jf: "cl.jf"; jg: "cl.jg"; jh: "cl.jh"; ji: "cl.ji"; jj: "cl.jj"; jk: "cl.jk"; jl: "cl.jl"; jm: "cl.jm"; jn: "cl.jn"; jo: "cl.jo"; jp: "cl.jp"; jq: "cl.jq"; jr: "cl.jr"; js: "cl.js"; jt: "cl.jt"; ju: "cl.ju"; jv: "cl.jv"; jw: "cl.jw"; jx: "cl.jx"; jy: "cl.jy"; jz: "cl.jz"; ka: "cl.ka"; kb: "cl.kb"; kc: "cl.kc"; kd: "cl.kd"; ke: "cl.ke"; kf: "cl.kf"; kg: "cl.kg"; kh: "cl.kh"; ki: "cl.ki"; kj: "cl.kj"; kk: "cl.kk"; kl: "cl.kl"; km: "cl.km"; kn: "cl.kn"; ko: "cl.ko"; kp: "cl.kp"; kq: "cl.kq"; kr: "cl.kr"; ks: "cl.ks"; kt: "cl.kt"; ku: "cl.ku"; kv: "cl.kv"; kw: "cl.kw"; kx: "cl.kx"; ky: "cl.ky"; kz: "cl.kz"; la: "cl.la"; lb: "cl.lb"; lc: "cl.lc"; ld: "cl.ld"; le: "cl.le"; lf: "cl.lf"; lg: "cl.lg"; lh: "cl.lh"; li: "cl.li"; lj: "cl.lj"; lk: "cl.lk"; ll: "cl.ll"; lm: "cl.lm"; ln: "cl.ln"; lo: "cl.lo"; lp: "cl.lp"; lq: "cl.lq"; lr: "cl.lr"; ls: "cl.ls"; lt: "cl.lt"; lu: "cl.lu"; lv: "cl.lv"; lw: "cl.lw"; lx: "cl.lx"; ly: "cl.ly"; lz: "cl.lz"; ma: "cl.ma"; mb: "cl.mb"; mc: "cl.mc"; md: "cl.md"; me: "cl.me"; mf: "cl.mf"; mg: "cl.mg"; mh: "cl.mh"; mi: "cl.mi"; mj: "cl.mj"; mk: "cl.mk"; ml: "cl.ml"; mm: "cl.mm"; mn: "cl.mn"; mo: "cl.mo"; mp: "cl.mp"; mq: "cl.mq"; mr: "cl.mr"; ms: "cl.ms"; mt: "cl.mt"; mu: "cl.mu"; mv: "cl.mv"; mw: "cl.mw"; mx: "cl.mx"; my: "cl.my"; mz: "cl.mz"; na: "cl.na"; nb: "cl.nb"; nc: "cl.nc"; nd: "cl.nd"; ne: "cl.ne"; nf: "cl.nf"; ng: "cl.ng"; nh: "cl.nh"; ni: "cl.ni"; nj: "cl.nj"; nk: "cl.nk"; nl: "cl.nl"; nm: "cl.nm"; nn: "cl.nn"; no: "cl.no"; np: "cl.np"; nq: "cl.nq"; nr: "cl.nr"; ns: "cl.ns"; nt: "cl.nt"; nu: "cl.nu"; nv: "cl.nv"; nw: "cl.nw"; nx: "cl.nx"; ny: "cl.ny"; nz: "cl.nz"; oa: "cl.oa"; ob: "cl.ob"; oc: "cl.oc"; od: "cl.od"; oe: "cl.oe"; of: "cl.of"; og: "cl.og"; oh: "cl.oh"; oi: "cl.oi"; oj: "cl.oj"; ok: "cl.ok"; ol: "cl.ol"; om: "cl.om"; on: "cl.on"; oo: "cl.oo"; op: "cl.op"; oq: "cl.oq"; or: "cl.or"; os: "cl.os"; ot: "cl.ot"; ou: "cl.ou"; ov: "cl.ov"; ow: "cl.ow"; ox: "cl.ox"; oy: "cl.oy"; oz: "cl.oz"; pa: "cl.pa"; pb: "cl.pb"; pc: "cl.pc"; pd: "cl.pd"; pe: "cl.pe"; pf: "cl.pf"; pg: "cl.pg"; ph: "cl.ph"; pi: "cl.pi"; pj: "cl.pj"; pk: "cl.pk"; pl: "cl.pl"; pm: "cl.pm"; pn: "cl.pn"; po: "cl.po"; pp: "cl.pp"; pq: "cl.pq"; pr: "cl.pr"; ps: "cl.ps"; pt: "cl.pt"; pu: "cl.pu"; pv: "cl.pv"; pw: "cl.pw"; px: "cl.px"; py: "cl.py"; pz: "cl.pz"; qa: "cl.qa"; qb: "cl.qb"; qc: "cl.qc"; qd: "cl.qd"; qe: "cl.qe"; qf: "cl.qf"; qg: "cl.qg"; qh: "cl.qh"; qi: "cl.qi"; qj: "cl.qj"; qk: "cl.qk"; ql: "cl.ql"; qm: "cl.qm"; qn: "cl.qn"; qo: "cl.qo"; qp: "cl.qp"; qq: "cl.qq"; qr: "cl.qr"; qs: "cl.qs"; qt: "cl.qt"; qu: "cl.qu"; qv: "cl.qv"; qw: "cl.qw"; qx: "cl.qx"; qy: "cl.qy"; qz: "cl.qz"; ra: "cl.ra"; rb: "cl.rb"; rc: "cl.rc"; rd: "cl.rd"; re: "cl.re"; rf: "cl.rf"; rg: "cl.rg"; rh: "cl.rh"; ri: "cl.ri"; rj: "cl.rj"; rk: "cl.rk"; rl: "cl.rl"; rm: "cl.rm"; rn: "cl.rn"; ro: "cl.ro"; rp: "cl.rp"; rq: "cl.rq"; rr: "cl.rr"; rs: "cl.rs"; rt: "cl.rt"; ru: "cl.ru"; rv: "cl.rv"; rw: "cl.rw"; rx: "cl.rx"; ry: "cl.ry"; rz: "cl.rz"; sa: "cl.sa"; sb: "cl.sb"; sc: "cl.sc"; sd: "cl.sd"; se: "cl.se"; sf: "cl.sf"; sg: "cl.sg"; sh: "cl.sh"; si: "cl.si"; sj: "cl.sj"; sk: "cl.sk"; sl: "cl.sl"; sm: "cl.sm"; sn: "cl.sn"; so: "cl.so"; sp: "cl.sp"; sq: "cl.sq"; sr: "cl.sr"; ss: "cl.ss"; st: "cl.st"; su: "cl.su"; sv: "cl.sv"; sw: "cl.sw"; sx: "cl.sx"; sy: "cl.sy"; sz: "cl.sz"; ta: "cl.ta"; tb: "cl.tb"; tc: "cl.tc"; td: "cl.td"; te: "cl.te"; tf: "cl.tf"; tg: "cl.tg"; th: "cl.th"; ti: "cl.ti"; tj: "cl.tj"; tk: "cl.tk"; tl: "cl.tl"; tm: "cl.tm"; tn: "cl.tn"; to: "cl.to"; tp: "cl.tp"; tq: "cl.tq"; tr: "cl.tr"; ts: "cl.ts"; tt: "cl.tt"; tu: "cl.tu"; tv: "cl.tv"; tw: "cl.tw"; tx: "cl.tx"; ty: "cl.ty"; tz: "cl.tz"; ua: "cl.ua"; ub: "cl.ub"; uc: "cl.uc"; ud: "cl.ud"; ue: "cl.ue"; uf: "cl.uf"; ug: "cl.ug"; uh: "cl.uh"; ui: "cl.ui"; uj: "cl.uj"; uk: "cl.uk"; ul: "cl.ul"; um: "cl.um"; un: "cl.un"; uo: "cl.uo"; up: "cl.up"; uq: "cl.uq"; ur: "cl.ur"; us: "cl.us"; ut: "cl.ut"; uu: "cl.uu"; uv: "cl.uv"; uw: "cl.uw"; ux: "cl.ux"; uy: "cl.uy"; uz: "cl.uz"; va: "cl.va"; vb: "cl.vb"; vc: "cl.vc"; vd: "cl.vd"; ve: "cl.ve"; vf: "cl.vf"; vg: "cl.vg"; vh: "cl.vh"; vi: "cl.vi"; vj: "cl.vj"; vk: "cl.vk"; vl: "cl.vl"; vm: "cl.vm"; vn: "cl.vn"; vo: "cl.vo"; vp: "cl.vp"; vq: "cl.vq"; vr: "cl.vr"; vs: "cl.vs"; vt: "cl.vt"; vu: "cl.vu"; vv: "cl.vv"; vw: "cl.vw"; vx: "cl.vx"; vy: "cl.vy"; vz: "cl.vz"; wa: "cl.wa"; wb: "cl.wb"; wc: "cl.wc"; wd: "cl.wd"; we: "cl.we"; wf: "cl.wf"; wg: "cl.wg"; wh: "cl.wh"; wi: "cl.wi"; wj: "cl.wj"; wk: "cl.wk"; wl: "cl.wl"; wm: "cl.wm"; wn: "cl.wn"; wo: "cl.wo"; wp: "cl.wp"; wq: "cl.wq"; wr: "cl.wr"; ws: "cl.ws"; wt: "cl.wt"; wu: "cl.wu"; wv: "cl.wv"; ww: "cl.ww"; wx: "cl.wx"; wy: "cl.wy"; wz: "cl.wz"; xa: "cl.xa"; xb: "cl.xb"; xc: "cl.xc"; xd: "cl.xd"; xe: "cl.xe"; xf: "cl.xf"; xg: "cl.xg"; xh: "cl.xh"; xi: "cl.xi"; xj: "cl.xj"; xk: "cl.xk"; xl: "cl.xl"; xm: "cl.xm"; xn: "cl.xn"; xo: "cl.xo"; xp: "cl.xp"; xq: "cl.xq"; xr: "cl.xr"; xs: "cl.xs"; xt: "cl.xt"; xu: "cl.xu"; xv: "cl.xv"; xw: "cl.xw"; xx: "cl.xx"; xy: "cl.xy"; xz: "cl.xz"; ya: "cl.ya"; yb: "cl.yb"; yc: "cl.yc"; yd: "cl.yd"; ye: "cl.ye"; yf: "cl.yf"; yg: "cl.yg"; yh: "cl.yh"; yi: "cl.yi"; yj: "cl.yj"; yk: "cl.yk"; yl: "cl.yl"; ym: "cl.ym"; yn: "cl.yn"; yo: "cl.yo"; yp: "cl.yp"; yq: "cl.yq"; yr: "cl.yr"; ys: "cl.ys"; yt: "cl.yt"; yu: "cl.yu"; yv: "cl.yv"; yw: "cl.yw"; yx: "cl.yx"; yy: "cl.yy"; yz: "cl.yz"; za: "cl.za"; zb: "cl.zb"; zc: "cl.zc"; zd: "cl.zd"; ze: "cl.ze"; zf: "cl.zf"; zg: "cl.zg"; zh: "cl.zh"; zi: "cl.zi"; zj: "cl.zj"; zk: "cl.zk"; zl: "cl.zl"; zm: "cl.zm"; zn: "cl.zn"; zo: "cl.zo"; zp: "cl.zp"; zq: "cl.zq"; zr: "cl.zr"; zs: "cl.zs"; zt: "cl.zt"; zu: "cl.zu"; zv: "cl.zv"; zw: "cl.zw"; zx: "cl.zx"; zy: "cl.zy"; zz: "cl.zz"; }; cm: { aa: "cm.aa"; ab: "cm.ab"; ac: "cm.ac"; ad: "cm.ad"; ae: "cm.ae"; af: "cm.af"; ag: "cm.ag"; ah: "cm.ah"; ai: "cm.ai"; aj: "cm.aj"; ak: "cm.ak"; al: "cm.al"; am: "cm.am"; an: "cm.an"; ao: "cm.ao"; ap: "cm.ap"; aq: "cm.aq"; ar: "cm.ar"; as: "cm.as"; at: "cm.at"; au: "cm.au"; av: "cm.av"; aw: "cm.aw"; ax: "cm.ax"; ay: "cm.ay"; az: "cm.az"; ba: "cm.ba"; bb: "cm.bb"; bc: "cm.bc"; bd: "cm.bd"; be: "cm.be"; bf: "cm.bf"; bg: "cm.bg"; bh: "cm.bh"; bi: "cm.bi"; bj: "cm.bj"; bk: "cm.bk"; bl: "cm.bl"; bm: "cm.bm"; bn: "cm.bn"; bo: "cm.bo"; bp: "cm.bp"; bq: "cm.bq"; br: "cm.br"; bs: "cm.bs"; bt: "cm.bt"; bu: "cm.bu"; bv: "cm.bv"; bw: "cm.bw"; bx: "cm.bx"; by: "cm.by"; bz: "cm.bz"; ca: "cm.ca"; cb: "cm.cb"; cc: "cm.cc"; cd: "cm.cd"; ce: "cm.ce"; cf: "cm.cf"; cg: "cm.cg"; ch: "cm.ch"; ci: "cm.ci"; cj: "cm.cj"; ck: "cm.ck"; cl: "cm.cl"; cm: "cm.cm"; cn: "cm.cn"; co: "cm.co"; cp: "cm.cp"; cq: "cm.cq"; cr: "cm.cr"; cs: "cm.cs"; ct: "cm.ct"; cu: "cm.cu"; cv: "cm.cv"; cw: "cm.cw"; cx: "cm.cx"; cy: "cm.cy"; cz: "cm.cz"; da: "cm.da"; db: "cm.db"; dc: "cm.dc"; dd: "cm.dd"; de: "cm.de"; df: "cm.df"; dg: "cm.dg"; dh: "cm.dh"; di: "cm.di"; dj: "cm.dj"; dk: "cm.dk"; dl: "cm.dl"; dm: "cm.dm"; dn: "cm.dn"; do: "cm.do"; dp: "cm.dp"; dq: "cm.dq"; dr: "cm.dr"; ds: "cm.ds"; dt: "cm.dt"; du: "cm.du"; dv: "cm.dv"; dw: "cm.dw"; dx: "cm.dx"; dy: "cm.dy"; dz: "cm.dz"; ea: "cm.ea"; eb: "cm.eb"; ec: "cm.ec"; ed: "cm.ed"; ee: "cm.ee"; ef: "cm.ef"; eg: "cm.eg"; eh: "cm.eh"; ei: "cm.ei"; ej: "cm.ej"; ek: "cm.ek"; el: "cm.el"; em: "cm.em"; en: "cm.en"; eo: "cm.eo"; ep: "cm.ep"; eq: "cm.eq"; er: "cm.er"; es: "cm.es"; et: "cm.et"; eu: "cm.eu"; ev: "cm.ev"; ew: "cm.ew"; ex: "cm.ex"; ey: "cm.ey"; ez: "cm.ez"; fa: "cm.fa"; fb: "cm.fb"; fc: "cm.fc"; fd: "cm.fd"; fe: "cm.fe"; ff: "cm.ff"; fg: "cm.fg"; fh: "cm.fh"; fi: "cm.fi"; fj: "cm.fj"; fk: "cm.fk"; fl: "cm.fl"; fm: "cm.fm"; fn: "cm.fn"; fo: "cm.fo"; fp: "cm.fp"; fq: "cm.fq"; fr: "cm.fr"; fs: "cm.fs"; ft: "cm.ft"; fu: "cm.fu"; fv: "cm.fv"; fw: "cm.fw"; fx: "cm.fx"; fy: "cm.fy"; fz: "cm.fz"; ga: "cm.ga"; gb: "cm.gb"; gc: "cm.gc"; gd: "cm.gd"; ge: "cm.ge"; gf: "cm.gf"; gg: "cm.gg"; gh: "cm.gh"; gi: "cm.gi"; gj: "cm.gj"; gk: "cm.gk"; gl: "cm.gl"; gm: "cm.gm"; gn: "cm.gn"; go: "cm.go"; gp: "cm.gp"; gq: "cm.gq"; gr: "cm.gr"; gs: "cm.gs"; gt: "cm.gt"; gu: "cm.gu"; gv: "cm.gv"; gw: "cm.gw"; gx: "cm.gx"; gy: "cm.gy"; gz: "cm.gz"; ha: "cm.ha"; hb: "cm.hb"; hc: "cm.hc"; hd: "cm.hd"; he: "cm.he"; hf: "cm.hf"; hg: "cm.hg"; hh: "cm.hh"; hi: "cm.hi"; hj: "cm.hj"; hk: "cm.hk"; hl: "cm.hl"; hm: "cm.hm"; hn: "cm.hn"; ho: "cm.ho"; hp: "cm.hp"; hq: "cm.hq"; hr: "cm.hr"; hs: "cm.hs"; ht: "cm.ht"; hu: "cm.hu"; hv: "cm.hv"; hw: "cm.hw"; hx: "cm.hx"; hy: "cm.hy"; hz: "cm.hz"; ia: "cm.ia"; ib: "cm.ib"; ic: "cm.ic"; id: "cm.id"; ie: "cm.ie"; if: "cm.if"; ig: "cm.ig"; ih: "cm.ih"; ii: "cm.ii"; ij: "cm.ij"; ik: "cm.ik"; il: "cm.il"; im: "cm.im"; in: "cm.in"; io: "cm.io"; ip: "cm.ip"; iq: "cm.iq"; ir: "cm.ir"; is: "cm.is"; it: "cm.it"; iu: "cm.iu"; iv: "cm.iv"; iw: "cm.iw"; ix: "cm.ix"; iy: "cm.iy"; iz: "cm.iz"; ja: "cm.ja"; jb: "cm.jb"; jc: "cm.jc"; jd: "cm.jd"; je: "cm.je"; jf: "cm.jf"; jg: "cm.jg"; jh: "cm.jh"; ji: "cm.ji"; jj: "cm.jj"; jk: "cm.jk"; jl: "cm.jl"; jm: "cm.jm"; jn: "cm.jn"; jo: "cm.jo"; jp: "cm.jp"; jq: "cm.jq"; jr: "cm.jr"; js: "cm.js"; jt: "cm.jt"; ju: "cm.ju"; jv: "cm.jv"; jw: "cm.jw"; jx: "cm.jx"; jy: "cm.jy"; jz: "cm.jz"; ka: "cm.ka"; kb: "cm.kb"; kc: "cm.kc"; kd: "cm.kd"; ke: "cm.ke"; kf: "cm.kf"; kg: "cm.kg"; kh: "cm.kh"; ki: "cm.ki"; kj: "cm.kj"; kk: "cm.kk"; kl: "cm.kl"; km: "cm.km"; kn: "cm.kn"; ko: "cm.ko"; kp: "cm.kp"; kq: "cm.kq"; kr: "cm.kr"; ks: "cm.ks"; kt: "cm.kt"; ku: "cm.ku"; kv: "cm.kv"; kw: "cm.kw"; kx: "cm.kx"; ky: "cm.ky"; kz: "cm.kz"; la: "cm.la"; lb: "cm.lb"; lc: "cm.lc"; ld: "cm.ld"; le: "cm.le"; lf: "cm.lf"; lg: "cm.lg"; lh: "cm.lh"; li: "cm.li"; lj: "cm.lj"; lk: "cm.lk"; ll: "cm.ll"; lm: "cm.lm"; ln: "cm.ln"; lo: "cm.lo"; lp: "cm.lp"; lq: "cm.lq"; lr: "cm.lr"; ls: "cm.ls"; lt: "cm.lt"; lu: "cm.lu"; lv: "cm.lv"; lw: "cm.lw"; lx: "cm.lx"; ly: "cm.ly"; lz: "cm.lz"; ma: "cm.ma"; mb: "cm.mb"; mc: "cm.mc"; md: "cm.md"; me: "cm.me"; mf: "cm.mf"; mg: "cm.mg"; mh: "cm.mh"; mi: "cm.mi"; mj: "cm.mj"; mk: "cm.mk"; ml: "cm.ml"; mm: "cm.mm"; mn: "cm.mn"; mo: "cm.mo"; mp: "cm.mp"; mq: "cm.mq"; mr: "cm.mr"; ms: "cm.ms"; mt: "cm.mt"; mu: "cm.mu"; mv: "cm.mv"; mw: "cm.mw"; mx: "cm.mx"; my: "cm.my"; mz: "cm.mz"; na: "cm.na"; nb: "cm.nb"; nc: "cm.nc"; nd: "cm.nd"; ne: "cm.ne"; nf: "cm.nf"; ng: "cm.ng"; nh: "cm.nh"; ni: "cm.ni"; nj: "cm.nj"; nk: "cm.nk"; nl: "cm.nl"; nm: "cm.nm"; nn: "cm.nn"; no: "cm.no"; np: "cm.np"; nq: "cm.nq"; nr: "cm.nr"; ns: "cm.ns"; nt: "cm.nt"; nu: "cm.nu"; nv: "cm.nv"; nw: "cm.nw"; nx: "cm.nx"; ny: "cm.ny"; nz: "cm.nz"; oa: "cm.oa"; ob: "cm.ob"; oc: "cm.oc"; od: "cm.od"; oe: "cm.oe"; of: "cm.of"; og: "cm.og"; oh: "cm.oh"; oi: "cm.oi"; oj: "cm.oj"; ok: "cm.ok"; ol: "cm.ol"; om: "cm.om"; on: "cm.on"; oo: "cm.oo"; op: "cm.op"; oq: "cm.oq"; or: "cm.or"; os: "cm.os"; ot: "cm.ot"; ou: "cm.ou"; ov: "cm.ov"; ow: "cm.ow"; ox: "cm.ox"; oy: "cm.oy"; oz: "cm.oz"; pa: "cm.pa"; pb: "cm.pb"; pc: "cm.pc"; pd: "cm.pd"; pe: "cm.pe"; pf: "cm.pf"; pg: "cm.pg"; ph: "cm.ph"; pi: "cm.pi"; pj: "cm.pj"; pk: "cm.pk"; pl: "cm.pl"; pm: "cm.pm"; pn: "cm.pn"; po: "cm.po"; pp: "cm.pp"; pq: "cm.pq"; pr: "cm.pr"; ps: "cm.ps"; pt: "cm.pt"; pu: "cm.pu"; pv: "cm.pv"; pw: "cm.pw"; px: "cm.px"; py: "cm.py"; pz: "cm.pz"; qa: "cm.qa"; qb: "cm.qb"; qc: "cm.qc"; qd: "cm.qd"; qe: "cm.qe"; qf: "cm.qf"; qg: "cm.qg"; qh: "cm.qh"; qi: "cm.qi"; qj: "cm.qj"; qk: "cm.qk"; ql: "cm.ql"; qm: "cm.qm"; qn: "cm.qn"; qo: "cm.qo"; qp: "cm.qp"; qq: "cm.qq"; qr: "cm.qr"; qs: "cm.qs"; qt: "cm.qt"; qu: "cm.qu"; qv: "cm.qv"; qw: "cm.qw"; qx: "cm.qx"; qy: "cm.qy"; qz: "cm.qz"; ra: "cm.ra"; rb: "cm.rb"; rc: "cm.rc"; rd: "cm.rd"; re: "cm.re"; rf: "cm.rf"; rg: "cm.rg"; rh: "cm.rh"; ri: "cm.ri"; rj: "cm.rj"; rk: "cm.rk"; rl: "cm.rl"; rm: "cm.rm"; rn: "cm.rn"; ro: "cm.ro"; rp: "cm.rp"; rq: "cm.rq"; rr: "cm.rr"; rs: "cm.rs"; rt: "cm.rt"; ru: "cm.ru"; rv: "cm.rv"; rw: "cm.rw"; rx: "cm.rx"; ry: "cm.ry"; rz: "cm.rz"; sa: "cm.sa"; sb: "cm.sb"; sc: "cm.sc"; sd: "cm.sd"; se: "cm.se"; sf: "cm.sf"; sg: "cm.sg"; sh: "cm.sh"; si: "cm.si"; sj: "cm.sj"; sk: "cm.sk"; sl: "cm.sl"; sm: "cm.sm"; sn: "cm.sn"; so: "cm.so"; sp: "cm.sp"; sq: "cm.sq"; sr: "cm.sr"; ss: "cm.ss"; st: "cm.st"; su: "cm.su"; sv: "cm.sv"; sw: "cm.sw"; sx: "cm.sx"; sy: "cm.sy"; sz: "cm.sz"; ta: "cm.ta"; tb: "cm.tb"; tc: "cm.tc"; td: "cm.td"; te: "cm.te"; tf: "cm.tf"; tg: "cm.tg"; th: "cm.th"; ti: "cm.ti"; tj: "cm.tj"; tk: "cm.tk"; tl: "cm.tl"; tm: "cm.tm"; tn: "cm.tn"; to: "cm.to"; tp: "cm.tp"; tq: "cm.tq"; tr: "cm.tr"; ts: "cm.ts"; tt: "cm.tt"; tu: "cm.tu"; tv: "cm.tv"; tw: "cm.tw"; tx: "cm.tx"; ty: "cm.ty"; tz: "cm.tz"; ua: "cm.ua"; ub: "cm.ub"; uc: "cm.uc"; ud: "cm.ud"; ue: "cm.ue"; uf: "cm.uf"; ug: "cm.ug"; uh: "cm.uh"; ui: "cm.ui"; uj: "cm.uj"; uk: "cm.uk"; ul: "cm.ul"; um: "cm.um"; un: "cm.un"; uo: "cm.uo"; up: "cm.up"; uq: "cm.uq"; ur: "cm.ur"; us: "cm.us"; ut: "cm.ut"; uu: "cm.uu"; uv: "cm.uv"; uw: "cm.uw"; ux: "cm.ux"; uy: "cm.uy"; uz: "cm.uz"; va: "cm.va"; vb: "cm.vb"; vc: "cm.vc"; vd: "cm.vd"; ve: "cm.ve"; vf: "cm.vf"; vg: "cm.vg"; vh: "cm.vh"; vi: "cm.vi"; vj: "cm.vj"; vk: "cm.vk"; vl: "cm.vl"; vm: "cm.vm"; vn: "cm.vn"; vo: "cm.vo"; vp: "cm.vp"; vq: "cm.vq"; vr: "cm.vr"; vs: "cm.vs"; vt: "cm.vt"; vu: "cm.vu"; vv: "cm.vv"; vw: "cm.vw"; vx: "cm.vx"; vy: "cm.vy"; vz: "cm.vz"; wa: "cm.wa"; wb: "cm.wb"; wc: "cm.wc"; wd: "cm.wd"; we: "cm.we"; wf: "cm.wf"; wg: "cm.wg"; wh: "cm.wh"; wi: "cm.wi"; wj: "cm.wj"; wk: "cm.wk"; wl: "cm.wl"; wm: "cm.wm"; wn: "cm.wn"; wo: "cm.wo"; wp: "cm.wp"; wq: "cm.wq"; wr: "cm.wr"; ws: "cm.ws"; wt: "cm.wt"; wu: "cm.wu"; wv: "cm.wv"; ww: "cm.ww"; wx: "cm.wx"; wy: "cm.wy"; wz: "cm.wz"; xa: "cm.xa"; xb: "cm.xb"; xc: "cm.xc"; xd: "cm.xd"; xe: "cm.xe"; xf: "cm.xf"; xg: "cm.xg"; xh: "cm.xh"; xi: "cm.xi"; xj: "cm.xj"; xk: "cm.xk"; xl: "cm.xl"; xm: "cm.xm"; xn: "cm.xn"; xo: "cm.xo"; xp: "cm.xp"; xq: "cm.xq"; xr: "cm.xr"; xs: "cm.xs"; xt: "cm.xt"; xu: "cm.xu"; xv: "cm.xv"; xw: "cm.xw"; xx: "cm.xx"; xy: "cm.xy"; xz: "cm.xz"; ya: "cm.ya"; yb: "cm.yb"; yc: "cm.yc"; yd: "cm.yd"; ye: "cm.ye"; yf: "cm.yf"; yg: "cm.yg"; yh: "cm.yh"; yi: "cm.yi"; yj: "cm.yj"; yk: "cm.yk"; yl: "cm.yl"; ym: "cm.ym"; yn: "cm.yn"; yo: "cm.yo"; yp: "cm.yp"; yq: "cm.yq"; yr: "cm.yr"; ys: "cm.ys"; yt: "cm.yt"; yu: "cm.yu"; yv: "cm.yv"; yw: "cm.yw"; yx: "cm.yx"; yy: "cm.yy"; yz: "cm.yz"; za: "cm.za"; zb: "cm.zb"; zc: "cm.zc"; zd: "cm.zd"; ze: "cm.ze"; zf: "cm.zf"; zg: "cm.zg"; zh: "cm.zh"; zi: "cm.zi"; zj: "cm.zj"; zk: "cm.zk"; zl: "cm.zl"; zm: "cm.zm"; zn: "cm.zn"; zo: "cm.zo"; zp: "cm.zp"; zq: "cm.zq"; zr: "cm.zr"; zs: "cm.zs"; zt: "cm.zt"; zu: "cm.zu"; zv: "cm.zv"; zw: "cm.zw"; zx: "cm.zx"; zy: "cm.zy"; zz: "cm.zz"; }; cn: { aa: "cn.aa"; ab: "cn.ab"; ac: "cn.ac"; ad: "cn.ad"; ae: "cn.ae"; af: "cn.af"; ag: "cn.ag"; ah: "cn.ah"; ai: "cn.ai"; aj: "cn.aj"; ak: "cn.ak"; al: "cn.al"; am: "cn.am"; an: "cn.an"; ao: "cn.ao"; ap: "cn.ap"; aq: "cn.aq"; ar: "cn.ar"; as: "cn.as"; at: "cn.at"; au: "cn.au"; av: "cn.av"; aw: "cn.aw"; ax: "cn.ax"; ay: "cn.ay"; az: "cn.az"; ba: "cn.ba"; bb: "cn.bb"; bc: "cn.bc"; bd: "cn.bd"; be: "cn.be"; bf: "cn.bf"; bg: "cn.bg"; bh: "cn.bh"; bi: "cn.bi"; bj: "cn.bj"; bk: "cn.bk"; bl: "cn.bl"; bm: "cn.bm"; bn: "cn.bn"; bo: "cn.bo"; bp: "cn.bp"; bq: "cn.bq"; br: "cn.br"; bs: "cn.bs"; bt: "cn.bt"; bu: "cn.bu"; bv: "cn.bv"; bw: "cn.bw"; bx: "cn.bx"; by: "cn.by"; bz: "cn.bz"; ca: "cn.ca"; cb: "cn.cb"; cc: "cn.cc"; cd: "cn.cd"; ce: "cn.ce"; cf: "cn.cf"; cg: "cn.cg"; ch: "cn.ch"; ci: "cn.ci"; cj: "cn.cj"; ck: "cn.ck"; cl: "cn.cl"; cm: "cn.cm"; cn: "cn.cn"; co: "cn.co"; cp: "cn.cp"; cq: "cn.cq"; cr: "cn.cr"; cs: "cn.cs"; ct: "cn.ct"; cu: "cn.cu"; cv: "cn.cv"; cw: "cn.cw"; cx: "cn.cx"; cy: "cn.cy"; cz: "cn.cz"; da: "cn.da"; db: "cn.db"; dc: "cn.dc"; dd: "cn.dd"; de: "cn.de"; df: "cn.df"; dg: "cn.dg"; dh: "cn.dh"; di: "cn.di"; dj: "cn.dj"; dk: "cn.dk"; dl: "cn.dl"; dm: "cn.dm"; dn: "cn.dn"; do: "cn.do"; dp: "cn.dp"; dq: "cn.dq"; dr: "cn.dr"; ds: "cn.ds"; dt: "cn.dt"; du: "cn.du"; dv: "cn.dv"; dw: "cn.dw"; dx: "cn.dx"; dy: "cn.dy"; dz: "cn.dz"; ea: "cn.ea"; eb: "cn.eb"; ec: "cn.ec"; ed: "cn.ed"; ee: "cn.ee"; ef: "cn.ef"; eg: "cn.eg"; eh: "cn.eh"; ei: "cn.ei"; ej: "cn.ej"; ek: "cn.ek"; el: "cn.el"; em: "cn.em"; en: "cn.en"; eo: "cn.eo"; ep: "cn.ep"; eq: "cn.eq"; er: "cn.er"; es: "cn.es"; et: "cn.et"; eu: "cn.eu"; ev: "cn.ev"; ew: "cn.ew"; ex: "cn.ex"; ey: "cn.ey"; ez: "cn.ez"; fa: "cn.fa"; fb: "cn.fb"; fc: "cn.fc"; fd: "cn.fd"; fe: "cn.fe"; ff: "cn.ff"; fg: "cn.fg"; fh: "cn.fh"; fi: "cn.fi"; fj: "cn.fj"; fk: "cn.fk"; fl: "cn.fl"; fm: "cn.fm"; fn: "cn.fn"; fo: "cn.fo"; fp: "cn.fp"; fq: "cn.fq"; fr: "cn.fr"; fs: "cn.fs"; ft: "cn.ft"; fu: "cn.fu"; fv: "cn.fv"; fw: "cn.fw"; fx: "cn.fx"; fy: "cn.fy"; fz: "cn.fz"; ga: "cn.ga"; gb: "cn.gb"; gc: "cn.gc"; gd: "cn.gd"; ge: "cn.ge"; gf: "cn.gf"; gg: "cn.gg"; gh: "cn.gh"; gi: "cn.gi"; gj: "cn.gj"; gk: "cn.gk"; gl: "cn.gl"; gm: "cn.gm"; gn: "cn.gn"; go: "cn.go"; gp: "cn.gp"; gq: "cn.gq"; gr: "cn.gr"; gs: "cn.gs"; gt: "cn.gt"; gu: "cn.gu"; gv: "cn.gv"; gw: "cn.gw"; gx: "cn.gx"; gy: "cn.gy"; gz: "cn.gz"; ha: "cn.ha"; hb: "cn.hb"; hc: "cn.hc"; hd: "cn.hd"; he: "cn.he"; hf: "cn.hf"; hg: "cn.hg"; hh: "cn.hh"; hi: "cn.hi"; hj: "cn.hj"; hk: "cn.hk"; hl: "cn.hl"; hm: "cn.hm"; hn: "cn.hn"; ho: "cn.ho"; hp: "cn.hp"; hq: "cn.hq"; hr: "cn.hr"; hs: "cn.hs"; ht: "cn.ht"; hu: "cn.hu"; hv: "cn.hv"; hw: "cn.hw"; hx: "cn.hx"; hy: "cn.hy"; hz: "cn.hz"; ia: "cn.ia"; ib: "cn.ib"; ic: "cn.ic"; id: "cn.id"; ie: "cn.ie"; if: "cn.if"; ig: "cn.ig"; ih: "cn.ih"; ii: "cn.ii"; ij: "cn.ij"; ik: "cn.ik"; il: "cn.il"; im: "cn.im"; in: "cn.in"; io: "cn.io"; ip: "cn.ip"; iq: "cn.iq"; ir: "cn.ir"; is: "cn.is"; it: "cn.it"; iu: "cn.iu"; iv: "cn.iv"; iw: "cn.iw"; ix: "cn.ix"; iy: "cn.iy"; iz: "cn.iz"; ja: "cn.ja"; jb: "cn.jb"; jc: "cn.jc"; jd: "cn.jd"; je: "cn.je"; jf: "cn.jf"; jg: "cn.jg"; jh: "cn.jh"; ji: "cn.ji"; jj: "cn.jj"; jk: "cn.jk"; jl: "cn.jl"; jm: "cn.jm"; jn: "cn.jn"; jo: "cn.jo"; jp: "cn.jp"; jq: "cn.jq"; jr: "cn.jr"; js: "cn.js"; jt: "cn.jt"; ju: "cn.ju"; jv: "cn.jv"; jw: "cn.jw"; jx: "cn.jx"; jy: "cn.jy"; jz: "cn.jz"; ka: "cn.ka"; kb: "cn.kb"; kc: "cn.kc"; kd: "cn.kd"; ke: "cn.ke"; kf: "cn.kf"; kg: "cn.kg"; kh: "cn.kh"; ki: "cn.ki"; kj: "cn.kj"; kk: "cn.kk"; kl: "cn.kl"; km: "cn.km"; kn: "cn.kn"; ko: "cn.ko"; kp: "cn.kp"; kq: "cn.kq"; kr: "cn.kr"; ks: "cn.ks"; kt: "cn.kt"; ku: "cn.ku"; kv: "cn.kv"; kw: "cn.kw"; kx: "cn.kx"; ky: "cn.ky"; kz: "cn.kz"; la: "cn.la"; lb: "cn.lb"; lc: "cn.lc"; ld: "cn.ld"; le: "cn.le"; lf: "cn.lf"; lg: "cn.lg"; lh: "cn.lh"; li: "cn.li"; lj: "cn.lj"; lk: "cn.lk"; ll: "cn.ll"; lm: "cn.lm"; ln: "cn.ln"; lo: "cn.lo"; lp: "cn.lp"; lq: "cn.lq"; lr: "cn.lr"; ls: "cn.ls"; lt: "cn.lt"; lu: "cn.lu"; lv: "cn.lv"; lw: "cn.lw"; lx: "cn.lx"; ly: "cn.ly"; lz: "cn.lz"; ma: "cn.ma"; mb: "cn.mb"; mc: "cn.mc"; md: "cn.md"; me: "cn.me"; mf: "cn.mf"; mg: "cn.mg"; mh: "cn.mh"; mi: "cn.mi"; mj: "cn.mj"; mk: "cn.mk"; ml: "cn.ml"; mm: "cn.mm"; mn: "cn.mn"; mo: "cn.mo"; mp: "cn.mp"; mq: "cn.mq"; mr: "cn.mr"; ms: "cn.ms"; mt: "cn.mt"; mu: "cn.mu"; mv: "cn.mv"; mw: "cn.mw"; mx: "cn.mx"; my: "cn.my"; mz: "cn.mz"; na: "cn.na"; nb: "cn.nb"; nc: "cn.nc"; nd: "cn.nd"; ne: "cn.ne"; nf: "cn.nf"; ng: "cn.ng"; nh: "cn.nh"; ni: "cn.ni"; nj: "cn.nj"; nk: "cn.nk"; nl: "cn.nl"; nm: "cn.nm"; nn: "cn.nn"; no: "cn.no"; np: "cn.np"; nq: "cn.nq"; nr: "cn.nr"; ns: "cn.ns"; nt: "cn.nt"; nu: "cn.nu"; nv: "cn.nv"; nw: "cn.nw"; nx: "cn.nx"; ny: "cn.ny"; nz: "cn.nz"; oa: "cn.oa"; ob: "cn.ob"; oc: "cn.oc"; od: "cn.od"; oe: "cn.oe"; of: "cn.of"; og: "cn.og"; oh: "cn.oh"; oi: "cn.oi"; oj: "cn.oj"; ok: "cn.ok"; ol: "cn.ol"; om: "cn.om"; on: "cn.on"; oo: "cn.oo"; op: "cn.op"; oq: "cn.oq"; or: "cn.or"; os: "cn.os"; ot: "cn.ot"; ou: "cn.ou"; ov: "cn.ov"; ow: "cn.ow"; ox: "cn.ox"; oy: "cn.oy"; oz: "cn.oz"; pa: "cn.pa"; pb: "cn.pb"; pc: "cn.pc"; pd: "cn.pd"; pe: "cn.pe"; pf: "cn.pf"; pg: "cn.pg"; ph: "cn.ph"; pi: "cn.pi"; pj: "cn.pj"; pk: "cn.pk"; pl: "cn.pl"; pm: "cn.pm"; pn: "cn.pn"; po: "cn.po"; pp: "cn.pp"; pq: "cn.pq"; pr: "cn.pr"; ps: "cn.ps"; pt: "cn.pt"; pu: "cn.pu"; pv: "cn.pv"; pw: "cn.pw"; px: "cn.px"; py: "cn.py"; pz: "cn.pz"; qa: "cn.qa"; qb: "cn.qb"; qc: "cn.qc"; qd: "cn.qd"; qe: "cn.qe"; qf: "cn.qf"; qg: "cn.qg"; qh: "cn.qh"; qi: "cn.qi"; qj: "cn.qj"; qk: "cn.qk"; ql: "cn.ql"; qm: "cn.qm"; qn: "cn.qn"; qo: "cn.qo"; qp: "cn.qp"; qq: "cn.qq"; qr: "cn.qr"; qs: "cn.qs"; qt: "cn.qt"; qu: "cn.qu"; qv: "cn.qv"; qw: "cn.qw"; qx: "cn.qx"; qy: "cn.qy"; qz: "cn.qz"; ra: "cn.ra"; rb: "cn.rb"; rc: "cn.rc"; rd: "cn.rd"; re: "cn.re"; rf: "cn.rf"; rg: "cn.rg"; rh: "cn.rh"; ri: "cn.ri"; rj: "cn.rj"; rk: "cn.rk"; rl: "cn.rl"; rm: "cn.rm"; rn: "cn.rn"; ro: "cn.ro"; rp: "cn.rp"; rq: "cn.rq"; rr: "cn.rr"; rs: "cn.rs"; rt: "cn.rt"; ru: "cn.ru"; rv: "cn.rv"; rw: "cn.rw"; rx: "cn.rx"; ry: "cn.ry"; rz: "cn.rz"; sa: "cn.sa"; sb: "cn.sb"; sc: "cn.sc"; sd: "cn.sd"; se: "cn.se"; sf: "cn.sf"; sg: "cn.sg"; sh: "cn.sh"; si: "cn.si"; sj: "cn.sj"; sk: "cn.sk"; sl: "cn.sl"; sm: "cn.sm"; sn: "cn.sn"; so: "cn.so"; sp: "cn.sp"; sq: "cn.sq"; sr: "cn.sr"; ss: "cn.ss"; st: "cn.st"; su: "cn.su"; sv: "cn.sv"; sw: "cn.sw"; sx: "cn.sx"; sy: "cn.sy"; sz: "cn.sz"; ta: "cn.ta"; tb: "cn.tb"; tc: "cn.tc"; td: "cn.td"; te: "cn.te"; tf: "cn.tf"; tg: "cn.tg"; th: "cn.th"; ti: "cn.ti"; tj: "cn.tj"; tk: "cn.tk"; tl: "cn.tl"; tm: "cn.tm"; tn: "cn.tn"; to: "cn.to"; tp: "cn.tp"; tq: "cn.tq"; tr: "cn.tr"; ts: "cn.ts"; tt: "cn.tt"; tu: "cn.tu"; tv: "cn.tv"; tw: "cn.tw"; tx: "cn.tx"; ty: "cn.ty"; tz: "cn.tz"; ua: "cn.ua"; ub: "cn.ub"; uc: "cn.uc"; ud: "cn.ud"; ue: "cn.ue"; uf: "cn.uf"; ug: "cn.ug"; uh: "cn.uh"; ui: "cn.ui"; uj: "cn.uj"; uk: "cn.uk"; ul: "cn.ul"; um: "cn.um"; un: "cn.un"; uo: "cn.uo"; up: "cn.up"; uq: "cn.uq"; ur: "cn.ur"; us: "cn.us"; ut: "cn.ut"; uu: "cn.uu"; uv: "cn.uv"; uw: "cn.uw"; ux: "cn.ux"; uy: "cn.uy"; uz: "cn.uz"; va: "cn.va"; vb: "cn.vb"; vc: "cn.vc"; vd: "cn.vd"; ve: "cn.ve"; vf: "cn.vf"; vg: "cn.vg"; vh: "cn.vh"; vi: "cn.vi"; vj: "cn.vj"; vk: "cn.vk"; vl: "cn.vl"; vm: "cn.vm"; vn: "cn.vn"; vo: "cn.vo"; vp: "cn.vp"; vq: "cn.vq"; vr: "cn.vr"; vs: "cn.vs"; vt: "cn.vt"; vu: "cn.vu"; vv: "cn.vv"; vw: "cn.vw"; vx: "cn.vx"; vy: "cn.vy"; vz: "cn.vz"; wa: "cn.wa"; wb: "cn.wb"; wc: "cn.wc"; wd: "cn.wd"; we: "cn.we"; wf: "cn.wf"; wg: "cn.wg"; wh: "cn.wh"; wi: "cn.wi"; wj: "cn.wj"; wk: "cn.wk"; wl: "cn.wl"; wm: "cn.wm"; wn: "cn.wn"; wo: "cn.wo"; wp: "cn.wp"; wq: "cn.wq"; wr: "cn.wr"; ws: "cn.ws"; wt: "cn.wt"; wu: "cn.wu"; wv: "cn.wv"; ww: "cn.ww"; wx: "cn.wx"; wy: "cn.wy"; wz: "cn.wz"; xa: "cn.xa"; xb: "cn.xb"; xc: "cn.xc"; xd: "cn.xd"; xe: "cn.xe"; xf: "cn.xf"; xg: "cn.xg"; xh: "cn.xh"; xi: "cn.xi"; xj: "cn.xj"; xk: "cn.xk"; xl: "cn.xl"; xm: "cn.xm"; xn: "cn.xn"; xo: "cn.xo"; xp: "cn.xp"; xq: "cn.xq"; xr: "cn.xr"; xs: "cn.xs"; xt: "cn.xt"; xu: "cn.xu"; xv: "cn.xv"; xw: "cn.xw"; xx: "cn.xx"; xy: "cn.xy"; xz: "cn.xz"; ya: "cn.ya"; yb: "cn.yb"; yc: "cn.yc"; yd: "cn.yd"; ye: "cn.ye"; yf: "cn.yf"; yg: "cn.yg"; yh: "cn.yh"; yi: "cn.yi"; yj: "cn.yj"; yk: "cn.yk"; yl: "cn.yl"; ym: "cn.ym"; yn: "cn.yn"; yo: "cn.yo"; yp: "cn.yp"; yq: "cn.yq"; yr: "cn.yr"; ys: "cn.ys"; yt: "cn.yt"; yu: "cn.yu"; yv: "cn.yv"; yw: "cn.yw"; yx: "cn.yx"; yy: "cn.yy"; yz: "cn.yz"; za: "cn.za"; zb: "cn.zb"; zc: "cn.zc"; zd: "cn.zd"; ze: "cn.ze"; zf: "cn.zf"; zg: "cn.zg"; zh: "cn.zh"; zi: "cn.zi"; zj: "cn.zj"; zk: "cn.zk"; zl: "cn.zl"; zm: "cn.zm"; zn: "cn.zn"; zo: "cn.zo"; zp: "cn.zp"; zq: "cn.zq"; zr: "cn.zr"; zs: "cn.zs"; zt: "cn.zt"; zu: "cn.zu"; zv: "cn.zv"; zw: "cn.zw"; zx: "cn.zx"; zy: "cn.zy"; zz: "cn.zz"; }; co: { aa: "co.aa"; ab: "co.ab"; ac: "co.ac"; ad: "co.ad"; ae: "co.ae"; af: "co.af"; ag: "co.ag"; ah: "co.ah"; ai: "co.ai"; aj: "co.aj"; ak: "co.ak"; al: "co.al"; am: "co.am"; an: "co.an"; ao: "co.ao"; ap: "co.ap"; aq: "co.aq"; ar: "co.ar"; as: "co.as"; at: "co.at"; au: "co.au"; av: "co.av"; aw: "co.aw"; ax: "co.ax"; ay: "co.ay"; az: "co.az"; ba: "co.ba"; bb: "co.bb"; bc: "co.bc"; bd: "co.bd"; be: "co.be"; bf: "co.bf"; bg: "co.bg"; bh: "co.bh"; bi: "co.bi"; bj: "co.bj"; bk: "co.bk"; bl: "co.bl"; bm: "co.bm"; bn: "co.bn"; bo: "co.bo"; bp: "co.bp"; bq: "co.bq"; br: "co.br"; bs: "co.bs"; bt: "co.bt"; bu: "co.bu"; bv: "co.bv"; bw: "co.bw"; bx: "co.bx"; by: "co.by"; bz: "co.bz"; ca: "co.ca"; cb: "co.cb"; cc: "co.cc"; cd: "co.cd"; ce: "co.ce"; cf: "co.cf"; cg: "co.cg"; ch: "co.ch"; ci: "co.ci"; cj: "co.cj"; ck: "co.ck"; cl: "co.cl"; cm: "co.cm"; cn: "co.cn"; co: "co.co"; cp: "co.cp"; cq: "co.cq"; cr: "co.cr"; cs: "co.cs"; ct: "co.ct"; cu: "co.cu"; cv: "co.cv"; cw: "co.cw"; cx: "co.cx"; cy: "co.cy"; cz: "co.cz"; da: "co.da"; db: "co.db"; dc: "co.dc"; dd: "co.dd"; de: "co.de"; df: "co.df"; dg: "co.dg"; dh: "co.dh"; di: "co.di"; dj: "co.dj"; dk: "co.dk"; dl: "co.dl"; dm: "co.dm"; dn: "co.dn"; do: "co.do"; dp: "co.dp"; dq: "co.dq"; dr: "co.dr"; ds: "co.ds"; dt: "co.dt"; du: "co.du"; dv: "co.dv"; dw: "co.dw"; dx: "co.dx"; dy: "co.dy"; dz: "co.dz"; ea: "co.ea"; eb: "co.eb"; ec: "co.ec"; ed: "co.ed"; ee: "co.ee"; ef: "co.ef"; eg: "co.eg"; eh: "co.eh"; ei: "co.ei"; ej: "co.ej"; ek: "co.ek"; el: "co.el"; em: "co.em"; en: "co.en"; eo: "co.eo"; ep: "co.ep"; eq: "co.eq"; er: "co.er"; es: "co.es"; et: "co.et"; eu: "co.eu"; ev: "co.ev"; ew: "co.ew"; ex: "co.ex"; ey: "co.ey"; ez: "co.ez"; fa: "co.fa"; fb: "co.fb"; fc: "co.fc"; fd: "co.fd"; fe: "co.fe"; ff: "co.ff"; fg: "co.fg"; fh: "co.fh"; fi: "co.fi"; fj: "co.fj"; fk: "co.fk"; fl: "co.fl"; fm: "co.fm"; fn: "co.fn"; fo: "co.fo"; fp: "co.fp"; fq: "co.fq"; fr: "co.fr"; fs: "co.fs"; ft: "co.ft"; fu: "co.fu"; fv: "co.fv"; fw: "co.fw"; fx: "co.fx"; fy: "co.fy"; fz: "co.fz"; ga: "co.ga"; gb: "co.gb"; gc: "co.gc"; gd: "co.gd"; ge: "co.ge"; gf: "co.gf"; gg: "co.gg"; gh: "co.gh"; gi: "co.gi"; gj: "co.gj"; gk: "co.gk"; gl: "co.gl"; gm: "co.gm"; gn: "co.gn"; go: "co.go"; gp: "co.gp"; gq: "co.gq"; gr: "co.gr"; gs: "co.gs"; gt: "co.gt"; gu: "co.gu"; gv: "co.gv"; gw: "co.gw"; gx: "co.gx"; gy: "co.gy"; gz: "co.gz"; ha: "co.ha"; hb: "co.hb"; hc: "co.hc"; hd: "co.hd"; he: "co.he"; hf: "co.hf"; hg: "co.hg"; hh: "co.hh"; hi: "co.hi"; hj: "co.hj"; hk: "co.hk"; hl: "co.hl"; hm: "co.hm"; hn: "co.hn"; ho: "co.ho"; hp: "co.hp"; hq: "co.hq"; hr: "co.hr"; hs: "co.hs"; ht: "co.ht"; hu: "co.hu"; hv: "co.hv"; hw: "co.hw"; hx: "co.hx"; hy: "co.hy"; hz: "co.hz"; ia: "co.ia"; ib: "co.ib"; ic: "co.ic"; id: "co.id"; ie: "co.ie"; if: "co.if"; ig: "co.ig"; ih: "co.ih"; ii: "co.ii"; ij: "co.ij"; ik: "co.ik"; il: "co.il"; im: "co.im"; in: "co.in"; io: "co.io"; ip: "co.ip"; iq: "co.iq"; ir: "co.ir"; is: "co.is"; it: "co.it"; iu: "co.iu"; iv: "co.iv"; iw: "co.iw"; ix: "co.ix"; iy: "co.iy"; iz: "co.iz"; ja: "co.ja"; jb: "co.jb"; jc: "co.jc"; jd: "co.jd"; je: "co.je"; jf: "co.jf"; jg: "co.jg"; jh: "co.jh"; ji: "co.ji"; jj: "co.jj"; jk: "co.jk"; jl: "co.jl"; jm: "co.jm"; jn: "co.jn"; jo: "co.jo"; jp: "co.jp"; jq: "co.jq"; jr: "co.jr"; js: "co.js"; jt: "co.jt"; ju: "co.ju"; jv: "co.jv"; jw: "co.jw"; jx: "co.jx"; jy: "co.jy"; jz: "co.jz"; ka: "co.ka"; kb: "co.kb"; kc: "co.kc"; kd: "co.kd"; ke: "co.ke"; kf: "co.kf"; kg: "co.kg"; kh: "co.kh"; ki: "co.ki"; kj: "co.kj"; kk: "co.kk"; kl: "co.kl"; km: "co.km"; kn: "co.kn"; ko: "co.ko"; kp: "co.kp"; kq: "co.kq"; kr: "co.kr"; ks: "co.ks"; kt: "co.kt"; ku: "co.ku"; kv: "co.kv"; kw: "co.kw"; kx: "co.kx"; ky: "co.ky"; kz: "co.kz"; la: "co.la"; lb: "co.lb"; lc: "co.lc"; ld: "co.ld"; le: "co.le"; lf: "co.lf"; lg: "co.lg"; lh: "co.lh"; li: "co.li"; lj: "co.lj"; lk: "co.lk"; ll: "co.ll"; lm: "co.lm"; ln: "co.ln"; lo: "co.lo"; lp: "co.lp"; lq: "co.lq"; lr: "co.lr"; ls: "co.ls"; lt: "co.lt"; lu: "co.lu"; lv: "co.lv"; lw: "co.lw"; lx: "co.lx"; ly: "co.ly"; lz: "co.lz"; ma: "co.ma"; mb: "co.mb"; mc: "co.mc"; md: "co.md"; me: "co.me"; mf: "co.mf"; mg: "co.mg"; mh: "co.mh"; mi: "co.mi"; mj: "co.mj"; mk: "co.mk"; ml: "co.ml"; mm: "co.mm"; mn: "co.mn"; mo: "co.mo"; mp: "co.mp"; mq: "co.mq"; mr: "co.mr"; ms: "co.ms"; mt: "co.mt"; mu: "co.mu"; mv: "co.mv"; mw: "co.mw"; mx: "co.mx"; my: "co.my"; mz: "co.mz"; na: "co.na"; nb: "co.nb"; nc: "co.nc"; nd: "co.nd"; ne: "co.ne"; nf: "co.nf"; ng: "co.ng"; nh: "co.nh"; ni: "co.ni"; nj: "co.nj"; nk: "co.nk"; nl: "co.nl"; nm: "co.nm"; nn: "co.nn"; no: "co.no"; np: "co.np"; nq: "co.nq"; nr: "co.nr"; ns: "co.ns"; nt: "co.nt"; nu: "co.nu"; nv: "co.nv"; nw: "co.nw"; nx: "co.nx"; ny: "co.ny"; nz: "co.nz"; oa: "co.oa"; ob: "co.ob"; oc: "co.oc"; od: "co.od"; oe: "co.oe"; of: "co.of"; og: "co.og"; oh: "co.oh"; oi: "co.oi"; oj: "co.oj"; ok: "co.ok"; ol: "co.ol"; om: "co.om"; on: "co.on"; oo: "co.oo"; op: "co.op"; oq: "co.oq"; or: "co.or"; os: "co.os"; ot: "co.ot"; ou: "co.ou"; ov: "co.ov"; ow: "co.ow"; ox: "co.ox"; oy: "co.oy"; oz: "co.oz"; pa: "co.pa"; pb: "co.pb"; pc: "co.pc"; pd: "co.pd"; pe: "co.pe"; pf: "co.pf"; pg: "co.pg"; ph: "co.ph"; pi: "co.pi"; pj: "co.pj"; pk: "co.pk"; pl: "co.pl"; pm: "co.pm"; pn: "co.pn"; po: "co.po"; pp: "co.pp"; pq: "co.pq"; pr: "co.pr"; ps: "co.ps"; pt: "co.pt"; pu: "co.pu"; pv: "co.pv"; pw: "co.pw"; px: "co.px"; py: "co.py"; pz: "co.pz"; qa: "co.qa"; qb: "co.qb"; qc: "co.qc"; qd: "co.qd"; qe: "co.qe"; qf: "co.qf"; qg: "co.qg"; qh: "co.qh"; qi: "co.qi"; qj: "co.qj"; qk: "co.qk"; ql: "co.ql"; qm: "co.qm"; qn: "co.qn"; qo: "co.qo"; qp: "co.qp"; qq: "co.qq"; qr: "co.qr"; qs: "co.qs"; qt: "co.qt"; qu: "co.qu"; qv: "co.qv"; qw: "co.qw"; qx: "co.qx"; qy: "co.qy"; qz: "co.qz"; ra: "co.ra"; rb: "co.rb"; rc: "co.rc"; rd: "co.rd"; re: "co.re"; rf: "co.rf"; rg: "co.rg"; rh: "co.rh"; ri: "co.ri"; rj: "co.rj"; rk: "co.rk"; rl: "co.rl"; rm: "co.rm"; rn: "co.rn"; ro: "co.ro"; rp: "co.rp"; rq: "co.rq"; rr: "co.rr"; rs: "co.rs"; rt: "co.rt"; ru: "co.ru"; rv: "co.rv"; rw: "co.rw"; rx: "co.rx"; ry: "co.ry"; rz: "co.rz"; sa: "co.sa"; sb: "co.sb"; sc: "co.sc"; sd: "co.sd"; se: "co.se"; sf: "co.sf"; sg: "co.sg"; sh: "co.sh"; si: "co.si"; sj: "co.sj"; sk: "co.sk"; sl: "co.sl"; sm: "co.sm"; sn: "co.sn"; so: "co.so"; sp: "co.sp"; sq: "co.sq"; sr: "co.sr"; ss: "co.ss"; st: "co.st"; su: "co.su"; sv: "co.sv"; sw: "co.sw"; sx: "co.sx"; sy: "co.sy"; sz: "co.sz"; ta: "co.ta"; tb: "co.tb"; tc: "co.tc"; td: "co.td"; te: "co.te"; tf: "co.tf"; tg: "co.tg"; th: "co.th"; ti: "co.ti"; tj: "co.tj"; tk: "co.tk"; tl: "co.tl"; tm: "co.tm"; tn: "co.tn"; to: "co.to"; tp: "co.tp"; tq: "co.tq"; tr: "co.tr"; ts: "co.ts"; tt: "co.tt"; tu: "co.tu"; tv: "co.tv"; tw: "co.tw"; tx: "co.tx"; ty: "co.ty"; tz: "co.tz"; ua: "co.ua"; ub: "co.ub"; uc: "co.uc"; ud: "co.ud"; ue: "co.ue"; uf: "co.uf"; ug: "co.ug"; uh: "co.uh"; ui: "co.ui"; uj: "co.uj"; uk: "co.uk"; ul: "co.ul"; um: "co.um"; un: "co.un"; uo: "co.uo"; up: "co.up"; uq: "co.uq"; ur: "co.ur"; us: "co.us"; ut: "co.ut"; uu: "co.uu"; uv: "co.uv"; uw: "co.uw"; ux: "co.ux"; uy: "co.uy"; uz: "co.uz"; va: "co.va"; vb: "co.vb"; vc: "co.vc"; vd: "co.vd"; ve: "co.ve"; vf: "co.vf"; vg: "co.vg"; vh: "co.vh"; vi: "co.vi"; vj: "co.vj"; vk: "co.vk"; vl: "co.vl"; vm: "co.vm"; vn: "co.vn"; vo: "co.vo"; vp: "co.vp"; vq: "co.vq"; vr: "co.vr"; vs: "co.vs"; vt: "co.vt"; vu: "co.vu"; vv: "co.vv"; vw: "co.vw"; vx: "co.vx"; vy: "co.vy"; vz: "co.vz"; wa: "co.wa"; wb: "co.wb"; wc: "co.wc"; wd: "co.wd"; we: "co.we"; wf: "co.wf"; wg: "co.wg"; wh: "co.wh"; wi: "co.wi"; wj: "co.wj"; wk: "co.wk"; wl: "co.wl"; wm: "co.wm"; wn: "co.wn"; wo: "co.wo"; wp: "co.wp"; wq: "co.wq"; wr: "co.wr"; ws: "co.ws"; wt: "co.wt"; wu: "co.wu"; wv: "co.wv"; ww: "co.ww"; wx: "co.wx"; wy: "co.wy"; wz: "co.wz"; xa: "co.xa"; xb: "co.xb"; xc: "co.xc"; xd: "co.xd"; xe: "co.xe"; xf: "co.xf"; xg: "co.xg"; xh: "co.xh"; xi: "co.xi"; xj: "co.xj"; xk: "co.xk"; xl: "co.xl"; xm: "co.xm"; xn: "co.xn"; xo: "co.xo"; xp: "co.xp"; xq: "co.xq"; xr: "co.xr"; xs: "co.xs"; xt: "co.xt"; xu: "co.xu"; xv: "co.xv"; xw: "co.xw"; xx: "co.xx"; xy: "co.xy"; xz: "co.xz"; ya: "co.ya"; yb: "co.yb"; yc: "co.yc"; yd: "co.yd"; ye: "co.ye"; yf: "co.yf"; yg: "co.yg"; yh: "co.yh"; yi: "co.yi"; yj: "co.yj"; yk: "co.yk"; yl: "co.yl"; ym: "co.ym"; yn: "co.yn"; yo: "co.yo"; yp: "co.yp"; yq: "co.yq"; yr: "co.yr"; ys: "co.ys"; yt: "co.yt"; yu: "co.yu"; yv: "co.yv"; yw: "co.yw"; yx: "co.yx"; yy: "co.yy"; yz: "co.yz"; za: "co.za"; zb: "co.zb"; zc: "co.zc"; zd: "co.zd"; ze: "co.ze"; zf: "co.zf"; zg: "co.zg"; zh: "co.zh"; zi: "co.zi"; zj: "co.zj"; zk: "co.zk"; zl: "co.zl"; zm: "co.zm"; zn: "co.zn"; zo: "co.zo"; zp: "co.zp"; zq: "co.zq"; zr: "co.zr"; zs: "co.zs"; zt: "co.zt"; zu: "co.zu"; zv: "co.zv"; zw: "co.zw"; zx: "co.zx"; zy: "co.zy"; zz: "co.zz"; }; cp: { aa: "cp.aa"; ab: "cp.ab"; ac: "cp.ac"; ad: "cp.ad"; ae: "cp.ae"; af: "cp.af"; ag: "cp.ag"; ah: "cp.ah"; ai: "cp.ai"; aj: "cp.aj"; ak: "cp.ak"; al: "cp.al"; am: "cp.am"; an: "cp.an"; ao: "cp.ao"; ap: "cp.ap"; aq: "cp.aq"; ar: "cp.ar"; as: "cp.as"; at: "cp.at"; au: "cp.au"; av: "cp.av"; aw: "cp.aw"; ax: "cp.ax"; ay: "cp.ay"; az: "cp.az"; ba: "cp.ba"; bb: "cp.bb"; bc: "cp.bc"; bd: "cp.bd"; be: "cp.be"; bf: "cp.bf"; bg: "cp.bg"; bh: "cp.bh"; bi: "cp.bi"; bj: "cp.bj"; bk: "cp.bk"; bl: "cp.bl"; bm: "cp.bm"; bn: "cp.bn"; bo: "cp.bo"; bp: "cp.bp"; bq: "cp.bq"; br: "cp.br"; bs: "cp.bs"; bt: "cp.bt"; bu: "cp.bu"; bv: "cp.bv"; bw: "cp.bw"; bx: "cp.bx"; by: "cp.by"; bz: "cp.bz"; ca: "cp.ca"; cb: "cp.cb"; cc: "cp.cc"; cd: "cp.cd"; ce: "cp.ce"; cf: "cp.cf"; cg: "cp.cg"; ch: "cp.ch"; ci: "cp.ci"; cj: "cp.cj"; ck: "cp.ck"; cl: "cp.cl"; cm: "cp.cm"; cn: "cp.cn"; co: "cp.co"; cp: "cp.cp"; cq: "cp.cq"; cr: "cp.cr"; cs: "cp.cs"; ct: "cp.ct"; cu: "cp.cu"; cv: "cp.cv"; cw: "cp.cw"; cx: "cp.cx"; cy: "cp.cy"; cz: "cp.cz"; da: "cp.da"; db: "cp.db"; dc: "cp.dc"; dd: "cp.dd"; de: "cp.de"; df: "cp.df"; dg: "cp.dg"; dh: "cp.dh"; di: "cp.di"; dj: "cp.dj"; dk: "cp.dk"; dl: "cp.dl"; dm: "cp.dm"; dn: "cp.dn"; do: "cp.do"; dp: "cp.dp"; dq: "cp.dq"; dr: "cp.dr"; ds: "cp.ds"; dt: "cp.dt"; du: "cp.du"; dv: "cp.dv"; dw: "cp.dw"; dx: "cp.dx"; dy: "cp.dy"; dz: "cp.dz"; ea: "cp.ea"; eb: "cp.eb"; ec: "cp.ec"; ed: "cp.ed"; ee: "cp.ee"; ef: "cp.ef"; eg: "cp.eg"; eh: "cp.eh"; ei: "cp.ei"; ej: "cp.ej"; ek: "cp.ek"; el: "cp.el"; em: "cp.em"; en: "cp.en"; eo: "cp.eo"; ep: "cp.ep"; eq: "cp.eq"; er: "cp.er"; es: "cp.es"; et: "cp.et"; eu: "cp.eu"; ev: "cp.ev"; ew: "cp.ew"; ex: "cp.ex"; ey: "cp.ey"; ez: "cp.ez"; fa: "cp.fa"; fb: "cp.fb"; fc: "cp.fc"; fd: "cp.fd"; fe: "cp.fe"; ff: "cp.ff"; fg: "cp.fg"; fh: "cp.fh"; fi: "cp.fi"; fj: "cp.fj"; fk: "cp.fk"; fl: "cp.fl"; fm: "cp.fm"; fn: "cp.fn"; fo: "cp.fo"; fp: "cp.fp"; fq: "cp.fq"; fr: "cp.fr"; fs: "cp.fs"; ft: "cp.ft"; fu: "cp.fu"; fv: "cp.fv"; fw: "cp.fw"; fx: "cp.fx"; fy: "cp.fy"; fz: "cp.fz"; ga: "cp.ga"; gb: "cp.gb"; gc: "cp.gc"; gd: "cp.gd"; ge: "cp.ge"; gf: "cp.gf"; gg: "cp.gg"; gh: "cp.gh"; gi: "cp.gi"; gj: "cp.gj"; gk: "cp.gk"; gl: "cp.gl"; gm: "cp.gm"; gn: "cp.gn"; go: "cp.go"; gp: "cp.gp"; gq: "cp.gq"; gr: "cp.gr"; gs: "cp.gs"; gt: "cp.gt"; gu: "cp.gu"; gv: "cp.gv"; gw: "cp.gw"; gx: "cp.gx"; gy: "cp.gy"; gz: "cp.gz"; ha: "cp.ha"; hb: "cp.hb"; hc: "cp.hc"; hd: "cp.hd"; he: "cp.he"; hf: "cp.hf"; hg: "cp.hg"; hh: "cp.hh"; hi: "cp.hi"; hj: "cp.hj"; hk: "cp.hk"; hl: "cp.hl"; hm: "cp.hm"; hn: "cp.hn"; ho: "cp.ho"; hp: "cp.hp"; hq: "cp.hq"; hr: "cp.hr"; hs: "cp.hs"; ht: "cp.ht"; hu: "cp.hu"; hv: "cp.hv"; hw: "cp.hw"; hx: "cp.hx"; hy: "cp.hy"; hz: "cp.hz"; ia: "cp.ia"; ib: "cp.ib"; ic: "cp.ic"; id: "cp.id"; ie: "cp.ie"; if: "cp.if"; ig: "cp.ig"; ih: "cp.ih"; ii: "cp.ii"; ij: "cp.ij"; ik: "cp.ik"; il: "cp.il"; im: "cp.im"; in: "cp.in"; io: "cp.io"; ip: "cp.ip"; iq: "cp.iq"; ir: "cp.ir"; is: "cp.is"; it: "cp.it"; iu: "cp.iu"; iv: "cp.iv"; iw: "cp.iw"; ix: "cp.ix"; iy: "cp.iy"; iz: "cp.iz"; ja: "cp.ja"; jb: "cp.jb"; jc: "cp.jc"; jd: "cp.jd"; je: "cp.je"; jf: "cp.jf"; jg: "cp.jg"; jh: "cp.jh"; ji: "cp.ji"; jj: "cp.jj"; jk: "cp.jk"; jl: "cp.jl"; jm: "cp.jm"; jn: "cp.jn"; jo: "cp.jo"; jp: "cp.jp"; jq: "cp.jq"; jr: "cp.jr"; js: "cp.js"; jt: "cp.jt"; ju: "cp.ju"; jv: "cp.jv"; jw: "cp.jw"; jx: "cp.jx"; jy: "cp.jy"; jz: "cp.jz"; ka: "cp.ka"; kb: "cp.kb"; kc: "cp.kc"; kd: "cp.kd"; ke: "cp.ke"; kf: "cp.kf"; kg: "cp.kg"; kh: "cp.kh"; ki: "cp.ki"; kj: "cp.kj"; kk: "cp.kk"; kl: "cp.kl"; km: "cp.km"; kn: "cp.kn"; ko: "cp.ko"; kp: "cp.kp"; kq: "cp.kq"; kr: "cp.kr"; ks: "cp.ks"; kt: "cp.kt"; ku: "cp.ku"; kv: "cp.kv"; kw: "cp.kw"; kx: "cp.kx"; ky: "cp.ky"; kz: "cp.kz"; la: "cp.la"; lb: "cp.lb"; lc: "cp.lc"; ld: "cp.ld"; le: "cp.le"; lf: "cp.lf"; lg: "cp.lg"; lh: "cp.lh"; li: "cp.li"; lj: "cp.lj"; lk: "cp.lk"; ll: "cp.ll"; lm: "cp.lm"; ln: "cp.ln"; lo: "cp.lo"; lp: "cp.lp"; lq: "cp.lq"; lr: "cp.lr"; ls: "cp.ls"; lt: "cp.lt"; lu: "cp.lu"; lv: "cp.lv"; lw: "cp.lw"; lx: "cp.lx"; ly: "cp.ly"; lz: "cp.lz"; ma: "cp.ma"; mb: "cp.mb"; mc: "cp.mc"; md: "cp.md"; me: "cp.me"; mf: "cp.mf"; mg: "cp.mg"; mh: "cp.mh"; mi: "cp.mi"; mj: "cp.mj"; mk: "cp.mk"; ml: "cp.ml"; mm: "cp.mm"; mn: "cp.mn"; mo: "cp.mo"; mp: "cp.mp"; mq: "cp.mq"; mr: "cp.mr"; ms: "cp.ms"; mt: "cp.mt"; mu: "cp.mu"; mv: "cp.mv"; mw: "cp.mw"; mx: "cp.mx"; my: "cp.my"; mz: "cp.mz"; na: "cp.na"; nb: "cp.nb"; nc: "cp.nc"; nd: "cp.nd"; ne: "cp.ne"; nf: "cp.nf"; ng: "cp.ng"; nh: "cp.nh"; ni: "cp.ni"; nj: "cp.nj"; nk: "cp.nk"; nl: "cp.nl"; nm: "cp.nm"; nn: "cp.nn"; no: "cp.no"; np: "cp.np"; nq: "cp.nq"; nr: "cp.nr"; ns: "cp.ns"; nt: "cp.nt"; nu: "cp.nu"; nv: "cp.nv"; nw: "cp.nw"; nx: "cp.nx"; ny: "cp.ny"; nz: "cp.nz"; oa: "cp.oa"; ob: "cp.ob"; oc: "cp.oc"; od: "cp.od"; oe: "cp.oe"; of: "cp.of"; og: "cp.og"; oh: "cp.oh"; oi: "cp.oi"; oj: "cp.oj"; ok: "cp.ok"; ol: "cp.ol"; om: "cp.om"; on: "cp.on"; oo: "cp.oo"; op: "cp.op"; oq: "cp.oq"; or: "cp.or"; os: "cp.os"; ot: "cp.ot"; ou: "cp.ou"; ov: "cp.ov"; ow: "cp.ow"; ox: "cp.ox"; oy: "cp.oy"; oz: "cp.oz"; pa: "cp.pa"; pb: "cp.pb"; pc: "cp.pc"; pd: "cp.pd"; pe: "cp.pe"; pf: "cp.pf"; pg: "cp.pg"; ph: "cp.ph"; pi: "cp.pi"; pj: "cp.pj"; pk: "cp.pk"; pl: "cp.pl"; pm: "cp.pm"; pn: "cp.pn"; po: "cp.po"; pp: "cp.pp"; pq: "cp.pq"; pr: "cp.pr"; ps: "cp.ps"; pt: "cp.pt"; pu: "cp.pu"; pv: "cp.pv"; pw: "cp.pw"; px: "cp.px"; py: "cp.py"; pz: "cp.pz"; qa: "cp.qa"; qb: "cp.qb"; qc: "cp.qc"; qd: "cp.qd"; qe: "cp.qe"; qf: "cp.qf"; qg: "cp.qg"; qh: "cp.qh"; qi: "cp.qi"; qj: "cp.qj"; qk: "cp.qk"; ql: "cp.ql"; qm: "cp.qm"; qn: "cp.qn"; qo: "cp.qo"; qp: "cp.qp"; qq: "cp.qq"; qr: "cp.qr"; qs: "cp.qs"; qt: "cp.qt"; qu: "cp.qu"; qv: "cp.qv"; qw: "cp.qw"; qx: "cp.qx"; qy: "cp.qy"; qz: "cp.qz"; ra: "cp.ra"; rb: "cp.rb"; rc: "cp.rc"; rd: "cp.rd"; re: "cp.re"; rf: "cp.rf"; rg: "cp.rg"; rh: "cp.rh"; ri: "cp.ri"; rj: "cp.rj"; rk: "cp.rk"; rl: "cp.rl"; rm: "cp.rm"; rn: "cp.rn"; ro: "cp.ro"; rp: "cp.rp"; rq: "cp.rq"; rr: "cp.rr"; rs: "cp.rs"; rt: "cp.rt"; ru: "cp.ru"; rv: "cp.rv"; rw: "cp.rw"; rx: "cp.rx"; ry: "cp.ry"; rz: "cp.rz"; sa: "cp.sa"; sb: "cp.sb"; sc: "cp.sc"; sd: "cp.sd"; se: "cp.se"; sf: "cp.sf"; sg: "cp.sg"; sh: "cp.sh"; si: "cp.si"; sj: "cp.sj"; sk: "cp.sk"; sl: "cp.sl"; sm: "cp.sm"; sn: "cp.sn"; so: "cp.so"; sp: "cp.sp"; sq: "cp.sq"; sr: "cp.sr"; ss: "cp.ss"; st: "cp.st"; su: "cp.su"; sv: "cp.sv"; sw: "cp.sw"; sx: "cp.sx"; sy: "cp.sy"; sz: "cp.sz"; ta: "cp.ta"; tb: "cp.tb"; tc: "cp.tc"; td: "cp.td"; te: "cp.te"; tf: "cp.tf"; tg: "cp.tg"; th: "cp.th"; ti: "cp.ti"; tj: "cp.tj"; tk: "cp.tk"; tl: "cp.tl"; tm: "cp.tm"; tn: "cp.tn"; to: "cp.to"; tp: "cp.tp"; tq: "cp.tq"; tr: "cp.tr"; ts: "cp.ts"; tt: "cp.tt"; tu: "cp.tu"; tv: "cp.tv"; tw: "cp.tw"; tx: "cp.tx"; ty: "cp.ty"; tz: "cp.tz"; ua: "cp.ua"; ub: "cp.ub"; uc: "cp.uc"; ud: "cp.ud"; ue: "cp.ue"; uf: "cp.uf"; ug: "cp.ug"; uh: "cp.uh"; ui: "cp.ui"; uj: "cp.uj"; uk: "cp.uk"; ul: "cp.ul"; um: "cp.um"; un: "cp.un"; uo: "cp.uo"; up: "cp.up"; uq: "cp.uq"; ur: "cp.ur"; us: "cp.us"; ut: "cp.ut"; uu: "cp.uu"; uv: "cp.uv"; uw: "cp.uw"; ux: "cp.ux"; uy: "cp.uy"; uz: "cp.uz"; va: "cp.va"; vb: "cp.vb"; vc: "cp.vc"; vd: "cp.vd"; ve: "cp.ve"; vf: "cp.vf"; vg: "cp.vg"; vh: "cp.vh"; vi: "cp.vi"; vj: "cp.vj"; vk: "cp.vk"; vl: "cp.vl"; vm: "cp.vm"; vn: "cp.vn"; vo: "cp.vo"; vp: "cp.vp"; vq: "cp.vq"; vr: "cp.vr"; vs: "cp.vs"; vt: "cp.vt"; vu: "cp.vu"; vv: "cp.vv"; vw: "cp.vw"; vx: "cp.vx"; vy: "cp.vy"; vz: "cp.vz"; wa: "cp.wa"; wb: "cp.wb"; wc: "cp.wc"; wd: "cp.wd"; we: "cp.we"; wf: "cp.wf"; wg: "cp.wg"; wh: "cp.wh"; wi: "cp.wi"; wj: "cp.wj"; wk: "cp.wk"; wl: "cp.wl"; wm: "cp.wm"; wn: "cp.wn"; wo: "cp.wo"; wp: "cp.wp"; wq: "cp.wq"; wr: "cp.wr"; ws: "cp.ws"; wt: "cp.wt"; wu: "cp.wu"; wv: "cp.wv"; ww: "cp.ww"; wx: "cp.wx"; wy: "cp.wy"; wz: "cp.wz"; xa: "cp.xa"; xb: "cp.xb"; xc: "cp.xc"; xd: "cp.xd"; xe: "cp.xe"; xf: "cp.xf"; xg: "cp.xg"; xh: "cp.xh"; xi: "cp.xi"; xj: "cp.xj"; xk: "cp.xk"; xl: "cp.xl"; xm: "cp.xm"; xn: "cp.xn"; xo: "cp.xo"; xp: "cp.xp"; xq: "cp.xq"; xr: "cp.xr"; xs: "cp.xs"; xt: "cp.xt"; xu: "cp.xu"; xv: "cp.xv"; xw: "cp.xw"; xx: "cp.xx"; xy: "cp.xy"; xz: "cp.xz"; ya: "cp.ya"; yb: "cp.yb"; yc: "cp.yc"; yd: "cp.yd"; ye: "cp.ye"; yf: "cp.yf"; yg: "cp.yg"; yh: "cp.yh"; yi: "cp.yi"; yj: "cp.yj"; yk: "cp.yk"; yl: "cp.yl"; ym: "cp.ym"; yn: "cp.yn"; yo: "cp.yo"; yp: "cp.yp"; yq: "cp.yq"; yr: "cp.yr"; ys: "cp.ys"; yt: "cp.yt"; yu: "cp.yu"; yv: "cp.yv"; yw: "cp.yw"; yx: "cp.yx"; yy: "cp.yy"; yz: "cp.yz"; za: "cp.za"; zb: "cp.zb"; zc: "cp.zc"; zd: "cp.zd"; ze: "cp.ze"; zf: "cp.zf"; zg: "cp.zg"; zh: "cp.zh"; zi: "cp.zi"; zj: "cp.zj"; zk: "cp.zk"; zl: "cp.zl"; zm: "cp.zm"; zn: "cp.zn"; zo: "cp.zo"; zp: "cp.zp"; zq: "cp.zq"; zr: "cp.zr"; zs: "cp.zs"; zt: "cp.zt"; zu: "cp.zu"; zv: "cp.zv"; zw: "cp.zw"; zx: "cp.zx"; zy: "cp.zy"; zz: "cp.zz"; }; cq: { aa: "cq.aa"; ab: "cq.ab"; ac: "cq.ac"; ad: "cq.ad"; ae: "cq.ae"; af: "cq.af"; ag: "cq.ag"; ah: "cq.ah"; ai: "cq.ai"; aj: "cq.aj"; ak: "cq.ak"; al: "cq.al"; am: "cq.am"; an: "cq.an"; ao: "cq.ao"; ap: "cq.ap"; aq: "cq.aq"; ar: "cq.ar"; as: "cq.as"; at: "cq.at"; au: "cq.au"; av: "cq.av"; aw: "cq.aw"; ax: "cq.ax"; ay: "cq.ay"; az: "cq.az"; ba: "cq.ba"; bb: "cq.bb"; bc: "cq.bc"; bd: "cq.bd"; be: "cq.be"; bf: "cq.bf"; bg: "cq.bg"; bh: "cq.bh"; bi: "cq.bi"; bj: "cq.bj"; bk: "cq.bk"; bl: "cq.bl"; bm: "cq.bm"; bn: "cq.bn"; bo: "cq.bo"; bp: "cq.bp"; bq: "cq.bq"; br: "cq.br"; bs: "cq.bs"; bt: "cq.bt"; bu: "cq.bu"; bv: "cq.bv"; bw: "cq.bw"; bx: "cq.bx"; by: "cq.by"; bz: "cq.bz"; ca: "cq.ca"; cb: "cq.cb"; cc: "cq.cc"; cd: "cq.cd"; ce: "cq.ce"; cf: "cq.cf"; cg: "cq.cg"; ch: "cq.ch"; ci: "cq.ci"; cj: "cq.cj"; ck: "cq.ck"; cl: "cq.cl"; cm: "cq.cm"; cn: "cq.cn"; co: "cq.co"; cp: "cq.cp"; cq: "cq.cq"; cr: "cq.cr"; cs: "cq.cs"; ct: "cq.ct"; cu: "cq.cu"; cv: "cq.cv"; cw: "cq.cw"; cx: "cq.cx"; cy: "cq.cy"; cz: "cq.cz"; da: "cq.da"; db: "cq.db"; dc: "cq.dc"; dd: "cq.dd"; de: "cq.de"; df: "cq.df"; dg: "cq.dg"; dh: "cq.dh"; di: "cq.di"; dj: "cq.dj"; dk: "cq.dk"; dl: "cq.dl"; dm: "cq.dm"; dn: "cq.dn"; do: "cq.do"; dp: "cq.dp"; dq: "cq.dq"; dr: "cq.dr"; ds: "cq.ds"; dt: "cq.dt"; du: "cq.du"; dv: "cq.dv"; dw: "cq.dw"; dx: "cq.dx"; dy: "cq.dy"; dz: "cq.dz"; ea: "cq.ea"; eb: "cq.eb"; ec: "cq.ec"; ed: "cq.ed"; ee: "cq.ee"; ef: "cq.ef"; eg: "cq.eg"; eh: "cq.eh"; ei: "cq.ei"; ej: "cq.ej"; ek: "cq.ek"; el: "cq.el"; em: "cq.em"; en: "cq.en"; eo: "cq.eo"; ep: "cq.ep"; eq: "cq.eq"; er: "cq.er"; es: "cq.es"; et: "cq.et"; eu: "cq.eu"; ev: "cq.ev"; ew: "cq.ew"; ex: "cq.ex"; ey: "cq.ey"; ez: "cq.ez"; fa: "cq.fa"; fb: "cq.fb"; fc: "cq.fc"; fd: "cq.fd"; fe: "cq.fe"; ff: "cq.ff"; fg: "cq.fg"; fh: "cq.fh"; fi: "cq.fi"; fj: "cq.fj"; fk: "cq.fk"; fl: "cq.fl"; fm: "cq.fm"; fn: "cq.fn"; fo: "cq.fo"; fp: "cq.fp"; fq: "cq.fq"; fr: "cq.fr"; fs: "cq.fs"; ft: "cq.ft"; fu: "cq.fu"; fv: "cq.fv"; fw: "cq.fw"; fx: "cq.fx"; fy: "cq.fy"; fz: "cq.fz"; ga: "cq.ga"; gb: "cq.gb"; gc: "cq.gc"; gd: "cq.gd"; ge: "cq.ge"; gf: "cq.gf"; gg: "cq.gg"; gh: "cq.gh"; gi: "cq.gi"; gj: "cq.gj"; gk: "cq.gk"; gl: "cq.gl"; gm: "cq.gm"; gn: "cq.gn"; go: "cq.go"; gp: "cq.gp"; gq: "cq.gq"; gr: "cq.gr"; gs: "cq.gs"; gt: "cq.gt"; gu: "cq.gu"; gv: "cq.gv"; gw: "cq.gw"; gx: "cq.gx"; gy: "cq.gy"; gz: "cq.gz"; ha: "cq.ha"; hb: "cq.hb"; hc: "cq.hc"; hd: "cq.hd"; he: "cq.he"; hf: "cq.hf"; hg: "cq.hg"; hh: "cq.hh"; hi: "cq.hi"; hj: "cq.hj"; hk: "cq.hk"; hl: "cq.hl"; hm: "cq.hm"; hn: "cq.hn"; ho: "cq.ho"; hp: "cq.hp"; hq: "cq.hq"; hr: "cq.hr"; hs: "cq.hs"; ht: "cq.ht"; hu: "cq.hu"; hv: "cq.hv"; hw: "cq.hw"; hx: "cq.hx"; hy: "cq.hy"; hz: "cq.hz"; ia: "cq.ia"; ib: "cq.ib"; ic: "cq.ic"; id: "cq.id"; ie: "cq.ie"; if: "cq.if"; ig: "cq.ig"; ih: "cq.ih"; ii: "cq.ii"; ij: "cq.ij"; ik: "cq.ik"; il: "cq.il"; im: "cq.im"; in: "cq.in"; io: "cq.io"; ip: "cq.ip"; iq: "cq.iq"; ir: "cq.ir"; is: "cq.is"; it: "cq.it"; iu: "cq.iu"; iv: "cq.iv"; iw: "cq.iw"; ix: "cq.ix"; iy: "cq.iy"; iz: "cq.iz"; ja: "cq.ja"; jb: "cq.jb"; jc: "cq.jc"; jd: "cq.jd"; je: "cq.je"; jf: "cq.jf"; jg: "cq.jg"; jh: "cq.jh"; ji: "cq.ji"; jj: "cq.jj"; jk: "cq.jk"; jl: "cq.jl"; jm: "cq.jm"; jn: "cq.jn"; jo: "cq.jo"; jp: "cq.jp"; jq: "cq.jq"; jr: "cq.jr"; js: "cq.js"; jt: "cq.jt"; ju: "cq.ju"; jv: "cq.jv"; jw: "cq.jw"; jx: "cq.jx"; jy: "cq.jy"; jz: "cq.jz"; ka: "cq.ka"; kb: "cq.kb"; kc: "cq.kc"; kd: "cq.kd"; ke: "cq.ke"; kf: "cq.kf"; kg: "cq.kg"; kh: "cq.kh"; ki: "cq.ki"; kj: "cq.kj"; kk: "cq.kk"; kl: "cq.kl"; km: "cq.km"; kn: "cq.kn"; ko: "cq.ko"; kp: "cq.kp"; kq: "cq.kq"; kr: "cq.kr"; ks: "cq.ks"; kt: "cq.kt"; ku: "cq.ku"; kv: "cq.kv"; kw: "cq.kw"; kx: "cq.kx"; ky: "cq.ky"; kz: "cq.kz"; la: "cq.la"; lb: "cq.lb"; lc: "cq.lc"; ld: "cq.ld"; le: "cq.le"; lf: "cq.lf"; lg: "cq.lg"; lh: "cq.lh"; li: "cq.li"; lj: "cq.lj"; lk: "cq.lk"; ll: "cq.ll"; lm: "cq.lm"; ln: "cq.ln"; lo: "cq.lo"; lp: "cq.lp"; lq: "cq.lq"; lr: "cq.lr"; ls: "cq.ls"; lt: "cq.lt"; lu: "cq.lu"; lv: "cq.lv"; lw: "cq.lw"; lx: "cq.lx"; ly: "cq.ly"; lz: "cq.lz"; ma: "cq.ma"; mb: "cq.mb"; mc: "cq.mc"; md: "cq.md"; me: "cq.me"; mf: "cq.mf"; mg: "cq.mg"; mh: "cq.mh"; mi: "cq.mi"; mj: "cq.mj"; mk: "cq.mk"; ml: "cq.ml"; mm: "cq.mm"; mn: "cq.mn"; mo: "cq.mo"; mp: "cq.mp"; mq: "cq.mq"; mr: "cq.mr"; ms: "cq.ms"; mt: "cq.mt"; mu: "cq.mu"; mv: "cq.mv"; mw: "cq.mw"; mx: "cq.mx"; my: "cq.my"; mz: "cq.mz"; na: "cq.na"; nb: "cq.nb"; nc: "cq.nc"; nd: "cq.nd"; ne: "cq.ne"; nf: "cq.nf"; ng: "cq.ng"; nh: "cq.nh"; ni: "cq.ni"; nj: "cq.nj"; nk: "cq.nk"; nl: "cq.nl"; nm: "cq.nm"; nn: "cq.nn"; no: "cq.no"; np: "cq.np"; nq: "cq.nq"; nr: "cq.nr"; ns: "cq.ns"; nt: "cq.nt"; nu: "cq.nu"; nv: "cq.nv"; nw: "cq.nw"; nx: "cq.nx"; ny: "cq.ny"; nz: "cq.nz"; oa: "cq.oa"; ob: "cq.ob"; oc: "cq.oc"; od: "cq.od"; oe: "cq.oe"; of: "cq.of"; og: "cq.og"; oh: "cq.oh"; oi: "cq.oi"; oj: "cq.oj"; ok: "cq.ok"; ol: "cq.ol"; om: "cq.om"; on: "cq.on"; oo: "cq.oo"; op: "cq.op"; oq: "cq.oq"; or: "cq.or"; os: "cq.os"; ot: "cq.ot"; ou: "cq.ou"; ov: "cq.ov"; ow: "cq.ow"; ox: "cq.ox"; oy: "cq.oy"; oz: "cq.oz"; pa: "cq.pa"; pb: "cq.pb"; pc: "cq.pc"; pd: "cq.pd"; pe: "cq.pe"; pf: "cq.pf"; pg: "cq.pg"; ph: "cq.ph"; pi: "cq.pi"; pj: "cq.pj"; pk: "cq.pk"; pl: "cq.pl"; pm: "cq.pm"; pn: "cq.pn"; po: "cq.po"; pp: "cq.pp"; pq: "cq.pq"; pr: "cq.pr"; ps: "cq.ps"; pt: "cq.pt"; pu: "cq.pu"; pv: "cq.pv"; pw: "cq.pw"; px: "cq.px"; py: "cq.py"; pz: "cq.pz"; qa: "cq.qa"; qb: "cq.qb"; qc: "cq.qc"; qd: "cq.qd"; qe: "cq.qe"; qf: "cq.qf"; qg: "cq.qg"; qh: "cq.qh"; qi: "cq.qi"; qj: "cq.qj"; qk: "cq.qk"; ql: "cq.ql"; qm: "cq.qm"; qn: "cq.qn"; qo: "cq.qo"; qp: "cq.qp"; qq: "cq.qq"; qr: "cq.qr"; qs: "cq.qs"; qt: "cq.qt"; qu: "cq.qu"; qv: "cq.qv"; qw: "cq.qw"; qx: "cq.qx"; qy: "cq.qy"; qz: "cq.qz"; ra: "cq.ra"; rb: "cq.rb"; rc: "cq.rc"; rd: "cq.rd"; re: "cq.re"; rf: "cq.rf"; rg: "cq.rg"; rh: "cq.rh"; ri: "cq.ri"; rj: "cq.rj"; rk: "cq.rk"; rl: "cq.rl"; rm: "cq.rm"; rn: "cq.rn"; ro: "cq.ro"; rp: "cq.rp"; rq: "cq.rq"; rr: "cq.rr"; rs: "cq.rs"; rt: "cq.rt"; ru: "cq.ru"; rv: "cq.rv"; rw: "cq.rw"; rx: "cq.rx"; ry: "cq.ry"; rz: "cq.rz"; sa: "cq.sa"; sb: "cq.sb"; sc: "cq.sc"; sd: "cq.sd"; se: "cq.se"; sf: "cq.sf"; sg: "cq.sg"; sh: "cq.sh"; si: "cq.si"; sj: "cq.sj"; sk: "cq.sk"; sl: "cq.sl"; sm: "cq.sm"; sn: "cq.sn"; so: "cq.so"; sp: "cq.sp"; sq: "cq.sq"; sr: "cq.sr"; ss: "cq.ss"; st: "cq.st"; su: "cq.su"; sv: "cq.sv"; sw: "cq.sw"; sx: "cq.sx"; sy: "cq.sy"; sz: "cq.sz"; ta: "cq.ta"; tb: "cq.tb"; tc: "cq.tc"; td: "cq.td"; te: "cq.te"; tf: "cq.tf"; tg: "cq.tg"; th: "cq.th"; ti: "cq.ti"; tj: "cq.tj"; tk: "cq.tk"; tl: "cq.tl"; tm: "cq.tm"; tn: "cq.tn"; to: "cq.to"; tp: "cq.tp"; tq: "cq.tq"; tr: "cq.tr"; ts: "cq.ts"; tt: "cq.tt"; tu: "cq.tu"; tv: "cq.tv"; tw: "cq.tw"; tx: "cq.tx"; ty: "cq.ty"; tz: "cq.tz"; ua: "cq.ua"; ub: "cq.ub"; uc: "cq.uc"; ud: "cq.ud"; ue: "cq.ue"; uf: "cq.uf"; ug: "cq.ug"; uh: "cq.uh"; ui: "cq.ui"; uj: "cq.uj"; uk: "cq.uk"; ul: "cq.ul"; um: "cq.um"; un: "cq.un"; uo: "cq.uo"; up: "cq.up"; uq: "cq.uq"; ur: "cq.ur"; us: "cq.us"; ut: "cq.ut"; uu: "cq.uu"; uv: "cq.uv"; uw: "cq.uw"; ux: "cq.ux"; uy: "cq.uy"; uz: "cq.uz"; va: "cq.va"; vb: "cq.vb"; vc: "cq.vc"; vd: "cq.vd"; ve: "cq.ve"; vf: "cq.vf"; vg: "cq.vg"; vh: "cq.vh"; vi: "cq.vi"; vj: "cq.vj"; vk: "cq.vk"; vl: "cq.vl"; vm: "cq.vm"; vn: "cq.vn"; vo: "cq.vo"; vp: "cq.vp"; vq: "cq.vq"; vr: "cq.vr"; vs: "cq.vs"; vt: "cq.vt"; vu: "cq.vu"; vv: "cq.vv"; vw: "cq.vw"; vx: "cq.vx"; vy: "cq.vy"; vz: "cq.vz"; wa: "cq.wa"; wb: "cq.wb"; wc: "cq.wc"; wd: "cq.wd"; we: "cq.we"; wf: "cq.wf"; wg: "cq.wg"; wh: "cq.wh"; wi: "cq.wi"; wj: "cq.wj"; wk: "cq.wk"; wl: "cq.wl"; wm: "cq.wm"; wn: "cq.wn"; wo: "cq.wo"; wp: "cq.wp"; wq: "cq.wq"; wr: "cq.wr"; ws: "cq.ws"; wt: "cq.wt"; wu: "cq.wu"; wv: "cq.wv"; ww: "cq.ww"; wx: "cq.wx"; wy: "cq.wy"; wz: "cq.wz"; xa: "cq.xa"; xb: "cq.xb"; xc: "cq.xc"; xd: "cq.xd"; xe: "cq.xe"; xf: "cq.xf"; xg: "cq.xg"; xh: "cq.xh"; xi: "cq.xi"; xj: "cq.xj"; xk: "cq.xk"; xl: "cq.xl"; xm: "cq.xm"; xn: "cq.xn"; xo: "cq.xo"; xp: "cq.xp"; xq: "cq.xq"; xr: "cq.xr"; xs: "cq.xs"; xt: "cq.xt"; xu: "cq.xu"; xv: "cq.xv"; xw: "cq.xw"; xx: "cq.xx"; xy: "cq.xy"; xz: "cq.xz"; ya: "cq.ya"; yb: "cq.yb"; yc: "cq.yc"; yd: "cq.yd"; ye: "cq.ye"; yf: "cq.yf"; yg: "cq.yg"; yh: "cq.yh"; yi: "cq.yi"; yj: "cq.yj"; yk: "cq.yk"; yl: "cq.yl"; ym: "cq.ym"; yn: "cq.yn"; yo: "cq.yo"; yp: "cq.yp"; yq: "cq.yq"; yr: "cq.yr"; ys: "cq.ys"; yt: "cq.yt"; yu: "cq.yu"; yv: "cq.yv"; yw: "cq.yw"; yx: "cq.yx"; yy: "cq.yy"; yz: "cq.yz"; za: "cq.za"; zb: "cq.zb"; zc: "cq.zc"; zd: "cq.zd"; ze: "cq.ze"; zf: "cq.zf"; zg: "cq.zg"; zh: "cq.zh"; zi: "cq.zi"; zj: "cq.zj"; zk: "cq.zk"; zl: "cq.zl"; zm: "cq.zm"; zn: "cq.zn"; zo: "cq.zo"; zp: "cq.zp"; zq: "cq.zq"; zr: "cq.zr"; zs: "cq.zs"; zt: "cq.zt"; zu: "cq.zu"; zv: "cq.zv"; zw: "cq.zw"; zx: "cq.zx"; zy: "cq.zy"; zz: "cq.zz"; }; cr: { aa: "cr.aa"; ab: "cr.ab"; ac: "cr.ac"; ad: "cr.ad"; ae: "cr.ae"; af: "cr.af"; ag: "cr.ag"; ah: "cr.ah"; ai: "cr.ai"; aj: "cr.aj"; ak: "cr.ak"; al: "cr.al"; am: "cr.am"; an: "cr.an"; ao: "cr.ao"; ap: "cr.ap"; aq: "cr.aq"; ar: "cr.ar"; as: "cr.as"; at: "cr.at"; au: "cr.au"; av: "cr.av"; aw: "cr.aw"; ax: "cr.ax"; ay: "cr.ay"; az: "cr.az"; ba: "cr.ba"; bb: "cr.bb"; bc: "cr.bc"; bd: "cr.bd"; be: "cr.be"; bf: "cr.bf"; bg: "cr.bg"; bh: "cr.bh"; bi: "cr.bi"; bj: "cr.bj"; bk: "cr.bk"; bl: "cr.bl"; bm: "cr.bm"; bn: "cr.bn"; bo: "cr.bo"; bp: "cr.bp"; bq: "cr.bq"; br: "cr.br"; bs: "cr.bs"; bt: "cr.bt"; bu: "cr.bu"; bv: "cr.bv"; bw: "cr.bw"; bx: "cr.bx"; by: "cr.by"; bz: "cr.bz"; ca: "cr.ca"; cb: "cr.cb"; cc: "cr.cc"; cd: "cr.cd"; ce: "cr.ce"; cf: "cr.cf"; cg: "cr.cg"; ch: "cr.ch"; ci: "cr.ci"; cj: "cr.cj"; ck: "cr.ck"; cl: "cr.cl"; cm: "cr.cm"; cn: "cr.cn"; co: "cr.co"; cp: "cr.cp"; cq: "cr.cq"; cr: "cr.cr"; cs: "cr.cs"; ct: "cr.ct"; cu: "cr.cu"; cv: "cr.cv"; cw: "cr.cw"; cx: "cr.cx"; cy: "cr.cy"; cz: "cr.cz"; da: "cr.da"; db: "cr.db"; dc: "cr.dc"; dd: "cr.dd"; de: "cr.de"; df: "cr.df"; dg: "cr.dg"; dh: "cr.dh"; di: "cr.di"; dj: "cr.dj"; dk: "cr.dk"; dl: "cr.dl"; dm: "cr.dm"; dn: "cr.dn"; do: "cr.do"; dp: "cr.dp"; dq: "cr.dq"; dr: "cr.dr"; ds: "cr.ds"; dt: "cr.dt"; du: "cr.du"; dv: "cr.dv"; dw: "cr.dw"; dx: "cr.dx"; dy: "cr.dy"; dz: "cr.dz"; ea: "cr.ea"; eb: "cr.eb"; ec: "cr.ec"; ed: "cr.ed"; ee: "cr.ee"; ef: "cr.ef"; eg: "cr.eg"; eh: "cr.eh"; ei: "cr.ei"; ej: "cr.ej"; ek: "cr.ek"; el: "cr.el"; em: "cr.em"; en: "cr.en"; eo: "cr.eo"; ep: "cr.ep"; eq: "cr.eq"; er: "cr.er"; es: "cr.es"; et: "cr.et"; eu: "cr.eu"; ev: "cr.ev"; ew: "cr.ew"; ex: "cr.ex"; ey: "cr.ey"; ez: "cr.ez"; fa: "cr.fa"; fb: "cr.fb"; fc: "cr.fc"; fd: "cr.fd"; fe: "cr.fe"; ff: "cr.ff"; fg: "cr.fg"; fh: "cr.fh"; fi: "cr.fi"; fj: "cr.fj"; fk: "cr.fk"; fl: "cr.fl"; fm: "cr.fm"; fn: "cr.fn"; fo: "cr.fo"; fp: "cr.fp"; fq: "cr.fq"; fr: "cr.fr"; fs: "cr.fs"; ft: "cr.ft"; fu: "cr.fu"; fv: "cr.fv"; fw: "cr.fw"; fx: "cr.fx"; fy: "cr.fy"; fz: "cr.fz"; ga: "cr.ga"; gb: "cr.gb"; gc: "cr.gc"; gd: "cr.gd"; ge: "cr.ge"; gf: "cr.gf"; gg: "cr.gg"; gh: "cr.gh"; gi: "cr.gi"; gj: "cr.gj"; gk: "cr.gk"; gl: "cr.gl"; gm: "cr.gm"; gn: "cr.gn"; go: "cr.go"; gp: "cr.gp"; gq: "cr.gq"; gr: "cr.gr"; gs: "cr.gs"; gt: "cr.gt"; gu: "cr.gu"; gv: "cr.gv"; gw: "cr.gw"; gx: "cr.gx"; gy: "cr.gy"; gz: "cr.gz"; ha: "cr.ha"; hb: "cr.hb"; hc: "cr.hc"; hd: "cr.hd"; he: "cr.he"; hf: "cr.hf"; hg: "cr.hg"; hh: "cr.hh"; hi: "cr.hi"; hj: "cr.hj"; hk: "cr.hk"; hl: "cr.hl"; hm: "cr.hm"; hn: "cr.hn"; ho: "cr.ho"; hp: "cr.hp"; hq: "cr.hq"; hr: "cr.hr"; hs: "cr.hs"; ht: "cr.ht"; hu: "cr.hu"; hv: "cr.hv"; hw: "cr.hw"; hx: "cr.hx"; hy: "cr.hy"; hz: "cr.hz"; ia: "cr.ia"; ib: "cr.ib"; ic: "cr.ic"; id: "cr.id"; ie: "cr.ie"; if: "cr.if"; ig: "cr.ig"; ih: "cr.ih"; ii: "cr.ii"; ij: "cr.ij"; ik: "cr.ik"; il: "cr.il"; im: "cr.im"; in: "cr.in"; io: "cr.io"; ip: "cr.ip"; iq: "cr.iq"; ir: "cr.ir"; is: "cr.is"; it: "cr.it"; iu: "cr.iu"; iv: "cr.iv"; iw: "cr.iw"; ix: "cr.ix"; iy: "cr.iy"; iz: "cr.iz"; ja: "cr.ja"; jb: "cr.jb"; jc: "cr.jc"; jd: "cr.jd"; je: "cr.je"; jf: "cr.jf"; jg: "cr.jg"; jh: "cr.jh"; ji: "cr.ji"; jj: "cr.jj"; jk: "cr.jk"; jl: "cr.jl"; jm: "cr.jm"; jn: "cr.jn"; jo: "cr.jo"; jp: "cr.jp"; jq: "cr.jq"; jr: "cr.jr"; js: "cr.js"; jt: "cr.jt"; ju: "cr.ju"; jv: "cr.jv"; jw: "cr.jw"; jx: "cr.jx"; jy: "cr.jy"; jz: "cr.jz"; ka: "cr.ka"; kb: "cr.kb"; kc: "cr.kc"; kd: "cr.kd"; ke: "cr.ke"; kf: "cr.kf"; kg: "cr.kg"; kh: "cr.kh"; ki: "cr.ki"; kj: "cr.kj"; kk: "cr.kk"; kl: "cr.kl"; km: "cr.km"; kn: "cr.kn"; ko: "cr.ko"; kp: "cr.kp"; kq: "cr.kq"; kr: "cr.kr"; ks: "cr.ks"; kt: "cr.kt"; ku: "cr.ku"; kv: "cr.kv"; kw: "cr.kw"; kx: "cr.kx"; ky: "cr.ky"; kz: "cr.kz"; la: "cr.la"; lb: "cr.lb"; lc: "cr.lc"; ld: "cr.ld"; le: "cr.le"; lf: "cr.lf"; lg: "cr.lg"; lh: "cr.lh"; li: "cr.li"; lj: "cr.lj"; lk: "cr.lk"; ll: "cr.ll"; lm: "cr.lm"; ln: "cr.ln"; lo: "cr.lo"; lp: "cr.lp"; lq: "cr.lq"; lr: "cr.lr"; ls: "cr.ls"; lt: "cr.lt"; lu: "cr.lu"; lv: "cr.lv"; lw: "cr.lw"; lx: "cr.lx"; ly: "cr.ly"; lz: "cr.lz"; ma: "cr.ma"; mb: "cr.mb"; mc: "cr.mc"; md: "cr.md"; me: "cr.me"; mf: "cr.mf"; mg: "cr.mg"; mh: "cr.mh"; mi: "cr.mi"; mj: "cr.mj"; mk: "cr.mk"; ml: "cr.ml"; mm: "cr.mm"; mn: "cr.mn"; mo: "cr.mo"; mp: "cr.mp"; mq: "cr.mq"; mr: "cr.mr"; ms: "cr.ms"; mt: "cr.mt"; mu: "cr.mu"; mv: "cr.mv"; mw: "cr.mw"; mx: "cr.mx"; my: "cr.my"; mz: "cr.mz"; na: "cr.na"; nb: "cr.nb"; nc: "cr.nc"; nd: "cr.nd"; ne: "cr.ne"; nf: "cr.nf"; ng: "cr.ng"; nh: "cr.nh"; ni: "cr.ni"; nj: "cr.nj"; nk: "cr.nk"; nl: "cr.nl"; nm: "cr.nm"; nn: "cr.nn"; no: "cr.no"; np: "cr.np"; nq: "cr.nq"; nr: "cr.nr"; ns: "cr.ns"; nt: "cr.nt"; nu: "cr.nu"; nv: "cr.nv"; nw: "cr.nw"; nx: "cr.nx"; ny: "cr.ny"; nz: "cr.nz"; oa: "cr.oa"; ob: "cr.ob"; oc: "cr.oc"; od: "cr.od"; oe: "cr.oe"; of: "cr.of"; og: "cr.og"; oh: "cr.oh"; oi: "cr.oi"; oj: "cr.oj"; ok: "cr.ok"; ol: "cr.ol"; om: "cr.om"; on: "cr.on"; oo: "cr.oo"; op: "cr.op"; oq: "cr.oq"; or: "cr.or"; os: "cr.os"; ot: "cr.ot"; ou: "cr.ou"; ov: "cr.ov"; ow: "cr.ow"; ox: "cr.ox"; oy: "cr.oy"; oz: "cr.oz"; pa: "cr.pa"; pb: "cr.pb"; pc: "cr.pc"; pd: "cr.pd"; pe: "cr.pe"; pf: "cr.pf"; pg: "cr.pg"; ph: "cr.ph"; pi: "cr.pi"; pj: "cr.pj"; pk: "cr.pk"; pl: "cr.pl"; pm: "cr.pm"; pn: "cr.pn"; po: "cr.po"; pp: "cr.pp"; pq: "cr.pq"; pr: "cr.pr"; ps: "cr.ps"; pt: "cr.pt"; pu: "cr.pu"; pv: "cr.pv"; pw: "cr.pw"; px: "cr.px"; py: "cr.py"; pz: "cr.pz"; qa: "cr.qa"; qb: "cr.qb"; qc: "cr.qc"; qd: "cr.qd"; qe: "cr.qe"; qf: "cr.qf"; qg: "cr.qg"; qh: "cr.qh"; qi: "cr.qi"; qj: "cr.qj"; qk: "cr.qk"; ql: "cr.ql"; qm: "cr.qm"; qn: "cr.qn"; qo: "cr.qo"; qp: "cr.qp"; qq: "cr.qq"; qr: "cr.qr"; qs: "cr.qs"; qt: "cr.qt"; qu: "cr.qu"; qv: "cr.qv"; qw: "cr.qw"; qx: "cr.qx"; qy: "cr.qy"; qz: "cr.qz"; ra: "cr.ra"; rb: "cr.rb"; rc: "cr.rc"; rd: "cr.rd"; re: "cr.re"; rf: "cr.rf"; rg: "cr.rg"; rh: "cr.rh"; ri: "cr.ri"; rj: "cr.rj"; rk: "cr.rk"; rl: "cr.rl"; rm: "cr.rm"; rn: "cr.rn"; ro: "cr.ro"; rp: "cr.rp"; rq: "cr.rq"; rr: "cr.rr"; rs: "cr.rs"; rt: "cr.rt"; ru: "cr.ru"; rv: "cr.rv"; rw: "cr.rw"; rx: "cr.rx"; ry: "cr.ry"; rz: "cr.rz"; sa: "cr.sa"; sb: "cr.sb"; sc: "cr.sc"; sd: "cr.sd"; se: "cr.se"; sf: "cr.sf"; sg: "cr.sg"; sh: "cr.sh"; si: "cr.si"; sj: "cr.sj"; sk: "cr.sk"; sl: "cr.sl"; sm: "cr.sm"; sn: "cr.sn"; so: "cr.so"; sp: "cr.sp"; sq: "cr.sq"; sr: "cr.sr"; ss: "cr.ss"; st: "cr.st"; su: "cr.su"; sv: "cr.sv"; sw: "cr.sw"; sx: "cr.sx"; sy: "cr.sy"; sz: "cr.sz"; ta: "cr.ta"; tb: "cr.tb"; tc: "cr.tc"; td: "cr.td"; te: "cr.te"; tf: "cr.tf"; tg: "cr.tg"; th: "cr.th"; ti: "cr.ti"; tj: "cr.tj"; tk: "cr.tk"; tl: "cr.tl"; tm: "cr.tm"; tn: "cr.tn"; to: "cr.to"; tp: "cr.tp"; tq: "cr.tq"; tr: "cr.tr"; ts: "cr.ts"; tt: "cr.tt"; tu: "cr.tu"; tv: "cr.tv"; tw: "cr.tw"; tx: "cr.tx"; ty: "cr.ty"; tz: "cr.tz"; ua: "cr.ua"; ub: "cr.ub"; uc: "cr.uc"; ud: "cr.ud"; ue: "cr.ue"; uf: "cr.uf"; ug: "cr.ug"; uh: "cr.uh"; ui: "cr.ui"; uj: "cr.uj"; uk: "cr.uk"; ul: "cr.ul"; um: "cr.um"; un: "cr.un"; uo: "cr.uo"; up: "cr.up"; uq: "cr.uq"; ur: "cr.ur"; us: "cr.us"; ut: "cr.ut"; uu: "cr.uu"; uv: "cr.uv"; uw: "cr.uw"; ux: "cr.ux"; uy: "cr.uy"; uz: "cr.uz"; va: "cr.va"; vb: "cr.vb"; vc: "cr.vc"; vd: "cr.vd"; ve: "cr.ve"; vf: "cr.vf"; vg: "cr.vg"; vh: "cr.vh"; vi: "cr.vi"; vj: "cr.vj"; vk: "cr.vk"; vl: "cr.vl"; vm: "cr.vm"; vn: "cr.vn"; vo: "cr.vo"; vp: "cr.vp"; vq: "cr.vq"; vr: "cr.vr"; vs: "cr.vs"; vt: "cr.vt"; vu: "cr.vu"; vv: "cr.vv"; vw: "cr.vw"; vx: "cr.vx"; vy: "cr.vy"; vz: "cr.vz"; wa: "cr.wa"; wb: "cr.wb"; wc: "cr.wc"; wd: "cr.wd"; we: "cr.we"; wf: "cr.wf"; wg: "cr.wg"; wh: "cr.wh"; wi: "cr.wi"; wj: "cr.wj"; wk: "cr.wk"; wl: "cr.wl"; wm: "cr.wm"; wn: "cr.wn"; wo: "cr.wo"; wp: "cr.wp"; wq: "cr.wq"; wr: "cr.wr"; ws: "cr.ws"; wt: "cr.wt"; wu: "cr.wu"; wv: "cr.wv"; ww: "cr.ww"; wx: "cr.wx"; wy: "cr.wy"; wz: "cr.wz"; xa: "cr.xa"; xb: "cr.xb"; xc: "cr.xc"; xd: "cr.xd"; xe: "cr.xe"; xf: "cr.xf"; xg: "cr.xg"; xh: "cr.xh"; xi: "cr.xi"; xj: "cr.xj"; xk: "cr.xk"; xl: "cr.xl"; xm: "cr.xm"; xn: "cr.xn"; xo: "cr.xo"; xp: "cr.xp"; xq: "cr.xq"; xr: "cr.xr"; xs: "cr.xs"; xt: "cr.xt"; xu: "cr.xu"; xv: "cr.xv"; xw: "cr.xw"; xx: "cr.xx"; xy: "cr.xy"; xz: "cr.xz"; ya: "cr.ya"; yb: "cr.yb"; yc: "cr.yc"; yd: "cr.yd"; ye: "cr.ye"; yf: "cr.yf"; yg: "cr.yg"; yh: "cr.yh"; yi: "cr.yi"; yj: "cr.yj"; yk: "cr.yk"; yl: "cr.yl"; ym: "cr.ym"; yn: "cr.yn"; yo: "cr.yo"; yp: "cr.yp"; yq: "cr.yq"; yr: "cr.yr"; ys: "cr.ys"; yt: "cr.yt"; yu: "cr.yu"; yv: "cr.yv"; yw: "cr.yw"; yx: "cr.yx"; yy: "cr.yy"; yz: "cr.yz"; za: "cr.za"; zb: "cr.zb"; zc: "cr.zc"; zd: "cr.zd"; ze: "cr.ze"; zf: "cr.zf"; zg: "cr.zg"; zh: "cr.zh"; zi: "cr.zi"; zj: "cr.zj"; zk: "cr.zk"; zl: "cr.zl"; zm: "cr.zm"; zn: "cr.zn"; zo: "cr.zo"; zp: "cr.zp"; zq: "cr.zq"; zr: "cr.zr"; zs: "cr.zs"; zt: "cr.zt"; zu: "cr.zu"; zv: "cr.zv"; zw: "cr.zw"; zx: "cr.zx"; zy: "cr.zy"; zz: "cr.zz"; }; cs: { aa: "cs.aa"; ab: "cs.ab"; ac: "cs.ac"; ad: "cs.ad"; ae: "cs.ae"; af: "cs.af"; ag: "cs.ag"; ah: "cs.ah"; ai: "cs.ai"; aj: "cs.aj"; ak: "cs.ak"; al: "cs.al"; am: "cs.am"; an: "cs.an"; ao: "cs.ao"; ap: "cs.ap"; aq: "cs.aq"; ar: "cs.ar"; as: "cs.as"; at: "cs.at"; au: "cs.au"; av: "cs.av"; aw: "cs.aw"; ax: "cs.ax"; ay: "cs.ay"; az: "cs.az"; ba: "cs.ba"; bb: "cs.bb"; bc: "cs.bc"; bd: "cs.bd"; be: "cs.be"; bf: "cs.bf"; bg: "cs.bg"; bh: "cs.bh"; bi: "cs.bi"; bj: "cs.bj"; bk: "cs.bk"; bl: "cs.bl"; bm: "cs.bm"; bn: "cs.bn"; bo: "cs.bo"; bp: "cs.bp"; bq: "cs.bq"; br: "cs.br"; bs: "cs.bs"; bt: "cs.bt"; bu: "cs.bu"; bv: "cs.bv"; bw: "cs.bw"; bx: "cs.bx"; by: "cs.by"; bz: "cs.bz"; ca: "cs.ca"; cb: "cs.cb"; cc: "cs.cc"; cd: "cs.cd"; ce: "cs.ce"; cf: "cs.cf"; cg: "cs.cg"; ch: "cs.ch"; ci: "cs.ci"; cj: "cs.cj"; ck: "cs.ck"; cl: "cs.cl"; cm: "cs.cm"; cn: "cs.cn"; co: "cs.co"; cp: "cs.cp"; cq: "cs.cq"; cr: "cs.cr"; cs: "cs.cs"; ct: "cs.ct"; cu: "cs.cu"; cv: "cs.cv"; cw: "cs.cw"; cx: "cs.cx"; cy: "cs.cy"; cz: "cs.cz"; da: "cs.da"; db: "cs.db"; dc: "cs.dc"; dd: "cs.dd"; de: "cs.de"; df: "cs.df"; dg: "cs.dg"; dh: "cs.dh"; di: "cs.di"; dj: "cs.dj"; dk: "cs.dk"; dl: "cs.dl"; dm: "cs.dm"; dn: "cs.dn"; do: "cs.do"; dp: "cs.dp"; dq: "cs.dq"; dr: "cs.dr"; ds: "cs.ds"; dt: "cs.dt"; du: "cs.du"; dv: "cs.dv"; dw: "cs.dw"; dx: "cs.dx"; dy: "cs.dy"; dz: "cs.dz"; ea: "cs.ea"; eb: "cs.eb"; ec: "cs.ec"; ed: "cs.ed"; ee: "cs.ee"; ef: "cs.ef"; eg: "cs.eg"; eh: "cs.eh"; ei: "cs.ei"; ej: "cs.ej"; ek: "cs.ek"; el: "cs.el"; em: "cs.em"; en: "cs.en"; eo: "cs.eo"; ep: "cs.ep"; eq: "cs.eq"; er: "cs.er"; es: "cs.es"; et: "cs.et"; eu: "cs.eu"; ev: "cs.ev"; ew: "cs.ew"; ex: "cs.ex"; ey: "cs.ey"; ez: "cs.ez"; fa: "cs.fa"; fb: "cs.fb"; fc: "cs.fc"; fd: "cs.fd"; fe: "cs.fe"; ff: "cs.ff"; fg: "cs.fg"; fh: "cs.fh"; fi: "cs.fi"; fj: "cs.fj"; fk: "cs.fk"; fl: "cs.fl"; fm: "cs.fm"; fn: "cs.fn"; fo: "cs.fo"; fp: "cs.fp"; fq: "cs.fq"; fr: "cs.fr"; fs: "cs.fs"; ft: "cs.ft"; fu: "cs.fu"; fv: "cs.fv"; fw: "cs.fw"; fx: "cs.fx"; fy: "cs.fy"; fz: "cs.fz"; ga: "cs.ga"; gb: "cs.gb"; gc: "cs.gc"; gd: "cs.gd"; ge: "cs.ge"; gf: "cs.gf"; gg: "cs.gg"; gh: "cs.gh"; gi: "cs.gi"; gj: "cs.gj"; gk: "cs.gk"; gl: "cs.gl"; gm: "cs.gm"; gn: "cs.gn"; go: "cs.go"; gp: "cs.gp"; gq: "cs.gq"; gr: "cs.gr"; gs: "cs.gs"; gt: "cs.gt"; gu: "cs.gu"; gv: "cs.gv"; gw: "cs.gw"; gx: "cs.gx"; gy: "cs.gy"; gz: "cs.gz"; ha: "cs.ha"; hb: "cs.hb"; hc: "cs.hc"; hd: "cs.hd"; he: "cs.he"; hf: "cs.hf"; hg: "cs.hg"; hh: "cs.hh"; hi: "cs.hi"; hj: "cs.hj"; hk: "cs.hk"; hl: "cs.hl"; hm: "cs.hm"; hn: "cs.hn"; ho: "cs.ho"; hp: "cs.hp"; hq: "cs.hq"; hr: "cs.hr"; hs: "cs.hs"; ht: "cs.ht"; hu: "cs.hu"; hv: "cs.hv"; hw: "cs.hw"; hx: "cs.hx"; hy: "cs.hy"; hz: "cs.hz"; ia: "cs.ia"; ib: "cs.ib"; ic: "cs.ic"; id: "cs.id"; ie: "cs.ie"; if: "cs.if"; ig: "cs.ig"; ih: "cs.ih"; ii: "cs.ii"; ij: "cs.ij"; ik: "cs.ik"; il: "cs.il"; im: "cs.im"; in: "cs.in"; io: "cs.io"; ip: "cs.ip"; iq: "cs.iq"; ir: "cs.ir"; is: "cs.is"; it: "cs.it"; iu: "cs.iu"; iv: "cs.iv"; iw: "cs.iw"; ix: "cs.ix"; iy: "cs.iy"; iz: "cs.iz"; ja: "cs.ja"; jb: "cs.jb"; jc: "cs.jc"; jd: "cs.jd"; je: "cs.je"; jf: "cs.jf"; jg: "cs.jg"; jh: "cs.jh"; ji: "cs.ji"; jj: "cs.jj"; jk: "cs.jk"; jl: "cs.jl"; jm: "cs.jm"; jn: "cs.jn"; jo: "cs.jo"; jp: "cs.jp"; jq: "cs.jq"; jr: "cs.jr"; js: "cs.js"; jt: "cs.jt"; ju: "cs.ju"; jv: "cs.jv"; jw: "cs.jw"; jx: "cs.jx"; jy: "cs.jy"; jz: "cs.jz"; ka: "cs.ka"; kb: "cs.kb"; kc: "cs.kc"; kd: "cs.kd"; ke: "cs.ke"; kf: "cs.kf"; kg: "cs.kg"; kh: "cs.kh"; ki: "cs.ki"; kj: "cs.kj"; kk: "cs.kk"; kl: "cs.kl"; km: "cs.km"; kn: "cs.kn"; ko: "cs.ko"; kp: "cs.kp"; kq: "cs.kq"; kr: "cs.kr"; ks: "cs.ks"; kt: "cs.kt"; ku: "cs.ku"; kv: "cs.kv"; kw: "cs.kw"; kx: "cs.kx"; ky: "cs.ky"; kz: "cs.kz"; la: "cs.la"; lb: "cs.lb"; lc: "cs.lc"; ld: "cs.ld"; le: "cs.le"; lf: "cs.lf"; lg: "cs.lg"; lh: "cs.lh"; li: "cs.li"; lj: "cs.lj"; lk: "cs.lk"; ll: "cs.ll"; lm: "cs.lm"; ln: "cs.ln"; lo: "cs.lo"; lp: "cs.lp"; lq: "cs.lq"; lr: "cs.lr"; ls: "cs.ls"; lt: "cs.lt"; lu: "cs.lu"; lv: "cs.lv"; lw: "cs.lw"; lx: "cs.lx"; ly: "cs.ly"; lz: "cs.lz"; ma: "cs.ma"; mb: "cs.mb"; mc: "cs.mc"; md: "cs.md"; me: "cs.me"; mf: "cs.mf"; mg: "cs.mg"; mh: "cs.mh"; mi: "cs.mi"; mj: "cs.mj"; mk: "cs.mk"; ml: "cs.ml"; mm: "cs.mm"; mn: "cs.mn"; mo: "cs.mo"; mp: "cs.mp"; mq: "cs.mq"; mr: "cs.mr"; ms: "cs.ms"; mt: "cs.mt"; mu: "cs.mu"; mv: "cs.mv"; mw: "cs.mw"; mx: "cs.mx"; my: "cs.my"; mz: "cs.mz"; na: "cs.na"; nb: "cs.nb"; nc: "cs.nc"; nd: "cs.nd"; ne: "cs.ne"; nf: "cs.nf"; ng: "cs.ng"; nh: "cs.nh"; ni: "cs.ni"; nj: "cs.nj"; nk: "cs.nk"; nl: "cs.nl"; nm: "cs.nm"; nn: "cs.nn"; no: "cs.no"; np: "cs.np"; nq: "cs.nq"; nr: "cs.nr"; ns: "cs.ns"; nt: "cs.nt"; nu: "cs.nu"; nv: "cs.nv"; nw: "cs.nw"; nx: "cs.nx"; ny: "cs.ny"; nz: "cs.nz"; oa: "cs.oa"; ob: "cs.ob"; oc: "cs.oc"; od: "cs.od"; oe: "cs.oe"; of: "cs.of"; og: "cs.og"; oh: "cs.oh"; oi: "cs.oi"; oj: "cs.oj"; ok: "cs.ok"; ol: "cs.ol"; om: "cs.om"; on: "cs.on"; oo: "cs.oo"; op: "cs.op"; oq: "cs.oq"; or: "cs.or"; os: "cs.os"; ot: "cs.ot"; ou: "cs.ou"; ov: "cs.ov"; ow: "cs.ow"; ox: "cs.ox"; oy: "cs.oy"; oz: "cs.oz"; pa: "cs.pa"; pb: "cs.pb"; pc: "cs.pc"; pd: "cs.pd"; pe: "cs.pe"; pf: "cs.pf"; pg: "cs.pg"; ph: "cs.ph"; pi: "cs.pi"; pj: "cs.pj"; pk: "cs.pk"; pl: "cs.pl"; pm: "cs.pm"; pn: "cs.pn"; po: "cs.po"; pp: "cs.pp"; pq: "cs.pq"; pr: "cs.pr"; ps: "cs.ps"; pt: "cs.pt"; pu: "cs.pu"; pv: "cs.pv"; pw: "cs.pw"; px: "cs.px"; py: "cs.py"; pz: "cs.pz"; qa: "cs.qa"; qb: "cs.qb"; qc: "cs.qc"; qd: "cs.qd"; qe: "cs.qe"; qf: "cs.qf"; qg: "cs.qg"; qh: "cs.qh"; qi: "cs.qi"; qj: "cs.qj"; qk: "cs.qk"; ql: "cs.ql"; qm: "cs.qm"; qn: "cs.qn"; qo: "cs.qo"; qp: "cs.qp"; qq: "cs.qq"; qr: "cs.qr"; qs: "cs.qs"; qt: "cs.qt"; qu: "cs.qu"; qv: "cs.qv"; qw: "cs.qw"; qx: "cs.qx"; qy: "cs.qy"; qz: "cs.qz"; ra: "cs.ra"; rb: "cs.rb"; rc: "cs.rc"; rd: "cs.rd"; re: "cs.re"; rf: "cs.rf"; rg: "cs.rg"; rh: "cs.rh"; ri: "cs.ri"; rj: "cs.rj"; rk: "cs.rk"; rl: "cs.rl"; rm: "cs.rm"; rn: "cs.rn"; ro: "cs.ro"; rp: "cs.rp"; rq: "cs.rq"; rr: "cs.rr"; rs: "cs.rs"; rt: "cs.rt"; ru: "cs.ru"; rv: "cs.rv"; rw: "cs.rw"; rx: "cs.rx"; ry: "cs.ry"; rz: "cs.rz"; sa: "cs.sa"; sb: "cs.sb"; sc: "cs.sc"; sd: "cs.sd"; se: "cs.se"; sf: "cs.sf"; sg: "cs.sg"; sh: "cs.sh"; si: "cs.si"; sj: "cs.sj"; sk: "cs.sk"; sl: "cs.sl"; sm: "cs.sm"; sn: "cs.sn"; so: "cs.so"; sp: "cs.sp"; sq: "cs.sq"; sr: "cs.sr"; ss: "cs.ss"; st: "cs.st"; su: "cs.su"; sv: "cs.sv"; sw: "cs.sw"; sx: "cs.sx"; sy: "cs.sy"; sz: "cs.sz"; ta: "cs.ta"; tb: "cs.tb"; tc: "cs.tc"; td: "cs.td"; te: "cs.te"; tf: "cs.tf"; tg: "cs.tg"; th: "cs.th"; ti: "cs.ti"; tj: "cs.tj"; tk: "cs.tk"; tl: "cs.tl"; tm: "cs.tm"; tn: "cs.tn"; to: "cs.to"; tp: "cs.tp"; tq: "cs.tq"; tr: "cs.tr"; ts: "cs.ts"; tt: "cs.tt"; tu: "cs.tu"; tv: "cs.tv"; tw: "cs.tw"; tx: "cs.tx"; ty: "cs.ty"; tz: "cs.tz"; ua: "cs.ua"; ub: "cs.ub"; uc: "cs.uc"; ud: "cs.ud"; ue: "cs.ue"; uf: "cs.uf"; ug: "cs.ug"; uh: "cs.uh"; ui: "cs.ui"; uj: "cs.uj"; uk: "cs.uk"; ul: "cs.ul"; um: "cs.um"; un: "cs.un"; uo: "cs.uo"; up: "cs.up"; uq: "cs.uq"; ur: "cs.ur"; us: "cs.us"; ut: "cs.ut"; uu: "cs.uu"; uv: "cs.uv"; uw: "cs.uw"; ux: "cs.ux"; uy: "cs.uy"; uz: "cs.uz"; va: "cs.va"; vb: "cs.vb"; vc: "cs.vc"; vd: "cs.vd"; ve: "cs.ve"; vf: "cs.vf"; vg: "cs.vg"; vh: "cs.vh"; vi: "cs.vi"; vj: "cs.vj"; vk: "cs.vk"; vl: "cs.vl"; vm: "cs.vm"; vn: "cs.vn"; vo: "cs.vo"; vp: "cs.vp"; vq: "cs.vq"; vr: "cs.vr"; vs: "cs.vs"; vt: "cs.vt"; vu: "cs.vu"; vv: "cs.vv"; vw: "cs.vw"; vx: "cs.vx"; vy: "cs.vy"; vz: "cs.vz"; wa: "cs.wa"; wb: "cs.wb"; wc: "cs.wc"; wd: "cs.wd"; we: "cs.we"; wf: "cs.wf"; wg: "cs.wg"; wh: "cs.wh"; wi: "cs.wi"; wj: "cs.wj"; wk: "cs.wk"; wl: "cs.wl"; wm: "cs.wm"; wn: "cs.wn"; wo: "cs.wo"; wp: "cs.wp"; wq: "cs.wq"; wr: "cs.wr"; ws: "cs.ws"; wt: "cs.wt"; wu: "cs.wu"; wv: "cs.wv"; ww: "cs.ww"; wx: "cs.wx"; wy: "cs.wy"; wz: "cs.wz"; xa: "cs.xa"; xb: "cs.xb"; xc: "cs.xc"; xd: "cs.xd"; xe: "cs.xe"; xf: "cs.xf"; xg: "cs.xg"; xh: "cs.xh"; xi: "cs.xi"; xj: "cs.xj"; xk: "cs.xk"; xl: "cs.xl"; xm: "cs.xm"; xn: "cs.xn"; xo: "cs.xo"; xp: "cs.xp"; xq: "cs.xq"; xr: "cs.xr"; xs: "cs.xs"; xt: "cs.xt"; xu: "cs.xu"; xv: "cs.xv"; xw: "cs.xw"; xx: "cs.xx"; xy: "cs.xy"; xz: "cs.xz"; ya: "cs.ya"; yb: "cs.yb"; yc: "cs.yc"; yd: "cs.yd"; ye: "cs.ye"; yf: "cs.yf"; yg: "cs.yg"; yh: "cs.yh"; yi: "cs.yi"; yj: "cs.yj"; yk: "cs.yk"; yl: "cs.yl"; ym: "cs.ym"; yn: "cs.yn"; yo: "cs.yo"; yp: "cs.yp"; yq: "cs.yq"; yr: "cs.yr"; ys: "cs.ys"; yt: "cs.yt"; yu: "cs.yu"; yv: "cs.yv"; yw: "cs.yw"; yx: "cs.yx"; yy: "cs.yy"; yz: "cs.yz"; za: "cs.za"; zb: "cs.zb"; zc: "cs.zc"; zd: "cs.zd"; ze: "cs.ze"; zf: "cs.zf"; zg: "cs.zg"; zh: "cs.zh"; zi: "cs.zi"; zj: "cs.zj"; zk: "cs.zk"; zl: "cs.zl"; zm: "cs.zm"; zn: "cs.zn"; zo: "cs.zo"; zp: "cs.zp"; zq: "cs.zq"; zr: "cs.zr"; zs: "cs.zs"; zt: "cs.zt"; zu: "cs.zu"; zv: "cs.zv"; zw: "cs.zw"; zx: "cs.zx"; zy: "cs.zy"; zz: "cs.zz"; }; ct: { aa: "ct.aa"; ab: "ct.ab"; ac: "ct.ac"; ad: "ct.ad"; ae: "ct.ae"; af: "ct.af"; ag: "ct.ag"; ah: "ct.ah"; ai: "ct.ai"; aj: "ct.aj"; ak: "ct.ak"; al: "ct.al"; am: "ct.am"; an: "ct.an"; ao: "ct.ao"; ap: "ct.ap"; aq: "ct.aq"; ar: "ct.ar"; as: "ct.as"; at: "ct.at"; au: "ct.au"; av: "ct.av"; aw: "ct.aw"; ax: "ct.ax"; ay: "ct.ay"; az: "ct.az"; ba: "ct.ba"; bb: "ct.bb"; bc: "ct.bc"; bd: "ct.bd"; be: "ct.be"; bf: "ct.bf"; bg: "ct.bg"; bh: "ct.bh"; bi: "ct.bi"; bj: "ct.bj"; bk: "ct.bk"; bl: "ct.bl"; bm: "ct.bm"; bn: "ct.bn"; bo: "ct.bo"; bp: "ct.bp"; bq: "ct.bq"; br: "ct.br"; bs: "ct.bs"; bt: "ct.bt"; bu: "ct.bu"; bv: "ct.bv"; bw: "ct.bw"; bx: "ct.bx"; by: "ct.by"; bz: "ct.bz"; ca: "ct.ca"; cb: "ct.cb"; cc: "ct.cc"; cd: "ct.cd"; ce: "ct.ce"; cf: "ct.cf"; cg: "ct.cg"; ch: "ct.ch"; ci: "ct.ci"; cj: "ct.cj"; ck: "ct.ck"; cl: "ct.cl"; cm: "ct.cm"; cn: "ct.cn"; co: "ct.co"; cp: "ct.cp"; cq: "ct.cq"; cr: "ct.cr"; cs: "ct.cs"; ct: "ct.ct"; cu: "ct.cu"; cv: "ct.cv"; cw: "ct.cw"; cx: "ct.cx"; cy: "ct.cy"; cz: "ct.cz"; da: "ct.da"; db: "ct.db"; dc: "ct.dc"; dd: "ct.dd"; de: "ct.de"; df: "ct.df"; dg: "ct.dg"; dh: "ct.dh"; di: "ct.di"; dj: "ct.dj"; dk: "ct.dk"; dl: "ct.dl"; dm: "ct.dm"; dn: "ct.dn"; do: "ct.do"; dp: "ct.dp"; dq: "ct.dq"; dr: "ct.dr"; ds: "ct.ds"; dt: "ct.dt"; du: "ct.du"; dv: "ct.dv"; dw: "ct.dw"; dx: "ct.dx"; dy: "ct.dy"; dz: "ct.dz"; ea: "ct.ea"; eb: "ct.eb"; ec: "ct.ec"; ed: "ct.ed"; ee: "ct.ee"; ef: "ct.ef"; eg: "ct.eg"; eh: "ct.eh"; ei: "ct.ei"; ej: "ct.ej"; ek: "ct.ek"; el: "ct.el"; em: "ct.em"; en: "ct.en"; eo: "ct.eo"; ep: "ct.ep"; eq: "ct.eq"; er: "ct.er"; es: "ct.es"; et: "ct.et"; eu: "ct.eu"; ev: "ct.ev"; ew: "ct.ew"; ex: "ct.ex"; ey: "ct.ey"; ez: "ct.ez"; fa: "ct.fa"; fb: "ct.fb"; fc: "ct.fc"; fd: "ct.fd"; fe: "ct.fe"; ff: "ct.ff"; fg: "ct.fg"; fh: "ct.fh"; fi: "ct.fi"; fj: "ct.fj"; fk: "ct.fk"; fl: "ct.fl"; fm: "ct.fm"; fn: "ct.fn"; fo: "ct.fo"; fp: "ct.fp"; fq: "ct.fq"; fr: "ct.fr"; fs: "ct.fs"; ft: "ct.ft"; fu: "ct.fu"; fv: "ct.fv"; fw: "ct.fw"; fx: "ct.fx"; fy: "ct.fy"; fz: "ct.fz"; ga: "ct.ga"; gb: "ct.gb"; gc: "ct.gc"; gd: "ct.gd"; ge: "ct.ge"; gf: "ct.gf"; gg: "ct.gg"; gh: "ct.gh"; gi: "ct.gi"; gj: "ct.gj"; gk: "ct.gk"; gl: "ct.gl"; gm: "ct.gm"; gn: "ct.gn"; go: "ct.go"; gp: "ct.gp"; gq: "ct.gq"; gr: "ct.gr"; gs: "ct.gs"; gt: "ct.gt"; gu: "ct.gu"; gv: "ct.gv"; gw: "ct.gw"; gx: "ct.gx"; gy: "ct.gy"; gz: "ct.gz"; ha: "ct.ha"; hb: "ct.hb"; hc: "ct.hc"; hd: "ct.hd"; he: "ct.he"; hf: "ct.hf"; hg: "ct.hg"; hh: "ct.hh"; hi: "ct.hi"; hj: "ct.hj"; hk: "ct.hk"; hl: "ct.hl"; hm: "ct.hm"; hn: "ct.hn"; ho: "ct.ho"; hp: "ct.hp"; hq: "ct.hq"; hr: "ct.hr"; hs: "ct.hs"; ht: "ct.ht"; hu: "ct.hu"; hv: "ct.hv"; hw: "ct.hw"; hx: "ct.hx"; hy: "ct.hy"; hz: "ct.hz"; ia: "ct.ia"; ib: "ct.ib"; ic: "ct.ic"; id: "ct.id"; ie: "ct.ie"; if: "ct.if"; ig: "ct.ig"; ih: "ct.ih"; ii: "ct.ii"; ij: "ct.ij"; ik: "ct.ik"; il: "ct.il"; im: "ct.im"; in: "ct.in"; io: "ct.io"; ip: "ct.ip"; iq: "ct.iq"; ir: "ct.ir"; is: "ct.is"; it: "ct.it"; iu: "ct.iu"; iv: "ct.iv"; iw: "ct.iw"; ix: "ct.ix"; iy: "ct.iy"; iz: "ct.iz"; ja: "ct.ja"; jb: "ct.jb"; jc: "ct.jc"; jd: "ct.jd"; je: "ct.je"; jf: "ct.jf"; jg: "ct.jg"; jh: "ct.jh"; ji: "ct.ji"; jj: "ct.jj"; jk: "ct.jk"; jl: "ct.jl"; jm: "ct.jm"; jn: "ct.jn"; jo: "ct.jo"; jp: "ct.jp"; jq: "ct.jq"; jr: "ct.jr"; js: "ct.js"; jt: "ct.jt"; ju: "ct.ju"; jv: "ct.jv"; jw: "ct.jw"; jx: "ct.jx"; jy: "ct.jy"; jz: "ct.jz"; ka: "ct.ka"; kb: "ct.kb"; kc: "ct.kc"; kd: "ct.kd"; ke: "ct.ke"; kf: "ct.kf"; kg: "ct.kg"; kh: "ct.kh"; ki: "ct.ki"; kj: "ct.kj"; kk: "ct.kk"; kl: "ct.kl"; km: "ct.km"; kn: "ct.kn"; ko: "ct.ko"; kp: "ct.kp"; kq: "ct.kq"; kr: "ct.kr"; ks: "ct.ks"; kt: "ct.kt"; ku: "ct.ku"; kv: "ct.kv"; kw: "ct.kw"; kx: "ct.kx"; ky: "ct.ky"; kz: "ct.kz"; la: "ct.la"; lb: "ct.lb"; lc: "ct.lc"; ld: "ct.ld"; le: "ct.le"; lf: "ct.lf"; lg: "ct.lg"; lh: "ct.lh"; li: "ct.li"; lj: "ct.lj"; lk: "ct.lk"; ll: "ct.ll"; lm: "ct.lm"; ln: "ct.ln"; lo: "ct.lo"; lp: "ct.lp"; lq: "ct.lq"; lr: "ct.lr"; ls: "ct.ls"; lt: "ct.lt"; lu: "ct.lu"; lv: "ct.lv"; lw: "ct.lw"; lx: "ct.lx"; ly: "ct.ly"; lz: "ct.lz"; ma: "ct.ma"; mb: "ct.mb"; mc: "ct.mc"; md: "ct.md"; me: "ct.me"; mf: "ct.mf"; mg: "ct.mg"; mh: "ct.mh"; mi: "ct.mi"; mj: "ct.mj"; mk: "ct.mk"; ml: "ct.ml"; mm: "ct.mm"; mn: "ct.mn"; mo: "ct.mo"; mp: "ct.mp"; mq: "ct.mq"; mr: "ct.mr"; ms: "ct.ms"; mt: "ct.mt"; mu: "ct.mu"; mv: "ct.mv"; mw: "ct.mw"; mx: "ct.mx"; my: "ct.my"; mz: "ct.mz"; na: "ct.na"; nb: "ct.nb"; nc: "ct.nc"; nd: "ct.nd"; ne: "ct.ne"; nf: "ct.nf"; ng: "ct.ng"; nh: "ct.nh"; ni: "ct.ni"; nj: "ct.nj"; nk: "ct.nk"; nl: "ct.nl"; nm: "ct.nm"; nn: "ct.nn"; no: "ct.no"; np: "ct.np"; nq: "ct.nq"; nr: "ct.nr"; ns: "ct.ns"; nt: "ct.nt"; nu: "ct.nu"; nv: "ct.nv"; nw: "ct.nw"; nx: "ct.nx"; ny: "ct.ny"; nz: "ct.nz"; oa: "ct.oa"; ob: "ct.ob"; oc: "ct.oc"; od: "ct.od"; oe: "ct.oe"; of: "ct.of"; og: "ct.og"; oh: "ct.oh"; oi: "ct.oi"; oj: "ct.oj"; ok: "ct.ok"; ol: "ct.ol"; om: "ct.om"; on: "ct.on"; oo: "ct.oo"; op: "ct.op"; oq: "ct.oq"; or: "ct.or"; os: "ct.os"; ot: "ct.ot"; ou: "ct.ou"; ov: "ct.ov"; ow: "ct.ow"; ox: "ct.ox"; oy: "ct.oy"; oz: "ct.oz"; pa: "ct.pa"; pb: "ct.pb"; pc: "ct.pc"; pd: "ct.pd"; pe: "ct.pe"; pf: "ct.pf"; pg: "ct.pg"; ph: "ct.ph"; pi: "ct.pi"; pj: "ct.pj"; pk: "ct.pk"; pl: "ct.pl"; pm: "ct.pm"; pn: "ct.pn"; po: "ct.po"; pp: "ct.pp"; pq: "ct.pq"; pr: "ct.pr"; ps: "ct.ps"; pt: "ct.pt"; pu: "ct.pu"; pv: "ct.pv"; pw: "ct.pw"; px: "ct.px"; py: "ct.py"; pz: "ct.pz"; qa: "ct.qa"; qb: "ct.qb"; qc: "ct.qc"; qd: "ct.qd"; qe: "ct.qe"; qf: "ct.qf"; qg: "ct.qg"; qh: "ct.qh"; qi: "ct.qi"; qj: "ct.qj"; qk: "ct.qk"; ql: "ct.ql"; qm: "ct.qm"; qn: "ct.qn"; qo: "ct.qo"; qp: "ct.qp"; qq: "ct.qq"; qr: "ct.qr"; qs: "ct.qs"; qt: "ct.qt"; qu: "ct.qu"; qv: "ct.qv"; qw: "ct.qw"; qx: "ct.qx"; qy: "ct.qy"; qz: "ct.qz"; ra: "ct.ra"; rb: "ct.rb"; rc: "ct.rc"; rd: "ct.rd"; re: "ct.re"; rf: "ct.rf"; rg: "ct.rg"; rh: "ct.rh"; ri: "ct.ri"; rj: "ct.rj"; rk: "ct.rk"; rl: "ct.rl"; rm: "ct.rm"; rn: "ct.rn"; ro: "ct.ro"; rp: "ct.rp"; rq: "ct.rq"; rr: "ct.rr"; rs: "ct.rs"; rt: "ct.rt"; ru: "ct.ru"; rv: "ct.rv"; rw: "ct.rw"; rx: "ct.rx"; ry: "ct.ry"; rz: "ct.rz"; sa: "ct.sa"; sb: "ct.sb"; sc: "ct.sc"; sd: "ct.sd"; se: "ct.se"; sf: "ct.sf"; sg: "ct.sg"; sh: "ct.sh"; si: "ct.si"; sj: "ct.sj"; sk: "ct.sk"; sl: "ct.sl"; sm: "ct.sm"; sn: "ct.sn"; so: "ct.so"; sp: "ct.sp"; sq: "ct.sq"; sr: "ct.sr"; ss: "ct.ss"; st: "ct.st"; su: "ct.su"; sv: "ct.sv"; sw: "ct.sw"; sx: "ct.sx"; sy: "ct.sy"; sz: "ct.sz"; ta: "ct.ta"; tb: "ct.tb"; tc: "ct.tc"; td: "ct.td"; te: "ct.te"; tf: "ct.tf"; tg: "ct.tg"; th: "ct.th"; ti: "ct.ti"; tj: "ct.tj"; tk: "ct.tk"; tl: "ct.tl"; tm: "ct.tm"; tn: "ct.tn"; to: "ct.to"; tp: "ct.tp"; tq: "ct.tq"; tr: "ct.tr"; ts: "ct.ts"; tt: "ct.tt"; tu: "ct.tu"; tv: "ct.tv"; tw: "ct.tw"; tx: "ct.tx"; ty: "ct.ty"; tz: "ct.tz"; ua: "ct.ua"; ub: "ct.ub"; uc: "ct.uc"; ud: "ct.ud"; ue: "ct.ue"; uf: "ct.uf"; ug: "ct.ug"; uh: "ct.uh"; ui: "ct.ui"; uj: "ct.uj"; uk: "ct.uk"; ul: "ct.ul"; um: "ct.um"; un: "ct.un"; uo: "ct.uo"; up: "ct.up"; uq: "ct.uq"; ur: "ct.ur"; us: "ct.us"; ut: "ct.ut"; uu: "ct.uu"; uv: "ct.uv"; uw: "ct.uw"; ux: "ct.ux"; uy: "ct.uy"; uz: "ct.uz"; va: "ct.va"; vb: "ct.vb"; vc: "ct.vc"; vd: "ct.vd"; ve: "ct.ve"; vf: "ct.vf"; vg: "ct.vg"; vh: "ct.vh"; vi: "ct.vi"; vj: "ct.vj"; vk: "ct.vk"; vl: "ct.vl"; vm: "ct.vm"; vn: "ct.vn"; vo: "ct.vo"; vp: "ct.vp"; vq: "ct.vq"; vr: "ct.vr"; vs: "ct.vs"; vt: "ct.vt"; vu: "ct.vu"; vv: "ct.vv"; vw: "ct.vw"; vx: "ct.vx"; vy: "ct.vy"; vz: "ct.vz"; wa: "ct.wa"; wb: "ct.wb"; wc: "ct.wc"; wd: "ct.wd"; we: "ct.we"; wf: "ct.wf"; wg: "ct.wg"; wh: "ct.wh"; wi: "ct.wi"; wj: "ct.wj"; wk: "ct.wk"; wl: "ct.wl"; wm: "ct.wm"; wn: "ct.wn"; wo: "ct.wo"; wp: "ct.wp"; wq: "ct.wq"; wr: "ct.wr"; ws: "ct.ws"; wt: "ct.wt"; wu: "ct.wu"; wv: "ct.wv"; ww: "ct.ww"; wx: "ct.wx"; wy: "ct.wy"; wz: "ct.wz"; xa: "ct.xa"; xb: "ct.xb"; xc: "ct.xc"; xd: "ct.xd"; xe: "ct.xe"; xf: "ct.xf"; xg: "ct.xg"; xh: "ct.xh"; xi: "ct.xi"; xj: "ct.xj"; xk: "ct.xk"; xl: "ct.xl"; xm: "ct.xm"; xn: "ct.xn"; xo: "ct.xo"; xp: "ct.xp"; xq: "ct.xq"; xr: "ct.xr"; xs: "ct.xs"; xt: "ct.xt"; xu: "ct.xu"; xv: "ct.xv"; xw: "ct.xw"; xx: "ct.xx"; xy: "ct.xy"; xz: "ct.xz"; ya: "ct.ya"; yb: "ct.yb"; yc: "ct.yc"; yd: "ct.yd"; ye: "ct.ye"; yf: "ct.yf"; yg: "ct.yg"; yh: "ct.yh"; yi: "ct.yi"; yj: "ct.yj"; yk: "ct.yk"; yl: "ct.yl"; ym: "ct.ym"; yn: "ct.yn"; yo: "ct.yo"; yp: "ct.yp"; yq: "ct.yq"; yr: "ct.yr"; ys: "ct.ys"; yt: "ct.yt"; yu: "ct.yu"; yv: "ct.yv"; yw: "ct.yw"; yx: "ct.yx"; yy: "ct.yy"; yz: "ct.yz"; za: "ct.za"; zb: "ct.zb"; zc: "ct.zc"; zd: "ct.zd"; ze: "ct.ze"; zf: "ct.zf"; zg: "ct.zg"; zh: "ct.zh"; zi: "ct.zi"; zj: "ct.zj"; zk: "ct.zk"; zl: "ct.zl"; zm: "ct.zm"; zn: "ct.zn"; zo: "ct.zo"; zp: "ct.zp"; zq: "ct.zq"; zr: "ct.zr"; zs: "ct.zs"; zt: "ct.zt"; zu: "ct.zu"; zv: "ct.zv"; zw: "ct.zw"; zx: "ct.zx"; zy: "ct.zy"; zz: "ct.zz"; }; cu: { aa: "cu.aa"; ab: "cu.ab"; ac: "cu.ac"; ad: "cu.ad"; ae: "cu.ae"; af: "cu.af"; ag: "cu.ag"; ah: "cu.ah"; ai: "cu.ai"; aj: "cu.aj"; ak: "cu.ak"; al: "cu.al"; am: "cu.am"; an: "cu.an"; ao: "cu.ao"; ap: "cu.ap"; aq: "cu.aq"; ar: "cu.ar"; as: "cu.as"; at: "cu.at"; au: "cu.au"; av: "cu.av"; aw: "cu.aw"; ax: "cu.ax"; ay: "cu.ay"; az: "cu.az"; ba: "cu.ba"; bb: "cu.bb"; bc: "cu.bc"; bd: "cu.bd"; be: "cu.be"; bf: "cu.bf"; bg: "cu.bg"; bh: "cu.bh"; bi: "cu.bi"; bj: "cu.bj"; bk: "cu.bk"; bl: "cu.bl"; bm: "cu.bm"; bn: "cu.bn"; bo: "cu.bo"; bp: "cu.bp"; bq: "cu.bq"; br: "cu.br"; bs: "cu.bs"; bt: "cu.bt"; bu: "cu.bu"; bv: "cu.bv"; bw: "cu.bw"; bx: "cu.bx"; by: "cu.by"; bz: "cu.bz"; ca: "cu.ca"; cb: "cu.cb"; cc: "cu.cc"; cd: "cu.cd"; ce: "cu.ce"; cf: "cu.cf"; cg: "cu.cg"; ch: "cu.ch"; ci: "cu.ci"; cj: "cu.cj"; ck: "cu.ck"; cl: "cu.cl"; cm: "cu.cm"; cn: "cu.cn"; co: "cu.co"; cp: "cu.cp"; cq: "cu.cq"; cr: "cu.cr"; cs: "cu.cs"; ct: "cu.ct"; cu: "cu.cu"; cv: "cu.cv"; cw: "cu.cw"; cx: "cu.cx"; cy: "cu.cy"; cz: "cu.cz"; da: "cu.da"; db: "cu.db"; dc: "cu.dc"; dd: "cu.dd"; de: "cu.de"; df: "cu.df"; dg: "cu.dg"; dh: "cu.dh"; di: "cu.di"; dj: "cu.dj"; dk: "cu.dk"; dl: "cu.dl"; dm: "cu.dm"; dn: "cu.dn"; do: "cu.do"; dp: "cu.dp"; dq: "cu.dq"; dr: "cu.dr"; ds: "cu.ds"; dt: "cu.dt"; du: "cu.du"; dv: "cu.dv"; dw: "cu.dw"; dx: "cu.dx"; dy: "cu.dy"; dz: "cu.dz"; ea: "cu.ea"; eb: "cu.eb"; ec: "cu.ec"; ed: "cu.ed"; ee: "cu.ee"; ef: "cu.ef"; eg: "cu.eg"; eh: "cu.eh"; ei: "cu.ei"; ej: "cu.ej"; ek: "cu.ek"; el: "cu.el"; em: "cu.em"; en: "cu.en"; eo: "cu.eo"; ep: "cu.ep"; eq: "cu.eq"; er: "cu.er"; es: "cu.es"; et: "cu.et"; eu: "cu.eu"; ev: "cu.ev"; ew: "cu.ew"; ex: "cu.ex"; ey: "cu.ey"; ez: "cu.ez"; fa: "cu.fa"; fb: "cu.fb"; fc: "cu.fc"; fd: "cu.fd"; fe: "cu.fe"; ff: "cu.ff"; fg: "cu.fg"; fh: "cu.fh"; fi: "cu.fi"; fj: "cu.fj"; fk: "cu.fk"; fl: "cu.fl"; fm: "cu.fm"; fn: "cu.fn"; fo: "cu.fo"; fp: "cu.fp"; fq: "cu.fq"; fr: "cu.fr"; fs: "cu.fs"; ft: "cu.ft"; fu: "cu.fu"; fv: "cu.fv"; fw: "cu.fw"; fx: "cu.fx"; fy: "cu.fy"; fz: "cu.fz"; ga: "cu.ga"; gb: "cu.gb"; gc: "cu.gc"; gd: "cu.gd"; ge: "cu.ge"; gf: "cu.gf"; gg: "cu.gg"; gh: "cu.gh"; gi: "cu.gi"; gj: "cu.gj"; gk: "cu.gk"; gl: "cu.gl"; gm: "cu.gm"; gn: "cu.gn"; go: "cu.go"; gp: "cu.gp"; gq: "cu.gq"; gr: "cu.gr"; gs: "cu.gs"; gt: "cu.gt"; gu: "cu.gu"; gv: "cu.gv"; gw: "cu.gw"; gx: "cu.gx"; gy: "cu.gy"; gz: "cu.gz"; ha: "cu.ha"; hb: "cu.hb"; hc: "cu.hc"; hd: "cu.hd"; he: "cu.he"; hf: "cu.hf"; hg: "cu.hg"; hh: "cu.hh"; hi: "cu.hi"; hj: "cu.hj"; hk: "cu.hk"; hl: "cu.hl"; hm: "cu.hm"; hn: "cu.hn"; ho: "cu.ho"; hp: "cu.hp"; hq: "cu.hq"; hr: "cu.hr"; hs: "cu.hs"; ht: "cu.ht"; hu: "cu.hu"; hv: "cu.hv"; hw: "cu.hw"; hx: "cu.hx"; hy: "cu.hy"; hz: "cu.hz"; ia: "cu.ia"; ib: "cu.ib"; ic: "cu.ic"; id: "cu.id"; ie: "cu.ie"; if: "cu.if"; ig: "cu.ig"; ih: "cu.ih"; ii: "cu.ii"; ij: "cu.ij"; ik: "cu.ik"; il: "cu.il"; im: "cu.im"; in: "cu.in"; io: "cu.io"; ip: "cu.ip"; iq: "cu.iq"; ir: "cu.ir"; is: "cu.is"; it: "cu.it"; iu: "cu.iu"; iv: "cu.iv"; iw: "cu.iw"; ix: "cu.ix"; iy: "cu.iy"; iz: "cu.iz"; ja: "cu.ja"; jb: "cu.jb"; jc: "cu.jc"; jd: "cu.jd"; je: "cu.je"; jf: "cu.jf"; jg: "cu.jg"; jh: "cu.jh"; ji: "cu.ji"; jj: "cu.jj"; jk: "cu.jk"; jl: "cu.jl"; jm: "cu.jm"; jn: "cu.jn"; jo: "cu.jo"; jp: "cu.jp"; jq: "cu.jq"; jr: "cu.jr"; js: "cu.js"; jt: "cu.jt"; ju: "cu.ju"; jv: "cu.jv"; jw: "cu.jw"; jx: "cu.jx"; jy: "cu.jy"; jz: "cu.jz"; ka: "cu.ka"; kb: "cu.kb"; kc: "cu.kc"; kd: "cu.kd"; ke: "cu.ke"; kf: "cu.kf"; kg: "cu.kg"; kh: "cu.kh"; ki: "cu.ki"; kj: "cu.kj"; kk: "cu.kk"; kl: "cu.kl"; km: "cu.km"; kn: "cu.kn"; ko: "cu.ko"; kp: "cu.kp"; kq: "cu.kq"; kr: "cu.kr"; ks: "cu.ks"; kt: "cu.kt"; ku: "cu.ku"; kv: "cu.kv"; kw: "cu.kw"; kx: "cu.kx"; ky: "cu.ky"; kz: "cu.kz"; la: "cu.la"; lb: "cu.lb"; lc: "cu.lc"; ld: "cu.ld"; le: "cu.le"; lf: "cu.lf"; lg: "cu.lg"; lh: "cu.lh"; li: "cu.li"; lj: "cu.lj"; lk: "cu.lk"; ll: "cu.ll"; lm: "cu.lm"; ln: "cu.ln"; lo: "cu.lo"; lp: "cu.lp"; lq: "cu.lq"; lr: "cu.lr"; ls: "cu.ls"; lt: "cu.lt"; lu: "cu.lu"; lv: "cu.lv"; lw: "cu.lw"; lx: "cu.lx"; ly: "cu.ly"; lz: "cu.lz"; ma: "cu.ma"; mb: "cu.mb"; mc: "cu.mc"; md: "cu.md"; me: "cu.me"; mf: "cu.mf"; mg: "cu.mg"; mh: "cu.mh"; mi: "cu.mi"; mj: "cu.mj"; mk: "cu.mk"; ml: "cu.ml"; mm: "cu.mm"; mn: "cu.mn"; mo: "cu.mo"; mp: "cu.mp"; mq: "cu.mq"; mr: "cu.mr"; ms: "cu.ms"; mt: "cu.mt"; mu: "cu.mu"; mv: "cu.mv"; mw: "cu.mw"; mx: "cu.mx"; my: "cu.my"; mz: "cu.mz"; na: "cu.na"; nb: "cu.nb"; nc: "cu.nc"; nd: "cu.nd"; ne: "cu.ne"; nf: "cu.nf"; ng: "cu.ng"; nh: "cu.nh"; ni: "cu.ni"; nj: "cu.nj"; nk: "cu.nk"; nl: "cu.nl"; nm: "cu.nm"; nn: "cu.nn"; no: "cu.no"; np: "cu.np"; nq: "cu.nq"; nr: "cu.nr"; ns: "cu.ns"; nt: "cu.nt"; nu: "cu.nu"; nv: "cu.nv"; nw: "cu.nw"; nx: "cu.nx"; ny: "cu.ny"; nz: "cu.nz"; oa: "cu.oa"; ob: "cu.ob"; oc: "cu.oc"; od: "cu.od"; oe: "cu.oe"; of: "cu.of"; og: "cu.og"; oh: "cu.oh"; oi: "cu.oi"; oj: "cu.oj"; ok: "cu.ok"; ol: "cu.ol"; om: "cu.om"; on: "cu.on"; oo: "cu.oo"; op: "cu.op"; oq: "cu.oq"; or: "cu.or"; os: "cu.os"; ot: "cu.ot"; ou: "cu.ou"; ov: "cu.ov"; ow: "cu.ow"; ox: "cu.ox"; oy: "cu.oy"; oz: "cu.oz"; pa: "cu.pa"; pb: "cu.pb"; pc: "cu.pc"; pd: "cu.pd"; pe: "cu.pe"; pf: "cu.pf"; pg: "cu.pg"; ph: "cu.ph"; pi: "cu.pi"; pj: "cu.pj"; pk: "cu.pk"; pl: "cu.pl"; pm: "cu.pm"; pn: "cu.pn"; po: "cu.po"; pp: "cu.pp"; pq: "cu.pq"; pr: "cu.pr"; ps: "cu.ps"; pt: "cu.pt"; pu: "cu.pu"; pv: "cu.pv"; pw: "cu.pw"; px: "cu.px"; py: "cu.py"; pz: "cu.pz"; qa: "cu.qa"; qb: "cu.qb"; qc: "cu.qc"; qd: "cu.qd"; qe: "cu.qe"; qf: "cu.qf"; qg: "cu.qg"; qh: "cu.qh"; qi: "cu.qi"; qj: "cu.qj"; qk: "cu.qk"; ql: "cu.ql"; qm: "cu.qm"; qn: "cu.qn"; qo: "cu.qo"; qp: "cu.qp"; qq: "cu.qq"; qr: "cu.qr"; qs: "cu.qs"; qt: "cu.qt"; qu: "cu.qu"; qv: "cu.qv"; qw: "cu.qw"; qx: "cu.qx"; qy: "cu.qy"; qz: "cu.qz"; ra: "cu.ra"; rb: "cu.rb"; rc: "cu.rc"; rd: "cu.rd"; re: "cu.re"; rf: "cu.rf"; rg: "cu.rg"; rh: "cu.rh"; ri: "cu.ri"; rj: "cu.rj"; rk: "cu.rk"; rl: "cu.rl"; rm: "cu.rm"; rn: "cu.rn"; ro: "cu.ro"; rp: "cu.rp"; rq: "cu.rq"; rr: "cu.rr"; rs: "cu.rs"; rt: "cu.rt"; ru: "cu.ru"; rv: "cu.rv"; rw: "cu.rw"; rx: "cu.rx"; ry: "cu.ry"; rz: "cu.rz"; sa: "cu.sa"; sb: "cu.sb"; sc: "cu.sc"; sd: "cu.sd"; se: "cu.se"; sf: "cu.sf"; sg: "cu.sg"; sh: "cu.sh"; si: "cu.si"; sj: "cu.sj"; sk: "cu.sk"; sl: "cu.sl"; sm: "cu.sm"; sn: "cu.sn"; so: "cu.so"; sp: "cu.sp"; sq: "cu.sq"; sr: "cu.sr"; ss: "cu.ss"; st: "cu.st"; su: "cu.su"; sv: "cu.sv"; sw: "cu.sw"; sx: "cu.sx"; sy: "cu.sy"; sz: "cu.sz"; ta: "cu.ta"; tb: "cu.tb"; tc: "cu.tc"; td: "cu.td"; te: "cu.te"; tf: "cu.tf"; tg: "cu.tg"; th: "cu.th"; ti: "cu.ti"; tj: "cu.tj"; tk: "cu.tk"; tl: "cu.tl"; tm: "cu.tm"; tn: "cu.tn"; to: "cu.to"; tp: "cu.tp"; tq: "cu.tq"; tr: "cu.tr"; ts: "cu.ts"; tt: "cu.tt"; tu: "cu.tu"; tv: "cu.tv"; tw: "cu.tw"; tx: "cu.tx"; ty: "cu.ty"; tz: "cu.tz"; ua: "cu.ua"; ub: "cu.ub"; uc: "cu.uc"; ud: "cu.ud"; ue: "cu.ue"; uf: "cu.uf"; ug: "cu.ug"; uh: "cu.uh"; ui: "cu.ui"; uj: "cu.uj"; uk: "cu.uk"; ul: "cu.ul"; um: "cu.um"; un: "cu.un"; uo: "cu.uo"; up: "cu.up"; uq: "cu.uq"; ur: "cu.ur"; us: "cu.us"; ut: "cu.ut"; uu: "cu.uu"; uv: "cu.uv"; uw: "cu.uw"; ux: "cu.ux"; uy: "cu.uy"; uz: "cu.uz"; va: "cu.va"; vb: "cu.vb"; vc: "cu.vc"; vd: "cu.vd"; ve: "cu.ve"; vf: "cu.vf"; vg: "cu.vg"; vh: "cu.vh"; vi: "cu.vi"; vj: "cu.vj"; vk: "cu.vk"; vl: "cu.vl"; vm: "cu.vm"; vn: "cu.vn"; vo: "cu.vo"; vp: "cu.vp"; vq: "cu.vq"; vr: "cu.vr"; vs: "cu.vs"; vt: "cu.vt"; vu: "cu.vu"; vv: "cu.vv"; vw: "cu.vw"; vx: "cu.vx"; vy: "cu.vy"; vz: "cu.vz"; wa: "cu.wa"; wb: "cu.wb"; wc: "cu.wc"; wd: "cu.wd"; we: "cu.we"; wf: "cu.wf"; wg: "cu.wg"; wh: "cu.wh"; wi: "cu.wi"; wj: "cu.wj"; wk: "cu.wk"; wl: "cu.wl"; wm: "cu.wm"; wn: "cu.wn"; wo: "cu.wo"; wp: "cu.wp"; wq: "cu.wq"; wr: "cu.wr"; ws: "cu.ws"; wt: "cu.wt"; wu: "cu.wu"; wv: "cu.wv"; ww: "cu.ww"; wx: "cu.wx"; wy: "cu.wy"; wz: "cu.wz"; xa: "cu.xa"; xb: "cu.xb"; xc: "cu.xc"; xd: "cu.xd"; xe: "cu.xe"; xf: "cu.xf"; xg: "cu.xg"; xh: "cu.xh"; xi: "cu.xi"; xj: "cu.xj"; xk: "cu.xk"; xl: "cu.xl"; xm: "cu.xm"; xn: "cu.xn"; xo: "cu.xo"; xp: "cu.xp"; xq: "cu.xq"; xr: "cu.xr"; xs: "cu.xs"; xt: "cu.xt"; xu: "cu.xu"; xv: "cu.xv"; xw: "cu.xw"; xx: "cu.xx"; xy: "cu.xy"; xz: "cu.xz"; ya: "cu.ya"; yb: "cu.yb"; yc: "cu.yc"; yd: "cu.yd"; ye: "cu.ye"; yf: "cu.yf"; yg: "cu.yg"; yh: "cu.yh"; yi: "cu.yi"; yj: "cu.yj"; yk: "cu.yk"; yl: "cu.yl"; ym: "cu.ym"; yn: "cu.yn"; yo: "cu.yo"; yp: "cu.yp"; yq: "cu.yq"; yr: "cu.yr"; ys: "cu.ys"; yt: "cu.yt"; yu: "cu.yu"; yv: "cu.yv"; yw: "cu.yw"; yx: "cu.yx"; yy: "cu.yy"; yz: "cu.yz"; za: "cu.za"; zb: "cu.zb"; zc: "cu.zc"; zd: "cu.zd"; ze: "cu.ze"; zf: "cu.zf"; zg: "cu.zg"; zh: "cu.zh"; zi: "cu.zi"; zj: "cu.zj"; zk: "cu.zk"; zl: "cu.zl"; zm: "cu.zm"; zn: "cu.zn"; zo: "cu.zo"; zp: "cu.zp"; zq: "cu.zq"; zr: "cu.zr"; zs: "cu.zs"; zt: "cu.zt"; zu: "cu.zu"; zv: "cu.zv"; zw: "cu.zw"; zx: "cu.zx"; zy: "cu.zy"; zz: "cu.zz"; }; cv: { aa: "cv.aa"; ab: "cv.ab"; ac: "cv.ac"; ad: "cv.ad"; ae: "cv.ae"; af: "cv.af"; ag: "cv.ag"; ah: "cv.ah"; ai: "cv.ai"; aj: "cv.aj"; ak: "cv.ak"; al: "cv.al"; am: "cv.am"; an: "cv.an"; ao: "cv.ao"; ap: "cv.ap"; aq: "cv.aq"; ar: "cv.ar"; as: "cv.as"; at: "cv.at"; au: "cv.au"; av: "cv.av"; aw: "cv.aw"; ax: "cv.ax"; ay: "cv.ay"; az: "cv.az"; ba: "cv.ba"; bb: "cv.bb"; bc: "cv.bc"; bd: "cv.bd"; be: "cv.be"; bf: "cv.bf"; bg: "cv.bg"; bh: "cv.bh"; bi: "cv.bi"; bj: "cv.bj"; bk: "cv.bk"; bl: "cv.bl"; bm: "cv.bm"; bn: "cv.bn"; bo: "cv.bo"; bp: "cv.bp"; bq: "cv.bq"; br: "cv.br"; bs: "cv.bs"; bt: "cv.bt"; bu: "cv.bu"; bv: "cv.bv"; bw: "cv.bw"; bx: "cv.bx"; by: "cv.by"; bz: "cv.bz"; ca: "cv.ca"; cb: "cv.cb"; cc: "cv.cc"; cd: "cv.cd"; ce: "cv.ce"; cf: "cv.cf"; cg: "cv.cg"; ch: "cv.ch"; ci: "cv.ci"; cj: "cv.cj"; ck: "cv.ck"; cl: "cv.cl"; cm: "cv.cm"; cn: "cv.cn"; co: "cv.co"; cp: "cv.cp"; cq: "cv.cq"; cr: "cv.cr"; cs: "cv.cs"; ct: "cv.ct"; cu: "cv.cu"; cv: "cv.cv"; cw: "cv.cw"; cx: "cv.cx"; cy: "cv.cy"; cz: "cv.cz"; da: "cv.da"; db: "cv.db"; dc: "cv.dc"; dd: "cv.dd"; de: "cv.de"; df: "cv.df"; dg: "cv.dg"; dh: "cv.dh"; di: "cv.di"; dj: "cv.dj"; dk: "cv.dk"; dl: "cv.dl"; dm: "cv.dm"; dn: "cv.dn"; do: "cv.do"; dp: "cv.dp"; dq: "cv.dq"; dr: "cv.dr"; ds: "cv.ds"; dt: "cv.dt"; du: "cv.du"; dv: "cv.dv"; dw: "cv.dw"; dx: "cv.dx"; dy: "cv.dy"; dz: "cv.dz"; ea: "cv.ea"; eb: "cv.eb"; ec: "cv.ec"; ed: "cv.ed"; ee: "cv.ee"; ef: "cv.ef"; eg: "cv.eg"; eh: "cv.eh"; ei: "cv.ei"; ej: "cv.ej"; ek: "cv.ek"; el: "cv.el"; em: "cv.em"; en: "cv.en"; eo: "cv.eo"; ep: "cv.ep"; eq: "cv.eq"; er: "cv.er"; es: "cv.es"; et: "cv.et"; eu: "cv.eu"; ev: "cv.ev"; ew: "cv.ew"; ex: "cv.ex"; ey: "cv.ey"; ez: "cv.ez"; fa: "cv.fa"; fb: "cv.fb"; fc: "cv.fc"; fd: "cv.fd"; fe: "cv.fe"; ff: "cv.ff"; fg: "cv.fg"; fh: "cv.fh"; fi: "cv.fi"; fj: "cv.fj"; fk: "cv.fk"; fl: "cv.fl"; fm: "cv.fm"; fn: "cv.fn"; fo: "cv.fo"; fp: "cv.fp"; fq: "cv.fq"; fr: "cv.fr"; fs: "cv.fs"; ft: "cv.ft"; fu: "cv.fu"; fv: "cv.fv"; fw: "cv.fw"; fx: "cv.fx"; fy: "cv.fy"; fz: "cv.fz"; ga: "cv.ga"; gb: "cv.gb"; gc: "cv.gc"; gd: "cv.gd"; ge: "cv.ge"; gf: "cv.gf"; gg: "cv.gg"; gh: "cv.gh"; gi: "cv.gi"; gj: "cv.gj"; gk: "cv.gk"; gl: "cv.gl"; gm: "cv.gm"; gn: "cv.gn"; go: "cv.go"; gp: "cv.gp"; gq: "cv.gq"; gr: "cv.gr"; gs: "cv.gs"; gt: "cv.gt"; gu: "cv.gu"; gv: "cv.gv"; gw: "cv.gw"; gx: "cv.gx"; gy: "cv.gy"; gz: "cv.gz"; ha: "cv.ha"; hb: "cv.hb"; hc: "cv.hc"; hd: "cv.hd"; he: "cv.he"; hf: "cv.hf"; hg: "cv.hg"; hh: "cv.hh"; hi: "cv.hi"; hj: "cv.hj"; hk: "cv.hk"; hl: "cv.hl"; hm: "cv.hm"; hn: "cv.hn"; ho: "cv.ho"; hp: "cv.hp"; hq: "cv.hq"; hr: "cv.hr"; hs: "cv.hs"; ht: "cv.ht"; hu: "cv.hu"; hv: "cv.hv"; hw: "cv.hw"; hx: "cv.hx"; hy: "cv.hy"; hz: "cv.hz"; ia: "cv.ia"; ib: "cv.ib"; ic: "cv.ic"; id: "cv.id"; ie: "cv.ie"; if: "cv.if"; ig: "cv.ig"; ih: "cv.ih"; ii: "cv.ii"; ij: "cv.ij"; ik: "cv.ik"; il: "cv.il"; im: "cv.im"; in: "cv.in"; io: "cv.io"; ip: "cv.ip"; iq: "cv.iq"; ir: "cv.ir"; is: "cv.is"; it: "cv.it"; iu: "cv.iu"; iv: "cv.iv"; iw: "cv.iw"; ix: "cv.ix"; iy: "cv.iy"; iz: "cv.iz"; ja: "cv.ja"; jb: "cv.jb"; jc: "cv.jc"; jd: "cv.jd"; je: "cv.je"; jf: "cv.jf"; jg: "cv.jg"; jh: "cv.jh"; ji: "cv.ji"; jj: "cv.jj"; jk: "cv.jk"; jl: "cv.jl"; jm: "cv.jm"; jn: "cv.jn"; jo: "cv.jo"; jp: "cv.jp"; jq: "cv.jq"; jr: "cv.jr"; js: "cv.js"; jt: "cv.jt"; ju: "cv.ju"; jv: "cv.jv"; jw: "cv.jw"; jx: "cv.jx"; jy: "cv.jy"; jz: "cv.jz"; ka: "cv.ka"; kb: "cv.kb"; kc: "cv.kc"; kd: "cv.kd"; ke: "cv.ke"; kf: "cv.kf"; kg: "cv.kg"; kh: "cv.kh"; ki: "cv.ki"; kj: "cv.kj"; kk: "cv.kk"; kl: "cv.kl"; km: "cv.km"; kn: "cv.kn"; ko: "cv.ko"; kp: "cv.kp"; kq: "cv.kq"; kr: "cv.kr"; ks: "cv.ks"; kt: "cv.kt"; ku: "cv.ku"; kv: "cv.kv"; kw: "cv.kw"; kx: "cv.kx"; ky: "cv.ky"; kz: "cv.kz"; la: "cv.la"; lb: "cv.lb"; lc: "cv.lc"; ld: "cv.ld"; le: "cv.le"; lf: "cv.lf"; lg: "cv.lg"; lh: "cv.lh"; li: "cv.li"; lj: "cv.lj"; lk: "cv.lk"; ll: "cv.ll"; lm: "cv.lm"; ln: "cv.ln"; lo: "cv.lo"; lp: "cv.lp"; lq: "cv.lq"; lr: "cv.lr"; ls: "cv.ls"; lt: "cv.lt"; lu: "cv.lu"; lv: "cv.lv"; lw: "cv.lw"; lx: "cv.lx"; ly: "cv.ly"; lz: "cv.lz"; ma: "cv.ma"; mb: "cv.mb"; mc: "cv.mc"; md: "cv.md"; me: "cv.me"; mf: "cv.mf"; mg: "cv.mg"; mh: "cv.mh"; mi: "cv.mi"; mj: "cv.mj"; mk: "cv.mk"; ml: "cv.ml"; mm: "cv.mm"; mn: "cv.mn"; mo: "cv.mo"; mp: "cv.mp"; mq: "cv.mq"; mr: "cv.mr"; ms: "cv.ms"; mt: "cv.mt"; mu: "cv.mu"; mv: "cv.mv"; mw: "cv.mw"; mx: "cv.mx"; my: "cv.my"; mz: "cv.mz"; na: "cv.na"; nb: "cv.nb"; nc: "cv.nc"; nd: "cv.nd"; ne: "cv.ne"; nf: "cv.nf"; ng: "cv.ng"; nh: "cv.nh"; ni: "cv.ni"; nj: "cv.nj"; nk: "cv.nk"; nl: "cv.nl"; nm: "cv.nm"; nn: "cv.nn"; no: "cv.no"; np: "cv.np"; nq: "cv.nq"; nr: "cv.nr"; ns: "cv.ns"; nt: "cv.nt"; nu: "cv.nu"; nv: "cv.nv"; nw: "cv.nw"; nx: "cv.nx"; ny: "cv.ny"; nz: "cv.nz"; oa: "cv.oa"; ob: "cv.ob"; oc: "cv.oc"; od: "cv.od"; oe: "cv.oe"; of: "cv.of"; og: "cv.og"; oh: "cv.oh"; oi: "cv.oi"; oj: "cv.oj"; ok: "cv.ok"; ol: "cv.ol"; om: "cv.om"; on: "cv.on"; oo: "cv.oo"; op: "cv.op"; oq: "cv.oq"; or: "cv.or"; os: "cv.os"; ot: "cv.ot"; ou: "cv.ou"; ov: "cv.ov"; ow: "cv.ow"; ox: "cv.ox"; oy: "cv.oy"; oz: "cv.oz"; pa: "cv.pa"; pb: "cv.pb"; pc: "cv.pc"; pd: "cv.pd"; pe: "cv.pe"; pf: "cv.pf"; pg: "cv.pg"; ph: "cv.ph"; pi: "cv.pi"; pj: "cv.pj"; pk: "cv.pk"; pl: "cv.pl"; pm: "cv.pm"; pn: "cv.pn"; po: "cv.po"; pp: "cv.pp"; pq: "cv.pq"; pr: "cv.pr"; ps: "cv.ps"; pt: "cv.pt"; pu: "cv.pu"; pv: "cv.pv"; pw: "cv.pw"; px: "cv.px"; py: "cv.py"; pz: "cv.pz"; qa: "cv.qa"; qb: "cv.qb"; qc: "cv.qc"; qd: "cv.qd"; qe: "cv.qe"; qf: "cv.qf"; qg: "cv.qg"; qh: "cv.qh"; qi: "cv.qi"; qj: "cv.qj"; qk: "cv.qk"; ql: "cv.ql"; qm: "cv.qm"; qn: "cv.qn"; qo: "cv.qo"; qp: "cv.qp"; qq: "cv.qq"; qr: "cv.qr"; qs: "cv.qs"; qt: "cv.qt"; qu: "cv.qu"; qv: "cv.qv"; qw: "cv.qw"; qx: "cv.qx"; qy: "cv.qy"; qz: "cv.qz"; ra: "cv.ra"; rb: "cv.rb"; rc: "cv.rc"; rd: "cv.rd"; re: "cv.re"; rf: "cv.rf"; rg: "cv.rg"; rh: "cv.rh"; ri: "cv.ri"; rj: "cv.rj"; rk: "cv.rk"; rl: "cv.rl"; rm: "cv.rm"; rn: "cv.rn"; ro: "cv.ro"; rp: "cv.rp"; rq: "cv.rq"; rr: "cv.rr"; rs: "cv.rs"; rt: "cv.rt"; ru: "cv.ru"; rv: "cv.rv"; rw: "cv.rw"; rx: "cv.rx"; ry: "cv.ry"; rz: "cv.rz"; sa: "cv.sa"; sb: "cv.sb"; sc: "cv.sc"; sd: "cv.sd"; se: "cv.se"; sf: "cv.sf"; sg: "cv.sg"; sh: "cv.sh"; si: "cv.si"; sj: "cv.sj"; sk: "cv.sk"; sl: "cv.sl"; sm: "cv.sm"; sn: "cv.sn"; so: "cv.so"; sp: "cv.sp"; sq: "cv.sq"; sr: "cv.sr"; ss: "cv.ss"; st: "cv.st"; su: "cv.su"; sv: "cv.sv"; sw: "cv.sw"; sx: "cv.sx"; sy: "cv.sy"; sz: "cv.sz"; ta: "cv.ta"; tb: "cv.tb"; tc: "cv.tc"; td: "cv.td"; te: "cv.te"; tf: "cv.tf"; tg: "cv.tg"; th: "cv.th"; ti: "cv.ti"; tj: "cv.tj"; tk: "cv.tk"; tl: "cv.tl"; tm: "cv.tm"; tn: "cv.tn"; to: "cv.to"; tp: "cv.tp"; tq: "cv.tq"; tr: "cv.tr"; ts: "cv.ts"; tt: "cv.tt"; tu: "cv.tu"; tv: "cv.tv"; tw: "cv.tw"; tx: "cv.tx"; ty: "cv.ty"; tz: "cv.tz"; ua: "cv.ua"; ub: "cv.ub"; uc: "cv.uc"; ud: "cv.ud"; ue: "cv.ue"; uf: "cv.uf"; ug: "cv.ug"; uh: "cv.uh"; ui: "cv.ui"; uj: "cv.uj"; uk: "cv.uk"; ul: "cv.ul"; um: "cv.um"; un: "cv.un"; uo: "cv.uo"; up: "cv.up"; uq: "cv.uq"; ur: "cv.ur"; us: "cv.us"; ut: "cv.ut"; uu: "cv.uu"; uv: "cv.uv"; uw: "cv.uw"; ux: "cv.ux"; uy: "cv.uy"; uz: "cv.uz"; va: "cv.va"; vb: "cv.vb"; vc: "cv.vc"; vd: "cv.vd"; ve: "cv.ve"; vf: "cv.vf"; vg: "cv.vg"; vh: "cv.vh"; vi: "cv.vi"; vj: "cv.vj"; vk: "cv.vk"; vl: "cv.vl"; vm: "cv.vm"; vn: "cv.vn"; vo: "cv.vo"; vp: "cv.vp"; vq: "cv.vq"; vr: "cv.vr"; vs: "cv.vs"; vt: "cv.vt"; vu: "cv.vu"; vv: "cv.vv"; vw: "cv.vw"; vx: "cv.vx"; vy: "cv.vy"; vz: "cv.vz"; wa: "cv.wa"; wb: "cv.wb"; wc: "cv.wc"; wd: "cv.wd"; we: "cv.we"; wf: "cv.wf"; wg: "cv.wg"; wh: "cv.wh"; wi: "cv.wi"; wj: "cv.wj"; wk: "cv.wk"; wl: "cv.wl"; wm: "cv.wm"; wn: "cv.wn"; wo: "cv.wo"; wp: "cv.wp"; wq: "cv.wq"; wr: "cv.wr"; ws: "cv.ws"; wt: "cv.wt"; wu: "cv.wu"; wv: "cv.wv"; ww: "cv.ww"; wx: "cv.wx"; wy: "cv.wy"; wz: "cv.wz"; xa: "cv.xa"; xb: "cv.xb"; xc: "cv.xc"; xd: "cv.xd"; xe: "cv.xe"; xf: "cv.xf"; xg: "cv.xg"; xh: "cv.xh"; xi: "cv.xi"; xj: "cv.xj"; xk: "cv.xk"; xl: "cv.xl"; xm: "cv.xm"; xn: "cv.xn"; xo: "cv.xo"; xp: "cv.xp"; xq: "cv.xq"; xr: "cv.xr"; xs: "cv.xs"; xt: "cv.xt"; xu: "cv.xu"; xv: "cv.xv"; xw: "cv.xw"; xx: "cv.xx"; xy: "cv.xy"; xz: "cv.xz"; ya: "cv.ya"; yb: "cv.yb"; yc: "cv.yc"; yd: "cv.yd"; ye: "cv.ye"; yf: "cv.yf"; yg: "cv.yg"; yh: "cv.yh"; yi: "cv.yi"; yj: "cv.yj"; yk: "cv.yk"; yl: "cv.yl"; ym: "cv.ym"; yn: "cv.yn"; yo: "cv.yo"; yp: "cv.yp"; yq: "cv.yq"; yr: "cv.yr"; ys: "cv.ys"; yt: "cv.yt"; yu: "cv.yu"; yv: "cv.yv"; yw: "cv.yw"; yx: "cv.yx"; yy: "cv.yy"; yz: "cv.yz"; za: "cv.za"; zb: "cv.zb"; zc: "cv.zc"; zd: "cv.zd"; ze: "cv.ze"; zf: "cv.zf"; zg: "cv.zg"; zh: "cv.zh"; zi: "cv.zi"; zj: "cv.zj"; zk: "cv.zk"; zl: "cv.zl"; zm: "cv.zm"; zn: "cv.zn"; zo: "cv.zo"; zp: "cv.zp"; zq: "cv.zq"; zr: "cv.zr"; zs: "cv.zs"; zt: "cv.zt"; zu: "cv.zu"; zv: "cv.zv"; zw: "cv.zw"; zx: "cv.zx"; zy: "cv.zy"; zz: "cv.zz"; }; cw: { aa: "cw.aa"; ab: "cw.ab"; ac: "cw.ac"; ad: "cw.ad"; ae: "cw.ae"; af: "cw.af"; ag: "cw.ag"; ah: "cw.ah"; ai: "cw.ai"; aj: "cw.aj"; ak: "cw.ak"; al: "cw.al"; am: "cw.am"; an: "cw.an"; ao: "cw.ao"; ap: "cw.ap"; aq: "cw.aq"; ar: "cw.ar"; as: "cw.as"; at: "cw.at"; au: "cw.au"; av: "cw.av"; aw: "cw.aw"; ax: "cw.ax"; ay: "cw.ay"; az: "cw.az"; ba: "cw.ba"; bb: "cw.bb"; bc: "cw.bc"; bd: "cw.bd"; be: "cw.be"; bf: "cw.bf"; bg: "cw.bg"; bh: "cw.bh"; bi: "cw.bi"; bj: "cw.bj"; bk: "cw.bk"; bl: "cw.bl"; bm: "cw.bm"; bn: "cw.bn"; bo: "cw.bo"; bp: "cw.bp"; bq: "cw.bq"; br: "cw.br"; bs: "cw.bs"; bt: "cw.bt"; bu: "cw.bu"; bv: "cw.bv"; bw: "cw.bw"; bx: "cw.bx"; by: "cw.by"; bz: "cw.bz"; ca: "cw.ca"; cb: "cw.cb"; cc: "cw.cc"; cd: "cw.cd"; ce: "cw.ce"; cf: "cw.cf"; cg: "cw.cg"; ch: "cw.ch"; ci: "cw.ci"; cj: "cw.cj"; ck: "cw.ck"; cl: "cw.cl"; cm: "cw.cm"; cn: "cw.cn"; co: "cw.co"; cp: "cw.cp"; cq: "cw.cq"; cr: "cw.cr"; cs: "cw.cs"; ct: "cw.ct"; cu: "cw.cu"; cv: "cw.cv"; cw: "cw.cw"; cx: "cw.cx"; cy: "cw.cy"; cz: "cw.cz"; da: "cw.da"; db: "cw.db"; dc: "cw.dc"; dd: "cw.dd"; de: "cw.de"; df: "cw.df"; dg: "cw.dg"; dh: "cw.dh"; di: "cw.di"; dj: "cw.dj"; dk: "cw.dk"; dl: "cw.dl"; dm: "cw.dm"; dn: "cw.dn"; do: "cw.do"; dp: "cw.dp"; dq: "cw.dq"; dr: "cw.dr"; ds: "cw.ds"; dt: "cw.dt"; du: "cw.du"; dv: "cw.dv"; dw: "cw.dw"; dx: "cw.dx"; dy: "cw.dy"; dz: "cw.dz"; ea: "cw.ea"; eb: "cw.eb"; ec: "cw.ec"; ed: "cw.ed"; ee: "cw.ee"; ef: "cw.ef"; eg: "cw.eg"; eh: "cw.eh"; ei: "cw.ei"; ej: "cw.ej"; ek: "cw.ek"; el: "cw.el"; em: "cw.em"; en: "cw.en"; eo: "cw.eo"; ep: "cw.ep"; eq: "cw.eq"; er: "cw.er"; es: "cw.es"; et: "cw.et"; eu: "cw.eu"; ev: "cw.ev"; ew: "cw.ew"; ex: "cw.ex"; ey: "cw.ey"; ez: "cw.ez"; fa: "cw.fa"; fb: "cw.fb"; fc: "cw.fc"; fd: "cw.fd"; fe: "cw.fe"; ff: "cw.ff"; fg: "cw.fg"; fh: "cw.fh"; fi: "cw.fi"; fj: "cw.fj"; fk: "cw.fk"; fl: "cw.fl"; fm: "cw.fm"; fn: "cw.fn"; fo: "cw.fo"; fp: "cw.fp"; fq: "cw.fq"; fr: "cw.fr"; fs: "cw.fs"; ft: "cw.ft"; fu: "cw.fu"; fv: "cw.fv"; fw: "cw.fw"; fx: "cw.fx"; fy: "cw.fy"; fz: "cw.fz"; ga: "cw.ga"; gb: "cw.gb"; gc: "cw.gc"; gd: "cw.gd"; ge: "cw.ge"; gf: "cw.gf"; gg: "cw.gg"; gh: "cw.gh"; gi: "cw.gi"; gj: "cw.gj"; gk: "cw.gk"; gl: "cw.gl"; gm: "cw.gm"; gn: "cw.gn"; go: "cw.go"; gp: "cw.gp"; gq: "cw.gq"; gr: "cw.gr"; gs: "cw.gs"; gt: "cw.gt"; gu: "cw.gu"; gv: "cw.gv"; gw: "cw.gw"; gx: "cw.gx"; gy: "cw.gy"; gz: "cw.gz"; ha: "cw.ha"; hb: "cw.hb"; hc: "cw.hc"; hd: "cw.hd"; he: "cw.he"; hf: "cw.hf"; hg: "cw.hg"; hh: "cw.hh"; hi: "cw.hi"; hj: "cw.hj"; hk: "cw.hk"; hl: "cw.hl"; hm: "cw.hm"; hn: "cw.hn"; ho: "cw.ho"; hp: "cw.hp"; hq: "cw.hq"; hr: "cw.hr"; hs: "cw.hs"; ht: "cw.ht"; hu: "cw.hu"; hv: "cw.hv"; hw: "cw.hw"; hx: "cw.hx"; hy: "cw.hy"; hz: "cw.hz"; ia: "cw.ia"; ib: "cw.ib"; ic: "cw.ic"; id: "cw.id"; ie: "cw.ie"; if: "cw.if"; ig: "cw.ig"; ih: "cw.ih"; ii: "cw.ii"; ij: "cw.ij"; ik: "cw.ik"; il: "cw.il"; im: "cw.im"; in: "cw.in"; io: "cw.io"; ip: "cw.ip"; iq: "cw.iq"; ir: "cw.ir"; is: "cw.is"; it: "cw.it"; iu: "cw.iu"; iv: "cw.iv"; iw: "cw.iw"; ix: "cw.ix"; iy: "cw.iy"; iz: "cw.iz"; ja: "cw.ja"; jb: "cw.jb"; jc: "cw.jc"; jd: "cw.jd"; je: "cw.je"; jf: "cw.jf"; jg: "cw.jg"; jh: "cw.jh"; ji: "cw.ji"; jj: "cw.jj"; jk: "cw.jk"; jl: "cw.jl"; jm: "cw.jm"; jn: "cw.jn"; jo: "cw.jo"; jp: "cw.jp"; jq: "cw.jq"; jr: "cw.jr"; js: "cw.js"; jt: "cw.jt"; ju: "cw.ju"; jv: "cw.jv"; jw: "cw.jw"; jx: "cw.jx"; jy: "cw.jy"; jz: "cw.jz"; ka: "cw.ka"; kb: "cw.kb"; kc: "cw.kc"; kd: "cw.kd"; ke: "cw.ke"; kf: "cw.kf"; kg: "cw.kg"; kh: "cw.kh"; ki: "cw.ki"; kj: "cw.kj"; kk: "cw.kk"; kl: "cw.kl"; km: "cw.km"; kn: "cw.kn"; ko: "cw.ko"; kp: "cw.kp"; kq: "cw.kq"; kr: "cw.kr"; ks: "cw.ks"; kt: "cw.kt"; ku: "cw.ku"; kv: "cw.kv"; kw: "cw.kw"; kx: "cw.kx"; ky: "cw.ky"; kz: "cw.kz"; la: "cw.la"; lb: "cw.lb"; lc: "cw.lc"; ld: "cw.ld"; le: "cw.le"; lf: "cw.lf"; lg: "cw.lg"; lh: "cw.lh"; li: "cw.li"; lj: "cw.lj"; lk: "cw.lk"; ll: "cw.ll"; lm: "cw.lm"; ln: "cw.ln"; lo: "cw.lo"; lp: "cw.lp"; lq: "cw.lq"; lr: "cw.lr"; ls: "cw.ls"; lt: "cw.lt"; lu: "cw.lu"; lv: "cw.lv"; lw: "cw.lw"; lx: "cw.lx"; ly: "cw.ly"; lz: "cw.lz"; ma: "cw.ma"; mb: "cw.mb"; mc: "cw.mc"; md: "cw.md"; me: "cw.me"; mf: "cw.mf"; mg: "cw.mg"; mh: "cw.mh"; mi: "cw.mi"; mj: "cw.mj"; mk: "cw.mk"; ml: "cw.ml"; mm: "cw.mm"; mn: "cw.mn"; mo: "cw.mo"; mp: "cw.mp"; mq: "cw.mq"; mr: "cw.mr"; ms: "cw.ms"; mt: "cw.mt"; mu: "cw.mu"; mv: "cw.mv"; mw: "cw.mw"; mx: "cw.mx"; my: "cw.my"; mz: "cw.mz"; na: "cw.na"; nb: "cw.nb"; nc: "cw.nc"; nd: "cw.nd"; ne: "cw.ne"; nf: "cw.nf"; ng: "cw.ng"; nh: "cw.nh"; ni: "cw.ni"; nj: "cw.nj"; nk: "cw.nk"; nl: "cw.nl"; nm: "cw.nm"; nn: "cw.nn"; no: "cw.no"; np: "cw.np"; nq: "cw.nq"; nr: "cw.nr"; ns: "cw.ns"; nt: "cw.nt"; nu: "cw.nu"; nv: "cw.nv"; nw: "cw.nw"; nx: "cw.nx"; ny: "cw.ny"; nz: "cw.nz"; oa: "cw.oa"; ob: "cw.ob"; oc: "cw.oc"; od: "cw.od"; oe: "cw.oe"; of: "cw.of"; og: "cw.og"; oh: "cw.oh"; oi: "cw.oi"; oj: "cw.oj"; ok: "cw.ok"; ol: "cw.ol"; om: "cw.om"; on: "cw.on"; oo: "cw.oo"; op: "cw.op"; oq: "cw.oq"; or: "cw.or"; os: "cw.os"; ot: "cw.ot"; ou: "cw.ou"; ov: "cw.ov"; ow: "cw.ow"; ox: "cw.ox"; oy: "cw.oy"; oz: "cw.oz"; pa: "cw.pa"; pb: "cw.pb"; pc: "cw.pc"; pd: "cw.pd"; pe: "cw.pe"; pf: "cw.pf"; pg: "cw.pg"; ph: "cw.ph"; pi: "cw.pi"; pj: "cw.pj"; pk: "cw.pk"; pl: "cw.pl"; pm: "cw.pm"; pn: "cw.pn"; po: "cw.po"; pp: "cw.pp"; pq: "cw.pq"; pr: "cw.pr"; ps: "cw.ps"; pt: "cw.pt"; pu: "cw.pu"; pv: "cw.pv"; pw: "cw.pw"; px: "cw.px"; py: "cw.py"; pz: "cw.pz"; qa: "cw.qa"; qb: "cw.qb"; qc: "cw.qc"; qd: "cw.qd"; qe: "cw.qe"; qf: "cw.qf"; qg: "cw.qg"; qh: "cw.qh"; qi: "cw.qi"; qj: "cw.qj"; qk: "cw.qk"; ql: "cw.ql"; qm: "cw.qm"; qn: "cw.qn"; qo: "cw.qo"; qp: "cw.qp"; qq: "cw.qq"; qr: "cw.qr"; qs: "cw.qs"; qt: "cw.qt"; qu: "cw.qu"; qv: "cw.qv"; qw: "cw.qw"; qx: "cw.qx"; qy: "cw.qy"; qz: "cw.qz"; ra: "cw.ra"; rb: "cw.rb"; rc: "cw.rc"; rd: "cw.rd"; re: "cw.re"; rf: "cw.rf"; rg: "cw.rg"; rh: "cw.rh"; ri: "cw.ri"; rj: "cw.rj"; rk: "cw.rk"; rl: "cw.rl"; rm: "cw.rm"; rn: "cw.rn"; ro: "cw.ro"; rp: "cw.rp"; rq: "cw.rq"; rr: "cw.rr"; rs: "cw.rs"; rt: "cw.rt"; ru: "cw.ru"; rv: "cw.rv"; rw: "cw.rw"; rx: "cw.rx"; ry: "cw.ry"; rz: "cw.rz"; sa: "cw.sa"; sb: "cw.sb"; sc: "cw.sc"; sd: "cw.sd"; se: "cw.se"; sf: "cw.sf"; sg: "cw.sg"; sh: "cw.sh"; si: "cw.si"; sj: "cw.sj"; sk: "cw.sk"; sl: "cw.sl"; sm: "cw.sm"; sn: "cw.sn"; so: "cw.so"; sp: "cw.sp"; sq: "cw.sq"; sr: "cw.sr"; ss: "cw.ss"; st: "cw.st"; su: "cw.su"; sv: "cw.sv"; sw: "cw.sw"; sx: "cw.sx"; sy: "cw.sy"; sz: "cw.sz"; ta: "cw.ta"; tb: "cw.tb"; tc: "cw.tc"; td: "cw.td"; te: "cw.te"; tf: "cw.tf"; tg: "cw.tg"; th: "cw.th"; ti: "cw.ti"; tj: "cw.tj"; tk: "cw.tk"; tl: "cw.tl"; tm: "cw.tm"; tn: "cw.tn"; to: "cw.to"; tp: "cw.tp"; tq: "cw.tq"; tr: "cw.tr"; ts: "cw.ts"; tt: "cw.tt"; tu: "cw.tu"; tv: "cw.tv"; tw: "cw.tw"; tx: "cw.tx"; ty: "cw.ty"; tz: "cw.tz"; ua: "cw.ua"; ub: "cw.ub"; uc: "cw.uc"; ud: "cw.ud"; ue: "cw.ue"; uf: "cw.uf"; ug: "cw.ug"; uh: "cw.uh"; ui: "cw.ui"; uj: "cw.uj"; uk: "cw.uk"; ul: "cw.ul"; um: "cw.um"; un: "cw.un"; uo: "cw.uo"; up: "cw.up"; uq: "cw.uq"; ur: "cw.ur"; us: "cw.us"; ut: "cw.ut"; uu: "cw.uu"; uv: "cw.uv"; uw: "cw.uw"; ux: "cw.ux"; uy: "cw.uy"; uz: "cw.uz"; va: "cw.va"; vb: "cw.vb"; vc: "cw.vc"; vd: "cw.vd"; ve: "cw.ve"; vf: "cw.vf"; vg: "cw.vg"; vh: "cw.vh"; vi: "cw.vi"; vj: "cw.vj"; vk: "cw.vk"; vl: "cw.vl"; vm: "cw.vm"; vn: "cw.vn"; vo: "cw.vo"; vp: "cw.vp"; vq: "cw.vq"; vr: "cw.vr"; vs: "cw.vs"; vt: "cw.vt"; vu: "cw.vu"; vv: "cw.vv"; vw: "cw.vw"; vx: "cw.vx"; vy: "cw.vy"; vz: "cw.vz"; wa: "cw.wa"; wb: "cw.wb"; wc: "cw.wc"; wd: "cw.wd"; we: "cw.we"; wf: "cw.wf"; wg: "cw.wg"; wh: "cw.wh"; wi: "cw.wi"; wj: "cw.wj"; wk: "cw.wk"; wl: "cw.wl"; wm: "cw.wm"; wn: "cw.wn"; wo: "cw.wo"; wp: "cw.wp"; wq: "cw.wq"; wr: "cw.wr"; ws: "cw.ws"; wt: "cw.wt"; wu: "cw.wu"; wv: "cw.wv"; ww: "cw.ww"; wx: "cw.wx"; wy: "cw.wy"; wz: "cw.wz"; xa: "cw.xa"; xb: "cw.xb"; xc: "cw.xc"; xd: "cw.xd"; xe: "cw.xe"; xf: "cw.xf"; xg: "cw.xg"; xh: "cw.xh"; xi: "cw.xi"; xj: "cw.xj"; xk: "cw.xk"; xl: "cw.xl"; xm: "cw.xm"; xn: "cw.xn"; xo: "cw.xo"; xp: "cw.xp"; xq: "cw.xq"; xr: "cw.xr"; xs: "cw.xs"; xt: "cw.xt"; xu: "cw.xu"; xv: "cw.xv"; xw: "cw.xw"; xx: "cw.xx"; xy: "cw.xy"; xz: "cw.xz"; ya: "cw.ya"; yb: "cw.yb"; yc: "cw.yc"; yd: "cw.yd"; ye: "cw.ye"; yf: "cw.yf"; yg: "cw.yg"; yh: "cw.yh"; yi: "cw.yi"; yj: "cw.yj"; yk: "cw.yk"; yl: "cw.yl"; ym: "cw.ym"; yn: "cw.yn"; yo: "cw.yo"; yp: "cw.yp"; yq: "cw.yq"; yr: "cw.yr"; ys: "cw.ys"; yt: "cw.yt"; yu: "cw.yu"; yv: "cw.yv"; yw: "cw.yw"; yx: "cw.yx"; yy: "cw.yy"; yz: "cw.yz"; za: "cw.za"; zb: "cw.zb"; zc: "cw.zc"; zd: "cw.zd"; ze: "cw.ze"; zf: "cw.zf"; zg: "cw.zg"; zh: "cw.zh"; zi: "cw.zi"; zj: "cw.zj"; zk: "cw.zk"; zl: "cw.zl"; zm: "cw.zm"; zn: "cw.zn"; zo: "cw.zo"; zp: "cw.zp"; zq: "cw.zq"; zr: "cw.zr"; zs: "cw.zs"; zt: "cw.zt"; zu: "cw.zu"; zv: "cw.zv"; zw: "cw.zw"; zx: "cw.zx"; zy: "cw.zy"; zz: "cw.zz"; }; cx: { aa: "cx.aa"; ab: "cx.ab"; ac: "cx.ac"; ad: "cx.ad"; ae: "cx.ae"; af: "cx.af"; ag: "cx.ag"; ah: "cx.ah"; ai: "cx.ai"; aj: "cx.aj"; ak: "cx.ak"; al: "cx.al"; am: "cx.am"; an: "cx.an"; ao: "cx.ao"; ap: "cx.ap"; aq: "cx.aq"; ar: "cx.ar"; as: "cx.as"; at: "cx.at"; au: "cx.au"; av: "cx.av"; aw: "cx.aw"; ax: "cx.ax"; ay: "cx.ay"; az: "cx.az"; ba: "cx.ba"; bb: "cx.bb"; bc: "cx.bc"; bd: "cx.bd"; be: "cx.be"; bf: "cx.bf"; bg: "cx.bg"; bh: "cx.bh"; bi: "cx.bi"; bj: "cx.bj"; bk: "cx.bk"; bl: "cx.bl"; bm: "cx.bm"; bn: "cx.bn"; bo: "cx.bo"; bp: "cx.bp"; bq: "cx.bq"; br: "cx.br"; bs: "cx.bs"; bt: "cx.bt"; bu: "cx.bu"; bv: "cx.bv"; bw: "cx.bw"; bx: "cx.bx"; by: "cx.by"; bz: "cx.bz"; ca: "cx.ca"; cb: "cx.cb"; cc: "cx.cc"; cd: "cx.cd"; ce: "cx.ce"; cf: "cx.cf"; cg: "cx.cg"; ch: "cx.ch"; ci: "cx.ci"; cj: "cx.cj"; ck: "cx.ck"; cl: "cx.cl"; cm: "cx.cm"; cn: "cx.cn"; co: "cx.co"; cp: "cx.cp"; cq: "cx.cq"; cr: "cx.cr"; cs: "cx.cs"; ct: "cx.ct"; cu: "cx.cu"; cv: "cx.cv"; cw: "cx.cw"; cx: "cx.cx"; cy: "cx.cy"; cz: "cx.cz"; da: "cx.da"; db: "cx.db"; dc: "cx.dc"; dd: "cx.dd"; de: "cx.de"; df: "cx.df"; dg: "cx.dg"; dh: "cx.dh"; di: "cx.di"; dj: "cx.dj"; dk: "cx.dk"; dl: "cx.dl"; dm: "cx.dm"; dn: "cx.dn"; do: "cx.do"; dp: "cx.dp"; dq: "cx.dq"; dr: "cx.dr"; ds: "cx.ds"; dt: "cx.dt"; du: "cx.du"; dv: "cx.dv"; dw: "cx.dw"; dx: "cx.dx"; dy: "cx.dy"; dz: "cx.dz"; ea: "cx.ea"; eb: "cx.eb"; ec: "cx.ec"; ed: "cx.ed"; ee: "cx.ee"; ef: "cx.ef"; eg: "cx.eg"; eh: "cx.eh"; ei: "cx.ei"; ej: "cx.ej"; ek: "cx.ek"; el: "cx.el"; em: "cx.em"; en: "cx.en"; eo: "cx.eo"; ep: "cx.ep"; eq: "cx.eq"; er: "cx.er"; es: "cx.es"; et: "cx.et"; eu: "cx.eu"; ev: "cx.ev"; ew: "cx.ew"; ex: "cx.ex"; ey: "cx.ey"; ez: "cx.ez"; fa: "cx.fa"; fb: "cx.fb"; fc: "cx.fc"; fd: "cx.fd"; fe: "cx.fe"; ff: "cx.ff"; fg: "cx.fg"; fh: "cx.fh"; fi: "cx.fi"; fj: "cx.fj"; fk: "cx.fk"; fl: "cx.fl"; fm: "cx.fm"; fn: "cx.fn"; fo: "cx.fo"; fp: "cx.fp"; fq: "cx.fq"; fr: "cx.fr"; fs: "cx.fs"; ft: "cx.ft"; fu: "cx.fu"; fv: "cx.fv"; fw: "cx.fw"; fx: "cx.fx"; fy: "cx.fy"; fz: "cx.fz"; ga: "cx.ga"; gb: "cx.gb"; gc: "cx.gc"; gd: "cx.gd"; ge: "cx.ge"; gf: "cx.gf"; gg: "cx.gg"; gh: "cx.gh"; gi: "cx.gi"; gj: "cx.gj"; gk: "cx.gk"; gl: "cx.gl"; gm: "cx.gm"; gn: "cx.gn"; go: "cx.go"; gp: "cx.gp"; gq: "cx.gq"; gr: "cx.gr"; gs: "cx.gs"; gt: "cx.gt"; gu: "cx.gu"; gv: "cx.gv"; gw: "cx.gw"; gx: "cx.gx"; gy: "cx.gy"; gz: "cx.gz"; ha: "cx.ha"; hb: "cx.hb"; hc: "cx.hc"; hd: "cx.hd"; he: "cx.he"; hf: "cx.hf"; hg: "cx.hg"; hh: "cx.hh"; hi: "cx.hi"; hj: "cx.hj"; hk: "cx.hk"; hl: "cx.hl"; hm: "cx.hm"; hn: "cx.hn"; ho: "cx.ho"; hp: "cx.hp"; hq: "cx.hq"; hr: "cx.hr"; hs: "cx.hs"; ht: "cx.ht"; hu: "cx.hu"; hv: "cx.hv"; hw: "cx.hw"; hx: "cx.hx"; hy: "cx.hy"; hz: "cx.hz"; ia: "cx.ia"; ib: "cx.ib"; ic: "cx.ic"; id: "cx.id"; ie: "cx.ie"; if: "cx.if"; ig: "cx.ig"; ih: "cx.ih"; ii: "cx.ii"; ij: "cx.ij"; ik: "cx.ik"; il: "cx.il"; im: "cx.im"; in: "cx.in"; io: "cx.io"; ip: "cx.ip"; iq: "cx.iq"; ir: "cx.ir"; is: "cx.is"; it: "cx.it"; iu: "cx.iu"; iv: "cx.iv"; iw: "cx.iw"; ix: "cx.ix"; iy: "cx.iy"; iz: "cx.iz"; ja: "cx.ja"; jb: "cx.jb"; jc: "cx.jc"; jd: "cx.jd"; je: "cx.je"; jf: "cx.jf"; jg: "cx.jg"; jh: "cx.jh"; ji: "cx.ji"; jj: "cx.jj"; jk: "cx.jk"; jl: "cx.jl"; jm: "cx.jm"; jn: "cx.jn"; jo: "cx.jo"; jp: "cx.jp"; jq: "cx.jq"; jr: "cx.jr"; js: "cx.js"; jt: "cx.jt"; ju: "cx.ju"; jv: "cx.jv"; jw: "cx.jw"; jx: "cx.jx"; jy: "cx.jy"; jz: "cx.jz"; ka: "cx.ka"; kb: "cx.kb"; kc: "cx.kc"; kd: "cx.kd"; ke: "cx.ke"; kf: "cx.kf"; kg: "cx.kg"; kh: "cx.kh"; ki: "cx.ki"; kj: "cx.kj"; kk: "cx.kk"; kl: "cx.kl"; km: "cx.km"; kn: "cx.kn"; ko: "cx.ko"; kp: "cx.kp"; kq: "cx.kq"; kr: "cx.kr"; ks: "cx.ks"; kt: "cx.kt"; ku: "cx.ku"; kv: "cx.kv"; kw: "cx.kw"; kx: "cx.kx"; ky: "cx.ky"; kz: "cx.kz"; la: "cx.la"; lb: "cx.lb"; lc: "cx.lc"; ld: "cx.ld"; le: "cx.le"; lf: "cx.lf"; lg: "cx.lg"; lh: "cx.lh"; li: "cx.li"; lj: "cx.lj"; lk: "cx.lk"; ll: "cx.ll"; lm: "cx.lm"; ln: "cx.ln"; lo: "cx.lo"; lp: "cx.lp"; lq: "cx.lq"; lr: "cx.lr"; ls: "cx.ls"; lt: "cx.lt"; lu: "cx.lu"; lv: "cx.lv"; lw: "cx.lw"; lx: "cx.lx"; ly: "cx.ly"; lz: "cx.lz"; ma: "cx.ma"; mb: "cx.mb"; mc: "cx.mc"; md: "cx.md"; me: "cx.me"; mf: "cx.mf"; mg: "cx.mg"; mh: "cx.mh"; mi: "cx.mi"; mj: "cx.mj"; mk: "cx.mk"; ml: "cx.ml"; mm: "cx.mm"; mn: "cx.mn"; mo: "cx.mo"; mp: "cx.mp"; mq: "cx.mq"; mr: "cx.mr"; ms: "cx.ms"; mt: "cx.mt"; mu: "cx.mu"; mv: "cx.mv"; mw: "cx.mw"; mx: "cx.mx"; my: "cx.my"; mz: "cx.mz"; na: "cx.na"; nb: "cx.nb"; nc: "cx.nc"; nd: "cx.nd"; ne: "cx.ne"; nf: "cx.nf"; ng: "cx.ng"; nh: "cx.nh"; ni: "cx.ni"; nj: "cx.nj"; nk: "cx.nk"; nl: "cx.nl"; nm: "cx.nm"; nn: "cx.nn"; no: "cx.no"; np: "cx.np"; nq: "cx.nq"; nr: "cx.nr"; ns: "cx.ns"; nt: "cx.nt"; nu: "cx.nu"; nv: "cx.nv"; nw: "cx.nw"; nx: "cx.nx"; ny: "cx.ny"; nz: "cx.nz"; oa: "cx.oa"; ob: "cx.ob"; oc: "cx.oc"; od: "cx.od"; oe: "cx.oe"; of: "cx.of"; og: "cx.og"; oh: "cx.oh"; oi: "cx.oi"; oj: "cx.oj"; ok: "cx.ok"; ol: "cx.ol"; om: "cx.om"; on: "cx.on"; oo: "cx.oo"; op: "cx.op"; oq: "cx.oq"; or: "cx.or"; os: "cx.os"; ot: "cx.ot"; ou: "cx.ou"; ov: "cx.ov"; ow: "cx.ow"; ox: "cx.ox"; oy: "cx.oy"; oz: "cx.oz"; pa: "cx.pa"; pb: "cx.pb"; pc: "cx.pc"; pd: "cx.pd"; pe: "cx.pe"; pf: "cx.pf"; pg: "cx.pg"; ph: "cx.ph"; pi: "cx.pi"; pj: "cx.pj"; pk: "cx.pk"; pl: "cx.pl"; pm: "cx.pm"; pn: "cx.pn"; po: "cx.po"; pp: "cx.pp"; pq: "cx.pq"; pr: "cx.pr"; ps: "cx.ps"; pt: "cx.pt"; pu: "cx.pu"; pv: "cx.pv"; pw: "cx.pw"; px: "cx.px"; py: "cx.py"; pz: "cx.pz"; qa: "cx.qa"; qb: "cx.qb"; qc: "cx.qc"; qd: "cx.qd"; qe: "cx.qe"; qf: "cx.qf"; qg: "cx.qg"; qh: "cx.qh"; qi: "cx.qi"; qj: "cx.qj"; qk: "cx.qk"; ql: "cx.ql"; qm: "cx.qm"; qn: "cx.qn"; qo: "cx.qo"; qp: "cx.qp"; qq: "cx.qq"; qr: "cx.qr"; qs: "cx.qs"; qt: "cx.qt"; qu: "cx.qu"; qv: "cx.qv"; qw: "cx.qw"; qx: "cx.qx"; qy: "cx.qy"; qz: "cx.qz"; ra: "cx.ra"; rb: "cx.rb"; rc: "cx.rc"; rd: "cx.rd"; re: "cx.re"; rf: "cx.rf"; rg: "cx.rg"; rh: "cx.rh"; ri: "cx.ri"; rj: "cx.rj"; rk: "cx.rk"; rl: "cx.rl"; rm: "cx.rm"; rn: "cx.rn"; ro: "cx.ro"; rp: "cx.rp"; rq: "cx.rq"; rr: "cx.rr"; rs: "cx.rs"; rt: "cx.rt"; ru: "cx.ru"; rv: "cx.rv"; rw: "cx.rw"; rx: "cx.rx"; ry: "cx.ry"; rz: "cx.rz"; sa: "cx.sa"; sb: "cx.sb"; sc: "cx.sc"; sd: "cx.sd"; se: "cx.se"; sf: "cx.sf"; sg: "cx.sg"; sh: "cx.sh"; si: "cx.si"; sj: "cx.sj"; sk: "cx.sk"; sl: "cx.sl"; sm: "cx.sm"; sn: "cx.sn"; so: "cx.so"; sp: "cx.sp"; sq: "cx.sq"; sr: "cx.sr"; ss: "cx.ss"; st: "cx.st"; su: "cx.su"; sv: "cx.sv"; sw: "cx.sw"; sx: "cx.sx"; sy: "cx.sy"; sz: "cx.sz"; ta: "cx.ta"; tb: "cx.tb"; tc: "cx.tc"; td: "cx.td"; te: "cx.te"; tf: "cx.tf"; tg: "cx.tg"; th: "cx.th"; ti: "cx.ti"; tj: "cx.tj"; tk: "cx.tk"; tl: "cx.tl"; tm: "cx.tm"; tn: "cx.tn"; to: "cx.to"; tp: "cx.tp"; tq: "cx.tq"; tr: "cx.tr"; ts: "cx.ts"; tt: "cx.tt"; tu: "cx.tu"; tv: "cx.tv"; tw: "cx.tw"; tx: "cx.tx"; ty: "cx.ty"; tz: "cx.tz"; ua: "cx.ua"; ub: "cx.ub"; uc: "cx.uc"; ud: "cx.ud"; ue: "cx.ue"; uf: "cx.uf"; ug: "cx.ug"; uh: "cx.uh"; ui: "cx.ui"; uj: "cx.uj"; uk: "cx.uk"; ul: "cx.ul"; um: "cx.um"; un: "cx.un"; uo: "cx.uo"; up: "cx.up"; uq: "cx.uq"; ur: "cx.ur"; us: "cx.us"; ut: "cx.ut"; uu: "cx.uu"; uv: "cx.uv"; uw: "cx.uw"; ux: "cx.ux"; uy: "cx.uy"; uz: "cx.uz"; va: "cx.va"; vb: "cx.vb"; vc: "cx.vc"; vd: "cx.vd"; ve: "cx.ve"; vf: "cx.vf"; vg: "cx.vg"; vh: "cx.vh"; vi: "cx.vi"; vj: "cx.vj"; vk: "cx.vk"; vl: "cx.vl"; vm: "cx.vm"; vn: "cx.vn"; vo: "cx.vo"; vp: "cx.vp"; vq: "cx.vq"; vr: "cx.vr"; vs: "cx.vs"; vt: "cx.vt"; vu: "cx.vu"; vv: "cx.vv"; vw: "cx.vw"; vx: "cx.vx"; vy: "cx.vy"; vz: "cx.vz"; wa: "cx.wa"; wb: "cx.wb"; wc: "cx.wc"; wd: "cx.wd"; we: "cx.we"; wf: "cx.wf"; wg: "cx.wg"; wh: "cx.wh"; wi: "cx.wi"; wj: "cx.wj"; wk: "cx.wk"; wl: "cx.wl"; wm: "cx.wm"; wn: "cx.wn"; wo: "cx.wo"; wp: "cx.wp"; wq: "cx.wq"; wr: "cx.wr"; ws: "cx.ws"; wt: "cx.wt"; wu: "cx.wu"; wv: "cx.wv"; ww: "cx.ww"; wx: "cx.wx"; wy: "cx.wy"; wz: "cx.wz"; xa: "cx.xa"; xb: "cx.xb"; xc: "cx.xc"; xd: "cx.xd"; xe: "cx.xe"; xf: "cx.xf"; xg: "cx.xg"; xh: "cx.xh"; xi: "cx.xi"; xj: "cx.xj"; xk: "cx.xk"; xl: "cx.xl"; xm: "cx.xm"; xn: "cx.xn"; xo: "cx.xo"; xp: "cx.xp"; xq: "cx.xq"; xr: "cx.xr"; xs: "cx.xs"; xt: "cx.xt"; xu: "cx.xu"; xv: "cx.xv"; xw: "cx.xw"; xx: "cx.xx"; xy: "cx.xy"; xz: "cx.xz"; ya: "cx.ya"; yb: "cx.yb"; yc: "cx.yc"; yd: "cx.yd"; ye: "cx.ye"; yf: "cx.yf"; yg: "cx.yg"; yh: "cx.yh"; yi: "cx.yi"; yj: "cx.yj"; yk: "cx.yk"; yl: "cx.yl"; ym: "cx.ym"; yn: "cx.yn"; yo: "cx.yo"; yp: "cx.yp"; yq: "cx.yq"; yr: "cx.yr"; ys: "cx.ys"; yt: "cx.yt"; yu: "cx.yu"; yv: "cx.yv"; yw: "cx.yw"; yx: "cx.yx"; yy: "cx.yy"; yz: "cx.yz"; za: "cx.za"; zb: "cx.zb"; zc: "cx.zc"; zd: "cx.zd"; ze: "cx.ze"; zf: "cx.zf"; zg: "cx.zg"; zh: "cx.zh"; zi: "cx.zi"; zj: "cx.zj"; zk: "cx.zk"; zl: "cx.zl"; zm: "cx.zm"; zn: "cx.zn"; zo: "cx.zo"; zp: "cx.zp"; zq: "cx.zq"; zr: "cx.zr"; zs: "cx.zs"; zt: "cx.zt"; zu: "cx.zu"; zv: "cx.zv"; zw: "cx.zw"; zx: "cx.zx"; zy: "cx.zy"; zz: "cx.zz"; }; cy: { aa: "cy.aa"; ab: "cy.ab"; ac: "cy.ac"; ad: "cy.ad"; ae: "cy.ae"; af: "cy.af"; ag: "cy.ag"; ah: "cy.ah"; ai: "cy.ai"; aj: "cy.aj"; ak: "cy.ak"; al: "cy.al"; am: "cy.am"; an: "cy.an"; ao: "cy.ao"; ap: "cy.ap"; aq: "cy.aq"; ar: "cy.ar"; as: "cy.as"; at: "cy.at"; au: "cy.au"; av: "cy.av"; aw: "cy.aw"; ax: "cy.ax"; ay: "cy.ay"; az: "cy.az"; ba: "cy.ba"; bb: "cy.bb"; bc: "cy.bc"; bd: "cy.bd"; be: "cy.be"; bf: "cy.bf"; bg: "cy.bg"; bh: "cy.bh"; bi: "cy.bi"; bj: "cy.bj"; bk: "cy.bk"; bl: "cy.bl"; bm: "cy.bm"; bn: "cy.bn"; bo: "cy.bo"; bp: "cy.bp"; bq: "cy.bq"; br: "cy.br"; bs: "cy.bs"; bt: "cy.bt"; bu: "cy.bu"; bv: "cy.bv"; bw: "cy.bw"; bx: "cy.bx"; by: "cy.by"; bz: "cy.bz"; ca: "cy.ca"; cb: "cy.cb"; cc: "cy.cc"; cd: "cy.cd"; ce: "cy.ce"; cf: "cy.cf"; cg: "cy.cg"; ch: "cy.ch"; ci: "cy.ci"; cj: "cy.cj"; ck: "cy.ck"; cl: "cy.cl"; cm: "cy.cm"; cn: "cy.cn"; co: "cy.co"; cp: "cy.cp"; cq: "cy.cq"; cr: "cy.cr"; cs: "cy.cs"; ct: "cy.ct"; cu: "cy.cu"; cv: "cy.cv"; cw: "cy.cw"; cx: "cy.cx"; cy: "cy.cy"; cz: "cy.cz"; da: "cy.da"; db: "cy.db"; dc: "cy.dc"; dd: "cy.dd"; de: "cy.de"; df: "cy.df"; dg: "cy.dg"; dh: "cy.dh"; di: "cy.di"; dj: "cy.dj"; dk: "cy.dk"; dl: "cy.dl"; dm: "cy.dm"; dn: "cy.dn"; do: "cy.do"; dp: "cy.dp"; dq: "cy.dq"; dr: "cy.dr"; ds: "cy.ds"; dt: "cy.dt"; du: "cy.du"; dv: "cy.dv"; dw: "cy.dw"; dx: "cy.dx"; dy: "cy.dy"; dz: "cy.dz"; ea: "cy.ea"; eb: "cy.eb"; ec: "cy.ec"; ed: "cy.ed"; ee: "cy.ee"; ef: "cy.ef"; eg: "cy.eg"; eh: "cy.eh"; ei: "cy.ei"; ej: "cy.ej"; ek: "cy.ek"; el: "cy.el"; em: "cy.em"; en: "cy.en"; eo: "cy.eo"; ep: "cy.ep"; eq: "cy.eq"; er: "cy.er"; es: "cy.es"; et: "cy.et"; eu: "cy.eu"; ev: "cy.ev"; ew: "cy.ew"; ex: "cy.ex"; ey: "cy.ey"; ez: "cy.ez"; fa: "cy.fa"; fb: "cy.fb"; fc: "cy.fc"; fd: "cy.fd"; fe: "cy.fe"; ff: "cy.ff"; fg: "cy.fg"; fh: "cy.fh"; fi: "cy.fi"; fj: "cy.fj"; fk: "cy.fk"; fl: "cy.fl"; fm: "cy.fm"; fn: "cy.fn"; fo: "cy.fo"; fp: "cy.fp"; fq: "cy.fq"; fr: "cy.fr"; fs: "cy.fs"; ft: "cy.ft"; fu: "cy.fu"; fv: "cy.fv"; fw: "cy.fw"; fx: "cy.fx"; fy: "cy.fy"; fz: "cy.fz"; ga: "cy.ga"; gb: "cy.gb"; gc: "cy.gc"; gd: "cy.gd"; ge: "cy.ge"; gf: "cy.gf"; gg: "cy.gg"; gh: "cy.gh"; gi: "cy.gi"; gj: "cy.gj"; gk: "cy.gk"; gl: "cy.gl"; gm: "cy.gm"; gn: "cy.gn"; go: "cy.go"; gp: "cy.gp"; gq: "cy.gq"; gr: "cy.gr"; gs: "cy.gs"; gt: "cy.gt"; gu: "cy.gu"; gv: "cy.gv"; gw: "cy.gw"; gx: "cy.gx"; gy: "cy.gy"; gz: "cy.gz"; ha: "cy.ha"; hb: "cy.hb"; hc: "cy.hc"; hd: "cy.hd"; he: "cy.he"; hf: "cy.hf"; hg: "cy.hg"; hh: "cy.hh"; hi: "cy.hi"; hj: "cy.hj"; hk: "cy.hk"; hl: "cy.hl"; hm: "cy.hm"; hn: "cy.hn"; ho: "cy.ho"; hp: "cy.hp"; hq: "cy.hq"; hr: "cy.hr"; hs: "cy.hs"; ht: "cy.ht"; hu: "cy.hu"; hv: "cy.hv"; hw: "cy.hw"; hx: "cy.hx"; hy: "cy.hy"; hz: "cy.hz"; ia: "cy.ia"; ib: "cy.ib"; ic: "cy.ic"; id: "cy.id"; ie: "cy.ie"; if: "cy.if"; ig: "cy.ig"; ih: "cy.ih"; ii: "cy.ii"; ij: "cy.ij"; ik: "cy.ik"; il: "cy.il"; im: "cy.im"; in: "cy.in"; io: "cy.io"; ip: "cy.ip"; iq: "cy.iq"; ir: "cy.ir"; is: "cy.is"; it: "cy.it"; iu: "cy.iu"; iv: "cy.iv"; iw: "cy.iw"; ix: "cy.ix"; iy: "cy.iy"; iz: "cy.iz"; ja: "cy.ja"; jb: "cy.jb"; jc: "cy.jc"; jd: "cy.jd"; je: "cy.je"; jf: "cy.jf"; jg: "cy.jg"; jh: "cy.jh"; ji: "cy.ji"; jj: "cy.jj"; jk: "cy.jk"; jl: "cy.jl"; jm: "cy.jm"; jn: "cy.jn"; jo: "cy.jo"; jp: "cy.jp"; jq: "cy.jq"; jr: "cy.jr"; js: "cy.js"; jt: "cy.jt"; ju: "cy.ju"; jv: "cy.jv"; jw: "cy.jw"; jx: "cy.jx"; jy: "cy.jy"; jz: "cy.jz"; ka: "cy.ka"; kb: "cy.kb"; kc: "cy.kc"; kd: "cy.kd"; ke: "cy.ke"; kf: "cy.kf"; kg: "cy.kg"; kh: "cy.kh"; ki: "cy.ki"; kj: "cy.kj"; kk: "cy.kk"; kl: "cy.kl"; km: "cy.km"; kn: "cy.kn"; ko: "cy.ko"; kp: "cy.kp"; kq: "cy.kq"; kr: "cy.kr"; ks: "cy.ks"; kt: "cy.kt"; ku: "cy.ku"; kv: "cy.kv"; kw: "cy.kw"; kx: "cy.kx"; ky: "cy.ky"; kz: "cy.kz"; la: "cy.la"; lb: "cy.lb"; lc: "cy.lc"; ld: "cy.ld"; le: "cy.le"; lf: "cy.lf"; lg: "cy.lg"; lh: "cy.lh"; li: "cy.li"; lj: "cy.lj"; lk: "cy.lk"; ll: "cy.ll"; lm: "cy.lm"; ln: "cy.ln"; lo: "cy.lo"; lp: "cy.lp"; lq: "cy.lq"; lr: "cy.lr"; ls: "cy.ls"; lt: "cy.lt"; lu: "cy.lu"; lv: "cy.lv"; lw: "cy.lw"; lx: "cy.lx"; ly: "cy.ly"; lz: "cy.lz"; ma: "cy.ma"; mb: "cy.mb"; mc: "cy.mc"; md: "cy.md"; me: "cy.me"; mf: "cy.mf"; mg: "cy.mg"; mh: "cy.mh"; mi: "cy.mi"; mj: "cy.mj"; mk: "cy.mk"; ml: "cy.ml"; mm: "cy.mm"; mn: "cy.mn"; mo: "cy.mo"; mp: "cy.mp"; mq: "cy.mq"; mr: "cy.mr"; ms: "cy.ms"; mt: "cy.mt"; mu: "cy.mu"; mv: "cy.mv"; mw: "cy.mw"; mx: "cy.mx"; my: "cy.my"; mz: "cy.mz"; na: "cy.na"; nb: "cy.nb"; nc: "cy.nc"; nd: "cy.nd"; ne: "cy.ne"; nf: "cy.nf"; ng: "cy.ng"; nh: "cy.nh"; ni: "cy.ni"; nj: "cy.nj"; nk: "cy.nk"; nl: "cy.nl"; nm: "cy.nm"; nn: "cy.nn"; no: "cy.no"; np: "cy.np"; nq: "cy.nq"; nr: "cy.nr"; ns: "cy.ns"; nt: "cy.nt"; nu: "cy.nu"; nv: "cy.nv"; nw: "cy.nw"; nx: "cy.nx"; ny: "cy.ny"; nz: "cy.nz"; oa: "cy.oa"; ob: "cy.ob"; oc: "cy.oc"; od: "cy.od"; oe: "cy.oe"; of: "cy.of"; og: "cy.og"; oh: "cy.oh"; oi: "cy.oi"; oj: "cy.oj"; ok: "cy.ok"; ol: "cy.ol"; om: "cy.om"; on: "cy.on"; oo: "cy.oo"; op: "cy.op"; oq: "cy.oq"; or: "cy.or"; os: "cy.os"; ot: "cy.ot"; ou: "cy.ou"; ov: "cy.ov"; ow: "cy.ow"; ox: "cy.ox"; oy: "cy.oy"; oz: "cy.oz"; pa: "cy.pa"; pb: "cy.pb"; pc: "cy.pc"; pd: "cy.pd"; pe: "cy.pe"; pf: "cy.pf"; pg: "cy.pg"; ph: "cy.ph"; pi: "cy.pi"; pj: "cy.pj"; pk: "cy.pk"; pl: "cy.pl"; pm: "cy.pm"; pn: "cy.pn"; po: "cy.po"; pp: "cy.pp"; pq: "cy.pq"; pr: "cy.pr"; ps: "cy.ps"; pt: "cy.pt"; pu: "cy.pu"; pv: "cy.pv"; pw: "cy.pw"; px: "cy.px"; py: "cy.py"; pz: "cy.pz"; qa: "cy.qa"; qb: "cy.qb"; qc: "cy.qc"; qd: "cy.qd"; qe: "cy.qe"; qf: "cy.qf"; qg: "cy.qg"; qh: "cy.qh"; qi: "cy.qi"; qj: "cy.qj"; qk: "cy.qk"; ql: "cy.ql"; qm: "cy.qm"; qn: "cy.qn"; qo: "cy.qo"; qp: "cy.qp"; qq: "cy.qq"; qr: "cy.qr"; qs: "cy.qs"; qt: "cy.qt"; qu: "cy.qu"; qv: "cy.qv"; qw: "cy.qw"; qx: "cy.qx"; qy: "cy.qy"; qz: "cy.qz"; ra: "cy.ra"; rb: "cy.rb"; rc: "cy.rc"; rd: "cy.rd"; re: "cy.re"; rf: "cy.rf"; rg: "cy.rg"; rh: "cy.rh"; ri: "cy.ri"; rj: "cy.rj"; rk: "cy.rk"; rl: "cy.rl"; rm: "cy.rm"; rn: "cy.rn"; ro: "cy.ro"; rp: "cy.rp"; rq: "cy.rq"; rr: "cy.rr"; rs: "cy.rs"; rt: "cy.rt"; ru: "cy.ru"; rv: "cy.rv"; rw: "cy.rw"; rx: "cy.rx"; ry: "cy.ry"; rz: "cy.rz"; sa: "cy.sa"; sb: "cy.sb"; sc: "cy.sc"; sd: "cy.sd"; se: "cy.se"; sf: "cy.sf"; sg: "cy.sg"; sh: "cy.sh"; si: "cy.si"; sj: "cy.sj"; sk: "cy.sk"; sl: "cy.sl"; sm: "cy.sm"; sn: "cy.sn"; so: "cy.so"; sp: "cy.sp"; sq: "cy.sq"; sr: "cy.sr"; ss: "cy.ss"; st: "cy.st"; su: "cy.su"; sv: "cy.sv"; sw: "cy.sw"; sx: "cy.sx"; sy: "cy.sy"; sz: "cy.sz"; ta: "cy.ta"; tb: "cy.tb"; tc: "cy.tc"; td: "cy.td"; te: "cy.te"; tf: "cy.tf"; tg: "cy.tg"; th: "cy.th"; ti: "cy.ti"; tj: "cy.tj"; tk: "cy.tk"; tl: "cy.tl"; tm: "cy.tm"; tn: "cy.tn"; to: "cy.to"; tp: "cy.tp"; tq: "cy.tq"; tr: "cy.tr"; ts: "cy.ts"; tt: "cy.tt"; tu: "cy.tu"; tv: "cy.tv"; tw: "cy.tw"; tx: "cy.tx"; ty: "cy.ty"; tz: "cy.tz"; ua: "cy.ua"; ub: "cy.ub"; uc: "cy.uc"; ud: "cy.ud"; ue: "cy.ue"; uf: "cy.uf"; ug: "cy.ug"; uh: "cy.uh"; ui: "cy.ui"; uj: "cy.uj"; uk: "cy.uk"; ul: "cy.ul"; um: "cy.um"; un: "cy.un"; uo: "cy.uo"; up: "cy.up"; uq: "cy.uq"; ur: "cy.ur"; us: "cy.us"; ut: "cy.ut"; uu: "cy.uu"; uv: "cy.uv"; uw: "cy.uw"; ux: "cy.ux"; uy: "cy.uy"; uz: "cy.uz"; va: "cy.va"; vb: "cy.vb"; vc: "cy.vc"; vd: "cy.vd"; ve: "cy.ve"; vf: "cy.vf"; vg: "cy.vg"; vh: "cy.vh"; vi: "cy.vi"; vj: "cy.vj"; vk: "cy.vk"; vl: "cy.vl"; vm: "cy.vm"; vn: "cy.vn"; vo: "cy.vo"; vp: "cy.vp"; vq: "cy.vq"; vr: "cy.vr"; vs: "cy.vs"; vt: "cy.vt"; vu: "cy.vu"; vv: "cy.vv"; vw: "cy.vw"; vx: "cy.vx"; vy: "cy.vy"; vz: "cy.vz"; wa: "cy.wa"; wb: "cy.wb"; wc: "cy.wc"; wd: "cy.wd"; we: "cy.we"; wf: "cy.wf"; wg: "cy.wg"; wh: "cy.wh"; wi: "cy.wi"; wj: "cy.wj"; wk: "cy.wk"; wl: "cy.wl"; wm: "cy.wm"; wn: "cy.wn"; wo: "cy.wo"; wp: "cy.wp"; wq: "cy.wq"; wr: "cy.wr"; ws: "cy.ws"; wt: "cy.wt"; wu: "cy.wu"; wv: "cy.wv"; ww: "cy.ww"; wx: "cy.wx"; wy: "cy.wy"; wz: "cy.wz"; xa: "cy.xa"; xb: "cy.xb"; xc: "cy.xc"; xd: "cy.xd"; xe: "cy.xe"; xf: "cy.xf"; xg: "cy.xg"; xh: "cy.xh"; xi: "cy.xi"; xj: "cy.xj"; xk: "cy.xk"; xl: "cy.xl"; xm: "cy.xm"; xn: "cy.xn"; xo: "cy.xo"; xp: "cy.xp"; xq: "cy.xq"; xr: "cy.xr"; xs: "cy.xs"; xt: "cy.xt"; xu: "cy.xu"; xv: "cy.xv"; xw: "cy.xw"; xx: "cy.xx"; xy: "cy.xy"; xz: "cy.xz"; ya: "cy.ya"; yb: "cy.yb"; yc: "cy.yc"; yd: "cy.yd"; ye: "cy.ye"; yf: "cy.yf"; yg: "cy.yg"; yh: "cy.yh"; yi: "cy.yi"; yj: "cy.yj"; yk: "cy.yk"; yl: "cy.yl"; ym: "cy.ym"; yn: "cy.yn"; yo: "cy.yo"; yp: "cy.yp"; yq: "cy.yq"; yr: "cy.yr"; ys: "cy.ys"; yt: "cy.yt"; yu: "cy.yu"; yv: "cy.yv"; yw: "cy.yw"; yx: "cy.yx"; yy: "cy.yy"; yz: "cy.yz"; za: "cy.za"; zb: "cy.zb"; zc: "cy.zc"; zd: "cy.zd"; ze: "cy.ze"; zf: "cy.zf"; zg: "cy.zg"; zh: "cy.zh"; zi: "cy.zi"; zj: "cy.zj"; zk: "cy.zk"; zl: "cy.zl"; zm: "cy.zm"; zn: "cy.zn"; zo: "cy.zo"; zp: "cy.zp"; zq: "cy.zq"; zr: "cy.zr"; zs: "cy.zs"; zt: "cy.zt"; zu: "cy.zu"; zv: "cy.zv"; zw: "cy.zw"; zx: "cy.zx"; zy: "cy.zy"; zz: "cy.zz"; }; cz: { aa: "cz.aa"; ab: "cz.ab"; ac: "cz.ac"; ad: "cz.ad"; ae: "cz.ae"; af: "cz.af"; ag: "cz.ag"; ah: "cz.ah"; ai: "cz.ai"; aj: "cz.aj"; ak: "cz.ak"; al: "cz.al"; am: "cz.am"; an: "cz.an"; ao: "cz.ao"; ap: "cz.ap"; aq: "cz.aq"; ar: "cz.ar"; as: "cz.as"; at: "cz.at"; au: "cz.au"; av: "cz.av"; aw: "cz.aw"; ax: "cz.ax"; ay: "cz.ay"; az: "cz.az"; ba: "cz.ba"; bb: "cz.bb"; bc: "cz.bc"; bd: "cz.bd"; be: "cz.be"; bf: "cz.bf"; bg: "cz.bg"; bh: "cz.bh"; bi: "cz.bi"; bj: "cz.bj"; bk: "cz.bk"; bl: "cz.bl"; bm: "cz.bm"; bn: "cz.bn"; bo: "cz.bo"; bp: "cz.bp"; bq: "cz.bq"; br: "cz.br"; bs: "cz.bs"; bt: "cz.bt"; bu: "cz.bu"; bv: "cz.bv"; bw: "cz.bw"; bx: "cz.bx"; by: "cz.by"; bz: "cz.bz"; ca: "cz.ca"; cb: "cz.cb"; cc: "cz.cc"; cd: "cz.cd"; ce: "cz.ce"; cf: "cz.cf"; cg: "cz.cg"; ch: "cz.ch"; ci: "cz.ci"; cj: "cz.cj"; ck: "cz.ck"; cl: "cz.cl"; cm: "cz.cm"; cn: "cz.cn"; co: "cz.co"; cp: "cz.cp"; cq: "cz.cq"; cr: "cz.cr"; cs: "cz.cs"; ct: "cz.ct"; cu: "cz.cu"; cv: "cz.cv"; cw: "cz.cw"; cx: "cz.cx"; cy: "cz.cy"; cz: "cz.cz"; da: "cz.da"; db: "cz.db"; dc: "cz.dc"; dd: "cz.dd"; de: "cz.de"; df: "cz.df"; dg: "cz.dg"; dh: "cz.dh"; di: "cz.di"; dj: "cz.dj"; dk: "cz.dk"; dl: "cz.dl"; dm: "cz.dm"; dn: "cz.dn"; do: "cz.do"; dp: "cz.dp"; dq: "cz.dq"; dr: "cz.dr"; ds: "cz.ds"; dt: "cz.dt"; du: "cz.du"; dv: "cz.dv"; dw: "cz.dw"; dx: "cz.dx"; dy: "cz.dy"; dz: "cz.dz"; ea: "cz.ea"; eb: "cz.eb"; ec: "cz.ec"; ed: "cz.ed"; ee: "cz.ee"; ef: "cz.ef"; eg: "cz.eg"; eh: "cz.eh"; ei: "cz.ei"; ej: "cz.ej"; ek: "cz.ek"; el: "cz.el"; em: "cz.em"; en: "cz.en"; eo: "cz.eo"; ep: "cz.ep"; eq: "cz.eq"; er: "cz.er"; es: "cz.es"; et: "cz.et"; eu: "cz.eu"; ev: "cz.ev"; ew: "cz.ew"; ex: "cz.ex"; ey: "cz.ey"; ez: "cz.ez"; fa: "cz.fa"; fb: "cz.fb"; fc: "cz.fc"; fd: "cz.fd"; fe: "cz.fe"; ff: "cz.ff"; fg: "cz.fg"; fh: "cz.fh"; fi: "cz.fi"; fj: "cz.fj"; fk: "cz.fk"; fl: "cz.fl"; fm: "cz.fm"; fn: "cz.fn"; fo: "cz.fo"; fp: "cz.fp"; fq: "cz.fq"; fr: "cz.fr"; fs: "cz.fs"; ft: "cz.ft"; fu: "cz.fu"; fv: "cz.fv"; fw: "cz.fw"; fx: "cz.fx"; fy: "cz.fy"; fz: "cz.fz"; ga: "cz.ga"; gb: "cz.gb"; gc: "cz.gc"; gd: "cz.gd"; ge: "cz.ge"; gf: "cz.gf"; gg: "cz.gg"; gh: "cz.gh"; gi: "cz.gi"; gj: "cz.gj"; gk: "cz.gk"; gl: "cz.gl"; gm: "cz.gm"; gn: "cz.gn"; go: "cz.go"; gp: "cz.gp"; gq: "cz.gq"; gr: "cz.gr"; gs: "cz.gs"; gt: "cz.gt"; gu: "cz.gu"; gv: "cz.gv"; gw: "cz.gw"; gx: "cz.gx"; gy: "cz.gy"; gz: "cz.gz"; ha: "cz.ha"; hb: "cz.hb"; hc: "cz.hc"; hd: "cz.hd"; he: "cz.he"; hf: "cz.hf"; hg: "cz.hg"; hh: "cz.hh"; hi: "cz.hi"; hj: "cz.hj"; hk: "cz.hk"; hl: "cz.hl"; hm: "cz.hm"; hn: "cz.hn"; ho: "cz.ho"; hp: "cz.hp"; hq: "cz.hq"; hr: "cz.hr"; hs: "cz.hs"; ht: "cz.ht"; hu: "cz.hu"; hv: "cz.hv"; hw: "cz.hw"; hx: "cz.hx"; hy: "cz.hy"; hz: "cz.hz"; ia: "cz.ia"; ib: "cz.ib"; ic: "cz.ic"; id: "cz.id"; ie: "cz.ie"; if: "cz.if"; ig: "cz.ig"; ih: "cz.ih"; ii: "cz.ii"; ij: "cz.ij"; ik: "cz.ik"; il: "cz.il"; im: "cz.im"; in: "cz.in"; io: "cz.io"; ip: "cz.ip"; iq: "cz.iq"; ir: "cz.ir"; is: "cz.is"; it: "cz.it"; iu: "cz.iu"; iv: "cz.iv"; iw: "cz.iw"; ix: "cz.ix"; iy: "cz.iy"; iz: "cz.iz"; ja: "cz.ja"; jb: "cz.jb"; jc: "cz.jc"; jd: "cz.jd"; je: "cz.je"; jf: "cz.jf"; jg: "cz.jg"; jh: "cz.jh"; ji: "cz.ji"; jj: "cz.jj"; jk: "cz.jk"; jl: "cz.jl"; jm: "cz.jm"; jn: "cz.jn"; jo: "cz.jo"; jp: "cz.jp"; jq: "cz.jq"; jr: "cz.jr"; js: "cz.js"; jt: "cz.jt"; ju: "cz.ju"; jv: "cz.jv"; jw: "cz.jw"; jx: "cz.jx"; jy: "cz.jy"; jz: "cz.jz"; ka: "cz.ka"; kb: "cz.kb"; kc: "cz.kc"; kd: "cz.kd"; ke: "cz.ke"; kf: "cz.kf"; kg: "cz.kg"; kh: "cz.kh"; ki: "cz.ki"; kj: "cz.kj"; kk: "cz.kk"; kl: "cz.kl"; km: "cz.km"; kn: "cz.kn"; ko: "cz.ko"; kp: "cz.kp"; kq: "cz.kq"; kr: "cz.kr"; ks: "cz.ks"; kt: "cz.kt"; ku: "cz.ku"; kv: "cz.kv"; kw: "cz.kw"; kx: "cz.kx"; ky: "cz.ky"; kz: "cz.kz"; la: "cz.la"; lb: "cz.lb"; lc: "cz.lc"; ld: "cz.ld"; le: "cz.le"; lf: "cz.lf"; lg: "cz.lg"; lh: "cz.lh"; li: "cz.li"; lj: "cz.lj"; lk: "cz.lk"; ll: "cz.ll"; lm: "cz.lm"; ln: "cz.ln"; lo: "cz.lo"; lp: "cz.lp"; lq: "cz.lq"; lr: "cz.lr"; ls: "cz.ls"; lt: "cz.lt"; lu: "cz.lu"; lv: "cz.lv"; lw: "cz.lw"; lx: "cz.lx"; ly: "cz.ly"; lz: "cz.lz"; ma: "cz.ma"; mb: "cz.mb"; mc: "cz.mc"; md: "cz.md"; me: "cz.me"; mf: "cz.mf"; mg: "cz.mg"; mh: "cz.mh"; mi: "cz.mi"; mj: "cz.mj"; mk: "cz.mk"; ml: "cz.ml"; mm: "cz.mm"; mn: "cz.mn"; mo: "cz.mo"; mp: "cz.mp"; mq: "cz.mq"; mr: "cz.mr"; ms: "cz.ms"; mt: "cz.mt"; mu: "cz.mu"; mv: "cz.mv"; mw: "cz.mw"; mx: "cz.mx"; my: "cz.my"; mz: "cz.mz"; na: "cz.na"; nb: "cz.nb"; nc: "cz.nc"; nd: "cz.nd"; ne: "cz.ne"; nf: "cz.nf"; ng: "cz.ng"; nh: "cz.nh"; ni: "cz.ni"; nj: "cz.nj"; nk: "cz.nk"; nl: "cz.nl"; nm: "cz.nm"; nn: "cz.nn"; no: "cz.no"; np: "cz.np"; nq: "cz.nq"; nr: "cz.nr"; ns: "cz.ns"; nt: "cz.nt"; nu: "cz.nu"; nv: "cz.nv"; nw: "cz.nw"; nx: "cz.nx"; ny: "cz.ny"; nz: "cz.nz"; oa: "cz.oa"; ob: "cz.ob"; oc: "cz.oc"; od: "cz.od"; oe: "cz.oe"; of: "cz.of"; og: "cz.og"; oh: "cz.oh"; oi: "cz.oi"; oj: "cz.oj"; ok: "cz.ok"; ol: "cz.ol"; om: "cz.om"; on: "cz.on"; oo: "cz.oo"; op: "cz.op"; oq: "cz.oq"; or: "cz.or"; os: "cz.os"; ot: "cz.ot"; ou: "cz.ou"; ov: "cz.ov"; ow: "cz.ow"; ox: "cz.ox"; oy: "cz.oy"; oz: "cz.oz"; pa: "cz.pa"; pb: "cz.pb"; pc: "cz.pc"; pd: "cz.pd"; pe: "cz.pe"; pf: "cz.pf"; pg: "cz.pg"; ph: "cz.ph"; pi: "cz.pi"; pj: "cz.pj"; pk: "cz.pk"; pl: "cz.pl"; pm: "cz.pm"; pn: "cz.pn"; po: "cz.po"; pp: "cz.pp"; pq: "cz.pq"; pr: "cz.pr"; ps: "cz.ps"; pt: "cz.pt"; pu: "cz.pu"; pv: "cz.pv"; pw: "cz.pw"; px: "cz.px"; py: "cz.py"; pz: "cz.pz"; qa: "cz.qa"; qb: "cz.qb"; qc: "cz.qc"; qd: "cz.qd"; qe: "cz.qe"; qf: "cz.qf"; qg: "cz.qg"; qh: "cz.qh"; qi: "cz.qi"; qj: "cz.qj"; qk: "cz.qk"; ql: "cz.ql"; qm: "cz.qm"; qn: "cz.qn"; qo: "cz.qo"; qp: "cz.qp"; qq: "cz.qq"; qr: "cz.qr"; qs: "cz.qs"; qt: "cz.qt"; qu: "cz.qu"; qv: "cz.qv"; qw: "cz.qw"; qx: "cz.qx"; qy: "cz.qy"; qz: "cz.qz"; ra: "cz.ra"; rb: "cz.rb"; rc: "cz.rc"; rd: "cz.rd"; re: "cz.re"; rf: "cz.rf"; rg: "cz.rg"; rh: "cz.rh"; ri: "cz.ri"; rj: "cz.rj"; rk: "cz.rk"; rl: "cz.rl"; rm: "cz.rm"; rn: "cz.rn"; ro: "cz.ro"; rp: "cz.rp"; rq: "cz.rq"; rr: "cz.rr"; rs: "cz.rs"; rt: "cz.rt"; ru: "cz.ru"; rv: "cz.rv"; rw: "cz.rw"; rx: "cz.rx"; ry: "cz.ry"; rz: "cz.rz"; sa: "cz.sa"; sb: "cz.sb"; sc: "cz.sc"; sd: "cz.sd"; se: "cz.se"; sf: "cz.sf"; sg: "cz.sg"; sh: "cz.sh"; si: "cz.si"; sj: "cz.sj"; sk: "cz.sk"; sl: "cz.sl"; sm: "cz.sm"; sn: "cz.sn"; so: "cz.so"; sp: "cz.sp"; sq: "cz.sq"; sr: "cz.sr"; ss: "cz.ss"; st: "cz.st"; su: "cz.su"; sv: "cz.sv"; sw: "cz.sw"; sx: "cz.sx"; sy: "cz.sy"; sz: "cz.sz"; ta: "cz.ta"; tb: "cz.tb"; tc: "cz.tc"; td: "cz.td"; te: "cz.te"; tf: "cz.tf"; tg: "cz.tg"; th: "cz.th"; ti: "cz.ti"; tj: "cz.tj"; tk: "cz.tk"; tl: "cz.tl"; tm: "cz.tm"; tn: "cz.tn"; to: "cz.to"; tp: "cz.tp"; tq: "cz.tq"; tr: "cz.tr"; ts: "cz.ts"; tt: "cz.tt"; tu: "cz.tu"; tv: "cz.tv"; tw: "cz.tw"; tx: "cz.tx"; ty: "cz.ty"; tz: "cz.tz"; ua: "cz.ua"; ub: "cz.ub"; uc: "cz.uc"; ud: "cz.ud"; ue: "cz.ue"; uf: "cz.uf"; ug: "cz.ug"; uh: "cz.uh"; ui: "cz.ui"; uj: "cz.uj"; uk: "cz.uk"; ul: "cz.ul"; um: "cz.um"; un: "cz.un"; uo: "cz.uo"; up: "cz.up"; uq: "cz.uq"; ur: "cz.ur"; us: "cz.us"; ut: "cz.ut"; uu: "cz.uu"; uv: "cz.uv"; uw: "cz.uw"; ux: "cz.ux"; uy: "cz.uy"; uz: "cz.uz"; va: "cz.va"; vb: "cz.vb"; vc: "cz.vc"; vd: "cz.vd"; ve: "cz.ve"; vf: "cz.vf"; vg: "cz.vg"; vh: "cz.vh"; vi: "cz.vi"; vj: "cz.vj"; vk: "cz.vk"; vl: "cz.vl"; vm: "cz.vm"; vn: "cz.vn"; vo: "cz.vo"; vp: "cz.vp"; vq: "cz.vq"; vr: "cz.vr"; vs: "cz.vs"; vt: "cz.vt"; vu: "cz.vu"; vv: "cz.vv"; vw: "cz.vw"; vx: "cz.vx"; vy: "cz.vy"; vz: "cz.vz"; wa: "cz.wa"; wb: "cz.wb"; wc: "cz.wc"; wd: "cz.wd"; we: "cz.we"; wf: "cz.wf"; wg: "cz.wg"; wh: "cz.wh"; wi: "cz.wi"; wj: "cz.wj"; wk: "cz.wk"; wl: "cz.wl"; wm: "cz.wm"; wn: "cz.wn"; wo: "cz.wo"; wp: "cz.wp"; wq: "cz.wq"; wr: "cz.wr"; ws: "cz.ws"; wt: "cz.wt"; wu: "cz.wu"; wv: "cz.wv"; ww: "cz.ww"; wx: "cz.wx"; wy: "cz.wy"; wz: "cz.wz"; xa: "cz.xa"; xb: "cz.xb"; xc: "cz.xc"; xd: "cz.xd"; xe: "cz.xe"; xf: "cz.xf"; xg: "cz.xg"; xh: "cz.xh"; xi: "cz.xi"; xj: "cz.xj"; xk: "cz.xk"; xl: "cz.xl"; xm: "cz.xm"; xn: "cz.xn"; xo: "cz.xo"; xp: "cz.xp"; xq: "cz.xq"; xr: "cz.xr"; xs: "cz.xs"; xt: "cz.xt"; xu: "cz.xu"; xv: "cz.xv"; xw: "cz.xw"; xx: "cz.xx"; xy: "cz.xy"; xz: "cz.xz"; ya: "cz.ya"; yb: "cz.yb"; yc: "cz.yc"; yd: "cz.yd"; ye: "cz.ye"; yf: "cz.yf"; yg: "cz.yg"; yh: "cz.yh"; yi: "cz.yi"; yj: "cz.yj"; yk: "cz.yk"; yl: "cz.yl"; ym: "cz.ym"; yn: "cz.yn"; yo: "cz.yo"; yp: "cz.yp"; yq: "cz.yq"; yr: "cz.yr"; ys: "cz.ys"; yt: "cz.yt"; yu: "cz.yu"; yv: "cz.yv"; yw: "cz.yw"; yx: "cz.yx"; yy: "cz.yy"; yz: "cz.yz"; za: "cz.za"; zb: "cz.zb"; zc: "cz.zc"; zd: "cz.zd"; ze: "cz.ze"; zf: "cz.zf"; zg: "cz.zg"; zh: "cz.zh"; zi: "cz.zi"; zj: "cz.zj"; zk: "cz.zk"; zl: "cz.zl"; zm: "cz.zm"; zn: "cz.zn"; zo: "cz.zo"; zp: "cz.zp"; zq: "cz.zq"; zr: "cz.zr"; zs: "cz.zs"; zt: "cz.zt"; zu: "cz.zu"; zv: "cz.zv"; zw: "cz.zw"; zx: "cz.zx"; zy: "cz.zy"; zz: "cz.zz"; }; da: { aa: "da.aa"; ab: "da.ab"; ac: "da.ac"; ad: "da.ad"; ae: "da.ae"; af: "da.af"; ag: "da.ag"; ah: "da.ah"; ai: "da.ai"; aj: "da.aj"; ak: "da.ak"; al: "da.al"; am: "da.am"; an: "da.an"; ao: "da.ao"; ap: "da.ap"; aq: "da.aq"; ar: "da.ar"; as: "da.as"; at: "da.at"; au: "da.au"; av: "da.av"; aw: "da.aw"; ax: "da.ax"; ay: "da.ay"; az: "da.az"; ba: "da.ba"; bb: "da.bb"; bc: "da.bc"; bd: "da.bd"; be: "da.be"; bf: "da.bf"; bg: "da.bg"; bh: "da.bh"; bi: "da.bi"; bj: "da.bj"; bk: "da.bk"; bl: "da.bl"; bm: "da.bm"; bn: "da.bn"; bo: "da.bo"; bp: "da.bp"; bq: "da.bq"; br: "da.br"; bs: "da.bs"; bt: "da.bt"; bu: "da.bu"; bv: "da.bv"; bw: "da.bw"; bx: "da.bx"; by: "da.by"; bz: "da.bz"; ca: "da.ca"; cb: "da.cb"; cc: "da.cc"; cd: "da.cd"; ce: "da.ce"; cf: "da.cf"; cg: "da.cg"; ch: "da.ch"; ci: "da.ci"; cj: "da.cj"; ck: "da.ck"; cl: "da.cl"; cm: "da.cm"; cn: "da.cn"; co: "da.co"; cp: "da.cp"; cq: "da.cq"; cr: "da.cr"; cs: "da.cs"; ct: "da.ct"; cu: "da.cu"; cv: "da.cv"; cw: "da.cw"; cx: "da.cx"; cy: "da.cy"; cz: "da.cz"; da: "da.da"; db: "da.db"; dc: "da.dc"; dd: "da.dd"; de: "da.de"; df: "da.df"; dg: "da.dg"; dh: "da.dh"; di: "da.di"; dj: "da.dj"; dk: "da.dk"; dl: "da.dl"; dm: "da.dm"; dn: "da.dn"; do: "da.do"; dp: "da.dp"; dq: "da.dq"; dr: "da.dr"; ds: "da.ds"; dt: "da.dt"; du: "da.du"; dv: "da.dv"; dw: "da.dw"; dx: "da.dx"; dy: "da.dy"; dz: "da.dz"; ea: "da.ea"; eb: "da.eb"; ec: "da.ec"; ed: "da.ed"; ee: "da.ee"; ef: "da.ef"; eg: "da.eg"; eh: "da.eh"; ei: "da.ei"; ej: "da.ej"; ek: "da.ek"; el: "da.el"; em: "da.em"; en: "da.en"; eo: "da.eo"; ep: "da.ep"; eq: "da.eq"; er: "da.er"; es: "da.es"; et: "da.et"; eu: "da.eu"; ev: "da.ev"; ew: "da.ew"; ex: "da.ex"; ey: "da.ey"; ez: "da.ez"; fa: "da.fa"; fb: "da.fb"; fc: "da.fc"; fd: "da.fd"; fe: "da.fe"; ff: "da.ff"; fg: "da.fg"; fh: "da.fh"; fi: "da.fi"; fj: "da.fj"; fk: "da.fk"; fl: "da.fl"; fm: "da.fm"; fn: "da.fn"; fo: "da.fo"; fp: "da.fp"; fq: "da.fq"; fr: "da.fr"; fs: "da.fs"; ft: "da.ft"; fu: "da.fu"; fv: "da.fv"; fw: "da.fw"; fx: "da.fx"; fy: "da.fy"; fz: "da.fz"; ga: "da.ga"; gb: "da.gb"; gc: "da.gc"; gd: "da.gd"; ge: "da.ge"; gf: "da.gf"; gg: "da.gg"; gh: "da.gh"; gi: "da.gi"; gj: "da.gj"; gk: "da.gk"; gl: "da.gl"; gm: "da.gm"; gn: "da.gn"; go: "da.go"; gp: "da.gp"; gq: "da.gq"; gr: "da.gr"; gs: "da.gs"; gt: "da.gt"; gu: "da.gu"; gv: "da.gv"; gw: "da.gw"; gx: "da.gx"; gy: "da.gy"; gz: "da.gz"; ha: "da.ha"; hb: "da.hb"; hc: "da.hc"; hd: "da.hd"; he: "da.he"; hf: "da.hf"; hg: "da.hg"; hh: "da.hh"; hi: "da.hi"; hj: "da.hj"; hk: "da.hk"; hl: "da.hl"; hm: "da.hm"; hn: "da.hn"; ho: "da.ho"; hp: "da.hp"; hq: "da.hq"; hr: "da.hr"; hs: "da.hs"; ht: "da.ht"; hu: "da.hu"; hv: "da.hv"; hw: "da.hw"; hx: "da.hx"; hy: "da.hy"; hz: "da.hz"; ia: "da.ia"; ib: "da.ib"; ic: "da.ic"; id: "da.id"; ie: "da.ie"; if: "da.if"; ig: "da.ig"; ih: "da.ih"; ii: "da.ii"; ij: "da.ij"; ik: "da.ik"; il: "da.il"; im: "da.im"; in: "da.in"; io: "da.io"; ip: "da.ip"; iq: "da.iq"; ir: "da.ir"; is: "da.is"; it: "da.it"; iu: "da.iu"; iv: "da.iv"; iw: "da.iw"; ix: "da.ix"; iy: "da.iy"; iz: "da.iz"; ja: "da.ja"; jb: "da.jb"; jc: "da.jc"; jd: "da.jd"; je: "da.je"; jf: "da.jf"; jg: "da.jg"; jh: "da.jh"; ji: "da.ji"; jj: "da.jj"; jk: "da.jk"; jl: "da.jl"; jm: "da.jm"; jn: "da.jn"; jo: "da.jo"; jp: "da.jp"; jq: "da.jq"; jr: "da.jr"; js: "da.js"; jt: "da.jt"; ju: "da.ju"; jv: "da.jv"; jw: "da.jw"; jx: "da.jx"; jy: "da.jy"; jz: "da.jz"; ka: "da.ka"; kb: "da.kb"; kc: "da.kc"; kd: "da.kd"; ke: "da.ke"; kf: "da.kf"; kg: "da.kg"; kh: "da.kh"; ki: "da.ki"; kj: "da.kj"; kk: "da.kk"; kl: "da.kl"; km: "da.km"; kn: "da.kn"; ko: "da.ko"; kp: "da.kp"; kq: "da.kq"; kr: "da.kr"; ks: "da.ks"; kt: "da.kt"; ku: "da.ku"; kv: "da.kv"; kw: "da.kw"; kx: "da.kx"; ky: "da.ky"; kz: "da.kz"; la: "da.la"; lb: "da.lb"; lc: "da.lc"; ld: "da.ld"; le: "da.le"; lf: "da.lf"; lg: "da.lg"; lh: "da.lh"; li: "da.li"; lj: "da.lj"; lk: "da.lk"; ll: "da.ll"; lm: "da.lm"; ln: "da.ln"; lo: "da.lo"; lp: "da.lp"; lq: "da.lq"; lr: "da.lr"; ls: "da.ls"; lt: "da.lt"; lu: "da.lu"; lv: "da.lv"; lw: "da.lw"; lx: "da.lx"; ly: "da.ly"; lz: "da.lz"; ma: "da.ma"; mb: "da.mb"; mc: "da.mc"; md: "da.md"; me: "da.me"; mf: "da.mf"; mg: "da.mg"; mh: "da.mh"; mi: "da.mi"; mj: "da.mj"; mk: "da.mk"; ml: "da.ml"; mm: "da.mm"; mn: "da.mn"; mo: "da.mo"; mp: "da.mp"; mq: "da.mq"; mr: "da.mr"; ms: "da.ms"; mt: "da.mt"; mu: "da.mu"; mv: "da.mv"; mw: "da.mw"; mx: "da.mx"; my: "da.my"; mz: "da.mz"; na: "da.na"; nb: "da.nb"; nc: "da.nc"; nd: "da.nd"; ne: "da.ne"; nf: "da.nf"; ng: "da.ng"; nh: "da.nh"; ni: "da.ni"; nj: "da.nj"; nk: "da.nk"; nl: "da.nl"; nm: "da.nm"; nn: "da.nn"; no: "da.no"; np: "da.np"; nq: "da.nq"; nr: "da.nr"; ns: "da.ns"; nt: "da.nt"; nu: "da.nu"; nv: "da.nv"; nw: "da.nw"; nx: "da.nx"; ny: "da.ny"; nz: "da.nz"; oa: "da.oa"; ob: "da.ob"; oc: "da.oc"; od: "da.od"; oe: "da.oe"; of: "da.of"; og: "da.og"; oh: "da.oh"; oi: "da.oi"; oj: "da.oj"; ok: "da.ok"; ol: "da.ol"; om: "da.om"; on: "da.on"; oo: "da.oo"; op: "da.op"; oq: "da.oq"; or: "da.or"; os: "da.os"; ot: "da.ot"; ou: "da.ou"; ov: "da.ov"; ow: "da.ow"; ox: "da.ox"; oy: "da.oy"; oz: "da.oz"; pa: "da.pa"; pb: "da.pb"; pc: "da.pc"; pd: "da.pd"; pe: "da.pe"; pf: "da.pf"; pg: "da.pg"; ph: "da.ph"; pi: "da.pi"; pj: "da.pj"; pk: "da.pk"; pl: "da.pl"; pm: "da.pm"; pn: "da.pn"; po: "da.po"; pp: "da.pp"; pq: "da.pq"; pr: "da.pr"; ps: "da.ps"; pt: "da.pt"; pu: "da.pu"; pv: "da.pv"; pw: "da.pw"; px: "da.px"; py: "da.py"; pz: "da.pz"; qa: "da.qa"; qb: "da.qb"; qc: "da.qc"; qd: "da.qd"; qe: "da.qe"; qf: "da.qf"; qg: "da.qg"; qh: "da.qh"; qi: "da.qi"; qj: "da.qj"; qk: "da.qk"; ql: "da.ql"; qm: "da.qm"; qn: "da.qn"; qo: "da.qo"; qp: "da.qp"; qq: "da.qq"; qr: "da.qr"; qs: "da.qs"; qt: "da.qt"; qu: "da.qu"; qv: "da.qv"; qw: "da.qw"; qx: "da.qx"; qy: "da.qy"; qz: "da.qz"; ra: "da.ra"; rb: "da.rb"; rc: "da.rc"; rd: "da.rd"; re: "da.re"; rf: "da.rf"; rg: "da.rg"; rh: "da.rh"; ri: "da.ri"; rj: "da.rj"; rk: "da.rk"; rl: "da.rl"; rm: "da.rm"; rn: "da.rn"; ro: "da.ro"; rp: "da.rp"; rq: "da.rq"; rr: "da.rr"; rs: "da.rs"; rt: "da.rt"; ru: "da.ru"; rv: "da.rv"; rw: "da.rw"; rx: "da.rx"; ry: "da.ry"; rz: "da.rz"; sa: "da.sa"; sb: "da.sb"; sc: "da.sc"; sd: "da.sd"; se: "da.se"; sf: "da.sf"; sg: "da.sg"; sh: "da.sh"; si: "da.si"; sj: "da.sj"; sk: "da.sk"; sl: "da.sl"; sm: "da.sm"; sn: "da.sn"; so: "da.so"; sp: "da.sp"; sq: "da.sq"; sr: "da.sr"; ss: "da.ss"; st: "da.st"; su: "da.su"; sv: "da.sv"; sw: "da.sw"; sx: "da.sx"; sy: "da.sy"; sz: "da.sz"; ta: "da.ta"; tb: "da.tb"; tc: "da.tc"; td: "da.td"; te: "da.te"; tf: "da.tf"; tg: "da.tg"; th: "da.th"; ti: "da.ti"; tj: "da.tj"; tk: "da.tk"; tl: "da.tl"; tm: "da.tm"; tn: "da.tn"; to: "da.to"; tp: "da.tp"; tq: "da.tq"; tr: "da.tr"; ts: "da.ts"; tt: "da.tt"; tu: "da.tu"; tv: "da.tv"; tw: "da.tw"; tx: "da.tx"; ty: "da.ty"; tz: "da.tz"; ua: "da.ua"; ub: "da.ub"; uc: "da.uc"; ud: "da.ud"; ue: "da.ue"; uf: "da.uf"; ug: "da.ug"; uh: "da.uh"; ui: "da.ui"; uj: "da.uj"; uk: "da.uk"; ul: "da.ul"; um: "da.um"; un: "da.un"; uo: "da.uo"; up: "da.up"; uq: "da.uq"; ur: "da.ur"; us: "da.us"; ut: "da.ut"; uu: "da.uu"; uv: "da.uv"; uw: "da.uw"; ux: "da.ux"; uy: "da.uy"; uz: "da.uz"; va: "da.va"; vb: "da.vb"; vc: "da.vc"; vd: "da.vd"; ve: "da.ve"; vf: "da.vf"; vg: "da.vg"; vh: "da.vh"; vi: "da.vi"; vj: "da.vj"; vk: "da.vk"; vl: "da.vl"; vm: "da.vm"; vn: "da.vn"; vo: "da.vo"; vp: "da.vp"; vq: "da.vq"; vr: "da.vr"; vs: "da.vs"; vt: "da.vt"; vu: "da.vu"; vv: "da.vv"; vw: "da.vw"; vx: "da.vx"; vy: "da.vy"; vz: "da.vz"; wa: "da.wa"; wb: "da.wb"; wc: "da.wc"; wd: "da.wd"; we: "da.we"; wf: "da.wf"; wg: "da.wg"; wh: "da.wh"; wi: "da.wi"; wj: "da.wj"; wk: "da.wk"; wl: "da.wl"; wm: "da.wm"; wn: "da.wn"; wo: "da.wo"; wp: "da.wp"; wq: "da.wq"; wr: "da.wr"; ws: "da.ws"; wt: "da.wt"; wu: "da.wu"; wv: "da.wv"; ww: "da.ww"; wx: "da.wx"; wy: "da.wy"; wz: "da.wz"; xa: "da.xa"; xb: "da.xb"; xc: "da.xc"; xd: "da.xd"; xe: "da.xe"; xf: "da.xf"; xg: "da.xg"; xh: "da.xh"; xi: "da.xi"; xj: "da.xj"; xk: "da.xk"; xl: "da.xl"; xm: "da.xm"; xn: "da.xn"; xo: "da.xo"; xp: "da.xp"; xq: "da.xq"; xr: "da.xr"; xs: "da.xs"; xt: "da.xt"; xu: "da.xu"; xv: "da.xv"; xw: "da.xw"; xx: "da.xx"; xy: "da.xy"; xz: "da.xz"; ya: "da.ya"; yb: "da.yb"; yc: "da.yc"; yd: "da.yd"; ye: "da.ye"; yf: "da.yf"; yg: "da.yg"; yh: "da.yh"; yi: "da.yi"; yj: "da.yj"; yk: "da.yk"; yl: "da.yl"; ym: "da.ym"; yn: "da.yn"; yo: "da.yo"; yp: "da.yp"; yq: "da.yq"; yr: "da.yr"; ys: "da.ys"; yt: "da.yt"; yu: "da.yu"; yv: "da.yv"; yw: "da.yw"; yx: "da.yx"; yy: "da.yy"; yz: "da.yz"; za: "da.za"; zb: "da.zb"; zc: "da.zc"; zd: "da.zd"; ze: "da.ze"; zf: "da.zf"; zg: "da.zg"; zh: "da.zh"; zi: "da.zi"; zj: "da.zj"; zk: "da.zk"; zl: "da.zl"; zm: "da.zm"; zn: "da.zn"; zo: "da.zo"; zp: "da.zp"; zq: "da.zq"; zr: "da.zr"; zs: "da.zs"; zt: "da.zt"; zu: "da.zu"; zv: "da.zv"; zw: "da.zw"; zx: "da.zx"; zy: "da.zy"; zz: "da.zz"; }; db: { aa: "db.aa"; ab: "db.ab"; ac: "db.ac"; ad: "db.ad"; ae: "db.ae"; af: "db.af"; ag: "db.ag"; ah: "db.ah"; ai: "db.ai"; aj: "db.aj"; ak: "db.ak"; al: "db.al"; am: "db.am"; an: "db.an"; ao: "db.ao"; ap: "db.ap"; aq: "db.aq"; ar: "db.ar"; as: "db.as"; at: "db.at"; au: "db.au"; av: "db.av"; aw: "db.aw"; ax: "db.ax"; ay: "db.ay"; az: "db.az"; ba: "db.ba"; bb: "db.bb"; bc: "db.bc"; bd: "db.bd"; be: "db.be"; bf: "db.bf"; bg: "db.bg"; bh: "db.bh"; bi: "db.bi"; bj: "db.bj"; bk: "db.bk"; bl: "db.bl"; bm: "db.bm"; bn: "db.bn"; bo: "db.bo"; bp: "db.bp"; bq: "db.bq"; br: "db.br"; bs: "db.bs"; bt: "db.bt"; bu: "db.bu"; bv: "db.bv"; bw: "db.bw"; bx: "db.bx"; by: "db.by"; bz: "db.bz"; ca: "db.ca"; cb: "db.cb"; cc: "db.cc"; cd: "db.cd"; ce: "db.ce"; cf: "db.cf"; cg: "db.cg"; ch: "db.ch"; ci: "db.ci"; cj: "db.cj"; ck: "db.ck"; cl: "db.cl"; cm: "db.cm"; cn: "db.cn"; co: "db.co"; cp: "db.cp"; cq: "db.cq"; cr: "db.cr"; cs: "db.cs"; ct: "db.ct"; cu: "db.cu"; cv: "db.cv"; cw: "db.cw"; cx: "db.cx"; cy: "db.cy"; cz: "db.cz"; da: "db.da"; db: "db.db"; dc: "db.dc"; dd: "db.dd"; de: "db.de"; df: "db.df"; dg: "db.dg"; dh: "db.dh"; di: "db.di"; dj: "db.dj"; dk: "db.dk"; dl: "db.dl"; dm: "db.dm"; dn: "db.dn"; do: "db.do"; dp: "db.dp"; dq: "db.dq"; dr: "db.dr"; ds: "db.ds"; dt: "db.dt"; du: "db.du"; dv: "db.dv"; dw: "db.dw"; dx: "db.dx"; dy: "db.dy"; dz: "db.dz"; ea: "db.ea"; eb: "db.eb"; ec: "db.ec"; ed: "db.ed"; ee: "db.ee"; ef: "db.ef"; eg: "db.eg"; eh: "db.eh"; ei: "db.ei"; ej: "db.ej"; ek: "db.ek"; el: "db.el"; em: "db.em"; en: "db.en"; eo: "db.eo"; ep: "db.ep"; eq: "db.eq"; er: "db.er"; es: "db.es"; et: "db.et"; eu: "db.eu"; ev: "db.ev"; ew: "db.ew"; ex: "db.ex"; ey: "db.ey"; ez: "db.ez"; fa: "db.fa"; fb: "db.fb"; fc: "db.fc"; fd: "db.fd"; fe: "db.fe"; ff: "db.ff"; fg: "db.fg"; fh: "db.fh"; fi: "db.fi"; fj: "db.fj"; fk: "db.fk"; fl: "db.fl"; fm: "db.fm"; fn: "db.fn"; fo: "db.fo"; fp: "db.fp"; fq: "db.fq"; fr: "db.fr"; fs: "db.fs"; ft: "db.ft"; fu: "db.fu"; fv: "db.fv"; fw: "db.fw"; fx: "db.fx"; fy: "db.fy"; fz: "db.fz"; ga: "db.ga"; gb: "db.gb"; gc: "db.gc"; gd: "db.gd"; ge: "db.ge"; gf: "db.gf"; gg: "db.gg"; gh: "db.gh"; gi: "db.gi"; gj: "db.gj"; gk: "db.gk"; gl: "db.gl"; gm: "db.gm"; gn: "db.gn"; go: "db.go"; gp: "db.gp"; gq: "db.gq"; gr: "db.gr"; gs: "db.gs"; gt: "db.gt"; gu: "db.gu"; gv: "db.gv"; gw: "db.gw"; gx: "db.gx"; gy: "db.gy"; gz: "db.gz"; ha: "db.ha"; hb: "db.hb"; hc: "db.hc"; hd: "db.hd"; he: "db.he"; hf: "db.hf"; hg: "db.hg"; hh: "db.hh"; hi: "db.hi"; hj: "db.hj"; hk: "db.hk"; hl: "db.hl"; hm: "db.hm"; hn: "db.hn"; ho: "db.ho"; hp: "db.hp"; hq: "db.hq"; hr: "db.hr"; hs: "db.hs"; ht: "db.ht"; hu: "db.hu"; hv: "db.hv"; hw: "db.hw"; hx: "db.hx"; hy: "db.hy"; hz: "db.hz"; ia: "db.ia"; ib: "db.ib"; ic: "db.ic"; id: "db.id"; ie: "db.ie"; if: "db.if"; ig: "db.ig"; ih: "db.ih"; ii: "db.ii"; ij: "db.ij"; ik: "db.ik"; il: "db.il"; im: "db.im"; in: "db.in"; io: "db.io"; ip: "db.ip"; iq: "db.iq"; ir: "db.ir"; is: "db.is"; it: "db.it"; iu: "db.iu"; iv: "db.iv"; iw: "db.iw"; ix: "db.ix"; iy: "db.iy"; iz: "db.iz"; ja: "db.ja"; jb: "db.jb"; jc: "db.jc"; jd: "db.jd"; je: "db.je"; jf: "db.jf"; jg: "db.jg"; jh: "db.jh"; ji: "db.ji"; jj: "db.jj"; jk: "db.jk"; jl: "db.jl"; jm: "db.jm"; jn: "db.jn"; jo: "db.jo"; jp: "db.jp"; jq: "db.jq"; jr: "db.jr"; js: "db.js"; jt: "db.jt"; ju: "db.ju"; jv: "db.jv"; jw: "db.jw"; jx: "db.jx"; jy: "db.jy"; jz: "db.jz"; ka: "db.ka"; kb: "db.kb"; kc: "db.kc"; kd: "db.kd"; ke: "db.ke"; kf: "db.kf"; kg: "db.kg"; kh: "db.kh"; ki: "db.ki"; kj: "db.kj"; kk: "db.kk"; kl: "db.kl"; km: "db.km"; kn: "db.kn"; ko: "db.ko"; kp: "db.kp"; kq: "db.kq"; kr: "db.kr"; ks: "db.ks"; kt: "db.kt"; ku: "db.ku"; kv: "db.kv"; kw: "db.kw"; kx: "db.kx"; ky: "db.ky"; kz: "db.kz"; la: "db.la"; lb: "db.lb"; lc: "db.lc"; ld: "db.ld"; le: "db.le"; lf: "db.lf"; lg: "db.lg"; lh: "db.lh"; li: "db.li"; lj: "db.lj"; lk: "db.lk"; ll: "db.ll"; lm: "db.lm"; ln: "db.ln"; lo: "db.lo"; lp: "db.lp"; lq: "db.lq"; lr: "db.lr"; ls: "db.ls"; lt: "db.lt"; lu: "db.lu"; lv: "db.lv"; lw: "db.lw"; lx: "db.lx"; ly: "db.ly"; lz: "db.lz"; ma: "db.ma"; mb: "db.mb"; mc: "db.mc"; md: "db.md"; me: "db.me"; mf: "db.mf"; mg: "db.mg"; mh: "db.mh"; mi: "db.mi"; mj: "db.mj"; mk: "db.mk"; ml: "db.ml"; mm: "db.mm"; mn: "db.mn"; mo: "db.mo"; mp: "db.mp"; mq: "db.mq"; mr: "db.mr"; ms: "db.ms"; mt: "db.mt"; mu: "db.mu"; mv: "db.mv"; mw: "db.mw"; mx: "db.mx"; my: "db.my"; mz: "db.mz"; na: "db.na"; nb: "db.nb"; nc: "db.nc"; nd: "db.nd"; ne: "db.ne"; nf: "db.nf"; ng: "db.ng"; nh: "db.nh"; ni: "db.ni"; nj: "db.nj"; nk: "db.nk"; nl: "db.nl"; nm: "db.nm"; nn: "db.nn"; no: "db.no"; np: "db.np"; nq: "db.nq"; nr: "db.nr"; ns: "db.ns"; nt: "db.nt"; nu: "db.nu"; nv: "db.nv"; nw: "db.nw"; nx: "db.nx"; ny: "db.ny"; nz: "db.nz"; oa: "db.oa"; ob: "db.ob"; oc: "db.oc"; od: "db.od"; oe: "db.oe"; of: "db.of"; og: "db.og"; oh: "db.oh"; oi: "db.oi"; oj: "db.oj"; ok: "db.ok"; ol: "db.ol"; om: "db.om"; on: "db.on"; oo: "db.oo"; op: "db.op"; oq: "db.oq"; or: "db.or"; os: "db.os"; ot: "db.ot"; ou: "db.ou"; ov: "db.ov"; ow: "db.ow"; ox: "db.ox"; oy: "db.oy"; oz: "db.oz"; pa: "db.pa"; pb: "db.pb"; pc: "db.pc"; pd: "db.pd"; pe: "db.pe"; pf: "db.pf"; pg: "db.pg"; ph: "db.ph"; pi: "db.pi"; pj: "db.pj"; pk: "db.pk"; pl: "db.pl"; pm: "db.pm"; pn: "db.pn"; po: "db.po"; pp: "db.pp"; pq: "db.pq"; pr: "db.pr"; ps: "db.ps"; pt: "db.pt"; pu: "db.pu"; pv: "db.pv"; pw: "db.pw"; px: "db.px"; py: "db.py"; pz: "db.pz"; qa: "db.qa"; qb: "db.qb"; qc: "db.qc"; qd: "db.qd"; qe: "db.qe"; qf: "db.qf"; qg: "db.qg"; qh: "db.qh"; qi: "db.qi"; qj: "db.qj"; qk: "db.qk"; ql: "db.ql"; qm: "db.qm"; qn: "db.qn"; qo: "db.qo"; qp: "db.qp"; qq: "db.qq"; qr: "db.qr"; qs: "db.qs"; qt: "db.qt"; qu: "db.qu"; qv: "db.qv"; qw: "db.qw"; qx: "db.qx"; qy: "db.qy"; qz: "db.qz"; ra: "db.ra"; rb: "db.rb"; rc: "db.rc"; rd: "db.rd"; re: "db.re"; rf: "db.rf"; rg: "db.rg"; rh: "db.rh"; ri: "db.ri"; rj: "db.rj"; rk: "db.rk"; rl: "db.rl"; rm: "db.rm"; rn: "db.rn"; ro: "db.ro"; rp: "db.rp"; rq: "db.rq"; rr: "db.rr"; rs: "db.rs"; rt: "db.rt"; ru: "db.ru"; rv: "db.rv"; rw: "db.rw"; rx: "db.rx"; ry: "db.ry"; rz: "db.rz"; sa: "db.sa"; sb: "db.sb"; sc: "db.sc"; sd: "db.sd"; se: "db.se"; sf: "db.sf"; sg: "db.sg"; sh: "db.sh"; si: "db.si"; sj: "db.sj"; sk: "db.sk"; sl: "db.sl"; sm: "db.sm"; sn: "db.sn"; so: "db.so"; sp: "db.sp"; sq: "db.sq"; sr: "db.sr"; ss: "db.ss"; st: "db.st"; su: "db.su"; sv: "db.sv"; sw: "db.sw"; sx: "db.sx"; sy: "db.sy"; sz: "db.sz"; ta: "db.ta"; tb: "db.tb"; tc: "db.tc"; td: "db.td"; te: "db.te"; tf: "db.tf"; tg: "db.tg"; th: "db.th"; ti: "db.ti"; tj: "db.tj"; tk: "db.tk"; tl: "db.tl"; tm: "db.tm"; tn: "db.tn"; to: "db.to"; tp: "db.tp"; tq: "db.tq"; tr: "db.tr"; ts: "db.ts"; tt: "db.tt"; tu: "db.tu"; tv: "db.tv"; tw: "db.tw"; tx: "db.tx"; ty: "db.ty"; tz: "db.tz"; ua: "db.ua"; ub: "db.ub"; uc: "db.uc"; ud: "db.ud"; ue: "db.ue"; uf: "db.uf"; ug: "db.ug"; uh: "db.uh"; ui: "db.ui"; uj: "db.uj"; uk: "db.uk"; ul: "db.ul"; um: "db.um"; un: "db.un"; uo: "db.uo"; up: "db.up"; uq: "db.uq"; ur: "db.ur"; us: "db.us"; ut: "db.ut"; uu: "db.uu"; uv: "db.uv"; uw: "db.uw"; ux: "db.ux"; uy: "db.uy"; uz: "db.uz"; va: "db.va"; vb: "db.vb"; vc: "db.vc"; vd: "db.vd"; ve: "db.ve"; vf: "db.vf"; vg: "db.vg"; vh: "db.vh"; vi: "db.vi"; vj: "db.vj"; vk: "db.vk"; vl: "db.vl"; vm: "db.vm"; vn: "db.vn"; vo: "db.vo"; vp: "db.vp"; vq: "db.vq"; vr: "db.vr"; vs: "db.vs"; vt: "db.vt"; vu: "db.vu"; vv: "db.vv"; vw: "db.vw"; vx: "db.vx"; vy: "db.vy"; vz: "db.vz"; wa: "db.wa"; wb: "db.wb"; wc: "db.wc"; wd: "db.wd"; we: "db.we"; wf: "db.wf"; wg: "db.wg"; wh: "db.wh"; wi: "db.wi"; wj: "db.wj"; wk: "db.wk"; wl: "db.wl"; wm: "db.wm"; wn: "db.wn"; wo: "db.wo"; wp: "db.wp"; wq: "db.wq"; wr: "db.wr"; ws: "db.ws"; wt: "db.wt"; wu: "db.wu"; wv: "db.wv"; ww: "db.ww"; wx: "db.wx"; wy: "db.wy"; wz: "db.wz"; xa: "db.xa"; xb: "db.xb"; xc: "db.xc"; xd: "db.xd"; xe: "db.xe"; xf: "db.xf"; xg: "db.xg"; xh: "db.xh"; xi: "db.xi"; xj: "db.xj"; xk: "db.xk"; xl: "db.xl"; xm: "db.xm"; xn: "db.xn"; xo: "db.xo"; xp: "db.xp"; xq: "db.xq"; xr: "db.xr"; xs: "db.xs"; xt: "db.xt"; xu: "db.xu"; xv: "db.xv"; xw: "db.xw"; xx: "db.xx"; xy: "db.xy"; xz: "db.xz"; ya: "db.ya"; yb: "db.yb"; yc: "db.yc"; yd: "db.yd"; ye: "db.ye"; yf: "db.yf"; yg: "db.yg"; yh: "db.yh"; yi: "db.yi"; yj: "db.yj"; yk: "db.yk"; yl: "db.yl"; ym: "db.ym"; yn: "db.yn"; yo: "db.yo"; yp: "db.yp"; yq: "db.yq"; yr: "db.yr"; ys: "db.ys"; yt: "db.yt"; yu: "db.yu"; yv: "db.yv"; yw: "db.yw"; yx: "db.yx"; yy: "db.yy"; yz: "db.yz"; za: "db.za"; zb: "db.zb"; zc: "db.zc"; zd: "db.zd"; ze: "db.ze"; zf: "db.zf"; zg: "db.zg"; zh: "db.zh"; zi: "db.zi"; zj: "db.zj"; zk: "db.zk"; zl: "db.zl"; zm: "db.zm"; zn: "db.zn"; zo: "db.zo"; zp: "db.zp"; zq: "db.zq"; zr: "db.zr"; zs: "db.zs"; zt: "db.zt"; zu: "db.zu"; zv: "db.zv"; zw: "db.zw"; zx: "db.zx"; zy: "db.zy"; zz: "db.zz"; }; dc: { aa: "dc.aa"; ab: "dc.ab"; ac: "dc.ac"; ad: "dc.ad"; ae: "dc.ae"; af: "dc.af"; ag: "dc.ag"; ah: "dc.ah"; ai: "dc.ai"; aj: "dc.aj"; ak: "dc.ak"; al: "dc.al"; am: "dc.am"; an: "dc.an"; ao: "dc.ao"; ap: "dc.ap"; aq: "dc.aq"; ar: "dc.ar"; as: "dc.as"; at: "dc.at"; au: "dc.au"; av: "dc.av"; aw: "dc.aw"; ax: "dc.ax"; ay: "dc.ay"; az: "dc.az"; ba: "dc.ba"; bb: "dc.bb"; bc: "dc.bc"; bd: "dc.bd"; be: "dc.be"; bf: "dc.bf"; bg: "dc.bg"; bh: "dc.bh"; bi: "dc.bi"; bj: "dc.bj"; bk: "dc.bk"; bl: "dc.bl"; bm: "dc.bm"; bn: "dc.bn"; bo: "dc.bo"; bp: "dc.bp"; bq: "dc.bq"; br: "dc.br"; bs: "dc.bs"; bt: "dc.bt"; bu: "dc.bu"; bv: "dc.bv"; bw: "dc.bw"; bx: "dc.bx"; by: "dc.by"; bz: "dc.bz"; ca: "dc.ca"; cb: "dc.cb"; cc: "dc.cc"; cd: "dc.cd"; ce: "dc.ce"; cf: "dc.cf"; cg: "dc.cg"; ch: "dc.ch"; ci: "dc.ci"; cj: "dc.cj"; ck: "dc.ck"; cl: "dc.cl"; cm: "dc.cm"; cn: "dc.cn"; co: "dc.co"; cp: "dc.cp"; cq: "dc.cq"; cr: "dc.cr"; cs: "dc.cs"; ct: "dc.ct"; cu: "dc.cu"; cv: "dc.cv"; cw: "dc.cw"; cx: "dc.cx"; cy: "dc.cy"; cz: "dc.cz"; da: "dc.da"; db: "dc.db"; dc: "dc.dc"; dd: "dc.dd"; de: "dc.de"; df: "dc.df"; dg: "dc.dg"; dh: "dc.dh"; di: "dc.di"; dj: "dc.dj"; dk: "dc.dk"; dl: "dc.dl"; dm: "dc.dm"; dn: "dc.dn"; do: "dc.do"; dp: "dc.dp"; dq: "dc.dq"; dr: "dc.dr"; ds: "dc.ds"; dt: "dc.dt"; du: "dc.du"; dv: "dc.dv"; dw: "dc.dw"; dx: "dc.dx"; dy: "dc.dy"; dz: "dc.dz"; ea: "dc.ea"; eb: "dc.eb"; ec: "dc.ec"; ed: "dc.ed"; ee: "dc.ee"; ef: "dc.ef"; eg: "dc.eg"; eh: "dc.eh"; ei: "dc.ei"; ej: "dc.ej"; ek: "dc.ek"; el: "dc.el"; em: "dc.em"; en: "dc.en"; eo: "dc.eo"; ep: "dc.ep"; eq: "dc.eq"; er: "dc.er"; es: "dc.es"; et: "dc.et"; eu: "dc.eu"; ev: "dc.ev"; ew: "dc.ew"; ex: "dc.ex"; ey: "dc.ey"; ez: "dc.ez"; fa: "dc.fa"; fb: "dc.fb"; fc: "dc.fc"; fd: "dc.fd"; fe: "dc.fe"; ff: "dc.ff"; fg: "dc.fg"; fh: "dc.fh"; fi: "dc.fi"; fj: "dc.fj"; fk: "dc.fk"; fl: "dc.fl"; fm: "dc.fm"; fn: "dc.fn"; fo: "dc.fo"; fp: "dc.fp"; fq: "dc.fq"; fr: "dc.fr"; fs: "dc.fs"; ft: "dc.ft"; fu: "dc.fu"; fv: "dc.fv"; fw: "dc.fw"; fx: "dc.fx"; fy: "dc.fy"; fz: "dc.fz"; ga: "dc.ga"; gb: "dc.gb"; gc: "dc.gc"; gd: "dc.gd"; ge: "dc.ge"; gf: "dc.gf"; gg: "dc.gg"; gh: "dc.gh"; gi: "dc.gi"; gj: "dc.gj"; gk: "dc.gk"; gl: "dc.gl"; gm: "dc.gm"; gn: "dc.gn"; go: "dc.go"; gp: "dc.gp"; gq: "dc.gq"; gr: "dc.gr"; gs: "dc.gs"; gt: "dc.gt"; gu: "dc.gu"; gv: "dc.gv"; gw: "dc.gw"; gx: "dc.gx"; gy: "dc.gy"; gz: "dc.gz"; ha: "dc.ha"; hb: "dc.hb"; hc: "dc.hc"; hd: "dc.hd"; he: "dc.he"; hf: "dc.hf"; hg: "dc.hg"; hh: "dc.hh"; hi: "dc.hi"; hj: "dc.hj"; hk: "dc.hk"; hl: "dc.hl"; hm: "dc.hm"; hn: "dc.hn"; ho: "dc.ho"; hp: "dc.hp"; hq: "dc.hq"; hr: "dc.hr"; hs: "dc.hs"; ht: "dc.ht"; hu: "dc.hu"; hv: "dc.hv"; hw: "dc.hw"; hx: "dc.hx"; hy: "dc.hy"; hz: "dc.hz"; ia: "dc.ia"; ib: "dc.ib"; ic: "dc.ic"; id: "dc.id"; ie: "dc.ie"; if: "dc.if"; ig: "dc.ig"; ih: "dc.ih"; ii: "dc.ii"; ij: "dc.ij"; ik: "dc.ik"; il: "dc.il"; im: "dc.im"; in: "dc.in"; io: "dc.io"; ip: "dc.ip"; iq: "dc.iq"; ir: "dc.ir"; is: "dc.is"; it: "dc.it"; iu: "dc.iu"; iv: "dc.iv"; iw: "dc.iw"; ix: "dc.ix"; iy: "dc.iy"; iz: "dc.iz"; ja: "dc.ja"; jb: "dc.jb"; jc: "dc.jc"; jd: "dc.jd"; je: "dc.je"; jf: "dc.jf"; jg: "dc.jg"; jh: "dc.jh"; ji: "dc.ji"; jj: "dc.jj"; jk: "dc.jk"; jl: "dc.jl"; jm: "dc.jm"; jn: "dc.jn"; jo: "dc.jo"; jp: "dc.jp"; jq: "dc.jq"; jr: "dc.jr"; js: "dc.js"; jt: "dc.jt"; ju: "dc.ju"; jv: "dc.jv"; jw: "dc.jw"; jx: "dc.jx"; jy: "dc.jy"; jz: "dc.jz"; ka: "dc.ka"; kb: "dc.kb"; kc: "dc.kc"; kd: "dc.kd"; ke: "dc.ke"; kf: "dc.kf"; kg: "dc.kg"; kh: "dc.kh"; ki: "dc.ki"; kj: "dc.kj"; kk: "dc.kk"; kl: "dc.kl"; km: "dc.km"; kn: "dc.kn"; ko: "dc.ko"; kp: "dc.kp"; kq: "dc.kq"; kr: "dc.kr"; ks: "dc.ks"; kt: "dc.kt"; ku: "dc.ku"; kv: "dc.kv"; kw: "dc.kw"; kx: "dc.kx"; ky: "dc.ky"; kz: "dc.kz"; la: "dc.la"; lb: "dc.lb"; lc: "dc.lc"; ld: "dc.ld"; le: "dc.le"; lf: "dc.lf"; lg: "dc.lg"; lh: "dc.lh"; li: "dc.li"; lj: "dc.lj"; lk: "dc.lk"; ll: "dc.ll"; lm: "dc.lm"; ln: "dc.ln"; lo: "dc.lo"; lp: "dc.lp"; lq: "dc.lq"; lr: "dc.lr"; ls: "dc.ls"; lt: "dc.lt"; lu: "dc.lu"; lv: "dc.lv"; lw: "dc.lw"; lx: "dc.lx"; ly: "dc.ly"; lz: "dc.lz"; ma: "dc.ma"; mb: "dc.mb"; mc: "dc.mc"; md: "dc.md"; me: "dc.me"; mf: "dc.mf"; mg: "dc.mg"; mh: "dc.mh"; mi: "dc.mi"; mj: "dc.mj"; mk: "dc.mk"; ml: "dc.ml"; mm: "dc.mm"; mn: "dc.mn"; mo: "dc.mo"; mp: "dc.mp"; mq: "dc.mq"; mr: "dc.mr"; ms: "dc.ms"; mt: "dc.mt"; mu: "dc.mu"; mv: "dc.mv"; mw: "dc.mw"; mx: "dc.mx"; my: "dc.my"; mz: "dc.mz"; na: "dc.na"; nb: "dc.nb"; nc: "dc.nc"; nd: "dc.nd"; ne: "dc.ne"; nf: "dc.nf"; ng: "dc.ng"; nh: "dc.nh"; ni: "dc.ni"; nj: "dc.nj"; nk: "dc.nk"; nl: "dc.nl"; nm: "dc.nm"; nn: "dc.nn"; no: "dc.no"; np: "dc.np"; nq: "dc.nq"; nr: "dc.nr"; ns: "dc.ns"; nt: "dc.nt"; nu: "dc.nu"; nv: "dc.nv"; nw: "dc.nw"; nx: "dc.nx"; ny: "dc.ny"; nz: "dc.nz"; oa: "dc.oa"; ob: "dc.ob"; oc: "dc.oc"; od: "dc.od"; oe: "dc.oe"; of: "dc.of"; og: "dc.og"; oh: "dc.oh"; oi: "dc.oi"; oj: "dc.oj"; ok: "dc.ok"; ol: "dc.ol"; om: "dc.om"; on: "dc.on"; oo: "dc.oo"; op: "dc.op"; oq: "dc.oq"; or: "dc.or"; os: "dc.os"; ot: "dc.ot"; ou: "dc.ou"; ov: "dc.ov"; ow: "dc.ow"; ox: "dc.ox"; oy: "dc.oy"; oz: "dc.oz"; pa: "dc.pa"; pb: "dc.pb"; pc: "dc.pc"; pd: "dc.pd"; pe: "dc.pe"; pf: "dc.pf"; pg: "dc.pg"; ph: "dc.ph"; pi: "dc.pi"; pj: "dc.pj"; pk: "dc.pk"; pl: "dc.pl"; pm: "dc.pm"; pn: "dc.pn"; po: "dc.po"; pp: "dc.pp"; pq: "dc.pq"; pr: "dc.pr"; ps: "dc.ps"; pt: "dc.pt"; pu: "dc.pu"; pv: "dc.pv"; pw: "dc.pw"; px: "dc.px"; py: "dc.py"; pz: "dc.pz"; qa: "dc.qa"; qb: "dc.qb"; qc: "dc.qc"; qd: "dc.qd"; qe: "dc.qe"; qf: "dc.qf"; qg: "dc.qg"; qh: "dc.qh"; qi: "dc.qi"; qj: "dc.qj"; qk: "dc.qk"; ql: "dc.ql"; qm: "dc.qm"; qn: "dc.qn"; qo: "dc.qo"; qp: "dc.qp"; qq: "dc.qq"; qr: "dc.qr"; qs: "dc.qs"; qt: "dc.qt"; qu: "dc.qu"; qv: "dc.qv"; qw: "dc.qw"; qx: "dc.qx"; qy: "dc.qy"; qz: "dc.qz"; ra: "dc.ra"; rb: "dc.rb"; rc: "dc.rc"; rd: "dc.rd"; re: "dc.re"; rf: "dc.rf"; rg: "dc.rg"; rh: "dc.rh"; ri: "dc.ri"; rj: "dc.rj"; rk: "dc.rk"; rl: "dc.rl"; rm: "dc.rm"; rn: "dc.rn"; ro: "dc.ro"; rp: "dc.rp"; rq: "dc.rq"; rr: "dc.rr"; rs: "dc.rs"; rt: "dc.rt"; ru: "dc.ru"; rv: "dc.rv"; rw: "dc.rw"; rx: "dc.rx"; ry: "dc.ry"; rz: "dc.rz"; sa: "dc.sa"; sb: "dc.sb"; sc: "dc.sc"; sd: "dc.sd"; se: "dc.se"; sf: "dc.sf"; sg: "dc.sg"; sh: "dc.sh"; si: "dc.si"; sj: "dc.sj"; sk: "dc.sk"; sl: "dc.sl"; sm: "dc.sm"; sn: "dc.sn"; so: "dc.so"; sp: "dc.sp"; sq: "dc.sq"; sr: "dc.sr"; ss: "dc.ss"; st: "dc.st"; su: "dc.su"; sv: "dc.sv"; sw: "dc.sw"; sx: "dc.sx"; sy: "dc.sy"; sz: "dc.sz"; ta: "dc.ta"; tb: "dc.tb"; tc: "dc.tc"; td: "dc.td"; te: "dc.te"; tf: "dc.tf"; tg: "dc.tg"; th: "dc.th"; ti: "dc.ti"; tj: "dc.tj"; tk: "dc.tk"; tl: "dc.tl"; tm: "dc.tm"; tn: "dc.tn"; to: "dc.to"; tp: "dc.tp"; tq: "dc.tq"; tr: "dc.tr"; ts: "dc.ts"; tt: "dc.tt"; tu: "dc.tu"; tv: "dc.tv"; tw: "dc.tw"; tx: "dc.tx"; ty: "dc.ty"; tz: "dc.tz"; ua: "dc.ua"; ub: "dc.ub"; uc: "dc.uc"; ud: "dc.ud"; ue: "dc.ue"; uf: "dc.uf"; ug: "dc.ug"; uh: "dc.uh"; ui: "dc.ui"; uj: "dc.uj"; uk: "dc.uk"; ul: "dc.ul"; um: "dc.um"; un: "dc.un"; uo: "dc.uo"; up: "dc.up"; uq: "dc.uq"; ur: "dc.ur"; us: "dc.us"; ut: "dc.ut"; uu: "dc.uu"; uv: "dc.uv"; uw: "dc.uw"; ux: "dc.ux"; uy: "dc.uy"; uz: "dc.uz"; va: "dc.va"; vb: "dc.vb"; vc: "dc.vc"; vd: "dc.vd"; ve: "dc.ve"; vf: "dc.vf"; vg: "dc.vg"; vh: "dc.vh"; vi: "dc.vi"; vj: "dc.vj"; vk: "dc.vk"; vl: "dc.vl"; vm: "dc.vm"; vn: "dc.vn"; vo: "dc.vo"; vp: "dc.vp"; vq: "dc.vq"; vr: "dc.vr"; vs: "dc.vs"; vt: "dc.vt"; vu: "dc.vu"; vv: "dc.vv"; vw: "dc.vw"; vx: "dc.vx"; vy: "dc.vy"; vz: "dc.vz"; wa: "dc.wa"; wb: "dc.wb"; wc: "dc.wc"; wd: "dc.wd"; we: "dc.we"; wf: "dc.wf"; wg: "dc.wg"; wh: "dc.wh"; wi: "dc.wi"; wj: "dc.wj"; wk: "dc.wk"; wl: "dc.wl"; wm: "dc.wm"; wn: "dc.wn"; wo: "dc.wo"; wp: "dc.wp"; wq: "dc.wq"; wr: "dc.wr"; ws: "dc.ws"; wt: "dc.wt"; wu: "dc.wu"; wv: "dc.wv"; ww: "dc.ww"; wx: "dc.wx"; wy: "dc.wy"; wz: "dc.wz"; xa: "dc.xa"; xb: "dc.xb"; xc: "dc.xc"; xd: "dc.xd"; xe: "dc.xe"; xf: "dc.xf"; xg: "dc.xg"; xh: "dc.xh"; xi: "dc.xi"; xj: "dc.xj"; xk: "dc.xk"; xl: "dc.xl"; xm: "dc.xm"; xn: "dc.xn"; xo: "dc.xo"; xp: "dc.xp"; xq: "dc.xq"; xr: "dc.xr"; xs: "dc.xs"; xt: "dc.xt"; xu: "dc.xu"; xv: "dc.xv"; xw: "dc.xw"; xx: "dc.xx"; xy: "dc.xy"; xz: "dc.xz"; ya: "dc.ya"; yb: "dc.yb"; yc: "dc.yc"; yd: "dc.yd"; ye: "dc.ye"; yf: "dc.yf"; yg: "dc.yg"; yh: "dc.yh"; yi: "dc.yi"; yj: "dc.yj"; yk: "dc.yk"; yl: "dc.yl"; ym: "dc.ym"; yn: "dc.yn"; yo: "dc.yo"; yp: "dc.yp"; yq: "dc.yq"; yr: "dc.yr"; ys: "dc.ys"; yt: "dc.yt"; yu: "dc.yu"; yv: "dc.yv"; yw: "dc.yw"; yx: "dc.yx"; yy: "dc.yy"; yz: "dc.yz"; za: "dc.za"; zb: "dc.zb"; zc: "dc.zc"; zd: "dc.zd"; ze: "dc.ze"; zf: "dc.zf"; zg: "dc.zg"; zh: "dc.zh"; zi: "dc.zi"; zj: "dc.zj"; zk: "dc.zk"; zl: "dc.zl"; zm: "dc.zm"; zn: "dc.zn"; zo: "dc.zo"; zp: "dc.zp"; zq: "dc.zq"; zr: "dc.zr"; zs: "dc.zs"; zt: "dc.zt"; zu: "dc.zu"; zv: "dc.zv"; zw: "dc.zw"; zx: "dc.zx"; zy: "dc.zy"; zz: "dc.zz"; }; dd: { aa: "dd.aa"; ab: "dd.ab"; ac: "dd.ac"; ad: "dd.ad"; ae: "dd.ae"; af: "dd.af"; ag: "dd.ag"; ah: "dd.ah"; ai: "dd.ai"; aj: "dd.aj"; ak: "dd.ak"; al: "dd.al"; am: "dd.am"; an: "dd.an"; ao: "dd.ao"; ap: "dd.ap"; aq: "dd.aq"; ar: "dd.ar"; as: "dd.as"; at: "dd.at"; au: "dd.au"; av: "dd.av"; aw: "dd.aw"; ax: "dd.ax"; ay: "dd.ay"; az: "dd.az"; ba: "dd.ba"; bb: "dd.bb"; bc: "dd.bc"; bd: "dd.bd"; be: "dd.be"; bf: "dd.bf"; bg: "dd.bg"; bh: "dd.bh"; bi: "dd.bi"; bj: "dd.bj"; bk: "dd.bk"; bl: "dd.bl"; bm: "dd.bm"; bn: "dd.bn"; bo: "dd.bo"; bp: "dd.bp"; bq: "dd.bq"; br: "dd.br"; bs: "dd.bs"; bt: "dd.bt"; bu: "dd.bu"; bv: "dd.bv"; bw: "dd.bw"; bx: "dd.bx"; by: "dd.by"; bz: "dd.bz"; ca: "dd.ca"; cb: "dd.cb"; cc: "dd.cc"; cd: "dd.cd"; ce: "dd.ce"; cf: "dd.cf"; cg: "dd.cg"; ch: "dd.ch"; ci: "dd.ci"; cj: "dd.cj"; ck: "dd.ck"; cl: "dd.cl"; cm: "dd.cm"; cn: "dd.cn"; co: "dd.co"; cp: "dd.cp"; cq: "dd.cq"; cr: "dd.cr"; cs: "dd.cs"; ct: "dd.ct"; cu: "dd.cu"; cv: "dd.cv"; cw: "dd.cw"; cx: "dd.cx"; cy: "dd.cy"; cz: "dd.cz"; da: "dd.da"; db: "dd.db"; dc: "dd.dc"; dd: "dd.dd"; de: "dd.de"; df: "dd.df"; dg: "dd.dg"; dh: "dd.dh"; di: "dd.di"; dj: "dd.dj"; dk: "dd.dk"; dl: "dd.dl"; dm: "dd.dm"; dn: "dd.dn"; do: "dd.do"; dp: "dd.dp"; dq: "dd.dq"; dr: "dd.dr"; ds: "dd.ds"; dt: "dd.dt"; du: "dd.du"; dv: "dd.dv"; dw: "dd.dw"; dx: "dd.dx"; dy: "dd.dy"; dz: "dd.dz"; ea: "dd.ea"; eb: "dd.eb"; ec: "dd.ec"; ed: "dd.ed"; ee: "dd.ee"; ef: "dd.ef"; eg: "dd.eg"; eh: "dd.eh"; ei: "dd.ei"; ej: "dd.ej"; ek: "dd.ek"; el: "dd.el"; em: "dd.em"; en: "dd.en"; eo: "dd.eo"; ep: "dd.ep"; eq: "dd.eq"; er: "dd.er"; es: "dd.es"; et: "dd.et"; eu: "dd.eu"; ev: "dd.ev"; ew: "dd.ew"; ex: "dd.ex"; ey: "dd.ey"; ez: "dd.ez"; fa: "dd.fa"; fb: "dd.fb"; fc: "dd.fc"; fd: "dd.fd"; fe: "dd.fe"; ff: "dd.ff"; fg: "dd.fg"; fh: "dd.fh"; fi: "dd.fi"; fj: "dd.fj"; fk: "dd.fk"; fl: "dd.fl"; fm: "dd.fm"; fn: "dd.fn"; fo: "dd.fo"; fp: "dd.fp"; fq: "dd.fq"; fr: "dd.fr"; fs: "dd.fs"; ft: "dd.ft"; fu: "dd.fu"; fv: "dd.fv"; fw: "dd.fw"; fx: "dd.fx"; fy: "dd.fy"; fz: "dd.fz"; ga: "dd.ga"; gb: "dd.gb"; gc: "dd.gc"; gd: "dd.gd"; ge: "dd.ge"; gf: "dd.gf"; gg: "dd.gg"; gh: "dd.gh"; gi: "dd.gi"; gj: "dd.gj"; gk: "dd.gk"; gl: "dd.gl"; gm: "dd.gm"; gn: "dd.gn"; go: "dd.go"; gp: "dd.gp"; gq: "dd.gq"; gr: "dd.gr"; gs: "dd.gs"; gt: "dd.gt"; gu: "dd.gu"; gv: "dd.gv"; gw: "dd.gw"; gx: "dd.gx"; gy: "dd.gy"; gz: "dd.gz"; ha: "dd.ha"; hb: "dd.hb"; hc: "dd.hc"; hd: "dd.hd"; he: "dd.he"; hf: "dd.hf"; hg: "dd.hg"; hh: "dd.hh"; hi: "dd.hi"; hj: "dd.hj"; hk: "dd.hk"; hl: "dd.hl"; hm: "dd.hm"; hn: "dd.hn"; ho: "dd.ho"; hp: "dd.hp"; hq: "dd.hq"; hr: "dd.hr"; hs: "dd.hs"; ht: "dd.ht"; hu: "dd.hu"; hv: "dd.hv"; hw: "dd.hw"; hx: "dd.hx"; hy: "dd.hy"; hz: "dd.hz"; ia: "dd.ia"; ib: "dd.ib"; ic: "dd.ic"; id: "dd.id"; ie: "dd.ie"; if: "dd.if"; ig: "dd.ig"; ih: "dd.ih"; ii: "dd.ii"; ij: "dd.ij"; ik: "dd.ik"; il: "dd.il"; im: "dd.im"; in: "dd.in"; io: "dd.io"; ip: "dd.ip"; iq: "dd.iq"; ir: "dd.ir"; is: "dd.is"; it: "dd.it"; iu: "dd.iu"; iv: "dd.iv"; iw: "dd.iw"; ix: "dd.ix"; iy: "dd.iy"; iz: "dd.iz"; ja: "dd.ja"; jb: "dd.jb"; jc: "dd.jc"; jd: "dd.jd"; je: "dd.je"; jf: "dd.jf"; jg: "dd.jg"; jh: "dd.jh"; ji: "dd.ji"; jj: "dd.jj"; jk: "dd.jk"; jl: "dd.jl"; jm: "dd.jm"; jn: "dd.jn"; jo: "dd.jo"; jp: "dd.jp"; jq: "dd.jq"; jr: "dd.jr"; js: "dd.js"; jt: "dd.jt"; ju: "dd.ju"; jv: "dd.jv"; jw: "dd.jw"; jx: "dd.jx"; jy: "dd.jy"; jz: "dd.jz"; ka: "dd.ka"; kb: "dd.kb"; kc: "dd.kc"; kd: "dd.kd"; ke: "dd.ke"; kf: "dd.kf"; kg: "dd.kg"; kh: "dd.kh"; ki: "dd.ki"; kj: "dd.kj"; kk: "dd.kk"; kl: "dd.kl"; km: "dd.km"; kn: "dd.kn"; ko: "dd.ko"; kp: "dd.kp"; kq: "dd.kq"; kr: "dd.kr"; ks: "dd.ks"; kt: "dd.kt"; ku: "dd.ku"; kv: "dd.kv"; kw: "dd.kw"; kx: "dd.kx"; ky: "dd.ky"; kz: "dd.kz"; la: "dd.la"; lb: "dd.lb"; lc: "dd.lc"; ld: "dd.ld"; le: "dd.le"; lf: "dd.lf"; lg: "dd.lg"; lh: "dd.lh"; li: "dd.li"; lj: "dd.lj"; lk: "dd.lk"; ll: "dd.ll"; lm: "dd.lm"; ln: "dd.ln"; lo: "dd.lo"; lp: "dd.lp"; lq: "dd.lq"; lr: "dd.lr"; ls: "dd.ls"; lt: "dd.lt"; lu: "dd.lu"; lv: "dd.lv"; lw: "dd.lw"; lx: "dd.lx"; ly: "dd.ly"; lz: "dd.lz"; ma: "dd.ma"; mb: "dd.mb"; mc: "dd.mc"; md: "dd.md"; me: "dd.me"; mf: "dd.mf"; mg: "dd.mg"; mh: "dd.mh"; mi: "dd.mi"; mj: "dd.mj"; mk: "dd.mk"; ml: "dd.ml"; mm: "dd.mm"; mn: "dd.mn"; mo: "dd.mo"; mp: "dd.mp"; mq: "dd.mq"; mr: "dd.mr"; ms: "dd.ms"; mt: "dd.mt"; mu: "dd.mu"; mv: "dd.mv"; mw: "dd.mw"; mx: "dd.mx"; my: "dd.my"; mz: "dd.mz"; na: "dd.na"; nb: "dd.nb"; nc: "dd.nc"; nd: "dd.nd"; ne: "dd.ne"; nf: "dd.nf"; ng: "dd.ng"; nh: "dd.nh"; ni: "dd.ni"; nj: "dd.nj"; nk: "dd.nk"; nl: "dd.nl"; nm: "dd.nm"; nn: "dd.nn"; no: "dd.no"; np: "dd.np"; nq: "dd.nq"; nr: "dd.nr"; ns: "dd.ns"; nt: "dd.nt"; nu: "dd.nu"; nv: "dd.nv"; nw: "dd.nw"; nx: "dd.nx"; ny: "dd.ny"; nz: "dd.nz"; oa: "dd.oa"; ob: "dd.ob"; oc: "dd.oc"; od: "dd.od"; oe: "dd.oe"; of: "dd.of"; og: "dd.og"; oh: "dd.oh"; oi: "dd.oi"; oj: "dd.oj"; ok: "dd.ok"; ol: "dd.ol"; om: "dd.om"; on: "dd.on"; oo: "dd.oo"; op: "dd.op"; oq: "dd.oq"; or: "dd.or"; os: "dd.os"; ot: "dd.ot"; ou: "dd.ou"; ov: "dd.ov"; ow: "dd.ow"; ox: "dd.ox"; oy: "dd.oy"; oz: "dd.oz"; pa: "dd.pa"; pb: "dd.pb"; pc: "dd.pc"; pd: "dd.pd"; pe: "dd.pe"; pf: "dd.pf"; pg: "dd.pg"; ph: "dd.ph"; pi: "dd.pi"; pj: "dd.pj"; pk: "dd.pk"; pl: "dd.pl"; pm: "dd.pm"; pn: "dd.pn"; po: "dd.po"; pp: "dd.pp"; pq: "dd.pq"; pr: "dd.pr"; ps: "dd.ps"; pt: "dd.pt"; pu: "dd.pu"; pv: "dd.pv"; pw: "dd.pw"; px: "dd.px"; py: "dd.py"; pz: "dd.pz"; qa: "dd.qa"; qb: "dd.qb"; qc: "dd.qc"; qd: "dd.qd"; qe: "dd.qe"; qf: "dd.qf"; qg: "dd.qg"; qh: "dd.qh"; qi: "dd.qi"; qj: "dd.qj"; qk: "dd.qk"; ql: "dd.ql"; qm: "dd.qm"; qn: "dd.qn"; qo: "dd.qo"; qp: "dd.qp"; qq: "dd.qq"; qr: "dd.qr"; qs: "dd.qs"; qt: "dd.qt"; qu: "dd.qu"; qv: "dd.qv"; qw: "dd.qw"; qx: "dd.qx"; qy: "dd.qy"; qz: "dd.qz"; ra: "dd.ra"; rb: "dd.rb"; rc: "dd.rc"; rd: "dd.rd"; re: "dd.re"; rf: "dd.rf"; rg: "dd.rg"; rh: "dd.rh"; ri: "dd.ri"; rj: "dd.rj"; rk: "dd.rk"; rl: "dd.rl"; rm: "dd.rm"; rn: "dd.rn"; ro: "dd.ro"; rp: "dd.rp"; rq: "dd.rq"; rr: "dd.rr"; rs: "dd.rs"; rt: "dd.rt"; ru: "dd.ru"; rv: "dd.rv"; rw: "dd.rw"; rx: "dd.rx"; ry: "dd.ry"; rz: "dd.rz"; sa: "dd.sa"; sb: "dd.sb"; sc: "dd.sc"; sd: "dd.sd"; se: "dd.se"; sf: "dd.sf"; sg: "dd.sg"; sh: "dd.sh"; si: "dd.si"; sj: "dd.sj"; sk: "dd.sk"; sl: "dd.sl"; sm: "dd.sm"; sn: "dd.sn"; so: "dd.so"; sp: "dd.sp"; sq: "dd.sq"; sr: "dd.sr"; ss: "dd.ss"; st: "dd.st"; su: "dd.su"; sv: "dd.sv"; sw: "dd.sw"; sx: "dd.sx"; sy: "dd.sy"; sz: "dd.sz"; ta: "dd.ta"; tb: "dd.tb"; tc: "dd.tc"; td: "dd.td"; te: "dd.te"; tf: "dd.tf"; tg: "dd.tg"; th: "dd.th"; ti: "dd.ti"; tj: "dd.tj"; tk: "dd.tk"; tl: "dd.tl"; tm: "dd.tm"; tn: "dd.tn"; to: "dd.to"; tp: "dd.tp"; tq: "dd.tq"; tr: "dd.tr"; ts: "dd.ts"; tt: "dd.tt"; tu: "dd.tu"; tv: "dd.tv"; tw: "dd.tw"; tx: "dd.tx"; ty: "dd.ty"; tz: "dd.tz"; ua: "dd.ua"; ub: "dd.ub"; uc: "dd.uc"; ud: "dd.ud"; ue: "dd.ue"; uf: "dd.uf"; ug: "dd.ug"; uh: "dd.uh"; ui: "dd.ui"; uj: "dd.uj"; uk: "dd.uk"; ul: "dd.ul"; um: "dd.um"; un: "dd.un"; uo: "dd.uo"; up: "dd.up"; uq: "dd.uq"; ur: "dd.ur"; us: "dd.us"; ut: "dd.ut"; uu: "dd.uu"; uv: "dd.uv"; uw: "dd.uw"; ux: "dd.ux"; uy: "dd.uy"; uz: "dd.uz"; va: "dd.va"; vb: "dd.vb"; vc: "dd.vc"; vd: "dd.vd"; ve: "dd.ve"; vf: "dd.vf"; vg: "dd.vg"; vh: "dd.vh"; vi: "dd.vi"; vj: "dd.vj"; vk: "dd.vk"; vl: "dd.vl"; vm: "dd.vm"; vn: "dd.vn"; vo: "dd.vo"; vp: "dd.vp"; vq: "dd.vq"; vr: "dd.vr"; vs: "dd.vs"; vt: "dd.vt"; vu: "dd.vu"; vv: "dd.vv"; vw: "dd.vw"; vx: "dd.vx"; vy: "dd.vy"; vz: "dd.vz"; wa: "dd.wa"; wb: "dd.wb"; wc: "dd.wc"; wd: "dd.wd"; we: "dd.we"; wf: "dd.wf"; wg: "dd.wg"; wh: "dd.wh"; wi: "dd.wi"; wj: "dd.wj"; wk: "dd.wk"; wl: "dd.wl"; wm: "dd.wm"; wn: "dd.wn"; wo: "dd.wo"; wp: "dd.wp"; wq: "dd.wq"; wr: "dd.wr"; ws: "dd.ws"; wt: "dd.wt"; wu: "dd.wu"; wv: "dd.wv"; ww: "dd.ww"; wx: "dd.wx"; wy: "dd.wy"; wz: "dd.wz"; xa: "dd.xa"; xb: "dd.xb"; xc: "dd.xc"; xd: "dd.xd"; xe: "dd.xe"; xf: "dd.xf"; xg: "dd.xg"; xh: "dd.xh"; xi: "dd.xi"; xj: "dd.xj"; xk: "dd.xk"; xl: "dd.xl"; xm: "dd.xm"; xn: "dd.xn"; xo: "dd.xo"; xp: "dd.xp"; xq: "dd.xq"; xr: "dd.xr"; xs: "dd.xs"; xt: "dd.xt"; xu: "dd.xu"; xv: "dd.xv"; xw: "dd.xw"; xx: "dd.xx"; xy: "dd.xy"; xz: "dd.xz"; ya: "dd.ya"; yb: "dd.yb"; yc: "dd.yc"; yd: "dd.yd"; ye: "dd.ye"; yf: "dd.yf"; yg: "dd.yg"; yh: "dd.yh"; yi: "dd.yi"; yj: "dd.yj"; yk: "dd.yk"; yl: "dd.yl"; ym: "dd.ym"; yn: "dd.yn"; yo: "dd.yo"; yp: "dd.yp"; yq: "dd.yq"; yr: "dd.yr"; ys: "dd.ys"; yt: "dd.yt"; yu: "dd.yu"; yv: "dd.yv"; yw: "dd.yw"; yx: "dd.yx"; yy: "dd.yy"; yz: "dd.yz"; za: "dd.za"; zb: "dd.zb"; zc: "dd.zc"; zd: "dd.zd"; ze: "dd.ze"; zf: "dd.zf"; zg: "dd.zg"; zh: "dd.zh"; zi: "dd.zi"; zj: "dd.zj"; zk: "dd.zk"; zl: "dd.zl"; zm: "dd.zm"; zn: "dd.zn"; zo: "dd.zo"; zp: "dd.zp"; zq: "dd.zq"; zr: "dd.zr"; zs: "dd.zs"; zt: "dd.zt"; zu: "dd.zu"; zv: "dd.zv"; zw: "dd.zw"; zx: "dd.zx"; zy: "dd.zy"; zz: "dd.zz"; }; de: { aa: "de.aa"; ab: "de.ab"; ac: "de.ac"; ad: "de.ad"; ae: "de.ae"; af: "de.af"; ag: "de.ag"; ah: "de.ah"; ai: "de.ai"; aj: "de.aj"; ak: "de.ak"; al: "de.al"; am: "de.am"; an: "de.an"; ao: "de.ao"; ap: "de.ap"; aq: "de.aq"; ar: "de.ar"; as: "de.as"; at: "de.at"; au: "de.au"; av: "de.av"; aw: "de.aw"; ax: "de.ax"; ay: "de.ay"; az: "de.az"; ba: "de.ba"; bb: "de.bb"; bc: "de.bc"; bd: "de.bd"; be: "de.be"; bf: "de.bf"; bg: "de.bg"; bh: "de.bh"; bi: "de.bi"; bj: "de.bj"; bk: "de.bk"; bl: "de.bl"; bm: "de.bm"; bn: "de.bn"; bo: "de.bo"; bp: "de.bp"; bq: "de.bq"; br: "de.br"; bs: "de.bs"; bt: "de.bt"; bu: "de.bu"; bv: "de.bv"; bw: "de.bw"; bx: "de.bx"; by: "de.by"; bz: "de.bz"; ca: "de.ca"; cb: "de.cb"; cc: "de.cc"; cd: "de.cd"; ce: "de.ce"; cf: "de.cf"; cg: "de.cg"; ch: "de.ch"; ci: "de.ci"; cj: "de.cj"; ck: "de.ck"; cl: "de.cl"; cm: "de.cm"; cn: "de.cn"; co: "de.co"; cp: "de.cp"; cq: "de.cq"; cr: "de.cr"; cs: "de.cs"; ct: "de.ct"; cu: "de.cu"; cv: "de.cv"; cw: "de.cw"; cx: "de.cx"; cy: "de.cy"; cz: "de.cz"; da: "de.da"; db: "de.db"; dc: "de.dc"; dd: "de.dd"; de: "de.de"; df: "de.df"; dg: "de.dg"; dh: "de.dh"; di: "de.di"; dj: "de.dj"; dk: "de.dk"; dl: "de.dl"; dm: "de.dm"; dn: "de.dn"; do: "de.do"; dp: "de.dp"; dq: "de.dq"; dr: "de.dr"; ds: "de.ds"; dt: "de.dt"; du: "de.du"; dv: "de.dv"; dw: "de.dw"; dx: "de.dx"; dy: "de.dy"; dz: "de.dz"; ea: "de.ea"; eb: "de.eb"; ec: "de.ec"; ed: "de.ed"; ee: "de.ee"; ef: "de.ef"; eg: "de.eg"; eh: "de.eh"; ei: "de.ei"; ej: "de.ej"; ek: "de.ek"; el: "de.el"; em: "de.em"; en: "de.en"; eo: "de.eo"; ep: "de.ep"; eq: "de.eq"; er: "de.er"; es: "de.es"; et: "de.et"; eu: "de.eu"; ev: "de.ev"; ew: "de.ew"; ex: "de.ex"; ey: "de.ey"; ez: "de.ez"; fa: "de.fa"; fb: "de.fb"; fc: "de.fc"; fd: "de.fd"; fe: "de.fe"; ff: "de.ff"; fg: "de.fg"; fh: "de.fh"; fi: "de.fi"; fj: "de.fj"; fk: "de.fk"; fl: "de.fl"; fm: "de.fm"; fn: "de.fn"; fo: "de.fo"; fp: "de.fp"; fq: "de.fq"; fr: "de.fr"; fs: "de.fs"; ft: "de.ft"; fu: "de.fu"; fv: "de.fv"; fw: "de.fw"; fx: "de.fx"; fy: "de.fy"; fz: "de.fz"; ga: "de.ga"; gb: "de.gb"; gc: "de.gc"; gd: "de.gd"; ge: "de.ge"; gf: "de.gf"; gg: "de.gg"; gh: "de.gh"; gi: "de.gi"; gj: "de.gj"; gk: "de.gk"; gl: "de.gl"; gm: "de.gm"; gn: "de.gn"; go: "de.go"; gp: "de.gp"; gq: "de.gq"; gr: "de.gr"; gs: "de.gs"; gt: "de.gt"; gu: "de.gu"; gv: "de.gv"; gw: "de.gw"; gx: "de.gx"; gy: "de.gy"; gz: "de.gz"; ha: "de.ha"; hb: "de.hb"; hc: "de.hc"; hd: "de.hd"; he: "de.he"; hf: "de.hf"; hg: "de.hg"; hh: "de.hh"; hi: "de.hi"; hj: "de.hj"; hk: "de.hk"; hl: "de.hl"; hm: "de.hm"; hn: "de.hn"; ho: "de.ho"; hp: "de.hp"; hq: "de.hq"; hr: "de.hr"; hs: "de.hs"; ht: "de.ht"; hu: "de.hu"; hv: "de.hv"; hw: "de.hw"; hx: "de.hx"; hy: "de.hy"; hz: "de.hz"; ia: "de.ia"; ib: "de.ib"; ic: "de.ic"; id: "de.id"; ie: "de.ie"; if: "de.if"; ig: "de.ig"; ih: "de.ih"; ii: "de.ii"; ij: "de.ij"; ik: "de.ik"; il: "de.il"; im: "de.im"; in: "de.in"; io: "de.io"; ip: "de.ip"; iq: "de.iq"; ir: "de.ir"; is: "de.is"; it: "de.it"; iu: "de.iu"; iv: "de.iv"; iw: "de.iw"; ix: "de.ix"; iy: "de.iy"; iz: "de.iz"; ja: "de.ja"; jb: "de.jb"; jc: "de.jc"; jd: "de.jd"; je: "de.je"; jf: "de.jf"; jg: "de.jg"; jh: "de.jh"; ji: "de.ji"; jj: "de.jj"; jk: "de.jk"; jl: "de.jl"; jm: "de.jm"; jn: "de.jn"; jo: "de.jo"; jp: "de.jp"; jq: "de.jq"; jr: "de.jr"; js: "de.js"; jt: "de.jt"; ju: "de.ju"; jv: "de.jv"; jw: "de.jw"; jx: "de.jx"; jy: "de.jy"; jz: "de.jz"; ka: "de.ka"; kb: "de.kb"; kc: "de.kc"; kd: "de.kd"; ke: "de.ke"; kf: "de.kf"; kg: "de.kg"; kh: "de.kh"; ki: "de.ki"; kj: "de.kj"; kk: "de.kk"; kl: "de.kl"; km: "de.km"; kn: "de.kn"; ko: "de.ko"; kp: "de.kp"; kq: "de.kq"; kr: "de.kr"; ks: "de.ks"; kt: "de.kt"; ku: "de.ku"; kv: "de.kv"; kw: "de.kw"; kx: "de.kx"; ky: "de.ky"; kz: "de.kz"; la: "de.la"; lb: "de.lb"; lc: "de.lc"; ld: "de.ld"; le: "de.le"; lf: "de.lf"; lg: "de.lg"; lh: "de.lh"; li: "de.li"; lj: "de.lj"; lk: "de.lk"; ll: "de.ll"; lm: "de.lm"; ln: "de.ln"; lo: "de.lo"; lp: "de.lp"; lq: "de.lq"; lr: "de.lr"; ls: "de.ls"; lt: "de.lt"; lu: "de.lu"; lv: "de.lv"; lw: "de.lw"; lx: "de.lx"; ly: "de.ly"; lz: "de.lz"; ma: "de.ma"; mb: "de.mb"; mc: "de.mc"; md: "de.md"; me: "de.me"; mf: "de.mf"; mg: "de.mg"; mh: "de.mh"; mi: "de.mi"; mj: "de.mj"; mk: "de.mk"; ml: "de.ml"; mm: "de.mm"; mn: "de.mn"; mo: "de.mo"; mp: "de.mp"; mq: "de.mq"; mr: "de.mr"; ms: "de.ms"; mt: "de.mt"; mu: "de.mu"; mv: "de.mv"; mw: "de.mw"; mx: "de.mx"; my: "de.my"; mz: "de.mz"; na: "de.na"; nb: "de.nb"; nc: "de.nc"; nd: "de.nd"; ne: "de.ne"; nf: "de.nf"; ng: "de.ng"; nh: "de.nh"; ni: "de.ni"; nj: "de.nj"; nk: "de.nk"; nl: "de.nl"; nm: "de.nm"; nn: "de.nn"; no: "de.no"; np: "de.np"; nq: "de.nq"; nr: "de.nr"; ns: "de.ns"; nt: "de.nt"; nu: "de.nu"; nv: "de.nv"; nw: "de.nw"; nx: "de.nx"; ny: "de.ny"; nz: "de.nz"; oa: "de.oa"; ob: "de.ob"; oc: "de.oc"; od: "de.od"; oe: "de.oe"; of: "de.of"; og: "de.og"; oh: "de.oh"; oi: "de.oi"; oj: "de.oj"; ok: "de.ok"; ol: "de.ol"; om: "de.om"; on: "de.on"; oo: "de.oo"; op: "de.op"; oq: "de.oq"; or: "de.or"; os: "de.os"; ot: "de.ot"; ou: "de.ou"; ov: "de.ov"; ow: "de.ow"; ox: "de.ox"; oy: "de.oy"; oz: "de.oz"; pa: "de.pa"; pb: "de.pb"; pc: "de.pc"; pd: "de.pd"; pe: "de.pe"; pf: "de.pf"; pg: "de.pg"; ph: "de.ph"; pi: "de.pi"; pj: "de.pj"; pk: "de.pk"; pl: "de.pl"; pm: "de.pm"; pn: "de.pn"; po: "de.po"; pp: "de.pp"; pq: "de.pq"; pr: "de.pr"; ps: "de.ps"; pt: "de.pt"; pu: "de.pu"; pv: "de.pv"; pw: "de.pw"; px: "de.px"; py: "de.py"; pz: "de.pz"; qa: "de.qa"; qb: "de.qb"; qc: "de.qc"; qd: "de.qd"; qe: "de.qe"; qf: "de.qf"; qg: "de.qg"; qh: "de.qh"; qi: "de.qi"; qj: "de.qj"; qk: "de.qk"; ql: "de.ql"; qm: "de.qm"; qn: "de.qn"; qo: "de.qo"; qp: "de.qp"; qq: "de.qq"; qr: "de.qr"; qs: "de.qs"; qt: "de.qt"; qu: "de.qu"; qv: "de.qv"; qw: "de.qw"; qx: "de.qx"; qy: "de.qy"; qz: "de.qz"; ra: "de.ra"; rb: "de.rb"; rc: "de.rc"; rd: "de.rd"; re: "de.re"; rf: "de.rf"; rg: "de.rg"; rh: "de.rh"; ri: "de.ri"; rj: "de.rj"; rk: "de.rk"; rl: "de.rl"; rm: "de.rm"; rn: "de.rn"; ro: "de.ro"; rp: "de.rp"; rq: "de.rq"; rr: "de.rr"; rs: "de.rs"; rt: "de.rt"; ru: "de.ru"; rv: "de.rv"; rw: "de.rw"; rx: "de.rx"; ry: "de.ry"; rz: "de.rz"; sa: "de.sa"; sb: "de.sb"; sc: "de.sc"; sd: "de.sd"; se: "de.se"; sf: "de.sf"; sg: "de.sg"; sh: "de.sh"; si: "de.si"; sj: "de.sj"; sk: "de.sk"; sl: "de.sl"; sm: "de.sm"; sn: "de.sn"; so: "de.so"; sp: "de.sp"; sq: "de.sq"; sr: "de.sr"; ss: "de.ss"; st: "de.st"; su: "de.su"; sv: "de.sv"; sw: "de.sw"; sx: "de.sx"; sy: "de.sy"; sz: "de.sz"; ta: "de.ta"; tb: "de.tb"; tc: "de.tc"; td: "de.td"; te: "de.te"; tf: "de.tf"; tg: "de.tg"; th: "de.th"; ti: "de.ti"; tj: "de.tj"; tk: "de.tk"; tl: "de.tl"; tm: "de.tm"; tn: "de.tn"; to: "de.to"; tp: "de.tp"; tq: "de.tq"; tr: "de.tr"; ts: "de.ts"; tt: "de.tt"; tu: "de.tu"; tv: "de.tv"; tw: "de.tw"; tx: "de.tx"; ty: "de.ty"; tz: "de.tz"; ua: "de.ua"; ub: "de.ub"; uc: "de.uc"; ud: "de.ud"; ue: "de.ue"; uf: "de.uf"; ug: "de.ug"; uh: "de.uh"; ui: "de.ui"; uj: "de.uj"; uk: "de.uk"; ul: "de.ul"; um: "de.um"; un: "de.un"; uo: "de.uo"; up: "de.up"; uq: "de.uq"; ur: "de.ur"; us: "de.us"; ut: "de.ut"; uu: "de.uu"; uv: "de.uv"; uw: "de.uw"; ux: "de.ux"; uy: "de.uy"; uz: "de.uz"; va: "de.va"; vb: "de.vb"; vc: "de.vc"; vd: "de.vd"; ve: "de.ve"; vf: "de.vf"; vg: "de.vg"; vh: "de.vh"; vi: "de.vi"; vj: "de.vj"; vk: "de.vk"; vl: "de.vl"; vm: "de.vm"; vn: "de.vn"; vo: "de.vo"; vp: "de.vp"; vq: "de.vq"; vr: "de.vr"; vs: "de.vs"; vt: "de.vt"; vu: "de.vu"; vv: "de.vv"; vw: "de.vw"; vx: "de.vx"; vy: "de.vy"; vz: "de.vz"; wa: "de.wa"; wb: "de.wb"; wc: "de.wc"; wd: "de.wd"; we: "de.we"; wf: "de.wf"; wg: "de.wg"; wh: "de.wh"; wi: "de.wi"; wj: "de.wj"; wk: "de.wk"; wl: "de.wl"; wm: "de.wm"; wn: "de.wn"; wo: "de.wo"; wp: "de.wp"; wq: "de.wq"; wr: "de.wr"; ws: "de.ws"; wt: "de.wt"; wu: "de.wu"; wv: "de.wv"; ww: "de.ww"; wx: "de.wx"; wy: "de.wy"; wz: "de.wz"; xa: "de.xa"; xb: "de.xb"; xc: "de.xc"; xd: "de.xd"; xe: "de.xe"; xf: "de.xf"; xg: "de.xg"; xh: "de.xh"; xi: "de.xi"; xj: "de.xj"; xk: "de.xk"; xl: "de.xl"; xm: "de.xm"; xn: "de.xn"; xo: "de.xo"; xp: "de.xp"; xq: "de.xq"; xr: "de.xr"; xs: "de.xs"; xt: "de.xt"; xu: "de.xu"; xv: "de.xv"; xw: "de.xw"; xx: "de.xx"; xy: "de.xy"; xz: "de.xz"; ya: "de.ya"; yb: "de.yb"; yc: "de.yc"; yd: "de.yd"; ye: "de.ye"; yf: "de.yf"; yg: "de.yg"; yh: "de.yh"; yi: "de.yi"; yj: "de.yj"; yk: "de.yk"; yl: "de.yl"; ym: "de.ym"; yn: "de.yn"; yo: "de.yo"; yp: "de.yp"; yq: "de.yq"; yr: "de.yr"; ys: "de.ys"; yt: "de.yt"; yu: "de.yu"; yv: "de.yv"; yw: "de.yw"; yx: "de.yx"; yy: "de.yy"; yz: "de.yz"; za: "de.za"; zb: "de.zb"; zc: "de.zc"; zd: "de.zd"; ze: "de.ze"; zf: "de.zf"; zg: "de.zg"; zh: "de.zh"; zi: "de.zi"; zj: "de.zj"; zk: "de.zk"; zl: "de.zl"; zm: "de.zm"; zn: "de.zn"; zo: "de.zo"; zp: "de.zp"; zq: "de.zq"; zr: "de.zr"; zs: "de.zs"; zt: "de.zt"; zu: "de.zu"; zv: "de.zv"; zw: "de.zw"; zx: "de.zx"; zy: "de.zy"; zz: "de.zz"; }; df: { aa: "df.aa"; ab: "df.ab"; ac: "df.ac"; ad: "df.ad"; ae: "df.ae"; af: "df.af"; ag: "df.ag"; ah: "df.ah"; ai: "df.ai"; aj: "df.aj"; ak: "df.ak"; al: "df.al"; am: "df.am"; an: "df.an"; ao: "df.ao"; ap: "df.ap"; aq: "df.aq"; ar: "df.ar"; as: "df.as"; at: "df.at"; au: "df.au"; av: "df.av"; aw: "df.aw"; ax: "df.ax"; ay: "df.ay"; az: "df.az"; ba: "df.ba"; bb: "df.bb"; bc: "df.bc"; bd: "df.bd"; be: "df.be"; bf: "df.bf"; bg: "df.bg"; bh: "df.bh"; bi: "df.bi"; bj: "df.bj"; bk: "df.bk"; bl: "df.bl"; bm: "df.bm"; bn: "df.bn"; bo: "df.bo"; bp: "df.bp"; bq: "df.bq"; br: "df.br"; bs: "df.bs"; bt: "df.bt"; bu: "df.bu"; bv: "df.bv"; bw: "df.bw"; bx: "df.bx"; by: "df.by"; bz: "df.bz"; ca: "df.ca"; cb: "df.cb"; cc: "df.cc"; cd: "df.cd"; ce: "df.ce"; cf: "df.cf"; cg: "df.cg"; ch: "df.ch"; ci: "df.ci"; cj: "df.cj"; ck: "df.ck"; cl: "df.cl"; cm: "df.cm"; cn: "df.cn"; co: "df.co"; cp: "df.cp"; cq: "df.cq"; cr: "df.cr"; cs: "df.cs"; ct: "df.ct"; cu: "df.cu"; cv: "df.cv"; cw: "df.cw"; cx: "df.cx"; cy: "df.cy"; cz: "df.cz"; da: "df.da"; db: "df.db"; dc: "df.dc"; dd: "df.dd"; de: "df.de"; df: "df.df"; dg: "df.dg"; dh: "df.dh"; di: "df.di"; dj: "df.dj"; dk: "df.dk"; dl: "df.dl"; dm: "df.dm"; dn: "df.dn"; do: "df.do"; dp: "df.dp"; dq: "df.dq"; dr: "df.dr"; ds: "df.ds"; dt: "df.dt"; du: "df.du"; dv: "df.dv"; dw: "df.dw"; dx: "df.dx"; dy: "df.dy"; dz: "df.dz"; ea: "df.ea"; eb: "df.eb"; ec: "df.ec"; ed: "df.ed"; ee: "df.ee"; ef: "df.ef"; eg: "df.eg"; eh: "df.eh"; ei: "df.ei"; ej: "df.ej"; ek: "df.ek"; el: "df.el"; em: "df.em"; en: "df.en"; eo: "df.eo"; ep: "df.ep"; eq: "df.eq"; er: "df.er"; es: "df.es"; et: "df.et"; eu: "df.eu"; ev: "df.ev"; ew: "df.ew"; ex: "df.ex"; ey: "df.ey"; ez: "df.ez"; fa: "df.fa"; fb: "df.fb"; fc: "df.fc"; fd: "df.fd"; fe: "df.fe"; ff: "df.ff"; fg: "df.fg"; fh: "df.fh"; fi: "df.fi"; fj: "df.fj"; fk: "df.fk"; fl: "df.fl"; fm: "df.fm"; fn: "df.fn"; fo: "df.fo"; fp: "df.fp"; fq: "df.fq"; fr: "df.fr"; fs: "df.fs"; ft: "df.ft"; fu: "df.fu"; fv: "df.fv"; fw: "df.fw"; fx: "df.fx"; fy: "df.fy"; fz: "df.fz"; ga: "df.ga"; gb: "df.gb"; gc: "df.gc"; gd: "df.gd"; ge: "df.ge"; gf: "df.gf"; gg: "df.gg"; gh: "df.gh"; gi: "df.gi"; gj: "df.gj"; gk: "df.gk"; gl: "df.gl"; gm: "df.gm"; gn: "df.gn"; go: "df.go"; gp: "df.gp"; gq: "df.gq"; gr: "df.gr"; gs: "df.gs"; gt: "df.gt"; gu: "df.gu"; gv: "df.gv"; gw: "df.gw"; gx: "df.gx"; gy: "df.gy"; gz: "df.gz"; ha: "df.ha"; hb: "df.hb"; hc: "df.hc"; hd: "df.hd"; he: "df.he"; hf: "df.hf"; hg: "df.hg"; hh: "df.hh"; hi: "df.hi"; hj: "df.hj"; hk: "df.hk"; hl: "df.hl"; hm: "df.hm"; hn: "df.hn"; ho: "df.ho"; hp: "df.hp"; hq: "df.hq"; hr: "df.hr"; hs: "df.hs"; ht: "df.ht"; hu: "df.hu"; hv: "df.hv"; hw: "df.hw"; hx: "df.hx"; hy: "df.hy"; hz: "df.hz"; ia: "df.ia"; ib: "df.ib"; ic: "df.ic"; id: "df.id"; ie: "df.ie"; if: "df.if"; ig: "df.ig"; ih: "df.ih"; ii: "df.ii"; ij: "df.ij"; ik: "df.ik"; il: "df.il"; im: "df.im"; in: "df.in"; io: "df.io"; ip: "df.ip"; iq: "df.iq"; ir: "df.ir"; is: "df.is"; it: "df.it"; iu: "df.iu"; iv: "df.iv"; iw: "df.iw"; ix: "df.ix"; iy: "df.iy"; iz: "df.iz"; ja: "df.ja"; jb: "df.jb"; jc: "df.jc"; jd: "df.jd"; je: "df.je"; jf: "df.jf"; jg: "df.jg"; jh: "df.jh"; ji: "df.ji"; jj: "df.jj"; jk: "df.jk"; jl: "df.jl"; jm: "df.jm"; jn: "df.jn"; jo: "df.jo"; jp: "df.jp"; jq: "df.jq"; jr: "df.jr"; js: "df.js"; jt: "df.jt"; ju: "df.ju"; jv: "df.jv"; jw: "df.jw"; jx: "df.jx"; jy: "df.jy"; jz: "df.jz"; ka: "df.ka"; kb: "df.kb"; kc: "df.kc"; kd: "df.kd"; ke: "df.ke"; kf: "df.kf"; kg: "df.kg"; kh: "df.kh"; ki: "df.ki"; kj: "df.kj"; kk: "df.kk"; kl: "df.kl"; km: "df.km"; kn: "df.kn"; ko: "df.ko"; kp: "df.kp"; kq: "df.kq"; kr: "df.kr"; ks: "df.ks"; kt: "df.kt"; ku: "df.ku"; kv: "df.kv"; kw: "df.kw"; kx: "df.kx"; ky: "df.ky"; kz: "df.kz"; la: "df.la"; lb: "df.lb"; lc: "df.lc"; ld: "df.ld"; le: "df.le"; lf: "df.lf"; lg: "df.lg"; lh: "df.lh"; li: "df.li"; lj: "df.lj"; lk: "df.lk"; ll: "df.ll"; lm: "df.lm"; ln: "df.ln"; lo: "df.lo"; lp: "df.lp"; lq: "df.lq"; lr: "df.lr"; ls: "df.ls"; lt: "df.lt"; lu: "df.lu"; lv: "df.lv"; lw: "df.lw"; lx: "df.lx"; ly: "df.ly"; lz: "df.lz"; ma: "df.ma"; mb: "df.mb"; mc: "df.mc"; md: "df.md"; me: "df.me"; mf: "df.mf"; mg: "df.mg"; mh: "df.mh"; mi: "df.mi"; mj: "df.mj"; mk: "df.mk"; ml: "df.ml"; mm: "df.mm"; mn: "df.mn"; mo: "df.mo"; mp: "df.mp"; mq: "df.mq"; mr: "df.mr"; ms: "df.ms"; mt: "df.mt"; mu: "df.mu"; mv: "df.mv"; mw: "df.mw"; mx: "df.mx"; my: "df.my"; mz: "df.mz"; na: "df.na"; nb: "df.nb"; nc: "df.nc"; nd: "df.nd"; ne: "df.ne"; nf: "df.nf"; ng: "df.ng"; nh: "df.nh"; ni: "df.ni"; nj: "df.nj"; nk: "df.nk"; nl: "df.nl"; nm: "df.nm"; nn: "df.nn"; no: "df.no"; np: "df.np"; nq: "df.nq"; nr: "df.nr"; ns: "df.ns"; nt: "df.nt"; nu: "df.nu"; nv: "df.nv"; nw: "df.nw"; nx: "df.nx"; ny: "df.ny"; nz: "df.nz"; oa: "df.oa"; ob: "df.ob"; oc: "df.oc"; od: "df.od"; oe: "df.oe"; of: "df.of"; og: "df.og"; oh: "df.oh"; oi: "df.oi"; oj: "df.oj"; ok: "df.ok"; ol: "df.ol"; om: "df.om"; on: "df.on"; oo: "df.oo"; op: "df.op"; oq: "df.oq"; or: "df.or"; os: "df.os"; ot: "df.ot"; ou: "df.ou"; ov: "df.ov"; ow: "df.ow"; ox: "df.ox"; oy: "df.oy"; oz: "df.oz"; pa: "df.pa"; pb: "df.pb"; pc: "df.pc"; pd: "df.pd"; pe: "df.pe"; pf: "df.pf"; pg: "df.pg"; ph: "df.ph"; pi: "df.pi"; pj: "df.pj"; pk: "df.pk"; pl: "df.pl"; pm: "df.pm"; pn: "df.pn"; po: "df.po"; pp: "df.pp"; pq: "df.pq"; pr: "df.pr"; ps: "df.ps"; pt: "df.pt"; pu: "df.pu"; pv: "df.pv"; pw: "df.pw"; px: "df.px"; py: "df.py"; pz: "df.pz"; qa: "df.qa"; qb: "df.qb"; qc: "df.qc"; qd: "df.qd"; qe: "df.qe"; qf: "df.qf"; qg: "df.qg"; qh: "df.qh"; qi: "df.qi"; qj: "df.qj"; qk: "df.qk"; ql: "df.ql"; qm: "df.qm"; qn: "df.qn"; qo: "df.qo"; qp: "df.qp"; qq: "df.qq"; qr: "df.qr"; qs: "df.qs"; qt: "df.qt"; qu: "df.qu"; qv: "df.qv"; qw: "df.qw"; qx: "df.qx"; qy: "df.qy"; qz: "df.qz"; ra: "df.ra"; rb: "df.rb"; rc: "df.rc"; rd: "df.rd"; re: "df.re"; rf: "df.rf"; rg: "df.rg"; rh: "df.rh"; ri: "df.ri"; rj: "df.rj"; rk: "df.rk"; rl: "df.rl"; rm: "df.rm"; rn: "df.rn"; ro: "df.ro"; rp: "df.rp"; rq: "df.rq"; rr: "df.rr"; rs: "df.rs"; rt: "df.rt"; ru: "df.ru"; rv: "df.rv"; rw: "df.rw"; rx: "df.rx"; ry: "df.ry"; rz: "df.rz"; sa: "df.sa"; sb: "df.sb"; sc: "df.sc"; sd: "df.sd"; se: "df.se"; sf: "df.sf"; sg: "df.sg"; sh: "df.sh"; si: "df.si"; sj: "df.sj"; sk: "df.sk"; sl: "df.sl"; sm: "df.sm"; sn: "df.sn"; so: "df.so"; sp: "df.sp"; sq: "df.sq"; sr: "df.sr"; ss: "df.ss"; st: "df.st"; su: "df.su"; sv: "df.sv"; sw: "df.sw"; sx: "df.sx"; sy: "df.sy"; sz: "df.sz"; ta: "df.ta"; tb: "df.tb"; tc: "df.tc"; td: "df.td"; te: "df.te"; tf: "df.tf"; tg: "df.tg"; th: "df.th"; ti: "df.ti"; tj: "df.tj"; tk: "df.tk"; tl: "df.tl"; tm: "df.tm"; tn: "df.tn"; to: "df.to"; tp: "df.tp"; tq: "df.tq"; tr: "df.tr"; ts: "df.ts"; tt: "df.tt"; tu: "df.tu"; tv: "df.tv"; tw: "df.tw"; tx: "df.tx"; ty: "df.ty"; tz: "df.tz"; ua: "df.ua"; ub: "df.ub"; uc: "df.uc"; ud: "df.ud"; ue: "df.ue"; uf: "df.uf"; ug: "df.ug"; uh: "df.uh"; ui: "df.ui"; uj: "df.uj"; uk: "df.uk"; ul: "df.ul"; um: "df.um"; un: "df.un"; uo: "df.uo"; up: "df.up"; uq: "df.uq"; ur: "df.ur"; us: "df.us"; ut: "df.ut"; uu: "df.uu"; uv: "df.uv"; uw: "df.uw"; ux: "df.ux"; uy: "df.uy"; uz: "df.uz"; va: "df.va"; vb: "df.vb"; vc: "df.vc"; vd: "df.vd"; ve: "df.ve"; vf: "df.vf"; vg: "df.vg"; vh: "df.vh"; vi: "df.vi"; vj: "df.vj"; vk: "df.vk"; vl: "df.vl"; vm: "df.vm"; vn: "df.vn"; vo: "df.vo"; vp: "df.vp"; vq: "df.vq"; vr: "df.vr"; vs: "df.vs"; vt: "df.vt"; vu: "df.vu"; vv: "df.vv"; vw: "df.vw"; vx: "df.vx"; vy: "df.vy"; vz: "df.vz"; wa: "df.wa"; wb: "df.wb"; wc: "df.wc"; wd: "df.wd"; we: "df.we"; wf: "df.wf"; wg: "df.wg"; wh: "df.wh"; wi: "df.wi"; wj: "df.wj"; wk: "df.wk"; wl: "df.wl"; wm: "df.wm"; wn: "df.wn"; wo: "df.wo"; wp: "df.wp"; wq: "df.wq"; wr: "df.wr"; ws: "df.ws"; wt: "df.wt"; wu: "df.wu"; wv: "df.wv"; ww: "df.ww"; wx: "df.wx"; wy: "df.wy"; wz: "df.wz"; xa: "df.xa"; xb: "df.xb"; xc: "df.xc"; xd: "df.xd"; xe: "df.xe"; xf: "df.xf"; xg: "df.xg"; xh: "df.xh"; xi: "df.xi"; xj: "df.xj"; xk: "df.xk"; xl: "df.xl"; xm: "df.xm"; xn: "df.xn"; xo: "df.xo"; xp: "df.xp"; xq: "df.xq"; xr: "df.xr"; xs: "df.xs"; xt: "df.xt"; xu: "df.xu"; xv: "df.xv"; xw: "df.xw"; xx: "df.xx"; xy: "df.xy"; xz: "df.xz"; ya: "df.ya"; yb: "df.yb"; yc: "df.yc"; yd: "df.yd"; ye: "df.ye"; yf: "df.yf"; yg: "df.yg"; yh: "df.yh"; yi: "df.yi"; yj: "df.yj"; yk: "df.yk"; yl: "df.yl"; ym: "df.ym"; yn: "df.yn"; yo: "df.yo"; yp: "df.yp"; yq: "df.yq"; yr: "df.yr"; ys: "df.ys"; yt: "df.yt"; yu: "df.yu"; yv: "df.yv"; yw: "df.yw"; yx: "df.yx"; yy: "df.yy"; yz: "df.yz"; za: "df.za"; zb: "df.zb"; zc: "df.zc"; zd: "df.zd"; ze: "df.ze"; zf: "df.zf"; zg: "df.zg"; zh: "df.zh"; zi: "df.zi"; zj: "df.zj"; zk: "df.zk"; zl: "df.zl"; zm: "df.zm"; zn: "df.zn"; zo: "df.zo"; zp: "df.zp"; zq: "df.zq"; zr: "df.zr"; zs: "df.zs"; zt: "df.zt"; zu: "df.zu"; zv: "df.zv"; zw: "df.zw"; zx: "df.zx"; zy: "df.zy"; zz: "df.zz"; }; dg: { aa: "dg.aa"; ab: "dg.ab"; ac: "dg.ac"; ad: "dg.ad"; ae: "dg.ae"; af: "dg.af"; ag: "dg.ag"; ah: "dg.ah"; ai: "dg.ai"; aj: "dg.aj"; ak: "dg.ak"; al: "dg.al"; am: "dg.am"; an: "dg.an"; ao: "dg.ao"; ap: "dg.ap"; aq: "dg.aq"; ar: "dg.ar"; as: "dg.as"; at: "dg.at"; au: "dg.au"; av: "dg.av"; aw: "dg.aw"; ax: "dg.ax"; ay: "dg.ay"; az: "dg.az"; ba: "dg.ba"; bb: "dg.bb"; bc: "dg.bc"; bd: "dg.bd"; be: "dg.be"; bf: "dg.bf"; bg: "dg.bg"; bh: "dg.bh"; bi: "dg.bi"; bj: "dg.bj"; bk: "dg.bk"; bl: "dg.bl"; bm: "dg.bm"; bn: "dg.bn"; bo: "dg.bo"; bp: "dg.bp"; bq: "dg.bq"; br: "dg.br"; bs: "dg.bs"; bt: "dg.bt"; bu: "dg.bu"; bv: "dg.bv"; bw: "dg.bw"; bx: "dg.bx"; by: "dg.by"; bz: "dg.bz"; ca: "dg.ca"; cb: "dg.cb"; cc: "dg.cc"; cd: "dg.cd"; ce: "dg.ce"; cf: "dg.cf"; cg: "dg.cg"; ch: "dg.ch"; ci: "dg.ci"; cj: "dg.cj"; ck: "dg.ck"; cl: "dg.cl"; cm: "dg.cm"; cn: "dg.cn"; co: "dg.co"; cp: "dg.cp"; cq: "dg.cq"; cr: "dg.cr"; cs: "dg.cs"; ct: "dg.ct"; cu: "dg.cu"; cv: "dg.cv"; cw: "dg.cw"; cx: "dg.cx"; cy: "dg.cy"; cz: "dg.cz"; da: "dg.da"; db: "dg.db"; dc: "dg.dc"; dd: "dg.dd"; de: "dg.de"; df: "dg.df"; dg: "dg.dg"; dh: "dg.dh"; di: "dg.di"; dj: "dg.dj"; dk: "dg.dk"; dl: "dg.dl"; dm: "dg.dm"; dn: "dg.dn"; do: "dg.do"; dp: "dg.dp"; dq: "dg.dq"; dr: "dg.dr"; ds: "dg.ds"; dt: "dg.dt"; du: "dg.du"; dv: "dg.dv"; dw: "dg.dw"; dx: "dg.dx"; dy: "dg.dy"; dz: "dg.dz"; ea: "dg.ea"; eb: "dg.eb"; ec: "dg.ec"; ed: "dg.ed"; ee: "dg.ee"; ef: "dg.ef"; eg: "dg.eg"; eh: "dg.eh"; ei: "dg.ei"; ej: "dg.ej"; ek: "dg.ek"; el: "dg.el"; em: "dg.em"; en: "dg.en"; eo: "dg.eo"; ep: "dg.ep"; eq: "dg.eq"; er: "dg.er"; es: "dg.es"; et: "dg.et"; eu: "dg.eu"; ev: "dg.ev"; ew: "dg.ew"; ex: "dg.ex"; ey: "dg.ey"; ez: "dg.ez"; fa: "dg.fa"; fb: "dg.fb"; fc: "dg.fc"; fd: "dg.fd"; fe: "dg.fe"; ff: "dg.ff"; fg: "dg.fg"; fh: "dg.fh"; fi: "dg.fi"; fj: "dg.fj"; fk: "dg.fk"; fl: "dg.fl"; fm: "dg.fm"; fn: "dg.fn"; fo: "dg.fo"; fp: "dg.fp"; fq: "dg.fq"; fr: "dg.fr"; fs: "dg.fs"; ft: "dg.ft"; fu: "dg.fu"; fv: "dg.fv"; fw: "dg.fw"; fx: "dg.fx"; fy: "dg.fy"; fz: "dg.fz"; ga: "dg.ga"; gb: "dg.gb"; gc: "dg.gc"; gd: "dg.gd"; ge: "dg.ge"; gf: "dg.gf"; gg: "dg.gg"; gh: "dg.gh"; gi: "dg.gi"; gj: "dg.gj"; gk: "dg.gk"; gl: "dg.gl"; gm: "dg.gm"; gn: "dg.gn"; go: "dg.go"; gp: "dg.gp"; gq: "dg.gq"; gr: "dg.gr"; gs: "dg.gs"; gt: "dg.gt"; gu: "dg.gu"; gv: "dg.gv"; gw: "dg.gw"; gx: "dg.gx"; gy: "dg.gy"; gz: "dg.gz"; ha: "dg.ha"; hb: "dg.hb"; hc: "dg.hc"; hd: "dg.hd"; he: "dg.he"; hf: "dg.hf"; hg: "dg.hg"; hh: "dg.hh"; hi: "dg.hi"; hj: "dg.hj"; hk: "dg.hk"; hl: "dg.hl"; hm: "dg.hm"; hn: "dg.hn"; ho: "dg.ho"; hp: "dg.hp"; hq: "dg.hq"; hr: "dg.hr"; hs: "dg.hs"; ht: "dg.ht"; hu: "dg.hu"; hv: "dg.hv"; hw: "dg.hw"; hx: "dg.hx"; hy: "dg.hy"; hz: "dg.hz"; ia: "dg.ia"; ib: "dg.ib"; ic: "dg.ic"; id: "dg.id"; ie: "dg.ie"; if: "dg.if"; ig: "dg.ig"; ih: "dg.ih"; ii: "dg.ii"; ij: "dg.ij"; ik: "dg.ik"; il: "dg.il"; im: "dg.im"; in: "dg.in"; io: "dg.io"; ip: "dg.ip"; iq: "dg.iq"; ir: "dg.ir"; is: "dg.is"; it: "dg.it"; iu: "dg.iu"; iv: "dg.iv"; iw: "dg.iw"; ix: "dg.ix"; iy: "dg.iy"; iz: "dg.iz"; ja: "dg.ja"; jb: "dg.jb"; jc: "dg.jc"; jd: "dg.jd"; je: "dg.je"; jf: "dg.jf"; jg: "dg.jg"; jh: "dg.jh"; ji: "dg.ji"; jj: "dg.jj"; jk: "dg.jk"; jl: "dg.jl"; jm: "dg.jm"; jn: "dg.jn"; jo: "dg.jo"; jp: "dg.jp"; jq: "dg.jq"; jr: "dg.jr"; js: "dg.js"; jt: "dg.jt"; ju: "dg.ju"; jv: "dg.jv"; jw: "dg.jw"; jx: "dg.jx"; jy: "dg.jy"; jz: "dg.jz"; ka: "dg.ka"; kb: "dg.kb"; kc: "dg.kc"; kd: "dg.kd"; ke: "dg.ke"; kf: "dg.kf"; kg: "dg.kg"; kh: "dg.kh"; ki: "dg.ki"; kj: "dg.kj"; kk: "dg.kk"; kl: "dg.kl"; km: "dg.km"; kn: "dg.kn"; ko: "dg.ko"; kp: "dg.kp"; kq: "dg.kq"; kr: "dg.kr"; ks: "dg.ks"; kt: "dg.kt"; ku: "dg.ku"; kv: "dg.kv"; kw: "dg.kw"; kx: "dg.kx"; ky: "dg.ky"; kz: "dg.kz"; la: "dg.la"; lb: "dg.lb"; lc: "dg.lc"; ld: "dg.ld"; le: "dg.le"; lf: "dg.lf"; lg: "dg.lg"; lh: "dg.lh"; li: "dg.li"; lj: "dg.lj"; lk: "dg.lk"; ll: "dg.ll"; lm: "dg.lm"; ln: "dg.ln"; lo: "dg.lo"; lp: "dg.lp"; lq: "dg.lq"; lr: "dg.lr"; ls: "dg.ls"; lt: "dg.lt"; lu: "dg.lu"; lv: "dg.lv"; lw: "dg.lw"; lx: "dg.lx"; ly: "dg.ly"; lz: "dg.lz"; ma: "dg.ma"; mb: "dg.mb"; mc: "dg.mc"; md: "dg.md"; me: "dg.me"; mf: "dg.mf"; mg: "dg.mg"; mh: "dg.mh"; mi: "dg.mi"; mj: "dg.mj"; mk: "dg.mk"; ml: "dg.ml"; mm: "dg.mm"; mn: "dg.mn"; mo: "dg.mo"; mp: "dg.mp"; mq: "dg.mq"; mr: "dg.mr"; ms: "dg.ms"; mt: "dg.mt"; mu: "dg.mu"; mv: "dg.mv"; mw: "dg.mw"; mx: "dg.mx"; my: "dg.my"; mz: "dg.mz"; na: "dg.na"; nb: "dg.nb"; nc: "dg.nc"; nd: "dg.nd"; ne: "dg.ne"; nf: "dg.nf"; ng: "dg.ng"; nh: "dg.nh"; ni: "dg.ni"; nj: "dg.nj"; nk: "dg.nk"; nl: "dg.nl"; nm: "dg.nm"; nn: "dg.nn"; no: "dg.no"; np: "dg.np"; nq: "dg.nq"; nr: "dg.nr"; ns: "dg.ns"; nt: "dg.nt"; nu: "dg.nu"; nv: "dg.nv"; nw: "dg.nw"; nx: "dg.nx"; ny: "dg.ny"; nz: "dg.nz"; oa: "dg.oa"; ob: "dg.ob"; oc: "dg.oc"; od: "dg.od"; oe: "dg.oe"; of: "dg.of"; og: "dg.og"; oh: "dg.oh"; oi: "dg.oi"; oj: "dg.oj"; ok: "dg.ok"; ol: "dg.ol"; om: "dg.om"; on: "dg.on"; oo: "dg.oo"; op: "dg.op"; oq: "dg.oq"; or: "dg.or"; os: "dg.os"; ot: "dg.ot"; ou: "dg.ou"; ov: "dg.ov"; ow: "dg.ow"; ox: "dg.ox"; oy: "dg.oy"; oz: "dg.oz"; pa: "dg.pa"; pb: "dg.pb"; pc: "dg.pc"; pd: "dg.pd"; pe: "dg.pe"; pf: "dg.pf"; pg: "dg.pg"; ph: "dg.ph"; pi: "dg.pi"; pj: "dg.pj"; pk: "dg.pk"; pl: "dg.pl"; pm: "dg.pm"; pn: "dg.pn"; po: "dg.po"; pp: "dg.pp"; pq: "dg.pq"; pr: "dg.pr"; ps: "dg.ps"; pt: "dg.pt"; pu: "dg.pu"; pv: "dg.pv"; pw: "dg.pw"; px: "dg.px"; py: "dg.py"; pz: "dg.pz"; qa: "dg.qa"; qb: "dg.qb"; qc: "dg.qc"; qd: "dg.qd"; qe: "dg.qe"; qf: "dg.qf"; qg: "dg.qg"; qh: "dg.qh"; qi: "dg.qi"; qj: "dg.qj"; qk: "dg.qk"; ql: "dg.ql"; qm: "dg.qm"; qn: "dg.qn"; qo: "dg.qo"; qp: "dg.qp"; qq: "dg.qq"; qr: "dg.qr"; qs: "dg.qs"; qt: "dg.qt"; qu: "dg.qu"; qv: "dg.qv"; qw: "dg.qw"; qx: "dg.qx"; qy: "dg.qy"; qz: "dg.qz"; ra: "dg.ra"; rb: "dg.rb"; rc: "dg.rc"; rd: "dg.rd"; re: "dg.re"; rf: "dg.rf"; rg: "dg.rg"; rh: "dg.rh"; ri: "dg.ri"; rj: "dg.rj"; rk: "dg.rk"; rl: "dg.rl"; rm: "dg.rm"; rn: "dg.rn"; ro: "dg.ro"; rp: "dg.rp"; rq: "dg.rq"; rr: "dg.rr"; rs: "dg.rs"; rt: "dg.rt"; ru: "dg.ru"; rv: "dg.rv"; rw: "dg.rw"; rx: "dg.rx"; ry: "dg.ry"; rz: "dg.rz"; sa: "dg.sa"; sb: "dg.sb"; sc: "dg.sc"; sd: "dg.sd"; se: "dg.se"; sf: "dg.sf"; sg: "dg.sg"; sh: "dg.sh"; si: "dg.si"; sj: "dg.sj"; sk: "dg.sk"; sl: "dg.sl"; sm: "dg.sm"; sn: "dg.sn"; so: "dg.so"; sp: "dg.sp"; sq: "dg.sq"; sr: "dg.sr"; ss: "dg.ss"; st: "dg.st"; su: "dg.su"; sv: "dg.sv"; sw: "dg.sw"; sx: "dg.sx"; sy: "dg.sy"; sz: "dg.sz"; ta: "dg.ta"; tb: "dg.tb"; tc: "dg.tc"; td: "dg.td"; te: "dg.te"; tf: "dg.tf"; tg: "dg.tg"; th: "dg.th"; ti: "dg.ti"; tj: "dg.tj"; tk: "dg.tk"; tl: "dg.tl"; tm: "dg.tm"; tn: "dg.tn"; to: "dg.to"; tp: "dg.tp"; tq: "dg.tq"; tr: "dg.tr"; ts: "dg.ts"; tt: "dg.tt"; tu: "dg.tu"; tv: "dg.tv"; tw: "dg.tw"; tx: "dg.tx"; ty: "dg.ty"; tz: "dg.tz"; ua: "dg.ua"; ub: "dg.ub"; uc: "dg.uc"; ud: "dg.ud"; ue: "dg.ue"; uf: "dg.uf"; ug: "dg.ug"; uh: "dg.uh"; ui: "dg.ui"; uj: "dg.uj"; uk: "dg.uk"; ul: "dg.ul"; um: "dg.um"; un: "dg.un"; uo: "dg.uo"; up: "dg.up"; uq: "dg.uq"; ur: "dg.ur"; us: "dg.us"; ut: "dg.ut"; uu: "dg.uu"; uv: "dg.uv"; uw: "dg.uw"; ux: "dg.ux"; uy: "dg.uy"; uz: "dg.uz"; va: "dg.va"; vb: "dg.vb"; vc: "dg.vc"; vd: "dg.vd"; ve: "dg.ve"; vf: "dg.vf"; vg: "dg.vg"; vh: "dg.vh"; vi: "dg.vi"; vj: "dg.vj"; vk: "dg.vk"; vl: "dg.vl"; vm: "dg.vm"; vn: "dg.vn"; vo: "dg.vo"; vp: "dg.vp"; vq: "dg.vq"; vr: "dg.vr"; vs: "dg.vs"; vt: "dg.vt"; vu: "dg.vu"; vv: "dg.vv"; vw: "dg.vw"; vx: "dg.vx"; vy: "dg.vy"; vz: "dg.vz"; wa: "dg.wa"; wb: "dg.wb"; wc: "dg.wc"; wd: "dg.wd"; we: "dg.we"; wf: "dg.wf"; wg: "dg.wg"; wh: "dg.wh"; wi: "dg.wi"; wj: "dg.wj"; wk: "dg.wk"; wl: "dg.wl"; wm: "dg.wm"; wn: "dg.wn"; wo: "dg.wo"; wp: "dg.wp"; wq: "dg.wq"; wr: "dg.wr"; ws: "dg.ws"; wt: "dg.wt"; wu: "dg.wu"; wv: "dg.wv"; ww: "dg.ww"; wx: "dg.wx"; wy: "dg.wy"; wz: "dg.wz"; xa: "dg.xa"; xb: "dg.xb"; xc: "dg.xc"; xd: "dg.xd"; xe: "dg.xe"; xf: "dg.xf"; xg: "dg.xg"; xh: "dg.xh"; xi: "dg.xi"; xj: "dg.xj"; xk: "dg.xk"; xl: "dg.xl"; xm: "dg.xm"; xn: "dg.xn"; xo: "dg.xo"; xp: "dg.xp"; xq: "dg.xq"; xr: "dg.xr"; xs: "dg.xs"; xt: "dg.xt"; xu: "dg.xu"; xv: "dg.xv"; xw: "dg.xw"; xx: "dg.xx"; xy: "dg.xy"; xz: "dg.xz"; ya: "dg.ya"; yb: "dg.yb"; yc: "dg.yc"; yd: "dg.yd"; ye: "dg.ye"; yf: "dg.yf"; yg: "dg.yg"; yh: "dg.yh"; yi: "dg.yi"; yj: "dg.yj"; yk: "dg.yk"; yl: "dg.yl"; ym: "dg.ym"; yn: "dg.yn"; yo: "dg.yo"; yp: "dg.yp"; yq: "dg.yq"; yr: "dg.yr"; ys: "dg.ys"; yt: "dg.yt"; yu: "dg.yu"; yv: "dg.yv"; yw: "dg.yw"; yx: "dg.yx"; yy: "dg.yy"; yz: "dg.yz"; za: "dg.za"; zb: "dg.zb"; zc: "dg.zc"; zd: "dg.zd"; ze: "dg.ze"; zf: "dg.zf"; zg: "dg.zg"; zh: "dg.zh"; zi: "dg.zi"; zj: "dg.zj"; zk: "dg.zk"; zl: "dg.zl"; zm: "dg.zm"; zn: "dg.zn"; zo: "dg.zo"; zp: "dg.zp"; zq: "dg.zq"; zr: "dg.zr"; zs: "dg.zs"; zt: "dg.zt"; zu: "dg.zu"; zv: "dg.zv"; zw: "dg.zw"; zx: "dg.zx"; zy: "dg.zy"; zz: "dg.zz"; }; dh: { aa: "dh.aa"; ab: "dh.ab"; ac: "dh.ac"; ad: "dh.ad"; ae: "dh.ae"; af: "dh.af"; ag: "dh.ag"; ah: "dh.ah"; ai: "dh.ai"; aj: "dh.aj"; ak: "dh.ak"; al: "dh.al"; am: "dh.am"; an: "dh.an"; ao: "dh.ao"; ap: "dh.ap"; aq: "dh.aq"; ar: "dh.ar"; as: "dh.as"; at: "dh.at"; au: "dh.au"; av: "dh.av"; aw: "dh.aw"; ax: "dh.ax"; ay: "dh.ay"; az: "dh.az"; ba: "dh.ba"; bb: "dh.bb"; bc: "dh.bc"; bd: "dh.bd"; be: "dh.be"; bf: "dh.bf"; bg: "dh.bg"; bh: "dh.bh"; bi: "dh.bi"; bj: "dh.bj"; bk: "dh.bk"; bl: "dh.bl"; bm: "dh.bm"; bn: "dh.bn"; bo: "dh.bo"; bp: "dh.bp"; bq: "dh.bq"; br: "dh.br"; bs: "dh.bs"; bt: "dh.bt"; bu: "dh.bu"; bv: "dh.bv"; bw: "dh.bw"; bx: "dh.bx"; by: "dh.by"; bz: "dh.bz"; ca: "dh.ca"; cb: "dh.cb"; cc: "dh.cc"; cd: "dh.cd"; ce: "dh.ce"; cf: "dh.cf"; cg: "dh.cg"; ch: "dh.ch"; ci: "dh.ci"; cj: "dh.cj"; ck: "dh.ck"; cl: "dh.cl"; cm: "dh.cm"; cn: "dh.cn"; co: "dh.co"; cp: "dh.cp"; cq: "dh.cq"; cr: "dh.cr"; cs: "dh.cs"; ct: "dh.ct"; cu: "dh.cu"; cv: "dh.cv"; cw: "dh.cw"; cx: "dh.cx"; cy: "dh.cy"; cz: "dh.cz"; da: "dh.da"; db: "dh.db"; dc: "dh.dc"; dd: "dh.dd"; de: "dh.de"; df: "dh.df"; dg: "dh.dg"; dh: "dh.dh"; di: "dh.di"; dj: "dh.dj"; dk: "dh.dk"; dl: "dh.dl"; dm: "dh.dm"; dn: "dh.dn"; do: "dh.do"; dp: "dh.dp"; dq: "dh.dq"; dr: "dh.dr"; ds: "dh.ds"; dt: "dh.dt"; du: "dh.du"; dv: "dh.dv"; dw: "dh.dw"; dx: "dh.dx"; dy: "dh.dy"; dz: "dh.dz"; ea: "dh.ea"; eb: "dh.eb"; ec: "dh.ec"; ed: "dh.ed"; ee: "dh.ee"; ef: "dh.ef"; eg: "dh.eg"; eh: "dh.eh"; ei: "dh.ei"; ej: "dh.ej"; ek: "dh.ek"; el: "dh.el"; em: "dh.em"; en: "dh.en"; eo: "dh.eo"; ep: "dh.ep"; eq: "dh.eq"; er: "dh.er"; es: "dh.es"; et: "dh.et"; eu: "dh.eu"; ev: "dh.ev"; ew: "dh.ew"; ex: "dh.ex"; ey: "dh.ey"; ez: "dh.ez"; fa: "dh.fa"; fb: "dh.fb"; fc: "dh.fc"; fd: "dh.fd"; fe: "dh.fe"; ff: "dh.ff"; fg: "dh.fg"; fh: "dh.fh"; fi: "dh.fi"; fj: "dh.fj"; fk: "dh.fk"; fl: "dh.fl"; fm: "dh.fm"; fn: "dh.fn"; fo: "dh.fo"; fp: "dh.fp"; fq: "dh.fq"; fr: "dh.fr"; fs: "dh.fs"; ft: "dh.ft"; fu: "dh.fu"; fv: "dh.fv"; fw: "dh.fw"; fx: "dh.fx"; fy: "dh.fy"; fz: "dh.fz"; ga: "dh.ga"; gb: "dh.gb"; gc: "dh.gc"; gd: "dh.gd"; ge: "dh.ge"; gf: "dh.gf"; gg: "dh.gg"; gh: "dh.gh"; gi: "dh.gi"; gj: "dh.gj"; gk: "dh.gk"; gl: "dh.gl"; gm: "dh.gm"; gn: "dh.gn"; go: "dh.go"; gp: "dh.gp"; gq: "dh.gq"; gr: "dh.gr"; gs: "dh.gs"; gt: "dh.gt"; gu: "dh.gu"; gv: "dh.gv"; gw: "dh.gw"; gx: "dh.gx"; gy: "dh.gy"; gz: "dh.gz"; ha: "dh.ha"; hb: "dh.hb"; hc: "dh.hc"; hd: "dh.hd"; he: "dh.he"; hf: "dh.hf"; hg: "dh.hg"; hh: "dh.hh"; hi: "dh.hi"; hj: "dh.hj"; hk: "dh.hk"; hl: "dh.hl"; hm: "dh.hm"; hn: "dh.hn"; ho: "dh.ho"; hp: "dh.hp"; hq: "dh.hq"; hr: "dh.hr"; hs: "dh.hs"; ht: "dh.ht"; hu: "dh.hu"; hv: "dh.hv"; hw: "dh.hw"; hx: "dh.hx"; hy: "dh.hy"; hz: "dh.hz"; ia: "dh.ia"; ib: "dh.ib"; ic: "dh.ic"; id: "dh.id"; ie: "dh.ie"; if: "dh.if"; ig: "dh.ig"; ih: "dh.ih"; ii: "dh.ii"; ij: "dh.ij"; ik: "dh.ik"; il: "dh.il"; im: "dh.im"; in: "dh.in"; io: "dh.io"; ip: "dh.ip"; iq: "dh.iq"; ir: "dh.ir"; is: "dh.is"; it: "dh.it"; iu: "dh.iu"; iv: "dh.iv"; iw: "dh.iw"; ix: "dh.ix"; iy: "dh.iy"; iz: "dh.iz"; ja: "dh.ja"; jb: "dh.jb"; jc: "dh.jc"; jd: "dh.jd"; je: "dh.je"; jf: "dh.jf"; jg: "dh.jg"; jh: "dh.jh"; ji: "dh.ji"; jj: "dh.jj"; jk: "dh.jk"; jl: "dh.jl"; jm: "dh.jm"; jn: "dh.jn"; jo: "dh.jo"; jp: "dh.jp"; jq: "dh.jq"; jr: "dh.jr"; js: "dh.js"; jt: "dh.jt"; ju: "dh.ju"; jv: "dh.jv"; jw: "dh.jw"; jx: "dh.jx"; jy: "dh.jy"; jz: "dh.jz"; ka: "dh.ka"; kb: "dh.kb"; kc: "dh.kc"; kd: "dh.kd"; ke: "dh.ke"; kf: "dh.kf"; kg: "dh.kg"; kh: "dh.kh"; ki: "dh.ki"; kj: "dh.kj"; kk: "dh.kk"; kl: "dh.kl"; km: "dh.km"; kn: "dh.kn"; ko: "dh.ko"; kp: "dh.kp"; kq: "dh.kq"; kr: "dh.kr"; ks: "dh.ks"; kt: "dh.kt"; ku: "dh.ku"; kv: "dh.kv"; kw: "dh.kw"; kx: "dh.kx"; ky: "dh.ky"; kz: "dh.kz"; la: "dh.la"; lb: "dh.lb"; lc: "dh.lc"; ld: "dh.ld"; le: "dh.le"; lf: "dh.lf"; lg: "dh.lg"; lh: "dh.lh"; li: "dh.li"; lj: "dh.lj"; lk: "dh.lk"; ll: "dh.ll"; lm: "dh.lm"; ln: "dh.ln"; lo: "dh.lo"; lp: "dh.lp"; lq: "dh.lq"; lr: "dh.lr"; ls: "dh.ls"; lt: "dh.lt"; lu: "dh.lu"; lv: "dh.lv"; lw: "dh.lw"; lx: "dh.lx"; ly: "dh.ly"; lz: "dh.lz"; ma: "dh.ma"; mb: "dh.mb"; mc: "dh.mc"; md: "dh.md"; me: "dh.me"; mf: "dh.mf"; mg: "dh.mg"; mh: "dh.mh"; mi: "dh.mi"; mj: "dh.mj"; mk: "dh.mk"; ml: "dh.ml"; mm: "dh.mm"; mn: "dh.mn"; mo: "dh.mo"; mp: "dh.mp"; mq: "dh.mq"; mr: "dh.mr"; ms: "dh.ms"; mt: "dh.mt"; mu: "dh.mu"; mv: "dh.mv"; mw: "dh.mw"; mx: "dh.mx"; my: "dh.my"; mz: "dh.mz"; na: "dh.na"; nb: "dh.nb"; nc: "dh.nc"; nd: "dh.nd"; ne: "dh.ne"; nf: "dh.nf"; ng: "dh.ng"; nh: "dh.nh"; ni: "dh.ni"; nj: "dh.nj"; nk: "dh.nk"; nl: "dh.nl"; nm: "dh.nm"; nn: "dh.nn"; no: "dh.no"; np: "dh.np"; nq: "dh.nq"; nr: "dh.nr"; ns: "dh.ns"; nt: "dh.nt"; nu: "dh.nu"; nv: "dh.nv"; nw: "dh.nw"; nx: "dh.nx"; ny: "dh.ny"; nz: "dh.nz"; oa: "dh.oa"; ob: "dh.ob"; oc: "dh.oc"; od: "dh.od"; oe: "dh.oe"; of: "dh.of"; og: "dh.og"; oh: "dh.oh"; oi: "dh.oi"; oj: "dh.oj"; ok: "dh.ok"; ol: "dh.ol"; om: "dh.om"; on: "dh.on"; oo: "dh.oo"; op: "dh.op"; oq: "dh.oq"; or: "dh.or"; os: "dh.os"; ot: "dh.ot"; ou: "dh.ou"; ov: "dh.ov"; ow: "dh.ow"; ox: "dh.ox"; oy: "dh.oy"; oz: "dh.oz"; pa: "dh.pa"; pb: "dh.pb"; pc: "dh.pc"; pd: "dh.pd"; pe: "dh.pe"; pf: "dh.pf"; pg: "dh.pg"; ph: "dh.ph"; pi: "dh.pi"; pj: "dh.pj"; pk: "dh.pk"; pl: "dh.pl"; pm: "dh.pm"; pn: "dh.pn"; po: "dh.po"; pp: "dh.pp"; pq: "dh.pq"; pr: "dh.pr"; ps: "dh.ps"; pt: "dh.pt"; pu: "dh.pu"; pv: "dh.pv"; pw: "dh.pw"; px: "dh.px"; py: "dh.py"; pz: "dh.pz"; qa: "dh.qa"; qb: "dh.qb"; qc: "dh.qc"; qd: "dh.qd"; qe: "dh.qe"; qf: "dh.qf"; qg: "dh.qg"; qh: "dh.qh"; qi: "dh.qi"; qj: "dh.qj"; qk: "dh.qk"; ql: "dh.ql"; qm: "dh.qm"; qn: "dh.qn"; qo: "dh.qo"; qp: "dh.qp"; qq: "dh.qq"; qr: "dh.qr"; qs: "dh.qs"; qt: "dh.qt"; qu: "dh.qu"; qv: "dh.qv"; qw: "dh.qw"; qx: "dh.qx"; qy: "dh.qy"; qz: "dh.qz"; ra: "dh.ra"; rb: "dh.rb"; rc: "dh.rc"; rd: "dh.rd"; re: "dh.re"; rf: "dh.rf"; rg: "dh.rg"; rh: "dh.rh"; ri: "dh.ri"; rj: "dh.rj"; rk: "dh.rk"; rl: "dh.rl"; rm: "dh.rm"; rn: "dh.rn"; ro: "dh.ro"; rp: "dh.rp"; rq: "dh.rq"; rr: "dh.rr"; rs: "dh.rs"; rt: "dh.rt"; ru: "dh.ru"; rv: "dh.rv"; rw: "dh.rw"; rx: "dh.rx"; ry: "dh.ry"; rz: "dh.rz"; sa: "dh.sa"; sb: "dh.sb"; sc: "dh.sc"; sd: "dh.sd"; se: "dh.se"; sf: "dh.sf"; sg: "dh.sg"; sh: "dh.sh"; si: "dh.si"; sj: "dh.sj"; sk: "dh.sk"; sl: "dh.sl"; sm: "dh.sm"; sn: "dh.sn"; so: "dh.so"; sp: "dh.sp"; sq: "dh.sq"; sr: "dh.sr"; ss: "dh.ss"; st: "dh.st"; su: "dh.su"; sv: "dh.sv"; sw: "dh.sw"; sx: "dh.sx"; sy: "dh.sy"; sz: "dh.sz"; ta: "dh.ta"; tb: "dh.tb"; tc: "dh.tc"; td: "dh.td"; te: "dh.te"; tf: "dh.tf"; tg: "dh.tg"; th: "dh.th"; ti: "dh.ti"; tj: "dh.tj"; tk: "dh.tk"; tl: "dh.tl"; tm: "dh.tm"; tn: "dh.tn"; to: "dh.to"; tp: "dh.tp"; tq: "dh.tq"; tr: "dh.tr"; ts: "dh.ts"; tt: "dh.tt"; tu: "dh.tu"; tv: "dh.tv"; tw: "dh.tw"; tx: "dh.tx"; ty: "dh.ty"; tz: "dh.tz"; ua: "dh.ua"; ub: "dh.ub"; uc: "dh.uc"; ud: "dh.ud"; ue: "dh.ue"; uf: "dh.uf"; ug: "dh.ug"; uh: "dh.uh"; ui: "dh.ui"; uj: "dh.uj"; uk: "dh.uk"; ul: "dh.ul"; um: "dh.um"; un: "dh.un"; uo: "dh.uo"; up: "dh.up"; uq: "dh.uq"; ur: "dh.ur"; us: "dh.us"; ut: "dh.ut"; uu: "dh.uu"; uv: "dh.uv"; uw: "dh.uw"; ux: "dh.ux"; uy: "dh.uy"; uz: "dh.uz"; va: "dh.va"; vb: "dh.vb"; vc: "dh.vc"; vd: "dh.vd"; ve: "dh.ve"; vf: "dh.vf"; vg: "dh.vg"; vh: "dh.vh"; vi: "dh.vi"; vj: "dh.vj"; vk: "dh.vk"; vl: "dh.vl"; vm: "dh.vm"; vn: "dh.vn"; vo: "dh.vo"; vp: "dh.vp"; vq: "dh.vq"; vr: "dh.vr"; vs: "dh.vs"; vt: "dh.vt"; vu: "dh.vu"; vv: "dh.vv"; vw: "dh.vw"; vx: "dh.vx"; vy: "dh.vy"; vz: "dh.vz"; wa: "dh.wa"; wb: "dh.wb"; wc: "dh.wc"; wd: "dh.wd"; we: "dh.we"; wf: "dh.wf"; wg: "dh.wg"; wh: "dh.wh"; wi: "dh.wi"; wj: "dh.wj"; wk: "dh.wk"; wl: "dh.wl"; wm: "dh.wm"; wn: "dh.wn"; wo: "dh.wo"; wp: "dh.wp"; wq: "dh.wq"; wr: "dh.wr"; ws: "dh.ws"; wt: "dh.wt"; wu: "dh.wu"; wv: "dh.wv"; ww: "dh.ww"; wx: "dh.wx"; wy: "dh.wy"; wz: "dh.wz"; xa: "dh.xa"; xb: "dh.xb"; xc: "dh.xc"; xd: "dh.xd"; xe: "dh.xe"; xf: "dh.xf"; xg: "dh.xg"; xh: "dh.xh"; xi: "dh.xi"; xj: "dh.xj"; xk: "dh.xk"; xl: "dh.xl"; xm: "dh.xm"; xn: "dh.xn"; xo: "dh.xo"; xp: "dh.xp"; xq: "dh.xq"; xr: "dh.xr"; xs: "dh.xs"; xt: "dh.xt"; xu: "dh.xu"; xv: "dh.xv"; xw: "dh.xw"; xx: "dh.xx"; xy: "dh.xy"; xz: "dh.xz"; ya: "dh.ya"; yb: "dh.yb"; yc: "dh.yc"; yd: "dh.yd"; ye: "dh.ye"; yf: "dh.yf"; yg: "dh.yg"; yh: "dh.yh"; yi: "dh.yi"; yj: "dh.yj"; yk: "dh.yk"; yl: "dh.yl"; ym: "dh.ym"; yn: "dh.yn"; yo: "dh.yo"; yp: "dh.yp"; yq: "dh.yq"; yr: "dh.yr"; ys: "dh.ys"; yt: "dh.yt"; yu: "dh.yu"; yv: "dh.yv"; yw: "dh.yw"; yx: "dh.yx"; yy: "dh.yy"; yz: "dh.yz"; za: "dh.za"; zb: "dh.zb"; zc: "dh.zc"; zd: "dh.zd"; ze: "dh.ze"; zf: "dh.zf"; zg: "dh.zg"; zh: "dh.zh"; zi: "dh.zi"; zj: "dh.zj"; zk: "dh.zk"; zl: "dh.zl"; zm: "dh.zm"; zn: "dh.zn"; zo: "dh.zo"; zp: "dh.zp"; zq: "dh.zq"; zr: "dh.zr"; zs: "dh.zs"; zt: "dh.zt"; zu: "dh.zu"; zv: "dh.zv"; zw: "dh.zw"; zx: "dh.zx"; zy: "dh.zy"; zz: "dh.zz"; }; di: { aa: "di.aa"; ab: "di.ab"; ac: "di.ac"; ad: "di.ad"; ae: "di.ae"; af: "di.af"; ag: "di.ag"; ah: "di.ah"; ai: "di.ai"; aj: "di.aj"; ak: "di.ak"; al: "di.al"; am: "di.am"; an: "di.an"; ao: "di.ao"; ap: "di.ap"; aq: "di.aq"; ar: "di.ar"; as: "di.as"; at: "di.at"; au: "di.au"; av: "di.av"; aw: "di.aw"; ax: "di.ax"; ay: "di.ay"; az: "di.az"; ba: "di.ba"; bb: "di.bb"; bc: "di.bc"; bd: "di.bd"; be: "di.be"; bf: "di.bf"; bg: "di.bg"; bh: "di.bh"; bi: "di.bi"; bj: "di.bj"; bk: "di.bk"; bl: "di.bl"; bm: "di.bm"; bn: "di.bn"; bo: "di.bo"; bp: "di.bp"; bq: "di.bq"; br: "di.br"; bs: "di.bs"; bt: "di.bt"; bu: "di.bu"; bv: "di.bv"; bw: "di.bw"; bx: "di.bx"; by: "di.by"; bz: "di.bz"; ca: "di.ca"; cb: "di.cb"; cc: "di.cc"; cd: "di.cd"; ce: "di.ce"; cf: "di.cf"; cg: "di.cg"; ch: "di.ch"; ci: "di.ci"; cj: "di.cj"; ck: "di.ck"; cl: "di.cl"; cm: "di.cm"; cn: "di.cn"; co: "di.co"; cp: "di.cp"; cq: "di.cq"; cr: "di.cr"; cs: "di.cs"; ct: "di.ct"; cu: "di.cu"; cv: "di.cv"; cw: "di.cw"; cx: "di.cx"; cy: "di.cy"; cz: "di.cz"; da: "di.da"; db: "di.db"; dc: "di.dc"; dd: "di.dd"; de: "di.de"; df: "di.df"; dg: "di.dg"; dh: "di.dh"; di: "di.di"; dj: "di.dj"; dk: "di.dk"; dl: "di.dl"; dm: "di.dm"; dn: "di.dn"; do: "di.do"; dp: "di.dp"; dq: "di.dq"; dr: "di.dr"; ds: "di.ds"; dt: "di.dt"; du: "di.du"; dv: "di.dv"; dw: "di.dw"; dx: "di.dx"; dy: "di.dy"; dz: "di.dz"; ea: "di.ea"; eb: "di.eb"; ec: "di.ec"; ed: "di.ed"; ee: "di.ee"; ef: "di.ef"; eg: "di.eg"; eh: "di.eh"; ei: "di.ei"; ej: "di.ej"; ek: "di.ek"; el: "di.el"; em: "di.em"; en: "di.en"; eo: "di.eo"; ep: "di.ep"; eq: "di.eq"; er: "di.er"; es: "di.es"; et: "di.et"; eu: "di.eu"; ev: "di.ev"; ew: "di.ew"; ex: "di.ex"; ey: "di.ey"; ez: "di.ez"; fa: "di.fa"; fb: "di.fb"; fc: "di.fc"; fd: "di.fd"; fe: "di.fe"; ff: "di.ff"; fg: "di.fg"; fh: "di.fh"; fi: "di.fi"; fj: "di.fj"; fk: "di.fk"; fl: "di.fl"; fm: "di.fm"; fn: "di.fn"; fo: "di.fo"; fp: "di.fp"; fq: "di.fq"; fr: "di.fr"; fs: "di.fs"; ft: "di.ft"; fu: "di.fu"; fv: "di.fv"; fw: "di.fw"; fx: "di.fx"; fy: "di.fy"; fz: "di.fz"; ga: "di.ga"; gb: "di.gb"; gc: "di.gc"; gd: "di.gd"; ge: "di.ge"; gf: "di.gf"; gg: "di.gg"; gh: "di.gh"; gi: "di.gi"; gj: "di.gj"; gk: "di.gk"; gl: "di.gl"; gm: "di.gm"; gn: "di.gn"; go: "di.go"; gp: "di.gp"; gq: "di.gq"; gr: "di.gr"; gs: "di.gs"; gt: "di.gt"; gu: "di.gu"; gv: "di.gv"; gw: "di.gw"; gx: "di.gx"; gy: "di.gy"; gz: "di.gz"; ha: "di.ha"; hb: "di.hb"; hc: "di.hc"; hd: "di.hd"; he: "di.he"; hf: "di.hf"; hg: "di.hg"; hh: "di.hh"; hi: "di.hi"; hj: "di.hj"; hk: "di.hk"; hl: "di.hl"; hm: "di.hm"; hn: "di.hn"; ho: "di.ho"; hp: "di.hp"; hq: "di.hq"; hr: "di.hr"; hs: "di.hs"; ht: "di.ht"; hu: "di.hu"; hv: "di.hv"; hw: "di.hw"; hx: "di.hx"; hy: "di.hy"; hz: "di.hz"; ia: "di.ia"; ib: "di.ib"; ic: "di.ic"; id: "di.id"; ie: "di.ie"; if: "di.if"; ig: "di.ig"; ih: "di.ih"; ii: "di.ii"; ij: "di.ij"; ik: "di.ik"; il: "di.il"; im: "di.im"; in: "di.in"; io: "di.io"; ip: "di.ip"; iq: "di.iq"; ir: "di.ir"; is: "di.is"; it: "di.it"; iu: "di.iu"; iv: "di.iv"; iw: "di.iw"; ix: "di.ix"; iy: "di.iy"; iz: "di.iz"; ja: "di.ja"; jb: "di.jb"; jc: "di.jc"; jd: "di.jd"; je: "di.je"; jf: "di.jf"; jg: "di.jg"; jh: "di.jh"; ji: "di.ji"; jj: "di.jj"; jk: "di.jk"; jl: "di.jl"; jm: "di.jm"; jn: "di.jn"; jo: "di.jo"; jp: "di.jp"; jq: "di.jq"; jr: "di.jr"; js: "di.js"; jt: "di.jt"; ju: "di.ju"; jv: "di.jv"; jw: "di.jw"; jx: "di.jx"; jy: "di.jy"; jz: "di.jz"; ka: "di.ka"; kb: "di.kb"; kc: "di.kc"; kd: "di.kd"; ke: "di.ke"; kf: "di.kf"; kg: "di.kg"; kh: "di.kh"; ki: "di.ki"; kj: "di.kj"; kk: "di.kk"; kl: "di.kl"; km: "di.km"; kn: "di.kn"; ko: "di.ko"; kp: "di.kp"; kq: "di.kq"; kr: "di.kr"; ks: "di.ks"; kt: "di.kt"; ku: "di.ku"; kv: "di.kv"; kw: "di.kw"; kx: "di.kx"; ky: "di.ky"; kz: "di.kz"; la: "di.la"; lb: "di.lb"; lc: "di.lc"; ld: "di.ld"; le: "di.le"; lf: "di.lf"; lg: "di.lg"; lh: "di.lh"; li: "di.li"; lj: "di.lj"; lk: "di.lk"; ll: "di.ll"; lm: "di.lm"; ln: "di.ln"; lo: "di.lo"; lp: "di.lp"; lq: "di.lq"; lr: "di.lr"; ls: "di.ls"; lt: "di.lt"; lu: "di.lu"; lv: "di.lv"; lw: "di.lw"; lx: "di.lx"; ly: "di.ly"; lz: "di.lz"; ma: "di.ma"; mb: "di.mb"; mc: "di.mc"; md: "di.md"; me: "di.me"; mf: "di.mf"; mg: "di.mg"; mh: "di.mh"; mi: "di.mi"; mj: "di.mj"; mk: "di.mk"; ml: "di.ml"; mm: "di.mm"; mn: "di.mn"; mo: "di.mo"; mp: "di.mp"; mq: "di.mq"; mr: "di.mr"; ms: "di.ms"; mt: "di.mt"; mu: "di.mu"; mv: "di.mv"; mw: "di.mw"; mx: "di.mx"; my: "di.my"; mz: "di.mz"; na: "di.na"; nb: "di.nb"; nc: "di.nc"; nd: "di.nd"; ne: "di.ne"; nf: "di.nf"; ng: "di.ng"; nh: "di.nh"; ni: "di.ni"; nj: "di.nj"; nk: "di.nk"; nl: "di.nl"; nm: "di.nm"; nn: "di.nn"; no: "di.no"; np: "di.np"; nq: "di.nq"; nr: "di.nr"; ns: "di.ns"; nt: "di.nt"; nu: "di.nu"; nv: "di.nv"; nw: "di.nw"; nx: "di.nx"; ny: "di.ny"; nz: "di.nz"; oa: "di.oa"; ob: "di.ob"; oc: "di.oc"; od: "di.od"; oe: "di.oe"; of: "di.of"; og: "di.og"; oh: "di.oh"; oi: "di.oi"; oj: "di.oj"; ok: "di.ok"; ol: "di.ol"; om: "di.om"; on: "di.on"; oo: "di.oo"; op: "di.op"; oq: "di.oq"; or: "di.or"; os: "di.os"; ot: "di.ot"; ou: "di.ou"; ov: "di.ov"; ow: "di.ow"; ox: "di.ox"; oy: "di.oy"; oz: "di.oz"; pa: "di.pa"; pb: "di.pb"; pc: "di.pc"; pd: "di.pd"; pe: "di.pe"; pf: "di.pf"; pg: "di.pg"; ph: "di.ph"; pi: "di.pi"; pj: "di.pj"; pk: "di.pk"; pl: "di.pl"; pm: "di.pm"; pn: "di.pn"; po: "di.po"; pp: "di.pp"; pq: "di.pq"; pr: "di.pr"; ps: "di.ps"; pt: "di.pt"; pu: "di.pu"; pv: "di.pv"; pw: "di.pw"; px: "di.px"; py: "di.py"; pz: "di.pz"; qa: "di.qa"; qb: "di.qb"; qc: "di.qc"; qd: "di.qd"; qe: "di.qe"; qf: "di.qf"; qg: "di.qg"; qh: "di.qh"; qi: "di.qi"; qj: "di.qj"; qk: "di.qk"; ql: "di.ql"; qm: "di.qm"; qn: "di.qn"; qo: "di.qo"; qp: "di.qp"; qq: "di.qq"; qr: "di.qr"; qs: "di.qs"; qt: "di.qt"; qu: "di.qu"; qv: "di.qv"; qw: "di.qw"; qx: "di.qx"; qy: "di.qy"; qz: "di.qz"; ra: "di.ra"; rb: "di.rb"; rc: "di.rc"; rd: "di.rd"; re: "di.re"; rf: "di.rf"; rg: "di.rg"; rh: "di.rh"; ri: "di.ri"; rj: "di.rj"; rk: "di.rk"; rl: "di.rl"; rm: "di.rm"; rn: "di.rn"; ro: "di.ro"; rp: "di.rp"; rq: "di.rq"; rr: "di.rr"; rs: "di.rs"; rt: "di.rt"; ru: "di.ru"; rv: "di.rv"; rw: "di.rw"; rx: "di.rx"; ry: "di.ry"; rz: "di.rz"; sa: "di.sa"; sb: "di.sb"; sc: "di.sc"; sd: "di.sd"; se: "di.se"; sf: "di.sf"; sg: "di.sg"; sh: "di.sh"; si: "di.si"; sj: "di.sj"; sk: "di.sk"; sl: "di.sl"; sm: "di.sm"; sn: "di.sn"; so: "di.so"; sp: "di.sp"; sq: "di.sq"; sr: "di.sr"; ss: "di.ss"; st: "di.st"; su: "di.su"; sv: "di.sv"; sw: "di.sw"; sx: "di.sx"; sy: "di.sy"; sz: "di.sz"; ta: "di.ta"; tb: "di.tb"; tc: "di.tc"; td: "di.td"; te: "di.te"; tf: "di.tf"; tg: "di.tg"; th: "di.th"; ti: "di.ti"; tj: "di.tj"; tk: "di.tk"; tl: "di.tl"; tm: "di.tm"; tn: "di.tn"; to: "di.to"; tp: "di.tp"; tq: "di.tq"; tr: "di.tr"; ts: "di.ts"; tt: "di.tt"; tu: "di.tu"; tv: "di.tv"; tw: "di.tw"; tx: "di.tx"; ty: "di.ty"; tz: "di.tz"; ua: "di.ua"; ub: "di.ub"; uc: "di.uc"; ud: "di.ud"; ue: "di.ue"; uf: "di.uf"; ug: "di.ug"; uh: "di.uh"; ui: "di.ui"; uj: "di.uj"; uk: "di.uk"; ul: "di.ul"; um: "di.um"; un: "di.un"; uo: "di.uo"; up: "di.up"; uq: "di.uq"; ur: "di.ur"; us: "di.us"; ut: "di.ut"; uu: "di.uu"; uv: "di.uv"; uw: "di.uw"; ux: "di.ux"; uy: "di.uy"; uz: "di.uz"; va: "di.va"; vb: "di.vb"; vc: "di.vc"; vd: "di.vd"; ve: "di.ve"; vf: "di.vf"; vg: "di.vg"; vh: "di.vh"; vi: "di.vi"; vj: "di.vj"; vk: "di.vk"; vl: "di.vl"; vm: "di.vm"; vn: "di.vn"; vo: "di.vo"; vp: "di.vp"; vq: "di.vq"; vr: "di.vr"; vs: "di.vs"; vt: "di.vt"; vu: "di.vu"; vv: "di.vv"; vw: "di.vw"; vx: "di.vx"; vy: "di.vy"; vz: "di.vz"; wa: "di.wa"; wb: "di.wb"; wc: "di.wc"; wd: "di.wd"; we: "di.we"; wf: "di.wf"; wg: "di.wg"; wh: "di.wh"; wi: "di.wi"; wj: "di.wj"; wk: "di.wk"; wl: "di.wl"; wm: "di.wm"; wn: "di.wn"; wo: "di.wo"; wp: "di.wp"; wq: "di.wq"; wr: "di.wr"; ws: "di.ws"; wt: "di.wt"; wu: "di.wu"; wv: "di.wv"; ww: "di.ww"; wx: "di.wx"; wy: "di.wy"; wz: "di.wz"; xa: "di.xa"; xb: "di.xb"; xc: "di.xc"; xd: "di.xd"; xe: "di.xe"; xf: "di.xf"; xg: "di.xg"; xh: "di.xh"; xi: "di.xi"; xj: "di.xj"; xk: "di.xk"; xl: "di.xl"; xm: "di.xm"; xn: "di.xn"; xo: "di.xo"; xp: "di.xp"; xq: "di.xq"; xr: "di.xr"; xs: "di.xs"; xt: "di.xt"; xu: "di.xu"; xv: "di.xv"; xw: "di.xw"; xx: "di.xx"; xy: "di.xy"; xz: "di.xz"; ya: "di.ya"; yb: "di.yb"; yc: "di.yc"; yd: "di.yd"; ye: "di.ye"; yf: "di.yf"; yg: "di.yg"; yh: "di.yh"; yi: "di.yi"; yj: "di.yj"; yk: "di.yk"; yl: "di.yl"; ym: "di.ym"; yn: "di.yn"; yo: "di.yo"; yp: "di.yp"; yq: "di.yq"; yr: "di.yr"; ys: "di.ys"; yt: "di.yt"; yu: "di.yu"; yv: "di.yv"; yw: "di.yw"; yx: "di.yx"; yy: "di.yy"; yz: "di.yz"; za: "di.za"; zb: "di.zb"; zc: "di.zc"; zd: "di.zd"; ze: "di.ze"; zf: "di.zf"; zg: "di.zg"; zh: "di.zh"; zi: "di.zi"; zj: "di.zj"; zk: "di.zk"; zl: "di.zl"; zm: "di.zm"; zn: "di.zn"; zo: "di.zo"; zp: "di.zp"; zq: "di.zq"; zr: "di.zr"; zs: "di.zs"; zt: "di.zt"; zu: "di.zu"; zv: "di.zv"; zw: "di.zw"; zx: "di.zx"; zy: "di.zy"; zz: "di.zz"; }; dj: { aa: "dj.aa"; ab: "dj.ab"; ac: "dj.ac"; ad: "dj.ad"; ae: "dj.ae"; af: "dj.af"; ag: "dj.ag"; ah: "dj.ah"; ai: "dj.ai"; aj: "dj.aj"; ak: "dj.ak"; al: "dj.al"; am: "dj.am"; an: "dj.an"; ao: "dj.ao"; ap: "dj.ap"; aq: "dj.aq"; ar: "dj.ar"; as: "dj.as"; at: "dj.at"; au: "dj.au"; av: "dj.av"; aw: "dj.aw"; ax: "dj.ax"; ay: "dj.ay"; az: "dj.az"; ba: "dj.ba"; bb: "dj.bb"; bc: "dj.bc"; bd: "dj.bd"; be: "dj.be"; bf: "dj.bf"; bg: "dj.bg"; bh: "dj.bh"; bi: "dj.bi"; bj: "dj.bj"; bk: "dj.bk"; bl: "dj.bl"; bm: "dj.bm"; bn: "dj.bn"; bo: "dj.bo"; bp: "dj.bp"; bq: "dj.bq"; br: "dj.br"; bs: "dj.bs"; bt: "dj.bt"; bu: "dj.bu"; bv: "dj.bv"; bw: "dj.bw"; bx: "dj.bx"; by: "dj.by"; bz: "dj.bz"; ca: "dj.ca"; cb: "dj.cb"; cc: "dj.cc"; cd: "dj.cd"; ce: "dj.ce"; cf: "dj.cf"; cg: "dj.cg"; ch: "dj.ch"; ci: "dj.ci"; cj: "dj.cj"; ck: "dj.ck"; cl: "dj.cl"; cm: "dj.cm"; cn: "dj.cn"; co: "dj.co"; cp: "dj.cp"; cq: "dj.cq"; cr: "dj.cr"; cs: "dj.cs"; ct: "dj.ct"; cu: "dj.cu"; cv: "dj.cv"; cw: "dj.cw"; cx: "dj.cx"; cy: "dj.cy"; cz: "dj.cz"; da: "dj.da"; db: "dj.db"; dc: "dj.dc"; dd: "dj.dd"; de: "dj.de"; df: "dj.df"; dg: "dj.dg"; dh: "dj.dh"; di: "dj.di"; dj: "dj.dj"; dk: "dj.dk"; dl: "dj.dl"; dm: "dj.dm"; dn: "dj.dn"; do: "dj.do"; dp: "dj.dp"; dq: "dj.dq"; dr: "dj.dr"; ds: "dj.ds"; dt: "dj.dt"; du: "dj.du"; dv: "dj.dv"; dw: "dj.dw"; dx: "dj.dx"; dy: "dj.dy"; dz: "dj.dz"; ea: "dj.ea"; eb: "dj.eb"; ec: "dj.ec"; ed: "dj.ed"; ee: "dj.ee"; ef: "dj.ef"; eg: "dj.eg"; eh: "dj.eh"; ei: "dj.ei"; ej: "dj.ej"; ek: "dj.ek"; el: "dj.el"; em: "dj.em"; en: "dj.en"; eo: "dj.eo"; ep: "dj.ep"; eq: "dj.eq"; er: "dj.er"; es: "dj.es"; et: "dj.et"; eu: "dj.eu"; ev: "dj.ev"; ew: "dj.ew"; ex: "dj.ex"; ey: "dj.ey"; ez: "dj.ez"; fa: "dj.fa"; fb: "dj.fb"; fc: "dj.fc"; fd: "dj.fd"; fe: "dj.fe"; ff: "dj.ff"; fg: "dj.fg"; fh: "dj.fh"; fi: "dj.fi"; fj: "dj.fj"; fk: "dj.fk"; fl: "dj.fl"; fm: "dj.fm"; fn: "dj.fn"; fo: "dj.fo"; fp: "dj.fp"; fq: "dj.fq"; fr: "dj.fr"; fs: "dj.fs"; ft: "dj.ft"; fu: "dj.fu"; fv: "dj.fv"; fw: "dj.fw"; fx: "dj.fx"; fy: "dj.fy"; fz: "dj.fz"; ga: "dj.ga"; gb: "dj.gb"; gc: "dj.gc"; gd: "dj.gd"; ge: "dj.ge"; gf: "dj.gf"; gg: "dj.gg"; gh: "dj.gh"; gi: "dj.gi"; gj: "dj.gj"; gk: "dj.gk"; gl: "dj.gl"; gm: "dj.gm"; gn: "dj.gn"; go: "dj.go"; gp: "dj.gp"; gq: "dj.gq"; gr: "dj.gr"; gs: "dj.gs"; gt: "dj.gt"; gu: "dj.gu"; gv: "dj.gv"; gw: "dj.gw"; gx: "dj.gx"; gy: "dj.gy"; gz: "dj.gz"; ha: "dj.ha"; hb: "dj.hb"; hc: "dj.hc"; hd: "dj.hd"; he: "dj.he"; hf: "dj.hf"; hg: "dj.hg"; hh: "dj.hh"; hi: "dj.hi"; hj: "dj.hj"; hk: "dj.hk"; hl: "dj.hl"; hm: "dj.hm"; hn: "dj.hn"; ho: "dj.ho"; hp: "dj.hp"; hq: "dj.hq"; hr: "dj.hr"; hs: "dj.hs"; ht: "dj.ht"; hu: "dj.hu"; hv: "dj.hv"; hw: "dj.hw"; hx: "dj.hx"; hy: "dj.hy"; hz: "dj.hz"; ia: "dj.ia"; ib: "dj.ib"; ic: "dj.ic"; id: "dj.id"; ie: "dj.ie"; if: "dj.if"; ig: "dj.ig"; ih: "dj.ih"; ii: "dj.ii"; ij: "dj.ij"; ik: "dj.ik"; il: "dj.il"; im: "dj.im"; in: "dj.in"; io: "dj.io"; ip: "dj.ip"; iq: "dj.iq"; ir: "dj.ir"; is: "dj.is"; it: "dj.it"; iu: "dj.iu"; iv: "dj.iv"; iw: "dj.iw"; ix: "dj.ix"; iy: "dj.iy"; iz: "dj.iz"; ja: "dj.ja"; jb: "dj.jb"; jc: "dj.jc"; jd: "dj.jd"; je: "dj.je"; jf: "dj.jf"; jg: "dj.jg"; jh: "dj.jh"; ji: "dj.ji"; jj: "dj.jj"; jk: "dj.jk"; jl: "dj.jl"; jm: "dj.jm"; jn: "dj.jn"; jo: "dj.jo"; jp: "dj.jp"; jq: "dj.jq"; jr: "dj.jr"; js: "dj.js"; jt: "dj.jt"; ju: "dj.ju"; jv: "dj.jv"; jw: "dj.jw"; jx: "dj.jx"; jy: "dj.jy"; jz: "dj.jz"; ka: "dj.ka"; kb: "dj.kb"; kc: "dj.kc"; kd: "dj.kd"; ke: "dj.ke"; kf: "dj.kf"; kg: "dj.kg"; kh: "dj.kh"; ki: "dj.ki"; kj: "dj.kj"; kk: "dj.kk"; kl: "dj.kl"; km: "dj.km"; kn: "dj.kn"; ko: "dj.ko"; kp: "dj.kp"; kq: "dj.kq"; kr: "dj.kr"; ks: "dj.ks"; kt: "dj.kt"; ku: "dj.ku"; kv: "dj.kv"; kw: "dj.kw"; kx: "dj.kx"; ky: "dj.ky"; kz: "dj.kz"; la: "dj.la"; lb: "dj.lb"; lc: "dj.lc"; ld: "dj.ld"; le: "dj.le"; lf: "dj.lf"; lg: "dj.lg"; lh: "dj.lh"; li: "dj.li"; lj: "dj.lj"; lk: "dj.lk"; ll: "dj.ll"; lm: "dj.lm"; ln: "dj.ln"; lo: "dj.lo"; lp: "dj.lp"; lq: "dj.lq"; lr: "dj.lr"; ls: "dj.ls"; lt: "dj.lt"; lu: "dj.lu"; lv: "dj.lv"; lw: "dj.lw"; lx: "dj.lx"; ly: "dj.ly"; lz: "dj.lz"; ma: "dj.ma"; mb: "dj.mb"; mc: "dj.mc"; md: "dj.md"; me: "dj.me"; mf: "dj.mf"; mg: "dj.mg"; mh: "dj.mh"; mi: "dj.mi"; mj: "dj.mj"; mk: "dj.mk"; ml: "dj.ml"; mm: "dj.mm"; mn: "dj.mn"; mo: "dj.mo"; mp: "dj.mp"; mq: "dj.mq"; mr: "dj.mr"; ms: "dj.ms"; mt: "dj.mt"; mu: "dj.mu"; mv: "dj.mv"; mw: "dj.mw"; mx: "dj.mx"; my: "dj.my"; mz: "dj.mz"; na: "dj.na"; nb: "dj.nb"; nc: "dj.nc"; nd: "dj.nd"; ne: "dj.ne"; nf: "dj.nf"; ng: "dj.ng"; nh: "dj.nh"; ni: "dj.ni"; nj: "dj.nj"; nk: "dj.nk"; nl: "dj.nl"; nm: "dj.nm"; nn: "dj.nn"; no: "dj.no"; np: "dj.np"; nq: "dj.nq"; nr: "dj.nr"; ns: "dj.ns"; nt: "dj.nt"; nu: "dj.nu"; nv: "dj.nv"; nw: "dj.nw"; nx: "dj.nx"; ny: "dj.ny"; nz: "dj.nz"; oa: "dj.oa"; ob: "dj.ob"; oc: "dj.oc"; od: "dj.od"; oe: "dj.oe"; of: "dj.of"; og: "dj.og"; oh: "dj.oh"; oi: "dj.oi"; oj: "dj.oj"; ok: "dj.ok"; ol: "dj.ol"; om: "dj.om"; on: "dj.on"; oo: "dj.oo"; op: "dj.op"; oq: "dj.oq"; or: "dj.or"; os: "dj.os"; ot: "dj.ot"; ou: "dj.ou"; ov: "dj.ov"; ow: "dj.ow"; ox: "dj.ox"; oy: "dj.oy"; oz: "dj.oz"; pa: "dj.pa"; pb: "dj.pb"; pc: "dj.pc"; pd: "dj.pd"; pe: "dj.pe"; pf: "dj.pf"; pg: "dj.pg"; ph: "dj.ph"; pi: "dj.pi"; pj: "dj.pj"; pk: "dj.pk"; pl: "dj.pl"; pm: "dj.pm"; pn: "dj.pn"; po: "dj.po"; pp: "dj.pp"; pq: "dj.pq"; pr: "dj.pr"; ps: "dj.ps"; pt: "dj.pt"; pu: "dj.pu"; pv: "dj.pv"; pw: "dj.pw"; px: "dj.px"; py: "dj.py"; pz: "dj.pz"; qa: "dj.qa"; qb: "dj.qb"; qc: "dj.qc"; qd: "dj.qd"; qe: "dj.qe"; qf: "dj.qf"; qg: "dj.qg"; qh: "dj.qh"; qi: "dj.qi"; qj: "dj.qj"; qk: "dj.qk"; ql: "dj.ql"; qm: "dj.qm"; qn: "dj.qn"; qo: "dj.qo"; qp: "dj.qp"; qq: "dj.qq"; qr: "dj.qr"; qs: "dj.qs"; qt: "dj.qt"; qu: "dj.qu"; qv: "dj.qv"; qw: "dj.qw"; qx: "dj.qx"; qy: "dj.qy"; qz: "dj.qz"; ra: "dj.ra"; rb: "dj.rb"; rc: "dj.rc"; rd: "dj.rd"; re: "dj.re"; rf: "dj.rf"; rg: "dj.rg"; rh: "dj.rh"; ri: "dj.ri"; rj: "dj.rj"; rk: "dj.rk"; rl: "dj.rl"; rm: "dj.rm"; rn: "dj.rn"; ro: "dj.ro"; rp: "dj.rp"; rq: "dj.rq"; rr: "dj.rr"; rs: "dj.rs"; rt: "dj.rt"; ru: "dj.ru"; rv: "dj.rv"; rw: "dj.rw"; rx: "dj.rx"; ry: "dj.ry"; rz: "dj.rz"; sa: "dj.sa"; sb: "dj.sb"; sc: "dj.sc"; sd: "dj.sd"; se: "dj.se"; sf: "dj.sf"; sg: "dj.sg"; sh: "dj.sh"; si: "dj.si"; sj: "dj.sj"; sk: "dj.sk"; sl: "dj.sl"; sm: "dj.sm"; sn: "dj.sn"; so: "dj.so"; sp: "dj.sp"; sq: "dj.sq"; sr: "dj.sr"; ss: "dj.ss"; st: "dj.st"; su: "dj.su"; sv: "dj.sv"; sw: "dj.sw"; sx: "dj.sx"; sy: "dj.sy"; sz: "dj.sz"; ta: "dj.ta"; tb: "dj.tb"; tc: "dj.tc"; td: "dj.td"; te: "dj.te"; tf: "dj.tf"; tg: "dj.tg"; th: "dj.th"; ti: "dj.ti"; tj: "dj.tj"; tk: "dj.tk"; tl: "dj.tl"; tm: "dj.tm"; tn: "dj.tn"; to: "dj.to"; tp: "dj.tp"; tq: "dj.tq"; tr: "dj.tr"; ts: "dj.ts"; tt: "dj.tt"; tu: "dj.tu"; tv: "dj.tv"; tw: "dj.tw"; tx: "dj.tx"; ty: "dj.ty"; tz: "dj.tz"; ua: "dj.ua"; ub: "dj.ub"; uc: "dj.uc"; ud: "dj.ud"; ue: "dj.ue"; uf: "dj.uf"; ug: "dj.ug"; uh: "dj.uh"; ui: "dj.ui"; uj: "dj.uj"; uk: "dj.uk"; ul: "dj.ul"; um: "dj.um"; un: "dj.un"; uo: "dj.uo"; up: "dj.up"; uq: "dj.uq"; ur: "dj.ur"; us: "dj.us"; ut: "dj.ut"; uu: "dj.uu"; uv: "dj.uv"; uw: "dj.uw"; ux: "dj.ux"; uy: "dj.uy"; uz: "dj.uz"; va: "dj.va"; vb: "dj.vb"; vc: "dj.vc"; vd: "dj.vd"; ve: "dj.ve"; vf: "dj.vf"; vg: "dj.vg"; vh: "dj.vh"; vi: "dj.vi"; vj: "dj.vj"; vk: "dj.vk"; vl: "dj.vl"; vm: "dj.vm"; vn: "dj.vn"; vo: "dj.vo"; vp: "dj.vp"; vq: "dj.vq"; vr: "dj.vr"; vs: "dj.vs"; vt: "dj.vt"; vu: "dj.vu"; vv: "dj.vv"; vw: "dj.vw"; vx: "dj.vx"; vy: "dj.vy"; vz: "dj.vz"; wa: "dj.wa"; wb: "dj.wb"; wc: "dj.wc"; wd: "dj.wd"; we: "dj.we"; wf: "dj.wf"; wg: "dj.wg"; wh: "dj.wh"; wi: "dj.wi"; wj: "dj.wj"; wk: "dj.wk"; wl: "dj.wl"; wm: "dj.wm"; wn: "dj.wn"; wo: "dj.wo"; wp: "dj.wp"; wq: "dj.wq"; wr: "dj.wr"; ws: "dj.ws"; wt: "dj.wt"; wu: "dj.wu"; wv: "dj.wv"; ww: "dj.ww"; wx: "dj.wx"; wy: "dj.wy"; wz: "dj.wz"; xa: "dj.xa"; xb: "dj.xb"; xc: "dj.xc"; xd: "dj.xd"; xe: "dj.xe"; xf: "dj.xf"; xg: "dj.xg"; xh: "dj.xh"; xi: "dj.xi"; xj: "dj.xj"; xk: "dj.xk"; xl: "dj.xl"; xm: "dj.xm"; xn: "dj.xn"; xo: "dj.xo"; xp: "dj.xp"; xq: "dj.xq"; xr: "dj.xr"; xs: "dj.xs"; xt: "dj.xt"; xu: "dj.xu"; xv: "dj.xv"; xw: "dj.xw"; xx: "dj.xx"; xy: "dj.xy"; xz: "dj.xz"; ya: "dj.ya"; yb: "dj.yb"; yc: "dj.yc"; yd: "dj.yd"; ye: "dj.ye"; yf: "dj.yf"; yg: "dj.yg"; yh: "dj.yh"; yi: "dj.yi"; yj: "dj.yj"; yk: "dj.yk"; yl: "dj.yl"; ym: "dj.ym"; yn: "dj.yn"; yo: "dj.yo"; yp: "dj.yp"; yq: "dj.yq"; yr: "dj.yr"; ys: "dj.ys"; yt: "dj.yt"; yu: "dj.yu"; yv: "dj.yv"; yw: "dj.yw"; yx: "dj.yx"; yy: "dj.yy"; yz: "dj.yz"; za: "dj.za"; zb: "dj.zb"; zc: "dj.zc"; zd: "dj.zd"; ze: "dj.ze"; zf: "dj.zf"; zg: "dj.zg"; zh: "dj.zh"; zi: "dj.zi"; zj: "dj.zj"; zk: "dj.zk"; zl: "dj.zl"; zm: "dj.zm"; zn: "dj.zn"; zo: "dj.zo"; zp: "dj.zp"; zq: "dj.zq"; zr: "dj.zr"; zs: "dj.zs"; zt: "dj.zt"; zu: "dj.zu"; zv: "dj.zv"; zw: "dj.zw"; zx: "dj.zx"; zy: "dj.zy"; zz: "dj.zz"; }; dk: { aa: "dk.aa"; ab: "dk.ab"; ac: "dk.ac"; ad: "dk.ad"; ae: "dk.ae"; af: "dk.af"; ag: "dk.ag"; ah: "dk.ah"; ai: "dk.ai"; aj: "dk.aj"; ak: "dk.ak"; al: "dk.al"; am: "dk.am"; an: "dk.an"; ao: "dk.ao"; ap: "dk.ap"; aq: "dk.aq"; ar: "dk.ar"; as: "dk.as"; at: "dk.at"; au: "dk.au"; av: "dk.av"; aw: "dk.aw"; ax: "dk.ax"; ay: "dk.ay"; az: "dk.az"; ba: "dk.ba"; bb: "dk.bb"; bc: "dk.bc"; bd: "dk.bd"; be: "dk.be"; bf: "dk.bf"; bg: "dk.bg"; bh: "dk.bh"; bi: "dk.bi"; bj: "dk.bj"; bk: "dk.bk"; bl: "dk.bl"; bm: "dk.bm"; bn: "dk.bn"; bo: "dk.bo"; bp: "dk.bp"; bq: "dk.bq"; br: "dk.br"; bs: "dk.bs"; bt: "dk.bt"; bu: "dk.bu"; bv: "dk.bv"; bw: "dk.bw"; bx: "dk.bx"; by: "dk.by"; bz: "dk.bz"; ca: "dk.ca"; cb: "dk.cb"; cc: "dk.cc"; cd: "dk.cd"; ce: "dk.ce"; cf: "dk.cf"; cg: "dk.cg"; ch: "dk.ch"; ci: "dk.ci"; cj: "dk.cj"; ck: "dk.ck"; cl: "dk.cl"; cm: "dk.cm"; cn: "dk.cn"; co: "dk.co"; cp: "dk.cp"; cq: "dk.cq"; cr: "dk.cr"; cs: "dk.cs"; ct: "dk.ct"; cu: "dk.cu"; cv: "dk.cv"; cw: "dk.cw"; cx: "dk.cx"; cy: "dk.cy"; cz: "dk.cz"; da: "dk.da"; db: "dk.db"; dc: "dk.dc"; dd: "dk.dd"; de: "dk.de"; df: "dk.df"; dg: "dk.dg"; dh: "dk.dh"; di: "dk.di"; dj: "dk.dj"; dk: "dk.dk"; dl: "dk.dl"; dm: "dk.dm"; dn: "dk.dn"; do: "dk.do"; dp: "dk.dp"; dq: "dk.dq"; dr: "dk.dr"; ds: "dk.ds"; dt: "dk.dt"; du: "dk.du"; dv: "dk.dv"; dw: "dk.dw"; dx: "dk.dx"; dy: "dk.dy"; dz: "dk.dz"; ea: "dk.ea"; eb: "dk.eb"; ec: "dk.ec"; ed: "dk.ed"; ee: "dk.ee"; ef: "dk.ef"; eg: "dk.eg"; eh: "dk.eh"; ei: "dk.ei"; ej: "dk.ej"; ek: "dk.ek"; el: "dk.el"; em: "dk.em"; en: "dk.en"; eo: "dk.eo"; ep: "dk.ep"; eq: "dk.eq"; er: "dk.er"; es: "dk.es"; et: "dk.et"; eu: "dk.eu"; ev: "dk.ev"; ew: "dk.ew"; ex: "dk.ex"; ey: "dk.ey"; ez: "dk.ez"; fa: "dk.fa"; fb: "dk.fb"; fc: "dk.fc"; fd: "dk.fd"; fe: "dk.fe"; ff: "dk.ff"; fg: "dk.fg"; fh: "dk.fh"; fi: "dk.fi"; fj: "dk.fj"; fk: "dk.fk"; fl: "dk.fl"; fm: "dk.fm"; fn: "dk.fn"; fo: "dk.fo"; fp: "dk.fp"; fq: "dk.fq"; fr: "dk.fr"; fs: "dk.fs"; ft: "dk.ft"; fu: "dk.fu"; fv: "dk.fv"; fw: "dk.fw"; fx: "dk.fx"; fy: "dk.fy"; fz: "dk.fz"; ga: "dk.ga"; gb: "dk.gb"; gc: "dk.gc"; gd: "dk.gd"; ge: "dk.ge"; gf: "dk.gf"; gg: "dk.gg"; gh: "dk.gh"; gi: "dk.gi"; gj: "dk.gj"; gk: "dk.gk"; gl: "dk.gl"; gm: "dk.gm"; gn: "dk.gn"; go: "dk.go"; gp: "dk.gp"; gq: "dk.gq"; gr: "dk.gr"; gs: "dk.gs"; gt: "dk.gt"; gu: "dk.gu"; gv: "dk.gv"; gw: "dk.gw"; gx: "dk.gx"; gy: "dk.gy"; gz: "dk.gz"; ha: "dk.ha"; hb: "dk.hb"; hc: "dk.hc"; hd: "dk.hd"; he: "dk.he"; hf: "dk.hf"; hg: "dk.hg"; hh: "dk.hh"; hi: "dk.hi"; hj: "dk.hj"; hk: "dk.hk"; hl: "dk.hl"; hm: "dk.hm"; hn: "dk.hn"; ho: "dk.ho"; hp: "dk.hp"; hq: "dk.hq"; hr: "dk.hr"; hs: "dk.hs"; ht: "dk.ht"; hu: "dk.hu"; hv: "dk.hv"; hw: "dk.hw"; hx: "dk.hx"; hy: "dk.hy"; hz: "dk.hz"; ia: "dk.ia"; ib: "dk.ib"; ic: "dk.ic"; id: "dk.id"; ie: "dk.ie"; if: "dk.if"; ig: "dk.ig"; ih: "dk.ih"; ii: "dk.ii"; ij: "dk.ij"; ik: "dk.ik"; il: "dk.il"; im: "dk.im"; in: "dk.in"; io: "dk.io"; ip: "dk.ip"; iq: "dk.iq"; ir: "dk.ir"; is: "dk.is"; it: "dk.it"; iu: "dk.iu"; iv: "dk.iv"; iw: "dk.iw"; ix: "dk.ix"; iy: "dk.iy"; iz: "dk.iz"; ja: "dk.ja"; jb: "dk.jb"; jc: "dk.jc"; jd: "dk.jd"; je: "dk.je"; jf: "dk.jf"; jg: "dk.jg"; jh: "dk.jh"; ji: "dk.ji"; jj: "dk.jj"; jk: "dk.jk"; jl: "dk.jl"; jm: "dk.jm"; jn: "dk.jn"; jo: "dk.jo"; jp: "dk.jp"; jq: "dk.jq"; jr: "dk.jr"; js: "dk.js"; jt: "dk.jt"; ju: "dk.ju"; jv: "dk.jv"; jw: "dk.jw"; jx: "dk.jx"; jy: "dk.jy"; jz: "dk.jz"; ka: "dk.ka"; kb: "dk.kb"; kc: "dk.kc"; kd: "dk.kd"; ke: "dk.ke"; kf: "dk.kf"; kg: "dk.kg"; kh: "dk.kh"; ki: "dk.ki"; kj: "dk.kj"; kk: "dk.kk"; kl: "dk.kl"; km: "dk.km"; kn: "dk.kn"; ko: "dk.ko"; kp: "dk.kp"; kq: "dk.kq"; kr: "dk.kr"; ks: "dk.ks"; kt: "dk.kt"; ku: "dk.ku"; kv: "dk.kv"; kw: "dk.kw"; kx: "dk.kx"; ky: "dk.ky"; kz: "dk.kz"; la: "dk.la"; lb: "dk.lb"; lc: "dk.lc"; ld: "dk.ld"; le: "dk.le"; lf: "dk.lf"; lg: "dk.lg"; lh: "dk.lh"; li: "dk.li"; lj: "dk.lj"; lk: "dk.lk"; ll: "dk.ll"; lm: "dk.lm"; ln: "dk.ln"; lo: "dk.lo"; lp: "dk.lp"; lq: "dk.lq"; lr: "dk.lr"; ls: "dk.ls"; lt: "dk.lt"; lu: "dk.lu"; lv: "dk.lv"; lw: "dk.lw"; lx: "dk.lx"; ly: "dk.ly"; lz: "dk.lz"; ma: "dk.ma"; mb: "dk.mb"; mc: "dk.mc"; md: "dk.md"; me: "dk.me"; mf: "dk.mf"; mg: "dk.mg"; mh: "dk.mh"; mi: "dk.mi"; mj: "dk.mj"; mk: "dk.mk"; ml: "dk.ml"; mm: "dk.mm"; mn: "dk.mn"; mo: "dk.mo"; mp: "dk.mp"; mq: "dk.mq"; mr: "dk.mr"; ms: "dk.ms"; mt: "dk.mt"; mu: "dk.mu"; mv: "dk.mv"; mw: "dk.mw"; mx: "dk.mx"; my: "dk.my"; mz: "dk.mz"; na: "dk.na"; nb: "dk.nb"; nc: "dk.nc"; nd: "dk.nd"; ne: "dk.ne"; nf: "dk.nf"; ng: "dk.ng"; nh: "dk.nh"; ni: "dk.ni"; nj: "dk.nj"; nk: "dk.nk"; nl: "dk.nl"; nm: "dk.nm"; nn: "dk.nn"; no: "dk.no"; np: "dk.np"; nq: "dk.nq"; nr: "dk.nr"; ns: "dk.ns"; nt: "dk.nt"; nu: "dk.nu"; nv: "dk.nv"; nw: "dk.nw"; nx: "dk.nx"; ny: "dk.ny"; nz: "dk.nz"; oa: "dk.oa"; ob: "dk.ob"; oc: "dk.oc"; od: "dk.od"; oe: "dk.oe"; of: "dk.of"; og: "dk.og"; oh: "dk.oh"; oi: "dk.oi"; oj: "dk.oj"; ok: "dk.ok"; ol: "dk.ol"; om: "dk.om"; on: "dk.on"; oo: "dk.oo"; op: "dk.op"; oq: "dk.oq"; or: "dk.or"; os: "dk.os"; ot: "dk.ot"; ou: "dk.ou"; ov: "dk.ov"; ow: "dk.ow"; ox: "dk.ox"; oy: "dk.oy"; oz: "dk.oz"; pa: "dk.pa"; pb: "dk.pb"; pc: "dk.pc"; pd: "dk.pd"; pe: "dk.pe"; pf: "dk.pf"; pg: "dk.pg"; ph: "dk.ph"; pi: "dk.pi"; pj: "dk.pj"; pk: "dk.pk"; pl: "dk.pl"; pm: "dk.pm"; pn: "dk.pn"; po: "dk.po"; pp: "dk.pp"; pq: "dk.pq"; pr: "dk.pr"; ps: "dk.ps"; pt: "dk.pt"; pu: "dk.pu"; pv: "dk.pv"; pw: "dk.pw"; px: "dk.px"; py: "dk.py"; pz: "dk.pz"; qa: "dk.qa"; qb: "dk.qb"; qc: "dk.qc"; qd: "dk.qd"; qe: "dk.qe"; qf: "dk.qf"; qg: "dk.qg"; qh: "dk.qh"; qi: "dk.qi"; qj: "dk.qj"; qk: "dk.qk"; ql: "dk.ql"; qm: "dk.qm"; qn: "dk.qn"; qo: "dk.qo"; qp: "dk.qp"; qq: "dk.qq"; qr: "dk.qr"; qs: "dk.qs"; qt: "dk.qt"; qu: "dk.qu"; qv: "dk.qv"; qw: "dk.qw"; qx: "dk.qx"; qy: "dk.qy"; qz: "dk.qz"; ra: "dk.ra"; rb: "dk.rb"; rc: "dk.rc"; rd: "dk.rd"; re: "dk.re"; rf: "dk.rf"; rg: "dk.rg"; rh: "dk.rh"; ri: "dk.ri"; rj: "dk.rj"; rk: "dk.rk"; rl: "dk.rl"; rm: "dk.rm"; rn: "dk.rn"; ro: "dk.ro"; rp: "dk.rp"; rq: "dk.rq"; rr: "dk.rr"; rs: "dk.rs"; rt: "dk.rt"; ru: "dk.ru"; rv: "dk.rv"; rw: "dk.rw"; rx: "dk.rx"; ry: "dk.ry"; rz: "dk.rz"; sa: "dk.sa"; sb: "dk.sb"; sc: "dk.sc"; sd: "dk.sd"; se: "dk.se"; sf: "dk.sf"; sg: "dk.sg"; sh: "dk.sh"; si: "dk.si"; sj: "dk.sj"; sk: "dk.sk"; sl: "dk.sl"; sm: "dk.sm"; sn: "dk.sn"; so: "dk.so"; sp: "dk.sp"; sq: "dk.sq"; sr: "dk.sr"; ss: "dk.ss"; st: "dk.st"; su: "dk.su"; sv: "dk.sv"; sw: "dk.sw"; sx: "dk.sx"; sy: "dk.sy"; sz: "dk.sz"; ta: "dk.ta"; tb: "dk.tb"; tc: "dk.tc"; td: "dk.td"; te: "dk.te"; tf: "dk.tf"; tg: "dk.tg"; th: "dk.th"; ti: "dk.ti"; tj: "dk.tj"; tk: "dk.tk"; tl: "dk.tl"; tm: "dk.tm"; tn: "dk.tn"; to: "dk.to"; tp: "dk.tp"; tq: "dk.tq"; tr: "dk.tr"; ts: "dk.ts"; tt: "dk.tt"; tu: "dk.tu"; tv: "dk.tv"; tw: "dk.tw"; tx: "dk.tx"; ty: "dk.ty"; tz: "dk.tz"; ua: "dk.ua"; ub: "dk.ub"; uc: "dk.uc"; ud: "dk.ud"; ue: "dk.ue"; uf: "dk.uf"; ug: "dk.ug"; uh: "dk.uh"; ui: "dk.ui"; uj: "dk.uj"; uk: "dk.uk"; ul: "dk.ul"; um: "dk.um"; un: "dk.un"; uo: "dk.uo"; up: "dk.up"; uq: "dk.uq"; ur: "dk.ur"; us: "dk.us"; ut: "dk.ut"; uu: "dk.uu"; uv: "dk.uv"; uw: "dk.uw"; ux: "dk.ux"; uy: "dk.uy"; uz: "dk.uz"; va: "dk.va"; vb: "dk.vb"; vc: "dk.vc"; vd: "dk.vd"; ve: "dk.ve"; vf: "dk.vf"; vg: "dk.vg"; vh: "dk.vh"; vi: "dk.vi"; vj: "dk.vj"; vk: "dk.vk"; vl: "dk.vl"; vm: "dk.vm"; vn: "dk.vn"; vo: "dk.vo"; vp: "dk.vp"; vq: "dk.vq"; vr: "dk.vr"; vs: "dk.vs"; vt: "dk.vt"; vu: "dk.vu"; vv: "dk.vv"; vw: "dk.vw"; vx: "dk.vx"; vy: "dk.vy"; vz: "dk.vz"; wa: "dk.wa"; wb: "dk.wb"; wc: "dk.wc"; wd: "dk.wd"; we: "dk.we"; wf: "dk.wf"; wg: "dk.wg"; wh: "dk.wh"; wi: "dk.wi"; wj: "dk.wj"; wk: "dk.wk"; wl: "dk.wl"; wm: "dk.wm"; wn: "dk.wn"; wo: "dk.wo"; wp: "dk.wp"; wq: "dk.wq"; wr: "dk.wr"; ws: "dk.ws"; wt: "dk.wt"; wu: "dk.wu"; wv: "dk.wv"; ww: "dk.ww"; wx: "dk.wx"; wy: "dk.wy"; wz: "dk.wz"; xa: "dk.xa"; xb: "dk.xb"; xc: "dk.xc"; xd: "dk.xd"; xe: "dk.xe"; xf: "dk.xf"; xg: "dk.xg"; xh: "dk.xh"; xi: "dk.xi"; xj: "dk.xj"; xk: "dk.xk"; xl: "dk.xl"; xm: "dk.xm"; xn: "dk.xn"; xo: "dk.xo"; xp: "dk.xp"; xq: "dk.xq"; xr: "dk.xr"; xs: "dk.xs"; xt: "dk.xt"; xu: "dk.xu"; xv: "dk.xv"; xw: "dk.xw"; xx: "dk.xx"; xy: "dk.xy"; xz: "dk.xz"; ya: "dk.ya"; yb: "dk.yb"; yc: "dk.yc"; yd: "dk.yd"; ye: "dk.ye"; yf: "dk.yf"; yg: "dk.yg"; yh: "dk.yh"; yi: "dk.yi"; yj: "dk.yj"; yk: "dk.yk"; yl: "dk.yl"; ym: "dk.ym"; yn: "dk.yn"; yo: "dk.yo"; yp: "dk.yp"; yq: "dk.yq"; yr: "dk.yr"; ys: "dk.ys"; yt: "dk.yt"; yu: "dk.yu"; yv: "dk.yv"; yw: "dk.yw"; yx: "dk.yx"; yy: "dk.yy"; yz: "dk.yz"; za: "dk.za"; zb: "dk.zb"; zc: "dk.zc"; zd: "dk.zd"; ze: "dk.ze"; zf: "dk.zf"; zg: "dk.zg"; zh: "dk.zh"; zi: "dk.zi"; zj: "dk.zj"; zk: "dk.zk"; zl: "dk.zl"; zm: "dk.zm"; zn: "dk.zn"; zo: "dk.zo"; zp: "dk.zp"; zq: "dk.zq"; zr: "dk.zr"; zs: "dk.zs"; zt: "dk.zt"; zu: "dk.zu"; zv: "dk.zv"; zw: "dk.zw"; zx: "dk.zx"; zy: "dk.zy"; zz: "dk.zz"; }; dl: { aa: "dl.aa"; ab: "dl.ab"; ac: "dl.ac"; ad: "dl.ad"; ae: "dl.ae"; af: "dl.af"; ag: "dl.ag"; ah: "dl.ah"; ai: "dl.ai"; aj: "dl.aj"; ak: "dl.ak"; al: "dl.al"; am: "dl.am"; an: "dl.an"; ao: "dl.ao"; ap: "dl.ap"; aq: "dl.aq"; ar: "dl.ar"; as: "dl.as"; at: "dl.at"; au: "dl.au"; av: "dl.av"; aw: "dl.aw"; ax: "dl.ax"; ay: "dl.ay"; az: "dl.az"; ba: "dl.ba"; bb: "dl.bb"; bc: "dl.bc"; bd: "dl.bd"; be: "dl.be"; bf: "dl.bf"; bg: "dl.bg"; bh: "dl.bh"; bi: "dl.bi"; bj: "dl.bj"; bk: "dl.bk"; bl: "dl.bl"; bm: "dl.bm"; bn: "dl.bn"; bo: "dl.bo"; bp: "dl.bp"; bq: "dl.bq"; br: "dl.br"; bs: "dl.bs"; bt: "dl.bt"; bu: "dl.bu"; bv: "dl.bv"; bw: "dl.bw"; bx: "dl.bx"; by: "dl.by"; bz: "dl.bz"; ca: "dl.ca"; cb: "dl.cb"; cc: "dl.cc"; cd: "dl.cd"; ce: "dl.ce"; cf: "dl.cf"; cg: "dl.cg"; ch: "dl.ch"; ci: "dl.ci"; cj: "dl.cj"; ck: "dl.ck"; cl: "dl.cl"; cm: "dl.cm"; cn: "dl.cn"; co: "dl.co"; cp: "dl.cp"; cq: "dl.cq"; cr: "dl.cr"; cs: "dl.cs"; ct: "dl.ct"; cu: "dl.cu"; cv: "dl.cv"; cw: "dl.cw"; cx: "dl.cx"; cy: "dl.cy"; cz: "dl.cz"; da: "dl.da"; db: "dl.db"; dc: "dl.dc"; dd: "dl.dd"; de: "dl.de"; df: "dl.df"; dg: "dl.dg"; dh: "dl.dh"; di: "dl.di"; dj: "dl.dj"; dk: "dl.dk"; dl: "dl.dl"; dm: "dl.dm"; dn: "dl.dn"; do: "dl.do"; dp: "dl.dp"; dq: "dl.dq"; dr: "dl.dr"; ds: "dl.ds"; dt: "dl.dt"; du: "dl.du"; dv: "dl.dv"; dw: "dl.dw"; dx: "dl.dx"; dy: "dl.dy"; dz: "dl.dz"; ea: "dl.ea"; eb: "dl.eb"; ec: "dl.ec"; ed: "dl.ed"; ee: "dl.ee"; ef: "dl.ef"; eg: "dl.eg"; eh: "dl.eh"; ei: "dl.ei"; ej: "dl.ej"; ek: "dl.ek"; el: "dl.el"; em: "dl.em"; en: "dl.en"; eo: "dl.eo"; ep: "dl.ep"; eq: "dl.eq"; er: "dl.er"; es: "dl.es"; et: "dl.et"; eu: "dl.eu"; ev: "dl.ev"; ew: "dl.ew"; ex: "dl.ex"; ey: "dl.ey"; ez: "dl.ez"; fa: "dl.fa"; fb: "dl.fb"; fc: "dl.fc"; fd: "dl.fd"; fe: "dl.fe"; ff: "dl.ff"; fg: "dl.fg"; fh: "dl.fh"; fi: "dl.fi"; fj: "dl.fj"; fk: "dl.fk"; fl: "dl.fl"; fm: "dl.fm"; fn: "dl.fn"; fo: "dl.fo"; fp: "dl.fp"; fq: "dl.fq"; fr: "dl.fr"; fs: "dl.fs"; ft: "dl.ft"; fu: "dl.fu"; fv: "dl.fv"; fw: "dl.fw"; fx: "dl.fx"; fy: "dl.fy"; fz: "dl.fz"; ga: "dl.ga"; gb: "dl.gb"; gc: "dl.gc"; gd: "dl.gd"; ge: "dl.ge"; gf: "dl.gf"; gg: "dl.gg"; gh: "dl.gh"; gi: "dl.gi"; gj: "dl.gj"; gk: "dl.gk"; gl: "dl.gl"; gm: "dl.gm"; gn: "dl.gn"; go: "dl.go"; gp: "dl.gp"; gq: "dl.gq"; gr: "dl.gr"; gs: "dl.gs"; gt: "dl.gt"; gu: "dl.gu"; gv: "dl.gv"; gw: "dl.gw"; gx: "dl.gx"; gy: "dl.gy"; gz: "dl.gz"; ha: "dl.ha"; hb: "dl.hb"; hc: "dl.hc"; hd: "dl.hd"; he: "dl.he"; hf: "dl.hf"; hg: "dl.hg"; hh: "dl.hh"; hi: "dl.hi"; hj: "dl.hj"; hk: "dl.hk"; hl: "dl.hl"; hm: "dl.hm"; hn: "dl.hn"; ho: "dl.ho"; hp: "dl.hp"; hq: "dl.hq"; hr: "dl.hr"; hs: "dl.hs"; ht: "dl.ht"; hu: "dl.hu"; hv: "dl.hv"; hw: "dl.hw"; hx: "dl.hx"; hy: "dl.hy"; hz: "dl.hz"; ia: "dl.ia"; ib: "dl.ib"; ic: "dl.ic"; id: "dl.id"; ie: "dl.ie"; if: "dl.if"; ig: "dl.ig"; ih: "dl.ih"; ii: "dl.ii"; ij: "dl.ij"; ik: "dl.ik"; il: "dl.il"; im: "dl.im"; in: "dl.in"; io: "dl.io"; ip: "dl.ip"; iq: "dl.iq"; ir: "dl.ir"; is: "dl.is"; it: "dl.it"; iu: "dl.iu"; iv: "dl.iv"; iw: "dl.iw"; ix: "dl.ix"; iy: "dl.iy"; iz: "dl.iz"; ja: "dl.ja"; jb: "dl.jb"; jc: "dl.jc"; jd: "dl.jd"; je: "dl.je"; jf: "dl.jf"; jg: "dl.jg"; jh: "dl.jh"; ji: "dl.ji"; jj: "dl.jj"; jk: "dl.jk"; jl: "dl.jl"; jm: "dl.jm"; jn: "dl.jn"; jo: "dl.jo"; jp: "dl.jp"; jq: "dl.jq"; jr: "dl.jr"; js: "dl.js"; jt: "dl.jt"; ju: "dl.ju"; jv: "dl.jv"; jw: "dl.jw"; jx: "dl.jx"; jy: "dl.jy"; jz: "dl.jz"; ka: "dl.ka"; kb: "dl.kb"; kc: "dl.kc"; kd: "dl.kd"; ke: "dl.ke"; kf: "dl.kf"; kg: "dl.kg"; kh: "dl.kh"; ki: "dl.ki"; kj: "dl.kj"; kk: "dl.kk"; kl: "dl.kl"; km: "dl.km"; kn: "dl.kn"; ko: "dl.ko"; kp: "dl.kp"; kq: "dl.kq"; kr: "dl.kr"; ks: "dl.ks"; kt: "dl.kt"; ku: "dl.ku"; kv: "dl.kv"; kw: "dl.kw"; kx: "dl.kx"; ky: "dl.ky"; kz: "dl.kz"; la: "dl.la"; lb: "dl.lb"; lc: "dl.lc"; ld: "dl.ld"; le: "dl.le"; lf: "dl.lf"; lg: "dl.lg"; lh: "dl.lh"; li: "dl.li"; lj: "dl.lj"; lk: "dl.lk"; ll: "dl.ll"; lm: "dl.lm"; ln: "dl.ln"; lo: "dl.lo"; lp: "dl.lp"; lq: "dl.lq"; lr: "dl.lr"; ls: "dl.ls"; lt: "dl.lt"; lu: "dl.lu"; lv: "dl.lv"; lw: "dl.lw"; lx: "dl.lx"; ly: "dl.ly"; lz: "dl.lz"; ma: "dl.ma"; mb: "dl.mb"; mc: "dl.mc"; md: "dl.md"; me: "dl.me"; mf: "dl.mf"; mg: "dl.mg"; mh: "dl.mh"; mi: "dl.mi"; mj: "dl.mj"; mk: "dl.mk"; ml: "dl.ml"; mm: "dl.mm"; mn: "dl.mn"; mo: "dl.mo"; mp: "dl.mp"; mq: "dl.mq"; mr: "dl.mr"; ms: "dl.ms"; mt: "dl.mt"; mu: "dl.mu"; mv: "dl.mv"; mw: "dl.mw"; mx: "dl.mx"; my: "dl.my"; mz: "dl.mz"; na: "dl.na"; nb: "dl.nb"; nc: "dl.nc"; nd: "dl.nd"; ne: "dl.ne"; nf: "dl.nf"; ng: "dl.ng"; nh: "dl.nh"; ni: "dl.ni"; nj: "dl.nj"; nk: "dl.nk"; nl: "dl.nl"; nm: "dl.nm"; nn: "dl.nn"; no: "dl.no"; np: "dl.np"; nq: "dl.nq"; nr: "dl.nr"; ns: "dl.ns"; nt: "dl.nt"; nu: "dl.nu"; nv: "dl.nv"; nw: "dl.nw"; nx: "dl.nx"; ny: "dl.ny"; nz: "dl.nz"; oa: "dl.oa"; ob: "dl.ob"; oc: "dl.oc"; od: "dl.od"; oe: "dl.oe"; of: "dl.of"; og: "dl.og"; oh: "dl.oh"; oi: "dl.oi"; oj: "dl.oj"; ok: "dl.ok"; ol: "dl.ol"; om: "dl.om"; on: "dl.on"; oo: "dl.oo"; op: "dl.op"; oq: "dl.oq"; or: "dl.or"; os: "dl.os"; ot: "dl.ot"; ou: "dl.ou"; ov: "dl.ov"; ow: "dl.ow"; ox: "dl.ox"; oy: "dl.oy"; oz: "dl.oz"; pa: "dl.pa"; pb: "dl.pb"; pc: "dl.pc"; pd: "dl.pd"; pe: "dl.pe"; pf: "dl.pf"; pg: "dl.pg"; ph: "dl.ph"; pi: "dl.pi"; pj: "dl.pj"; pk: "dl.pk"; pl: "dl.pl"; pm: "dl.pm"; pn: "dl.pn"; po: "dl.po"; pp: "dl.pp"; pq: "dl.pq"; pr: "dl.pr"; ps: "dl.ps"; pt: "dl.pt"; pu: "dl.pu"; pv: "dl.pv"; pw: "dl.pw"; px: "dl.px"; py: "dl.py"; pz: "dl.pz"; qa: "dl.qa"; qb: "dl.qb"; qc: "dl.qc"; qd: "dl.qd"; qe: "dl.qe"; qf: "dl.qf"; qg: "dl.qg"; qh: "dl.qh"; qi: "dl.qi"; qj: "dl.qj"; qk: "dl.qk"; ql: "dl.ql"; qm: "dl.qm"; qn: "dl.qn"; qo: "dl.qo"; qp: "dl.qp"; qq: "dl.qq"; qr: "dl.qr"; qs: "dl.qs"; qt: "dl.qt"; qu: "dl.qu"; qv: "dl.qv"; qw: "dl.qw"; qx: "dl.qx"; qy: "dl.qy"; qz: "dl.qz"; ra: "dl.ra"; rb: "dl.rb"; rc: "dl.rc"; rd: "dl.rd"; re: "dl.re"; rf: "dl.rf"; rg: "dl.rg"; rh: "dl.rh"; ri: "dl.ri"; rj: "dl.rj"; rk: "dl.rk"; rl: "dl.rl"; rm: "dl.rm"; rn: "dl.rn"; ro: "dl.ro"; rp: "dl.rp"; rq: "dl.rq"; rr: "dl.rr"; rs: "dl.rs"; rt: "dl.rt"; ru: "dl.ru"; rv: "dl.rv"; rw: "dl.rw"; rx: "dl.rx"; ry: "dl.ry"; rz: "dl.rz"; sa: "dl.sa"; sb: "dl.sb"; sc: "dl.sc"; sd: "dl.sd"; se: "dl.se"; sf: "dl.sf"; sg: "dl.sg"; sh: "dl.sh"; si: "dl.si"; sj: "dl.sj"; sk: "dl.sk"; sl: "dl.sl"; sm: "dl.sm"; sn: "dl.sn"; so: "dl.so"; sp: "dl.sp"; sq: "dl.sq"; sr: "dl.sr"; ss: "dl.ss"; st: "dl.st"; su: "dl.su"; sv: "dl.sv"; sw: "dl.sw"; sx: "dl.sx"; sy: "dl.sy"; sz: "dl.sz"; ta: "dl.ta"; tb: "dl.tb"; tc: "dl.tc"; td: "dl.td"; te: "dl.te"; tf: "dl.tf"; tg: "dl.tg"; th: "dl.th"; ti: "dl.ti"; tj: "dl.tj"; tk: "dl.tk"; tl: "dl.tl"; tm: "dl.tm"; tn: "dl.tn"; to: "dl.to"; tp: "dl.tp"; tq: "dl.tq"; tr: "dl.tr"; ts: "dl.ts"; tt: "dl.tt"; tu: "dl.tu"; tv: "dl.tv"; tw: "dl.tw"; tx: "dl.tx"; ty: "dl.ty"; tz: "dl.tz"; ua: "dl.ua"; ub: "dl.ub"; uc: "dl.uc"; ud: "dl.ud"; ue: "dl.ue"; uf: "dl.uf"; ug: "dl.ug"; uh: "dl.uh"; ui: "dl.ui"; uj: "dl.uj"; uk: "dl.uk"; ul: "dl.ul"; um: "dl.um"; un: "dl.un"; uo: "dl.uo"; up: "dl.up"; uq: "dl.uq"; ur: "dl.ur"; us: "dl.us"; ut: "dl.ut"; uu: "dl.uu"; uv: "dl.uv"; uw: "dl.uw"; ux: "dl.ux"; uy: "dl.uy"; uz: "dl.uz"; va: "dl.va"; vb: "dl.vb"; vc: "dl.vc"; vd: "dl.vd"; ve: "dl.ve"; vf: "dl.vf"; vg: "dl.vg"; vh: "dl.vh"; vi: "dl.vi"; vj: "dl.vj"; vk: "dl.vk"; vl: "dl.vl"; vm: "dl.vm"; vn: "dl.vn"; vo: "dl.vo"; vp: "dl.vp"; vq: "dl.vq"; vr: "dl.vr"; vs: "dl.vs"; vt: "dl.vt"; vu: "dl.vu"; vv: "dl.vv"; vw: "dl.vw"; vx: "dl.vx"; vy: "dl.vy"; vz: "dl.vz"; wa: "dl.wa"; wb: "dl.wb"; wc: "dl.wc"; wd: "dl.wd"; we: "dl.we"; wf: "dl.wf"; wg: "dl.wg"; wh: "dl.wh"; wi: "dl.wi"; wj: "dl.wj"; wk: "dl.wk"; wl: "dl.wl"; wm: "dl.wm"; wn: "dl.wn"; wo: "dl.wo"; wp: "dl.wp"; wq: "dl.wq"; wr: "dl.wr"; ws: "dl.ws"; wt: "dl.wt"; wu: "dl.wu"; wv: "dl.wv"; ww: "dl.ww"; wx: "dl.wx"; wy: "dl.wy"; wz: "dl.wz"; xa: "dl.xa"; xb: "dl.xb"; xc: "dl.xc"; xd: "dl.xd"; xe: "dl.xe"; xf: "dl.xf"; xg: "dl.xg"; xh: "dl.xh"; xi: "dl.xi"; xj: "dl.xj"; xk: "dl.xk"; xl: "dl.xl"; xm: "dl.xm"; xn: "dl.xn"; xo: "dl.xo"; xp: "dl.xp"; xq: "dl.xq"; xr: "dl.xr"; xs: "dl.xs"; xt: "dl.xt"; xu: "dl.xu"; xv: "dl.xv"; xw: "dl.xw"; xx: "dl.xx"; xy: "dl.xy"; xz: "dl.xz"; ya: "dl.ya"; yb: "dl.yb"; yc: "dl.yc"; yd: "dl.yd"; ye: "dl.ye"; yf: "dl.yf"; yg: "dl.yg"; yh: "dl.yh"; yi: "dl.yi"; yj: "dl.yj"; yk: "dl.yk"; yl: "dl.yl"; ym: "dl.ym"; yn: "dl.yn"; yo: "dl.yo"; yp: "dl.yp"; yq: "dl.yq"; yr: "dl.yr"; ys: "dl.ys"; yt: "dl.yt"; yu: "dl.yu"; yv: "dl.yv"; yw: "dl.yw"; yx: "dl.yx"; yy: "dl.yy"; yz: "dl.yz"; za: "dl.za"; zb: "dl.zb"; zc: "dl.zc"; zd: "dl.zd"; ze: "dl.ze"; zf: "dl.zf"; zg: "dl.zg"; zh: "dl.zh"; zi: "dl.zi"; zj: "dl.zj"; zk: "dl.zk"; zl: "dl.zl"; zm: "dl.zm"; zn: "dl.zn"; zo: "dl.zo"; zp: "dl.zp"; zq: "dl.zq"; zr: "dl.zr"; zs: "dl.zs"; zt: "dl.zt"; zu: "dl.zu"; zv: "dl.zv"; zw: "dl.zw"; zx: "dl.zx"; zy: "dl.zy"; zz: "dl.zz"; }; dm: { aa: "dm.aa"; ab: "dm.ab"; ac: "dm.ac"; ad: "dm.ad"; ae: "dm.ae"; af: "dm.af"; ag: "dm.ag"; ah: "dm.ah"; ai: "dm.ai"; aj: "dm.aj"; ak: "dm.ak"; al: "dm.al"; am: "dm.am"; an: "dm.an"; ao: "dm.ao"; ap: "dm.ap"; aq: "dm.aq"; ar: "dm.ar"; as: "dm.as"; at: "dm.at"; au: "dm.au"; av: "dm.av"; aw: "dm.aw"; ax: "dm.ax"; ay: "dm.ay"; az: "dm.az"; ba: "dm.ba"; bb: "dm.bb"; bc: "dm.bc"; bd: "dm.bd"; be: "dm.be"; bf: "dm.bf"; bg: "dm.bg"; bh: "dm.bh"; bi: "dm.bi"; bj: "dm.bj"; bk: "dm.bk"; bl: "dm.bl"; bm: "dm.bm"; bn: "dm.bn"; bo: "dm.bo"; bp: "dm.bp"; bq: "dm.bq"; br: "dm.br"; bs: "dm.bs"; bt: "dm.bt"; bu: "dm.bu"; bv: "dm.bv"; bw: "dm.bw"; bx: "dm.bx"; by: "dm.by"; bz: "dm.bz"; ca: "dm.ca"; cb: "dm.cb"; cc: "dm.cc"; cd: "dm.cd"; ce: "dm.ce"; cf: "dm.cf"; cg: "dm.cg"; ch: "dm.ch"; ci: "dm.ci"; cj: "dm.cj"; ck: "dm.ck"; cl: "dm.cl"; cm: "dm.cm"; cn: "dm.cn"; co: "dm.co"; cp: "dm.cp"; cq: "dm.cq"; cr: "dm.cr"; cs: "dm.cs"; ct: "dm.ct"; cu: "dm.cu"; cv: "dm.cv"; cw: "dm.cw"; cx: "dm.cx"; cy: "dm.cy"; cz: "dm.cz"; da: "dm.da"; db: "dm.db"; dc: "dm.dc"; dd: "dm.dd"; de: "dm.de"; df: "dm.df"; dg: "dm.dg"; dh: "dm.dh"; di: "dm.di"; dj: "dm.dj"; dk: "dm.dk"; dl: "dm.dl"; dm: "dm.dm"; dn: "dm.dn"; do: "dm.do"; dp: "dm.dp"; dq: "dm.dq"; dr: "dm.dr"; ds: "dm.ds"; dt: "dm.dt"; du: "dm.du"; dv: "dm.dv"; dw: "dm.dw"; dx: "dm.dx"; dy: "dm.dy"; dz: "dm.dz"; ea: "dm.ea"; eb: "dm.eb"; ec: "dm.ec"; ed: "dm.ed"; ee: "dm.ee"; ef: "dm.ef"; eg: "dm.eg"; eh: "dm.eh"; ei: "dm.ei"; ej: "dm.ej"; ek: "dm.ek"; el: "dm.el"; em: "dm.em"; en: "dm.en"; eo: "dm.eo"; ep: "dm.ep"; eq: "dm.eq"; er: "dm.er"; es: "dm.es"; et: "dm.et"; eu: "dm.eu"; ev: "dm.ev"; ew: "dm.ew"; ex: "dm.ex"; ey: "dm.ey"; ez: "dm.ez"; fa: "dm.fa"; fb: "dm.fb"; fc: "dm.fc"; fd: "dm.fd"; fe: "dm.fe"; ff: "dm.ff"; fg: "dm.fg"; fh: "dm.fh"; fi: "dm.fi"; fj: "dm.fj"; fk: "dm.fk"; fl: "dm.fl"; fm: "dm.fm"; fn: "dm.fn"; fo: "dm.fo"; fp: "dm.fp"; fq: "dm.fq"; fr: "dm.fr"; fs: "dm.fs"; ft: "dm.ft"; fu: "dm.fu"; fv: "dm.fv"; fw: "dm.fw"; fx: "dm.fx"; fy: "dm.fy"; fz: "dm.fz"; ga: "dm.ga"; gb: "dm.gb"; gc: "dm.gc"; gd: "dm.gd"; ge: "dm.ge"; gf: "dm.gf"; gg: "dm.gg"; gh: "dm.gh"; gi: "dm.gi"; gj: "dm.gj"; gk: "dm.gk"; gl: "dm.gl"; gm: "dm.gm"; gn: "dm.gn"; go: "dm.go"; gp: "dm.gp"; gq: "dm.gq"; gr: "dm.gr"; gs: "dm.gs"; gt: "dm.gt"; gu: "dm.gu"; gv: "dm.gv"; gw: "dm.gw"; gx: "dm.gx"; gy: "dm.gy"; gz: "dm.gz"; ha: "dm.ha"; hb: "dm.hb"; hc: "dm.hc"; hd: "dm.hd"; he: "dm.he"; hf: "dm.hf"; hg: "dm.hg"; hh: "dm.hh"; hi: "dm.hi"; hj: "dm.hj"; hk: "dm.hk"; hl: "dm.hl"; hm: "dm.hm"; hn: "dm.hn"; ho: "dm.ho"; hp: "dm.hp"; hq: "dm.hq"; hr: "dm.hr"; hs: "dm.hs"; ht: "dm.ht"; hu: "dm.hu"; hv: "dm.hv"; hw: "dm.hw"; hx: "dm.hx"; hy: "dm.hy"; hz: "dm.hz"; ia: "dm.ia"; ib: "dm.ib"; ic: "dm.ic"; id: "dm.id"; ie: "dm.ie"; if: "dm.if"; ig: "dm.ig"; ih: "dm.ih"; ii: "dm.ii"; ij: "dm.ij"; ik: "dm.ik"; il: "dm.il"; im: "dm.im"; in: "dm.in"; io: "dm.io"; ip: "dm.ip"; iq: "dm.iq"; ir: "dm.ir"; is: "dm.is"; it: "dm.it"; iu: "dm.iu"; iv: "dm.iv"; iw: "dm.iw"; ix: "dm.ix"; iy: "dm.iy"; iz: "dm.iz"; ja: "dm.ja"; jb: "dm.jb"; jc: "dm.jc"; jd: "dm.jd"; je: "dm.je"; jf: "dm.jf"; jg: "dm.jg"; jh: "dm.jh"; ji: "dm.ji"; jj: "dm.jj"; jk: "dm.jk"; jl: "dm.jl"; jm: "dm.jm"; jn: "dm.jn"; jo: "dm.jo"; jp: "dm.jp"; jq: "dm.jq"; jr: "dm.jr"; js: "dm.js"; jt: "dm.jt"; ju: "dm.ju"; jv: "dm.jv"; jw: "dm.jw"; jx: "dm.jx"; jy: "dm.jy"; jz: "dm.jz"; ka: "dm.ka"; kb: "dm.kb"; kc: "dm.kc"; kd: "dm.kd"; ke: "dm.ke"; kf: "dm.kf"; kg: "dm.kg"; kh: "dm.kh"; ki: "dm.ki"; kj: "dm.kj"; kk: "dm.kk"; kl: "dm.kl"; km: "dm.km"; kn: "dm.kn"; ko: "dm.ko"; kp: "dm.kp"; kq: "dm.kq"; kr: "dm.kr"; ks: "dm.ks"; kt: "dm.kt"; ku: "dm.ku"; kv: "dm.kv"; kw: "dm.kw"; kx: "dm.kx"; ky: "dm.ky"; kz: "dm.kz"; la: "dm.la"; lb: "dm.lb"; lc: "dm.lc"; ld: "dm.ld"; le: "dm.le"; lf: "dm.lf"; lg: "dm.lg"; lh: "dm.lh"; li: "dm.li"; lj: "dm.lj"; lk: "dm.lk"; ll: "dm.ll"; lm: "dm.lm"; ln: "dm.ln"; lo: "dm.lo"; lp: "dm.lp"; lq: "dm.lq"; lr: "dm.lr"; ls: "dm.ls"; lt: "dm.lt"; lu: "dm.lu"; lv: "dm.lv"; lw: "dm.lw"; lx: "dm.lx"; ly: "dm.ly"; lz: "dm.lz"; ma: "dm.ma"; mb: "dm.mb"; mc: "dm.mc"; md: "dm.md"; me: "dm.me"; mf: "dm.mf"; mg: "dm.mg"; mh: "dm.mh"; mi: "dm.mi"; mj: "dm.mj"; mk: "dm.mk"; ml: "dm.ml"; mm: "dm.mm"; mn: "dm.mn"; mo: "dm.mo"; mp: "dm.mp"; mq: "dm.mq"; mr: "dm.mr"; ms: "dm.ms"; mt: "dm.mt"; mu: "dm.mu"; mv: "dm.mv"; mw: "dm.mw"; mx: "dm.mx"; my: "dm.my"; mz: "dm.mz"; na: "dm.na"; nb: "dm.nb"; nc: "dm.nc"; nd: "dm.nd"; ne: "dm.ne"; nf: "dm.nf"; ng: "dm.ng"; nh: "dm.nh"; ni: "dm.ni"; nj: "dm.nj"; nk: "dm.nk"; nl: "dm.nl"; nm: "dm.nm"; nn: "dm.nn"; no: "dm.no"; np: "dm.np"; nq: "dm.nq"; nr: "dm.nr"; ns: "dm.ns"; nt: "dm.nt"; nu: "dm.nu"; nv: "dm.nv"; nw: "dm.nw"; nx: "dm.nx"; ny: "dm.ny"; nz: "dm.nz"; oa: "dm.oa"; ob: "dm.ob"; oc: "dm.oc"; od: "dm.od"; oe: "dm.oe"; of: "dm.of"; og: "dm.og"; oh: "dm.oh"; oi: "dm.oi"; oj: "dm.oj"; ok: "dm.ok"; ol: "dm.ol"; om: "dm.om"; on: "dm.on"; oo: "dm.oo"; op: "dm.op"; oq: "dm.oq"; or: "dm.or"; os: "dm.os"; ot: "dm.ot"; ou: "dm.ou"; ov: "dm.ov"; ow: "dm.ow"; ox: "dm.ox"; oy: "dm.oy"; oz: "dm.oz"; pa: "dm.pa"; pb: "dm.pb"; pc: "dm.pc"; pd: "dm.pd"; pe: "dm.pe"; pf: "dm.pf"; pg: "dm.pg"; ph: "dm.ph"; pi: "dm.pi"; pj: "dm.pj"; pk: "dm.pk"; pl: "dm.pl"; pm: "dm.pm"; pn: "dm.pn"; po: "dm.po"; pp: "dm.pp"; pq: "dm.pq"; pr: "dm.pr"; ps: "dm.ps"; pt: "dm.pt"; pu: "dm.pu"; pv: "dm.pv"; pw: "dm.pw"; px: "dm.px"; py: "dm.py"; pz: "dm.pz"; qa: "dm.qa"; qb: "dm.qb"; qc: "dm.qc"; qd: "dm.qd"; qe: "dm.qe"; qf: "dm.qf"; qg: "dm.qg"; qh: "dm.qh"; qi: "dm.qi"; qj: "dm.qj"; qk: "dm.qk"; ql: "dm.ql"; qm: "dm.qm"; qn: "dm.qn"; qo: "dm.qo"; qp: "dm.qp"; qq: "dm.qq"; qr: "dm.qr"; qs: "dm.qs"; qt: "dm.qt"; qu: "dm.qu"; qv: "dm.qv"; qw: "dm.qw"; qx: "dm.qx"; qy: "dm.qy"; qz: "dm.qz"; ra: "dm.ra"; rb: "dm.rb"; rc: "dm.rc"; rd: "dm.rd"; re: "dm.re"; rf: "dm.rf"; rg: "dm.rg"; rh: "dm.rh"; ri: "dm.ri"; rj: "dm.rj"; rk: "dm.rk"; rl: "dm.rl"; rm: "dm.rm"; rn: "dm.rn"; ro: "dm.ro"; rp: "dm.rp"; rq: "dm.rq"; rr: "dm.rr"; rs: "dm.rs"; rt: "dm.rt"; ru: "dm.ru"; rv: "dm.rv"; rw: "dm.rw"; rx: "dm.rx"; ry: "dm.ry"; rz: "dm.rz"; sa: "dm.sa"; sb: "dm.sb"; sc: "dm.sc"; sd: "dm.sd"; se: "dm.se"; sf: "dm.sf"; sg: "dm.sg"; sh: "dm.sh"; si: "dm.si"; sj: "dm.sj"; sk: "dm.sk"; sl: "dm.sl"; sm: "dm.sm"; sn: "dm.sn"; so: "dm.so"; sp: "dm.sp"; sq: "dm.sq"; sr: "dm.sr"; ss: "dm.ss"; st: "dm.st"; su: "dm.su"; sv: "dm.sv"; sw: "dm.sw"; sx: "dm.sx"; sy: "dm.sy"; sz: "dm.sz"; ta: "dm.ta"; tb: "dm.tb"; tc: "dm.tc"; td: "dm.td"; te: "dm.te"; tf: "dm.tf"; tg: "dm.tg"; th: "dm.th"; ti: "dm.ti"; tj: "dm.tj"; tk: "dm.tk"; tl: "dm.tl"; tm: "dm.tm"; tn: "dm.tn"; to: "dm.to"; tp: "dm.tp"; tq: "dm.tq"; tr: "dm.tr"; ts: "dm.ts"; tt: "dm.tt"; tu: "dm.tu"; tv: "dm.tv"; tw: "dm.tw"; tx: "dm.tx"; ty: "dm.ty"; tz: "dm.tz"; ua: "dm.ua"; ub: "dm.ub"; uc: "dm.uc"; ud: "dm.ud"; ue: "dm.ue"; uf: "dm.uf"; ug: "dm.ug"; uh: "dm.uh"; ui: "dm.ui"; uj: "dm.uj"; uk: "dm.uk"; ul: "dm.ul"; um: "dm.um"; un: "dm.un"; uo: "dm.uo"; up: "dm.up"; uq: "dm.uq"; ur: "dm.ur"; us: "dm.us"; ut: "dm.ut"; uu: "dm.uu"; uv: "dm.uv"; uw: "dm.uw"; ux: "dm.ux"; uy: "dm.uy"; uz: "dm.uz"; va: "dm.va"; vb: "dm.vb"; vc: "dm.vc"; vd: "dm.vd"; ve: "dm.ve"; vf: "dm.vf"; vg: "dm.vg"; vh: "dm.vh"; vi: "dm.vi"; vj: "dm.vj"; vk: "dm.vk"; vl: "dm.vl"; vm: "dm.vm"; vn: "dm.vn"; vo: "dm.vo"; vp: "dm.vp"; vq: "dm.vq"; vr: "dm.vr"; vs: "dm.vs"; vt: "dm.vt"; vu: "dm.vu"; vv: "dm.vv"; vw: "dm.vw"; vx: "dm.vx"; vy: "dm.vy"; vz: "dm.vz"; wa: "dm.wa"; wb: "dm.wb"; wc: "dm.wc"; wd: "dm.wd"; we: "dm.we"; wf: "dm.wf"; wg: "dm.wg"; wh: "dm.wh"; wi: "dm.wi"; wj: "dm.wj"; wk: "dm.wk"; wl: "dm.wl"; wm: "dm.wm"; wn: "dm.wn"; wo: "dm.wo"; wp: "dm.wp"; wq: "dm.wq"; wr: "dm.wr"; ws: "dm.ws"; wt: "dm.wt"; wu: "dm.wu"; wv: "dm.wv"; ww: "dm.ww"; wx: "dm.wx"; wy: "dm.wy"; wz: "dm.wz"; xa: "dm.xa"; xb: "dm.xb"; xc: "dm.xc"; xd: "dm.xd"; xe: "dm.xe"; xf: "dm.xf"; xg: "dm.xg"; xh: "dm.xh"; xi: "dm.xi"; xj: "dm.xj"; xk: "dm.xk"; xl: "dm.xl"; xm: "dm.xm"; xn: "dm.xn"; xo: "dm.xo"; xp: "dm.xp"; xq: "dm.xq"; xr: "dm.xr"; xs: "dm.xs"; xt: "dm.xt"; xu: "dm.xu"; xv: "dm.xv"; xw: "dm.xw"; xx: "dm.xx"; xy: "dm.xy"; xz: "dm.xz"; ya: "dm.ya"; yb: "dm.yb"; yc: "dm.yc"; yd: "dm.yd"; ye: "dm.ye"; yf: "dm.yf"; yg: "dm.yg"; yh: "dm.yh"; yi: "dm.yi"; yj: "dm.yj"; yk: "dm.yk"; yl: "dm.yl"; ym: "dm.ym"; yn: "dm.yn"; yo: "dm.yo"; yp: "dm.yp"; yq: "dm.yq"; yr: "dm.yr"; ys: "dm.ys"; yt: "dm.yt"; yu: "dm.yu"; yv: "dm.yv"; yw: "dm.yw"; yx: "dm.yx"; yy: "dm.yy"; yz: "dm.yz"; za: "dm.za"; zb: "dm.zb"; zc: "dm.zc"; zd: "dm.zd"; ze: "dm.ze"; zf: "dm.zf"; zg: "dm.zg"; zh: "dm.zh"; zi: "dm.zi"; zj: "dm.zj"; zk: "dm.zk"; zl: "dm.zl"; zm: "dm.zm"; zn: "dm.zn"; zo: "dm.zo"; zp: "dm.zp"; zq: "dm.zq"; zr: "dm.zr"; zs: "dm.zs"; zt: "dm.zt"; zu: "dm.zu"; zv: "dm.zv"; zw: "dm.zw"; zx: "dm.zx"; zy: "dm.zy"; zz: "dm.zz"; }; dn: { aa: "dn.aa"; ab: "dn.ab"; ac: "dn.ac"; ad: "dn.ad"; ae: "dn.ae"; af: "dn.af"; ag: "dn.ag"; ah: "dn.ah"; ai: "dn.ai"; aj: "dn.aj"; ak: "dn.ak"; al: "dn.al"; am: "dn.am"; an: "dn.an"; ao: "dn.ao"; ap: "dn.ap"; aq: "dn.aq"; ar: "dn.ar"; as: "dn.as"; at: "dn.at"; au: "dn.au"; av: "dn.av"; aw: "dn.aw"; ax: "dn.ax"; ay: "dn.ay"; az: "dn.az"; ba: "dn.ba"; bb: "dn.bb"; bc: "dn.bc"; bd: "dn.bd"; be: "dn.be"; bf: "dn.bf"; bg: "dn.bg"; bh: "dn.bh"; bi: "dn.bi"; bj: "dn.bj"; bk: "dn.bk"; bl: "dn.bl"; bm: "dn.bm"; bn: "dn.bn"; bo: "dn.bo"; bp: "dn.bp"; bq: "dn.bq"; br: "dn.br"; bs: "dn.bs"; bt: "dn.bt"; bu: "dn.bu"; bv: "dn.bv"; bw: "dn.bw"; bx: "dn.bx"; by: "dn.by"; bz: "dn.bz"; ca: "dn.ca"; cb: "dn.cb"; cc: "dn.cc"; cd: "dn.cd"; ce: "dn.ce"; cf: "dn.cf"; cg: "dn.cg"; ch: "dn.ch"; ci: "dn.ci"; cj: "dn.cj"; ck: "dn.ck"; cl: "dn.cl"; cm: "dn.cm"; cn: "dn.cn"; co: "dn.co"; cp: "dn.cp"; cq: "dn.cq"; cr: "dn.cr"; cs: "dn.cs"; ct: "dn.ct"; cu: "dn.cu"; cv: "dn.cv"; cw: "dn.cw"; cx: "dn.cx"; cy: "dn.cy"; cz: "dn.cz"; da: "dn.da"; db: "dn.db"; dc: "dn.dc"; dd: "dn.dd"; de: "dn.de"; df: "dn.df"; dg: "dn.dg"; dh: "dn.dh"; di: "dn.di"; dj: "dn.dj"; dk: "dn.dk"; dl: "dn.dl"; dm: "dn.dm"; dn: "dn.dn"; do: "dn.do"; dp: "dn.dp"; dq: "dn.dq"; dr: "dn.dr"; ds: "dn.ds"; dt: "dn.dt"; du: "dn.du"; dv: "dn.dv"; dw: "dn.dw"; dx: "dn.dx"; dy: "dn.dy"; dz: "dn.dz"; ea: "dn.ea"; eb: "dn.eb"; ec: "dn.ec"; ed: "dn.ed"; ee: "dn.ee"; ef: "dn.ef"; eg: "dn.eg"; eh: "dn.eh"; ei: "dn.ei"; ej: "dn.ej"; ek: "dn.ek"; el: "dn.el"; em: "dn.em"; en: "dn.en"; eo: "dn.eo"; ep: "dn.ep"; eq: "dn.eq"; er: "dn.er"; es: "dn.es"; et: "dn.et"; eu: "dn.eu"; ev: "dn.ev"; ew: "dn.ew"; ex: "dn.ex"; ey: "dn.ey"; ez: "dn.ez"; fa: "dn.fa"; fb: "dn.fb"; fc: "dn.fc"; fd: "dn.fd"; fe: "dn.fe"; ff: "dn.ff"; fg: "dn.fg"; fh: "dn.fh"; fi: "dn.fi"; fj: "dn.fj"; fk: "dn.fk"; fl: "dn.fl"; fm: "dn.fm"; fn: "dn.fn"; fo: "dn.fo"; fp: "dn.fp"; fq: "dn.fq"; fr: "dn.fr"; fs: "dn.fs"; ft: "dn.ft"; fu: "dn.fu"; fv: "dn.fv"; fw: "dn.fw"; fx: "dn.fx"; fy: "dn.fy"; fz: "dn.fz"; ga: "dn.ga"; gb: "dn.gb"; gc: "dn.gc"; gd: "dn.gd"; ge: "dn.ge"; gf: "dn.gf"; gg: "dn.gg"; gh: "dn.gh"; gi: "dn.gi"; gj: "dn.gj"; gk: "dn.gk"; gl: "dn.gl"; gm: "dn.gm"; gn: "dn.gn"; go: "dn.go"; gp: "dn.gp"; gq: "dn.gq"; gr: "dn.gr"; gs: "dn.gs"; gt: "dn.gt"; gu: "dn.gu"; gv: "dn.gv"; gw: "dn.gw"; gx: "dn.gx"; gy: "dn.gy"; gz: "dn.gz"; ha: "dn.ha"; hb: "dn.hb"; hc: "dn.hc"; hd: "dn.hd"; he: "dn.he"; hf: "dn.hf"; hg: "dn.hg"; hh: "dn.hh"; hi: "dn.hi"; hj: "dn.hj"; hk: "dn.hk"; hl: "dn.hl"; hm: "dn.hm"; hn: "dn.hn"; ho: "dn.ho"; hp: "dn.hp"; hq: "dn.hq"; hr: "dn.hr"; hs: "dn.hs"; ht: "dn.ht"; hu: "dn.hu"; hv: "dn.hv"; hw: "dn.hw"; hx: "dn.hx"; hy: "dn.hy"; hz: "dn.hz"; ia: "dn.ia"; ib: "dn.ib"; ic: "dn.ic"; id: "dn.id"; ie: "dn.ie"; if: "dn.if"; ig: "dn.ig"; ih: "dn.ih"; ii: "dn.ii"; ij: "dn.ij"; ik: "dn.ik"; il: "dn.il"; im: "dn.im"; in: "dn.in"; io: "dn.io"; ip: "dn.ip"; iq: "dn.iq"; ir: "dn.ir"; is: "dn.is"; it: "dn.it"; iu: "dn.iu"; iv: "dn.iv"; iw: "dn.iw"; ix: "dn.ix"; iy: "dn.iy"; iz: "dn.iz"; ja: "dn.ja"; jb: "dn.jb"; jc: "dn.jc"; jd: "dn.jd"; je: "dn.je"; jf: "dn.jf"; jg: "dn.jg"; jh: "dn.jh"; ji: "dn.ji"; jj: "dn.jj"; jk: "dn.jk"; jl: "dn.jl"; jm: "dn.jm"; jn: "dn.jn"; jo: "dn.jo"; jp: "dn.jp"; jq: "dn.jq"; jr: "dn.jr"; js: "dn.js"; jt: "dn.jt"; ju: "dn.ju"; jv: "dn.jv"; jw: "dn.jw"; jx: "dn.jx"; jy: "dn.jy"; jz: "dn.jz"; ka: "dn.ka"; kb: "dn.kb"; kc: "dn.kc"; kd: "dn.kd"; ke: "dn.ke"; kf: "dn.kf"; kg: "dn.kg"; kh: "dn.kh"; ki: "dn.ki"; kj: "dn.kj"; kk: "dn.kk"; kl: "dn.kl"; km: "dn.km"; kn: "dn.kn"; ko: "dn.ko"; kp: "dn.kp"; kq: "dn.kq"; kr: "dn.kr"; ks: "dn.ks"; kt: "dn.kt"; ku: "dn.ku"; kv: "dn.kv"; kw: "dn.kw"; kx: "dn.kx"; ky: "dn.ky"; kz: "dn.kz"; la: "dn.la"; lb: "dn.lb"; lc: "dn.lc"; ld: "dn.ld"; le: "dn.le"; lf: "dn.lf"; lg: "dn.lg"; lh: "dn.lh"; li: "dn.li"; lj: "dn.lj"; lk: "dn.lk"; ll: "dn.ll"; lm: "dn.lm"; ln: "dn.ln"; lo: "dn.lo"; lp: "dn.lp"; lq: "dn.lq"; lr: "dn.lr"; ls: "dn.ls"; lt: "dn.lt"; lu: "dn.lu"; lv: "dn.lv"; lw: "dn.lw"; lx: "dn.lx"; ly: "dn.ly"; lz: "dn.lz"; ma: "dn.ma"; mb: "dn.mb"; mc: "dn.mc"; md: "dn.md"; me: "dn.me"; mf: "dn.mf"; mg: "dn.mg"; mh: "dn.mh"; mi: "dn.mi"; mj: "dn.mj"; mk: "dn.mk"; ml: "dn.ml"; mm: "dn.mm"; mn: "dn.mn"; mo: "dn.mo"; mp: "dn.mp"; mq: "dn.mq"; mr: "dn.mr"; ms: "dn.ms"; mt: "dn.mt"; mu: "dn.mu"; mv: "dn.mv"; mw: "dn.mw"; mx: "dn.mx"; my: "dn.my"; mz: "dn.mz"; na: "dn.na"; nb: "dn.nb"; nc: "dn.nc"; nd: "dn.nd"; ne: "dn.ne"; nf: "dn.nf"; ng: "dn.ng"; nh: "dn.nh"; ni: "dn.ni"; nj: "dn.nj"; nk: "dn.nk"; nl: "dn.nl"; nm: "dn.nm"; nn: "dn.nn"; no: "dn.no"; np: "dn.np"; nq: "dn.nq"; nr: "dn.nr"; ns: "dn.ns"; nt: "dn.nt"; nu: "dn.nu"; nv: "dn.nv"; nw: "dn.nw"; nx: "dn.nx"; ny: "dn.ny"; nz: "dn.nz"; oa: "dn.oa"; ob: "dn.ob"; oc: "dn.oc"; od: "dn.od"; oe: "dn.oe"; of: "dn.of"; og: "dn.og"; oh: "dn.oh"; oi: "dn.oi"; oj: "dn.oj"; ok: "dn.ok"; ol: "dn.ol"; om: "dn.om"; on: "dn.on"; oo: "dn.oo"; op: "dn.op"; oq: "dn.oq"; or: "dn.or"; os: "dn.os"; ot: "dn.ot"; ou: "dn.ou"; ov: "dn.ov"; ow: "dn.ow"; ox: "dn.ox"; oy: "dn.oy"; oz: "dn.oz"; pa: "dn.pa"; pb: "dn.pb"; pc: "dn.pc"; pd: "dn.pd"; pe: "dn.pe"; pf: "dn.pf"; pg: "dn.pg"; ph: "dn.ph"; pi: "dn.pi"; pj: "dn.pj"; pk: "dn.pk"; pl: "dn.pl"; pm: "dn.pm"; pn: "dn.pn"; po: "dn.po"; pp: "dn.pp"; pq: "dn.pq"; pr: "dn.pr"; ps: "dn.ps"; pt: "dn.pt"; pu: "dn.pu"; pv: "dn.pv"; pw: "dn.pw"; px: "dn.px"; py: "dn.py"; pz: "dn.pz"; qa: "dn.qa"; qb: "dn.qb"; qc: "dn.qc"; qd: "dn.qd"; qe: "dn.qe"; qf: "dn.qf"; qg: "dn.qg"; qh: "dn.qh"; qi: "dn.qi"; qj: "dn.qj"; qk: "dn.qk"; ql: "dn.ql"; qm: "dn.qm"; qn: "dn.qn"; qo: "dn.qo"; qp: "dn.qp"; qq: "dn.qq"; qr: "dn.qr"; qs: "dn.qs"; qt: "dn.qt"; qu: "dn.qu"; qv: "dn.qv"; qw: "dn.qw"; qx: "dn.qx"; qy: "dn.qy"; qz: "dn.qz"; ra: "dn.ra"; rb: "dn.rb"; rc: "dn.rc"; rd: "dn.rd"; re: "dn.re"; rf: "dn.rf"; rg: "dn.rg"; rh: "dn.rh"; ri: "dn.ri"; rj: "dn.rj"; rk: "dn.rk"; rl: "dn.rl"; rm: "dn.rm"; rn: "dn.rn"; ro: "dn.ro"; rp: "dn.rp"; rq: "dn.rq"; rr: "dn.rr"; rs: "dn.rs"; rt: "dn.rt"; ru: "dn.ru"; rv: "dn.rv"; rw: "dn.rw"; rx: "dn.rx"; ry: "dn.ry"; rz: "dn.rz"; sa: "dn.sa"; sb: "dn.sb"; sc: "dn.sc"; sd: "dn.sd"; se: "dn.se"; sf: "dn.sf"; sg: "dn.sg"; sh: "dn.sh"; si: "dn.si"; sj: "dn.sj"; sk: "dn.sk"; sl: "dn.sl"; sm: "dn.sm"; sn: "dn.sn"; so: "dn.so"; sp: "dn.sp"; sq: "dn.sq"; sr: "dn.sr"; ss: "dn.ss"; st: "dn.st"; su: "dn.su"; sv: "dn.sv"; sw: "dn.sw"; sx: "dn.sx"; sy: "dn.sy"; sz: "dn.sz"; ta: "dn.ta"; tb: "dn.tb"; tc: "dn.tc"; td: "dn.td"; te: "dn.te"; tf: "dn.tf"; tg: "dn.tg"; th: "dn.th"; ti: "dn.ti"; tj: "dn.tj"; tk: "dn.tk"; tl: "dn.tl"; tm: "dn.tm"; tn: "dn.tn"; to: "dn.to"; tp: "dn.tp"; tq: "dn.tq"; tr: "dn.tr"; ts: "dn.ts"; tt: "dn.tt"; tu: "dn.tu"; tv: "dn.tv"; tw: "dn.tw"; tx: "dn.tx"; ty: "dn.ty"; tz: "dn.tz"; ua: "dn.ua"; ub: "dn.ub"; uc: "dn.uc"; ud: "dn.ud"; ue: "dn.ue"; uf: "dn.uf"; ug: "dn.ug"; uh: "dn.uh"; ui: "dn.ui"; uj: "dn.uj"; uk: "dn.uk"; ul: "dn.ul"; um: "dn.um"; un: "dn.un"; uo: "dn.uo"; up: "dn.up"; uq: "dn.uq"; ur: "dn.ur"; us: "dn.us"; ut: "dn.ut"; uu: "dn.uu"; uv: "dn.uv"; uw: "dn.uw"; ux: "dn.ux"; uy: "dn.uy"; uz: "dn.uz"; va: "dn.va"; vb: "dn.vb"; vc: "dn.vc"; vd: "dn.vd"; ve: "dn.ve"; vf: "dn.vf"; vg: "dn.vg"; vh: "dn.vh"; vi: "dn.vi"; vj: "dn.vj"; vk: "dn.vk"; vl: "dn.vl"; vm: "dn.vm"; vn: "dn.vn"; vo: "dn.vo"; vp: "dn.vp"; vq: "dn.vq"; vr: "dn.vr"; vs: "dn.vs"; vt: "dn.vt"; vu: "dn.vu"; vv: "dn.vv"; vw: "dn.vw"; vx: "dn.vx"; vy: "dn.vy"; vz: "dn.vz"; wa: "dn.wa"; wb: "dn.wb"; wc: "dn.wc"; wd: "dn.wd"; we: "dn.we"; wf: "dn.wf"; wg: "dn.wg"; wh: "dn.wh"; wi: "dn.wi"; wj: "dn.wj"; wk: "dn.wk"; wl: "dn.wl"; wm: "dn.wm"; wn: "dn.wn"; wo: "dn.wo"; wp: "dn.wp"; wq: "dn.wq"; wr: "dn.wr"; ws: "dn.ws"; wt: "dn.wt"; wu: "dn.wu"; wv: "dn.wv"; ww: "dn.ww"; wx: "dn.wx"; wy: "dn.wy"; wz: "dn.wz"; xa: "dn.xa"; xb: "dn.xb"; xc: "dn.xc"; xd: "dn.xd"; xe: "dn.xe"; xf: "dn.xf"; xg: "dn.xg"; xh: "dn.xh"; xi: "dn.xi"; xj: "dn.xj"; xk: "dn.xk"; xl: "dn.xl"; xm: "dn.xm"; xn: "dn.xn"; xo: "dn.xo"; xp: "dn.xp"; xq: "dn.xq"; xr: "dn.xr"; xs: "dn.xs"; xt: "dn.xt"; xu: "dn.xu"; xv: "dn.xv"; xw: "dn.xw"; xx: "dn.xx"; xy: "dn.xy"; xz: "dn.xz"; ya: "dn.ya"; yb: "dn.yb"; yc: "dn.yc"; yd: "dn.yd"; ye: "dn.ye"; yf: "dn.yf"; yg: "dn.yg"; yh: "dn.yh"; yi: "dn.yi"; yj: "dn.yj"; yk: "dn.yk"; yl: "dn.yl"; ym: "dn.ym"; yn: "dn.yn"; yo: "dn.yo"; yp: "dn.yp"; yq: "dn.yq"; yr: "dn.yr"; ys: "dn.ys"; yt: "dn.yt"; yu: "dn.yu"; yv: "dn.yv"; yw: "dn.yw"; yx: "dn.yx"; yy: "dn.yy"; yz: "dn.yz"; za: "dn.za"; zb: "dn.zb"; zc: "dn.zc"; zd: "dn.zd"; ze: "dn.ze"; zf: "dn.zf"; zg: "dn.zg"; zh: "dn.zh"; zi: "dn.zi"; zj: "dn.zj"; zk: "dn.zk"; zl: "dn.zl"; zm: "dn.zm"; zn: "dn.zn"; zo: "dn.zo"; zp: "dn.zp"; zq: "dn.zq"; zr: "dn.zr"; zs: "dn.zs"; zt: "dn.zt"; zu: "dn.zu"; zv: "dn.zv"; zw: "dn.zw"; zx: "dn.zx"; zy: "dn.zy"; zz: "dn.zz"; }; do: { aa: "do.aa"; ab: "do.ab"; ac: "do.ac"; ad: "do.ad"; ae: "do.ae"; af: "do.af"; ag: "do.ag"; ah: "do.ah"; ai: "do.ai"; aj: "do.aj"; ak: "do.ak"; al: "do.al"; am: "do.am"; an: "do.an"; ao: "do.ao"; ap: "do.ap"; aq: "do.aq"; ar: "do.ar"; as: "do.as"; at: "do.at"; au: "do.au"; av: "do.av"; aw: "do.aw"; ax: "do.ax"; ay: "do.ay"; az: "do.az"; ba: "do.ba"; bb: "do.bb"; bc: "do.bc"; bd: "do.bd"; be: "do.be"; bf: "do.bf"; bg: "do.bg"; bh: "do.bh"; bi: "do.bi"; bj: "do.bj"; bk: "do.bk"; bl: "do.bl"; bm: "do.bm"; bn: "do.bn"; bo: "do.bo"; bp: "do.bp"; bq: "do.bq"; br: "do.br"; bs: "do.bs"; bt: "do.bt"; bu: "do.bu"; bv: "do.bv"; bw: "do.bw"; bx: "do.bx"; by: "do.by"; bz: "do.bz"; ca: "do.ca"; cb: "do.cb"; cc: "do.cc"; cd: "do.cd"; ce: "do.ce"; cf: "do.cf"; cg: "do.cg"; ch: "do.ch"; ci: "do.ci"; cj: "do.cj"; ck: "do.ck"; cl: "do.cl"; cm: "do.cm"; cn: "do.cn"; co: "do.co"; cp: "do.cp"; cq: "do.cq"; cr: "do.cr"; cs: "do.cs"; ct: "do.ct"; cu: "do.cu"; cv: "do.cv"; cw: "do.cw"; cx: "do.cx"; cy: "do.cy"; cz: "do.cz"; da: "do.da"; db: "do.db"; dc: "do.dc"; dd: "do.dd"; de: "do.de"; df: "do.df"; dg: "do.dg"; dh: "do.dh"; di: "do.di"; dj: "do.dj"; dk: "do.dk"; dl: "do.dl"; dm: "do.dm"; dn: "do.dn"; do: "do.do"; dp: "do.dp"; dq: "do.dq"; dr: "do.dr"; ds: "do.ds"; dt: "do.dt"; du: "do.du"; dv: "do.dv"; dw: "do.dw"; dx: "do.dx"; dy: "do.dy"; dz: "do.dz"; ea: "do.ea"; eb: "do.eb"; ec: "do.ec"; ed: "do.ed"; ee: "do.ee"; ef: "do.ef"; eg: "do.eg"; eh: "do.eh"; ei: "do.ei"; ej: "do.ej"; ek: "do.ek"; el: "do.el"; em: "do.em"; en: "do.en"; eo: "do.eo"; ep: "do.ep"; eq: "do.eq"; er: "do.er"; es: "do.es"; et: "do.et"; eu: "do.eu"; ev: "do.ev"; ew: "do.ew"; ex: "do.ex"; ey: "do.ey"; ez: "do.ez"; fa: "do.fa"; fb: "do.fb"; fc: "do.fc"; fd: "do.fd"; fe: "do.fe"; ff: "do.ff"; fg: "do.fg"; fh: "do.fh"; fi: "do.fi"; fj: "do.fj"; fk: "do.fk"; fl: "do.fl"; fm: "do.fm"; fn: "do.fn"; fo: "do.fo"; fp: "do.fp"; fq: "do.fq"; fr: "do.fr"; fs: "do.fs"; ft: "do.ft"; fu: "do.fu"; fv: "do.fv"; fw: "do.fw"; fx: "do.fx"; fy: "do.fy"; fz: "do.fz"; ga: "do.ga"; gb: "do.gb"; gc: "do.gc"; gd: "do.gd"; ge: "do.ge"; gf: "do.gf"; gg: "do.gg"; gh: "do.gh"; gi: "do.gi"; gj: "do.gj"; gk: "do.gk"; gl: "do.gl"; gm: "do.gm"; gn: "do.gn"; go: "do.go"; gp: "do.gp"; gq: "do.gq"; gr: "do.gr"; gs: "do.gs"; gt: "do.gt"; gu: "do.gu"; gv: "do.gv"; gw: "do.gw"; gx: "do.gx"; gy: "do.gy"; gz: "do.gz"; ha: "do.ha"; hb: "do.hb"; hc: "do.hc"; hd: "do.hd"; he: "do.he"; hf: "do.hf"; hg: "do.hg"; hh: "do.hh"; hi: "do.hi"; hj: "do.hj"; hk: "do.hk"; hl: "do.hl"; hm: "do.hm"; hn: "do.hn"; ho: "do.ho"; hp: "do.hp"; hq: "do.hq"; hr: "do.hr"; hs: "do.hs"; ht: "do.ht"; hu: "do.hu"; hv: "do.hv"; hw: "do.hw"; hx: "do.hx"; hy: "do.hy"; hz: "do.hz"; ia: "do.ia"; ib: "do.ib"; ic: "do.ic"; id: "do.id"; ie: "do.ie"; if: "do.if"; ig: "do.ig"; ih: "do.ih"; ii: "do.ii"; ij: "do.ij"; ik: "do.ik"; il: "do.il"; im: "do.im"; in: "do.in"; io: "do.io"; ip: "do.ip"; iq: "do.iq"; ir: "do.ir"; is: "do.is"; it: "do.it"; iu: "do.iu"; iv: "do.iv"; iw: "do.iw"; ix: "do.ix"; iy: "do.iy"; iz: "do.iz"; ja: "do.ja"; jb: "do.jb"; jc: "do.jc"; jd: "do.jd"; je: "do.je"; jf: "do.jf"; jg: "do.jg"; jh: "do.jh"; ji: "do.ji"; jj: "do.jj"; jk: "do.jk"; jl: "do.jl"; jm: "do.jm"; jn: "do.jn"; jo: "do.jo"; jp: "do.jp"; jq: "do.jq"; jr: "do.jr"; js: "do.js"; jt: "do.jt"; ju: "do.ju"; jv: "do.jv"; jw: "do.jw"; jx: "do.jx"; jy: "do.jy"; jz: "do.jz"; ka: "do.ka"; kb: "do.kb"; kc: "do.kc"; kd: "do.kd"; ke: "do.ke"; kf: "do.kf"; kg: "do.kg"; kh: "do.kh"; ki: "do.ki"; kj: "do.kj"; kk: "do.kk"; kl: "do.kl"; km: "do.km"; kn: "do.kn"; ko: "do.ko"; kp: "do.kp"; kq: "do.kq"; kr: "do.kr"; ks: "do.ks"; kt: "do.kt"; ku: "do.ku"; kv: "do.kv"; kw: "do.kw"; kx: "do.kx"; ky: "do.ky"; kz: "do.kz"; la: "do.la"; lb: "do.lb"; lc: "do.lc"; ld: "do.ld"; le: "do.le"; lf: "do.lf"; lg: "do.lg"; lh: "do.lh"; li: "do.li"; lj: "do.lj"; lk: "do.lk"; ll: "do.ll"; lm: "do.lm"; ln: "do.ln"; lo: "do.lo"; lp: "do.lp"; lq: "do.lq"; lr: "do.lr"; ls: "do.ls"; lt: "do.lt"; lu: "do.lu"; lv: "do.lv"; lw: "do.lw"; lx: "do.lx"; ly: "do.ly"; lz: "do.lz"; ma: "do.ma"; mb: "do.mb"; mc: "do.mc"; md: "do.md"; me: "do.me"; mf: "do.mf"; mg: "do.mg"; mh: "do.mh"; mi: "do.mi"; mj: "do.mj"; mk: "do.mk"; ml: "do.ml"; mm: "do.mm"; mn: "do.mn"; mo: "do.mo"; mp: "do.mp"; mq: "do.mq"; mr: "do.mr"; ms: "do.ms"; mt: "do.mt"; mu: "do.mu"; mv: "do.mv"; mw: "do.mw"; mx: "do.mx"; my: "do.my"; mz: "do.mz"; na: "do.na"; nb: "do.nb"; nc: "do.nc"; nd: "do.nd"; ne: "do.ne"; nf: "do.nf"; ng: "do.ng"; nh: "do.nh"; ni: "do.ni"; nj: "do.nj"; nk: "do.nk"; nl: "do.nl"; nm: "do.nm"; nn: "do.nn"; no: "do.no"; np: "do.np"; nq: "do.nq"; nr: "do.nr"; ns: "do.ns"; nt: "do.nt"; nu: "do.nu"; nv: "do.nv"; nw: "do.nw"; nx: "do.nx"; ny: "do.ny"; nz: "do.nz"; oa: "do.oa"; ob: "do.ob"; oc: "do.oc"; od: "do.od"; oe: "do.oe"; of: "do.of"; og: "do.og"; oh: "do.oh"; oi: "do.oi"; oj: "do.oj"; ok: "do.ok"; ol: "do.ol"; om: "do.om"; on: "do.on"; oo: "do.oo"; op: "do.op"; oq: "do.oq"; or: "do.or"; os: "do.os"; ot: "do.ot"; ou: "do.ou"; ov: "do.ov"; ow: "do.ow"; ox: "do.ox"; oy: "do.oy"; oz: "do.oz"; pa: "do.pa"; pb: "do.pb"; pc: "do.pc"; pd: "do.pd"; pe: "do.pe"; pf: "do.pf"; pg: "do.pg"; ph: "do.ph"; pi: "do.pi"; pj: "do.pj"; pk: "do.pk"; pl: "do.pl"; pm: "do.pm"; pn: "do.pn"; po: "do.po"; pp: "do.pp"; pq: "do.pq"; pr: "do.pr"; ps: "do.ps"; pt: "do.pt"; pu: "do.pu"; pv: "do.pv"; pw: "do.pw"; px: "do.px"; py: "do.py"; pz: "do.pz"; qa: "do.qa"; qb: "do.qb"; qc: "do.qc"; qd: "do.qd"; qe: "do.qe"; qf: "do.qf"; qg: "do.qg"; qh: "do.qh"; qi: "do.qi"; qj: "do.qj"; qk: "do.qk"; ql: "do.ql"; qm: "do.qm"; qn: "do.qn"; qo: "do.qo"; qp: "do.qp"; qq: "do.qq"; qr: "do.qr"; qs: "do.qs"; qt: "do.qt"; qu: "do.qu"; qv: "do.qv"; qw: "do.qw"; qx: "do.qx"; qy: "do.qy"; qz: "do.qz"; ra: "do.ra"; rb: "do.rb"; rc: "do.rc"; rd: "do.rd"; re: "do.re"; rf: "do.rf"; rg: "do.rg"; rh: "do.rh"; ri: "do.ri"; rj: "do.rj"; rk: "do.rk"; rl: "do.rl"; rm: "do.rm"; rn: "do.rn"; ro: "do.ro"; rp: "do.rp"; rq: "do.rq"; rr: "do.rr"; rs: "do.rs"; rt: "do.rt"; ru: "do.ru"; rv: "do.rv"; rw: "do.rw"; rx: "do.rx"; ry: "do.ry"; rz: "do.rz"; sa: "do.sa"; sb: "do.sb"; sc: "do.sc"; sd: "do.sd"; se: "do.se"; sf: "do.sf"; sg: "do.sg"; sh: "do.sh"; si: "do.si"; sj: "do.sj"; sk: "do.sk"; sl: "do.sl"; sm: "do.sm"; sn: "do.sn"; so: "do.so"; sp: "do.sp"; sq: "do.sq"; sr: "do.sr"; ss: "do.ss"; st: "do.st"; su: "do.su"; sv: "do.sv"; sw: "do.sw"; sx: "do.sx"; sy: "do.sy"; sz: "do.sz"; ta: "do.ta"; tb: "do.tb"; tc: "do.tc"; td: "do.td"; te: "do.te"; tf: "do.tf"; tg: "do.tg"; th: "do.th"; ti: "do.ti"; tj: "do.tj"; tk: "do.tk"; tl: "do.tl"; tm: "do.tm"; tn: "do.tn"; to: "do.to"; tp: "do.tp"; tq: "do.tq"; tr: "do.tr"; ts: "do.ts"; tt: "do.tt"; tu: "do.tu"; tv: "do.tv"; tw: "do.tw"; tx: "do.tx"; ty: "do.ty"; tz: "do.tz"; ua: "do.ua"; ub: "do.ub"; uc: "do.uc"; ud: "do.ud"; ue: "do.ue"; uf: "do.uf"; ug: "do.ug"; uh: "do.uh"; ui: "do.ui"; uj: "do.uj"; uk: "do.uk"; ul: "do.ul"; um: "do.um"; un: "do.un"; uo: "do.uo"; up: "do.up"; uq: "do.uq"; ur: "do.ur"; us: "do.us"; ut: "do.ut"; uu: "do.uu"; uv: "do.uv"; uw: "do.uw"; ux: "do.ux"; uy: "do.uy"; uz: "do.uz"; va: "do.va"; vb: "do.vb"; vc: "do.vc"; vd: "do.vd"; ve: "do.ve"; vf: "do.vf"; vg: "do.vg"; vh: "do.vh"; vi: "do.vi"; vj: "do.vj"; vk: "do.vk"; vl: "do.vl"; vm: "do.vm"; vn: "do.vn"; vo: "do.vo"; vp: "do.vp"; vq: "do.vq"; vr: "do.vr"; vs: "do.vs"; vt: "do.vt"; vu: "do.vu"; vv: "do.vv"; vw: "do.vw"; vx: "do.vx"; vy: "do.vy"; vz: "do.vz"; wa: "do.wa"; wb: "do.wb"; wc: "do.wc"; wd: "do.wd"; we: "do.we"; wf: "do.wf"; wg: "do.wg"; wh: "do.wh"; wi: "do.wi"; wj: "do.wj"; wk: "do.wk"; wl: "do.wl"; wm: "do.wm"; wn: "do.wn"; wo: "do.wo"; wp: "do.wp"; wq: "do.wq"; wr: "do.wr"; ws: "do.ws"; wt: "do.wt"; wu: "do.wu"; wv: "do.wv"; ww: "do.ww"; wx: "do.wx"; wy: "do.wy"; wz: "do.wz"; xa: "do.xa"; xb: "do.xb"; xc: "do.xc"; xd: "do.xd"; xe: "do.xe"; xf: "do.xf"; xg: "do.xg"; xh: "do.xh"; xi: "do.xi"; xj: "do.xj"; xk: "do.xk"; xl: "do.xl"; xm: "do.xm"; xn: "do.xn"; xo: "do.xo"; xp: "do.xp"; xq: "do.xq"; xr: "do.xr"; xs: "do.xs"; xt: "do.xt"; xu: "do.xu"; xv: "do.xv"; xw: "do.xw"; xx: "do.xx"; xy: "do.xy"; xz: "do.xz"; ya: "do.ya"; yb: "do.yb"; yc: "do.yc"; yd: "do.yd"; ye: "do.ye"; yf: "do.yf"; yg: "do.yg"; yh: "do.yh"; yi: "do.yi"; yj: "do.yj"; yk: "do.yk"; yl: "do.yl"; ym: "do.ym"; yn: "do.yn"; yo: "do.yo"; yp: "do.yp"; yq: "do.yq"; yr: "do.yr"; ys: "do.ys"; yt: "do.yt"; yu: "do.yu"; yv: "do.yv"; yw: "do.yw"; yx: "do.yx"; yy: "do.yy"; yz: "do.yz"; za: "do.za"; zb: "do.zb"; zc: "do.zc"; zd: "do.zd"; ze: "do.ze"; zf: "do.zf"; zg: "do.zg"; zh: "do.zh"; zi: "do.zi"; zj: "do.zj"; zk: "do.zk"; zl: "do.zl"; zm: "do.zm"; zn: "do.zn"; zo: "do.zo"; zp: "do.zp"; zq: "do.zq"; zr: "do.zr"; zs: "do.zs"; zt: "do.zt"; zu: "do.zu"; zv: "do.zv"; zw: "do.zw"; zx: "do.zx"; zy: "do.zy"; zz: "do.zz"; }; dp: { aa: "dp.aa"; ab: "dp.ab"; ac: "dp.ac"; ad: "dp.ad"; ae: "dp.ae"; af: "dp.af"; ag: "dp.ag"; ah: "dp.ah"; ai: "dp.ai"; aj: "dp.aj"; ak: "dp.ak"; al: "dp.al"; am: "dp.am"; an: "dp.an"; ao: "dp.ao"; ap: "dp.ap"; aq: "dp.aq"; ar: "dp.ar"; as: "dp.as"; at: "dp.at"; au: "dp.au"; av: "dp.av"; aw: "dp.aw"; ax: "dp.ax"; ay: "dp.ay"; az: "dp.az"; ba: "dp.ba"; bb: "dp.bb"; bc: "dp.bc"; bd: "dp.bd"; be: "dp.be"; bf: "dp.bf"; bg: "dp.bg"; bh: "dp.bh"; bi: "dp.bi"; bj: "dp.bj"; bk: "dp.bk"; bl: "dp.bl"; bm: "dp.bm"; bn: "dp.bn"; bo: "dp.bo"; bp: "dp.bp"; bq: "dp.bq"; br: "dp.br"; bs: "dp.bs"; bt: "dp.bt"; bu: "dp.bu"; bv: "dp.bv"; bw: "dp.bw"; bx: "dp.bx"; by: "dp.by"; bz: "dp.bz"; ca: "dp.ca"; cb: "dp.cb"; cc: "dp.cc"; cd: "dp.cd"; ce: "dp.ce"; cf: "dp.cf"; cg: "dp.cg"; ch: "dp.ch"; ci: "dp.ci"; cj: "dp.cj"; ck: "dp.ck"; cl: "dp.cl"; cm: "dp.cm"; cn: "dp.cn"; co: "dp.co"; cp: "dp.cp"; cq: "dp.cq"; cr: "dp.cr"; cs: "dp.cs"; ct: "dp.ct"; cu: "dp.cu"; cv: "dp.cv"; cw: "dp.cw"; cx: "dp.cx"; cy: "dp.cy"; cz: "dp.cz"; da: "dp.da"; db: "dp.db"; dc: "dp.dc"; dd: "dp.dd"; de: "dp.de"; df: "dp.df"; dg: "dp.dg"; dh: "dp.dh"; di: "dp.di"; dj: "dp.dj"; dk: "dp.dk"; dl: "dp.dl"; dm: "dp.dm"; dn: "dp.dn"; do: "dp.do"; dp: "dp.dp"; dq: "dp.dq"; dr: "dp.dr"; ds: "dp.ds"; dt: "dp.dt"; du: "dp.du"; dv: "dp.dv"; dw: "dp.dw"; dx: "dp.dx"; dy: "dp.dy"; dz: "dp.dz"; ea: "dp.ea"; eb: "dp.eb"; ec: "dp.ec"; ed: "dp.ed"; ee: "dp.ee"; ef: "dp.ef"; eg: "dp.eg"; eh: "dp.eh"; ei: "dp.ei"; ej: "dp.ej"; ek: "dp.ek"; el: "dp.el"; em: "dp.em"; en: "dp.en"; eo: "dp.eo"; ep: "dp.ep"; eq: "dp.eq"; er: "dp.er"; es: "dp.es"; et: "dp.et"; eu: "dp.eu"; ev: "dp.ev"; ew: "dp.ew"; ex: "dp.ex"; ey: "dp.ey"; ez: "dp.ez"; fa: "dp.fa"; fb: "dp.fb"; fc: "dp.fc"; fd: "dp.fd"; fe: "dp.fe"; ff: "dp.ff"; fg: "dp.fg"; fh: "dp.fh"; fi: "dp.fi"; fj: "dp.fj"; fk: "dp.fk"; fl: "dp.fl"; fm: "dp.fm"; fn: "dp.fn"; fo: "dp.fo"; fp: "dp.fp"; fq: "dp.fq"; fr: "dp.fr"; fs: "dp.fs"; ft: "dp.ft"; fu: "dp.fu"; fv: "dp.fv"; fw: "dp.fw"; fx: "dp.fx"; fy: "dp.fy"; fz: "dp.fz"; ga: "dp.ga"; gb: "dp.gb"; gc: "dp.gc"; gd: "dp.gd"; ge: "dp.ge"; gf: "dp.gf"; gg: "dp.gg"; gh: "dp.gh"; gi: "dp.gi"; gj: "dp.gj"; gk: "dp.gk"; gl: "dp.gl"; gm: "dp.gm"; gn: "dp.gn"; go: "dp.go"; gp: "dp.gp"; gq: "dp.gq"; gr: "dp.gr"; gs: "dp.gs"; gt: "dp.gt"; gu: "dp.gu"; gv: "dp.gv"; gw: "dp.gw"; gx: "dp.gx"; gy: "dp.gy"; gz: "dp.gz"; ha: "dp.ha"; hb: "dp.hb"; hc: "dp.hc"; hd: "dp.hd"; he: "dp.he"; hf: "dp.hf"; hg: "dp.hg"; hh: "dp.hh"; hi: "dp.hi"; hj: "dp.hj"; hk: "dp.hk"; hl: "dp.hl"; hm: "dp.hm"; hn: "dp.hn"; ho: "dp.ho"; hp: "dp.hp"; hq: "dp.hq"; hr: "dp.hr"; hs: "dp.hs"; ht: "dp.ht"; hu: "dp.hu"; hv: "dp.hv"; hw: "dp.hw"; hx: "dp.hx"; hy: "dp.hy"; hz: "dp.hz"; ia: "dp.ia"; ib: "dp.ib"; ic: "dp.ic"; id: "dp.id"; ie: "dp.ie"; if: "dp.if"; ig: "dp.ig"; ih: "dp.ih"; ii: "dp.ii"; ij: "dp.ij"; ik: "dp.ik"; il: "dp.il"; im: "dp.im"; in: "dp.in"; io: "dp.io"; ip: "dp.ip"; iq: "dp.iq"; ir: "dp.ir"; is: "dp.is"; it: "dp.it"; iu: "dp.iu"; iv: "dp.iv"; iw: "dp.iw"; ix: "dp.ix"; iy: "dp.iy"; iz: "dp.iz"; ja: "dp.ja"; jb: "dp.jb"; jc: "dp.jc"; jd: "dp.jd"; je: "dp.je"; jf: "dp.jf"; jg: "dp.jg"; jh: "dp.jh"; ji: "dp.ji"; jj: "dp.jj"; jk: "dp.jk"; jl: "dp.jl"; jm: "dp.jm"; jn: "dp.jn"; jo: "dp.jo"; jp: "dp.jp"; jq: "dp.jq"; jr: "dp.jr"; js: "dp.js"; jt: "dp.jt"; ju: "dp.ju"; jv: "dp.jv"; jw: "dp.jw"; jx: "dp.jx"; jy: "dp.jy"; jz: "dp.jz"; ka: "dp.ka"; kb: "dp.kb"; kc: "dp.kc"; kd: "dp.kd"; ke: "dp.ke"; kf: "dp.kf"; kg: "dp.kg"; kh: "dp.kh"; ki: "dp.ki"; kj: "dp.kj"; kk: "dp.kk"; kl: "dp.kl"; km: "dp.km"; kn: "dp.kn"; ko: "dp.ko"; kp: "dp.kp"; kq: "dp.kq"; kr: "dp.kr"; ks: "dp.ks"; kt: "dp.kt"; ku: "dp.ku"; kv: "dp.kv"; kw: "dp.kw"; kx: "dp.kx"; ky: "dp.ky"; kz: "dp.kz"; la: "dp.la"; lb: "dp.lb"; lc: "dp.lc"; ld: "dp.ld"; le: "dp.le"; lf: "dp.lf"; lg: "dp.lg"; lh: "dp.lh"; li: "dp.li"; lj: "dp.lj"; lk: "dp.lk"; ll: "dp.ll"; lm: "dp.lm"; ln: "dp.ln"; lo: "dp.lo"; lp: "dp.lp"; lq: "dp.lq"; lr: "dp.lr"; ls: "dp.ls"; lt: "dp.lt"; lu: "dp.lu"; lv: "dp.lv"; lw: "dp.lw"; lx: "dp.lx"; ly: "dp.ly"; lz: "dp.lz"; ma: "dp.ma"; mb: "dp.mb"; mc: "dp.mc"; md: "dp.md"; me: "dp.me"; mf: "dp.mf"; mg: "dp.mg"; mh: "dp.mh"; mi: "dp.mi"; mj: "dp.mj"; mk: "dp.mk"; ml: "dp.ml"; mm: "dp.mm"; mn: "dp.mn"; mo: "dp.mo"; mp: "dp.mp"; mq: "dp.mq"; mr: "dp.mr"; ms: "dp.ms"; mt: "dp.mt"; mu: "dp.mu"; mv: "dp.mv"; mw: "dp.mw"; mx: "dp.mx"; my: "dp.my"; mz: "dp.mz"; na: "dp.na"; nb: "dp.nb"; nc: "dp.nc"; nd: "dp.nd"; ne: "dp.ne"; nf: "dp.nf"; ng: "dp.ng"; nh: "dp.nh"; ni: "dp.ni"; nj: "dp.nj"; nk: "dp.nk"; nl: "dp.nl"; nm: "dp.nm"; nn: "dp.nn"; no: "dp.no"; np: "dp.np"; nq: "dp.nq"; nr: "dp.nr"; ns: "dp.ns"; nt: "dp.nt"; nu: "dp.nu"; nv: "dp.nv"; nw: "dp.nw"; nx: "dp.nx"; ny: "dp.ny"; nz: "dp.nz"; oa: "dp.oa"; ob: "dp.ob"; oc: "dp.oc"; od: "dp.od"; oe: "dp.oe"; of: "dp.of"; og: "dp.og"; oh: "dp.oh"; oi: "dp.oi"; oj: "dp.oj"; ok: "dp.ok"; ol: "dp.ol"; om: "dp.om"; on: "dp.on"; oo: "dp.oo"; op: "dp.op"; oq: "dp.oq"; or: "dp.or"; os: "dp.os"; ot: "dp.ot"; ou: "dp.ou"; ov: "dp.ov"; ow: "dp.ow"; ox: "dp.ox"; oy: "dp.oy"; oz: "dp.oz"; pa: "dp.pa"; pb: "dp.pb"; pc: "dp.pc"; pd: "dp.pd"; pe: "dp.pe"; pf: "dp.pf"; pg: "dp.pg"; ph: "dp.ph"; pi: "dp.pi"; pj: "dp.pj"; pk: "dp.pk"; pl: "dp.pl"; pm: "dp.pm"; pn: "dp.pn"; po: "dp.po"; pp: "dp.pp"; pq: "dp.pq"; pr: "dp.pr"; ps: "dp.ps"; pt: "dp.pt"; pu: "dp.pu"; pv: "dp.pv"; pw: "dp.pw"; px: "dp.px"; py: "dp.py"; pz: "dp.pz"; qa: "dp.qa"; qb: "dp.qb"; qc: "dp.qc"; qd: "dp.qd"; qe: "dp.qe"; qf: "dp.qf"; qg: "dp.qg"; qh: "dp.qh"; qi: "dp.qi"; qj: "dp.qj"; qk: "dp.qk"; ql: "dp.ql"; qm: "dp.qm"; qn: "dp.qn"; qo: "dp.qo"; qp: "dp.qp"; qq: "dp.qq"; qr: "dp.qr"; qs: "dp.qs"; qt: "dp.qt"; qu: "dp.qu"; qv: "dp.qv"; qw: "dp.qw"; qx: "dp.qx"; qy: "dp.qy"; qz: "dp.qz"; ra: "dp.ra"; rb: "dp.rb"; rc: "dp.rc"; rd: "dp.rd"; re: "dp.re"; rf: "dp.rf"; rg: "dp.rg"; rh: "dp.rh"; ri: "dp.ri"; rj: "dp.rj"; rk: "dp.rk"; rl: "dp.rl"; rm: "dp.rm"; rn: "dp.rn"; ro: "dp.ro"; rp: "dp.rp"; rq: "dp.rq"; rr: "dp.rr"; rs: "dp.rs"; rt: "dp.rt"; ru: "dp.ru"; rv: "dp.rv"; rw: "dp.rw"; rx: "dp.rx"; ry: "dp.ry"; rz: "dp.rz"; sa: "dp.sa"; sb: "dp.sb"; sc: "dp.sc"; sd: "dp.sd"; se: "dp.se"; sf: "dp.sf"; sg: "dp.sg"; sh: "dp.sh"; si: "dp.si"; sj: "dp.sj"; sk: "dp.sk"; sl: "dp.sl"; sm: "dp.sm"; sn: "dp.sn"; so: "dp.so"; sp: "dp.sp"; sq: "dp.sq"; sr: "dp.sr"; ss: "dp.ss"; st: "dp.st"; su: "dp.su"; sv: "dp.sv"; sw: "dp.sw"; sx: "dp.sx"; sy: "dp.sy"; sz: "dp.sz"; ta: "dp.ta"; tb: "dp.tb"; tc: "dp.tc"; td: "dp.td"; te: "dp.te"; tf: "dp.tf"; tg: "dp.tg"; th: "dp.th"; ti: "dp.ti"; tj: "dp.tj"; tk: "dp.tk"; tl: "dp.tl"; tm: "dp.tm"; tn: "dp.tn"; to: "dp.to"; tp: "dp.tp"; tq: "dp.tq"; tr: "dp.tr"; ts: "dp.ts"; tt: "dp.tt"; tu: "dp.tu"; tv: "dp.tv"; tw: "dp.tw"; tx: "dp.tx"; ty: "dp.ty"; tz: "dp.tz"; ua: "dp.ua"; ub: "dp.ub"; uc: "dp.uc"; ud: "dp.ud"; ue: "dp.ue"; uf: "dp.uf"; ug: "dp.ug"; uh: "dp.uh"; ui: "dp.ui"; uj: "dp.uj"; uk: "dp.uk"; ul: "dp.ul"; um: "dp.um"; un: "dp.un"; uo: "dp.uo"; up: "dp.up"; uq: "dp.uq"; ur: "dp.ur"; us: "dp.us"; ut: "dp.ut"; uu: "dp.uu"; uv: "dp.uv"; uw: "dp.uw"; ux: "dp.ux"; uy: "dp.uy"; uz: "dp.uz"; va: "dp.va"; vb: "dp.vb"; vc: "dp.vc"; vd: "dp.vd"; ve: "dp.ve"; vf: "dp.vf"; vg: "dp.vg"; vh: "dp.vh"; vi: "dp.vi"; vj: "dp.vj"; vk: "dp.vk"; vl: "dp.vl"; vm: "dp.vm"; vn: "dp.vn"; vo: "dp.vo"; vp: "dp.vp"; vq: "dp.vq"; vr: "dp.vr"; vs: "dp.vs"; vt: "dp.vt"; vu: "dp.vu"; vv: "dp.vv"; vw: "dp.vw"; vx: "dp.vx"; vy: "dp.vy"; vz: "dp.vz"; wa: "dp.wa"; wb: "dp.wb"; wc: "dp.wc"; wd: "dp.wd"; we: "dp.we"; wf: "dp.wf"; wg: "dp.wg"; wh: "dp.wh"; wi: "dp.wi"; wj: "dp.wj"; wk: "dp.wk"; wl: "dp.wl"; wm: "dp.wm"; wn: "dp.wn"; wo: "dp.wo"; wp: "dp.wp"; wq: "dp.wq"; wr: "dp.wr"; ws: "dp.ws"; wt: "dp.wt"; wu: "dp.wu"; wv: "dp.wv"; ww: "dp.ww"; wx: "dp.wx"; wy: "dp.wy"; wz: "dp.wz"; xa: "dp.xa"; xb: "dp.xb"; xc: "dp.xc"; xd: "dp.xd"; xe: "dp.xe"; xf: "dp.xf"; xg: "dp.xg"; xh: "dp.xh"; xi: "dp.xi"; xj: "dp.xj"; xk: "dp.xk"; xl: "dp.xl"; xm: "dp.xm"; xn: "dp.xn"; xo: "dp.xo"; xp: "dp.xp"; xq: "dp.xq"; xr: "dp.xr"; xs: "dp.xs"; xt: "dp.xt"; xu: "dp.xu"; xv: "dp.xv"; xw: "dp.xw"; xx: "dp.xx"; xy: "dp.xy"; xz: "dp.xz"; ya: "dp.ya"; yb: "dp.yb"; yc: "dp.yc"; yd: "dp.yd"; ye: "dp.ye"; yf: "dp.yf"; yg: "dp.yg"; yh: "dp.yh"; yi: "dp.yi"; yj: "dp.yj"; yk: "dp.yk"; yl: "dp.yl"; ym: "dp.ym"; yn: "dp.yn"; yo: "dp.yo"; yp: "dp.yp"; yq: "dp.yq"; yr: "dp.yr"; ys: "dp.ys"; yt: "dp.yt"; yu: "dp.yu"; yv: "dp.yv"; yw: "dp.yw"; yx: "dp.yx"; yy: "dp.yy"; yz: "dp.yz"; za: "dp.za"; zb: "dp.zb"; zc: "dp.zc"; zd: "dp.zd"; ze: "dp.ze"; zf: "dp.zf"; zg: "dp.zg"; zh: "dp.zh"; zi: "dp.zi"; zj: "dp.zj"; zk: "dp.zk"; zl: "dp.zl"; zm: "dp.zm"; zn: "dp.zn"; zo: "dp.zo"; zp: "dp.zp"; zq: "dp.zq"; zr: "dp.zr"; zs: "dp.zs"; zt: "dp.zt"; zu: "dp.zu"; zv: "dp.zv"; zw: "dp.zw"; zx: "dp.zx"; zy: "dp.zy"; zz: "dp.zz"; }; dq: { aa: "dq.aa"; ab: "dq.ab"; ac: "dq.ac"; ad: "dq.ad"; ae: "dq.ae"; af: "dq.af"; ag: "dq.ag"; ah: "dq.ah"; ai: "dq.ai"; aj: "dq.aj"; ak: "dq.ak"; al: "dq.al"; am: "dq.am"; an: "dq.an"; ao: "dq.ao"; ap: "dq.ap"; aq: "dq.aq"; ar: "dq.ar"; as: "dq.as"; at: "dq.at"; au: "dq.au"; av: "dq.av"; aw: "dq.aw"; ax: "dq.ax"; ay: "dq.ay"; az: "dq.az"; ba: "dq.ba"; bb: "dq.bb"; bc: "dq.bc"; bd: "dq.bd"; be: "dq.be"; bf: "dq.bf"; bg: "dq.bg"; bh: "dq.bh"; bi: "dq.bi"; bj: "dq.bj"; bk: "dq.bk"; bl: "dq.bl"; bm: "dq.bm"; bn: "dq.bn"; bo: "dq.bo"; bp: "dq.bp"; bq: "dq.bq"; br: "dq.br"; bs: "dq.bs"; bt: "dq.bt"; bu: "dq.bu"; bv: "dq.bv"; bw: "dq.bw"; bx: "dq.bx"; by: "dq.by"; bz: "dq.bz"; ca: "dq.ca"; cb: "dq.cb"; cc: "dq.cc"; cd: "dq.cd"; ce: "dq.ce"; cf: "dq.cf"; cg: "dq.cg"; ch: "dq.ch"; ci: "dq.ci"; cj: "dq.cj"; ck: "dq.ck"; cl: "dq.cl"; cm: "dq.cm"; cn: "dq.cn"; co: "dq.co"; cp: "dq.cp"; cq: "dq.cq"; cr: "dq.cr"; cs: "dq.cs"; ct: "dq.ct"; cu: "dq.cu"; cv: "dq.cv"; cw: "dq.cw"; cx: "dq.cx"; cy: "dq.cy"; cz: "dq.cz"; da: "dq.da"; db: "dq.db"; dc: "dq.dc"; dd: "dq.dd"; de: "dq.de"; df: "dq.df"; dg: "dq.dg"; dh: "dq.dh"; di: "dq.di"; dj: "dq.dj"; dk: "dq.dk"; dl: "dq.dl"; dm: "dq.dm"; dn: "dq.dn"; do: "dq.do"; dp: "dq.dp"; dq: "dq.dq"; dr: "dq.dr"; ds: "dq.ds"; dt: "dq.dt"; du: "dq.du"; dv: "dq.dv"; dw: "dq.dw"; dx: "dq.dx"; dy: "dq.dy"; dz: "dq.dz"; ea: "dq.ea"; eb: "dq.eb"; ec: "dq.ec"; ed: "dq.ed"; ee: "dq.ee"; ef: "dq.ef"; eg: "dq.eg"; eh: "dq.eh"; ei: "dq.ei"; ej: "dq.ej"; ek: "dq.ek"; el: "dq.el"; em: "dq.em"; en: "dq.en"; eo: "dq.eo"; ep: "dq.ep"; eq: "dq.eq"; er: "dq.er"; es: "dq.es"; et: "dq.et"; eu: "dq.eu"; ev: "dq.ev"; ew: "dq.ew"; ex: "dq.ex"; ey: "dq.ey"; ez: "dq.ez"; fa: "dq.fa"; fb: "dq.fb"; fc: "dq.fc"; fd: "dq.fd"; fe: "dq.fe"; ff: "dq.ff"; fg: "dq.fg"; fh: "dq.fh"; fi: "dq.fi"; fj: "dq.fj"; fk: "dq.fk"; fl: "dq.fl"; fm: "dq.fm"; fn: "dq.fn"; fo: "dq.fo"; fp: "dq.fp"; fq: "dq.fq"; fr: "dq.fr"; fs: "dq.fs"; ft: "dq.ft"; fu: "dq.fu"; fv: "dq.fv"; fw: "dq.fw"; fx: "dq.fx"; fy: "dq.fy"; fz: "dq.fz"; ga: "dq.ga"; gb: "dq.gb"; gc: "dq.gc"; gd: "dq.gd"; ge: "dq.ge"; gf: "dq.gf"; gg: "dq.gg"; gh: "dq.gh"; gi: "dq.gi"; gj: "dq.gj"; gk: "dq.gk"; gl: "dq.gl"; gm: "dq.gm"; gn: "dq.gn"; go: "dq.go"; gp: "dq.gp"; gq: "dq.gq"; gr: "dq.gr"; gs: "dq.gs"; gt: "dq.gt"; gu: "dq.gu"; gv: "dq.gv"; gw: "dq.gw"; gx: "dq.gx"; gy: "dq.gy"; gz: "dq.gz"; ha: "dq.ha"; hb: "dq.hb"; hc: "dq.hc"; hd: "dq.hd"; he: "dq.he"; hf: "dq.hf"; hg: "dq.hg"; hh: "dq.hh"; hi: "dq.hi"; hj: "dq.hj"; hk: "dq.hk"; hl: "dq.hl"; hm: "dq.hm"; hn: "dq.hn"; ho: "dq.ho"; hp: "dq.hp"; hq: "dq.hq"; hr: "dq.hr"; hs: "dq.hs"; ht: "dq.ht"; hu: "dq.hu"; hv: "dq.hv"; hw: "dq.hw"; hx: "dq.hx"; hy: "dq.hy"; hz: "dq.hz"; ia: "dq.ia"; ib: "dq.ib"; ic: "dq.ic"; id: "dq.id"; ie: "dq.ie"; if: "dq.if"; ig: "dq.ig"; ih: "dq.ih"; ii: "dq.ii"; ij: "dq.ij"; ik: "dq.ik"; il: "dq.il"; im: "dq.im"; in: "dq.in"; io: "dq.io"; ip: "dq.ip"; iq: "dq.iq"; ir: "dq.ir"; is: "dq.is"; it: "dq.it"; iu: "dq.iu"; iv: "dq.iv"; iw: "dq.iw"; ix: "dq.ix"; iy: "dq.iy"; iz: "dq.iz"; ja: "dq.ja"; jb: "dq.jb"; jc: "dq.jc"; jd: "dq.jd"; je: "dq.je"; jf: "dq.jf"; jg: "dq.jg"; jh: "dq.jh"; ji: "dq.ji"; jj: "dq.jj"; jk: "dq.jk"; jl: "dq.jl"; jm: "dq.jm"; jn: "dq.jn"; jo: "dq.jo"; jp: "dq.jp"; jq: "dq.jq"; jr: "dq.jr"; js: "dq.js"; jt: "dq.jt"; ju: "dq.ju"; jv: "dq.jv"; jw: "dq.jw"; jx: "dq.jx"; jy: "dq.jy"; jz: "dq.jz"; ka: "dq.ka"; kb: "dq.kb"; kc: "dq.kc"; kd: "dq.kd"; ke: "dq.ke"; kf: "dq.kf"; kg: "dq.kg"; kh: "dq.kh"; ki: "dq.ki"; kj: "dq.kj"; kk: "dq.kk"; kl: "dq.kl"; km: "dq.km"; kn: "dq.kn"; ko: "dq.ko"; kp: "dq.kp"; kq: "dq.kq"; kr: "dq.kr"; ks: "dq.ks"; kt: "dq.kt"; ku: "dq.ku"; kv: "dq.kv"; kw: "dq.kw"; kx: "dq.kx"; ky: "dq.ky"; kz: "dq.kz"; la: "dq.la"; lb: "dq.lb"; lc: "dq.lc"; ld: "dq.ld"; le: "dq.le"; lf: "dq.lf"; lg: "dq.lg"; lh: "dq.lh"; li: "dq.li"; lj: "dq.lj"; lk: "dq.lk"; ll: "dq.ll"; lm: "dq.lm"; ln: "dq.ln"; lo: "dq.lo"; lp: "dq.lp"; lq: "dq.lq"; lr: "dq.lr"; ls: "dq.ls"; lt: "dq.lt"; lu: "dq.lu"; lv: "dq.lv"; lw: "dq.lw"; lx: "dq.lx"; ly: "dq.ly"; lz: "dq.lz"; ma: "dq.ma"; mb: "dq.mb"; mc: "dq.mc"; md: "dq.md"; me: "dq.me"; mf: "dq.mf"; mg: "dq.mg"; mh: "dq.mh"; mi: "dq.mi"; mj: "dq.mj"; mk: "dq.mk"; ml: "dq.ml"; mm: "dq.mm"; mn: "dq.mn"; mo: "dq.mo"; mp: "dq.mp"; mq: "dq.mq"; mr: "dq.mr"; ms: "dq.ms"; mt: "dq.mt"; mu: "dq.mu"; mv: "dq.mv"; mw: "dq.mw"; mx: "dq.mx"; my: "dq.my"; mz: "dq.mz"; na: "dq.na"; nb: "dq.nb"; nc: "dq.nc"; nd: "dq.nd"; ne: "dq.ne"; nf: "dq.nf"; ng: "dq.ng"; nh: "dq.nh"; ni: "dq.ni"; nj: "dq.nj"; nk: "dq.nk"; nl: "dq.nl"; nm: "dq.nm"; nn: "dq.nn"; no: "dq.no"; np: "dq.np"; nq: "dq.nq"; nr: "dq.nr"; ns: "dq.ns"; nt: "dq.nt"; nu: "dq.nu"; nv: "dq.nv"; nw: "dq.nw"; nx: "dq.nx"; ny: "dq.ny"; nz: "dq.nz"; oa: "dq.oa"; ob: "dq.ob"; oc: "dq.oc"; od: "dq.od"; oe: "dq.oe"; of: "dq.of"; og: "dq.og"; oh: "dq.oh"; oi: "dq.oi"; oj: "dq.oj"; ok: "dq.ok"; ol: "dq.ol"; om: "dq.om"; on: "dq.on"; oo: "dq.oo"; op: "dq.op"; oq: "dq.oq"; or: "dq.or"; os: "dq.os"; ot: "dq.ot"; ou: "dq.ou"; ov: "dq.ov"; ow: "dq.ow"; ox: "dq.ox"; oy: "dq.oy"; oz: "dq.oz"; pa: "dq.pa"; pb: "dq.pb"; pc: "dq.pc"; pd: "dq.pd"; pe: "dq.pe"; pf: "dq.pf"; pg: "dq.pg"; ph: "dq.ph"; pi: "dq.pi"; pj: "dq.pj"; pk: "dq.pk"; pl: "dq.pl"; pm: "dq.pm"; pn: "dq.pn"; po: "dq.po"; pp: "dq.pp"; pq: "dq.pq"; pr: "dq.pr"; ps: "dq.ps"; pt: "dq.pt"; pu: "dq.pu"; pv: "dq.pv"; pw: "dq.pw"; px: "dq.px"; py: "dq.py"; pz: "dq.pz"; qa: "dq.qa"; qb: "dq.qb"; qc: "dq.qc"; qd: "dq.qd"; qe: "dq.qe"; qf: "dq.qf"; qg: "dq.qg"; qh: "dq.qh"; qi: "dq.qi"; qj: "dq.qj"; qk: "dq.qk"; ql: "dq.ql"; qm: "dq.qm"; qn: "dq.qn"; qo: "dq.qo"; qp: "dq.qp"; qq: "dq.qq"; qr: "dq.qr"; qs: "dq.qs"; qt: "dq.qt"; qu: "dq.qu"; qv: "dq.qv"; qw: "dq.qw"; qx: "dq.qx"; qy: "dq.qy"; qz: "dq.qz"; ra: "dq.ra"; rb: "dq.rb"; rc: "dq.rc"; rd: "dq.rd"; re: "dq.re"; rf: "dq.rf"; rg: "dq.rg"; rh: "dq.rh"; ri: "dq.ri"; rj: "dq.rj"; rk: "dq.rk"; rl: "dq.rl"; rm: "dq.rm"; rn: "dq.rn"; ro: "dq.ro"; rp: "dq.rp"; rq: "dq.rq"; rr: "dq.rr"; rs: "dq.rs"; rt: "dq.rt"; ru: "dq.ru"; rv: "dq.rv"; rw: "dq.rw"; rx: "dq.rx"; ry: "dq.ry"; rz: "dq.rz"; sa: "dq.sa"; sb: "dq.sb"; sc: "dq.sc"; sd: "dq.sd"; se: "dq.se"; sf: "dq.sf"; sg: "dq.sg"; sh: "dq.sh"; si: "dq.si"; sj: "dq.sj"; sk: "dq.sk"; sl: "dq.sl"; sm: "dq.sm"; sn: "dq.sn"; so: "dq.so"; sp: "dq.sp"; sq: "dq.sq"; sr: "dq.sr"; ss: "dq.ss"; st: "dq.st"; su: "dq.su"; sv: "dq.sv"; sw: "dq.sw"; sx: "dq.sx"; sy: "dq.sy"; sz: "dq.sz"; ta: "dq.ta"; tb: "dq.tb"; tc: "dq.tc"; td: "dq.td"; te: "dq.te"; tf: "dq.tf"; tg: "dq.tg"; th: "dq.th"; ti: "dq.ti"; tj: "dq.tj"; tk: "dq.tk"; tl: "dq.tl"; tm: "dq.tm"; tn: "dq.tn"; to: "dq.to"; tp: "dq.tp"; tq: "dq.tq"; tr: "dq.tr"; ts: "dq.ts"; tt: "dq.tt"; tu: "dq.tu"; tv: "dq.tv"; tw: "dq.tw"; tx: "dq.tx"; ty: "dq.ty"; tz: "dq.tz"; ua: "dq.ua"; ub: "dq.ub"; uc: "dq.uc"; ud: "dq.ud"; ue: "dq.ue"; uf: "dq.uf"; ug: "dq.ug"; uh: "dq.uh"; ui: "dq.ui"; uj: "dq.uj"; uk: "dq.uk"; ul: "dq.ul"; um: "dq.um"; un: "dq.un"; uo: "dq.uo"; up: "dq.up"; uq: "dq.uq"; ur: "dq.ur"; us: "dq.us"; ut: "dq.ut"; uu: "dq.uu"; uv: "dq.uv"; uw: "dq.uw"; ux: "dq.ux"; uy: "dq.uy"; uz: "dq.uz"; va: "dq.va"; vb: "dq.vb"; vc: "dq.vc"; vd: "dq.vd"; ve: "dq.ve"; vf: "dq.vf"; vg: "dq.vg"; vh: "dq.vh"; vi: "dq.vi"; vj: "dq.vj"; vk: "dq.vk"; vl: "dq.vl"; vm: "dq.vm"; vn: "dq.vn"; vo: "dq.vo"; vp: "dq.vp"; vq: "dq.vq"; vr: "dq.vr"; vs: "dq.vs"; vt: "dq.vt"; vu: "dq.vu"; vv: "dq.vv"; vw: "dq.vw"; vx: "dq.vx"; vy: "dq.vy"; vz: "dq.vz"; wa: "dq.wa"; wb: "dq.wb"; wc: "dq.wc"; wd: "dq.wd"; we: "dq.we"; wf: "dq.wf"; wg: "dq.wg"; wh: "dq.wh"; wi: "dq.wi"; wj: "dq.wj"; wk: "dq.wk"; wl: "dq.wl"; wm: "dq.wm"; wn: "dq.wn"; wo: "dq.wo"; wp: "dq.wp"; wq: "dq.wq"; wr: "dq.wr"; ws: "dq.ws"; wt: "dq.wt"; wu: "dq.wu"; wv: "dq.wv"; ww: "dq.ww"; wx: "dq.wx"; wy: "dq.wy"; wz: "dq.wz"; xa: "dq.xa"; xb: "dq.xb"; xc: "dq.xc"; xd: "dq.xd"; xe: "dq.xe"; xf: "dq.xf"; xg: "dq.xg"; xh: "dq.xh"; xi: "dq.xi"; xj: "dq.xj"; xk: "dq.xk"; xl: "dq.xl"; xm: "dq.xm"; xn: "dq.xn"; xo: "dq.xo"; xp: "dq.xp"; xq: "dq.xq"; xr: "dq.xr"; xs: "dq.xs"; xt: "dq.xt"; xu: "dq.xu"; xv: "dq.xv"; xw: "dq.xw"; xx: "dq.xx"; xy: "dq.xy"; xz: "dq.xz"; ya: "dq.ya"; yb: "dq.yb"; yc: "dq.yc"; yd: "dq.yd"; ye: "dq.ye"; yf: "dq.yf"; yg: "dq.yg"; yh: "dq.yh"; yi: "dq.yi"; yj: "dq.yj"; yk: "dq.yk"; yl: "dq.yl"; ym: "dq.ym"; yn: "dq.yn"; yo: "dq.yo"; yp: "dq.yp"; yq: "dq.yq"; yr: "dq.yr"; ys: "dq.ys"; yt: "dq.yt"; yu: "dq.yu"; yv: "dq.yv"; yw: "dq.yw"; yx: "dq.yx"; yy: "dq.yy"; yz: "dq.yz"; za: "dq.za"; zb: "dq.zb"; zc: "dq.zc"; zd: "dq.zd"; ze: "dq.ze"; zf: "dq.zf"; zg: "dq.zg"; zh: "dq.zh"; zi: "dq.zi"; zj: "dq.zj"; zk: "dq.zk"; zl: "dq.zl"; zm: "dq.zm"; zn: "dq.zn"; zo: "dq.zo"; zp: "dq.zp"; zq: "dq.zq"; zr: "dq.zr"; zs: "dq.zs"; zt: "dq.zt"; zu: "dq.zu"; zv: "dq.zv"; zw: "dq.zw"; zx: "dq.zx"; zy: "dq.zy"; zz: "dq.zz"; }; dr: { aa: "dr.aa"; ab: "dr.ab"; ac: "dr.ac"; ad: "dr.ad"; ae: "dr.ae"; af: "dr.af"; ag: "dr.ag"; ah: "dr.ah"; ai: "dr.ai"; aj: "dr.aj"; ak: "dr.ak"; al: "dr.al"; am: "dr.am"; an: "dr.an"; ao: "dr.ao"; ap: "dr.ap"; aq: "dr.aq"; ar: "dr.ar"; as: "dr.as"; at: "dr.at"; au: "dr.au"; av: "dr.av"; aw: "dr.aw"; ax: "dr.ax"; ay: "dr.ay"; az: "dr.az"; ba: "dr.ba"; bb: "dr.bb"; bc: "dr.bc"; bd: "dr.bd"; be: "dr.be"; bf: "dr.bf"; bg: "dr.bg"; bh: "dr.bh"; bi: "dr.bi"; bj: "dr.bj"; bk: "dr.bk"; bl: "dr.bl"; bm: "dr.bm"; bn: "dr.bn"; bo: "dr.bo"; bp: "dr.bp"; bq: "dr.bq"; br: "dr.br"; bs: "dr.bs"; bt: "dr.bt"; bu: "dr.bu"; bv: "dr.bv"; bw: "dr.bw"; bx: "dr.bx"; by: "dr.by"; bz: "dr.bz"; ca: "dr.ca"; cb: "dr.cb"; cc: "dr.cc"; cd: "dr.cd"; ce: "dr.ce"; cf: "dr.cf"; cg: "dr.cg"; ch: "dr.ch"; ci: "dr.ci"; cj: "dr.cj"; ck: "dr.ck"; cl: "dr.cl"; cm: "dr.cm"; cn: "dr.cn"; co: "dr.co"; cp: "dr.cp"; cq: "dr.cq"; cr: "dr.cr"; cs: "dr.cs"; ct: "dr.ct"; cu: "dr.cu"; cv: "dr.cv"; cw: "dr.cw"; cx: "dr.cx"; cy: "dr.cy"; cz: "dr.cz"; da: "dr.da"; db: "dr.db"; dc: "dr.dc"; dd: "dr.dd"; de: "dr.de"; df: "dr.df"; dg: "dr.dg"; dh: "dr.dh"; di: "dr.di"; dj: "dr.dj"; dk: "dr.dk"; dl: "dr.dl"; dm: "dr.dm"; dn: "dr.dn"; do: "dr.do"; dp: "dr.dp"; dq: "dr.dq"; dr: "dr.dr"; ds: "dr.ds"; dt: "dr.dt"; du: "dr.du"; dv: "dr.dv"; dw: "dr.dw"; dx: "dr.dx"; dy: "dr.dy"; dz: "dr.dz"; ea: "dr.ea"; eb: "dr.eb"; ec: "dr.ec"; ed: "dr.ed"; ee: "dr.ee"; ef: "dr.ef"; eg: "dr.eg"; eh: "dr.eh"; ei: "dr.ei"; ej: "dr.ej"; ek: "dr.ek"; el: "dr.el"; em: "dr.em"; en: "dr.en"; eo: "dr.eo"; ep: "dr.ep"; eq: "dr.eq"; er: "dr.er"; es: "dr.es"; et: "dr.et"; eu: "dr.eu"; ev: "dr.ev"; ew: "dr.ew"; ex: "dr.ex"; ey: "dr.ey"; ez: "dr.ez"; fa: "dr.fa"; fb: "dr.fb"; fc: "dr.fc"; fd: "dr.fd"; fe: "dr.fe"; ff: "dr.ff"; fg: "dr.fg"; fh: "dr.fh"; fi: "dr.fi"; fj: "dr.fj"; fk: "dr.fk"; fl: "dr.fl"; fm: "dr.fm"; fn: "dr.fn"; fo: "dr.fo"; fp: "dr.fp"; fq: "dr.fq"; fr: "dr.fr"; fs: "dr.fs"; ft: "dr.ft"; fu: "dr.fu"; fv: "dr.fv"; fw: "dr.fw"; fx: "dr.fx"; fy: "dr.fy"; fz: "dr.fz"; ga: "dr.ga"; gb: "dr.gb"; gc: "dr.gc"; gd: "dr.gd"; ge: "dr.ge"; gf: "dr.gf"; gg: "dr.gg"; gh: "dr.gh"; gi: "dr.gi"; gj: "dr.gj"; gk: "dr.gk"; gl: "dr.gl"; gm: "dr.gm"; gn: "dr.gn"; go: "dr.go"; gp: "dr.gp"; gq: "dr.gq"; gr: "dr.gr"; gs: "dr.gs"; gt: "dr.gt"; gu: "dr.gu"; gv: "dr.gv"; gw: "dr.gw"; gx: "dr.gx"; gy: "dr.gy"; gz: "dr.gz"; ha: "dr.ha"; hb: "dr.hb"; hc: "dr.hc"; hd: "dr.hd"; he: "dr.he"; hf: "dr.hf"; hg: "dr.hg"; hh: "dr.hh"; hi: "dr.hi"; hj: "dr.hj"; hk: "dr.hk"; hl: "dr.hl"; hm: "dr.hm"; hn: "dr.hn"; ho: "dr.ho"; hp: "dr.hp"; hq: "dr.hq"; hr: "dr.hr"; hs: "dr.hs"; ht: "dr.ht"; hu: "dr.hu"; hv: "dr.hv"; hw: "dr.hw"; hx: "dr.hx"; hy: "dr.hy"; hz: "dr.hz"; ia: "dr.ia"; ib: "dr.ib"; ic: "dr.ic"; id: "dr.id"; ie: "dr.ie"; if: "dr.if"; ig: "dr.ig"; ih: "dr.ih"; ii: "dr.ii"; ij: "dr.ij"; ik: "dr.ik"; il: "dr.il"; im: "dr.im"; in: "dr.in"; io: "dr.io"; ip: "dr.ip"; iq: "dr.iq"; ir: "dr.ir"; is: "dr.is"; it: "dr.it"; iu: "dr.iu"; iv: "dr.iv"; iw: "dr.iw"; ix: "dr.ix"; iy: "dr.iy"; iz: "dr.iz"; ja: "dr.ja"; jb: "dr.jb"; jc: "dr.jc"; jd: "dr.jd"; je: "dr.je"; jf: "dr.jf"; jg: "dr.jg"; jh: "dr.jh"; ji: "dr.ji"; jj: "dr.jj"; jk: "dr.jk"; jl: "dr.jl"; jm: "dr.jm"; jn: "dr.jn"; jo: "dr.jo"; jp: "dr.jp"; jq: "dr.jq"; jr: "dr.jr"; js: "dr.js"; jt: "dr.jt"; ju: "dr.ju"; jv: "dr.jv"; jw: "dr.jw"; jx: "dr.jx"; jy: "dr.jy"; jz: "dr.jz"; ka: "dr.ka"; kb: "dr.kb"; kc: "dr.kc"; kd: "dr.kd"; ke: "dr.ke"; kf: "dr.kf"; kg: "dr.kg"; kh: "dr.kh"; ki: "dr.ki"; kj: "dr.kj"; kk: "dr.kk"; kl: "dr.kl"; km: "dr.km"; kn: "dr.kn"; ko: "dr.ko"; kp: "dr.kp"; kq: "dr.kq"; kr: "dr.kr"; ks: "dr.ks"; kt: "dr.kt"; ku: "dr.ku"; kv: "dr.kv"; kw: "dr.kw"; kx: "dr.kx"; ky: "dr.ky"; kz: "dr.kz"; la: "dr.la"; lb: "dr.lb"; lc: "dr.lc"; ld: "dr.ld"; le: "dr.le"; lf: "dr.lf"; lg: "dr.lg"; lh: "dr.lh"; li: "dr.li"; lj: "dr.lj"; lk: "dr.lk"; ll: "dr.ll"; lm: "dr.lm"; ln: "dr.ln"; lo: "dr.lo"; lp: "dr.lp"; lq: "dr.lq"; lr: "dr.lr"; ls: "dr.ls"; lt: "dr.lt"; lu: "dr.lu"; lv: "dr.lv"; lw: "dr.lw"; lx: "dr.lx"; ly: "dr.ly"; lz: "dr.lz"; ma: "dr.ma"; mb: "dr.mb"; mc: "dr.mc"; md: "dr.md"; me: "dr.me"; mf: "dr.mf"; mg: "dr.mg"; mh: "dr.mh"; mi: "dr.mi"; mj: "dr.mj"; mk: "dr.mk"; ml: "dr.ml"; mm: "dr.mm"; mn: "dr.mn"; mo: "dr.mo"; mp: "dr.mp"; mq: "dr.mq"; mr: "dr.mr"; ms: "dr.ms"; mt: "dr.mt"; mu: "dr.mu"; mv: "dr.mv"; mw: "dr.mw"; mx: "dr.mx"; my: "dr.my"; mz: "dr.mz"; na: "dr.na"; nb: "dr.nb"; nc: "dr.nc"; nd: "dr.nd"; ne: "dr.ne"; nf: "dr.nf"; ng: "dr.ng"; nh: "dr.nh"; ni: "dr.ni"; nj: "dr.nj"; nk: "dr.nk"; nl: "dr.nl"; nm: "dr.nm"; nn: "dr.nn"; no: "dr.no"; np: "dr.np"; nq: "dr.nq"; nr: "dr.nr"; ns: "dr.ns"; nt: "dr.nt"; nu: "dr.nu"; nv: "dr.nv"; nw: "dr.nw"; nx: "dr.nx"; ny: "dr.ny"; nz: "dr.nz"; oa: "dr.oa"; ob: "dr.ob"; oc: "dr.oc"; od: "dr.od"; oe: "dr.oe"; of: "dr.of"; og: "dr.og"; oh: "dr.oh"; oi: "dr.oi"; oj: "dr.oj"; ok: "dr.ok"; ol: "dr.ol"; om: "dr.om"; on: "dr.on"; oo: "dr.oo"; op: "dr.op"; oq: "dr.oq"; or: "dr.or"; os: "dr.os"; ot: "dr.ot"; ou: "dr.ou"; ov: "dr.ov"; ow: "dr.ow"; ox: "dr.ox"; oy: "dr.oy"; oz: "dr.oz"; pa: "dr.pa"; pb: "dr.pb"; pc: "dr.pc"; pd: "dr.pd"; pe: "dr.pe"; pf: "dr.pf"; pg: "dr.pg"; ph: "dr.ph"; pi: "dr.pi"; pj: "dr.pj"; pk: "dr.pk"; pl: "dr.pl"; pm: "dr.pm"; pn: "dr.pn"; po: "dr.po"; pp: "dr.pp"; pq: "dr.pq"; pr: "dr.pr"; ps: "dr.ps"; pt: "dr.pt"; pu: "dr.pu"; pv: "dr.pv"; pw: "dr.pw"; px: "dr.px"; py: "dr.py"; pz: "dr.pz"; qa: "dr.qa"; qb: "dr.qb"; qc: "dr.qc"; qd: "dr.qd"; qe: "dr.qe"; qf: "dr.qf"; qg: "dr.qg"; qh: "dr.qh"; qi: "dr.qi"; qj: "dr.qj"; qk: "dr.qk"; ql: "dr.ql"; qm: "dr.qm"; qn: "dr.qn"; qo: "dr.qo"; qp: "dr.qp"; qq: "dr.qq"; qr: "dr.qr"; qs: "dr.qs"; qt: "dr.qt"; qu: "dr.qu"; qv: "dr.qv"; qw: "dr.qw"; qx: "dr.qx"; qy: "dr.qy"; qz: "dr.qz"; ra: "dr.ra"; rb: "dr.rb"; rc: "dr.rc"; rd: "dr.rd"; re: "dr.re"; rf: "dr.rf"; rg: "dr.rg"; rh: "dr.rh"; ri: "dr.ri"; rj: "dr.rj"; rk: "dr.rk"; rl: "dr.rl"; rm: "dr.rm"; rn: "dr.rn"; ro: "dr.ro"; rp: "dr.rp"; rq: "dr.rq"; rr: "dr.rr"; rs: "dr.rs"; rt: "dr.rt"; ru: "dr.ru"; rv: "dr.rv"; rw: "dr.rw"; rx: "dr.rx"; ry: "dr.ry"; rz: "dr.rz"; sa: "dr.sa"; sb: "dr.sb"; sc: "dr.sc"; sd: "dr.sd"; se: "dr.se"; sf: "dr.sf"; sg: "dr.sg"; sh: "dr.sh"; si: "dr.si"; sj: "dr.sj"; sk: "dr.sk"; sl: "dr.sl"; sm: "dr.sm"; sn: "dr.sn"; so: "dr.so"; sp: "dr.sp"; sq: "dr.sq"; sr: "dr.sr"; ss: "dr.ss"; st: "dr.st"; su: "dr.su"; sv: "dr.sv"; sw: "dr.sw"; sx: "dr.sx"; sy: "dr.sy"; sz: "dr.sz"; ta: "dr.ta"; tb: "dr.tb"; tc: "dr.tc"; td: "dr.td"; te: "dr.te"; tf: "dr.tf"; tg: "dr.tg"; th: "dr.th"; ti: "dr.ti"; tj: "dr.tj"; tk: "dr.tk"; tl: "dr.tl"; tm: "dr.tm"; tn: "dr.tn"; to: "dr.to"; tp: "dr.tp"; tq: "dr.tq"; tr: "dr.tr"; ts: "dr.ts"; tt: "dr.tt"; tu: "dr.tu"; tv: "dr.tv"; tw: "dr.tw"; tx: "dr.tx"; ty: "dr.ty"; tz: "dr.tz"; ua: "dr.ua"; ub: "dr.ub"; uc: "dr.uc"; ud: "dr.ud"; ue: "dr.ue"; uf: "dr.uf"; ug: "dr.ug"; uh: "dr.uh"; ui: "dr.ui"; uj: "dr.uj"; uk: "dr.uk"; ul: "dr.ul"; um: "dr.um"; un: "dr.un"; uo: "dr.uo"; up: "dr.up"; uq: "dr.uq"; ur: "dr.ur"; us: "dr.us"; ut: "dr.ut"; uu: "dr.uu"; uv: "dr.uv"; uw: "dr.uw"; ux: "dr.ux"; uy: "dr.uy"; uz: "dr.uz"; va: "dr.va"; vb: "dr.vb"; vc: "dr.vc"; vd: "dr.vd"; ve: "dr.ve"; vf: "dr.vf"; vg: "dr.vg"; vh: "dr.vh"; vi: "dr.vi"; vj: "dr.vj"; vk: "dr.vk"; vl: "dr.vl"; vm: "dr.vm"; vn: "dr.vn"; vo: "dr.vo"; vp: "dr.vp"; vq: "dr.vq"; vr: "dr.vr"; vs: "dr.vs"; vt: "dr.vt"; vu: "dr.vu"; vv: "dr.vv"; vw: "dr.vw"; vx: "dr.vx"; vy: "dr.vy"; vz: "dr.vz"; wa: "dr.wa"; wb: "dr.wb"; wc: "dr.wc"; wd: "dr.wd"; we: "dr.we"; wf: "dr.wf"; wg: "dr.wg"; wh: "dr.wh"; wi: "dr.wi"; wj: "dr.wj"; wk: "dr.wk"; wl: "dr.wl"; wm: "dr.wm"; wn: "dr.wn"; wo: "dr.wo"; wp: "dr.wp"; wq: "dr.wq"; wr: "dr.wr"; ws: "dr.ws"; wt: "dr.wt"; wu: "dr.wu"; wv: "dr.wv"; ww: "dr.ww"; wx: "dr.wx"; wy: "dr.wy"; wz: "dr.wz"; xa: "dr.xa"; xb: "dr.xb"; xc: "dr.xc"; xd: "dr.xd"; xe: "dr.xe"; xf: "dr.xf"; xg: "dr.xg"; xh: "dr.xh"; xi: "dr.xi"; xj: "dr.xj"; xk: "dr.xk"; xl: "dr.xl"; xm: "dr.xm"; xn: "dr.xn"; xo: "dr.xo"; xp: "dr.xp"; xq: "dr.xq"; xr: "dr.xr"; xs: "dr.xs"; xt: "dr.xt"; xu: "dr.xu"; xv: "dr.xv"; xw: "dr.xw"; xx: "dr.xx"; xy: "dr.xy"; xz: "dr.xz"; ya: "dr.ya"; yb: "dr.yb"; yc: "dr.yc"; yd: "dr.yd"; ye: "dr.ye"; yf: "dr.yf"; yg: "dr.yg"; yh: "dr.yh"; yi: "dr.yi"; yj: "dr.yj"; yk: "dr.yk"; yl: "dr.yl"; ym: "dr.ym"; yn: "dr.yn"; yo: "dr.yo"; yp: "dr.yp"; yq: "dr.yq"; yr: "dr.yr"; ys: "dr.ys"; yt: "dr.yt"; yu: "dr.yu"; yv: "dr.yv"; yw: "dr.yw"; yx: "dr.yx"; yy: "dr.yy"; yz: "dr.yz"; za: "dr.za"; zb: "dr.zb"; zc: "dr.zc"; zd: "dr.zd"; ze: "dr.ze"; zf: "dr.zf"; zg: "dr.zg"; zh: "dr.zh"; zi: "dr.zi"; zj: "dr.zj"; zk: "dr.zk"; zl: "dr.zl"; zm: "dr.zm"; zn: "dr.zn"; zo: "dr.zo"; zp: "dr.zp"; zq: "dr.zq"; zr: "dr.zr"; zs: "dr.zs"; zt: "dr.zt"; zu: "dr.zu"; zv: "dr.zv"; zw: "dr.zw"; zx: "dr.zx"; zy: "dr.zy"; zz: "dr.zz"; }; ds: { aa: "ds.aa"; ab: "ds.ab"; ac: "ds.ac"; ad: "ds.ad"; ae: "ds.ae"; af: "ds.af"; ag: "ds.ag"; ah: "ds.ah"; ai: "ds.ai"; aj: "ds.aj"; ak: "ds.ak"; al: "ds.al"; am: "ds.am"; an: "ds.an"; ao: "ds.ao"; ap: "ds.ap"; aq: "ds.aq"; ar: "ds.ar"; as: "ds.as"; at: "ds.at"; au: "ds.au"; av: "ds.av"; aw: "ds.aw"; ax: "ds.ax"; ay: "ds.ay"; az: "ds.az"; ba: "ds.ba"; bb: "ds.bb"; bc: "ds.bc"; bd: "ds.bd"; be: "ds.be"; bf: "ds.bf"; bg: "ds.bg"; bh: "ds.bh"; bi: "ds.bi"; bj: "ds.bj"; bk: "ds.bk"; bl: "ds.bl"; bm: "ds.bm"; bn: "ds.bn"; bo: "ds.bo"; bp: "ds.bp"; bq: "ds.bq"; br: "ds.br"; bs: "ds.bs"; bt: "ds.bt"; bu: "ds.bu"; bv: "ds.bv"; bw: "ds.bw"; bx: "ds.bx"; by: "ds.by"; bz: "ds.bz"; ca: "ds.ca"; cb: "ds.cb"; cc: "ds.cc"; cd: "ds.cd"; ce: "ds.ce"; cf: "ds.cf"; cg: "ds.cg"; ch: "ds.ch"; ci: "ds.ci"; cj: "ds.cj"; ck: "ds.ck"; cl: "ds.cl"; cm: "ds.cm"; cn: "ds.cn"; co: "ds.co"; cp: "ds.cp"; cq: "ds.cq"; cr: "ds.cr"; cs: "ds.cs"; ct: "ds.ct"; cu: "ds.cu"; cv: "ds.cv"; cw: "ds.cw"; cx: "ds.cx"; cy: "ds.cy"; cz: "ds.cz"; da: "ds.da"; db: "ds.db"; dc: "ds.dc"; dd: "ds.dd"; de: "ds.de"; df: "ds.df"; dg: "ds.dg"; dh: "ds.dh"; di: "ds.di"; dj: "ds.dj"; dk: "ds.dk"; dl: "ds.dl"; dm: "ds.dm"; dn: "ds.dn"; do: "ds.do"; dp: "ds.dp"; dq: "ds.dq"; dr: "ds.dr"; ds: "ds.ds"; dt: "ds.dt"; du: "ds.du"; dv: "ds.dv"; dw: "ds.dw"; dx: "ds.dx"; dy: "ds.dy"; dz: "ds.dz"; ea: "ds.ea"; eb: "ds.eb"; ec: "ds.ec"; ed: "ds.ed"; ee: "ds.ee"; ef: "ds.ef"; eg: "ds.eg"; eh: "ds.eh"; ei: "ds.ei"; ej: "ds.ej"; ek: "ds.ek"; el: "ds.el"; em: "ds.em"; en: "ds.en"; eo: "ds.eo"; ep: "ds.ep"; eq: "ds.eq"; er: "ds.er"; es: "ds.es"; et: "ds.et"; eu: "ds.eu"; ev: "ds.ev"; ew: "ds.ew"; ex: "ds.ex"; ey: "ds.ey"; ez: "ds.ez"; fa: "ds.fa"; fb: "ds.fb"; fc: "ds.fc"; fd: "ds.fd"; fe: "ds.fe"; ff: "ds.ff"; fg: "ds.fg"; fh: "ds.fh"; fi: "ds.fi"; fj: "ds.fj"; fk: "ds.fk"; fl: "ds.fl"; fm: "ds.fm"; fn: "ds.fn"; fo: "ds.fo"; fp: "ds.fp"; fq: "ds.fq"; fr: "ds.fr"; fs: "ds.fs"; ft: "ds.ft"; fu: "ds.fu"; fv: "ds.fv"; fw: "ds.fw"; fx: "ds.fx"; fy: "ds.fy"; fz: "ds.fz"; ga: "ds.ga"; gb: "ds.gb"; gc: "ds.gc"; gd: "ds.gd"; ge: "ds.ge"; gf: "ds.gf"; gg: "ds.gg"; gh: "ds.gh"; gi: "ds.gi"; gj: "ds.gj"; gk: "ds.gk"; gl: "ds.gl"; gm: "ds.gm"; gn: "ds.gn"; go: "ds.go"; gp: "ds.gp"; gq: "ds.gq"; gr: "ds.gr"; gs: "ds.gs"; gt: "ds.gt"; gu: "ds.gu"; gv: "ds.gv"; gw: "ds.gw"; gx: "ds.gx"; gy: "ds.gy"; gz: "ds.gz"; ha: "ds.ha"; hb: "ds.hb"; hc: "ds.hc"; hd: "ds.hd"; he: "ds.he"; hf: "ds.hf"; hg: "ds.hg"; hh: "ds.hh"; hi: "ds.hi"; hj: "ds.hj"; hk: "ds.hk"; hl: "ds.hl"; hm: "ds.hm"; hn: "ds.hn"; ho: "ds.ho"; hp: "ds.hp"; hq: "ds.hq"; hr: "ds.hr"; hs: "ds.hs"; ht: "ds.ht"; hu: "ds.hu"; hv: "ds.hv"; hw: "ds.hw"; hx: "ds.hx"; hy: "ds.hy"; hz: "ds.hz"; ia: "ds.ia"; ib: "ds.ib"; ic: "ds.ic"; id: "ds.id"; ie: "ds.ie"; if: "ds.if"; ig: "ds.ig"; ih: "ds.ih"; ii: "ds.ii"; ij: "ds.ij"; ik: "ds.ik"; il: "ds.il"; im: "ds.im"; in: "ds.in"; io: "ds.io"; ip: "ds.ip"; iq: "ds.iq"; ir: "ds.ir"; is: "ds.is"; it: "ds.it"; iu: "ds.iu"; iv: "ds.iv"; iw: "ds.iw"; ix: "ds.ix"; iy: "ds.iy"; iz: "ds.iz"; ja: "ds.ja"; jb: "ds.jb"; jc: "ds.jc"; jd: "ds.jd"; je: "ds.je"; jf: "ds.jf"; jg: "ds.jg"; jh: "ds.jh"; ji: "ds.ji"; jj: "ds.jj"; jk: "ds.jk"; jl: "ds.jl"; jm: "ds.jm"; jn: "ds.jn"; jo: "ds.jo"; jp: "ds.jp"; jq: "ds.jq"; jr: "ds.jr"; js: "ds.js"; jt: "ds.jt"; ju: "ds.ju"; jv: "ds.jv"; jw: "ds.jw"; jx: "ds.jx"; jy: "ds.jy"; jz: "ds.jz"; ka: "ds.ka"; kb: "ds.kb"; kc: "ds.kc"; kd: "ds.kd"; ke: "ds.ke"; kf: "ds.kf"; kg: "ds.kg"; kh: "ds.kh"; ki: "ds.ki"; kj: "ds.kj"; kk: "ds.kk"; kl: "ds.kl"; km: "ds.km"; kn: "ds.kn"; ko: "ds.ko"; kp: "ds.kp"; kq: "ds.kq"; kr: "ds.kr"; ks: "ds.ks"; kt: "ds.kt"; ku: "ds.ku"; kv: "ds.kv"; kw: "ds.kw"; kx: "ds.kx"; ky: "ds.ky"; kz: "ds.kz"; la: "ds.la"; lb: "ds.lb"; lc: "ds.lc"; ld: "ds.ld"; le: "ds.le"; lf: "ds.lf"; lg: "ds.lg"; lh: "ds.lh"; li: "ds.li"; lj: "ds.lj"; lk: "ds.lk"; ll: "ds.ll"; lm: "ds.lm"; ln: "ds.ln"; lo: "ds.lo"; lp: "ds.lp"; lq: "ds.lq"; lr: "ds.lr"; ls: "ds.ls"; lt: "ds.lt"; lu: "ds.lu"; lv: "ds.lv"; lw: "ds.lw"; lx: "ds.lx"; ly: "ds.ly"; lz: "ds.lz"; ma: "ds.ma"; mb: "ds.mb"; mc: "ds.mc"; md: "ds.md"; me: "ds.me"; mf: "ds.mf"; mg: "ds.mg"; mh: "ds.mh"; mi: "ds.mi"; mj: "ds.mj"; mk: "ds.mk"; ml: "ds.ml"; mm: "ds.mm"; mn: "ds.mn"; mo: "ds.mo"; mp: "ds.mp"; mq: "ds.mq"; mr: "ds.mr"; ms: "ds.ms"; mt: "ds.mt"; mu: "ds.mu"; mv: "ds.mv"; mw: "ds.mw"; mx: "ds.mx"; my: "ds.my"; mz: "ds.mz"; na: "ds.na"; nb: "ds.nb"; nc: "ds.nc"; nd: "ds.nd"; ne: "ds.ne"; nf: "ds.nf"; ng: "ds.ng"; nh: "ds.nh"; ni: "ds.ni"; nj: "ds.nj"; nk: "ds.nk"; nl: "ds.nl"; nm: "ds.nm"; nn: "ds.nn"; no: "ds.no"; np: "ds.np"; nq: "ds.nq"; nr: "ds.nr"; ns: "ds.ns"; nt: "ds.nt"; nu: "ds.nu"; nv: "ds.nv"; nw: "ds.nw"; nx: "ds.nx"; ny: "ds.ny"; nz: "ds.nz"; oa: "ds.oa"; ob: "ds.ob"; oc: "ds.oc"; od: "ds.od"; oe: "ds.oe"; of: "ds.of"; og: "ds.og"; oh: "ds.oh"; oi: "ds.oi"; oj: "ds.oj"; ok: "ds.ok"; ol: "ds.ol"; om: "ds.om"; on: "ds.on"; oo: "ds.oo"; op: "ds.op"; oq: "ds.oq"; or: "ds.or"; os: "ds.os"; ot: "ds.ot"; ou: "ds.ou"; ov: "ds.ov"; ow: "ds.ow"; ox: "ds.ox"; oy: "ds.oy"; oz: "ds.oz"; pa: "ds.pa"; pb: "ds.pb"; pc: "ds.pc"; pd: "ds.pd"; pe: "ds.pe"; pf: "ds.pf"; pg: "ds.pg"; ph: "ds.ph"; pi: "ds.pi"; pj: "ds.pj"; pk: "ds.pk"; pl: "ds.pl"; pm: "ds.pm"; pn: "ds.pn"; po: "ds.po"; pp: "ds.pp"; pq: "ds.pq"; pr: "ds.pr"; ps: "ds.ps"; pt: "ds.pt"; pu: "ds.pu"; pv: "ds.pv"; pw: "ds.pw"; px: "ds.px"; py: "ds.py"; pz: "ds.pz"; qa: "ds.qa"; qb: "ds.qb"; qc: "ds.qc"; qd: "ds.qd"; qe: "ds.qe"; qf: "ds.qf"; qg: "ds.qg"; qh: "ds.qh"; qi: "ds.qi"; qj: "ds.qj"; qk: "ds.qk"; ql: "ds.ql"; qm: "ds.qm"; qn: "ds.qn"; qo: "ds.qo"; qp: "ds.qp"; qq: "ds.qq"; qr: "ds.qr"; qs: "ds.qs"; qt: "ds.qt"; qu: "ds.qu"; qv: "ds.qv"; qw: "ds.qw"; qx: "ds.qx"; qy: "ds.qy"; qz: "ds.qz"; ra: "ds.ra"; rb: "ds.rb"; rc: "ds.rc"; rd: "ds.rd"; re: "ds.re"; rf: "ds.rf"; rg: "ds.rg"; rh: "ds.rh"; ri: "ds.ri"; rj: "ds.rj"; rk: "ds.rk"; rl: "ds.rl"; rm: "ds.rm"; rn: "ds.rn"; ro: "ds.ro"; rp: "ds.rp"; rq: "ds.rq"; rr: "ds.rr"; rs: "ds.rs"; rt: "ds.rt"; ru: "ds.ru"; rv: "ds.rv"; rw: "ds.rw"; rx: "ds.rx"; ry: "ds.ry"; rz: "ds.rz"; sa: "ds.sa"; sb: "ds.sb"; sc: "ds.sc"; sd: "ds.sd"; se: "ds.se"; sf: "ds.sf"; sg: "ds.sg"; sh: "ds.sh"; si: "ds.si"; sj: "ds.sj"; sk: "ds.sk"; sl: "ds.sl"; sm: "ds.sm"; sn: "ds.sn"; so: "ds.so"; sp: "ds.sp"; sq: "ds.sq"; sr: "ds.sr"; ss: "ds.ss"; st: "ds.st"; su: "ds.su"; sv: "ds.sv"; sw: "ds.sw"; sx: "ds.sx"; sy: "ds.sy"; sz: "ds.sz"; ta: "ds.ta"; tb: "ds.tb"; tc: "ds.tc"; td: "ds.td"; te: "ds.te"; tf: "ds.tf"; tg: "ds.tg"; th: "ds.th"; ti: "ds.ti"; tj: "ds.tj"; tk: "ds.tk"; tl: "ds.tl"; tm: "ds.tm"; tn: "ds.tn"; to: "ds.to"; tp: "ds.tp"; tq: "ds.tq"; tr: "ds.tr"; ts: "ds.ts"; tt: "ds.tt"; tu: "ds.tu"; tv: "ds.tv"; tw: "ds.tw"; tx: "ds.tx"; ty: "ds.ty"; tz: "ds.tz"; ua: "ds.ua"; ub: "ds.ub"; uc: "ds.uc"; ud: "ds.ud"; ue: "ds.ue"; uf: "ds.uf"; ug: "ds.ug"; uh: "ds.uh"; ui: "ds.ui"; uj: "ds.uj"; uk: "ds.uk"; ul: "ds.ul"; um: "ds.um"; un: "ds.un"; uo: "ds.uo"; up: "ds.up"; uq: "ds.uq"; ur: "ds.ur"; us: "ds.us"; ut: "ds.ut"; uu: "ds.uu"; uv: "ds.uv"; uw: "ds.uw"; ux: "ds.ux"; uy: "ds.uy"; uz: "ds.uz"; va: "ds.va"; vb: "ds.vb"; vc: "ds.vc"; vd: "ds.vd"; ve: "ds.ve"; vf: "ds.vf"; vg: "ds.vg"; vh: "ds.vh"; vi: "ds.vi"; vj: "ds.vj"; vk: "ds.vk"; vl: "ds.vl"; vm: "ds.vm"; vn: "ds.vn"; vo: "ds.vo"; vp: "ds.vp"; vq: "ds.vq"; vr: "ds.vr"; vs: "ds.vs"; vt: "ds.vt"; vu: "ds.vu"; vv: "ds.vv"; vw: "ds.vw"; vx: "ds.vx"; vy: "ds.vy"; vz: "ds.vz"; wa: "ds.wa"; wb: "ds.wb"; wc: "ds.wc"; wd: "ds.wd"; we: "ds.we"; wf: "ds.wf"; wg: "ds.wg"; wh: "ds.wh"; wi: "ds.wi"; wj: "ds.wj"; wk: "ds.wk"; wl: "ds.wl"; wm: "ds.wm"; wn: "ds.wn"; wo: "ds.wo"; wp: "ds.wp"; wq: "ds.wq"; wr: "ds.wr"; ws: "ds.ws"; wt: "ds.wt"; wu: "ds.wu"; wv: "ds.wv"; ww: "ds.ww"; wx: "ds.wx"; wy: "ds.wy"; wz: "ds.wz"; xa: "ds.xa"; xb: "ds.xb"; xc: "ds.xc"; xd: "ds.xd"; xe: "ds.xe"; xf: "ds.xf"; xg: "ds.xg"; xh: "ds.xh"; xi: "ds.xi"; xj: "ds.xj"; xk: "ds.xk"; xl: "ds.xl"; xm: "ds.xm"; xn: "ds.xn"; xo: "ds.xo"; xp: "ds.xp"; xq: "ds.xq"; xr: "ds.xr"; xs: "ds.xs"; xt: "ds.xt"; xu: "ds.xu"; xv: "ds.xv"; xw: "ds.xw"; xx: "ds.xx"; xy: "ds.xy"; xz: "ds.xz"; ya: "ds.ya"; yb: "ds.yb"; yc: "ds.yc"; yd: "ds.yd"; ye: "ds.ye"; yf: "ds.yf"; yg: "ds.yg"; yh: "ds.yh"; yi: "ds.yi"; yj: "ds.yj"; yk: "ds.yk"; yl: "ds.yl"; ym: "ds.ym"; yn: "ds.yn"; yo: "ds.yo"; yp: "ds.yp"; yq: "ds.yq"; yr: "ds.yr"; ys: "ds.ys"; yt: "ds.yt"; yu: "ds.yu"; yv: "ds.yv"; yw: "ds.yw"; yx: "ds.yx"; yy: "ds.yy"; yz: "ds.yz"; za: "ds.za"; zb: "ds.zb"; zc: "ds.zc"; zd: "ds.zd"; ze: "ds.ze"; zf: "ds.zf"; zg: "ds.zg"; zh: "ds.zh"; zi: "ds.zi"; zj: "ds.zj"; zk: "ds.zk"; zl: "ds.zl"; zm: "ds.zm"; zn: "ds.zn"; zo: "ds.zo"; zp: "ds.zp"; zq: "ds.zq"; zr: "ds.zr"; zs: "ds.zs"; zt: "ds.zt"; zu: "ds.zu"; zv: "ds.zv"; zw: "ds.zw"; zx: "ds.zx"; zy: "ds.zy"; zz: "ds.zz"; }; dt: { aa: "dt.aa"; ab: "dt.ab"; ac: "dt.ac"; ad: "dt.ad"; ae: "dt.ae"; af: "dt.af"; ag: "dt.ag"; ah: "dt.ah"; ai: "dt.ai"; aj: "dt.aj"; ak: "dt.ak"; al: "dt.al"; am: "dt.am"; an: "dt.an"; ao: "dt.ao"; ap: "dt.ap"; aq: "dt.aq"; ar: "dt.ar"; as: "dt.as"; at: "dt.at"; au: "dt.au"; av: "dt.av"; aw: "dt.aw"; ax: "dt.ax"; ay: "dt.ay"; az: "dt.az"; ba: "dt.ba"; bb: "dt.bb"; bc: "dt.bc"; bd: "dt.bd"; be: "dt.be"; bf: "dt.bf"; bg: "dt.bg"; bh: "dt.bh"; bi: "dt.bi"; bj: "dt.bj"; bk: "dt.bk"; bl: "dt.bl"; bm: "dt.bm"; bn: "dt.bn"; bo: "dt.bo"; bp: "dt.bp"; bq: "dt.bq"; br: "dt.br"; bs: "dt.bs"; bt: "dt.bt"; bu: "dt.bu"; bv: "dt.bv"; bw: "dt.bw"; bx: "dt.bx"; by: "dt.by"; bz: "dt.bz"; ca: "dt.ca"; cb: "dt.cb"; cc: "dt.cc"; cd: "dt.cd"; ce: "dt.ce"; cf: "dt.cf"; cg: "dt.cg"; ch: "dt.ch"; ci: "dt.ci"; cj: "dt.cj"; ck: "dt.ck"; cl: "dt.cl"; cm: "dt.cm"; cn: "dt.cn"; co: "dt.co"; cp: "dt.cp"; cq: "dt.cq"; cr: "dt.cr"; cs: "dt.cs"; ct: "dt.ct"; cu: "dt.cu"; cv: "dt.cv"; cw: "dt.cw"; cx: "dt.cx"; cy: "dt.cy"; cz: "dt.cz"; da: "dt.da"; db: "dt.db"; dc: "dt.dc"; dd: "dt.dd"; de: "dt.de"; df: "dt.df"; dg: "dt.dg"; dh: "dt.dh"; di: "dt.di"; dj: "dt.dj"; dk: "dt.dk"; dl: "dt.dl"; dm: "dt.dm"; dn: "dt.dn"; do: "dt.do"; dp: "dt.dp"; dq: "dt.dq"; dr: "dt.dr"; ds: "dt.ds"; dt: "dt.dt"; du: "dt.du"; dv: "dt.dv"; dw: "dt.dw"; dx: "dt.dx"; dy: "dt.dy"; dz: "dt.dz"; ea: "dt.ea"; eb: "dt.eb"; ec: "dt.ec"; ed: "dt.ed"; ee: "dt.ee"; ef: "dt.ef"; eg: "dt.eg"; eh: "dt.eh"; ei: "dt.ei"; ej: "dt.ej"; ek: "dt.ek"; el: "dt.el"; em: "dt.em"; en: "dt.en"; eo: "dt.eo"; ep: "dt.ep"; eq: "dt.eq"; er: "dt.er"; es: "dt.es"; et: "dt.et"; eu: "dt.eu"; ev: "dt.ev"; ew: "dt.ew"; ex: "dt.ex"; ey: "dt.ey"; ez: "dt.ez"; fa: "dt.fa"; fb: "dt.fb"; fc: "dt.fc"; fd: "dt.fd"; fe: "dt.fe"; ff: "dt.ff"; fg: "dt.fg"; fh: "dt.fh"; fi: "dt.fi"; fj: "dt.fj"; fk: "dt.fk"; fl: "dt.fl"; fm: "dt.fm"; fn: "dt.fn"; fo: "dt.fo"; fp: "dt.fp"; fq: "dt.fq"; fr: "dt.fr"; fs: "dt.fs"; ft: "dt.ft"; fu: "dt.fu"; fv: "dt.fv"; fw: "dt.fw"; fx: "dt.fx"; fy: "dt.fy"; fz: "dt.fz"; ga: "dt.ga"; gb: "dt.gb"; gc: "dt.gc"; gd: "dt.gd"; ge: "dt.ge"; gf: "dt.gf"; gg: "dt.gg"; gh: "dt.gh"; gi: "dt.gi"; gj: "dt.gj"; gk: "dt.gk"; gl: "dt.gl"; gm: "dt.gm"; gn: "dt.gn"; go: "dt.go"; gp: "dt.gp"; gq: "dt.gq"; gr: "dt.gr"; gs: "dt.gs"; gt: "dt.gt"; gu: "dt.gu"; gv: "dt.gv"; gw: "dt.gw"; gx: "dt.gx"; gy: "dt.gy"; gz: "dt.gz"; ha: "dt.ha"; hb: "dt.hb"; hc: "dt.hc"; hd: "dt.hd"; he: "dt.he"; hf: "dt.hf"; hg: "dt.hg"; hh: "dt.hh"; hi: "dt.hi"; hj: "dt.hj"; hk: "dt.hk"; hl: "dt.hl"; hm: "dt.hm"; hn: "dt.hn"; ho: "dt.ho"; hp: "dt.hp"; hq: "dt.hq"; hr: "dt.hr"; hs: "dt.hs"; ht: "dt.ht"; hu: "dt.hu"; hv: "dt.hv"; hw: "dt.hw"; hx: "dt.hx"; hy: "dt.hy"; hz: "dt.hz"; ia: "dt.ia"; ib: "dt.ib"; ic: "dt.ic"; id: "dt.id"; ie: "dt.ie"; if: "dt.if"; ig: "dt.ig"; ih: "dt.ih"; ii: "dt.ii"; ij: "dt.ij"; ik: "dt.ik"; il: "dt.il"; im: "dt.im"; in: "dt.in"; io: "dt.io"; ip: "dt.ip"; iq: "dt.iq"; ir: "dt.ir"; is: "dt.is"; it: "dt.it"; iu: "dt.iu"; iv: "dt.iv"; iw: "dt.iw"; ix: "dt.ix"; iy: "dt.iy"; iz: "dt.iz"; ja: "dt.ja"; jb: "dt.jb"; jc: "dt.jc"; jd: "dt.jd"; je: "dt.je"; jf: "dt.jf"; jg: "dt.jg"; jh: "dt.jh"; ji: "dt.ji"; jj: "dt.jj"; jk: "dt.jk"; jl: "dt.jl"; jm: "dt.jm"; jn: "dt.jn"; jo: "dt.jo"; jp: "dt.jp"; jq: "dt.jq"; jr: "dt.jr"; js: "dt.js"; jt: "dt.jt"; ju: "dt.ju"; jv: "dt.jv"; jw: "dt.jw"; jx: "dt.jx"; jy: "dt.jy"; jz: "dt.jz"; ka: "dt.ka"; kb: "dt.kb"; kc: "dt.kc"; kd: "dt.kd"; ke: "dt.ke"; kf: "dt.kf"; kg: "dt.kg"; kh: "dt.kh"; ki: "dt.ki"; kj: "dt.kj"; kk: "dt.kk"; kl: "dt.kl"; km: "dt.km"; kn: "dt.kn"; ko: "dt.ko"; kp: "dt.kp"; kq: "dt.kq"; kr: "dt.kr"; ks: "dt.ks"; kt: "dt.kt"; ku: "dt.ku"; kv: "dt.kv"; kw: "dt.kw"; kx: "dt.kx"; ky: "dt.ky"; kz: "dt.kz"; la: "dt.la"; lb: "dt.lb"; lc: "dt.lc"; ld: "dt.ld"; le: "dt.le"; lf: "dt.lf"; lg: "dt.lg"; lh: "dt.lh"; li: "dt.li"; lj: "dt.lj"; lk: "dt.lk"; ll: "dt.ll"; lm: "dt.lm"; ln: "dt.ln"; lo: "dt.lo"; lp: "dt.lp"; lq: "dt.lq"; lr: "dt.lr"; ls: "dt.ls"; lt: "dt.lt"; lu: "dt.lu"; lv: "dt.lv"; lw: "dt.lw"; lx: "dt.lx"; ly: "dt.ly"; lz: "dt.lz"; ma: "dt.ma"; mb: "dt.mb"; mc: "dt.mc"; md: "dt.md"; me: "dt.me"; mf: "dt.mf"; mg: "dt.mg"; mh: "dt.mh"; mi: "dt.mi"; mj: "dt.mj"; mk: "dt.mk"; ml: "dt.ml"; mm: "dt.mm"; mn: "dt.mn"; mo: "dt.mo"; mp: "dt.mp"; mq: "dt.mq"; mr: "dt.mr"; ms: "dt.ms"; mt: "dt.mt"; mu: "dt.mu"; mv: "dt.mv"; mw: "dt.mw"; mx: "dt.mx"; my: "dt.my"; mz: "dt.mz"; na: "dt.na"; nb: "dt.nb"; nc: "dt.nc"; nd: "dt.nd"; ne: "dt.ne"; nf: "dt.nf"; ng: "dt.ng"; nh: "dt.nh"; ni: "dt.ni"; nj: "dt.nj"; nk: "dt.nk"; nl: "dt.nl"; nm: "dt.nm"; nn: "dt.nn"; no: "dt.no"; np: "dt.np"; nq: "dt.nq"; nr: "dt.nr"; ns: "dt.ns"; nt: "dt.nt"; nu: "dt.nu"; nv: "dt.nv"; nw: "dt.nw"; nx: "dt.nx"; ny: "dt.ny"; nz: "dt.nz"; oa: "dt.oa"; ob: "dt.ob"; oc: "dt.oc"; od: "dt.od"; oe: "dt.oe"; of: "dt.of"; og: "dt.og"; oh: "dt.oh"; oi: "dt.oi"; oj: "dt.oj"; ok: "dt.ok"; ol: "dt.ol"; om: "dt.om"; on: "dt.on"; oo: "dt.oo"; op: "dt.op"; oq: "dt.oq"; or: "dt.or"; os: "dt.os"; ot: "dt.ot"; ou: "dt.ou"; ov: "dt.ov"; ow: "dt.ow"; ox: "dt.ox"; oy: "dt.oy"; oz: "dt.oz"; pa: "dt.pa"; pb: "dt.pb"; pc: "dt.pc"; pd: "dt.pd"; pe: "dt.pe"; pf: "dt.pf"; pg: "dt.pg"; ph: "dt.ph"; pi: "dt.pi"; pj: "dt.pj"; pk: "dt.pk"; pl: "dt.pl"; pm: "dt.pm"; pn: "dt.pn"; po: "dt.po"; pp: "dt.pp"; pq: "dt.pq"; pr: "dt.pr"; ps: "dt.ps"; pt: "dt.pt"; pu: "dt.pu"; pv: "dt.pv"; pw: "dt.pw"; px: "dt.px"; py: "dt.py"; pz: "dt.pz"; qa: "dt.qa"; qb: "dt.qb"; qc: "dt.qc"; qd: "dt.qd"; qe: "dt.qe"; qf: "dt.qf"; qg: "dt.qg"; qh: "dt.qh"; qi: "dt.qi"; qj: "dt.qj"; qk: "dt.qk"; ql: "dt.ql"; qm: "dt.qm"; qn: "dt.qn"; qo: "dt.qo"; qp: "dt.qp"; qq: "dt.qq"; qr: "dt.qr"; qs: "dt.qs"; qt: "dt.qt"; qu: "dt.qu"; qv: "dt.qv"; qw: "dt.qw"; qx: "dt.qx"; qy: "dt.qy"; qz: "dt.qz"; ra: "dt.ra"; rb: "dt.rb"; rc: "dt.rc"; rd: "dt.rd"; re: "dt.re"; rf: "dt.rf"; rg: "dt.rg"; rh: "dt.rh"; ri: "dt.ri"; rj: "dt.rj"; rk: "dt.rk"; rl: "dt.rl"; rm: "dt.rm"; rn: "dt.rn"; ro: "dt.ro"; rp: "dt.rp"; rq: "dt.rq"; rr: "dt.rr"; rs: "dt.rs"; rt: "dt.rt"; ru: "dt.ru"; rv: "dt.rv"; rw: "dt.rw"; rx: "dt.rx"; ry: "dt.ry"; rz: "dt.rz"; sa: "dt.sa"; sb: "dt.sb"; sc: "dt.sc"; sd: "dt.sd"; se: "dt.se"; sf: "dt.sf"; sg: "dt.sg"; sh: "dt.sh"; si: "dt.si"; sj: "dt.sj"; sk: "dt.sk"; sl: "dt.sl"; sm: "dt.sm"; sn: "dt.sn"; so: "dt.so"; sp: "dt.sp"; sq: "dt.sq"; sr: "dt.sr"; ss: "dt.ss"; st: "dt.st"; su: "dt.su"; sv: "dt.sv"; sw: "dt.sw"; sx: "dt.sx"; sy: "dt.sy"; sz: "dt.sz"; ta: "dt.ta"; tb: "dt.tb"; tc: "dt.tc"; td: "dt.td"; te: "dt.te"; tf: "dt.tf"; tg: "dt.tg"; th: "dt.th"; ti: "dt.ti"; tj: "dt.tj"; tk: "dt.tk"; tl: "dt.tl"; tm: "dt.tm"; tn: "dt.tn"; to: "dt.to"; tp: "dt.tp"; tq: "dt.tq"; tr: "dt.tr"; ts: "dt.ts"; tt: "dt.tt"; tu: "dt.tu"; tv: "dt.tv"; tw: "dt.tw"; tx: "dt.tx"; ty: "dt.ty"; tz: "dt.tz"; ua: "dt.ua"; ub: "dt.ub"; uc: "dt.uc"; ud: "dt.ud"; ue: "dt.ue"; uf: "dt.uf"; ug: "dt.ug"; uh: "dt.uh"; ui: "dt.ui"; uj: "dt.uj"; uk: "dt.uk"; ul: "dt.ul"; um: "dt.um"; un: "dt.un"; uo: "dt.uo"; up: "dt.up"; uq: "dt.uq"; ur: "dt.ur"; us: "dt.us"; ut: "dt.ut"; uu: "dt.uu"; uv: "dt.uv"; uw: "dt.uw"; ux: "dt.ux"; uy: "dt.uy"; uz: "dt.uz"; va: "dt.va"; vb: "dt.vb"; vc: "dt.vc"; vd: "dt.vd"; ve: "dt.ve"; vf: "dt.vf"; vg: "dt.vg"; vh: "dt.vh"; vi: "dt.vi"; vj: "dt.vj"; vk: "dt.vk"; vl: "dt.vl"; vm: "dt.vm"; vn: "dt.vn"; vo: "dt.vo"; vp: "dt.vp"; vq: "dt.vq"; vr: "dt.vr"; vs: "dt.vs"; vt: "dt.vt"; vu: "dt.vu"; vv: "dt.vv"; vw: "dt.vw"; vx: "dt.vx"; vy: "dt.vy"; vz: "dt.vz"; wa: "dt.wa"; wb: "dt.wb"; wc: "dt.wc"; wd: "dt.wd"; we: "dt.we"; wf: "dt.wf"; wg: "dt.wg"; wh: "dt.wh"; wi: "dt.wi"; wj: "dt.wj"; wk: "dt.wk"; wl: "dt.wl"; wm: "dt.wm"; wn: "dt.wn"; wo: "dt.wo"; wp: "dt.wp"; wq: "dt.wq"; wr: "dt.wr"; ws: "dt.ws"; wt: "dt.wt"; wu: "dt.wu"; wv: "dt.wv"; ww: "dt.ww"; wx: "dt.wx"; wy: "dt.wy"; wz: "dt.wz"; xa: "dt.xa"; xb: "dt.xb"; xc: "dt.xc"; xd: "dt.xd"; xe: "dt.xe"; xf: "dt.xf"; xg: "dt.xg"; xh: "dt.xh"; xi: "dt.xi"; xj: "dt.xj"; xk: "dt.xk"; xl: "dt.xl"; xm: "dt.xm"; xn: "dt.xn"; xo: "dt.xo"; xp: "dt.xp"; xq: "dt.xq"; xr: "dt.xr"; xs: "dt.xs"; xt: "dt.xt"; xu: "dt.xu"; xv: "dt.xv"; xw: "dt.xw"; xx: "dt.xx"; xy: "dt.xy"; xz: "dt.xz"; ya: "dt.ya"; yb: "dt.yb"; yc: "dt.yc"; yd: "dt.yd"; ye: "dt.ye"; yf: "dt.yf"; yg: "dt.yg"; yh: "dt.yh"; yi: "dt.yi"; yj: "dt.yj"; yk: "dt.yk"; yl: "dt.yl"; ym: "dt.ym"; yn: "dt.yn"; yo: "dt.yo"; yp: "dt.yp"; yq: "dt.yq"; yr: "dt.yr"; ys: "dt.ys"; yt: "dt.yt"; yu: "dt.yu"; yv: "dt.yv"; yw: "dt.yw"; yx: "dt.yx"; yy: "dt.yy"; yz: "dt.yz"; za: "dt.za"; zb: "dt.zb"; zc: "dt.zc"; zd: "dt.zd"; ze: "dt.ze"; zf: "dt.zf"; zg: "dt.zg"; zh: "dt.zh"; zi: "dt.zi"; zj: "dt.zj"; zk: "dt.zk"; zl: "dt.zl"; zm: "dt.zm"; zn: "dt.zn"; zo: "dt.zo"; zp: "dt.zp"; zq: "dt.zq"; zr: "dt.zr"; zs: "dt.zs"; zt: "dt.zt"; zu: "dt.zu"; zv: "dt.zv"; zw: "dt.zw"; zx: "dt.zx"; zy: "dt.zy"; zz: "dt.zz"; }; du: { aa: "du.aa"; ab: "du.ab"; ac: "du.ac"; ad: "du.ad"; ae: "du.ae"; af: "du.af"; ag: "du.ag"; ah: "du.ah"; ai: "du.ai"; aj: "du.aj"; ak: "du.ak"; al: "du.al"; am: "du.am"; an: "du.an"; ao: "du.ao"; ap: "du.ap"; aq: "du.aq"; ar: "du.ar"; as: "du.as"; at: "du.at"; au: "du.au"; av: "du.av"; aw: "du.aw"; ax: "du.ax"; ay: "du.ay"; az: "du.az"; ba: "du.ba"; bb: "du.bb"; bc: "du.bc"; bd: "du.bd"; be: "du.be"; bf: "du.bf"; bg: "du.bg"; bh: "du.bh"; bi: "du.bi"; bj: "du.bj"; bk: "du.bk"; bl: "du.bl"; bm: "du.bm"; bn: "du.bn"; bo: "du.bo"; bp: "du.bp"; bq: "du.bq"; br: "du.br"; bs: "du.bs"; bt: "du.bt"; bu: "du.bu"; bv: "du.bv"; bw: "du.bw"; bx: "du.bx"; by: "du.by"; bz: "du.bz"; ca: "du.ca"; cb: "du.cb"; cc: "du.cc"; cd: "du.cd"; ce: "du.ce"; cf: "du.cf"; cg: "du.cg"; ch: "du.ch"; ci: "du.ci"; cj: "du.cj"; ck: "du.ck"; cl: "du.cl"; cm: "du.cm"; cn: "du.cn"; co: "du.co"; cp: "du.cp"; cq: "du.cq"; cr: "du.cr"; cs: "du.cs"; ct: "du.ct"; cu: "du.cu"; cv: "du.cv"; cw: "du.cw"; cx: "du.cx"; cy: "du.cy"; cz: "du.cz"; da: "du.da"; db: "du.db"; dc: "du.dc"; dd: "du.dd"; de: "du.de"; df: "du.df"; dg: "du.dg"; dh: "du.dh"; di: "du.di"; dj: "du.dj"; dk: "du.dk"; dl: "du.dl"; dm: "du.dm"; dn: "du.dn"; do: "du.do"; dp: "du.dp"; dq: "du.dq"; dr: "du.dr"; ds: "du.ds"; dt: "du.dt"; du: "du.du"; dv: "du.dv"; dw: "du.dw"; dx: "du.dx"; dy: "du.dy"; dz: "du.dz"; ea: "du.ea"; eb: "du.eb"; ec: "du.ec"; ed: "du.ed"; ee: "du.ee"; ef: "du.ef"; eg: "du.eg"; eh: "du.eh"; ei: "du.ei"; ej: "du.ej"; ek: "du.ek"; el: "du.el"; em: "du.em"; en: "du.en"; eo: "du.eo"; ep: "du.ep"; eq: "du.eq"; er: "du.er"; es: "du.es"; et: "du.et"; eu: "du.eu"; ev: "du.ev"; ew: "du.ew"; ex: "du.ex"; ey: "du.ey"; ez: "du.ez"; fa: "du.fa"; fb: "du.fb"; fc: "du.fc"; fd: "du.fd"; fe: "du.fe"; ff: "du.ff"; fg: "du.fg"; fh: "du.fh"; fi: "du.fi"; fj: "du.fj"; fk: "du.fk"; fl: "du.fl"; fm: "du.fm"; fn: "du.fn"; fo: "du.fo"; fp: "du.fp"; fq: "du.fq"; fr: "du.fr"; fs: "du.fs"; ft: "du.ft"; fu: "du.fu"; fv: "du.fv"; fw: "du.fw"; fx: "du.fx"; fy: "du.fy"; fz: "du.fz"; ga: "du.ga"; gb: "du.gb"; gc: "du.gc"; gd: "du.gd"; ge: "du.ge"; gf: "du.gf"; gg: "du.gg"; gh: "du.gh"; gi: "du.gi"; gj: "du.gj"; gk: "du.gk"; gl: "du.gl"; gm: "du.gm"; gn: "du.gn"; go: "du.go"; gp: "du.gp"; gq: "du.gq"; gr: "du.gr"; gs: "du.gs"; gt: "du.gt"; gu: "du.gu"; gv: "du.gv"; gw: "du.gw"; gx: "du.gx"; gy: "du.gy"; gz: "du.gz"; ha: "du.ha"; hb: "du.hb"; hc: "du.hc"; hd: "du.hd"; he: "du.he"; hf: "du.hf"; hg: "du.hg"; hh: "du.hh"; hi: "du.hi"; hj: "du.hj"; hk: "du.hk"; hl: "du.hl"; hm: "du.hm"; hn: "du.hn"; ho: "du.ho"; hp: "du.hp"; hq: "du.hq"; hr: "du.hr"; hs: "du.hs"; ht: "du.ht"; hu: "du.hu"; hv: "du.hv"; hw: "du.hw"; hx: "du.hx"; hy: "du.hy"; hz: "du.hz"; ia: "du.ia"; ib: "du.ib"; ic: "du.ic"; id: "du.id"; ie: "du.ie"; if: "du.if"; ig: "du.ig"; ih: "du.ih"; ii: "du.ii"; ij: "du.ij"; ik: "du.ik"; il: "du.il"; im: "du.im"; in: "du.in"; io: "du.io"; ip: "du.ip"; iq: "du.iq"; ir: "du.ir"; is: "du.is"; it: "du.it"; iu: "du.iu"; iv: "du.iv"; iw: "du.iw"; ix: "du.ix"; iy: "du.iy"; iz: "du.iz"; ja: "du.ja"; jb: "du.jb"; jc: "du.jc"; jd: "du.jd"; je: "du.je"; jf: "du.jf"; jg: "du.jg"; jh: "du.jh"; ji: "du.ji"; jj: "du.jj"; jk: "du.jk"; jl: "du.jl"; jm: "du.jm"; jn: "du.jn"; jo: "du.jo"; jp: "du.jp"; jq: "du.jq"; jr: "du.jr"; js: "du.js"; jt: "du.jt"; ju: "du.ju"; jv: "du.jv"; jw: "du.jw"; jx: "du.jx"; jy: "du.jy"; jz: "du.jz"; ka: "du.ka"; kb: "du.kb"; kc: "du.kc"; kd: "du.kd"; ke: "du.ke"; kf: "du.kf"; kg: "du.kg"; kh: "du.kh"; ki: "du.ki"; kj: "du.kj"; kk: "du.kk"; kl: "du.kl"; km: "du.km"; kn: "du.kn"; ko: "du.ko"; kp: "du.kp"; kq: "du.kq"; kr: "du.kr"; ks: "du.ks"; kt: "du.kt"; ku: "du.ku"; kv: "du.kv"; kw: "du.kw"; kx: "du.kx"; ky: "du.ky"; kz: "du.kz"; la: "du.la"; lb: "du.lb"; lc: "du.lc"; ld: "du.ld"; le: "du.le"; lf: "du.lf"; lg: "du.lg"; lh: "du.lh"; li: "du.li"; lj: "du.lj"; lk: "du.lk"; ll: "du.ll"; lm: "du.lm"; ln: "du.ln"; lo: "du.lo"; lp: "du.lp"; lq: "du.lq"; lr: "du.lr"; ls: "du.ls"; lt: "du.lt"; lu: "du.lu"; lv: "du.lv"; lw: "du.lw"; lx: "du.lx"; ly: "du.ly"; lz: "du.lz"; ma: "du.ma"; mb: "du.mb"; mc: "du.mc"; md: "du.md"; me: "du.me"; mf: "du.mf"; mg: "du.mg"; mh: "du.mh"; mi: "du.mi"; mj: "du.mj"; mk: "du.mk"; ml: "du.ml"; mm: "du.mm"; mn: "du.mn"; mo: "du.mo"; mp: "du.mp"; mq: "du.mq"; mr: "du.mr"; ms: "du.ms"; mt: "du.mt"; mu: "du.mu"; mv: "du.mv"; mw: "du.mw"; mx: "du.mx"; my: "du.my"; mz: "du.mz"; na: "du.na"; nb: "du.nb"; nc: "du.nc"; nd: "du.nd"; ne: "du.ne"; nf: "du.nf"; ng: "du.ng"; nh: "du.nh"; ni: "du.ni"; nj: "du.nj"; nk: "du.nk"; nl: "du.nl"; nm: "du.nm"; nn: "du.nn"; no: "du.no"; np: "du.np"; nq: "du.nq"; nr: "du.nr"; ns: "du.ns"; nt: "du.nt"; nu: "du.nu"; nv: "du.nv"; nw: "du.nw"; nx: "du.nx"; ny: "du.ny"; nz: "du.nz"; oa: "du.oa"; ob: "du.ob"; oc: "du.oc"; od: "du.od"; oe: "du.oe"; of: "du.of"; og: "du.og"; oh: "du.oh"; oi: "du.oi"; oj: "du.oj"; ok: "du.ok"; ol: "du.ol"; om: "du.om"; on: "du.on"; oo: "du.oo"; op: "du.op"; oq: "du.oq"; or: "du.or"; os: "du.os"; ot: "du.ot"; ou: "du.ou"; ov: "du.ov"; ow: "du.ow"; ox: "du.ox"; oy: "du.oy"; oz: "du.oz"; pa: "du.pa"; pb: "du.pb"; pc: "du.pc"; pd: "du.pd"; pe: "du.pe"; pf: "du.pf"; pg: "du.pg"; ph: "du.ph"; pi: "du.pi"; pj: "du.pj"; pk: "du.pk"; pl: "du.pl"; pm: "du.pm"; pn: "du.pn"; po: "du.po"; pp: "du.pp"; pq: "du.pq"; pr: "du.pr"; ps: "du.ps"; pt: "du.pt"; pu: "du.pu"; pv: "du.pv"; pw: "du.pw"; px: "du.px"; py: "du.py"; pz: "du.pz"; qa: "du.qa"; qb: "du.qb"; qc: "du.qc"; qd: "du.qd"; qe: "du.qe"; qf: "du.qf"; qg: "du.qg"; qh: "du.qh"; qi: "du.qi"; qj: "du.qj"; qk: "du.qk"; ql: "du.ql"; qm: "du.qm"; qn: "du.qn"; qo: "du.qo"; qp: "du.qp"; qq: "du.qq"; qr: "du.qr"; qs: "du.qs"; qt: "du.qt"; qu: "du.qu"; qv: "du.qv"; qw: "du.qw"; qx: "du.qx"; qy: "du.qy"; qz: "du.qz"; ra: "du.ra"; rb: "du.rb"; rc: "du.rc"; rd: "du.rd"; re: "du.re"; rf: "du.rf"; rg: "du.rg"; rh: "du.rh"; ri: "du.ri"; rj: "du.rj"; rk: "du.rk"; rl: "du.rl"; rm: "du.rm"; rn: "du.rn"; ro: "du.ro"; rp: "du.rp"; rq: "du.rq"; rr: "du.rr"; rs: "du.rs"; rt: "du.rt"; ru: "du.ru"; rv: "du.rv"; rw: "du.rw"; rx: "du.rx"; ry: "du.ry"; rz: "du.rz"; sa: "du.sa"; sb: "du.sb"; sc: "du.sc"; sd: "du.sd"; se: "du.se"; sf: "du.sf"; sg: "du.sg"; sh: "du.sh"; si: "du.si"; sj: "du.sj"; sk: "du.sk"; sl: "du.sl"; sm: "du.sm"; sn: "du.sn"; so: "du.so"; sp: "du.sp"; sq: "du.sq"; sr: "du.sr"; ss: "du.ss"; st: "du.st"; su: "du.su"; sv: "du.sv"; sw: "du.sw"; sx: "du.sx"; sy: "du.sy"; sz: "du.sz"; ta: "du.ta"; tb: "du.tb"; tc: "du.tc"; td: "du.td"; te: "du.te"; tf: "du.tf"; tg: "du.tg"; th: "du.th"; ti: "du.ti"; tj: "du.tj"; tk: "du.tk"; tl: "du.tl"; tm: "du.tm"; tn: "du.tn"; to: "du.to"; tp: "du.tp"; tq: "du.tq"; tr: "du.tr"; ts: "du.ts"; tt: "du.tt"; tu: "du.tu"; tv: "du.tv"; tw: "du.tw"; tx: "du.tx"; ty: "du.ty"; tz: "du.tz"; ua: "du.ua"; ub: "du.ub"; uc: "du.uc"; ud: "du.ud"; ue: "du.ue"; uf: "du.uf"; ug: "du.ug"; uh: "du.uh"; ui: "du.ui"; uj: "du.uj"; uk: "du.uk"; ul: "du.ul"; um: "du.um"; un: "du.un"; uo: "du.uo"; up: "du.up"; uq: "du.uq"; ur: "du.ur"; us: "du.us"; ut: "du.ut"; uu: "du.uu"; uv: "du.uv"; uw: "du.uw"; ux: "du.ux"; uy: "du.uy"; uz: "du.uz"; va: "du.va"; vb: "du.vb"; vc: "du.vc"; vd: "du.vd"; ve: "du.ve"; vf: "du.vf"; vg: "du.vg"; vh: "du.vh"; vi: "du.vi"; vj: "du.vj"; vk: "du.vk"; vl: "du.vl"; vm: "du.vm"; vn: "du.vn"; vo: "du.vo"; vp: "du.vp"; vq: "du.vq"; vr: "du.vr"; vs: "du.vs"; vt: "du.vt"; vu: "du.vu"; vv: "du.vv"; vw: "du.vw"; vx: "du.vx"; vy: "du.vy"; vz: "du.vz"; wa: "du.wa"; wb: "du.wb"; wc: "du.wc"; wd: "du.wd"; we: "du.we"; wf: "du.wf"; wg: "du.wg"; wh: "du.wh"; wi: "du.wi"; wj: "du.wj"; wk: "du.wk"; wl: "du.wl"; wm: "du.wm"; wn: "du.wn"; wo: "du.wo"; wp: "du.wp"; wq: "du.wq"; wr: "du.wr"; ws: "du.ws"; wt: "du.wt"; wu: "du.wu"; wv: "du.wv"; ww: "du.ww"; wx: "du.wx"; wy: "du.wy"; wz: "du.wz"; xa: "du.xa"; xb: "du.xb"; xc: "du.xc"; xd: "du.xd"; xe: "du.xe"; xf: "du.xf"; xg: "du.xg"; xh: "du.xh"; xi: "du.xi"; xj: "du.xj"; xk: "du.xk"; xl: "du.xl"; xm: "du.xm"; xn: "du.xn"; xo: "du.xo"; xp: "du.xp"; xq: "du.xq"; xr: "du.xr"; xs: "du.xs"; xt: "du.xt"; xu: "du.xu"; xv: "du.xv"; xw: "du.xw"; xx: "du.xx"; xy: "du.xy"; xz: "du.xz"; ya: "du.ya"; yb: "du.yb"; yc: "du.yc"; yd: "du.yd"; ye: "du.ye"; yf: "du.yf"; yg: "du.yg"; yh: "du.yh"; yi: "du.yi"; yj: "du.yj"; yk: "du.yk"; yl: "du.yl"; ym: "du.ym"; yn: "du.yn"; yo: "du.yo"; yp: "du.yp"; yq: "du.yq"; yr: "du.yr"; ys: "du.ys"; yt: "du.yt"; yu: "du.yu"; yv: "du.yv"; yw: "du.yw"; yx: "du.yx"; yy: "du.yy"; yz: "du.yz"; za: "du.za"; zb: "du.zb"; zc: "du.zc"; zd: "du.zd"; ze: "du.ze"; zf: "du.zf"; zg: "du.zg"; zh: "du.zh"; zi: "du.zi"; zj: "du.zj"; zk: "du.zk"; zl: "du.zl"; zm: "du.zm"; zn: "du.zn"; zo: "du.zo"; zp: "du.zp"; zq: "du.zq"; zr: "du.zr"; zs: "du.zs"; zt: "du.zt"; zu: "du.zu"; zv: "du.zv"; zw: "du.zw"; zx: "du.zx"; zy: "du.zy"; zz: "du.zz"; }; dv: { aa: "dv.aa"; ab: "dv.ab"; ac: "dv.ac"; ad: "dv.ad"; ae: "dv.ae"; af: "dv.af"; ag: "dv.ag"; ah: "dv.ah"; ai: "dv.ai"; aj: "dv.aj"; ak: "dv.ak"; al: "dv.al"; am: "dv.am"; an: "dv.an"; ao: "dv.ao"; ap: "dv.ap"; aq: "dv.aq"; ar: "dv.ar"; as: "dv.as"; at: "dv.at"; au: "dv.au"; av: "dv.av"; aw: "dv.aw"; ax: "dv.ax"; ay: "dv.ay"; az: "dv.az"; ba: "dv.ba"; bb: "dv.bb"; bc: "dv.bc"; bd: "dv.bd"; be: "dv.be"; bf: "dv.bf"; bg: "dv.bg"; bh: "dv.bh"; bi: "dv.bi"; bj: "dv.bj"; bk: "dv.bk"; bl: "dv.bl"; bm: "dv.bm"; bn: "dv.bn"; bo: "dv.bo"; bp: "dv.bp"; bq: "dv.bq"; br: "dv.br"; bs: "dv.bs"; bt: "dv.bt"; bu: "dv.bu"; bv: "dv.bv"; bw: "dv.bw"; bx: "dv.bx"; by: "dv.by"; bz: "dv.bz"; ca: "dv.ca"; cb: "dv.cb"; cc: "dv.cc"; cd: "dv.cd"; ce: "dv.ce"; cf: "dv.cf"; cg: "dv.cg"; ch: "dv.ch"; ci: "dv.ci"; cj: "dv.cj"; ck: "dv.ck"; cl: "dv.cl"; cm: "dv.cm"; cn: "dv.cn"; co: "dv.co"; cp: "dv.cp"; cq: "dv.cq"; cr: "dv.cr"; cs: "dv.cs"; ct: "dv.ct"; cu: "dv.cu"; cv: "dv.cv"; cw: "dv.cw"; cx: "dv.cx"; cy: "dv.cy"; cz: "dv.cz"; da: "dv.da"; db: "dv.db"; dc: "dv.dc"; dd: "dv.dd"; de: "dv.de"; df: "dv.df"; dg: "dv.dg"; dh: "dv.dh"; di: "dv.di"; dj: "dv.dj"; dk: "dv.dk"; dl: "dv.dl"; dm: "dv.dm"; dn: "dv.dn"; do: "dv.do"; dp: "dv.dp"; dq: "dv.dq"; dr: "dv.dr"; ds: "dv.ds"; dt: "dv.dt"; du: "dv.du"; dv: "dv.dv"; dw: "dv.dw"; dx: "dv.dx"; dy: "dv.dy"; dz: "dv.dz"; ea: "dv.ea"; eb: "dv.eb"; ec: "dv.ec"; ed: "dv.ed"; ee: "dv.ee"; ef: "dv.ef"; eg: "dv.eg"; eh: "dv.eh"; ei: "dv.ei"; ej: "dv.ej"; ek: "dv.ek"; el: "dv.el"; em: "dv.em"; en: "dv.en"; eo: "dv.eo"; ep: "dv.ep"; eq: "dv.eq"; er: "dv.er"; es: "dv.es"; et: "dv.et"; eu: "dv.eu"; ev: "dv.ev"; ew: "dv.ew"; ex: "dv.ex"; ey: "dv.ey"; ez: "dv.ez"; fa: "dv.fa"; fb: "dv.fb"; fc: "dv.fc"; fd: "dv.fd"; fe: "dv.fe"; ff: "dv.ff"; fg: "dv.fg"; fh: "dv.fh"; fi: "dv.fi"; fj: "dv.fj"; fk: "dv.fk"; fl: "dv.fl"; fm: "dv.fm"; fn: "dv.fn"; fo: "dv.fo"; fp: "dv.fp"; fq: "dv.fq"; fr: "dv.fr"; fs: "dv.fs"; ft: "dv.ft"; fu: "dv.fu"; fv: "dv.fv"; fw: "dv.fw"; fx: "dv.fx"; fy: "dv.fy"; fz: "dv.fz"; ga: "dv.ga"; gb: "dv.gb"; gc: "dv.gc"; gd: "dv.gd"; ge: "dv.ge"; gf: "dv.gf"; gg: "dv.gg"; gh: "dv.gh"; gi: "dv.gi"; gj: "dv.gj"; gk: "dv.gk"; gl: "dv.gl"; gm: "dv.gm"; gn: "dv.gn"; go: "dv.go"; gp: "dv.gp"; gq: "dv.gq"; gr: "dv.gr"; gs: "dv.gs"; gt: "dv.gt"; gu: "dv.gu"; gv: "dv.gv"; gw: "dv.gw"; gx: "dv.gx"; gy: "dv.gy"; gz: "dv.gz"; ha: "dv.ha"; hb: "dv.hb"; hc: "dv.hc"; hd: "dv.hd"; he: "dv.he"; hf: "dv.hf"; hg: "dv.hg"; hh: "dv.hh"; hi: "dv.hi"; hj: "dv.hj"; hk: "dv.hk"; hl: "dv.hl"; hm: "dv.hm"; hn: "dv.hn"; ho: "dv.ho"; hp: "dv.hp"; hq: "dv.hq"; hr: "dv.hr"; hs: "dv.hs"; ht: "dv.ht"; hu: "dv.hu"; hv: "dv.hv"; hw: "dv.hw"; hx: "dv.hx"; hy: "dv.hy"; hz: "dv.hz"; ia: "dv.ia"; ib: "dv.ib"; ic: "dv.ic"; id: "dv.id"; ie: "dv.ie"; if: "dv.if"; ig: "dv.ig"; ih: "dv.ih"; ii: "dv.ii"; ij: "dv.ij"; ik: "dv.ik"; il: "dv.il"; im: "dv.im"; in: "dv.in"; io: "dv.io"; ip: "dv.ip"; iq: "dv.iq"; ir: "dv.ir"; is: "dv.is"; it: "dv.it"; iu: "dv.iu"; iv: "dv.iv"; iw: "dv.iw"; ix: "dv.ix"; iy: "dv.iy"; iz: "dv.iz"; ja: "dv.ja"; jb: "dv.jb"; jc: "dv.jc"; jd: "dv.jd"; je: "dv.je"; jf: "dv.jf"; jg: "dv.jg"; jh: "dv.jh"; ji: "dv.ji"; jj: "dv.jj"; jk: "dv.jk"; jl: "dv.jl"; jm: "dv.jm"; jn: "dv.jn"; jo: "dv.jo"; jp: "dv.jp"; jq: "dv.jq"; jr: "dv.jr"; js: "dv.js"; jt: "dv.jt"; ju: "dv.ju"; jv: "dv.jv"; jw: "dv.jw"; jx: "dv.jx"; jy: "dv.jy"; jz: "dv.jz"; ka: "dv.ka"; kb: "dv.kb"; kc: "dv.kc"; kd: "dv.kd"; ke: "dv.ke"; kf: "dv.kf"; kg: "dv.kg"; kh: "dv.kh"; ki: "dv.ki"; kj: "dv.kj"; kk: "dv.kk"; kl: "dv.kl"; km: "dv.km"; kn: "dv.kn"; ko: "dv.ko"; kp: "dv.kp"; kq: "dv.kq"; kr: "dv.kr"; ks: "dv.ks"; kt: "dv.kt"; ku: "dv.ku"; kv: "dv.kv"; kw: "dv.kw"; kx: "dv.kx"; ky: "dv.ky"; kz: "dv.kz"; la: "dv.la"; lb: "dv.lb"; lc: "dv.lc"; ld: "dv.ld"; le: "dv.le"; lf: "dv.lf"; lg: "dv.lg"; lh: "dv.lh"; li: "dv.li"; lj: "dv.lj"; lk: "dv.lk"; ll: "dv.ll"; lm: "dv.lm"; ln: "dv.ln"; lo: "dv.lo"; lp: "dv.lp"; lq: "dv.lq"; lr: "dv.lr"; ls: "dv.ls"; lt: "dv.lt"; lu: "dv.lu"; lv: "dv.lv"; lw: "dv.lw"; lx: "dv.lx"; ly: "dv.ly"; lz: "dv.lz"; ma: "dv.ma"; mb: "dv.mb"; mc: "dv.mc"; md: "dv.md"; me: "dv.me"; mf: "dv.mf"; mg: "dv.mg"; mh: "dv.mh"; mi: "dv.mi"; mj: "dv.mj"; mk: "dv.mk"; ml: "dv.ml"; mm: "dv.mm"; mn: "dv.mn"; mo: "dv.mo"; mp: "dv.mp"; mq: "dv.mq"; mr: "dv.mr"; ms: "dv.ms"; mt: "dv.mt"; mu: "dv.mu"; mv: "dv.mv"; mw: "dv.mw"; mx: "dv.mx"; my: "dv.my"; mz: "dv.mz"; na: "dv.na"; nb: "dv.nb"; nc: "dv.nc"; nd: "dv.nd"; ne: "dv.ne"; nf: "dv.nf"; ng: "dv.ng"; nh: "dv.nh"; ni: "dv.ni"; nj: "dv.nj"; nk: "dv.nk"; nl: "dv.nl"; nm: "dv.nm"; nn: "dv.nn"; no: "dv.no"; np: "dv.np"; nq: "dv.nq"; nr: "dv.nr"; ns: "dv.ns"; nt: "dv.nt"; nu: "dv.nu"; nv: "dv.nv"; nw: "dv.nw"; nx: "dv.nx"; ny: "dv.ny"; nz: "dv.nz"; oa: "dv.oa"; ob: "dv.ob"; oc: "dv.oc"; od: "dv.od"; oe: "dv.oe"; of: "dv.of"; og: "dv.og"; oh: "dv.oh"; oi: "dv.oi"; oj: "dv.oj"; ok: "dv.ok"; ol: "dv.ol"; om: "dv.om"; on: "dv.on"; oo: "dv.oo"; op: "dv.op"; oq: "dv.oq"; or: "dv.or"; os: "dv.os"; ot: "dv.ot"; ou: "dv.ou"; ov: "dv.ov"; ow: "dv.ow"; ox: "dv.ox"; oy: "dv.oy"; oz: "dv.oz"; pa: "dv.pa"; pb: "dv.pb"; pc: "dv.pc"; pd: "dv.pd"; pe: "dv.pe"; pf: "dv.pf"; pg: "dv.pg"; ph: "dv.ph"; pi: "dv.pi"; pj: "dv.pj"; pk: "dv.pk"; pl: "dv.pl"; pm: "dv.pm"; pn: "dv.pn"; po: "dv.po"; pp: "dv.pp"; pq: "dv.pq"; pr: "dv.pr"; ps: "dv.ps"; pt: "dv.pt"; pu: "dv.pu"; pv: "dv.pv"; pw: "dv.pw"; px: "dv.px"; py: "dv.py"; pz: "dv.pz"; qa: "dv.qa"; qb: "dv.qb"; qc: "dv.qc"; qd: "dv.qd"; qe: "dv.qe"; qf: "dv.qf"; qg: "dv.qg"; qh: "dv.qh"; qi: "dv.qi"; qj: "dv.qj"; qk: "dv.qk"; ql: "dv.ql"; qm: "dv.qm"; qn: "dv.qn"; qo: "dv.qo"; qp: "dv.qp"; qq: "dv.qq"; qr: "dv.qr"; qs: "dv.qs"; qt: "dv.qt"; qu: "dv.qu"; qv: "dv.qv"; qw: "dv.qw"; qx: "dv.qx"; qy: "dv.qy"; qz: "dv.qz"; ra: "dv.ra"; rb: "dv.rb"; rc: "dv.rc"; rd: "dv.rd"; re: "dv.re"; rf: "dv.rf"; rg: "dv.rg"; rh: "dv.rh"; ri: "dv.ri"; rj: "dv.rj"; rk: "dv.rk"; rl: "dv.rl"; rm: "dv.rm"; rn: "dv.rn"; ro: "dv.ro"; rp: "dv.rp"; rq: "dv.rq"; rr: "dv.rr"; rs: "dv.rs"; rt: "dv.rt"; ru: "dv.ru"; rv: "dv.rv"; rw: "dv.rw"; rx: "dv.rx"; ry: "dv.ry"; rz: "dv.rz"; sa: "dv.sa"; sb: "dv.sb"; sc: "dv.sc"; sd: "dv.sd"; se: "dv.se"; sf: "dv.sf"; sg: "dv.sg"; sh: "dv.sh"; si: "dv.si"; sj: "dv.sj"; sk: "dv.sk"; sl: "dv.sl"; sm: "dv.sm"; sn: "dv.sn"; so: "dv.so"; sp: "dv.sp"; sq: "dv.sq"; sr: "dv.sr"; ss: "dv.ss"; st: "dv.st"; su: "dv.su"; sv: "dv.sv"; sw: "dv.sw"; sx: "dv.sx"; sy: "dv.sy"; sz: "dv.sz"; ta: "dv.ta"; tb: "dv.tb"; tc: "dv.tc"; td: "dv.td"; te: "dv.te"; tf: "dv.tf"; tg: "dv.tg"; th: "dv.th"; ti: "dv.ti"; tj: "dv.tj"; tk: "dv.tk"; tl: "dv.tl"; tm: "dv.tm"; tn: "dv.tn"; to: "dv.to"; tp: "dv.tp"; tq: "dv.tq"; tr: "dv.tr"; ts: "dv.ts"; tt: "dv.tt"; tu: "dv.tu"; tv: "dv.tv"; tw: "dv.tw"; tx: "dv.tx"; ty: "dv.ty"; tz: "dv.tz"; ua: "dv.ua"; ub: "dv.ub"; uc: "dv.uc"; ud: "dv.ud"; ue: "dv.ue"; uf: "dv.uf"; ug: "dv.ug"; uh: "dv.uh"; ui: "dv.ui"; uj: "dv.uj"; uk: "dv.uk"; ul: "dv.ul"; um: "dv.um"; un: "dv.un"; uo: "dv.uo"; up: "dv.up"; uq: "dv.uq"; ur: "dv.ur"; us: "dv.us"; ut: "dv.ut"; uu: "dv.uu"; uv: "dv.uv"; uw: "dv.uw"; ux: "dv.ux"; uy: "dv.uy"; uz: "dv.uz"; va: "dv.va"; vb: "dv.vb"; vc: "dv.vc"; vd: "dv.vd"; ve: "dv.ve"; vf: "dv.vf"; vg: "dv.vg"; vh: "dv.vh"; vi: "dv.vi"; vj: "dv.vj"; vk: "dv.vk"; vl: "dv.vl"; vm: "dv.vm"; vn: "dv.vn"; vo: "dv.vo"; vp: "dv.vp"; vq: "dv.vq"; vr: "dv.vr"; vs: "dv.vs"; vt: "dv.vt"; vu: "dv.vu"; vv: "dv.vv"; vw: "dv.vw"; vx: "dv.vx"; vy: "dv.vy"; vz: "dv.vz"; wa: "dv.wa"; wb: "dv.wb"; wc: "dv.wc"; wd: "dv.wd"; we: "dv.we"; wf: "dv.wf"; wg: "dv.wg"; wh: "dv.wh"; wi: "dv.wi"; wj: "dv.wj"; wk: "dv.wk"; wl: "dv.wl"; wm: "dv.wm"; wn: "dv.wn"; wo: "dv.wo"; wp: "dv.wp"; wq: "dv.wq"; wr: "dv.wr"; ws: "dv.ws"; wt: "dv.wt"; wu: "dv.wu"; wv: "dv.wv"; ww: "dv.ww"; wx: "dv.wx"; wy: "dv.wy"; wz: "dv.wz"; xa: "dv.xa"; xb: "dv.xb"; xc: "dv.xc"; xd: "dv.xd"; xe: "dv.xe"; xf: "dv.xf"; xg: "dv.xg"; xh: "dv.xh"; xi: "dv.xi"; xj: "dv.xj"; xk: "dv.xk"; xl: "dv.xl"; xm: "dv.xm"; xn: "dv.xn"; xo: "dv.xo"; xp: "dv.xp"; xq: "dv.xq"; xr: "dv.xr"; xs: "dv.xs"; xt: "dv.xt"; xu: "dv.xu"; xv: "dv.xv"; xw: "dv.xw"; xx: "dv.xx"; xy: "dv.xy"; xz: "dv.xz"; ya: "dv.ya"; yb: "dv.yb"; yc: "dv.yc"; yd: "dv.yd"; ye: "dv.ye"; yf: "dv.yf"; yg: "dv.yg"; yh: "dv.yh"; yi: "dv.yi"; yj: "dv.yj"; yk: "dv.yk"; yl: "dv.yl"; ym: "dv.ym"; yn: "dv.yn"; yo: "dv.yo"; yp: "dv.yp"; yq: "dv.yq"; yr: "dv.yr"; ys: "dv.ys"; yt: "dv.yt"; yu: "dv.yu"; yv: "dv.yv"; yw: "dv.yw"; yx: "dv.yx"; yy: "dv.yy"; yz: "dv.yz"; za: "dv.za"; zb: "dv.zb"; zc: "dv.zc"; zd: "dv.zd"; ze: "dv.ze"; zf: "dv.zf"; zg: "dv.zg"; zh: "dv.zh"; zi: "dv.zi"; zj: "dv.zj"; zk: "dv.zk"; zl: "dv.zl"; zm: "dv.zm"; zn: "dv.zn"; zo: "dv.zo"; zp: "dv.zp"; zq: "dv.zq"; zr: "dv.zr"; zs: "dv.zs"; zt: "dv.zt"; zu: "dv.zu"; zv: "dv.zv"; zw: "dv.zw"; zx: "dv.zx"; zy: "dv.zy"; zz: "dv.zz"; }; dw: { aa: "dw.aa"; ab: "dw.ab"; ac: "dw.ac"; ad: "dw.ad"; ae: "dw.ae"; af: "dw.af"; ag: "dw.ag"; ah: "dw.ah"; ai: "dw.ai"; aj: "dw.aj"; ak: "dw.ak"; al: "dw.al"; am: "dw.am"; an: "dw.an"; ao: "dw.ao"; ap: "dw.ap"; aq: "dw.aq"; ar: "dw.ar"; as: "dw.as"; at: "dw.at"; au: "dw.au"; av: "dw.av"; aw: "dw.aw"; ax: "dw.ax"; ay: "dw.ay"; az: "dw.az"; ba: "dw.ba"; bb: "dw.bb"; bc: "dw.bc"; bd: "dw.bd"; be: "dw.be"; bf: "dw.bf"; bg: "dw.bg"; bh: "dw.bh"; bi: "dw.bi"; bj: "dw.bj"; bk: "dw.bk"; bl: "dw.bl"; bm: "dw.bm"; bn: "dw.bn"; bo: "dw.bo"; bp: "dw.bp"; bq: "dw.bq"; br: "dw.br"; bs: "dw.bs"; bt: "dw.bt"; bu: "dw.bu"; bv: "dw.bv"; bw: "dw.bw"; bx: "dw.bx"; by: "dw.by"; bz: "dw.bz"; ca: "dw.ca"; cb: "dw.cb"; cc: "dw.cc"; cd: "dw.cd"; ce: "dw.ce"; cf: "dw.cf"; cg: "dw.cg"; ch: "dw.ch"; ci: "dw.ci"; cj: "dw.cj"; ck: "dw.ck"; cl: "dw.cl"; cm: "dw.cm"; cn: "dw.cn"; co: "dw.co"; cp: "dw.cp"; cq: "dw.cq"; cr: "dw.cr"; cs: "dw.cs"; ct: "dw.ct"; cu: "dw.cu"; cv: "dw.cv"; cw: "dw.cw"; cx: "dw.cx"; cy: "dw.cy"; cz: "dw.cz"; da: "dw.da"; db: "dw.db"; dc: "dw.dc"; dd: "dw.dd"; de: "dw.de"; df: "dw.df"; dg: "dw.dg"; dh: "dw.dh"; di: "dw.di"; dj: "dw.dj"; dk: "dw.dk"; dl: "dw.dl"; dm: "dw.dm"; dn: "dw.dn"; do: "dw.do"; dp: "dw.dp"; dq: "dw.dq"; dr: "dw.dr"; ds: "dw.ds"; dt: "dw.dt"; du: "dw.du"; dv: "dw.dv"; dw: "dw.dw"; dx: "dw.dx"; dy: "dw.dy"; dz: "dw.dz"; ea: "dw.ea"; eb: "dw.eb"; ec: "dw.ec"; ed: "dw.ed"; ee: "dw.ee"; ef: "dw.ef"; eg: "dw.eg"; eh: "dw.eh"; ei: "dw.ei"; ej: "dw.ej"; ek: "dw.ek"; el: "dw.el"; em: "dw.em"; en: "dw.en"; eo: "dw.eo"; ep: "dw.ep"; eq: "dw.eq"; er: "dw.er"; es: "dw.es"; et: "dw.et"; eu: "dw.eu"; ev: "dw.ev"; ew: "dw.ew"; ex: "dw.ex"; ey: "dw.ey"; ez: "dw.ez"; fa: "dw.fa"; fb: "dw.fb"; fc: "dw.fc"; fd: "dw.fd"; fe: "dw.fe"; ff: "dw.ff"; fg: "dw.fg"; fh: "dw.fh"; fi: "dw.fi"; fj: "dw.fj"; fk: "dw.fk"; fl: "dw.fl"; fm: "dw.fm"; fn: "dw.fn"; fo: "dw.fo"; fp: "dw.fp"; fq: "dw.fq"; fr: "dw.fr"; fs: "dw.fs"; ft: "dw.ft"; fu: "dw.fu"; fv: "dw.fv"; fw: "dw.fw"; fx: "dw.fx"; fy: "dw.fy"; fz: "dw.fz"; ga: "dw.ga"; gb: "dw.gb"; gc: "dw.gc"; gd: "dw.gd"; ge: "dw.ge"; gf: "dw.gf"; gg: "dw.gg"; gh: "dw.gh"; gi: "dw.gi"; gj: "dw.gj"; gk: "dw.gk"; gl: "dw.gl"; gm: "dw.gm"; gn: "dw.gn"; go: "dw.go"; gp: "dw.gp"; gq: "dw.gq"; gr: "dw.gr"; gs: "dw.gs"; gt: "dw.gt"; gu: "dw.gu"; gv: "dw.gv"; gw: "dw.gw"; gx: "dw.gx"; gy: "dw.gy"; gz: "dw.gz"; ha: "dw.ha"; hb: "dw.hb"; hc: "dw.hc"; hd: "dw.hd"; he: "dw.he"; hf: "dw.hf"; hg: "dw.hg"; hh: "dw.hh"; hi: "dw.hi"; hj: "dw.hj"; hk: "dw.hk"; hl: "dw.hl"; hm: "dw.hm"; hn: "dw.hn"; ho: "dw.ho"; hp: "dw.hp"; hq: "dw.hq"; hr: "dw.hr"; hs: "dw.hs"; ht: "dw.ht"; hu: "dw.hu"; hv: "dw.hv"; hw: "dw.hw"; hx: "dw.hx"; hy: "dw.hy"; hz: "dw.hz"; ia: "dw.ia"; ib: "dw.ib"; ic: "dw.ic"; id: "dw.id"; ie: "dw.ie"; if: "dw.if"; ig: "dw.ig"; ih: "dw.ih"; ii: "dw.ii"; ij: "dw.ij"; ik: "dw.ik"; il: "dw.il"; im: "dw.im"; in: "dw.in"; io: "dw.io"; ip: "dw.ip"; iq: "dw.iq"; ir: "dw.ir"; is: "dw.is"; it: "dw.it"; iu: "dw.iu"; iv: "dw.iv"; iw: "dw.iw"; ix: "dw.ix"; iy: "dw.iy"; iz: "dw.iz"; ja: "dw.ja"; jb: "dw.jb"; jc: "dw.jc"; jd: "dw.jd"; je: "dw.je"; jf: "dw.jf"; jg: "dw.jg"; jh: "dw.jh"; ji: "dw.ji"; jj: "dw.jj"; jk: "dw.jk"; jl: "dw.jl"; jm: "dw.jm"; jn: "dw.jn"; jo: "dw.jo"; jp: "dw.jp"; jq: "dw.jq"; jr: "dw.jr"; js: "dw.js"; jt: "dw.jt"; ju: "dw.ju"; jv: "dw.jv"; jw: "dw.jw"; jx: "dw.jx"; jy: "dw.jy"; jz: "dw.jz"; ka: "dw.ka"; kb: "dw.kb"; kc: "dw.kc"; kd: "dw.kd"; ke: "dw.ke"; kf: "dw.kf"; kg: "dw.kg"; kh: "dw.kh"; ki: "dw.ki"; kj: "dw.kj"; kk: "dw.kk"; kl: "dw.kl"; km: "dw.km"; kn: "dw.kn"; ko: "dw.ko"; kp: "dw.kp"; kq: "dw.kq"; kr: "dw.kr"; ks: "dw.ks"; kt: "dw.kt"; ku: "dw.ku"; kv: "dw.kv"; kw: "dw.kw"; kx: "dw.kx"; ky: "dw.ky"; kz: "dw.kz"; la: "dw.la"; lb: "dw.lb"; lc: "dw.lc"; ld: "dw.ld"; le: "dw.le"; lf: "dw.lf"; lg: "dw.lg"; lh: "dw.lh"; li: "dw.li"; lj: "dw.lj"; lk: "dw.lk"; ll: "dw.ll"; lm: "dw.lm"; ln: "dw.ln"; lo: "dw.lo"; lp: "dw.lp"; lq: "dw.lq"; lr: "dw.lr"; ls: "dw.ls"; lt: "dw.lt"; lu: "dw.lu"; lv: "dw.lv"; lw: "dw.lw"; lx: "dw.lx"; ly: "dw.ly"; lz: "dw.lz"; ma: "dw.ma"; mb: "dw.mb"; mc: "dw.mc"; md: "dw.md"; me: "dw.me"; mf: "dw.mf"; mg: "dw.mg"; mh: "dw.mh"; mi: "dw.mi"; mj: "dw.mj"; mk: "dw.mk"; ml: "dw.ml"; mm: "dw.mm"; mn: "dw.mn"; mo: "dw.mo"; mp: "dw.mp"; mq: "dw.mq"; mr: "dw.mr"; ms: "dw.ms"; mt: "dw.mt"; mu: "dw.mu"; mv: "dw.mv"; mw: "dw.mw"; mx: "dw.mx"; my: "dw.my"; mz: "dw.mz"; na: "dw.na"; nb: "dw.nb"; nc: "dw.nc"; nd: "dw.nd"; ne: "dw.ne"; nf: "dw.nf"; ng: "dw.ng"; nh: "dw.nh"; ni: "dw.ni"; nj: "dw.nj"; nk: "dw.nk"; nl: "dw.nl"; nm: "dw.nm"; nn: "dw.nn"; no: "dw.no"; np: "dw.np"; nq: "dw.nq"; nr: "dw.nr"; ns: "dw.ns"; nt: "dw.nt"; nu: "dw.nu"; nv: "dw.nv"; nw: "dw.nw"; nx: "dw.nx"; ny: "dw.ny"; nz: "dw.nz"; oa: "dw.oa"; ob: "dw.ob"; oc: "dw.oc"; od: "dw.od"; oe: "dw.oe"; of: "dw.of"; og: "dw.og"; oh: "dw.oh"; oi: "dw.oi"; oj: "dw.oj"; ok: "dw.ok"; ol: "dw.ol"; om: "dw.om"; on: "dw.on"; oo: "dw.oo"; op: "dw.op"; oq: "dw.oq"; or: "dw.or"; os: "dw.os"; ot: "dw.ot"; ou: "dw.ou"; ov: "dw.ov"; ow: "dw.ow"; ox: "dw.ox"; oy: "dw.oy"; oz: "dw.oz"; pa: "dw.pa"; pb: "dw.pb"; pc: "dw.pc"; pd: "dw.pd"; pe: "dw.pe"; pf: "dw.pf"; pg: "dw.pg"; ph: "dw.ph"; pi: "dw.pi"; pj: "dw.pj"; pk: "dw.pk"; pl: "dw.pl"; pm: "dw.pm"; pn: "dw.pn"; po: "dw.po"; pp: "dw.pp"; pq: "dw.pq"; pr: "dw.pr"; ps: "dw.ps"; pt: "dw.pt"; pu: "dw.pu"; pv: "dw.pv"; pw: "dw.pw"; px: "dw.px"; py: "dw.py"; pz: "dw.pz"; qa: "dw.qa"; qb: "dw.qb"; qc: "dw.qc"; qd: "dw.qd"; qe: "dw.qe"; qf: "dw.qf"; qg: "dw.qg"; qh: "dw.qh"; qi: "dw.qi"; qj: "dw.qj"; qk: "dw.qk"; ql: "dw.ql"; qm: "dw.qm"; qn: "dw.qn"; qo: "dw.qo"; qp: "dw.qp"; qq: "dw.qq"; qr: "dw.qr"; qs: "dw.qs"; qt: "dw.qt"; qu: "dw.qu"; qv: "dw.qv"; qw: "dw.qw"; qx: "dw.qx"; qy: "dw.qy"; qz: "dw.qz"; ra: "dw.ra"; rb: "dw.rb"; rc: "dw.rc"; rd: "dw.rd"; re: "dw.re"; rf: "dw.rf"; rg: "dw.rg"; rh: "dw.rh"; ri: "dw.ri"; rj: "dw.rj"; rk: "dw.rk"; rl: "dw.rl"; rm: "dw.rm"; rn: "dw.rn"; ro: "dw.ro"; rp: "dw.rp"; rq: "dw.rq"; rr: "dw.rr"; rs: "dw.rs"; rt: "dw.rt"; ru: "dw.ru"; rv: "dw.rv"; rw: "dw.rw"; rx: "dw.rx"; ry: "dw.ry"; rz: "dw.rz"; sa: "dw.sa"; sb: "dw.sb"; sc: "dw.sc"; sd: "dw.sd"; se: "dw.se"; sf: "dw.sf"; sg: "dw.sg"; sh: "dw.sh"; si: "dw.si"; sj: "dw.sj"; sk: "dw.sk"; sl: "dw.sl"; sm: "dw.sm"; sn: "dw.sn"; so: "dw.so"; sp: "dw.sp"; sq: "dw.sq"; sr: "dw.sr"; ss: "dw.ss"; st: "dw.st"; su: "dw.su"; sv: "dw.sv"; sw: "dw.sw"; sx: "dw.sx"; sy: "dw.sy"; sz: "dw.sz"; ta: "dw.ta"; tb: "dw.tb"; tc: "dw.tc"; td: "dw.td"; te: "dw.te"; tf: "dw.tf"; tg: "dw.tg"; th: "dw.th"; ti: "dw.ti"; tj: "dw.tj"; tk: "dw.tk"; tl: "dw.tl"; tm: "dw.tm"; tn: "dw.tn"; to: "dw.to"; tp: "dw.tp"; tq: "dw.tq"; tr: "dw.tr"; ts: "dw.ts"; tt: "dw.tt"; tu: "dw.tu"; tv: "dw.tv"; tw: "dw.tw"; tx: "dw.tx"; ty: "dw.ty"; tz: "dw.tz"; ua: "dw.ua"; ub: "dw.ub"; uc: "dw.uc"; ud: "dw.ud"; ue: "dw.ue"; uf: "dw.uf"; ug: "dw.ug"; uh: "dw.uh"; ui: "dw.ui"; uj: "dw.uj"; uk: "dw.uk"; ul: "dw.ul"; um: "dw.um"; un: "dw.un"; uo: "dw.uo"; up: "dw.up"; uq: "dw.uq"; ur: "dw.ur"; us: "dw.us"; ut: "dw.ut"; uu: "dw.uu"; uv: "dw.uv"; uw: "dw.uw"; ux: "dw.ux"; uy: "dw.uy"; uz: "dw.uz"; va: "dw.va"; vb: "dw.vb"; vc: "dw.vc"; vd: "dw.vd"; ve: "dw.ve"; vf: "dw.vf"; vg: "dw.vg"; vh: "dw.vh"; vi: "dw.vi"; vj: "dw.vj"; vk: "dw.vk"; vl: "dw.vl"; vm: "dw.vm"; vn: "dw.vn"; vo: "dw.vo"; vp: "dw.vp"; vq: "dw.vq"; vr: "dw.vr"; vs: "dw.vs"; vt: "dw.vt"; vu: "dw.vu"; vv: "dw.vv"; vw: "dw.vw"; vx: "dw.vx"; vy: "dw.vy"; vz: "dw.vz"; wa: "dw.wa"; wb: "dw.wb"; wc: "dw.wc"; wd: "dw.wd"; we: "dw.we"; wf: "dw.wf"; wg: "dw.wg"; wh: "dw.wh"; wi: "dw.wi"; wj: "dw.wj"; wk: "dw.wk"; wl: "dw.wl"; wm: "dw.wm"; wn: "dw.wn"; wo: "dw.wo"; wp: "dw.wp"; wq: "dw.wq"; wr: "dw.wr"; ws: "dw.ws"; wt: "dw.wt"; wu: "dw.wu"; wv: "dw.wv"; ww: "dw.ww"; wx: "dw.wx"; wy: "dw.wy"; wz: "dw.wz"; xa: "dw.xa"; xb: "dw.xb"; xc: "dw.xc"; xd: "dw.xd"; xe: "dw.xe"; xf: "dw.xf"; xg: "dw.xg"; xh: "dw.xh"; xi: "dw.xi"; xj: "dw.xj"; xk: "dw.xk"; xl: "dw.xl"; xm: "dw.xm"; xn: "dw.xn"; xo: "dw.xo"; xp: "dw.xp"; xq: "dw.xq"; xr: "dw.xr"; xs: "dw.xs"; xt: "dw.xt"; xu: "dw.xu"; xv: "dw.xv"; xw: "dw.xw"; xx: "dw.xx"; xy: "dw.xy"; xz: "dw.xz"; ya: "dw.ya"; yb: "dw.yb"; yc: "dw.yc"; yd: "dw.yd"; ye: "dw.ye"; yf: "dw.yf"; yg: "dw.yg"; yh: "dw.yh"; yi: "dw.yi"; yj: "dw.yj"; yk: "dw.yk"; yl: "dw.yl"; ym: "dw.ym"; yn: "dw.yn"; yo: "dw.yo"; yp: "dw.yp"; yq: "dw.yq"; yr: "dw.yr"; ys: "dw.ys"; yt: "dw.yt"; yu: "dw.yu"; yv: "dw.yv"; yw: "dw.yw"; yx: "dw.yx"; yy: "dw.yy"; yz: "dw.yz"; za: "dw.za"; zb: "dw.zb"; zc: "dw.zc"; zd: "dw.zd"; ze: "dw.ze"; zf: "dw.zf"; zg: "dw.zg"; zh: "dw.zh"; zi: "dw.zi"; zj: "dw.zj"; zk: "dw.zk"; zl: "dw.zl"; zm: "dw.zm"; zn: "dw.zn"; zo: "dw.zo"; zp: "dw.zp"; zq: "dw.zq"; zr: "dw.zr"; zs: "dw.zs"; zt: "dw.zt"; zu: "dw.zu"; zv: "dw.zv"; zw: "dw.zw"; zx: "dw.zx"; zy: "dw.zy"; zz: "dw.zz"; }; dx: { aa: "dx.aa"; ab: "dx.ab"; ac: "dx.ac"; ad: "dx.ad"; ae: "dx.ae"; af: "dx.af"; ag: "dx.ag"; ah: "dx.ah"; ai: "dx.ai"; aj: "dx.aj"; ak: "dx.ak"; al: "dx.al"; am: "dx.am"; an: "dx.an"; ao: "dx.ao"; ap: "dx.ap"; aq: "dx.aq"; ar: "dx.ar"; as: "dx.as"; at: "dx.at"; au: "dx.au"; av: "dx.av"; aw: "dx.aw"; ax: "dx.ax"; ay: "dx.ay"; az: "dx.az"; ba: "dx.ba"; bb: "dx.bb"; bc: "dx.bc"; bd: "dx.bd"; be: "dx.be"; bf: "dx.bf"; bg: "dx.bg"; bh: "dx.bh"; bi: "dx.bi"; bj: "dx.bj"; bk: "dx.bk"; bl: "dx.bl"; bm: "dx.bm"; bn: "dx.bn"; bo: "dx.bo"; bp: "dx.bp"; bq: "dx.bq"; br: "dx.br"; bs: "dx.bs"; bt: "dx.bt"; bu: "dx.bu"; bv: "dx.bv"; bw: "dx.bw"; bx: "dx.bx"; by: "dx.by"; bz: "dx.bz"; ca: "dx.ca"; cb: "dx.cb"; cc: "dx.cc"; cd: "dx.cd"; ce: "dx.ce"; cf: "dx.cf"; cg: "dx.cg"; ch: "dx.ch"; ci: "dx.ci"; cj: "dx.cj"; ck: "dx.ck"; cl: "dx.cl"; cm: "dx.cm"; cn: "dx.cn"; co: "dx.co"; cp: "dx.cp"; cq: "dx.cq"; cr: "dx.cr"; cs: "dx.cs"; ct: "dx.ct"; cu: "dx.cu"; cv: "dx.cv"; cw: "dx.cw"; cx: "dx.cx"; cy: "dx.cy"; cz: "dx.cz"; da: "dx.da"; db: "dx.db"; dc: "dx.dc"; dd: "dx.dd"; de: "dx.de"; df: "dx.df"; dg: "dx.dg"; dh: "dx.dh"; di: "dx.di"; dj: "dx.dj"; dk: "dx.dk"; dl: "dx.dl"; dm: "dx.dm"; dn: "dx.dn"; do: "dx.do"; dp: "dx.dp"; dq: "dx.dq"; dr: "dx.dr"; ds: "dx.ds"; dt: "dx.dt"; du: "dx.du"; dv: "dx.dv"; dw: "dx.dw"; dx: "dx.dx"; dy: "dx.dy"; dz: "dx.dz"; ea: "dx.ea"; eb: "dx.eb"; ec: "dx.ec"; ed: "dx.ed"; ee: "dx.ee"; ef: "dx.ef"; eg: "dx.eg"; eh: "dx.eh"; ei: "dx.ei"; ej: "dx.ej"; ek: "dx.ek"; el: "dx.el"; em: "dx.em"; en: "dx.en"; eo: "dx.eo"; ep: "dx.ep"; eq: "dx.eq"; er: "dx.er"; es: "dx.es"; et: "dx.et"; eu: "dx.eu"; ev: "dx.ev"; ew: "dx.ew"; ex: "dx.ex"; ey: "dx.ey"; ez: "dx.ez"; fa: "dx.fa"; fb: "dx.fb"; fc: "dx.fc"; fd: "dx.fd"; fe: "dx.fe"; ff: "dx.ff"; fg: "dx.fg"; fh: "dx.fh"; fi: "dx.fi"; fj: "dx.fj"; fk: "dx.fk"; fl: "dx.fl"; fm: "dx.fm"; fn: "dx.fn"; fo: "dx.fo"; fp: "dx.fp"; fq: "dx.fq"; fr: "dx.fr"; fs: "dx.fs"; ft: "dx.ft"; fu: "dx.fu"; fv: "dx.fv"; fw: "dx.fw"; fx: "dx.fx"; fy: "dx.fy"; fz: "dx.fz"; ga: "dx.ga"; gb: "dx.gb"; gc: "dx.gc"; gd: "dx.gd"; ge: "dx.ge"; gf: "dx.gf"; gg: "dx.gg"; gh: "dx.gh"; gi: "dx.gi"; gj: "dx.gj"; gk: "dx.gk"; gl: "dx.gl"; gm: "dx.gm"; gn: "dx.gn"; go: "dx.go"; gp: "dx.gp"; gq: "dx.gq"; gr: "dx.gr"; gs: "dx.gs"; gt: "dx.gt"; gu: "dx.gu"; gv: "dx.gv"; gw: "dx.gw"; gx: "dx.gx"; gy: "dx.gy"; gz: "dx.gz"; ha: "dx.ha"; hb: "dx.hb"; hc: "dx.hc"; hd: "dx.hd"; he: "dx.he"; hf: "dx.hf"; hg: "dx.hg"; hh: "dx.hh"; hi: "dx.hi"; hj: "dx.hj"; hk: "dx.hk"; hl: "dx.hl"; hm: "dx.hm"; hn: "dx.hn"; ho: "dx.ho"; hp: "dx.hp"; hq: "dx.hq"; hr: "dx.hr"; hs: "dx.hs"; ht: "dx.ht"; hu: "dx.hu"; hv: "dx.hv"; hw: "dx.hw"; hx: "dx.hx"; hy: "dx.hy"; hz: "dx.hz"; ia: "dx.ia"; ib: "dx.ib"; ic: "dx.ic"; id: "dx.id"; ie: "dx.ie"; if: "dx.if"; ig: "dx.ig"; ih: "dx.ih"; ii: "dx.ii"; ij: "dx.ij"; ik: "dx.ik"; il: "dx.il"; im: "dx.im"; in: "dx.in"; io: "dx.io"; ip: "dx.ip"; iq: "dx.iq"; ir: "dx.ir"; is: "dx.is"; it: "dx.it"; iu: "dx.iu"; iv: "dx.iv"; iw: "dx.iw"; ix: "dx.ix"; iy: "dx.iy"; iz: "dx.iz"; ja: "dx.ja"; jb: "dx.jb"; jc: "dx.jc"; jd: "dx.jd"; je: "dx.je"; jf: "dx.jf"; jg: "dx.jg"; jh: "dx.jh"; ji: "dx.ji"; jj: "dx.jj"; jk: "dx.jk"; jl: "dx.jl"; jm: "dx.jm"; jn: "dx.jn"; jo: "dx.jo"; jp: "dx.jp"; jq: "dx.jq"; jr: "dx.jr"; js: "dx.js"; jt: "dx.jt"; ju: "dx.ju"; jv: "dx.jv"; jw: "dx.jw"; jx: "dx.jx"; jy: "dx.jy"; jz: "dx.jz"; ka: "dx.ka"; kb: "dx.kb"; kc: "dx.kc"; kd: "dx.kd"; ke: "dx.ke"; kf: "dx.kf"; kg: "dx.kg"; kh: "dx.kh"; ki: "dx.ki"; kj: "dx.kj"; kk: "dx.kk"; kl: "dx.kl"; km: "dx.km"; kn: "dx.kn"; ko: "dx.ko"; kp: "dx.kp"; kq: "dx.kq"; kr: "dx.kr"; ks: "dx.ks"; kt: "dx.kt"; ku: "dx.ku"; kv: "dx.kv"; kw: "dx.kw"; kx: "dx.kx"; ky: "dx.ky"; kz: "dx.kz"; la: "dx.la"; lb: "dx.lb"; lc: "dx.lc"; ld: "dx.ld"; le: "dx.le"; lf: "dx.lf"; lg: "dx.lg"; lh: "dx.lh"; li: "dx.li"; lj: "dx.lj"; lk: "dx.lk"; ll: "dx.ll"; lm: "dx.lm"; ln: "dx.ln"; lo: "dx.lo"; lp: "dx.lp"; lq: "dx.lq"; lr: "dx.lr"; ls: "dx.ls"; lt: "dx.lt"; lu: "dx.lu"; lv: "dx.lv"; lw: "dx.lw"; lx: "dx.lx"; ly: "dx.ly"; lz: "dx.lz"; ma: "dx.ma"; mb: "dx.mb"; mc: "dx.mc"; md: "dx.md"; me: "dx.me"; mf: "dx.mf"; mg: "dx.mg"; mh: "dx.mh"; mi: "dx.mi"; mj: "dx.mj"; mk: "dx.mk"; ml: "dx.ml"; mm: "dx.mm"; mn: "dx.mn"; mo: "dx.mo"; mp: "dx.mp"; mq: "dx.mq"; mr: "dx.mr"; ms: "dx.ms"; mt: "dx.mt"; mu: "dx.mu"; mv: "dx.mv"; mw: "dx.mw"; mx: "dx.mx"; my: "dx.my"; mz: "dx.mz"; na: "dx.na"; nb: "dx.nb"; nc: "dx.nc"; nd: "dx.nd"; ne: "dx.ne"; nf: "dx.nf"; ng: "dx.ng"; nh: "dx.nh"; ni: "dx.ni"; nj: "dx.nj"; nk: "dx.nk"; nl: "dx.nl"; nm: "dx.nm"; nn: "dx.nn"; no: "dx.no"; np: "dx.np"; nq: "dx.nq"; nr: "dx.nr"; ns: "dx.ns"; nt: "dx.nt"; nu: "dx.nu"; nv: "dx.nv"; nw: "dx.nw"; nx: "dx.nx"; ny: "dx.ny"; nz: "dx.nz"; oa: "dx.oa"; ob: "dx.ob"; oc: "dx.oc"; od: "dx.od"; oe: "dx.oe"; of: "dx.of"; og: "dx.og"; oh: "dx.oh"; oi: "dx.oi"; oj: "dx.oj"; ok: "dx.ok"; ol: "dx.ol"; om: "dx.om"; on: "dx.on"; oo: "dx.oo"; op: "dx.op"; oq: "dx.oq"; or: "dx.or"; os: "dx.os"; ot: "dx.ot"; ou: "dx.ou"; ov: "dx.ov"; ow: "dx.ow"; ox: "dx.ox"; oy: "dx.oy"; oz: "dx.oz"; pa: "dx.pa"; pb: "dx.pb"; pc: "dx.pc"; pd: "dx.pd"; pe: "dx.pe"; pf: "dx.pf"; pg: "dx.pg"; ph: "dx.ph"; pi: "dx.pi"; pj: "dx.pj"; pk: "dx.pk"; pl: "dx.pl"; pm: "dx.pm"; pn: "dx.pn"; po: "dx.po"; pp: "dx.pp"; pq: "dx.pq"; pr: "dx.pr"; ps: "dx.ps"; pt: "dx.pt"; pu: "dx.pu"; pv: "dx.pv"; pw: "dx.pw"; px: "dx.px"; py: "dx.py"; pz: "dx.pz"; qa: "dx.qa"; qb: "dx.qb"; qc: "dx.qc"; qd: "dx.qd"; qe: "dx.qe"; qf: "dx.qf"; qg: "dx.qg"; qh: "dx.qh"; qi: "dx.qi"; qj: "dx.qj"; qk: "dx.qk"; ql: "dx.ql"; qm: "dx.qm"; qn: "dx.qn"; qo: "dx.qo"; qp: "dx.qp"; qq: "dx.qq"; qr: "dx.qr"; qs: "dx.qs"; qt: "dx.qt"; qu: "dx.qu"; qv: "dx.qv"; qw: "dx.qw"; qx: "dx.qx"; qy: "dx.qy"; qz: "dx.qz"; ra: "dx.ra"; rb: "dx.rb"; rc: "dx.rc"; rd: "dx.rd"; re: "dx.re"; rf: "dx.rf"; rg: "dx.rg"; rh: "dx.rh"; ri: "dx.ri"; rj: "dx.rj"; rk: "dx.rk"; rl: "dx.rl"; rm: "dx.rm"; rn: "dx.rn"; ro: "dx.ro"; rp: "dx.rp"; rq: "dx.rq"; rr: "dx.rr"; rs: "dx.rs"; rt: "dx.rt"; ru: "dx.ru"; rv: "dx.rv"; rw: "dx.rw"; rx: "dx.rx"; ry: "dx.ry"; rz: "dx.rz"; sa: "dx.sa"; sb: "dx.sb"; sc: "dx.sc"; sd: "dx.sd"; se: "dx.se"; sf: "dx.sf"; sg: "dx.sg"; sh: "dx.sh"; si: "dx.si"; sj: "dx.sj"; sk: "dx.sk"; sl: "dx.sl"; sm: "dx.sm"; sn: "dx.sn"; so: "dx.so"; sp: "dx.sp"; sq: "dx.sq"; sr: "dx.sr"; ss: "dx.ss"; st: "dx.st"; su: "dx.su"; sv: "dx.sv"; sw: "dx.sw"; sx: "dx.sx"; sy: "dx.sy"; sz: "dx.sz"; ta: "dx.ta"; tb: "dx.tb"; tc: "dx.tc"; td: "dx.td"; te: "dx.te"; tf: "dx.tf"; tg: "dx.tg"; th: "dx.th"; ti: "dx.ti"; tj: "dx.tj"; tk: "dx.tk"; tl: "dx.tl"; tm: "dx.tm"; tn: "dx.tn"; to: "dx.to"; tp: "dx.tp"; tq: "dx.tq"; tr: "dx.tr"; ts: "dx.ts"; tt: "dx.tt"; tu: "dx.tu"; tv: "dx.tv"; tw: "dx.tw"; tx: "dx.tx"; ty: "dx.ty"; tz: "dx.tz"; ua: "dx.ua"; ub: "dx.ub"; uc: "dx.uc"; ud: "dx.ud"; ue: "dx.ue"; uf: "dx.uf"; ug: "dx.ug"; uh: "dx.uh"; ui: "dx.ui"; uj: "dx.uj"; uk: "dx.uk"; ul: "dx.ul"; um: "dx.um"; un: "dx.un"; uo: "dx.uo"; up: "dx.up"; uq: "dx.uq"; ur: "dx.ur"; us: "dx.us"; ut: "dx.ut"; uu: "dx.uu"; uv: "dx.uv"; uw: "dx.uw"; ux: "dx.ux"; uy: "dx.uy"; uz: "dx.uz"; va: "dx.va"; vb: "dx.vb"; vc: "dx.vc"; vd: "dx.vd"; ve: "dx.ve"; vf: "dx.vf"; vg: "dx.vg"; vh: "dx.vh"; vi: "dx.vi"; vj: "dx.vj"; vk: "dx.vk"; vl: "dx.vl"; vm: "dx.vm"; vn: "dx.vn"; vo: "dx.vo"; vp: "dx.vp"; vq: "dx.vq"; vr: "dx.vr"; vs: "dx.vs"; vt: "dx.vt"; vu: "dx.vu"; vv: "dx.vv"; vw: "dx.vw"; vx: "dx.vx"; vy: "dx.vy"; vz: "dx.vz"; wa: "dx.wa"; wb: "dx.wb"; wc: "dx.wc"; wd: "dx.wd"; we: "dx.we"; wf: "dx.wf"; wg: "dx.wg"; wh: "dx.wh"; wi: "dx.wi"; wj: "dx.wj"; wk: "dx.wk"; wl: "dx.wl"; wm: "dx.wm"; wn: "dx.wn"; wo: "dx.wo"; wp: "dx.wp"; wq: "dx.wq"; wr: "dx.wr"; ws: "dx.ws"; wt: "dx.wt"; wu: "dx.wu"; wv: "dx.wv"; ww: "dx.ww"; wx: "dx.wx"; wy: "dx.wy"; wz: "dx.wz"; xa: "dx.xa"; xb: "dx.xb"; xc: "dx.xc"; xd: "dx.xd"; xe: "dx.xe"; xf: "dx.xf"; xg: "dx.xg"; xh: "dx.xh"; xi: "dx.xi"; xj: "dx.xj"; xk: "dx.xk"; xl: "dx.xl"; xm: "dx.xm"; xn: "dx.xn"; xo: "dx.xo"; xp: "dx.xp"; xq: "dx.xq"; xr: "dx.xr"; xs: "dx.xs"; xt: "dx.xt"; xu: "dx.xu"; xv: "dx.xv"; xw: "dx.xw"; xx: "dx.xx"; xy: "dx.xy"; xz: "dx.xz"; ya: "dx.ya"; yb: "dx.yb"; yc: "dx.yc"; yd: "dx.yd"; ye: "dx.ye"; yf: "dx.yf"; yg: "dx.yg"; yh: "dx.yh"; yi: "dx.yi"; yj: "dx.yj"; yk: "dx.yk"; yl: "dx.yl"; ym: "dx.ym"; yn: "dx.yn"; yo: "dx.yo"; yp: "dx.yp"; yq: "dx.yq"; yr: "dx.yr"; ys: "dx.ys"; yt: "dx.yt"; yu: "dx.yu"; yv: "dx.yv"; yw: "dx.yw"; yx: "dx.yx"; yy: "dx.yy"; yz: "dx.yz"; za: "dx.za"; zb: "dx.zb"; zc: "dx.zc"; zd: "dx.zd"; ze: "dx.ze"; zf: "dx.zf"; zg: "dx.zg"; zh: "dx.zh"; zi: "dx.zi"; zj: "dx.zj"; zk: "dx.zk"; zl: "dx.zl"; zm: "dx.zm"; zn: "dx.zn"; zo: "dx.zo"; zp: "dx.zp"; zq: "dx.zq"; zr: "dx.zr"; zs: "dx.zs"; zt: "dx.zt"; zu: "dx.zu"; zv: "dx.zv"; zw: "dx.zw"; zx: "dx.zx"; zy: "dx.zy"; zz: "dx.zz"; }; dy: { aa: "dy.aa"; ab: "dy.ab"; ac: "dy.ac"; ad: "dy.ad"; ae: "dy.ae"; af: "dy.af"; ag: "dy.ag"; ah: "dy.ah"; ai: "dy.ai"; aj: "dy.aj"; ak: "dy.ak"; al: "dy.al"; am: "dy.am"; an: "dy.an"; ao: "dy.ao"; ap: "dy.ap"; aq: "dy.aq"; ar: "dy.ar"; as: "dy.as"; at: "dy.at"; au: "dy.au"; av: "dy.av"; aw: "dy.aw"; ax: "dy.ax"; ay: "dy.ay"; az: "dy.az"; ba: "dy.ba"; bb: "dy.bb"; bc: "dy.bc"; bd: "dy.bd"; be: "dy.be"; bf: "dy.bf"; bg: "dy.bg"; bh: "dy.bh"; bi: "dy.bi"; bj: "dy.bj"; bk: "dy.bk"; bl: "dy.bl"; bm: "dy.bm"; bn: "dy.bn"; bo: "dy.bo"; bp: "dy.bp"; bq: "dy.bq"; br: "dy.br"; bs: "dy.bs"; bt: "dy.bt"; bu: "dy.bu"; bv: "dy.bv"; bw: "dy.bw"; bx: "dy.bx"; by: "dy.by"; bz: "dy.bz"; ca: "dy.ca"; cb: "dy.cb"; cc: "dy.cc"; cd: "dy.cd"; ce: "dy.ce"; cf: "dy.cf"; cg: "dy.cg"; ch: "dy.ch"; ci: "dy.ci"; cj: "dy.cj"; ck: "dy.ck"; cl: "dy.cl"; cm: "dy.cm"; cn: "dy.cn"; co: "dy.co"; cp: "dy.cp"; cq: "dy.cq"; cr: "dy.cr"; cs: "dy.cs"; ct: "dy.ct"; cu: "dy.cu"; cv: "dy.cv"; cw: "dy.cw"; cx: "dy.cx"; cy: "dy.cy"; cz: "dy.cz"; da: "dy.da"; db: "dy.db"; dc: "dy.dc"; dd: "dy.dd"; de: "dy.de"; df: "dy.df"; dg: "dy.dg"; dh: "dy.dh"; di: "dy.di"; dj: "dy.dj"; dk: "dy.dk"; dl: "dy.dl"; dm: "dy.dm"; dn: "dy.dn"; do: "dy.do"; dp: "dy.dp"; dq: "dy.dq"; dr: "dy.dr"; ds: "dy.ds"; dt: "dy.dt"; du: "dy.du"; dv: "dy.dv"; dw: "dy.dw"; dx: "dy.dx"; dy: "dy.dy"; dz: "dy.dz"; ea: "dy.ea"; eb: "dy.eb"; ec: "dy.ec"; ed: "dy.ed"; ee: "dy.ee"; ef: "dy.ef"; eg: "dy.eg"; eh: "dy.eh"; ei: "dy.ei"; ej: "dy.ej"; ek: "dy.ek"; el: "dy.el"; em: "dy.em"; en: "dy.en"; eo: "dy.eo"; ep: "dy.ep"; eq: "dy.eq"; er: "dy.er"; es: "dy.es"; et: "dy.et"; eu: "dy.eu"; ev: "dy.ev"; ew: "dy.ew"; ex: "dy.ex"; ey: "dy.ey"; ez: "dy.ez"; fa: "dy.fa"; fb: "dy.fb"; fc: "dy.fc"; fd: "dy.fd"; fe: "dy.fe"; ff: "dy.ff"; fg: "dy.fg"; fh: "dy.fh"; fi: "dy.fi"; fj: "dy.fj"; fk: "dy.fk"; fl: "dy.fl"; fm: "dy.fm"; fn: "dy.fn"; fo: "dy.fo"; fp: "dy.fp"; fq: "dy.fq"; fr: "dy.fr"; fs: "dy.fs"; ft: "dy.ft"; fu: "dy.fu"; fv: "dy.fv"; fw: "dy.fw"; fx: "dy.fx"; fy: "dy.fy"; fz: "dy.fz"; ga: "dy.ga"; gb: "dy.gb"; gc: "dy.gc"; gd: "dy.gd"; ge: "dy.ge"; gf: "dy.gf"; gg: "dy.gg"; gh: "dy.gh"; gi: "dy.gi"; gj: "dy.gj"; gk: "dy.gk"; gl: "dy.gl"; gm: "dy.gm"; gn: "dy.gn"; go: "dy.go"; gp: "dy.gp"; gq: "dy.gq"; gr: "dy.gr"; gs: "dy.gs"; gt: "dy.gt"; gu: "dy.gu"; gv: "dy.gv"; gw: "dy.gw"; gx: "dy.gx"; gy: "dy.gy"; gz: "dy.gz"; ha: "dy.ha"; hb: "dy.hb"; hc: "dy.hc"; hd: "dy.hd"; he: "dy.he"; hf: "dy.hf"; hg: "dy.hg"; hh: "dy.hh"; hi: "dy.hi"; hj: "dy.hj"; hk: "dy.hk"; hl: "dy.hl"; hm: "dy.hm"; hn: "dy.hn"; ho: "dy.ho"; hp: "dy.hp"; hq: "dy.hq"; hr: "dy.hr"; hs: "dy.hs"; ht: "dy.ht"; hu: "dy.hu"; hv: "dy.hv"; hw: "dy.hw"; hx: "dy.hx"; hy: "dy.hy"; hz: "dy.hz"; ia: "dy.ia"; ib: "dy.ib"; ic: "dy.ic"; id: "dy.id"; ie: "dy.ie"; if: "dy.if"; ig: "dy.ig"; ih: "dy.ih"; ii: "dy.ii"; ij: "dy.ij"; ik: "dy.ik"; il: "dy.il"; im: "dy.im"; in: "dy.in"; io: "dy.io"; ip: "dy.ip"; iq: "dy.iq"; ir: "dy.ir"; is: "dy.is"; it: "dy.it"; iu: "dy.iu"; iv: "dy.iv"; iw: "dy.iw"; ix: "dy.ix"; iy: "dy.iy"; iz: "dy.iz"; ja: "dy.ja"; jb: "dy.jb"; jc: "dy.jc"; jd: "dy.jd"; je: "dy.je"; jf: "dy.jf"; jg: "dy.jg"; jh: "dy.jh"; ji: "dy.ji"; jj: "dy.jj"; jk: "dy.jk"; jl: "dy.jl"; jm: "dy.jm"; jn: "dy.jn"; jo: "dy.jo"; jp: "dy.jp"; jq: "dy.jq"; jr: "dy.jr"; js: "dy.js"; jt: "dy.jt"; ju: "dy.ju"; jv: "dy.jv"; jw: "dy.jw"; jx: "dy.jx"; jy: "dy.jy"; jz: "dy.jz"; ka: "dy.ka"; kb: "dy.kb"; kc: "dy.kc"; kd: "dy.kd"; ke: "dy.ke"; kf: "dy.kf"; kg: "dy.kg"; kh: "dy.kh"; ki: "dy.ki"; kj: "dy.kj"; kk: "dy.kk"; kl: "dy.kl"; km: "dy.km"; kn: "dy.kn"; ko: "dy.ko"; kp: "dy.kp"; kq: "dy.kq"; kr: "dy.kr"; ks: "dy.ks"; kt: "dy.kt"; ku: "dy.ku"; kv: "dy.kv"; kw: "dy.kw"; kx: "dy.kx"; ky: "dy.ky"; kz: "dy.kz"; la: "dy.la"; lb: "dy.lb"; lc: "dy.lc"; ld: "dy.ld"; le: "dy.le"; lf: "dy.lf"; lg: "dy.lg"; lh: "dy.lh"; li: "dy.li"; lj: "dy.lj"; lk: "dy.lk"; ll: "dy.ll"; lm: "dy.lm"; ln: "dy.ln"; lo: "dy.lo"; lp: "dy.lp"; lq: "dy.lq"; lr: "dy.lr"; ls: "dy.ls"; lt: "dy.lt"; lu: "dy.lu"; lv: "dy.lv"; lw: "dy.lw"; lx: "dy.lx"; ly: "dy.ly"; lz: "dy.lz"; ma: "dy.ma"; mb: "dy.mb"; mc: "dy.mc"; md: "dy.md"; me: "dy.me"; mf: "dy.mf"; mg: "dy.mg"; mh: "dy.mh"; mi: "dy.mi"; mj: "dy.mj"; mk: "dy.mk"; ml: "dy.ml"; mm: "dy.mm"; mn: "dy.mn"; mo: "dy.mo"; mp: "dy.mp"; mq: "dy.mq"; mr: "dy.mr"; ms: "dy.ms"; mt: "dy.mt"; mu: "dy.mu"; mv: "dy.mv"; mw: "dy.mw"; mx: "dy.mx"; my: "dy.my"; mz: "dy.mz"; na: "dy.na"; nb: "dy.nb"; nc: "dy.nc"; nd: "dy.nd"; ne: "dy.ne"; nf: "dy.nf"; ng: "dy.ng"; nh: "dy.nh"; ni: "dy.ni"; nj: "dy.nj"; nk: "dy.nk"; nl: "dy.nl"; nm: "dy.nm"; nn: "dy.nn"; no: "dy.no"; np: "dy.np"; nq: "dy.nq"; nr: "dy.nr"; ns: "dy.ns"; nt: "dy.nt"; nu: "dy.nu"; nv: "dy.nv"; nw: "dy.nw"; nx: "dy.nx"; ny: "dy.ny"; nz: "dy.nz"; oa: "dy.oa"; ob: "dy.ob"; oc: "dy.oc"; od: "dy.od"; oe: "dy.oe"; of: "dy.of"; og: "dy.og"; oh: "dy.oh"; oi: "dy.oi"; oj: "dy.oj"; ok: "dy.ok"; ol: "dy.ol"; om: "dy.om"; on: "dy.on"; oo: "dy.oo"; op: "dy.op"; oq: "dy.oq"; or: "dy.or"; os: "dy.os"; ot: "dy.ot"; ou: "dy.ou"; ov: "dy.ov"; ow: "dy.ow"; ox: "dy.ox"; oy: "dy.oy"; oz: "dy.oz"; pa: "dy.pa"; pb: "dy.pb"; pc: "dy.pc"; pd: "dy.pd"; pe: "dy.pe"; pf: "dy.pf"; pg: "dy.pg"; ph: "dy.ph"; pi: "dy.pi"; pj: "dy.pj"; pk: "dy.pk"; pl: "dy.pl"; pm: "dy.pm"; pn: "dy.pn"; po: "dy.po"; pp: "dy.pp"; pq: "dy.pq"; pr: "dy.pr"; ps: "dy.ps"; pt: "dy.pt"; pu: "dy.pu"; pv: "dy.pv"; pw: "dy.pw"; px: "dy.px"; py: "dy.py"; pz: "dy.pz"; qa: "dy.qa"; qb: "dy.qb"; qc: "dy.qc"; qd: "dy.qd"; qe: "dy.qe"; qf: "dy.qf"; qg: "dy.qg"; qh: "dy.qh"; qi: "dy.qi"; qj: "dy.qj"; qk: "dy.qk"; ql: "dy.ql"; qm: "dy.qm"; qn: "dy.qn"; qo: "dy.qo"; qp: "dy.qp"; qq: "dy.qq"; qr: "dy.qr"; qs: "dy.qs"; qt: "dy.qt"; qu: "dy.qu"; qv: "dy.qv"; qw: "dy.qw"; qx: "dy.qx"; qy: "dy.qy"; qz: "dy.qz"; ra: "dy.ra"; rb: "dy.rb"; rc: "dy.rc"; rd: "dy.rd"; re: "dy.re"; rf: "dy.rf"; rg: "dy.rg"; rh: "dy.rh"; ri: "dy.ri"; rj: "dy.rj"; rk: "dy.rk"; rl: "dy.rl"; rm: "dy.rm"; rn: "dy.rn"; ro: "dy.ro"; rp: "dy.rp"; rq: "dy.rq"; rr: "dy.rr"; rs: "dy.rs"; rt: "dy.rt"; ru: "dy.ru"; rv: "dy.rv"; rw: "dy.rw"; rx: "dy.rx"; ry: "dy.ry"; rz: "dy.rz"; sa: "dy.sa"; sb: "dy.sb"; sc: "dy.sc"; sd: "dy.sd"; se: "dy.se"; sf: "dy.sf"; sg: "dy.sg"; sh: "dy.sh"; si: "dy.si"; sj: "dy.sj"; sk: "dy.sk"; sl: "dy.sl"; sm: "dy.sm"; sn: "dy.sn"; so: "dy.so"; sp: "dy.sp"; sq: "dy.sq"; sr: "dy.sr"; ss: "dy.ss"; st: "dy.st"; su: "dy.su"; sv: "dy.sv"; sw: "dy.sw"; sx: "dy.sx"; sy: "dy.sy"; sz: "dy.sz"; ta: "dy.ta"; tb: "dy.tb"; tc: "dy.tc"; td: "dy.td"; te: "dy.te"; tf: "dy.tf"; tg: "dy.tg"; th: "dy.th"; ti: "dy.ti"; tj: "dy.tj"; tk: "dy.tk"; tl: "dy.tl"; tm: "dy.tm"; tn: "dy.tn"; to: "dy.to"; tp: "dy.tp"; tq: "dy.tq"; tr: "dy.tr"; ts: "dy.ts"; tt: "dy.tt"; tu: "dy.tu"; tv: "dy.tv"; tw: "dy.tw"; tx: "dy.tx"; ty: "dy.ty"; tz: "dy.tz"; ua: "dy.ua"; ub: "dy.ub"; uc: "dy.uc"; ud: "dy.ud"; ue: "dy.ue"; uf: "dy.uf"; ug: "dy.ug"; uh: "dy.uh"; ui: "dy.ui"; uj: "dy.uj"; uk: "dy.uk"; ul: "dy.ul"; um: "dy.um"; un: "dy.un"; uo: "dy.uo"; up: "dy.up"; uq: "dy.uq"; ur: "dy.ur"; us: "dy.us"; ut: "dy.ut"; uu: "dy.uu"; uv: "dy.uv"; uw: "dy.uw"; ux: "dy.ux"; uy: "dy.uy"; uz: "dy.uz"; va: "dy.va"; vb: "dy.vb"; vc: "dy.vc"; vd: "dy.vd"; ve: "dy.ve"; vf: "dy.vf"; vg: "dy.vg"; vh: "dy.vh"; vi: "dy.vi"; vj: "dy.vj"; vk: "dy.vk"; vl: "dy.vl"; vm: "dy.vm"; vn: "dy.vn"; vo: "dy.vo"; vp: "dy.vp"; vq: "dy.vq"; vr: "dy.vr"; vs: "dy.vs"; vt: "dy.vt"; vu: "dy.vu"; vv: "dy.vv"; vw: "dy.vw"; vx: "dy.vx"; vy: "dy.vy"; vz: "dy.vz"; wa: "dy.wa"; wb: "dy.wb"; wc: "dy.wc"; wd: "dy.wd"; we: "dy.we"; wf: "dy.wf"; wg: "dy.wg"; wh: "dy.wh"; wi: "dy.wi"; wj: "dy.wj"; wk: "dy.wk"; wl: "dy.wl"; wm: "dy.wm"; wn: "dy.wn"; wo: "dy.wo"; wp: "dy.wp"; wq: "dy.wq"; wr: "dy.wr"; ws: "dy.ws"; wt: "dy.wt"; wu: "dy.wu"; wv: "dy.wv"; ww: "dy.ww"; wx: "dy.wx"; wy: "dy.wy"; wz: "dy.wz"; xa: "dy.xa"; xb: "dy.xb"; xc: "dy.xc"; xd: "dy.xd"; xe: "dy.xe"; xf: "dy.xf"; xg: "dy.xg"; xh: "dy.xh"; xi: "dy.xi"; xj: "dy.xj"; xk: "dy.xk"; xl: "dy.xl"; xm: "dy.xm"; xn: "dy.xn"; xo: "dy.xo"; xp: "dy.xp"; xq: "dy.xq"; xr: "dy.xr"; xs: "dy.xs"; xt: "dy.xt"; xu: "dy.xu"; xv: "dy.xv"; xw: "dy.xw"; xx: "dy.xx"; xy: "dy.xy"; xz: "dy.xz"; ya: "dy.ya"; yb: "dy.yb"; yc: "dy.yc"; yd: "dy.yd"; ye: "dy.ye"; yf: "dy.yf"; yg: "dy.yg"; yh: "dy.yh"; yi: "dy.yi"; yj: "dy.yj"; yk: "dy.yk"; yl: "dy.yl"; ym: "dy.ym"; yn: "dy.yn"; yo: "dy.yo"; yp: "dy.yp"; yq: "dy.yq"; yr: "dy.yr"; ys: "dy.ys"; yt: "dy.yt"; yu: "dy.yu"; yv: "dy.yv"; yw: "dy.yw"; yx: "dy.yx"; yy: "dy.yy"; yz: "dy.yz"; za: "dy.za"; zb: "dy.zb"; zc: "dy.zc"; zd: "dy.zd"; ze: "dy.ze"; zf: "dy.zf"; zg: "dy.zg"; zh: "dy.zh"; zi: "dy.zi"; zj: "dy.zj"; zk: "dy.zk"; zl: "dy.zl"; zm: "dy.zm"; zn: "dy.zn"; zo: "dy.zo"; zp: "dy.zp"; zq: "dy.zq"; zr: "dy.zr"; zs: "dy.zs"; zt: "dy.zt"; zu: "dy.zu"; zv: "dy.zv"; zw: "dy.zw"; zx: "dy.zx"; zy: "dy.zy"; zz: "dy.zz"; }; dz: { aa: "dz.aa"; ab: "dz.ab"; ac: "dz.ac"; ad: "dz.ad"; ae: "dz.ae"; af: "dz.af"; ag: "dz.ag"; ah: "dz.ah"; ai: "dz.ai"; aj: "dz.aj"; ak: "dz.ak"; al: "dz.al"; am: "dz.am"; an: "dz.an"; ao: "dz.ao"; ap: "dz.ap"; aq: "dz.aq"; ar: "dz.ar"; as: "dz.as"; at: "dz.at"; au: "dz.au"; av: "dz.av"; aw: "dz.aw"; ax: "dz.ax"; ay: "dz.ay"; az: "dz.az"; ba: "dz.ba"; bb: "dz.bb"; bc: "dz.bc"; bd: "dz.bd"; be: "dz.be"; bf: "dz.bf"; bg: "dz.bg"; bh: "dz.bh"; bi: "dz.bi"; bj: "dz.bj"; bk: "dz.bk"; bl: "dz.bl"; bm: "dz.bm"; bn: "dz.bn"; bo: "dz.bo"; bp: "dz.bp"; bq: "dz.bq"; br: "dz.br"; bs: "dz.bs"; bt: "dz.bt"; bu: "dz.bu"; bv: "dz.bv"; bw: "dz.bw"; bx: "dz.bx"; by: "dz.by"; bz: "dz.bz"; ca: "dz.ca"; cb: "dz.cb"; cc: "dz.cc"; cd: "dz.cd"; ce: "dz.ce"; cf: "dz.cf"; cg: "dz.cg"; ch: "dz.ch"; ci: "dz.ci"; cj: "dz.cj"; ck: "dz.ck"; cl: "dz.cl"; cm: "dz.cm"; cn: "dz.cn"; co: "dz.co"; cp: "dz.cp"; cq: "dz.cq"; cr: "dz.cr"; cs: "dz.cs"; ct: "dz.ct"; cu: "dz.cu"; cv: "dz.cv"; cw: "dz.cw"; cx: "dz.cx"; cy: "dz.cy"; cz: "dz.cz"; da: "dz.da"; db: "dz.db"; dc: "dz.dc"; dd: "dz.dd"; de: "dz.de"; df: "dz.df"; dg: "dz.dg"; dh: "dz.dh"; di: "dz.di"; dj: "dz.dj"; dk: "dz.dk"; dl: "dz.dl"; dm: "dz.dm"; dn: "dz.dn"; do: "dz.do"; dp: "dz.dp"; dq: "dz.dq"; dr: "dz.dr"; ds: "dz.ds"; dt: "dz.dt"; du: "dz.du"; dv: "dz.dv"; dw: "dz.dw"; dx: "dz.dx"; dy: "dz.dy"; dz: "dz.dz"; ea: "dz.ea"; eb: "dz.eb"; ec: "dz.ec"; ed: "dz.ed"; ee: "dz.ee"; ef: "dz.ef"; eg: "dz.eg"; eh: "dz.eh"; ei: "dz.ei"; ej: "dz.ej"; ek: "dz.ek"; el: "dz.el"; em: "dz.em"; en: "dz.en"; eo: "dz.eo"; ep: "dz.ep"; eq: "dz.eq"; er: "dz.er"; es: "dz.es"; et: "dz.et"; eu: "dz.eu"; ev: "dz.ev"; ew: "dz.ew"; ex: "dz.ex"; ey: "dz.ey"; ez: "dz.ez"; fa: "dz.fa"; fb: "dz.fb"; fc: "dz.fc"; fd: "dz.fd"; fe: "dz.fe"; ff: "dz.ff"; fg: "dz.fg"; fh: "dz.fh"; fi: "dz.fi"; fj: "dz.fj"; fk: "dz.fk"; fl: "dz.fl"; fm: "dz.fm"; fn: "dz.fn"; fo: "dz.fo"; fp: "dz.fp"; fq: "dz.fq"; fr: "dz.fr"; fs: "dz.fs"; ft: "dz.ft"; fu: "dz.fu"; fv: "dz.fv"; fw: "dz.fw"; fx: "dz.fx"; fy: "dz.fy"; fz: "dz.fz"; ga: "dz.ga"; gb: "dz.gb"; gc: "dz.gc"; gd: "dz.gd"; ge: "dz.ge"; gf: "dz.gf"; gg: "dz.gg"; gh: "dz.gh"; gi: "dz.gi"; gj: "dz.gj"; gk: "dz.gk"; gl: "dz.gl"; gm: "dz.gm"; gn: "dz.gn"; go: "dz.go"; gp: "dz.gp"; gq: "dz.gq"; gr: "dz.gr"; gs: "dz.gs"; gt: "dz.gt"; gu: "dz.gu"; gv: "dz.gv"; gw: "dz.gw"; gx: "dz.gx"; gy: "dz.gy"; gz: "dz.gz"; ha: "dz.ha"; hb: "dz.hb"; hc: "dz.hc"; hd: "dz.hd"; he: "dz.he"; hf: "dz.hf"; hg: "dz.hg"; hh: "dz.hh"; hi: "dz.hi"; hj: "dz.hj"; hk: "dz.hk"; hl: "dz.hl"; hm: "dz.hm"; hn: "dz.hn"; ho: "dz.ho"; hp: "dz.hp"; hq: "dz.hq"; hr: "dz.hr"; hs: "dz.hs"; ht: "dz.ht"; hu: "dz.hu"; hv: "dz.hv"; hw: "dz.hw"; hx: "dz.hx"; hy: "dz.hy"; hz: "dz.hz"; ia: "dz.ia"; ib: "dz.ib"; ic: "dz.ic"; id: "dz.id"; ie: "dz.ie"; if: "dz.if"; ig: "dz.ig"; ih: "dz.ih"; ii: "dz.ii"; ij: "dz.ij"; ik: "dz.ik"; il: "dz.il"; im: "dz.im"; in: "dz.in"; io: "dz.io"; ip: "dz.ip"; iq: "dz.iq"; ir: "dz.ir"; is: "dz.is"; it: "dz.it"; iu: "dz.iu"; iv: "dz.iv"; iw: "dz.iw"; ix: "dz.ix"; iy: "dz.iy"; iz: "dz.iz"; ja: "dz.ja"; jb: "dz.jb"; jc: "dz.jc"; jd: "dz.jd"; je: "dz.je"; jf: "dz.jf"; jg: "dz.jg"; jh: "dz.jh"; ji: "dz.ji"; jj: "dz.jj"; jk: "dz.jk"; jl: "dz.jl"; jm: "dz.jm"; jn: "dz.jn"; jo: "dz.jo"; jp: "dz.jp"; jq: "dz.jq"; jr: "dz.jr"; js: "dz.js"; jt: "dz.jt"; ju: "dz.ju"; jv: "dz.jv"; jw: "dz.jw"; jx: "dz.jx"; jy: "dz.jy"; jz: "dz.jz"; ka: "dz.ka"; kb: "dz.kb"; kc: "dz.kc"; kd: "dz.kd"; ke: "dz.ke"; kf: "dz.kf"; kg: "dz.kg"; kh: "dz.kh"; ki: "dz.ki"; kj: "dz.kj"; kk: "dz.kk"; kl: "dz.kl"; km: "dz.km"; kn: "dz.kn"; ko: "dz.ko"; kp: "dz.kp"; kq: "dz.kq"; kr: "dz.kr"; ks: "dz.ks"; kt: "dz.kt"; ku: "dz.ku"; kv: "dz.kv"; kw: "dz.kw"; kx: "dz.kx"; ky: "dz.ky"; kz: "dz.kz"; la: "dz.la"; lb: "dz.lb"; lc: "dz.lc"; ld: "dz.ld"; le: "dz.le"; lf: "dz.lf"; lg: "dz.lg"; lh: "dz.lh"; li: "dz.li"; lj: "dz.lj"; lk: "dz.lk"; ll: "dz.ll"; lm: "dz.lm"; ln: "dz.ln"; lo: "dz.lo"; lp: "dz.lp"; lq: "dz.lq"; lr: "dz.lr"; ls: "dz.ls"; lt: "dz.lt"; lu: "dz.lu"; lv: "dz.lv"; lw: "dz.lw"; lx: "dz.lx"; ly: "dz.ly"; lz: "dz.lz"; ma: "dz.ma"; mb: "dz.mb"; mc: "dz.mc"; md: "dz.md"; me: "dz.me"; mf: "dz.mf"; mg: "dz.mg"; mh: "dz.mh"; mi: "dz.mi"; mj: "dz.mj"; mk: "dz.mk"; ml: "dz.ml"; mm: "dz.mm"; mn: "dz.mn"; mo: "dz.mo"; mp: "dz.mp"; mq: "dz.mq"; mr: "dz.mr"; ms: "dz.ms"; mt: "dz.mt"; mu: "dz.mu"; mv: "dz.mv"; mw: "dz.mw"; mx: "dz.mx"; my: "dz.my"; mz: "dz.mz"; na: "dz.na"; nb: "dz.nb"; nc: "dz.nc"; nd: "dz.nd"; ne: "dz.ne"; nf: "dz.nf"; ng: "dz.ng"; nh: "dz.nh"; ni: "dz.ni"; nj: "dz.nj"; nk: "dz.nk"; nl: "dz.nl"; nm: "dz.nm"; nn: "dz.nn"; no: "dz.no"; np: "dz.np"; nq: "dz.nq"; nr: "dz.nr"; ns: "dz.ns"; nt: "dz.nt"; nu: "dz.nu"; nv: "dz.nv"; nw: "dz.nw"; nx: "dz.nx"; ny: "dz.ny"; nz: "dz.nz"; oa: "dz.oa"; ob: "dz.ob"; oc: "dz.oc"; od: "dz.od"; oe: "dz.oe"; of: "dz.of"; og: "dz.og"; oh: "dz.oh"; oi: "dz.oi"; oj: "dz.oj"; ok: "dz.ok"; ol: "dz.ol"; om: "dz.om"; on: "dz.on"; oo: "dz.oo"; op: "dz.op"; oq: "dz.oq"; or: "dz.or"; os: "dz.os"; ot: "dz.ot"; ou: "dz.ou"; ov: "dz.ov"; ow: "dz.ow"; ox: "dz.ox"; oy: "dz.oy"; oz: "dz.oz"; pa: "dz.pa"; pb: "dz.pb"; pc: "dz.pc"; pd: "dz.pd"; pe: "dz.pe"; pf: "dz.pf"; pg: "dz.pg"; ph: "dz.ph"; pi: "dz.pi"; pj: "dz.pj"; pk: "dz.pk"; pl: "dz.pl"; pm: "dz.pm"; pn: "dz.pn"; po: "dz.po"; pp: "dz.pp"; pq: "dz.pq"; pr: "dz.pr"; ps: "dz.ps"; pt: "dz.pt"; pu: "dz.pu"; pv: "dz.pv"; pw: "dz.pw"; px: "dz.px"; py: "dz.py"; pz: "dz.pz"; qa: "dz.qa"; qb: "dz.qb"; qc: "dz.qc"; qd: "dz.qd"; qe: "dz.qe"; qf: "dz.qf"; qg: "dz.qg"; qh: "dz.qh"; qi: "dz.qi"; qj: "dz.qj"; qk: "dz.qk"; ql: "dz.ql"; qm: "dz.qm"; qn: "dz.qn"; qo: "dz.qo"; qp: "dz.qp"; qq: "dz.qq"; qr: "dz.qr"; qs: "dz.qs"; qt: "dz.qt"; qu: "dz.qu"; qv: "dz.qv"; qw: "dz.qw"; qx: "dz.qx"; qy: "dz.qy"; qz: "dz.qz"; ra: "dz.ra"; rb: "dz.rb"; rc: "dz.rc"; rd: "dz.rd"; re: "dz.re"; rf: "dz.rf"; rg: "dz.rg"; rh: "dz.rh"; ri: "dz.ri"; rj: "dz.rj"; rk: "dz.rk"; rl: "dz.rl"; rm: "dz.rm"; rn: "dz.rn"; ro: "dz.ro"; rp: "dz.rp"; rq: "dz.rq"; rr: "dz.rr"; rs: "dz.rs"; rt: "dz.rt"; ru: "dz.ru"; rv: "dz.rv"; rw: "dz.rw"; rx: "dz.rx"; ry: "dz.ry"; rz: "dz.rz"; sa: "dz.sa"; sb: "dz.sb"; sc: "dz.sc"; sd: "dz.sd"; se: "dz.se"; sf: "dz.sf"; sg: "dz.sg"; sh: "dz.sh"; si: "dz.si"; sj: "dz.sj"; sk: "dz.sk"; sl: "dz.sl"; sm: "dz.sm"; sn: "dz.sn"; so: "dz.so"; sp: "dz.sp"; sq: "dz.sq"; sr: "dz.sr"; ss: "dz.ss"; st: "dz.st"; su: "dz.su"; sv: "dz.sv"; sw: "dz.sw"; sx: "dz.sx"; sy: "dz.sy"; sz: "dz.sz"; ta: "dz.ta"; tb: "dz.tb"; tc: "dz.tc"; td: "dz.td"; te: "dz.te"; tf: "dz.tf"; tg: "dz.tg"; th: "dz.th"; ti: "dz.ti"; tj: "dz.tj"; tk: "dz.tk"; tl: "dz.tl"; tm: "dz.tm"; tn: "dz.tn"; to: "dz.to"; tp: "dz.tp"; tq: "dz.tq"; tr: "dz.tr"; ts: "dz.ts"; tt: "dz.tt"; tu: "dz.tu"; tv: "dz.tv"; tw: "dz.tw"; tx: "dz.tx"; ty: "dz.ty"; tz: "dz.tz"; ua: "dz.ua"; ub: "dz.ub"; uc: "dz.uc"; ud: "dz.ud"; ue: "dz.ue"; uf: "dz.uf"; ug: "dz.ug"; uh: "dz.uh"; ui: "dz.ui"; uj: "dz.uj"; uk: "dz.uk"; ul: "dz.ul"; um: "dz.um"; un: "dz.un"; uo: "dz.uo"; up: "dz.up"; uq: "dz.uq"; ur: "dz.ur"; us: "dz.us"; ut: "dz.ut"; uu: "dz.uu"; uv: "dz.uv"; uw: "dz.uw"; ux: "dz.ux"; uy: "dz.uy"; uz: "dz.uz"; va: "dz.va"; vb: "dz.vb"; vc: "dz.vc"; vd: "dz.vd"; ve: "dz.ve"; vf: "dz.vf"; vg: "dz.vg"; vh: "dz.vh"; vi: "dz.vi"; vj: "dz.vj"; vk: "dz.vk"; vl: "dz.vl"; vm: "dz.vm"; vn: "dz.vn"; vo: "dz.vo"; vp: "dz.vp"; vq: "dz.vq"; vr: "dz.vr"; vs: "dz.vs"; vt: "dz.vt"; vu: "dz.vu"; vv: "dz.vv"; vw: "dz.vw"; vx: "dz.vx"; vy: "dz.vy"; vz: "dz.vz"; wa: "dz.wa"; wb: "dz.wb"; wc: "dz.wc"; wd: "dz.wd"; we: "dz.we"; wf: "dz.wf"; wg: "dz.wg"; wh: "dz.wh"; wi: "dz.wi"; wj: "dz.wj"; wk: "dz.wk"; wl: "dz.wl"; wm: "dz.wm"; wn: "dz.wn"; wo: "dz.wo"; wp: "dz.wp"; wq: "dz.wq"; wr: "dz.wr"; ws: "dz.ws"; wt: "dz.wt"; wu: "dz.wu"; wv: "dz.wv"; ww: "dz.ww"; wx: "dz.wx"; wy: "dz.wy"; wz: "dz.wz"; xa: "dz.xa"; xb: "dz.xb"; xc: "dz.xc"; xd: "dz.xd"; xe: "dz.xe"; xf: "dz.xf"; xg: "dz.xg"; xh: "dz.xh"; xi: "dz.xi"; xj: "dz.xj"; xk: "dz.xk"; xl: "dz.xl"; xm: "dz.xm"; xn: "dz.xn"; xo: "dz.xo"; xp: "dz.xp"; xq: "dz.xq"; xr: "dz.xr"; xs: "dz.xs"; xt: "dz.xt"; xu: "dz.xu"; xv: "dz.xv"; xw: "dz.xw"; xx: "dz.xx"; xy: "dz.xy"; xz: "dz.xz"; ya: "dz.ya"; yb: "dz.yb"; yc: "dz.yc"; yd: "dz.yd"; ye: "dz.ye"; yf: "dz.yf"; yg: "dz.yg"; yh: "dz.yh"; yi: "dz.yi"; yj: "dz.yj"; yk: "dz.yk"; yl: "dz.yl"; ym: "dz.ym"; yn: "dz.yn"; yo: "dz.yo"; yp: "dz.yp"; yq: "dz.yq"; yr: "dz.yr"; ys: "dz.ys"; yt: "dz.yt"; yu: "dz.yu"; yv: "dz.yv"; yw: "dz.yw"; yx: "dz.yx"; yy: "dz.yy"; yz: "dz.yz"; za: "dz.za"; zb: "dz.zb"; zc: "dz.zc"; zd: "dz.zd"; ze: "dz.ze"; zf: "dz.zf"; zg: "dz.zg"; zh: "dz.zh"; zi: "dz.zi"; zj: "dz.zj"; zk: "dz.zk"; zl: "dz.zl"; zm: "dz.zm"; zn: "dz.zn"; zo: "dz.zo"; zp: "dz.zp"; zq: "dz.zq"; zr: "dz.zr"; zs: "dz.zs"; zt: "dz.zt"; zu: "dz.zu"; zv: "dz.zv"; zw: "dz.zw"; zx: "dz.zx"; zy: "dz.zy"; zz: "dz.zz"; }; ea: { aa: "ea.aa"; ab: "ea.ab"; ac: "ea.ac"; ad: "ea.ad"; ae: "ea.ae"; af: "ea.af"; ag: "ea.ag"; ah: "ea.ah"; ai: "ea.ai"; aj: "ea.aj"; ak: "ea.ak"; al: "ea.al"; am: "ea.am"; an: "ea.an"; ao: "ea.ao"; ap: "ea.ap"; aq: "ea.aq"; ar: "ea.ar"; as: "ea.as"; at: "ea.at"; au: "ea.au"; av: "ea.av"; aw: "ea.aw"; ax: "ea.ax"; ay: "ea.ay"; az: "ea.az"; ba: "ea.ba"; bb: "ea.bb"; bc: "ea.bc"; bd: "ea.bd"; be: "ea.be"; bf: "ea.bf"; bg: "ea.bg"; bh: "ea.bh"; bi: "ea.bi"; bj: "ea.bj"; bk: "ea.bk"; bl: "ea.bl"; bm: "ea.bm"; bn: "ea.bn"; bo: "ea.bo"; bp: "ea.bp"; bq: "ea.bq"; br: "ea.br"; bs: "ea.bs"; bt: "ea.bt"; bu: "ea.bu"; bv: "ea.bv"; bw: "ea.bw"; bx: "ea.bx"; by: "ea.by"; bz: "ea.bz"; ca: "ea.ca"; cb: "ea.cb"; cc: "ea.cc"; cd: "ea.cd"; ce: "ea.ce"; cf: "ea.cf"; cg: "ea.cg"; ch: "ea.ch"; ci: "ea.ci"; cj: "ea.cj"; ck: "ea.ck"; cl: "ea.cl"; cm: "ea.cm"; cn: "ea.cn"; co: "ea.co"; cp: "ea.cp"; cq: "ea.cq"; cr: "ea.cr"; cs: "ea.cs"; ct: "ea.ct"; cu: "ea.cu"; cv: "ea.cv"; cw: "ea.cw"; cx: "ea.cx"; cy: "ea.cy"; cz: "ea.cz"; da: "ea.da"; db: "ea.db"; dc: "ea.dc"; dd: "ea.dd"; de: "ea.de"; df: "ea.df"; dg: "ea.dg"; dh: "ea.dh"; di: "ea.di"; dj: "ea.dj"; dk: "ea.dk"; dl: "ea.dl"; dm: "ea.dm"; dn: "ea.dn"; do: "ea.do"; dp: "ea.dp"; dq: "ea.dq"; dr: "ea.dr"; ds: "ea.ds"; dt: "ea.dt"; du: "ea.du"; dv: "ea.dv"; dw: "ea.dw"; dx: "ea.dx"; dy: "ea.dy"; dz: "ea.dz"; ea: "ea.ea"; eb: "ea.eb"; ec: "ea.ec"; ed: "ea.ed"; ee: "ea.ee"; ef: "ea.ef"; eg: "ea.eg"; eh: "ea.eh"; ei: "ea.ei"; ej: "ea.ej"; ek: "ea.ek"; el: "ea.el"; em: "ea.em"; en: "ea.en"; eo: "ea.eo"; ep: "ea.ep"; eq: "ea.eq"; er: "ea.er"; es: "ea.es"; et: "ea.et"; eu: "ea.eu"; ev: "ea.ev"; ew: "ea.ew"; ex: "ea.ex"; ey: "ea.ey"; ez: "ea.ez"; fa: "ea.fa"; fb: "ea.fb"; fc: "ea.fc"; fd: "ea.fd"; fe: "ea.fe"; ff: "ea.ff"; fg: "ea.fg"; fh: "ea.fh"; fi: "ea.fi"; fj: "ea.fj"; fk: "ea.fk"; fl: "ea.fl"; fm: "ea.fm"; fn: "ea.fn"; fo: "ea.fo"; fp: "ea.fp"; fq: "ea.fq"; fr: "ea.fr"; fs: "ea.fs"; ft: "ea.ft"; fu: "ea.fu"; fv: "ea.fv"; fw: "ea.fw"; fx: "ea.fx"; fy: "ea.fy"; fz: "ea.fz"; ga: "ea.ga"; gb: "ea.gb"; gc: "ea.gc"; gd: "ea.gd"; ge: "ea.ge"; gf: "ea.gf"; gg: "ea.gg"; gh: "ea.gh"; gi: "ea.gi"; gj: "ea.gj"; gk: "ea.gk"; gl: "ea.gl"; gm: "ea.gm"; gn: "ea.gn"; go: "ea.go"; gp: "ea.gp"; gq: "ea.gq"; gr: "ea.gr"; gs: "ea.gs"; gt: "ea.gt"; gu: "ea.gu"; gv: "ea.gv"; gw: "ea.gw"; gx: "ea.gx"; gy: "ea.gy"; gz: "ea.gz"; ha: "ea.ha"; hb: "ea.hb"; hc: "ea.hc"; hd: "ea.hd"; he: "ea.he"; hf: "ea.hf"; hg: "ea.hg"; hh: "ea.hh"; hi: "ea.hi"; hj: "ea.hj"; hk: "ea.hk"; hl: "ea.hl"; hm: "ea.hm"; hn: "ea.hn"; ho: "ea.ho"; hp: "ea.hp"; hq: "ea.hq"; hr: "ea.hr"; hs: "ea.hs"; ht: "ea.ht"; hu: "ea.hu"; hv: "ea.hv"; hw: "ea.hw"; hx: "ea.hx"; hy: "ea.hy"; hz: "ea.hz"; ia: "ea.ia"; ib: "ea.ib"; ic: "ea.ic"; id: "ea.id"; ie: "ea.ie"; if: "ea.if"; ig: "ea.ig"; ih: "ea.ih"; ii: "ea.ii"; ij: "ea.ij"; ik: "ea.ik"; il: "ea.il"; im: "ea.im"; in: "ea.in"; io: "ea.io"; ip: "ea.ip"; iq: "ea.iq"; ir: "ea.ir"; is: "ea.is"; it: "ea.it"; iu: "ea.iu"; iv: "ea.iv"; iw: "ea.iw"; ix: "ea.ix"; iy: "ea.iy"; iz: "ea.iz"; ja: "ea.ja"; jb: "ea.jb"; jc: "ea.jc"; jd: "ea.jd"; je: "ea.je"; jf: "ea.jf"; jg: "ea.jg"; jh: "ea.jh"; ji: "ea.ji"; jj: "ea.jj"; jk: "ea.jk"; jl: "ea.jl"; jm: "ea.jm"; jn: "ea.jn"; jo: "ea.jo"; jp: "ea.jp"; jq: "ea.jq"; jr: "ea.jr"; js: "ea.js"; jt: "ea.jt"; ju: "ea.ju"; jv: "ea.jv"; jw: "ea.jw"; jx: "ea.jx"; jy: "ea.jy"; jz: "ea.jz"; ka: "ea.ka"; kb: "ea.kb"; kc: "ea.kc"; kd: "ea.kd"; ke: "ea.ke"; kf: "ea.kf"; kg: "ea.kg"; kh: "ea.kh"; ki: "ea.ki"; kj: "ea.kj"; kk: "ea.kk"; kl: "ea.kl"; km: "ea.km"; kn: "ea.kn"; ko: "ea.ko"; kp: "ea.kp"; kq: "ea.kq"; kr: "ea.kr"; ks: "ea.ks"; kt: "ea.kt"; ku: "ea.ku"; kv: "ea.kv"; kw: "ea.kw"; kx: "ea.kx"; ky: "ea.ky"; kz: "ea.kz"; la: "ea.la"; lb: "ea.lb"; lc: "ea.lc"; ld: "ea.ld"; le: "ea.le"; lf: "ea.lf"; lg: "ea.lg"; lh: "ea.lh"; li: "ea.li"; lj: "ea.lj"; lk: "ea.lk"; ll: "ea.ll"; lm: "ea.lm"; ln: "ea.ln"; lo: "ea.lo"; lp: "ea.lp"; lq: "ea.lq"; lr: "ea.lr"; ls: "ea.ls"; lt: "ea.lt"; lu: "ea.lu"; lv: "ea.lv"; lw: "ea.lw"; lx: "ea.lx"; ly: "ea.ly"; lz: "ea.lz"; ma: "ea.ma"; mb: "ea.mb"; mc: "ea.mc"; md: "ea.md"; me: "ea.me"; mf: "ea.mf"; mg: "ea.mg"; mh: "ea.mh"; mi: "ea.mi"; mj: "ea.mj"; mk: "ea.mk"; ml: "ea.ml"; mm: "ea.mm"; mn: "ea.mn"; mo: "ea.mo"; mp: "ea.mp"; mq: "ea.mq"; mr: "ea.mr"; ms: "ea.ms"; mt: "ea.mt"; mu: "ea.mu"; mv: "ea.mv"; mw: "ea.mw"; mx: "ea.mx"; my: "ea.my"; mz: "ea.mz"; na: "ea.na"; nb: "ea.nb"; nc: "ea.nc"; nd: "ea.nd"; ne: "ea.ne"; nf: "ea.nf"; ng: "ea.ng"; nh: "ea.nh"; ni: "ea.ni"; nj: "ea.nj"; nk: "ea.nk"; nl: "ea.nl"; nm: "ea.nm"; nn: "ea.nn"; no: "ea.no"; np: "ea.np"; nq: "ea.nq"; nr: "ea.nr"; ns: "ea.ns"; nt: "ea.nt"; nu: "ea.nu"; nv: "ea.nv"; nw: "ea.nw"; nx: "ea.nx"; ny: "ea.ny"; nz: "ea.nz"; oa: "ea.oa"; ob: "ea.ob"; oc: "ea.oc"; od: "ea.od"; oe: "ea.oe"; of: "ea.of"; og: "ea.og"; oh: "ea.oh"; oi: "ea.oi"; oj: "ea.oj"; ok: "ea.ok"; ol: "ea.ol"; om: "ea.om"; on: "ea.on"; oo: "ea.oo"; op: "ea.op"; oq: "ea.oq"; or: "ea.or"; os: "ea.os"; ot: "ea.ot"; ou: "ea.ou"; ov: "ea.ov"; ow: "ea.ow"; ox: "ea.ox"; oy: "ea.oy"; oz: "ea.oz"; pa: "ea.pa"; pb: "ea.pb"; pc: "ea.pc"; pd: "ea.pd"; pe: "ea.pe"; pf: "ea.pf"; pg: "ea.pg"; ph: "ea.ph"; pi: "ea.pi"; pj: "ea.pj"; pk: "ea.pk"; pl: "ea.pl"; pm: "ea.pm"; pn: "ea.pn"; po: "ea.po"; pp: "ea.pp"; pq: "ea.pq"; pr: "ea.pr"; ps: "ea.ps"; pt: "ea.pt"; pu: "ea.pu"; pv: "ea.pv"; pw: "ea.pw"; px: "ea.px"; py: "ea.py"; pz: "ea.pz"; qa: "ea.qa"; qb: "ea.qb"; qc: "ea.qc"; qd: "ea.qd"; qe: "ea.qe"; qf: "ea.qf"; qg: "ea.qg"; qh: "ea.qh"; qi: "ea.qi"; qj: "ea.qj"; qk: "ea.qk"; ql: "ea.ql"; qm: "ea.qm"; qn: "ea.qn"; qo: "ea.qo"; qp: "ea.qp"; qq: "ea.qq"; qr: "ea.qr"; qs: "ea.qs"; qt: "ea.qt"; qu: "ea.qu"; qv: "ea.qv"; qw: "ea.qw"; qx: "ea.qx"; qy: "ea.qy"; qz: "ea.qz"; ra: "ea.ra"; rb: "ea.rb"; rc: "ea.rc"; rd: "ea.rd"; re: "ea.re"; rf: "ea.rf"; rg: "ea.rg"; rh: "ea.rh"; ri: "ea.ri"; rj: "ea.rj"; rk: "ea.rk"; rl: "ea.rl"; rm: "ea.rm"; rn: "ea.rn"; ro: "ea.ro"; rp: "ea.rp"; rq: "ea.rq"; rr: "ea.rr"; rs: "ea.rs"; rt: "ea.rt"; ru: "ea.ru"; rv: "ea.rv"; rw: "ea.rw"; rx: "ea.rx"; ry: "ea.ry"; rz: "ea.rz"; sa: "ea.sa"; sb: "ea.sb"; sc: "ea.sc"; sd: "ea.sd"; se: "ea.se"; sf: "ea.sf"; sg: "ea.sg"; sh: "ea.sh"; si: "ea.si"; sj: "ea.sj"; sk: "ea.sk"; sl: "ea.sl"; sm: "ea.sm"; sn: "ea.sn"; so: "ea.so"; sp: "ea.sp"; sq: "ea.sq"; sr: "ea.sr"; ss: "ea.ss"; st: "ea.st"; su: "ea.su"; sv: "ea.sv"; sw: "ea.sw"; sx: "ea.sx"; sy: "ea.sy"; sz: "ea.sz"; ta: "ea.ta"; tb: "ea.tb"; tc: "ea.tc"; td: "ea.td"; te: "ea.te"; tf: "ea.tf"; tg: "ea.tg"; th: "ea.th"; ti: "ea.ti"; tj: "ea.tj"; tk: "ea.tk"; tl: "ea.tl"; tm: "ea.tm"; tn: "ea.tn"; to: "ea.to"; tp: "ea.tp"; tq: "ea.tq"; tr: "ea.tr"; ts: "ea.ts"; tt: "ea.tt"; tu: "ea.tu"; tv: "ea.tv"; tw: "ea.tw"; tx: "ea.tx"; ty: "ea.ty"; tz: "ea.tz"; ua: "ea.ua"; ub: "ea.ub"; uc: "ea.uc"; ud: "ea.ud"; ue: "ea.ue"; uf: "ea.uf"; ug: "ea.ug"; uh: "ea.uh"; ui: "ea.ui"; uj: "ea.uj"; uk: "ea.uk"; ul: "ea.ul"; um: "ea.um"; un: "ea.un"; uo: "ea.uo"; up: "ea.up"; uq: "ea.uq"; ur: "ea.ur"; us: "ea.us"; ut: "ea.ut"; uu: "ea.uu"; uv: "ea.uv"; uw: "ea.uw"; ux: "ea.ux"; uy: "ea.uy"; uz: "ea.uz"; va: "ea.va"; vb: "ea.vb"; vc: "ea.vc"; vd: "ea.vd"; ve: "ea.ve"; vf: "ea.vf"; vg: "ea.vg"; vh: "ea.vh"; vi: "ea.vi"; vj: "ea.vj"; vk: "ea.vk"; vl: "ea.vl"; vm: "ea.vm"; vn: "ea.vn"; vo: "ea.vo"; vp: "ea.vp"; vq: "ea.vq"; vr: "ea.vr"; vs: "ea.vs"; vt: "ea.vt"; vu: "ea.vu"; vv: "ea.vv"; vw: "ea.vw"; vx: "ea.vx"; vy: "ea.vy"; vz: "ea.vz"; wa: "ea.wa"; wb: "ea.wb"; wc: "ea.wc"; wd: "ea.wd"; we: "ea.we"; wf: "ea.wf"; wg: "ea.wg"; wh: "ea.wh"; wi: "ea.wi"; wj: "ea.wj"; wk: "ea.wk"; wl: "ea.wl"; wm: "ea.wm"; wn: "ea.wn"; wo: "ea.wo"; wp: "ea.wp"; wq: "ea.wq"; wr: "ea.wr"; ws: "ea.ws"; wt: "ea.wt"; wu: "ea.wu"; wv: "ea.wv"; ww: "ea.ww"; wx: "ea.wx"; wy: "ea.wy"; wz: "ea.wz"; xa: "ea.xa"; xb: "ea.xb"; xc: "ea.xc"; xd: "ea.xd"; xe: "ea.xe"; xf: "ea.xf"; xg: "ea.xg"; xh: "ea.xh"; xi: "ea.xi"; xj: "ea.xj"; xk: "ea.xk"; xl: "ea.xl"; xm: "ea.xm"; xn: "ea.xn"; xo: "ea.xo"; xp: "ea.xp"; xq: "ea.xq"; xr: "ea.xr"; xs: "ea.xs"; xt: "ea.xt"; xu: "ea.xu"; xv: "ea.xv"; xw: "ea.xw"; xx: "ea.xx"; xy: "ea.xy"; xz: "ea.xz"; ya: "ea.ya"; yb: "ea.yb"; yc: "ea.yc"; yd: "ea.yd"; ye: "ea.ye"; yf: "ea.yf"; yg: "ea.yg"; yh: "ea.yh"; yi: "ea.yi"; yj: "ea.yj"; yk: "ea.yk"; yl: "ea.yl"; ym: "ea.ym"; yn: "ea.yn"; yo: "ea.yo"; yp: "ea.yp"; yq: "ea.yq"; yr: "ea.yr"; ys: "ea.ys"; yt: "ea.yt"; yu: "ea.yu"; yv: "ea.yv"; yw: "ea.yw"; yx: "ea.yx"; yy: "ea.yy"; yz: "ea.yz"; za: "ea.za"; zb: "ea.zb"; zc: "ea.zc"; zd: "ea.zd"; ze: "ea.ze"; zf: "ea.zf"; zg: "ea.zg"; zh: "ea.zh"; zi: "ea.zi"; zj: "ea.zj"; zk: "ea.zk"; zl: "ea.zl"; zm: "ea.zm"; zn: "ea.zn"; zo: "ea.zo"; zp: "ea.zp"; zq: "ea.zq"; zr: "ea.zr"; zs: "ea.zs"; zt: "ea.zt"; zu: "ea.zu"; zv: "ea.zv"; zw: "ea.zw"; zx: "ea.zx"; zy: "ea.zy"; zz: "ea.zz"; }; eb: { aa: "eb.aa"; ab: "eb.ab"; ac: "eb.ac"; ad: "eb.ad"; ae: "eb.ae"; af: "eb.af"; ag: "eb.ag"; ah: "eb.ah"; ai: "eb.ai"; aj: "eb.aj"; ak: "eb.ak"; al: "eb.al"; am: "eb.am"; an: "eb.an"; ao: "eb.ao"; ap: "eb.ap"; aq: "eb.aq"; ar: "eb.ar"; as: "eb.as"; at: "eb.at"; au: "eb.au"; av: "eb.av"; aw: "eb.aw"; ax: "eb.ax"; ay: "eb.ay"; az: "eb.az"; ba: "eb.ba"; bb: "eb.bb"; bc: "eb.bc"; bd: "eb.bd"; be: "eb.be"; bf: "eb.bf"; bg: "eb.bg"; bh: "eb.bh"; bi: "eb.bi"; bj: "eb.bj"; bk: "eb.bk"; bl: "eb.bl"; bm: "eb.bm"; bn: "eb.bn"; bo: "eb.bo"; bp: "eb.bp"; bq: "eb.bq"; br: "eb.br"; bs: "eb.bs"; bt: "eb.bt"; bu: "eb.bu"; bv: "eb.bv"; bw: "eb.bw"; bx: "eb.bx"; by: "eb.by"; bz: "eb.bz"; ca: "eb.ca"; cb: "eb.cb"; cc: "eb.cc"; cd: "eb.cd"; ce: "eb.ce"; cf: "eb.cf"; cg: "eb.cg"; ch: "eb.ch"; ci: "eb.ci"; cj: "eb.cj"; ck: "eb.ck"; cl: "eb.cl"; cm: "eb.cm"; cn: "eb.cn"; co: "eb.co"; cp: "eb.cp"; cq: "eb.cq"; cr: "eb.cr"; cs: "eb.cs"; ct: "eb.ct"; cu: "eb.cu"; cv: "eb.cv"; cw: "eb.cw"; cx: "eb.cx"; cy: "eb.cy"; cz: "eb.cz"; da: "eb.da"; db: "eb.db"; dc: "eb.dc"; dd: "eb.dd"; de: "eb.de"; df: "eb.df"; dg: "eb.dg"; dh: "eb.dh"; di: "eb.di"; dj: "eb.dj"; dk: "eb.dk"; dl: "eb.dl"; dm: "eb.dm"; dn: "eb.dn"; do: "eb.do"; dp: "eb.dp"; dq: "eb.dq"; dr: "eb.dr"; ds: "eb.ds"; dt: "eb.dt"; du: "eb.du"; dv: "eb.dv"; dw: "eb.dw"; dx: "eb.dx"; dy: "eb.dy"; dz: "eb.dz"; ea: "eb.ea"; eb: "eb.eb"; ec: "eb.ec"; ed: "eb.ed"; ee: "eb.ee"; ef: "eb.ef"; eg: "eb.eg"; eh: "eb.eh"; ei: "eb.ei"; ej: "eb.ej"; ek: "eb.ek"; el: "eb.el"; em: "eb.em"; en: "eb.en"; eo: "eb.eo"; ep: "eb.ep"; eq: "eb.eq"; er: "eb.er"; es: "eb.es"; et: "eb.et"; eu: "eb.eu"; ev: "eb.ev"; ew: "eb.ew"; ex: "eb.ex"; ey: "eb.ey"; ez: "eb.ez"; fa: "eb.fa"; fb: "eb.fb"; fc: "eb.fc"; fd: "eb.fd"; fe: "eb.fe"; ff: "eb.ff"; fg: "eb.fg"; fh: "eb.fh"; fi: "eb.fi"; fj: "eb.fj"; fk: "eb.fk"; fl: "eb.fl"; fm: "eb.fm"; fn: "eb.fn"; fo: "eb.fo"; fp: "eb.fp"; fq: "eb.fq"; fr: "eb.fr"; fs: "eb.fs"; ft: "eb.ft"; fu: "eb.fu"; fv: "eb.fv"; fw: "eb.fw"; fx: "eb.fx"; fy: "eb.fy"; fz: "eb.fz"; ga: "eb.ga"; gb: "eb.gb"; gc: "eb.gc"; gd: "eb.gd"; ge: "eb.ge"; gf: "eb.gf"; gg: "eb.gg"; gh: "eb.gh"; gi: "eb.gi"; gj: "eb.gj"; gk: "eb.gk"; gl: "eb.gl"; gm: "eb.gm"; gn: "eb.gn"; go: "eb.go"; gp: "eb.gp"; gq: "eb.gq"; gr: "eb.gr"; gs: "eb.gs"; gt: "eb.gt"; gu: "eb.gu"; gv: "eb.gv"; gw: "eb.gw"; gx: "eb.gx"; gy: "eb.gy"; gz: "eb.gz"; ha: "eb.ha"; hb: "eb.hb"; hc: "eb.hc"; hd: "eb.hd"; he: "eb.he"; hf: "eb.hf"; hg: "eb.hg"; hh: "eb.hh"; hi: "eb.hi"; hj: "eb.hj"; hk: "eb.hk"; hl: "eb.hl"; hm: "eb.hm"; hn: "eb.hn"; ho: "eb.ho"; hp: "eb.hp"; hq: "eb.hq"; hr: "eb.hr"; hs: "eb.hs"; ht: "eb.ht"; hu: "eb.hu"; hv: "eb.hv"; hw: "eb.hw"; hx: "eb.hx"; hy: "eb.hy"; hz: "eb.hz"; ia: "eb.ia"; ib: "eb.ib"; ic: "eb.ic"; id: "eb.id"; ie: "eb.ie"; if: "eb.if"; ig: "eb.ig"; ih: "eb.ih"; ii: "eb.ii"; ij: "eb.ij"; ik: "eb.ik"; il: "eb.il"; im: "eb.im"; in: "eb.in"; io: "eb.io"; ip: "eb.ip"; iq: "eb.iq"; ir: "eb.ir"; is: "eb.is"; it: "eb.it"; iu: "eb.iu"; iv: "eb.iv"; iw: "eb.iw"; ix: "eb.ix"; iy: "eb.iy"; iz: "eb.iz"; ja: "eb.ja"; jb: "eb.jb"; jc: "eb.jc"; jd: "eb.jd"; je: "eb.je"; jf: "eb.jf"; jg: "eb.jg"; jh: "eb.jh"; ji: "eb.ji"; jj: "eb.jj"; jk: "eb.jk"; jl: "eb.jl"; jm: "eb.jm"; jn: "eb.jn"; jo: "eb.jo"; jp: "eb.jp"; jq: "eb.jq"; jr: "eb.jr"; js: "eb.js"; jt: "eb.jt"; ju: "eb.ju"; jv: "eb.jv"; jw: "eb.jw"; jx: "eb.jx"; jy: "eb.jy"; jz: "eb.jz"; ka: "eb.ka"; kb: "eb.kb"; kc: "eb.kc"; kd: "eb.kd"; ke: "eb.ke"; kf: "eb.kf"; kg: "eb.kg"; kh: "eb.kh"; ki: "eb.ki"; kj: "eb.kj"; kk: "eb.kk"; kl: "eb.kl"; km: "eb.km"; kn: "eb.kn"; ko: "eb.ko"; kp: "eb.kp"; kq: "eb.kq"; kr: "eb.kr"; ks: "eb.ks"; kt: "eb.kt"; ku: "eb.ku"; kv: "eb.kv"; kw: "eb.kw"; kx: "eb.kx"; ky: "eb.ky"; kz: "eb.kz"; la: "eb.la"; lb: "eb.lb"; lc: "eb.lc"; ld: "eb.ld"; le: "eb.le"; lf: "eb.lf"; lg: "eb.lg"; lh: "eb.lh"; li: "eb.li"; lj: "eb.lj"; lk: "eb.lk"; ll: "eb.ll"; lm: "eb.lm"; ln: "eb.ln"; lo: "eb.lo"; lp: "eb.lp"; lq: "eb.lq"; lr: "eb.lr"; ls: "eb.ls"; lt: "eb.lt"; lu: "eb.lu"; lv: "eb.lv"; lw: "eb.lw"; lx: "eb.lx"; ly: "eb.ly"; lz: "eb.lz"; ma: "eb.ma"; mb: "eb.mb"; mc: "eb.mc"; md: "eb.md"; me: "eb.me"; mf: "eb.mf"; mg: "eb.mg"; mh: "eb.mh"; mi: "eb.mi"; mj: "eb.mj"; mk: "eb.mk"; ml: "eb.ml"; mm: "eb.mm"; mn: "eb.mn"; mo: "eb.mo"; mp: "eb.mp"; mq: "eb.mq"; mr: "eb.mr"; ms: "eb.ms"; mt: "eb.mt"; mu: "eb.mu"; mv: "eb.mv"; mw: "eb.mw"; mx: "eb.mx"; my: "eb.my"; mz: "eb.mz"; na: "eb.na"; nb: "eb.nb"; nc: "eb.nc"; nd: "eb.nd"; ne: "eb.ne"; nf: "eb.nf"; ng: "eb.ng"; nh: "eb.nh"; ni: "eb.ni"; nj: "eb.nj"; nk: "eb.nk"; nl: "eb.nl"; nm: "eb.nm"; nn: "eb.nn"; no: "eb.no"; np: "eb.np"; nq: "eb.nq"; nr: "eb.nr"; ns: "eb.ns"; nt: "eb.nt"; nu: "eb.nu"; nv: "eb.nv"; nw: "eb.nw"; nx: "eb.nx"; ny: "eb.ny"; nz: "eb.nz"; oa: "eb.oa"; ob: "eb.ob"; oc: "eb.oc"; od: "eb.od"; oe: "eb.oe"; of: "eb.of"; og: "eb.og"; oh: "eb.oh"; oi: "eb.oi"; oj: "eb.oj"; ok: "eb.ok"; ol: "eb.ol"; om: "eb.om"; on: "eb.on"; oo: "eb.oo"; op: "eb.op"; oq: "eb.oq"; or: "eb.or"; os: "eb.os"; ot: "eb.ot"; ou: "eb.ou"; ov: "eb.ov"; ow: "eb.ow"; ox: "eb.ox"; oy: "eb.oy"; oz: "eb.oz"; pa: "eb.pa"; pb: "eb.pb"; pc: "eb.pc"; pd: "eb.pd"; pe: "eb.pe"; pf: "eb.pf"; pg: "eb.pg"; ph: "eb.ph"; pi: "eb.pi"; pj: "eb.pj"; pk: "eb.pk"; pl: "eb.pl"; pm: "eb.pm"; pn: "eb.pn"; po: "eb.po"; pp: "eb.pp"; pq: "eb.pq"; pr: "eb.pr"; ps: "eb.ps"; pt: "eb.pt"; pu: "eb.pu"; pv: "eb.pv"; pw: "eb.pw"; px: "eb.px"; py: "eb.py"; pz: "eb.pz"; qa: "eb.qa"; qb: "eb.qb"; qc: "eb.qc"; qd: "eb.qd"; qe: "eb.qe"; qf: "eb.qf"; qg: "eb.qg"; qh: "eb.qh"; qi: "eb.qi"; qj: "eb.qj"; qk: "eb.qk"; ql: "eb.ql"; qm: "eb.qm"; qn: "eb.qn"; qo: "eb.qo"; qp: "eb.qp"; qq: "eb.qq"; qr: "eb.qr"; qs: "eb.qs"; qt: "eb.qt"; qu: "eb.qu"; qv: "eb.qv"; qw: "eb.qw"; qx: "eb.qx"; qy: "eb.qy"; qz: "eb.qz"; ra: "eb.ra"; rb: "eb.rb"; rc: "eb.rc"; rd: "eb.rd"; re: "eb.re"; rf: "eb.rf"; rg: "eb.rg"; rh: "eb.rh"; ri: "eb.ri"; rj: "eb.rj"; rk: "eb.rk"; rl: "eb.rl"; rm: "eb.rm"; rn: "eb.rn"; ro: "eb.ro"; rp: "eb.rp"; rq: "eb.rq"; rr: "eb.rr"; rs: "eb.rs"; rt: "eb.rt"; ru: "eb.ru"; rv: "eb.rv"; rw: "eb.rw"; rx: "eb.rx"; ry: "eb.ry"; rz: "eb.rz"; sa: "eb.sa"; sb: "eb.sb"; sc: "eb.sc"; sd: "eb.sd"; se: "eb.se"; sf: "eb.sf"; sg: "eb.sg"; sh: "eb.sh"; si: "eb.si"; sj: "eb.sj"; sk: "eb.sk"; sl: "eb.sl"; sm: "eb.sm"; sn: "eb.sn"; so: "eb.so"; sp: "eb.sp"; sq: "eb.sq"; sr: "eb.sr"; ss: "eb.ss"; st: "eb.st"; su: "eb.su"; sv: "eb.sv"; sw: "eb.sw"; sx: "eb.sx"; sy: "eb.sy"; sz: "eb.sz"; ta: "eb.ta"; tb: "eb.tb"; tc: "eb.tc"; td: "eb.td"; te: "eb.te"; tf: "eb.tf"; tg: "eb.tg"; th: "eb.th"; ti: "eb.ti"; tj: "eb.tj"; tk: "eb.tk"; tl: "eb.tl"; tm: "eb.tm"; tn: "eb.tn"; to: "eb.to"; tp: "eb.tp"; tq: "eb.tq"; tr: "eb.tr"; ts: "eb.ts"; tt: "eb.tt"; tu: "eb.tu"; tv: "eb.tv"; tw: "eb.tw"; tx: "eb.tx"; ty: "eb.ty"; tz: "eb.tz"; ua: "eb.ua"; ub: "eb.ub"; uc: "eb.uc"; ud: "eb.ud"; ue: "eb.ue"; uf: "eb.uf"; ug: "eb.ug"; uh: "eb.uh"; ui: "eb.ui"; uj: "eb.uj"; uk: "eb.uk"; ul: "eb.ul"; um: "eb.um"; un: "eb.un"; uo: "eb.uo"; up: "eb.up"; uq: "eb.uq"; ur: "eb.ur"; us: "eb.us"; ut: "eb.ut"; uu: "eb.uu"; uv: "eb.uv"; uw: "eb.uw"; ux: "eb.ux"; uy: "eb.uy"; uz: "eb.uz"; va: "eb.va"; vb: "eb.vb"; vc: "eb.vc"; vd: "eb.vd"; ve: "eb.ve"; vf: "eb.vf"; vg: "eb.vg"; vh: "eb.vh"; vi: "eb.vi"; vj: "eb.vj"; vk: "eb.vk"; vl: "eb.vl"; vm: "eb.vm"; vn: "eb.vn"; vo: "eb.vo"; vp: "eb.vp"; vq: "eb.vq"; vr: "eb.vr"; vs: "eb.vs"; vt: "eb.vt"; vu: "eb.vu"; vv: "eb.vv"; vw: "eb.vw"; vx: "eb.vx"; vy: "eb.vy"; vz: "eb.vz"; wa: "eb.wa"; wb: "eb.wb"; wc: "eb.wc"; wd: "eb.wd"; we: "eb.we"; wf: "eb.wf"; wg: "eb.wg"; wh: "eb.wh"; wi: "eb.wi"; wj: "eb.wj"; wk: "eb.wk"; wl: "eb.wl"; wm: "eb.wm"; wn: "eb.wn"; wo: "eb.wo"; wp: "eb.wp"; wq: "eb.wq"; wr: "eb.wr"; ws: "eb.ws"; wt: "eb.wt"; wu: "eb.wu"; wv: "eb.wv"; ww: "eb.ww"; wx: "eb.wx"; wy: "eb.wy"; wz: "eb.wz"; xa: "eb.xa"; xb: "eb.xb"; xc: "eb.xc"; xd: "eb.xd"; xe: "eb.xe"; xf: "eb.xf"; xg: "eb.xg"; xh: "eb.xh"; xi: "eb.xi"; xj: "eb.xj"; xk: "eb.xk"; xl: "eb.xl"; xm: "eb.xm"; xn: "eb.xn"; xo: "eb.xo"; xp: "eb.xp"; xq: "eb.xq"; xr: "eb.xr"; xs: "eb.xs"; xt: "eb.xt"; xu: "eb.xu"; xv: "eb.xv"; xw: "eb.xw"; xx: "eb.xx"; xy: "eb.xy"; xz: "eb.xz"; ya: "eb.ya"; yb: "eb.yb"; yc: "eb.yc"; yd: "eb.yd"; ye: "eb.ye"; yf: "eb.yf"; yg: "eb.yg"; yh: "eb.yh"; yi: "eb.yi"; yj: "eb.yj"; yk: "eb.yk"; yl: "eb.yl"; ym: "eb.ym"; yn: "eb.yn"; yo: "eb.yo"; yp: "eb.yp"; yq: "eb.yq"; yr: "eb.yr"; ys: "eb.ys"; yt: "eb.yt"; yu: "eb.yu"; yv: "eb.yv"; yw: "eb.yw"; yx: "eb.yx"; yy: "eb.yy"; yz: "eb.yz"; za: "eb.za"; zb: "eb.zb"; zc: "eb.zc"; zd: "eb.zd"; ze: "eb.ze"; zf: "eb.zf"; zg: "eb.zg"; zh: "eb.zh"; zi: "eb.zi"; zj: "eb.zj"; zk: "eb.zk"; zl: "eb.zl"; zm: "eb.zm"; zn: "eb.zn"; zo: "eb.zo"; zp: "eb.zp"; zq: "eb.zq"; zr: "eb.zr"; zs: "eb.zs"; zt: "eb.zt"; zu: "eb.zu"; zv: "eb.zv"; zw: "eb.zw"; zx: "eb.zx"; zy: "eb.zy"; zz: "eb.zz"; }; ec: { aa: "ec.aa"; ab: "ec.ab"; ac: "ec.ac"; ad: "ec.ad"; ae: "ec.ae"; af: "ec.af"; ag: "ec.ag"; ah: "ec.ah"; ai: "ec.ai"; aj: "ec.aj"; ak: "ec.ak"; al: "ec.al"; am: "ec.am"; an: "ec.an"; ao: "ec.ao"; ap: "ec.ap"; aq: "ec.aq"; ar: "ec.ar"; as: "ec.as"; at: "ec.at"; au: "ec.au"; av: "ec.av"; aw: "ec.aw"; ax: "ec.ax"; ay: "ec.ay"; az: "ec.az"; ba: "ec.ba"; bb: "ec.bb"; bc: "ec.bc"; bd: "ec.bd"; be: "ec.be"; bf: "ec.bf"; bg: "ec.bg"; bh: "ec.bh"; bi: "ec.bi"; bj: "ec.bj"; bk: "ec.bk"; bl: "ec.bl"; bm: "ec.bm"; bn: "ec.bn"; bo: "ec.bo"; bp: "ec.bp"; bq: "ec.bq"; br: "ec.br"; bs: "ec.bs"; bt: "ec.bt"; bu: "ec.bu"; bv: "ec.bv"; bw: "ec.bw"; bx: "ec.bx"; by: "ec.by"; bz: "ec.bz"; ca: "ec.ca"; cb: "ec.cb"; cc: "ec.cc"; cd: "ec.cd"; ce: "ec.ce"; cf: "ec.cf"; cg: "ec.cg"; ch: "ec.ch"; ci: "ec.ci"; cj: "ec.cj"; ck: "ec.ck"; cl: "ec.cl"; cm: "ec.cm"; cn: "ec.cn"; co: "ec.co"; cp: "ec.cp"; cq: "ec.cq"; cr: "ec.cr"; cs: "ec.cs"; ct: "ec.ct"; cu: "ec.cu"; cv: "ec.cv"; cw: "ec.cw"; cx: "ec.cx"; cy: "ec.cy"; cz: "ec.cz"; da: "ec.da"; db: "ec.db"; dc: "ec.dc"; dd: "ec.dd"; de: "ec.de"; df: "ec.df"; dg: "ec.dg"; dh: "ec.dh"; di: "ec.di"; dj: "ec.dj"; dk: "ec.dk"; dl: "ec.dl"; dm: "ec.dm"; dn: "ec.dn"; do: "ec.do"; dp: "ec.dp"; dq: "ec.dq"; dr: "ec.dr"; ds: "ec.ds"; dt: "ec.dt"; du: "ec.du"; dv: "ec.dv"; dw: "ec.dw"; dx: "ec.dx"; dy: "ec.dy"; dz: "ec.dz"; ea: "ec.ea"; eb: "ec.eb"; ec: "ec.ec"; ed: "ec.ed"; ee: "ec.ee"; ef: "ec.ef"; eg: "ec.eg"; eh: "ec.eh"; ei: "ec.ei"; ej: "ec.ej"; ek: "ec.ek"; el: "ec.el"; em: "ec.em"; en: "ec.en"; eo: "ec.eo"; ep: "ec.ep"; eq: "ec.eq"; er: "ec.er"; es: "ec.es"; et: "ec.et"; eu: "ec.eu"; ev: "ec.ev"; ew: "ec.ew"; ex: "ec.ex"; ey: "ec.ey"; ez: "ec.ez"; fa: "ec.fa"; fb: "ec.fb"; fc: "ec.fc"; fd: "ec.fd"; fe: "ec.fe"; ff: "ec.ff"; fg: "ec.fg"; fh: "ec.fh"; fi: "ec.fi"; fj: "ec.fj"; fk: "ec.fk"; fl: "ec.fl"; fm: "ec.fm"; fn: "ec.fn"; fo: "ec.fo"; fp: "ec.fp"; fq: "ec.fq"; fr: "ec.fr"; fs: "ec.fs"; ft: "ec.ft"; fu: "ec.fu"; fv: "ec.fv"; fw: "ec.fw"; fx: "ec.fx"; fy: "ec.fy"; fz: "ec.fz"; ga: "ec.ga"; gb: "ec.gb"; gc: "ec.gc"; gd: "ec.gd"; ge: "ec.ge"; gf: "ec.gf"; gg: "ec.gg"; gh: "ec.gh"; gi: "ec.gi"; gj: "ec.gj"; gk: "ec.gk"; gl: "ec.gl"; gm: "ec.gm"; gn: "ec.gn"; go: "ec.go"; gp: "ec.gp"; gq: "ec.gq"; gr: "ec.gr"; gs: "ec.gs"; gt: "ec.gt"; gu: "ec.gu"; gv: "ec.gv"; gw: "ec.gw"; gx: "ec.gx"; gy: "ec.gy"; gz: "ec.gz"; ha: "ec.ha"; hb: "ec.hb"; hc: "ec.hc"; hd: "ec.hd"; he: "ec.he"; hf: "ec.hf"; hg: "ec.hg"; hh: "ec.hh"; hi: "ec.hi"; hj: "ec.hj"; hk: "ec.hk"; hl: "ec.hl"; hm: "ec.hm"; hn: "ec.hn"; ho: "ec.ho"; hp: "ec.hp"; hq: "ec.hq"; hr: "ec.hr"; hs: "ec.hs"; ht: "ec.ht"; hu: "ec.hu"; hv: "ec.hv"; hw: "ec.hw"; hx: "ec.hx"; hy: "ec.hy"; hz: "ec.hz"; ia: "ec.ia"; ib: "ec.ib"; ic: "ec.ic"; id: "ec.id"; ie: "ec.ie"; if: "ec.if"; ig: "ec.ig"; ih: "ec.ih"; ii: "ec.ii"; ij: "ec.ij"; ik: "ec.ik"; il: "ec.il"; im: "ec.im"; in: "ec.in"; io: "ec.io"; ip: "ec.ip"; iq: "ec.iq"; ir: "ec.ir"; is: "ec.is"; it: "ec.it"; iu: "ec.iu"; iv: "ec.iv"; iw: "ec.iw"; ix: "ec.ix"; iy: "ec.iy"; iz: "ec.iz"; ja: "ec.ja"; jb: "ec.jb"; jc: "ec.jc"; jd: "ec.jd"; je: "ec.je"; jf: "ec.jf"; jg: "ec.jg"; jh: "ec.jh"; ji: "ec.ji"; jj: "ec.jj"; jk: "ec.jk"; jl: "ec.jl"; jm: "ec.jm"; jn: "ec.jn"; jo: "ec.jo"; jp: "ec.jp"; jq: "ec.jq"; jr: "ec.jr"; js: "ec.js"; jt: "ec.jt"; ju: "ec.ju"; jv: "ec.jv"; jw: "ec.jw"; jx: "ec.jx"; jy: "ec.jy"; jz: "ec.jz"; ka: "ec.ka"; kb: "ec.kb"; kc: "ec.kc"; kd: "ec.kd"; ke: "ec.ke"; kf: "ec.kf"; kg: "ec.kg"; kh: "ec.kh"; ki: "ec.ki"; kj: "ec.kj"; kk: "ec.kk"; kl: "ec.kl"; km: "ec.km"; kn: "ec.kn"; ko: "ec.ko"; kp: "ec.kp"; kq: "ec.kq"; kr: "ec.kr"; ks: "ec.ks"; kt: "ec.kt"; ku: "ec.ku"; kv: "ec.kv"; kw: "ec.kw"; kx: "ec.kx"; ky: "ec.ky"; kz: "ec.kz"; la: "ec.la"; lb: "ec.lb"; lc: "ec.lc"; ld: "ec.ld"; le: "ec.le"; lf: "ec.lf"; lg: "ec.lg"; lh: "ec.lh"; li: "ec.li"; lj: "ec.lj"; lk: "ec.lk"; ll: "ec.ll"; lm: "ec.lm"; ln: "ec.ln"; lo: "ec.lo"; lp: "ec.lp"; lq: "ec.lq"; lr: "ec.lr"; ls: "ec.ls"; lt: "ec.lt"; lu: "ec.lu"; lv: "ec.lv"; lw: "ec.lw"; lx: "ec.lx"; ly: "ec.ly"; lz: "ec.lz"; ma: "ec.ma"; mb: "ec.mb"; mc: "ec.mc"; md: "ec.md"; me: "ec.me"; mf: "ec.mf"; mg: "ec.mg"; mh: "ec.mh"; mi: "ec.mi"; mj: "ec.mj"; mk: "ec.mk"; ml: "ec.ml"; mm: "ec.mm"; mn: "ec.mn"; mo: "ec.mo"; mp: "ec.mp"; mq: "ec.mq"; mr: "ec.mr"; ms: "ec.ms"; mt: "ec.mt"; mu: "ec.mu"; mv: "ec.mv"; mw: "ec.mw"; mx: "ec.mx"; my: "ec.my"; mz: "ec.mz"; na: "ec.na"; nb: "ec.nb"; nc: "ec.nc"; nd: "ec.nd"; ne: "ec.ne"; nf: "ec.nf"; ng: "ec.ng"; nh: "ec.nh"; ni: "ec.ni"; nj: "ec.nj"; nk: "ec.nk"; nl: "ec.nl"; nm: "ec.nm"; nn: "ec.nn"; no: "ec.no"; np: "ec.np"; nq: "ec.nq"; nr: "ec.nr"; ns: "ec.ns"; nt: "ec.nt"; nu: "ec.nu"; nv: "ec.nv"; nw: "ec.nw"; nx: "ec.nx"; ny: "ec.ny"; nz: "ec.nz"; oa: "ec.oa"; ob: "ec.ob"; oc: "ec.oc"; od: "ec.od"; oe: "ec.oe"; of: "ec.of"; og: "ec.og"; oh: "ec.oh"; oi: "ec.oi"; oj: "ec.oj"; ok: "ec.ok"; ol: "ec.ol"; om: "ec.om"; on: "ec.on"; oo: "ec.oo"; op: "ec.op"; oq: "ec.oq"; or: "ec.or"; os: "ec.os"; ot: "ec.ot"; ou: "ec.ou"; ov: "ec.ov"; ow: "ec.ow"; ox: "ec.ox"; oy: "ec.oy"; oz: "ec.oz"; pa: "ec.pa"; pb: "ec.pb"; pc: "ec.pc"; pd: "ec.pd"; pe: "ec.pe"; pf: "ec.pf"; pg: "ec.pg"; ph: "ec.ph"; pi: "ec.pi"; pj: "ec.pj"; pk: "ec.pk"; pl: "ec.pl"; pm: "ec.pm"; pn: "ec.pn"; po: "ec.po"; pp: "ec.pp"; pq: "ec.pq"; pr: "ec.pr"; ps: "ec.ps"; pt: "ec.pt"; pu: "ec.pu"; pv: "ec.pv"; pw: "ec.pw"; px: "ec.px"; py: "ec.py"; pz: "ec.pz"; qa: "ec.qa"; qb: "ec.qb"; qc: "ec.qc"; qd: "ec.qd"; qe: "ec.qe"; qf: "ec.qf"; qg: "ec.qg"; qh: "ec.qh"; qi: "ec.qi"; qj: "ec.qj"; qk: "ec.qk"; ql: "ec.ql"; qm: "ec.qm"; qn: "ec.qn"; qo: "ec.qo"; qp: "ec.qp"; qq: "ec.qq"; qr: "ec.qr"; qs: "ec.qs"; qt: "ec.qt"; qu: "ec.qu"; qv: "ec.qv"; qw: "ec.qw"; qx: "ec.qx"; qy: "ec.qy"; qz: "ec.qz"; ra: "ec.ra"; rb: "ec.rb"; rc: "ec.rc"; rd: "ec.rd"; re: "ec.re"; rf: "ec.rf"; rg: "ec.rg"; rh: "ec.rh"; ri: "ec.ri"; rj: "ec.rj"; rk: "ec.rk"; rl: "ec.rl"; rm: "ec.rm"; rn: "ec.rn"; ro: "ec.ro"; rp: "ec.rp"; rq: "ec.rq"; rr: "ec.rr"; rs: "ec.rs"; rt: "ec.rt"; ru: "ec.ru"; rv: "ec.rv"; rw: "ec.rw"; rx: "ec.rx"; ry: "ec.ry"; rz: "ec.rz"; sa: "ec.sa"; sb: "ec.sb"; sc: "ec.sc"; sd: "ec.sd"; se: "ec.se"; sf: "ec.sf"; sg: "ec.sg"; sh: "ec.sh"; si: "ec.si"; sj: "ec.sj"; sk: "ec.sk"; sl: "ec.sl"; sm: "ec.sm"; sn: "ec.sn"; so: "ec.so"; sp: "ec.sp"; sq: "ec.sq"; sr: "ec.sr"; ss: "ec.ss"; st: "ec.st"; su: "ec.su"; sv: "ec.sv"; sw: "ec.sw"; sx: "ec.sx"; sy: "ec.sy"; sz: "ec.sz"; ta: "ec.ta"; tb: "ec.tb"; tc: "ec.tc"; td: "ec.td"; te: "ec.te"; tf: "ec.tf"; tg: "ec.tg"; th: "ec.th"; ti: "ec.ti"; tj: "ec.tj"; tk: "ec.tk"; tl: "ec.tl"; tm: "ec.tm"; tn: "ec.tn"; to: "ec.to"; tp: "ec.tp"; tq: "ec.tq"; tr: "ec.tr"; ts: "ec.ts"; tt: "ec.tt"; tu: "ec.tu"; tv: "ec.tv"; tw: "ec.tw"; tx: "ec.tx"; ty: "ec.ty"; tz: "ec.tz"; ua: "ec.ua"; ub: "ec.ub"; uc: "ec.uc"; ud: "ec.ud"; ue: "ec.ue"; uf: "ec.uf"; ug: "ec.ug"; uh: "ec.uh"; ui: "ec.ui"; uj: "ec.uj"; uk: "ec.uk"; ul: "ec.ul"; um: "ec.um"; un: "ec.un"; uo: "ec.uo"; up: "ec.up"; uq: "ec.uq"; ur: "ec.ur"; us: "ec.us"; ut: "ec.ut"; uu: "ec.uu"; uv: "ec.uv"; uw: "ec.uw"; ux: "ec.ux"; uy: "ec.uy"; uz: "ec.uz"; va: "ec.va"; vb: "ec.vb"; vc: "ec.vc"; vd: "ec.vd"; ve: "ec.ve"; vf: "ec.vf"; vg: "ec.vg"; vh: "ec.vh"; vi: "ec.vi"; vj: "ec.vj"; vk: "ec.vk"; vl: "ec.vl"; vm: "ec.vm"; vn: "ec.vn"; vo: "ec.vo"; vp: "ec.vp"; vq: "ec.vq"; vr: "ec.vr"; vs: "ec.vs"; vt: "ec.vt"; vu: "ec.vu"; vv: "ec.vv"; vw: "ec.vw"; vx: "ec.vx"; vy: "ec.vy"; vz: "ec.vz"; wa: "ec.wa"; wb: "ec.wb"; wc: "ec.wc"; wd: "ec.wd"; we: "ec.we"; wf: "ec.wf"; wg: "ec.wg"; wh: "ec.wh"; wi: "ec.wi"; wj: "ec.wj"; wk: "ec.wk"; wl: "ec.wl"; wm: "ec.wm"; wn: "ec.wn"; wo: "ec.wo"; wp: "ec.wp"; wq: "ec.wq"; wr: "ec.wr"; ws: "ec.ws"; wt: "ec.wt"; wu: "ec.wu"; wv: "ec.wv"; ww: "ec.ww"; wx: "ec.wx"; wy: "ec.wy"; wz: "ec.wz"; xa: "ec.xa"; xb: "ec.xb"; xc: "ec.xc"; xd: "ec.xd"; xe: "ec.xe"; xf: "ec.xf"; xg: "ec.xg"; xh: "ec.xh"; xi: "ec.xi"; xj: "ec.xj"; xk: "ec.xk"; xl: "ec.xl"; xm: "ec.xm"; xn: "ec.xn"; xo: "ec.xo"; xp: "ec.xp"; xq: "ec.xq"; xr: "ec.xr"; xs: "ec.xs"; xt: "ec.xt"; xu: "ec.xu"; xv: "ec.xv"; xw: "ec.xw"; xx: "ec.xx"; xy: "ec.xy"; xz: "ec.xz"; ya: "ec.ya"; yb: "ec.yb"; yc: "ec.yc"; yd: "ec.yd"; ye: "ec.ye"; yf: "ec.yf"; yg: "ec.yg"; yh: "ec.yh"; yi: "ec.yi"; yj: "ec.yj"; yk: "ec.yk"; yl: "ec.yl"; ym: "ec.ym"; yn: "ec.yn"; yo: "ec.yo"; yp: "ec.yp"; yq: "ec.yq"; yr: "ec.yr"; ys: "ec.ys"; yt: "ec.yt"; yu: "ec.yu"; yv: "ec.yv"; yw: "ec.yw"; yx: "ec.yx"; yy: "ec.yy"; yz: "ec.yz"; za: "ec.za"; zb: "ec.zb"; zc: "ec.zc"; zd: "ec.zd"; ze: "ec.ze"; zf: "ec.zf"; zg: "ec.zg"; zh: "ec.zh"; zi: "ec.zi"; zj: "ec.zj"; zk: "ec.zk"; zl: "ec.zl"; zm: "ec.zm"; zn: "ec.zn"; zo: "ec.zo"; zp: "ec.zp"; zq: "ec.zq"; zr: "ec.zr"; zs: "ec.zs"; zt: "ec.zt"; zu: "ec.zu"; zv: "ec.zv"; zw: "ec.zw"; zx: "ec.zx"; zy: "ec.zy"; zz: "ec.zz"; }; ed: { aa: "ed.aa"; ab: "ed.ab"; ac: "ed.ac"; ad: "ed.ad"; ae: "ed.ae"; af: "ed.af"; ag: "ed.ag"; ah: "ed.ah"; ai: "ed.ai"; aj: "ed.aj"; ak: "ed.ak"; al: "ed.al"; am: "ed.am"; an: "ed.an"; ao: "ed.ao"; ap: "ed.ap"; aq: "ed.aq"; ar: "ed.ar"; as: "ed.as"; at: "ed.at"; au: "ed.au"; av: "ed.av"; aw: "ed.aw"; ax: "ed.ax"; ay: "ed.ay"; az: "ed.az"; ba: "ed.ba"; bb: "ed.bb"; bc: "ed.bc"; bd: "ed.bd"; be: "ed.be"; bf: "ed.bf"; bg: "ed.bg"; bh: "ed.bh"; bi: "ed.bi"; bj: "ed.bj"; bk: "ed.bk"; bl: "ed.bl"; bm: "ed.bm"; bn: "ed.bn"; bo: "ed.bo"; bp: "ed.bp"; bq: "ed.bq"; br: "ed.br"; bs: "ed.bs"; bt: "ed.bt"; bu: "ed.bu"; bv: "ed.bv"; bw: "ed.bw"; bx: "ed.bx"; by: "ed.by"; bz: "ed.bz"; ca: "ed.ca"; cb: "ed.cb"; cc: "ed.cc"; cd: "ed.cd"; ce: "ed.ce"; cf: "ed.cf"; cg: "ed.cg"; ch: "ed.ch"; ci: "ed.ci"; cj: "ed.cj"; ck: "ed.ck"; cl: "ed.cl"; cm: "ed.cm"; cn: "ed.cn"; co: "ed.co"; cp: "ed.cp"; cq: "ed.cq"; cr: "ed.cr"; cs: "ed.cs"; ct: "ed.ct"; cu: "ed.cu"; cv: "ed.cv"; cw: "ed.cw"; cx: "ed.cx"; cy: "ed.cy"; cz: "ed.cz"; da: "ed.da"; db: "ed.db"; dc: "ed.dc"; dd: "ed.dd"; de: "ed.de"; df: "ed.df"; dg: "ed.dg"; dh: "ed.dh"; di: "ed.di"; dj: "ed.dj"; dk: "ed.dk"; dl: "ed.dl"; dm: "ed.dm"; dn: "ed.dn"; do: "ed.do"; dp: "ed.dp"; dq: "ed.dq"; dr: "ed.dr"; ds: "ed.ds"; dt: "ed.dt"; du: "ed.du"; dv: "ed.dv"; dw: "ed.dw"; dx: "ed.dx"; dy: "ed.dy"; dz: "ed.dz"; ea: "ed.ea"; eb: "ed.eb"; ec: "ed.ec"; ed: "ed.ed"; ee: "ed.ee"; ef: "ed.ef"; eg: "ed.eg"; eh: "ed.eh"; ei: "ed.ei"; ej: "ed.ej"; ek: "ed.ek"; el: "ed.el"; em: "ed.em"; en: "ed.en"; eo: "ed.eo"; ep: "ed.ep"; eq: "ed.eq"; er: "ed.er"; es: "ed.es"; et: "ed.et"; eu: "ed.eu"; ev: "ed.ev"; ew: "ed.ew"; ex: "ed.ex"; ey: "ed.ey"; ez: "ed.ez"; fa: "ed.fa"; fb: "ed.fb"; fc: "ed.fc"; fd: "ed.fd"; fe: "ed.fe"; ff: "ed.ff"; fg: "ed.fg"; fh: "ed.fh"; fi: "ed.fi"; fj: "ed.fj"; fk: "ed.fk"; fl: "ed.fl"; fm: "ed.fm"; fn: "ed.fn"; fo: "ed.fo"; fp: "ed.fp"; fq: "ed.fq"; fr: "ed.fr"; fs: "ed.fs"; ft: "ed.ft"; fu: "ed.fu"; fv: "ed.fv"; fw: "ed.fw"; fx: "ed.fx"; fy: "ed.fy"; fz: "ed.fz"; ga: "ed.ga"; gb: "ed.gb"; gc: "ed.gc"; gd: "ed.gd"; ge: "ed.ge"; gf: "ed.gf"; gg: "ed.gg"; gh: "ed.gh"; gi: "ed.gi"; gj: "ed.gj"; gk: "ed.gk"; gl: "ed.gl"; gm: "ed.gm"; gn: "ed.gn"; go: "ed.go"; gp: "ed.gp"; gq: "ed.gq"; gr: "ed.gr"; gs: "ed.gs"; gt: "ed.gt"; gu: "ed.gu"; gv: "ed.gv"; gw: "ed.gw"; gx: "ed.gx"; gy: "ed.gy"; gz: "ed.gz"; ha: "ed.ha"; hb: "ed.hb"; hc: "ed.hc"; hd: "ed.hd"; he: "ed.he"; hf: "ed.hf"; hg: "ed.hg"; hh: "ed.hh"; hi: "ed.hi"; hj: "ed.hj"; hk: "ed.hk"; hl: "ed.hl"; hm: "ed.hm"; hn: "ed.hn"; ho: "ed.ho"; hp: "ed.hp"; hq: "ed.hq"; hr: "ed.hr"; hs: "ed.hs"; ht: "ed.ht"; hu: "ed.hu"; hv: "ed.hv"; hw: "ed.hw"; hx: "ed.hx"; hy: "ed.hy"; hz: "ed.hz"; ia: "ed.ia"; ib: "ed.ib"; ic: "ed.ic"; id: "ed.id"; ie: "ed.ie"; if: "ed.if"; ig: "ed.ig"; ih: "ed.ih"; ii: "ed.ii"; ij: "ed.ij"; ik: "ed.ik"; il: "ed.il"; im: "ed.im"; in: "ed.in"; io: "ed.io"; ip: "ed.ip"; iq: "ed.iq"; ir: "ed.ir"; is: "ed.is"; it: "ed.it"; iu: "ed.iu"; iv: "ed.iv"; iw: "ed.iw"; ix: "ed.ix"; iy: "ed.iy"; iz: "ed.iz"; ja: "ed.ja"; jb: "ed.jb"; jc: "ed.jc"; jd: "ed.jd"; je: "ed.je"; jf: "ed.jf"; jg: "ed.jg"; jh: "ed.jh"; ji: "ed.ji"; jj: "ed.jj"; jk: "ed.jk"; jl: "ed.jl"; jm: "ed.jm"; jn: "ed.jn"; jo: "ed.jo"; jp: "ed.jp"; jq: "ed.jq"; jr: "ed.jr"; js: "ed.js"; jt: "ed.jt"; ju: "ed.ju"; jv: "ed.jv"; jw: "ed.jw"; jx: "ed.jx"; jy: "ed.jy"; jz: "ed.jz"; ka: "ed.ka"; kb: "ed.kb"; kc: "ed.kc"; kd: "ed.kd"; ke: "ed.ke"; kf: "ed.kf"; kg: "ed.kg"; kh: "ed.kh"; ki: "ed.ki"; kj: "ed.kj"; kk: "ed.kk"; kl: "ed.kl"; km: "ed.km"; kn: "ed.kn"; ko: "ed.ko"; kp: "ed.kp"; kq: "ed.kq"; kr: "ed.kr"; ks: "ed.ks"; kt: "ed.kt"; ku: "ed.ku"; kv: "ed.kv"; kw: "ed.kw"; kx: "ed.kx"; ky: "ed.ky"; kz: "ed.kz"; la: "ed.la"; lb: "ed.lb"; lc: "ed.lc"; ld: "ed.ld"; le: "ed.le"; lf: "ed.lf"; lg: "ed.lg"; lh: "ed.lh"; li: "ed.li"; lj: "ed.lj"; lk: "ed.lk"; ll: "ed.ll"; lm: "ed.lm"; ln: "ed.ln"; lo: "ed.lo"; lp: "ed.lp"; lq: "ed.lq"; lr: "ed.lr"; ls: "ed.ls"; lt: "ed.lt"; lu: "ed.lu"; lv: "ed.lv"; lw: "ed.lw"; lx: "ed.lx"; ly: "ed.ly"; lz: "ed.lz"; ma: "ed.ma"; mb: "ed.mb"; mc: "ed.mc"; md: "ed.md"; me: "ed.me"; mf: "ed.mf"; mg: "ed.mg"; mh: "ed.mh"; mi: "ed.mi"; mj: "ed.mj"; mk: "ed.mk"; ml: "ed.ml"; mm: "ed.mm"; mn: "ed.mn"; mo: "ed.mo"; mp: "ed.mp"; mq: "ed.mq"; mr: "ed.mr"; ms: "ed.ms"; mt: "ed.mt"; mu: "ed.mu"; mv: "ed.mv"; mw: "ed.mw"; mx: "ed.mx"; my: "ed.my"; mz: "ed.mz"; na: "ed.na"; nb: "ed.nb"; nc: "ed.nc"; nd: "ed.nd"; ne: "ed.ne"; nf: "ed.nf"; ng: "ed.ng"; nh: "ed.nh"; ni: "ed.ni"; nj: "ed.nj"; nk: "ed.nk"; nl: "ed.nl"; nm: "ed.nm"; nn: "ed.nn"; no: "ed.no"; np: "ed.np"; nq: "ed.nq"; nr: "ed.nr"; ns: "ed.ns"; nt: "ed.nt"; nu: "ed.nu"; nv: "ed.nv"; nw: "ed.nw"; nx: "ed.nx"; ny: "ed.ny"; nz: "ed.nz"; oa: "ed.oa"; ob: "ed.ob"; oc: "ed.oc"; od: "ed.od"; oe: "ed.oe"; of: "ed.of"; og: "ed.og"; oh: "ed.oh"; oi: "ed.oi"; oj: "ed.oj"; ok: "ed.ok"; ol: "ed.ol"; om: "ed.om"; on: "ed.on"; oo: "ed.oo"; op: "ed.op"; oq: "ed.oq"; or: "ed.or"; os: "ed.os"; ot: "ed.ot"; ou: "ed.ou"; ov: "ed.ov"; ow: "ed.ow"; ox: "ed.ox"; oy: "ed.oy"; oz: "ed.oz"; pa: "ed.pa"; pb: "ed.pb"; pc: "ed.pc"; pd: "ed.pd"; pe: "ed.pe"; pf: "ed.pf"; pg: "ed.pg"; ph: "ed.ph"; pi: "ed.pi"; pj: "ed.pj"; pk: "ed.pk"; pl: "ed.pl"; pm: "ed.pm"; pn: "ed.pn"; po: "ed.po"; pp: "ed.pp"; pq: "ed.pq"; pr: "ed.pr"; ps: "ed.ps"; pt: "ed.pt"; pu: "ed.pu"; pv: "ed.pv"; pw: "ed.pw"; px: "ed.px"; py: "ed.py"; pz: "ed.pz"; qa: "ed.qa"; qb: "ed.qb"; qc: "ed.qc"; qd: "ed.qd"; qe: "ed.qe"; qf: "ed.qf"; qg: "ed.qg"; qh: "ed.qh"; qi: "ed.qi"; qj: "ed.qj"; qk: "ed.qk"; ql: "ed.ql"; qm: "ed.qm"; qn: "ed.qn"; qo: "ed.qo"; qp: "ed.qp"; qq: "ed.qq"; qr: "ed.qr"; qs: "ed.qs"; qt: "ed.qt"; qu: "ed.qu"; qv: "ed.qv"; qw: "ed.qw"; qx: "ed.qx"; qy: "ed.qy"; qz: "ed.qz"; ra: "ed.ra"; rb: "ed.rb"; rc: "ed.rc"; rd: "ed.rd"; re: "ed.re"; rf: "ed.rf"; rg: "ed.rg"; rh: "ed.rh"; ri: "ed.ri"; rj: "ed.rj"; rk: "ed.rk"; rl: "ed.rl"; rm: "ed.rm"; rn: "ed.rn"; ro: "ed.ro"; rp: "ed.rp"; rq: "ed.rq"; rr: "ed.rr"; rs: "ed.rs"; rt: "ed.rt"; ru: "ed.ru"; rv: "ed.rv"; rw: "ed.rw"; rx: "ed.rx"; ry: "ed.ry"; rz: "ed.rz"; sa: "ed.sa"; sb: "ed.sb"; sc: "ed.sc"; sd: "ed.sd"; se: "ed.se"; sf: "ed.sf"; sg: "ed.sg"; sh: "ed.sh"; si: "ed.si"; sj: "ed.sj"; sk: "ed.sk"; sl: "ed.sl"; sm: "ed.sm"; sn: "ed.sn"; so: "ed.so"; sp: "ed.sp"; sq: "ed.sq"; sr: "ed.sr"; ss: "ed.ss"; st: "ed.st"; su: "ed.su"; sv: "ed.sv"; sw: "ed.sw"; sx: "ed.sx"; sy: "ed.sy"; sz: "ed.sz"; ta: "ed.ta"; tb: "ed.tb"; tc: "ed.tc"; td: "ed.td"; te: "ed.te"; tf: "ed.tf"; tg: "ed.tg"; th: "ed.th"; ti: "ed.ti"; tj: "ed.tj"; tk: "ed.tk"; tl: "ed.tl"; tm: "ed.tm"; tn: "ed.tn"; to: "ed.to"; tp: "ed.tp"; tq: "ed.tq"; tr: "ed.tr"; ts: "ed.ts"; tt: "ed.tt"; tu: "ed.tu"; tv: "ed.tv"; tw: "ed.tw"; tx: "ed.tx"; ty: "ed.ty"; tz: "ed.tz"; ua: "ed.ua"; ub: "ed.ub"; uc: "ed.uc"; ud: "ed.ud"; ue: "ed.ue"; uf: "ed.uf"; ug: "ed.ug"; uh: "ed.uh"; ui: "ed.ui"; uj: "ed.uj"; uk: "ed.uk"; ul: "ed.ul"; um: "ed.um"; un: "ed.un"; uo: "ed.uo"; up: "ed.up"; uq: "ed.uq"; ur: "ed.ur"; us: "ed.us"; ut: "ed.ut"; uu: "ed.uu"; uv: "ed.uv"; uw: "ed.uw"; ux: "ed.ux"; uy: "ed.uy"; uz: "ed.uz"; va: "ed.va"; vb: "ed.vb"; vc: "ed.vc"; vd: "ed.vd"; ve: "ed.ve"; vf: "ed.vf"; vg: "ed.vg"; vh: "ed.vh"; vi: "ed.vi"; vj: "ed.vj"; vk: "ed.vk"; vl: "ed.vl"; vm: "ed.vm"; vn: "ed.vn"; vo: "ed.vo"; vp: "ed.vp"; vq: "ed.vq"; vr: "ed.vr"; vs: "ed.vs"; vt: "ed.vt"; vu: "ed.vu"; vv: "ed.vv"; vw: "ed.vw"; vx: "ed.vx"; vy: "ed.vy"; vz: "ed.vz"; wa: "ed.wa"; wb: "ed.wb"; wc: "ed.wc"; wd: "ed.wd"; we: "ed.we"; wf: "ed.wf"; wg: "ed.wg"; wh: "ed.wh"; wi: "ed.wi"; wj: "ed.wj"; wk: "ed.wk"; wl: "ed.wl"; wm: "ed.wm"; wn: "ed.wn"; wo: "ed.wo"; wp: "ed.wp"; wq: "ed.wq"; wr: "ed.wr"; ws: "ed.ws"; wt: "ed.wt"; wu: "ed.wu"; wv: "ed.wv"; ww: "ed.ww"; wx: "ed.wx"; wy: "ed.wy"; wz: "ed.wz"; xa: "ed.xa"; xb: "ed.xb"; xc: "ed.xc"; xd: "ed.xd"; xe: "ed.xe"; xf: "ed.xf"; xg: "ed.xg"; xh: "ed.xh"; xi: "ed.xi"; xj: "ed.xj"; xk: "ed.xk"; xl: "ed.xl"; xm: "ed.xm"; xn: "ed.xn"; xo: "ed.xo"; xp: "ed.xp"; xq: "ed.xq"; xr: "ed.xr"; xs: "ed.xs"; xt: "ed.xt"; xu: "ed.xu"; xv: "ed.xv"; xw: "ed.xw"; xx: "ed.xx"; xy: "ed.xy"; xz: "ed.xz"; ya: "ed.ya"; yb: "ed.yb"; yc: "ed.yc"; yd: "ed.yd"; ye: "ed.ye"; yf: "ed.yf"; yg: "ed.yg"; yh: "ed.yh"; yi: "ed.yi"; yj: "ed.yj"; yk: "ed.yk"; yl: "ed.yl"; ym: "ed.ym"; yn: "ed.yn"; yo: "ed.yo"; yp: "ed.yp"; yq: "ed.yq"; yr: "ed.yr"; ys: "ed.ys"; yt: "ed.yt"; yu: "ed.yu"; yv: "ed.yv"; yw: "ed.yw"; yx: "ed.yx"; yy: "ed.yy"; yz: "ed.yz"; za: "ed.za"; zb: "ed.zb"; zc: "ed.zc"; zd: "ed.zd"; ze: "ed.ze"; zf: "ed.zf"; zg: "ed.zg"; zh: "ed.zh"; zi: "ed.zi"; zj: "ed.zj"; zk: "ed.zk"; zl: "ed.zl"; zm: "ed.zm"; zn: "ed.zn"; zo: "ed.zo"; zp: "ed.zp"; zq: "ed.zq"; zr: "ed.zr"; zs: "ed.zs"; zt: "ed.zt"; zu: "ed.zu"; zv: "ed.zv"; zw: "ed.zw"; zx: "ed.zx"; zy: "ed.zy"; zz: "ed.zz"; }; ee: { aa: "ee.aa"; ab: "ee.ab"; ac: "ee.ac"; ad: "ee.ad"; ae: "ee.ae"; af: "ee.af"; ag: "ee.ag"; ah: "ee.ah"; ai: "ee.ai"; aj: "ee.aj"; ak: "ee.ak"; al: "ee.al"; am: "ee.am"; an: "ee.an"; ao: "ee.ao"; ap: "ee.ap"; aq: "ee.aq"; ar: "ee.ar"; as: "ee.as"; at: "ee.at"; au: "ee.au"; av: "ee.av"; aw: "ee.aw"; ax: "ee.ax"; ay: "ee.ay"; az: "ee.az"; ba: "ee.ba"; bb: "ee.bb"; bc: "ee.bc"; bd: "ee.bd"; be: "ee.be"; bf: "ee.bf"; bg: "ee.bg"; bh: "ee.bh"; bi: "ee.bi"; bj: "ee.bj"; bk: "ee.bk"; bl: "ee.bl"; bm: "ee.bm"; bn: "ee.bn"; bo: "ee.bo"; bp: "ee.bp"; bq: "ee.bq"; br: "ee.br"; bs: "ee.bs"; bt: "ee.bt"; bu: "ee.bu"; bv: "ee.bv"; bw: "ee.bw"; bx: "ee.bx"; by: "ee.by"; bz: "ee.bz"; ca: "ee.ca"; cb: "ee.cb"; cc: "ee.cc"; cd: "ee.cd"; ce: "ee.ce"; cf: "ee.cf"; cg: "ee.cg"; ch: "ee.ch"; ci: "ee.ci"; cj: "ee.cj"; ck: "ee.ck"; cl: "ee.cl"; cm: "ee.cm"; cn: "ee.cn"; co: "ee.co"; cp: "ee.cp"; cq: "ee.cq"; cr: "ee.cr"; cs: "ee.cs"; ct: "ee.ct"; cu: "ee.cu"; cv: "ee.cv"; cw: "ee.cw"; cx: "ee.cx"; cy: "ee.cy"; cz: "ee.cz"; da: "ee.da"; db: "ee.db"; dc: "ee.dc"; dd: "ee.dd"; de: "ee.de"; df: "ee.df"; dg: "ee.dg"; dh: "ee.dh"; di: "ee.di"; dj: "ee.dj"; dk: "ee.dk"; dl: "ee.dl"; dm: "ee.dm"; dn: "ee.dn"; do: "ee.do"; dp: "ee.dp"; dq: "ee.dq"; dr: "ee.dr"; ds: "ee.ds"; dt: "ee.dt"; du: "ee.du"; dv: "ee.dv"; dw: "ee.dw"; dx: "ee.dx"; dy: "ee.dy"; dz: "ee.dz"; ea: "ee.ea"; eb: "ee.eb"; ec: "ee.ec"; ed: "ee.ed"; ee: "ee.ee"; ef: "ee.ef"; eg: "ee.eg"; eh: "ee.eh"; ei: "ee.ei"; ej: "ee.ej"; ek: "ee.ek"; el: "ee.el"; em: "ee.em"; en: "ee.en"; eo: "ee.eo"; ep: "ee.ep"; eq: "ee.eq"; er: "ee.er"; es: "ee.es"; et: "ee.et"; eu: "ee.eu"; ev: "ee.ev"; ew: "ee.ew"; ex: "ee.ex"; ey: "ee.ey"; ez: "ee.ez"; fa: "ee.fa"; fb: "ee.fb"; fc: "ee.fc"; fd: "ee.fd"; fe: "ee.fe"; ff: "ee.ff"; fg: "ee.fg"; fh: "ee.fh"; fi: "ee.fi"; fj: "ee.fj"; fk: "ee.fk"; fl: "ee.fl"; fm: "ee.fm"; fn: "ee.fn"; fo: "ee.fo"; fp: "ee.fp"; fq: "ee.fq"; fr: "ee.fr"; fs: "ee.fs"; ft: "ee.ft"; fu: "ee.fu"; fv: "ee.fv"; fw: "ee.fw"; fx: "ee.fx"; fy: "ee.fy"; fz: "ee.fz"; ga: "ee.ga"; gb: "ee.gb"; gc: "ee.gc"; gd: "ee.gd"; ge: "ee.ge"; gf: "ee.gf"; gg: "ee.gg"; gh: "ee.gh"; gi: "ee.gi"; gj: "ee.gj"; gk: "ee.gk"; gl: "ee.gl"; gm: "ee.gm"; gn: "ee.gn"; go: "ee.go"; gp: "ee.gp"; gq: "ee.gq"; gr: "ee.gr"; gs: "ee.gs"; gt: "ee.gt"; gu: "ee.gu"; gv: "ee.gv"; gw: "ee.gw"; gx: "ee.gx"; gy: "ee.gy"; gz: "ee.gz"; ha: "ee.ha"; hb: "ee.hb"; hc: "ee.hc"; hd: "ee.hd"; he: "ee.he"; hf: "ee.hf"; hg: "ee.hg"; hh: "ee.hh"; hi: "ee.hi"; hj: "ee.hj"; hk: "ee.hk"; hl: "ee.hl"; hm: "ee.hm"; hn: "ee.hn"; ho: "ee.ho"; hp: "ee.hp"; hq: "ee.hq"; hr: "ee.hr"; hs: "ee.hs"; ht: "ee.ht"; hu: "ee.hu"; hv: "ee.hv"; hw: "ee.hw"; hx: "ee.hx"; hy: "ee.hy"; hz: "ee.hz"; ia: "ee.ia"; ib: "ee.ib"; ic: "ee.ic"; id: "ee.id"; ie: "ee.ie"; if: "ee.if"; ig: "ee.ig"; ih: "ee.ih"; ii: "ee.ii"; ij: "ee.ij"; ik: "ee.ik"; il: "ee.il"; im: "ee.im"; in: "ee.in"; io: "ee.io"; ip: "ee.ip"; iq: "ee.iq"; ir: "ee.ir"; is: "ee.is"; it: "ee.it"; iu: "ee.iu"; iv: "ee.iv"; iw: "ee.iw"; ix: "ee.ix"; iy: "ee.iy"; iz: "ee.iz"; ja: "ee.ja"; jb: "ee.jb"; jc: "ee.jc"; jd: "ee.jd"; je: "ee.je"; jf: "ee.jf"; jg: "ee.jg"; jh: "ee.jh"; ji: "ee.ji"; jj: "ee.jj"; jk: "ee.jk"; jl: "ee.jl"; jm: "ee.jm"; jn: "ee.jn"; jo: "ee.jo"; jp: "ee.jp"; jq: "ee.jq"; jr: "ee.jr"; js: "ee.js"; jt: "ee.jt"; ju: "ee.ju"; jv: "ee.jv"; jw: "ee.jw"; jx: "ee.jx"; jy: "ee.jy"; jz: "ee.jz"; ka: "ee.ka"; kb: "ee.kb"; kc: "ee.kc"; kd: "ee.kd"; ke: "ee.ke"; kf: "ee.kf"; kg: "ee.kg"; kh: "ee.kh"; ki: "ee.ki"; kj: "ee.kj"; kk: "ee.kk"; kl: "ee.kl"; km: "ee.km"; kn: "ee.kn"; ko: "ee.ko"; kp: "ee.kp"; kq: "ee.kq"; kr: "ee.kr"; ks: "ee.ks"; kt: "ee.kt"; ku: "ee.ku"; kv: "ee.kv"; kw: "ee.kw"; kx: "ee.kx"; ky: "ee.ky"; kz: "ee.kz"; la: "ee.la"; lb: "ee.lb"; lc: "ee.lc"; ld: "ee.ld"; le: "ee.le"; lf: "ee.lf"; lg: "ee.lg"; lh: "ee.lh"; li: "ee.li"; lj: "ee.lj"; lk: "ee.lk"; ll: "ee.ll"; lm: "ee.lm"; ln: "ee.ln"; lo: "ee.lo"; lp: "ee.lp"; lq: "ee.lq"; lr: "ee.lr"; ls: "ee.ls"; lt: "ee.lt"; lu: "ee.lu"; lv: "ee.lv"; lw: "ee.lw"; lx: "ee.lx"; ly: "ee.ly"; lz: "ee.lz"; ma: "ee.ma"; mb: "ee.mb"; mc: "ee.mc"; md: "ee.md"; me: "ee.me"; mf: "ee.mf"; mg: "ee.mg"; mh: "ee.mh"; mi: "ee.mi"; mj: "ee.mj"; mk: "ee.mk"; ml: "ee.ml"; mm: "ee.mm"; mn: "ee.mn"; mo: "ee.mo"; mp: "ee.mp"; mq: "ee.mq"; mr: "ee.mr"; ms: "ee.ms"; mt: "ee.mt"; mu: "ee.mu"; mv: "ee.mv"; mw: "ee.mw"; mx: "ee.mx"; my: "ee.my"; mz: "ee.mz"; na: "ee.na"; nb: "ee.nb"; nc: "ee.nc"; nd: "ee.nd"; ne: "ee.ne"; nf: "ee.nf"; ng: "ee.ng"; nh: "ee.nh"; ni: "ee.ni"; nj: "ee.nj"; nk: "ee.nk"; nl: "ee.nl"; nm: "ee.nm"; nn: "ee.nn"; no: "ee.no"; np: "ee.np"; nq: "ee.nq"; nr: "ee.nr"; ns: "ee.ns"; nt: "ee.nt"; nu: "ee.nu"; nv: "ee.nv"; nw: "ee.nw"; nx: "ee.nx"; ny: "ee.ny"; nz: "ee.nz"; oa: "ee.oa"; ob: "ee.ob"; oc: "ee.oc"; od: "ee.od"; oe: "ee.oe"; of: "ee.of"; og: "ee.og"; oh: "ee.oh"; oi: "ee.oi"; oj: "ee.oj"; ok: "ee.ok"; ol: "ee.ol"; om: "ee.om"; on: "ee.on"; oo: "ee.oo"; op: "ee.op"; oq: "ee.oq"; or: "ee.or"; os: "ee.os"; ot: "ee.ot"; ou: "ee.ou"; ov: "ee.ov"; ow: "ee.ow"; ox: "ee.ox"; oy: "ee.oy"; oz: "ee.oz"; pa: "ee.pa"; pb: "ee.pb"; pc: "ee.pc"; pd: "ee.pd"; pe: "ee.pe"; pf: "ee.pf"; pg: "ee.pg"; ph: "ee.ph"; pi: "ee.pi"; pj: "ee.pj"; pk: "ee.pk"; pl: "ee.pl"; pm: "ee.pm"; pn: "ee.pn"; po: "ee.po"; pp: "ee.pp"; pq: "ee.pq"; pr: "ee.pr"; ps: "ee.ps"; pt: "ee.pt"; pu: "ee.pu"; pv: "ee.pv"; pw: "ee.pw"; px: "ee.px"; py: "ee.py"; pz: "ee.pz"; qa: "ee.qa"; qb: "ee.qb"; qc: "ee.qc"; qd: "ee.qd"; qe: "ee.qe"; qf: "ee.qf"; qg: "ee.qg"; qh: "ee.qh"; qi: "ee.qi"; qj: "ee.qj"; qk: "ee.qk"; ql: "ee.ql"; qm: "ee.qm"; qn: "ee.qn"; qo: "ee.qo"; qp: "ee.qp"; qq: "ee.qq"; qr: "ee.qr"; qs: "ee.qs"; qt: "ee.qt"; qu: "ee.qu"; qv: "ee.qv"; qw: "ee.qw"; qx: "ee.qx"; qy: "ee.qy"; qz: "ee.qz"; ra: "ee.ra"; rb: "ee.rb"; rc: "ee.rc"; rd: "ee.rd"; re: "ee.re"; rf: "ee.rf"; rg: "ee.rg"; rh: "ee.rh"; ri: "ee.ri"; rj: "ee.rj"; rk: "ee.rk"; rl: "ee.rl"; rm: "ee.rm"; rn: "ee.rn"; ro: "ee.ro"; rp: "ee.rp"; rq: "ee.rq"; rr: "ee.rr"; rs: "ee.rs"; rt: "ee.rt"; ru: "ee.ru"; rv: "ee.rv"; rw: "ee.rw"; rx: "ee.rx"; ry: "ee.ry"; rz: "ee.rz"; sa: "ee.sa"; sb: "ee.sb"; sc: "ee.sc"; sd: "ee.sd"; se: "ee.se"; sf: "ee.sf"; sg: "ee.sg"; sh: "ee.sh"; si: "ee.si"; sj: "ee.sj"; sk: "ee.sk"; sl: "ee.sl"; sm: "ee.sm"; sn: "ee.sn"; so: "ee.so"; sp: "ee.sp"; sq: "ee.sq"; sr: "ee.sr"; ss: "ee.ss"; st: "ee.st"; su: "ee.su"; sv: "ee.sv"; sw: "ee.sw"; sx: "ee.sx"; sy: "ee.sy"; sz: "ee.sz"; ta: "ee.ta"; tb: "ee.tb"; tc: "ee.tc"; td: "ee.td"; te: "ee.te"; tf: "ee.tf"; tg: "ee.tg"; th: "ee.th"; ti: "ee.ti"; tj: "ee.tj"; tk: "ee.tk"; tl: "ee.tl"; tm: "ee.tm"; tn: "ee.tn"; to: "ee.to"; tp: "ee.tp"; tq: "ee.tq"; tr: "ee.tr"; ts: "ee.ts"; tt: "ee.tt"; tu: "ee.tu"; tv: "ee.tv"; tw: "ee.tw"; tx: "ee.tx"; ty: "ee.ty"; tz: "ee.tz"; ua: "ee.ua"; ub: "ee.ub"; uc: "ee.uc"; ud: "ee.ud"; ue: "ee.ue"; uf: "ee.uf"; ug: "ee.ug"; uh: "ee.uh"; ui: "ee.ui"; uj: "ee.uj"; uk: "ee.uk"; ul: "ee.ul"; um: "ee.um"; un: "ee.un"; uo: "ee.uo"; up: "ee.up"; uq: "ee.uq"; ur: "ee.ur"; us: "ee.us"; ut: "ee.ut"; uu: "ee.uu"; uv: "ee.uv"; uw: "ee.uw"; ux: "ee.ux"; uy: "ee.uy"; uz: "ee.uz"; va: "ee.va"; vb: "ee.vb"; vc: "ee.vc"; vd: "ee.vd"; ve: "ee.ve"; vf: "ee.vf"; vg: "ee.vg"; vh: "ee.vh"; vi: "ee.vi"; vj: "ee.vj"; vk: "ee.vk"; vl: "ee.vl"; vm: "ee.vm"; vn: "ee.vn"; vo: "ee.vo"; vp: "ee.vp"; vq: "ee.vq"; vr: "ee.vr"; vs: "ee.vs"; vt: "ee.vt"; vu: "ee.vu"; vv: "ee.vv"; vw: "ee.vw"; vx: "ee.vx"; vy: "ee.vy"; vz: "ee.vz"; wa: "ee.wa"; wb: "ee.wb"; wc: "ee.wc"; wd: "ee.wd"; we: "ee.we"; wf: "ee.wf"; wg: "ee.wg"; wh: "ee.wh"; wi: "ee.wi"; wj: "ee.wj"; wk: "ee.wk"; wl: "ee.wl"; wm: "ee.wm"; wn: "ee.wn"; wo: "ee.wo"; wp: "ee.wp"; wq: "ee.wq"; wr: "ee.wr"; ws: "ee.ws"; wt: "ee.wt"; wu: "ee.wu"; wv: "ee.wv"; ww: "ee.ww"; wx: "ee.wx"; wy: "ee.wy"; wz: "ee.wz"; xa: "ee.xa"; xb: "ee.xb"; xc: "ee.xc"; xd: "ee.xd"; xe: "ee.xe"; xf: "ee.xf"; xg: "ee.xg"; xh: "ee.xh"; xi: "ee.xi"; xj: "ee.xj"; xk: "ee.xk"; xl: "ee.xl"; xm: "ee.xm"; xn: "ee.xn"; xo: "ee.xo"; xp: "ee.xp"; xq: "ee.xq"; xr: "ee.xr"; xs: "ee.xs"; xt: "ee.xt"; xu: "ee.xu"; xv: "ee.xv"; xw: "ee.xw"; xx: "ee.xx"; xy: "ee.xy"; xz: "ee.xz"; ya: "ee.ya"; yb: "ee.yb"; yc: "ee.yc"; yd: "ee.yd"; ye: "ee.ye"; yf: "ee.yf"; yg: "ee.yg"; yh: "ee.yh"; yi: "ee.yi"; yj: "ee.yj"; yk: "ee.yk"; yl: "ee.yl"; ym: "ee.ym"; yn: "ee.yn"; yo: "ee.yo"; yp: "ee.yp"; yq: "ee.yq"; yr: "ee.yr"; ys: "ee.ys"; yt: "ee.yt"; yu: "ee.yu"; yv: "ee.yv"; yw: "ee.yw"; yx: "ee.yx"; yy: "ee.yy"; yz: "ee.yz"; za: "ee.za"; zb: "ee.zb"; zc: "ee.zc"; zd: "ee.zd"; ze: "ee.ze"; zf: "ee.zf"; zg: "ee.zg"; zh: "ee.zh"; zi: "ee.zi"; zj: "ee.zj"; zk: "ee.zk"; zl: "ee.zl"; zm: "ee.zm"; zn: "ee.zn"; zo: "ee.zo"; zp: "ee.zp"; zq: "ee.zq"; zr: "ee.zr"; zs: "ee.zs"; zt: "ee.zt"; zu: "ee.zu"; zv: "ee.zv"; zw: "ee.zw"; zx: "ee.zx"; zy: "ee.zy"; zz: "ee.zz"; }; ef: { aa: "ef.aa"; ab: "ef.ab"; ac: "ef.ac"; ad: "ef.ad"; ae: "ef.ae"; af: "ef.af"; ag: "ef.ag"; ah: "ef.ah"; ai: "ef.ai"; aj: "ef.aj"; ak: "ef.ak"; al: "ef.al"; am: "ef.am"; an: "ef.an"; ao: "ef.ao"; ap: "ef.ap"; aq: "ef.aq"; ar: "ef.ar"; as: "ef.as"; at: "ef.at"; au: "ef.au"; av: "ef.av"; aw: "ef.aw"; ax: "ef.ax"; ay: "ef.ay"; az: "ef.az"; ba: "ef.ba"; bb: "ef.bb"; bc: "ef.bc"; bd: "ef.bd"; be: "ef.be"; bf: "ef.bf"; bg: "ef.bg"; bh: "ef.bh"; bi: "ef.bi"; bj: "ef.bj"; bk: "ef.bk"; bl: "ef.bl"; bm: "ef.bm"; bn: "ef.bn"; bo: "ef.bo"; bp: "ef.bp"; bq: "ef.bq"; br: "ef.br"; bs: "ef.bs"; bt: "ef.bt"; bu: "ef.bu"; bv: "ef.bv"; bw: "ef.bw"; bx: "ef.bx"; by: "ef.by"; bz: "ef.bz"; ca: "ef.ca"; cb: "ef.cb"; cc: "ef.cc"; cd: "ef.cd"; ce: "ef.ce"; cf: "ef.cf"; cg: "ef.cg"; ch: "ef.ch"; ci: "ef.ci"; cj: "ef.cj"; ck: "ef.ck"; cl: "ef.cl"; cm: "ef.cm"; cn: "ef.cn"; co: "ef.co"; cp: "ef.cp"; cq: "ef.cq"; cr: "ef.cr"; cs: "ef.cs"; ct: "ef.ct"; cu: "ef.cu"; cv: "ef.cv"; cw: "ef.cw"; cx: "ef.cx"; cy: "ef.cy"; cz: "ef.cz"; da: "ef.da"; db: "ef.db"; dc: "ef.dc"; dd: "ef.dd"; de: "ef.de"; df: "ef.df"; dg: "ef.dg"; dh: "ef.dh"; di: "ef.di"; dj: "ef.dj"; dk: "ef.dk"; dl: "ef.dl"; dm: "ef.dm"; dn: "ef.dn"; do: "ef.do"; dp: "ef.dp"; dq: "ef.dq"; dr: "ef.dr"; ds: "ef.ds"; dt: "ef.dt"; du: "ef.du"; dv: "ef.dv"; dw: "ef.dw"; dx: "ef.dx"; dy: "ef.dy"; dz: "ef.dz"; ea: "ef.ea"; eb: "ef.eb"; ec: "ef.ec"; ed: "ef.ed"; ee: "ef.ee"; ef: "ef.ef"; eg: "ef.eg"; eh: "ef.eh"; ei: "ef.ei"; ej: "ef.ej"; ek: "ef.ek"; el: "ef.el"; em: "ef.em"; en: "ef.en"; eo: "ef.eo"; ep: "ef.ep"; eq: "ef.eq"; er: "ef.er"; es: "ef.es"; et: "ef.et"; eu: "ef.eu"; ev: "ef.ev"; ew: "ef.ew"; ex: "ef.ex"; ey: "ef.ey"; ez: "ef.ez"; fa: "ef.fa"; fb: "ef.fb"; fc: "ef.fc"; fd: "ef.fd"; fe: "ef.fe"; ff: "ef.ff"; fg: "ef.fg"; fh: "ef.fh"; fi: "ef.fi"; fj: "ef.fj"; fk: "ef.fk"; fl: "ef.fl"; fm: "ef.fm"; fn: "ef.fn"; fo: "ef.fo"; fp: "ef.fp"; fq: "ef.fq"; fr: "ef.fr"; fs: "ef.fs"; ft: "ef.ft"; fu: "ef.fu"; fv: "ef.fv"; fw: "ef.fw"; fx: "ef.fx"; fy: "ef.fy"; fz: "ef.fz"; ga: "ef.ga"; gb: "ef.gb"; gc: "ef.gc"; gd: "ef.gd"; ge: "ef.ge"; gf: "ef.gf"; gg: "ef.gg"; gh: "ef.gh"; gi: "ef.gi"; gj: "ef.gj"; gk: "ef.gk"; gl: "ef.gl"; gm: "ef.gm"; gn: "ef.gn"; go: "ef.go"; gp: "ef.gp"; gq: "ef.gq"; gr: "ef.gr"; gs: "ef.gs"; gt: "ef.gt"; gu: "ef.gu"; gv: "ef.gv"; gw: "ef.gw"; gx: "ef.gx"; gy: "ef.gy"; gz: "ef.gz"; ha: "ef.ha"; hb: "ef.hb"; hc: "ef.hc"; hd: "ef.hd"; he: "ef.he"; hf: "ef.hf"; hg: "ef.hg"; hh: "ef.hh"; hi: "ef.hi"; hj: "ef.hj"; hk: "ef.hk"; hl: "ef.hl"; hm: "ef.hm"; hn: "ef.hn"; ho: "ef.ho"; hp: "ef.hp"; hq: "ef.hq"; hr: "ef.hr"; hs: "ef.hs"; ht: "ef.ht"; hu: "ef.hu"; hv: "ef.hv"; hw: "ef.hw"; hx: "ef.hx"; hy: "ef.hy"; hz: "ef.hz"; ia: "ef.ia"; ib: "ef.ib"; ic: "ef.ic"; id: "ef.id"; ie: "ef.ie"; if: "ef.if"; ig: "ef.ig"; ih: "ef.ih"; ii: "ef.ii"; ij: "ef.ij"; ik: "ef.ik"; il: "ef.il"; im: "ef.im"; in: "ef.in"; io: "ef.io"; ip: "ef.ip"; iq: "ef.iq"; ir: "ef.ir"; is: "ef.is"; it: "ef.it"; iu: "ef.iu"; iv: "ef.iv"; iw: "ef.iw"; ix: "ef.ix"; iy: "ef.iy"; iz: "ef.iz"; ja: "ef.ja"; jb: "ef.jb"; jc: "ef.jc"; jd: "ef.jd"; je: "ef.je"; jf: "ef.jf"; jg: "ef.jg"; jh: "ef.jh"; ji: "ef.ji"; jj: "ef.jj"; jk: "ef.jk"; jl: "ef.jl"; jm: "ef.jm"; jn: "ef.jn"; jo: "ef.jo"; jp: "ef.jp"; jq: "ef.jq"; jr: "ef.jr"; js: "ef.js"; jt: "ef.jt"; ju: "ef.ju"; jv: "ef.jv"; jw: "ef.jw"; jx: "ef.jx"; jy: "ef.jy"; jz: "ef.jz"; ka: "ef.ka"; kb: "ef.kb"; kc: "ef.kc"; kd: "ef.kd"; ke: "ef.ke"; kf: "ef.kf"; kg: "ef.kg"; kh: "ef.kh"; ki: "ef.ki"; kj: "ef.kj"; kk: "ef.kk"; kl: "ef.kl"; km: "ef.km"; kn: "ef.kn"; ko: "ef.ko"; kp: "ef.kp"; kq: "ef.kq"; kr: "ef.kr"; ks: "ef.ks"; kt: "ef.kt"; ku: "ef.ku"; kv: "ef.kv"; kw: "ef.kw"; kx: "ef.kx"; ky: "ef.ky"; kz: "ef.kz"; la: "ef.la"; lb: "ef.lb"; lc: "ef.lc"; ld: "ef.ld"; le: "ef.le"; lf: "ef.lf"; lg: "ef.lg"; lh: "ef.lh"; li: "ef.li"; lj: "ef.lj"; lk: "ef.lk"; ll: "ef.ll"; lm: "ef.lm"; ln: "ef.ln"; lo: "ef.lo"; lp: "ef.lp"; lq: "ef.lq"; lr: "ef.lr"; ls: "ef.ls"; lt: "ef.lt"; lu: "ef.lu"; lv: "ef.lv"; lw: "ef.lw"; lx: "ef.lx"; ly: "ef.ly"; lz: "ef.lz"; ma: "ef.ma"; mb: "ef.mb"; mc: "ef.mc"; md: "ef.md"; me: "ef.me"; mf: "ef.mf"; mg: "ef.mg"; mh: "ef.mh"; mi: "ef.mi"; mj: "ef.mj"; mk: "ef.mk"; ml: "ef.ml"; mm: "ef.mm"; mn: "ef.mn"; mo: "ef.mo"; mp: "ef.mp"; mq: "ef.mq"; mr: "ef.mr"; ms: "ef.ms"; mt: "ef.mt"; mu: "ef.mu"; mv: "ef.mv"; mw: "ef.mw"; mx: "ef.mx"; my: "ef.my"; mz: "ef.mz"; na: "ef.na"; nb: "ef.nb"; nc: "ef.nc"; nd: "ef.nd"; ne: "ef.ne"; nf: "ef.nf"; ng: "ef.ng"; nh: "ef.nh"; ni: "ef.ni"; nj: "ef.nj"; nk: "ef.nk"; nl: "ef.nl"; nm: "ef.nm"; nn: "ef.nn"; no: "ef.no"; np: "ef.np"; nq: "ef.nq"; nr: "ef.nr"; ns: "ef.ns"; nt: "ef.nt"; nu: "ef.nu"; nv: "ef.nv"; nw: "ef.nw"; nx: "ef.nx"; ny: "ef.ny"; nz: "ef.nz"; oa: "ef.oa"; ob: "ef.ob"; oc: "ef.oc"; od: "ef.od"; oe: "ef.oe"; of: "ef.of"; og: "ef.og"; oh: "ef.oh"; oi: "ef.oi"; oj: "ef.oj"; ok: "ef.ok"; ol: "ef.ol"; om: "ef.om"; on: "ef.on"; oo: "ef.oo"; op: "ef.op"; oq: "ef.oq"; or: "ef.or"; os: "ef.os"; ot: "ef.ot"; ou: "ef.ou"; ov: "ef.ov"; ow: "ef.ow"; ox: "ef.ox"; oy: "ef.oy"; oz: "ef.oz"; pa: "ef.pa"; pb: "ef.pb"; pc: "ef.pc"; pd: "ef.pd"; pe: "ef.pe"; pf: "ef.pf"; pg: "ef.pg"; ph: "ef.ph"; pi: "ef.pi"; pj: "ef.pj"; pk: "ef.pk"; pl: "ef.pl"; pm: "ef.pm"; pn: "ef.pn"; po: "ef.po"; pp: "ef.pp"; pq: "ef.pq"; pr: "ef.pr"; ps: "ef.ps"; pt: "ef.pt"; pu: "ef.pu"; pv: "ef.pv"; pw: "ef.pw"; px: "ef.px"; py: "ef.py"; pz: "ef.pz"; qa: "ef.qa"; qb: "ef.qb"; qc: "ef.qc"; qd: "ef.qd"; qe: "ef.qe"; qf: "ef.qf"; qg: "ef.qg"; qh: "ef.qh"; qi: "ef.qi"; qj: "ef.qj"; qk: "ef.qk"; ql: "ef.ql"; qm: "ef.qm"; qn: "ef.qn"; qo: "ef.qo"; qp: "ef.qp"; qq: "ef.qq"; qr: "ef.qr"; qs: "ef.qs"; qt: "ef.qt"; qu: "ef.qu"; qv: "ef.qv"; qw: "ef.qw"; qx: "ef.qx"; qy: "ef.qy"; qz: "ef.qz"; ra: "ef.ra"; rb: "ef.rb"; rc: "ef.rc"; rd: "ef.rd"; re: "ef.re"; rf: "ef.rf"; rg: "ef.rg"; rh: "ef.rh"; ri: "ef.ri"; rj: "ef.rj"; rk: "ef.rk"; rl: "ef.rl"; rm: "ef.rm"; rn: "ef.rn"; ro: "ef.ro"; rp: "ef.rp"; rq: "ef.rq"; rr: "ef.rr"; rs: "ef.rs"; rt: "ef.rt"; ru: "ef.ru"; rv: "ef.rv"; rw: "ef.rw"; rx: "ef.rx"; ry: "ef.ry"; rz: "ef.rz"; sa: "ef.sa"; sb: "ef.sb"; sc: "ef.sc"; sd: "ef.sd"; se: "ef.se"; sf: "ef.sf"; sg: "ef.sg"; sh: "ef.sh"; si: "ef.si"; sj: "ef.sj"; sk: "ef.sk"; sl: "ef.sl"; sm: "ef.sm"; sn: "ef.sn"; so: "ef.so"; sp: "ef.sp"; sq: "ef.sq"; sr: "ef.sr"; ss: "ef.ss"; st: "ef.st"; su: "ef.su"; sv: "ef.sv"; sw: "ef.sw"; sx: "ef.sx"; sy: "ef.sy"; sz: "ef.sz"; ta: "ef.ta"; tb: "ef.tb"; tc: "ef.tc"; td: "ef.td"; te: "ef.te"; tf: "ef.tf"; tg: "ef.tg"; th: "ef.th"; ti: "ef.ti"; tj: "ef.tj"; tk: "ef.tk"; tl: "ef.tl"; tm: "ef.tm"; tn: "ef.tn"; to: "ef.to"; tp: "ef.tp"; tq: "ef.tq"; tr: "ef.tr"; ts: "ef.ts"; tt: "ef.tt"; tu: "ef.tu"; tv: "ef.tv"; tw: "ef.tw"; tx: "ef.tx"; ty: "ef.ty"; tz: "ef.tz"; ua: "ef.ua"; ub: "ef.ub"; uc: "ef.uc"; ud: "ef.ud"; ue: "ef.ue"; uf: "ef.uf"; ug: "ef.ug"; uh: "ef.uh"; ui: "ef.ui"; uj: "ef.uj"; uk: "ef.uk"; ul: "ef.ul"; um: "ef.um"; un: "ef.un"; uo: "ef.uo"; up: "ef.up"; uq: "ef.uq"; ur: "ef.ur"; us: "ef.us"; ut: "ef.ut"; uu: "ef.uu"; uv: "ef.uv"; uw: "ef.uw"; ux: "ef.ux"; uy: "ef.uy"; uz: "ef.uz"; va: "ef.va"; vb: "ef.vb"; vc: "ef.vc"; vd: "ef.vd"; ve: "ef.ve"; vf: "ef.vf"; vg: "ef.vg"; vh: "ef.vh"; vi: "ef.vi"; vj: "ef.vj"; vk: "ef.vk"; vl: "ef.vl"; vm: "ef.vm"; vn: "ef.vn"; vo: "ef.vo"; vp: "ef.vp"; vq: "ef.vq"; vr: "ef.vr"; vs: "ef.vs"; vt: "ef.vt"; vu: "ef.vu"; vv: "ef.vv"; vw: "ef.vw"; vx: "ef.vx"; vy: "ef.vy"; vz: "ef.vz"; wa: "ef.wa"; wb: "ef.wb"; wc: "ef.wc"; wd: "ef.wd"; we: "ef.we"; wf: "ef.wf"; wg: "ef.wg"; wh: "ef.wh"; wi: "ef.wi"; wj: "ef.wj"; wk: "ef.wk"; wl: "ef.wl"; wm: "ef.wm"; wn: "ef.wn"; wo: "ef.wo"; wp: "ef.wp"; wq: "ef.wq"; wr: "ef.wr"; ws: "ef.ws"; wt: "ef.wt"; wu: "ef.wu"; wv: "ef.wv"; ww: "ef.ww"; wx: "ef.wx"; wy: "ef.wy"; wz: "ef.wz"; xa: "ef.xa"; xb: "ef.xb"; xc: "ef.xc"; xd: "ef.xd"; xe: "ef.xe"; xf: "ef.xf"; xg: "ef.xg"; xh: "ef.xh"; xi: "ef.xi"; xj: "ef.xj"; xk: "ef.xk"; xl: "ef.xl"; xm: "ef.xm"; xn: "ef.xn"; xo: "ef.xo"; xp: "ef.xp"; xq: "ef.xq"; xr: "ef.xr"; xs: "ef.xs"; xt: "ef.xt"; xu: "ef.xu"; xv: "ef.xv"; xw: "ef.xw"; xx: "ef.xx"; xy: "ef.xy"; xz: "ef.xz"; ya: "ef.ya"; yb: "ef.yb"; yc: "ef.yc"; yd: "ef.yd"; ye: "ef.ye"; yf: "ef.yf"; yg: "ef.yg"; yh: "ef.yh"; yi: "ef.yi"; yj: "ef.yj"; yk: "ef.yk"; yl: "ef.yl"; ym: "ef.ym"; yn: "ef.yn"; yo: "ef.yo"; yp: "ef.yp"; yq: "ef.yq"; yr: "ef.yr"; ys: "ef.ys"; yt: "ef.yt"; yu: "ef.yu"; yv: "ef.yv"; yw: "ef.yw"; yx: "ef.yx"; yy: "ef.yy"; yz: "ef.yz"; za: "ef.za"; zb: "ef.zb"; zc: "ef.zc"; zd: "ef.zd"; ze: "ef.ze"; zf: "ef.zf"; zg: "ef.zg"; zh: "ef.zh"; zi: "ef.zi"; zj: "ef.zj"; zk: "ef.zk"; zl: "ef.zl"; zm: "ef.zm"; zn: "ef.zn"; zo: "ef.zo"; zp: "ef.zp"; zq: "ef.zq"; zr: "ef.zr"; zs: "ef.zs"; zt: "ef.zt"; zu: "ef.zu"; zv: "ef.zv"; zw: "ef.zw"; zx: "ef.zx"; zy: "ef.zy"; zz: "ef.zz"; }; eg: { aa: "eg.aa"; ab: "eg.ab"; ac: "eg.ac"; ad: "eg.ad"; ae: "eg.ae"; af: "eg.af"; ag: "eg.ag"; ah: "eg.ah"; ai: "eg.ai"; aj: "eg.aj"; ak: "eg.ak"; al: "eg.al"; am: "eg.am"; an: "eg.an"; ao: "eg.ao"; ap: "eg.ap"; aq: "eg.aq"; ar: "eg.ar"; as: "eg.as"; at: "eg.at"; au: "eg.au"; av: "eg.av"; aw: "eg.aw"; ax: "eg.ax"; ay: "eg.ay"; az: "eg.az"; ba: "eg.ba"; bb: "eg.bb"; bc: "eg.bc"; bd: "eg.bd"; be: "eg.be"; bf: "eg.bf"; bg: "eg.bg"; bh: "eg.bh"; bi: "eg.bi"; bj: "eg.bj"; bk: "eg.bk"; bl: "eg.bl"; bm: "eg.bm"; bn: "eg.bn"; bo: "eg.bo"; bp: "eg.bp"; bq: "eg.bq"; br: "eg.br"; bs: "eg.bs"; bt: "eg.bt"; bu: "eg.bu"; bv: "eg.bv"; bw: "eg.bw"; bx: "eg.bx"; by: "eg.by"; bz: "eg.bz"; ca: "eg.ca"; cb: "eg.cb"; cc: "eg.cc"; cd: "eg.cd"; ce: "eg.ce"; cf: "eg.cf"; cg: "eg.cg"; ch: "eg.ch"; ci: "eg.ci"; cj: "eg.cj"; ck: "eg.ck"; cl: "eg.cl"; cm: "eg.cm"; cn: "eg.cn"; co: "eg.co"; cp: "eg.cp"; cq: "eg.cq"; cr: "eg.cr"; cs: "eg.cs"; ct: "eg.ct"; cu: "eg.cu"; cv: "eg.cv"; cw: "eg.cw"; cx: "eg.cx"; cy: "eg.cy"; cz: "eg.cz"; da: "eg.da"; db: "eg.db"; dc: "eg.dc"; dd: "eg.dd"; de: "eg.de"; df: "eg.df"; dg: "eg.dg"; dh: "eg.dh"; di: "eg.di"; dj: "eg.dj"; dk: "eg.dk"; dl: "eg.dl"; dm: "eg.dm"; dn: "eg.dn"; do: "eg.do"; dp: "eg.dp"; dq: "eg.dq"; dr: "eg.dr"; ds: "eg.ds"; dt: "eg.dt"; du: "eg.du"; dv: "eg.dv"; dw: "eg.dw"; dx: "eg.dx"; dy: "eg.dy"; dz: "eg.dz"; ea: "eg.ea"; eb: "eg.eb"; ec: "eg.ec"; ed: "eg.ed"; ee: "eg.ee"; ef: "eg.ef"; eg: "eg.eg"; eh: "eg.eh"; ei: "eg.ei"; ej: "eg.ej"; ek: "eg.ek"; el: "eg.el"; em: "eg.em"; en: "eg.en"; eo: "eg.eo"; ep: "eg.ep"; eq: "eg.eq"; er: "eg.er"; es: "eg.es"; et: "eg.et"; eu: "eg.eu"; ev: "eg.ev"; ew: "eg.ew"; ex: "eg.ex"; ey: "eg.ey"; ez: "eg.ez"; fa: "eg.fa"; fb: "eg.fb"; fc: "eg.fc"; fd: "eg.fd"; fe: "eg.fe"; ff: "eg.ff"; fg: "eg.fg"; fh: "eg.fh"; fi: "eg.fi"; fj: "eg.fj"; fk: "eg.fk"; fl: "eg.fl"; fm: "eg.fm"; fn: "eg.fn"; fo: "eg.fo"; fp: "eg.fp"; fq: "eg.fq"; fr: "eg.fr"; fs: "eg.fs"; ft: "eg.ft"; fu: "eg.fu"; fv: "eg.fv"; fw: "eg.fw"; fx: "eg.fx"; fy: "eg.fy"; fz: "eg.fz"; ga: "eg.ga"; gb: "eg.gb"; gc: "eg.gc"; gd: "eg.gd"; ge: "eg.ge"; gf: "eg.gf"; gg: "eg.gg"; gh: "eg.gh"; gi: "eg.gi"; gj: "eg.gj"; gk: "eg.gk"; gl: "eg.gl"; gm: "eg.gm"; gn: "eg.gn"; go: "eg.go"; gp: "eg.gp"; gq: "eg.gq"; gr: "eg.gr"; gs: "eg.gs"; gt: "eg.gt"; gu: "eg.gu"; gv: "eg.gv"; gw: "eg.gw"; gx: "eg.gx"; gy: "eg.gy"; gz: "eg.gz"; ha: "eg.ha"; hb: "eg.hb"; hc: "eg.hc"; hd: "eg.hd"; he: "eg.he"; hf: "eg.hf"; hg: "eg.hg"; hh: "eg.hh"; hi: "eg.hi"; hj: "eg.hj"; hk: "eg.hk"; hl: "eg.hl"; hm: "eg.hm"; hn: "eg.hn"; ho: "eg.ho"; hp: "eg.hp"; hq: "eg.hq"; hr: "eg.hr"; hs: "eg.hs"; ht: "eg.ht"; hu: "eg.hu"; hv: "eg.hv"; hw: "eg.hw"; hx: "eg.hx"; hy: "eg.hy"; hz: "eg.hz"; ia: "eg.ia"; ib: "eg.ib"; ic: "eg.ic"; id: "eg.id"; ie: "eg.ie"; if: "eg.if"; ig: "eg.ig"; ih: "eg.ih"; ii: "eg.ii"; ij: "eg.ij"; ik: "eg.ik"; il: "eg.il"; im: "eg.im"; in: "eg.in"; io: "eg.io"; ip: "eg.ip"; iq: "eg.iq"; ir: "eg.ir"; is: "eg.is"; it: "eg.it"; iu: "eg.iu"; iv: "eg.iv"; iw: "eg.iw"; ix: "eg.ix"; iy: "eg.iy"; iz: "eg.iz"; ja: "eg.ja"; jb: "eg.jb"; jc: "eg.jc"; jd: "eg.jd"; je: "eg.je"; jf: "eg.jf"; jg: "eg.jg"; jh: "eg.jh"; ji: "eg.ji"; jj: "eg.jj"; jk: "eg.jk"; jl: "eg.jl"; jm: "eg.jm"; jn: "eg.jn"; jo: "eg.jo"; jp: "eg.jp"; jq: "eg.jq"; jr: "eg.jr"; js: "eg.js"; jt: "eg.jt"; ju: "eg.ju"; jv: "eg.jv"; jw: "eg.jw"; jx: "eg.jx"; jy: "eg.jy"; jz: "eg.jz"; ka: "eg.ka"; kb: "eg.kb"; kc: "eg.kc"; kd: "eg.kd"; ke: "eg.ke"; kf: "eg.kf"; kg: "eg.kg"; kh: "eg.kh"; ki: "eg.ki"; kj: "eg.kj"; kk: "eg.kk"; kl: "eg.kl"; km: "eg.km"; kn: "eg.kn"; ko: "eg.ko"; kp: "eg.kp"; kq: "eg.kq"; kr: "eg.kr"; ks: "eg.ks"; kt: "eg.kt"; ku: "eg.ku"; kv: "eg.kv"; kw: "eg.kw"; kx: "eg.kx"; ky: "eg.ky"; kz: "eg.kz"; la: "eg.la"; lb: "eg.lb"; lc: "eg.lc"; ld: "eg.ld"; le: "eg.le"; lf: "eg.lf"; lg: "eg.lg"; lh: "eg.lh"; li: "eg.li"; lj: "eg.lj"; lk: "eg.lk"; ll: "eg.ll"; lm: "eg.lm"; ln: "eg.ln"; lo: "eg.lo"; lp: "eg.lp"; lq: "eg.lq"; lr: "eg.lr"; ls: "eg.ls"; lt: "eg.lt"; lu: "eg.lu"; lv: "eg.lv"; lw: "eg.lw"; lx: "eg.lx"; ly: "eg.ly"; lz: "eg.lz"; ma: "eg.ma"; mb: "eg.mb"; mc: "eg.mc"; md: "eg.md"; me: "eg.me"; mf: "eg.mf"; mg: "eg.mg"; mh: "eg.mh"; mi: "eg.mi"; mj: "eg.mj"; mk: "eg.mk"; ml: "eg.ml"; mm: "eg.mm"; mn: "eg.mn"; mo: "eg.mo"; mp: "eg.mp"; mq: "eg.mq"; mr: "eg.mr"; ms: "eg.ms"; mt: "eg.mt"; mu: "eg.mu"; mv: "eg.mv"; mw: "eg.mw"; mx: "eg.mx"; my: "eg.my"; mz: "eg.mz"; na: "eg.na"; nb: "eg.nb"; nc: "eg.nc"; nd: "eg.nd"; ne: "eg.ne"; nf: "eg.nf"; ng: "eg.ng"; nh: "eg.nh"; ni: "eg.ni"; nj: "eg.nj"; nk: "eg.nk"; nl: "eg.nl"; nm: "eg.nm"; nn: "eg.nn"; no: "eg.no"; np: "eg.np"; nq: "eg.nq"; nr: "eg.nr"; ns: "eg.ns"; nt: "eg.nt"; nu: "eg.nu"; nv: "eg.nv"; nw: "eg.nw"; nx: "eg.nx"; ny: "eg.ny"; nz: "eg.nz"; oa: "eg.oa"; ob: "eg.ob"; oc: "eg.oc"; od: "eg.od"; oe: "eg.oe"; of: "eg.of"; og: "eg.og"; oh: "eg.oh"; oi: "eg.oi"; oj: "eg.oj"; ok: "eg.ok"; ol: "eg.ol"; om: "eg.om"; on: "eg.on"; oo: "eg.oo"; op: "eg.op"; oq: "eg.oq"; or: "eg.or"; os: "eg.os"; ot: "eg.ot"; ou: "eg.ou"; ov: "eg.ov"; ow: "eg.ow"; ox: "eg.ox"; oy: "eg.oy"; oz: "eg.oz"; pa: "eg.pa"; pb: "eg.pb"; pc: "eg.pc"; pd: "eg.pd"; pe: "eg.pe"; pf: "eg.pf"; pg: "eg.pg"; ph: "eg.ph"; pi: "eg.pi"; pj: "eg.pj"; pk: "eg.pk"; pl: "eg.pl"; pm: "eg.pm"; pn: "eg.pn"; po: "eg.po"; pp: "eg.pp"; pq: "eg.pq"; pr: "eg.pr"; ps: "eg.ps"; pt: "eg.pt"; pu: "eg.pu"; pv: "eg.pv"; pw: "eg.pw"; px: "eg.px"; py: "eg.py"; pz: "eg.pz"; qa: "eg.qa"; qb: "eg.qb"; qc: "eg.qc"; qd: "eg.qd"; qe: "eg.qe"; qf: "eg.qf"; qg: "eg.qg"; qh: "eg.qh"; qi: "eg.qi"; qj: "eg.qj"; qk: "eg.qk"; ql: "eg.ql"; qm: "eg.qm"; qn: "eg.qn"; qo: "eg.qo"; qp: "eg.qp"; qq: "eg.qq"; qr: "eg.qr"; qs: "eg.qs"; qt: "eg.qt"; qu: "eg.qu"; qv: "eg.qv"; qw: "eg.qw"; qx: "eg.qx"; qy: "eg.qy"; qz: "eg.qz"; ra: "eg.ra"; rb: "eg.rb"; rc: "eg.rc"; rd: "eg.rd"; re: "eg.re"; rf: "eg.rf"; rg: "eg.rg"; rh: "eg.rh"; ri: "eg.ri"; rj: "eg.rj"; rk: "eg.rk"; rl: "eg.rl"; rm: "eg.rm"; rn: "eg.rn"; ro: "eg.ro"; rp: "eg.rp"; rq: "eg.rq"; rr: "eg.rr"; rs: "eg.rs"; rt: "eg.rt"; ru: "eg.ru"; rv: "eg.rv"; rw: "eg.rw"; rx: "eg.rx"; ry: "eg.ry"; rz: "eg.rz"; sa: "eg.sa"; sb: "eg.sb"; sc: "eg.sc"; sd: "eg.sd"; se: "eg.se"; sf: "eg.sf"; sg: "eg.sg"; sh: "eg.sh"; si: "eg.si"; sj: "eg.sj"; sk: "eg.sk"; sl: "eg.sl"; sm: "eg.sm"; sn: "eg.sn"; so: "eg.so"; sp: "eg.sp"; sq: "eg.sq"; sr: "eg.sr"; ss: "eg.ss"; st: "eg.st"; su: "eg.su"; sv: "eg.sv"; sw: "eg.sw"; sx: "eg.sx"; sy: "eg.sy"; sz: "eg.sz"; ta: "eg.ta"; tb: "eg.tb"; tc: "eg.tc"; td: "eg.td"; te: "eg.te"; tf: "eg.tf"; tg: "eg.tg"; th: "eg.th"; ti: "eg.ti"; tj: "eg.tj"; tk: "eg.tk"; tl: "eg.tl"; tm: "eg.tm"; tn: "eg.tn"; to: "eg.to"; tp: "eg.tp"; tq: "eg.tq"; tr: "eg.tr"; ts: "eg.ts"; tt: "eg.tt"; tu: "eg.tu"; tv: "eg.tv"; tw: "eg.tw"; tx: "eg.tx"; ty: "eg.ty"; tz: "eg.tz"; ua: "eg.ua"; ub: "eg.ub"; uc: "eg.uc"; ud: "eg.ud"; ue: "eg.ue"; uf: "eg.uf"; ug: "eg.ug"; uh: "eg.uh"; ui: "eg.ui"; uj: "eg.uj"; uk: "eg.uk"; ul: "eg.ul"; um: "eg.um"; un: "eg.un"; uo: "eg.uo"; up: "eg.up"; uq: "eg.uq"; ur: "eg.ur"; us: "eg.us"; ut: "eg.ut"; uu: "eg.uu"; uv: "eg.uv"; uw: "eg.uw"; ux: "eg.ux"; uy: "eg.uy"; uz: "eg.uz"; va: "eg.va"; vb: "eg.vb"; vc: "eg.vc"; vd: "eg.vd"; ve: "eg.ve"; vf: "eg.vf"; vg: "eg.vg"; vh: "eg.vh"; vi: "eg.vi"; vj: "eg.vj"; vk: "eg.vk"; vl: "eg.vl"; vm: "eg.vm"; vn: "eg.vn"; vo: "eg.vo"; vp: "eg.vp"; vq: "eg.vq"; vr: "eg.vr"; vs: "eg.vs"; vt: "eg.vt"; vu: "eg.vu"; vv: "eg.vv"; vw: "eg.vw"; vx: "eg.vx"; vy: "eg.vy"; vz: "eg.vz"; wa: "eg.wa"; wb: "eg.wb"; wc: "eg.wc"; wd: "eg.wd"; we: "eg.we"; wf: "eg.wf"; wg: "eg.wg"; wh: "eg.wh"; wi: "eg.wi"; wj: "eg.wj"; wk: "eg.wk"; wl: "eg.wl"; wm: "eg.wm"; wn: "eg.wn"; wo: "eg.wo"; wp: "eg.wp"; wq: "eg.wq"; wr: "eg.wr"; ws: "eg.ws"; wt: "eg.wt"; wu: "eg.wu"; wv: "eg.wv"; ww: "eg.ww"; wx: "eg.wx"; wy: "eg.wy"; wz: "eg.wz"; xa: "eg.xa"; xb: "eg.xb"; xc: "eg.xc"; xd: "eg.xd"; xe: "eg.xe"; xf: "eg.xf"; xg: "eg.xg"; xh: "eg.xh"; xi: "eg.xi"; xj: "eg.xj"; xk: "eg.xk"; xl: "eg.xl"; xm: "eg.xm"; xn: "eg.xn"; xo: "eg.xo"; xp: "eg.xp"; xq: "eg.xq"; xr: "eg.xr"; xs: "eg.xs"; xt: "eg.xt"; xu: "eg.xu"; xv: "eg.xv"; xw: "eg.xw"; xx: "eg.xx"; xy: "eg.xy"; xz: "eg.xz"; ya: "eg.ya"; yb: "eg.yb"; yc: "eg.yc"; yd: "eg.yd"; ye: "eg.ye"; yf: "eg.yf"; yg: "eg.yg"; yh: "eg.yh"; yi: "eg.yi"; yj: "eg.yj"; yk: "eg.yk"; yl: "eg.yl"; ym: "eg.ym"; yn: "eg.yn"; yo: "eg.yo"; yp: "eg.yp"; yq: "eg.yq"; yr: "eg.yr"; ys: "eg.ys"; yt: "eg.yt"; yu: "eg.yu"; yv: "eg.yv"; yw: "eg.yw"; yx: "eg.yx"; yy: "eg.yy"; yz: "eg.yz"; za: "eg.za"; zb: "eg.zb"; zc: "eg.zc"; zd: "eg.zd"; ze: "eg.ze"; zf: "eg.zf"; zg: "eg.zg"; zh: "eg.zh"; zi: "eg.zi"; zj: "eg.zj"; zk: "eg.zk"; zl: "eg.zl"; zm: "eg.zm"; zn: "eg.zn"; zo: "eg.zo"; zp: "eg.zp"; zq: "eg.zq"; zr: "eg.zr"; zs: "eg.zs"; zt: "eg.zt"; zu: "eg.zu"; zv: "eg.zv"; zw: "eg.zw"; zx: "eg.zx"; zy: "eg.zy"; zz: "eg.zz"; }; eh: { aa: "eh.aa"; ab: "eh.ab"; ac: "eh.ac"; ad: "eh.ad"; ae: "eh.ae"; af: "eh.af"; ag: "eh.ag"; ah: "eh.ah"; ai: "eh.ai"; aj: "eh.aj"; ak: "eh.ak"; al: "eh.al"; am: "eh.am"; an: "eh.an"; ao: "eh.ao"; ap: "eh.ap"; aq: "eh.aq"; ar: "eh.ar"; as: "eh.as"; at: "eh.at"; au: "eh.au"; av: "eh.av"; aw: "eh.aw"; ax: "eh.ax"; ay: "eh.ay"; az: "eh.az"; ba: "eh.ba"; bb: "eh.bb"; bc: "eh.bc"; bd: "eh.bd"; be: "eh.be"; bf: "eh.bf"; bg: "eh.bg"; bh: "eh.bh"; bi: "eh.bi"; bj: "eh.bj"; bk: "eh.bk"; bl: "eh.bl"; bm: "eh.bm"; bn: "eh.bn"; bo: "eh.bo"; bp: "eh.bp"; bq: "eh.bq"; br: "eh.br"; bs: "eh.bs"; bt: "eh.bt"; bu: "eh.bu"; bv: "eh.bv"; bw: "eh.bw"; bx: "eh.bx"; by: "eh.by"; bz: "eh.bz"; ca: "eh.ca"; cb: "eh.cb"; cc: "eh.cc"; cd: "eh.cd"; ce: "eh.ce"; cf: "eh.cf"; cg: "eh.cg"; ch: "eh.ch"; ci: "eh.ci"; cj: "eh.cj"; ck: "eh.ck"; cl: "eh.cl"; cm: "eh.cm"; cn: "eh.cn"; co: "eh.co"; cp: "eh.cp"; cq: "eh.cq"; cr: "eh.cr"; cs: "eh.cs"; ct: "eh.ct"; cu: "eh.cu"; cv: "eh.cv"; cw: "eh.cw"; cx: "eh.cx"; cy: "eh.cy"; cz: "eh.cz"; da: "eh.da"; db: "eh.db"; dc: "eh.dc"; dd: "eh.dd"; de: "eh.de"; df: "eh.df"; dg: "eh.dg"; dh: "eh.dh"; di: "eh.di"; dj: "eh.dj"; dk: "eh.dk"; dl: "eh.dl"; dm: "eh.dm"; dn: "eh.dn"; do: "eh.do"; dp: "eh.dp"; dq: "eh.dq"; dr: "eh.dr"; ds: "eh.ds"; dt: "eh.dt"; du: "eh.du"; dv: "eh.dv"; dw: "eh.dw"; dx: "eh.dx"; dy: "eh.dy"; dz: "eh.dz"; ea: "eh.ea"; eb: "eh.eb"; ec: "eh.ec"; ed: "eh.ed"; ee: "eh.ee"; ef: "eh.ef"; eg: "eh.eg"; eh: "eh.eh"; ei: "eh.ei"; ej: "eh.ej"; ek: "eh.ek"; el: "eh.el"; em: "eh.em"; en: "eh.en"; eo: "eh.eo"; ep: "eh.ep"; eq: "eh.eq"; er: "eh.er"; es: "eh.es"; et: "eh.et"; eu: "eh.eu"; ev: "eh.ev"; ew: "eh.ew"; ex: "eh.ex"; ey: "eh.ey"; ez: "eh.ez"; fa: "eh.fa"; fb: "eh.fb"; fc: "eh.fc"; fd: "eh.fd"; fe: "eh.fe"; ff: "eh.ff"; fg: "eh.fg"; fh: "eh.fh"; fi: "eh.fi"; fj: "eh.fj"; fk: "eh.fk"; fl: "eh.fl"; fm: "eh.fm"; fn: "eh.fn"; fo: "eh.fo"; fp: "eh.fp"; fq: "eh.fq"; fr: "eh.fr"; fs: "eh.fs"; ft: "eh.ft"; fu: "eh.fu"; fv: "eh.fv"; fw: "eh.fw"; fx: "eh.fx"; fy: "eh.fy"; fz: "eh.fz"; ga: "eh.ga"; gb: "eh.gb"; gc: "eh.gc"; gd: "eh.gd"; ge: "eh.ge"; gf: "eh.gf"; gg: "eh.gg"; gh: "eh.gh"; gi: "eh.gi"; gj: "eh.gj"; gk: "eh.gk"; gl: "eh.gl"; gm: "eh.gm"; gn: "eh.gn"; go: "eh.go"; gp: "eh.gp"; gq: "eh.gq"; gr: "eh.gr"; gs: "eh.gs"; gt: "eh.gt"; gu: "eh.gu"; gv: "eh.gv"; gw: "eh.gw"; gx: "eh.gx"; gy: "eh.gy"; gz: "eh.gz"; ha: "eh.ha"; hb: "eh.hb"; hc: "eh.hc"; hd: "eh.hd"; he: "eh.he"; hf: "eh.hf"; hg: "eh.hg"; hh: "eh.hh"; hi: "eh.hi"; hj: "eh.hj"; hk: "eh.hk"; hl: "eh.hl"; hm: "eh.hm"; hn: "eh.hn"; ho: "eh.ho"; hp: "eh.hp"; hq: "eh.hq"; hr: "eh.hr"; hs: "eh.hs"; ht: "eh.ht"; hu: "eh.hu"; hv: "eh.hv"; hw: "eh.hw"; hx: "eh.hx"; hy: "eh.hy"; hz: "eh.hz"; ia: "eh.ia"; ib: "eh.ib"; ic: "eh.ic"; id: "eh.id"; ie: "eh.ie"; if: "eh.if"; ig: "eh.ig"; ih: "eh.ih"; ii: "eh.ii"; ij: "eh.ij"; ik: "eh.ik"; il: "eh.il"; im: "eh.im"; in: "eh.in"; io: "eh.io"; ip: "eh.ip"; iq: "eh.iq"; ir: "eh.ir"; is: "eh.is"; it: "eh.it"; iu: "eh.iu"; iv: "eh.iv"; iw: "eh.iw"; ix: "eh.ix"; iy: "eh.iy"; iz: "eh.iz"; ja: "eh.ja"; jb: "eh.jb"; jc: "eh.jc"; jd: "eh.jd"; je: "eh.je"; jf: "eh.jf"; jg: "eh.jg"; jh: "eh.jh"; ji: "eh.ji"; jj: "eh.jj"; jk: "eh.jk"; jl: "eh.jl"; jm: "eh.jm"; jn: "eh.jn"; jo: "eh.jo"; jp: "eh.jp"; jq: "eh.jq"; jr: "eh.jr"; js: "eh.js"; jt: "eh.jt"; ju: "eh.ju"; jv: "eh.jv"; jw: "eh.jw"; jx: "eh.jx"; jy: "eh.jy"; jz: "eh.jz"; ka: "eh.ka"; kb: "eh.kb"; kc: "eh.kc"; kd: "eh.kd"; ke: "eh.ke"; kf: "eh.kf"; kg: "eh.kg"; kh: "eh.kh"; ki: "eh.ki"; kj: "eh.kj"; kk: "eh.kk"; kl: "eh.kl"; km: "eh.km"; kn: "eh.kn"; ko: "eh.ko"; kp: "eh.kp"; kq: "eh.kq"; kr: "eh.kr"; ks: "eh.ks"; kt: "eh.kt"; ku: "eh.ku"; kv: "eh.kv"; kw: "eh.kw"; kx: "eh.kx"; ky: "eh.ky"; kz: "eh.kz"; la: "eh.la"; lb: "eh.lb"; lc: "eh.lc"; ld: "eh.ld"; le: "eh.le"; lf: "eh.lf"; lg: "eh.lg"; lh: "eh.lh"; li: "eh.li"; lj: "eh.lj"; lk: "eh.lk"; ll: "eh.ll"; lm: "eh.lm"; ln: "eh.ln"; lo: "eh.lo"; lp: "eh.lp"; lq: "eh.lq"; lr: "eh.lr"; ls: "eh.ls"; lt: "eh.lt"; lu: "eh.lu"; lv: "eh.lv"; lw: "eh.lw"; lx: "eh.lx"; ly: "eh.ly"; lz: "eh.lz"; ma: "eh.ma"; mb: "eh.mb"; mc: "eh.mc"; md: "eh.md"; me: "eh.me"; mf: "eh.mf"; mg: "eh.mg"; mh: "eh.mh"; mi: "eh.mi"; mj: "eh.mj"; mk: "eh.mk"; ml: "eh.ml"; mm: "eh.mm"; mn: "eh.mn"; mo: "eh.mo"; mp: "eh.mp"; mq: "eh.mq"; mr: "eh.mr"; ms: "eh.ms"; mt: "eh.mt"; mu: "eh.mu"; mv: "eh.mv"; mw: "eh.mw"; mx: "eh.mx"; my: "eh.my"; mz: "eh.mz"; na: "eh.na"; nb: "eh.nb"; nc: "eh.nc"; nd: "eh.nd"; ne: "eh.ne"; nf: "eh.nf"; ng: "eh.ng"; nh: "eh.nh"; ni: "eh.ni"; nj: "eh.nj"; nk: "eh.nk"; nl: "eh.nl"; nm: "eh.nm"; nn: "eh.nn"; no: "eh.no"; np: "eh.np"; nq: "eh.nq"; nr: "eh.nr"; ns: "eh.ns"; nt: "eh.nt"; nu: "eh.nu"; nv: "eh.nv"; nw: "eh.nw"; nx: "eh.nx"; ny: "eh.ny"; nz: "eh.nz"; oa: "eh.oa"; ob: "eh.ob"; oc: "eh.oc"; od: "eh.od"; oe: "eh.oe"; of: "eh.of"; og: "eh.og"; oh: "eh.oh"; oi: "eh.oi"; oj: "eh.oj"; ok: "eh.ok"; ol: "eh.ol"; om: "eh.om"; on: "eh.on"; oo: "eh.oo"; op: "eh.op"; oq: "eh.oq"; or: "eh.or"; os: "eh.os"; ot: "eh.ot"; ou: "eh.ou"; ov: "eh.ov"; ow: "eh.ow"; ox: "eh.ox"; oy: "eh.oy"; oz: "eh.oz"; pa: "eh.pa"; pb: "eh.pb"; pc: "eh.pc"; pd: "eh.pd"; pe: "eh.pe"; pf: "eh.pf"; pg: "eh.pg"; ph: "eh.ph"; pi: "eh.pi"; pj: "eh.pj"; pk: "eh.pk"; pl: "eh.pl"; pm: "eh.pm"; pn: "eh.pn"; po: "eh.po"; pp: "eh.pp"; pq: "eh.pq"; pr: "eh.pr"; ps: "eh.ps"; pt: "eh.pt"; pu: "eh.pu"; pv: "eh.pv"; pw: "eh.pw"; px: "eh.px"; py: "eh.py"; pz: "eh.pz"; qa: "eh.qa"; qb: "eh.qb"; qc: "eh.qc"; qd: "eh.qd"; qe: "eh.qe"; qf: "eh.qf"; qg: "eh.qg"; qh: "eh.qh"; qi: "eh.qi"; qj: "eh.qj"; qk: "eh.qk"; ql: "eh.ql"; qm: "eh.qm"; qn: "eh.qn"; qo: "eh.qo"; qp: "eh.qp"; qq: "eh.qq"; qr: "eh.qr"; qs: "eh.qs"; qt: "eh.qt"; qu: "eh.qu"; qv: "eh.qv"; qw: "eh.qw"; qx: "eh.qx"; qy: "eh.qy"; qz: "eh.qz"; ra: "eh.ra"; rb: "eh.rb"; rc: "eh.rc"; rd: "eh.rd"; re: "eh.re"; rf: "eh.rf"; rg: "eh.rg"; rh: "eh.rh"; ri: "eh.ri"; rj: "eh.rj"; rk: "eh.rk"; rl: "eh.rl"; rm: "eh.rm"; rn: "eh.rn"; ro: "eh.ro"; rp: "eh.rp"; rq: "eh.rq"; rr: "eh.rr"; rs: "eh.rs"; rt: "eh.rt"; ru: "eh.ru"; rv: "eh.rv"; rw: "eh.rw"; rx: "eh.rx"; ry: "eh.ry"; rz: "eh.rz"; sa: "eh.sa"; sb: "eh.sb"; sc: "eh.sc"; sd: "eh.sd"; se: "eh.se"; sf: "eh.sf"; sg: "eh.sg"; sh: "eh.sh"; si: "eh.si"; sj: "eh.sj"; sk: "eh.sk"; sl: "eh.sl"; sm: "eh.sm"; sn: "eh.sn"; so: "eh.so"; sp: "eh.sp"; sq: "eh.sq"; sr: "eh.sr"; ss: "eh.ss"; st: "eh.st"; su: "eh.su"; sv: "eh.sv"; sw: "eh.sw"; sx: "eh.sx"; sy: "eh.sy"; sz: "eh.sz"; ta: "eh.ta"; tb: "eh.tb"; tc: "eh.tc"; td: "eh.td"; te: "eh.te"; tf: "eh.tf"; tg: "eh.tg"; th: "eh.th"; ti: "eh.ti"; tj: "eh.tj"; tk: "eh.tk"; tl: "eh.tl"; tm: "eh.tm"; tn: "eh.tn"; to: "eh.to"; tp: "eh.tp"; tq: "eh.tq"; tr: "eh.tr"; ts: "eh.ts"; tt: "eh.tt"; tu: "eh.tu"; tv: "eh.tv"; tw: "eh.tw"; tx: "eh.tx"; ty: "eh.ty"; tz: "eh.tz"; ua: "eh.ua"; ub: "eh.ub"; uc: "eh.uc"; ud: "eh.ud"; ue: "eh.ue"; uf: "eh.uf"; ug: "eh.ug"; uh: "eh.uh"; ui: "eh.ui"; uj: "eh.uj"; uk: "eh.uk"; ul: "eh.ul"; um: "eh.um"; un: "eh.un"; uo: "eh.uo"; up: "eh.up"; uq: "eh.uq"; ur: "eh.ur"; us: "eh.us"; ut: "eh.ut"; uu: "eh.uu"; uv: "eh.uv"; uw: "eh.uw"; ux: "eh.ux"; uy: "eh.uy"; uz: "eh.uz"; va: "eh.va"; vb: "eh.vb"; vc: "eh.vc"; vd: "eh.vd"; ve: "eh.ve"; vf: "eh.vf"; vg: "eh.vg"; vh: "eh.vh"; vi: "eh.vi"; vj: "eh.vj"; vk: "eh.vk"; vl: "eh.vl"; vm: "eh.vm"; vn: "eh.vn"; vo: "eh.vo"; vp: "eh.vp"; vq: "eh.vq"; vr: "eh.vr"; vs: "eh.vs"; vt: "eh.vt"; vu: "eh.vu"; vv: "eh.vv"; vw: "eh.vw"; vx: "eh.vx"; vy: "eh.vy"; vz: "eh.vz"; wa: "eh.wa"; wb: "eh.wb"; wc: "eh.wc"; wd: "eh.wd"; we: "eh.we"; wf: "eh.wf"; wg: "eh.wg"; wh: "eh.wh"; wi: "eh.wi"; wj: "eh.wj"; wk: "eh.wk"; wl: "eh.wl"; wm: "eh.wm"; wn: "eh.wn"; wo: "eh.wo"; wp: "eh.wp"; wq: "eh.wq"; wr: "eh.wr"; ws: "eh.ws"; wt: "eh.wt"; wu: "eh.wu"; wv: "eh.wv"; ww: "eh.ww"; wx: "eh.wx"; wy: "eh.wy"; wz: "eh.wz"; xa: "eh.xa"; xb: "eh.xb"; xc: "eh.xc"; xd: "eh.xd"; xe: "eh.xe"; xf: "eh.xf"; xg: "eh.xg"; xh: "eh.xh"; xi: "eh.xi"; xj: "eh.xj"; xk: "eh.xk"; xl: "eh.xl"; xm: "eh.xm"; xn: "eh.xn"; xo: "eh.xo"; xp: "eh.xp"; xq: "eh.xq"; xr: "eh.xr"; xs: "eh.xs"; xt: "eh.xt"; xu: "eh.xu"; xv: "eh.xv"; xw: "eh.xw"; xx: "eh.xx"; xy: "eh.xy"; xz: "eh.xz"; ya: "eh.ya"; yb: "eh.yb"; yc: "eh.yc"; yd: "eh.yd"; ye: "eh.ye"; yf: "eh.yf"; yg: "eh.yg"; yh: "eh.yh"; yi: "eh.yi"; yj: "eh.yj"; yk: "eh.yk"; yl: "eh.yl"; ym: "eh.ym"; yn: "eh.yn"; yo: "eh.yo"; yp: "eh.yp"; yq: "eh.yq"; yr: "eh.yr"; ys: "eh.ys"; yt: "eh.yt"; yu: "eh.yu"; yv: "eh.yv"; yw: "eh.yw"; yx: "eh.yx"; yy: "eh.yy"; yz: "eh.yz"; za: "eh.za"; zb: "eh.zb"; zc: "eh.zc"; zd: "eh.zd"; ze: "eh.ze"; zf: "eh.zf"; zg: "eh.zg"; zh: "eh.zh"; zi: "eh.zi"; zj: "eh.zj"; zk: "eh.zk"; zl: "eh.zl"; zm: "eh.zm"; zn: "eh.zn"; zo: "eh.zo"; zp: "eh.zp"; zq: "eh.zq"; zr: "eh.zr"; zs: "eh.zs"; zt: "eh.zt"; zu: "eh.zu"; zv: "eh.zv"; zw: "eh.zw"; zx: "eh.zx"; zy: "eh.zy"; zz: "eh.zz"; }; ei: { aa: "ei.aa"; ab: "ei.ab"; ac: "ei.ac"; ad: "ei.ad"; ae: "ei.ae"; af: "ei.af"; ag: "ei.ag"; ah: "ei.ah"; ai: "ei.ai"; aj: "ei.aj"; ak: "ei.ak"; al: "ei.al"; am: "ei.am"; an: "ei.an"; ao: "ei.ao"; ap: "ei.ap"; aq: "ei.aq"; ar: "ei.ar"; as: "ei.as"; at: "ei.at"; au: "ei.au"; av: "ei.av"; aw: "ei.aw"; ax: "ei.ax"; ay: "ei.ay"; az: "ei.az"; ba: "ei.ba"; bb: "ei.bb"; bc: "ei.bc"; bd: "ei.bd"; be: "ei.be"; bf: "ei.bf"; bg: "ei.bg"; bh: "ei.bh"; bi: "ei.bi"; bj: "ei.bj"; bk: "ei.bk"; bl: "ei.bl"; bm: "ei.bm"; bn: "ei.bn"; bo: "ei.bo"; bp: "ei.bp"; bq: "ei.bq"; br: "ei.br"; bs: "ei.bs"; bt: "ei.bt"; bu: "ei.bu"; bv: "ei.bv"; bw: "ei.bw"; bx: "ei.bx"; by: "ei.by"; bz: "ei.bz"; ca: "ei.ca"; cb: "ei.cb"; cc: "ei.cc"; cd: "ei.cd"; ce: "ei.ce"; cf: "ei.cf"; cg: "ei.cg"; ch: "ei.ch"; ci: "ei.ci"; cj: "ei.cj"; ck: "ei.ck"; cl: "ei.cl"; cm: "ei.cm"; cn: "ei.cn"; co: "ei.co"; cp: "ei.cp"; cq: "ei.cq"; cr: "ei.cr"; cs: "ei.cs"; ct: "ei.ct"; cu: "ei.cu"; cv: "ei.cv"; cw: "ei.cw"; cx: "ei.cx"; cy: "ei.cy"; cz: "ei.cz"; da: "ei.da"; db: "ei.db"; dc: "ei.dc"; dd: "ei.dd"; de: "ei.de"; df: "ei.df"; dg: "ei.dg"; dh: "ei.dh"; di: "ei.di"; dj: "ei.dj"; dk: "ei.dk"; dl: "ei.dl"; dm: "ei.dm"; dn: "ei.dn"; do: "ei.do"; dp: "ei.dp"; dq: "ei.dq"; dr: "ei.dr"; ds: "ei.ds"; dt: "ei.dt"; du: "ei.du"; dv: "ei.dv"; dw: "ei.dw"; dx: "ei.dx"; dy: "ei.dy"; dz: "ei.dz"; ea: "ei.ea"; eb: "ei.eb"; ec: "ei.ec"; ed: "ei.ed"; ee: "ei.ee"; ef: "ei.ef"; eg: "ei.eg"; eh: "ei.eh"; ei: "ei.ei"; ej: "ei.ej"; ek: "ei.ek"; el: "ei.el"; em: "ei.em"; en: "ei.en"; eo: "ei.eo"; ep: "ei.ep"; eq: "ei.eq"; er: "ei.er"; es: "ei.es"; et: "ei.et"; eu: "ei.eu"; ev: "ei.ev"; ew: "ei.ew"; ex: "ei.ex"; ey: "ei.ey"; ez: "ei.ez"; fa: "ei.fa"; fb: "ei.fb"; fc: "ei.fc"; fd: "ei.fd"; fe: "ei.fe"; ff: "ei.ff"; fg: "ei.fg"; fh: "ei.fh"; fi: "ei.fi"; fj: "ei.fj"; fk: "ei.fk"; fl: "ei.fl"; fm: "ei.fm"; fn: "ei.fn"; fo: "ei.fo"; fp: "ei.fp"; fq: "ei.fq"; fr: "ei.fr"; fs: "ei.fs"; ft: "ei.ft"; fu: "ei.fu"; fv: "ei.fv"; fw: "ei.fw"; fx: "ei.fx"; fy: "ei.fy"; fz: "ei.fz"; ga: "ei.ga"; gb: "ei.gb"; gc: "ei.gc"; gd: "ei.gd"; ge: "ei.ge"; gf: "ei.gf"; gg: "ei.gg"; gh: "ei.gh"; gi: "ei.gi"; gj: "ei.gj"; gk: "ei.gk"; gl: "ei.gl"; gm: "ei.gm"; gn: "ei.gn"; go: "ei.go"; gp: "ei.gp"; gq: "ei.gq"; gr: "ei.gr"; gs: "ei.gs"; gt: "ei.gt"; gu: "ei.gu"; gv: "ei.gv"; gw: "ei.gw"; gx: "ei.gx"; gy: "ei.gy"; gz: "ei.gz"; ha: "ei.ha"; hb: "ei.hb"; hc: "ei.hc"; hd: "ei.hd"; he: "ei.he"; hf: "ei.hf"; hg: "ei.hg"; hh: "ei.hh"; hi: "ei.hi"; hj: "ei.hj"; hk: "ei.hk"; hl: "ei.hl"; hm: "ei.hm"; hn: "ei.hn"; ho: "ei.ho"; hp: "ei.hp"; hq: "ei.hq"; hr: "ei.hr"; hs: "ei.hs"; ht: "ei.ht"; hu: "ei.hu"; hv: "ei.hv"; hw: "ei.hw"; hx: "ei.hx"; hy: "ei.hy"; hz: "ei.hz"; ia: "ei.ia"; ib: "ei.ib"; ic: "ei.ic"; id: "ei.id"; ie: "ei.ie"; if: "ei.if"; ig: "ei.ig"; ih: "ei.ih"; ii: "ei.ii"; ij: "ei.ij"; ik: "ei.ik"; il: "ei.il"; im: "ei.im"; in: "ei.in"; io: "ei.io"; ip: "ei.ip"; iq: "ei.iq"; ir: "ei.ir"; is: "ei.is"; it: "ei.it"; iu: "ei.iu"; iv: "ei.iv"; iw: "ei.iw"; ix: "ei.ix"; iy: "ei.iy"; iz: "ei.iz"; ja: "ei.ja"; jb: "ei.jb"; jc: "ei.jc"; jd: "ei.jd"; je: "ei.je"; jf: "ei.jf"; jg: "ei.jg"; jh: "ei.jh"; ji: "ei.ji"; jj: "ei.jj"; jk: "ei.jk"; jl: "ei.jl"; jm: "ei.jm"; jn: "ei.jn"; jo: "ei.jo"; jp: "ei.jp"; jq: "ei.jq"; jr: "ei.jr"; js: "ei.js"; jt: "ei.jt"; ju: "ei.ju"; jv: "ei.jv"; jw: "ei.jw"; jx: "ei.jx"; jy: "ei.jy"; jz: "ei.jz"; ka: "ei.ka"; kb: "ei.kb"; kc: "ei.kc"; kd: "ei.kd"; ke: "ei.ke"; kf: "ei.kf"; kg: "ei.kg"; kh: "ei.kh"; ki: "ei.ki"; kj: "ei.kj"; kk: "ei.kk"; kl: "ei.kl"; km: "ei.km"; kn: "ei.kn"; ko: "ei.ko"; kp: "ei.kp"; kq: "ei.kq"; kr: "ei.kr"; ks: "ei.ks"; kt: "ei.kt"; ku: "ei.ku"; kv: "ei.kv"; kw: "ei.kw"; kx: "ei.kx"; ky: "ei.ky"; kz: "ei.kz"; la: "ei.la"; lb: "ei.lb"; lc: "ei.lc"; ld: "ei.ld"; le: "ei.le"; lf: "ei.lf"; lg: "ei.lg"; lh: "ei.lh"; li: "ei.li"; lj: "ei.lj"; lk: "ei.lk"; ll: "ei.ll"; lm: "ei.lm"; ln: "ei.ln"; lo: "ei.lo"; lp: "ei.lp"; lq: "ei.lq"; lr: "ei.lr"; ls: "ei.ls"; lt: "ei.lt"; lu: "ei.lu"; lv: "ei.lv"; lw: "ei.lw"; lx: "ei.lx"; ly: "ei.ly"; lz: "ei.lz"; ma: "ei.ma"; mb: "ei.mb"; mc: "ei.mc"; md: "ei.md"; me: "ei.me"; mf: "ei.mf"; mg: "ei.mg"; mh: "ei.mh"; mi: "ei.mi"; mj: "ei.mj"; mk: "ei.mk"; ml: "ei.ml"; mm: "ei.mm"; mn: "ei.mn"; mo: "ei.mo"; mp: "ei.mp"; mq: "ei.mq"; mr: "ei.mr"; ms: "ei.ms"; mt: "ei.mt"; mu: "ei.mu"; mv: "ei.mv"; mw: "ei.mw"; mx: "ei.mx"; my: "ei.my"; mz: "ei.mz"; na: "ei.na"; nb: "ei.nb"; nc: "ei.nc"; nd: "ei.nd"; ne: "ei.ne"; nf: "ei.nf"; ng: "ei.ng"; nh: "ei.nh"; ni: "ei.ni"; nj: "ei.nj"; nk: "ei.nk"; nl: "ei.nl"; nm: "ei.nm"; nn: "ei.nn"; no: "ei.no"; np: "ei.np"; nq: "ei.nq"; nr: "ei.nr"; ns: "ei.ns"; nt: "ei.nt"; nu: "ei.nu"; nv: "ei.nv"; nw: "ei.nw"; nx: "ei.nx"; ny: "ei.ny"; nz: "ei.nz"; oa: "ei.oa"; ob: "ei.ob"; oc: "ei.oc"; od: "ei.od"; oe: "ei.oe"; of: "ei.of"; og: "ei.og"; oh: "ei.oh"; oi: "ei.oi"; oj: "ei.oj"; ok: "ei.ok"; ol: "ei.ol"; om: "ei.om"; on: "ei.on"; oo: "ei.oo"; op: "ei.op"; oq: "ei.oq"; or: "ei.or"; os: "ei.os"; ot: "ei.ot"; ou: "ei.ou"; ov: "ei.ov"; ow: "ei.ow"; ox: "ei.ox"; oy: "ei.oy"; oz: "ei.oz"; pa: "ei.pa"; pb: "ei.pb"; pc: "ei.pc"; pd: "ei.pd"; pe: "ei.pe"; pf: "ei.pf"; pg: "ei.pg"; ph: "ei.ph"; pi: "ei.pi"; pj: "ei.pj"; pk: "ei.pk"; pl: "ei.pl"; pm: "ei.pm"; pn: "ei.pn"; po: "ei.po"; pp: "ei.pp"; pq: "ei.pq"; pr: "ei.pr"; ps: "ei.ps"; pt: "ei.pt"; pu: "ei.pu"; pv: "ei.pv"; pw: "ei.pw"; px: "ei.px"; py: "ei.py"; pz: "ei.pz"; qa: "ei.qa"; qb: "ei.qb"; qc: "ei.qc"; qd: "ei.qd"; qe: "ei.qe"; qf: "ei.qf"; qg: "ei.qg"; qh: "ei.qh"; qi: "ei.qi"; qj: "ei.qj"; qk: "ei.qk"; ql: "ei.ql"; qm: "ei.qm"; qn: "ei.qn"; qo: "ei.qo"; qp: "ei.qp"; qq: "ei.qq"; qr: "ei.qr"; qs: "ei.qs"; qt: "ei.qt"; qu: "ei.qu"; qv: "ei.qv"; qw: "ei.qw"; qx: "ei.qx"; qy: "ei.qy"; qz: "ei.qz"; ra: "ei.ra"; rb: "ei.rb"; rc: "ei.rc"; rd: "ei.rd"; re: "ei.re"; rf: "ei.rf"; rg: "ei.rg"; rh: "ei.rh"; ri: "ei.ri"; rj: "ei.rj"; rk: "ei.rk"; rl: "ei.rl"; rm: "ei.rm"; rn: "ei.rn"; ro: "ei.ro"; rp: "ei.rp"; rq: "ei.rq"; rr: "ei.rr"; rs: "ei.rs"; rt: "ei.rt"; ru: "ei.ru"; rv: "ei.rv"; rw: "ei.rw"; rx: "ei.rx"; ry: "ei.ry"; rz: "ei.rz"; sa: "ei.sa"; sb: "ei.sb"; sc: "ei.sc"; sd: "ei.sd"; se: "ei.se"; sf: "ei.sf"; sg: "ei.sg"; sh: "ei.sh"; si: "ei.si"; sj: "ei.sj"; sk: "ei.sk"; sl: "ei.sl"; sm: "ei.sm"; sn: "ei.sn"; so: "ei.so"; sp: "ei.sp"; sq: "ei.sq"; sr: "ei.sr"; ss: "ei.ss"; st: "ei.st"; su: "ei.su"; sv: "ei.sv"; sw: "ei.sw"; sx: "ei.sx"; sy: "ei.sy"; sz: "ei.sz"; ta: "ei.ta"; tb: "ei.tb"; tc: "ei.tc"; td: "ei.td"; te: "ei.te"; tf: "ei.tf"; tg: "ei.tg"; th: "ei.th"; ti: "ei.ti"; tj: "ei.tj"; tk: "ei.tk"; tl: "ei.tl"; tm: "ei.tm"; tn: "ei.tn"; to: "ei.to"; tp: "ei.tp"; tq: "ei.tq"; tr: "ei.tr"; ts: "ei.ts"; tt: "ei.tt"; tu: "ei.tu"; tv: "ei.tv"; tw: "ei.tw"; tx: "ei.tx"; ty: "ei.ty"; tz: "ei.tz"; ua: "ei.ua"; ub: "ei.ub"; uc: "ei.uc"; ud: "ei.ud"; ue: "ei.ue"; uf: "ei.uf"; ug: "ei.ug"; uh: "ei.uh"; ui: "ei.ui"; uj: "ei.uj"; uk: "ei.uk"; ul: "ei.ul"; um: "ei.um"; un: "ei.un"; uo: "ei.uo"; up: "ei.up"; uq: "ei.uq"; ur: "ei.ur"; us: "ei.us"; ut: "ei.ut"; uu: "ei.uu"; uv: "ei.uv"; uw: "ei.uw"; ux: "ei.ux"; uy: "ei.uy"; uz: "ei.uz"; va: "ei.va"; vb: "ei.vb"; vc: "ei.vc"; vd: "ei.vd"; ve: "ei.ve"; vf: "ei.vf"; vg: "ei.vg"; vh: "ei.vh"; vi: "ei.vi"; vj: "ei.vj"; vk: "ei.vk"; vl: "ei.vl"; vm: "ei.vm"; vn: "ei.vn"; vo: "ei.vo"; vp: "ei.vp"; vq: "ei.vq"; vr: "ei.vr"; vs: "ei.vs"; vt: "ei.vt"; vu: "ei.vu"; vv: "ei.vv"; vw: "ei.vw"; vx: "ei.vx"; vy: "ei.vy"; vz: "ei.vz"; wa: "ei.wa"; wb: "ei.wb"; wc: "ei.wc"; wd: "ei.wd"; we: "ei.we"; wf: "ei.wf"; wg: "ei.wg"; wh: "ei.wh"; wi: "ei.wi"; wj: "ei.wj"; wk: "ei.wk"; wl: "ei.wl"; wm: "ei.wm"; wn: "ei.wn"; wo: "ei.wo"; wp: "ei.wp"; wq: "ei.wq"; wr: "ei.wr"; ws: "ei.ws"; wt: "ei.wt"; wu: "ei.wu"; wv: "ei.wv"; ww: "ei.ww"; wx: "ei.wx"; wy: "ei.wy"; wz: "ei.wz"; xa: "ei.xa"; xb: "ei.xb"; xc: "ei.xc"; xd: "ei.xd"; xe: "ei.xe"; xf: "ei.xf"; xg: "ei.xg"; xh: "ei.xh"; xi: "ei.xi"; xj: "ei.xj"; xk: "ei.xk"; xl: "ei.xl"; xm: "ei.xm"; xn: "ei.xn"; xo: "ei.xo"; xp: "ei.xp"; xq: "ei.xq"; xr: "ei.xr"; xs: "ei.xs"; xt: "ei.xt"; xu: "ei.xu"; xv: "ei.xv"; xw: "ei.xw"; xx: "ei.xx"; xy: "ei.xy"; xz: "ei.xz"; ya: "ei.ya"; yb: "ei.yb"; yc: "ei.yc"; yd: "ei.yd"; ye: "ei.ye"; yf: "ei.yf"; yg: "ei.yg"; yh: "ei.yh"; yi: "ei.yi"; yj: "ei.yj"; yk: "ei.yk"; yl: "ei.yl"; ym: "ei.ym"; yn: "ei.yn"; yo: "ei.yo"; yp: "ei.yp"; yq: "ei.yq"; yr: "ei.yr"; ys: "ei.ys"; yt: "ei.yt"; yu: "ei.yu"; yv: "ei.yv"; yw: "ei.yw"; yx: "ei.yx"; yy: "ei.yy"; yz: "ei.yz"; za: "ei.za"; zb: "ei.zb"; zc: "ei.zc"; zd: "ei.zd"; ze: "ei.ze"; zf: "ei.zf"; zg: "ei.zg"; zh: "ei.zh"; zi: "ei.zi"; zj: "ei.zj"; zk: "ei.zk"; zl: "ei.zl"; zm: "ei.zm"; zn: "ei.zn"; zo: "ei.zo"; zp: "ei.zp"; zq: "ei.zq"; zr: "ei.zr"; zs: "ei.zs"; zt: "ei.zt"; zu: "ei.zu"; zv: "ei.zv"; zw: "ei.zw"; zx: "ei.zx"; zy: "ei.zy"; zz: "ei.zz"; }; ej: { aa: "ej.aa"; ab: "ej.ab"; ac: "ej.ac"; ad: "ej.ad"; ae: "ej.ae"; af: "ej.af"; ag: "ej.ag"; ah: "ej.ah"; ai: "ej.ai"; aj: "ej.aj"; ak: "ej.ak"; al: "ej.al"; am: "ej.am"; an: "ej.an"; ao: "ej.ao"; ap: "ej.ap"; aq: "ej.aq"; ar: "ej.ar"; as: "ej.as"; at: "ej.at"; au: "ej.au"; av: "ej.av"; aw: "ej.aw"; ax: "ej.ax"; ay: "ej.ay"; az: "ej.az"; ba: "ej.ba"; bb: "ej.bb"; bc: "ej.bc"; bd: "ej.bd"; be: "ej.be"; bf: "ej.bf"; bg: "ej.bg"; bh: "ej.bh"; bi: "ej.bi"; bj: "ej.bj"; bk: "ej.bk"; bl: "ej.bl"; bm: "ej.bm"; bn: "ej.bn"; bo: "ej.bo"; bp: "ej.bp"; bq: "ej.bq"; br: "ej.br"; bs: "ej.bs"; bt: "ej.bt"; bu: "ej.bu"; bv: "ej.bv"; bw: "ej.bw"; bx: "ej.bx"; by: "ej.by"; bz: "ej.bz"; ca: "ej.ca"; cb: "ej.cb"; cc: "ej.cc"; cd: "ej.cd"; ce: "ej.ce"; cf: "ej.cf"; cg: "ej.cg"; ch: "ej.ch"; ci: "ej.ci"; cj: "ej.cj"; ck: "ej.ck"; cl: "ej.cl"; cm: "ej.cm"; cn: "ej.cn"; co: "ej.co"; cp: "ej.cp"; cq: "ej.cq"; cr: "ej.cr"; cs: "ej.cs"; ct: "ej.ct"; cu: "ej.cu"; cv: "ej.cv"; cw: "ej.cw"; cx: "ej.cx"; cy: "ej.cy"; cz: "ej.cz"; da: "ej.da"; db: "ej.db"; dc: "ej.dc"; dd: "ej.dd"; de: "ej.de"; df: "ej.df"; dg: "ej.dg"; dh: "ej.dh"; di: "ej.di"; dj: "ej.dj"; dk: "ej.dk"; dl: "ej.dl"; dm: "ej.dm"; dn: "ej.dn"; do: "ej.do"; dp: "ej.dp"; dq: "ej.dq"; dr: "ej.dr"; ds: "ej.ds"; dt: "ej.dt"; du: "ej.du"; dv: "ej.dv"; dw: "ej.dw"; dx: "ej.dx"; dy: "ej.dy"; dz: "ej.dz"; ea: "ej.ea"; eb: "ej.eb"; ec: "ej.ec"; ed: "ej.ed"; ee: "ej.ee"; ef: "ej.ef"; eg: "ej.eg"; eh: "ej.eh"; ei: "ej.ei"; ej: "ej.ej"; ek: "ej.ek"; el: "ej.el"; em: "ej.em"; en: "ej.en"; eo: "ej.eo"; ep: "ej.ep"; eq: "ej.eq"; er: "ej.er"; es: "ej.es"; et: "ej.et"; eu: "ej.eu"; ev: "ej.ev"; ew: "ej.ew"; ex: "ej.ex"; ey: "ej.ey"; ez: "ej.ez"; fa: "ej.fa"; fb: "ej.fb"; fc: "ej.fc"; fd: "ej.fd"; fe: "ej.fe"; ff: "ej.ff"; fg: "ej.fg"; fh: "ej.fh"; fi: "ej.fi"; fj: "ej.fj"; fk: "ej.fk"; fl: "ej.fl"; fm: "ej.fm"; fn: "ej.fn"; fo: "ej.fo"; fp: "ej.fp"; fq: "ej.fq"; fr: "ej.fr"; fs: "ej.fs"; ft: "ej.ft"; fu: "ej.fu"; fv: "ej.fv"; fw: "ej.fw"; fx: "ej.fx"; fy: "ej.fy"; fz: "ej.fz"; ga: "ej.ga"; gb: "ej.gb"; gc: "ej.gc"; gd: "ej.gd"; ge: "ej.ge"; gf: "ej.gf"; gg: "ej.gg"; gh: "ej.gh"; gi: "ej.gi"; gj: "ej.gj"; gk: "ej.gk"; gl: "ej.gl"; gm: "ej.gm"; gn: "ej.gn"; go: "ej.go"; gp: "ej.gp"; gq: "ej.gq"; gr: "ej.gr"; gs: "ej.gs"; gt: "ej.gt"; gu: "ej.gu"; gv: "ej.gv"; gw: "ej.gw"; gx: "ej.gx"; gy: "ej.gy"; gz: "ej.gz"; ha: "ej.ha"; hb: "ej.hb"; hc: "ej.hc"; hd: "ej.hd"; he: "ej.he"; hf: "ej.hf"; hg: "ej.hg"; hh: "ej.hh"; hi: "ej.hi"; hj: "ej.hj"; hk: "ej.hk"; hl: "ej.hl"; hm: "ej.hm"; hn: "ej.hn"; ho: "ej.ho"; hp: "ej.hp"; hq: "ej.hq"; hr: "ej.hr"; hs: "ej.hs"; ht: "ej.ht"; hu: "ej.hu"; hv: "ej.hv"; hw: "ej.hw"; hx: "ej.hx"; hy: "ej.hy"; hz: "ej.hz"; ia: "ej.ia"; ib: "ej.ib"; ic: "ej.ic"; id: "ej.id"; ie: "ej.ie"; if: "ej.if"; ig: "ej.ig"; ih: "ej.ih"; ii: "ej.ii"; ij: "ej.ij"; ik: "ej.ik"; il: "ej.il"; im: "ej.im"; in: "ej.in"; io: "ej.io"; ip: "ej.ip"; iq: "ej.iq"; ir: "ej.ir"; is: "ej.is"; it: "ej.it"; iu: "ej.iu"; iv: "ej.iv"; iw: "ej.iw"; ix: "ej.ix"; iy: "ej.iy"; iz: "ej.iz"; ja: "ej.ja"; jb: "ej.jb"; jc: "ej.jc"; jd: "ej.jd"; je: "ej.je"; jf: "ej.jf"; jg: "ej.jg"; jh: "ej.jh"; ji: "ej.ji"; jj: "ej.jj"; jk: "ej.jk"; jl: "ej.jl"; jm: "ej.jm"; jn: "ej.jn"; jo: "ej.jo"; jp: "ej.jp"; jq: "ej.jq"; jr: "ej.jr"; js: "ej.js"; jt: "ej.jt"; ju: "ej.ju"; jv: "ej.jv"; jw: "ej.jw"; jx: "ej.jx"; jy: "ej.jy"; jz: "ej.jz"; ka: "ej.ka"; kb: "ej.kb"; kc: "ej.kc"; kd: "ej.kd"; ke: "ej.ke"; kf: "ej.kf"; kg: "ej.kg"; kh: "ej.kh"; ki: "ej.ki"; kj: "ej.kj"; kk: "ej.kk"; kl: "ej.kl"; km: "ej.km"; kn: "ej.kn"; ko: "ej.ko"; kp: "ej.kp"; kq: "ej.kq"; kr: "ej.kr"; ks: "ej.ks"; kt: "ej.kt"; ku: "ej.ku"; kv: "ej.kv"; kw: "ej.kw"; kx: "ej.kx"; ky: "ej.ky"; kz: "ej.kz"; la: "ej.la"; lb: "ej.lb"; lc: "ej.lc"; ld: "ej.ld"; le: "ej.le"; lf: "ej.lf"; lg: "ej.lg"; lh: "ej.lh"; li: "ej.li"; lj: "ej.lj"; lk: "ej.lk"; ll: "ej.ll"; lm: "ej.lm"; ln: "ej.ln"; lo: "ej.lo"; lp: "ej.lp"; lq: "ej.lq"; lr: "ej.lr"; ls: "ej.ls"; lt: "ej.lt"; lu: "ej.lu"; lv: "ej.lv"; lw: "ej.lw"; lx: "ej.lx"; ly: "ej.ly"; lz: "ej.lz"; ma: "ej.ma"; mb: "ej.mb"; mc: "ej.mc"; md: "ej.md"; me: "ej.me"; mf: "ej.mf"; mg: "ej.mg"; mh: "ej.mh"; mi: "ej.mi"; mj: "ej.mj"; mk: "ej.mk"; ml: "ej.ml"; mm: "ej.mm"; mn: "ej.mn"; mo: "ej.mo"; mp: "ej.mp"; mq: "ej.mq"; mr: "ej.mr"; ms: "ej.ms"; mt: "ej.mt"; mu: "ej.mu"; mv: "ej.mv"; mw: "ej.mw"; mx: "ej.mx"; my: "ej.my"; mz: "ej.mz"; na: "ej.na"; nb: "ej.nb"; nc: "ej.nc"; nd: "ej.nd"; ne: "ej.ne"; nf: "ej.nf"; ng: "ej.ng"; nh: "ej.nh"; ni: "ej.ni"; nj: "ej.nj"; nk: "ej.nk"; nl: "ej.nl"; nm: "ej.nm"; nn: "ej.nn"; no: "ej.no"; np: "ej.np"; nq: "ej.nq"; nr: "ej.nr"; ns: "ej.ns"; nt: "ej.nt"; nu: "ej.nu"; nv: "ej.nv"; nw: "ej.nw"; nx: "ej.nx"; ny: "ej.ny"; nz: "ej.nz"; oa: "ej.oa"; ob: "ej.ob"; oc: "ej.oc"; od: "ej.od"; oe: "ej.oe"; of: "ej.of"; og: "ej.og"; oh: "ej.oh"; oi: "ej.oi"; oj: "ej.oj"; ok: "ej.ok"; ol: "ej.ol"; om: "ej.om"; on: "ej.on"; oo: "ej.oo"; op: "ej.op"; oq: "ej.oq"; or: "ej.or"; os: "ej.os"; ot: "ej.ot"; ou: "ej.ou"; ov: "ej.ov"; ow: "ej.ow"; ox: "ej.ox"; oy: "ej.oy"; oz: "ej.oz"; pa: "ej.pa"; pb: "ej.pb"; pc: "ej.pc"; pd: "ej.pd"; pe: "ej.pe"; pf: "ej.pf"; pg: "ej.pg"; ph: "ej.ph"; pi: "ej.pi"; pj: "ej.pj"; pk: "ej.pk"; pl: "ej.pl"; pm: "ej.pm"; pn: "ej.pn"; po: "ej.po"; pp: "ej.pp"; pq: "ej.pq"; pr: "ej.pr"; ps: "ej.ps"; pt: "ej.pt"; pu: "ej.pu"; pv: "ej.pv"; pw: "ej.pw"; px: "ej.px"; py: "ej.py"; pz: "ej.pz"; qa: "ej.qa"; qb: "ej.qb"; qc: "ej.qc"; qd: "ej.qd"; qe: "ej.qe"; qf: "ej.qf"; qg: "ej.qg"; qh: "ej.qh"; qi: "ej.qi"; qj: "ej.qj"; qk: "ej.qk"; ql: "ej.ql"; qm: "ej.qm"; qn: "ej.qn"; qo: "ej.qo"; qp: "ej.qp"; qq: "ej.qq"; qr: "ej.qr"; qs: "ej.qs"; qt: "ej.qt"; qu: "ej.qu"; qv: "ej.qv"; qw: "ej.qw"; qx: "ej.qx"; qy: "ej.qy"; qz: "ej.qz"; ra: "ej.ra"; rb: "ej.rb"; rc: "ej.rc"; rd: "ej.rd"; re: "ej.re"; rf: "ej.rf"; rg: "ej.rg"; rh: "ej.rh"; ri: "ej.ri"; rj: "ej.rj"; rk: "ej.rk"; rl: "ej.rl"; rm: "ej.rm"; rn: "ej.rn"; ro: "ej.ro"; rp: "ej.rp"; rq: "ej.rq"; rr: "ej.rr"; rs: "ej.rs"; rt: "ej.rt"; ru: "ej.ru"; rv: "ej.rv"; rw: "ej.rw"; rx: "ej.rx"; ry: "ej.ry"; rz: "ej.rz"; sa: "ej.sa"; sb: "ej.sb"; sc: "ej.sc"; sd: "ej.sd"; se: "ej.se"; sf: "ej.sf"; sg: "ej.sg"; sh: "ej.sh"; si: "ej.si"; sj: "ej.sj"; sk: "ej.sk"; sl: "ej.sl"; sm: "ej.sm"; sn: "ej.sn"; so: "ej.so"; sp: "ej.sp"; sq: "ej.sq"; sr: "ej.sr"; ss: "ej.ss"; st: "ej.st"; su: "ej.su"; sv: "ej.sv"; sw: "ej.sw"; sx: "ej.sx"; sy: "ej.sy"; sz: "ej.sz"; ta: "ej.ta"; tb: "ej.tb"; tc: "ej.tc"; td: "ej.td"; te: "ej.te"; tf: "ej.tf"; tg: "ej.tg"; th: "ej.th"; ti: "ej.ti"; tj: "ej.tj"; tk: "ej.tk"; tl: "ej.tl"; tm: "ej.tm"; tn: "ej.tn"; to: "ej.to"; tp: "ej.tp"; tq: "ej.tq"; tr: "ej.tr"; ts: "ej.ts"; tt: "ej.tt"; tu: "ej.tu"; tv: "ej.tv"; tw: "ej.tw"; tx: "ej.tx"; ty: "ej.ty"; tz: "ej.tz"; ua: "ej.ua"; ub: "ej.ub"; uc: "ej.uc"; ud: "ej.ud"; ue: "ej.ue"; uf: "ej.uf"; ug: "ej.ug"; uh: "ej.uh"; ui: "ej.ui"; uj: "ej.uj"; uk: "ej.uk"; ul: "ej.ul"; um: "ej.um"; un: "ej.un"; uo: "ej.uo"; up: "ej.up"; uq: "ej.uq"; ur: "ej.ur"; us: "ej.us"; ut: "ej.ut"; uu: "ej.uu"; uv: "ej.uv"; uw: "ej.uw"; ux: "ej.ux"; uy: "ej.uy"; uz: "ej.uz"; va: "ej.va"; vb: "ej.vb"; vc: "ej.vc"; vd: "ej.vd"; ve: "ej.ve"; vf: "ej.vf"; vg: "ej.vg"; vh: "ej.vh"; vi: "ej.vi"; vj: "ej.vj"; vk: "ej.vk"; vl: "ej.vl"; vm: "ej.vm"; vn: "ej.vn"; vo: "ej.vo"; vp: "ej.vp"; vq: "ej.vq"; vr: "ej.vr"; vs: "ej.vs"; vt: "ej.vt"; vu: "ej.vu"; vv: "ej.vv"; vw: "ej.vw"; vx: "ej.vx"; vy: "ej.vy"; vz: "ej.vz"; wa: "ej.wa"; wb: "ej.wb"; wc: "ej.wc"; wd: "ej.wd"; we: "ej.we"; wf: "ej.wf"; wg: "ej.wg"; wh: "ej.wh"; wi: "ej.wi"; wj: "ej.wj"; wk: "ej.wk"; wl: "ej.wl"; wm: "ej.wm"; wn: "ej.wn"; wo: "ej.wo"; wp: "ej.wp"; wq: "ej.wq"; wr: "ej.wr"; ws: "ej.ws"; wt: "ej.wt"; wu: "ej.wu"; wv: "ej.wv"; ww: "ej.ww"; wx: "ej.wx"; wy: "ej.wy"; wz: "ej.wz"; xa: "ej.xa"; xb: "ej.xb"; xc: "ej.xc"; xd: "ej.xd"; xe: "ej.xe"; xf: "ej.xf"; xg: "ej.xg"; xh: "ej.xh"; xi: "ej.xi"; xj: "ej.xj"; xk: "ej.xk"; xl: "ej.xl"; xm: "ej.xm"; xn: "ej.xn"; xo: "ej.xo"; xp: "ej.xp"; xq: "ej.xq"; xr: "ej.xr"; xs: "ej.xs"; xt: "ej.xt"; xu: "ej.xu"; xv: "ej.xv"; xw: "ej.xw"; xx: "ej.xx"; xy: "ej.xy"; xz: "ej.xz"; ya: "ej.ya"; yb: "ej.yb"; yc: "ej.yc"; yd: "ej.yd"; ye: "ej.ye"; yf: "ej.yf"; yg: "ej.yg"; yh: "ej.yh"; yi: "ej.yi"; yj: "ej.yj"; yk: "ej.yk"; yl: "ej.yl"; ym: "ej.ym"; yn: "ej.yn"; yo: "ej.yo"; yp: "ej.yp"; yq: "ej.yq"; yr: "ej.yr"; ys: "ej.ys"; yt: "ej.yt"; yu: "ej.yu"; yv: "ej.yv"; yw: "ej.yw"; yx: "ej.yx"; yy: "ej.yy"; yz: "ej.yz"; za: "ej.za"; zb: "ej.zb"; zc: "ej.zc"; zd: "ej.zd"; ze: "ej.ze"; zf: "ej.zf"; zg: "ej.zg"; zh: "ej.zh"; zi: "ej.zi"; zj: "ej.zj"; zk: "ej.zk"; zl: "ej.zl"; zm: "ej.zm"; zn: "ej.zn"; zo: "ej.zo"; zp: "ej.zp"; zq: "ej.zq"; zr: "ej.zr"; zs: "ej.zs"; zt: "ej.zt"; zu: "ej.zu"; zv: "ej.zv"; zw: "ej.zw"; zx: "ej.zx"; zy: "ej.zy"; zz: "ej.zz"; }; ek: { aa: "ek.aa"; ab: "ek.ab"; ac: "ek.ac"; ad: "ek.ad"; ae: "ek.ae"; af: "ek.af"; ag: "ek.ag"; ah: "ek.ah"; ai: "ek.ai"; aj: "ek.aj"; ak: "ek.ak"; al: "ek.al"; am: "ek.am"; an: "ek.an"; ao: "ek.ao"; ap: "ek.ap"; aq: "ek.aq"; ar: "ek.ar"; as: "ek.as"; at: "ek.at"; au: "ek.au"; av: "ek.av"; aw: "ek.aw"; ax: "ek.ax"; ay: "ek.ay"; az: "ek.az"; ba: "ek.ba"; bb: "ek.bb"; bc: "ek.bc"; bd: "ek.bd"; be: "ek.be"; bf: "ek.bf"; bg: "ek.bg"; bh: "ek.bh"; bi: "ek.bi"; bj: "ek.bj"; bk: "ek.bk"; bl: "ek.bl"; bm: "ek.bm"; bn: "ek.bn"; bo: "ek.bo"; bp: "ek.bp"; bq: "ek.bq"; br: "ek.br"; bs: "ek.bs"; bt: "ek.bt"; bu: "ek.bu"; bv: "ek.bv"; bw: "ek.bw"; bx: "ek.bx"; by: "ek.by"; bz: "ek.bz"; ca: "ek.ca"; cb: "ek.cb"; cc: "ek.cc"; cd: "ek.cd"; ce: "ek.ce"; cf: "ek.cf"; cg: "ek.cg"; ch: "ek.ch"; ci: "ek.ci"; cj: "ek.cj"; ck: "ek.ck"; cl: "ek.cl"; cm: "ek.cm"; cn: "ek.cn"; co: "ek.co"; cp: "ek.cp"; cq: "ek.cq"; cr: "ek.cr"; cs: "ek.cs"; ct: "ek.ct"; cu: "ek.cu"; cv: "ek.cv"; cw: "ek.cw"; cx: "ek.cx"; cy: "ek.cy"; cz: "ek.cz"; da: "ek.da"; db: "ek.db"; dc: "ek.dc"; dd: "ek.dd"; de: "ek.de"; df: "ek.df"; dg: "ek.dg"; dh: "ek.dh"; di: "ek.di"; dj: "ek.dj"; dk: "ek.dk"; dl: "ek.dl"; dm: "ek.dm"; dn: "ek.dn"; do: "ek.do"; dp: "ek.dp"; dq: "ek.dq"; dr: "ek.dr"; ds: "ek.ds"; dt: "ek.dt"; du: "ek.du"; dv: "ek.dv"; dw: "ek.dw"; dx: "ek.dx"; dy: "ek.dy"; dz: "ek.dz"; ea: "ek.ea"; eb: "ek.eb"; ec: "ek.ec"; ed: "ek.ed"; ee: "ek.ee"; ef: "ek.ef"; eg: "ek.eg"; eh: "ek.eh"; ei: "ek.ei"; ej: "ek.ej"; ek: "ek.ek"; el: "ek.el"; em: "ek.em"; en: "ek.en"; eo: "ek.eo"; ep: "ek.ep"; eq: "ek.eq"; er: "ek.er"; es: "ek.es"; et: "ek.et"; eu: "ek.eu"; ev: "ek.ev"; ew: "ek.ew"; ex: "ek.ex"; ey: "ek.ey"; ez: "ek.ez"; fa: "ek.fa"; fb: "ek.fb"; fc: "ek.fc"; fd: "ek.fd"; fe: "ek.fe"; ff: "ek.ff"; fg: "ek.fg"; fh: "ek.fh"; fi: "ek.fi"; fj: "ek.fj"; fk: "ek.fk"; fl: "ek.fl"; fm: "ek.fm"; fn: "ek.fn"; fo: "ek.fo"; fp: "ek.fp"; fq: "ek.fq"; fr: "ek.fr"; fs: "ek.fs"; ft: "ek.ft"; fu: "ek.fu"; fv: "ek.fv"; fw: "ek.fw"; fx: "ek.fx"; fy: "ek.fy"; fz: "ek.fz"; ga: "ek.ga"; gb: "ek.gb"; gc: "ek.gc"; gd: "ek.gd"; ge: "ek.ge"; gf: "ek.gf"; gg: "ek.gg"; gh: "ek.gh"; gi: "ek.gi"; gj: "ek.gj"; gk: "ek.gk"; gl: "ek.gl"; gm: "ek.gm"; gn: "ek.gn"; go: "ek.go"; gp: "ek.gp"; gq: "ek.gq"; gr: "ek.gr"; gs: "ek.gs"; gt: "ek.gt"; gu: "ek.gu"; gv: "ek.gv"; gw: "ek.gw"; gx: "ek.gx"; gy: "ek.gy"; gz: "ek.gz"; ha: "ek.ha"; hb: "ek.hb"; hc: "ek.hc"; hd: "ek.hd"; he: "ek.he"; hf: "ek.hf"; hg: "ek.hg"; hh: "ek.hh"; hi: "ek.hi"; hj: "ek.hj"; hk: "ek.hk"; hl: "ek.hl"; hm: "ek.hm"; hn: "ek.hn"; ho: "ek.ho"; hp: "ek.hp"; hq: "ek.hq"; hr: "ek.hr"; hs: "ek.hs"; ht: "ek.ht"; hu: "ek.hu"; hv: "ek.hv"; hw: "ek.hw"; hx: "ek.hx"; hy: "ek.hy"; hz: "ek.hz"; ia: "ek.ia"; ib: "ek.ib"; ic: "ek.ic"; id: "ek.id"; ie: "ek.ie"; if: "ek.if"; ig: "ek.ig"; ih: "ek.ih"; ii: "ek.ii"; ij: "ek.ij"; ik: "ek.ik"; il: "ek.il"; im: "ek.im"; in: "ek.in"; io: "ek.io"; ip: "ek.ip"; iq: "ek.iq"; ir: "ek.ir"; is: "ek.is"; it: "ek.it"; iu: "ek.iu"; iv: "ek.iv"; iw: "ek.iw"; ix: "ek.ix"; iy: "ek.iy"; iz: "ek.iz"; ja: "ek.ja"; jb: "ek.jb"; jc: "ek.jc"; jd: "ek.jd"; je: "ek.je"; jf: "ek.jf"; jg: "ek.jg"; jh: "ek.jh"; ji: "ek.ji"; jj: "ek.jj"; jk: "ek.jk"; jl: "ek.jl"; jm: "ek.jm"; jn: "ek.jn"; jo: "ek.jo"; jp: "ek.jp"; jq: "ek.jq"; jr: "ek.jr"; js: "ek.js"; jt: "ek.jt"; ju: "ek.ju"; jv: "ek.jv"; jw: "ek.jw"; jx: "ek.jx"; jy: "ek.jy"; jz: "ek.jz"; ka: "ek.ka"; kb: "ek.kb"; kc: "ek.kc"; kd: "ek.kd"; ke: "ek.ke"; kf: "ek.kf"; kg: "ek.kg"; kh: "ek.kh"; ki: "ek.ki"; kj: "ek.kj"; kk: "ek.kk"; kl: "ek.kl"; km: "ek.km"; kn: "ek.kn"; ko: "ek.ko"; kp: "ek.kp"; kq: "ek.kq"; kr: "ek.kr"; ks: "ek.ks"; kt: "ek.kt"; ku: "ek.ku"; kv: "ek.kv"; kw: "ek.kw"; kx: "ek.kx"; ky: "ek.ky"; kz: "ek.kz"; la: "ek.la"; lb: "ek.lb"; lc: "ek.lc"; ld: "ek.ld"; le: "ek.le"; lf: "ek.lf"; lg: "ek.lg"; lh: "ek.lh"; li: "ek.li"; lj: "ek.lj"; lk: "ek.lk"; ll: "ek.ll"; lm: "ek.lm"; ln: "ek.ln"; lo: "ek.lo"; lp: "ek.lp"; lq: "ek.lq"; lr: "ek.lr"; ls: "ek.ls"; lt: "ek.lt"; lu: "ek.lu"; lv: "ek.lv"; lw: "ek.lw"; lx: "ek.lx"; ly: "ek.ly"; lz: "ek.lz"; ma: "ek.ma"; mb: "ek.mb"; mc: "ek.mc"; md: "ek.md"; me: "ek.me"; mf: "ek.mf"; mg: "ek.mg"; mh: "ek.mh"; mi: "ek.mi"; mj: "ek.mj"; mk: "ek.mk"; ml: "ek.ml"; mm: "ek.mm"; mn: "ek.mn"; mo: "ek.mo"; mp: "ek.mp"; mq: "ek.mq"; mr: "ek.mr"; ms: "ek.ms"; mt: "ek.mt"; mu: "ek.mu"; mv: "ek.mv"; mw: "ek.mw"; mx: "ek.mx"; my: "ek.my"; mz: "ek.mz"; na: "ek.na"; nb: "ek.nb"; nc: "ek.nc"; nd: "ek.nd"; ne: "ek.ne"; nf: "ek.nf"; ng: "ek.ng"; nh: "ek.nh"; ni: "ek.ni"; nj: "ek.nj"; nk: "ek.nk"; nl: "ek.nl"; nm: "ek.nm"; nn: "ek.nn"; no: "ek.no"; np: "ek.np"; nq: "ek.nq"; nr: "ek.nr"; ns: "ek.ns"; nt: "ek.nt"; nu: "ek.nu"; nv: "ek.nv"; nw: "ek.nw"; nx: "ek.nx"; ny: "ek.ny"; nz: "ek.nz"; oa: "ek.oa"; ob: "ek.ob"; oc: "ek.oc"; od: "ek.od"; oe: "ek.oe"; of: "ek.of"; og: "ek.og"; oh: "ek.oh"; oi: "ek.oi"; oj: "ek.oj"; ok: "ek.ok"; ol: "ek.ol"; om: "ek.om"; on: "ek.on"; oo: "ek.oo"; op: "ek.op"; oq: "ek.oq"; or: "ek.or"; os: "ek.os"; ot: "ek.ot"; ou: "ek.ou"; ov: "ek.ov"; ow: "ek.ow"; ox: "ek.ox"; oy: "ek.oy"; oz: "ek.oz"; pa: "ek.pa"; pb: "ek.pb"; pc: "ek.pc"; pd: "ek.pd"; pe: "ek.pe"; pf: "ek.pf"; pg: "ek.pg"; ph: "ek.ph"; pi: "ek.pi"; pj: "ek.pj"; pk: "ek.pk"; pl: "ek.pl"; pm: "ek.pm"; pn: "ek.pn"; po: "ek.po"; pp: "ek.pp"; pq: "ek.pq"; pr: "ek.pr"; ps: "ek.ps"; pt: "ek.pt"; pu: "ek.pu"; pv: "ek.pv"; pw: "ek.pw"; px: "ek.px"; py: "ek.py"; pz: "ek.pz"; qa: "ek.qa"; qb: "ek.qb"; qc: "ek.qc"; qd: "ek.qd"; qe: "ek.qe"; qf: "ek.qf"; qg: "ek.qg"; qh: "ek.qh"; qi: "ek.qi"; qj: "ek.qj"; qk: "ek.qk"; ql: "ek.ql"; qm: "ek.qm"; qn: "ek.qn"; qo: "ek.qo"; qp: "ek.qp"; qq: "ek.qq"; qr: "ek.qr"; qs: "ek.qs"; qt: "ek.qt"; qu: "ek.qu"; qv: "ek.qv"; qw: "ek.qw"; qx: "ek.qx"; qy: "ek.qy"; qz: "ek.qz"; ra: "ek.ra"; rb: "ek.rb"; rc: "ek.rc"; rd: "ek.rd"; re: "ek.re"; rf: "ek.rf"; rg: "ek.rg"; rh: "ek.rh"; ri: "ek.ri"; rj: "ek.rj"; rk: "ek.rk"; rl: "ek.rl"; rm: "ek.rm"; rn: "ek.rn"; ro: "ek.ro"; rp: "ek.rp"; rq: "ek.rq"; rr: "ek.rr"; rs: "ek.rs"; rt: "ek.rt"; ru: "ek.ru"; rv: "ek.rv"; rw: "ek.rw"; rx: "ek.rx"; ry: "ek.ry"; rz: "ek.rz"; sa: "ek.sa"; sb: "ek.sb"; sc: "ek.sc"; sd: "ek.sd"; se: "ek.se"; sf: "ek.sf"; sg: "ek.sg"; sh: "ek.sh"; si: "ek.si"; sj: "ek.sj"; sk: "ek.sk"; sl: "ek.sl"; sm: "ek.sm"; sn: "ek.sn"; so: "ek.so"; sp: "ek.sp"; sq: "ek.sq"; sr: "ek.sr"; ss: "ek.ss"; st: "ek.st"; su: "ek.su"; sv: "ek.sv"; sw: "ek.sw"; sx: "ek.sx"; sy: "ek.sy"; sz: "ek.sz"; ta: "ek.ta"; tb: "ek.tb"; tc: "ek.tc"; td: "ek.td"; te: "ek.te"; tf: "ek.tf"; tg: "ek.tg"; th: "ek.th"; ti: "ek.ti"; tj: "ek.tj"; tk: "ek.tk"; tl: "ek.tl"; tm: "ek.tm"; tn: "ek.tn"; to: "ek.to"; tp: "ek.tp"; tq: "ek.tq"; tr: "ek.tr"; ts: "ek.ts"; tt: "ek.tt"; tu: "ek.tu"; tv: "ek.tv"; tw: "ek.tw"; tx: "ek.tx"; ty: "ek.ty"; tz: "ek.tz"; ua: "ek.ua"; ub: "ek.ub"; uc: "ek.uc"; ud: "ek.ud"; ue: "ek.ue"; uf: "ek.uf"; ug: "ek.ug"; uh: "ek.uh"; ui: "ek.ui"; uj: "ek.uj"; uk: "ek.uk"; ul: "ek.ul"; um: "ek.um"; un: "ek.un"; uo: "ek.uo"; up: "ek.up"; uq: "ek.uq"; ur: "ek.ur"; us: "ek.us"; ut: "ek.ut"; uu: "ek.uu"; uv: "ek.uv"; uw: "ek.uw"; ux: "ek.ux"; uy: "ek.uy"; uz: "ek.uz"; va: "ek.va"; vb: "ek.vb"; vc: "ek.vc"; vd: "ek.vd"; ve: "ek.ve"; vf: "ek.vf"; vg: "ek.vg"; vh: "ek.vh"; vi: "ek.vi"; vj: "ek.vj"; vk: "ek.vk"; vl: "ek.vl"; vm: "ek.vm"; vn: "ek.vn"; vo: "ek.vo"; vp: "ek.vp"; vq: "ek.vq"; vr: "ek.vr"; vs: "ek.vs"; vt: "ek.vt"; vu: "ek.vu"; vv: "ek.vv"; vw: "ek.vw"; vx: "ek.vx"; vy: "ek.vy"; vz: "ek.vz"; wa: "ek.wa"; wb: "ek.wb"; wc: "ek.wc"; wd: "ek.wd"; we: "ek.we"; wf: "ek.wf"; wg: "ek.wg"; wh: "ek.wh"; wi: "ek.wi"; wj: "ek.wj"; wk: "ek.wk"; wl: "ek.wl"; wm: "ek.wm"; wn: "ek.wn"; wo: "ek.wo"; wp: "ek.wp"; wq: "ek.wq"; wr: "ek.wr"; ws: "ek.ws"; wt: "ek.wt"; wu: "ek.wu"; wv: "ek.wv"; ww: "ek.ww"; wx: "ek.wx"; wy: "ek.wy"; wz: "ek.wz"; xa: "ek.xa"; xb: "ek.xb"; xc: "ek.xc"; xd: "ek.xd"; xe: "ek.xe"; xf: "ek.xf"; xg: "ek.xg"; xh: "ek.xh"; xi: "ek.xi"; xj: "ek.xj"; xk: "ek.xk"; xl: "ek.xl"; xm: "ek.xm"; xn: "ek.xn"; xo: "ek.xo"; xp: "ek.xp"; xq: "ek.xq"; xr: "ek.xr"; xs: "ek.xs"; xt: "ek.xt"; xu: "ek.xu"; xv: "ek.xv"; xw: "ek.xw"; xx: "ek.xx"; xy: "ek.xy"; xz: "ek.xz"; ya: "ek.ya"; yb: "ek.yb"; yc: "ek.yc"; yd: "ek.yd"; ye: "ek.ye"; yf: "ek.yf"; yg: "ek.yg"; yh: "ek.yh"; yi: "ek.yi"; yj: "ek.yj"; yk: "ek.yk"; yl: "ek.yl"; ym: "ek.ym"; yn: "ek.yn"; yo: "ek.yo"; yp: "ek.yp"; yq: "ek.yq"; yr: "ek.yr"; ys: "ek.ys"; yt: "ek.yt"; yu: "ek.yu"; yv: "ek.yv"; yw: "ek.yw"; yx: "ek.yx"; yy: "ek.yy"; yz: "ek.yz"; za: "ek.za"; zb: "ek.zb"; zc: "ek.zc"; zd: "ek.zd"; ze: "ek.ze"; zf: "ek.zf"; zg: "ek.zg"; zh: "ek.zh"; zi: "ek.zi"; zj: "ek.zj"; zk: "ek.zk"; zl: "ek.zl"; zm: "ek.zm"; zn: "ek.zn"; zo: "ek.zo"; zp: "ek.zp"; zq: "ek.zq"; zr: "ek.zr"; zs: "ek.zs"; zt: "ek.zt"; zu: "ek.zu"; zv: "ek.zv"; zw: "ek.zw"; zx: "ek.zx"; zy: "ek.zy"; zz: "ek.zz"; }; el: { aa: "el.aa"; ab: "el.ab"; ac: "el.ac"; ad: "el.ad"; ae: "el.ae"; af: "el.af"; ag: "el.ag"; ah: "el.ah"; ai: "el.ai"; aj: "el.aj"; ak: "el.ak"; al: "el.al"; am: "el.am"; an: "el.an"; ao: "el.ao"; ap: "el.ap"; aq: "el.aq"; ar: "el.ar"; as: "el.as"; at: "el.at"; au: "el.au"; av: "el.av"; aw: "el.aw"; ax: "el.ax"; ay: "el.ay"; az: "el.az"; ba: "el.ba"; bb: "el.bb"; bc: "el.bc"; bd: "el.bd"; be: "el.be"; bf: "el.bf"; bg: "el.bg"; bh: "el.bh"; bi: "el.bi"; bj: "el.bj"; bk: "el.bk"; bl: "el.bl"; bm: "el.bm"; bn: "el.bn"; bo: "el.bo"; bp: "el.bp"; bq: "el.bq"; br: "el.br"; bs: "el.bs"; bt: "el.bt"; bu: "el.bu"; bv: "el.bv"; bw: "el.bw"; bx: "el.bx"; by: "el.by"; bz: "el.bz"; ca: "el.ca"; cb: "el.cb"; cc: "el.cc"; cd: "el.cd"; ce: "el.ce"; cf: "el.cf"; cg: "el.cg"; ch: "el.ch"; ci: "el.ci"; cj: "el.cj"; ck: "el.ck"; cl: "el.cl"; cm: "el.cm"; cn: "el.cn"; co: "el.co"; cp: "el.cp"; cq: "el.cq"; cr: "el.cr"; cs: "el.cs"; ct: "el.ct"; cu: "el.cu"; cv: "el.cv"; cw: "el.cw"; cx: "el.cx"; cy: "el.cy"; cz: "el.cz"; da: "el.da"; db: "el.db"; dc: "el.dc"; dd: "el.dd"; de: "el.de"; df: "el.df"; dg: "el.dg"; dh: "el.dh"; di: "el.di"; dj: "el.dj"; dk: "el.dk"; dl: "el.dl"; dm: "el.dm"; dn: "el.dn"; do: "el.do"; dp: "el.dp"; dq: "el.dq"; dr: "el.dr"; ds: "el.ds"; dt: "el.dt"; du: "el.du"; dv: "el.dv"; dw: "el.dw"; dx: "el.dx"; dy: "el.dy"; dz: "el.dz"; ea: "el.ea"; eb: "el.eb"; ec: "el.ec"; ed: "el.ed"; ee: "el.ee"; ef: "el.ef"; eg: "el.eg"; eh: "el.eh"; ei: "el.ei"; ej: "el.ej"; ek: "el.ek"; el: "el.el"; em: "el.em"; en: "el.en"; eo: "el.eo"; ep: "el.ep"; eq: "el.eq"; er: "el.er"; es: "el.es"; et: "el.et"; eu: "el.eu"; ev: "el.ev"; ew: "el.ew"; ex: "el.ex"; ey: "el.ey"; ez: "el.ez"; fa: "el.fa"; fb: "el.fb"; fc: "el.fc"; fd: "el.fd"; fe: "el.fe"; ff: "el.ff"; fg: "el.fg"; fh: "el.fh"; fi: "el.fi"; fj: "el.fj"; fk: "el.fk"; fl: "el.fl"; fm: "el.fm"; fn: "el.fn"; fo: "el.fo"; fp: "el.fp"; fq: "el.fq"; fr: "el.fr"; fs: "el.fs"; ft: "el.ft"; fu: "el.fu"; fv: "el.fv"; fw: "el.fw"; fx: "el.fx"; fy: "el.fy"; fz: "el.fz"; ga: "el.ga"; gb: "el.gb"; gc: "el.gc"; gd: "el.gd"; ge: "el.ge"; gf: "el.gf"; gg: "el.gg"; gh: "el.gh"; gi: "el.gi"; gj: "el.gj"; gk: "el.gk"; gl: "el.gl"; gm: "el.gm"; gn: "el.gn"; go: "el.go"; gp: "el.gp"; gq: "el.gq"; gr: "el.gr"; gs: "el.gs"; gt: "el.gt"; gu: "el.gu"; gv: "el.gv"; gw: "el.gw"; gx: "el.gx"; gy: "el.gy"; gz: "el.gz"; ha: "el.ha"; hb: "el.hb"; hc: "el.hc"; hd: "el.hd"; he: "el.he"; hf: "el.hf"; hg: "el.hg"; hh: "el.hh"; hi: "el.hi"; hj: "el.hj"; hk: "el.hk"; hl: "el.hl"; hm: "el.hm"; hn: "el.hn"; ho: "el.ho"; hp: "el.hp"; hq: "el.hq"; hr: "el.hr"; hs: "el.hs"; ht: "el.ht"; hu: "el.hu"; hv: "el.hv"; hw: "el.hw"; hx: "el.hx"; hy: "el.hy"; hz: "el.hz"; ia: "el.ia"; ib: "el.ib"; ic: "el.ic"; id: "el.id"; ie: "el.ie"; if: "el.if"; ig: "el.ig"; ih: "el.ih"; ii: "el.ii"; ij: "el.ij"; ik: "el.ik"; il: "el.il"; im: "el.im"; in: "el.in"; io: "el.io"; ip: "el.ip"; iq: "el.iq"; ir: "el.ir"; is: "el.is"; it: "el.it"; iu: "el.iu"; iv: "el.iv"; iw: "el.iw"; ix: "el.ix"; iy: "el.iy"; iz: "el.iz"; ja: "el.ja"; jb: "el.jb"; jc: "el.jc"; jd: "el.jd"; je: "el.je"; jf: "el.jf"; jg: "el.jg"; jh: "el.jh"; ji: "el.ji"; jj: "el.jj"; jk: "el.jk"; jl: "el.jl"; jm: "el.jm"; jn: "el.jn"; jo: "el.jo"; jp: "el.jp"; jq: "el.jq"; jr: "el.jr"; js: "el.js"; jt: "el.jt"; ju: "el.ju"; jv: "el.jv"; jw: "el.jw"; jx: "el.jx"; jy: "el.jy"; jz: "el.jz"; ka: "el.ka"; kb: "el.kb"; kc: "el.kc"; kd: "el.kd"; ke: "el.ke"; kf: "el.kf"; kg: "el.kg"; kh: "el.kh"; ki: "el.ki"; kj: "el.kj"; kk: "el.kk"; kl: "el.kl"; km: "el.km"; kn: "el.kn"; ko: "el.ko"; kp: "el.kp"; kq: "el.kq"; kr: "el.kr"; ks: "el.ks"; kt: "el.kt"; ku: "el.ku"; kv: "el.kv"; kw: "el.kw"; kx: "el.kx"; ky: "el.ky"; kz: "el.kz"; la: "el.la"; lb: "el.lb"; lc: "el.lc"; ld: "el.ld"; le: "el.le"; lf: "el.lf"; lg: "el.lg"; lh: "el.lh"; li: "el.li"; lj: "el.lj"; lk: "el.lk"; ll: "el.ll"; lm: "el.lm"; ln: "el.ln"; lo: "el.lo"; lp: "el.lp"; lq: "el.lq"; lr: "el.lr"; ls: "el.ls"; lt: "el.lt"; lu: "el.lu"; lv: "el.lv"; lw: "el.lw"; lx: "el.lx"; ly: "el.ly"; lz: "el.lz"; ma: "el.ma"; mb: "el.mb"; mc: "el.mc"; md: "el.md"; me: "el.me"; mf: "el.mf"; mg: "el.mg"; mh: "el.mh"; mi: "el.mi"; mj: "el.mj"; mk: "el.mk"; ml: "el.ml"; mm: "el.mm"; mn: "el.mn"; mo: "el.mo"; mp: "el.mp"; mq: "el.mq"; mr: "el.mr"; ms: "el.ms"; mt: "el.mt"; mu: "el.mu"; mv: "el.mv"; mw: "el.mw"; mx: "el.mx"; my: "el.my"; mz: "el.mz"; na: "el.na"; nb: "el.nb"; nc: "el.nc"; nd: "el.nd"; ne: "el.ne"; nf: "el.nf"; ng: "el.ng"; nh: "el.nh"; ni: "el.ni"; nj: "el.nj"; nk: "el.nk"; nl: "el.nl"; nm: "el.nm"; nn: "el.nn"; no: "el.no"; np: "el.np"; nq: "el.nq"; nr: "el.nr"; ns: "el.ns"; nt: "el.nt"; nu: "el.nu"; nv: "el.nv"; nw: "el.nw"; nx: "el.nx"; ny: "el.ny"; nz: "el.nz"; oa: "el.oa"; ob: "el.ob"; oc: "el.oc"; od: "el.od"; oe: "el.oe"; of: "el.of"; og: "el.og"; oh: "el.oh"; oi: "el.oi"; oj: "el.oj"; ok: "el.ok"; ol: "el.ol"; om: "el.om"; on: "el.on"; oo: "el.oo"; op: "el.op"; oq: "el.oq"; or: "el.or"; os: "el.os"; ot: "el.ot"; ou: "el.ou"; ov: "el.ov"; ow: "el.ow"; ox: "el.ox"; oy: "el.oy"; oz: "el.oz"; pa: "el.pa"; pb: "el.pb"; pc: "el.pc"; pd: "el.pd"; pe: "el.pe"; pf: "el.pf"; pg: "el.pg"; ph: "el.ph"; pi: "el.pi"; pj: "el.pj"; pk: "el.pk"; pl: "el.pl"; pm: "el.pm"; pn: "el.pn"; po: "el.po"; pp: "el.pp"; pq: "el.pq"; pr: "el.pr"; ps: "el.ps"; pt: "el.pt"; pu: "el.pu"; pv: "el.pv"; pw: "el.pw"; px: "el.px"; py: "el.py"; pz: "el.pz"; qa: "el.qa"; qb: "el.qb"; qc: "el.qc"; qd: "el.qd"; qe: "el.qe"; qf: "el.qf"; qg: "el.qg"; qh: "el.qh"; qi: "el.qi"; qj: "el.qj"; qk: "el.qk"; ql: "el.ql"; qm: "el.qm"; qn: "el.qn"; qo: "el.qo"; qp: "el.qp"; qq: "el.qq"; qr: "el.qr"; qs: "el.qs"; qt: "el.qt"; qu: "el.qu"; qv: "el.qv"; qw: "el.qw"; qx: "el.qx"; qy: "el.qy"; qz: "el.qz"; ra: "el.ra"; rb: "el.rb"; rc: "el.rc"; rd: "el.rd"; re: "el.re"; rf: "el.rf"; rg: "el.rg"; rh: "el.rh"; ri: "el.ri"; rj: "el.rj"; rk: "el.rk"; rl: "el.rl"; rm: "el.rm"; rn: "el.rn"; ro: "el.ro"; rp: "el.rp"; rq: "el.rq"; rr: "el.rr"; rs: "el.rs"; rt: "el.rt"; ru: "el.ru"; rv: "el.rv"; rw: "el.rw"; rx: "el.rx"; ry: "el.ry"; rz: "el.rz"; sa: "el.sa"; sb: "el.sb"; sc: "el.sc"; sd: "el.sd"; se: "el.se"; sf: "el.sf"; sg: "el.sg"; sh: "el.sh"; si: "el.si"; sj: "el.sj"; sk: "el.sk"; sl: "el.sl"; sm: "el.sm"; sn: "el.sn"; so: "el.so"; sp: "el.sp"; sq: "el.sq"; sr: "el.sr"; ss: "el.ss"; st: "el.st"; su: "el.su"; sv: "el.sv"; sw: "el.sw"; sx: "el.sx"; sy: "el.sy"; sz: "el.sz"; ta: "el.ta"; tb: "el.tb"; tc: "el.tc"; td: "el.td"; te: "el.te"; tf: "el.tf"; tg: "el.tg"; th: "el.th"; ti: "el.ti"; tj: "el.tj"; tk: "el.tk"; tl: "el.tl"; tm: "el.tm"; tn: "el.tn"; to: "el.to"; tp: "el.tp"; tq: "el.tq"; tr: "el.tr"; ts: "el.ts"; tt: "el.tt"; tu: "el.tu"; tv: "el.tv"; tw: "el.tw"; tx: "el.tx"; ty: "el.ty"; tz: "el.tz"; ua: "el.ua"; ub: "el.ub"; uc: "el.uc"; ud: "el.ud"; ue: "el.ue"; uf: "el.uf"; ug: "el.ug"; uh: "el.uh"; ui: "el.ui"; uj: "el.uj"; uk: "el.uk"; ul: "el.ul"; um: "el.um"; un: "el.un"; uo: "el.uo"; up: "el.up"; uq: "el.uq"; ur: "el.ur"; us: "el.us"; ut: "el.ut"; uu: "el.uu"; uv: "el.uv"; uw: "el.uw"; ux: "el.ux"; uy: "el.uy"; uz: "el.uz"; va: "el.va"; vb: "el.vb"; vc: "el.vc"; vd: "el.vd"; ve: "el.ve"; vf: "el.vf"; vg: "el.vg"; vh: "el.vh"; vi: "el.vi"; vj: "el.vj"; vk: "el.vk"; vl: "el.vl"; vm: "el.vm"; vn: "el.vn"; vo: "el.vo"; vp: "el.vp"; vq: "el.vq"; vr: "el.vr"; vs: "el.vs"; vt: "el.vt"; vu: "el.vu"; vv: "el.vv"; vw: "el.vw"; vx: "el.vx"; vy: "el.vy"; vz: "el.vz"; wa: "el.wa"; wb: "el.wb"; wc: "el.wc"; wd: "el.wd"; we: "el.we"; wf: "el.wf"; wg: "el.wg"; wh: "el.wh"; wi: "el.wi"; wj: "el.wj"; wk: "el.wk"; wl: "el.wl"; wm: "el.wm"; wn: "el.wn"; wo: "el.wo"; wp: "el.wp"; wq: "el.wq"; wr: "el.wr"; ws: "el.ws"; wt: "el.wt"; wu: "el.wu"; wv: "el.wv"; ww: "el.ww"; wx: "el.wx"; wy: "el.wy"; wz: "el.wz"; xa: "el.xa"; xb: "el.xb"; xc: "el.xc"; xd: "el.xd"; xe: "el.xe"; xf: "el.xf"; xg: "el.xg"; xh: "el.xh"; xi: "el.xi"; xj: "el.xj"; xk: "el.xk"; xl: "el.xl"; xm: "el.xm"; xn: "el.xn"; xo: "el.xo"; xp: "el.xp"; xq: "el.xq"; xr: "el.xr"; xs: "el.xs"; xt: "el.xt"; xu: "el.xu"; xv: "el.xv"; xw: "el.xw"; xx: "el.xx"; xy: "el.xy"; xz: "el.xz"; ya: "el.ya"; yb: "el.yb"; yc: "el.yc"; yd: "el.yd"; ye: "el.ye"; yf: "el.yf"; yg: "el.yg"; yh: "el.yh"; yi: "el.yi"; yj: "el.yj"; yk: "el.yk"; yl: "el.yl"; ym: "el.ym"; yn: "el.yn"; yo: "el.yo"; yp: "el.yp"; yq: "el.yq"; yr: "el.yr"; ys: "el.ys"; yt: "el.yt"; yu: "el.yu"; yv: "el.yv"; yw: "el.yw"; yx: "el.yx"; yy: "el.yy"; yz: "el.yz"; za: "el.za"; zb: "el.zb"; zc: "el.zc"; zd: "el.zd"; ze: "el.ze"; zf: "el.zf"; zg: "el.zg"; zh: "el.zh"; zi: "el.zi"; zj: "el.zj"; zk: "el.zk"; zl: "el.zl"; zm: "el.zm"; zn: "el.zn"; zo: "el.zo"; zp: "el.zp"; zq: "el.zq"; zr: "el.zr"; zs: "el.zs"; zt: "el.zt"; zu: "el.zu"; zv: "el.zv"; zw: "el.zw"; zx: "el.zx"; zy: "el.zy"; zz: "el.zz"; }; em: { aa: "em.aa"; ab: "em.ab"; ac: "em.ac"; ad: "em.ad"; ae: "em.ae"; af: "em.af"; ag: "em.ag"; ah: "em.ah"; ai: "em.ai"; aj: "em.aj"; ak: "em.ak"; al: "em.al"; am: "em.am"; an: "em.an"; ao: "em.ao"; ap: "em.ap"; aq: "em.aq"; ar: "em.ar"; as: "em.as"; at: "em.at"; au: "em.au"; av: "em.av"; aw: "em.aw"; ax: "em.ax"; ay: "em.ay"; az: "em.az"; ba: "em.ba"; bb: "em.bb"; bc: "em.bc"; bd: "em.bd"; be: "em.be"; bf: "em.bf"; bg: "em.bg"; bh: "em.bh"; bi: "em.bi"; bj: "em.bj"; bk: "em.bk"; bl: "em.bl"; bm: "em.bm"; bn: "em.bn"; bo: "em.bo"; bp: "em.bp"; bq: "em.bq"; br: "em.br"; bs: "em.bs"; bt: "em.bt"; bu: "em.bu"; bv: "em.bv"; bw: "em.bw"; bx: "em.bx"; by: "em.by"; bz: "em.bz"; ca: "em.ca"; cb: "em.cb"; cc: "em.cc"; cd: "em.cd"; ce: "em.ce"; cf: "em.cf"; cg: "em.cg"; ch: "em.ch"; ci: "em.ci"; cj: "em.cj"; ck: "em.ck"; cl: "em.cl"; cm: "em.cm"; cn: "em.cn"; co: "em.co"; cp: "em.cp"; cq: "em.cq"; cr: "em.cr"; cs: "em.cs"; ct: "em.ct"; cu: "em.cu"; cv: "em.cv"; cw: "em.cw"; cx: "em.cx"; cy: "em.cy"; cz: "em.cz"; da: "em.da"; db: "em.db"; dc: "em.dc"; dd: "em.dd"; de: "em.de"; df: "em.df"; dg: "em.dg"; dh: "em.dh"; di: "em.di"; dj: "em.dj"; dk: "em.dk"; dl: "em.dl"; dm: "em.dm"; dn: "em.dn"; do: "em.do"; dp: "em.dp"; dq: "em.dq"; dr: "em.dr"; ds: "em.ds"; dt: "em.dt"; du: "em.du"; dv: "em.dv"; dw: "em.dw"; dx: "em.dx"; dy: "em.dy"; dz: "em.dz"; ea: "em.ea"; eb: "em.eb"; ec: "em.ec"; ed: "em.ed"; ee: "em.ee"; ef: "em.ef"; eg: "em.eg"; eh: "em.eh"; ei: "em.ei"; ej: "em.ej"; ek: "em.ek"; el: "em.el"; em: "em.em"; en: "em.en"; eo: "em.eo"; ep: "em.ep"; eq: "em.eq"; er: "em.er"; es: "em.es"; et: "em.et"; eu: "em.eu"; ev: "em.ev"; ew: "em.ew"; ex: "em.ex"; ey: "em.ey"; ez: "em.ez"; fa: "em.fa"; fb: "em.fb"; fc: "em.fc"; fd: "em.fd"; fe: "em.fe"; ff: "em.ff"; fg: "em.fg"; fh: "em.fh"; fi: "em.fi"; fj: "em.fj"; fk: "em.fk"; fl: "em.fl"; fm: "em.fm"; fn: "em.fn"; fo: "em.fo"; fp: "em.fp"; fq: "em.fq"; fr: "em.fr"; fs: "em.fs"; ft: "em.ft"; fu: "em.fu"; fv: "em.fv"; fw: "em.fw"; fx: "em.fx"; fy: "em.fy"; fz: "em.fz"; ga: "em.ga"; gb: "em.gb"; gc: "em.gc"; gd: "em.gd"; ge: "em.ge"; gf: "em.gf"; gg: "em.gg"; gh: "em.gh"; gi: "em.gi"; gj: "em.gj"; gk: "em.gk"; gl: "em.gl"; gm: "em.gm"; gn: "em.gn"; go: "em.go"; gp: "em.gp"; gq: "em.gq"; gr: "em.gr"; gs: "em.gs"; gt: "em.gt"; gu: "em.gu"; gv: "em.gv"; gw: "em.gw"; gx: "em.gx"; gy: "em.gy"; gz: "em.gz"; ha: "em.ha"; hb: "em.hb"; hc: "em.hc"; hd: "em.hd"; he: "em.he"; hf: "em.hf"; hg: "em.hg"; hh: "em.hh"; hi: "em.hi"; hj: "em.hj"; hk: "em.hk"; hl: "em.hl"; hm: "em.hm"; hn: "em.hn"; ho: "em.ho"; hp: "em.hp"; hq: "em.hq"; hr: "em.hr"; hs: "em.hs"; ht: "em.ht"; hu: "em.hu"; hv: "em.hv"; hw: "em.hw"; hx: "em.hx"; hy: "em.hy"; hz: "em.hz"; ia: "em.ia"; ib: "em.ib"; ic: "em.ic"; id: "em.id"; ie: "em.ie"; if: "em.if"; ig: "em.ig"; ih: "em.ih"; ii: "em.ii"; ij: "em.ij"; ik: "em.ik"; il: "em.il"; im: "em.im"; in: "em.in"; io: "em.io"; ip: "em.ip"; iq: "em.iq"; ir: "em.ir"; is: "em.is"; it: "em.it"; iu: "em.iu"; iv: "em.iv"; iw: "em.iw"; ix: "em.ix"; iy: "em.iy"; iz: "em.iz"; ja: "em.ja"; jb: "em.jb"; jc: "em.jc"; jd: "em.jd"; je: "em.je"; jf: "em.jf"; jg: "em.jg"; jh: "em.jh"; ji: "em.ji"; jj: "em.jj"; jk: "em.jk"; jl: "em.jl"; jm: "em.jm"; jn: "em.jn"; jo: "em.jo"; jp: "em.jp"; jq: "em.jq"; jr: "em.jr"; js: "em.js"; jt: "em.jt"; ju: "em.ju"; jv: "em.jv"; jw: "em.jw"; jx: "em.jx"; jy: "em.jy"; jz: "em.jz"; ka: "em.ka"; kb: "em.kb"; kc: "em.kc"; kd: "em.kd"; ke: "em.ke"; kf: "em.kf"; kg: "em.kg"; kh: "em.kh"; ki: "em.ki"; kj: "em.kj"; kk: "em.kk"; kl: "em.kl"; km: "em.km"; kn: "em.kn"; ko: "em.ko"; kp: "em.kp"; kq: "em.kq"; kr: "em.kr"; ks: "em.ks"; kt: "em.kt"; ku: "em.ku"; kv: "em.kv"; kw: "em.kw"; kx: "em.kx"; ky: "em.ky"; kz: "em.kz"; la: "em.la"; lb: "em.lb"; lc: "em.lc"; ld: "em.ld"; le: "em.le"; lf: "em.lf"; lg: "em.lg"; lh: "em.lh"; li: "em.li"; lj: "em.lj"; lk: "em.lk"; ll: "em.ll"; lm: "em.lm"; ln: "em.ln"; lo: "em.lo"; lp: "em.lp"; lq: "em.lq"; lr: "em.lr"; ls: "em.ls"; lt: "em.lt"; lu: "em.lu"; lv: "em.lv"; lw: "em.lw"; lx: "em.lx"; ly: "em.ly"; lz: "em.lz"; ma: "em.ma"; mb: "em.mb"; mc: "em.mc"; md: "em.md"; me: "em.me"; mf: "em.mf"; mg: "em.mg"; mh: "em.mh"; mi: "em.mi"; mj: "em.mj"; mk: "em.mk"; ml: "em.ml"; mm: "em.mm"; mn: "em.mn"; mo: "em.mo"; mp: "em.mp"; mq: "em.mq"; mr: "em.mr"; ms: "em.ms"; mt: "em.mt"; mu: "em.mu"; mv: "em.mv"; mw: "em.mw"; mx: "em.mx"; my: "em.my"; mz: "em.mz"; na: "em.na"; nb: "em.nb"; nc: "em.nc"; nd: "em.nd"; ne: "em.ne"; nf: "em.nf"; ng: "em.ng"; nh: "em.nh"; ni: "em.ni"; nj: "em.nj"; nk: "em.nk"; nl: "em.nl"; nm: "em.nm"; nn: "em.nn"; no: "em.no"; np: "em.np"; nq: "em.nq"; nr: "em.nr"; ns: "em.ns"; nt: "em.nt"; nu: "em.nu"; nv: "em.nv"; nw: "em.nw"; nx: "em.nx"; ny: "em.ny"; nz: "em.nz"; oa: "em.oa"; ob: "em.ob"; oc: "em.oc"; od: "em.od"; oe: "em.oe"; of: "em.of"; og: "em.og"; oh: "em.oh"; oi: "em.oi"; oj: "em.oj"; ok: "em.ok"; ol: "em.ol"; om: "em.om"; on: "em.on"; oo: "em.oo"; op: "em.op"; oq: "em.oq"; or: "em.or"; os: "em.os"; ot: "em.ot"; ou: "em.ou"; ov: "em.ov"; ow: "em.ow"; ox: "em.ox"; oy: "em.oy"; oz: "em.oz"; pa: "em.pa"; pb: "em.pb"; pc: "em.pc"; pd: "em.pd"; pe: "em.pe"; pf: "em.pf"; pg: "em.pg"; ph: "em.ph"; pi: "em.pi"; pj: "em.pj"; pk: "em.pk"; pl: "em.pl"; pm: "em.pm"; pn: "em.pn"; po: "em.po"; pp: "em.pp"; pq: "em.pq"; pr: "em.pr"; ps: "em.ps"; pt: "em.pt"; pu: "em.pu"; pv: "em.pv"; pw: "em.pw"; px: "em.px"; py: "em.py"; pz: "em.pz"; qa: "em.qa"; qb: "em.qb"; qc: "em.qc"; qd: "em.qd"; qe: "em.qe"; qf: "em.qf"; qg: "em.qg"; qh: "em.qh"; qi: "em.qi"; qj: "em.qj"; qk: "em.qk"; ql: "em.ql"; qm: "em.qm"; qn: "em.qn"; qo: "em.qo"; qp: "em.qp"; qq: "em.qq"; qr: "em.qr"; qs: "em.qs"; qt: "em.qt"; qu: "em.qu"; qv: "em.qv"; qw: "em.qw"; qx: "em.qx"; qy: "em.qy"; qz: "em.qz"; ra: "em.ra"; rb: "em.rb"; rc: "em.rc"; rd: "em.rd"; re: "em.re"; rf: "em.rf"; rg: "em.rg"; rh: "em.rh"; ri: "em.ri"; rj: "em.rj"; rk: "em.rk"; rl: "em.rl"; rm: "em.rm"; rn: "em.rn"; ro: "em.ro"; rp: "em.rp"; rq: "em.rq"; rr: "em.rr"; rs: "em.rs"; rt: "em.rt"; ru: "em.ru"; rv: "em.rv"; rw: "em.rw"; rx: "em.rx"; ry: "em.ry"; rz: "em.rz"; sa: "em.sa"; sb: "em.sb"; sc: "em.sc"; sd: "em.sd"; se: "em.se"; sf: "em.sf"; sg: "em.sg"; sh: "em.sh"; si: "em.si"; sj: "em.sj"; sk: "em.sk"; sl: "em.sl"; sm: "em.sm"; sn: "em.sn"; so: "em.so"; sp: "em.sp"; sq: "em.sq"; sr: "em.sr"; ss: "em.ss"; st: "em.st"; su: "em.su"; sv: "em.sv"; sw: "em.sw"; sx: "em.sx"; sy: "em.sy"; sz: "em.sz"; ta: "em.ta"; tb: "em.tb"; tc: "em.tc"; td: "em.td"; te: "em.te"; tf: "em.tf"; tg: "em.tg"; th: "em.th"; ti: "em.ti"; tj: "em.tj"; tk: "em.tk"; tl: "em.tl"; tm: "em.tm"; tn: "em.tn"; to: "em.to"; tp: "em.tp"; tq: "em.tq"; tr: "em.tr"; ts: "em.ts"; tt: "em.tt"; tu: "em.tu"; tv: "em.tv"; tw: "em.tw"; tx: "em.tx"; ty: "em.ty"; tz: "em.tz"; ua: "em.ua"; ub: "em.ub"; uc: "em.uc"; ud: "em.ud"; ue: "em.ue"; uf: "em.uf"; ug: "em.ug"; uh: "em.uh"; ui: "em.ui"; uj: "em.uj"; uk: "em.uk"; ul: "em.ul"; um: "em.um"; un: "em.un"; uo: "em.uo"; up: "em.up"; uq: "em.uq"; ur: "em.ur"; us: "em.us"; ut: "em.ut"; uu: "em.uu"; uv: "em.uv"; uw: "em.uw"; ux: "em.ux"; uy: "em.uy"; uz: "em.uz"; va: "em.va"; vb: "em.vb"; vc: "em.vc"; vd: "em.vd"; ve: "em.ve"; vf: "em.vf"; vg: "em.vg"; vh: "em.vh"; vi: "em.vi"; vj: "em.vj"; vk: "em.vk"; vl: "em.vl"; vm: "em.vm"; vn: "em.vn"; vo: "em.vo"; vp: "em.vp"; vq: "em.vq"; vr: "em.vr"; vs: "em.vs"; vt: "em.vt"; vu: "em.vu"; vv: "em.vv"; vw: "em.vw"; vx: "em.vx"; vy: "em.vy"; vz: "em.vz"; wa: "em.wa"; wb: "em.wb"; wc: "em.wc"; wd: "em.wd"; we: "em.we"; wf: "em.wf"; wg: "em.wg"; wh: "em.wh"; wi: "em.wi"; wj: "em.wj"; wk: "em.wk"; wl: "em.wl"; wm: "em.wm"; wn: "em.wn"; wo: "em.wo"; wp: "em.wp"; wq: "em.wq"; wr: "em.wr"; ws: "em.ws"; wt: "em.wt"; wu: "em.wu"; wv: "em.wv"; ww: "em.ww"; wx: "em.wx"; wy: "em.wy"; wz: "em.wz"; xa: "em.xa"; xb: "em.xb"; xc: "em.xc"; xd: "em.xd"; xe: "em.xe"; xf: "em.xf"; xg: "em.xg"; xh: "em.xh"; xi: "em.xi"; xj: "em.xj"; xk: "em.xk"; xl: "em.xl"; xm: "em.xm"; xn: "em.xn"; xo: "em.xo"; xp: "em.xp"; xq: "em.xq"; xr: "em.xr"; xs: "em.xs"; xt: "em.xt"; xu: "em.xu"; xv: "em.xv"; xw: "em.xw"; xx: "em.xx"; xy: "em.xy"; xz: "em.xz"; ya: "em.ya"; yb: "em.yb"; yc: "em.yc"; yd: "em.yd"; ye: "em.ye"; yf: "em.yf"; yg: "em.yg"; yh: "em.yh"; yi: "em.yi"; yj: "em.yj"; yk: "em.yk"; yl: "em.yl"; ym: "em.ym"; yn: "em.yn"; yo: "em.yo"; yp: "em.yp"; yq: "em.yq"; yr: "em.yr"; ys: "em.ys"; yt: "em.yt"; yu: "em.yu"; yv: "em.yv"; yw: "em.yw"; yx: "em.yx"; yy: "em.yy"; yz: "em.yz"; za: "em.za"; zb: "em.zb"; zc: "em.zc"; zd: "em.zd"; ze: "em.ze"; zf: "em.zf"; zg: "em.zg"; zh: "em.zh"; zi: "em.zi"; zj: "em.zj"; zk: "em.zk"; zl: "em.zl"; zm: "em.zm"; zn: "em.zn"; zo: "em.zo"; zp: "em.zp"; zq: "em.zq"; zr: "em.zr"; zs: "em.zs"; zt: "em.zt"; zu: "em.zu"; zv: "em.zv"; zw: "em.zw"; zx: "em.zx"; zy: "em.zy"; zz: "em.zz"; }; en: { aa: "en.aa"; ab: "en.ab"; ac: "en.ac"; ad: "en.ad"; ae: "en.ae"; af: "en.af"; ag: "en.ag"; ah: "en.ah"; ai: "en.ai"; aj: "en.aj"; ak: "en.ak"; al: "en.al"; am: "en.am"; an: "en.an"; ao: "en.ao"; ap: "en.ap"; aq: "en.aq"; ar: "en.ar"; as: "en.as"; at: "en.at"; au: "en.au"; av: "en.av"; aw: "en.aw"; ax: "en.ax"; ay: "en.ay"; az: "en.az"; ba: "en.ba"; bb: "en.bb"; bc: "en.bc"; bd: "en.bd"; be: "en.be"; bf: "en.bf"; bg: "en.bg"; bh: "en.bh"; bi: "en.bi"; bj: "en.bj"; bk: "en.bk"; bl: "en.bl"; bm: "en.bm"; bn: "en.bn"; bo: "en.bo"; bp: "en.bp"; bq: "en.bq"; br: "en.br"; bs: "en.bs"; bt: "en.bt"; bu: "en.bu"; bv: "en.bv"; bw: "en.bw"; bx: "en.bx"; by: "en.by"; bz: "en.bz"; ca: "en.ca"; cb: "en.cb"; cc: "en.cc"; cd: "en.cd"; ce: "en.ce"; cf: "en.cf"; cg: "en.cg"; ch: "en.ch"; ci: "en.ci"; cj: "en.cj"; ck: "en.ck"; cl: "en.cl"; cm: "en.cm"; cn: "en.cn"; co: "en.co"; cp: "en.cp"; cq: "en.cq"; cr: "en.cr"; cs: "en.cs"; ct: "en.ct"; cu: "en.cu"; cv: "en.cv"; cw: "en.cw"; cx: "en.cx"; cy: "en.cy"; cz: "en.cz"; da: "en.da"; db: "en.db"; dc: "en.dc"; dd: "en.dd"; de: "en.de"; df: "en.df"; dg: "en.dg"; dh: "en.dh"; di: "en.di"; dj: "en.dj"; dk: "en.dk"; dl: "en.dl"; dm: "en.dm"; dn: "en.dn"; do: "en.do"; dp: "en.dp"; dq: "en.dq"; dr: "en.dr"; ds: "en.ds"; dt: "en.dt"; du: "en.du"; dv: "en.dv"; dw: "en.dw"; dx: "en.dx"; dy: "en.dy"; dz: "en.dz"; ea: "en.ea"; eb: "en.eb"; ec: "en.ec"; ed: "en.ed"; ee: "en.ee"; ef: "en.ef"; eg: "en.eg"; eh: "en.eh"; ei: "en.ei"; ej: "en.ej"; ek: "en.ek"; el: "en.el"; em: "en.em"; en: "en.en"; eo: "en.eo"; ep: "en.ep"; eq: "en.eq"; er: "en.er"; es: "en.es"; et: "en.et"; eu: "en.eu"; ev: "en.ev"; ew: "en.ew"; ex: "en.ex"; ey: "en.ey"; ez: "en.ez"; fa: "en.fa"; fb: "en.fb"; fc: "en.fc"; fd: "en.fd"; fe: "en.fe"; ff: "en.ff"; fg: "en.fg"; fh: "en.fh"; fi: "en.fi"; fj: "en.fj"; fk: "en.fk"; fl: "en.fl"; fm: "en.fm"; fn: "en.fn"; fo: "en.fo"; fp: "en.fp"; fq: "en.fq"; fr: "en.fr"; fs: "en.fs"; ft: "en.ft"; fu: "en.fu"; fv: "en.fv"; fw: "en.fw"; fx: "en.fx"; fy: "en.fy"; fz: "en.fz"; ga: "en.ga"; gb: "en.gb"; gc: "en.gc"; gd: "en.gd"; ge: "en.ge"; gf: "en.gf"; gg: "en.gg"; gh: "en.gh"; gi: "en.gi"; gj: "en.gj"; gk: "en.gk"; gl: "en.gl"; gm: "en.gm"; gn: "en.gn"; go: "en.go"; gp: "en.gp"; gq: "en.gq"; gr: "en.gr"; gs: "en.gs"; gt: "en.gt"; gu: "en.gu"; gv: "en.gv"; gw: "en.gw"; gx: "en.gx"; gy: "en.gy"; gz: "en.gz"; ha: "en.ha"; hb: "en.hb"; hc: "en.hc"; hd: "en.hd"; he: "en.he"; hf: "en.hf"; hg: "en.hg"; hh: "en.hh"; hi: "en.hi"; hj: "en.hj"; hk: "en.hk"; hl: "en.hl"; hm: "en.hm"; hn: "en.hn"; ho: "en.ho"; hp: "en.hp"; hq: "en.hq"; hr: "en.hr"; hs: "en.hs"; ht: "en.ht"; hu: "en.hu"; hv: "en.hv"; hw: "en.hw"; hx: "en.hx"; hy: "en.hy"; hz: "en.hz"; ia: "en.ia"; ib: "en.ib"; ic: "en.ic"; id: "en.id"; ie: "en.ie"; if: "en.if"; ig: "en.ig"; ih: "en.ih"; ii: "en.ii"; ij: "en.ij"; ik: "en.ik"; il: "en.il"; im: "en.im"; in: "en.in"; io: "en.io"; ip: "en.ip"; iq: "en.iq"; ir: "en.ir"; is: "en.is"; it: "en.it"; iu: "en.iu"; iv: "en.iv"; iw: "en.iw"; ix: "en.ix"; iy: "en.iy"; iz: "en.iz"; ja: "en.ja"; jb: "en.jb"; jc: "en.jc"; jd: "en.jd"; je: "en.je"; jf: "en.jf"; jg: "en.jg"; jh: "en.jh"; ji: "en.ji"; jj: "en.jj"; jk: "en.jk"; jl: "en.jl"; jm: "en.jm"; jn: "en.jn"; jo: "en.jo"; jp: "en.jp"; jq: "en.jq"; jr: "en.jr"; js: "en.js"; jt: "en.jt"; ju: "en.ju"; jv: "en.jv"; jw: "en.jw"; jx: "en.jx"; jy: "en.jy"; jz: "en.jz"; ka: "en.ka"; kb: "en.kb"; kc: "en.kc"; kd: "en.kd"; ke: "en.ke"; kf: "en.kf"; kg: "en.kg"; kh: "en.kh"; ki: "en.ki"; kj: "en.kj"; kk: "en.kk"; kl: "en.kl"; km: "en.km"; kn: "en.kn"; ko: "en.ko"; kp: "en.kp"; kq: "en.kq"; kr: "en.kr"; ks: "en.ks"; kt: "en.kt"; ku: "en.ku"; kv: "en.kv"; kw: "en.kw"; kx: "en.kx"; ky: "en.ky"; kz: "en.kz"; la: "en.la"; lb: "en.lb"; lc: "en.lc"; ld: "en.ld"; le: "en.le"; lf: "en.lf"; lg: "en.lg"; lh: "en.lh"; li: "en.li"; lj: "en.lj"; lk: "en.lk"; ll: "en.ll"; lm: "en.lm"; ln: "en.ln"; lo: "en.lo"; lp: "en.lp"; lq: "en.lq"; lr: "en.lr"; ls: "en.ls"; lt: "en.lt"; lu: "en.lu"; lv: "en.lv"; lw: "en.lw"; lx: "en.lx"; ly: "en.ly"; lz: "en.lz"; ma: "en.ma"; mb: "en.mb"; mc: "en.mc"; md: "en.md"; me: "en.me"; mf: "en.mf"; mg: "en.mg"; mh: "en.mh"; mi: "en.mi"; mj: "en.mj"; mk: "en.mk"; ml: "en.ml"; mm: "en.mm"; mn: "en.mn"; mo: "en.mo"; mp: "en.mp"; mq: "en.mq"; mr: "en.mr"; ms: "en.ms"; mt: "en.mt"; mu: "en.mu"; mv: "en.mv"; mw: "en.mw"; mx: "en.mx"; my: "en.my"; mz: "en.mz"; na: "en.na"; nb: "en.nb"; nc: "en.nc"; nd: "en.nd"; ne: "en.ne"; nf: "en.nf"; ng: "en.ng"; nh: "en.nh"; ni: "en.ni"; nj: "en.nj"; nk: "en.nk"; nl: "en.nl"; nm: "en.nm"; nn: "en.nn"; no: "en.no"; np: "en.np"; nq: "en.nq"; nr: "en.nr"; ns: "en.ns"; nt: "en.nt"; nu: "en.nu"; nv: "en.nv"; nw: "en.nw"; nx: "en.nx"; ny: "en.ny"; nz: "en.nz"; oa: "en.oa"; ob: "en.ob"; oc: "en.oc"; od: "en.od"; oe: "en.oe"; of: "en.of"; og: "en.og"; oh: "en.oh"; oi: "en.oi"; oj: "en.oj"; ok: "en.ok"; ol: "en.ol"; om: "en.om"; on: "en.on"; oo: "en.oo"; op: "en.op"; oq: "en.oq"; or: "en.or"; os: "en.os"; ot: "en.ot"; ou: "en.ou"; ov: "en.ov"; ow: "en.ow"; ox: "en.ox"; oy: "en.oy"; oz: "en.oz"; pa: "en.pa"; pb: "en.pb"; pc: "en.pc"; pd: "en.pd"; pe: "en.pe"; pf: "en.pf"; pg: "en.pg"; ph: "en.ph"; pi: "en.pi"; pj: "en.pj"; pk: "en.pk"; pl: "en.pl"; pm: "en.pm"; pn: "en.pn"; po: "en.po"; pp: "en.pp"; pq: "en.pq"; pr: "en.pr"; ps: "en.ps"; pt: "en.pt"; pu: "en.pu"; pv: "en.pv"; pw: "en.pw"; px: "en.px"; py: "en.py"; pz: "en.pz"; qa: "en.qa"; qb: "en.qb"; qc: "en.qc"; qd: "en.qd"; qe: "en.qe"; qf: "en.qf"; qg: "en.qg"; qh: "en.qh"; qi: "en.qi"; qj: "en.qj"; qk: "en.qk"; ql: "en.ql"; qm: "en.qm"; qn: "en.qn"; qo: "en.qo"; qp: "en.qp"; qq: "en.qq"; qr: "en.qr"; qs: "en.qs"; qt: "en.qt"; qu: "en.qu"; qv: "en.qv"; qw: "en.qw"; qx: "en.qx"; qy: "en.qy"; qz: "en.qz"; ra: "en.ra"; rb: "en.rb"; rc: "en.rc"; rd: "en.rd"; re: "en.re"; rf: "en.rf"; rg: "en.rg"; rh: "en.rh"; ri: "en.ri"; rj: "en.rj"; rk: "en.rk"; rl: "en.rl"; rm: "en.rm"; rn: "en.rn"; ro: "en.ro"; rp: "en.rp"; rq: "en.rq"; rr: "en.rr"; rs: "en.rs"; rt: "en.rt"; ru: "en.ru"; rv: "en.rv"; rw: "en.rw"; rx: "en.rx"; ry: "en.ry"; rz: "en.rz"; sa: "en.sa"; sb: "en.sb"; sc: "en.sc"; sd: "en.sd"; se: "en.se"; sf: "en.sf"; sg: "en.sg"; sh: "en.sh"; si: "en.si"; sj: "en.sj"; sk: "en.sk"; sl: "en.sl"; sm: "en.sm"; sn: "en.sn"; so: "en.so"; sp: "en.sp"; sq: "en.sq"; sr: "en.sr"; ss: "en.ss"; st: "en.st"; su: "en.su"; sv: "en.sv"; sw: "en.sw"; sx: "en.sx"; sy: "en.sy"; sz: "en.sz"; ta: "en.ta"; tb: "en.tb"; tc: "en.tc"; td: "en.td"; te: "en.te"; tf: "en.tf"; tg: "en.tg"; th: "en.th"; ti: "en.ti"; tj: "en.tj"; tk: "en.tk"; tl: "en.tl"; tm: "en.tm"; tn: "en.tn"; to: "en.to"; tp: "en.tp"; tq: "en.tq"; tr: "en.tr"; ts: "en.ts"; tt: "en.tt"; tu: "en.tu"; tv: "en.tv"; tw: "en.tw"; tx: "en.tx"; ty: "en.ty"; tz: "en.tz"; ua: "en.ua"; ub: "en.ub"; uc: "en.uc"; ud: "en.ud"; ue: "en.ue"; uf: "en.uf"; ug: "en.ug"; uh: "en.uh"; ui: "en.ui"; uj: "en.uj"; uk: "en.uk"; ul: "en.ul"; um: "en.um"; un: "en.un"; uo: "en.uo"; up: "en.up"; uq: "en.uq"; ur: "en.ur"; us: "en.us"; ut: "en.ut"; uu: "en.uu"; uv: "en.uv"; uw: "en.uw"; ux: "en.ux"; uy: "en.uy"; uz: "en.uz"; va: "en.va"; vb: "en.vb"; vc: "en.vc"; vd: "en.vd"; ve: "en.ve"; vf: "en.vf"; vg: "en.vg"; vh: "en.vh"; vi: "en.vi"; vj: "en.vj"; vk: "en.vk"; vl: "en.vl"; vm: "en.vm"; vn: "en.vn"; vo: "en.vo"; vp: "en.vp"; vq: "en.vq"; vr: "en.vr"; vs: "en.vs"; vt: "en.vt"; vu: "en.vu"; vv: "en.vv"; vw: "en.vw"; vx: "en.vx"; vy: "en.vy"; vz: "en.vz"; wa: "en.wa"; wb: "en.wb"; wc: "en.wc"; wd: "en.wd"; we: "en.we"; wf: "en.wf"; wg: "en.wg"; wh: "en.wh"; wi: "en.wi"; wj: "en.wj"; wk: "en.wk"; wl: "en.wl"; wm: "en.wm"; wn: "en.wn"; wo: "en.wo"; wp: "en.wp"; wq: "en.wq"; wr: "en.wr"; ws: "en.ws"; wt: "en.wt"; wu: "en.wu"; wv: "en.wv"; ww: "en.ww"; wx: "en.wx"; wy: "en.wy"; wz: "en.wz"; xa: "en.xa"; xb: "en.xb"; xc: "en.xc"; xd: "en.xd"; xe: "en.xe"; xf: "en.xf"; xg: "en.xg"; xh: "en.xh"; xi: "en.xi"; xj: "en.xj"; xk: "en.xk"; xl: "en.xl"; xm: "en.xm"; xn: "en.xn"; xo: "en.xo"; xp: "en.xp"; xq: "en.xq"; xr: "en.xr"; xs: "en.xs"; xt: "en.xt"; xu: "en.xu"; xv: "en.xv"; xw: "en.xw"; xx: "en.xx"; xy: "en.xy"; xz: "en.xz"; ya: "en.ya"; yb: "en.yb"; yc: "en.yc"; yd: "en.yd"; ye: "en.ye"; yf: "en.yf"; yg: "en.yg"; yh: "en.yh"; yi: "en.yi"; yj: "en.yj"; yk: "en.yk"; yl: "en.yl"; ym: "en.ym"; yn: "en.yn"; yo: "en.yo"; yp: "en.yp"; yq: "en.yq"; yr: "en.yr"; ys: "en.ys"; yt: "en.yt"; yu: "en.yu"; yv: "en.yv"; yw: "en.yw"; yx: "en.yx"; yy: "en.yy"; yz: "en.yz"; za: "en.za"; zb: "en.zb"; zc: "en.zc"; zd: "en.zd"; ze: "en.ze"; zf: "en.zf"; zg: "en.zg"; zh: "en.zh"; zi: "en.zi"; zj: "en.zj"; zk: "en.zk"; zl: "en.zl"; zm: "en.zm"; zn: "en.zn"; zo: "en.zo"; zp: "en.zp"; zq: "en.zq"; zr: "en.zr"; zs: "en.zs"; zt: "en.zt"; zu: "en.zu"; zv: "en.zv"; zw: "en.zw"; zx: "en.zx"; zy: "en.zy"; zz: "en.zz"; }; eo: { aa: "eo.aa"; ab: "eo.ab"; ac: "eo.ac"; ad: "eo.ad"; ae: "eo.ae"; af: "eo.af"; ag: "eo.ag"; ah: "eo.ah"; ai: "eo.ai"; aj: "eo.aj"; ak: "eo.ak"; al: "eo.al"; am: "eo.am"; an: "eo.an"; ao: "eo.ao"; ap: "eo.ap"; aq: "eo.aq"; ar: "eo.ar"; as: "eo.as"; at: "eo.at"; au: "eo.au"; av: "eo.av"; aw: "eo.aw"; ax: "eo.ax"; ay: "eo.ay"; az: "eo.az"; ba: "eo.ba"; bb: "eo.bb"; bc: "eo.bc"; bd: "eo.bd"; be: "eo.be"; bf: "eo.bf"; bg: "eo.bg"; bh: "eo.bh"; bi: "eo.bi"; bj: "eo.bj"; bk: "eo.bk"; bl: "eo.bl"; bm: "eo.bm"; bn: "eo.bn"; bo: "eo.bo"; bp: "eo.bp"; bq: "eo.bq"; br: "eo.br"; bs: "eo.bs"; bt: "eo.bt"; bu: "eo.bu"; bv: "eo.bv"; bw: "eo.bw"; bx: "eo.bx"; by: "eo.by"; bz: "eo.bz"; ca: "eo.ca"; cb: "eo.cb"; cc: "eo.cc"; cd: "eo.cd"; ce: "eo.ce"; cf: "eo.cf"; cg: "eo.cg"; ch: "eo.ch"; ci: "eo.ci"; cj: "eo.cj"; ck: "eo.ck"; cl: "eo.cl"; cm: "eo.cm"; cn: "eo.cn"; co: "eo.co"; cp: "eo.cp"; cq: "eo.cq"; cr: "eo.cr"; cs: "eo.cs"; ct: "eo.ct"; cu: "eo.cu"; cv: "eo.cv"; cw: "eo.cw"; cx: "eo.cx"; cy: "eo.cy"; cz: "eo.cz"; da: "eo.da"; db: "eo.db"; dc: "eo.dc"; dd: "eo.dd"; de: "eo.de"; df: "eo.df"; dg: "eo.dg"; dh: "eo.dh"; di: "eo.di"; dj: "eo.dj"; dk: "eo.dk"; dl: "eo.dl"; dm: "eo.dm"; dn: "eo.dn"; do: "eo.do"; dp: "eo.dp"; dq: "eo.dq"; dr: "eo.dr"; ds: "eo.ds"; dt: "eo.dt"; du: "eo.du"; dv: "eo.dv"; dw: "eo.dw"; dx: "eo.dx"; dy: "eo.dy"; dz: "eo.dz"; ea: "eo.ea"; eb: "eo.eb"; ec: "eo.ec"; ed: "eo.ed"; ee: "eo.ee"; ef: "eo.ef"; eg: "eo.eg"; eh: "eo.eh"; ei: "eo.ei"; ej: "eo.ej"; ek: "eo.ek"; el: "eo.el"; em: "eo.em"; en: "eo.en"; eo: "eo.eo"; ep: "eo.ep"; eq: "eo.eq"; er: "eo.er"; es: "eo.es"; et: "eo.et"; eu: "eo.eu"; ev: "eo.ev"; ew: "eo.ew"; ex: "eo.ex"; ey: "eo.ey"; ez: "eo.ez"; fa: "eo.fa"; fb: "eo.fb"; fc: "eo.fc"; fd: "eo.fd"; fe: "eo.fe"; ff: "eo.ff"; fg: "eo.fg"; fh: "eo.fh"; fi: "eo.fi"; fj: "eo.fj"; fk: "eo.fk"; fl: "eo.fl"; fm: "eo.fm"; fn: "eo.fn"; fo: "eo.fo"; fp: "eo.fp"; fq: "eo.fq"; fr: "eo.fr"; fs: "eo.fs"; ft: "eo.ft"; fu: "eo.fu"; fv: "eo.fv"; fw: "eo.fw"; fx: "eo.fx"; fy: "eo.fy"; fz: "eo.fz"; ga: "eo.ga"; gb: "eo.gb"; gc: "eo.gc"; gd: "eo.gd"; ge: "eo.ge"; gf: "eo.gf"; gg: "eo.gg"; gh: "eo.gh"; gi: "eo.gi"; gj: "eo.gj"; gk: "eo.gk"; gl: "eo.gl"; gm: "eo.gm"; gn: "eo.gn"; go: "eo.go"; gp: "eo.gp"; gq: "eo.gq"; gr: "eo.gr"; gs: "eo.gs"; gt: "eo.gt"; gu: "eo.gu"; gv: "eo.gv"; gw: "eo.gw"; gx: "eo.gx"; gy: "eo.gy"; gz: "eo.gz"; ha: "eo.ha"; hb: "eo.hb"; hc: "eo.hc"; hd: "eo.hd"; he: "eo.he"; hf: "eo.hf"; hg: "eo.hg"; hh: "eo.hh"; hi: "eo.hi"; hj: "eo.hj"; hk: "eo.hk"; hl: "eo.hl"; hm: "eo.hm"; hn: "eo.hn"; ho: "eo.ho"; hp: "eo.hp"; hq: "eo.hq"; hr: "eo.hr"; hs: "eo.hs"; ht: "eo.ht"; hu: "eo.hu"; hv: "eo.hv"; hw: "eo.hw"; hx: "eo.hx"; hy: "eo.hy"; hz: "eo.hz"; ia: "eo.ia"; ib: "eo.ib"; ic: "eo.ic"; id: "eo.id"; ie: "eo.ie"; if: "eo.if"; ig: "eo.ig"; ih: "eo.ih"; ii: "eo.ii"; ij: "eo.ij"; ik: "eo.ik"; il: "eo.il"; im: "eo.im"; in: "eo.in"; io: "eo.io"; ip: "eo.ip"; iq: "eo.iq"; ir: "eo.ir"; is: "eo.is"; it: "eo.it"; iu: "eo.iu"; iv: "eo.iv"; iw: "eo.iw"; ix: "eo.ix"; iy: "eo.iy"; iz: "eo.iz"; ja: "eo.ja"; jb: "eo.jb"; jc: "eo.jc"; jd: "eo.jd"; je: "eo.je"; jf: "eo.jf"; jg: "eo.jg"; jh: "eo.jh"; ji: "eo.ji"; jj: "eo.jj"; jk: "eo.jk"; jl: "eo.jl"; jm: "eo.jm"; jn: "eo.jn"; jo: "eo.jo"; jp: "eo.jp"; jq: "eo.jq"; jr: "eo.jr"; js: "eo.js"; jt: "eo.jt"; ju: "eo.ju"; jv: "eo.jv"; jw: "eo.jw"; jx: "eo.jx"; jy: "eo.jy"; jz: "eo.jz"; ka: "eo.ka"; kb: "eo.kb"; kc: "eo.kc"; kd: "eo.kd"; ke: "eo.ke"; kf: "eo.kf"; kg: "eo.kg"; kh: "eo.kh"; ki: "eo.ki"; kj: "eo.kj"; kk: "eo.kk"; kl: "eo.kl"; km: "eo.km"; kn: "eo.kn"; ko: "eo.ko"; kp: "eo.kp"; kq: "eo.kq"; kr: "eo.kr"; ks: "eo.ks"; kt: "eo.kt"; ku: "eo.ku"; kv: "eo.kv"; kw: "eo.kw"; kx: "eo.kx"; ky: "eo.ky"; kz: "eo.kz"; la: "eo.la"; lb: "eo.lb"; lc: "eo.lc"; ld: "eo.ld"; le: "eo.le"; lf: "eo.lf"; lg: "eo.lg"; lh: "eo.lh"; li: "eo.li"; lj: "eo.lj"; lk: "eo.lk"; ll: "eo.ll"; lm: "eo.lm"; ln: "eo.ln"; lo: "eo.lo"; lp: "eo.lp"; lq: "eo.lq"; lr: "eo.lr"; ls: "eo.ls"; lt: "eo.lt"; lu: "eo.lu"; lv: "eo.lv"; lw: "eo.lw"; lx: "eo.lx"; ly: "eo.ly"; lz: "eo.lz"; ma: "eo.ma"; mb: "eo.mb"; mc: "eo.mc"; md: "eo.md"; me: "eo.me"; mf: "eo.mf"; mg: "eo.mg"; mh: "eo.mh"; mi: "eo.mi"; mj: "eo.mj"; mk: "eo.mk"; ml: "eo.ml"; mm: "eo.mm"; mn: "eo.mn"; mo: "eo.mo"; mp: "eo.mp"; mq: "eo.mq"; mr: "eo.mr"; ms: "eo.ms"; mt: "eo.mt"; mu: "eo.mu"; mv: "eo.mv"; mw: "eo.mw"; mx: "eo.mx"; my: "eo.my"; mz: "eo.mz"; na: "eo.na"; nb: "eo.nb"; nc: "eo.nc"; nd: "eo.nd"; ne: "eo.ne"; nf: "eo.nf"; ng: "eo.ng"; nh: "eo.nh"; ni: "eo.ni"; nj: "eo.nj"; nk: "eo.nk"; nl: "eo.nl"; nm: "eo.nm"; nn: "eo.nn"; no: "eo.no"; np: "eo.np"; nq: "eo.nq"; nr: "eo.nr"; ns: "eo.ns"; nt: "eo.nt"; nu: "eo.nu"; nv: "eo.nv"; nw: "eo.nw"; nx: "eo.nx"; ny: "eo.ny"; nz: "eo.nz"; oa: "eo.oa"; ob: "eo.ob"; oc: "eo.oc"; od: "eo.od"; oe: "eo.oe"; of: "eo.of"; og: "eo.og"; oh: "eo.oh"; oi: "eo.oi"; oj: "eo.oj"; ok: "eo.ok"; ol: "eo.ol"; om: "eo.om"; on: "eo.on"; oo: "eo.oo"; op: "eo.op"; oq: "eo.oq"; or: "eo.or"; os: "eo.os"; ot: "eo.ot"; ou: "eo.ou"; ov: "eo.ov"; ow: "eo.ow"; ox: "eo.ox"; oy: "eo.oy"; oz: "eo.oz"; pa: "eo.pa"; pb: "eo.pb"; pc: "eo.pc"; pd: "eo.pd"; pe: "eo.pe"; pf: "eo.pf"; pg: "eo.pg"; ph: "eo.ph"; pi: "eo.pi"; pj: "eo.pj"; pk: "eo.pk"; pl: "eo.pl"; pm: "eo.pm"; pn: "eo.pn"; po: "eo.po"; pp: "eo.pp"; pq: "eo.pq"; pr: "eo.pr"; ps: "eo.ps"; pt: "eo.pt"; pu: "eo.pu"; pv: "eo.pv"; pw: "eo.pw"; px: "eo.px"; py: "eo.py"; pz: "eo.pz"; qa: "eo.qa"; qb: "eo.qb"; qc: "eo.qc"; qd: "eo.qd"; qe: "eo.qe"; qf: "eo.qf"; qg: "eo.qg"; qh: "eo.qh"; qi: "eo.qi"; qj: "eo.qj"; qk: "eo.qk"; ql: "eo.ql"; qm: "eo.qm"; qn: "eo.qn"; qo: "eo.qo"; qp: "eo.qp"; qq: "eo.qq"; qr: "eo.qr"; qs: "eo.qs"; qt: "eo.qt"; qu: "eo.qu"; qv: "eo.qv"; qw: "eo.qw"; qx: "eo.qx"; qy: "eo.qy"; qz: "eo.qz"; ra: "eo.ra"; rb: "eo.rb"; rc: "eo.rc"; rd: "eo.rd"; re: "eo.re"; rf: "eo.rf"; rg: "eo.rg"; rh: "eo.rh"; ri: "eo.ri"; rj: "eo.rj"; rk: "eo.rk"; rl: "eo.rl"; rm: "eo.rm"; rn: "eo.rn"; ro: "eo.ro"; rp: "eo.rp"; rq: "eo.rq"; rr: "eo.rr"; rs: "eo.rs"; rt: "eo.rt"; ru: "eo.ru"; rv: "eo.rv"; rw: "eo.rw"; rx: "eo.rx"; ry: "eo.ry"; rz: "eo.rz"; sa: "eo.sa"; sb: "eo.sb"; sc: "eo.sc"; sd: "eo.sd"; se: "eo.se"; sf: "eo.sf"; sg: "eo.sg"; sh: "eo.sh"; si: "eo.si"; sj: "eo.sj"; sk: "eo.sk"; sl: "eo.sl"; sm: "eo.sm"; sn: "eo.sn"; so: "eo.so"; sp: "eo.sp"; sq: "eo.sq"; sr: "eo.sr"; ss: "eo.ss"; st: "eo.st"; su: "eo.su"; sv: "eo.sv"; sw: "eo.sw"; sx: "eo.sx"; sy: "eo.sy"; sz: "eo.sz"; ta: "eo.ta"; tb: "eo.tb"; tc: "eo.tc"; td: "eo.td"; te: "eo.te"; tf: "eo.tf"; tg: "eo.tg"; th: "eo.th"; ti: "eo.ti"; tj: "eo.tj"; tk: "eo.tk"; tl: "eo.tl"; tm: "eo.tm"; tn: "eo.tn"; to: "eo.to"; tp: "eo.tp"; tq: "eo.tq"; tr: "eo.tr"; ts: "eo.ts"; tt: "eo.tt"; tu: "eo.tu"; tv: "eo.tv"; tw: "eo.tw"; tx: "eo.tx"; ty: "eo.ty"; tz: "eo.tz"; ua: "eo.ua"; ub: "eo.ub"; uc: "eo.uc"; ud: "eo.ud"; ue: "eo.ue"; uf: "eo.uf"; ug: "eo.ug"; uh: "eo.uh"; ui: "eo.ui"; uj: "eo.uj"; uk: "eo.uk"; ul: "eo.ul"; um: "eo.um"; un: "eo.un"; uo: "eo.uo"; up: "eo.up"; uq: "eo.uq"; ur: "eo.ur"; us: "eo.us"; ut: "eo.ut"; uu: "eo.uu"; uv: "eo.uv"; uw: "eo.uw"; ux: "eo.ux"; uy: "eo.uy"; uz: "eo.uz"; va: "eo.va"; vb: "eo.vb"; vc: "eo.vc"; vd: "eo.vd"; ve: "eo.ve"; vf: "eo.vf"; vg: "eo.vg"; vh: "eo.vh"; vi: "eo.vi"; vj: "eo.vj"; vk: "eo.vk"; vl: "eo.vl"; vm: "eo.vm"; vn: "eo.vn"; vo: "eo.vo"; vp: "eo.vp"; vq: "eo.vq"; vr: "eo.vr"; vs: "eo.vs"; vt: "eo.vt"; vu: "eo.vu"; vv: "eo.vv"; vw: "eo.vw"; vx: "eo.vx"; vy: "eo.vy"; vz: "eo.vz"; wa: "eo.wa"; wb: "eo.wb"; wc: "eo.wc"; wd: "eo.wd"; we: "eo.we"; wf: "eo.wf"; wg: "eo.wg"; wh: "eo.wh"; wi: "eo.wi"; wj: "eo.wj"; wk: "eo.wk"; wl: "eo.wl"; wm: "eo.wm"; wn: "eo.wn"; wo: "eo.wo"; wp: "eo.wp"; wq: "eo.wq"; wr: "eo.wr"; ws: "eo.ws"; wt: "eo.wt"; wu: "eo.wu"; wv: "eo.wv"; ww: "eo.ww"; wx: "eo.wx"; wy: "eo.wy"; wz: "eo.wz"; xa: "eo.xa"; xb: "eo.xb"; xc: "eo.xc"; xd: "eo.xd"; xe: "eo.xe"; xf: "eo.xf"; xg: "eo.xg"; xh: "eo.xh"; xi: "eo.xi"; xj: "eo.xj"; xk: "eo.xk"; xl: "eo.xl"; xm: "eo.xm"; xn: "eo.xn"; xo: "eo.xo"; xp: "eo.xp"; xq: "eo.xq"; xr: "eo.xr"; xs: "eo.xs"; xt: "eo.xt"; xu: "eo.xu"; xv: "eo.xv"; xw: "eo.xw"; xx: "eo.xx"; xy: "eo.xy"; xz: "eo.xz"; ya: "eo.ya"; yb: "eo.yb"; yc: "eo.yc"; yd: "eo.yd"; ye: "eo.ye"; yf: "eo.yf"; yg: "eo.yg"; yh: "eo.yh"; yi: "eo.yi"; yj: "eo.yj"; yk: "eo.yk"; yl: "eo.yl"; ym: "eo.ym"; yn: "eo.yn"; yo: "eo.yo"; yp: "eo.yp"; yq: "eo.yq"; yr: "eo.yr"; ys: "eo.ys"; yt: "eo.yt"; yu: "eo.yu"; yv: "eo.yv"; yw: "eo.yw"; yx: "eo.yx"; yy: "eo.yy"; yz: "eo.yz"; za: "eo.za"; zb: "eo.zb"; zc: "eo.zc"; zd: "eo.zd"; ze: "eo.ze"; zf: "eo.zf"; zg: "eo.zg"; zh: "eo.zh"; zi: "eo.zi"; zj: "eo.zj"; zk: "eo.zk"; zl: "eo.zl"; zm: "eo.zm"; zn: "eo.zn"; zo: "eo.zo"; zp: "eo.zp"; zq: "eo.zq"; zr: "eo.zr"; zs: "eo.zs"; zt: "eo.zt"; zu: "eo.zu"; zv: "eo.zv"; zw: "eo.zw"; zx: "eo.zx"; zy: "eo.zy"; zz: "eo.zz"; }; ep: { aa: "ep.aa"; ab: "ep.ab"; ac: "ep.ac"; ad: "ep.ad"; ae: "ep.ae"; af: "ep.af"; ag: "ep.ag"; ah: "ep.ah"; ai: "ep.ai"; aj: "ep.aj"; ak: "ep.ak"; al: "ep.al"; am: "ep.am"; an: "ep.an"; ao: "ep.ao"; ap: "ep.ap"; aq: "ep.aq"; ar: "ep.ar"; as: "ep.as"; at: "ep.at"; au: "ep.au"; av: "ep.av"; aw: "ep.aw"; ax: "ep.ax"; ay: "ep.ay"; az: "ep.az"; ba: "ep.ba"; bb: "ep.bb"; bc: "ep.bc"; bd: "ep.bd"; be: "ep.be"; bf: "ep.bf"; bg: "ep.bg"; bh: "ep.bh"; bi: "ep.bi"; bj: "ep.bj"; bk: "ep.bk"; bl: "ep.bl"; bm: "ep.bm"; bn: "ep.bn"; bo: "ep.bo"; bp: "ep.bp"; bq: "ep.bq"; br: "ep.br"; bs: "ep.bs"; bt: "ep.bt"; bu: "ep.bu"; bv: "ep.bv"; bw: "ep.bw"; bx: "ep.bx"; by: "ep.by"; bz: "ep.bz"; ca: "ep.ca"; cb: "ep.cb"; cc: "ep.cc"; cd: "ep.cd"; ce: "ep.ce"; cf: "ep.cf"; cg: "ep.cg"; ch: "ep.ch"; ci: "ep.ci"; cj: "ep.cj"; ck: "ep.ck"; cl: "ep.cl"; cm: "ep.cm"; cn: "ep.cn"; co: "ep.co"; cp: "ep.cp"; cq: "ep.cq"; cr: "ep.cr"; cs: "ep.cs"; ct: "ep.ct"; cu: "ep.cu"; cv: "ep.cv"; cw: "ep.cw"; cx: "ep.cx"; cy: "ep.cy"; cz: "ep.cz"; da: "ep.da"; db: "ep.db"; dc: "ep.dc"; dd: "ep.dd"; de: "ep.de"; df: "ep.df"; dg: "ep.dg"; dh: "ep.dh"; di: "ep.di"; dj: "ep.dj"; dk: "ep.dk"; dl: "ep.dl"; dm: "ep.dm"; dn: "ep.dn"; do: "ep.do"; dp: "ep.dp"; dq: "ep.dq"; dr: "ep.dr"; ds: "ep.ds"; dt: "ep.dt"; du: "ep.du"; dv: "ep.dv"; dw: "ep.dw"; dx: "ep.dx"; dy: "ep.dy"; dz: "ep.dz"; ea: "ep.ea"; eb: "ep.eb"; ec: "ep.ec"; ed: "ep.ed"; ee: "ep.ee"; ef: "ep.ef"; eg: "ep.eg"; eh: "ep.eh"; ei: "ep.ei"; ej: "ep.ej"; ek: "ep.ek"; el: "ep.el"; em: "ep.em"; en: "ep.en"; eo: "ep.eo"; ep: "ep.ep"; eq: "ep.eq"; er: "ep.er"; es: "ep.es"; et: "ep.et"; eu: "ep.eu"; ev: "ep.ev"; ew: "ep.ew"; ex: "ep.ex"; ey: "ep.ey"; ez: "ep.ez"; fa: "ep.fa"; fb: "ep.fb"; fc: "ep.fc"; fd: "ep.fd"; fe: "ep.fe"; ff: "ep.ff"; fg: "ep.fg"; fh: "ep.fh"; fi: "ep.fi"; fj: "ep.fj"; fk: "ep.fk"; fl: "ep.fl"; fm: "ep.fm"; fn: "ep.fn"; fo: "ep.fo"; fp: "ep.fp"; fq: "ep.fq"; fr: "ep.fr"; fs: "ep.fs"; ft: "ep.ft"; fu: "ep.fu"; fv: "ep.fv"; fw: "ep.fw"; fx: "ep.fx"; fy: "ep.fy"; fz: "ep.fz"; ga: "ep.ga"; gb: "ep.gb"; gc: "ep.gc"; gd: "ep.gd"; ge: "ep.ge"; gf: "ep.gf"; gg: "ep.gg"; gh: "ep.gh"; gi: "ep.gi"; gj: "ep.gj"; gk: "ep.gk"; gl: "ep.gl"; gm: "ep.gm"; gn: "ep.gn"; go: "ep.go"; gp: "ep.gp"; gq: "ep.gq"; gr: "ep.gr"; gs: "ep.gs"; gt: "ep.gt"; gu: "ep.gu"; gv: "ep.gv"; gw: "ep.gw"; gx: "ep.gx"; gy: "ep.gy"; gz: "ep.gz"; ha: "ep.ha"; hb: "ep.hb"; hc: "ep.hc"; hd: "ep.hd"; he: "ep.he"; hf: "ep.hf"; hg: "ep.hg"; hh: "ep.hh"; hi: "ep.hi"; hj: "ep.hj"; hk: "ep.hk"; hl: "ep.hl"; hm: "ep.hm"; hn: "ep.hn"; ho: "ep.ho"; hp: "ep.hp"; hq: "ep.hq"; hr: "ep.hr"; hs: "ep.hs"; ht: "ep.ht"; hu: "ep.hu"; hv: "ep.hv"; hw: "ep.hw"; hx: "ep.hx"; hy: "ep.hy"; hz: "ep.hz"; ia: "ep.ia"; ib: "ep.ib"; ic: "ep.ic"; id: "ep.id"; ie: "ep.ie"; if: "ep.if"; ig: "ep.ig"; ih: "ep.ih"; ii: "ep.ii"; ij: "ep.ij"; ik: "ep.ik"; il: "ep.il"; im: "ep.im"; in: "ep.in"; io: "ep.io"; ip: "ep.ip"; iq: "ep.iq"; ir: "ep.ir"; is: "ep.is"; it: "ep.it"; iu: "ep.iu"; iv: "ep.iv"; iw: "ep.iw"; ix: "ep.ix"; iy: "ep.iy"; iz: "ep.iz"; ja: "ep.ja"; jb: "ep.jb"; jc: "ep.jc"; jd: "ep.jd"; je: "ep.je"; jf: "ep.jf"; jg: "ep.jg"; jh: "ep.jh"; ji: "ep.ji"; jj: "ep.jj"; jk: "ep.jk"; jl: "ep.jl"; jm: "ep.jm"; jn: "ep.jn"; jo: "ep.jo"; jp: "ep.jp"; jq: "ep.jq"; jr: "ep.jr"; js: "ep.js"; jt: "ep.jt"; ju: "ep.ju"; jv: "ep.jv"; jw: "ep.jw"; jx: "ep.jx"; jy: "ep.jy"; jz: "ep.jz"; ka: "ep.ka"; kb: "ep.kb"; kc: "ep.kc"; kd: "ep.kd"; ke: "ep.ke"; kf: "ep.kf"; kg: "ep.kg"; kh: "ep.kh"; ki: "ep.ki"; kj: "ep.kj"; kk: "ep.kk"; kl: "ep.kl"; km: "ep.km"; kn: "ep.kn"; ko: "ep.ko"; kp: "ep.kp"; kq: "ep.kq"; kr: "ep.kr"; ks: "ep.ks"; kt: "ep.kt"; ku: "ep.ku"; kv: "ep.kv"; kw: "ep.kw"; kx: "ep.kx"; ky: "ep.ky"; kz: "ep.kz"; la: "ep.la"; lb: "ep.lb"; lc: "ep.lc"; ld: "ep.ld"; le: "ep.le"; lf: "ep.lf"; lg: "ep.lg"; lh: "ep.lh"; li: "ep.li"; lj: "ep.lj"; lk: "ep.lk"; ll: "ep.ll"; lm: "ep.lm"; ln: "ep.ln"; lo: "ep.lo"; lp: "ep.lp"; lq: "ep.lq"; lr: "ep.lr"; ls: "ep.ls"; lt: "ep.lt"; lu: "ep.lu"; lv: "ep.lv"; lw: "ep.lw"; lx: "ep.lx"; ly: "ep.ly"; lz: "ep.lz"; ma: "ep.ma"; mb: "ep.mb"; mc: "ep.mc"; md: "ep.md"; me: "ep.me"; mf: "ep.mf"; mg: "ep.mg"; mh: "ep.mh"; mi: "ep.mi"; mj: "ep.mj"; mk: "ep.mk"; ml: "ep.ml"; mm: "ep.mm"; mn: "ep.mn"; mo: "ep.mo"; mp: "ep.mp"; mq: "ep.mq"; mr: "ep.mr"; ms: "ep.ms"; mt: "ep.mt"; mu: "ep.mu"; mv: "ep.mv"; mw: "ep.mw"; mx: "ep.mx"; my: "ep.my"; mz: "ep.mz"; na: "ep.na"; nb: "ep.nb"; nc: "ep.nc"; nd: "ep.nd"; ne: "ep.ne"; nf: "ep.nf"; ng: "ep.ng"; nh: "ep.nh"; ni: "ep.ni"; nj: "ep.nj"; nk: "ep.nk"; nl: "ep.nl"; nm: "ep.nm"; nn: "ep.nn"; no: "ep.no"; np: "ep.np"; nq: "ep.nq"; nr: "ep.nr"; ns: "ep.ns"; nt: "ep.nt"; nu: "ep.nu"; nv: "ep.nv"; nw: "ep.nw"; nx: "ep.nx"; ny: "ep.ny"; nz: "ep.nz"; oa: "ep.oa"; ob: "ep.ob"; oc: "ep.oc"; od: "ep.od"; oe: "ep.oe"; of: "ep.of"; og: "ep.og"; oh: "ep.oh"; oi: "ep.oi"; oj: "ep.oj"; ok: "ep.ok"; ol: "ep.ol"; om: "ep.om"; on: "ep.on"; oo: "ep.oo"; op: "ep.op"; oq: "ep.oq"; or: "ep.or"; os: "ep.os"; ot: "ep.ot"; ou: "ep.ou"; ov: "ep.ov"; ow: "ep.ow"; ox: "ep.ox"; oy: "ep.oy"; oz: "ep.oz"; pa: "ep.pa"; pb: "ep.pb"; pc: "ep.pc"; pd: "ep.pd"; pe: "ep.pe"; pf: "ep.pf"; pg: "ep.pg"; ph: "ep.ph"; pi: "ep.pi"; pj: "ep.pj"; pk: "ep.pk"; pl: "ep.pl"; pm: "ep.pm"; pn: "ep.pn"; po: "ep.po"; pp: "ep.pp"; pq: "ep.pq"; pr: "ep.pr"; ps: "ep.ps"; pt: "ep.pt"; pu: "ep.pu"; pv: "ep.pv"; pw: "ep.pw"; px: "ep.px"; py: "ep.py"; pz: "ep.pz"; qa: "ep.qa"; qb: "ep.qb"; qc: "ep.qc"; qd: "ep.qd"; qe: "ep.qe"; qf: "ep.qf"; qg: "ep.qg"; qh: "ep.qh"; qi: "ep.qi"; qj: "ep.qj"; qk: "ep.qk"; ql: "ep.ql"; qm: "ep.qm"; qn: "ep.qn"; qo: "ep.qo"; qp: "ep.qp"; qq: "ep.qq"; qr: "ep.qr"; qs: "ep.qs"; qt: "ep.qt"; qu: "ep.qu"; qv: "ep.qv"; qw: "ep.qw"; qx: "ep.qx"; qy: "ep.qy"; qz: "ep.qz"; ra: "ep.ra"; rb: "ep.rb"; rc: "ep.rc"; rd: "ep.rd"; re: "ep.re"; rf: "ep.rf"; rg: "ep.rg"; rh: "ep.rh"; ri: "ep.ri"; rj: "ep.rj"; rk: "ep.rk"; rl: "ep.rl"; rm: "ep.rm"; rn: "ep.rn"; ro: "ep.ro"; rp: "ep.rp"; rq: "ep.rq"; rr: "ep.rr"; rs: "ep.rs"; rt: "ep.rt"; ru: "ep.ru"; rv: "ep.rv"; rw: "ep.rw"; rx: "ep.rx"; ry: "ep.ry"; rz: "ep.rz"; sa: "ep.sa"; sb: "ep.sb"; sc: "ep.sc"; sd: "ep.sd"; se: "ep.se"; sf: "ep.sf"; sg: "ep.sg"; sh: "ep.sh"; si: "ep.si"; sj: "ep.sj"; sk: "ep.sk"; sl: "ep.sl"; sm: "ep.sm"; sn: "ep.sn"; so: "ep.so"; sp: "ep.sp"; sq: "ep.sq"; sr: "ep.sr"; ss: "ep.ss"; st: "ep.st"; su: "ep.su"; sv: "ep.sv"; sw: "ep.sw"; sx: "ep.sx"; sy: "ep.sy"; sz: "ep.sz"; ta: "ep.ta"; tb: "ep.tb"; tc: "ep.tc"; td: "ep.td"; te: "ep.te"; tf: "ep.tf"; tg: "ep.tg"; th: "ep.th"; ti: "ep.ti"; tj: "ep.tj"; tk: "ep.tk"; tl: "ep.tl"; tm: "ep.tm"; tn: "ep.tn"; to: "ep.to"; tp: "ep.tp"; tq: "ep.tq"; tr: "ep.tr"; ts: "ep.ts"; tt: "ep.tt"; tu: "ep.tu"; tv: "ep.tv"; tw: "ep.tw"; tx: "ep.tx"; ty: "ep.ty"; tz: "ep.tz"; ua: "ep.ua"; ub: "ep.ub"; uc: "ep.uc"; ud: "ep.ud"; ue: "ep.ue"; uf: "ep.uf"; ug: "ep.ug"; uh: "ep.uh"; ui: "ep.ui"; uj: "ep.uj"; uk: "ep.uk"; ul: "ep.ul"; um: "ep.um"; un: "ep.un"; uo: "ep.uo"; up: "ep.up"; uq: "ep.uq"; ur: "ep.ur"; us: "ep.us"; ut: "ep.ut"; uu: "ep.uu"; uv: "ep.uv"; uw: "ep.uw"; ux: "ep.ux"; uy: "ep.uy"; uz: "ep.uz"; va: "ep.va"; vb: "ep.vb"; vc: "ep.vc"; vd: "ep.vd"; ve: "ep.ve"; vf: "ep.vf"; vg: "ep.vg"; vh: "ep.vh"; vi: "ep.vi"; vj: "ep.vj"; vk: "ep.vk"; vl: "ep.vl"; vm: "ep.vm"; vn: "ep.vn"; vo: "ep.vo"; vp: "ep.vp"; vq: "ep.vq"; vr: "ep.vr"; vs: "ep.vs"; vt: "ep.vt"; vu: "ep.vu"; vv: "ep.vv"; vw: "ep.vw"; vx: "ep.vx"; vy: "ep.vy"; vz: "ep.vz"; wa: "ep.wa"; wb: "ep.wb"; wc: "ep.wc"; wd: "ep.wd"; we: "ep.we"; wf: "ep.wf"; wg: "ep.wg"; wh: "ep.wh"; wi: "ep.wi"; wj: "ep.wj"; wk: "ep.wk"; wl: "ep.wl"; wm: "ep.wm"; wn: "ep.wn"; wo: "ep.wo"; wp: "ep.wp"; wq: "ep.wq"; wr: "ep.wr"; ws: "ep.ws"; wt: "ep.wt"; wu: "ep.wu"; wv: "ep.wv"; ww: "ep.ww"; wx: "ep.wx"; wy: "ep.wy"; wz: "ep.wz"; xa: "ep.xa"; xb: "ep.xb"; xc: "ep.xc"; xd: "ep.xd"; xe: "ep.xe"; xf: "ep.xf"; xg: "ep.xg"; xh: "ep.xh"; xi: "ep.xi"; xj: "ep.xj"; xk: "ep.xk"; xl: "ep.xl"; xm: "ep.xm"; xn: "ep.xn"; xo: "ep.xo"; xp: "ep.xp"; xq: "ep.xq"; xr: "ep.xr"; xs: "ep.xs"; xt: "ep.xt"; xu: "ep.xu"; xv: "ep.xv"; xw: "ep.xw"; xx: "ep.xx"; xy: "ep.xy"; xz: "ep.xz"; ya: "ep.ya"; yb: "ep.yb"; yc: "ep.yc"; yd: "ep.yd"; ye: "ep.ye"; yf: "ep.yf"; yg: "ep.yg"; yh: "ep.yh"; yi: "ep.yi"; yj: "ep.yj"; yk: "ep.yk"; yl: "ep.yl"; ym: "ep.ym"; yn: "ep.yn"; yo: "ep.yo"; yp: "ep.yp"; yq: "ep.yq"; yr: "ep.yr"; ys: "ep.ys"; yt: "ep.yt"; yu: "ep.yu"; yv: "ep.yv"; yw: "ep.yw"; yx: "ep.yx"; yy: "ep.yy"; yz: "ep.yz"; za: "ep.za"; zb: "ep.zb"; zc: "ep.zc"; zd: "ep.zd"; ze: "ep.ze"; zf: "ep.zf"; zg: "ep.zg"; zh: "ep.zh"; zi: "ep.zi"; zj: "ep.zj"; zk: "ep.zk"; zl: "ep.zl"; zm: "ep.zm"; zn: "ep.zn"; zo: "ep.zo"; zp: "ep.zp"; zq: "ep.zq"; zr: "ep.zr"; zs: "ep.zs"; zt: "ep.zt"; zu: "ep.zu"; zv: "ep.zv"; zw: "ep.zw"; zx: "ep.zx"; zy: "ep.zy"; zz: "ep.zz"; }; eq: { aa: "eq.aa"; ab: "eq.ab"; ac: "eq.ac"; ad: "eq.ad"; ae: "eq.ae"; af: "eq.af"; ag: "eq.ag"; ah: "eq.ah"; ai: "eq.ai"; aj: "eq.aj"; ak: "eq.ak"; al: "eq.al"; am: "eq.am"; an: "eq.an"; ao: "eq.ao"; ap: "eq.ap"; aq: "eq.aq"; ar: "eq.ar"; as: "eq.as"; at: "eq.at"; au: "eq.au"; av: "eq.av"; aw: "eq.aw"; ax: "eq.ax"; ay: "eq.ay"; az: "eq.az"; ba: "eq.ba"; bb: "eq.bb"; bc: "eq.bc"; bd: "eq.bd"; be: "eq.be"; bf: "eq.bf"; bg: "eq.bg"; bh: "eq.bh"; bi: "eq.bi"; bj: "eq.bj"; bk: "eq.bk"; bl: "eq.bl"; bm: "eq.bm"; bn: "eq.bn"; bo: "eq.bo"; bp: "eq.bp"; bq: "eq.bq"; br: "eq.br"; bs: "eq.bs"; bt: "eq.bt"; bu: "eq.bu"; bv: "eq.bv"; bw: "eq.bw"; bx: "eq.bx"; by: "eq.by"; bz: "eq.bz"; ca: "eq.ca"; cb: "eq.cb"; cc: "eq.cc"; cd: "eq.cd"; ce: "eq.ce"; cf: "eq.cf"; cg: "eq.cg"; ch: "eq.ch"; ci: "eq.ci"; cj: "eq.cj"; ck: "eq.ck"; cl: "eq.cl"; cm: "eq.cm"; cn: "eq.cn"; co: "eq.co"; cp: "eq.cp"; cq: "eq.cq"; cr: "eq.cr"; cs: "eq.cs"; ct: "eq.ct"; cu: "eq.cu"; cv: "eq.cv"; cw: "eq.cw"; cx: "eq.cx"; cy: "eq.cy"; cz: "eq.cz"; da: "eq.da"; db: "eq.db"; dc: "eq.dc"; dd: "eq.dd"; de: "eq.de"; df: "eq.df"; dg: "eq.dg"; dh: "eq.dh"; di: "eq.di"; dj: "eq.dj"; dk: "eq.dk"; dl: "eq.dl"; dm: "eq.dm"; dn: "eq.dn"; do: "eq.do"; dp: "eq.dp"; dq: "eq.dq"; dr: "eq.dr"; ds: "eq.ds"; dt: "eq.dt"; du: "eq.du"; dv: "eq.dv"; dw: "eq.dw"; dx: "eq.dx"; dy: "eq.dy"; dz: "eq.dz"; ea: "eq.ea"; eb: "eq.eb"; ec: "eq.ec"; ed: "eq.ed"; ee: "eq.ee"; ef: "eq.ef"; eg: "eq.eg"; eh: "eq.eh"; ei: "eq.ei"; ej: "eq.ej"; ek: "eq.ek"; el: "eq.el"; em: "eq.em"; en: "eq.en"; eo: "eq.eo"; ep: "eq.ep"; eq: "eq.eq"; er: "eq.er"; es: "eq.es"; et: "eq.et"; eu: "eq.eu"; ev: "eq.ev"; ew: "eq.ew"; ex: "eq.ex"; ey: "eq.ey"; ez: "eq.ez"; fa: "eq.fa"; fb: "eq.fb"; fc: "eq.fc"; fd: "eq.fd"; fe: "eq.fe"; ff: "eq.ff"; fg: "eq.fg"; fh: "eq.fh"; fi: "eq.fi"; fj: "eq.fj"; fk: "eq.fk"; fl: "eq.fl"; fm: "eq.fm"; fn: "eq.fn"; fo: "eq.fo"; fp: "eq.fp"; fq: "eq.fq"; fr: "eq.fr"; fs: "eq.fs"; ft: "eq.ft"; fu: "eq.fu"; fv: "eq.fv"; fw: "eq.fw"; fx: "eq.fx"; fy: "eq.fy"; fz: "eq.fz"; ga: "eq.ga"; gb: "eq.gb"; gc: "eq.gc"; gd: "eq.gd"; ge: "eq.ge"; gf: "eq.gf"; gg: "eq.gg"; gh: "eq.gh"; gi: "eq.gi"; gj: "eq.gj"; gk: "eq.gk"; gl: "eq.gl"; gm: "eq.gm"; gn: "eq.gn"; go: "eq.go"; gp: "eq.gp"; gq: "eq.gq"; gr: "eq.gr"; gs: "eq.gs"; gt: "eq.gt"; gu: "eq.gu"; gv: "eq.gv"; gw: "eq.gw"; gx: "eq.gx"; gy: "eq.gy"; gz: "eq.gz"; ha: "eq.ha"; hb: "eq.hb"; hc: "eq.hc"; hd: "eq.hd"; he: "eq.he"; hf: "eq.hf"; hg: "eq.hg"; hh: "eq.hh"; hi: "eq.hi"; hj: "eq.hj"; hk: "eq.hk"; hl: "eq.hl"; hm: "eq.hm"; hn: "eq.hn"; ho: "eq.ho"; hp: "eq.hp"; hq: "eq.hq"; hr: "eq.hr"; hs: "eq.hs"; ht: "eq.ht"; hu: "eq.hu"; hv: "eq.hv"; hw: "eq.hw"; hx: "eq.hx"; hy: "eq.hy"; hz: "eq.hz"; ia: "eq.ia"; ib: "eq.ib"; ic: "eq.ic"; id: "eq.id"; ie: "eq.ie"; if: "eq.if"; ig: "eq.ig"; ih: "eq.ih"; ii: "eq.ii"; ij: "eq.ij"; ik: "eq.ik"; il: "eq.il"; im: "eq.im"; in: "eq.in"; io: "eq.io"; ip: "eq.ip"; iq: "eq.iq"; ir: "eq.ir"; is: "eq.is"; it: "eq.it"; iu: "eq.iu"; iv: "eq.iv"; iw: "eq.iw"; ix: "eq.ix"; iy: "eq.iy"; iz: "eq.iz"; ja: "eq.ja"; jb: "eq.jb"; jc: "eq.jc"; jd: "eq.jd"; je: "eq.je"; jf: "eq.jf"; jg: "eq.jg"; jh: "eq.jh"; ji: "eq.ji"; jj: "eq.jj"; jk: "eq.jk"; jl: "eq.jl"; jm: "eq.jm"; jn: "eq.jn"; jo: "eq.jo"; jp: "eq.jp"; jq: "eq.jq"; jr: "eq.jr"; js: "eq.js"; jt: "eq.jt"; ju: "eq.ju"; jv: "eq.jv"; jw: "eq.jw"; jx: "eq.jx"; jy: "eq.jy"; jz: "eq.jz"; ka: "eq.ka"; kb: "eq.kb"; kc: "eq.kc"; kd: "eq.kd"; ke: "eq.ke"; kf: "eq.kf"; kg: "eq.kg"; kh: "eq.kh"; ki: "eq.ki"; kj: "eq.kj"; kk: "eq.kk"; kl: "eq.kl"; km: "eq.km"; kn: "eq.kn"; ko: "eq.ko"; kp: "eq.kp"; kq: "eq.kq"; kr: "eq.kr"; ks: "eq.ks"; kt: "eq.kt"; ku: "eq.ku"; kv: "eq.kv"; kw: "eq.kw"; kx: "eq.kx"; ky: "eq.ky"; kz: "eq.kz"; la: "eq.la"; lb: "eq.lb"; lc: "eq.lc"; ld: "eq.ld"; le: "eq.le"; lf: "eq.lf"; lg: "eq.lg"; lh: "eq.lh"; li: "eq.li"; lj: "eq.lj"; lk: "eq.lk"; ll: "eq.ll"; lm: "eq.lm"; ln: "eq.ln"; lo: "eq.lo"; lp: "eq.lp"; lq: "eq.lq"; lr: "eq.lr"; ls: "eq.ls"; lt: "eq.lt"; lu: "eq.lu"; lv: "eq.lv"; lw: "eq.lw"; lx: "eq.lx"; ly: "eq.ly"; lz: "eq.lz"; ma: "eq.ma"; mb: "eq.mb"; mc: "eq.mc"; md: "eq.md"; me: "eq.me"; mf: "eq.mf"; mg: "eq.mg"; mh: "eq.mh"; mi: "eq.mi"; mj: "eq.mj"; mk: "eq.mk"; ml: "eq.ml"; mm: "eq.mm"; mn: "eq.mn"; mo: "eq.mo"; mp: "eq.mp"; mq: "eq.mq"; mr: "eq.mr"; ms: "eq.ms"; mt: "eq.mt"; mu: "eq.mu"; mv: "eq.mv"; mw: "eq.mw"; mx: "eq.mx"; my: "eq.my"; mz: "eq.mz"; na: "eq.na"; nb: "eq.nb"; nc: "eq.nc"; nd: "eq.nd"; ne: "eq.ne"; nf: "eq.nf"; ng: "eq.ng"; nh: "eq.nh"; ni: "eq.ni"; nj: "eq.nj"; nk: "eq.nk"; nl: "eq.nl"; nm: "eq.nm"; nn: "eq.nn"; no: "eq.no"; np: "eq.np"; nq: "eq.nq"; nr: "eq.nr"; ns: "eq.ns"; nt: "eq.nt"; nu: "eq.nu"; nv: "eq.nv"; nw: "eq.nw"; nx: "eq.nx"; ny: "eq.ny"; nz: "eq.nz"; oa: "eq.oa"; ob: "eq.ob"; oc: "eq.oc"; od: "eq.od"; oe: "eq.oe"; of: "eq.of"; og: "eq.og"; oh: "eq.oh"; oi: "eq.oi"; oj: "eq.oj"; ok: "eq.ok"; ol: "eq.ol"; om: "eq.om"; on: "eq.on"; oo: "eq.oo"; op: "eq.op"; oq: "eq.oq"; or: "eq.or"; os: "eq.os"; ot: "eq.ot"; ou: "eq.ou"; ov: "eq.ov"; ow: "eq.ow"; ox: "eq.ox"; oy: "eq.oy"; oz: "eq.oz"; pa: "eq.pa"; pb: "eq.pb"; pc: "eq.pc"; pd: "eq.pd"; pe: "eq.pe"; pf: "eq.pf"; pg: "eq.pg"; ph: "eq.ph"; pi: "eq.pi"; pj: "eq.pj"; pk: "eq.pk"; pl: "eq.pl"; pm: "eq.pm"; pn: "eq.pn"; po: "eq.po"; pp: "eq.pp"; pq: "eq.pq"; pr: "eq.pr"; ps: "eq.ps"; pt: "eq.pt"; pu: "eq.pu"; pv: "eq.pv"; pw: "eq.pw"; px: "eq.px"; py: "eq.py"; pz: "eq.pz"; qa: "eq.qa"; qb: "eq.qb"; qc: "eq.qc"; qd: "eq.qd"; qe: "eq.qe"; qf: "eq.qf"; qg: "eq.qg"; qh: "eq.qh"; qi: "eq.qi"; qj: "eq.qj"; qk: "eq.qk"; ql: "eq.ql"; qm: "eq.qm"; qn: "eq.qn"; qo: "eq.qo"; qp: "eq.qp"; qq: "eq.qq"; qr: "eq.qr"; qs: "eq.qs"; qt: "eq.qt"; qu: "eq.qu"; qv: "eq.qv"; qw: "eq.qw"; qx: "eq.qx"; qy: "eq.qy"; qz: "eq.qz"; ra: "eq.ra"; rb: "eq.rb"; rc: "eq.rc"; rd: "eq.rd"; re: "eq.re"; rf: "eq.rf"; rg: "eq.rg"; rh: "eq.rh"; ri: "eq.ri"; rj: "eq.rj"; rk: "eq.rk"; rl: "eq.rl"; rm: "eq.rm"; rn: "eq.rn"; ro: "eq.ro"; rp: "eq.rp"; rq: "eq.rq"; rr: "eq.rr"; rs: "eq.rs"; rt: "eq.rt"; ru: "eq.ru"; rv: "eq.rv"; rw: "eq.rw"; rx: "eq.rx"; ry: "eq.ry"; rz: "eq.rz"; sa: "eq.sa"; sb: "eq.sb"; sc: "eq.sc"; sd: "eq.sd"; se: "eq.se"; sf: "eq.sf"; sg: "eq.sg"; sh: "eq.sh"; si: "eq.si"; sj: "eq.sj"; sk: "eq.sk"; sl: "eq.sl"; sm: "eq.sm"; sn: "eq.sn"; so: "eq.so"; sp: "eq.sp"; sq: "eq.sq"; sr: "eq.sr"; ss: "eq.ss"; st: "eq.st"; su: "eq.su"; sv: "eq.sv"; sw: "eq.sw"; sx: "eq.sx"; sy: "eq.sy"; sz: "eq.sz"; ta: "eq.ta"; tb: "eq.tb"; tc: "eq.tc"; td: "eq.td"; te: "eq.te"; tf: "eq.tf"; tg: "eq.tg"; th: "eq.th"; ti: "eq.ti"; tj: "eq.tj"; tk: "eq.tk"; tl: "eq.tl"; tm: "eq.tm"; tn: "eq.tn"; to: "eq.to"; tp: "eq.tp"; tq: "eq.tq"; tr: "eq.tr"; ts: "eq.ts"; tt: "eq.tt"; tu: "eq.tu"; tv: "eq.tv"; tw: "eq.tw"; tx: "eq.tx"; ty: "eq.ty"; tz: "eq.tz"; ua: "eq.ua"; ub: "eq.ub"; uc: "eq.uc"; ud: "eq.ud"; ue: "eq.ue"; uf: "eq.uf"; ug: "eq.ug"; uh: "eq.uh"; ui: "eq.ui"; uj: "eq.uj"; uk: "eq.uk"; ul: "eq.ul"; um: "eq.um"; un: "eq.un"; uo: "eq.uo"; up: "eq.up"; uq: "eq.uq"; ur: "eq.ur"; us: "eq.us"; ut: "eq.ut"; uu: "eq.uu"; uv: "eq.uv"; uw: "eq.uw"; ux: "eq.ux"; uy: "eq.uy"; uz: "eq.uz"; va: "eq.va"; vb: "eq.vb"; vc: "eq.vc"; vd: "eq.vd"; ve: "eq.ve"; vf: "eq.vf"; vg: "eq.vg"; vh: "eq.vh"; vi: "eq.vi"; vj: "eq.vj"; vk: "eq.vk"; vl: "eq.vl"; vm: "eq.vm"; vn: "eq.vn"; vo: "eq.vo"; vp: "eq.vp"; vq: "eq.vq"; vr: "eq.vr"; vs: "eq.vs"; vt: "eq.vt"; vu: "eq.vu"; vv: "eq.vv"; vw: "eq.vw"; vx: "eq.vx"; vy: "eq.vy"; vz: "eq.vz"; wa: "eq.wa"; wb: "eq.wb"; wc: "eq.wc"; wd: "eq.wd"; we: "eq.we"; wf: "eq.wf"; wg: "eq.wg"; wh: "eq.wh"; wi: "eq.wi"; wj: "eq.wj"; wk: "eq.wk"; wl: "eq.wl"; wm: "eq.wm"; wn: "eq.wn"; wo: "eq.wo"; wp: "eq.wp"; wq: "eq.wq"; wr: "eq.wr"; ws: "eq.ws"; wt: "eq.wt"; wu: "eq.wu"; wv: "eq.wv"; ww: "eq.ww"; wx: "eq.wx"; wy: "eq.wy"; wz: "eq.wz"; xa: "eq.xa"; xb: "eq.xb"; xc: "eq.xc"; xd: "eq.xd"; xe: "eq.xe"; xf: "eq.xf"; xg: "eq.xg"; xh: "eq.xh"; xi: "eq.xi"; xj: "eq.xj"; xk: "eq.xk"; xl: "eq.xl"; xm: "eq.xm"; xn: "eq.xn"; xo: "eq.xo"; xp: "eq.xp"; xq: "eq.xq"; xr: "eq.xr"; xs: "eq.xs"; xt: "eq.xt"; xu: "eq.xu"; xv: "eq.xv"; xw: "eq.xw"; xx: "eq.xx"; xy: "eq.xy"; xz: "eq.xz"; ya: "eq.ya"; yb: "eq.yb"; yc: "eq.yc"; yd: "eq.yd"; ye: "eq.ye"; yf: "eq.yf"; yg: "eq.yg"; yh: "eq.yh"; yi: "eq.yi"; yj: "eq.yj"; yk: "eq.yk"; yl: "eq.yl"; ym: "eq.ym"; yn: "eq.yn"; yo: "eq.yo"; yp: "eq.yp"; yq: "eq.yq"; yr: "eq.yr"; ys: "eq.ys"; yt: "eq.yt"; yu: "eq.yu"; yv: "eq.yv"; yw: "eq.yw"; yx: "eq.yx"; yy: "eq.yy"; yz: "eq.yz"; za: "eq.za"; zb: "eq.zb"; zc: "eq.zc"; zd: "eq.zd"; ze: "eq.ze"; zf: "eq.zf"; zg: "eq.zg"; zh: "eq.zh"; zi: "eq.zi"; zj: "eq.zj"; zk: "eq.zk"; zl: "eq.zl"; zm: "eq.zm"; zn: "eq.zn"; zo: "eq.zo"; zp: "eq.zp"; zq: "eq.zq"; zr: "eq.zr"; zs: "eq.zs"; zt: "eq.zt"; zu: "eq.zu"; zv: "eq.zv"; zw: "eq.zw"; zx: "eq.zx"; zy: "eq.zy"; zz: "eq.zz"; }; er: { aa: "er.aa"; ab: "er.ab"; ac: "er.ac"; ad: "er.ad"; ae: "er.ae"; af: "er.af"; ag: "er.ag"; ah: "er.ah"; ai: "er.ai"; aj: "er.aj"; ak: "er.ak"; al: "er.al"; am: "er.am"; an: "er.an"; ao: "er.ao"; ap: "er.ap"; aq: "er.aq"; ar: "er.ar"; as: "er.as"; at: "er.at"; au: "er.au"; av: "er.av"; aw: "er.aw"; ax: "er.ax"; ay: "er.ay"; az: "er.az"; ba: "er.ba"; bb: "er.bb"; bc: "er.bc"; bd: "er.bd"; be: "er.be"; bf: "er.bf"; bg: "er.bg"; bh: "er.bh"; bi: "er.bi"; bj: "er.bj"; bk: "er.bk"; bl: "er.bl"; bm: "er.bm"; bn: "er.bn"; bo: "er.bo"; bp: "er.bp"; bq: "er.bq"; br: "er.br"; bs: "er.bs"; bt: "er.bt"; bu: "er.bu"; bv: "er.bv"; bw: "er.bw"; bx: "er.bx"; by: "er.by"; bz: "er.bz"; ca: "er.ca"; cb: "er.cb"; cc: "er.cc"; cd: "er.cd"; ce: "er.ce"; cf: "er.cf"; cg: "er.cg"; ch: "er.ch"; ci: "er.ci"; cj: "er.cj"; ck: "er.ck"; cl: "er.cl"; cm: "er.cm"; cn: "er.cn"; co: "er.co"; cp: "er.cp"; cq: "er.cq"; cr: "er.cr"; cs: "er.cs"; ct: "er.ct"; cu: "er.cu"; cv: "er.cv"; cw: "er.cw"; cx: "er.cx"; cy: "er.cy"; cz: "er.cz"; da: "er.da"; db: "er.db"; dc: "er.dc"; dd: "er.dd"; de: "er.de"; df: "er.df"; dg: "er.dg"; dh: "er.dh"; di: "er.di"; dj: "er.dj"; dk: "er.dk"; dl: "er.dl"; dm: "er.dm"; dn: "er.dn"; do: "er.do"; dp: "er.dp"; dq: "er.dq"; dr: "er.dr"; ds: "er.ds"; dt: "er.dt"; du: "er.du"; dv: "er.dv"; dw: "er.dw"; dx: "er.dx"; dy: "er.dy"; dz: "er.dz"; ea: "er.ea"; eb: "er.eb"; ec: "er.ec"; ed: "er.ed"; ee: "er.ee"; ef: "er.ef"; eg: "er.eg"; eh: "er.eh"; ei: "er.ei"; ej: "er.ej"; ek: "er.ek"; el: "er.el"; em: "er.em"; en: "er.en"; eo: "er.eo"; ep: "er.ep"; eq: "er.eq"; er: "er.er"; es: "er.es"; et: "er.et"; eu: "er.eu"; ev: "er.ev"; ew: "er.ew"; ex: "er.ex"; ey: "er.ey"; ez: "er.ez"; fa: "er.fa"; fb: "er.fb"; fc: "er.fc"; fd: "er.fd"; fe: "er.fe"; ff: "er.ff"; fg: "er.fg"; fh: "er.fh"; fi: "er.fi"; fj: "er.fj"; fk: "er.fk"; fl: "er.fl"; fm: "er.fm"; fn: "er.fn"; fo: "er.fo"; fp: "er.fp"; fq: "er.fq"; fr: "er.fr"; fs: "er.fs"; ft: "er.ft"; fu: "er.fu"; fv: "er.fv"; fw: "er.fw"; fx: "er.fx"; fy: "er.fy"; fz: "er.fz"; ga: "er.ga"; gb: "er.gb"; gc: "er.gc"; gd: "er.gd"; ge: "er.ge"; gf: "er.gf"; gg: "er.gg"; gh: "er.gh"; gi: "er.gi"; gj: "er.gj"; gk: "er.gk"; gl: "er.gl"; gm: "er.gm"; gn: "er.gn"; go: "er.go"; gp: "er.gp"; gq: "er.gq"; gr: "er.gr"; gs: "er.gs"; gt: "er.gt"; gu: "er.gu"; gv: "er.gv"; gw: "er.gw"; gx: "er.gx"; gy: "er.gy"; gz: "er.gz"; ha: "er.ha"; hb: "er.hb"; hc: "er.hc"; hd: "er.hd"; he: "er.he"; hf: "er.hf"; hg: "er.hg"; hh: "er.hh"; hi: "er.hi"; hj: "er.hj"; hk: "er.hk"; hl: "er.hl"; hm: "er.hm"; hn: "er.hn"; ho: "er.ho"; hp: "er.hp"; hq: "er.hq"; hr: "er.hr"; hs: "er.hs"; ht: "er.ht"; hu: "er.hu"; hv: "er.hv"; hw: "er.hw"; hx: "er.hx"; hy: "er.hy"; hz: "er.hz"; ia: "er.ia"; ib: "er.ib"; ic: "er.ic"; id: "er.id"; ie: "er.ie"; if: "er.if"; ig: "er.ig"; ih: "er.ih"; ii: "er.ii"; ij: "er.ij"; ik: "er.ik"; il: "er.il"; im: "er.im"; in: "er.in"; io: "er.io"; ip: "er.ip"; iq: "er.iq"; ir: "er.ir"; is: "er.is"; it: "er.it"; iu: "er.iu"; iv: "er.iv"; iw: "er.iw"; ix: "er.ix"; iy: "er.iy"; iz: "er.iz"; ja: "er.ja"; jb: "er.jb"; jc: "er.jc"; jd: "er.jd"; je: "er.je"; jf: "er.jf"; jg: "er.jg"; jh: "er.jh"; ji: "er.ji"; jj: "er.jj"; jk: "er.jk"; jl: "er.jl"; jm: "er.jm"; jn: "er.jn"; jo: "er.jo"; jp: "er.jp"; jq: "er.jq"; jr: "er.jr"; js: "er.js"; jt: "er.jt"; ju: "er.ju"; jv: "er.jv"; jw: "er.jw"; jx: "er.jx"; jy: "er.jy"; jz: "er.jz"; ka: "er.ka"; kb: "er.kb"; kc: "er.kc"; kd: "er.kd"; ke: "er.ke"; kf: "er.kf"; kg: "er.kg"; kh: "er.kh"; ki: "er.ki"; kj: "er.kj"; kk: "er.kk"; kl: "er.kl"; km: "er.km"; kn: "er.kn"; ko: "er.ko"; kp: "er.kp"; kq: "er.kq"; kr: "er.kr"; ks: "er.ks"; kt: "er.kt"; ku: "er.ku"; kv: "er.kv"; kw: "er.kw"; kx: "er.kx"; ky: "er.ky"; kz: "er.kz"; la: "er.la"; lb: "er.lb"; lc: "er.lc"; ld: "er.ld"; le: "er.le"; lf: "er.lf"; lg: "er.lg"; lh: "er.lh"; li: "er.li"; lj: "er.lj"; lk: "er.lk"; ll: "er.ll"; lm: "er.lm"; ln: "er.ln"; lo: "er.lo"; lp: "er.lp"; lq: "er.lq"; lr: "er.lr"; ls: "er.ls"; lt: "er.lt"; lu: "er.lu"; lv: "er.lv"; lw: "er.lw"; lx: "er.lx"; ly: "er.ly"; lz: "er.lz"; ma: "er.ma"; mb: "er.mb"; mc: "er.mc"; md: "er.md"; me: "er.me"; mf: "er.mf"; mg: "er.mg"; mh: "er.mh"; mi: "er.mi"; mj: "er.mj"; mk: "er.mk"; ml: "er.ml"; mm: "er.mm"; mn: "er.mn"; mo: "er.mo"; mp: "er.mp"; mq: "er.mq"; mr: "er.mr"; ms: "er.ms"; mt: "er.mt"; mu: "er.mu"; mv: "er.mv"; mw: "er.mw"; mx: "er.mx"; my: "er.my"; mz: "er.mz"; na: "er.na"; nb: "er.nb"; nc: "er.nc"; nd: "er.nd"; ne: "er.ne"; nf: "er.nf"; ng: "er.ng"; nh: "er.nh"; ni: "er.ni"; nj: "er.nj"; nk: "er.nk"; nl: "er.nl"; nm: "er.nm"; nn: "er.nn"; no: "er.no"; np: "er.np"; nq: "er.nq"; nr: "er.nr"; ns: "er.ns"; nt: "er.nt"; nu: "er.nu"; nv: "er.nv"; nw: "er.nw"; nx: "er.nx"; ny: "er.ny"; nz: "er.nz"; oa: "er.oa"; ob: "er.ob"; oc: "er.oc"; od: "er.od"; oe: "er.oe"; of: "er.of"; og: "er.og"; oh: "er.oh"; oi: "er.oi"; oj: "er.oj"; ok: "er.ok"; ol: "er.ol"; om: "er.om"; on: "er.on"; oo: "er.oo"; op: "er.op"; oq: "er.oq"; or: "er.or"; os: "er.os"; ot: "er.ot"; ou: "er.ou"; ov: "er.ov"; ow: "er.ow"; ox: "er.ox"; oy: "er.oy"; oz: "er.oz"; pa: "er.pa"; pb: "er.pb"; pc: "er.pc"; pd: "er.pd"; pe: "er.pe"; pf: "er.pf"; pg: "er.pg"; ph: "er.ph"; pi: "er.pi"; pj: "er.pj"; pk: "er.pk"; pl: "er.pl"; pm: "er.pm"; pn: "er.pn"; po: "er.po"; pp: "er.pp"; pq: "er.pq"; pr: "er.pr"; ps: "er.ps"; pt: "er.pt"; pu: "er.pu"; pv: "er.pv"; pw: "er.pw"; px: "er.px"; py: "er.py"; pz: "er.pz"; qa: "er.qa"; qb: "er.qb"; qc: "er.qc"; qd: "er.qd"; qe: "er.qe"; qf: "er.qf"; qg: "er.qg"; qh: "er.qh"; qi: "er.qi"; qj: "er.qj"; qk: "er.qk"; ql: "er.ql"; qm: "er.qm"; qn: "er.qn"; qo: "er.qo"; qp: "er.qp"; qq: "er.qq"; qr: "er.qr"; qs: "er.qs"; qt: "er.qt"; qu: "er.qu"; qv: "er.qv"; qw: "er.qw"; qx: "er.qx"; qy: "er.qy"; qz: "er.qz"; ra: "er.ra"; rb: "er.rb"; rc: "er.rc"; rd: "er.rd"; re: "er.re"; rf: "er.rf"; rg: "er.rg"; rh: "er.rh"; ri: "er.ri"; rj: "er.rj"; rk: "er.rk"; rl: "er.rl"; rm: "er.rm"; rn: "er.rn"; ro: "er.ro"; rp: "er.rp"; rq: "er.rq"; rr: "er.rr"; rs: "er.rs"; rt: "er.rt"; ru: "er.ru"; rv: "er.rv"; rw: "er.rw"; rx: "er.rx"; ry: "er.ry"; rz: "er.rz"; sa: "er.sa"; sb: "er.sb"; sc: "er.sc"; sd: "er.sd"; se: "er.se"; sf: "er.sf"; sg: "er.sg"; sh: "er.sh"; si: "er.si"; sj: "er.sj"; sk: "er.sk"; sl: "er.sl"; sm: "er.sm"; sn: "er.sn"; so: "er.so"; sp: "er.sp"; sq: "er.sq"; sr: "er.sr"; ss: "er.ss"; st: "er.st"; su: "er.su"; sv: "er.sv"; sw: "er.sw"; sx: "er.sx"; sy: "er.sy"; sz: "er.sz"; ta: "er.ta"; tb: "er.tb"; tc: "er.tc"; td: "er.td"; te: "er.te"; tf: "er.tf"; tg: "er.tg"; th: "er.th"; ti: "er.ti"; tj: "er.tj"; tk: "er.tk"; tl: "er.tl"; tm: "er.tm"; tn: "er.tn"; to: "er.to"; tp: "er.tp"; tq: "er.tq"; tr: "er.tr"; ts: "er.ts"; tt: "er.tt"; tu: "er.tu"; tv: "er.tv"; tw: "er.tw"; tx: "er.tx"; ty: "er.ty"; tz: "er.tz"; ua: "er.ua"; ub: "er.ub"; uc: "er.uc"; ud: "er.ud"; ue: "er.ue"; uf: "er.uf"; ug: "er.ug"; uh: "er.uh"; ui: "er.ui"; uj: "er.uj"; uk: "er.uk"; ul: "er.ul"; um: "er.um"; un: "er.un"; uo: "er.uo"; up: "er.up"; uq: "er.uq"; ur: "er.ur"; us: "er.us"; ut: "er.ut"; uu: "er.uu"; uv: "er.uv"; uw: "er.uw"; ux: "er.ux"; uy: "er.uy"; uz: "er.uz"; va: "er.va"; vb: "er.vb"; vc: "er.vc"; vd: "er.vd"; ve: "er.ve"; vf: "er.vf"; vg: "er.vg"; vh: "er.vh"; vi: "er.vi"; vj: "er.vj"; vk: "er.vk"; vl: "er.vl"; vm: "er.vm"; vn: "er.vn"; vo: "er.vo"; vp: "er.vp"; vq: "er.vq"; vr: "er.vr"; vs: "er.vs"; vt: "er.vt"; vu: "er.vu"; vv: "er.vv"; vw: "er.vw"; vx: "er.vx"; vy: "er.vy"; vz: "er.vz"; wa: "er.wa"; wb: "er.wb"; wc: "er.wc"; wd: "er.wd"; we: "er.we"; wf: "er.wf"; wg: "er.wg"; wh: "er.wh"; wi: "er.wi"; wj: "er.wj"; wk: "er.wk"; wl: "er.wl"; wm: "er.wm"; wn: "er.wn"; wo: "er.wo"; wp: "er.wp"; wq: "er.wq"; wr: "er.wr"; ws: "er.ws"; wt: "er.wt"; wu: "er.wu"; wv: "er.wv"; ww: "er.ww"; wx: "er.wx"; wy: "er.wy"; wz: "er.wz"; xa: "er.xa"; xb: "er.xb"; xc: "er.xc"; xd: "er.xd"; xe: "er.xe"; xf: "er.xf"; xg: "er.xg"; xh: "er.xh"; xi: "er.xi"; xj: "er.xj"; xk: "er.xk"; xl: "er.xl"; xm: "er.xm"; xn: "er.xn"; xo: "er.xo"; xp: "er.xp"; xq: "er.xq"; xr: "er.xr"; xs: "er.xs"; xt: "er.xt"; xu: "er.xu"; xv: "er.xv"; xw: "er.xw"; xx: "er.xx"; xy: "er.xy"; xz: "er.xz"; ya: "er.ya"; yb: "er.yb"; yc: "er.yc"; yd: "er.yd"; ye: "er.ye"; yf: "er.yf"; yg: "er.yg"; yh: "er.yh"; yi: "er.yi"; yj: "er.yj"; yk: "er.yk"; yl: "er.yl"; ym: "er.ym"; yn: "er.yn"; yo: "er.yo"; yp: "er.yp"; yq: "er.yq"; yr: "er.yr"; ys: "er.ys"; yt: "er.yt"; yu: "er.yu"; yv: "er.yv"; yw: "er.yw"; yx: "er.yx"; yy: "er.yy"; yz: "er.yz"; za: "er.za"; zb: "er.zb"; zc: "er.zc"; zd: "er.zd"; ze: "er.ze"; zf: "er.zf"; zg: "er.zg"; zh: "er.zh"; zi: "er.zi"; zj: "er.zj"; zk: "er.zk"; zl: "er.zl"; zm: "er.zm"; zn: "er.zn"; zo: "er.zo"; zp: "er.zp"; zq: "er.zq"; zr: "er.zr"; zs: "er.zs"; zt: "er.zt"; zu: "er.zu"; zv: "er.zv"; zw: "er.zw"; zx: "er.zx"; zy: "er.zy"; zz: "er.zz"; }; es: { aa: "es.aa"; ab: "es.ab"; ac: "es.ac"; ad: "es.ad"; ae: "es.ae"; af: "es.af"; ag: "es.ag"; ah: "es.ah"; ai: "es.ai"; aj: "es.aj"; ak: "es.ak"; al: "es.al"; am: "es.am"; an: "es.an"; ao: "es.ao"; ap: "es.ap"; aq: "es.aq"; ar: "es.ar"; as: "es.as"; at: "es.at"; au: "es.au"; av: "es.av"; aw: "es.aw"; ax: "es.ax"; ay: "es.ay"; az: "es.az"; ba: "es.ba"; bb: "es.bb"; bc: "es.bc"; bd: "es.bd"; be: "es.be"; bf: "es.bf"; bg: "es.bg"; bh: "es.bh"; bi: "es.bi"; bj: "es.bj"; bk: "es.bk"; bl: "es.bl"; bm: "es.bm"; bn: "es.bn"; bo: "es.bo"; bp: "es.bp"; bq: "es.bq"; br: "es.br"; bs: "es.bs"; bt: "es.bt"; bu: "es.bu"; bv: "es.bv"; bw: "es.bw"; bx: "es.bx"; by: "es.by"; bz: "es.bz"; ca: "es.ca"; cb: "es.cb"; cc: "es.cc"; cd: "es.cd"; ce: "es.ce"; cf: "es.cf"; cg: "es.cg"; ch: "es.ch"; ci: "es.ci"; cj: "es.cj"; ck: "es.ck"; cl: "es.cl"; cm: "es.cm"; cn: "es.cn"; co: "es.co"; cp: "es.cp"; cq: "es.cq"; cr: "es.cr"; cs: "es.cs"; ct: "es.ct"; cu: "es.cu"; cv: "es.cv"; cw: "es.cw"; cx: "es.cx"; cy: "es.cy"; cz: "es.cz"; da: "es.da"; db: "es.db"; dc: "es.dc"; dd: "es.dd"; de: "es.de"; df: "es.df"; dg: "es.dg"; dh: "es.dh"; di: "es.di"; dj: "es.dj"; dk: "es.dk"; dl: "es.dl"; dm: "es.dm"; dn: "es.dn"; do: "es.do"; dp: "es.dp"; dq: "es.dq"; dr: "es.dr"; ds: "es.ds"; dt: "es.dt"; du: "es.du"; dv: "es.dv"; dw: "es.dw"; dx: "es.dx"; dy: "es.dy"; dz: "es.dz"; ea: "es.ea"; eb: "es.eb"; ec: "es.ec"; ed: "es.ed"; ee: "es.ee"; ef: "es.ef"; eg: "es.eg"; eh: "es.eh"; ei: "es.ei"; ej: "es.ej"; ek: "es.ek"; el: "es.el"; em: "es.em"; en: "es.en"; eo: "es.eo"; ep: "es.ep"; eq: "es.eq"; er: "es.er"; es: "es.es"; et: "es.et"; eu: "es.eu"; ev: "es.ev"; ew: "es.ew"; ex: "es.ex"; ey: "es.ey"; ez: "es.ez"; fa: "es.fa"; fb: "es.fb"; fc: "es.fc"; fd: "es.fd"; fe: "es.fe"; ff: "es.ff"; fg: "es.fg"; fh: "es.fh"; fi: "es.fi"; fj: "es.fj"; fk: "es.fk"; fl: "es.fl"; fm: "es.fm"; fn: "es.fn"; fo: "es.fo"; fp: "es.fp"; fq: "es.fq"; fr: "es.fr"; fs: "es.fs"; ft: "es.ft"; fu: "es.fu"; fv: "es.fv"; fw: "es.fw"; fx: "es.fx"; fy: "es.fy"; fz: "es.fz"; ga: "es.ga"; gb: "es.gb"; gc: "es.gc"; gd: "es.gd"; ge: "es.ge"; gf: "es.gf"; gg: "es.gg"; gh: "es.gh"; gi: "es.gi"; gj: "es.gj"; gk: "es.gk"; gl: "es.gl"; gm: "es.gm"; gn: "es.gn"; go: "es.go"; gp: "es.gp"; gq: "es.gq"; gr: "es.gr"; gs: "es.gs"; gt: "es.gt"; gu: "es.gu"; gv: "es.gv"; gw: "es.gw"; gx: "es.gx"; gy: "es.gy"; gz: "es.gz"; ha: "es.ha"; hb: "es.hb"; hc: "es.hc"; hd: "es.hd"; he: "es.he"; hf: "es.hf"; hg: "es.hg"; hh: "es.hh"; hi: "es.hi"; hj: "es.hj"; hk: "es.hk"; hl: "es.hl"; hm: "es.hm"; hn: "es.hn"; ho: "es.ho"; hp: "es.hp"; hq: "es.hq"; hr: "es.hr"; hs: "es.hs"; ht: "es.ht"; hu: "es.hu"; hv: "es.hv"; hw: "es.hw"; hx: "es.hx"; hy: "es.hy"; hz: "es.hz"; ia: "es.ia"; ib: "es.ib"; ic: "es.ic"; id: "es.id"; ie: "es.ie"; if: "es.if"; ig: "es.ig"; ih: "es.ih"; ii: "es.ii"; ij: "es.ij"; ik: "es.ik"; il: "es.il"; im: "es.im"; in: "es.in"; io: "es.io"; ip: "es.ip"; iq: "es.iq"; ir: "es.ir"; is: "es.is"; it: "es.it"; iu: "es.iu"; iv: "es.iv"; iw: "es.iw"; ix: "es.ix"; iy: "es.iy"; iz: "es.iz"; ja: "es.ja"; jb: "es.jb"; jc: "es.jc"; jd: "es.jd"; je: "es.je"; jf: "es.jf"; jg: "es.jg"; jh: "es.jh"; ji: "es.ji"; jj: "es.jj"; jk: "es.jk"; jl: "es.jl"; jm: "es.jm"; jn: "es.jn"; jo: "es.jo"; jp: "es.jp"; jq: "es.jq"; jr: "es.jr"; js: "es.js"; jt: "es.jt"; ju: "es.ju"; jv: "es.jv"; jw: "es.jw"; jx: "es.jx"; jy: "es.jy"; jz: "es.jz"; ka: "es.ka"; kb: "es.kb"; kc: "es.kc"; kd: "es.kd"; ke: "es.ke"; kf: "es.kf"; kg: "es.kg"; kh: "es.kh"; ki: "es.ki"; kj: "es.kj"; kk: "es.kk"; kl: "es.kl"; km: "es.km"; kn: "es.kn"; ko: "es.ko"; kp: "es.kp"; kq: "es.kq"; kr: "es.kr"; ks: "es.ks"; kt: "es.kt"; ku: "es.ku"; kv: "es.kv"; kw: "es.kw"; kx: "es.kx"; ky: "es.ky"; kz: "es.kz"; la: "es.la"; lb: "es.lb"; lc: "es.lc"; ld: "es.ld"; le: "es.le"; lf: "es.lf"; lg: "es.lg"; lh: "es.lh"; li: "es.li"; lj: "es.lj"; lk: "es.lk"; ll: "es.ll"; lm: "es.lm"; ln: "es.ln"; lo: "es.lo"; lp: "es.lp"; lq: "es.lq"; lr: "es.lr"; ls: "es.ls"; lt: "es.lt"; lu: "es.lu"; lv: "es.lv"; lw: "es.lw"; lx: "es.lx"; ly: "es.ly"; lz: "es.lz"; ma: "es.ma"; mb: "es.mb"; mc: "es.mc"; md: "es.md"; me: "es.me"; mf: "es.mf"; mg: "es.mg"; mh: "es.mh"; mi: "es.mi"; mj: "es.mj"; mk: "es.mk"; ml: "es.ml"; mm: "es.mm"; mn: "es.mn"; mo: "es.mo"; mp: "es.mp"; mq: "es.mq"; mr: "es.mr"; ms: "es.ms"; mt: "es.mt"; mu: "es.mu"; mv: "es.mv"; mw: "es.mw"; mx: "es.mx"; my: "es.my"; mz: "es.mz"; na: "es.na"; nb: "es.nb"; nc: "es.nc"; nd: "es.nd"; ne: "es.ne"; nf: "es.nf"; ng: "es.ng"; nh: "es.nh"; ni: "es.ni"; nj: "es.nj"; nk: "es.nk"; nl: "es.nl"; nm: "es.nm"; nn: "es.nn"; no: "es.no"; np: "es.np"; nq: "es.nq"; nr: "es.nr"; ns: "es.ns"; nt: "es.nt"; nu: "es.nu"; nv: "es.nv"; nw: "es.nw"; nx: "es.nx"; ny: "es.ny"; nz: "es.nz"; oa: "es.oa"; ob: "es.ob"; oc: "es.oc"; od: "es.od"; oe: "es.oe"; of: "es.of"; og: "es.og"; oh: "es.oh"; oi: "es.oi"; oj: "es.oj"; ok: "es.ok"; ol: "es.ol"; om: "es.om"; on: "es.on"; oo: "es.oo"; op: "es.op"; oq: "es.oq"; or: "es.or"; os: "es.os"; ot: "es.ot"; ou: "es.ou"; ov: "es.ov"; ow: "es.ow"; ox: "es.ox"; oy: "es.oy"; oz: "es.oz"; pa: "es.pa"; pb: "es.pb"; pc: "es.pc"; pd: "es.pd"; pe: "es.pe"; pf: "es.pf"; pg: "es.pg"; ph: "es.ph"; pi: "es.pi"; pj: "es.pj"; pk: "es.pk"; pl: "es.pl"; pm: "es.pm"; pn: "es.pn"; po: "es.po"; pp: "es.pp"; pq: "es.pq"; pr: "es.pr"; ps: "es.ps"; pt: "es.pt"; pu: "es.pu"; pv: "es.pv"; pw: "es.pw"; px: "es.px"; py: "es.py"; pz: "es.pz"; qa: "es.qa"; qb: "es.qb"; qc: "es.qc"; qd: "es.qd"; qe: "es.qe"; qf: "es.qf"; qg: "es.qg"; qh: "es.qh"; qi: "es.qi"; qj: "es.qj"; qk: "es.qk"; ql: "es.ql"; qm: "es.qm"; qn: "es.qn"; qo: "es.qo"; qp: "es.qp"; qq: "es.qq"; qr: "es.qr"; qs: "es.qs"; qt: "es.qt"; qu: "es.qu"; qv: "es.qv"; qw: "es.qw"; qx: "es.qx"; qy: "es.qy"; qz: "es.qz"; ra: "es.ra"; rb: "es.rb"; rc: "es.rc"; rd: "es.rd"; re: "es.re"; rf: "es.rf"; rg: "es.rg"; rh: "es.rh"; ri: "es.ri"; rj: "es.rj"; rk: "es.rk"; rl: "es.rl"; rm: "es.rm"; rn: "es.rn"; ro: "es.ro"; rp: "es.rp"; rq: "es.rq"; rr: "es.rr"; rs: "es.rs"; rt: "es.rt"; ru: "es.ru"; rv: "es.rv"; rw: "es.rw"; rx: "es.rx"; ry: "es.ry"; rz: "es.rz"; sa: "es.sa"; sb: "es.sb"; sc: "es.sc"; sd: "es.sd"; se: "es.se"; sf: "es.sf"; sg: "es.sg"; sh: "es.sh"; si: "es.si"; sj: "es.sj"; sk: "es.sk"; sl: "es.sl"; sm: "es.sm"; sn: "es.sn"; so: "es.so"; sp: "es.sp"; sq: "es.sq"; sr: "es.sr"; ss: "es.ss"; st: "es.st"; su: "es.su"; sv: "es.sv"; sw: "es.sw"; sx: "es.sx"; sy: "es.sy"; sz: "es.sz"; ta: "es.ta"; tb: "es.tb"; tc: "es.tc"; td: "es.td"; te: "es.te"; tf: "es.tf"; tg: "es.tg"; th: "es.th"; ti: "es.ti"; tj: "es.tj"; tk: "es.tk"; tl: "es.tl"; tm: "es.tm"; tn: "es.tn"; to: "es.to"; tp: "es.tp"; tq: "es.tq"; tr: "es.tr"; ts: "es.ts"; tt: "es.tt"; tu: "es.tu"; tv: "es.tv"; tw: "es.tw"; tx: "es.tx"; ty: "es.ty"; tz: "es.tz"; ua: "es.ua"; ub: "es.ub"; uc: "es.uc"; ud: "es.ud"; ue: "es.ue"; uf: "es.uf"; ug: "es.ug"; uh: "es.uh"; ui: "es.ui"; uj: "es.uj"; uk: "es.uk"; ul: "es.ul"; um: "es.um"; un: "es.un"; uo: "es.uo"; up: "es.up"; uq: "es.uq"; ur: "es.ur"; us: "es.us"; ut: "es.ut"; uu: "es.uu"; uv: "es.uv"; uw: "es.uw"; ux: "es.ux"; uy: "es.uy"; uz: "es.uz"; va: "es.va"; vb: "es.vb"; vc: "es.vc"; vd: "es.vd"; ve: "es.ve"; vf: "es.vf"; vg: "es.vg"; vh: "es.vh"; vi: "es.vi"; vj: "es.vj"; vk: "es.vk"; vl: "es.vl"; vm: "es.vm"; vn: "es.vn"; vo: "es.vo"; vp: "es.vp"; vq: "es.vq"; vr: "es.vr"; vs: "es.vs"; vt: "es.vt"; vu: "es.vu"; vv: "es.vv"; vw: "es.vw"; vx: "es.vx"; vy: "es.vy"; vz: "es.vz"; wa: "es.wa"; wb: "es.wb"; wc: "es.wc"; wd: "es.wd"; we: "es.we"; wf: "es.wf"; wg: "es.wg"; wh: "es.wh"; wi: "es.wi"; wj: "es.wj"; wk: "es.wk"; wl: "es.wl"; wm: "es.wm"; wn: "es.wn"; wo: "es.wo"; wp: "es.wp"; wq: "es.wq"; wr: "es.wr"; ws: "es.ws"; wt: "es.wt"; wu: "es.wu"; wv: "es.wv"; ww: "es.ww"; wx: "es.wx"; wy: "es.wy"; wz: "es.wz"; xa: "es.xa"; xb: "es.xb"; xc: "es.xc"; xd: "es.xd"; xe: "es.xe"; xf: "es.xf"; xg: "es.xg"; xh: "es.xh"; xi: "es.xi"; xj: "es.xj"; xk: "es.xk"; xl: "es.xl"; xm: "es.xm"; xn: "es.xn"; xo: "es.xo"; xp: "es.xp"; xq: "es.xq"; xr: "es.xr"; xs: "es.xs"; xt: "es.xt"; xu: "es.xu"; xv: "es.xv"; xw: "es.xw"; xx: "es.xx"; xy: "es.xy"; xz: "es.xz"; ya: "es.ya"; yb: "es.yb"; yc: "es.yc"; yd: "es.yd"; ye: "es.ye"; yf: "es.yf"; yg: "es.yg"; yh: "es.yh"; yi: "es.yi"; yj: "es.yj"; yk: "es.yk"; yl: "es.yl"; ym: "es.ym"; yn: "es.yn"; yo: "es.yo"; yp: "es.yp"; yq: "es.yq"; yr: "es.yr"; ys: "es.ys"; yt: "es.yt"; yu: "es.yu"; yv: "es.yv"; yw: "es.yw"; yx: "es.yx"; yy: "es.yy"; yz: "es.yz"; za: "es.za"; zb: "es.zb"; zc: "es.zc"; zd: "es.zd"; ze: "es.ze"; zf: "es.zf"; zg: "es.zg"; zh: "es.zh"; zi: "es.zi"; zj: "es.zj"; zk: "es.zk"; zl: "es.zl"; zm: "es.zm"; zn: "es.zn"; zo: "es.zo"; zp: "es.zp"; zq: "es.zq"; zr: "es.zr"; zs: "es.zs"; zt: "es.zt"; zu: "es.zu"; zv: "es.zv"; zw: "es.zw"; zx: "es.zx"; zy: "es.zy"; zz: "es.zz"; }; et: { aa: "et.aa"; ab: "et.ab"; ac: "et.ac"; ad: "et.ad"; ae: "et.ae"; af: "et.af"; ag: "et.ag"; ah: "et.ah"; ai: "et.ai"; aj: "et.aj"; ak: "et.ak"; al: "et.al"; am: "et.am"; an: "et.an"; ao: "et.ao"; ap: "et.ap"; aq: "et.aq"; ar: "et.ar"; as: "et.as"; at: "et.at"; au: "et.au"; av: "et.av"; aw: "et.aw"; ax: "et.ax"; ay: "et.ay"; az: "et.az"; ba: "et.ba"; bb: "et.bb"; bc: "et.bc"; bd: "et.bd"; be: "et.be"; bf: "et.bf"; bg: "et.bg"; bh: "et.bh"; bi: "et.bi"; bj: "et.bj"; bk: "et.bk"; bl: "et.bl"; bm: "et.bm"; bn: "et.bn"; bo: "et.bo"; bp: "et.bp"; bq: "et.bq"; br: "et.br"; bs: "et.bs"; bt: "et.bt"; bu: "et.bu"; bv: "et.bv"; bw: "et.bw"; bx: "et.bx"; by: "et.by"; bz: "et.bz"; ca: "et.ca"; cb: "et.cb"; cc: "et.cc"; cd: "et.cd"; ce: "et.ce"; cf: "et.cf"; cg: "et.cg"; ch: "et.ch"; ci: "et.ci"; cj: "et.cj"; ck: "et.ck"; cl: "et.cl"; cm: "et.cm"; cn: "et.cn"; co: "et.co"; cp: "et.cp"; cq: "et.cq"; cr: "et.cr"; cs: "et.cs"; ct: "et.ct"; cu: "et.cu"; cv: "et.cv"; cw: "et.cw"; cx: "et.cx"; cy: "et.cy"; cz: "et.cz"; da: "et.da"; db: "et.db"; dc: "et.dc"; dd: "et.dd"; de: "et.de"; df: "et.df"; dg: "et.dg"; dh: "et.dh"; di: "et.di"; dj: "et.dj"; dk: "et.dk"; dl: "et.dl"; dm: "et.dm"; dn: "et.dn"; do: "et.do"; dp: "et.dp"; dq: "et.dq"; dr: "et.dr"; ds: "et.ds"; dt: "et.dt"; du: "et.du"; dv: "et.dv"; dw: "et.dw"; dx: "et.dx"; dy: "et.dy"; dz: "et.dz"; ea: "et.ea"; eb: "et.eb"; ec: "et.ec"; ed: "et.ed"; ee: "et.ee"; ef: "et.ef"; eg: "et.eg"; eh: "et.eh"; ei: "et.ei"; ej: "et.ej"; ek: "et.ek"; el: "et.el"; em: "et.em"; en: "et.en"; eo: "et.eo"; ep: "et.ep"; eq: "et.eq"; er: "et.er"; es: "et.es"; et: "et.et"; eu: "et.eu"; ev: "et.ev"; ew: "et.ew"; ex: "et.ex"; ey: "et.ey"; ez: "et.ez"; fa: "et.fa"; fb: "et.fb"; fc: "et.fc"; fd: "et.fd"; fe: "et.fe"; ff: "et.ff"; fg: "et.fg"; fh: "et.fh"; fi: "et.fi"; fj: "et.fj"; fk: "et.fk"; fl: "et.fl"; fm: "et.fm"; fn: "et.fn"; fo: "et.fo"; fp: "et.fp"; fq: "et.fq"; fr: "et.fr"; fs: "et.fs"; ft: "et.ft"; fu: "et.fu"; fv: "et.fv"; fw: "et.fw"; fx: "et.fx"; fy: "et.fy"; fz: "et.fz"; ga: "et.ga"; gb: "et.gb"; gc: "et.gc"; gd: "et.gd"; ge: "et.ge"; gf: "et.gf"; gg: "et.gg"; gh: "et.gh"; gi: "et.gi"; gj: "et.gj"; gk: "et.gk"; gl: "et.gl"; gm: "et.gm"; gn: "et.gn"; go: "et.go"; gp: "et.gp"; gq: "et.gq"; gr: "et.gr"; gs: "et.gs"; gt: "et.gt"; gu: "et.gu"; gv: "et.gv"; gw: "et.gw"; gx: "et.gx"; gy: "et.gy"; gz: "et.gz"; ha: "et.ha"; hb: "et.hb"; hc: "et.hc"; hd: "et.hd"; he: "et.he"; hf: "et.hf"; hg: "et.hg"; hh: "et.hh"; hi: "et.hi"; hj: "et.hj"; hk: "et.hk"; hl: "et.hl"; hm: "et.hm"; hn: "et.hn"; ho: "et.ho"; hp: "et.hp"; hq: "et.hq"; hr: "et.hr"; hs: "et.hs"; ht: "et.ht"; hu: "et.hu"; hv: "et.hv"; hw: "et.hw"; hx: "et.hx"; hy: "et.hy"; hz: "et.hz"; ia: "et.ia"; ib: "et.ib"; ic: "et.ic"; id: "et.id"; ie: "et.ie"; if: "et.if"; ig: "et.ig"; ih: "et.ih"; ii: "et.ii"; ij: "et.ij"; ik: "et.ik"; il: "et.il"; im: "et.im"; in: "et.in"; io: "et.io"; ip: "et.ip"; iq: "et.iq"; ir: "et.ir"; is: "et.is"; it: "et.it"; iu: "et.iu"; iv: "et.iv"; iw: "et.iw"; ix: "et.ix"; iy: "et.iy"; iz: "et.iz"; ja: "et.ja"; jb: "et.jb"; jc: "et.jc"; jd: "et.jd"; je: "et.je"; jf: "et.jf"; jg: "et.jg"; jh: "et.jh"; ji: "et.ji"; jj: "et.jj"; jk: "et.jk"; jl: "et.jl"; jm: "et.jm"; jn: "et.jn"; jo: "et.jo"; jp: "et.jp"; jq: "et.jq"; jr: "et.jr"; js: "et.js"; jt: "et.jt"; ju: "et.ju"; jv: "et.jv"; jw: "et.jw"; jx: "et.jx"; jy: "et.jy"; jz: "et.jz"; ka: "et.ka"; kb: "et.kb"; kc: "et.kc"; kd: "et.kd"; ke: "et.ke"; kf: "et.kf"; kg: "et.kg"; kh: "et.kh"; ki: "et.ki"; kj: "et.kj"; kk: "et.kk"; kl: "et.kl"; km: "et.km"; kn: "et.kn"; ko: "et.ko"; kp: "et.kp"; kq: "et.kq"; kr: "et.kr"; ks: "et.ks"; kt: "et.kt"; ku: "et.ku"; kv: "et.kv"; kw: "et.kw"; kx: "et.kx"; ky: "et.ky"; kz: "et.kz"; la: "et.la"; lb: "et.lb"; lc: "et.lc"; ld: "et.ld"; le: "et.le"; lf: "et.lf"; lg: "et.lg"; lh: "et.lh"; li: "et.li"; lj: "et.lj"; lk: "et.lk"; ll: "et.ll"; lm: "et.lm"; ln: "et.ln"; lo: "et.lo"; lp: "et.lp"; lq: "et.lq"; lr: "et.lr"; ls: "et.ls"; lt: "et.lt"; lu: "et.lu"; lv: "et.lv"; lw: "et.lw"; lx: "et.lx"; ly: "et.ly"; lz: "et.lz"; ma: "et.ma"; mb: "et.mb"; mc: "et.mc"; md: "et.md"; me: "et.me"; mf: "et.mf"; mg: "et.mg"; mh: "et.mh"; mi: "et.mi"; mj: "et.mj"; mk: "et.mk"; ml: "et.ml"; mm: "et.mm"; mn: "et.mn"; mo: "et.mo"; mp: "et.mp"; mq: "et.mq"; mr: "et.mr"; ms: "et.ms"; mt: "et.mt"; mu: "et.mu"; mv: "et.mv"; mw: "et.mw"; mx: "et.mx"; my: "et.my"; mz: "et.mz"; na: "et.na"; nb: "et.nb"; nc: "et.nc"; nd: "et.nd"; ne: "et.ne"; nf: "et.nf"; ng: "et.ng"; nh: "et.nh"; ni: "et.ni"; nj: "et.nj"; nk: "et.nk"; nl: "et.nl"; nm: "et.nm"; nn: "et.nn"; no: "et.no"; np: "et.np"; nq: "et.nq"; nr: "et.nr"; ns: "et.ns"; nt: "et.nt"; nu: "et.nu"; nv: "et.nv"; nw: "et.nw"; nx: "et.nx"; ny: "et.ny"; nz: "et.nz"; oa: "et.oa"; ob: "et.ob"; oc: "et.oc"; od: "et.od"; oe: "et.oe"; of: "et.of"; og: "et.og"; oh: "et.oh"; oi: "et.oi"; oj: "et.oj"; ok: "et.ok"; ol: "et.ol"; om: "et.om"; on: "et.on"; oo: "et.oo"; op: "et.op"; oq: "et.oq"; or: "et.or"; os: "et.os"; ot: "et.ot"; ou: "et.ou"; ov: "et.ov"; ow: "et.ow"; ox: "et.ox"; oy: "et.oy"; oz: "et.oz"; pa: "et.pa"; pb: "et.pb"; pc: "et.pc"; pd: "et.pd"; pe: "et.pe"; pf: "et.pf"; pg: "et.pg"; ph: "et.ph"; pi: "et.pi"; pj: "et.pj"; pk: "et.pk"; pl: "et.pl"; pm: "et.pm"; pn: "et.pn"; po: "et.po"; pp: "et.pp"; pq: "et.pq"; pr: "et.pr"; ps: "et.ps"; pt: "et.pt"; pu: "et.pu"; pv: "et.pv"; pw: "et.pw"; px: "et.px"; py: "et.py"; pz: "et.pz"; qa: "et.qa"; qb: "et.qb"; qc: "et.qc"; qd: "et.qd"; qe: "et.qe"; qf: "et.qf"; qg: "et.qg"; qh: "et.qh"; qi: "et.qi"; qj: "et.qj"; qk: "et.qk"; ql: "et.ql"; qm: "et.qm"; qn: "et.qn"; qo: "et.qo"; qp: "et.qp"; qq: "et.qq"; qr: "et.qr"; qs: "et.qs"; qt: "et.qt"; qu: "et.qu"; qv: "et.qv"; qw: "et.qw"; qx: "et.qx"; qy: "et.qy"; qz: "et.qz"; ra: "et.ra"; rb: "et.rb"; rc: "et.rc"; rd: "et.rd"; re: "et.re"; rf: "et.rf"; rg: "et.rg"; rh: "et.rh"; ri: "et.ri"; rj: "et.rj"; rk: "et.rk"; rl: "et.rl"; rm: "et.rm"; rn: "et.rn"; ro: "et.ro"; rp: "et.rp"; rq: "et.rq"; rr: "et.rr"; rs: "et.rs"; rt: "et.rt"; ru: "et.ru"; rv: "et.rv"; rw: "et.rw"; rx: "et.rx"; ry: "et.ry"; rz: "et.rz"; sa: "et.sa"; sb: "et.sb"; sc: "et.sc"; sd: "et.sd"; se: "et.se"; sf: "et.sf"; sg: "et.sg"; sh: "et.sh"; si: "et.si"; sj: "et.sj"; sk: "et.sk"; sl: "et.sl"; sm: "et.sm"; sn: "et.sn"; so: "et.so"; sp: "et.sp"; sq: "et.sq"; sr: "et.sr"; ss: "et.ss"; st: "et.st"; su: "et.su"; sv: "et.sv"; sw: "et.sw"; sx: "et.sx"; sy: "et.sy"; sz: "et.sz"; ta: "et.ta"; tb: "et.tb"; tc: "et.tc"; td: "et.td"; te: "et.te"; tf: "et.tf"; tg: "et.tg"; th: "et.th"; ti: "et.ti"; tj: "et.tj"; tk: "et.tk"; tl: "et.tl"; tm: "et.tm"; tn: "et.tn"; to: "et.to"; tp: "et.tp"; tq: "et.tq"; tr: "et.tr"; ts: "et.ts"; tt: "et.tt"; tu: "et.tu"; tv: "et.tv"; tw: "et.tw"; tx: "et.tx"; ty: "et.ty"; tz: "et.tz"; ua: "et.ua"; ub: "et.ub"; uc: "et.uc"; ud: "et.ud"; ue: "et.ue"; uf: "et.uf"; ug: "et.ug"; uh: "et.uh"; ui: "et.ui"; uj: "et.uj"; uk: "et.uk"; ul: "et.ul"; um: "et.um"; un: "et.un"; uo: "et.uo"; up: "et.up"; uq: "et.uq"; ur: "et.ur"; us: "et.us"; ut: "et.ut"; uu: "et.uu"; uv: "et.uv"; uw: "et.uw"; ux: "et.ux"; uy: "et.uy"; uz: "et.uz"; va: "et.va"; vb: "et.vb"; vc: "et.vc"; vd: "et.vd"; ve: "et.ve"; vf: "et.vf"; vg: "et.vg"; vh: "et.vh"; vi: "et.vi"; vj: "et.vj"; vk: "et.vk"; vl: "et.vl"; vm: "et.vm"; vn: "et.vn"; vo: "et.vo"; vp: "et.vp"; vq: "et.vq"; vr: "et.vr"; vs: "et.vs"; vt: "et.vt"; vu: "et.vu"; vv: "et.vv"; vw: "et.vw"; vx: "et.vx"; vy: "et.vy"; vz: "et.vz"; wa: "et.wa"; wb: "et.wb"; wc: "et.wc"; wd: "et.wd"; we: "et.we"; wf: "et.wf"; wg: "et.wg"; wh: "et.wh"; wi: "et.wi"; wj: "et.wj"; wk: "et.wk"; wl: "et.wl"; wm: "et.wm"; wn: "et.wn"; wo: "et.wo"; wp: "et.wp"; wq: "et.wq"; wr: "et.wr"; ws: "et.ws"; wt: "et.wt"; wu: "et.wu"; wv: "et.wv"; ww: "et.ww"; wx: "et.wx"; wy: "et.wy"; wz: "et.wz"; xa: "et.xa"; xb: "et.xb"; xc: "et.xc"; xd: "et.xd"; xe: "et.xe"; xf: "et.xf"; xg: "et.xg"; xh: "et.xh"; xi: "et.xi"; xj: "et.xj"; xk: "et.xk"; xl: "et.xl"; xm: "et.xm"; xn: "et.xn"; xo: "et.xo"; xp: "et.xp"; xq: "et.xq"; xr: "et.xr"; xs: "et.xs"; xt: "et.xt"; xu: "et.xu"; xv: "et.xv"; xw: "et.xw"; xx: "et.xx"; xy: "et.xy"; xz: "et.xz"; ya: "et.ya"; yb: "et.yb"; yc: "et.yc"; yd: "et.yd"; ye: "et.ye"; yf: "et.yf"; yg: "et.yg"; yh: "et.yh"; yi: "et.yi"; yj: "et.yj"; yk: "et.yk"; yl: "et.yl"; ym: "et.ym"; yn: "et.yn"; yo: "et.yo"; yp: "et.yp"; yq: "et.yq"; yr: "et.yr"; ys: "et.ys"; yt: "et.yt"; yu: "et.yu"; yv: "et.yv"; yw: "et.yw"; yx: "et.yx"; yy: "et.yy"; yz: "et.yz"; za: "et.za"; zb: "et.zb"; zc: "et.zc"; zd: "et.zd"; ze: "et.ze"; zf: "et.zf"; zg: "et.zg"; zh: "et.zh"; zi: "et.zi"; zj: "et.zj"; zk: "et.zk"; zl: "et.zl"; zm: "et.zm"; zn: "et.zn"; zo: "et.zo"; zp: "et.zp"; zq: "et.zq"; zr: "et.zr"; zs: "et.zs"; zt: "et.zt"; zu: "et.zu"; zv: "et.zv"; zw: "et.zw"; zx: "et.zx"; zy: "et.zy"; zz: "et.zz"; }; eu: { aa: "eu.aa"; ab: "eu.ab"; ac: "eu.ac"; ad: "eu.ad"; ae: "eu.ae"; af: "eu.af"; ag: "eu.ag"; ah: "eu.ah"; ai: "eu.ai"; aj: "eu.aj"; ak: "eu.ak"; al: "eu.al"; am: "eu.am"; an: "eu.an"; ao: "eu.ao"; ap: "eu.ap"; aq: "eu.aq"; ar: "eu.ar"; as: "eu.as"; at: "eu.at"; au: "eu.au"; av: "eu.av"; aw: "eu.aw"; ax: "eu.ax"; ay: "eu.ay"; az: "eu.az"; ba: "eu.ba"; bb: "eu.bb"; bc: "eu.bc"; bd: "eu.bd"; be: "eu.be"; bf: "eu.bf"; bg: "eu.bg"; bh: "eu.bh"; bi: "eu.bi"; bj: "eu.bj"; bk: "eu.bk"; bl: "eu.bl"; bm: "eu.bm"; bn: "eu.bn"; bo: "eu.bo"; bp: "eu.bp"; bq: "eu.bq"; br: "eu.br"; bs: "eu.bs"; bt: "eu.bt"; bu: "eu.bu"; bv: "eu.bv"; bw: "eu.bw"; bx: "eu.bx"; by: "eu.by"; bz: "eu.bz"; ca: "eu.ca"; cb: "eu.cb"; cc: "eu.cc"; cd: "eu.cd"; ce: "eu.ce"; cf: "eu.cf"; cg: "eu.cg"; ch: "eu.ch"; ci: "eu.ci"; cj: "eu.cj"; ck: "eu.ck"; cl: "eu.cl"; cm: "eu.cm"; cn: "eu.cn"; co: "eu.co"; cp: "eu.cp"; cq: "eu.cq"; cr: "eu.cr"; cs: "eu.cs"; ct: "eu.ct"; cu: "eu.cu"; cv: "eu.cv"; cw: "eu.cw"; cx: "eu.cx"; cy: "eu.cy"; cz: "eu.cz"; da: "eu.da"; db: "eu.db"; dc: "eu.dc"; dd: "eu.dd"; de: "eu.de"; df: "eu.df"; dg: "eu.dg"; dh: "eu.dh"; di: "eu.di"; dj: "eu.dj"; dk: "eu.dk"; dl: "eu.dl"; dm: "eu.dm"; dn: "eu.dn"; do: "eu.do"; dp: "eu.dp"; dq: "eu.dq"; dr: "eu.dr"; ds: "eu.ds"; dt: "eu.dt"; du: "eu.du"; dv: "eu.dv"; dw: "eu.dw"; dx: "eu.dx"; dy: "eu.dy"; dz: "eu.dz"; ea: "eu.ea"; eb: "eu.eb"; ec: "eu.ec"; ed: "eu.ed"; ee: "eu.ee"; ef: "eu.ef"; eg: "eu.eg"; eh: "eu.eh"; ei: "eu.ei"; ej: "eu.ej"; ek: "eu.ek"; el: "eu.el"; em: "eu.em"; en: "eu.en"; eo: "eu.eo"; ep: "eu.ep"; eq: "eu.eq"; er: "eu.er"; es: "eu.es"; et: "eu.et"; eu: "eu.eu"; ev: "eu.ev"; ew: "eu.ew"; ex: "eu.ex"; ey: "eu.ey"; ez: "eu.ez"; fa: "eu.fa"; fb: "eu.fb"; fc: "eu.fc"; fd: "eu.fd"; fe: "eu.fe"; ff: "eu.ff"; fg: "eu.fg"; fh: "eu.fh"; fi: "eu.fi"; fj: "eu.fj"; fk: "eu.fk"; fl: "eu.fl"; fm: "eu.fm"; fn: "eu.fn"; fo: "eu.fo"; fp: "eu.fp"; fq: "eu.fq"; fr: "eu.fr"; fs: "eu.fs"; ft: "eu.ft"; fu: "eu.fu"; fv: "eu.fv"; fw: "eu.fw"; fx: "eu.fx"; fy: "eu.fy"; fz: "eu.fz"; ga: "eu.ga"; gb: "eu.gb"; gc: "eu.gc"; gd: "eu.gd"; ge: "eu.ge"; gf: "eu.gf"; gg: "eu.gg"; gh: "eu.gh"; gi: "eu.gi"; gj: "eu.gj"; gk: "eu.gk"; gl: "eu.gl"; gm: "eu.gm"; gn: "eu.gn"; go: "eu.go"; gp: "eu.gp"; gq: "eu.gq"; gr: "eu.gr"; gs: "eu.gs"; gt: "eu.gt"; gu: "eu.gu"; gv: "eu.gv"; gw: "eu.gw"; gx: "eu.gx"; gy: "eu.gy"; gz: "eu.gz"; ha: "eu.ha"; hb: "eu.hb"; hc: "eu.hc"; hd: "eu.hd"; he: "eu.he"; hf: "eu.hf"; hg: "eu.hg"; hh: "eu.hh"; hi: "eu.hi"; hj: "eu.hj"; hk: "eu.hk"; hl: "eu.hl"; hm: "eu.hm"; hn: "eu.hn"; ho: "eu.ho"; hp: "eu.hp"; hq: "eu.hq"; hr: "eu.hr"; hs: "eu.hs"; ht: "eu.ht"; hu: "eu.hu"; hv: "eu.hv"; hw: "eu.hw"; hx: "eu.hx"; hy: "eu.hy"; hz: "eu.hz"; ia: "eu.ia"; ib: "eu.ib"; ic: "eu.ic"; id: "eu.id"; ie: "eu.ie"; if: "eu.if"; ig: "eu.ig"; ih: "eu.ih"; ii: "eu.ii"; ij: "eu.ij"; ik: "eu.ik"; il: "eu.il"; im: "eu.im"; in: "eu.in"; io: "eu.io"; ip: "eu.ip"; iq: "eu.iq"; ir: "eu.ir"; is: "eu.is"; it: "eu.it"; iu: "eu.iu"; iv: "eu.iv"; iw: "eu.iw"; ix: "eu.ix"; iy: "eu.iy"; iz: "eu.iz"; ja: "eu.ja"; jb: "eu.jb"; jc: "eu.jc"; jd: "eu.jd"; je: "eu.je"; jf: "eu.jf"; jg: "eu.jg"; jh: "eu.jh"; ji: "eu.ji"; jj: "eu.jj"; jk: "eu.jk"; jl: "eu.jl"; jm: "eu.jm"; jn: "eu.jn"; jo: "eu.jo"; jp: "eu.jp"; jq: "eu.jq"; jr: "eu.jr"; js: "eu.js"; jt: "eu.jt"; ju: "eu.ju"; jv: "eu.jv"; jw: "eu.jw"; jx: "eu.jx"; jy: "eu.jy"; jz: "eu.jz"; ka: "eu.ka"; kb: "eu.kb"; kc: "eu.kc"; kd: "eu.kd"; ke: "eu.ke"; kf: "eu.kf"; kg: "eu.kg"; kh: "eu.kh"; ki: "eu.ki"; kj: "eu.kj"; kk: "eu.kk"; kl: "eu.kl"; km: "eu.km"; kn: "eu.kn"; ko: "eu.ko"; kp: "eu.kp"; kq: "eu.kq"; kr: "eu.kr"; ks: "eu.ks"; kt: "eu.kt"; ku: "eu.ku"; kv: "eu.kv"; kw: "eu.kw"; kx: "eu.kx"; ky: "eu.ky"; kz: "eu.kz"; la: "eu.la"; lb: "eu.lb"; lc: "eu.lc"; ld: "eu.ld"; le: "eu.le"; lf: "eu.lf"; lg: "eu.lg"; lh: "eu.lh"; li: "eu.li"; lj: "eu.lj"; lk: "eu.lk"; ll: "eu.ll"; lm: "eu.lm"; ln: "eu.ln"; lo: "eu.lo"; lp: "eu.lp"; lq: "eu.lq"; lr: "eu.lr"; ls: "eu.ls"; lt: "eu.lt"; lu: "eu.lu"; lv: "eu.lv"; lw: "eu.lw"; lx: "eu.lx"; ly: "eu.ly"; lz: "eu.lz"; ma: "eu.ma"; mb: "eu.mb"; mc: "eu.mc"; md: "eu.md"; me: "eu.me"; mf: "eu.mf"; mg: "eu.mg"; mh: "eu.mh"; mi: "eu.mi"; mj: "eu.mj"; mk: "eu.mk"; ml: "eu.ml"; mm: "eu.mm"; mn: "eu.mn"; mo: "eu.mo"; mp: "eu.mp"; mq: "eu.mq"; mr: "eu.mr"; ms: "eu.ms"; mt: "eu.mt"; mu: "eu.mu"; mv: "eu.mv"; mw: "eu.mw"; mx: "eu.mx"; my: "eu.my"; mz: "eu.mz"; na: "eu.na"; nb: "eu.nb"; nc: "eu.nc"; nd: "eu.nd"; ne: "eu.ne"; nf: "eu.nf"; ng: "eu.ng"; nh: "eu.nh"; ni: "eu.ni"; nj: "eu.nj"; nk: "eu.nk"; nl: "eu.nl"; nm: "eu.nm"; nn: "eu.nn"; no: "eu.no"; np: "eu.np"; nq: "eu.nq"; nr: "eu.nr"; ns: "eu.ns"; nt: "eu.nt"; nu: "eu.nu"; nv: "eu.nv"; nw: "eu.nw"; nx: "eu.nx"; ny: "eu.ny"; nz: "eu.nz"; oa: "eu.oa"; ob: "eu.ob"; oc: "eu.oc"; od: "eu.od"; oe: "eu.oe"; of: "eu.of"; og: "eu.og"; oh: "eu.oh"; oi: "eu.oi"; oj: "eu.oj"; ok: "eu.ok"; ol: "eu.ol"; om: "eu.om"; on: "eu.on"; oo: "eu.oo"; op: "eu.op"; oq: "eu.oq"; or: "eu.or"; os: "eu.os"; ot: "eu.ot"; ou: "eu.ou"; ov: "eu.ov"; ow: "eu.ow"; ox: "eu.ox"; oy: "eu.oy"; oz: "eu.oz"; pa: "eu.pa"; pb: "eu.pb"; pc: "eu.pc"; pd: "eu.pd"; pe: "eu.pe"; pf: "eu.pf"; pg: "eu.pg"; ph: "eu.ph"; pi: "eu.pi"; pj: "eu.pj"; pk: "eu.pk"; pl: "eu.pl"; pm: "eu.pm"; pn: "eu.pn"; po: "eu.po"; pp: "eu.pp"; pq: "eu.pq"; pr: "eu.pr"; ps: "eu.ps"; pt: "eu.pt"; pu: "eu.pu"; pv: "eu.pv"; pw: "eu.pw"; px: "eu.px"; py: "eu.py"; pz: "eu.pz"; qa: "eu.qa"; qb: "eu.qb"; qc: "eu.qc"; qd: "eu.qd"; qe: "eu.qe"; qf: "eu.qf"; qg: "eu.qg"; qh: "eu.qh"; qi: "eu.qi"; qj: "eu.qj"; qk: "eu.qk"; ql: "eu.ql"; qm: "eu.qm"; qn: "eu.qn"; qo: "eu.qo"; qp: "eu.qp"; qq: "eu.qq"; qr: "eu.qr"; qs: "eu.qs"; qt: "eu.qt"; qu: "eu.qu"; qv: "eu.qv"; qw: "eu.qw"; qx: "eu.qx"; qy: "eu.qy"; qz: "eu.qz"; ra: "eu.ra"; rb: "eu.rb"; rc: "eu.rc"; rd: "eu.rd"; re: "eu.re"; rf: "eu.rf"; rg: "eu.rg"; rh: "eu.rh"; ri: "eu.ri"; rj: "eu.rj"; rk: "eu.rk"; rl: "eu.rl"; rm: "eu.rm"; rn: "eu.rn"; ro: "eu.ro"; rp: "eu.rp"; rq: "eu.rq"; rr: "eu.rr"; rs: "eu.rs"; rt: "eu.rt"; ru: "eu.ru"; rv: "eu.rv"; rw: "eu.rw"; rx: "eu.rx"; ry: "eu.ry"; rz: "eu.rz"; sa: "eu.sa"; sb: "eu.sb"; sc: "eu.sc"; sd: "eu.sd"; se: "eu.se"; sf: "eu.sf"; sg: "eu.sg"; sh: "eu.sh"; si: "eu.si"; sj: "eu.sj"; sk: "eu.sk"; sl: "eu.sl"; sm: "eu.sm"; sn: "eu.sn"; so: "eu.so"; sp: "eu.sp"; sq: "eu.sq"; sr: "eu.sr"; ss: "eu.ss"; st: "eu.st"; su: "eu.su"; sv: "eu.sv"; sw: "eu.sw"; sx: "eu.sx"; sy: "eu.sy"; sz: "eu.sz"; ta: "eu.ta"; tb: "eu.tb"; tc: "eu.tc"; td: "eu.td"; te: "eu.te"; tf: "eu.tf"; tg: "eu.tg"; th: "eu.th"; ti: "eu.ti"; tj: "eu.tj"; tk: "eu.tk"; tl: "eu.tl"; tm: "eu.tm"; tn: "eu.tn"; to: "eu.to"; tp: "eu.tp"; tq: "eu.tq"; tr: "eu.tr"; ts: "eu.ts"; tt: "eu.tt"; tu: "eu.tu"; tv: "eu.tv"; tw: "eu.tw"; tx: "eu.tx"; ty: "eu.ty"; tz: "eu.tz"; ua: "eu.ua"; ub: "eu.ub"; uc: "eu.uc"; ud: "eu.ud"; ue: "eu.ue"; uf: "eu.uf"; ug: "eu.ug"; uh: "eu.uh"; ui: "eu.ui"; uj: "eu.uj"; uk: "eu.uk"; ul: "eu.ul"; um: "eu.um"; un: "eu.un"; uo: "eu.uo"; up: "eu.up"; uq: "eu.uq"; ur: "eu.ur"; us: "eu.us"; ut: "eu.ut"; uu: "eu.uu"; uv: "eu.uv"; uw: "eu.uw"; ux: "eu.ux"; uy: "eu.uy"; uz: "eu.uz"; va: "eu.va"; vb: "eu.vb"; vc: "eu.vc"; vd: "eu.vd"; ve: "eu.ve"; vf: "eu.vf"; vg: "eu.vg"; vh: "eu.vh"; vi: "eu.vi"; vj: "eu.vj"; vk: "eu.vk"; vl: "eu.vl"; vm: "eu.vm"; vn: "eu.vn"; vo: "eu.vo"; vp: "eu.vp"; vq: "eu.vq"; vr: "eu.vr"; vs: "eu.vs"; vt: "eu.vt"; vu: "eu.vu"; vv: "eu.vv"; vw: "eu.vw"; vx: "eu.vx"; vy: "eu.vy"; vz: "eu.vz"; wa: "eu.wa"; wb: "eu.wb"; wc: "eu.wc"; wd: "eu.wd"; we: "eu.we"; wf: "eu.wf"; wg: "eu.wg"; wh: "eu.wh"; wi: "eu.wi"; wj: "eu.wj"; wk: "eu.wk"; wl: "eu.wl"; wm: "eu.wm"; wn: "eu.wn"; wo: "eu.wo"; wp: "eu.wp"; wq: "eu.wq"; wr: "eu.wr"; ws: "eu.ws"; wt: "eu.wt"; wu: "eu.wu"; wv: "eu.wv"; ww: "eu.ww"; wx: "eu.wx"; wy: "eu.wy"; wz: "eu.wz"; xa: "eu.xa"; xb: "eu.xb"; xc: "eu.xc"; xd: "eu.xd"; xe: "eu.xe"; xf: "eu.xf"; xg: "eu.xg"; xh: "eu.xh"; xi: "eu.xi"; xj: "eu.xj"; xk: "eu.xk"; xl: "eu.xl"; xm: "eu.xm"; xn: "eu.xn"; xo: "eu.xo"; xp: "eu.xp"; xq: "eu.xq"; xr: "eu.xr"; xs: "eu.xs"; xt: "eu.xt"; xu: "eu.xu"; xv: "eu.xv"; xw: "eu.xw"; xx: "eu.xx"; xy: "eu.xy"; xz: "eu.xz"; ya: "eu.ya"; yb: "eu.yb"; yc: "eu.yc"; yd: "eu.yd"; ye: "eu.ye"; yf: "eu.yf"; yg: "eu.yg"; yh: "eu.yh"; yi: "eu.yi"; yj: "eu.yj"; yk: "eu.yk"; yl: "eu.yl"; ym: "eu.ym"; yn: "eu.yn"; yo: "eu.yo"; yp: "eu.yp"; yq: "eu.yq"; yr: "eu.yr"; ys: "eu.ys"; yt: "eu.yt"; yu: "eu.yu"; yv: "eu.yv"; yw: "eu.yw"; yx: "eu.yx"; yy: "eu.yy"; yz: "eu.yz"; za: "eu.za"; zb: "eu.zb"; zc: "eu.zc"; zd: "eu.zd"; ze: "eu.ze"; zf: "eu.zf"; zg: "eu.zg"; zh: "eu.zh"; zi: "eu.zi"; zj: "eu.zj"; zk: "eu.zk"; zl: "eu.zl"; zm: "eu.zm"; zn: "eu.zn"; zo: "eu.zo"; zp: "eu.zp"; zq: "eu.zq"; zr: "eu.zr"; zs: "eu.zs"; zt: "eu.zt"; zu: "eu.zu"; zv: "eu.zv"; zw: "eu.zw"; zx: "eu.zx"; zy: "eu.zy"; zz: "eu.zz"; }; ev: { aa: "ev.aa"; ab: "ev.ab"; ac: "ev.ac"; ad: "ev.ad"; ae: "ev.ae"; af: "ev.af"; ag: "ev.ag"; ah: "ev.ah"; ai: "ev.ai"; aj: "ev.aj"; ak: "ev.ak"; al: "ev.al"; am: "ev.am"; an: "ev.an"; ao: "ev.ao"; ap: "ev.ap"; aq: "ev.aq"; ar: "ev.ar"; as: "ev.as"; at: "ev.at"; au: "ev.au"; av: "ev.av"; aw: "ev.aw"; ax: "ev.ax"; ay: "ev.ay"; az: "ev.az"; ba: "ev.ba"; bb: "ev.bb"; bc: "ev.bc"; bd: "ev.bd"; be: "ev.be"; bf: "ev.bf"; bg: "ev.bg"; bh: "ev.bh"; bi: "ev.bi"; bj: "ev.bj"; bk: "ev.bk"; bl: "ev.bl"; bm: "ev.bm"; bn: "ev.bn"; bo: "ev.bo"; bp: "ev.bp"; bq: "ev.bq"; br: "ev.br"; bs: "ev.bs"; bt: "ev.bt"; bu: "ev.bu"; bv: "ev.bv"; bw: "ev.bw"; bx: "ev.bx"; by: "ev.by"; bz: "ev.bz"; ca: "ev.ca"; cb: "ev.cb"; cc: "ev.cc"; cd: "ev.cd"; ce: "ev.ce"; cf: "ev.cf"; cg: "ev.cg"; ch: "ev.ch"; ci: "ev.ci"; cj: "ev.cj"; ck: "ev.ck"; cl: "ev.cl"; cm: "ev.cm"; cn: "ev.cn"; co: "ev.co"; cp: "ev.cp"; cq: "ev.cq"; cr: "ev.cr"; cs: "ev.cs"; ct: "ev.ct"; cu: "ev.cu"; cv: "ev.cv"; cw: "ev.cw"; cx: "ev.cx"; cy: "ev.cy"; cz: "ev.cz"; da: "ev.da"; db: "ev.db"; dc: "ev.dc"; dd: "ev.dd"; de: "ev.de"; df: "ev.df"; dg: "ev.dg"; dh: "ev.dh"; di: "ev.di"; dj: "ev.dj"; dk: "ev.dk"; dl: "ev.dl"; dm: "ev.dm"; dn: "ev.dn"; do: "ev.do"; dp: "ev.dp"; dq: "ev.dq"; dr: "ev.dr"; ds: "ev.ds"; dt: "ev.dt"; du: "ev.du"; dv: "ev.dv"; dw: "ev.dw"; dx: "ev.dx"; dy: "ev.dy"; dz: "ev.dz"; ea: "ev.ea"; eb: "ev.eb"; ec: "ev.ec"; ed: "ev.ed"; ee: "ev.ee"; ef: "ev.ef"; eg: "ev.eg"; eh: "ev.eh"; ei: "ev.ei"; ej: "ev.ej"; ek: "ev.ek"; el: "ev.el"; em: "ev.em"; en: "ev.en"; eo: "ev.eo"; ep: "ev.ep"; eq: "ev.eq"; er: "ev.er"; es: "ev.es"; et: "ev.et"; eu: "ev.eu"; ev: "ev.ev"; ew: "ev.ew"; ex: "ev.ex"; ey: "ev.ey"; ez: "ev.ez"; fa: "ev.fa"; fb: "ev.fb"; fc: "ev.fc"; fd: "ev.fd"; fe: "ev.fe"; ff: "ev.ff"; fg: "ev.fg"; fh: "ev.fh"; fi: "ev.fi"; fj: "ev.fj"; fk: "ev.fk"; fl: "ev.fl"; fm: "ev.fm"; fn: "ev.fn"; fo: "ev.fo"; fp: "ev.fp"; fq: "ev.fq"; fr: "ev.fr"; fs: "ev.fs"; ft: "ev.ft"; fu: "ev.fu"; fv: "ev.fv"; fw: "ev.fw"; fx: "ev.fx"; fy: "ev.fy"; fz: "ev.fz"; ga: "ev.ga"; gb: "ev.gb"; gc: "ev.gc"; gd: "ev.gd"; ge: "ev.ge"; gf: "ev.gf"; gg: "ev.gg"; gh: "ev.gh"; gi: "ev.gi"; gj: "ev.gj"; gk: "ev.gk"; gl: "ev.gl"; gm: "ev.gm"; gn: "ev.gn"; go: "ev.go"; gp: "ev.gp"; gq: "ev.gq"; gr: "ev.gr"; gs: "ev.gs"; gt: "ev.gt"; gu: "ev.gu"; gv: "ev.gv"; gw: "ev.gw"; gx: "ev.gx"; gy: "ev.gy"; gz: "ev.gz"; ha: "ev.ha"; hb: "ev.hb"; hc: "ev.hc"; hd: "ev.hd"; he: "ev.he"; hf: "ev.hf"; hg: "ev.hg"; hh: "ev.hh"; hi: "ev.hi"; hj: "ev.hj"; hk: "ev.hk"; hl: "ev.hl"; hm: "ev.hm"; hn: "ev.hn"; ho: "ev.ho"; hp: "ev.hp"; hq: "ev.hq"; hr: "ev.hr"; hs: "ev.hs"; ht: "ev.ht"; hu: "ev.hu"; hv: "ev.hv"; hw: "ev.hw"; hx: "ev.hx"; hy: "ev.hy"; hz: "ev.hz"; ia: "ev.ia"; ib: "ev.ib"; ic: "ev.ic"; id: "ev.id"; ie: "ev.ie"; if: "ev.if"; ig: "ev.ig"; ih: "ev.ih"; ii: "ev.ii"; ij: "ev.ij"; ik: "ev.ik"; il: "ev.il"; im: "ev.im"; in: "ev.in"; io: "ev.io"; ip: "ev.ip"; iq: "ev.iq"; ir: "ev.ir"; is: "ev.is"; it: "ev.it"; iu: "ev.iu"; iv: "ev.iv"; iw: "ev.iw"; ix: "ev.ix"; iy: "ev.iy"; iz: "ev.iz"; ja: "ev.ja"; jb: "ev.jb"; jc: "ev.jc"; jd: "ev.jd"; je: "ev.je"; jf: "ev.jf"; jg: "ev.jg"; jh: "ev.jh"; ji: "ev.ji"; jj: "ev.jj"; jk: "ev.jk"; jl: "ev.jl"; jm: "ev.jm"; jn: "ev.jn"; jo: "ev.jo"; jp: "ev.jp"; jq: "ev.jq"; jr: "ev.jr"; js: "ev.js"; jt: "ev.jt"; ju: "ev.ju"; jv: "ev.jv"; jw: "ev.jw"; jx: "ev.jx"; jy: "ev.jy"; jz: "ev.jz"; ka: "ev.ka"; kb: "ev.kb"; kc: "ev.kc"; kd: "ev.kd"; ke: "ev.ke"; kf: "ev.kf"; kg: "ev.kg"; kh: "ev.kh"; ki: "ev.ki"; kj: "ev.kj"; kk: "ev.kk"; kl: "ev.kl"; km: "ev.km"; kn: "ev.kn"; ko: "ev.ko"; kp: "ev.kp"; kq: "ev.kq"; kr: "ev.kr"; ks: "ev.ks"; kt: "ev.kt"; ku: "ev.ku"; kv: "ev.kv"; kw: "ev.kw"; kx: "ev.kx"; ky: "ev.ky"; kz: "ev.kz"; la: "ev.la"; lb: "ev.lb"; lc: "ev.lc"; ld: "ev.ld"; le: "ev.le"; lf: "ev.lf"; lg: "ev.lg"; lh: "ev.lh"; li: "ev.li"; lj: "ev.lj"; lk: "ev.lk"; ll: "ev.ll"; lm: "ev.lm"; ln: "ev.ln"; lo: "ev.lo"; lp: "ev.lp"; lq: "ev.lq"; lr: "ev.lr"; ls: "ev.ls"; lt: "ev.lt"; lu: "ev.lu"; lv: "ev.lv"; lw: "ev.lw"; lx: "ev.lx"; ly: "ev.ly"; lz: "ev.lz"; ma: "ev.ma"; mb: "ev.mb"; mc: "ev.mc"; md: "ev.md"; me: "ev.me"; mf: "ev.mf"; mg: "ev.mg"; mh: "ev.mh"; mi: "ev.mi"; mj: "ev.mj"; mk: "ev.mk"; ml: "ev.ml"; mm: "ev.mm"; mn: "ev.mn"; mo: "ev.mo"; mp: "ev.mp"; mq: "ev.mq"; mr: "ev.mr"; ms: "ev.ms"; mt: "ev.mt"; mu: "ev.mu"; mv: "ev.mv"; mw: "ev.mw"; mx: "ev.mx"; my: "ev.my"; mz: "ev.mz"; na: "ev.na"; nb: "ev.nb"; nc: "ev.nc"; nd: "ev.nd"; ne: "ev.ne"; nf: "ev.nf"; ng: "ev.ng"; nh: "ev.nh"; ni: "ev.ni"; nj: "ev.nj"; nk: "ev.nk"; nl: "ev.nl"; nm: "ev.nm"; nn: "ev.nn"; no: "ev.no"; np: "ev.np"; nq: "ev.nq"; nr: "ev.nr"; ns: "ev.ns"; nt: "ev.nt"; nu: "ev.nu"; nv: "ev.nv"; nw: "ev.nw"; nx: "ev.nx"; ny: "ev.ny"; nz: "ev.nz"; oa: "ev.oa"; ob: "ev.ob"; oc: "ev.oc"; od: "ev.od"; oe: "ev.oe"; of: "ev.of"; og: "ev.og"; oh: "ev.oh"; oi: "ev.oi"; oj: "ev.oj"; ok: "ev.ok"; ol: "ev.ol"; om: "ev.om"; on: "ev.on"; oo: "ev.oo"; op: "ev.op"; oq: "ev.oq"; or: "ev.or"; os: "ev.os"; ot: "ev.ot"; ou: "ev.ou"; ov: "ev.ov"; ow: "ev.ow"; ox: "ev.ox"; oy: "ev.oy"; oz: "ev.oz"; pa: "ev.pa"; pb: "ev.pb"; pc: "ev.pc"; pd: "ev.pd"; pe: "ev.pe"; pf: "ev.pf"; pg: "ev.pg"; ph: "ev.ph"; pi: "ev.pi"; pj: "ev.pj"; pk: "ev.pk"; pl: "ev.pl"; pm: "ev.pm"; pn: "ev.pn"; po: "ev.po"; pp: "ev.pp"; pq: "ev.pq"; pr: "ev.pr"; ps: "ev.ps"; pt: "ev.pt"; pu: "ev.pu"; pv: "ev.pv"; pw: "ev.pw"; px: "ev.px"; py: "ev.py"; pz: "ev.pz"; qa: "ev.qa"; qb: "ev.qb"; qc: "ev.qc"; qd: "ev.qd"; qe: "ev.qe"; qf: "ev.qf"; qg: "ev.qg"; qh: "ev.qh"; qi: "ev.qi"; qj: "ev.qj"; qk: "ev.qk"; ql: "ev.ql"; qm: "ev.qm"; qn: "ev.qn"; qo: "ev.qo"; qp: "ev.qp"; qq: "ev.qq"; qr: "ev.qr"; qs: "ev.qs"; qt: "ev.qt"; qu: "ev.qu"; qv: "ev.qv"; qw: "ev.qw"; qx: "ev.qx"; qy: "ev.qy"; qz: "ev.qz"; ra: "ev.ra"; rb: "ev.rb"; rc: "ev.rc"; rd: "ev.rd"; re: "ev.re"; rf: "ev.rf"; rg: "ev.rg"; rh: "ev.rh"; ri: "ev.ri"; rj: "ev.rj"; rk: "ev.rk"; rl: "ev.rl"; rm: "ev.rm"; rn: "ev.rn"; ro: "ev.ro"; rp: "ev.rp"; rq: "ev.rq"; rr: "ev.rr"; rs: "ev.rs"; rt: "ev.rt"; ru: "ev.ru"; rv: "ev.rv"; rw: "ev.rw"; rx: "ev.rx"; ry: "ev.ry"; rz: "ev.rz"; sa: "ev.sa"; sb: "ev.sb"; sc: "ev.sc"; sd: "ev.sd"; se: "ev.se"; sf: "ev.sf"; sg: "ev.sg"; sh: "ev.sh"; si: "ev.si"; sj: "ev.sj"; sk: "ev.sk"; sl: "ev.sl"; sm: "ev.sm"; sn: "ev.sn"; so: "ev.so"; sp: "ev.sp"; sq: "ev.sq"; sr: "ev.sr"; ss: "ev.ss"; st: "ev.st"; su: "ev.su"; sv: "ev.sv"; sw: "ev.sw"; sx: "ev.sx"; sy: "ev.sy"; sz: "ev.sz"; ta: "ev.ta"; tb: "ev.tb"; tc: "ev.tc"; td: "ev.td"; te: "ev.te"; tf: "ev.tf"; tg: "ev.tg"; th: "ev.th"; ti: "ev.ti"; tj: "ev.tj"; tk: "ev.tk"; tl: "ev.tl"; tm: "ev.tm"; tn: "ev.tn"; to: "ev.to"; tp: "ev.tp"; tq: "ev.tq"; tr: "ev.tr"; ts: "ev.ts"; tt: "ev.tt"; tu: "ev.tu"; tv: "ev.tv"; tw: "ev.tw"; tx: "ev.tx"; ty: "ev.ty"; tz: "ev.tz"; ua: "ev.ua"; ub: "ev.ub"; uc: "ev.uc"; ud: "ev.ud"; ue: "ev.ue"; uf: "ev.uf"; ug: "ev.ug"; uh: "ev.uh"; ui: "ev.ui"; uj: "ev.uj"; uk: "ev.uk"; ul: "ev.ul"; um: "ev.um"; un: "ev.un"; uo: "ev.uo"; up: "ev.up"; uq: "ev.uq"; ur: "ev.ur"; us: "ev.us"; ut: "ev.ut"; uu: "ev.uu"; uv: "ev.uv"; uw: "ev.uw"; ux: "ev.ux"; uy: "ev.uy"; uz: "ev.uz"; va: "ev.va"; vb: "ev.vb"; vc: "ev.vc"; vd: "ev.vd"; ve: "ev.ve"; vf: "ev.vf"; vg: "ev.vg"; vh: "ev.vh"; vi: "ev.vi"; vj: "ev.vj"; vk: "ev.vk"; vl: "ev.vl"; vm: "ev.vm"; vn: "ev.vn"; vo: "ev.vo"; vp: "ev.vp"; vq: "ev.vq"; vr: "ev.vr"; vs: "ev.vs"; vt: "ev.vt"; vu: "ev.vu"; vv: "ev.vv"; vw: "ev.vw"; vx: "ev.vx"; vy: "ev.vy"; vz: "ev.vz"; wa: "ev.wa"; wb: "ev.wb"; wc: "ev.wc"; wd: "ev.wd"; we: "ev.we"; wf: "ev.wf"; wg: "ev.wg"; wh: "ev.wh"; wi: "ev.wi"; wj: "ev.wj"; wk: "ev.wk"; wl: "ev.wl"; wm: "ev.wm"; wn: "ev.wn"; wo: "ev.wo"; wp: "ev.wp"; wq: "ev.wq"; wr: "ev.wr"; ws: "ev.ws"; wt: "ev.wt"; wu: "ev.wu"; wv: "ev.wv"; ww: "ev.ww"; wx: "ev.wx"; wy: "ev.wy"; wz: "ev.wz"; xa: "ev.xa"; xb: "ev.xb"; xc: "ev.xc"; xd: "ev.xd"; xe: "ev.xe"; xf: "ev.xf"; xg: "ev.xg"; xh: "ev.xh"; xi: "ev.xi"; xj: "ev.xj"; xk: "ev.xk"; xl: "ev.xl"; xm: "ev.xm"; xn: "ev.xn"; xo: "ev.xo"; xp: "ev.xp"; xq: "ev.xq"; xr: "ev.xr"; xs: "ev.xs"; xt: "ev.xt"; xu: "ev.xu"; xv: "ev.xv"; xw: "ev.xw"; xx: "ev.xx"; xy: "ev.xy"; xz: "ev.xz"; ya: "ev.ya"; yb: "ev.yb"; yc: "ev.yc"; yd: "ev.yd"; ye: "ev.ye"; yf: "ev.yf"; yg: "ev.yg"; yh: "ev.yh"; yi: "ev.yi"; yj: "ev.yj"; yk: "ev.yk"; yl: "ev.yl"; ym: "ev.ym"; yn: "ev.yn"; yo: "ev.yo"; yp: "ev.yp"; yq: "ev.yq"; yr: "ev.yr"; ys: "ev.ys"; yt: "ev.yt"; yu: "ev.yu"; yv: "ev.yv"; yw: "ev.yw"; yx: "ev.yx"; yy: "ev.yy"; yz: "ev.yz"; za: "ev.za"; zb: "ev.zb"; zc: "ev.zc"; zd: "ev.zd"; ze: "ev.ze"; zf: "ev.zf"; zg: "ev.zg"; zh: "ev.zh"; zi: "ev.zi"; zj: "ev.zj"; zk: "ev.zk"; zl: "ev.zl"; zm: "ev.zm"; zn: "ev.zn"; zo: "ev.zo"; zp: "ev.zp"; zq: "ev.zq"; zr: "ev.zr"; zs: "ev.zs"; zt: "ev.zt"; zu: "ev.zu"; zv: "ev.zv"; zw: "ev.zw"; zx: "ev.zx"; zy: "ev.zy"; zz: "ev.zz"; }; ew: { aa: "ew.aa"; ab: "ew.ab"; ac: "ew.ac"; ad: "ew.ad"; ae: "ew.ae"; af: "ew.af"; ag: "ew.ag"; ah: "ew.ah"; ai: "ew.ai"; aj: "ew.aj"; ak: "ew.ak"; al: "ew.al"; am: "ew.am"; an: "ew.an"; ao: "ew.ao"; ap: "ew.ap"; aq: "ew.aq"; ar: "ew.ar"; as: "ew.as"; at: "ew.at"; au: "ew.au"; av: "ew.av"; aw: "ew.aw"; ax: "ew.ax"; ay: "ew.ay"; az: "ew.az"; ba: "ew.ba"; bb: "ew.bb"; bc: "ew.bc"; bd: "ew.bd"; be: "ew.be"; bf: "ew.bf"; bg: "ew.bg"; bh: "ew.bh"; bi: "ew.bi"; bj: "ew.bj"; bk: "ew.bk"; bl: "ew.bl"; bm: "ew.bm"; bn: "ew.bn"; bo: "ew.bo"; bp: "ew.bp"; bq: "ew.bq"; br: "ew.br"; bs: "ew.bs"; bt: "ew.bt"; bu: "ew.bu"; bv: "ew.bv"; bw: "ew.bw"; bx: "ew.bx"; by: "ew.by"; bz: "ew.bz"; ca: "ew.ca"; cb: "ew.cb"; cc: "ew.cc"; cd: "ew.cd"; ce: "ew.ce"; cf: "ew.cf"; cg: "ew.cg"; ch: "ew.ch"; ci: "ew.ci"; cj: "ew.cj"; ck: "ew.ck"; cl: "ew.cl"; cm: "ew.cm"; cn: "ew.cn"; co: "ew.co"; cp: "ew.cp"; cq: "ew.cq"; cr: "ew.cr"; cs: "ew.cs"; ct: "ew.ct"; cu: "ew.cu"; cv: "ew.cv"; cw: "ew.cw"; cx: "ew.cx"; cy: "ew.cy"; cz: "ew.cz"; da: "ew.da"; db: "ew.db"; dc: "ew.dc"; dd: "ew.dd"; de: "ew.de"; df: "ew.df"; dg: "ew.dg"; dh: "ew.dh"; di: "ew.di"; dj: "ew.dj"; dk: "ew.dk"; dl: "ew.dl"; dm: "ew.dm"; dn: "ew.dn"; do: "ew.do"; dp: "ew.dp"; dq: "ew.dq"; dr: "ew.dr"; ds: "ew.ds"; dt: "ew.dt"; du: "ew.du"; dv: "ew.dv"; dw: "ew.dw"; dx: "ew.dx"; dy: "ew.dy"; dz: "ew.dz"; ea: "ew.ea"; eb: "ew.eb"; ec: "ew.ec"; ed: "ew.ed"; ee: "ew.ee"; ef: "ew.ef"; eg: "ew.eg"; eh: "ew.eh"; ei: "ew.ei"; ej: "ew.ej"; ek: "ew.ek"; el: "ew.el"; em: "ew.em"; en: "ew.en"; eo: "ew.eo"; ep: "ew.ep"; eq: "ew.eq"; er: "ew.er"; es: "ew.es"; et: "ew.et"; eu: "ew.eu"; ev: "ew.ev"; ew: "ew.ew"; ex: "ew.ex"; ey: "ew.ey"; ez: "ew.ez"; fa: "ew.fa"; fb: "ew.fb"; fc: "ew.fc"; fd: "ew.fd"; fe: "ew.fe"; ff: "ew.ff"; fg: "ew.fg"; fh: "ew.fh"; fi: "ew.fi"; fj: "ew.fj"; fk: "ew.fk"; fl: "ew.fl"; fm: "ew.fm"; fn: "ew.fn"; fo: "ew.fo"; fp: "ew.fp"; fq: "ew.fq"; fr: "ew.fr"; fs: "ew.fs"; ft: "ew.ft"; fu: "ew.fu"; fv: "ew.fv"; fw: "ew.fw"; fx: "ew.fx"; fy: "ew.fy"; fz: "ew.fz"; ga: "ew.ga"; gb: "ew.gb"; gc: "ew.gc"; gd: "ew.gd"; ge: "ew.ge"; gf: "ew.gf"; gg: "ew.gg"; gh: "ew.gh"; gi: "ew.gi"; gj: "ew.gj"; gk: "ew.gk"; gl: "ew.gl"; gm: "ew.gm"; gn: "ew.gn"; go: "ew.go"; gp: "ew.gp"; gq: "ew.gq"; gr: "ew.gr"; gs: "ew.gs"; gt: "ew.gt"; gu: "ew.gu"; gv: "ew.gv"; gw: "ew.gw"; gx: "ew.gx"; gy: "ew.gy"; gz: "ew.gz"; ha: "ew.ha"; hb: "ew.hb"; hc: "ew.hc"; hd: "ew.hd"; he: "ew.he"; hf: "ew.hf"; hg: "ew.hg"; hh: "ew.hh"; hi: "ew.hi"; hj: "ew.hj"; hk: "ew.hk"; hl: "ew.hl"; hm: "ew.hm"; hn: "ew.hn"; ho: "ew.ho"; hp: "ew.hp"; hq: "ew.hq"; hr: "ew.hr"; hs: "ew.hs"; ht: "ew.ht"; hu: "ew.hu"; hv: "ew.hv"; hw: "ew.hw"; hx: "ew.hx"; hy: "ew.hy"; hz: "ew.hz"; ia: "ew.ia"; ib: "ew.ib"; ic: "ew.ic"; id: "ew.id"; ie: "ew.ie"; if: "ew.if"; ig: "ew.ig"; ih: "ew.ih"; ii: "ew.ii"; ij: "ew.ij"; ik: "ew.ik"; il: "ew.il"; im: "ew.im"; in: "ew.in"; io: "ew.io"; ip: "ew.ip"; iq: "ew.iq"; ir: "ew.ir"; is: "ew.is"; it: "ew.it"; iu: "ew.iu"; iv: "ew.iv"; iw: "ew.iw"; ix: "ew.ix"; iy: "ew.iy"; iz: "ew.iz"; ja: "ew.ja"; jb: "ew.jb"; jc: "ew.jc"; jd: "ew.jd"; je: "ew.je"; jf: "ew.jf"; jg: "ew.jg"; jh: "ew.jh"; ji: "ew.ji"; jj: "ew.jj"; jk: "ew.jk"; jl: "ew.jl"; jm: "ew.jm"; jn: "ew.jn"; jo: "ew.jo"; jp: "ew.jp"; jq: "ew.jq"; jr: "ew.jr"; js: "ew.js"; jt: "ew.jt"; ju: "ew.ju"; jv: "ew.jv"; jw: "ew.jw"; jx: "ew.jx"; jy: "ew.jy"; jz: "ew.jz"; ka: "ew.ka"; kb: "ew.kb"; kc: "ew.kc"; kd: "ew.kd"; ke: "ew.ke"; kf: "ew.kf"; kg: "ew.kg"; kh: "ew.kh"; ki: "ew.ki"; kj: "ew.kj"; kk: "ew.kk"; kl: "ew.kl"; km: "ew.km"; kn: "ew.kn"; ko: "ew.ko"; kp: "ew.kp"; kq: "ew.kq"; kr: "ew.kr"; ks: "ew.ks"; kt: "ew.kt"; ku: "ew.ku"; kv: "ew.kv"; kw: "ew.kw"; kx: "ew.kx"; ky: "ew.ky"; kz: "ew.kz"; la: "ew.la"; lb: "ew.lb"; lc: "ew.lc"; ld: "ew.ld"; le: "ew.le"; lf: "ew.lf"; lg: "ew.lg"; lh: "ew.lh"; li: "ew.li"; lj: "ew.lj"; lk: "ew.lk"; ll: "ew.ll"; lm: "ew.lm"; ln: "ew.ln"; lo: "ew.lo"; lp: "ew.lp"; lq: "ew.lq"; lr: "ew.lr"; ls: "ew.ls"; lt: "ew.lt"; lu: "ew.lu"; lv: "ew.lv"; lw: "ew.lw"; lx: "ew.lx"; ly: "ew.ly"; lz: "ew.lz"; ma: "ew.ma"; mb: "ew.mb"; mc: "ew.mc"; md: "ew.md"; me: "ew.me"; mf: "ew.mf"; mg: "ew.mg"; mh: "ew.mh"; mi: "ew.mi"; mj: "ew.mj"; mk: "ew.mk"; ml: "ew.ml"; mm: "ew.mm"; mn: "ew.mn"; mo: "ew.mo"; mp: "ew.mp"; mq: "ew.mq"; mr: "ew.mr"; ms: "ew.ms"; mt: "ew.mt"; mu: "ew.mu"; mv: "ew.mv"; mw: "ew.mw"; mx: "ew.mx"; my: "ew.my"; mz: "ew.mz"; na: "ew.na"; nb: "ew.nb"; nc: "ew.nc"; nd: "ew.nd"; ne: "ew.ne"; nf: "ew.nf"; ng: "ew.ng"; nh: "ew.nh"; ni: "ew.ni"; nj: "ew.nj"; nk: "ew.nk"; nl: "ew.nl"; nm: "ew.nm"; nn: "ew.nn"; no: "ew.no"; np: "ew.np"; nq: "ew.nq"; nr: "ew.nr"; ns: "ew.ns"; nt: "ew.nt"; nu: "ew.nu"; nv: "ew.nv"; nw: "ew.nw"; nx: "ew.nx"; ny: "ew.ny"; nz: "ew.nz"; oa: "ew.oa"; ob: "ew.ob"; oc: "ew.oc"; od: "ew.od"; oe: "ew.oe"; of: "ew.of"; og: "ew.og"; oh: "ew.oh"; oi: "ew.oi"; oj: "ew.oj"; ok: "ew.ok"; ol: "ew.ol"; om: "ew.om"; on: "ew.on"; oo: "ew.oo"; op: "ew.op"; oq: "ew.oq"; or: "ew.or"; os: "ew.os"; ot: "ew.ot"; ou: "ew.ou"; ov: "ew.ov"; ow: "ew.ow"; ox: "ew.ox"; oy: "ew.oy"; oz: "ew.oz"; pa: "ew.pa"; pb: "ew.pb"; pc: "ew.pc"; pd: "ew.pd"; pe: "ew.pe"; pf: "ew.pf"; pg: "ew.pg"; ph: "ew.ph"; pi: "ew.pi"; pj: "ew.pj"; pk: "ew.pk"; pl: "ew.pl"; pm: "ew.pm"; pn: "ew.pn"; po: "ew.po"; pp: "ew.pp"; pq: "ew.pq"; pr: "ew.pr"; ps: "ew.ps"; pt: "ew.pt"; pu: "ew.pu"; pv: "ew.pv"; pw: "ew.pw"; px: "ew.px"; py: "ew.py"; pz: "ew.pz"; qa: "ew.qa"; qb: "ew.qb"; qc: "ew.qc"; qd: "ew.qd"; qe: "ew.qe"; qf: "ew.qf"; qg: "ew.qg"; qh: "ew.qh"; qi: "ew.qi"; qj: "ew.qj"; qk: "ew.qk"; ql: "ew.ql"; qm: "ew.qm"; qn: "ew.qn"; qo: "ew.qo"; qp: "ew.qp"; qq: "ew.qq"; qr: "ew.qr"; qs: "ew.qs"; qt: "ew.qt"; qu: "ew.qu"; qv: "ew.qv"; qw: "ew.qw"; qx: "ew.qx"; qy: "ew.qy"; qz: "ew.qz"; ra: "ew.ra"; rb: "ew.rb"; rc: "ew.rc"; rd: "ew.rd"; re: "ew.re"; rf: "ew.rf"; rg: "ew.rg"; rh: "ew.rh"; ri: "ew.ri"; rj: "ew.rj"; rk: "ew.rk"; rl: "ew.rl"; rm: "ew.rm"; rn: "ew.rn"; ro: "ew.ro"; rp: "ew.rp"; rq: "ew.rq"; rr: "ew.rr"; rs: "ew.rs"; rt: "ew.rt"; ru: "ew.ru"; rv: "ew.rv"; rw: "ew.rw"; rx: "ew.rx"; ry: "ew.ry"; rz: "ew.rz"; sa: "ew.sa"; sb: "ew.sb"; sc: "ew.sc"; sd: "ew.sd"; se: "ew.se"; sf: "ew.sf"; sg: "ew.sg"; sh: "ew.sh"; si: "ew.si"; sj: "ew.sj"; sk: "ew.sk"; sl: "ew.sl"; sm: "ew.sm"; sn: "ew.sn"; so: "ew.so"; sp: "ew.sp"; sq: "ew.sq"; sr: "ew.sr"; ss: "ew.ss"; st: "ew.st"; su: "ew.su"; sv: "ew.sv"; sw: "ew.sw"; sx: "ew.sx"; sy: "ew.sy"; sz: "ew.sz"; ta: "ew.ta"; tb: "ew.tb"; tc: "ew.tc"; td: "ew.td"; te: "ew.te"; tf: "ew.tf"; tg: "ew.tg"; th: "ew.th"; ti: "ew.ti"; tj: "ew.tj"; tk: "ew.tk"; tl: "ew.tl"; tm: "ew.tm"; tn: "ew.tn"; to: "ew.to"; tp: "ew.tp"; tq: "ew.tq"; tr: "ew.tr"; ts: "ew.ts"; tt: "ew.tt"; tu: "ew.tu"; tv: "ew.tv"; tw: "ew.tw"; tx: "ew.tx"; ty: "ew.ty"; tz: "ew.tz"; ua: "ew.ua"; ub: "ew.ub"; uc: "ew.uc"; ud: "ew.ud"; ue: "ew.ue"; uf: "ew.uf"; ug: "ew.ug"; uh: "ew.uh"; ui: "ew.ui"; uj: "ew.uj"; uk: "ew.uk"; ul: "ew.ul"; um: "ew.um"; un: "ew.un"; uo: "ew.uo"; up: "ew.up"; uq: "ew.uq"; ur: "ew.ur"; us: "ew.us"; ut: "ew.ut"; uu: "ew.uu"; uv: "ew.uv"; uw: "ew.uw"; ux: "ew.ux"; uy: "ew.uy"; uz: "ew.uz"; va: "ew.va"; vb: "ew.vb"; vc: "ew.vc"; vd: "ew.vd"; ve: "ew.ve"; vf: "ew.vf"; vg: "ew.vg"; vh: "ew.vh"; vi: "ew.vi"; vj: "ew.vj"; vk: "ew.vk"; vl: "ew.vl"; vm: "ew.vm"; vn: "ew.vn"; vo: "ew.vo"; vp: "ew.vp"; vq: "ew.vq"; vr: "ew.vr"; vs: "ew.vs"; vt: "ew.vt"; vu: "ew.vu"; vv: "ew.vv"; vw: "ew.vw"; vx: "ew.vx"; vy: "ew.vy"; vz: "ew.vz"; wa: "ew.wa"; wb: "ew.wb"; wc: "ew.wc"; wd: "ew.wd"; we: "ew.we"; wf: "ew.wf"; wg: "ew.wg"; wh: "ew.wh"; wi: "ew.wi"; wj: "ew.wj"; wk: "ew.wk"; wl: "ew.wl"; wm: "ew.wm"; wn: "ew.wn"; wo: "ew.wo"; wp: "ew.wp"; wq: "ew.wq"; wr: "ew.wr"; ws: "ew.ws"; wt: "ew.wt"; wu: "ew.wu"; wv: "ew.wv"; ww: "ew.ww"; wx: "ew.wx"; wy: "ew.wy"; wz: "ew.wz"; xa: "ew.xa"; xb: "ew.xb"; xc: "ew.xc"; xd: "ew.xd"; xe: "ew.xe"; xf: "ew.xf"; xg: "ew.xg"; xh: "ew.xh"; xi: "ew.xi"; xj: "ew.xj"; xk: "ew.xk"; xl: "ew.xl"; xm: "ew.xm"; xn: "ew.xn"; xo: "ew.xo"; xp: "ew.xp"; xq: "ew.xq"; xr: "ew.xr"; xs: "ew.xs"; xt: "ew.xt"; xu: "ew.xu"; xv: "ew.xv"; xw: "ew.xw"; xx: "ew.xx"; xy: "ew.xy"; xz: "ew.xz"; ya: "ew.ya"; yb: "ew.yb"; yc: "ew.yc"; yd: "ew.yd"; ye: "ew.ye"; yf: "ew.yf"; yg: "ew.yg"; yh: "ew.yh"; yi: "ew.yi"; yj: "ew.yj"; yk: "ew.yk"; yl: "ew.yl"; ym: "ew.ym"; yn: "ew.yn"; yo: "ew.yo"; yp: "ew.yp"; yq: "ew.yq"; yr: "ew.yr"; ys: "ew.ys"; yt: "ew.yt"; yu: "ew.yu"; yv: "ew.yv"; yw: "ew.yw"; yx: "ew.yx"; yy: "ew.yy"; yz: "ew.yz"; za: "ew.za"; zb: "ew.zb"; zc: "ew.zc"; zd: "ew.zd"; ze: "ew.ze"; zf: "ew.zf"; zg: "ew.zg"; zh: "ew.zh"; zi: "ew.zi"; zj: "ew.zj"; zk: "ew.zk"; zl: "ew.zl"; zm: "ew.zm"; zn: "ew.zn"; zo: "ew.zo"; zp: "ew.zp"; zq: "ew.zq"; zr: "ew.zr"; zs: "ew.zs"; zt: "ew.zt"; zu: "ew.zu"; zv: "ew.zv"; zw: "ew.zw"; zx: "ew.zx"; zy: "ew.zy"; zz: "ew.zz"; }; ex: { aa: "ex.aa"; ab: "ex.ab"; ac: "ex.ac"; ad: "ex.ad"; ae: "ex.ae"; af: "ex.af"; ag: "ex.ag"; ah: "ex.ah"; ai: "ex.ai"; aj: "ex.aj"; ak: "ex.ak"; al: "ex.al"; am: "ex.am"; an: "ex.an"; ao: "ex.ao"; ap: "ex.ap"; aq: "ex.aq"; ar: "ex.ar"; as: "ex.as"; at: "ex.at"; au: "ex.au"; av: "ex.av"; aw: "ex.aw"; ax: "ex.ax"; ay: "ex.ay"; az: "ex.az"; ba: "ex.ba"; bb: "ex.bb"; bc: "ex.bc"; bd: "ex.bd"; be: "ex.be"; bf: "ex.bf"; bg: "ex.bg"; bh: "ex.bh"; bi: "ex.bi"; bj: "ex.bj"; bk: "ex.bk"; bl: "ex.bl"; bm: "ex.bm"; bn: "ex.bn"; bo: "ex.bo"; bp: "ex.bp"; bq: "ex.bq"; br: "ex.br"; bs: "ex.bs"; bt: "ex.bt"; bu: "ex.bu"; bv: "ex.bv"; bw: "ex.bw"; bx: "ex.bx"; by: "ex.by"; bz: "ex.bz"; ca: "ex.ca"; cb: "ex.cb"; cc: "ex.cc"; cd: "ex.cd"; ce: "ex.ce"; cf: "ex.cf"; cg: "ex.cg"; ch: "ex.ch"; ci: "ex.ci"; cj: "ex.cj"; ck: "ex.ck"; cl: "ex.cl"; cm: "ex.cm"; cn: "ex.cn"; co: "ex.co"; cp: "ex.cp"; cq: "ex.cq"; cr: "ex.cr"; cs: "ex.cs"; ct: "ex.ct"; cu: "ex.cu"; cv: "ex.cv"; cw: "ex.cw"; cx: "ex.cx"; cy: "ex.cy"; cz: "ex.cz"; da: "ex.da"; db: "ex.db"; dc: "ex.dc"; dd: "ex.dd"; de: "ex.de"; df: "ex.df"; dg: "ex.dg"; dh: "ex.dh"; di: "ex.di"; dj: "ex.dj"; dk: "ex.dk"; dl: "ex.dl"; dm: "ex.dm"; dn: "ex.dn"; do: "ex.do"; dp: "ex.dp"; dq: "ex.dq"; dr: "ex.dr"; ds: "ex.ds"; dt: "ex.dt"; du: "ex.du"; dv: "ex.dv"; dw: "ex.dw"; dx: "ex.dx"; dy: "ex.dy"; dz: "ex.dz"; ea: "ex.ea"; eb: "ex.eb"; ec: "ex.ec"; ed: "ex.ed"; ee: "ex.ee"; ef: "ex.ef"; eg: "ex.eg"; eh: "ex.eh"; ei: "ex.ei"; ej: "ex.ej"; ek: "ex.ek"; el: "ex.el"; em: "ex.em"; en: "ex.en"; eo: "ex.eo"; ep: "ex.ep"; eq: "ex.eq"; er: "ex.er"; es: "ex.es"; et: "ex.et"; eu: "ex.eu"; ev: "ex.ev"; ew: "ex.ew"; ex: "ex.ex"; ey: "ex.ey"; ez: "ex.ez"; fa: "ex.fa"; fb: "ex.fb"; fc: "ex.fc"; fd: "ex.fd"; fe: "ex.fe"; ff: "ex.ff"; fg: "ex.fg"; fh: "ex.fh"; fi: "ex.fi"; fj: "ex.fj"; fk: "ex.fk"; fl: "ex.fl"; fm: "ex.fm"; fn: "ex.fn"; fo: "ex.fo"; fp: "ex.fp"; fq: "ex.fq"; fr: "ex.fr"; fs: "ex.fs"; ft: "ex.ft"; fu: "ex.fu"; fv: "ex.fv"; fw: "ex.fw"; fx: "ex.fx"; fy: "ex.fy"; fz: "ex.fz"; ga: "ex.ga"; gb: "ex.gb"; gc: "ex.gc"; gd: "ex.gd"; ge: "ex.ge"; gf: "ex.gf"; gg: "ex.gg"; gh: "ex.gh"; gi: "ex.gi"; gj: "ex.gj"; gk: "ex.gk"; gl: "ex.gl"; gm: "ex.gm"; gn: "ex.gn"; go: "ex.go"; gp: "ex.gp"; gq: "ex.gq"; gr: "ex.gr"; gs: "ex.gs"; gt: "ex.gt"; gu: "ex.gu"; gv: "ex.gv"; gw: "ex.gw"; gx: "ex.gx"; gy: "ex.gy"; gz: "ex.gz"; ha: "ex.ha"; hb: "ex.hb"; hc: "ex.hc"; hd: "ex.hd"; he: "ex.he"; hf: "ex.hf"; hg: "ex.hg"; hh: "ex.hh"; hi: "ex.hi"; hj: "ex.hj"; hk: "ex.hk"; hl: "ex.hl"; hm: "ex.hm"; hn: "ex.hn"; ho: "ex.ho"; hp: "ex.hp"; hq: "ex.hq"; hr: "ex.hr"; hs: "ex.hs"; ht: "ex.ht"; hu: "ex.hu"; hv: "ex.hv"; hw: "ex.hw"; hx: "ex.hx"; hy: "ex.hy"; hz: "ex.hz"; ia: "ex.ia"; ib: "ex.ib"; ic: "ex.ic"; id: "ex.id"; ie: "ex.ie"; if: "ex.if"; ig: "ex.ig"; ih: "ex.ih"; ii: "ex.ii"; ij: "ex.ij"; ik: "ex.ik"; il: "ex.il"; im: "ex.im"; in: "ex.in"; io: "ex.io"; ip: "ex.ip"; iq: "ex.iq"; ir: "ex.ir"; is: "ex.is"; it: "ex.it"; iu: "ex.iu"; iv: "ex.iv"; iw: "ex.iw"; ix: "ex.ix"; iy: "ex.iy"; iz: "ex.iz"; ja: "ex.ja"; jb: "ex.jb"; jc: "ex.jc"; jd: "ex.jd"; je: "ex.je"; jf: "ex.jf"; jg: "ex.jg"; jh: "ex.jh"; ji: "ex.ji"; jj: "ex.jj"; jk: "ex.jk"; jl: "ex.jl"; jm: "ex.jm"; jn: "ex.jn"; jo: "ex.jo"; jp: "ex.jp"; jq: "ex.jq"; jr: "ex.jr"; js: "ex.js"; jt: "ex.jt"; ju: "ex.ju"; jv: "ex.jv"; jw: "ex.jw"; jx: "ex.jx"; jy: "ex.jy"; jz: "ex.jz"; ka: "ex.ka"; kb: "ex.kb"; kc: "ex.kc"; kd: "ex.kd"; ke: "ex.ke"; kf: "ex.kf"; kg: "ex.kg"; kh: "ex.kh"; ki: "ex.ki"; kj: "ex.kj"; kk: "ex.kk"; kl: "ex.kl"; km: "ex.km"; kn: "ex.kn"; ko: "ex.ko"; kp: "ex.kp"; kq: "ex.kq"; kr: "ex.kr"; ks: "ex.ks"; kt: "ex.kt"; ku: "ex.ku"; kv: "ex.kv"; kw: "ex.kw"; kx: "ex.kx"; ky: "ex.ky"; kz: "ex.kz"; la: "ex.la"; lb: "ex.lb"; lc: "ex.lc"; ld: "ex.ld"; le: "ex.le"; lf: "ex.lf"; lg: "ex.lg"; lh: "ex.lh"; li: "ex.li"; lj: "ex.lj"; lk: "ex.lk"; ll: "ex.ll"; lm: "ex.lm"; ln: "ex.ln"; lo: "ex.lo"; lp: "ex.lp"; lq: "ex.lq"; lr: "ex.lr"; ls: "ex.ls"; lt: "ex.lt"; lu: "ex.lu"; lv: "ex.lv"; lw: "ex.lw"; lx: "ex.lx"; ly: "ex.ly"; lz: "ex.lz"; ma: "ex.ma"; mb: "ex.mb"; mc: "ex.mc"; md: "ex.md"; me: "ex.me"; mf: "ex.mf"; mg: "ex.mg"; mh: "ex.mh"; mi: "ex.mi"; mj: "ex.mj"; mk: "ex.mk"; ml: "ex.ml"; mm: "ex.mm"; mn: "ex.mn"; mo: "ex.mo"; mp: "ex.mp"; mq: "ex.mq"; mr: "ex.mr"; ms: "ex.ms"; mt: "ex.mt"; mu: "ex.mu"; mv: "ex.mv"; mw: "ex.mw"; mx: "ex.mx"; my: "ex.my"; mz: "ex.mz"; na: "ex.na"; nb: "ex.nb"; nc: "ex.nc"; nd: "ex.nd"; ne: "ex.ne"; nf: "ex.nf"; ng: "ex.ng"; nh: "ex.nh"; ni: "ex.ni"; nj: "ex.nj"; nk: "ex.nk"; nl: "ex.nl"; nm: "ex.nm"; nn: "ex.nn"; no: "ex.no"; np: "ex.np"; nq: "ex.nq"; nr: "ex.nr"; ns: "ex.ns"; nt: "ex.nt"; nu: "ex.nu"; nv: "ex.nv"; nw: "ex.nw"; nx: "ex.nx"; ny: "ex.ny"; nz: "ex.nz"; oa: "ex.oa"; ob: "ex.ob"; oc: "ex.oc"; od: "ex.od"; oe: "ex.oe"; of: "ex.of"; og: "ex.og"; oh: "ex.oh"; oi: "ex.oi"; oj: "ex.oj"; ok: "ex.ok"; ol: "ex.ol"; om: "ex.om"; on: "ex.on"; oo: "ex.oo"; op: "ex.op"; oq: "ex.oq"; or: "ex.or"; os: "ex.os"; ot: "ex.ot"; ou: "ex.ou"; ov: "ex.ov"; ow: "ex.ow"; ox: "ex.ox"; oy: "ex.oy"; oz: "ex.oz"; pa: "ex.pa"; pb: "ex.pb"; pc: "ex.pc"; pd: "ex.pd"; pe: "ex.pe"; pf: "ex.pf"; pg: "ex.pg"; ph: "ex.ph"; pi: "ex.pi"; pj: "ex.pj"; pk: "ex.pk"; pl: "ex.pl"; pm: "ex.pm"; pn: "ex.pn"; po: "ex.po"; pp: "ex.pp"; pq: "ex.pq"; pr: "ex.pr"; ps: "ex.ps"; pt: "ex.pt"; pu: "ex.pu"; pv: "ex.pv"; pw: "ex.pw"; px: "ex.px"; py: "ex.py"; pz: "ex.pz"; qa: "ex.qa"; qb: "ex.qb"; qc: "ex.qc"; qd: "ex.qd"; qe: "ex.qe"; qf: "ex.qf"; qg: "ex.qg"; qh: "ex.qh"; qi: "ex.qi"; qj: "ex.qj"; qk: "ex.qk"; ql: "ex.ql"; qm: "ex.qm"; qn: "ex.qn"; qo: "ex.qo"; qp: "ex.qp"; qq: "ex.qq"; qr: "ex.qr"; qs: "ex.qs"; qt: "ex.qt"; qu: "ex.qu"; qv: "ex.qv"; qw: "ex.qw"; qx: "ex.qx"; qy: "ex.qy"; qz: "ex.qz"; ra: "ex.ra"; rb: "ex.rb"; rc: "ex.rc"; rd: "ex.rd"; re: "ex.re"; rf: "ex.rf"; rg: "ex.rg"; rh: "ex.rh"; ri: "ex.ri"; rj: "ex.rj"; rk: "ex.rk"; rl: "ex.rl"; rm: "ex.rm"; rn: "ex.rn"; ro: "ex.ro"; rp: "ex.rp"; rq: "ex.rq"; rr: "ex.rr"; rs: "ex.rs"; rt: "ex.rt"; ru: "ex.ru"; rv: "ex.rv"; rw: "ex.rw"; rx: "ex.rx"; ry: "ex.ry"; rz: "ex.rz"; sa: "ex.sa"; sb: "ex.sb"; sc: "ex.sc"; sd: "ex.sd"; se: "ex.se"; sf: "ex.sf"; sg: "ex.sg"; sh: "ex.sh"; si: "ex.si"; sj: "ex.sj"; sk: "ex.sk"; sl: "ex.sl"; sm: "ex.sm"; sn: "ex.sn"; so: "ex.so"; sp: "ex.sp"; sq: "ex.sq"; sr: "ex.sr"; ss: "ex.ss"; st: "ex.st"; su: "ex.su"; sv: "ex.sv"; sw: "ex.sw"; sx: "ex.sx"; sy: "ex.sy"; sz: "ex.sz"; ta: "ex.ta"; tb: "ex.tb"; tc: "ex.tc"; td: "ex.td"; te: "ex.te"; tf: "ex.tf"; tg: "ex.tg"; th: "ex.th"; ti: "ex.ti"; tj: "ex.tj"; tk: "ex.tk"; tl: "ex.tl"; tm: "ex.tm"; tn: "ex.tn"; to: "ex.to"; tp: "ex.tp"; tq: "ex.tq"; tr: "ex.tr"; ts: "ex.ts"; tt: "ex.tt"; tu: "ex.tu"; tv: "ex.tv"; tw: "ex.tw"; tx: "ex.tx"; ty: "ex.ty"; tz: "ex.tz"; ua: "ex.ua"; ub: "ex.ub"; uc: "ex.uc"; ud: "ex.ud"; ue: "ex.ue"; uf: "ex.uf"; ug: "ex.ug"; uh: "ex.uh"; ui: "ex.ui"; uj: "ex.uj"; uk: "ex.uk"; ul: "ex.ul"; um: "ex.um"; un: "ex.un"; uo: "ex.uo"; up: "ex.up"; uq: "ex.uq"; ur: "ex.ur"; us: "ex.us"; ut: "ex.ut"; uu: "ex.uu"; uv: "ex.uv"; uw: "ex.uw"; ux: "ex.ux"; uy: "ex.uy"; uz: "ex.uz"; va: "ex.va"; vb: "ex.vb"; vc: "ex.vc"; vd: "ex.vd"; ve: "ex.ve"; vf: "ex.vf"; vg: "ex.vg"; vh: "ex.vh"; vi: "ex.vi"; vj: "ex.vj"; vk: "ex.vk"; vl: "ex.vl"; vm: "ex.vm"; vn: "ex.vn"; vo: "ex.vo"; vp: "ex.vp"; vq: "ex.vq"; vr: "ex.vr"; vs: "ex.vs"; vt: "ex.vt"; vu: "ex.vu"; vv: "ex.vv"; vw: "ex.vw"; vx: "ex.vx"; vy: "ex.vy"; vz: "ex.vz"; wa: "ex.wa"; wb: "ex.wb"; wc: "ex.wc"; wd: "ex.wd"; we: "ex.we"; wf: "ex.wf"; wg: "ex.wg"; wh: "ex.wh"; wi: "ex.wi"; wj: "ex.wj"; wk: "ex.wk"; wl: "ex.wl"; wm: "ex.wm"; wn: "ex.wn"; wo: "ex.wo"; wp: "ex.wp"; wq: "ex.wq"; wr: "ex.wr"; ws: "ex.ws"; wt: "ex.wt"; wu: "ex.wu"; wv: "ex.wv"; ww: "ex.ww"; wx: "ex.wx"; wy: "ex.wy"; wz: "ex.wz"; xa: "ex.xa"; xb: "ex.xb"; xc: "ex.xc"; xd: "ex.xd"; xe: "ex.xe"; xf: "ex.xf"; xg: "ex.xg"; xh: "ex.xh"; xi: "ex.xi"; xj: "ex.xj"; xk: "ex.xk"; xl: "ex.xl"; xm: "ex.xm"; xn: "ex.xn"; xo: "ex.xo"; xp: "ex.xp"; xq: "ex.xq"; xr: "ex.xr"; xs: "ex.xs"; xt: "ex.xt"; xu: "ex.xu"; xv: "ex.xv"; xw: "ex.xw"; xx: "ex.xx"; xy: "ex.xy"; xz: "ex.xz"; ya: "ex.ya"; yb: "ex.yb"; yc: "ex.yc"; yd: "ex.yd"; ye: "ex.ye"; yf: "ex.yf"; yg: "ex.yg"; yh: "ex.yh"; yi: "ex.yi"; yj: "ex.yj"; yk: "ex.yk"; yl: "ex.yl"; ym: "ex.ym"; yn: "ex.yn"; yo: "ex.yo"; yp: "ex.yp"; yq: "ex.yq"; yr: "ex.yr"; ys: "ex.ys"; yt: "ex.yt"; yu: "ex.yu"; yv: "ex.yv"; yw: "ex.yw"; yx: "ex.yx"; yy: "ex.yy"; yz: "ex.yz"; za: "ex.za"; zb: "ex.zb"; zc: "ex.zc"; zd: "ex.zd"; ze: "ex.ze"; zf: "ex.zf"; zg: "ex.zg"; zh: "ex.zh"; zi: "ex.zi"; zj: "ex.zj"; zk: "ex.zk"; zl: "ex.zl"; zm: "ex.zm"; zn: "ex.zn"; zo: "ex.zo"; zp: "ex.zp"; zq: "ex.zq"; zr: "ex.zr"; zs: "ex.zs"; zt: "ex.zt"; zu: "ex.zu"; zv: "ex.zv"; zw: "ex.zw"; zx: "ex.zx"; zy: "ex.zy"; zz: "ex.zz"; }; ey: { aa: "ey.aa"; ab: "ey.ab"; ac: "ey.ac"; ad: "ey.ad"; ae: "ey.ae"; af: "ey.af"; ag: "ey.ag"; ah: "ey.ah"; ai: "ey.ai"; aj: "ey.aj"; ak: "ey.ak"; al: "ey.al"; am: "ey.am"; an: "ey.an"; ao: "ey.ao"; ap: "ey.ap"; aq: "ey.aq"; ar: "ey.ar"; as: "ey.as"; at: "ey.at"; au: "ey.au"; av: "ey.av"; aw: "ey.aw"; ax: "ey.ax"; ay: "ey.ay"; az: "ey.az"; ba: "ey.ba"; bb: "ey.bb"; bc: "ey.bc"; bd: "ey.bd"; be: "ey.be"; bf: "ey.bf"; bg: "ey.bg"; bh: "ey.bh"; bi: "ey.bi"; bj: "ey.bj"; bk: "ey.bk"; bl: "ey.bl"; bm: "ey.bm"; bn: "ey.bn"; bo: "ey.bo"; bp: "ey.bp"; bq: "ey.bq"; br: "ey.br"; bs: "ey.bs"; bt: "ey.bt"; bu: "ey.bu"; bv: "ey.bv"; bw: "ey.bw"; bx: "ey.bx"; by: "ey.by"; bz: "ey.bz"; ca: "ey.ca"; cb: "ey.cb"; cc: "ey.cc"; cd: "ey.cd"; ce: "ey.ce"; cf: "ey.cf"; cg: "ey.cg"; ch: "ey.ch"; ci: "ey.ci"; cj: "ey.cj"; ck: "ey.ck"; cl: "ey.cl"; cm: "ey.cm"; cn: "ey.cn"; co: "ey.co"; cp: "ey.cp"; cq: "ey.cq"; cr: "ey.cr"; cs: "ey.cs"; ct: "ey.ct"; cu: "ey.cu"; cv: "ey.cv"; cw: "ey.cw"; cx: "ey.cx"; cy: "ey.cy"; cz: "ey.cz"; da: "ey.da"; db: "ey.db"; dc: "ey.dc"; dd: "ey.dd"; de: "ey.de"; df: "ey.df"; dg: "ey.dg"; dh: "ey.dh"; di: "ey.di"; dj: "ey.dj"; dk: "ey.dk"; dl: "ey.dl"; dm: "ey.dm"; dn: "ey.dn"; do: "ey.do"; dp: "ey.dp"; dq: "ey.dq"; dr: "ey.dr"; ds: "ey.ds"; dt: "ey.dt"; du: "ey.du"; dv: "ey.dv"; dw: "ey.dw"; dx: "ey.dx"; dy: "ey.dy"; dz: "ey.dz"; ea: "ey.ea"; eb: "ey.eb"; ec: "ey.ec"; ed: "ey.ed"; ee: "ey.ee"; ef: "ey.ef"; eg: "ey.eg"; eh: "ey.eh"; ei: "ey.ei"; ej: "ey.ej"; ek: "ey.ek"; el: "ey.el"; em: "ey.em"; en: "ey.en"; eo: "ey.eo"; ep: "ey.ep"; eq: "ey.eq"; er: "ey.er"; es: "ey.es"; et: "ey.et"; eu: "ey.eu"; ev: "ey.ev"; ew: "ey.ew"; ex: "ey.ex"; ey: "ey.ey"; ez: "ey.ez"; fa: "ey.fa"; fb: "ey.fb"; fc: "ey.fc"; fd: "ey.fd"; fe: "ey.fe"; ff: "ey.ff"; fg: "ey.fg"; fh: "ey.fh"; fi: "ey.fi"; fj: "ey.fj"; fk: "ey.fk"; fl: "ey.fl"; fm: "ey.fm"; fn: "ey.fn"; fo: "ey.fo"; fp: "ey.fp"; fq: "ey.fq"; fr: "ey.fr"; fs: "ey.fs"; ft: "ey.ft"; fu: "ey.fu"; fv: "ey.fv"; fw: "ey.fw"; fx: "ey.fx"; fy: "ey.fy"; fz: "ey.fz"; ga: "ey.ga"; gb: "ey.gb"; gc: "ey.gc"; gd: "ey.gd"; ge: "ey.ge"; gf: "ey.gf"; gg: "ey.gg"; gh: "ey.gh"; gi: "ey.gi"; gj: "ey.gj"; gk: "ey.gk"; gl: "ey.gl"; gm: "ey.gm"; gn: "ey.gn"; go: "ey.go"; gp: "ey.gp"; gq: "ey.gq"; gr: "ey.gr"; gs: "ey.gs"; gt: "ey.gt"; gu: "ey.gu"; gv: "ey.gv"; gw: "ey.gw"; gx: "ey.gx"; gy: "ey.gy"; gz: "ey.gz"; ha: "ey.ha"; hb: "ey.hb"; hc: "ey.hc"; hd: "ey.hd"; he: "ey.he"; hf: "ey.hf"; hg: "ey.hg"; hh: "ey.hh"; hi: "ey.hi"; hj: "ey.hj"; hk: "ey.hk"; hl: "ey.hl"; hm: "ey.hm"; hn: "ey.hn"; ho: "ey.ho"; hp: "ey.hp"; hq: "ey.hq"; hr: "ey.hr"; hs: "ey.hs"; ht: "ey.ht"; hu: "ey.hu"; hv: "ey.hv"; hw: "ey.hw"; hx: "ey.hx"; hy: "ey.hy"; hz: "ey.hz"; ia: "ey.ia"; ib: "ey.ib"; ic: "ey.ic"; id: "ey.id"; ie: "ey.ie"; if: "ey.if"; ig: "ey.ig"; ih: "ey.ih"; ii: "ey.ii"; ij: "ey.ij"; ik: "ey.ik"; il: "ey.il"; im: "ey.im"; in: "ey.in"; io: "ey.io"; ip: "ey.ip"; iq: "ey.iq"; ir: "ey.ir"; is: "ey.is"; it: "ey.it"; iu: "ey.iu"; iv: "ey.iv"; iw: "ey.iw"; ix: "ey.ix"; iy: "ey.iy"; iz: "ey.iz"; ja: "ey.ja"; jb: "ey.jb"; jc: "ey.jc"; jd: "ey.jd"; je: "ey.je"; jf: "ey.jf"; jg: "ey.jg"; jh: "ey.jh"; ji: "ey.ji"; jj: "ey.jj"; jk: "ey.jk"; jl: "ey.jl"; jm: "ey.jm"; jn: "ey.jn"; jo: "ey.jo"; jp: "ey.jp"; jq: "ey.jq"; jr: "ey.jr"; js: "ey.js"; jt: "ey.jt"; ju: "ey.ju"; jv: "ey.jv"; jw: "ey.jw"; jx: "ey.jx"; jy: "ey.jy"; jz: "ey.jz"; ka: "ey.ka"; kb: "ey.kb"; kc: "ey.kc"; kd: "ey.kd"; ke: "ey.ke"; kf: "ey.kf"; kg: "ey.kg"; kh: "ey.kh"; ki: "ey.ki"; kj: "ey.kj"; kk: "ey.kk"; kl: "ey.kl"; km: "ey.km"; kn: "ey.kn"; ko: "ey.ko"; kp: "ey.kp"; kq: "ey.kq"; kr: "ey.kr"; ks: "ey.ks"; kt: "ey.kt"; ku: "ey.ku"; kv: "ey.kv"; kw: "ey.kw"; kx: "ey.kx"; ky: "ey.ky"; kz: "ey.kz"; la: "ey.la"; lb: "ey.lb"; lc: "ey.lc"; ld: "ey.ld"; le: "ey.le"; lf: "ey.lf"; lg: "ey.lg"; lh: "ey.lh"; li: "ey.li"; lj: "ey.lj"; lk: "ey.lk"; ll: "ey.ll"; lm: "ey.lm"; ln: "ey.ln"; lo: "ey.lo"; lp: "ey.lp"; lq: "ey.lq"; lr: "ey.lr"; ls: "ey.ls"; lt: "ey.lt"; lu: "ey.lu"; lv: "ey.lv"; lw: "ey.lw"; lx: "ey.lx"; ly: "ey.ly"; lz: "ey.lz"; ma: "ey.ma"; mb: "ey.mb"; mc: "ey.mc"; md: "ey.md"; me: "ey.me"; mf: "ey.mf"; mg: "ey.mg"; mh: "ey.mh"; mi: "ey.mi"; mj: "ey.mj"; mk: "ey.mk"; ml: "ey.ml"; mm: "ey.mm"; mn: "ey.mn"; mo: "ey.mo"; mp: "ey.mp"; mq: "ey.mq"; mr: "ey.mr"; ms: "ey.ms"; mt: "ey.mt"; mu: "ey.mu"; mv: "ey.mv"; mw: "ey.mw"; mx: "ey.mx"; my: "ey.my"; mz: "ey.mz"; na: "ey.na"; nb: "ey.nb"; nc: "ey.nc"; nd: "ey.nd"; ne: "ey.ne"; nf: "ey.nf"; ng: "ey.ng"; nh: "ey.nh"; ni: "ey.ni"; nj: "ey.nj"; nk: "ey.nk"; nl: "ey.nl"; nm: "ey.nm"; nn: "ey.nn"; no: "ey.no"; np: "ey.np"; nq: "ey.nq"; nr: "ey.nr"; ns: "ey.ns"; nt: "ey.nt"; nu: "ey.nu"; nv: "ey.nv"; nw: "ey.nw"; nx: "ey.nx"; ny: "ey.ny"; nz: "ey.nz"; oa: "ey.oa"; ob: "ey.ob"; oc: "ey.oc"; od: "ey.od"; oe: "ey.oe"; of: "ey.of"; og: "ey.og"; oh: "ey.oh"; oi: "ey.oi"; oj: "ey.oj"; ok: "ey.ok"; ol: "ey.ol"; om: "ey.om"; on: "ey.on"; oo: "ey.oo"; op: "ey.op"; oq: "ey.oq"; or: "ey.or"; os: "ey.os"; ot: "ey.ot"; ou: "ey.ou"; ov: "ey.ov"; ow: "ey.ow"; ox: "ey.ox"; oy: "ey.oy"; oz: "ey.oz"; pa: "ey.pa"; pb: "ey.pb"; pc: "ey.pc"; pd: "ey.pd"; pe: "ey.pe"; pf: "ey.pf"; pg: "ey.pg"; ph: "ey.ph"; pi: "ey.pi"; pj: "ey.pj"; pk: "ey.pk"; pl: "ey.pl"; pm: "ey.pm"; pn: "ey.pn"; po: "ey.po"; pp: "ey.pp"; pq: "ey.pq"; pr: "ey.pr"; ps: "ey.ps"; pt: "ey.pt"; pu: "ey.pu"; pv: "ey.pv"; pw: "ey.pw"; px: "ey.px"; py: "ey.py"; pz: "ey.pz"; qa: "ey.qa"; qb: "ey.qb"; qc: "ey.qc"; qd: "ey.qd"; qe: "ey.qe"; qf: "ey.qf"; qg: "ey.qg"; qh: "ey.qh"; qi: "ey.qi"; qj: "ey.qj"; qk: "ey.qk"; ql: "ey.ql"; qm: "ey.qm"; qn: "ey.qn"; qo: "ey.qo"; qp: "ey.qp"; qq: "ey.qq"; qr: "ey.qr"; qs: "ey.qs"; qt: "ey.qt"; qu: "ey.qu"; qv: "ey.qv"; qw: "ey.qw"; qx: "ey.qx"; qy: "ey.qy"; qz: "ey.qz"; ra: "ey.ra"; rb: "ey.rb"; rc: "ey.rc"; rd: "ey.rd"; re: "ey.re"; rf: "ey.rf"; rg: "ey.rg"; rh: "ey.rh"; ri: "ey.ri"; rj: "ey.rj"; rk: "ey.rk"; rl: "ey.rl"; rm: "ey.rm"; rn: "ey.rn"; ro: "ey.ro"; rp: "ey.rp"; rq: "ey.rq"; rr: "ey.rr"; rs: "ey.rs"; rt: "ey.rt"; ru: "ey.ru"; rv: "ey.rv"; rw: "ey.rw"; rx: "ey.rx"; ry: "ey.ry"; rz: "ey.rz"; sa: "ey.sa"; sb: "ey.sb"; sc: "ey.sc"; sd: "ey.sd"; se: "ey.se"; sf: "ey.sf"; sg: "ey.sg"; sh: "ey.sh"; si: "ey.si"; sj: "ey.sj"; sk: "ey.sk"; sl: "ey.sl"; sm: "ey.sm"; sn: "ey.sn"; so: "ey.so"; sp: "ey.sp"; sq: "ey.sq"; sr: "ey.sr"; ss: "ey.ss"; st: "ey.st"; su: "ey.su"; sv: "ey.sv"; sw: "ey.sw"; sx: "ey.sx"; sy: "ey.sy"; sz: "ey.sz"; ta: "ey.ta"; tb: "ey.tb"; tc: "ey.tc"; td: "ey.td"; te: "ey.te"; tf: "ey.tf"; tg: "ey.tg"; th: "ey.th"; ti: "ey.ti"; tj: "ey.tj"; tk: "ey.tk"; tl: "ey.tl"; tm: "ey.tm"; tn: "ey.tn"; to: "ey.to"; tp: "ey.tp"; tq: "ey.tq"; tr: "ey.tr"; ts: "ey.ts"; tt: "ey.tt"; tu: "ey.tu"; tv: "ey.tv"; tw: "ey.tw"; tx: "ey.tx"; ty: "ey.ty"; tz: "ey.tz"; ua: "ey.ua"; ub: "ey.ub"; uc: "ey.uc"; ud: "ey.ud"; ue: "ey.ue"; uf: "ey.uf"; ug: "ey.ug"; uh: "ey.uh"; ui: "ey.ui"; uj: "ey.uj"; uk: "ey.uk"; ul: "ey.ul"; um: "ey.um"; un: "ey.un"; uo: "ey.uo"; up: "ey.up"; uq: "ey.uq"; ur: "ey.ur"; us: "ey.us"; ut: "ey.ut"; uu: "ey.uu"; uv: "ey.uv"; uw: "ey.uw"; ux: "ey.ux"; uy: "ey.uy"; uz: "ey.uz"; va: "ey.va"; vb: "ey.vb"; vc: "ey.vc"; vd: "ey.vd"; ve: "ey.ve"; vf: "ey.vf"; vg: "ey.vg"; vh: "ey.vh"; vi: "ey.vi"; vj: "ey.vj"; vk: "ey.vk"; vl: "ey.vl"; vm: "ey.vm"; vn: "ey.vn"; vo: "ey.vo"; vp: "ey.vp"; vq: "ey.vq"; vr: "ey.vr"; vs: "ey.vs"; vt: "ey.vt"; vu: "ey.vu"; vv: "ey.vv"; vw: "ey.vw"; vx: "ey.vx"; vy: "ey.vy"; vz: "ey.vz"; wa: "ey.wa"; wb: "ey.wb"; wc: "ey.wc"; wd: "ey.wd"; we: "ey.we"; wf: "ey.wf"; wg: "ey.wg"; wh: "ey.wh"; wi: "ey.wi"; wj: "ey.wj"; wk: "ey.wk"; wl: "ey.wl"; wm: "ey.wm"; wn: "ey.wn"; wo: "ey.wo"; wp: "ey.wp"; wq: "ey.wq"; wr: "ey.wr"; ws: "ey.ws"; wt: "ey.wt"; wu: "ey.wu"; wv: "ey.wv"; ww: "ey.ww"; wx: "ey.wx"; wy: "ey.wy"; wz: "ey.wz"; xa: "ey.xa"; xb: "ey.xb"; xc: "ey.xc"; xd: "ey.xd"; xe: "ey.xe"; xf: "ey.xf"; xg: "ey.xg"; xh: "ey.xh"; xi: "ey.xi"; xj: "ey.xj"; xk: "ey.xk"; xl: "ey.xl"; xm: "ey.xm"; xn: "ey.xn"; xo: "ey.xo"; xp: "ey.xp"; xq: "ey.xq"; xr: "ey.xr"; xs: "ey.xs"; xt: "ey.xt"; xu: "ey.xu"; xv: "ey.xv"; xw: "ey.xw"; xx: "ey.xx"; xy: "ey.xy"; xz: "ey.xz"; ya: "ey.ya"; yb: "ey.yb"; yc: "ey.yc"; yd: "ey.yd"; ye: "ey.ye"; yf: "ey.yf"; yg: "ey.yg"; yh: "ey.yh"; yi: "ey.yi"; yj: "ey.yj"; yk: "ey.yk"; yl: "ey.yl"; ym: "ey.ym"; yn: "ey.yn"; yo: "ey.yo"; yp: "ey.yp"; yq: "ey.yq"; yr: "ey.yr"; ys: "ey.ys"; yt: "ey.yt"; yu: "ey.yu"; yv: "ey.yv"; yw: "ey.yw"; yx: "ey.yx"; yy: "ey.yy"; yz: "ey.yz"; za: "ey.za"; zb: "ey.zb"; zc: "ey.zc"; zd: "ey.zd"; ze: "ey.ze"; zf: "ey.zf"; zg: "ey.zg"; zh: "ey.zh"; zi: "ey.zi"; zj: "ey.zj"; zk: "ey.zk"; zl: "ey.zl"; zm: "ey.zm"; zn: "ey.zn"; zo: "ey.zo"; zp: "ey.zp"; zq: "ey.zq"; zr: "ey.zr"; zs: "ey.zs"; zt: "ey.zt"; zu: "ey.zu"; zv: "ey.zv"; zw: "ey.zw"; zx: "ey.zx"; zy: "ey.zy"; zz: "ey.zz"; }; ez: { aa: "ez.aa"; ab: "ez.ab"; ac: "ez.ac"; ad: "ez.ad"; ae: "ez.ae"; af: "ez.af"; ag: "ez.ag"; ah: "ez.ah"; ai: "ez.ai"; aj: "ez.aj"; ak: "ez.ak"; al: "ez.al"; am: "ez.am"; an: "ez.an"; ao: "ez.ao"; ap: "ez.ap"; aq: "ez.aq"; ar: "ez.ar"; as: "ez.as"; at: "ez.at"; au: "ez.au"; av: "ez.av"; aw: "ez.aw"; ax: "ez.ax"; ay: "ez.ay"; az: "ez.az"; ba: "ez.ba"; bb: "ez.bb"; bc: "ez.bc"; bd: "ez.bd"; be: "ez.be"; bf: "ez.bf"; bg: "ez.bg"; bh: "ez.bh"; bi: "ez.bi"; bj: "ez.bj"; bk: "ez.bk"; bl: "ez.bl"; bm: "ez.bm"; bn: "ez.bn"; bo: "ez.bo"; bp: "ez.bp"; bq: "ez.bq"; br: "ez.br"; bs: "ez.bs"; bt: "ez.bt"; bu: "ez.bu"; bv: "ez.bv"; bw: "ez.bw"; bx: "ez.bx"; by: "ez.by"; bz: "ez.bz"; ca: "ez.ca"; cb: "ez.cb"; cc: "ez.cc"; cd: "ez.cd"; ce: "ez.ce"; cf: "ez.cf"; cg: "ez.cg"; ch: "ez.ch"; ci: "ez.ci"; cj: "ez.cj"; ck: "ez.ck"; cl: "ez.cl"; cm: "ez.cm"; cn: "ez.cn"; co: "ez.co"; cp: "ez.cp"; cq: "ez.cq"; cr: "ez.cr"; cs: "ez.cs"; ct: "ez.ct"; cu: "ez.cu"; cv: "ez.cv"; cw: "ez.cw"; cx: "ez.cx"; cy: "ez.cy"; cz: "ez.cz"; da: "ez.da"; db: "ez.db"; dc: "ez.dc"; dd: "ez.dd"; de: "ez.de"; df: "ez.df"; dg: "ez.dg"; dh: "ez.dh"; di: "ez.di"; dj: "ez.dj"; dk: "ez.dk"; dl: "ez.dl"; dm: "ez.dm"; dn: "ez.dn"; do: "ez.do"; dp: "ez.dp"; dq: "ez.dq"; dr: "ez.dr"; ds: "ez.ds"; dt: "ez.dt"; du: "ez.du"; dv: "ez.dv"; dw: "ez.dw"; dx: "ez.dx"; dy: "ez.dy"; dz: "ez.dz"; ea: "ez.ea"; eb: "ez.eb"; ec: "ez.ec"; ed: "ez.ed"; ee: "ez.ee"; ef: "ez.ef"; eg: "ez.eg"; eh: "ez.eh"; ei: "ez.ei"; ej: "ez.ej"; ek: "ez.ek"; el: "ez.el"; em: "ez.em"; en: "ez.en"; eo: "ez.eo"; ep: "ez.ep"; eq: "ez.eq"; er: "ez.er"; es: "ez.es"; et: "ez.et"; eu: "ez.eu"; ev: "ez.ev"; ew: "ez.ew"; ex: "ez.ex"; ey: "ez.ey"; ez: "ez.ez"; fa: "ez.fa"; fb: "ez.fb"; fc: "ez.fc"; fd: "ez.fd"; fe: "ez.fe"; ff: "ez.ff"; fg: "ez.fg"; fh: "ez.fh"; fi: "ez.fi"; fj: "ez.fj"; fk: "ez.fk"; fl: "ez.fl"; fm: "ez.fm"; fn: "ez.fn"; fo: "ez.fo"; fp: "ez.fp"; fq: "ez.fq"; fr: "ez.fr"; fs: "ez.fs"; ft: "ez.ft"; fu: "ez.fu"; fv: "ez.fv"; fw: "ez.fw"; fx: "ez.fx"; fy: "ez.fy"; fz: "ez.fz"; ga: "ez.ga"; gb: "ez.gb"; gc: "ez.gc"; gd: "ez.gd"; ge: "ez.ge"; gf: "ez.gf"; gg: "ez.gg"; gh: "ez.gh"; gi: "ez.gi"; gj: "ez.gj"; gk: "ez.gk"; gl: "ez.gl"; gm: "ez.gm"; gn: "ez.gn"; go: "ez.go"; gp: "ez.gp"; gq: "ez.gq"; gr: "ez.gr"; gs: "ez.gs"; gt: "ez.gt"; gu: "ez.gu"; gv: "ez.gv"; gw: "ez.gw"; gx: "ez.gx"; gy: "ez.gy"; gz: "ez.gz"; ha: "ez.ha"; hb: "ez.hb"; hc: "ez.hc"; hd: "ez.hd"; he: "ez.he"; hf: "ez.hf"; hg: "ez.hg"; hh: "ez.hh"; hi: "ez.hi"; hj: "ez.hj"; hk: "ez.hk"; hl: "ez.hl"; hm: "ez.hm"; hn: "ez.hn"; ho: "ez.ho"; hp: "ez.hp"; hq: "ez.hq"; hr: "ez.hr"; hs: "ez.hs"; ht: "ez.ht"; hu: "ez.hu"; hv: "ez.hv"; hw: "ez.hw"; hx: "ez.hx"; hy: "ez.hy"; hz: "ez.hz"; ia: "ez.ia"; ib: "ez.ib"; ic: "ez.ic"; id: "ez.id"; ie: "ez.ie"; if: "ez.if"; ig: "ez.ig"; ih: "ez.ih"; ii: "ez.ii"; ij: "ez.ij"; ik: "ez.ik"; il: "ez.il"; im: "ez.im"; in: "ez.in"; io: "ez.io"; ip: "ez.ip"; iq: "ez.iq"; ir: "ez.ir"; is: "ez.is"; it: "ez.it"; iu: "ez.iu"; iv: "ez.iv"; iw: "ez.iw"; ix: "ez.ix"; iy: "ez.iy"; iz: "ez.iz"; ja: "ez.ja"; jb: "ez.jb"; jc: "ez.jc"; jd: "ez.jd"; je: "ez.je"; jf: "ez.jf"; jg: "ez.jg"; jh: "ez.jh"; ji: "ez.ji"; jj: "ez.jj"; jk: "ez.jk"; jl: "ez.jl"; jm: "ez.jm"; jn: "ez.jn"; jo: "ez.jo"; jp: "ez.jp"; jq: "ez.jq"; jr: "ez.jr"; js: "ez.js"; jt: "ez.jt"; ju: "ez.ju"; jv: "ez.jv"; jw: "ez.jw"; jx: "ez.jx"; jy: "ez.jy"; jz: "ez.jz"; ka: "ez.ka"; kb: "ez.kb"; kc: "ez.kc"; kd: "ez.kd"; ke: "ez.ke"; kf: "ez.kf"; kg: "ez.kg"; kh: "ez.kh"; ki: "ez.ki"; kj: "ez.kj"; kk: "ez.kk"; kl: "ez.kl"; km: "ez.km"; kn: "ez.kn"; ko: "ez.ko"; kp: "ez.kp"; kq: "ez.kq"; kr: "ez.kr"; ks: "ez.ks"; kt: "ez.kt"; ku: "ez.ku"; kv: "ez.kv"; kw: "ez.kw"; kx: "ez.kx"; ky: "ez.ky"; kz: "ez.kz"; la: "ez.la"; lb: "ez.lb"; lc: "ez.lc"; ld: "ez.ld"; le: "ez.le"; lf: "ez.lf"; lg: "ez.lg"; lh: "ez.lh"; li: "ez.li"; lj: "ez.lj"; lk: "ez.lk"; ll: "ez.ll"; lm: "ez.lm"; ln: "ez.ln"; lo: "ez.lo"; lp: "ez.lp"; lq: "ez.lq"; lr: "ez.lr"; ls: "ez.ls"; lt: "ez.lt"; lu: "ez.lu"; lv: "ez.lv"; lw: "ez.lw"; lx: "ez.lx"; ly: "ez.ly"; lz: "ez.lz"; ma: "ez.ma"; mb: "ez.mb"; mc: "ez.mc"; md: "ez.md"; me: "ez.me"; mf: "ez.mf"; mg: "ez.mg"; mh: "ez.mh"; mi: "ez.mi"; mj: "ez.mj"; mk: "ez.mk"; ml: "ez.ml"; mm: "ez.mm"; mn: "ez.mn"; mo: "ez.mo"; mp: "ez.mp"; mq: "ez.mq"; mr: "ez.mr"; ms: "ez.ms"; mt: "ez.mt"; mu: "ez.mu"; mv: "ez.mv"; mw: "ez.mw"; mx: "ez.mx"; my: "ez.my"; mz: "ez.mz"; na: "ez.na"; nb: "ez.nb"; nc: "ez.nc"; nd: "ez.nd"; ne: "ez.ne"; nf: "ez.nf"; ng: "ez.ng"; nh: "ez.nh"; ni: "ez.ni"; nj: "ez.nj"; nk: "ez.nk"; nl: "ez.nl"; nm: "ez.nm"; nn: "ez.nn"; no: "ez.no"; np: "ez.np"; nq: "ez.nq"; nr: "ez.nr"; ns: "ez.ns"; nt: "ez.nt"; nu: "ez.nu"; nv: "ez.nv"; nw: "ez.nw"; nx: "ez.nx"; ny: "ez.ny"; nz: "ez.nz"; oa: "ez.oa"; ob: "ez.ob"; oc: "ez.oc"; od: "ez.od"; oe: "ez.oe"; of: "ez.of"; og: "ez.og"; oh: "ez.oh"; oi: "ez.oi"; oj: "ez.oj"; ok: "ez.ok"; ol: "ez.ol"; om: "ez.om"; on: "ez.on"; oo: "ez.oo"; op: "ez.op"; oq: "ez.oq"; or: "ez.or"; os: "ez.os"; ot: "ez.ot"; ou: "ez.ou"; ov: "ez.ov"; ow: "ez.ow"; ox: "ez.ox"; oy: "ez.oy"; oz: "ez.oz"; pa: "ez.pa"; pb: "ez.pb"; pc: "ez.pc"; pd: "ez.pd"; pe: "ez.pe"; pf: "ez.pf"; pg: "ez.pg"; ph: "ez.ph"; pi: "ez.pi"; pj: "ez.pj"; pk: "ez.pk"; pl: "ez.pl"; pm: "ez.pm"; pn: "ez.pn"; po: "ez.po"; pp: "ez.pp"; pq: "ez.pq"; pr: "ez.pr"; ps: "ez.ps"; pt: "ez.pt"; pu: "ez.pu"; pv: "ez.pv"; pw: "ez.pw"; px: "ez.px"; py: "ez.py"; pz: "ez.pz"; qa: "ez.qa"; qb: "ez.qb"; qc: "ez.qc"; qd: "ez.qd"; qe: "ez.qe"; qf: "ez.qf"; qg: "ez.qg"; qh: "ez.qh"; qi: "ez.qi"; qj: "ez.qj"; qk: "ez.qk"; ql: "ez.ql"; qm: "ez.qm"; qn: "ez.qn"; qo: "ez.qo"; qp: "ez.qp"; qq: "ez.qq"; qr: "ez.qr"; qs: "ez.qs"; qt: "ez.qt"; qu: "ez.qu"; qv: "ez.qv"; qw: "ez.qw"; qx: "ez.qx"; qy: "ez.qy"; qz: "ez.qz"; ra: "ez.ra"; rb: "ez.rb"; rc: "ez.rc"; rd: "ez.rd"; re: "ez.re"; rf: "ez.rf"; rg: "ez.rg"; rh: "ez.rh"; ri: "ez.ri"; rj: "ez.rj"; rk: "ez.rk"; rl: "ez.rl"; rm: "ez.rm"; rn: "ez.rn"; ro: "ez.ro"; rp: "ez.rp"; rq: "ez.rq"; rr: "ez.rr"; rs: "ez.rs"; rt: "ez.rt"; ru: "ez.ru"; rv: "ez.rv"; rw: "ez.rw"; rx: "ez.rx"; ry: "ez.ry"; rz: "ez.rz"; sa: "ez.sa"; sb: "ez.sb"; sc: "ez.sc"; sd: "ez.sd"; se: "ez.se"; sf: "ez.sf"; sg: "ez.sg"; sh: "ez.sh"; si: "ez.si"; sj: "ez.sj"; sk: "ez.sk"; sl: "ez.sl"; sm: "ez.sm"; sn: "ez.sn"; so: "ez.so"; sp: "ez.sp"; sq: "ez.sq"; sr: "ez.sr"; ss: "ez.ss"; st: "ez.st"; su: "ez.su"; sv: "ez.sv"; sw: "ez.sw"; sx: "ez.sx"; sy: "ez.sy"; sz: "ez.sz"; ta: "ez.ta"; tb: "ez.tb"; tc: "ez.tc"; td: "ez.td"; te: "ez.te"; tf: "ez.tf"; tg: "ez.tg"; th: "ez.th"; ti: "ez.ti"; tj: "ez.tj"; tk: "ez.tk"; tl: "ez.tl"; tm: "ez.tm"; tn: "ez.tn"; to: "ez.to"; tp: "ez.tp"; tq: "ez.tq"; tr: "ez.tr"; ts: "ez.ts"; tt: "ez.tt"; tu: "ez.tu"; tv: "ez.tv"; tw: "ez.tw"; tx: "ez.tx"; ty: "ez.ty"; tz: "ez.tz"; ua: "ez.ua"; ub: "ez.ub"; uc: "ez.uc"; ud: "ez.ud"; ue: "ez.ue"; uf: "ez.uf"; ug: "ez.ug"; uh: "ez.uh"; ui: "ez.ui"; uj: "ez.uj"; uk: "ez.uk"; ul: "ez.ul"; um: "ez.um"; un: "ez.un"; uo: "ez.uo"; up: "ez.up"; uq: "ez.uq"; ur: "ez.ur"; us: "ez.us"; ut: "ez.ut"; uu: "ez.uu"; uv: "ez.uv"; uw: "ez.uw"; ux: "ez.ux"; uy: "ez.uy"; uz: "ez.uz"; va: "ez.va"; vb: "ez.vb"; vc: "ez.vc"; vd: "ez.vd"; ve: "ez.ve"; vf: "ez.vf"; vg: "ez.vg"; vh: "ez.vh"; vi: "ez.vi"; vj: "ez.vj"; vk: "ez.vk"; vl: "ez.vl"; vm: "ez.vm"; vn: "ez.vn"; vo: "ez.vo"; vp: "ez.vp"; vq: "ez.vq"; vr: "ez.vr"; vs: "ez.vs"; vt: "ez.vt"; vu: "ez.vu"; vv: "ez.vv"; vw: "ez.vw"; vx: "ez.vx"; vy: "ez.vy"; vz: "ez.vz"; wa: "ez.wa"; wb: "ez.wb"; wc: "ez.wc"; wd: "ez.wd"; we: "ez.we"; wf: "ez.wf"; wg: "ez.wg"; wh: "ez.wh"; wi: "ez.wi"; wj: "ez.wj"; wk: "ez.wk"; wl: "ez.wl"; wm: "ez.wm"; wn: "ez.wn"; wo: "ez.wo"; wp: "ez.wp"; wq: "ez.wq"; wr: "ez.wr"; ws: "ez.ws"; wt: "ez.wt"; wu: "ez.wu"; wv: "ez.wv"; ww: "ez.ww"; wx: "ez.wx"; wy: "ez.wy"; wz: "ez.wz"; xa: "ez.xa"; xb: "ez.xb"; xc: "ez.xc"; xd: "ez.xd"; xe: "ez.xe"; xf: "ez.xf"; xg: "ez.xg"; xh: "ez.xh"; xi: "ez.xi"; xj: "ez.xj"; xk: "ez.xk"; xl: "ez.xl"; xm: "ez.xm"; xn: "ez.xn"; xo: "ez.xo"; xp: "ez.xp"; xq: "ez.xq"; xr: "ez.xr"; xs: "ez.xs"; xt: "ez.xt"; xu: "ez.xu"; xv: "ez.xv"; xw: "ez.xw"; xx: "ez.xx"; xy: "ez.xy"; xz: "ez.xz"; ya: "ez.ya"; yb: "ez.yb"; yc: "ez.yc"; yd: "ez.yd"; ye: "ez.ye"; yf: "ez.yf"; yg: "ez.yg"; yh: "ez.yh"; yi: "ez.yi"; yj: "ez.yj"; yk: "ez.yk"; yl: "ez.yl"; ym: "ez.ym"; yn: "ez.yn"; yo: "ez.yo"; yp: "ez.yp"; yq: "ez.yq"; yr: "ez.yr"; ys: "ez.ys"; yt: "ez.yt"; yu: "ez.yu"; yv: "ez.yv"; yw: "ez.yw"; yx: "ez.yx"; yy: "ez.yy"; yz: "ez.yz"; za: "ez.za"; zb: "ez.zb"; zc: "ez.zc"; zd: "ez.zd"; ze: "ez.ze"; zf: "ez.zf"; zg: "ez.zg"; zh: "ez.zh"; zi: "ez.zi"; zj: "ez.zj"; zk: "ez.zk"; zl: "ez.zl"; zm: "ez.zm"; zn: "ez.zn"; zo: "ez.zo"; zp: "ez.zp"; zq: "ez.zq"; zr: "ez.zr"; zs: "ez.zs"; zt: "ez.zt"; zu: "ez.zu"; zv: "ez.zv"; zw: "ez.zw"; zx: "ez.zx"; zy: "ez.zy"; zz: "ez.zz"; }; fa: { aa: "fa.aa"; ab: "fa.ab"; ac: "fa.ac"; ad: "fa.ad"; ae: "fa.ae"; af: "fa.af"; ag: "fa.ag"; ah: "fa.ah"; ai: "fa.ai"; aj: "fa.aj"; ak: "fa.ak"; al: "fa.al"; am: "fa.am"; an: "fa.an"; ao: "fa.ao"; ap: "fa.ap"; aq: "fa.aq"; ar: "fa.ar"; as: "fa.as"; at: "fa.at"; au: "fa.au"; av: "fa.av"; aw: "fa.aw"; ax: "fa.ax"; ay: "fa.ay"; az: "fa.az"; ba: "fa.ba"; bb: "fa.bb"; bc: "fa.bc"; bd: "fa.bd"; be: "fa.be"; bf: "fa.bf"; bg: "fa.bg"; bh: "fa.bh"; bi: "fa.bi"; bj: "fa.bj"; bk: "fa.bk"; bl: "fa.bl"; bm: "fa.bm"; bn: "fa.bn"; bo: "fa.bo"; bp: "fa.bp"; bq: "fa.bq"; br: "fa.br"; bs: "fa.bs"; bt: "fa.bt"; bu: "fa.bu"; bv: "fa.bv"; bw: "fa.bw"; bx: "fa.bx"; by: "fa.by"; bz: "fa.bz"; ca: "fa.ca"; cb: "fa.cb"; cc: "fa.cc"; cd: "fa.cd"; ce: "fa.ce"; cf: "fa.cf"; cg: "fa.cg"; ch: "fa.ch"; ci: "fa.ci"; cj: "fa.cj"; ck: "fa.ck"; cl: "fa.cl"; cm: "fa.cm"; cn: "fa.cn"; co: "fa.co"; cp: "fa.cp"; cq: "fa.cq"; cr: "fa.cr"; cs: "fa.cs"; ct: "fa.ct"; cu: "fa.cu"; cv: "fa.cv"; cw: "fa.cw"; cx: "fa.cx"; cy: "fa.cy"; cz: "fa.cz"; da: "fa.da"; db: "fa.db"; dc: "fa.dc"; dd: "fa.dd"; de: "fa.de"; df: "fa.df"; dg: "fa.dg"; dh: "fa.dh"; di: "fa.di"; dj: "fa.dj"; dk: "fa.dk"; dl: "fa.dl"; dm: "fa.dm"; dn: "fa.dn"; do: "fa.do"; dp: "fa.dp"; dq: "fa.dq"; dr: "fa.dr"; ds: "fa.ds"; dt: "fa.dt"; du: "fa.du"; dv: "fa.dv"; dw: "fa.dw"; dx: "fa.dx"; dy: "fa.dy"; dz: "fa.dz"; ea: "fa.ea"; eb: "fa.eb"; ec: "fa.ec"; ed: "fa.ed"; ee: "fa.ee"; ef: "fa.ef"; eg: "fa.eg"; eh: "fa.eh"; ei: "fa.ei"; ej: "fa.ej"; ek: "fa.ek"; el: "fa.el"; em: "fa.em"; en: "fa.en"; eo: "fa.eo"; ep: "fa.ep"; eq: "fa.eq"; er: "fa.er"; es: "fa.es"; et: "fa.et"; eu: "fa.eu"; ev: "fa.ev"; ew: "fa.ew"; ex: "fa.ex"; ey: "fa.ey"; ez: "fa.ez"; fa: "fa.fa"; fb: "fa.fb"; fc: "fa.fc"; fd: "fa.fd"; fe: "fa.fe"; ff: "fa.ff"; fg: "fa.fg"; fh: "fa.fh"; fi: "fa.fi"; fj: "fa.fj"; fk: "fa.fk"; fl: "fa.fl"; fm: "fa.fm"; fn: "fa.fn"; fo: "fa.fo"; fp: "fa.fp"; fq: "fa.fq"; fr: "fa.fr"; fs: "fa.fs"; ft: "fa.ft"; fu: "fa.fu"; fv: "fa.fv"; fw: "fa.fw"; fx: "fa.fx"; fy: "fa.fy"; fz: "fa.fz"; ga: "fa.ga"; gb: "fa.gb"; gc: "fa.gc"; gd: "fa.gd"; ge: "fa.ge"; gf: "fa.gf"; gg: "fa.gg"; gh: "fa.gh"; gi: "fa.gi"; gj: "fa.gj"; gk: "fa.gk"; gl: "fa.gl"; gm: "fa.gm"; gn: "fa.gn"; go: "fa.go"; gp: "fa.gp"; gq: "fa.gq"; gr: "fa.gr"; gs: "fa.gs"; gt: "fa.gt"; gu: "fa.gu"; gv: "fa.gv"; gw: "fa.gw"; gx: "fa.gx"; gy: "fa.gy"; gz: "fa.gz"; ha: "fa.ha"; hb: "fa.hb"; hc: "fa.hc"; hd: "fa.hd"; he: "fa.he"; hf: "fa.hf"; hg: "fa.hg"; hh: "fa.hh"; hi: "fa.hi"; hj: "fa.hj"; hk: "fa.hk"; hl: "fa.hl"; hm: "fa.hm"; hn: "fa.hn"; ho: "fa.ho"; hp: "fa.hp"; hq: "fa.hq"; hr: "fa.hr"; hs: "fa.hs"; ht: "fa.ht"; hu: "fa.hu"; hv: "fa.hv"; hw: "fa.hw"; hx: "fa.hx"; hy: "fa.hy"; hz: "fa.hz"; ia: "fa.ia"; ib: "fa.ib"; ic: "fa.ic"; id: "fa.id"; ie: "fa.ie"; if: "fa.if"; ig: "fa.ig"; ih: "fa.ih"; ii: "fa.ii"; ij: "fa.ij"; ik: "fa.ik"; il: "fa.il"; im: "fa.im"; in: "fa.in"; io: "fa.io"; ip: "fa.ip"; iq: "fa.iq"; ir: "fa.ir"; is: "fa.is"; it: "fa.it"; iu: "fa.iu"; iv: "fa.iv"; iw: "fa.iw"; ix: "fa.ix"; iy: "fa.iy"; iz: "fa.iz"; ja: "fa.ja"; jb: "fa.jb"; jc: "fa.jc"; jd: "fa.jd"; je: "fa.je"; jf: "fa.jf"; jg: "fa.jg"; jh: "fa.jh"; ji: "fa.ji"; jj: "fa.jj"; jk: "fa.jk"; jl: "fa.jl"; jm: "fa.jm"; jn: "fa.jn"; jo: "fa.jo"; jp: "fa.jp"; jq: "fa.jq"; jr: "fa.jr"; js: "fa.js"; jt: "fa.jt"; ju: "fa.ju"; jv: "fa.jv"; jw: "fa.jw"; jx: "fa.jx"; jy: "fa.jy"; jz: "fa.jz"; ka: "fa.ka"; kb: "fa.kb"; kc: "fa.kc"; kd: "fa.kd"; ke: "fa.ke"; kf: "fa.kf"; kg: "fa.kg"; kh: "fa.kh"; ki: "fa.ki"; kj: "fa.kj"; kk: "fa.kk"; kl: "fa.kl"; km: "fa.km"; kn: "fa.kn"; ko: "fa.ko"; kp: "fa.kp"; kq: "fa.kq"; kr: "fa.kr"; ks: "fa.ks"; kt: "fa.kt"; ku: "fa.ku"; kv: "fa.kv"; kw: "fa.kw"; kx: "fa.kx"; ky: "fa.ky"; kz: "fa.kz"; la: "fa.la"; lb: "fa.lb"; lc: "fa.lc"; ld: "fa.ld"; le: "fa.le"; lf: "fa.lf"; lg: "fa.lg"; lh: "fa.lh"; li: "fa.li"; lj: "fa.lj"; lk: "fa.lk"; ll: "fa.ll"; lm: "fa.lm"; ln: "fa.ln"; lo: "fa.lo"; lp: "fa.lp"; lq: "fa.lq"; lr: "fa.lr"; ls: "fa.ls"; lt: "fa.lt"; lu: "fa.lu"; lv: "fa.lv"; lw: "fa.lw"; lx: "fa.lx"; ly: "fa.ly"; lz: "fa.lz"; ma: "fa.ma"; mb: "fa.mb"; mc: "fa.mc"; md: "fa.md"; me: "fa.me"; mf: "fa.mf"; mg: "fa.mg"; mh: "fa.mh"; mi: "fa.mi"; mj: "fa.mj"; mk: "fa.mk"; ml: "fa.ml"; mm: "fa.mm"; mn: "fa.mn"; mo: "fa.mo"; mp: "fa.mp"; mq: "fa.mq"; mr: "fa.mr"; ms: "fa.ms"; mt: "fa.mt"; mu: "fa.mu"; mv: "fa.mv"; mw: "fa.mw"; mx: "fa.mx"; my: "fa.my"; mz: "fa.mz"; na: "fa.na"; nb: "fa.nb"; nc: "fa.nc"; nd: "fa.nd"; ne: "fa.ne"; nf: "fa.nf"; ng: "fa.ng"; nh: "fa.nh"; ni: "fa.ni"; nj: "fa.nj"; nk: "fa.nk"; nl: "fa.nl"; nm: "fa.nm"; nn: "fa.nn"; no: "fa.no"; np: "fa.np"; nq: "fa.nq"; nr: "fa.nr"; ns: "fa.ns"; nt: "fa.nt"; nu: "fa.nu"; nv: "fa.nv"; nw: "fa.nw"; nx: "fa.nx"; ny: "fa.ny"; nz: "fa.nz"; oa: "fa.oa"; ob: "fa.ob"; oc: "fa.oc"; od: "fa.od"; oe: "fa.oe"; of: "fa.of"; og: "fa.og"; oh: "fa.oh"; oi: "fa.oi"; oj: "fa.oj"; ok: "fa.ok"; ol: "fa.ol"; om: "fa.om"; on: "fa.on"; oo: "fa.oo"; op: "fa.op"; oq: "fa.oq"; or: "fa.or"; os: "fa.os"; ot: "fa.ot"; ou: "fa.ou"; ov: "fa.ov"; ow: "fa.ow"; ox: "fa.ox"; oy: "fa.oy"; oz: "fa.oz"; pa: "fa.pa"; pb: "fa.pb"; pc: "fa.pc"; pd: "fa.pd"; pe: "fa.pe"; pf: "fa.pf"; pg: "fa.pg"; ph: "fa.ph"; pi: "fa.pi"; pj: "fa.pj"; pk: "fa.pk"; pl: "fa.pl"; pm: "fa.pm"; pn: "fa.pn"; po: "fa.po"; pp: "fa.pp"; pq: "fa.pq"; pr: "fa.pr"; ps: "fa.ps"; pt: "fa.pt"; pu: "fa.pu"; pv: "fa.pv"; pw: "fa.pw"; px: "fa.px"; py: "fa.py"; pz: "fa.pz"; qa: "fa.qa"; qb: "fa.qb"; qc: "fa.qc"; qd: "fa.qd"; qe: "fa.qe"; qf: "fa.qf"; qg: "fa.qg"; qh: "fa.qh"; qi: "fa.qi"; qj: "fa.qj"; qk: "fa.qk"; ql: "fa.ql"; qm: "fa.qm"; qn: "fa.qn"; qo: "fa.qo"; qp: "fa.qp"; qq: "fa.qq"; qr: "fa.qr"; qs: "fa.qs"; qt: "fa.qt"; qu: "fa.qu"; qv: "fa.qv"; qw: "fa.qw"; qx: "fa.qx"; qy: "fa.qy"; qz: "fa.qz"; ra: "fa.ra"; rb: "fa.rb"; rc: "fa.rc"; rd: "fa.rd"; re: "fa.re"; rf: "fa.rf"; rg: "fa.rg"; rh: "fa.rh"; ri: "fa.ri"; rj: "fa.rj"; rk: "fa.rk"; rl: "fa.rl"; rm: "fa.rm"; rn: "fa.rn"; ro: "fa.ro"; rp: "fa.rp"; rq: "fa.rq"; rr: "fa.rr"; rs: "fa.rs"; rt: "fa.rt"; ru: "fa.ru"; rv: "fa.rv"; rw: "fa.rw"; rx: "fa.rx"; ry: "fa.ry"; rz: "fa.rz"; sa: "fa.sa"; sb: "fa.sb"; sc: "fa.sc"; sd: "fa.sd"; se: "fa.se"; sf: "fa.sf"; sg: "fa.sg"; sh: "fa.sh"; si: "fa.si"; sj: "fa.sj"; sk: "fa.sk"; sl: "fa.sl"; sm: "fa.sm"; sn: "fa.sn"; so: "fa.so"; sp: "fa.sp"; sq: "fa.sq"; sr: "fa.sr"; ss: "fa.ss"; st: "fa.st"; su: "fa.su"; sv: "fa.sv"; sw: "fa.sw"; sx: "fa.sx"; sy: "fa.sy"; sz: "fa.sz"; ta: "fa.ta"; tb: "fa.tb"; tc: "fa.tc"; td: "fa.td"; te: "fa.te"; tf: "fa.tf"; tg: "fa.tg"; th: "fa.th"; ti: "fa.ti"; tj: "fa.tj"; tk: "fa.tk"; tl: "fa.tl"; tm: "fa.tm"; tn: "fa.tn"; to: "fa.to"; tp: "fa.tp"; tq: "fa.tq"; tr: "fa.tr"; ts: "fa.ts"; tt: "fa.tt"; tu: "fa.tu"; tv: "fa.tv"; tw: "fa.tw"; tx: "fa.tx"; ty: "fa.ty"; tz: "fa.tz"; ua: "fa.ua"; ub: "fa.ub"; uc: "fa.uc"; ud: "fa.ud"; ue: "fa.ue"; uf: "fa.uf"; ug: "fa.ug"; uh: "fa.uh"; ui: "fa.ui"; uj: "fa.uj"; uk: "fa.uk"; ul: "fa.ul"; um: "fa.um"; un: "fa.un"; uo: "fa.uo"; up: "fa.up"; uq: "fa.uq"; ur: "fa.ur"; us: "fa.us"; ut: "fa.ut"; uu: "fa.uu"; uv: "fa.uv"; uw: "fa.uw"; ux: "fa.ux"; uy: "fa.uy"; uz: "fa.uz"; va: "fa.va"; vb: "fa.vb"; vc: "fa.vc"; vd: "fa.vd"; ve: "fa.ve"; vf: "fa.vf"; vg: "fa.vg"; vh: "fa.vh"; vi: "fa.vi"; vj: "fa.vj"; vk: "fa.vk"; vl: "fa.vl"; vm: "fa.vm"; vn: "fa.vn"; vo: "fa.vo"; vp: "fa.vp"; vq: "fa.vq"; vr: "fa.vr"; vs: "fa.vs"; vt: "fa.vt"; vu: "fa.vu"; vv: "fa.vv"; vw: "fa.vw"; vx: "fa.vx"; vy: "fa.vy"; vz: "fa.vz"; wa: "fa.wa"; wb: "fa.wb"; wc: "fa.wc"; wd: "fa.wd"; we: "fa.we"; wf: "fa.wf"; wg: "fa.wg"; wh: "fa.wh"; wi: "fa.wi"; wj: "fa.wj"; wk: "fa.wk"; wl: "fa.wl"; wm: "fa.wm"; wn: "fa.wn"; wo: "fa.wo"; wp: "fa.wp"; wq: "fa.wq"; wr: "fa.wr"; ws: "fa.ws"; wt: "fa.wt"; wu: "fa.wu"; wv: "fa.wv"; ww: "fa.ww"; wx: "fa.wx"; wy: "fa.wy"; wz: "fa.wz"; xa: "fa.xa"; xb: "fa.xb"; xc: "fa.xc"; xd: "fa.xd"; xe: "fa.xe"; xf: "fa.xf"; xg: "fa.xg"; xh: "fa.xh"; xi: "fa.xi"; xj: "fa.xj"; xk: "fa.xk"; xl: "fa.xl"; xm: "fa.xm"; xn: "fa.xn"; xo: "fa.xo"; xp: "fa.xp"; xq: "fa.xq"; xr: "fa.xr"; xs: "fa.xs"; xt: "fa.xt"; xu: "fa.xu"; xv: "fa.xv"; xw: "fa.xw"; xx: "fa.xx"; xy: "fa.xy"; xz: "fa.xz"; ya: "fa.ya"; yb: "fa.yb"; yc: "fa.yc"; yd: "fa.yd"; ye: "fa.ye"; yf: "fa.yf"; yg: "fa.yg"; yh: "fa.yh"; yi: "fa.yi"; yj: "fa.yj"; yk: "fa.yk"; yl: "fa.yl"; ym: "fa.ym"; yn: "fa.yn"; yo: "fa.yo"; yp: "fa.yp"; yq: "fa.yq"; yr: "fa.yr"; ys: "fa.ys"; yt: "fa.yt"; yu: "fa.yu"; yv: "fa.yv"; yw: "fa.yw"; yx: "fa.yx"; yy: "fa.yy"; yz: "fa.yz"; za: "fa.za"; zb: "fa.zb"; zc: "fa.zc"; zd: "fa.zd"; ze: "fa.ze"; zf: "fa.zf"; zg: "fa.zg"; zh: "fa.zh"; zi: "fa.zi"; zj: "fa.zj"; zk: "fa.zk"; zl: "fa.zl"; zm: "fa.zm"; zn: "fa.zn"; zo: "fa.zo"; zp: "fa.zp"; zq: "fa.zq"; zr: "fa.zr"; zs: "fa.zs"; zt: "fa.zt"; zu: "fa.zu"; zv: "fa.zv"; zw: "fa.zw"; zx: "fa.zx"; zy: "fa.zy"; zz: "fa.zz"; }; fb: { aa: "fb.aa"; ab: "fb.ab"; ac: "fb.ac"; ad: "fb.ad"; ae: "fb.ae"; af: "fb.af"; ag: "fb.ag"; ah: "fb.ah"; ai: "fb.ai"; aj: "fb.aj"; ak: "fb.ak"; al: "fb.al"; am: "fb.am"; an: "fb.an"; ao: "fb.ao"; ap: "fb.ap"; aq: "fb.aq"; ar: "fb.ar"; as: "fb.as"; at: "fb.at"; au: "fb.au"; av: "fb.av"; aw: "fb.aw"; ax: "fb.ax"; ay: "fb.ay"; az: "fb.az"; ba: "fb.ba"; bb: "fb.bb"; bc: "fb.bc"; bd: "fb.bd"; be: "fb.be"; bf: "fb.bf"; bg: "fb.bg"; bh: "fb.bh"; bi: "fb.bi"; bj: "fb.bj"; bk: "fb.bk"; bl: "fb.bl"; bm: "fb.bm"; bn: "fb.bn"; bo: "fb.bo"; bp: "fb.bp"; bq: "fb.bq"; br: "fb.br"; bs: "fb.bs"; bt: "fb.bt"; bu: "fb.bu"; bv: "fb.bv"; bw: "fb.bw"; bx: "fb.bx"; by: "fb.by"; bz: "fb.bz"; ca: "fb.ca"; cb: "fb.cb"; cc: "fb.cc"; cd: "fb.cd"; ce: "fb.ce"; cf: "fb.cf"; cg: "fb.cg"; ch: "fb.ch"; ci: "fb.ci"; cj: "fb.cj"; ck: "fb.ck"; cl: "fb.cl"; cm: "fb.cm"; cn: "fb.cn"; co: "fb.co"; cp: "fb.cp"; cq: "fb.cq"; cr: "fb.cr"; cs: "fb.cs"; ct: "fb.ct"; cu: "fb.cu"; cv: "fb.cv"; cw: "fb.cw"; cx: "fb.cx"; cy: "fb.cy"; cz: "fb.cz"; da: "fb.da"; db: "fb.db"; dc: "fb.dc"; dd: "fb.dd"; de: "fb.de"; df: "fb.df"; dg: "fb.dg"; dh: "fb.dh"; di: "fb.di"; dj: "fb.dj"; dk: "fb.dk"; dl: "fb.dl"; dm: "fb.dm"; dn: "fb.dn"; do: "fb.do"; dp: "fb.dp"; dq: "fb.dq"; dr: "fb.dr"; ds: "fb.ds"; dt: "fb.dt"; du: "fb.du"; dv: "fb.dv"; dw: "fb.dw"; dx: "fb.dx"; dy: "fb.dy"; dz: "fb.dz"; ea: "fb.ea"; eb: "fb.eb"; ec: "fb.ec"; ed: "fb.ed"; ee: "fb.ee"; ef: "fb.ef"; eg: "fb.eg"; eh: "fb.eh"; ei: "fb.ei"; ej: "fb.ej"; ek: "fb.ek"; el: "fb.el"; em: "fb.em"; en: "fb.en"; eo: "fb.eo"; ep: "fb.ep"; eq: "fb.eq"; er: "fb.er"; es: "fb.es"; et: "fb.et"; eu: "fb.eu"; ev: "fb.ev"; ew: "fb.ew"; ex: "fb.ex"; ey: "fb.ey"; ez: "fb.ez"; fa: "fb.fa"; fb: "fb.fb"; fc: "fb.fc"; fd: "fb.fd"; fe: "fb.fe"; ff: "fb.ff"; fg: "fb.fg"; fh: "fb.fh"; fi: "fb.fi"; fj: "fb.fj"; fk: "fb.fk"; fl: "fb.fl"; fm: "fb.fm"; fn: "fb.fn"; fo: "fb.fo"; fp: "fb.fp"; fq: "fb.fq"; fr: "fb.fr"; fs: "fb.fs"; ft: "fb.ft"; fu: "fb.fu"; fv: "fb.fv"; fw: "fb.fw"; fx: "fb.fx"; fy: "fb.fy"; fz: "fb.fz"; ga: "fb.ga"; gb: "fb.gb"; gc: "fb.gc"; gd: "fb.gd"; ge: "fb.ge"; gf: "fb.gf"; gg: "fb.gg"; gh: "fb.gh"; gi: "fb.gi"; gj: "fb.gj"; gk: "fb.gk"; gl: "fb.gl"; gm: "fb.gm"; gn: "fb.gn"; go: "fb.go"; gp: "fb.gp"; gq: "fb.gq"; gr: "fb.gr"; gs: "fb.gs"; gt: "fb.gt"; gu: "fb.gu"; gv: "fb.gv"; gw: "fb.gw"; gx: "fb.gx"; gy: "fb.gy"; gz: "fb.gz"; ha: "fb.ha"; hb: "fb.hb"; hc: "fb.hc"; hd: "fb.hd"; he: "fb.he"; hf: "fb.hf"; hg: "fb.hg"; hh: "fb.hh"; hi: "fb.hi"; hj: "fb.hj"; hk: "fb.hk"; hl: "fb.hl"; hm: "fb.hm"; hn: "fb.hn"; ho: "fb.ho"; hp: "fb.hp"; hq: "fb.hq"; hr: "fb.hr"; hs: "fb.hs"; ht: "fb.ht"; hu: "fb.hu"; hv: "fb.hv"; hw: "fb.hw"; hx: "fb.hx"; hy: "fb.hy"; hz: "fb.hz"; ia: "fb.ia"; ib: "fb.ib"; ic: "fb.ic"; id: "fb.id"; ie: "fb.ie"; if: "fb.if"; ig: "fb.ig"; ih: "fb.ih"; ii: "fb.ii"; ij: "fb.ij"; ik: "fb.ik"; il: "fb.il"; im: "fb.im"; in: "fb.in"; io: "fb.io"; ip: "fb.ip"; iq: "fb.iq"; ir: "fb.ir"; is: "fb.is"; it: "fb.it"; iu: "fb.iu"; iv: "fb.iv"; iw: "fb.iw"; ix: "fb.ix"; iy: "fb.iy"; iz: "fb.iz"; ja: "fb.ja"; jb: "fb.jb"; jc: "fb.jc"; jd: "fb.jd"; je: "fb.je"; jf: "fb.jf"; jg: "fb.jg"; jh: "fb.jh"; ji: "fb.ji"; jj: "fb.jj"; jk: "fb.jk"; jl: "fb.jl"; jm: "fb.jm"; jn: "fb.jn"; jo: "fb.jo"; jp: "fb.jp"; jq: "fb.jq"; jr: "fb.jr"; js: "fb.js"; jt: "fb.jt"; ju: "fb.ju"; jv: "fb.jv"; jw: "fb.jw"; jx: "fb.jx"; jy: "fb.jy"; jz: "fb.jz"; ka: "fb.ka"; kb: "fb.kb"; kc: "fb.kc"; kd: "fb.kd"; ke: "fb.ke"; kf: "fb.kf"; kg: "fb.kg"; kh: "fb.kh"; ki: "fb.ki"; kj: "fb.kj"; kk: "fb.kk"; kl: "fb.kl"; km: "fb.km"; kn: "fb.kn"; ko: "fb.ko"; kp: "fb.kp"; kq: "fb.kq"; kr: "fb.kr"; ks: "fb.ks"; kt: "fb.kt"; ku: "fb.ku"; kv: "fb.kv"; kw: "fb.kw"; kx: "fb.kx"; ky: "fb.ky"; kz: "fb.kz"; la: "fb.la"; lb: "fb.lb"; lc: "fb.lc"; ld: "fb.ld"; le: "fb.le"; lf: "fb.lf"; lg: "fb.lg"; lh: "fb.lh"; li: "fb.li"; lj: "fb.lj"; lk: "fb.lk"; ll: "fb.ll"; lm: "fb.lm"; ln: "fb.ln"; lo: "fb.lo"; lp: "fb.lp"; lq: "fb.lq"; lr: "fb.lr"; ls: "fb.ls"; lt: "fb.lt"; lu: "fb.lu"; lv: "fb.lv"; lw: "fb.lw"; lx: "fb.lx"; ly: "fb.ly"; lz: "fb.lz"; ma: "fb.ma"; mb: "fb.mb"; mc: "fb.mc"; md: "fb.md"; me: "fb.me"; mf: "fb.mf"; mg: "fb.mg"; mh: "fb.mh"; mi: "fb.mi"; mj: "fb.mj"; mk: "fb.mk"; ml: "fb.ml"; mm: "fb.mm"; mn: "fb.mn"; mo: "fb.mo"; mp: "fb.mp"; mq: "fb.mq"; mr: "fb.mr"; ms: "fb.ms"; mt: "fb.mt"; mu: "fb.mu"; mv: "fb.mv"; mw: "fb.mw"; mx: "fb.mx"; my: "fb.my"; mz: "fb.mz"; na: "fb.na"; nb: "fb.nb"; nc: "fb.nc"; nd: "fb.nd"; ne: "fb.ne"; nf: "fb.nf"; ng: "fb.ng"; nh: "fb.nh"; ni: "fb.ni"; nj: "fb.nj"; nk: "fb.nk"; nl: "fb.nl"; nm: "fb.nm"; nn: "fb.nn"; no: "fb.no"; np: "fb.np"; nq: "fb.nq"; nr: "fb.nr"; ns: "fb.ns"; nt: "fb.nt"; nu: "fb.nu"; nv: "fb.nv"; nw: "fb.nw"; nx: "fb.nx"; ny: "fb.ny"; nz: "fb.nz"; oa: "fb.oa"; ob: "fb.ob"; oc: "fb.oc"; od: "fb.od"; oe: "fb.oe"; of: "fb.of"; og: "fb.og"; oh: "fb.oh"; oi: "fb.oi"; oj: "fb.oj"; ok: "fb.ok"; ol: "fb.ol"; om: "fb.om"; on: "fb.on"; oo: "fb.oo"; op: "fb.op"; oq: "fb.oq"; or: "fb.or"; os: "fb.os"; ot: "fb.ot"; ou: "fb.ou"; ov: "fb.ov"; ow: "fb.ow"; ox: "fb.ox"; oy: "fb.oy"; oz: "fb.oz"; pa: "fb.pa"; pb: "fb.pb"; pc: "fb.pc"; pd: "fb.pd"; pe: "fb.pe"; pf: "fb.pf"; pg: "fb.pg"; ph: "fb.ph"; pi: "fb.pi"; pj: "fb.pj"; pk: "fb.pk"; pl: "fb.pl"; pm: "fb.pm"; pn: "fb.pn"; po: "fb.po"; pp: "fb.pp"; pq: "fb.pq"; pr: "fb.pr"; ps: "fb.ps"; pt: "fb.pt"; pu: "fb.pu"; pv: "fb.pv"; pw: "fb.pw"; px: "fb.px"; py: "fb.py"; pz: "fb.pz"; qa: "fb.qa"; qb: "fb.qb"; qc: "fb.qc"; qd: "fb.qd"; qe: "fb.qe"; qf: "fb.qf"; qg: "fb.qg"; qh: "fb.qh"; qi: "fb.qi"; qj: "fb.qj"; qk: "fb.qk"; ql: "fb.ql"; qm: "fb.qm"; qn: "fb.qn"; qo: "fb.qo"; qp: "fb.qp"; qq: "fb.qq"; qr: "fb.qr"; qs: "fb.qs"; qt: "fb.qt"; qu: "fb.qu"; qv: "fb.qv"; qw: "fb.qw"; qx: "fb.qx"; qy: "fb.qy"; qz: "fb.qz"; ra: "fb.ra"; rb: "fb.rb"; rc: "fb.rc"; rd: "fb.rd"; re: "fb.re"; rf: "fb.rf"; rg: "fb.rg"; rh: "fb.rh"; ri: "fb.ri"; rj: "fb.rj"; rk: "fb.rk"; rl: "fb.rl"; rm: "fb.rm"; rn: "fb.rn"; ro: "fb.ro"; rp: "fb.rp"; rq: "fb.rq"; rr: "fb.rr"; rs: "fb.rs"; rt: "fb.rt"; ru: "fb.ru"; rv: "fb.rv"; rw: "fb.rw"; rx: "fb.rx"; ry: "fb.ry"; rz: "fb.rz"; sa: "fb.sa"; sb: "fb.sb"; sc: "fb.sc"; sd: "fb.sd"; se: "fb.se"; sf: "fb.sf"; sg: "fb.sg"; sh: "fb.sh"; si: "fb.si"; sj: "fb.sj"; sk: "fb.sk"; sl: "fb.sl"; sm: "fb.sm"; sn: "fb.sn"; so: "fb.so"; sp: "fb.sp"; sq: "fb.sq"; sr: "fb.sr"; ss: "fb.ss"; st: "fb.st"; su: "fb.su"; sv: "fb.sv"; sw: "fb.sw"; sx: "fb.sx"; sy: "fb.sy"; sz: "fb.sz"; ta: "fb.ta"; tb: "fb.tb"; tc: "fb.tc"; td: "fb.td"; te: "fb.te"; tf: "fb.tf"; tg: "fb.tg"; th: "fb.th"; ti: "fb.ti"; tj: "fb.tj"; tk: "fb.tk"; tl: "fb.tl"; tm: "fb.tm"; tn: "fb.tn"; to: "fb.to"; tp: "fb.tp"; tq: "fb.tq"; tr: "fb.tr"; ts: "fb.ts"; tt: "fb.tt"; tu: "fb.tu"; tv: "fb.tv"; tw: "fb.tw"; tx: "fb.tx"; ty: "fb.ty"; tz: "fb.tz"; ua: "fb.ua"; ub: "fb.ub"; uc: "fb.uc"; ud: "fb.ud"; ue: "fb.ue"; uf: "fb.uf"; ug: "fb.ug"; uh: "fb.uh"; ui: "fb.ui"; uj: "fb.uj"; uk: "fb.uk"; ul: "fb.ul"; um: "fb.um"; un: "fb.un"; uo: "fb.uo"; up: "fb.up"; uq: "fb.uq"; ur: "fb.ur"; us: "fb.us"; ut: "fb.ut"; uu: "fb.uu"; uv: "fb.uv"; uw: "fb.uw"; ux: "fb.ux"; uy: "fb.uy"; uz: "fb.uz"; va: "fb.va"; vb: "fb.vb"; vc: "fb.vc"; vd: "fb.vd"; ve: "fb.ve"; vf: "fb.vf"; vg: "fb.vg"; vh: "fb.vh"; vi: "fb.vi"; vj: "fb.vj"; vk: "fb.vk"; vl: "fb.vl"; vm: "fb.vm"; vn: "fb.vn"; vo: "fb.vo"; vp: "fb.vp"; vq: "fb.vq"; vr: "fb.vr"; vs: "fb.vs"; vt: "fb.vt"; vu: "fb.vu"; vv: "fb.vv"; vw: "fb.vw"; vx: "fb.vx"; vy: "fb.vy"; vz: "fb.vz"; wa: "fb.wa"; wb: "fb.wb"; wc: "fb.wc"; wd: "fb.wd"; we: "fb.we"; wf: "fb.wf"; wg: "fb.wg"; wh: "fb.wh"; wi: "fb.wi"; wj: "fb.wj"; wk: "fb.wk"; wl: "fb.wl"; wm: "fb.wm"; wn: "fb.wn"; wo: "fb.wo"; wp: "fb.wp"; wq: "fb.wq"; wr: "fb.wr"; ws: "fb.ws"; wt: "fb.wt"; wu: "fb.wu"; wv: "fb.wv"; ww: "fb.ww"; wx: "fb.wx"; wy: "fb.wy"; wz: "fb.wz"; xa: "fb.xa"; xb: "fb.xb"; xc: "fb.xc"; xd: "fb.xd"; xe: "fb.xe"; xf: "fb.xf"; xg: "fb.xg"; xh: "fb.xh"; xi: "fb.xi"; xj: "fb.xj"; xk: "fb.xk"; xl: "fb.xl"; xm: "fb.xm"; xn: "fb.xn"; xo: "fb.xo"; xp: "fb.xp"; xq: "fb.xq"; xr: "fb.xr"; xs: "fb.xs"; xt: "fb.xt"; xu: "fb.xu"; xv: "fb.xv"; xw: "fb.xw"; xx: "fb.xx"; xy: "fb.xy"; xz: "fb.xz"; ya: "fb.ya"; yb: "fb.yb"; yc: "fb.yc"; yd: "fb.yd"; ye: "fb.ye"; yf: "fb.yf"; yg: "fb.yg"; yh: "fb.yh"; yi: "fb.yi"; yj: "fb.yj"; yk: "fb.yk"; yl: "fb.yl"; ym: "fb.ym"; yn: "fb.yn"; yo: "fb.yo"; yp: "fb.yp"; yq: "fb.yq"; yr: "fb.yr"; ys: "fb.ys"; yt: "fb.yt"; yu: "fb.yu"; yv: "fb.yv"; yw: "fb.yw"; yx: "fb.yx"; yy: "fb.yy"; yz: "fb.yz"; za: "fb.za"; zb: "fb.zb"; zc: "fb.zc"; zd: "fb.zd"; ze: "fb.ze"; zf: "fb.zf"; zg: "fb.zg"; zh: "fb.zh"; zi: "fb.zi"; zj: "fb.zj"; zk: "fb.zk"; zl: "fb.zl"; zm: "fb.zm"; zn: "fb.zn"; zo: "fb.zo"; zp: "fb.zp"; zq: "fb.zq"; zr: "fb.zr"; zs: "fb.zs"; zt: "fb.zt"; zu: "fb.zu"; zv: "fb.zv"; zw: "fb.zw"; zx: "fb.zx"; zy: "fb.zy"; zz: "fb.zz"; }; fc: { aa: "fc.aa"; ab: "fc.ab"; ac: "fc.ac"; ad: "fc.ad"; ae: "fc.ae"; af: "fc.af"; ag: "fc.ag"; ah: "fc.ah"; ai: "fc.ai"; aj: "fc.aj"; ak: "fc.ak"; al: "fc.al"; am: "fc.am"; an: "fc.an"; ao: "fc.ao"; ap: "fc.ap"; aq: "fc.aq"; ar: "fc.ar"; as: "fc.as"; at: "fc.at"; au: "fc.au"; av: "fc.av"; aw: "fc.aw"; ax: "fc.ax"; ay: "fc.ay"; az: "fc.az"; ba: "fc.ba"; bb: "fc.bb"; bc: "fc.bc"; bd: "fc.bd"; be: "fc.be"; bf: "fc.bf"; bg: "fc.bg"; bh: "fc.bh"; bi: "fc.bi"; bj: "fc.bj"; bk: "fc.bk"; bl: "fc.bl"; bm: "fc.bm"; bn: "fc.bn"; bo: "fc.bo"; bp: "fc.bp"; bq: "fc.bq"; br: "fc.br"; bs: "fc.bs"; bt: "fc.bt"; bu: "fc.bu"; bv: "fc.bv"; bw: "fc.bw"; bx: "fc.bx"; by: "fc.by"; bz: "fc.bz"; ca: "fc.ca"; cb: "fc.cb"; cc: "fc.cc"; cd: "fc.cd"; ce: "fc.ce"; cf: "fc.cf"; cg: "fc.cg"; ch: "fc.ch"; ci: "fc.ci"; cj: "fc.cj"; ck: "fc.ck"; cl: "fc.cl"; cm: "fc.cm"; cn: "fc.cn"; co: "fc.co"; cp: "fc.cp"; cq: "fc.cq"; cr: "fc.cr"; cs: "fc.cs"; ct: "fc.ct"; cu: "fc.cu"; cv: "fc.cv"; cw: "fc.cw"; cx: "fc.cx"; cy: "fc.cy"; cz: "fc.cz"; da: "fc.da"; db: "fc.db"; dc: "fc.dc"; dd: "fc.dd"; de: "fc.de"; df: "fc.df"; dg: "fc.dg"; dh: "fc.dh"; di: "fc.di"; dj: "fc.dj"; dk: "fc.dk"; dl: "fc.dl"; dm: "fc.dm"; dn: "fc.dn"; do: "fc.do"; dp: "fc.dp"; dq: "fc.dq"; dr: "fc.dr"; ds: "fc.ds"; dt: "fc.dt"; du: "fc.du"; dv: "fc.dv"; dw: "fc.dw"; dx: "fc.dx"; dy: "fc.dy"; dz: "fc.dz"; ea: "fc.ea"; eb: "fc.eb"; ec: "fc.ec"; ed: "fc.ed"; ee: "fc.ee"; ef: "fc.ef"; eg: "fc.eg"; eh: "fc.eh"; ei: "fc.ei"; ej: "fc.ej"; ek: "fc.ek"; el: "fc.el"; em: "fc.em"; en: "fc.en"; eo: "fc.eo"; ep: "fc.ep"; eq: "fc.eq"; er: "fc.er"; es: "fc.es"; et: "fc.et"; eu: "fc.eu"; ev: "fc.ev"; ew: "fc.ew"; ex: "fc.ex"; ey: "fc.ey"; ez: "fc.ez"; fa: "fc.fa"; fb: "fc.fb"; fc: "fc.fc"; fd: "fc.fd"; fe: "fc.fe"; ff: "fc.ff"; fg: "fc.fg"; fh: "fc.fh"; fi: "fc.fi"; fj: "fc.fj"; fk: "fc.fk"; fl: "fc.fl"; fm: "fc.fm"; fn: "fc.fn"; fo: "fc.fo"; fp: "fc.fp"; fq: "fc.fq"; fr: "fc.fr"; fs: "fc.fs"; ft: "fc.ft"; fu: "fc.fu"; fv: "fc.fv"; fw: "fc.fw"; fx: "fc.fx"; fy: "fc.fy"; fz: "fc.fz"; ga: "fc.ga"; gb: "fc.gb"; gc: "fc.gc"; gd: "fc.gd"; ge: "fc.ge"; gf: "fc.gf"; gg: "fc.gg"; gh: "fc.gh"; gi: "fc.gi"; gj: "fc.gj"; gk: "fc.gk"; gl: "fc.gl"; gm: "fc.gm"; gn: "fc.gn"; go: "fc.go"; gp: "fc.gp"; gq: "fc.gq"; gr: "fc.gr"; gs: "fc.gs"; gt: "fc.gt"; gu: "fc.gu"; gv: "fc.gv"; gw: "fc.gw"; gx: "fc.gx"; gy: "fc.gy"; gz: "fc.gz"; ha: "fc.ha"; hb: "fc.hb"; hc: "fc.hc"; hd: "fc.hd"; he: "fc.he"; hf: "fc.hf"; hg: "fc.hg"; hh: "fc.hh"; hi: "fc.hi"; hj: "fc.hj"; hk: "fc.hk"; hl: "fc.hl"; hm: "fc.hm"; hn: "fc.hn"; ho: "fc.ho"; hp: "fc.hp"; hq: "fc.hq"; hr: "fc.hr"; hs: "fc.hs"; ht: "fc.ht"; hu: "fc.hu"; hv: "fc.hv"; hw: "fc.hw"; hx: "fc.hx"; hy: "fc.hy"; hz: "fc.hz"; ia: "fc.ia"; ib: "fc.ib"; ic: "fc.ic"; id: "fc.id"; ie: "fc.ie"; if: "fc.if"; ig: "fc.ig"; ih: "fc.ih"; ii: "fc.ii"; ij: "fc.ij"; ik: "fc.ik"; il: "fc.il"; im: "fc.im"; in: "fc.in"; io: "fc.io"; ip: "fc.ip"; iq: "fc.iq"; ir: "fc.ir"; is: "fc.is"; it: "fc.it"; iu: "fc.iu"; iv: "fc.iv"; iw: "fc.iw"; ix: "fc.ix"; iy: "fc.iy"; iz: "fc.iz"; ja: "fc.ja"; jb: "fc.jb"; jc: "fc.jc"; jd: "fc.jd"; je: "fc.je"; jf: "fc.jf"; jg: "fc.jg"; jh: "fc.jh"; ji: "fc.ji"; jj: "fc.jj"; jk: "fc.jk"; jl: "fc.jl"; jm: "fc.jm"; jn: "fc.jn"; jo: "fc.jo"; jp: "fc.jp"; jq: "fc.jq"; jr: "fc.jr"; js: "fc.js"; jt: "fc.jt"; ju: "fc.ju"; jv: "fc.jv"; jw: "fc.jw"; jx: "fc.jx"; jy: "fc.jy"; jz: "fc.jz"; ka: "fc.ka"; kb: "fc.kb"; kc: "fc.kc"; kd: "fc.kd"; ke: "fc.ke"; kf: "fc.kf"; kg: "fc.kg"; kh: "fc.kh"; ki: "fc.ki"; kj: "fc.kj"; kk: "fc.kk"; kl: "fc.kl"; km: "fc.km"; kn: "fc.kn"; ko: "fc.ko"; kp: "fc.kp"; kq: "fc.kq"; kr: "fc.kr"; ks: "fc.ks"; kt: "fc.kt"; ku: "fc.ku"; kv: "fc.kv"; kw: "fc.kw"; kx: "fc.kx"; ky: "fc.ky"; kz: "fc.kz"; la: "fc.la"; lb: "fc.lb"; lc: "fc.lc"; ld: "fc.ld"; le: "fc.le"; lf: "fc.lf"; lg: "fc.lg"; lh: "fc.lh"; li: "fc.li"; lj: "fc.lj"; lk: "fc.lk"; ll: "fc.ll"; lm: "fc.lm"; ln: "fc.ln"; lo: "fc.lo"; lp: "fc.lp"; lq: "fc.lq"; lr: "fc.lr"; ls: "fc.ls"; lt: "fc.lt"; lu: "fc.lu"; lv: "fc.lv"; lw: "fc.lw"; lx: "fc.lx"; ly: "fc.ly"; lz: "fc.lz"; ma: "fc.ma"; mb: "fc.mb"; mc: "fc.mc"; md: "fc.md"; me: "fc.me"; mf: "fc.mf"; mg: "fc.mg"; mh: "fc.mh"; mi: "fc.mi"; mj: "fc.mj"; mk: "fc.mk"; ml: "fc.ml"; mm: "fc.mm"; mn: "fc.mn"; mo: "fc.mo"; mp: "fc.mp"; mq: "fc.mq"; mr: "fc.mr"; ms: "fc.ms"; mt: "fc.mt"; mu: "fc.mu"; mv: "fc.mv"; mw: "fc.mw"; mx: "fc.mx"; my: "fc.my"; mz: "fc.mz"; na: "fc.na"; nb: "fc.nb"; nc: "fc.nc"; nd: "fc.nd"; ne: "fc.ne"; nf: "fc.nf"; ng: "fc.ng"; nh: "fc.nh"; ni: "fc.ni"; nj: "fc.nj"; nk: "fc.nk"; nl: "fc.nl"; nm: "fc.nm"; nn: "fc.nn"; no: "fc.no"; np: "fc.np"; nq: "fc.nq"; nr: "fc.nr"; ns: "fc.ns"; nt: "fc.nt"; nu: "fc.nu"; nv: "fc.nv"; nw: "fc.nw"; nx: "fc.nx"; ny: "fc.ny"; nz: "fc.nz"; oa: "fc.oa"; ob: "fc.ob"; oc: "fc.oc"; od: "fc.od"; oe: "fc.oe"; of: "fc.of"; og: "fc.og"; oh: "fc.oh"; oi: "fc.oi"; oj: "fc.oj"; ok: "fc.ok"; ol: "fc.ol"; om: "fc.om"; on: "fc.on"; oo: "fc.oo"; op: "fc.op"; oq: "fc.oq"; or: "fc.or"; os: "fc.os"; ot: "fc.ot"; ou: "fc.ou"; ov: "fc.ov"; ow: "fc.ow"; ox: "fc.ox"; oy: "fc.oy"; oz: "fc.oz"; pa: "fc.pa"; pb: "fc.pb"; pc: "fc.pc"; pd: "fc.pd"; pe: "fc.pe"; pf: "fc.pf"; pg: "fc.pg"; ph: "fc.ph"; pi: "fc.pi"; pj: "fc.pj"; pk: "fc.pk"; pl: "fc.pl"; pm: "fc.pm"; pn: "fc.pn"; po: "fc.po"; pp: "fc.pp"; pq: "fc.pq"; pr: "fc.pr"; ps: "fc.ps"; pt: "fc.pt"; pu: "fc.pu"; pv: "fc.pv"; pw: "fc.pw"; px: "fc.px"; py: "fc.py"; pz: "fc.pz"; qa: "fc.qa"; qb: "fc.qb"; qc: "fc.qc"; qd: "fc.qd"; qe: "fc.qe"; qf: "fc.qf"; qg: "fc.qg"; qh: "fc.qh"; qi: "fc.qi"; qj: "fc.qj"; qk: "fc.qk"; ql: "fc.ql"; qm: "fc.qm"; qn: "fc.qn"; qo: "fc.qo"; qp: "fc.qp"; qq: "fc.qq"; qr: "fc.qr"; qs: "fc.qs"; qt: "fc.qt"; qu: "fc.qu"; qv: "fc.qv"; qw: "fc.qw"; qx: "fc.qx"; qy: "fc.qy"; qz: "fc.qz"; ra: "fc.ra"; rb: "fc.rb"; rc: "fc.rc"; rd: "fc.rd"; re: "fc.re"; rf: "fc.rf"; rg: "fc.rg"; rh: "fc.rh"; ri: "fc.ri"; rj: "fc.rj"; rk: "fc.rk"; rl: "fc.rl"; rm: "fc.rm"; rn: "fc.rn"; ro: "fc.ro"; rp: "fc.rp"; rq: "fc.rq"; rr: "fc.rr"; rs: "fc.rs"; rt: "fc.rt"; ru: "fc.ru"; rv: "fc.rv"; rw: "fc.rw"; rx: "fc.rx"; ry: "fc.ry"; rz: "fc.rz"; sa: "fc.sa"; sb: "fc.sb"; sc: "fc.sc"; sd: "fc.sd"; se: "fc.se"; sf: "fc.sf"; sg: "fc.sg"; sh: "fc.sh"; si: "fc.si"; sj: "fc.sj"; sk: "fc.sk"; sl: "fc.sl"; sm: "fc.sm"; sn: "fc.sn"; so: "fc.so"; sp: "fc.sp"; sq: "fc.sq"; sr: "fc.sr"; ss: "fc.ss"; st: "fc.st"; su: "fc.su"; sv: "fc.sv"; sw: "fc.sw"; sx: "fc.sx"; sy: "fc.sy"; sz: "fc.sz"; ta: "fc.ta"; tb: "fc.tb"; tc: "fc.tc"; td: "fc.td"; te: "fc.te"; tf: "fc.tf"; tg: "fc.tg"; th: "fc.th"; ti: "fc.ti"; tj: "fc.tj"; tk: "fc.tk"; tl: "fc.tl"; tm: "fc.tm"; tn: "fc.tn"; to: "fc.to"; tp: "fc.tp"; tq: "fc.tq"; tr: "fc.tr"; ts: "fc.ts"; tt: "fc.tt"; tu: "fc.tu"; tv: "fc.tv"; tw: "fc.tw"; tx: "fc.tx"; ty: "fc.ty"; tz: "fc.tz"; ua: "fc.ua"; ub: "fc.ub"; uc: "fc.uc"; ud: "fc.ud"; ue: "fc.ue"; uf: "fc.uf"; ug: "fc.ug"; uh: "fc.uh"; ui: "fc.ui"; uj: "fc.uj"; uk: "fc.uk"; ul: "fc.ul"; um: "fc.um"; un: "fc.un"; uo: "fc.uo"; up: "fc.up"; uq: "fc.uq"; ur: "fc.ur"; us: "fc.us"; ut: "fc.ut"; uu: "fc.uu"; uv: "fc.uv"; uw: "fc.uw"; ux: "fc.ux"; uy: "fc.uy"; uz: "fc.uz"; va: "fc.va"; vb: "fc.vb"; vc: "fc.vc"; vd: "fc.vd"; ve: "fc.ve"; vf: "fc.vf"; vg: "fc.vg"; vh: "fc.vh"; vi: "fc.vi"; vj: "fc.vj"; vk: "fc.vk"; vl: "fc.vl"; vm: "fc.vm"; vn: "fc.vn"; vo: "fc.vo"; vp: "fc.vp"; vq: "fc.vq"; vr: "fc.vr"; vs: "fc.vs"; vt: "fc.vt"; vu: "fc.vu"; vv: "fc.vv"; vw: "fc.vw"; vx: "fc.vx"; vy: "fc.vy"; vz: "fc.vz"; wa: "fc.wa"; wb: "fc.wb"; wc: "fc.wc"; wd: "fc.wd"; we: "fc.we"; wf: "fc.wf"; wg: "fc.wg"; wh: "fc.wh"; wi: "fc.wi"; wj: "fc.wj"; wk: "fc.wk"; wl: "fc.wl"; wm: "fc.wm"; wn: "fc.wn"; wo: "fc.wo"; wp: "fc.wp"; wq: "fc.wq"; wr: "fc.wr"; ws: "fc.ws"; wt: "fc.wt"; wu: "fc.wu"; wv: "fc.wv"; ww: "fc.ww"; wx: "fc.wx"; wy: "fc.wy"; wz: "fc.wz"; xa: "fc.xa"; xb: "fc.xb"; xc: "fc.xc"; xd: "fc.xd"; xe: "fc.xe"; xf: "fc.xf"; xg: "fc.xg"; xh: "fc.xh"; xi: "fc.xi"; xj: "fc.xj"; xk: "fc.xk"; xl: "fc.xl"; xm: "fc.xm"; xn: "fc.xn"; xo: "fc.xo"; xp: "fc.xp"; xq: "fc.xq"; xr: "fc.xr"; xs: "fc.xs"; xt: "fc.xt"; xu: "fc.xu"; xv: "fc.xv"; xw: "fc.xw"; xx: "fc.xx"; xy: "fc.xy"; xz: "fc.xz"; ya: "fc.ya"; yb: "fc.yb"; yc: "fc.yc"; yd: "fc.yd"; ye: "fc.ye"; yf: "fc.yf"; yg: "fc.yg"; yh: "fc.yh"; yi: "fc.yi"; yj: "fc.yj"; yk: "fc.yk"; yl: "fc.yl"; ym: "fc.ym"; yn: "fc.yn"; yo: "fc.yo"; yp: "fc.yp"; yq: "fc.yq"; yr: "fc.yr"; ys: "fc.ys"; yt: "fc.yt"; yu: "fc.yu"; yv: "fc.yv"; yw: "fc.yw"; yx: "fc.yx"; yy: "fc.yy"; yz: "fc.yz"; za: "fc.za"; zb: "fc.zb"; zc: "fc.zc"; zd: "fc.zd"; ze: "fc.ze"; zf: "fc.zf"; zg: "fc.zg"; zh: "fc.zh"; zi: "fc.zi"; zj: "fc.zj"; zk: "fc.zk"; zl: "fc.zl"; zm: "fc.zm"; zn: "fc.zn"; zo: "fc.zo"; zp: "fc.zp"; zq: "fc.zq"; zr: "fc.zr"; zs: "fc.zs"; zt: "fc.zt"; zu: "fc.zu"; zv: "fc.zv"; zw: "fc.zw"; zx: "fc.zx"; zy: "fc.zy"; zz: "fc.zz"; }; fd: { aa: "fd.aa"; ab: "fd.ab"; ac: "fd.ac"; ad: "fd.ad"; ae: "fd.ae"; af: "fd.af"; ag: "fd.ag"; ah: "fd.ah"; ai: "fd.ai"; aj: "fd.aj"; ak: "fd.ak"; al: "fd.al"; am: "fd.am"; an: "fd.an"; ao: "fd.ao"; ap: "fd.ap"; aq: "fd.aq"; ar: "fd.ar"; as: "fd.as"; at: "fd.at"; au: "fd.au"; av: "fd.av"; aw: "fd.aw"; ax: "fd.ax"; ay: "fd.ay"; az: "fd.az"; ba: "fd.ba"; bb: "fd.bb"; bc: "fd.bc"; bd: "fd.bd"; be: "fd.be"; bf: "fd.bf"; bg: "fd.bg"; bh: "fd.bh"; bi: "fd.bi"; bj: "fd.bj"; bk: "fd.bk"; bl: "fd.bl"; bm: "fd.bm"; bn: "fd.bn"; bo: "fd.bo"; bp: "fd.bp"; bq: "fd.bq"; br: "fd.br"; bs: "fd.bs"; bt: "fd.bt"; bu: "fd.bu"; bv: "fd.bv"; bw: "fd.bw"; bx: "fd.bx"; by: "fd.by"; bz: "fd.bz"; ca: "fd.ca"; cb: "fd.cb"; cc: "fd.cc"; cd: "fd.cd"; ce: "fd.ce"; cf: "fd.cf"; cg: "fd.cg"; ch: "fd.ch"; ci: "fd.ci"; cj: "fd.cj"; ck: "fd.ck"; cl: "fd.cl"; cm: "fd.cm"; cn: "fd.cn"; co: "fd.co"; cp: "fd.cp"; cq: "fd.cq"; cr: "fd.cr"; cs: "fd.cs"; ct: "fd.ct"; cu: "fd.cu"; cv: "fd.cv"; cw: "fd.cw"; cx: "fd.cx"; cy: "fd.cy"; cz: "fd.cz"; da: "fd.da"; db: "fd.db"; dc: "fd.dc"; dd: "fd.dd"; de: "fd.de"; df: "fd.df"; dg: "fd.dg"; dh: "fd.dh"; di: "fd.di"; dj: "fd.dj"; dk: "fd.dk"; dl: "fd.dl"; dm: "fd.dm"; dn: "fd.dn"; do: "fd.do"; dp: "fd.dp"; dq: "fd.dq"; dr: "fd.dr"; ds: "fd.ds"; dt: "fd.dt"; du: "fd.du"; dv: "fd.dv"; dw: "fd.dw"; dx: "fd.dx"; dy: "fd.dy"; dz: "fd.dz"; ea: "fd.ea"; eb: "fd.eb"; ec: "fd.ec"; ed: "fd.ed"; ee: "fd.ee"; ef: "fd.ef"; eg: "fd.eg"; eh: "fd.eh"; ei: "fd.ei"; ej: "fd.ej"; ek: "fd.ek"; el: "fd.el"; em: "fd.em"; en: "fd.en"; eo: "fd.eo"; ep: "fd.ep"; eq: "fd.eq"; er: "fd.er"; es: "fd.es"; et: "fd.et"; eu: "fd.eu"; ev: "fd.ev"; ew: "fd.ew"; ex: "fd.ex"; ey: "fd.ey"; ez: "fd.ez"; fa: "fd.fa"; fb: "fd.fb"; fc: "fd.fc"; fd: "fd.fd"; fe: "fd.fe"; ff: "fd.ff"; fg: "fd.fg"; fh: "fd.fh"; fi: "fd.fi"; fj: "fd.fj"; fk: "fd.fk"; fl: "fd.fl"; fm: "fd.fm"; fn: "fd.fn"; fo: "fd.fo"; fp: "fd.fp"; fq: "fd.fq"; fr: "fd.fr"; fs: "fd.fs"; ft: "fd.ft"; fu: "fd.fu"; fv: "fd.fv"; fw: "fd.fw"; fx: "fd.fx"; fy: "fd.fy"; fz: "fd.fz"; ga: "fd.ga"; gb: "fd.gb"; gc: "fd.gc"; gd: "fd.gd"; ge: "fd.ge"; gf: "fd.gf"; gg: "fd.gg"; gh: "fd.gh"; gi: "fd.gi"; gj: "fd.gj"; gk: "fd.gk"; gl: "fd.gl"; gm: "fd.gm"; gn: "fd.gn"; go: "fd.go"; gp: "fd.gp"; gq: "fd.gq"; gr: "fd.gr"; gs: "fd.gs"; gt: "fd.gt"; gu: "fd.gu"; gv: "fd.gv"; gw: "fd.gw"; gx: "fd.gx"; gy: "fd.gy"; gz: "fd.gz"; ha: "fd.ha"; hb: "fd.hb"; hc: "fd.hc"; hd: "fd.hd"; he: "fd.he"; hf: "fd.hf"; hg: "fd.hg"; hh: "fd.hh"; hi: "fd.hi"; hj: "fd.hj"; hk: "fd.hk"; hl: "fd.hl"; hm: "fd.hm"; hn: "fd.hn"; ho: "fd.ho"; hp: "fd.hp"; hq: "fd.hq"; hr: "fd.hr"; hs: "fd.hs"; ht: "fd.ht"; hu: "fd.hu"; hv: "fd.hv"; hw: "fd.hw"; hx: "fd.hx"; hy: "fd.hy"; hz: "fd.hz"; ia: "fd.ia"; ib: "fd.ib"; ic: "fd.ic"; id: "fd.id"; ie: "fd.ie"; if: "fd.if"; ig: "fd.ig"; ih: "fd.ih"; ii: "fd.ii"; ij: "fd.ij"; ik: "fd.ik"; il: "fd.il"; im: "fd.im"; in: "fd.in"; io: "fd.io"; ip: "fd.ip"; iq: "fd.iq"; ir: "fd.ir"; is: "fd.is"; it: "fd.it"; iu: "fd.iu"; iv: "fd.iv"; iw: "fd.iw"; ix: "fd.ix"; iy: "fd.iy"; iz: "fd.iz"; ja: "fd.ja"; jb: "fd.jb"; jc: "fd.jc"; jd: "fd.jd"; je: "fd.je"; jf: "fd.jf"; jg: "fd.jg"; jh: "fd.jh"; ji: "fd.ji"; jj: "fd.jj"; jk: "fd.jk"; jl: "fd.jl"; jm: "fd.jm"; jn: "fd.jn"; jo: "fd.jo"; jp: "fd.jp"; jq: "fd.jq"; jr: "fd.jr"; js: "fd.js"; jt: "fd.jt"; ju: "fd.ju"; jv: "fd.jv"; jw: "fd.jw"; jx: "fd.jx"; jy: "fd.jy"; jz: "fd.jz"; ka: "fd.ka"; kb: "fd.kb"; kc: "fd.kc"; kd: "fd.kd"; ke: "fd.ke"; kf: "fd.kf"; kg: "fd.kg"; kh: "fd.kh"; ki: "fd.ki"; kj: "fd.kj"; kk: "fd.kk"; kl: "fd.kl"; km: "fd.km"; kn: "fd.kn"; ko: "fd.ko"; kp: "fd.kp"; kq: "fd.kq"; kr: "fd.kr"; ks: "fd.ks"; kt: "fd.kt"; ku: "fd.ku"; kv: "fd.kv"; kw: "fd.kw"; kx: "fd.kx"; ky: "fd.ky"; kz: "fd.kz"; la: "fd.la"; lb: "fd.lb"; lc: "fd.lc"; ld: "fd.ld"; le: "fd.le"; lf: "fd.lf"; lg: "fd.lg"; lh: "fd.lh"; li: "fd.li"; lj: "fd.lj"; lk: "fd.lk"; ll: "fd.ll"; lm: "fd.lm"; ln: "fd.ln"; lo: "fd.lo"; lp: "fd.lp"; lq: "fd.lq"; lr: "fd.lr"; ls: "fd.ls"; lt: "fd.lt"; lu: "fd.lu"; lv: "fd.lv"; lw: "fd.lw"; lx: "fd.lx"; ly: "fd.ly"; lz: "fd.lz"; ma: "fd.ma"; mb: "fd.mb"; mc: "fd.mc"; md: "fd.md"; me: "fd.me"; mf: "fd.mf"; mg: "fd.mg"; mh: "fd.mh"; mi: "fd.mi"; mj: "fd.mj"; mk: "fd.mk"; ml: "fd.ml"; mm: "fd.mm"; mn: "fd.mn"; mo: "fd.mo"; mp: "fd.mp"; mq: "fd.mq"; mr: "fd.mr"; ms: "fd.ms"; mt: "fd.mt"; mu: "fd.mu"; mv: "fd.mv"; mw: "fd.mw"; mx: "fd.mx"; my: "fd.my"; mz: "fd.mz"; na: "fd.na"; nb: "fd.nb"; nc: "fd.nc"; nd: "fd.nd"; ne: "fd.ne"; nf: "fd.nf"; ng: "fd.ng"; nh: "fd.nh"; ni: "fd.ni"; nj: "fd.nj"; nk: "fd.nk"; nl: "fd.nl"; nm: "fd.nm"; nn: "fd.nn"; no: "fd.no"; np: "fd.np"; nq: "fd.nq"; nr: "fd.nr"; ns: "fd.ns"; nt: "fd.nt"; nu: "fd.nu"; nv: "fd.nv"; nw: "fd.nw"; nx: "fd.nx"; ny: "fd.ny"; nz: "fd.nz"; oa: "fd.oa"; ob: "fd.ob"; oc: "fd.oc"; od: "fd.od"; oe: "fd.oe"; of: "fd.of"; og: "fd.og"; oh: "fd.oh"; oi: "fd.oi"; oj: "fd.oj"; ok: "fd.ok"; ol: "fd.ol"; om: "fd.om"; on: "fd.on"; oo: "fd.oo"; op: "fd.op"; oq: "fd.oq"; or: "fd.or"; os: "fd.os"; ot: "fd.ot"; ou: "fd.ou"; ov: "fd.ov"; ow: "fd.ow"; ox: "fd.ox"; oy: "fd.oy"; oz: "fd.oz"; pa: "fd.pa"; pb: "fd.pb"; pc: "fd.pc"; pd: "fd.pd"; pe: "fd.pe"; pf: "fd.pf"; pg: "fd.pg"; ph: "fd.ph"; pi: "fd.pi"; pj: "fd.pj"; pk: "fd.pk"; pl: "fd.pl"; pm: "fd.pm"; pn: "fd.pn"; po: "fd.po"; pp: "fd.pp"; pq: "fd.pq"; pr: "fd.pr"; ps: "fd.ps"; pt: "fd.pt"; pu: "fd.pu"; pv: "fd.pv"; pw: "fd.pw"; px: "fd.px"; py: "fd.py"; pz: "fd.pz"; qa: "fd.qa"; qb: "fd.qb"; qc: "fd.qc"; qd: "fd.qd"; qe: "fd.qe"; qf: "fd.qf"; qg: "fd.qg"; qh: "fd.qh"; qi: "fd.qi"; qj: "fd.qj"; qk: "fd.qk"; ql: "fd.ql"; qm: "fd.qm"; qn: "fd.qn"; qo: "fd.qo"; qp: "fd.qp"; qq: "fd.qq"; qr: "fd.qr"; qs: "fd.qs"; qt: "fd.qt"; qu: "fd.qu"; qv: "fd.qv"; qw: "fd.qw"; qx: "fd.qx"; qy: "fd.qy"; qz: "fd.qz"; ra: "fd.ra"; rb: "fd.rb"; rc: "fd.rc"; rd: "fd.rd"; re: "fd.re"; rf: "fd.rf"; rg: "fd.rg"; rh: "fd.rh"; ri: "fd.ri"; rj: "fd.rj"; rk: "fd.rk"; rl: "fd.rl"; rm: "fd.rm"; rn: "fd.rn"; ro: "fd.ro"; rp: "fd.rp"; rq: "fd.rq"; rr: "fd.rr"; rs: "fd.rs"; rt: "fd.rt"; ru: "fd.ru"; rv: "fd.rv"; rw: "fd.rw"; rx: "fd.rx"; ry: "fd.ry"; rz: "fd.rz"; sa: "fd.sa"; sb: "fd.sb"; sc: "fd.sc"; sd: "fd.sd"; se: "fd.se"; sf: "fd.sf"; sg: "fd.sg"; sh: "fd.sh"; si: "fd.si"; sj: "fd.sj"; sk: "fd.sk"; sl: "fd.sl"; sm: "fd.sm"; sn: "fd.sn"; so: "fd.so"; sp: "fd.sp"; sq: "fd.sq"; sr: "fd.sr"; ss: "fd.ss"; st: "fd.st"; su: "fd.su"; sv: "fd.sv"; sw: "fd.sw"; sx: "fd.sx"; sy: "fd.sy"; sz: "fd.sz"; ta: "fd.ta"; tb: "fd.tb"; tc: "fd.tc"; td: "fd.td"; te: "fd.te"; tf: "fd.tf"; tg: "fd.tg"; th: "fd.th"; ti: "fd.ti"; tj: "fd.tj"; tk: "fd.tk"; tl: "fd.tl"; tm: "fd.tm"; tn: "fd.tn"; to: "fd.to"; tp: "fd.tp"; tq: "fd.tq"; tr: "fd.tr"; ts: "fd.ts"; tt: "fd.tt"; tu: "fd.tu"; tv: "fd.tv"; tw: "fd.tw"; tx: "fd.tx"; ty: "fd.ty"; tz: "fd.tz"; ua: "fd.ua"; ub: "fd.ub"; uc: "fd.uc"; ud: "fd.ud"; ue: "fd.ue"; uf: "fd.uf"; ug: "fd.ug"; uh: "fd.uh"; ui: "fd.ui"; uj: "fd.uj"; uk: "fd.uk"; ul: "fd.ul"; um: "fd.um"; un: "fd.un"; uo: "fd.uo"; up: "fd.up"; uq: "fd.uq"; ur: "fd.ur"; us: "fd.us"; ut: "fd.ut"; uu: "fd.uu"; uv: "fd.uv"; uw: "fd.uw"; ux: "fd.ux"; uy: "fd.uy"; uz: "fd.uz"; va: "fd.va"; vb: "fd.vb"; vc: "fd.vc"; vd: "fd.vd"; ve: "fd.ve"; vf: "fd.vf"; vg: "fd.vg"; vh: "fd.vh"; vi: "fd.vi"; vj: "fd.vj"; vk: "fd.vk"; vl: "fd.vl"; vm: "fd.vm"; vn: "fd.vn"; vo: "fd.vo"; vp: "fd.vp"; vq: "fd.vq"; vr: "fd.vr"; vs: "fd.vs"; vt: "fd.vt"; vu: "fd.vu"; vv: "fd.vv"; vw: "fd.vw"; vx: "fd.vx"; vy: "fd.vy"; vz: "fd.vz"; wa: "fd.wa"; wb: "fd.wb"; wc: "fd.wc"; wd: "fd.wd"; we: "fd.we"; wf: "fd.wf"; wg: "fd.wg"; wh: "fd.wh"; wi: "fd.wi"; wj: "fd.wj"; wk: "fd.wk"; wl: "fd.wl"; wm: "fd.wm"; wn: "fd.wn"; wo: "fd.wo"; wp: "fd.wp"; wq: "fd.wq"; wr: "fd.wr"; ws: "fd.ws"; wt: "fd.wt"; wu: "fd.wu"; wv: "fd.wv"; ww: "fd.ww"; wx: "fd.wx"; wy: "fd.wy"; wz: "fd.wz"; xa: "fd.xa"; xb: "fd.xb"; xc: "fd.xc"; xd: "fd.xd"; xe: "fd.xe"; xf: "fd.xf"; xg: "fd.xg"; xh: "fd.xh"; xi: "fd.xi"; xj: "fd.xj"; xk: "fd.xk"; xl: "fd.xl"; xm: "fd.xm"; xn: "fd.xn"; xo: "fd.xo"; xp: "fd.xp"; xq: "fd.xq"; xr: "fd.xr"; xs: "fd.xs"; xt: "fd.xt"; xu: "fd.xu"; xv: "fd.xv"; xw: "fd.xw"; xx: "fd.xx"; xy: "fd.xy"; xz: "fd.xz"; ya: "fd.ya"; yb: "fd.yb"; yc: "fd.yc"; yd: "fd.yd"; ye: "fd.ye"; yf: "fd.yf"; yg: "fd.yg"; yh: "fd.yh"; yi: "fd.yi"; yj: "fd.yj"; yk: "fd.yk"; yl: "fd.yl"; ym: "fd.ym"; yn: "fd.yn"; yo: "fd.yo"; yp: "fd.yp"; yq: "fd.yq"; yr: "fd.yr"; ys: "fd.ys"; yt: "fd.yt"; yu: "fd.yu"; yv: "fd.yv"; yw: "fd.yw"; yx: "fd.yx"; yy: "fd.yy"; yz: "fd.yz"; za: "fd.za"; zb: "fd.zb"; zc: "fd.zc"; zd: "fd.zd"; ze: "fd.ze"; zf: "fd.zf"; zg: "fd.zg"; zh: "fd.zh"; zi: "fd.zi"; zj: "fd.zj"; zk: "fd.zk"; zl: "fd.zl"; zm: "fd.zm"; zn: "fd.zn"; zo: "fd.zo"; zp: "fd.zp"; zq: "fd.zq"; zr: "fd.zr"; zs: "fd.zs"; zt: "fd.zt"; zu: "fd.zu"; zv: "fd.zv"; zw: "fd.zw"; zx: "fd.zx"; zy: "fd.zy"; zz: "fd.zz"; }; fe: { aa: "fe.aa"; ab: "fe.ab"; ac: "fe.ac"; ad: "fe.ad"; ae: "fe.ae"; af: "fe.af"; ag: "fe.ag"; ah: "fe.ah"; ai: "fe.ai"; aj: "fe.aj"; ak: "fe.ak"; al: "fe.al"; am: "fe.am"; an: "fe.an"; ao: "fe.ao"; ap: "fe.ap"; aq: "fe.aq"; ar: "fe.ar"; as: "fe.as"; at: "fe.at"; au: "fe.au"; av: "fe.av"; aw: "fe.aw"; ax: "fe.ax"; ay: "fe.ay"; az: "fe.az"; ba: "fe.ba"; bb: "fe.bb"; bc: "fe.bc"; bd: "fe.bd"; be: "fe.be"; bf: "fe.bf"; bg: "fe.bg"; bh: "fe.bh"; bi: "fe.bi"; bj: "fe.bj"; bk: "fe.bk"; bl: "fe.bl"; bm: "fe.bm"; bn: "fe.bn"; bo: "fe.bo"; bp: "fe.bp"; bq: "fe.bq"; br: "fe.br"; bs: "fe.bs"; bt: "fe.bt"; bu: "fe.bu"; bv: "fe.bv"; bw: "fe.bw"; bx: "fe.bx"; by: "fe.by"; bz: "fe.bz"; ca: "fe.ca"; cb: "fe.cb"; cc: "fe.cc"; cd: "fe.cd"; ce: "fe.ce"; cf: "fe.cf"; cg: "fe.cg"; ch: "fe.ch"; ci: "fe.ci"; cj: "fe.cj"; ck: "fe.ck"; cl: "fe.cl"; cm: "fe.cm"; cn: "fe.cn"; co: "fe.co"; cp: "fe.cp"; cq: "fe.cq"; cr: "fe.cr"; cs: "fe.cs"; ct: "fe.ct"; cu: "fe.cu"; cv: "fe.cv"; cw: "fe.cw"; cx: "fe.cx"; cy: "fe.cy"; cz: "fe.cz"; da: "fe.da"; db: "fe.db"; dc: "fe.dc"; dd: "fe.dd"; de: "fe.de"; df: "fe.df"; dg: "fe.dg"; dh: "fe.dh"; di: "fe.di"; dj: "fe.dj"; dk: "fe.dk"; dl: "fe.dl"; dm: "fe.dm"; dn: "fe.dn"; do: "fe.do"; dp: "fe.dp"; dq: "fe.dq"; dr: "fe.dr"; ds: "fe.ds"; dt: "fe.dt"; du: "fe.du"; dv: "fe.dv"; dw: "fe.dw"; dx: "fe.dx"; dy: "fe.dy"; dz: "fe.dz"; ea: "fe.ea"; eb: "fe.eb"; ec: "fe.ec"; ed: "fe.ed"; ee: "fe.ee"; ef: "fe.ef"; eg: "fe.eg"; eh: "fe.eh"; ei: "fe.ei"; ej: "fe.ej"; ek: "fe.ek"; el: "fe.el"; em: "fe.em"; en: "fe.en"; eo: "fe.eo"; ep: "fe.ep"; eq: "fe.eq"; er: "fe.er"; es: "fe.es"; et: "fe.et"; eu: "fe.eu"; ev: "fe.ev"; ew: "fe.ew"; ex: "fe.ex"; ey: "fe.ey"; ez: "fe.ez"; fa: "fe.fa"; fb: "fe.fb"; fc: "fe.fc"; fd: "fe.fd"; fe: "fe.fe"; ff: "fe.ff"; fg: "fe.fg"; fh: "fe.fh"; fi: "fe.fi"; fj: "fe.fj"; fk: "fe.fk"; fl: "fe.fl"; fm: "fe.fm"; fn: "fe.fn"; fo: "fe.fo"; fp: "fe.fp"; fq: "fe.fq"; fr: "fe.fr"; fs: "fe.fs"; ft: "fe.ft"; fu: "fe.fu"; fv: "fe.fv"; fw: "fe.fw"; fx: "fe.fx"; fy: "fe.fy"; fz: "fe.fz"; ga: "fe.ga"; gb: "fe.gb"; gc: "fe.gc"; gd: "fe.gd"; ge: "fe.ge"; gf: "fe.gf"; gg: "fe.gg"; gh: "fe.gh"; gi: "fe.gi"; gj: "fe.gj"; gk: "fe.gk"; gl: "fe.gl"; gm: "fe.gm"; gn: "fe.gn"; go: "fe.go"; gp: "fe.gp"; gq: "fe.gq"; gr: "fe.gr"; gs: "fe.gs"; gt: "fe.gt"; gu: "fe.gu"; gv: "fe.gv"; gw: "fe.gw"; gx: "fe.gx"; gy: "fe.gy"; gz: "fe.gz"; ha: "fe.ha"; hb: "fe.hb"; hc: "fe.hc"; hd: "fe.hd"; he: "fe.he"; hf: "fe.hf"; hg: "fe.hg"; hh: "fe.hh"; hi: "fe.hi"; hj: "fe.hj"; hk: "fe.hk"; hl: "fe.hl"; hm: "fe.hm"; hn: "fe.hn"; ho: "fe.ho"; hp: "fe.hp"; hq: "fe.hq"; hr: "fe.hr"; hs: "fe.hs"; ht: "fe.ht"; hu: "fe.hu"; hv: "fe.hv"; hw: "fe.hw"; hx: "fe.hx"; hy: "fe.hy"; hz: "fe.hz"; ia: "fe.ia"; ib: "fe.ib"; ic: "fe.ic"; id: "fe.id"; ie: "fe.ie"; if: "fe.if"; ig: "fe.ig"; ih: "fe.ih"; ii: "fe.ii"; ij: "fe.ij"; ik: "fe.ik"; il: "fe.il"; im: "fe.im"; in: "fe.in"; io: "fe.io"; ip: "fe.ip"; iq: "fe.iq"; ir: "fe.ir"; is: "fe.is"; it: "fe.it"; iu: "fe.iu"; iv: "fe.iv"; iw: "fe.iw"; ix: "fe.ix"; iy: "fe.iy"; iz: "fe.iz"; ja: "fe.ja"; jb: "fe.jb"; jc: "fe.jc"; jd: "fe.jd"; je: "fe.je"; jf: "fe.jf"; jg: "fe.jg"; jh: "fe.jh"; ji: "fe.ji"; jj: "fe.jj"; jk: "fe.jk"; jl: "fe.jl"; jm: "fe.jm"; jn: "fe.jn"; jo: "fe.jo"; jp: "fe.jp"; jq: "fe.jq"; jr: "fe.jr"; js: "fe.js"; jt: "fe.jt"; ju: "fe.ju"; jv: "fe.jv"; jw: "fe.jw"; jx: "fe.jx"; jy: "fe.jy"; jz: "fe.jz"; ka: "fe.ka"; kb: "fe.kb"; kc: "fe.kc"; kd: "fe.kd"; ke: "fe.ke"; kf: "fe.kf"; kg: "fe.kg"; kh: "fe.kh"; ki: "fe.ki"; kj: "fe.kj"; kk: "fe.kk"; kl: "fe.kl"; km: "fe.km"; kn: "fe.kn"; ko: "fe.ko"; kp: "fe.kp"; kq: "fe.kq"; kr: "fe.kr"; ks: "fe.ks"; kt: "fe.kt"; ku: "fe.ku"; kv: "fe.kv"; kw: "fe.kw"; kx: "fe.kx"; ky: "fe.ky"; kz: "fe.kz"; la: "fe.la"; lb: "fe.lb"; lc: "fe.lc"; ld: "fe.ld"; le: "fe.le"; lf: "fe.lf"; lg: "fe.lg"; lh: "fe.lh"; li: "fe.li"; lj: "fe.lj"; lk: "fe.lk"; ll: "fe.ll"; lm: "fe.lm"; ln: "fe.ln"; lo: "fe.lo"; lp: "fe.lp"; lq: "fe.lq"; lr: "fe.lr"; ls: "fe.ls"; lt: "fe.lt"; lu: "fe.lu"; lv: "fe.lv"; lw: "fe.lw"; lx: "fe.lx"; ly: "fe.ly"; lz: "fe.lz"; ma: "fe.ma"; mb: "fe.mb"; mc: "fe.mc"; md: "fe.md"; me: "fe.me"; mf: "fe.mf"; mg: "fe.mg"; mh: "fe.mh"; mi: "fe.mi"; mj: "fe.mj"; mk: "fe.mk"; ml: "fe.ml"; mm: "fe.mm"; mn: "fe.mn"; mo: "fe.mo"; mp: "fe.mp"; mq: "fe.mq"; mr: "fe.mr"; ms: "fe.ms"; mt: "fe.mt"; mu: "fe.mu"; mv: "fe.mv"; mw: "fe.mw"; mx: "fe.mx"; my: "fe.my"; mz: "fe.mz"; na: "fe.na"; nb: "fe.nb"; nc: "fe.nc"; nd: "fe.nd"; ne: "fe.ne"; nf: "fe.nf"; ng: "fe.ng"; nh: "fe.nh"; ni: "fe.ni"; nj: "fe.nj"; nk: "fe.nk"; nl: "fe.nl"; nm: "fe.nm"; nn: "fe.nn"; no: "fe.no"; np: "fe.np"; nq: "fe.nq"; nr: "fe.nr"; ns: "fe.ns"; nt: "fe.nt"; nu: "fe.nu"; nv: "fe.nv"; nw: "fe.nw"; nx: "fe.nx"; ny: "fe.ny"; nz: "fe.nz"; oa: "fe.oa"; ob: "fe.ob"; oc: "fe.oc"; od: "fe.od"; oe: "fe.oe"; of: "fe.of"; og: "fe.og"; oh: "fe.oh"; oi: "fe.oi"; oj: "fe.oj"; ok: "fe.ok"; ol: "fe.ol"; om: "fe.om"; on: "fe.on"; oo: "fe.oo"; op: "fe.op"; oq: "fe.oq"; or: "fe.or"; os: "fe.os"; ot: "fe.ot"; ou: "fe.ou"; ov: "fe.ov"; ow: "fe.ow"; ox: "fe.ox"; oy: "fe.oy"; oz: "fe.oz"; pa: "fe.pa"; pb: "fe.pb"; pc: "fe.pc"; pd: "fe.pd"; pe: "fe.pe"; pf: "fe.pf"; pg: "fe.pg"; ph: "fe.ph"; pi: "fe.pi"; pj: "fe.pj"; pk: "fe.pk"; pl: "fe.pl"; pm: "fe.pm"; pn: "fe.pn"; po: "fe.po"; pp: "fe.pp"; pq: "fe.pq"; pr: "fe.pr"; ps: "fe.ps"; pt: "fe.pt"; pu: "fe.pu"; pv: "fe.pv"; pw: "fe.pw"; px: "fe.px"; py: "fe.py"; pz: "fe.pz"; qa: "fe.qa"; qb: "fe.qb"; qc: "fe.qc"; qd: "fe.qd"; qe: "fe.qe"; qf: "fe.qf"; qg: "fe.qg"; qh: "fe.qh"; qi: "fe.qi"; qj: "fe.qj"; qk: "fe.qk"; ql: "fe.ql"; qm: "fe.qm"; qn: "fe.qn"; qo: "fe.qo"; qp: "fe.qp"; qq: "fe.qq"; qr: "fe.qr"; qs: "fe.qs"; qt: "fe.qt"; qu: "fe.qu"; qv: "fe.qv"; qw: "fe.qw"; qx: "fe.qx"; qy: "fe.qy"; qz: "fe.qz"; ra: "fe.ra"; rb: "fe.rb"; rc: "fe.rc"; rd: "fe.rd"; re: "fe.re"; rf: "fe.rf"; rg: "fe.rg"; rh: "fe.rh"; ri: "fe.ri"; rj: "fe.rj"; rk: "fe.rk"; rl: "fe.rl"; rm: "fe.rm"; rn: "fe.rn"; ro: "fe.ro"; rp: "fe.rp"; rq: "fe.rq"; rr: "fe.rr"; rs: "fe.rs"; rt: "fe.rt"; ru: "fe.ru"; rv: "fe.rv"; rw: "fe.rw"; rx: "fe.rx"; ry: "fe.ry"; rz: "fe.rz"; sa: "fe.sa"; sb: "fe.sb"; sc: "fe.sc"; sd: "fe.sd"; se: "fe.se"; sf: "fe.sf"; sg: "fe.sg"; sh: "fe.sh"; si: "fe.si"; sj: "fe.sj"; sk: "fe.sk"; sl: "fe.sl"; sm: "fe.sm"; sn: "fe.sn"; so: "fe.so"; sp: "fe.sp"; sq: "fe.sq"; sr: "fe.sr"; ss: "fe.ss"; st: "fe.st"; su: "fe.su"; sv: "fe.sv"; sw: "fe.sw"; sx: "fe.sx"; sy: "fe.sy"; sz: "fe.sz"; ta: "fe.ta"; tb: "fe.tb"; tc: "fe.tc"; td: "fe.td"; te: "fe.te"; tf: "fe.tf"; tg: "fe.tg"; th: "fe.th"; ti: "fe.ti"; tj: "fe.tj"; tk: "fe.tk"; tl: "fe.tl"; tm: "fe.tm"; tn: "fe.tn"; to: "fe.to"; tp: "fe.tp"; tq: "fe.tq"; tr: "fe.tr"; ts: "fe.ts"; tt: "fe.tt"; tu: "fe.tu"; tv: "fe.tv"; tw: "fe.tw"; tx: "fe.tx"; ty: "fe.ty"; tz: "fe.tz"; ua: "fe.ua"; ub: "fe.ub"; uc: "fe.uc"; ud: "fe.ud"; ue: "fe.ue"; uf: "fe.uf"; ug: "fe.ug"; uh: "fe.uh"; ui: "fe.ui"; uj: "fe.uj"; uk: "fe.uk"; ul: "fe.ul"; um: "fe.um"; un: "fe.un"; uo: "fe.uo"; up: "fe.up"; uq: "fe.uq"; ur: "fe.ur"; us: "fe.us"; ut: "fe.ut"; uu: "fe.uu"; uv: "fe.uv"; uw: "fe.uw"; ux: "fe.ux"; uy: "fe.uy"; uz: "fe.uz"; va: "fe.va"; vb: "fe.vb"; vc: "fe.vc"; vd: "fe.vd"; ve: "fe.ve"; vf: "fe.vf"; vg: "fe.vg"; vh: "fe.vh"; vi: "fe.vi"; vj: "fe.vj"; vk: "fe.vk"; vl: "fe.vl"; vm: "fe.vm"; vn: "fe.vn"; vo: "fe.vo"; vp: "fe.vp"; vq: "fe.vq"; vr: "fe.vr"; vs: "fe.vs"; vt: "fe.vt"; vu: "fe.vu"; vv: "fe.vv"; vw: "fe.vw"; vx: "fe.vx"; vy: "fe.vy"; vz: "fe.vz"; wa: "fe.wa"; wb: "fe.wb"; wc: "fe.wc"; wd: "fe.wd"; we: "fe.we"; wf: "fe.wf"; wg: "fe.wg"; wh: "fe.wh"; wi: "fe.wi"; wj: "fe.wj"; wk: "fe.wk"; wl: "fe.wl"; wm: "fe.wm"; wn: "fe.wn"; wo: "fe.wo"; wp: "fe.wp"; wq: "fe.wq"; wr: "fe.wr"; ws: "fe.ws"; wt: "fe.wt"; wu: "fe.wu"; wv: "fe.wv"; ww: "fe.ww"; wx: "fe.wx"; wy: "fe.wy"; wz: "fe.wz"; xa: "fe.xa"; xb: "fe.xb"; xc: "fe.xc"; xd: "fe.xd"; xe: "fe.xe"; xf: "fe.xf"; xg: "fe.xg"; xh: "fe.xh"; xi: "fe.xi"; xj: "fe.xj"; xk: "fe.xk"; xl: "fe.xl"; xm: "fe.xm"; xn: "fe.xn"; xo: "fe.xo"; xp: "fe.xp"; xq: "fe.xq"; xr: "fe.xr"; xs: "fe.xs"; xt: "fe.xt"; xu: "fe.xu"; xv: "fe.xv"; xw: "fe.xw"; xx: "fe.xx"; xy: "fe.xy"; xz: "fe.xz"; ya: "fe.ya"; yb: "fe.yb"; yc: "fe.yc"; yd: "fe.yd"; ye: "fe.ye"; yf: "fe.yf"; yg: "fe.yg"; yh: "fe.yh"; yi: "fe.yi"; yj: "fe.yj"; yk: "fe.yk"; yl: "fe.yl"; ym: "fe.ym"; yn: "fe.yn"; yo: "fe.yo"; yp: "fe.yp"; yq: "fe.yq"; yr: "fe.yr"; ys: "fe.ys"; yt: "fe.yt"; yu: "fe.yu"; yv: "fe.yv"; yw: "fe.yw"; yx: "fe.yx"; yy: "fe.yy"; yz: "fe.yz"; za: "fe.za"; zb: "fe.zb"; zc: "fe.zc"; zd: "fe.zd"; ze: "fe.ze"; zf: "fe.zf"; zg: "fe.zg"; zh: "fe.zh"; zi: "fe.zi"; zj: "fe.zj"; zk: "fe.zk"; zl: "fe.zl"; zm: "fe.zm"; zn: "fe.zn"; zo: "fe.zo"; zp: "fe.zp"; zq: "fe.zq"; zr: "fe.zr"; zs: "fe.zs"; zt: "fe.zt"; zu: "fe.zu"; zv: "fe.zv"; zw: "fe.zw"; zx: "fe.zx"; zy: "fe.zy"; zz: "fe.zz"; }; ff: { aa: "ff.aa"; ab: "ff.ab"; ac: "ff.ac"; ad: "ff.ad"; ae: "ff.ae"; af: "ff.af"; ag: "ff.ag"; ah: "ff.ah"; ai: "ff.ai"; aj: "ff.aj"; ak: "ff.ak"; al: "ff.al"; am: "ff.am"; an: "ff.an"; ao: "ff.ao"; ap: "ff.ap"; aq: "ff.aq"; ar: "ff.ar"; as: "ff.as"; at: "ff.at"; au: "ff.au"; av: "ff.av"; aw: "ff.aw"; ax: "ff.ax"; ay: "ff.ay"; az: "ff.az"; ba: "ff.ba"; bb: "ff.bb"; bc: "ff.bc"; bd: "ff.bd"; be: "ff.be"; bf: "ff.bf"; bg: "ff.bg"; bh: "ff.bh"; bi: "ff.bi"; bj: "ff.bj"; bk: "ff.bk"; bl: "ff.bl"; bm: "ff.bm"; bn: "ff.bn"; bo: "ff.bo"; bp: "ff.bp"; bq: "ff.bq"; br: "ff.br"; bs: "ff.bs"; bt: "ff.bt"; bu: "ff.bu"; bv: "ff.bv"; bw: "ff.bw"; bx: "ff.bx"; by: "ff.by"; bz: "ff.bz"; ca: "ff.ca"; cb: "ff.cb"; cc: "ff.cc"; cd: "ff.cd"; ce: "ff.ce"; cf: "ff.cf"; cg: "ff.cg"; ch: "ff.ch"; ci: "ff.ci"; cj: "ff.cj"; ck: "ff.ck"; cl: "ff.cl"; cm: "ff.cm"; cn: "ff.cn"; co: "ff.co"; cp: "ff.cp"; cq: "ff.cq"; cr: "ff.cr"; cs: "ff.cs"; ct: "ff.ct"; cu: "ff.cu"; cv: "ff.cv"; cw: "ff.cw"; cx: "ff.cx"; cy: "ff.cy"; cz: "ff.cz"; da: "ff.da"; db: "ff.db"; dc: "ff.dc"; dd: "ff.dd"; de: "ff.de"; df: "ff.df"; dg: "ff.dg"; dh: "ff.dh"; di: "ff.di"; dj: "ff.dj"; dk: "ff.dk"; dl: "ff.dl"; dm: "ff.dm"; dn: "ff.dn"; do: "ff.do"; dp: "ff.dp"; dq: "ff.dq"; dr: "ff.dr"; ds: "ff.ds"; dt: "ff.dt"; du: "ff.du"; dv: "ff.dv"; dw: "ff.dw"; dx: "ff.dx"; dy: "ff.dy"; dz: "ff.dz"; ea: "ff.ea"; eb: "ff.eb"; ec: "ff.ec"; ed: "ff.ed"; ee: "ff.ee"; ef: "ff.ef"; eg: "ff.eg"; eh: "ff.eh"; ei: "ff.ei"; ej: "ff.ej"; ek: "ff.ek"; el: "ff.el"; em: "ff.em"; en: "ff.en"; eo: "ff.eo"; ep: "ff.ep"; eq: "ff.eq"; er: "ff.er"; es: "ff.es"; et: "ff.et"; eu: "ff.eu"; ev: "ff.ev"; ew: "ff.ew"; ex: "ff.ex"; ey: "ff.ey"; ez: "ff.ez"; fa: "ff.fa"; fb: "ff.fb"; fc: "ff.fc"; fd: "ff.fd"; fe: "ff.fe"; ff: "ff.ff"; fg: "ff.fg"; fh: "ff.fh"; fi: "ff.fi"; fj: "ff.fj"; fk: "ff.fk"; fl: "ff.fl"; fm: "ff.fm"; fn: "ff.fn"; fo: "ff.fo"; fp: "ff.fp"; fq: "ff.fq"; fr: "ff.fr"; fs: "ff.fs"; ft: "ff.ft"; fu: "ff.fu"; fv: "ff.fv"; fw: "ff.fw"; fx: "ff.fx"; fy: "ff.fy"; fz: "ff.fz"; ga: "ff.ga"; gb: "ff.gb"; gc: "ff.gc"; gd: "ff.gd"; ge: "ff.ge"; gf: "ff.gf"; gg: "ff.gg"; gh: "ff.gh"; gi: "ff.gi"; gj: "ff.gj"; gk: "ff.gk"; gl: "ff.gl"; gm: "ff.gm"; gn: "ff.gn"; go: "ff.go"; gp: "ff.gp"; gq: "ff.gq"; gr: "ff.gr"; gs: "ff.gs"; gt: "ff.gt"; gu: "ff.gu"; gv: "ff.gv"; gw: "ff.gw"; gx: "ff.gx"; gy: "ff.gy"; gz: "ff.gz"; ha: "ff.ha"; hb: "ff.hb"; hc: "ff.hc"; hd: "ff.hd"; he: "ff.he"; hf: "ff.hf"; hg: "ff.hg"; hh: "ff.hh"; hi: "ff.hi"; hj: "ff.hj"; hk: "ff.hk"; hl: "ff.hl"; hm: "ff.hm"; hn: "ff.hn"; ho: "ff.ho"; hp: "ff.hp"; hq: "ff.hq"; hr: "ff.hr"; hs: "ff.hs"; ht: "ff.ht"; hu: "ff.hu"; hv: "ff.hv"; hw: "ff.hw"; hx: "ff.hx"; hy: "ff.hy"; hz: "ff.hz"; ia: "ff.ia"; ib: "ff.ib"; ic: "ff.ic"; id: "ff.id"; ie: "ff.ie"; if: "ff.if"; ig: "ff.ig"; ih: "ff.ih"; ii: "ff.ii"; ij: "ff.ij"; ik: "ff.ik"; il: "ff.il"; im: "ff.im"; in: "ff.in"; io: "ff.io"; ip: "ff.ip"; iq: "ff.iq"; ir: "ff.ir"; is: "ff.is"; it: "ff.it"; iu: "ff.iu"; iv: "ff.iv"; iw: "ff.iw"; ix: "ff.ix"; iy: "ff.iy"; iz: "ff.iz"; ja: "ff.ja"; jb: "ff.jb"; jc: "ff.jc"; jd: "ff.jd"; je: "ff.je"; jf: "ff.jf"; jg: "ff.jg"; jh: "ff.jh"; ji: "ff.ji"; jj: "ff.jj"; jk: "ff.jk"; jl: "ff.jl"; jm: "ff.jm"; jn: "ff.jn"; jo: "ff.jo"; jp: "ff.jp"; jq: "ff.jq"; jr: "ff.jr"; js: "ff.js"; jt: "ff.jt"; ju: "ff.ju"; jv: "ff.jv"; jw: "ff.jw"; jx: "ff.jx"; jy: "ff.jy"; jz: "ff.jz"; ka: "ff.ka"; kb: "ff.kb"; kc: "ff.kc"; kd: "ff.kd"; ke: "ff.ke"; kf: "ff.kf"; kg: "ff.kg"; kh: "ff.kh"; ki: "ff.ki"; kj: "ff.kj"; kk: "ff.kk"; kl: "ff.kl"; km: "ff.km"; kn: "ff.kn"; ko: "ff.ko"; kp: "ff.kp"; kq: "ff.kq"; kr: "ff.kr"; ks: "ff.ks"; kt: "ff.kt"; ku: "ff.ku"; kv: "ff.kv"; kw: "ff.kw"; kx: "ff.kx"; ky: "ff.ky"; kz: "ff.kz"; la: "ff.la"; lb: "ff.lb"; lc: "ff.lc"; ld: "ff.ld"; le: "ff.le"; lf: "ff.lf"; lg: "ff.lg"; lh: "ff.lh"; li: "ff.li"; lj: "ff.lj"; lk: "ff.lk"; ll: "ff.ll"; lm: "ff.lm"; ln: "ff.ln"; lo: "ff.lo"; lp: "ff.lp"; lq: "ff.lq"; lr: "ff.lr"; ls: "ff.ls"; lt: "ff.lt"; lu: "ff.lu"; lv: "ff.lv"; lw: "ff.lw"; lx: "ff.lx"; ly: "ff.ly"; lz: "ff.lz"; ma: "ff.ma"; mb: "ff.mb"; mc: "ff.mc"; md: "ff.md"; me: "ff.me"; mf: "ff.mf"; mg: "ff.mg"; mh: "ff.mh"; mi: "ff.mi"; mj: "ff.mj"; mk: "ff.mk"; ml: "ff.ml"; mm: "ff.mm"; mn: "ff.mn"; mo: "ff.mo"; mp: "ff.mp"; mq: "ff.mq"; mr: "ff.mr"; ms: "ff.ms"; mt: "ff.mt"; mu: "ff.mu"; mv: "ff.mv"; mw: "ff.mw"; mx: "ff.mx"; my: "ff.my"; mz: "ff.mz"; na: "ff.na"; nb: "ff.nb"; nc: "ff.nc"; nd: "ff.nd"; ne: "ff.ne"; nf: "ff.nf"; ng: "ff.ng"; nh: "ff.nh"; ni: "ff.ni"; nj: "ff.nj"; nk: "ff.nk"; nl: "ff.nl"; nm: "ff.nm"; nn: "ff.nn"; no: "ff.no"; np: "ff.np"; nq: "ff.nq"; nr: "ff.nr"; ns: "ff.ns"; nt: "ff.nt"; nu: "ff.nu"; nv: "ff.nv"; nw: "ff.nw"; nx: "ff.nx"; ny: "ff.ny"; nz: "ff.nz"; oa: "ff.oa"; ob: "ff.ob"; oc: "ff.oc"; od: "ff.od"; oe: "ff.oe"; of: "ff.of"; og: "ff.og"; oh: "ff.oh"; oi: "ff.oi"; oj: "ff.oj"; ok: "ff.ok"; ol: "ff.ol"; om: "ff.om"; on: "ff.on"; oo: "ff.oo"; op: "ff.op"; oq: "ff.oq"; or: "ff.or"; os: "ff.os"; ot: "ff.ot"; ou: "ff.ou"; ov: "ff.ov"; ow: "ff.ow"; ox: "ff.ox"; oy: "ff.oy"; oz: "ff.oz"; pa: "ff.pa"; pb: "ff.pb"; pc: "ff.pc"; pd: "ff.pd"; pe: "ff.pe"; pf: "ff.pf"; pg: "ff.pg"; ph: "ff.ph"; pi: "ff.pi"; pj: "ff.pj"; pk: "ff.pk"; pl: "ff.pl"; pm: "ff.pm"; pn: "ff.pn"; po: "ff.po"; pp: "ff.pp"; pq: "ff.pq"; pr: "ff.pr"; ps: "ff.ps"; pt: "ff.pt"; pu: "ff.pu"; pv: "ff.pv"; pw: "ff.pw"; px: "ff.px"; py: "ff.py"; pz: "ff.pz"; qa: "ff.qa"; qb: "ff.qb"; qc: "ff.qc"; qd: "ff.qd"; qe: "ff.qe"; qf: "ff.qf"; qg: "ff.qg"; qh: "ff.qh"; qi: "ff.qi"; qj: "ff.qj"; qk: "ff.qk"; ql: "ff.ql"; qm: "ff.qm"; qn: "ff.qn"; qo: "ff.qo"; qp: "ff.qp"; qq: "ff.qq"; qr: "ff.qr"; qs: "ff.qs"; qt: "ff.qt"; qu: "ff.qu"; qv: "ff.qv"; qw: "ff.qw"; qx: "ff.qx"; qy: "ff.qy"; qz: "ff.qz"; ra: "ff.ra"; rb: "ff.rb"; rc: "ff.rc"; rd: "ff.rd"; re: "ff.re"; rf: "ff.rf"; rg: "ff.rg"; rh: "ff.rh"; ri: "ff.ri"; rj: "ff.rj"; rk: "ff.rk"; rl: "ff.rl"; rm: "ff.rm"; rn: "ff.rn"; ro: "ff.ro"; rp: "ff.rp"; rq: "ff.rq"; rr: "ff.rr"; rs: "ff.rs"; rt: "ff.rt"; ru: "ff.ru"; rv: "ff.rv"; rw: "ff.rw"; rx: "ff.rx"; ry: "ff.ry"; rz: "ff.rz"; sa: "ff.sa"; sb: "ff.sb"; sc: "ff.sc"; sd: "ff.sd"; se: "ff.se"; sf: "ff.sf"; sg: "ff.sg"; sh: "ff.sh"; si: "ff.si"; sj: "ff.sj"; sk: "ff.sk"; sl: "ff.sl"; sm: "ff.sm"; sn: "ff.sn"; so: "ff.so"; sp: "ff.sp"; sq: "ff.sq"; sr: "ff.sr"; ss: "ff.ss"; st: "ff.st"; su: "ff.su"; sv: "ff.sv"; sw: "ff.sw"; sx: "ff.sx"; sy: "ff.sy"; sz: "ff.sz"; ta: "ff.ta"; tb: "ff.tb"; tc: "ff.tc"; td: "ff.td"; te: "ff.te"; tf: "ff.tf"; tg: "ff.tg"; th: "ff.th"; ti: "ff.ti"; tj: "ff.tj"; tk: "ff.tk"; tl: "ff.tl"; tm: "ff.tm"; tn: "ff.tn"; to: "ff.to"; tp: "ff.tp"; tq: "ff.tq"; tr: "ff.tr"; ts: "ff.ts"; tt: "ff.tt"; tu: "ff.tu"; tv: "ff.tv"; tw: "ff.tw"; tx: "ff.tx"; ty: "ff.ty"; tz: "ff.tz"; ua: "ff.ua"; ub: "ff.ub"; uc: "ff.uc"; ud: "ff.ud"; ue: "ff.ue"; uf: "ff.uf"; ug: "ff.ug"; uh: "ff.uh"; ui: "ff.ui"; uj: "ff.uj"; uk: "ff.uk"; ul: "ff.ul"; um: "ff.um"; un: "ff.un"; uo: "ff.uo"; up: "ff.up"; uq: "ff.uq"; ur: "ff.ur"; us: "ff.us"; ut: "ff.ut"; uu: "ff.uu"; uv: "ff.uv"; uw: "ff.uw"; ux: "ff.ux"; uy: "ff.uy"; uz: "ff.uz"; va: "ff.va"; vb: "ff.vb"; vc: "ff.vc"; vd: "ff.vd"; ve: "ff.ve"; vf: "ff.vf"; vg: "ff.vg"; vh: "ff.vh"; vi: "ff.vi"; vj: "ff.vj"; vk: "ff.vk"; vl: "ff.vl"; vm: "ff.vm"; vn: "ff.vn"; vo: "ff.vo"; vp: "ff.vp"; vq: "ff.vq"; vr: "ff.vr"; vs: "ff.vs"; vt: "ff.vt"; vu: "ff.vu"; vv: "ff.vv"; vw: "ff.vw"; vx: "ff.vx"; vy: "ff.vy"; vz: "ff.vz"; wa: "ff.wa"; wb: "ff.wb"; wc: "ff.wc"; wd: "ff.wd"; we: "ff.we"; wf: "ff.wf"; wg: "ff.wg"; wh: "ff.wh"; wi: "ff.wi"; wj: "ff.wj"; wk: "ff.wk"; wl: "ff.wl"; wm: "ff.wm"; wn: "ff.wn"; wo: "ff.wo"; wp: "ff.wp"; wq: "ff.wq"; wr: "ff.wr"; ws: "ff.ws"; wt: "ff.wt"; wu: "ff.wu"; wv: "ff.wv"; ww: "ff.ww"; wx: "ff.wx"; wy: "ff.wy"; wz: "ff.wz"; xa: "ff.xa"; xb: "ff.xb"; xc: "ff.xc"; xd: "ff.xd"; xe: "ff.xe"; xf: "ff.xf"; xg: "ff.xg"; xh: "ff.xh"; xi: "ff.xi"; xj: "ff.xj"; xk: "ff.xk"; xl: "ff.xl"; xm: "ff.xm"; xn: "ff.xn"; xo: "ff.xo"; xp: "ff.xp"; xq: "ff.xq"; xr: "ff.xr"; xs: "ff.xs"; xt: "ff.xt"; xu: "ff.xu"; xv: "ff.xv"; xw: "ff.xw"; xx: "ff.xx"; xy: "ff.xy"; xz: "ff.xz"; ya: "ff.ya"; yb: "ff.yb"; yc: "ff.yc"; yd: "ff.yd"; ye: "ff.ye"; yf: "ff.yf"; yg: "ff.yg"; yh: "ff.yh"; yi: "ff.yi"; yj: "ff.yj"; yk: "ff.yk"; yl: "ff.yl"; ym: "ff.ym"; yn: "ff.yn"; yo: "ff.yo"; yp: "ff.yp"; yq: "ff.yq"; yr: "ff.yr"; ys: "ff.ys"; yt: "ff.yt"; yu: "ff.yu"; yv: "ff.yv"; yw: "ff.yw"; yx: "ff.yx"; yy: "ff.yy"; yz: "ff.yz"; za: "ff.za"; zb: "ff.zb"; zc: "ff.zc"; zd: "ff.zd"; ze: "ff.ze"; zf: "ff.zf"; zg: "ff.zg"; zh: "ff.zh"; zi: "ff.zi"; zj: "ff.zj"; zk: "ff.zk"; zl: "ff.zl"; zm: "ff.zm"; zn: "ff.zn"; zo: "ff.zo"; zp: "ff.zp"; zq: "ff.zq"; zr: "ff.zr"; zs: "ff.zs"; zt: "ff.zt"; zu: "ff.zu"; zv: "ff.zv"; zw: "ff.zw"; zx: "ff.zx"; zy: "ff.zy"; zz: "ff.zz"; }; fg: { aa: "fg.aa"; ab: "fg.ab"; ac: "fg.ac"; ad: "fg.ad"; ae: "fg.ae"; af: "fg.af"; ag: "fg.ag"; ah: "fg.ah"; ai: "fg.ai"; aj: "fg.aj"; ak: "fg.ak"; al: "fg.al"; am: "fg.am"; an: "fg.an"; ao: "fg.ao"; ap: "fg.ap"; aq: "fg.aq"; ar: "fg.ar"; as: "fg.as"; at: "fg.at"; au: "fg.au"; av: "fg.av"; aw: "fg.aw"; ax: "fg.ax"; ay: "fg.ay"; az: "fg.az"; ba: "fg.ba"; bb: "fg.bb"; bc: "fg.bc"; bd: "fg.bd"; be: "fg.be"; bf: "fg.bf"; bg: "fg.bg"; bh: "fg.bh"; bi: "fg.bi"; bj: "fg.bj"; bk: "fg.bk"; bl: "fg.bl"; bm: "fg.bm"; bn: "fg.bn"; bo: "fg.bo"; bp: "fg.bp"; bq: "fg.bq"; br: "fg.br"; bs: "fg.bs"; bt: "fg.bt"; bu: "fg.bu"; bv: "fg.bv"; bw: "fg.bw"; bx: "fg.bx"; by: "fg.by"; bz: "fg.bz"; ca: "fg.ca"; cb: "fg.cb"; cc: "fg.cc"; cd: "fg.cd"; ce: "fg.ce"; cf: "fg.cf"; cg: "fg.cg"; ch: "fg.ch"; ci: "fg.ci"; cj: "fg.cj"; ck: "fg.ck"; cl: "fg.cl"; cm: "fg.cm"; cn: "fg.cn"; co: "fg.co"; cp: "fg.cp"; cq: "fg.cq"; cr: "fg.cr"; cs: "fg.cs"; ct: "fg.ct"; cu: "fg.cu"; cv: "fg.cv"; cw: "fg.cw"; cx: "fg.cx"; cy: "fg.cy"; cz: "fg.cz"; da: "fg.da"; db: "fg.db"; dc: "fg.dc"; dd: "fg.dd"; de: "fg.de"; df: "fg.df"; dg: "fg.dg"; dh: "fg.dh"; di: "fg.di"; dj: "fg.dj"; dk: "fg.dk"; dl: "fg.dl"; dm: "fg.dm"; dn: "fg.dn"; do: "fg.do"; dp: "fg.dp"; dq: "fg.dq"; dr: "fg.dr"; ds: "fg.ds"; dt: "fg.dt"; du: "fg.du"; dv: "fg.dv"; dw: "fg.dw"; dx: "fg.dx"; dy: "fg.dy"; dz: "fg.dz"; ea: "fg.ea"; eb: "fg.eb"; ec: "fg.ec"; ed: "fg.ed"; ee: "fg.ee"; ef: "fg.ef"; eg: "fg.eg"; eh: "fg.eh"; ei: "fg.ei"; ej: "fg.ej"; ek: "fg.ek"; el: "fg.el"; em: "fg.em"; en: "fg.en"; eo: "fg.eo"; ep: "fg.ep"; eq: "fg.eq"; er: "fg.er"; es: "fg.es"; et: "fg.et"; eu: "fg.eu"; ev: "fg.ev"; ew: "fg.ew"; ex: "fg.ex"; ey: "fg.ey"; ez: "fg.ez"; fa: "fg.fa"; fb: "fg.fb"; fc: "fg.fc"; fd: "fg.fd"; fe: "fg.fe"; ff: "fg.ff"; fg: "fg.fg"; fh: "fg.fh"; fi: "fg.fi"; fj: "fg.fj"; fk: "fg.fk"; fl: "fg.fl"; fm: "fg.fm"; fn: "fg.fn"; fo: "fg.fo"; fp: "fg.fp"; fq: "fg.fq"; fr: "fg.fr"; fs: "fg.fs"; ft: "fg.ft"; fu: "fg.fu"; fv: "fg.fv"; fw: "fg.fw"; fx: "fg.fx"; fy: "fg.fy"; fz: "fg.fz"; ga: "fg.ga"; gb: "fg.gb"; gc: "fg.gc"; gd: "fg.gd"; ge: "fg.ge"; gf: "fg.gf"; gg: "fg.gg"; gh: "fg.gh"; gi: "fg.gi"; gj: "fg.gj"; gk: "fg.gk"; gl: "fg.gl"; gm: "fg.gm"; gn: "fg.gn"; go: "fg.go"; gp: "fg.gp"; gq: "fg.gq"; gr: "fg.gr"; gs: "fg.gs"; gt: "fg.gt"; gu: "fg.gu"; gv: "fg.gv"; gw: "fg.gw"; gx: "fg.gx"; gy: "fg.gy"; gz: "fg.gz"; ha: "fg.ha"; hb: "fg.hb"; hc: "fg.hc"; hd: "fg.hd"; he: "fg.he"; hf: "fg.hf"; hg: "fg.hg"; hh: "fg.hh"; hi: "fg.hi"; hj: "fg.hj"; hk: "fg.hk"; hl: "fg.hl"; hm: "fg.hm"; hn: "fg.hn"; ho: "fg.ho"; hp: "fg.hp"; hq: "fg.hq"; hr: "fg.hr"; hs: "fg.hs"; ht: "fg.ht"; hu: "fg.hu"; hv: "fg.hv"; hw: "fg.hw"; hx: "fg.hx"; hy: "fg.hy"; hz: "fg.hz"; ia: "fg.ia"; ib: "fg.ib"; ic: "fg.ic"; id: "fg.id"; ie: "fg.ie"; if: "fg.if"; ig: "fg.ig"; ih: "fg.ih"; ii: "fg.ii"; ij: "fg.ij"; ik: "fg.ik"; il: "fg.il"; im: "fg.im"; in: "fg.in"; io: "fg.io"; ip: "fg.ip"; iq: "fg.iq"; ir: "fg.ir"; is: "fg.is"; it: "fg.it"; iu: "fg.iu"; iv: "fg.iv"; iw: "fg.iw"; ix: "fg.ix"; iy: "fg.iy"; iz: "fg.iz"; ja: "fg.ja"; jb: "fg.jb"; jc: "fg.jc"; jd: "fg.jd"; je: "fg.je"; jf: "fg.jf"; jg: "fg.jg"; jh: "fg.jh"; ji: "fg.ji"; jj: "fg.jj"; jk: "fg.jk"; jl: "fg.jl"; jm: "fg.jm"; jn: "fg.jn"; jo: "fg.jo"; jp: "fg.jp"; jq: "fg.jq"; jr: "fg.jr"; js: "fg.js"; jt: "fg.jt"; ju: "fg.ju"; jv: "fg.jv"; jw: "fg.jw"; jx: "fg.jx"; jy: "fg.jy"; jz: "fg.jz"; ka: "fg.ka"; kb: "fg.kb"; kc: "fg.kc"; kd: "fg.kd"; ke: "fg.ke"; kf: "fg.kf"; kg: "fg.kg"; kh: "fg.kh"; ki: "fg.ki"; kj: "fg.kj"; kk: "fg.kk"; kl: "fg.kl"; km: "fg.km"; kn: "fg.kn"; ko: "fg.ko"; kp: "fg.kp"; kq: "fg.kq"; kr: "fg.kr"; ks: "fg.ks"; kt: "fg.kt"; ku: "fg.ku"; kv: "fg.kv"; kw: "fg.kw"; kx: "fg.kx"; ky: "fg.ky"; kz: "fg.kz"; la: "fg.la"; lb: "fg.lb"; lc: "fg.lc"; ld: "fg.ld"; le: "fg.le"; lf: "fg.lf"; lg: "fg.lg"; lh: "fg.lh"; li: "fg.li"; lj: "fg.lj"; lk: "fg.lk"; ll: "fg.ll"; lm: "fg.lm"; ln: "fg.ln"; lo: "fg.lo"; lp: "fg.lp"; lq: "fg.lq"; lr: "fg.lr"; ls: "fg.ls"; lt: "fg.lt"; lu: "fg.lu"; lv: "fg.lv"; lw: "fg.lw"; lx: "fg.lx"; ly: "fg.ly"; lz: "fg.lz"; ma: "fg.ma"; mb: "fg.mb"; mc: "fg.mc"; md: "fg.md"; me: "fg.me"; mf: "fg.mf"; mg: "fg.mg"; mh: "fg.mh"; mi: "fg.mi"; mj: "fg.mj"; mk: "fg.mk"; ml: "fg.ml"; mm: "fg.mm"; mn: "fg.mn"; mo: "fg.mo"; mp: "fg.mp"; mq: "fg.mq"; mr: "fg.mr"; ms: "fg.ms"; mt: "fg.mt"; mu: "fg.mu"; mv: "fg.mv"; mw: "fg.mw"; mx: "fg.mx"; my: "fg.my"; mz: "fg.mz"; na: "fg.na"; nb: "fg.nb"; nc: "fg.nc"; nd: "fg.nd"; ne: "fg.ne"; nf: "fg.nf"; ng: "fg.ng"; nh: "fg.nh"; ni: "fg.ni"; nj: "fg.nj"; nk: "fg.nk"; nl: "fg.nl"; nm: "fg.nm"; nn: "fg.nn"; no: "fg.no"; np: "fg.np"; nq: "fg.nq"; nr: "fg.nr"; ns: "fg.ns"; nt: "fg.nt"; nu: "fg.nu"; nv: "fg.nv"; nw: "fg.nw"; nx: "fg.nx"; ny: "fg.ny"; nz: "fg.nz"; oa: "fg.oa"; ob: "fg.ob"; oc: "fg.oc"; od: "fg.od"; oe: "fg.oe"; of: "fg.of"; og: "fg.og"; oh: "fg.oh"; oi: "fg.oi"; oj: "fg.oj"; ok: "fg.ok"; ol: "fg.ol"; om: "fg.om"; on: "fg.on"; oo: "fg.oo"; op: "fg.op"; oq: "fg.oq"; or: "fg.or"; os: "fg.os"; ot: "fg.ot"; ou: "fg.ou"; ov: "fg.ov"; ow: "fg.ow"; ox: "fg.ox"; oy: "fg.oy"; oz: "fg.oz"; pa: "fg.pa"; pb: "fg.pb"; pc: "fg.pc"; pd: "fg.pd"; pe: "fg.pe"; pf: "fg.pf"; pg: "fg.pg"; ph: "fg.ph"; pi: "fg.pi"; pj: "fg.pj"; pk: "fg.pk"; pl: "fg.pl"; pm: "fg.pm"; pn: "fg.pn"; po: "fg.po"; pp: "fg.pp"; pq: "fg.pq"; pr: "fg.pr"; ps: "fg.ps"; pt: "fg.pt"; pu: "fg.pu"; pv: "fg.pv"; pw: "fg.pw"; px: "fg.px"; py: "fg.py"; pz: "fg.pz"; qa: "fg.qa"; qb: "fg.qb"; qc: "fg.qc"; qd: "fg.qd"; qe: "fg.qe"; qf: "fg.qf"; qg: "fg.qg"; qh: "fg.qh"; qi: "fg.qi"; qj: "fg.qj"; qk: "fg.qk"; ql: "fg.ql"; qm: "fg.qm"; qn: "fg.qn"; qo: "fg.qo"; qp: "fg.qp"; qq: "fg.qq"; qr: "fg.qr"; qs: "fg.qs"; qt: "fg.qt"; qu: "fg.qu"; qv: "fg.qv"; qw: "fg.qw"; qx: "fg.qx"; qy: "fg.qy"; qz: "fg.qz"; ra: "fg.ra"; rb: "fg.rb"; rc: "fg.rc"; rd: "fg.rd"; re: "fg.re"; rf: "fg.rf"; rg: "fg.rg"; rh: "fg.rh"; ri: "fg.ri"; rj: "fg.rj"; rk: "fg.rk"; rl: "fg.rl"; rm: "fg.rm"; rn: "fg.rn"; ro: "fg.ro"; rp: "fg.rp"; rq: "fg.rq"; rr: "fg.rr"; rs: "fg.rs"; rt: "fg.rt"; ru: "fg.ru"; rv: "fg.rv"; rw: "fg.rw"; rx: "fg.rx"; ry: "fg.ry"; rz: "fg.rz"; sa: "fg.sa"; sb: "fg.sb"; sc: "fg.sc"; sd: "fg.sd"; se: "fg.se"; sf: "fg.sf"; sg: "fg.sg"; sh: "fg.sh"; si: "fg.si"; sj: "fg.sj"; sk: "fg.sk"; sl: "fg.sl"; sm: "fg.sm"; sn: "fg.sn"; so: "fg.so"; sp: "fg.sp"; sq: "fg.sq"; sr: "fg.sr"; ss: "fg.ss"; st: "fg.st"; su: "fg.su"; sv: "fg.sv"; sw: "fg.sw"; sx: "fg.sx"; sy: "fg.sy"; sz: "fg.sz"; ta: "fg.ta"; tb: "fg.tb"; tc: "fg.tc"; td: "fg.td"; te: "fg.te"; tf: "fg.tf"; tg: "fg.tg"; th: "fg.th"; ti: "fg.ti"; tj: "fg.tj"; tk: "fg.tk"; tl: "fg.tl"; tm: "fg.tm"; tn: "fg.tn"; to: "fg.to"; tp: "fg.tp"; tq: "fg.tq"; tr: "fg.tr"; ts: "fg.ts"; tt: "fg.tt"; tu: "fg.tu"; tv: "fg.tv"; tw: "fg.tw"; tx: "fg.tx"; ty: "fg.ty"; tz: "fg.tz"; ua: "fg.ua"; ub: "fg.ub"; uc: "fg.uc"; ud: "fg.ud"; ue: "fg.ue"; uf: "fg.uf"; ug: "fg.ug"; uh: "fg.uh"; ui: "fg.ui"; uj: "fg.uj"; uk: "fg.uk"; ul: "fg.ul"; um: "fg.um"; un: "fg.un"; uo: "fg.uo"; up: "fg.up"; uq: "fg.uq"; ur: "fg.ur"; us: "fg.us"; ut: "fg.ut"; uu: "fg.uu"; uv: "fg.uv"; uw: "fg.uw"; ux: "fg.ux"; uy: "fg.uy"; uz: "fg.uz"; va: "fg.va"; vb: "fg.vb"; vc: "fg.vc"; vd: "fg.vd"; ve: "fg.ve"; vf: "fg.vf"; vg: "fg.vg"; vh: "fg.vh"; vi: "fg.vi"; vj: "fg.vj"; vk: "fg.vk"; vl: "fg.vl"; vm: "fg.vm"; vn: "fg.vn"; vo: "fg.vo"; vp: "fg.vp"; vq: "fg.vq"; vr: "fg.vr"; vs: "fg.vs"; vt: "fg.vt"; vu: "fg.vu"; vv: "fg.vv"; vw: "fg.vw"; vx: "fg.vx"; vy: "fg.vy"; vz: "fg.vz"; wa: "fg.wa"; wb: "fg.wb"; wc: "fg.wc"; wd: "fg.wd"; we: "fg.we"; wf: "fg.wf"; wg: "fg.wg"; wh: "fg.wh"; wi: "fg.wi"; wj: "fg.wj"; wk: "fg.wk"; wl: "fg.wl"; wm: "fg.wm"; wn: "fg.wn"; wo: "fg.wo"; wp: "fg.wp"; wq: "fg.wq"; wr: "fg.wr"; ws: "fg.ws"; wt: "fg.wt"; wu: "fg.wu"; wv: "fg.wv"; ww: "fg.ww"; wx: "fg.wx"; wy: "fg.wy"; wz: "fg.wz"; xa: "fg.xa"; xb: "fg.xb"; xc: "fg.xc"; xd: "fg.xd"; xe: "fg.xe"; xf: "fg.xf"; xg: "fg.xg"; xh: "fg.xh"; xi: "fg.xi"; xj: "fg.xj"; xk: "fg.xk"; xl: "fg.xl"; xm: "fg.xm"; xn: "fg.xn"; xo: "fg.xo"; xp: "fg.xp"; xq: "fg.xq"; xr: "fg.xr"; xs: "fg.xs"; xt: "fg.xt"; xu: "fg.xu"; xv: "fg.xv"; xw: "fg.xw"; xx: "fg.xx"; xy: "fg.xy"; xz: "fg.xz"; ya: "fg.ya"; yb: "fg.yb"; yc: "fg.yc"; yd: "fg.yd"; ye: "fg.ye"; yf: "fg.yf"; yg: "fg.yg"; yh: "fg.yh"; yi: "fg.yi"; yj: "fg.yj"; yk: "fg.yk"; yl: "fg.yl"; ym: "fg.ym"; yn: "fg.yn"; yo: "fg.yo"; yp: "fg.yp"; yq: "fg.yq"; yr: "fg.yr"; ys: "fg.ys"; yt: "fg.yt"; yu: "fg.yu"; yv: "fg.yv"; yw: "fg.yw"; yx: "fg.yx"; yy: "fg.yy"; yz: "fg.yz"; za: "fg.za"; zb: "fg.zb"; zc: "fg.zc"; zd: "fg.zd"; ze: "fg.ze"; zf: "fg.zf"; zg: "fg.zg"; zh: "fg.zh"; zi: "fg.zi"; zj: "fg.zj"; zk: "fg.zk"; zl: "fg.zl"; zm: "fg.zm"; zn: "fg.zn"; zo: "fg.zo"; zp: "fg.zp"; zq: "fg.zq"; zr: "fg.zr"; zs: "fg.zs"; zt: "fg.zt"; zu: "fg.zu"; zv: "fg.zv"; zw: "fg.zw"; zx: "fg.zx"; zy: "fg.zy"; zz: "fg.zz"; }; fh: { aa: "fh.aa"; ab: "fh.ab"; ac: "fh.ac"; ad: "fh.ad"; ae: "fh.ae"; af: "fh.af"; ag: "fh.ag"; ah: "fh.ah"; ai: "fh.ai"; aj: "fh.aj"; ak: "fh.ak"; al: "fh.al"; am: "fh.am"; an: "fh.an"; ao: "fh.ao"; ap: "fh.ap"; aq: "fh.aq"; ar: "fh.ar"; as: "fh.as"; at: "fh.at"; au: "fh.au"; av: "fh.av"; aw: "fh.aw"; ax: "fh.ax"; ay: "fh.ay"; az: "fh.az"; ba: "fh.ba"; bb: "fh.bb"; bc: "fh.bc"; bd: "fh.bd"; be: "fh.be"; bf: "fh.bf"; bg: "fh.bg"; bh: "fh.bh"; bi: "fh.bi"; bj: "fh.bj"; bk: "fh.bk"; bl: "fh.bl"; bm: "fh.bm"; bn: "fh.bn"; bo: "fh.bo"; bp: "fh.bp"; bq: "fh.bq"; br: "fh.br"; bs: "fh.bs"; bt: "fh.bt"; bu: "fh.bu"; bv: "fh.bv"; bw: "fh.bw"; bx: "fh.bx"; by: "fh.by"; bz: "fh.bz"; ca: "fh.ca"; cb: "fh.cb"; cc: "fh.cc"; cd: "fh.cd"; ce: "fh.ce"; cf: "fh.cf"; cg: "fh.cg"; ch: "fh.ch"; ci: "fh.ci"; cj: "fh.cj"; ck: "fh.ck"; cl: "fh.cl"; cm: "fh.cm"; cn: "fh.cn"; co: "fh.co"; cp: "fh.cp"; cq: "fh.cq"; cr: "fh.cr"; cs: "fh.cs"; ct: "fh.ct"; cu: "fh.cu"; cv: "fh.cv"; cw: "fh.cw"; cx: "fh.cx"; cy: "fh.cy"; cz: "fh.cz"; da: "fh.da"; db: "fh.db"; dc: "fh.dc"; dd: "fh.dd"; de: "fh.de"; df: "fh.df"; dg: "fh.dg"; dh: "fh.dh"; di: "fh.di"; dj: "fh.dj"; dk: "fh.dk"; dl: "fh.dl"; dm: "fh.dm"; dn: "fh.dn"; do: "fh.do"; dp: "fh.dp"; dq: "fh.dq"; dr: "fh.dr"; ds: "fh.ds"; dt: "fh.dt"; du: "fh.du"; dv: "fh.dv"; dw: "fh.dw"; dx: "fh.dx"; dy: "fh.dy"; dz: "fh.dz"; ea: "fh.ea"; eb: "fh.eb"; ec: "fh.ec"; ed: "fh.ed"; ee: "fh.ee"; ef: "fh.ef"; eg: "fh.eg"; eh: "fh.eh"; ei: "fh.ei"; ej: "fh.ej"; ek: "fh.ek"; el: "fh.el"; em: "fh.em"; en: "fh.en"; eo: "fh.eo"; ep: "fh.ep"; eq: "fh.eq"; er: "fh.er"; es: "fh.es"; et: "fh.et"; eu: "fh.eu"; ev: "fh.ev"; ew: "fh.ew"; ex: "fh.ex"; ey: "fh.ey"; ez: "fh.ez"; fa: "fh.fa"; fb: "fh.fb"; fc: "fh.fc"; fd: "fh.fd"; fe: "fh.fe"; ff: "fh.ff"; fg: "fh.fg"; fh: "fh.fh"; fi: "fh.fi"; fj: "fh.fj"; fk: "fh.fk"; fl: "fh.fl"; fm: "fh.fm"; fn: "fh.fn"; fo: "fh.fo"; fp: "fh.fp"; fq: "fh.fq"; fr: "fh.fr"; fs: "fh.fs"; ft: "fh.ft"; fu: "fh.fu"; fv: "fh.fv"; fw: "fh.fw"; fx: "fh.fx"; fy: "fh.fy"; fz: "fh.fz"; ga: "fh.ga"; gb: "fh.gb"; gc: "fh.gc"; gd: "fh.gd"; ge: "fh.ge"; gf: "fh.gf"; gg: "fh.gg"; gh: "fh.gh"; gi: "fh.gi"; gj: "fh.gj"; gk: "fh.gk"; gl: "fh.gl"; gm: "fh.gm"; gn: "fh.gn"; go: "fh.go"; gp: "fh.gp"; gq: "fh.gq"; gr: "fh.gr"; gs: "fh.gs"; gt: "fh.gt"; gu: "fh.gu"; gv: "fh.gv"; gw: "fh.gw"; gx: "fh.gx"; gy: "fh.gy"; gz: "fh.gz"; ha: "fh.ha"; hb: "fh.hb"; hc: "fh.hc"; hd: "fh.hd"; he: "fh.he"; hf: "fh.hf"; hg: "fh.hg"; hh: "fh.hh"; hi: "fh.hi"; hj: "fh.hj"; hk: "fh.hk"; hl: "fh.hl"; hm: "fh.hm"; hn: "fh.hn"; ho: "fh.ho"; hp: "fh.hp"; hq: "fh.hq"; hr: "fh.hr"; hs: "fh.hs"; ht: "fh.ht"; hu: "fh.hu"; hv: "fh.hv"; hw: "fh.hw"; hx: "fh.hx"; hy: "fh.hy"; hz: "fh.hz"; ia: "fh.ia"; ib: "fh.ib"; ic: "fh.ic"; id: "fh.id"; ie: "fh.ie"; if: "fh.if"; ig: "fh.ig"; ih: "fh.ih"; ii: "fh.ii"; ij: "fh.ij"; ik: "fh.ik"; il: "fh.il"; im: "fh.im"; in: "fh.in"; io: "fh.io"; ip: "fh.ip"; iq: "fh.iq"; ir: "fh.ir"; is: "fh.is"; it: "fh.it"; iu: "fh.iu"; iv: "fh.iv"; iw: "fh.iw"; ix: "fh.ix"; iy: "fh.iy"; iz: "fh.iz"; ja: "fh.ja"; jb: "fh.jb"; jc: "fh.jc"; jd: "fh.jd"; je: "fh.je"; jf: "fh.jf"; jg: "fh.jg"; jh: "fh.jh"; ji: "fh.ji"; jj: "fh.jj"; jk: "fh.jk"; jl: "fh.jl"; jm: "fh.jm"; jn: "fh.jn"; jo: "fh.jo"; jp: "fh.jp"; jq: "fh.jq"; jr: "fh.jr"; js: "fh.js"; jt: "fh.jt"; ju: "fh.ju"; jv: "fh.jv"; jw: "fh.jw"; jx: "fh.jx"; jy: "fh.jy"; jz: "fh.jz"; ka: "fh.ka"; kb: "fh.kb"; kc: "fh.kc"; kd: "fh.kd"; ke: "fh.ke"; kf: "fh.kf"; kg: "fh.kg"; kh: "fh.kh"; ki: "fh.ki"; kj: "fh.kj"; kk: "fh.kk"; kl: "fh.kl"; km: "fh.km"; kn: "fh.kn"; ko: "fh.ko"; kp: "fh.kp"; kq: "fh.kq"; kr: "fh.kr"; ks: "fh.ks"; kt: "fh.kt"; ku: "fh.ku"; kv: "fh.kv"; kw: "fh.kw"; kx: "fh.kx"; ky: "fh.ky"; kz: "fh.kz"; la: "fh.la"; lb: "fh.lb"; lc: "fh.lc"; ld: "fh.ld"; le: "fh.le"; lf: "fh.lf"; lg: "fh.lg"; lh: "fh.lh"; li: "fh.li"; lj: "fh.lj"; lk: "fh.lk"; ll: "fh.ll"; lm: "fh.lm"; ln: "fh.ln"; lo: "fh.lo"; lp: "fh.lp"; lq: "fh.lq"; lr: "fh.lr"; ls: "fh.ls"; lt: "fh.lt"; lu: "fh.lu"; lv: "fh.lv"; lw: "fh.lw"; lx: "fh.lx"; ly: "fh.ly"; lz: "fh.lz"; ma: "fh.ma"; mb: "fh.mb"; mc: "fh.mc"; md: "fh.md"; me: "fh.me"; mf: "fh.mf"; mg: "fh.mg"; mh: "fh.mh"; mi: "fh.mi"; mj: "fh.mj"; mk: "fh.mk"; ml: "fh.ml"; mm: "fh.mm"; mn: "fh.mn"; mo: "fh.mo"; mp: "fh.mp"; mq: "fh.mq"; mr: "fh.mr"; ms: "fh.ms"; mt: "fh.mt"; mu: "fh.mu"; mv: "fh.mv"; mw: "fh.mw"; mx: "fh.mx"; my: "fh.my"; mz: "fh.mz"; na: "fh.na"; nb: "fh.nb"; nc: "fh.nc"; nd: "fh.nd"; ne: "fh.ne"; nf: "fh.nf"; ng: "fh.ng"; nh: "fh.nh"; ni: "fh.ni"; nj: "fh.nj"; nk: "fh.nk"; nl: "fh.nl"; nm: "fh.nm"; nn: "fh.nn"; no: "fh.no"; np: "fh.np"; nq: "fh.nq"; nr: "fh.nr"; ns: "fh.ns"; nt: "fh.nt"; nu: "fh.nu"; nv: "fh.nv"; nw: "fh.nw"; nx: "fh.nx"; ny: "fh.ny"; nz: "fh.nz"; oa: "fh.oa"; ob: "fh.ob"; oc: "fh.oc"; od: "fh.od"; oe: "fh.oe"; of: "fh.of"; og: "fh.og"; oh: "fh.oh"; oi: "fh.oi"; oj: "fh.oj"; ok: "fh.ok"; ol: "fh.ol"; om: "fh.om"; on: "fh.on"; oo: "fh.oo"; op: "fh.op"; oq: "fh.oq"; or: "fh.or"; os: "fh.os"; ot: "fh.ot"; ou: "fh.ou"; ov: "fh.ov"; ow: "fh.ow"; ox: "fh.ox"; oy: "fh.oy"; oz: "fh.oz"; pa: "fh.pa"; pb: "fh.pb"; pc: "fh.pc"; pd: "fh.pd"; pe: "fh.pe"; pf: "fh.pf"; pg: "fh.pg"; ph: "fh.ph"; pi: "fh.pi"; pj: "fh.pj"; pk: "fh.pk"; pl: "fh.pl"; pm: "fh.pm"; pn: "fh.pn"; po: "fh.po"; pp: "fh.pp"; pq: "fh.pq"; pr: "fh.pr"; ps: "fh.ps"; pt: "fh.pt"; pu: "fh.pu"; pv: "fh.pv"; pw: "fh.pw"; px: "fh.px"; py: "fh.py"; pz: "fh.pz"; qa: "fh.qa"; qb: "fh.qb"; qc: "fh.qc"; qd: "fh.qd"; qe: "fh.qe"; qf: "fh.qf"; qg: "fh.qg"; qh: "fh.qh"; qi: "fh.qi"; qj: "fh.qj"; qk: "fh.qk"; ql: "fh.ql"; qm: "fh.qm"; qn: "fh.qn"; qo: "fh.qo"; qp: "fh.qp"; qq: "fh.qq"; qr: "fh.qr"; qs: "fh.qs"; qt: "fh.qt"; qu: "fh.qu"; qv: "fh.qv"; qw: "fh.qw"; qx: "fh.qx"; qy: "fh.qy"; qz: "fh.qz"; ra: "fh.ra"; rb: "fh.rb"; rc: "fh.rc"; rd: "fh.rd"; re: "fh.re"; rf: "fh.rf"; rg: "fh.rg"; rh: "fh.rh"; ri: "fh.ri"; rj: "fh.rj"; rk: "fh.rk"; rl: "fh.rl"; rm: "fh.rm"; rn: "fh.rn"; ro: "fh.ro"; rp: "fh.rp"; rq: "fh.rq"; rr: "fh.rr"; rs: "fh.rs"; rt: "fh.rt"; ru: "fh.ru"; rv: "fh.rv"; rw: "fh.rw"; rx: "fh.rx"; ry: "fh.ry"; rz: "fh.rz"; sa: "fh.sa"; sb: "fh.sb"; sc: "fh.sc"; sd: "fh.sd"; se: "fh.se"; sf: "fh.sf"; sg: "fh.sg"; sh: "fh.sh"; si: "fh.si"; sj: "fh.sj"; sk: "fh.sk"; sl: "fh.sl"; sm: "fh.sm"; sn: "fh.sn"; so: "fh.so"; sp: "fh.sp"; sq: "fh.sq"; sr: "fh.sr"; ss: "fh.ss"; st: "fh.st"; su: "fh.su"; sv: "fh.sv"; sw: "fh.sw"; sx: "fh.sx"; sy: "fh.sy"; sz: "fh.sz"; ta: "fh.ta"; tb: "fh.tb"; tc: "fh.tc"; td: "fh.td"; te: "fh.te"; tf: "fh.tf"; tg: "fh.tg"; th: "fh.th"; ti: "fh.ti"; tj: "fh.tj"; tk: "fh.tk"; tl: "fh.tl"; tm: "fh.tm"; tn: "fh.tn"; to: "fh.to"; tp: "fh.tp"; tq: "fh.tq"; tr: "fh.tr"; ts: "fh.ts"; tt: "fh.tt"; tu: "fh.tu"; tv: "fh.tv"; tw: "fh.tw"; tx: "fh.tx"; ty: "fh.ty"; tz: "fh.tz"; ua: "fh.ua"; ub: "fh.ub"; uc: "fh.uc"; ud: "fh.ud"; ue: "fh.ue"; uf: "fh.uf"; ug: "fh.ug"; uh: "fh.uh"; ui: "fh.ui"; uj: "fh.uj"; uk: "fh.uk"; ul: "fh.ul"; um: "fh.um"; un: "fh.un"; uo: "fh.uo"; up: "fh.up"; uq: "fh.uq"; ur: "fh.ur"; us: "fh.us"; ut: "fh.ut"; uu: "fh.uu"; uv: "fh.uv"; uw: "fh.uw"; ux: "fh.ux"; uy: "fh.uy"; uz: "fh.uz"; va: "fh.va"; vb: "fh.vb"; vc: "fh.vc"; vd: "fh.vd"; ve: "fh.ve"; vf: "fh.vf"; vg: "fh.vg"; vh: "fh.vh"; vi: "fh.vi"; vj: "fh.vj"; vk: "fh.vk"; vl: "fh.vl"; vm: "fh.vm"; vn: "fh.vn"; vo: "fh.vo"; vp: "fh.vp"; vq: "fh.vq"; vr: "fh.vr"; vs: "fh.vs"; vt: "fh.vt"; vu: "fh.vu"; vv: "fh.vv"; vw: "fh.vw"; vx: "fh.vx"; vy: "fh.vy"; vz: "fh.vz"; wa: "fh.wa"; wb: "fh.wb"; wc: "fh.wc"; wd: "fh.wd"; we: "fh.we"; wf: "fh.wf"; wg: "fh.wg"; wh: "fh.wh"; wi: "fh.wi"; wj: "fh.wj"; wk: "fh.wk"; wl: "fh.wl"; wm: "fh.wm"; wn: "fh.wn"; wo: "fh.wo"; wp: "fh.wp"; wq: "fh.wq"; wr: "fh.wr"; ws: "fh.ws"; wt: "fh.wt"; wu: "fh.wu"; wv: "fh.wv"; ww: "fh.ww"; wx: "fh.wx"; wy: "fh.wy"; wz: "fh.wz"; xa: "fh.xa"; xb: "fh.xb"; xc: "fh.xc"; xd: "fh.xd"; xe: "fh.xe"; xf: "fh.xf"; xg: "fh.xg"; xh: "fh.xh"; xi: "fh.xi"; xj: "fh.xj"; xk: "fh.xk"; xl: "fh.xl"; xm: "fh.xm"; xn: "fh.xn"; xo: "fh.xo"; xp: "fh.xp"; xq: "fh.xq"; xr: "fh.xr"; xs: "fh.xs"; xt: "fh.xt"; xu: "fh.xu"; xv: "fh.xv"; xw: "fh.xw"; xx: "fh.xx"; xy: "fh.xy"; xz: "fh.xz"; ya: "fh.ya"; yb: "fh.yb"; yc: "fh.yc"; yd: "fh.yd"; ye: "fh.ye"; yf: "fh.yf"; yg: "fh.yg"; yh: "fh.yh"; yi: "fh.yi"; yj: "fh.yj"; yk: "fh.yk"; yl: "fh.yl"; ym: "fh.ym"; yn: "fh.yn"; yo: "fh.yo"; yp: "fh.yp"; yq: "fh.yq"; yr: "fh.yr"; ys: "fh.ys"; yt: "fh.yt"; yu: "fh.yu"; yv: "fh.yv"; yw: "fh.yw"; yx: "fh.yx"; yy: "fh.yy"; yz: "fh.yz"; za: "fh.za"; zb: "fh.zb"; zc: "fh.zc"; zd: "fh.zd"; ze: "fh.ze"; zf: "fh.zf"; zg: "fh.zg"; zh: "fh.zh"; zi: "fh.zi"; zj: "fh.zj"; zk: "fh.zk"; zl: "fh.zl"; zm: "fh.zm"; zn: "fh.zn"; zo: "fh.zo"; zp: "fh.zp"; zq: "fh.zq"; zr: "fh.zr"; zs: "fh.zs"; zt: "fh.zt"; zu: "fh.zu"; zv: "fh.zv"; zw: "fh.zw"; zx: "fh.zx"; zy: "fh.zy"; zz: "fh.zz"; }; fi: { aa: "fi.aa"; ab: "fi.ab"; ac: "fi.ac"; ad: "fi.ad"; ae: "fi.ae"; af: "fi.af"; ag: "fi.ag"; ah: "fi.ah"; ai: "fi.ai"; aj: "fi.aj"; ak: "fi.ak"; al: "fi.al"; am: "fi.am"; an: "fi.an"; ao: "fi.ao"; ap: "fi.ap"; aq: "fi.aq"; ar: "fi.ar"; as: "fi.as"; at: "fi.at"; au: "fi.au"; av: "fi.av"; aw: "fi.aw"; ax: "fi.ax"; ay: "fi.ay"; az: "fi.az"; ba: "fi.ba"; bb: "fi.bb"; bc: "fi.bc"; bd: "fi.bd"; be: "fi.be"; bf: "fi.bf"; bg: "fi.bg"; bh: "fi.bh"; bi: "fi.bi"; bj: "fi.bj"; bk: "fi.bk"; bl: "fi.bl"; bm: "fi.bm"; bn: "fi.bn"; bo: "fi.bo"; bp: "fi.bp"; bq: "fi.bq"; br: "fi.br"; bs: "fi.bs"; bt: "fi.bt"; bu: "fi.bu"; bv: "fi.bv"; bw: "fi.bw"; bx: "fi.bx"; by: "fi.by"; bz: "fi.bz"; ca: "fi.ca"; cb: "fi.cb"; cc: "fi.cc"; cd: "fi.cd"; ce: "fi.ce"; cf: "fi.cf"; cg: "fi.cg"; ch: "fi.ch"; ci: "fi.ci"; cj: "fi.cj"; ck: "fi.ck"; cl: "fi.cl"; cm: "fi.cm"; cn: "fi.cn"; co: "fi.co"; cp: "fi.cp"; cq: "fi.cq"; cr: "fi.cr"; cs: "fi.cs"; ct: "fi.ct"; cu: "fi.cu"; cv: "fi.cv"; cw: "fi.cw"; cx: "fi.cx"; cy: "fi.cy"; cz: "fi.cz"; da: "fi.da"; db: "fi.db"; dc: "fi.dc"; dd: "fi.dd"; de: "fi.de"; df: "fi.df"; dg: "fi.dg"; dh: "fi.dh"; di: "fi.di"; dj: "fi.dj"; dk: "fi.dk"; dl: "fi.dl"; dm: "fi.dm"; dn: "fi.dn"; do: "fi.do"; dp: "fi.dp"; dq: "fi.dq"; dr: "fi.dr"; ds: "fi.ds"; dt: "fi.dt"; du: "fi.du"; dv: "fi.dv"; dw: "fi.dw"; dx: "fi.dx"; dy: "fi.dy"; dz: "fi.dz"; ea: "fi.ea"; eb: "fi.eb"; ec: "fi.ec"; ed: "fi.ed"; ee: "fi.ee"; ef: "fi.ef"; eg: "fi.eg"; eh: "fi.eh"; ei: "fi.ei"; ej: "fi.ej"; ek: "fi.ek"; el: "fi.el"; em: "fi.em"; en: "fi.en"; eo: "fi.eo"; ep: "fi.ep"; eq: "fi.eq"; er: "fi.er"; es: "fi.es"; et: "fi.et"; eu: "fi.eu"; ev: "fi.ev"; ew: "fi.ew"; ex: "fi.ex"; ey: "fi.ey"; ez: "fi.ez"; fa: "fi.fa"; fb: "fi.fb"; fc: "fi.fc"; fd: "fi.fd"; fe: "fi.fe"; ff: "fi.ff"; fg: "fi.fg"; fh: "fi.fh"; fi: "fi.fi"; fj: "fi.fj"; fk: "fi.fk"; fl: "fi.fl"; fm: "fi.fm"; fn: "fi.fn"; fo: "fi.fo"; fp: "fi.fp"; fq: "fi.fq"; fr: "fi.fr"; fs: "fi.fs"; ft: "fi.ft"; fu: "fi.fu"; fv: "fi.fv"; fw: "fi.fw"; fx: "fi.fx"; fy: "fi.fy"; fz: "fi.fz"; ga: "fi.ga"; gb: "fi.gb"; gc: "fi.gc"; gd: "fi.gd"; ge: "fi.ge"; gf: "fi.gf"; gg: "fi.gg"; gh: "fi.gh"; gi: "fi.gi"; gj: "fi.gj"; gk: "fi.gk"; gl: "fi.gl"; gm: "fi.gm"; gn: "fi.gn"; go: "fi.go"; gp: "fi.gp"; gq: "fi.gq"; gr: "fi.gr"; gs: "fi.gs"; gt: "fi.gt"; gu: "fi.gu"; gv: "fi.gv"; gw: "fi.gw"; gx: "fi.gx"; gy: "fi.gy"; gz: "fi.gz"; ha: "fi.ha"; hb: "fi.hb"; hc: "fi.hc"; hd: "fi.hd"; he: "fi.he"; hf: "fi.hf"; hg: "fi.hg"; hh: "fi.hh"; hi: "fi.hi"; hj: "fi.hj"; hk: "fi.hk"; hl: "fi.hl"; hm: "fi.hm"; hn: "fi.hn"; ho: "fi.ho"; hp: "fi.hp"; hq: "fi.hq"; hr: "fi.hr"; hs: "fi.hs"; ht: "fi.ht"; hu: "fi.hu"; hv: "fi.hv"; hw: "fi.hw"; hx: "fi.hx"; hy: "fi.hy"; hz: "fi.hz"; ia: "fi.ia"; ib: "fi.ib"; ic: "fi.ic"; id: "fi.id"; ie: "fi.ie"; if: "fi.if"; ig: "fi.ig"; ih: "fi.ih"; ii: "fi.ii"; ij: "fi.ij"; ik: "fi.ik"; il: "fi.il"; im: "fi.im"; in: "fi.in"; io: "fi.io"; ip: "fi.ip"; iq: "fi.iq"; ir: "fi.ir"; is: "fi.is"; it: "fi.it"; iu: "fi.iu"; iv: "fi.iv"; iw: "fi.iw"; ix: "fi.ix"; iy: "fi.iy"; iz: "fi.iz"; ja: "fi.ja"; jb: "fi.jb"; jc: "fi.jc"; jd: "fi.jd"; je: "fi.je"; jf: "fi.jf"; jg: "fi.jg"; jh: "fi.jh"; ji: "fi.ji"; jj: "fi.jj"; jk: "fi.jk"; jl: "fi.jl"; jm: "fi.jm"; jn: "fi.jn"; jo: "fi.jo"; jp: "fi.jp"; jq: "fi.jq"; jr: "fi.jr"; js: "fi.js"; jt: "fi.jt"; ju: "fi.ju"; jv: "fi.jv"; jw: "fi.jw"; jx: "fi.jx"; jy: "fi.jy"; jz: "fi.jz"; ka: "fi.ka"; kb: "fi.kb"; kc: "fi.kc"; kd: "fi.kd"; ke: "fi.ke"; kf: "fi.kf"; kg: "fi.kg"; kh: "fi.kh"; ki: "fi.ki"; kj: "fi.kj"; kk: "fi.kk"; kl: "fi.kl"; km: "fi.km"; kn: "fi.kn"; ko: "fi.ko"; kp: "fi.kp"; kq: "fi.kq"; kr: "fi.kr"; ks: "fi.ks"; kt: "fi.kt"; ku: "fi.ku"; kv: "fi.kv"; kw: "fi.kw"; kx: "fi.kx"; ky: "fi.ky"; kz: "fi.kz"; la: "fi.la"; lb: "fi.lb"; lc: "fi.lc"; ld: "fi.ld"; le: "fi.le"; lf: "fi.lf"; lg: "fi.lg"; lh: "fi.lh"; li: "fi.li"; lj: "fi.lj"; lk: "fi.lk"; ll: "fi.ll"; lm: "fi.lm"; ln: "fi.ln"; lo: "fi.lo"; lp: "fi.lp"; lq: "fi.lq"; lr: "fi.lr"; ls: "fi.ls"; lt: "fi.lt"; lu: "fi.lu"; lv: "fi.lv"; lw: "fi.lw"; lx: "fi.lx"; ly: "fi.ly"; lz: "fi.lz"; ma: "fi.ma"; mb: "fi.mb"; mc: "fi.mc"; md: "fi.md"; me: "fi.me"; mf: "fi.mf"; mg: "fi.mg"; mh: "fi.mh"; mi: "fi.mi"; mj: "fi.mj"; mk: "fi.mk"; ml: "fi.ml"; mm: "fi.mm"; mn: "fi.mn"; mo: "fi.mo"; mp: "fi.mp"; mq: "fi.mq"; mr: "fi.mr"; ms: "fi.ms"; mt: "fi.mt"; mu: "fi.mu"; mv: "fi.mv"; mw: "fi.mw"; mx: "fi.mx"; my: "fi.my"; mz: "fi.mz"; na: "fi.na"; nb: "fi.nb"; nc: "fi.nc"; nd: "fi.nd"; ne: "fi.ne"; nf: "fi.nf"; ng: "fi.ng"; nh: "fi.nh"; ni: "fi.ni"; nj: "fi.nj"; nk: "fi.nk"; nl: "fi.nl"; nm: "fi.nm"; nn: "fi.nn"; no: "fi.no"; np: "fi.np"; nq: "fi.nq"; nr: "fi.nr"; ns: "fi.ns"; nt: "fi.nt"; nu: "fi.nu"; nv: "fi.nv"; nw: "fi.nw"; nx: "fi.nx"; ny: "fi.ny"; nz: "fi.nz"; oa: "fi.oa"; ob: "fi.ob"; oc: "fi.oc"; od: "fi.od"; oe: "fi.oe"; of: "fi.of"; og: "fi.og"; oh: "fi.oh"; oi: "fi.oi"; oj: "fi.oj"; ok: "fi.ok"; ol: "fi.ol"; om: "fi.om"; on: "fi.on"; oo: "fi.oo"; op: "fi.op"; oq: "fi.oq"; or: "fi.or"; os: "fi.os"; ot: "fi.ot"; ou: "fi.ou"; ov: "fi.ov"; ow: "fi.ow"; ox: "fi.ox"; oy: "fi.oy"; oz: "fi.oz"; pa: "fi.pa"; pb: "fi.pb"; pc: "fi.pc"; pd: "fi.pd"; pe: "fi.pe"; pf: "fi.pf"; pg: "fi.pg"; ph: "fi.ph"; pi: "fi.pi"; pj: "fi.pj"; pk: "fi.pk"; pl: "fi.pl"; pm: "fi.pm"; pn: "fi.pn"; po: "fi.po"; pp: "fi.pp"; pq: "fi.pq"; pr: "fi.pr"; ps: "fi.ps"; pt: "fi.pt"; pu: "fi.pu"; pv: "fi.pv"; pw: "fi.pw"; px: "fi.px"; py: "fi.py"; pz: "fi.pz"; qa: "fi.qa"; qb: "fi.qb"; qc: "fi.qc"; qd: "fi.qd"; qe: "fi.qe"; qf: "fi.qf"; qg: "fi.qg"; qh: "fi.qh"; qi: "fi.qi"; qj: "fi.qj"; qk: "fi.qk"; ql: "fi.ql"; qm: "fi.qm"; qn: "fi.qn"; qo: "fi.qo"; qp: "fi.qp"; qq: "fi.qq"; qr: "fi.qr"; qs: "fi.qs"; qt: "fi.qt"; qu: "fi.qu"; qv: "fi.qv"; qw: "fi.qw"; qx: "fi.qx"; qy: "fi.qy"; qz: "fi.qz"; ra: "fi.ra"; rb: "fi.rb"; rc: "fi.rc"; rd: "fi.rd"; re: "fi.re"; rf: "fi.rf"; rg: "fi.rg"; rh: "fi.rh"; ri: "fi.ri"; rj: "fi.rj"; rk: "fi.rk"; rl: "fi.rl"; rm: "fi.rm"; rn: "fi.rn"; ro: "fi.ro"; rp: "fi.rp"; rq: "fi.rq"; rr: "fi.rr"; rs: "fi.rs"; rt: "fi.rt"; ru: "fi.ru"; rv: "fi.rv"; rw: "fi.rw"; rx: "fi.rx"; ry: "fi.ry"; rz: "fi.rz"; sa: "fi.sa"; sb: "fi.sb"; sc: "fi.sc"; sd: "fi.sd"; se: "fi.se"; sf: "fi.sf"; sg: "fi.sg"; sh: "fi.sh"; si: "fi.si"; sj: "fi.sj"; sk: "fi.sk"; sl: "fi.sl"; sm: "fi.sm"; sn: "fi.sn"; so: "fi.so"; sp: "fi.sp"; sq: "fi.sq"; sr: "fi.sr"; ss: "fi.ss"; st: "fi.st"; su: "fi.su"; sv: "fi.sv"; sw: "fi.sw"; sx: "fi.sx"; sy: "fi.sy"; sz: "fi.sz"; ta: "fi.ta"; tb: "fi.tb"; tc: "fi.tc"; td: "fi.td"; te: "fi.te"; tf: "fi.tf"; tg: "fi.tg"; th: "fi.th"; ti: "fi.ti"; tj: "fi.tj"; tk: "fi.tk"; tl: "fi.tl"; tm: "fi.tm"; tn: "fi.tn"; to: "fi.to"; tp: "fi.tp"; tq: "fi.tq"; tr: "fi.tr"; ts: "fi.ts"; tt: "fi.tt"; tu: "fi.tu"; tv: "fi.tv"; tw: "fi.tw"; tx: "fi.tx"; ty: "fi.ty"; tz: "fi.tz"; ua: "fi.ua"; ub: "fi.ub"; uc: "fi.uc"; ud: "fi.ud"; ue: "fi.ue"; uf: "fi.uf"; ug: "fi.ug"; uh: "fi.uh"; ui: "fi.ui"; uj: "fi.uj"; uk: "fi.uk"; ul: "fi.ul"; um: "fi.um"; un: "fi.un"; uo: "fi.uo"; up: "fi.up"; uq: "fi.uq"; ur: "fi.ur"; us: "fi.us"; ut: "fi.ut"; uu: "fi.uu"; uv: "fi.uv"; uw: "fi.uw"; ux: "fi.ux"; uy: "fi.uy"; uz: "fi.uz"; va: "fi.va"; vb: "fi.vb"; vc: "fi.vc"; vd: "fi.vd"; ve: "fi.ve"; vf: "fi.vf"; vg: "fi.vg"; vh: "fi.vh"; vi: "fi.vi"; vj: "fi.vj"; vk: "fi.vk"; vl: "fi.vl"; vm: "fi.vm"; vn: "fi.vn"; vo: "fi.vo"; vp: "fi.vp"; vq: "fi.vq"; vr: "fi.vr"; vs: "fi.vs"; vt: "fi.vt"; vu: "fi.vu"; vv: "fi.vv"; vw: "fi.vw"; vx: "fi.vx"; vy: "fi.vy"; vz: "fi.vz"; wa: "fi.wa"; wb: "fi.wb"; wc: "fi.wc"; wd: "fi.wd"; we: "fi.we"; wf: "fi.wf"; wg: "fi.wg"; wh: "fi.wh"; wi: "fi.wi"; wj: "fi.wj"; wk: "fi.wk"; wl: "fi.wl"; wm: "fi.wm"; wn: "fi.wn"; wo: "fi.wo"; wp: "fi.wp"; wq: "fi.wq"; wr: "fi.wr"; ws: "fi.ws"; wt: "fi.wt"; wu: "fi.wu"; wv: "fi.wv"; ww: "fi.ww"; wx: "fi.wx"; wy: "fi.wy"; wz: "fi.wz"; xa: "fi.xa"; xb: "fi.xb"; xc: "fi.xc"; xd: "fi.xd"; xe: "fi.xe"; xf: "fi.xf"; xg: "fi.xg"; xh: "fi.xh"; xi: "fi.xi"; xj: "fi.xj"; xk: "fi.xk"; xl: "fi.xl"; xm: "fi.xm"; xn: "fi.xn"; xo: "fi.xo"; xp: "fi.xp"; xq: "fi.xq"; xr: "fi.xr"; xs: "fi.xs"; xt: "fi.xt"; xu: "fi.xu"; xv: "fi.xv"; xw: "fi.xw"; xx: "fi.xx"; xy: "fi.xy"; xz: "fi.xz"; ya: "fi.ya"; yb: "fi.yb"; yc: "fi.yc"; yd: "fi.yd"; ye: "fi.ye"; yf: "fi.yf"; yg: "fi.yg"; yh: "fi.yh"; yi: "fi.yi"; yj: "fi.yj"; yk: "fi.yk"; yl: "fi.yl"; ym: "fi.ym"; yn: "fi.yn"; yo: "fi.yo"; yp: "fi.yp"; yq: "fi.yq"; yr: "fi.yr"; ys: "fi.ys"; yt: "fi.yt"; yu: "fi.yu"; yv: "fi.yv"; yw: "fi.yw"; yx: "fi.yx"; yy: "fi.yy"; yz: "fi.yz"; za: "fi.za"; zb: "fi.zb"; zc: "fi.zc"; zd: "fi.zd"; ze: "fi.ze"; zf: "fi.zf"; zg: "fi.zg"; zh: "fi.zh"; zi: "fi.zi"; zj: "fi.zj"; zk: "fi.zk"; zl: "fi.zl"; zm: "fi.zm"; zn: "fi.zn"; zo: "fi.zo"; zp: "fi.zp"; zq: "fi.zq"; zr: "fi.zr"; zs: "fi.zs"; zt: "fi.zt"; zu: "fi.zu"; zv: "fi.zv"; zw: "fi.zw"; zx: "fi.zx"; zy: "fi.zy"; zz: "fi.zz"; }; fj: { aa: "fj.aa"; ab: "fj.ab"; ac: "fj.ac"; ad: "fj.ad"; ae: "fj.ae"; af: "fj.af"; ag: "fj.ag"; ah: "fj.ah"; ai: "fj.ai"; aj: "fj.aj"; ak: "fj.ak"; al: "fj.al"; am: "fj.am"; an: "fj.an"; ao: "fj.ao"; ap: "fj.ap"; aq: "fj.aq"; ar: "fj.ar"; as: "fj.as"; at: "fj.at"; au: "fj.au"; av: "fj.av"; aw: "fj.aw"; ax: "fj.ax"; ay: "fj.ay"; az: "fj.az"; ba: "fj.ba"; bb: "fj.bb"; bc: "fj.bc"; bd: "fj.bd"; be: "fj.be"; bf: "fj.bf"; bg: "fj.bg"; bh: "fj.bh"; bi: "fj.bi"; bj: "fj.bj"; bk: "fj.bk"; bl: "fj.bl"; bm: "fj.bm"; bn: "fj.bn"; bo: "fj.bo"; bp: "fj.bp"; bq: "fj.bq"; br: "fj.br"; bs: "fj.bs"; bt: "fj.bt"; bu: "fj.bu"; bv: "fj.bv"; bw: "fj.bw"; bx: "fj.bx"; by: "fj.by"; bz: "fj.bz"; ca: "fj.ca"; cb: "fj.cb"; cc: "fj.cc"; cd: "fj.cd"; ce: "fj.ce"; cf: "fj.cf"; cg: "fj.cg"; ch: "fj.ch"; ci: "fj.ci"; cj: "fj.cj"; ck: "fj.ck"; cl: "fj.cl"; cm: "fj.cm"; cn: "fj.cn"; co: "fj.co"; cp: "fj.cp"; cq: "fj.cq"; cr: "fj.cr"; cs: "fj.cs"; ct: "fj.ct"; cu: "fj.cu"; cv: "fj.cv"; cw: "fj.cw"; cx: "fj.cx"; cy: "fj.cy"; cz: "fj.cz"; da: "fj.da"; db: "fj.db"; dc: "fj.dc"; dd: "fj.dd"; de: "fj.de"; df: "fj.df"; dg: "fj.dg"; dh: "fj.dh"; di: "fj.di"; dj: "fj.dj"; dk: "fj.dk"; dl: "fj.dl"; dm: "fj.dm"; dn: "fj.dn"; do: "fj.do"; dp: "fj.dp"; dq: "fj.dq"; dr: "fj.dr"; ds: "fj.ds"; dt: "fj.dt"; du: "fj.du"; dv: "fj.dv"; dw: "fj.dw"; dx: "fj.dx"; dy: "fj.dy"; dz: "fj.dz"; ea: "fj.ea"; eb: "fj.eb"; ec: "fj.ec"; ed: "fj.ed"; ee: "fj.ee"; ef: "fj.ef"; eg: "fj.eg"; eh: "fj.eh"; ei: "fj.ei"; ej: "fj.ej"; ek: "fj.ek"; el: "fj.el"; em: "fj.em"; en: "fj.en"; eo: "fj.eo"; ep: "fj.ep"; eq: "fj.eq"; er: "fj.er"; es: "fj.es"; et: "fj.et"; eu: "fj.eu"; ev: "fj.ev"; ew: "fj.ew"; ex: "fj.ex"; ey: "fj.ey"; ez: "fj.ez"; fa: "fj.fa"; fb: "fj.fb"; fc: "fj.fc"; fd: "fj.fd"; fe: "fj.fe"; ff: "fj.ff"; fg: "fj.fg"; fh: "fj.fh"; fi: "fj.fi"; fj: "fj.fj"; fk: "fj.fk"; fl: "fj.fl"; fm: "fj.fm"; fn: "fj.fn"; fo: "fj.fo"; fp: "fj.fp"; fq: "fj.fq"; fr: "fj.fr"; fs: "fj.fs"; ft: "fj.ft"; fu: "fj.fu"; fv: "fj.fv"; fw: "fj.fw"; fx: "fj.fx"; fy: "fj.fy"; fz: "fj.fz"; ga: "fj.ga"; gb: "fj.gb"; gc: "fj.gc"; gd: "fj.gd"; ge: "fj.ge"; gf: "fj.gf"; gg: "fj.gg"; gh: "fj.gh"; gi: "fj.gi"; gj: "fj.gj"; gk: "fj.gk"; gl: "fj.gl"; gm: "fj.gm"; gn: "fj.gn"; go: "fj.go"; gp: "fj.gp"; gq: "fj.gq"; gr: "fj.gr"; gs: "fj.gs"; gt: "fj.gt"; gu: "fj.gu"; gv: "fj.gv"; gw: "fj.gw"; gx: "fj.gx"; gy: "fj.gy"; gz: "fj.gz"; ha: "fj.ha"; hb: "fj.hb"; hc: "fj.hc"; hd: "fj.hd"; he: "fj.he"; hf: "fj.hf"; hg: "fj.hg"; hh: "fj.hh"; hi: "fj.hi"; hj: "fj.hj"; hk: "fj.hk"; hl: "fj.hl"; hm: "fj.hm"; hn: "fj.hn"; ho: "fj.ho"; hp: "fj.hp"; hq: "fj.hq"; hr: "fj.hr"; hs: "fj.hs"; ht: "fj.ht"; hu: "fj.hu"; hv: "fj.hv"; hw: "fj.hw"; hx: "fj.hx"; hy: "fj.hy"; hz: "fj.hz"; ia: "fj.ia"; ib: "fj.ib"; ic: "fj.ic"; id: "fj.id"; ie: "fj.ie"; if: "fj.if"; ig: "fj.ig"; ih: "fj.ih"; ii: "fj.ii"; ij: "fj.ij"; ik: "fj.ik"; il: "fj.il"; im: "fj.im"; in: "fj.in"; io: "fj.io"; ip: "fj.ip"; iq: "fj.iq"; ir: "fj.ir"; is: "fj.is"; it: "fj.it"; iu: "fj.iu"; iv: "fj.iv"; iw: "fj.iw"; ix: "fj.ix"; iy: "fj.iy"; iz: "fj.iz"; ja: "fj.ja"; jb: "fj.jb"; jc: "fj.jc"; jd: "fj.jd"; je: "fj.je"; jf: "fj.jf"; jg: "fj.jg"; jh: "fj.jh"; ji: "fj.ji"; jj: "fj.jj"; jk: "fj.jk"; jl: "fj.jl"; jm: "fj.jm"; jn: "fj.jn"; jo: "fj.jo"; jp: "fj.jp"; jq: "fj.jq"; jr: "fj.jr"; js: "fj.js"; jt: "fj.jt"; ju: "fj.ju"; jv: "fj.jv"; jw: "fj.jw"; jx: "fj.jx"; jy: "fj.jy"; jz: "fj.jz"; ka: "fj.ka"; kb: "fj.kb"; kc: "fj.kc"; kd: "fj.kd"; ke: "fj.ke"; kf: "fj.kf"; kg: "fj.kg"; kh: "fj.kh"; ki: "fj.ki"; kj: "fj.kj"; kk: "fj.kk"; kl: "fj.kl"; km: "fj.km"; kn: "fj.kn"; ko: "fj.ko"; kp: "fj.kp"; kq: "fj.kq"; kr: "fj.kr"; ks: "fj.ks"; kt: "fj.kt"; ku: "fj.ku"; kv: "fj.kv"; kw: "fj.kw"; kx: "fj.kx"; ky: "fj.ky"; kz: "fj.kz"; la: "fj.la"; lb: "fj.lb"; lc: "fj.lc"; ld: "fj.ld"; le: "fj.le"; lf: "fj.lf"; lg: "fj.lg"; lh: "fj.lh"; li: "fj.li"; lj: "fj.lj"; lk: "fj.lk"; ll: "fj.ll"; lm: "fj.lm"; ln: "fj.ln"; lo: "fj.lo"; lp: "fj.lp"; lq: "fj.lq"; lr: "fj.lr"; ls: "fj.ls"; lt: "fj.lt"; lu: "fj.lu"; lv: "fj.lv"; lw: "fj.lw"; lx: "fj.lx"; ly: "fj.ly"; lz: "fj.lz"; ma: "fj.ma"; mb: "fj.mb"; mc: "fj.mc"; md: "fj.md"; me: "fj.me"; mf: "fj.mf"; mg: "fj.mg"; mh: "fj.mh"; mi: "fj.mi"; mj: "fj.mj"; mk: "fj.mk"; ml: "fj.ml"; mm: "fj.mm"; mn: "fj.mn"; mo: "fj.mo"; mp: "fj.mp"; mq: "fj.mq"; mr: "fj.mr"; ms: "fj.ms"; mt: "fj.mt"; mu: "fj.mu"; mv: "fj.mv"; mw: "fj.mw"; mx: "fj.mx"; my: "fj.my"; mz: "fj.mz"; na: "fj.na"; nb: "fj.nb"; nc: "fj.nc"; nd: "fj.nd"; ne: "fj.ne"; nf: "fj.nf"; ng: "fj.ng"; nh: "fj.nh"; ni: "fj.ni"; nj: "fj.nj"; nk: "fj.nk"; nl: "fj.nl"; nm: "fj.nm"; nn: "fj.nn"; no: "fj.no"; np: "fj.np"; nq: "fj.nq"; nr: "fj.nr"; ns: "fj.ns"; nt: "fj.nt"; nu: "fj.nu"; nv: "fj.nv"; nw: "fj.nw"; nx: "fj.nx"; ny: "fj.ny"; nz: "fj.nz"; oa: "fj.oa"; ob: "fj.ob"; oc: "fj.oc"; od: "fj.od"; oe: "fj.oe"; of: "fj.of"; og: "fj.og"; oh: "fj.oh"; oi: "fj.oi"; oj: "fj.oj"; ok: "fj.ok"; ol: "fj.ol"; om: "fj.om"; on: "fj.on"; oo: "fj.oo"; op: "fj.op"; oq: "fj.oq"; or: "fj.or"; os: "fj.os"; ot: "fj.ot"; ou: "fj.ou"; ov: "fj.ov"; ow: "fj.ow"; ox: "fj.ox"; oy: "fj.oy"; oz: "fj.oz"; pa: "fj.pa"; pb: "fj.pb"; pc: "fj.pc"; pd: "fj.pd"; pe: "fj.pe"; pf: "fj.pf"; pg: "fj.pg"; ph: "fj.ph"; pi: "fj.pi"; pj: "fj.pj"; pk: "fj.pk"; pl: "fj.pl"; pm: "fj.pm"; pn: "fj.pn"; po: "fj.po"; pp: "fj.pp"; pq: "fj.pq"; pr: "fj.pr"; ps: "fj.ps"; pt: "fj.pt"; pu: "fj.pu"; pv: "fj.pv"; pw: "fj.pw"; px: "fj.px"; py: "fj.py"; pz: "fj.pz"; qa: "fj.qa"; qb: "fj.qb"; qc: "fj.qc"; qd: "fj.qd"; qe: "fj.qe"; qf: "fj.qf"; qg: "fj.qg"; qh: "fj.qh"; qi: "fj.qi"; qj: "fj.qj"; qk: "fj.qk"; ql: "fj.ql"; qm: "fj.qm"; qn: "fj.qn"; qo: "fj.qo"; qp: "fj.qp"; qq: "fj.qq"; qr: "fj.qr"; qs: "fj.qs"; qt: "fj.qt"; qu: "fj.qu"; qv: "fj.qv"; qw: "fj.qw"; qx: "fj.qx"; qy: "fj.qy"; qz: "fj.qz"; ra: "fj.ra"; rb: "fj.rb"; rc: "fj.rc"; rd: "fj.rd"; re: "fj.re"; rf: "fj.rf"; rg: "fj.rg"; rh: "fj.rh"; ri: "fj.ri"; rj: "fj.rj"; rk: "fj.rk"; rl: "fj.rl"; rm: "fj.rm"; rn: "fj.rn"; ro: "fj.ro"; rp: "fj.rp"; rq: "fj.rq"; rr: "fj.rr"; rs: "fj.rs"; rt: "fj.rt"; ru: "fj.ru"; rv: "fj.rv"; rw: "fj.rw"; rx: "fj.rx"; ry: "fj.ry"; rz: "fj.rz"; sa: "fj.sa"; sb: "fj.sb"; sc: "fj.sc"; sd: "fj.sd"; se: "fj.se"; sf: "fj.sf"; sg: "fj.sg"; sh: "fj.sh"; si: "fj.si"; sj: "fj.sj"; sk: "fj.sk"; sl: "fj.sl"; sm: "fj.sm"; sn: "fj.sn"; so: "fj.so"; sp: "fj.sp"; sq: "fj.sq"; sr: "fj.sr"; ss: "fj.ss"; st: "fj.st"; su: "fj.su"; sv: "fj.sv"; sw: "fj.sw"; sx: "fj.sx"; sy: "fj.sy"; sz: "fj.sz"; ta: "fj.ta"; tb: "fj.tb"; tc: "fj.tc"; td: "fj.td"; te: "fj.te"; tf: "fj.tf"; tg: "fj.tg"; th: "fj.th"; ti: "fj.ti"; tj: "fj.tj"; tk: "fj.tk"; tl: "fj.tl"; tm: "fj.tm"; tn: "fj.tn"; to: "fj.to"; tp: "fj.tp"; tq: "fj.tq"; tr: "fj.tr"; ts: "fj.ts"; tt: "fj.tt"; tu: "fj.tu"; tv: "fj.tv"; tw: "fj.tw"; tx: "fj.tx"; ty: "fj.ty"; tz: "fj.tz"; ua: "fj.ua"; ub: "fj.ub"; uc: "fj.uc"; ud: "fj.ud"; ue: "fj.ue"; uf: "fj.uf"; ug: "fj.ug"; uh: "fj.uh"; ui: "fj.ui"; uj: "fj.uj"; uk: "fj.uk"; ul: "fj.ul"; um: "fj.um"; un: "fj.un"; uo: "fj.uo"; up: "fj.up"; uq: "fj.uq"; ur: "fj.ur"; us: "fj.us"; ut: "fj.ut"; uu: "fj.uu"; uv: "fj.uv"; uw: "fj.uw"; ux: "fj.ux"; uy: "fj.uy"; uz: "fj.uz"; va: "fj.va"; vb: "fj.vb"; vc: "fj.vc"; vd: "fj.vd"; ve: "fj.ve"; vf: "fj.vf"; vg: "fj.vg"; vh: "fj.vh"; vi: "fj.vi"; vj: "fj.vj"; vk: "fj.vk"; vl: "fj.vl"; vm: "fj.vm"; vn: "fj.vn"; vo: "fj.vo"; vp: "fj.vp"; vq: "fj.vq"; vr: "fj.vr"; vs: "fj.vs"; vt: "fj.vt"; vu: "fj.vu"; vv: "fj.vv"; vw: "fj.vw"; vx: "fj.vx"; vy: "fj.vy"; vz: "fj.vz"; wa: "fj.wa"; wb: "fj.wb"; wc: "fj.wc"; wd: "fj.wd"; we: "fj.we"; wf: "fj.wf"; wg: "fj.wg"; wh: "fj.wh"; wi: "fj.wi"; wj: "fj.wj"; wk: "fj.wk"; wl: "fj.wl"; wm: "fj.wm"; wn: "fj.wn"; wo: "fj.wo"; wp: "fj.wp"; wq: "fj.wq"; wr: "fj.wr"; ws: "fj.ws"; wt: "fj.wt"; wu: "fj.wu"; wv: "fj.wv"; ww: "fj.ww"; wx: "fj.wx"; wy: "fj.wy"; wz: "fj.wz"; xa: "fj.xa"; xb: "fj.xb"; xc: "fj.xc"; xd: "fj.xd"; xe: "fj.xe"; xf: "fj.xf"; xg: "fj.xg"; xh: "fj.xh"; xi: "fj.xi"; xj: "fj.xj"; xk: "fj.xk"; xl: "fj.xl"; xm: "fj.xm"; xn: "fj.xn"; xo: "fj.xo"; xp: "fj.xp"; xq: "fj.xq"; xr: "fj.xr"; xs: "fj.xs"; xt: "fj.xt"; xu: "fj.xu"; xv: "fj.xv"; xw: "fj.xw"; xx: "fj.xx"; xy: "fj.xy"; xz: "fj.xz"; ya: "fj.ya"; yb: "fj.yb"; yc: "fj.yc"; yd: "fj.yd"; ye: "fj.ye"; yf: "fj.yf"; yg: "fj.yg"; yh: "fj.yh"; yi: "fj.yi"; yj: "fj.yj"; yk: "fj.yk"; yl: "fj.yl"; ym: "fj.ym"; yn: "fj.yn"; yo: "fj.yo"; yp: "fj.yp"; yq: "fj.yq"; yr: "fj.yr"; ys: "fj.ys"; yt: "fj.yt"; yu: "fj.yu"; yv: "fj.yv"; yw: "fj.yw"; yx: "fj.yx"; yy: "fj.yy"; yz: "fj.yz"; za: "fj.za"; zb: "fj.zb"; zc: "fj.zc"; zd: "fj.zd"; ze: "fj.ze"; zf: "fj.zf"; zg: "fj.zg"; zh: "fj.zh"; zi: "fj.zi"; zj: "fj.zj"; zk: "fj.zk"; zl: "fj.zl"; zm: "fj.zm"; zn: "fj.zn"; zo: "fj.zo"; zp: "fj.zp"; zq: "fj.zq"; zr: "fj.zr"; zs: "fj.zs"; zt: "fj.zt"; zu: "fj.zu"; zv: "fj.zv"; zw: "fj.zw"; zx: "fj.zx"; zy: "fj.zy"; zz: "fj.zz"; }; fk: { aa: "fk.aa"; ab: "fk.ab"; ac: "fk.ac"; ad: "fk.ad"; ae: "fk.ae"; af: "fk.af"; ag: "fk.ag"; ah: "fk.ah"; ai: "fk.ai"; aj: "fk.aj"; ak: "fk.ak"; al: "fk.al"; am: "fk.am"; an: "fk.an"; ao: "fk.ao"; ap: "fk.ap"; aq: "fk.aq"; ar: "fk.ar"; as: "fk.as"; at: "fk.at"; au: "fk.au"; av: "fk.av"; aw: "fk.aw"; ax: "fk.ax"; ay: "fk.ay"; az: "fk.az"; ba: "fk.ba"; bb: "fk.bb"; bc: "fk.bc"; bd: "fk.bd"; be: "fk.be"; bf: "fk.bf"; bg: "fk.bg"; bh: "fk.bh"; bi: "fk.bi"; bj: "fk.bj"; bk: "fk.bk"; bl: "fk.bl"; bm: "fk.bm"; bn: "fk.bn"; bo: "fk.bo"; bp: "fk.bp"; bq: "fk.bq"; br: "fk.br"; bs: "fk.bs"; bt: "fk.bt"; bu: "fk.bu"; bv: "fk.bv"; bw: "fk.bw"; bx: "fk.bx"; by: "fk.by"; bz: "fk.bz"; ca: "fk.ca"; cb: "fk.cb"; cc: "fk.cc"; cd: "fk.cd"; ce: "fk.ce"; cf: "fk.cf"; cg: "fk.cg"; ch: "fk.ch"; ci: "fk.ci"; cj: "fk.cj"; ck: "fk.ck"; cl: "fk.cl"; cm: "fk.cm"; cn: "fk.cn"; co: "fk.co"; cp: "fk.cp"; cq: "fk.cq"; cr: "fk.cr"; cs: "fk.cs"; ct: "fk.ct"; cu: "fk.cu"; cv: "fk.cv"; cw: "fk.cw"; cx: "fk.cx"; cy: "fk.cy"; cz: "fk.cz"; da: "fk.da"; db: "fk.db"; dc: "fk.dc"; dd: "fk.dd"; de: "fk.de"; df: "fk.df"; dg: "fk.dg"; dh: "fk.dh"; di: "fk.di"; dj: "fk.dj"; dk: "fk.dk"; dl: "fk.dl"; dm: "fk.dm"; dn: "fk.dn"; do: "fk.do"; dp: "fk.dp"; dq: "fk.dq"; dr: "fk.dr"; ds: "fk.ds"; dt: "fk.dt"; du: "fk.du"; dv: "fk.dv"; dw: "fk.dw"; dx: "fk.dx"; dy: "fk.dy"; dz: "fk.dz"; ea: "fk.ea"; eb: "fk.eb"; ec: "fk.ec"; ed: "fk.ed"; ee: "fk.ee"; ef: "fk.ef"; eg: "fk.eg"; eh: "fk.eh"; ei: "fk.ei"; ej: "fk.ej"; ek: "fk.ek"; el: "fk.el"; em: "fk.em"; en: "fk.en"; eo: "fk.eo"; ep: "fk.ep"; eq: "fk.eq"; er: "fk.er"; es: "fk.es"; et: "fk.et"; eu: "fk.eu"; ev: "fk.ev"; ew: "fk.ew"; ex: "fk.ex"; ey: "fk.ey"; ez: "fk.ez"; fa: "fk.fa"; fb: "fk.fb"; fc: "fk.fc"; fd: "fk.fd"; fe: "fk.fe"; ff: "fk.ff"; fg: "fk.fg"; fh: "fk.fh"; fi: "fk.fi"; fj: "fk.fj"; fk: "fk.fk"; fl: "fk.fl"; fm: "fk.fm"; fn: "fk.fn"; fo: "fk.fo"; fp: "fk.fp"; fq: "fk.fq"; fr: "fk.fr"; fs: "fk.fs"; ft: "fk.ft"; fu: "fk.fu"; fv: "fk.fv"; fw: "fk.fw"; fx: "fk.fx"; fy: "fk.fy"; fz: "fk.fz"; ga: "fk.ga"; gb: "fk.gb"; gc: "fk.gc"; gd: "fk.gd"; ge: "fk.ge"; gf: "fk.gf"; gg: "fk.gg"; gh: "fk.gh"; gi: "fk.gi"; gj: "fk.gj"; gk: "fk.gk"; gl: "fk.gl"; gm: "fk.gm"; gn: "fk.gn"; go: "fk.go"; gp: "fk.gp"; gq: "fk.gq"; gr: "fk.gr"; gs: "fk.gs"; gt: "fk.gt"; gu: "fk.gu"; gv: "fk.gv"; gw: "fk.gw"; gx: "fk.gx"; gy: "fk.gy"; gz: "fk.gz"; ha: "fk.ha"; hb: "fk.hb"; hc: "fk.hc"; hd: "fk.hd"; he: "fk.he"; hf: "fk.hf"; hg: "fk.hg"; hh: "fk.hh"; hi: "fk.hi"; hj: "fk.hj"; hk: "fk.hk"; hl: "fk.hl"; hm: "fk.hm"; hn: "fk.hn"; ho: "fk.ho"; hp: "fk.hp"; hq: "fk.hq"; hr: "fk.hr"; hs: "fk.hs"; ht: "fk.ht"; hu: "fk.hu"; hv: "fk.hv"; hw: "fk.hw"; hx: "fk.hx"; hy: "fk.hy"; hz: "fk.hz"; ia: "fk.ia"; ib: "fk.ib"; ic: "fk.ic"; id: "fk.id"; ie: "fk.ie"; if: "fk.if"; ig: "fk.ig"; ih: "fk.ih"; ii: "fk.ii"; ij: "fk.ij"; ik: "fk.ik"; il: "fk.il"; im: "fk.im"; in: "fk.in"; io: "fk.io"; ip: "fk.ip"; iq: "fk.iq"; ir: "fk.ir"; is: "fk.is"; it: "fk.it"; iu: "fk.iu"; iv: "fk.iv"; iw: "fk.iw"; ix: "fk.ix"; iy: "fk.iy"; iz: "fk.iz"; ja: "fk.ja"; jb: "fk.jb"; jc: "fk.jc"; jd: "fk.jd"; je: "fk.je"; jf: "fk.jf"; jg: "fk.jg"; jh: "fk.jh"; ji: "fk.ji"; jj: "fk.jj"; jk: "fk.jk"; jl: "fk.jl"; jm: "fk.jm"; jn: "fk.jn"; jo: "fk.jo"; jp: "fk.jp"; jq: "fk.jq"; jr: "fk.jr"; js: "fk.js"; jt: "fk.jt"; ju: "fk.ju"; jv: "fk.jv"; jw: "fk.jw"; jx: "fk.jx"; jy: "fk.jy"; jz: "fk.jz"; ka: "fk.ka"; kb: "fk.kb"; kc: "fk.kc"; kd: "fk.kd"; ke: "fk.ke"; kf: "fk.kf"; kg: "fk.kg"; kh: "fk.kh"; ki: "fk.ki"; kj: "fk.kj"; kk: "fk.kk"; kl: "fk.kl"; km: "fk.km"; kn: "fk.kn"; ko: "fk.ko"; kp: "fk.kp"; kq: "fk.kq"; kr: "fk.kr"; ks: "fk.ks"; kt: "fk.kt"; ku: "fk.ku"; kv: "fk.kv"; kw: "fk.kw"; kx: "fk.kx"; ky: "fk.ky"; kz: "fk.kz"; la: "fk.la"; lb: "fk.lb"; lc: "fk.lc"; ld: "fk.ld"; le: "fk.le"; lf: "fk.lf"; lg: "fk.lg"; lh: "fk.lh"; li: "fk.li"; lj: "fk.lj"; lk: "fk.lk"; ll: "fk.ll"; lm: "fk.lm"; ln: "fk.ln"; lo: "fk.lo"; lp: "fk.lp"; lq: "fk.lq"; lr: "fk.lr"; ls: "fk.ls"; lt: "fk.lt"; lu: "fk.lu"; lv: "fk.lv"; lw: "fk.lw"; lx: "fk.lx"; ly: "fk.ly"; lz: "fk.lz"; ma: "fk.ma"; mb: "fk.mb"; mc: "fk.mc"; md: "fk.md"; me: "fk.me"; mf: "fk.mf"; mg: "fk.mg"; mh: "fk.mh"; mi: "fk.mi"; mj: "fk.mj"; mk: "fk.mk"; ml: "fk.ml"; mm: "fk.mm"; mn: "fk.mn"; mo: "fk.mo"; mp: "fk.mp"; mq: "fk.mq"; mr: "fk.mr"; ms: "fk.ms"; mt: "fk.mt"; mu: "fk.mu"; mv: "fk.mv"; mw: "fk.mw"; mx: "fk.mx"; my: "fk.my"; mz: "fk.mz"; na: "fk.na"; nb: "fk.nb"; nc: "fk.nc"; nd: "fk.nd"; ne: "fk.ne"; nf: "fk.nf"; ng: "fk.ng"; nh: "fk.nh"; ni: "fk.ni"; nj: "fk.nj"; nk: "fk.nk"; nl: "fk.nl"; nm: "fk.nm"; nn: "fk.nn"; no: "fk.no"; np: "fk.np"; nq: "fk.nq"; nr: "fk.nr"; ns: "fk.ns"; nt: "fk.nt"; nu: "fk.nu"; nv: "fk.nv"; nw: "fk.nw"; nx: "fk.nx"; ny: "fk.ny"; nz: "fk.nz"; oa: "fk.oa"; ob: "fk.ob"; oc: "fk.oc"; od: "fk.od"; oe: "fk.oe"; of: "fk.of"; og: "fk.og"; oh: "fk.oh"; oi: "fk.oi"; oj: "fk.oj"; ok: "fk.ok"; ol: "fk.ol"; om: "fk.om"; on: "fk.on"; oo: "fk.oo"; op: "fk.op"; oq: "fk.oq"; or: "fk.or"; os: "fk.os"; ot: "fk.ot"; ou: "fk.ou"; ov: "fk.ov"; ow: "fk.ow"; ox: "fk.ox"; oy: "fk.oy"; oz: "fk.oz"; pa: "fk.pa"; pb: "fk.pb"; pc: "fk.pc"; pd: "fk.pd"; pe: "fk.pe"; pf: "fk.pf"; pg: "fk.pg"; ph: "fk.ph"; pi: "fk.pi"; pj: "fk.pj"; pk: "fk.pk"; pl: "fk.pl"; pm: "fk.pm"; pn: "fk.pn"; po: "fk.po"; pp: "fk.pp"; pq: "fk.pq"; pr: "fk.pr"; ps: "fk.ps"; pt: "fk.pt"; pu: "fk.pu"; pv: "fk.pv"; pw: "fk.pw"; px: "fk.px"; py: "fk.py"; pz: "fk.pz"; qa: "fk.qa"; qb: "fk.qb"; qc: "fk.qc"; qd: "fk.qd"; qe: "fk.qe"; qf: "fk.qf"; qg: "fk.qg"; qh: "fk.qh"; qi: "fk.qi"; qj: "fk.qj"; qk: "fk.qk"; ql: "fk.ql"; qm: "fk.qm"; qn: "fk.qn"; qo: "fk.qo"; qp: "fk.qp"; qq: "fk.qq"; qr: "fk.qr"; qs: "fk.qs"; qt: "fk.qt"; qu: "fk.qu"; qv: "fk.qv"; qw: "fk.qw"; qx: "fk.qx"; qy: "fk.qy"; qz: "fk.qz"; ra: "fk.ra"; rb: "fk.rb"; rc: "fk.rc"; rd: "fk.rd"; re: "fk.re"; rf: "fk.rf"; rg: "fk.rg"; rh: "fk.rh"; ri: "fk.ri"; rj: "fk.rj"; rk: "fk.rk"; rl: "fk.rl"; rm: "fk.rm"; rn: "fk.rn"; ro: "fk.ro"; rp: "fk.rp"; rq: "fk.rq"; rr: "fk.rr"; rs: "fk.rs"; rt: "fk.rt"; ru: "fk.ru"; rv: "fk.rv"; rw: "fk.rw"; rx: "fk.rx"; ry: "fk.ry"; rz: "fk.rz"; sa: "fk.sa"; sb: "fk.sb"; sc: "fk.sc"; sd: "fk.sd"; se: "fk.se"; sf: "fk.sf"; sg: "fk.sg"; sh: "fk.sh"; si: "fk.si"; sj: "fk.sj"; sk: "fk.sk"; sl: "fk.sl"; sm: "fk.sm"; sn: "fk.sn"; so: "fk.so"; sp: "fk.sp"; sq: "fk.sq"; sr: "fk.sr"; ss: "fk.ss"; st: "fk.st"; su: "fk.su"; sv: "fk.sv"; sw: "fk.sw"; sx: "fk.sx"; sy: "fk.sy"; sz: "fk.sz"; ta: "fk.ta"; tb: "fk.tb"; tc: "fk.tc"; td: "fk.td"; te: "fk.te"; tf: "fk.tf"; tg: "fk.tg"; th: "fk.th"; ti: "fk.ti"; tj: "fk.tj"; tk: "fk.tk"; tl: "fk.tl"; tm: "fk.tm"; tn: "fk.tn"; to: "fk.to"; tp: "fk.tp"; tq: "fk.tq"; tr: "fk.tr"; ts: "fk.ts"; tt: "fk.tt"; tu: "fk.tu"; tv: "fk.tv"; tw: "fk.tw"; tx: "fk.tx"; ty: "fk.ty"; tz: "fk.tz"; ua: "fk.ua"; ub: "fk.ub"; uc: "fk.uc"; ud: "fk.ud"; ue: "fk.ue"; uf: "fk.uf"; ug: "fk.ug"; uh: "fk.uh"; ui: "fk.ui"; uj: "fk.uj"; uk: "fk.uk"; ul: "fk.ul"; um: "fk.um"; un: "fk.un"; uo: "fk.uo"; up: "fk.up"; uq: "fk.uq"; ur: "fk.ur"; us: "fk.us"; ut: "fk.ut"; uu: "fk.uu"; uv: "fk.uv"; uw: "fk.uw"; ux: "fk.ux"; uy: "fk.uy"; uz: "fk.uz"; va: "fk.va"; vb: "fk.vb"; vc: "fk.vc"; vd: "fk.vd"; ve: "fk.ve"; vf: "fk.vf"; vg: "fk.vg"; vh: "fk.vh"; vi: "fk.vi"; vj: "fk.vj"; vk: "fk.vk"; vl: "fk.vl"; vm: "fk.vm"; vn: "fk.vn"; vo: "fk.vo"; vp: "fk.vp"; vq: "fk.vq"; vr: "fk.vr"; vs: "fk.vs"; vt: "fk.vt"; vu: "fk.vu"; vv: "fk.vv"; vw: "fk.vw"; vx: "fk.vx"; vy: "fk.vy"; vz: "fk.vz"; wa: "fk.wa"; wb: "fk.wb"; wc: "fk.wc"; wd: "fk.wd"; we: "fk.we"; wf: "fk.wf"; wg: "fk.wg"; wh: "fk.wh"; wi: "fk.wi"; wj: "fk.wj"; wk: "fk.wk"; wl: "fk.wl"; wm: "fk.wm"; wn: "fk.wn"; wo: "fk.wo"; wp: "fk.wp"; wq: "fk.wq"; wr: "fk.wr"; ws: "fk.ws"; wt: "fk.wt"; wu: "fk.wu"; wv: "fk.wv"; ww: "fk.ww"; wx: "fk.wx"; wy: "fk.wy"; wz: "fk.wz"; xa: "fk.xa"; xb: "fk.xb"; xc: "fk.xc"; xd: "fk.xd"; xe: "fk.xe"; xf: "fk.xf"; xg: "fk.xg"; xh: "fk.xh"; xi: "fk.xi"; xj: "fk.xj"; xk: "fk.xk"; xl: "fk.xl"; xm: "fk.xm"; xn: "fk.xn"; xo: "fk.xo"; xp: "fk.xp"; xq: "fk.xq"; xr: "fk.xr"; xs: "fk.xs"; xt: "fk.xt"; xu: "fk.xu"; xv: "fk.xv"; xw: "fk.xw"; xx: "fk.xx"; xy: "fk.xy"; xz: "fk.xz"; ya: "fk.ya"; yb: "fk.yb"; yc: "fk.yc"; yd: "fk.yd"; ye: "fk.ye"; yf: "fk.yf"; yg: "fk.yg"; yh: "fk.yh"; yi: "fk.yi"; yj: "fk.yj"; yk: "fk.yk"; yl: "fk.yl"; ym: "fk.ym"; yn: "fk.yn"; yo: "fk.yo"; yp: "fk.yp"; yq: "fk.yq"; yr: "fk.yr"; ys: "fk.ys"; yt: "fk.yt"; yu: "fk.yu"; yv: "fk.yv"; yw: "fk.yw"; yx: "fk.yx"; yy: "fk.yy"; yz: "fk.yz"; za: "fk.za"; zb: "fk.zb"; zc: "fk.zc"; zd: "fk.zd"; ze: "fk.ze"; zf: "fk.zf"; zg: "fk.zg"; zh: "fk.zh"; zi: "fk.zi"; zj: "fk.zj"; zk: "fk.zk"; zl: "fk.zl"; zm: "fk.zm"; zn: "fk.zn"; zo: "fk.zo"; zp: "fk.zp"; zq: "fk.zq"; zr: "fk.zr"; zs: "fk.zs"; zt: "fk.zt"; zu: "fk.zu"; zv: "fk.zv"; zw: "fk.zw"; zx: "fk.zx"; zy: "fk.zy"; zz: "fk.zz"; }; fl: { aa: "fl.aa"; ab: "fl.ab"; ac: "fl.ac"; ad: "fl.ad"; ae: "fl.ae"; af: "fl.af"; ag: "fl.ag"; ah: "fl.ah"; ai: "fl.ai"; aj: "fl.aj"; ak: "fl.ak"; al: "fl.al"; am: "fl.am"; an: "fl.an"; ao: "fl.ao"; ap: "fl.ap"; aq: "fl.aq"; ar: "fl.ar"; as: "fl.as"; at: "fl.at"; au: "fl.au"; av: "fl.av"; aw: "fl.aw"; ax: "fl.ax"; ay: "fl.ay"; az: "fl.az"; ba: "fl.ba"; bb: "fl.bb"; bc: "fl.bc"; bd: "fl.bd"; be: "fl.be"; bf: "fl.bf"; bg: "fl.bg"; bh: "fl.bh"; bi: "fl.bi"; bj: "fl.bj"; bk: "fl.bk"; bl: "fl.bl"; bm: "fl.bm"; bn: "fl.bn"; bo: "fl.bo"; bp: "fl.bp"; bq: "fl.bq"; br: "fl.br"; bs: "fl.bs"; bt: "fl.bt"; bu: "fl.bu"; bv: "fl.bv"; bw: "fl.bw"; bx: "fl.bx"; by: "fl.by"; bz: "fl.bz"; ca: "fl.ca"; cb: "fl.cb"; cc: "fl.cc"; cd: "fl.cd"; ce: "fl.ce"; cf: "fl.cf"; cg: "fl.cg"; ch: "fl.ch"; ci: "fl.ci"; cj: "fl.cj"; ck: "fl.ck"; cl: "fl.cl"; cm: "fl.cm"; cn: "fl.cn"; co: "fl.co"; cp: "fl.cp"; cq: "fl.cq"; cr: "fl.cr"; cs: "fl.cs"; ct: "fl.ct"; cu: "fl.cu"; cv: "fl.cv"; cw: "fl.cw"; cx: "fl.cx"; cy: "fl.cy"; cz: "fl.cz"; da: "fl.da"; db: "fl.db"; dc: "fl.dc"; dd: "fl.dd"; de: "fl.de"; df: "fl.df"; dg: "fl.dg"; dh: "fl.dh"; di: "fl.di"; dj: "fl.dj"; dk: "fl.dk"; dl: "fl.dl"; dm: "fl.dm"; dn: "fl.dn"; do: "fl.do"; dp: "fl.dp"; dq: "fl.dq"; dr: "fl.dr"; ds: "fl.ds"; dt: "fl.dt"; du: "fl.du"; dv: "fl.dv"; dw: "fl.dw"; dx: "fl.dx"; dy: "fl.dy"; dz: "fl.dz"; ea: "fl.ea"; eb: "fl.eb"; ec: "fl.ec"; ed: "fl.ed"; ee: "fl.ee"; ef: "fl.ef"; eg: "fl.eg"; eh: "fl.eh"; ei: "fl.ei"; ej: "fl.ej"; ek: "fl.ek"; el: "fl.el"; em: "fl.em"; en: "fl.en"; eo: "fl.eo"; ep: "fl.ep"; eq: "fl.eq"; er: "fl.er"; es: "fl.es"; et: "fl.et"; eu: "fl.eu"; ev: "fl.ev"; ew: "fl.ew"; ex: "fl.ex"; ey: "fl.ey"; ez: "fl.ez"; fa: "fl.fa"; fb: "fl.fb"; fc: "fl.fc"; fd: "fl.fd"; fe: "fl.fe"; ff: "fl.ff"; fg: "fl.fg"; fh: "fl.fh"; fi: "fl.fi"; fj: "fl.fj"; fk: "fl.fk"; fl: "fl.fl"; fm: "fl.fm"; fn: "fl.fn"; fo: "fl.fo"; fp: "fl.fp"; fq: "fl.fq"; fr: "fl.fr"; fs: "fl.fs"; ft: "fl.ft"; fu: "fl.fu"; fv: "fl.fv"; fw: "fl.fw"; fx: "fl.fx"; fy: "fl.fy"; fz: "fl.fz"; ga: "fl.ga"; gb: "fl.gb"; gc: "fl.gc"; gd: "fl.gd"; ge: "fl.ge"; gf: "fl.gf"; gg: "fl.gg"; gh: "fl.gh"; gi: "fl.gi"; gj: "fl.gj"; gk: "fl.gk"; gl: "fl.gl"; gm: "fl.gm"; gn: "fl.gn"; go: "fl.go"; gp: "fl.gp"; gq: "fl.gq"; gr: "fl.gr"; gs: "fl.gs"; gt: "fl.gt"; gu: "fl.gu"; gv: "fl.gv"; gw: "fl.gw"; gx: "fl.gx"; gy: "fl.gy"; gz: "fl.gz"; ha: "fl.ha"; hb: "fl.hb"; hc: "fl.hc"; hd: "fl.hd"; he: "fl.he"; hf: "fl.hf"; hg: "fl.hg"; hh: "fl.hh"; hi: "fl.hi"; hj: "fl.hj"; hk: "fl.hk"; hl: "fl.hl"; hm: "fl.hm"; hn: "fl.hn"; ho: "fl.ho"; hp: "fl.hp"; hq: "fl.hq"; hr: "fl.hr"; hs: "fl.hs"; ht: "fl.ht"; hu: "fl.hu"; hv: "fl.hv"; hw: "fl.hw"; hx: "fl.hx"; hy: "fl.hy"; hz: "fl.hz"; ia: "fl.ia"; ib: "fl.ib"; ic: "fl.ic"; id: "fl.id"; ie: "fl.ie"; if: "fl.if"; ig: "fl.ig"; ih: "fl.ih"; ii: "fl.ii"; ij: "fl.ij"; ik: "fl.ik"; il: "fl.il"; im: "fl.im"; in: "fl.in"; io: "fl.io"; ip: "fl.ip"; iq: "fl.iq"; ir: "fl.ir"; is: "fl.is"; it: "fl.it"; iu: "fl.iu"; iv: "fl.iv"; iw: "fl.iw"; ix: "fl.ix"; iy: "fl.iy"; iz: "fl.iz"; ja: "fl.ja"; jb: "fl.jb"; jc: "fl.jc"; jd: "fl.jd"; je: "fl.je"; jf: "fl.jf"; jg: "fl.jg"; jh: "fl.jh"; ji: "fl.ji"; jj: "fl.jj"; jk: "fl.jk"; jl: "fl.jl"; jm: "fl.jm"; jn: "fl.jn"; jo: "fl.jo"; jp: "fl.jp"; jq: "fl.jq"; jr: "fl.jr"; js: "fl.js"; jt: "fl.jt"; ju: "fl.ju"; jv: "fl.jv"; jw: "fl.jw"; jx: "fl.jx"; jy: "fl.jy"; jz: "fl.jz"; ka: "fl.ka"; kb: "fl.kb"; kc: "fl.kc"; kd: "fl.kd"; ke: "fl.ke"; kf: "fl.kf"; kg: "fl.kg"; kh: "fl.kh"; ki: "fl.ki"; kj: "fl.kj"; kk: "fl.kk"; kl: "fl.kl"; km: "fl.km"; kn: "fl.kn"; ko: "fl.ko"; kp: "fl.kp"; kq: "fl.kq"; kr: "fl.kr"; ks: "fl.ks"; kt: "fl.kt"; ku: "fl.ku"; kv: "fl.kv"; kw: "fl.kw"; kx: "fl.kx"; ky: "fl.ky"; kz: "fl.kz"; la: "fl.la"; lb: "fl.lb"; lc: "fl.lc"; ld: "fl.ld"; le: "fl.le"; lf: "fl.lf"; lg: "fl.lg"; lh: "fl.lh"; li: "fl.li"; lj: "fl.lj"; lk: "fl.lk"; ll: "fl.ll"; lm: "fl.lm"; ln: "fl.ln"; lo: "fl.lo"; lp: "fl.lp"; lq: "fl.lq"; lr: "fl.lr"; ls: "fl.ls"; lt: "fl.lt"; lu: "fl.lu"; lv: "fl.lv"; lw: "fl.lw"; lx: "fl.lx"; ly: "fl.ly"; lz: "fl.lz"; ma: "fl.ma"; mb: "fl.mb"; mc: "fl.mc"; md: "fl.md"; me: "fl.me"; mf: "fl.mf"; mg: "fl.mg"; mh: "fl.mh"; mi: "fl.mi"; mj: "fl.mj"; mk: "fl.mk"; ml: "fl.ml"; mm: "fl.mm"; mn: "fl.mn"; mo: "fl.mo"; mp: "fl.mp"; mq: "fl.mq"; mr: "fl.mr"; ms: "fl.ms"; mt: "fl.mt"; mu: "fl.mu"; mv: "fl.mv"; mw: "fl.mw"; mx: "fl.mx"; my: "fl.my"; mz: "fl.mz"; na: "fl.na"; nb: "fl.nb"; nc: "fl.nc"; nd: "fl.nd"; ne: "fl.ne"; nf: "fl.nf"; ng: "fl.ng"; nh: "fl.nh"; ni: "fl.ni"; nj: "fl.nj"; nk: "fl.nk"; nl: "fl.nl"; nm: "fl.nm"; nn: "fl.nn"; no: "fl.no"; np: "fl.np"; nq: "fl.nq"; nr: "fl.nr"; ns: "fl.ns"; nt: "fl.nt"; nu: "fl.nu"; nv: "fl.nv"; nw: "fl.nw"; nx: "fl.nx"; ny: "fl.ny"; nz: "fl.nz"; oa: "fl.oa"; ob: "fl.ob"; oc: "fl.oc"; od: "fl.od"; oe: "fl.oe"; of: "fl.of"; og: "fl.og"; oh: "fl.oh"; oi: "fl.oi"; oj: "fl.oj"; ok: "fl.ok"; ol: "fl.ol"; om: "fl.om"; on: "fl.on"; oo: "fl.oo"; op: "fl.op"; oq: "fl.oq"; or: "fl.or"; os: "fl.os"; ot: "fl.ot"; ou: "fl.ou"; ov: "fl.ov"; ow: "fl.ow"; ox: "fl.ox"; oy: "fl.oy"; oz: "fl.oz"; pa: "fl.pa"; pb: "fl.pb"; pc: "fl.pc"; pd: "fl.pd"; pe: "fl.pe"; pf: "fl.pf"; pg: "fl.pg"; ph: "fl.ph"; pi: "fl.pi"; pj: "fl.pj"; pk: "fl.pk"; pl: "fl.pl"; pm: "fl.pm"; pn: "fl.pn"; po: "fl.po"; pp: "fl.pp"; pq: "fl.pq"; pr: "fl.pr"; ps: "fl.ps"; pt: "fl.pt"; pu: "fl.pu"; pv: "fl.pv"; pw: "fl.pw"; px: "fl.px"; py: "fl.py"; pz: "fl.pz"; qa: "fl.qa"; qb: "fl.qb"; qc: "fl.qc"; qd: "fl.qd"; qe: "fl.qe"; qf: "fl.qf"; qg: "fl.qg"; qh: "fl.qh"; qi: "fl.qi"; qj: "fl.qj"; qk: "fl.qk"; ql: "fl.ql"; qm: "fl.qm"; qn: "fl.qn"; qo: "fl.qo"; qp: "fl.qp"; qq: "fl.qq"; qr: "fl.qr"; qs: "fl.qs"; qt: "fl.qt"; qu: "fl.qu"; qv: "fl.qv"; qw: "fl.qw"; qx: "fl.qx"; qy: "fl.qy"; qz: "fl.qz"; ra: "fl.ra"; rb: "fl.rb"; rc: "fl.rc"; rd: "fl.rd"; re: "fl.re"; rf: "fl.rf"; rg: "fl.rg"; rh: "fl.rh"; ri: "fl.ri"; rj: "fl.rj"; rk: "fl.rk"; rl: "fl.rl"; rm: "fl.rm"; rn: "fl.rn"; ro: "fl.ro"; rp: "fl.rp"; rq: "fl.rq"; rr: "fl.rr"; rs: "fl.rs"; rt: "fl.rt"; ru: "fl.ru"; rv: "fl.rv"; rw: "fl.rw"; rx: "fl.rx"; ry: "fl.ry"; rz: "fl.rz"; sa: "fl.sa"; sb: "fl.sb"; sc: "fl.sc"; sd: "fl.sd"; se: "fl.se"; sf: "fl.sf"; sg: "fl.sg"; sh: "fl.sh"; si: "fl.si"; sj: "fl.sj"; sk: "fl.sk"; sl: "fl.sl"; sm: "fl.sm"; sn: "fl.sn"; so: "fl.so"; sp: "fl.sp"; sq: "fl.sq"; sr: "fl.sr"; ss: "fl.ss"; st: "fl.st"; su: "fl.su"; sv: "fl.sv"; sw: "fl.sw"; sx: "fl.sx"; sy: "fl.sy"; sz: "fl.sz"; ta: "fl.ta"; tb: "fl.tb"; tc: "fl.tc"; td: "fl.td"; te: "fl.te"; tf: "fl.tf"; tg: "fl.tg"; th: "fl.th"; ti: "fl.ti"; tj: "fl.tj"; tk: "fl.tk"; tl: "fl.tl"; tm: "fl.tm"; tn: "fl.tn"; to: "fl.to"; tp: "fl.tp"; tq: "fl.tq"; tr: "fl.tr"; ts: "fl.ts"; tt: "fl.tt"; tu: "fl.tu"; tv: "fl.tv"; tw: "fl.tw"; tx: "fl.tx"; ty: "fl.ty"; tz: "fl.tz"; ua: "fl.ua"; ub: "fl.ub"; uc: "fl.uc"; ud: "fl.ud"; ue: "fl.ue"; uf: "fl.uf"; ug: "fl.ug"; uh: "fl.uh"; ui: "fl.ui"; uj: "fl.uj"; uk: "fl.uk"; ul: "fl.ul"; um: "fl.um"; un: "fl.un"; uo: "fl.uo"; up: "fl.up"; uq: "fl.uq"; ur: "fl.ur"; us: "fl.us"; ut: "fl.ut"; uu: "fl.uu"; uv: "fl.uv"; uw: "fl.uw"; ux: "fl.ux"; uy: "fl.uy"; uz: "fl.uz"; va: "fl.va"; vb: "fl.vb"; vc: "fl.vc"; vd: "fl.vd"; ve: "fl.ve"; vf: "fl.vf"; vg: "fl.vg"; vh: "fl.vh"; vi: "fl.vi"; vj: "fl.vj"; vk: "fl.vk"; vl: "fl.vl"; vm: "fl.vm"; vn: "fl.vn"; vo: "fl.vo"; vp: "fl.vp"; vq: "fl.vq"; vr: "fl.vr"; vs: "fl.vs"; vt: "fl.vt"; vu: "fl.vu"; vv: "fl.vv"; vw: "fl.vw"; vx: "fl.vx"; vy: "fl.vy"; vz: "fl.vz"; wa: "fl.wa"; wb: "fl.wb"; wc: "fl.wc"; wd: "fl.wd"; we: "fl.we"; wf: "fl.wf"; wg: "fl.wg"; wh: "fl.wh"; wi: "fl.wi"; wj: "fl.wj"; wk: "fl.wk"; wl: "fl.wl"; wm: "fl.wm"; wn: "fl.wn"; wo: "fl.wo"; wp: "fl.wp"; wq: "fl.wq"; wr: "fl.wr"; ws: "fl.ws"; wt: "fl.wt"; wu: "fl.wu"; wv: "fl.wv"; ww: "fl.ww"; wx: "fl.wx"; wy: "fl.wy"; wz: "fl.wz"; xa: "fl.xa"; xb: "fl.xb"; xc: "fl.xc"; xd: "fl.xd"; xe: "fl.xe"; xf: "fl.xf"; xg: "fl.xg"; xh: "fl.xh"; xi: "fl.xi"; xj: "fl.xj"; xk: "fl.xk"; xl: "fl.xl"; xm: "fl.xm"; xn: "fl.xn"; xo: "fl.xo"; xp: "fl.xp"; xq: "fl.xq"; xr: "fl.xr"; xs: "fl.xs"; xt: "fl.xt"; xu: "fl.xu"; xv: "fl.xv"; xw: "fl.xw"; xx: "fl.xx"; xy: "fl.xy"; xz: "fl.xz"; ya: "fl.ya"; yb: "fl.yb"; yc: "fl.yc"; yd: "fl.yd"; ye: "fl.ye"; yf: "fl.yf"; yg: "fl.yg"; yh: "fl.yh"; yi: "fl.yi"; yj: "fl.yj"; yk: "fl.yk"; yl: "fl.yl"; ym: "fl.ym"; yn: "fl.yn"; yo: "fl.yo"; yp: "fl.yp"; yq: "fl.yq"; yr: "fl.yr"; ys: "fl.ys"; yt: "fl.yt"; yu: "fl.yu"; yv: "fl.yv"; yw: "fl.yw"; yx: "fl.yx"; yy: "fl.yy"; yz: "fl.yz"; za: "fl.za"; zb: "fl.zb"; zc: "fl.zc"; zd: "fl.zd"; ze: "fl.ze"; zf: "fl.zf"; zg: "fl.zg"; zh: "fl.zh"; zi: "fl.zi"; zj: "fl.zj"; zk: "fl.zk"; zl: "fl.zl"; zm: "fl.zm"; zn: "fl.zn"; zo: "fl.zo"; zp: "fl.zp"; zq: "fl.zq"; zr: "fl.zr"; zs: "fl.zs"; zt: "fl.zt"; zu: "fl.zu"; zv: "fl.zv"; zw: "fl.zw"; zx: "fl.zx"; zy: "fl.zy"; zz: "fl.zz"; }; fm: { aa: "fm.aa"; ab: "fm.ab"; ac: "fm.ac"; ad: "fm.ad"; ae: "fm.ae"; af: "fm.af"; ag: "fm.ag"; ah: "fm.ah"; ai: "fm.ai"; aj: "fm.aj"; ak: "fm.ak"; al: "fm.al"; am: "fm.am"; an: "fm.an"; ao: "fm.ao"; ap: "fm.ap"; aq: "fm.aq"; ar: "fm.ar"; as: "fm.as"; at: "fm.at"; au: "fm.au"; av: "fm.av"; aw: "fm.aw"; ax: "fm.ax"; ay: "fm.ay"; az: "fm.az"; ba: "fm.ba"; bb: "fm.bb"; bc: "fm.bc"; bd: "fm.bd"; be: "fm.be"; bf: "fm.bf"; bg: "fm.bg"; bh: "fm.bh"; bi: "fm.bi"; bj: "fm.bj"; bk: "fm.bk"; bl: "fm.bl"; bm: "fm.bm"; bn: "fm.bn"; bo: "fm.bo"; bp: "fm.bp"; bq: "fm.bq"; br: "fm.br"; bs: "fm.bs"; bt: "fm.bt"; bu: "fm.bu"; bv: "fm.bv"; bw: "fm.bw"; bx: "fm.bx"; by: "fm.by"; bz: "fm.bz"; ca: "fm.ca"; cb: "fm.cb"; cc: "fm.cc"; cd: "fm.cd"; ce: "fm.ce"; cf: "fm.cf"; cg: "fm.cg"; ch: "fm.ch"; ci: "fm.ci"; cj: "fm.cj"; ck: "fm.ck"; cl: "fm.cl"; cm: "fm.cm"; cn: "fm.cn"; co: "fm.co"; cp: "fm.cp"; cq: "fm.cq"; cr: "fm.cr"; cs: "fm.cs"; ct: "fm.ct"; cu: "fm.cu"; cv: "fm.cv"; cw: "fm.cw"; cx: "fm.cx"; cy: "fm.cy"; cz: "fm.cz"; da: "fm.da"; db: "fm.db"; dc: "fm.dc"; dd: "fm.dd"; de: "fm.de"; df: "fm.df"; dg: "fm.dg"; dh: "fm.dh"; di: "fm.di"; dj: "fm.dj"; dk: "fm.dk"; dl: "fm.dl"; dm: "fm.dm"; dn: "fm.dn"; do: "fm.do"; dp: "fm.dp"; dq: "fm.dq"; dr: "fm.dr"; ds: "fm.ds"; dt: "fm.dt"; du: "fm.du"; dv: "fm.dv"; dw: "fm.dw"; dx: "fm.dx"; dy: "fm.dy"; dz: "fm.dz"; ea: "fm.ea"; eb: "fm.eb"; ec: "fm.ec"; ed: "fm.ed"; ee: "fm.ee"; ef: "fm.ef"; eg: "fm.eg"; eh: "fm.eh"; ei: "fm.ei"; ej: "fm.ej"; ek: "fm.ek"; el: "fm.el"; em: "fm.em"; en: "fm.en"; eo: "fm.eo"; ep: "fm.ep"; eq: "fm.eq"; er: "fm.er"; es: "fm.es"; et: "fm.et"; eu: "fm.eu"; ev: "fm.ev"; ew: "fm.ew"; ex: "fm.ex"; ey: "fm.ey"; ez: "fm.ez"; fa: "fm.fa"; fb: "fm.fb"; fc: "fm.fc"; fd: "fm.fd"; fe: "fm.fe"; ff: "fm.ff"; fg: "fm.fg"; fh: "fm.fh"; fi: "fm.fi"; fj: "fm.fj"; fk: "fm.fk"; fl: "fm.fl"; fm: "fm.fm"; fn: "fm.fn"; fo: "fm.fo"; fp: "fm.fp"; fq: "fm.fq"; fr: "fm.fr"; fs: "fm.fs"; ft: "fm.ft"; fu: "fm.fu"; fv: "fm.fv"; fw: "fm.fw"; fx: "fm.fx"; fy: "fm.fy"; fz: "fm.fz"; ga: "fm.ga"; gb: "fm.gb"; gc: "fm.gc"; gd: "fm.gd"; ge: "fm.ge"; gf: "fm.gf"; gg: "fm.gg"; gh: "fm.gh"; gi: "fm.gi"; gj: "fm.gj"; gk: "fm.gk"; gl: "fm.gl"; gm: "fm.gm"; gn: "fm.gn"; go: "fm.go"; gp: "fm.gp"; gq: "fm.gq"; gr: "fm.gr"; gs: "fm.gs"; gt: "fm.gt"; gu: "fm.gu"; gv: "fm.gv"; gw: "fm.gw"; gx: "fm.gx"; gy: "fm.gy"; gz: "fm.gz"; ha: "fm.ha"; hb: "fm.hb"; hc: "fm.hc"; hd: "fm.hd"; he: "fm.he"; hf: "fm.hf"; hg: "fm.hg"; hh: "fm.hh"; hi: "fm.hi"; hj: "fm.hj"; hk: "fm.hk"; hl: "fm.hl"; hm: "fm.hm"; hn: "fm.hn"; ho: "fm.ho"; hp: "fm.hp"; hq: "fm.hq"; hr: "fm.hr"; hs: "fm.hs"; ht: "fm.ht"; hu: "fm.hu"; hv: "fm.hv"; hw: "fm.hw"; hx: "fm.hx"; hy: "fm.hy"; hz: "fm.hz"; ia: "fm.ia"; ib: "fm.ib"; ic: "fm.ic"; id: "fm.id"; ie: "fm.ie"; if: "fm.if"; ig: "fm.ig"; ih: "fm.ih"; ii: "fm.ii"; ij: "fm.ij"; ik: "fm.ik"; il: "fm.il"; im: "fm.im"; in: "fm.in"; io: "fm.io"; ip: "fm.ip"; iq: "fm.iq"; ir: "fm.ir"; is: "fm.is"; it: "fm.it"; iu: "fm.iu"; iv: "fm.iv"; iw: "fm.iw"; ix: "fm.ix"; iy: "fm.iy"; iz: "fm.iz"; ja: "fm.ja"; jb: "fm.jb"; jc: "fm.jc"; jd: "fm.jd"; je: "fm.je"; jf: "fm.jf"; jg: "fm.jg"; jh: "fm.jh"; ji: "fm.ji"; jj: "fm.jj"; jk: "fm.jk"; jl: "fm.jl"; jm: "fm.jm"; jn: "fm.jn"; jo: "fm.jo"; jp: "fm.jp"; jq: "fm.jq"; jr: "fm.jr"; js: "fm.js"; jt: "fm.jt"; ju: "fm.ju"; jv: "fm.jv"; jw: "fm.jw"; jx: "fm.jx"; jy: "fm.jy"; jz: "fm.jz"; ka: "fm.ka"; kb: "fm.kb"; kc: "fm.kc"; kd: "fm.kd"; ke: "fm.ke"; kf: "fm.kf"; kg: "fm.kg"; kh: "fm.kh"; ki: "fm.ki"; kj: "fm.kj"; kk: "fm.kk"; kl: "fm.kl"; km: "fm.km"; kn: "fm.kn"; ko: "fm.ko"; kp: "fm.kp"; kq: "fm.kq"; kr: "fm.kr"; ks: "fm.ks"; kt: "fm.kt"; ku: "fm.ku"; kv: "fm.kv"; kw: "fm.kw"; kx: "fm.kx"; ky: "fm.ky"; kz: "fm.kz"; la: "fm.la"; lb: "fm.lb"; lc: "fm.lc"; ld: "fm.ld"; le: "fm.le"; lf: "fm.lf"; lg: "fm.lg"; lh: "fm.lh"; li: "fm.li"; lj: "fm.lj"; lk: "fm.lk"; ll: "fm.ll"; lm: "fm.lm"; ln: "fm.ln"; lo: "fm.lo"; lp: "fm.lp"; lq: "fm.lq"; lr: "fm.lr"; ls: "fm.ls"; lt: "fm.lt"; lu: "fm.lu"; lv: "fm.lv"; lw: "fm.lw"; lx: "fm.lx"; ly: "fm.ly"; lz: "fm.lz"; ma: "fm.ma"; mb: "fm.mb"; mc: "fm.mc"; md: "fm.md"; me: "fm.me"; mf: "fm.mf"; mg: "fm.mg"; mh: "fm.mh"; mi: "fm.mi"; mj: "fm.mj"; mk: "fm.mk"; ml: "fm.ml"; mm: "fm.mm"; mn: "fm.mn"; mo: "fm.mo"; mp: "fm.mp"; mq: "fm.mq"; mr: "fm.mr"; ms: "fm.ms"; mt: "fm.mt"; mu: "fm.mu"; mv: "fm.mv"; mw: "fm.mw"; mx: "fm.mx"; my: "fm.my"; mz: "fm.mz"; na: "fm.na"; nb: "fm.nb"; nc: "fm.nc"; nd: "fm.nd"; ne: "fm.ne"; nf: "fm.nf"; ng: "fm.ng"; nh: "fm.nh"; ni: "fm.ni"; nj: "fm.nj"; nk: "fm.nk"; nl: "fm.nl"; nm: "fm.nm"; nn: "fm.nn"; no: "fm.no"; np: "fm.np"; nq: "fm.nq"; nr: "fm.nr"; ns: "fm.ns"; nt: "fm.nt"; nu: "fm.nu"; nv: "fm.nv"; nw: "fm.nw"; nx: "fm.nx"; ny: "fm.ny"; nz: "fm.nz"; oa: "fm.oa"; ob: "fm.ob"; oc: "fm.oc"; od: "fm.od"; oe: "fm.oe"; of: "fm.of"; og: "fm.og"; oh: "fm.oh"; oi: "fm.oi"; oj: "fm.oj"; ok: "fm.ok"; ol: "fm.ol"; om: "fm.om"; on: "fm.on"; oo: "fm.oo"; op: "fm.op"; oq: "fm.oq"; or: "fm.or"; os: "fm.os"; ot: "fm.ot"; ou: "fm.ou"; ov: "fm.ov"; ow: "fm.ow"; ox: "fm.ox"; oy: "fm.oy"; oz: "fm.oz"; pa: "fm.pa"; pb: "fm.pb"; pc: "fm.pc"; pd: "fm.pd"; pe: "fm.pe"; pf: "fm.pf"; pg: "fm.pg"; ph: "fm.ph"; pi: "fm.pi"; pj: "fm.pj"; pk: "fm.pk"; pl: "fm.pl"; pm: "fm.pm"; pn: "fm.pn"; po: "fm.po"; pp: "fm.pp"; pq: "fm.pq"; pr: "fm.pr"; ps: "fm.ps"; pt: "fm.pt"; pu: "fm.pu"; pv: "fm.pv"; pw: "fm.pw"; px: "fm.px"; py: "fm.py"; pz: "fm.pz"; qa: "fm.qa"; qb: "fm.qb"; qc: "fm.qc"; qd: "fm.qd"; qe: "fm.qe"; qf: "fm.qf"; qg: "fm.qg"; qh: "fm.qh"; qi: "fm.qi"; qj: "fm.qj"; qk: "fm.qk"; ql: "fm.ql"; qm: "fm.qm"; qn: "fm.qn"; qo: "fm.qo"; qp: "fm.qp"; qq: "fm.qq"; qr: "fm.qr"; qs: "fm.qs"; qt: "fm.qt"; qu: "fm.qu"; qv: "fm.qv"; qw: "fm.qw"; qx: "fm.qx"; qy: "fm.qy"; qz: "fm.qz"; ra: "fm.ra"; rb: "fm.rb"; rc: "fm.rc"; rd: "fm.rd"; re: "fm.re"; rf: "fm.rf"; rg: "fm.rg"; rh: "fm.rh"; ri: "fm.ri"; rj: "fm.rj"; rk: "fm.rk"; rl: "fm.rl"; rm: "fm.rm"; rn: "fm.rn"; ro: "fm.ro"; rp: "fm.rp"; rq: "fm.rq"; rr: "fm.rr"; rs: "fm.rs"; rt: "fm.rt"; ru: "fm.ru"; rv: "fm.rv"; rw: "fm.rw"; rx: "fm.rx"; ry: "fm.ry"; rz: "fm.rz"; sa: "fm.sa"; sb: "fm.sb"; sc: "fm.sc"; sd: "fm.sd"; se: "fm.se"; sf: "fm.sf"; sg: "fm.sg"; sh: "fm.sh"; si: "fm.si"; sj: "fm.sj"; sk: "fm.sk"; sl: "fm.sl"; sm: "fm.sm"; sn: "fm.sn"; so: "fm.so"; sp: "fm.sp"; sq: "fm.sq"; sr: "fm.sr"; ss: "fm.ss"; st: "fm.st"; su: "fm.su"; sv: "fm.sv"; sw: "fm.sw"; sx: "fm.sx"; sy: "fm.sy"; sz: "fm.sz"; ta: "fm.ta"; tb: "fm.tb"; tc: "fm.tc"; td: "fm.td"; te: "fm.te"; tf: "fm.tf"; tg: "fm.tg"; th: "fm.th"; ti: "fm.ti"; tj: "fm.tj"; tk: "fm.tk"; tl: "fm.tl"; tm: "fm.tm"; tn: "fm.tn"; to: "fm.to"; tp: "fm.tp"; tq: "fm.tq"; tr: "fm.tr"; ts: "fm.ts"; tt: "fm.tt"; tu: "fm.tu"; tv: "fm.tv"; tw: "fm.tw"; tx: "fm.tx"; ty: "fm.ty"; tz: "fm.tz"; ua: "fm.ua"; ub: "fm.ub"; uc: "fm.uc"; ud: "fm.ud"; ue: "fm.ue"; uf: "fm.uf"; ug: "fm.ug"; uh: "fm.uh"; ui: "fm.ui"; uj: "fm.uj"; uk: "fm.uk"; ul: "fm.ul"; um: "fm.um"; un: "fm.un"; uo: "fm.uo"; up: "fm.up"; uq: "fm.uq"; ur: "fm.ur"; us: "fm.us"; ut: "fm.ut"; uu: "fm.uu"; uv: "fm.uv"; uw: "fm.uw"; ux: "fm.ux"; uy: "fm.uy"; uz: "fm.uz"; va: "fm.va"; vb: "fm.vb"; vc: "fm.vc"; vd: "fm.vd"; ve: "fm.ve"; vf: "fm.vf"; vg: "fm.vg"; vh: "fm.vh"; vi: "fm.vi"; vj: "fm.vj"; vk: "fm.vk"; vl: "fm.vl"; vm: "fm.vm"; vn: "fm.vn"; vo: "fm.vo"; vp: "fm.vp"; vq: "fm.vq"; vr: "fm.vr"; vs: "fm.vs"; vt: "fm.vt"; vu: "fm.vu"; vv: "fm.vv"; vw: "fm.vw"; vx: "fm.vx"; vy: "fm.vy"; vz: "fm.vz"; wa: "fm.wa"; wb: "fm.wb"; wc: "fm.wc"; wd: "fm.wd"; we: "fm.we"; wf: "fm.wf"; wg: "fm.wg"; wh: "fm.wh"; wi: "fm.wi"; wj: "fm.wj"; wk: "fm.wk"; wl: "fm.wl"; wm: "fm.wm"; wn: "fm.wn"; wo: "fm.wo"; wp: "fm.wp"; wq: "fm.wq"; wr: "fm.wr"; ws: "fm.ws"; wt: "fm.wt"; wu: "fm.wu"; wv: "fm.wv"; ww: "fm.ww"; wx: "fm.wx"; wy: "fm.wy"; wz: "fm.wz"; xa: "fm.xa"; xb: "fm.xb"; xc: "fm.xc"; xd: "fm.xd"; xe: "fm.xe"; xf: "fm.xf"; xg: "fm.xg"; xh: "fm.xh"; xi: "fm.xi"; xj: "fm.xj"; xk: "fm.xk"; xl: "fm.xl"; xm: "fm.xm"; xn: "fm.xn"; xo: "fm.xo"; xp: "fm.xp"; xq: "fm.xq"; xr: "fm.xr"; xs: "fm.xs"; xt: "fm.xt"; xu: "fm.xu"; xv: "fm.xv"; xw: "fm.xw"; xx: "fm.xx"; xy: "fm.xy"; xz: "fm.xz"; ya: "fm.ya"; yb: "fm.yb"; yc: "fm.yc"; yd: "fm.yd"; ye: "fm.ye"; yf: "fm.yf"; yg: "fm.yg"; yh: "fm.yh"; yi: "fm.yi"; yj: "fm.yj"; yk: "fm.yk"; yl: "fm.yl"; ym: "fm.ym"; yn: "fm.yn"; yo: "fm.yo"; yp: "fm.yp"; yq: "fm.yq"; yr: "fm.yr"; ys: "fm.ys"; yt: "fm.yt"; yu: "fm.yu"; yv: "fm.yv"; yw: "fm.yw"; yx: "fm.yx"; yy: "fm.yy"; yz: "fm.yz"; za: "fm.za"; zb: "fm.zb"; zc: "fm.zc"; zd: "fm.zd"; ze: "fm.ze"; zf: "fm.zf"; zg: "fm.zg"; zh: "fm.zh"; zi: "fm.zi"; zj: "fm.zj"; zk: "fm.zk"; zl: "fm.zl"; zm: "fm.zm"; zn: "fm.zn"; zo: "fm.zo"; zp: "fm.zp"; zq: "fm.zq"; zr: "fm.zr"; zs: "fm.zs"; zt: "fm.zt"; zu: "fm.zu"; zv: "fm.zv"; zw: "fm.zw"; zx: "fm.zx"; zy: "fm.zy"; zz: "fm.zz"; }; fn: { aa: "fn.aa"; ab: "fn.ab"; ac: "fn.ac"; ad: "fn.ad"; ae: "fn.ae"; af: "fn.af"; ag: "fn.ag"; ah: "fn.ah"; ai: "fn.ai"; aj: "fn.aj"; ak: "fn.ak"; al: "fn.al"; am: "fn.am"; an: "fn.an"; ao: "fn.ao"; ap: "fn.ap"; aq: "fn.aq"; ar: "fn.ar"; as: "fn.as"; at: "fn.at"; au: "fn.au"; av: "fn.av"; aw: "fn.aw"; ax: "fn.ax"; ay: "fn.ay"; az: "fn.az"; ba: "fn.ba"; bb: "fn.bb"; bc: "fn.bc"; bd: "fn.bd"; be: "fn.be"; bf: "fn.bf"; bg: "fn.bg"; bh: "fn.bh"; bi: "fn.bi"; bj: "fn.bj"; bk: "fn.bk"; bl: "fn.bl"; bm: "fn.bm"; bn: "fn.bn"; bo: "fn.bo"; bp: "fn.bp"; bq: "fn.bq"; br: "fn.br"; bs: "fn.bs"; bt: "fn.bt"; bu: "fn.bu"; bv: "fn.bv"; bw: "fn.bw"; bx: "fn.bx"; by: "fn.by"; bz: "fn.bz"; ca: "fn.ca"; cb: "fn.cb"; cc: "fn.cc"; cd: "fn.cd"; ce: "fn.ce"; cf: "fn.cf"; cg: "fn.cg"; ch: "fn.ch"; ci: "fn.ci"; cj: "fn.cj"; ck: "fn.ck"; cl: "fn.cl"; cm: "fn.cm"; cn: "fn.cn"; co: "fn.co"; cp: "fn.cp"; cq: "fn.cq"; cr: "fn.cr"; cs: "fn.cs"; ct: "fn.ct"; cu: "fn.cu"; cv: "fn.cv"; cw: "fn.cw"; cx: "fn.cx"; cy: "fn.cy"; cz: "fn.cz"; da: "fn.da"; db: "fn.db"; dc: "fn.dc"; dd: "fn.dd"; de: "fn.de"; df: "fn.df"; dg: "fn.dg"; dh: "fn.dh"; di: "fn.di"; dj: "fn.dj"; dk: "fn.dk"; dl: "fn.dl"; dm: "fn.dm"; dn: "fn.dn"; do: "fn.do"; dp: "fn.dp"; dq: "fn.dq"; dr: "fn.dr"; ds: "fn.ds"; dt: "fn.dt"; du: "fn.du"; dv: "fn.dv"; dw: "fn.dw"; dx: "fn.dx"; dy: "fn.dy"; dz: "fn.dz"; ea: "fn.ea"; eb: "fn.eb"; ec: "fn.ec"; ed: "fn.ed"; ee: "fn.ee"; ef: "fn.ef"; eg: "fn.eg"; eh: "fn.eh"; ei: "fn.ei"; ej: "fn.ej"; ek: "fn.ek"; el: "fn.el"; em: "fn.em"; en: "fn.en"; eo: "fn.eo"; ep: "fn.ep"; eq: "fn.eq"; er: "fn.er"; es: "fn.es"; et: "fn.et"; eu: "fn.eu"; ev: "fn.ev"; ew: "fn.ew"; ex: "fn.ex"; ey: "fn.ey"; ez: "fn.ez"; fa: "fn.fa"; fb: "fn.fb"; fc: "fn.fc"; fd: "fn.fd"; fe: "fn.fe"; ff: "fn.ff"; fg: "fn.fg"; fh: "fn.fh"; fi: "fn.fi"; fj: "fn.fj"; fk: "fn.fk"; fl: "fn.fl"; fm: "fn.fm"; fn: "fn.fn"; fo: "fn.fo"; fp: "fn.fp"; fq: "fn.fq"; fr: "fn.fr"; fs: "fn.fs"; ft: "fn.ft"; fu: "fn.fu"; fv: "fn.fv"; fw: "fn.fw"; fx: "fn.fx"; fy: "fn.fy"; fz: "fn.fz"; ga: "fn.ga"; gb: "fn.gb"; gc: "fn.gc"; gd: "fn.gd"; ge: "fn.ge"; gf: "fn.gf"; gg: "fn.gg"; gh: "fn.gh"; gi: "fn.gi"; gj: "fn.gj"; gk: "fn.gk"; gl: "fn.gl"; gm: "fn.gm"; gn: "fn.gn"; go: "fn.go"; gp: "fn.gp"; gq: "fn.gq"; gr: "fn.gr"; gs: "fn.gs"; gt: "fn.gt"; gu: "fn.gu"; gv: "fn.gv"; gw: "fn.gw"; gx: "fn.gx"; gy: "fn.gy"; gz: "fn.gz"; ha: "fn.ha"; hb: "fn.hb"; hc: "fn.hc"; hd: "fn.hd"; he: "fn.he"; hf: "fn.hf"; hg: "fn.hg"; hh: "fn.hh"; hi: "fn.hi"; hj: "fn.hj"; hk: "fn.hk"; hl: "fn.hl"; hm: "fn.hm"; hn: "fn.hn"; ho: "fn.ho"; hp: "fn.hp"; hq: "fn.hq"; hr: "fn.hr"; hs: "fn.hs"; ht: "fn.ht"; hu: "fn.hu"; hv: "fn.hv"; hw: "fn.hw"; hx: "fn.hx"; hy: "fn.hy"; hz: "fn.hz"; ia: "fn.ia"; ib: "fn.ib"; ic: "fn.ic"; id: "fn.id"; ie: "fn.ie"; if: "fn.if"; ig: "fn.ig"; ih: "fn.ih"; ii: "fn.ii"; ij: "fn.ij"; ik: "fn.ik"; il: "fn.il"; im: "fn.im"; in: "fn.in"; io: "fn.io"; ip: "fn.ip"; iq: "fn.iq"; ir: "fn.ir"; is: "fn.is"; it: "fn.it"; iu: "fn.iu"; iv: "fn.iv"; iw: "fn.iw"; ix: "fn.ix"; iy: "fn.iy"; iz: "fn.iz"; ja: "fn.ja"; jb: "fn.jb"; jc: "fn.jc"; jd: "fn.jd"; je: "fn.je"; jf: "fn.jf"; jg: "fn.jg"; jh: "fn.jh"; ji: "fn.ji"; jj: "fn.jj"; jk: "fn.jk"; jl: "fn.jl"; jm: "fn.jm"; jn: "fn.jn"; jo: "fn.jo"; jp: "fn.jp"; jq: "fn.jq"; jr: "fn.jr"; js: "fn.js"; jt: "fn.jt"; ju: "fn.ju"; jv: "fn.jv"; jw: "fn.jw"; jx: "fn.jx"; jy: "fn.jy"; jz: "fn.jz"; ka: "fn.ka"; kb: "fn.kb"; kc: "fn.kc"; kd: "fn.kd"; ke: "fn.ke"; kf: "fn.kf"; kg: "fn.kg"; kh: "fn.kh"; ki: "fn.ki"; kj: "fn.kj"; kk: "fn.kk"; kl: "fn.kl"; km: "fn.km"; kn: "fn.kn"; ko: "fn.ko"; kp: "fn.kp"; kq: "fn.kq"; kr: "fn.kr"; ks: "fn.ks"; kt: "fn.kt"; ku: "fn.ku"; kv: "fn.kv"; kw: "fn.kw"; kx: "fn.kx"; ky: "fn.ky"; kz: "fn.kz"; la: "fn.la"; lb: "fn.lb"; lc: "fn.lc"; ld: "fn.ld"; le: "fn.le"; lf: "fn.lf"; lg: "fn.lg"; lh: "fn.lh"; li: "fn.li"; lj: "fn.lj"; lk: "fn.lk"; ll: "fn.ll"; lm: "fn.lm"; ln: "fn.ln"; lo: "fn.lo"; lp: "fn.lp"; lq: "fn.lq"; lr: "fn.lr"; ls: "fn.ls"; lt: "fn.lt"; lu: "fn.lu"; lv: "fn.lv"; lw: "fn.lw"; lx: "fn.lx"; ly: "fn.ly"; lz: "fn.lz"; ma: "fn.ma"; mb: "fn.mb"; mc: "fn.mc"; md: "fn.md"; me: "fn.me"; mf: "fn.mf"; mg: "fn.mg"; mh: "fn.mh"; mi: "fn.mi"; mj: "fn.mj"; mk: "fn.mk"; ml: "fn.ml"; mm: "fn.mm"; mn: "fn.mn"; mo: "fn.mo"; mp: "fn.mp"; mq: "fn.mq"; mr: "fn.mr"; ms: "fn.ms"; mt: "fn.mt"; mu: "fn.mu"; mv: "fn.mv"; mw: "fn.mw"; mx: "fn.mx"; my: "fn.my"; mz: "fn.mz"; na: "fn.na"; nb: "fn.nb"; nc: "fn.nc"; nd: "fn.nd"; ne: "fn.ne"; nf: "fn.nf"; ng: "fn.ng"; nh: "fn.nh"; ni: "fn.ni"; nj: "fn.nj"; nk: "fn.nk"; nl: "fn.nl"; nm: "fn.nm"; nn: "fn.nn"; no: "fn.no"; np: "fn.np"; nq: "fn.nq"; nr: "fn.nr"; ns: "fn.ns"; nt: "fn.nt"; nu: "fn.nu"; nv: "fn.nv"; nw: "fn.nw"; nx: "fn.nx"; ny: "fn.ny"; nz: "fn.nz"; oa: "fn.oa"; ob: "fn.ob"; oc: "fn.oc"; od: "fn.od"; oe: "fn.oe"; of: "fn.of"; og: "fn.og"; oh: "fn.oh"; oi: "fn.oi"; oj: "fn.oj"; ok: "fn.ok"; ol: "fn.ol"; om: "fn.om"; on: "fn.on"; oo: "fn.oo"; op: "fn.op"; oq: "fn.oq"; or: "fn.or"; os: "fn.os"; ot: "fn.ot"; ou: "fn.ou"; ov: "fn.ov"; ow: "fn.ow"; ox: "fn.ox"; oy: "fn.oy"; oz: "fn.oz"; pa: "fn.pa"; pb: "fn.pb"; pc: "fn.pc"; pd: "fn.pd"; pe: "fn.pe"; pf: "fn.pf"; pg: "fn.pg"; ph: "fn.ph"; pi: "fn.pi"; pj: "fn.pj"; pk: "fn.pk"; pl: "fn.pl"; pm: "fn.pm"; pn: "fn.pn"; po: "fn.po"; pp: "fn.pp"; pq: "fn.pq"; pr: "fn.pr"; ps: "fn.ps"; pt: "fn.pt"; pu: "fn.pu"; pv: "fn.pv"; pw: "fn.pw"; px: "fn.px"; py: "fn.py"; pz: "fn.pz"; qa: "fn.qa"; qb: "fn.qb"; qc: "fn.qc"; qd: "fn.qd"; qe: "fn.qe"; qf: "fn.qf"; qg: "fn.qg"; qh: "fn.qh"; qi: "fn.qi"; qj: "fn.qj"; qk: "fn.qk"; ql: "fn.ql"; qm: "fn.qm"; qn: "fn.qn"; qo: "fn.qo"; qp: "fn.qp"; qq: "fn.qq"; qr: "fn.qr"; qs: "fn.qs"; qt: "fn.qt"; qu: "fn.qu"; qv: "fn.qv"; qw: "fn.qw"; qx: "fn.qx"; qy: "fn.qy"; qz: "fn.qz"; ra: "fn.ra"; rb: "fn.rb"; rc: "fn.rc"; rd: "fn.rd"; re: "fn.re"; rf: "fn.rf"; rg: "fn.rg"; rh: "fn.rh"; ri: "fn.ri"; rj: "fn.rj"; rk: "fn.rk"; rl: "fn.rl"; rm: "fn.rm"; rn: "fn.rn"; ro: "fn.ro"; rp: "fn.rp"; rq: "fn.rq"; rr: "fn.rr"; rs: "fn.rs"; rt: "fn.rt"; ru: "fn.ru"; rv: "fn.rv"; rw: "fn.rw"; rx: "fn.rx"; ry: "fn.ry"; rz: "fn.rz"; sa: "fn.sa"; sb: "fn.sb"; sc: "fn.sc"; sd: "fn.sd"; se: "fn.se"; sf: "fn.sf"; sg: "fn.sg"; sh: "fn.sh"; si: "fn.si"; sj: "fn.sj"; sk: "fn.sk"; sl: "fn.sl"; sm: "fn.sm"; sn: "fn.sn"; so: "fn.so"; sp: "fn.sp"; sq: "fn.sq"; sr: "fn.sr"; ss: "fn.ss"; st: "fn.st"; su: "fn.su"; sv: "fn.sv"; sw: "fn.sw"; sx: "fn.sx"; sy: "fn.sy"; sz: "fn.sz"; ta: "fn.ta"; tb: "fn.tb"; tc: "fn.tc"; td: "fn.td"; te: "fn.te"; tf: "fn.tf"; tg: "fn.tg"; th: "fn.th"; ti: "fn.ti"; tj: "fn.tj"; tk: "fn.tk"; tl: "fn.tl"; tm: "fn.tm"; tn: "fn.tn"; to: "fn.to"; tp: "fn.tp"; tq: "fn.tq"; tr: "fn.tr"; ts: "fn.ts"; tt: "fn.tt"; tu: "fn.tu"; tv: "fn.tv"; tw: "fn.tw"; tx: "fn.tx"; ty: "fn.ty"; tz: "fn.tz"; ua: "fn.ua"; ub: "fn.ub"; uc: "fn.uc"; ud: "fn.ud"; ue: "fn.ue"; uf: "fn.uf"; ug: "fn.ug"; uh: "fn.uh"; ui: "fn.ui"; uj: "fn.uj"; uk: "fn.uk"; ul: "fn.ul"; um: "fn.um"; un: "fn.un"; uo: "fn.uo"; up: "fn.up"; uq: "fn.uq"; ur: "fn.ur"; us: "fn.us"; ut: "fn.ut"; uu: "fn.uu"; uv: "fn.uv"; uw: "fn.uw"; ux: "fn.ux"; uy: "fn.uy"; uz: "fn.uz"; va: "fn.va"; vb: "fn.vb"; vc: "fn.vc"; vd: "fn.vd"; ve: "fn.ve"; vf: "fn.vf"; vg: "fn.vg"; vh: "fn.vh"; vi: "fn.vi"; vj: "fn.vj"; vk: "fn.vk"; vl: "fn.vl"; vm: "fn.vm"; vn: "fn.vn"; vo: "fn.vo"; vp: "fn.vp"; vq: "fn.vq"; vr: "fn.vr"; vs: "fn.vs"; vt: "fn.vt"; vu: "fn.vu"; vv: "fn.vv"; vw: "fn.vw"; vx: "fn.vx"; vy: "fn.vy"; vz: "fn.vz"; wa: "fn.wa"; wb: "fn.wb"; wc: "fn.wc"; wd: "fn.wd"; we: "fn.we"; wf: "fn.wf"; wg: "fn.wg"; wh: "fn.wh"; wi: "fn.wi"; wj: "fn.wj"; wk: "fn.wk"; wl: "fn.wl"; wm: "fn.wm"; wn: "fn.wn"; wo: "fn.wo"; wp: "fn.wp"; wq: "fn.wq"; wr: "fn.wr"; ws: "fn.ws"; wt: "fn.wt"; wu: "fn.wu"; wv: "fn.wv"; ww: "fn.ww"; wx: "fn.wx"; wy: "fn.wy"; wz: "fn.wz"; xa: "fn.xa"; xb: "fn.xb"; xc: "fn.xc"; xd: "fn.xd"; xe: "fn.xe"; xf: "fn.xf"; xg: "fn.xg"; xh: "fn.xh"; xi: "fn.xi"; xj: "fn.xj"; xk: "fn.xk"; xl: "fn.xl"; xm: "fn.xm"; xn: "fn.xn"; xo: "fn.xo"; xp: "fn.xp"; xq: "fn.xq"; xr: "fn.xr"; xs: "fn.xs"; xt: "fn.xt"; xu: "fn.xu"; xv: "fn.xv"; xw: "fn.xw"; xx: "fn.xx"; xy: "fn.xy"; xz: "fn.xz"; ya: "fn.ya"; yb: "fn.yb"; yc: "fn.yc"; yd: "fn.yd"; ye: "fn.ye"; yf: "fn.yf"; yg: "fn.yg"; yh: "fn.yh"; yi: "fn.yi"; yj: "fn.yj"; yk: "fn.yk"; yl: "fn.yl"; ym: "fn.ym"; yn: "fn.yn"; yo: "fn.yo"; yp: "fn.yp"; yq: "fn.yq"; yr: "fn.yr"; ys: "fn.ys"; yt: "fn.yt"; yu: "fn.yu"; yv: "fn.yv"; yw: "fn.yw"; yx: "fn.yx"; yy: "fn.yy"; yz: "fn.yz"; za: "fn.za"; zb: "fn.zb"; zc: "fn.zc"; zd: "fn.zd"; ze: "fn.ze"; zf: "fn.zf"; zg: "fn.zg"; zh: "fn.zh"; zi: "fn.zi"; zj: "fn.zj"; zk: "fn.zk"; zl: "fn.zl"; zm: "fn.zm"; zn: "fn.zn"; zo: "fn.zo"; zp: "fn.zp"; zq: "fn.zq"; zr: "fn.zr"; zs: "fn.zs"; zt: "fn.zt"; zu: "fn.zu"; zv: "fn.zv"; zw: "fn.zw"; zx: "fn.zx"; zy: "fn.zy"; zz: "fn.zz"; }; fo: { aa: "fo.aa"; ab: "fo.ab"; ac: "fo.ac"; ad: "fo.ad"; ae: "fo.ae"; af: "fo.af"; ag: "fo.ag"; ah: "fo.ah"; ai: "fo.ai"; aj: "fo.aj"; ak: "fo.ak"; al: "fo.al"; am: "fo.am"; an: "fo.an"; ao: "fo.ao"; ap: "fo.ap"; aq: "fo.aq"; ar: "fo.ar"; as: "fo.as"; at: "fo.at"; au: "fo.au"; av: "fo.av"; aw: "fo.aw"; ax: "fo.ax"; ay: "fo.ay"; az: "fo.az"; ba: "fo.ba"; bb: "fo.bb"; bc: "fo.bc"; bd: "fo.bd"; be: "fo.be"; bf: "fo.bf"; bg: "fo.bg"; bh: "fo.bh"; bi: "fo.bi"; bj: "fo.bj"; bk: "fo.bk"; bl: "fo.bl"; bm: "fo.bm"; bn: "fo.bn"; bo: "fo.bo"; bp: "fo.bp"; bq: "fo.bq"; br: "fo.br"; bs: "fo.bs"; bt: "fo.bt"; bu: "fo.bu"; bv: "fo.bv"; bw: "fo.bw"; bx: "fo.bx"; by: "fo.by"; bz: "fo.bz"; ca: "fo.ca"; cb: "fo.cb"; cc: "fo.cc"; cd: "fo.cd"; ce: "fo.ce"; cf: "fo.cf"; cg: "fo.cg"; ch: "fo.ch"; ci: "fo.ci"; cj: "fo.cj"; ck: "fo.ck"; cl: "fo.cl"; cm: "fo.cm"; cn: "fo.cn"; co: "fo.co"; cp: "fo.cp"; cq: "fo.cq"; cr: "fo.cr"; cs: "fo.cs"; ct: "fo.ct"; cu: "fo.cu"; cv: "fo.cv"; cw: "fo.cw"; cx: "fo.cx"; cy: "fo.cy"; cz: "fo.cz"; da: "fo.da"; db: "fo.db"; dc: "fo.dc"; dd: "fo.dd"; de: "fo.de"; df: "fo.df"; dg: "fo.dg"; dh: "fo.dh"; di: "fo.di"; dj: "fo.dj"; dk: "fo.dk"; dl: "fo.dl"; dm: "fo.dm"; dn: "fo.dn"; do: "fo.do"; dp: "fo.dp"; dq: "fo.dq"; dr: "fo.dr"; ds: "fo.ds"; dt: "fo.dt"; du: "fo.du"; dv: "fo.dv"; dw: "fo.dw"; dx: "fo.dx"; dy: "fo.dy"; dz: "fo.dz"; ea: "fo.ea"; eb: "fo.eb"; ec: "fo.ec"; ed: "fo.ed"; ee: "fo.ee"; ef: "fo.ef"; eg: "fo.eg"; eh: "fo.eh"; ei: "fo.ei"; ej: "fo.ej"; ek: "fo.ek"; el: "fo.el"; em: "fo.em"; en: "fo.en"; eo: "fo.eo"; ep: "fo.ep"; eq: "fo.eq"; er: "fo.er"; es: "fo.es"; et: "fo.et"; eu: "fo.eu"; ev: "fo.ev"; ew: "fo.ew"; ex: "fo.ex"; ey: "fo.ey"; ez: "fo.ez"; fa: "fo.fa"; fb: "fo.fb"; fc: "fo.fc"; fd: "fo.fd"; fe: "fo.fe"; ff: "fo.ff"; fg: "fo.fg"; fh: "fo.fh"; fi: "fo.fi"; fj: "fo.fj"; fk: "fo.fk"; fl: "fo.fl"; fm: "fo.fm"; fn: "fo.fn"; fo: "fo.fo"; fp: "fo.fp"; fq: "fo.fq"; fr: "fo.fr"; fs: "fo.fs"; ft: "fo.ft"; fu: "fo.fu"; fv: "fo.fv"; fw: "fo.fw"; fx: "fo.fx"; fy: "fo.fy"; fz: "fo.fz"; ga: "fo.ga"; gb: "fo.gb"; gc: "fo.gc"; gd: "fo.gd"; ge: "fo.ge"; gf: "fo.gf"; gg: "fo.gg"; gh: "fo.gh"; gi: "fo.gi"; gj: "fo.gj"; gk: "fo.gk"; gl: "fo.gl"; gm: "fo.gm"; gn: "fo.gn"; go: "fo.go"; gp: "fo.gp"; gq: "fo.gq"; gr: "fo.gr"; gs: "fo.gs"; gt: "fo.gt"; gu: "fo.gu"; gv: "fo.gv"; gw: "fo.gw"; gx: "fo.gx"; gy: "fo.gy"; gz: "fo.gz"; ha: "fo.ha"; hb: "fo.hb"; hc: "fo.hc"; hd: "fo.hd"; he: "fo.he"; hf: "fo.hf"; hg: "fo.hg"; hh: "fo.hh"; hi: "fo.hi"; hj: "fo.hj"; hk: "fo.hk"; hl: "fo.hl"; hm: "fo.hm"; hn: "fo.hn"; ho: "fo.ho"; hp: "fo.hp"; hq: "fo.hq"; hr: "fo.hr"; hs: "fo.hs"; ht: "fo.ht"; hu: "fo.hu"; hv: "fo.hv"; hw: "fo.hw"; hx: "fo.hx"; hy: "fo.hy"; hz: "fo.hz"; ia: "fo.ia"; ib: "fo.ib"; ic: "fo.ic"; id: "fo.id"; ie: "fo.ie"; if: "fo.if"; ig: "fo.ig"; ih: "fo.ih"; ii: "fo.ii"; ij: "fo.ij"; ik: "fo.ik"; il: "fo.il"; im: "fo.im"; in: "fo.in"; io: "fo.io"; ip: "fo.ip"; iq: "fo.iq"; ir: "fo.ir"; is: "fo.is"; it: "fo.it"; iu: "fo.iu"; iv: "fo.iv"; iw: "fo.iw"; ix: "fo.ix"; iy: "fo.iy"; iz: "fo.iz"; ja: "fo.ja"; jb: "fo.jb"; jc: "fo.jc"; jd: "fo.jd"; je: "fo.je"; jf: "fo.jf"; jg: "fo.jg"; jh: "fo.jh"; ji: "fo.ji"; jj: "fo.jj"; jk: "fo.jk"; jl: "fo.jl"; jm: "fo.jm"; jn: "fo.jn"; jo: "fo.jo"; jp: "fo.jp"; jq: "fo.jq"; jr: "fo.jr"; js: "fo.js"; jt: "fo.jt"; ju: "fo.ju"; jv: "fo.jv"; jw: "fo.jw"; jx: "fo.jx"; jy: "fo.jy"; jz: "fo.jz"; ka: "fo.ka"; kb: "fo.kb"; kc: "fo.kc"; kd: "fo.kd"; ke: "fo.ke"; kf: "fo.kf"; kg: "fo.kg"; kh: "fo.kh"; ki: "fo.ki"; kj: "fo.kj"; kk: "fo.kk"; kl: "fo.kl"; km: "fo.km"; kn: "fo.kn"; ko: "fo.ko"; kp: "fo.kp"; kq: "fo.kq"; kr: "fo.kr"; ks: "fo.ks"; kt: "fo.kt"; ku: "fo.ku"; kv: "fo.kv"; kw: "fo.kw"; kx: "fo.kx"; ky: "fo.ky"; kz: "fo.kz"; la: "fo.la"; lb: "fo.lb"; lc: "fo.lc"; ld: "fo.ld"; le: "fo.le"; lf: "fo.lf"; lg: "fo.lg"; lh: "fo.lh"; li: "fo.li"; lj: "fo.lj"; lk: "fo.lk"; ll: "fo.ll"; lm: "fo.lm"; ln: "fo.ln"; lo: "fo.lo"; lp: "fo.lp"; lq: "fo.lq"; lr: "fo.lr"; ls: "fo.ls"; lt: "fo.lt"; lu: "fo.lu"; lv: "fo.lv"; lw: "fo.lw"; lx: "fo.lx"; ly: "fo.ly"; lz: "fo.lz"; ma: "fo.ma"; mb: "fo.mb"; mc: "fo.mc"; md: "fo.md"; me: "fo.me"; mf: "fo.mf"; mg: "fo.mg"; mh: "fo.mh"; mi: "fo.mi"; mj: "fo.mj"; mk: "fo.mk"; ml: "fo.ml"; mm: "fo.mm"; mn: "fo.mn"; mo: "fo.mo"; mp: "fo.mp"; mq: "fo.mq"; mr: "fo.mr"; ms: "fo.ms"; mt: "fo.mt"; mu: "fo.mu"; mv: "fo.mv"; mw: "fo.mw"; mx: "fo.mx"; my: "fo.my"; mz: "fo.mz"; na: "fo.na"; nb: "fo.nb"; nc: "fo.nc"; nd: "fo.nd"; ne: "fo.ne"; nf: "fo.nf"; ng: "fo.ng"; nh: "fo.nh"; ni: "fo.ni"; nj: "fo.nj"; nk: "fo.nk"; nl: "fo.nl"; nm: "fo.nm"; nn: "fo.nn"; no: "fo.no"; np: "fo.np"; nq: "fo.nq"; nr: "fo.nr"; ns: "fo.ns"; nt: "fo.nt"; nu: "fo.nu"; nv: "fo.nv"; nw: "fo.nw"; nx: "fo.nx"; ny: "fo.ny"; nz: "fo.nz"; oa: "fo.oa"; ob: "fo.ob"; oc: "fo.oc"; od: "fo.od"; oe: "fo.oe"; of: "fo.of"; og: "fo.og"; oh: "fo.oh"; oi: "fo.oi"; oj: "fo.oj"; ok: "fo.ok"; ol: "fo.ol"; om: "fo.om"; on: "fo.on"; oo: "fo.oo"; op: "fo.op"; oq: "fo.oq"; or: "fo.or"; os: "fo.os"; ot: "fo.ot"; ou: "fo.ou"; ov: "fo.ov"; ow: "fo.ow"; ox: "fo.ox"; oy: "fo.oy"; oz: "fo.oz"; pa: "fo.pa"; pb: "fo.pb"; pc: "fo.pc"; pd: "fo.pd"; pe: "fo.pe"; pf: "fo.pf"; pg: "fo.pg"; ph: "fo.ph"; pi: "fo.pi"; pj: "fo.pj"; pk: "fo.pk"; pl: "fo.pl"; pm: "fo.pm"; pn: "fo.pn"; po: "fo.po"; pp: "fo.pp"; pq: "fo.pq"; pr: "fo.pr"; ps: "fo.ps"; pt: "fo.pt"; pu: "fo.pu"; pv: "fo.pv"; pw: "fo.pw"; px: "fo.px"; py: "fo.py"; pz: "fo.pz"; qa: "fo.qa"; qb: "fo.qb"; qc: "fo.qc"; qd: "fo.qd"; qe: "fo.qe"; qf: "fo.qf"; qg: "fo.qg"; qh: "fo.qh"; qi: "fo.qi"; qj: "fo.qj"; qk: "fo.qk"; ql: "fo.ql"; qm: "fo.qm"; qn: "fo.qn"; qo: "fo.qo"; qp: "fo.qp"; qq: "fo.qq"; qr: "fo.qr"; qs: "fo.qs"; qt: "fo.qt"; qu: "fo.qu"; qv: "fo.qv"; qw: "fo.qw"; qx: "fo.qx"; qy: "fo.qy"; qz: "fo.qz"; ra: "fo.ra"; rb: "fo.rb"; rc: "fo.rc"; rd: "fo.rd"; re: "fo.re"; rf: "fo.rf"; rg: "fo.rg"; rh: "fo.rh"; ri: "fo.ri"; rj: "fo.rj"; rk: "fo.rk"; rl: "fo.rl"; rm: "fo.rm"; rn: "fo.rn"; ro: "fo.ro"; rp: "fo.rp"; rq: "fo.rq"; rr: "fo.rr"; rs: "fo.rs"; rt: "fo.rt"; ru: "fo.ru"; rv: "fo.rv"; rw: "fo.rw"; rx: "fo.rx"; ry: "fo.ry"; rz: "fo.rz"; sa: "fo.sa"; sb: "fo.sb"; sc: "fo.sc"; sd: "fo.sd"; se: "fo.se"; sf: "fo.sf"; sg: "fo.sg"; sh: "fo.sh"; si: "fo.si"; sj: "fo.sj"; sk: "fo.sk"; sl: "fo.sl"; sm: "fo.sm"; sn: "fo.sn"; so: "fo.so"; sp: "fo.sp"; sq: "fo.sq"; sr: "fo.sr"; ss: "fo.ss"; st: "fo.st"; su: "fo.su"; sv: "fo.sv"; sw: "fo.sw"; sx: "fo.sx"; sy: "fo.sy"; sz: "fo.sz"; ta: "fo.ta"; tb: "fo.tb"; tc: "fo.tc"; td: "fo.td"; te: "fo.te"; tf: "fo.tf"; tg: "fo.tg"; th: "fo.th"; ti: "fo.ti"; tj: "fo.tj"; tk: "fo.tk"; tl: "fo.tl"; tm: "fo.tm"; tn: "fo.tn"; to: "fo.to"; tp: "fo.tp"; tq: "fo.tq"; tr: "fo.tr"; ts: "fo.ts"; tt: "fo.tt"; tu: "fo.tu"; tv: "fo.tv"; tw: "fo.tw"; tx: "fo.tx"; ty: "fo.ty"; tz: "fo.tz"; ua: "fo.ua"; ub: "fo.ub"; uc: "fo.uc"; ud: "fo.ud"; ue: "fo.ue"; uf: "fo.uf"; ug: "fo.ug"; uh: "fo.uh"; ui: "fo.ui"; uj: "fo.uj"; uk: "fo.uk"; ul: "fo.ul"; um: "fo.um"; un: "fo.un"; uo: "fo.uo"; up: "fo.up"; uq: "fo.uq"; ur: "fo.ur"; us: "fo.us"; ut: "fo.ut"; uu: "fo.uu"; uv: "fo.uv"; uw: "fo.uw"; ux: "fo.ux"; uy: "fo.uy"; uz: "fo.uz"; va: "fo.va"; vb: "fo.vb"; vc: "fo.vc"; vd: "fo.vd"; ve: "fo.ve"; vf: "fo.vf"; vg: "fo.vg"; vh: "fo.vh"; vi: "fo.vi"; vj: "fo.vj"; vk: "fo.vk"; vl: "fo.vl"; vm: "fo.vm"; vn: "fo.vn"; vo: "fo.vo"; vp: "fo.vp"; vq: "fo.vq"; vr: "fo.vr"; vs: "fo.vs"; vt: "fo.vt"; vu: "fo.vu"; vv: "fo.vv"; vw: "fo.vw"; vx: "fo.vx"; vy: "fo.vy"; vz: "fo.vz"; wa: "fo.wa"; wb: "fo.wb"; wc: "fo.wc"; wd: "fo.wd"; we: "fo.we"; wf: "fo.wf"; wg: "fo.wg"; wh: "fo.wh"; wi: "fo.wi"; wj: "fo.wj"; wk: "fo.wk"; wl: "fo.wl"; wm: "fo.wm"; wn: "fo.wn"; wo: "fo.wo"; wp: "fo.wp"; wq: "fo.wq"; wr: "fo.wr"; ws: "fo.ws"; wt: "fo.wt"; wu: "fo.wu"; wv: "fo.wv"; ww: "fo.ww"; wx: "fo.wx"; wy: "fo.wy"; wz: "fo.wz"; xa: "fo.xa"; xb: "fo.xb"; xc: "fo.xc"; xd: "fo.xd"; xe: "fo.xe"; xf: "fo.xf"; xg: "fo.xg"; xh: "fo.xh"; xi: "fo.xi"; xj: "fo.xj"; xk: "fo.xk"; xl: "fo.xl"; xm: "fo.xm"; xn: "fo.xn"; xo: "fo.xo"; xp: "fo.xp"; xq: "fo.xq"; xr: "fo.xr"; xs: "fo.xs"; xt: "fo.xt"; xu: "fo.xu"; xv: "fo.xv"; xw: "fo.xw"; xx: "fo.xx"; xy: "fo.xy"; xz: "fo.xz"; ya: "fo.ya"; yb: "fo.yb"; yc: "fo.yc"; yd: "fo.yd"; ye: "fo.ye"; yf: "fo.yf"; yg: "fo.yg"; yh: "fo.yh"; yi: "fo.yi"; yj: "fo.yj"; yk: "fo.yk"; yl: "fo.yl"; ym: "fo.ym"; yn: "fo.yn"; yo: "fo.yo"; yp: "fo.yp"; yq: "fo.yq"; yr: "fo.yr"; ys: "fo.ys"; yt: "fo.yt"; yu: "fo.yu"; yv: "fo.yv"; yw: "fo.yw"; yx: "fo.yx"; yy: "fo.yy"; yz: "fo.yz"; za: "fo.za"; zb: "fo.zb"; zc: "fo.zc"; zd: "fo.zd"; ze: "fo.ze"; zf: "fo.zf"; zg: "fo.zg"; zh: "fo.zh"; zi: "fo.zi"; zj: "fo.zj"; zk: "fo.zk"; zl: "fo.zl"; zm: "fo.zm"; zn: "fo.zn"; zo: "fo.zo"; zp: "fo.zp"; zq: "fo.zq"; zr: "fo.zr"; zs: "fo.zs"; zt: "fo.zt"; zu: "fo.zu"; zv: "fo.zv"; zw: "fo.zw"; zx: "fo.zx"; zy: "fo.zy"; zz: "fo.zz"; }; fp: { aa: "fp.aa"; ab: "fp.ab"; ac: "fp.ac"; ad: "fp.ad"; ae: "fp.ae"; af: "fp.af"; ag: "fp.ag"; ah: "fp.ah"; ai: "fp.ai"; aj: "fp.aj"; ak: "fp.ak"; al: "fp.al"; am: "fp.am"; an: "fp.an"; ao: "fp.ao"; ap: "fp.ap"; aq: "fp.aq"; ar: "fp.ar"; as: "fp.as"; at: "fp.at"; au: "fp.au"; av: "fp.av"; aw: "fp.aw"; ax: "fp.ax"; ay: "fp.ay"; az: "fp.az"; ba: "fp.ba"; bb: "fp.bb"; bc: "fp.bc"; bd: "fp.bd"; be: "fp.be"; bf: "fp.bf"; bg: "fp.bg"; bh: "fp.bh"; bi: "fp.bi"; bj: "fp.bj"; bk: "fp.bk"; bl: "fp.bl"; bm: "fp.bm"; bn: "fp.bn"; bo: "fp.bo"; bp: "fp.bp"; bq: "fp.bq"; br: "fp.br"; bs: "fp.bs"; bt: "fp.bt"; bu: "fp.bu"; bv: "fp.bv"; bw: "fp.bw"; bx: "fp.bx"; by: "fp.by"; bz: "fp.bz"; ca: "fp.ca"; cb: "fp.cb"; cc: "fp.cc"; cd: "fp.cd"; ce: "fp.ce"; cf: "fp.cf"; cg: "fp.cg"; ch: "fp.ch"; ci: "fp.ci"; cj: "fp.cj"; ck: "fp.ck"; cl: "fp.cl"; cm: "fp.cm"; cn: "fp.cn"; co: "fp.co"; cp: "fp.cp"; cq: "fp.cq"; cr: "fp.cr"; cs: "fp.cs"; ct: "fp.ct"; cu: "fp.cu"; cv: "fp.cv"; cw: "fp.cw"; cx: "fp.cx"; cy: "fp.cy"; cz: "fp.cz"; da: "fp.da"; db: "fp.db"; dc: "fp.dc"; dd: "fp.dd"; de: "fp.de"; df: "fp.df"; dg: "fp.dg"; dh: "fp.dh"; di: "fp.di"; dj: "fp.dj"; dk: "fp.dk"; dl: "fp.dl"; dm: "fp.dm"; dn: "fp.dn"; do: "fp.do"; dp: "fp.dp"; dq: "fp.dq"; dr: "fp.dr"; ds: "fp.ds"; dt: "fp.dt"; du: "fp.du"; dv: "fp.dv"; dw: "fp.dw"; dx: "fp.dx"; dy: "fp.dy"; dz: "fp.dz"; ea: "fp.ea"; eb: "fp.eb"; ec: "fp.ec"; ed: "fp.ed"; ee: "fp.ee"; ef: "fp.ef"; eg: "fp.eg"; eh: "fp.eh"; ei: "fp.ei"; ej: "fp.ej"; ek: "fp.ek"; el: "fp.el"; em: "fp.em"; en: "fp.en"; eo: "fp.eo"; ep: "fp.ep"; eq: "fp.eq"; er: "fp.er"; es: "fp.es"; et: "fp.et"; eu: "fp.eu"; ev: "fp.ev"; ew: "fp.ew"; ex: "fp.ex"; ey: "fp.ey"; ez: "fp.ez"; fa: "fp.fa"; fb: "fp.fb"; fc: "fp.fc"; fd: "fp.fd"; fe: "fp.fe"; ff: "fp.ff"; fg: "fp.fg"; fh: "fp.fh"; fi: "fp.fi"; fj: "fp.fj"; fk: "fp.fk"; fl: "fp.fl"; fm: "fp.fm"; fn: "fp.fn"; fo: "fp.fo"; fp: "fp.fp"; fq: "fp.fq"; fr: "fp.fr"; fs: "fp.fs"; ft: "fp.ft"; fu: "fp.fu"; fv: "fp.fv"; fw: "fp.fw"; fx: "fp.fx"; fy: "fp.fy"; fz: "fp.fz"; ga: "fp.ga"; gb: "fp.gb"; gc: "fp.gc"; gd: "fp.gd"; ge: "fp.ge"; gf: "fp.gf"; gg: "fp.gg"; gh: "fp.gh"; gi: "fp.gi"; gj: "fp.gj"; gk: "fp.gk"; gl: "fp.gl"; gm: "fp.gm"; gn: "fp.gn"; go: "fp.go"; gp: "fp.gp"; gq: "fp.gq"; gr: "fp.gr"; gs: "fp.gs"; gt: "fp.gt"; gu: "fp.gu"; gv: "fp.gv"; gw: "fp.gw"; gx: "fp.gx"; gy: "fp.gy"; gz: "fp.gz"; ha: "fp.ha"; hb: "fp.hb"; hc: "fp.hc"; hd: "fp.hd"; he: "fp.he"; hf: "fp.hf"; hg: "fp.hg"; hh: "fp.hh"; hi: "fp.hi"; hj: "fp.hj"; hk: "fp.hk"; hl: "fp.hl"; hm: "fp.hm"; hn: "fp.hn"; ho: "fp.ho"; hp: "fp.hp"; hq: "fp.hq"; hr: "fp.hr"; hs: "fp.hs"; ht: "fp.ht"; hu: "fp.hu"; hv: "fp.hv"; hw: "fp.hw"; hx: "fp.hx"; hy: "fp.hy"; hz: "fp.hz"; ia: "fp.ia"; ib: "fp.ib"; ic: "fp.ic"; id: "fp.id"; ie: "fp.ie"; if: "fp.if"; ig: "fp.ig"; ih: "fp.ih"; ii: "fp.ii"; ij: "fp.ij"; ik: "fp.ik"; il: "fp.il"; im: "fp.im"; in: "fp.in"; io: "fp.io"; ip: "fp.ip"; iq: "fp.iq"; ir: "fp.ir"; is: "fp.is"; it: "fp.it"; iu: "fp.iu"; iv: "fp.iv"; iw: "fp.iw"; ix: "fp.ix"; iy: "fp.iy"; iz: "fp.iz"; ja: "fp.ja"; jb: "fp.jb"; jc: "fp.jc"; jd: "fp.jd"; je: "fp.je"; jf: "fp.jf"; jg: "fp.jg"; jh: "fp.jh"; ji: "fp.ji"; jj: "fp.jj"; jk: "fp.jk"; jl: "fp.jl"; jm: "fp.jm"; jn: "fp.jn"; jo: "fp.jo"; jp: "fp.jp"; jq: "fp.jq"; jr: "fp.jr"; js: "fp.js"; jt: "fp.jt"; ju: "fp.ju"; jv: "fp.jv"; jw: "fp.jw"; jx: "fp.jx"; jy: "fp.jy"; jz: "fp.jz"; ka: "fp.ka"; kb: "fp.kb"; kc: "fp.kc"; kd: "fp.kd"; ke: "fp.ke"; kf: "fp.kf"; kg: "fp.kg"; kh: "fp.kh"; ki: "fp.ki"; kj: "fp.kj"; kk: "fp.kk"; kl: "fp.kl"; km: "fp.km"; kn: "fp.kn"; ko: "fp.ko"; kp: "fp.kp"; kq: "fp.kq"; kr: "fp.kr"; ks: "fp.ks"; kt: "fp.kt"; ku: "fp.ku"; kv: "fp.kv"; kw: "fp.kw"; kx: "fp.kx"; ky: "fp.ky"; kz: "fp.kz"; la: "fp.la"; lb: "fp.lb"; lc: "fp.lc"; ld: "fp.ld"; le: "fp.le"; lf: "fp.lf"; lg: "fp.lg"; lh: "fp.lh"; li: "fp.li"; lj: "fp.lj"; lk: "fp.lk"; ll: "fp.ll"; lm: "fp.lm"; ln: "fp.ln"; lo: "fp.lo"; lp: "fp.lp"; lq: "fp.lq"; lr: "fp.lr"; ls: "fp.ls"; lt: "fp.lt"; lu: "fp.lu"; lv: "fp.lv"; lw: "fp.lw"; lx: "fp.lx"; ly: "fp.ly"; lz: "fp.lz"; ma: "fp.ma"; mb: "fp.mb"; mc: "fp.mc"; md: "fp.md"; me: "fp.me"; mf: "fp.mf"; mg: "fp.mg"; mh: "fp.mh"; mi: "fp.mi"; mj: "fp.mj"; mk: "fp.mk"; ml: "fp.ml"; mm: "fp.mm"; mn: "fp.mn"; mo: "fp.mo"; mp: "fp.mp"; mq: "fp.mq"; mr: "fp.mr"; ms: "fp.ms"; mt: "fp.mt"; mu: "fp.mu"; mv: "fp.mv"; mw: "fp.mw"; mx: "fp.mx"; my: "fp.my"; mz: "fp.mz"; na: "fp.na"; nb: "fp.nb"; nc: "fp.nc"; nd: "fp.nd"; ne: "fp.ne"; nf: "fp.nf"; ng: "fp.ng"; nh: "fp.nh"; ni: "fp.ni"; nj: "fp.nj"; nk: "fp.nk"; nl: "fp.nl"; nm: "fp.nm"; nn: "fp.nn"; no: "fp.no"; np: "fp.np"; nq: "fp.nq"; nr: "fp.nr"; ns: "fp.ns"; nt: "fp.nt"; nu: "fp.nu"; nv: "fp.nv"; nw: "fp.nw"; nx: "fp.nx"; ny: "fp.ny"; nz: "fp.nz"; oa: "fp.oa"; ob: "fp.ob"; oc: "fp.oc"; od: "fp.od"; oe: "fp.oe"; of: "fp.of"; og: "fp.og"; oh: "fp.oh"; oi: "fp.oi"; oj: "fp.oj"; ok: "fp.ok"; ol: "fp.ol"; om: "fp.om"; on: "fp.on"; oo: "fp.oo"; op: "fp.op"; oq: "fp.oq"; or: "fp.or"; os: "fp.os"; ot: "fp.ot"; ou: "fp.ou"; ov: "fp.ov"; ow: "fp.ow"; ox: "fp.ox"; oy: "fp.oy"; oz: "fp.oz"; pa: "fp.pa"; pb: "fp.pb"; pc: "fp.pc"; pd: "fp.pd"; pe: "fp.pe"; pf: "fp.pf"; pg: "fp.pg"; ph: "fp.ph"; pi: "fp.pi"; pj: "fp.pj"; pk: "fp.pk"; pl: "fp.pl"; pm: "fp.pm"; pn: "fp.pn"; po: "fp.po"; pp: "fp.pp"; pq: "fp.pq"; pr: "fp.pr"; ps: "fp.ps"; pt: "fp.pt"; pu: "fp.pu"; pv: "fp.pv"; pw: "fp.pw"; px: "fp.px"; py: "fp.py"; pz: "fp.pz"; qa: "fp.qa"; qb: "fp.qb"; qc: "fp.qc"; qd: "fp.qd"; qe: "fp.qe"; qf: "fp.qf"; qg: "fp.qg"; qh: "fp.qh"; qi: "fp.qi"; qj: "fp.qj"; qk: "fp.qk"; ql: "fp.ql"; qm: "fp.qm"; qn: "fp.qn"; qo: "fp.qo"; qp: "fp.qp"; qq: "fp.qq"; qr: "fp.qr"; qs: "fp.qs"; qt: "fp.qt"; qu: "fp.qu"; qv: "fp.qv"; qw: "fp.qw"; qx: "fp.qx"; qy: "fp.qy"; qz: "fp.qz"; ra: "fp.ra"; rb: "fp.rb"; rc: "fp.rc"; rd: "fp.rd"; re: "fp.re"; rf: "fp.rf"; rg: "fp.rg"; rh: "fp.rh"; ri: "fp.ri"; rj: "fp.rj"; rk: "fp.rk"; rl: "fp.rl"; rm: "fp.rm"; rn: "fp.rn"; ro: "fp.ro"; rp: "fp.rp"; rq: "fp.rq"; rr: "fp.rr"; rs: "fp.rs"; rt: "fp.rt"; ru: "fp.ru"; rv: "fp.rv"; rw: "fp.rw"; rx: "fp.rx"; ry: "fp.ry"; rz: "fp.rz"; sa: "fp.sa"; sb: "fp.sb"; sc: "fp.sc"; sd: "fp.sd"; se: "fp.se"; sf: "fp.sf"; sg: "fp.sg"; sh: "fp.sh"; si: "fp.si"; sj: "fp.sj"; sk: "fp.sk"; sl: "fp.sl"; sm: "fp.sm"; sn: "fp.sn"; so: "fp.so"; sp: "fp.sp"; sq: "fp.sq"; sr: "fp.sr"; ss: "fp.ss"; st: "fp.st"; su: "fp.su"; sv: "fp.sv"; sw: "fp.sw"; sx: "fp.sx"; sy: "fp.sy"; sz: "fp.sz"; ta: "fp.ta"; tb: "fp.tb"; tc: "fp.tc"; td: "fp.td"; te: "fp.te"; tf: "fp.tf"; tg: "fp.tg"; th: "fp.th"; ti: "fp.ti"; tj: "fp.tj"; tk: "fp.tk"; tl: "fp.tl"; tm: "fp.tm"; tn: "fp.tn"; to: "fp.to"; tp: "fp.tp"; tq: "fp.tq"; tr: "fp.tr"; ts: "fp.ts"; tt: "fp.tt"; tu: "fp.tu"; tv: "fp.tv"; tw: "fp.tw"; tx: "fp.tx"; ty: "fp.ty"; tz: "fp.tz"; ua: "fp.ua"; ub: "fp.ub"; uc: "fp.uc"; ud: "fp.ud"; ue: "fp.ue"; uf: "fp.uf"; ug: "fp.ug"; uh: "fp.uh"; ui: "fp.ui"; uj: "fp.uj"; uk: "fp.uk"; ul: "fp.ul"; um: "fp.um"; un: "fp.un"; uo: "fp.uo"; up: "fp.up"; uq: "fp.uq"; ur: "fp.ur"; us: "fp.us"; ut: "fp.ut"; uu: "fp.uu"; uv: "fp.uv"; uw: "fp.uw"; ux: "fp.ux"; uy: "fp.uy"; uz: "fp.uz"; va: "fp.va"; vb: "fp.vb"; vc: "fp.vc"; vd: "fp.vd"; ve: "fp.ve"; vf: "fp.vf"; vg: "fp.vg"; vh: "fp.vh"; vi: "fp.vi"; vj: "fp.vj"; vk: "fp.vk"; vl: "fp.vl"; vm: "fp.vm"; vn: "fp.vn"; vo: "fp.vo"; vp: "fp.vp"; vq: "fp.vq"; vr: "fp.vr"; vs: "fp.vs"; vt: "fp.vt"; vu: "fp.vu"; vv: "fp.vv"; vw: "fp.vw"; vx: "fp.vx"; vy: "fp.vy"; vz: "fp.vz"; wa: "fp.wa"; wb: "fp.wb"; wc: "fp.wc"; wd: "fp.wd"; we: "fp.we"; wf: "fp.wf"; wg: "fp.wg"; wh: "fp.wh"; wi: "fp.wi"; wj: "fp.wj"; wk: "fp.wk"; wl: "fp.wl"; wm: "fp.wm"; wn: "fp.wn"; wo: "fp.wo"; wp: "fp.wp"; wq: "fp.wq"; wr: "fp.wr"; ws: "fp.ws"; wt: "fp.wt"; wu: "fp.wu"; wv: "fp.wv"; ww: "fp.ww"; wx: "fp.wx"; wy: "fp.wy"; wz: "fp.wz"; xa: "fp.xa"; xb: "fp.xb"; xc: "fp.xc"; xd: "fp.xd"; xe: "fp.xe"; xf: "fp.xf"; xg: "fp.xg"; xh: "fp.xh"; xi: "fp.xi"; xj: "fp.xj"; xk: "fp.xk"; xl: "fp.xl"; xm: "fp.xm"; xn: "fp.xn"; xo: "fp.xo"; xp: "fp.xp"; xq: "fp.xq"; xr: "fp.xr"; xs: "fp.xs"; xt: "fp.xt"; xu: "fp.xu"; xv: "fp.xv"; xw: "fp.xw"; xx: "fp.xx"; xy: "fp.xy"; xz: "fp.xz"; ya: "fp.ya"; yb: "fp.yb"; yc: "fp.yc"; yd: "fp.yd"; ye: "fp.ye"; yf: "fp.yf"; yg: "fp.yg"; yh: "fp.yh"; yi: "fp.yi"; yj: "fp.yj"; yk: "fp.yk"; yl: "fp.yl"; ym: "fp.ym"; yn: "fp.yn"; yo: "fp.yo"; yp: "fp.yp"; yq: "fp.yq"; yr: "fp.yr"; ys: "fp.ys"; yt: "fp.yt"; yu: "fp.yu"; yv: "fp.yv"; yw: "fp.yw"; yx: "fp.yx"; yy: "fp.yy"; yz: "fp.yz"; za: "fp.za"; zb: "fp.zb"; zc: "fp.zc"; zd: "fp.zd"; ze: "fp.ze"; zf: "fp.zf"; zg: "fp.zg"; zh: "fp.zh"; zi: "fp.zi"; zj: "fp.zj"; zk: "fp.zk"; zl: "fp.zl"; zm: "fp.zm"; zn: "fp.zn"; zo: "fp.zo"; zp: "fp.zp"; zq: "fp.zq"; zr: "fp.zr"; zs: "fp.zs"; zt: "fp.zt"; zu: "fp.zu"; zv: "fp.zv"; zw: "fp.zw"; zx: "fp.zx"; zy: "fp.zy"; zz: "fp.zz"; }; fq: { aa: "fq.aa"; ab: "fq.ab"; ac: "fq.ac"; ad: "fq.ad"; ae: "fq.ae"; af: "fq.af"; ag: "fq.ag"; ah: "fq.ah"; ai: "fq.ai"; aj: "fq.aj"; ak: "fq.ak"; al: "fq.al"; am: "fq.am"; an: "fq.an"; ao: "fq.ao"; ap: "fq.ap"; aq: "fq.aq"; ar: "fq.ar"; as: "fq.as"; at: "fq.at"; au: "fq.au"; av: "fq.av"; aw: "fq.aw"; ax: "fq.ax"; ay: "fq.ay"; az: "fq.az"; ba: "fq.ba"; bb: "fq.bb"; bc: "fq.bc"; bd: "fq.bd"; be: "fq.be"; bf: "fq.bf"; bg: "fq.bg"; bh: "fq.bh"; bi: "fq.bi"; bj: "fq.bj"; bk: "fq.bk"; bl: "fq.bl"; bm: "fq.bm"; bn: "fq.bn"; bo: "fq.bo"; bp: "fq.bp"; bq: "fq.bq"; br: "fq.br"; bs: "fq.bs"; bt: "fq.bt"; bu: "fq.bu"; bv: "fq.bv"; bw: "fq.bw"; bx: "fq.bx"; by: "fq.by"; bz: "fq.bz"; ca: "fq.ca"; cb: "fq.cb"; cc: "fq.cc"; cd: "fq.cd"; ce: "fq.ce"; cf: "fq.cf"; cg: "fq.cg"; ch: "fq.ch"; ci: "fq.ci"; cj: "fq.cj"; ck: "fq.ck"; cl: "fq.cl"; cm: "fq.cm"; cn: "fq.cn"; co: "fq.co"; cp: "fq.cp"; cq: "fq.cq"; cr: "fq.cr"; cs: "fq.cs"; ct: "fq.ct"; cu: "fq.cu"; cv: "fq.cv"; cw: "fq.cw"; cx: "fq.cx"; cy: "fq.cy"; cz: "fq.cz"; da: "fq.da"; db: "fq.db"; dc: "fq.dc"; dd: "fq.dd"; de: "fq.de"; df: "fq.df"; dg: "fq.dg"; dh: "fq.dh"; di: "fq.di"; dj: "fq.dj"; dk: "fq.dk"; dl: "fq.dl"; dm: "fq.dm"; dn: "fq.dn"; do: "fq.do"; dp: "fq.dp"; dq: "fq.dq"; dr: "fq.dr"; ds: "fq.ds"; dt: "fq.dt"; du: "fq.du"; dv: "fq.dv"; dw: "fq.dw"; dx: "fq.dx"; dy: "fq.dy"; dz: "fq.dz"; ea: "fq.ea"; eb: "fq.eb"; ec: "fq.ec"; ed: "fq.ed"; ee: "fq.ee"; ef: "fq.ef"; eg: "fq.eg"; eh: "fq.eh"; ei: "fq.ei"; ej: "fq.ej"; ek: "fq.ek"; el: "fq.el"; em: "fq.em"; en: "fq.en"; eo: "fq.eo"; ep: "fq.ep"; eq: "fq.eq"; er: "fq.er"; es: "fq.es"; et: "fq.et"; eu: "fq.eu"; ev: "fq.ev"; ew: "fq.ew"; ex: "fq.ex"; ey: "fq.ey"; ez: "fq.ez"; fa: "fq.fa"; fb: "fq.fb"; fc: "fq.fc"; fd: "fq.fd"; fe: "fq.fe"; ff: "fq.ff"; fg: "fq.fg"; fh: "fq.fh"; fi: "fq.fi"; fj: "fq.fj"; fk: "fq.fk"; fl: "fq.fl"; fm: "fq.fm"; fn: "fq.fn"; fo: "fq.fo"; fp: "fq.fp"; fq: "fq.fq"; fr: "fq.fr"; fs: "fq.fs"; ft: "fq.ft"; fu: "fq.fu"; fv: "fq.fv"; fw: "fq.fw"; fx: "fq.fx"; fy: "fq.fy"; fz: "fq.fz"; ga: "fq.ga"; gb: "fq.gb"; gc: "fq.gc"; gd: "fq.gd"; ge: "fq.ge"; gf: "fq.gf"; gg: "fq.gg"; gh: "fq.gh"; gi: "fq.gi"; gj: "fq.gj"; gk: "fq.gk"; gl: "fq.gl"; gm: "fq.gm"; gn: "fq.gn"; go: "fq.go"; gp: "fq.gp"; gq: "fq.gq"; gr: "fq.gr"; gs: "fq.gs"; gt: "fq.gt"; gu: "fq.gu"; gv: "fq.gv"; gw: "fq.gw"; gx: "fq.gx"; gy: "fq.gy"; gz: "fq.gz"; ha: "fq.ha"; hb: "fq.hb"; hc: "fq.hc"; hd: "fq.hd"; he: "fq.he"; hf: "fq.hf"; hg: "fq.hg"; hh: "fq.hh"; hi: "fq.hi"; hj: "fq.hj"; hk: "fq.hk"; hl: "fq.hl"; hm: "fq.hm"; hn: "fq.hn"; ho: "fq.ho"; hp: "fq.hp"; hq: "fq.hq"; hr: "fq.hr"; hs: "fq.hs"; ht: "fq.ht"; hu: "fq.hu"; hv: "fq.hv"; hw: "fq.hw"; hx: "fq.hx"; hy: "fq.hy"; hz: "fq.hz"; ia: "fq.ia"; ib: "fq.ib"; ic: "fq.ic"; id: "fq.id"; ie: "fq.ie"; if: "fq.if"; ig: "fq.ig"; ih: "fq.ih"; ii: "fq.ii"; ij: "fq.ij"; ik: "fq.ik"; il: "fq.il"; im: "fq.im"; in: "fq.in"; io: "fq.io"; ip: "fq.ip"; iq: "fq.iq"; ir: "fq.ir"; is: "fq.is"; it: "fq.it"; iu: "fq.iu"; iv: "fq.iv"; iw: "fq.iw"; ix: "fq.ix"; iy: "fq.iy"; iz: "fq.iz"; ja: "fq.ja"; jb: "fq.jb"; jc: "fq.jc"; jd: "fq.jd"; je: "fq.je"; jf: "fq.jf"; jg: "fq.jg"; jh: "fq.jh"; ji: "fq.ji"; jj: "fq.jj"; jk: "fq.jk"; jl: "fq.jl"; jm: "fq.jm"; jn: "fq.jn"; jo: "fq.jo"; jp: "fq.jp"; jq: "fq.jq"; jr: "fq.jr"; js: "fq.js"; jt: "fq.jt"; ju: "fq.ju"; jv: "fq.jv"; jw: "fq.jw"; jx: "fq.jx"; jy: "fq.jy"; jz: "fq.jz"; ka: "fq.ka"; kb: "fq.kb"; kc: "fq.kc"; kd: "fq.kd"; ke: "fq.ke"; kf: "fq.kf"; kg: "fq.kg"; kh: "fq.kh"; ki: "fq.ki"; kj: "fq.kj"; kk: "fq.kk"; kl: "fq.kl"; km: "fq.km"; kn: "fq.kn"; ko: "fq.ko"; kp: "fq.kp"; kq: "fq.kq"; kr: "fq.kr"; ks: "fq.ks"; kt: "fq.kt"; ku: "fq.ku"; kv: "fq.kv"; kw: "fq.kw"; kx: "fq.kx"; ky: "fq.ky"; kz: "fq.kz"; la: "fq.la"; lb: "fq.lb"; lc: "fq.lc"; ld: "fq.ld"; le: "fq.le"; lf: "fq.lf"; lg: "fq.lg"; lh: "fq.lh"; li: "fq.li"; lj: "fq.lj"; lk: "fq.lk"; ll: "fq.ll"; lm: "fq.lm"; ln: "fq.ln"; lo: "fq.lo"; lp: "fq.lp"; lq: "fq.lq"; lr: "fq.lr"; ls: "fq.ls"; lt: "fq.lt"; lu: "fq.lu"; lv: "fq.lv"; lw: "fq.lw"; lx: "fq.lx"; ly: "fq.ly"; lz: "fq.lz"; ma: "fq.ma"; mb: "fq.mb"; mc: "fq.mc"; md: "fq.md"; me: "fq.me"; mf: "fq.mf"; mg: "fq.mg"; mh: "fq.mh"; mi: "fq.mi"; mj: "fq.mj"; mk: "fq.mk"; ml: "fq.ml"; mm: "fq.mm"; mn: "fq.mn"; mo: "fq.mo"; mp: "fq.mp"; mq: "fq.mq"; mr: "fq.mr"; ms: "fq.ms"; mt: "fq.mt"; mu: "fq.mu"; mv: "fq.mv"; mw: "fq.mw"; mx: "fq.mx"; my: "fq.my"; mz: "fq.mz"; na: "fq.na"; nb: "fq.nb"; nc: "fq.nc"; nd: "fq.nd"; ne: "fq.ne"; nf: "fq.nf"; ng: "fq.ng"; nh: "fq.nh"; ni: "fq.ni"; nj: "fq.nj"; nk: "fq.nk"; nl: "fq.nl"; nm: "fq.nm"; nn: "fq.nn"; no: "fq.no"; np: "fq.np"; nq: "fq.nq"; nr: "fq.nr"; ns: "fq.ns"; nt: "fq.nt"; nu: "fq.nu"; nv: "fq.nv"; nw: "fq.nw"; nx: "fq.nx"; ny: "fq.ny"; nz: "fq.nz"; oa: "fq.oa"; ob: "fq.ob"; oc: "fq.oc"; od: "fq.od"; oe: "fq.oe"; of: "fq.of"; og: "fq.og"; oh: "fq.oh"; oi: "fq.oi"; oj: "fq.oj"; ok: "fq.ok"; ol: "fq.ol"; om: "fq.om"; on: "fq.on"; oo: "fq.oo"; op: "fq.op"; oq: "fq.oq"; or: "fq.or"; os: "fq.os"; ot: "fq.ot"; ou: "fq.ou"; ov: "fq.ov"; ow: "fq.ow"; ox: "fq.ox"; oy: "fq.oy"; oz: "fq.oz"; pa: "fq.pa"; pb: "fq.pb"; pc: "fq.pc"; pd: "fq.pd"; pe: "fq.pe"; pf: "fq.pf"; pg: "fq.pg"; ph: "fq.ph"; pi: "fq.pi"; pj: "fq.pj"; pk: "fq.pk"; pl: "fq.pl"; pm: "fq.pm"; pn: "fq.pn"; po: "fq.po"; pp: "fq.pp"; pq: "fq.pq"; pr: "fq.pr"; ps: "fq.ps"; pt: "fq.pt"; pu: "fq.pu"; pv: "fq.pv"; pw: "fq.pw"; px: "fq.px"; py: "fq.py"; pz: "fq.pz"; qa: "fq.qa"; qb: "fq.qb"; qc: "fq.qc"; qd: "fq.qd"; qe: "fq.qe"; qf: "fq.qf"; qg: "fq.qg"; qh: "fq.qh"; qi: "fq.qi"; qj: "fq.qj"; qk: "fq.qk"; ql: "fq.ql"; qm: "fq.qm"; qn: "fq.qn"; qo: "fq.qo"; qp: "fq.qp"; qq: "fq.qq"; qr: "fq.qr"; qs: "fq.qs"; qt: "fq.qt"; qu: "fq.qu"; qv: "fq.qv"; qw: "fq.qw"; qx: "fq.qx"; qy: "fq.qy"; qz: "fq.qz"; ra: "fq.ra"; rb: "fq.rb"; rc: "fq.rc"; rd: "fq.rd"; re: "fq.re"; rf: "fq.rf"; rg: "fq.rg"; rh: "fq.rh"; ri: "fq.ri"; rj: "fq.rj"; rk: "fq.rk"; rl: "fq.rl"; rm: "fq.rm"; rn: "fq.rn"; ro: "fq.ro"; rp: "fq.rp"; rq: "fq.rq"; rr: "fq.rr"; rs: "fq.rs"; rt: "fq.rt"; ru: "fq.ru"; rv: "fq.rv"; rw: "fq.rw"; rx: "fq.rx"; ry: "fq.ry"; rz: "fq.rz"; sa: "fq.sa"; sb: "fq.sb"; sc: "fq.sc"; sd: "fq.sd"; se: "fq.se"; sf: "fq.sf"; sg: "fq.sg"; sh: "fq.sh"; si: "fq.si"; sj: "fq.sj"; sk: "fq.sk"; sl: "fq.sl"; sm: "fq.sm"; sn: "fq.sn"; so: "fq.so"; sp: "fq.sp"; sq: "fq.sq"; sr: "fq.sr"; ss: "fq.ss"; st: "fq.st"; su: "fq.su"; sv: "fq.sv"; sw: "fq.sw"; sx: "fq.sx"; sy: "fq.sy"; sz: "fq.sz"; ta: "fq.ta"; tb: "fq.tb"; tc: "fq.tc"; td: "fq.td"; te: "fq.te"; tf: "fq.tf"; tg: "fq.tg"; th: "fq.th"; ti: "fq.ti"; tj: "fq.tj"; tk: "fq.tk"; tl: "fq.tl"; tm: "fq.tm"; tn: "fq.tn"; to: "fq.to"; tp: "fq.tp"; tq: "fq.tq"; tr: "fq.tr"; ts: "fq.ts"; tt: "fq.tt"; tu: "fq.tu"; tv: "fq.tv"; tw: "fq.tw"; tx: "fq.tx"; ty: "fq.ty"; tz: "fq.tz"; ua: "fq.ua"; ub: "fq.ub"; uc: "fq.uc"; ud: "fq.ud"; ue: "fq.ue"; uf: "fq.uf"; ug: "fq.ug"; uh: "fq.uh"; ui: "fq.ui"; uj: "fq.uj"; uk: "fq.uk"; ul: "fq.ul"; um: "fq.um"; un: "fq.un"; uo: "fq.uo"; up: "fq.up"; uq: "fq.uq"; ur: "fq.ur"; us: "fq.us"; ut: "fq.ut"; uu: "fq.uu"; uv: "fq.uv"; uw: "fq.uw"; ux: "fq.ux"; uy: "fq.uy"; uz: "fq.uz"; va: "fq.va"; vb: "fq.vb"; vc: "fq.vc"; vd: "fq.vd"; ve: "fq.ve"; vf: "fq.vf"; vg: "fq.vg"; vh: "fq.vh"; vi: "fq.vi"; vj: "fq.vj"; vk: "fq.vk"; vl: "fq.vl"; vm: "fq.vm"; vn: "fq.vn"; vo: "fq.vo"; vp: "fq.vp"; vq: "fq.vq"; vr: "fq.vr"; vs: "fq.vs"; vt: "fq.vt"; vu: "fq.vu"; vv: "fq.vv"; vw: "fq.vw"; vx: "fq.vx"; vy: "fq.vy"; vz: "fq.vz"; wa: "fq.wa"; wb: "fq.wb"; wc: "fq.wc"; wd: "fq.wd"; we: "fq.we"; wf: "fq.wf"; wg: "fq.wg"; wh: "fq.wh"; wi: "fq.wi"; wj: "fq.wj"; wk: "fq.wk"; wl: "fq.wl"; wm: "fq.wm"; wn: "fq.wn"; wo: "fq.wo"; wp: "fq.wp"; wq: "fq.wq"; wr: "fq.wr"; ws: "fq.ws"; wt: "fq.wt"; wu: "fq.wu"; wv: "fq.wv"; ww: "fq.ww"; wx: "fq.wx"; wy: "fq.wy"; wz: "fq.wz"; xa: "fq.xa"; xb: "fq.xb"; xc: "fq.xc"; xd: "fq.xd"; xe: "fq.xe"; xf: "fq.xf"; xg: "fq.xg"; xh: "fq.xh"; xi: "fq.xi"; xj: "fq.xj"; xk: "fq.xk"; xl: "fq.xl"; xm: "fq.xm"; xn: "fq.xn"; xo: "fq.xo"; xp: "fq.xp"; xq: "fq.xq"; xr: "fq.xr"; xs: "fq.xs"; xt: "fq.xt"; xu: "fq.xu"; xv: "fq.xv"; xw: "fq.xw"; xx: "fq.xx"; xy: "fq.xy"; xz: "fq.xz"; ya: "fq.ya"; yb: "fq.yb"; yc: "fq.yc"; yd: "fq.yd"; ye: "fq.ye"; yf: "fq.yf"; yg: "fq.yg"; yh: "fq.yh"; yi: "fq.yi"; yj: "fq.yj"; yk: "fq.yk"; yl: "fq.yl"; ym: "fq.ym"; yn: "fq.yn"; yo: "fq.yo"; yp: "fq.yp"; yq: "fq.yq"; yr: "fq.yr"; ys: "fq.ys"; yt: "fq.yt"; yu: "fq.yu"; yv: "fq.yv"; yw: "fq.yw"; yx: "fq.yx"; yy: "fq.yy"; yz: "fq.yz"; za: "fq.za"; zb: "fq.zb"; zc: "fq.zc"; zd: "fq.zd"; ze: "fq.ze"; zf: "fq.zf"; zg: "fq.zg"; zh: "fq.zh"; zi: "fq.zi"; zj: "fq.zj"; zk: "fq.zk"; zl: "fq.zl"; zm: "fq.zm"; zn: "fq.zn"; zo: "fq.zo"; zp: "fq.zp"; zq: "fq.zq"; zr: "fq.zr"; zs: "fq.zs"; zt: "fq.zt"; zu: "fq.zu"; zv: "fq.zv"; zw: "fq.zw"; zx: "fq.zx"; zy: "fq.zy"; zz: "fq.zz"; }; fr: { aa: "fr.aa"; ab: "fr.ab"; ac: "fr.ac"; ad: "fr.ad"; ae: "fr.ae"; af: "fr.af"; ag: "fr.ag"; ah: "fr.ah"; ai: "fr.ai"; aj: "fr.aj"; ak: "fr.ak"; al: "fr.al"; am: "fr.am"; an: "fr.an"; ao: "fr.ao"; ap: "fr.ap"; aq: "fr.aq"; ar: "fr.ar"; as: "fr.as"; at: "fr.at"; au: "fr.au"; av: "fr.av"; aw: "fr.aw"; ax: "fr.ax"; ay: "fr.ay"; az: "fr.az"; ba: "fr.ba"; bb: "fr.bb"; bc: "fr.bc"; bd: "fr.bd"; be: "fr.be"; bf: "fr.bf"; bg: "fr.bg"; bh: "fr.bh"; bi: "fr.bi"; bj: "fr.bj"; bk: "fr.bk"; bl: "fr.bl"; bm: "fr.bm"; bn: "fr.bn"; bo: "fr.bo"; bp: "fr.bp"; bq: "fr.bq"; br: "fr.br"; bs: "fr.bs"; bt: "fr.bt"; bu: "fr.bu"; bv: "fr.bv"; bw: "fr.bw"; bx: "fr.bx"; by: "fr.by"; bz: "fr.bz"; ca: "fr.ca"; cb: "fr.cb"; cc: "fr.cc"; cd: "fr.cd"; ce: "fr.ce"; cf: "fr.cf"; cg: "fr.cg"; ch: "fr.ch"; ci: "fr.ci"; cj: "fr.cj"; ck: "fr.ck"; cl: "fr.cl"; cm: "fr.cm"; cn: "fr.cn"; co: "fr.co"; cp: "fr.cp"; cq: "fr.cq"; cr: "fr.cr"; cs: "fr.cs"; ct: "fr.ct"; cu: "fr.cu"; cv: "fr.cv"; cw: "fr.cw"; cx: "fr.cx"; cy: "fr.cy"; cz: "fr.cz"; da: "fr.da"; db: "fr.db"; dc: "fr.dc"; dd: "fr.dd"; de: "fr.de"; df: "fr.df"; dg: "fr.dg"; dh: "fr.dh"; di: "fr.di"; dj: "fr.dj"; dk: "fr.dk"; dl: "fr.dl"; dm: "fr.dm"; dn: "fr.dn"; do: "fr.do"; dp: "fr.dp"; dq: "fr.dq"; dr: "fr.dr"; ds: "fr.ds"; dt: "fr.dt"; du: "fr.du"; dv: "fr.dv"; dw: "fr.dw"; dx: "fr.dx"; dy: "fr.dy"; dz: "fr.dz"; ea: "fr.ea"; eb: "fr.eb"; ec: "fr.ec"; ed: "fr.ed"; ee: "fr.ee"; ef: "fr.ef"; eg: "fr.eg"; eh: "fr.eh"; ei: "fr.ei"; ej: "fr.ej"; ek: "fr.ek"; el: "fr.el"; em: "fr.em"; en: "fr.en"; eo: "fr.eo"; ep: "fr.ep"; eq: "fr.eq"; er: "fr.er"; es: "fr.es"; et: "fr.et"; eu: "fr.eu"; ev: "fr.ev"; ew: "fr.ew"; ex: "fr.ex"; ey: "fr.ey"; ez: "fr.ez"; fa: "fr.fa"; fb: "fr.fb"; fc: "fr.fc"; fd: "fr.fd"; fe: "fr.fe"; ff: "fr.ff"; fg: "fr.fg"; fh: "fr.fh"; fi: "fr.fi"; fj: "fr.fj"; fk: "fr.fk"; fl: "fr.fl"; fm: "fr.fm"; fn: "fr.fn"; fo: "fr.fo"; fp: "fr.fp"; fq: "fr.fq"; fr: "fr.fr"; fs: "fr.fs"; ft: "fr.ft"; fu: "fr.fu"; fv: "fr.fv"; fw: "fr.fw"; fx: "fr.fx"; fy: "fr.fy"; fz: "fr.fz"; ga: "fr.ga"; gb: "fr.gb"; gc: "fr.gc"; gd: "fr.gd"; ge: "fr.ge"; gf: "fr.gf"; gg: "fr.gg"; gh: "fr.gh"; gi: "fr.gi"; gj: "fr.gj"; gk: "fr.gk"; gl: "fr.gl"; gm: "fr.gm"; gn: "fr.gn"; go: "fr.go"; gp: "fr.gp"; gq: "fr.gq"; gr: "fr.gr"; gs: "fr.gs"; gt: "fr.gt"; gu: "fr.gu"; gv: "fr.gv"; gw: "fr.gw"; gx: "fr.gx"; gy: "fr.gy"; gz: "fr.gz"; ha: "fr.ha"; hb: "fr.hb"; hc: "fr.hc"; hd: "fr.hd"; he: "fr.he"; hf: "fr.hf"; hg: "fr.hg"; hh: "fr.hh"; hi: "fr.hi"; hj: "fr.hj"; hk: "fr.hk"; hl: "fr.hl"; hm: "fr.hm"; hn: "fr.hn"; ho: "fr.ho"; hp: "fr.hp"; hq: "fr.hq"; hr: "fr.hr"; hs: "fr.hs"; ht: "fr.ht"; hu: "fr.hu"; hv: "fr.hv"; hw: "fr.hw"; hx: "fr.hx"; hy: "fr.hy"; hz: "fr.hz"; ia: "fr.ia"; ib: "fr.ib"; ic: "fr.ic"; id: "fr.id"; ie: "fr.ie"; if: "fr.if"; ig: "fr.ig"; ih: "fr.ih"; ii: "fr.ii"; ij: "fr.ij"; ik: "fr.ik"; il: "fr.il"; im: "fr.im"; in: "fr.in"; io: "fr.io"; ip: "fr.ip"; iq: "fr.iq"; ir: "fr.ir"; is: "fr.is"; it: "fr.it"; iu: "fr.iu"; iv: "fr.iv"; iw: "fr.iw"; ix: "fr.ix"; iy: "fr.iy"; iz: "fr.iz"; ja: "fr.ja"; jb: "fr.jb"; jc: "fr.jc"; jd: "fr.jd"; je: "fr.je"; jf: "fr.jf"; jg: "fr.jg"; jh: "fr.jh"; ji: "fr.ji"; jj: "fr.jj"; jk: "fr.jk"; jl: "fr.jl"; jm: "fr.jm"; jn: "fr.jn"; jo: "fr.jo"; jp: "fr.jp"; jq: "fr.jq"; jr: "fr.jr"; js: "fr.js"; jt: "fr.jt"; ju: "fr.ju"; jv: "fr.jv"; jw: "fr.jw"; jx: "fr.jx"; jy: "fr.jy"; jz: "fr.jz"; ka: "fr.ka"; kb: "fr.kb"; kc: "fr.kc"; kd: "fr.kd"; ke: "fr.ke"; kf: "fr.kf"; kg: "fr.kg"; kh: "fr.kh"; ki: "fr.ki"; kj: "fr.kj"; kk: "fr.kk"; kl: "fr.kl"; km: "fr.km"; kn: "fr.kn"; ko: "fr.ko"; kp: "fr.kp"; kq: "fr.kq"; kr: "fr.kr"; ks: "fr.ks"; kt: "fr.kt"; ku: "fr.ku"; kv: "fr.kv"; kw: "fr.kw"; kx: "fr.kx"; ky: "fr.ky"; kz: "fr.kz"; la: "fr.la"; lb: "fr.lb"; lc: "fr.lc"; ld: "fr.ld"; le: "fr.le"; lf: "fr.lf"; lg: "fr.lg"; lh: "fr.lh"; li: "fr.li"; lj: "fr.lj"; lk: "fr.lk"; ll: "fr.ll"; lm: "fr.lm"; ln: "fr.ln"; lo: "fr.lo"; lp: "fr.lp"; lq: "fr.lq"; lr: "fr.lr"; ls: "fr.ls"; lt: "fr.lt"; lu: "fr.lu"; lv: "fr.lv"; lw: "fr.lw"; lx: "fr.lx"; ly: "fr.ly"; lz: "fr.lz"; ma: "fr.ma"; mb: "fr.mb"; mc: "fr.mc"; md: "fr.md"; me: "fr.me"; mf: "fr.mf"; mg: "fr.mg"; mh: "fr.mh"; mi: "fr.mi"; mj: "fr.mj"; mk: "fr.mk"; ml: "fr.ml"; mm: "fr.mm"; mn: "fr.mn"; mo: "fr.mo"; mp: "fr.mp"; mq: "fr.mq"; mr: "fr.mr"; ms: "fr.ms"; mt: "fr.mt"; mu: "fr.mu"; mv: "fr.mv"; mw: "fr.mw"; mx: "fr.mx"; my: "fr.my"; mz: "fr.mz"; na: "fr.na"; nb: "fr.nb"; nc: "fr.nc"; nd: "fr.nd"; ne: "fr.ne"; nf: "fr.nf"; ng: "fr.ng"; nh: "fr.nh"; ni: "fr.ni"; nj: "fr.nj"; nk: "fr.nk"; nl: "fr.nl"; nm: "fr.nm"; nn: "fr.nn"; no: "fr.no"; np: "fr.np"; nq: "fr.nq"; nr: "fr.nr"; ns: "fr.ns"; nt: "fr.nt"; nu: "fr.nu"; nv: "fr.nv"; nw: "fr.nw"; nx: "fr.nx"; ny: "fr.ny"; nz: "fr.nz"; oa: "fr.oa"; ob: "fr.ob"; oc: "fr.oc"; od: "fr.od"; oe: "fr.oe"; of: "fr.of"; og: "fr.og"; oh: "fr.oh"; oi: "fr.oi"; oj: "fr.oj"; ok: "fr.ok"; ol: "fr.ol"; om: "fr.om"; on: "fr.on"; oo: "fr.oo"; op: "fr.op"; oq: "fr.oq"; or: "fr.or"; os: "fr.os"; ot: "fr.ot"; ou: "fr.ou"; ov: "fr.ov"; ow: "fr.ow"; ox: "fr.ox"; oy: "fr.oy"; oz: "fr.oz"; pa: "fr.pa"; pb: "fr.pb"; pc: "fr.pc"; pd: "fr.pd"; pe: "fr.pe"; pf: "fr.pf"; pg: "fr.pg"; ph: "fr.ph"; pi: "fr.pi"; pj: "fr.pj"; pk: "fr.pk"; pl: "fr.pl"; pm: "fr.pm"; pn: "fr.pn"; po: "fr.po"; pp: "fr.pp"; pq: "fr.pq"; pr: "fr.pr"; ps: "fr.ps"; pt: "fr.pt"; pu: "fr.pu"; pv: "fr.pv"; pw: "fr.pw"; px: "fr.px"; py: "fr.py"; pz: "fr.pz"; qa: "fr.qa"; qb: "fr.qb"; qc: "fr.qc"; qd: "fr.qd"; qe: "fr.qe"; qf: "fr.qf"; qg: "fr.qg"; qh: "fr.qh"; qi: "fr.qi"; qj: "fr.qj"; qk: "fr.qk"; ql: "fr.ql"; qm: "fr.qm"; qn: "fr.qn"; qo: "fr.qo"; qp: "fr.qp"; qq: "fr.qq"; qr: "fr.qr"; qs: "fr.qs"; qt: "fr.qt"; qu: "fr.qu"; qv: "fr.qv"; qw: "fr.qw"; qx: "fr.qx"; qy: "fr.qy"; qz: "fr.qz"; ra: "fr.ra"; rb: "fr.rb"; rc: "fr.rc"; rd: "fr.rd"; re: "fr.re"; rf: "fr.rf"; rg: "fr.rg"; rh: "fr.rh"; ri: "fr.ri"; rj: "fr.rj"; rk: "fr.rk"; rl: "fr.rl"; rm: "fr.rm"; rn: "fr.rn"; ro: "fr.ro"; rp: "fr.rp"; rq: "fr.rq"; rr: "fr.rr"; rs: "fr.rs"; rt: "fr.rt"; ru: "fr.ru"; rv: "fr.rv"; rw: "fr.rw"; rx: "fr.rx"; ry: "fr.ry"; rz: "fr.rz"; sa: "fr.sa"; sb: "fr.sb"; sc: "fr.sc"; sd: "fr.sd"; se: "fr.se"; sf: "fr.sf"; sg: "fr.sg"; sh: "fr.sh"; si: "fr.si"; sj: "fr.sj"; sk: "fr.sk"; sl: "fr.sl"; sm: "fr.sm"; sn: "fr.sn"; so: "fr.so"; sp: "fr.sp"; sq: "fr.sq"; sr: "fr.sr"; ss: "fr.ss"; st: "fr.st"; su: "fr.su"; sv: "fr.sv"; sw: "fr.sw"; sx: "fr.sx"; sy: "fr.sy"; sz: "fr.sz"; ta: "fr.ta"; tb: "fr.tb"; tc: "fr.tc"; td: "fr.td"; te: "fr.te"; tf: "fr.tf"; tg: "fr.tg"; th: "fr.th"; ti: "fr.ti"; tj: "fr.tj"; tk: "fr.tk"; tl: "fr.tl"; tm: "fr.tm"; tn: "fr.tn"; to: "fr.to"; tp: "fr.tp"; tq: "fr.tq"; tr: "fr.tr"; ts: "fr.ts"; tt: "fr.tt"; tu: "fr.tu"; tv: "fr.tv"; tw: "fr.tw"; tx: "fr.tx"; ty: "fr.ty"; tz: "fr.tz"; ua: "fr.ua"; ub: "fr.ub"; uc: "fr.uc"; ud: "fr.ud"; ue: "fr.ue"; uf: "fr.uf"; ug: "fr.ug"; uh: "fr.uh"; ui: "fr.ui"; uj: "fr.uj"; uk: "fr.uk"; ul: "fr.ul"; um: "fr.um"; un: "fr.un"; uo: "fr.uo"; up: "fr.up"; uq: "fr.uq"; ur: "fr.ur"; us: "fr.us"; ut: "fr.ut"; uu: "fr.uu"; uv: "fr.uv"; uw: "fr.uw"; ux: "fr.ux"; uy: "fr.uy"; uz: "fr.uz"; va: "fr.va"; vb: "fr.vb"; vc: "fr.vc"; vd: "fr.vd"; ve: "fr.ve"; vf: "fr.vf"; vg: "fr.vg"; vh: "fr.vh"; vi: "fr.vi"; ... 120 more ...; zz: "fr.zz"; }; ... 527 more ...; zz: { ...; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[null as any as {[K in manyprops]: {[K2 in manyprops]: `${K}.${K2}`}}] : { aa: { aa: "aa.aa"; ab: "aa.ab"; ac: "aa.ac"; ad: "aa.ad"; ae: "aa.ae"; af: "aa.af"; ag: "aa.ag"; ah: "aa.ah"; ai: "aa.ai"; aj: "aa.aj"; ak: "aa.ak"; al: "aa.al"; am: "aa.am"; an: "aa.an"; ao: "aa.ao"; ap: "aa.ap"; aq: "aa.aq"; ar: "aa.ar"; as: "aa.as"; at: "aa.at"; au: "aa.au"; av: "aa.av"; aw: "aa.aw"; ax: "aa.ax"; ay: "aa.ay"; az: "aa.az"; ba: "aa.ba"; bb: "aa.bb"; bc: "aa.bc"; bd: "aa.bd"; be: "aa.be"; bf: "aa.bf"; bg: "aa.bg"; bh: "aa.bh"; bi: "aa.bi"; bj: "aa.bj"; bk: "aa.bk"; bl: "aa.bl"; bm: "aa.bm"; bn: "aa.bn"; bo: "aa.bo"; bp: "aa.bp"; bq: "aa.bq"; br: "aa.br"; bs: "aa.bs"; bt: "aa.bt"; bu: "aa.bu"; bv: "aa.bv"; bw: "aa.bw"; bx: "aa.bx"; by: "aa.by"; bz: "aa.bz"; ca: "aa.ca"; cb: "aa.cb"; cc: "aa.cc"; cd: "aa.cd"; ce: "aa.ce"; cf: "aa.cf"; cg: "aa.cg"; ch: "aa.ch"; ci: "aa.ci"; cj: "aa.cj"; ck: "aa.ck"; cl: "aa.cl"; cm: "aa.cm"; cn: "aa.cn"; co: "aa.co"; cp: "aa.cp"; cq: "aa.cq"; cr: "aa.cr"; cs: "aa.cs"; ct: "aa.ct"; cu: "aa.cu"; cv: "aa.cv"; cw: "aa.cw"; cx: "aa.cx"; cy: "aa.cy"; cz: "aa.cz"; da: "aa.da"; db: "aa.db"; dc: "aa.dc"; dd: "aa.dd"; de: "aa.de"; df: "aa.df"; dg: "aa.dg"; dh: "aa.dh"; di: "aa.di"; dj: "aa.dj"; dk: "aa.dk"; dl: "aa.dl"; dm: "aa.dm"; dn: "aa.dn"; do: "aa.do"; dp: "aa.dp"; dq: "aa.dq"; dr: "aa.dr"; ds: "aa.ds"; dt: "aa.dt"; du: "aa.du"; dv: "aa.dv"; dw: "aa.dw"; dx: "aa.dx"; dy: "aa.dy"; dz: "aa.dz"; ea: "aa.ea"; eb: "aa.eb"; ec: "aa.ec"; ed: "aa.ed"; ee: "aa.ee"; ef: "aa.ef"; eg: "aa.eg"; eh: "aa.eh"; ei: "aa.ei"; ej: "aa.ej"; ek: "aa.ek"; el: "aa.el"; em: "aa.em"; en: "aa.en"; eo: "aa.eo"; ep: "aa.ep"; eq: "aa.eq"; er: "aa.er"; es: "aa.es"; et: "aa.et"; eu: "aa.eu"; ev: "aa.ev"; ew: "aa.ew"; ex: "aa.ex"; ey: "aa.ey"; ez: "aa.ez"; fa: "aa.fa"; fb: "aa.fb"; fc: "aa.fc"; fd: "aa.fd"; fe: "aa.fe"; ff: "aa.ff"; fg: "aa.fg"; fh: "aa.fh"; fi: "aa.fi"; fj: "aa.fj"; fk: "aa.fk"; fl: "aa.fl"; fm: "aa.fm"; fn: "aa.fn"; fo: "aa.fo"; fp: "aa.fp"; fq: "aa.fq"; fr: "aa.fr"; fs: "aa.fs"; ft: "aa.ft"; fu: "aa.fu"; fv: "aa.fv"; fw: "aa.fw"; fx: "aa.fx"; fy: "aa.fy"; fz: "aa.fz"; ga: "aa.ga"; gb: "aa.gb"; gc: "aa.gc"; gd: "aa.gd"; ge: "aa.ge"; gf: "aa.gf"; gg: "aa.gg"; gh: "aa.gh"; gi: "aa.gi"; gj: "aa.gj"; gk: "aa.gk"; gl: "aa.gl"; gm: "aa.gm"; gn: "aa.gn"; go: "aa.go"; gp: "aa.gp"; gq: "aa.gq"; gr: "aa.gr"; gs: "aa.gs"; gt: "aa.gt"; gu: "aa.gu"; gv: "aa.gv"; gw: "aa.gw"; gx: "aa.gx"; gy: "aa.gy"; gz: "aa.gz"; ha: "aa.ha"; hb: "aa.hb"; hc: "aa.hc"; hd: "aa.hd"; he: "aa.he"; hf: "aa.hf"; hg: "aa.hg"; hh: "aa.hh"; hi: "aa.hi"; hj: "aa.hj"; hk: "aa.hk"; hl: "aa.hl"; hm: "aa.hm"; hn: "aa.hn"; ho: "aa.ho"; hp: "aa.hp"; hq: "aa.hq"; hr: "aa.hr"; hs: "aa.hs"; ht: "aa.ht"; hu: "aa.hu"; hv: "aa.hv"; hw: "aa.hw"; hx: "aa.hx"; hy: "aa.hy"; hz: "aa.hz"; ia: "aa.ia"; ib: "aa.ib"; ic: "aa.ic"; id: "aa.id"; ie: "aa.ie"; if: "aa.if"; ig: "aa.ig"; ih: "aa.ih"; ii: "aa.ii"; ij: "aa.ij"; ik: "aa.ik"; il: "aa.il"; im: "aa.im"; in: "aa.in"; io: "aa.io"; ip: "aa.ip"; iq: "aa.iq"; ir: "aa.ir"; is: "aa.is"; it: "aa.it"; iu: "aa.iu"; iv: "aa.iv"; iw: "aa.iw"; ix: "aa.ix"; iy: "aa.iy"; iz: "aa.iz"; ja: "aa.ja"; jb: "aa.jb"; jc: "aa.jc"; jd: "aa.jd"; je: "aa.je"; jf: "aa.jf"; jg: "aa.jg"; jh: "aa.jh"; ji: "aa.ji"; jj: "aa.jj"; jk: "aa.jk"; jl: "aa.jl"; jm: "aa.jm"; jn: "aa.jn"; jo: "aa.jo"; jp: "aa.jp"; jq: "aa.jq"; jr: "aa.jr"; js: "aa.js"; jt: "aa.jt"; ju: "aa.ju"; jv: "aa.jv"; jw: "aa.jw"; jx: "aa.jx"; jy: "aa.jy"; jz: "aa.jz"; ka: "aa.ka"; kb: "aa.kb"; kc: "aa.kc"; kd: "aa.kd"; ke: "aa.ke"; kf: "aa.kf"; kg: "aa.kg"; kh: "aa.kh"; ki: "aa.ki"; kj: "aa.kj"; kk: "aa.kk"; kl: "aa.kl"; km: "aa.km"; kn: "aa.kn"; ko: "aa.ko"; kp: "aa.kp"; kq: "aa.kq"; kr: "aa.kr"; ks: "aa.ks"; kt: "aa.kt"; ku: "aa.ku"; kv: "aa.kv"; kw: "aa.kw"; kx: "aa.kx"; ky: "aa.ky"; kz: "aa.kz"; la: "aa.la"; lb: "aa.lb"; lc: "aa.lc"; ld: "aa.ld"; le: "aa.le"; lf: "aa.lf"; lg: "aa.lg"; lh: "aa.lh"; li: "aa.li"; lj: "aa.lj"; lk: "aa.lk"; ll: "aa.ll"; lm: "aa.lm"; ln: "aa.ln"; lo: "aa.lo"; lp: "aa.lp"; lq: "aa.lq"; lr: "aa.lr"; ls: "aa.ls"; lt: "aa.lt"; lu: "aa.lu"; lv: "aa.lv"; lw: "aa.lw"; lx: "aa.lx"; ly: "aa.ly"; lz: "aa.lz"; ma: "aa.ma"; mb: "aa.mb"; mc: "aa.mc"; md: "aa.md"; me: "aa.me"; mf: "aa.mf"; mg: "aa.mg"; mh: "aa.mh"; mi: "aa.mi"; mj: "aa.mj"; mk: "aa.mk"; ml: "aa.ml"; mm: "aa.mm"; mn: "aa.mn"; mo: "aa.mo"; mp: "aa.mp"; mq: "aa.mq"; mr: "aa.mr"; ms: "aa.ms"; mt: "aa.mt"; mu: "aa.mu"; mv: "aa.mv"; mw: "aa.mw"; mx: "aa.mx"; my: "aa.my"; mz: "aa.mz"; na: "aa.na"; nb: "aa.nb"; nc: "aa.nc"; nd: "aa.nd"; ne: "aa.ne"; nf: "aa.nf"; ng: "aa.ng"; nh: "aa.nh"; ni: "aa.ni"; nj: "aa.nj"; nk: "aa.nk"; nl: "aa.nl"; nm: "aa.nm"; nn: "aa.nn"; no: "aa.no"; np: "aa.np"; nq: "aa.nq"; nr: "aa.nr"; ns: "aa.ns"; nt: "aa.nt"; nu: "aa.nu"; nv: "aa.nv"; nw: "aa.nw"; nx: "aa.nx"; ny: "aa.ny"; nz: "aa.nz"; oa: "aa.oa"; ob: "aa.ob"; oc: "aa.oc"; od: "aa.od"; oe: "aa.oe"; of: "aa.of"; og: "aa.og"; oh: "aa.oh"; oi: "aa.oi"; oj: "aa.oj"; ok: "aa.ok"; ol: "aa.ol"; om: "aa.om"; on: "aa.on"; oo: "aa.oo"; op: "aa.op"; oq: "aa.oq"; or: "aa.or"; os: "aa.os"; ot: "aa.ot"; ou: "aa.ou"; ov: "aa.ov"; ow: "aa.ow"; ox: "aa.ox"; oy: "aa.oy"; oz: "aa.oz"; pa: "aa.pa"; pb: "aa.pb"; pc: "aa.pc"; pd: "aa.pd"; pe: "aa.pe"; pf: "aa.pf"; pg: "aa.pg"; ph: "aa.ph"; pi: "aa.pi"; pj: "aa.pj"; pk: "aa.pk"; pl: "aa.pl"; pm: "aa.pm"; pn: "aa.pn"; po: "aa.po"; pp: "aa.pp"; pq: "aa.pq"; pr: "aa.pr"; ps: "aa.ps"; pt: "aa.pt"; pu: "aa.pu"; pv: "aa.pv"; pw: "aa.pw"; px: "aa.px"; py: "aa.py"; pz: "aa.pz"; qa: "aa.qa"; qb: "aa.qb"; qc: "aa.qc"; qd: "aa.qd"; qe: "aa.qe"; qf: "aa.qf"; qg: "aa.qg"; qh: "aa.qh"; qi: "aa.qi"; qj: "aa.qj"; qk: "aa.qk"; ql: "aa.ql"; qm: "aa.qm"; qn: "aa.qn"; qo: "aa.qo"; qp: "aa.qp"; qq: "aa.qq"; qr: "aa.qr"; qs: "aa.qs"; qt: "aa.qt"; qu: "aa.qu"; qv: "aa.qv"; qw: "aa.qw"; qx: "aa.qx"; qy: "aa.qy"; qz: "aa.qz"; ra: "aa.ra"; rb: "aa.rb"; rc: "aa.rc"; rd: "aa.rd"; re: "aa.re"; rf: "aa.rf"; rg: "aa.rg"; rh: "aa.rh"; ri: "aa.ri"; rj: "aa.rj"; rk: "aa.rk"; rl: "aa.rl"; rm: "aa.rm"; rn: "aa.rn"; ro: "aa.ro"; rp: "aa.rp"; rq: "aa.rq"; rr: "aa.rr"; rs: "aa.rs"; rt: "aa.rt"; ru: "aa.ru"; rv: "aa.rv"; rw: "aa.rw"; rx: "aa.rx"; ry: "aa.ry"; rz: "aa.rz"; sa: "aa.sa"; sb: "aa.sb"; sc: "aa.sc"; sd: "aa.sd"; se: "aa.se"; sf: "aa.sf"; sg: "aa.sg"; sh: "aa.sh"; si: "aa.si"; sj: "aa.sj"; sk: "aa.sk"; sl: "aa.sl"; sm: "aa.sm"; sn: "aa.sn"; so: "aa.so"; sp: "aa.sp"; sq: "aa.sq"; sr: "aa.sr"; ss: "aa.ss"; st: "aa.st"; su: "aa.su"; sv: "aa.sv"; sw: "aa.sw"; sx: "aa.sx"; sy: "aa.sy"; sz: "aa.sz"; ta: "aa.ta"; tb: "aa.tb"; tc: "aa.tc"; td: "aa.td"; te: "aa.te"; tf: "aa.tf"; tg: "aa.tg"; th: "aa.th"; ti: "aa.ti"; tj: "aa.tj"; tk: "aa.tk"; tl: "aa.tl"; tm: "aa.tm"; tn: "aa.tn"; to: "aa.to"; tp: "aa.tp"; tq: "aa.tq"; tr: "aa.tr"; ts: "aa.ts"; tt: "aa.tt"; tu: "aa.tu"; tv: "aa.tv"; tw: "aa.tw"; tx: "aa.tx"; ty: "aa.ty"; tz: "aa.tz"; ua: "aa.ua"; ub: "aa.ub"; uc: "aa.uc"; ud: "aa.ud"; ue: "aa.ue"; uf: "aa.uf"; ug: "aa.ug"; uh: "aa.uh"; ui: "aa.ui"; uj: "aa.uj"; uk: "aa.uk"; ul: "aa.ul"; um: "aa.um"; un: "aa.un"; uo: "aa.uo"; up: "aa.up"; uq: "aa.uq"; ur: "aa.ur"; us: "aa.us"; ut: "aa.ut"; uu: "aa.uu"; uv: "aa.uv"; uw: "aa.uw"; ux: "aa.ux"; uy: "aa.uy"; uz: "aa.uz"; va: "aa.va"; vb: "aa.vb"; vc: "aa.vc"; vd: "aa.vd"; ve: "aa.ve"; vf: "aa.vf"; vg: "aa.vg"; vh: "aa.vh"; vi: "aa.vi"; vj: "aa.vj"; vk: "aa.vk"; vl: "aa.vl"; vm: "aa.vm"; vn: "aa.vn"; vo: "aa.vo"; vp: "aa.vp"; vq: "aa.vq"; vr: "aa.vr"; vs: "aa.vs"; vt: "aa.vt"; vu: "aa.vu"; vv: "aa.vv"; vw: "aa.vw"; vx: "aa.vx"; vy: "aa.vy"; vz: "aa.vz"; wa: "aa.wa"; wb: "aa.wb"; wc: "aa.wc"; wd: "aa.wd"; we: "aa.we"; wf: "aa.wf"; wg: "aa.wg"; wh: "aa.wh"; wi: "aa.wi"; wj: "aa.wj"; wk: "aa.wk"; wl: "aa.wl"; wm: "aa.wm"; wn: "aa.wn"; wo: "aa.wo"; wp: "aa.wp"; wq: "aa.wq"; wr: "aa.wr"; ws: "aa.ws"; wt: "aa.wt"; wu: "aa.wu"; wv: "aa.wv"; ww: "aa.ww"; wx: "aa.wx"; wy: "aa.wy"; wz: "aa.wz"; xa: "aa.xa"; xb: "aa.xb"; xc: "aa.xc"; xd: "aa.xd"; xe: "aa.xe"; xf: "aa.xf"; xg: "aa.xg"; xh: "aa.xh"; xi: "aa.xi"; xj: "aa.xj"; xk: "aa.xk"; xl: "aa.xl"; xm: "aa.xm"; xn: "aa.xn"; xo: "aa.xo"; xp: "aa.xp"; xq: "aa.xq"; xr: "aa.xr"; xs: "aa.xs"; xt: "aa.xt"; xu: "aa.xu"; xv: "aa.xv"; xw: "aa.xw"; xx: "aa.xx"; xy: "aa.xy"; xz: "aa.xz"; ya: "aa.ya"; yb: "aa.yb"; yc: "aa.yc"; yd: "aa.yd"; ye: "aa.ye"; yf: "aa.yf"; yg: "aa.yg"; yh: "aa.yh"; yi: "aa.yi"; yj: "aa.yj"; yk: "aa.yk"; yl: "aa.yl"; ym: "aa.ym"; yn: "aa.yn"; yo: "aa.yo"; yp: "aa.yp"; yq: "aa.yq"; yr: "aa.yr"; ys: "aa.ys"; yt: "aa.yt"; yu: "aa.yu"; yv: "aa.yv"; yw: "aa.yw"; yx: "aa.yx"; yy: "aa.yy"; yz: "aa.yz"; za: "aa.za"; zb: "aa.zb"; zc: "aa.zc"; zd: "aa.zd"; ze: "aa.ze"; zf: "aa.zf"; zg: "aa.zg"; zh: "aa.zh"; zi: "aa.zi"; zj: "aa.zj"; zk: "aa.zk"; zl: "aa.zl"; zm: "aa.zm"; zn: "aa.zn"; zo: "aa.zo"; zp: "aa.zp"; zq: "aa.zq"; zr: "aa.zr"; zs: "aa.zs"; zt: "aa.zt"; zu: "aa.zu"; zv: "aa.zv"; zw: "aa.zw"; zx: "aa.zx"; zy: "aa.zy"; zz: "aa.zz"; }; ab: { aa: "ab.aa"; ab: "ab.ab"; ac: "ab.ac"; ad: "ab.ad"; ae: "ab.ae"; af: "ab.af"; ag: "ab.ag"; ah: "ab.ah"; ai: "ab.ai"; aj: "ab.aj"; ak: "ab.ak"; al: "ab.al"; am: "ab.am"; an: "ab.an"; ao: "ab.ao"; ap: "ab.ap"; aq: "ab.aq"; ar: "ab.ar"; as: "ab.as"; at: "ab.at"; au: "ab.au"; av: "ab.av"; aw: "ab.aw"; ax: "ab.ax"; ay: "ab.ay"; az: "ab.az"; ba: "ab.ba"; bb: "ab.bb"; bc: "ab.bc"; bd: "ab.bd"; be: "ab.be"; bf: "ab.bf"; bg: "ab.bg"; bh: "ab.bh"; bi: "ab.bi"; bj: "ab.bj"; bk: "ab.bk"; bl: "ab.bl"; bm: "ab.bm"; bn: "ab.bn"; bo: "ab.bo"; bp: "ab.bp"; bq: "ab.bq"; br: "ab.br"; bs: "ab.bs"; bt: "ab.bt"; bu: "ab.bu"; bv: "ab.bv"; bw: "ab.bw"; bx: "ab.bx"; by: "ab.by"; bz: "ab.bz"; ca: "ab.ca"; cb: "ab.cb"; cc: "ab.cc"; cd: "ab.cd"; ce: "ab.ce"; cf: "ab.cf"; cg: "ab.cg"; ch: "ab.ch"; ci: "ab.ci"; cj: "ab.cj"; ck: "ab.ck"; cl: "ab.cl"; cm: "ab.cm"; cn: "ab.cn"; co: "ab.co"; cp: "ab.cp"; cq: "ab.cq"; cr: "ab.cr"; cs: "ab.cs"; ct: "ab.ct"; cu: "ab.cu"; cv: "ab.cv"; cw: "ab.cw"; cx: "ab.cx"; cy: "ab.cy"; cz: "ab.cz"; da: "ab.da"; db: "ab.db"; dc: "ab.dc"; dd: "ab.dd"; de: "ab.de"; df: "ab.df"; dg: "ab.dg"; dh: "ab.dh"; di: "ab.di"; dj: "ab.dj"; dk: "ab.dk"; dl: "ab.dl"; dm: "ab.dm"; dn: "ab.dn"; do: "ab.do"; dp: "ab.dp"; dq: "ab.dq"; dr: "ab.dr"; ds: "ab.ds"; dt: "ab.dt"; du: "ab.du"; dv: "ab.dv"; dw: "ab.dw"; dx: "ab.dx"; dy: "ab.dy"; dz: "ab.dz"; ea: "ab.ea"; eb: "ab.eb"; ec: "ab.ec"; ed: "ab.ed"; ee: "ab.ee"; ef: "ab.ef"; eg: "ab.eg"; eh: "ab.eh"; ei: "ab.ei"; ej: "ab.ej"; ek: "ab.ek"; el: "ab.el"; em: "ab.em"; en: "ab.en"; eo: "ab.eo"; ep: "ab.ep"; eq: "ab.eq"; er: "ab.er"; es: "ab.es"; et: "ab.et"; eu: "ab.eu"; ev: "ab.ev"; ew: "ab.ew"; ex: "ab.ex"; ey: "ab.ey"; ez: "ab.ez"; fa: "ab.fa"; fb: "ab.fb"; fc: "ab.fc"; fd: "ab.fd"; fe: "ab.fe"; ff: "ab.ff"; fg: "ab.fg"; fh: "ab.fh"; fi: "ab.fi"; fj: "ab.fj"; fk: "ab.fk"; fl: "ab.fl"; fm: "ab.fm"; fn: "ab.fn"; fo: "ab.fo"; fp: "ab.fp"; fq: "ab.fq"; fr: "ab.fr"; fs: "ab.fs"; ft: "ab.ft"; fu: "ab.fu"; fv: "ab.fv"; fw: "ab.fw"; fx: "ab.fx"; fy: "ab.fy"; fz: "ab.fz"; ga: "ab.ga"; gb: "ab.gb"; gc: "ab.gc"; gd: "ab.gd"; ge: "ab.ge"; gf: "ab.gf"; gg: "ab.gg"; gh: "ab.gh"; gi: "ab.gi"; gj: "ab.gj"; gk: "ab.gk"; gl: "ab.gl"; gm: "ab.gm"; gn: "ab.gn"; go: "ab.go"; gp: "ab.gp"; gq: "ab.gq"; gr: "ab.gr"; gs: "ab.gs"; gt: "ab.gt"; gu: "ab.gu"; gv: "ab.gv"; gw: "ab.gw"; gx: "ab.gx"; gy: "ab.gy"; gz: "ab.gz"; ha: "ab.ha"; hb: "ab.hb"; hc: "ab.hc"; hd: "ab.hd"; he: "ab.he"; hf: "ab.hf"; hg: "ab.hg"; hh: "ab.hh"; hi: "ab.hi"; hj: "ab.hj"; hk: "ab.hk"; hl: "ab.hl"; hm: "ab.hm"; hn: "ab.hn"; ho: "ab.ho"; hp: "ab.hp"; hq: "ab.hq"; hr: "ab.hr"; hs: "ab.hs"; ht: "ab.ht"; hu: "ab.hu"; hv: "ab.hv"; hw: "ab.hw"; hx: "ab.hx"; hy: "ab.hy"; hz: "ab.hz"; ia: "ab.ia"; ib: "ab.ib"; ic: "ab.ic"; id: "ab.id"; ie: "ab.ie"; if: "ab.if"; ig: "ab.ig"; ih: "ab.ih"; ii: "ab.ii"; ij: "ab.ij"; ik: "ab.ik"; il: "ab.il"; im: "ab.im"; in: "ab.in"; io: "ab.io"; ip: "ab.ip"; iq: "ab.iq"; ir: "ab.ir"; is: "ab.is"; it: "ab.it"; iu: "ab.iu"; iv: "ab.iv"; iw: "ab.iw"; ix: "ab.ix"; iy: "ab.iy"; iz: "ab.iz"; ja: "ab.ja"; jb: "ab.jb"; jc: "ab.jc"; jd: "ab.jd"; je: "ab.je"; jf: "ab.jf"; jg: "ab.jg"; jh: "ab.jh"; ji: "ab.ji"; jj: "ab.jj"; jk: "ab.jk"; jl: "ab.jl"; jm: "ab.jm"; jn: "ab.jn"; jo: "ab.jo"; jp: "ab.jp"; jq: "ab.jq"; jr: "ab.jr"; js: "ab.js"; jt: "ab.jt"; ju: "ab.ju"; jv: "ab.jv"; jw: "ab.jw"; jx: "ab.jx"; jy: "ab.jy"; jz: "ab.jz"; ka: "ab.ka"; kb: "ab.kb"; kc: "ab.kc"; kd: "ab.kd"; ke: "ab.ke"; kf: "ab.kf"; kg: "ab.kg"; kh: "ab.kh"; ki: "ab.ki"; kj: "ab.kj"; kk: "ab.kk"; kl: "ab.kl"; km: "ab.km"; kn: "ab.kn"; ko: "ab.ko"; kp: "ab.kp"; kq: "ab.kq"; kr: "ab.kr"; ks: "ab.ks"; kt: "ab.kt"; ku: "ab.ku"; kv: "ab.kv"; kw: "ab.kw"; kx: "ab.kx"; ky: "ab.ky"; kz: "ab.kz"; la: "ab.la"; lb: "ab.lb"; lc: "ab.lc"; ld: "ab.ld"; le: "ab.le"; lf: "ab.lf"; lg: "ab.lg"; lh: "ab.lh"; li: "ab.li"; lj: "ab.lj"; lk: "ab.lk"; ll: "ab.ll"; lm: "ab.lm"; ln: "ab.ln"; lo: "ab.lo"; lp: "ab.lp"; lq: "ab.lq"; lr: "ab.lr"; ls: "ab.ls"; lt: "ab.lt"; lu: "ab.lu"; lv: "ab.lv"; lw: "ab.lw"; lx: "ab.lx"; ly: "ab.ly"; lz: "ab.lz"; ma: "ab.ma"; mb: "ab.mb"; mc: "ab.mc"; md: "ab.md"; me: "ab.me"; mf: "ab.mf"; mg: "ab.mg"; mh: "ab.mh"; mi: "ab.mi"; mj: "ab.mj"; mk: "ab.mk"; ml: "ab.ml"; mm: "ab.mm"; mn: "ab.mn"; mo: "ab.mo"; mp: "ab.mp"; mq: "ab.mq"; mr: "ab.mr"; ms: "ab.ms"; mt: "ab.mt"; mu: "ab.mu"; mv: "ab.mv"; mw: "ab.mw"; mx: "ab.mx"; my: "ab.my"; mz: "ab.mz"; na: "ab.na"; nb: "ab.nb"; nc: "ab.nc"; nd: "ab.nd"; ne: "ab.ne"; nf: "ab.nf"; ng: "ab.ng"; nh: "ab.nh"; ni: "ab.ni"; nj: "ab.nj"; nk: "ab.nk"; nl: "ab.nl"; nm: "ab.nm"; nn: "ab.nn"; no: "ab.no"; np: "ab.np"; nq: "ab.nq"; nr: "ab.nr"; ns: "ab.ns"; nt: "ab.nt"; nu: "ab.nu"; nv: "ab.nv"; nw: "ab.nw"; nx: "ab.nx"; ny: "ab.ny"; nz: "ab.nz"; oa: "ab.oa"; ob: "ab.ob"; oc: "ab.oc"; od: "ab.od"; oe: "ab.oe"; of: "ab.of"; og: "ab.og"; oh: "ab.oh"; oi: "ab.oi"; oj: "ab.oj"; ok: "ab.ok"; ol: "ab.ol"; om: "ab.om"; on: "ab.on"; oo: "ab.oo"; op: "ab.op"; oq: "ab.oq"; or: "ab.or"; os: "ab.os"; ot: "ab.ot"; ou: "ab.ou"; ov: "ab.ov"; ow: "ab.ow"; ox: "ab.ox"; oy: "ab.oy"; oz: "ab.oz"; pa: "ab.pa"; pb: "ab.pb"; pc: "ab.pc"; pd: "ab.pd"; pe: "ab.pe"; pf: "ab.pf"; pg: "ab.pg"; ph: "ab.ph"; pi: "ab.pi"; pj: "ab.pj"; pk: "ab.pk"; pl: "ab.pl"; pm: "ab.pm"; pn: "ab.pn"; po: "ab.po"; pp: "ab.pp"; pq: "ab.pq"; pr: "ab.pr"; ps: "ab.ps"; pt: "ab.pt"; pu: "ab.pu"; pv: "ab.pv"; pw: "ab.pw"; px: "ab.px"; py: "ab.py"; pz: "ab.pz"; qa: "ab.qa"; qb: "ab.qb"; qc: "ab.qc"; qd: "ab.qd"; qe: "ab.qe"; qf: "ab.qf"; qg: "ab.qg"; qh: "ab.qh"; qi: "ab.qi"; qj: "ab.qj"; qk: "ab.qk"; ql: "ab.ql"; qm: "ab.qm"; qn: "ab.qn"; qo: "ab.qo"; qp: "ab.qp"; qq: "ab.qq"; qr: "ab.qr"; qs: "ab.qs"; qt: "ab.qt"; qu: "ab.qu"; qv: "ab.qv"; qw: "ab.qw"; qx: "ab.qx"; qy: "ab.qy"; qz: "ab.qz"; ra: "ab.ra"; rb: "ab.rb"; rc: "ab.rc"; rd: "ab.rd"; re: "ab.re"; rf: "ab.rf"; rg: "ab.rg"; rh: "ab.rh"; ri: "ab.ri"; rj: "ab.rj"; rk: "ab.rk"; rl: "ab.rl"; rm: "ab.rm"; rn: "ab.rn"; ro: "ab.ro"; rp: "ab.rp"; rq: "ab.rq"; rr: "ab.rr"; rs: "ab.rs"; rt: "ab.rt"; ru: "ab.ru"; rv: "ab.rv"; rw: "ab.rw"; rx: "ab.rx"; ry: "ab.ry"; rz: "ab.rz"; sa: "ab.sa"; sb: "ab.sb"; sc: "ab.sc"; sd: "ab.sd"; se: "ab.se"; sf: "ab.sf"; sg: "ab.sg"; sh: "ab.sh"; si: "ab.si"; sj: "ab.sj"; sk: "ab.sk"; sl: "ab.sl"; sm: "ab.sm"; sn: "ab.sn"; so: "ab.so"; sp: "ab.sp"; sq: "ab.sq"; sr: "ab.sr"; ss: "ab.ss"; st: "ab.st"; su: "ab.su"; sv: "ab.sv"; sw: "ab.sw"; sx: "ab.sx"; sy: "ab.sy"; sz: "ab.sz"; ta: "ab.ta"; tb: "ab.tb"; tc: "ab.tc"; td: "ab.td"; te: "ab.te"; tf: "ab.tf"; tg: "ab.tg"; th: "ab.th"; ti: "ab.ti"; tj: "ab.tj"; tk: "ab.tk"; tl: "ab.tl"; tm: "ab.tm"; tn: "ab.tn"; to: "ab.to"; tp: "ab.tp"; tq: "ab.tq"; tr: "ab.tr"; ts: "ab.ts"; tt: "ab.tt"; tu: "ab.tu"; tv: "ab.tv"; tw: "ab.tw"; tx: "ab.tx"; ty: "ab.ty"; tz: "ab.tz"; ua: "ab.ua"; ub: "ab.ub"; uc: "ab.uc"; ud: "ab.ud"; ue: "ab.ue"; uf: "ab.uf"; ug: "ab.ug"; uh: "ab.uh"; ui: "ab.ui"; uj: "ab.uj"; uk: "ab.uk"; ul: "ab.ul"; um: "ab.um"; un: "ab.un"; uo: "ab.uo"; up: "ab.up"; uq: "ab.uq"; ur: "ab.ur"; us: "ab.us"; ut: "ab.ut"; uu: "ab.uu"; uv: "ab.uv"; uw: "ab.uw"; ux: "ab.ux"; uy: "ab.uy"; uz: "ab.uz"; va: "ab.va"; vb: "ab.vb"; vc: "ab.vc"; vd: "ab.vd"; ve: "ab.ve"; vf: "ab.vf"; vg: "ab.vg"; vh: "ab.vh"; vi: "ab.vi"; vj: "ab.vj"; vk: "ab.vk"; vl: "ab.vl"; vm: "ab.vm"; vn: "ab.vn"; vo: "ab.vo"; vp: "ab.vp"; vq: "ab.vq"; vr: "ab.vr"; vs: "ab.vs"; vt: "ab.vt"; vu: "ab.vu"; vv: "ab.vv"; vw: "ab.vw"; vx: "ab.vx"; vy: "ab.vy"; vz: "ab.vz"; wa: "ab.wa"; wb: "ab.wb"; wc: "ab.wc"; wd: "ab.wd"; we: "ab.we"; wf: "ab.wf"; wg: "ab.wg"; wh: "ab.wh"; wi: "ab.wi"; wj: "ab.wj"; wk: "ab.wk"; wl: "ab.wl"; wm: "ab.wm"; wn: "ab.wn"; wo: "ab.wo"; wp: "ab.wp"; wq: "ab.wq"; wr: "ab.wr"; ws: "ab.ws"; wt: "ab.wt"; wu: "ab.wu"; wv: "ab.wv"; ww: "ab.ww"; wx: "ab.wx"; wy: "ab.wy"; wz: "ab.wz"; xa: "ab.xa"; xb: "ab.xb"; xc: "ab.xc"; xd: "ab.xd"; xe: "ab.xe"; xf: "ab.xf"; xg: "ab.xg"; xh: "ab.xh"; xi: "ab.xi"; xj: "ab.xj"; xk: "ab.xk"; xl: "ab.xl"; xm: "ab.xm"; xn: "ab.xn"; xo: "ab.xo"; xp: "ab.xp"; xq: "ab.xq"; xr: "ab.xr"; xs: "ab.xs"; xt: "ab.xt"; xu: "ab.xu"; xv: "ab.xv"; xw: "ab.xw"; xx: "ab.xx"; xy: "ab.xy"; xz: "ab.xz"; ya: "ab.ya"; yb: "ab.yb"; yc: "ab.yc"; yd: "ab.yd"; ye: "ab.ye"; yf: "ab.yf"; yg: "ab.yg"; yh: "ab.yh"; yi: "ab.yi"; yj: "ab.yj"; yk: "ab.yk"; yl: "ab.yl"; ym: "ab.ym"; yn: "ab.yn"; yo: "ab.yo"; yp: "ab.yp"; yq: "ab.yq"; yr: "ab.yr"; ys: "ab.ys"; yt: "ab.yt"; yu: "ab.yu"; yv: "ab.yv"; yw: "ab.yw"; yx: "ab.yx"; yy: "ab.yy"; yz: "ab.yz"; za: "ab.za"; zb: "ab.zb"; zc: "ab.zc"; zd: "ab.zd"; ze: "ab.ze"; zf: "ab.zf"; zg: "ab.zg"; zh: "ab.zh"; zi: "ab.zi"; zj: "ab.zj"; zk: "ab.zk"; zl: "ab.zl"; zm: "ab.zm"; zn: "ab.zn"; zo: "ab.zo"; zp: "ab.zp"; zq: "ab.zq"; zr: "ab.zr"; zs: "ab.zs"; zt: "ab.zt"; zu: "ab.zu"; zv: "ab.zv"; zw: "ab.zw"; zx: "ab.zx"; zy: "ab.zy"; zz: "ab.zz"; }; ac: { aa: "ac.aa"; ab: "ac.ab"; ac: "ac.ac"; ad: "ac.ad"; ae: "ac.ae"; af: "ac.af"; ag: "ac.ag"; ah: "ac.ah"; ai: "ac.ai"; aj: "ac.aj"; ak: "ac.ak"; al: "ac.al"; am: "ac.am"; an: "ac.an"; ao: "ac.ao"; ap: "ac.ap"; aq: "ac.aq"; ar: "ac.ar"; as: "ac.as"; at: "ac.at"; au: "ac.au"; av: "ac.av"; aw: "ac.aw"; ax: "ac.ax"; ay: "ac.ay"; az: "ac.az"; ba: "ac.ba"; bb: "ac.bb"; bc: "ac.bc"; bd: "ac.bd"; be: "ac.be"; bf: "ac.bf"; bg: "ac.bg"; bh: "ac.bh"; bi: "ac.bi"; bj: "ac.bj"; bk: "ac.bk"; bl: "ac.bl"; bm: "ac.bm"; bn: "ac.bn"; bo: "ac.bo"; bp: "ac.bp"; bq: "ac.bq"; br: "ac.br"; bs: "ac.bs"; bt: "ac.bt"; bu: "ac.bu"; bv: "ac.bv"; bw: "ac.bw"; bx: "ac.bx"; by: "ac.by"; bz: "ac.bz"; ca: "ac.ca"; cb: "ac.cb"; cc: "ac.cc"; cd: "ac.cd"; ce: "ac.ce"; cf: "ac.cf"; cg: "ac.cg"; ch: "ac.ch"; ci: "ac.ci"; cj: "ac.cj"; ck: "ac.ck"; cl: "ac.cl"; cm: "ac.cm"; cn: "ac.cn"; co: "ac.co"; cp: "ac.cp"; cq: "ac.cq"; cr: "ac.cr"; cs: "ac.cs"; ct: "ac.ct"; cu: "ac.cu"; cv: "ac.cv"; cw: "ac.cw"; cx: "ac.cx"; cy: "ac.cy"; cz: "ac.cz"; da: "ac.da"; db: "ac.db"; dc: "ac.dc"; dd: "ac.dd"; de: "ac.de"; df: "ac.df"; dg: "ac.dg"; dh: "ac.dh"; di: "ac.di"; dj: "ac.dj"; dk: "ac.dk"; dl: "ac.dl"; dm: "ac.dm"; dn: "ac.dn"; do: "ac.do"; dp: "ac.dp"; dq: "ac.dq"; dr: "ac.dr"; ds: "ac.ds"; dt: "ac.dt"; du: "ac.du"; dv: "ac.dv"; dw: "ac.dw"; dx: "ac.dx"; dy: "ac.dy"; dz: "ac.dz"; ea: "ac.ea"; eb: "ac.eb"; ec: "ac.ec"; ed: "ac.ed"; ee: "ac.ee"; ef: "ac.ef"; eg: "ac.eg"; eh: "ac.eh"; ei: "ac.ei"; ej: "ac.ej"; ek: "ac.ek"; el: "ac.el"; em: "ac.em"; en: "ac.en"; eo: "ac.eo"; ep: "ac.ep"; eq: "ac.eq"; er: "ac.er"; es: "ac.es"; et: "ac.et"; eu: "ac.eu"; ev: "ac.ev"; ew: "ac.ew"; ex: "ac.ex"; ey: "ac.ey"; ez: "ac.ez"; fa: "ac.fa"; fb: "ac.fb"; fc: "ac.fc"; fd: "ac.fd"; fe: "ac.fe"; ff: "ac.ff"; fg: "ac.fg"; fh: "ac.fh"; fi: "ac.fi"; fj: "ac.fj"; fk: "ac.fk"; fl: "ac.fl"; fm: "ac.fm"; fn: "ac.fn"; fo: "ac.fo"; fp: "ac.fp"; fq: "ac.fq"; fr: "ac.fr"; fs: "ac.fs"; ft: "ac.ft"; fu: "ac.fu"; fv: "ac.fv"; fw: "ac.fw"; fx: "ac.fx"; fy: "ac.fy"; fz: "ac.fz"; ga: "ac.ga"; gb: "ac.gb"; gc: "ac.gc"; gd: "ac.gd"; ge: "ac.ge"; gf: "ac.gf"; gg: "ac.gg"; gh: "ac.gh"; gi: "ac.gi"; gj: "ac.gj"; gk: "ac.gk"; gl: "ac.gl"; gm: "ac.gm"; gn: "ac.gn"; go: "ac.go"; gp: "ac.gp"; gq: "ac.gq"; gr: "ac.gr"; gs: "ac.gs"; gt: "ac.gt"; gu: "ac.gu"; gv: "ac.gv"; gw: "ac.gw"; gx: "ac.gx"; gy: "ac.gy"; gz: "ac.gz"; ha: "ac.ha"; hb: "ac.hb"; hc: "ac.hc"; hd: "ac.hd"; he: "ac.he"; hf: "ac.hf"; hg: "ac.hg"; hh: "ac.hh"; hi: "ac.hi"; hj: "ac.hj"; hk: "ac.hk"; hl: "ac.hl"; hm: "ac.hm"; hn: "ac.hn"; ho: "ac.ho"; hp: "ac.hp"; hq: "ac.hq"; hr: "ac.hr"; hs: "ac.hs"; ht: "ac.ht"; hu: "ac.hu"; hv: "ac.hv"; hw: "ac.hw"; hx: "ac.hx"; hy: "ac.hy"; hz: "ac.hz"; ia: "ac.ia"; ib: "ac.ib"; ic: "ac.ic"; id: "ac.id"; ie: "ac.ie"; if: "ac.if"; ig: "ac.ig"; ih: "ac.ih"; ii: "ac.ii"; ij: "ac.ij"; ik: "ac.ik"; il: "ac.il"; im: "ac.im"; in: "ac.in"; io: "ac.io"; ip: "ac.ip"; iq: "ac.iq"; ir: "ac.ir"; is: "ac.is"; it: "ac.it"; iu: "ac.iu"; iv: "ac.iv"; iw: "ac.iw"; ix: "ac.ix"; iy: "ac.iy"; iz: "ac.iz"; ja: "ac.ja"; jb: "ac.jb"; jc: "ac.jc"; jd: "ac.jd"; je: "ac.je"; jf: "ac.jf"; jg: "ac.jg"; jh: "ac.jh"; ji: "ac.ji"; jj: "ac.jj"; jk: "ac.jk"; jl: "ac.jl"; jm: "ac.jm"; jn: "ac.jn"; jo: "ac.jo"; jp: "ac.jp"; jq: "ac.jq"; jr: "ac.jr"; js: "ac.js"; jt: "ac.jt"; ju: "ac.ju"; jv: "ac.jv"; jw: "ac.jw"; jx: "ac.jx"; jy: "ac.jy"; jz: "ac.jz"; ka: "ac.ka"; kb: "ac.kb"; kc: "ac.kc"; kd: "ac.kd"; ke: "ac.ke"; kf: "ac.kf"; kg: "ac.kg"; kh: "ac.kh"; ki: "ac.ki"; kj: "ac.kj"; kk: "ac.kk"; kl: "ac.kl"; km: "ac.km"; kn: "ac.kn"; ko: "ac.ko"; kp: "ac.kp"; kq: "ac.kq"; kr: "ac.kr"; ks: "ac.ks"; kt: "ac.kt"; ku: "ac.ku"; kv: "ac.kv"; kw: "ac.kw"; kx: "ac.kx"; ky: "ac.ky"; kz: "ac.kz"; la: "ac.la"; lb: "ac.lb"; lc: "ac.lc"; ld: "ac.ld"; le: "ac.le"; lf: "ac.lf"; lg: "ac.lg"; lh: "ac.lh"; li: "ac.li"; lj: "ac.lj"; lk: "ac.lk"; ll: "ac.ll"; lm: "ac.lm"; ln: "ac.ln"; lo: "ac.lo"; lp: "ac.lp"; lq: "ac.lq"; lr: "ac.lr"; ls: "ac.ls"; lt: "ac.lt"; lu: "ac.lu"; lv: "ac.lv"; lw: "ac.lw"; lx: "ac.lx"; ly: "ac.ly"; lz: "ac.lz"; ma: "ac.ma"; mb: "ac.mb"; mc: "ac.mc"; md: "ac.md"; me: "ac.me"; mf: "ac.mf"; mg: "ac.mg"; mh: "ac.mh"; mi: "ac.mi"; mj: "ac.mj"; mk: "ac.mk"; ml: "ac.ml"; mm: "ac.mm"; mn: "ac.mn"; mo: "ac.mo"; mp: "ac.mp"; mq: "ac.mq"; mr: "ac.mr"; ms: "ac.ms"; mt: "ac.mt"; mu: "ac.mu"; mv: "ac.mv"; mw: "ac.mw"; mx: "ac.mx"; my: "ac.my"; mz: "ac.mz"; na: "ac.na"; nb: "ac.nb"; nc: "ac.nc"; nd: "ac.nd"; ne: "ac.ne"; nf: "ac.nf"; ng: "ac.ng"; nh: "ac.nh"; ni: "ac.ni"; nj: "ac.nj"; nk: "ac.nk"; nl: "ac.nl"; nm: "ac.nm"; nn: "ac.nn"; no: "ac.no"; np: "ac.np"; nq: "ac.nq"; nr: "ac.nr"; ns: "ac.ns"; nt: "ac.nt"; nu: "ac.nu"; nv: "ac.nv"; nw: "ac.nw"; nx: "ac.nx"; ny: "ac.ny"; nz: "ac.nz"; oa: "ac.oa"; ob: "ac.ob"; oc: "ac.oc"; od: "ac.od"; oe: "ac.oe"; of: "ac.of"; og: "ac.og"; oh: "ac.oh"; oi: "ac.oi"; oj: "ac.oj"; ok: "ac.ok"; ol: "ac.ol"; om: "ac.om"; on: "ac.on"; oo: "ac.oo"; op: "ac.op"; oq: "ac.oq"; or: "ac.or"; os: "ac.os"; ot: "ac.ot"; ou: "ac.ou"; ov: "ac.ov"; ow: "ac.ow"; ox: "ac.ox"; oy: "ac.oy"; oz: "ac.oz"; pa: "ac.pa"; pb: "ac.pb"; pc: "ac.pc"; pd: "ac.pd"; pe: "ac.pe"; pf: "ac.pf"; pg: "ac.pg"; ph: "ac.ph"; pi: "ac.pi"; pj: "ac.pj"; pk: "ac.pk"; pl: "ac.pl"; pm: "ac.pm"; pn: "ac.pn"; po: "ac.po"; pp: "ac.pp"; pq: "ac.pq"; pr: "ac.pr"; ps: "ac.ps"; pt: "ac.pt"; pu: "ac.pu"; pv: "ac.pv"; pw: "ac.pw"; px: "ac.px"; py: "ac.py"; pz: "ac.pz"; qa: "ac.qa"; qb: "ac.qb"; qc: "ac.qc"; qd: "ac.qd"; qe: "ac.qe"; qf: "ac.qf"; qg: "ac.qg"; qh: "ac.qh"; qi: "ac.qi"; qj: "ac.qj"; qk: "ac.qk"; ql: "ac.ql"; qm: "ac.qm"; qn: "ac.qn"; qo: "ac.qo"; qp: "ac.qp"; qq: "ac.qq"; qr: "ac.qr"; qs: "ac.qs"; qt: "ac.qt"; qu: "ac.qu"; qv: "ac.qv"; qw: "ac.qw"; qx: "ac.qx"; qy: "ac.qy"; qz: "ac.qz"; ra: "ac.ra"; rb: "ac.rb"; rc: "ac.rc"; rd: "ac.rd"; re: "ac.re"; rf: "ac.rf"; rg: "ac.rg"; rh: "ac.rh"; ri: "ac.ri"; rj: "ac.rj"; rk: "ac.rk"; rl: "ac.rl"; rm: "ac.rm"; rn: "ac.rn"; ro: "ac.ro"; rp: "ac.rp"; rq: "ac.rq"; rr: "ac.rr"; rs: "ac.rs"; rt: "ac.rt"; ru: "ac.ru"; rv: "ac.rv"; rw: "ac.rw"; rx: "ac.rx"; ry: "ac.ry"; rz: "ac.rz"; sa: "ac.sa"; sb: "ac.sb"; sc: "ac.sc"; sd: "ac.sd"; se: "ac.se"; sf: "ac.sf"; sg: "ac.sg"; sh: "ac.sh"; si: "ac.si"; sj: "ac.sj"; sk: "ac.sk"; sl: "ac.sl"; sm: "ac.sm"; sn: "ac.sn"; so: "ac.so"; sp: "ac.sp"; sq: "ac.sq"; sr: "ac.sr"; ss: "ac.ss"; st: "ac.st"; su: "ac.su"; sv: "ac.sv"; sw: "ac.sw"; sx: "ac.sx"; sy: "ac.sy"; sz: "ac.sz"; ta: "ac.ta"; tb: "ac.tb"; tc: "ac.tc"; td: "ac.td"; te: "ac.te"; tf: "ac.tf"; tg: "ac.tg"; th: "ac.th"; ti: "ac.ti"; tj: "ac.tj"; tk: "ac.tk"; tl: "ac.tl"; tm: "ac.tm"; tn: "ac.tn"; to: "ac.to"; tp: "ac.tp"; tq: "ac.tq"; tr: "ac.tr"; ts: "ac.ts"; tt: "ac.tt"; tu: "ac.tu"; tv: "ac.tv"; tw: "ac.tw"; tx: "ac.tx"; ty: "ac.ty"; tz: "ac.tz"; ua: "ac.ua"; ub: "ac.ub"; uc: "ac.uc"; ud: "ac.ud"; ue: "ac.ue"; uf: "ac.uf"; ug: "ac.ug"; uh: "ac.uh"; ui: "ac.ui"; uj: "ac.uj"; uk: "ac.uk"; ul: "ac.ul"; um: "ac.um"; un: "ac.un"; uo: "ac.uo"; up: "ac.up"; uq: "ac.uq"; ur: "ac.ur"; us: "ac.us"; ut: "ac.ut"; uu: "ac.uu"; uv: "ac.uv"; uw: "ac.uw"; ux: "ac.ux"; uy: "ac.uy"; uz: "ac.uz"; va: "ac.va"; vb: "ac.vb"; vc: "ac.vc"; vd: "ac.vd"; ve: "ac.ve"; vf: "ac.vf"; vg: "ac.vg"; vh: "ac.vh"; vi: "ac.vi"; vj: "ac.vj"; vk: "ac.vk"; vl: "ac.vl"; vm: "ac.vm"; vn: "ac.vn"; vo: "ac.vo"; vp: "ac.vp"; vq: "ac.vq"; vr: "ac.vr"; vs: "ac.vs"; vt: "ac.vt"; vu: "ac.vu"; vv: "ac.vv"; vw: "ac.vw"; vx: "ac.vx"; vy: "ac.vy"; vz: "ac.vz"; wa: "ac.wa"; wb: "ac.wb"; wc: "ac.wc"; wd: "ac.wd"; we: "ac.we"; wf: "ac.wf"; wg: "ac.wg"; wh: "ac.wh"; wi: "ac.wi"; wj: "ac.wj"; wk: "ac.wk"; wl: "ac.wl"; wm: "ac.wm"; wn: "ac.wn"; wo: "ac.wo"; wp: "ac.wp"; wq: "ac.wq"; wr: "ac.wr"; ws: "ac.ws"; wt: "ac.wt"; wu: "ac.wu"; wv: "ac.wv"; ww: "ac.ww"; wx: "ac.wx"; wy: "ac.wy"; wz: "ac.wz"; xa: "ac.xa"; xb: "ac.xb"; xc: "ac.xc"; xd: "ac.xd"; xe: "ac.xe"; xf: "ac.xf"; xg: "ac.xg"; xh: "ac.xh"; xi: "ac.xi"; xj: "ac.xj"; xk: "ac.xk"; xl: "ac.xl"; xm: "ac.xm"; xn: "ac.xn"; xo: "ac.xo"; xp: "ac.xp"; xq: "ac.xq"; xr: "ac.xr"; xs: "ac.xs"; xt: "ac.xt"; xu: "ac.xu"; xv: "ac.xv"; xw: "ac.xw"; xx: "ac.xx"; xy: "ac.xy"; xz: "ac.xz"; ya: "ac.ya"; yb: "ac.yb"; yc: "ac.yc"; yd: "ac.yd"; ye: "ac.ye"; yf: "ac.yf"; yg: "ac.yg"; yh: "ac.yh"; yi: "ac.yi"; yj: "ac.yj"; yk: "ac.yk"; yl: "ac.yl"; ym: "ac.ym"; yn: "ac.yn"; yo: "ac.yo"; yp: "ac.yp"; yq: "ac.yq"; yr: "ac.yr"; ys: "ac.ys"; yt: "ac.yt"; yu: "ac.yu"; yv: "ac.yv"; yw: "ac.yw"; yx: "ac.yx"; yy: "ac.yy"; yz: "ac.yz"; za: "ac.za"; zb: "ac.zb"; zc: "ac.zc"; zd: "ac.zd"; ze: "ac.ze"; zf: "ac.zf"; zg: "ac.zg"; zh: "ac.zh"; zi: "ac.zi"; zj: "ac.zj"; zk: "ac.zk"; zl: "ac.zl"; zm: "ac.zm"; zn: "ac.zn"; zo: "ac.zo"; zp: "ac.zp"; zq: "ac.zq"; zr: "ac.zr"; zs: "ac.zs"; zt: "ac.zt"; zu: "ac.zu"; zv: "ac.zv"; zw: "ac.zw"; zx: "ac.zx"; zy: "ac.zy"; zz: "ac.zz"; }; ad: { aa: "ad.aa"; ab: "ad.ab"; ac: "ad.ac"; ad: "ad.ad"; ae: "ad.ae"; af: "ad.af"; ag: "ad.ag"; ah: "ad.ah"; ai: "ad.ai"; aj: "ad.aj"; ak: "ad.ak"; al: "ad.al"; am: "ad.am"; an: "ad.an"; ao: "ad.ao"; ap: "ad.ap"; aq: "ad.aq"; ar: "ad.ar"; as: "ad.as"; at: "ad.at"; au: "ad.au"; av: "ad.av"; aw: "ad.aw"; ax: "ad.ax"; ay: "ad.ay"; az: "ad.az"; ba: "ad.ba"; bb: "ad.bb"; bc: "ad.bc"; bd: "ad.bd"; be: "ad.be"; bf: "ad.bf"; bg: "ad.bg"; bh: "ad.bh"; bi: "ad.bi"; bj: "ad.bj"; bk: "ad.bk"; bl: "ad.bl"; bm: "ad.bm"; bn: "ad.bn"; bo: "ad.bo"; bp: "ad.bp"; bq: "ad.bq"; br: "ad.br"; bs: "ad.bs"; bt: "ad.bt"; bu: "ad.bu"; bv: "ad.bv"; bw: "ad.bw"; bx: "ad.bx"; by: "ad.by"; bz: "ad.bz"; ca: "ad.ca"; cb: "ad.cb"; cc: "ad.cc"; cd: "ad.cd"; ce: "ad.ce"; cf: "ad.cf"; cg: "ad.cg"; ch: "ad.ch"; ci: "ad.ci"; cj: "ad.cj"; ck: "ad.ck"; cl: "ad.cl"; cm: "ad.cm"; cn: "ad.cn"; co: "ad.co"; cp: "ad.cp"; cq: "ad.cq"; cr: "ad.cr"; cs: "ad.cs"; ct: "ad.ct"; cu: "ad.cu"; cv: "ad.cv"; cw: "ad.cw"; cx: "ad.cx"; cy: "ad.cy"; cz: "ad.cz"; da: "ad.da"; db: "ad.db"; dc: "ad.dc"; dd: "ad.dd"; de: "ad.de"; df: "ad.df"; dg: "ad.dg"; dh: "ad.dh"; di: "ad.di"; dj: "ad.dj"; dk: "ad.dk"; dl: "ad.dl"; dm: "ad.dm"; dn: "ad.dn"; do: "ad.do"; dp: "ad.dp"; dq: "ad.dq"; dr: "ad.dr"; ds: "ad.ds"; dt: "ad.dt"; du: "ad.du"; dv: "ad.dv"; dw: "ad.dw"; dx: "ad.dx"; dy: "ad.dy"; dz: "ad.dz"; ea: "ad.ea"; eb: "ad.eb"; ec: "ad.ec"; ed: "ad.ed"; ee: "ad.ee"; ef: "ad.ef"; eg: "ad.eg"; eh: "ad.eh"; ei: "ad.ei"; ej: "ad.ej"; ek: "ad.ek"; el: "ad.el"; em: "ad.em"; en: "ad.en"; eo: "ad.eo"; ep: "ad.ep"; eq: "ad.eq"; er: "ad.er"; es: "ad.es"; et: "ad.et"; eu: "ad.eu"; ev: "ad.ev"; ew: "ad.ew"; ex: "ad.ex"; ey: "ad.ey"; ez: "ad.ez"; fa: "ad.fa"; fb: "ad.fb"; fc: "ad.fc"; fd: "ad.fd"; fe: "ad.fe"; ff: "ad.ff"; fg: "ad.fg"; fh: "ad.fh"; fi: "ad.fi"; fj: "ad.fj"; fk: "ad.fk"; fl: "ad.fl"; fm: "ad.fm"; fn: "ad.fn"; fo: "ad.fo"; fp: "ad.fp"; fq: "ad.fq"; fr: "ad.fr"; fs: "ad.fs"; ft: "ad.ft"; fu: "ad.fu"; fv: "ad.fv"; fw: "ad.fw"; fx: "ad.fx"; fy: "ad.fy"; fz: "ad.fz"; ga: "ad.ga"; gb: "ad.gb"; gc: "ad.gc"; gd: "ad.gd"; ge: "ad.ge"; gf: "ad.gf"; gg: "ad.gg"; gh: "ad.gh"; gi: "ad.gi"; gj: "ad.gj"; gk: "ad.gk"; gl: "ad.gl"; gm: "ad.gm"; gn: "ad.gn"; go: "ad.go"; gp: "ad.gp"; gq: "ad.gq"; gr: "ad.gr"; gs: "ad.gs"; gt: "ad.gt"; gu: "ad.gu"; gv: "ad.gv"; gw: "ad.gw"; gx: "ad.gx"; gy: "ad.gy"; gz: "ad.gz"; ha: "ad.ha"; hb: "ad.hb"; hc: "ad.hc"; hd: "ad.hd"; he: "ad.he"; hf: "ad.hf"; hg: "ad.hg"; hh: "ad.hh"; hi: "ad.hi"; hj: "ad.hj"; hk: "ad.hk"; hl: "ad.hl"; hm: "ad.hm"; hn: "ad.hn"; ho: "ad.ho"; hp: "ad.hp"; hq: "ad.hq"; hr: "ad.hr"; hs: "ad.hs"; ht: "ad.ht"; hu: "ad.hu"; hv: "ad.hv"; hw: "ad.hw"; hx: "ad.hx"; hy: "ad.hy"; hz: "ad.hz"; ia: "ad.ia"; ib: "ad.ib"; ic: "ad.ic"; id: "ad.id"; ie: "ad.ie"; if: "ad.if"; ig: "ad.ig"; ih: "ad.ih"; ii: "ad.ii"; ij: "ad.ij"; ik: "ad.ik"; il: "ad.il"; im: "ad.im"; in: "ad.in"; io: "ad.io"; ip: "ad.ip"; iq: "ad.iq"; ir: "ad.ir"; is: "ad.is"; it: "ad.it"; iu: "ad.iu"; iv: "ad.iv"; iw: "ad.iw"; ix: "ad.ix"; iy: "ad.iy"; iz: "ad.iz"; ja: "ad.ja"; jb: "ad.jb"; jc: "ad.jc"; jd: "ad.jd"; je: "ad.je"; jf: "ad.jf"; jg: "ad.jg"; jh: "ad.jh"; ji: "ad.ji"; jj: "ad.jj"; jk: "ad.jk"; jl: "ad.jl"; jm: "ad.jm"; jn: "ad.jn"; jo: "ad.jo"; jp: "ad.jp"; jq: "ad.jq"; jr: "ad.jr"; js: "ad.js"; jt: "ad.jt"; ju: "ad.ju"; jv: "ad.jv"; jw: "ad.jw"; jx: "ad.jx"; jy: "ad.jy"; jz: "ad.jz"; ka: "ad.ka"; kb: "ad.kb"; kc: "ad.kc"; kd: "ad.kd"; ke: "ad.ke"; kf: "ad.kf"; kg: "ad.kg"; kh: "ad.kh"; ki: "ad.ki"; kj: "ad.kj"; kk: "ad.kk"; kl: "ad.kl"; km: "ad.km"; kn: "ad.kn"; ko: "ad.ko"; kp: "ad.kp"; kq: "ad.kq"; kr: "ad.kr"; ks: "ad.ks"; kt: "ad.kt"; ku: "ad.ku"; kv: "ad.kv"; kw: "ad.kw"; kx: "ad.kx"; ky: "ad.ky"; kz: "ad.kz"; la: "ad.la"; lb: "ad.lb"; lc: "ad.lc"; ld: "ad.ld"; le: "ad.le"; lf: "ad.lf"; lg: "ad.lg"; lh: "ad.lh"; li: "ad.li"; lj: "ad.lj"; lk: "ad.lk"; ll: "ad.ll"; lm: "ad.lm"; ln: "ad.ln"; lo: "ad.lo"; lp: "ad.lp"; lq: "ad.lq"; lr: "ad.lr"; ls: "ad.ls"; lt: "ad.lt"; lu: "ad.lu"; lv: "ad.lv"; lw: "ad.lw"; lx: "ad.lx"; ly: "ad.ly"; lz: "ad.lz"; ma: "ad.ma"; mb: "ad.mb"; mc: "ad.mc"; md: "ad.md"; me: "ad.me"; mf: "ad.mf"; mg: "ad.mg"; mh: "ad.mh"; mi: "ad.mi"; mj: "ad.mj"; mk: "ad.mk"; ml: "ad.ml"; mm: "ad.mm"; mn: "ad.mn"; mo: "ad.mo"; mp: "ad.mp"; mq: "ad.mq"; mr: "ad.mr"; ms: "ad.ms"; mt: "ad.mt"; mu: "ad.mu"; mv: "ad.mv"; mw: "ad.mw"; mx: "ad.mx"; my: "ad.my"; mz: "ad.mz"; na: "ad.na"; nb: "ad.nb"; nc: "ad.nc"; nd: "ad.nd"; ne: "ad.ne"; nf: "ad.nf"; ng: "ad.ng"; nh: "ad.nh"; ni: "ad.ni"; nj: "ad.nj"; nk: "ad.nk"; nl: "ad.nl"; nm: "ad.nm"; nn: "ad.nn"; no: "ad.no"; np: "ad.np"; nq: "ad.nq"; nr: "ad.nr"; ns: "ad.ns"; nt: "ad.nt"; nu: "ad.nu"; nv: "ad.nv"; nw: "ad.nw"; nx: "ad.nx"; ny: "ad.ny"; nz: "ad.nz"; oa: "ad.oa"; ob: "ad.ob"; oc: "ad.oc"; od: "ad.od"; oe: "ad.oe"; of: "ad.of"; og: "ad.og"; oh: "ad.oh"; oi: "ad.oi"; oj: "ad.oj"; ok: "ad.ok"; ol: "ad.ol"; om: "ad.om"; on: "ad.on"; oo: "ad.oo"; op: "ad.op"; oq: "ad.oq"; or: "ad.or"; os: "ad.os"; ot: "ad.ot"; ou: "ad.ou"; ov: "ad.ov"; ow: "ad.ow"; ox: "ad.ox"; oy: "ad.oy"; oz: "ad.oz"; pa: "ad.pa"; pb: "ad.pb"; pc: "ad.pc"; pd: "ad.pd"; pe: "ad.pe"; pf: "ad.pf"; pg: "ad.pg"; ph: "ad.ph"; pi: "ad.pi"; pj: "ad.pj"; pk: "ad.pk"; pl: "ad.pl"; pm: "ad.pm"; pn: "ad.pn"; po: "ad.po"; pp: "ad.pp"; pq: "ad.pq"; pr: "ad.pr"; ps: "ad.ps"; pt: "ad.pt"; pu: "ad.pu"; pv: "ad.pv"; pw: "ad.pw"; px: "ad.px"; py: "ad.py"; pz: "ad.pz"; qa: "ad.qa"; qb: "ad.qb"; qc: "ad.qc"; qd: "ad.qd"; qe: "ad.qe"; qf: "ad.qf"; qg: "ad.qg"; qh: "ad.qh"; qi: "ad.qi"; qj: "ad.qj"; qk: "ad.qk"; ql: "ad.ql"; qm: "ad.qm"; qn: "ad.qn"; qo: "ad.qo"; qp: "ad.qp"; qq: "ad.qq"; qr: "ad.qr"; qs: "ad.qs"; qt: "ad.qt"; qu: "ad.qu"; qv: "ad.qv"; qw: "ad.qw"; qx: "ad.qx"; qy: "ad.qy"; qz: "ad.qz"; ra: "ad.ra"; rb: "ad.rb"; rc: "ad.rc"; rd: "ad.rd"; re: "ad.re"; rf: "ad.rf"; rg: "ad.rg"; rh: "ad.rh"; ri: "ad.ri"; rj: "ad.rj"; rk: "ad.rk"; rl: "ad.rl"; rm: "ad.rm"; rn: "ad.rn"; ro: "ad.ro"; rp: "ad.rp"; rq: "ad.rq"; rr: "ad.rr"; rs: "ad.rs"; rt: "ad.rt"; ru: "ad.ru"; rv: "ad.rv"; rw: "ad.rw"; rx: "ad.rx"; ry: "ad.ry"; rz: "ad.rz"; sa: "ad.sa"; sb: "ad.sb"; sc: "ad.sc"; sd: "ad.sd"; se: "ad.se"; sf: "ad.sf"; sg: "ad.sg"; sh: "ad.sh"; si: "ad.si"; sj: "ad.sj"; sk: "ad.sk"; sl: "ad.sl"; sm: "ad.sm"; sn: "ad.sn"; so: "ad.so"; sp: "ad.sp"; sq: "ad.sq"; sr: "ad.sr"; ss: "ad.ss"; st: "ad.st"; su: "ad.su"; sv: "ad.sv"; sw: "ad.sw"; sx: "ad.sx"; sy: "ad.sy"; sz: "ad.sz"; ta: "ad.ta"; tb: "ad.tb"; tc: "ad.tc"; td: "ad.td"; te: "ad.te"; tf: "ad.tf"; tg: "ad.tg"; th: "ad.th"; ti: "ad.ti"; tj: "ad.tj"; tk: "ad.tk"; tl: "ad.tl"; tm: "ad.tm"; tn: "ad.tn"; to: "ad.to"; tp: "ad.tp"; tq: "ad.tq"; tr: "ad.tr"; ts: "ad.ts"; tt: "ad.tt"; tu: "ad.tu"; tv: "ad.tv"; tw: "ad.tw"; tx: "ad.tx"; ty: "ad.ty"; tz: "ad.tz"; ua: "ad.ua"; ub: "ad.ub"; uc: "ad.uc"; ud: "ad.ud"; ue: "ad.ue"; uf: "ad.uf"; ug: "ad.ug"; uh: "ad.uh"; ui: "ad.ui"; uj: "ad.uj"; uk: "ad.uk"; ul: "ad.ul"; um: "ad.um"; un: "ad.un"; uo: "ad.uo"; up: "ad.up"; uq: "ad.uq"; ur: "ad.ur"; us: "ad.us"; ut: "ad.ut"; uu: "ad.uu"; uv: "ad.uv"; uw: "ad.uw"; ux: "ad.ux"; uy: "ad.uy"; uz: "ad.uz"; va: "ad.va"; vb: "ad.vb"; vc: "ad.vc"; vd: "ad.vd"; ve: "ad.ve"; vf: "ad.vf"; vg: "ad.vg"; vh: "ad.vh"; vi: "ad.vi"; vj: "ad.vj"; vk: "ad.vk"; vl: "ad.vl"; vm: "ad.vm"; vn: "ad.vn"; vo: "ad.vo"; vp: "ad.vp"; vq: "ad.vq"; vr: "ad.vr"; vs: "ad.vs"; vt: "ad.vt"; vu: "ad.vu"; vv: "ad.vv"; vw: "ad.vw"; vx: "ad.vx"; vy: "ad.vy"; vz: "ad.vz"; wa: "ad.wa"; wb: "ad.wb"; wc: "ad.wc"; wd: "ad.wd"; we: "ad.we"; wf: "ad.wf"; wg: "ad.wg"; wh: "ad.wh"; wi: "ad.wi"; wj: "ad.wj"; wk: "ad.wk"; wl: "ad.wl"; wm: "ad.wm"; wn: "ad.wn"; wo: "ad.wo"; wp: "ad.wp"; wq: "ad.wq"; wr: "ad.wr"; ws: "ad.ws"; wt: "ad.wt"; wu: "ad.wu"; wv: "ad.wv"; ww: "ad.ww"; wx: "ad.wx"; wy: "ad.wy"; wz: "ad.wz"; xa: "ad.xa"; xb: "ad.xb"; xc: "ad.xc"; xd: "ad.xd"; xe: "ad.xe"; xf: "ad.xf"; xg: "ad.xg"; xh: "ad.xh"; xi: "ad.xi"; xj: "ad.xj"; xk: "ad.xk"; xl: "ad.xl"; xm: "ad.xm"; xn: "ad.xn"; xo: "ad.xo"; xp: "ad.xp"; xq: "ad.xq"; xr: "ad.xr"; xs: "ad.xs"; xt: "ad.xt"; xu: "ad.xu"; xv: "ad.xv"; xw: "ad.xw"; xx: "ad.xx"; xy: "ad.xy"; xz: "ad.xz"; ya: "ad.ya"; yb: "ad.yb"; yc: "ad.yc"; yd: "ad.yd"; ye: "ad.ye"; yf: "ad.yf"; yg: "ad.yg"; yh: "ad.yh"; yi: "ad.yi"; yj: "ad.yj"; yk: "ad.yk"; yl: "ad.yl"; ym: "ad.ym"; yn: "ad.yn"; yo: "ad.yo"; yp: "ad.yp"; yq: "ad.yq"; yr: "ad.yr"; ys: "ad.ys"; yt: "ad.yt"; yu: "ad.yu"; yv: "ad.yv"; yw: "ad.yw"; yx: "ad.yx"; yy: "ad.yy"; yz: "ad.yz"; za: "ad.za"; zb: "ad.zb"; zc: "ad.zc"; zd: "ad.zd"; ze: "ad.ze"; zf: "ad.zf"; zg: "ad.zg"; zh: "ad.zh"; zi: "ad.zi"; zj: "ad.zj"; zk: "ad.zk"; zl: "ad.zl"; zm: "ad.zm"; zn: "ad.zn"; zo: "ad.zo"; zp: "ad.zp"; zq: "ad.zq"; zr: "ad.zr"; zs: "ad.zs"; zt: "ad.zt"; zu: "ad.zu"; zv: "ad.zv"; zw: "ad.zw"; zx: "ad.zx"; zy: "ad.zy"; zz: "ad.zz"; }; ae: { aa: "ae.aa"; ab: "ae.ab"; ac: "ae.ac"; ad: "ae.ad"; ae: "ae.ae"; af: "ae.af"; ag: "ae.ag"; ah: "ae.ah"; ai: "ae.ai"; aj: "ae.aj"; ak: "ae.ak"; al: "ae.al"; am: "ae.am"; an: "ae.an"; ao: "ae.ao"; ap: "ae.ap"; aq: "ae.aq"; ar: "ae.ar"; as: "ae.as"; at: "ae.at"; au: "ae.au"; av: "ae.av"; aw: "ae.aw"; ax: "ae.ax"; ay: "ae.ay"; az: "ae.az"; ba: "ae.ba"; bb: "ae.bb"; bc: "ae.bc"; bd: "ae.bd"; be: "ae.be"; bf: "ae.bf"; bg: "ae.bg"; bh: "ae.bh"; bi: "ae.bi"; bj: "ae.bj"; bk: "ae.bk"; bl: "ae.bl"; bm: "ae.bm"; bn: "ae.bn"; bo: "ae.bo"; bp: "ae.bp"; bq: "ae.bq"; br: "ae.br"; bs: "ae.bs"; bt: "ae.bt"; bu: "ae.bu"; bv: "ae.bv"; bw: "ae.bw"; bx: "ae.bx"; by: "ae.by"; bz: "ae.bz"; ca: "ae.ca"; cb: "ae.cb"; cc: "ae.cc"; cd: "ae.cd"; ce: "ae.ce"; cf: "ae.cf"; cg: "ae.cg"; ch: "ae.ch"; ci: "ae.ci"; cj: "ae.cj"; ck: "ae.ck"; cl: "ae.cl"; cm: "ae.cm"; cn: "ae.cn"; co: "ae.co"; cp: "ae.cp"; cq: "ae.cq"; cr: "ae.cr"; cs: "ae.cs"; ct: "ae.ct"; cu: "ae.cu"; cv: "ae.cv"; cw: "ae.cw"; cx: "ae.cx"; cy: "ae.cy"; cz: "ae.cz"; da: "ae.da"; db: "ae.db"; dc: "ae.dc"; dd: "ae.dd"; de: "ae.de"; df: "ae.df"; dg: "ae.dg"; dh: "ae.dh"; di: "ae.di"; dj: "ae.dj"; dk: "ae.dk"; dl: "ae.dl"; dm: "ae.dm"; dn: "ae.dn"; do: "ae.do"; dp: "ae.dp"; dq: "ae.dq"; dr: "ae.dr"; ds: "ae.ds"; dt: "ae.dt"; du: "ae.du"; dv: "ae.dv"; dw: "ae.dw"; dx: "ae.dx"; dy: "ae.dy"; dz: "ae.dz"; ea: "ae.ea"; eb: "ae.eb"; ec: "ae.ec"; ed: "ae.ed"; ee: "ae.ee"; ef: "ae.ef"; eg: "ae.eg"; eh: "ae.eh"; ei: "ae.ei"; ej: "ae.ej"; ek: "ae.ek"; el: "ae.el"; em: "ae.em"; en: "ae.en"; eo: "ae.eo"; ep: "ae.ep"; eq: "ae.eq"; er: "ae.er"; es: "ae.es"; et: "ae.et"; eu: "ae.eu"; ev: "ae.ev"; ew: "ae.ew"; ex: "ae.ex"; ey: "ae.ey"; ez: "ae.ez"; fa: "ae.fa"; fb: "ae.fb"; fc: "ae.fc"; fd: "ae.fd"; fe: "ae.fe"; ff: "ae.ff"; fg: "ae.fg"; fh: "ae.fh"; fi: "ae.fi"; fj: "ae.fj"; fk: "ae.fk"; fl: "ae.fl"; fm: "ae.fm"; fn: "ae.fn"; fo: "ae.fo"; fp: "ae.fp"; fq: "ae.fq"; fr: "ae.fr"; fs: "ae.fs"; ft: "ae.ft"; fu: "ae.fu"; fv: "ae.fv"; fw: "ae.fw"; fx: "ae.fx"; fy: "ae.fy"; fz: "ae.fz"; ga: "ae.ga"; gb: "ae.gb"; gc: "ae.gc"; gd: "ae.gd"; ge: "ae.ge"; gf: "ae.gf"; gg: "ae.gg"; gh: "ae.gh"; gi: "ae.gi"; gj: "ae.gj"; gk: "ae.gk"; gl: "ae.gl"; gm: "ae.gm"; gn: "ae.gn"; go: "ae.go"; gp: "ae.gp"; gq: "ae.gq"; gr: "ae.gr"; gs: "ae.gs"; gt: "ae.gt"; gu: "ae.gu"; gv: "ae.gv"; gw: "ae.gw"; gx: "ae.gx"; gy: "ae.gy"; gz: "ae.gz"; ha: "ae.ha"; hb: "ae.hb"; hc: "ae.hc"; hd: "ae.hd"; he: "ae.he"; hf: "ae.hf"; hg: "ae.hg"; hh: "ae.hh"; hi: "ae.hi"; hj: "ae.hj"; hk: "ae.hk"; hl: "ae.hl"; hm: "ae.hm"; hn: "ae.hn"; ho: "ae.ho"; hp: "ae.hp"; hq: "ae.hq"; hr: "ae.hr"; hs: "ae.hs"; ht: "ae.ht"; hu: "ae.hu"; hv: "ae.hv"; hw: "ae.hw"; hx: "ae.hx"; hy: "ae.hy"; hz: "ae.hz"; ia: "ae.ia"; ib: "ae.ib"; ic: "ae.ic"; id: "ae.id"; ie: "ae.ie"; if: "ae.if"; ig: "ae.ig"; ih: "ae.ih"; ii: "ae.ii"; ij: "ae.ij"; ik: "ae.ik"; il: "ae.il"; im: "ae.im"; in: "ae.in"; io: "ae.io"; ip: "ae.ip"; iq: "ae.iq"; ir: "ae.ir"; is: "ae.is"; it: "ae.it"; iu: "ae.iu"; iv: "ae.iv"; iw: "ae.iw"; ix: "ae.ix"; iy: "ae.iy"; iz: "ae.iz"; ja: "ae.ja"; jb: "ae.jb"; jc: "ae.jc"; jd: "ae.jd"; je: "ae.je"; jf: "ae.jf"; jg: "ae.jg"; jh: "ae.jh"; ji: "ae.ji"; jj: "ae.jj"; jk: "ae.jk"; jl: "ae.jl"; jm: "ae.jm"; jn: "ae.jn"; jo: "ae.jo"; jp: "ae.jp"; jq: "ae.jq"; jr: "ae.jr"; js: "ae.js"; jt: "ae.jt"; ju: "ae.ju"; jv: "ae.jv"; jw: "ae.jw"; jx: "ae.jx"; jy: "ae.jy"; jz: "ae.jz"; ka: "ae.ka"; kb: "ae.kb"; kc: "ae.kc"; kd: "ae.kd"; ke: "ae.ke"; kf: "ae.kf"; kg: "ae.kg"; kh: "ae.kh"; ki: "ae.ki"; kj: "ae.kj"; kk: "ae.kk"; kl: "ae.kl"; km: "ae.km"; kn: "ae.kn"; ko: "ae.ko"; kp: "ae.kp"; kq: "ae.kq"; kr: "ae.kr"; ks: "ae.ks"; kt: "ae.kt"; ku: "ae.ku"; kv: "ae.kv"; kw: "ae.kw"; kx: "ae.kx"; ky: "ae.ky"; kz: "ae.kz"; la: "ae.la"; lb: "ae.lb"; lc: "ae.lc"; ld: "ae.ld"; le: "ae.le"; lf: "ae.lf"; lg: "ae.lg"; lh: "ae.lh"; li: "ae.li"; lj: "ae.lj"; lk: "ae.lk"; ll: "ae.ll"; lm: "ae.lm"; ln: "ae.ln"; lo: "ae.lo"; lp: "ae.lp"; lq: "ae.lq"; lr: "ae.lr"; ls: "ae.ls"; lt: "ae.lt"; lu: "ae.lu"; lv: "ae.lv"; lw: "ae.lw"; lx: "ae.lx"; ly: "ae.ly"; lz: "ae.lz"; ma: "ae.ma"; mb: "ae.mb"; mc: "ae.mc"; md: "ae.md"; me: "ae.me"; mf: "ae.mf"; mg: "ae.mg"; mh: "ae.mh"; mi: "ae.mi"; mj: "ae.mj"; mk: "ae.mk"; ml: "ae.ml"; mm: "ae.mm"; mn: "ae.mn"; mo: "ae.mo"; mp: "ae.mp"; mq: "ae.mq"; mr: "ae.mr"; ms: "ae.ms"; mt: "ae.mt"; mu: "ae.mu"; mv: "ae.mv"; mw: "ae.mw"; mx: "ae.mx"; my: "ae.my"; mz: "ae.mz"; na: "ae.na"; nb: "ae.nb"; nc: "ae.nc"; nd: "ae.nd"; ne: "ae.ne"; nf: "ae.nf"; ng: "ae.ng"; nh: "ae.nh"; ni: "ae.ni"; nj: "ae.nj"; nk: "ae.nk"; nl: "ae.nl"; nm: "ae.nm"; nn: "ae.nn"; no: "ae.no"; np: "ae.np"; nq: "ae.nq"; nr: "ae.nr"; ns: "ae.ns"; nt: "ae.nt"; nu: "ae.nu"; nv: "ae.nv"; nw: "ae.nw"; nx: "ae.nx"; ny: "ae.ny"; nz: "ae.nz"; oa: "ae.oa"; ob: "ae.ob"; oc: "ae.oc"; od: "ae.od"; oe: "ae.oe"; of: "ae.of"; og: "ae.og"; oh: "ae.oh"; oi: "ae.oi"; oj: "ae.oj"; ok: "ae.ok"; ol: "ae.ol"; om: "ae.om"; on: "ae.on"; oo: "ae.oo"; op: "ae.op"; oq: "ae.oq"; or: "ae.or"; os: "ae.os"; ot: "ae.ot"; ou: "ae.ou"; ov: "ae.ov"; ow: "ae.ow"; ox: "ae.ox"; oy: "ae.oy"; oz: "ae.oz"; pa: "ae.pa"; pb: "ae.pb"; pc: "ae.pc"; pd: "ae.pd"; pe: "ae.pe"; pf: "ae.pf"; pg: "ae.pg"; ph: "ae.ph"; pi: "ae.pi"; pj: "ae.pj"; pk: "ae.pk"; pl: "ae.pl"; pm: "ae.pm"; pn: "ae.pn"; po: "ae.po"; pp: "ae.pp"; pq: "ae.pq"; pr: "ae.pr"; ps: "ae.ps"; pt: "ae.pt"; pu: "ae.pu"; pv: "ae.pv"; pw: "ae.pw"; px: "ae.px"; py: "ae.py"; pz: "ae.pz"; qa: "ae.qa"; qb: "ae.qb"; qc: "ae.qc"; qd: "ae.qd"; qe: "ae.qe"; qf: "ae.qf"; qg: "ae.qg"; qh: "ae.qh"; qi: "ae.qi"; qj: "ae.qj"; qk: "ae.qk"; ql: "ae.ql"; qm: "ae.qm"; qn: "ae.qn"; qo: "ae.qo"; qp: "ae.qp"; qq: "ae.qq"; qr: "ae.qr"; qs: "ae.qs"; qt: "ae.qt"; qu: "ae.qu"; qv: "ae.qv"; qw: "ae.qw"; qx: "ae.qx"; qy: "ae.qy"; qz: "ae.qz"; ra: "ae.ra"; rb: "ae.rb"; rc: "ae.rc"; rd: "ae.rd"; re: "ae.re"; rf: "ae.rf"; rg: "ae.rg"; rh: "ae.rh"; ri: "ae.ri"; rj: "ae.rj"; rk: "ae.rk"; rl: "ae.rl"; rm: "ae.rm"; rn: "ae.rn"; ro: "ae.ro"; rp: "ae.rp"; rq: "ae.rq"; rr: "ae.rr"; rs: "ae.rs"; rt: "ae.rt"; ru: "ae.ru"; rv: "ae.rv"; rw: "ae.rw"; rx: "ae.rx"; ry: "ae.ry"; rz: "ae.rz"; sa: "ae.sa"; sb: "ae.sb"; sc: "ae.sc"; sd: "ae.sd"; se: "ae.se"; sf: "ae.sf"; sg: "ae.sg"; sh: "ae.sh"; si: "ae.si"; sj: "ae.sj"; sk: "ae.sk"; sl: "ae.sl"; sm: "ae.sm"; sn: "ae.sn"; so: "ae.so"; sp: "ae.sp"; sq: "ae.sq"; sr: "ae.sr"; ss: "ae.ss"; st: "ae.st"; su: "ae.su"; sv: "ae.sv"; sw: "ae.sw"; sx: "ae.sx"; sy: "ae.sy"; sz: "ae.sz"; ta: "ae.ta"; tb: "ae.tb"; tc: "ae.tc"; td: "ae.td"; te: "ae.te"; tf: "ae.tf"; tg: "ae.tg"; th: "ae.th"; ti: "ae.ti"; tj: "ae.tj"; tk: "ae.tk"; tl: "ae.tl"; tm: "ae.tm"; tn: "ae.tn"; to: "ae.to"; tp: "ae.tp"; tq: "ae.tq"; tr: "ae.tr"; ts: "ae.ts"; tt: "ae.tt"; tu: "ae.tu"; tv: "ae.tv"; tw: "ae.tw"; tx: "ae.tx"; ty: "ae.ty"; tz: "ae.tz"; ua: "ae.ua"; ub: "ae.ub"; uc: "ae.uc"; ud: "ae.ud"; ue: "ae.ue"; uf: "ae.uf"; ug: "ae.ug"; uh: "ae.uh"; ui: "ae.ui"; uj: "ae.uj"; uk: "ae.uk"; ul: "ae.ul"; um: "ae.um"; un: "ae.un"; uo: "ae.uo"; up: "ae.up"; uq: "ae.uq"; ur: "ae.ur"; us: "ae.us"; ut: "ae.ut"; uu: "ae.uu"; uv: "ae.uv"; uw: "ae.uw"; ux: "ae.ux"; uy: "ae.uy"; uz: "ae.uz"; va: "ae.va"; vb: "ae.vb"; vc: "ae.vc"; vd: "ae.vd"; ve: "ae.ve"; vf: "ae.vf"; vg: "ae.vg"; vh: "ae.vh"; vi: "ae.vi"; vj: "ae.vj"; vk: "ae.vk"; vl: "ae.vl"; vm: "ae.vm"; vn: "ae.vn"; vo: "ae.vo"; vp: "ae.vp"; vq: "ae.vq"; vr: "ae.vr"; vs: "ae.vs"; vt: "ae.vt"; vu: "ae.vu"; vv: "ae.vv"; vw: "ae.vw"; vx: "ae.vx"; vy: "ae.vy"; vz: "ae.vz"; wa: "ae.wa"; wb: "ae.wb"; wc: "ae.wc"; wd: "ae.wd"; we: "ae.we"; wf: "ae.wf"; wg: "ae.wg"; wh: "ae.wh"; wi: "ae.wi"; wj: "ae.wj"; wk: "ae.wk"; wl: "ae.wl"; wm: "ae.wm"; wn: "ae.wn"; wo: "ae.wo"; wp: "ae.wp"; wq: "ae.wq"; wr: "ae.wr"; ws: "ae.ws"; wt: "ae.wt"; wu: "ae.wu"; wv: "ae.wv"; ww: "ae.ww"; wx: "ae.wx"; wy: "ae.wy"; wz: "ae.wz"; xa: "ae.xa"; xb: "ae.xb"; xc: "ae.xc"; xd: "ae.xd"; xe: "ae.xe"; xf: "ae.xf"; xg: "ae.xg"; xh: "ae.xh"; xi: "ae.xi"; xj: "ae.xj"; xk: "ae.xk"; xl: "ae.xl"; xm: "ae.xm"; xn: "ae.xn"; xo: "ae.xo"; xp: "ae.xp"; xq: "ae.xq"; xr: "ae.xr"; xs: "ae.xs"; xt: "ae.xt"; xu: "ae.xu"; xv: "ae.xv"; xw: "ae.xw"; xx: "ae.xx"; xy: "ae.xy"; xz: "ae.xz"; ya: "ae.ya"; yb: "ae.yb"; yc: "ae.yc"; yd: "ae.yd"; ye: "ae.ye"; yf: "ae.yf"; yg: "ae.yg"; yh: "ae.yh"; yi: "ae.yi"; yj: "ae.yj"; yk: "ae.yk"; yl: "ae.yl"; ym: "ae.ym"; yn: "ae.yn"; yo: "ae.yo"; yp: "ae.yp"; yq: "ae.yq"; yr: "ae.yr"; ys: "ae.ys"; yt: "ae.yt"; yu: "ae.yu"; yv: "ae.yv"; yw: "ae.yw"; yx: "ae.yx"; yy: "ae.yy"; yz: "ae.yz"; za: "ae.za"; zb: "ae.zb"; zc: "ae.zc"; zd: "ae.zd"; ze: "ae.ze"; zf: "ae.zf"; zg: "ae.zg"; zh: "ae.zh"; zi: "ae.zi"; zj: "ae.zj"; zk: "ae.zk"; zl: "ae.zl"; zm: "ae.zm"; zn: "ae.zn"; zo: "ae.zo"; zp: "ae.zp"; zq: "ae.zq"; zr: "ae.zr"; zs: "ae.zs"; zt: "ae.zt"; zu: "ae.zu"; zv: "ae.zv"; zw: "ae.zw"; zx: "ae.zx"; zy: "ae.zy"; zz: "ae.zz"; }; af: { aa: "af.aa"; ab: "af.ab"; ac: "af.ac"; ad: "af.ad"; ae: "af.ae"; af: "af.af"; ag: "af.ag"; ah: "af.ah"; ai: "af.ai"; aj: "af.aj"; ak: "af.ak"; al: "af.al"; am: "af.am"; an: "af.an"; ao: "af.ao"; ap: "af.ap"; aq: "af.aq"; ar: "af.ar"; as: "af.as"; at: "af.at"; au: "af.au"; av: "af.av"; aw: "af.aw"; ax: "af.ax"; ay: "af.ay"; az: "af.az"; ba: "af.ba"; bb: "af.bb"; bc: "af.bc"; bd: "af.bd"; be: "af.be"; bf: "af.bf"; bg: "af.bg"; bh: "af.bh"; bi: "af.bi"; bj: "af.bj"; bk: "af.bk"; bl: "af.bl"; bm: "af.bm"; bn: "af.bn"; bo: "af.bo"; bp: "af.bp"; bq: "af.bq"; br: "af.br"; bs: "af.bs"; bt: "af.bt"; bu: "af.bu"; bv: "af.bv"; bw: "af.bw"; bx: "af.bx"; by: "af.by"; bz: "af.bz"; ca: "af.ca"; cb: "af.cb"; cc: "af.cc"; cd: "af.cd"; ce: "af.ce"; cf: "af.cf"; cg: "af.cg"; ch: "af.ch"; ci: "af.ci"; cj: "af.cj"; ck: "af.ck"; cl: "af.cl"; cm: "af.cm"; cn: "af.cn"; co: "af.co"; cp: "af.cp"; cq: "af.cq"; cr: "af.cr"; cs: "af.cs"; ct: "af.ct"; cu: "af.cu"; cv: "af.cv"; cw: "af.cw"; cx: "af.cx"; cy: "af.cy"; cz: "af.cz"; da: "af.da"; db: "af.db"; dc: "af.dc"; dd: "af.dd"; de: "af.de"; df: "af.df"; dg: "af.dg"; dh: "af.dh"; di: "af.di"; dj: "af.dj"; dk: "af.dk"; dl: "af.dl"; dm: "af.dm"; dn: "af.dn"; do: "af.do"; dp: "af.dp"; dq: "af.dq"; dr: "af.dr"; ds: "af.ds"; dt: "af.dt"; du: "af.du"; dv: "af.dv"; dw: "af.dw"; dx: "af.dx"; dy: "af.dy"; dz: "af.dz"; ea: "af.ea"; eb: "af.eb"; ec: "af.ec"; ed: "af.ed"; ee: "af.ee"; ef: "af.ef"; eg: "af.eg"; eh: "af.eh"; ei: "af.ei"; ej: "af.ej"; ek: "af.ek"; el: "af.el"; em: "af.em"; en: "af.en"; eo: "af.eo"; ep: "af.ep"; eq: "af.eq"; er: "af.er"; es: "af.es"; et: "af.et"; eu: "af.eu"; ev: "af.ev"; ew: "af.ew"; ex: "af.ex"; ey: "af.ey"; ez: "af.ez"; fa: "af.fa"; fb: "af.fb"; fc: "af.fc"; fd: "af.fd"; fe: "af.fe"; ff: "af.ff"; fg: "af.fg"; fh: "af.fh"; fi: "af.fi"; fj: "af.fj"; fk: "af.fk"; fl: "af.fl"; fm: "af.fm"; fn: "af.fn"; fo: "af.fo"; fp: "af.fp"; fq: "af.fq"; fr: "af.fr"; fs: "af.fs"; ft: "af.ft"; fu: "af.fu"; fv: "af.fv"; fw: "af.fw"; fx: "af.fx"; fy: "af.fy"; fz: "af.fz"; ga: "af.ga"; gb: "af.gb"; gc: "af.gc"; gd: "af.gd"; ge: "af.ge"; gf: "af.gf"; gg: "af.gg"; gh: "af.gh"; gi: "af.gi"; gj: "af.gj"; gk: "af.gk"; gl: "af.gl"; gm: "af.gm"; gn: "af.gn"; go: "af.go"; gp: "af.gp"; gq: "af.gq"; gr: "af.gr"; gs: "af.gs"; gt: "af.gt"; gu: "af.gu"; gv: "af.gv"; gw: "af.gw"; gx: "af.gx"; gy: "af.gy"; gz: "af.gz"; ha: "af.ha"; hb: "af.hb"; hc: "af.hc"; hd: "af.hd"; he: "af.he"; hf: "af.hf"; hg: "af.hg"; hh: "af.hh"; hi: "af.hi"; hj: "af.hj"; hk: "af.hk"; hl: "af.hl"; hm: "af.hm"; hn: "af.hn"; ho: "af.ho"; hp: "af.hp"; hq: "af.hq"; hr: "af.hr"; hs: "af.hs"; ht: "af.ht"; hu: "af.hu"; hv: "af.hv"; hw: "af.hw"; hx: "af.hx"; hy: "af.hy"; hz: "af.hz"; ia: "af.ia"; ib: "af.ib"; ic: "af.ic"; id: "af.id"; ie: "af.ie"; if: "af.if"; ig: "af.ig"; ih: "af.ih"; ii: "af.ii"; ij: "af.ij"; ik: "af.ik"; il: "af.il"; im: "af.im"; in: "af.in"; io: "af.io"; ip: "af.ip"; iq: "af.iq"; ir: "af.ir"; is: "af.is"; it: "af.it"; iu: "af.iu"; iv: "af.iv"; iw: "af.iw"; ix: "af.ix"; iy: "af.iy"; iz: "af.iz"; ja: "af.ja"; jb: "af.jb"; jc: "af.jc"; jd: "af.jd"; je: "af.je"; jf: "af.jf"; jg: "af.jg"; jh: "af.jh"; ji: "af.ji"; jj: "af.jj"; jk: "af.jk"; jl: "af.jl"; jm: "af.jm"; jn: "af.jn"; jo: "af.jo"; jp: "af.jp"; jq: "af.jq"; jr: "af.jr"; js: "af.js"; jt: "af.jt"; ju: "af.ju"; jv: "af.jv"; jw: "af.jw"; jx: "af.jx"; jy: "af.jy"; jz: "af.jz"; ka: "af.ka"; kb: "af.kb"; kc: "af.kc"; kd: "af.kd"; ke: "af.ke"; kf: "af.kf"; kg: "af.kg"; kh: "af.kh"; ki: "af.ki"; kj: "af.kj"; kk: "af.kk"; kl: "af.kl"; km: "af.km"; kn: "af.kn"; ko: "af.ko"; kp: "af.kp"; kq: "af.kq"; kr: "af.kr"; ks: "af.ks"; kt: "af.kt"; ku: "af.ku"; kv: "af.kv"; kw: "af.kw"; kx: "af.kx"; ky: "af.ky"; kz: "af.kz"; la: "af.la"; lb: "af.lb"; lc: "af.lc"; ld: "af.ld"; le: "af.le"; lf: "af.lf"; lg: "af.lg"; lh: "af.lh"; li: "af.li"; lj: "af.lj"; lk: "af.lk"; ll: "af.ll"; lm: "af.lm"; ln: "af.ln"; lo: "af.lo"; lp: "af.lp"; lq: "af.lq"; lr: "af.lr"; ls: "af.ls"; lt: "af.lt"; lu: "af.lu"; lv: "af.lv"; lw: "af.lw"; lx: "af.lx"; ly: "af.ly"; lz: "af.lz"; ma: "af.ma"; mb: "af.mb"; mc: "af.mc"; md: "af.md"; me: "af.me"; mf: "af.mf"; mg: "af.mg"; mh: "af.mh"; mi: "af.mi"; mj: "af.mj"; mk: "af.mk"; ml: "af.ml"; mm: "af.mm"; mn: "af.mn"; mo: "af.mo"; mp: "af.mp"; mq: "af.mq"; mr: "af.mr"; ms: "af.ms"; mt: "af.mt"; mu: "af.mu"; mv: "af.mv"; mw: "af.mw"; mx: "af.mx"; my: "af.my"; mz: "af.mz"; na: "af.na"; nb: "af.nb"; nc: "af.nc"; nd: "af.nd"; ne: "af.ne"; nf: "af.nf"; ng: "af.ng"; nh: "af.nh"; ni: "af.ni"; nj: "af.nj"; nk: "af.nk"; nl: "af.nl"; nm: "af.nm"; nn: "af.nn"; no: "af.no"; np: "af.np"; nq: "af.nq"; nr: "af.nr"; ns: "af.ns"; nt: "af.nt"; nu: "af.nu"; nv: "af.nv"; nw: "af.nw"; nx: "af.nx"; ny: "af.ny"; nz: "af.nz"; oa: "af.oa"; ob: "af.ob"; oc: "af.oc"; od: "af.od"; oe: "af.oe"; of: "af.of"; og: "af.og"; oh: "af.oh"; oi: "af.oi"; oj: "af.oj"; ok: "af.ok"; ol: "af.ol"; om: "af.om"; on: "af.on"; oo: "af.oo"; op: "af.op"; oq: "af.oq"; or: "af.or"; os: "af.os"; ot: "af.ot"; ou: "af.ou"; ov: "af.ov"; ow: "af.ow"; ox: "af.ox"; oy: "af.oy"; oz: "af.oz"; pa: "af.pa"; pb: "af.pb"; pc: "af.pc"; pd: "af.pd"; pe: "af.pe"; pf: "af.pf"; pg: "af.pg"; ph: "af.ph"; pi: "af.pi"; pj: "af.pj"; pk: "af.pk"; pl: "af.pl"; pm: "af.pm"; pn: "af.pn"; po: "af.po"; pp: "af.pp"; pq: "af.pq"; pr: "af.pr"; ps: "af.ps"; pt: "af.pt"; pu: "af.pu"; pv: "af.pv"; pw: "af.pw"; px: "af.px"; py: "af.py"; pz: "af.pz"; qa: "af.qa"; qb: "af.qb"; qc: "af.qc"; qd: "af.qd"; qe: "af.qe"; qf: "af.qf"; qg: "af.qg"; qh: "af.qh"; qi: "af.qi"; qj: "af.qj"; qk: "af.qk"; ql: "af.ql"; qm: "af.qm"; qn: "af.qn"; qo: "af.qo"; qp: "af.qp"; qq: "af.qq"; qr: "af.qr"; qs: "af.qs"; qt: "af.qt"; qu: "af.qu"; qv: "af.qv"; qw: "af.qw"; qx: "af.qx"; qy: "af.qy"; qz: "af.qz"; ra: "af.ra"; rb: "af.rb"; rc: "af.rc"; rd: "af.rd"; re: "af.re"; rf: "af.rf"; rg: "af.rg"; rh: "af.rh"; ri: "af.ri"; rj: "af.rj"; rk: "af.rk"; rl: "af.rl"; rm: "af.rm"; rn: "af.rn"; ro: "af.ro"; rp: "af.rp"; rq: "af.rq"; rr: "af.rr"; rs: "af.rs"; rt: "af.rt"; ru: "af.ru"; rv: "af.rv"; rw: "af.rw"; rx: "af.rx"; ry: "af.ry"; rz: "af.rz"; sa: "af.sa"; sb: "af.sb"; sc: "af.sc"; sd: "af.sd"; se: "af.se"; sf: "af.sf"; sg: "af.sg"; sh: "af.sh"; si: "af.si"; sj: "af.sj"; sk: "af.sk"; sl: "af.sl"; sm: "af.sm"; sn: "af.sn"; so: "af.so"; sp: "af.sp"; sq: "af.sq"; sr: "af.sr"; ss: "af.ss"; st: "af.st"; su: "af.su"; sv: "af.sv"; sw: "af.sw"; sx: "af.sx"; sy: "af.sy"; sz: "af.sz"; ta: "af.ta"; tb: "af.tb"; tc: "af.tc"; td: "af.td"; te: "af.te"; tf: "af.tf"; tg: "af.tg"; th: "af.th"; ti: "af.ti"; tj: "af.tj"; tk: "af.tk"; tl: "af.tl"; tm: "af.tm"; tn: "af.tn"; to: "af.to"; tp: "af.tp"; tq: "af.tq"; tr: "af.tr"; ts: "af.ts"; tt: "af.tt"; tu: "af.tu"; tv: "af.tv"; tw: "af.tw"; tx: "af.tx"; ty: "af.ty"; tz: "af.tz"; ua: "af.ua"; ub: "af.ub"; uc: "af.uc"; ud: "af.ud"; ue: "af.ue"; uf: "af.uf"; ug: "af.ug"; uh: "af.uh"; ui: "af.ui"; uj: "af.uj"; uk: "af.uk"; ul: "af.ul"; um: "af.um"; un: "af.un"; uo: "af.uo"; up: "af.up"; uq: "af.uq"; ur: "af.ur"; us: "af.us"; ut: "af.ut"; uu: "af.uu"; uv: "af.uv"; uw: "af.uw"; ux: "af.ux"; uy: "af.uy"; uz: "af.uz"; va: "af.va"; vb: "af.vb"; vc: "af.vc"; vd: "af.vd"; ve: "af.ve"; vf: "af.vf"; vg: "af.vg"; vh: "af.vh"; vi: "af.vi"; vj: "af.vj"; vk: "af.vk"; vl: "af.vl"; vm: "af.vm"; vn: "af.vn"; vo: "af.vo"; vp: "af.vp"; vq: "af.vq"; vr: "af.vr"; vs: "af.vs"; vt: "af.vt"; vu: "af.vu"; vv: "af.vv"; vw: "af.vw"; vx: "af.vx"; vy: "af.vy"; vz: "af.vz"; wa: "af.wa"; wb: "af.wb"; wc: "af.wc"; wd: "af.wd"; we: "af.we"; wf: "af.wf"; wg: "af.wg"; wh: "af.wh"; wi: "af.wi"; wj: "af.wj"; wk: "af.wk"; wl: "af.wl"; wm: "af.wm"; wn: "af.wn"; wo: "af.wo"; wp: "af.wp"; wq: "af.wq"; wr: "af.wr"; ws: "af.ws"; wt: "af.wt"; wu: "af.wu"; wv: "af.wv"; ww: "af.ww"; wx: "af.wx"; wy: "af.wy"; wz: "af.wz"; xa: "af.xa"; xb: "af.xb"; xc: "af.xc"; xd: "af.xd"; xe: "af.xe"; xf: "af.xf"; xg: "af.xg"; xh: "af.xh"; xi: "af.xi"; xj: "af.xj"; xk: "af.xk"; xl: "af.xl"; xm: "af.xm"; xn: "af.xn"; xo: "af.xo"; xp: "af.xp"; xq: "af.xq"; xr: "af.xr"; xs: "af.xs"; xt: "af.xt"; xu: "af.xu"; xv: "af.xv"; xw: "af.xw"; xx: "af.xx"; xy: "af.xy"; xz: "af.xz"; ya: "af.ya"; yb: "af.yb"; yc: "af.yc"; yd: "af.yd"; ye: "af.ye"; yf: "af.yf"; yg: "af.yg"; yh: "af.yh"; yi: "af.yi"; yj: "af.yj"; yk: "af.yk"; yl: "af.yl"; ym: "af.ym"; yn: "af.yn"; yo: "af.yo"; yp: "af.yp"; yq: "af.yq"; yr: "af.yr"; ys: "af.ys"; yt: "af.yt"; yu: "af.yu"; yv: "af.yv"; yw: "af.yw"; yx: "af.yx"; yy: "af.yy"; yz: "af.yz"; za: "af.za"; zb: "af.zb"; zc: "af.zc"; zd: "af.zd"; ze: "af.ze"; zf: "af.zf"; zg: "af.zg"; zh: "af.zh"; zi: "af.zi"; zj: "af.zj"; zk: "af.zk"; zl: "af.zl"; zm: "af.zm"; zn: "af.zn"; zo: "af.zo"; zp: "af.zp"; zq: "af.zq"; zr: "af.zr"; zs: "af.zs"; zt: "af.zt"; zu: "af.zu"; zv: "af.zv"; zw: "af.zw"; zx: "af.zx"; zy: "af.zy"; zz: "af.zz"; }; ag: { aa: "ag.aa"; ab: "ag.ab"; ac: "ag.ac"; ad: "ag.ad"; ae: "ag.ae"; af: "ag.af"; ag: "ag.ag"; ah: "ag.ah"; ai: "ag.ai"; aj: "ag.aj"; ak: "ag.ak"; al: "ag.al"; am: "ag.am"; an: "ag.an"; ao: "ag.ao"; ap: "ag.ap"; aq: "ag.aq"; ar: "ag.ar"; as: "ag.as"; at: "ag.at"; au: "ag.au"; av: "ag.av"; aw: "ag.aw"; ax: "ag.ax"; ay: "ag.ay"; az: "ag.az"; ba: "ag.ba"; bb: "ag.bb"; bc: "ag.bc"; bd: "ag.bd"; be: "ag.be"; bf: "ag.bf"; bg: "ag.bg"; bh: "ag.bh"; bi: "ag.bi"; bj: "ag.bj"; bk: "ag.bk"; bl: "ag.bl"; bm: "ag.bm"; bn: "ag.bn"; bo: "ag.bo"; bp: "ag.bp"; bq: "ag.bq"; br: "ag.br"; bs: "ag.bs"; bt: "ag.bt"; bu: "ag.bu"; bv: "ag.bv"; bw: "ag.bw"; bx: "ag.bx"; by: "ag.by"; bz: "ag.bz"; ca: "ag.ca"; cb: "ag.cb"; cc: "ag.cc"; cd: "ag.cd"; ce: "ag.ce"; cf: "ag.cf"; cg: "ag.cg"; ch: "ag.ch"; ci: "ag.ci"; cj: "ag.cj"; ck: "ag.ck"; cl: "ag.cl"; cm: "ag.cm"; cn: "ag.cn"; co: "ag.co"; cp: "ag.cp"; cq: "ag.cq"; cr: "ag.cr"; cs: "ag.cs"; ct: "ag.ct"; cu: "ag.cu"; cv: "ag.cv"; cw: "ag.cw"; cx: "ag.cx"; cy: "ag.cy"; cz: "ag.cz"; da: "ag.da"; db: "ag.db"; dc: "ag.dc"; dd: "ag.dd"; de: "ag.de"; df: "ag.df"; dg: "ag.dg"; dh: "ag.dh"; di: "ag.di"; dj: "ag.dj"; dk: "ag.dk"; dl: "ag.dl"; dm: "ag.dm"; dn: "ag.dn"; do: "ag.do"; dp: "ag.dp"; dq: "ag.dq"; dr: "ag.dr"; ds: "ag.ds"; dt: "ag.dt"; du: "ag.du"; dv: "ag.dv"; dw: "ag.dw"; dx: "ag.dx"; dy: "ag.dy"; dz: "ag.dz"; ea: "ag.ea"; eb: "ag.eb"; ec: "ag.ec"; ed: "ag.ed"; ee: "ag.ee"; ef: "ag.ef"; eg: "ag.eg"; eh: "ag.eh"; ei: "ag.ei"; ej: "ag.ej"; ek: "ag.ek"; el: "ag.el"; em: "ag.em"; en: "ag.en"; eo: "ag.eo"; ep: "ag.ep"; eq: "ag.eq"; er: "ag.er"; es: "ag.es"; et: "ag.et"; eu: "ag.eu"; ev: "ag.ev"; ew: "ag.ew"; ex: "ag.ex"; ey: "ag.ey"; ez: "ag.ez"; fa: "ag.fa"; fb: "ag.fb"; fc: "ag.fc"; fd: "ag.fd"; fe: "ag.fe"; ff: "ag.ff"; fg: "ag.fg"; fh: "ag.fh"; fi: "ag.fi"; fj: "ag.fj"; fk: "ag.fk"; fl: "ag.fl"; fm: "ag.fm"; fn: "ag.fn"; fo: "ag.fo"; fp: "ag.fp"; fq: "ag.fq"; fr: "ag.fr"; fs: "ag.fs"; ft: "ag.ft"; fu: "ag.fu"; fv: "ag.fv"; fw: "ag.fw"; fx: "ag.fx"; fy: "ag.fy"; fz: "ag.fz"; ga: "ag.ga"; gb: "ag.gb"; gc: "ag.gc"; gd: "ag.gd"; ge: "ag.ge"; gf: "ag.gf"; gg: "ag.gg"; gh: "ag.gh"; gi: "ag.gi"; gj: "ag.gj"; gk: "ag.gk"; gl: "ag.gl"; gm: "ag.gm"; gn: "ag.gn"; go: "ag.go"; gp: "ag.gp"; gq: "ag.gq"; gr: "ag.gr"; gs: "ag.gs"; gt: "ag.gt"; gu: "ag.gu"; gv: "ag.gv"; gw: "ag.gw"; gx: "ag.gx"; gy: "ag.gy"; gz: "ag.gz"; ha: "ag.ha"; hb: "ag.hb"; hc: "ag.hc"; hd: "ag.hd"; he: "ag.he"; hf: "ag.hf"; hg: "ag.hg"; hh: "ag.hh"; hi: "ag.hi"; hj: "ag.hj"; hk: "ag.hk"; hl: "ag.hl"; hm: "ag.hm"; hn: "ag.hn"; ho: "ag.ho"; hp: "ag.hp"; hq: "ag.hq"; hr: "ag.hr"; hs: "ag.hs"; ht: "ag.ht"; hu: "ag.hu"; hv: "ag.hv"; hw: "ag.hw"; hx: "ag.hx"; hy: "ag.hy"; hz: "ag.hz"; ia: "ag.ia"; ib: "ag.ib"; ic: "ag.ic"; id: "ag.id"; ie: "ag.ie"; if: "ag.if"; ig: "ag.ig"; ih: "ag.ih"; ii: "ag.ii"; ij: "ag.ij"; ik: "ag.ik"; il: "ag.il"; im: "ag.im"; in: "ag.in"; io: "ag.io"; ip: "ag.ip"; iq: "ag.iq"; ir: "ag.ir"; is: "ag.is"; it: "ag.it"; iu: "ag.iu"; iv: "ag.iv"; iw: "ag.iw"; ix: "ag.ix"; iy: "ag.iy"; iz: "ag.iz"; ja: "ag.ja"; jb: "ag.jb"; jc: "ag.jc"; jd: "ag.jd"; je: "ag.je"; jf: "ag.jf"; jg: "ag.jg"; jh: "ag.jh"; ji: "ag.ji"; jj: "ag.jj"; jk: "ag.jk"; jl: "ag.jl"; jm: "ag.jm"; jn: "ag.jn"; jo: "ag.jo"; jp: "ag.jp"; jq: "ag.jq"; jr: "ag.jr"; js: "ag.js"; jt: "ag.jt"; ju: "ag.ju"; jv: "ag.jv"; jw: "ag.jw"; jx: "ag.jx"; jy: "ag.jy"; jz: "ag.jz"; ka: "ag.ka"; kb: "ag.kb"; kc: "ag.kc"; kd: "ag.kd"; ke: "ag.ke"; kf: "ag.kf"; kg: "ag.kg"; kh: "ag.kh"; ki: "ag.ki"; kj: "ag.kj"; kk: "ag.kk"; kl: "ag.kl"; km: "ag.km"; kn: "ag.kn"; ko: "ag.ko"; kp: "ag.kp"; kq: "ag.kq"; kr: "ag.kr"; ks: "ag.ks"; kt: "ag.kt"; ku: "ag.ku"; kv: "ag.kv"; kw: "ag.kw"; kx: "ag.kx"; ky: "ag.ky"; kz: "ag.kz"; la: "ag.la"; lb: "ag.lb"; lc: "ag.lc"; ld: "ag.ld"; le: "ag.le"; lf: "ag.lf"; lg: "ag.lg"; lh: "ag.lh"; li: "ag.li"; lj: "ag.lj"; lk: "ag.lk"; ll: "ag.ll"; lm: "ag.lm"; ln: "ag.ln"; lo: "ag.lo"; lp: "ag.lp"; lq: "ag.lq"; lr: "ag.lr"; ls: "ag.ls"; lt: "ag.lt"; lu: "ag.lu"; lv: "ag.lv"; lw: "ag.lw"; lx: "ag.lx"; ly: "ag.ly"; lz: "ag.lz"; ma: "ag.ma"; mb: "ag.mb"; mc: "ag.mc"; md: "ag.md"; me: "ag.me"; mf: "ag.mf"; mg: "ag.mg"; mh: "ag.mh"; mi: "ag.mi"; mj: "ag.mj"; mk: "ag.mk"; ml: "ag.ml"; mm: "ag.mm"; mn: "ag.mn"; mo: "ag.mo"; mp: "ag.mp"; mq: "ag.mq"; mr: "ag.mr"; ms: "ag.ms"; mt: "ag.mt"; mu: "ag.mu"; mv: "ag.mv"; mw: "ag.mw"; mx: "ag.mx"; my: "ag.my"; mz: "ag.mz"; na: "ag.na"; nb: "ag.nb"; nc: "ag.nc"; nd: "ag.nd"; ne: "ag.ne"; nf: "ag.nf"; ng: "ag.ng"; nh: "ag.nh"; ni: "ag.ni"; nj: "ag.nj"; nk: "ag.nk"; nl: "ag.nl"; nm: "ag.nm"; nn: "ag.nn"; no: "ag.no"; np: "ag.np"; nq: "ag.nq"; nr: "ag.nr"; ns: "ag.ns"; nt: "ag.nt"; nu: "ag.nu"; nv: "ag.nv"; nw: "ag.nw"; nx: "ag.nx"; ny: "ag.ny"; nz: "ag.nz"; oa: "ag.oa"; ob: "ag.ob"; oc: "ag.oc"; od: "ag.od"; oe: "ag.oe"; of: "ag.of"; og: "ag.og"; oh: "ag.oh"; oi: "ag.oi"; oj: "ag.oj"; ok: "ag.ok"; ol: "ag.ol"; om: "ag.om"; on: "ag.on"; oo: "ag.oo"; op: "ag.op"; oq: "ag.oq"; or: "ag.or"; os: "ag.os"; ot: "ag.ot"; ou: "ag.ou"; ov: "ag.ov"; ow: "ag.ow"; ox: "ag.ox"; oy: "ag.oy"; oz: "ag.oz"; pa: "ag.pa"; pb: "ag.pb"; pc: "ag.pc"; pd: "ag.pd"; pe: "ag.pe"; pf: "ag.pf"; pg: "ag.pg"; ph: "ag.ph"; pi: "ag.pi"; pj: "ag.pj"; pk: "ag.pk"; pl: "ag.pl"; pm: "ag.pm"; pn: "ag.pn"; po: "ag.po"; pp: "ag.pp"; pq: "ag.pq"; pr: "ag.pr"; ps: "ag.ps"; pt: "ag.pt"; pu: "ag.pu"; pv: "ag.pv"; pw: "ag.pw"; px: "ag.px"; py: "ag.py"; pz: "ag.pz"; qa: "ag.qa"; qb: "ag.qb"; qc: "ag.qc"; qd: "ag.qd"; qe: "ag.qe"; qf: "ag.qf"; qg: "ag.qg"; qh: "ag.qh"; qi: "ag.qi"; qj: "ag.qj"; qk: "ag.qk"; ql: "ag.ql"; qm: "ag.qm"; qn: "ag.qn"; qo: "ag.qo"; qp: "ag.qp"; qq: "ag.qq"; qr: "ag.qr"; qs: "ag.qs"; qt: "ag.qt"; qu: "ag.qu"; qv: "ag.qv"; qw: "ag.qw"; qx: "ag.qx"; qy: "ag.qy"; qz: "ag.qz"; ra: "ag.ra"; rb: "ag.rb"; rc: "ag.rc"; rd: "ag.rd"; re: "ag.re"; rf: "ag.rf"; rg: "ag.rg"; rh: "ag.rh"; ri: "ag.ri"; rj: "ag.rj"; rk: "ag.rk"; rl: "ag.rl"; rm: "ag.rm"; rn: "ag.rn"; ro: "ag.ro"; rp: "ag.rp"; rq: "ag.rq"; rr: "ag.rr"; rs: "ag.rs"; rt: "ag.rt"; ru: "ag.ru"; rv: "ag.rv"; rw: "ag.rw"; rx: "ag.rx"; ry: "ag.ry"; rz: "ag.rz"; sa: "ag.sa"; sb: "ag.sb"; sc: "ag.sc"; sd: "ag.sd"; se: "ag.se"; sf: "ag.sf"; sg: "ag.sg"; sh: "ag.sh"; si: "ag.si"; sj: "ag.sj"; sk: "ag.sk"; sl: "ag.sl"; sm: "ag.sm"; sn: "ag.sn"; so: "ag.so"; sp: "ag.sp"; sq: "ag.sq"; sr: "ag.sr"; ss: "ag.ss"; st: "ag.st"; su: "ag.su"; sv: "ag.sv"; sw: "ag.sw"; sx: "ag.sx"; sy: "ag.sy"; sz: "ag.sz"; ta: "ag.ta"; tb: "ag.tb"; tc: "ag.tc"; td: "ag.td"; te: "ag.te"; tf: "ag.tf"; tg: "ag.tg"; th: "ag.th"; ti: "ag.ti"; tj: "ag.tj"; tk: "ag.tk"; tl: "ag.tl"; tm: "ag.tm"; tn: "ag.tn"; to: "ag.to"; tp: "ag.tp"; tq: "ag.tq"; tr: "ag.tr"; ts: "ag.ts"; tt: "ag.tt"; tu: "ag.tu"; tv: "ag.tv"; tw: "ag.tw"; tx: "ag.tx"; ty: "ag.ty"; tz: "ag.tz"; ua: "ag.ua"; ub: "ag.ub"; uc: "ag.uc"; ud: "ag.ud"; ue: "ag.ue"; uf: "ag.uf"; ug: "ag.ug"; uh: "ag.uh"; ui: "ag.ui"; uj: "ag.uj"; uk: "ag.uk"; ul: "ag.ul"; um: "ag.um"; un: "ag.un"; uo: "ag.uo"; up: "ag.up"; uq: "ag.uq"; ur: "ag.ur"; us: "ag.us"; ut: "ag.ut"; uu: "ag.uu"; uv: "ag.uv"; uw: "ag.uw"; ux: "ag.ux"; uy: "ag.uy"; uz: "ag.uz"; va: "ag.va"; vb: "ag.vb"; vc: "ag.vc"; vd: "ag.vd"; ve: "ag.ve"; vf: "ag.vf"; vg: "ag.vg"; vh: "ag.vh"; vi: "ag.vi"; vj: "ag.vj"; vk: "ag.vk"; vl: "ag.vl"; vm: "ag.vm"; vn: "ag.vn"; vo: "ag.vo"; vp: "ag.vp"; vq: "ag.vq"; vr: "ag.vr"; vs: "ag.vs"; vt: "ag.vt"; vu: "ag.vu"; vv: "ag.vv"; vw: "ag.vw"; vx: "ag.vx"; vy: "ag.vy"; vz: "ag.vz"; wa: "ag.wa"; wb: "ag.wb"; wc: "ag.wc"; wd: "ag.wd"; we: "ag.we"; wf: "ag.wf"; wg: "ag.wg"; wh: "ag.wh"; wi: "ag.wi"; wj: "ag.wj"; wk: "ag.wk"; wl: "ag.wl"; wm: "ag.wm"; wn: "ag.wn"; wo: "ag.wo"; wp: "ag.wp"; wq: "ag.wq"; wr: "ag.wr"; ws: "ag.ws"; wt: "ag.wt"; wu: "ag.wu"; wv: "ag.wv"; ww: "ag.ww"; wx: "ag.wx"; wy: "ag.wy"; wz: "ag.wz"; xa: "ag.xa"; xb: "ag.xb"; xc: "ag.xc"; xd: "ag.xd"; xe: "ag.xe"; xf: "ag.xf"; xg: "ag.xg"; xh: "ag.xh"; xi: "ag.xi"; xj: "ag.xj"; xk: "ag.xk"; xl: "ag.xl"; xm: "ag.xm"; xn: "ag.xn"; xo: "ag.xo"; xp: "ag.xp"; xq: "ag.xq"; xr: "ag.xr"; xs: "ag.xs"; xt: "ag.xt"; xu: "ag.xu"; xv: "ag.xv"; xw: "ag.xw"; xx: "ag.xx"; xy: "ag.xy"; xz: "ag.xz"; ya: "ag.ya"; yb: "ag.yb"; yc: "ag.yc"; yd: "ag.yd"; ye: "ag.ye"; yf: "ag.yf"; yg: "ag.yg"; yh: "ag.yh"; yi: "ag.yi"; yj: "ag.yj"; yk: "ag.yk"; yl: "ag.yl"; ym: "ag.ym"; yn: "ag.yn"; yo: "ag.yo"; yp: "ag.yp"; yq: "ag.yq"; yr: "ag.yr"; ys: "ag.ys"; yt: "ag.yt"; yu: "ag.yu"; yv: "ag.yv"; yw: "ag.yw"; yx: "ag.yx"; yy: "ag.yy"; yz: "ag.yz"; za: "ag.za"; zb: "ag.zb"; zc: "ag.zc"; zd: "ag.zd"; ze: "ag.ze"; zf: "ag.zf"; zg: "ag.zg"; zh: "ag.zh"; zi: "ag.zi"; zj: "ag.zj"; zk: "ag.zk"; zl: "ag.zl"; zm: "ag.zm"; zn: "ag.zn"; zo: "ag.zo"; zp: "ag.zp"; zq: "ag.zq"; zr: "ag.zr"; zs: "ag.zs"; zt: "ag.zt"; zu: "ag.zu"; zv: "ag.zv"; zw: "ag.zw"; zx: "ag.zx"; zy: "ag.zy"; zz: "ag.zz"; }; ah: { aa: "ah.aa"; ab: "ah.ab"; ac: "ah.ac"; ad: "ah.ad"; ae: "ah.ae"; af: "ah.af"; ag: "ah.ag"; ah: "ah.ah"; ai: "ah.ai"; aj: "ah.aj"; ak: "ah.ak"; al: "ah.al"; am: "ah.am"; an: "ah.an"; ao: "ah.ao"; ap: "ah.ap"; aq: "ah.aq"; ar: "ah.ar"; as: "ah.as"; at: "ah.at"; au: "ah.au"; av: "ah.av"; aw: "ah.aw"; ax: "ah.ax"; ay: "ah.ay"; az: "ah.az"; ba: "ah.ba"; bb: "ah.bb"; bc: "ah.bc"; bd: "ah.bd"; be: "ah.be"; bf: "ah.bf"; bg: "ah.bg"; bh: "ah.bh"; bi: "ah.bi"; bj: "ah.bj"; bk: "ah.bk"; bl: "ah.bl"; bm: "ah.bm"; bn: "ah.bn"; bo: "ah.bo"; bp: "ah.bp"; bq: "ah.bq"; br: "ah.br"; bs: "ah.bs"; bt: "ah.bt"; bu: "ah.bu"; bv: "ah.bv"; bw: "ah.bw"; bx: "ah.bx"; by: "ah.by"; bz: "ah.bz"; ca: "ah.ca"; cb: "ah.cb"; cc: "ah.cc"; cd: "ah.cd"; ce: "ah.ce"; cf: "ah.cf"; cg: "ah.cg"; ch: "ah.ch"; ci: "ah.ci"; cj: "ah.cj"; ck: "ah.ck"; cl: "ah.cl"; cm: "ah.cm"; cn: "ah.cn"; co: "ah.co"; cp: "ah.cp"; cq: "ah.cq"; cr: "ah.cr"; cs: "ah.cs"; ct: "ah.ct"; cu: "ah.cu"; cv: "ah.cv"; cw: "ah.cw"; cx: "ah.cx"; cy: "ah.cy"; cz: "ah.cz"; da: "ah.da"; db: "ah.db"; dc: "ah.dc"; dd: "ah.dd"; de: "ah.de"; df: "ah.df"; dg: "ah.dg"; dh: "ah.dh"; di: "ah.di"; dj: "ah.dj"; dk: "ah.dk"; dl: "ah.dl"; dm: "ah.dm"; dn: "ah.dn"; do: "ah.do"; dp: "ah.dp"; dq: "ah.dq"; dr: "ah.dr"; ds: "ah.ds"; dt: "ah.dt"; du: "ah.du"; dv: "ah.dv"; dw: "ah.dw"; dx: "ah.dx"; dy: "ah.dy"; dz: "ah.dz"; ea: "ah.ea"; eb: "ah.eb"; ec: "ah.ec"; ed: "ah.ed"; ee: "ah.ee"; ef: "ah.ef"; eg: "ah.eg"; eh: "ah.eh"; ei: "ah.ei"; ej: "ah.ej"; ek: "ah.ek"; el: "ah.el"; em: "ah.em"; en: "ah.en"; eo: "ah.eo"; ep: "ah.ep"; eq: "ah.eq"; er: "ah.er"; es: "ah.es"; et: "ah.et"; eu: "ah.eu"; ev: "ah.ev"; ew: "ah.ew"; ex: "ah.ex"; ey: "ah.ey"; ez: "ah.ez"; fa: "ah.fa"; fb: "ah.fb"; fc: "ah.fc"; fd: "ah.fd"; fe: "ah.fe"; ff: "ah.ff"; fg: "ah.fg"; fh: "ah.fh"; fi: "ah.fi"; fj: "ah.fj"; fk: "ah.fk"; fl: "ah.fl"; fm: "ah.fm"; fn: "ah.fn"; fo: "ah.fo"; fp: "ah.fp"; fq: "ah.fq"; fr: "ah.fr"; fs: "ah.fs"; ft: "ah.ft"; fu: "ah.fu"; fv: "ah.fv"; fw: "ah.fw"; fx: "ah.fx"; fy: "ah.fy"; fz: "ah.fz"; ga: "ah.ga"; gb: "ah.gb"; gc: "ah.gc"; gd: "ah.gd"; ge: "ah.ge"; gf: "ah.gf"; gg: "ah.gg"; gh: "ah.gh"; gi: "ah.gi"; gj: "ah.gj"; gk: "ah.gk"; gl: "ah.gl"; gm: "ah.gm"; gn: "ah.gn"; go: "ah.go"; gp: "ah.gp"; gq: "ah.gq"; gr: "ah.gr"; gs: "ah.gs"; gt: "ah.gt"; gu: "ah.gu"; gv: "ah.gv"; gw: "ah.gw"; gx: "ah.gx"; gy: "ah.gy"; gz: "ah.gz"; ha: "ah.ha"; hb: "ah.hb"; hc: "ah.hc"; hd: "ah.hd"; he: "ah.he"; hf: "ah.hf"; hg: "ah.hg"; hh: "ah.hh"; hi: "ah.hi"; hj: "ah.hj"; hk: "ah.hk"; hl: "ah.hl"; hm: "ah.hm"; hn: "ah.hn"; ho: "ah.ho"; hp: "ah.hp"; hq: "ah.hq"; hr: "ah.hr"; hs: "ah.hs"; ht: "ah.ht"; hu: "ah.hu"; hv: "ah.hv"; hw: "ah.hw"; hx: "ah.hx"; hy: "ah.hy"; hz: "ah.hz"; ia: "ah.ia"; ib: "ah.ib"; ic: "ah.ic"; id: "ah.id"; ie: "ah.ie"; if: "ah.if"; ig: "ah.ig"; ih: "ah.ih"; ii: "ah.ii"; ij: "ah.ij"; ik: "ah.ik"; il: "ah.il"; im: "ah.im"; in: "ah.in"; io: "ah.io"; ip: "ah.ip"; iq: "ah.iq"; ir: "ah.ir"; is: "ah.is"; it: "ah.it"; iu: "ah.iu"; iv: "ah.iv"; iw: "ah.iw"; ix: "ah.ix"; iy: "ah.iy"; iz: "ah.iz"; ja: "ah.ja"; jb: "ah.jb"; jc: "ah.jc"; jd: "ah.jd"; je: "ah.je"; jf: "ah.jf"; jg: "ah.jg"; jh: "ah.jh"; ji: "ah.ji"; jj: "ah.jj"; jk: "ah.jk"; jl: "ah.jl"; jm: "ah.jm"; jn: "ah.jn"; jo: "ah.jo"; jp: "ah.jp"; jq: "ah.jq"; jr: "ah.jr"; js: "ah.js"; jt: "ah.jt"; ju: "ah.ju"; jv: "ah.jv"; jw: "ah.jw"; jx: "ah.jx"; jy: "ah.jy"; jz: "ah.jz"; ka: "ah.ka"; kb: "ah.kb"; kc: "ah.kc"; kd: "ah.kd"; ke: "ah.ke"; kf: "ah.kf"; kg: "ah.kg"; kh: "ah.kh"; ki: "ah.ki"; kj: "ah.kj"; kk: "ah.kk"; kl: "ah.kl"; km: "ah.km"; kn: "ah.kn"; ko: "ah.ko"; kp: "ah.kp"; kq: "ah.kq"; kr: "ah.kr"; ks: "ah.ks"; kt: "ah.kt"; ku: "ah.ku"; kv: "ah.kv"; kw: "ah.kw"; kx: "ah.kx"; ky: "ah.ky"; kz: "ah.kz"; la: "ah.la"; lb: "ah.lb"; lc: "ah.lc"; ld: "ah.ld"; le: "ah.le"; lf: "ah.lf"; lg: "ah.lg"; lh: "ah.lh"; li: "ah.li"; lj: "ah.lj"; lk: "ah.lk"; ll: "ah.ll"; lm: "ah.lm"; ln: "ah.ln"; lo: "ah.lo"; lp: "ah.lp"; lq: "ah.lq"; lr: "ah.lr"; ls: "ah.ls"; lt: "ah.lt"; lu: "ah.lu"; lv: "ah.lv"; lw: "ah.lw"; lx: "ah.lx"; ly: "ah.ly"; lz: "ah.lz"; ma: "ah.ma"; mb: "ah.mb"; mc: "ah.mc"; md: "ah.md"; me: "ah.me"; mf: "ah.mf"; mg: "ah.mg"; mh: "ah.mh"; mi: "ah.mi"; mj: "ah.mj"; mk: "ah.mk"; ml: "ah.ml"; mm: "ah.mm"; mn: "ah.mn"; mo: "ah.mo"; mp: "ah.mp"; mq: "ah.mq"; mr: "ah.mr"; ms: "ah.ms"; mt: "ah.mt"; mu: "ah.mu"; mv: "ah.mv"; mw: "ah.mw"; mx: "ah.mx"; my: "ah.my"; mz: "ah.mz"; na: "ah.na"; nb: "ah.nb"; nc: "ah.nc"; nd: "ah.nd"; ne: "ah.ne"; nf: "ah.nf"; ng: "ah.ng"; nh: "ah.nh"; ni: "ah.ni"; nj: "ah.nj"; nk: "ah.nk"; nl: "ah.nl"; nm: "ah.nm"; nn: "ah.nn"; no: "ah.no"; np: "ah.np"; nq: "ah.nq"; nr: "ah.nr"; ns: "ah.ns"; nt: "ah.nt"; nu: "ah.nu"; nv: "ah.nv"; nw: "ah.nw"; nx: "ah.nx"; ny: "ah.ny"; nz: "ah.nz"; oa: "ah.oa"; ob: "ah.ob"; oc: "ah.oc"; od: "ah.od"; oe: "ah.oe"; of: "ah.of"; og: "ah.og"; oh: "ah.oh"; oi: "ah.oi"; oj: "ah.oj"; ok: "ah.ok"; ol: "ah.ol"; om: "ah.om"; on: "ah.on"; oo: "ah.oo"; op: "ah.op"; oq: "ah.oq"; or: "ah.or"; os: "ah.os"; ot: "ah.ot"; ou: "ah.ou"; ov: "ah.ov"; ow: "ah.ow"; ox: "ah.ox"; oy: "ah.oy"; oz: "ah.oz"; pa: "ah.pa"; pb: "ah.pb"; pc: "ah.pc"; pd: "ah.pd"; pe: "ah.pe"; pf: "ah.pf"; pg: "ah.pg"; ph: "ah.ph"; pi: "ah.pi"; pj: "ah.pj"; pk: "ah.pk"; pl: "ah.pl"; pm: "ah.pm"; pn: "ah.pn"; po: "ah.po"; pp: "ah.pp"; pq: "ah.pq"; pr: "ah.pr"; ps: "ah.ps"; pt: "ah.pt"; pu: "ah.pu"; pv: "ah.pv"; pw: "ah.pw"; px: "ah.px"; py: "ah.py"; pz: "ah.pz"; qa: "ah.qa"; qb: "ah.qb"; qc: "ah.qc"; qd: "ah.qd"; qe: "ah.qe"; qf: "ah.qf"; qg: "ah.qg"; qh: "ah.qh"; qi: "ah.qi"; qj: "ah.qj"; qk: "ah.qk"; ql: "ah.ql"; qm: "ah.qm"; qn: "ah.qn"; qo: "ah.qo"; qp: "ah.qp"; qq: "ah.qq"; qr: "ah.qr"; qs: "ah.qs"; qt: "ah.qt"; qu: "ah.qu"; qv: "ah.qv"; qw: "ah.qw"; qx: "ah.qx"; qy: "ah.qy"; qz: "ah.qz"; ra: "ah.ra"; rb: "ah.rb"; rc: "ah.rc"; rd: "ah.rd"; re: "ah.re"; rf: "ah.rf"; rg: "ah.rg"; rh: "ah.rh"; ri: "ah.ri"; rj: "ah.rj"; rk: "ah.rk"; rl: "ah.rl"; rm: "ah.rm"; rn: "ah.rn"; ro: "ah.ro"; rp: "ah.rp"; rq: "ah.rq"; rr: "ah.rr"; rs: "ah.rs"; rt: "ah.rt"; ru: "ah.ru"; rv: "ah.rv"; rw: "ah.rw"; rx: "ah.rx"; ry: "ah.ry"; rz: "ah.rz"; sa: "ah.sa"; sb: "ah.sb"; sc: "ah.sc"; sd: "ah.sd"; se: "ah.se"; sf: "ah.sf"; sg: "ah.sg"; sh: "ah.sh"; si: "ah.si"; sj: "ah.sj"; sk: "ah.sk"; sl: "ah.sl"; sm: "ah.sm"; sn: "ah.sn"; so: "ah.so"; sp: "ah.sp"; sq: "ah.sq"; sr: "ah.sr"; ss: "ah.ss"; st: "ah.st"; su: "ah.su"; sv: "ah.sv"; sw: "ah.sw"; sx: "ah.sx"; sy: "ah.sy"; sz: "ah.sz"; ta: "ah.ta"; tb: "ah.tb"; tc: "ah.tc"; td: "ah.td"; te: "ah.te"; tf: "ah.tf"; tg: "ah.tg"; th: "ah.th"; ti: "ah.ti"; tj: "ah.tj"; tk: "ah.tk"; tl: "ah.tl"; tm: "ah.tm"; tn: "ah.tn"; to: "ah.to"; tp: "ah.tp"; tq: "ah.tq"; tr: "ah.tr"; ts: "ah.ts"; tt: "ah.tt"; tu: "ah.tu"; tv: "ah.tv"; tw: "ah.tw"; tx: "ah.tx"; ty: "ah.ty"; tz: "ah.tz"; ua: "ah.ua"; ub: "ah.ub"; uc: "ah.uc"; ud: "ah.ud"; ue: "ah.ue"; uf: "ah.uf"; ug: "ah.ug"; uh: "ah.uh"; ui: "ah.ui"; uj: "ah.uj"; uk: "ah.uk"; ul: "ah.ul"; um: "ah.um"; un: "ah.un"; uo: "ah.uo"; up: "ah.up"; uq: "ah.uq"; ur: "ah.ur"; us: "ah.us"; ut: "ah.ut"; uu: "ah.uu"; uv: "ah.uv"; uw: "ah.uw"; ux: "ah.ux"; uy: "ah.uy"; uz: "ah.uz"; va: "ah.va"; vb: "ah.vb"; vc: "ah.vc"; vd: "ah.vd"; ve: "ah.ve"; vf: "ah.vf"; vg: "ah.vg"; vh: "ah.vh"; vi: "ah.vi"; vj: "ah.vj"; vk: "ah.vk"; vl: "ah.vl"; vm: "ah.vm"; vn: "ah.vn"; vo: "ah.vo"; vp: "ah.vp"; vq: "ah.vq"; vr: "ah.vr"; vs: "ah.vs"; vt: "ah.vt"; vu: "ah.vu"; vv: "ah.vv"; vw: "ah.vw"; vx: "ah.vx"; vy: "ah.vy"; vz: "ah.vz"; wa: "ah.wa"; wb: "ah.wb"; wc: "ah.wc"; wd: "ah.wd"; we: "ah.we"; wf: "ah.wf"; wg: "ah.wg"; wh: "ah.wh"; wi: "ah.wi"; wj: "ah.wj"; wk: "ah.wk"; wl: "ah.wl"; wm: "ah.wm"; wn: "ah.wn"; wo: "ah.wo"; wp: "ah.wp"; wq: "ah.wq"; wr: "ah.wr"; ws: "ah.ws"; wt: "ah.wt"; wu: "ah.wu"; wv: "ah.wv"; ww: "ah.ww"; wx: "ah.wx"; wy: "ah.wy"; wz: "ah.wz"; xa: "ah.xa"; xb: "ah.xb"; xc: "ah.xc"; xd: "ah.xd"; xe: "ah.xe"; xf: "ah.xf"; xg: "ah.xg"; xh: "ah.xh"; xi: "ah.xi"; xj: "ah.xj"; xk: "ah.xk"; xl: "ah.xl"; xm: "ah.xm"; xn: "ah.xn"; xo: "ah.xo"; xp: "ah.xp"; xq: "ah.xq"; xr: "ah.xr"; xs: "ah.xs"; xt: "ah.xt"; xu: "ah.xu"; xv: "ah.xv"; xw: "ah.xw"; xx: "ah.xx"; xy: "ah.xy"; xz: "ah.xz"; ya: "ah.ya"; yb: "ah.yb"; yc: "ah.yc"; yd: "ah.yd"; ye: "ah.ye"; yf: "ah.yf"; yg: "ah.yg"; yh: "ah.yh"; yi: "ah.yi"; yj: "ah.yj"; yk: "ah.yk"; yl: "ah.yl"; ym: "ah.ym"; yn: "ah.yn"; yo: "ah.yo"; yp: "ah.yp"; yq: "ah.yq"; yr: "ah.yr"; ys: "ah.ys"; yt: "ah.yt"; yu: "ah.yu"; yv: "ah.yv"; yw: "ah.yw"; yx: "ah.yx"; yy: "ah.yy"; yz: "ah.yz"; za: "ah.za"; zb: "ah.zb"; zc: "ah.zc"; zd: "ah.zd"; ze: "ah.ze"; zf: "ah.zf"; zg: "ah.zg"; zh: "ah.zh"; zi: "ah.zi"; zj: "ah.zj"; zk: "ah.zk"; zl: "ah.zl"; zm: "ah.zm"; zn: "ah.zn"; zo: "ah.zo"; zp: "ah.zp"; zq: "ah.zq"; zr: "ah.zr"; zs: "ah.zs"; zt: "ah.zt"; zu: "ah.zu"; zv: "ah.zv"; zw: "ah.zw"; zx: "ah.zx"; zy: "ah.zy"; zz: "ah.zz"; }; ai: { aa: "ai.aa"; ab: "ai.ab"; ac: "ai.ac"; ad: "ai.ad"; ae: "ai.ae"; af: "ai.af"; ag: "ai.ag"; ah: "ai.ah"; ai: "ai.ai"; aj: "ai.aj"; ak: "ai.ak"; al: "ai.al"; am: "ai.am"; an: "ai.an"; ao: "ai.ao"; ap: "ai.ap"; aq: "ai.aq"; ar: "ai.ar"; as: "ai.as"; at: "ai.at"; au: "ai.au"; av: "ai.av"; aw: "ai.aw"; ax: "ai.ax"; ay: "ai.ay"; az: "ai.az"; ba: "ai.ba"; bb: "ai.bb"; bc: "ai.bc"; bd: "ai.bd"; be: "ai.be"; bf: "ai.bf"; bg: "ai.bg"; bh: "ai.bh"; bi: "ai.bi"; bj: "ai.bj"; bk: "ai.bk"; bl: "ai.bl"; bm: "ai.bm"; bn: "ai.bn"; bo: "ai.bo"; bp: "ai.bp"; bq: "ai.bq"; br: "ai.br"; bs: "ai.bs"; bt: "ai.bt"; bu: "ai.bu"; bv: "ai.bv"; bw: "ai.bw"; bx: "ai.bx"; by: "ai.by"; bz: "ai.bz"; ca: "ai.ca"; cb: "ai.cb"; cc: "ai.cc"; cd: "ai.cd"; ce: "ai.ce"; cf: "ai.cf"; cg: "ai.cg"; ch: "ai.ch"; ci: "ai.ci"; cj: "ai.cj"; ck: "ai.ck"; cl: "ai.cl"; cm: "ai.cm"; cn: "ai.cn"; co: "ai.co"; cp: "ai.cp"; cq: "ai.cq"; cr: "ai.cr"; cs: "ai.cs"; ct: "ai.ct"; cu: "ai.cu"; cv: "ai.cv"; cw: "ai.cw"; cx: "ai.cx"; cy: "ai.cy"; cz: "ai.cz"; da: "ai.da"; db: "ai.db"; dc: "ai.dc"; dd: "ai.dd"; de: "ai.de"; df: "ai.df"; dg: "ai.dg"; dh: "ai.dh"; di: "ai.di"; dj: "ai.dj"; dk: "ai.dk"; dl: "ai.dl"; dm: "ai.dm"; dn: "ai.dn"; do: "ai.do"; dp: "ai.dp"; dq: "ai.dq"; dr: "ai.dr"; ds: "ai.ds"; dt: "ai.dt"; du: "ai.du"; dv: "ai.dv"; dw: "ai.dw"; dx: "ai.dx"; dy: "ai.dy"; dz: "ai.dz"; ea: "ai.ea"; eb: "ai.eb"; ec: "ai.ec"; ed: "ai.ed"; ee: "ai.ee"; ef: "ai.ef"; eg: "ai.eg"; eh: "ai.eh"; ei: "ai.ei"; ej: "ai.ej"; ek: "ai.ek"; el: "ai.el"; em: "ai.em"; en: "ai.en"; eo: "ai.eo"; ep: "ai.ep"; eq: "ai.eq"; er: "ai.er"; es: "ai.es"; et: "ai.et"; eu: "ai.eu"; ev: "ai.ev"; ew: "ai.ew"; ex: "ai.ex"; ey: "ai.ey"; ez: "ai.ez"; fa: "ai.fa"; fb: "ai.fb"; fc: "ai.fc"; fd: "ai.fd"; fe: "ai.fe"; ff: "ai.ff"; fg: "ai.fg"; fh: "ai.fh"; fi: "ai.fi"; fj: "ai.fj"; fk: "ai.fk"; fl: "ai.fl"; fm: "ai.fm"; fn: "ai.fn"; fo: "ai.fo"; fp: "ai.fp"; fq: "ai.fq"; fr: "ai.fr"; fs: "ai.fs"; ft: "ai.ft"; fu: "ai.fu"; fv: "ai.fv"; fw: "ai.fw"; fx: "ai.fx"; fy: "ai.fy"; fz: "ai.fz"; ga: "ai.ga"; gb: "ai.gb"; gc: "ai.gc"; gd: "ai.gd"; ge: "ai.ge"; gf: "ai.gf"; gg: "ai.gg"; gh: "ai.gh"; gi: "ai.gi"; gj: "ai.gj"; gk: "ai.gk"; gl: "ai.gl"; gm: "ai.gm"; gn: "ai.gn"; go: "ai.go"; gp: "ai.gp"; gq: "ai.gq"; gr: "ai.gr"; gs: "ai.gs"; gt: "ai.gt"; gu: "ai.gu"; gv: "ai.gv"; gw: "ai.gw"; gx: "ai.gx"; gy: "ai.gy"; gz: "ai.gz"; ha: "ai.ha"; hb: "ai.hb"; hc: "ai.hc"; hd: "ai.hd"; he: "ai.he"; hf: "ai.hf"; hg: "ai.hg"; hh: "ai.hh"; hi: "ai.hi"; hj: "ai.hj"; hk: "ai.hk"; hl: "ai.hl"; hm: "ai.hm"; hn: "ai.hn"; ho: "ai.ho"; hp: "ai.hp"; hq: "ai.hq"; hr: "ai.hr"; hs: "ai.hs"; ht: "ai.ht"; hu: "ai.hu"; hv: "ai.hv"; hw: "ai.hw"; hx: "ai.hx"; hy: "ai.hy"; hz: "ai.hz"; ia: "ai.ia"; ib: "ai.ib"; ic: "ai.ic"; id: "ai.id"; ie: "ai.ie"; if: "ai.if"; ig: "ai.ig"; ih: "ai.ih"; ii: "ai.ii"; ij: "ai.ij"; ik: "ai.ik"; il: "ai.il"; im: "ai.im"; in: "ai.in"; io: "ai.io"; ip: "ai.ip"; iq: "ai.iq"; ir: "ai.ir"; is: "ai.is"; it: "ai.it"; iu: "ai.iu"; iv: "ai.iv"; iw: "ai.iw"; ix: "ai.ix"; iy: "ai.iy"; iz: "ai.iz"; ja: "ai.ja"; jb: "ai.jb"; jc: "ai.jc"; jd: "ai.jd"; je: "ai.je"; jf: "ai.jf"; jg: "ai.jg"; jh: "ai.jh"; ji: "ai.ji"; jj: "ai.jj"; jk: "ai.jk"; jl: "ai.jl"; jm: "ai.jm"; jn: "ai.jn"; jo: "ai.jo"; jp: "ai.jp"; jq: "ai.jq"; jr: "ai.jr"; js: "ai.js"; jt: "ai.jt"; ju: "ai.ju"; jv: "ai.jv"; jw: "ai.jw"; jx: "ai.jx"; jy: "ai.jy"; jz: "ai.jz"; ka: "ai.ka"; kb: "ai.kb"; kc: "ai.kc"; kd: "ai.kd"; ke: "ai.ke"; kf: "ai.kf"; kg: "ai.kg"; kh: "ai.kh"; ki: "ai.ki"; kj: "ai.kj"; kk: "ai.kk"; kl: "ai.kl"; km: "ai.km"; kn: "ai.kn"; ko: "ai.ko"; kp: "ai.kp"; kq: "ai.kq"; kr: "ai.kr"; ks: "ai.ks"; kt: "ai.kt"; ku: "ai.ku"; kv: "ai.kv"; kw: "ai.kw"; kx: "ai.kx"; ky: "ai.ky"; kz: "ai.kz"; la: "ai.la"; lb: "ai.lb"; lc: "ai.lc"; ld: "ai.ld"; le: "ai.le"; lf: "ai.lf"; lg: "ai.lg"; lh: "ai.lh"; li: "ai.li"; lj: "ai.lj"; lk: "ai.lk"; ll: "ai.ll"; lm: "ai.lm"; ln: "ai.ln"; lo: "ai.lo"; lp: "ai.lp"; lq: "ai.lq"; lr: "ai.lr"; ls: "ai.ls"; lt: "ai.lt"; lu: "ai.lu"; lv: "ai.lv"; lw: "ai.lw"; lx: "ai.lx"; ly: "ai.ly"; lz: "ai.lz"; ma: "ai.ma"; mb: "ai.mb"; mc: "ai.mc"; md: "ai.md"; me: "ai.me"; mf: "ai.mf"; mg: "ai.mg"; mh: "ai.mh"; mi: "ai.mi"; mj: "ai.mj"; mk: "ai.mk"; ml: "ai.ml"; mm: "ai.mm"; mn: "ai.mn"; mo: "ai.mo"; mp: "ai.mp"; mq: "ai.mq"; mr: "ai.mr"; ms: "ai.ms"; mt: "ai.mt"; mu: "ai.mu"; mv: "ai.mv"; mw: "ai.mw"; mx: "ai.mx"; my: "ai.my"; mz: "ai.mz"; na: "ai.na"; nb: "ai.nb"; nc: "ai.nc"; nd: "ai.nd"; ne: "ai.ne"; nf: "ai.nf"; ng: "ai.ng"; nh: "ai.nh"; ni: "ai.ni"; nj: "ai.nj"; nk: "ai.nk"; nl: "ai.nl"; nm: "ai.nm"; nn: "ai.nn"; no: "ai.no"; np: "ai.np"; nq: "ai.nq"; nr: "ai.nr"; ns: "ai.ns"; nt: "ai.nt"; nu: "ai.nu"; nv: "ai.nv"; nw: "ai.nw"; nx: "ai.nx"; ny: "ai.ny"; nz: "ai.nz"; oa: "ai.oa"; ob: "ai.ob"; oc: "ai.oc"; od: "ai.od"; oe: "ai.oe"; of: "ai.of"; og: "ai.og"; oh: "ai.oh"; oi: "ai.oi"; oj: "ai.oj"; ok: "ai.ok"; ol: "ai.ol"; om: "ai.om"; on: "ai.on"; oo: "ai.oo"; op: "ai.op"; oq: "ai.oq"; or: "ai.or"; os: "ai.os"; ot: "ai.ot"; ou: "ai.ou"; ov: "ai.ov"; ow: "ai.ow"; ox: "ai.ox"; oy: "ai.oy"; oz: "ai.oz"; pa: "ai.pa"; pb: "ai.pb"; pc: "ai.pc"; pd: "ai.pd"; pe: "ai.pe"; pf: "ai.pf"; pg: "ai.pg"; ph: "ai.ph"; pi: "ai.pi"; pj: "ai.pj"; pk: "ai.pk"; pl: "ai.pl"; pm: "ai.pm"; pn: "ai.pn"; po: "ai.po"; pp: "ai.pp"; pq: "ai.pq"; pr: "ai.pr"; ps: "ai.ps"; pt: "ai.pt"; pu: "ai.pu"; pv: "ai.pv"; pw: "ai.pw"; px: "ai.px"; py: "ai.py"; pz: "ai.pz"; qa: "ai.qa"; qb: "ai.qb"; qc: "ai.qc"; qd: "ai.qd"; qe: "ai.qe"; qf: "ai.qf"; qg: "ai.qg"; qh: "ai.qh"; qi: "ai.qi"; qj: "ai.qj"; qk: "ai.qk"; ql: "ai.ql"; qm: "ai.qm"; qn: "ai.qn"; qo: "ai.qo"; qp: "ai.qp"; qq: "ai.qq"; qr: "ai.qr"; qs: "ai.qs"; qt: "ai.qt"; qu: "ai.qu"; qv: "ai.qv"; qw: "ai.qw"; qx: "ai.qx"; qy: "ai.qy"; qz: "ai.qz"; ra: "ai.ra"; rb: "ai.rb"; rc: "ai.rc"; rd: "ai.rd"; re: "ai.re"; rf: "ai.rf"; rg: "ai.rg"; rh: "ai.rh"; ri: "ai.ri"; rj: "ai.rj"; rk: "ai.rk"; rl: "ai.rl"; rm: "ai.rm"; rn: "ai.rn"; ro: "ai.ro"; rp: "ai.rp"; rq: "ai.rq"; rr: "ai.rr"; rs: "ai.rs"; rt: "ai.rt"; ru: "ai.ru"; rv: "ai.rv"; rw: "ai.rw"; rx: "ai.rx"; ry: "ai.ry"; rz: "ai.rz"; sa: "ai.sa"; sb: "ai.sb"; sc: "ai.sc"; sd: "ai.sd"; se: "ai.se"; sf: "ai.sf"; sg: "ai.sg"; sh: "ai.sh"; si: "ai.si"; sj: "ai.sj"; sk: "ai.sk"; sl: "ai.sl"; sm: "ai.sm"; sn: "ai.sn"; so: "ai.so"; sp: "ai.sp"; sq: "ai.sq"; sr: "ai.sr"; ss: "ai.ss"; st: "ai.st"; su: "ai.su"; sv: "ai.sv"; sw: "ai.sw"; sx: "ai.sx"; sy: "ai.sy"; sz: "ai.sz"; ta: "ai.ta"; tb: "ai.tb"; tc: "ai.tc"; td: "ai.td"; te: "ai.te"; tf: "ai.tf"; tg: "ai.tg"; th: "ai.th"; ti: "ai.ti"; tj: "ai.tj"; tk: "ai.tk"; tl: "ai.tl"; tm: "ai.tm"; tn: "ai.tn"; to: "ai.to"; tp: "ai.tp"; tq: "ai.tq"; tr: "ai.tr"; ts: "ai.ts"; tt: "ai.tt"; tu: "ai.tu"; tv: "ai.tv"; tw: "ai.tw"; tx: "ai.tx"; ty: "ai.ty"; tz: "ai.tz"; ua: "ai.ua"; ub: "ai.ub"; uc: "ai.uc"; ud: "ai.ud"; ue: "ai.ue"; uf: "ai.uf"; ug: "ai.ug"; uh: "ai.uh"; ui: "ai.ui"; uj: "ai.uj"; uk: "ai.uk"; ul: "ai.ul"; um: "ai.um"; un: "ai.un"; uo: "ai.uo"; up: "ai.up"; uq: "ai.uq"; ur: "ai.ur"; us: "ai.us"; ut: "ai.ut"; uu: "ai.uu"; uv: "ai.uv"; uw: "ai.uw"; ux: "ai.ux"; uy: "ai.uy"; uz: "ai.uz"; va: "ai.va"; vb: "ai.vb"; vc: "ai.vc"; vd: "ai.vd"; ve: "ai.ve"; vf: "ai.vf"; vg: "ai.vg"; vh: "ai.vh"; vi: "ai.vi"; vj: "ai.vj"; vk: "ai.vk"; vl: "ai.vl"; vm: "ai.vm"; vn: "ai.vn"; vo: "ai.vo"; vp: "ai.vp"; vq: "ai.vq"; vr: "ai.vr"; vs: "ai.vs"; vt: "ai.vt"; vu: "ai.vu"; vv: "ai.vv"; vw: "ai.vw"; vx: "ai.vx"; vy: "ai.vy"; vz: "ai.vz"; wa: "ai.wa"; wb: "ai.wb"; wc: "ai.wc"; wd: "ai.wd"; we: "ai.we"; wf: "ai.wf"; wg: "ai.wg"; wh: "ai.wh"; wi: "ai.wi"; wj: "ai.wj"; wk: "ai.wk"; wl: "ai.wl"; wm: "ai.wm"; wn: "ai.wn"; wo: "ai.wo"; wp: "ai.wp"; wq: "ai.wq"; wr: "ai.wr"; ws: "ai.ws"; wt: "ai.wt"; wu: "ai.wu"; wv: "ai.wv"; ww: "ai.ww"; wx: "ai.wx"; wy: "ai.wy"; wz: "ai.wz"; xa: "ai.xa"; xb: "ai.xb"; xc: "ai.xc"; xd: "ai.xd"; xe: "ai.xe"; xf: "ai.xf"; xg: "ai.xg"; xh: "ai.xh"; xi: "ai.xi"; xj: "ai.xj"; xk: "ai.xk"; xl: "ai.xl"; xm: "ai.xm"; xn: "ai.xn"; xo: "ai.xo"; xp: "ai.xp"; xq: "ai.xq"; xr: "ai.xr"; xs: "ai.xs"; xt: "ai.xt"; xu: "ai.xu"; xv: "ai.xv"; xw: "ai.xw"; xx: "ai.xx"; xy: "ai.xy"; xz: "ai.xz"; ya: "ai.ya"; yb: "ai.yb"; yc: "ai.yc"; yd: "ai.yd"; ye: "ai.ye"; yf: "ai.yf"; yg: "ai.yg"; yh: "ai.yh"; yi: "ai.yi"; yj: "ai.yj"; yk: "ai.yk"; yl: "ai.yl"; ym: "ai.ym"; yn: "ai.yn"; yo: "ai.yo"; yp: "ai.yp"; yq: "ai.yq"; yr: "ai.yr"; ys: "ai.ys"; yt: "ai.yt"; yu: "ai.yu"; yv: "ai.yv"; yw: "ai.yw"; yx: "ai.yx"; yy: "ai.yy"; yz: "ai.yz"; za: "ai.za"; zb: "ai.zb"; zc: "ai.zc"; zd: "ai.zd"; ze: "ai.ze"; zf: "ai.zf"; zg: "ai.zg"; zh: "ai.zh"; zi: "ai.zi"; zj: "ai.zj"; zk: "ai.zk"; zl: "ai.zl"; zm: "ai.zm"; zn: "ai.zn"; zo: "ai.zo"; zp: "ai.zp"; zq: "ai.zq"; zr: "ai.zr"; zs: "ai.zs"; zt: "ai.zt"; zu: "ai.zu"; zv: "ai.zv"; zw: "ai.zw"; zx: "ai.zx"; zy: "ai.zy"; zz: "ai.zz"; }; aj: { aa: "aj.aa"; ab: "aj.ab"; ac: "aj.ac"; ad: "aj.ad"; ae: "aj.ae"; af: "aj.af"; ag: "aj.ag"; ah: "aj.ah"; ai: "aj.ai"; aj: "aj.aj"; ak: "aj.ak"; al: "aj.al"; am: "aj.am"; an: "aj.an"; ao: "aj.ao"; ap: "aj.ap"; aq: "aj.aq"; ar: "aj.ar"; as: "aj.as"; at: "aj.at"; au: "aj.au"; av: "aj.av"; aw: "aj.aw"; ax: "aj.ax"; ay: "aj.ay"; az: "aj.az"; ba: "aj.ba"; bb: "aj.bb"; bc: "aj.bc"; bd: "aj.bd"; be: "aj.be"; bf: "aj.bf"; bg: "aj.bg"; bh: "aj.bh"; bi: "aj.bi"; bj: "aj.bj"; bk: "aj.bk"; bl: "aj.bl"; bm: "aj.bm"; bn: "aj.bn"; bo: "aj.bo"; bp: "aj.bp"; bq: "aj.bq"; br: "aj.br"; bs: "aj.bs"; bt: "aj.bt"; bu: "aj.bu"; bv: "aj.bv"; bw: "aj.bw"; bx: "aj.bx"; by: "aj.by"; bz: "aj.bz"; ca: "aj.ca"; cb: "aj.cb"; cc: "aj.cc"; cd: "aj.cd"; ce: "aj.ce"; cf: "aj.cf"; cg: "aj.cg"; ch: "aj.ch"; ci: "aj.ci"; cj: "aj.cj"; ck: "aj.ck"; cl: "aj.cl"; cm: "aj.cm"; cn: "aj.cn"; co: "aj.co"; cp: "aj.cp"; cq: "aj.cq"; cr: "aj.cr"; cs: "aj.cs"; ct: "aj.ct"; cu: "aj.cu"; cv: "aj.cv"; cw: "aj.cw"; cx: "aj.cx"; cy: "aj.cy"; cz: "aj.cz"; da: "aj.da"; db: "aj.db"; dc: "aj.dc"; dd: "aj.dd"; de: "aj.de"; df: "aj.df"; dg: "aj.dg"; dh: "aj.dh"; di: "aj.di"; dj: "aj.dj"; dk: "aj.dk"; dl: "aj.dl"; dm: "aj.dm"; dn: "aj.dn"; do: "aj.do"; dp: "aj.dp"; dq: "aj.dq"; dr: "aj.dr"; ds: "aj.ds"; dt: "aj.dt"; du: "aj.du"; dv: "aj.dv"; dw: "aj.dw"; dx: "aj.dx"; dy: "aj.dy"; dz: "aj.dz"; ea: "aj.ea"; eb: "aj.eb"; ec: "aj.ec"; ed: "aj.ed"; ee: "aj.ee"; ef: "aj.ef"; eg: "aj.eg"; eh: "aj.eh"; ei: "aj.ei"; ej: "aj.ej"; ek: "aj.ek"; el: "aj.el"; em: "aj.em"; en: "aj.en"; eo: "aj.eo"; ep: "aj.ep"; eq: "aj.eq"; er: "aj.er"; es: "aj.es"; et: "aj.et"; eu: "aj.eu"; ev: "aj.ev"; ew: "aj.ew"; ex: "aj.ex"; ey: "aj.ey"; ez: "aj.ez"; fa: "aj.fa"; fb: "aj.fb"; fc: "aj.fc"; fd: "aj.fd"; fe: "aj.fe"; ff: "aj.ff"; fg: "aj.fg"; fh: "aj.fh"; fi: "aj.fi"; fj: "aj.fj"; fk: "aj.fk"; fl: "aj.fl"; fm: "aj.fm"; fn: "aj.fn"; fo: "aj.fo"; fp: "aj.fp"; fq: "aj.fq"; fr: "aj.fr"; fs: "aj.fs"; ft: "aj.ft"; fu: "aj.fu"; fv: "aj.fv"; fw: "aj.fw"; fx: "aj.fx"; fy: "aj.fy"; fz: "aj.fz"; ga: "aj.ga"; gb: "aj.gb"; gc: "aj.gc"; gd: "aj.gd"; ge: "aj.ge"; gf: "aj.gf"; gg: "aj.gg"; gh: "aj.gh"; gi: "aj.gi"; gj: "aj.gj"; gk: "aj.gk"; gl: "aj.gl"; gm: "aj.gm"; gn: "aj.gn"; go: "aj.go"; gp: "aj.gp"; gq: "aj.gq"; gr: "aj.gr"; gs: "aj.gs"; gt: "aj.gt"; gu: "aj.gu"; gv: "aj.gv"; gw: "aj.gw"; gx: "aj.gx"; gy: "aj.gy"; gz: "aj.gz"; ha: "aj.ha"; hb: "aj.hb"; hc: "aj.hc"; hd: "aj.hd"; he: "aj.he"; hf: "aj.hf"; hg: "aj.hg"; hh: "aj.hh"; hi: "aj.hi"; hj: "aj.hj"; hk: "aj.hk"; hl: "aj.hl"; hm: "aj.hm"; hn: "aj.hn"; ho: "aj.ho"; hp: "aj.hp"; hq: "aj.hq"; hr: "aj.hr"; hs: "aj.hs"; ht: "aj.ht"; hu: "aj.hu"; hv: "aj.hv"; hw: "aj.hw"; hx: "aj.hx"; hy: "aj.hy"; hz: "aj.hz"; ia: "aj.ia"; ib: "aj.ib"; ic: "aj.ic"; id: "aj.id"; ie: "aj.ie"; if: "aj.if"; ig: "aj.ig"; ih: "aj.ih"; ii: "aj.ii"; ij: "aj.ij"; ik: "aj.ik"; il: "aj.il"; im: "aj.im"; in: "aj.in"; io: "aj.io"; ip: "aj.ip"; iq: "aj.iq"; ir: "aj.ir"; is: "aj.is"; it: "aj.it"; iu: "aj.iu"; iv: "aj.iv"; iw: "aj.iw"; ix: "aj.ix"; iy: "aj.iy"; iz: "aj.iz"; ja: "aj.ja"; jb: "aj.jb"; jc: "aj.jc"; jd: "aj.jd"; je: "aj.je"; jf: "aj.jf"; jg: "aj.jg"; jh: "aj.jh"; ji: "aj.ji"; jj: "aj.jj"; jk: "aj.jk"; jl: "aj.jl"; jm: "aj.jm"; jn: "aj.jn"; jo: "aj.jo"; jp: "aj.jp"; jq: "aj.jq"; jr: "aj.jr"; js: "aj.js"; jt: "aj.jt"; ju: "aj.ju"; jv: "aj.jv"; jw: "aj.jw"; jx: "aj.jx"; jy: "aj.jy"; jz: "aj.jz"; ka: "aj.ka"; kb: "aj.kb"; kc: "aj.kc"; kd: "aj.kd"; ke: "aj.ke"; kf: "aj.kf"; kg: "aj.kg"; kh: "aj.kh"; ki: "aj.ki"; kj: "aj.kj"; kk: "aj.kk"; kl: "aj.kl"; km: "aj.km"; kn: "aj.kn"; ko: "aj.ko"; kp: "aj.kp"; kq: "aj.kq"; kr: "aj.kr"; ks: "aj.ks"; kt: "aj.kt"; ku: "aj.ku"; kv: "aj.kv"; kw: "aj.kw"; kx: "aj.kx"; ky: "aj.ky"; kz: "aj.kz"; la: "aj.la"; lb: "aj.lb"; lc: "aj.lc"; ld: "aj.ld"; le: "aj.le"; lf: "aj.lf"; lg: "aj.lg"; lh: "aj.lh"; li: "aj.li"; lj: "aj.lj"; lk: "aj.lk"; ll: "aj.ll"; lm: "aj.lm"; ln: "aj.ln"; lo: "aj.lo"; lp: "aj.lp"; lq: "aj.lq"; lr: "aj.lr"; ls: "aj.ls"; lt: "aj.lt"; lu: "aj.lu"; lv: "aj.lv"; lw: "aj.lw"; lx: "aj.lx"; ly: "aj.ly"; lz: "aj.lz"; ma: "aj.ma"; mb: "aj.mb"; mc: "aj.mc"; md: "aj.md"; me: "aj.me"; mf: "aj.mf"; mg: "aj.mg"; mh: "aj.mh"; mi: "aj.mi"; mj: "aj.mj"; mk: "aj.mk"; ml: "aj.ml"; mm: "aj.mm"; mn: "aj.mn"; mo: "aj.mo"; mp: "aj.mp"; mq: "aj.mq"; mr: "aj.mr"; ms: "aj.ms"; mt: "aj.mt"; mu: "aj.mu"; mv: "aj.mv"; mw: "aj.mw"; mx: "aj.mx"; my: "aj.my"; mz: "aj.mz"; na: "aj.na"; nb: "aj.nb"; nc: "aj.nc"; nd: "aj.nd"; ne: "aj.ne"; nf: "aj.nf"; ng: "aj.ng"; nh: "aj.nh"; ni: "aj.ni"; nj: "aj.nj"; nk: "aj.nk"; nl: "aj.nl"; nm: "aj.nm"; nn: "aj.nn"; no: "aj.no"; np: "aj.np"; nq: "aj.nq"; nr: "aj.nr"; ns: "aj.ns"; nt: "aj.nt"; nu: "aj.nu"; nv: "aj.nv"; nw: "aj.nw"; nx: "aj.nx"; ny: "aj.ny"; nz: "aj.nz"; oa: "aj.oa"; ob: "aj.ob"; oc: "aj.oc"; od: "aj.od"; oe: "aj.oe"; of: "aj.of"; og: "aj.og"; oh: "aj.oh"; oi: "aj.oi"; oj: "aj.oj"; ok: "aj.ok"; ol: "aj.ol"; om: "aj.om"; on: "aj.on"; oo: "aj.oo"; op: "aj.op"; oq: "aj.oq"; or: "aj.or"; os: "aj.os"; ot: "aj.ot"; ou: "aj.ou"; ov: "aj.ov"; ow: "aj.ow"; ox: "aj.ox"; oy: "aj.oy"; oz: "aj.oz"; pa: "aj.pa"; pb: "aj.pb"; pc: "aj.pc"; pd: "aj.pd"; pe: "aj.pe"; pf: "aj.pf"; pg: "aj.pg"; ph: "aj.ph"; pi: "aj.pi"; pj: "aj.pj"; pk: "aj.pk"; pl: "aj.pl"; pm: "aj.pm"; pn: "aj.pn"; po: "aj.po"; pp: "aj.pp"; pq: "aj.pq"; pr: "aj.pr"; ps: "aj.ps"; pt: "aj.pt"; pu: "aj.pu"; pv: "aj.pv"; pw: "aj.pw"; px: "aj.px"; py: "aj.py"; pz: "aj.pz"; qa: "aj.qa"; qb: "aj.qb"; qc: "aj.qc"; qd: "aj.qd"; qe: "aj.qe"; qf: "aj.qf"; qg: "aj.qg"; qh: "aj.qh"; qi: "aj.qi"; qj: "aj.qj"; qk: "aj.qk"; ql: "aj.ql"; qm: "aj.qm"; qn: "aj.qn"; qo: "aj.qo"; qp: "aj.qp"; qq: "aj.qq"; qr: "aj.qr"; qs: "aj.qs"; qt: "aj.qt"; qu: "aj.qu"; qv: "aj.qv"; qw: "aj.qw"; qx: "aj.qx"; qy: "aj.qy"; qz: "aj.qz"; ra: "aj.ra"; rb: "aj.rb"; rc: "aj.rc"; rd: "aj.rd"; re: "aj.re"; rf: "aj.rf"; rg: "aj.rg"; rh: "aj.rh"; ri: "aj.ri"; rj: "aj.rj"; rk: "aj.rk"; rl: "aj.rl"; rm: "aj.rm"; rn: "aj.rn"; ro: "aj.ro"; rp: "aj.rp"; rq: "aj.rq"; rr: "aj.rr"; rs: "aj.rs"; rt: "aj.rt"; ru: "aj.ru"; rv: "aj.rv"; rw: "aj.rw"; rx: "aj.rx"; ry: "aj.ry"; rz: "aj.rz"; sa: "aj.sa"; sb: "aj.sb"; sc: "aj.sc"; sd: "aj.sd"; se: "aj.se"; sf: "aj.sf"; sg: "aj.sg"; sh: "aj.sh"; si: "aj.si"; sj: "aj.sj"; sk: "aj.sk"; sl: "aj.sl"; sm: "aj.sm"; sn: "aj.sn"; so: "aj.so"; sp: "aj.sp"; sq: "aj.sq"; sr: "aj.sr"; ss: "aj.ss"; st: "aj.st"; su: "aj.su"; sv: "aj.sv"; sw: "aj.sw"; sx: "aj.sx"; sy: "aj.sy"; sz: "aj.sz"; ta: "aj.ta"; tb: "aj.tb"; tc: "aj.tc"; td: "aj.td"; te: "aj.te"; tf: "aj.tf"; tg: "aj.tg"; th: "aj.th"; ti: "aj.ti"; tj: "aj.tj"; tk: "aj.tk"; tl: "aj.tl"; tm: "aj.tm"; tn: "aj.tn"; to: "aj.to"; tp: "aj.tp"; tq: "aj.tq"; tr: "aj.tr"; ts: "aj.ts"; tt: "aj.tt"; tu: "aj.tu"; tv: "aj.tv"; tw: "aj.tw"; tx: "aj.tx"; ty: "aj.ty"; tz: "aj.tz"; ua: "aj.ua"; ub: "aj.ub"; uc: "aj.uc"; ud: "aj.ud"; ue: "aj.ue"; uf: "aj.uf"; ug: "aj.ug"; uh: "aj.uh"; ui: "aj.ui"; uj: "aj.uj"; uk: "aj.uk"; ul: "aj.ul"; um: "aj.um"; un: "aj.un"; uo: "aj.uo"; up: "aj.up"; uq: "aj.uq"; ur: "aj.ur"; us: "aj.us"; ut: "aj.ut"; uu: "aj.uu"; uv: "aj.uv"; uw: "aj.uw"; ux: "aj.ux"; uy: "aj.uy"; uz: "aj.uz"; va: "aj.va"; vb: "aj.vb"; vc: "aj.vc"; vd: "aj.vd"; ve: "aj.ve"; vf: "aj.vf"; vg: "aj.vg"; vh: "aj.vh"; vi: "aj.vi"; vj: "aj.vj"; vk: "aj.vk"; vl: "aj.vl"; vm: "aj.vm"; vn: "aj.vn"; vo: "aj.vo"; vp: "aj.vp"; vq: "aj.vq"; vr: "aj.vr"; vs: "aj.vs"; vt: "aj.vt"; vu: "aj.vu"; vv: "aj.vv"; vw: "aj.vw"; vx: "aj.vx"; vy: "aj.vy"; vz: "aj.vz"; wa: "aj.wa"; wb: "aj.wb"; wc: "aj.wc"; wd: "aj.wd"; we: "aj.we"; wf: "aj.wf"; wg: "aj.wg"; wh: "aj.wh"; wi: "aj.wi"; wj: "aj.wj"; wk: "aj.wk"; wl: "aj.wl"; wm: "aj.wm"; wn: "aj.wn"; wo: "aj.wo"; wp: "aj.wp"; wq: "aj.wq"; wr: "aj.wr"; ws: "aj.ws"; wt: "aj.wt"; wu: "aj.wu"; wv: "aj.wv"; ww: "aj.ww"; wx: "aj.wx"; wy: "aj.wy"; wz: "aj.wz"; xa: "aj.xa"; xb: "aj.xb"; xc: "aj.xc"; xd: "aj.xd"; xe: "aj.xe"; xf: "aj.xf"; xg: "aj.xg"; xh: "aj.xh"; xi: "aj.xi"; xj: "aj.xj"; xk: "aj.xk"; xl: "aj.xl"; xm: "aj.xm"; xn: "aj.xn"; xo: "aj.xo"; xp: "aj.xp"; xq: "aj.xq"; xr: "aj.xr"; xs: "aj.xs"; xt: "aj.xt"; xu: "aj.xu"; xv: "aj.xv"; xw: "aj.xw"; xx: "aj.xx"; xy: "aj.xy"; xz: "aj.xz"; ya: "aj.ya"; yb: "aj.yb"; yc: "aj.yc"; yd: "aj.yd"; ye: "aj.ye"; yf: "aj.yf"; yg: "aj.yg"; yh: "aj.yh"; yi: "aj.yi"; yj: "aj.yj"; yk: "aj.yk"; yl: "aj.yl"; ym: "aj.ym"; yn: "aj.yn"; yo: "aj.yo"; yp: "aj.yp"; yq: "aj.yq"; yr: "aj.yr"; ys: "aj.ys"; yt: "aj.yt"; yu: "aj.yu"; yv: "aj.yv"; yw: "aj.yw"; yx: "aj.yx"; yy: "aj.yy"; yz: "aj.yz"; za: "aj.za"; zb: "aj.zb"; zc: "aj.zc"; zd: "aj.zd"; ze: "aj.ze"; zf: "aj.zf"; zg: "aj.zg"; zh: "aj.zh"; zi: "aj.zi"; zj: "aj.zj"; zk: "aj.zk"; zl: "aj.zl"; zm: "aj.zm"; zn: "aj.zn"; zo: "aj.zo"; zp: "aj.zp"; zq: "aj.zq"; zr: "aj.zr"; zs: "aj.zs"; zt: "aj.zt"; zu: "aj.zu"; zv: "aj.zv"; zw: "aj.zw"; zx: "aj.zx"; zy: "aj.zy"; zz: "aj.zz"; }; ak: { aa: "ak.aa"; ab: "ak.ab"; ac: "ak.ac"; ad: "ak.ad"; ae: "ak.ae"; af: "ak.af"; ag: "ak.ag"; ah: "ak.ah"; ai: "ak.ai"; aj: "ak.aj"; ak: "ak.ak"; al: "ak.al"; am: "ak.am"; an: "ak.an"; ao: "ak.ao"; ap: "ak.ap"; aq: "ak.aq"; ar: "ak.ar"; as: "ak.as"; at: "ak.at"; au: "ak.au"; av: "ak.av"; aw: "ak.aw"; ax: "ak.ax"; ay: "ak.ay"; az: "ak.az"; ba: "ak.ba"; bb: "ak.bb"; bc: "ak.bc"; bd: "ak.bd"; be: "ak.be"; bf: "ak.bf"; bg: "ak.bg"; bh: "ak.bh"; bi: "ak.bi"; bj: "ak.bj"; bk: "ak.bk"; bl: "ak.bl"; bm: "ak.bm"; bn: "ak.bn"; bo: "ak.bo"; bp: "ak.bp"; bq: "ak.bq"; br: "ak.br"; bs: "ak.bs"; bt: "ak.bt"; bu: "ak.bu"; bv: "ak.bv"; bw: "ak.bw"; bx: "ak.bx"; by: "ak.by"; bz: "ak.bz"; ca: "ak.ca"; cb: "ak.cb"; cc: "ak.cc"; cd: "ak.cd"; ce: "ak.ce"; cf: "ak.cf"; cg: "ak.cg"; ch: "ak.ch"; ci: "ak.ci"; cj: "ak.cj"; ck: "ak.ck"; cl: "ak.cl"; cm: "ak.cm"; cn: "ak.cn"; co: "ak.co"; cp: "ak.cp"; cq: "ak.cq"; cr: "ak.cr"; cs: "ak.cs"; ct: "ak.ct"; cu: "ak.cu"; cv: "ak.cv"; cw: "ak.cw"; cx: "ak.cx"; cy: "ak.cy"; cz: "ak.cz"; da: "ak.da"; db: "ak.db"; dc: "ak.dc"; dd: "ak.dd"; de: "ak.de"; df: "ak.df"; dg: "ak.dg"; dh: "ak.dh"; di: "ak.di"; dj: "ak.dj"; dk: "ak.dk"; dl: "ak.dl"; dm: "ak.dm"; dn: "ak.dn"; do: "ak.do"; dp: "ak.dp"; dq: "ak.dq"; dr: "ak.dr"; ds: "ak.ds"; dt: "ak.dt"; du: "ak.du"; dv: "ak.dv"; dw: "ak.dw"; dx: "ak.dx"; dy: "ak.dy"; dz: "ak.dz"; ea: "ak.ea"; eb: "ak.eb"; ec: "ak.ec"; ed: "ak.ed"; ee: "ak.ee"; ef: "ak.ef"; eg: "ak.eg"; eh: "ak.eh"; ei: "ak.ei"; ej: "ak.ej"; ek: "ak.ek"; el: "ak.el"; em: "ak.em"; en: "ak.en"; eo: "ak.eo"; ep: "ak.ep"; eq: "ak.eq"; er: "ak.er"; es: "ak.es"; et: "ak.et"; eu: "ak.eu"; ev: "ak.ev"; ew: "ak.ew"; ex: "ak.ex"; ey: "ak.ey"; ez: "ak.ez"; fa: "ak.fa"; fb: "ak.fb"; fc: "ak.fc"; fd: "ak.fd"; fe: "ak.fe"; ff: "ak.ff"; fg: "ak.fg"; fh: "ak.fh"; fi: "ak.fi"; fj: "ak.fj"; fk: "ak.fk"; fl: "ak.fl"; fm: "ak.fm"; fn: "ak.fn"; fo: "ak.fo"; fp: "ak.fp"; fq: "ak.fq"; fr: "ak.fr"; fs: "ak.fs"; ft: "ak.ft"; fu: "ak.fu"; fv: "ak.fv"; fw: "ak.fw"; fx: "ak.fx"; fy: "ak.fy"; fz: "ak.fz"; ga: "ak.ga"; gb: "ak.gb"; gc: "ak.gc"; gd: "ak.gd"; ge: "ak.ge"; gf: "ak.gf"; gg: "ak.gg"; gh: "ak.gh"; gi: "ak.gi"; gj: "ak.gj"; gk: "ak.gk"; gl: "ak.gl"; gm: "ak.gm"; gn: "ak.gn"; go: "ak.go"; gp: "ak.gp"; gq: "ak.gq"; gr: "ak.gr"; gs: "ak.gs"; gt: "ak.gt"; gu: "ak.gu"; gv: "ak.gv"; gw: "ak.gw"; gx: "ak.gx"; gy: "ak.gy"; gz: "ak.gz"; ha: "ak.ha"; hb: "ak.hb"; hc: "ak.hc"; hd: "ak.hd"; he: "ak.he"; hf: "ak.hf"; hg: "ak.hg"; hh: "ak.hh"; hi: "ak.hi"; hj: "ak.hj"; hk: "ak.hk"; hl: "ak.hl"; hm: "ak.hm"; hn: "ak.hn"; ho: "ak.ho"; hp: "ak.hp"; hq: "ak.hq"; hr: "ak.hr"; hs: "ak.hs"; ht: "ak.ht"; hu: "ak.hu"; hv: "ak.hv"; hw: "ak.hw"; hx: "ak.hx"; hy: "ak.hy"; hz: "ak.hz"; ia: "ak.ia"; ib: "ak.ib"; ic: "ak.ic"; id: "ak.id"; ie: "ak.ie"; if: "ak.if"; ig: "ak.ig"; ih: "ak.ih"; ii: "ak.ii"; ij: "ak.ij"; ik: "ak.ik"; il: "ak.il"; im: "ak.im"; in: "ak.in"; io: "ak.io"; ip: "ak.ip"; iq: "ak.iq"; ir: "ak.ir"; is: "ak.is"; it: "ak.it"; iu: "ak.iu"; iv: "ak.iv"; iw: "ak.iw"; ix: "ak.ix"; iy: "ak.iy"; iz: "ak.iz"; ja: "ak.ja"; jb: "ak.jb"; jc: "ak.jc"; jd: "ak.jd"; je: "ak.je"; jf: "ak.jf"; jg: "ak.jg"; jh: "ak.jh"; ji: "ak.ji"; jj: "ak.jj"; jk: "ak.jk"; jl: "ak.jl"; jm: "ak.jm"; jn: "ak.jn"; jo: "ak.jo"; jp: "ak.jp"; jq: "ak.jq"; jr: "ak.jr"; js: "ak.js"; jt: "ak.jt"; ju: "ak.ju"; jv: "ak.jv"; jw: "ak.jw"; jx: "ak.jx"; jy: "ak.jy"; jz: "ak.jz"; ka: "ak.ka"; kb: "ak.kb"; kc: "ak.kc"; kd: "ak.kd"; ke: "ak.ke"; kf: "ak.kf"; kg: "ak.kg"; kh: "ak.kh"; ki: "ak.ki"; kj: "ak.kj"; kk: "ak.kk"; kl: "ak.kl"; km: "ak.km"; kn: "ak.kn"; ko: "ak.ko"; kp: "ak.kp"; kq: "ak.kq"; kr: "ak.kr"; ks: "ak.ks"; kt: "ak.kt"; ku: "ak.ku"; kv: "ak.kv"; kw: "ak.kw"; kx: "ak.kx"; ky: "ak.ky"; kz: "ak.kz"; la: "ak.la"; lb: "ak.lb"; lc: "ak.lc"; ld: "ak.ld"; le: "ak.le"; lf: "ak.lf"; lg: "ak.lg"; lh: "ak.lh"; li: "ak.li"; lj: "ak.lj"; lk: "ak.lk"; ll: "ak.ll"; lm: "ak.lm"; ln: "ak.ln"; lo: "ak.lo"; lp: "ak.lp"; lq: "ak.lq"; lr: "ak.lr"; ls: "ak.ls"; lt: "ak.lt"; lu: "ak.lu"; lv: "ak.lv"; lw: "ak.lw"; lx: "ak.lx"; ly: "ak.ly"; lz: "ak.lz"; ma: "ak.ma"; mb: "ak.mb"; mc: "ak.mc"; md: "ak.md"; me: "ak.me"; mf: "ak.mf"; mg: "ak.mg"; mh: "ak.mh"; mi: "ak.mi"; mj: "ak.mj"; mk: "ak.mk"; ml: "ak.ml"; mm: "ak.mm"; mn: "ak.mn"; mo: "ak.mo"; mp: "ak.mp"; mq: "ak.mq"; mr: "ak.mr"; ms: "ak.ms"; mt: "ak.mt"; mu: "ak.mu"; mv: "ak.mv"; mw: "ak.mw"; mx: "ak.mx"; my: "ak.my"; mz: "ak.mz"; na: "ak.na"; nb: "ak.nb"; nc: "ak.nc"; nd: "ak.nd"; ne: "ak.ne"; nf: "ak.nf"; ng: "ak.ng"; nh: "ak.nh"; ni: "ak.ni"; nj: "ak.nj"; nk: "ak.nk"; nl: "ak.nl"; nm: "ak.nm"; nn: "ak.nn"; no: "ak.no"; np: "ak.np"; nq: "ak.nq"; nr: "ak.nr"; ns: "ak.ns"; nt: "ak.nt"; nu: "ak.nu"; nv: "ak.nv"; nw: "ak.nw"; nx: "ak.nx"; ny: "ak.ny"; nz: "ak.nz"; oa: "ak.oa"; ob: "ak.ob"; oc: "ak.oc"; od: "ak.od"; oe: "ak.oe"; of: "ak.of"; og: "ak.og"; oh: "ak.oh"; oi: "ak.oi"; oj: "ak.oj"; ok: "ak.ok"; ol: "ak.ol"; om: "ak.om"; on: "ak.on"; oo: "ak.oo"; op: "ak.op"; oq: "ak.oq"; or: "ak.or"; os: "ak.os"; ot: "ak.ot"; ou: "ak.ou"; ov: "ak.ov"; ow: "ak.ow"; ox: "ak.ox"; oy: "ak.oy"; oz: "ak.oz"; pa: "ak.pa"; pb: "ak.pb"; pc: "ak.pc"; pd: "ak.pd"; pe: "ak.pe"; pf: "ak.pf"; pg: "ak.pg"; ph: "ak.ph"; pi: "ak.pi"; pj: "ak.pj"; pk: "ak.pk"; pl: "ak.pl"; pm: "ak.pm"; pn: "ak.pn"; po: "ak.po"; pp: "ak.pp"; pq: "ak.pq"; pr: "ak.pr"; ps: "ak.ps"; pt: "ak.pt"; pu: "ak.pu"; pv: "ak.pv"; pw: "ak.pw"; px: "ak.px"; py: "ak.py"; pz: "ak.pz"; qa: "ak.qa"; qb: "ak.qb"; qc: "ak.qc"; qd: "ak.qd"; qe: "ak.qe"; qf: "ak.qf"; qg: "ak.qg"; qh: "ak.qh"; qi: "ak.qi"; qj: "ak.qj"; qk: "ak.qk"; ql: "ak.ql"; qm: "ak.qm"; qn: "ak.qn"; qo: "ak.qo"; qp: "ak.qp"; qq: "ak.qq"; qr: "ak.qr"; qs: "ak.qs"; qt: "ak.qt"; qu: "ak.qu"; qv: "ak.qv"; qw: "ak.qw"; qx: "ak.qx"; qy: "ak.qy"; qz: "ak.qz"; ra: "ak.ra"; rb: "ak.rb"; rc: "ak.rc"; rd: "ak.rd"; re: "ak.re"; rf: "ak.rf"; rg: "ak.rg"; rh: "ak.rh"; ri: "ak.ri"; rj: "ak.rj"; rk: "ak.rk"; rl: "ak.rl"; rm: "ak.rm"; rn: "ak.rn"; ro: "ak.ro"; rp: "ak.rp"; rq: "ak.rq"; rr: "ak.rr"; rs: "ak.rs"; rt: "ak.rt"; ru: "ak.ru"; rv: "ak.rv"; rw: "ak.rw"; rx: "ak.rx"; ry: "ak.ry"; rz: "ak.rz"; sa: "ak.sa"; sb: "ak.sb"; sc: "ak.sc"; sd: "ak.sd"; se: "ak.se"; sf: "ak.sf"; sg: "ak.sg"; sh: "ak.sh"; si: "ak.si"; sj: "ak.sj"; sk: "ak.sk"; sl: "ak.sl"; sm: "ak.sm"; sn: "ak.sn"; so: "ak.so"; sp: "ak.sp"; sq: "ak.sq"; sr: "ak.sr"; ss: "ak.ss"; st: "ak.st"; su: "ak.su"; sv: "ak.sv"; sw: "ak.sw"; sx: "ak.sx"; sy: "ak.sy"; sz: "ak.sz"; ta: "ak.ta"; tb: "ak.tb"; tc: "ak.tc"; td: "ak.td"; te: "ak.te"; tf: "ak.tf"; tg: "ak.tg"; th: "ak.th"; ti: "ak.ti"; tj: "ak.tj"; tk: "ak.tk"; tl: "ak.tl"; tm: "ak.tm"; tn: "ak.tn"; to: "ak.to"; tp: "ak.tp"; tq: "ak.tq"; tr: "ak.tr"; ts: "ak.ts"; tt: "ak.tt"; tu: "ak.tu"; tv: "ak.tv"; tw: "ak.tw"; tx: "ak.tx"; ty: "ak.ty"; tz: "ak.tz"; ua: "ak.ua"; ub: "ak.ub"; uc: "ak.uc"; ud: "ak.ud"; ue: "ak.ue"; uf: "ak.uf"; ug: "ak.ug"; uh: "ak.uh"; ui: "ak.ui"; uj: "ak.uj"; uk: "ak.uk"; ul: "ak.ul"; um: "ak.um"; un: "ak.un"; uo: "ak.uo"; up: "ak.up"; uq: "ak.uq"; ur: "ak.ur"; us: "ak.us"; ut: "ak.ut"; uu: "ak.uu"; uv: "ak.uv"; uw: "ak.uw"; ux: "ak.ux"; uy: "ak.uy"; uz: "ak.uz"; va: "ak.va"; vb: "ak.vb"; vc: "ak.vc"; vd: "ak.vd"; ve: "ak.ve"; vf: "ak.vf"; vg: "ak.vg"; vh: "ak.vh"; vi: "ak.vi"; vj: "ak.vj"; vk: "ak.vk"; vl: "ak.vl"; vm: "ak.vm"; vn: "ak.vn"; vo: "ak.vo"; vp: "ak.vp"; vq: "ak.vq"; vr: "ak.vr"; vs: "ak.vs"; vt: "ak.vt"; vu: "ak.vu"; vv: "ak.vv"; vw: "ak.vw"; vx: "ak.vx"; vy: "ak.vy"; vz: "ak.vz"; wa: "ak.wa"; wb: "ak.wb"; wc: "ak.wc"; wd: "ak.wd"; we: "ak.we"; wf: "ak.wf"; wg: "ak.wg"; wh: "ak.wh"; wi: "ak.wi"; wj: "ak.wj"; wk: "ak.wk"; wl: "ak.wl"; wm: "ak.wm"; wn: "ak.wn"; wo: "ak.wo"; wp: "ak.wp"; wq: "ak.wq"; wr: "ak.wr"; ws: "ak.ws"; wt: "ak.wt"; wu: "ak.wu"; wv: "ak.wv"; ww: "ak.ww"; wx: "ak.wx"; wy: "ak.wy"; wz: "ak.wz"; xa: "ak.xa"; xb: "ak.xb"; xc: "ak.xc"; xd: "ak.xd"; xe: "ak.xe"; xf: "ak.xf"; xg: "ak.xg"; xh: "ak.xh"; xi: "ak.xi"; xj: "ak.xj"; xk: "ak.xk"; xl: "ak.xl"; xm: "ak.xm"; xn: "ak.xn"; xo: "ak.xo"; xp: "ak.xp"; xq: "ak.xq"; xr: "ak.xr"; xs: "ak.xs"; xt: "ak.xt"; xu: "ak.xu"; xv: "ak.xv"; xw: "ak.xw"; xx: "ak.xx"; xy: "ak.xy"; xz: "ak.xz"; ya: "ak.ya"; yb: "ak.yb"; yc: "ak.yc"; yd: "ak.yd"; ye: "ak.ye"; yf: "ak.yf"; yg: "ak.yg"; yh: "ak.yh"; yi: "ak.yi"; yj: "ak.yj"; yk: "ak.yk"; yl: "ak.yl"; ym: "ak.ym"; yn: "ak.yn"; yo: "ak.yo"; yp: "ak.yp"; yq: "ak.yq"; yr: "ak.yr"; ys: "ak.ys"; yt: "ak.yt"; yu: "ak.yu"; yv: "ak.yv"; yw: "ak.yw"; yx: "ak.yx"; yy: "ak.yy"; yz: "ak.yz"; za: "ak.za"; zb: "ak.zb"; zc: "ak.zc"; zd: "ak.zd"; ze: "ak.ze"; zf: "ak.zf"; zg: "ak.zg"; zh: "ak.zh"; zi: "ak.zi"; zj: "ak.zj"; zk: "ak.zk"; zl: "ak.zl"; zm: "ak.zm"; zn: "ak.zn"; zo: "ak.zo"; zp: "ak.zp"; zq: "ak.zq"; zr: "ak.zr"; zs: "ak.zs"; zt: "ak.zt"; zu: "ak.zu"; zv: "ak.zv"; zw: "ak.zw"; zx: "ak.zx"; zy: "ak.zy"; zz: "ak.zz"; }; al: { aa: "al.aa"; ab: "al.ab"; ac: "al.ac"; ad: "al.ad"; ae: "al.ae"; af: "al.af"; ag: "al.ag"; ah: "al.ah"; ai: "al.ai"; aj: "al.aj"; ak: "al.ak"; al: "al.al"; am: "al.am"; an: "al.an"; ao: "al.ao"; ap: "al.ap"; aq: "al.aq"; ar: "al.ar"; as: "al.as"; at: "al.at"; au: "al.au"; av: "al.av"; aw: "al.aw"; ax: "al.ax"; ay: "al.ay"; az: "al.az"; ba: "al.ba"; bb: "al.bb"; bc: "al.bc"; bd: "al.bd"; be: "al.be"; bf: "al.bf"; bg: "al.bg"; bh: "al.bh"; bi: "al.bi"; bj: "al.bj"; bk: "al.bk"; bl: "al.bl"; bm: "al.bm"; bn: "al.bn"; bo: "al.bo"; bp: "al.bp"; bq: "al.bq"; br: "al.br"; bs: "al.bs"; bt: "al.bt"; bu: "al.bu"; bv: "al.bv"; bw: "al.bw"; bx: "al.bx"; by: "al.by"; bz: "al.bz"; ca: "al.ca"; cb: "al.cb"; cc: "al.cc"; cd: "al.cd"; ce: "al.ce"; cf: "al.cf"; cg: "al.cg"; ch: "al.ch"; ci: "al.ci"; cj: "al.cj"; ck: "al.ck"; cl: "al.cl"; cm: "al.cm"; cn: "al.cn"; co: "al.co"; cp: "al.cp"; cq: "al.cq"; cr: "al.cr"; cs: "al.cs"; ct: "al.ct"; cu: "al.cu"; cv: "al.cv"; cw: "al.cw"; cx: "al.cx"; cy: "al.cy"; cz: "al.cz"; da: "al.da"; db: "al.db"; dc: "al.dc"; dd: "al.dd"; de: "al.de"; df: "al.df"; dg: "al.dg"; dh: "al.dh"; di: "al.di"; dj: "al.dj"; dk: "al.dk"; dl: "al.dl"; dm: "al.dm"; dn: "al.dn"; do: "al.do"; dp: "al.dp"; dq: "al.dq"; dr: "al.dr"; ds: "al.ds"; dt: "al.dt"; du: "al.du"; dv: "al.dv"; dw: "al.dw"; dx: "al.dx"; dy: "al.dy"; dz: "al.dz"; ea: "al.ea"; eb: "al.eb"; ec: "al.ec"; ed: "al.ed"; ee: "al.ee"; ef: "al.ef"; eg: "al.eg"; eh: "al.eh"; ei: "al.ei"; ej: "al.ej"; ek: "al.ek"; el: "al.el"; em: "al.em"; en: "al.en"; eo: "al.eo"; ep: "al.ep"; eq: "al.eq"; er: "al.er"; es: "al.es"; et: "al.et"; eu: "al.eu"; ev: "al.ev"; ew: "al.ew"; ex: "al.ex"; ey: "al.ey"; ez: "al.ez"; fa: "al.fa"; fb: "al.fb"; fc: "al.fc"; fd: "al.fd"; fe: "al.fe"; ff: "al.ff"; fg: "al.fg"; fh: "al.fh"; fi: "al.fi"; fj: "al.fj"; fk: "al.fk"; fl: "al.fl"; fm: "al.fm"; fn: "al.fn"; fo: "al.fo"; fp: "al.fp"; fq: "al.fq"; fr: "al.fr"; fs: "al.fs"; ft: "al.ft"; fu: "al.fu"; fv: "al.fv"; fw: "al.fw"; fx: "al.fx"; fy: "al.fy"; fz: "al.fz"; ga: "al.ga"; gb: "al.gb"; gc: "al.gc"; gd: "al.gd"; ge: "al.ge"; gf: "al.gf"; gg: "al.gg"; gh: "al.gh"; gi: "al.gi"; gj: "al.gj"; gk: "al.gk"; gl: "al.gl"; gm: "al.gm"; gn: "al.gn"; go: "al.go"; gp: "al.gp"; gq: "al.gq"; gr: "al.gr"; gs: "al.gs"; gt: "al.gt"; gu: "al.gu"; gv: "al.gv"; gw: "al.gw"; gx: "al.gx"; gy: "al.gy"; gz: "al.gz"; ha: "al.ha"; hb: "al.hb"; hc: "al.hc"; hd: "al.hd"; he: "al.he"; hf: "al.hf"; hg: "al.hg"; hh: "al.hh"; hi: "al.hi"; hj: "al.hj"; hk: "al.hk"; hl: "al.hl"; hm: "al.hm"; hn: "al.hn"; ho: "al.ho"; hp: "al.hp"; hq: "al.hq"; hr: "al.hr"; hs: "al.hs"; ht: "al.ht"; hu: "al.hu"; hv: "al.hv"; hw: "al.hw"; hx: "al.hx"; hy: "al.hy"; hz: "al.hz"; ia: "al.ia"; ib: "al.ib"; ic: "al.ic"; id: "al.id"; ie: "al.ie"; if: "al.if"; ig: "al.ig"; ih: "al.ih"; ii: "al.ii"; ij: "al.ij"; ik: "al.ik"; il: "al.il"; im: "al.im"; in: "al.in"; io: "al.io"; ip: "al.ip"; iq: "al.iq"; ir: "al.ir"; is: "al.is"; it: "al.it"; iu: "al.iu"; iv: "al.iv"; iw: "al.iw"; ix: "al.ix"; iy: "al.iy"; iz: "al.iz"; ja: "al.ja"; jb: "al.jb"; jc: "al.jc"; jd: "al.jd"; je: "al.je"; jf: "al.jf"; jg: "al.jg"; jh: "al.jh"; ji: "al.ji"; jj: "al.jj"; jk: "al.jk"; jl: "al.jl"; jm: "al.jm"; jn: "al.jn"; jo: "al.jo"; jp: "al.jp"; jq: "al.jq"; jr: "al.jr"; js: "al.js"; jt: "al.jt"; ju: "al.ju"; jv: "al.jv"; jw: "al.jw"; jx: "al.jx"; jy: "al.jy"; jz: "al.jz"; ka: "al.ka"; kb: "al.kb"; kc: "al.kc"; kd: "al.kd"; ke: "al.ke"; kf: "al.kf"; kg: "al.kg"; kh: "al.kh"; ki: "al.ki"; kj: "al.kj"; kk: "al.kk"; kl: "al.kl"; km: "al.km"; kn: "al.kn"; ko: "al.ko"; kp: "al.kp"; kq: "al.kq"; kr: "al.kr"; ks: "al.ks"; kt: "al.kt"; ku: "al.ku"; kv: "al.kv"; kw: "al.kw"; kx: "al.kx"; ky: "al.ky"; kz: "al.kz"; la: "al.la"; lb: "al.lb"; lc: "al.lc"; ld: "al.ld"; le: "al.le"; lf: "al.lf"; lg: "al.lg"; lh: "al.lh"; li: "al.li"; lj: "al.lj"; lk: "al.lk"; ll: "al.ll"; lm: "al.lm"; ln: "al.ln"; lo: "al.lo"; lp: "al.lp"; lq: "al.lq"; lr: "al.lr"; ls: "al.ls"; lt: "al.lt"; lu: "al.lu"; lv: "al.lv"; lw: "al.lw"; lx: "al.lx"; ly: "al.ly"; lz: "al.lz"; ma: "al.ma"; mb: "al.mb"; mc: "al.mc"; md: "al.md"; me: "al.me"; mf: "al.mf"; mg: "al.mg"; mh: "al.mh"; mi: "al.mi"; mj: "al.mj"; mk: "al.mk"; ml: "al.ml"; mm: "al.mm"; mn: "al.mn"; mo: "al.mo"; mp: "al.mp"; mq: "al.mq"; mr: "al.mr"; ms: "al.ms"; mt: "al.mt"; mu: "al.mu"; mv: "al.mv"; mw: "al.mw"; mx: "al.mx"; my: "al.my"; mz: "al.mz"; na: "al.na"; nb: "al.nb"; nc: "al.nc"; nd: "al.nd"; ne: "al.ne"; nf: "al.nf"; ng: "al.ng"; nh: "al.nh"; ni: "al.ni"; nj: "al.nj"; nk: "al.nk"; nl: "al.nl"; nm: "al.nm"; nn: "al.nn"; no: "al.no"; np: "al.np"; nq: "al.nq"; nr: "al.nr"; ns: "al.ns"; nt: "al.nt"; nu: "al.nu"; nv: "al.nv"; nw: "al.nw"; nx: "al.nx"; ny: "al.ny"; nz: "al.nz"; oa: "al.oa"; ob: "al.ob"; oc: "al.oc"; od: "al.od"; oe: "al.oe"; of: "al.of"; og: "al.og"; oh: "al.oh"; oi: "al.oi"; oj: "al.oj"; ok: "al.ok"; ol: "al.ol"; om: "al.om"; on: "al.on"; oo: "al.oo"; op: "al.op"; oq: "al.oq"; or: "al.or"; os: "al.os"; ot: "al.ot"; ou: "al.ou"; ov: "al.ov"; ow: "al.ow"; ox: "al.ox"; oy: "al.oy"; oz: "al.oz"; pa: "al.pa"; pb: "al.pb"; pc: "al.pc"; pd: "al.pd"; pe: "al.pe"; pf: "al.pf"; pg: "al.pg"; ph: "al.ph"; pi: "al.pi"; pj: "al.pj"; pk: "al.pk"; pl: "al.pl"; pm: "al.pm"; pn: "al.pn"; po: "al.po"; pp: "al.pp"; pq: "al.pq"; pr: "al.pr"; ps: "al.ps"; pt: "al.pt"; pu: "al.pu"; pv: "al.pv"; pw: "al.pw"; px: "al.px"; py: "al.py"; pz: "al.pz"; qa: "al.qa"; qb: "al.qb"; qc: "al.qc"; qd: "al.qd"; qe: "al.qe"; qf: "al.qf"; qg: "al.qg"; qh: "al.qh"; qi: "al.qi"; qj: "al.qj"; qk: "al.qk"; ql: "al.ql"; qm: "al.qm"; qn: "al.qn"; qo: "al.qo"; qp: "al.qp"; qq: "al.qq"; qr: "al.qr"; qs: "al.qs"; qt: "al.qt"; qu: "al.qu"; qv: "al.qv"; qw: "al.qw"; qx: "al.qx"; qy: "al.qy"; qz: "al.qz"; ra: "al.ra"; rb: "al.rb"; rc: "al.rc"; rd: "al.rd"; re: "al.re"; rf: "al.rf"; rg: "al.rg"; rh: "al.rh"; ri: "al.ri"; rj: "al.rj"; rk: "al.rk"; rl: "al.rl"; rm: "al.rm"; rn: "al.rn"; ro: "al.ro"; rp: "al.rp"; rq: "al.rq"; rr: "al.rr"; rs: "al.rs"; rt: "al.rt"; ru: "al.ru"; rv: "al.rv"; rw: "al.rw"; rx: "al.rx"; ry: "al.ry"; rz: "al.rz"; sa: "al.sa"; sb: "al.sb"; sc: "al.sc"; sd: "al.sd"; se: "al.se"; sf: "al.sf"; sg: "al.sg"; sh: "al.sh"; si: "al.si"; sj: "al.sj"; sk: "al.sk"; sl: "al.sl"; sm: "al.sm"; sn: "al.sn"; so: "al.so"; sp: "al.sp"; sq: "al.sq"; sr: "al.sr"; ss: "al.ss"; st: "al.st"; su: "al.su"; sv: "al.sv"; sw: "al.sw"; sx: "al.sx"; sy: "al.sy"; sz: "al.sz"; ta: "al.ta"; tb: "al.tb"; tc: "al.tc"; td: "al.td"; te: "al.te"; tf: "al.tf"; tg: "al.tg"; th: "al.th"; ti: "al.ti"; tj: "al.tj"; tk: "al.tk"; tl: "al.tl"; tm: "al.tm"; tn: "al.tn"; to: "al.to"; tp: "al.tp"; tq: "al.tq"; tr: "al.tr"; ts: "al.ts"; tt: "al.tt"; tu: "al.tu"; tv: "al.tv"; tw: "al.tw"; tx: "al.tx"; ty: "al.ty"; tz: "al.tz"; ua: "al.ua"; ub: "al.ub"; uc: "al.uc"; ud: "al.ud"; ue: "al.ue"; uf: "al.uf"; ug: "al.ug"; uh: "al.uh"; ui: "al.ui"; uj: "al.uj"; uk: "al.uk"; ul: "al.ul"; um: "al.um"; un: "al.un"; uo: "al.uo"; up: "al.up"; uq: "al.uq"; ur: "al.ur"; us: "al.us"; ut: "al.ut"; uu: "al.uu"; uv: "al.uv"; uw: "al.uw"; ux: "al.ux"; uy: "al.uy"; uz: "al.uz"; va: "al.va"; vb: "al.vb"; vc: "al.vc"; vd: "al.vd"; ve: "al.ve"; vf: "al.vf"; vg: "al.vg"; vh: "al.vh"; vi: "al.vi"; vj: "al.vj"; vk: "al.vk"; vl: "al.vl"; vm: "al.vm"; vn: "al.vn"; vo: "al.vo"; vp: "al.vp"; vq: "al.vq"; vr: "al.vr"; vs: "al.vs"; vt: "al.vt"; vu: "al.vu"; vv: "al.vv"; vw: "al.vw"; vx: "al.vx"; vy: "al.vy"; vz: "al.vz"; wa: "al.wa"; wb: "al.wb"; wc: "al.wc"; wd: "al.wd"; we: "al.we"; wf: "al.wf"; wg: "al.wg"; wh: "al.wh"; wi: "al.wi"; wj: "al.wj"; wk: "al.wk"; wl: "al.wl"; wm: "al.wm"; wn: "al.wn"; wo: "al.wo"; wp: "al.wp"; wq: "al.wq"; wr: "al.wr"; ws: "al.ws"; wt: "al.wt"; wu: "al.wu"; wv: "al.wv"; ww: "al.ww"; wx: "al.wx"; wy: "al.wy"; wz: "al.wz"; xa: "al.xa"; xb: "al.xb"; xc: "al.xc"; xd: "al.xd"; xe: "al.xe"; xf: "al.xf"; xg: "al.xg"; xh: "al.xh"; xi: "al.xi"; xj: "al.xj"; xk: "al.xk"; xl: "al.xl"; xm: "al.xm"; xn: "al.xn"; xo: "al.xo"; xp: "al.xp"; xq: "al.xq"; xr: "al.xr"; xs: "al.xs"; xt: "al.xt"; xu: "al.xu"; xv: "al.xv"; xw: "al.xw"; xx: "al.xx"; xy: "al.xy"; xz: "al.xz"; ya: "al.ya"; yb: "al.yb"; yc: "al.yc"; yd: "al.yd"; ye: "al.ye"; yf: "al.yf"; yg: "al.yg"; yh: "al.yh"; yi: "al.yi"; yj: "al.yj"; yk: "al.yk"; yl: "al.yl"; ym: "al.ym"; yn: "al.yn"; yo: "al.yo"; yp: "al.yp"; yq: "al.yq"; yr: "al.yr"; ys: "al.ys"; yt: "al.yt"; yu: "al.yu"; yv: "al.yv"; yw: "al.yw"; yx: "al.yx"; yy: "al.yy"; yz: "al.yz"; za: "al.za"; zb: "al.zb"; zc: "al.zc"; zd: "al.zd"; ze: "al.ze"; zf: "al.zf"; zg: "al.zg"; zh: "al.zh"; zi: "al.zi"; zj: "al.zj"; zk: "al.zk"; zl: "al.zl"; zm: "al.zm"; zn: "al.zn"; zo: "al.zo"; zp: "al.zp"; zq: "al.zq"; zr: "al.zr"; zs: "al.zs"; zt: "al.zt"; zu: "al.zu"; zv: "al.zv"; zw: "al.zw"; zx: "al.zx"; zy: "al.zy"; zz: "al.zz"; }; am: { aa: "am.aa"; ab: "am.ab"; ac: "am.ac"; ad: "am.ad"; ae: "am.ae"; af: "am.af"; ag: "am.ag"; ah: "am.ah"; ai: "am.ai"; aj: "am.aj"; ak: "am.ak"; al: "am.al"; am: "am.am"; an: "am.an"; ao: "am.ao"; ap: "am.ap"; aq: "am.aq"; ar: "am.ar"; as: "am.as"; at: "am.at"; au: "am.au"; av: "am.av"; aw: "am.aw"; ax: "am.ax"; ay: "am.ay"; az: "am.az"; ba: "am.ba"; bb: "am.bb"; bc: "am.bc"; bd: "am.bd"; be: "am.be"; bf: "am.bf"; bg: "am.bg"; bh: "am.bh"; bi: "am.bi"; bj: "am.bj"; bk: "am.bk"; bl: "am.bl"; bm: "am.bm"; bn: "am.bn"; bo: "am.bo"; bp: "am.bp"; bq: "am.bq"; br: "am.br"; bs: "am.bs"; bt: "am.bt"; bu: "am.bu"; bv: "am.bv"; bw: "am.bw"; bx: "am.bx"; by: "am.by"; bz: "am.bz"; ca: "am.ca"; cb: "am.cb"; cc: "am.cc"; cd: "am.cd"; ce: "am.ce"; cf: "am.cf"; cg: "am.cg"; ch: "am.ch"; ci: "am.ci"; cj: "am.cj"; ck: "am.ck"; cl: "am.cl"; cm: "am.cm"; cn: "am.cn"; co: "am.co"; cp: "am.cp"; cq: "am.cq"; cr: "am.cr"; cs: "am.cs"; ct: "am.ct"; cu: "am.cu"; cv: "am.cv"; cw: "am.cw"; cx: "am.cx"; cy: "am.cy"; cz: "am.cz"; da: "am.da"; db: "am.db"; dc: "am.dc"; dd: "am.dd"; de: "am.de"; df: "am.df"; dg: "am.dg"; dh: "am.dh"; di: "am.di"; dj: "am.dj"; dk: "am.dk"; dl: "am.dl"; dm: "am.dm"; dn: "am.dn"; do: "am.do"; dp: "am.dp"; dq: "am.dq"; dr: "am.dr"; ds: "am.ds"; dt: "am.dt"; du: "am.du"; dv: "am.dv"; dw: "am.dw"; dx: "am.dx"; dy: "am.dy"; dz: "am.dz"; ea: "am.ea"; eb: "am.eb"; ec: "am.ec"; ed: "am.ed"; ee: "am.ee"; ef: "am.ef"; eg: "am.eg"; eh: "am.eh"; ei: "am.ei"; ej: "am.ej"; ek: "am.ek"; el: "am.el"; em: "am.em"; en: "am.en"; eo: "am.eo"; ep: "am.ep"; eq: "am.eq"; er: "am.er"; es: "am.es"; et: "am.et"; eu: "am.eu"; ev: "am.ev"; ew: "am.ew"; ex: "am.ex"; ey: "am.ey"; ez: "am.ez"; fa: "am.fa"; fb: "am.fb"; fc: "am.fc"; fd: "am.fd"; fe: "am.fe"; ff: "am.ff"; fg: "am.fg"; fh: "am.fh"; fi: "am.fi"; fj: "am.fj"; fk: "am.fk"; fl: "am.fl"; fm: "am.fm"; fn: "am.fn"; fo: "am.fo"; fp: "am.fp"; fq: "am.fq"; fr: "am.fr"; fs: "am.fs"; ft: "am.ft"; fu: "am.fu"; fv: "am.fv"; fw: "am.fw"; fx: "am.fx"; fy: "am.fy"; fz: "am.fz"; ga: "am.ga"; gb: "am.gb"; gc: "am.gc"; gd: "am.gd"; ge: "am.ge"; gf: "am.gf"; gg: "am.gg"; gh: "am.gh"; gi: "am.gi"; gj: "am.gj"; gk: "am.gk"; gl: "am.gl"; gm: "am.gm"; gn: "am.gn"; go: "am.go"; gp: "am.gp"; gq: "am.gq"; gr: "am.gr"; gs: "am.gs"; gt: "am.gt"; gu: "am.gu"; gv: "am.gv"; gw: "am.gw"; gx: "am.gx"; gy: "am.gy"; gz: "am.gz"; ha: "am.ha"; hb: "am.hb"; hc: "am.hc"; hd: "am.hd"; he: "am.he"; hf: "am.hf"; hg: "am.hg"; hh: "am.hh"; hi: "am.hi"; hj: "am.hj"; hk: "am.hk"; hl: "am.hl"; hm: "am.hm"; hn: "am.hn"; ho: "am.ho"; hp: "am.hp"; hq: "am.hq"; hr: "am.hr"; hs: "am.hs"; ht: "am.ht"; hu: "am.hu"; hv: "am.hv"; hw: "am.hw"; hx: "am.hx"; hy: "am.hy"; hz: "am.hz"; ia: "am.ia"; ib: "am.ib"; ic: "am.ic"; id: "am.id"; ie: "am.ie"; if: "am.if"; ig: "am.ig"; ih: "am.ih"; ii: "am.ii"; ij: "am.ij"; ik: "am.ik"; il: "am.il"; im: "am.im"; in: "am.in"; io: "am.io"; ip: "am.ip"; iq: "am.iq"; ir: "am.ir"; is: "am.is"; it: "am.it"; iu: "am.iu"; iv: "am.iv"; iw: "am.iw"; ix: "am.ix"; iy: "am.iy"; iz: "am.iz"; ja: "am.ja"; jb: "am.jb"; jc: "am.jc"; jd: "am.jd"; je: "am.je"; jf: "am.jf"; jg: "am.jg"; jh: "am.jh"; ji: "am.ji"; jj: "am.jj"; jk: "am.jk"; jl: "am.jl"; jm: "am.jm"; jn: "am.jn"; jo: "am.jo"; jp: "am.jp"; jq: "am.jq"; jr: "am.jr"; js: "am.js"; jt: "am.jt"; ju: "am.ju"; jv: "am.jv"; jw: "am.jw"; jx: "am.jx"; jy: "am.jy"; jz: "am.jz"; ka: "am.ka"; kb: "am.kb"; kc: "am.kc"; kd: "am.kd"; ke: "am.ke"; kf: "am.kf"; kg: "am.kg"; kh: "am.kh"; ki: "am.ki"; kj: "am.kj"; kk: "am.kk"; kl: "am.kl"; km: "am.km"; kn: "am.kn"; ko: "am.ko"; kp: "am.kp"; kq: "am.kq"; kr: "am.kr"; ks: "am.ks"; kt: "am.kt"; ku: "am.ku"; kv: "am.kv"; kw: "am.kw"; kx: "am.kx"; ky: "am.ky"; kz: "am.kz"; la: "am.la"; lb: "am.lb"; lc: "am.lc"; ld: "am.ld"; le: "am.le"; lf: "am.lf"; lg: "am.lg"; lh: "am.lh"; li: "am.li"; lj: "am.lj"; lk: "am.lk"; ll: "am.ll"; lm: "am.lm"; ln: "am.ln"; lo: "am.lo"; lp: "am.lp"; lq: "am.lq"; lr: "am.lr"; ls: "am.ls"; lt: "am.lt"; lu: "am.lu"; lv: "am.lv"; lw: "am.lw"; lx: "am.lx"; ly: "am.ly"; lz: "am.lz"; ma: "am.ma"; mb: "am.mb"; mc: "am.mc"; md: "am.md"; me: "am.me"; mf: "am.mf"; mg: "am.mg"; mh: "am.mh"; mi: "am.mi"; mj: "am.mj"; mk: "am.mk"; ml: "am.ml"; mm: "am.mm"; mn: "am.mn"; mo: "am.mo"; mp: "am.mp"; mq: "am.mq"; mr: "am.mr"; ms: "am.ms"; mt: "am.mt"; mu: "am.mu"; mv: "am.mv"; mw: "am.mw"; mx: "am.mx"; my: "am.my"; mz: "am.mz"; na: "am.na"; nb: "am.nb"; nc: "am.nc"; nd: "am.nd"; ne: "am.ne"; nf: "am.nf"; ng: "am.ng"; nh: "am.nh"; ni: "am.ni"; nj: "am.nj"; nk: "am.nk"; nl: "am.nl"; nm: "am.nm"; nn: "am.nn"; no: "am.no"; np: "am.np"; nq: "am.nq"; nr: "am.nr"; ns: "am.ns"; nt: "am.nt"; nu: "am.nu"; nv: "am.nv"; nw: "am.nw"; nx: "am.nx"; ny: "am.ny"; nz: "am.nz"; oa: "am.oa"; ob: "am.ob"; oc: "am.oc"; od: "am.od"; oe: "am.oe"; of: "am.of"; og: "am.og"; oh: "am.oh"; oi: "am.oi"; oj: "am.oj"; ok: "am.ok"; ol: "am.ol"; om: "am.om"; on: "am.on"; oo: "am.oo"; op: "am.op"; oq: "am.oq"; or: "am.or"; os: "am.os"; ot: "am.ot"; ou: "am.ou"; ov: "am.ov"; ow: "am.ow"; ox: "am.ox"; oy: "am.oy"; oz: "am.oz"; pa: "am.pa"; pb: "am.pb"; pc: "am.pc"; pd: "am.pd"; pe: "am.pe"; pf: "am.pf"; pg: "am.pg"; ph: "am.ph"; pi: "am.pi"; pj: "am.pj"; pk: "am.pk"; pl: "am.pl"; pm: "am.pm"; pn: "am.pn"; po: "am.po"; pp: "am.pp"; pq: "am.pq"; pr: "am.pr"; ps: "am.ps"; pt: "am.pt"; pu: "am.pu"; pv: "am.pv"; pw: "am.pw"; px: "am.px"; py: "am.py"; pz: "am.pz"; qa: "am.qa"; qb: "am.qb"; qc: "am.qc"; qd: "am.qd"; qe: "am.qe"; qf: "am.qf"; qg: "am.qg"; qh: "am.qh"; qi: "am.qi"; qj: "am.qj"; qk: "am.qk"; ql: "am.ql"; qm: "am.qm"; qn: "am.qn"; qo: "am.qo"; qp: "am.qp"; qq: "am.qq"; qr: "am.qr"; qs: "am.qs"; qt: "am.qt"; qu: "am.qu"; qv: "am.qv"; qw: "am.qw"; qx: "am.qx"; qy: "am.qy"; qz: "am.qz"; ra: "am.ra"; rb: "am.rb"; rc: "am.rc"; rd: "am.rd"; re: "am.re"; rf: "am.rf"; rg: "am.rg"; rh: "am.rh"; ri: "am.ri"; rj: "am.rj"; rk: "am.rk"; rl: "am.rl"; rm: "am.rm"; rn: "am.rn"; ro: "am.ro"; rp: "am.rp"; rq: "am.rq"; rr: "am.rr"; rs: "am.rs"; rt: "am.rt"; ru: "am.ru"; rv: "am.rv"; rw: "am.rw"; rx: "am.rx"; ry: "am.ry"; rz: "am.rz"; sa: "am.sa"; sb: "am.sb"; sc: "am.sc"; sd: "am.sd"; se: "am.se"; sf: "am.sf"; sg: "am.sg"; sh: "am.sh"; si: "am.si"; sj: "am.sj"; sk: "am.sk"; sl: "am.sl"; sm: "am.sm"; sn: "am.sn"; so: "am.so"; sp: "am.sp"; sq: "am.sq"; sr: "am.sr"; ss: "am.ss"; st: "am.st"; su: "am.su"; sv: "am.sv"; sw: "am.sw"; sx: "am.sx"; sy: "am.sy"; sz: "am.sz"; ta: "am.ta"; tb: "am.tb"; tc: "am.tc"; td: "am.td"; te: "am.te"; tf: "am.tf"; tg: "am.tg"; th: "am.th"; ti: "am.ti"; tj: "am.tj"; tk: "am.tk"; tl: "am.tl"; tm: "am.tm"; tn: "am.tn"; to: "am.to"; tp: "am.tp"; tq: "am.tq"; tr: "am.tr"; ts: "am.ts"; tt: "am.tt"; tu: "am.tu"; tv: "am.tv"; tw: "am.tw"; tx: "am.tx"; ty: "am.ty"; tz: "am.tz"; ua: "am.ua"; ub: "am.ub"; uc: "am.uc"; ud: "am.ud"; ue: "am.ue"; uf: "am.uf"; ug: "am.ug"; uh: "am.uh"; ui: "am.ui"; uj: "am.uj"; uk: "am.uk"; ul: "am.ul"; um: "am.um"; un: "am.un"; uo: "am.uo"; up: "am.up"; uq: "am.uq"; ur: "am.ur"; us: "am.us"; ut: "am.ut"; uu: "am.uu"; uv: "am.uv"; uw: "am.uw"; ux: "am.ux"; uy: "am.uy"; uz: "am.uz"; va: "am.va"; vb: "am.vb"; vc: "am.vc"; vd: "am.vd"; ve: "am.ve"; vf: "am.vf"; vg: "am.vg"; vh: "am.vh"; vi: "am.vi"; vj: "am.vj"; vk: "am.vk"; vl: "am.vl"; vm: "am.vm"; vn: "am.vn"; vo: "am.vo"; vp: "am.vp"; vq: "am.vq"; vr: "am.vr"; vs: "am.vs"; vt: "am.vt"; vu: "am.vu"; vv: "am.vv"; vw: "am.vw"; vx: "am.vx"; vy: "am.vy"; vz: "am.vz"; wa: "am.wa"; wb: "am.wb"; wc: "am.wc"; wd: "am.wd"; we: "am.we"; wf: "am.wf"; wg: "am.wg"; wh: "am.wh"; wi: "am.wi"; wj: "am.wj"; wk: "am.wk"; wl: "am.wl"; wm: "am.wm"; wn: "am.wn"; wo: "am.wo"; wp: "am.wp"; wq: "am.wq"; wr: "am.wr"; ws: "am.ws"; wt: "am.wt"; wu: "am.wu"; wv: "am.wv"; ww: "am.ww"; wx: "am.wx"; wy: "am.wy"; wz: "am.wz"; xa: "am.xa"; xb: "am.xb"; xc: "am.xc"; xd: "am.xd"; xe: "am.xe"; xf: "am.xf"; xg: "am.xg"; xh: "am.xh"; xi: "am.xi"; xj: "am.xj"; xk: "am.xk"; xl: "am.xl"; xm: "am.xm"; xn: "am.xn"; xo: "am.xo"; xp: "am.xp"; xq: "am.xq"; xr: "am.xr"; xs: "am.xs"; xt: "am.xt"; xu: "am.xu"; xv: "am.xv"; xw: "am.xw"; xx: "am.xx"; xy: "am.xy"; xz: "am.xz"; ya: "am.ya"; yb: "am.yb"; yc: "am.yc"; yd: "am.yd"; ye: "am.ye"; yf: "am.yf"; yg: "am.yg"; yh: "am.yh"; yi: "am.yi"; yj: "am.yj"; yk: "am.yk"; yl: "am.yl"; ym: "am.ym"; yn: "am.yn"; yo: "am.yo"; yp: "am.yp"; yq: "am.yq"; yr: "am.yr"; ys: "am.ys"; yt: "am.yt"; yu: "am.yu"; yv: "am.yv"; yw: "am.yw"; yx: "am.yx"; yy: "am.yy"; yz: "am.yz"; za: "am.za"; zb: "am.zb"; zc: "am.zc"; zd: "am.zd"; ze: "am.ze"; zf: "am.zf"; zg: "am.zg"; zh: "am.zh"; zi: "am.zi"; zj: "am.zj"; zk: "am.zk"; zl: "am.zl"; zm: "am.zm"; zn: "am.zn"; zo: "am.zo"; zp: "am.zp"; zq: "am.zq"; zr: "am.zr"; zs: "am.zs"; zt: "am.zt"; zu: "am.zu"; zv: "am.zv"; zw: "am.zw"; zx: "am.zx"; zy: "am.zy"; zz: "am.zz"; }; an: { aa: "an.aa"; ab: "an.ab"; ac: "an.ac"; ad: "an.ad"; ae: "an.ae"; af: "an.af"; ag: "an.ag"; ah: "an.ah"; ai: "an.ai"; aj: "an.aj"; ak: "an.ak"; al: "an.al"; am: "an.am"; an: "an.an"; ao: "an.ao"; ap: "an.ap"; aq: "an.aq"; ar: "an.ar"; as: "an.as"; at: "an.at"; au: "an.au"; av: "an.av"; aw: "an.aw"; ax: "an.ax"; ay: "an.ay"; az: "an.az"; ba: "an.ba"; bb: "an.bb"; bc: "an.bc"; bd: "an.bd"; be: "an.be"; bf: "an.bf"; bg: "an.bg"; bh: "an.bh"; bi: "an.bi"; bj: "an.bj"; bk: "an.bk"; bl: "an.bl"; bm: "an.bm"; bn: "an.bn"; bo: "an.bo"; bp: "an.bp"; bq: "an.bq"; br: "an.br"; bs: "an.bs"; bt: "an.bt"; bu: "an.bu"; bv: "an.bv"; bw: "an.bw"; bx: "an.bx"; by: "an.by"; bz: "an.bz"; ca: "an.ca"; cb: "an.cb"; cc: "an.cc"; cd: "an.cd"; ce: "an.ce"; cf: "an.cf"; cg: "an.cg"; ch: "an.ch"; ci: "an.ci"; cj: "an.cj"; ck: "an.ck"; cl: "an.cl"; cm: "an.cm"; cn: "an.cn"; co: "an.co"; cp: "an.cp"; cq: "an.cq"; cr: "an.cr"; cs: "an.cs"; ct: "an.ct"; cu: "an.cu"; cv: "an.cv"; cw: "an.cw"; cx: "an.cx"; cy: "an.cy"; cz: "an.cz"; da: "an.da"; db: "an.db"; dc: "an.dc"; dd: "an.dd"; de: "an.de"; df: "an.df"; dg: "an.dg"; dh: "an.dh"; di: "an.di"; dj: "an.dj"; dk: "an.dk"; dl: "an.dl"; dm: "an.dm"; dn: "an.dn"; do: "an.do"; dp: "an.dp"; dq: "an.dq"; dr: "an.dr"; ds: "an.ds"; dt: "an.dt"; du: "an.du"; dv: "an.dv"; dw: "an.dw"; dx: "an.dx"; dy: "an.dy"; dz: "an.dz"; ea: "an.ea"; eb: "an.eb"; ec: "an.ec"; ed: "an.ed"; ee: "an.ee"; ef: "an.ef"; eg: "an.eg"; eh: "an.eh"; ei: "an.ei"; ej: "an.ej"; ek: "an.ek"; el: "an.el"; em: "an.em"; en: "an.en"; eo: "an.eo"; ep: "an.ep"; eq: "an.eq"; er: "an.er"; es: "an.es"; et: "an.et"; eu: "an.eu"; ev: "an.ev"; ew: "an.ew"; ex: "an.ex"; ey: "an.ey"; ez: "an.ez"; fa: "an.fa"; fb: "an.fb"; fc: "an.fc"; fd: "an.fd"; fe: "an.fe"; ff: "an.ff"; fg: "an.fg"; fh: "an.fh"; fi: "an.fi"; fj: "an.fj"; fk: "an.fk"; fl: "an.fl"; fm: "an.fm"; fn: "an.fn"; fo: "an.fo"; fp: "an.fp"; fq: "an.fq"; fr: "an.fr"; fs: "an.fs"; ft: "an.ft"; fu: "an.fu"; fv: "an.fv"; fw: "an.fw"; fx: "an.fx"; fy: "an.fy"; fz: "an.fz"; ga: "an.ga"; gb: "an.gb"; gc: "an.gc"; gd: "an.gd"; ge: "an.ge"; gf: "an.gf"; gg: "an.gg"; gh: "an.gh"; gi: "an.gi"; gj: "an.gj"; gk: "an.gk"; gl: "an.gl"; gm: "an.gm"; gn: "an.gn"; go: "an.go"; gp: "an.gp"; gq: "an.gq"; gr: "an.gr"; gs: "an.gs"; gt: "an.gt"; gu: "an.gu"; gv: "an.gv"; gw: "an.gw"; gx: "an.gx"; gy: "an.gy"; gz: "an.gz"; ha: "an.ha"; hb: "an.hb"; hc: "an.hc"; hd: "an.hd"; he: "an.he"; hf: "an.hf"; hg: "an.hg"; hh: "an.hh"; hi: "an.hi"; hj: "an.hj"; hk: "an.hk"; hl: "an.hl"; hm: "an.hm"; hn: "an.hn"; ho: "an.ho"; hp: "an.hp"; hq: "an.hq"; hr: "an.hr"; hs: "an.hs"; ht: "an.ht"; hu: "an.hu"; hv: "an.hv"; hw: "an.hw"; hx: "an.hx"; hy: "an.hy"; hz: "an.hz"; ia: "an.ia"; ib: "an.ib"; ic: "an.ic"; id: "an.id"; ie: "an.ie"; if: "an.if"; ig: "an.ig"; ih: "an.ih"; ii: "an.ii"; ij: "an.ij"; ik: "an.ik"; il: "an.il"; im: "an.im"; in: "an.in"; io: "an.io"; ip: "an.ip"; iq: "an.iq"; ir: "an.ir"; is: "an.is"; it: "an.it"; iu: "an.iu"; iv: "an.iv"; iw: "an.iw"; ix: "an.ix"; iy: "an.iy"; iz: "an.iz"; ja: "an.ja"; jb: "an.jb"; jc: "an.jc"; jd: "an.jd"; je: "an.je"; jf: "an.jf"; jg: "an.jg"; jh: "an.jh"; ji: "an.ji"; jj: "an.jj"; jk: "an.jk"; jl: "an.jl"; jm: "an.jm"; jn: "an.jn"; jo: "an.jo"; jp: "an.jp"; jq: "an.jq"; jr: "an.jr"; js: "an.js"; jt: "an.jt"; ju: "an.ju"; jv: "an.jv"; jw: "an.jw"; jx: "an.jx"; jy: "an.jy"; jz: "an.jz"; ka: "an.ka"; kb: "an.kb"; kc: "an.kc"; kd: "an.kd"; ke: "an.ke"; kf: "an.kf"; kg: "an.kg"; kh: "an.kh"; ki: "an.ki"; kj: "an.kj"; kk: "an.kk"; kl: "an.kl"; km: "an.km"; kn: "an.kn"; ko: "an.ko"; kp: "an.kp"; kq: "an.kq"; kr: "an.kr"; ks: "an.ks"; kt: "an.kt"; ku: "an.ku"; kv: "an.kv"; kw: "an.kw"; kx: "an.kx"; ky: "an.ky"; kz: "an.kz"; la: "an.la"; lb: "an.lb"; lc: "an.lc"; ld: "an.ld"; le: "an.le"; lf: "an.lf"; lg: "an.lg"; lh: "an.lh"; li: "an.li"; lj: "an.lj"; lk: "an.lk"; ll: "an.ll"; lm: "an.lm"; ln: "an.ln"; lo: "an.lo"; lp: "an.lp"; lq: "an.lq"; lr: "an.lr"; ls: "an.ls"; lt: "an.lt"; lu: "an.lu"; lv: "an.lv"; lw: "an.lw"; lx: "an.lx"; ly: "an.ly"; lz: "an.lz"; ma: "an.ma"; mb: "an.mb"; mc: "an.mc"; md: "an.md"; me: "an.me"; mf: "an.mf"; mg: "an.mg"; mh: "an.mh"; mi: "an.mi"; mj: "an.mj"; mk: "an.mk"; ml: "an.ml"; mm: "an.mm"; mn: "an.mn"; mo: "an.mo"; mp: "an.mp"; mq: "an.mq"; mr: "an.mr"; ms: "an.ms"; mt: "an.mt"; mu: "an.mu"; mv: "an.mv"; mw: "an.mw"; mx: "an.mx"; my: "an.my"; mz: "an.mz"; na: "an.na"; nb: "an.nb"; nc: "an.nc"; nd: "an.nd"; ne: "an.ne"; nf: "an.nf"; ng: "an.ng"; nh: "an.nh"; ni: "an.ni"; nj: "an.nj"; nk: "an.nk"; nl: "an.nl"; nm: "an.nm"; nn: "an.nn"; no: "an.no"; np: "an.np"; nq: "an.nq"; nr: "an.nr"; ns: "an.ns"; nt: "an.nt"; nu: "an.nu"; nv: "an.nv"; nw: "an.nw"; nx: "an.nx"; ny: "an.ny"; nz: "an.nz"; oa: "an.oa"; ob: "an.ob"; oc: "an.oc"; od: "an.od"; oe: "an.oe"; of: "an.of"; og: "an.og"; oh: "an.oh"; oi: "an.oi"; oj: "an.oj"; ok: "an.ok"; ol: "an.ol"; om: "an.om"; on: "an.on"; oo: "an.oo"; op: "an.op"; oq: "an.oq"; or: "an.or"; os: "an.os"; ot: "an.ot"; ou: "an.ou"; ov: "an.ov"; ow: "an.ow"; ox: "an.ox"; oy: "an.oy"; oz: "an.oz"; pa: "an.pa"; pb: "an.pb"; pc: "an.pc"; pd: "an.pd"; pe: "an.pe"; pf: "an.pf"; pg: "an.pg"; ph: "an.ph"; pi: "an.pi"; pj: "an.pj"; pk: "an.pk"; pl: "an.pl"; pm: "an.pm"; pn: "an.pn"; po: "an.po"; pp: "an.pp"; pq: "an.pq"; pr: "an.pr"; ps: "an.ps"; pt: "an.pt"; pu: "an.pu"; pv: "an.pv"; pw: "an.pw"; px: "an.px"; py: "an.py"; pz: "an.pz"; qa: "an.qa"; qb: "an.qb"; qc: "an.qc"; qd: "an.qd"; qe: "an.qe"; qf: "an.qf"; qg: "an.qg"; qh: "an.qh"; qi: "an.qi"; qj: "an.qj"; qk: "an.qk"; ql: "an.ql"; qm: "an.qm"; qn: "an.qn"; qo: "an.qo"; qp: "an.qp"; qq: "an.qq"; qr: "an.qr"; qs: "an.qs"; qt: "an.qt"; qu: "an.qu"; qv: "an.qv"; qw: "an.qw"; qx: "an.qx"; qy: "an.qy"; qz: "an.qz"; ra: "an.ra"; rb: "an.rb"; rc: "an.rc"; rd: "an.rd"; re: "an.re"; rf: "an.rf"; rg: "an.rg"; rh: "an.rh"; ri: "an.ri"; rj: "an.rj"; rk: "an.rk"; rl: "an.rl"; rm: "an.rm"; rn: "an.rn"; ro: "an.ro"; rp: "an.rp"; rq: "an.rq"; rr: "an.rr"; rs: "an.rs"; rt: "an.rt"; ru: "an.ru"; rv: "an.rv"; rw: "an.rw"; rx: "an.rx"; ry: "an.ry"; rz: "an.rz"; sa: "an.sa"; sb: "an.sb"; sc: "an.sc"; sd: "an.sd"; se: "an.se"; sf: "an.sf"; sg: "an.sg"; sh: "an.sh"; si: "an.si"; sj: "an.sj"; sk: "an.sk"; sl: "an.sl"; sm: "an.sm"; sn: "an.sn"; so: "an.so"; sp: "an.sp"; sq: "an.sq"; sr: "an.sr"; ss: "an.ss"; st: "an.st"; su: "an.su"; sv: "an.sv"; sw: "an.sw"; sx: "an.sx"; sy: "an.sy"; sz: "an.sz"; ta: "an.ta"; tb: "an.tb"; tc: "an.tc"; td: "an.td"; te: "an.te"; tf: "an.tf"; tg: "an.tg"; th: "an.th"; ti: "an.ti"; tj: "an.tj"; tk: "an.tk"; tl: "an.tl"; tm: "an.tm"; tn: "an.tn"; to: "an.to"; tp: "an.tp"; tq: "an.tq"; tr: "an.tr"; ts: "an.ts"; tt: "an.tt"; tu: "an.tu"; tv: "an.tv"; tw: "an.tw"; tx: "an.tx"; ty: "an.ty"; tz: "an.tz"; ua: "an.ua"; ub: "an.ub"; uc: "an.uc"; ud: "an.ud"; ue: "an.ue"; uf: "an.uf"; ug: "an.ug"; uh: "an.uh"; ui: "an.ui"; uj: "an.uj"; uk: "an.uk"; ul: "an.ul"; um: "an.um"; un: "an.un"; uo: "an.uo"; up: "an.up"; uq: "an.uq"; ur: "an.ur"; us: "an.us"; ut: "an.ut"; uu: "an.uu"; uv: "an.uv"; uw: "an.uw"; ux: "an.ux"; uy: "an.uy"; uz: "an.uz"; va: "an.va"; vb: "an.vb"; vc: "an.vc"; vd: "an.vd"; ve: "an.ve"; vf: "an.vf"; vg: "an.vg"; vh: "an.vh"; vi: "an.vi"; vj: "an.vj"; vk: "an.vk"; vl: "an.vl"; vm: "an.vm"; vn: "an.vn"; vo: "an.vo"; vp: "an.vp"; vq: "an.vq"; vr: "an.vr"; vs: "an.vs"; vt: "an.vt"; vu: "an.vu"; vv: "an.vv"; vw: "an.vw"; vx: "an.vx"; vy: "an.vy"; vz: "an.vz"; wa: "an.wa"; wb: "an.wb"; wc: "an.wc"; wd: "an.wd"; we: "an.we"; wf: "an.wf"; wg: "an.wg"; wh: "an.wh"; wi: "an.wi"; wj: "an.wj"; wk: "an.wk"; wl: "an.wl"; wm: "an.wm"; wn: "an.wn"; wo: "an.wo"; wp: "an.wp"; wq: "an.wq"; wr: "an.wr"; ws: "an.ws"; wt: "an.wt"; wu: "an.wu"; wv: "an.wv"; ww: "an.ww"; wx: "an.wx"; wy: "an.wy"; wz: "an.wz"; xa: "an.xa"; xb: "an.xb"; xc: "an.xc"; xd: "an.xd"; xe: "an.xe"; xf: "an.xf"; xg: "an.xg"; xh: "an.xh"; xi: "an.xi"; xj: "an.xj"; xk: "an.xk"; xl: "an.xl"; xm: "an.xm"; xn: "an.xn"; xo: "an.xo"; xp: "an.xp"; xq: "an.xq"; xr: "an.xr"; xs: "an.xs"; xt: "an.xt"; xu: "an.xu"; xv: "an.xv"; xw: "an.xw"; xx: "an.xx"; xy: "an.xy"; xz: "an.xz"; ya: "an.ya"; yb: "an.yb"; yc: "an.yc"; yd: "an.yd"; ye: "an.ye"; yf: "an.yf"; yg: "an.yg"; yh: "an.yh"; yi: "an.yi"; yj: "an.yj"; yk: "an.yk"; yl: "an.yl"; ym: "an.ym"; yn: "an.yn"; yo: "an.yo"; yp: "an.yp"; yq: "an.yq"; yr: "an.yr"; ys: "an.ys"; yt: "an.yt"; yu: "an.yu"; yv: "an.yv"; yw: "an.yw"; yx: "an.yx"; yy: "an.yy"; yz: "an.yz"; za: "an.za"; zb: "an.zb"; zc: "an.zc"; zd: "an.zd"; ze: "an.ze"; zf: "an.zf"; zg: "an.zg"; zh: "an.zh"; zi: "an.zi"; zj: "an.zj"; zk: "an.zk"; zl: "an.zl"; zm: "an.zm"; zn: "an.zn"; zo: "an.zo"; zp: "an.zp"; zq: "an.zq"; zr: "an.zr"; zs: "an.zs"; zt: "an.zt"; zu: "an.zu"; zv: "an.zv"; zw: "an.zw"; zx: "an.zx"; zy: "an.zy"; zz: "an.zz"; }; ao: { aa: "ao.aa"; ab: "ao.ab"; ac: "ao.ac"; ad: "ao.ad"; ae: "ao.ae"; af: "ao.af"; ag: "ao.ag"; ah: "ao.ah"; ai: "ao.ai"; aj: "ao.aj"; ak: "ao.ak"; al: "ao.al"; am: "ao.am"; an: "ao.an"; ao: "ao.ao"; ap: "ao.ap"; aq: "ao.aq"; ar: "ao.ar"; as: "ao.as"; at: "ao.at"; au: "ao.au"; av: "ao.av"; aw: "ao.aw"; ax: "ao.ax"; ay: "ao.ay"; az: "ao.az"; ba: "ao.ba"; bb: "ao.bb"; bc: "ao.bc"; bd: "ao.bd"; be: "ao.be"; bf: "ao.bf"; bg: "ao.bg"; bh: "ao.bh"; bi: "ao.bi"; bj: "ao.bj"; bk: "ao.bk"; bl: "ao.bl"; bm: "ao.bm"; bn: "ao.bn"; bo: "ao.bo"; bp: "ao.bp"; bq: "ao.bq"; br: "ao.br"; bs: "ao.bs"; bt: "ao.bt"; bu: "ao.bu"; bv: "ao.bv"; bw: "ao.bw"; bx: "ao.bx"; by: "ao.by"; bz: "ao.bz"; ca: "ao.ca"; cb: "ao.cb"; cc: "ao.cc"; cd: "ao.cd"; ce: "ao.ce"; cf: "ao.cf"; cg: "ao.cg"; ch: "ao.ch"; ci: "ao.ci"; cj: "ao.cj"; ck: "ao.ck"; cl: "ao.cl"; cm: "ao.cm"; cn: "ao.cn"; co: "ao.co"; cp: "ao.cp"; cq: "ao.cq"; cr: "ao.cr"; cs: "ao.cs"; ct: "ao.ct"; cu: "ao.cu"; cv: "ao.cv"; cw: "ao.cw"; cx: "ao.cx"; cy: "ao.cy"; cz: "ao.cz"; da: "ao.da"; db: "ao.db"; dc: "ao.dc"; dd: "ao.dd"; de: "ao.de"; df: "ao.df"; dg: "ao.dg"; dh: "ao.dh"; di: "ao.di"; dj: "ao.dj"; dk: "ao.dk"; dl: "ao.dl"; dm: "ao.dm"; dn: "ao.dn"; do: "ao.do"; dp: "ao.dp"; dq: "ao.dq"; dr: "ao.dr"; ds: "ao.ds"; dt: "ao.dt"; du: "ao.du"; dv: "ao.dv"; dw: "ao.dw"; dx: "ao.dx"; dy: "ao.dy"; dz: "ao.dz"; ea: "ao.ea"; eb: "ao.eb"; ec: "ao.ec"; ed: "ao.ed"; ee: "ao.ee"; ef: "ao.ef"; eg: "ao.eg"; eh: "ao.eh"; ei: "ao.ei"; ej: "ao.ej"; ek: "ao.ek"; el: "ao.el"; em: "ao.em"; en: "ao.en"; eo: "ao.eo"; ep: "ao.ep"; eq: "ao.eq"; er: "ao.er"; es: "ao.es"; et: "ao.et"; eu: "ao.eu"; ev: "ao.ev"; ew: "ao.ew"; ex: "ao.ex"; ey: "ao.ey"; ez: "ao.ez"; fa: "ao.fa"; fb: "ao.fb"; fc: "ao.fc"; fd: "ao.fd"; fe: "ao.fe"; ff: "ao.ff"; fg: "ao.fg"; fh: "ao.fh"; fi: "ao.fi"; fj: "ao.fj"; fk: "ao.fk"; fl: "ao.fl"; fm: "ao.fm"; fn: "ao.fn"; fo: "ao.fo"; fp: "ao.fp"; fq: "ao.fq"; fr: "ao.fr"; fs: "ao.fs"; ft: "ao.ft"; fu: "ao.fu"; fv: "ao.fv"; fw: "ao.fw"; fx: "ao.fx"; fy: "ao.fy"; fz: "ao.fz"; ga: "ao.ga"; gb: "ao.gb"; gc: "ao.gc"; gd: "ao.gd"; ge: "ao.ge"; gf: "ao.gf"; gg: "ao.gg"; gh: "ao.gh"; gi: "ao.gi"; gj: "ao.gj"; gk: "ao.gk"; gl: "ao.gl"; gm: "ao.gm"; gn: "ao.gn"; go: "ao.go"; gp: "ao.gp"; gq: "ao.gq"; gr: "ao.gr"; gs: "ao.gs"; gt: "ao.gt"; gu: "ao.gu"; gv: "ao.gv"; gw: "ao.gw"; gx: "ao.gx"; gy: "ao.gy"; gz: "ao.gz"; ha: "ao.ha"; hb: "ao.hb"; hc: "ao.hc"; hd: "ao.hd"; he: "ao.he"; hf: "ao.hf"; hg: "ao.hg"; hh: "ao.hh"; hi: "ao.hi"; hj: "ao.hj"; hk: "ao.hk"; hl: "ao.hl"; hm: "ao.hm"; hn: "ao.hn"; ho: "ao.ho"; hp: "ao.hp"; hq: "ao.hq"; hr: "ao.hr"; hs: "ao.hs"; ht: "ao.ht"; hu: "ao.hu"; hv: "ao.hv"; hw: "ao.hw"; hx: "ao.hx"; hy: "ao.hy"; hz: "ao.hz"; ia: "ao.ia"; ib: "ao.ib"; ic: "ao.ic"; id: "ao.id"; ie: "ao.ie"; if: "ao.if"; ig: "ao.ig"; ih: "ao.ih"; ii: "ao.ii"; ij: "ao.ij"; ik: "ao.ik"; il: "ao.il"; im: "ao.im"; in: "ao.in"; io: "ao.io"; ip: "ao.ip"; iq: "ao.iq"; ir: "ao.ir"; is: "ao.is"; it: "ao.it"; iu: "ao.iu"; iv: "ao.iv"; iw: "ao.iw"; ix: "ao.ix"; iy: "ao.iy"; iz: "ao.iz"; ja: "ao.ja"; jb: "ao.jb"; jc: "ao.jc"; jd: "ao.jd"; je: "ao.je"; jf: "ao.jf"; jg: "ao.jg"; jh: "ao.jh"; ji: "ao.ji"; jj: "ao.jj"; jk: "ao.jk"; jl: "ao.jl"; jm: "ao.jm"; jn: "ao.jn"; jo: "ao.jo"; jp: "ao.jp"; jq: "ao.jq"; jr: "ao.jr"; js: "ao.js"; jt: "ao.jt"; ju: "ao.ju"; jv: "ao.jv"; jw: "ao.jw"; jx: "ao.jx"; jy: "ao.jy"; jz: "ao.jz"; ka: "ao.ka"; kb: "ao.kb"; kc: "ao.kc"; kd: "ao.kd"; ke: "ao.ke"; kf: "ao.kf"; kg: "ao.kg"; kh: "ao.kh"; ki: "ao.ki"; kj: "ao.kj"; kk: "ao.kk"; kl: "ao.kl"; km: "ao.km"; kn: "ao.kn"; ko: "ao.ko"; kp: "ao.kp"; kq: "ao.kq"; kr: "ao.kr"; ks: "ao.ks"; kt: "ao.kt"; ku: "ao.ku"; kv: "ao.kv"; kw: "ao.kw"; kx: "ao.kx"; ky: "ao.ky"; kz: "ao.kz"; la: "ao.la"; lb: "ao.lb"; lc: "ao.lc"; ld: "ao.ld"; le: "ao.le"; lf: "ao.lf"; lg: "ao.lg"; lh: "ao.lh"; li: "ao.li"; lj: "ao.lj"; lk: "ao.lk"; ll: "ao.ll"; lm: "ao.lm"; ln: "ao.ln"; lo: "ao.lo"; lp: "ao.lp"; lq: "ao.lq"; lr: "ao.lr"; ls: "ao.ls"; lt: "ao.lt"; lu: "ao.lu"; lv: "ao.lv"; lw: "ao.lw"; lx: "ao.lx"; ly: "ao.ly"; lz: "ao.lz"; ma: "ao.ma"; mb: "ao.mb"; mc: "ao.mc"; md: "ao.md"; me: "ao.me"; mf: "ao.mf"; mg: "ao.mg"; mh: "ao.mh"; mi: "ao.mi"; mj: "ao.mj"; mk: "ao.mk"; ml: "ao.ml"; mm: "ao.mm"; mn: "ao.mn"; mo: "ao.mo"; mp: "ao.mp"; mq: "ao.mq"; mr: "ao.mr"; ms: "ao.ms"; mt: "ao.mt"; mu: "ao.mu"; mv: "ao.mv"; mw: "ao.mw"; mx: "ao.mx"; my: "ao.my"; mz: "ao.mz"; na: "ao.na"; nb: "ao.nb"; nc: "ao.nc"; nd: "ao.nd"; ne: "ao.ne"; nf: "ao.nf"; ng: "ao.ng"; nh: "ao.nh"; ni: "ao.ni"; nj: "ao.nj"; nk: "ao.nk"; nl: "ao.nl"; nm: "ao.nm"; nn: "ao.nn"; no: "ao.no"; np: "ao.np"; nq: "ao.nq"; nr: "ao.nr"; ns: "ao.ns"; nt: "ao.nt"; nu: "ao.nu"; nv: "ao.nv"; nw: "ao.nw"; nx: "ao.nx"; ny: "ao.ny"; nz: "ao.nz"; oa: "ao.oa"; ob: "ao.ob"; oc: "ao.oc"; od: "ao.od"; oe: "ao.oe"; of: "ao.of"; og: "ao.og"; oh: "ao.oh"; oi: "ao.oi"; oj: "ao.oj"; ok: "ao.ok"; ol: "ao.ol"; om: "ao.om"; on: "ao.on"; oo: "ao.oo"; op: "ao.op"; oq: "ao.oq"; or: "ao.or"; os: "ao.os"; ot: "ao.ot"; ou: "ao.ou"; ov: "ao.ov"; ow: "ao.ow"; ox: "ao.ox"; oy: "ao.oy"; oz: "ao.oz"; pa: "ao.pa"; pb: "ao.pb"; pc: "ao.pc"; pd: "ao.pd"; pe: "ao.pe"; pf: "ao.pf"; pg: "ao.pg"; ph: "ao.ph"; pi: "ao.pi"; pj: "ao.pj"; pk: "ao.pk"; pl: "ao.pl"; pm: "ao.pm"; pn: "ao.pn"; po: "ao.po"; pp: "ao.pp"; pq: "ao.pq"; pr: "ao.pr"; ps: "ao.ps"; pt: "ao.pt"; pu: "ao.pu"; pv: "ao.pv"; pw: "ao.pw"; px: "ao.px"; py: "ao.py"; pz: "ao.pz"; qa: "ao.qa"; qb: "ao.qb"; qc: "ao.qc"; qd: "ao.qd"; qe: "ao.qe"; qf: "ao.qf"; qg: "ao.qg"; qh: "ao.qh"; qi: "ao.qi"; qj: "ao.qj"; qk: "ao.qk"; ql: "ao.ql"; qm: "ao.qm"; qn: "ao.qn"; qo: "ao.qo"; qp: "ao.qp"; qq: "ao.qq"; qr: "ao.qr"; qs: "ao.qs"; qt: "ao.qt"; qu: "ao.qu"; qv: "ao.qv"; qw: "ao.qw"; qx: "ao.qx"; qy: "ao.qy"; qz: "ao.qz"; ra: "ao.ra"; rb: "ao.rb"; rc: "ao.rc"; rd: "ao.rd"; re: "ao.re"; rf: "ao.rf"; rg: "ao.rg"; rh: "ao.rh"; ri: "ao.ri"; rj: "ao.rj"; rk: "ao.rk"; rl: "ao.rl"; rm: "ao.rm"; rn: "ao.rn"; ro: "ao.ro"; rp: "ao.rp"; rq: "ao.rq"; rr: "ao.rr"; rs: "ao.rs"; rt: "ao.rt"; ru: "ao.ru"; rv: "ao.rv"; rw: "ao.rw"; rx: "ao.rx"; ry: "ao.ry"; rz: "ao.rz"; sa: "ao.sa"; sb: "ao.sb"; sc: "ao.sc"; sd: "ao.sd"; se: "ao.se"; sf: "ao.sf"; sg: "ao.sg"; sh: "ao.sh"; si: "ao.si"; sj: "ao.sj"; sk: "ao.sk"; sl: "ao.sl"; sm: "ao.sm"; sn: "ao.sn"; so: "ao.so"; sp: "ao.sp"; sq: "ao.sq"; sr: "ao.sr"; ss: "ao.ss"; st: "ao.st"; su: "ao.su"; sv: "ao.sv"; sw: "ao.sw"; sx: "ao.sx"; sy: "ao.sy"; sz: "ao.sz"; ta: "ao.ta"; tb: "ao.tb"; tc: "ao.tc"; td: "ao.td"; te: "ao.te"; tf: "ao.tf"; tg: "ao.tg"; th: "ao.th"; ti: "ao.ti"; tj: "ao.tj"; tk: "ao.tk"; tl: "ao.tl"; tm: "ao.tm"; tn: "ao.tn"; to: "ao.to"; tp: "ao.tp"; tq: "ao.tq"; tr: "ao.tr"; ts: "ao.ts"; tt: "ao.tt"; tu: "ao.tu"; tv: "ao.tv"; tw: "ao.tw"; tx: "ao.tx"; ty: "ao.ty"; tz: "ao.tz"; ua: "ao.ua"; ub: "ao.ub"; uc: "ao.uc"; ud: "ao.ud"; ue: "ao.ue"; uf: "ao.uf"; ug: "ao.ug"; uh: "ao.uh"; ui: "ao.ui"; uj: "ao.uj"; uk: "ao.uk"; ul: "ao.ul"; um: "ao.um"; un: "ao.un"; uo: "ao.uo"; up: "ao.up"; uq: "ao.uq"; ur: "ao.ur"; us: "ao.us"; ut: "ao.ut"; uu: "ao.uu"; uv: "ao.uv"; uw: "ao.uw"; ux: "ao.ux"; uy: "ao.uy"; uz: "ao.uz"; va: "ao.va"; vb: "ao.vb"; vc: "ao.vc"; vd: "ao.vd"; ve: "ao.ve"; vf: "ao.vf"; vg: "ao.vg"; vh: "ao.vh"; vi: "ao.vi"; vj: "ao.vj"; vk: "ao.vk"; vl: "ao.vl"; vm: "ao.vm"; vn: "ao.vn"; vo: "ao.vo"; vp: "ao.vp"; vq: "ao.vq"; vr: "ao.vr"; vs: "ao.vs"; vt: "ao.vt"; vu: "ao.vu"; vv: "ao.vv"; vw: "ao.vw"; vx: "ao.vx"; vy: "ao.vy"; vz: "ao.vz"; wa: "ao.wa"; wb: "ao.wb"; wc: "ao.wc"; wd: "ao.wd"; we: "ao.we"; wf: "ao.wf"; wg: "ao.wg"; wh: "ao.wh"; wi: "ao.wi"; wj: "ao.wj"; wk: "ao.wk"; wl: "ao.wl"; wm: "ao.wm"; wn: "ao.wn"; wo: "ao.wo"; wp: "ao.wp"; wq: "ao.wq"; wr: "ao.wr"; ws: "ao.ws"; wt: "ao.wt"; wu: "ao.wu"; wv: "ao.wv"; ww: "ao.ww"; wx: "ao.wx"; wy: "ao.wy"; wz: "ao.wz"; xa: "ao.xa"; xb: "ao.xb"; xc: "ao.xc"; xd: "ao.xd"; xe: "ao.xe"; xf: "ao.xf"; xg: "ao.xg"; xh: "ao.xh"; xi: "ao.xi"; xj: "ao.xj"; xk: "ao.xk"; xl: "ao.xl"; xm: "ao.xm"; xn: "ao.xn"; xo: "ao.xo"; xp: "ao.xp"; xq: "ao.xq"; xr: "ao.xr"; xs: "ao.xs"; xt: "ao.xt"; xu: "ao.xu"; xv: "ao.xv"; xw: "ao.xw"; xx: "ao.xx"; xy: "ao.xy"; xz: "ao.xz"; ya: "ao.ya"; yb: "ao.yb"; yc: "ao.yc"; yd: "ao.yd"; ye: "ao.ye"; yf: "ao.yf"; yg: "ao.yg"; yh: "ao.yh"; yi: "ao.yi"; yj: "ao.yj"; yk: "ao.yk"; yl: "ao.yl"; ym: "ao.ym"; yn: "ao.yn"; yo: "ao.yo"; yp: "ao.yp"; yq: "ao.yq"; yr: "ao.yr"; ys: "ao.ys"; yt: "ao.yt"; yu: "ao.yu"; yv: "ao.yv"; yw: "ao.yw"; yx: "ao.yx"; yy: "ao.yy"; yz: "ao.yz"; za: "ao.za"; zb: "ao.zb"; zc: "ao.zc"; zd: "ao.zd"; ze: "ao.ze"; zf: "ao.zf"; zg: "ao.zg"; zh: "ao.zh"; zi: "ao.zi"; zj: "ao.zj"; zk: "ao.zk"; zl: "ao.zl"; zm: "ao.zm"; zn: "ao.zn"; zo: "ao.zo"; zp: "ao.zp"; zq: "ao.zq"; zr: "ao.zr"; zs: "ao.zs"; zt: "ao.zt"; zu: "ao.zu"; zv: "ao.zv"; zw: "ao.zw"; zx: "ao.zx"; zy: "ao.zy"; zz: "ao.zz"; }; ap: { aa: "ap.aa"; ab: "ap.ab"; ac: "ap.ac"; ad: "ap.ad"; ae: "ap.ae"; af: "ap.af"; ag: "ap.ag"; ah: "ap.ah"; ai: "ap.ai"; aj: "ap.aj"; ak: "ap.ak"; al: "ap.al"; am: "ap.am"; an: "ap.an"; ao: "ap.ao"; ap: "ap.ap"; aq: "ap.aq"; ar: "ap.ar"; as: "ap.as"; at: "ap.at"; au: "ap.au"; av: "ap.av"; aw: "ap.aw"; ax: "ap.ax"; ay: "ap.ay"; az: "ap.az"; ba: "ap.ba"; bb: "ap.bb"; bc: "ap.bc"; bd: "ap.bd"; be: "ap.be"; bf: "ap.bf"; bg: "ap.bg"; bh: "ap.bh"; bi: "ap.bi"; bj: "ap.bj"; bk: "ap.bk"; bl: "ap.bl"; bm: "ap.bm"; bn: "ap.bn"; bo: "ap.bo"; bp: "ap.bp"; bq: "ap.bq"; br: "ap.br"; bs: "ap.bs"; bt: "ap.bt"; bu: "ap.bu"; bv: "ap.bv"; bw: "ap.bw"; bx: "ap.bx"; by: "ap.by"; bz: "ap.bz"; ca: "ap.ca"; cb: "ap.cb"; cc: "ap.cc"; cd: "ap.cd"; ce: "ap.ce"; cf: "ap.cf"; cg: "ap.cg"; ch: "ap.ch"; ci: "ap.ci"; cj: "ap.cj"; ck: "ap.ck"; cl: "ap.cl"; cm: "ap.cm"; cn: "ap.cn"; co: "ap.co"; cp: "ap.cp"; cq: "ap.cq"; cr: "ap.cr"; cs: "ap.cs"; ct: "ap.ct"; cu: "ap.cu"; cv: "ap.cv"; cw: "ap.cw"; cx: "ap.cx"; cy: "ap.cy"; cz: "ap.cz"; da: "ap.da"; db: "ap.db"; dc: "ap.dc"; dd: "ap.dd"; de: "ap.de"; df: "ap.df"; dg: "ap.dg"; dh: "ap.dh"; di: "ap.di"; dj: "ap.dj"; dk: "ap.dk"; dl: "ap.dl"; dm: "ap.dm"; dn: "ap.dn"; do: "ap.do"; dp: "ap.dp"; dq: "ap.dq"; dr: "ap.dr"; ds: "ap.ds"; dt: "ap.dt"; du: "ap.du"; dv: "ap.dv"; dw: "ap.dw"; dx: "ap.dx"; dy: "ap.dy"; dz: "ap.dz"; ea: "ap.ea"; eb: "ap.eb"; ec: "ap.ec"; ed: "ap.ed"; ee: "ap.ee"; ef: "ap.ef"; eg: "ap.eg"; eh: "ap.eh"; ei: "ap.ei"; ej: "ap.ej"; ek: "ap.ek"; el: "ap.el"; em: "ap.em"; en: "ap.en"; eo: "ap.eo"; ep: "ap.ep"; eq: "ap.eq"; er: "ap.er"; es: "ap.es"; et: "ap.et"; eu: "ap.eu"; ev: "ap.ev"; ew: "ap.ew"; ex: "ap.ex"; ey: "ap.ey"; ez: "ap.ez"; fa: "ap.fa"; fb: "ap.fb"; fc: "ap.fc"; fd: "ap.fd"; fe: "ap.fe"; ff: "ap.ff"; fg: "ap.fg"; fh: "ap.fh"; fi: "ap.fi"; fj: "ap.fj"; fk: "ap.fk"; fl: "ap.fl"; fm: "ap.fm"; fn: "ap.fn"; fo: "ap.fo"; fp: "ap.fp"; fq: "ap.fq"; fr: "ap.fr"; fs: "ap.fs"; ft: "ap.ft"; fu: "ap.fu"; fv: "ap.fv"; fw: "ap.fw"; fx: "ap.fx"; fy: "ap.fy"; fz: "ap.fz"; ga: "ap.ga"; gb: "ap.gb"; gc: "ap.gc"; gd: "ap.gd"; ge: "ap.ge"; gf: "ap.gf"; gg: "ap.gg"; gh: "ap.gh"; gi: "ap.gi"; gj: "ap.gj"; gk: "ap.gk"; gl: "ap.gl"; gm: "ap.gm"; gn: "ap.gn"; go: "ap.go"; gp: "ap.gp"; gq: "ap.gq"; gr: "ap.gr"; gs: "ap.gs"; gt: "ap.gt"; gu: "ap.gu"; gv: "ap.gv"; gw: "ap.gw"; gx: "ap.gx"; gy: "ap.gy"; gz: "ap.gz"; ha: "ap.ha"; hb: "ap.hb"; hc: "ap.hc"; hd: "ap.hd"; he: "ap.he"; hf: "ap.hf"; hg: "ap.hg"; hh: "ap.hh"; hi: "ap.hi"; hj: "ap.hj"; hk: "ap.hk"; hl: "ap.hl"; hm: "ap.hm"; hn: "ap.hn"; ho: "ap.ho"; hp: "ap.hp"; hq: "ap.hq"; hr: "ap.hr"; hs: "ap.hs"; ht: "ap.ht"; hu: "ap.hu"; hv: "ap.hv"; hw: "ap.hw"; hx: "ap.hx"; hy: "ap.hy"; hz: "ap.hz"; ia: "ap.ia"; ib: "ap.ib"; ic: "ap.ic"; id: "ap.id"; ie: "ap.ie"; if: "ap.if"; ig: "ap.ig"; ih: "ap.ih"; ii: "ap.ii"; ij: "ap.ij"; ik: "ap.ik"; il: "ap.il"; im: "ap.im"; in: "ap.in"; io: "ap.io"; ip: "ap.ip"; iq: "ap.iq"; ir: "ap.ir"; is: "ap.is"; it: "ap.it"; iu: "ap.iu"; iv: "ap.iv"; iw: "ap.iw"; ix: "ap.ix"; iy: "ap.iy"; iz: "ap.iz"; ja: "ap.ja"; jb: "ap.jb"; jc: "ap.jc"; jd: "ap.jd"; je: "ap.je"; jf: "ap.jf"; jg: "ap.jg"; jh: "ap.jh"; ji: "ap.ji"; jj: "ap.jj"; jk: "ap.jk"; jl: "ap.jl"; jm: "ap.jm"; jn: "ap.jn"; jo: "ap.jo"; jp: "ap.jp"; jq: "ap.jq"; jr: "ap.jr"; js: "ap.js"; jt: "ap.jt"; ju: "ap.ju"; jv: "ap.jv"; jw: "ap.jw"; jx: "ap.jx"; jy: "ap.jy"; jz: "ap.jz"; ka: "ap.ka"; kb: "ap.kb"; kc: "ap.kc"; kd: "ap.kd"; ke: "ap.ke"; kf: "ap.kf"; kg: "ap.kg"; kh: "ap.kh"; ki: "ap.ki"; kj: "ap.kj"; kk: "ap.kk"; kl: "ap.kl"; km: "ap.km"; kn: "ap.kn"; ko: "ap.ko"; kp: "ap.kp"; kq: "ap.kq"; kr: "ap.kr"; ks: "ap.ks"; kt: "ap.kt"; ku: "ap.ku"; kv: "ap.kv"; kw: "ap.kw"; kx: "ap.kx"; ky: "ap.ky"; kz: "ap.kz"; la: "ap.la"; lb: "ap.lb"; lc: "ap.lc"; ld: "ap.ld"; le: "ap.le"; lf: "ap.lf"; lg: "ap.lg"; lh: "ap.lh"; li: "ap.li"; lj: "ap.lj"; lk: "ap.lk"; ll: "ap.ll"; lm: "ap.lm"; ln: "ap.ln"; lo: "ap.lo"; lp: "ap.lp"; lq: "ap.lq"; lr: "ap.lr"; ls: "ap.ls"; lt: "ap.lt"; lu: "ap.lu"; lv: "ap.lv"; lw: "ap.lw"; lx: "ap.lx"; ly: "ap.ly"; lz: "ap.lz"; ma: "ap.ma"; mb: "ap.mb"; mc: "ap.mc"; md: "ap.md"; me: "ap.me"; mf: "ap.mf"; mg: "ap.mg"; mh: "ap.mh"; mi: "ap.mi"; mj: "ap.mj"; mk: "ap.mk"; ml: "ap.ml"; mm: "ap.mm"; mn: "ap.mn"; mo: "ap.mo"; mp: "ap.mp"; mq: "ap.mq"; mr: "ap.mr"; ms: "ap.ms"; mt: "ap.mt"; mu: "ap.mu"; mv: "ap.mv"; mw: "ap.mw"; mx: "ap.mx"; my: "ap.my"; mz: "ap.mz"; na: "ap.na"; nb: "ap.nb"; nc: "ap.nc"; nd: "ap.nd"; ne: "ap.ne"; nf: "ap.nf"; ng: "ap.ng"; nh: "ap.nh"; ni: "ap.ni"; nj: "ap.nj"; nk: "ap.nk"; nl: "ap.nl"; nm: "ap.nm"; nn: "ap.nn"; no: "ap.no"; np: "ap.np"; nq: "ap.nq"; nr: "ap.nr"; ns: "ap.ns"; nt: "ap.nt"; nu: "ap.nu"; nv: "ap.nv"; nw: "ap.nw"; nx: "ap.nx"; ny: "ap.ny"; nz: "ap.nz"; oa: "ap.oa"; ob: "ap.ob"; oc: "ap.oc"; od: "ap.od"; oe: "ap.oe"; of: "ap.of"; og: "ap.og"; oh: "ap.oh"; oi: "ap.oi"; oj: "ap.oj"; ok: "ap.ok"; ol: "ap.ol"; om: "ap.om"; on: "ap.on"; oo: "ap.oo"; op: "ap.op"; oq: "ap.oq"; or: "ap.or"; os: "ap.os"; ot: "ap.ot"; ou: "ap.ou"; ov: "ap.ov"; ow: "ap.ow"; ox: "ap.ox"; oy: "ap.oy"; oz: "ap.oz"; pa: "ap.pa"; pb: "ap.pb"; pc: "ap.pc"; pd: "ap.pd"; pe: "ap.pe"; pf: "ap.pf"; pg: "ap.pg"; ph: "ap.ph"; pi: "ap.pi"; pj: "ap.pj"; pk: "ap.pk"; pl: "ap.pl"; pm: "ap.pm"; pn: "ap.pn"; po: "ap.po"; pp: "ap.pp"; pq: "ap.pq"; pr: "ap.pr"; ps: "ap.ps"; pt: "ap.pt"; pu: "ap.pu"; pv: "ap.pv"; pw: "ap.pw"; px: "ap.px"; py: "ap.py"; pz: "ap.pz"; qa: "ap.qa"; qb: "ap.qb"; qc: "ap.qc"; qd: "ap.qd"; qe: "ap.qe"; qf: "ap.qf"; qg: "ap.qg"; qh: "ap.qh"; qi: "ap.qi"; qj: "ap.qj"; qk: "ap.qk"; ql: "ap.ql"; qm: "ap.qm"; qn: "ap.qn"; qo: "ap.qo"; qp: "ap.qp"; qq: "ap.qq"; qr: "ap.qr"; qs: "ap.qs"; qt: "ap.qt"; qu: "ap.qu"; qv: "ap.qv"; qw: "ap.qw"; qx: "ap.qx"; qy: "ap.qy"; qz: "ap.qz"; ra: "ap.ra"; rb: "ap.rb"; rc: "ap.rc"; rd: "ap.rd"; re: "ap.re"; rf: "ap.rf"; rg: "ap.rg"; rh: "ap.rh"; ri: "ap.ri"; rj: "ap.rj"; rk: "ap.rk"; rl: "ap.rl"; rm: "ap.rm"; rn: "ap.rn"; ro: "ap.ro"; rp: "ap.rp"; rq: "ap.rq"; rr: "ap.rr"; rs: "ap.rs"; rt: "ap.rt"; ru: "ap.ru"; rv: "ap.rv"; rw: "ap.rw"; rx: "ap.rx"; ry: "ap.ry"; rz: "ap.rz"; sa: "ap.sa"; sb: "ap.sb"; sc: "ap.sc"; sd: "ap.sd"; se: "ap.se"; sf: "ap.sf"; sg: "ap.sg"; sh: "ap.sh"; si: "ap.si"; sj: "ap.sj"; sk: "ap.sk"; sl: "ap.sl"; sm: "ap.sm"; sn: "ap.sn"; so: "ap.so"; sp: "ap.sp"; sq: "ap.sq"; sr: "ap.sr"; ss: "ap.ss"; st: "ap.st"; su: "ap.su"; sv: "ap.sv"; sw: "ap.sw"; sx: "ap.sx"; sy: "ap.sy"; sz: "ap.sz"; ta: "ap.ta"; tb: "ap.tb"; tc: "ap.tc"; td: "ap.td"; te: "ap.te"; tf: "ap.tf"; tg: "ap.tg"; th: "ap.th"; ti: "ap.ti"; tj: "ap.tj"; tk: "ap.tk"; tl: "ap.tl"; tm: "ap.tm"; tn: "ap.tn"; to: "ap.to"; tp: "ap.tp"; tq: "ap.tq"; tr: "ap.tr"; ts: "ap.ts"; tt: "ap.tt"; tu: "ap.tu"; tv: "ap.tv"; tw: "ap.tw"; tx: "ap.tx"; ty: "ap.ty"; tz: "ap.tz"; ua: "ap.ua"; ub: "ap.ub"; uc: "ap.uc"; ud: "ap.ud"; ue: "ap.ue"; uf: "ap.uf"; ug: "ap.ug"; uh: "ap.uh"; ui: "ap.ui"; uj: "ap.uj"; uk: "ap.uk"; ul: "ap.ul"; um: "ap.um"; un: "ap.un"; uo: "ap.uo"; up: "ap.up"; uq: "ap.uq"; ur: "ap.ur"; us: "ap.us"; ut: "ap.ut"; uu: "ap.uu"; uv: "ap.uv"; uw: "ap.uw"; ux: "ap.ux"; uy: "ap.uy"; uz: "ap.uz"; va: "ap.va"; vb: "ap.vb"; vc: "ap.vc"; vd: "ap.vd"; ve: "ap.ve"; vf: "ap.vf"; vg: "ap.vg"; vh: "ap.vh"; vi: "ap.vi"; vj: "ap.vj"; vk: "ap.vk"; vl: "ap.vl"; vm: "ap.vm"; vn: "ap.vn"; vo: "ap.vo"; vp: "ap.vp"; vq: "ap.vq"; vr: "ap.vr"; vs: "ap.vs"; vt: "ap.vt"; vu: "ap.vu"; vv: "ap.vv"; vw: "ap.vw"; vx: "ap.vx"; vy: "ap.vy"; vz: "ap.vz"; wa: "ap.wa"; wb: "ap.wb"; wc: "ap.wc"; wd: "ap.wd"; we: "ap.we"; wf: "ap.wf"; wg: "ap.wg"; wh: "ap.wh"; wi: "ap.wi"; wj: "ap.wj"; wk: "ap.wk"; wl: "ap.wl"; wm: "ap.wm"; wn: "ap.wn"; wo: "ap.wo"; wp: "ap.wp"; wq: "ap.wq"; wr: "ap.wr"; ws: "ap.ws"; wt: "ap.wt"; wu: "ap.wu"; wv: "ap.wv"; ww: "ap.ww"; wx: "ap.wx"; wy: "ap.wy"; wz: "ap.wz"; xa: "ap.xa"; xb: "ap.xb"; xc: "ap.xc"; xd: "ap.xd"; xe: "ap.xe"; xf: "ap.xf"; xg: "ap.xg"; xh: "ap.xh"; xi: "ap.xi"; xj: "ap.xj"; xk: "ap.xk"; xl: "ap.xl"; xm: "ap.xm"; xn: "ap.xn"; xo: "ap.xo"; xp: "ap.xp"; xq: "ap.xq"; xr: "ap.xr"; xs: "ap.xs"; xt: "ap.xt"; xu: "ap.xu"; xv: "ap.xv"; xw: "ap.xw"; xx: "ap.xx"; xy: "ap.xy"; xz: "ap.xz"; ya: "ap.ya"; yb: "ap.yb"; yc: "ap.yc"; yd: "ap.yd"; ye: "ap.ye"; yf: "ap.yf"; yg: "ap.yg"; yh: "ap.yh"; yi: "ap.yi"; yj: "ap.yj"; yk: "ap.yk"; yl: "ap.yl"; ym: "ap.ym"; yn: "ap.yn"; yo: "ap.yo"; yp: "ap.yp"; yq: "ap.yq"; yr: "ap.yr"; ys: "ap.ys"; yt: "ap.yt"; yu: "ap.yu"; yv: "ap.yv"; yw: "ap.yw"; yx: "ap.yx"; yy: "ap.yy"; yz: "ap.yz"; za: "ap.za"; zb: "ap.zb"; zc: "ap.zc"; zd: "ap.zd"; ze: "ap.ze"; zf: "ap.zf"; zg: "ap.zg"; zh: "ap.zh"; zi: "ap.zi"; zj: "ap.zj"; zk: "ap.zk"; zl: "ap.zl"; zm: "ap.zm"; zn: "ap.zn"; zo: "ap.zo"; zp: "ap.zp"; zq: "ap.zq"; zr: "ap.zr"; zs: "ap.zs"; zt: "ap.zt"; zu: "ap.zu"; zv: "ap.zv"; zw: "ap.zw"; zx: "ap.zx"; zy: "ap.zy"; zz: "ap.zz"; }; aq: { aa: "aq.aa"; ab: "aq.ab"; ac: "aq.ac"; ad: "aq.ad"; ae: "aq.ae"; af: "aq.af"; ag: "aq.ag"; ah: "aq.ah"; ai: "aq.ai"; aj: "aq.aj"; ak: "aq.ak"; al: "aq.al"; am: "aq.am"; an: "aq.an"; ao: "aq.ao"; ap: "aq.ap"; aq: "aq.aq"; ar: "aq.ar"; as: "aq.as"; at: "aq.at"; au: "aq.au"; av: "aq.av"; aw: "aq.aw"; ax: "aq.ax"; ay: "aq.ay"; az: "aq.az"; ba: "aq.ba"; bb: "aq.bb"; bc: "aq.bc"; bd: "aq.bd"; be: "aq.be"; bf: "aq.bf"; bg: "aq.bg"; bh: "aq.bh"; bi: "aq.bi"; bj: "aq.bj"; bk: "aq.bk"; bl: "aq.bl"; bm: "aq.bm"; bn: "aq.bn"; bo: "aq.bo"; bp: "aq.bp"; bq: "aq.bq"; br: "aq.br"; bs: "aq.bs"; bt: "aq.bt"; bu: "aq.bu"; bv: "aq.bv"; bw: "aq.bw"; bx: "aq.bx"; by: "aq.by"; bz: "aq.bz"; ca: "aq.ca"; cb: "aq.cb"; cc: "aq.cc"; cd: "aq.cd"; ce: "aq.ce"; cf: "aq.cf"; cg: "aq.cg"; ch: "aq.ch"; ci: "aq.ci"; cj: "aq.cj"; ck: "aq.ck"; cl: "aq.cl"; cm: "aq.cm"; cn: "aq.cn"; co: "aq.co"; cp: "aq.cp"; cq: "aq.cq"; cr: "aq.cr"; cs: "aq.cs"; ct: "aq.ct"; cu: "aq.cu"; cv: "aq.cv"; cw: "aq.cw"; cx: "aq.cx"; cy: "aq.cy"; cz: "aq.cz"; da: "aq.da"; db: "aq.db"; dc: "aq.dc"; dd: "aq.dd"; de: "aq.de"; df: "aq.df"; dg: "aq.dg"; dh: "aq.dh"; di: "aq.di"; dj: "aq.dj"; dk: "aq.dk"; dl: "aq.dl"; dm: "aq.dm"; dn: "aq.dn"; do: "aq.do"; dp: "aq.dp"; dq: "aq.dq"; dr: "aq.dr"; ds: "aq.ds"; dt: "aq.dt"; du: "aq.du"; dv: "aq.dv"; dw: "aq.dw"; dx: "aq.dx"; dy: "aq.dy"; dz: "aq.dz"; ea: "aq.ea"; eb: "aq.eb"; ec: "aq.ec"; ed: "aq.ed"; ee: "aq.ee"; ef: "aq.ef"; eg: "aq.eg"; eh: "aq.eh"; ei: "aq.ei"; ej: "aq.ej"; ek: "aq.ek"; el: "aq.el"; em: "aq.em"; en: "aq.en"; eo: "aq.eo"; ep: "aq.ep"; eq: "aq.eq"; er: "aq.er"; es: "aq.es"; et: "aq.et"; eu: "aq.eu"; ev: "aq.ev"; ew: "aq.ew"; ex: "aq.ex"; ey: "aq.ey"; ez: "aq.ez"; fa: "aq.fa"; fb: "aq.fb"; fc: "aq.fc"; fd: "aq.fd"; fe: "aq.fe"; ff: "aq.ff"; fg: "aq.fg"; fh: "aq.fh"; fi: "aq.fi"; fj: "aq.fj"; fk: "aq.fk"; fl: "aq.fl"; fm: "aq.fm"; fn: "aq.fn"; fo: "aq.fo"; fp: "aq.fp"; fq: "aq.fq"; fr: "aq.fr"; fs: "aq.fs"; ft: "aq.ft"; fu: "aq.fu"; fv: "aq.fv"; fw: "aq.fw"; fx: "aq.fx"; fy: "aq.fy"; fz: "aq.fz"; ga: "aq.ga"; gb: "aq.gb"; gc: "aq.gc"; gd: "aq.gd"; ge: "aq.ge"; gf: "aq.gf"; gg: "aq.gg"; gh: "aq.gh"; gi: "aq.gi"; gj: "aq.gj"; gk: "aq.gk"; gl: "aq.gl"; gm: "aq.gm"; gn: "aq.gn"; go: "aq.go"; gp: "aq.gp"; gq: "aq.gq"; gr: "aq.gr"; gs: "aq.gs"; gt: "aq.gt"; gu: "aq.gu"; gv: "aq.gv"; gw: "aq.gw"; gx: "aq.gx"; gy: "aq.gy"; gz: "aq.gz"; ha: "aq.ha"; hb: "aq.hb"; hc: "aq.hc"; hd: "aq.hd"; he: "aq.he"; hf: "aq.hf"; hg: "aq.hg"; hh: "aq.hh"; hi: "aq.hi"; hj: "aq.hj"; hk: "aq.hk"; hl: "aq.hl"; hm: "aq.hm"; hn: "aq.hn"; ho: "aq.ho"; hp: "aq.hp"; hq: "aq.hq"; hr: "aq.hr"; hs: "aq.hs"; ht: "aq.ht"; hu: "aq.hu"; hv: "aq.hv"; hw: "aq.hw"; hx: "aq.hx"; hy: "aq.hy"; hz: "aq.hz"; ia: "aq.ia"; ib: "aq.ib"; ic: "aq.ic"; id: "aq.id"; ie: "aq.ie"; if: "aq.if"; ig: "aq.ig"; ih: "aq.ih"; ii: "aq.ii"; ij: "aq.ij"; ik: "aq.ik"; il: "aq.il"; im: "aq.im"; in: "aq.in"; io: "aq.io"; ip: "aq.ip"; iq: "aq.iq"; ir: "aq.ir"; is: "aq.is"; it: "aq.it"; iu: "aq.iu"; iv: "aq.iv"; iw: "aq.iw"; ix: "aq.ix"; iy: "aq.iy"; iz: "aq.iz"; ja: "aq.ja"; jb: "aq.jb"; jc: "aq.jc"; jd: "aq.jd"; je: "aq.je"; jf: "aq.jf"; jg: "aq.jg"; jh: "aq.jh"; ji: "aq.ji"; jj: "aq.jj"; jk: "aq.jk"; jl: "aq.jl"; jm: "aq.jm"; jn: "aq.jn"; jo: "aq.jo"; jp: "aq.jp"; jq: "aq.jq"; jr: "aq.jr"; js: "aq.js"; jt: "aq.jt"; ju: "aq.ju"; jv: "aq.jv"; jw: "aq.jw"; jx: "aq.jx"; jy: "aq.jy"; jz: "aq.jz"; ka: "aq.ka"; kb: "aq.kb"; kc: "aq.kc"; kd: "aq.kd"; ke: "aq.ke"; kf: "aq.kf"; kg: "aq.kg"; kh: "aq.kh"; ki: "aq.ki"; kj: "aq.kj"; kk: "aq.kk"; kl: "aq.kl"; km: "aq.km"; kn: "aq.kn"; ko: "aq.ko"; kp: "aq.kp"; kq: "aq.kq"; kr: "aq.kr"; ks: "aq.ks"; kt: "aq.kt"; ku: "aq.ku"; kv: "aq.kv"; kw: "aq.kw"; kx: "aq.kx"; ky: "aq.ky"; kz: "aq.kz"; la: "aq.la"; lb: "aq.lb"; lc: "aq.lc"; ld: "aq.ld"; le: "aq.le"; lf: "aq.lf"; lg: "aq.lg"; lh: "aq.lh"; li: "aq.li"; lj: "aq.lj"; lk: "aq.lk"; ll: "aq.ll"; lm: "aq.lm"; ln: "aq.ln"; lo: "aq.lo"; lp: "aq.lp"; lq: "aq.lq"; lr: "aq.lr"; ls: "aq.ls"; lt: "aq.lt"; lu: "aq.lu"; lv: "aq.lv"; lw: "aq.lw"; lx: "aq.lx"; ly: "aq.ly"; lz: "aq.lz"; ma: "aq.ma"; mb: "aq.mb"; mc: "aq.mc"; md: "aq.md"; me: "aq.me"; mf: "aq.mf"; mg: "aq.mg"; mh: "aq.mh"; mi: "aq.mi"; mj: "aq.mj"; mk: "aq.mk"; ml: "aq.ml"; mm: "aq.mm"; mn: "aq.mn"; mo: "aq.mo"; mp: "aq.mp"; mq: "aq.mq"; mr: "aq.mr"; ms: "aq.ms"; mt: "aq.mt"; mu: "aq.mu"; mv: "aq.mv"; mw: "aq.mw"; mx: "aq.mx"; my: "aq.my"; mz: "aq.mz"; na: "aq.na"; nb: "aq.nb"; nc: "aq.nc"; nd: "aq.nd"; ne: "aq.ne"; nf: "aq.nf"; ng: "aq.ng"; nh: "aq.nh"; ni: "aq.ni"; nj: "aq.nj"; nk: "aq.nk"; nl: "aq.nl"; nm: "aq.nm"; nn: "aq.nn"; no: "aq.no"; np: "aq.np"; nq: "aq.nq"; nr: "aq.nr"; ns: "aq.ns"; nt: "aq.nt"; nu: "aq.nu"; nv: "aq.nv"; nw: "aq.nw"; nx: "aq.nx"; ny: "aq.ny"; nz: "aq.nz"; oa: "aq.oa"; ob: "aq.ob"; oc: "aq.oc"; od: "aq.od"; oe: "aq.oe"; of: "aq.of"; og: "aq.og"; oh: "aq.oh"; oi: "aq.oi"; oj: "aq.oj"; ok: "aq.ok"; ol: "aq.ol"; om: "aq.om"; on: "aq.on"; oo: "aq.oo"; op: "aq.op"; oq: "aq.oq"; or: "aq.or"; os: "aq.os"; ot: "aq.ot"; ou: "aq.ou"; ov: "aq.ov"; ow: "aq.ow"; ox: "aq.ox"; oy: "aq.oy"; oz: "aq.oz"; pa: "aq.pa"; pb: "aq.pb"; pc: "aq.pc"; pd: "aq.pd"; pe: "aq.pe"; pf: "aq.pf"; pg: "aq.pg"; ph: "aq.ph"; pi: "aq.pi"; pj: "aq.pj"; pk: "aq.pk"; pl: "aq.pl"; pm: "aq.pm"; pn: "aq.pn"; po: "aq.po"; pp: "aq.pp"; pq: "aq.pq"; pr: "aq.pr"; ps: "aq.ps"; pt: "aq.pt"; pu: "aq.pu"; pv: "aq.pv"; pw: "aq.pw"; px: "aq.px"; py: "aq.py"; pz: "aq.pz"; qa: "aq.qa"; qb: "aq.qb"; qc: "aq.qc"; qd: "aq.qd"; qe: "aq.qe"; qf: "aq.qf"; qg: "aq.qg"; qh: "aq.qh"; qi: "aq.qi"; qj: "aq.qj"; qk: "aq.qk"; ql: "aq.ql"; qm: "aq.qm"; qn: "aq.qn"; qo: "aq.qo"; qp: "aq.qp"; qq: "aq.qq"; qr: "aq.qr"; qs: "aq.qs"; qt: "aq.qt"; qu: "aq.qu"; qv: "aq.qv"; qw: "aq.qw"; qx: "aq.qx"; qy: "aq.qy"; qz: "aq.qz"; ra: "aq.ra"; rb: "aq.rb"; rc: "aq.rc"; rd: "aq.rd"; re: "aq.re"; rf: "aq.rf"; rg: "aq.rg"; rh: "aq.rh"; ri: "aq.ri"; rj: "aq.rj"; rk: "aq.rk"; rl: "aq.rl"; rm: "aq.rm"; rn: "aq.rn"; ro: "aq.ro"; rp: "aq.rp"; rq: "aq.rq"; rr: "aq.rr"; rs: "aq.rs"; rt: "aq.rt"; ru: "aq.ru"; rv: "aq.rv"; rw: "aq.rw"; rx: "aq.rx"; ry: "aq.ry"; rz: "aq.rz"; sa: "aq.sa"; sb: "aq.sb"; sc: "aq.sc"; sd: "aq.sd"; se: "aq.se"; sf: "aq.sf"; sg: "aq.sg"; sh: "aq.sh"; si: "aq.si"; sj: "aq.sj"; sk: "aq.sk"; sl: "aq.sl"; sm: "aq.sm"; sn: "aq.sn"; so: "aq.so"; sp: "aq.sp"; sq: "aq.sq"; sr: "aq.sr"; ss: "aq.ss"; st: "aq.st"; su: "aq.su"; sv: "aq.sv"; sw: "aq.sw"; sx: "aq.sx"; sy: "aq.sy"; sz: "aq.sz"; ta: "aq.ta"; tb: "aq.tb"; tc: "aq.tc"; td: "aq.td"; te: "aq.te"; tf: "aq.tf"; tg: "aq.tg"; th: "aq.th"; ti: "aq.ti"; tj: "aq.tj"; tk: "aq.tk"; tl: "aq.tl"; tm: "aq.tm"; tn: "aq.tn"; to: "aq.to"; tp: "aq.tp"; tq: "aq.tq"; tr: "aq.tr"; ts: "aq.ts"; tt: "aq.tt"; tu: "aq.tu"; tv: "aq.tv"; tw: "aq.tw"; tx: "aq.tx"; ty: "aq.ty"; tz: "aq.tz"; ua: "aq.ua"; ub: "aq.ub"; uc: "aq.uc"; ud: "aq.ud"; ue: "aq.ue"; uf: "aq.uf"; ug: "aq.ug"; uh: "aq.uh"; ui: "aq.ui"; uj: "aq.uj"; uk: "aq.uk"; ul: "aq.ul"; um: "aq.um"; un: "aq.un"; uo: "aq.uo"; up: "aq.up"; uq: "aq.uq"; ur: "aq.ur"; us: "aq.us"; ut: "aq.ut"; uu: "aq.uu"; uv: "aq.uv"; uw: "aq.uw"; ux: "aq.ux"; uy: "aq.uy"; uz: "aq.uz"; va: "aq.va"; vb: "aq.vb"; vc: "aq.vc"; vd: "aq.vd"; ve: "aq.ve"; vf: "aq.vf"; vg: "aq.vg"; vh: "aq.vh"; vi: "aq.vi"; vj: "aq.vj"; vk: "aq.vk"; vl: "aq.vl"; vm: "aq.vm"; vn: "aq.vn"; vo: "aq.vo"; vp: "aq.vp"; vq: "aq.vq"; vr: "aq.vr"; vs: "aq.vs"; vt: "aq.vt"; vu: "aq.vu"; vv: "aq.vv"; vw: "aq.vw"; vx: "aq.vx"; vy: "aq.vy"; vz: "aq.vz"; wa: "aq.wa"; wb: "aq.wb"; wc: "aq.wc"; wd: "aq.wd"; we: "aq.we"; wf: "aq.wf"; wg: "aq.wg"; wh: "aq.wh"; wi: "aq.wi"; wj: "aq.wj"; wk: "aq.wk"; wl: "aq.wl"; wm: "aq.wm"; wn: "aq.wn"; wo: "aq.wo"; wp: "aq.wp"; wq: "aq.wq"; wr: "aq.wr"; ws: "aq.ws"; wt: "aq.wt"; wu: "aq.wu"; wv: "aq.wv"; ww: "aq.ww"; wx: "aq.wx"; wy: "aq.wy"; wz: "aq.wz"; xa: "aq.xa"; xb: "aq.xb"; xc: "aq.xc"; xd: "aq.xd"; xe: "aq.xe"; xf: "aq.xf"; xg: "aq.xg"; xh: "aq.xh"; xi: "aq.xi"; xj: "aq.xj"; xk: "aq.xk"; xl: "aq.xl"; xm: "aq.xm"; xn: "aq.xn"; xo: "aq.xo"; xp: "aq.xp"; xq: "aq.xq"; xr: "aq.xr"; xs: "aq.xs"; xt: "aq.xt"; xu: "aq.xu"; xv: "aq.xv"; xw: "aq.xw"; xx: "aq.xx"; xy: "aq.xy"; xz: "aq.xz"; ya: "aq.ya"; yb: "aq.yb"; yc: "aq.yc"; yd: "aq.yd"; ye: "aq.ye"; yf: "aq.yf"; yg: "aq.yg"; yh: "aq.yh"; yi: "aq.yi"; yj: "aq.yj"; yk: "aq.yk"; yl: "aq.yl"; ym: "aq.ym"; yn: "aq.yn"; yo: "aq.yo"; yp: "aq.yp"; yq: "aq.yq"; yr: "aq.yr"; ys: "aq.ys"; yt: "aq.yt"; yu: "aq.yu"; yv: "aq.yv"; yw: "aq.yw"; yx: "aq.yx"; yy: "aq.yy"; yz: "aq.yz"; za: "aq.za"; zb: "aq.zb"; zc: "aq.zc"; zd: "aq.zd"; ze: "aq.ze"; zf: "aq.zf"; zg: "aq.zg"; zh: "aq.zh"; zi: "aq.zi"; zj: "aq.zj"; zk: "aq.zk"; zl: "aq.zl"; zm: "aq.zm"; zn: "aq.zn"; zo: "aq.zo"; zp: "aq.zp"; zq: "aq.zq"; zr: "aq.zr"; zs: "aq.zs"; zt: "aq.zt"; zu: "aq.zu"; zv: "aq.zv"; zw: "aq.zw"; zx: "aq.zx"; zy: "aq.zy"; zz: "aq.zz"; }; ar: { aa: "ar.aa"; ab: "ar.ab"; ac: "ar.ac"; ad: "ar.ad"; ae: "ar.ae"; af: "ar.af"; ag: "ar.ag"; ah: "ar.ah"; ai: "ar.ai"; aj: "ar.aj"; ak: "ar.ak"; al: "ar.al"; am: "ar.am"; an: "ar.an"; ao: "ar.ao"; ap: "ar.ap"; aq: "ar.aq"; ar: "ar.ar"; as: "ar.as"; at: "ar.at"; au: "ar.au"; av: "ar.av"; aw: "ar.aw"; ax: "ar.ax"; ay: "ar.ay"; az: "ar.az"; ba: "ar.ba"; bb: "ar.bb"; bc: "ar.bc"; bd: "ar.bd"; be: "ar.be"; bf: "ar.bf"; bg: "ar.bg"; bh: "ar.bh"; bi: "ar.bi"; bj: "ar.bj"; bk: "ar.bk"; bl: "ar.bl"; bm: "ar.bm"; bn: "ar.bn"; bo: "ar.bo"; bp: "ar.bp"; bq: "ar.bq"; br: "ar.br"; bs: "ar.bs"; bt: "ar.bt"; bu: "ar.bu"; bv: "ar.bv"; bw: "ar.bw"; bx: "ar.bx"; by: "ar.by"; bz: "ar.bz"; ca: "ar.ca"; cb: "ar.cb"; cc: "ar.cc"; cd: "ar.cd"; ce: "ar.ce"; cf: "ar.cf"; cg: "ar.cg"; ch: "ar.ch"; ci: "ar.ci"; cj: "ar.cj"; ck: "ar.ck"; cl: "ar.cl"; cm: "ar.cm"; cn: "ar.cn"; co: "ar.co"; cp: "ar.cp"; cq: "ar.cq"; cr: "ar.cr"; cs: "ar.cs"; ct: "ar.ct"; cu: "ar.cu"; cv: "ar.cv"; cw: "ar.cw"; cx: "ar.cx"; cy: "ar.cy"; cz: "ar.cz"; da: "ar.da"; db: "ar.db"; dc: "ar.dc"; dd: "ar.dd"; de: "ar.de"; df: "ar.df"; dg: "ar.dg"; dh: "ar.dh"; di: "ar.di"; dj: "ar.dj"; dk: "ar.dk"; dl: "ar.dl"; dm: "ar.dm"; dn: "ar.dn"; do: "ar.do"; dp: "ar.dp"; dq: "ar.dq"; dr: "ar.dr"; ds: "ar.ds"; dt: "ar.dt"; du: "ar.du"; dv: "ar.dv"; dw: "ar.dw"; dx: "ar.dx"; dy: "ar.dy"; dz: "ar.dz"; ea: "ar.ea"; eb: "ar.eb"; ec: "ar.ec"; ed: "ar.ed"; ee: "ar.ee"; ef: "ar.ef"; eg: "ar.eg"; eh: "ar.eh"; ei: "ar.ei"; ej: "ar.ej"; ek: "ar.ek"; el: "ar.el"; em: "ar.em"; en: "ar.en"; eo: "ar.eo"; ep: "ar.ep"; eq: "ar.eq"; er: "ar.er"; es: "ar.es"; et: "ar.et"; eu: "ar.eu"; ev: "ar.ev"; ew: "ar.ew"; ex: "ar.ex"; ey: "ar.ey"; ez: "ar.ez"; fa: "ar.fa"; fb: "ar.fb"; fc: "ar.fc"; fd: "ar.fd"; fe: "ar.fe"; ff: "ar.ff"; fg: "ar.fg"; fh: "ar.fh"; fi: "ar.fi"; fj: "ar.fj"; fk: "ar.fk"; fl: "ar.fl"; fm: "ar.fm"; fn: "ar.fn"; fo: "ar.fo"; fp: "ar.fp"; fq: "ar.fq"; fr: "ar.fr"; fs: "ar.fs"; ft: "ar.ft"; fu: "ar.fu"; fv: "ar.fv"; fw: "ar.fw"; fx: "ar.fx"; fy: "ar.fy"; fz: "ar.fz"; ga: "ar.ga"; gb: "ar.gb"; gc: "ar.gc"; gd: "ar.gd"; ge: "ar.ge"; gf: "ar.gf"; gg: "ar.gg"; gh: "ar.gh"; gi: "ar.gi"; gj: "ar.gj"; gk: "ar.gk"; gl: "ar.gl"; gm: "ar.gm"; gn: "ar.gn"; go: "ar.go"; gp: "ar.gp"; gq: "ar.gq"; gr: "ar.gr"; gs: "ar.gs"; gt: "ar.gt"; gu: "ar.gu"; gv: "ar.gv"; gw: "ar.gw"; gx: "ar.gx"; gy: "ar.gy"; gz: "ar.gz"; ha: "ar.ha"; hb: "ar.hb"; hc: "ar.hc"; hd: "ar.hd"; he: "ar.he"; hf: "ar.hf"; hg: "ar.hg"; hh: "ar.hh"; hi: "ar.hi"; hj: "ar.hj"; hk: "ar.hk"; hl: "ar.hl"; hm: "ar.hm"; hn: "ar.hn"; ho: "ar.ho"; hp: "ar.hp"; hq: "ar.hq"; hr: "ar.hr"; hs: "ar.hs"; ht: "ar.ht"; hu: "ar.hu"; hv: "ar.hv"; hw: "ar.hw"; hx: "ar.hx"; hy: "ar.hy"; hz: "ar.hz"; ia: "ar.ia"; ib: "ar.ib"; ic: "ar.ic"; id: "ar.id"; ie: "ar.ie"; if: "ar.if"; ig: "ar.ig"; ih: "ar.ih"; ii: "ar.ii"; ij: "ar.ij"; ik: "ar.ik"; il: "ar.il"; im: "ar.im"; in: "ar.in"; io: "ar.io"; ip: "ar.ip"; iq: "ar.iq"; ir: "ar.ir"; is: "ar.is"; it: "ar.it"; iu: "ar.iu"; iv: "ar.iv"; iw: "ar.iw"; ix: "ar.ix"; iy: "ar.iy"; iz: "ar.iz"; ja: "ar.ja"; jb: "ar.jb"; jc: "ar.jc"; jd: "ar.jd"; je: "ar.je"; jf: "ar.jf"; jg: "ar.jg"; jh: "ar.jh"; ji: "ar.ji"; jj: "ar.jj"; jk: "ar.jk"; jl: "ar.jl"; jm: "ar.jm"; jn: "ar.jn"; jo: "ar.jo"; jp: "ar.jp"; jq: "ar.jq"; jr: "ar.jr"; js: "ar.js"; jt: "ar.jt"; ju: "ar.ju"; jv: "ar.jv"; jw: "ar.jw"; jx: "ar.jx"; jy: "ar.jy"; jz: "ar.jz"; ka: "ar.ka"; kb: "ar.kb"; kc: "ar.kc"; kd: "ar.kd"; ke: "ar.ke"; kf: "ar.kf"; kg: "ar.kg"; kh: "ar.kh"; ki: "ar.ki"; kj: "ar.kj"; kk: "ar.kk"; kl: "ar.kl"; km: "ar.km"; kn: "ar.kn"; ko: "ar.ko"; kp: "ar.kp"; kq: "ar.kq"; kr: "ar.kr"; ks: "ar.ks"; kt: "ar.kt"; ku: "ar.ku"; kv: "ar.kv"; kw: "ar.kw"; kx: "ar.kx"; ky: "ar.ky"; kz: "ar.kz"; la: "ar.la"; lb: "ar.lb"; lc: "ar.lc"; ld: "ar.ld"; le: "ar.le"; lf: "ar.lf"; lg: "ar.lg"; lh: "ar.lh"; li: "ar.li"; lj: "ar.lj"; lk: "ar.lk"; ll: "ar.ll"; lm: "ar.lm"; ln: "ar.ln"; lo: "ar.lo"; lp: "ar.lp"; lq: "ar.lq"; lr: "ar.lr"; ls: "ar.ls"; lt: "ar.lt"; lu: "ar.lu"; lv: "ar.lv"; lw: "ar.lw"; lx: "ar.lx"; ly: "ar.ly"; lz: "ar.lz"; ma: "ar.ma"; mb: "ar.mb"; mc: "ar.mc"; md: "ar.md"; me: "ar.me"; mf: "ar.mf"; mg: "ar.mg"; mh: "ar.mh"; mi: "ar.mi"; mj: "ar.mj"; mk: "ar.mk"; ml: "ar.ml"; mm: "ar.mm"; mn: "ar.mn"; mo: "ar.mo"; mp: "ar.mp"; mq: "ar.mq"; mr: "ar.mr"; ms: "ar.ms"; mt: "ar.mt"; mu: "ar.mu"; mv: "ar.mv"; mw: "ar.mw"; mx: "ar.mx"; my: "ar.my"; mz: "ar.mz"; na: "ar.na"; nb: "ar.nb"; nc: "ar.nc"; nd: "ar.nd"; ne: "ar.ne"; nf: "ar.nf"; ng: "ar.ng"; nh: "ar.nh"; ni: "ar.ni"; nj: "ar.nj"; nk: "ar.nk"; nl: "ar.nl"; nm: "ar.nm"; nn: "ar.nn"; no: "ar.no"; np: "ar.np"; nq: "ar.nq"; nr: "ar.nr"; ns: "ar.ns"; nt: "ar.nt"; nu: "ar.nu"; nv: "ar.nv"; nw: "ar.nw"; nx: "ar.nx"; ny: "ar.ny"; nz: "ar.nz"; oa: "ar.oa"; ob: "ar.ob"; oc: "ar.oc"; od: "ar.od"; oe: "ar.oe"; of: "ar.of"; og: "ar.og"; oh: "ar.oh"; oi: "ar.oi"; oj: "ar.oj"; ok: "ar.ok"; ol: "ar.ol"; om: "ar.om"; on: "ar.on"; oo: "ar.oo"; op: "ar.op"; oq: "ar.oq"; or: "ar.or"; os: "ar.os"; ot: "ar.ot"; ou: "ar.ou"; ov: "ar.ov"; ow: "ar.ow"; ox: "ar.ox"; oy: "ar.oy"; oz: "ar.oz"; pa: "ar.pa"; pb: "ar.pb"; pc: "ar.pc"; pd: "ar.pd"; pe: "ar.pe"; pf: "ar.pf"; pg: "ar.pg"; ph: "ar.ph"; pi: "ar.pi"; pj: "ar.pj"; pk: "ar.pk"; pl: "ar.pl"; pm: "ar.pm"; pn: "ar.pn"; po: "ar.po"; pp: "ar.pp"; pq: "ar.pq"; pr: "ar.pr"; ps: "ar.ps"; pt: "ar.pt"; pu: "ar.pu"; pv: "ar.pv"; pw: "ar.pw"; px: "ar.px"; py: "ar.py"; pz: "ar.pz"; qa: "ar.qa"; qb: "ar.qb"; qc: "ar.qc"; qd: "ar.qd"; qe: "ar.qe"; qf: "ar.qf"; qg: "ar.qg"; qh: "ar.qh"; qi: "ar.qi"; qj: "ar.qj"; qk: "ar.qk"; ql: "ar.ql"; qm: "ar.qm"; qn: "ar.qn"; qo: "ar.qo"; qp: "ar.qp"; qq: "ar.qq"; qr: "ar.qr"; qs: "ar.qs"; qt: "ar.qt"; qu: "ar.qu"; qv: "ar.qv"; qw: "ar.qw"; qx: "ar.qx"; qy: "ar.qy"; qz: "ar.qz"; ra: "ar.ra"; rb: "ar.rb"; rc: "ar.rc"; rd: "ar.rd"; re: "ar.re"; rf: "ar.rf"; rg: "ar.rg"; rh: "ar.rh"; ri: "ar.ri"; rj: "ar.rj"; rk: "ar.rk"; rl: "ar.rl"; rm: "ar.rm"; rn: "ar.rn"; ro: "ar.ro"; rp: "ar.rp"; rq: "ar.rq"; rr: "ar.rr"; rs: "ar.rs"; rt: "ar.rt"; ru: "ar.ru"; rv: "ar.rv"; rw: "ar.rw"; rx: "ar.rx"; ry: "ar.ry"; rz: "ar.rz"; sa: "ar.sa"; sb: "ar.sb"; sc: "ar.sc"; sd: "ar.sd"; se: "ar.se"; sf: "ar.sf"; sg: "ar.sg"; sh: "ar.sh"; si: "ar.si"; sj: "ar.sj"; sk: "ar.sk"; sl: "ar.sl"; sm: "ar.sm"; sn: "ar.sn"; so: "ar.so"; sp: "ar.sp"; sq: "ar.sq"; sr: "ar.sr"; ss: "ar.ss"; st: "ar.st"; su: "ar.su"; sv: "ar.sv"; sw: "ar.sw"; sx: "ar.sx"; sy: "ar.sy"; sz: "ar.sz"; ta: "ar.ta"; tb: "ar.tb"; tc: "ar.tc"; td: "ar.td"; te: "ar.te"; tf: "ar.tf"; tg: "ar.tg"; th: "ar.th"; ti: "ar.ti"; tj: "ar.tj"; tk: "ar.tk"; tl: "ar.tl"; tm: "ar.tm"; tn: "ar.tn"; to: "ar.to"; tp: "ar.tp"; tq: "ar.tq"; tr: "ar.tr"; ts: "ar.ts"; tt: "ar.tt"; tu: "ar.tu"; tv: "ar.tv"; tw: "ar.tw"; tx: "ar.tx"; ty: "ar.ty"; tz: "ar.tz"; ua: "ar.ua"; ub: "ar.ub"; uc: "ar.uc"; ud: "ar.ud"; ue: "ar.ue"; uf: "ar.uf"; ug: "ar.ug"; uh: "ar.uh"; ui: "ar.ui"; uj: "ar.uj"; uk: "ar.uk"; ul: "ar.ul"; um: "ar.um"; un: "ar.un"; uo: "ar.uo"; up: "ar.up"; uq: "ar.uq"; ur: "ar.ur"; us: "ar.us"; ut: "ar.ut"; uu: "ar.uu"; uv: "ar.uv"; uw: "ar.uw"; ux: "ar.ux"; uy: "ar.uy"; uz: "ar.uz"; va: "ar.va"; vb: "ar.vb"; vc: "ar.vc"; vd: "ar.vd"; ve: "ar.ve"; vf: "ar.vf"; vg: "ar.vg"; vh: "ar.vh"; vi: "ar.vi"; vj: "ar.vj"; vk: "ar.vk"; vl: "ar.vl"; vm: "ar.vm"; vn: "ar.vn"; vo: "ar.vo"; vp: "ar.vp"; vq: "ar.vq"; vr: "ar.vr"; vs: "ar.vs"; vt: "ar.vt"; vu: "ar.vu"; vv: "ar.vv"; vw: "ar.vw"; vx: "ar.vx"; vy: "ar.vy"; vz: "ar.vz"; wa: "ar.wa"; wb: "ar.wb"; wc: "ar.wc"; wd: "ar.wd"; we: "ar.we"; wf: "ar.wf"; wg: "ar.wg"; wh: "ar.wh"; wi: "ar.wi"; wj: "ar.wj"; wk: "ar.wk"; wl: "ar.wl"; wm: "ar.wm"; wn: "ar.wn"; wo: "ar.wo"; wp: "ar.wp"; wq: "ar.wq"; wr: "ar.wr"; ws: "ar.ws"; wt: "ar.wt"; wu: "ar.wu"; wv: "ar.wv"; ww: "ar.ww"; wx: "ar.wx"; wy: "ar.wy"; wz: "ar.wz"; xa: "ar.xa"; xb: "ar.xb"; xc: "ar.xc"; xd: "ar.xd"; xe: "ar.xe"; xf: "ar.xf"; xg: "ar.xg"; xh: "ar.xh"; xi: "ar.xi"; xj: "ar.xj"; xk: "ar.xk"; xl: "ar.xl"; xm: "ar.xm"; xn: "ar.xn"; xo: "ar.xo"; xp: "ar.xp"; xq: "ar.xq"; xr: "ar.xr"; xs: "ar.xs"; xt: "ar.xt"; xu: "ar.xu"; xv: "ar.xv"; xw: "ar.xw"; xx: "ar.xx"; xy: "ar.xy"; xz: "ar.xz"; ya: "ar.ya"; yb: "ar.yb"; yc: "ar.yc"; yd: "ar.yd"; ye: "ar.ye"; yf: "ar.yf"; yg: "ar.yg"; yh: "ar.yh"; yi: "ar.yi"; yj: "ar.yj"; yk: "ar.yk"; yl: "ar.yl"; ym: "ar.ym"; yn: "ar.yn"; yo: "ar.yo"; yp: "ar.yp"; yq: "ar.yq"; yr: "ar.yr"; ys: "ar.ys"; yt: "ar.yt"; yu: "ar.yu"; yv: "ar.yv"; yw: "ar.yw"; yx: "ar.yx"; yy: "ar.yy"; yz: "ar.yz"; za: "ar.za"; zb: "ar.zb"; zc: "ar.zc"; zd: "ar.zd"; ze: "ar.ze"; zf: "ar.zf"; zg: "ar.zg"; zh: "ar.zh"; zi: "ar.zi"; zj: "ar.zj"; zk: "ar.zk"; zl: "ar.zl"; zm: "ar.zm"; zn: "ar.zn"; zo: "ar.zo"; zp: "ar.zp"; zq: "ar.zq"; zr: "ar.zr"; zs: "ar.zs"; zt: "ar.zt"; zu: "ar.zu"; zv: "ar.zv"; zw: "ar.zw"; zx: "ar.zx"; zy: "ar.zy"; zz: "ar.zz"; }; as: { aa: "as.aa"; ab: "as.ab"; ac: "as.ac"; ad: "as.ad"; ae: "as.ae"; af: "as.af"; ag: "as.ag"; ah: "as.ah"; ai: "as.ai"; aj: "as.aj"; ak: "as.ak"; al: "as.al"; am: "as.am"; an: "as.an"; ao: "as.ao"; ap: "as.ap"; aq: "as.aq"; ar: "as.ar"; as: "as.as"; at: "as.at"; au: "as.au"; av: "as.av"; aw: "as.aw"; ax: "as.ax"; ay: "as.ay"; az: "as.az"; ba: "as.ba"; bb: "as.bb"; bc: "as.bc"; bd: "as.bd"; be: "as.be"; bf: "as.bf"; bg: "as.bg"; bh: "as.bh"; bi: "as.bi"; bj: "as.bj"; bk: "as.bk"; bl: "as.bl"; bm: "as.bm"; bn: "as.bn"; bo: "as.bo"; bp: "as.bp"; bq: "as.bq"; br: "as.br"; bs: "as.bs"; bt: "as.bt"; bu: "as.bu"; bv: "as.bv"; bw: "as.bw"; bx: "as.bx"; by: "as.by"; bz: "as.bz"; ca: "as.ca"; cb: "as.cb"; cc: "as.cc"; cd: "as.cd"; ce: "as.ce"; cf: "as.cf"; cg: "as.cg"; ch: "as.ch"; ci: "as.ci"; cj: "as.cj"; ck: "as.ck"; cl: "as.cl"; cm: "as.cm"; cn: "as.cn"; co: "as.co"; cp: "as.cp"; cq: "as.cq"; cr: "as.cr"; cs: "as.cs"; ct: "as.ct"; cu: "as.cu"; cv: "as.cv"; cw: "as.cw"; cx: "as.cx"; cy: "as.cy"; cz: "as.cz"; da: "as.da"; db: "as.db"; dc: "as.dc"; dd: "as.dd"; de: "as.de"; df: "as.df"; dg: "as.dg"; dh: "as.dh"; di: "as.di"; dj: "as.dj"; dk: "as.dk"; dl: "as.dl"; dm: "as.dm"; dn: "as.dn"; do: "as.do"; dp: "as.dp"; dq: "as.dq"; dr: "as.dr"; ds: "as.ds"; dt: "as.dt"; du: "as.du"; dv: "as.dv"; dw: "as.dw"; dx: "as.dx"; dy: "as.dy"; dz: "as.dz"; ea: "as.ea"; eb: "as.eb"; ec: "as.ec"; ed: "as.ed"; ee: "as.ee"; ef: "as.ef"; eg: "as.eg"; eh: "as.eh"; ei: "as.ei"; ej: "as.ej"; ek: "as.ek"; el: "as.el"; em: "as.em"; en: "as.en"; eo: "as.eo"; ep: "as.ep"; eq: "as.eq"; er: "as.er"; es: "as.es"; et: "as.et"; eu: "as.eu"; ev: "as.ev"; ew: "as.ew"; ex: "as.ex"; ey: "as.ey"; ez: "as.ez"; fa: "as.fa"; fb: "as.fb"; fc: "as.fc"; fd: "as.fd"; fe: "as.fe"; ff: "as.ff"; fg: "as.fg"; fh: "as.fh"; fi: "as.fi"; fj: "as.fj"; fk: "as.fk"; fl: "as.fl"; fm: "as.fm"; fn: "as.fn"; fo: "as.fo"; fp: "as.fp"; fq: "as.fq"; fr: "as.fr"; fs: "as.fs"; ft: "as.ft"; fu: "as.fu"; fv: "as.fv"; fw: "as.fw"; fx: "as.fx"; fy: "as.fy"; fz: "as.fz"; ga: "as.ga"; gb: "as.gb"; gc: "as.gc"; gd: "as.gd"; ge: "as.ge"; gf: "as.gf"; gg: "as.gg"; gh: "as.gh"; gi: "as.gi"; gj: "as.gj"; gk: "as.gk"; gl: "as.gl"; gm: "as.gm"; gn: "as.gn"; go: "as.go"; gp: "as.gp"; gq: "as.gq"; gr: "as.gr"; gs: "as.gs"; gt: "as.gt"; gu: "as.gu"; gv: "as.gv"; gw: "as.gw"; gx: "as.gx"; gy: "as.gy"; gz: "as.gz"; ha: "as.ha"; hb: "as.hb"; hc: "as.hc"; hd: "as.hd"; he: "as.he"; hf: "as.hf"; hg: "as.hg"; hh: "as.hh"; hi: "as.hi"; hj: "as.hj"; hk: "as.hk"; hl: "as.hl"; hm: "as.hm"; hn: "as.hn"; ho: "as.ho"; hp: "as.hp"; hq: "as.hq"; hr: "as.hr"; hs: "as.hs"; ht: "as.ht"; hu: "as.hu"; hv: "as.hv"; hw: "as.hw"; hx: "as.hx"; hy: "as.hy"; hz: "as.hz"; ia: "as.ia"; ib: "as.ib"; ic: "as.ic"; id: "as.id"; ie: "as.ie"; if: "as.if"; ig: "as.ig"; ih: "as.ih"; ii: "as.ii"; ij: "as.ij"; ik: "as.ik"; il: "as.il"; im: "as.im"; in: "as.in"; io: "as.io"; ip: "as.ip"; iq: "as.iq"; ir: "as.ir"; is: "as.is"; it: "as.it"; iu: "as.iu"; iv: "as.iv"; iw: "as.iw"; ix: "as.ix"; iy: "as.iy"; iz: "as.iz"; ja: "as.ja"; jb: "as.jb"; jc: "as.jc"; jd: "as.jd"; je: "as.je"; jf: "as.jf"; jg: "as.jg"; jh: "as.jh"; ji: "as.ji"; jj: "as.jj"; jk: "as.jk"; jl: "as.jl"; jm: "as.jm"; jn: "as.jn"; jo: "as.jo"; jp: "as.jp"; jq: "as.jq"; jr: "as.jr"; js: "as.js"; jt: "as.jt"; ju: "as.ju"; jv: "as.jv"; jw: "as.jw"; jx: "as.jx"; jy: "as.jy"; jz: "as.jz"; ka: "as.ka"; kb: "as.kb"; kc: "as.kc"; kd: "as.kd"; ke: "as.ke"; kf: "as.kf"; kg: "as.kg"; kh: "as.kh"; ki: "as.ki"; kj: "as.kj"; kk: "as.kk"; kl: "as.kl"; km: "as.km"; kn: "as.kn"; ko: "as.ko"; kp: "as.kp"; kq: "as.kq"; kr: "as.kr"; ks: "as.ks"; kt: "as.kt"; ku: "as.ku"; kv: "as.kv"; kw: "as.kw"; kx: "as.kx"; ky: "as.ky"; kz: "as.kz"; la: "as.la"; lb: "as.lb"; lc: "as.lc"; ld: "as.ld"; le: "as.le"; lf: "as.lf"; lg: "as.lg"; lh: "as.lh"; li: "as.li"; lj: "as.lj"; lk: "as.lk"; ll: "as.ll"; lm: "as.lm"; ln: "as.ln"; lo: "as.lo"; lp: "as.lp"; lq: "as.lq"; lr: "as.lr"; ls: "as.ls"; lt: "as.lt"; lu: "as.lu"; lv: "as.lv"; lw: "as.lw"; lx: "as.lx"; ly: "as.ly"; lz: "as.lz"; ma: "as.ma"; mb: "as.mb"; mc: "as.mc"; md: "as.md"; me: "as.me"; mf: "as.mf"; mg: "as.mg"; mh: "as.mh"; mi: "as.mi"; mj: "as.mj"; mk: "as.mk"; ml: "as.ml"; mm: "as.mm"; mn: "as.mn"; mo: "as.mo"; mp: "as.mp"; mq: "as.mq"; mr: "as.mr"; ms: "as.ms"; mt: "as.mt"; mu: "as.mu"; mv: "as.mv"; mw: "as.mw"; mx: "as.mx"; my: "as.my"; mz: "as.mz"; na: "as.na"; nb: "as.nb"; nc: "as.nc"; nd: "as.nd"; ne: "as.ne"; nf: "as.nf"; ng: "as.ng"; nh: "as.nh"; ni: "as.ni"; nj: "as.nj"; nk: "as.nk"; nl: "as.nl"; nm: "as.nm"; nn: "as.nn"; no: "as.no"; np: "as.np"; nq: "as.nq"; nr: "as.nr"; ns: "as.ns"; nt: "as.nt"; nu: "as.nu"; nv: "as.nv"; nw: "as.nw"; nx: "as.nx"; ny: "as.ny"; nz: "as.nz"; oa: "as.oa"; ob: "as.ob"; oc: "as.oc"; od: "as.od"; oe: "as.oe"; of: "as.of"; og: "as.og"; oh: "as.oh"; oi: "as.oi"; oj: "as.oj"; ok: "as.ok"; ol: "as.ol"; om: "as.om"; on: "as.on"; oo: "as.oo"; op: "as.op"; oq: "as.oq"; or: "as.or"; os: "as.os"; ot: "as.ot"; ou: "as.ou"; ov: "as.ov"; ow: "as.ow"; ox: "as.ox"; oy: "as.oy"; oz: "as.oz"; pa: "as.pa"; pb: "as.pb"; pc: "as.pc"; pd: "as.pd"; pe: "as.pe"; pf: "as.pf"; pg: "as.pg"; ph: "as.ph"; pi: "as.pi"; pj: "as.pj"; pk: "as.pk"; pl: "as.pl"; pm: "as.pm"; pn: "as.pn"; po: "as.po"; pp: "as.pp"; pq: "as.pq"; pr: "as.pr"; ps: "as.ps"; pt: "as.pt"; pu: "as.pu"; pv: "as.pv"; pw: "as.pw"; px: "as.px"; py: "as.py"; pz: "as.pz"; qa: "as.qa"; qb: "as.qb"; qc: "as.qc"; qd: "as.qd"; qe: "as.qe"; qf: "as.qf"; qg: "as.qg"; qh: "as.qh"; qi: "as.qi"; qj: "as.qj"; qk: "as.qk"; ql: "as.ql"; qm: "as.qm"; qn: "as.qn"; qo: "as.qo"; qp: "as.qp"; qq: "as.qq"; qr: "as.qr"; qs: "as.qs"; qt: "as.qt"; qu: "as.qu"; qv: "as.qv"; qw: "as.qw"; qx: "as.qx"; qy: "as.qy"; qz: "as.qz"; ra: "as.ra"; rb: "as.rb"; rc: "as.rc"; rd: "as.rd"; re: "as.re"; rf: "as.rf"; rg: "as.rg"; rh: "as.rh"; ri: "as.ri"; rj: "as.rj"; rk: "as.rk"; rl: "as.rl"; rm: "as.rm"; rn: "as.rn"; ro: "as.ro"; rp: "as.rp"; rq: "as.rq"; rr: "as.rr"; rs: "as.rs"; rt: "as.rt"; ru: "as.ru"; rv: "as.rv"; rw: "as.rw"; rx: "as.rx"; ry: "as.ry"; rz: "as.rz"; sa: "as.sa"; sb: "as.sb"; sc: "as.sc"; sd: "as.sd"; se: "as.se"; sf: "as.sf"; sg: "as.sg"; sh: "as.sh"; si: "as.si"; sj: "as.sj"; sk: "as.sk"; sl: "as.sl"; sm: "as.sm"; sn: "as.sn"; so: "as.so"; sp: "as.sp"; sq: "as.sq"; sr: "as.sr"; ss: "as.ss"; st: "as.st"; su: "as.su"; sv: "as.sv"; sw: "as.sw"; sx: "as.sx"; sy: "as.sy"; sz: "as.sz"; ta: "as.ta"; tb: "as.tb"; tc: "as.tc"; td: "as.td"; te: "as.te"; tf: "as.tf"; tg: "as.tg"; th: "as.th"; ti: "as.ti"; tj: "as.tj"; tk: "as.tk"; tl: "as.tl"; tm: "as.tm"; tn: "as.tn"; to: "as.to"; tp: "as.tp"; tq: "as.tq"; tr: "as.tr"; ts: "as.ts"; tt: "as.tt"; tu: "as.tu"; tv: "as.tv"; tw: "as.tw"; tx: "as.tx"; ty: "as.ty"; tz: "as.tz"; ua: "as.ua"; ub: "as.ub"; uc: "as.uc"; ud: "as.ud"; ue: "as.ue"; uf: "as.uf"; ug: "as.ug"; uh: "as.uh"; ui: "as.ui"; uj: "as.uj"; uk: "as.uk"; ul: "as.ul"; um: "as.um"; un: "as.un"; uo: "as.uo"; up: "as.up"; uq: "as.uq"; ur: "as.ur"; us: "as.us"; ut: "as.ut"; uu: "as.uu"; uv: "as.uv"; uw: "as.uw"; ux: "as.ux"; uy: "as.uy"; uz: "as.uz"; va: "as.va"; vb: "as.vb"; vc: "as.vc"; vd: "as.vd"; ve: "as.ve"; vf: "as.vf"; vg: "as.vg"; vh: "as.vh"; vi: "as.vi"; vj: "as.vj"; vk: "as.vk"; vl: "as.vl"; vm: "as.vm"; vn: "as.vn"; vo: "as.vo"; vp: "as.vp"; vq: "as.vq"; vr: "as.vr"; vs: "as.vs"; vt: "as.vt"; vu: "as.vu"; vv: "as.vv"; vw: "as.vw"; vx: "as.vx"; vy: "as.vy"; vz: "as.vz"; wa: "as.wa"; wb: "as.wb"; wc: "as.wc"; wd: "as.wd"; we: "as.we"; wf: "as.wf"; wg: "as.wg"; wh: "as.wh"; wi: "as.wi"; wj: "as.wj"; wk: "as.wk"; wl: "as.wl"; wm: "as.wm"; wn: "as.wn"; wo: "as.wo"; wp: "as.wp"; wq: "as.wq"; wr: "as.wr"; ws: "as.ws"; wt: "as.wt"; wu: "as.wu"; wv: "as.wv"; ww: "as.ww"; wx: "as.wx"; wy: "as.wy"; wz: "as.wz"; xa: "as.xa"; xb: "as.xb"; xc: "as.xc"; xd: "as.xd"; xe: "as.xe"; xf: "as.xf"; xg: "as.xg"; xh: "as.xh"; xi: "as.xi"; xj: "as.xj"; xk: "as.xk"; xl: "as.xl"; xm: "as.xm"; xn: "as.xn"; xo: "as.xo"; xp: "as.xp"; xq: "as.xq"; xr: "as.xr"; xs: "as.xs"; xt: "as.xt"; xu: "as.xu"; xv: "as.xv"; xw: "as.xw"; xx: "as.xx"; xy: "as.xy"; xz: "as.xz"; ya: "as.ya"; yb: "as.yb"; yc: "as.yc"; yd: "as.yd"; ye: "as.ye"; yf: "as.yf"; yg: "as.yg"; yh: "as.yh"; yi: "as.yi"; yj: "as.yj"; yk: "as.yk"; yl: "as.yl"; ym: "as.ym"; yn: "as.yn"; yo: "as.yo"; yp: "as.yp"; yq: "as.yq"; yr: "as.yr"; ys: "as.ys"; yt: "as.yt"; yu: "as.yu"; yv: "as.yv"; yw: "as.yw"; yx: "as.yx"; yy: "as.yy"; yz: "as.yz"; za: "as.za"; zb: "as.zb"; zc: "as.zc"; zd: "as.zd"; ze: "as.ze"; zf: "as.zf"; zg: "as.zg"; zh: "as.zh"; zi: "as.zi"; zj: "as.zj"; zk: "as.zk"; zl: "as.zl"; zm: "as.zm"; zn: "as.zn"; zo: "as.zo"; zp: "as.zp"; zq: "as.zq"; zr: "as.zr"; zs: "as.zs"; zt: "as.zt"; zu: "as.zu"; zv: "as.zv"; zw: "as.zw"; zx: "as.zx"; zy: "as.zy"; zz: "as.zz"; }; at: { aa: "at.aa"; ab: "at.ab"; ac: "at.ac"; ad: "at.ad"; ae: "at.ae"; af: "at.af"; ag: "at.ag"; ah: "at.ah"; ai: "at.ai"; aj: "at.aj"; ak: "at.ak"; al: "at.al"; am: "at.am"; an: "at.an"; ao: "at.ao"; ap: "at.ap"; aq: "at.aq"; ar: "at.ar"; as: "at.as"; at: "at.at"; au: "at.au"; av: "at.av"; aw: "at.aw"; ax: "at.ax"; ay: "at.ay"; az: "at.az"; ba: "at.ba"; bb: "at.bb"; bc: "at.bc"; bd: "at.bd"; be: "at.be"; bf: "at.bf"; bg: "at.bg"; bh: "at.bh"; bi: "at.bi"; bj: "at.bj"; bk: "at.bk"; bl: "at.bl"; bm: "at.bm"; bn: "at.bn"; bo: "at.bo"; bp: "at.bp"; bq: "at.bq"; br: "at.br"; bs: "at.bs"; bt: "at.bt"; bu: "at.bu"; bv: "at.bv"; bw: "at.bw"; bx: "at.bx"; by: "at.by"; bz: "at.bz"; ca: "at.ca"; cb: "at.cb"; cc: "at.cc"; cd: "at.cd"; ce: "at.ce"; cf: "at.cf"; cg: "at.cg"; ch: "at.ch"; ci: "at.ci"; cj: "at.cj"; ck: "at.ck"; cl: "at.cl"; cm: "at.cm"; cn: "at.cn"; co: "at.co"; cp: "at.cp"; cq: "at.cq"; cr: "at.cr"; cs: "at.cs"; ct: "at.ct"; cu: "at.cu"; cv: "at.cv"; cw: "at.cw"; cx: "at.cx"; cy: "at.cy"; cz: "at.cz"; da: "at.da"; db: "at.db"; dc: "at.dc"; dd: "at.dd"; de: "at.de"; df: "at.df"; dg: "at.dg"; dh: "at.dh"; di: "at.di"; dj: "at.dj"; dk: "at.dk"; dl: "at.dl"; dm: "at.dm"; dn: "at.dn"; do: "at.do"; dp: "at.dp"; dq: "at.dq"; dr: "at.dr"; ds: "at.ds"; dt: "at.dt"; du: "at.du"; dv: "at.dv"; dw: "at.dw"; dx: "at.dx"; dy: "at.dy"; dz: "at.dz"; ea: "at.ea"; eb: "at.eb"; ec: "at.ec"; ed: "at.ed"; ee: "at.ee"; ef: "at.ef"; eg: "at.eg"; eh: "at.eh"; ei: "at.ei"; ej: "at.ej"; ek: "at.ek"; el: "at.el"; em: "at.em"; en: "at.en"; eo: "at.eo"; ep: "at.ep"; eq: "at.eq"; er: "at.er"; es: "at.es"; et: "at.et"; eu: "at.eu"; ev: "at.ev"; ew: "at.ew"; ex: "at.ex"; ey: "at.ey"; ez: "at.ez"; fa: "at.fa"; fb: "at.fb"; fc: "at.fc"; fd: "at.fd"; fe: "at.fe"; ff: "at.ff"; fg: "at.fg"; fh: "at.fh"; fi: "at.fi"; fj: "at.fj"; fk: "at.fk"; fl: "at.fl"; fm: "at.fm"; fn: "at.fn"; fo: "at.fo"; fp: "at.fp"; fq: "at.fq"; fr: "at.fr"; fs: "at.fs"; ft: "at.ft"; fu: "at.fu"; fv: "at.fv"; fw: "at.fw"; fx: "at.fx"; fy: "at.fy"; fz: "at.fz"; ga: "at.ga"; gb: "at.gb"; gc: "at.gc"; gd: "at.gd"; ge: "at.ge"; gf: "at.gf"; gg: "at.gg"; gh: "at.gh"; gi: "at.gi"; gj: "at.gj"; gk: "at.gk"; gl: "at.gl"; gm: "at.gm"; gn: "at.gn"; go: "at.go"; gp: "at.gp"; gq: "at.gq"; gr: "at.gr"; gs: "at.gs"; gt: "at.gt"; gu: "at.gu"; gv: "at.gv"; gw: "at.gw"; gx: "at.gx"; gy: "at.gy"; gz: "at.gz"; ha: "at.ha"; hb: "at.hb"; hc: "at.hc"; hd: "at.hd"; he: "at.he"; hf: "at.hf"; hg: "at.hg"; hh: "at.hh"; hi: "at.hi"; hj: "at.hj"; hk: "at.hk"; hl: "at.hl"; hm: "at.hm"; hn: "at.hn"; ho: "at.ho"; hp: "at.hp"; hq: "at.hq"; hr: "at.hr"; hs: "at.hs"; ht: "at.ht"; hu: "at.hu"; hv: "at.hv"; hw: "at.hw"; hx: "at.hx"; hy: "at.hy"; hz: "at.hz"; ia: "at.ia"; ib: "at.ib"; ic: "at.ic"; id: "at.id"; ie: "at.ie"; if: "at.if"; ig: "at.ig"; ih: "at.ih"; ii: "at.ii"; ij: "at.ij"; ik: "at.ik"; il: "at.il"; im: "at.im"; in: "at.in"; io: "at.io"; ip: "at.ip"; iq: "at.iq"; ir: "at.ir"; is: "at.is"; it: "at.it"; iu: "at.iu"; iv: "at.iv"; iw: "at.iw"; ix: "at.ix"; iy: "at.iy"; iz: "at.iz"; ja: "at.ja"; jb: "at.jb"; jc: "at.jc"; jd: "at.jd"; je: "at.je"; jf: "at.jf"; jg: "at.jg"; jh: "at.jh"; ji: "at.ji"; jj: "at.jj"; jk: "at.jk"; jl: "at.jl"; jm: "at.jm"; jn: "at.jn"; jo: "at.jo"; jp: "at.jp"; jq: "at.jq"; jr: "at.jr"; js: "at.js"; jt: "at.jt"; ju: "at.ju"; jv: "at.jv"; jw: "at.jw"; jx: "at.jx"; jy: "at.jy"; jz: "at.jz"; ka: "at.ka"; kb: "at.kb"; kc: "at.kc"; kd: "at.kd"; ke: "at.ke"; kf: "at.kf"; kg: "at.kg"; kh: "at.kh"; ki: "at.ki"; kj: "at.kj"; kk: "at.kk"; kl: "at.kl"; km: "at.km"; kn: "at.kn"; ko: "at.ko"; kp: "at.kp"; kq: "at.kq"; kr: "at.kr"; ks: "at.ks"; kt: "at.kt"; ku: "at.ku"; kv: "at.kv"; kw: "at.kw"; kx: "at.kx"; ky: "at.ky"; kz: "at.kz"; la: "at.la"; lb: "at.lb"; lc: "at.lc"; ld: "at.ld"; le: "at.le"; lf: "at.lf"; lg: "at.lg"; lh: "at.lh"; li: "at.li"; lj: "at.lj"; lk: "at.lk"; ll: "at.ll"; lm: "at.lm"; ln: "at.ln"; lo: "at.lo"; lp: "at.lp"; lq: "at.lq"; lr: "at.lr"; ls: "at.ls"; lt: "at.lt"; lu: "at.lu"; lv: "at.lv"; lw: "at.lw"; lx: "at.lx"; ly: "at.ly"; lz: "at.lz"; ma: "at.ma"; mb: "at.mb"; mc: "at.mc"; md: "at.md"; me: "at.me"; mf: "at.mf"; mg: "at.mg"; mh: "at.mh"; mi: "at.mi"; mj: "at.mj"; mk: "at.mk"; ml: "at.ml"; mm: "at.mm"; mn: "at.mn"; mo: "at.mo"; mp: "at.mp"; mq: "at.mq"; mr: "at.mr"; ms: "at.ms"; mt: "at.mt"; mu: "at.mu"; mv: "at.mv"; mw: "at.mw"; mx: "at.mx"; my: "at.my"; mz: "at.mz"; na: "at.na"; nb: "at.nb"; nc: "at.nc"; nd: "at.nd"; ne: "at.ne"; nf: "at.nf"; ng: "at.ng"; nh: "at.nh"; ni: "at.ni"; nj: "at.nj"; nk: "at.nk"; nl: "at.nl"; nm: "at.nm"; nn: "at.nn"; no: "at.no"; np: "at.np"; nq: "at.nq"; nr: "at.nr"; ns: "at.ns"; nt: "at.nt"; nu: "at.nu"; nv: "at.nv"; nw: "at.nw"; nx: "at.nx"; ny: "at.ny"; nz: "at.nz"; oa: "at.oa"; ob: "at.ob"; oc: "at.oc"; od: "at.od"; oe: "at.oe"; of: "at.of"; og: "at.og"; oh: "at.oh"; oi: "at.oi"; oj: "at.oj"; ok: "at.ok"; ol: "at.ol"; om: "at.om"; on: "at.on"; oo: "at.oo"; op: "at.op"; oq: "at.oq"; or: "at.or"; os: "at.os"; ot: "at.ot"; ou: "at.ou"; ov: "at.ov"; ow: "at.ow"; ox: "at.ox"; oy: "at.oy"; oz: "at.oz"; pa: "at.pa"; pb: "at.pb"; pc: "at.pc"; pd: "at.pd"; pe: "at.pe"; pf: "at.pf"; pg: "at.pg"; ph: "at.ph"; pi: "at.pi"; pj: "at.pj"; pk: "at.pk"; pl: "at.pl"; pm: "at.pm"; pn: "at.pn"; po: "at.po"; pp: "at.pp"; pq: "at.pq"; pr: "at.pr"; ps: "at.ps"; pt: "at.pt"; pu: "at.pu"; pv: "at.pv"; pw: "at.pw"; px: "at.px"; py: "at.py"; pz: "at.pz"; qa: "at.qa"; qb: "at.qb"; qc: "at.qc"; qd: "at.qd"; qe: "at.qe"; qf: "at.qf"; qg: "at.qg"; qh: "at.qh"; qi: "at.qi"; qj: "at.qj"; qk: "at.qk"; ql: "at.ql"; qm: "at.qm"; qn: "at.qn"; qo: "at.qo"; qp: "at.qp"; qq: "at.qq"; qr: "at.qr"; qs: "at.qs"; qt: "at.qt"; qu: "at.qu"; qv: "at.qv"; qw: "at.qw"; qx: "at.qx"; qy: "at.qy"; qz: "at.qz"; ra: "at.ra"; rb: "at.rb"; rc: "at.rc"; rd: "at.rd"; re: "at.re"; rf: "at.rf"; rg: "at.rg"; rh: "at.rh"; ri: "at.ri"; rj: "at.rj"; rk: "at.rk"; rl: "at.rl"; rm: "at.rm"; rn: "at.rn"; ro: "at.ro"; rp: "at.rp"; rq: "at.rq"; rr: "at.rr"; rs: "at.rs"; rt: "at.rt"; ru: "at.ru"; rv: "at.rv"; rw: "at.rw"; rx: "at.rx"; ry: "at.ry"; rz: "at.rz"; sa: "at.sa"; sb: "at.sb"; sc: "at.sc"; sd: "at.sd"; se: "at.se"; sf: "at.sf"; sg: "at.sg"; sh: "at.sh"; si: "at.si"; sj: "at.sj"; sk: "at.sk"; sl: "at.sl"; sm: "at.sm"; sn: "at.sn"; so: "at.so"; sp: "at.sp"; sq: "at.sq"; sr: "at.sr"; ss: "at.ss"; st: "at.st"; su: "at.su"; sv: "at.sv"; sw: "at.sw"; sx: "at.sx"; sy: "at.sy"; sz: "at.sz"; ta: "at.ta"; tb: "at.tb"; tc: "at.tc"; td: "at.td"; te: "at.te"; tf: "at.tf"; tg: "at.tg"; th: "at.th"; ti: "at.ti"; tj: "at.tj"; tk: "at.tk"; tl: "at.tl"; tm: "at.tm"; tn: "at.tn"; to: "at.to"; tp: "at.tp"; tq: "at.tq"; tr: "at.tr"; ts: "at.ts"; tt: "at.tt"; tu: "at.tu"; tv: "at.tv"; tw: "at.tw"; tx: "at.tx"; ty: "at.ty"; tz: "at.tz"; ua: "at.ua"; ub: "at.ub"; uc: "at.uc"; ud: "at.ud"; ue: "at.ue"; uf: "at.uf"; ug: "at.ug"; uh: "at.uh"; ui: "at.ui"; uj: "at.uj"; uk: "at.uk"; ul: "at.ul"; um: "at.um"; un: "at.un"; uo: "at.uo"; up: "at.up"; uq: "at.uq"; ur: "at.ur"; us: "at.us"; ut: "at.ut"; uu: "at.uu"; uv: "at.uv"; uw: "at.uw"; ux: "at.ux"; uy: "at.uy"; uz: "at.uz"; va: "at.va"; vb: "at.vb"; vc: "at.vc"; vd: "at.vd"; ve: "at.ve"; vf: "at.vf"; vg: "at.vg"; vh: "at.vh"; vi: "at.vi"; vj: "at.vj"; vk: "at.vk"; vl: "at.vl"; vm: "at.vm"; vn: "at.vn"; vo: "at.vo"; vp: "at.vp"; vq: "at.vq"; vr: "at.vr"; vs: "at.vs"; vt: "at.vt"; vu: "at.vu"; vv: "at.vv"; vw: "at.vw"; vx: "at.vx"; vy: "at.vy"; vz: "at.vz"; wa: "at.wa"; wb: "at.wb"; wc: "at.wc"; wd: "at.wd"; we: "at.we"; wf: "at.wf"; wg: "at.wg"; wh: "at.wh"; wi: "at.wi"; wj: "at.wj"; wk: "at.wk"; wl: "at.wl"; wm: "at.wm"; wn: "at.wn"; wo: "at.wo"; wp: "at.wp"; wq: "at.wq"; wr: "at.wr"; ws: "at.ws"; wt: "at.wt"; wu: "at.wu"; wv: "at.wv"; ww: "at.ww"; wx: "at.wx"; wy: "at.wy"; wz: "at.wz"; xa: "at.xa"; xb: "at.xb"; xc: "at.xc"; xd: "at.xd"; xe: "at.xe"; xf: "at.xf"; xg: "at.xg"; xh: "at.xh"; xi: "at.xi"; xj: "at.xj"; xk: "at.xk"; xl: "at.xl"; xm: "at.xm"; xn: "at.xn"; xo: "at.xo"; xp: "at.xp"; xq: "at.xq"; xr: "at.xr"; xs: "at.xs"; xt: "at.xt"; xu: "at.xu"; xv: "at.xv"; xw: "at.xw"; xx: "at.xx"; xy: "at.xy"; xz: "at.xz"; ya: "at.ya"; yb: "at.yb"; yc: "at.yc"; yd: "at.yd"; ye: "at.ye"; yf: "at.yf"; yg: "at.yg"; yh: "at.yh"; yi: "at.yi"; yj: "at.yj"; yk: "at.yk"; yl: "at.yl"; ym: "at.ym"; yn: "at.yn"; yo: "at.yo"; yp: "at.yp"; yq: "at.yq"; yr: "at.yr"; ys: "at.ys"; yt: "at.yt"; yu: "at.yu"; yv: "at.yv"; yw: "at.yw"; yx: "at.yx"; yy: "at.yy"; yz: "at.yz"; za: "at.za"; zb: "at.zb"; zc: "at.zc"; zd: "at.zd"; ze: "at.ze"; zf: "at.zf"; zg: "at.zg"; zh: "at.zh"; zi: "at.zi"; zj: "at.zj"; zk: "at.zk"; zl: "at.zl"; zm: "at.zm"; zn: "at.zn"; zo: "at.zo"; zp: "at.zp"; zq: "at.zq"; zr: "at.zr"; zs: "at.zs"; zt: "at.zt"; zu: "at.zu"; zv: "at.zv"; zw: "at.zw"; zx: "at.zx"; zy: "at.zy"; zz: "at.zz"; }; au: { aa: "au.aa"; ab: "au.ab"; ac: "au.ac"; ad: "au.ad"; ae: "au.ae"; af: "au.af"; ag: "au.ag"; ah: "au.ah"; ai: "au.ai"; aj: "au.aj"; ak: "au.ak"; al: "au.al"; am: "au.am"; an: "au.an"; ao: "au.ao"; ap: "au.ap"; aq: "au.aq"; ar: "au.ar"; as: "au.as"; at: "au.at"; au: "au.au"; av: "au.av"; aw: "au.aw"; ax: "au.ax"; ay: "au.ay"; az: "au.az"; ba: "au.ba"; bb: "au.bb"; bc: "au.bc"; bd: "au.bd"; be: "au.be"; bf: "au.bf"; bg: "au.bg"; bh: "au.bh"; bi: "au.bi"; bj: "au.bj"; bk: "au.bk"; bl: "au.bl"; bm: "au.bm"; bn: "au.bn"; bo: "au.bo"; bp: "au.bp"; bq: "au.bq"; br: "au.br"; bs: "au.bs"; bt: "au.bt"; bu: "au.bu"; bv: "au.bv"; bw: "au.bw"; bx: "au.bx"; by: "au.by"; bz: "au.bz"; ca: "au.ca"; cb: "au.cb"; cc: "au.cc"; cd: "au.cd"; ce: "au.ce"; cf: "au.cf"; cg: "au.cg"; ch: "au.ch"; ci: "au.ci"; cj: "au.cj"; ck: "au.ck"; cl: "au.cl"; cm: "au.cm"; cn: "au.cn"; co: "au.co"; cp: "au.cp"; cq: "au.cq"; cr: "au.cr"; cs: "au.cs"; ct: "au.ct"; cu: "au.cu"; cv: "au.cv"; cw: "au.cw"; cx: "au.cx"; cy: "au.cy"; cz: "au.cz"; da: "au.da"; db: "au.db"; dc: "au.dc"; dd: "au.dd"; de: "au.de"; df: "au.df"; dg: "au.dg"; dh: "au.dh"; di: "au.di"; dj: "au.dj"; dk: "au.dk"; dl: "au.dl"; dm: "au.dm"; dn: "au.dn"; do: "au.do"; dp: "au.dp"; dq: "au.dq"; dr: "au.dr"; ds: "au.ds"; dt: "au.dt"; du: "au.du"; dv: "au.dv"; dw: "au.dw"; dx: "au.dx"; dy: "au.dy"; dz: "au.dz"; ea: "au.ea"; eb: "au.eb"; ec: "au.ec"; ed: "au.ed"; ee: "au.ee"; ef: "au.ef"; eg: "au.eg"; eh: "au.eh"; ei: "au.ei"; ej: "au.ej"; ek: "au.ek"; el: "au.el"; em: "au.em"; en: "au.en"; eo: "au.eo"; ep: "au.ep"; eq: "au.eq"; er: "au.er"; es: "au.es"; et: "au.et"; eu: "au.eu"; ev: "au.ev"; ew: "au.ew"; ex: "au.ex"; ey: "au.ey"; ez: "au.ez"; fa: "au.fa"; fb: "au.fb"; fc: "au.fc"; fd: "au.fd"; fe: "au.fe"; ff: "au.ff"; fg: "au.fg"; fh: "au.fh"; fi: "au.fi"; fj: "au.fj"; fk: "au.fk"; fl: "au.fl"; fm: "au.fm"; fn: "au.fn"; fo: "au.fo"; fp: "au.fp"; fq: "au.fq"; fr: "au.fr"; fs: "au.fs"; ft: "au.ft"; fu: "au.fu"; fv: "au.fv"; fw: "au.fw"; fx: "au.fx"; fy: "au.fy"; fz: "au.fz"; ga: "au.ga"; gb: "au.gb"; gc: "au.gc"; gd: "au.gd"; ge: "au.ge"; gf: "au.gf"; gg: "au.gg"; gh: "au.gh"; gi: "au.gi"; gj: "au.gj"; gk: "au.gk"; gl: "au.gl"; gm: "au.gm"; gn: "au.gn"; go: "au.go"; gp: "au.gp"; gq: "au.gq"; gr: "au.gr"; gs: "au.gs"; gt: "au.gt"; gu: "au.gu"; gv: "au.gv"; gw: "au.gw"; gx: "au.gx"; gy: "au.gy"; gz: "au.gz"; ha: "au.ha"; hb: "au.hb"; hc: "au.hc"; hd: "au.hd"; he: "au.he"; hf: "au.hf"; hg: "au.hg"; hh: "au.hh"; hi: "au.hi"; hj: "au.hj"; hk: "au.hk"; hl: "au.hl"; hm: "au.hm"; hn: "au.hn"; ho: "au.ho"; hp: "au.hp"; hq: "au.hq"; hr: "au.hr"; hs: "au.hs"; ht: "au.ht"; hu: "au.hu"; hv: "au.hv"; hw: "au.hw"; hx: "au.hx"; hy: "au.hy"; hz: "au.hz"; ia: "au.ia"; ib: "au.ib"; ic: "au.ic"; id: "au.id"; ie: "au.ie"; if: "au.if"; ig: "au.ig"; ih: "au.ih"; ii: "au.ii"; ij: "au.ij"; ik: "au.ik"; il: "au.il"; im: "au.im"; in: "au.in"; io: "au.io"; ip: "au.ip"; iq: "au.iq"; ir: "au.ir"; is: "au.is"; it: "au.it"; iu: "au.iu"; iv: "au.iv"; iw: "au.iw"; ix: "au.ix"; iy: "au.iy"; iz: "au.iz"; ja: "au.ja"; jb: "au.jb"; jc: "au.jc"; jd: "au.jd"; je: "au.je"; jf: "au.jf"; jg: "au.jg"; jh: "au.jh"; ji: "au.ji"; jj: "au.jj"; jk: "au.jk"; jl: "au.jl"; jm: "au.jm"; jn: "au.jn"; jo: "au.jo"; jp: "au.jp"; jq: "au.jq"; jr: "au.jr"; js: "au.js"; jt: "au.jt"; ju: "au.ju"; jv: "au.jv"; jw: "au.jw"; jx: "au.jx"; jy: "au.jy"; jz: "au.jz"; ka: "au.ka"; kb: "au.kb"; kc: "au.kc"; kd: "au.kd"; ke: "au.ke"; kf: "au.kf"; kg: "au.kg"; kh: "au.kh"; ki: "au.ki"; kj: "au.kj"; kk: "au.kk"; kl: "au.kl"; km: "au.km"; kn: "au.kn"; ko: "au.ko"; kp: "au.kp"; kq: "au.kq"; kr: "au.kr"; ks: "au.ks"; kt: "au.kt"; ku: "au.ku"; kv: "au.kv"; kw: "au.kw"; kx: "au.kx"; ky: "au.ky"; kz: "au.kz"; la: "au.la"; lb: "au.lb"; lc: "au.lc"; ld: "au.ld"; le: "au.le"; lf: "au.lf"; lg: "au.lg"; lh: "au.lh"; li: "au.li"; lj: "au.lj"; lk: "au.lk"; ll: "au.ll"; lm: "au.lm"; ln: "au.ln"; lo: "au.lo"; lp: "au.lp"; lq: "au.lq"; lr: "au.lr"; ls: "au.ls"; lt: "au.lt"; lu: "au.lu"; lv: "au.lv"; lw: "au.lw"; lx: "au.lx"; ly: "au.ly"; lz: "au.lz"; ma: "au.ma"; mb: "au.mb"; mc: "au.mc"; md: "au.md"; me: "au.me"; mf: "au.mf"; mg: "au.mg"; mh: "au.mh"; mi: "au.mi"; mj: "au.mj"; mk: "au.mk"; ml: "au.ml"; mm: "au.mm"; mn: "au.mn"; mo: "au.mo"; mp: "au.mp"; mq: "au.mq"; mr: "au.mr"; ms: "au.ms"; mt: "au.mt"; mu: "au.mu"; mv: "au.mv"; mw: "au.mw"; mx: "au.mx"; my: "au.my"; mz: "au.mz"; na: "au.na"; nb: "au.nb"; nc: "au.nc"; nd: "au.nd"; ne: "au.ne"; nf: "au.nf"; ng: "au.ng"; nh: "au.nh"; ni: "au.ni"; nj: "au.nj"; nk: "au.nk"; nl: "au.nl"; nm: "au.nm"; nn: "au.nn"; no: "au.no"; np: "au.np"; nq: "au.nq"; nr: "au.nr"; ns: "au.ns"; nt: "au.nt"; nu: "au.nu"; nv: "au.nv"; nw: "au.nw"; nx: "au.nx"; ny: "au.ny"; nz: "au.nz"; oa: "au.oa"; ob: "au.ob"; oc: "au.oc"; od: "au.od"; oe: "au.oe"; of: "au.of"; og: "au.og"; oh: "au.oh"; oi: "au.oi"; oj: "au.oj"; ok: "au.ok"; ol: "au.ol"; om: "au.om"; on: "au.on"; oo: "au.oo"; op: "au.op"; oq: "au.oq"; or: "au.or"; os: "au.os"; ot: "au.ot"; ou: "au.ou"; ov: "au.ov"; ow: "au.ow"; ox: "au.ox"; oy: "au.oy"; oz: "au.oz"; pa: "au.pa"; pb: "au.pb"; pc: "au.pc"; pd: "au.pd"; pe: "au.pe"; pf: "au.pf"; pg: "au.pg"; ph: "au.ph"; pi: "au.pi"; pj: "au.pj"; pk: "au.pk"; pl: "au.pl"; pm: "au.pm"; pn: "au.pn"; po: "au.po"; pp: "au.pp"; pq: "au.pq"; pr: "au.pr"; ps: "au.ps"; pt: "au.pt"; pu: "au.pu"; pv: "au.pv"; pw: "au.pw"; px: "au.px"; py: "au.py"; pz: "au.pz"; qa: "au.qa"; qb: "au.qb"; qc: "au.qc"; qd: "au.qd"; qe: "au.qe"; qf: "au.qf"; qg: "au.qg"; qh: "au.qh"; qi: "au.qi"; qj: "au.qj"; qk: "au.qk"; ql: "au.ql"; qm: "au.qm"; qn: "au.qn"; qo: "au.qo"; qp: "au.qp"; qq: "au.qq"; qr: "au.qr"; qs: "au.qs"; qt: "au.qt"; qu: "au.qu"; qv: "au.qv"; qw: "au.qw"; qx: "au.qx"; qy: "au.qy"; qz: "au.qz"; ra: "au.ra"; rb: "au.rb"; rc: "au.rc"; rd: "au.rd"; re: "au.re"; rf: "au.rf"; rg: "au.rg"; rh: "au.rh"; ri: "au.ri"; rj: "au.rj"; rk: "au.rk"; rl: "au.rl"; rm: "au.rm"; rn: "au.rn"; ro: "au.ro"; rp: "au.rp"; rq: "au.rq"; rr: "au.rr"; rs: "au.rs"; rt: "au.rt"; ru: "au.ru"; rv: "au.rv"; rw: "au.rw"; rx: "au.rx"; ry: "au.ry"; rz: "au.rz"; sa: "au.sa"; sb: "au.sb"; sc: "au.sc"; sd: "au.sd"; se: "au.se"; sf: "au.sf"; sg: "au.sg"; sh: "au.sh"; si: "au.si"; sj: "au.sj"; sk: "au.sk"; sl: "au.sl"; sm: "au.sm"; sn: "au.sn"; so: "au.so"; sp: "au.sp"; sq: "au.sq"; sr: "au.sr"; ss: "au.ss"; st: "au.st"; su: "au.su"; sv: "au.sv"; sw: "au.sw"; sx: "au.sx"; sy: "au.sy"; sz: "au.sz"; ta: "au.ta"; tb: "au.tb"; tc: "au.tc"; td: "au.td"; te: "au.te"; tf: "au.tf"; tg: "au.tg"; th: "au.th"; ti: "au.ti"; tj: "au.tj"; tk: "au.tk"; tl: "au.tl"; tm: "au.tm"; tn: "au.tn"; to: "au.to"; tp: "au.tp"; tq: "au.tq"; tr: "au.tr"; ts: "au.ts"; tt: "au.tt"; tu: "au.tu"; tv: "au.tv"; tw: "au.tw"; tx: "au.tx"; ty: "au.ty"; tz: "au.tz"; ua: "au.ua"; ub: "au.ub"; uc: "au.uc"; ud: "au.ud"; ue: "au.ue"; uf: "au.uf"; ug: "au.ug"; uh: "au.uh"; ui: "au.ui"; uj: "au.uj"; uk: "au.uk"; ul: "au.ul"; um: "au.um"; un: "au.un"; uo: "au.uo"; up: "au.up"; uq: "au.uq"; ur: "au.ur"; us: "au.us"; ut: "au.ut"; uu: "au.uu"; uv: "au.uv"; uw: "au.uw"; ux: "au.ux"; uy: "au.uy"; uz: "au.uz"; va: "au.va"; vb: "au.vb"; vc: "au.vc"; vd: "au.vd"; ve: "au.ve"; vf: "au.vf"; vg: "au.vg"; vh: "au.vh"; vi: "au.vi"; vj: "au.vj"; vk: "au.vk"; vl: "au.vl"; vm: "au.vm"; vn: "au.vn"; vo: "au.vo"; vp: "au.vp"; vq: "au.vq"; vr: "au.vr"; vs: "au.vs"; vt: "au.vt"; vu: "au.vu"; vv: "au.vv"; vw: "au.vw"; vx: "au.vx"; vy: "au.vy"; vz: "au.vz"; wa: "au.wa"; wb: "au.wb"; wc: "au.wc"; wd: "au.wd"; we: "au.we"; wf: "au.wf"; wg: "au.wg"; wh: "au.wh"; wi: "au.wi"; wj: "au.wj"; wk: "au.wk"; wl: "au.wl"; wm: "au.wm"; wn: "au.wn"; wo: "au.wo"; wp: "au.wp"; wq: "au.wq"; wr: "au.wr"; ws: "au.ws"; wt: "au.wt"; wu: "au.wu"; wv: "au.wv"; ww: "au.ww"; wx: "au.wx"; wy: "au.wy"; wz: "au.wz"; xa: "au.xa"; xb: "au.xb"; xc: "au.xc"; xd: "au.xd"; xe: "au.xe"; xf: "au.xf"; xg: "au.xg"; xh: "au.xh"; xi: "au.xi"; xj: "au.xj"; xk: "au.xk"; xl: "au.xl"; xm: "au.xm"; xn: "au.xn"; xo: "au.xo"; xp: "au.xp"; xq: "au.xq"; xr: "au.xr"; xs: "au.xs"; xt: "au.xt"; xu: "au.xu"; xv: "au.xv"; xw: "au.xw"; xx: "au.xx"; xy: "au.xy"; xz: "au.xz"; ya: "au.ya"; yb: "au.yb"; yc: "au.yc"; yd: "au.yd"; ye: "au.ye"; yf: "au.yf"; yg: "au.yg"; yh: "au.yh"; yi: "au.yi"; yj: "au.yj"; yk: "au.yk"; yl: "au.yl"; ym: "au.ym"; yn: "au.yn"; yo: "au.yo"; yp: "au.yp"; yq: "au.yq"; yr: "au.yr"; ys: "au.ys"; yt: "au.yt"; yu: "au.yu"; yv: "au.yv"; yw: "au.yw"; yx: "au.yx"; yy: "au.yy"; yz: "au.yz"; za: "au.za"; zb: "au.zb"; zc: "au.zc"; zd: "au.zd"; ze: "au.ze"; zf: "au.zf"; zg: "au.zg"; zh: "au.zh"; zi: "au.zi"; zj: "au.zj"; zk: "au.zk"; zl: "au.zl"; zm: "au.zm"; zn: "au.zn"; zo: "au.zo"; zp: "au.zp"; zq: "au.zq"; zr: "au.zr"; zs: "au.zs"; zt: "au.zt"; zu: "au.zu"; zv: "au.zv"; zw: "au.zw"; zx: "au.zx"; zy: "au.zy"; zz: "au.zz"; }; av: { aa: "av.aa"; ab: "av.ab"; ac: "av.ac"; ad: "av.ad"; ae: "av.ae"; af: "av.af"; ag: "av.ag"; ah: "av.ah"; ai: "av.ai"; aj: "av.aj"; ak: "av.ak"; al: "av.al"; am: "av.am"; an: "av.an"; ao: "av.ao"; ap: "av.ap"; aq: "av.aq"; ar: "av.ar"; as: "av.as"; at: "av.at"; au: "av.au"; av: "av.av"; aw: "av.aw"; ax: "av.ax"; ay: "av.ay"; az: "av.az"; ba: "av.ba"; bb: "av.bb"; bc: "av.bc"; bd: "av.bd"; be: "av.be"; bf: "av.bf"; bg: "av.bg"; bh: "av.bh"; bi: "av.bi"; bj: "av.bj"; bk: "av.bk"; bl: "av.bl"; bm: "av.bm"; bn: "av.bn"; bo: "av.bo"; bp: "av.bp"; bq: "av.bq"; br: "av.br"; bs: "av.bs"; bt: "av.bt"; bu: "av.bu"; bv: "av.bv"; bw: "av.bw"; bx: "av.bx"; by: "av.by"; bz: "av.bz"; ca: "av.ca"; cb: "av.cb"; cc: "av.cc"; cd: "av.cd"; ce: "av.ce"; cf: "av.cf"; cg: "av.cg"; ch: "av.ch"; ci: "av.ci"; cj: "av.cj"; ck: "av.ck"; cl: "av.cl"; cm: "av.cm"; cn: "av.cn"; co: "av.co"; cp: "av.cp"; cq: "av.cq"; cr: "av.cr"; cs: "av.cs"; ct: "av.ct"; cu: "av.cu"; cv: "av.cv"; cw: "av.cw"; cx: "av.cx"; cy: "av.cy"; cz: "av.cz"; da: "av.da"; db: "av.db"; dc: "av.dc"; dd: "av.dd"; de: "av.de"; df: "av.df"; dg: "av.dg"; dh: "av.dh"; di: "av.di"; dj: "av.dj"; dk: "av.dk"; dl: "av.dl"; dm: "av.dm"; dn: "av.dn"; do: "av.do"; dp: "av.dp"; dq: "av.dq"; dr: "av.dr"; ds: "av.ds"; dt: "av.dt"; du: "av.du"; dv: "av.dv"; dw: "av.dw"; dx: "av.dx"; dy: "av.dy"; dz: "av.dz"; ea: "av.ea"; eb: "av.eb"; ec: "av.ec"; ed: "av.ed"; ee: "av.ee"; ef: "av.ef"; eg: "av.eg"; eh: "av.eh"; ei: "av.ei"; ej: "av.ej"; ek: "av.ek"; el: "av.el"; em: "av.em"; en: "av.en"; eo: "av.eo"; ep: "av.ep"; eq: "av.eq"; er: "av.er"; es: "av.es"; et: "av.et"; eu: "av.eu"; ev: "av.ev"; ew: "av.ew"; ex: "av.ex"; ey: "av.ey"; ez: "av.ez"; fa: "av.fa"; fb: "av.fb"; fc: "av.fc"; fd: "av.fd"; fe: "av.fe"; ff: "av.ff"; fg: "av.fg"; fh: "av.fh"; fi: "av.fi"; fj: "av.fj"; fk: "av.fk"; fl: "av.fl"; fm: "av.fm"; fn: "av.fn"; fo: "av.fo"; fp: "av.fp"; fq: "av.fq"; fr: "av.fr"; fs: "av.fs"; ft: "av.ft"; fu: "av.fu"; fv: "av.fv"; fw: "av.fw"; fx: "av.fx"; fy: "av.fy"; fz: "av.fz"; ga: "av.ga"; gb: "av.gb"; gc: "av.gc"; gd: "av.gd"; ge: "av.ge"; gf: "av.gf"; gg: "av.gg"; gh: "av.gh"; gi: "av.gi"; gj: "av.gj"; gk: "av.gk"; gl: "av.gl"; gm: "av.gm"; gn: "av.gn"; go: "av.go"; gp: "av.gp"; gq: "av.gq"; gr: "av.gr"; gs: "av.gs"; gt: "av.gt"; gu: "av.gu"; gv: "av.gv"; gw: "av.gw"; gx: "av.gx"; gy: "av.gy"; gz: "av.gz"; ha: "av.ha"; hb: "av.hb"; hc: "av.hc"; hd: "av.hd"; he: "av.he"; hf: "av.hf"; hg: "av.hg"; hh: "av.hh"; hi: "av.hi"; hj: "av.hj"; hk: "av.hk"; hl: "av.hl"; hm: "av.hm"; hn: "av.hn"; ho: "av.ho"; hp: "av.hp"; hq: "av.hq"; hr: "av.hr"; hs: "av.hs"; ht: "av.ht"; hu: "av.hu"; hv: "av.hv"; hw: "av.hw"; hx: "av.hx"; hy: "av.hy"; hz: "av.hz"; ia: "av.ia"; ib: "av.ib"; ic: "av.ic"; id: "av.id"; ie: "av.ie"; if: "av.if"; ig: "av.ig"; ih: "av.ih"; ii: "av.ii"; ij: "av.ij"; ik: "av.ik"; il: "av.il"; im: "av.im"; in: "av.in"; io: "av.io"; ip: "av.ip"; iq: "av.iq"; ir: "av.ir"; is: "av.is"; it: "av.it"; iu: "av.iu"; iv: "av.iv"; iw: "av.iw"; ix: "av.ix"; iy: "av.iy"; iz: "av.iz"; ja: "av.ja"; jb: "av.jb"; jc: "av.jc"; jd: "av.jd"; je: "av.je"; jf: "av.jf"; jg: "av.jg"; jh: "av.jh"; ji: "av.ji"; jj: "av.jj"; jk: "av.jk"; jl: "av.jl"; jm: "av.jm"; jn: "av.jn"; jo: "av.jo"; jp: "av.jp"; jq: "av.jq"; jr: "av.jr"; js: "av.js"; jt: "av.jt"; ju: "av.ju"; jv: "av.jv"; jw: "av.jw"; jx: "av.jx"; jy: "av.jy"; jz: "av.jz"; ka: "av.ka"; kb: "av.kb"; kc: "av.kc"; kd: "av.kd"; ke: "av.ke"; kf: "av.kf"; kg: "av.kg"; kh: "av.kh"; ki: "av.ki"; kj: "av.kj"; kk: "av.kk"; kl: "av.kl"; km: "av.km"; kn: "av.kn"; ko: "av.ko"; kp: "av.kp"; kq: "av.kq"; kr: "av.kr"; ks: "av.ks"; kt: "av.kt"; ku: "av.ku"; kv: "av.kv"; kw: "av.kw"; kx: "av.kx"; ky: "av.ky"; kz: "av.kz"; la: "av.la"; lb: "av.lb"; lc: "av.lc"; ld: "av.ld"; le: "av.le"; lf: "av.lf"; lg: "av.lg"; lh: "av.lh"; li: "av.li"; lj: "av.lj"; lk: "av.lk"; ll: "av.ll"; lm: "av.lm"; ln: "av.ln"; lo: "av.lo"; lp: "av.lp"; lq: "av.lq"; lr: "av.lr"; ls: "av.ls"; lt: "av.lt"; lu: "av.lu"; lv: "av.lv"; lw: "av.lw"; lx: "av.lx"; ly: "av.ly"; lz: "av.lz"; ma: "av.ma"; mb: "av.mb"; mc: "av.mc"; md: "av.md"; me: "av.me"; mf: "av.mf"; mg: "av.mg"; mh: "av.mh"; mi: "av.mi"; mj: "av.mj"; mk: "av.mk"; ml: "av.ml"; mm: "av.mm"; mn: "av.mn"; mo: "av.mo"; mp: "av.mp"; mq: "av.mq"; mr: "av.mr"; ms: "av.ms"; mt: "av.mt"; mu: "av.mu"; mv: "av.mv"; mw: "av.mw"; mx: "av.mx"; my: "av.my"; mz: "av.mz"; na: "av.na"; nb: "av.nb"; nc: "av.nc"; nd: "av.nd"; ne: "av.ne"; nf: "av.nf"; ng: "av.ng"; nh: "av.nh"; ni: "av.ni"; nj: "av.nj"; nk: "av.nk"; nl: "av.nl"; nm: "av.nm"; nn: "av.nn"; no: "av.no"; np: "av.np"; nq: "av.nq"; nr: "av.nr"; ns: "av.ns"; nt: "av.nt"; nu: "av.nu"; nv: "av.nv"; nw: "av.nw"; nx: "av.nx"; ny: "av.ny"; nz: "av.nz"; oa: "av.oa"; ob: "av.ob"; oc: "av.oc"; od: "av.od"; oe: "av.oe"; of: "av.of"; og: "av.og"; oh: "av.oh"; oi: "av.oi"; oj: "av.oj"; ok: "av.ok"; ol: "av.ol"; om: "av.om"; on: "av.on"; oo: "av.oo"; op: "av.op"; oq: "av.oq"; or: "av.or"; os: "av.os"; ot: "av.ot"; ou: "av.ou"; ov: "av.ov"; ow: "av.ow"; ox: "av.ox"; oy: "av.oy"; oz: "av.oz"; pa: "av.pa"; pb: "av.pb"; pc: "av.pc"; pd: "av.pd"; pe: "av.pe"; pf: "av.pf"; pg: "av.pg"; ph: "av.ph"; pi: "av.pi"; pj: "av.pj"; pk: "av.pk"; pl: "av.pl"; pm: "av.pm"; pn: "av.pn"; po: "av.po"; pp: "av.pp"; pq: "av.pq"; pr: "av.pr"; ps: "av.ps"; pt: "av.pt"; pu: "av.pu"; pv: "av.pv"; pw: "av.pw"; px: "av.px"; py: "av.py"; pz: "av.pz"; qa: "av.qa"; qb: "av.qb"; qc: "av.qc"; qd: "av.qd"; qe: "av.qe"; qf: "av.qf"; qg: "av.qg"; qh: "av.qh"; qi: "av.qi"; qj: "av.qj"; qk: "av.qk"; ql: "av.ql"; qm: "av.qm"; qn: "av.qn"; qo: "av.qo"; qp: "av.qp"; qq: "av.qq"; qr: "av.qr"; qs: "av.qs"; qt: "av.qt"; qu: "av.qu"; qv: "av.qv"; qw: "av.qw"; qx: "av.qx"; qy: "av.qy"; qz: "av.qz"; ra: "av.ra"; rb: "av.rb"; rc: "av.rc"; rd: "av.rd"; re: "av.re"; rf: "av.rf"; rg: "av.rg"; rh: "av.rh"; ri: "av.ri"; rj: "av.rj"; rk: "av.rk"; rl: "av.rl"; rm: "av.rm"; rn: "av.rn"; ro: "av.ro"; rp: "av.rp"; rq: "av.rq"; rr: "av.rr"; rs: "av.rs"; rt: "av.rt"; ru: "av.ru"; rv: "av.rv"; rw: "av.rw"; rx: "av.rx"; ry: "av.ry"; rz: "av.rz"; sa: "av.sa"; sb: "av.sb"; sc: "av.sc"; sd: "av.sd"; se: "av.se"; sf: "av.sf"; sg: "av.sg"; sh: "av.sh"; si: "av.si"; sj: "av.sj"; sk: "av.sk"; sl: "av.sl"; sm: "av.sm"; sn: "av.sn"; so: "av.so"; sp: "av.sp"; sq: "av.sq"; sr: "av.sr"; ss: "av.ss"; st: "av.st"; su: "av.su"; sv: "av.sv"; sw: "av.sw"; sx: "av.sx"; sy: "av.sy"; sz: "av.sz"; ta: "av.ta"; tb: "av.tb"; tc: "av.tc"; td: "av.td"; te: "av.te"; tf: "av.tf"; tg: "av.tg"; th: "av.th"; ti: "av.ti"; tj: "av.tj"; tk: "av.tk"; tl: "av.tl"; tm: "av.tm"; tn: "av.tn"; to: "av.to"; tp: "av.tp"; tq: "av.tq"; tr: "av.tr"; ts: "av.ts"; tt: "av.tt"; tu: "av.tu"; tv: "av.tv"; tw: "av.tw"; tx: "av.tx"; ty: "av.ty"; tz: "av.tz"; ua: "av.ua"; ub: "av.ub"; uc: "av.uc"; ud: "av.ud"; ue: "av.ue"; uf: "av.uf"; ug: "av.ug"; uh: "av.uh"; ui: "av.ui"; uj: "av.uj"; uk: "av.uk"; ul: "av.ul"; um: "av.um"; un: "av.un"; uo: "av.uo"; up: "av.up"; uq: "av.uq"; ur: "av.ur"; us: "av.us"; ut: "av.ut"; uu: "av.uu"; uv: "av.uv"; uw: "av.uw"; ux: "av.ux"; uy: "av.uy"; uz: "av.uz"; va: "av.va"; vb: "av.vb"; vc: "av.vc"; vd: "av.vd"; ve: "av.ve"; vf: "av.vf"; vg: "av.vg"; vh: "av.vh"; vi: "av.vi"; vj: "av.vj"; vk: "av.vk"; vl: "av.vl"; vm: "av.vm"; vn: "av.vn"; vo: "av.vo"; vp: "av.vp"; vq: "av.vq"; vr: "av.vr"; vs: "av.vs"; vt: "av.vt"; vu: "av.vu"; vv: "av.vv"; vw: "av.vw"; vx: "av.vx"; vy: "av.vy"; vz: "av.vz"; wa: "av.wa"; wb: "av.wb"; wc: "av.wc"; wd: "av.wd"; we: "av.we"; wf: "av.wf"; wg: "av.wg"; wh: "av.wh"; wi: "av.wi"; wj: "av.wj"; wk: "av.wk"; wl: "av.wl"; wm: "av.wm"; wn: "av.wn"; wo: "av.wo"; wp: "av.wp"; wq: "av.wq"; wr: "av.wr"; ws: "av.ws"; wt: "av.wt"; wu: "av.wu"; wv: "av.wv"; ww: "av.ww"; wx: "av.wx"; wy: "av.wy"; wz: "av.wz"; xa: "av.xa"; xb: "av.xb"; xc: "av.xc"; xd: "av.xd"; xe: "av.xe"; xf: "av.xf"; xg: "av.xg"; xh: "av.xh"; xi: "av.xi"; xj: "av.xj"; xk: "av.xk"; xl: "av.xl"; xm: "av.xm"; xn: "av.xn"; xo: "av.xo"; xp: "av.xp"; xq: "av.xq"; xr: "av.xr"; xs: "av.xs"; xt: "av.xt"; xu: "av.xu"; xv: "av.xv"; xw: "av.xw"; xx: "av.xx"; xy: "av.xy"; xz: "av.xz"; ya: "av.ya"; yb: "av.yb"; yc: "av.yc"; yd: "av.yd"; ye: "av.ye"; yf: "av.yf"; yg: "av.yg"; yh: "av.yh"; yi: "av.yi"; yj: "av.yj"; yk: "av.yk"; yl: "av.yl"; ym: "av.ym"; yn: "av.yn"; yo: "av.yo"; yp: "av.yp"; yq: "av.yq"; yr: "av.yr"; ys: "av.ys"; yt: "av.yt"; yu: "av.yu"; yv: "av.yv"; yw: "av.yw"; yx: "av.yx"; yy: "av.yy"; yz: "av.yz"; za: "av.za"; zb: "av.zb"; zc: "av.zc"; zd: "av.zd"; ze: "av.ze"; zf: "av.zf"; zg: "av.zg"; zh: "av.zh"; zi: "av.zi"; zj: "av.zj"; zk: "av.zk"; zl: "av.zl"; zm: "av.zm"; zn: "av.zn"; zo: "av.zo"; zp: "av.zp"; zq: "av.zq"; zr: "av.zr"; zs: "av.zs"; zt: "av.zt"; zu: "av.zu"; zv: "av.zv"; zw: "av.zw"; zx: "av.zx"; zy: "av.zy"; zz: "av.zz"; }; aw: { aa: "aw.aa"; ab: "aw.ab"; ac: "aw.ac"; ad: "aw.ad"; ae: "aw.ae"; af: "aw.af"; ag: "aw.ag"; ah: "aw.ah"; ai: "aw.ai"; aj: "aw.aj"; ak: "aw.ak"; al: "aw.al"; am: "aw.am"; an: "aw.an"; ao: "aw.ao"; ap: "aw.ap"; aq: "aw.aq"; ar: "aw.ar"; as: "aw.as"; at: "aw.at"; au: "aw.au"; av: "aw.av"; aw: "aw.aw"; ax: "aw.ax"; ay: "aw.ay"; az: "aw.az"; ba: "aw.ba"; bb: "aw.bb"; bc: "aw.bc"; bd: "aw.bd"; be: "aw.be"; bf: "aw.bf"; bg: "aw.bg"; bh: "aw.bh"; bi: "aw.bi"; bj: "aw.bj"; bk: "aw.bk"; bl: "aw.bl"; bm: "aw.bm"; bn: "aw.bn"; bo: "aw.bo"; bp: "aw.bp"; bq: "aw.bq"; br: "aw.br"; bs: "aw.bs"; bt: "aw.bt"; bu: "aw.bu"; bv: "aw.bv"; bw: "aw.bw"; bx: "aw.bx"; by: "aw.by"; bz: "aw.bz"; ca: "aw.ca"; cb: "aw.cb"; cc: "aw.cc"; cd: "aw.cd"; ce: "aw.ce"; cf: "aw.cf"; cg: "aw.cg"; ch: "aw.ch"; ci: "aw.ci"; cj: "aw.cj"; ck: "aw.ck"; cl: "aw.cl"; cm: "aw.cm"; cn: "aw.cn"; co: "aw.co"; cp: "aw.cp"; cq: "aw.cq"; cr: "aw.cr"; cs: "aw.cs"; ct: "aw.ct"; cu: "aw.cu"; cv: "aw.cv"; cw: "aw.cw"; cx: "aw.cx"; cy: "aw.cy"; cz: "aw.cz"; da: "aw.da"; db: "aw.db"; dc: "aw.dc"; dd: "aw.dd"; de: "aw.de"; df: "aw.df"; dg: "aw.dg"; dh: "aw.dh"; di: "aw.di"; dj: "aw.dj"; dk: "aw.dk"; dl: "aw.dl"; dm: "aw.dm"; dn: "aw.dn"; do: "aw.do"; dp: "aw.dp"; dq: "aw.dq"; dr: "aw.dr"; ds: "aw.ds"; dt: "aw.dt"; du: "aw.du"; dv: "aw.dv"; dw: "aw.dw"; dx: "aw.dx"; dy: "aw.dy"; dz: "aw.dz"; ea: "aw.ea"; eb: "aw.eb"; ec: "aw.ec"; ed: "aw.ed"; ee: "aw.ee"; ef: "aw.ef"; eg: "aw.eg"; eh: "aw.eh"; ei: "aw.ei"; ej: "aw.ej"; ek: "aw.ek"; el: "aw.el"; em: "aw.em"; en: "aw.en"; eo: "aw.eo"; ep: "aw.ep"; eq: "aw.eq"; er: "aw.er"; es: "aw.es"; et: "aw.et"; eu: "aw.eu"; ev: "aw.ev"; ew: "aw.ew"; ex: "aw.ex"; ey: "aw.ey"; ez: "aw.ez"; fa: "aw.fa"; fb: "aw.fb"; fc: "aw.fc"; fd: "aw.fd"; fe: "aw.fe"; ff: "aw.ff"; fg: "aw.fg"; fh: "aw.fh"; fi: "aw.fi"; fj: "aw.fj"; fk: "aw.fk"; fl: "aw.fl"; fm: "aw.fm"; fn: "aw.fn"; fo: "aw.fo"; fp: "aw.fp"; fq: "aw.fq"; fr: "aw.fr"; fs: "aw.fs"; ft: "aw.ft"; fu: "aw.fu"; fv: "aw.fv"; fw: "aw.fw"; fx: "aw.fx"; fy: "aw.fy"; fz: "aw.fz"; ga: "aw.ga"; gb: "aw.gb"; gc: "aw.gc"; gd: "aw.gd"; ge: "aw.ge"; gf: "aw.gf"; gg: "aw.gg"; gh: "aw.gh"; gi: "aw.gi"; gj: "aw.gj"; gk: "aw.gk"; gl: "aw.gl"; gm: "aw.gm"; gn: "aw.gn"; go: "aw.go"; gp: "aw.gp"; gq: "aw.gq"; gr: "aw.gr"; gs: "aw.gs"; gt: "aw.gt"; gu: "aw.gu"; gv: "aw.gv"; gw: "aw.gw"; gx: "aw.gx"; gy: "aw.gy"; gz: "aw.gz"; ha: "aw.ha"; hb: "aw.hb"; hc: "aw.hc"; hd: "aw.hd"; he: "aw.he"; hf: "aw.hf"; hg: "aw.hg"; hh: "aw.hh"; hi: "aw.hi"; hj: "aw.hj"; hk: "aw.hk"; hl: "aw.hl"; hm: "aw.hm"; hn: "aw.hn"; ho: "aw.ho"; hp: "aw.hp"; hq: "aw.hq"; hr: "aw.hr"; hs: "aw.hs"; ht: "aw.ht"; hu: "aw.hu"; hv: "aw.hv"; hw: "aw.hw"; hx: "aw.hx"; hy: "aw.hy"; hz: "aw.hz"; ia: "aw.ia"; ib: "aw.ib"; ic: "aw.ic"; id: "aw.id"; ie: "aw.ie"; if: "aw.if"; ig: "aw.ig"; ih: "aw.ih"; ii: "aw.ii"; ij: "aw.ij"; ik: "aw.ik"; il: "aw.il"; im: "aw.im"; in: "aw.in"; io: "aw.io"; ip: "aw.ip"; iq: "aw.iq"; ir: "aw.ir"; is: "aw.is"; it: "aw.it"; iu: "aw.iu"; iv: "aw.iv"; iw: "aw.iw"; ix: "aw.ix"; iy: "aw.iy"; iz: "aw.iz"; ja: "aw.ja"; jb: "aw.jb"; jc: "aw.jc"; jd: "aw.jd"; je: "aw.je"; jf: "aw.jf"; jg: "aw.jg"; jh: "aw.jh"; ji: "aw.ji"; jj: "aw.jj"; jk: "aw.jk"; jl: "aw.jl"; jm: "aw.jm"; jn: "aw.jn"; jo: "aw.jo"; jp: "aw.jp"; jq: "aw.jq"; jr: "aw.jr"; js: "aw.js"; jt: "aw.jt"; ju: "aw.ju"; jv: "aw.jv"; jw: "aw.jw"; jx: "aw.jx"; jy: "aw.jy"; jz: "aw.jz"; ka: "aw.ka"; kb: "aw.kb"; kc: "aw.kc"; kd: "aw.kd"; ke: "aw.ke"; kf: "aw.kf"; kg: "aw.kg"; kh: "aw.kh"; ki: "aw.ki"; kj: "aw.kj"; kk: "aw.kk"; kl: "aw.kl"; km: "aw.km"; kn: "aw.kn"; ko: "aw.ko"; kp: "aw.kp"; kq: "aw.kq"; kr: "aw.kr"; ks: "aw.ks"; kt: "aw.kt"; ku: "aw.ku"; kv: "aw.kv"; kw: "aw.kw"; kx: "aw.kx"; ky: "aw.ky"; kz: "aw.kz"; la: "aw.la"; lb: "aw.lb"; lc: "aw.lc"; ld: "aw.ld"; le: "aw.le"; lf: "aw.lf"; lg: "aw.lg"; lh: "aw.lh"; li: "aw.li"; lj: "aw.lj"; lk: "aw.lk"; ll: "aw.ll"; lm: "aw.lm"; ln: "aw.ln"; lo: "aw.lo"; lp: "aw.lp"; lq: "aw.lq"; lr: "aw.lr"; ls: "aw.ls"; lt: "aw.lt"; lu: "aw.lu"; lv: "aw.lv"; lw: "aw.lw"; lx: "aw.lx"; ly: "aw.ly"; lz: "aw.lz"; ma: "aw.ma"; mb: "aw.mb"; mc: "aw.mc"; md: "aw.md"; me: "aw.me"; mf: "aw.mf"; mg: "aw.mg"; mh: "aw.mh"; mi: "aw.mi"; mj: "aw.mj"; mk: "aw.mk"; ml: "aw.ml"; mm: "aw.mm"; mn: "aw.mn"; mo: "aw.mo"; mp: "aw.mp"; mq: "aw.mq"; mr: "aw.mr"; ms: "aw.ms"; mt: "aw.mt"; mu: "aw.mu"; mv: "aw.mv"; mw: "aw.mw"; mx: "aw.mx"; my: "aw.my"; mz: "aw.mz"; na: "aw.na"; nb: "aw.nb"; nc: "aw.nc"; nd: "aw.nd"; ne: "aw.ne"; nf: "aw.nf"; ng: "aw.ng"; nh: "aw.nh"; ni: "aw.ni"; nj: "aw.nj"; nk: "aw.nk"; nl: "aw.nl"; nm: "aw.nm"; nn: "aw.nn"; no: "aw.no"; np: "aw.np"; nq: "aw.nq"; nr: "aw.nr"; ns: "aw.ns"; nt: "aw.nt"; nu: "aw.nu"; nv: "aw.nv"; nw: "aw.nw"; nx: "aw.nx"; ny: "aw.ny"; nz: "aw.nz"; oa: "aw.oa"; ob: "aw.ob"; oc: "aw.oc"; od: "aw.od"; oe: "aw.oe"; of: "aw.of"; og: "aw.og"; oh: "aw.oh"; oi: "aw.oi"; oj: "aw.oj"; ok: "aw.ok"; ol: "aw.ol"; om: "aw.om"; on: "aw.on"; oo: "aw.oo"; op: "aw.op"; oq: "aw.oq"; or: "aw.or"; os: "aw.os"; ot: "aw.ot"; ou: "aw.ou"; ov: "aw.ov"; ow: "aw.ow"; ox: "aw.ox"; oy: "aw.oy"; oz: "aw.oz"; pa: "aw.pa"; pb: "aw.pb"; pc: "aw.pc"; pd: "aw.pd"; pe: "aw.pe"; pf: "aw.pf"; pg: "aw.pg"; ph: "aw.ph"; pi: "aw.pi"; pj: "aw.pj"; pk: "aw.pk"; pl: "aw.pl"; pm: "aw.pm"; pn: "aw.pn"; po: "aw.po"; pp: "aw.pp"; pq: "aw.pq"; pr: "aw.pr"; ps: "aw.ps"; pt: "aw.pt"; pu: "aw.pu"; pv: "aw.pv"; pw: "aw.pw"; px: "aw.px"; py: "aw.py"; pz: "aw.pz"; qa: "aw.qa"; qb: "aw.qb"; qc: "aw.qc"; qd: "aw.qd"; qe: "aw.qe"; qf: "aw.qf"; qg: "aw.qg"; qh: "aw.qh"; qi: "aw.qi"; qj: "aw.qj"; qk: "aw.qk"; ql: "aw.ql"; qm: "aw.qm"; qn: "aw.qn"; qo: "aw.qo"; qp: "aw.qp"; qq: "aw.qq"; qr: "aw.qr"; qs: "aw.qs"; qt: "aw.qt"; qu: "aw.qu"; qv: "aw.qv"; qw: "aw.qw"; qx: "aw.qx"; qy: "aw.qy"; qz: "aw.qz"; ra: "aw.ra"; rb: "aw.rb"; rc: "aw.rc"; rd: "aw.rd"; re: "aw.re"; rf: "aw.rf"; rg: "aw.rg"; rh: "aw.rh"; ri: "aw.ri"; rj: "aw.rj"; rk: "aw.rk"; rl: "aw.rl"; rm: "aw.rm"; rn: "aw.rn"; ro: "aw.ro"; rp: "aw.rp"; rq: "aw.rq"; rr: "aw.rr"; rs: "aw.rs"; rt: "aw.rt"; ru: "aw.ru"; rv: "aw.rv"; rw: "aw.rw"; rx: "aw.rx"; ry: "aw.ry"; rz: "aw.rz"; sa: "aw.sa"; sb: "aw.sb"; sc: "aw.sc"; sd: "aw.sd"; se: "aw.se"; sf: "aw.sf"; sg: "aw.sg"; sh: "aw.sh"; si: "aw.si"; sj: "aw.sj"; sk: "aw.sk"; sl: "aw.sl"; sm: "aw.sm"; sn: "aw.sn"; so: "aw.so"; sp: "aw.sp"; sq: "aw.sq"; sr: "aw.sr"; ss: "aw.ss"; st: "aw.st"; su: "aw.su"; sv: "aw.sv"; sw: "aw.sw"; sx: "aw.sx"; sy: "aw.sy"; sz: "aw.sz"; ta: "aw.ta"; tb: "aw.tb"; tc: "aw.tc"; td: "aw.td"; te: "aw.te"; tf: "aw.tf"; tg: "aw.tg"; th: "aw.th"; ti: "aw.ti"; tj: "aw.tj"; tk: "aw.tk"; tl: "aw.tl"; tm: "aw.tm"; tn: "aw.tn"; to: "aw.to"; tp: "aw.tp"; tq: "aw.tq"; tr: "aw.tr"; ts: "aw.ts"; tt: "aw.tt"; tu: "aw.tu"; tv: "aw.tv"; tw: "aw.tw"; tx: "aw.tx"; ty: "aw.ty"; tz: "aw.tz"; ua: "aw.ua"; ub: "aw.ub"; uc: "aw.uc"; ud: "aw.ud"; ue: "aw.ue"; uf: "aw.uf"; ug: "aw.ug"; uh: "aw.uh"; ui: "aw.ui"; uj: "aw.uj"; uk: "aw.uk"; ul: "aw.ul"; um: "aw.um"; un: "aw.un"; uo: "aw.uo"; up: "aw.up"; uq: "aw.uq"; ur: "aw.ur"; us: "aw.us"; ut: "aw.ut"; uu: "aw.uu"; uv: "aw.uv"; uw: "aw.uw"; ux: "aw.ux"; uy: "aw.uy"; uz: "aw.uz"; va: "aw.va"; vb: "aw.vb"; vc: "aw.vc"; vd: "aw.vd"; ve: "aw.ve"; vf: "aw.vf"; vg: "aw.vg"; vh: "aw.vh"; vi: "aw.vi"; vj: "aw.vj"; vk: "aw.vk"; vl: "aw.vl"; vm: "aw.vm"; vn: "aw.vn"; vo: "aw.vo"; vp: "aw.vp"; vq: "aw.vq"; vr: "aw.vr"; vs: "aw.vs"; vt: "aw.vt"; vu: "aw.vu"; vv: "aw.vv"; vw: "aw.vw"; vx: "aw.vx"; vy: "aw.vy"; vz: "aw.vz"; wa: "aw.wa"; wb: "aw.wb"; wc: "aw.wc"; wd: "aw.wd"; we: "aw.we"; wf: "aw.wf"; wg: "aw.wg"; wh: "aw.wh"; wi: "aw.wi"; wj: "aw.wj"; wk: "aw.wk"; wl: "aw.wl"; wm: "aw.wm"; wn: "aw.wn"; wo: "aw.wo"; wp: "aw.wp"; wq: "aw.wq"; wr: "aw.wr"; ws: "aw.ws"; wt: "aw.wt"; wu: "aw.wu"; wv: "aw.wv"; ww: "aw.ww"; wx: "aw.wx"; wy: "aw.wy"; wz: "aw.wz"; xa: "aw.xa"; xb: "aw.xb"; xc: "aw.xc"; xd: "aw.xd"; xe: "aw.xe"; xf: "aw.xf"; xg: "aw.xg"; xh: "aw.xh"; xi: "aw.xi"; xj: "aw.xj"; xk: "aw.xk"; xl: "aw.xl"; xm: "aw.xm"; xn: "aw.xn"; xo: "aw.xo"; xp: "aw.xp"; xq: "aw.xq"; xr: "aw.xr"; xs: "aw.xs"; xt: "aw.xt"; xu: "aw.xu"; xv: "aw.xv"; xw: "aw.xw"; xx: "aw.xx"; xy: "aw.xy"; xz: "aw.xz"; ya: "aw.ya"; yb: "aw.yb"; yc: "aw.yc"; yd: "aw.yd"; ye: "aw.ye"; yf: "aw.yf"; yg: "aw.yg"; yh: "aw.yh"; yi: "aw.yi"; yj: "aw.yj"; yk: "aw.yk"; yl: "aw.yl"; ym: "aw.ym"; yn: "aw.yn"; yo: "aw.yo"; yp: "aw.yp"; yq: "aw.yq"; yr: "aw.yr"; ys: "aw.ys"; yt: "aw.yt"; yu: "aw.yu"; yv: "aw.yv"; yw: "aw.yw"; yx: "aw.yx"; yy: "aw.yy"; yz: "aw.yz"; za: "aw.za"; zb: "aw.zb"; zc: "aw.zc"; zd: "aw.zd"; ze: "aw.ze"; zf: "aw.zf"; zg: "aw.zg"; zh: "aw.zh"; zi: "aw.zi"; zj: "aw.zj"; zk: "aw.zk"; zl: "aw.zl"; zm: "aw.zm"; zn: "aw.zn"; zo: "aw.zo"; zp: "aw.zp"; zq: "aw.zq"; zr: "aw.zr"; zs: "aw.zs"; zt: "aw.zt"; zu: "aw.zu"; zv: "aw.zv"; zw: "aw.zw"; zx: "aw.zx"; zy: "aw.zy"; zz: "aw.zz"; }; ax: { aa: "ax.aa"; ab: "ax.ab"; ac: "ax.ac"; ad: "ax.ad"; ae: "ax.ae"; af: "ax.af"; ag: "ax.ag"; ah: "ax.ah"; ai: "ax.ai"; aj: "ax.aj"; ak: "ax.ak"; al: "ax.al"; am: "ax.am"; an: "ax.an"; ao: "ax.ao"; ap: "ax.ap"; aq: "ax.aq"; ar: "ax.ar"; as: "ax.as"; at: "ax.at"; au: "ax.au"; av: "ax.av"; aw: "ax.aw"; ax: "ax.ax"; ay: "ax.ay"; az: "ax.az"; ba: "ax.ba"; bb: "ax.bb"; bc: "ax.bc"; bd: "ax.bd"; be: "ax.be"; bf: "ax.bf"; bg: "ax.bg"; bh: "ax.bh"; bi: "ax.bi"; bj: "ax.bj"; bk: "ax.bk"; bl: "ax.bl"; bm: "ax.bm"; bn: "ax.bn"; bo: "ax.bo"; bp: "ax.bp"; bq: "ax.bq"; br: "ax.br"; bs: "ax.bs"; bt: "ax.bt"; bu: "ax.bu"; bv: "ax.bv"; bw: "ax.bw"; bx: "ax.bx"; by: "ax.by"; bz: "ax.bz"; ca: "ax.ca"; cb: "ax.cb"; cc: "ax.cc"; cd: "ax.cd"; ce: "ax.ce"; cf: "ax.cf"; cg: "ax.cg"; ch: "ax.ch"; ci: "ax.ci"; cj: "ax.cj"; ck: "ax.ck"; cl: "ax.cl"; cm: "ax.cm"; cn: "ax.cn"; co: "ax.co"; cp: "ax.cp"; cq: "ax.cq"; cr: "ax.cr"; cs: "ax.cs"; ct: "ax.ct"; cu: "ax.cu"; cv: "ax.cv"; cw: "ax.cw"; cx: "ax.cx"; cy: "ax.cy"; cz: "ax.cz"; da: "ax.da"; db: "ax.db"; dc: "ax.dc"; dd: "ax.dd"; de: "ax.de"; df: "ax.df"; dg: "ax.dg"; dh: "ax.dh"; di: "ax.di"; dj: "ax.dj"; dk: "ax.dk"; dl: "ax.dl"; dm: "ax.dm"; dn: "ax.dn"; do: "ax.do"; dp: "ax.dp"; dq: "ax.dq"; dr: "ax.dr"; ds: "ax.ds"; dt: "ax.dt"; du: "ax.du"; dv: "ax.dv"; dw: "ax.dw"; dx: "ax.dx"; dy: "ax.dy"; dz: "ax.dz"; ea: "ax.ea"; eb: "ax.eb"; ec: "ax.ec"; ed: "ax.ed"; ee: "ax.ee"; ef: "ax.ef"; eg: "ax.eg"; eh: "ax.eh"; ei: "ax.ei"; ej: "ax.ej"; ek: "ax.ek"; el: "ax.el"; em: "ax.em"; en: "ax.en"; eo: "ax.eo"; ep: "ax.ep"; eq: "ax.eq"; er: "ax.er"; es: "ax.es"; et: "ax.et"; eu: "ax.eu"; ev: "ax.ev"; ew: "ax.ew"; ex: "ax.ex"; ey: "ax.ey"; ez: "ax.ez"; fa: "ax.fa"; fb: "ax.fb"; fc: "ax.fc"; fd: "ax.fd"; fe: "ax.fe"; ff: "ax.ff"; fg: "ax.fg"; fh: "ax.fh"; fi: "ax.fi"; fj: "ax.fj"; fk: "ax.fk"; fl: "ax.fl"; fm: "ax.fm"; fn: "ax.fn"; fo: "ax.fo"; fp: "ax.fp"; fq: "ax.fq"; fr: "ax.fr"; fs: "ax.fs"; ft: "ax.ft"; fu: "ax.fu"; fv: "ax.fv"; fw: "ax.fw"; fx: "ax.fx"; fy: "ax.fy"; fz: "ax.fz"; ga: "ax.ga"; gb: "ax.gb"; gc: "ax.gc"; gd: "ax.gd"; ge: "ax.ge"; gf: "ax.gf"; gg: "ax.gg"; gh: "ax.gh"; gi: "ax.gi"; gj: "ax.gj"; gk: "ax.gk"; gl: "ax.gl"; gm: "ax.gm"; gn: "ax.gn"; go: "ax.go"; gp: "ax.gp"; gq: "ax.gq"; gr: "ax.gr"; gs: "ax.gs"; gt: "ax.gt"; gu: "ax.gu"; gv: "ax.gv"; gw: "ax.gw"; gx: "ax.gx"; gy: "ax.gy"; gz: "ax.gz"; ha: "ax.ha"; hb: "ax.hb"; hc: "ax.hc"; hd: "ax.hd"; he: "ax.he"; hf: "ax.hf"; hg: "ax.hg"; hh: "ax.hh"; hi: "ax.hi"; hj: "ax.hj"; hk: "ax.hk"; hl: "ax.hl"; hm: "ax.hm"; hn: "ax.hn"; ho: "ax.ho"; hp: "ax.hp"; hq: "ax.hq"; hr: "ax.hr"; hs: "ax.hs"; ht: "ax.ht"; hu: "ax.hu"; hv: "ax.hv"; hw: "ax.hw"; hx: "ax.hx"; hy: "ax.hy"; hz: "ax.hz"; ia: "ax.ia"; ib: "ax.ib"; ic: "ax.ic"; id: "ax.id"; ie: "ax.ie"; if: "ax.if"; ig: "ax.ig"; ih: "ax.ih"; ii: "ax.ii"; ij: "ax.ij"; ik: "ax.ik"; il: "ax.il"; im: "ax.im"; in: "ax.in"; io: "ax.io"; ip: "ax.ip"; iq: "ax.iq"; ir: "ax.ir"; is: "ax.is"; it: "ax.it"; iu: "ax.iu"; iv: "ax.iv"; iw: "ax.iw"; ix: "ax.ix"; iy: "ax.iy"; iz: "ax.iz"; ja: "ax.ja"; jb: "ax.jb"; jc: "ax.jc"; jd: "ax.jd"; je: "ax.je"; jf: "ax.jf"; jg: "ax.jg"; jh: "ax.jh"; ji: "ax.ji"; jj: "ax.jj"; jk: "ax.jk"; jl: "ax.jl"; jm: "ax.jm"; jn: "ax.jn"; jo: "ax.jo"; jp: "ax.jp"; jq: "ax.jq"; jr: "ax.jr"; js: "ax.js"; jt: "ax.jt"; ju: "ax.ju"; jv: "ax.jv"; jw: "ax.jw"; jx: "ax.jx"; jy: "ax.jy"; jz: "ax.jz"; ka: "ax.ka"; kb: "ax.kb"; kc: "ax.kc"; kd: "ax.kd"; ke: "ax.ke"; kf: "ax.kf"; kg: "ax.kg"; kh: "ax.kh"; ki: "ax.ki"; kj: "ax.kj"; kk: "ax.kk"; kl: "ax.kl"; km: "ax.km"; kn: "ax.kn"; ko: "ax.ko"; kp: "ax.kp"; kq: "ax.kq"; kr: "ax.kr"; ks: "ax.ks"; kt: "ax.kt"; ku: "ax.ku"; kv: "ax.kv"; kw: "ax.kw"; kx: "ax.kx"; ky: "ax.ky"; kz: "ax.kz"; la: "ax.la"; lb: "ax.lb"; lc: "ax.lc"; ld: "ax.ld"; le: "ax.le"; lf: "ax.lf"; lg: "ax.lg"; lh: "ax.lh"; li: "ax.li"; lj: "ax.lj"; lk: "ax.lk"; ll: "ax.ll"; lm: "ax.lm"; ln: "ax.ln"; lo: "ax.lo"; lp: "ax.lp"; lq: "ax.lq"; lr: "ax.lr"; ls: "ax.ls"; lt: "ax.lt"; lu: "ax.lu"; lv: "ax.lv"; lw: "ax.lw"; lx: "ax.lx"; ly: "ax.ly"; lz: "ax.lz"; ma: "ax.ma"; mb: "ax.mb"; mc: "ax.mc"; md: "ax.md"; me: "ax.me"; mf: "ax.mf"; mg: "ax.mg"; mh: "ax.mh"; mi: "ax.mi"; mj: "ax.mj"; mk: "ax.mk"; ml: "ax.ml"; mm: "ax.mm"; mn: "ax.mn"; mo: "ax.mo"; mp: "ax.mp"; mq: "ax.mq"; mr: "ax.mr"; ms: "ax.ms"; mt: "ax.mt"; mu: "ax.mu"; mv: "ax.mv"; mw: "ax.mw"; mx: "ax.mx"; my: "ax.my"; mz: "ax.mz"; na: "ax.na"; nb: "ax.nb"; nc: "ax.nc"; nd: "ax.nd"; ne: "ax.ne"; nf: "ax.nf"; ng: "ax.ng"; nh: "ax.nh"; ni: "ax.ni"; nj: "ax.nj"; nk: "ax.nk"; nl: "ax.nl"; nm: "ax.nm"; nn: "ax.nn"; no: "ax.no"; np: "ax.np"; nq: "ax.nq"; nr: "ax.nr"; ns: "ax.ns"; nt: "ax.nt"; nu: "ax.nu"; nv: "ax.nv"; nw: "ax.nw"; nx: "ax.nx"; ny: "ax.ny"; nz: "ax.nz"; oa: "ax.oa"; ob: "ax.ob"; oc: "ax.oc"; od: "ax.od"; oe: "ax.oe"; of: "ax.of"; og: "ax.og"; oh: "ax.oh"; oi: "ax.oi"; oj: "ax.oj"; ok: "ax.ok"; ol: "ax.ol"; om: "ax.om"; on: "ax.on"; oo: "ax.oo"; op: "ax.op"; oq: "ax.oq"; or: "ax.or"; os: "ax.os"; ot: "ax.ot"; ou: "ax.ou"; ov: "ax.ov"; ow: "ax.ow"; ox: "ax.ox"; oy: "ax.oy"; oz: "ax.oz"; pa: "ax.pa"; pb: "ax.pb"; pc: "ax.pc"; pd: "ax.pd"; pe: "ax.pe"; pf: "ax.pf"; pg: "ax.pg"; ph: "ax.ph"; pi: "ax.pi"; pj: "ax.pj"; pk: "ax.pk"; pl: "ax.pl"; pm: "ax.pm"; pn: "ax.pn"; po: "ax.po"; pp: "ax.pp"; pq: "ax.pq"; pr: "ax.pr"; ps: "ax.ps"; pt: "ax.pt"; pu: "ax.pu"; pv: "ax.pv"; pw: "ax.pw"; px: "ax.px"; py: "ax.py"; pz: "ax.pz"; qa: "ax.qa"; qb: "ax.qb"; qc: "ax.qc"; qd: "ax.qd"; qe: "ax.qe"; qf: "ax.qf"; qg: "ax.qg"; qh: "ax.qh"; qi: "ax.qi"; qj: "ax.qj"; qk: "ax.qk"; ql: "ax.ql"; qm: "ax.qm"; qn: "ax.qn"; qo: "ax.qo"; qp: "ax.qp"; qq: "ax.qq"; qr: "ax.qr"; qs: "ax.qs"; qt: "ax.qt"; qu: "ax.qu"; qv: "ax.qv"; qw: "ax.qw"; qx: "ax.qx"; qy: "ax.qy"; qz: "ax.qz"; ra: "ax.ra"; rb: "ax.rb"; rc: "ax.rc"; rd: "ax.rd"; re: "ax.re"; rf: "ax.rf"; rg: "ax.rg"; rh: "ax.rh"; ri: "ax.ri"; rj: "ax.rj"; rk: "ax.rk"; rl: "ax.rl"; rm: "ax.rm"; rn: "ax.rn"; ro: "ax.ro"; rp: "ax.rp"; rq: "ax.rq"; rr: "ax.rr"; rs: "ax.rs"; rt: "ax.rt"; ru: "ax.ru"; rv: "ax.rv"; rw: "ax.rw"; rx: "ax.rx"; ry: "ax.ry"; rz: "ax.rz"; sa: "ax.sa"; sb: "ax.sb"; sc: "ax.sc"; sd: "ax.sd"; se: "ax.se"; sf: "ax.sf"; sg: "ax.sg"; sh: "ax.sh"; si: "ax.si"; sj: "ax.sj"; sk: "ax.sk"; sl: "ax.sl"; sm: "ax.sm"; sn: "ax.sn"; so: "ax.so"; sp: "ax.sp"; sq: "ax.sq"; sr: "ax.sr"; ss: "ax.ss"; st: "ax.st"; su: "ax.su"; sv: "ax.sv"; sw: "ax.sw"; sx: "ax.sx"; sy: "ax.sy"; sz: "ax.sz"; ta: "ax.ta"; tb: "ax.tb"; tc: "ax.tc"; td: "ax.td"; te: "ax.te"; tf: "ax.tf"; tg: "ax.tg"; th: "ax.th"; ti: "ax.ti"; tj: "ax.tj"; tk: "ax.tk"; tl: "ax.tl"; tm: "ax.tm"; tn: "ax.tn"; to: "ax.to"; tp: "ax.tp"; tq: "ax.tq"; tr: "ax.tr"; ts: "ax.ts"; tt: "ax.tt"; tu: "ax.tu"; tv: "ax.tv"; tw: "ax.tw"; tx: "ax.tx"; ty: "ax.ty"; tz: "ax.tz"; ua: "ax.ua"; ub: "ax.ub"; uc: "ax.uc"; ud: "ax.ud"; ue: "ax.ue"; uf: "ax.uf"; ug: "ax.ug"; uh: "ax.uh"; ui: "ax.ui"; uj: "ax.uj"; uk: "ax.uk"; ul: "ax.ul"; um: "ax.um"; un: "ax.un"; uo: "ax.uo"; up: "ax.up"; uq: "ax.uq"; ur: "ax.ur"; us: "ax.us"; ut: "ax.ut"; uu: "ax.uu"; uv: "ax.uv"; uw: "ax.uw"; ux: "ax.ux"; uy: "ax.uy"; uz: "ax.uz"; va: "ax.va"; vb: "ax.vb"; vc: "ax.vc"; vd: "ax.vd"; ve: "ax.ve"; vf: "ax.vf"; vg: "ax.vg"; vh: "ax.vh"; vi: "ax.vi"; vj: "ax.vj"; vk: "ax.vk"; vl: "ax.vl"; vm: "ax.vm"; vn: "ax.vn"; vo: "ax.vo"; vp: "ax.vp"; vq: "ax.vq"; vr: "ax.vr"; vs: "ax.vs"; vt: "ax.vt"; vu: "ax.vu"; vv: "ax.vv"; vw: "ax.vw"; vx: "ax.vx"; vy: "ax.vy"; vz: "ax.vz"; wa: "ax.wa"; wb: "ax.wb"; wc: "ax.wc"; wd: "ax.wd"; we: "ax.we"; wf: "ax.wf"; wg: "ax.wg"; wh: "ax.wh"; wi: "ax.wi"; wj: "ax.wj"; wk: "ax.wk"; wl: "ax.wl"; wm: "ax.wm"; wn: "ax.wn"; wo: "ax.wo"; wp: "ax.wp"; wq: "ax.wq"; wr: "ax.wr"; ws: "ax.ws"; wt: "ax.wt"; wu: "ax.wu"; wv: "ax.wv"; ww: "ax.ww"; wx: "ax.wx"; wy: "ax.wy"; wz: "ax.wz"; xa: "ax.xa"; xb: "ax.xb"; xc: "ax.xc"; xd: "ax.xd"; xe: "ax.xe"; xf: "ax.xf"; xg: "ax.xg"; xh: "ax.xh"; xi: "ax.xi"; xj: "ax.xj"; xk: "ax.xk"; xl: "ax.xl"; xm: "ax.xm"; xn: "ax.xn"; xo: "ax.xo"; xp: "ax.xp"; xq: "ax.xq"; xr: "ax.xr"; xs: "ax.xs"; xt: "ax.xt"; xu: "ax.xu"; xv: "ax.xv"; xw: "ax.xw"; xx: "ax.xx"; xy: "ax.xy"; xz: "ax.xz"; ya: "ax.ya"; yb: "ax.yb"; yc: "ax.yc"; yd: "ax.yd"; ye: "ax.ye"; yf: "ax.yf"; yg: "ax.yg"; yh: "ax.yh"; yi: "ax.yi"; yj: "ax.yj"; yk: "ax.yk"; yl: "ax.yl"; ym: "ax.ym"; yn: "ax.yn"; yo: "ax.yo"; yp: "ax.yp"; yq: "ax.yq"; yr: "ax.yr"; ys: "ax.ys"; yt: "ax.yt"; yu: "ax.yu"; yv: "ax.yv"; yw: "ax.yw"; yx: "ax.yx"; yy: "ax.yy"; yz: "ax.yz"; za: "ax.za"; zb: "ax.zb"; zc: "ax.zc"; zd: "ax.zd"; ze: "ax.ze"; zf: "ax.zf"; zg: "ax.zg"; zh: "ax.zh"; zi: "ax.zi"; zj: "ax.zj"; zk: "ax.zk"; zl: "ax.zl"; zm: "ax.zm"; zn: "ax.zn"; zo: "ax.zo"; zp: "ax.zp"; zq: "ax.zq"; zr: "ax.zr"; zs: "ax.zs"; zt: "ax.zt"; zu: "ax.zu"; zv: "ax.zv"; zw: "ax.zw"; zx: "ax.zx"; zy: "ax.zy"; zz: "ax.zz"; }; ay: { aa: "ay.aa"; ab: "ay.ab"; ac: "ay.ac"; ad: "ay.ad"; ae: "ay.ae"; af: "ay.af"; ag: "ay.ag"; ah: "ay.ah"; ai: "ay.ai"; aj: "ay.aj"; ak: "ay.ak"; al: "ay.al"; am: "ay.am"; an: "ay.an"; ao: "ay.ao"; ap: "ay.ap"; aq: "ay.aq"; ar: "ay.ar"; as: "ay.as"; at: "ay.at"; au: "ay.au"; av: "ay.av"; aw: "ay.aw"; ax: "ay.ax"; ay: "ay.ay"; az: "ay.az"; ba: "ay.ba"; bb: "ay.bb"; bc: "ay.bc"; bd: "ay.bd"; be: "ay.be"; bf: "ay.bf"; bg: "ay.bg"; bh: "ay.bh"; bi: "ay.bi"; bj: "ay.bj"; bk: "ay.bk"; bl: "ay.bl"; bm: "ay.bm"; bn: "ay.bn"; bo: "ay.bo"; bp: "ay.bp"; bq: "ay.bq"; br: "ay.br"; bs: "ay.bs"; bt: "ay.bt"; bu: "ay.bu"; bv: "ay.bv"; bw: "ay.bw"; bx: "ay.bx"; by: "ay.by"; bz: "ay.bz"; ca: "ay.ca"; cb: "ay.cb"; cc: "ay.cc"; cd: "ay.cd"; ce: "ay.ce"; cf: "ay.cf"; cg: "ay.cg"; ch: "ay.ch"; ci: "ay.ci"; cj: "ay.cj"; ck: "ay.ck"; cl: "ay.cl"; cm: "ay.cm"; cn: "ay.cn"; co: "ay.co"; cp: "ay.cp"; cq: "ay.cq"; cr: "ay.cr"; cs: "ay.cs"; ct: "ay.ct"; cu: "ay.cu"; cv: "ay.cv"; cw: "ay.cw"; cx: "ay.cx"; cy: "ay.cy"; cz: "ay.cz"; da: "ay.da"; db: "ay.db"; dc: "ay.dc"; dd: "ay.dd"; de: "ay.de"; df: "ay.df"; dg: "ay.dg"; dh: "ay.dh"; di: "ay.di"; dj: "ay.dj"; dk: "ay.dk"; dl: "ay.dl"; dm: "ay.dm"; dn: "ay.dn"; do: "ay.do"; dp: "ay.dp"; dq: "ay.dq"; dr: "ay.dr"; ds: "ay.ds"; dt: "ay.dt"; du: "ay.du"; dv: "ay.dv"; dw: "ay.dw"; dx: "ay.dx"; dy: "ay.dy"; dz: "ay.dz"; ea: "ay.ea"; eb: "ay.eb"; ec: "ay.ec"; ed: "ay.ed"; ee: "ay.ee"; ef: "ay.ef"; eg: "ay.eg"; eh: "ay.eh"; ei: "ay.ei"; ej: "ay.ej"; ek: "ay.ek"; el: "ay.el"; em: "ay.em"; en: "ay.en"; eo: "ay.eo"; ep: "ay.ep"; eq: "ay.eq"; er: "ay.er"; es: "ay.es"; et: "ay.et"; eu: "ay.eu"; ev: "ay.ev"; ew: "ay.ew"; ex: "ay.ex"; ey: "ay.ey"; ez: "ay.ez"; fa: "ay.fa"; fb: "ay.fb"; fc: "ay.fc"; fd: "ay.fd"; fe: "ay.fe"; ff: "ay.ff"; fg: "ay.fg"; fh: "ay.fh"; fi: "ay.fi"; fj: "ay.fj"; fk: "ay.fk"; fl: "ay.fl"; fm: "ay.fm"; fn: "ay.fn"; fo: "ay.fo"; fp: "ay.fp"; fq: "ay.fq"; fr: "ay.fr"; fs: "ay.fs"; ft: "ay.ft"; fu: "ay.fu"; fv: "ay.fv"; fw: "ay.fw"; fx: "ay.fx"; fy: "ay.fy"; fz: "ay.fz"; ga: "ay.ga"; gb: "ay.gb"; gc: "ay.gc"; gd: "ay.gd"; ge: "ay.ge"; gf: "ay.gf"; gg: "ay.gg"; gh: "ay.gh"; gi: "ay.gi"; gj: "ay.gj"; gk: "ay.gk"; gl: "ay.gl"; gm: "ay.gm"; gn: "ay.gn"; go: "ay.go"; gp: "ay.gp"; gq: "ay.gq"; gr: "ay.gr"; gs: "ay.gs"; gt: "ay.gt"; gu: "ay.gu"; gv: "ay.gv"; gw: "ay.gw"; gx: "ay.gx"; gy: "ay.gy"; gz: "ay.gz"; ha: "ay.ha"; hb: "ay.hb"; hc: "ay.hc"; hd: "ay.hd"; he: "ay.he"; hf: "ay.hf"; hg: "ay.hg"; hh: "ay.hh"; hi: "ay.hi"; hj: "ay.hj"; hk: "ay.hk"; hl: "ay.hl"; hm: "ay.hm"; hn: "ay.hn"; ho: "ay.ho"; hp: "ay.hp"; hq: "ay.hq"; hr: "ay.hr"; hs: "ay.hs"; ht: "ay.ht"; hu: "ay.hu"; hv: "ay.hv"; hw: "ay.hw"; hx: "ay.hx"; hy: "ay.hy"; hz: "ay.hz"; ia: "ay.ia"; ib: "ay.ib"; ic: "ay.ic"; id: "ay.id"; ie: "ay.ie"; if: "ay.if"; ig: "ay.ig"; ih: "ay.ih"; ii: "ay.ii"; ij: "ay.ij"; ik: "ay.ik"; il: "ay.il"; im: "ay.im"; in: "ay.in"; io: "ay.io"; ip: "ay.ip"; iq: "ay.iq"; ir: "ay.ir"; is: "ay.is"; it: "ay.it"; iu: "ay.iu"; iv: "ay.iv"; iw: "ay.iw"; ix: "ay.ix"; iy: "ay.iy"; iz: "ay.iz"; ja: "ay.ja"; jb: "ay.jb"; jc: "ay.jc"; jd: "ay.jd"; je: "ay.je"; jf: "ay.jf"; jg: "ay.jg"; jh: "ay.jh"; ji: "ay.ji"; jj: "ay.jj"; jk: "ay.jk"; jl: "ay.jl"; jm: "ay.jm"; jn: "ay.jn"; jo: "ay.jo"; jp: "ay.jp"; jq: "ay.jq"; jr: "ay.jr"; js: "ay.js"; jt: "ay.jt"; ju: "ay.ju"; jv: "ay.jv"; jw: "ay.jw"; jx: "ay.jx"; jy: "ay.jy"; jz: "ay.jz"; ka: "ay.ka"; kb: "ay.kb"; kc: "ay.kc"; kd: "ay.kd"; ke: "ay.ke"; kf: "ay.kf"; kg: "ay.kg"; kh: "ay.kh"; ki: "ay.ki"; kj: "ay.kj"; kk: "ay.kk"; kl: "ay.kl"; km: "ay.km"; kn: "ay.kn"; ko: "ay.ko"; kp: "ay.kp"; kq: "ay.kq"; kr: "ay.kr"; ks: "ay.ks"; kt: "ay.kt"; ku: "ay.ku"; kv: "ay.kv"; kw: "ay.kw"; kx: "ay.kx"; ky: "ay.ky"; kz: "ay.kz"; la: "ay.la"; lb: "ay.lb"; lc: "ay.lc"; ld: "ay.ld"; le: "ay.le"; lf: "ay.lf"; lg: "ay.lg"; lh: "ay.lh"; li: "ay.li"; lj: "ay.lj"; lk: "ay.lk"; ll: "ay.ll"; lm: "ay.lm"; ln: "ay.ln"; lo: "ay.lo"; lp: "ay.lp"; lq: "ay.lq"; lr: "ay.lr"; ls: "ay.ls"; lt: "ay.lt"; lu: "ay.lu"; lv: "ay.lv"; lw: "ay.lw"; lx: "ay.lx"; ly: "ay.ly"; lz: "ay.lz"; ma: "ay.ma"; mb: "ay.mb"; mc: "ay.mc"; md: "ay.md"; me: "ay.me"; mf: "ay.mf"; mg: "ay.mg"; mh: "ay.mh"; mi: "ay.mi"; mj: "ay.mj"; mk: "ay.mk"; ml: "ay.ml"; mm: "ay.mm"; mn: "ay.mn"; mo: "ay.mo"; mp: "ay.mp"; mq: "ay.mq"; mr: "ay.mr"; ms: "ay.ms"; mt: "ay.mt"; mu: "ay.mu"; mv: "ay.mv"; mw: "ay.mw"; mx: "ay.mx"; my: "ay.my"; mz: "ay.mz"; na: "ay.na"; nb: "ay.nb"; nc: "ay.nc"; nd: "ay.nd"; ne: "ay.ne"; nf: "ay.nf"; ng: "ay.ng"; nh: "ay.nh"; ni: "ay.ni"; nj: "ay.nj"; nk: "ay.nk"; nl: "ay.nl"; nm: "ay.nm"; nn: "ay.nn"; no: "ay.no"; np: "ay.np"; nq: "ay.nq"; nr: "ay.nr"; ns: "ay.ns"; nt: "ay.nt"; nu: "ay.nu"; nv: "ay.nv"; nw: "ay.nw"; nx: "ay.nx"; ny: "ay.ny"; nz: "ay.nz"; oa: "ay.oa"; ob: "ay.ob"; oc: "ay.oc"; od: "ay.od"; oe: "ay.oe"; of: "ay.of"; og: "ay.og"; oh: "ay.oh"; oi: "ay.oi"; oj: "ay.oj"; ok: "ay.ok"; ol: "ay.ol"; om: "ay.om"; on: "ay.on"; oo: "ay.oo"; op: "ay.op"; oq: "ay.oq"; or: "ay.or"; os: "ay.os"; ot: "ay.ot"; ou: "ay.ou"; ov: "ay.ov"; ow: "ay.ow"; ox: "ay.ox"; oy: "ay.oy"; oz: "ay.oz"; pa: "ay.pa"; pb: "ay.pb"; pc: "ay.pc"; pd: "ay.pd"; pe: "ay.pe"; pf: "ay.pf"; pg: "ay.pg"; ph: "ay.ph"; pi: "ay.pi"; pj: "ay.pj"; pk: "ay.pk"; pl: "ay.pl"; pm: "ay.pm"; pn: "ay.pn"; po: "ay.po"; pp: "ay.pp"; pq: "ay.pq"; pr: "ay.pr"; ps: "ay.ps"; pt: "ay.pt"; pu: "ay.pu"; pv: "ay.pv"; pw: "ay.pw"; px: "ay.px"; py: "ay.py"; pz: "ay.pz"; qa: "ay.qa"; qb: "ay.qb"; qc: "ay.qc"; qd: "ay.qd"; qe: "ay.qe"; qf: "ay.qf"; qg: "ay.qg"; qh: "ay.qh"; qi: "ay.qi"; qj: "ay.qj"; qk: "ay.qk"; ql: "ay.ql"; qm: "ay.qm"; qn: "ay.qn"; qo: "ay.qo"; qp: "ay.qp"; qq: "ay.qq"; qr: "ay.qr"; qs: "ay.qs"; qt: "ay.qt"; qu: "ay.qu"; qv: "ay.qv"; qw: "ay.qw"; qx: "ay.qx"; qy: "ay.qy"; qz: "ay.qz"; ra: "ay.ra"; rb: "ay.rb"; rc: "ay.rc"; rd: "ay.rd"; re: "ay.re"; rf: "ay.rf"; rg: "ay.rg"; rh: "ay.rh"; ri: "ay.ri"; rj: "ay.rj"; rk: "ay.rk"; rl: "ay.rl"; rm: "ay.rm"; rn: "ay.rn"; ro: "ay.ro"; rp: "ay.rp"; rq: "ay.rq"; rr: "ay.rr"; rs: "ay.rs"; rt: "ay.rt"; ru: "ay.ru"; rv: "ay.rv"; rw: "ay.rw"; rx: "ay.rx"; ry: "ay.ry"; rz: "ay.rz"; sa: "ay.sa"; sb: "ay.sb"; sc: "ay.sc"; sd: "ay.sd"; se: "ay.se"; sf: "ay.sf"; sg: "ay.sg"; sh: "ay.sh"; si: "ay.si"; sj: "ay.sj"; sk: "ay.sk"; sl: "ay.sl"; sm: "ay.sm"; sn: "ay.sn"; so: "ay.so"; sp: "ay.sp"; sq: "ay.sq"; sr: "ay.sr"; ss: "ay.ss"; st: "ay.st"; su: "ay.su"; sv: "ay.sv"; sw: "ay.sw"; sx: "ay.sx"; sy: "ay.sy"; sz: "ay.sz"; ta: "ay.ta"; tb: "ay.tb"; tc: "ay.tc"; td: "ay.td"; te: "ay.te"; tf: "ay.tf"; tg: "ay.tg"; th: "ay.th"; ti: "ay.ti"; tj: "ay.tj"; tk: "ay.tk"; tl: "ay.tl"; tm: "ay.tm"; tn: "ay.tn"; to: "ay.to"; tp: "ay.tp"; tq: "ay.tq"; tr: "ay.tr"; ts: "ay.ts"; tt: "ay.tt"; tu: "ay.tu"; tv: "ay.tv"; tw: "ay.tw"; tx: "ay.tx"; ty: "ay.ty"; tz: "ay.tz"; ua: "ay.ua"; ub: "ay.ub"; uc: "ay.uc"; ud: "ay.ud"; ue: "ay.ue"; uf: "ay.uf"; ug: "ay.ug"; uh: "ay.uh"; ui: "ay.ui"; uj: "ay.uj"; uk: "ay.uk"; ul: "ay.ul"; um: "ay.um"; un: "ay.un"; uo: "ay.uo"; up: "ay.up"; uq: "ay.uq"; ur: "ay.ur"; us: "ay.us"; ut: "ay.ut"; uu: "ay.uu"; uv: "ay.uv"; uw: "ay.uw"; ux: "ay.ux"; uy: "ay.uy"; uz: "ay.uz"; va: "ay.va"; vb: "ay.vb"; vc: "ay.vc"; vd: "ay.vd"; ve: "ay.ve"; vf: "ay.vf"; vg: "ay.vg"; vh: "ay.vh"; vi: "ay.vi"; vj: "ay.vj"; vk: "ay.vk"; vl: "ay.vl"; vm: "ay.vm"; vn: "ay.vn"; vo: "ay.vo"; vp: "ay.vp"; vq: "ay.vq"; vr: "ay.vr"; vs: "ay.vs"; vt: "ay.vt"; vu: "ay.vu"; vv: "ay.vv"; vw: "ay.vw"; vx: "ay.vx"; vy: "ay.vy"; vz: "ay.vz"; wa: "ay.wa"; wb: "ay.wb"; wc: "ay.wc"; wd: "ay.wd"; we: "ay.we"; wf: "ay.wf"; wg: "ay.wg"; wh: "ay.wh"; wi: "ay.wi"; wj: "ay.wj"; wk: "ay.wk"; wl: "ay.wl"; wm: "ay.wm"; wn: "ay.wn"; wo: "ay.wo"; wp: "ay.wp"; wq: "ay.wq"; wr: "ay.wr"; ws: "ay.ws"; wt: "ay.wt"; wu: "ay.wu"; wv: "ay.wv"; ww: "ay.ww"; wx: "ay.wx"; wy: "ay.wy"; wz: "ay.wz"; xa: "ay.xa"; xb: "ay.xb"; xc: "ay.xc"; xd: "ay.xd"; xe: "ay.xe"; xf: "ay.xf"; xg: "ay.xg"; xh: "ay.xh"; xi: "ay.xi"; xj: "ay.xj"; xk: "ay.xk"; xl: "ay.xl"; xm: "ay.xm"; xn: "ay.xn"; xo: "ay.xo"; xp: "ay.xp"; xq: "ay.xq"; xr: "ay.xr"; xs: "ay.xs"; xt: "ay.xt"; xu: "ay.xu"; xv: "ay.xv"; xw: "ay.xw"; xx: "ay.xx"; xy: "ay.xy"; xz: "ay.xz"; ya: "ay.ya"; yb: "ay.yb"; yc: "ay.yc"; yd: "ay.yd"; ye: "ay.ye"; yf: "ay.yf"; yg: "ay.yg"; yh: "ay.yh"; yi: "ay.yi"; yj: "ay.yj"; yk: "ay.yk"; yl: "ay.yl"; ym: "ay.ym"; yn: "ay.yn"; yo: "ay.yo"; yp: "ay.yp"; yq: "ay.yq"; yr: "ay.yr"; ys: "ay.ys"; yt: "ay.yt"; yu: "ay.yu"; yv: "ay.yv"; yw: "ay.yw"; yx: "ay.yx"; yy: "ay.yy"; yz: "ay.yz"; za: "ay.za"; zb: "ay.zb"; zc: "ay.zc"; zd: "ay.zd"; ze: "ay.ze"; zf: "ay.zf"; zg: "ay.zg"; zh: "ay.zh"; zi: "ay.zi"; zj: "ay.zj"; zk: "ay.zk"; zl: "ay.zl"; zm: "ay.zm"; zn: "ay.zn"; zo: "ay.zo"; zp: "ay.zp"; zq: "ay.zq"; zr: "ay.zr"; zs: "ay.zs"; zt: "ay.zt"; zu: "ay.zu"; zv: "ay.zv"; zw: "ay.zw"; zx: "ay.zx"; zy: "ay.zy"; zz: "ay.zz"; }; az: { aa: "az.aa"; ab: "az.ab"; ac: "az.ac"; ad: "az.ad"; ae: "az.ae"; af: "az.af"; ag: "az.ag"; ah: "az.ah"; ai: "az.ai"; aj: "az.aj"; ak: "az.ak"; al: "az.al"; am: "az.am"; an: "az.an"; ao: "az.ao"; ap: "az.ap"; aq: "az.aq"; ar: "az.ar"; as: "az.as"; at: "az.at"; au: "az.au"; av: "az.av"; aw: "az.aw"; ax: "az.ax"; ay: "az.ay"; az: "az.az"; ba: "az.ba"; bb: "az.bb"; bc: "az.bc"; bd: "az.bd"; be: "az.be"; bf: "az.bf"; bg: "az.bg"; bh: "az.bh"; bi: "az.bi"; bj: "az.bj"; bk: "az.bk"; bl: "az.bl"; bm: "az.bm"; bn: "az.bn"; bo: "az.bo"; bp: "az.bp"; bq: "az.bq"; br: "az.br"; bs: "az.bs"; bt: "az.bt"; bu: "az.bu"; bv: "az.bv"; bw: "az.bw"; bx: "az.bx"; by: "az.by"; bz: "az.bz"; ca: "az.ca"; cb: "az.cb"; cc: "az.cc"; cd: "az.cd"; ce: "az.ce"; cf: "az.cf"; cg: "az.cg"; ch: "az.ch"; ci: "az.ci"; cj: "az.cj"; ck: "az.ck"; cl: "az.cl"; cm: "az.cm"; cn: "az.cn"; co: "az.co"; cp: "az.cp"; cq: "az.cq"; cr: "az.cr"; cs: "az.cs"; ct: "az.ct"; cu: "az.cu"; cv: "az.cv"; cw: "az.cw"; cx: "az.cx"; cy: "az.cy"; cz: "az.cz"; da: "az.da"; db: "az.db"; dc: "az.dc"; dd: "az.dd"; de: "az.de"; df: "az.df"; dg: "az.dg"; dh: "az.dh"; di: "az.di"; dj: "az.dj"; dk: "az.dk"; dl: "az.dl"; dm: "az.dm"; dn: "az.dn"; do: "az.do"; dp: "az.dp"; dq: "az.dq"; dr: "az.dr"; ds: "az.ds"; dt: "az.dt"; du: "az.du"; dv: "az.dv"; dw: "az.dw"; dx: "az.dx"; dy: "az.dy"; dz: "az.dz"; ea: "az.ea"; eb: "az.eb"; ec: "az.ec"; ed: "az.ed"; ee: "az.ee"; ef: "az.ef"; eg: "az.eg"; eh: "az.eh"; ei: "az.ei"; ej: "az.ej"; ek: "az.ek"; el: "az.el"; em: "az.em"; en: "az.en"; eo: "az.eo"; ep: "az.ep"; eq: "az.eq"; er: "az.er"; es: "az.es"; et: "az.et"; eu: "az.eu"; ev: "az.ev"; ew: "az.ew"; ex: "az.ex"; ey: "az.ey"; ez: "az.ez"; fa: "az.fa"; fb: "az.fb"; fc: "az.fc"; fd: "az.fd"; fe: "az.fe"; ff: "az.ff"; fg: "az.fg"; fh: "az.fh"; fi: "az.fi"; fj: "az.fj"; fk: "az.fk"; fl: "az.fl"; fm: "az.fm"; fn: "az.fn"; fo: "az.fo"; fp: "az.fp"; fq: "az.fq"; fr: "az.fr"; fs: "az.fs"; ft: "az.ft"; fu: "az.fu"; fv: "az.fv"; fw: "az.fw"; fx: "az.fx"; fy: "az.fy"; fz: "az.fz"; ga: "az.ga"; gb: "az.gb"; gc: "az.gc"; gd: "az.gd"; ge: "az.ge"; gf: "az.gf"; gg: "az.gg"; gh: "az.gh"; gi: "az.gi"; gj: "az.gj"; gk: "az.gk"; gl: "az.gl"; gm: "az.gm"; gn: "az.gn"; go: "az.go"; gp: "az.gp"; gq: "az.gq"; gr: "az.gr"; gs: "az.gs"; gt: "az.gt"; gu: "az.gu"; gv: "az.gv"; gw: "az.gw"; gx: "az.gx"; gy: "az.gy"; gz: "az.gz"; ha: "az.ha"; hb: "az.hb"; hc: "az.hc"; hd: "az.hd"; he: "az.he"; hf: "az.hf"; hg: "az.hg"; hh: "az.hh"; hi: "az.hi"; hj: "az.hj"; hk: "az.hk"; hl: "az.hl"; hm: "az.hm"; hn: "az.hn"; ho: "az.ho"; hp: "az.hp"; hq: "az.hq"; hr: "az.hr"; hs: "az.hs"; ht: "az.ht"; hu: "az.hu"; hv: "az.hv"; hw: "az.hw"; hx: "az.hx"; hy: "az.hy"; hz: "az.hz"; ia: "az.ia"; ib: "az.ib"; ic: "az.ic"; id: "az.id"; ie: "az.ie"; if: "az.if"; ig: "az.ig"; ih: "az.ih"; ii: "az.ii"; ij: "az.ij"; ik: "az.ik"; il: "az.il"; im: "az.im"; in: "az.in"; io: "az.io"; ip: "az.ip"; iq: "az.iq"; ir: "az.ir"; is: "az.is"; it: "az.it"; iu: "az.iu"; iv: "az.iv"; iw: "az.iw"; ix: "az.ix"; iy: "az.iy"; iz: "az.iz"; ja: "az.ja"; jb: "az.jb"; jc: "az.jc"; jd: "az.jd"; je: "az.je"; jf: "az.jf"; jg: "az.jg"; jh: "az.jh"; ji: "az.ji"; jj: "az.jj"; jk: "az.jk"; jl: "az.jl"; jm: "az.jm"; jn: "az.jn"; jo: "az.jo"; jp: "az.jp"; jq: "az.jq"; jr: "az.jr"; js: "az.js"; jt: "az.jt"; ju: "az.ju"; jv: "az.jv"; jw: "az.jw"; jx: "az.jx"; jy: "az.jy"; jz: "az.jz"; ka: "az.ka"; kb: "az.kb"; kc: "az.kc"; kd: "az.kd"; ke: "az.ke"; kf: "az.kf"; kg: "az.kg"; kh: "az.kh"; ki: "az.ki"; kj: "az.kj"; kk: "az.kk"; kl: "az.kl"; km: "az.km"; kn: "az.kn"; ko: "az.ko"; kp: "az.kp"; kq: "az.kq"; kr: "az.kr"; ks: "az.ks"; kt: "az.kt"; ku: "az.ku"; kv: "az.kv"; kw: "az.kw"; kx: "az.kx"; ky: "az.ky"; kz: "az.kz"; la: "az.la"; lb: "az.lb"; lc: "az.lc"; ld: "az.ld"; le: "az.le"; lf: "az.lf"; lg: "az.lg"; lh: "az.lh"; li: "az.li"; lj: "az.lj"; lk: "az.lk"; ll: "az.ll"; lm: "az.lm"; ln: "az.ln"; lo: "az.lo"; lp: "az.lp"; lq: "az.lq"; lr: "az.lr"; ls: "az.ls"; lt: "az.lt"; lu: "az.lu"; lv: "az.lv"; lw: "az.lw"; lx: "az.lx"; ly: "az.ly"; lz: "az.lz"; ma: "az.ma"; mb: "az.mb"; mc: "az.mc"; md: "az.md"; me: "az.me"; mf: "az.mf"; mg: "az.mg"; mh: "az.mh"; mi: "az.mi"; mj: "az.mj"; mk: "az.mk"; ml: "az.ml"; mm: "az.mm"; mn: "az.mn"; mo: "az.mo"; mp: "az.mp"; mq: "az.mq"; mr: "az.mr"; ms: "az.ms"; mt: "az.mt"; mu: "az.mu"; mv: "az.mv"; mw: "az.mw"; mx: "az.mx"; my: "az.my"; mz: "az.mz"; na: "az.na"; nb: "az.nb"; nc: "az.nc"; nd: "az.nd"; ne: "az.ne"; nf: "az.nf"; ng: "az.ng"; nh: "az.nh"; ni: "az.ni"; nj: "az.nj"; nk: "az.nk"; nl: "az.nl"; nm: "az.nm"; nn: "az.nn"; no: "az.no"; np: "az.np"; nq: "az.nq"; nr: "az.nr"; ns: "az.ns"; nt: "az.nt"; nu: "az.nu"; nv: "az.nv"; nw: "az.nw"; nx: "az.nx"; ny: "az.ny"; nz: "az.nz"; oa: "az.oa"; ob: "az.ob"; oc: "az.oc"; od: "az.od"; oe: "az.oe"; of: "az.of"; og: "az.og"; oh: "az.oh"; oi: "az.oi"; oj: "az.oj"; ok: "az.ok"; ol: "az.ol"; om: "az.om"; on: "az.on"; oo: "az.oo"; op: "az.op"; oq: "az.oq"; or: "az.or"; os: "az.os"; ot: "az.ot"; ou: "az.ou"; ov: "az.ov"; ow: "az.ow"; ox: "az.ox"; oy: "az.oy"; oz: "az.oz"; pa: "az.pa"; pb: "az.pb"; pc: "az.pc"; pd: "az.pd"; pe: "az.pe"; pf: "az.pf"; pg: "az.pg"; ph: "az.ph"; pi: "az.pi"; pj: "az.pj"; pk: "az.pk"; pl: "az.pl"; pm: "az.pm"; pn: "az.pn"; po: "az.po"; pp: "az.pp"; pq: "az.pq"; pr: "az.pr"; ps: "az.ps"; pt: "az.pt"; pu: "az.pu"; pv: "az.pv"; pw: "az.pw"; px: "az.px"; py: "az.py"; pz: "az.pz"; qa: "az.qa"; qb: "az.qb"; qc: "az.qc"; qd: "az.qd"; qe: "az.qe"; qf: "az.qf"; qg: "az.qg"; qh: "az.qh"; qi: "az.qi"; qj: "az.qj"; qk: "az.qk"; ql: "az.ql"; qm: "az.qm"; qn: "az.qn"; qo: "az.qo"; qp: "az.qp"; qq: "az.qq"; qr: "az.qr"; qs: "az.qs"; qt: "az.qt"; qu: "az.qu"; qv: "az.qv"; qw: "az.qw"; qx: "az.qx"; qy: "az.qy"; qz: "az.qz"; ra: "az.ra"; rb: "az.rb"; rc: "az.rc"; rd: "az.rd"; re: "az.re"; rf: "az.rf"; rg: "az.rg"; rh: "az.rh"; ri: "az.ri"; rj: "az.rj"; rk: "az.rk"; rl: "az.rl"; rm: "az.rm"; rn: "az.rn"; ro: "az.ro"; rp: "az.rp"; rq: "az.rq"; rr: "az.rr"; rs: "az.rs"; rt: "az.rt"; ru: "az.ru"; rv: "az.rv"; rw: "az.rw"; rx: "az.rx"; ry: "az.ry"; rz: "az.rz"; sa: "az.sa"; sb: "az.sb"; sc: "az.sc"; sd: "az.sd"; se: "az.se"; sf: "az.sf"; sg: "az.sg"; sh: "az.sh"; si: "az.si"; sj: "az.sj"; sk: "az.sk"; sl: "az.sl"; sm: "az.sm"; sn: "az.sn"; so: "az.so"; sp: "az.sp"; sq: "az.sq"; sr: "az.sr"; ss: "az.ss"; st: "az.st"; su: "az.su"; sv: "az.sv"; sw: "az.sw"; sx: "az.sx"; sy: "az.sy"; sz: "az.sz"; ta: "az.ta"; tb: "az.tb"; tc: "az.tc"; td: "az.td"; te: "az.te"; tf: "az.tf"; tg: "az.tg"; th: "az.th"; ti: "az.ti"; tj: "az.tj"; tk: "az.tk"; tl: "az.tl"; tm: "az.tm"; tn: "az.tn"; to: "az.to"; tp: "az.tp"; tq: "az.tq"; tr: "az.tr"; ts: "az.ts"; tt: "az.tt"; tu: "az.tu"; tv: "az.tv"; tw: "az.tw"; tx: "az.tx"; ty: "az.ty"; tz: "az.tz"; ua: "az.ua"; ub: "az.ub"; uc: "az.uc"; ud: "az.ud"; ue: "az.ue"; uf: "az.uf"; ug: "az.ug"; uh: "az.uh"; ui: "az.ui"; uj: "az.uj"; uk: "az.uk"; ul: "az.ul"; um: "az.um"; un: "az.un"; uo: "az.uo"; up: "az.up"; uq: "az.uq"; ur: "az.ur"; us: "az.us"; ut: "az.ut"; uu: "az.uu"; uv: "az.uv"; uw: "az.uw"; ux: "az.ux"; uy: "az.uy"; uz: "az.uz"; va: "az.va"; vb: "az.vb"; vc: "az.vc"; vd: "az.vd"; ve: "az.ve"; vf: "az.vf"; vg: "az.vg"; vh: "az.vh"; vi: "az.vi"; vj: "az.vj"; vk: "az.vk"; vl: "az.vl"; vm: "az.vm"; vn: "az.vn"; vo: "az.vo"; vp: "az.vp"; vq: "az.vq"; vr: "az.vr"; vs: "az.vs"; vt: "az.vt"; vu: "az.vu"; vv: "az.vv"; vw: "az.vw"; vx: "az.vx"; vy: "az.vy"; vz: "az.vz"; wa: "az.wa"; wb: "az.wb"; wc: "az.wc"; wd: "az.wd"; we: "az.we"; wf: "az.wf"; wg: "az.wg"; wh: "az.wh"; wi: "az.wi"; wj: "az.wj"; wk: "az.wk"; wl: "az.wl"; wm: "az.wm"; wn: "az.wn"; wo: "az.wo"; wp: "az.wp"; wq: "az.wq"; wr: "az.wr"; ws: "az.ws"; wt: "az.wt"; wu: "az.wu"; wv: "az.wv"; ww: "az.ww"; wx: "az.wx"; wy: "az.wy"; wz: "az.wz"; xa: "az.xa"; xb: "az.xb"; xc: "az.xc"; xd: "az.xd"; xe: "az.xe"; xf: "az.xf"; xg: "az.xg"; xh: "az.xh"; xi: "az.xi"; xj: "az.xj"; xk: "az.xk"; xl: "az.xl"; xm: "az.xm"; xn: "az.xn"; xo: "az.xo"; xp: "az.xp"; xq: "az.xq"; xr: "az.xr"; xs: "az.xs"; xt: "az.xt"; xu: "az.xu"; xv: "az.xv"; xw: "az.xw"; xx: "az.xx"; xy: "az.xy"; xz: "az.xz"; ya: "az.ya"; yb: "az.yb"; yc: "az.yc"; yd: "az.yd"; ye: "az.ye"; yf: "az.yf"; yg: "az.yg"; yh: "az.yh"; yi: "az.yi"; yj: "az.yj"; yk: "az.yk"; yl: "az.yl"; ym: "az.ym"; yn: "az.yn"; yo: "az.yo"; yp: "az.yp"; yq: "az.yq"; yr: "az.yr"; ys: "az.ys"; yt: "az.yt"; yu: "az.yu"; yv: "az.yv"; yw: "az.yw"; yx: "az.yx"; yy: "az.yy"; yz: "az.yz"; za: "az.za"; zb: "az.zb"; zc: "az.zc"; zd: "az.zd"; ze: "az.ze"; zf: "az.zf"; zg: "az.zg"; zh: "az.zh"; zi: "az.zi"; zj: "az.zj"; zk: "az.zk"; zl: "az.zl"; zm: "az.zm"; zn: "az.zn"; zo: "az.zo"; zp: "az.zp"; zq: "az.zq"; zr: "az.zr"; zs: "az.zs"; zt: "az.zt"; zu: "az.zu"; zv: "az.zv"; zw: "az.zw"; zx: "az.zx"; zy: "az.zy"; zz: "az.zz"; }; ba: { aa: "ba.aa"; ab: "ba.ab"; ac: "ba.ac"; ad: "ba.ad"; ae: "ba.ae"; af: "ba.af"; ag: "ba.ag"; ah: "ba.ah"; ai: "ba.ai"; aj: "ba.aj"; ak: "ba.ak"; al: "ba.al"; am: "ba.am"; an: "ba.an"; ao: "ba.ao"; ap: "ba.ap"; aq: "ba.aq"; ar: "ba.ar"; as: "ba.as"; at: "ba.at"; au: "ba.au"; av: "ba.av"; aw: "ba.aw"; ax: "ba.ax"; ay: "ba.ay"; az: "ba.az"; ba: "ba.ba"; bb: "ba.bb"; bc: "ba.bc"; bd: "ba.bd"; be: "ba.be"; bf: "ba.bf"; bg: "ba.bg"; bh: "ba.bh"; bi: "ba.bi"; bj: "ba.bj"; bk: "ba.bk"; bl: "ba.bl"; bm: "ba.bm"; bn: "ba.bn"; bo: "ba.bo"; bp: "ba.bp"; bq: "ba.bq"; br: "ba.br"; bs: "ba.bs"; bt: "ba.bt"; bu: "ba.bu"; bv: "ba.bv"; bw: "ba.bw"; bx: "ba.bx"; by: "ba.by"; bz: "ba.bz"; ca: "ba.ca"; cb: "ba.cb"; cc: "ba.cc"; cd: "ba.cd"; ce: "ba.ce"; cf: "ba.cf"; cg: "ba.cg"; ch: "ba.ch"; ci: "ba.ci"; cj: "ba.cj"; ck: "ba.ck"; cl: "ba.cl"; cm: "ba.cm"; cn: "ba.cn"; co: "ba.co"; cp: "ba.cp"; cq: "ba.cq"; cr: "ba.cr"; cs: "ba.cs"; ct: "ba.ct"; cu: "ba.cu"; cv: "ba.cv"; cw: "ba.cw"; cx: "ba.cx"; cy: "ba.cy"; cz: "ba.cz"; da: "ba.da"; db: "ba.db"; dc: "ba.dc"; dd: "ba.dd"; de: "ba.de"; df: "ba.df"; dg: "ba.dg"; dh: "ba.dh"; di: "ba.di"; dj: "ba.dj"; dk: "ba.dk"; dl: "ba.dl"; dm: "ba.dm"; dn: "ba.dn"; do: "ba.do"; dp: "ba.dp"; dq: "ba.dq"; dr: "ba.dr"; ds: "ba.ds"; dt: "ba.dt"; du: "ba.du"; dv: "ba.dv"; dw: "ba.dw"; dx: "ba.dx"; dy: "ba.dy"; dz: "ba.dz"; ea: "ba.ea"; eb: "ba.eb"; ec: "ba.ec"; ed: "ba.ed"; ee: "ba.ee"; ef: "ba.ef"; eg: "ba.eg"; eh: "ba.eh"; ei: "ba.ei"; ej: "ba.ej"; ek: "ba.ek"; el: "ba.el"; em: "ba.em"; en: "ba.en"; eo: "ba.eo"; ep: "ba.ep"; eq: "ba.eq"; er: "ba.er"; es: "ba.es"; et: "ba.et"; eu: "ba.eu"; ev: "ba.ev"; ew: "ba.ew"; ex: "ba.ex"; ey: "ba.ey"; ez: "ba.ez"; fa: "ba.fa"; fb: "ba.fb"; fc: "ba.fc"; fd: "ba.fd"; fe: "ba.fe"; ff: "ba.ff"; fg: "ba.fg"; fh: "ba.fh"; fi: "ba.fi"; fj: "ba.fj"; fk: "ba.fk"; fl: "ba.fl"; fm: "ba.fm"; fn: "ba.fn"; fo: "ba.fo"; fp: "ba.fp"; fq: "ba.fq"; fr: "ba.fr"; fs: "ba.fs"; ft: "ba.ft"; fu: "ba.fu"; fv: "ba.fv"; fw: "ba.fw"; fx: "ba.fx"; fy: "ba.fy"; fz: "ba.fz"; ga: "ba.ga"; gb: "ba.gb"; gc: "ba.gc"; gd: "ba.gd"; ge: "ba.ge"; gf: "ba.gf"; gg: "ba.gg"; gh: "ba.gh"; gi: "ba.gi"; gj: "ba.gj"; gk: "ba.gk"; gl: "ba.gl"; gm: "ba.gm"; gn: "ba.gn"; go: "ba.go"; gp: "ba.gp"; gq: "ba.gq"; gr: "ba.gr"; gs: "ba.gs"; gt: "ba.gt"; gu: "ba.gu"; gv: "ba.gv"; gw: "ba.gw"; gx: "ba.gx"; gy: "ba.gy"; gz: "ba.gz"; ha: "ba.ha"; hb: "ba.hb"; hc: "ba.hc"; hd: "ba.hd"; he: "ba.he"; hf: "ba.hf"; hg: "ba.hg"; hh: "ba.hh"; hi: "ba.hi"; hj: "ba.hj"; hk: "ba.hk"; hl: "ba.hl"; hm: "ba.hm"; hn: "ba.hn"; ho: "ba.ho"; hp: "ba.hp"; hq: "ba.hq"; hr: "ba.hr"; hs: "ba.hs"; ht: "ba.ht"; hu: "ba.hu"; hv: "ba.hv"; hw: "ba.hw"; hx: "ba.hx"; hy: "ba.hy"; hz: "ba.hz"; ia: "ba.ia"; ib: "ba.ib"; ic: "ba.ic"; id: "ba.id"; ie: "ba.ie"; if: "ba.if"; ig: "ba.ig"; ih: "ba.ih"; ii: "ba.ii"; ij: "ba.ij"; ik: "ba.ik"; il: "ba.il"; im: "ba.im"; in: "ba.in"; io: "ba.io"; ip: "ba.ip"; iq: "ba.iq"; ir: "ba.ir"; is: "ba.is"; it: "ba.it"; iu: "ba.iu"; iv: "ba.iv"; iw: "ba.iw"; ix: "ba.ix"; iy: "ba.iy"; iz: "ba.iz"; ja: "ba.ja"; jb: "ba.jb"; jc: "ba.jc"; jd: "ba.jd"; je: "ba.je"; jf: "ba.jf"; jg: "ba.jg"; jh: "ba.jh"; ji: "ba.ji"; jj: "ba.jj"; jk: "ba.jk"; jl: "ba.jl"; jm: "ba.jm"; jn: "ba.jn"; jo: "ba.jo"; jp: "ba.jp"; jq: "ba.jq"; jr: "ba.jr"; js: "ba.js"; jt: "ba.jt"; ju: "ba.ju"; jv: "ba.jv"; jw: "ba.jw"; jx: "ba.jx"; jy: "ba.jy"; jz: "ba.jz"; ka: "ba.ka"; kb: "ba.kb"; kc: "ba.kc"; kd: "ba.kd"; ke: "ba.ke"; kf: "ba.kf"; kg: "ba.kg"; kh: "ba.kh"; ki: "ba.ki"; kj: "ba.kj"; kk: "ba.kk"; kl: "ba.kl"; km: "ba.km"; kn: "ba.kn"; ko: "ba.ko"; kp: "ba.kp"; kq: "ba.kq"; kr: "ba.kr"; ks: "ba.ks"; kt: "ba.kt"; ku: "ba.ku"; kv: "ba.kv"; kw: "ba.kw"; kx: "ba.kx"; ky: "ba.ky"; kz: "ba.kz"; la: "ba.la"; lb: "ba.lb"; lc: "ba.lc"; ld: "ba.ld"; le: "ba.le"; lf: "ba.lf"; lg: "ba.lg"; lh: "ba.lh"; li: "ba.li"; lj: "ba.lj"; lk: "ba.lk"; ll: "ba.ll"; lm: "ba.lm"; ln: "ba.ln"; lo: "ba.lo"; lp: "ba.lp"; lq: "ba.lq"; lr: "ba.lr"; ls: "ba.ls"; lt: "ba.lt"; lu: "ba.lu"; lv: "ba.lv"; lw: "ba.lw"; lx: "ba.lx"; ly: "ba.ly"; lz: "ba.lz"; ma: "ba.ma"; mb: "ba.mb"; mc: "ba.mc"; md: "ba.md"; me: "ba.me"; mf: "ba.mf"; mg: "ba.mg"; mh: "ba.mh"; mi: "ba.mi"; mj: "ba.mj"; mk: "ba.mk"; ml: "ba.ml"; mm: "ba.mm"; mn: "ba.mn"; mo: "ba.mo"; mp: "ba.mp"; mq: "ba.mq"; mr: "ba.mr"; ms: "ba.ms"; mt: "ba.mt"; mu: "ba.mu"; mv: "ba.mv"; mw: "ba.mw"; mx: "ba.mx"; my: "ba.my"; mz: "ba.mz"; na: "ba.na"; nb: "ba.nb"; nc: "ba.nc"; nd: "ba.nd"; ne: "ba.ne"; nf: "ba.nf"; ng: "ba.ng"; nh: "ba.nh"; ni: "ba.ni"; nj: "ba.nj"; nk: "ba.nk"; nl: "ba.nl"; nm: "ba.nm"; nn: "ba.nn"; no: "ba.no"; np: "ba.np"; nq: "ba.nq"; nr: "ba.nr"; ns: "ba.ns"; nt: "ba.nt"; nu: "ba.nu"; nv: "ba.nv"; nw: "ba.nw"; nx: "ba.nx"; ny: "ba.ny"; nz: "ba.nz"; oa: "ba.oa"; ob: "ba.ob"; oc: "ba.oc"; od: "ba.od"; oe: "ba.oe"; of: "ba.of"; og: "ba.og"; oh: "ba.oh"; oi: "ba.oi"; oj: "ba.oj"; ok: "ba.ok"; ol: "ba.ol"; om: "ba.om"; on: "ba.on"; oo: "ba.oo"; op: "ba.op"; oq: "ba.oq"; or: "ba.or"; os: "ba.os"; ot: "ba.ot"; ou: "ba.ou"; ov: "ba.ov"; ow: "ba.ow"; ox: "ba.ox"; oy: "ba.oy"; oz: "ba.oz"; pa: "ba.pa"; pb: "ba.pb"; pc: "ba.pc"; pd: "ba.pd"; pe: "ba.pe"; pf: "ba.pf"; pg: "ba.pg"; ph: "ba.ph"; pi: "ba.pi"; pj: "ba.pj"; pk: "ba.pk"; pl: "ba.pl"; pm: "ba.pm"; pn: "ba.pn"; po: "ba.po"; pp: "ba.pp"; pq: "ba.pq"; pr: "ba.pr"; ps: "ba.ps"; pt: "ba.pt"; pu: "ba.pu"; pv: "ba.pv"; pw: "ba.pw"; px: "ba.px"; py: "ba.py"; pz: "ba.pz"; qa: "ba.qa"; qb: "ba.qb"; qc: "ba.qc"; qd: "ba.qd"; qe: "ba.qe"; qf: "ba.qf"; qg: "ba.qg"; qh: "ba.qh"; qi: "ba.qi"; qj: "ba.qj"; qk: "ba.qk"; ql: "ba.ql"; qm: "ba.qm"; qn: "ba.qn"; qo: "ba.qo"; qp: "ba.qp"; qq: "ba.qq"; qr: "ba.qr"; qs: "ba.qs"; qt: "ba.qt"; qu: "ba.qu"; qv: "ba.qv"; qw: "ba.qw"; qx: "ba.qx"; qy: "ba.qy"; qz: "ba.qz"; ra: "ba.ra"; rb: "ba.rb"; rc: "ba.rc"; rd: "ba.rd"; re: "ba.re"; rf: "ba.rf"; rg: "ba.rg"; rh: "ba.rh"; ri: "ba.ri"; rj: "ba.rj"; rk: "ba.rk"; rl: "ba.rl"; rm: "ba.rm"; rn: "ba.rn"; ro: "ba.ro"; rp: "ba.rp"; rq: "ba.rq"; rr: "ba.rr"; rs: "ba.rs"; rt: "ba.rt"; ru: "ba.ru"; rv: "ba.rv"; rw: "ba.rw"; rx: "ba.rx"; ry: "ba.ry"; rz: "ba.rz"; sa: "ba.sa"; sb: "ba.sb"; sc: "ba.sc"; sd: "ba.sd"; se: "ba.se"; sf: "ba.sf"; sg: "ba.sg"; sh: "ba.sh"; si: "ba.si"; sj: "ba.sj"; sk: "ba.sk"; sl: "ba.sl"; sm: "ba.sm"; sn: "ba.sn"; so: "ba.so"; sp: "ba.sp"; sq: "ba.sq"; sr: "ba.sr"; ss: "ba.ss"; st: "ba.st"; su: "ba.su"; sv: "ba.sv"; sw: "ba.sw"; sx: "ba.sx"; sy: "ba.sy"; sz: "ba.sz"; ta: "ba.ta"; tb: "ba.tb"; tc: "ba.tc"; td: "ba.td"; te: "ba.te"; tf: "ba.tf"; tg: "ba.tg"; th: "ba.th"; ti: "ba.ti"; tj: "ba.tj"; tk: "ba.tk"; tl: "ba.tl"; tm: "ba.tm"; tn: "ba.tn"; to: "ba.to"; tp: "ba.tp"; tq: "ba.tq"; tr: "ba.tr"; ts: "ba.ts"; tt: "ba.tt"; tu: "ba.tu"; tv: "ba.tv"; tw: "ba.tw"; tx: "ba.tx"; ty: "ba.ty"; tz: "ba.tz"; ua: "ba.ua"; ub: "ba.ub"; uc: "ba.uc"; ud: "ba.ud"; ue: "ba.ue"; uf: "ba.uf"; ug: "ba.ug"; uh: "ba.uh"; ui: "ba.ui"; uj: "ba.uj"; uk: "ba.uk"; ul: "ba.ul"; um: "ba.um"; un: "ba.un"; uo: "ba.uo"; up: "ba.up"; uq: "ba.uq"; ur: "ba.ur"; us: "ba.us"; ut: "ba.ut"; uu: "ba.uu"; uv: "ba.uv"; uw: "ba.uw"; ux: "ba.ux"; uy: "ba.uy"; uz: "ba.uz"; va: "ba.va"; vb: "ba.vb"; vc: "ba.vc"; vd: "ba.vd"; ve: "ba.ve"; vf: "ba.vf"; vg: "ba.vg"; vh: "ba.vh"; vi: "ba.vi"; vj: "ba.vj"; vk: "ba.vk"; vl: "ba.vl"; vm: "ba.vm"; vn: "ba.vn"; vo: "ba.vo"; vp: "ba.vp"; vq: "ba.vq"; vr: "ba.vr"; vs: "ba.vs"; vt: "ba.vt"; vu: "ba.vu"; vv: "ba.vv"; vw: "ba.vw"; vx: "ba.vx"; vy: "ba.vy"; vz: "ba.vz"; wa: "ba.wa"; wb: "ba.wb"; wc: "ba.wc"; wd: "ba.wd"; we: "ba.we"; wf: "ba.wf"; wg: "ba.wg"; wh: "ba.wh"; wi: "ba.wi"; wj: "ba.wj"; wk: "ba.wk"; wl: "ba.wl"; wm: "ba.wm"; wn: "ba.wn"; wo: "ba.wo"; wp: "ba.wp"; wq: "ba.wq"; wr: "ba.wr"; ws: "ba.ws"; wt: "ba.wt"; wu: "ba.wu"; wv: "ba.wv"; ww: "ba.ww"; wx: "ba.wx"; wy: "ba.wy"; wz: "ba.wz"; xa: "ba.xa"; xb: "ba.xb"; xc: "ba.xc"; xd: "ba.xd"; xe: "ba.xe"; xf: "ba.xf"; xg: "ba.xg"; xh: "ba.xh"; xi: "ba.xi"; xj: "ba.xj"; xk: "ba.xk"; xl: "ba.xl"; xm: "ba.xm"; xn: "ba.xn"; xo: "ba.xo"; xp: "ba.xp"; xq: "ba.xq"; xr: "ba.xr"; xs: "ba.xs"; xt: "ba.xt"; xu: "ba.xu"; xv: "ba.xv"; xw: "ba.xw"; xx: "ba.xx"; xy: "ba.xy"; xz: "ba.xz"; ya: "ba.ya"; yb: "ba.yb"; yc: "ba.yc"; yd: "ba.yd"; ye: "ba.ye"; yf: "ba.yf"; yg: "ba.yg"; yh: "ba.yh"; yi: "ba.yi"; yj: "ba.yj"; yk: "ba.yk"; yl: "ba.yl"; ym: "ba.ym"; yn: "ba.yn"; yo: "ba.yo"; yp: "ba.yp"; yq: "ba.yq"; yr: "ba.yr"; ys: "ba.ys"; yt: "ba.yt"; yu: "ba.yu"; yv: "ba.yv"; yw: "ba.yw"; yx: "ba.yx"; yy: "ba.yy"; yz: "ba.yz"; za: "ba.za"; zb: "ba.zb"; zc: "ba.zc"; zd: "ba.zd"; ze: "ba.ze"; zf: "ba.zf"; zg: "ba.zg"; zh: "ba.zh"; zi: "ba.zi"; zj: "ba.zj"; zk: "ba.zk"; zl: "ba.zl"; zm: "ba.zm"; zn: "ba.zn"; zo: "ba.zo"; zp: "ba.zp"; zq: "ba.zq"; zr: "ba.zr"; zs: "ba.zs"; zt: "ba.zt"; zu: "ba.zu"; zv: "ba.zv"; zw: "ba.zw"; zx: "ba.zx"; zy: "ba.zy"; zz: "ba.zz"; }; bb: { aa: "bb.aa"; ab: "bb.ab"; ac: "bb.ac"; ad: "bb.ad"; ae: "bb.ae"; af: "bb.af"; ag: "bb.ag"; ah: "bb.ah"; ai: "bb.ai"; aj: "bb.aj"; ak: "bb.ak"; al: "bb.al"; am: "bb.am"; an: "bb.an"; ao: "bb.ao"; ap: "bb.ap"; aq: "bb.aq"; ar: "bb.ar"; as: "bb.as"; at: "bb.at"; au: "bb.au"; av: "bb.av"; aw: "bb.aw"; ax: "bb.ax"; ay: "bb.ay"; az: "bb.az"; ba: "bb.ba"; bb: "bb.bb"; bc: "bb.bc"; bd: "bb.bd"; be: "bb.be"; bf: "bb.bf"; bg: "bb.bg"; bh: "bb.bh"; bi: "bb.bi"; bj: "bb.bj"; bk: "bb.bk"; bl: "bb.bl"; bm: "bb.bm"; bn: "bb.bn"; bo: "bb.bo"; bp: "bb.bp"; bq: "bb.bq"; br: "bb.br"; bs: "bb.bs"; bt: "bb.bt"; bu: "bb.bu"; bv: "bb.bv"; bw: "bb.bw"; bx: "bb.bx"; by: "bb.by"; bz: "bb.bz"; ca: "bb.ca"; cb: "bb.cb"; cc: "bb.cc"; cd: "bb.cd"; ce: "bb.ce"; cf: "bb.cf"; cg: "bb.cg"; ch: "bb.ch"; ci: "bb.ci"; cj: "bb.cj"; ck: "bb.ck"; cl: "bb.cl"; cm: "bb.cm"; cn: "bb.cn"; co: "bb.co"; cp: "bb.cp"; cq: "bb.cq"; cr: "bb.cr"; cs: "bb.cs"; ct: "bb.ct"; cu: "bb.cu"; cv: "bb.cv"; cw: "bb.cw"; cx: "bb.cx"; cy: "bb.cy"; cz: "bb.cz"; da: "bb.da"; db: "bb.db"; dc: "bb.dc"; dd: "bb.dd"; de: "bb.de"; df: "bb.df"; dg: "bb.dg"; dh: "bb.dh"; di: "bb.di"; dj: "bb.dj"; dk: "bb.dk"; dl: "bb.dl"; dm: "bb.dm"; dn: "bb.dn"; do: "bb.do"; dp: "bb.dp"; dq: "bb.dq"; dr: "bb.dr"; ds: "bb.ds"; dt: "bb.dt"; du: "bb.du"; dv: "bb.dv"; dw: "bb.dw"; dx: "bb.dx"; dy: "bb.dy"; dz: "bb.dz"; ea: "bb.ea"; eb: "bb.eb"; ec: "bb.ec"; ed: "bb.ed"; ee: "bb.ee"; ef: "bb.ef"; eg: "bb.eg"; eh: "bb.eh"; ei: "bb.ei"; ej: "bb.ej"; ek: "bb.ek"; el: "bb.el"; em: "bb.em"; en: "bb.en"; eo: "bb.eo"; ep: "bb.ep"; eq: "bb.eq"; er: "bb.er"; es: "bb.es"; et: "bb.et"; eu: "bb.eu"; ev: "bb.ev"; ew: "bb.ew"; ex: "bb.ex"; ey: "bb.ey"; ez: "bb.ez"; fa: "bb.fa"; fb: "bb.fb"; fc: "bb.fc"; fd: "bb.fd"; fe: "bb.fe"; ff: "bb.ff"; fg: "bb.fg"; fh: "bb.fh"; fi: "bb.fi"; fj: "bb.fj"; fk: "bb.fk"; fl: "bb.fl"; fm: "bb.fm"; fn: "bb.fn"; fo: "bb.fo"; fp: "bb.fp"; fq: "bb.fq"; fr: "bb.fr"; fs: "bb.fs"; ft: "bb.ft"; fu: "bb.fu"; fv: "bb.fv"; fw: "bb.fw"; fx: "bb.fx"; fy: "bb.fy"; fz: "bb.fz"; ga: "bb.ga"; gb: "bb.gb"; gc: "bb.gc"; gd: "bb.gd"; ge: "bb.ge"; gf: "bb.gf"; gg: "bb.gg"; gh: "bb.gh"; gi: "bb.gi"; gj: "bb.gj"; gk: "bb.gk"; gl: "bb.gl"; gm: "bb.gm"; gn: "bb.gn"; go: "bb.go"; gp: "bb.gp"; gq: "bb.gq"; gr: "bb.gr"; gs: "bb.gs"; gt: "bb.gt"; gu: "bb.gu"; gv: "bb.gv"; gw: "bb.gw"; gx: "bb.gx"; gy: "bb.gy"; gz: "bb.gz"; ha: "bb.ha"; hb: "bb.hb"; hc: "bb.hc"; hd: "bb.hd"; he: "bb.he"; hf: "bb.hf"; hg: "bb.hg"; hh: "bb.hh"; hi: "bb.hi"; hj: "bb.hj"; hk: "bb.hk"; hl: "bb.hl"; hm: "bb.hm"; hn: "bb.hn"; ho: "bb.ho"; hp: "bb.hp"; hq: "bb.hq"; hr: "bb.hr"; hs: "bb.hs"; ht: "bb.ht"; hu: "bb.hu"; hv: "bb.hv"; hw: "bb.hw"; hx: "bb.hx"; hy: "bb.hy"; hz: "bb.hz"; ia: "bb.ia"; ib: "bb.ib"; ic: "bb.ic"; id: "bb.id"; ie: "bb.ie"; if: "bb.if"; ig: "bb.ig"; ih: "bb.ih"; ii: "bb.ii"; ij: "bb.ij"; ik: "bb.ik"; il: "bb.il"; im: "bb.im"; in: "bb.in"; io: "bb.io"; ip: "bb.ip"; iq: "bb.iq"; ir: "bb.ir"; is: "bb.is"; it: "bb.it"; iu: "bb.iu"; iv: "bb.iv"; iw: "bb.iw"; ix: "bb.ix"; iy: "bb.iy"; iz: "bb.iz"; ja: "bb.ja"; jb: "bb.jb"; jc: "bb.jc"; jd: "bb.jd"; je: "bb.je"; jf: "bb.jf"; jg: "bb.jg"; jh: "bb.jh"; ji: "bb.ji"; jj: "bb.jj"; jk: "bb.jk"; jl: "bb.jl"; jm: "bb.jm"; jn: "bb.jn"; jo: "bb.jo"; jp: "bb.jp"; jq: "bb.jq"; jr: "bb.jr"; js: "bb.js"; jt: "bb.jt"; ju: "bb.ju"; jv: "bb.jv"; jw: "bb.jw"; jx: "bb.jx"; jy: "bb.jy"; jz: "bb.jz"; ka: "bb.ka"; kb: "bb.kb"; kc: "bb.kc"; kd: "bb.kd"; ke: "bb.ke"; kf: "bb.kf"; kg: "bb.kg"; kh: "bb.kh"; ki: "bb.ki"; kj: "bb.kj"; kk: "bb.kk"; kl: "bb.kl"; km: "bb.km"; kn: "bb.kn"; ko: "bb.ko"; kp: "bb.kp"; kq: "bb.kq"; kr: "bb.kr"; ks: "bb.ks"; kt: "bb.kt"; ku: "bb.ku"; kv: "bb.kv"; kw: "bb.kw"; kx: "bb.kx"; ky: "bb.ky"; kz: "bb.kz"; la: "bb.la"; lb: "bb.lb"; lc: "bb.lc"; ld: "bb.ld"; le: "bb.le"; lf: "bb.lf"; lg: "bb.lg"; lh: "bb.lh"; li: "bb.li"; lj: "bb.lj"; lk: "bb.lk"; ll: "bb.ll"; lm: "bb.lm"; ln: "bb.ln"; lo: "bb.lo"; lp: "bb.lp"; lq: "bb.lq"; lr: "bb.lr"; ls: "bb.ls"; lt: "bb.lt"; lu: "bb.lu"; lv: "bb.lv"; lw: "bb.lw"; lx: "bb.lx"; ly: "bb.ly"; lz: "bb.lz"; ma: "bb.ma"; mb: "bb.mb"; mc: "bb.mc"; md: "bb.md"; me: "bb.me"; mf: "bb.mf"; mg: "bb.mg"; mh: "bb.mh"; mi: "bb.mi"; mj: "bb.mj"; mk: "bb.mk"; ml: "bb.ml"; mm: "bb.mm"; mn: "bb.mn"; mo: "bb.mo"; mp: "bb.mp"; mq: "bb.mq"; mr: "bb.mr"; ms: "bb.ms"; mt: "bb.mt"; mu: "bb.mu"; mv: "bb.mv"; mw: "bb.mw"; mx: "bb.mx"; my: "bb.my"; mz: "bb.mz"; na: "bb.na"; nb: "bb.nb"; nc: "bb.nc"; nd: "bb.nd"; ne: "bb.ne"; nf: "bb.nf"; ng: "bb.ng"; nh: "bb.nh"; ni: "bb.ni"; nj: "bb.nj"; nk: "bb.nk"; nl: "bb.nl"; nm: "bb.nm"; nn: "bb.nn"; no: "bb.no"; np: "bb.np"; nq: "bb.nq"; nr: "bb.nr"; ns: "bb.ns"; nt: "bb.nt"; nu: "bb.nu"; nv: "bb.nv"; nw: "bb.nw"; nx: "bb.nx"; ny: "bb.ny"; nz: "bb.nz"; oa: "bb.oa"; ob: "bb.ob"; oc: "bb.oc"; od: "bb.od"; oe: "bb.oe"; of: "bb.of"; og: "bb.og"; oh: "bb.oh"; oi: "bb.oi"; oj: "bb.oj"; ok: "bb.ok"; ol: "bb.ol"; om: "bb.om"; on: "bb.on"; oo: "bb.oo"; op: "bb.op"; oq: "bb.oq"; or: "bb.or"; os: "bb.os"; ot: "bb.ot"; ou: "bb.ou"; ov: "bb.ov"; ow: "bb.ow"; ox: "bb.ox"; oy: "bb.oy"; oz: "bb.oz"; pa: "bb.pa"; pb: "bb.pb"; pc: "bb.pc"; pd: "bb.pd"; pe: "bb.pe"; pf: "bb.pf"; pg: "bb.pg"; ph: "bb.ph"; pi: "bb.pi"; pj: "bb.pj"; pk: "bb.pk"; pl: "bb.pl"; pm: "bb.pm"; pn: "bb.pn"; po: "bb.po"; pp: "bb.pp"; pq: "bb.pq"; pr: "bb.pr"; ps: "bb.ps"; pt: "bb.pt"; pu: "bb.pu"; pv: "bb.pv"; pw: "bb.pw"; px: "bb.px"; py: "bb.py"; pz: "bb.pz"; qa: "bb.qa"; qb: "bb.qb"; qc: "bb.qc"; qd: "bb.qd"; qe: "bb.qe"; qf: "bb.qf"; qg: "bb.qg"; qh: "bb.qh"; qi: "bb.qi"; qj: "bb.qj"; qk: "bb.qk"; ql: "bb.ql"; qm: "bb.qm"; qn: "bb.qn"; qo: "bb.qo"; qp: "bb.qp"; qq: "bb.qq"; qr: "bb.qr"; qs: "bb.qs"; qt: "bb.qt"; qu: "bb.qu"; qv: "bb.qv"; qw: "bb.qw"; qx: "bb.qx"; qy: "bb.qy"; qz: "bb.qz"; ra: "bb.ra"; rb: "bb.rb"; rc: "bb.rc"; rd: "bb.rd"; re: "bb.re"; rf: "bb.rf"; rg: "bb.rg"; rh: "bb.rh"; ri: "bb.ri"; rj: "bb.rj"; rk: "bb.rk"; rl: "bb.rl"; rm: "bb.rm"; rn: "bb.rn"; ro: "bb.ro"; rp: "bb.rp"; rq: "bb.rq"; rr: "bb.rr"; rs: "bb.rs"; rt: "bb.rt"; ru: "bb.ru"; rv: "bb.rv"; rw: "bb.rw"; rx: "bb.rx"; ry: "bb.ry"; rz: "bb.rz"; sa: "bb.sa"; sb: "bb.sb"; sc: "bb.sc"; sd: "bb.sd"; se: "bb.se"; sf: "bb.sf"; sg: "bb.sg"; sh: "bb.sh"; si: "bb.si"; sj: "bb.sj"; sk: "bb.sk"; sl: "bb.sl"; sm: "bb.sm"; sn: "bb.sn"; so: "bb.so"; sp: "bb.sp"; sq: "bb.sq"; sr: "bb.sr"; ss: "bb.ss"; st: "bb.st"; su: "bb.su"; sv: "bb.sv"; sw: "bb.sw"; sx: "bb.sx"; sy: "bb.sy"; sz: "bb.sz"; ta: "bb.ta"; tb: "bb.tb"; tc: "bb.tc"; td: "bb.td"; te: "bb.te"; tf: "bb.tf"; tg: "bb.tg"; th: "bb.th"; ti: "bb.ti"; tj: "bb.tj"; tk: "bb.tk"; tl: "bb.tl"; tm: "bb.tm"; tn: "bb.tn"; to: "bb.to"; tp: "bb.tp"; tq: "bb.tq"; tr: "bb.tr"; ts: "bb.ts"; tt: "bb.tt"; tu: "bb.tu"; tv: "bb.tv"; tw: "bb.tw"; tx: "bb.tx"; ty: "bb.ty"; tz: "bb.tz"; ua: "bb.ua"; ub: "bb.ub"; uc: "bb.uc"; ud: "bb.ud"; ue: "bb.ue"; uf: "bb.uf"; ug: "bb.ug"; uh: "bb.uh"; ui: "bb.ui"; uj: "bb.uj"; uk: "bb.uk"; ul: "bb.ul"; um: "bb.um"; un: "bb.un"; uo: "bb.uo"; up: "bb.up"; uq: "bb.uq"; ur: "bb.ur"; us: "bb.us"; ut: "bb.ut"; uu: "bb.uu"; uv: "bb.uv"; uw: "bb.uw"; ux: "bb.ux"; uy: "bb.uy"; uz: "bb.uz"; va: "bb.va"; vb: "bb.vb"; vc: "bb.vc"; vd: "bb.vd"; ve: "bb.ve"; vf: "bb.vf"; vg: "bb.vg"; vh: "bb.vh"; vi: "bb.vi"; vj: "bb.vj"; vk: "bb.vk"; vl: "bb.vl"; vm: "bb.vm"; vn: "bb.vn"; vo: "bb.vo"; vp: "bb.vp"; vq: "bb.vq"; vr: "bb.vr"; vs: "bb.vs"; vt: "bb.vt"; vu: "bb.vu"; vv: "bb.vv"; vw: "bb.vw"; vx: "bb.vx"; vy: "bb.vy"; vz: "bb.vz"; wa: "bb.wa"; wb: "bb.wb"; wc: "bb.wc"; wd: "bb.wd"; we: "bb.we"; wf: "bb.wf"; wg: "bb.wg"; wh: "bb.wh"; wi: "bb.wi"; wj: "bb.wj"; wk: "bb.wk"; wl: "bb.wl"; wm: "bb.wm"; wn: "bb.wn"; wo: "bb.wo"; wp: "bb.wp"; wq: "bb.wq"; wr: "bb.wr"; ws: "bb.ws"; wt: "bb.wt"; wu: "bb.wu"; wv: "bb.wv"; ww: "bb.ww"; wx: "bb.wx"; wy: "bb.wy"; wz: "bb.wz"; xa: "bb.xa"; xb: "bb.xb"; xc: "bb.xc"; xd: "bb.xd"; xe: "bb.xe"; xf: "bb.xf"; xg: "bb.xg"; xh: "bb.xh"; xi: "bb.xi"; xj: "bb.xj"; xk: "bb.xk"; xl: "bb.xl"; xm: "bb.xm"; xn: "bb.xn"; xo: "bb.xo"; xp: "bb.xp"; xq: "bb.xq"; xr: "bb.xr"; xs: "bb.xs"; xt: "bb.xt"; xu: "bb.xu"; xv: "bb.xv"; xw: "bb.xw"; xx: "bb.xx"; xy: "bb.xy"; xz: "bb.xz"; ya: "bb.ya"; yb: "bb.yb"; yc: "bb.yc"; yd: "bb.yd"; ye: "bb.ye"; yf: "bb.yf"; yg: "bb.yg"; yh: "bb.yh"; yi: "bb.yi"; yj: "bb.yj"; yk: "bb.yk"; yl: "bb.yl"; ym: "bb.ym"; yn: "bb.yn"; yo: "bb.yo"; yp: "bb.yp"; yq: "bb.yq"; yr: "bb.yr"; ys: "bb.ys"; yt: "bb.yt"; yu: "bb.yu"; yv: "bb.yv"; yw: "bb.yw"; yx: "bb.yx"; yy: "bb.yy"; yz: "bb.yz"; za: "bb.za"; zb: "bb.zb"; zc: "bb.zc"; zd: "bb.zd"; ze: "bb.ze"; zf: "bb.zf"; zg: "bb.zg"; zh: "bb.zh"; zi: "bb.zi"; zj: "bb.zj"; zk: "bb.zk"; zl: "bb.zl"; zm: "bb.zm"; zn: "bb.zn"; zo: "bb.zo"; zp: "bb.zp"; zq: "bb.zq"; zr: "bb.zr"; zs: "bb.zs"; zt: "bb.zt"; zu: "bb.zu"; zv: "bb.zv"; zw: "bb.zw"; zx: "bb.zx"; zy: "bb.zy"; zz: "bb.zz"; }; bc: { aa: "bc.aa"; ab: "bc.ab"; ac: "bc.ac"; ad: "bc.ad"; ae: "bc.ae"; af: "bc.af"; ag: "bc.ag"; ah: "bc.ah"; ai: "bc.ai"; aj: "bc.aj"; ak: "bc.ak"; al: "bc.al"; am: "bc.am"; an: "bc.an"; ao: "bc.ao"; ap: "bc.ap"; aq: "bc.aq"; ar: "bc.ar"; as: "bc.as"; at: "bc.at"; au: "bc.au"; av: "bc.av"; aw: "bc.aw"; ax: "bc.ax"; ay: "bc.ay"; az: "bc.az"; ba: "bc.ba"; bb: "bc.bb"; bc: "bc.bc"; bd: "bc.bd"; be: "bc.be"; bf: "bc.bf"; bg: "bc.bg"; bh: "bc.bh"; bi: "bc.bi"; bj: "bc.bj"; bk: "bc.bk"; bl: "bc.bl"; bm: "bc.bm"; bn: "bc.bn"; bo: "bc.bo"; bp: "bc.bp"; bq: "bc.bq"; br: "bc.br"; bs: "bc.bs"; bt: "bc.bt"; bu: "bc.bu"; bv: "bc.bv"; bw: "bc.bw"; bx: "bc.bx"; by: "bc.by"; bz: "bc.bz"; ca: "bc.ca"; cb: "bc.cb"; cc: "bc.cc"; cd: "bc.cd"; ce: "bc.ce"; cf: "bc.cf"; cg: "bc.cg"; ch: "bc.ch"; ci: "bc.ci"; cj: "bc.cj"; ck: "bc.ck"; cl: "bc.cl"; cm: "bc.cm"; cn: "bc.cn"; co: "bc.co"; cp: "bc.cp"; cq: "bc.cq"; cr: "bc.cr"; cs: "bc.cs"; ct: "bc.ct"; cu: "bc.cu"; cv: "bc.cv"; cw: "bc.cw"; cx: "bc.cx"; cy: "bc.cy"; cz: "bc.cz"; da: "bc.da"; db: "bc.db"; dc: "bc.dc"; dd: "bc.dd"; de: "bc.de"; df: "bc.df"; dg: "bc.dg"; dh: "bc.dh"; di: "bc.di"; dj: "bc.dj"; dk: "bc.dk"; dl: "bc.dl"; dm: "bc.dm"; dn: "bc.dn"; do: "bc.do"; dp: "bc.dp"; dq: "bc.dq"; dr: "bc.dr"; ds: "bc.ds"; dt: "bc.dt"; du: "bc.du"; dv: "bc.dv"; dw: "bc.dw"; dx: "bc.dx"; dy: "bc.dy"; dz: "bc.dz"; ea: "bc.ea"; eb: "bc.eb"; ec: "bc.ec"; ed: "bc.ed"; ee: "bc.ee"; ef: "bc.ef"; eg: "bc.eg"; eh: "bc.eh"; ei: "bc.ei"; ej: "bc.ej"; ek: "bc.ek"; el: "bc.el"; em: "bc.em"; en: "bc.en"; eo: "bc.eo"; ep: "bc.ep"; eq: "bc.eq"; er: "bc.er"; es: "bc.es"; et: "bc.et"; eu: "bc.eu"; ev: "bc.ev"; ew: "bc.ew"; ex: "bc.ex"; ey: "bc.ey"; ez: "bc.ez"; fa: "bc.fa"; fb: "bc.fb"; fc: "bc.fc"; fd: "bc.fd"; fe: "bc.fe"; ff: "bc.ff"; fg: "bc.fg"; fh: "bc.fh"; fi: "bc.fi"; fj: "bc.fj"; fk: "bc.fk"; fl: "bc.fl"; fm: "bc.fm"; fn: "bc.fn"; fo: "bc.fo"; fp: "bc.fp"; fq: "bc.fq"; fr: "bc.fr"; fs: "bc.fs"; ft: "bc.ft"; fu: "bc.fu"; fv: "bc.fv"; fw: "bc.fw"; fx: "bc.fx"; fy: "bc.fy"; fz: "bc.fz"; ga: "bc.ga"; gb: "bc.gb"; gc: "bc.gc"; gd: "bc.gd"; ge: "bc.ge"; gf: "bc.gf"; gg: "bc.gg"; gh: "bc.gh"; gi: "bc.gi"; gj: "bc.gj"; gk: "bc.gk"; gl: "bc.gl"; gm: "bc.gm"; gn: "bc.gn"; go: "bc.go"; gp: "bc.gp"; gq: "bc.gq"; gr: "bc.gr"; gs: "bc.gs"; gt: "bc.gt"; gu: "bc.gu"; gv: "bc.gv"; gw: "bc.gw"; gx: "bc.gx"; gy: "bc.gy"; gz: "bc.gz"; ha: "bc.ha"; hb: "bc.hb"; hc: "bc.hc"; hd: "bc.hd"; he: "bc.he"; hf: "bc.hf"; hg: "bc.hg"; hh: "bc.hh"; hi: "bc.hi"; hj: "bc.hj"; hk: "bc.hk"; hl: "bc.hl"; hm: "bc.hm"; hn: "bc.hn"; ho: "bc.ho"; hp: "bc.hp"; hq: "bc.hq"; hr: "bc.hr"; hs: "bc.hs"; ht: "bc.ht"; hu: "bc.hu"; hv: "bc.hv"; hw: "bc.hw"; hx: "bc.hx"; hy: "bc.hy"; hz: "bc.hz"; ia: "bc.ia"; ib: "bc.ib"; ic: "bc.ic"; id: "bc.id"; ie: "bc.ie"; if: "bc.if"; ig: "bc.ig"; ih: "bc.ih"; ii: "bc.ii"; ij: "bc.ij"; ik: "bc.ik"; il: "bc.il"; im: "bc.im"; in: "bc.in"; io: "bc.io"; ip: "bc.ip"; iq: "bc.iq"; ir: "bc.ir"; is: "bc.is"; it: "bc.it"; iu: "bc.iu"; iv: "bc.iv"; iw: "bc.iw"; ix: "bc.ix"; iy: "bc.iy"; iz: "bc.iz"; ja: "bc.ja"; jb: "bc.jb"; jc: "bc.jc"; jd: "bc.jd"; je: "bc.je"; jf: "bc.jf"; jg: "bc.jg"; jh: "bc.jh"; ji: "bc.ji"; jj: "bc.jj"; jk: "bc.jk"; jl: "bc.jl"; jm: "bc.jm"; jn: "bc.jn"; jo: "bc.jo"; jp: "bc.jp"; jq: "bc.jq"; jr: "bc.jr"; js: "bc.js"; jt: "bc.jt"; ju: "bc.ju"; jv: "bc.jv"; jw: "bc.jw"; jx: "bc.jx"; jy: "bc.jy"; jz: "bc.jz"; ka: "bc.ka"; kb: "bc.kb"; kc: "bc.kc"; kd: "bc.kd"; ke: "bc.ke"; kf: "bc.kf"; kg: "bc.kg"; kh: "bc.kh"; ki: "bc.ki"; kj: "bc.kj"; kk: "bc.kk"; kl: "bc.kl"; km: "bc.km"; kn: "bc.kn"; ko: "bc.ko"; kp: "bc.kp"; kq: "bc.kq"; kr: "bc.kr"; ks: "bc.ks"; kt: "bc.kt"; ku: "bc.ku"; kv: "bc.kv"; kw: "bc.kw"; kx: "bc.kx"; ky: "bc.ky"; kz: "bc.kz"; la: "bc.la"; lb: "bc.lb"; lc: "bc.lc"; ld: "bc.ld"; le: "bc.le"; lf: "bc.lf"; lg: "bc.lg"; lh: "bc.lh"; li: "bc.li"; lj: "bc.lj"; lk: "bc.lk"; ll: "bc.ll"; lm: "bc.lm"; ln: "bc.ln"; lo: "bc.lo"; lp: "bc.lp"; lq: "bc.lq"; lr: "bc.lr"; ls: "bc.ls"; lt: "bc.lt"; lu: "bc.lu"; lv: "bc.lv"; lw: "bc.lw"; lx: "bc.lx"; ly: "bc.ly"; lz: "bc.lz"; ma: "bc.ma"; mb: "bc.mb"; mc: "bc.mc"; md: "bc.md"; me: "bc.me"; mf: "bc.mf"; mg: "bc.mg"; mh: "bc.mh"; mi: "bc.mi"; mj: "bc.mj"; mk: "bc.mk"; ml: "bc.ml"; mm: "bc.mm"; mn: "bc.mn"; mo: "bc.mo"; mp: "bc.mp"; mq: "bc.mq"; mr: "bc.mr"; ms: "bc.ms"; mt: "bc.mt"; mu: "bc.mu"; mv: "bc.mv"; mw: "bc.mw"; mx: "bc.mx"; my: "bc.my"; mz: "bc.mz"; na: "bc.na"; nb: "bc.nb"; nc: "bc.nc"; nd: "bc.nd"; ne: "bc.ne"; nf: "bc.nf"; ng: "bc.ng"; nh: "bc.nh"; ni: "bc.ni"; nj: "bc.nj"; nk: "bc.nk"; nl: "bc.nl"; nm: "bc.nm"; nn: "bc.nn"; no: "bc.no"; np: "bc.np"; nq: "bc.nq"; nr: "bc.nr"; ns: "bc.ns"; nt: "bc.nt"; nu: "bc.nu"; nv: "bc.nv"; nw: "bc.nw"; nx: "bc.nx"; ny: "bc.ny"; nz: "bc.nz"; oa: "bc.oa"; ob: "bc.ob"; oc: "bc.oc"; od: "bc.od"; oe: "bc.oe"; of: "bc.of"; og: "bc.og"; oh: "bc.oh"; oi: "bc.oi"; oj: "bc.oj"; ok: "bc.ok"; ol: "bc.ol"; om: "bc.om"; on: "bc.on"; oo: "bc.oo"; op: "bc.op"; oq: "bc.oq"; or: "bc.or"; os: "bc.os"; ot: "bc.ot"; ou: "bc.ou"; ov: "bc.ov"; ow: "bc.ow"; ox: "bc.ox"; oy: "bc.oy"; oz: "bc.oz"; pa: "bc.pa"; pb: "bc.pb"; pc: "bc.pc"; pd: "bc.pd"; pe: "bc.pe"; pf: "bc.pf"; pg: "bc.pg"; ph: "bc.ph"; pi: "bc.pi"; pj: "bc.pj"; pk: "bc.pk"; pl: "bc.pl"; pm: "bc.pm"; pn: "bc.pn"; po: "bc.po"; pp: "bc.pp"; pq: "bc.pq"; pr: "bc.pr"; ps: "bc.ps"; pt: "bc.pt"; pu: "bc.pu"; pv: "bc.pv"; pw: "bc.pw"; px: "bc.px"; py: "bc.py"; pz: "bc.pz"; qa: "bc.qa"; qb: "bc.qb"; qc: "bc.qc"; qd: "bc.qd"; qe: "bc.qe"; qf: "bc.qf"; qg: "bc.qg"; qh: "bc.qh"; qi: "bc.qi"; qj: "bc.qj"; qk: "bc.qk"; ql: "bc.ql"; qm: "bc.qm"; qn: "bc.qn"; qo: "bc.qo"; qp: "bc.qp"; qq: "bc.qq"; qr: "bc.qr"; qs: "bc.qs"; qt: "bc.qt"; qu: "bc.qu"; qv: "bc.qv"; qw: "bc.qw"; qx: "bc.qx"; qy: "bc.qy"; qz: "bc.qz"; ra: "bc.ra"; rb: "bc.rb"; rc: "bc.rc"; rd: "bc.rd"; re: "bc.re"; rf: "bc.rf"; rg: "bc.rg"; rh: "bc.rh"; ri: "bc.ri"; rj: "bc.rj"; rk: "bc.rk"; rl: "bc.rl"; rm: "bc.rm"; rn: "bc.rn"; ro: "bc.ro"; rp: "bc.rp"; rq: "bc.rq"; rr: "bc.rr"; rs: "bc.rs"; rt: "bc.rt"; ru: "bc.ru"; rv: "bc.rv"; rw: "bc.rw"; rx: "bc.rx"; ry: "bc.ry"; rz: "bc.rz"; sa: "bc.sa"; sb: "bc.sb"; sc: "bc.sc"; sd: "bc.sd"; se: "bc.se"; sf: "bc.sf"; sg: "bc.sg"; sh: "bc.sh"; si: "bc.si"; sj: "bc.sj"; sk: "bc.sk"; sl: "bc.sl"; sm: "bc.sm"; sn: "bc.sn"; so: "bc.so"; sp: "bc.sp"; sq: "bc.sq"; sr: "bc.sr"; ss: "bc.ss"; st: "bc.st"; su: "bc.su"; sv: "bc.sv"; sw: "bc.sw"; sx: "bc.sx"; sy: "bc.sy"; sz: "bc.sz"; ta: "bc.ta"; tb: "bc.tb"; tc: "bc.tc"; td: "bc.td"; te: "bc.te"; tf: "bc.tf"; tg: "bc.tg"; th: "bc.th"; ti: "bc.ti"; tj: "bc.tj"; tk: "bc.tk"; tl: "bc.tl"; tm: "bc.tm"; tn: "bc.tn"; to: "bc.to"; tp: "bc.tp"; tq: "bc.tq"; tr: "bc.tr"; ts: "bc.ts"; tt: "bc.tt"; tu: "bc.tu"; tv: "bc.tv"; tw: "bc.tw"; tx: "bc.tx"; ty: "bc.ty"; tz: "bc.tz"; ua: "bc.ua"; ub: "bc.ub"; uc: "bc.uc"; ud: "bc.ud"; ue: "bc.ue"; uf: "bc.uf"; ug: "bc.ug"; uh: "bc.uh"; ui: "bc.ui"; uj: "bc.uj"; uk: "bc.uk"; ul: "bc.ul"; um: "bc.um"; un: "bc.un"; uo: "bc.uo"; up: "bc.up"; uq: "bc.uq"; ur: "bc.ur"; us: "bc.us"; ut: "bc.ut"; uu: "bc.uu"; uv: "bc.uv"; uw: "bc.uw"; ux: "bc.ux"; uy: "bc.uy"; uz: "bc.uz"; va: "bc.va"; vb: "bc.vb"; vc: "bc.vc"; vd: "bc.vd"; ve: "bc.ve"; vf: "bc.vf"; vg: "bc.vg"; vh: "bc.vh"; vi: "bc.vi"; vj: "bc.vj"; vk: "bc.vk"; vl: "bc.vl"; vm: "bc.vm"; vn: "bc.vn"; vo: "bc.vo"; vp: "bc.vp"; vq: "bc.vq"; vr: "bc.vr"; vs: "bc.vs"; vt: "bc.vt"; vu: "bc.vu"; vv: "bc.vv"; vw: "bc.vw"; vx: "bc.vx"; vy: "bc.vy"; vz: "bc.vz"; wa: "bc.wa"; wb: "bc.wb"; wc: "bc.wc"; wd: "bc.wd"; we: "bc.we"; wf: "bc.wf"; wg: "bc.wg"; wh: "bc.wh"; wi: "bc.wi"; wj: "bc.wj"; wk: "bc.wk"; wl: "bc.wl"; wm: "bc.wm"; wn: "bc.wn"; wo: "bc.wo"; wp: "bc.wp"; wq: "bc.wq"; wr: "bc.wr"; ws: "bc.ws"; wt: "bc.wt"; wu: "bc.wu"; wv: "bc.wv"; ww: "bc.ww"; wx: "bc.wx"; wy: "bc.wy"; wz: "bc.wz"; xa: "bc.xa"; xb: "bc.xb"; xc: "bc.xc"; xd: "bc.xd"; xe: "bc.xe"; xf: "bc.xf"; xg: "bc.xg"; xh: "bc.xh"; xi: "bc.xi"; xj: "bc.xj"; xk: "bc.xk"; xl: "bc.xl"; xm: "bc.xm"; xn: "bc.xn"; xo: "bc.xo"; xp: "bc.xp"; xq: "bc.xq"; xr: "bc.xr"; xs: "bc.xs"; xt: "bc.xt"; xu: "bc.xu"; xv: "bc.xv"; xw: "bc.xw"; xx: "bc.xx"; xy: "bc.xy"; xz: "bc.xz"; ya: "bc.ya"; yb: "bc.yb"; yc: "bc.yc"; yd: "bc.yd"; ye: "bc.ye"; yf: "bc.yf"; yg: "bc.yg"; yh: "bc.yh"; yi: "bc.yi"; yj: "bc.yj"; yk: "bc.yk"; yl: "bc.yl"; ym: "bc.ym"; yn: "bc.yn"; yo: "bc.yo"; yp: "bc.yp"; yq: "bc.yq"; yr: "bc.yr"; ys: "bc.ys"; yt: "bc.yt"; yu: "bc.yu"; yv: "bc.yv"; yw: "bc.yw"; yx: "bc.yx"; yy: "bc.yy"; yz: "bc.yz"; za: "bc.za"; zb: "bc.zb"; zc: "bc.zc"; zd: "bc.zd"; ze: "bc.ze"; zf: "bc.zf"; zg: "bc.zg"; zh: "bc.zh"; zi: "bc.zi"; zj: "bc.zj"; zk: "bc.zk"; zl: "bc.zl"; zm: "bc.zm"; zn: "bc.zn"; zo: "bc.zo"; zp: "bc.zp"; zq: "bc.zq"; zr: "bc.zr"; zs: "bc.zs"; zt: "bc.zt"; zu: "bc.zu"; zv: "bc.zv"; zw: "bc.zw"; zx: "bc.zx"; zy: "bc.zy"; zz: "bc.zz"; }; bd: { aa: "bd.aa"; ab: "bd.ab"; ac: "bd.ac"; ad: "bd.ad"; ae: "bd.ae"; af: "bd.af"; ag: "bd.ag"; ah: "bd.ah"; ai: "bd.ai"; aj: "bd.aj"; ak: "bd.ak"; al: "bd.al"; am: "bd.am"; an: "bd.an"; ao: "bd.ao"; ap: "bd.ap"; aq: "bd.aq"; ar: "bd.ar"; as: "bd.as"; at: "bd.at"; au: "bd.au"; av: "bd.av"; aw: "bd.aw"; ax: "bd.ax"; ay: "bd.ay"; az: "bd.az"; ba: "bd.ba"; bb: "bd.bb"; bc: "bd.bc"; bd: "bd.bd"; be: "bd.be"; bf: "bd.bf"; bg: "bd.bg"; bh: "bd.bh"; bi: "bd.bi"; bj: "bd.bj"; bk: "bd.bk"; bl: "bd.bl"; bm: "bd.bm"; bn: "bd.bn"; bo: "bd.bo"; bp: "bd.bp"; bq: "bd.bq"; br: "bd.br"; bs: "bd.bs"; bt: "bd.bt"; bu: "bd.bu"; bv: "bd.bv"; bw: "bd.bw"; bx: "bd.bx"; by: "bd.by"; bz: "bd.bz"; ca: "bd.ca"; cb: "bd.cb"; cc: "bd.cc"; cd: "bd.cd"; ce: "bd.ce"; cf: "bd.cf"; cg: "bd.cg"; ch: "bd.ch"; ci: "bd.ci"; cj: "bd.cj"; ck: "bd.ck"; cl: "bd.cl"; cm: "bd.cm"; cn: "bd.cn"; co: "bd.co"; cp: "bd.cp"; cq: "bd.cq"; cr: "bd.cr"; cs: "bd.cs"; ct: "bd.ct"; cu: "bd.cu"; cv: "bd.cv"; cw: "bd.cw"; cx: "bd.cx"; cy: "bd.cy"; cz: "bd.cz"; da: "bd.da"; db: "bd.db"; dc: "bd.dc"; dd: "bd.dd"; de: "bd.de"; df: "bd.df"; dg: "bd.dg"; dh: "bd.dh"; di: "bd.di"; dj: "bd.dj"; dk: "bd.dk"; dl: "bd.dl"; dm: "bd.dm"; dn: "bd.dn"; do: "bd.do"; dp: "bd.dp"; dq: "bd.dq"; dr: "bd.dr"; ds: "bd.ds"; dt: "bd.dt"; du: "bd.du"; dv: "bd.dv"; dw: "bd.dw"; dx: "bd.dx"; dy: "bd.dy"; dz: "bd.dz"; ea: "bd.ea"; eb: "bd.eb"; ec: "bd.ec"; ed: "bd.ed"; ee: "bd.ee"; ef: "bd.ef"; eg: "bd.eg"; eh: "bd.eh"; ei: "bd.ei"; ej: "bd.ej"; ek: "bd.ek"; el: "bd.el"; em: "bd.em"; en: "bd.en"; eo: "bd.eo"; ep: "bd.ep"; eq: "bd.eq"; er: "bd.er"; es: "bd.es"; et: "bd.et"; eu: "bd.eu"; ev: "bd.ev"; ew: "bd.ew"; ex: "bd.ex"; ey: "bd.ey"; ez: "bd.ez"; fa: "bd.fa"; fb: "bd.fb"; fc: "bd.fc"; fd: "bd.fd"; fe: "bd.fe"; ff: "bd.ff"; fg: "bd.fg"; fh: "bd.fh"; fi: "bd.fi"; fj: "bd.fj"; fk: "bd.fk"; fl: "bd.fl"; fm: "bd.fm"; fn: "bd.fn"; fo: "bd.fo"; fp: "bd.fp"; fq: "bd.fq"; fr: "bd.fr"; fs: "bd.fs"; ft: "bd.ft"; fu: "bd.fu"; fv: "bd.fv"; fw: "bd.fw"; fx: "bd.fx"; fy: "bd.fy"; fz: "bd.fz"; ga: "bd.ga"; gb: "bd.gb"; gc: "bd.gc"; gd: "bd.gd"; ge: "bd.ge"; gf: "bd.gf"; gg: "bd.gg"; gh: "bd.gh"; gi: "bd.gi"; gj: "bd.gj"; gk: "bd.gk"; gl: "bd.gl"; gm: "bd.gm"; gn: "bd.gn"; go: "bd.go"; gp: "bd.gp"; gq: "bd.gq"; gr: "bd.gr"; gs: "bd.gs"; gt: "bd.gt"; gu: "bd.gu"; gv: "bd.gv"; gw: "bd.gw"; gx: "bd.gx"; gy: "bd.gy"; gz: "bd.gz"; ha: "bd.ha"; hb: "bd.hb"; hc: "bd.hc"; hd: "bd.hd"; he: "bd.he"; hf: "bd.hf"; hg: "bd.hg"; hh: "bd.hh"; hi: "bd.hi"; hj: "bd.hj"; hk: "bd.hk"; hl: "bd.hl"; hm: "bd.hm"; hn: "bd.hn"; ho: "bd.ho"; hp: "bd.hp"; hq: "bd.hq"; hr: "bd.hr"; hs: "bd.hs"; ht: "bd.ht"; hu: "bd.hu"; hv: "bd.hv"; hw: "bd.hw"; hx: "bd.hx"; hy: "bd.hy"; hz: "bd.hz"; ia: "bd.ia"; ib: "bd.ib"; ic: "bd.ic"; id: "bd.id"; ie: "bd.ie"; if: "bd.if"; ig: "bd.ig"; ih: "bd.ih"; ii: "bd.ii"; ij: "bd.ij"; ik: "bd.ik"; il: "bd.il"; im: "bd.im"; in: "bd.in"; io: "bd.io"; ip: "bd.ip"; iq: "bd.iq"; ir: "bd.ir"; is: "bd.is"; it: "bd.it"; iu: "bd.iu"; iv: "bd.iv"; iw: "bd.iw"; ix: "bd.ix"; iy: "bd.iy"; iz: "bd.iz"; ja: "bd.ja"; jb: "bd.jb"; jc: "bd.jc"; jd: "bd.jd"; je: "bd.je"; jf: "bd.jf"; jg: "bd.jg"; jh: "bd.jh"; ji: "bd.ji"; jj: "bd.jj"; jk: "bd.jk"; jl: "bd.jl"; jm: "bd.jm"; jn: "bd.jn"; jo: "bd.jo"; jp: "bd.jp"; jq: "bd.jq"; jr: "bd.jr"; js: "bd.js"; jt: "bd.jt"; ju: "bd.ju"; jv: "bd.jv"; jw: "bd.jw"; jx: "bd.jx"; jy: "bd.jy"; jz: "bd.jz"; ka: "bd.ka"; kb: "bd.kb"; kc: "bd.kc"; kd: "bd.kd"; ke: "bd.ke"; kf: "bd.kf"; kg: "bd.kg"; kh: "bd.kh"; ki: "bd.ki"; kj: "bd.kj"; kk: "bd.kk"; kl: "bd.kl"; km: "bd.km"; kn: "bd.kn"; ko: "bd.ko"; kp: "bd.kp"; kq: "bd.kq"; kr: "bd.kr"; ks: "bd.ks"; kt: "bd.kt"; ku: "bd.ku"; kv: "bd.kv"; kw: "bd.kw"; kx: "bd.kx"; ky: "bd.ky"; kz: "bd.kz"; la: "bd.la"; lb: "bd.lb"; lc: "bd.lc"; ld: "bd.ld"; le: "bd.le"; lf: "bd.lf"; lg: "bd.lg"; lh: "bd.lh"; li: "bd.li"; lj: "bd.lj"; lk: "bd.lk"; ll: "bd.ll"; lm: "bd.lm"; ln: "bd.ln"; lo: "bd.lo"; lp: "bd.lp"; lq: "bd.lq"; lr: "bd.lr"; ls: "bd.ls"; lt: "bd.lt"; lu: "bd.lu"; lv: "bd.lv"; lw: "bd.lw"; lx: "bd.lx"; ly: "bd.ly"; lz: "bd.lz"; ma: "bd.ma"; mb: "bd.mb"; mc: "bd.mc"; md: "bd.md"; me: "bd.me"; mf: "bd.mf"; mg: "bd.mg"; mh: "bd.mh"; mi: "bd.mi"; mj: "bd.mj"; mk: "bd.mk"; ml: "bd.ml"; mm: "bd.mm"; mn: "bd.mn"; mo: "bd.mo"; mp: "bd.mp"; mq: "bd.mq"; mr: "bd.mr"; ms: "bd.ms"; mt: "bd.mt"; mu: "bd.mu"; mv: "bd.mv"; mw: "bd.mw"; mx: "bd.mx"; my: "bd.my"; mz: "bd.mz"; na: "bd.na"; nb: "bd.nb"; nc: "bd.nc"; nd: "bd.nd"; ne: "bd.ne"; nf: "bd.nf"; ng: "bd.ng"; nh: "bd.nh"; ni: "bd.ni"; nj: "bd.nj"; nk: "bd.nk"; nl: "bd.nl"; nm: "bd.nm"; nn: "bd.nn"; no: "bd.no"; np: "bd.np"; nq: "bd.nq"; nr: "bd.nr"; ns: "bd.ns"; nt: "bd.nt"; nu: "bd.nu"; nv: "bd.nv"; nw: "bd.nw"; nx: "bd.nx"; ny: "bd.ny"; nz: "bd.nz"; oa: "bd.oa"; ob: "bd.ob"; oc: "bd.oc"; od: "bd.od"; oe: "bd.oe"; of: "bd.of"; og: "bd.og"; oh: "bd.oh"; oi: "bd.oi"; oj: "bd.oj"; ok: "bd.ok"; ol: "bd.ol"; om: "bd.om"; on: "bd.on"; oo: "bd.oo"; op: "bd.op"; oq: "bd.oq"; or: "bd.or"; os: "bd.os"; ot: "bd.ot"; ou: "bd.ou"; ov: "bd.ov"; ow: "bd.ow"; ox: "bd.ox"; oy: "bd.oy"; oz: "bd.oz"; pa: "bd.pa"; pb: "bd.pb"; pc: "bd.pc"; pd: "bd.pd"; pe: "bd.pe"; pf: "bd.pf"; pg: "bd.pg"; ph: "bd.ph"; pi: "bd.pi"; pj: "bd.pj"; pk: "bd.pk"; pl: "bd.pl"; pm: "bd.pm"; pn: "bd.pn"; po: "bd.po"; pp: "bd.pp"; pq: "bd.pq"; pr: "bd.pr"; ps: "bd.ps"; pt: "bd.pt"; pu: "bd.pu"; pv: "bd.pv"; pw: "bd.pw"; px: "bd.px"; py: "bd.py"; pz: "bd.pz"; qa: "bd.qa"; qb: "bd.qb"; qc: "bd.qc"; qd: "bd.qd"; qe: "bd.qe"; qf: "bd.qf"; qg: "bd.qg"; qh: "bd.qh"; qi: "bd.qi"; qj: "bd.qj"; qk: "bd.qk"; ql: "bd.ql"; qm: "bd.qm"; qn: "bd.qn"; qo: "bd.qo"; qp: "bd.qp"; qq: "bd.qq"; qr: "bd.qr"; qs: "bd.qs"; qt: "bd.qt"; qu: "bd.qu"; qv: "bd.qv"; qw: "bd.qw"; qx: "bd.qx"; qy: "bd.qy"; qz: "bd.qz"; ra: "bd.ra"; rb: "bd.rb"; rc: "bd.rc"; rd: "bd.rd"; re: "bd.re"; rf: "bd.rf"; rg: "bd.rg"; rh: "bd.rh"; ri: "bd.ri"; rj: "bd.rj"; rk: "bd.rk"; rl: "bd.rl"; rm: "bd.rm"; rn: "bd.rn"; ro: "bd.ro"; rp: "bd.rp"; rq: "bd.rq"; rr: "bd.rr"; rs: "bd.rs"; rt: "bd.rt"; ru: "bd.ru"; rv: "bd.rv"; rw: "bd.rw"; rx: "bd.rx"; ry: "bd.ry"; rz: "bd.rz"; sa: "bd.sa"; sb: "bd.sb"; sc: "bd.sc"; sd: "bd.sd"; se: "bd.se"; sf: "bd.sf"; sg: "bd.sg"; sh: "bd.sh"; si: "bd.si"; sj: "bd.sj"; sk: "bd.sk"; sl: "bd.sl"; sm: "bd.sm"; sn: "bd.sn"; so: "bd.so"; sp: "bd.sp"; sq: "bd.sq"; sr: "bd.sr"; ss: "bd.ss"; st: "bd.st"; su: "bd.su"; sv: "bd.sv"; sw: "bd.sw"; sx: "bd.sx"; sy: "bd.sy"; sz: "bd.sz"; ta: "bd.ta"; tb: "bd.tb"; tc: "bd.tc"; td: "bd.td"; te: "bd.te"; tf: "bd.tf"; tg: "bd.tg"; th: "bd.th"; ti: "bd.ti"; tj: "bd.tj"; tk: "bd.tk"; tl: "bd.tl"; tm: "bd.tm"; tn: "bd.tn"; to: "bd.to"; tp: "bd.tp"; tq: "bd.tq"; tr: "bd.tr"; ts: "bd.ts"; tt: "bd.tt"; tu: "bd.tu"; tv: "bd.tv"; tw: "bd.tw"; tx: "bd.tx"; ty: "bd.ty"; tz: "bd.tz"; ua: "bd.ua"; ub: "bd.ub"; uc: "bd.uc"; ud: "bd.ud"; ue: "bd.ue"; uf: "bd.uf"; ug: "bd.ug"; uh: "bd.uh"; ui: "bd.ui"; uj: "bd.uj"; uk: "bd.uk"; ul: "bd.ul"; um: "bd.um"; un: "bd.un"; uo: "bd.uo"; up: "bd.up"; uq: "bd.uq"; ur: "bd.ur"; us: "bd.us"; ut: "bd.ut"; uu: "bd.uu"; uv: "bd.uv"; uw: "bd.uw"; ux: "bd.ux"; uy: "bd.uy"; uz: "bd.uz"; va: "bd.va"; vb: "bd.vb"; vc: "bd.vc"; vd: "bd.vd"; ve: "bd.ve"; vf: "bd.vf"; vg: "bd.vg"; vh: "bd.vh"; vi: "bd.vi"; vj: "bd.vj"; vk: "bd.vk"; vl: "bd.vl"; vm: "bd.vm"; vn: "bd.vn"; vo: "bd.vo"; vp: "bd.vp"; vq: "bd.vq"; vr: "bd.vr"; vs: "bd.vs"; vt: "bd.vt"; vu: "bd.vu"; vv: "bd.vv"; vw: "bd.vw"; vx: "bd.vx"; vy: "bd.vy"; vz: "bd.vz"; wa: "bd.wa"; wb: "bd.wb"; wc: "bd.wc"; wd: "bd.wd"; we: "bd.we"; wf: "bd.wf"; wg: "bd.wg"; wh: "bd.wh"; wi: "bd.wi"; wj: "bd.wj"; wk: "bd.wk"; wl: "bd.wl"; wm: "bd.wm"; wn: "bd.wn"; wo: "bd.wo"; wp: "bd.wp"; wq: "bd.wq"; wr: "bd.wr"; ws: "bd.ws"; wt: "bd.wt"; wu: "bd.wu"; wv: "bd.wv"; ww: "bd.ww"; wx: "bd.wx"; wy: "bd.wy"; wz: "bd.wz"; xa: "bd.xa"; xb: "bd.xb"; xc: "bd.xc"; xd: "bd.xd"; xe: "bd.xe"; xf: "bd.xf"; xg: "bd.xg"; xh: "bd.xh"; xi: "bd.xi"; xj: "bd.xj"; xk: "bd.xk"; xl: "bd.xl"; xm: "bd.xm"; xn: "bd.xn"; xo: "bd.xo"; xp: "bd.xp"; xq: "bd.xq"; xr: "bd.xr"; xs: "bd.xs"; xt: "bd.xt"; xu: "bd.xu"; xv: "bd.xv"; xw: "bd.xw"; xx: "bd.xx"; xy: "bd.xy"; xz: "bd.xz"; ya: "bd.ya"; yb: "bd.yb"; yc: "bd.yc"; yd: "bd.yd"; ye: "bd.ye"; yf: "bd.yf"; yg: "bd.yg"; yh: "bd.yh"; yi: "bd.yi"; yj: "bd.yj"; yk: "bd.yk"; yl: "bd.yl"; ym: "bd.ym"; yn: "bd.yn"; yo: "bd.yo"; yp: "bd.yp"; yq: "bd.yq"; yr: "bd.yr"; ys: "bd.ys"; yt: "bd.yt"; yu: "bd.yu"; yv: "bd.yv"; yw: "bd.yw"; yx: "bd.yx"; yy: "bd.yy"; yz: "bd.yz"; za: "bd.za"; zb: "bd.zb"; zc: "bd.zc"; zd: "bd.zd"; ze: "bd.ze"; zf: "bd.zf"; zg: "bd.zg"; zh: "bd.zh"; zi: "bd.zi"; zj: "bd.zj"; zk: "bd.zk"; zl: "bd.zl"; zm: "bd.zm"; zn: "bd.zn"; zo: "bd.zo"; zp: "bd.zp"; zq: "bd.zq"; zr: "bd.zr"; zs: "bd.zs"; zt: "bd.zt"; zu: "bd.zu"; zv: "bd.zv"; zw: "bd.zw"; zx: "bd.zx"; zy: "bd.zy"; zz: "bd.zz"; }; be: { aa: "be.aa"; ab: "be.ab"; ac: "be.ac"; ad: "be.ad"; ae: "be.ae"; af: "be.af"; ag: "be.ag"; ah: "be.ah"; ai: "be.ai"; aj: "be.aj"; ak: "be.ak"; al: "be.al"; am: "be.am"; an: "be.an"; ao: "be.ao"; ap: "be.ap"; aq: "be.aq"; ar: "be.ar"; as: "be.as"; at: "be.at"; au: "be.au"; av: "be.av"; aw: "be.aw"; ax: "be.ax"; ay: "be.ay"; az: "be.az"; ba: "be.ba"; bb: "be.bb"; bc: "be.bc"; bd: "be.bd"; be: "be.be"; bf: "be.bf"; bg: "be.bg"; bh: "be.bh"; bi: "be.bi"; bj: "be.bj"; bk: "be.bk"; bl: "be.bl"; bm: "be.bm"; bn: "be.bn"; bo: "be.bo"; bp: "be.bp"; bq: "be.bq"; br: "be.br"; bs: "be.bs"; bt: "be.bt"; bu: "be.bu"; bv: "be.bv"; bw: "be.bw"; bx: "be.bx"; by: "be.by"; bz: "be.bz"; ca: "be.ca"; cb: "be.cb"; cc: "be.cc"; cd: "be.cd"; ce: "be.ce"; cf: "be.cf"; cg: "be.cg"; ch: "be.ch"; ci: "be.ci"; cj: "be.cj"; ck: "be.ck"; cl: "be.cl"; cm: "be.cm"; cn: "be.cn"; co: "be.co"; cp: "be.cp"; cq: "be.cq"; cr: "be.cr"; cs: "be.cs"; ct: "be.ct"; cu: "be.cu"; cv: "be.cv"; cw: "be.cw"; cx: "be.cx"; cy: "be.cy"; cz: "be.cz"; da: "be.da"; db: "be.db"; dc: "be.dc"; dd: "be.dd"; de: "be.de"; df: "be.df"; dg: "be.dg"; dh: "be.dh"; di: "be.di"; dj: "be.dj"; dk: "be.dk"; dl: "be.dl"; dm: "be.dm"; dn: "be.dn"; do: "be.do"; dp: "be.dp"; dq: "be.dq"; dr: "be.dr"; ds: "be.ds"; dt: "be.dt"; du: "be.du"; dv: "be.dv"; dw: "be.dw"; dx: "be.dx"; dy: "be.dy"; dz: "be.dz"; ea: "be.ea"; eb: "be.eb"; ec: "be.ec"; ed: "be.ed"; ee: "be.ee"; ef: "be.ef"; eg: "be.eg"; eh: "be.eh"; ei: "be.ei"; ej: "be.ej"; ek: "be.ek"; el: "be.el"; em: "be.em"; en: "be.en"; eo: "be.eo"; ep: "be.ep"; eq: "be.eq"; er: "be.er"; es: "be.es"; et: "be.et"; eu: "be.eu"; ev: "be.ev"; ew: "be.ew"; ex: "be.ex"; ey: "be.ey"; ez: "be.ez"; fa: "be.fa"; fb: "be.fb"; fc: "be.fc"; fd: "be.fd"; fe: "be.fe"; ff: "be.ff"; fg: "be.fg"; fh: "be.fh"; fi: "be.fi"; fj: "be.fj"; fk: "be.fk"; fl: "be.fl"; fm: "be.fm"; fn: "be.fn"; fo: "be.fo"; fp: "be.fp"; fq: "be.fq"; fr: "be.fr"; fs: "be.fs"; ft: "be.ft"; fu: "be.fu"; fv: "be.fv"; fw: "be.fw"; fx: "be.fx"; fy: "be.fy"; fz: "be.fz"; ga: "be.ga"; gb: "be.gb"; gc: "be.gc"; gd: "be.gd"; ge: "be.ge"; gf: "be.gf"; gg: "be.gg"; gh: "be.gh"; gi: "be.gi"; gj: "be.gj"; gk: "be.gk"; gl: "be.gl"; gm: "be.gm"; gn: "be.gn"; go: "be.go"; gp: "be.gp"; gq: "be.gq"; gr: "be.gr"; gs: "be.gs"; gt: "be.gt"; gu: "be.gu"; gv: "be.gv"; gw: "be.gw"; gx: "be.gx"; gy: "be.gy"; gz: "be.gz"; ha: "be.ha"; hb: "be.hb"; hc: "be.hc"; hd: "be.hd"; he: "be.he"; hf: "be.hf"; hg: "be.hg"; hh: "be.hh"; hi: "be.hi"; hj: "be.hj"; hk: "be.hk"; hl: "be.hl"; hm: "be.hm"; hn: "be.hn"; ho: "be.ho"; hp: "be.hp"; hq: "be.hq"; hr: "be.hr"; hs: "be.hs"; ht: "be.ht"; hu: "be.hu"; hv: "be.hv"; hw: "be.hw"; hx: "be.hx"; hy: "be.hy"; hz: "be.hz"; ia: "be.ia"; ib: "be.ib"; ic: "be.ic"; id: "be.id"; ie: "be.ie"; if: "be.if"; ig: "be.ig"; ih: "be.ih"; ii: "be.ii"; ij: "be.ij"; ik: "be.ik"; il: "be.il"; im: "be.im"; in: "be.in"; io: "be.io"; ip: "be.ip"; iq: "be.iq"; ir: "be.ir"; is: "be.is"; it: "be.it"; iu: "be.iu"; iv: "be.iv"; iw: "be.iw"; ix: "be.ix"; iy: "be.iy"; iz: "be.iz"; ja: "be.ja"; jb: "be.jb"; jc: "be.jc"; jd: "be.jd"; je: "be.je"; jf: "be.jf"; jg: "be.jg"; jh: "be.jh"; ji: "be.ji"; jj: "be.jj"; jk: "be.jk"; jl: "be.jl"; jm: "be.jm"; jn: "be.jn"; jo: "be.jo"; jp: "be.jp"; jq: "be.jq"; jr: "be.jr"; js: "be.js"; jt: "be.jt"; ju: "be.ju"; jv: "be.jv"; jw: "be.jw"; jx: "be.jx"; jy: "be.jy"; jz: "be.jz"; ka: "be.ka"; kb: "be.kb"; kc: "be.kc"; kd: "be.kd"; ke: "be.ke"; kf: "be.kf"; kg: "be.kg"; kh: "be.kh"; ki: "be.ki"; kj: "be.kj"; kk: "be.kk"; kl: "be.kl"; km: "be.km"; kn: "be.kn"; ko: "be.ko"; kp: "be.kp"; kq: "be.kq"; kr: "be.kr"; ks: "be.ks"; kt: "be.kt"; ku: "be.ku"; kv: "be.kv"; kw: "be.kw"; kx: "be.kx"; ky: "be.ky"; kz: "be.kz"; la: "be.la"; lb: "be.lb"; lc: "be.lc"; ld: "be.ld"; le: "be.le"; lf: "be.lf"; lg: "be.lg"; lh: "be.lh"; li: "be.li"; lj: "be.lj"; lk: "be.lk"; ll: "be.ll"; lm: "be.lm"; ln: "be.ln"; lo: "be.lo"; lp: "be.lp"; lq: "be.lq"; lr: "be.lr"; ls: "be.ls"; lt: "be.lt"; lu: "be.lu"; lv: "be.lv"; lw: "be.lw"; lx: "be.lx"; ly: "be.ly"; lz: "be.lz"; ma: "be.ma"; mb: "be.mb"; mc: "be.mc"; md: "be.md"; me: "be.me"; mf: "be.mf"; mg: "be.mg"; mh: "be.mh"; mi: "be.mi"; mj: "be.mj"; mk: "be.mk"; ml: "be.ml"; mm: "be.mm"; mn: "be.mn"; mo: "be.mo"; mp: "be.mp"; mq: "be.mq"; mr: "be.mr"; ms: "be.ms"; mt: "be.mt"; mu: "be.mu"; mv: "be.mv"; mw: "be.mw"; mx: "be.mx"; my: "be.my"; mz: "be.mz"; na: "be.na"; nb: "be.nb"; nc: "be.nc"; nd: "be.nd"; ne: "be.ne"; nf: "be.nf"; ng: "be.ng"; nh: "be.nh"; ni: "be.ni"; nj: "be.nj"; nk: "be.nk"; nl: "be.nl"; nm: "be.nm"; nn: "be.nn"; no: "be.no"; np: "be.np"; nq: "be.nq"; nr: "be.nr"; ns: "be.ns"; nt: "be.nt"; nu: "be.nu"; nv: "be.nv"; nw: "be.nw"; nx: "be.nx"; ny: "be.ny"; nz: "be.nz"; oa: "be.oa"; ob: "be.ob"; oc: "be.oc"; od: "be.od"; oe: "be.oe"; of: "be.of"; og: "be.og"; oh: "be.oh"; oi: "be.oi"; oj: "be.oj"; ok: "be.ok"; ol: "be.ol"; om: "be.om"; on: "be.on"; oo: "be.oo"; op: "be.op"; oq: "be.oq"; or: "be.or"; os: "be.os"; ot: "be.ot"; ou: "be.ou"; ov: "be.ov"; ow: "be.ow"; ox: "be.ox"; oy: "be.oy"; oz: "be.oz"; pa: "be.pa"; pb: "be.pb"; pc: "be.pc"; pd: "be.pd"; pe: "be.pe"; pf: "be.pf"; pg: "be.pg"; ph: "be.ph"; pi: "be.pi"; pj: "be.pj"; pk: "be.pk"; pl: "be.pl"; pm: "be.pm"; pn: "be.pn"; po: "be.po"; pp: "be.pp"; pq: "be.pq"; pr: "be.pr"; ps: "be.ps"; pt: "be.pt"; pu: "be.pu"; pv: "be.pv"; pw: "be.pw"; px: "be.px"; py: "be.py"; pz: "be.pz"; qa: "be.qa"; qb: "be.qb"; qc: "be.qc"; qd: "be.qd"; qe: "be.qe"; qf: "be.qf"; qg: "be.qg"; qh: "be.qh"; qi: "be.qi"; qj: "be.qj"; qk: "be.qk"; ql: "be.ql"; qm: "be.qm"; qn: "be.qn"; qo: "be.qo"; qp: "be.qp"; qq: "be.qq"; qr: "be.qr"; qs: "be.qs"; qt: "be.qt"; qu: "be.qu"; qv: "be.qv"; qw: "be.qw"; qx: "be.qx"; qy: "be.qy"; qz: "be.qz"; ra: "be.ra"; rb: "be.rb"; rc: "be.rc"; rd: "be.rd"; re: "be.re"; rf: "be.rf"; rg: "be.rg"; rh: "be.rh"; ri: "be.ri"; rj: "be.rj"; rk: "be.rk"; rl: "be.rl"; rm: "be.rm"; rn: "be.rn"; ro: "be.ro"; rp: "be.rp"; rq: "be.rq"; rr: "be.rr"; rs: "be.rs"; rt: "be.rt"; ru: "be.ru"; rv: "be.rv"; rw: "be.rw"; rx: "be.rx"; ry: "be.ry"; rz: "be.rz"; sa: "be.sa"; sb: "be.sb"; sc: "be.sc"; sd: "be.sd"; se: "be.se"; sf: "be.sf"; sg: "be.sg"; sh: "be.sh"; si: "be.si"; sj: "be.sj"; sk: "be.sk"; sl: "be.sl"; sm: "be.sm"; sn: "be.sn"; so: "be.so"; sp: "be.sp"; sq: "be.sq"; sr: "be.sr"; ss: "be.ss"; st: "be.st"; su: "be.su"; sv: "be.sv"; sw: "be.sw"; sx: "be.sx"; sy: "be.sy"; sz: "be.sz"; ta: "be.ta"; tb: "be.tb"; tc: "be.tc"; td: "be.td"; te: "be.te"; tf: "be.tf"; tg: "be.tg"; th: "be.th"; ti: "be.ti"; tj: "be.tj"; tk: "be.tk"; tl: "be.tl"; tm: "be.tm"; tn: "be.tn"; to: "be.to"; tp: "be.tp"; tq: "be.tq"; tr: "be.tr"; ts: "be.ts"; tt: "be.tt"; tu: "be.tu"; tv: "be.tv"; tw: "be.tw"; tx: "be.tx"; ty: "be.ty"; tz: "be.tz"; ua: "be.ua"; ub: "be.ub"; uc: "be.uc"; ud: "be.ud"; ue: "be.ue"; uf: "be.uf"; ug: "be.ug"; uh: "be.uh"; ui: "be.ui"; uj: "be.uj"; uk: "be.uk"; ul: "be.ul"; um: "be.um"; un: "be.un"; uo: "be.uo"; up: "be.up"; uq: "be.uq"; ur: "be.ur"; us: "be.us"; ut: "be.ut"; uu: "be.uu"; uv: "be.uv"; uw: "be.uw"; ux: "be.ux"; uy: "be.uy"; uz: "be.uz"; va: "be.va"; vb: "be.vb"; vc: "be.vc"; vd: "be.vd"; ve: "be.ve"; vf: "be.vf"; vg: "be.vg"; vh: "be.vh"; vi: "be.vi"; vj: "be.vj"; vk: "be.vk"; vl: "be.vl"; vm: "be.vm"; vn: "be.vn"; vo: "be.vo"; vp: "be.vp"; vq: "be.vq"; vr: "be.vr"; vs: "be.vs"; vt: "be.vt"; vu: "be.vu"; vv: "be.vv"; vw: "be.vw"; vx: "be.vx"; vy: "be.vy"; vz: "be.vz"; wa: "be.wa"; wb: "be.wb"; wc: "be.wc"; wd: "be.wd"; we: "be.we"; wf: "be.wf"; wg: "be.wg"; wh: "be.wh"; wi: "be.wi"; wj: "be.wj"; wk: "be.wk"; wl: "be.wl"; wm: "be.wm"; wn: "be.wn"; wo: "be.wo"; wp: "be.wp"; wq: "be.wq"; wr: "be.wr"; ws: "be.ws"; wt: "be.wt"; wu: "be.wu"; wv: "be.wv"; ww: "be.ww"; wx: "be.wx"; wy: "be.wy"; wz: "be.wz"; xa: "be.xa"; xb: "be.xb"; xc: "be.xc"; xd: "be.xd"; xe: "be.xe"; xf: "be.xf"; xg: "be.xg"; xh: "be.xh"; xi: "be.xi"; xj: "be.xj"; xk: "be.xk"; xl: "be.xl"; xm: "be.xm"; xn: "be.xn"; xo: "be.xo"; xp: "be.xp"; xq: "be.xq"; xr: "be.xr"; xs: "be.xs"; xt: "be.xt"; xu: "be.xu"; xv: "be.xv"; xw: "be.xw"; xx: "be.xx"; xy: "be.xy"; xz: "be.xz"; ya: "be.ya"; yb: "be.yb"; yc: "be.yc"; yd: "be.yd"; ye: "be.ye"; yf: "be.yf"; yg: "be.yg"; yh: "be.yh"; yi: "be.yi"; yj: "be.yj"; yk: "be.yk"; yl: "be.yl"; ym: "be.ym"; yn: "be.yn"; yo: "be.yo"; yp: "be.yp"; yq: "be.yq"; yr: "be.yr"; ys: "be.ys"; yt: "be.yt"; yu: "be.yu"; yv: "be.yv"; yw: "be.yw"; yx: "be.yx"; yy: "be.yy"; yz: "be.yz"; za: "be.za"; zb: "be.zb"; zc: "be.zc"; zd: "be.zd"; ze: "be.ze"; zf: "be.zf"; zg: "be.zg"; zh: "be.zh"; zi: "be.zi"; zj: "be.zj"; zk: "be.zk"; zl: "be.zl"; zm: "be.zm"; zn: "be.zn"; zo: "be.zo"; zp: "be.zp"; zq: "be.zq"; zr: "be.zr"; zs: "be.zs"; zt: "be.zt"; zu: "be.zu"; zv: "be.zv"; zw: "be.zw"; zx: "be.zx"; zy: "be.zy"; zz: "be.zz"; }; bf: { aa: "bf.aa"; ab: "bf.ab"; ac: "bf.ac"; ad: "bf.ad"; ae: "bf.ae"; af: "bf.af"; ag: "bf.ag"; ah: "bf.ah"; ai: "bf.ai"; aj: "bf.aj"; ak: "bf.ak"; al: "bf.al"; am: "bf.am"; an: "bf.an"; ao: "bf.ao"; ap: "bf.ap"; aq: "bf.aq"; ar: "bf.ar"; as: "bf.as"; at: "bf.at"; au: "bf.au"; av: "bf.av"; aw: "bf.aw"; ax: "bf.ax"; ay: "bf.ay"; az: "bf.az"; ba: "bf.ba"; bb: "bf.bb"; bc: "bf.bc"; bd: "bf.bd"; be: "bf.be"; bf: "bf.bf"; bg: "bf.bg"; bh: "bf.bh"; bi: "bf.bi"; bj: "bf.bj"; bk: "bf.bk"; bl: "bf.bl"; bm: "bf.bm"; bn: "bf.bn"; bo: "bf.bo"; bp: "bf.bp"; bq: "bf.bq"; br: "bf.br"; bs: "bf.bs"; bt: "bf.bt"; bu: "bf.bu"; bv: "bf.bv"; bw: "bf.bw"; bx: "bf.bx"; by: "bf.by"; bz: "bf.bz"; ca: "bf.ca"; cb: "bf.cb"; cc: "bf.cc"; cd: "bf.cd"; ce: "bf.ce"; cf: "bf.cf"; cg: "bf.cg"; ch: "bf.ch"; ci: "bf.ci"; cj: "bf.cj"; ck: "bf.ck"; cl: "bf.cl"; cm: "bf.cm"; cn: "bf.cn"; co: "bf.co"; cp: "bf.cp"; cq: "bf.cq"; cr: "bf.cr"; cs: "bf.cs"; ct: "bf.ct"; cu: "bf.cu"; cv: "bf.cv"; cw: "bf.cw"; cx: "bf.cx"; cy: "bf.cy"; cz: "bf.cz"; da: "bf.da"; db: "bf.db"; dc: "bf.dc"; dd: "bf.dd"; de: "bf.de"; df: "bf.df"; dg: "bf.dg"; dh: "bf.dh"; di: "bf.di"; dj: "bf.dj"; dk: "bf.dk"; dl: "bf.dl"; dm: "bf.dm"; dn: "bf.dn"; do: "bf.do"; dp: "bf.dp"; dq: "bf.dq"; dr: "bf.dr"; ds: "bf.ds"; dt: "bf.dt"; du: "bf.du"; dv: "bf.dv"; dw: "bf.dw"; dx: "bf.dx"; dy: "bf.dy"; dz: "bf.dz"; ea: "bf.ea"; eb: "bf.eb"; ec: "bf.ec"; ed: "bf.ed"; ee: "bf.ee"; ef: "bf.ef"; eg: "bf.eg"; eh: "bf.eh"; ei: "bf.ei"; ej: "bf.ej"; ek: "bf.ek"; el: "bf.el"; em: "bf.em"; en: "bf.en"; eo: "bf.eo"; ep: "bf.ep"; eq: "bf.eq"; er: "bf.er"; es: "bf.es"; et: "bf.et"; eu: "bf.eu"; ev: "bf.ev"; ew: "bf.ew"; ex: "bf.ex"; ey: "bf.ey"; ez: "bf.ez"; fa: "bf.fa"; fb: "bf.fb"; fc: "bf.fc"; fd: "bf.fd"; fe: "bf.fe"; ff: "bf.ff"; fg: "bf.fg"; fh: "bf.fh"; fi: "bf.fi"; fj: "bf.fj"; fk: "bf.fk"; fl: "bf.fl"; fm: "bf.fm"; fn: "bf.fn"; fo: "bf.fo"; fp: "bf.fp"; fq: "bf.fq"; fr: "bf.fr"; fs: "bf.fs"; ft: "bf.ft"; fu: "bf.fu"; fv: "bf.fv"; fw: "bf.fw"; fx: "bf.fx"; fy: "bf.fy"; fz: "bf.fz"; ga: "bf.ga"; gb: "bf.gb"; gc: "bf.gc"; gd: "bf.gd"; ge: "bf.ge"; gf: "bf.gf"; gg: "bf.gg"; gh: "bf.gh"; gi: "bf.gi"; gj: "bf.gj"; gk: "bf.gk"; gl: "bf.gl"; gm: "bf.gm"; gn: "bf.gn"; go: "bf.go"; gp: "bf.gp"; gq: "bf.gq"; gr: "bf.gr"; gs: "bf.gs"; gt: "bf.gt"; gu: "bf.gu"; gv: "bf.gv"; gw: "bf.gw"; gx: "bf.gx"; gy: "bf.gy"; gz: "bf.gz"; ha: "bf.ha"; hb: "bf.hb"; hc: "bf.hc"; hd: "bf.hd"; he: "bf.he"; hf: "bf.hf"; hg: "bf.hg"; hh: "bf.hh"; hi: "bf.hi"; hj: "bf.hj"; hk: "bf.hk"; hl: "bf.hl"; hm: "bf.hm"; hn: "bf.hn"; ho: "bf.ho"; hp: "bf.hp"; hq: "bf.hq"; hr: "bf.hr"; hs: "bf.hs"; ht: "bf.ht"; hu: "bf.hu"; hv: "bf.hv"; hw: "bf.hw"; hx: "bf.hx"; hy: "bf.hy"; hz: "bf.hz"; ia: "bf.ia"; ib: "bf.ib"; ic: "bf.ic"; id: "bf.id"; ie: "bf.ie"; if: "bf.if"; ig: "bf.ig"; ih: "bf.ih"; ii: "bf.ii"; ij: "bf.ij"; ik: "bf.ik"; il: "bf.il"; im: "bf.im"; in: "bf.in"; io: "bf.io"; ip: "bf.ip"; iq: "bf.iq"; ir: "bf.ir"; is: "bf.is"; it: "bf.it"; iu: "bf.iu"; iv: "bf.iv"; iw: "bf.iw"; ix: "bf.ix"; iy: "bf.iy"; iz: "bf.iz"; ja: "bf.ja"; jb: "bf.jb"; jc: "bf.jc"; jd: "bf.jd"; je: "bf.je"; jf: "bf.jf"; jg: "bf.jg"; jh: "bf.jh"; ji: "bf.ji"; jj: "bf.jj"; jk: "bf.jk"; jl: "bf.jl"; jm: "bf.jm"; jn: "bf.jn"; jo: "bf.jo"; jp: "bf.jp"; jq: "bf.jq"; jr: "bf.jr"; js: "bf.js"; jt: "bf.jt"; ju: "bf.ju"; jv: "bf.jv"; jw: "bf.jw"; jx: "bf.jx"; jy: "bf.jy"; jz: "bf.jz"; ka: "bf.ka"; kb: "bf.kb"; kc: "bf.kc"; kd: "bf.kd"; ke: "bf.ke"; kf: "bf.kf"; kg: "bf.kg"; kh: "bf.kh"; ki: "bf.ki"; kj: "bf.kj"; kk: "bf.kk"; kl: "bf.kl"; km: "bf.km"; kn: "bf.kn"; ko: "bf.ko"; kp: "bf.kp"; kq: "bf.kq"; kr: "bf.kr"; ks: "bf.ks"; kt: "bf.kt"; ku: "bf.ku"; kv: "bf.kv"; kw: "bf.kw"; kx: "bf.kx"; ky: "bf.ky"; kz: "bf.kz"; la: "bf.la"; lb: "bf.lb"; lc: "bf.lc"; ld: "bf.ld"; le: "bf.le"; lf: "bf.lf"; lg: "bf.lg"; lh: "bf.lh"; li: "bf.li"; lj: "bf.lj"; lk: "bf.lk"; ll: "bf.ll"; lm: "bf.lm"; ln: "bf.ln"; lo: "bf.lo"; lp: "bf.lp"; lq: "bf.lq"; lr: "bf.lr"; ls: "bf.ls"; lt: "bf.lt"; lu: "bf.lu"; lv: "bf.lv"; lw: "bf.lw"; lx: "bf.lx"; ly: "bf.ly"; lz: "bf.lz"; ma: "bf.ma"; mb: "bf.mb"; mc: "bf.mc"; md: "bf.md"; me: "bf.me"; mf: "bf.mf"; mg: "bf.mg"; mh: "bf.mh"; mi: "bf.mi"; mj: "bf.mj"; mk: "bf.mk"; ml: "bf.ml"; mm: "bf.mm"; mn: "bf.mn"; mo: "bf.mo"; mp: "bf.mp"; mq: "bf.mq"; mr: "bf.mr"; ms: "bf.ms"; mt: "bf.mt"; mu: "bf.mu"; mv: "bf.mv"; mw: "bf.mw"; mx: "bf.mx"; my: "bf.my"; mz: "bf.mz"; na: "bf.na"; nb: "bf.nb"; nc: "bf.nc"; nd: "bf.nd"; ne: "bf.ne"; nf: "bf.nf"; ng: "bf.ng"; nh: "bf.nh"; ni: "bf.ni"; nj: "bf.nj"; nk: "bf.nk"; nl: "bf.nl"; nm: "bf.nm"; nn: "bf.nn"; no: "bf.no"; np: "bf.np"; nq: "bf.nq"; nr: "bf.nr"; ns: "bf.ns"; nt: "bf.nt"; nu: "bf.nu"; nv: "bf.nv"; nw: "bf.nw"; nx: "bf.nx"; ny: "bf.ny"; nz: "bf.nz"; oa: "bf.oa"; ob: "bf.ob"; oc: "bf.oc"; od: "bf.od"; oe: "bf.oe"; of: "bf.of"; og: "bf.og"; oh: "bf.oh"; oi: "bf.oi"; oj: "bf.oj"; ok: "bf.ok"; ol: "bf.ol"; om: "bf.om"; on: "bf.on"; oo: "bf.oo"; op: "bf.op"; oq: "bf.oq"; or: "bf.or"; os: "bf.os"; ot: "bf.ot"; ou: "bf.ou"; ov: "bf.ov"; ow: "bf.ow"; ox: "bf.ox"; oy: "bf.oy"; oz: "bf.oz"; pa: "bf.pa"; pb: "bf.pb"; pc: "bf.pc"; pd: "bf.pd"; pe: "bf.pe"; pf: "bf.pf"; pg: "bf.pg"; ph: "bf.ph"; pi: "bf.pi"; pj: "bf.pj"; pk: "bf.pk"; pl: "bf.pl"; pm: "bf.pm"; pn: "bf.pn"; po: "bf.po"; pp: "bf.pp"; pq: "bf.pq"; pr: "bf.pr"; ps: "bf.ps"; pt: "bf.pt"; pu: "bf.pu"; pv: "bf.pv"; pw: "bf.pw"; px: "bf.px"; py: "bf.py"; pz: "bf.pz"; qa: "bf.qa"; qb: "bf.qb"; qc: "bf.qc"; qd: "bf.qd"; qe: "bf.qe"; qf: "bf.qf"; qg: "bf.qg"; qh: "bf.qh"; qi: "bf.qi"; qj: "bf.qj"; qk: "bf.qk"; ql: "bf.ql"; qm: "bf.qm"; qn: "bf.qn"; qo: "bf.qo"; qp: "bf.qp"; qq: "bf.qq"; qr: "bf.qr"; qs: "bf.qs"; qt: "bf.qt"; qu: "bf.qu"; qv: "bf.qv"; qw: "bf.qw"; qx: "bf.qx"; qy: "bf.qy"; qz: "bf.qz"; ra: "bf.ra"; rb: "bf.rb"; rc: "bf.rc"; rd: "bf.rd"; re: "bf.re"; rf: "bf.rf"; rg: "bf.rg"; rh: "bf.rh"; ri: "bf.ri"; rj: "bf.rj"; rk: "bf.rk"; rl: "bf.rl"; rm: "bf.rm"; rn: "bf.rn"; ro: "bf.ro"; rp: "bf.rp"; rq: "bf.rq"; rr: "bf.rr"; rs: "bf.rs"; rt: "bf.rt"; ru: "bf.ru"; rv: "bf.rv"; rw: "bf.rw"; rx: "bf.rx"; ry: "bf.ry"; rz: "bf.rz"; sa: "bf.sa"; sb: "bf.sb"; sc: "bf.sc"; sd: "bf.sd"; se: "bf.se"; sf: "bf.sf"; sg: "bf.sg"; sh: "bf.sh"; si: "bf.si"; sj: "bf.sj"; sk: "bf.sk"; sl: "bf.sl"; sm: "bf.sm"; sn: "bf.sn"; so: "bf.so"; sp: "bf.sp"; sq: "bf.sq"; sr: "bf.sr"; ss: "bf.ss"; st: "bf.st"; su: "bf.su"; sv: "bf.sv"; sw: "bf.sw"; sx: "bf.sx"; sy: "bf.sy"; sz: "bf.sz"; ta: "bf.ta"; tb: "bf.tb"; tc: "bf.tc"; td: "bf.td"; te: "bf.te"; tf: "bf.tf"; tg: "bf.tg"; th: "bf.th"; ti: "bf.ti"; tj: "bf.tj"; tk: "bf.tk"; tl: "bf.tl"; tm: "bf.tm"; tn: "bf.tn"; to: "bf.to"; tp: "bf.tp"; tq: "bf.tq"; tr: "bf.tr"; ts: "bf.ts"; tt: "bf.tt"; tu: "bf.tu"; tv: "bf.tv"; tw: "bf.tw"; tx: "bf.tx"; ty: "bf.ty"; tz: "bf.tz"; ua: "bf.ua"; ub: "bf.ub"; uc: "bf.uc"; ud: "bf.ud"; ue: "bf.ue"; uf: "bf.uf"; ug: "bf.ug"; uh: "bf.uh"; ui: "bf.ui"; uj: "bf.uj"; uk: "bf.uk"; ul: "bf.ul"; um: "bf.um"; un: "bf.un"; uo: "bf.uo"; up: "bf.up"; uq: "bf.uq"; ur: "bf.ur"; us: "bf.us"; ut: "bf.ut"; uu: "bf.uu"; uv: "bf.uv"; uw: "bf.uw"; ux: "bf.ux"; uy: "bf.uy"; uz: "bf.uz"; va: "bf.va"; vb: "bf.vb"; vc: "bf.vc"; vd: "bf.vd"; ve: "bf.ve"; vf: "bf.vf"; vg: "bf.vg"; vh: "bf.vh"; vi: "bf.vi"; vj: "bf.vj"; vk: "bf.vk"; vl: "bf.vl"; vm: "bf.vm"; vn: "bf.vn"; vo: "bf.vo"; vp: "bf.vp"; vq: "bf.vq"; vr: "bf.vr"; vs: "bf.vs"; vt: "bf.vt"; vu: "bf.vu"; vv: "bf.vv"; vw: "bf.vw"; vx: "bf.vx"; vy: "bf.vy"; vz: "bf.vz"; wa: "bf.wa"; wb: "bf.wb"; wc: "bf.wc"; wd: "bf.wd"; we: "bf.we"; wf: "bf.wf"; wg: "bf.wg"; wh: "bf.wh"; wi: "bf.wi"; wj: "bf.wj"; wk: "bf.wk"; wl: "bf.wl"; wm: "bf.wm"; wn: "bf.wn"; wo: "bf.wo"; wp: "bf.wp"; wq: "bf.wq"; wr: "bf.wr"; ws: "bf.ws"; wt: "bf.wt"; wu: "bf.wu"; wv: "bf.wv"; ww: "bf.ww"; wx: "bf.wx"; wy: "bf.wy"; wz: "bf.wz"; xa: "bf.xa"; xb: "bf.xb"; xc: "bf.xc"; xd: "bf.xd"; xe: "bf.xe"; xf: "bf.xf"; xg: "bf.xg"; xh: "bf.xh"; xi: "bf.xi"; xj: "bf.xj"; xk: "bf.xk"; xl: "bf.xl"; xm: "bf.xm"; xn: "bf.xn"; xo: "bf.xo"; xp: "bf.xp"; xq: "bf.xq"; xr: "bf.xr"; xs: "bf.xs"; xt: "bf.xt"; xu: "bf.xu"; xv: "bf.xv"; xw: "bf.xw"; xx: "bf.xx"; xy: "bf.xy"; xz: "bf.xz"; ya: "bf.ya"; yb: "bf.yb"; yc: "bf.yc"; yd: "bf.yd"; ye: "bf.ye"; yf: "bf.yf"; yg: "bf.yg"; yh: "bf.yh"; yi: "bf.yi"; yj: "bf.yj"; yk: "bf.yk"; yl: "bf.yl"; ym: "bf.ym"; yn: "bf.yn"; yo: "bf.yo"; yp: "bf.yp"; yq: "bf.yq"; yr: "bf.yr"; ys: "bf.ys"; yt: "bf.yt"; yu: "bf.yu"; yv: "bf.yv"; yw: "bf.yw"; yx: "bf.yx"; yy: "bf.yy"; yz: "bf.yz"; za: "bf.za"; zb: "bf.zb"; zc: "bf.zc"; zd: "bf.zd"; ze: "bf.ze"; zf: "bf.zf"; zg: "bf.zg"; zh: "bf.zh"; zi: "bf.zi"; zj: "bf.zj"; zk: "bf.zk"; zl: "bf.zl"; zm: "bf.zm"; zn: "bf.zn"; zo: "bf.zo"; zp: "bf.zp"; zq: "bf.zq"; zr: "bf.zr"; zs: "bf.zs"; zt: "bf.zt"; zu: "bf.zu"; zv: "bf.zv"; zw: "bf.zw"; zx: "bf.zx"; zy: "bf.zy"; zz: "bf.zz"; }; bg: { aa: "bg.aa"; ab: "bg.ab"; ac: "bg.ac"; ad: "bg.ad"; ae: "bg.ae"; af: "bg.af"; ag: "bg.ag"; ah: "bg.ah"; ai: "bg.ai"; aj: "bg.aj"; ak: "bg.ak"; al: "bg.al"; am: "bg.am"; an: "bg.an"; ao: "bg.ao"; ap: "bg.ap"; aq: "bg.aq"; ar: "bg.ar"; as: "bg.as"; at: "bg.at"; au: "bg.au"; av: "bg.av"; aw: "bg.aw"; ax: "bg.ax"; ay: "bg.ay"; az: "bg.az"; ba: "bg.ba"; bb: "bg.bb"; bc: "bg.bc"; bd: "bg.bd"; be: "bg.be"; bf: "bg.bf"; bg: "bg.bg"; bh: "bg.bh"; bi: "bg.bi"; bj: "bg.bj"; bk: "bg.bk"; bl: "bg.bl"; bm: "bg.bm"; bn: "bg.bn"; bo: "bg.bo"; bp: "bg.bp"; bq: "bg.bq"; br: "bg.br"; bs: "bg.bs"; bt: "bg.bt"; bu: "bg.bu"; bv: "bg.bv"; bw: "bg.bw"; bx: "bg.bx"; by: "bg.by"; bz: "bg.bz"; ca: "bg.ca"; cb: "bg.cb"; cc: "bg.cc"; cd: "bg.cd"; ce: "bg.ce"; cf: "bg.cf"; cg: "bg.cg"; ch: "bg.ch"; ci: "bg.ci"; cj: "bg.cj"; ck: "bg.ck"; cl: "bg.cl"; cm: "bg.cm"; cn: "bg.cn"; co: "bg.co"; cp: "bg.cp"; cq: "bg.cq"; cr: "bg.cr"; cs: "bg.cs"; ct: "bg.ct"; cu: "bg.cu"; cv: "bg.cv"; cw: "bg.cw"; cx: "bg.cx"; cy: "bg.cy"; cz: "bg.cz"; da: "bg.da"; db: "bg.db"; dc: "bg.dc"; dd: "bg.dd"; de: "bg.de"; df: "bg.df"; dg: "bg.dg"; dh: "bg.dh"; di: "bg.di"; dj: "bg.dj"; dk: "bg.dk"; dl: "bg.dl"; dm: "bg.dm"; dn: "bg.dn"; do: "bg.do"; dp: "bg.dp"; dq: "bg.dq"; dr: "bg.dr"; ds: "bg.ds"; dt: "bg.dt"; du: "bg.du"; dv: "bg.dv"; dw: "bg.dw"; dx: "bg.dx"; dy: "bg.dy"; dz: "bg.dz"; ea: "bg.ea"; eb: "bg.eb"; ec: "bg.ec"; ed: "bg.ed"; ee: "bg.ee"; ef: "bg.ef"; eg: "bg.eg"; eh: "bg.eh"; ei: "bg.ei"; ej: "bg.ej"; ek: "bg.ek"; el: "bg.el"; em: "bg.em"; en: "bg.en"; eo: "bg.eo"; ep: "bg.ep"; eq: "bg.eq"; er: "bg.er"; es: "bg.es"; et: "bg.et"; eu: "bg.eu"; ev: "bg.ev"; ew: "bg.ew"; ex: "bg.ex"; ey: "bg.ey"; ez: "bg.ez"; fa: "bg.fa"; fb: "bg.fb"; fc: "bg.fc"; fd: "bg.fd"; fe: "bg.fe"; ff: "bg.ff"; fg: "bg.fg"; fh: "bg.fh"; fi: "bg.fi"; fj: "bg.fj"; fk: "bg.fk"; fl: "bg.fl"; fm: "bg.fm"; fn: "bg.fn"; fo: "bg.fo"; fp: "bg.fp"; fq: "bg.fq"; fr: "bg.fr"; fs: "bg.fs"; ft: "bg.ft"; fu: "bg.fu"; fv: "bg.fv"; fw: "bg.fw"; fx: "bg.fx"; fy: "bg.fy"; fz: "bg.fz"; ga: "bg.ga"; gb: "bg.gb"; gc: "bg.gc"; gd: "bg.gd"; ge: "bg.ge"; gf: "bg.gf"; gg: "bg.gg"; gh: "bg.gh"; gi: "bg.gi"; gj: "bg.gj"; gk: "bg.gk"; gl: "bg.gl"; gm: "bg.gm"; gn: "bg.gn"; go: "bg.go"; gp: "bg.gp"; gq: "bg.gq"; gr: "bg.gr"; gs: "bg.gs"; gt: "bg.gt"; gu: "bg.gu"; gv: "bg.gv"; gw: "bg.gw"; gx: "bg.gx"; gy: "bg.gy"; gz: "bg.gz"; ha: "bg.ha"; hb: "bg.hb"; hc: "bg.hc"; hd: "bg.hd"; he: "bg.he"; hf: "bg.hf"; hg: "bg.hg"; hh: "bg.hh"; hi: "bg.hi"; hj: "bg.hj"; hk: "bg.hk"; hl: "bg.hl"; hm: "bg.hm"; hn: "bg.hn"; ho: "bg.ho"; hp: "bg.hp"; hq: "bg.hq"; hr: "bg.hr"; hs: "bg.hs"; ht: "bg.ht"; hu: "bg.hu"; hv: "bg.hv"; hw: "bg.hw"; hx: "bg.hx"; hy: "bg.hy"; hz: "bg.hz"; ia: "bg.ia"; ib: "bg.ib"; ic: "bg.ic"; id: "bg.id"; ie: "bg.ie"; if: "bg.if"; ig: "bg.ig"; ih: "bg.ih"; ii: "bg.ii"; ij: "bg.ij"; ik: "bg.ik"; il: "bg.il"; im: "bg.im"; in: "bg.in"; io: "bg.io"; ip: "bg.ip"; iq: "bg.iq"; ir: "bg.ir"; is: "bg.is"; it: "bg.it"; iu: "bg.iu"; iv: "bg.iv"; iw: "bg.iw"; ix: "bg.ix"; iy: "bg.iy"; iz: "bg.iz"; ja: "bg.ja"; jb: "bg.jb"; jc: "bg.jc"; jd: "bg.jd"; je: "bg.je"; jf: "bg.jf"; jg: "bg.jg"; jh: "bg.jh"; ji: "bg.ji"; jj: "bg.jj"; jk: "bg.jk"; jl: "bg.jl"; jm: "bg.jm"; jn: "bg.jn"; jo: "bg.jo"; jp: "bg.jp"; jq: "bg.jq"; jr: "bg.jr"; js: "bg.js"; jt: "bg.jt"; ju: "bg.ju"; jv: "bg.jv"; jw: "bg.jw"; jx: "bg.jx"; jy: "bg.jy"; jz: "bg.jz"; ka: "bg.ka"; kb: "bg.kb"; kc: "bg.kc"; kd: "bg.kd"; ke: "bg.ke"; kf: "bg.kf"; kg: "bg.kg"; kh: "bg.kh"; ki: "bg.ki"; kj: "bg.kj"; kk: "bg.kk"; kl: "bg.kl"; km: "bg.km"; kn: "bg.kn"; ko: "bg.ko"; kp: "bg.kp"; kq: "bg.kq"; kr: "bg.kr"; ks: "bg.ks"; kt: "bg.kt"; ku: "bg.ku"; kv: "bg.kv"; kw: "bg.kw"; kx: "bg.kx"; ky: "bg.ky"; kz: "bg.kz"; la: "bg.la"; lb: "bg.lb"; lc: "bg.lc"; ld: "bg.ld"; le: "bg.le"; lf: "bg.lf"; lg: "bg.lg"; lh: "bg.lh"; li: "bg.li"; lj: "bg.lj"; lk: "bg.lk"; ll: "bg.ll"; lm: "bg.lm"; ln: "bg.ln"; lo: "bg.lo"; lp: "bg.lp"; lq: "bg.lq"; lr: "bg.lr"; ls: "bg.ls"; lt: "bg.lt"; lu: "bg.lu"; lv: "bg.lv"; lw: "bg.lw"; lx: "bg.lx"; ly: "bg.ly"; lz: "bg.lz"; ma: "bg.ma"; mb: "bg.mb"; mc: "bg.mc"; md: "bg.md"; me: "bg.me"; mf: "bg.mf"; mg: "bg.mg"; mh: "bg.mh"; mi: "bg.mi"; mj: "bg.mj"; mk: "bg.mk"; ml: "bg.ml"; mm: "bg.mm"; mn: "bg.mn"; mo: "bg.mo"; mp: "bg.mp"; mq: "bg.mq"; mr: "bg.mr"; ms: "bg.ms"; mt: "bg.mt"; mu: "bg.mu"; mv: "bg.mv"; mw: "bg.mw"; mx: "bg.mx"; my: "bg.my"; mz: "bg.mz"; na: "bg.na"; nb: "bg.nb"; nc: "bg.nc"; nd: "bg.nd"; ne: "bg.ne"; nf: "bg.nf"; ng: "bg.ng"; nh: "bg.nh"; ni: "bg.ni"; nj: "bg.nj"; nk: "bg.nk"; nl: "bg.nl"; nm: "bg.nm"; nn: "bg.nn"; no: "bg.no"; np: "bg.np"; nq: "bg.nq"; nr: "bg.nr"; ns: "bg.ns"; nt: "bg.nt"; nu: "bg.nu"; nv: "bg.nv"; nw: "bg.nw"; nx: "bg.nx"; ny: "bg.ny"; nz: "bg.nz"; oa: "bg.oa"; ob: "bg.ob"; oc: "bg.oc"; od: "bg.od"; oe: "bg.oe"; of: "bg.of"; og: "bg.og"; oh: "bg.oh"; oi: "bg.oi"; oj: "bg.oj"; ok: "bg.ok"; ol: "bg.ol"; om: "bg.om"; on: "bg.on"; oo: "bg.oo"; op: "bg.op"; oq: "bg.oq"; or: "bg.or"; os: "bg.os"; ot: "bg.ot"; ou: "bg.ou"; ov: "bg.ov"; ow: "bg.ow"; ox: "bg.ox"; oy: "bg.oy"; oz: "bg.oz"; pa: "bg.pa"; pb: "bg.pb"; pc: "bg.pc"; pd: "bg.pd"; pe: "bg.pe"; pf: "bg.pf"; pg: "bg.pg"; ph: "bg.ph"; pi: "bg.pi"; pj: "bg.pj"; pk: "bg.pk"; pl: "bg.pl"; pm: "bg.pm"; pn: "bg.pn"; po: "bg.po"; pp: "bg.pp"; pq: "bg.pq"; pr: "bg.pr"; ps: "bg.ps"; pt: "bg.pt"; pu: "bg.pu"; pv: "bg.pv"; pw: "bg.pw"; px: "bg.px"; py: "bg.py"; pz: "bg.pz"; qa: "bg.qa"; qb: "bg.qb"; qc: "bg.qc"; qd: "bg.qd"; qe: "bg.qe"; qf: "bg.qf"; qg: "bg.qg"; qh: "bg.qh"; qi: "bg.qi"; qj: "bg.qj"; qk: "bg.qk"; ql: "bg.ql"; qm: "bg.qm"; qn: "bg.qn"; qo: "bg.qo"; qp: "bg.qp"; qq: "bg.qq"; qr: "bg.qr"; qs: "bg.qs"; qt: "bg.qt"; qu: "bg.qu"; qv: "bg.qv"; qw: "bg.qw"; qx: "bg.qx"; qy: "bg.qy"; qz: "bg.qz"; ra: "bg.ra"; rb: "bg.rb"; rc: "bg.rc"; rd: "bg.rd"; re: "bg.re"; rf: "bg.rf"; rg: "bg.rg"; rh: "bg.rh"; ri: "bg.ri"; rj: "bg.rj"; rk: "bg.rk"; rl: "bg.rl"; rm: "bg.rm"; rn: "bg.rn"; ro: "bg.ro"; rp: "bg.rp"; rq: "bg.rq"; rr: "bg.rr"; rs: "bg.rs"; rt: "bg.rt"; ru: "bg.ru"; rv: "bg.rv"; rw: "bg.rw"; rx: "bg.rx"; ry: "bg.ry"; rz: "bg.rz"; sa: "bg.sa"; sb: "bg.sb"; sc: "bg.sc"; sd: "bg.sd"; se: "bg.se"; sf: "bg.sf"; sg: "bg.sg"; sh: "bg.sh"; si: "bg.si"; sj: "bg.sj"; sk: "bg.sk"; sl: "bg.sl"; sm: "bg.sm"; sn: "bg.sn"; so: "bg.so"; sp: "bg.sp"; sq: "bg.sq"; sr: "bg.sr"; ss: "bg.ss"; st: "bg.st"; su: "bg.su"; sv: "bg.sv"; sw: "bg.sw"; sx: "bg.sx"; sy: "bg.sy"; sz: "bg.sz"; ta: "bg.ta"; tb: "bg.tb"; tc: "bg.tc"; td: "bg.td"; te: "bg.te"; tf: "bg.tf"; tg: "bg.tg"; th: "bg.th"; ti: "bg.ti"; tj: "bg.tj"; tk: "bg.tk"; tl: "bg.tl"; tm: "bg.tm"; tn: "bg.tn"; to: "bg.to"; tp: "bg.tp"; tq: "bg.tq"; tr: "bg.tr"; ts: "bg.ts"; tt: "bg.tt"; tu: "bg.tu"; tv: "bg.tv"; tw: "bg.tw"; tx: "bg.tx"; ty: "bg.ty"; tz: "bg.tz"; ua: "bg.ua"; ub: "bg.ub"; uc: "bg.uc"; ud: "bg.ud"; ue: "bg.ue"; uf: "bg.uf"; ug: "bg.ug"; uh: "bg.uh"; ui: "bg.ui"; uj: "bg.uj"; uk: "bg.uk"; ul: "bg.ul"; um: "bg.um"; un: "bg.un"; uo: "bg.uo"; up: "bg.up"; uq: "bg.uq"; ur: "bg.ur"; us: "bg.us"; ut: "bg.ut"; uu: "bg.uu"; uv: "bg.uv"; uw: "bg.uw"; ux: "bg.ux"; uy: "bg.uy"; uz: "bg.uz"; va: "bg.va"; vb: "bg.vb"; vc: "bg.vc"; vd: "bg.vd"; ve: "bg.ve"; vf: "bg.vf"; vg: "bg.vg"; vh: "bg.vh"; vi: "bg.vi"; vj: "bg.vj"; vk: "bg.vk"; vl: "bg.vl"; vm: "bg.vm"; vn: "bg.vn"; vo: "bg.vo"; vp: "bg.vp"; vq: "bg.vq"; vr: "bg.vr"; vs: "bg.vs"; vt: "bg.vt"; vu: "bg.vu"; vv: "bg.vv"; vw: "bg.vw"; vx: "bg.vx"; vy: "bg.vy"; vz: "bg.vz"; wa: "bg.wa"; wb: "bg.wb"; wc: "bg.wc"; wd: "bg.wd"; we: "bg.we"; wf: "bg.wf"; wg: "bg.wg"; wh: "bg.wh"; wi: "bg.wi"; wj: "bg.wj"; wk: "bg.wk"; wl: "bg.wl"; wm: "bg.wm"; wn: "bg.wn"; wo: "bg.wo"; wp: "bg.wp"; wq: "bg.wq"; wr: "bg.wr"; ws: "bg.ws"; wt: "bg.wt"; wu: "bg.wu"; wv: "bg.wv"; ww: "bg.ww"; wx: "bg.wx"; wy: "bg.wy"; wz: "bg.wz"; xa: "bg.xa"; xb: "bg.xb"; xc: "bg.xc"; xd: "bg.xd"; xe: "bg.xe"; xf: "bg.xf"; xg: "bg.xg"; xh: "bg.xh"; xi: "bg.xi"; xj: "bg.xj"; xk: "bg.xk"; xl: "bg.xl"; xm: "bg.xm"; xn: "bg.xn"; xo: "bg.xo"; xp: "bg.xp"; xq: "bg.xq"; xr: "bg.xr"; xs: "bg.xs"; xt: "bg.xt"; xu: "bg.xu"; xv: "bg.xv"; xw: "bg.xw"; xx: "bg.xx"; xy: "bg.xy"; xz: "bg.xz"; ya: "bg.ya"; yb: "bg.yb"; yc: "bg.yc"; yd: "bg.yd"; ye: "bg.ye"; yf: "bg.yf"; yg: "bg.yg"; yh: "bg.yh"; yi: "bg.yi"; yj: "bg.yj"; yk: "bg.yk"; yl: "bg.yl"; ym: "bg.ym"; yn: "bg.yn"; yo: "bg.yo"; yp: "bg.yp"; yq: "bg.yq"; yr: "bg.yr"; ys: "bg.ys"; yt: "bg.yt"; yu: "bg.yu"; yv: "bg.yv"; yw: "bg.yw"; yx: "bg.yx"; yy: "bg.yy"; yz: "bg.yz"; za: "bg.za"; zb: "bg.zb"; zc: "bg.zc"; zd: "bg.zd"; ze: "bg.ze"; zf: "bg.zf"; zg: "bg.zg"; zh: "bg.zh"; zi: "bg.zi"; zj: "bg.zj"; zk: "bg.zk"; zl: "bg.zl"; zm: "bg.zm"; zn: "bg.zn"; zo: "bg.zo"; zp: "bg.zp"; zq: "bg.zq"; zr: "bg.zr"; zs: "bg.zs"; zt: "bg.zt"; zu: "bg.zu"; zv: "bg.zv"; zw: "bg.zw"; zx: "bg.zx"; zy: "bg.zy"; zz: "bg.zz"; }; bh: { aa: "bh.aa"; ab: "bh.ab"; ac: "bh.ac"; ad: "bh.ad"; ae: "bh.ae"; af: "bh.af"; ag: "bh.ag"; ah: "bh.ah"; ai: "bh.ai"; aj: "bh.aj"; ak: "bh.ak"; al: "bh.al"; am: "bh.am"; an: "bh.an"; ao: "bh.ao"; ap: "bh.ap"; aq: "bh.aq"; ar: "bh.ar"; as: "bh.as"; at: "bh.at"; au: "bh.au"; av: "bh.av"; aw: "bh.aw"; ax: "bh.ax"; ay: "bh.ay"; az: "bh.az"; ba: "bh.ba"; bb: "bh.bb"; bc: "bh.bc"; bd: "bh.bd"; be: "bh.be"; bf: "bh.bf"; bg: "bh.bg"; bh: "bh.bh"; bi: "bh.bi"; bj: "bh.bj"; bk: "bh.bk"; bl: "bh.bl"; bm: "bh.bm"; bn: "bh.bn"; bo: "bh.bo"; bp: "bh.bp"; bq: "bh.bq"; br: "bh.br"; bs: "bh.bs"; bt: "bh.bt"; bu: "bh.bu"; bv: "bh.bv"; bw: "bh.bw"; bx: "bh.bx"; by: "bh.by"; bz: "bh.bz"; ca: "bh.ca"; cb: "bh.cb"; cc: "bh.cc"; cd: "bh.cd"; ce: "bh.ce"; cf: "bh.cf"; cg: "bh.cg"; ch: "bh.ch"; ci: "bh.ci"; cj: "bh.cj"; ck: "bh.ck"; cl: "bh.cl"; cm: "bh.cm"; cn: "bh.cn"; co: "bh.co"; cp: "bh.cp"; cq: "bh.cq"; cr: "bh.cr"; cs: "bh.cs"; ct: "bh.ct"; cu: "bh.cu"; cv: "bh.cv"; cw: "bh.cw"; cx: "bh.cx"; cy: "bh.cy"; cz: "bh.cz"; da: "bh.da"; db: "bh.db"; dc: "bh.dc"; dd: "bh.dd"; de: "bh.de"; df: "bh.df"; dg: "bh.dg"; dh: "bh.dh"; di: "bh.di"; dj: "bh.dj"; dk: "bh.dk"; dl: "bh.dl"; dm: "bh.dm"; dn: "bh.dn"; do: "bh.do"; dp: "bh.dp"; dq: "bh.dq"; dr: "bh.dr"; ds: "bh.ds"; dt: "bh.dt"; du: "bh.du"; dv: "bh.dv"; dw: "bh.dw"; dx: "bh.dx"; dy: "bh.dy"; dz: "bh.dz"; ea: "bh.ea"; eb: "bh.eb"; ec: "bh.ec"; ed: "bh.ed"; ee: "bh.ee"; ef: "bh.ef"; eg: "bh.eg"; eh: "bh.eh"; ei: "bh.ei"; ej: "bh.ej"; ek: "bh.ek"; el: "bh.el"; em: "bh.em"; en: "bh.en"; eo: "bh.eo"; ep: "bh.ep"; eq: "bh.eq"; er: "bh.er"; es: "bh.es"; et: "bh.et"; eu: "bh.eu"; ev: "bh.ev"; ew: "bh.ew"; ex: "bh.ex"; ey: "bh.ey"; ez: "bh.ez"; fa: "bh.fa"; fb: "bh.fb"; fc: "bh.fc"; fd: "bh.fd"; fe: "bh.fe"; ff: "bh.ff"; fg: "bh.fg"; fh: "bh.fh"; fi: "bh.fi"; fj: "bh.fj"; fk: "bh.fk"; fl: "bh.fl"; fm: "bh.fm"; fn: "bh.fn"; fo: "bh.fo"; fp: "bh.fp"; fq: "bh.fq"; fr: "bh.fr"; fs: "bh.fs"; ft: "bh.ft"; fu: "bh.fu"; fv: "bh.fv"; fw: "bh.fw"; fx: "bh.fx"; fy: "bh.fy"; fz: "bh.fz"; ga: "bh.ga"; gb: "bh.gb"; gc: "bh.gc"; gd: "bh.gd"; ge: "bh.ge"; gf: "bh.gf"; gg: "bh.gg"; gh: "bh.gh"; gi: "bh.gi"; gj: "bh.gj"; gk: "bh.gk"; gl: "bh.gl"; gm: "bh.gm"; gn: "bh.gn"; go: "bh.go"; gp: "bh.gp"; gq: "bh.gq"; gr: "bh.gr"; gs: "bh.gs"; gt: "bh.gt"; gu: "bh.gu"; gv: "bh.gv"; gw: "bh.gw"; gx: "bh.gx"; gy: "bh.gy"; gz: "bh.gz"; ha: "bh.ha"; hb: "bh.hb"; hc: "bh.hc"; hd: "bh.hd"; he: "bh.he"; hf: "bh.hf"; hg: "bh.hg"; hh: "bh.hh"; hi: "bh.hi"; hj: "bh.hj"; hk: "bh.hk"; hl: "bh.hl"; hm: "bh.hm"; hn: "bh.hn"; ho: "bh.ho"; hp: "bh.hp"; hq: "bh.hq"; hr: "bh.hr"; hs: "bh.hs"; ht: "bh.ht"; hu: "bh.hu"; hv: "bh.hv"; hw: "bh.hw"; hx: "bh.hx"; hy: "bh.hy"; hz: "bh.hz"; ia: "bh.ia"; ib: "bh.ib"; ic: "bh.ic"; id: "bh.id"; ie: "bh.ie"; if: "bh.if"; ig: "bh.ig"; ih: "bh.ih"; ii: "bh.ii"; ij: "bh.ij"; ik: "bh.ik"; il: "bh.il"; im: "bh.im"; in: "bh.in"; io: "bh.io"; ip: "bh.ip"; iq: "bh.iq"; ir: "bh.ir"; is: "bh.is"; it: "bh.it"; iu: "bh.iu"; iv: "bh.iv"; iw: "bh.iw"; ix: "bh.ix"; iy: "bh.iy"; iz: "bh.iz"; ja: "bh.ja"; jb: "bh.jb"; jc: "bh.jc"; jd: "bh.jd"; je: "bh.je"; jf: "bh.jf"; jg: "bh.jg"; jh: "bh.jh"; ji: "bh.ji"; jj: "bh.jj"; jk: "bh.jk"; jl: "bh.jl"; jm: "bh.jm"; jn: "bh.jn"; jo: "bh.jo"; jp: "bh.jp"; jq: "bh.jq"; jr: "bh.jr"; js: "bh.js"; jt: "bh.jt"; ju: "bh.ju"; jv: "bh.jv"; jw: "bh.jw"; jx: "bh.jx"; jy: "bh.jy"; jz: "bh.jz"; ka: "bh.ka"; kb: "bh.kb"; kc: "bh.kc"; kd: "bh.kd"; ke: "bh.ke"; kf: "bh.kf"; kg: "bh.kg"; kh: "bh.kh"; ki: "bh.ki"; kj: "bh.kj"; kk: "bh.kk"; kl: "bh.kl"; km: "bh.km"; kn: "bh.kn"; ko: "bh.ko"; kp: "bh.kp"; kq: "bh.kq"; kr: "bh.kr"; ks: "bh.ks"; kt: "bh.kt"; ku: "bh.ku"; kv: "bh.kv"; kw: "bh.kw"; kx: "bh.kx"; ky: "bh.ky"; kz: "bh.kz"; la: "bh.la"; lb: "bh.lb"; lc: "bh.lc"; ld: "bh.ld"; le: "bh.le"; lf: "bh.lf"; lg: "bh.lg"; lh: "bh.lh"; li: "bh.li"; lj: "bh.lj"; lk: "bh.lk"; ll: "bh.ll"; lm: "bh.lm"; ln: "bh.ln"; lo: "bh.lo"; lp: "bh.lp"; lq: "bh.lq"; lr: "bh.lr"; ls: "bh.ls"; lt: "bh.lt"; lu: "bh.lu"; lv: "bh.lv"; lw: "bh.lw"; lx: "bh.lx"; ly: "bh.ly"; lz: "bh.lz"; ma: "bh.ma"; mb: "bh.mb"; mc: "bh.mc"; md: "bh.md"; me: "bh.me"; mf: "bh.mf"; mg: "bh.mg"; mh: "bh.mh"; mi: "bh.mi"; mj: "bh.mj"; mk: "bh.mk"; ml: "bh.ml"; mm: "bh.mm"; mn: "bh.mn"; mo: "bh.mo"; mp: "bh.mp"; mq: "bh.mq"; mr: "bh.mr"; ms: "bh.ms"; mt: "bh.mt"; mu: "bh.mu"; mv: "bh.mv"; mw: "bh.mw"; mx: "bh.mx"; my: "bh.my"; mz: "bh.mz"; na: "bh.na"; nb: "bh.nb"; nc: "bh.nc"; nd: "bh.nd"; ne: "bh.ne"; nf: "bh.nf"; ng: "bh.ng"; nh: "bh.nh"; ni: "bh.ni"; nj: "bh.nj"; nk: "bh.nk"; nl: "bh.nl"; nm: "bh.nm"; nn: "bh.nn"; no: "bh.no"; np: "bh.np"; nq: "bh.nq"; nr: "bh.nr"; ns: "bh.ns"; nt: "bh.nt"; nu: "bh.nu"; nv: "bh.nv"; nw: "bh.nw"; nx: "bh.nx"; ny: "bh.ny"; nz: "bh.nz"; oa: "bh.oa"; ob: "bh.ob"; oc: "bh.oc"; od: "bh.od"; oe: "bh.oe"; of: "bh.of"; og: "bh.og"; oh: "bh.oh"; oi: "bh.oi"; oj: "bh.oj"; ok: "bh.ok"; ol: "bh.ol"; om: "bh.om"; on: "bh.on"; oo: "bh.oo"; op: "bh.op"; oq: "bh.oq"; or: "bh.or"; os: "bh.os"; ot: "bh.ot"; ou: "bh.ou"; ov: "bh.ov"; ow: "bh.ow"; ox: "bh.ox"; oy: "bh.oy"; oz: "bh.oz"; pa: "bh.pa"; pb: "bh.pb"; pc: "bh.pc"; pd: "bh.pd"; pe: "bh.pe"; pf: "bh.pf"; pg: "bh.pg"; ph: "bh.ph"; pi: "bh.pi"; pj: "bh.pj"; pk: "bh.pk"; pl: "bh.pl"; pm: "bh.pm"; pn: "bh.pn"; po: "bh.po"; pp: "bh.pp"; pq: "bh.pq"; pr: "bh.pr"; ps: "bh.ps"; pt: "bh.pt"; pu: "bh.pu"; pv: "bh.pv"; pw: "bh.pw"; px: "bh.px"; py: "bh.py"; pz: "bh.pz"; qa: "bh.qa"; qb: "bh.qb"; qc: "bh.qc"; qd: "bh.qd"; qe: "bh.qe"; qf: "bh.qf"; qg: "bh.qg"; qh: "bh.qh"; qi: "bh.qi"; qj: "bh.qj"; qk: "bh.qk"; ql: "bh.ql"; qm: "bh.qm"; qn: "bh.qn"; qo: "bh.qo"; qp: "bh.qp"; qq: "bh.qq"; qr: "bh.qr"; qs: "bh.qs"; qt: "bh.qt"; qu: "bh.qu"; qv: "bh.qv"; qw: "bh.qw"; qx: "bh.qx"; qy: "bh.qy"; qz: "bh.qz"; ra: "bh.ra"; rb: "bh.rb"; rc: "bh.rc"; rd: "bh.rd"; re: "bh.re"; rf: "bh.rf"; rg: "bh.rg"; rh: "bh.rh"; ri: "bh.ri"; rj: "bh.rj"; rk: "bh.rk"; rl: "bh.rl"; rm: "bh.rm"; rn: "bh.rn"; ro: "bh.ro"; rp: "bh.rp"; rq: "bh.rq"; rr: "bh.rr"; rs: "bh.rs"; rt: "bh.rt"; ru: "bh.ru"; rv: "bh.rv"; rw: "bh.rw"; rx: "bh.rx"; ry: "bh.ry"; rz: "bh.rz"; sa: "bh.sa"; sb: "bh.sb"; sc: "bh.sc"; sd: "bh.sd"; se: "bh.se"; sf: "bh.sf"; sg: "bh.sg"; sh: "bh.sh"; si: "bh.si"; sj: "bh.sj"; sk: "bh.sk"; sl: "bh.sl"; sm: "bh.sm"; sn: "bh.sn"; so: "bh.so"; sp: "bh.sp"; sq: "bh.sq"; sr: "bh.sr"; ss: "bh.ss"; st: "bh.st"; su: "bh.su"; sv: "bh.sv"; sw: "bh.sw"; sx: "bh.sx"; sy: "bh.sy"; sz: "bh.sz"; ta: "bh.ta"; tb: "bh.tb"; tc: "bh.tc"; td: "bh.td"; te: "bh.te"; tf: "bh.tf"; tg: "bh.tg"; th: "bh.th"; ti: "bh.ti"; tj: "bh.tj"; tk: "bh.tk"; tl: "bh.tl"; tm: "bh.tm"; tn: "bh.tn"; to: "bh.to"; tp: "bh.tp"; tq: "bh.tq"; tr: "bh.tr"; ts: "bh.ts"; tt: "bh.tt"; tu: "bh.tu"; tv: "bh.tv"; tw: "bh.tw"; tx: "bh.tx"; ty: "bh.ty"; tz: "bh.tz"; ua: "bh.ua"; ub: "bh.ub"; uc: "bh.uc"; ud: "bh.ud"; ue: "bh.ue"; uf: "bh.uf"; ug: "bh.ug"; uh: "bh.uh"; ui: "bh.ui"; uj: "bh.uj"; uk: "bh.uk"; ul: "bh.ul"; um: "bh.um"; un: "bh.un"; uo: "bh.uo"; up: "bh.up"; uq: "bh.uq"; ur: "bh.ur"; us: "bh.us"; ut: "bh.ut"; uu: "bh.uu"; uv: "bh.uv"; uw: "bh.uw"; ux: "bh.ux"; uy: "bh.uy"; uz: "bh.uz"; va: "bh.va"; vb: "bh.vb"; vc: "bh.vc"; vd: "bh.vd"; ve: "bh.ve"; vf: "bh.vf"; vg: "bh.vg"; vh: "bh.vh"; vi: "bh.vi"; vj: "bh.vj"; vk: "bh.vk"; vl: "bh.vl"; vm: "bh.vm"; vn: "bh.vn"; vo: "bh.vo"; vp: "bh.vp"; vq: "bh.vq"; vr: "bh.vr"; vs: "bh.vs"; vt: "bh.vt"; vu: "bh.vu"; vv: "bh.vv"; vw: "bh.vw"; vx: "bh.vx"; vy: "bh.vy"; vz: "bh.vz"; wa: "bh.wa"; wb: "bh.wb"; wc: "bh.wc"; wd: "bh.wd"; we: "bh.we"; wf: "bh.wf"; wg: "bh.wg"; wh: "bh.wh"; wi: "bh.wi"; wj: "bh.wj"; wk: "bh.wk"; wl: "bh.wl"; wm: "bh.wm"; wn: "bh.wn"; wo: "bh.wo"; wp: "bh.wp"; wq: "bh.wq"; wr: "bh.wr"; ws: "bh.ws"; wt: "bh.wt"; wu: "bh.wu"; wv: "bh.wv"; ww: "bh.ww"; wx: "bh.wx"; wy: "bh.wy"; wz: "bh.wz"; xa: "bh.xa"; xb: "bh.xb"; xc: "bh.xc"; xd: "bh.xd"; xe: "bh.xe"; xf: "bh.xf"; xg: "bh.xg"; xh: "bh.xh"; xi: "bh.xi"; xj: "bh.xj"; xk: "bh.xk"; xl: "bh.xl"; xm: "bh.xm"; xn: "bh.xn"; xo: "bh.xo"; xp: "bh.xp"; xq: "bh.xq"; xr: "bh.xr"; xs: "bh.xs"; xt: "bh.xt"; xu: "bh.xu"; xv: "bh.xv"; xw: "bh.xw"; xx: "bh.xx"; xy: "bh.xy"; xz: "bh.xz"; ya: "bh.ya"; yb: "bh.yb"; yc: "bh.yc"; yd: "bh.yd"; ye: "bh.ye"; yf: "bh.yf"; yg: "bh.yg"; yh: "bh.yh"; yi: "bh.yi"; yj: "bh.yj"; yk: "bh.yk"; yl: "bh.yl"; ym: "bh.ym"; yn: "bh.yn"; yo: "bh.yo"; yp: "bh.yp"; yq: "bh.yq"; yr: "bh.yr"; ys: "bh.ys"; yt: "bh.yt"; yu: "bh.yu"; yv: "bh.yv"; yw: "bh.yw"; yx: "bh.yx"; yy: "bh.yy"; yz: "bh.yz"; za: "bh.za"; zb: "bh.zb"; zc: "bh.zc"; zd: "bh.zd"; ze: "bh.ze"; zf: "bh.zf"; zg: "bh.zg"; zh: "bh.zh"; zi: "bh.zi"; zj: "bh.zj"; zk: "bh.zk"; zl: "bh.zl"; zm: "bh.zm"; zn: "bh.zn"; zo: "bh.zo"; zp: "bh.zp"; zq: "bh.zq"; zr: "bh.zr"; zs: "bh.zs"; zt: "bh.zt"; zu: "bh.zu"; zv: "bh.zv"; zw: "bh.zw"; zx: "bh.zx"; zy: "bh.zy"; zz: "bh.zz"; }; bi: { aa: "bi.aa"; ab: "bi.ab"; ac: "bi.ac"; ad: "bi.ad"; ae: "bi.ae"; af: "bi.af"; ag: "bi.ag"; ah: "bi.ah"; ai: "bi.ai"; aj: "bi.aj"; ak: "bi.ak"; al: "bi.al"; am: "bi.am"; an: "bi.an"; ao: "bi.ao"; ap: "bi.ap"; aq: "bi.aq"; ar: "bi.ar"; as: "bi.as"; at: "bi.at"; au: "bi.au"; av: "bi.av"; aw: "bi.aw"; ax: "bi.ax"; ay: "bi.ay"; az: "bi.az"; ba: "bi.ba"; bb: "bi.bb"; bc: "bi.bc"; bd: "bi.bd"; be: "bi.be"; bf: "bi.bf"; bg: "bi.bg"; bh: "bi.bh"; bi: "bi.bi"; bj: "bi.bj"; bk: "bi.bk"; bl: "bi.bl"; bm: "bi.bm"; bn: "bi.bn"; bo: "bi.bo"; bp: "bi.bp"; bq: "bi.bq"; br: "bi.br"; bs: "bi.bs"; bt: "bi.bt"; bu: "bi.bu"; bv: "bi.bv"; bw: "bi.bw"; bx: "bi.bx"; by: "bi.by"; bz: "bi.bz"; ca: "bi.ca"; cb: "bi.cb"; cc: "bi.cc"; cd: "bi.cd"; ce: "bi.ce"; cf: "bi.cf"; cg: "bi.cg"; ch: "bi.ch"; ci: "bi.ci"; cj: "bi.cj"; ck: "bi.ck"; cl: "bi.cl"; cm: "bi.cm"; cn: "bi.cn"; co: "bi.co"; cp: "bi.cp"; cq: "bi.cq"; cr: "bi.cr"; cs: "bi.cs"; ct: "bi.ct"; cu: "bi.cu"; cv: "bi.cv"; cw: "bi.cw"; cx: "bi.cx"; cy: "bi.cy"; cz: "bi.cz"; da: "bi.da"; db: "bi.db"; dc: "bi.dc"; dd: "bi.dd"; de: "bi.de"; df: "bi.df"; dg: "bi.dg"; dh: "bi.dh"; di: "bi.di"; dj: "bi.dj"; dk: "bi.dk"; dl: "bi.dl"; dm: "bi.dm"; dn: "bi.dn"; do: "bi.do"; dp: "bi.dp"; dq: "bi.dq"; dr: "bi.dr"; ds: "bi.ds"; dt: "bi.dt"; du: "bi.du"; dv: "bi.dv"; dw: "bi.dw"; dx: "bi.dx"; dy: "bi.dy"; dz: "bi.dz"; ea: "bi.ea"; eb: "bi.eb"; ec: "bi.ec"; ed: "bi.ed"; ee: "bi.ee"; ef: "bi.ef"; eg: "bi.eg"; eh: "bi.eh"; ei: "bi.ei"; ej: "bi.ej"; ek: "bi.ek"; el: "bi.el"; em: "bi.em"; en: "bi.en"; eo: "bi.eo"; ep: "bi.ep"; eq: "bi.eq"; er: "bi.er"; es: "bi.es"; et: "bi.et"; eu: "bi.eu"; ev: "bi.ev"; ew: "bi.ew"; ex: "bi.ex"; ey: "bi.ey"; ez: "bi.ez"; fa: "bi.fa"; fb: "bi.fb"; fc: "bi.fc"; fd: "bi.fd"; fe: "bi.fe"; ff: "bi.ff"; fg: "bi.fg"; fh: "bi.fh"; fi: "bi.fi"; fj: "bi.fj"; fk: "bi.fk"; fl: "bi.fl"; fm: "bi.fm"; fn: "bi.fn"; fo: "bi.fo"; fp: "bi.fp"; fq: "bi.fq"; fr: "bi.fr"; fs: "bi.fs"; ft: "bi.ft"; fu: "bi.fu"; fv: "bi.fv"; fw: "bi.fw"; fx: "bi.fx"; fy: "bi.fy"; fz: "bi.fz"; ga: "bi.ga"; gb: "bi.gb"; gc: "bi.gc"; gd: "bi.gd"; ge: "bi.ge"; gf: "bi.gf"; gg: "bi.gg"; gh: "bi.gh"; gi: "bi.gi"; gj: "bi.gj"; gk: "bi.gk"; gl: "bi.gl"; gm: "bi.gm"; gn: "bi.gn"; go: "bi.go"; gp: "bi.gp"; gq: "bi.gq"; gr: "bi.gr"; gs: "bi.gs"; gt: "bi.gt"; gu: "bi.gu"; gv: "bi.gv"; gw: "bi.gw"; gx: "bi.gx"; gy: "bi.gy"; gz: "bi.gz"; ha: "bi.ha"; hb: "bi.hb"; hc: "bi.hc"; hd: "bi.hd"; he: "bi.he"; hf: "bi.hf"; hg: "bi.hg"; hh: "bi.hh"; hi: "bi.hi"; hj: "bi.hj"; hk: "bi.hk"; hl: "bi.hl"; hm: "bi.hm"; hn: "bi.hn"; ho: "bi.ho"; hp: "bi.hp"; hq: "bi.hq"; hr: "bi.hr"; hs: "bi.hs"; ht: "bi.ht"; hu: "bi.hu"; hv: "bi.hv"; hw: "bi.hw"; hx: "bi.hx"; hy: "bi.hy"; hz: "bi.hz"; ia: "bi.ia"; ib: "bi.ib"; ic: "bi.ic"; id: "bi.id"; ie: "bi.ie"; if: "bi.if"; ig: "bi.ig"; ih: "bi.ih"; ii: "bi.ii"; ij: "bi.ij"; ik: "bi.ik"; il: "bi.il"; im: "bi.im"; in: "bi.in"; io: "bi.io"; ip: "bi.ip"; iq: "bi.iq"; ir: "bi.ir"; is: "bi.is"; it: "bi.it"; iu: "bi.iu"; iv: "bi.iv"; iw: "bi.iw"; ix: "bi.ix"; iy: "bi.iy"; iz: "bi.iz"; ja: "bi.ja"; jb: "bi.jb"; jc: "bi.jc"; jd: "bi.jd"; je: "bi.je"; jf: "bi.jf"; jg: "bi.jg"; jh: "bi.jh"; ji: "bi.ji"; jj: "bi.jj"; jk: "bi.jk"; jl: "bi.jl"; jm: "bi.jm"; jn: "bi.jn"; jo: "bi.jo"; jp: "bi.jp"; jq: "bi.jq"; jr: "bi.jr"; js: "bi.js"; jt: "bi.jt"; ju: "bi.ju"; jv: "bi.jv"; jw: "bi.jw"; jx: "bi.jx"; jy: "bi.jy"; jz: "bi.jz"; ka: "bi.ka"; kb: "bi.kb"; kc: "bi.kc"; kd: "bi.kd"; ke: "bi.ke"; kf: "bi.kf"; kg: "bi.kg"; kh: "bi.kh"; ki: "bi.ki"; kj: "bi.kj"; kk: "bi.kk"; kl: "bi.kl"; km: "bi.km"; kn: "bi.kn"; ko: "bi.ko"; kp: "bi.kp"; kq: "bi.kq"; kr: "bi.kr"; ks: "bi.ks"; kt: "bi.kt"; ku: "bi.ku"; kv: "bi.kv"; kw: "bi.kw"; kx: "bi.kx"; ky: "bi.ky"; kz: "bi.kz"; la: "bi.la"; lb: "bi.lb"; lc: "bi.lc"; ld: "bi.ld"; le: "bi.le"; lf: "bi.lf"; lg: "bi.lg"; lh: "bi.lh"; li: "bi.li"; lj: "bi.lj"; lk: "bi.lk"; ll: "bi.ll"; lm: "bi.lm"; ln: "bi.ln"; lo: "bi.lo"; lp: "bi.lp"; lq: "bi.lq"; lr: "bi.lr"; ls: "bi.ls"; lt: "bi.lt"; lu: "bi.lu"; lv: "bi.lv"; lw: "bi.lw"; lx: "bi.lx"; ly: "bi.ly"; lz: "bi.lz"; ma: "bi.ma"; mb: "bi.mb"; mc: "bi.mc"; md: "bi.md"; me: "bi.me"; mf: "bi.mf"; mg: "bi.mg"; mh: "bi.mh"; mi: "bi.mi"; mj: "bi.mj"; mk: "bi.mk"; ml: "bi.ml"; mm: "bi.mm"; mn: "bi.mn"; mo: "bi.mo"; mp: "bi.mp"; mq: "bi.mq"; mr: "bi.mr"; ms: "bi.ms"; mt: "bi.mt"; mu: "bi.mu"; mv: "bi.mv"; mw: "bi.mw"; mx: "bi.mx"; my: "bi.my"; mz: "bi.mz"; na: "bi.na"; nb: "bi.nb"; nc: "bi.nc"; nd: "bi.nd"; ne: "bi.ne"; nf: "bi.nf"; ng: "bi.ng"; nh: "bi.nh"; ni: "bi.ni"; nj: "bi.nj"; nk: "bi.nk"; nl: "bi.nl"; nm: "bi.nm"; nn: "bi.nn"; no: "bi.no"; np: "bi.np"; nq: "bi.nq"; nr: "bi.nr"; ns: "bi.ns"; nt: "bi.nt"; nu: "bi.nu"; nv: "bi.nv"; nw: "bi.nw"; nx: "bi.nx"; ny: "bi.ny"; nz: "bi.nz"; oa: "bi.oa"; ob: "bi.ob"; oc: "bi.oc"; od: "bi.od"; oe: "bi.oe"; of: "bi.of"; og: "bi.og"; oh: "bi.oh"; oi: "bi.oi"; oj: "bi.oj"; ok: "bi.ok"; ol: "bi.ol"; om: "bi.om"; on: "bi.on"; oo: "bi.oo"; op: "bi.op"; oq: "bi.oq"; or: "bi.or"; os: "bi.os"; ot: "bi.ot"; ou: "bi.ou"; ov: "bi.ov"; ow: "bi.ow"; ox: "bi.ox"; oy: "bi.oy"; oz: "bi.oz"; pa: "bi.pa"; pb: "bi.pb"; pc: "bi.pc"; pd: "bi.pd"; pe: "bi.pe"; pf: "bi.pf"; pg: "bi.pg"; ph: "bi.ph"; pi: "bi.pi"; pj: "bi.pj"; pk: "bi.pk"; pl: "bi.pl"; pm: "bi.pm"; pn: "bi.pn"; po: "bi.po"; pp: "bi.pp"; pq: "bi.pq"; pr: "bi.pr"; ps: "bi.ps"; pt: "bi.pt"; pu: "bi.pu"; pv: "bi.pv"; pw: "bi.pw"; px: "bi.px"; py: "bi.py"; pz: "bi.pz"; qa: "bi.qa"; qb: "bi.qb"; qc: "bi.qc"; qd: "bi.qd"; qe: "bi.qe"; qf: "bi.qf"; qg: "bi.qg"; qh: "bi.qh"; qi: "bi.qi"; qj: "bi.qj"; qk: "bi.qk"; ql: "bi.ql"; qm: "bi.qm"; qn: "bi.qn"; qo: "bi.qo"; qp: "bi.qp"; qq: "bi.qq"; qr: "bi.qr"; qs: "bi.qs"; qt: "bi.qt"; qu: "bi.qu"; qv: "bi.qv"; qw: "bi.qw"; qx: "bi.qx"; qy: "bi.qy"; qz: "bi.qz"; ra: "bi.ra"; rb: "bi.rb"; rc: "bi.rc"; rd: "bi.rd"; re: "bi.re"; rf: "bi.rf"; rg: "bi.rg"; rh: "bi.rh"; ri: "bi.ri"; rj: "bi.rj"; rk: "bi.rk"; rl: "bi.rl"; rm: "bi.rm"; rn: "bi.rn"; ro: "bi.ro"; rp: "bi.rp"; rq: "bi.rq"; rr: "bi.rr"; rs: "bi.rs"; rt: "bi.rt"; ru: "bi.ru"; rv: "bi.rv"; rw: "bi.rw"; rx: "bi.rx"; ry: "bi.ry"; rz: "bi.rz"; sa: "bi.sa"; sb: "bi.sb"; sc: "bi.sc"; sd: "bi.sd"; se: "bi.se"; sf: "bi.sf"; sg: "bi.sg"; sh: "bi.sh"; si: "bi.si"; sj: "bi.sj"; sk: "bi.sk"; sl: "bi.sl"; sm: "bi.sm"; sn: "bi.sn"; so: "bi.so"; sp: "bi.sp"; sq: "bi.sq"; sr: "bi.sr"; ss: "bi.ss"; st: "bi.st"; su: "bi.su"; sv: "bi.sv"; sw: "bi.sw"; sx: "bi.sx"; sy: "bi.sy"; sz: "bi.sz"; ta: "bi.ta"; tb: "bi.tb"; tc: "bi.tc"; td: "bi.td"; te: "bi.te"; tf: "bi.tf"; tg: "bi.tg"; th: "bi.th"; ti: "bi.ti"; tj: "bi.tj"; tk: "bi.tk"; tl: "bi.tl"; tm: "bi.tm"; tn: "bi.tn"; to: "bi.to"; tp: "bi.tp"; tq: "bi.tq"; tr: "bi.tr"; ts: "bi.ts"; tt: "bi.tt"; tu: "bi.tu"; tv: "bi.tv"; tw: "bi.tw"; tx: "bi.tx"; ty: "bi.ty"; tz: "bi.tz"; ua: "bi.ua"; ub: "bi.ub"; uc: "bi.uc"; ud: "bi.ud"; ue: "bi.ue"; uf: "bi.uf"; ug: "bi.ug"; uh: "bi.uh"; ui: "bi.ui"; uj: "bi.uj"; uk: "bi.uk"; ul: "bi.ul"; um: "bi.um"; un: "bi.un"; uo: "bi.uo"; up: "bi.up"; uq: "bi.uq"; ur: "bi.ur"; us: "bi.us"; ut: "bi.ut"; uu: "bi.uu"; uv: "bi.uv"; uw: "bi.uw"; ux: "bi.ux"; uy: "bi.uy"; uz: "bi.uz"; va: "bi.va"; vb: "bi.vb"; vc: "bi.vc"; vd: "bi.vd"; ve: "bi.ve"; vf: "bi.vf"; vg: "bi.vg"; vh: "bi.vh"; vi: "bi.vi"; vj: "bi.vj"; vk: "bi.vk"; vl: "bi.vl"; vm: "bi.vm"; vn: "bi.vn"; vo: "bi.vo"; vp: "bi.vp"; vq: "bi.vq"; vr: "bi.vr"; vs: "bi.vs"; vt: "bi.vt"; vu: "bi.vu"; vv: "bi.vv"; vw: "bi.vw"; vx: "bi.vx"; vy: "bi.vy"; vz: "bi.vz"; wa: "bi.wa"; wb: "bi.wb"; wc: "bi.wc"; wd: "bi.wd"; we: "bi.we"; wf: "bi.wf"; wg: "bi.wg"; wh: "bi.wh"; wi: "bi.wi"; wj: "bi.wj"; wk: "bi.wk"; wl: "bi.wl"; wm: "bi.wm"; wn: "bi.wn"; wo: "bi.wo"; wp: "bi.wp"; wq: "bi.wq"; wr: "bi.wr"; ws: "bi.ws"; wt: "bi.wt"; wu: "bi.wu"; wv: "bi.wv"; ww: "bi.ww"; wx: "bi.wx"; wy: "bi.wy"; wz: "bi.wz"; xa: "bi.xa"; xb: "bi.xb"; xc: "bi.xc"; xd: "bi.xd"; xe: "bi.xe"; xf: "bi.xf"; xg: "bi.xg"; xh: "bi.xh"; xi: "bi.xi"; xj: "bi.xj"; xk: "bi.xk"; xl: "bi.xl"; xm: "bi.xm"; xn: "bi.xn"; xo: "bi.xo"; xp: "bi.xp"; xq: "bi.xq"; xr: "bi.xr"; xs: "bi.xs"; xt: "bi.xt"; xu: "bi.xu"; xv: "bi.xv"; xw: "bi.xw"; xx: "bi.xx"; xy: "bi.xy"; xz: "bi.xz"; ya: "bi.ya"; yb: "bi.yb"; yc: "bi.yc"; yd: "bi.yd"; ye: "bi.ye"; yf: "bi.yf"; yg: "bi.yg"; yh: "bi.yh"; yi: "bi.yi"; yj: "bi.yj"; yk: "bi.yk"; yl: "bi.yl"; ym: "bi.ym"; yn: "bi.yn"; yo: "bi.yo"; yp: "bi.yp"; yq: "bi.yq"; yr: "bi.yr"; ys: "bi.ys"; yt: "bi.yt"; yu: "bi.yu"; yv: "bi.yv"; yw: "bi.yw"; yx: "bi.yx"; yy: "bi.yy"; yz: "bi.yz"; za: "bi.za"; zb: "bi.zb"; zc: "bi.zc"; zd: "bi.zd"; ze: "bi.ze"; zf: "bi.zf"; zg: "bi.zg"; zh: "bi.zh"; zi: "bi.zi"; zj: "bi.zj"; zk: "bi.zk"; zl: "bi.zl"; zm: "bi.zm"; zn: "bi.zn"; zo: "bi.zo"; zp: "bi.zp"; zq: "bi.zq"; zr: "bi.zr"; zs: "bi.zs"; zt: "bi.zt"; zu: "bi.zu"; zv: "bi.zv"; zw: "bi.zw"; zx: "bi.zx"; zy: "bi.zy"; zz: "bi.zz"; }; bj: { aa: "bj.aa"; ab: "bj.ab"; ac: "bj.ac"; ad: "bj.ad"; ae: "bj.ae"; af: "bj.af"; ag: "bj.ag"; ah: "bj.ah"; ai: "bj.ai"; aj: "bj.aj"; ak: "bj.ak"; al: "bj.al"; am: "bj.am"; an: "bj.an"; ao: "bj.ao"; ap: "bj.ap"; aq: "bj.aq"; ar: "bj.ar"; as: "bj.as"; at: "bj.at"; au: "bj.au"; av: "bj.av"; aw: "bj.aw"; ax: "bj.ax"; ay: "bj.ay"; az: "bj.az"; ba: "bj.ba"; bb: "bj.bb"; bc: "bj.bc"; bd: "bj.bd"; be: "bj.be"; bf: "bj.bf"; bg: "bj.bg"; bh: "bj.bh"; bi: "bj.bi"; bj: "bj.bj"; bk: "bj.bk"; bl: "bj.bl"; bm: "bj.bm"; bn: "bj.bn"; bo: "bj.bo"; bp: "bj.bp"; bq: "bj.bq"; br: "bj.br"; bs: "bj.bs"; bt: "bj.bt"; bu: "bj.bu"; bv: "bj.bv"; bw: "bj.bw"; bx: "bj.bx"; by: "bj.by"; bz: "bj.bz"; ca: "bj.ca"; cb: "bj.cb"; cc: "bj.cc"; cd: "bj.cd"; ce: "bj.ce"; cf: "bj.cf"; cg: "bj.cg"; ch: "bj.ch"; ci: "bj.ci"; cj: "bj.cj"; ck: "bj.ck"; cl: "bj.cl"; cm: "bj.cm"; cn: "bj.cn"; co: "bj.co"; cp: "bj.cp"; cq: "bj.cq"; cr: "bj.cr"; cs: "bj.cs"; ct: "bj.ct"; cu: "bj.cu"; cv: "bj.cv"; cw: "bj.cw"; cx: "bj.cx"; cy: "bj.cy"; cz: "bj.cz"; da: "bj.da"; db: "bj.db"; dc: "bj.dc"; dd: "bj.dd"; de: "bj.de"; df: "bj.df"; dg: "bj.dg"; dh: "bj.dh"; di: "bj.di"; dj: "bj.dj"; dk: "bj.dk"; dl: "bj.dl"; dm: "bj.dm"; dn: "bj.dn"; do: "bj.do"; dp: "bj.dp"; dq: "bj.dq"; dr: "bj.dr"; ds: "bj.ds"; dt: "bj.dt"; du: "bj.du"; dv: "bj.dv"; dw: "bj.dw"; dx: "bj.dx"; dy: "bj.dy"; dz: "bj.dz"; ea: "bj.ea"; eb: "bj.eb"; ec: "bj.ec"; ed: "bj.ed"; ee: "bj.ee"; ef: "bj.ef"; eg: "bj.eg"; eh: "bj.eh"; ei: "bj.ei"; ej: "bj.ej"; ek: "bj.ek"; el: "bj.el"; em: "bj.em"; en: "bj.en"; eo: "bj.eo"; ep: "bj.ep"; eq: "bj.eq"; er: "bj.er"; es: "bj.es"; et: "bj.et"; eu: "bj.eu"; ev: "bj.ev"; ew: "bj.ew"; ex: "bj.ex"; ey: "bj.ey"; ez: "bj.ez"; fa: "bj.fa"; fb: "bj.fb"; fc: "bj.fc"; fd: "bj.fd"; fe: "bj.fe"; ff: "bj.ff"; fg: "bj.fg"; fh: "bj.fh"; fi: "bj.fi"; fj: "bj.fj"; fk: "bj.fk"; fl: "bj.fl"; fm: "bj.fm"; fn: "bj.fn"; fo: "bj.fo"; fp: "bj.fp"; fq: "bj.fq"; fr: "bj.fr"; fs: "bj.fs"; ft: "bj.ft"; fu: "bj.fu"; fv: "bj.fv"; fw: "bj.fw"; fx: "bj.fx"; fy: "bj.fy"; fz: "bj.fz"; ga: "bj.ga"; gb: "bj.gb"; gc: "bj.gc"; gd: "bj.gd"; ge: "bj.ge"; gf: "bj.gf"; gg: "bj.gg"; gh: "bj.gh"; gi: "bj.gi"; gj: "bj.gj"; gk: "bj.gk"; gl: "bj.gl"; gm: "bj.gm"; gn: "bj.gn"; go: "bj.go"; gp: "bj.gp"; gq: "bj.gq"; gr: "bj.gr"; gs: "bj.gs"; gt: "bj.gt"; gu: "bj.gu"; gv: "bj.gv"; gw: "bj.gw"; gx: "bj.gx"; gy: "bj.gy"; gz: "bj.gz"; ha: "bj.ha"; hb: "bj.hb"; hc: "bj.hc"; hd: "bj.hd"; he: "bj.he"; hf: "bj.hf"; hg: "bj.hg"; hh: "bj.hh"; hi: "bj.hi"; hj: "bj.hj"; hk: "bj.hk"; hl: "bj.hl"; hm: "bj.hm"; hn: "bj.hn"; ho: "bj.ho"; hp: "bj.hp"; hq: "bj.hq"; hr: "bj.hr"; hs: "bj.hs"; ht: "bj.ht"; hu: "bj.hu"; hv: "bj.hv"; hw: "bj.hw"; hx: "bj.hx"; hy: "bj.hy"; hz: "bj.hz"; ia: "bj.ia"; ib: "bj.ib"; ic: "bj.ic"; id: "bj.id"; ie: "bj.ie"; if: "bj.if"; ig: "bj.ig"; ih: "bj.ih"; ii: "bj.ii"; ij: "bj.ij"; ik: "bj.ik"; il: "bj.il"; im: "bj.im"; in: "bj.in"; io: "bj.io"; ip: "bj.ip"; iq: "bj.iq"; ir: "bj.ir"; is: "bj.is"; it: "bj.it"; iu: "bj.iu"; iv: "bj.iv"; iw: "bj.iw"; ix: "bj.ix"; iy: "bj.iy"; iz: "bj.iz"; ja: "bj.ja"; jb: "bj.jb"; jc: "bj.jc"; jd: "bj.jd"; je: "bj.je"; jf: "bj.jf"; jg: "bj.jg"; jh: "bj.jh"; ji: "bj.ji"; jj: "bj.jj"; jk: "bj.jk"; jl: "bj.jl"; jm: "bj.jm"; jn: "bj.jn"; jo: "bj.jo"; jp: "bj.jp"; jq: "bj.jq"; jr: "bj.jr"; js: "bj.js"; jt: "bj.jt"; ju: "bj.ju"; jv: "bj.jv"; jw: "bj.jw"; jx: "bj.jx"; jy: "bj.jy"; jz: "bj.jz"; ka: "bj.ka"; kb: "bj.kb"; kc: "bj.kc"; kd: "bj.kd"; ke: "bj.ke"; kf: "bj.kf"; kg: "bj.kg"; kh: "bj.kh"; ki: "bj.ki"; kj: "bj.kj"; kk: "bj.kk"; kl: "bj.kl"; km: "bj.km"; kn: "bj.kn"; ko: "bj.ko"; kp: "bj.kp"; kq: "bj.kq"; kr: "bj.kr"; ks: "bj.ks"; kt: "bj.kt"; ku: "bj.ku"; kv: "bj.kv"; kw: "bj.kw"; kx: "bj.kx"; ky: "bj.ky"; kz: "bj.kz"; la: "bj.la"; lb: "bj.lb"; lc: "bj.lc"; ld: "bj.ld"; le: "bj.le"; lf: "bj.lf"; lg: "bj.lg"; lh: "bj.lh"; li: "bj.li"; lj: "bj.lj"; lk: "bj.lk"; ll: "bj.ll"; lm: "bj.lm"; ln: "bj.ln"; lo: "bj.lo"; lp: "bj.lp"; lq: "bj.lq"; lr: "bj.lr"; ls: "bj.ls"; lt: "bj.lt"; lu: "bj.lu"; lv: "bj.lv"; lw: "bj.lw"; lx: "bj.lx"; ly: "bj.ly"; lz: "bj.lz"; ma: "bj.ma"; mb: "bj.mb"; mc: "bj.mc"; md: "bj.md"; me: "bj.me"; mf: "bj.mf"; mg: "bj.mg"; mh: "bj.mh"; mi: "bj.mi"; mj: "bj.mj"; mk: "bj.mk"; ml: "bj.ml"; mm: "bj.mm"; mn: "bj.mn"; mo: "bj.mo"; mp: "bj.mp"; mq: "bj.mq"; mr: "bj.mr"; ms: "bj.ms"; mt: "bj.mt"; mu: "bj.mu"; mv: "bj.mv"; mw: "bj.mw"; mx: "bj.mx"; my: "bj.my"; mz: "bj.mz"; na: "bj.na"; nb: "bj.nb"; nc: "bj.nc"; nd: "bj.nd"; ne: "bj.ne"; nf: "bj.nf"; ng: "bj.ng"; nh: "bj.nh"; ni: "bj.ni"; nj: "bj.nj"; nk: "bj.nk"; nl: "bj.nl"; nm: "bj.nm"; nn: "bj.nn"; no: "bj.no"; np: "bj.np"; nq: "bj.nq"; nr: "bj.nr"; ns: "bj.ns"; nt: "bj.nt"; nu: "bj.nu"; nv: "bj.nv"; nw: "bj.nw"; nx: "bj.nx"; ny: "bj.ny"; nz: "bj.nz"; oa: "bj.oa"; ob: "bj.ob"; oc: "bj.oc"; od: "bj.od"; oe: "bj.oe"; of: "bj.of"; og: "bj.og"; oh: "bj.oh"; oi: "bj.oi"; oj: "bj.oj"; ok: "bj.ok"; ol: "bj.ol"; om: "bj.om"; on: "bj.on"; oo: "bj.oo"; op: "bj.op"; oq: "bj.oq"; or: "bj.or"; os: "bj.os"; ot: "bj.ot"; ou: "bj.ou"; ov: "bj.ov"; ow: "bj.ow"; ox: "bj.ox"; oy: "bj.oy"; oz: "bj.oz"; pa: "bj.pa"; pb: "bj.pb"; pc: "bj.pc"; pd: "bj.pd"; pe: "bj.pe"; pf: "bj.pf"; pg: "bj.pg"; ph: "bj.ph"; pi: "bj.pi"; pj: "bj.pj"; pk: "bj.pk"; pl: "bj.pl"; pm: "bj.pm"; pn: "bj.pn"; po: "bj.po"; pp: "bj.pp"; pq: "bj.pq"; pr: "bj.pr"; ps: "bj.ps"; pt: "bj.pt"; pu: "bj.pu"; pv: "bj.pv"; pw: "bj.pw"; px: "bj.px"; py: "bj.py"; pz: "bj.pz"; qa: "bj.qa"; qb: "bj.qb"; qc: "bj.qc"; qd: "bj.qd"; qe: "bj.qe"; qf: "bj.qf"; qg: "bj.qg"; qh: "bj.qh"; qi: "bj.qi"; qj: "bj.qj"; qk: "bj.qk"; ql: "bj.ql"; qm: "bj.qm"; qn: "bj.qn"; qo: "bj.qo"; qp: "bj.qp"; qq: "bj.qq"; qr: "bj.qr"; qs: "bj.qs"; qt: "bj.qt"; qu: "bj.qu"; qv: "bj.qv"; qw: "bj.qw"; qx: "bj.qx"; qy: "bj.qy"; qz: "bj.qz"; ra: "bj.ra"; rb: "bj.rb"; rc: "bj.rc"; rd: "bj.rd"; re: "bj.re"; rf: "bj.rf"; rg: "bj.rg"; rh: "bj.rh"; ri: "bj.ri"; rj: "bj.rj"; rk: "bj.rk"; rl: "bj.rl"; rm: "bj.rm"; rn: "bj.rn"; ro: "bj.ro"; rp: "bj.rp"; rq: "bj.rq"; rr: "bj.rr"; rs: "bj.rs"; rt: "bj.rt"; ru: "bj.ru"; rv: "bj.rv"; rw: "bj.rw"; rx: "bj.rx"; ry: "bj.ry"; rz: "bj.rz"; sa: "bj.sa"; sb: "bj.sb"; sc: "bj.sc"; sd: "bj.sd"; se: "bj.se"; sf: "bj.sf"; sg: "bj.sg"; sh: "bj.sh"; si: "bj.si"; sj: "bj.sj"; sk: "bj.sk"; sl: "bj.sl"; sm: "bj.sm"; sn: "bj.sn"; so: "bj.so"; sp: "bj.sp"; sq: "bj.sq"; sr: "bj.sr"; ss: "bj.ss"; st: "bj.st"; su: "bj.su"; sv: "bj.sv"; sw: "bj.sw"; sx: "bj.sx"; sy: "bj.sy"; sz: "bj.sz"; ta: "bj.ta"; tb: "bj.tb"; tc: "bj.tc"; td: "bj.td"; te: "bj.te"; tf: "bj.tf"; tg: "bj.tg"; th: "bj.th"; ti: "bj.ti"; tj: "bj.tj"; tk: "bj.tk"; tl: "bj.tl"; tm: "bj.tm"; tn: "bj.tn"; to: "bj.to"; tp: "bj.tp"; tq: "bj.tq"; tr: "bj.tr"; ts: "bj.ts"; tt: "bj.tt"; tu: "bj.tu"; tv: "bj.tv"; tw: "bj.tw"; tx: "bj.tx"; ty: "bj.ty"; tz: "bj.tz"; ua: "bj.ua"; ub: "bj.ub"; uc: "bj.uc"; ud: "bj.ud"; ue: "bj.ue"; uf: "bj.uf"; ug: "bj.ug"; uh: "bj.uh"; ui: "bj.ui"; uj: "bj.uj"; uk: "bj.uk"; ul: "bj.ul"; um: "bj.um"; un: "bj.un"; uo: "bj.uo"; up: "bj.up"; uq: "bj.uq"; ur: "bj.ur"; us: "bj.us"; ut: "bj.ut"; uu: "bj.uu"; uv: "bj.uv"; uw: "bj.uw"; ux: "bj.ux"; uy: "bj.uy"; uz: "bj.uz"; va: "bj.va"; vb: "bj.vb"; vc: "bj.vc"; vd: "bj.vd"; ve: "bj.ve"; vf: "bj.vf"; vg: "bj.vg"; vh: "bj.vh"; vi: "bj.vi"; vj: "bj.vj"; vk: "bj.vk"; vl: "bj.vl"; vm: "bj.vm"; vn: "bj.vn"; vo: "bj.vo"; vp: "bj.vp"; vq: "bj.vq"; vr: "bj.vr"; vs: "bj.vs"; vt: "bj.vt"; vu: "bj.vu"; vv: "bj.vv"; vw: "bj.vw"; vx: "bj.vx"; vy: "bj.vy"; vz: "bj.vz"; wa: "bj.wa"; wb: "bj.wb"; wc: "bj.wc"; wd: "bj.wd"; we: "bj.we"; wf: "bj.wf"; wg: "bj.wg"; wh: "bj.wh"; wi: "bj.wi"; wj: "bj.wj"; wk: "bj.wk"; wl: "bj.wl"; wm: "bj.wm"; wn: "bj.wn"; wo: "bj.wo"; wp: "bj.wp"; wq: "bj.wq"; wr: "bj.wr"; ws: "bj.ws"; wt: "bj.wt"; wu: "bj.wu"; wv: "bj.wv"; ww: "bj.ww"; wx: "bj.wx"; wy: "bj.wy"; wz: "bj.wz"; xa: "bj.xa"; xb: "bj.xb"; xc: "bj.xc"; xd: "bj.xd"; xe: "bj.xe"; xf: "bj.xf"; xg: "bj.xg"; xh: "bj.xh"; xi: "bj.xi"; xj: "bj.xj"; xk: "bj.xk"; xl: "bj.xl"; xm: "bj.xm"; xn: "bj.xn"; xo: "bj.xo"; xp: "bj.xp"; xq: "bj.xq"; xr: "bj.xr"; xs: "bj.xs"; xt: "bj.xt"; xu: "bj.xu"; xv: "bj.xv"; xw: "bj.xw"; xx: "bj.xx"; xy: "bj.xy"; xz: "bj.xz"; ya: "bj.ya"; yb: "bj.yb"; yc: "bj.yc"; yd: "bj.yd"; ye: "bj.ye"; yf: "bj.yf"; yg: "bj.yg"; yh: "bj.yh"; yi: "bj.yi"; yj: "bj.yj"; yk: "bj.yk"; yl: "bj.yl"; ym: "bj.ym"; yn: "bj.yn"; yo: "bj.yo"; yp: "bj.yp"; yq: "bj.yq"; yr: "bj.yr"; ys: "bj.ys"; yt: "bj.yt"; yu: "bj.yu"; yv: "bj.yv"; yw: "bj.yw"; yx: "bj.yx"; yy: "bj.yy"; yz: "bj.yz"; za: "bj.za"; zb: "bj.zb"; zc: "bj.zc"; zd: "bj.zd"; ze: "bj.ze"; zf: "bj.zf"; zg: "bj.zg"; zh: "bj.zh"; zi: "bj.zi"; zj: "bj.zj"; zk: "bj.zk"; zl: "bj.zl"; zm: "bj.zm"; zn: "bj.zn"; zo: "bj.zo"; zp: "bj.zp"; zq: "bj.zq"; zr: "bj.zr"; zs: "bj.zs"; zt: "bj.zt"; zu: "bj.zu"; zv: "bj.zv"; zw: "bj.zw"; zx: "bj.zx"; zy: "bj.zy"; zz: "bj.zz"; }; bk: { aa: "bk.aa"; ab: "bk.ab"; ac: "bk.ac"; ad: "bk.ad"; ae: "bk.ae"; af: "bk.af"; ag: "bk.ag"; ah: "bk.ah"; ai: "bk.ai"; aj: "bk.aj"; ak: "bk.ak"; al: "bk.al"; am: "bk.am"; an: "bk.an"; ao: "bk.ao"; ap: "bk.ap"; aq: "bk.aq"; ar: "bk.ar"; as: "bk.as"; at: "bk.at"; au: "bk.au"; av: "bk.av"; aw: "bk.aw"; ax: "bk.ax"; ay: "bk.ay"; az: "bk.az"; ba: "bk.ba"; bb: "bk.bb"; bc: "bk.bc"; bd: "bk.bd"; be: "bk.be"; bf: "bk.bf"; bg: "bk.bg"; bh: "bk.bh"; bi: "bk.bi"; bj: "bk.bj"; bk: "bk.bk"; bl: "bk.bl"; bm: "bk.bm"; bn: "bk.bn"; bo: "bk.bo"; bp: "bk.bp"; bq: "bk.bq"; br: "bk.br"; bs: "bk.bs"; bt: "bk.bt"; bu: "bk.bu"; bv: "bk.bv"; bw: "bk.bw"; bx: "bk.bx"; by: "bk.by"; bz: "bk.bz"; ca: "bk.ca"; cb: "bk.cb"; cc: "bk.cc"; cd: "bk.cd"; ce: "bk.ce"; cf: "bk.cf"; cg: "bk.cg"; ch: "bk.ch"; ci: "bk.ci"; cj: "bk.cj"; ck: "bk.ck"; cl: "bk.cl"; cm: "bk.cm"; cn: "bk.cn"; co: "bk.co"; cp: "bk.cp"; cq: "bk.cq"; cr: "bk.cr"; cs: "bk.cs"; ct: "bk.ct"; cu: "bk.cu"; cv: "bk.cv"; cw: "bk.cw"; cx: "bk.cx"; cy: "bk.cy"; cz: "bk.cz"; da: "bk.da"; db: "bk.db"; dc: "bk.dc"; dd: "bk.dd"; de: "bk.de"; df: "bk.df"; dg: "bk.dg"; dh: "bk.dh"; di: "bk.di"; dj: "bk.dj"; dk: "bk.dk"; dl: "bk.dl"; dm: "bk.dm"; dn: "bk.dn"; do: "bk.do"; dp: "bk.dp"; dq: "bk.dq"; dr: "bk.dr"; ds: "bk.ds"; dt: "bk.dt"; du: "bk.du"; dv: "bk.dv"; dw: "bk.dw"; dx: "bk.dx"; dy: "bk.dy"; dz: "bk.dz"; ea: "bk.ea"; eb: "bk.eb"; ec: "bk.ec"; ed: "bk.ed"; ee: "bk.ee"; ef: "bk.ef"; eg: "bk.eg"; eh: "bk.eh"; ei: "bk.ei"; ej: "bk.ej"; ek: "bk.ek"; el: "bk.el"; em: "bk.em"; en: "bk.en"; eo: "bk.eo"; ep: "bk.ep"; eq: "bk.eq"; er: "bk.er"; es: "bk.es"; et: "bk.et"; eu: "bk.eu"; ev: "bk.ev"; ew: "bk.ew"; ex: "bk.ex"; ey: "bk.ey"; ez: "bk.ez"; fa: "bk.fa"; fb: "bk.fb"; fc: "bk.fc"; fd: "bk.fd"; fe: "bk.fe"; ff: "bk.ff"; fg: "bk.fg"; fh: "bk.fh"; fi: "bk.fi"; fj: "bk.fj"; fk: "bk.fk"; fl: "bk.fl"; fm: "bk.fm"; fn: "bk.fn"; fo: "bk.fo"; fp: "bk.fp"; fq: "bk.fq"; fr: "bk.fr"; fs: "bk.fs"; ft: "bk.ft"; fu: "bk.fu"; fv: "bk.fv"; fw: "bk.fw"; fx: "bk.fx"; fy: "bk.fy"; fz: "bk.fz"; ga: "bk.ga"; gb: "bk.gb"; gc: "bk.gc"; gd: "bk.gd"; ge: "bk.ge"; gf: "bk.gf"; gg: "bk.gg"; gh: "bk.gh"; gi: "bk.gi"; gj: "bk.gj"; gk: "bk.gk"; gl: "bk.gl"; gm: "bk.gm"; gn: "bk.gn"; go: "bk.go"; gp: "bk.gp"; gq: "bk.gq"; gr: "bk.gr"; gs: "bk.gs"; gt: "bk.gt"; gu: "bk.gu"; gv: "bk.gv"; gw: "bk.gw"; gx: "bk.gx"; gy: "bk.gy"; gz: "bk.gz"; ha: "bk.ha"; hb: "bk.hb"; hc: "bk.hc"; hd: "bk.hd"; he: "bk.he"; hf: "bk.hf"; hg: "bk.hg"; hh: "bk.hh"; hi: "bk.hi"; hj: "bk.hj"; hk: "bk.hk"; hl: "bk.hl"; hm: "bk.hm"; hn: "bk.hn"; ho: "bk.ho"; hp: "bk.hp"; hq: "bk.hq"; hr: "bk.hr"; hs: "bk.hs"; ht: "bk.ht"; hu: "bk.hu"; hv: "bk.hv"; hw: "bk.hw"; hx: "bk.hx"; hy: "bk.hy"; hz: "bk.hz"; ia: "bk.ia"; ib: "bk.ib"; ic: "bk.ic"; id: "bk.id"; ie: "bk.ie"; if: "bk.if"; ig: "bk.ig"; ih: "bk.ih"; ii: "bk.ii"; ij: "bk.ij"; ik: "bk.ik"; il: "bk.il"; im: "bk.im"; in: "bk.in"; io: "bk.io"; ip: "bk.ip"; iq: "bk.iq"; ir: "bk.ir"; is: "bk.is"; it: "bk.it"; iu: "bk.iu"; iv: "bk.iv"; iw: "bk.iw"; ix: "bk.ix"; iy: "bk.iy"; iz: "bk.iz"; ja: "bk.ja"; jb: "bk.jb"; jc: "bk.jc"; jd: "bk.jd"; je: "bk.je"; jf: "bk.jf"; jg: "bk.jg"; jh: "bk.jh"; ji: "bk.ji"; jj: "bk.jj"; jk: "bk.jk"; jl: "bk.jl"; jm: "bk.jm"; jn: "bk.jn"; jo: "bk.jo"; jp: "bk.jp"; jq: "bk.jq"; jr: "bk.jr"; js: "bk.js"; jt: "bk.jt"; ju: "bk.ju"; jv: "bk.jv"; jw: "bk.jw"; jx: "bk.jx"; jy: "bk.jy"; jz: "bk.jz"; ka: "bk.ka"; kb: "bk.kb"; kc: "bk.kc"; kd: "bk.kd"; ke: "bk.ke"; kf: "bk.kf"; kg: "bk.kg"; kh: "bk.kh"; ki: "bk.ki"; kj: "bk.kj"; kk: "bk.kk"; kl: "bk.kl"; km: "bk.km"; kn: "bk.kn"; ko: "bk.ko"; kp: "bk.kp"; kq: "bk.kq"; kr: "bk.kr"; ks: "bk.ks"; kt: "bk.kt"; ku: "bk.ku"; kv: "bk.kv"; kw: "bk.kw"; kx: "bk.kx"; ky: "bk.ky"; kz: "bk.kz"; la: "bk.la"; lb: "bk.lb"; lc: "bk.lc"; ld: "bk.ld"; le: "bk.le"; lf: "bk.lf"; lg: "bk.lg"; lh: "bk.lh"; li: "bk.li"; lj: "bk.lj"; lk: "bk.lk"; ll: "bk.ll"; lm: "bk.lm"; ln: "bk.ln"; lo: "bk.lo"; lp: "bk.lp"; lq: "bk.lq"; lr: "bk.lr"; ls: "bk.ls"; lt: "bk.lt"; lu: "bk.lu"; lv: "bk.lv"; lw: "bk.lw"; lx: "bk.lx"; ly: "bk.ly"; lz: "bk.lz"; ma: "bk.ma"; mb: "bk.mb"; mc: "bk.mc"; md: "bk.md"; me: "bk.me"; mf: "bk.mf"; mg: "bk.mg"; mh: "bk.mh"; mi: "bk.mi"; mj: "bk.mj"; mk: "bk.mk"; ml: "bk.ml"; mm: "bk.mm"; mn: "bk.mn"; mo: "bk.mo"; mp: "bk.mp"; mq: "bk.mq"; mr: "bk.mr"; ms: "bk.ms"; mt: "bk.mt"; mu: "bk.mu"; mv: "bk.mv"; mw: "bk.mw"; mx: "bk.mx"; my: "bk.my"; mz: "bk.mz"; na: "bk.na"; nb: "bk.nb"; nc: "bk.nc"; nd: "bk.nd"; ne: "bk.ne"; nf: "bk.nf"; ng: "bk.ng"; nh: "bk.nh"; ni: "bk.ni"; nj: "bk.nj"; nk: "bk.nk"; nl: "bk.nl"; nm: "bk.nm"; nn: "bk.nn"; no: "bk.no"; np: "bk.np"; nq: "bk.nq"; nr: "bk.nr"; ns: "bk.ns"; nt: "bk.nt"; nu: "bk.nu"; nv: "bk.nv"; nw: "bk.nw"; nx: "bk.nx"; ny: "bk.ny"; nz: "bk.nz"; oa: "bk.oa"; ob: "bk.ob"; oc: "bk.oc"; od: "bk.od"; oe: "bk.oe"; of: "bk.of"; og: "bk.og"; oh: "bk.oh"; oi: "bk.oi"; oj: "bk.oj"; ok: "bk.ok"; ol: "bk.ol"; om: "bk.om"; on: "bk.on"; oo: "bk.oo"; op: "bk.op"; oq: "bk.oq"; or: "bk.or"; os: "bk.os"; ot: "bk.ot"; ou: "bk.ou"; ov: "bk.ov"; ow: "bk.ow"; ox: "bk.ox"; oy: "bk.oy"; oz: "bk.oz"; pa: "bk.pa"; pb: "bk.pb"; pc: "bk.pc"; pd: "bk.pd"; pe: "bk.pe"; pf: "bk.pf"; pg: "bk.pg"; ph: "bk.ph"; pi: "bk.pi"; pj: "bk.pj"; pk: "bk.pk"; pl: "bk.pl"; pm: "bk.pm"; pn: "bk.pn"; po: "bk.po"; pp: "bk.pp"; pq: "bk.pq"; pr: "bk.pr"; ps: "bk.ps"; pt: "bk.pt"; pu: "bk.pu"; pv: "bk.pv"; pw: "bk.pw"; px: "bk.px"; py: "bk.py"; pz: "bk.pz"; qa: "bk.qa"; qb: "bk.qb"; qc: "bk.qc"; qd: "bk.qd"; qe: "bk.qe"; qf: "bk.qf"; qg: "bk.qg"; qh: "bk.qh"; qi: "bk.qi"; qj: "bk.qj"; qk: "bk.qk"; ql: "bk.ql"; qm: "bk.qm"; qn: "bk.qn"; qo: "bk.qo"; qp: "bk.qp"; qq: "bk.qq"; qr: "bk.qr"; qs: "bk.qs"; qt: "bk.qt"; qu: "bk.qu"; qv: "bk.qv"; qw: "bk.qw"; qx: "bk.qx"; qy: "bk.qy"; qz: "bk.qz"; ra: "bk.ra"; rb: "bk.rb"; rc: "bk.rc"; rd: "bk.rd"; re: "bk.re"; rf: "bk.rf"; rg: "bk.rg"; rh: "bk.rh"; ri: "bk.ri"; rj: "bk.rj"; rk: "bk.rk"; rl: "bk.rl"; rm: "bk.rm"; rn: "bk.rn"; ro: "bk.ro"; rp: "bk.rp"; rq: "bk.rq"; rr: "bk.rr"; rs: "bk.rs"; rt: "bk.rt"; ru: "bk.ru"; rv: "bk.rv"; rw: "bk.rw"; rx: "bk.rx"; ry: "bk.ry"; rz: "bk.rz"; sa: "bk.sa"; sb: "bk.sb"; sc: "bk.sc"; sd: "bk.sd"; se: "bk.se"; sf: "bk.sf"; sg: "bk.sg"; sh: "bk.sh"; si: "bk.si"; sj: "bk.sj"; sk: "bk.sk"; sl: "bk.sl"; sm: "bk.sm"; sn: "bk.sn"; so: "bk.so"; sp: "bk.sp"; sq: "bk.sq"; sr: "bk.sr"; ss: "bk.ss"; st: "bk.st"; su: "bk.su"; sv: "bk.sv"; sw: "bk.sw"; sx: "bk.sx"; sy: "bk.sy"; sz: "bk.sz"; ta: "bk.ta"; tb: "bk.tb"; tc: "bk.tc"; td: "bk.td"; te: "bk.te"; tf: "bk.tf"; tg: "bk.tg"; th: "bk.th"; ti: "bk.ti"; tj: "bk.tj"; tk: "bk.tk"; tl: "bk.tl"; tm: "bk.tm"; tn: "bk.tn"; to: "bk.to"; tp: "bk.tp"; tq: "bk.tq"; tr: "bk.tr"; ts: "bk.ts"; tt: "bk.tt"; tu: "bk.tu"; tv: "bk.tv"; tw: "bk.tw"; tx: "bk.tx"; ty: "bk.ty"; tz: "bk.tz"; ua: "bk.ua"; ub: "bk.ub"; uc: "bk.uc"; ud: "bk.ud"; ue: "bk.ue"; uf: "bk.uf"; ug: "bk.ug"; uh: "bk.uh"; ui: "bk.ui"; uj: "bk.uj"; uk: "bk.uk"; ul: "bk.ul"; um: "bk.um"; un: "bk.un"; uo: "bk.uo"; up: "bk.up"; uq: "bk.uq"; ur: "bk.ur"; us: "bk.us"; ut: "bk.ut"; uu: "bk.uu"; uv: "bk.uv"; uw: "bk.uw"; ux: "bk.ux"; uy: "bk.uy"; uz: "bk.uz"; va: "bk.va"; vb: "bk.vb"; vc: "bk.vc"; vd: "bk.vd"; ve: "bk.ve"; vf: "bk.vf"; vg: "bk.vg"; vh: "bk.vh"; vi: "bk.vi"; vj: "bk.vj"; vk: "bk.vk"; vl: "bk.vl"; vm: "bk.vm"; vn: "bk.vn"; vo: "bk.vo"; vp: "bk.vp"; vq: "bk.vq"; vr: "bk.vr"; vs: "bk.vs"; vt: "bk.vt"; vu: "bk.vu"; vv: "bk.vv"; vw: "bk.vw"; vx: "bk.vx"; vy: "bk.vy"; vz: "bk.vz"; wa: "bk.wa"; wb: "bk.wb"; wc: "bk.wc"; wd: "bk.wd"; we: "bk.we"; wf: "bk.wf"; wg: "bk.wg"; wh: "bk.wh"; wi: "bk.wi"; wj: "bk.wj"; wk: "bk.wk"; wl: "bk.wl"; wm: "bk.wm"; wn: "bk.wn"; wo: "bk.wo"; wp: "bk.wp"; wq: "bk.wq"; wr: "bk.wr"; ws: "bk.ws"; wt: "bk.wt"; wu: "bk.wu"; wv: "bk.wv"; ww: "bk.ww"; wx: "bk.wx"; wy: "bk.wy"; wz: "bk.wz"; xa: "bk.xa"; xb: "bk.xb"; xc: "bk.xc"; xd: "bk.xd"; xe: "bk.xe"; xf: "bk.xf"; xg: "bk.xg"; xh: "bk.xh"; xi: "bk.xi"; xj: "bk.xj"; xk: "bk.xk"; xl: "bk.xl"; xm: "bk.xm"; xn: "bk.xn"; xo: "bk.xo"; xp: "bk.xp"; xq: "bk.xq"; xr: "bk.xr"; xs: "bk.xs"; xt: "bk.xt"; xu: "bk.xu"; xv: "bk.xv"; xw: "bk.xw"; xx: "bk.xx"; xy: "bk.xy"; xz: "bk.xz"; ya: "bk.ya"; yb: "bk.yb"; yc: "bk.yc"; yd: "bk.yd"; ye: "bk.ye"; yf: "bk.yf"; yg: "bk.yg"; yh: "bk.yh"; yi: "bk.yi"; yj: "bk.yj"; yk: "bk.yk"; yl: "bk.yl"; ym: "bk.ym"; yn: "bk.yn"; yo: "bk.yo"; yp: "bk.yp"; yq: "bk.yq"; yr: "bk.yr"; ys: "bk.ys"; yt: "bk.yt"; yu: "bk.yu"; yv: "bk.yv"; yw: "bk.yw"; yx: "bk.yx"; yy: "bk.yy"; yz: "bk.yz"; za: "bk.za"; zb: "bk.zb"; zc: "bk.zc"; zd: "bk.zd"; ze: "bk.ze"; zf: "bk.zf"; zg: "bk.zg"; zh: "bk.zh"; zi: "bk.zi"; zj: "bk.zj"; zk: "bk.zk"; zl: "bk.zl"; zm: "bk.zm"; zn: "bk.zn"; zo: "bk.zo"; zp: "bk.zp"; zq: "bk.zq"; zr: "bk.zr"; zs: "bk.zs"; zt: "bk.zt"; zu: "bk.zu"; zv: "bk.zv"; zw: "bk.zw"; zx: "bk.zx"; zy: "bk.zy"; zz: "bk.zz"; }; bl: { aa: "bl.aa"; ab: "bl.ab"; ac: "bl.ac"; ad: "bl.ad"; ae: "bl.ae"; af: "bl.af"; ag: "bl.ag"; ah: "bl.ah"; ai: "bl.ai"; aj: "bl.aj"; ak: "bl.ak"; al: "bl.al"; am: "bl.am"; an: "bl.an"; ao: "bl.ao"; ap: "bl.ap"; aq: "bl.aq"; ar: "bl.ar"; as: "bl.as"; at: "bl.at"; au: "bl.au"; av: "bl.av"; aw: "bl.aw"; ax: "bl.ax"; ay: "bl.ay"; az: "bl.az"; ba: "bl.ba"; bb: "bl.bb"; bc: "bl.bc"; bd: "bl.bd"; be: "bl.be"; bf: "bl.bf"; bg: "bl.bg"; bh: "bl.bh"; bi: "bl.bi"; bj: "bl.bj"; bk: "bl.bk"; bl: "bl.bl"; bm: "bl.bm"; bn: "bl.bn"; bo: "bl.bo"; bp: "bl.bp"; bq: "bl.bq"; br: "bl.br"; bs: "bl.bs"; bt: "bl.bt"; bu: "bl.bu"; bv: "bl.bv"; bw: "bl.bw"; bx: "bl.bx"; by: "bl.by"; bz: "bl.bz"; ca: "bl.ca"; cb: "bl.cb"; cc: "bl.cc"; cd: "bl.cd"; ce: "bl.ce"; cf: "bl.cf"; cg: "bl.cg"; ch: "bl.ch"; ci: "bl.ci"; cj: "bl.cj"; ck: "bl.ck"; cl: "bl.cl"; cm: "bl.cm"; cn: "bl.cn"; co: "bl.co"; cp: "bl.cp"; cq: "bl.cq"; cr: "bl.cr"; cs: "bl.cs"; ct: "bl.ct"; cu: "bl.cu"; cv: "bl.cv"; cw: "bl.cw"; cx: "bl.cx"; cy: "bl.cy"; cz: "bl.cz"; da: "bl.da"; db: "bl.db"; dc: "bl.dc"; dd: "bl.dd"; de: "bl.de"; df: "bl.df"; dg: "bl.dg"; dh: "bl.dh"; di: "bl.di"; dj: "bl.dj"; dk: "bl.dk"; dl: "bl.dl"; dm: "bl.dm"; dn: "bl.dn"; do: "bl.do"; dp: "bl.dp"; dq: "bl.dq"; dr: "bl.dr"; ds: "bl.ds"; dt: "bl.dt"; du: "bl.du"; dv: "bl.dv"; dw: "bl.dw"; dx: "bl.dx"; dy: "bl.dy"; dz: "bl.dz"; ea: "bl.ea"; eb: "bl.eb"; ec: "bl.ec"; ed: "bl.ed"; ee: "bl.ee"; ef: "bl.ef"; eg: "bl.eg"; eh: "bl.eh"; ei: "bl.ei"; ej: "bl.ej"; ek: "bl.ek"; el: "bl.el"; em: "bl.em"; en: "bl.en"; eo: "bl.eo"; ep: "bl.ep"; eq: "bl.eq"; er: "bl.er"; es: "bl.es"; et: "bl.et"; eu: "bl.eu"; ev: "bl.ev"; ew: "bl.ew"; ex: "bl.ex"; ey: "bl.ey"; ez: "bl.ez"; fa: "bl.fa"; fb: "bl.fb"; fc: "bl.fc"; fd: "bl.fd"; fe: "bl.fe"; ff: "bl.ff"; fg: "bl.fg"; fh: "bl.fh"; fi: "bl.fi"; fj: "bl.fj"; fk: "bl.fk"; fl: "bl.fl"; fm: "bl.fm"; fn: "bl.fn"; fo: "bl.fo"; fp: "bl.fp"; fq: "bl.fq"; fr: "bl.fr"; fs: "bl.fs"; ft: "bl.ft"; fu: "bl.fu"; fv: "bl.fv"; fw: "bl.fw"; fx: "bl.fx"; fy: "bl.fy"; fz: "bl.fz"; ga: "bl.ga"; gb: "bl.gb"; gc: "bl.gc"; gd: "bl.gd"; ge: "bl.ge"; gf: "bl.gf"; gg: "bl.gg"; gh: "bl.gh"; gi: "bl.gi"; gj: "bl.gj"; gk: "bl.gk"; gl: "bl.gl"; gm: "bl.gm"; gn: "bl.gn"; go: "bl.go"; gp: "bl.gp"; gq: "bl.gq"; gr: "bl.gr"; gs: "bl.gs"; gt: "bl.gt"; gu: "bl.gu"; gv: "bl.gv"; gw: "bl.gw"; gx: "bl.gx"; gy: "bl.gy"; gz: "bl.gz"; ha: "bl.ha"; hb: "bl.hb"; hc: "bl.hc"; hd: "bl.hd"; he: "bl.he"; hf: "bl.hf"; hg: "bl.hg"; hh: "bl.hh"; hi: "bl.hi"; hj: "bl.hj"; hk: "bl.hk"; hl: "bl.hl"; hm: "bl.hm"; hn: "bl.hn"; ho: "bl.ho"; hp: "bl.hp"; hq: "bl.hq"; hr: "bl.hr"; hs: "bl.hs"; ht: "bl.ht"; hu: "bl.hu"; hv: "bl.hv"; hw: "bl.hw"; hx: "bl.hx"; hy: "bl.hy"; hz: "bl.hz"; ia: "bl.ia"; ib: "bl.ib"; ic: "bl.ic"; id: "bl.id"; ie: "bl.ie"; if: "bl.if"; ig: "bl.ig"; ih: "bl.ih"; ii: "bl.ii"; ij: "bl.ij"; ik: "bl.ik"; il: "bl.il"; im: "bl.im"; in: "bl.in"; io: "bl.io"; ip: "bl.ip"; iq: "bl.iq"; ir: "bl.ir"; is: "bl.is"; it: "bl.it"; iu: "bl.iu"; iv: "bl.iv"; iw: "bl.iw"; ix: "bl.ix"; iy: "bl.iy"; iz: "bl.iz"; ja: "bl.ja"; jb: "bl.jb"; jc: "bl.jc"; jd: "bl.jd"; je: "bl.je"; jf: "bl.jf"; jg: "bl.jg"; jh: "bl.jh"; ji: "bl.ji"; jj: "bl.jj"; jk: "bl.jk"; jl: "bl.jl"; jm: "bl.jm"; jn: "bl.jn"; jo: "bl.jo"; jp: "bl.jp"; jq: "bl.jq"; jr: "bl.jr"; js: "bl.js"; jt: "bl.jt"; ju: "bl.ju"; jv: "bl.jv"; jw: "bl.jw"; jx: "bl.jx"; jy: "bl.jy"; jz: "bl.jz"; ka: "bl.ka"; kb: "bl.kb"; kc: "bl.kc"; kd: "bl.kd"; ke: "bl.ke"; kf: "bl.kf"; kg: "bl.kg"; kh: "bl.kh"; ki: "bl.ki"; kj: "bl.kj"; kk: "bl.kk"; kl: "bl.kl"; km: "bl.km"; kn: "bl.kn"; ko: "bl.ko"; kp: "bl.kp"; kq: "bl.kq"; kr: "bl.kr"; ks: "bl.ks"; kt: "bl.kt"; ku: "bl.ku"; kv: "bl.kv"; kw: "bl.kw"; kx: "bl.kx"; ky: "bl.ky"; kz: "bl.kz"; la: "bl.la"; lb: "bl.lb"; lc: "bl.lc"; ld: "bl.ld"; le: "bl.le"; lf: "bl.lf"; lg: "bl.lg"; lh: "bl.lh"; li: "bl.li"; lj: "bl.lj"; lk: "bl.lk"; ll: "bl.ll"; lm: "bl.lm"; ln: "bl.ln"; lo: "bl.lo"; lp: "bl.lp"; lq: "bl.lq"; lr: "bl.lr"; ls: "bl.ls"; lt: "bl.lt"; lu: "bl.lu"; lv: "bl.lv"; lw: "bl.lw"; lx: "bl.lx"; ly: "bl.ly"; lz: "bl.lz"; ma: "bl.ma"; mb: "bl.mb"; mc: "bl.mc"; md: "bl.md"; me: "bl.me"; mf: "bl.mf"; mg: "bl.mg"; mh: "bl.mh"; mi: "bl.mi"; mj: "bl.mj"; mk: "bl.mk"; ml: "bl.ml"; mm: "bl.mm"; mn: "bl.mn"; mo: "bl.mo"; mp: "bl.mp"; mq: "bl.mq"; mr: "bl.mr"; ms: "bl.ms"; mt: "bl.mt"; mu: "bl.mu"; mv: "bl.mv"; mw: "bl.mw"; mx: "bl.mx"; my: "bl.my"; mz: "bl.mz"; na: "bl.na"; nb: "bl.nb"; nc: "bl.nc"; nd: "bl.nd"; ne: "bl.ne"; nf: "bl.nf"; ng: "bl.ng"; nh: "bl.nh"; ni: "bl.ni"; nj: "bl.nj"; nk: "bl.nk"; nl: "bl.nl"; nm: "bl.nm"; nn: "bl.nn"; no: "bl.no"; np: "bl.np"; nq: "bl.nq"; nr: "bl.nr"; ns: "bl.ns"; nt: "bl.nt"; nu: "bl.nu"; nv: "bl.nv"; nw: "bl.nw"; nx: "bl.nx"; ny: "bl.ny"; nz: "bl.nz"; oa: "bl.oa"; ob: "bl.ob"; oc: "bl.oc"; od: "bl.od"; oe: "bl.oe"; of: "bl.of"; og: "bl.og"; oh: "bl.oh"; oi: "bl.oi"; oj: "bl.oj"; ok: "bl.ok"; ol: "bl.ol"; om: "bl.om"; on: "bl.on"; oo: "bl.oo"; op: "bl.op"; oq: "bl.oq"; or: "bl.or"; os: "bl.os"; ot: "bl.ot"; ou: "bl.ou"; ov: "bl.ov"; ow: "bl.ow"; ox: "bl.ox"; oy: "bl.oy"; oz: "bl.oz"; pa: "bl.pa"; pb: "bl.pb"; pc: "bl.pc"; pd: "bl.pd"; pe: "bl.pe"; pf: "bl.pf"; pg: "bl.pg"; ph: "bl.ph"; pi: "bl.pi"; pj: "bl.pj"; pk: "bl.pk"; pl: "bl.pl"; pm: "bl.pm"; pn: "bl.pn"; po: "bl.po"; pp: "bl.pp"; pq: "bl.pq"; pr: "bl.pr"; ps: "bl.ps"; pt: "bl.pt"; pu: "bl.pu"; pv: "bl.pv"; pw: "bl.pw"; px: "bl.px"; py: "bl.py"; pz: "bl.pz"; qa: "bl.qa"; qb: "bl.qb"; qc: "bl.qc"; qd: "bl.qd"; qe: "bl.qe"; qf: "bl.qf"; qg: "bl.qg"; qh: "bl.qh"; qi: "bl.qi"; qj: "bl.qj"; qk: "bl.qk"; ql: "bl.ql"; qm: "bl.qm"; qn: "bl.qn"; qo: "bl.qo"; qp: "bl.qp"; qq: "bl.qq"; qr: "bl.qr"; qs: "bl.qs"; qt: "bl.qt"; qu: "bl.qu"; qv: "bl.qv"; qw: "bl.qw"; qx: "bl.qx"; qy: "bl.qy"; qz: "bl.qz"; ra: "bl.ra"; rb: "bl.rb"; rc: "bl.rc"; rd: "bl.rd"; re: "bl.re"; rf: "bl.rf"; rg: "bl.rg"; rh: "bl.rh"; ri: "bl.ri"; rj: "bl.rj"; rk: "bl.rk"; rl: "bl.rl"; rm: "bl.rm"; rn: "bl.rn"; ro: "bl.ro"; rp: "bl.rp"; rq: "bl.rq"; rr: "bl.rr"; rs: "bl.rs"; rt: "bl.rt"; ru: "bl.ru"; rv: "bl.rv"; rw: "bl.rw"; rx: "bl.rx"; ry: "bl.ry"; rz: "bl.rz"; sa: "bl.sa"; sb: "bl.sb"; sc: "bl.sc"; sd: "bl.sd"; se: "bl.se"; sf: "bl.sf"; sg: "bl.sg"; sh: "bl.sh"; si: "bl.si"; sj: "bl.sj"; sk: "bl.sk"; sl: "bl.sl"; sm: "bl.sm"; sn: "bl.sn"; so: "bl.so"; sp: "bl.sp"; sq: "bl.sq"; sr: "bl.sr"; ss: "bl.ss"; st: "bl.st"; su: "bl.su"; sv: "bl.sv"; sw: "bl.sw"; sx: "bl.sx"; sy: "bl.sy"; sz: "bl.sz"; ta: "bl.ta"; tb: "bl.tb"; tc: "bl.tc"; td: "bl.td"; te: "bl.te"; tf: "bl.tf"; tg: "bl.tg"; th: "bl.th"; ti: "bl.ti"; tj: "bl.tj"; tk: "bl.tk"; tl: "bl.tl"; tm: "bl.tm"; tn: "bl.tn"; to: "bl.to"; tp: "bl.tp"; tq: "bl.tq"; tr: "bl.tr"; ts: "bl.ts"; tt: "bl.tt"; tu: "bl.tu"; tv: "bl.tv"; tw: "bl.tw"; tx: "bl.tx"; ty: "bl.ty"; tz: "bl.tz"; ua: "bl.ua"; ub: "bl.ub"; uc: "bl.uc"; ud: "bl.ud"; ue: "bl.ue"; uf: "bl.uf"; ug: "bl.ug"; uh: "bl.uh"; ui: "bl.ui"; uj: "bl.uj"; uk: "bl.uk"; ul: "bl.ul"; um: "bl.um"; un: "bl.un"; uo: "bl.uo"; up: "bl.up"; uq: "bl.uq"; ur: "bl.ur"; us: "bl.us"; ut: "bl.ut"; uu: "bl.uu"; uv: "bl.uv"; uw: "bl.uw"; ux: "bl.ux"; uy: "bl.uy"; uz: "bl.uz"; va: "bl.va"; vb: "bl.vb"; vc: "bl.vc"; vd: "bl.vd"; ve: "bl.ve"; vf: "bl.vf"; vg: "bl.vg"; vh: "bl.vh"; vi: "bl.vi"; vj: "bl.vj"; vk: "bl.vk"; vl: "bl.vl"; vm: "bl.vm"; vn: "bl.vn"; vo: "bl.vo"; vp: "bl.vp"; vq: "bl.vq"; vr: "bl.vr"; vs: "bl.vs"; vt: "bl.vt"; vu: "bl.vu"; vv: "bl.vv"; vw: "bl.vw"; vx: "bl.vx"; vy: "bl.vy"; vz: "bl.vz"; wa: "bl.wa"; wb: "bl.wb"; wc: "bl.wc"; wd: "bl.wd"; we: "bl.we"; wf: "bl.wf"; wg: "bl.wg"; wh: "bl.wh"; wi: "bl.wi"; wj: "bl.wj"; wk: "bl.wk"; wl: "bl.wl"; wm: "bl.wm"; wn: "bl.wn"; wo: "bl.wo"; wp: "bl.wp"; wq: "bl.wq"; wr: "bl.wr"; ws: "bl.ws"; wt: "bl.wt"; wu: "bl.wu"; wv: "bl.wv"; ww: "bl.ww"; wx: "bl.wx"; wy: "bl.wy"; wz: "bl.wz"; xa: "bl.xa"; xb: "bl.xb"; xc: "bl.xc"; xd: "bl.xd"; xe: "bl.xe"; xf: "bl.xf"; xg: "bl.xg"; xh: "bl.xh"; xi: "bl.xi"; xj: "bl.xj"; xk: "bl.xk"; xl: "bl.xl"; xm: "bl.xm"; xn: "bl.xn"; xo: "bl.xo"; xp: "bl.xp"; xq: "bl.xq"; xr: "bl.xr"; xs: "bl.xs"; xt: "bl.xt"; xu: "bl.xu"; xv: "bl.xv"; xw: "bl.xw"; xx: "bl.xx"; xy: "bl.xy"; xz: "bl.xz"; ya: "bl.ya"; yb: "bl.yb"; yc: "bl.yc"; yd: "bl.yd"; ye: "bl.ye"; yf: "bl.yf"; yg: "bl.yg"; yh: "bl.yh"; yi: "bl.yi"; yj: "bl.yj"; yk: "bl.yk"; yl: "bl.yl"; ym: "bl.ym"; yn: "bl.yn"; yo: "bl.yo"; yp: "bl.yp"; yq: "bl.yq"; yr: "bl.yr"; ys: "bl.ys"; yt: "bl.yt"; yu: "bl.yu"; yv: "bl.yv"; yw: "bl.yw"; yx: "bl.yx"; yy: "bl.yy"; yz: "bl.yz"; za: "bl.za"; zb: "bl.zb"; zc: "bl.zc"; zd: "bl.zd"; ze: "bl.ze"; zf: "bl.zf"; zg: "bl.zg"; zh: "bl.zh"; zi: "bl.zi"; zj: "bl.zj"; zk: "bl.zk"; zl: "bl.zl"; zm: "bl.zm"; zn: "bl.zn"; zo: "bl.zo"; zp: "bl.zp"; zq: "bl.zq"; zr: "bl.zr"; zs: "bl.zs"; zt: "bl.zt"; zu: "bl.zu"; zv: "bl.zv"; zw: "bl.zw"; zx: "bl.zx"; zy: "bl.zy"; zz: "bl.zz"; }; bm: { aa: "bm.aa"; ab: "bm.ab"; ac: "bm.ac"; ad: "bm.ad"; ae: "bm.ae"; af: "bm.af"; ag: "bm.ag"; ah: "bm.ah"; ai: "bm.ai"; aj: "bm.aj"; ak: "bm.ak"; al: "bm.al"; am: "bm.am"; an: "bm.an"; ao: "bm.ao"; ap: "bm.ap"; aq: "bm.aq"; ar: "bm.ar"; as: "bm.as"; at: "bm.at"; au: "bm.au"; av: "bm.av"; aw: "bm.aw"; ax: "bm.ax"; ay: "bm.ay"; az: "bm.az"; ba: "bm.ba"; bb: "bm.bb"; bc: "bm.bc"; bd: "bm.bd"; be: "bm.be"; bf: "bm.bf"; bg: "bm.bg"; bh: "bm.bh"; bi: "bm.bi"; bj: "bm.bj"; bk: "bm.bk"; bl: "bm.bl"; bm: "bm.bm"; bn: "bm.bn"; bo: "bm.bo"; bp: "bm.bp"; bq: "bm.bq"; br: "bm.br"; bs: "bm.bs"; bt: "bm.bt"; bu: "bm.bu"; bv: "bm.bv"; bw: "bm.bw"; bx: "bm.bx"; by: "bm.by"; bz: "bm.bz"; ca: "bm.ca"; cb: "bm.cb"; cc: "bm.cc"; cd: "bm.cd"; ce: "bm.ce"; cf: "bm.cf"; cg: "bm.cg"; ch: "bm.ch"; ci: "bm.ci"; cj: "bm.cj"; ck: "bm.ck"; cl: "bm.cl"; cm: "bm.cm"; cn: "bm.cn"; co: "bm.co"; cp: "bm.cp"; cq: "bm.cq"; cr: "bm.cr"; cs: "bm.cs"; ct: "bm.ct"; cu: "bm.cu"; cv: "bm.cv"; cw: "bm.cw"; cx: "bm.cx"; cy: "bm.cy"; cz: "bm.cz"; da: "bm.da"; db: "bm.db"; dc: "bm.dc"; dd: "bm.dd"; de: "bm.de"; df: "bm.df"; dg: "bm.dg"; dh: "bm.dh"; di: "bm.di"; dj: "bm.dj"; dk: "bm.dk"; dl: "bm.dl"; dm: "bm.dm"; dn: "bm.dn"; do: "bm.do"; dp: "bm.dp"; dq: "bm.dq"; dr: "bm.dr"; ds: "bm.ds"; dt: "bm.dt"; du: "bm.du"; dv: "bm.dv"; dw: "bm.dw"; dx: "bm.dx"; dy: "bm.dy"; dz: "bm.dz"; ea: "bm.ea"; eb: "bm.eb"; ec: "bm.ec"; ed: "bm.ed"; ee: "bm.ee"; ef: "bm.ef"; eg: "bm.eg"; eh: "bm.eh"; ei: "bm.ei"; ej: "bm.ej"; ek: "bm.ek"; el: "bm.el"; em: "bm.em"; en: "bm.en"; eo: "bm.eo"; ep: "bm.ep"; eq: "bm.eq"; er: "bm.er"; es: "bm.es"; et: "bm.et"; eu: "bm.eu"; ev: "bm.ev"; ew: "bm.ew"; ex: "bm.ex"; ey: "bm.ey"; ez: "bm.ez"; fa: "bm.fa"; fb: "bm.fb"; fc: "bm.fc"; fd: "bm.fd"; fe: "bm.fe"; ff: "bm.ff"; fg: "bm.fg"; fh: "bm.fh"; fi: "bm.fi"; fj: "bm.fj"; fk: "bm.fk"; fl: "bm.fl"; fm: "bm.fm"; fn: "bm.fn"; fo: "bm.fo"; fp: "bm.fp"; fq: "bm.fq"; fr: "bm.fr"; fs: "bm.fs"; ft: "bm.ft"; fu: "bm.fu"; fv: "bm.fv"; fw: "bm.fw"; fx: "bm.fx"; fy: "bm.fy"; fz: "bm.fz"; ga: "bm.ga"; gb: "bm.gb"; gc: "bm.gc"; gd: "bm.gd"; ge: "bm.ge"; gf: "bm.gf"; gg: "bm.gg"; gh: "bm.gh"; gi: "bm.gi"; gj: "bm.gj"; gk: "bm.gk"; gl: "bm.gl"; gm: "bm.gm"; gn: "bm.gn"; go: "bm.go"; gp: "bm.gp"; gq: "bm.gq"; gr: "bm.gr"; gs: "bm.gs"; gt: "bm.gt"; gu: "bm.gu"; gv: "bm.gv"; gw: "bm.gw"; gx: "bm.gx"; gy: "bm.gy"; gz: "bm.gz"; ha: "bm.ha"; hb: "bm.hb"; hc: "bm.hc"; hd: "bm.hd"; he: "bm.he"; hf: "bm.hf"; hg: "bm.hg"; hh: "bm.hh"; hi: "bm.hi"; hj: "bm.hj"; hk: "bm.hk"; hl: "bm.hl"; hm: "bm.hm"; hn: "bm.hn"; ho: "bm.ho"; hp: "bm.hp"; hq: "bm.hq"; hr: "bm.hr"; hs: "bm.hs"; ht: "bm.ht"; hu: "bm.hu"; hv: "bm.hv"; hw: "bm.hw"; hx: "bm.hx"; hy: "bm.hy"; hz: "bm.hz"; ia: "bm.ia"; ib: "bm.ib"; ic: "bm.ic"; id: "bm.id"; ie: "bm.ie"; if: "bm.if"; ig: "bm.ig"; ih: "bm.ih"; ii: "bm.ii"; ij: "bm.ij"; ik: "bm.ik"; il: "bm.il"; im: "bm.im"; in: "bm.in"; io: "bm.io"; ip: "bm.ip"; iq: "bm.iq"; ir: "bm.ir"; is: "bm.is"; it: "bm.it"; iu: "bm.iu"; iv: "bm.iv"; iw: "bm.iw"; ix: "bm.ix"; iy: "bm.iy"; iz: "bm.iz"; ja: "bm.ja"; jb: "bm.jb"; jc: "bm.jc"; jd: "bm.jd"; je: "bm.je"; jf: "bm.jf"; jg: "bm.jg"; jh: "bm.jh"; ji: "bm.ji"; jj: "bm.jj"; jk: "bm.jk"; jl: "bm.jl"; jm: "bm.jm"; jn: "bm.jn"; jo: "bm.jo"; jp: "bm.jp"; jq: "bm.jq"; jr: "bm.jr"; js: "bm.js"; jt: "bm.jt"; ju: "bm.ju"; jv: "bm.jv"; jw: "bm.jw"; jx: "bm.jx"; jy: "bm.jy"; jz: "bm.jz"; ka: "bm.ka"; kb: "bm.kb"; kc: "bm.kc"; kd: "bm.kd"; ke: "bm.ke"; kf: "bm.kf"; kg: "bm.kg"; kh: "bm.kh"; ki: "bm.ki"; kj: "bm.kj"; kk: "bm.kk"; kl: "bm.kl"; km: "bm.km"; kn: "bm.kn"; ko: "bm.ko"; kp: "bm.kp"; kq: "bm.kq"; kr: "bm.kr"; ks: "bm.ks"; kt: "bm.kt"; ku: "bm.ku"; kv: "bm.kv"; kw: "bm.kw"; kx: "bm.kx"; ky: "bm.ky"; kz: "bm.kz"; la: "bm.la"; lb: "bm.lb"; lc: "bm.lc"; ld: "bm.ld"; le: "bm.le"; lf: "bm.lf"; lg: "bm.lg"; lh: "bm.lh"; li: "bm.li"; lj: "bm.lj"; lk: "bm.lk"; ll: "bm.ll"; lm: "bm.lm"; ln: "bm.ln"; lo: "bm.lo"; lp: "bm.lp"; lq: "bm.lq"; lr: "bm.lr"; ls: "bm.ls"; lt: "bm.lt"; lu: "bm.lu"; lv: "bm.lv"; lw: "bm.lw"; lx: "bm.lx"; ly: "bm.ly"; lz: "bm.lz"; ma: "bm.ma"; mb: "bm.mb"; mc: "bm.mc"; md: "bm.md"; me: "bm.me"; mf: "bm.mf"; mg: "bm.mg"; mh: "bm.mh"; mi: "bm.mi"; mj: "bm.mj"; mk: "bm.mk"; ml: "bm.ml"; mm: "bm.mm"; mn: "bm.mn"; mo: "bm.mo"; mp: "bm.mp"; mq: "bm.mq"; mr: "bm.mr"; ms: "bm.ms"; mt: "bm.mt"; mu: "bm.mu"; mv: "bm.mv"; mw: "bm.mw"; mx: "bm.mx"; my: "bm.my"; mz: "bm.mz"; na: "bm.na"; nb: "bm.nb"; nc: "bm.nc"; nd: "bm.nd"; ne: "bm.ne"; nf: "bm.nf"; ng: "bm.ng"; nh: "bm.nh"; ni: "bm.ni"; nj: "bm.nj"; nk: "bm.nk"; nl: "bm.nl"; nm: "bm.nm"; nn: "bm.nn"; no: "bm.no"; np: "bm.np"; nq: "bm.nq"; nr: "bm.nr"; ns: "bm.ns"; nt: "bm.nt"; nu: "bm.nu"; nv: "bm.nv"; nw: "bm.nw"; nx: "bm.nx"; ny: "bm.ny"; nz: "bm.nz"; oa: "bm.oa"; ob: "bm.ob"; oc: "bm.oc"; od: "bm.od"; oe: "bm.oe"; of: "bm.of"; og: "bm.og"; oh: "bm.oh"; oi: "bm.oi"; oj: "bm.oj"; ok: "bm.ok"; ol: "bm.ol"; om: "bm.om"; on: "bm.on"; oo: "bm.oo"; op: "bm.op"; oq: "bm.oq"; or: "bm.or"; os: "bm.os"; ot: "bm.ot"; ou: "bm.ou"; ov: "bm.ov"; ow: "bm.ow"; ox: "bm.ox"; oy: "bm.oy"; oz: "bm.oz"; pa: "bm.pa"; pb: "bm.pb"; pc: "bm.pc"; pd: "bm.pd"; pe: "bm.pe"; pf: "bm.pf"; pg: "bm.pg"; ph: "bm.ph"; pi: "bm.pi"; pj: "bm.pj"; pk: "bm.pk"; pl: "bm.pl"; pm: "bm.pm"; pn: "bm.pn"; po: "bm.po"; pp: "bm.pp"; pq: "bm.pq"; pr: "bm.pr"; ps: "bm.ps"; pt: "bm.pt"; pu: "bm.pu"; pv: "bm.pv"; pw: "bm.pw"; px: "bm.px"; py: "bm.py"; pz: "bm.pz"; qa: "bm.qa"; qb: "bm.qb"; qc: "bm.qc"; qd: "bm.qd"; qe: "bm.qe"; qf: "bm.qf"; qg: "bm.qg"; qh: "bm.qh"; qi: "bm.qi"; qj: "bm.qj"; qk: "bm.qk"; ql: "bm.ql"; qm: "bm.qm"; qn: "bm.qn"; qo: "bm.qo"; qp: "bm.qp"; qq: "bm.qq"; qr: "bm.qr"; qs: "bm.qs"; qt: "bm.qt"; qu: "bm.qu"; qv: "bm.qv"; qw: "bm.qw"; qx: "bm.qx"; qy: "bm.qy"; qz: "bm.qz"; ra: "bm.ra"; rb: "bm.rb"; rc: "bm.rc"; rd: "bm.rd"; re: "bm.re"; rf: "bm.rf"; rg: "bm.rg"; rh: "bm.rh"; ri: "bm.ri"; rj: "bm.rj"; rk: "bm.rk"; rl: "bm.rl"; rm: "bm.rm"; rn: "bm.rn"; ro: "bm.ro"; rp: "bm.rp"; rq: "bm.rq"; rr: "bm.rr"; rs: "bm.rs"; rt: "bm.rt"; ru: "bm.ru"; rv: "bm.rv"; rw: "bm.rw"; rx: "bm.rx"; ry: "bm.ry"; rz: "bm.rz"; sa: "bm.sa"; sb: "bm.sb"; sc: "bm.sc"; sd: "bm.sd"; se: "bm.se"; sf: "bm.sf"; sg: "bm.sg"; sh: "bm.sh"; si: "bm.si"; sj: "bm.sj"; sk: "bm.sk"; sl: "bm.sl"; sm: "bm.sm"; sn: "bm.sn"; so: "bm.so"; sp: "bm.sp"; sq: "bm.sq"; sr: "bm.sr"; ss: "bm.ss"; st: "bm.st"; su: "bm.su"; sv: "bm.sv"; sw: "bm.sw"; sx: "bm.sx"; sy: "bm.sy"; sz: "bm.sz"; ta: "bm.ta"; tb: "bm.tb"; tc: "bm.tc"; td: "bm.td"; te: "bm.te"; tf: "bm.tf"; tg: "bm.tg"; th: "bm.th"; ti: "bm.ti"; tj: "bm.tj"; tk: "bm.tk"; tl: "bm.tl"; tm: "bm.tm"; tn: "bm.tn"; to: "bm.to"; tp: "bm.tp"; tq: "bm.tq"; tr: "bm.tr"; ts: "bm.ts"; tt: "bm.tt"; tu: "bm.tu"; tv: "bm.tv"; tw: "bm.tw"; tx: "bm.tx"; ty: "bm.ty"; tz: "bm.tz"; ua: "bm.ua"; ub: "bm.ub"; uc: "bm.uc"; ud: "bm.ud"; ue: "bm.ue"; uf: "bm.uf"; ug: "bm.ug"; uh: "bm.uh"; ui: "bm.ui"; uj: "bm.uj"; uk: "bm.uk"; ul: "bm.ul"; um: "bm.um"; un: "bm.un"; uo: "bm.uo"; up: "bm.up"; uq: "bm.uq"; ur: "bm.ur"; us: "bm.us"; ut: "bm.ut"; uu: "bm.uu"; uv: "bm.uv"; uw: "bm.uw"; ux: "bm.ux"; uy: "bm.uy"; uz: "bm.uz"; va: "bm.va"; vb: "bm.vb"; vc: "bm.vc"; vd: "bm.vd"; ve: "bm.ve"; vf: "bm.vf"; vg: "bm.vg"; vh: "bm.vh"; vi: "bm.vi"; vj: "bm.vj"; vk: "bm.vk"; vl: "bm.vl"; vm: "bm.vm"; vn: "bm.vn"; vo: "bm.vo"; vp: "bm.vp"; vq: "bm.vq"; vr: "bm.vr"; vs: "bm.vs"; vt: "bm.vt"; vu: "bm.vu"; vv: "bm.vv"; vw: "bm.vw"; vx: "bm.vx"; vy: "bm.vy"; vz: "bm.vz"; wa: "bm.wa"; wb: "bm.wb"; wc: "bm.wc"; wd: "bm.wd"; we: "bm.we"; wf: "bm.wf"; wg: "bm.wg"; wh: "bm.wh"; wi: "bm.wi"; wj: "bm.wj"; wk: "bm.wk"; wl: "bm.wl"; wm: "bm.wm"; wn: "bm.wn"; wo: "bm.wo"; wp: "bm.wp"; wq: "bm.wq"; wr: "bm.wr"; ws: "bm.ws"; wt: "bm.wt"; wu: "bm.wu"; wv: "bm.wv"; ww: "bm.ww"; wx: "bm.wx"; wy: "bm.wy"; wz: "bm.wz"; xa: "bm.xa"; xb: "bm.xb"; xc: "bm.xc"; xd: "bm.xd"; xe: "bm.xe"; xf: "bm.xf"; xg: "bm.xg"; xh: "bm.xh"; xi: "bm.xi"; xj: "bm.xj"; xk: "bm.xk"; xl: "bm.xl"; xm: "bm.xm"; xn: "bm.xn"; xo: "bm.xo"; xp: "bm.xp"; xq: "bm.xq"; xr: "bm.xr"; xs: "bm.xs"; xt: "bm.xt"; xu: "bm.xu"; xv: "bm.xv"; xw: "bm.xw"; xx: "bm.xx"; xy: "bm.xy"; xz: "bm.xz"; ya: "bm.ya"; yb: "bm.yb"; yc: "bm.yc"; yd: "bm.yd"; ye: "bm.ye"; yf: "bm.yf"; yg: "bm.yg"; yh: "bm.yh"; yi: "bm.yi"; yj: "bm.yj"; yk: "bm.yk"; yl: "bm.yl"; ym: "bm.ym"; yn: "bm.yn"; yo: "bm.yo"; yp: "bm.yp"; yq: "bm.yq"; yr: "bm.yr"; ys: "bm.ys"; yt: "bm.yt"; yu: "bm.yu"; yv: "bm.yv"; yw: "bm.yw"; yx: "bm.yx"; yy: "bm.yy"; yz: "bm.yz"; za: "bm.za"; zb: "bm.zb"; zc: "bm.zc"; zd: "bm.zd"; ze: "bm.ze"; zf: "bm.zf"; zg: "bm.zg"; zh: "bm.zh"; zi: "bm.zi"; zj: "bm.zj"; zk: "bm.zk"; zl: "bm.zl"; zm: "bm.zm"; zn: "bm.zn"; zo: "bm.zo"; zp: "bm.zp"; zq: "bm.zq"; zr: "bm.zr"; zs: "bm.zs"; zt: "bm.zt"; zu: "bm.zu"; zv: "bm.zv"; zw: "bm.zw"; zx: "bm.zx"; zy: "bm.zy"; zz: "bm.zz"; }; bn: { aa: "bn.aa"; ab: "bn.ab"; ac: "bn.ac"; ad: "bn.ad"; ae: "bn.ae"; af: "bn.af"; ag: "bn.ag"; ah: "bn.ah"; ai: "bn.ai"; aj: "bn.aj"; ak: "bn.ak"; al: "bn.al"; am: "bn.am"; an: "bn.an"; ao: "bn.ao"; ap: "bn.ap"; aq: "bn.aq"; ar: "bn.ar"; as: "bn.as"; at: "bn.at"; au: "bn.au"; av: "bn.av"; aw: "bn.aw"; ax: "bn.ax"; ay: "bn.ay"; az: "bn.az"; ba: "bn.ba"; bb: "bn.bb"; bc: "bn.bc"; bd: "bn.bd"; be: "bn.be"; bf: "bn.bf"; bg: "bn.bg"; bh: "bn.bh"; bi: "bn.bi"; bj: "bn.bj"; bk: "bn.bk"; bl: "bn.bl"; bm: "bn.bm"; bn: "bn.bn"; bo: "bn.bo"; bp: "bn.bp"; bq: "bn.bq"; br: "bn.br"; bs: "bn.bs"; bt: "bn.bt"; bu: "bn.bu"; bv: "bn.bv"; bw: "bn.bw"; bx: "bn.bx"; by: "bn.by"; bz: "bn.bz"; ca: "bn.ca"; cb: "bn.cb"; cc: "bn.cc"; cd: "bn.cd"; ce: "bn.ce"; cf: "bn.cf"; cg: "bn.cg"; ch: "bn.ch"; ci: "bn.ci"; cj: "bn.cj"; ck: "bn.ck"; cl: "bn.cl"; cm: "bn.cm"; cn: "bn.cn"; co: "bn.co"; cp: "bn.cp"; cq: "bn.cq"; cr: "bn.cr"; cs: "bn.cs"; ct: "bn.ct"; cu: "bn.cu"; cv: "bn.cv"; cw: "bn.cw"; cx: "bn.cx"; cy: "bn.cy"; cz: "bn.cz"; da: "bn.da"; db: "bn.db"; dc: "bn.dc"; dd: "bn.dd"; de: "bn.de"; df: "bn.df"; dg: "bn.dg"; dh: "bn.dh"; di: "bn.di"; dj: "bn.dj"; dk: "bn.dk"; dl: "bn.dl"; dm: "bn.dm"; dn: "bn.dn"; do: "bn.do"; dp: "bn.dp"; dq: "bn.dq"; dr: "bn.dr"; ds: "bn.ds"; dt: "bn.dt"; du: "bn.du"; dv: "bn.dv"; dw: "bn.dw"; dx: "bn.dx"; dy: "bn.dy"; dz: "bn.dz"; ea: "bn.ea"; eb: "bn.eb"; ec: "bn.ec"; ed: "bn.ed"; ee: "bn.ee"; ef: "bn.ef"; eg: "bn.eg"; eh: "bn.eh"; ei: "bn.ei"; ej: "bn.ej"; ek: "bn.ek"; el: "bn.el"; em: "bn.em"; en: "bn.en"; eo: "bn.eo"; ep: "bn.ep"; eq: "bn.eq"; er: "bn.er"; es: "bn.es"; et: "bn.et"; eu: "bn.eu"; ev: "bn.ev"; ew: "bn.ew"; ex: "bn.ex"; ey: "bn.ey"; ez: "bn.ez"; fa: "bn.fa"; fb: "bn.fb"; fc: "bn.fc"; fd: "bn.fd"; fe: "bn.fe"; ff: "bn.ff"; fg: "bn.fg"; fh: "bn.fh"; fi: "bn.fi"; fj: "bn.fj"; fk: "bn.fk"; fl: "bn.fl"; fm: "bn.fm"; fn: "bn.fn"; fo: "bn.fo"; fp: "bn.fp"; fq: "bn.fq"; fr: "bn.fr"; fs: "bn.fs"; ft: "bn.ft"; fu: "bn.fu"; fv: "bn.fv"; fw: "bn.fw"; fx: "bn.fx"; fy: "bn.fy"; fz: "bn.fz"; ga: "bn.ga"; gb: "bn.gb"; gc: "bn.gc"; gd: "bn.gd"; ge: "bn.ge"; gf: "bn.gf"; gg: "bn.gg"; gh: "bn.gh"; gi: "bn.gi"; gj: "bn.gj"; gk: "bn.gk"; gl: "bn.gl"; gm: "bn.gm"; gn: "bn.gn"; go: "bn.go"; gp: "bn.gp"; gq: "bn.gq"; gr: "bn.gr"; gs: "bn.gs"; gt: "bn.gt"; gu: "bn.gu"; gv: "bn.gv"; gw: "bn.gw"; gx: "bn.gx"; gy: "bn.gy"; gz: "bn.gz"; ha: "bn.ha"; hb: "bn.hb"; hc: "bn.hc"; hd: "bn.hd"; he: "bn.he"; hf: "bn.hf"; hg: "bn.hg"; hh: "bn.hh"; hi: "bn.hi"; hj: "bn.hj"; hk: "bn.hk"; hl: "bn.hl"; hm: "bn.hm"; hn: "bn.hn"; ho: "bn.ho"; hp: "bn.hp"; hq: "bn.hq"; hr: "bn.hr"; hs: "bn.hs"; ht: "bn.ht"; hu: "bn.hu"; hv: "bn.hv"; hw: "bn.hw"; hx: "bn.hx"; hy: "bn.hy"; hz: "bn.hz"; ia: "bn.ia"; ib: "bn.ib"; ic: "bn.ic"; id: "bn.id"; ie: "bn.ie"; if: "bn.if"; ig: "bn.ig"; ih: "bn.ih"; ii: "bn.ii"; ij: "bn.ij"; ik: "bn.ik"; il: "bn.il"; im: "bn.im"; in: "bn.in"; io: "bn.io"; ip: "bn.ip"; iq: "bn.iq"; ir: "bn.ir"; is: "bn.is"; it: "bn.it"; iu: "bn.iu"; iv: "bn.iv"; iw: "bn.iw"; ix: "bn.ix"; iy: "bn.iy"; iz: "bn.iz"; ja: "bn.ja"; jb: "bn.jb"; jc: "bn.jc"; jd: "bn.jd"; je: "bn.je"; jf: "bn.jf"; jg: "bn.jg"; jh: "bn.jh"; ji: "bn.ji"; jj: "bn.jj"; jk: "bn.jk"; jl: "bn.jl"; jm: "bn.jm"; jn: "bn.jn"; jo: "bn.jo"; jp: "bn.jp"; jq: "bn.jq"; jr: "bn.jr"; js: "bn.js"; jt: "bn.jt"; ju: "bn.ju"; jv: "bn.jv"; jw: "bn.jw"; jx: "bn.jx"; jy: "bn.jy"; jz: "bn.jz"; ka: "bn.ka"; kb: "bn.kb"; kc: "bn.kc"; kd: "bn.kd"; ke: "bn.ke"; kf: "bn.kf"; kg: "bn.kg"; kh: "bn.kh"; ki: "bn.ki"; kj: "bn.kj"; kk: "bn.kk"; kl: "bn.kl"; km: "bn.km"; kn: "bn.kn"; ko: "bn.ko"; kp: "bn.kp"; kq: "bn.kq"; kr: "bn.kr"; ks: "bn.ks"; kt: "bn.kt"; ku: "bn.ku"; kv: "bn.kv"; kw: "bn.kw"; kx: "bn.kx"; ky: "bn.ky"; kz: "bn.kz"; la: "bn.la"; lb: "bn.lb"; lc: "bn.lc"; ld: "bn.ld"; le: "bn.le"; lf: "bn.lf"; lg: "bn.lg"; lh: "bn.lh"; li: "bn.li"; lj: "bn.lj"; lk: "bn.lk"; ll: "bn.ll"; lm: "bn.lm"; ln: "bn.ln"; lo: "bn.lo"; lp: "bn.lp"; lq: "bn.lq"; lr: "bn.lr"; ls: "bn.ls"; lt: "bn.lt"; lu: "bn.lu"; lv: "bn.lv"; lw: "bn.lw"; lx: "bn.lx"; ly: "bn.ly"; lz: "bn.lz"; ma: "bn.ma"; mb: "bn.mb"; mc: "bn.mc"; md: "bn.md"; me: "bn.me"; mf: "bn.mf"; mg: "bn.mg"; mh: "bn.mh"; mi: "bn.mi"; mj: "bn.mj"; mk: "bn.mk"; ml: "bn.ml"; mm: "bn.mm"; mn: "bn.mn"; mo: "bn.mo"; mp: "bn.mp"; mq: "bn.mq"; mr: "bn.mr"; ms: "bn.ms"; mt: "bn.mt"; mu: "bn.mu"; mv: "bn.mv"; mw: "bn.mw"; mx: "bn.mx"; my: "bn.my"; mz: "bn.mz"; na: "bn.na"; nb: "bn.nb"; nc: "bn.nc"; nd: "bn.nd"; ne: "bn.ne"; nf: "bn.nf"; ng: "bn.ng"; nh: "bn.nh"; ni: "bn.ni"; nj: "bn.nj"; nk: "bn.nk"; nl: "bn.nl"; nm: "bn.nm"; nn: "bn.nn"; no: "bn.no"; np: "bn.np"; nq: "bn.nq"; nr: "bn.nr"; ns: "bn.ns"; nt: "bn.nt"; nu: "bn.nu"; nv: "bn.nv"; nw: "bn.nw"; nx: "bn.nx"; ny: "bn.ny"; nz: "bn.nz"; oa: "bn.oa"; ob: "bn.ob"; oc: "bn.oc"; od: "bn.od"; oe: "bn.oe"; of: "bn.of"; og: "bn.og"; oh: "bn.oh"; oi: "bn.oi"; oj: "bn.oj"; ok: "bn.ok"; ol: "bn.ol"; om: "bn.om"; on: "bn.on"; oo: "bn.oo"; op: "bn.op"; oq: "bn.oq"; or: "bn.or"; os: "bn.os"; ot: "bn.ot"; ou: "bn.ou"; ov: "bn.ov"; ow: "bn.ow"; ox: "bn.ox"; oy: "bn.oy"; oz: "bn.oz"; pa: "bn.pa"; pb: "bn.pb"; pc: "bn.pc"; pd: "bn.pd"; pe: "bn.pe"; pf: "bn.pf"; pg: "bn.pg"; ph: "bn.ph"; pi: "bn.pi"; pj: "bn.pj"; pk: "bn.pk"; pl: "bn.pl"; pm: "bn.pm"; pn: "bn.pn"; po: "bn.po"; pp: "bn.pp"; pq: "bn.pq"; pr: "bn.pr"; ps: "bn.ps"; pt: "bn.pt"; pu: "bn.pu"; pv: "bn.pv"; pw: "bn.pw"; px: "bn.px"; py: "bn.py"; pz: "bn.pz"; qa: "bn.qa"; qb: "bn.qb"; qc: "bn.qc"; qd: "bn.qd"; qe: "bn.qe"; qf: "bn.qf"; qg: "bn.qg"; qh: "bn.qh"; qi: "bn.qi"; qj: "bn.qj"; qk: "bn.qk"; ql: "bn.ql"; qm: "bn.qm"; qn: "bn.qn"; qo: "bn.qo"; qp: "bn.qp"; qq: "bn.qq"; qr: "bn.qr"; qs: "bn.qs"; qt: "bn.qt"; qu: "bn.qu"; qv: "bn.qv"; qw: "bn.qw"; qx: "bn.qx"; qy: "bn.qy"; qz: "bn.qz"; ra: "bn.ra"; rb: "bn.rb"; rc: "bn.rc"; rd: "bn.rd"; re: "bn.re"; rf: "bn.rf"; rg: "bn.rg"; rh: "bn.rh"; ri: "bn.ri"; rj: "bn.rj"; rk: "bn.rk"; rl: "bn.rl"; rm: "bn.rm"; rn: "bn.rn"; ro: "bn.ro"; rp: "bn.rp"; rq: "bn.rq"; rr: "bn.rr"; rs: "bn.rs"; rt: "bn.rt"; ru: "bn.ru"; rv: "bn.rv"; rw: "bn.rw"; rx: "bn.rx"; ry: "bn.ry"; rz: "bn.rz"; sa: "bn.sa"; sb: "bn.sb"; sc: "bn.sc"; sd: "bn.sd"; se: "bn.se"; sf: "bn.sf"; sg: "bn.sg"; sh: "bn.sh"; si: "bn.si"; sj: "bn.sj"; sk: "bn.sk"; sl: "bn.sl"; sm: "bn.sm"; sn: "bn.sn"; so: "bn.so"; sp: "bn.sp"; sq: "bn.sq"; sr: "bn.sr"; ss: "bn.ss"; st: "bn.st"; su: "bn.su"; sv: "bn.sv"; sw: "bn.sw"; sx: "bn.sx"; sy: "bn.sy"; sz: "bn.sz"; ta: "bn.ta"; tb: "bn.tb"; tc: "bn.tc"; td: "bn.td"; te: "bn.te"; tf: "bn.tf"; tg: "bn.tg"; th: "bn.th"; ti: "bn.ti"; tj: "bn.tj"; tk: "bn.tk"; tl: "bn.tl"; tm: "bn.tm"; tn: "bn.tn"; to: "bn.to"; tp: "bn.tp"; tq: "bn.tq"; tr: "bn.tr"; ts: "bn.ts"; tt: "bn.tt"; tu: "bn.tu"; tv: "bn.tv"; tw: "bn.tw"; tx: "bn.tx"; ty: "bn.ty"; tz: "bn.tz"; ua: "bn.ua"; ub: "bn.ub"; uc: "bn.uc"; ud: "bn.ud"; ue: "bn.ue"; uf: "bn.uf"; ug: "bn.ug"; uh: "bn.uh"; ui: "bn.ui"; uj: "bn.uj"; uk: "bn.uk"; ul: "bn.ul"; um: "bn.um"; un: "bn.un"; uo: "bn.uo"; up: "bn.up"; uq: "bn.uq"; ur: "bn.ur"; us: "bn.us"; ut: "bn.ut"; uu: "bn.uu"; uv: "bn.uv"; uw: "bn.uw"; ux: "bn.ux"; uy: "bn.uy"; uz: "bn.uz"; va: "bn.va"; vb: "bn.vb"; vc: "bn.vc"; vd: "bn.vd"; ve: "bn.ve"; vf: "bn.vf"; vg: "bn.vg"; vh: "bn.vh"; vi: "bn.vi"; vj: "bn.vj"; vk: "bn.vk"; vl: "bn.vl"; vm: "bn.vm"; vn: "bn.vn"; vo: "bn.vo"; vp: "bn.vp"; vq: "bn.vq"; vr: "bn.vr"; vs: "bn.vs"; vt: "bn.vt"; vu: "bn.vu"; vv: "bn.vv"; vw: "bn.vw"; vx: "bn.vx"; vy: "bn.vy"; vz: "bn.vz"; wa: "bn.wa"; wb: "bn.wb"; wc: "bn.wc"; wd: "bn.wd"; we: "bn.we"; wf: "bn.wf"; wg: "bn.wg"; wh: "bn.wh"; wi: "bn.wi"; wj: "bn.wj"; wk: "bn.wk"; wl: "bn.wl"; wm: "bn.wm"; wn: "bn.wn"; wo: "bn.wo"; wp: "bn.wp"; wq: "bn.wq"; wr: "bn.wr"; ws: "bn.ws"; wt: "bn.wt"; wu: "bn.wu"; wv: "bn.wv"; ww: "bn.ww"; wx: "bn.wx"; wy: "bn.wy"; wz: "bn.wz"; xa: "bn.xa"; xb: "bn.xb"; xc: "bn.xc"; xd: "bn.xd"; xe: "bn.xe"; xf: "bn.xf"; xg: "bn.xg"; xh: "bn.xh"; xi: "bn.xi"; xj: "bn.xj"; xk: "bn.xk"; xl: "bn.xl"; xm: "bn.xm"; xn: "bn.xn"; xo: "bn.xo"; xp: "bn.xp"; xq: "bn.xq"; xr: "bn.xr"; xs: "bn.xs"; xt: "bn.xt"; xu: "bn.xu"; xv: "bn.xv"; xw: "bn.xw"; xx: "bn.xx"; xy: "bn.xy"; xz: "bn.xz"; ya: "bn.ya"; yb: "bn.yb"; yc: "bn.yc"; yd: "bn.yd"; ye: "bn.ye"; yf: "bn.yf"; yg: "bn.yg"; yh: "bn.yh"; yi: "bn.yi"; yj: "bn.yj"; yk: "bn.yk"; yl: "bn.yl"; ym: "bn.ym"; yn: "bn.yn"; yo: "bn.yo"; yp: "bn.yp"; yq: "bn.yq"; yr: "bn.yr"; ys: "bn.ys"; yt: "bn.yt"; yu: "bn.yu"; yv: "bn.yv"; yw: "bn.yw"; yx: "bn.yx"; yy: "bn.yy"; yz: "bn.yz"; za: "bn.za"; zb: "bn.zb"; zc: "bn.zc"; zd: "bn.zd"; ze: "bn.ze"; zf: "bn.zf"; zg: "bn.zg"; zh: "bn.zh"; zi: "bn.zi"; zj: "bn.zj"; zk: "bn.zk"; zl: "bn.zl"; zm: "bn.zm"; zn: "bn.zn"; zo: "bn.zo"; zp: "bn.zp"; zq: "bn.zq"; zr: "bn.zr"; zs: "bn.zs"; zt: "bn.zt"; zu: "bn.zu"; zv: "bn.zv"; zw: "bn.zw"; zx: "bn.zx"; zy: "bn.zy"; zz: "bn.zz"; }; bo: { aa: "bo.aa"; ab: "bo.ab"; ac: "bo.ac"; ad: "bo.ad"; ae: "bo.ae"; af: "bo.af"; ag: "bo.ag"; ah: "bo.ah"; ai: "bo.ai"; aj: "bo.aj"; ak: "bo.ak"; al: "bo.al"; am: "bo.am"; an: "bo.an"; ao: "bo.ao"; ap: "bo.ap"; aq: "bo.aq"; ar: "bo.ar"; as: "bo.as"; at: "bo.at"; au: "bo.au"; av: "bo.av"; aw: "bo.aw"; ax: "bo.ax"; ay: "bo.ay"; az: "bo.az"; ba: "bo.ba"; bb: "bo.bb"; bc: "bo.bc"; bd: "bo.bd"; be: "bo.be"; bf: "bo.bf"; bg: "bo.bg"; bh: "bo.bh"; bi: "bo.bi"; bj: "bo.bj"; bk: "bo.bk"; bl: "bo.bl"; bm: "bo.bm"; bn: "bo.bn"; bo: "bo.bo"; bp: "bo.bp"; bq: "bo.bq"; br: "bo.br"; bs: "bo.bs"; bt: "bo.bt"; bu: "bo.bu"; bv: "bo.bv"; bw: "bo.bw"; bx: "bo.bx"; by: "bo.by"; bz: "bo.bz"; ca: "bo.ca"; cb: "bo.cb"; cc: "bo.cc"; cd: "bo.cd"; ce: "bo.ce"; cf: "bo.cf"; cg: "bo.cg"; ch: "bo.ch"; ci: "bo.ci"; cj: "bo.cj"; ck: "bo.ck"; cl: "bo.cl"; cm: "bo.cm"; cn: "bo.cn"; co: "bo.co"; cp: "bo.cp"; cq: "bo.cq"; cr: "bo.cr"; cs: "bo.cs"; ct: "bo.ct"; cu: "bo.cu"; cv: "bo.cv"; cw: "bo.cw"; cx: "bo.cx"; cy: "bo.cy"; cz: "bo.cz"; da: "bo.da"; db: "bo.db"; dc: "bo.dc"; dd: "bo.dd"; de: "bo.de"; df: "bo.df"; dg: "bo.dg"; dh: "bo.dh"; di: "bo.di"; dj: "bo.dj"; dk: "bo.dk"; dl: "bo.dl"; dm: "bo.dm"; dn: "bo.dn"; do: "bo.do"; dp: "bo.dp"; dq: "bo.dq"; dr: "bo.dr"; ds: "bo.ds"; dt: "bo.dt"; du: "bo.du"; dv: "bo.dv"; dw: "bo.dw"; dx: "bo.dx"; dy: "bo.dy"; dz: "bo.dz"; ea: "bo.ea"; eb: "bo.eb"; ec: "bo.ec"; ed: "bo.ed"; ee: "bo.ee"; ef: "bo.ef"; eg: "bo.eg"; eh: "bo.eh"; ei: "bo.ei"; ej: "bo.ej"; ek: "bo.ek"; el: "bo.el"; em: "bo.em"; en: "bo.en"; eo: "bo.eo"; ep: "bo.ep"; eq: "bo.eq"; er: "bo.er"; es: "bo.es"; et: "bo.et"; eu: "bo.eu"; ev: "bo.ev"; ew: "bo.ew"; ex: "bo.ex"; ey: "bo.ey"; ez: "bo.ez"; fa: "bo.fa"; fb: "bo.fb"; fc: "bo.fc"; fd: "bo.fd"; fe: "bo.fe"; ff: "bo.ff"; fg: "bo.fg"; fh: "bo.fh"; fi: "bo.fi"; fj: "bo.fj"; fk: "bo.fk"; fl: "bo.fl"; fm: "bo.fm"; fn: "bo.fn"; fo: "bo.fo"; fp: "bo.fp"; fq: "bo.fq"; fr: "bo.fr"; fs: "bo.fs"; ft: "bo.ft"; fu: "bo.fu"; fv: "bo.fv"; fw: "bo.fw"; fx: "bo.fx"; fy: "bo.fy"; fz: "bo.fz"; ga: "bo.ga"; gb: "bo.gb"; gc: "bo.gc"; gd: "bo.gd"; ge: "bo.ge"; gf: "bo.gf"; gg: "bo.gg"; gh: "bo.gh"; gi: "bo.gi"; gj: "bo.gj"; gk: "bo.gk"; gl: "bo.gl"; gm: "bo.gm"; gn: "bo.gn"; go: "bo.go"; gp: "bo.gp"; gq: "bo.gq"; gr: "bo.gr"; gs: "bo.gs"; gt: "bo.gt"; gu: "bo.gu"; gv: "bo.gv"; gw: "bo.gw"; gx: "bo.gx"; gy: "bo.gy"; gz: "bo.gz"; ha: "bo.ha"; hb: "bo.hb"; hc: "bo.hc"; hd: "bo.hd"; he: "bo.he"; hf: "bo.hf"; hg: "bo.hg"; hh: "bo.hh"; hi: "bo.hi"; hj: "bo.hj"; hk: "bo.hk"; hl: "bo.hl"; hm: "bo.hm"; hn: "bo.hn"; ho: "bo.ho"; hp: "bo.hp"; hq: "bo.hq"; hr: "bo.hr"; hs: "bo.hs"; ht: "bo.ht"; hu: "bo.hu"; hv: "bo.hv"; hw: "bo.hw"; hx: "bo.hx"; hy: "bo.hy"; hz: "bo.hz"; ia: "bo.ia"; ib: "bo.ib"; ic: "bo.ic"; id: "bo.id"; ie: "bo.ie"; if: "bo.if"; ig: "bo.ig"; ih: "bo.ih"; ii: "bo.ii"; ij: "bo.ij"; ik: "bo.ik"; il: "bo.il"; im: "bo.im"; in: "bo.in"; io: "bo.io"; ip: "bo.ip"; iq: "bo.iq"; ir: "bo.ir"; is: "bo.is"; it: "bo.it"; iu: "bo.iu"; iv: "bo.iv"; iw: "bo.iw"; ix: "bo.ix"; iy: "bo.iy"; iz: "bo.iz"; ja: "bo.ja"; jb: "bo.jb"; jc: "bo.jc"; jd: "bo.jd"; je: "bo.je"; jf: "bo.jf"; jg: "bo.jg"; jh: "bo.jh"; ji: "bo.ji"; jj: "bo.jj"; jk: "bo.jk"; jl: "bo.jl"; jm: "bo.jm"; jn: "bo.jn"; jo: "bo.jo"; jp: "bo.jp"; jq: "bo.jq"; jr: "bo.jr"; js: "bo.js"; jt: "bo.jt"; ju: "bo.ju"; jv: "bo.jv"; jw: "bo.jw"; jx: "bo.jx"; jy: "bo.jy"; jz: "bo.jz"; ka: "bo.ka"; kb: "bo.kb"; kc: "bo.kc"; kd: "bo.kd"; ke: "bo.ke"; kf: "bo.kf"; kg: "bo.kg"; kh: "bo.kh"; ki: "bo.ki"; kj: "bo.kj"; kk: "bo.kk"; kl: "bo.kl"; km: "bo.km"; kn: "bo.kn"; ko: "bo.ko"; kp: "bo.kp"; kq: "bo.kq"; kr: "bo.kr"; ks: "bo.ks"; kt: "bo.kt"; ku: "bo.ku"; kv: "bo.kv"; kw: "bo.kw"; kx: "bo.kx"; ky: "bo.ky"; kz: "bo.kz"; la: "bo.la"; lb: "bo.lb"; lc: "bo.lc"; ld: "bo.ld"; le: "bo.le"; lf: "bo.lf"; lg: "bo.lg"; lh: "bo.lh"; li: "bo.li"; lj: "bo.lj"; lk: "bo.lk"; ll: "bo.ll"; lm: "bo.lm"; ln: "bo.ln"; lo: "bo.lo"; lp: "bo.lp"; lq: "bo.lq"; lr: "bo.lr"; ls: "bo.ls"; lt: "bo.lt"; lu: "bo.lu"; lv: "bo.lv"; lw: "bo.lw"; lx: "bo.lx"; ly: "bo.ly"; lz: "bo.lz"; ma: "bo.ma"; mb: "bo.mb"; mc: "bo.mc"; md: "bo.md"; me: "bo.me"; mf: "bo.mf"; mg: "bo.mg"; mh: "bo.mh"; mi: "bo.mi"; mj: "bo.mj"; mk: "bo.mk"; ml: "bo.ml"; mm: "bo.mm"; mn: "bo.mn"; mo: "bo.mo"; mp: "bo.mp"; mq: "bo.mq"; mr: "bo.mr"; ms: "bo.ms"; mt: "bo.mt"; mu: "bo.mu"; mv: "bo.mv"; mw: "bo.mw"; mx: "bo.mx"; my: "bo.my"; mz: "bo.mz"; na: "bo.na"; nb: "bo.nb"; nc: "bo.nc"; nd: "bo.nd"; ne: "bo.ne"; nf: "bo.nf"; ng: "bo.ng"; nh: "bo.nh"; ni: "bo.ni"; nj: "bo.nj"; nk: "bo.nk"; nl: "bo.nl"; nm: "bo.nm"; nn: "bo.nn"; no: "bo.no"; np: "bo.np"; nq: "bo.nq"; nr: "bo.nr"; ns: "bo.ns"; nt: "bo.nt"; nu: "bo.nu"; nv: "bo.nv"; nw: "bo.nw"; nx: "bo.nx"; ny: "bo.ny"; nz: "bo.nz"; oa: "bo.oa"; ob: "bo.ob"; oc: "bo.oc"; od: "bo.od"; oe: "bo.oe"; of: "bo.of"; og: "bo.og"; oh: "bo.oh"; oi: "bo.oi"; oj: "bo.oj"; ok: "bo.ok"; ol: "bo.ol"; om: "bo.om"; on: "bo.on"; oo: "bo.oo"; op: "bo.op"; oq: "bo.oq"; or: "bo.or"; os: "bo.os"; ot: "bo.ot"; ou: "bo.ou"; ov: "bo.ov"; ow: "bo.ow"; ox: "bo.ox"; oy: "bo.oy"; oz: "bo.oz"; pa: "bo.pa"; pb: "bo.pb"; pc: "bo.pc"; pd: "bo.pd"; pe: "bo.pe"; pf: "bo.pf"; pg: "bo.pg"; ph: "bo.ph"; pi: "bo.pi"; pj: "bo.pj"; pk: "bo.pk"; pl: "bo.pl"; pm: "bo.pm"; pn: "bo.pn"; po: "bo.po"; pp: "bo.pp"; pq: "bo.pq"; pr: "bo.pr"; ps: "bo.ps"; pt: "bo.pt"; pu: "bo.pu"; pv: "bo.pv"; pw: "bo.pw"; px: "bo.px"; py: "bo.py"; pz: "bo.pz"; qa: "bo.qa"; qb: "bo.qb"; qc: "bo.qc"; qd: "bo.qd"; qe: "bo.qe"; qf: "bo.qf"; qg: "bo.qg"; qh: "bo.qh"; qi: "bo.qi"; qj: "bo.qj"; qk: "bo.qk"; ql: "bo.ql"; qm: "bo.qm"; qn: "bo.qn"; qo: "bo.qo"; qp: "bo.qp"; qq: "bo.qq"; qr: "bo.qr"; qs: "bo.qs"; qt: "bo.qt"; qu: "bo.qu"; qv: "bo.qv"; qw: "bo.qw"; qx: "bo.qx"; qy: "bo.qy"; qz: "bo.qz"; ra: "bo.ra"; rb: "bo.rb"; rc: "bo.rc"; rd: "bo.rd"; re: "bo.re"; rf: "bo.rf"; rg: "bo.rg"; rh: "bo.rh"; ri: "bo.ri"; rj: "bo.rj"; rk: "bo.rk"; rl: "bo.rl"; rm: "bo.rm"; rn: "bo.rn"; ro: "bo.ro"; rp: "bo.rp"; rq: "bo.rq"; rr: "bo.rr"; rs: "bo.rs"; rt: "bo.rt"; ru: "bo.ru"; rv: "bo.rv"; rw: "bo.rw"; rx: "bo.rx"; ry: "bo.ry"; rz: "bo.rz"; sa: "bo.sa"; sb: "bo.sb"; sc: "bo.sc"; sd: "bo.sd"; se: "bo.se"; sf: "bo.sf"; sg: "bo.sg"; sh: "bo.sh"; si: "bo.si"; sj: "bo.sj"; sk: "bo.sk"; sl: "bo.sl"; sm: "bo.sm"; sn: "bo.sn"; so: "bo.so"; sp: "bo.sp"; sq: "bo.sq"; sr: "bo.sr"; ss: "bo.ss"; st: "bo.st"; su: "bo.su"; sv: "bo.sv"; sw: "bo.sw"; sx: "bo.sx"; sy: "bo.sy"; sz: "bo.sz"; ta: "bo.ta"; tb: "bo.tb"; tc: "bo.tc"; td: "bo.td"; te: "bo.te"; tf: "bo.tf"; tg: "bo.tg"; th: "bo.th"; ti: "bo.ti"; tj: "bo.tj"; tk: "bo.tk"; tl: "bo.tl"; tm: "bo.tm"; tn: "bo.tn"; to: "bo.to"; tp: "bo.tp"; tq: "bo.tq"; tr: "bo.tr"; ts: "bo.ts"; tt: "bo.tt"; tu: "bo.tu"; tv: "bo.tv"; tw: "bo.tw"; tx: "bo.tx"; ty: "bo.ty"; tz: "bo.tz"; ua: "bo.ua"; ub: "bo.ub"; uc: "bo.uc"; ud: "bo.ud"; ue: "bo.ue"; uf: "bo.uf"; ug: "bo.ug"; uh: "bo.uh"; ui: "bo.ui"; uj: "bo.uj"; uk: "bo.uk"; ul: "bo.ul"; um: "bo.um"; un: "bo.un"; uo: "bo.uo"; up: "bo.up"; uq: "bo.uq"; ur: "bo.ur"; us: "bo.us"; ut: "bo.ut"; uu: "bo.uu"; uv: "bo.uv"; uw: "bo.uw"; ux: "bo.ux"; uy: "bo.uy"; uz: "bo.uz"; va: "bo.va"; vb: "bo.vb"; vc: "bo.vc"; vd: "bo.vd"; ve: "bo.ve"; vf: "bo.vf"; vg: "bo.vg"; vh: "bo.vh"; vi: "bo.vi"; vj: "bo.vj"; vk: "bo.vk"; vl: "bo.vl"; vm: "bo.vm"; vn: "bo.vn"; vo: "bo.vo"; vp: "bo.vp"; vq: "bo.vq"; vr: "bo.vr"; vs: "bo.vs"; vt: "bo.vt"; vu: "bo.vu"; vv: "bo.vv"; vw: "bo.vw"; vx: "bo.vx"; vy: "bo.vy"; vz: "bo.vz"; wa: "bo.wa"; wb: "bo.wb"; wc: "bo.wc"; wd: "bo.wd"; we: "bo.we"; wf: "bo.wf"; wg: "bo.wg"; wh: "bo.wh"; wi: "bo.wi"; wj: "bo.wj"; wk: "bo.wk"; wl: "bo.wl"; wm: "bo.wm"; wn: "bo.wn"; wo: "bo.wo"; wp: "bo.wp"; wq: "bo.wq"; wr: "bo.wr"; ws: "bo.ws"; wt: "bo.wt"; wu: "bo.wu"; wv: "bo.wv"; ww: "bo.ww"; wx: "bo.wx"; wy: "bo.wy"; wz: "bo.wz"; xa: "bo.xa"; xb: "bo.xb"; xc: "bo.xc"; xd: "bo.xd"; xe: "bo.xe"; xf: "bo.xf"; xg: "bo.xg"; xh: "bo.xh"; xi: "bo.xi"; xj: "bo.xj"; xk: "bo.xk"; xl: "bo.xl"; xm: "bo.xm"; xn: "bo.xn"; xo: "bo.xo"; xp: "bo.xp"; xq: "bo.xq"; xr: "bo.xr"; xs: "bo.xs"; xt: "bo.xt"; xu: "bo.xu"; xv: "bo.xv"; xw: "bo.xw"; xx: "bo.xx"; xy: "bo.xy"; xz: "bo.xz"; ya: "bo.ya"; yb: "bo.yb"; yc: "bo.yc"; yd: "bo.yd"; ye: "bo.ye"; yf: "bo.yf"; yg: "bo.yg"; yh: "bo.yh"; yi: "bo.yi"; yj: "bo.yj"; yk: "bo.yk"; yl: "bo.yl"; ym: "bo.ym"; yn: "bo.yn"; yo: "bo.yo"; yp: "bo.yp"; yq: "bo.yq"; yr: "bo.yr"; ys: "bo.ys"; yt: "bo.yt"; yu: "bo.yu"; yv: "bo.yv"; yw: "bo.yw"; yx: "bo.yx"; yy: "bo.yy"; yz: "bo.yz"; za: "bo.za"; zb: "bo.zb"; zc: "bo.zc"; zd: "bo.zd"; ze: "bo.ze"; zf: "bo.zf"; zg: "bo.zg"; zh: "bo.zh"; zi: "bo.zi"; zj: "bo.zj"; zk: "bo.zk"; zl: "bo.zl"; zm: "bo.zm"; zn: "bo.zn"; zo: "bo.zo"; zp: "bo.zp"; zq: "bo.zq"; zr: "bo.zr"; zs: "bo.zs"; zt: "bo.zt"; zu: "bo.zu"; zv: "bo.zv"; zw: "bo.zw"; zx: "bo.zx"; zy: "bo.zy"; zz: "bo.zz"; }; bp: { aa: "bp.aa"; ab: "bp.ab"; ac: "bp.ac"; ad: "bp.ad"; ae: "bp.ae"; af: "bp.af"; ag: "bp.ag"; ah: "bp.ah"; ai: "bp.ai"; aj: "bp.aj"; ak: "bp.ak"; al: "bp.al"; am: "bp.am"; an: "bp.an"; ao: "bp.ao"; ap: "bp.ap"; aq: "bp.aq"; ar: "bp.ar"; as: "bp.as"; at: "bp.at"; au: "bp.au"; av: "bp.av"; aw: "bp.aw"; ax: "bp.ax"; ay: "bp.ay"; az: "bp.az"; ba: "bp.ba"; bb: "bp.bb"; bc: "bp.bc"; bd: "bp.bd"; be: "bp.be"; bf: "bp.bf"; bg: "bp.bg"; bh: "bp.bh"; bi: "bp.bi"; bj: "bp.bj"; bk: "bp.bk"; bl: "bp.bl"; bm: "bp.bm"; bn: "bp.bn"; bo: "bp.bo"; bp: "bp.bp"; bq: "bp.bq"; br: "bp.br"; bs: "bp.bs"; bt: "bp.bt"; bu: "bp.bu"; bv: "bp.bv"; bw: "bp.bw"; bx: "bp.bx"; by: "bp.by"; bz: "bp.bz"; ca: "bp.ca"; cb: "bp.cb"; cc: "bp.cc"; cd: "bp.cd"; ce: "bp.ce"; cf: "bp.cf"; cg: "bp.cg"; ch: "bp.ch"; ci: "bp.ci"; cj: "bp.cj"; ck: "bp.ck"; cl: "bp.cl"; cm: "bp.cm"; cn: "bp.cn"; co: "bp.co"; cp: "bp.cp"; cq: "bp.cq"; cr: "bp.cr"; cs: "bp.cs"; ct: "bp.ct"; cu: "bp.cu"; cv: "bp.cv"; cw: "bp.cw"; cx: "bp.cx"; cy: "bp.cy"; cz: "bp.cz"; da: "bp.da"; db: "bp.db"; dc: "bp.dc"; dd: "bp.dd"; de: "bp.de"; df: "bp.df"; dg: "bp.dg"; dh: "bp.dh"; di: "bp.di"; dj: "bp.dj"; dk: "bp.dk"; dl: "bp.dl"; dm: "bp.dm"; dn: "bp.dn"; do: "bp.do"; dp: "bp.dp"; dq: "bp.dq"; dr: "bp.dr"; ds: "bp.ds"; dt: "bp.dt"; du: "bp.du"; dv: "bp.dv"; dw: "bp.dw"; dx: "bp.dx"; dy: "bp.dy"; dz: "bp.dz"; ea: "bp.ea"; eb: "bp.eb"; ec: "bp.ec"; ed: "bp.ed"; ee: "bp.ee"; ef: "bp.ef"; eg: "bp.eg"; eh: "bp.eh"; ei: "bp.ei"; ej: "bp.ej"; ek: "bp.ek"; el: "bp.el"; em: "bp.em"; en: "bp.en"; eo: "bp.eo"; ep: "bp.ep"; eq: "bp.eq"; er: "bp.er"; es: "bp.es"; et: "bp.et"; eu: "bp.eu"; ev: "bp.ev"; ew: "bp.ew"; ex: "bp.ex"; ey: "bp.ey"; ez: "bp.ez"; fa: "bp.fa"; fb: "bp.fb"; fc: "bp.fc"; fd: "bp.fd"; fe: "bp.fe"; ff: "bp.ff"; fg: "bp.fg"; fh: "bp.fh"; fi: "bp.fi"; fj: "bp.fj"; fk: "bp.fk"; fl: "bp.fl"; fm: "bp.fm"; fn: "bp.fn"; fo: "bp.fo"; fp: "bp.fp"; fq: "bp.fq"; fr: "bp.fr"; fs: "bp.fs"; ft: "bp.ft"; fu: "bp.fu"; fv: "bp.fv"; fw: "bp.fw"; fx: "bp.fx"; fy: "bp.fy"; fz: "bp.fz"; ga: "bp.ga"; gb: "bp.gb"; gc: "bp.gc"; gd: "bp.gd"; ge: "bp.ge"; gf: "bp.gf"; gg: "bp.gg"; gh: "bp.gh"; gi: "bp.gi"; gj: "bp.gj"; gk: "bp.gk"; gl: "bp.gl"; gm: "bp.gm"; gn: "bp.gn"; go: "bp.go"; gp: "bp.gp"; gq: "bp.gq"; gr: "bp.gr"; gs: "bp.gs"; gt: "bp.gt"; gu: "bp.gu"; gv: "bp.gv"; gw: "bp.gw"; gx: "bp.gx"; gy: "bp.gy"; gz: "bp.gz"; ha: "bp.ha"; hb: "bp.hb"; hc: "bp.hc"; hd: "bp.hd"; he: "bp.he"; hf: "bp.hf"; hg: "bp.hg"; hh: "bp.hh"; hi: "bp.hi"; hj: "bp.hj"; hk: "bp.hk"; hl: "bp.hl"; hm: "bp.hm"; hn: "bp.hn"; ho: "bp.ho"; hp: "bp.hp"; hq: "bp.hq"; hr: "bp.hr"; hs: "bp.hs"; ht: "bp.ht"; hu: "bp.hu"; hv: "bp.hv"; hw: "bp.hw"; hx: "bp.hx"; hy: "bp.hy"; hz: "bp.hz"; ia: "bp.ia"; ib: "bp.ib"; ic: "bp.ic"; id: "bp.id"; ie: "bp.ie"; if: "bp.if"; ig: "bp.ig"; ih: "bp.ih"; ii: "bp.ii"; ij: "bp.ij"; ik: "bp.ik"; il: "bp.il"; im: "bp.im"; in: "bp.in"; io: "bp.io"; ip: "bp.ip"; iq: "bp.iq"; ir: "bp.ir"; is: "bp.is"; it: "bp.it"; iu: "bp.iu"; iv: "bp.iv"; iw: "bp.iw"; ix: "bp.ix"; iy: "bp.iy"; iz: "bp.iz"; ja: "bp.ja"; jb: "bp.jb"; jc: "bp.jc"; jd: "bp.jd"; je: "bp.je"; jf: "bp.jf"; jg: "bp.jg"; jh: "bp.jh"; ji: "bp.ji"; jj: "bp.jj"; jk: "bp.jk"; jl: "bp.jl"; jm: "bp.jm"; jn: "bp.jn"; jo: "bp.jo"; jp: "bp.jp"; jq: "bp.jq"; jr: "bp.jr"; js: "bp.js"; jt: "bp.jt"; ju: "bp.ju"; jv: "bp.jv"; jw: "bp.jw"; jx: "bp.jx"; jy: "bp.jy"; jz: "bp.jz"; ka: "bp.ka"; kb: "bp.kb"; kc: "bp.kc"; kd: "bp.kd"; ke: "bp.ke"; kf: "bp.kf"; kg: "bp.kg"; kh: "bp.kh"; ki: "bp.ki"; kj: "bp.kj"; kk: "bp.kk"; kl: "bp.kl"; km: "bp.km"; kn: "bp.kn"; ko: "bp.ko"; kp: "bp.kp"; kq: "bp.kq"; kr: "bp.kr"; ks: "bp.ks"; kt: "bp.kt"; ku: "bp.ku"; kv: "bp.kv"; kw: "bp.kw"; kx: "bp.kx"; ky: "bp.ky"; kz: "bp.kz"; la: "bp.la"; lb: "bp.lb"; lc: "bp.lc"; ld: "bp.ld"; le: "bp.le"; lf: "bp.lf"; lg: "bp.lg"; lh: "bp.lh"; li: "bp.li"; lj: "bp.lj"; lk: "bp.lk"; ll: "bp.ll"; lm: "bp.lm"; ln: "bp.ln"; lo: "bp.lo"; lp: "bp.lp"; lq: "bp.lq"; lr: "bp.lr"; ls: "bp.ls"; lt: "bp.lt"; lu: "bp.lu"; lv: "bp.lv"; lw: "bp.lw"; lx: "bp.lx"; ly: "bp.ly"; lz: "bp.lz"; ma: "bp.ma"; mb: "bp.mb"; mc: "bp.mc"; md: "bp.md"; me: "bp.me"; mf: "bp.mf"; mg: "bp.mg"; mh: "bp.mh"; mi: "bp.mi"; mj: "bp.mj"; mk: "bp.mk"; ml: "bp.ml"; mm: "bp.mm"; mn: "bp.mn"; mo: "bp.mo"; mp: "bp.mp"; mq: "bp.mq"; mr: "bp.mr"; ms: "bp.ms"; mt: "bp.mt"; mu: "bp.mu"; mv: "bp.mv"; mw: "bp.mw"; mx: "bp.mx"; my: "bp.my"; mz: "bp.mz"; na: "bp.na"; nb: "bp.nb"; nc: "bp.nc"; nd: "bp.nd"; ne: "bp.ne"; nf: "bp.nf"; ng: "bp.ng"; nh: "bp.nh"; ni: "bp.ni"; nj: "bp.nj"; nk: "bp.nk"; nl: "bp.nl"; nm: "bp.nm"; nn: "bp.nn"; no: "bp.no"; np: "bp.np"; nq: "bp.nq"; nr: "bp.nr"; ns: "bp.ns"; nt: "bp.nt"; nu: "bp.nu"; nv: "bp.nv"; nw: "bp.nw"; nx: "bp.nx"; ny: "bp.ny"; nz: "bp.nz"; oa: "bp.oa"; ob: "bp.ob"; oc: "bp.oc"; od: "bp.od"; oe: "bp.oe"; of: "bp.of"; og: "bp.og"; oh: "bp.oh"; oi: "bp.oi"; oj: "bp.oj"; ok: "bp.ok"; ol: "bp.ol"; om: "bp.om"; on: "bp.on"; oo: "bp.oo"; op: "bp.op"; oq: "bp.oq"; or: "bp.or"; os: "bp.os"; ot: "bp.ot"; ou: "bp.ou"; ov: "bp.ov"; ow: "bp.ow"; ox: "bp.ox"; oy: "bp.oy"; oz: "bp.oz"; pa: "bp.pa"; pb: "bp.pb"; pc: "bp.pc"; pd: "bp.pd"; pe: "bp.pe"; pf: "bp.pf"; pg: "bp.pg"; ph: "bp.ph"; pi: "bp.pi"; pj: "bp.pj"; pk: "bp.pk"; pl: "bp.pl"; pm: "bp.pm"; pn: "bp.pn"; po: "bp.po"; pp: "bp.pp"; pq: "bp.pq"; pr: "bp.pr"; ps: "bp.ps"; pt: "bp.pt"; pu: "bp.pu"; pv: "bp.pv"; pw: "bp.pw"; px: "bp.px"; py: "bp.py"; pz: "bp.pz"; qa: "bp.qa"; qb: "bp.qb"; qc: "bp.qc"; qd: "bp.qd"; qe: "bp.qe"; qf: "bp.qf"; qg: "bp.qg"; qh: "bp.qh"; qi: "bp.qi"; qj: "bp.qj"; qk: "bp.qk"; ql: "bp.ql"; qm: "bp.qm"; qn: "bp.qn"; qo: "bp.qo"; qp: "bp.qp"; qq: "bp.qq"; qr: "bp.qr"; qs: "bp.qs"; qt: "bp.qt"; qu: "bp.qu"; qv: "bp.qv"; qw: "bp.qw"; qx: "bp.qx"; qy: "bp.qy"; qz: "bp.qz"; ra: "bp.ra"; rb: "bp.rb"; rc: "bp.rc"; rd: "bp.rd"; re: "bp.re"; rf: "bp.rf"; rg: "bp.rg"; rh: "bp.rh"; ri: "bp.ri"; rj: "bp.rj"; rk: "bp.rk"; rl: "bp.rl"; rm: "bp.rm"; rn: "bp.rn"; ro: "bp.ro"; rp: "bp.rp"; rq: "bp.rq"; rr: "bp.rr"; rs: "bp.rs"; rt: "bp.rt"; ru: "bp.ru"; rv: "bp.rv"; rw: "bp.rw"; rx: "bp.rx"; ry: "bp.ry"; rz: "bp.rz"; sa: "bp.sa"; sb: "bp.sb"; sc: "bp.sc"; sd: "bp.sd"; se: "bp.se"; sf: "bp.sf"; sg: "bp.sg"; sh: "bp.sh"; si: "bp.si"; sj: "bp.sj"; sk: "bp.sk"; sl: "bp.sl"; sm: "bp.sm"; sn: "bp.sn"; so: "bp.so"; sp: "bp.sp"; sq: "bp.sq"; sr: "bp.sr"; ss: "bp.ss"; st: "bp.st"; su: "bp.su"; sv: "bp.sv"; sw: "bp.sw"; sx: "bp.sx"; sy: "bp.sy"; sz: "bp.sz"; ta: "bp.ta"; tb: "bp.tb"; tc: "bp.tc"; td: "bp.td"; te: "bp.te"; tf: "bp.tf"; tg: "bp.tg"; th: "bp.th"; ti: "bp.ti"; tj: "bp.tj"; tk: "bp.tk"; tl: "bp.tl"; tm: "bp.tm"; tn: "bp.tn"; to: "bp.to"; tp: "bp.tp"; tq: "bp.tq"; tr: "bp.tr"; ts: "bp.ts"; tt: "bp.tt"; tu: "bp.tu"; tv: "bp.tv"; tw: "bp.tw"; tx: "bp.tx"; ty: "bp.ty"; tz: "bp.tz"; ua: "bp.ua"; ub: "bp.ub"; uc: "bp.uc"; ud: "bp.ud"; ue: "bp.ue"; uf: "bp.uf"; ug: "bp.ug"; uh: "bp.uh"; ui: "bp.ui"; uj: "bp.uj"; uk: "bp.uk"; ul: "bp.ul"; um: "bp.um"; un: "bp.un"; uo: "bp.uo"; up: "bp.up"; uq: "bp.uq"; ur: "bp.ur"; us: "bp.us"; ut: "bp.ut"; uu: "bp.uu"; uv: "bp.uv"; uw: "bp.uw"; ux: "bp.ux"; uy: "bp.uy"; uz: "bp.uz"; va: "bp.va"; vb: "bp.vb"; vc: "bp.vc"; vd: "bp.vd"; ve: "bp.ve"; vf: "bp.vf"; vg: "bp.vg"; vh: "bp.vh"; vi: "bp.vi"; vj: "bp.vj"; vk: "bp.vk"; vl: "bp.vl"; vm: "bp.vm"; vn: "bp.vn"; vo: "bp.vo"; vp: "bp.vp"; vq: "bp.vq"; vr: "bp.vr"; vs: "bp.vs"; vt: "bp.vt"; vu: "bp.vu"; vv: "bp.vv"; vw: "bp.vw"; vx: "bp.vx"; vy: "bp.vy"; vz: "bp.vz"; wa: "bp.wa"; wb: "bp.wb"; wc: "bp.wc"; wd: "bp.wd"; we: "bp.we"; wf: "bp.wf"; wg: "bp.wg"; wh: "bp.wh"; wi: "bp.wi"; wj: "bp.wj"; wk: "bp.wk"; wl: "bp.wl"; wm: "bp.wm"; wn: "bp.wn"; wo: "bp.wo"; wp: "bp.wp"; wq: "bp.wq"; wr: "bp.wr"; ws: "bp.ws"; wt: "bp.wt"; wu: "bp.wu"; wv: "bp.wv"; ww: "bp.ww"; wx: "bp.wx"; wy: "bp.wy"; wz: "bp.wz"; xa: "bp.xa"; xb: "bp.xb"; xc: "bp.xc"; xd: "bp.xd"; xe: "bp.xe"; xf: "bp.xf"; xg: "bp.xg"; xh: "bp.xh"; xi: "bp.xi"; xj: "bp.xj"; xk: "bp.xk"; xl: "bp.xl"; xm: "bp.xm"; xn: "bp.xn"; xo: "bp.xo"; xp: "bp.xp"; xq: "bp.xq"; xr: "bp.xr"; xs: "bp.xs"; xt: "bp.xt"; xu: "bp.xu"; xv: "bp.xv"; xw: "bp.xw"; xx: "bp.xx"; xy: "bp.xy"; xz: "bp.xz"; ya: "bp.ya"; yb: "bp.yb"; yc: "bp.yc"; yd: "bp.yd"; ye: "bp.ye"; yf: "bp.yf"; yg: "bp.yg"; yh: "bp.yh"; yi: "bp.yi"; yj: "bp.yj"; yk: "bp.yk"; yl: "bp.yl"; ym: "bp.ym"; yn: "bp.yn"; yo: "bp.yo"; yp: "bp.yp"; yq: "bp.yq"; yr: "bp.yr"; ys: "bp.ys"; yt: "bp.yt"; yu: "bp.yu"; yv: "bp.yv"; yw: "bp.yw"; yx: "bp.yx"; yy: "bp.yy"; yz: "bp.yz"; za: "bp.za"; zb: "bp.zb"; zc: "bp.zc"; zd: "bp.zd"; ze: "bp.ze"; zf: "bp.zf"; zg: "bp.zg"; zh: "bp.zh"; zi: "bp.zi"; zj: "bp.zj"; zk: "bp.zk"; zl: "bp.zl"; zm: "bp.zm"; zn: "bp.zn"; zo: "bp.zo"; zp: "bp.zp"; zq: "bp.zq"; zr: "bp.zr"; zs: "bp.zs"; zt: "bp.zt"; zu: "bp.zu"; zv: "bp.zv"; zw: "bp.zw"; zx: "bp.zx"; zy: "bp.zy"; zz: "bp.zz"; }; bq: { aa: "bq.aa"; ab: "bq.ab"; ac: "bq.ac"; ad: "bq.ad"; ae: "bq.ae"; af: "bq.af"; ag: "bq.ag"; ah: "bq.ah"; ai: "bq.ai"; aj: "bq.aj"; ak: "bq.ak"; al: "bq.al"; am: "bq.am"; an: "bq.an"; ao: "bq.ao"; ap: "bq.ap"; aq: "bq.aq"; ar: "bq.ar"; as: "bq.as"; at: "bq.at"; au: "bq.au"; av: "bq.av"; aw: "bq.aw"; ax: "bq.ax"; ay: "bq.ay"; az: "bq.az"; ba: "bq.ba"; bb: "bq.bb"; bc: "bq.bc"; bd: "bq.bd"; be: "bq.be"; bf: "bq.bf"; bg: "bq.bg"; bh: "bq.bh"; bi: "bq.bi"; bj: "bq.bj"; bk: "bq.bk"; bl: "bq.bl"; bm: "bq.bm"; bn: "bq.bn"; bo: "bq.bo"; bp: "bq.bp"; bq: "bq.bq"; br: "bq.br"; bs: "bq.bs"; bt: "bq.bt"; bu: "bq.bu"; bv: "bq.bv"; bw: "bq.bw"; bx: "bq.bx"; by: "bq.by"; bz: "bq.bz"; ca: "bq.ca"; cb: "bq.cb"; cc: "bq.cc"; cd: "bq.cd"; ce: "bq.ce"; cf: "bq.cf"; cg: "bq.cg"; ch: "bq.ch"; ci: "bq.ci"; cj: "bq.cj"; ck: "bq.ck"; cl: "bq.cl"; cm: "bq.cm"; cn: "bq.cn"; co: "bq.co"; cp: "bq.cp"; cq: "bq.cq"; cr: "bq.cr"; cs: "bq.cs"; ct: "bq.ct"; cu: "bq.cu"; cv: "bq.cv"; cw: "bq.cw"; cx: "bq.cx"; cy: "bq.cy"; cz: "bq.cz"; da: "bq.da"; db: "bq.db"; dc: "bq.dc"; dd: "bq.dd"; de: "bq.de"; df: "bq.df"; dg: "bq.dg"; dh: "bq.dh"; di: "bq.di"; dj: "bq.dj"; dk: "bq.dk"; dl: "bq.dl"; dm: "bq.dm"; dn: "bq.dn"; do: "bq.do"; dp: "bq.dp"; dq: "bq.dq"; dr: "bq.dr"; ds: "bq.ds"; dt: "bq.dt"; du: "bq.du"; dv: "bq.dv"; dw: "bq.dw"; dx: "bq.dx"; dy: "bq.dy"; dz: "bq.dz"; ea: "bq.ea"; eb: "bq.eb"; ec: "bq.ec"; ed: "bq.ed"; ee: "bq.ee"; ef: "bq.ef"; eg: "bq.eg"; eh: "bq.eh"; ei: "bq.ei"; ej: "bq.ej"; ek: "bq.ek"; el: "bq.el"; em: "bq.em"; en: "bq.en"; eo: "bq.eo"; ep: "bq.ep"; eq: "bq.eq"; er: "bq.er"; es: "bq.es"; et: "bq.et"; eu: "bq.eu"; ev: "bq.ev"; ew: "bq.ew"; ex: "bq.ex"; ey: "bq.ey"; ez: "bq.ez"; fa: "bq.fa"; fb: "bq.fb"; fc: "bq.fc"; fd: "bq.fd"; fe: "bq.fe"; ff: "bq.ff"; fg: "bq.fg"; fh: "bq.fh"; fi: "bq.fi"; fj: "bq.fj"; fk: "bq.fk"; fl: "bq.fl"; fm: "bq.fm"; fn: "bq.fn"; fo: "bq.fo"; fp: "bq.fp"; fq: "bq.fq"; fr: "bq.fr"; fs: "bq.fs"; ft: "bq.ft"; fu: "bq.fu"; fv: "bq.fv"; fw: "bq.fw"; fx: "bq.fx"; fy: "bq.fy"; fz: "bq.fz"; ga: "bq.ga"; gb: "bq.gb"; gc: "bq.gc"; gd: "bq.gd"; ge: "bq.ge"; gf: "bq.gf"; gg: "bq.gg"; gh: "bq.gh"; gi: "bq.gi"; gj: "bq.gj"; gk: "bq.gk"; gl: "bq.gl"; gm: "bq.gm"; gn: "bq.gn"; go: "bq.go"; gp: "bq.gp"; gq: "bq.gq"; gr: "bq.gr"; gs: "bq.gs"; gt: "bq.gt"; gu: "bq.gu"; gv: "bq.gv"; gw: "bq.gw"; gx: "bq.gx"; gy: "bq.gy"; gz: "bq.gz"; ha: "bq.ha"; hb: "bq.hb"; hc: "bq.hc"; hd: "bq.hd"; he: "bq.he"; hf: "bq.hf"; hg: "bq.hg"; hh: "bq.hh"; hi: "bq.hi"; hj: "bq.hj"; hk: "bq.hk"; hl: "bq.hl"; hm: "bq.hm"; hn: "bq.hn"; ho: "bq.ho"; hp: "bq.hp"; hq: "bq.hq"; hr: "bq.hr"; hs: "bq.hs"; ht: "bq.ht"; hu: "bq.hu"; hv: "bq.hv"; hw: "bq.hw"; hx: "bq.hx"; hy: "bq.hy"; hz: "bq.hz"; ia: "bq.ia"; ib: "bq.ib"; ic: "bq.ic"; id: "bq.id"; ie: "bq.ie"; if: "bq.if"; ig: "bq.ig"; ih: "bq.ih"; ii: "bq.ii"; ij: "bq.ij"; ik: "bq.ik"; il: "bq.il"; im: "bq.im"; in: "bq.in"; io: "bq.io"; ip: "bq.ip"; iq: "bq.iq"; ir: "bq.ir"; is: "bq.is"; it: "bq.it"; iu: "bq.iu"; iv: "bq.iv"; iw: "bq.iw"; ix: "bq.ix"; iy: "bq.iy"; iz: "bq.iz"; ja: "bq.ja"; jb: "bq.jb"; jc: "bq.jc"; jd: "bq.jd"; je: "bq.je"; jf: "bq.jf"; jg: "bq.jg"; jh: "bq.jh"; ji: "bq.ji"; jj: "bq.jj"; jk: "bq.jk"; jl: "bq.jl"; jm: "bq.jm"; jn: "bq.jn"; jo: "bq.jo"; jp: "bq.jp"; jq: "bq.jq"; jr: "bq.jr"; js: "bq.js"; jt: "bq.jt"; ju: "bq.ju"; jv: "bq.jv"; jw: "bq.jw"; jx: "bq.jx"; jy: "bq.jy"; jz: "bq.jz"; ka: "bq.ka"; kb: "bq.kb"; kc: "bq.kc"; kd: "bq.kd"; ke: "bq.ke"; kf: "bq.kf"; kg: "bq.kg"; kh: "bq.kh"; ki: "bq.ki"; kj: "bq.kj"; kk: "bq.kk"; kl: "bq.kl"; km: "bq.km"; kn: "bq.kn"; ko: "bq.ko"; kp: "bq.kp"; kq: "bq.kq"; kr: "bq.kr"; ks: "bq.ks"; kt: "bq.kt"; ku: "bq.ku"; kv: "bq.kv"; kw: "bq.kw"; kx: "bq.kx"; ky: "bq.ky"; kz: "bq.kz"; la: "bq.la"; lb: "bq.lb"; lc: "bq.lc"; ld: "bq.ld"; le: "bq.le"; lf: "bq.lf"; lg: "bq.lg"; lh: "bq.lh"; li: "bq.li"; lj: "bq.lj"; lk: "bq.lk"; ll: "bq.ll"; lm: "bq.lm"; ln: "bq.ln"; lo: "bq.lo"; lp: "bq.lp"; lq: "bq.lq"; lr: "bq.lr"; ls: "bq.ls"; lt: "bq.lt"; lu: "bq.lu"; lv: "bq.lv"; lw: "bq.lw"; lx: "bq.lx"; ly: "bq.ly"; lz: "bq.lz"; ma: "bq.ma"; mb: "bq.mb"; mc: "bq.mc"; md: "bq.md"; me: "bq.me"; mf: "bq.mf"; mg: "bq.mg"; mh: "bq.mh"; mi: "bq.mi"; mj: "bq.mj"; mk: "bq.mk"; ml: "bq.ml"; mm: "bq.mm"; mn: "bq.mn"; mo: "bq.mo"; mp: "bq.mp"; mq: "bq.mq"; mr: "bq.mr"; ms: "bq.ms"; mt: "bq.mt"; mu: "bq.mu"; mv: "bq.mv"; mw: "bq.mw"; mx: "bq.mx"; my: "bq.my"; mz: "bq.mz"; na: "bq.na"; nb: "bq.nb"; nc: "bq.nc"; nd: "bq.nd"; ne: "bq.ne"; nf: "bq.nf"; ng: "bq.ng"; nh: "bq.nh"; ni: "bq.ni"; nj: "bq.nj"; nk: "bq.nk"; nl: "bq.nl"; nm: "bq.nm"; nn: "bq.nn"; no: "bq.no"; np: "bq.np"; nq: "bq.nq"; nr: "bq.nr"; ns: "bq.ns"; nt: "bq.nt"; nu: "bq.nu"; nv: "bq.nv"; nw: "bq.nw"; nx: "bq.nx"; ny: "bq.ny"; nz: "bq.nz"; oa: "bq.oa"; ob: "bq.ob"; oc: "bq.oc"; od: "bq.od"; oe: "bq.oe"; of: "bq.of"; og: "bq.og"; oh: "bq.oh"; oi: "bq.oi"; oj: "bq.oj"; ok: "bq.ok"; ol: "bq.ol"; om: "bq.om"; on: "bq.on"; oo: "bq.oo"; op: "bq.op"; oq: "bq.oq"; or: "bq.or"; os: "bq.os"; ot: "bq.ot"; ou: "bq.ou"; ov: "bq.ov"; ow: "bq.ow"; ox: "bq.ox"; oy: "bq.oy"; oz: "bq.oz"; pa: "bq.pa"; pb: "bq.pb"; pc: "bq.pc"; pd: "bq.pd"; pe: "bq.pe"; pf: "bq.pf"; pg: "bq.pg"; ph: "bq.ph"; pi: "bq.pi"; pj: "bq.pj"; pk: "bq.pk"; pl: "bq.pl"; pm: "bq.pm"; pn: "bq.pn"; po: "bq.po"; pp: "bq.pp"; pq: "bq.pq"; pr: "bq.pr"; ps: "bq.ps"; pt: "bq.pt"; pu: "bq.pu"; pv: "bq.pv"; pw: "bq.pw"; px: "bq.px"; py: "bq.py"; pz: "bq.pz"; qa: "bq.qa"; qb: "bq.qb"; qc: "bq.qc"; qd: "bq.qd"; qe: "bq.qe"; qf: "bq.qf"; qg: "bq.qg"; qh: "bq.qh"; qi: "bq.qi"; qj: "bq.qj"; qk: "bq.qk"; ql: "bq.ql"; qm: "bq.qm"; qn: "bq.qn"; qo: "bq.qo"; qp: "bq.qp"; qq: "bq.qq"; qr: "bq.qr"; qs: "bq.qs"; qt: "bq.qt"; qu: "bq.qu"; qv: "bq.qv"; qw: "bq.qw"; qx: "bq.qx"; qy: "bq.qy"; qz: "bq.qz"; ra: "bq.ra"; rb: "bq.rb"; rc: "bq.rc"; rd: "bq.rd"; re: "bq.re"; rf: "bq.rf"; rg: "bq.rg"; rh: "bq.rh"; ri: "bq.ri"; rj: "bq.rj"; rk: "bq.rk"; rl: "bq.rl"; rm: "bq.rm"; rn: "bq.rn"; ro: "bq.ro"; rp: "bq.rp"; rq: "bq.rq"; rr: "bq.rr"; rs: "bq.rs"; rt: "bq.rt"; ru: "bq.ru"; rv: "bq.rv"; rw: "bq.rw"; rx: "bq.rx"; ry: "bq.ry"; rz: "bq.rz"; sa: "bq.sa"; sb: "bq.sb"; sc: "bq.sc"; sd: "bq.sd"; se: "bq.se"; sf: "bq.sf"; sg: "bq.sg"; sh: "bq.sh"; si: "bq.si"; sj: "bq.sj"; sk: "bq.sk"; sl: "bq.sl"; sm: "bq.sm"; sn: "bq.sn"; so: "bq.so"; sp: "bq.sp"; sq: "bq.sq"; sr: "bq.sr"; ss: "bq.ss"; st: "bq.st"; su: "bq.su"; sv: "bq.sv"; sw: "bq.sw"; sx: "bq.sx"; sy: "bq.sy"; sz: "bq.sz"; ta: "bq.ta"; tb: "bq.tb"; tc: "bq.tc"; td: "bq.td"; te: "bq.te"; tf: "bq.tf"; tg: "bq.tg"; th: "bq.th"; ti: "bq.ti"; tj: "bq.tj"; tk: "bq.tk"; tl: "bq.tl"; tm: "bq.tm"; tn: "bq.tn"; to: "bq.to"; tp: "bq.tp"; tq: "bq.tq"; tr: "bq.tr"; ts: "bq.ts"; tt: "bq.tt"; tu: "bq.tu"; tv: "bq.tv"; tw: "bq.tw"; tx: "bq.tx"; ty: "bq.ty"; tz: "bq.tz"; ua: "bq.ua"; ub: "bq.ub"; uc: "bq.uc"; ud: "bq.ud"; ue: "bq.ue"; uf: "bq.uf"; ug: "bq.ug"; uh: "bq.uh"; ui: "bq.ui"; uj: "bq.uj"; uk: "bq.uk"; ul: "bq.ul"; um: "bq.um"; un: "bq.un"; uo: "bq.uo"; up: "bq.up"; uq: "bq.uq"; ur: "bq.ur"; us: "bq.us"; ut: "bq.ut"; uu: "bq.uu"; uv: "bq.uv"; uw: "bq.uw"; ux: "bq.ux"; uy: "bq.uy"; uz: "bq.uz"; va: "bq.va"; vb: "bq.vb"; vc: "bq.vc"; vd: "bq.vd"; ve: "bq.ve"; vf: "bq.vf"; vg: "bq.vg"; vh: "bq.vh"; vi: "bq.vi"; vj: "bq.vj"; vk: "bq.vk"; vl: "bq.vl"; vm: "bq.vm"; vn: "bq.vn"; vo: "bq.vo"; vp: "bq.vp"; vq: "bq.vq"; vr: "bq.vr"; vs: "bq.vs"; vt: "bq.vt"; vu: "bq.vu"; vv: "bq.vv"; vw: "bq.vw"; vx: "bq.vx"; vy: "bq.vy"; vz: "bq.vz"; wa: "bq.wa"; wb: "bq.wb"; wc: "bq.wc"; wd: "bq.wd"; we: "bq.we"; wf: "bq.wf"; wg: "bq.wg"; wh: "bq.wh"; wi: "bq.wi"; wj: "bq.wj"; wk: "bq.wk"; wl: "bq.wl"; wm: "bq.wm"; wn: "bq.wn"; wo: "bq.wo"; wp: "bq.wp"; wq: "bq.wq"; wr: "bq.wr"; ws: "bq.ws"; wt: "bq.wt"; wu: "bq.wu"; wv: "bq.wv"; ww: "bq.ww"; wx: "bq.wx"; wy: "bq.wy"; wz: "bq.wz"; xa: "bq.xa"; xb: "bq.xb"; xc: "bq.xc"; xd: "bq.xd"; xe: "bq.xe"; xf: "bq.xf"; xg: "bq.xg"; xh: "bq.xh"; xi: "bq.xi"; xj: "bq.xj"; xk: "bq.xk"; xl: "bq.xl"; xm: "bq.xm"; xn: "bq.xn"; xo: "bq.xo"; xp: "bq.xp"; xq: "bq.xq"; xr: "bq.xr"; xs: "bq.xs"; xt: "bq.xt"; xu: "bq.xu"; xv: "bq.xv"; xw: "bq.xw"; xx: "bq.xx"; xy: "bq.xy"; xz: "bq.xz"; ya: "bq.ya"; yb: "bq.yb"; yc: "bq.yc"; yd: "bq.yd"; ye: "bq.ye"; yf: "bq.yf"; yg: "bq.yg"; yh: "bq.yh"; yi: "bq.yi"; yj: "bq.yj"; yk: "bq.yk"; yl: "bq.yl"; ym: "bq.ym"; yn: "bq.yn"; yo: "bq.yo"; yp: "bq.yp"; yq: "bq.yq"; yr: "bq.yr"; ys: "bq.ys"; yt: "bq.yt"; yu: "bq.yu"; yv: "bq.yv"; yw: "bq.yw"; yx: "bq.yx"; yy: "bq.yy"; yz: "bq.yz"; za: "bq.za"; zb: "bq.zb"; zc: "bq.zc"; zd: "bq.zd"; ze: "bq.ze"; zf: "bq.zf"; zg: "bq.zg"; zh: "bq.zh"; zi: "bq.zi"; zj: "bq.zj"; zk: "bq.zk"; zl: "bq.zl"; zm: "bq.zm"; zn: "bq.zn"; zo: "bq.zo"; zp: "bq.zp"; zq: "bq.zq"; zr: "bq.zr"; zs: "bq.zs"; zt: "bq.zt"; zu: "bq.zu"; zv: "bq.zv"; zw: "bq.zw"; zx: "bq.zx"; zy: "bq.zy"; zz: "bq.zz"; }; br: { aa: "br.aa"; ab: "br.ab"; ac: "br.ac"; ad: "br.ad"; ae: "br.ae"; af: "br.af"; ag: "br.ag"; ah: "br.ah"; ai: "br.ai"; aj: "br.aj"; ak: "br.ak"; al: "br.al"; am: "br.am"; an: "br.an"; ao: "br.ao"; ap: "br.ap"; aq: "br.aq"; ar: "br.ar"; as: "br.as"; at: "br.at"; au: "br.au"; av: "br.av"; aw: "br.aw"; ax: "br.ax"; ay: "br.ay"; az: "br.az"; ba: "br.ba"; bb: "br.bb"; bc: "br.bc"; bd: "br.bd"; be: "br.be"; bf: "br.bf"; bg: "br.bg"; bh: "br.bh"; bi: "br.bi"; bj: "br.bj"; bk: "br.bk"; bl: "br.bl"; bm: "br.bm"; bn: "br.bn"; bo: "br.bo"; bp: "br.bp"; bq: "br.bq"; br: "br.br"; bs: "br.bs"; bt: "br.bt"; bu: "br.bu"; bv: "br.bv"; bw: "br.bw"; bx: "br.bx"; by: "br.by"; bz: "br.bz"; ca: "br.ca"; cb: "br.cb"; cc: "br.cc"; cd: "br.cd"; ce: "br.ce"; cf: "br.cf"; cg: "br.cg"; ch: "br.ch"; ci: "br.ci"; cj: "br.cj"; ck: "br.ck"; cl: "br.cl"; cm: "br.cm"; cn: "br.cn"; co: "br.co"; cp: "br.cp"; cq: "br.cq"; cr: "br.cr"; cs: "br.cs"; ct: "br.ct"; cu: "br.cu"; cv: "br.cv"; cw: "br.cw"; cx: "br.cx"; cy: "br.cy"; cz: "br.cz"; da: "br.da"; db: "br.db"; dc: "br.dc"; dd: "br.dd"; de: "br.de"; df: "br.df"; dg: "br.dg"; dh: "br.dh"; di: "br.di"; dj: "br.dj"; dk: "br.dk"; dl: "br.dl"; dm: "br.dm"; dn: "br.dn"; do: "br.do"; dp: "br.dp"; dq: "br.dq"; dr: "br.dr"; ds: "br.ds"; dt: "br.dt"; du: "br.du"; dv: "br.dv"; dw: "br.dw"; dx: "br.dx"; dy: "br.dy"; dz: "br.dz"; ea: "br.ea"; eb: "br.eb"; ec: "br.ec"; ed: "br.ed"; ee: "br.ee"; ef: "br.ef"; eg: "br.eg"; eh: "br.eh"; ei: "br.ei"; ej: "br.ej"; ek: "br.ek"; el: "br.el"; em: "br.em"; en: "br.en"; eo: "br.eo"; ep: "br.ep"; eq: "br.eq"; er: "br.er"; es: "br.es"; et: "br.et"; eu: "br.eu"; ev: "br.ev"; ew: "br.ew"; ex: "br.ex"; ey: "br.ey"; ez: "br.ez"; fa: "br.fa"; fb: "br.fb"; fc: "br.fc"; fd: "br.fd"; fe: "br.fe"; ff: "br.ff"; fg: "br.fg"; fh: "br.fh"; fi: "br.fi"; fj: "br.fj"; fk: "br.fk"; fl: "br.fl"; fm: "br.fm"; fn: "br.fn"; fo: "br.fo"; fp: "br.fp"; fq: "br.fq"; fr: "br.fr"; fs: "br.fs"; ft: "br.ft"; fu: "br.fu"; fv: "br.fv"; fw: "br.fw"; fx: "br.fx"; fy: "br.fy"; fz: "br.fz"; ga: "br.ga"; gb: "br.gb"; gc: "br.gc"; gd: "br.gd"; ge: "br.ge"; gf: "br.gf"; gg: "br.gg"; gh: "br.gh"; gi: "br.gi"; gj: "br.gj"; gk: "br.gk"; gl: "br.gl"; gm: "br.gm"; gn: "br.gn"; go: "br.go"; gp: "br.gp"; gq: "br.gq"; gr: "br.gr"; gs: "br.gs"; gt: "br.gt"; gu: "br.gu"; gv: "br.gv"; gw: "br.gw"; gx: "br.gx"; gy: "br.gy"; gz: "br.gz"; ha: "br.ha"; hb: "br.hb"; hc: "br.hc"; hd: "br.hd"; he: "br.he"; hf: "br.hf"; hg: "br.hg"; hh: "br.hh"; hi: "br.hi"; hj: "br.hj"; hk: "br.hk"; hl: "br.hl"; hm: "br.hm"; hn: "br.hn"; ho: "br.ho"; hp: "br.hp"; hq: "br.hq"; hr: "br.hr"; hs: "br.hs"; ht: "br.ht"; hu: "br.hu"; hv: "br.hv"; hw: "br.hw"; hx: "br.hx"; hy: "br.hy"; hz: "br.hz"; ia: "br.ia"; ib: "br.ib"; ic: "br.ic"; id: "br.id"; ie: "br.ie"; if: "br.if"; ig: "br.ig"; ih: "br.ih"; ii: "br.ii"; ij: "br.ij"; ik: "br.ik"; il: "br.il"; im: "br.im"; in: "br.in"; io: "br.io"; ip: "br.ip"; iq: "br.iq"; ir: "br.ir"; is: "br.is"; it: "br.it"; iu: "br.iu"; iv: "br.iv"; iw: "br.iw"; ix: "br.ix"; iy: "br.iy"; iz: "br.iz"; ja: "br.ja"; jb: "br.jb"; jc: "br.jc"; jd: "br.jd"; je: "br.je"; jf: "br.jf"; jg: "br.jg"; jh: "br.jh"; ji: "br.ji"; jj: "br.jj"; jk: "br.jk"; jl: "br.jl"; jm: "br.jm"; jn: "br.jn"; jo: "br.jo"; jp: "br.jp"; jq: "br.jq"; jr: "br.jr"; js: "br.js"; jt: "br.jt"; ju: "br.ju"; jv: "br.jv"; jw: "br.jw"; jx: "br.jx"; jy: "br.jy"; jz: "br.jz"; ka: "br.ka"; kb: "br.kb"; kc: "br.kc"; kd: "br.kd"; ke: "br.ke"; kf: "br.kf"; kg: "br.kg"; kh: "br.kh"; ki: "br.ki"; kj: "br.kj"; kk: "br.kk"; kl: "br.kl"; km: "br.km"; kn: "br.kn"; ko: "br.ko"; kp: "br.kp"; kq: "br.kq"; kr: "br.kr"; ks: "br.ks"; kt: "br.kt"; ku: "br.ku"; kv: "br.kv"; kw: "br.kw"; kx: "br.kx"; ky: "br.ky"; kz: "br.kz"; la: "br.la"; lb: "br.lb"; lc: "br.lc"; ld: "br.ld"; le: "br.le"; lf: "br.lf"; lg: "br.lg"; lh: "br.lh"; li: "br.li"; lj: "br.lj"; lk: "br.lk"; ll: "br.ll"; lm: "br.lm"; ln: "br.ln"; lo: "br.lo"; lp: "br.lp"; lq: "br.lq"; lr: "br.lr"; ls: "br.ls"; lt: "br.lt"; lu: "br.lu"; lv: "br.lv"; lw: "br.lw"; lx: "br.lx"; ly: "br.ly"; lz: "br.lz"; ma: "br.ma"; mb: "br.mb"; mc: "br.mc"; md: "br.md"; me: "br.me"; mf: "br.mf"; mg: "br.mg"; mh: "br.mh"; mi: "br.mi"; mj: "br.mj"; mk: "br.mk"; ml: "br.ml"; mm: "br.mm"; mn: "br.mn"; mo: "br.mo"; mp: "br.mp"; mq: "br.mq"; mr: "br.mr"; ms: "br.ms"; mt: "br.mt"; mu: "br.mu"; mv: "br.mv"; mw: "br.mw"; mx: "br.mx"; my: "br.my"; mz: "br.mz"; na: "br.na"; nb: "br.nb"; nc: "br.nc"; nd: "br.nd"; ne: "br.ne"; nf: "br.nf"; ng: "br.ng"; nh: "br.nh"; ni: "br.ni"; nj: "br.nj"; nk: "br.nk"; nl: "br.nl"; nm: "br.nm"; nn: "br.nn"; no: "br.no"; np: "br.np"; nq: "br.nq"; nr: "br.nr"; ns: "br.ns"; nt: "br.nt"; nu: "br.nu"; nv: "br.nv"; nw: "br.nw"; nx: "br.nx"; ny: "br.ny"; nz: "br.nz"; oa: "br.oa"; ob: "br.ob"; oc: "br.oc"; od: "br.od"; oe: "br.oe"; of: "br.of"; og: "br.og"; oh: "br.oh"; oi: "br.oi"; oj: "br.oj"; ok: "br.ok"; ol: "br.ol"; om: "br.om"; on: "br.on"; oo: "br.oo"; op: "br.op"; oq: "br.oq"; or: "br.or"; os: "br.os"; ot: "br.ot"; ou: "br.ou"; ov: "br.ov"; ow: "br.ow"; ox: "br.ox"; oy: "br.oy"; oz: "br.oz"; pa: "br.pa"; pb: "br.pb"; pc: "br.pc"; pd: "br.pd"; pe: "br.pe"; pf: "br.pf"; pg: "br.pg"; ph: "br.ph"; pi: "br.pi"; pj: "br.pj"; pk: "br.pk"; pl: "br.pl"; pm: "br.pm"; pn: "br.pn"; po: "br.po"; pp: "br.pp"; pq: "br.pq"; pr: "br.pr"; ps: "br.ps"; pt: "br.pt"; pu: "br.pu"; pv: "br.pv"; pw: "br.pw"; px: "br.px"; py: "br.py"; pz: "br.pz"; qa: "br.qa"; qb: "br.qb"; qc: "br.qc"; qd: "br.qd"; qe: "br.qe"; qf: "br.qf"; qg: "br.qg"; qh: "br.qh"; qi: "br.qi"; qj: "br.qj"; qk: "br.qk"; ql: "br.ql"; qm: "br.qm"; qn: "br.qn"; qo: "br.qo"; qp: "br.qp"; qq: "br.qq"; qr: "br.qr"; qs: "br.qs"; qt: "br.qt"; qu: "br.qu"; qv: "br.qv"; qw: "br.qw"; qx: "br.qx"; qy: "br.qy"; qz: "br.qz"; ra: "br.ra"; rb: "br.rb"; rc: "br.rc"; rd: "br.rd"; re: "br.re"; rf: "br.rf"; rg: "br.rg"; rh: "br.rh"; ri: "br.ri"; rj: "br.rj"; rk: "br.rk"; rl: "br.rl"; rm: "br.rm"; rn: "br.rn"; ro: "br.ro"; rp: "br.rp"; rq: "br.rq"; rr: "br.rr"; rs: "br.rs"; rt: "br.rt"; ru: "br.ru"; rv: "br.rv"; rw: "br.rw"; rx: "br.rx"; ry: "br.ry"; rz: "br.rz"; sa: "br.sa"; sb: "br.sb"; sc: "br.sc"; sd: "br.sd"; se: "br.se"; sf: "br.sf"; sg: "br.sg"; sh: "br.sh"; si: "br.si"; sj: "br.sj"; sk: "br.sk"; sl: "br.sl"; sm: "br.sm"; sn: "br.sn"; so: "br.so"; sp: "br.sp"; sq: "br.sq"; sr: "br.sr"; ss: "br.ss"; st: "br.st"; su: "br.su"; sv: "br.sv"; sw: "br.sw"; sx: "br.sx"; sy: "br.sy"; sz: "br.sz"; ta: "br.ta"; tb: "br.tb"; tc: "br.tc"; td: "br.td"; te: "br.te"; tf: "br.tf"; tg: "br.tg"; th: "br.th"; ti: "br.ti"; tj: "br.tj"; tk: "br.tk"; tl: "br.tl"; tm: "br.tm"; tn: "br.tn"; to: "br.to"; tp: "br.tp"; tq: "br.tq"; tr: "br.tr"; ts: "br.ts"; tt: "br.tt"; tu: "br.tu"; tv: "br.tv"; tw: "br.tw"; tx: "br.tx"; ty: "br.ty"; tz: "br.tz"; ua: "br.ua"; ub: "br.ub"; uc: "br.uc"; ud: "br.ud"; ue: "br.ue"; uf: "br.uf"; ug: "br.ug"; uh: "br.uh"; ui: "br.ui"; uj: "br.uj"; uk: "br.uk"; ul: "br.ul"; um: "br.um"; un: "br.un"; uo: "br.uo"; up: "br.up"; uq: "br.uq"; ur: "br.ur"; us: "br.us"; ut: "br.ut"; uu: "br.uu"; uv: "br.uv"; uw: "br.uw"; ux: "br.ux"; uy: "br.uy"; uz: "br.uz"; va: "br.va"; vb: "br.vb"; vc: "br.vc"; vd: "br.vd"; ve: "br.ve"; vf: "br.vf"; vg: "br.vg"; vh: "br.vh"; vi: "br.vi"; vj: "br.vj"; vk: "br.vk"; vl: "br.vl"; vm: "br.vm"; vn: "br.vn"; vo: "br.vo"; vp: "br.vp"; vq: "br.vq"; vr: "br.vr"; vs: "br.vs"; vt: "br.vt"; vu: "br.vu"; vv: "br.vv"; vw: "br.vw"; vx: "br.vx"; vy: "br.vy"; vz: "br.vz"; wa: "br.wa"; wb: "br.wb"; wc: "br.wc"; wd: "br.wd"; we: "br.we"; wf: "br.wf"; wg: "br.wg"; wh: "br.wh"; wi: "br.wi"; wj: "br.wj"; wk: "br.wk"; wl: "br.wl"; wm: "br.wm"; wn: "br.wn"; wo: "br.wo"; wp: "br.wp"; wq: "br.wq"; wr: "br.wr"; ws: "br.ws"; wt: "br.wt"; wu: "br.wu"; wv: "br.wv"; ww: "br.ww"; wx: "br.wx"; wy: "br.wy"; wz: "br.wz"; xa: "br.xa"; xb: "br.xb"; xc: "br.xc"; xd: "br.xd"; xe: "br.xe"; xf: "br.xf"; xg: "br.xg"; xh: "br.xh"; xi: "br.xi"; xj: "br.xj"; xk: "br.xk"; xl: "br.xl"; xm: "br.xm"; xn: "br.xn"; xo: "br.xo"; xp: "br.xp"; xq: "br.xq"; xr: "br.xr"; xs: "br.xs"; xt: "br.xt"; xu: "br.xu"; xv: "br.xv"; xw: "br.xw"; xx: "br.xx"; xy: "br.xy"; xz: "br.xz"; ya: "br.ya"; yb: "br.yb"; yc: "br.yc"; yd: "br.yd"; ye: "br.ye"; yf: "br.yf"; yg: "br.yg"; yh: "br.yh"; yi: "br.yi"; yj: "br.yj"; yk: "br.yk"; yl: "br.yl"; ym: "br.ym"; yn: "br.yn"; yo: "br.yo"; yp: "br.yp"; yq: "br.yq"; yr: "br.yr"; ys: "br.ys"; yt: "br.yt"; yu: "br.yu"; yv: "br.yv"; yw: "br.yw"; yx: "br.yx"; yy: "br.yy"; yz: "br.yz"; za: "br.za"; zb: "br.zb"; zc: "br.zc"; zd: "br.zd"; ze: "br.ze"; zf: "br.zf"; zg: "br.zg"; zh: "br.zh"; zi: "br.zi"; zj: "br.zj"; zk: "br.zk"; zl: "br.zl"; zm: "br.zm"; zn: "br.zn"; zo: "br.zo"; zp: "br.zp"; zq: "br.zq"; zr: "br.zr"; zs: "br.zs"; zt: "br.zt"; zu: "br.zu"; zv: "br.zv"; zw: "br.zw"; zx: "br.zx"; zy: "br.zy"; zz: "br.zz"; }; bs: { aa: "bs.aa"; ab: "bs.ab"; ac: "bs.ac"; ad: "bs.ad"; ae: "bs.ae"; af: "bs.af"; ag: "bs.ag"; ah: "bs.ah"; ai: "bs.ai"; aj: "bs.aj"; ak: "bs.ak"; al: "bs.al"; am: "bs.am"; an: "bs.an"; ao: "bs.ao"; ap: "bs.ap"; aq: "bs.aq"; ar: "bs.ar"; as: "bs.as"; at: "bs.at"; au: "bs.au"; av: "bs.av"; aw: "bs.aw"; ax: "bs.ax"; ay: "bs.ay"; az: "bs.az"; ba: "bs.ba"; bb: "bs.bb"; bc: "bs.bc"; bd: "bs.bd"; be: "bs.be"; bf: "bs.bf"; bg: "bs.bg"; bh: "bs.bh"; bi: "bs.bi"; bj: "bs.bj"; bk: "bs.bk"; bl: "bs.bl"; bm: "bs.bm"; bn: "bs.bn"; bo: "bs.bo"; bp: "bs.bp"; bq: "bs.bq"; br: "bs.br"; bs: "bs.bs"; bt: "bs.bt"; bu: "bs.bu"; bv: "bs.bv"; bw: "bs.bw"; bx: "bs.bx"; by: "bs.by"; bz: "bs.bz"; ca: "bs.ca"; cb: "bs.cb"; cc: "bs.cc"; cd: "bs.cd"; ce: "bs.ce"; cf: "bs.cf"; cg: "bs.cg"; ch: "bs.ch"; ci: "bs.ci"; cj: "bs.cj"; ck: "bs.ck"; cl: "bs.cl"; cm: "bs.cm"; cn: "bs.cn"; co: "bs.co"; cp: "bs.cp"; cq: "bs.cq"; cr: "bs.cr"; cs: "bs.cs"; ct: "bs.ct"; cu: "bs.cu"; cv: "bs.cv"; cw: "bs.cw"; cx: "bs.cx"; cy: "bs.cy"; cz: "bs.cz"; da: "bs.da"; db: "bs.db"; dc: "bs.dc"; dd: "bs.dd"; de: "bs.de"; df: "bs.df"; dg: "bs.dg"; dh: "bs.dh"; di: "bs.di"; dj: "bs.dj"; dk: "bs.dk"; dl: "bs.dl"; dm: "bs.dm"; dn: "bs.dn"; do: "bs.do"; dp: "bs.dp"; dq: "bs.dq"; dr: "bs.dr"; ds: "bs.ds"; dt: "bs.dt"; du: "bs.du"; dv: "bs.dv"; dw: "bs.dw"; dx: "bs.dx"; dy: "bs.dy"; dz: "bs.dz"; ea: "bs.ea"; eb: "bs.eb"; ec: "bs.ec"; ed: "bs.ed"; ee: "bs.ee"; ef: "bs.ef"; eg: "bs.eg"; eh: "bs.eh"; ei: "bs.ei"; ej: "bs.ej"; ek: "bs.ek"; el: "bs.el"; em: "bs.em"; en: "bs.en"; eo: "bs.eo"; ep: "bs.ep"; eq: "bs.eq"; er: "bs.er"; es: "bs.es"; et: "bs.et"; eu: "bs.eu"; ev: "bs.ev"; ew: "bs.ew"; ex: "bs.ex"; ey: "bs.ey"; ez: "bs.ez"; fa: "bs.fa"; fb: "bs.fb"; fc: "bs.fc"; fd: "bs.fd"; fe: "bs.fe"; ff: "bs.ff"; fg: "bs.fg"; fh: "bs.fh"; fi: "bs.fi"; fj: "bs.fj"; fk: "bs.fk"; fl: "bs.fl"; fm: "bs.fm"; fn: "bs.fn"; fo: "bs.fo"; fp: "bs.fp"; fq: "bs.fq"; fr: "bs.fr"; fs: "bs.fs"; ft: "bs.ft"; fu: "bs.fu"; fv: "bs.fv"; fw: "bs.fw"; fx: "bs.fx"; fy: "bs.fy"; fz: "bs.fz"; ga: "bs.ga"; gb: "bs.gb"; gc: "bs.gc"; gd: "bs.gd"; ge: "bs.ge"; gf: "bs.gf"; gg: "bs.gg"; gh: "bs.gh"; gi: "bs.gi"; gj: "bs.gj"; gk: "bs.gk"; gl: "bs.gl"; gm: "bs.gm"; gn: "bs.gn"; go: "bs.go"; gp: "bs.gp"; gq: "bs.gq"; gr: "bs.gr"; gs: "bs.gs"; gt: "bs.gt"; gu: "bs.gu"; gv: "bs.gv"; gw: "bs.gw"; gx: "bs.gx"; gy: "bs.gy"; gz: "bs.gz"; ha: "bs.ha"; hb: "bs.hb"; hc: "bs.hc"; hd: "bs.hd"; he: "bs.he"; hf: "bs.hf"; hg: "bs.hg"; hh: "bs.hh"; hi: "bs.hi"; hj: "bs.hj"; hk: "bs.hk"; hl: "bs.hl"; hm: "bs.hm"; hn: "bs.hn"; ho: "bs.ho"; hp: "bs.hp"; hq: "bs.hq"; hr: "bs.hr"; hs: "bs.hs"; ht: "bs.ht"; hu: "bs.hu"; hv: "bs.hv"; hw: "bs.hw"; hx: "bs.hx"; hy: "bs.hy"; hz: "bs.hz"; ia: "bs.ia"; ib: "bs.ib"; ic: "bs.ic"; id: "bs.id"; ie: "bs.ie"; if: "bs.if"; ig: "bs.ig"; ih: "bs.ih"; ii: "bs.ii"; ij: "bs.ij"; ik: "bs.ik"; il: "bs.il"; im: "bs.im"; in: "bs.in"; io: "bs.io"; ip: "bs.ip"; iq: "bs.iq"; ir: "bs.ir"; is: "bs.is"; it: "bs.it"; iu: "bs.iu"; iv: "bs.iv"; iw: "bs.iw"; ix: "bs.ix"; iy: "bs.iy"; iz: "bs.iz"; ja: "bs.ja"; jb: "bs.jb"; jc: "bs.jc"; jd: "bs.jd"; je: "bs.je"; jf: "bs.jf"; jg: "bs.jg"; jh: "bs.jh"; ji: "bs.ji"; jj: "bs.jj"; jk: "bs.jk"; jl: "bs.jl"; jm: "bs.jm"; jn: "bs.jn"; jo: "bs.jo"; jp: "bs.jp"; jq: "bs.jq"; jr: "bs.jr"; js: "bs.js"; jt: "bs.jt"; ju: "bs.ju"; jv: "bs.jv"; jw: "bs.jw"; jx: "bs.jx"; jy: "bs.jy"; jz: "bs.jz"; ka: "bs.ka"; kb: "bs.kb"; kc: "bs.kc"; kd: "bs.kd"; ke: "bs.ke"; kf: "bs.kf"; kg: "bs.kg"; kh: "bs.kh"; ki: "bs.ki"; kj: "bs.kj"; kk: "bs.kk"; kl: "bs.kl"; km: "bs.km"; kn: "bs.kn"; ko: "bs.ko"; kp: "bs.kp"; kq: "bs.kq"; kr: "bs.kr"; ks: "bs.ks"; kt: "bs.kt"; ku: "bs.ku"; kv: "bs.kv"; kw: "bs.kw"; kx: "bs.kx"; ky: "bs.ky"; kz: "bs.kz"; la: "bs.la"; lb: "bs.lb"; lc: "bs.lc"; ld: "bs.ld"; le: "bs.le"; lf: "bs.lf"; lg: "bs.lg"; lh: "bs.lh"; li: "bs.li"; lj: "bs.lj"; lk: "bs.lk"; ll: "bs.ll"; lm: "bs.lm"; ln: "bs.ln"; lo: "bs.lo"; lp: "bs.lp"; lq: "bs.lq"; lr: "bs.lr"; ls: "bs.ls"; lt: "bs.lt"; lu: "bs.lu"; lv: "bs.lv"; lw: "bs.lw"; lx: "bs.lx"; ly: "bs.ly"; lz: "bs.lz"; ma: "bs.ma"; mb: "bs.mb"; mc: "bs.mc"; md: "bs.md"; me: "bs.me"; mf: "bs.mf"; mg: "bs.mg"; mh: "bs.mh"; mi: "bs.mi"; mj: "bs.mj"; mk: "bs.mk"; ml: "bs.ml"; mm: "bs.mm"; mn: "bs.mn"; mo: "bs.mo"; mp: "bs.mp"; mq: "bs.mq"; mr: "bs.mr"; ms: "bs.ms"; mt: "bs.mt"; mu: "bs.mu"; mv: "bs.mv"; mw: "bs.mw"; mx: "bs.mx"; my: "bs.my"; mz: "bs.mz"; na: "bs.na"; nb: "bs.nb"; nc: "bs.nc"; nd: "bs.nd"; ne: "bs.ne"; nf: "bs.nf"; ng: "bs.ng"; nh: "bs.nh"; ni: "bs.ni"; nj: "bs.nj"; nk: "bs.nk"; nl: "bs.nl"; nm: "bs.nm"; nn: "bs.nn"; no: "bs.no"; np: "bs.np"; nq: "bs.nq"; nr: "bs.nr"; ns: "bs.ns"; nt: "bs.nt"; nu: "bs.nu"; nv: "bs.nv"; nw: "bs.nw"; nx: "bs.nx"; ny: "bs.ny"; nz: "bs.nz"; oa: "bs.oa"; ob: "bs.ob"; oc: "bs.oc"; od: "bs.od"; oe: "bs.oe"; of: "bs.of"; og: "bs.og"; oh: "bs.oh"; oi: "bs.oi"; oj: "bs.oj"; ok: "bs.ok"; ol: "bs.ol"; om: "bs.om"; on: "bs.on"; oo: "bs.oo"; op: "bs.op"; oq: "bs.oq"; or: "bs.or"; os: "bs.os"; ot: "bs.ot"; ou: "bs.ou"; ov: "bs.ov"; ow: "bs.ow"; ox: "bs.ox"; oy: "bs.oy"; oz: "bs.oz"; pa: "bs.pa"; pb: "bs.pb"; pc: "bs.pc"; pd: "bs.pd"; pe: "bs.pe"; pf: "bs.pf"; pg: "bs.pg"; ph: "bs.ph"; pi: "bs.pi"; pj: "bs.pj"; pk: "bs.pk"; pl: "bs.pl"; pm: "bs.pm"; pn: "bs.pn"; po: "bs.po"; pp: "bs.pp"; pq: "bs.pq"; pr: "bs.pr"; ps: "bs.ps"; pt: "bs.pt"; pu: "bs.pu"; pv: "bs.pv"; pw: "bs.pw"; px: "bs.px"; py: "bs.py"; pz: "bs.pz"; qa: "bs.qa"; qb: "bs.qb"; qc: "bs.qc"; qd: "bs.qd"; qe: "bs.qe"; qf: "bs.qf"; qg: "bs.qg"; qh: "bs.qh"; qi: "bs.qi"; qj: "bs.qj"; qk: "bs.qk"; ql: "bs.ql"; qm: "bs.qm"; qn: "bs.qn"; qo: "bs.qo"; qp: "bs.qp"; qq: "bs.qq"; qr: "bs.qr"; qs: "bs.qs"; qt: "bs.qt"; qu: "bs.qu"; qv: "bs.qv"; qw: "bs.qw"; qx: "bs.qx"; qy: "bs.qy"; qz: "bs.qz"; ra: "bs.ra"; rb: "bs.rb"; rc: "bs.rc"; rd: "bs.rd"; re: "bs.re"; rf: "bs.rf"; rg: "bs.rg"; rh: "bs.rh"; ri: "bs.ri"; rj: "bs.rj"; rk: "bs.rk"; rl: "bs.rl"; rm: "bs.rm"; rn: "bs.rn"; ro: "bs.ro"; rp: "bs.rp"; rq: "bs.rq"; rr: "bs.rr"; rs: "bs.rs"; rt: "bs.rt"; ru: "bs.ru"; rv: "bs.rv"; rw: "bs.rw"; rx: "bs.rx"; ry: "bs.ry"; rz: "bs.rz"; sa: "bs.sa"; sb: "bs.sb"; sc: "bs.sc"; sd: "bs.sd"; se: "bs.se"; sf: "bs.sf"; sg: "bs.sg"; sh: "bs.sh"; si: "bs.si"; sj: "bs.sj"; sk: "bs.sk"; sl: "bs.sl"; sm: "bs.sm"; sn: "bs.sn"; so: "bs.so"; sp: "bs.sp"; sq: "bs.sq"; sr: "bs.sr"; ss: "bs.ss"; st: "bs.st"; su: "bs.su"; sv: "bs.sv"; sw: "bs.sw"; sx: "bs.sx"; sy: "bs.sy"; sz: "bs.sz"; ta: "bs.ta"; tb: "bs.tb"; tc: "bs.tc"; td: "bs.td"; te: "bs.te"; tf: "bs.tf"; tg: "bs.tg"; th: "bs.th"; ti: "bs.ti"; tj: "bs.tj"; tk: "bs.tk"; tl: "bs.tl"; tm: "bs.tm"; tn: "bs.tn"; to: "bs.to"; tp: "bs.tp"; tq: "bs.tq"; tr: "bs.tr"; ts: "bs.ts"; tt: "bs.tt"; tu: "bs.tu"; tv: "bs.tv"; tw: "bs.tw"; tx: "bs.tx"; ty: "bs.ty"; tz: "bs.tz"; ua: "bs.ua"; ub: "bs.ub"; uc: "bs.uc"; ud: "bs.ud"; ue: "bs.ue"; uf: "bs.uf"; ug: "bs.ug"; uh: "bs.uh"; ui: "bs.ui"; uj: "bs.uj"; uk: "bs.uk"; ul: "bs.ul"; um: "bs.um"; un: "bs.un"; uo: "bs.uo"; up: "bs.up"; uq: "bs.uq"; ur: "bs.ur"; us: "bs.us"; ut: "bs.ut"; uu: "bs.uu"; uv: "bs.uv"; uw: "bs.uw"; ux: "bs.ux"; uy: "bs.uy"; uz: "bs.uz"; va: "bs.va"; vb: "bs.vb"; vc: "bs.vc"; vd: "bs.vd"; ve: "bs.ve"; vf: "bs.vf"; vg: "bs.vg"; vh: "bs.vh"; vi: "bs.vi"; vj: "bs.vj"; vk: "bs.vk"; vl: "bs.vl"; vm: "bs.vm"; vn: "bs.vn"; vo: "bs.vo"; vp: "bs.vp"; vq: "bs.vq"; vr: "bs.vr"; vs: "bs.vs"; vt: "bs.vt"; vu: "bs.vu"; vv: "bs.vv"; vw: "bs.vw"; vx: "bs.vx"; vy: "bs.vy"; vz: "bs.vz"; wa: "bs.wa"; wb: "bs.wb"; wc: "bs.wc"; wd: "bs.wd"; we: "bs.we"; wf: "bs.wf"; wg: "bs.wg"; wh: "bs.wh"; wi: "bs.wi"; wj: "bs.wj"; wk: "bs.wk"; wl: "bs.wl"; wm: "bs.wm"; wn: "bs.wn"; wo: "bs.wo"; wp: "bs.wp"; wq: "bs.wq"; wr: "bs.wr"; ws: "bs.ws"; wt: "bs.wt"; wu: "bs.wu"; wv: "bs.wv"; ww: "bs.ww"; wx: "bs.wx"; wy: "bs.wy"; wz: "bs.wz"; xa: "bs.xa"; xb: "bs.xb"; xc: "bs.xc"; xd: "bs.xd"; xe: "bs.xe"; xf: "bs.xf"; xg: "bs.xg"; xh: "bs.xh"; xi: "bs.xi"; xj: "bs.xj"; xk: "bs.xk"; xl: "bs.xl"; xm: "bs.xm"; xn: "bs.xn"; xo: "bs.xo"; xp: "bs.xp"; xq: "bs.xq"; xr: "bs.xr"; xs: "bs.xs"; xt: "bs.xt"; xu: "bs.xu"; xv: "bs.xv"; xw: "bs.xw"; xx: "bs.xx"; xy: "bs.xy"; xz: "bs.xz"; ya: "bs.ya"; yb: "bs.yb"; yc: "bs.yc"; yd: "bs.yd"; ye: "bs.ye"; yf: "bs.yf"; yg: "bs.yg"; yh: "bs.yh"; yi: "bs.yi"; yj: "bs.yj"; yk: "bs.yk"; yl: "bs.yl"; ym: "bs.ym"; yn: "bs.yn"; yo: "bs.yo"; yp: "bs.yp"; yq: "bs.yq"; yr: "bs.yr"; ys: "bs.ys"; yt: "bs.yt"; yu: "bs.yu"; yv: "bs.yv"; yw: "bs.yw"; yx: "bs.yx"; yy: "bs.yy"; yz: "bs.yz"; za: "bs.za"; zb: "bs.zb"; zc: "bs.zc"; zd: "bs.zd"; ze: "bs.ze"; zf: "bs.zf"; zg: "bs.zg"; zh: "bs.zh"; zi: "bs.zi"; zj: "bs.zj"; zk: "bs.zk"; zl: "bs.zl"; zm: "bs.zm"; zn: "bs.zn"; zo: "bs.zo"; zp: "bs.zp"; zq: "bs.zq"; zr: "bs.zr"; zs: "bs.zs"; zt: "bs.zt"; zu: "bs.zu"; zv: "bs.zv"; zw: "bs.zw"; zx: "bs.zx"; zy: "bs.zy"; zz: "bs.zz"; }; bt: { aa: "bt.aa"; ab: "bt.ab"; ac: "bt.ac"; ad: "bt.ad"; ae: "bt.ae"; af: "bt.af"; ag: "bt.ag"; ah: "bt.ah"; ai: "bt.ai"; aj: "bt.aj"; ak: "bt.ak"; al: "bt.al"; am: "bt.am"; an: "bt.an"; ao: "bt.ao"; ap: "bt.ap"; aq: "bt.aq"; ar: "bt.ar"; as: "bt.as"; at: "bt.at"; au: "bt.au"; av: "bt.av"; aw: "bt.aw"; ax: "bt.ax"; ay: "bt.ay"; az: "bt.az"; ba: "bt.ba"; bb: "bt.bb"; bc: "bt.bc"; bd: "bt.bd"; be: "bt.be"; bf: "bt.bf"; bg: "bt.bg"; bh: "bt.bh"; bi: "bt.bi"; bj: "bt.bj"; bk: "bt.bk"; bl: "bt.bl"; bm: "bt.bm"; bn: "bt.bn"; bo: "bt.bo"; bp: "bt.bp"; bq: "bt.bq"; br: "bt.br"; bs: "bt.bs"; bt: "bt.bt"; bu: "bt.bu"; bv: "bt.bv"; bw: "bt.bw"; bx: "bt.bx"; by: "bt.by"; bz: "bt.bz"; ca: "bt.ca"; cb: "bt.cb"; cc: "bt.cc"; cd: "bt.cd"; ce: "bt.ce"; cf: "bt.cf"; cg: "bt.cg"; ch: "bt.ch"; ci: "bt.ci"; cj: "bt.cj"; ck: "bt.ck"; cl: "bt.cl"; cm: "bt.cm"; cn: "bt.cn"; co: "bt.co"; cp: "bt.cp"; cq: "bt.cq"; cr: "bt.cr"; cs: "bt.cs"; ct: "bt.ct"; cu: "bt.cu"; cv: "bt.cv"; cw: "bt.cw"; cx: "bt.cx"; cy: "bt.cy"; cz: "bt.cz"; da: "bt.da"; db: "bt.db"; dc: "bt.dc"; dd: "bt.dd"; de: "bt.de"; df: "bt.df"; dg: "bt.dg"; dh: "bt.dh"; di: "bt.di"; dj: "bt.dj"; dk: "bt.dk"; dl: "bt.dl"; dm: "bt.dm"; dn: "bt.dn"; do: "bt.do"; dp: "bt.dp"; dq: "bt.dq"; dr: "bt.dr"; ds: "bt.ds"; dt: "bt.dt"; du: "bt.du"; dv: "bt.dv"; dw: "bt.dw"; dx: "bt.dx"; dy: "bt.dy"; dz: "bt.dz"; ea: "bt.ea"; eb: "bt.eb"; ec: "bt.ec"; ed: "bt.ed"; ee: "bt.ee"; ef: "bt.ef"; eg: "bt.eg"; eh: "bt.eh"; ei: "bt.ei"; ej: "bt.ej"; ek: "bt.ek"; el: "bt.el"; em: "bt.em"; en: "bt.en"; eo: "bt.eo"; ep: "bt.ep"; eq: "bt.eq"; er: "bt.er"; es: "bt.es"; et: "bt.et"; eu: "bt.eu"; ev: "bt.ev"; ew: "bt.ew"; ex: "bt.ex"; ey: "bt.ey"; ez: "bt.ez"; fa: "bt.fa"; fb: "bt.fb"; fc: "bt.fc"; fd: "bt.fd"; fe: "bt.fe"; ff: "bt.ff"; fg: "bt.fg"; fh: "bt.fh"; fi: "bt.fi"; fj: "bt.fj"; fk: "bt.fk"; fl: "bt.fl"; fm: "bt.fm"; fn: "bt.fn"; fo: "bt.fo"; fp: "bt.fp"; fq: "bt.fq"; fr: "bt.fr"; fs: "bt.fs"; ft: "bt.ft"; fu: "bt.fu"; fv: "bt.fv"; fw: "bt.fw"; fx: "bt.fx"; fy: "bt.fy"; fz: "bt.fz"; ga: "bt.ga"; gb: "bt.gb"; gc: "bt.gc"; gd: "bt.gd"; ge: "bt.ge"; gf: "bt.gf"; gg: "bt.gg"; gh: "bt.gh"; gi: "bt.gi"; gj: "bt.gj"; gk: "bt.gk"; gl: "bt.gl"; gm: "bt.gm"; gn: "bt.gn"; go: "bt.go"; gp: "bt.gp"; gq: "bt.gq"; gr: "bt.gr"; gs: "bt.gs"; gt: "bt.gt"; gu: "bt.gu"; gv: "bt.gv"; gw: "bt.gw"; gx: "bt.gx"; gy: "bt.gy"; gz: "bt.gz"; ha: "bt.ha"; hb: "bt.hb"; hc: "bt.hc"; hd: "bt.hd"; he: "bt.he"; hf: "bt.hf"; hg: "bt.hg"; hh: "bt.hh"; hi: "bt.hi"; hj: "bt.hj"; hk: "bt.hk"; hl: "bt.hl"; hm: "bt.hm"; hn: "bt.hn"; ho: "bt.ho"; hp: "bt.hp"; hq: "bt.hq"; hr: "bt.hr"; hs: "bt.hs"; ht: "bt.ht"; hu: "bt.hu"; hv: "bt.hv"; hw: "bt.hw"; hx: "bt.hx"; hy: "bt.hy"; hz: "bt.hz"; ia: "bt.ia"; ib: "bt.ib"; ic: "bt.ic"; id: "bt.id"; ie: "bt.ie"; if: "bt.if"; ig: "bt.ig"; ih: "bt.ih"; ii: "bt.ii"; ij: "bt.ij"; ik: "bt.ik"; il: "bt.il"; im: "bt.im"; in: "bt.in"; io: "bt.io"; ip: "bt.ip"; iq: "bt.iq"; ir: "bt.ir"; is: "bt.is"; it: "bt.it"; iu: "bt.iu"; iv: "bt.iv"; iw: "bt.iw"; ix: "bt.ix"; iy: "bt.iy"; iz: "bt.iz"; ja: "bt.ja"; jb: "bt.jb"; jc: "bt.jc"; jd: "bt.jd"; je: "bt.je"; jf: "bt.jf"; jg: "bt.jg"; jh: "bt.jh"; ji: "bt.ji"; jj: "bt.jj"; jk: "bt.jk"; jl: "bt.jl"; jm: "bt.jm"; jn: "bt.jn"; jo: "bt.jo"; jp: "bt.jp"; jq: "bt.jq"; jr: "bt.jr"; js: "bt.js"; jt: "bt.jt"; ju: "bt.ju"; jv: "bt.jv"; jw: "bt.jw"; jx: "bt.jx"; jy: "bt.jy"; jz: "bt.jz"; ka: "bt.ka"; kb: "bt.kb"; kc: "bt.kc"; kd: "bt.kd"; ke: "bt.ke"; kf: "bt.kf"; kg: "bt.kg"; kh: "bt.kh"; ki: "bt.ki"; kj: "bt.kj"; kk: "bt.kk"; kl: "bt.kl"; km: "bt.km"; kn: "bt.kn"; ko: "bt.ko"; kp: "bt.kp"; kq: "bt.kq"; kr: "bt.kr"; ks: "bt.ks"; kt: "bt.kt"; ku: "bt.ku"; kv: "bt.kv"; kw: "bt.kw"; kx: "bt.kx"; ky: "bt.ky"; kz: "bt.kz"; la: "bt.la"; lb: "bt.lb"; lc: "bt.lc"; ld: "bt.ld"; le: "bt.le"; lf: "bt.lf"; lg: "bt.lg"; lh: "bt.lh"; li: "bt.li"; lj: "bt.lj"; lk: "bt.lk"; ll: "bt.ll"; lm: "bt.lm"; ln: "bt.ln"; lo: "bt.lo"; lp: "bt.lp"; lq: "bt.lq"; lr: "bt.lr"; ls: "bt.ls"; lt: "bt.lt"; lu: "bt.lu"; lv: "bt.lv"; lw: "bt.lw"; lx: "bt.lx"; ly: "bt.ly"; lz: "bt.lz"; ma: "bt.ma"; mb: "bt.mb"; mc: "bt.mc"; md: "bt.md"; me: "bt.me"; mf: "bt.mf"; mg: "bt.mg"; mh: "bt.mh"; mi: "bt.mi"; mj: "bt.mj"; mk: "bt.mk"; ml: "bt.ml"; mm: "bt.mm"; mn: "bt.mn"; mo: "bt.mo"; mp: "bt.mp"; mq: "bt.mq"; mr: "bt.mr"; ms: "bt.ms"; mt: "bt.mt"; mu: "bt.mu"; mv: "bt.mv"; mw: "bt.mw"; mx: "bt.mx"; my: "bt.my"; mz: "bt.mz"; na: "bt.na"; nb: "bt.nb"; nc: "bt.nc"; nd: "bt.nd"; ne: "bt.ne"; nf: "bt.nf"; ng: "bt.ng"; nh: "bt.nh"; ni: "bt.ni"; nj: "bt.nj"; nk: "bt.nk"; nl: "bt.nl"; nm: "bt.nm"; nn: "bt.nn"; no: "bt.no"; np: "bt.np"; nq: "bt.nq"; nr: "bt.nr"; ns: "bt.ns"; nt: "bt.nt"; nu: "bt.nu"; nv: "bt.nv"; nw: "bt.nw"; nx: "bt.nx"; ny: "bt.ny"; nz: "bt.nz"; oa: "bt.oa"; ob: "bt.ob"; oc: "bt.oc"; od: "bt.od"; oe: "bt.oe"; of: "bt.of"; og: "bt.og"; oh: "bt.oh"; oi: "bt.oi"; oj: "bt.oj"; ok: "bt.ok"; ol: "bt.ol"; om: "bt.om"; on: "bt.on"; oo: "bt.oo"; op: "bt.op"; oq: "bt.oq"; or: "bt.or"; os: "bt.os"; ot: "bt.ot"; ou: "bt.ou"; ov: "bt.ov"; ow: "bt.ow"; ox: "bt.ox"; oy: "bt.oy"; oz: "bt.oz"; pa: "bt.pa"; pb: "bt.pb"; pc: "bt.pc"; pd: "bt.pd"; pe: "bt.pe"; pf: "bt.pf"; pg: "bt.pg"; ph: "bt.ph"; pi: "bt.pi"; pj: "bt.pj"; pk: "bt.pk"; pl: "bt.pl"; pm: "bt.pm"; pn: "bt.pn"; po: "bt.po"; pp: "bt.pp"; pq: "bt.pq"; pr: "bt.pr"; ps: "bt.ps"; pt: "bt.pt"; pu: "bt.pu"; pv: "bt.pv"; pw: "bt.pw"; px: "bt.px"; py: "bt.py"; pz: "bt.pz"; qa: "bt.qa"; qb: "bt.qb"; qc: "bt.qc"; qd: "bt.qd"; qe: "bt.qe"; qf: "bt.qf"; qg: "bt.qg"; qh: "bt.qh"; qi: "bt.qi"; qj: "bt.qj"; qk: "bt.qk"; ql: "bt.ql"; qm: "bt.qm"; qn: "bt.qn"; qo: "bt.qo"; qp: "bt.qp"; qq: "bt.qq"; qr: "bt.qr"; qs: "bt.qs"; qt: "bt.qt"; qu: "bt.qu"; qv: "bt.qv"; qw: "bt.qw"; qx: "bt.qx"; qy: "bt.qy"; qz: "bt.qz"; ra: "bt.ra"; rb: "bt.rb"; rc: "bt.rc"; rd: "bt.rd"; re: "bt.re"; rf: "bt.rf"; rg: "bt.rg"; rh: "bt.rh"; ri: "bt.ri"; rj: "bt.rj"; rk: "bt.rk"; rl: "bt.rl"; rm: "bt.rm"; rn: "bt.rn"; ro: "bt.ro"; rp: "bt.rp"; rq: "bt.rq"; rr: "bt.rr"; rs: "bt.rs"; rt: "bt.rt"; ru: "bt.ru"; rv: "bt.rv"; rw: "bt.rw"; rx: "bt.rx"; ry: "bt.ry"; rz: "bt.rz"; sa: "bt.sa"; sb: "bt.sb"; sc: "bt.sc"; sd: "bt.sd"; se: "bt.se"; sf: "bt.sf"; sg: "bt.sg"; sh: "bt.sh"; si: "bt.si"; sj: "bt.sj"; sk: "bt.sk"; sl: "bt.sl"; sm: "bt.sm"; sn: "bt.sn"; so: "bt.so"; sp: "bt.sp"; sq: "bt.sq"; sr: "bt.sr"; ss: "bt.ss"; st: "bt.st"; su: "bt.su"; sv: "bt.sv"; sw: "bt.sw"; sx: "bt.sx"; sy: "bt.sy"; sz: "bt.sz"; ta: "bt.ta"; tb: "bt.tb"; tc: "bt.tc"; td: "bt.td"; te: "bt.te"; tf: "bt.tf"; tg: "bt.tg"; th: "bt.th"; ti: "bt.ti"; tj: "bt.tj"; tk: "bt.tk"; tl: "bt.tl"; tm: "bt.tm"; tn: "bt.tn"; to: "bt.to"; tp: "bt.tp"; tq: "bt.tq"; tr: "bt.tr"; ts: "bt.ts"; tt: "bt.tt"; tu: "bt.tu"; tv: "bt.tv"; tw: "bt.tw"; tx: "bt.tx"; ty: "bt.ty"; tz: "bt.tz"; ua: "bt.ua"; ub: "bt.ub"; uc: "bt.uc"; ud: "bt.ud"; ue: "bt.ue"; uf: "bt.uf"; ug: "bt.ug"; uh: "bt.uh"; ui: "bt.ui"; uj: "bt.uj"; uk: "bt.uk"; ul: "bt.ul"; um: "bt.um"; un: "bt.un"; uo: "bt.uo"; up: "bt.up"; uq: "bt.uq"; ur: "bt.ur"; us: "bt.us"; ut: "bt.ut"; uu: "bt.uu"; uv: "bt.uv"; uw: "bt.uw"; ux: "bt.ux"; uy: "bt.uy"; uz: "bt.uz"; va: "bt.va"; vb: "bt.vb"; vc: "bt.vc"; vd: "bt.vd"; ve: "bt.ve"; vf: "bt.vf"; vg: "bt.vg"; vh: "bt.vh"; vi: "bt.vi"; vj: "bt.vj"; vk: "bt.vk"; vl: "bt.vl"; vm: "bt.vm"; vn: "bt.vn"; vo: "bt.vo"; vp: "bt.vp"; vq: "bt.vq"; vr: "bt.vr"; vs: "bt.vs"; vt: "bt.vt"; vu: "bt.vu"; vv: "bt.vv"; vw: "bt.vw"; vx: "bt.vx"; vy: "bt.vy"; vz: "bt.vz"; wa: "bt.wa"; wb: "bt.wb"; wc: "bt.wc"; wd: "bt.wd"; we: "bt.we"; wf: "bt.wf"; wg: "bt.wg"; wh: "bt.wh"; wi: "bt.wi"; wj: "bt.wj"; wk: "bt.wk"; wl: "bt.wl"; wm: "bt.wm"; wn: "bt.wn"; wo: "bt.wo"; wp: "bt.wp"; wq: "bt.wq"; wr: "bt.wr"; ws: "bt.ws"; wt: "bt.wt"; wu: "bt.wu"; wv: "bt.wv"; ww: "bt.ww"; wx: "bt.wx"; wy: "bt.wy"; wz: "bt.wz"; xa: "bt.xa"; xb: "bt.xb"; xc: "bt.xc"; xd: "bt.xd"; xe: "bt.xe"; xf: "bt.xf"; xg: "bt.xg"; xh: "bt.xh"; xi: "bt.xi"; xj: "bt.xj"; xk: "bt.xk"; xl: "bt.xl"; xm: "bt.xm"; xn: "bt.xn"; xo: "bt.xo"; xp: "bt.xp"; xq: "bt.xq"; xr: "bt.xr"; xs: "bt.xs"; xt: "bt.xt"; xu: "bt.xu"; xv: "bt.xv"; xw: "bt.xw"; xx: "bt.xx"; xy: "bt.xy"; xz: "bt.xz"; ya: "bt.ya"; yb: "bt.yb"; yc: "bt.yc"; yd: "bt.yd"; ye: "bt.ye"; yf: "bt.yf"; yg: "bt.yg"; yh: "bt.yh"; yi: "bt.yi"; yj: "bt.yj"; yk: "bt.yk"; yl: "bt.yl"; ym: "bt.ym"; yn: "bt.yn"; yo: "bt.yo"; yp: "bt.yp"; yq: "bt.yq"; yr: "bt.yr"; ys: "bt.ys"; yt: "bt.yt"; yu: "bt.yu"; yv: "bt.yv"; yw: "bt.yw"; yx: "bt.yx"; yy: "bt.yy"; yz: "bt.yz"; za: "bt.za"; zb: "bt.zb"; zc: "bt.zc"; zd: "bt.zd"; ze: "bt.ze"; zf: "bt.zf"; zg: "bt.zg"; zh: "bt.zh"; zi: "bt.zi"; zj: "bt.zj"; zk: "bt.zk"; zl: "bt.zl"; zm: "bt.zm"; zn: "bt.zn"; zo: "bt.zo"; zp: "bt.zp"; zq: "bt.zq"; zr: "bt.zr"; zs: "bt.zs"; zt: "bt.zt"; zu: "bt.zu"; zv: "bt.zv"; zw: "bt.zw"; zx: "bt.zx"; zy: "bt.zy"; zz: "bt.zz"; }; bu: { aa: "bu.aa"; ab: "bu.ab"; ac: "bu.ac"; ad: "bu.ad"; ae: "bu.ae"; af: "bu.af"; ag: "bu.ag"; ah: "bu.ah"; ai: "bu.ai"; aj: "bu.aj"; ak: "bu.ak"; al: "bu.al"; am: "bu.am"; an: "bu.an"; ao: "bu.ao"; ap: "bu.ap"; aq: "bu.aq"; ar: "bu.ar"; as: "bu.as"; at: "bu.at"; au: "bu.au"; av: "bu.av"; aw: "bu.aw"; ax: "bu.ax"; ay: "bu.ay"; az: "bu.az"; ba: "bu.ba"; bb: "bu.bb"; bc: "bu.bc"; bd: "bu.bd"; be: "bu.be"; bf: "bu.bf"; bg: "bu.bg"; bh: "bu.bh"; bi: "bu.bi"; bj: "bu.bj"; bk: "bu.bk"; bl: "bu.bl"; bm: "bu.bm"; bn: "bu.bn"; bo: "bu.bo"; bp: "bu.bp"; bq: "bu.bq"; br: "bu.br"; bs: "bu.bs"; bt: "bu.bt"; bu: "bu.bu"; bv: "bu.bv"; bw: "bu.bw"; bx: "bu.bx"; by: "bu.by"; bz: "bu.bz"; ca: "bu.ca"; cb: "bu.cb"; cc: "bu.cc"; cd: "bu.cd"; ce: "bu.ce"; cf: "bu.cf"; cg: "bu.cg"; ch: "bu.ch"; ci: "bu.ci"; cj: "bu.cj"; ck: "bu.ck"; cl: "bu.cl"; cm: "bu.cm"; cn: "bu.cn"; co: "bu.co"; cp: "bu.cp"; cq: "bu.cq"; cr: "bu.cr"; cs: "bu.cs"; ct: "bu.ct"; cu: "bu.cu"; cv: "bu.cv"; cw: "bu.cw"; cx: "bu.cx"; cy: "bu.cy"; cz: "bu.cz"; da: "bu.da"; db: "bu.db"; dc: "bu.dc"; dd: "bu.dd"; de: "bu.de"; df: "bu.df"; dg: "bu.dg"; dh: "bu.dh"; di: "bu.di"; dj: "bu.dj"; dk: "bu.dk"; dl: "bu.dl"; dm: "bu.dm"; dn: "bu.dn"; do: "bu.do"; dp: "bu.dp"; dq: "bu.dq"; dr: "bu.dr"; ds: "bu.ds"; dt: "bu.dt"; du: "bu.du"; dv: "bu.dv"; dw: "bu.dw"; dx: "bu.dx"; dy: "bu.dy"; dz: "bu.dz"; ea: "bu.ea"; eb: "bu.eb"; ec: "bu.ec"; ed: "bu.ed"; ee: "bu.ee"; ef: "bu.ef"; eg: "bu.eg"; eh: "bu.eh"; ei: "bu.ei"; ej: "bu.ej"; ek: "bu.ek"; el: "bu.el"; em: "bu.em"; en: "bu.en"; eo: "bu.eo"; ep: "bu.ep"; eq: "bu.eq"; er: "bu.er"; es: "bu.es"; et: "bu.et"; eu: "bu.eu"; ev: "bu.ev"; ew: "bu.ew"; ex: "bu.ex"; ey: "bu.ey"; ez: "bu.ez"; fa: "bu.fa"; fb: "bu.fb"; fc: "bu.fc"; fd: "bu.fd"; fe: "bu.fe"; ff: "bu.ff"; fg: "bu.fg"; fh: "bu.fh"; fi: "bu.fi"; fj: "bu.fj"; fk: "bu.fk"; fl: "bu.fl"; fm: "bu.fm"; fn: "bu.fn"; fo: "bu.fo"; fp: "bu.fp"; fq: "bu.fq"; fr: "bu.fr"; fs: "bu.fs"; ft: "bu.ft"; fu: "bu.fu"; fv: "bu.fv"; fw: "bu.fw"; fx: "bu.fx"; fy: "bu.fy"; fz: "bu.fz"; ga: "bu.ga"; gb: "bu.gb"; gc: "bu.gc"; gd: "bu.gd"; ge: "bu.ge"; gf: "bu.gf"; gg: "bu.gg"; gh: "bu.gh"; gi: "bu.gi"; gj: "bu.gj"; gk: "bu.gk"; gl: "bu.gl"; gm: "bu.gm"; gn: "bu.gn"; go: "bu.go"; gp: "bu.gp"; gq: "bu.gq"; gr: "bu.gr"; gs: "bu.gs"; gt: "bu.gt"; gu: "bu.gu"; gv: "bu.gv"; gw: "bu.gw"; gx: "bu.gx"; gy: "bu.gy"; gz: "bu.gz"; ha: "bu.ha"; hb: "bu.hb"; hc: "bu.hc"; hd: "bu.hd"; he: "bu.he"; hf: "bu.hf"; hg: "bu.hg"; hh: "bu.hh"; hi: "bu.hi"; hj: "bu.hj"; hk: "bu.hk"; hl: "bu.hl"; hm: "bu.hm"; hn: "bu.hn"; ho: "bu.ho"; hp: "bu.hp"; hq: "bu.hq"; hr: "bu.hr"; hs: "bu.hs"; ht: "bu.ht"; hu: "bu.hu"; hv: "bu.hv"; hw: "bu.hw"; hx: "bu.hx"; hy: "bu.hy"; hz: "bu.hz"; ia: "bu.ia"; ib: "bu.ib"; ic: "bu.ic"; id: "bu.id"; ie: "bu.ie"; if: "bu.if"; ig: "bu.ig"; ih: "bu.ih"; ii: "bu.ii"; ij: "bu.ij"; ik: "bu.ik"; il: "bu.il"; im: "bu.im"; in: "bu.in"; io: "bu.io"; ip: "bu.ip"; iq: "bu.iq"; ir: "bu.ir"; is: "bu.is"; it: "bu.it"; iu: "bu.iu"; iv: "bu.iv"; iw: "bu.iw"; ix: "bu.ix"; iy: "bu.iy"; iz: "bu.iz"; ja: "bu.ja"; jb: "bu.jb"; jc: "bu.jc"; jd: "bu.jd"; je: "bu.je"; jf: "bu.jf"; jg: "bu.jg"; jh: "bu.jh"; ji: "bu.ji"; jj: "bu.jj"; jk: "bu.jk"; jl: "bu.jl"; jm: "bu.jm"; jn: "bu.jn"; jo: "bu.jo"; jp: "bu.jp"; jq: "bu.jq"; jr: "bu.jr"; js: "bu.js"; jt: "bu.jt"; ju: "bu.ju"; jv: "bu.jv"; jw: "bu.jw"; jx: "bu.jx"; jy: "bu.jy"; jz: "bu.jz"; ka: "bu.ka"; kb: "bu.kb"; kc: "bu.kc"; kd: "bu.kd"; ke: "bu.ke"; kf: "bu.kf"; kg: "bu.kg"; kh: "bu.kh"; ki: "bu.ki"; kj: "bu.kj"; kk: "bu.kk"; kl: "bu.kl"; km: "bu.km"; kn: "bu.kn"; ko: "bu.ko"; kp: "bu.kp"; kq: "bu.kq"; kr: "bu.kr"; ks: "bu.ks"; kt: "bu.kt"; ku: "bu.ku"; kv: "bu.kv"; kw: "bu.kw"; kx: "bu.kx"; ky: "bu.ky"; kz: "bu.kz"; la: "bu.la"; lb: "bu.lb"; lc: "bu.lc"; ld: "bu.ld"; le: "bu.le"; lf: "bu.lf"; lg: "bu.lg"; lh: "bu.lh"; li: "bu.li"; lj: "bu.lj"; lk: "bu.lk"; ll: "bu.ll"; lm: "bu.lm"; ln: "bu.ln"; lo: "bu.lo"; lp: "bu.lp"; lq: "bu.lq"; lr: "bu.lr"; ls: "bu.ls"; lt: "bu.lt"; lu: "bu.lu"; lv: "bu.lv"; lw: "bu.lw"; lx: "bu.lx"; ly: "bu.ly"; lz: "bu.lz"; ma: "bu.ma"; mb: "bu.mb"; mc: "bu.mc"; md: "bu.md"; me: "bu.me"; mf: "bu.mf"; mg: "bu.mg"; mh: "bu.mh"; mi: "bu.mi"; mj: "bu.mj"; mk: "bu.mk"; ml: "bu.ml"; mm: "bu.mm"; mn: "bu.mn"; mo: "bu.mo"; mp: "bu.mp"; mq: "bu.mq"; mr: "bu.mr"; ms: "bu.ms"; mt: "bu.mt"; mu: "bu.mu"; mv: "bu.mv"; mw: "bu.mw"; mx: "bu.mx"; my: "bu.my"; mz: "bu.mz"; na: "bu.na"; nb: "bu.nb"; nc: "bu.nc"; nd: "bu.nd"; ne: "bu.ne"; nf: "bu.nf"; ng: "bu.ng"; nh: "bu.nh"; ni: "bu.ni"; nj: "bu.nj"; nk: "bu.nk"; nl: "bu.nl"; nm: "bu.nm"; nn: "bu.nn"; no: "bu.no"; np: "bu.np"; nq: "bu.nq"; nr: "bu.nr"; ns: "bu.ns"; nt: "bu.nt"; nu: "bu.nu"; nv: "bu.nv"; nw: "bu.nw"; nx: "bu.nx"; ny: "bu.ny"; nz: "bu.nz"; oa: "bu.oa"; ob: "bu.ob"; oc: "bu.oc"; od: "bu.od"; oe: "bu.oe"; of: "bu.of"; og: "bu.og"; oh: "bu.oh"; oi: "bu.oi"; oj: "bu.oj"; ok: "bu.ok"; ol: "bu.ol"; om: "bu.om"; on: "bu.on"; oo: "bu.oo"; op: "bu.op"; oq: "bu.oq"; or: "bu.or"; os: "bu.os"; ot: "bu.ot"; ou: "bu.ou"; ov: "bu.ov"; ow: "bu.ow"; ox: "bu.ox"; oy: "bu.oy"; oz: "bu.oz"; pa: "bu.pa"; pb: "bu.pb"; pc: "bu.pc"; pd: "bu.pd"; pe: "bu.pe"; pf: "bu.pf"; pg: "bu.pg"; ph: "bu.ph"; pi: "bu.pi"; pj: "bu.pj"; pk: "bu.pk"; pl: "bu.pl"; pm: "bu.pm"; pn: "bu.pn"; po: "bu.po"; pp: "bu.pp"; pq: "bu.pq"; pr: "bu.pr"; ps: "bu.ps"; pt: "bu.pt"; pu: "bu.pu"; pv: "bu.pv"; pw: "bu.pw"; px: "bu.px"; py: "bu.py"; pz: "bu.pz"; qa: "bu.qa"; qb: "bu.qb"; qc: "bu.qc"; qd: "bu.qd"; qe: "bu.qe"; qf: "bu.qf"; qg: "bu.qg"; qh: "bu.qh"; qi: "bu.qi"; qj: "bu.qj"; qk: "bu.qk"; ql: "bu.ql"; qm: "bu.qm"; qn: "bu.qn"; qo: "bu.qo"; qp: "bu.qp"; qq: "bu.qq"; qr: "bu.qr"; qs: "bu.qs"; qt: "bu.qt"; qu: "bu.qu"; qv: "bu.qv"; qw: "bu.qw"; qx: "bu.qx"; qy: "bu.qy"; qz: "bu.qz"; ra: "bu.ra"; rb: "bu.rb"; rc: "bu.rc"; rd: "bu.rd"; re: "bu.re"; rf: "bu.rf"; rg: "bu.rg"; rh: "bu.rh"; ri: "bu.ri"; rj: "bu.rj"; rk: "bu.rk"; rl: "bu.rl"; rm: "bu.rm"; rn: "bu.rn"; ro: "bu.ro"; rp: "bu.rp"; rq: "bu.rq"; rr: "bu.rr"; rs: "bu.rs"; rt: "bu.rt"; ru: "bu.ru"; rv: "bu.rv"; rw: "bu.rw"; rx: "bu.rx"; ry: "bu.ry"; rz: "bu.rz"; sa: "bu.sa"; sb: "bu.sb"; sc: "bu.sc"; sd: "bu.sd"; se: "bu.se"; sf: "bu.sf"; sg: "bu.sg"; sh: "bu.sh"; si: "bu.si"; sj: "bu.sj"; sk: "bu.sk"; sl: "bu.sl"; sm: "bu.sm"; sn: "bu.sn"; so: "bu.so"; sp: "bu.sp"; sq: "bu.sq"; sr: "bu.sr"; ss: "bu.ss"; st: "bu.st"; su: "bu.su"; sv: "bu.sv"; sw: "bu.sw"; sx: "bu.sx"; sy: "bu.sy"; sz: "bu.sz"; ta: "bu.ta"; tb: "bu.tb"; tc: "bu.tc"; td: "bu.td"; te: "bu.te"; tf: "bu.tf"; tg: "bu.tg"; th: "bu.th"; ti: "bu.ti"; tj: "bu.tj"; tk: "bu.tk"; tl: "bu.tl"; tm: "bu.tm"; tn: "bu.tn"; to: "bu.to"; tp: "bu.tp"; tq: "bu.tq"; tr: "bu.tr"; ts: "bu.ts"; tt: "bu.tt"; tu: "bu.tu"; tv: "bu.tv"; tw: "bu.tw"; tx: "bu.tx"; ty: "bu.ty"; tz: "bu.tz"; ua: "bu.ua"; ub: "bu.ub"; uc: "bu.uc"; ud: "bu.ud"; ue: "bu.ue"; uf: "bu.uf"; ug: "bu.ug"; uh: "bu.uh"; ui: "bu.ui"; uj: "bu.uj"; uk: "bu.uk"; ul: "bu.ul"; um: "bu.um"; un: "bu.un"; uo: "bu.uo"; up: "bu.up"; uq: "bu.uq"; ur: "bu.ur"; us: "bu.us"; ut: "bu.ut"; uu: "bu.uu"; uv: "bu.uv"; uw: "bu.uw"; ux: "bu.ux"; uy: "bu.uy"; uz: "bu.uz"; va: "bu.va"; vb: "bu.vb"; vc: "bu.vc"; vd: "bu.vd"; ve: "bu.ve"; vf: "bu.vf"; vg: "bu.vg"; vh: "bu.vh"; vi: "bu.vi"; vj: "bu.vj"; vk: "bu.vk"; vl: "bu.vl"; vm: "bu.vm"; vn: "bu.vn"; vo: "bu.vo"; vp: "bu.vp"; vq: "bu.vq"; vr: "bu.vr"; vs: "bu.vs"; vt: "bu.vt"; vu: "bu.vu"; vv: "bu.vv"; vw: "bu.vw"; vx: "bu.vx"; vy: "bu.vy"; vz: "bu.vz"; wa: "bu.wa"; wb: "bu.wb"; wc: "bu.wc"; wd: "bu.wd"; we: "bu.we"; wf: "bu.wf"; wg: "bu.wg"; wh: "bu.wh"; wi: "bu.wi"; wj: "bu.wj"; wk: "bu.wk"; wl: "bu.wl"; wm: "bu.wm"; wn: "bu.wn"; wo: "bu.wo"; wp: "bu.wp"; wq: "bu.wq"; wr: "bu.wr"; ws: "bu.ws"; wt: "bu.wt"; wu: "bu.wu"; wv: "bu.wv"; ww: "bu.ww"; wx: "bu.wx"; wy: "bu.wy"; wz: "bu.wz"; xa: "bu.xa"; xb: "bu.xb"; xc: "bu.xc"; xd: "bu.xd"; xe: "bu.xe"; xf: "bu.xf"; xg: "bu.xg"; xh: "bu.xh"; xi: "bu.xi"; xj: "bu.xj"; xk: "bu.xk"; xl: "bu.xl"; xm: "bu.xm"; xn: "bu.xn"; xo: "bu.xo"; xp: "bu.xp"; xq: "bu.xq"; xr: "bu.xr"; xs: "bu.xs"; xt: "bu.xt"; xu: "bu.xu"; xv: "bu.xv"; xw: "bu.xw"; xx: "bu.xx"; xy: "bu.xy"; xz: "bu.xz"; ya: "bu.ya"; yb: "bu.yb"; yc: "bu.yc"; yd: "bu.yd"; ye: "bu.ye"; yf: "bu.yf"; yg: "bu.yg"; yh: "bu.yh"; yi: "bu.yi"; yj: "bu.yj"; yk: "bu.yk"; yl: "bu.yl"; ym: "bu.ym"; yn: "bu.yn"; yo: "bu.yo"; yp: "bu.yp"; yq: "bu.yq"; yr: "bu.yr"; ys: "bu.ys"; yt: "bu.yt"; yu: "bu.yu"; yv: "bu.yv"; yw: "bu.yw"; yx: "bu.yx"; yy: "bu.yy"; yz: "bu.yz"; za: "bu.za"; zb: "bu.zb"; zc: "bu.zc"; zd: "bu.zd"; ze: "bu.ze"; zf: "bu.zf"; zg: "bu.zg"; zh: "bu.zh"; zi: "bu.zi"; zj: "bu.zj"; zk: "bu.zk"; zl: "bu.zl"; zm: "bu.zm"; zn: "bu.zn"; zo: "bu.zo"; zp: "bu.zp"; zq: "bu.zq"; zr: "bu.zr"; zs: "bu.zs"; zt: "bu.zt"; zu: "bu.zu"; zv: "bu.zv"; zw: "bu.zw"; zx: "bu.zx"; zy: "bu.zy"; zz: "bu.zz"; }; bv: { aa: "bv.aa"; ab: "bv.ab"; ac: "bv.ac"; ad: "bv.ad"; ae: "bv.ae"; af: "bv.af"; ag: "bv.ag"; ah: "bv.ah"; ai: "bv.ai"; aj: "bv.aj"; ak: "bv.ak"; al: "bv.al"; am: "bv.am"; an: "bv.an"; ao: "bv.ao"; ap: "bv.ap"; aq: "bv.aq"; ar: "bv.ar"; as: "bv.as"; at: "bv.at"; au: "bv.au"; av: "bv.av"; aw: "bv.aw"; ax: "bv.ax"; ay: "bv.ay"; az: "bv.az"; ba: "bv.ba"; bb: "bv.bb"; bc: "bv.bc"; bd: "bv.bd"; be: "bv.be"; bf: "bv.bf"; bg: "bv.bg"; bh: "bv.bh"; bi: "bv.bi"; bj: "bv.bj"; bk: "bv.bk"; bl: "bv.bl"; bm: "bv.bm"; bn: "bv.bn"; bo: "bv.bo"; bp: "bv.bp"; bq: "bv.bq"; br: "bv.br"; bs: "bv.bs"; bt: "bv.bt"; bu: "bv.bu"; bv: "bv.bv"; bw: "bv.bw"; bx: "bv.bx"; by: "bv.by"; bz: "bv.bz"; ca: "bv.ca"; cb: "bv.cb"; cc: "bv.cc"; cd: "bv.cd"; ce: "bv.ce"; cf: "bv.cf"; cg: "bv.cg"; ch: "bv.ch"; ci: "bv.ci"; cj: "bv.cj"; ck: "bv.ck"; cl: "bv.cl"; cm: "bv.cm"; cn: "bv.cn"; co: "bv.co"; cp: "bv.cp"; cq: "bv.cq"; cr: "bv.cr"; cs: "bv.cs"; ct: "bv.ct"; cu: "bv.cu"; cv: "bv.cv"; cw: "bv.cw"; cx: "bv.cx"; cy: "bv.cy"; cz: "bv.cz"; da: "bv.da"; db: "bv.db"; dc: "bv.dc"; dd: "bv.dd"; de: "bv.de"; df: "bv.df"; dg: "bv.dg"; dh: "bv.dh"; di: "bv.di"; dj: "bv.dj"; dk: "bv.dk"; dl: "bv.dl"; dm: "bv.dm"; dn: "bv.dn"; do: "bv.do"; dp: "bv.dp"; dq: "bv.dq"; dr: "bv.dr"; ds: "bv.ds"; dt: "bv.dt"; du: "bv.du"; dv: "bv.dv"; dw: "bv.dw"; dx: "bv.dx"; dy: "bv.dy"; dz: "bv.dz"; ea: "bv.ea"; eb: "bv.eb"; ec: "bv.ec"; ed: "bv.ed"; ee: "bv.ee"; ef: "bv.ef"; eg: "bv.eg"; eh: "bv.eh"; ei: "bv.ei"; ej: "bv.ej"; ek: "bv.ek"; el: "bv.el"; em: "bv.em"; en: "bv.en"; eo: "bv.eo"; ep: "bv.ep"; eq: "bv.eq"; er: "bv.er"; es: "bv.es"; et: "bv.et"; eu: "bv.eu"; ev: "bv.ev"; ew: "bv.ew"; ex: "bv.ex"; ey: "bv.ey"; ez: "bv.ez"; fa: "bv.fa"; fb: "bv.fb"; fc: "bv.fc"; fd: "bv.fd"; fe: "bv.fe"; ff: "bv.ff"; fg: "bv.fg"; fh: "bv.fh"; fi: "bv.fi"; fj: "bv.fj"; fk: "bv.fk"; fl: "bv.fl"; fm: "bv.fm"; fn: "bv.fn"; fo: "bv.fo"; fp: "bv.fp"; fq: "bv.fq"; fr: "bv.fr"; fs: "bv.fs"; ft: "bv.ft"; fu: "bv.fu"; fv: "bv.fv"; fw: "bv.fw"; fx: "bv.fx"; fy: "bv.fy"; fz: "bv.fz"; ga: "bv.ga"; gb: "bv.gb"; gc: "bv.gc"; gd: "bv.gd"; ge: "bv.ge"; gf: "bv.gf"; gg: "bv.gg"; gh: "bv.gh"; gi: "bv.gi"; gj: "bv.gj"; gk: "bv.gk"; gl: "bv.gl"; gm: "bv.gm"; gn: "bv.gn"; go: "bv.go"; gp: "bv.gp"; gq: "bv.gq"; gr: "bv.gr"; gs: "bv.gs"; gt: "bv.gt"; gu: "bv.gu"; gv: "bv.gv"; gw: "bv.gw"; gx: "bv.gx"; gy: "bv.gy"; gz: "bv.gz"; ha: "bv.ha"; hb: "bv.hb"; hc: "bv.hc"; hd: "bv.hd"; he: "bv.he"; hf: "bv.hf"; hg: "bv.hg"; hh: "bv.hh"; hi: "bv.hi"; hj: "bv.hj"; hk: "bv.hk"; hl: "bv.hl"; hm: "bv.hm"; hn: "bv.hn"; ho: "bv.ho"; hp: "bv.hp"; hq: "bv.hq"; hr: "bv.hr"; hs: "bv.hs"; ht: "bv.ht"; hu: "bv.hu"; hv: "bv.hv"; hw: "bv.hw"; hx: "bv.hx"; hy: "bv.hy"; hz: "bv.hz"; ia: "bv.ia"; ib: "bv.ib"; ic: "bv.ic"; id: "bv.id"; ie: "bv.ie"; if: "bv.if"; ig: "bv.ig"; ih: "bv.ih"; ii: "bv.ii"; ij: "bv.ij"; ik: "bv.ik"; il: "bv.il"; im: "bv.im"; in: "bv.in"; io: "bv.io"; ip: "bv.ip"; iq: "bv.iq"; ir: "bv.ir"; is: "bv.is"; it: "bv.it"; iu: "bv.iu"; iv: "bv.iv"; iw: "bv.iw"; ix: "bv.ix"; iy: "bv.iy"; iz: "bv.iz"; ja: "bv.ja"; jb: "bv.jb"; jc: "bv.jc"; jd: "bv.jd"; je: "bv.je"; jf: "bv.jf"; jg: "bv.jg"; jh: "bv.jh"; ji: "bv.ji"; jj: "bv.jj"; jk: "bv.jk"; jl: "bv.jl"; jm: "bv.jm"; jn: "bv.jn"; jo: "bv.jo"; jp: "bv.jp"; jq: "bv.jq"; jr: "bv.jr"; js: "bv.js"; jt: "bv.jt"; ju: "bv.ju"; jv: "bv.jv"; jw: "bv.jw"; jx: "bv.jx"; jy: "bv.jy"; jz: "bv.jz"; ka: "bv.ka"; kb: "bv.kb"; kc: "bv.kc"; kd: "bv.kd"; ke: "bv.ke"; kf: "bv.kf"; kg: "bv.kg"; kh: "bv.kh"; ki: "bv.ki"; kj: "bv.kj"; kk: "bv.kk"; kl: "bv.kl"; km: "bv.km"; kn: "bv.kn"; ko: "bv.ko"; kp: "bv.kp"; kq: "bv.kq"; kr: "bv.kr"; ks: "bv.ks"; kt: "bv.kt"; ku: "bv.ku"; kv: "bv.kv"; kw: "bv.kw"; kx: "bv.kx"; ky: "bv.ky"; kz: "bv.kz"; la: "bv.la"; lb: "bv.lb"; lc: "bv.lc"; ld: "bv.ld"; le: "bv.le"; lf: "bv.lf"; lg: "bv.lg"; lh: "bv.lh"; li: "bv.li"; lj: "bv.lj"; lk: "bv.lk"; ll: "bv.ll"; lm: "bv.lm"; ln: "bv.ln"; lo: "bv.lo"; lp: "bv.lp"; lq: "bv.lq"; lr: "bv.lr"; ls: "bv.ls"; lt: "bv.lt"; lu: "bv.lu"; lv: "bv.lv"; lw: "bv.lw"; lx: "bv.lx"; ly: "bv.ly"; lz: "bv.lz"; ma: "bv.ma"; mb: "bv.mb"; mc: "bv.mc"; md: "bv.md"; me: "bv.me"; mf: "bv.mf"; mg: "bv.mg"; mh: "bv.mh"; mi: "bv.mi"; mj: "bv.mj"; mk: "bv.mk"; ml: "bv.ml"; mm: "bv.mm"; mn: "bv.mn"; mo: "bv.mo"; mp: "bv.mp"; mq: "bv.mq"; mr: "bv.mr"; ms: "bv.ms"; mt: "bv.mt"; mu: "bv.mu"; mv: "bv.mv"; mw: "bv.mw"; mx: "bv.mx"; my: "bv.my"; mz: "bv.mz"; na: "bv.na"; nb: "bv.nb"; nc: "bv.nc"; nd: "bv.nd"; ne: "bv.ne"; nf: "bv.nf"; ng: "bv.ng"; nh: "bv.nh"; ni: "bv.ni"; nj: "bv.nj"; nk: "bv.nk"; nl: "bv.nl"; nm: "bv.nm"; nn: "bv.nn"; no: "bv.no"; np: "bv.np"; nq: "bv.nq"; nr: "bv.nr"; ns: "bv.ns"; nt: "bv.nt"; nu: "bv.nu"; nv: "bv.nv"; nw: "bv.nw"; nx: "bv.nx"; ny: "bv.ny"; nz: "bv.nz"; oa: "bv.oa"; ob: "bv.ob"; oc: "bv.oc"; od: "bv.od"; oe: "bv.oe"; of: "bv.of"; og: "bv.og"; oh: "bv.oh"; oi: "bv.oi"; oj: "bv.oj"; ok: "bv.ok"; ol: "bv.ol"; om: "bv.om"; on: "bv.on"; oo: "bv.oo"; op: "bv.op"; oq: "bv.oq"; or: "bv.or"; os: "bv.os"; ot: "bv.ot"; ou: "bv.ou"; ov: "bv.ov"; ow: "bv.ow"; ox: "bv.ox"; oy: "bv.oy"; oz: "bv.oz"; pa: "bv.pa"; pb: "bv.pb"; pc: "bv.pc"; pd: "bv.pd"; pe: "bv.pe"; pf: "bv.pf"; pg: "bv.pg"; ph: "bv.ph"; pi: "bv.pi"; pj: "bv.pj"; pk: "bv.pk"; pl: "bv.pl"; pm: "bv.pm"; pn: "bv.pn"; po: "bv.po"; pp: "bv.pp"; pq: "bv.pq"; pr: "bv.pr"; ps: "bv.ps"; pt: "bv.pt"; pu: "bv.pu"; pv: "bv.pv"; pw: "bv.pw"; px: "bv.px"; py: "bv.py"; pz: "bv.pz"; qa: "bv.qa"; qb: "bv.qb"; qc: "bv.qc"; qd: "bv.qd"; qe: "bv.qe"; qf: "bv.qf"; qg: "bv.qg"; qh: "bv.qh"; qi: "bv.qi"; qj: "bv.qj"; qk: "bv.qk"; ql: "bv.ql"; qm: "bv.qm"; qn: "bv.qn"; qo: "bv.qo"; qp: "bv.qp"; qq: "bv.qq"; qr: "bv.qr"; qs: "bv.qs"; qt: "bv.qt"; qu: "bv.qu"; qv: "bv.qv"; qw: "bv.qw"; qx: "bv.qx"; qy: "bv.qy"; qz: "bv.qz"; ra: "bv.ra"; rb: "bv.rb"; rc: "bv.rc"; rd: "bv.rd"; re: "bv.re"; rf: "bv.rf"; rg: "bv.rg"; rh: "bv.rh"; ri: "bv.ri"; rj: "bv.rj"; rk: "bv.rk"; rl: "bv.rl"; rm: "bv.rm"; rn: "bv.rn"; ro: "bv.ro"; rp: "bv.rp"; rq: "bv.rq"; rr: "bv.rr"; rs: "bv.rs"; rt: "bv.rt"; ru: "bv.ru"; rv: "bv.rv"; rw: "bv.rw"; rx: "bv.rx"; ry: "bv.ry"; rz: "bv.rz"; sa: "bv.sa"; sb: "bv.sb"; sc: "bv.sc"; sd: "bv.sd"; se: "bv.se"; sf: "bv.sf"; sg: "bv.sg"; sh: "bv.sh"; si: "bv.si"; sj: "bv.sj"; sk: "bv.sk"; sl: "bv.sl"; sm: "bv.sm"; sn: "bv.sn"; so: "bv.so"; sp: "bv.sp"; sq: "bv.sq"; sr: "bv.sr"; ss: "bv.ss"; st: "bv.st"; su: "bv.su"; sv: "bv.sv"; sw: "bv.sw"; sx: "bv.sx"; sy: "bv.sy"; sz: "bv.sz"; ta: "bv.ta"; tb: "bv.tb"; tc: "bv.tc"; td: "bv.td"; te: "bv.te"; tf: "bv.tf"; tg: "bv.tg"; th: "bv.th"; ti: "bv.ti"; tj: "bv.tj"; tk: "bv.tk"; tl: "bv.tl"; tm: "bv.tm"; tn: "bv.tn"; to: "bv.to"; tp: "bv.tp"; tq: "bv.tq"; tr: "bv.tr"; ts: "bv.ts"; tt: "bv.tt"; tu: "bv.tu"; tv: "bv.tv"; tw: "bv.tw"; tx: "bv.tx"; ty: "bv.ty"; tz: "bv.tz"; ua: "bv.ua"; ub: "bv.ub"; uc: "bv.uc"; ud: "bv.ud"; ue: "bv.ue"; uf: "bv.uf"; ug: "bv.ug"; uh: "bv.uh"; ui: "bv.ui"; uj: "bv.uj"; uk: "bv.uk"; ul: "bv.ul"; um: "bv.um"; un: "bv.un"; uo: "bv.uo"; up: "bv.up"; uq: "bv.uq"; ur: "bv.ur"; us: "bv.us"; ut: "bv.ut"; uu: "bv.uu"; uv: "bv.uv"; uw: "bv.uw"; ux: "bv.ux"; uy: "bv.uy"; uz: "bv.uz"; va: "bv.va"; vb: "bv.vb"; vc: "bv.vc"; vd: "bv.vd"; ve: "bv.ve"; vf: "bv.vf"; vg: "bv.vg"; vh: "bv.vh"; vi: "bv.vi"; vj: "bv.vj"; vk: "bv.vk"; vl: "bv.vl"; vm: "bv.vm"; vn: "bv.vn"; vo: "bv.vo"; vp: "bv.vp"; vq: "bv.vq"; vr: "bv.vr"; vs: "bv.vs"; vt: "bv.vt"; vu: "bv.vu"; vv: "bv.vv"; vw: "bv.vw"; vx: "bv.vx"; vy: "bv.vy"; vz: "bv.vz"; wa: "bv.wa"; wb: "bv.wb"; wc: "bv.wc"; wd: "bv.wd"; we: "bv.we"; wf: "bv.wf"; wg: "bv.wg"; wh: "bv.wh"; wi: "bv.wi"; wj: "bv.wj"; wk: "bv.wk"; wl: "bv.wl"; wm: "bv.wm"; wn: "bv.wn"; wo: "bv.wo"; wp: "bv.wp"; wq: "bv.wq"; wr: "bv.wr"; ws: "bv.ws"; wt: "bv.wt"; wu: "bv.wu"; wv: "bv.wv"; ww: "bv.ww"; wx: "bv.wx"; wy: "bv.wy"; wz: "bv.wz"; xa: "bv.xa"; xb: "bv.xb"; xc: "bv.xc"; xd: "bv.xd"; xe: "bv.xe"; xf: "bv.xf"; xg: "bv.xg"; xh: "bv.xh"; xi: "bv.xi"; xj: "bv.xj"; xk: "bv.xk"; xl: "bv.xl"; xm: "bv.xm"; xn: "bv.xn"; xo: "bv.xo"; xp: "bv.xp"; xq: "bv.xq"; xr: "bv.xr"; xs: "bv.xs"; xt: "bv.xt"; xu: "bv.xu"; xv: "bv.xv"; xw: "bv.xw"; xx: "bv.xx"; xy: "bv.xy"; xz: "bv.xz"; ya: "bv.ya"; yb: "bv.yb"; yc: "bv.yc"; yd: "bv.yd"; ye: "bv.ye"; yf: "bv.yf"; yg: "bv.yg"; yh: "bv.yh"; yi: "bv.yi"; yj: "bv.yj"; yk: "bv.yk"; yl: "bv.yl"; ym: "bv.ym"; yn: "bv.yn"; yo: "bv.yo"; yp: "bv.yp"; yq: "bv.yq"; yr: "bv.yr"; ys: "bv.ys"; yt: "bv.yt"; yu: "bv.yu"; yv: "bv.yv"; yw: "bv.yw"; yx: "bv.yx"; yy: "bv.yy"; yz: "bv.yz"; za: "bv.za"; zb: "bv.zb"; zc: "bv.zc"; zd: "bv.zd"; ze: "bv.ze"; zf: "bv.zf"; zg: "bv.zg"; zh: "bv.zh"; zi: "bv.zi"; zj: "bv.zj"; zk: "bv.zk"; zl: "bv.zl"; zm: "bv.zm"; zn: "bv.zn"; zo: "bv.zo"; zp: "bv.zp"; zq: "bv.zq"; zr: "bv.zr"; zs: "bv.zs"; zt: "bv.zt"; zu: "bv.zu"; zv: "bv.zv"; zw: "bv.zw"; zx: "bv.zx"; zy: "bv.zy"; zz: "bv.zz"; }; bw: { aa: "bw.aa"; ab: "bw.ab"; ac: "bw.ac"; ad: "bw.ad"; ae: "bw.ae"; af: "bw.af"; ag: "bw.ag"; ah: "bw.ah"; ai: "bw.ai"; aj: "bw.aj"; ak: "bw.ak"; al: "bw.al"; am: "bw.am"; an: "bw.an"; ao: "bw.ao"; ap: "bw.ap"; aq: "bw.aq"; ar: "bw.ar"; as: "bw.as"; at: "bw.at"; au: "bw.au"; av: "bw.av"; aw: "bw.aw"; ax: "bw.ax"; ay: "bw.ay"; az: "bw.az"; ba: "bw.ba"; bb: "bw.bb"; bc: "bw.bc"; bd: "bw.bd"; be: "bw.be"; bf: "bw.bf"; bg: "bw.bg"; bh: "bw.bh"; bi: "bw.bi"; bj: "bw.bj"; bk: "bw.bk"; bl: "bw.bl"; bm: "bw.bm"; bn: "bw.bn"; bo: "bw.bo"; bp: "bw.bp"; bq: "bw.bq"; br: "bw.br"; bs: "bw.bs"; bt: "bw.bt"; bu: "bw.bu"; bv: "bw.bv"; bw: "bw.bw"; bx: "bw.bx"; by: "bw.by"; bz: "bw.bz"; ca: "bw.ca"; cb: "bw.cb"; cc: "bw.cc"; cd: "bw.cd"; ce: "bw.ce"; cf: "bw.cf"; cg: "bw.cg"; ch: "bw.ch"; ci: "bw.ci"; cj: "bw.cj"; ck: "bw.ck"; cl: "bw.cl"; cm: "bw.cm"; cn: "bw.cn"; co: "bw.co"; cp: "bw.cp"; cq: "bw.cq"; cr: "bw.cr"; cs: "bw.cs"; ct: "bw.ct"; cu: "bw.cu"; cv: "bw.cv"; cw: "bw.cw"; cx: "bw.cx"; cy: "bw.cy"; cz: "bw.cz"; da: "bw.da"; db: "bw.db"; dc: "bw.dc"; dd: "bw.dd"; de: "bw.de"; df: "bw.df"; dg: "bw.dg"; dh: "bw.dh"; di: "bw.di"; dj: "bw.dj"; dk: "bw.dk"; dl: "bw.dl"; dm: "bw.dm"; dn: "bw.dn"; do: "bw.do"; dp: "bw.dp"; dq: "bw.dq"; dr: "bw.dr"; ds: "bw.ds"; dt: "bw.dt"; du: "bw.du"; dv: "bw.dv"; dw: "bw.dw"; dx: "bw.dx"; dy: "bw.dy"; dz: "bw.dz"; ea: "bw.ea"; eb: "bw.eb"; ec: "bw.ec"; ed: "bw.ed"; ee: "bw.ee"; ef: "bw.ef"; eg: "bw.eg"; eh: "bw.eh"; ei: "bw.ei"; ej: "bw.ej"; ek: "bw.ek"; el: "bw.el"; em: "bw.em"; en: "bw.en"; eo: "bw.eo"; ep: "bw.ep"; eq: "bw.eq"; er: "bw.er"; es: "bw.es"; et: "bw.et"; eu: "bw.eu"; ev: "bw.ev"; ew: "bw.ew"; ex: "bw.ex"; ey: "bw.ey"; ez: "bw.ez"; fa: "bw.fa"; fb: "bw.fb"; fc: "bw.fc"; fd: "bw.fd"; fe: "bw.fe"; ff: "bw.ff"; fg: "bw.fg"; fh: "bw.fh"; fi: "bw.fi"; fj: "bw.fj"; fk: "bw.fk"; fl: "bw.fl"; fm: "bw.fm"; fn: "bw.fn"; fo: "bw.fo"; fp: "bw.fp"; fq: "bw.fq"; fr: "bw.fr"; fs: "bw.fs"; ft: "bw.ft"; fu: "bw.fu"; fv: "bw.fv"; fw: "bw.fw"; fx: "bw.fx"; fy: "bw.fy"; fz: "bw.fz"; ga: "bw.ga"; gb: "bw.gb"; gc: "bw.gc"; gd: "bw.gd"; ge: "bw.ge"; gf: "bw.gf"; gg: "bw.gg"; gh: "bw.gh"; gi: "bw.gi"; gj: "bw.gj"; gk: "bw.gk"; gl: "bw.gl"; gm: "bw.gm"; gn: "bw.gn"; go: "bw.go"; gp: "bw.gp"; gq: "bw.gq"; gr: "bw.gr"; gs: "bw.gs"; gt: "bw.gt"; gu: "bw.gu"; gv: "bw.gv"; gw: "bw.gw"; gx: "bw.gx"; gy: "bw.gy"; gz: "bw.gz"; ha: "bw.ha"; hb: "bw.hb"; hc: "bw.hc"; hd: "bw.hd"; he: "bw.he"; hf: "bw.hf"; hg: "bw.hg"; hh: "bw.hh"; hi: "bw.hi"; hj: "bw.hj"; hk: "bw.hk"; hl: "bw.hl"; hm: "bw.hm"; hn: "bw.hn"; ho: "bw.ho"; hp: "bw.hp"; hq: "bw.hq"; hr: "bw.hr"; hs: "bw.hs"; ht: "bw.ht"; hu: "bw.hu"; hv: "bw.hv"; hw: "bw.hw"; hx: "bw.hx"; hy: "bw.hy"; hz: "bw.hz"; ia: "bw.ia"; ib: "bw.ib"; ic: "bw.ic"; id: "bw.id"; ie: "bw.ie"; if: "bw.if"; ig: "bw.ig"; ih: "bw.ih"; ii: "bw.ii"; ij: "bw.ij"; ik: "bw.ik"; il: "bw.il"; im: "bw.im"; in: "bw.in"; io: "bw.io"; ip: "bw.ip"; iq: "bw.iq"; ir: "bw.ir"; is: "bw.is"; it: "bw.it"; iu: "bw.iu"; iv: "bw.iv"; iw: "bw.iw"; ix: "bw.ix"; iy: "bw.iy"; iz: "bw.iz"; ja: "bw.ja"; jb: "bw.jb"; jc: "bw.jc"; jd: "bw.jd"; je: "bw.je"; jf: "bw.jf"; jg: "bw.jg"; jh: "bw.jh"; ji: "bw.ji"; jj: "bw.jj"; jk: "bw.jk"; jl: "bw.jl"; jm: "bw.jm"; jn: "bw.jn"; jo: "bw.jo"; jp: "bw.jp"; jq: "bw.jq"; jr: "bw.jr"; js: "bw.js"; jt: "bw.jt"; ju: "bw.ju"; jv: "bw.jv"; jw: "bw.jw"; jx: "bw.jx"; jy: "bw.jy"; jz: "bw.jz"; ka: "bw.ka"; kb: "bw.kb"; kc: "bw.kc"; kd: "bw.kd"; ke: "bw.ke"; kf: "bw.kf"; kg: "bw.kg"; kh: "bw.kh"; ki: "bw.ki"; kj: "bw.kj"; kk: "bw.kk"; kl: "bw.kl"; km: "bw.km"; kn: "bw.kn"; ko: "bw.ko"; kp: "bw.kp"; kq: "bw.kq"; kr: "bw.kr"; ks: "bw.ks"; kt: "bw.kt"; ku: "bw.ku"; kv: "bw.kv"; kw: "bw.kw"; kx: "bw.kx"; ky: "bw.ky"; kz: "bw.kz"; la: "bw.la"; lb: "bw.lb"; lc: "bw.lc"; ld: "bw.ld"; le: "bw.le"; lf: "bw.lf"; lg: "bw.lg"; lh: "bw.lh"; li: "bw.li"; lj: "bw.lj"; lk: "bw.lk"; ll: "bw.ll"; lm: "bw.lm"; ln: "bw.ln"; lo: "bw.lo"; lp: "bw.lp"; lq: "bw.lq"; lr: "bw.lr"; ls: "bw.ls"; lt: "bw.lt"; lu: "bw.lu"; lv: "bw.lv"; lw: "bw.lw"; lx: "bw.lx"; ly: "bw.ly"; lz: "bw.lz"; ma: "bw.ma"; mb: "bw.mb"; mc: "bw.mc"; md: "bw.md"; me: "bw.me"; mf: "bw.mf"; mg: "bw.mg"; mh: "bw.mh"; mi: "bw.mi"; mj: "bw.mj"; mk: "bw.mk"; ml: "bw.ml"; mm: "bw.mm"; mn: "bw.mn"; mo: "bw.mo"; mp: "bw.mp"; mq: "bw.mq"; mr: "bw.mr"; ms: "bw.ms"; mt: "bw.mt"; mu: "bw.mu"; mv: "bw.mv"; mw: "bw.mw"; mx: "bw.mx"; my: "bw.my"; mz: "bw.mz"; na: "bw.na"; nb: "bw.nb"; nc: "bw.nc"; nd: "bw.nd"; ne: "bw.ne"; nf: "bw.nf"; ng: "bw.ng"; nh: "bw.nh"; ni: "bw.ni"; nj: "bw.nj"; nk: "bw.nk"; nl: "bw.nl"; nm: "bw.nm"; nn: "bw.nn"; no: "bw.no"; np: "bw.np"; nq: "bw.nq"; nr: "bw.nr"; ns: "bw.ns"; nt: "bw.nt"; nu: "bw.nu"; nv: "bw.nv"; nw: "bw.nw"; nx: "bw.nx"; ny: "bw.ny"; nz: "bw.nz"; oa: "bw.oa"; ob: "bw.ob"; oc: "bw.oc"; od: "bw.od"; oe: "bw.oe"; of: "bw.of"; og: "bw.og"; oh: "bw.oh"; oi: "bw.oi"; oj: "bw.oj"; ok: "bw.ok"; ol: "bw.ol"; om: "bw.om"; on: "bw.on"; oo: "bw.oo"; op: "bw.op"; oq: "bw.oq"; or: "bw.or"; os: "bw.os"; ot: "bw.ot"; ou: "bw.ou"; ov: "bw.ov"; ow: "bw.ow"; ox: "bw.ox"; oy: "bw.oy"; oz: "bw.oz"; pa: "bw.pa"; pb: "bw.pb"; pc: "bw.pc"; pd: "bw.pd"; pe: "bw.pe"; pf: "bw.pf"; pg: "bw.pg"; ph: "bw.ph"; pi: "bw.pi"; pj: "bw.pj"; pk: "bw.pk"; pl: "bw.pl"; pm: "bw.pm"; pn: "bw.pn"; po: "bw.po"; pp: "bw.pp"; pq: "bw.pq"; pr: "bw.pr"; ps: "bw.ps"; pt: "bw.pt"; pu: "bw.pu"; pv: "bw.pv"; pw: "bw.pw"; px: "bw.px"; py: "bw.py"; pz: "bw.pz"; qa: "bw.qa"; qb: "bw.qb"; qc: "bw.qc"; qd: "bw.qd"; qe: "bw.qe"; qf: "bw.qf"; qg: "bw.qg"; qh: "bw.qh"; qi: "bw.qi"; qj: "bw.qj"; qk: "bw.qk"; ql: "bw.ql"; qm: "bw.qm"; qn: "bw.qn"; qo: "bw.qo"; qp: "bw.qp"; qq: "bw.qq"; qr: "bw.qr"; qs: "bw.qs"; qt: "bw.qt"; qu: "bw.qu"; qv: "bw.qv"; qw: "bw.qw"; qx: "bw.qx"; qy: "bw.qy"; qz: "bw.qz"; ra: "bw.ra"; rb: "bw.rb"; rc: "bw.rc"; rd: "bw.rd"; re: "bw.re"; rf: "bw.rf"; rg: "bw.rg"; rh: "bw.rh"; ri: "bw.ri"; rj: "bw.rj"; rk: "bw.rk"; rl: "bw.rl"; rm: "bw.rm"; rn: "bw.rn"; ro: "bw.ro"; rp: "bw.rp"; rq: "bw.rq"; rr: "bw.rr"; rs: "bw.rs"; rt: "bw.rt"; ru: "bw.ru"; rv: "bw.rv"; rw: "bw.rw"; rx: "bw.rx"; ry: "bw.ry"; rz: "bw.rz"; sa: "bw.sa"; sb: "bw.sb"; sc: "bw.sc"; sd: "bw.sd"; se: "bw.se"; sf: "bw.sf"; sg: "bw.sg"; sh: "bw.sh"; si: "bw.si"; sj: "bw.sj"; sk: "bw.sk"; sl: "bw.sl"; sm: "bw.sm"; sn: "bw.sn"; so: "bw.so"; sp: "bw.sp"; sq: "bw.sq"; sr: "bw.sr"; ss: "bw.ss"; st: "bw.st"; su: "bw.su"; sv: "bw.sv"; sw: "bw.sw"; sx: "bw.sx"; sy: "bw.sy"; sz: "bw.sz"; ta: "bw.ta"; tb: "bw.tb"; tc: "bw.tc"; td: "bw.td"; te: "bw.te"; tf: "bw.tf"; tg: "bw.tg"; th: "bw.th"; ti: "bw.ti"; tj: "bw.tj"; tk: "bw.tk"; tl: "bw.tl"; tm: "bw.tm"; tn: "bw.tn"; to: "bw.to"; tp: "bw.tp"; tq: "bw.tq"; tr: "bw.tr"; ts: "bw.ts"; tt: "bw.tt"; tu: "bw.tu"; tv: "bw.tv"; tw: "bw.tw"; tx: "bw.tx"; ty: "bw.ty"; tz: "bw.tz"; ua: "bw.ua"; ub: "bw.ub"; uc: "bw.uc"; ud: "bw.ud"; ue: "bw.ue"; uf: "bw.uf"; ug: "bw.ug"; uh: "bw.uh"; ui: "bw.ui"; uj: "bw.uj"; uk: "bw.uk"; ul: "bw.ul"; um: "bw.um"; un: "bw.un"; uo: "bw.uo"; up: "bw.up"; uq: "bw.uq"; ur: "bw.ur"; us: "bw.us"; ut: "bw.ut"; uu: "bw.uu"; uv: "bw.uv"; uw: "bw.uw"; ux: "bw.ux"; uy: "bw.uy"; uz: "bw.uz"; va: "bw.va"; vb: "bw.vb"; vc: "bw.vc"; vd: "bw.vd"; ve: "bw.ve"; vf: "bw.vf"; vg: "bw.vg"; vh: "bw.vh"; vi: "bw.vi"; vj: "bw.vj"; vk: "bw.vk"; vl: "bw.vl"; vm: "bw.vm"; vn: "bw.vn"; vo: "bw.vo"; vp: "bw.vp"; vq: "bw.vq"; vr: "bw.vr"; vs: "bw.vs"; vt: "bw.vt"; vu: "bw.vu"; vv: "bw.vv"; vw: "bw.vw"; vx: "bw.vx"; vy: "bw.vy"; vz: "bw.vz"; wa: "bw.wa"; wb: "bw.wb"; wc: "bw.wc"; wd: "bw.wd"; we: "bw.we"; wf: "bw.wf"; wg: "bw.wg"; wh: "bw.wh"; wi: "bw.wi"; wj: "bw.wj"; wk: "bw.wk"; wl: "bw.wl"; wm: "bw.wm"; wn: "bw.wn"; wo: "bw.wo"; wp: "bw.wp"; wq: "bw.wq"; wr: "bw.wr"; ws: "bw.ws"; wt: "bw.wt"; wu: "bw.wu"; wv: "bw.wv"; ww: "bw.ww"; wx: "bw.wx"; wy: "bw.wy"; wz: "bw.wz"; xa: "bw.xa"; xb: "bw.xb"; xc: "bw.xc"; xd: "bw.xd"; xe: "bw.xe"; xf: "bw.xf"; xg: "bw.xg"; xh: "bw.xh"; xi: "bw.xi"; xj: "bw.xj"; xk: "bw.xk"; xl: "bw.xl"; xm: "bw.xm"; xn: "bw.xn"; xo: "bw.xo"; xp: "bw.xp"; xq: "bw.xq"; xr: "bw.xr"; xs: "bw.xs"; xt: "bw.xt"; xu: "bw.xu"; xv: "bw.xv"; xw: "bw.xw"; xx: "bw.xx"; xy: "bw.xy"; xz: "bw.xz"; ya: "bw.ya"; yb: "bw.yb"; yc: "bw.yc"; yd: "bw.yd"; ye: "bw.ye"; yf: "bw.yf"; yg: "bw.yg"; yh: "bw.yh"; yi: "bw.yi"; yj: "bw.yj"; yk: "bw.yk"; yl: "bw.yl"; ym: "bw.ym"; yn: "bw.yn"; yo: "bw.yo"; yp: "bw.yp"; yq: "bw.yq"; yr: "bw.yr"; ys: "bw.ys"; yt: "bw.yt"; yu: "bw.yu"; yv: "bw.yv"; yw: "bw.yw"; yx: "bw.yx"; yy: "bw.yy"; yz: "bw.yz"; za: "bw.za"; zb: "bw.zb"; zc: "bw.zc"; zd: "bw.zd"; ze: "bw.ze"; zf: "bw.zf"; zg: "bw.zg"; zh: "bw.zh"; zi: "bw.zi"; zj: "bw.zj"; zk: "bw.zk"; zl: "bw.zl"; zm: "bw.zm"; zn: "bw.zn"; zo: "bw.zo"; zp: "bw.zp"; zq: "bw.zq"; zr: "bw.zr"; zs: "bw.zs"; zt: "bw.zt"; zu: "bw.zu"; zv: "bw.zv"; zw: "bw.zw"; zx: "bw.zx"; zy: "bw.zy"; zz: "bw.zz"; }; bx: { aa: "bx.aa"; ab: "bx.ab"; ac: "bx.ac"; ad: "bx.ad"; ae: "bx.ae"; af: "bx.af"; ag: "bx.ag"; ah: "bx.ah"; ai: "bx.ai"; aj: "bx.aj"; ak: "bx.ak"; al: "bx.al"; am: "bx.am"; an: "bx.an"; ao: "bx.ao"; ap: "bx.ap"; aq: "bx.aq"; ar: "bx.ar"; as: "bx.as"; at: "bx.at"; au: "bx.au"; av: "bx.av"; aw: "bx.aw"; ax: "bx.ax"; ay: "bx.ay"; az: "bx.az"; ba: "bx.ba"; bb: "bx.bb"; bc: "bx.bc"; bd: "bx.bd"; be: "bx.be"; bf: "bx.bf"; bg: "bx.bg"; bh: "bx.bh"; bi: "bx.bi"; bj: "bx.bj"; bk: "bx.bk"; bl: "bx.bl"; bm: "bx.bm"; bn: "bx.bn"; bo: "bx.bo"; bp: "bx.bp"; bq: "bx.bq"; br: "bx.br"; bs: "bx.bs"; bt: "bx.bt"; bu: "bx.bu"; bv: "bx.bv"; bw: "bx.bw"; bx: "bx.bx"; by: "bx.by"; bz: "bx.bz"; ca: "bx.ca"; cb: "bx.cb"; cc: "bx.cc"; cd: "bx.cd"; ce: "bx.ce"; cf: "bx.cf"; cg: "bx.cg"; ch: "bx.ch"; ci: "bx.ci"; cj: "bx.cj"; ck: "bx.ck"; cl: "bx.cl"; cm: "bx.cm"; cn: "bx.cn"; co: "bx.co"; cp: "bx.cp"; cq: "bx.cq"; cr: "bx.cr"; cs: "bx.cs"; ct: "bx.ct"; cu: "bx.cu"; cv: "bx.cv"; cw: "bx.cw"; cx: "bx.cx"; cy: "bx.cy"; cz: "bx.cz"; da: "bx.da"; db: "bx.db"; dc: "bx.dc"; dd: "bx.dd"; de: "bx.de"; df: "bx.df"; dg: "bx.dg"; dh: "bx.dh"; di: "bx.di"; dj: "bx.dj"; dk: "bx.dk"; dl: "bx.dl"; dm: "bx.dm"; dn: "bx.dn"; do: "bx.do"; dp: "bx.dp"; dq: "bx.dq"; dr: "bx.dr"; ds: "bx.ds"; dt: "bx.dt"; du: "bx.du"; dv: "bx.dv"; dw: "bx.dw"; dx: "bx.dx"; dy: "bx.dy"; dz: "bx.dz"; ea: "bx.ea"; eb: "bx.eb"; ec: "bx.ec"; ed: "bx.ed"; ee: "bx.ee"; ef: "bx.ef"; eg: "bx.eg"; eh: "bx.eh"; ei: "bx.ei"; ej: "bx.ej"; ek: "bx.ek"; el: "bx.el"; em: "bx.em"; en: "bx.en"; eo: "bx.eo"; ep: "bx.ep"; eq: "bx.eq"; er: "bx.er"; es: "bx.es"; et: "bx.et"; eu: "bx.eu"; ev: "bx.ev"; ew: "bx.ew"; ex: "bx.ex"; ey: "bx.ey"; ez: "bx.ez"; fa: "bx.fa"; fb: "bx.fb"; fc: "bx.fc"; fd: "bx.fd"; fe: "bx.fe"; ff: "bx.ff"; fg: "bx.fg"; fh: "bx.fh"; fi: "bx.fi"; fj: "bx.fj"; fk: "bx.fk"; fl: "bx.fl"; fm: "bx.fm"; fn: "bx.fn"; fo: "bx.fo"; fp: "bx.fp"; fq: "bx.fq"; fr: "bx.fr"; fs: "bx.fs"; ft: "bx.ft"; fu: "bx.fu"; fv: "bx.fv"; fw: "bx.fw"; fx: "bx.fx"; fy: "bx.fy"; fz: "bx.fz"; ga: "bx.ga"; gb: "bx.gb"; gc: "bx.gc"; gd: "bx.gd"; ge: "bx.ge"; gf: "bx.gf"; gg: "bx.gg"; gh: "bx.gh"; gi: "bx.gi"; gj: "bx.gj"; gk: "bx.gk"; gl: "bx.gl"; gm: "bx.gm"; gn: "bx.gn"; go: "bx.go"; gp: "bx.gp"; gq: "bx.gq"; gr: "bx.gr"; gs: "bx.gs"; gt: "bx.gt"; gu: "bx.gu"; gv: "bx.gv"; gw: "bx.gw"; gx: "bx.gx"; gy: "bx.gy"; gz: "bx.gz"; ha: "bx.ha"; hb: "bx.hb"; hc: "bx.hc"; hd: "bx.hd"; he: "bx.he"; hf: "bx.hf"; hg: "bx.hg"; hh: "bx.hh"; hi: "bx.hi"; hj: "bx.hj"; hk: "bx.hk"; hl: "bx.hl"; hm: "bx.hm"; hn: "bx.hn"; ho: "bx.ho"; hp: "bx.hp"; hq: "bx.hq"; hr: "bx.hr"; hs: "bx.hs"; ht: "bx.ht"; hu: "bx.hu"; hv: "bx.hv"; hw: "bx.hw"; hx: "bx.hx"; hy: "bx.hy"; hz: "bx.hz"; ia: "bx.ia"; ib: "bx.ib"; ic: "bx.ic"; id: "bx.id"; ie: "bx.ie"; if: "bx.if"; ig: "bx.ig"; ih: "bx.ih"; ii: "bx.ii"; ij: "bx.ij"; ik: "bx.ik"; il: "bx.il"; im: "bx.im"; in: "bx.in"; io: "bx.io"; ip: "bx.ip"; iq: "bx.iq"; ir: "bx.ir"; is: "bx.is"; it: "bx.it"; iu: "bx.iu"; iv: "bx.iv"; iw: "bx.iw"; ix: "bx.ix"; iy: "bx.iy"; iz: "bx.iz"; ja: "bx.ja"; jb: "bx.jb"; jc: "bx.jc"; jd: "bx.jd"; je: "bx.je"; jf: "bx.jf"; jg: "bx.jg"; jh: "bx.jh"; ji: "bx.ji"; jj: "bx.jj"; jk: "bx.jk"; jl: "bx.jl"; jm: "bx.jm"; jn: "bx.jn"; jo: "bx.jo"; jp: "bx.jp"; jq: "bx.jq"; jr: "bx.jr"; js: "bx.js"; jt: "bx.jt"; ju: "bx.ju"; jv: "bx.jv"; jw: "bx.jw"; jx: "bx.jx"; jy: "bx.jy"; jz: "bx.jz"; ka: "bx.ka"; kb: "bx.kb"; kc: "bx.kc"; kd: "bx.kd"; ke: "bx.ke"; kf: "bx.kf"; kg: "bx.kg"; kh: "bx.kh"; ki: "bx.ki"; kj: "bx.kj"; kk: "bx.kk"; kl: "bx.kl"; km: "bx.km"; kn: "bx.kn"; ko: "bx.ko"; kp: "bx.kp"; kq: "bx.kq"; kr: "bx.kr"; ks: "bx.ks"; kt: "bx.kt"; ku: "bx.ku"; kv: "bx.kv"; kw: "bx.kw"; kx: "bx.kx"; ky: "bx.ky"; kz: "bx.kz"; la: "bx.la"; lb: "bx.lb"; lc: "bx.lc"; ld: "bx.ld"; le: "bx.le"; lf: "bx.lf"; lg: "bx.lg"; lh: "bx.lh"; li: "bx.li"; lj: "bx.lj"; lk: "bx.lk"; ll: "bx.ll"; lm: "bx.lm"; ln: "bx.ln"; lo: "bx.lo"; lp: "bx.lp"; lq: "bx.lq"; lr: "bx.lr"; ls: "bx.ls"; lt: "bx.lt"; lu: "bx.lu"; lv: "bx.lv"; lw: "bx.lw"; lx: "bx.lx"; ly: "bx.ly"; lz: "bx.lz"; ma: "bx.ma"; mb: "bx.mb"; mc: "bx.mc"; md: "bx.md"; me: "bx.me"; mf: "bx.mf"; mg: "bx.mg"; mh: "bx.mh"; mi: "bx.mi"; mj: "bx.mj"; mk: "bx.mk"; ml: "bx.ml"; mm: "bx.mm"; mn: "bx.mn"; mo: "bx.mo"; mp: "bx.mp"; mq: "bx.mq"; mr: "bx.mr"; ms: "bx.ms"; mt: "bx.mt"; mu: "bx.mu"; mv: "bx.mv"; mw: "bx.mw"; mx: "bx.mx"; my: "bx.my"; mz: "bx.mz"; na: "bx.na"; nb: "bx.nb"; nc: "bx.nc"; nd: "bx.nd"; ne: "bx.ne"; nf: "bx.nf"; ng: "bx.ng"; nh: "bx.nh"; ni: "bx.ni"; nj: "bx.nj"; nk: "bx.nk"; nl: "bx.nl"; nm: "bx.nm"; nn: "bx.nn"; no: "bx.no"; np: "bx.np"; nq: "bx.nq"; nr: "bx.nr"; ns: "bx.ns"; nt: "bx.nt"; nu: "bx.nu"; nv: "bx.nv"; nw: "bx.nw"; nx: "bx.nx"; ny: "bx.ny"; nz: "bx.nz"; oa: "bx.oa"; ob: "bx.ob"; oc: "bx.oc"; od: "bx.od"; oe: "bx.oe"; of: "bx.of"; og: "bx.og"; oh: "bx.oh"; oi: "bx.oi"; oj: "bx.oj"; ok: "bx.ok"; ol: "bx.ol"; om: "bx.om"; on: "bx.on"; oo: "bx.oo"; op: "bx.op"; oq: "bx.oq"; or: "bx.or"; os: "bx.os"; ot: "bx.ot"; ou: "bx.ou"; ov: "bx.ov"; ow: "bx.ow"; ox: "bx.ox"; oy: "bx.oy"; oz: "bx.oz"; pa: "bx.pa"; pb: "bx.pb"; pc: "bx.pc"; pd: "bx.pd"; pe: "bx.pe"; pf: "bx.pf"; pg: "bx.pg"; ph: "bx.ph"; pi: "bx.pi"; pj: "bx.pj"; pk: "bx.pk"; pl: "bx.pl"; pm: "bx.pm"; pn: "bx.pn"; po: "bx.po"; pp: "bx.pp"; pq: "bx.pq"; pr: "bx.pr"; ps: "bx.ps"; pt: "bx.pt"; pu: "bx.pu"; pv: "bx.pv"; pw: "bx.pw"; px: "bx.px"; py: "bx.py"; pz: "bx.pz"; qa: "bx.qa"; qb: "bx.qb"; qc: "bx.qc"; qd: "bx.qd"; qe: "bx.qe"; qf: "bx.qf"; qg: "bx.qg"; qh: "bx.qh"; qi: "bx.qi"; qj: "bx.qj"; qk: "bx.qk"; ql: "bx.ql"; qm: "bx.qm"; qn: "bx.qn"; qo: "bx.qo"; qp: "bx.qp"; qq: "bx.qq"; qr: "bx.qr"; qs: "bx.qs"; qt: "bx.qt"; qu: "bx.qu"; qv: "bx.qv"; qw: "bx.qw"; qx: "bx.qx"; qy: "bx.qy"; qz: "bx.qz"; ra: "bx.ra"; rb: "bx.rb"; rc: "bx.rc"; rd: "bx.rd"; re: "bx.re"; rf: "bx.rf"; rg: "bx.rg"; rh: "bx.rh"; ri: "bx.ri"; rj: "bx.rj"; rk: "bx.rk"; rl: "bx.rl"; rm: "bx.rm"; rn: "bx.rn"; ro: "bx.ro"; rp: "bx.rp"; rq: "bx.rq"; rr: "bx.rr"; rs: "bx.rs"; rt: "bx.rt"; ru: "bx.ru"; rv: "bx.rv"; rw: "bx.rw"; rx: "bx.rx"; ry: "bx.ry"; rz: "bx.rz"; sa: "bx.sa"; sb: "bx.sb"; sc: "bx.sc"; sd: "bx.sd"; se: "bx.se"; sf: "bx.sf"; sg: "bx.sg"; sh: "bx.sh"; si: "bx.si"; sj: "bx.sj"; sk: "bx.sk"; sl: "bx.sl"; sm: "bx.sm"; sn: "bx.sn"; so: "bx.so"; sp: "bx.sp"; sq: "bx.sq"; sr: "bx.sr"; ss: "bx.ss"; st: "bx.st"; su: "bx.su"; sv: "bx.sv"; sw: "bx.sw"; sx: "bx.sx"; sy: "bx.sy"; sz: "bx.sz"; ta: "bx.ta"; tb: "bx.tb"; tc: "bx.tc"; td: "bx.td"; te: "bx.te"; tf: "bx.tf"; tg: "bx.tg"; th: "bx.th"; ti: "bx.ti"; tj: "bx.tj"; tk: "bx.tk"; tl: "bx.tl"; tm: "bx.tm"; tn: "bx.tn"; to: "bx.to"; tp: "bx.tp"; tq: "bx.tq"; tr: "bx.tr"; ts: "bx.ts"; tt: "bx.tt"; tu: "bx.tu"; tv: "bx.tv"; tw: "bx.tw"; tx: "bx.tx"; ty: "bx.ty"; tz: "bx.tz"; ua: "bx.ua"; ub: "bx.ub"; uc: "bx.uc"; ud: "bx.ud"; ue: "bx.ue"; uf: "bx.uf"; ug: "bx.ug"; uh: "bx.uh"; ui: "bx.ui"; uj: "bx.uj"; uk: "bx.uk"; ul: "bx.ul"; um: "bx.um"; un: "bx.un"; uo: "bx.uo"; up: "bx.up"; uq: "bx.uq"; ur: "bx.ur"; us: "bx.us"; ut: "bx.ut"; uu: "bx.uu"; uv: "bx.uv"; uw: "bx.uw"; ux: "bx.ux"; uy: "bx.uy"; uz: "bx.uz"; va: "bx.va"; vb: "bx.vb"; vc: "bx.vc"; vd: "bx.vd"; ve: "bx.ve"; vf: "bx.vf"; vg: "bx.vg"; vh: "bx.vh"; vi: "bx.vi"; vj: "bx.vj"; vk: "bx.vk"; vl: "bx.vl"; vm: "bx.vm"; vn: "bx.vn"; vo: "bx.vo"; vp: "bx.vp"; vq: "bx.vq"; vr: "bx.vr"; vs: "bx.vs"; vt: "bx.vt"; vu: "bx.vu"; vv: "bx.vv"; vw: "bx.vw"; vx: "bx.vx"; vy: "bx.vy"; vz: "bx.vz"; wa: "bx.wa"; wb: "bx.wb"; wc: "bx.wc"; wd: "bx.wd"; we: "bx.we"; wf: "bx.wf"; wg: "bx.wg"; wh: "bx.wh"; wi: "bx.wi"; wj: "bx.wj"; wk: "bx.wk"; wl: "bx.wl"; wm: "bx.wm"; wn: "bx.wn"; wo: "bx.wo"; wp: "bx.wp"; wq: "bx.wq"; wr: "bx.wr"; ws: "bx.ws"; wt: "bx.wt"; wu: "bx.wu"; wv: "bx.wv"; ww: "bx.ww"; wx: "bx.wx"; wy: "bx.wy"; wz: "bx.wz"; xa: "bx.xa"; xb: "bx.xb"; xc: "bx.xc"; xd: "bx.xd"; xe: "bx.xe"; xf: "bx.xf"; xg: "bx.xg"; xh: "bx.xh"; xi: "bx.xi"; xj: "bx.xj"; xk: "bx.xk"; xl: "bx.xl"; xm: "bx.xm"; xn: "bx.xn"; xo: "bx.xo"; xp: "bx.xp"; xq: "bx.xq"; xr: "bx.xr"; xs: "bx.xs"; xt: "bx.xt"; xu: "bx.xu"; xv: "bx.xv"; xw: "bx.xw"; xx: "bx.xx"; xy: "bx.xy"; xz: "bx.xz"; ya: "bx.ya"; yb: "bx.yb"; yc: "bx.yc"; yd: "bx.yd"; ye: "bx.ye"; yf: "bx.yf"; yg: "bx.yg"; yh: "bx.yh"; yi: "bx.yi"; yj: "bx.yj"; yk: "bx.yk"; yl: "bx.yl"; ym: "bx.ym"; yn: "bx.yn"; yo: "bx.yo"; yp: "bx.yp"; yq: "bx.yq"; yr: "bx.yr"; ys: "bx.ys"; yt: "bx.yt"; yu: "bx.yu"; yv: "bx.yv"; yw: "bx.yw"; yx: "bx.yx"; yy: "bx.yy"; yz: "bx.yz"; za: "bx.za"; zb: "bx.zb"; zc: "bx.zc"; zd: "bx.zd"; ze: "bx.ze"; zf: "bx.zf"; zg: "bx.zg"; zh: "bx.zh"; zi: "bx.zi"; zj: "bx.zj"; zk: "bx.zk"; zl: "bx.zl"; zm: "bx.zm"; zn: "bx.zn"; zo: "bx.zo"; zp: "bx.zp"; zq: "bx.zq"; zr: "bx.zr"; zs: "bx.zs"; zt: "bx.zt"; zu: "bx.zu"; zv: "bx.zv"; zw: "bx.zw"; zx: "bx.zx"; zy: "bx.zy"; zz: "bx.zz"; }; by: { aa: "by.aa"; ab: "by.ab"; ac: "by.ac"; ad: "by.ad"; ae: "by.ae"; af: "by.af"; ag: "by.ag"; ah: "by.ah"; ai: "by.ai"; aj: "by.aj"; ak: "by.ak"; al: "by.al"; am: "by.am"; an: "by.an"; ao: "by.ao"; ap: "by.ap"; aq: "by.aq"; ar: "by.ar"; as: "by.as"; at: "by.at"; au: "by.au"; av: "by.av"; aw: "by.aw"; ax: "by.ax"; ay: "by.ay"; az: "by.az"; ba: "by.ba"; bb: "by.bb"; bc: "by.bc"; bd: "by.bd"; be: "by.be"; bf: "by.bf"; bg: "by.bg"; bh: "by.bh"; bi: "by.bi"; bj: "by.bj"; bk: "by.bk"; bl: "by.bl"; bm: "by.bm"; bn: "by.bn"; bo: "by.bo"; bp: "by.bp"; bq: "by.bq"; br: "by.br"; bs: "by.bs"; bt: "by.bt"; bu: "by.bu"; bv: "by.bv"; bw: "by.bw"; bx: "by.bx"; by: "by.by"; bz: "by.bz"; ca: "by.ca"; cb: "by.cb"; cc: "by.cc"; cd: "by.cd"; ce: "by.ce"; cf: "by.cf"; cg: "by.cg"; ch: "by.ch"; ci: "by.ci"; cj: "by.cj"; ck: "by.ck"; cl: "by.cl"; cm: "by.cm"; cn: "by.cn"; co: "by.co"; cp: "by.cp"; cq: "by.cq"; cr: "by.cr"; cs: "by.cs"; ct: "by.ct"; cu: "by.cu"; cv: "by.cv"; cw: "by.cw"; cx: "by.cx"; cy: "by.cy"; cz: "by.cz"; da: "by.da"; db: "by.db"; dc: "by.dc"; dd: "by.dd"; de: "by.de"; df: "by.df"; dg: "by.dg"; dh: "by.dh"; di: "by.di"; dj: "by.dj"; dk: "by.dk"; dl: "by.dl"; dm: "by.dm"; dn: "by.dn"; do: "by.do"; dp: "by.dp"; dq: "by.dq"; dr: "by.dr"; ds: "by.ds"; dt: "by.dt"; du: "by.du"; dv: "by.dv"; dw: "by.dw"; dx: "by.dx"; dy: "by.dy"; dz: "by.dz"; ea: "by.ea"; eb: "by.eb"; ec: "by.ec"; ed: "by.ed"; ee: "by.ee"; ef: "by.ef"; eg: "by.eg"; eh: "by.eh"; ei: "by.ei"; ej: "by.ej"; ek: "by.ek"; el: "by.el"; em: "by.em"; en: "by.en"; eo: "by.eo"; ep: "by.ep"; eq: "by.eq"; er: "by.er"; es: "by.es"; et: "by.et"; eu: "by.eu"; ev: "by.ev"; ew: "by.ew"; ex: "by.ex"; ey: "by.ey"; ez: "by.ez"; fa: "by.fa"; fb: "by.fb"; fc: "by.fc"; fd: "by.fd"; fe: "by.fe"; ff: "by.ff"; fg: "by.fg"; fh: "by.fh"; fi: "by.fi"; fj: "by.fj"; fk: "by.fk"; fl: "by.fl"; fm: "by.fm"; fn: "by.fn"; fo: "by.fo"; fp: "by.fp"; fq: "by.fq"; fr: "by.fr"; fs: "by.fs"; ft: "by.ft"; fu: "by.fu"; fv: "by.fv"; fw: "by.fw"; fx: "by.fx"; fy: "by.fy"; fz: "by.fz"; ga: "by.ga"; gb: "by.gb"; gc: "by.gc"; gd: "by.gd"; ge: "by.ge"; gf: "by.gf"; gg: "by.gg"; gh: "by.gh"; gi: "by.gi"; gj: "by.gj"; gk: "by.gk"; gl: "by.gl"; gm: "by.gm"; gn: "by.gn"; go: "by.go"; gp: "by.gp"; gq: "by.gq"; gr: "by.gr"; gs: "by.gs"; gt: "by.gt"; gu: "by.gu"; gv: "by.gv"; gw: "by.gw"; gx: "by.gx"; gy: "by.gy"; gz: "by.gz"; ha: "by.ha"; hb: "by.hb"; hc: "by.hc"; hd: "by.hd"; he: "by.he"; hf: "by.hf"; hg: "by.hg"; hh: "by.hh"; hi: "by.hi"; hj: "by.hj"; hk: "by.hk"; hl: "by.hl"; hm: "by.hm"; hn: "by.hn"; ho: "by.ho"; hp: "by.hp"; hq: "by.hq"; hr: "by.hr"; hs: "by.hs"; ht: "by.ht"; hu: "by.hu"; hv: "by.hv"; hw: "by.hw"; hx: "by.hx"; hy: "by.hy"; hz: "by.hz"; ia: "by.ia"; ib: "by.ib"; ic: "by.ic"; id: "by.id"; ie: "by.ie"; if: "by.if"; ig: "by.ig"; ih: "by.ih"; ii: "by.ii"; ij: "by.ij"; ik: "by.ik"; il: "by.il"; im: "by.im"; in: "by.in"; io: "by.io"; ip: "by.ip"; iq: "by.iq"; ir: "by.ir"; is: "by.is"; it: "by.it"; iu: "by.iu"; iv: "by.iv"; iw: "by.iw"; ix: "by.ix"; iy: "by.iy"; iz: "by.iz"; ja: "by.ja"; jb: "by.jb"; jc: "by.jc"; jd: "by.jd"; je: "by.je"; jf: "by.jf"; jg: "by.jg"; jh: "by.jh"; ji: "by.ji"; jj: "by.jj"; jk: "by.jk"; jl: "by.jl"; jm: "by.jm"; jn: "by.jn"; jo: "by.jo"; jp: "by.jp"; jq: "by.jq"; jr: "by.jr"; js: "by.js"; jt: "by.jt"; ju: "by.ju"; jv: "by.jv"; jw: "by.jw"; jx: "by.jx"; jy: "by.jy"; jz: "by.jz"; ka: "by.ka"; kb: "by.kb"; kc: "by.kc"; kd: "by.kd"; ke: "by.ke"; kf: "by.kf"; kg: "by.kg"; kh: "by.kh"; ki: "by.ki"; kj: "by.kj"; kk: "by.kk"; kl: "by.kl"; km: "by.km"; kn: "by.kn"; ko: "by.ko"; kp: "by.kp"; kq: "by.kq"; kr: "by.kr"; ks: "by.ks"; kt: "by.kt"; ku: "by.ku"; kv: "by.kv"; kw: "by.kw"; kx: "by.kx"; ky: "by.ky"; kz: "by.kz"; la: "by.la"; lb: "by.lb"; lc: "by.lc"; ld: "by.ld"; le: "by.le"; lf: "by.lf"; lg: "by.lg"; lh: "by.lh"; li: "by.li"; lj: "by.lj"; lk: "by.lk"; ll: "by.ll"; lm: "by.lm"; ln: "by.ln"; lo: "by.lo"; lp: "by.lp"; lq: "by.lq"; lr: "by.lr"; ls: "by.ls"; lt: "by.lt"; lu: "by.lu"; lv: "by.lv"; lw: "by.lw"; lx: "by.lx"; ly: "by.ly"; lz: "by.lz"; ma: "by.ma"; mb: "by.mb"; mc: "by.mc"; md: "by.md"; me: "by.me"; mf: "by.mf"; mg: "by.mg"; mh: "by.mh"; mi: "by.mi"; mj: "by.mj"; mk: "by.mk"; ml: "by.ml"; mm: "by.mm"; mn: "by.mn"; mo: "by.mo"; mp: "by.mp"; mq: "by.mq"; mr: "by.mr"; ms: "by.ms"; mt: "by.mt"; mu: "by.mu"; mv: "by.mv"; mw: "by.mw"; mx: "by.mx"; my: "by.my"; mz: "by.mz"; na: "by.na"; nb: "by.nb"; nc: "by.nc"; nd: "by.nd"; ne: "by.ne"; nf: "by.nf"; ng: "by.ng"; nh: "by.nh"; ni: "by.ni"; nj: "by.nj"; nk: "by.nk"; nl: "by.nl"; nm: "by.nm"; nn: "by.nn"; no: "by.no"; np: "by.np"; nq: "by.nq"; nr: "by.nr"; ns: "by.ns"; nt: "by.nt"; nu: "by.nu"; nv: "by.nv"; nw: "by.nw"; nx: "by.nx"; ny: "by.ny"; nz: "by.nz"; oa: "by.oa"; ob: "by.ob"; oc: "by.oc"; od: "by.od"; oe: "by.oe"; of: "by.of"; og: "by.og"; oh: "by.oh"; oi: "by.oi"; oj: "by.oj"; ok: "by.ok"; ol: "by.ol"; om: "by.om"; on: "by.on"; oo: "by.oo"; op: "by.op"; oq: "by.oq"; or: "by.or"; os: "by.os"; ot: "by.ot"; ou: "by.ou"; ov: "by.ov"; ow: "by.ow"; ox: "by.ox"; oy: "by.oy"; oz: "by.oz"; pa: "by.pa"; pb: "by.pb"; pc: "by.pc"; pd: "by.pd"; pe: "by.pe"; pf: "by.pf"; pg: "by.pg"; ph: "by.ph"; pi: "by.pi"; pj: "by.pj"; pk: "by.pk"; pl: "by.pl"; pm: "by.pm"; pn: "by.pn"; po: "by.po"; pp: "by.pp"; pq: "by.pq"; pr: "by.pr"; ps: "by.ps"; pt: "by.pt"; pu: "by.pu"; pv: "by.pv"; pw: "by.pw"; px: "by.px"; py: "by.py"; pz: "by.pz"; qa: "by.qa"; qb: "by.qb"; qc: "by.qc"; qd: "by.qd"; qe: "by.qe"; qf: "by.qf"; qg: "by.qg"; qh: "by.qh"; qi: "by.qi"; qj: "by.qj"; qk: "by.qk"; ql: "by.ql"; qm: "by.qm"; qn: "by.qn"; qo: "by.qo"; qp: "by.qp"; qq: "by.qq"; qr: "by.qr"; qs: "by.qs"; qt: "by.qt"; qu: "by.qu"; qv: "by.qv"; qw: "by.qw"; qx: "by.qx"; qy: "by.qy"; qz: "by.qz"; ra: "by.ra"; rb: "by.rb"; rc: "by.rc"; rd: "by.rd"; re: "by.re"; rf: "by.rf"; rg: "by.rg"; rh: "by.rh"; ri: "by.ri"; rj: "by.rj"; rk: "by.rk"; rl: "by.rl"; rm: "by.rm"; rn: "by.rn"; ro: "by.ro"; rp: "by.rp"; rq: "by.rq"; rr: "by.rr"; rs: "by.rs"; rt: "by.rt"; ru: "by.ru"; rv: "by.rv"; rw: "by.rw"; rx: "by.rx"; ry: "by.ry"; rz: "by.rz"; sa: "by.sa"; sb: "by.sb"; sc: "by.sc"; sd: "by.sd"; se: "by.se"; sf: "by.sf"; sg: "by.sg"; sh: "by.sh"; si: "by.si"; sj: "by.sj"; sk: "by.sk"; sl: "by.sl"; sm: "by.sm"; sn: "by.sn"; so: "by.so"; sp: "by.sp"; sq: "by.sq"; sr: "by.sr"; ss: "by.ss"; st: "by.st"; su: "by.su"; sv: "by.sv"; sw: "by.sw"; sx: "by.sx"; sy: "by.sy"; sz: "by.sz"; ta: "by.ta"; tb: "by.tb"; tc: "by.tc"; td: "by.td"; te: "by.te"; tf: "by.tf"; tg: "by.tg"; th: "by.th"; ti: "by.ti"; tj: "by.tj"; tk: "by.tk"; tl: "by.tl"; tm: "by.tm"; tn: "by.tn"; to: "by.to"; tp: "by.tp"; tq: "by.tq"; tr: "by.tr"; ts: "by.ts"; tt: "by.tt"; tu: "by.tu"; tv: "by.tv"; tw: "by.tw"; tx: "by.tx"; ty: "by.ty"; tz: "by.tz"; ua: "by.ua"; ub: "by.ub"; uc: "by.uc"; ud: "by.ud"; ue: "by.ue"; uf: "by.uf"; ug: "by.ug"; uh: "by.uh"; ui: "by.ui"; uj: "by.uj"; uk: "by.uk"; ul: "by.ul"; um: "by.um"; un: "by.un"; uo: "by.uo"; up: "by.up"; uq: "by.uq"; ur: "by.ur"; us: "by.us"; ut: "by.ut"; uu: "by.uu"; uv: "by.uv"; uw: "by.uw"; ux: "by.ux"; uy: "by.uy"; uz: "by.uz"; va: "by.va"; vb: "by.vb"; vc: "by.vc"; vd: "by.vd"; ve: "by.ve"; vf: "by.vf"; vg: "by.vg"; vh: "by.vh"; vi: "by.vi"; vj: "by.vj"; vk: "by.vk"; vl: "by.vl"; vm: "by.vm"; vn: "by.vn"; vo: "by.vo"; vp: "by.vp"; vq: "by.vq"; vr: "by.vr"; vs: "by.vs"; vt: "by.vt"; vu: "by.vu"; vv: "by.vv"; vw: "by.vw"; vx: "by.vx"; vy: "by.vy"; vz: "by.vz"; wa: "by.wa"; wb: "by.wb"; wc: "by.wc"; wd: "by.wd"; we: "by.we"; wf: "by.wf"; wg: "by.wg"; wh: "by.wh"; wi: "by.wi"; wj: "by.wj"; wk: "by.wk"; wl: "by.wl"; wm: "by.wm"; wn: "by.wn"; wo: "by.wo"; wp: "by.wp"; wq: "by.wq"; wr: "by.wr"; ws: "by.ws"; wt: "by.wt"; wu: "by.wu"; wv: "by.wv"; ww: "by.ww"; wx: "by.wx"; wy: "by.wy"; wz: "by.wz"; xa: "by.xa"; xb: "by.xb"; xc: "by.xc"; xd: "by.xd"; xe: "by.xe"; xf: "by.xf"; xg: "by.xg"; xh: "by.xh"; xi: "by.xi"; xj: "by.xj"; xk: "by.xk"; xl: "by.xl"; xm: "by.xm"; xn: "by.xn"; xo: "by.xo"; xp: "by.xp"; xq: "by.xq"; xr: "by.xr"; xs: "by.xs"; xt: "by.xt"; xu: "by.xu"; xv: "by.xv"; xw: "by.xw"; xx: "by.xx"; xy: "by.xy"; xz: "by.xz"; ya: "by.ya"; yb: "by.yb"; yc: "by.yc"; yd: "by.yd"; ye: "by.ye"; yf: "by.yf"; yg: "by.yg"; yh: "by.yh"; yi: "by.yi"; yj: "by.yj"; yk: "by.yk"; yl: "by.yl"; ym: "by.ym"; yn: "by.yn"; yo: "by.yo"; yp: "by.yp"; yq: "by.yq"; yr: "by.yr"; ys: "by.ys"; yt: "by.yt"; yu: "by.yu"; yv: "by.yv"; yw: "by.yw"; yx: "by.yx"; yy: "by.yy"; yz: "by.yz"; za: "by.za"; zb: "by.zb"; zc: "by.zc"; zd: "by.zd"; ze: "by.ze"; zf: "by.zf"; zg: "by.zg"; zh: "by.zh"; zi: "by.zi"; zj: "by.zj"; zk: "by.zk"; zl: "by.zl"; zm: "by.zm"; zn: "by.zn"; zo: "by.zo"; zp: "by.zp"; zq: "by.zq"; zr: "by.zr"; zs: "by.zs"; zt: "by.zt"; zu: "by.zu"; zv: "by.zv"; zw: "by.zw"; zx: "by.zx"; zy: "by.zy"; zz: "by.zz"; }; bz: { aa: "bz.aa"; ab: "bz.ab"; ac: "bz.ac"; ad: "bz.ad"; ae: "bz.ae"; af: "bz.af"; ag: "bz.ag"; ah: "bz.ah"; ai: "bz.ai"; aj: "bz.aj"; ak: "bz.ak"; al: "bz.al"; am: "bz.am"; an: "bz.an"; ao: "bz.ao"; ap: "bz.ap"; aq: "bz.aq"; ar: "bz.ar"; as: "bz.as"; at: "bz.at"; au: "bz.au"; av: "bz.av"; aw: "bz.aw"; ax: "bz.ax"; ay: "bz.ay"; az: "bz.az"; ba: "bz.ba"; bb: "bz.bb"; bc: "bz.bc"; bd: "bz.bd"; be: "bz.be"; bf: "bz.bf"; bg: "bz.bg"; bh: "bz.bh"; bi: "bz.bi"; bj: "bz.bj"; bk: "bz.bk"; bl: "bz.bl"; bm: "bz.bm"; bn: "bz.bn"; bo: "bz.bo"; bp: "bz.bp"; bq: "bz.bq"; br: "bz.br"; bs: "bz.bs"; bt: "bz.bt"; bu: "bz.bu"; bv: "bz.bv"; bw: "bz.bw"; bx: "bz.bx"; by: "bz.by"; bz: "bz.bz"; ca: "bz.ca"; cb: "bz.cb"; cc: "bz.cc"; cd: "bz.cd"; ce: "bz.ce"; cf: "bz.cf"; cg: "bz.cg"; ch: "bz.ch"; ci: "bz.ci"; cj: "bz.cj"; ck: "bz.ck"; cl: "bz.cl"; cm: "bz.cm"; cn: "bz.cn"; co: "bz.co"; cp: "bz.cp"; cq: "bz.cq"; cr: "bz.cr"; cs: "bz.cs"; ct: "bz.ct"; cu: "bz.cu"; cv: "bz.cv"; cw: "bz.cw"; cx: "bz.cx"; cy: "bz.cy"; cz: "bz.cz"; da: "bz.da"; db: "bz.db"; dc: "bz.dc"; dd: "bz.dd"; de: "bz.de"; df: "bz.df"; dg: "bz.dg"; dh: "bz.dh"; di: "bz.di"; dj: "bz.dj"; dk: "bz.dk"; dl: "bz.dl"; dm: "bz.dm"; dn: "bz.dn"; do: "bz.do"; dp: "bz.dp"; dq: "bz.dq"; dr: "bz.dr"; ds: "bz.ds"; dt: "bz.dt"; du: "bz.du"; dv: "bz.dv"; dw: "bz.dw"; dx: "bz.dx"; dy: "bz.dy"; dz: "bz.dz"; ea: "bz.ea"; eb: "bz.eb"; ec: "bz.ec"; ed: "bz.ed"; ee: "bz.ee"; ef: "bz.ef"; eg: "bz.eg"; eh: "bz.eh"; ei: "bz.ei"; ej: "bz.ej"; ek: "bz.ek"; el: "bz.el"; em: "bz.em"; en: "bz.en"; eo: "bz.eo"; ep: "bz.ep"; eq: "bz.eq"; er: "bz.er"; es: "bz.es"; et: "bz.et"; eu: "bz.eu"; ev: "bz.ev"; ew: "bz.ew"; ex: "bz.ex"; ey: "bz.ey"; ez: "bz.ez"; fa: "bz.fa"; fb: "bz.fb"; fc: "bz.fc"; fd: "bz.fd"; fe: "bz.fe"; ff: "bz.ff"; fg: "bz.fg"; fh: "bz.fh"; fi: "bz.fi"; fj: "bz.fj"; fk: "bz.fk"; fl: "bz.fl"; fm: "bz.fm"; fn: "bz.fn"; fo: "bz.fo"; fp: "bz.fp"; fq: "bz.fq"; fr: "bz.fr"; fs: "bz.fs"; ft: "bz.ft"; fu: "bz.fu"; fv: "bz.fv"; fw: "bz.fw"; fx: "bz.fx"; fy: "bz.fy"; fz: "bz.fz"; ga: "bz.ga"; gb: "bz.gb"; gc: "bz.gc"; gd: "bz.gd"; ge: "bz.ge"; gf: "bz.gf"; gg: "bz.gg"; gh: "bz.gh"; gi: "bz.gi"; gj: "bz.gj"; gk: "bz.gk"; gl: "bz.gl"; gm: "bz.gm"; gn: "bz.gn"; go: "bz.go"; gp: "bz.gp"; gq: "bz.gq"; gr: "bz.gr"; gs: "bz.gs"; gt: "bz.gt"; gu: "bz.gu"; gv: "bz.gv"; gw: "bz.gw"; gx: "bz.gx"; gy: "bz.gy"; gz: "bz.gz"; ha: "bz.ha"; hb: "bz.hb"; hc: "bz.hc"; hd: "bz.hd"; he: "bz.he"; hf: "bz.hf"; hg: "bz.hg"; hh: "bz.hh"; hi: "bz.hi"; hj: "bz.hj"; hk: "bz.hk"; hl: "bz.hl"; hm: "bz.hm"; hn: "bz.hn"; ho: "bz.ho"; hp: "bz.hp"; hq: "bz.hq"; hr: "bz.hr"; hs: "bz.hs"; ht: "bz.ht"; hu: "bz.hu"; hv: "bz.hv"; hw: "bz.hw"; hx: "bz.hx"; hy: "bz.hy"; hz: "bz.hz"; ia: "bz.ia"; ib: "bz.ib"; ic: "bz.ic"; id: "bz.id"; ie: "bz.ie"; if: "bz.if"; ig: "bz.ig"; ih: "bz.ih"; ii: "bz.ii"; ij: "bz.ij"; ik: "bz.ik"; il: "bz.il"; im: "bz.im"; in: "bz.in"; io: "bz.io"; ip: "bz.ip"; iq: "bz.iq"; ir: "bz.ir"; is: "bz.is"; it: "bz.it"; iu: "bz.iu"; iv: "bz.iv"; iw: "bz.iw"; ix: "bz.ix"; iy: "bz.iy"; iz: "bz.iz"; ja: "bz.ja"; jb: "bz.jb"; jc: "bz.jc"; jd: "bz.jd"; je: "bz.je"; jf: "bz.jf"; jg: "bz.jg"; jh: "bz.jh"; ji: "bz.ji"; jj: "bz.jj"; jk: "bz.jk"; jl: "bz.jl"; jm: "bz.jm"; jn: "bz.jn"; jo: "bz.jo"; jp: "bz.jp"; jq: "bz.jq"; jr: "bz.jr"; js: "bz.js"; jt: "bz.jt"; ju: "bz.ju"; jv: "bz.jv"; jw: "bz.jw"; jx: "bz.jx"; jy: "bz.jy"; jz: "bz.jz"; ka: "bz.ka"; kb: "bz.kb"; kc: "bz.kc"; kd: "bz.kd"; ke: "bz.ke"; kf: "bz.kf"; kg: "bz.kg"; kh: "bz.kh"; ki: "bz.ki"; kj: "bz.kj"; kk: "bz.kk"; kl: "bz.kl"; km: "bz.km"; kn: "bz.kn"; ko: "bz.ko"; kp: "bz.kp"; kq: "bz.kq"; kr: "bz.kr"; ks: "bz.ks"; kt: "bz.kt"; ku: "bz.ku"; kv: "bz.kv"; kw: "bz.kw"; kx: "bz.kx"; ky: "bz.ky"; kz: "bz.kz"; la: "bz.la"; lb: "bz.lb"; lc: "bz.lc"; ld: "bz.ld"; le: "bz.le"; lf: "bz.lf"; lg: "bz.lg"; lh: "bz.lh"; li: "bz.li"; lj: "bz.lj"; lk: "bz.lk"; ll: "bz.ll"; lm: "bz.lm"; ln: "bz.ln"; lo: "bz.lo"; lp: "bz.lp"; lq: "bz.lq"; lr: "bz.lr"; ls: "bz.ls"; lt: "bz.lt"; lu: "bz.lu"; lv: "bz.lv"; lw: "bz.lw"; lx: "bz.lx"; ly: "bz.ly"; lz: "bz.lz"; ma: "bz.ma"; mb: "bz.mb"; mc: "bz.mc"; md: "bz.md"; me: "bz.me"; mf: "bz.mf"; mg: "bz.mg"; mh: "bz.mh"; mi: "bz.mi"; mj: "bz.mj"; mk: "bz.mk"; ml: "bz.ml"; mm: "bz.mm"; mn: "bz.mn"; mo: "bz.mo"; mp: "bz.mp"; mq: "bz.mq"; mr: "bz.mr"; ms: "bz.ms"; mt: "bz.mt"; mu: "bz.mu"; mv: "bz.mv"; mw: "bz.mw"; mx: "bz.mx"; my: "bz.my"; mz: "bz.mz"; na: "bz.na"; nb: "bz.nb"; nc: "bz.nc"; nd: "bz.nd"; ne: "bz.ne"; nf: "bz.nf"; ng: "bz.ng"; nh: "bz.nh"; ni: "bz.ni"; nj: "bz.nj"; nk: "bz.nk"; nl: "bz.nl"; nm: "bz.nm"; nn: "bz.nn"; no: "bz.no"; np: "bz.np"; nq: "bz.nq"; nr: "bz.nr"; ns: "bz.ns"; nt: "bz.nt"; nu: "bz.nu"; nv: "bz.nv"; nw: "bz.nw"; nx: "bz.nx"; ny: "bz.ny"; nz: "bz.nz"; oa: "bz.oa"; ob: "bz.ob"; oc: "bz.oc"; od: "bz.od"; oe: "bz.oe"; of: "bz.of"; og: "bz.og"; oh: "bz.oh"; oi: "bz.oi"; oj: "bz.oj"; ok: "bz.ok"; ol: "bz.ol"; om: "bz.om"; on: "bz.on"; oo: "bz.oo"; op: "bz.op"; oq: "bz.oq"; or: "bz.or"; os: "bz.os"; ot: "bz.ot"; ou: "bz.ou"; ov: "bz.ov"; ow: "bz.ow"; ox: "bz.ox"; oy: "bz.oy"; oz: "bz.oz"; pa: "bz.pa"; pb: "bz.pb"; pc: "bz.pc"; pd: "bz.pd"; pe: "bz.pe"; pf: "bz.pf"; pg: "bz.pg"; ph: "bz.ph"; pi: "bz.pi"; pj: "bz.pj"; pk: "bz.pk"; pl: "bz.pl"; pm: "bz.pm"; pn: "bz.pn"; po: "bz.po"; pp: "bz.pp"; pq: "bz.pq"; pr: "bz.pr"; ps: "bz.ps"; pt: "bz.pt"; pu: "bz.pu"; pv: "bz.pv"; pw: "bz.pw"; px: "bz.px"; py: "bz.py"; pz: "bz.pz"; qa: "bz.qa"; qb: "bz.qb"; qc: "bz.qc"; qd: "bz.qd"; qe: "bz.qe"; qf: "bz.qf"; qg: "bz.qg"; qh: "bz.qh"; qi: "bz.qi"; qj: "bz.qj"; qk: "bz.qk"; ql: "bz.ql"; qm: "bz.qm"; qn: "bz.qn"; qo: "bz.qo"; qp: "bz.qp"; qq: "bz.qq"; qr: "bz.qr"; qs: "bz.qs"; qt: "bz.qt"; qu: "bz.qu"; qv: "bz.qv"; qw: "bz.qw"; qx: "bz.qx"; qy: "bz.qy"; qz: "bz.qz"; ra: "bz.ra"; rb: "bz.rb"; rc: "bz.rc"; rd: "bz.rd"; re: "bz.re"; rf: "bz.rf"; rg: "bz.rg"; rh: "bz.rh"; ri: "bz.ri"; rj: "bz.rj"; rk: "bz.rk"; rl: "bz.rl"; rm: "bz.rm"; rn: "bz.rn"; ro: "bz.ro"; rp: "bz.rp"; rq: "bz.rq"; rr: "bz.rr"; rs: "bz.rs"; rt: "bz.rt"; ru: "bz.ru"; rv: "bz.rv"; rw: "bz.rw"; rx: "bz.rx"; ry: "bz.ry"; rz: "bz.rz"; sa: "bz.sa"; sb: "bz.sb"; sc: "bz.sc"; sd: "bz.sd"; se: "bz.se"; sf: "bz.sf"; sg: "bz.sg"; sh: "bz.sh"; si: "bz.si"; sj: "bz.sj"; sk: "bz.sk"; sl: "bz.sl"; sm: "bz.sm"; sn: "bz.sn"; so: "bz.so"; sp: "bz.sp"; sq: "bz.sq"; sr: "bz.sr"; ss: "bz.ss"; st: "bz.st"; su: "bz.su"; sv: "bz.sv"; sw: "bz.sw"; sx: "bz.sx"; sy: "bz.sy"; sz: "bz.sz"; ta: "bz.ta"; tb: "bz.tb"; tc: "bz.tc"; td: "bz.td"; te: "bz.te"; tf: "bz.tf"; tg: "bz.tg"; th: "bz.th"; ti: "bz.ti"; tj: "bz.tj"; tk: "bz.tk"; tl: "bz.tl"; tm: "bz.tm"; tn: "bz.tn"; to: "bz.to"; tp: "bz.tp"; tq: "bz.tq"; tr: "bz.tr"; ts: "bz.ts"; tt: "bz.tt"; tu: "bz.tu"; tv: "bz.tv"; tw: "bz.tw"; tx: "bz.tx"; ty: "bz.ty"; tz: "bz.tz"; ua: "bz.ua"; ub: "bz.ub"; uc: "bz.uc"; ud: "bz.ud"; ue: "bz.ue"; uf: "bz.uf"; ug: "bz.ug"; uh: "bz.uh"; ui: "bz.ui"; uj: "bz.uj"; uk: "bz.uk"; ul: "bz.ul"; um: "bz.um"; un: "bz.un"; uo: "bz.uo"; up: "bz.up"; uq: "bz.uq"; ur: "bz.ur"; us: "bz.us"; ut: "bz.ut"; uu: "bz.uu"; uv: "bz.uv"; uw: "bz.uw"; ux: "bz.ux"; uy: "bz.uy"; uz: "bz.uz"; va: "bz.va"; vb: "bz.vb"; vc: "bz.vc"; vd: "bz.vd"; ve: "bz.ve"; vf: "bz.vf"; vg: "bz.vg"; vh: "bz.vh"; vi: "bz.vi"; vj: "bz.vj"; vk: "bz.vk"; vl: "bz.vl"; vm: "bz.vm"; vn: "bz.vn"; vo: "bz.vo"; vp: "bz.vp"; vq: "bz.vq"; vr: "bz.vr"; vs: "bz.vs"; vt: "bz.vt"; vu: "bz.vu"; vv: "bz.vv"; vw: "bz.vw"; vx: "bz.vx"; vy: "bz.vy"; vz: "bz.vz"; wa: "bz.wa"; wb: "bz.wb"; wc: "bz.wc"; wd: "bz.wd"; we: "bz.we"; wf: "bz.wf"; wg: "bz.wg"; wh: "bz.wh"; wi: "bz.wi"; wj: "bz.wj"; wk: "bz.wk"; wl: "bz.wl"; wm: "bz.wm"; wn: "bz.wn"; wo: "bz.wo"; wp: "bz.wp"; wq: "bz.wq"; wr: "bz.wr"; ws: "bz.ws"; wt: "bz.wt"; wu: "bz.wu"; wv: "bz.wv"; ww: "bz.ww"; wx: "bz.wx"; wy: "bz.wy"; wz: "bz.wz"; xa: "bz.xa"; xb: "bz.xb"; xc: "bz.xc"; xd: "bz.xd"; xe: "bz.xe"; xf: "bz.xf"; xg: "bz.xg"; xh: "bz.xh"; xi: "bz.xi"; xj: "bz.xj"; xk: "bz.xk"; xl: "bz.xl"; xm: "bz.xm"; xn: "bz.xn"; xo: "bz.xo"; xp: "bz.xp"; xq: "bz.xq"; xr: "bz.xr"; xs: "bz.xs"; xt: "bz.xt"; xu: "bz.xu"; xv: "bz.xv"; xw: "bz.xw"; xx: "bz.xx"; xy: "bz.xy"; xz: "bz.xz"; ya: "bz.ya"; yb: "bz.yb"; yc: "bz.yc"; yd: "bz.yd"; ye: "bz.ye"; yf: "bz.yf"; yg: "bz.yg"; yh: "bz.yh"; yi: "bz.yi"; yj: "bz.yj"; yk: "bz.yk"; yl: "bz.yl"; ym: "bz.ym"; yn: "bz.yn"; yo: "bz.yo"; yp: "bz.yp"; yq: "bz.yq"; yr: "bz.yr"; ys: "bz.ys"; yt: "bz.yt"; yu: "bz.yu"; yv: "bz.yv"; yw: "bz.yw"; yx: "bz.yx"; yy: "bz.yy"; yz: "bz.yz"; za: "bz.za"; zb: "bz.zb"; zc: "bz.zc"; zd: "bz.zd"; ze: "bz.ze"; zf: "bz.zf"; zg: "bz.zg"; zh: "bz.zh"; zi: "bz.zi"; zj: "bz.zj"; zk: "bz.zk"; zl: "bz.zl"; zm: "bz.zm"; zn: "bz.zn"; zo: "bz.zo"; zp: "bz.zp"; zq: "bz.zq"; zr: "bz.zr"; zs: "bz.zs"; zt: "bz.zt"; zu: "bz.zu"; zv: "bz.zv"; zw: "bz.zw"; zx: "bz.zx"; zy: "bz.zy"; zz: "bz.zz"; }; ca: { aa: "ca.aa"; ab: "ca.ab"; ac: "ca.ac"; ad: "ca.ad"; ae: "ca.ae"; af: "ca.af"; ag: "ca.ag"; ah: "ca.ah"; ai: "ca.ai"; aj: "ca.aj"; ak: "ca.ak"; al: "ca.al"; am: "ca.am"; an: "ca.an"; ao: "ca.ao"; ap: "ca.ap"; aq: "ca.aq"; ar: "ca.ar"; as: "ca.as"; at: "ca.at"; au: "ca.au"; av: "ca.av"; aw: "ca.aw"; ax: "ca.ax"; ay: "ca.ay"; az: "ca.az"; ba: "ca.ba"; bb: "ca.bb"; bc: "ca.bc"; bd: "ca.bd"; be: "ca.be"; bf: "ca.bf"; bg: "ca.bg"; bh: "ca.bh"; bi: "ca.bi"; bj: "ca.bj"; bk: "ca.bk"; bl: "ca.bl"; bm: "ca.bm"; bn: "ca.bn"; bo: "ca.bo"; bp: "ca.bp"; bq: "ca.bq"; br: "ca.br"; bs: "ca.bs"; bt: "ca.bt"; bu: "ca.bu"; bv: "ca.bv"; bw: "ca.bw"; bx: "ca.bx"; by: "ca.by"; bz: "ca.bz"; ca: "ca.ca"; cb: "ca.cb"; cc: "ca.cc"; cd: "ca.cd"; ce: "ca.ce"; cf: "ca.cf"; cg: "ca.cg"; ch: "ca.ch"; ci: "ca.ci"; cj: "ca.cj"; ck: "ca.ck"; cl: "ca.cl"; cm: "ca.cm"; cn: "ca.cn"; co: "ca.co"; cp: "ca.cp"; cq: "ca.cq"; cr: "ca.cr"; cs: "ca.cs"; ct: "ca.ct"; cu: "ca.cu"; cv: "ca.cv"; cw: "ca.cw"; cx: "ca.cx"; cy: "ca.cy"; cz: "ca.cz"; da: "ca.da"; db: "ca.db"; dc: "ca.dc"; dd: "ca.dd"; de: "ca.de"; df: "ca.df"; dg: "ca.dg"; dh: "ca.dh"; di: "ca.di"; dj: "ca.dj"; dk: "ca.dk"; dl: "ca.dl"; dm: "ca.dm"; dn: "ca.dn"; do: "ca.do"; dp: "ca.dp"; dq: "ca.dq"; dr: "ca.dr"; ds: "ca.ds"; dt: "ca.dt"; du: "ca.du"; dv: "ca.dv"; dw: "ca.dw"; dx: "ca.dx"; dy: "ca.dy"; dz: "ca.dz"; ea: "ca.ea"; eb: "ca.eb"; ec: "ca.ec"; ed: "ca.ed"; ee: "ca.ee"; ef: "ca.ef"; eg: "ca.eg"; eh: "ca.eh"; ei: "ca.ei"; ej: "ca.ej"; ek: "ca.ek"; el: "ca.el"; em: "ca.em"; en: "ca.en"; eo: "ca.eo"; ep: "ca.ep"; eq: "ca.eq"; er: "ca.er"; es: "ca.es"; et: "ca.et"; eu: "ca.eu"; ev: "ca.ev"; ew: "ca.ew"; ex: "ca.ex"; ey: "ca.ey"; ez: "ca.ez"; fa: "ca.fa"; fb: "ca.fb"; fc: "ca.fc"; fd: "ca.fd"; fe: "ca.fe"; ff: "ca.ff"; fg: "ca.fg"; fh: "ca.fh"; fi: "ca.fi"; fj: "ca.fj"; fk: "ca.fk"; fl: "ca.fl"; fm: "ca.fm"; fn: "ca.fn"; fo: "ca.fo"; fp: "ca.fp"; fq: "ca.fq"; fr: "ca.fr"; fs: "ca.fs"; ft: "ca.ft"; fu: "ca.fu"; fv: "ca.fv"; fw: "ca.fw"; fx: "ca.fx"; fy: "ca.fy"; fz: "ca.fz"; ga: "ca.ga"; gb: "ca.gb"; gc: "ca.gc"; gd: "ca.gd"; ge: "ca.ge"; gf: "ca.gf"; gg: "ca.gg"; gh: "ca.gh"; gi: "ca.gi"; gj: "ca.gj"; gk: "ca.gk"; gl: "ca.gl"; gm: "ca.gm"; gn: "ca.gn"; go: "ca.go"; gp: "ca.gp"; gq: "ca.gq"; gr: "ca.gr"; gs: "ca.gs"; gt: "ca.gt"; gu: "ca.gu"; gv: "ca.gv"; gw: "ca.gw"; gx: "ca.gx"; gy: "ca.gy"; gz: "ca.gz"; ha: "ca.ha"; hb: "ca.hb"; hc: "ca.hc"; hd: "ca.hd"; he: "ca.he"; hf: "ca.hf"; hg: "ca.hg"; hh: "ca.hh"; hi: "ca.hi"; hj: "ca.hj"; hk: "ca.hk"; hl: "ca.hl"; hm: "ca.hm"; hn: "ca.hn"; ho: "ca.ho"; hp: "ca.hp"; hq: "ca.hq"; hr: "ca.hr"; hs: "ca.hs"; ht: "ca.ht"; hu: "ca.hu"; hv: "ca.hv"; hw: "ca.hw"; hx: "ca.hx"; hy: "ca.hy"; hz: "ca.hz"; ia: "ca.ia"; ib: "ca.ib"; ic: "ca.ic"; id: "ca.id"; ie: "ca.ie"; if: "ca.if"; ig: "ca.ig"; ih: "ca.ih"; ii: "ca.ii"; ij: "ca.ij"; ik: "ca.ik"; il: "ca.il"; im: "ca.im"; in: "ca.in"; io: "ca.io"; ip: "ca.ip"; iq: "ca.iq"; ir: "ca.ir"; is: "ca.is"; it: "ca.it"; iu: "ca.iu"; iv: "ca.iv"; iw: "ca.iw"; ix: "ca.ix"; iy: "ca.iy"; iz: "ca.iz"; ja: "ca.ja"; jb: "ca.jb"; jc: "ca.jc"; jd: "ca.jd"; je: "ca.je"; jf: "ca.jf"; jg: "ca.jg"; jh: "ca.jh"; ji: "ca.ji"; jj: "ca.jj"; jk: "ca.jk"; jl: "ca.jl"; jm: "ca.jm"; jn: "ca.jn"; jo: "ca.jo"; jp: "ca.jp"; jq: "ca.jq"; jr: "ca.jr"; js: "ca.js"; jt: "ca.jt"; ju: "ca.ju"; jv: "ca.jv"; jw: "ca.jw"; jx: "ca.jx"; jy: "ca.jy"; jz: "ca.jz"; ka: "ca.ka"; kb: "ca.kb"; kc: "ca.kc"; kd: "ca.kd"; ke: "ca.ke"; kf: "ca.kf"; kg: "ca.kg"; kh: "ca.kh"; ki: "ca.ki"; kj: "ca.kj"; kk: "ca.kk"; kl: "ca.kl"; km: "ca.km"; kn: "ca.kn"; ko: "ca.ko"; kp: "ca.kp"; kq: "ca.kq"; kr: "ca.kr"; ks: "ca.ks"; kt: "ca.kt"; ku: "ca.ku"; kv: "ca.kv"; kw: "ca.kw"; kx: "ca.kx"; ky: "ca.ky"; kz: "ca.kz"; la: "ca.la"; lb: "ca.lb"; lc: "ca.lc"; ld: "ca.ld"; le: "ca.le"; lf: "ca.lf"; lg: "ca.lg"; lh: "ca.lh"; li: "ca.li"; lj: "ca.lj"; lk: "ca.lk"; ll: "ca.ll"; lm: "ca.lm"; ln: "ca.ln"; lo: "ca.lo"; lp: "ca.lp"; lq: "ca.lq"; lr: "ca.lr"; ls: "ca.ls"; lt: "ca.lt"; lu: "ca.lu"; lv: "ca.lv"; lw: "ca.lw"; lx: "ca.lx"; ly: "ca.ly"; lz: "ca.lz"; ma: "ca.ma"; mb: "ca.mb"; mc: "ca.mc"; md: "ca.md"; me: "ca.me"; mf: "ca.mf"; mg: "ca.mg"; mh: "ca.mh"; mi: "ca.mi"; mj: "ca.mj"; mk: "ca.mk"; ml: "ca.ml"; mm: "ca.mm"; mn: "ca.mn"; mo: "ca.mo"; mp: "ca.mp"; mq: "ca.mq"; mr: "ca.mr"; ms: "ca.ms"; mt: "ca.mt"; mu: "ca.mu"; mv: "ca.mv"; mw: "ca.mw"; mx: "ca.mx"; my: "ca.my"; mz: "ca.mz"; na: "ca.na"; nb: "ca.nb"; nc: "ca.nc"; nd: "ca.nd"; ne: "ca.ne"; nf: "ca.nf"; ng: "ca.ng"; nh: "ca.nh"; ni: "ca.ni"; nj: "ca.nj"; nk: "ca.nk"; nl: "ca.nl"; nm: "ca.nm"; nn: "ca.nn"; no: "ca.no"; np: "ca.np"; nq: "ca.nq"; nr: "ca.nr"; ns: "ca.ns"; nt: "ca.nt"; nu: "ca.nu"; nv: "ca.nv"; nw: "ca.nw"; nx: "ca.nx"; ny: "ca.ny"; nz: "ca.nz"; oa: "ca.oa"; ob: "ca.ob"; oc: "ca.oc"; od: "ca.od"; oe: "ca.oe"; of: "ca.of"; og: "ca.og"; oh: "ca.oh"; oi: "ca.oi"; oj: "ca.oj"; ok: "ca.ok"; ol: "ca.ol"; om: "ca.om"; on: "ca.on"; oo: "ca.oo"; op: "ca.op"; oq: "ca.oq"; or: "ca.or"; os: "ca.os"; ot: "ca.ot"; ou: "ca.ou"; ov: "ca.ov"; ow: "ca.ow"; ox: "ca.ox"; oy: "ca.oy"; oz: "ca.oz"; pa: "ca.pa"; pb: "ca.pb"; pc: "ca.pc"; pd: "ca.pd"; pe: "ca.pe"; pf: "ca.pf"; pg: "ca.pg"; ph: "ca.ph"; pi: "ca.pi"; pj: "ca.pj"; pk: "ca.pk"; pl: "ca.pl"; pm: "ca.pm"; pn: "ca.pn"; po: "ca.po"; pp: "ca.pp"; pq: "ca.pq"; pr: "ca.pr"; ps: "ca.ps"; pt: "ca.pt"; pu: "ca.pu"; pv: "ca.pv"; pw: "ca.pw"; px: "ca.px"; py: "ca.py"; pz: "ca.pz"; qa: "ca.qa"; qb: "ca.qb"; qc: "ca.qc"; qd: "ca.qd"; qe: "ca.qe"; qf: "ca.qf"; qg: "ca.qg"; qh: "ca.qh"; qi: "ca.qi"; qj: "ca.qj"; qk: "ca.qk"; ql: "ca.ql"; qm: "ca.qm"; qn: "ca.qn"; qo: "ca.qo"; qp: "ca.qp"; qq: "ca.qq"; qr: "ca.qr"; qs: "ca.qs"; qt: "ca.qt"; qu: "ca.qu"; qv: "ca.qv"; qw: "ca.qw"; qx: "ca.qx"; qy: "ca.qy"; qz: "ca.qz"; ra: "ca.ra"; rb: "ca.rb"; rc: "ca.rc"; rd: "ca.rd"; re: "ca.re"; rf: "ca.rf"; rg: "ca.rg"; rh: "ca.rh"; ri: "ca.ri"; rj: "ca.rj"; rk: "ca.rk"; rl: "ca.rl"; rm: "ca.rm"; rn: "ca.rn"; ro: "ca.ro"; rp: "ca.rp"; rq: "ca.rq"; rr: "ca.rr"; rs: "ca.rs"; rt: "ca.rt"; ru: "ca.ru"; rv: "ca.rv"; rw: "ca.rw"; rx: "ca.rx"; ry: "ca.ry"; rz: "ca.rz"; sa: "ca.sa"; sb: "ca.sb"; sc: "ca.sc"; sd: "ca.sd"; se: "ca.se"; sf: "ca.sf"; sg: "ca.sg"; sh: "ca.sh"; si: "ca.si"; sj: "ca.sj"; sk: "ca.sk"; sl: "ca.sl"; sm: "ca.sm"; sn: "ca.sn"; so: "ca.so"; sp: "ca.sp"; sq: "ca.sq"; sr: "ca.sr"; ss: "ca.ss"; st: "ca.st"; su: "ca.su"; sv: "ca.sv"; sw: "ca.sw"; sx: "ca.sx"; sy: "ca.sy"; sz: "ca.sz"; ta: "ca.ta"; tb: "ca.tb"; tc: "ca.tc"; td: "ca.td"; te: "ca.te"; tf: "ca.tf"; tg: "ca.tg"; th: "ca.th"; ti: "ca.ti"; tj: "ca.tj"; tk: "ca.tk"; tl: "ca.tl"; tm: "ca.tm"; tn: "ca.tn"; to: "ca.to"; tp: "ca.tp"; tq: "ca.tq"; tr: "ca.tr"; ts: "ca.ts"; tt: "ca.tt"; tu: "ca.tu"; tv: "ca.tv"; tw: "ca.tw"; tx: "ca.tx"; ty: "ca.ty"; tz: "ca.tz"; ua: "ca.ua"; ub: "ca.ub"; uc: "ca.uc"; ud: "ca.ud"; ue: "ca.ue"; uf: "ca.uf"; ug: "ca.ug"; uh: "ca.uh"; ui: "ca.ui"; uj: "ca.uj"; uk: "ca.uk"; ul: "ca.ul"; um: "ca.um"; un: "ca.un"; uo: "ca.uo"; up: "ca.up"; uq: "ca.uq"; ur: "ca.ur"; us: "ca.us"; ut: "ca.ut"; uu: "ca.uu"; uv: "ca.uv"; uw: "ca.uw"; ux: "ca.ux"; uy: "ca.uy"; uz: "ca.uz"; va: "ca.va"; vb: "ca.vb"; vc: "ca.vc"; vd: "ca.vd"; ve: "ca.ve"; vf: "ca.vf"; vg: "ca.vg"; vh: "ca.vh"; vi: "ca.vi"; vj: "ca.vj"; vk: "ca.vk"; vl: "ca.vl"; vm: "ca.vm"; vn: "ca.vn"; vo: "ca.vo"; vp: "ca.vp"; vq: "ca.vq"; vr: "ca.vr"; vs: "ca.vs"; vt: "ca.vt"; vu: "ca.vu"; vv: "ca.vv"; vw: "ca.vw"; vx: "ca.vx"; vy: "ca.vy"; vz: "ca.vz"; wa: "ca.wa"; wb: "ca.wb"; wc: "ca.wc"; wd: "ca.wd"; we: "ca.we"; wf: "ca.wf"; wg: "ca.wg"; wh: "ca.wh"; wi: "ca.wi"; wj: "ca.wj"; wk: "ca.wk"; wl: "ca.wl"; wm: "ca.wm"; wn: "ca.wn"; wo: "ca.wo"; wp: "ca.wp"; wq: "ca.wq"; wr: "ca.wr"; ws: "ca.ws"; wt: "ca.wt"; wu: "ca.wu"; wv: "ca.wv"; ww: "ca.ww"; wx: "ca.wx"; wy: "ca.wy"; wz: "ca.wz"; xa: "ca.xa"; xb: "ca.xb"; xc: "ca.xc"; xd: "ca.xd"; xe: "ca.xe"; xf: "ca.xf"; xg: "ca.xg"; xh: "ca.xh"; xi: "ca.xi"; xj: "ca.xj"; xk: "ca.xk"; xl: "ca.xl"; xm: "ca.xm"; xn: "ca.xn"; xo: "ca.xo"; xp: "ca.xp"; xq: "ca.xq"; xr: "ca.xr"; xs: "ca.xs"; xt: "ca.xt"; xu: "ca.xu"; xv: "ca.xv"; xw: "ca.xw"; xx: "ca.xx"; xy: "ca.xy"; xz: "ca.xz"; ya: "ca.ya"; yb: "ca.yb"; yc: "ca.yc"; yd: "ca.yd"; ye: "ca.ye"; yf: "ca.yf"; yg: "ca.yg"; yh: "ca.yh"; yi: "ca.yi"; yj: "ca.yj"; yk: "ca.yk"; yl: "ca.yl"; ym: "ca.ym"; yn: "ca.yn"; yo: "ca.yo"; yp: "ca.yp"; yq: "ca.yq"; yr: "ca.yr"; ys: "ca.ys"; yt: "ca.yt"; yu: "ca.yu"; yv: "ca.yv"; yw: "ca.yw"; yx: "ca.yx"; yy: "ca.yy"; yz: "ca.yz"; za: "ca.za"; zb: "ca.zb"; zc: "ca.zc"; zd: "ca.zd"; ze: "ca.ze"; zf: "ca.zf"; zg: "ca.zg"; zh: "ca.zh"; zi: "ca.zi"; zj: "ca.zj"; zk: "ca.zk"; zl: "ca.zl"; zm: "ca.zm"; zn: "ca.zn"; zo: "ca.zo"; zp: "ca.zp"; zq: "ca.zq"; zr: "ca.zr"; zs: "ca.zs"; zt: "ca.zt"; zu: "ca.zu"; zv: "ca.zv"; zw: "ca.zw"; zx: "ca.zx"; zy: "ca.zy"; zz: "ca.zz"; }; cb: { aa: "cb.aa"; ab: "cb.ab"; ac: "cb.ac"; ad: "cb.ad"; ae: "cb.ae"; af: "cb.af"; ag: "cb.ag"; ah: "cb.ah"; ai: "cb.ai"; aj: "cb.aj"; ak: "cb.ak"; al: "cb.al"; am: "cb.am"; an: "cb.an"; ao: "cb.ao"; ap: "cb.ap"; aq: "cb.aq"; ar: "cb.ar"; as: "cb.as"; at: "cb.at"; au: "cb.au"; av: "cb.av"; aw: "cb.aw"; ax: "cb.ax"; ay: "cb.ay"; az: "cb.az"; ba: "cb.ba"; bb: "cb.bb"; bc: "cb.bc"; bd: "cb.bd"; be: "cb.be"; bf: "cb.bf"; bg: "cb.bg"; bh: "cb.bh"; bi: "cb.bi"; bj: "cb.bj"; bk: "cb.bk"; bl: "cb.bl"; bm: "cb.bm"; bn: "cb.bn"; bo: "cb.bo"; bp: "cb.bp"; bq: "cb.bq"; br: "cb.br"; bs: "cb.bs"; bt: "cb.bt"; bu: "cb.bu"; bv: "cb.bv"; bw: "cb.bw"; bx: "cb.bx"; by: "cb.by"; bz: "cb.bz"; ca: "cb.ca"; cb: "cb.cb"; cc: "cb.cc"; cd: "cb.cd"; ce: "cb.ce"; cf: "cb.cf"; cg: "cb.cg"; ch: "cb.ch"; ci: "cb.ci"; cj: "cb.cj"; ck: "cb.ck"; cl: "cb.cl"; cm: "cb.cm"; cn: "cb.cn"; co: "cb.co"; cp: "cb.cp"; cq: "cb.cq"; cr: "cb.cr"; cs: "cb.cs"; ct: "cb.ct"; cu: "cb.cu"; cv: "cb.cv"; cw: "cb.cw"; cx: "cb.cx"; cy: "cb.cy"; cz: "cb.cz"; da: "cb.da"; db: "cb.db"; dc: "cb.dc"; dd: "cb.dd"; de: "cb.de"; df: "cb.df"; dg: "cb.dg"; dh: "cb.dh"; di: "cb.di"; dj: "cb.dj"; dk: "cb.dk"; dl: "cb.dl"; dm: "cb.dm"; dn: "cb.dn"; do: "cb.do"; dp: "cb.dp"; dq: "cb.dq"; dr: "cb.dr"; ds: "cb.ds"; dt: "cb.dt"; du: "cb.du"; dv: "cb.dv"; dw: "cb.dw"; dx: "cb.dx"; dy: "cb.dy"; dz: "cb.dz"; ea: "cb.ea"; eb: "cb.eb"; ec: "cb.ec"; ed: "cb.ed"; ee: "cb.ee"; ef: "cb.ef"; eg: "cb.eg"; eh: "cb.eh"; ei: "cb.ei"; ej: "cb.ej"; ek: "cb.ek"; el: "cb.el"; em: "cb.em"; en: "cb.en"; eo: "cb.eo"; ep: "cb.ep"; eq: "cb.eq"; er: "cb.er"; es: "cb.es"; et: "cb.et"; eu: "cb.eu"; ev: "cb.ev"; ew: "cb.ew"; ex: "cb.ex"; ey: "cb.ey"; ez: "cb.ez"; fa: "cb.fa"; fb: "cb.fb"; fc: "cb.fc"; fd: "cb.fd"; fe: "cb.fe"; ff: "cb.ff"; fg: "cb.fg"; fh: "cb.fh"; fi: "cb.fi"; fj: "cb.fj"; fk: "cb.fk"; fl: "cb.fl"; fm: "cb.fm"; fn: "cb.fn"; fo: "cb.fo"; fp: "cb.fp"; fq: "cb.fq"; fr: "cb.fr"; fs: "cb.fs"; ft: "cb.ft"; fu: "cb.fu"; fv: "cb.fv"; fw: "cb.fw"; fx: "cb.fx"; fy: "cb.fy"; fz: "cb.fz"; ga: "cb.ga"; gb: "cb.gb"; gc: "cb.gc"; gd: "cb.gd"; ge: "cb.ge"; gf: "cb.gf"; gg: "cb.gg"; gh: "cb.gh"; gi: "cb.gi"; gj: "cb.gj"; gk: "cb.gk"; gl: "cb.gl"; gm: "cb.gm"; gn: "cb.gn"; go: "cb.go"; gp: "cb.gp"; gq: "cb.gq"; gr: "cb.gr"; gs: "cb.gs"; gt: "cb.gt"; gu: "cb.gu"; gv: "cb.gv"; gw: "cb.gw"; gx: "cb.gx"; gy: "cb.gy"; gz: "cb.gz"; ha: "cb.ha"; hb: "cb.hb"; hc: "cb.hc"; hd: "cb.hd"; he: "cb.he"; hf: "cb.hf"; hg: "cb.hg"; hh: "cb.hh"; hi: "cb.hi"; hj: "cb.hj"; hk: "cb.hk"; hl: "cb.hl"; hm: "cb.hm"; hn: "cb.hn"; ho: "cb.ho"; hp: "cb.hp"; hq: "cb.hq"; hr: "cb.hr"; hs: "cb.hs"; ht: "cb.ht"; hu: "cb.hu"; hv: "cb.hv"; hw: "cb.hw"; hx: "cb.hx"; hy: "cb.hy"; hz: "cb.hz"; ia: "cb.ia"; ib: "cb.ib"; ic: "cb.ic"; id: "cb.id"; ie: "cb.ie"; if: "cb.if"; ig: "cb.ig"; ih: "cb.ih"; ii: "cb.ii"; ij: "cb.ij"; ik: "cb.ik"; il: "cb.il"; im: "cb.im"; in: "cb.in"; io: "cb.io"; ip: "cb.ip"; iq: "cb.iq"; ir: "cb.ir"; is: "cb.is"; it: "cb.it"; iu: "cb.iu"; iv: "cb.iv"; iw: "cb.iw"; ix: "cb.ix"; iy: "cb.iy"; iz: "cb.iz"; ja: "cb.ja"; jb: "cb.jb"; jc: "cb.jc"; jd: "cb.jd"; je: "cb.je"; jf: "cb.jf"; jg: "cb.jg"; jh: "cb.jh"; ji: "cb.ji"; jj: "cb.jj"; jk: "cb.jk"; jl: "cb.jl"; jm: "cb.jm"; jn: "cb.jn"; jo: "cb.jo"; jp: "cb.jp"; jq: "cb.jq"; jr: "cb.jr"; js: "cb.js"; jt: "cb.jt"; ju: "cb.ju"; jv: "cb.jv"; jw: "cb.jw"; jx: "cb.jx"; jy: "cb.jy"; jz: "cb.jz"; ka: "cb.ka"; kb: "cb.kb"; kc: "cb.kc"; kd: "cb.kd"; ke: "cb.ke"; kf: "cb.kf"; kg: "cb.kg"; kh: "cb.kh"; ki: "cb.ki"; kj: "cb.kj"; kk: "cb.kk"; kl: "cb.kl"; km: "cb.km"; kn: "cb.kn"; ko: "cb.ko"; kp: "cb.kp"; kq: "cb.kq"; kr: "cb.kr"; ks: "cb.ks"; kt: "cb.kt"; ku: "cb.ku"; kv: "cb.kv"; kw: "cb.kw"; kx: "cb.kx"; ky: "cb.ky"; kz: "cb.kz"; la: "cb.la"; lb: "cb.lb"; lc: "cb.lc"; ld: "cb.ld"; le: "cb.le"; lf: "cb.lf"; lg: "cb.lg"; lh: "cb.lh"; li: "cb.li"; lj: "cb.lj"; lk: "cb.lk"; ll: "cb.ll"; lm: "cb.lm"; ln: "cb.ln"; lo: "cb.lo"; lp: "cb.lp"; lq: "cb.lq"; lr: "cb.lr"; ls: "cb.ls"; lt: "cb.lt"; lu: "cb.lu"; lv: "cb.lv"; lw: "cb.lw"; lx: "cb.lx"; ly: "cb.ly"; lz: "cb.lz"; ma: "cb.ma"; mb: "cb.mb"; mc: "cb.mc"; md: "cb.md"; me: "cb.me"; mf: "cb.mf"; mg: "cb.mg"; mh: "cb.mh"; mi: "cb.mi"; mj: "cb.mj"; mk: "cb.mk"; ml: "cb.ml"; mm: "cb.mm"; mn: "cb.mn"; mo: "cb.mo"; mp: "cb.mp"; mq: "cb.mq"; mr: "cb.mr"; ms: "cb.ms"; mt: "cb.mt"; mu: "cb.mu"; mv: "cb.mv"; mw: "cb.mw"; mx: "cb.mx"; my: "cb.my"; mz: "cb.mz"; na: "cb.na"; nb: "cb.nb"; nc: "cb.nc"; nd: "cb.nd"; ne: "cb.ne"; nf: "cb.nf"; ng: "cb.ng"; nh: "cb.nh"; ni: "cb.ni"; nj: "cb.nj"; nk: "cb.nk"; nl: "cb.nl"; nm: "cb.nm"; nn: "cb.nn"; no: "cb.no"; np: "cb.np"; nq: "cb.nq"; nr: "cb.nr"; ns: "cb.ns"; nt: "cb.nt"; nu: "cb.nu"; nv: "cb.nv"; nw: "cb.nw"; nx: "cb.nx"; ny: "cb.ny"; nz: "cb.nz"; oa: "cb.oa"; ob: "cb.ob"; oc: "cb.oc"; od: "cb.od"; oe: "cb.oe"; of: "cb.of"; og: "cb.og"; oh: "cb.oh"; oi: "cb.oi"; oj: "cb.oj"; ok: "cb.ok"; ol: "cb.ol"; om: "cb.om"; on: "cb.on"; oo: "cb.oo"; op: "cb.op"; oq: "cb.oq"; or: "cb.or"; os: "cb.os"; ot: "cb.ot"; ou: "cb.ou"; ov: "cb.ov"; ow: "cb.ow"; ox: "cb.ox"; oy: "cb.oy"; oz: "cb.oz"; pa: "cb.pa"; pb: "cb.pb"; pc: "cb.pc"; pd: "cb.pd"; pe: "cb.pe"; pf: "cb.pf"; pg: "cb.pg"; ph: "cb.ph"; pi: "cb.pi"; pj: "cb.pj"; pk: "cb.pk"; pl: "cb.pl"; pm: "cb.pm"; pn: "cb.pn"; po: "cb.po"; pp: "cb.pp"; pq: "cb.pq"; pr: "cb.pr"; ps: "cb.ps"; pt: "cb.pt"; pu: "cb.pu"; pv: "cb.pv"; pw: "cb.pw"; px: "cb.px"; py: "cb.py"; pz: "cb.pz"; qa: "cb.qa"; qb: "cb.qb"; qc: "cb.qc"; qd: "cb.qd"; qe: "cb.qe"; qf: "cb.qf"; qg: "cb.qg"; qh: "cb.qh"; qi: "cb.qi"; qj: "cb.qj"; qk: "cb.qk"; ql: "cb.ql"; qm: "cb.qm"; qn: "cb.qn"; qo: "cb.qo"; qp: "cb.qp"; qq: "cb.qq"; qr: "cb.qr"; qs: "cb.qs"; qt: "cb.qt"; qu: "cb.qu"; qv: "cb.qv"; qw: "cb.qw"; qx: "cb.qx"; qy: "cb.qy"; qz: "cb.qz"; ra: "cb.ra"; rb: "cb.rb"; rc: "cb.rc"; rd: "cb.rd"; re: "cb.re"; rf: "cb.rf"; rg: "cb.rg"; rh: "cb.rh"; ri: "cb.ri"; rj: "cb.rj"; rk: "cb.rk"; rl: "cb.rl"; rm: "cb.rm"; rn: "cb.rn"; ro: "cb.ro"; rp: "cb.rp"; rq: "cb.rq"; rr: "cb.rr"; rs: "cb.rs"; rt: "cb.rt"; ru: "cb.ru"; rv: "cb.rv"; rw: "cb.rw"; rx: "cb.rx"; ry: "cb.ry"; rz: "cb.rz"; sa: "cb.sa"; sb: "cb.sb"; sc: "cb.sc"; sd: "cb.sd"; se: "cb.se"; sf: "cb.sf"; sg: "cb.sg"; sh: "cb.sh"; si: "cb.si"; sj: "cb.sj"; sk: "cb.sk"; sl: "cb.sl"; sm: "cb.sm"; sn: "cb.sn"; so: "cb.so"; sp: "cb.sp"; sq: "cb.sq"; sr: "cb.sr"; ss: "cb.ss"; st: "cb.st"; su: "cb.su"; sv: "cb.sv"; sw: "cb.sw"; sx: "cb.sx"; sy: "cb.sy"; sz: "cb.sz"; ta: "cb.ta"; tb: "cb.tb"; tc: "cb.tc"; td: "cb.td"; te: "cb.te"; tf: "cb.tf"; tg: "cb.tg"; th: "cb.th"; ti: "cb.ti"; tj: "cb.tj"; tk: "cb.tk"; tl: "cb.tl"; tm: "cb.tm"; tn: "cb.tn"; to: "cb.to"; tp: "cb.tp"; tq: "cb.tq"; tr: "cb.tr"; ts: "cb.ts"; tt: "cb.tt"; tu: "cb.tu"; tv: "cb.tv"; tw: "cb.tw"; tx: "cb.tx"; ty: "cb.ty"; tz: "cb.tz"; ua: "cb.ua"; ub: "cb.ub"; uc: "cb.uc"; ud: "cb.ud"; ue: "cb.ue"; uf: "cb.uf"; ug: "cb.ug"; uh: "cb.uh"; ui: "cb.ui"; uj: "cb.uj"; uk: "cb.uk"; ul: "cb.ul"; um: "cb.um"; un: "cb.un"; uo: "cb.uo"; up: "cb.up"; uq: "cb.uq"; ur: "cb.ur"; us: "cb.us"; ut: "cb.ut"; uu: "cb.uu"; uv: "cb.uv"; uw: "cb.uw"; ux: "cb.ux"; uy: "cb.uy"; uz: "cb.uz"; va: "cb.va"; vb: "cb.vb"; vc: "cb.vc"; vd: "cb.vd"; ve: "cb.ve"; vf: "cb.vf"; vg: "cb.vg"; vh: "cb.vh"; vi: "cb.vi"; vj: "cb.vj"; vk: "cb.vk"; vl: "cb.vl"; vm: "cb.vm"; vn: "cb.vn"; vo: "cb.vo"; vp: "cb.vp"; vq: "cb.vq"; vr: "cb.vr"; vs: "cb.vs"; vt: "cb.vt"; vu: "cb.vu"; vv: "cb.vv"; vw: "cb.vw"; vx: "cb.vx"; vy: "cb.vy"; vz: "cb.vz"; wa: "cb.wa"; wb: "cb.wb"; wc: "cb.wc"; wd: "cb.wd"; we: "cb.we"; wf: "cb.wf"; wg: "cb.wg"; wh: "cb.wh"; wi: "cb.wi"; wj: "cb.wj"; wk: "cb.wk"; wl: "cb.wl"; wm: "cb.wm"; wn: "cb.wn"; wo: "cb.wo"; wp: "cb.wp"; wq: "cb.wq"; wr: "cb.wr"; ws: "cb.ws"; wt: "cb.wt"; wu: "cb.wu"; wv: "cb.wv"; ww: "cb.ww"; wx: "cb.wx"; wy: "cb.wy"; wz: "cb.wz"; xa: "cb.xa"; xb: "cb.xb"; xc: "cb.xc"; xd: "cb.xd"; xe: "cb.xe"; xf: "cb.xf"; xg: "cb.xg"; xh: "cb.xh"; xi: "cb.xi"; xj: "cb.xj"; xk: "cb.xk"; xl: "cb.xl"; xm: "cb.xm"; xn: "cb.xn"; xo: "cb.xo"; xp: "cb.xp"; xq: "cb.xq"; xr: "cb.xr"; xs: "cb.xs"; xt: "cb.xt"; xu: "cb.xu"; xv: "cb.xv"; xw: "cb.xw"; xx: "cb.xx"; xy: "cb.xy"; xz: "cb.xz"; ya: "cb.ya"; yb: "cb.yb"; yc: "cb.yc"; yd: "cb.yd"; ye: "cb.ye"; yf: "cb.yf"; yg: "cb.yg"; yh: "cb.yh"; yi: "cb.yi"; yj: "cb.yj"; yk: "cb.yk"; yl: "cb.yl"; ym: "cb.ym"; yn: "cb.yn"; yo: "cb.yo"; yp: "cb.yp"; yq: "cb.yq"; yr: "cb.yr"; ys: "cb.ys"; yt: "cb.yt"; yu: "cb.yu"; yv: "cb.yv"; yw: "cb.yw"; yx: "cb.yx"; yy: "cb.yy"; yz: "cb.yz"; za: "cb.za"; zb: "cb.zb"; zc: "cb.zc"; zd: "cb.zd"; ze: "cb.ze"; zf: "cb.zf"; zg: "cb.zg"; zh: "cb.zh"; zi: "cb.zi"; zj: "cb.zj"; zk: "cb.zk"; zl: "cb.zl"; zm: "cb.zm"; zn: "cb.zn"; zo: "cb.zo"; zp: "cb.zp"; zq: "cb.zq"; zr: "cb.zr"; zs: "cb.zs"; zt: "cb.zt"; zu: "cb.zu"; zv: "cb.zv"; zw: "cb.zw"; zx: "cb.zx"; zy: "cb.zy"; zz: "cb.zz"; }; cc: { aa: "cc.aa"; ab: "cc.ab"; ac: "cc.ac"; ad: "cc.ad"; ae: "cc.ae"; af: "cc.af"; ag: "cc.ag"; ah: "cc.ah"; ai: "cc.ai"; aj: "cc.aj"; ak: "cc.ak"; al: "cc.al"; am: "cc.am"; an: "cc.an"; ao: "cc.ao"; ap: "cc.ap"; aq: "cc.aq"; ar: "cc.ar"; as: "cc.as"; at: "cc.at"; au: "cc.au"; av: "cc.av"; aw: "cc.aw"; ax: "cc.ax"; ay: "cc.ay"; az: "cc.az"; ba: "cc.ba"; bb: "cc.bb"; bc: "cc.bc"; bd: "cc.bd"; be: "cc.be"; bf: "cc.bf"; bg: "cc.bg"; bh: "cc.bh"; bi: "cc.bi"; bj: "cc.bj"; bk: "cc.bk"; bl: "cc.bl"; bm: "cc.bm"; bn: "cc.bn"; bo: "cc.bo"; bp: "cc.bp"; bq: "cc.bq"; br: "cc.br"; bs: "cc.bs"; bt: "cc.bt"; bu: "cc.bu"; bv: "cc.bv"; bw: "cc.bw"; bx: "cc.bx"; by: "cc.by"; bz: "cc.bz"; ca: "cc.ca"; cb: "cc.cb"; cc: "cc.cc"; cd: "cc.cd"; ce: "cc.ce"; cf: "cc.cf"; cg: "cc.cg"; ch: "cc.ch"; ci: "cc.ci"; cj: "cc.cj"; ck: "cc.ck"; cl: "cc.cl"; cm: "cc.cm"; cn: "cc.cn"; co: "cc.co"; cp: "cc.cp"; cq: "cc.cq"; cr: "cc.cr"; cs: "cc.cs"; ct: "cc.ct"; cu: "cc.cu"; cv: "cc.cv"; cw: "cc.cw"; cx: "cc.cx"; cy: "cc.cy"; cz: "cc.cz"; da: "cc.da"; db: "cc.db"; dc: "cc.dc"; dd: "cc.dd"; de: "cc.de"; df: "cc.df"; dg: "cc.dg"; dh: "cc.dh"; di: "cc.di"; dj: "cc.dj"; dk: "cc.dk"; dl: "cc.dl"; dm: "cc.dm"; dn: "cc.dn"; do: "cc.do"; dp: "cc.dp"; dq: "cc.dq"; dr: "cc.dr"; ds: "cc.ds"; dt: "cc.dt"; du: "cc.du"; dv: "cc.dv"; dw: "cc.dw"; dx: "cc.dx"; dy: "cc.dy"; dz: "cc.dz"; ea: "cc.ea"; eb: "cc.eb"; ec: "cc.ec"; ed: "cc.ed"; ee: "cc.ee"; ef: "cc.ef"; eg: "cc.eg"; eh: "cc.eh"; ei: "cc.ei"; ej: "cc.ej"; ek: "cc.ek"; el: "cc.el"; em: "cc.em"; en: "cc.en"; eo: "cc.eo"; ep: "cc.ep"; eq: "cc.eq"; er: "cc.er"; es: "cc.es"; et: "cc.et"; eu: "cc.eu"; ev: "cc.ev"; ew: "cc.ew"; ex: "cc.ex"; ey: "cc.ey"; ez: "cc.ez"; fa: "cc.fa"; fb: "cc.fb"; fc: "cc.fc"; fd: "cc.fd"; fe: "cc.fe"; ff: "cc.ff"; fg: "cc.fg"; fh: "cc.fh"; fi: "cc.fi"; fj: "cc.fj"; fk: "cc.fk"; fl: "cc.fl"; fm: "cc.fm"; fn: "cc.fn"; fo: "cc.fo"; fp: "cc.fp"; fq: "cc.fq"; fr: "cc.fr"; fs: "cc.fs"; ft: "cc.ft"; fu: "cc.fu"; fv: "cc.fv"; fw: "cc.fw"; fx: "cc.fx"; fy: "cc.fy"; fz: "cc.fz"; ga: "cc.ga"; gb: "cc.gb"; gc: "cc.gc"; gd: "cc.gd"; ge: "cc.ge"; gf: "cc.gf"; gg: "cc.gg"; gh: "cc.gh"; gi: "cc.gi"; gj: "cc.gj"; gk: "cc.gk"; gl: "cc.gl"; gm: "cc.gm"; gn: "cc.gn"; go: "cc.go"; gp: "cc.gp"; gq: "cc.gq"; gr: "cc.gr"; gs: "cc.gs"; gt: "cc.gt"; gu: "cc.gu"; gv: "cc.gv"; gw: "cc.gw"; gx: "cc.gx"; gy: "cc.gy"; gz: "cc.gz"; ha: "cc.ha"; hb: "cc.hb"; hc: "cc.hc"; hd: "cc.hd"; he: "cc.he"; hf: "cc.hf"; hg: "cc.hg"; hh: "cc.hh"; hi: "cc.hi"; hj: "cc.hj"; hk: "cc.hk"; hl: "cc.hl"; hm: "cc.hm"; hn: "cc.hn"; ho: "cc.ho"; hp: "cc.hp"; hq: "cc.hq"; hr: "cc.hr"; hs: "cc.hs"; ht: "cc.ht"; hu: "cc.hu"; hv: "cc.hv"; hw: "cc.hw"; hx: "cc.hx"; hy: "cc.hy"; hz: "cc.hz"; ia: "cc.ia"; ib: "cc.ib"; ic: "cc.ic"; id: "cc.id"; ie: "cc.ie"; if: "cc.if"; ig: "cc.ig"; ih: "cc.ih"; ii: "cc.ii"; ij: "cc.ij"; ik: "cc.ik"; il: "cc.il"; im: "cc.im"; in: "cc.in"; io: "cc.io"; ip: "cc.ip"; iq: "cc.iq"; ir: "cc.ir"; is: "cc.is"; it: "cc.it"; iu: "cc.iu"; iv: "cc.iv"; iw: "cc.iw"; ix: "cc.ix"; iy: "cc.iy"; iz: "cc.iz"; ja: "cc.ja"; jb: "cc.jb"; jc: "cc.jc"; jd: "cc.jd"; je: "cc.je"; jf: "cc.jf"; jg: "cc.jg"; jh: "cc.jh"; ji: "cc.ji"; jj: "cc.jj"; jk: "cc.jk"; jl: "cc.jl"; jm: "cc.jm"; jn: "cc.jn"; jo: "cc.jo"; jp: "cc.jp"; jq: "cc.jq"; jr: "cc.jr"; js: "cc.js"; jt: "cc.jt"; ju: "cc.ju"; jv: "cc.jv"; jw: "cc.jw"; jx: "cc.jx"; jy: "cc.jy"; jz: "cc.jz"; ka: "cc.ka"; kb: "cc.kb"; kc: "cc.kc"; kd: "cc.kd"; ke: "cc.ke"; kf: "cc.kf"; kg: "cc.kg"; kh: "cc.kh"; ki: "cc.ki"; kj: "cc.kj"; kk: "cc.kk"; kl: "cc.kl"; km: "cc.km"; kn: "cc.kn"; ko: "cc.ko"; kp: "cc.kp"; kq: "cc.kq"; kr: "cc.kr"; ks: "cc.ks"; kt: "cc.kt"; ku: "cc.ku"; kv: "cc.kv"; kw: "cc.kw"; kx: "cc.kx"; ky: "cc.ky"; kz: "cc.kz"; la: "cc.la"; lb: "cc.lb"; lc: "cc.lc"; ld: "cc.ld"; le: "cc.le"; lf: "cc.lf"; lg: "cc.lg"; lh: "cc.lh"; li: "cc.li"; lj: "cc.lj"; lk: "cc.lk"; ll: "cc.ll"; lm: "cc.lm"; ln: "cc.ln"; lo: "cc.lo"; lp: "cc.lp"; lq: "cc.lq"; lr: "cc.lr"; ls: "cc.ls"; lt: "cc.lt"; lu: "cc.lu"; lv: "cc.lv"; lw: "cc.lw"; lx: "cc.lx"; ly: "cc.ly"; lz: "cc.lz"; ma: "cc.ma"; mb: "cc.mb"; mc: "cc.mc"; md: "cc.md"; me: "cc.me"; mf: "cc.mf"; mg: "cc.mg"; mh: "cc.mh"; mi: "cc.mi"; mj: "cc.mj"; mk: "cc.mk"; ml: "cc.ml"; mm: "cc.mm"; mn: "cc.mn"; mo: "cc.mo"; mp: "cc.mp"; mq: "cc.mq"; mr: "cc.mr"; ms: "cc.ms"; mt: "cc.mt"; mu: "cc.mu"; mv: "cc.mv"; mw: "cc.mw"; mx: "cc.mx"; my: "cc.my"; mz: "cc.mz"; na: "cc.na"; nb: "cc.nb"; nc: "cc.nc"; nd: "cc.nd"; ne: "cc.ne"; nf: "cc.nf"; ng: "cc.ng"; nh: "cc.nh"; ni: "cc.ni"; nj: "cc.nj"; nk: "cc.nk"; nl: "cc.nl"; nm: "cc.nm"; nn: "cc.nn"; no: "cc.no"; np: "cc.np"; nq: "cc.nq"; nr: "cc.nr"; ns: "cc.ns"; nt: "cc.nt"; nu: "cc.nu"; nv: "cc.nv"; nw: "cc.nw"; nx: "cc.nx"; ny: "cc.ny"; nz: "cc.nz"; oa: "cc.oa"; ob: "cc.ob"; oc: "cc.oc"; od: "cc.od"; oe: "cc.oe"; of: "cc.of"; og: "cc.og"; oh: "cc.oh"; oi: "cc.oi"; oj: "cc.oj"; ok: "cc.ok"; ol: "cc.ol"; om: "cc.om"; on: "cc.on"; oo: "cc.oo"; op: "cc.op"; oq: "cc.oq"; or: "cc.or"; os: "cc.os"; ot: "cc.ot"; ou: "cc.ou"; ov: "cc.ov"; ow: "cc.ow"; ox: "cc.ox"; oy: "cc.oy"; oz: "cc.oz"; pa: "cc.pa"; pb: "cc.pb"; pc: "cc.pc"; pd: "cc.pd"; pe: "cc.pe"; pf: "cc.pf"; pg: "cc.pg"; ph: "cc.ph"; pi: "cc.pi"; pj: "cc.pj"; pk: "cc.pk"; pl: "cc.pl"; pm: "cc.pm"; pn: "cc.pn"; po: "cc.po"; pp: "cc.pp"; pq: "cc.pq"; pr: "cc.pr"; ps: "cc.ps"; pt: "cc.pt"; pu: "cc.pu"; pv: "cc.pv"; pw: "cc.pw"; px: "cc.px"; py: "cc.py"; pz: "cc.pz"; qa: "cc.qa"; qb: "cc.qb"; qc: "cc.qc"; qd: "cc.qd"; qe: "cc.qe"; qf: "cc.qf"; qg: "cc.qg"; qh: "cc.qh"; qi: "cc.qi"; qj: "cc.qj"; qk: "cc.qk"; ql: "cc.ql"; qm: "cc.qm"; qn: "cc.qn"; qo: "cc.qo"; qp: "cc.qp"; qq: "cc.qq"; qr: "cc.qr"; qs: "cc.qs"; qt: "cc.qt"; qu: "cc.qu"; qv: "cc.qv"; qw: "cc.qw"; qx: "cc.qx"; qy: "cc.qy"; qz: "cc.qz"; ra: "cc.ra"; rb: "cc.rb"; rc: "cc.rc"; rd: "cc.rd"; re: "cc.re"; rf: "cc.rf"; rg: "cc.rg"; rh: "cc.rh"; ri: "cc.ri"; rj: "cc.rj"; rk: "cc.rk"; rl: "cc.rl"; rm: "cc.rm"; rn: "cc.rn"; ro: "cc.ro"; rp: "cc.rp"; rq: "cc.rq"; rr: "cc.rr"; rs: "cc.rs"; rt: "cc.rt"; ru: "cc.ru"; rv: "cc.rv"; rw: "cc.rw"; rx: "cc.rx"; ry: "cc.ry"; rz: "cc.rz"; sa: "cc.sa"; sb: "cc.sb"; sc: "cc.sc"; sd: "cc.sd"; se: "cc.se"; sf: "cc.sf"; sg: "cc.sg"; sh: "cc.sh"; si: "cc.si"; sj: "cc.sj"; sk: "cc.sk"; sl: "cc.sl"; sm: "cc.sm"; sn: "cc.sn"; so: "cc.so"; sp: "cc.sp"; sq: "cc.sq"; sr: "cc.sr"; ss: "cc.ss"; st: "cc.st"; su: "cc.su"; sv: "cc.sv"; sw: "cc.sw"; sx: "cc.sx"; sy: "cc.sy"; sz: "cc.sz"; ta: "cc.ta"; tb: "cc.tb"; tc: "cc.tc"; td: "cc.td"; te: "cc.te"; tf: "cc.tf"; tg: "cc.tg"; th: "cc.th"; ti: "cc.ti"; tj: "cc.tj"; tk: "cc.tk"; tl: "cc.tl"; tm: "cc.tm"; tn: "cc.tn"; to: "cc.to"; tp: "cc.tp"; tq: "cc.tq"; tr: "cc.tr"; ts: "cc.ts"; tt: "cc.tt"; tu: "cc.tu"; tv: "cc.tv"; tw: "cc.tw"; tx: "cc.tx"; ty: "cc.ty"; tz: "cc.tz"; ua: "cc.ua"; ub: "cc.ub"; uc: "cc.uc"; ud: "cc.ud"; ue: "cc.ue"; uf: "cc.uf"; ug: "cc.ug"; uh: "cc.uh"; ui: "cc.ui"; uj: "cc.uj"; uk: "cc.uk"; ul: "cc.ul"; um: "cc.um"; un: "cc.un"; uo: "cc.uo"; up: "cc.up"; uq: "cc.uq"; ur: "cc.ur"; us: "cc.us"; ut: "cc.ut"; uu: "cc.uu"; uv: "cc.uv"; uw: "cc.uw"; ux: "cc.ux"; uy: "cc.uy"; uz: "cc.uz"; va: "cc.va"; vb: "cc.vb"; vc: "cc.vc"; vd: "cc.vd"; ve: "cc.ve"; vf: "cc.vf"; vg: "cc.vg"; vh: "cc.vh"; vi: "cc.vi"; vj: "cc.vj"; vk: "cc.vk"; vl: "cc.vl"; vm: "cc.vm"; vn: "cc.vn"; vo: "cc.vo"; vp: "cc.vp"; vq: "cc.vq"; vr: "cc.vr"; vs: "cc.vs"; vt: "cc.vt"; vu: "cc.vu"; vv: "cc.vv"; vw: "cc.vw"; vx: "cc.vx"; vy: "cc.vy"; vz: "cc.vz"; wa: "cc.wa"; wb: "cc.wb"; wc: "cc.wc"; wd: "cc.wd"; we: "cc.we"; wf: "cc.wf"; wg: "cc.wg"; wh: "cc.wh"; wi: "cc.wi"; wj: "cc.wj"; wk: "cc.wk"; wl: "cc.wl"; wm: "cc.wm"; wn: "cc.wn"; wo: "cc.wo"; wp: "cc.wp"; wq: "cc.wq"; wr: "cc.wr"; ws: "cc.ws"; wt: "cc.wt"; wu: "cc.wu"; wv: "cc.wv"; ww: "cc.ww"; wx: "cc.wx"; wy: "cc.wy"; wz: "cc.wz"; xa: "cc.xa"; xb: "cc.xb"; xc: "cc.xc"; xd: "cc.xd"; xe: "cc.xe"; xf: "cc.xf"; xg: "cc.xg"; xh: "cc.xh"; xi: "cc.xi"; xj: "cc.xj"; xk: "cc.xk"; xl: "cc.xl"; xm: "cc.xm"; xn: "cc.xn"; xo: "cc.xo"; xp: "cc.xp"; xq: "cc.xq"; xr: "cc.xr"; xs: "cc.xs"; xt: "cc.xt"; xu: "cc.xu"; xv: "cc.xv"; xw: "cc.xw"; xx: "cc.xx"; xy: "cc.xy"; xz: "cc.xz"; ya: "cc.ya"; yb: "cc.yb"; yc: "cc.yc"; yd: "cc.yd"; ye: "cc.ye"; yf: "cc.yf"; yg: "cc.yg"; yh: "cc.yh"; yi: "cc.yi"; yj: "cc.yj"; yk: "cc.yk"; yl: "cc.yl"; ym: "cc.ym"; yn: "cc.yn"; yo: "cc.yo"; yp: "cc.yp"; yq: "cc.yq"; yr: "cc.yr"; ys: "cc.ys"; yt: "cc.yt"; yu: "cc.yu"; yv: "cc.yv"; yw: "cc.yw"; yx: "cc.yx"; yy: "cc.yy"; yz: "cc.yz"; za: "cc.za"; zb: "cc.zb"; zc: "cc.zc"; zd: "cc.zd"; ze: "cc.ze"; zf: "cc.zf"; zg: "cc.zg"; zh: "cc.zh"; zi: "cc.zi"; zj: "cc.zj"; zk: "cc.zk"; zl: "cc.zl"; zm: "cc.zm"; zn: "cc.zn"; zo: "cc.zo"; zp: "cc.zp"; zq: "cc.zq"; zr: "cc.zr"; zs: "cc.zs"; zt: "cc.zt"; zu: "cc.zu"; zv: "cc.zv"; zw: "cc.zw"; zx: "cc.zx"; zy: "cc.zy"; zz: "cc.zz"; }; cd: { aa: "cd.aa"; ab: "cd.ab"; ac: "cd.ac"; ad: "cd.ad"; ae: "cd.ae"; af: "cd.af"; ag: "cd.ag"; ah: "cd.ah"; ai: "cd.ai"; aj: "cd.aj"; ak: "cd.ak"; al: "cd.al"; am: "cd.am"; an: "cd.an"; ao: "cd.ao"; ap: "cd.ap"; aq: "cd.aq"; ar: "cd.ar"; as: "cd.as"; at: "cd.at"; au: "cd.au"; av: "cd.av"; aw: "cd.aw"; ax: "cd.ax"; ay: "cd.ay"; az: "cd.az"; ba: "cd.ba"; bb: "cd.bb"; bc: "cd.bc"; bd: "cd.bd"; be: "cd.be"; bf: "cd.bf"; bg: "cd.bg"; bh: "cd.bh"; bi: "cd.bi"; bj: "cd.bj"; bk: "cd.bk"; bl: "cd.bl"; bm: "cd.bm"; bn: "cd.bn"; bo: "cd.bo"; bp: "cd.bp"; bq: "cd.bq"; br: "cd.br"; bs: "cd.bs"; bt: "cd.bt"; bu: "cd.bu"; bv: "cd.bv"; bw: "cd.bw"; bx: "cd.bx"; by: "cd.by"; bz: "cd.bz"; ca: "cd.ca"; cb: "cd.cb"; cc: "cd.cc"; cd: "cd.cd"; ce: "cd.ce"; cf: "cd.cf"; cg: "cd.cg"; ch: "cd.ch"; ci: "cd.ci"; cj: "cd.cj"; ck: "cd.ck"; cl: "cd.cl"; cm: "cd.cm"; cn: "cd.cn"; co: "cd.co"; cp: "cd.cp"; cq: "cd.cq"; cr: "cd.cr"; cs: "cd.cs"; ct: "cd.ct"; cu: "cd.cu"; cv: "cd.cv"; cw: "cd.cw"; cx: "cd.cx"; cy: "cd.cy"; cz: "cd.cz"; da: "cd.da"; db: "cd.db"; dc: "cd.dc"; dd: "cd.dd"; de: "cd.de"; df: "cd.df"; dg: "cd.dg"; dh: "cd.dh"; di: "cd.di"; dj: "cd.dj"; dk: "cd.dk"; dl: "cd.dl"; dm: "cd.dm"; dn: "cd.dn"; do: "cd.do"; dp: "cd.dp"; dq: "cd.dq"; dr: "cd.dr"; ds: "cd.ds"; dt: "cd.dt"; du: "cd.du"; dv: "cd.dv"; dw: "cd.dw"; dx: "cd.dx"; dy: "cd.dy"; dz: "cd.dz"; ea: "cd.ea"; eb: "cd.eb"; ec: "cd.ec"; ed: "cd.ed"; ee: "cd.ee"; ef: "cd.ef"; eg: "cd.eg"; eh: "cd.eh"; ei: "cd.ei"; ej: "cd.ej"; ek: "cd.ek"; el: "cd.el"; em: "cd.em"; en: "cd.en"; eo: "cd.eo"; ep: "cd.ep"; eq: "cd.eq"; er: "cd.er"; es: "cd.es"; et: "cd.et"; eu: "cd.eu"; ev: "cd.ev"; ew: "cd.ew"; ex: "cd.ex"; ey: "cd.ey"; ez: "cd.ez"; fa: "cd.fa"; fb: "cd.fb"; fc: "cd.fc"; fd: "cd.fd"; fe: "cd.fe"; ff: "cd.ff"; fg: "cd.fg"; fh: "cd.fh"; fi: "cd.fi"; fj: "cd.fj"; fk: "cd.fk"; fl: "cd.fl"; fm: "cd.fm"; fn: "cd.fn"; fo: "cd.fo"; fp: "cd.fp"; fq: "cd.fq"; fr: "cd.fr"; fs: "cd.fs"; ft: "cd.ft"; fu: "cd.fu"; fv: "cd.fv"; fw: "cd.fw"; fx: "cd.fx"; fy: "cd.fy"; fz: "cd.fz"; ga: "cd.ga"; gb: "cd.gb"; gc: "cd.gc"; gd: "cd.gd"; ge: "cd.ge"; gf: "cd.gf"; gg: "cd.gg"; gh: "cd.gh"; gi: "cd.gi"; gj: "cd.gj"; gk: "cd.gk"; gl: "cd.gl"; gm: "cd.gm"; gn: "cd.gn"; go: "cd.go"; gp: "cd.gp"; gq: "cd.gq"; gr: "cd.gr"; gs: "cd.gs"; gt: "cd.gt"; gu: "cd.gu"; gv: "cd.gv"; gw: "cd.gw"; gx: "cd.gx"; gy: "cd.gy"; gz: "cd.gz"; ha: "cd.ha"; hb: "cd.hb"; hc: "cd.hc"; hd: "cd.hd"; he: "cd.he"; hf: "cd.hf"; hg: "cd.hg"; hh: "cd.hh"; hi: "cd.hi"; hj: "cd.hj"; hk: "cd.hk"; hl: "cd.hl"; hm: "cd.hm"; hn: "cd.hn"; ho: "cd.ho"; hp: "cd.hp"; hq: "cd.hq"; hr: "cd.hr"; hs: "cd.hs"; ht: "cd.ht"; hu: "cd.hu"; hv: "cd.hv"; hw: "cd.hw"; hx: "cd.hx"; hy: "cd.hy"; hz: "cd.hz"; ia: "cd.ia"; ib: "cd.ib"; ic: "cd.ic"; id: "cd.id"; ie: "cd.ie"; if: "cd.if"; ig: "cd.ig"; ih: "cd.ih"; ii: "cd.ii"; ij: "cd.ij"; ik: "cd.ik"; il: "cd.il"; im: "cd.im"; in: "cd.in"; io: "cd.io"; ip: "cd.ip"; iq: "cd.iq"; ir: "cd.ir"; is: "cd.is"; it: "cd.it"; iu: "cd.iu"; iv: "cd.iv"; iw: "cd.iw"; ix: "cd.ix"; iy: "cd.iy"; iz: "cd.iz"; ja: "cd.ja"; jb: "cd.jb"; jc: "cd.jc"; jd: "cd.jd"; je: "cd.je"; jf: "cd.jf"; jg: "cd.jg"; jh: "cd.jh"; ji: "cd.ji"; jj: "cd.jj"; jk: "cd.jk"; jl: "cd.jl"; jm: "cd.jm"; jn: "cd.jn"; jo: "cd.jo"; jp: "cd.jp"; jq: "cd.jq"; jr: "cd.jr"; js: "cd.js"; jt: "cd.jt"; ju: "cd.ju"; jv: "cd.jv"; jw: "cd.jw"; jx: "cd.jx"; jy: "cd.jy"; jz: "cd.jz"; ka: "cd.ka"; kb: "cd.kb"; kc: "cd.kc"; kd: "cd.kd"; ke: "cd.ke"; kf: "cd.kf"; kg: "cd.kg"; kh: "cd.kh"; ki: "cd.ki"; kj: "cd.kj"; kk: "cd.kk"; kl: "cd.kl"; km: "cd.km"; kn: "cd.kn"; ko: "cd.ko"; kp: "cd.kp"; kq: "cd.kq"; kr: "cd.kr"; ks: "cd.ks"; kt: "cd.kt"; ku: "cd.ku"; kv: "cd.kv"; kw: "cd.kw"; kx: "cd.kx"; ky: "cd.ky"; kz: "cd.kz"; la: "cd.la"; lb: "cd.lb"; lc: "cd.lc"; ld: "cd.ld"; le: "cd.le"; lf: "cd.lf"; lg: "cd.lg"; lh: "cd.lh"; li: "cd.li"; lj: "cd.lj"; lk: "cd.lk"; ll: "cd.ll"; lm: "cd.lm"; ln: "cd.ln"; lo: "cd.lo"; lp: "cd.lp"; lq: "cd.lq"; lr: "cd.lr"; ls: "cd.ls"; lt: "cd.lt"; lu: "cd.lu"; lv: "cd.lv"; lw: "cd.lw"; lx: "cd.lx"; ly: "cd.ly"; lz: "cd.lz"; ma: "cd.ma"; mb: "cd.mb"; mc: "cd.mc"; md: "cd.md"; me: "cd.me"; mf: "cd.mf"; mg: "cd.mg"; mh: "cd.mh"; mi: "cd.mi"; mj: "cd.mj"; mk: "cd.mk"; ml: "cd.ml"; mm: "cd.mm"; mn: "cd.mn"; mo: "cd.mo"; mp: "cd.mp"; mq: "cd.mq"; mr: "cd.mr"; ms: "cd.ms"; mt: "cd.mt"; mu: "cd.mu"; mv: "cd.mv"; mw: "cd.mw"; mx: "cd.mx"; my: "cd.my"; mz: "cd.mz"; na: "cd.na"; nb: "cd.nb"; nc: "cd.nc"; nd: "cd.nd"; ne: "cd.ne"; nf: "cd.nf"; ng: "cd.ng"; nh: "cd.nh"; ni: "cd.ni"; nj: "cd.nj"; nk: "cd.nk"; nl: "cd.nl"; nm: "cd.nm"; nn: "cd.nn"; no: "cd.no"; np: "cd.np"; nq: "cd.nq"; nr: "cd.nr"; ns: "cd.ns"; nt: "cd.nt"; nu: "cd.nu"; nv: "cd.nv"; nw: "cd.nw"; nx: "cd.nx"; ny: "cd.ny"; nz: "cd.nz"; oa: "cd.oa"; ob: "cd.ob"; oc: "cd.oc"; od: "cd.od"; oe: "cd.oe"; of: "cd.of"; og: "cd.og"; oh: "cd.oh"; oi: "cd.oi"; oj: "cd.oj"; ok: "cd.ok"; ol: "cd.ol"; om: "cd.om"; on: "cd.on"; oo: "cd.oo"; op: "cd.op"; oq: "cd.oq"; or: "cd.or"; os: "cd.os"; ot: "cd.ot"; ou: "cd.ou"; ov: "cd.ov"; ow: "cd.ow"; ox: "cd.ox"; oy: "cd.oy"; oz: "cd.oz"; pa: "cd.pa"; pb: "cd.pb"; pc: "cd.pc"; pd: "cd.pd"; pe: "cd.pe"; pf: "cd.pf"; pg: "cd.pg"; ph: "cd.ph"; pi: "cd.pi"; pj: "cd.pj"; pk: "cd.pk"; pl: "cd.pl"; pm: "cd.pm"; pn: "cd.pn"; po: "cd.po"; pp: "cd.pp"; pq: "cd.pq"; pr: "cd.pr"; ps: "cd.ps"; pt: "cd.pt"; pu: "cd.pu"; pv: "cd.pv"; pw: "cd.pw"; px: "cd.px"; py: "cd.py"; pz: "cd.pz"; qa: "cd.qa"; qb: "cd.qb"; qc: "cd.qc"; qd: "cd.qd"; qe: "cd.qe"; qf: "cd.qf"; qg: "cd.qg"; qh: "cd.qh"; qi: "cd.qi"; qj: "cd.qj"; qk: "cd.qk"; ql: "cd.ql"; qm: "cd.qm"; qn: "cd.qn"; qo: "cd.qo"; qp: "cd.qp"; qq: "cd.qq"; qr: "cd.qr"; qs: "cd.qs"; qt: "cd.qt"; qu: "cd.qu"; qv: "cd.qv"; qw: "cd.qw"; qx: "cd.qx"; qy: "cd.qy"; qz: "cd.qz"; ra: "cd.ra"; rb: "cd.rb"; rc: "cd.rc"; rd: "cd.rd"; re: "cd.re"; rf: "cd.rf"; rg: "cd.rg"; rh: "cd.rh"; ri: "cd.ri"; rj: "cd.rj"; rk: "cd.rk"; rl: "cd.rl"; rm: "cd.rm"; rn: "cd.rn"; ro: "cd.ro"; rp: "cd.rp"; rq: "cd.rq"; rr: "cd.rr"; rs: "cd.rs"; rt: "cd.rt"; ru: "cd.ru"; rv: "cd.rv"; rw: "cd.rw"; rx: "cd.rx"; ry: "cd.ry"; rz: "cd.rz"; sa: "cd.sa"; sb: "cd.sb"; sc: "cd.sc"; sd: "cd.sd"; se: "cd.se"; sf: "cd.sf"; sg: "cd.sg"; sh: "cd.sh"; si: "cd.si"; sj: "cd.sj"; sk: "cd.sk"; sl: "cd.sl"; sm: "cd.sm"; sn: "cd.sn"; so: "cd.so"; sp: "cd.sp"; sq: "cd.sq"; sr: "cd.sr"; ss: "cd.ss"; st: "cd.st"; su: "cd.su"; sv: "cd.sv"; sw: "cd.sw"; sx: "cd.sx"; sy: "cd.sy"; sz: "cd.sz"; ta: "cd.ta"; tb: "cd.tb"; tc: "cd.tc"; td: "cd.td"; te: "cd.te"; tf: "cd.tf"; tg: "cd.tg"; th: "cd.th"; ti: "cd.ti"; tj: "cd.tj"; tk: "cd.tk"; tl: "cd.tl"; tm: "cd.tm"; tn: "cd.tn"; to: "cd.to"; tp: "cd.tp"; tq: "cd.tq"; tr: "cd.tr"; ts: "cd.ts"; tt: "cd.tt"; tu: "cd.tu"; tv: "cd.tv"; tw: "cd.tw"; tx: "cd.tx"; ty: "cd.ty"; tz: "cd.tz"; ua: "cd.ua"; ub: "cd.ub"; uc: "cd.uc"; ud: "cd.ud"; ue: "cd.ue"; uf: "cd.uf"; ug: "cd.ug"; uh: "cd.uh"; ui: "cd.ui"; uj: "cd.uj"; uk: "cd.uk"; ul: "cd.ul"; um: "cd.um"; un: "cd.un"; uo: "cd.uo"; up: "cd.up"; uq: "cd.uq"; ur: "cd.ur"; us: "cd.us"; ut: "cd.ut"; uu: "cd.uu"; uv: "cd.uv"; uw: "cd.uw"; ux: "cd.ux"; uy: "cd.uy"; uz: "cd.uz"; va: "cd.va"; vb: "cd.vb"; vc: "cd.vc"; vd: "cd.vd"; ve: "cd.ve"; vf: "cd.vf"; vg: "cd.vg"; vh: "cd.vh"; vi: "cd.vi"; vj: "cd.vj"; vk: "cd.vk"; vl: "cd.vl"; vm: "cd.vm"; vn: "cd.vn"; vo: "cd.vo"; vp: "cd.vp"; vq: "cd.vq"; vr: "cd.vr"; vs: "cd.vs"; vt: "cd.vt"; vu: "cd.vu"; vv: "cd.vv"; vw: "cd.vw"; vx: "cd.vx"; vy: "cd.vy"; vz: "cd.vz"; wa: "cd.wa"; wb: "cd.wb"; wc: "cd.wc"; wd: "cd.wd"; we: "cd.we"; wf: "cd.wf"; wg: "cd.wg"; wh: "cd.wh"; wi: "cd.wi"; wj: "cd.wj"; wk: "cd.wk"; wl: "cd.wl"; wm: "cd.wm"; wn: "cd.wn"; wo: "cd.wo"; wp: "cd.wp"; wq: "cd.wq"; wr: "cd.wr"; ws: "cd.ws"; wt: "cd.wt"; wu: "cd.wu"; wv: "cd.wv"; ww: "cd.ww"; wx: "cd.wx"; wy: "cd.wy"; wz: "cd.wz"; xa: "cd.xa"; xb: "cd.xb"; xc: "cd.xc"; xd: "cd.xd"; xe: "cd.xe"; xf: "cd.xf"; xg: "cd.xg"; xh: "cd.xh"; xi: "cd.xi"; xj: "cd.xj"; xk: "cd.xk"; xl: "cd.xl"; xm: "cd.xm"; xn: "cd.xn"; xo: "cd.xo"; xp: "cd.xp"; xq: "cd.xq"; xr: "cd.xr"; xs: "cd.xs"; xt: "cd.xt"; xu: "cd.xu"; xv: "cd.xv"; xw: "cd.xw"; xx: "cd.xx"; xy: "cd.xy"; xz: "cd.xz"; ya: "cd.ya"; yb: "cd.yb"; yc: "cd.yc"; yd: "cd.yd"; ye: "cd.ye"; yf: "cd.yf"; yg: "cd.yg"; yh: "cd.yh"; yi: "cd.yi"; yj: "cd.yj"; yk: "cd.yk"; yl: "cd.yl"; ym: "cd.ym"; yn: "cd.yn"; yo: "cd.yo"; yp: "cd.yp"; yq: "cd.yq"; yr: "cd.yr"; ys: "cd.ys"; yt: "cd.yt"; yu: "cd.yu"; yv: "cd.yv"; yw: "cd.yw"; yx: "cd.yx"; yy: "cd.yy"; yz: "cd.yz"; za: "cd.za"; zb: "cd.zb"; zc: "cd.zc"; zd: "cd.zd"; ze: "cd.ze"; zf: "cd.zf"; zg: "cd.zg"; zh: "cd.zh"; zi: "cd.zi"; zj: "cd.zj"; zk: "cd.zk"; zl: "cd.zl"; zm: "cd.zm"; zn: "cd.zn"; zo: "cd.zo"; zp: "cd.zp"; zq: "cd.zq"; zr: "cd.zr"; zs: "cd.zs"; zt: "cd.zt"; zu: "cd.zu"; zv: "cd.zv"; zw: "cd.zw"; zx: "cd.zx"; zy: "cd.zy"; zz: "cd.zz"; }; ce: { aa: "ce.aa"; ab: "ce.ab"; ac: "ce.ac"; ad: "ce.ad"; ae: "ce.ae"; af: "ce.af"; ag: "ce.ag"; ah: "ce.ah"; ai: "ce.ai"; aj: "ce.aj"; ak: "ce.ak"; al: "ce.al"; am: "ce.am"; an: "ce.an"; ao: "ce.ao"; ap: "ce.ap"; aq: "ce.aq"; ar: "ce.ar"; as: "ce.as"; at: "ce.at"; au: "ce.au"; av: "ce.av"; aw: "ce.aw"; ax: "ce.ax"; ay: "ce.ay"; az: "ce.az"; ba: "ce.ba"; bb: "ce.bb"; bc: "ce.bc"; bd: "ce.bd"; be: "ce.be"; bf: "ce.bf"; bg: "ce.bg"; bh: "ce.bh"; bi: "ce.bi"; bj: "ce.bj"; bk: "ce.bk"; bl: "ce.bl"; bm: "ce.bm"; bn: "ce.bn"; bo: "ce.bo"; bp: "ce.bp"; bq: "ce.bq"; br: "ce.br"; bs: "ce.bs"; bt: "ce.bt"; bu: "ce.bu"; bv: "ce.bv"; bw: "ce.bw"; bx: "ce.bx"; by: "ce.by"; bz: "ce.bz"; ca: "ce.ca"; cb: "ce.cb"; cc: "ce.cc"; cd: "ce.cd"; ce: "ce.ce"; cf: "ce.cf"; cg: "ce.cg"; ch: "ce.ch"; ci: "ce.ci"; cj: "ce.cj"; ck: "ce.ck"; cl: "ce.cl"; cm: "ce.cm"; cn: "ce.cn"; co: "ce.co"; cp: "ce.cp"; cq: "ce.cq"; cr: "ce.cr"; cs: "ce.cs"; ct: "ce.ct"; cu: "ce.cu"; cv: "ce.cv"; cw: "ce.cw"; cx: "ce.cx"; cy: "ce.cy"; cz: "ce.cz"; da: "ce.da"; db: "ce.db"; dc: "ce.dc"; dd: "ce.dd"; de: "ce.de"; df: "ce.df"; dg: "ce.dg"; dh: "ce.dh"; di: "ce.di"; dj: "ce.dj"; dk: "ce.dk"; dl: "ce.dl"; dm: "ce.dm"; dn: "ce.dn"; do: "ce.do"; dp: "ce.dp"; dq: "ce.dq"; dr: "ce.dr"; ds: "ce.ds"; dt: "ce.dt"; du: "ce.du"; dv: "ce.dv"; dw: "ce.dw"; dx: "ce.dx"; dy: "ce.dy"; dz: "ce.dz"; ea: "ce.ea"; eb: "ce.eb"; ec: "ce.ec"; ed: "ce.ed"; ee: "ce.ee"; ef: "ce.ef"; eg: "ce.eg"; eh: "ce.eh"; ei: "ce.ei"; ej: "ce.ej"; ek: "ce.ek"; el: "ce.el"; em: "ce.em"; en: "ce.en"; eo: "ce.eo"; ep: "ce.ep"; eq: "ce.eq"; er: "ce.er"; es: "ce.es"; et: "ce.et"; eu: "ce.eu"; ev: "ce.ev"; ew: "ce.ew"; ex: "ce.ex"; ey: "ce.ey"; ez: "ce.ez"; fa: "ce.fa"; fb: "ce.fb"; fc: "ce.fc"; fd: "ce.fd"; fe: "ce.fe"; ff: "ce.ff"; fg: "ce.fg"; fh: "ce.fh"; fi: "ce.fi"; fj: "ce.fj"; fk: "ce.fk"; fl: "ce.fl"; fm: "ce.fm"; fn: "ce.fn"; fo: "ce.fo"; fp: "ce.fp"; fq: "ce.fq"; fr: "ce.fr"; fs: "ce.fs"; ft: "ce.ft"; fu: "ce.fu"; fv: "ce.fv"; fw: "ce.fw"; fx: "ce.fx"; fy: "ce.fy"; fz: "ce.fz"; ga: "ce.ga"; gb: "ce.gb"; gc: "ce.gc"; gd: "ce.gd"; ge: "ce.ge"; gf: "ce.gf"; gg: "ce.gg"; gh: "ce.gh"; gi: "ce.gi"; gj: "ce.gj"; gk: "ce.gk"; gl: "ce.gl"; gm: "ce.gm"; gn: "ce.gn"; go: "ce.go"; gp: "ce.gp"; gq: "ce.gq"; gr: "ce.gr"; gs: "ce.gs"; gt: "ce.gt"; gu: "ce.gu"; gv: "ce.gv"; gw: "ce.gw"; gx: "ce.gx"; gy: "ce.gy"; gz: "ce.gz"; ha: "ce.ha"; hb: "ce.hb"; hc: "ce.hc"; hd: "ce.hd"; he: "ce.he"; hf: "ce.hf"; hg: "ce.hg"; hh: "ce.hh"; hi: "ce.hi"; hj: "ce.hj"; hk: "ce.hk"; hl: "ce.hl"; hm: "ce.hm"; hn: "ce.hn"; ho: "ce.ho"; hp: "ce.hp"; hq: "ce.hq"; hr: "ce.hr"; hs: "ce.hs"; ht: "ce.ht"; hu: "ce.hu"; hv: "ce.hv"; hw: "ce.hw"; hx: "ce.hx"; hy: "ce.hy"; hz: "ce.hz"; ia: "ce.ia"; ib: "ce.ib"; ic: "ce.ic"; id: "ce.id"; ie: "ce.ie"; if: "ce.if"; ig: "ce.ig"; ih: "ce.ih"; ii: "ce.ii"; ij: "ce.ij"; ik: "ce.ik"; il: "ce.il"; im: "ce.im"; in: "ce.in"; io: "ce.io"; ip: "ce.ip"; iq: "ce.iq"; ir: "ce.ir"; is: "ce.is"; it: "ce.it"; iu: "ce.iu"; iv: "ce.iv"; iw: "ce.iw"; ix: "ce.ix"; iy: "ce.iy"; iz: "ce.iz"; ja: "ce.ja"; jb: "ce.jb"; jc: "ce.jc"; jd: "ce.jd"; je: "ce.je"; jf: "ce.jf"; jg: "ce.jg"; jh: "ce.jh"; ji: "ce.ji"; jj: "ce.jj"; jk: "ce.jk"; jl: "ce.jl"; jm: "ce.jm"; jn: "ce.jn"; jo: "ce.jo"; jp: "ce.jp"; jq: "ce.jq"; jr: "ce.jr"; js: "ce.js"; jt: "ce.jt"; ju: "ce.ju"; jv: "ce.jv"; jw: "ce.jw"; jx: "ce.jx"; jy: "ce.jy"; jz: "ce.jz"; ka: "ce.ka"; kb: "ce.kb"; kc: "ce.kc"; kd: "ce.kd"; ke: "ce.ke"; kf: "ce.kf"; kg: "ce.kg"; kh: "ce.kh"; ki: "ce.ki"; kj: "ce.kj"; kk: "ce.kk"; kl: "ce.kl"; km: "ce.km"; kn: "ce.kn"; ko: "ce.ko"; kp: "ce.kp"; kq: "ce.kq"; kr: "ce.kr"; ks: "ce.ks"; kt: "ce.kt"; ku: "ce.ku"; kv: "ce.kv"; kw: "ce.kw"; kx: "ce.kx"; ky: "ce.ky"; kz: "ce.kz"; la: "ce.la"; lb: "ce.lb"; lc: "ce.lc"; ld: "ce.ld"; le: "ce.le"; lf: "ce.lf"; lg: "ce.lg"; lh: "ce.lh"; li: "ce.li"; lj: "ce.lj"; lk: "ce.lk"; ll: "ce.ll"; lm: "ce.lm"; ln: "ce.ln"; lo: "ce.lo"; lp: "ce.lp"; lq: "ce.lq"; lr: "ce.lr"; ls: "ce.ls"; lt: "ce.lt"; lu: "ce.lu"; lv: "ce.lv"; lw: "ce.lw"; lx: "ce.lx"; ly: "ce.ly"; lz: "ce.lz"; ma: "ce.ma"; mb: "ce.mb"; mc: "ce.mc"; md: "ce.md"; me: "ce.me"; mf: "ce.mf"; mg: "ce.mg"; mh: "ce.mh"; mi: "ce.mi"; mj: "ce.mj"; mk: "ce.mk"; ml: "ce.ml"; mm: "ce.mm"; mn: "ce.mn"; mo: "ce.mo"; mp: "ce.mp"; mq: "ce.mq"; mr: "ce.mr"; ms: "ce.ms"; mt: "ce.mt"; mu: "ce.mu"; mv: "ce.mv"; mw: "ce.mw"; mx: "ce.mx"; my: "ce.my"; mz: "ce.mz"; na: "ce.na"; nb: "ce.nb"; nc: "ce.nc"; nd: "ce.nd"; ne: "ce.ne"; nf: "ce.nf"; ng: "ce.ng"; nh: "ce.nh"; ni: "ce.ni"; nj: "ce.nj"; nk: "ce.nk"; nl: "ce.nl"; nm: "ce.nm"; nn: "ce.nn"; no: "ce.no"; np: "ce.np"; nq: "ce.nq"; nr: "ce.nr"; ns: "ce.ns"; nt: "ce.nt"; nu: "ce.nu"; nv: "ce.nv"; nw: "ce.nw"; nx: "ce.nx"; ny: "ce.ny"; nz: "ce.nz"; oa: "ce.oa"; ob: "ce.ob"; oc: "ce.oc"; od: "ce.od"; oe: "ce.oe"; of: "ce.of"; og: "ce.og"; oh: "ce.oh"; oi: "ce.oi"; oj: "ce.oj"; ok: "ce.ok"; ol: "ce.ol"; om: "ce.om"; on: "ce.on"; oo: "ce.oo"; op: "ce.op"; oq: "ce.oq"; or: "ce.or"; os: "ce.os"; ot: "ce.ot"; ou: "ce.ou"; ov: "ce.ov"; ow: "ce.ow"; ox: "ce.ox"; oy: "ce.oy"; oz: "ce.oz"; pa: "ce.pa"; pb: "ce.pb"; pc: "ce.pc"; pd: "ce.pd"; pe: "ce.pe"; pf: "ce.pf"; pg: "ce.pg"; ph: "ce.ph"; pi: "ce.pi"; pj: "ce.pj"; pk: "ce.pk"; pl: "ce.pl"; pm: "ce.pm"; pn: "ce.pn"; po: "ce.po"; pp: "ce.pp"; pq: "ce.pq"; pr: "ce.pr"; ps: "ce.ps"; pt: "ce.pt"; pu: "ce.pu"; pv: "ce.pv"; pw: "ce.pw"; px: "ce.px"; py: "ce.py"; pz: "ce.pz"; qa: "ce.qa"; qb: "ce.qb"; qc: "ce.qc"; qd: "ce.qd"; qe: "ce.qe"; qf: "ce.qf"; qg: "ce.qg"; qh: "ce.qh"; qi: "ce.qi"; qj: "ce.qj"; qk: "ce.qk"; ql: "ce.ql"; qm: "ce.qm"; qn: "ce.qn"; qo: "ce.qo"; qp: "ce.qp"; qq: "ce.qq"; qr: "ce.qr"; qs: "ce.qs"; qt: "ce.qt"; qu: "ce.qu"; qv: "ce.qv"; qw: "ce.qw"; qx: "ce.qx"; qy: "ce.qy"; qz: "ce.qz"; ra: "ce.ra"; rb: "ce.rb"; rc: "ce.rc"; rd: "ce.rd"; re: "ce.re"; rf: "ce.rf"; rg: "ce.rg"; rh: "ce.rh"; ri: "ce.ri"; rj: "ce.rj"; rk: "ce.rk"; rl: "ce.rl"; rm: "ce.rm"; rn: "ce.rn"; ro: "ce.ro"; rp: "ce.rp"; rq: "ce.rq"; rr: "ce.rr"; rs: "ce.rs"; rt: "ce.rt"; ru: "ce.ru"; rv: "ce.rv"; rw: "ce.rw"; rx: "ce.rx"; ry: "ce.ry"; rz: "ce.rz"; sa: "ce.sa"; sb: "ce.sb"; sc: "ce.sc"; sd: "ce.sd"; se: "ce.se"; sf: "ce.sf"; sg: "ce.sg"; sh: "ce.sh"; si: "ce.si"; sj: "ce.sj"; sk: "ce.sk"; sl: "ce.sl"; sm: "ce.sm"; sn: "ce.sn"; so: "ce.so"; sp: "ce.sp"; sq: "ce.sq"; sr: "ce.sr"; ss: "ce.ss"; st: "ce.st"; su: "ce.su"; sv: "ce.sv"; sw: "ce.sw"; sx: "ce.sx"; sy: "ce.sy"; sz: "ce.sz"; ta: "ce.ta"; tb: "ce.tb"; tc: "ce.tc"; td: "ce.td"; te: "ce.te"; tf: "ce.tf"; tg: "ce.tg"; th: "ce.th"; ti: "ce.ti"; tj: "ce.tj"; tk: "ce.tk"; tl: "ce.tl"; tm: "ce.tm"; tn: "ce.tn"; to: "ce.to"; tp: "ce.tp"; tq: "ce.tq"; tr: "ce.tr"; ts: "ce.ts"; tt: "ce.tt"; tu: "ce.tu"; tv: "ce.tv"; tw: "ce.tw"; tx: "ce.tx"; ty: "ce.ty"; tz: "ce.tz"; ua: "ce.ua"; ub: "ce.ub"; uc: "ce.uc"; ud: "ce.ud"; ue: "ce.ue"; uf: "ce.uf"; ug: "ce.ug"; uh: "ce.uh"; ui: "ce.ui"; uj: "ce.uj"; uk: "ce.uk"; ul: "ce.ul"; um: "ce.um"; un: "ce.un"; uo: "ce.uo"; up: "ce.up"; uq: "ce.uq"; ur: "ce.ur"; us: "ce.us"; ut: "ce.ut"; uu: "ce.uu"; uv: "ce.uv"; uw: "ce.uw"; ux: "ce.ux"; uy: "ce.uy"; uz: "ce.uz"; va: "ce.va"; vb: "ce.vb"; vc: "ce.vc"; vd: "ce.vd"; ve: "ce.ve"; vf: "ce.vf"; vg: "ce.vg"; vh: "ce.vh"; vi: "ce.vi"; vj: "ce.vj"; vk: "ce.vk"; vl: "ce.vl"; vm: "ce.vm"; vn: "ce.vn"; vo: "ce.vo"; vp: "ce.vp"; vq: "ce.vq"; vr: "ce.vr"; vs: "ce.vs"; vt: "ce.vt"; vu: "ce.vu"; vv: "ce.vv"; vw: "ce.vw"; vx: "ce.vx"; vy: "ce.vy"; vz: "ce.vz"; wa: "ce.wa"; wb: "ce.wb"; wc: "ce.wc"; wd: "ce.wd"; we: "ce.we"; wf: "ce.wf"; wg: "ce.wg"; wh: "ce.wh"; wi: "ce.wi"; wj: "ce.wj"; wk: "ce.wk"; wl: "ce.wl"; wm: "ce.wm"; wn: "ce.wn"; wo: "ce.wo"; wp: "ce.wp"; wq: "ce.wq"; wr: "ce.wr"; ws: "ce.ws"; wt: "ce.wt"; wu: "ce.wu"; wv: "ce.wv"; ww: "ce.ww"; wx: "ce.wx"; wy: "ce.wy"; wz: "ce.wz"; xa: "ce.xa"; xb: "ce.xb"; xc: "ce.xc"; xd: "ce.xd"; xe: "ce.xe"; xf: "ce.xf"; xg: "ce.xg"; xh: "ce.xh"; xi: "ce.xi"; xj: "ce.xj"; xk: "ce.xk"; xl: "ce.xl"; xm: "ce.xm"; xn: "ce.xn"; xo: "ce.xo"; xp: "ce.xp"; xq: "ce.xq"; xr: "ce.xr"; xs: "ce.xs"; xt: "ce.xt"; xu: "ce.xu"; xv: "ce.xv"; xw: "ce.xw"; xx: "ce.xx"; xy: "ce.xy"; xz: "ce.xz"; ya: "ce.ya"; yb: "ce.yb"; yc: "ce.yc"; yd: "ce.yd"; ye: "ce.ye"; yf: "ce.yf"; yg: "ce.yg"; yh: "ce.yh"; yi: "ce.yi"; yj: "ce.yj"; yk: "ce.yk"; yl: "ce.yl"; ym: "ce.ym"; yn: "ce.yn"; yo: "ce.yo"; yp: "ce.yp"; yq: "ce.yq"; yr: "ce.yr"; ys: "ce.ys"; yt: "ce.yt"; yu: "ce.yu"; yv: "ce.yv"; yw: "ce.yw"; yx: "ce.yx"; yy: "ce.yy"; yz: "ce.yz"; za: "ce.za"; zb: "ce.zb"; zc: "ce.zc"; zd: "ce.zd"; ze: "ce.ze"; zf: "ce.zf"; zg: "ce.zg"; zh: "ce.zh"; zi: "ce.zi"; zj: "ce.zj"; zk: "ce.zk"; zl: "ce.zl"; zm: "ce.zm"; zn: "ce.zn"; zo: "ce.zo"; zp: "ce.zp"; zq: "ce.zq"; zr: "ce.zr"; zs: "ce.zs"; zt: "ce.zt"; zu: "ce.zu"; zv: "ce.zv"; zw: "ce.zw"; zx: "ce.zx"; zy: "ce.zy"; zz: "ce.zz"; }; cf: { aa: "cf.aa"; ab: "cf.ab"; ac: "cf.ac"; ad: "cf.ad"; ae: "cf.ae"; af: "cf.af"; ag: "cf.ag"; ah: "cf.ah"; ai: "cf.ai"; aj: "cf.aj"; ak: "cf.ak"; al: "cf.al"; am: "cf.am"; an: "cf.an"; ao: "cf.ao"; ap: "cf.ap"; aq: "cf.aq"; ar: "cf.ar"; as: "cf.as"; at: "cf.at"; au: "cf.au"; av: "cf.av"; aw: "cf.aw"; ax: "cf.ax"; ay: "cf.ay"; az: "cf.az"; ba: "cf.ba"; bb: "cf.bb"; bc: "cf.bc"; bd: "cf.bd"; be: "cf.be"; bf: "cf.bf"; bg: "cf.bg"; bh: "cf.bh"; bi: "cf.bi"; bj: "cf.bj"; bk: "cf.bk"; bl: "cf.bl"; bm: "cf.bm"; bn: "cf.bn"; bo: "cf.bo"; bp: "cf.bp"; bq: "cf.bq"; br: "cf.br"; bs: "cf.bs"; bt: "cf.bt"; bu: "cf.bu"; bv: "cf.bv"; bw: "cf.bw"; bx: "cf.bx"; by: "cf.by"; bz: "cf.bz"; ca: "cf.ca"; cb: "cf.cb"; cc: "cf.cc"; cd: "cf.cd"; ce: "cf.ce"; cf: "cf.cf"; cg: "cf.cg"; ch: "cf.ch"; ci: "cf.ci"; cj: "cf.cj"; ck: "cf.ck"; cl: "cf.cl"; cm: "cf.cm"; cn: "cf.cn"; co: "cf.co"; cp: "cf.cp"; cq: "cf.cq"; cr: "cf.cr"; cs: "cf.cs"; ct: "cf.ct"; cu: "cf.cu"; cv: "cf.cv"; cw: "cf.cw"; cx: "cf.cx"; cy: "cf.cy"; cz: "cf.cz"; da: "cf.da"; db: "cf.db"; dc: "cf.dc"; dd: "cf.dd"; de: "cf.de"; df: "cf.df"; dg: "cf.dg"; dh: "cf.dh"; di: "cf.di"; dj: "cf.dj"; dk: "cf.dk"; dl: "cf.dl"; dm: "cf.dm"; dn: "cf.dn"; do: "cf.do"; dp: "cf.dp"; dq: "cf.dq"; dr: "cf.dr"; ds: "cf.ds"; dt: "cf.dt"; du: "cf.du"; dv: "cf.dv"; dw: "cf.dw"; dx: "cf.dx"; dy: "cf.dy"; dz: "cf.dz"; ea: "cf.ea"; eb: "cf.eb"; ec: "cf.ec"; ed: "cf.ed"; ee: "cf.ee"; ef: "cf.ef"; eg: "cf.eg"; eh: "cf.eh"; ei: "cf.ei"; ej: "cf.ej"; ek: "cf.ek"; el: "cf.el"; em: "cf.em"; en: "cf.en"; eo: "cf.eo"; ep: "cf.ep"; eq: "cf.eq"; er: "cf.er"; es: "cf.es"; et: "cf.et"; eu: "cf.eu"; ev: "cf.ev"; ew: "cf.ew"; ex: "cf.ex"; ey: "cf.ey"; ez: "cf.ez"; fa: "cf.fa"; fb: "cf.fb"; fc: "cf.fc"; fd: "cf.fd"; fe: "cf.fe"; ff: "cf.ff"; fg: "cf.fg"; fh: "cf.fh"; fi: "cf.fi"; fj: "cf.fj"; fk: "cf.fk"; fl: "cf.fl"; fm: "cf.fm"; fn: "cf.fn"; fo: "cf.fo"; fp: "cf.fp"; fq: "cf.fq"; fr: "cf.fr"; fs: "cf.fs"; ft: "cf.ft"; fu: "cf.fu"; fv: "cf.fv"; fw: "cf.fw"; fx: "cf.fx"; fy: "cf.fy"; fz: "cf.fz"; ga: "cf.ga"; gb: "cf.gb"; gc: "cf.gc"; gd: "cf.gd"; ge: "cf.ge"; gf: "cf.gf"; gg: "cf.gg"; gh: "cf.gh"; gi: "cf.gi"; gj: "cf.gj"; gk: "cf.gk"; gl: "cf.gl"; gm: "cf.gm"; gn: "cf.gn"; go: "cf.go"; gp: "cf.gp"; gq: "cf.gq"; gr: "cf.gr"; gs: "cf.gs"; gt: "cf.gt"; gu: "cf.gu"; gv: "cf.gv"; gw: "cf.gw"; gx: "cf.gx"; gy: "cf.gy"; gz: "cf.gz"; ha: "cf.ha"; hb: "cf.hb"; hc: "cf.hc"; hd: "cf.hd"; he: "cf.he"; hf: "cf.hf"; hg: "cf.hg"; hh: "cf.hh"; hi: "cf.hi"; hj: "cf.hj"; hk: "cf.hk"; hl: "cf.hl"; hm: "cf.hm"; hn: "cf.hn"; ho: "cf.ho"; hp: "cf.hp"; hq: "cf.hq"; hr: "cf.hr"; hs: "cf.hs"; ht: "cf.ht"; hu: "cf.hu"; hv: "cf.hv"; hw: "cf.hw"; hx: "cf.hx"; hy: "cf.hy"; hz: "cf.hz"; ia: "cf.ia"; ib: "cf.ib"; ic: "cf.ic"; id: "cf.id"; ie: "cf.ie"; if: "cf.if"; ig: "cf.ig"; ih: "cf.ih"; ii: "cf.ii"; ij: "cf.ij"; ik: "cf.ik"; il: "cf.il"; im: "cf.im"; in: "cf.in"; io: "cf.io"; ip: "cf.ip"; iq: "cf.iq"; ir: "cf.ir"; is: "cf.is"; it: "cf.it"; iu: "cf.iu"; iv: "cf.iv"; iw: "cf.iw"; ix: "cf.ix"; iy: "cf.iy"; iz: "cf.iz"; ja: "cf.ja"; jb: "cf.jb"; jc: "cf.jc"; jd: "cf.jd"; je: "cf.je"; jf: "cf.jf"; jg: "cf.jg"; jh: "cf.jh"; ji: "cf.ji"; jj: "cf.jj"; jk: "cf.jk"; jl: "cf.jl"; jm: "cf.jm"; jn: "cf.jn"; jo: "cf.jo"; jp: "cf.jp"; jq: "cf.jq"; jr: "cf.jr"; js: "cf.js"; jt: "cf.jt"; ju: "cf.ju"; jv: "cf.jv"; jw: "cf.jw"; jx: "cf.jx"; jy: "cf.jy"; jz: "cf.jz"; ka: "cf.ka"; kb: "cf.kb"; kc: "cf.kc"; kd: "cf.kd"; ke: "cf.ke"; kf: "cf.kf"; kg: "cf.kg"; kh: "cf.kh"; ki: "cf.ki"; kj: "cf.kj"; kk: "cf.kk"; kl: "cf.kl"; km: "cf.km"; kn: "cf.kn"; ko: "cf.ko"; kp: "cf.kp"; kq: "cf.kq"; kr: "cf.kr"; ks: "cf.ks"; kt: "cf.kt"; ku: "cf.ku"; kv: "cf.kv"; kw: "cf.kw"; kx: "cf.kx"; ky: "cf.ky"; kz: "cf.kz"; la: "cf.la"; lb: "cf.lb"; lc: "cf.lc"; ld: "cf.ld"; le: "cf.le"; lf: "cf.lf"; lg: "cf.lg"; lh: "cf.lh"; li: "cf.li"; lj: "cf.lj"; lk: "cf.lk"; ll: "cf.ll"; lm: "cf.lm"; ln: "cf.ln"; lo: "cf.lo"; lp: "cf.lp"; lq: "cf.lq"; lr: "cf.lr"; ls: "cf.ls"; lt: "cf.lt"; lu: "cf.lu"; lv: "cf.lv"; lw: "cf.lw"; lx: "cf.lx"; ly: "cf.ly"; lz: "cf.lz"; ma: "cf.ma"; mb: "cf.mb"; mc: "cf.mc"; md: "cf.md"; me: "cf.me"; mf: "cf.mf"; mg: "cf.mg"; mh: "cf.mh"; mi: "cf.mi"; mj: "cf.mj"; mk: "cf.mk"; ml: "cf.ml"; mm: "cf.mm"; mn: "cf.mn"; mo: "cf.mo"; mp: "cf.mp"; mq: "cf.mq"; mr: "cf.mr"; ms: "cf.ms"; mt: "cf.mt"; mu: "cf.mu"; mv: "cf.mv"; mw: "cf.mw"; mx: "cf.mx"; my: "cf.my"; mz: "cf.mz"; na: "cf.na"; nb: "cf.nb"; nc: "cf.nc"; nd: "cf.nd"; ne: "cf.ne"; nf: "cf.nf"; ng: "cf.ng"; nh: "cf.nh"; ni: "cf.ni"; nj: "cf.nj"; nk: "cf.nk"; nl: "cf.nl"; nm: "cf.nm"; nn: "cf.nn"; no: "cf.no"; np: "cf.np"; nq: "cf.nq"; nr: "cf.nr"; ns: "cf.ns"; nt: "cf.nt"; nu: "cf.nu"; nv: "cf.nv"; nw: "cf.nw"; nx: "cf.nx"; ny: "cf.ny"; nz: "cf.nz"; oa: "cf.oa"; ob: "cf.ob"; oc: "cf.oc"; od: "cf.od"; oe: "cf.oe"; of: "cf.of"; og: "cf.og"; oh: "cf.oh"; oi: "cf.oi"; oj: "cf.oj"; ok: "cf.ok"; ol: "cf.ol"; om: "cf.om"; on: "cf.on"; oo: "cf.oo"; op: "cf.op"; oq: "cf.oq"; or: "cf.or"; os: "cf.os"; ot: "cf.ot"; ou: "cf.ou"; ov: "cf.ov"; ow: "cf.ow"; ox: "cf.ox"; oy: "cf.oy"; oz: "cf.oz"; pa: "cf.pa"; pb: "cf.pb"; pc: "cf.pc"; pd: "cf.pd"; pe: "cf.pe"; pf: "cf.pf"; pg: "cf.pg"; ph: "cf.ph"; pi: "cf.pi"; pj: "cf.pj"; pk: "cf.pk"; pl: "cf.pl"; pm: "cf.pm"; pn: "cf.pn"; po: "cf.po"; pp: "cf.pp"; pq: "cf.pq"; pr: "cf.pr"; ps: "cf.ps"; pt: "cf.pt"; pu: "cf.pu"; pv: "cf.pv"; pw: "cf.pw"; px: "cf.px"; py: "cf.py"; pz: "cf.pz"; qa: "cf.qa"; qb: "cf.qb"; qc: "cf.qc"; qd: "cf.qd"; qe: "cf.qe"; qf: "cf.qf"; qg: "cf.qg"; qh: "cf.qh"; qi: "cf.qi"; qj: "cf.qj"; qk: "cf.qk"; ql: "cf.ql"; qm: "cf.qm"; qn: "cf.qn"; qo: "cf.qo"; qp: "cf.qp"; qq: "cf.qq"; qr: "cf.qr"; qs: "cf.qs"; qt: "cf.qt"; qu: "cf.qu"; qv: "cf.qv"; qw: "cf.qw"; qx: "cf.qx"; qy: "cf.qy"; qz: "cf.qz"; ra: "cf.ra"; rb: "cf.rb"; rc: "cf.rc"; rd: "cf.rd"; re: "cf.re"; rf: "cf.rf"; rg: "cf.rg"; rh: "cf.rh"; ri: "cf.ri"; rj: "cf.rj"; rk: "cf.rk"; rl: "cf.rl"; rm: "cf.rm"; rn: "cf.rn"; ro: "cf.ro"; rp: "cf.rp"; rq: "cf.rq"; rr: "cf.rr"; rs: "cf.rs"; rt: "cf.rt"; ru: "cf.ru"; rv: "cf.rv"; rw: "cf.rw"; rx: "cf.rx"; ry: "cf.ry"; rz: "cf.rz"; sa: "cf.sa"; sb: "cf.sb"; sc: "cf.sc"; sd: "cf.sd"; se: "cf.se"; sf: "cf.sf"; sg: "cf.sg"; sh: "cf.sh"; si: "cf.si"; sj: "cf.sj"; sk: "cf.sk"; sl: "cf.sl"; sm: "cf.sm"; sn: "cf.sn"; so: "cf.so"; sp: "cf.sp"; sq: "cf.sq"; sr: "cf.sr"; ss: "cf.ss"; st: "cf.st"; su: "cf.su"; sv: "cf.sv"; sw: "cf.sw"; sx: "cf.sx"; sy: "cf.sy"; sz: "cf.sz"; ta: "cf.ta"; tb: "cf.tb"; tc: "cf.tc"; td: "cf.td"; te: "cf.te"; tf: "cf.tf"; tg: "cf.tg"; th: "cf.th"; ti: "cf.ti"; tj: "cf.tj"; tk: "cf.tk"; tl: "cf.tl"; tm: "cf.tm"; tn: "cf.tn"; to: "cf.to"; tp: "cf.tp"; tq: "cf.tq"; tr: "cf.tr"; ts: "cf.ts"; tt: "cf.tt"; tu: "cf.tu"; tv: "cf.tv"; tw: "cf.tw"; tx: "cf.tx"; ty: "cf.ty"; tz: "cf.tz"; ua: "cf.ua"; ub: "cf.ub"; uc: "cf.uc"; ud: "cf.ud"; ue: "cf.ue"; uf: "cf.uf"; ug: "cf.ug"; uh: "cf.uh"; ui: "cf.ui"; uj: "cf.uj"; uk: "cf.uk"; ul: "cf.ul"; um: "cf.um"; un: "cf.un"; uo: "cf.uo"; up: "cf.up"; uq: "cf.uq"; ur: "cf.ur"; us: "cf.us"; ut: "cf.ut"; uu: "cf.uu"; uv: "cf.uv"; uw: "cf.uw"; ux: "cf.ux"; uy: "cf.uy"; uz: "cf.uz"; va: "cf.va"; vb: "cf.vb"; vc: "cf.vc"; vd: "cf.vd"; ve: "cf.ve"; vf: "cf.vf"; vg: "cf.vg"; vh: "cf.vh"; vi: "cf.vi"; vj: "cf.vj"; vk: "cf.vk"; vl: "cf.vl"; vm: "cf.vm"; vn: "cf.vn"; vo: "cf.vo"; vp: "cf.vp"; vq: "cf.vq"; vr: "cf.vr"; vs: "cf.vs"; vt: "cf.vt"; vu: "cf.vu"; vv: "cf.vv"; vw: "cf.vw"; vx: "cf.vx"; vy: "cf.vy"; vz: "cf.vz"; wa: "cf.wa"; wb: "cf.wb"; wc: "cf.wc"; wd: "cf.wd"; we: "cf.we"; wf: "cf.wf"; wg: "cf.wg"; wh: "cf.wh"; wi: "cf.wi"; wj: "cf.wj"; wk: "cf.wk"; wl: "cf.wl"; wm: "cf.wm"; wn: "cf.wn"; wo: "cf.wo"; wp: "cf.wp"; wq: "cf.wq"; wr: "cf.wr"; ws: "cf.ws"; wt: "cf.wt"; wu: "cf.wu"; wv: "cf.wv"; ww: "cf.ww"; wx: "cf.wx"; wy: "cf.wy"; wz: "cf.wz"; xa: "cf.xa"; xb: "cf.xb"; xc: "cf.xc"; xd: "cf.xd"; xe: "cf.xe"; xf: "cf.xf"; xg: "cf.xg"; xh: "cf.xh"; xi: "cf.xi"; xj: "cf.xj"; xk: "cf.xk"; xl: "cf.xl"; xm: "cf.xm"; xn: "cf.xn"; xo: "cf.xo"; xp: "cf.xp"; xq: "cf.xq"; xr: "cf.xr"; xs: "cf.xs"; xt: "cf.xt"; xu: "cf.xu"; xv: "cf.xv"; xw: "cf.xw"; xx: "cf.xx"; xy: "cf.xy"; xz: "cf.xz"; ya: "cf.ya"; yb: "cf.yb"; yc: "cf.yc"; yd: "cf.yd"; ye: "cf.ye"; yf: "cf.yf"; yg: "cf.yg"; yh: "cf.yh"; yi: "cf.yi"; yj: "cf.yj"; yk: "cf.yk"; yl: "cf.yl"; ym: "cf.ym"; yn: "cf.yn"; yo: "cf.yo"; yp: "cf.yp"; yq: "cf.yq"; yr: "cf.yr"; ys: "cf.ys"; yt: "cf.yt"; yu: "cf.yu"; yv: "cf.yv"; yw: "cf.yw"; yx: "cf.yx"; yy: "cf.yy"; yz: "cf.yz"; za: "cf.za"; zb: "cf.zb"; zc: "cf.zc"; zd: "cf.zd"; ze: "cf.ze"; zf: "cf.zf"; zg: "cf.zg"; zh: "cf.zh"; zi: "cf.zi"; zj: "cf.zj"; zk: "cf.zk"; zl: "cf.zl"; zm: "cf.zm"; zn: "cf.zn"; zo: "cf.zo"; zp: "cf.zp"; zq: "cf.zq"; zr: "cf.zr"; zs: "cf.zs"; zt: "cf.zt"; zu: "cf.zu"; zv: "cf.zv"; zw: "cf.zw"; zx: "cf.zx"; zy: "cf.zy"; zz: "cf.zz"; }; cg: { aa: "cg.aa"; ab: "cg.ab"; ac: "cg.ac"; ad: "cg.ad"; ae: "cg.ae"; af: "cg.af"; ag: "cg.ag"; ah: "cg.ah"; ai: "cg.ai"; aj: "cg.aj"; ak: "cg.ak"; al: "cg.al"; am: "cg.am"; an: "cg.an"; ao: "cg.ao"; ap: "cg.ap"; aq: "cg.aq"; ar: "cg.ar"; as: "cg.as"; at: "cg.at"; au: "cg.au"; av: "cg.av"; aw: "cg.aw"; ax: "cg.ax"; ay: "cg.ay"; az: "cg.az"; ba: "cg.ba"; bb: "cg.bb"; bc: "cg.bc"; bd: "cg.bd"; be: "cg.be"; bf: "cg.bf"; bg: "cg.bg"; bh: "cg.bh"; bi: "cg.bi"; bj: "cg.bj"; bk: "cg.bk"; bl: "cg.bl"; bm: "cg.bm"; bn: "cg.bn"; bo: "cg.bo"; bp: "cg.bp"; bq: "cg.bq"; br: "cg.br"; bs: "cg.bs"; bt: "cg.bt"; bu: "cg.bu"; bv: "cg.bv"; bw: "cg.bw"; bx: "cg.bx"; by: "cg.by"; bz: "cg.bz"; ca: "cg.ca"; cb: "cg.cb"; cc: "cg.cc"; cd: "cg.cd"; ce: "cg.ce"; cf: "cg.cf"; cg: "cg.cg"; ch: "cg.ch"; ci: "cg.ci"; cj: "cg.cj"; ck: "cg.ck"; cl: "cg.cl"; cm: "cg.cm"; cn: "cg.cn"; co: "cg.co"; cp: "cg.cp"; cq: "cg.cq"; cr: "cg.cr"; cs: "cg.cs"; ct: "cg.ct"; cu: "cg.cu"; cv: "cg.cv"; cw: "cg.cw"; cx: "cg.cx"; cy: "cg.cy"; cz: "cg.cz"; da: "cg.da"; db: "cg.db"; dc: "cg.dc"; dd: "cg.dd"; de: "cg.de"; df: "cg.df"; dg: "cg.dg"; dh: "cg.dh"; di: "cg.di"; dj: "cg.dj"; dk: "cg.dk"; dl: "cg.dl"; dm: "cg.dm"; dn: "cg.dn"; do: "cg.do"; dp: "cg.dp"; dq: "cg.dq"; dr: "cg.dr"; ds: "cg.ds"; dt: "cg.dt"; du: "cg.du"; dv: "cg.dv"; dw: "cg.dw"; dx: "cg.dx"; dy: "cg.dy"; dz: "cg.dz"; ea: "cg.ea"; eb: "cg.eb"; ec: "cg.ec"; ed: "cg.ed"; ee: "cg.ee"; ef: "cg.ef"; eg: "cg.eg"; eh: "cg.eh"; ei: "cg.ei"; ej: "cg.ej"; ek: "cg.ek"; el: "cg.el"; em: "cg.em"; en: "cg.en"; eo: "cg.eo"; ep: "cg.ep"; eq: "cg.eq"; er: "cg.er"; es: "cg.es"; et: "cg.et"; eu: "cg.eu"; ev: "cg.ev"; ew: "cg.ew"; ex: "cg.ex"; ey: "cg.ey"; ez: "cg.ez"; fa: "cg.fa"; fb: "cg.fb"; fc: "cg.fc"; fd: "cg.fd"; fe: "cg.fe"; ff: "cg.ff"; fg: "cg.fg"; fh: "cg.fh"; fi: "cg.fi"; fj: "cg.fj"; fk: "cg.fk"; fl: "cg.fl"; fm: "cg.fm"; fn: "cg.fn"; fo: "cg.fo"; fp: "cg.fp"; fq: "cg.fq"; fr: "cg.fr"; fs: "cg.fs"; ft: "cg.ft"; fu: "cg.fu"; fv: "cg.fv"; fw: "cg.fw"; fx: "cg.fx"; fy: "cg.fy"; fz: "cg.fz"; ga: "cg.ga"; gb: "cg.gb"; gc: "cg.gc"; gd: "cg.gd"; ge: "cg.ge"; gf: "cg.gf"; gg: "cg.gg"; gh: "cg.gh"; gi: "cg.gi"; gj: "cg.gj"; gk: "cg.gk"; gl: "cg.gl"; gm: "cg.gm"; gn: "cg.gn"; go: "cg.go"; gp: "cg.gp"; gq: "cg.gq"; gr: "cg.gr"; gs: "cg.gs"; gt: "cg.gt"; gu: "cg.gu"; gv: "cg.gv"; gw: "cg.gw"; gx: "cg.gx"; gy: "cg.gy"; gz: "cg.gz"; ha: "cg.ha"; hb: "cg.hb"; hc: "cg.hc"; hd: "cg.hd"; he: "cg.he"; hf: "cg.hf"; hg: "cg.hg"; hh: "cg.hh"; hi: "cg.hi"; hj: "cg.hj"; hk: "cg.hk"; hl: "cg.hl"; hm: "cg.hm"; hn: "cg.hn"; ho: "cg.ho"; hp: "cg.hp"; hq: "cg.hq"; hr: "cg.hr"; hs: "cg.hs"; ht: "cg.ht"; hu: "cg.hu"; hv: "cg.hv"; hw: "cg.hw"; hx: "cg.hx"; hy: "cg.hy"; hz: "cg.hz"; ia: "cg.ia"; ib: "cg.ib"; ic: "cg.ic"; id: "cg.id"; ie: "cg.ie"; if: "cg.if"; ig: "cg.ig"; ih: "cg.ih"; ii: "cg.ii"; ij: "cg.ij"; ik: "cg.ik"; il: "cg.il"; im: "cg.im"; in: "cg.in"; io: "cg.io"; ip: "cg.ip"; iq: "cg.iq"; ir: "cg.ir"; is: "cg.is"; it: "cg.it"; iu: "cg.iu"; iv: "cg.iv"; iw: "cg.iw"; ix: "cg.ix"; iy: "cg.iy"; iz: "cg.iz"; ja: "cg.ja"; jb: "cg.jb"; jc: "cg.jc"; jd: "cg.jd"; je: "cg.je"; jf: "cg.jf"; jg: "cg.jg"; jh: "cg.jh"; ji: "cg.ji"; jj: "cg.jj"; jk: "cg.jk"; jl: "cg.jl"; jm: "cg.jm"; jn: "cg.jn"; jo: "cg.jo"; jp: "cg.jp"; jq: "cg.jq"; jr: "cg.jr"; js: "cg.js"; jt: "cg.jt"; ju: "cg.ju"; jv: "cg.jv"; jw: "cg.jw"; jx: "cg.jx"; jy: "cg.jy"; jz: "cg.jz"; ka: "cg.ka"; kb: "cg.kb"; kc: "cg.kc"; kd: "cg.kd"; ke: "cg.ke"; kf: "cg.kf"; kg: "cg.kg"; kh: "cg.kh"; ki: "cg.ki"; kj: "cg.kj"; kk: "cg.kk"; kl: "cg.kl"; km: "cg.km"; kn: "cg.kn"; ko: "cg.ko"; kp: "cg.kp"; kq: "cg.kq"; kr: "cg.kr"; ks: "cg.ks"; kt: "cg.kt"; ku: "cg.ku"; kv: "cg.kv"; kw: "cg.kw"; kx: "cg.kx"; ky: "cg.ky"; kz: "cg.kz"; la: "cg.la"; lb: "cg.lb"; lc: "cg.lc"; ld: "cg.ld"; le: "cg.le"; lf: "cg.lf"; lg: "cg.lg"; lh: "cg.lh"; li: "cg.li"; lj: "cg.lj"; lk: "cg.lk"; ll: "cg.ll"; lm: "cg.lm"; ln: "cg.ln"; lo: "cg.lo"; lp: "cg.lp"; lq: "cg.lq"; lr: "cg.lr"; ls: "cg.ls"; lt: "cg.lt"; lu: "cg.lu"; lv: "cg.lv"; lw: "cg.lw"; lx: "cg.lx"; ly: "cg.ly"; lz: "cg.lz"; ma: "cg.ma"; mb: "cg.mb"; mc: "cg.mc"; md: "cg.md"; me: "cg.me"; mf: "cg.mf"; mg: "cg.mg"; mh: "cg.mh"; mi: "cg.mi"; mj: "cg.mj"; mk: "cg.mk"; ml: "cg.ml"; mm: "cg.mm"; mn: "cg.mn"; mo: "cg.mo"; mp: "cg.mp"; mq: "cg.mq"; mr: "cg.mr"; ms: "cg.ms"; mt: "cg.mt"; mu: "cg.mu"; mv: "cg.mv"; mw: "cg.mw"; mx: "cg.mx"; my: "cg.my"; mz: "cg.mz"; na: "cg.na"; nb: "cg.nb"; nc: "cg.nc"; nd: "cg.nd"; ne: "cg.ne"; nf: "cg.nf"; ng: "cg.ng"; nh: "cg.nh"; ni: "cg.ni"; nj: "cg.nj"; nk: "cg.nk"; nl: "cg.nl"; nm: "cg.nm"; nn: "cg.nn"; no: "cg.no"; np: "cg.np"; nq: "cg.nq"; nr: "cg.nr"; ns: "cg.ns"; nt: "cg.nt"; nu: "cg.nu"; nv: "cg.nv"; nw: "cg.nw"; nx: "cg.nx"; ny: "cg.ny"; nz: "cg.nz"; oa: "cg.oa"; ob: "cg.ob"; oc: "cg.oc"; od: "cg.od"; oe: "cg.oe"; of: "cg.of"; og: "cg.og"; oh: "cg.oh"; oi: "cg.oi"; oj: "cg.oj"; ok: "cg.ok"; ol: "cg.ol"; om: "cg.om"; on: "cg.on"; oo: "cg.oo"; op: "cg.op"; oq: "cg.oq"; or: "cg.or"; os: "cg.os"; ot: "cg.ot"; ou: "cg.ou"; ov: "cg.ov"; ow: "cg.ow"; ox: "cg.ox"; oy: "cg.oy"; oz: "cg.oz"; pa: "cg.pa"; pb: "cg.pb"; pc: "cg.pc"; pd: "cg.pd"; pe: "cg.pe"; pf: "cg.pf"; pg: "cg.pg"; ph: "cg.ph"; pi: "cg.pi"; pj: "cg.pj"; pk: "cg.pk"; pl: "cg.pl"; pm: "cg.pm"; pn: "cg.pn"; po: "cg.po"; pp: "cg.pp"; pq: "cg.pq"; pr: "cg.pr"; ps: "cg.ps"; pt: "cg.pt"; pu: "cg.pu"; pv: "cg.pv"; pw: "cg.pw"; px: "cg.px"; py: "cg.py"; pz: "cg.pz"; qa: "cg.qa"; qb: "cg.qb"; qc: "cg.qc"; qd: "cg.qd"; qe: "cg.qe"; qf: "cg.qf"; qg: "cg.qg"; qh: "cg.qh"; qi: "cg.qi"; qj: "cg.qj"; qk: "cg.qk"; ql: "cg.ql"; qm: "cg.qm"; qn: "cg.qn"; qo: "cg.qo"; qp: "cg.qp"; qq: "cg.qq"; qr: "cg.qr"; qs: "cg.qs"; qt: "cg.qt"; qu: "cg.qu"; qv: "cg.qv"; qw: "cg.qw"; qx: "cg.qx"; qy: "cg.qy"; qz: "cg.qz"; ra: "cg.ra"; rb: "cg.rb"; rc: "cg.rc"; rd: "cg.rd"; re: "cg.re"; rf: "cg.rf"; rg: "cg.rg"; rh: "cg.rh"; ri: "cg.ri"; rj: "cg.rj"; rk: "cg.rk"; rl: "cg.rl"; rm: "cg.rm"; rn: "cg.rn"; ro: "cg.ro"; rp: "cg.rp"; rq: "cg.rq"; rr: "cg.rr"; rs: "cg.rs"; rt: "cg.rt"; ru: "cg.ru"; rv: "cg.rv"; rw: "cg.rw"; rx: "cg.rx"; ry: "cg.ry"; rz: "cg.rz"; sa: "cg.sa"; sb: "cg.sb"; sc: "cg.sc"; sd: "cg.sd"; se: "cg.se"; sf: "cg.sf"; sg: "cg.sg"; sh: "cg.sh"; si: "cg.si"; sj: "cg.sj"; sk: "cg.sk"; sl: "cg.sl"; sm: "cg.sm"; sn: "cg.sn"; so: "cg.so"; sp: "cg.sp"; sq: "cg.sq"; sr: "cg.sr"; ss: "cg.ss"; st: "cg.st"; su: "cg.su"; sv: "cg.sv"; sw: "cg.sw"; sx: "cg.sx"; sy: "cg.sy"; sz: "cg.sz"; ta: "cg.ta"; tb: "cg.tb"; tc: "cg.tc"; td: "cg.td"; te: "cg.te"; tf: "cg.tf"; tg: "cg.tg"; th: "cg.th"; ti: "cg.ti"; tj: "cg.tj"; tk: "cg.tk"; tl: "cg.tl"; tm: "cg.tm"; tn: "cg.tn"; to: "cg.to"; tp: "cg.tp"; tq: "cg.tq"; tr: "cg.tr"; ts: "cg.ts"; tt: "cg.tt"; tu: "cg.tu"; tv: "cg.tv"; tw: "cg.tw"; tx: "cg.tx"; ty: "cg.ty"; tz: "cg.tz"; ua: "cg.ua"; ub: "cg.ub"; uc: "cg.uc"; ud: "cg.ud"; ue: "cg.ue"; uf: "cg.uf"; ug: "cg.ug"; uh: "cg.uh"; ui: "cg.ui"; uj: "cg.uj"; uk: "cg.uk"; ul: "cg.ul"; um: "cg.um"; un: "cg.un"; uo: "cg.uo"; up: "cg.up"; uq: "cg.uq"; ur: "cg.ur"; us: "cg.us"; ut: "cg.ut"; uu: "cg.uu"; uv: "cg.uv"; uw: "cg.uw"; ux: "cg.ux"; uy: "cg.uy"; uz: "cg.uz"; va: "cg.va"; vb: "cg.vb"; vc: "cg.vc"; vd: "cg.vd"; ve: "cg.ve"; vf: "cg.vf"; vg: "cg.vg"; vh: "cg.vh"; vi: "cg.vi"; vj: "cg.vj"; vk: "cg.vk"; vl: "cg.vl"; vm: "cg.vm"; vn: "cg.vn"; vo: "cg.vo"; vp: "cg.vp"; vq: "cg.vq"; vr: "cg.vr"; vs: "cg.vs"; vt: "cg.vt"; vu: "cg.vu"; vv: "cg.vv"; vw: "cg.vw"; vx: "cg.vx"; vy: "cg.vy"; vz: "cg.vz"; wa: "cg.wa"; wb: "cg.wb"; wc: "cg.wc"; wd: "cg.wd"; we: "cg.we"; wf: "cg.wf"; wg: "cg.wg"; wh: "cg.wh"; wi: "cg.wi"; wj: "cg.wj"; wk: "cg.wk"; wl: "cg.wl"; wm: "cg.wm"; wn: "cg.wn"; wo: "cg.wo"; wp: "cg.wp"; wq: "cg.wq"; wr: "cg.wr"; ws: "cg.ws"; wt: "cg.wt"; wu: "cg.wu"; wv: "cg.wv"; ww: "cg.ww"; wx: "cg.wx"; wy: "cg.wy"; wz: "cg.wz"; xa: "cg.xa"; xb: "cg.xb"; xc: "cg.xc"; xd: "cg.xd"; xe: "cg.xe"; xf: "cg.xf"; xg: "cg.xg"; xh: "cg.xh"; xi: "cg.xi"; xj: "cg.xj"; xk: "cg.xk"; xl: "cg.xl"; xm: "cg.xm"; xn: "cg.xn"; xo: "cg.xo"; xp: "cg.xp"; xq: "cg.xq"; xr: "cg.xr"; xs: "cg.xs"; xt: "cg.xt"; xu: "cg.xu"; xv: "cg.xv"; xw: "cg.xw"; xx: "cg.xx"; xy: "cg.xy"; xz: "cg.xz"; ya: "cg.ya"; yb: "cg.yb"; yc: "cg.yc"; yd: "cg.yd"; ye: "cg.ye"; yf: "cg.yf"; yg: "cg.yg"; yh: "cg.yh"; yi: "cg.yi"; yj: "cg.yj"; yk: "cg.yk"; yl: "cg.yl"; ym: "cg.ym"; yn: "cg.yn"; yo: "cg.yo"; yp: "cg.yp"; yq: "cg.yq"; yr: "cg.yr"; ys: "cg.ys"; yt: "cg.yt"; yu: "cg.yu"; yv: "cg.yv"; yw: "cg.yw"; yx: "cg.yx"; yy: "cg.yy"; yz: "cg.yz"; za: "cg.za"; zb: "cg.zb"; zc: "cg.zc"; zd: "cg.zd"; ze: "cg.ze"; zf: "cg.zf"; zg: "cg.zg"; zh: "cg.zh"; zi: "cg.zi"; zj: "cg.zj"; zk: "cg.zk"; zl: "cg.zl"; zm: "cg.zm"; zn: "cg.zn"; zo: "cg.zo"; zp: "cg.zp"; zq: "cg.zq"; zr: "cg.zr"; zs: "cg.zs"; zt: "cg.zt"; zu: "cg.zu"; zv: "cg.zv"; zw: "cg.zw"; zx: "cg.zx"; zy: "cg.zy"; zz: "cg.zz"; }; ch: { aa: "ch.aa"; ab: "ch.ab"; ac: "ch.ac"; ad: "ch.ad"; ae: "ch.ae"; af: "ch.af"; ag: "ch.ag"; ah: "ch.ah"; ai: "ch.ai"; aj: "ch.aj"; ak: "ch.ak"; al: "ch.al"; am: "ch.am"; an: "ch.an"; ao: "ch.ao"; ap: "ch.ap"; aq: "ch.aq"; ar: "ch.ar"; as: "ch.as"; at: "ch.at"; au: "ch.au"; av: "ch.av"; aw: "ch.aw"; ax: "ch.ax"; ay: "ch.ay"; az: "ch.az"; ba: "ch.ba"; bb: "ch.bb"; bc: "ch.bc"; bd: "ch.bd"; be: "ch.be"; bf: "ch.bf"; bg: "ch.bg"; bh: "ch.bh"; bi: "ch.bi"; bj: "ch.bj"; bk: "ch.bk"; bl: "ch.bl"; bm: "ch.bm"; bn: "ch.bn"; bo: "ch.bo"; bp: "ch.bp"; bq: "ch.bq"; br: "ch.br"; bs: "ch.bs"; bt: "ch.bt"; bu: "ch.bu"; bv: "ch.bv"; bw: "ch.bw"; bx: "ch.bx"; by: "ch.by"; bz: "ch.bz"; ca: "ch.ca"; cb: "ch.cb"; cc: "ch.cc"; cd: "ch.cd"; ce: "ch.ce"; cf: "ch.cf"; cg: "ch.cg"; ch: "ch.ch"; ci: "ch.ci"; cj: "ch.cj"; ck: "ch.ck"; cl: "ch.cl"; cm: "ch.cm"; cn: "ch.cn"; co: "ch.co"; cp: "ch.cp"; cq: "ch.cq"; cr: "ch.cr"; cs: "ch.cs"; ct: "ch.ct"; cu: "ch.cu"; cv: "ch.cv"; cw: "ch.cw"; cx: "ch.cx"; cy: "ch.cy"; cz: "ch.cz"; da: "ch.da"; db: "ch.db"; dc: "ch.dc"; dd: "ch.dd"; de: "ch.de"; df: "ch.df"; dg: "ch.dg"; dh: "ch.dh"; di: "ch.di"; dj: "ch.dj"; dk: "ch.dk"; dl: "ch.dl"; dm: "ch.dm"; dn: "ch.dn"; do: "ch.do"; dp: "ch.dp"; dq: "ch.dq"; dr: "ch.dr"; ds: "ch.ds"; dt: "ch.dt"; du: "ch.du"; dv: "ch.dv"; dw: "ch.dw"; dx: "ch.dx"; dy: "ch.dy"; dz: "ch.dz"; ea: "ch.ea"; eb: "ch.eb"; ec: "ch.ec"; ed: "ch.ed"; ee: "ch.ee"; ef: "ch.ef"; eg: "ch.eg"; eh: "ch.eh"; ei: "ch.ei"; ej: "ch.ej"; ek: "ch.ek"; el: "ch.el"; em: "ch.em"; en: "ch.en"; eo: "ch.eo"; ep: "ch.ep"; eq: "ch.eq"; er: "ch.er"; es: "ch.es"; et: "ch.et"; eu: "ch.eu"; ev: "ch.ev"; ew: "ch.ew"; ex: "ch.ex"; ey: "ch.ey"; ez: "ch.ez"; fa: "ch.fa"; fb: "ch.fb"; fc: "ch.fc"; fd: "ch.fd"; fe: "ch.fe"; ff: "ch.ff"; fg: "ch.fg"; fh: "ch.fh"; fi: "ch.fi"; fj: "ch.fj"; fk: "ch.fk"; fl: "ch.fl"; fm: "ch.fm"; fn: "ch.fn"; fo: "ch.fo"; fp: "ch.fp"; fq: "ch.fq"; fr: "ch.fr"; fs: "ch.fs"; ft: "ch.ft"; fu: "ch.fu"; fv: "ch.fv"; fw: "ch.fw"; fx: "ch.fx"; fy: "ch.fy"; fz: "ch.fz"; ga: "ch.ga"; gb: "ch.gb"; gc: "ch.gc"; gd: "ch.gd"; ge: "ch.ge"; gf: "ch.gf"; gg: "ch.gg"; gh: "ch.gh"; gi: "ch.gi"; gj: "ch.gj"; gk: "ch.gk"; gl: "ch.gl"; gm: "ch.gm"; gn: "ch.gn"; go: "ch.go"; gp: "ch.gp"; gq: "ch.gq"; gr: "ch.gr"; gs: "ch.gs"; gt: "ch.gt"; gu: "ch.gu"; gv: "ch.gv"; gw: "ch.gw"; gx: "ch.gx"; gy: "ch.gy"; gz: "ch.gz"; ha: "ch.ha"; hb: "ch.hb"; hc: "ch.hc"; hd: "ch.hd"; he: "ch.he"; hf: "ch.hf"; hg: "ch.hg"; hh: "ch.hh"; hi: "ch.hi"; hj: "ch.hj"; hk: "ch.hk"; hl: "ch.hl"; hm: "ch.hm"; hn: "ch.hn"; ho: "ch.ho"; hp: "ch.hp"; hq: "ch.hq"; hr: "ch.hr"; hs: "ch.hs"; ht: "ch.ht"; hu: "ch.hu"; hv: "ch.hv"; hw: "ch.hw"; hx: "ch.hx"; hy: "ch.hy"; hz: "ch.hz"; ia: "ch.ia"; ib: "ch.ib"; ic: "ch.ic"; id: "ch.id"; ie: "ch.ie"; if: "ch.if"; ig: "ch.ig"; ih: "ch.ih"; ii: "ch.ii"; ij: "ch.ij"; ik: "ch.ik"; il: "ch.il"; im: "ch.im"; in: "ch.in"; io: "ch.io"; ip: "ch.ip"; iq: "ch.iq"; ir: "ch.ir"; is: "ch.is"; it: "ch.it"; iu: "ch.iu"; iv: "ch.iv"; iw: "ch.iw"; ix: "ch.ix"; iy: "ch.iy"; iz: "ch.iz"; ja: "ch.ja"; jb: "ch.jb"; jc: "ch.jc"; jd: "ch.jd"; je: "ch.je"; jf: "ch.jf"; jg: "ch.jg"; jh: "ch.jh"; ji: "ch.ji"; jj: "ch.jj"; jk: "ch.jk"; jl: "ch.jl"; jm: "ch.jm"; jn: "ch.jn"; jo: "ch.jo"; jp: "ch.jp"; jq: "ch.jq"; jr: "ch.jr"; js: "ch.js"; jt: "ch.jt"; ju: "ch.ju"; jv: "ch.jv"; jw: "ch.jw"; jx: "ch.jx"; jy: "ch.jy"; jz: "ch.jz"; ka: "ch.ka"; kb: "ch.kb"; kc: "ch.kc"; kd: "ch.kd"; ke: "ch.ke"; kf: "ch.kf"; kg: "ch.kg"; kh: "ch.kh"; ki: "ch.ki"; kj: "ch.kj"; kk: "ch.kk"; kl: "ch.kl"; km: "ch.km"; kn: "ch.kn"; ko: "ch.ko"; kp: "ch.kp"; kq: "ch.kq"; kr: "ch.kr"; ks: "ch.ks"; kt: "ch.kt"; ku: "ch.ku"; kv: "ch.kv"; kw: "ch.kw"; kx: "ch.kx"; ky: "ch.ky"; kz: "ch.kz"; la: "ch.la"; lb: "ch.lb"; lc: "ch.lc"; ld: "ch.ld"; le: "ch.le"; lf: "ch.lf"; lg: "ch.lg"; lh: "ch.lh"; li: "ch.li"; lj: "ch.lj"; lk: "ch.lk"; ll: "ch.ll"; lm: "ch.lm"; ln: "ch.ln"; lo: "ch.lo"; lp: "ch.lp"; lq: "ch.lq"; lr: "ch.lr"; ls: "ch.ls"; lt: "ch.lt"; lu: "ch.lu"; lv: "ch.lv"; lw: "ch.lw"; lx: "ch.lx"; ly: "ch.ly"; lz: "ch.lz"; ma: "ch.ma"; mb: "ch.mb"; mc: "ch.mc"; md: "ch.md"; me: "ch.me"; mf: "ch.mf"; mg: "ch.mg"; mh: "ch.mh"; mi: "ch.mi"; mj: "ch.mj"; mk: "ch.mk"; ml: "ch.ml"; mm: "ch.mm"; mn: "ch.mn"; mo: "ch.mo"; mp: "ch.mp"; mq: "ch.mq"; mr: "ch.mr"; ms: "ch.ms"; mt: "ch.mt"; mu: "ch.mu"; mv: "ch.mv"; mw: "ch.mw"; mx: "ch.mx"; my: "ch.my"; mz: "ch.mz"; na: "ch.na"; nb: "ch.nb"; nc: "ch.nc"; nd: "ch.nd"; ne: "ch.ne"; nf: "ch.nf"; ng: "ch.ng"; nh: "ch.nh"; ni: "ch.ni"; nj: "ch.nj"; nk: "ch.nk"; nl: "ch.nl"; nm: "ch.nm"; nn: "ch.nn"; no: "ch.no"; np: "ch.np"; nq: "ch.nq"; nr: "ch.nr"; ns: "ch.ns"; nt: "ch.nt"; nu: "ch.nu"; nv: "ch.nv"; nw: "ch.nw"; nx: "ch.nx"; ny: "ch.ny"; nz: "ch.nz"; oa: "ch.oa"; ob: "ch.ob"; oc: "ch.oc"; od: "ch.od"; oe: "ch.oe"; of: "ch.of"; og: "ch.og"; oh: "ch.oh"; oi: "ch.oi"; oj: "ch.oj"; ok: "ch.ok"; ol: "ch.ol"; om: "ch.om"; on: "ch.on"; oo: "ch.oo"; op: "ch.op"; oq: "ch.oq"; or: "ch.or"; os: "ch.os"; ot: "ch.ot"; ou: "ch.ou"; ov: "ch.ov"; ow: "ch.ow"; ox: "ch.ox"; oy: "ch.oy"; oz: "ch.oz"; pa: "ch.pa"; pb: "ch.pb"; pc: "ch.pc"; pd: "ch.pd"; pe: "ch.pe"; pf: "ch.pf"; pg: "ch.pg"; ph: "ch.ph"; pi: "ch.pi"; pj: "ch.pj"; pk: "ch.pk"; pl: "ch.pl"; pm: "ch.pm"; pn: "ch.pn"; po: "ch.po"; pp: "ch.pp"; pq: "ch.pq"; pr: "ch.pr"; ps: "ch.ps"; pt: "ch.pt"; pu: "ch.pu"; pv: "ch.pv"; pw: "ch.pw"; px: "ch.px"; py: "ch.py"; pz: "ch.pz"; qa: "ch.qa"; qb: "ch.qb"; qc: "ch.qc"; qd: "ch.qd"; qe: "ch.qe"; qf: "ch.qf"; qg: "ch.qg"; qh: "ch.qh"; qi: "ch.qi"; qj: "ch.qj"; qk: "ch.qk"; ql: "ch.ql"; qm: "ch.qm"; qn: "ch.qn"; qo: "ch.qo"; qp: "ch.qp"; qq: "ch.qq"; qr: "ch.qr"; qs: "ch.qs"; qt: "ch.qt"; qu: "ch.qu"; qv: "ch.qv"; qw: "ch.qw"; qx: "ch.qx"; qy: "ch.qy"; qz: "ch.qz"; ra: "ch.ra"; rb: "ch.rb"; rc: "ch.rc"; rd: "ch.rd"; re: "ch.re"; rf: "ch.rf"; rg: "ch.rg"; rh: "ch.rh"; ri: "ch.ri"; rj: "ch.rj"; rk: "ch.rk"; rl: "ch.rl"; rm: "ch.rm"; rn: "ch.rn"; ro: "ch.ro"; rp: "ch.rp"; rq: "ch.rq"; rr: "ch.rr"; rs: "ch.rs"; rt: "ch.rt"; ru: "ch.ru"; rv: "ch.rv"; rw: "ch.rw"; rx: "ch.rx"; ry: "ch.ry"; rz: "ch.rz"; sa: "ch.sa"; sb: "ch.sb"; sc: "ch.sc"; sd: "ch.sd"; se: "ch.se"; sf: "ch.sf"; sg: "ch.sg"; sh: "ch.sh"; si: "ch.si"; sj: "ch.sj"; sk: "ch.sk"; sl: "ch.sl"; sm: "ch.sm"; sn: "ch.sn"; so: "ch.so"; sp: "ch.sp"; sq: "ch.sq"; sr: "ch.sr"; ss: "ch.ss"; st: "ch.st"; su: "ch.su"; sv: "ch.sv"; sw: "ch.sw"; sx: "ch.sx"; sy: "ch.sy"; sz: "ch.sz"; ta: "ch.ta"; tb: "ch.tb"; tc: "ch.tc"; td: "ch.td"; te: "ch.te"; tf: "ch.tf"; tg: "ch.tg"; th: "ch.th"; ti: "ch.ti"; tj: "ch.tj"; tk: "ch.tk"; tl: "ch.tl"; tm: "ch.tm"; tn: "ch.tn"; to: "ch.to"; tp: "ch.tp"; tq: "ch.tq"; tr: "ch.tr"; ts: "ch.ts"; tt: "ch.tt"; tu: "ch.tu"; tv: "ch.tv"; tw: "ch.tw"; tx: "ch.tx"; ty: "ch.ty"; tz: "ch.tz"; ua: "ch.ua"; ub: "ch.ub"; uc: "ch.uc"; ud: "ch.ud"; ue: "ch.ue"; uf: "ch.uf"; ug: "ch.ug"; uh: "ch.uh"; ui: "ch.ui"; uj: "ch.uj"; uk: "ch.uk"; ul: "ch.ul"; um: "ch.um"; un: "ch.un"; uo: "ch.uo"; up: "ch.up"; uq: "ch.uq"; ur: "ch.ur"; us: "ch.us"; ut: "ch.ut"; uu: "ch.uu"; uv: "ch.uv"; uw: "ch.uw"; ux: "ch.ux"; uy: "ch.uy"; uz: "ch.uz"; va: "ch.va"; vb: "ch.vb"; vc: "ch.vc"; vd: "ch.vd"; ve: "ch.ve"; vf: "ch.vf"; vg: "ch.vg"; vh: "ch.vh"; vi: "ch.vi"; vj: "ch.vj"; vk: "ch.vk"; vl: "ch.vl"; vm: "ch.vm"; vn: "ch.vn"; vo: "ch.vo"; vp: "ch.vp"; vq: "ch.vq"; vr: "ch.vr"; vs: "ch.vs"; vt: "ch.vt"; vu: "ch.vu"; vv: "ch.vv"; vw: "ch.vw"; vx: "ch.vx"; vy: "ch.vy"; vz: "ch.vz"; wa: "ch.wa"; wb: "ch.wb"; wc: "ch.wc"; wd: "ch.wd"; we: "ch.we"; wf: "ch.wf"; wg: "ch.wg"; wh: "ch.wh"; wi: "ch.wi"; wj: "ch.wj"; wk: "ch.wk"; wl: "ch.wl"; wm: "ch.wm"; wn: "ch.wn"; wo: "ch.wo"; wp: "ch.wp"; wq: "ch.wq"; wr: "ch.wr"; ws: "ch.ws"; wt: "ch.wt"; wu: "ch.wu"; wv: "ch.wv"; ww: "ch.ww"; wx: "ch.wx"; wy: "ch.wy"; wz: "ch.wz"; xa: "ch.xa"; xb: "ch.xb"; xc: "ch.xc"; xd: "ch.xd"; xe: "ch.xe"; xf: "ch.xf"; xg: "ch.xg"; xh: "ch.xh"; xi: "ch.xi"; xj: "ch.xj"; xk: "ch.xk"; xl: "ch.xl"; xm: "ch.xm"; xn: "ch.xn"; xo: "ch.xo"; xp: "ch.xp"; xq: "ch.xq"; xr: "ch.xr"; xs: "ch.xs"; xt: "ch.xt"; xu: "ch.xu"; xv: "ch.xv"; xw: "ch.xw"; xx: "ch.xx"; xy: "ch.xy"; xz: "ch.xz"; ya: "ch.ya"; yb: "ch.yb"; yc: "ch.yc"; yd: "ch.yd"; ye: "ch.ye"; yf: "ch.yf"; yg: "ch.yg"; yh: "ch.yh"; yi: "ch.yi"; yj: "ch.yj"; yk: "ch.yk"; yl: "ch.yl"; ym: "ch.ym"; yn: "ch.yn"; yo: "ch.yo"; yp: "ch.yp"; yq: "ch.yq"; yr: "ch.yr"; ys: "ch.ys"; yt: "ch.yt"; yu: "ch.yu"; yv: "ch.yv"; yw: "ch.yw"; yx: "ch.yx"; yy: "ch.yy"; yz: "ch.yz"; za: "ch.za"; zb: "ch.zb"; zc: "ch.zc"; zd: "ch.zd"; ze: "ch.ze"; zf: "ch.zf"; zg: "ch.zg"; zh: "ch.zh"; zi: "ch.zi"; zj: "ch.zj"; zk: "ch.zk"; zl: "ch.zl"; zm: "ch.zm"; zn: "ch.zn"; zo: "ch.zo"; zp: "ch.zp"; zq: "ch.zq"; zr: "ch.zr"; zs: "ch.zs"; zt: "ch.zt"; zu: "ch.zu"; zv: "ch.zv"; zw: "ch.zw"; zx: "ch.zx"; zy: "ch.zy"; zz: "ch.zz"; }; ci: { aa: "ci.aa"; ab: "ci.ab"; ac: "ci.ac"; ad: "ci.ad"; ae: "ci.ae"; af: "ci.af"; ag: "ci.ag"; ah: "ci.ah"; ai: "ci.ai"; aj: "ci.aj"; ak: "ci.ak"; al: "ci.al"; am: "ci.am"; an: "ci.an"; ao: "ci.ao"; ap: "ci.ap"; aq: "ci.aq"; ar: "ci.ar"; as: "ci.as"; at: "ci.at"; au: "ci.au"; av: "ci.av"; aw: "ci.aw"; ax: "ci.ax"; ay: "ci.ay"; az: "ci.az"; ba: "ci.ba"; bb: "ci.bb"; bc: "ci.bc"; bd: "ci.bd"; be: "ci.be"; bf: "ci.bf"; bg: "ci.bg"; bh: "ci.bh"; bi: "ci.bi"; bj: "ci.bj"; bk: "ci.bk"; bl: "ci.bl"; bm: "ci.bm"; bn: "ci.bn"; bo: "ci.bo"; bp: "ci.bp"; bq: "ci.bq"; br: "ci.br"; bs: "ci.bs"; bt: "ci.bt"; bu: "ci.bu"; bv: "ci.bv"; bw: "ci.bw"; bx: "ci.bx"; by: "ci.by"; bz: "ci.bz"; ca: "ci.ca"; cb: "ci.cb"; cc: "ci.cc"; cd: "ci.cd"; ce: "ci.ce"; cf: "ci.cf"; cg: "ci.cg"; ch: "ci.ch"; ci: "ci.ci"; cj: "ci.cj"; ck: "ci.ck"; cl: "ci.cl"; cm: "ci.cm"; cn: "ci.cn"; co: "ci.co"; cp: "ci.cp"; cq: "ci.cq"; cr: "ci.cr"; cs: "ci.cs"; ct: "ci.ct"; cu: "ci.cu"; cv: "ci.cv"; cw: "ci.cw"; cx: "ci.cx"; cy: "ci.cy"; cz: "ci.cz"; da: "ci.da"; db: "ci.db"; dc: "ci.dc"; dd: "ci.dd"; de: "ci.de"; df: "ci.df"; dg: "ci.dg"; dh: "ci.dh"; di: "ci.di"; dj: "ci.dj"; dk: "ci.dk"; dl: "ci.dl"; dm: "ci.dm"; dn: "ci.dn"; do: "ci.do"; dp: "ci.dp"; dq: "ci.dq"; dr: "ci.dr"; ds: "ci.ds"; dt: "ci.dt"; du: "ci.du"; dv: "ci.dv"; dw: "ci.dw"; dx: "ci.dx"; dy: "ci.dy"; dz: "ci.dz"; ea: "ci.ea"; eb: "ci.eb"; ec: "ci.ec"; ed: "ci.ed"; ee: "ci.ee"; ef: "ci.ef"; eg: "ci.eg"; eh: "ci.eh"; ei: "ci.ei"; ej: "ci.ej"; ek: "ci.ek"; el: "ci.el"; em: "ci.em"; en: "ci.en"; eo: "ci.eo"; ep: "ci.ep"; eq: "ci.eq"; er: "ci.er"; es: "ci.es"; et: "ci.et"; eu: "ci.eu"; ev: "ci.ev"; ew: "ci.ew"; ex: "ci.ex"; ey: "ci.ey"; ez: "ci.ez"; fa: "ci.fa"; fb: "ci.fb"; fc: "ci.fc"; fd: "ci.fd"; fe: "ci.fe"; ff: "ci.ff"; fg: "ci.fg"; fh: "ci.fh"; fi: "ci.fi"; fj: "ci.fj"; fk: "ci.fk"; fl: "ci.fl"; fm: "ci.fm"; fn: "ci.fn"; fo: "ci.fo"; fp: "ci.fp"; fq: "ci.fq"; fr: "ci.fr"; fs: "ci.fs"; ft: "ci.ft"; fu: "ci.fu"; fv: "ci.fv"; fw: "ci.fw"; fx: "ci.fx"; fy: "ci.fy"; fz: "ci.fz"; ga: "ci.ga"; gb: "ci.gb"; gc: "ci.gc"; gd: "ci.gd"; ge: "ci.ge"; gf: "ci.gf"; gg: "ci.gg"; gh: "ci.gh"; gi: "ci.gi"; gj: "ci.gj"; gk: "ci.gk"; gl: "ci.gl"; gm: "ci.gm"; gn: "ci.gn"; go: "ci.go"; gp: "ci.gp"; gq: "ci.gq"; gr: "ci.gr"; gs: "ci.gs"; gt: "ci.gt"; gu: "ci.gu"; gv: "ci.gv"; gw: "ci.gw"; gx: "ci.gx"; gy: "ci.gy"; gz: "ci.gz"; ha: "ci.ha"; hb: "ci.hb"; hc: "ci.hc"; hd: "ci.hd"; he: "ci.he"; hf: "ci.hf"; hg: "ci.hg"; hh: "ci.hh"; hi: "ci.hi"; hj: "ci.hj"; hk: "ci.hk"; hl: "ci.hl"; hm: "ci.hm"; hn: "ci.hn"; ho: "ci.ho"; hp: "ci.hp"; hq: "ci.hq"; hr: "ci.hr"; hs: "ci.hs"; ht: "ci.ht"; hu: "ci.hu"; hv: "ci.hv"; hw: "ci.hw"; hx: "ci.hx"; hy: "ci.hy"; hz: "ci.hz"; ia: "ci.ia"; ib: "ci.ib"; ic: "ci.ic"; id: "ci.id"; ie: "ci.ie"; if: "ci.if"; ig: "ci.ig"; ih: "ci.ih"; ii: "ci.ii"; ij: "ci.ij"; ik: "ci.ik"; il: "ci.il"; im: "ci.im"; in: "ci.in"; io: "ci.io"; ip: "ci.ip"; iq: "ci.iq"; ir: "ci.ir"; is: "ci.is"; it: "ci.it"; iu: "ci.iu"; iv: "ci.iv"; iw: "ci.iw"; ix: "ci.ix"; iy: "ci.iy"; iz: "ci.iz"; ja: "ci.ja"; jb: "ci.jb"; jc: "ci.jc"; jd: "ci.jd"; je: "ci.je"; jf: "ci.jf"; jg: "ci.jg"; jh: "ci.jh"; ji: "ci.ji"; jj: "ci.jj"; jk: "ci.jk"; jl: "ci.jl"; jm: "ci.jm"; jn: "ci.jn"; jo: "ci.jo"; jp: "ci.jp"; jq: "ci.jq"; jr: "ci.jr"; js: "ci.js"; jt: "ci.jt"; ju: "ci.ju"; jv: "ci.jv"; jw: "ci.jw"; jx: "ci.jx"; jy: "ci.jy"; jz: "ci.jz"; ka: "ci.ka"; kb: "ci.kb"; kc: "ci.kc"; kd: "ci.kd"; ke: "ci.ke"; kf: "ci.kf"; kg: "ci.kg"; kh: "ci.kh"; ki: "ci.ki"; kj: "ci.kj"; kk: "ci.kk"; kl: "ci.kl"; km: "ci.km"; kn: "ci.kn"; ko: "ci.ko"; kp: "ci.kp"; kq: "ci.kq"; kr: "ci.kr"; ks: "ci.ks"; kt: "ci.kt"; ku: "ci.ku"; kv: "ci.kv"; kw: "ci.kw"; kx: "ci.kx"; ky: "ci.ky"; kz: "ci.kz"; la: "ci.la"; lb: "ci.lb"; lc: "ci.lc"; ld: "ci.ld"; le: "ci.le"; lf: "ci.lf"; lg: "ci.lg"; lh: "ci.lh"; li: "ci.li"; lj: "ci.lj"; lk: "ci.lk"; ll: "ci.ll"; lm: "ci.lm"; ln: "ci.ln"; lo: "ci.lo"; lp: "ci.lp"; lq: "ci.lq"; lr: "ci.lr"; ls: "ci.ls"; lt: "ci.lt"; lu: "ci.lu"; lv: "ci.lv"; lw: "ci.lw"; lx: "ci.lx"; ly: "ci.ly"; lz: "ci.lz"; ma: "ci.ma"; mb: "ci.mb"; mc: "ci.mc"; md: "ci.md"; me: "ci.me"; mf: "ci.mf"; mg: "ci.mg"; mh: "ci.mh"; mi: "ci.mi"; mj: "ci.mj"; mk: "ci.mk"; ml: "ci.ml"; mm: "ci.mm"; mn: "ci.mn"; mo: "ci.mo"; mp: "ci.mp"; mq: "ci.mq"; mr: "ci.mr"; ms: "ci.ms"; mt: "ci.mt"; mu: "ci.mu"; mv: "ci.mv"; mw: "ci.mw"; mx: "ci.mx"; my: "ci.my"; mz: "ci.mz"; na: "ci.na"; nb: "ci.nb"; nc: "ci.nc"; nd: "ci.nd"; ne: "ci.ne"; nf: "ci.nf"; ng: "ci.ng"; nh: "ci.nh"; ni: "ci.ni"; nj: "ci.nj"; nk: "ci.nk"; nl: "ci.nl"; nm: "ci.nm"; nn: "ci.nn"; no: "ci.no"; np: "ci.np"; nq: "ci.nq"; nr: "ci.nr"; ns: "ci.ns"; nt: "ci.nt"; nu: "ci.nu"; nv: "ci.nv"; nw: "ci.nw"; nx: "ci.nx"; ny: "ci.ny"; nz: "ci.nz"; oa: "ci.oa"; ob: "ci.ob"; oc: "ci.oc"; od: "ci.od"; oe: "ci.oe"; of: "ci.of"; og: "ci.og"; oh: "ci.oh"; oi: "ci.oi"; oj: "ci.oj"; ok: "ci.ok"; ol: "ci.ol"; om: "ci.om"; on: "ci.on"; oo: "ci.oo"; op: "ci.op"; oq: "ci.oq"; or: "ci.or"; os: "ci.os"; ot: "ci.ot"; ou: "ci.ou"; ov: "ci.ov"; ow: "ci.ow"; ox: "ci.ox"; oy: "ci.oy"; oz: "ci.oz"; pa: "ci.pa"; pb: "ci.pb"; pc: "ci.pc"; pd: "ci.pd"; pe: "ci.pe"; pf: "ci.pf"; pg: "ci.pg"; ph: "ci.ph"; pi: "ci.pi"; pj: "ci.pj"; pk: "ci.pk"; pl: "ci.pl"; pm: "ci.pm"; pn: "ci.pn"; po: "ci.po"; pp: "ci.pp"; pq: "ci.pq"; pr: "ci.pr"; ps: "ci.ps"; pt: "ci.pt"; pu: "ci.pu"; pv: "ci.pv"; pw: "ci.pw"; px: "ci.px"; py: "ci.py"; pz: "ci.pz"; qa: "ci.qa"; qb: "ci.qb"; qc: "ci.qc"; qd: "ci.qd"; qe: "ci.qe"; qf: "ci.qf"; qg: "ci.qg"; qh: "ci.qh"; qi: "ci.qi"; qj: "ci.qj"; qk: "ci.qk"; ql: "ci.ql"; qm: "ci.qm"; qn: "ci.qn"; qo: "ci.qo"; qp: "ci.qp"; qq: "ci.qq"; qr: "ci.qr"; qs: "ci.qs"; qt: "ci.qt"; qu: "ci.qu"; qv: "ci.qv"; qw: "ci.qw"; qx: "ci.qx"; qy: "ci.qy"; qz: "ci.qz"; ra: "ci.ra"; rb: "ci.rb"; rc: "ci.rc"; rd: "ci.rd"; re: "ci.re"; rf: "ci.rf"; rg: "ci.rg"; rh: "ci.rh"; ri: "ci.ri"; rj: "ci.rj"; rk: "ci.rk"; rl: "ci.rl"; rm: "ci.rm"; rn: "ci.rn"; ro: "ci.ro"; rp: "ci.rp"; rq: "ci.rq"; rr: "ci.rr"; rs: "ci.rs"; rt: "ci.rt"; ru: "ci.ru"; rv: "ci.rv"; rw: "ci.rw"; rx: "ci.rx"; ry: "ci.ry"; rz: "ci.rz"; sa: "ci.sa"; sb: "ci.sb"; sc: "ci.sc"; sd: "ci.sd"; se: "ci.se"; sf: "ci.sf"; sg: "ci.sg"; sh: "ci.sh"; si: "ci.si"; sj: "ci.sj"; sk: "ci.sk"; sl: "ci.sl"; sm: "ci.sm"; sn: "ci.sn"; so: "ci.so"; sp: "ci.sp"; sq: "ci.sq"; sr: "ci.sr"; ss: "ci.ss"; st: "ci.st"; su: "ci.su"; sv: "ci.sv"; sw: "ci.sw"; sx: "ci.sx"; sy: "ci.sy"; sz: "ci.sz"; ta: "ci.ta"; tb: "ci.tb"; tc: "ci.tc"; td: "ci.td"; te: "ci.te"; tf: "ci.tf"; tg: "ci.tg"; th: "ci.th"; ti: "ci.ti"; tj: "ci.tj"; tk: "ci.tk"; tl: "ci.tl"; tm: "ci.tm"; tn: "ci.tn"; to: "ci.to"; tp: "ci.tp"; tq: "ci.tq"; tr: "ci.tr"; ts: "ci.ts"; tt: "ci.tt"; tu: "ci.tu"; tv: "ci.tv"; tw: "ci.tw"; tx: "ci.tx"; ty: "ci.ty"; tz: "ci.tz"; ua: "ci.ua"; ub: "ci.ub"; uc: "ci.uc"; ud: "ci.ud"; ue: "ci.ue"; uf: "ci.uf"; ug: "ci.ug"; uh: "ci.uh"; ui: "ci.ui"; uj: "ci.uj"; uk: "ci.uk"; ul: "ci.ul"; um: "ci.um"; un: "ci.un"; uo: "ci.uo"; up: "ci.up"; uq: "ci.uq"; ur: "ci.ur"; us: "ci.us"; ut: "ci.ut"; uu: "ci.uu"; uv: "ci.uv"; uw: "ci.uw"; ux: "ci.ux"; uy: "ci.uy"; uz: "ci.uz"; va: "ci.va"; vb: "ci.vb"; vc: "ci.vc"; vd: "ci.vd"; ve: "ci.ve"; vf: "ci.vf"; vg: "ci.vg"; vh: "ci.vh"; vi: "ci.vi"; vj: "ci.vj"; vk: "ci.vk"; vl: "ci.vl"; vm: "ci.vm"; vn: "ci.vn"; vo: "ci.vo"; vp: "ci.vp"; vq: "ci.vq"; vr: "ci.vr"; vs: "ci.vs"; vt: "ci.vt"; vu: "ci.vu"; vv: "ci.vv"; vw: "ci.vw"; vx: "ci.vx"; vy: "ci.vy"; vz: "ci.vz"; wa: "ci.wa"; wb: "ci.wb"; wc: "ci.wc"; wd: "ci.wd"; we: "ci.we"; wf: "ci.wf"; wg: "ci.wg"; wh: "ci.wh"; wi: "ci.wi"; wj: "ci.wj"; wk: "ci.wk"; wl: "ci.wl"; wm: "ci.wm"; wn: "ci.wn"; wo: "ci.wo"; wp: "ci.wp"; wq: "ci.wq"; wr: "ci.wr"; ws: "ci.ws"; wt: "ci.wt"; wu: "ci.wu"; wv: "ci.wv"; ww: "ci.ww"; wx: "ci.wx"; wy: "ci.wy"; wz: "ci.wz"; xa: "ci.xa"; xb: "ci.xb"; xc: "ci.xc"; xd: "ci.xd"; xe: "ci.xe"; xf: "ci.xf"; xg: "ci.xg"; xh: "ci.xh"; xi: "ci.xi"; xj: "ci.xj"; xk: "ci.xk"; xl: "ci.xl"; xm: "ci.xm"; xn: "ci.xn"; xo: "ci.xo"; xp: "ci.xp"; xq: "ci.xq"; xr: "ci.xr"; xs: "ci.xs"; xt: "ci.xt"; xu: "ci.xu"; xv: "ci.xv"; xw: "ci.xw"; xx: "ci.xx"; xy: "ci.xy"; xz: "ci.xz"; ya: "ci.ya"; yb: "ci.yb"; yc: "ci.yc"; yd: "ci.yd"; ye: "ci.ye"; yf: "ci.yf"; yg: "ci.yg"; yh: "ci.yh"; yi: "ci.yi"; yj: "ci.yj"; yk: "ci.yk"; yl: "ci.yl"; ym: "ci.ym"; yn: "ci.yn"; yo: "ci.yo"; yp: "ci.yp"; yq: "ci.yq"; yr: "ci.yr"; ys: "ci.ys"; yt: "ci.yt"; yu: "ci.yu"; yv: "ci.yv"; yw: "ci.yw"; yx: "ci.yx"; yy: "ci.yy"; yz: "ci.yz"; za: "ci.za"; zb: "ci.zb"; zc: "ci.zc"; zd: "ci.zd"; ze: "ci.ze"; zf: "ci.zf"; zg: "ci.zg"; zh: "ci.zh"; zi: "ci.zi"; zj: "ci.zj"; zk: "ci.zk"; zl: "ci.zl"; zm: "ci.zm"; zn: "ci.zn"; zo: "ci.zo"; zp: "ci.zp"; zq: "ci.zq"; zr: "ci.zr"; zs: "ci.zs"; zt: "ci.zt"; zu: "ci.zu"; zv: "ci.zv"; zw: "ci.zw"; zx: "ci.zx"; zy: "ci.zy"; zz: "ci.zz"; }; cj: { aa: "cj.aa"; ab: "cj.ab"; ac: "cj.ac"; ad: "cj.ad"; ae: "cj.ae"; af: "cj.af"; ag: "cj.ag"; ah: "cj.ah"; ai: "cj.ai"; aj: "cj.aj"; ak: "cj.ak"; al: "cj.al"; am: "cj.am"; an: "cj.an"; ao: "cj.ao"; ap: "cj.ap"; aq: "cj.aq"; ar: "cj.ar"; as: "cj.as"; at: "cj.at"; au: "cj.au"; av: "cj.av"; aw: "cj.aw"; ax: "cj.ax"; ay: "cj.ay"; az: "cj.az"; ba: "cj.ba"; bb: "cj.bb"; bc: "cj.bc"; bd: "cj.bd"; be: "cj.be"; bf: "cj.bf"; bg: "cj.bg"; bh: "cj.bh"; bi: "cj.bi"; bj: "cj.bj"; bk: "cj.bk"; bl: "cj.bl"; bm: "cj.bm"; bn: "cj.bn"; bo: "cj.bo"; bp: "cj.bp"; bq: "cj.bq"; br: "cj.br"; bs: "cj.bs"; bt: "cj.bt"; bu: "cj.bu"; bv: "cj.bv"; bw: "cj.bw"; bx: "cj.bx"; by: "cj.by"; bz: "cj.bz"; ca: "cj.ca"; cb: "cj.cb"; cc: "cj.cc"; cd: "cj.cd"; ce: "cj.ce"; cf: "cj.cf"; cg: "cj.cg"; ch: "cj.ch"; ci: "cj.ci"; cj: "cj.cj"; ck: "cj.ck"; cl: "cj.cl"; cm: "cj.cm"; cn: "cj.cn"; co: "cj.co"; cp: "cj.cp"; cq: "cj.cq"; cr: "cj.cr"; cs: "cj.cs"; ct: "cj.ct"; cu: "cj.cu"; cv: "cj.cv"; cw: "cj.cw"; cx: "cj.cx"; cy: "cj.cy"; cz: "cj.cz"; da: "cj.da"; db: "cj.db"; dc: "cj.dc"; dd: "cj.dd"; de: "cj.de"; df: "cj.df"; dg: "cj.dg"; dh: "cj.dh"; di: "cj.di"; dj: "cj.dj"; dk: "cj.dk"; dl: "cj.dl"; dm: "cj.dm"; dn: "cj.dn"; do: "cj.do"; dp: "cj.dp"; dq: "cj.dq"; dr: "cj.dr"; ds: "cj.ds"; dt: "cj.dt"; du: "cj.du"; dv: "cj.dv"; dw: "cj.dw"; dx: "cj.dx"; dy: "cj.dy"; dz: "cj.dz"; ea: "cj.ea"; eb: "cj.eb"; ec: "cj.ec"; ed: "cj.ed"; ee: "cj.ee"; ef: "cj.ef"; eg: "cj.eg"; eh: "cj.eh"; ei: "cj.ei"; ej: "cj.ej"; ek: "cj.ek"; el: "cj.el"; em: "cj.em"; en: "cj.en"; eo: "cj.eo"; ep: "cj.ep"; eq: "cj.eq"; er: "cj.er"; es: "cj.es"; et: "cj.et"; eu: "cj.eu"; ev: "cj.ev"; ew: "cj.ew"; ex: "cj.ex"; ey: "cj.ey"; ez: "cj.ez"; fa: "cj.fa"; fb: "cj.fb"; fc: "cj.fc"; fd: "cj.fd"; fe: "cj.fe"; ff: "cj.ff"; fg: "cj.fg"; fh: "cj.fh"; fi: "cj.fi"; fj: "cj.fj"; fk: "cj.fk"; fl: "cj.fl"; fm: "cj.fm"; fn: "cj.fn"; fo: "cj.fo"; fp: "cj.fp"; fq: "cj.fq"; fr: "cj.fr"; fs: "cj.fs"; ft: "cj.ft"; fu: "cj.fu"; fv: "cj.fv"; fw: "cj.fw"; fx: "cj.fx"; fy: "cj.fy"; fz: "cj.fz"; ga: "cj.ga"; gb: "cj.gb"; gc: "cj.gc"; gd: "cj.gd"; ge: "cj.ge"; gf: "cj.gf"; gg: "cj.gg"; gh: "cj.gh"; gi: "cj.gi"; gj: "cj.gj"; gk: "cj.gk"; gl: "cj.gl"; gm: "cj.gm"; gn: "cj.gn"; go: "cj.go"; gp: "cj.gp"; gq: "cj.gq"; gr: "cj.gr"; gs: "cj.gs"; gt: "cj.gt"; gu: "cj.gu"; gv: "cj.gv"; gw: "cj.gw"; gx: "cj.gx"; gy: "cj.gy"; gz: "cj.gz"; ha: "cj.ha"; hb: "cj.hb"; hc: "cj.hc"; hd: "cj.hd"; he: "cj.he"; hf: "cj.hf"; hg: "cj.hg"; hh: "cj.hh"; hi: "cj.hi"; hj: "cj.hj"; hk: "cj.hk"; hl: "cj.hl"; hm: "cj.hm"; hn: "cj.hn"; ho: "cj.ho"; hp: "cj.hp"; hq: "cj.hq"; hr: "cj.hr"; hs: "cj.hs"; ht: "cj.ht"; hu: "cj.hu"; hv: "cj.hv"; hw: "cj.hw"; hx: "cj.hx"; hy: "cj.hy"; hz: "cj.hz"; ia: "cj.ia"; ib: "cj.ib"; ic: "cj.ic"; id: "cj.id"; ie: "cj.ie"; if: "cj.if"; ig: "cj.ig"; ih: "cj.ih"; ii: "cj.ii"; ij: "cj.ij"; ik: "cj.ik"; il: "cj.il"; im: "cj.im"; in: "cj.in"; io: "cj.io"; ip: "cj.ip"; iq: "cj.iq"; ir: "cj.ir"; is: "cj.is"; it: "cj.it"; iu: "cj.iu"; iv: "cj.iv"; iw: "cj.iw"; ix: "cj.ix"; iy: "cj.iy"; iz: "cj.iz"; ja: "cj.ja"; jb: "cj.jb"; jc: "cj.jc"; jd: "cj.jd"; je: "cj.je"; jf: "cj.jf"; jg: "cj.jg"; jh: "cj.jh"; ji: "cj.ji"; jj: "cj.jj"; jk: "cj.jk"; jl: "cj.jl"; jm: "cj.jm"; jn: "cj.jn"; jo: "cj.jo"; jp: "cj.jp"; jq: "cj.jq"; jr: "cj.jr"; js: "cj.js"; jt: "cj.jt"; ju: "cj.ju"; jv: "cj.jv"; jw: "cj.jw"; jx: "cj.jx"; jy: "cj.jy"; jz: "cj.jz"; ka: "cj.ka"; kb: "cj.kb"; kc: "cj.kc"; kd: "cj.kd"; ke: "cj.ke"; kf: "cj.kf"; kg: "cj.kg"; kh: "cj.kh"; ki: "cj.ki"; kj: "cj.kj"; kk: "cj.kk"; kl: "cj.kl"; km: "cj.km"; kn: "cj.kn"; ko: "cj.ko"; kp: "cj.kp"; kq: "cj.kq"; kr: "cj.kr"; ks: "cj.ks"; kt: "cj.kt"; ku: "cj.ku"; kv: "cj.kv"; kw: "cj.kw"; kx: "cj.kx"; ky: "cj.ky"; kz: "cj.kz"; la: "cj.la"; lb: "cj.lb"; lc: "cj.lc"; ld: "cj.ld"; le: "cj.le"; lf: "cj.lf"; lg: "cj.lg"; lh: "cj.lh"; li: "cj.li"; lj: "cj.lj"; lk: "cj.lk"; ll: "cj.ll"; lm: "cj.lm"; ln: "cj.ln"; lo: "cj.lo"; lp: "cj.lp"; lq: "cj.lq"; lr: "cj.lr"; ls: "cj.ls"; lt: "cj.lt"; lu: "cj.lu"; lv: "cj.lv"; lw: "cj.lw"; lx: "cj.lx"; ly: "cj.ly"; lz: "cj.lz"; ma: "cj.ma"; mb: "cj.mb"; mc: "cj.mc"; md: "cj.md"; me: "cj.me"; mf: "cj.mf"; mg: "cj.mg"; mh: "cj.mh"; mi: "cj.mi"; mj: "cj.mj"; mk: "cj.mk"; ml: "cj.ml"; mm: "cj.mm"; mn: "cj.mn"; mo: "cj.mo"; mp: "cj.mp"; mq: "cj.mq"; mr: "cj.mr"; ms: "cj.ms"; mt: "cj.mt"; mu: "cj.mu"; mv: "cj.mv"; mw: "cj.mw"; mx: "cj.mx"; my: "cj.my"; mz: "cj.mz"; na: "cj.na"; nb: "cj.nb"; nc: "cj.nc"; nd: "cj.nd"; ne: "cj.ne"; nf: "cj.nf"; ng: "cj.ng"; nh: "cj.nh"; ni: "cj.ni"; nj: "cj.nj"; nk: "cj.nk"; nl: "cj.nl"; nm: "cj.nm"; nn: "cj.nn"; no: "cj.no"; np: "cj.np"; nq: "cj.nq"; nr: "cj.nr"; ns: "cj.ns"; nt: "cj.nt"; nu: "cj.nu"; nv: "cj.nv"; nw: "cj.nw"; nx: "cj.nx"; ny: "cj.ny"; nz: "cj.nz"; oa: "cj.oa"; ob: "cj.ob"; oc: "cj.oc"; od: "cj.od"; oe: "cj.oe"; of: "cj.of"; og: "cj.og"; oh: "cj.oh"; oi: "cj.oi"; oj: "cj.oj"; ok: "cj.ok"; ol: "cj.ol"; om: "cj.om"; on: "cj.on"; oo: "cj.oo"; op: "cj.op"; oq: "cj.oq"; or: "cj.or"; os: "cj.os"; ot: "cj.ot"; ou: "cj.ou"; ov: "cj.ov"; ow: "cj.ow"; ox: "cj.ox"; oy: "cj.oy"; oz: "cj.oz"; pa: "cj.pa"; pb: "cj.pb"; pc: "cj.pc"; pd: "cj.pd"; pe: "cj.pe"; pf: "cj.pf"; pg: "cj.pg"; ph: "cj.ph"; pi: "cj.pi"; pj: "cj.pj"; pk: "cj.pk"; pl: "cj.pl"; pm: "cj.pm"; pn: "cj.pn"; po: "cj.po"; pp: "cj.pp"; pq: "cj.pq"; pr: "cj.pr"; ps: "cj.ps"; pt: "cj.pt"; pu: "cj.pu"; pv: "cj.pv"; pw: "cj.pw"; px: "cj.px"; py: "cj.py"; pz: "cj.pz"; qa: "cj.qa"; qb: "cj.qb"; qc: "cj.qc"; qd: "cj.qd"; qe: "cj.qe"; qf: "cj.qf"; qg: "cj.qg"; qh: "cj.qh"; qi: "cj.qi"; qj: "cj.qj"; qk: "cj.qk"; ql: "cj.ql"; qm: "cj.qm"; qn: "cj.qn"; qo: "cj.qo"; qp: "cj.qp"; qq: "cj.qq"; qr: "cj.qr"; qs: "cj.qs"; qt: "cj.qt"; qu: "cj.qu"; qv: "cj.qv"; qw: "cj.qw"; qx: "cj.qx"; qy: "cj.qy"; qz: "cj.qz"; ra: "cj.ra"; rb: "cj.rb"; rc: "cj.rc"; rd: "cj.rd"; re: "cj.re"; rf: "cj.rf"; rg: "cj.rg"; rh: "cj.rh"; ri: "cj.ri"; rj: "cj.rj"; rk: "cj.rk"; rl: "cj.rl"; rm: "cj.rm"; rn: "cj.rn"; ro: "cj.ro"; rp: "cj.rp"; rq: "cj.rq"; rr: "cj.rr"; rs: "cj.rs"; rt: "cj.rt"; ru: "cj.ru"; rv: "cj.rv"; rw: "cj.rw"; rx: "cj.rx"; ry: "cj.ry"; rz: "cj.rz"; sa: "cj.sa"; sb: "cj.sb"; sc: "cj.sc"; sd: "cj.sd"; se: "cj.se"; sf: "cj.sf"; sg: "cj.sg"; sh: "cj.sh"; si: "cj.si"; sj: "cj.sj"; sk: "cj.sk"; sl: "cj.sl"; sm: "cj.sm"; sn: "cj.sn"; so: "cj.so"; sp: "cj.sp"; sq: "cj.sq"; sr: "cj.sr"; ss: "cj.ss"; st: "cj.st"; su: "cj.su"; sv: "cj.sv"; sw: "cj.sw"; sx: "cj.sx"; sy: "cj.sy"; sz: "cj.sz"; ta: "cj.ta"; tb: "cj.tb"; tc: "cj.tc"; td: "cj.td"; te: "cj.te"; tf: "cj.tf"; tg: "cj.tg"; th: "cj.th"; ti: "cj.ti"; tj: "cj.tj"; tk: "cj.tk"; tl: "cj.tl"; tm: "cj.tm"; tn: "cj.tn"; to: "cj.to"; tp: "cj.tp"; tq: "cj.tq"; tr: "cj.tr"; ts: "cj.ts"; tt: "cj.tt"; tu: "cj.tu"; tv: "cj.tv"; tw: "cj.tw"; tx: "cj.tx"; ty: "cj.ty"; tz: "cj.tz"; ua: "cj.ua"; ub: "cj.ub"; uc: "cj.uc"; ud: "cj.ud"; ue: "cj.ue"; uf: "cj.uf"; ug: "cj.ug"; uh: "cj.uh"; ui: "cj.ui"; uj: "cj.uj"; uk: "cj.uk"; ul: "cj.ul"; um: "cj.um"; un: "cj.un"; uo: "cj.uo"; up: "cj.up"; uq: "cj.uq"; ur: "cj.ur"; us: "cj.us"; ut: "cj.ut"; uu: "cj.uu"; uv: "cj.uv"; uw: "cj.uw"; ux: "cj.ux"; uy: "cj.uy"; uz: "cj.uz"; va: "cj.va"; vb: "cj.vb"; vc: "cj.vc"; vd: "cj.vd"; ve: "cj.ve"; vf: "cj.vf"; vg: "cj.vg"; vh: "cj.vh"; vi: "cj.vi"; vj: "cj.vj"; vk: "cj.vk"; vl: "cj.vl"; vm: "cj.vm"; vn: "cj.vn"; vo: "cj.vo"; vp: "cj.vp"; vq: "cj.vq"; vr: "cj.vr"; vs: "cj.vs"; vt: "cj.vt"; vu: "cj.vu"; vv: "cj.vv"; vw: "cj.vw"; vx: "cj.vx"; vy: "cj.vy"; vz: "cj.vz"; wa: "cj.wa"; wb: "cj.wb"; wc: "cj.wc"; wd: "cj.wd"; we: "cj.we"; wf: "cj.wf"; wg: "cj.wg"; wh: "cj.wh"; wi: "cj.wi"; wj: "cj.wj"; wk: "cj.wk"; wl: "cj.wl"; wm: "cj.wm"; wn: "cj.wn"; wo: "cj.wo"; wp: "cj.wp"; wq: "cj.wq"; wr: "cj.wr"; ws: "cj.ws"; wt: "cj.wt"; wu: "cj.wu"; wv: "cj.wv"; ww: "cj.ww"; wx: "cj.wx"; wy: "cj.wy"; wz: "cj.wz"; xa: "cj.xa"; xb: "cj.xb"; xc: "cj.xc"; xd: "cj.xd"; xe: "cj.xe"; xf: "cj.xf"; xg: "cj.xg"; xh: "cj.xh"; xi: "cj.xi"; xj: "cj.xj"; xk: "cj.xk"; xl: "cj.xl"; xm: "cj.xm"; xn: "cj.xn"; xo: "cj.xo"; xp: "cj.xp"; xq: "cj.xq"; xr: "cj.xr"; xs: "cj.xs"; xt: "cj.xt"; xu: "cj.xu"; xv: "cj.xv"; xw: "cj.xw"; xx: "cj.xx"; xy: "cj.xy"; xz: "cj.xz"; ya: "cj.ya"; yb: "cj.yb"; yc: "cj.yc"; yd: "cj.yd"; ye: "cj.ye"; yf: "cj.yf"; yg: "cj.yg"; yh: "cj.yh"; yi: "cj.yi"; yj: "cj.yj"; yk: "cj.yk"; yl: "cj.yl"; ym: "cj.ym"; yn: "cj.yn"; yo: "cj.yo"; yp: "cj.yp"; yq: "cj.yq"; yr: "cj.yr"; ys: "cj.ys"; yt: "cj.yt"; yu: "cj.yu"; yv: "cj.yv"; yw: "cj.yw"; yx: "cj.yx"; yy: "cj.yy"; yz: "cj.yz"; za: "cj.za"; zb: "cj.zb"; zc: "cj.zc"; zd: "cj.zd"; ze: "cj.ze"; zf: "cj.zf"; zg: "cj.zg"; zh: "cj.zh"; zi: "cj.zi"; zj: "cj.zj"; zk: "cj.zk"; zl: "cj.zl"; zm: "cj.zm"; zn: "cj.zn"; zo: "cj.zo"; zp: "cj.zp"; zq: "cj.zq"; zr: "cj.zr"; zs: "cj.zs"; zt: "cj.zt"; zu: "cj.zu"; zv: "cj.zv"; zw: "cj.zw"; zx: "cj.zx"; zy: "cj.zy"; zz: "cj.zz"; }; ck: { aa: "ck.aa"; ab: "ck.ab"; ac: "ck.ac"; ad: "ck.ad"; ae: "ck.ae"; af: "ck.af"; ag: "ck.ag"; ah: "ck.ah"; ai: "ck.ai"; aj: "ck.aj"; ak: "ck.ak"; al: "ck.al"; am: "ck.am"; an: "ck.an"; ao: "ck.ao"; ap: "ck.ap"; aq: "ck.aq"; ar: "ck.ar"; as: "ck.as"; at: "ck.at"; au: "ck.au"; av: "ck.av"; aw: "ck.aw"; ax: "ck.ax"; ay: "ck.ay"; az: "ck.az"; ba: "ck.ba"; bb: "ck.bb"; bc: "ck.bc"; bd: "ck.bd"; be: "ck.be"; bf: "ck.bf"; bg: "ck.bg"; bh: "ck.bh"; bi: "ck.bi"; bj: "ck.bj"; bk: "ck.bk"; bl: "ck.bl"; bm: "ck.bm"; bn: "ck.bn"; bo: "ck.bo"; bp: "ck.bp"; bq: "ck.bq"; br: "ck.br"; bs: "ck.bs"; bt: "ck.bt"; bu: "ck.bu"; bv: "ck.bv"; bw: "ck.bw"; bx: "ck.bx"; by: "ck.by"; bz: "ck.bz"; ca: "ck.ca"; cb: "ck.cb"; cc: "ck.cc"; cd: "ck.cd"; ce: "ck.ce"; cf: "ck.cf"; cg: "ck.cg"; ch: "ck.ch"; ci: "ck.ci"; cj: "ck.cj"; ck: "ck.ck"; cl: "ck.cl"; cm: "ck.cm"; cn: "ck.cn"; co: "ck.co"; cp: "ck.cp"; cq: "ck.cq"; cr: "ck.cr"; cs: "ck.cs"; ct: "ck.ct"; cu: "ck.cu"; cv: "ck.cv"; cw: "ck.cw"; cx: "ck.cx"; cy: "ck.cy"; cz: "ck.cz"; da: "ck.da"; db: "ck.db"; dc: "ck.dc"; dd: "ck.dd"; de: "ck.de"; df: "ck.df"; dg: "ck.dg"; dh: "ck.dh"; di: "ck.di"; dj: "ck.dj"; dk: "ck.dk"; dl: "ck.dl"; dm: "ck.dm"; dn: "ck.dn"; do: "ck.do"; dp: "ck.dp"; dq: "ck.dq"; dr: "ck.dr"; ds: "ck.ds"; dt: "ck.dt"; du: "ck.du"; dv: "ck.dv"; dw: "ck.dw"; dx: "ck.dx"; dy: "ck.dy"; dz: "ck.dz"; ea: "ck.ea"; eb: "ck.eb"; ec: "ck.ec"; ed: "ck.ed"; ee: "ck.ee"; ef: "ck.ef"; eg: "ck.eg"; eh: "ck.eh"; ei: "ck.ei"; ej: "ck.ej"; ek: "ck.ek"; el: "ck.el"; em: "ck.em"; en: "ck.en"; eo: "ck.eo"; ep: "ck.ep"; eq: "ck.eq"; er: "ck.er"; es: "ck.es"; et: "ck.et"; eu: "ck.eu"; ev: "ck.ev"; ew: "ck.ew"; ex: "ck.ex"; ey: "ck.ey"; ez: "ck.ez"; fa: "ck.fa"; fb: "ck.fb"; fc: "ck.fc"; fd: "ck.fd"; fe: "ck.fe"; ff: "ck.ff"; fg: "ck.fg"; fh: "ck.fh"; fi: "ck.fi"; fj: "ck.fj"; fk: "ck.fk"; fl: "ck.fl"; fm: "ck.fm"; fn: "ck.fn"; fo: "ck.fo"; fp: "ck.fp"; fq: "ck.fq"; fr: "ck.fr"; fs: "ck.fs"; ft: "ck.ft"; fu: "ck.fu"; fv: "ck.fv"; fw: "ck.fw"; fx: "ck.fx"; fy: "ck.fy"; fz: "ck.fz"; ga: "ck.ga"; gb: "ck.gb"; gc: "ck.gc"; gd: "ck.gd"; ge: "ck.ge"; gf: "ck.gf"; gg: "ck.gg"; gh: "ck.gh"; gi: "ck.gi"; gj: "ck.gj"; gk: "ck.gk"; gl: "ck.gl"; gm: "ck.gm"; gn: "ck.gn"; go: "ck.go"; gp: "ck.gp"; gq: "ck.gq"; gr: "ck.gr"; gs: "ck.gs"; gt: "ck.gt"; gu: "ck.gu"; gv: "ck.gv"; gw: "ck.gw"; gx: "ck.gx"; gy: "ck.gy"; gz: "ck.gz"; ha: "ck.ha"; hb: "ck.hb"; hc: "ck.hc"; hd: "ck.hd"; he: "ck.he"; hf: "ck.hf"; hg: "ck.hg"; hh: "ck.hh"; hi: "ck.hi"; hj: "ck.hj"; hk: "ck.hk"; hl: "ck.hl"; hm: "ck.hm"; hn: "ck.hn"; ho: "ck.ho"; hp: "ck.hp"; hq: "ck.hq"; hr: "ck.hr"; hs: "ck.hs"; ht: "ck.ht"; hu: "ck.hu"; hv: "ck.hv"; hw: "ck.hw"; hx: "ck.hx"; hy: "ck.hy"; hz: "ck.hz"; ia: "ck.ia"; ib: "ck.ib"; ic: "ck.ic"; id: "ck.id"; ie: "ck.ie"; if: "ck.if"; ig: "ck.ig"; ih: "ck.ih"; ii: "ck.ii"; ij: "ck.ij"; ik: "ck.ik"; il: "ck.il"; im: "ck.im"; in: "ck.in"; io: "ck.io"; ip: "ck.ip"; iq: "ck.iq"; ir: "ck.ir"; is: "ck.is"; it: "ck.it"; iu: "ck.iu"; iv: "ck.iv"; iw: "ck.iw"; ix: "ck.ix"; iy: "ck.iy"; iz: "ck.iz"; ja: "ck.ja"; jb: "ck.jb"; jc: "ck.jc"; jd: "ck.jd"; je: "ck.je"; jf: "ck.jf"; jg: "ck.jg"; jh: "ck.jh"; ji: "ck.ji"; jj: "ck.jj"; jk: "ck.jk"; jl: "ck.jl"; jm: "ck.jm"; jn: "ck.jn"; jo: "ck.jo"; jp: "ck.jp"; jq: "ck.jq"; jr: "ck.jr"; js: "ck.js"; jt: "ck.jt"; ju: "ck.ju"; jv: "ck.jv"; jw: "ck.jw"; jx: "ck.jx"; jy: "ck.jy"; jz: "ck.jz"; ka: "ck.ka"; kb: "ck.kb"; kc: "ck.kc"; kd: "ck.kd"; ke: "ck.ke"; kf: "ck.kf"; kg: "ck.kg"; kh: "ck.kh"; ki: "ck.ki"; kj: "ck.kj"; kk: "ck.kk"; kl: "ck.kl"; km: "ck.km"; kn: "ck.kn"; ko: "ck.ko"; kp: "ck.kp"; kq: "ck.kq"; kr: "ck.kr"; ks: "ck.ks"; kt: "ck.kt"; ku: "ck.ku"; kv: "ck.kv"; kw: "ck.kw"; kx: "ck.kx"; ky: "ck.ky"; kz: "ck.kz"; la: "ck.la"; lb: "ck.lb"; lc: "ck.lc"; ld: "ck.ld"; le: "ck.le"; lf: "ck.lf"; lg: "ck.lg"; lh: "ck.lh"; li: "ck.li"; lj: "ck.lj"; lk: "ck.lk"; ll: "ck.ll"; lm: "ck.lm"; ln: "ck.ln"; lo: "ck.lo"; lp: "ck.lp"; lq: "ck.lq"; lr: "ck.lr"; ls: "ck.ls"; lt: "ck.lt"; lu: "ck.lu"; lv: "ck.lv"; lw: "ck.lw"; lx: "ck.lx"; ly: "ck.ly"; lz: "ck.lz"; ma: "ck.ma"; mb: "ck.mb"; mc: "ck.mc"; md: "ck.md"; me: "ck.me"; mf: "ck.mf"; mg: "ck.mg"; mh: "ck.mh"; mi: "ck.mi"; mj: "ck.mj"; mk: "ck.mk"; ml: "ck.ml"; mm: "ck.mm"; mn: "ck.mn"; mo: "ck.mo"; mp: "ck.mp"; mq: "ck.mq"; mr: "ck.mr"; ms: "ck.ms"; mt: "ck.mt"; mu: "ck.mu"; mv: "ck.mv"; mw: "ck.mw"; mx: "ck.mx"; my: "ck.my"; mz: "ck.mz"; na: "ck.na"; nb: "ck.nb"; nc: "ck.nc"; nd: "ck.nd"; ne: "ck.ne"; nf: "ck.nf"; ng: "ck.ng"; nh: "ck.nh"; ni: "ck.ni"; nj: "ck.nj"; nk: "ck.nk"; nl: "ck.nl"; nm: "ck.nm"; nn: "ck.nn"; no: "ck.no"; np: "ck.np"; nq: "ck.nq"; nr: "ck.nr"; ns: "ck.ns"; nt: "ck.nt"; nu: "ck.nu"; nv: "ck.nv"; nw: "ck.nw"; nx: "ck.nx"; ny: "ck.ny"; nz: "ck.nz"; oa: "ck.oa"; ob: "ck.ob"; oc: "ck.oc"; od: "ck.od"; oe: "ck.oe"; of: "ck.of"; og: "ck.og"; oh: "ck.oh"; oi: "ck.oi"; oj: "ck.oj"; ok: "ck.ok"; ol: "ck.ol"; om: "ck.om"; on: "ck.on"; oo: "ck.oo"; op: "ck.op"; oq: "ck.oq"; or: "ck.or"; os: "ck.os"; ot: "ck.ot"; ou: "ck.ou"; ov: "ck.ov"; ow: "ck.ow"; ox: "ck.ox"; oy: "ck.oy"; oz: "ck.oz"; pa: "ck.pa"; pb: "ck.pb"; pc: "ck.pc"; pd: "ck.pd"; pe: "ck.pe"; pf: "ck.pf"; pg: "ck.pg"; ph: "ck.ph"; pi: "ck.pi"; pj: "ck.pj"; pk: "ck.pk"; pl: "ck.pl"; pm: "ck.pm"; pn: "ck.pn"; po: "ck.po"; pp: "ck.pp"; pq: "ck.pq"; pr: "ck.pr"; ps: "ck.ps"; pt: "ck.pt"; pu: "ck.pu"; pv: "ck.pv"; pw: "ck.pw"; px: "ck.px"; py: "ck.py"; pz: "ck.pz"; qa: "ck.qa"; qb: "ck.qb"; qc: "ck.qc"; qd: "ck.qd"; qe: "ck.qe"; qf: "ck.qf"; qg: "ck.qg"; qh: "ck.qh"; qi: "ck.qi"; qj: "ck.qj"; qk: "ck.qk"; ql: "ck.ql"; qm: "ck.qm"; qn: "ck.qn"; qo: "ck.qo"; qp: "ck.qp"; qq: "ck.qq"; qr: "ck.qr"; qs: "ck.qs"; qt: "ck.qt"; qu: "ck.qu"; qv: "ck.qv"; qw: "ck.qw"; qx: "ck.qx"; qy: "ck.qy"; qz: "ck.qz"; ra: "ck.ra"; rb: "ck.rb"; rc: "ck.rc"; rd: "ck.rd"; re: "ck.re"; rf: "ck.rf"; rg: "ck.rg"; rh: "ck.rh"; ri: "ck.ri"; rj: "ck.rj"; rk: "ck.rk"; rl: "ck.rl"; rm: "ck.rm"; rn: "ck.rn"; ro: "ck.ro"; rp: "ck.rp"; rq: "ck.rq"; rr: "ck.rr"; rs: "ck.rs"; rt: "ck.rt"; ru: "ck.ru"; rv: "ck.rv"; rw: "ck.rw"; rx: "ck.rx"; ry: "ck.ry"; rz: "ck.rz"; sa: "ck.sa"; sb: "ck.sb"; sc: "ck.sc"; sd: "ck.sd"; se: "ck.se"; sf: "ck.sf"; sg: "ck.sg"; sh: "ck.sh"; si: "ck.si"; sj: "ck.sj"; sk: "ck.sk"; sl: "ck.sl"; sm: "ck.sm"; sn: "ck.sn"; so: "ck.so"; sp: "ck.sp"; sq: "ck.sq"; sr: "ck.sr"; ss: "ck.ss"; st: "ck.st"; su: "ck.su"; sv: "ck.sv"; sw: "ck.sw"; sx: "ck.sx"; sy: "ck.sy"; sz: "ck.sz"; ta: "ck.ta"; tb: "ck.tb"; tc: "ck.tc"; td: "ck.td"; te: "ck.te"; tf: "ck.tf"; tg: "ck.tg"; th: "ck.th"; ti: "ck.ti"; tj: "ck.tj"; tk: "ck.tk"; tl: "ck.tl"; tm: "ck.tm"; tn: "ck.tn"; to: "ck.to"; tp: "ck.tp"; tq: "ck.tq"; tr: "ck.tr"; ts: "ck.ts"; tt: "ck.tt"; tu: "ck.tu"; tv: "ck.tv"; tw: "ck.tw"; tx: "ck.tx"; ty: "ck.ty"; tz: "ck.tz"; ua: "ck.ua"; ub: "ck.ub"; uc: "ck.uc"; ud: "ck.ud"; ue: "ck.ue"; uf: "ck.uf"; ug: "ck.ug"; uh: "ck.uh"; ui: "ck.ui"; uj: "ck.uj"; uk: "ck.uk"; ul: "ck.ul"; um: "ck.um"; un: "ck.un"; uo: "ck.uo"; up: "ck.up"; uq: "ck.uq"; ur: "ck.ur"; us: "ck.us"; ut: "ck.ut"; uu: "ck.uu"; uv: "ck.uv"; uw: "ck.uw"; ux: "ck.ux"; uy: "ck.uy"; uz: "ck.uz"; va: "ck.va"; vb: "ck.vb"; vc: "ck.vc"; vd: "ck.vd"; ve: "ck.ve"; vf: "ck.vf"; vg: "ck.vg"; vh: "ck.vh"; vi: "ck.vi"; vj: "ck.vj"; vk: "ck.vk"; vl: "ck.vl"; vm: "ck.vm"; vn: "ck.vn"; vo: "ck.vo"; vp: "ck.vp"; vq: "ck.vq"; vr: "ck.vr"; vs: "ck.vs"; vt: "ck.vt"; vu: "ck.vu"; vv: "ck.vv"; vw: "ck.vw"; vx: "ck.vx"; vy: "ck.vy"; vz: "ck.vz"; wa: "ck.wa"; wb: "ck.wb"; wc: "ck.wc"; wd: "ck.wd"; we: "ck.we"; wf: "ck.wf"; wg: "ck.wg"; wh: "ck.wh"; wi: "ck.wi"; wj: "ck.wj"; wk: "ck.wk"; wl: "ck.wl"; wm: "ck.wm"; wn: "ck.wn"; wo: "ck.wo"; wp: "ck.wp"; wq: "ck.wq"; wr: "ck.wr"; ws: "ck.ws"; wt: "ck.wt"; wu: "ck.wu"; wv: "ck.wv"; ww: "ck.ww"; wx: "ck.wx"; wy: "ck.wy"; wz: "ck.wz"; xa: "ck.xa"; xb: "ck.xb"; xc: "ck.xc"; xd: "ck.xd"; xe: "ck.xe"; xf: "ck.xf"; xg: "ck.xg"; xh: "ck.xh"; xi: "ck.xi"; xj: "ck.xj"; xk: "ck.xk"; xl: "ck.xl"; xm: "ck.xm"; xn: "ck.xn"; xo: "ck.xo"; xp: "ck.xp"; xq: "ck.xq"; xr: "ck.xr"; xs: "ck.xs"; xt: "ck.xt"; xu: "ck.xu"; xv: "ck.xv"; xw: "ck.xw"; xx: "ck.xx"; xy: "ck.xy"; xz: "ck.xz"; ya: "ck.ya"; yb: "ck.yb"; yc: "ck.yc"; yd: "ck.yd"; ye: "ck.ye"; yf: "ck.yf"; yg: "ck.yg"; yh: "ck.yh"; yi: "ck.yi"; yj: "ck.yj"; yk: "ck.yk"; yl: "ck.yl"; ym: "ck.ym"; yn: "ck.yn"; yo: "ck.yo"; yp: "ck.yp"; yq: "ck.yq"; yr: "ck.yr"; ys: "ck.ys"; yt: "ck.yt"; yu: "ck.yu"; yv: "ck.yv"; yw: "ck.yw"; yx: "ck.yx"; yy: "ck.yy"; yz: "ck.yz"; za: "ck.za"; zb: "ck.zb"; zc: "ck.zc"; zd: "ck.zd"; ze: "ck.ze"; zf: "ck.zf"; zg: "ck.zg"; zh: "ck.zh"; zi: "ck.zi"; zj: "ck.zj"; zk: "ck.zk"; zl: "ck.zl"; zm: "ck.zm"; zn: "ck.zn"; zo: "ck.zo"; zp: "ck.zp"; zq: "ck.zq"; zr: "ck.zr"; zs: "ck.zs"; zt: "ck.zt"; zu: "ck.zu"; zv: "ck.zv"; zw: "ck.zw"; zx: "ck.zx"; zy: "ck.zy"; zz: "ck.zz"; }; cl: { aa: "cl.aa"; ab: "cl.ab"; ac: "cl.ac"; ad: "cl.ad"; ae: "cl.ae"; af: "cl.af"; ag: "cl.ag"; ah: "cl.ah"; ai: "cl.ai"; aj: "cl.aj"; ak: "cl.ak"; al: "cl.al"; am: "cl.am"; an: "cl.an"; ao: "cl.ao"; ap: "cl.ap"; aq: "cl.aq"; ar: "cl.ar"; as: "cl.as"; at: "cl.at"; au: "cl.au"; av: "cl.av"; aw: "cl.aw"; ax: "cl.ax"; ay: "cl.ay"; az: "cl.az"; ba: "cl.ba"; bb: "cl.bb"; bc: "cl.bc"; bd: "cl.bd"; be: "cl.be"; bf: "cl.bf"; bg: "cl.bg"; bh: "cl.bh"; bi: "cl.bi"; bj: "cl.bj"; bk: "cl.bk"; bl: "cl.bl"; bm: "cl.bm"; bn: "cl.bn"; bo: "cl.bo"; bp: "cl.bp"; bq: "cl.bq"; br: "cl.br"; bs: "cl.bs"; bt: "cl.bt"; bu: "cl.bu"; bv: "cl.bv"; bw: "cl.bw"; bx: "cl.bx"; by: "cl.by"; bz: "cl.bz"; ca: "cl.ca"; cb: "cl.cb"; cc: "cl.cc"; cd: "cl.cd"; ce: "cl.ce"; cf: "cl.cf"; cg: "cl.cg"; ch: "cl.ch"; ci: "cl.ci"; cj: "cl.cj"; ck: "cl.ck"; cl: "cl.cl"; cm: "cl.cm"; cn: "cl.cn"; co: "cl.co"; cp: "cl.cp"; cq: "cl.cq"; cr: "cl.cr"; cs: "cl.cs"; ct: "cl.ct"; cu: "cl.cu"; cv: "cl.cv"; cw: "cl.cw"; cx: "cl.cx"; cy: "cl.cy"; cz: "cl.cz"; da: "cl.da"; db: "cl.db"; dc: "cl.dc"; dd: "cl.dd"; de: "cl.de"; df: "cl.df"; dg: "cl.dg"; dh: "cl.dh"; di: "cl.di"; dj: "cl.dj"; dk: "cl.dk"; dl: "cl.dl"; dm: "cl.dm"; dn: "cl.dn"; do: "cl.do"; dp: "cl.dp"; dq: "cl.dq"; dr: "cl.dr"; ds: "cl.ds"; dt: "cl.dt"; du: "cl.du"; dv: "cl.dv"; dw: "cl.dw"; dx: "cl.dx"; dy: "cl.dy"; dz: "cl.dz"; ea: "cl.ea"; eb: "cl.eb"; ec: "cl.ec"; ed: "cl.ed"; ee: "cl.ee"; ef: "cl.ef"; eg: "cl.eg"; eh: "cl.eh"; ei: "cl.ei"; ej: "cl.ej"; ek: "cl.ek"; el: "cl.el"; em: "cl.em"; en: "cl.en"; eo: "cl.eo"; ep: "cl.ep"; eq: "cl.eq"; er: "cl.er"; es: "cl.es"; et: "cl.et"; eu: "cl.eu"; ev: "cl.ev"; ew: "cl.ew"; ex: "cl.ex"; ey: "cl.ey"; ez: "cl.ez"; fa: "cl.fa"; fb: "cl.fb"; fc: "cl.fc"; fd: "cl.fd"; fe: "cl.fe"; ff: "cl.ff"; fg: "cl.fg"; fh: "cl.fh"; fi: "cl.fi"; fj: "cl.fj"; fk: "cl.fk"; fl: "cl.fl"; fm: "cl.fm"; fn: "cl.fn"; fo: "cl.fo"; fp: "cl.fp"; fq: "cl.fq"; fr: "cl.fr"; fs: "cl.fs"; ft: "cl.ft"; fu: "cl.fu"; fv: "cl.fv"; fw: "cl.fw"; fx: "cl.fx"; fy: "cl.fy"; fz: "cl.fz"; ga: "cl.ga"; gb: "cl.gb"; gc: "cl.gc"; gd: "cl.gd"; ge: "cl.ge"; gf: "cl.gf"; gg: "cl.gg"; gh: "cl.gh"; gi: "cl.gi"; gj: "cl.gj"; gk: "cl.gk"; gl: "cl.gl"; gm: "cl.gm"; gn: "cl.gn"; go: "cl.go"; gp: "cl.gp"; gq: "cl.gq"; gr: "cl.gr"; gs: "cl.gs"; gt: "cl.gt"; gu: "cl.gu"; gv: "cl.gv"; gw: "cl.gw"; gx: "cl.gx"; gy: "cl.gy"; gz: "cl.gz"; ha: "cl.ha"; hb: "cl.hb"; hc: "cl.hc"; hd: "cl.hd"; he: "cl.he"; hf: "cl.hf"; hg: "cl.hg"; hh: "cl.hh"; hi: "cl.hi"; hj: "cl.hj"; hk: "cl.hk"; hl: "cl.hl"; hm: "cl.hm"; hn: "cl.hn"; ho: "cl.ho"; hp: "cl.hp"; hq: "cl.hq"; hr: "cl.hr"; hs: "cl.hs"; ht: "cl.ht"; hu: "cl.hu"; hv: "cl.hv"; hw: "cl.hw"; hx: "cl.hx"; hy: "cl.hy"; hz: "cl.hz"; ia: "cl.ia"; ib: "cl.ib"; ic: "cl.ic"; id: "cl.id"; ie: "cl.ie"; if: "cl.if"; ig: "cl.ig"; ih: "cl.ih"; ii: "cl.ii"; ij: "cl.ij"; ik: "cl.ik"; il: "cl.il"; im: "cl.im"; in: "cl.in"; io: "cl.io"; ip: "cl.ip"; iq: "cl.iq"; ir: "cl.ir"; is: "cl.is"; it: "cl.it"; iu: "cl.iu"; iv: "cl.iv"; iw: "cl.iw"; ix: "cl.ix"; iy: "cl.iy"; iz: "cl.iz"; ja: "cl.ja"; jb: "cl.jb"; jc: "cl.jc"; jd: "cl.jd"; je: "cl.je"; jf: "cl.jf"; jg: "cl.jg"; jh: "cl.jh"; ji: "cl.ji"; jj: "cl.jj"; jk: "cl.jk"; jl: "cl.jl"; jm: "cl.jm"; jn: "cl.jn"; jo: "cl.jo"; jp: "cl.jp"; jq: "cl.jq"; jr: "cl.jr"; js: "cl.js"; jt: "cl.jt"; ju: "cl.ju"; jv: "cl.jv"; jw: "cl.jw"; jx: "cl.jx"; jy: "cl.jy"; jz: "cl.jz"; ka: "cl.ka"; kb: "cl.kb"; kc: "cl.kc"; kd: "cl.kd"; ke: "cl.ke"; kf: "cl.kf"; kg: "cl.kg"; kh: "cl.kh"; ki: "cl.ki"; kj: "cl.kj"; kk: "cl.kk"; kl: "cl.kl"; km: "cl.km"; kn: "cl.kn"; ko: "cl.ko"; kp: "cl.kp"; kq: "cl.kq"; kr: "cl.kr"; ks: "cl.ks"; kt: "cl.kt"; ku: "cl.ku"; kv: "cl.kv"; kw: "cl.kw"; kx: "cl.kx"; ky: "cl.ky"; kz: "cl.kz"; la: "cl.la"; lb: "cl.lb"; lc: "cl.lc"; ld: "cl.ld"; le: "cl.le"; lf: "cl.lf"; lg: "cl.lg"; lh: "cl.lh"; li: "cl.li"; lj: "cl.lj"; lk: "cl.lk"; ll: "cl.ll"; lm: "cl.lm"; ln: "cl.ln"; lo: "cl.lo"; lp: "cl.lp"; lq: "cl.lq"; lr: "cl.lr"; ls: "cl.ls"; lt: "cl.lt"; lu: "cl.lu"; lv: "cl.lv"; lw: "cl.lw"; lx: "cl.lx"; ly: "cl.ly"; lz: "cl.lz"; ma: "cl.ma"; mb: "cl.mb"; mc: "cl.mc"; md: "cl.md"; me: "cl.me"; mf: "cl.mf"; mg: "cl.mg"; mh: "cl.mh"; mi: "cl.mi"; mj: "cl.mj"; mk: "cl.mk"; ml: "cl.ml"; mm: "cl.mm"; mn: "cl.mn"; mo: "cl.mo"; mp: "cl.mp"; mq: "cl.mq"; mr: "cl.mr"; ms: "cl.ms"; mt: "cl.mt"; mu: "cl.mu"; mv: "cl.mv"; mw: "cl.mw"; mx: "cl.mx"; my: "cl.my"; mz: "cl.mz"; na: "cl.na"; nb: "cl.nb"; nc: "cl.nc"; nd: "cl.nd"; ne: "cl.ne"; nf: "cl.nf"; ng: "cl.ng"; nh: "cl.nh"; ni: "cl.ni"; nj: "cl.nj"; nk: "cl.nk"; nl: "cl.nl"; nm: "cl.nm"; nn: "cl.nn"; no: "cl.no"; np: "cl.np"; nq: "cl.nq"; nr: "cl.nr"; ns: "cl.ns"; nt: "cl.nt"; nu: "cl.nu"; nv: "cl.nv"; nw: "cl.nw"; nx: "cl.nx"; ny: "cl.ny"; nz: "cl.nz"; oa: "cl.oa"; ob: "cl.ob"; oc: "cl.oc"; od: "cl.od"; oe: "cl.oe"; of: "cl.of"; og: "cl.og"; oh: "cl.oh"; oi: "cl.oi"; oj: "cl.oj"; ok: "cl.ok"; ol: "cl.ol"; om: "cl.om"; on: "cl.on"; oo: "cl.oo"; op: "cl.op"; oq: "cl.oq"; or: "cl.or"; os: "cl.os"; ot: "cl.ot"; ou: "cl.ou"; ov: "cl.ov"; ow: "cl.ow"; ox: "cl.ox"; oy: "cl.oy"; oz: "cl.oz"; pa: "cl.pa"; pb: "cl.pb"; pc: "cl.pc"; pd: "cl.pd"; pe: "cl.pe"; pf: "cl.pf"; pg: "cl.pg"; ph: "cl.ph"; pi: "cl.pi"; pj: "cl.pj"; pk: "cl.pk"; pl: "cl.pl"; pm: "cl.pm"; pn: "cl.pn"; po: "cl.po"; pp: "cl.pp"; pq: "cl.pq"; pr: "cl.pr"; ps: "cl.ps"; pt: "cl.pt"; pu: "cl.pu"; pv: "cl.pv"; pw: "cl.pw"; px: "cl.px"; py: "cl.py"; pz: "cl.pz"; qa: "cl.qa"; qb: "cl.qb"; qc: "cl.qc"; qd: "cl.qd"; qe: "cl.qe"; qf: "cl.qf"; qg: "cl.qg"; qh: "cl.qh"; qi: "cl.qi"; qj: "cl.qj"; qk: "cl.qk"; ql: "cl.ql"; qm: "cl.qm"; qn: "cl.qn"; qo: "cl.qo"; qp: "cl.qp"; qq: "cl.qq"; qr: "cl.qr"; qs: "cl.qs"; qt: "cl.qt"; qu: "cl.qu"; qv: "cl.qv"; qw: "cl.qw"; qx: "cl.qx"; qy: "cl.qy"; qz: "cl.qz"; ra: "cl.ra"; rb: "cl.rb"; rc: "cl.rc"; rd: "cl.rd"; re: "cl.re"; rf: "cl.rf"; rg: "cl.rg"; rh: "cl.rh"; ri: "cl.ri"; rj: "cl.rj"; rk: "cl.rk"; rl: "cl.rl"; rm: "cl.rm"; rn: "cl.rn"; ro: "cl.ro"; rp: "cl.rp"; rq: "cl.rq"; rr: "cl.rr"; rs: "cl.rs"; rt: "cl.rt"; ru: "cl.ru"; rv: "cl.rv"; rw: "cl.rw"; rx: "cl.rx"; ry: "cl.ry"; rz: "cl.rz"; sa: "cl.sa"; sb: "cl.sb"; sc: "cl.sc"; sd: "cl.sd"; se: "cl.se"; sf: "cl.sf"; sg: "cl.sg"; sh: "cl.sh"; si: "cl.si"; sj: "cl.sj"; sk: "cl.sk"; sl: "cl.sl"; sm: "cl.sm"; sn: "cl.sn"; so: "cl.so"; sp: "cl.sp"; sq: "cl.sq"; sr: "cl.sr"; ss: "cl.ss"; st: "cl.st"; su: "cl.su"; sv: "cl.sv"; sw: "cl.sw"; sx: "cl.sx"; sy: "cl.sy"; sz: "cl.sz"; ta: "cl.ta"; tb: "cl.tb"; tc: "cl.tc"; td: "cl.td"; te: "cl.te"; tf: "cl.tf"; tg: "cl.tg"; th: "cl.th"; ti: "cl.ti"; tj: "cl.tj"; tk: "cl.tk"; tl: "cl.tl"; tm: "cl.tm"; tn: "cl.tn"; to: "cl.to"; tp: "cl.tp"; tq: "cl.tq"; tr: "cl.tr"; ts: "cl.ts"; tt: "cl.tt"; tu: "cl.tu"; tv: "cl.tv"; tw: "cl.tw"; tx: "cl.tx"; ty: "cl.ty"; tz: "cl.tz"; ua: "cl.ua"; ub: "cl.ub"; uc: "cl.uc"; ud: "cl.ud"; ue: "cl.ue"; uf: "cl.uf"; ug: "cl.ug"; uh: "cl.uh"; ui: "cl.ui"; uj: "cl.uj"; uk: "cl.uk"; ul: "cl.ul"; um: "cl.um"; un: "cl.un"; uo: "cl.uo"; up: "cl.up"; uq: "cl.uq"; ur: "cl.ur"; us: "cl.us"; ut: "cl.ut"; uu: "cl.uu"; uv: "cl.uv"; uw: "cl.uw"; ux: "cl.ux"; uy: "cl.uy"; uz: "cl.uz"; va: "cl.va"; vb: "cl.vb"; vc: "cl.vc"; vd: "cl.vd"; ve: "cl.ve"; vf: "cl.vf"; vg: "cl.vg"; vh: "cl.vh"; vi: "cl.vi"; vj: "cl.vj"; vk: "cl.vk"; vl: "cl.vl"; vm: "cl.vm"; vn: "cl.vn"; vo: "cl.vo"; vp: "cl.vp"; vq: "cl.vq"; vr: "cl.vr"; vs: "cl.vs"; vt: "cl.vt"; vu: "cl.vu"; vv: "cl.vv"; vw: "cl.vw"; vx: "cl.vx"; vy: "cl.vy"; vz: "cl.vz"; wa: "cl.wa"; wb: "cl.wb"; wc: "cl.wc"; wd: "cl.wd"; we: "cl.we"; wf: "cl.wf"; wg: "cl.wg"; wh: "cl.wh"; wi: "cl.wi"; wj: "cl.wj"; wk: "cl.wk"; wl: "cl.wl"; wm: "cl.wm"; wn: "cl.wn"; wo: "cl.wo"; wp: "cl.wp"; wq: "cl.wq"; wr: "cl.wr"; ws: "cl.ws"; wt: "cl.wt"; wu: "cl.wu"; wv: "cl.wv"; ww: "cl.ww"; wx: "cl.wx"; wy: "cl.wy"; wz: "cl.wz"; xa: "cl.xa"; xb: "cl.xb"; xc: "cl.xc"; xd: "cl.xd"; xe: "cl.xe"; xf: "cl.xf"; xg: "cl.xg"; xh: "cl.xh"; xi: "cl.xi"; xj: "cl.xj"; xk: "cl.xk"; xl: "cl.xl"; xm: "cl.xm"; xn: "cl.xn"; xo: "cl.xo"; xp: "cl.xp"; xq: "cl.xq"; xr: "cl.xr"; xs: "cl.xs"; xt: "cl.xt"; xu: "cl.xu"; xv: "cl.xv"; xw: "cl.xw"; xx: "cl.xx"; xy: "cl.xy"; xz: "cl.xz"; ya: "cl.ya"; yb: "cl.yb"; yc: "cl.yc"; yd: "cl.yd"; ye: "cl.ye"; yf: "cl.yf"; yg: "cl.yg"; yh: "cl.yh"; yi: "cl.yi"; yj: "cl.yj"; yk: "cl.yk"; yl: "cl.yl"; ym: "cl.ym"; yn: "cl.yn"; yo: "cl.yo"; yp: "cl.yp"; yq: "cl.yq"; yr: "cl.yr"; ys: "cl.ys"; yt: "cl.yt"; yu: "cl.yu"; yv: "cl.yv"; yw: "cl.yw"; yx: "cl.yx"; yy: "cl.yy"; yz: "cl.yz"; za: "cl.za"; zb: "cl.zb"; zc: "cl.zc"; zd: "cl.zd"; ze: "cl.ze"; zf: "cl.zf"; zg: "cl.zg"; zh: "cl.zh"; zi: "cl.zi"; zj: "cl.zj"; zk: "cl.zk"; zl: "cl.zl"; zm: "cl.zm"; zn: "cl.zn"; zo: "cl.zo"; zp: "cl.zp"; zq: "cl.zq"; zr: "cl.zr"; zs: "cl.zs"; zt: "cl.zt"; zu: "cl.zu"; zv: "cl.zv"; zw: "cl.zw"; zx: "cl.zx"; zy: "cl.zy"; zz: "cl.zz"; }; cm: { aa: "cm.aa"; ab: "cm.ab"; ac: "cm.ac"; ad: "cm.ad"; ae: "cm.ae"; af: "cm.af"; ag: "cm.ag"; ah: "cm.ah"; ai: "cm.ai"; aj: "cm.aj"; ak: "cm.ak"; al: "cm.al"; am: "cm.am"; an: "cm.an"; ao: "cm.ao"; ap: "cm.ap"; aq: "cm.aq"; ar: "cm.ar"; as: "cm.as"; at: "cm.at"; au: "cm.au"; av: "cm.av"; aw: "cm.aw"; ax: "cm.ax"; ay: "cm.ay"; az: "cm.az"; ba: "cm.ba"; bb: "cm.bb"; bc: "cm.bc"; bd: "cm.bd"; be: "cm.be"; bf: "cm.bf"; bg: "cm.bg"; bh: "cm.bh"; bi: "cm.bi"; bj: "cm.bj"; bk: "cm.bk"; bl: "cm.bl"; bm: "cm.bm"; bn: "cm.bn"; bo: "cm.bo"; bp: "cm.bp"; bq: "cm.bq"; br: "cm.br"; bs: "cm.bs"; bt: "cm.bt"; bu: "cm.bu"; bv: "cm.bv"; bw: "cm.bw"; bx: "cm.bx"; by: "cm.by"; bz: "cm.bz"; ca: "cm.ca"; cb: "cm.cb"; cc: "cm.cc"; cd: "cm.cd"; ce: "cm.ce"; cf: "cm.cf"; cg: "cm.cg"; ch: "cm.ch"; ci: "cm.ci"; cj: "cm.cj"; ck: "cm.ck"; cl: "cm.cl"; cm: "cm.cm"; cn: "cm.cn"; co: "cm.co"; cp: "cm.cp"; cq: "cm.cq"; cr: "cm.cr"; cs: "cm.cs"; ct: "cm.ct"; cu: "cm.cu"; cv: "cm.cv"; cw: "cm.cw"; cx: "cm.cx"; cy: "cm.cy"; cz: "cm.cz"; da: "cm.da"; db: "cm.db"; dc: "cm.dc"; dd: "cm.dd"; de: "cm.de"; df: "cm.df"; dg: "cm.dg"; dh: "cm.dh"; di: "cm.di"; dj: "cm.dj"; dk: "cm.dk"; dl: "cm.dl"; dm: "cm.dm"; dn: "cm.dn"; do: "cm.do"; dp: "cm.dp"; dq: "cm.dq"; dr: "cm.dr"; ds: "cm.ds"; dt: "cm.dt"; du: "cm.du"; dv: "cm.dv"; dw: "cm.dw"; dx: "cm.dx"; dy: "cm.dy"; dz: "cm.dz"; ea: "cm.ea"; eb: "cm.eb"; ec: "cm.ec"; ed: "cm.ed"; ee: "cm.ee"; ef: "cm.ef"; eg: "cm.eg"; eh: "cm.eh"; ei: "cm.ei"; ej: "cm.ej"; ek: "cm.ek"; el: "cm.el"; em: "cm.em"; en: "cm.en"; eo: "cm.eo"; ep: "cm.ep"; eq: "cm.eq"; er: "cm.er"; es: "cm.es"; et: "cm.et"; eu: "cm.eu"; ev: "cm.ev"; ew: "cm.ew"; ex: "cm.ex"; ey: "cm.ey"; ez: "cm.ez"; fa: "cm.fa"; fb: "cm.fb"; fc: "cm.fc"; fd: "cm.fd"; fe: "cm.fe"; ff: "cm.ff"; fg: "cm.fg"; fh: "cm.fh"; fi: "cm.fi"; fj: "cm.fj"; fk: "cm.fk"; fl: "cm.fl"; fm: "cm.fm"; fn: "cm.fn"; fo: "cm.fo"; fp: "cm.fp"; fq: "cm.fq"; fr: "cm.fr"; fs: "cm.fs"; ft: "cm.ft"; fu: "cm.fu"; fv: "cm.fv"; fw: "cm.fw"; fx: "cm.fx"; fy: "cm.fy"; fz: "cm.fz"; ga: "cm.ga"; gb: "cm.gb"; gc: "cm.gc"; gd: "cm.gd"; ge: "cm.ge"; gf: "cm.gf"; gg: "cm.gg"; gh: "cm.gh"; gi: "cm.gi"; gj: "cm.gj"; gk: "cm.gk"; gl: "cm.gl"; gm: "cm.gm"; gn: "cm.gn"; go: "cm.go"; gp: "cm.gp"; gq: "cm.gq"; gr: "cm.gr"; gs: "cm.gs"; gt: "cm.gt"; gu: "cm.gu"; gv: "cm.gv"; gw: "cm.gw"; gx: "cm.gx"; gy: "cm.gy"; gz: "cm.gz"; ha: "cm.ha"; hb: "cm.hb"; hc: "cm.hc"; hd: "cm.hd"; he: "cm.he"; hf: "cm.hf"; hg: "cm.hg"; hh: "cm.hh"; hi: "cm.hi"; hj: "cm.hj"; hk: "cm.hk"; hl: "cm.hl"; hm: "cm.hm"; hn: "cm.hn"; ho: "cm.ho"; hp: "cm.hp"; hq: "cm.hq"; hr: "cm.hr"; hs: "cm.hs"; ht: "cm.ht"; hu: "cm.hu"; hv: "cm.hv"; hw: "cm.hw"; hx: "cm.hx"; hy: "cm.hy"; hz: "cm.hz"; ia: "cm.ia"; ib: "cm.ib"; ic: "cm.ic"; id: "cm.id"; ie: "cm.ie"; if: "cm.if"; ig: "cm.ig"; ih: "cm.ih"; ii: "cm.ii"; ij: "cm.ij"; ik: "cm.ik"; il: "cm.il"; im: "cm.im"; in: "cm.in"; io: "cm.io"; ip: "cm.ip"; iq: "cm.iq"; ir: "cm.ir"; is: "cm.is"; it: "cm.it"; iu: "cm.iu"; iv: "cm.iv"; iw: "cm.iw"; ix: "cm.ix"; iy: "cm.iy"; iz: "cm.iz"; ja: "cm.ja"; jb: "cm.jb"; jc: "cm.jc"; jd: "cm.jd"; je: "cm.je"; jf: "cm.jf"; jg: "cm.jg"; jh: "cm.jh"; ji: "cm.ji"; jj: "cm.jj"; jk: "cm.jk"; jl: "cm.jl"; jm: "cm.jm"; jn: "cm.jn"; jo: "cm.jo"; jp: "cm.jp"; jq: "cm.jq"; jr: "cm.jr"; js: "cm.js"; jt: "cm.jt"; ju: "cm.ju"; jv: "cm.jv"; jw: "cm.jw"; jx: "cm.jx"; jy: "cm.jy"; jz: "cm.jz"; ka: "cm.ka"; kb: "cm.kb"; kc: "cm.kc"; kd: "cm.kd"; ke: "cm.ke"; kf: "cm.kf"; kg: "cm.kg"; kh: "cm.kh"; ki: "cm.ki"; kj: "cm.kj"; kk: "cm.kk"; kl: "cm.kl"; km: "cm.km"; kn: "cm.kn"; ko: "cm.ko"; kp: "cm.kp"; kq: "cm.kq"; kr: "cm.kr"; ks: "cm.ks"; kt: "cm.kt"; ku: "cm.ku"; kv: "cm.kv"; kw: "cm.kw"; kx: "cm.kx"; ky: "cm.ky"; kz: "cm.kz"; la: "cm.la"; lb: "cm.lb"; lc: "cm.lc"; ld: "cm.ld"; le: "cm.le"; lf: "cm.lf"; lg: "cm.lg"; lh: "cm.lh"; li: "cm.li"; lj: "cm.lj"; lk: "cm.lk"; ll: "cm.ll"; lm: "cm.lm"; ln: "cm.ln"; lo: "cm.lo"; lp: "cm.lp"; lq: "cm.lq"; lr: "cm.lr"; ls: "cm.ls"; lt: "cm.lt"; lu: "cm.lu"; lv: "cm.lv"; lw: "cm.lw"; lx: "cm.lx"; ly: "cm.ly"; lz: "cm.lz"; ma: "cm.ma"; mb: "cm.mb"; mc: "cm.mc"; md: "cm.md"; me: "cm.me"; mf: "cm.mf"; mg: "cm.mg"; mh: "cm.mh"; mi: "cm.mi"; mj: "cm.mj"; mk: "cm.mk"; ml: "cm.ml"; mm: "cm.mm"; mn: "cm.mn"; mo: "cm.mo"; mp: "cm.mp"; mq: "cm.mq"; mr: "cm.mr"; ms: "cm.ms"; mt: "cm.mt"; mu: "cm.mu"; mv: "cm.mv"; mw: "cm.mw"; mx: "cm.mx"; my: "cm.my"; mz: "cm.mz"; na: "cm.na"; nb: "cm.nb"; nc: "cm.nc"; nd: "cm.nd"; ne: "cm.ne"; nf: "cm.nf"; ng: "cm.ng"; nh: "cm.nh"; ni: "cm.ni"; nj: "cm.nj"; nk: "cm.nk"; nl: "cm.nl"; nm: "cm.nm"; nn: "cm.nn"; no: "cm.no"; np: "cm.np"; nq: "cm.nq"; nr: "cm.nr"; ns: "cm.ns"; nt: "cm.nt"; nu: "cm.nu"; nv: "cm.nv"; nw: "cm.nw"; nx: "cm.nx"; ny: "cm.ny"; nz: "cm.nz"; oa: "cm.oa"; ob: "cm.ob"; oc: "cm.oc"; od: "cm.od"; oe: "cm.oe"; of: "cm.of"; og: "cm.og"; oh: "cm.oh"; oi: "cm.oi"; oj: "cm.oj"; ok: "cm.ok"; ol: "cm.ol"; om: "cm.om"; on: "cm.on"; oo: "cm.oo"; op: "cm.op"; oq: "cm.oq"; or: "cm.or"; os: "cm.os"; ot: "cm.ot"; ou: "cm.ou"; ov: "cm.ov"; ow: "cm.ow"; ox: "cm.ox"; oy: "cm.oy"; oz: "cm.oz"; pa: "cm.pa"; pb: "cm.pb"; pc: "cm.pc"; pd: "cm.pd"; pe: "cm.pe"; pf: "cm.pf"; pg: "cm.pg"; ph: "cm.ph"; pi: "cm.pi"; pj: "cm.pj"; pk: "cm.pk"; pl: "cm.pl"; pm: "cm.pm"; pn: "cm.pn"; po: "cm.po"; pp: "cm.pp"; pq: "cm.pq"; pr: "cm.pr"; ps: "cm.ps"; pt: "cm.pt"; pu: "cm.pu"; pv: "cm.pv"; pw: "cm.pw"; px: "cm.px"; py: "cm.py"; pz: "cm.pz"; qa: "cm.qa"; qb: "cm.qb"; qc: "cm.qc"; qd: "cm.qd"; qe: "cm.qe"; qf: "cm.qf"; qg: "cm.qg"; qh: "cm.qh"; qi: "cm.qi"; qj: "cm.qj"; qk: "cm.qk"; ql: "cm.ql"; qm: "cm.qm"; qn: "cm.qn"; qo: "cm.qo"; qp: "cm.qp"; qq: "cm.qq"; qr: "cm.qr"; qs: "cm.qs"; qt: "cm.qt"; qu: "cm.qu"; qv: "cm.qv"; qw: "cm.qw"; qx: "cm.qx"; qy: "cm.qy"; qz: "cm.qz"; ra: "cm.ra"; rb: "cm.rb"; rc: "cm.rc"; rd: "cm.rd"; re: "cm.re"; rf: "cm.rf"; rg: "cm.rg"; rh: "cm.rh"; ri: "cm.ri"; rj: "cm.rj"; rk: "cm.rk"; rl: "cm.rl"; rm: "cm.rm"; rn: "cm.rn"; ro: "cm.ro"; rp: "cm.rp"; rq: "cm.rq"; rr: "cm.rr"; rs: "cm.rs"; rt: "cm.rt"; ru: "cm.ru"; rv: "cm.rv"; rw: "cm.rw"; rx: "cm.rx"; ry: "cm.ry"; rz: "cm.rz"; sa: "cm.sa"; sb: "cm.sb"; sc: "cm.sc"; sd: "cm.sd"; se: "cm.se"; sf: "cm.sf"; sg: "cm.sg"; sh: "cm.sh"; si: "cm.si"; sj: "cm.sj"; sk: "cm.sk"; sl: "cm.sl"; sm: "cm.sm"; sn: "cm.sn"; so: "cm.so"; sp: "cm.sp"; sq: "cm.sq"; sr: "cm.sr"; ss: "cm.ss"; st: "cm.st"; su: "cm.su"; sv: "cm.sv"; sw: "cm.sw"; sx: "cm.sx"; sy: "cm.sy"; sz: "cm.sz"; ta: "cm.ta"; tb: "cm.tb"; tc: "cm.tc"; td: "cm.td"; te: "cm.te"; tf: "cm.tf"; tg: "cm.tg"; th: "cm.th"; ti: "cm.ti"; tj: "cm.tj"; tk: "cm.tk"; tl: "cm.tl"; tm: "cm.tm"; tn: "cm.tn"; to: "cm.to"; tp: "cm.tp"; tq: "cm.tq"; tr: "cm.tr"; ts: "cm.ts"; tt: "cm.tt"; tu: "cm.tu"; tv: "cm.tv"; tw: "cm.tw"; tx: "cm.tx"; ty: "cm.ty"; tz: "cm.tz"; ua: "cm.ua"; ub: "cm.ub"; uc: "cm.uc"; ud: "cm.ud"; ue: "cm.ue"; uf: "cm.uf"; ug: "cm.ug"; uh: "cm.uh"; ui: "cm.ui"; uj: "cm.uj"; uk: "cm.uk"; ul: "cm.ul"; um: "cm.um"; un: "cm.un"; uo: "cm.uo"; up: "cm.up"; uq: "cm.uq"; ur: "cm.ur"; us: "cm.us"; ut: "cm.ut"; uu: "cm.uu"; uv: "cm.uv"; uw: "cm.uw"; ux: "cm.ux"; uy: "cm.uy"; uz: "cm.uz"; va: "cm.va"; vb: "cm.vb"; vc: "cm.vc"; vd: "cm.vd"; ve: "cm.ve"; vf: "cm.vf"; vg: "cm.vg"; vh: "cm.vh"; vi: "cm.vi"; vj: "cm.vj"; vk: "cm.vk"; vl: "cm.vl"; vm: "cm.vm"; vn: "cm.vn"; vo: "cm.vo"; vp: "cm.vp"; vq: "cm.vq"; vr: "cm.vr"; vs: "cm.vs"; vt: "cm.vt"; vu: "cm.vu"; vv: "cm.vv"; vw: "cm.vw"; vx: "cm.vx"; vy: "cm.vy"; vz: "cm.vz"; wa: "cm.wa"; wb: "cm.wb"; wc: "cm.wc"; wd: "cm.wd"; we: "cm.we"; wf: "cm.wf"; wg: "cm.wg"; wh: "cm.wh"; wi: "cm.wi"; wj: "cm.wj"; wk: "cm.wk"; wl: "cm.wl"; wm: "cm.wm"; wn: "cm.wn"; wo: "cm.wo"; wp: "cm.wp"; wq: "cm.wq"; wr: "cm.wr"; ws: "cm.ws"; wt: "cm.wt"; wu: "cm.wu"; wv: "cm.wv"; ww: "cm.ww"; wx: "cm.wx"; wy: "cm.wy"; wz: "cm.wz"; xa: "cm.xa"; xb: "cm.xb"; xc: "cm.xc"; xd: "cm.xd"; xe: "cm.xe"; xf: "cm.xf"; xg: "cm.xg"; xh: "cm.xh"; xi: "cm.xi"; xj: "cm.xj"; xk: "cm.xk"; xl: "cm.xl"; xm: "cm.xm"; xn: "cm.xn"; xo: "cm.xo"; xp: "cm.xp"; xq: "cm.xq"; xr: "cm.xr"; xs: "cm.xs"; xt: "cm.xt"; xu: "cm.xu"; xv: "cm.xv"; xw: "cm.xw"; xx: "cm.xx"; xy: "cm.xy"; xz: "cm.xz"; ya: "cm.ya"; yb: "cm.yb"; yc: "cm.yc"; yd: "cm.yd"; ye: "cm.ye"; yf: "cm.yf"; yg: "cm.yg"; yh: "cm.yh"; yi: "cm.yi"; yj: "cm.yj"; yk: "cm.yk"; yl: "cm.yl"; ym: "cm.ym"; yn: "cm.yn"; yo: "cm.yo"; yp: "cm.yp"; yq: "cm.yq"; yr: "cm.yr"; ys: "cm.ys"; yt: "cm.yt"; yu: "cm.yu"; yv: "cm.yv"; yw: "cm.yw"; yx: "cm.yx"; yy: "cm.yy"; yz: "cm.yz"; za: "cm.za"; zb: "cm.zb"; zc: "cm.zc"; zd: "cm.zd"; ze: "cm.ze"; zf: "cm.zf"; zg: "cm.zg"; zh: "cm.zh"; zi: "cm.zi"; zj: "cm.zj"; zk: "cm.zk"; zl: "cm.zl"; zm: "cm.zm"; zn: "cm.zn"; zo: "cm.zo"; zp: "cm.zp"; zq: "cm.zq"; zr: "cm.zr"; zs: "cm.zs"; zt: "cm.zt"; zu: "cm.zu"; zv: "cm.zv"; zw: "cm.zw"; zx: "cm.zx"; zy: "cm.zy"; zz: "cm.zz"; }; cn: { aa: "cn.aa"; ab: "cn.ab"; ac: "cn.ac"; ad: "cn.ad"; ae: "cn.ae"; af: "cn.af"; ag: "cn.ag"; ah: "cn.ah"; ai: "cn.ai"; aj: "cn.aj"; ak: "cn.ak"; al: "cn.al"; am: "cn.am"; an: "cn.an"; ao: "cn.ao"; ap: "cn.ap"; aq: "cn.aq"; ar: "cn.ar"; as: "cn.as"; at: "cn.at"; au: "cn.au"; av: "cn.av"; aw: "cn.aw"; ax: "cn.ax"; ay: "cn.ay"; az: "cn.az"; ba: "cn.ba"; bb: "cn.bb"; bc: "cn.bc"; bd: "cn.bd"; be: "cn.be"; bf: "cn.bf"; bg: "cn.bg"; bh: "cn.bh"; bi: "cn.bi"; bj: "cn.bj"; bk: "cn.bk"; bl: "cn.bl"; bm: "cn.bm"; bn: "cn.bn"; bo: "cn.bo"; bp: "cn.bp"; bq: "cn.bq"; br: "cn.br"; bs: "cn.bs"; bt: "cn.bt"; bu: "cn.bu"; bv: "cn.bv"; bw: "cn.bw"; bx: "cn.bx"; by: "cn.by"; bz: "cn.bz"; ca: "cn.ca"; cb: "cn.cb"; cc: "cn.cc"; cd: "cn.cd"; ce: "cn.ce"; cf: "cn.cf"; cg: "cn.cg"; ch: "cn.ch"; ci: "cn.ci"; cj: "cn.cj"; ck: "cn.ck"; cl: "cn.cl"; cm: "cn.cm"; cn: "cn.cn"; co: "cn.co"; cp: "cn.cp"; cq: "cn.cq"; cr: "cn.cr"; cs: "cn.cs"; ct: "cn.ct"; cu: "cn.cu"; cv: "cn.cv"; cw: "cn.cw"; cx: "cn.cx"; cy: "cn.cy"; cz: "cn.cz"; da: "cn.da"; db: "cn.db"; dc: "cn.dc"; dd: "cn.dd"; de: "cn.de"; df: "cn.df"; dg: "cn.dg"; dh: "cn.dh"; di: "cn.di"; dj: "cn.dj"; dk: "cn.dk"; dl: "cn.dl"; dm: "cn.dm"; dn: "cn.dn"; do: "cn.do"; dp: "cn.dp"; dq: "cn.dq"; dr: "cn.dr"; ds: "cn.ds"; dt: "cn.dt"; du: "cn.du"; dv: "cn.dv"; dw: "cn.dw"; dx: "cn.dx"; dy: "cn.dy"; dz: "cn.dz"; ea: "cn.ea"; eb: "cn.eb"; ec: "cn.ec"; ed: "cn.ed"; ee: "cn.ee"; ef: "cn.ef"; eg: "cn.eg"; eh: "cn.eh"; ei: "cn.ei"; ej: "cn.ej"; ek: "cn.ek"; el: "cn.el"; em: "cn.em"; en: "cn.en"; eo: "cn.eo"; ep: "cn.ep"; eq: "cn.eq"; er: "cn.er"; es: "cn.es"; et: "cn.et"; eu: "cn.eu"; ev: "cn.ev"; ew: "cn.ew"; ex: "cn.ex"; ey: "cn.ey"; ez: "cn.ez"; fa: "cn.fa"; fb: "cn.fb"; fc: "cn.fc"; fd: "cn.fd"; fe: "cn.fe"; ff: "cn.ff"; fg: "cn.fg"; fh: "cn.fh"; fi: "cn.fi"; fj: "cn.fj"; fk: "cn.fk"; fl: "cn.fl"; fm: "cn.fm"; fn: "cn.fn"; fo: "cn.fo"; fp: "cn.fp"; fq: "cn.fq"; fr: "cn.fr"; fs: "cn.fs"; ft: "cn.ft"; fu: "cn.fu"; fv: "cn.fv"; fw: "cn.fw"; fx: "cn.fx"; fy: "cn.fy"; fz: "cn.fz"; ga: "cn.ga"; gb: "cn.gb"; gc: "cn.gc"; gd: "cn.gd"; ge: "cn.ge"; gf: "cn.gf"; gg: "cn.gg"; gh: "cn.gh"; gi: "cn.gi"; gj: "cn.gj"; gk: "cn.gk"; gl: "cn.gl"; gm: "cn.gm"; gn: "cn.gn"; go: "cn.go"; gp: "cn.gp"; gq: "cn.gq"; gr: "cn.gr"; gs: "cn.gs"; gt: "cn.gt"; gu: "cn.gu"; gv: "cn.gv"; gw: "cn.gw"; gx: "cn.gx"; gy: "cn.gy"; gz: "cn.gz"; ha: "cn.ha"; hb: "cn.hb"; hc: "cn.hc"; hd: "cn.hd"; he: "cn.he"; hf: "cn.hf"; hg: "cn.hg"; hh: "cn.hh"; hi: "cn.hi"; hj: "cn.hj"; hk: "cn.hk"; hl: "cn.hl"; hm: "cn.hm"; hn: "cn.hn"; ho: "cn.ho"; hp: "cn.hp"; hq: "cn.hq"; hr: "cn.hr"; hs: "cn.hs"; ht: "cn.ht"; hu: "cn.hu"; hv: "cn.hv"; hw: "cn.hw"; hx: "cn.hx"; hy: "cn.hy"; hz: "cn.hz"; ia: "cn.ia"; ib: "cn.ib"; ic: "cn.ic"; id: "cn.id"; ie: "cn.ie"; if: "cn.if"; ig: "cn.ig"; ih: "cn.ih"; ii: "cn.ii"; ij: "cn.ij"; ik: "cn.ik"; il: "cn.il"; im: "cn.im"; in: "cn.in"; io: "cn.io"; ip: "cn.ip"; iq: "cn.iq"; ir: "cn.ir"; is: "cn.is"; it: "cn.it"; iu: "cn.iu"; iv: "cn.iv"; iw: "cn.iw"; ix: "cn.ix"; iy: "cn.iy"; iz: "cn.iz"; ja: "cn.ja"; jb: "cn.jb"; jc: "cn.jc"; jd: "cn.jd"; je: "cn.je"; jf: "cn.jf"; jg: "cn.jg"; jh: "cn.jh"; ji: "cn.ji"; jj: "cn.jj"; jk: "cn.jk"; jl: "cn.jl"; jm: "cn.jm"; jn: "cn.jn"; jo: "cn.jo"; jp: "cn.jp"; jq: "cn.jq"; jr: "cn.jr"; js: "cn.js"; jt: "cn.jt"; ju: "cn.ju"; jv: "cn.jv"; jw: "cn.jw"; jx: "cn.jx"; jy: "cn.jy"; jz: "cn.jz"; ka: "cn.ka"; kb: "cn.kb"; kc: "cn.kc"; kd: "cn.kd"; ke: "cn.ke"; kf: "cn.kf"; kg: "cn.kg"; kh: "cn.kh"; ki: "cn.ki"; kj: "cn.kj"; kk: "cn.kk"; kl: "cn.kl"; km: "cn.km"; kn: "cn.kn"; ko: "cn.ko"; kp: "cn.kp"; kq: "cn.kq"; kr: "cn.kr"; ks: "cn.ks"; kt: "cn.kt"; ku: "cn.ku"; kv: "cn.kv"; kw: "cn.kw"; kx: "cn.kx"; ky: "cn.ky"; kz: "cn.kz"; la: "cn.la"; lb: "cn.lb"; lc: "cn.lc"; ld: "cn.ld"; le: "cn.le"; lf: "cn.lf"; lg: "cn.lg"; lh: "cn.lh"; li: "cn.li"; lj: "cn.lj"; lk: "cn.lk"; ll: "cn.ll"; lm: "cn.lm"; ln: "cn.ln"; lo: "cn.lo"; lp: "cn.lp"; lq: "cn.lq"; lr: "cn.lr"; ls: "cn.ls"; lt: "cn.lt"; lu: "cn.lu"; lv: "cn.lv"; lw: "cn.lw"; lx: "cn.lx"; ly: "cn.ly"; lz: "cn.lz"; ma: "cn.ma"; mb: "cn.mb"; mc: "cn.mc"; md: "cn.md"; me: "cn.me"; mf: "cn.mf"; mg: "cn.mg"; mh: "cn.mh"; mi: "cn.mi"; mj: "cn.mj"; mk: "cn.mk"; ml: "cn.ml"; mm: "cn.mm"; mn: "cn.mn"; mo: "cn.mo"; mp: "cn.mp"; mq: "cn.mq"; mr: "cn.mr"; ms: "cn.ms"; mt: "cn.mt"; mu: "cn.mu"; mv: "cn.mv"; mw: "cn.mw"; mx: "cn.mx"; my: "cn.my"; mz: "cn.mz"; na: "cn.na"; nb: "cn.nb"; nc: "cn.nc"; nd: "cn.nd"; ne: "cn.ne"; nf: "cn.nf"; ng: "cn.ng"; nh: "cn.nh"; ni: "cn.ni"; nj: "cn.nj"; nk: "cn.nk"; nl: "cn.nl"; nm: "cn.nm"; nn: "cn.nn"; no: "cn.no"; np: "cn.np"; nq: "cn.nq"; nr: "cn.nr"; ns: "cn.ns"; nt: "cn.nt"; nu: "cn.nu"; nv: "cn.nv"; nw: "cn.nw"; nx: "cn.nx"; ny: "cn.ny"; nz: "cn.nz"; oa: "cn.oa"; ob: "cn.ob"; oc: "cn.oc"; od: "cn.od"; oe: "cn.oe"; of: "cn.of"; og: "cn.og"; oh: "cn.oh"; oi: "cn.oi"; oj: "cn.oj"; ok: "cn.ok"; ol: "cn.ol"; om: "cn.om"; on: "cn.on"; oo: "cn.oo"; op: "cn.op"; oq: "cn.oq"; or: "cn.or"; os: "cn.os"; ot: "cn.ot"; ou: "cn.ou"; ov: "cn.ov"; ow: "cn.ow"; ox: "cn.ox"; oy: "cn.oy"; oz: "cn.oz"; pa: "cn.pa"; pb: "cn.pb"; pc: "cn.pc"; pd: "cn.pd"; pe: "cn.pe"; pf: "cn.pf"; pg: "cn.pg"; ph: "cn.ph"; pi: "cn.pi"; pj: "cn.pj"; pk: "cn.pk"; pl: "cn.pl"; pm: "cn.pm"; pn: "cn.pn"; po: "cn.po"; pp: "cn.pp"; pq: "cn.pq"; pr: "cn.pr"; ps: "cn.ps"; pt: "cn.pt"; pu: "cn.pu"; pv: "cn.pv"; pw: "cn.pw"; px: "cn.px"; py: "cn.py"; pz: "cn.pz"; qa: "cn.qa"; qb: "cn.qb"; qc: "cn.qc"; qd: "cn.qd"; qe: "cn.qe"; qf: "cn.qf"; qg: "cn.qg"; qh: "cn.qh"; qi: "cn.qi"; qj: "cn.qj"; qk: "cn.qk"; ql: "cn.ql"; qm: "cn.qm"; qn: "cn.qn"; qo: "cn.qo"; qp: "cn.qp"; qq: "cn.qq"; qr: "cn.qr"; qs: "cn.qs"; qt: "cn.qt"; qu: "cn.qu"; qv: "cn.qv"; qw: "cn.qw"; qx: "cn.qx"; qy: "cn.qy"; qz: "cn.qz"; ra: "cn.ra"; rb: "cn.rb"; rc: "cn.rc"; rd: "cn.rd"; re: "cn.re"; rf: "cn.rf"; rg: "cn.rg"; rh: "cn.rh"; ri: "cn.ri"; rj: "cn.rj"; rk: "cn.rk"; rl: "cn.rl"; rm: "cn.rm"; rn: "cn.rn"; ro: "cn.ro"; rp: "cn.rp"; rq: "cn.rq"; rr: "cn.rr"; rs: "cn.rs"; rt: "cn.rt"; ru: "cn.ru"; rv: "cn.rv"; rw: "cn.rw"; rx: "cn.rx"; ry: "cn.ry"; rz: "cn.rz"; sa: "cn.sa"; sb: "cn.sb"; sc: "cn.sc"; sd: "cn.sd"; se: "cn.se"; sf: "cn.sf"; sg: "cn.sg"; sh: "cn.sh"; si: "cn.si"; sj: "cn.sj"; sk: "cn.sk"; sl: "cn.sl"; sm: "cn.sm"; sn: "cn.sn"; so: "cn.so"; sp: "cn.sp"; sq: "cn.sq"; sr: "cn.sr"; ss: "cn.ss"; st: "cn.st"; su: "cn.su"; sv: "cn.sv"; sw: "cn.sw"; sx: "cn.sx"; sy: "cn.sy"; sz: "cn.sz"; ta: "cn.ta"; tb: "cn.tb"; tc: "cn.tc"; td: "cn.td"; te: "cn.te"; tf: "cn.tf"; tg: "cn.tg"; th: "cn.th"; ti: "cn.ti"; tj: "cn.tj"; tk: "cn.tk"; tl: "cn.tl"; tm: "cn.tm"; tn: "cn.tn"; to: "cn.to"; tp: "cn.tp"; tq: "cn.tq"; tr: "cn.tr"; ts: "cn.ts"; tt: "cn.tt"; tu: "cn.tu"; tv: "cn.tv"; tw: "cn.tw"; tx: "cn.tx"; ty: "cn.ty"; tz: "cn.tz"; ua: "cn.ua"; ub: "cn.ub"; uc: "cn.uc"; ud: "cn.ud"; ue: "cn.ue"; uf: "cn.uf"; ug: "cn.ug"; uh: "cn.uh"; ui: "cn.ui"; uj: "cn.uj"; uk: "cn.uk"; ul: "cn.ul"; um: "cn.um"; un: "cn.un"; uo: "cn.uo"; up: "cn.up"; uq: "cn.uq"; ur: "cn.ur"; us: "cn.us"; ut: "cn.ut"; uu: "cn.uu"; uv: "cn.uv"; uw: "cn.uw"; ux: "cn.ux"; uy: "cn.uy"; uz: "cn.uz"; va: "cn.va"; vb: "cn.vb"; vc: "cn.vc"; vd: "cn.vd"; ve: "cn.ve"; vf: "cn.vf"; vg: "cn.vg"; vh: "cn.vh"; vi: "cn.vi"; vj: "cn.vj"; vk: "cn.vk"; vl: "cn.vl"; vm: "cn.vm"; vn: "cn.vn"; vo: "cn.vo"; vp: "cn.vp"; vq: "cn.vq"; vr: "cn.vr"; vs: "cn.vs"; vt: "cn.vt"; vu: "cn.vu"; vv: "cn.vv"; vw: "cn.vw"; vx: "cn.vx"; vy: "cn.vy"; vz: "cn.vz"; wa: "cn.wa"; wb: "cn.wb"; wc: "cn.wc"; wd: "cn.wd"; we: "cn.we"; wf: "cn.wf"; wg: "cn.wg"; wh: "cn.wh"; wi: "cn.wi"; wj: "cn.wj"; wk: "cn.wk"; wl: "cn.wl"; wm: "cn.wm"; wn: "cn.wn"; wo: "cn.wo"; wp: "cn.wp"; wq: "cn.wq"; wr: "cn.wr"; ws: "cn.ws"; wt: "cn.wt"; wu: "cn.wu"; wv: "cn.wv"; ww: "cn.ww"; wx: "cn.wx"; wy: "cn.wy"; wz: "cn.wz"; xa: "cn.xa"; xb: "cn.xb"; xc: "cn.xc"; xd: "cn.xd"; xe: "cn.xe"; xf: "cn.xf"; xg: "cn.xg"; xh: "cn.xh"; xi: "cn.xi"; xj: "cn.xj"; xk: "cn.xk"; xl: "cn.xl"; xm: "cn.xm"; xn: "cn.xn"; xo: "cn.xo"; xp: "cn.xp"; xq: "cn.xq"; xr: "cn.xr"; xs: "cn.xs"; xt: "cn.xt"; xu: "cn.xu"; xv: "cn.xv"; xw: "cn.xw"; xx: "cn.xx"; xy: "cn.xy"; xz: "cn.xz"; ya: "cn.ya"; yb: "cn.yb"; yc: "cn.yc"; yd: "cn.yd"; ye: "cn.ye"; yf: "cn.yf"; yg: "cn.yg"; yh: "cn.yh"; yi: "cn.yi"; yj: "cn.yj"; yk: "cn.yk"; yl: "cn.yl"; ym: "cn.ym"; yn: "cn.yn"; yo: "cn.yo"; yp: "cn.yp"; yq: "cn.yq"; yr: "cn.yr"; ys: "cn.ys"; yt: "cn.yt"; yu: "cn.yu"; yv: "cn.yv"; yw: "cn.yw"; yx: "cn.yx"; yy: "cn.yy"; yz: "cn.yz"; za: "cn.za"; zb: "cn.zb"; zc: "cn.zc"; zd: "cn.zd"; ze: "cn.ze"; zf: "cn.zf"; zg: "cn.zg"; zh: "cn.zh"; zi: "cn.zi"; zj: "cn.zj"; zk: "cn.zk"; zl: "cn.zl"; zm: "cn.zm"; zn: "cn.zn"; zo: "cn.zo"; zp: "cn.zp"; zq: "cn.zq"; zr: "cn.zr"; zs: "cn.zs"; zt: "cn.zt"; zu: "cn.zu"; zv: "cn.zv"; zw: "cn.zw"; zx: "cn.zx"; zy: "cn.zy"; zz: "cn.zz"; }; co: { aa: "co.aa"; ab: "co.ab"; ac: "co.ac"; ad: "co.ad"; ae: "co.ae"; af: "co.af"; ag: "co.ag"; ah: "co.ah"; ai: "co.ai"; aj: "co.aj"; ak: "co.ak"; al: "co.al"; am: "co.am"; an: "co.an"; ao: "co.ao"; ap: "co.ap"; aq: "co.aq"; ar: "co.ar"; as: "co.as"; at: "co.at"; au: "co.au"; av: "co.av"; aw: "co.aw"; ax: "co.ax"; ay: "co.ay"; az: "co.az"; ba: "co.ba"; bb: "co.bb"; bc: "co.bc"; bd: "co.bd"; be: "co.be"; bf: "co.bf"; bg: "co.bg"; bh: "co.bh"; bi: "co.bi"; bj: "co.bj"; bk: "co.bk"; bl: "co.bl"; bm: "co.bm"; bn: "co.bn"; bo: "co.bo"; bp: "co.bp"; bq: "co.bq"; br: "co.br"; bs: "co.bs"; bt: "co.bt"; bu: "co.bu"; bv: "co.bv"; bw: "co.bw"; bx: "co.bx"; by: "co.by"; bz: "co.bz"; ca: "co.ca"; cb: "co.cb"; cc: "co.cc"; cd: "co.cd"; ce: "co.ce"; cf: "co.cf"; cg: "co.cg"; ch: "co.ch"; ci: "co.ci"; cj: "co.cj"; ck: "co.ck"; cl: "co.cl"; cm: "co.cm"; cn: "co.cn"; co: "co.co"; cp: "co.cp"; cq: "co.cq"; cr: "co.cr"; cs: "co.cs"; ct: "co.ct"; cu: "co.cu"; cv: "co.cv"; cw: "co.cw"; cx: "co.cx"; cy: "co.cy"; cz: "co.cz"; da: "co.da"; db: "co.db"; dc: "co.dc"; dd: "co.dd"; de: "co.de"; df: "co.df"; dg: "co.dg"; dh: "co.dh"; di: "co.di"; dj: "co.dj"; dk: "co.dk"; dl: "co.dl"; dm: "co.dm"; dn: "co.dn"; do: "co.do"; dp: "co.dp"; dq: "co.dq"; dr: "co.dr"; ds: "co.ds"; dt: "co.dt"; du: "co.du"; dv: "co.dv"; dw: "co.dw"; dx: "co.dx"; dy: "co.dy"; dz: "co.dz"; ea: "co.ea"; eb: "co.eb"; ec: "co.ec"; ed: "co.ed"; ee: "co.ee"; ef: "co.ef"; eg: "co.eg"; eh: "co.eh"; ei: "co.ei"; ej: "co.ej"; ek: "co.ek"; el: "co.el"; em: "co.em"; en: "co.en"; eo: "co.eo"; ep: "co.ep"; eq: "co.eq"; er: "co.er"; es: "co.es"; et: "co.et"; eu: "co.eu"; ev: "co.ev"; ew: "co.ew"; ex: "co.ex"; ey: "co.ey"; ez: "co.ez"; fa: "co.fa"; fb: "co.fb"; fc: "co.fc"; fd: "co.fd"; fe: "co.fe"; ff: "co.ff"; fg: "co.fg"; fh: "co.fh"; fi: "co.fi"; fj: "co.fj"; fk: "co.fk"; fl: "co.fl"; fm: "co.fm"; fn: "co.fn"; fo: "co.fo"; fp: "co.fp"; fq: "co.fq"; fr: "co.fr"; fs: "co.fs"; ft: "co.ft"; fu: "co.fu"; fv: "co.fv"; fw: "co.fw"; fx: "co.fx"; fy: "co.fy"; fz: "co.fz"; ga: "co.ga"; gb: "co.gb"; gc: "co.gc"; gd: "co.gd"; ge: "co.ge"; gf: "co.gf"; gg: "co.gg"; gh: "co.gh"; gi: "co.gi"; gj: "co.gj"; gk: "co.gk"; gl: "co.gl"; gm: "co.gm"; gn: "co.gn"; go: "co.go"; gp: "co.gp"; gq: "co.gq"; gr: "co.gr"; gs: "co.gs"; gt: "co.gt"; gu: "co.gu"; gv: "co.gv"; gw: "co.gw"; gx: "co.gx"; gy: "co.gy"; gz: "co.gz"; ha: "co.ha"; hb: "co.hb"; hc: "co.hc"; hd: "co.hd"; he: "co.he"; hf: "co.hf"; hg: "co.hg"; hh: "co.hh"; hi: "co.hi"; hj: "co.hj"; hk: "co.hk"; hl: "co.hl"; hm: "co.hm"; hn: "co.hn"; ho: "co.ho"; hp: "co.hp"; hq: "co.hq"; hr: "co.hr"; hs: "co.hs"; ht: "co.ht"; hu: "co.hu"; hv: "co.hv"; hw: "co.hw"; hx: "co.hx"; hy: "co.hy"; hz: "co.hz"; ia: "co.ia"; ib: "co.ib"; ic: "co.ic"; id: "co.id"; ie: "co.ie"; if: "co.if"; ig: "co.ig"; ih: "co.ih"; ii: "co.ii"; ij: "co.ij"; ik: "co.ik"; il: "co.il"; im: "co.im"; in: "co.in"; io: "co.io"; ip: "co.ip"; iq: "co.iq"; ir: "co.ir"; is: "co.is"; it: "co.it"; iu: "co.iu"; iv: "co.iv"; iw: "co.iw"; ix: "co.ix"; iy: "co.iy"; iz: "co.iz"; ja: "co.ja"; jb: "co.jb"; jc: "co.jc"; jd: "co.jd"; je: "co.je"; jf: "co.jf"; jg: "co.jg"; jh: "co.jh"; ji: "co.ji"; jj: "co.jj"; jk: "co.jk"; jl: "co.jl"; jm: "co.jm"; jn: "co.jn"; jo: "co.jo"; jp: "co.jp"; jq: "co.jq"; jr: "co.jr"; js: "co.js"; jt: "co.jt"; ju: "co.ju"; jv: "co.jv"; jw: "co.jw"; jx: "co.jx"; jy: "co.jy"; jz: "co.jz"; ka: "co.ka"; kb: "co.kb"; kc: "co.kc"; kd: "co.kd"; ke: "co.ke"; kf: "co.kf"; kg: "co.kg"; kh: "co.kh"; ki: "co.ki"; kj: "co.kj"; kk: "co.kk"; kl: "co.kl"; km: "co.km"; kn: "co.kn"; ko: "co.ko"; kp: "co.kp"; kq: "co.kq"; kr: "co.kr"; ks: "co.ks"; kt: "co.kt"; ku: "co.ku"; kv: "co.kv"; kw: "co.kw"; kx: "co.kx"; ky: "co.ky"; kz: "co.kz"; la: "co.la"; lb: "co.lb"; lc: "co.lc"; ld: "co.ld"; le: "co.le"; lf: "co.lf"; lg: "co.lg"; lh: "co.lh"; li: "co.li"; lj: "co.lj"; lk: "co.lk"; ll: "co.ll"; lm: "co.lm"; ln: "co.ln"; lo: "co.lo"; lp: "co.lp"; lq: "co.lq"; lr: "co.lr"; ls: "co.ls"; lt: "co.lt"; lu: "co.lu"; lv: "co.lv"; lw: "co.lw"; lx: "co.lx"; ly: "co.ly"; lz: "co.lz"; ma: "co.ma"; mb: "co.mb"; mc: "co.mc"; md: "co.md"; me: "co.me"; mf: "co.mf"; mg: "co.mg"; mh: "co.mh"; mi: "co.mi"; mj: "co.mj"; mk: "co.mk"; ml: "co.ml"; mm: "co.mm"; mn: "co.mn"; mo: "co.mo"; mp: "co.mp"; mq: "co.mq"; mr: "co.mr"; ms: "co.ms"; mt: "co.mt"; mu: "co.mu"; mv: "co.mv"; mw: "co.mw"; mx: "co.mx"; my: "co.my"; mz: "co.mz"; na: "co.na"; nb: "co.nb"; nc: "co.nc"; nd: "co.nd"; ne: "co.ne"; nf: "co.nf"; ng: "co.ng"; nh: "co.nh"; ni: "co.ni"; nj: "co.nj"; nk: "co.nk"; nl: "co.nl"; nm: "co.nm"; nn: "co.nn"; no: "co.no"; np: "co.np"; nq: "co.nq"; nr: "co.nr"; ns: "co.ns"; nt: "co.nt"; nu: "co.nu"; nv: "co.nv"; nw: "co.nw"; nx: "co.nx"; ny: "co.ny"; nz: "co.nz"; oa: "co.oa"; ob: "co.ob"; oc: "co.oc"; od: "co.od"; oe: "co.oe"; of: "co.of"; og: "co.og"; oh: "co.oh"; oi: "co.oi"; oj: "co.oj"; ok: "co.ok"; ol: "co.ol"; om: "co.om"; on: "co.on"; oo: "co.oo"; op: "co.op"; oq: "co.oq"; or: "co.or"; os: "co.os"; ot: "co.ot"; ou: "co.ou"; ov: "co.ov"; ow: "co.ow"; ox: "co.ox"; oy: "co.oy"; oz: "co.oz"; pa: "co.pa"; pb: "co.pb"; pc: "co.pc"; pd: "co.pd"; pe: "co.pe"; pf: "co.pf"; pg: "co.pg"; ph: "co.ph"; pi: "co.pi"; pj: "co.pj"; pk: "co.pk"; pl: "co.pl"; pm: "co.pm"; pn: "co.pn"; po: "co.po"; pp: "co.pp"; pq: "co.pq"; pr: "co.pr"; ps: "co.ps"; pt: "co.pt"; pu: "co.pu"; pv: "co.pv"; pw: "co.pw"; px: "co.px"; py: "co.py"; pz: "co.pz"; qa: "co.qa"; qb: "co.qb"; qc: "co.qc"; qd: "co.qd"; qe: "co.qe"; qf: "co.qf"; qg: "co.qg"; qh: "co.qh"; qi: "co.qi"; qj: "co.qj"; qk: "co.qk"; ql: "co.ql"; qm: "co.qm"; qn: "co.qn"; qo: "co.qo"; qp: "co.qp"; qq: "co.qq"; qr: "co.qr"; qs: "co.qs"; qt: "co.qt"; qu: "co.qu"; qv: "co.qv"; qw: "co.qw"; qx: "co.qx"; qy: "co.qy"; qz: "co.qz"; ra: "co.ra"; rb: "co.rb"; rc: "co.rc"; rd: "co.rd"; re: "co.re"; rf: "co.rf"; rg: "co.rg"; rh: "co.rh"; ri: "co.ri"; rj: "co.rj"; rk: "co.rk"; rl: "co.rl"; rm: "co.rm"; rn: "co.rn"; ro: "co.ro"; rp: "co.rp"; rq: "co.rq"; rr: "co.rr"; rs: "co.rs"; rt: "co.rt"; ru: "co.ru"; rv: "co.rv"; rw: "co.rw"; rx: "co.rx"; ry: "co.ry"; rz: "co.rz"; sa: "co.sa"; sb: "co.sb"; sc: "co.sc"; sd: "co.sd"; se: "co.se"; sf: "co.sf"; sg: "co.sg"; sh: "co.sh"; si: "co.si"; sj: "co.sj"; sk: "co.sk"; sl: "co.sl"; sm: "co.sm"; sn: "co.sn"; so: "co.so"; sp: "co.sp"; sq: "co.sq"; sr: "co.sr"; ss: "co.ss"; st: "co.st"; su: "co.su"; sv: "co.sv"; sw: "co.sw"; sx: "co.sx"; sy: "co.sy"; sz: "co.sz"; ta: "co.ta"; tb: "co.tb"; tc: "co.tc"; td: "co.td"; te: "co.te"; tf: "co.tf"; tg: "co.tg"; th: "co.th"; ti: "co.ti"; tj: "co.tj"; tk: "co.tk"; tl: "co.tl"; tm: "co.tm"; tn: "co.tn"; to: "co.to"; tp: "co.tp"; tq: "co.tq"; tr: "co.tr"; ts: "co.ts"; tt: "co.tt"; tu: "co.tu"; tv: "co.tv"; tw: "co.tw"; tx: "co.tx"; ty: "co.ty"; tz: "co.tz"; ua: "co.ua"; ub: "co.ub"; uc: "co.uc"; ud: "co.ud"; ue: "co.ue"; uf: "co.uf"; ug: "co.ug"; uh: "co.uh"; ui: "co.ui"; uj: "co.uj"; uk: "co.uk"; ul: "co.ul"; um: "co.um"; un: "co.un"; uo: "co.uo"; up: "co.up"; uq: "co.uq"; ur: "co.ur"; us: "co.us"; ut: "co.ut"; uu: "co.uu"; uv: "co.uv"; uw: "co.uw"; ux: "co.ux"; uy: "co.uy"; uz: "co.uz"; va: "co.va"; vb: "co.vb"; vc: "co.vc"; vd: "co.vd"; ve: "co.ve"; vf: "co.vf"; vg: "co.vg"; vh: "co.vh"; vi: "co.vi"; vj: "co.vj"; vk: "co.vk"; vl: "co.vl"; vm: "co.vm"; vn: "co.vn"; vo: "co.vo"; vp: "co.vp"; vq: "co.vq"; vr: "co.vr"; vs: "co.vs"; vt: "co.vt"; vu: "co.vu"; vv: "co.vv"; vw: "co.vw"; vx: "co.vx"; vy: "co.vy"; vz: "co.vz"; wa: "co.wa"; wb: "co.wb"; wc: "co.wc"; wd: "co.wd"; we: "co.we"; wf: "co.wf"; wg: "co.wg"; wh: "co.wh"; wi: "co.wi"; wj: "co.wj"; wk: "co.wk"; wl: "co.wl"; wm: "co.wm"; wn: "co.wn"; wo: "co.wo"; wp: "co.wp"; wq: "co.wq"; wr: "co.wr"; ws: "co.ws"; wt: "co.wt"; wu: "co.wu"; wv: "co.wv"; ww: "co.ww"; wx: "co.wx"; wy: "co.wy"; wz: "co.wz"; xa: "co.xa"; xb: "co.xb"; xc: "co.xc"; xd: "co.xd"; xe: "co.xe"; xf: "co.xf"; xg: "co.xg"; xh: "co.xh"; xi: "co.xi"; xj: "co.xj"; xk: "co.xk"; xl: "co.xl"; xm: "co.xm"; xn: "co.xn"; xo: "co.xo"; xp: "co.xp"; xq: "co.xq"; xr: "co.xr"; xs: "co.xs"; xt: "co.xt"; xu: "co.xu"; xv: "co.xv"; xw: "co.xw"; xx: "co.xx"; xy: "co.xy"; xz: "co.xz"; ya: "co.ya"; yb: "co.yb"; yc: "co.yc"; yd: "co.yd"; ye: "co.ye"; yf: "co.yf"; yg: "co.yg"; yh: "co.yh"; yi: "co.yi"; yj: "co.yj"; yk: "co.yk"; yl: "co.yl"; ym: "co.ym"; yn: "co.yn"; yo: "co.yo"; yp: "co.yp"; yq: "co.yq"; yr: "co.yr"; ys: "co.ys"; yt: "co.yt"; yu: "co.yu"; yv: "co.yv"; yw: "co.yw"; yx: "co.yx"; yy: "co.yy"; yz: "co.yz"; za: "co.za"; zb: "co.zb"; zc: "co.zc"; zd: "co.zd"; ze: "co.ze"; zf: "co.zf"; zg: "co.zg"; zh: "co.zh"; zi: "co.zi"; zj: "co.zj"; zk: "co.zk"; zl: "co.zl"; zm: "co.zm"; zn: "co.zn"; zo: "co.zo"; zp: "co.zp"; zq: "co.zq"; zr: "co.zr"; zs: "co.zs"; zt: "co.zt"; zu: "co.zu"; zv: "co.zv"; zw: "co.zw"; zx: "co.zx"; zy: "co.zy"; zz: "co.zz"; }; cp: { aa: "cp.aa"; ab: "cp.ab"; ac: "cp.ac"; ad: "cp.ad"; ae: "cp.ae"; af: "cp.af"; ag: "cp.ag"; ah: "cp.ah"; ai: "cp.ai"; aj: "cp.aj"; ak: "cp.ak"; al: "cp.al"; am: "cp.am"; an: "cp.an"; ao: "cp.ao"; ap: "cp.ap"; aq: "cp.aq"; ar: "cp.ar"; as: "cp.as"; at: "cp.at"; au: "cp.au"; av: "cp.av"; aw: "cp.aw"; ax: "cp.ax"; ay: "cp.ay"; az: "cp.az"; ba: "cp.ba"; bb: "cp.bb"; bc: "cp.bc"; bd: "cp.bd"; be: "cp.be"; bf: "cp.bf"; bg: "cp.bg"; bh: "cp.bh"; bi: "cp.bi"; bj: "cp.bj"; bk: "cp.bk"; bl: "cp.bl"; bm: "cp.bm"; bn: "cp.bn"; bo: "cp.bo"; bp: "cp.bp"; bq: "cp.bq"; br: "cp.br"; bs: "cp.bs"; bt: "cp.bt"; bu: "cp.bu"; bv: "cp.bv"; bw: "cp.bw"; bx: "cp.bx"; by: "cp.by"; bz: "cp.bz"; ca: "cp.ca"; cb: "cp.cb"; cc: "cp.cc"; cd: "cp.cd"; ce: "cp.ce"; cf: "cp.cf"; cg: "cp.cg"; ch: "cp.ch"; ci: "cp.ci"; cj: "cp.cj"; ck: "cp.ck"; cl: "cp.cl"; cm: "cp.cm"; cn: "cp.cn"; co: "cp.co"; cp: "cp.cp"; cq: "cp.cq"; cr: "cp.cr"; cs: "cp.cs"; ct: "cp.ct"; cu: "cp.cu"; cv: "cp.cv"; cw: "cp.cw"; cx: "cp.cx"; cy: "cp.cy"; cz: "cp.cz"; da: "cp.da"; db: "cp.db"; dc: "cp.dc"; dd: "cp.dd"; de: "cp.de"; df: "cp.df"; dg: "cp.dg"; dh: "cp.dh"; di: "cp.di"; dj: "cp.dj"; dk: "cp.dk"; dl: "cp.dl"; dm: "cp.dm"; dn: "cp.dn"; do: "cp.do"; dp: "cp.dp"; dq: "cp.dq"; dr: "cp.dr"; ds: "cp.ds"; dt: "cp.dt"; du: "cp.du"; dv: "cp.dv"; dw: "cp.dw"; dx: "cp.dx"; dy: "cp.dy"; dz: "cp.dz"; ea: "cp.ea"; eb: "cp.eb"; ec: "cp.ec"; ed: "cp.ed"; ee: "cp.ee"; ef: "cp.ef"; eg: "cp.eg"; eh: "cp.eh"; ei: "cp.ei"; ej: "cp.ej"; ek: "cp.ek"; el: "cp.el"; em: "cp.em"; en: "cp.en"; eo: "cp.eo"; ep: "cp.ep"; eq: "cp.eq"; er: "cp.er"; es: "cp.es"; et: "cp.et"; eu: "cp.eu"; ev: "cp.ev"; ew: "cp.ew"; ex: "cp.ex"; ey: "cp.ey"; ez: "cp.ez"; fa: "cp.fa"; fb: "cp.fb"; fc: "cp.fc"; fd: "cp.fd"; fe: "cp.fe"; ff: "cp.ff"; fg: "cp.fg"; fh: "cp.fh"; fi: "cp.fi"; fj: "cp.fj"; fk: "cp.fk"; fl: "cp.fl"; fm: "cp.fm"; fn: "cp.fn"; fo: "cp.fo"; fp: "cp.fp"; fq: "cp.fq"; fr: "cp.fr"; fs: "cp.fs"; ft: "cp.ft"; fu: "cp.fu"; fv: "cp.fv"; fw: "cp.fw"; fx: "cp.fx"; fy: "cp.fy"; fz: "cp.fz"; ga: "cp.ga"; gb: "cp.gb"; gc: "cp.gc"; gd: "cp.gd"; ge: "cp.ge"; gf: "cp.gf"; gg: "cp.gg"; gh: "cp.gh"; gi: "cp.gi"; gj: "cp.gj"; gk: "cp.gk"; gl: "cp.gl"; gm: "cp.gm"; gn: "cp.gn"; go: "cp.go"; gp: "cp.gp"; gq: "cp.gq"; gr: "cp.gr"; gs: "cp.gs"; gt: "cp.gt"; gu: "cp.gu"; gv: "cp.gv"; gw: "cp.gw"; gx: "cp.gx"; gy: "cp.gy"; gz: "cp.gz"; ha: "cp.ha"; hb: "cp.hb"; hc: "cp.hc"; hd: "cp.hd"; he: "cp.he"; hf: "cp.hf"; hg: "cp.hg"; hh: "cp.hh"; hi: "cp.hi"; hj: "cp.hj"; hk: "cp.hk"; hl: "cp.hl"; hm: "cp.hm"; hn: "cp.hn"; ho: "cp.ho"; hp: "cp.hp"; hq: "cp.hq"; hr: "cp.hr"; hs: "cp.hs"; ht: "cp.ht"; hu: "cp.hu"; hv: "cp.hv"; hw: "cp.hw"; hx: "cp.hx"; hy: "cp.hy"; hz: "cp.hz"; ia: "cp.ia"; ib: "cp.ib"; ic: "cp.ic"; id: "cp.id"; ie: "cp.ie"; if: "cp.if"; ig: "cp.ig"; ih: "cp.ih"; ii: "cp.ii"; ij: "cp.ij"; ik: "cp.ik"; il: "cp.il"; im: "cp.im"; in: "cp.in"; io: "cp.io"; ip: "cp.ip"; iq: "cp.iq"; ir: "cp.ir"; is: "cp.is"; it: "cp.it"; iu: "cp.iu"; iv: "cp.iv"; iw: "cp.iw"; ix: "cp.ix"; iy: "cp.iy"; iz: "cp.iz"; ja: "cp.ja"; jb: "cp.jb"; jc: "cp.jc"; jd: "cp.jd"; je: "cp.je"; jf: "cp.jf"; jg: "cp.jg"; jh: "cp.jh"; ji: "cp.ji"; jj: "cp.jj"; jk: "cp.jk"; jl: "cp.jl"; jm: "cp.jm"; jn: "cp.jn"; jo: "cp.jo"; jp: "cp.jp"; jq: "cp.jq"; jr: "cp.jr"; js: "cp.js"; jt: "cp.jt"; ju: "cp.ju"; jv: "cp.jv"; jw: "cp.jw"; jx: "cp.jx"; jy: "cp.jy"; jz: "cp.jz"; ka: "cp.ka"; kb: "cp.kb"; kc: "cp.kc"; kd: "cp.kd"; ke: "cp.ke"; kf: "cp.kf"; kg: "cp.kg"; kh: "cp.kh"; ki: "cp.ki"; kj: "cp.kj"; kk: "cp.kk"; kl: "cp.kl"; km: "cp.km"; kn: "cp.kn"; ko: "cp.ko"; kp: "cp.kp"; kq: "cp.kq"; kr: "cp.kr"; ks: "cp.ks"; kt: "cp.kt"; ku: "cp.ku"; kv: "cp.kv"; kw: "cp.kw"; kx: "cp.kx"; ky: "cp.ky"; kz: "cp.kz"; la: "cp.la"; lb: "cp.lb"; lc: "cp.lc"; ld: "cp.ld"; le: "cp.le"; lf: "cp.lf"; lg: "cp.lg"; lh: "cp.lh"; li: "cp.li"; lj: "cp.lj"; lk: "cp.lk"; ll: "cp.ll"; lm: "cp.lm"; ln: "cp.ln"; lo: "cp.lo"; lp: "cp.lp"; lq: "cp.lq"; lr: "cp.lr"; ls: "cp.ls"; lt: "cp.lt"; lu: "cp.lu"; lv: "cp.lv"; lw: "cp.lw"; lx: "cp.lx"; ly: "cp.ly"; lz: "cp.lz"; ma: "cp.ma"; mb: "cp.mb"; mc: "cp.mc"; md: "cp.md"; me: "cp.me"; mf: "cp.mf"; mg: "cp.mg"; mh: "cp.mh"; mi: "cp.mi"; mj: "cp.mj"; mk: "cp.mk"; ml: "cp.ml"; mm: "cp.mm"; mn: "cp.mn"; mo: "cp.mo"; mp: "cp.mp"; mq: "cp.mq"; mr: "cp.mr"; ms: "cp.ms"; mt: "cp.mt"; mu: "cp.mu"; mv: "cp.mv"; mw: "cp.mw"; mx: "cp.mx"; my: "cp.my"; mz: "cp.mz"; na: "cp.na"; nb: "cp.nb"; nc: "cp.nc"; nd: "cp.nd"; ne: "cp.ne"; nf: "cp.nf"; ng: "cp.ng"; nh: "cp.nh"; ni: "cp.ni"; nj: "cp.nj"; nk: "cp.nk"; nl: "cp.nl"; nm: "cp.nm"; nn: "cp.nn"; no: "cp.no"; np: "cp.np"; nq: "cp.nq"; nr: "cp.nr"; ns: "cp.ns"; nt: "cp.nt"; nu: "cp.nu"; nv: "cp.nv"; nw: "cp.nw"; nx: "cp.nx"; ny: "cp.ny"; nz: "cp.nz"; oa: "cp.oa"; ob: "cp.ob"; oc: "cp.oc"; od: "cp.od"; oe: "cp.oe"; of: "cp.of"; og: "cp.og"; oh: "cp.oh"; oi: "cp.oi"; oj: "cp.oj"; ok: "cp.ok"; ol: "cp.ol"; om: "cp.om"; on: "cp.on"; oo: "cp.oo"; op: "cp.op"; oq: "cp.oq"; or: "cp.or"; os: "cp.os"; ot: "cp.ot"; ou: "cp.ou"; ov: "cp.ov"; ow: "cp.ow"; ox: "cp.ox"; oy: "cp.oy"; oz: "cp.oz"; pa: "cp.pa"; pb: "cp.pb"; pc: "cp.pc"; pd: "cp.pd"; pe: "cp.pe"; pf: "cp.pf"; pg: "cp.pg"; ph: "cp.ph"; pi: "cp.pi"; pj: "cp.pj"; pk: "cp.pk"; pl: "cp.pl"; pm: "cp.pm"; pn: "cp.pn"; po: "cp.po"; pp: "cp.pp"; pq: "cp.pq"; pr: "cp.pr"; ps: "cp.ps"; pt: "cp.pt"; pu: "cp.pu"; pv: "cp.pv"; pw: "cp.pw"; px: "cp.px"; py: "cp.py"; pz: "cp.pz"; qa: "cp.qa"; qb: "cp.qb"; qc: "cp.qc"; qd: "cp.qd"; qe: "cp.qe"; qf: "cp.qf"; qg: "cp.qg"; qh: "cp.qh"; qi: "cp.qi"; qj: "cp.qj"; qk: "cp.qk"; ql: "cp.ql"; qm: "cp.qm"; qn: "cp.qn"; qo: "cp.qo"; qp: "cp.qp"; qq: "cp.qq"; qr: "cp.qr"; qs: "cp.qs"; qt: "cp.qt"; qu: "cp.qu"; qv: "cp.qv"; qw: "cp.qw"; qx: "cp.qx"; qy: "cp.qy"; qz: "cp.qz"; ra: "cp.ra"; rb: "cp.rb"; rc: "cp.rc"; rd: "cp.rd"; re: "cp.re"; rf: "cp.rf"; rg: "cp.rg"; rh: "cp.rh"; ri: "cp.ri"; rj: "cp.rj"; rk: "cp.rk"; rl: "cp.rl"; rm: "cp.rm"; rn: "cp.rn"; ro: "cp.ro"; rp: "cp.rp"; rq: "cp.rq"; rr: "cp.rr"; rs: "cp.rs"; rt: "cp.rt"; ru: "cp.ru"; rv: "cp.rv"; rw: "cp.rw"; rx: "cp.rx"; ry: "cp.ry"; rz: "cp.rz"; sa: "cp.sa"; sb: "cp.sb"; sc: "cp.sc"; sd: "cp.sd"; se: "cp.se"; sf: "cp.sf"; sg: "cp.sg"; sh: "cp.sh"; si: "cp.si"; sj: "cp.sj"; sk: "cp.sk"; sl: "cp.sl"; sm: "cp.sm"; sn: "cp.sn"; so: "cp.so"; sp: "cp.sp"; sq: "cp.sq"; sr: "cp.sr"; ss: "cp.ss"; st: "cp.st"; su: "cp.su"; sv: "cp.sv"; sw: "cp.sw"; sx: "cp.sx"; sy: "cp.sy"; sz: "cp.sz"; ta: "cp.ta"; tb: "cp.tb"; tc: "cp.tc"; td: "cp.td"; te: "cp.te"; tf: "cp.tf"; tg: "cp.tg"; th: "cp.th"; ti: "cp.ti"; tj: "cp.tj"; tk: "cp.tk"; tl: "cp.tl"; tm: "cp.tm"; tn: "cp.tn"; to: "cp.to"; tp: "cp.tp"; tq: "cp.tq"; tr: "cp.tr"; ts: "cp.ts"; tt: "cp.tt"; tu: "cp.tu"; tv: "cp.tv"; tw: "cp.tw"; tx: "cp.tx"; ty: "cp.ty"; tz: "cp.tz"; ua: "cp.ua"; ub: "cp.ub"; uc: "cp.uc"; ud: "cp.ud"; ue: "cp.ue"; uf: "cp.uf"; ug: "cp.ug"; uh: "cp.uh"; ui: "cp.ui"; uj: "cp.uj"; uk: "cp.uk"; ul: "cp.ul"; um: "cp.um"; un: "cp.un"; uo: "cp.uo"; up: "cp.up"; uq: "cp.uq"; ur: "cp.ur"; us: "cp.us"; ut: "cp.ut"; uu: "cp.uu"; uv: "cp.uv"; uw: "cp.uw"; ux: "cp.ux"; uy: "cp.uy"; uz: "cp.uz"; va: "cp.va"; vb: "cp.vb"; vc: "cp.vc"; vd: "cp.vd"; ve: "cp.ve"; vf: "cp.vf"; vg: "cp.vg"; vh: "cp.vh"; vi: "cp.vi"; vj: "cp.vj"; vk: "cp.vk"; vl: "cp.vl"; vm: "cp.vm"; vn: "cp.vn"; vo: "cp.vo"; vp: "cp.vp"; vq: "cp.vq"; vr: "cp.vr"; vs: "cp.vs"; vt: "cp.vt"; vu: "cp.vu"; vv: "cp.vv"; vw: "cp.vw"; vx: "cp.vx"; vy: "cp.vy"; vz: "cp.vz"; wa: "cp.wa"; wb: "cp.wb"; wc: "cp.wc"; wd: "cp.wd"; we: "cp.we"; wf: "cp.wf"; wg: "cp.wg"; wh: "cp.wh"; wi: "cp.wi"; wj: "cp.wj"; wk: "cp.wk"; wl: "cp.wl"; wm: "cp.wm"; wn: "cp.wn"; wo: "cp.wo"; wp: "cp.wp"; wq: "cp.wq"; wr: "cp.wr"; ws: "cp.ws"; wt: "cp.wt"; wu: "cp.wu"; wv: "cp.wv"; ww: "cp.ww"; wx: "cp.wx"; wy: "cp.wy"; wz: "cp.wz"; xa: "cp.xa"; xb: "cp.xb"; xc: "cp.xc"; xd: "cp.xd"; xe: "cp.xe"; xf: "cp.xf"; xg: "cp.xg"; xh: "cp.xh"; xi: "cp.xi"; xj: "cp.xj"; xk: "cp.xk"; xl: "cp.xl"; xm: "cp.xm"; xn: "cp.xn"; xo: "cp.xo"; xp: "cp.xp"; xq: "cp.xq"; xr: "cp.xr"; xs: "cp.xs"; xt: "cp.xt"; xu: "cp.xu"; xv: "cp.xv"; xw: "cp.xw"; xx: "cp.xx"; xy: "cp.xy"; xz: "cp.xz"; ya: "cp.ya"; yb: "cp.yb"; yc: "cp.yc"; yd: "cp.yd"; ye: "cp.ye"; yf: "cp.yf"; yg: "cp.yg"; yh: "cp.yh"; yi: "cp.yi"; yj: "cp.yj"; yk: "cp.yk"; yl: "cp.yl"; ym: "cp.ym"; yn: "cp.yn"; yo: "cp.yo"; yp: "cp.yp"; yq: "cp.yq"; yr: "cp.yr"; ys: "cp.ys"; yt: "cp.yt"; yu: "cp.yu"; yv: "cp.yv"; yw: "cp.yw"; yx: "cp.yx"; yy: "cp.yy"; yz: "cp.yz"; za: "cp.za"; zb: "cp.zb"; zc: "cp.zc"; zd: "cp.zd"; ze: "cp.ze"; zf: "cp.zf"; zg: "cp.zg"; zh: "cp.zh"; zi: "cp.zi"; zj: "cp.zj"; zk: "cp.zk"; zl: "cp.zl"; zm: "cp.zm"; zn: "cp.zn"; zo: "cp.zo"; zp: "cp.zp"; zq: "cp.zq"; zr: "cp.zr"; zs: "cp.zs"; zt: "cp.zt"; zu: "cp.zu"; zv: "cp.zv"; zw: "cp.zw"; zx: "cp.zx"; zy: "cp.zy"; zz: "cp.zz"; }; cq: { aa: "cq.aa"; ab: "cq.ab"; ac: "cq.ac"; ad: "cq.ad"; ae: "cq.ae"; af: "cq.af"; ag: "cq.ag"; ah: "cq.ah"; ai: "cq.ai"; aj: "cq.aj"; ak: "cq.ak"; al: "cq.al"; am: "cq.am"; an: "cq.an"; ao: "cq.ao"; ap: "cq.ap"; aq: "cq.aq"; ar: "cq.ar"; as: "cq.as"; at: "cq.at"; au: "cq.au"; av: "cq.av"; aw: "cq.aw"; ax: "cq.ax"; ay: "cq.ay"; az: "cq.az"; ba: "cq.ba"; bb: "cq.bb"; bc: "cq.bc"; bd: "cq.bd"; be: "cq.be"; bf: "cq.bf"; bg: "cq.bg"; bh: "cq.bh"; bi: "cq.bi"; bj: "cq.bj"; bk: "cq.bk"; bl: "cq.bl"; bm: "cq.bm"; bn: "cq.bn"; bo: "cq.bo"; bp: "cq.bp"; bq: "cq.bq"; br: "cq.br"; bs: "cq.bs"; bt: "cq.bt"; bu: "cq.bu"; bv: "cq.bv"; bw: "cq.bw"; bx: "cq.bx"; by: "cq.by"; bz: "cq.bz"; ca: "cq.ca"; cb: "cq.cb"; cc: "cq.cc"; cd: "cq.cd"; ce: "cq.ce"; cf: "cq.cf"; cg: "cq.cg"; ch: "cq.ch"; ci: "cq.ci"; cj: "cq.cj"; ck: "cq.ck"; cl: "cq.cl"; cm: "cq.cm"; cn: "cq.cn"; co: "cq.co"; cp: "cq.cp"; cq: "cq.cq"; cr: "cq.cr"; cs: "cq.cs"; ct: "cq.ct"; cu: "cq.cu"; cv: "cq.cv"; cw: "cq.cw"; cx: "cq.cx"; cy: "cq.cy"; cz: "cq.cz"; da: "cq.da"; db: "cq.db"; dc: "cq.dc"; dd: "cq.dd"; de: "cq.de"; df: "cq.df"; dg: "cq.dg"; dh: "cq.dh"; di: "cq.di"; dj: "cq.dj"; dk: "cq.dk"; dl: "cq.dl"; dm: "cq.dm"; dn: "cq.dn"; do: "cq.do"; dp: "cq.dp"; dq: "cq.dq"; dr: "cq.dr"; ds: "cq.ds"; dt: "cq.dt"; du: "cq.du"; dv: "cq.dv"; dw: "cq.dw"; dx: "cq.dx"; dy: "cq.dy"; dz: "cq.dz"; ea: "cq.ea"; eb: "cq.eb"; ec: "cq.ec"; ed: "cq.ed"; ee: "cq.ee"; ef: "cq.ef"; eg: "cq.eg"; eh: "cq.eh"; ei: "cq.ei"; ej: "cq.ej"; ek: "cq.ek"; el: "cq.el"; em: "cq.em"; en: "cq.en"; eo: "cq.eo"; ep: "cq.ep"; eq: "cq.eq"; er: "cq.er"; es: "cq.es"; et: "cq.et"; eu: "cq.eu"; ev: "cq.ev"; ew: "cq.ew"; ex: "cq.ex"; ey: "cq.ey"; ez: "cq.ez"; fa: "cq.fa"; fb: "cq.fb"; fc: "cq.fc"; fd: "cq.fd"; fe: "cq.fe"; ff: "cq.ff"; fg: "cq.fg"; fh: "cq.fh"; fi: "cq.fi"; fj: "cq.fj"; fk: "cq.fk"; fl: "cq.fl"; fm: "cq.fm"; fn: "cq.fn"; fo: "cq.fo"; fp: "cq.fp"; fq: "cq.fq"; fr: "cq.fr"; fs: "cq.fs"; ft: "cq.ft"; fu: "cq.fu"; fv: "cq.fv"; fw: "cq.fw"; fx: "cq.fx"; fy: "cq.fy"; fz: "cq.fz"; ga: "cq.ga"; gb: "cq.gb"; gc: "cq.gc"; gd: "cq.gd"; ge: "cq.ge"; gf: "cq.gf"; gg: "cq.gg"; gh: "cq.gh"; gi: "cq.gi"; gj: "cq.gj"; gk: "cq.gk"; gl: "cq.gl"; gm: "cq.gm"; gn: "cq.gn"; go: "cq.go"; gp: "cq.gp"; gq: "cq.gq"; gr: "cq.gr"; gs: "cq.gs"; gt: "cq.gt"; gu: "cq.gu"; gv: "cq.gv"; gw: "cq.gw"; gx: "cq.gx"; gy: "cq.gy"; gz: "cq.gz"; ha: "cq.ha"; hb: "cq.hb"; hc: "cq.hc"; hd: "cq.hd"; he: "cq.he"; hf: "cq.hf"; hg: "cq.hg"; hh: "cq.hh"; hi: "cq.hi"; hj: "cq.hj"; hk: "cq.hk"; hl: "cq.hl"; hm: "cq.hm"; hn: "cq.hn"; ho: "cq.ho"; hp: "cq.hp"; hq: "cq.hq"; hr: "cq.hr"; hs: "cq.hs"; ht: "cq.ht"; hu: "cq.hu"; hv: "cq.hv"; hw: "cq.hw"; hx: "cq.hx"; hy: "cq.hy"; hz: "cq.hz"; ia: "cq.ia"; ib: "cq.ib"; ic: "cq.ic"; id: "cq.id"; ie: "cq.ie"; if: "cq.if"; ig: "cq.ig"; ih: "cq.ih"; ii: "cq.ii"; ij: "cq.ij"; ik: "cq.ik"; il: "cq.il"; im: "cq.im"; in: "cq.in"; io: "cq.io"; ip: "cq.ip"; iq: "cq.iq"; ir: "cq.ir"; is: "cq.is"; it: "cq.it"; iu: "cq.iu"; iv: "cq.iv"; iw: "cq.iw"; ix: "cq.ix"; iy: "cq.iy"; iz: "cq.iz"; ja: "cq.ja"; jb: "cq.jb"; jc: "cq.jc"; jd: "cq.jd"; je: "cq.je"; jf: "cq.jf"; jg: "cq.jg"; jh: "cq.jh"; ji: "cq.ji"; jj: "cq.jj"; jk: "cq.jk"; jl: "cq.jl"; jm: "cq.jm"; jn: "cq.jn"; jo: "cq.jo"; jp: "cq.jp"; jq: "cq.jq"; jr: "cq.jr"; js: "cq.js"; jt: "cq.jt"; ju: "cq.ju"; jv: "cq.jv"; jw: "cq.jw"; jx: "cq.jx"; jy: "cq.jy"; jz: "cq.jz"; ka: "cq.ka"; kb: "cq.kb"; kc: "cq.kc"; kd: "cq.kd"; ke: "cq.ke"; kf: "cq.kf"; kg: "cq.kg"; kh: "cq.kh"; ki: "cq.ki"; kj: "cq.kj"; kk: "cq.kk"; kl: "cq.kl"; km: "cq.km"; kn: "cq.kn"; ko: "cq.ko"; kp: "cq.kp"; kq: "cq.kq"; kr: "cq.kr"; ks: "cq.ks"; kt: "cq.kt"; ku: "cq.ku"; kv: "cq.kv"; kw: "cq.kw"; kx: "cq.kx"; ky: "cq.ky"; kz: "cq.kz"; la: "cq.la"; lb: "cq.lb"; lc: "cq.lc"; ld: "cq.ld"; le: "cq.le"; lf: "cq.lf"; lg: "cq.lg"; lh: "cq.lh"; li: "cq.li"; lj: "cq.lj"; lk: "cq.lk"; ll: "cq.ll"; lm: "cq.lm"; ln: "cq.ln"; lo: "cq.lo"; lp: "cq.lp"; lq: "cq.lq"; lr: "cq.lr"; ls: "cq.ls"; lt: "cq.lt"; lu: "cq.lu"; lv: "cq.lv"; lw: "cq.lw"; lx: "cq.lx"; ly: "cq.ly"; lz: "cq.lz"; ma: "cq.ma"; mb: "cq.mb"; mc: "cq.mc"; md: "cq.md"; me: "cq.me"; mf: "cq.mf"; mg: "cq.mg"; mh: "cq.mh"; mi: "cq.mi"; mj: "cq.mj"; mk: "cq.mk"; ml: "cq.ml"; mm: "cq.mm"; mn: "cq.mn"; mo: "cq.mo"; mp: "cq.mp"; mq: "cq.mq"; mr: "cq.mr"; ms: "cq.ms"; mt: "cq.mt"; mu: "cq.mu"; mv: "cq.mv"; mw: "cq.mw"; mx: "cq.mx"; my: "cq.my"; mz: "cq.mz"; na: "cq.na"; nb: "cq.nb"; nc: "cq.nc"; nd: "cq.nd"; ne: "cq.ne"; nf: "cq.nf"; ng: "cq.ng"; nh: "cq.nh"; ni: "cq.ni"; nj: "cq.nj"; nk: "cq.nk"; nl: "cq.nl"; nm: "cq.nm"; nn: "cq.nn"; no: "cq.no"; np: "cq.np"; nq: "cq.nq"; nr: "cq.nr"; ns: "cq.ns"; nt: "cq.nt"; nu: "cq.nu"; nv: "cq.nv"; nw: "cq.nw"; nx: "cq.nx"; ny: "cq.ny"; nz: "cq.nz"; oa: "cq.oa"; ob: "cq.ob"; oc: "cq.oc"; od: "cq.od"; oe: "cq.oe"; of: "cq.of"; og: "cq.og"; oh: "cq.oh"; oi: "cq.oi"; oj: "cq.oj"; ok: "cq.ok"; ol: "cq.ol"; om: "cq.om"; on: "cq.on"; oo: "cq.oo"; op: "cq.op"; oq: "cq.oq"; or: "cq.or"; os: "cq.os"; ot: "cq.ot"; ou: "cq.ou"; ov: "cq.ov"; ow: "cq.ow"; ox: "cq.ox"; oy: "cq.oy"; oz: "cq.oz"; pa: "cq.pa"; pb: "cq.pb"; pc: "cq.pc"; pd: "cq.pd"; pe: "cq.pe"; pf: "cq.pf"; pg: "cq.pg"; ph: "cq.ph"; pi: "cq.pi"; pj: "cq.pj"; pk: "cq.pk"; pl: "cq.pl"; pm: "cq.pm"; pn: "cq.pn"; po: "cq.po"; pp: "cq.pp"; pq: "cq.pq"; pr: "cq.pr"; ps: "cq.ps"; pt: "cq.pt"; pu: "cq.pu"; pv: "cq.pv"; pw: "cq.pw"; px: "cq.px"; py: "cq.py"; pz: "cq.pz"; qa: "cq.qa"; qb: "cq.qb"; qc: "cq.qc"; qd: "cq.qd"; qe: "cq.qe"; qf: "cq.qf"; qg: "cq.qg"; qh: "cq.qh"; qi: "cq.qi"; qj: "cq.qj"; qk: "cq.qk"; ql: "cq.ql"; qm: "cq.qm"; qn: "cq.qn"; qo: "cq.qo"; qp: "cq.qp"; qq: "cq.qq"; qr: "cq.qr"; qs: "cq.qs"; qt: "cq.qt"; qu: "cq.qu"; qv: "cq.qv"; qw: "cq.qw"; qx: "cq.qx"; qy: "cq.qy"; qz: "cq.qz"; ra: "cq.ra"; rb: "cq.rb"; rc: "cq.rc"; rd: "cq.rd"; re: "cq.re"; rf: "cq.rf"; rg: "cq.rg"; rh: "cq.rh"; ri: "cq.ri"; rj: "cq.rj"; rk: "cq.rk"; rl: "cq.rl"; rm: "cq.rm"; rn: "cq.rn"; ro: "cq.ro"; rp: "cq.rp"; rq: "cq.rq"; rr: "cq.rr"; rs: "cq.rs"; rt: "cq.rt"; ru: "cq.ru"; rv: "cq.rv"; rw: "cq.rw"; rx: "cq.rx"; ry: "cq.ry"; rz: "cq.rz"; sa: "cq.sa"; sb: "cq.sb"; sc: "cq.sc"; sd: "cq.sd"; se: "cq.se"; sf: "cq.sf"; sg: "cq.sg"; sh: "cq.sh"; si: "cq.si"; sj: "cq.sj"; sk: "cq.sk"; sl: "cq.sl"; sm: "cq.sm"; sn: "cq.sn"; so: "cq.so"; sp: "cq.sp"; sq: "cq.sq"; sr: "cq.sr"; ss: "cq.ss"; st: "cq.st"; su: "cq.su"; sv: "cq.sv"; sw: "cq.sw"; sx: "cq.sx"; sy: "cq.sy"; sz: "cq.sz"; ta: "cq.ta"; tb: "cq.tb"; tc: "cq.tc"; td: "cq.td"; te: "cq.te"; tf: "cq.tf"; tg: "cq.tg"; th: "cq.th"; ti: "cq.ti"; tj: "cq.tj"; tk: "cq.tk"; tl: "cq.tl"; tm: "cq.tm"; tn: "cq.tn"; to: "cq.to"; tp: "cq.tp"; tq: "cq.tq"; tr: "cq.tr"; ts: "cq.ts"; tt: "cq.tt"; tu: "cq.tu"; tv: "cq.tv"; tw: "cq.tw"; tx: "cq.tx"; ty: "cq.ty"; tz: "cq.tz"; ua: "cq.ua"; ub: "cq.ub"; uc: "cq.uc"; ud: "cq.ud"; ue: "cq.ue"; uf: "cq.uf"; ug: "cq.ug"; uh: "cq.uh"; ui: "cq.ui"; uj: "cq.uj"; uk: "cq.uk"; ul: "cq.ul"; um: "cq.um"; un: "cq.un"; uo: "cq.uo"; up: "cq.up"; uq: "cq.uq"; ur: "cq.ur"; us: "cq.us"; ut: "cq.ut"; uu: "cq.uu"; uv: "cq.uv"; uw: "cq.uw"; ux: "cq.ux"; uy: "cq.uy"; uz: "cq.uz"; va: "cq.va"; vb: "cq.vb"; vc: "cq.vc"; vd: "cq.vd"; ve: "cq.ve"; vf: "cq.vf"; vg: "cq.vg"; vh: "cq.vh"; vi: "cq.vi"; vj: "cq.vj"; vk: "cq.vk"; vl: "cq.vl"; vm: "cq.vm"; vn: "cq.vn"; vo: "cq.vo"; vp: "cq.vp"; vq: "cq.vq"; vr: "cq.vr"; vs: "cq.vs"; vt: "cq.vt"; vu: "cq.vu"; vv: "cq.vv"; vw: "cq.vw"; vx: "cq.vx"; vy: "cq.vy"; vz: "cq.vz"; wa: "cq.wa"; wb: "cq.wb"; wc: "cq.wc"; wd: "cq.wd"; we: "cq.we"; wf: "cq.wf"; wg: "cq.wg"; wh: "cq.wh"; wi: "cq.wi"; wj: "cq.wj"; wk: "cq.wk"; wl: "cq.wl"; wm: "cq.wm"; wn: "cq.wn"; wo: "cq.wo"; wp: "cq.wp"; wq: "cq.wq"; wr: "cq.wr"; ws: "cq.ws"; wt: "cq.wt"; wu: "cq.wu"; wv: "cq.wv"; ww: "cq.ww"; wx: "cq.wx"; wy: "cq.wy"; wz: "cq.wz"; xa: "cq.xa"; xb: "cq.xb"; xc: "cq.xc"; xd: "cq.xd"; xe: "cq.xe"; xf: "cq.xf"; xg: "cq.xg"; xh: "cq.xh"; xi: "cq.xi"; xj: "cq.xj"; xk: "cq.xk"; xl: "cq.xl"; xm: "cq.xm"; xn: "cq.xn"; xo: "cq.xo"; xp: "cq.xp"; xq: "cq.xq"; xr: "cq.xr"; xs: "cq.xs"; xt: "cq.xt"; xu: "cq.xu"; xv: "cq.xv"; xw: "cq.xw"; xx: "cq.xx"; xy: "cq.xy"; xz: "cq.xz"; ya: "cq.ya"; yb: "cq.yb"; yc: "cq.yc"; yd: "cq.yd"; ye: "cq.ye"; yf: "cq.yf"; yg: "cq.yg"; yh: "cq.yh"; yi: "cq.yi"; yj: "cq.yj"; yk: "cq.yk"; yl: "cq.yl"; ym: "cq.ym"; yn: "cq.yn"; yo: "cq.yo"; yp: "cq.yp"; yq: "cq.yq"; yr: "cq.yr"; ys: "cq.ys"; yt: "cq.yt"; yu: "cq.yu"; yv: "cq.yv"; yw: "cq.yw"; yx: "cq.yx"; yy: "cq.yy"; yz: "cq.yz"; za: "cq.za"; zb: "cq.zb"; zc: "cq.zc"; zd: "cq.zd"; ze: "cq.ze"; zf: "cq.zf"; zg: "cq.zg"; zh: "cq.zh"; zi: "cq.zi"; zj: "cq.zj"; zk: "cq.zk"; zl: "cq.zl"; zm: "cq.zm"; zn: "cq.zn"; zo: "cq.zo"; zp: "cq.zp"; zq: "cq.zq"; zr: "cq.zr"; zs: "cq.zs"; zt: "cq.zt"; zu: "cq.zu"; zv: "cq.zv"; zw: "cq.zw"; zx: "cq.zx"; zy: "cq.zy"; zz: "cq.zz"; }; cr: { aa: "cr.aa"; ab: "cr.ab"; ac: "cr.ac"; ad: "cr.ad"; ae: "cr.ae"; af: "cr.af"; ag: "cr.ag"; ah: "cr.ah"; ai: "cr.ai"; aj: "cr.aj"; ak: "cr.ak"; al: "cr.al"; am: "cr.am"; an: "cr.an"; ao: "cr.ao"; ap: "cr.ap"; aq: "cr.aq"; ar: "cr.ar"; as: "cr.as"; at: "cr.at"; au: "cr.au"; av: "cr.av"; aw: "cr.aw"; ax: "cr.ax"; ay: "cr.ay"; az: "cr.az"; ba: "cr.ba"; bb: "cr.bb"; bc: "cr.bc"; bd: "cr.bd"; be: "cr.be"; bf: "cr.bf"; bg: "cr.bg"; bh: "cr.bh"; bi: "cr.bi"; bj: "cr.bj"; bk: "cr.bk"; bl: "cr.bl"; bm: "cr.bm"; bn: "cr.bn"; bo: "cr.bo"; bp: "cr.bp"; bq: "cr.bq"; br: "cr.br"; bs: "cr.bs"; bt: "cr.bt"; bu: "cr.bu"; bv: "cr.bv"; bw: "cr.bw"; bx: "cr.bx"; by: "cr.by"; bz: "cr.bz"; ca: "cr.ca"; cb: "cr.cb"; cc: "cr.cc"; cd: "cr.cd"; ce: "cr.ce"; cf: "cr.cf"; cg: "cr.cg"; ch: "cr.ch"; ci: "cr.ci"; cj: "cr.cj"; ck: "cr.ck"; cl: "cr.cl"; cm: "cr.cm"; cn: "cr.cn"; co: "cr.co"; cp: "cr.cp"; cq: "cr.cq"; cr: "cr.cr"; cs: "cr.cs"; ct: "cr.ct"; cu: "cr.cu"; cv: "cr.cv"; cw: "cr.cw"; cx: "cr.cx"; cy: "cr.cy"; cz: "cr.cz"; da: "cr.da"; db: "cr.db"; dc: "cr.dc"; dd: "cr.dd"; de: "cr.de"; df: "cr.df"; dg: "cr.dg"; dh: "cr.dh"; di: "cr.di"; dj: "cr.dj"; dk: "cr.dk"; dl: "cr.dl"; dm: "cr.dm"; dn: "cr.dn"; do: "cr.do"; dp: "cr.dp"; dq: "cr.dq"; dr: "cr.dr"; ds: "cr.ds"; dt: "cr.dt"; du: "cr.du"; dv: "cr.dv"; dw: "cr.dw"; dx: "cr.dx"; dy: "cr.dy"; dz: "cr.dz"; ea: "cr.ea"; eb: "cr.eb"; ec: "cr.ec"; ed: "cr.ed"; ee: "cr.ee"; ef: "cr.ef"; eg: "cr.eg"; eh: "cr.eh"; ei: "cr.ei"; ej: "cr.ej"; ek: "cr.ek"; el: "cr.el"; em: "cr.em"; en: "cr.en"; eo: "cr.eo"; ep: "cr.ep"; eq: "cr.eq"; er: "cr.er"; es: "cr.es"; et: "cr.et"; eu: "cr.eu"; ev: "cr.ev"; ew: "cr.ew"; ex: "cr.ex"; ey: "cr.ey"; ez: "cr.ez"; fa: "cr.fa"; fb: "cr.fb"; fc: "cr.fc"; fd: "cr.fd"; fe: "cr.fe"; ff: "cr.ff"; fg: "cr.fg"; fh: "cr.fh"; fi: "cr.fi"; fj: "cr.fj"; fk: "cr.fk"; fl: "cr.fl"; fm: "cr.fm"; fn: "cr.fn"; fo: "cr.fo"; fp: "cr.fp"; fq: "cr.fq"; fr: "cr.fr"; fs: "cr.fs"; ft: "cr.ft"; fu: "cr.fu"; fv: "cr.fv"; fw: "cr.fw"; fx: "cr.fx"; fy: "cr.fy"; fz: "cr.fz"; ga: "cr.ga"; gb: "cr.gb"; gc: "cr.gc"; gd: "cr.gd"; ge: "cr.ge"; gf: "cr.gf"; gg: "cr.gg"; gh: "cr.gh"; gi: "cr.gi"; gj: "cr.gj"; gk: "cr.gk"; gl: "cr.gl"; gm: "cr.gm"; gn: "cr.gn"; go: "cr.go"; gp: "cr.gp"; gq: "cr.gq"; gr: "cr.gr"; gs: "cr.gs"; gt: "cr.gt"; gu: "cr.gu"; gv: "cr.gv"; gw: "cr.gw"; gx: "cr.gx"; gy: "cr.gy"; gz: "cr.gz"; ha: "cr.ha"; hb: "cr.hb"; hc: "cr.hc"; hd: "cr.hd"; he: "cr.he"; hf: "cr.hf"; hg: "cr.hg"; hh: "cr.hh"; hi: "cr.hi"; hj: "cr.hj"; hk: "cr.hk"; hl: "cr.hl"; hm: "cr.hm"; hn: "cr.hn"; ho: "cr.ho"; hp: "cr.hp"; hq: "cr.hq"; hr: "cr.hr"; hs: "cr.hs"; ht: "cr.ht"; hu: "cr.hu"; hv: "cr.hv"; hw: "cr.hw"; hx: "cr.hx"; hy: "cr.hy"; hz: "cr.hz"; ia: "cr.ia"; ib: "cr.ib"; ic: "cr.ic"; id: "cr.id"; ie: "cr.ie"; if: "cr.if"; ig: "cr.ig"; ih: "cr.ih"; ii: "cr.ii"; ij: "cr.ij"; ik: "cr.ik"; il: "cr.il"; im: "cr.im"; in: "cr.in"; io: "cr.io"; ip: "cr.ip"; iq: "cr.iq"; ir: "cr.ir"; is: "cr.is"; it: "cr.it"; iu: "cr.iu"; iv: "cr.iv"; iw: "cr.iw"; ix: "cr.ix"; iy: "cr.iy"; iz: "cr.iz"; ja: "cr.ja"; jb: "cr.jb"; jc: "cr.jc"; jd: "cr.jd"; je: "cr.je"; jf: "cr.jf"; jg: "cr.jg"; jh: "cr.jh"; ji: "cr.ji"; jj: "cr.jj"; jk: "cr.jk"; jl: "cr.jl"; jm: "cr.jm"; jn: "cr.jn"; jo: "cr.jo"; jp: "cr.jp"; jq: "cr.jq"; jr: "cr.jr"; js: "cr.js"; jt: "cr.jt"; ju: "cr.ju"; jv: "cr.jv"; jw: "cr.jw"; jx: "cr.jx"; jy: "cr.jy"; jz: "cr.jz"; ka: "cr.ka"; kb: "cr.kb"; kc: "cr.kc"; kd: "cr.kd"; ke: "cr.ke"; kf: "cr.kf"; kg: "cr.kg"; kh: "cr.kh"; ki: "cr.ki"; kj: "cr.kj"; kk: "cr.kk"; kl: "cr.kl"; km: "cr.km"; kn: "cr.kn"; ko: "cr.ko"; kp: "cr.kp"; kq: "cr.kq"; kr: "cr.kr"; ks: "cr.ks"; kt: "cr.kt"; ku: "cr.ku"; kv: "cr.kv"; kw: "cr.kw"; kx: "cr.kx"; ky: "cr.ky"; kz: "cr.kz"; la: "cr.la"; lb: "cr.lb"; lc: "cr.lc"; ld: "cr.ld"; le: "cr.le"; lf: "cr.lf"; lg: "cr.lg"; lh: "cr.lh"; li: "cr.li"; lj: "cr.lj"; lk: "cr.lk"; ll: "cr.ll"; lm: "cr.lm"; ln: "cr.ln"; lo: "cr.lo"; lp: "cr.lp"; lq: "cr.lq"; lr: "cr.lr"; ls: "cr.ls"; lt: "cr.lt"; lu: "cr.lu"; lv: "cr.lv"; lw: "cr.lw"; lx: "cr.lx"; ly: "cr.ly"; lz: "cr.lz"; ma: "cr.ma"; mb: "cr.mb"; mc: "cr.mc"; md: "cr.md"; me: "cr.me"; mf: "cr.mf"; mg: "cr.mg"; mh: "cr.mh"; mi: "cr.mi"; mj: "cr.mj"; mk: "cr.mk"; ml: "cr.ml"; mm: "cr.mm"; mn: "cr.mn"; mo: "cr.mo"; mp: "cr.mp"; mq: "cr.mq"; mr: "cr.mr"; ms: "cr.ms"; mt: "cr.mt"; mu: "cr.mu"; mv: "cr.mv"; mw: "cr.mw"; mx: "cr.mx"; my: "cr.my"; mz: "cr.mz"; na: "cr.na"; nb: "cr.nb"; nc: "cr.nc"; nd: "cr.nd"; ne: "cr.ne"; nf: "cr.nf"; ng: "cr.ng"; nh: "cr.nh"; ni: "cr.ni"; nj: "cr.nj"; nk: "cr.nk"; nl: "cr.nl"; nm: "cr.nm"; nn: "cr.nn"; no: "cr.no"; np: "cr.np"; nq: "cr.nq"; nr: "cr.nr"; ns: "cr.ns"; nt: "cr.nt"; nu: "cr.nu"; nv: "cr.nv"; nw: "cr.nw"; nx: "cr.nx"; ny: "cr.ny"; nz: "cr.nz"; oa: "cr.oa"; ob: "cr.ob"; oc: "cr.oc"; od: "cr.od"; oe: "cr.oe"; of: "cr.of"; og: "cr.og"; oh: "cr.oh"; oi: "cr.oi"; oj: "cr.oj"; ok: "cr.ok"; ol: "cr.ol"; om: "cr.om"; on: "cr.on"; oo: "cr.oo"; op: "cr.op"; oq: "cr.oq"; or: "cr.or"; os: "cr.os"; ot: "cr.ot"; ou: "cr.ou"; ov: "cr.ov"; ow: "cr.ow"; ox: "cr.ox"; oy: "cr.oy"; oz: "cr.oz"; pa: "cr.pa"; pb: "cr.pb"; pc: "cr.pc"; pd: "cr.pd"; pe: "cr.pe"; pf: "cr.pf"; pg: "cr.pg"; ph: "cr.ph"; pi: "cr.pi"; pj: "cr.pj"; pk: "cr.pk"; pl: "cr.pl"; pm: "cr.pm"; pn: "cr.pn"; po: "cr.po"; pp: "cr.pp"; pq: "cr.pq"; pr: "cr.pr"; ps: "cr.ps"; pt: "cr.pt"; pu: "cr.pu"; pv: "cr.pv"; pw: "cr.pw"; px: "cr.px"; py: "cr.py"; pz: "cr.pz"; qa: "cr.qa"; qb: "cr.qb"; qc: "cr.qc"; qd: "cr.qd"; qe: "cr.qe"; qf: "cr.qf"; qg: "cr.qg"; qh: "cr.qh"; qi: "cr.qi"; qj: "cr.qj"; qk: "cr.qk"; ql: "cr.ql"; qm: "cr.qm"; qn: "cr.qn"; qo: "cr.qo"; qp: "cr.qp"; qq: "cr.qq"; qr: "cr.qr"; qs: "cr.qs"; qt: "cr.qt"; qu: "cr.qu"; qv: "cr.qv"; qw: "cr.qw"; qx: "cr.qx"; qy: "cr.qy"; qz: "cr.qz"; ra: "cr.ra"; rb: "cr.rb"; rc: "cr.rc"; rd: "cr.rd"; re: "cr.re"; rf: "cr.rf"; rg: "cr.rg"; rh: "cr.rh"; ri: "cr.ri"; rj: "cr.rj"; rk: "cr.rk"; rl: "cr.rl"; rm: "cr.rm"; rn: "cr.rn"; ro: "cr.ro"; rp: "cr.rp"; rq: "cr.rq"; rr: "cr.rr"; rs: "cr.rs"; rt: "cr.rt"; ru: "cr.ru"; rv: "cr.rv"; rw: "cr.rw"; rx: "cr.rx"; ry: "cr.ry"; rz: "cr.rz"; sa: "cr.sa"; sb: "cr.sb"; sc: "cr.sc"; sd: "cr.sd"; se: "cr.se"; sf: "cr.sf"; sg: "cr.sg"; sh: "cr.sh"; si: "cr.si"; sj: "cr.sj"; sk: "cr.sk"; sl: "cr.sl"; sm: "cr.sm"; sn: "cr.sn"; so: "cr.so"; sp: "cr.sp"; sq: "cr.sq"; sr: "cr.sr"; ss: "cr.ss"; st: "cr.st"; su: "cr.su"; sv: "cr.sv"; sw: "cr.sw"; sx: "cr.sx"; sy: "cr.sy"; sz: "cr.sz"; ta: "cr.ta"; tb: "cr.tb"; tc: "cr.tc"; td: "cr.td"; te: "cr.te"; tf: "cr.tf"; tg: "cr.tg"; th: "cr.th"; ti: "cr.ti"; tj: "cr.tj"; tk: "cr.tk"; tl: "cr.tl"; tm: "cr.tm"; tn: "cr.tn"; to: "cr.to"; tp: "cr.tp"; tq: "cr.tq"; tr: "cr.tr"; ts: "cr.ts"; tt: "cr.tt"; tu: "cr.tu"; tv: "cr.tv"; tw: "cr.tw"; tx: "cr.tx"; ty: "cr.ty"; tz: "cr.tz"; ua: "cr.ua"; ub: "cr.ub"; uc: "cr.uc"; ud: "cr.ud"; ue: "cr.ue"; uf: "cr.uf"; ug: "cr.ug"; uh: "cr.uh"; ui: "cr.ui"; uj: "cr.uj"; uk: "cr.uk"; ul: "cr.ul"; um: "cr.um"; un: "cr.un"; uo: "cr.uo"; up: "cr.up"; uq: "cr.uq"; ur: "cr.ur"; us: "cr.us"; ut: "cr.ut"; uu: "cr.uu"; uv: "cr.uv"; uw: "cr.uw"; ux: "cr.ux"; uy: "cr.uy"; uz: "cr.uz"; va: "cr.va"; vb: "cr.vb"; vc: "cr.vc"; vd: "cr.vd"; ve: "cr.ve"; vf: "cr.vf"; vg: "cr.vg"; vh: "cr.vh"; vi: "cr.vi"; vj: "cr.vj"; vk: "cr.vk"; vl: "cr.vl"; vm: "cr.vm"; vn: "cr.vn"; vo: "cr.vo"; vp: "cr.vp"; vq: "cr.vq"; vr: "cr.vr"; vs: "cr.vs"; vt: "cr.vt"; vu: "cr.vu"; vv: "cr.vv"; vw: "cr.vw"; vx: "cr.vx"; vy: "cr.vy"; vz: "cr.vz"; wa: "cr.wa"; wb: "cr.wb"; wc: "cr.wc"; wd: "cr.wd"; we: "cr.we"; wf: "cr.wf"; wg: "cr.wg"; wh: "cr.wh"; wi: "cr.wi"; wj: "cr.wj"; wk: "cr.wk"; wl: "cr.wl"; wm: "cr.wm"; wn: "cr.wn"; wo: "cr.wo"; wp: "cr.wp"; wq: "cr.wq"; wr: "cr.wr"; ws: "cr.ws"; wt: "cr.wt"; wu: "cr.wu"; wv: "cr.wv"; ww: "cr.ww"; wx: "cr.wx"; wy: "cr.wy"; wz: "cr.wz"; xa: "cr.xa"; xb: "cr.xb"; xc: "cr.xc"; xd: "cr.xd"; xe: "cr.xe"; xf: "cr.xf"; xg: "cr.xg"; xh: "cr.xh"; xi: "cr.xi"; xj: "cr.xj"; xk: "cr.xk"; xl: "cr.xl"; xm: "cr.xm"; xn: "cr.xn"; xo: "cr.xo"; xp: "cr.xp"; xq: "cr.xq"; xr: "cr.xr"; xs: "cr.xs"; xt: "cr.xt"; xu: "cr.xu"; xv: "cr.xv"; xw: "cr.xw"; xx: "cr.xx"; xy: "cr.xy"; xz: "cr.xz"; ya: "cr.ya"; yb: "cr.yb"; yc: "cr.yc"; yd: "cr.yd"; ye: "cr.ye"; yf: "cr.yf"; yg: "cr.yg"; yh: "cr.yh"; yi: "cr.yi"; yj: "cr.yj"; yk: "cr.yk"; yl: "cr.yl"; ym: "cr.ym"; yn: "cr.yn"; yo: "cr.yo"; yp: "cr.yp"; yq: "cr.yq"; yr: "cr.yr"; ys: "cr.ys"; yt: "cr.yt"; yu: "cr.yu"; yv: "cr.yv"; yw: "cr.yw"; yx: "cr.yx"; yy: "cr.yy"; yz: "cr.yz"; za: "cr.za"; zb: "cr.zb"; zc: "cr.zc"; zd: "cr.zd"; ze: "cr.ze"; zf: "cr.zf"; zg: "cr.zg"; zh: "cr.zh"; zi: "cr.zi"; zj: "cr.zj"; zk: "cr.zk"; zl: "cr.zl"; zm: "cr.zm"; zn: "cr.zn"; zo: "cr.zo"; zp: "cr.zp"; zq: "cr.zq"; zr: "cr.zr"; zs: "cr.zs"; zt: "cr.zt"; zu: "cr.zu"; zv: "cr.zv"; zw: "cr.zw"; zx: "cr.zx"; zy: "cr.zy"; zz: "cr.zz"; }; cs: { aa: "cs.aa"; ab: "cs.ab"; ac: "cs.ac"; ad: "cs.ad"; ae: "cs.ae"; af: "cs.af"; ag: "cs.ag"; ah: "cs.ah"; ai: "cs.ai"; aj: "cs.aj"; ak: "cs.ak"; al: "cs.al"; am: "cs.am"; an: "cs.an"; ao: "cs.ao"; ap: "cs.ap"; aq: "cs.aq"; ar: "cs.ar"; as: "cs.as"; at: "cs.at"; au: "cs.au"; av: "cs.av"; aw: "cs.aw"; ax: "cs.ax"; ay: "cs.ay"; az: "cs.az"; ba: "cs.ba"; bb: "cs.bb"; bc: "cs.bc"; bd: "cs.bd"; be: "cs.be"; bf: "cs.bf"; bg: "cs.bg"; bh: "cs.bh"; bi: "cs.bi"; bj: "cs.bj"; bk: "cs.bk"; bl: "cs.bl"; bm: "cs.bm"; bn: "cs.bn"; bo: "cs.bo"; bp: "cs.bp"; bq: "cs.bq"; br: "cs.br"; bs: "cs.bs"; bt: "cs.bt"; bu: "cs.bu"; bv: "cs.bv"; bw: "cs.bw"; bx: "cs.bx"; by: "cs.by"; bz: "cs.bz"; ca: "cs.ca"; cb: "cs.cb"; cc: "cs.cc"; cd: "cs.cd"; ce: "cs.ce"; cf: "cs.cf"; cg: "cs.cg"; ch: "cs.ch"; ci: "cs.ci"; cj: "cs.cj"; ck: "cs.ck"; cl: "cs.cl"; cm: "cs.cm"; cn: "cs.cn"; co: "cs.co"; cp: "cs.cp"; cq: "cs.cq"; cr: "cs.cr"; cs: "cs.cs"; ct: "cs.ct"; cu: "cs.cu"; cv: "cs.cv"; cw: "cs.cw"; cx: "cs.cx"; cy: "cs.cy"; cz: "cs.cz"; da: "cs.da"; db: "cs.db"; dc: "cs.dc"; dd: "cs.dd"; de: "cs.de"; df: "cs.df"; dg: "cs.dg"; dh: "cs.dh"; di: "cs.di"; dj: "cs.dj"; dk: "cs.dk"; dl: "cs.dl"; dm: "cs.dm"; dn: "cs.dn"; do: "cs.do"; dp: "cs.dp"; dq: "cs.dq"; dr: "cs.dr"; ds: "cs.ds"; dt: "cs.dt"; du: "cs.du"; dv: "cs.dv"; dw: "cs.dw"; dx: "cs.dx"; dy: "cs.dy"; dz: "cs.dz"; ea: "cs.ea"; eb: "cs.eb"; ec: "cs.ec"; ed: "cs.ed"; ee: "cs.ee"; ef: "cs.ef"; eg: "cs.eg"; eh: "cs.eh"; ei: "cs.ei"; ej: "cs.ej"; ek: "cs.ek"; el: "cs.el"; em: "cs.em"; en: "cs.en"; eo: "cs.eo"; ep: "cs.ep"; eq: "cs.eq"; er: "cs.er"; es: "cs.es"; et: "cs.et"; eu: "cs.eu"; ev: "cs.ev"; ew: "cs.ew"; ex: "cs.ex"; ey: "cs.ey"; ez: "cs.ez"; fa: "cs.fa"; fb: "cs.fb"; fc: "cs.fc"; fd: "cs.fd"; fe: "cs.fe"; ff: "cs.ff"; fg: "cs.fg"; fh: "cs.fh"; fi: "cs.fi"; fj: "cs.fj"; fk: "cs.fk"; fl: "cs.fl"; fm: "cs.fm"; fn: "cs.fn"; fo: "cs.fo"; fp: "cs.fp"; fq: "cs.fq"; fr: "cs.fr"; fs: "cs.fs"; ft: "cs.ft"; fu: "cs.fu"; fv: "cs.fv"; fw: "cs.fw"; fx: "cs.fx"; fy: "cs.fy"; fz: "cs.fz"; ga: "cs.ga"; gb: "cs.gb"; gc: "cs.gc"; gd: "cs.gd"; ge: "cs.ge"; gf: "cs.gf"; gg: "cs.gg"; gh: "cs.gh"; gi: "cs.gi"; gj: "cs.gj"; gk: "cs.gk"; gl: "cs.gl"; gm: "cs.gm"; gn: "cs.gn"; go: "cs.go"; gp: "cs.gp"; gq: "cs.gq"; gr: "cs.gr"; gs: "cs.gs"; gt: "cs.gt"; gu: "cs.gu"; gv: "cs.gv"; gw: "cs.gw"; gx: "cs.gx"; gy: "cs.gy"; gz: "cs.gz"; ha: "cs.ha"; hb: "cs.hb"; hc: "cs.hc"; hd: "cs.hd"; he: "cs.he"; hf: "cs.hf"; hg: "cs.hg"; hh: "cs.hh"; hi: "cs.hi"; hj: "cs.hj"; hk: "cs.hk"; hl: "cs.hl"; hm: "cs.hm"; hn: "cs.hn"; ho: "cs.ho"; hp: "cs.hp"; hq: "cs.hq"; hr: "cs.hr"; hs: "cs.hs"; ht: "cs.ht"; hu: "cs.hu"; hv: "cs.hv"; hw: "cs.hw"; hx: "cs.hx"; hy: "cs.hy"; hz: "cs.hz"; ia: "cs.ia"; ib: "cs.ib"; ic: "cs.ic"; id: "cs.id"; ie: "cs.ie"; if: "cs.if"; ig: "cs.ig"; ih: "cs.ih"; ii: "cs.ii"; ij: "cs.ij"; ik: "cs.ik"; il: "cs.il"; im: "cs.im"; in: "cs.in"; io: "cs.io"; ip: "cs.ip"; iq: "cs.iq"; ir: "cs.ir"; is: "cs.is"; it: "cs.it"; iu: "cs.iu"; iv: "cs.iv"; iw: "cs.iw"; ix: "cs.ix"; iy: "cs.iy"; iz: "cs.iz"; ja: "cs.ja"; jb: "cs.jb"; jc: "cs.jc"; jd: "cs.jd"; je: "cs.je"; jf: "cs.jf"; jg: "cs.jg"; jh: "cs.jh"; ji: "cs.ji"; jj: "cs.jj"; jk: "cs.jk"; jl: "cs.jl"; jm: "cs.jm"; jn: "cs.jn"; jo: "cs.jo"; jp: "cs.jp"; jq: "cs.jq"; jr: "cs.jr"; js: "cs.js"; jt: "cs.jt"; ju: "cs.ju"; jv: "cs.jv"; jw: "cs.jw"; jx: "cs.jx"; jy: "cs.jy"; jz: "cs.jz"; ka: "cs.ka"; kb: "cs.kb"; kc: "cs.kc"; kd: "cs.kd"; ke: "cs.ke"; kf: "cs.kf"; kg: "cs.kg"; kh: "cs.kh"; ki: "cs.ki"; kj: "cs.kj"; kk: "cs.kk"; kl: "cs.kl"; km: "cs.km"; kn: "cs.kn"; ko: "cs.ko"; kp: "cs.kp"; kq: "cs.kq"; kr: "cs.kr"; ks: "cs.ks"; kt: "cs.kt"; ku: "cs.ku"; kv: "cs.kv"; kw: "cs.kw"; kx: "cs.kx"; ky: "cs.ky"; kz: "cs.kz"; la: "cs.la"; lb: "cs.lb"; lc: "cs.lc"; ld: "cs.ld"; le: "cs.le"; lf: "cs.lf"; lg: "cs.lg"; lh: "cs.lh"; li: "cs.li"; lj: "cs.lj"; lk: "cs.lk"; ll: "cs.ll"; lm: "cs.lm"; ln: "cs.ln"; lo: "cs.lo"; lp: "cs.lp"; lq: "cs.lq"; lr: "cs.lr"; ls: "cs.ls"; lt: "cs.lt"; lu: "cs.lu"; lv: "cs.lv"; lw: "cs.lw"; lx: "cs.lx"; ly: "cs.ly"; lz: "cs.lz"; ma: "cs.ma"; mb: "cs.mb"; mc: "cs.mc"; md: "cs.md"; me: "cs.me"; mf: "cs.mf"; mg: "cs.mg"; mh: "cs.mh"; mi: "cs.mi"; mj: "cs.mj"; mk: "cs.mk"; ml: "cs.ml"; mm: "cs.mm"; mn: "cs.mn"; mo: "cs.mo"; mp: "cs.mp"; mq: "cs.mq"; mr: "cs.mr"; ms: "cs.ms"; mt: "cs.mt"; mu: "cs.mu"; mv: "cs.mv"; mw: "cs.mw"; mx: "cs.mx"; my: "cs.my"; mz: "cs.mz"; na: "cs.na"; nb: "cs.nb"; nc: "cs.nc"; nd: "cs.nd"; ne: "cs.ne"; nf: "cs.nf"; ng: "cs.ng"; nh: "cs.nh"; ni: "cs.ni"; nj: "cs.nj"; nk: "cs.nk"; nl: "cs.nl"; nm: "cs.nm"; nn: "cs.nn"; no: "cs.no"; np: "cs.np"; nq: "cs.nq"; nr: "cs.nr"; ns: "cs.ns"; nt: "cs.nt"; nu: "cs.nu"; nv: "cs.nv"; nw: "cs.nw"; nx: "cs.nx"; ny: "cs.ny"; nz: "cs.nz"; oa: "cs.oa"; ob: "cs.ob"; oc: "cs.oc"; od: "cs.od"; oe: "cs.oe"; of: "cs.of"; og: "cs.og"; oh: "cs.oh"; oi: "cs.oi"; oj: "cs.oj"; ok: "cs.ok"; ol: "cs.ol"; om: "cs.om"; on: "cs.on"; oo: "cs.oo"; op: "cs.op"; oq: "cs.oq"; or: "cs.or"; os: "cs.os"; ot: "cs.ot"; ou: "cs.ou"; ov: "cs.ov"; ow: "cs.ow"; ox: "cs.ox"; oy: "cs.oy"; oz: "cs.oz"; pa: "cs.pa"; pb: "cs.pb"; pc: "cs.pc"; pd: "cs.pd"; pe: "cs.pe"; pf: "cs.pf"; pg: "cs.pg"; ph: "cs.ph"; pi: "cs.pi"; pj: "cs.pj"; pk: "cs.pk"; pl: "cs.pl"; pm: "cs.pm"; pn: "cs.pn"; po: "cs.po"; pp: "cs.pp"; pq: "cs.pq"; pr: "cs.pr"; ps: "cs.ps"; pt: "cs.pt"; pu: "cs.pu"; pv: "cs.pv"; pw: "cs.pw"; px: "cs.px"; py: "cs.py"; pz: "cs.pz"; qa: "cs.qa"; qb: "cs.qb"; qc: "cs.qc"; qd: "cs.qd"; qe: "cs.qe"; qf: "cs.qf"; qg: "cs.qg"; qh: "cs.qh"; qi: "cs.qi"; qj: "cs.qj"; qk: "cs.qk"; ql: "cs.ql"; qm: "cs.qm"; qn: "cs.qn"; qo: "cs.qo"; qp: "cs.qp"; qq: "cs.qq"; qr: "cs.qr"; qs: "cs.qs"; qt: "cs.qt"; qu: "cs.qu"; qv: "cs.qv"; qw: "cs.qw"; qx: "cs.qx"; qy: "cs.qy"; qz: "cs.qz"; ra: "cs.ra"; rb: "cs.rb"; rc: "cs.rc"; rd: "cs.rd"; re: "cs.re"; rf: "cs.rf"; rg: "cs.rg"; rh: "cs.rh"; ri: "cs.ri"; rj: "cs.rj"; rk: "cs.rk"; rl: "cs.rl"; rm: "cs.rm"; rn: "cs.rn"; ro: "cs.ro"; rp: "cs.rp"; rq: "cs.rq"; rr: "cs.rr"; rs: "cs.rs"; rt: "cs.rt"; ru: "cs.ru"; rv: "cs.rv"; rw: "cs.rw"; rx: "cs.rx"; ry: "cs.ry"; rz: "cs.rz"; sa: "cs.sa"; sb: "cs.sb"; sc: "cs.sc"; sd: "cs.sd"; se: "cs.se"; sf: "cs.sf"; sg: "cs.sg"; sh: "cs.sh"; si: "cs.si"; sj: "cs.sj"; sk: "cs.sk"; sl: "cs.sl"; sm: "cs.sm"; sn: "cs.sn"; so: "cs.so"; sp: "cs.sp"; sq: "cs.sq"; sr: "cs.sr"; ss: "cs.ss"; st: "cs.st"; su: "cs.su"; sv: "cs.sv"; sw: "cs.sw"; sx: "cs.sx"; sy: "cs.sy"; sz: "cs.sz"; ta: "cs.ta"; tb: "cs.tb"; tc: "cs.tc"; td: "cs.td"; te: "cs.te"; tf: "cs.tf"; tg: "cs.tg"; th: "cs.th"; ti: "cs.ti"; tj: "cs.tj"; tk: "cs.tk"; tl: "cs.tl"; tm: "cs.tm"; tn: "cs.tn"; to: "cs.to"; tp: "cs.tp"; tq: "cs.tq"; tr: "cs.tr"; ts: "cs.ts"; tt: "cs.tt"; tu: "cs.tu"; tv: "cs.tv"; tw: "cs.tw"; tx: "cs.tx"; ty: "cs.ty"; tz: "cs.tz"; ua: "cs.ua"; ub: "cs.ub"; uc: "cs.uc"; ud: "cs.ud"; ue: "cs.ue"; uf: "cs.uf"; ug: "cs.ug"; uh: "cs.uh"; ui: "cs.ui"; uj: "cs.uj"; uk: "cs.uk"; ul: "cs.ul"; um: "cs.um"; un: "cs.un"; uo: "cs.uo"; up: "cs.up"; uq: "cs.uq"; ur: "cs.ur"; us: "cs.us"; ut: "cs.ut"; uu: "cs.uu"; uv: "cs.uv"; uw: "cs.uw"; ux: "cs.ux"; uy: "cs.uy"; uz: "cs.uz"; va: "cs.va"; vb: "cs.vb"; vc: "cs.vc"; vd: "cs.vd"; ve: "cs.ve"; vf: "cs.vf"; vg: "cs.vg"; vh: "cs.vh"; vi: "cs.vi"; vj: "cs.vj"; vk: "cs.vk"; vl: "cs.vl"; vm: "cs.vm"; vn: "cs.vn"; vo: "cs.vo"; vp: "cs.vp"; vq: "cs.vq"; vr: "cs.vr"; vs: "cs.vs"; vt: "cs.vt"; vu: "cs.vu"; vv: "cs.vv"; vw: "cs.vw"; vx: "cs.vx"; vy: "cs.vy"; vz: "cs.vz"; wa: "cs.wa"; wb: "cs.wb"; wc: "cs.wc"; wd: "cs.wd"; we: "cs.we"; wf: "cs.wf"; wg: "cs.wg"; wh: "cs.wh"; wi: "cs.wi"; wj: "cs.wj"; wk: "cs.wk"; wl: "cs.wl"; wm: "cs.wm"; wn: "cs.wn"; wo: "cs.wo"; wp: "cs.wp"; wq: "cs.wq"; wr: "cs.wr"; ws: "cs.ws"; wt: "cs.wt"; wu: "cs.wu"; wv: "cs.wv"; ww: "cs.ww"; wx: "cs.wx"; wy: "cs.wy"; wz: "cs.wz"; xa: "cs.xa"; xb: "cs.xb"; xc: "cs.xc"; xd: "cs.xd"; xe: "cs.xe"; xf: "cs.xf"; xg: "cs.xg"; xh: "cs.xh"; xi: "cs.xi"; xj: "cs.xj"; xk: "cs.xk"; xl: "cs.xl"; xm: "cs.xm"; xn: "cs.xn"; xo: "cs.xo"; xp: "cs.xp"; xq: "cs.xq"; xr: "cs.xr"; xs: "cs.xs"; xt: "cs.xt"; xu: "cs.xu"; xv: "cs.xv"; xw: "cs.xw"; xx: "cs.xx"; xy: "cs.xy"; xz: "cs.xz"; ya: "cs.ya"; yb: "cs.yb"; yc: "cs.yc"; yd: "cs.yd"; ye: "cs.ye"; yf: "cs.yf"; yg: "cs.yg"; yh: "cs.yh"; yi: "cs.yi"; yj: "cs.yj"; yk: "cs.yk"; yl: "cs.yl"; ym: "cs.ym"; yn: "cs.yn"; yo: "cs.yo"; yp: "cs.yp"; yq: "cs.yq"; yr: "cs.yr"; ys: "cs.ys"; yt: "cs.yt"; yu: "cs.yu"; yv: "cs.yv"; yw: "cs.yw"; yx: "cs.yx"; yy: "cs.yy"; yz: "cs.yz"; za: "cs.za"; zb: "cs.zb"; zc: "cs.zc"; zd: "cs.zd"; ze: "cs.ze"; zf: "cs.zf"; zg: "cs.zg"; zh: "cs.zh"; zi: "cs.zi"; zj: "cs.zj"; zk: "cs.zk"; zl: "cs.zl"; zm: "cs.zm"; zn: "cs.zn"; zo: "cs.zo"; zp: "cs.zp"; zq: "cs.zq"; zr: "cs.zr"; zs: "cs.zs"; zt: "cs.zt"; zu: "cs.zu"; zv: "cs.zv"; zw: "cs.zw"; zx: "cs.zx"; zy: "cs.zy"; zz: "cs.zz"; }; ct: { aa: "ct.aa"; ab: "ct.ab"; ac: "ct.ac"; ad: "ct.ad"; ae: "ct.ae"; af: "ct.af"; ag: "ct.ag"; ah: "ct.ah"; ai: "ct.ai"; aj: "ct.aj"; ak: "ct.ak"; al: "ct.al"; am: "ct.am"; an: "ct.an"; ao: "ct.ao"; ap: "ct.ap"; aq: "ct.aq"; ar: "ct.ar"; as: "ct.as"; at: "ct.at"; au: "ct.au"; av: "ct.av"; aw: "ct.aw"; ax: "ct.ax"; ay: "ct.ay"; az: "ct.az"; ba: "ct.ba"; bb: "ct.bb"; bc: "ct.bc"; bd: "ct.bd"; be: "ct.be"; bf: "ct.bf"; bg: "ct.bg"; bh: "ct.bh"; bi: "ct.bi"; bj: "ct.bj"; bk: "ct.bk"; bl: "ct.bl"; bm: "ct.bm"; bn: "ct.bn"; bo: "ct.bo"; bp: "ct.bp"; bq: "ct.bq"; br: "ct.br"; bs: "ct.bs"; bt: "ct.bt"; bu: "ct.bu"; bv: "ct.bv"; bw: "ct.bw"; bx: "ct.bx"; by: "ct.by"; bz: "ct.bz"; ca: "ct.ca"; cb: "ct.cb"; cc: "ct.cc"; cd: "ct.cd"; ce: "ct.ce"; cf: "ct.cf"; cg: "ct.cg"; ch: "ct.ch"; ci: "ct.ci"; cj: "ct.cj"; ck: "ct.ck"; cl: "ct.cl"; cm: "ct.cm"; cn: "ct.cn"; co: "ct.co"; cp: "ct.cp"; cq: "ct.cq"; cr: "ct.cr"; cs: "ct.cs"; ct: "ct.ct"; cu: "ct.cu"; cv: "ct.cv"; cw: "ct.cw"; cx: "ct.cx"; cy: "ct.cy"; cz: "ct.cz"; da: "ct.da"; db: "ct.db"; dc: "ct.dc"; dd: "ct.dd"; de: "ct.de"; df: "ct.df"; dg: "ct.dg"; dh: "ct.dh"; di: "ct.di"; dj: "ct.dj"; dk: "ct.dk"; dl: "ct.dl"; dm: "ct.dm"; dn: "ct.dn"; do: "ct.do"; dp: "ct.dp"; dq: "ct.dq"; dr: "ct.dr"; ds: "ct.ds"; dt: "ct.dt"; du: "ct.du"; dv: "ct.dv"; dw: "ct.dw"; dx: "ct.dx"; dy: "ct.dy"; dz: "ct.dz"; ea: "ct.ea"; eb: "ct.eb"; ec: "ct.ec"; ed: "ct.ed"; ee: "ct.ee"; ef: "ct.ef"; eg: "ct.eg"; eh: "ct.eh"; ei: "ct.ei"; ej: "ct.ej"; ek: "ct.ek"; el: "ct.el"; em: "ct.em"; en: "ct.en"; eo: "ct.eo"; ep: "ct.ep"; eq: "ct.eq"; er: "ct.er"; es: "ct.es"; et: "ct.et"; eu: "ct.eu"; ev: "ct.ev"; ew: "ct.ew"; ex: "ct.ex"; ey: "ct.ey"; ez: "ct.ez"; fa: "ct.fa"; fb: "ct.fb"; fc: "ct.fc"; fd: "ct.fd"; fe: "ct.fe"; ff: "ct.ff"; fg: "ct.fg"; fh: "ct.fh"; fi: "ct.fi"; fj: "ct.fj"; fk: "ct.fk"; fl: "ct.fl"; fm: "ct.fm"; fn: "ct.fn"; fo: "ct.fo"; fp: "ct.fp"; fq: "ct.fq"; fr: "ct.fr"; fs: "ct.fs"; ft: "ct.ft"; fu: "ct.fu"; fv: "ct.fv"; fw: "ct.fw"; fx: "ct.fx"; fy: "ct.fy"; fz: "ct.fz"; ga: "ct.ga"; gb: "ct.gb"; gc: "ct.gc"; gd: "ct.gd"; ge: "ct.ge"; gf: "ct.gf"; gg: "ct.gg"; gh: "ct.gh"; gi: "ct.gi"; gj: "ct.gj"; gk: "ct.gk"; gl: "ct.gl"; gm: "ct.gm"; gn: "ct.gn"; go: "ct.go"; gp: "ct.gp"; gq: "ct.gq"; gr: "ct.gr"; gs: "ct.gs"; gt: "ct.gt"; gu: "ct.gu"; gv: "ct.gv"; gw: "ct.gw"; gx: "ct.gx"; gy: "ct.gy"; gz: "ct.gz"; ha: "ct.ha"; hb: "ct.hb"; hc: "ct.hc"; hd: "ct.hd"; he: "ct.he"; hf: "ct.hf"; hg: "ct.hg"; hh: "ct.hh"; hi: "ct.hi"; hj: "ct.hj"; hk: "ct.hk"; hl: "ct.hl"; hm: "ct.hm"; hn: "ct.hn"; ho: "ct.ho"; hp: "ct.hp"; hq: "ct.hq"; hr: "ct.hr"; hs: "ct.hs"; ht: "ct.ht"; hu: "ct.hu"; hv: "ct.hv"; hw: "ct.hw"; hx: "ct.hx"; hy: "ct.hy"; hz: "ct.hz"; ia: "ct.ia"; ib: "ct.ib"; ic: "ct.ic"; id: "ct.id"; ie: "ct.ie"; if: "ct.if"; ig: "ct.ig"; ih: "ct.ih"; ii: "ct.ii"; ij: "ct.ij"; ik: "ct.ik"; il: "ct.il"; im: "ct.im"; in: "ct.in"; io: "ct.io"; ip: "ct.ip"; iq: "ct.iq"; ir: "ct.ir"; is: "ct.is"; it: "ct.it"; iu: "ct.iu"; iv: "ct.iv"; iw: "ct.iw"; ix: "ct.ix"; iy: "ct.iy"; iz: "ct.iz"; ja: "ct.ja"; jb: "ct.jb"; jc: "ct.jc"; jd: "ct.jd"; je: "ct.je"; jf: "ct.jf"; jg: "ct.jg"; jh: "ct.jh"; ji: "ct.ji"; jj: "ct.jj"; jk: "ct.jk"; jl: "ct.jl"; jm: "ct.jm"; jn: "ct.jn"; jo: "ct.jo"; jp: "ct.jp"; jq: "ct.jq"; jr: "ct.jr"; js: "ct.js"; jt: "ct.jt"; ju: "ct.ju"; jv: "ct.jv"; jw: "ct.jw"; jx: "ct.jx"; jy: "ct.jy"; jz: "ct.jz"; ka: "ct.ka"; kb: "ct.kb"; kc: "ct.kc"; kd: "ct.kd"; ke: "ct.ke"; kf: "ct.kf"; kg: "ct.kg"; kh: "ct.kh"; ki: "ct.ki"; kj: "ct.kj"; kk: "ct.kk"; kl: "ct.kl"; km: "ct.km"; kn: "ct.kn"; ko: "ct.ko"; kp: "ct.kp"; kq: "ct.kq"; kr: "ct.kr"; ks: "ct.ks"; kt: "ct.kt"; ku: "ct.ku"; kv: "ct.kv"; kw: "ct.kw"; kx: "ct.kx"; ky: "ct.ky"; kz: "ct.kz"; la: "ct.la"; lb: "ct.lb"; lc: "ct.lc"; ld: "ct.ld"; le: "ct.le"; lf: "ct.lf"; lg: "ct.lg"; lh: "ct.lh"; li: "ct.li"; lj: "ct.lj"; lk: "ct.lk"; ll: "ct.ll"; lm: "ct.lm"; ln: "ct.ln"; lo: "ct.lo"; lp: "ct.lp"; lq: "ct.lq"; lr: "ct.lr"; ls: "ct.ls"; lt: "ct.lt"; lu: "ct.lu"; lv: "ct.lv"; lw: "ct.lw"; lx: "ct.lx"; ly: "ct.ly"; lz: "ct.lz"; ma: "ct.ma"; mb: "ct.mb"; mc: "ct.mc"; md: "ct.md"; me: "ct.me"; mf: "ct.mf"; mg: "ct.mg"; mh: "ct.mh"; mi: "ct.mi"; mj: "ct.mj"; mk: "ct.mk"; ml: "ct.ml"; mm: "ct.mm"; mn: "ct.mn"; mo: "ct.mo"; mp: "ct.mp"; mq: "ct.mq"; mr: "ct.mr"; ms: "ct.ms"; mt: "ct.mt"; mu: "ct.mu"; mv: "ct.mv"; mw: "ct.mw"; mx: "ct.mx"; my: "ct.my"; mz: "ct.mz"; na: "ct.na"; nb: "ct.nb"; nc: "ct.nc"; nd: "ct.nd"; ne: "ct.ne"; nf: "ct.nf"; ng: "ct.ng"; nh: "ct.nh"; ni: "ct.ni"; nj: "ct.nj"; nk: "ct.nk"; nl: "ct.nl"; nm: "ct.nm"; nn: "ct.nn"; no: "ct.no"; np: "ct.np"; nq: "ct.nq"; nr: "ct.nr"; ns: "ct.ns"; nt: "ct.nt"; nu: "ct.nu"; nv: "ct.nv"; nw: "ct.nw"; nx: "ct.nx"; ny: "ct.ny"; nz: "ct.nz"; oa: "ct.oa"; ob: "ct.ob"; oc: "ct.oc"; od: "ct.od"; oe: "ct.oe"; of: "ct.of"; og: "ct.og"; oh: "ct.oh"; oi: "ct.oi"; oj: "ct.oj"; ok: "ct.ok"; ol: "ct.ol"; om: "ct.om"; on: "ct.on"; oo: "ct.oo"; op: "ct.op"; oq: "ct.oq"; or: "ct.or"; os: "ct.os"; ot: "ct.ot"; ou: "ct.ou"; ov: "ct.ov"; ow: "ct.ow"; ox: "ct.ox"; oy: "ct.oy"; oz: "ct.oz"; pa: "ct.pa"; pb: "ct.pb"; pc: "ct.pc"; pd: "ct.pd"; pe: "ct.pe"; pf: "ct.pf"; pg: "ct.pg"; ph: "ct.ph"; pi: "ct.pi"; pj: "ct.pj"; pk: "ct.pk"; pl: "ct.pl"; pm: "ct.pm"; pn: "ct.pn"; po: "ct.po"; pp: "ct.pp"; pq: "ct.pq"; pr: "ct.pr"; ps: "ct.ps"; pt: "ct.pt"; pu: "ct.pu"; pv: "ct.pv"; pw: "ct.pw"; px: "ct.px"; py: "ct.py"; pz: "ct.pz"; qa: "ct.qa"; qb: "ct.qb"; qc: "ct.qc"; qd: "ct.qd"; qe: "ct.qe"; qf: "ct.qf"; qg: "ct.qg"; qh: "ct.qh"; qi: "ct.qi"; qj: "ct.qj"; qk: "ct.qk"; ql: "ct.ql"; qm: "ct.qm"; qn: "ct.qn"; qo: "ct.qo"; qp: "ct.qp"; qq: "ct.qq"; qr: "ct.qr"; qs: "ct.qs"; qt: "ct.qt"; qu: "ct.qu"; qv: "ct.qv"; qw: "ct.qw"; qx: "ct.qx"; qy: "ct.qy"; qz: "ct.qz"; ra: "ct.ra"; rb: "ct.rb"; rc: "ct.rc"; rd: "ct.rd"; re: "ct.re"; rf: "ct.rf"; rg: "ct.rg"; rh: "ct.rh"; ri: "ct.ri"; rj: "ct.rj"; rk: "ct.rk"; rl: "ct.rl"; rm: "ct.rm"; rn: "ct.rn"; ro: "ct.ro"; rp: "ct.rp"; rq: "ct.rq"; rr: "ct.rr"; rs: "ct.rs"; rt: "ct.rt"; ru: "ct.ru"; rv: "ct.rv"; rw: "ct.rw"; rx: "ct.rx"; ry: "ct.ry"; rz: "ct.rz"; sa: "ct.sa"; sb: "ct.sb"; sc: "ct.sc"; sd: "ct.sd"; se: "ct.se"; sf: "ct.sf"; sg: "ct.sg"; sh: "ct.sh"; si: "ct.si"; sj: "ct.sj"; sk: "ct.sk"; sl: "ct.sl"; sm: "ct.sm"; sn: "ct.sn"; so: "ct.so"; sp: "ct.sp"; sq: "ct.sq"; sr: "ct.sr"; ss: "ct.ss"; st: "ct.st"; su: "ct.su"; sv: "ct.sv"; sw: "ct.sw"; sx: "ct.sx"; sy: "ct.sy"; sz: "ct.sz"; ta: "ct.ta"; tb: "ct.tb"; tc: "ct.tc"; td: "ct.td"; te: "ct.te"; tf: "ct.tf"; tg: "ct.tg"; th: "ct.th"; ti: "ct.ti"; tj: "ct.tj"; tk: "ct.tk"; tl: "ct.tl"; tm: "ct.tm"; tn: "ct.tn"; to: "ct.to"; tp: "ct.tp"; tq: "ct.tq"; tr: "ct.tr"; ts: "ct.ts"; tt: "ct.tt"; tu: "ct.tu"; tv: "ct.tv"; tw: "ct.tw"; tx: "ct.tx"; ty: "ct.ty"; tz: "ct.tz"; ua: "ct.ua"; ub: "ct.ub"; uc: "ct.uc"; ud: "ct.ud"; ue: "ct.ue"; uf: "ct.uf"; ug: "ct.ug"; uh: "ct.uh"; ui: "ct.ui"; uj: "ct.uj"; uk: "ct.uk"; ul: "ct.ul"; um: "ct.um"; un: "ct.un"; uo: "ct.uo"; up: "ct.up"; uq: "ct.uq"; ur: "ct.ur"; us: "ct.us"; ut: "ct.ut"; uu: "ct.uu"; uv: "ct.uv"; uw: "ct.uw"; ux: "ct.ux"; uy: "ct.uy"; uz: "ct.uz"; va: "ct.va"; vb: "ct.vb"; vc: "ct.vc"; vd: "ct.vd"; ve: "ct.ve"; vf: "ct.vf"; vg: "ct.vg"; vh: "ct.vh"; vi: "ct.vi"; vj: "ct.vj"; vk: "ct.vk"; vl: "ct.vl"; vm: "ct.vm"; vn: "ct.vn"; vo: "ct.vo"; vp: "ct.vp"; vq: "ct.vq"; vr: "ct.vr"; vs: "ct.vs"; vt: "ct.vt"; vu: "ct.vu"; vv: "ct.vv"; vw: "ct.vw"; vx: "ct.vx"; vy: "ct.vy"; vz: "ct.vz"; wa: "ct.wa"; wb: "ct.wb"; wc: "ct.wc"; wd: "ct.wd"; we: "ct.we"; wf: "ct.wf"; wg: "ct.wg"; wh: "ct.wh"; wi: "ct.wi"; wj: "ct.wj"; wk: "ct.wk"; wl: "ct.wl"; wm: "ct.wm"; wn: "ct.wn"; wo: "ct.wo"; wp: "ct.wp"; wq: "ct.wq"; wr: "ct.wr"; ws: "ct.ws"; wt: "ct.wt"; wu: "ct.wu"; wv: "ct.wv"; ww: "ct.ww"; wx: "ct.wx"; wy: "ct.wy"; wz: "ct.wz"; xa: "ct.xa"; xb: "ct.xb"; xc: "ct.xc"; xd: "ct.xd"; xe: "ct.xe"; xf: "ct.xf"; xg: "ct.xg"; xh: "ct.xh"; xi: "ct.xi"; xj: "ct.xj"; xk: "ct.xk"; xl: "ct.xl"; xm: "ct.xm"; xn: "ct.xn"; xo: "ct.xo"; xp: "ct.xp"; xq: "ct.xq"; xr: "ct.xr"; xs: "ct.xs"; xt: "ct.xt"; xu: "ct.xu"; xv: "ct.xv"; xw: "ct.xw"; xx: "ct.xx"; xy: "ct.xy"; xz: "ct.xz"; ya: "ct.ya"; yb: "ct.yb"; yc: "ct.yc"; yd: "ct.yd"; ye: "ct.ye"; yf: "ct.yf"; yg: "ct.yg"; yh: "ct.yh"; yi: "ct.yi"; yj: "ct.yj"; yk: "ct.yk"; yl: "ct.yl"; ym: "ct.ym"; yn: "ct.yn"; yo: "ct.yo"; yp: "ct.yp"; yq: "ct.yq"; yr: "ct.yr"; ys: "ct.ys"; yt: "ct.yt"; yu: "ct.yu"; yv: "ct.yv"; yw: "ct.yw"; yx: "ct.yx"; yy: "ct.yy"; yz: "ct.yz"; za: "ct.za"; zb: "ct.zb"; zc: "ct.zc"; zd: "ct.zd"; ze: "ct.ze"; zf: "ct.zf"; zg: "ct.zg"; zh: "ct.zh"; zi: "ct.zi"; zj: "ct.zj"; zk: "ct.zk"; zl: "ct.zl"; zm: "ct.zm"; zn: "ct.zn"; zo: "ct.zo"; zp: "ct.zp"; zq: "ct.zq"; zr: "ct.zr"; zs: "ct.zs"; zt: "ct.zt"; zu: "ct.zu"; zv: "ct.zv"; zw: "ct.zw"; zx: "ct.zx"; zy: "ct.zy"; zz: "ct.zz"; }; cu: { aa: "cu.aa"; ab: "cu.ab"; ac: "cu.ac"; ad: "cu.ad"; ae: "cu.ae"; af: "cu.af"; ag: "cu.ag"; ah: "cu.ah"; ai: "cu.ai"; aj: "cu.aj"; ak: "cu.ak"; al: "cu.al"; am: "cu.am"; an: "cu.an"; ao: "cu.ao"; ap: "cu.ap"; aq: "cu.aq"; ar: "cu.ar"; as: "cu.as"; at: "cu.at"; au: "cu.au"; av: "cu.av"; aw: "cu.aw"; ax: "cu.ax"; ay: "cu.ay"; az: "cu.az"; ba: "cu.ba"; bb: "cu.bb"; bc: "cu.bc"; bd: "cu.bd"; be: "cu.be"; bf: "cu.bf"; bg: "cu.bg"; bh: "cu.bh"; bi: "cu.bi"; bj: "cu.bj"; bk: "cu.bk"; bl: "cu.bl"; bm: "cu.bm"; bn: "cu.bn"; bo: "cu.bo"; bp: "cu.bp"; bq: "cu.bq"; br: "cu.br"; bs: "cu.bs"; bt: "cu.bt"; bu: "cu.bu"; bv: "cu.bv"; bw: "cu.bw"; bx: "cu.bx"; by: "cu.by"; bz: "cu.bz"; ca: "cu.ca"; cb: "cu.cb"; cc: "cu.cc"; cd: "cu.cd"; ce: "cu.ce"; cf: "cu.cf"; cg: "cu.cg"; ch: "cu.ch"; ci: "cu.ci"; cj: "cu.cj"; ck: "cu.ck"; cl: "cu.cl"; cm: "cu.cm"; cn: "cu.cn"; co: "cu.co"; cp: "cu.cp"; cq: "cu.cq"; cr: "cu.cr"; cs: "cu.cs"; ct: "cu.ct"; cu: "cu.cu"; cv: "cu.cv"; cw: "cu.cw"; cx: "cu.cx"; cy: "cu.cy"; cz: "cu.cz"; da: "cu.da"; db: "cu.db"; dc: "cu.dc"; dd: "cu.dd"; de: "cu.de"; df: "cu.df"; dg: "cu.dg"; dh: "cu.dh"; di: "cu.di"; dj: "cu.dj"; dk: "cu.dk"; dl: "cu.dl"; dm: "cu.dm"; dn: "cu.dn"; do: "cu.do"; dp: "cu.dp"; dq: "cu.dq"; dr: "cu.dr"; ds: "cu.ds"; dt: "cu.dt"; du: "cu.du"; dv: "cu.dv"; dw: "cu.dw"; dx: "cu.dx"; dy: "cu.dy"; dz: "cu.dz"; ea: "cu.ea"; eb: "cu.eb"; ec: "cu.ec"; ed: "cu.ed"; ee: "cu.ee"; ef: "cu.ef"; eg: "cu.eg"; eh: "cu.eh"; ei: "cu.ei"; ej: "cu.ej"; ek: "cu.ek"; el: "cu.el"; em: "cu.em"; en: "cu.en"; eo: "cu.eo"; ep: "cu.ep"; eq: "cu.eq"; er: "cu.er"; es: "cu.es"; et: "cu.et"; eu: "cu.eu"; ev: "cu.ev"; ew: "cu.ew"; ex: "cu.ex"; ey: "cu.ey"; ez: "cu.ez"; fa: "cu.fa"; fb: "cu.fb"; fc: "cu.fc"; fd: "cu.fd"; fe: "cu.fe"; ff: "cu.ff"; fg: "cu.fg"; fh: "cu.fh"; fi: "cu.fi"; fj: "cu.fj"; fk: "cu.fk"; fl: "cu.fl"; fm: "cu.fm"; fn: "cu.fn"; fo: "cu.fo"; fp: "cu.fp"; fq: "cu.fq"; fr: "cu.fr"; fs: "cu.fs"; ft: "cu.ft"; fu: "cu.fu"; fv: "cu.fv"; fw: "cu.fw"; fx: "cu.fx"; fy: "cu.fy"; fz: "cu.fz"; ga: "cu.ga"; gb: "cu.gb"; gc: "cu.gc"; gd: "cu.gd"; ge: "cu.ge"; gf: "cu.gf"; gg: "cu.gg"; gh: "cu.gh"; gi: "cu.gi"; gj: "cu.gj"; gk: "cu.gk"; gl: "cu.gl"; gm: "cu.gm"; gn: "cu.gn"; go: "cu.go"; gp: "cu.gp"; gq: "cu.gq"; gr: "cu.gr"; gs: "cu.gs"; gt: "cu.gt"; gu: "cu.gu"; gv: "cu.gv"; gw: "cu.gw"; gx: "cu.gx"; gy: "cu.gy"; gz: "cu.gz"; ha: "cu.ha"; hb: "cu.hb"; hc: "cu.hc"; hd: "cu.hd"; he: "cu.he"; hf: "cu.hf"; hg: "cu.hg"; hh: "cu.hh"; hi: "cu.hi"; hj: "cu.hj"; hk: "cu.hk"; hl: "cu.hl"; hm: "cu.hm"; hn: "cu.hn"; ho: "cu.ho"; hp: "cu.hp"; hq: "cu.hq"; hr: "cu.hr"; hs: "cu.hs"; ht: "cu.ht"; hu: "cu.hu"; hv: "cu.hv"; hw: "cu.hw"; hx: "cu.hx"; hy: "cu.hy"; hz: "cu.hz"; ia: "cu.ia"; ib: "cu.ib"; ic: "cu.ic"; id: "cu.id"; ie: "cu.ie"; if: "cu.if"; ig: "cu.ig"; ih: "cu.ih"; ii: "cu.ii"; ij: "cu.ij"; ik: "cu.ik"; il: "cu.il"; im: "cu.im"; in: "cu.in"; io: "cu.io"; ip: "cu.ip"; iq: "cu.iq"; ir: "cu.ir"; is: "cu.is"; it: "cu.it"; iu: "cu.iu"; iv: "cu.iv"; iw: "cu.iw"; ix: "cu.ix"; iy: "cu.iy"; iz: "cu.iz"; ja: "cu.ja"; jb: "cu.jb"; jc: "cu.jc"; jd: "cu.jd"; je: "cu.je"; jf: "cu.jf"; jg: "cu.jg"; jh: "cu.jh"; ji: "cu.ji"; jj: "cu.jj"; jk: "cu.jk"; jl: "cu.jl"; jm: "cu.jm"; jn: "cu.jn"; jo: "cu.jo"; jp: "cu.jp"; jq: "cu.jq"; jr: "cu.jr"; js: "cu.js"; jt: "cu.jt"; ju: "cu.ju"; jv: "cu.jv"; jw: "cu.jw"; jx: "cu.jx"; jy: "cu.jy"; jz: "cu.jz"; ka: "cu.ka"; kb: "cu.kb"; kc: "cu.kc"; kd: "cu.kd"; ke: "cu.ke"; kf: "cu.kf"; kg: "cu.kg"; kh: "cu.kh"; ki: "cu.ki"; kj: "cu.kj"; kk: "cu.kk"; kl: "cu.kl"; km: "cu.km"; kn: "cu.kn"; ko: "cu.ko"; kp: "cu.kp"; kq: "cu.kq"; kr: "cu.kr"; ks: "cu.ks"; kt: "cu.kt"; ku: "cu.ku"; kv: "cu.kv"; kw: "cu.kw"; kx: "cu.kx"; ky: "cu.ky"; kz: "cu.kz"; la: "cu.la"; lb: "cu.lb"; lc: "cu.lc"; ld: "cu.ld"; le: "cu.le"; lf: "cu.lf"; lg: "cu.lg"; lh: "cu.lh"; li: "cu.li"; lj: "cu.lj"; lk: "cu.lk"; ll: "cu.ll"; lm: "cu.lm"; ln: "cu.ln"; lo: "cu.lo"; lp: "cu.lp"; lq: "cu.lq"; lr: "cu.lr"; ls: "cu.ls"; lt: "cu.lt"; lu: "cu.lu"; lv: "cu.lv"; lw: "cu.lw"; lx: "cu.lx"; ly: "cu.ly"; lz: "cu.lz"; ma: "cu.ma"; mb: "cu.mb"; mc: "cu.mc"; md: "cu.md"; me: "cu.me"; mf: "cu.mf"; mg: "cu.mg"; mh: "cu.mh"; mi: "cu.mi"; mj: "cu.mj"; mk: "cu.mk"; ml: "cu.ml"; mm: "cu.mm"; mn: "cu.mn"; mo: "cu.mo"; mp: "cu.mp"; mq: "cu.mq"; mr: "cu.mr"; ms: "cu.ms"; mt: "cu.mt"; mu: "cu.mu"; mv: "cu.mv"; mw: "cu.mw"; mx: "cu.mx"; my: "cu.my"; mz: "cu.mz"; na: "cu.na"; nb: "cu.nb"; nc: "cu.nc"; nd: "cu.nd"; ne: "cu.ne"; nf: "cu.nf"; ng: "cu.ng"; nh: "cu.nh"; ni: "cu.ni"; nj: "cu.nj"; nk: "cu.nk"; nl: "cu.nl"; nm: "cu.nm"; nn: "cu.nn"; no: "cu.no"; np: "cu.np"; nq: "cu.nq"; nr: "cu.nr"; ns: "cu.ns"; nt: "cu.nt"; nu: "cu.nu"; nv: "cu.nv"; nw: "cu.nw"; nx: "cu.nx"; ny: "cu.ny"; nz: "cu.nz"; oa: "cu.oa"; ob: "cu.ob"; oc: "cu.oc"; od: "cu.od"; oe: "cu.oe"; of: "cu.of"; og: "cu.og"; oh: "cu.oh"; oi: "cu.oi"; oj: "cu.oj"; ok: "cu.ok"; ol: "cu.ol"; om: "cu.om"; on: "cu.on"; oo: "cu.oo"; op: "cu.op"; oq: "cu.oq"; or: "cu.or"; os: "cu.os"; ot: "cu.ot"; ou: "cu.ou"; ov: "cu.ov"; ow: "cu.ow"; ox: "cu.ox"; oy: "cu.oy"; oz: "cu.oz"; pa: "cu.pa"; pb: "cu.pb"; pc: "cu.pc"; pd: "cu.pd"; pe: "cu.pe"; pf: "cu.pf"; pg: "cu.pg"; ph: "cu.ph"; pi: "cu.pi"; pj: "cu.pj"; pk: "cu.pk"; pl: "cu.pl"; pm: "cu.pm"; pn: "cu.pn"; po: "cu.po"; pp: "cu.pp"; pq: "cu.pq"; pr: "cu.pr"; ps: "cu.ps"; pt: "cu.pt"; pu: "cu.pu"; pv: "cu.pv"; pw: "cu.pw"; px: "cu.px"; py: "cu.py"; pz: "cu.pz"; qa: "cu.qa"; qb: "cu.qb"; qc: "cu.qc"; qd: "cu.qd"; qe: "cu.qe"; qf: "cu.qf"; qg: "cu.qg"; qh: "cu.qh"; qi: "cu.qi"; qj: "cu.qj"; qk: "cu.qk"; ql: "cu.ql"; qm: "cu.qm"; qn: "cu.qn"; qo: "cu.qo"; qp: "cu.qp"; qq: "cu.qq"; qr: "cu.qr"; qs: "cu.qs"; qt: "cu.qt"; qu: "cu.qu"; qv: "cu.qv"; qw: "cu.qw"; qx: "cu.qx"; qy: "cu.qy"; qz: "cu.qz"; ra: "cu.ra"; rb: "cu.rb"; rc: "cu.rc"; rd: "cu.rd"; re: "cu.re"; rf: "cu.rf"; rg: "cu.rg"; rh: "cu.rh"; ri: "cu.ri"; rj: "cu.rj"; rk: "cu.rk"; rl: "cu.rl"; rm: "cu.rm"; rn: "cu.rn"; ro: "cu.ro"; rp: "cu.rp"; rq: "cu.rq"; rr: "cu.rr"; rs: "cu.rs"; rt: "cu.rt"; ru: "cu.ru"; rv: "cu.rv"; rw: "cu.rw"; rx: "cu.rx"; ry: "cu.ry"; rz: "cu.rz"; sa: "cu.sa"; sb: "cu.sb"; sc: "cu.sc"; sd: "cu.sd"; se: "cu.se"; sf: "cu.sf"; sg: "cu.sg"; sh: "cu.sh"; si: "cu.si"; sj: "cu.sj"; sk: "cu.sk"; sl: "cu.sl"; sm: "cu.sm"; sn: "cu.sn"; so: "cu.so"; sp: "cu.sp"; sq: "cu.sq"; sr: "cu.sr"; ss: "cu.ss"; st: "cu.st"; su: "cu.su"; sv: "cu.sv"; sw: "cu.sw"; sx: "cu.sx"; sy: "cu.sy"; sz: "cu.sz"; ta: "cu.ta"; tb: "cu.tb"; tc: "cu.tc"; td: "cu.td"; te: "cu.te"; tf: "cu.tf"; tg: "cu.tg"; th: "cu.th"; ti: "cu.ti"; tj: "cu.tj"; tk: "cu.tk"; tl: "cu.tl"; tm: "cu.tm"; tn: "cu.tn"; to: "cu.to"; tp: "cu.tp"; tq: "cu.tq"; tr: "cu.tr"; ts: "cu.ts"; tt: "cu.tt"; tu: "cu.tu"; tv: "cu.tv"; tw: "cu.tw"; tx: "cu.tx"; ty: "cu.ty"; tz: "cu.tz"; ua: "cu.ua"; ub: "cu.ub"; uc: "cu.uc"; ud: "cu.ud"; ue: "cu.ue"; uf: "cu.uf"; ug: "cu.ug"; uh: "cu.uh"; ui: "cu.ui"; uj: "cu.uj"; uk: "cu.uk"; ul: "cu.ul"; um: "cu.um"; un: "cu.un"; uo: "cu.uo"; up: "cu.up"; uq: "cu.uq"; ur: "cu.ur"; us: "cu.us"; ut: "cu.ut"; uu: "cu.uu"; uv: "cu.uv"; uw: "cu.uw"; ux: "cu.ux"; uy: "cu.uy"; uz: "cu.uz"; va: "cu.va"; vb: "cu.vb"; vc: "cu.vc"; vd: "cu.vd"; ve: "cu.ve"; vf: "cu.vf"; vg: "cu.vg"; vh: "cu.vh"; vi: "cu.vi"; vj: "cu.vj"; vk: "cu.vk"; vl: "cu.vl"; vm: "cu.vm"; vn: "cu.vn"; vo: "cu.vo"; vp: "cu.vp"; vq: "cu.vq"; vr: "cu.vr"; vs: "cu.vs"; vt: "cu.vt"; vu: "cu.vu"; vv: "cu.vv"; vw: "cu.vw"; vx: "cu.vx"; vy: "cu.vy"; vz: "cu.vz"; wa: "cu.wa"; wb: "cu.wb"; wc: "cu.wc"; wd: "cu.wd"; we: "cu.we"; wf: "cu.wf"; wg: "cu.wg"; wh: "cu.wh"; wi: "cu.wi"; wj: "cu.wj"; wk: "cu.wk"; wl: "cu.wl"; wm: "cu.wm"; wn: "cu.wn"; wo: "cu.wo"; wp: "cu.wp"; wq: "cu.wq"; wr: "cu.wr"; ws: "cu.ws"; wt: "cu.wt"; wu: "cu.wu"; wv: "cu.wv"; ww: "cu.ww"; wx: "cu.wx"; wy: "cu.wy"; wz: "cu.wz"; xa: "cu.xa"; xb: "cu.xb"; xc: "cu.xc"; xd: "cu.xd"; xe: "cu.xe"; xf: "cu.xf"; xg: "cu.xg"; xh: "cu.xh"; xi: "cu.xi"; xj: "cu.xj"; xk: "cu.xk"; xl: "cu.xl"; xm: "cu.xm"; xn: "cu.xn"; xo: "cu.xo"; xp: "cu.xp"; xq: "cu.xq"; xr: "cu.xr"; xs: "cu.xs"; xt: "cu.xt"; xu: "cu.xu"; xv: "cu.xv"; xw: "cu.xw"; xx: "cu.xx"; xy: "cu.xy"; xz: "cu.xz"; ya: "cu.ya"; yb: "cu.yb"; yc: "cu.yc"; yd: "cu.yd"; ye: "cu.ye"; yf: "cu.yf"; yg: "cu.yg"; yh: "cu.yh"; yi: "cu.yi"; yj: "cu.yj"; yk: "cu.yk"; yl: "cu.yl"; ym: "cu.ym"; yn: "cu.yn"; yo: "cu.yo"; yp: "cu.yp"; yq: "cu.yq"; yr: "cu.yr"; ys: "cu.ys"; yt: "cu.yt"; yu: "cu.yu"; yv: "cu.yv"; yw: "cu.yw"; yx: "cu.yx"; yy: "cu.yy"; yz: "cu.yz"; za: "cu.za"; zb: "cu.zb"; zc: "cu.zc"; zd: "cu.zd"; ze: "cu.ze"; zf: "cu.zf"; zg: "cu.zg"; zh: "cu.zh"; zi: "cu.zi"; zj: "cu.zj"; zk: "cu.zk"; zl: "cu.zl"; zm: "cu.zm"; zn: "cu.zn"; zo: "cu.zo"; zp: "cu.zp"; zq: "cu.zq"; zr: "cu.zr"; zs: "cu.zs"; zt: "cu.zt"; zu: "cu.zu"; zv: "cu.zv"; zw: "cu.zw"; zx: "cu.zx"; zy: "cu.zy"; zz: "cu.zz"; }; cv: { aa: "cv.aa"; ab: "cv.ab"; ac: "cv.ac"; ad: "cv.ad"; ae: "cv.ae"; af: "cv.af"; ag: "cv.ag"; ah: "cv.ah"; ai: "cv.ai"; aj: "cv.aj"; ak: "cv.ak"; al: "cv.al"; am: "cv.am"; an: "cv.an"; ao: "cv.ao"; ap: "cv.ap"; aq: "cv.aq"; ar: "cv.ar"; as: "cv.as"; at: "cv.at"; au: "cv.au"; av: "cv.av"; aw: "cv.aw"; ax: "cv.ax"; ay: "cv.ay"; az: "cv.az"; ba: "cv.ba"; bb: "cv.bb"; bc: "cv.bc"; bd: "cv.bd"; be: "cv.be"; bf: "cv.bf"; bg: "cv.bg"; bh: "cv.bh"; bi: "cv.bi"; bj: "cv.bj"; bk: "cv.bk"; bl: "cv.bl"; bm: "cv.bm"; bn: "cv.bn"; bo: "cv.bo"; bp: "cv.bp"; bq: "cv.bq"; br: "cv.br"; bs: "cv.bs"; bt: "cv.bt"; bu: "cv.bu"; bv: "cv.bv"; bw: "cv.bw"; bx: "cv.bx"; by: "cv.by"; bz: "cv.bz"; ca: "cv.ca"; cb: "cv.cb"; cc: "cv.cc"; cd: "cv.cd"; ce: "cv.ce"; cf: "cv.cf"; cg: "cv.cg"; ch: "cv.ch"; ci: "cv.ci"; cj: "cv.cj"; ck: "cv.ck"; cl: "cv.cl"; cm: "cv.cm"; cn: "cv.cn"; co: "cv.co"; cp: "cv.cp"; cq: "cv.cq"; cr: "cv.cr"; cs: "cv.cs"; ct: "cv.ct"; cu: "cv.cu"; cv: "cv.cv"; cw: "cv.cw"; cx: "cv.cx"; cy: "cv.cy"; cz: "cv.cz"; da: "cv.da"; db: "cv.db"; dc: "cv.dc"; dd: "cv.dd"; de: "cv.de"; df: "cv.df"; dg: "cv.dg"; dh: "cv.dh"; di: "cv.di"; dj: "cv.dj"; dk: "cv.dk"; dl: "cv.dl"; dm: "cv.dm"; dn: "cv.dn"; do: "cv.do"; dp: "cv.dp"; dq: "cv.dq"; dr: "cv.dr"; ds: "cv.ds"; dt: "cv.dt"; du: "cv.du"; dv: "cv.dv"; dw: "cv.dw"; dx: "cv.dx"; dy: "cv.dy"; dz: "cv.dz"; ea: "cv.ea"; eb: "cv.eb"; ec: "cv.ec"; ed: "cv.ed"; ee: "cv.ee"; ef: "cv.ef"; eg: "cv.eg"; eh: "cv.eh"; ei: "cv.ei"; ej: "cv.ej"; ek: "cv.ek"; el: "cv.el"; em: "cv.em"; en: "cv.en"; eo: "cv.eo"; ep: "cv.ep"; eq: "cv.eq"; er: "cv.er"; es: "cv.es"; et: "cv.et"; eu: "cv.eu"; ev: "cv.ev"; ew: "cv.ew"; ex: "cv.ex"; ey: "cv.ey"; ez: "cv.ez"; fa: "cv.fa"; fb: "cv.fb"; fc: "cv.fc"; fd: "cv.fd"; fe: "cv.fe"; ff: "cv.ff"; fg: "cv.fg"; fh: "cv.fh"; fi: "cv.fi"; fj: "cv.fj"; fk: "cv.fk"; fl: "cv.fl"; fm: "cv.fm"; fn: "cv.fn"; fo: "cv.fo"; fp: "cv.fp"; fq: "cv.fq"; fr: "cv.fr"; fs: "cv.fs"; ft: "cv.ft"; fu: "cv.fu"; fv: "cv.fv"; fw: "cv.fw"; fx: "cv.fx"; fy: "cv.fy"; fz: "cv.fz"; ga: "cv.ga"; gb: "cv.gb"; gc: "cv.gc"; gd: "cv.gd"; ge: "cv.ge"; gf: "cv.gf"; gg: "cv.gg"; gh: "cv.gh"; gi: "cv.gi"; gj: "cv.gj"; gk: "cv.gk"; gl: "cv.gl"; gm: "cv.gm"; gn: "cv.gn"; go: "cv.go"; gp: "cv.gp"; gq: "cv.gq"; gr: "cv.gr"; gs: "cv.gs"; gt: "cv.gt"; gu: "cv.gu"; gv: "cv.gv"; gw: "cv.gw"; gx: "cv.gx"; gy: "cv.gy"; gz: "cv.gz"; ha: "cv.ha"; hb: "cv.hb"; hc: "cv.hc"; hd: "cv.hd"; he: "cv.he"; hf: "cv.hf"; hg: "cv.hg"; hh: "cv.hh"; hi: "cv.hi"; hj: "cv.hj"; hk: "cv.hk"; hl: "cv.hl"; hm: "cv.hm"; hn: "cv.hn"; ho: "cv.ho"; hp: "cv.hp"; hq: "cv.hq"; hr: "cv.hr"; hs: "cv.hs"; ht: "cv.ht"; hu: "cv.hu"; hv: "cv.hv"; hw: "cv.hw"; hx: "cv.hx"; hy: "cv.hy"; hz: "cv.hz"; ia: "cv.ia"; ib: "cv.ib"; ic: "cv.ic"; id: "cv.id"; ie: "cv.ie"; if: "cv.if"; ig: "cv.ig"; ih: "cv.ih"; ii: "cv.ii"; ij: "cv.ij"; ik: "cv.ik"; il: "cv.il"; im: "cv.im"; in: "cv.in"; io: "cv.io"; ip: "cv.ip"; iq: "cv.iq"; ir: "cv.ir"; is: "cv.is"; it: "cv.it"; iu: "cv.iu"; iv: "cv.iv"; iw: "cv.iw"; ix: "cv.ix"; iy: "cv.iy"; iz: "cv.iz"; ja: "cv.ja"; jb: "cv.jb"; jc: "cv.jc"; jd: "cv.jd"; je: "cv.je"; jf: "cv.jf"; jg: "cv.jg"; jh: "cv.jh"; ji: "cv.ji"; jj: "cv.jj"; jk: "cv.jk"; jl: "cv.jl"; jm: "cv.jm"; jn: "cv.jn"; jo: "cv.jo"; jp: "cv.jp"; jq: "cv.jq"; jr: "cv.jr"; js: "cv.js"; jt: "cv.jt"; ju: "cv.ju"; jv: "cv.jv"; jw: "cv.jw"; jx: "cv.jx"; jy: "cv.jy"; jz: "cv.jz"; ka: "cv.ka"; kb: "cv.kb"; kc: "cv.kc"; kd: "cv.kd"; ke: "cv.ke"; kf: "cv.kf"; kg: "cv.kg"; kh: "cv.kh"; ki: "cv.ki"; kj: "cv.kj"; kk: "cv.kk"; kl: "cv.kl"; km: "cv.km"; kn: "cv.kn"; ko: "cv.ko"; kp: "cv.kp"; kq: "cv.kq"; kr: "cv.kr"; ks: "cv.ks"; kt: "cv.kt"; ku: "cv.ku"; kv: "cv.kv"; kw: "cv.kw"; kx: "cv.kx"; ky: "cv.ky"; kz: "cv.kz"; la: "cv.la"; lb: "cv.lb"; lc: "cv.lc"; ld: "cv.ld"; le: "cv.le"; lf: "cv.lf"; lg: "cv.lg"; lh: "cv.lh"; li: "cv.li"; lj: "cv.lj"; lk: "cv.lk"; ll: "cv.ll"; lm: "cv.lm"; ln: "cv.ln"; lo: "cv.lo"; lp: "cv.lp"; lq: "cv.lq"; lr: "cv.lr"; ls: "cv.ls"; lt: "cv.lt"; lu: "cv.lu"; lv: "cv.lv"; lw: "cv.lw"; lx: "cv.lx"; ly: "cv.ly"; lz: "cv.lz"; ma: "cv.ma"; mb: "cv.mb"; mc: "cv.mc"; md: "cv.md"; me: "cv.me"; mf: "cv.mf"; mg: "cv.mg"; mh: "cv.mh"; mi: "cv.mi"; mj: "cv.mj"; mk: "cv.mk"; ml: "cv.ml"; mm: "cv.mm"; mn: "cv.mn"; mo: "cv.mo"; mp: "cv.mp"; mq: "cv.mq"; mr: "cv.mr"; ms: "cv.ms"; mt: "cv.mt"; mu: "cv.mu"; mv: "cv.mv"; mw: "cv.mw"; mx: "cv.mx"; my: "cv.my"; mz: "cv.mz"; na: "cv.na"; nb: "cv.nb"; nc: "cv.nc"; nd: "cv.nd"; ne: "cv.ne"; nf: "cv.nf"; ng: "cv.ng"; nh: "cv.nh"; ni: "cv.ni"; nj: "cv.nj"; nk: "cv.nk"; nl: "cv.nl"; nm: "cv.nm"; nn: "cv.nn"; no: "cv.no"; np: "cv.np"; nq: "cv.nq"; nr: "cv.nr"; ns: "cv.ns"; nt: "cv.nt"; nu: "cv.nu"; nv: "cv.nv"; nw: "cv.nw"; nx: "cv.nx"; ny: "cv.ny"; nz: "cv.nz"; oa: "cv.oa"; ob: "cv.ob"; oc: "cv.oc"; od: "cv.od"; oe: "cv.oe"; of: "cv.of"; og: "cv.og"; oh: "cv.oh"; oi: "cv.oi"; oj: "cv.oj"; ok: "cv.ok"; ol: "cv.ol"; om: "cv.om"; on: "cv.on"; oo: "cv.oo"; op: "cv.op"; oq: "cv.oq"; or: "cv.or"; os: "cv.os"; ot: "cv.ot"; ou: "cv.ou"; ov: "cv.ov"; ow: "cv.ow"; ox: "cv.ox"; oy: "cv.oy"; oz: "cv.oz"; pa: "cv.pa"; pb: "cv.pb"; pc: "cv.pc"; pd: "cv.pd"; pe: "cv.pe"; pf: "cv.pf"; pg: "cv.pg"; ph: "cv.ph"; pi: "cv.pi"; pj: "cv.pj"; pk: "cv.pk"; pl: "cv.pl"; pm: "cv.pm"; pn: "cv.pn"; po: "cv.po"; pp: "cv.pp"; pq: "cv.pq"; pr: "cv.pr"; ps: "cv.ps"; pt: "cv.pt"; pu: "cv.pu"; pv: "cv.pv"; pw: "cv.pw"; px: "cv.px"; py: "cv.py"; pz: "cv.pz"; qa: "cv.qa"; qb: "cv.qb"; qc: "cv.qc"; qd: "cv.qd"; qe: "cv.qe"; qf: "cv.qf"; qg: "cv.qg"; qh: "cv.qh"; qi: "cv.qi"; qj: "cv.qj"; qk: "cv.qk"; ql: "cv.ql"; qm: "cv.qm"; qn: "cv.qn"; qo: "cv.qo"; qp: "cv.qp"; qq: "cv.qq"; qr: "cv.qr"; qs: "cv.qs"; qt: "cv.qt"; qu: "cv.qu"; qv: "cv.qv"; qw: "cv.qw"; qx: "cv.qx"; qy: "cv.qy"; qz: "cv.qz"; ra: "cv.ra"; rb: "cv.rb"; rc: "cv.rc"; rd: "cv.rd"; re: "cv.re"; rf: "cv.rf"; rg: "cv.rg"; rh: "cv.rh"; ri: "cv.ri"; rj: "cv.rj"; rk: "cv.rk"; rl: "cv.rl"; rm: "cv.rm"; rn: "cv.rn"; ro: "cv.ro"; rp: "cv.rp"; rq: "cv.rq"; rr: "cv.rr"; rs: "cv.rs"; rt: "cv.rt"; ru: "cv.ru"; rv: "cv.rv"; rw: "cv.rw"; rx: "cv.rx"; ry: "cv.ry"; rz: "cv.rz"; sa: "cv.sa"; sb: "cv.sb"; sc: "cv.sc"; sd: "cv.sd"; se: "cv.se"; sf: "cv.sf"; sg: "cv.sg"; sh: "cv.sh"; si: "cv.si"; sj: "cv.sj"; sk: "cv.sk"; sl: "cv.sl"; sm: "cv.sm"; sn: "cv.sn"; so: "cv.so"; sp: "cv.sp"; sq: "cv.sq"; sr: "cv.sr"; ss: "cv.ss"; st: "cv.st"; su: "cv.su"; sv: "cv.sv"; sw: "cv.sw"; sx: "cv.sx"; sy: "cv.sy"; sz: "cv.sz"; ta: "cv.ta"; tb: "cv.tb"; tc: "cv.tc"; td: "cv.td"; te: "cv.te"; tf: "cv.tf"; tg: "cv.tg"; th: "cv.th"; ti: "cv.ti"; tj: "cv.tj"; tk: "cv.tk"; tl: "cv.tl"; tm: "cv.tm"; tn: "cv.tn"; to: "cv.to"; tp: "cv.tp"; tq: "cv.tq"; tr: "cv.tr"; ts: "cv.ts"; tt: "cv.tt"; tu: "cv.tu"; tv: "cv.tv"; tw: "cv.tw"; tx: "cv.tx"; ty: "cv.ty"; tz: "cv.tz"; ua: "cv.ua"; ub: "cv.ub"; uc: "cv.uc"; ud: "cv.ud"; ue: "cv.ue"; uf: "cv.uf"; ug: "cv.ug"; uh: "cv.uh"; ui: "cv.ui"; uj: "cv.uj"; uk: "cv.uk"; ul: "cv.ul"; um: "cv.um"; un: "cv.un"; uo: "cv.uo"; up: "cv.up"; uq: "cv.uq"; ur: "cv.ur"; us: "cv.us"; ut: "cv.ut"; uu: "cv.uu"; uv: "cv.uv"; uw: "cv.uw"; ux: "cv.ux"; uy: "cv.uy"; uz: "cv.uz"; va: "cv.va"; vb: "cv.vb"; vc: "cv.vc"; vd: "cv.vd"; ve: "cv.ve"; vf: "cv.vf"; vg: "cv.vg"; vh: "cv.vh"; vi: "cv.vi"; vj: "cv.vj"; vk: "cv.vk"; vl: "cv.vl"; vm: "cv.vm"; vn: "cv.vn"; vo: "cv.vo"; vp: "cv.vp"; vq: "cv.vq"; vr: "cv.vr"; vs: "cv.vs"; vt: "cv.vt"; vu: "cv.vu"; vv: "cv.vv"; vw: "cv.vw"; vx: "cv.vx"; vy: "cv.vy"; vz: "cv.vz"; wa: "cv.wa"; wb: "cv.wb"; wc: "cv.wc"; wd: "cv.wd"; we: "cv.we"; wf: "cv.wf"; wg: "cv.wg"; wh: "cv.wh"; wi: "cv.wi"; wj: "cv.wj"; wk: "cv.wk"; wl: "cv.wl"; wm: "cv.wm"; wn: "cv.wn"; wo: "cv.wo"; wp: "cv.wp"; wq: "cv.wq"; wr: "cv.wr"; ws: "cv.ws"; wt: "cv.wt"; wu: "cv.wu"; wv: "cv.wv"; ww: "cv.ww"; wx: "cv.wx"; wy: "cv.wy"; wz: "cv.wz"; xa: "cv.xa"; xb: "cv.xb"; xc: "cv.xc"; xd: "cv.xd"; xe: "cv.xe"; xf: "cv.xf"; xg: "cv.xg"; xh: "cv.xh"; xi: "cv.xi"; xj: "cv.xj"; xk: "cv.xk"; xl: "cv.xl"; xm: "cv.xm"; xn: "cv.xn"; xo: "cv.xo"; xp: "cv.xp"; xq: "cv.xq"; xr: "cv.xr"; xs: "cv.xs"; xt: "cv.xt"; xu: "cv.xu"; xv: "cv.xv"; xw: "cv.xw"; xx: "cv.xx"; xy: "cv.xy"; xz: "cv.xz"; ya: "cv.ya"; yb: "cv.yb"; yc: "cv.yc"; yd: "cv.yd"; ye: "cv.ye"; yf: "cv.yf"; yg: "cv.yg"; yh: "cv.yh"; yi: "cv.yi"; yj: "cv.yj"; yk: "cv.yk"; yl: "cv.yl"; ym: "cv.ym"; yn: "cv.yn"; yo: "cv.yo"; yp: "cv.yp"; yq: "cv.yq"; yr: "cv.yr"; ys: "cv.ys"; yt: "cv.yt"; yu: "cv.yu"; yv: "cv.yv"; yw: "cv.yw"; yx: "cv.yx"; yy: "cv.yy"; yz: "cv.yz"; za: "cv.za"; zb: "cv.zb"; zc: "cv.zc"; zd: "cv.zd"; ze: "cv.ze"; zf: "cv.zf"; zg: "cv.zg"; zh: "cv.zh"; zi: "cv.zi"; zj: "cv.zj"; zk: "cv.zk"; zl: "cv.zl"; zm: "cv.zm"; zn: "cv.zn"; zo: "cv.zo"; zp: "cv.zp"; zq: "cv.zq"; zr: "cv.zr"; zs: "cv.zs"; zt: "cv.zt"; zu: "cv.zu"; zv: "cv.zv"; zw: "cv.zw"; zx: "cv.zx"; zy: "cv.zy"; zz: "cv.zz"; }; cw: { aa: "cw.aa"; ab: "cw.ab"; ac: "cw.ac"; ad: "cw.ad"; ae: "cw.ae"; af: "cw.af"; ag: "cw.ag"; ah: "cw.ah"; ai: "cw.ai"; aj: "cw.aj"; ak: "cw.ak"; al: "cw.al"; am: "cw.am"; an: "cw.an"; ao: "cw.ao"; ap: "cw.ap"; aq: "cw.aq"; ar: "cw.ar"; as: "cw.as"; at: "cw.at"; au: "cw.au"; av: "cw.av"; aw: "cw.aw"; ax: "cw.ax"; ay: "cw.ay"; az: "cw.az"; ba: "cw.ba"; bb: "cw.bb"; bc: "cw.bc"; bd: "cw.bd"; be: "cw.be"; bf: "cw.bf"; bg: "cw.bg"; bh: "cw.bh"; bi: "cw.bi"; bj: "cw.bj"; bk: "cw.bk"; bl: "cw.bl"; bm: "cw.bm"; bn: "cw.bn"; bo: "cw.bo"; bp: "cw.bp"; bq: "cw.bq"; br: "cw.br"; bs: "cw.bs"; bt: "cw.bt"; bu: "cw.bu"; bv: "cw.bv"; bw: "cw.bw"; bx: "cw.bx"; by: "cw.by"; bz: "cw.bz"; ca: "cw.ca"; cb: "cw.cb"; cc: "cw.cc"; cd: "cw.cd"; ce: "cw.ce"; cf: "cw.cf"; cg: "cw.cg"; ch: "cw.ch"; ci: "cw.ci"; cj: "cw.cj"; ck: "cw.ck"; cl: "cw.cl"; cm: "cw.cm"; cn: "cw.cn"; co: "cw.co"; cp: "cw.cp"; cq: "cw.cq"; cr: "cw.cr"; cs: "cw.cs"; ct: "cw.ct"; cu: "cw.cu"; cv: "cw.cv"; cw: "cw.cw"; cx: "cw.cx"; cy: "cw.cy"; cz: "cw.cz"; da: "cw.da"; db: "cw.db"; dc: "cw.dc"; dd: "cw.dd"; de: "cw.de"; df: "cw.df"; dg: "cw.dg"; dh: "cw.dh"; di: "cw.di"; dj: "cw.dj"; dk: "cw.dk"; dl: "cw.dl"; dm: "cw.dm"; dn: "cw.dn"; do: "cw.do"; dp: "cw.dp"; dq: "cw.dq"; dr: "cw.dr"; ds: "cw.ds"; dt: "cw.dt"; du: "cw.du"; dv: "cw.dv"; dw: "cw.dw"; dx: "cw.dx"; dy: "cw.dy"; dz: "cw.dz"; ea: "cw.ea"; eb: "cw.eb"; ec: "cw.ec"; ed: "cw.ed"; ee: "cw.ee"; ef: "cw.ef"; eg: "cw.eg"; eh: "cw.eh"; ei: "cw.ei"; ej: "cw.ej"; ek: "cw.ek"; el: "cw.el"; em: "cw.em"; en: "cw.en"; eo: "cw.eo"; ep: "cw.ep"; eq: "cw.eq"; er: "cw.er"; es: "cw.es"; et: "cw.et"; eu: "cw.eu"; ev: "cw.ev"; ew: "cw.ew"; ex: "cw.ex"; ey: "cw.ey"; ez: "cw.ez"; fa: "cw.fa"; fb: "cw.fb"; fc: "cw.fc"; fd: "cw.fd"; fe: "cw.fe"; ff: "cw.ff"; fg: "cw.fg"; fh: "cw.fh"; fi: "cw.fi"; fj: "cw.fj"; fk: "cw.fk"; fl: "cw.fl"; fm: "cw.fm"; fn: "cw.fn"; fo: "cw.fo"; fp: "cw.fp"; fq: "cw.fq"; fr: "cw.fr"; fs: "cw.fs"; ft: "cw.ft"; fu: "cw.fu"; fv: "cw.fv"; fw: "cw.fw"; fx: "cw.fx"; fy: "cw.fy"; fz: "cw.fz"; ga: "cw.ga"; gb: "cw.gb"; gc: "cw.gc"; gd: "cw.gd"; ge: "cw.ge"; gf: "cw.gf"; gg: "cw.gg"; gh: "cw.gh"; gi: "cw.gi"; gj: "cw.gj"; gk: "cw.gk"; gl: "cw.gl"; gm: "cw.gm"; gn: "cw.gn"; go: "cw.go"; gp: "cw.gp"; gq: "cw.gq"; gr: "cw.gr"; gs: "cw.gs"; gt: "cw.gt"; gu: "cw.gu"; gv: "cw.gv"; gw: "cw.gw"; gx: "cw.gx"; gy: "cw.gy"; gz: "cw.gz"; ha: "cw.ha"; hb: "cw.hb"; hc: "cw.hc"; hd: "cw.hd"; he: "cw.he"; hf: "cw.hf"; hg: "cw.hg"; hh: "cw.hh"; hi: "cw.hi"; hj: "cw.hj"; hk: "cw.hk"; hl: "cw.hl"; hm: "cw.hm"; hn: "cw.hn"; ho: "cw.ho"; hp: "cw.hp"; hq: "cw.hq"; hr: "cw.hr"; hs: "cw.hs"; ht: "cw.ht"; hu: "cw.hu"; hv: "cw.hv"; hw: "cw.hw"; hx: "cw.hx"; hy: "cw.hy"; hz: "cw.hz"; ia: "cw.ia"; ib: "cw.ib"; ic: "cw.ic"; id: "cw.id"; ie: "cw.ie"; if: "cw.if"; ig: "cw.ig"; ih: "cw.ih"; ii: "cw.ii"; ij: "cw.ij"; ik: "cw.ik"; il: "cw.il"; im: "cw.im"; in: "cw.in"; io: "cw.io"; ip: "cw.ip"; iq: "cw.iq"; ir: "cw.ir"; is: "cw.is"; it: "cw.it"; iu: "cw.iu"; iv: "cw.iv"; iw: "cw.iw"; ix: "cw.ix"; iy: "cw.iy"; iz: "cw.iz"; ja: "cw.ja"; jb: "cw.jb"; jc: "cw.jc"; jd: "cw.jd"; je: "cw.je"; jf: "cw.jf"; jg: "cw.jg"; jh: "cw.jh"; ji: "cw.ji"; jj: "cw.jj"; jk: "cw.jk"; jl: "cw.jl"; jm: "cw.jm"; jn: "cw.jn"; jo: "cw.jo"; jp: "cw.jp"; jq: "cw.jq"; jr: "cw.jr"; js: "cw.js"; jt: "cw.jt"; ju: "cw.ju"; jv: "cw.jv"; jw: "cw.jw"; jx: "cw.jx"; jy: "cw.jy"; jz: "cw.jz"; ka: "cw.ka"; kb: "cw.kb"; kc: "cw.kc"; kd: "cw.kd"; ke: "cw.ke"; kf: "cw.kf"; kg: "cw.kg"; kh: "cw.kh"; ki: "cw.ki"; kj: "cw.kj"; kk: "cw.kk"; kl: "cw.kl"; km: "cw.km"; kn: "cw.kn"; ko: "cw.ko"; kp: "cw.kp"; kq: "cw.kq"; kr: "cw.kr"; ks: "cw.ks"; kt: "cw.kt"; ku: "cw.ku"; kv: "cw.kv"; kw: "cw.kw"; kx: "cw.kx"; ky: "cw.ky"; kz: "cw.kz"; la: "cw.la"; lb: "cw.lb"; lc: "cw.lc"; ld: "cw.ld"; le: "cw.le"; lf: "cw.lf"; lg: "cw.lg"; lh: "cw.lh"; li: "cw.li"; lj: "cw.lj"; lk: "cw.lk"; ll: "cw.ll"; lm: "cw.lm"; ln: "cw.ln"; lo: "cw.lo"; lp: "cw.lp"; lq: "cw.lq"; lr: "cw.lr"; ls: "cw.ls"; lt: "cw.lt"; lu: "cw.lu"; lv: "cw.lv"; lw: "cw.lw"; lx: "cw.lx"; ly: "cw.ly"; lz: "cw.lz"; ma: "cw.ma"; mb: "cw.mb"; mc: "cw.mc"; md: "cw.md"; me: "cw.me"; mf: "cw.mf"; mg: "cw.mg"; mh: "cw.mh"; mi: "cw.mi"; mj: "cw.mj"; mk: "cw.mk"; ml: "cw.ml"; mm: "cw.mm"; mn: "cw.mn"; mo: "cw.mo"; mp: "cw.mp"; mq: "cw.mq"; mr: "cw.mr"; ms: "cw.ms"; mt: "cw.mt"; mu: "cw.mu"; mv: "cw.mv"; mw: "cw.mw"; mx: "cw.mx"; my: "cw.my"; mz: "cw.mz"; na: "cw.na"; nb: "cw.nb"; nc: "cw.nc"; nd: "cw.nd"; ne: "cw.ne"; nf: "cw.nf"; ng: "cw.ng"; nh: "cw.nh"; ni: "cw.ni"; nj: "cw.nj"; nk: "cw.nk"; nl: "cw.nl"; nm: "cw.nm"; nn: "cw.nn"; no: "cw.no"; np: "cw.np"; nq: "cw.nq"; nr: "cw.nr"; ns: "cw.ns"; nt: "cw.nt"; nu: "cw.nu"; nv: "cw.nv"; nw: "cw.nw"; nx: "cw.nx"; ny: "cw.ny"; nz: "cw.nz"; oa: "cw.oa"; ob: "cw.ob"; oc: "cw.oc"; od: "cw.od"; oe: "cw.oe"; of: "cw.of"; og: "cw.og"; oh: "cw.oh"; oi: "cw.oi"; oj: "cw.oj"; ok: "cw.ok"; ol: "cw.ol"; om: "cw.om"; on: "cw.on"; oo: "cw.oo"; op: "cw.op"; oq: "cw.oq"; or: "cw.or"; os: "cw.os"; ot: "cw.ot"; ou: "cw.ou"; ov: "cw.ov"; ow: "cw.ow"; ox: "cw.ox"; oy: "cw.oy"; oz: "cw.oz"; pa: "cw.pa"; pb: "cw.pb"; pc: "cw.pc"; pd: "cw.pd"; pe: "cw.pe"; pf: "cw.pf"; pg: "cw.pg"; ph: "cw.ph"; pi: "cw.pi"; pj: "cw.pj"; pk: "cw.pk"; pl: "cw.pl"; pm: "cw.pm"; pn: "cw.pn"; po: "cw.po"; pp: "cw.pp"; pq: "cw.pq"; pr: "cw.pr"; ps: "cw.ps"; pt: "cw.pt"; pu: "cw.pu"; pv: "cw.pv"; pw: "cw.pw"; px: "cw.px"; py: "cw.py"; pz: "cw.pz"; qa: "cw.qa"; qb: "cw.qb"; qc: "cw.qc"; qd: "cw.qd"; qe: "cw.qe"; qf: "cw.qf"; qg: "cw.qg"; qh: "cw.qh"; qi: "cw.qi"; qj: "cw.qj"; qk: "cw.qk"; ql: "cw.ql"; qm: "cw.qm"; qn: "cw.qn"; qo: "cw.qo"; qp: "cw.qp"; qq: "cw.qq"; qr: "cw.qr"; qs: "cw.qs"; qt: "cw.qt"; qu: "cw.qu"; qv: "cw.qv"; qw: "cw.qw"; qx: "cw.qx"; qy: "cw.qy"; qz: "cw.qz"; ra: "cw.ra"; rb: "cw.rb"; rc: "cw.rc"; rd: "cw.rd"; re: "cw.re"; rf: "cw.rf"; rg: "cw.rg"; rh: "cw.rh"; ri: "cw.ri"; rj: "cw.rj"; rk: "cw.rk"; rl: "cw.rl"; rm: "cw.rm"; rn: "cw.rn"; ro: "cw.ro"; rp: "cw.rp"; rq: "cw.rq"; rr: "cw.rr"; rs: "cw.rs"; rt: "cw.rt"; ru: "cw.ru"; rv: "cw.rv"; rw: "cw.rw"; rx: "cw.rx"; ry: "cw.ry"; rz: "cw.rz"; sa: "cw.sa"; sb: "cw.sb"; sc: "cw.sc"; sd: "cw.sd"; se: "cw.se"; sf: "cw.sf"; sg: "cw.sg"; sh: "cw.sh"; si: "cw.si"; sj: "cw.sj"; sk: "cw.sk"; sl: "cw.sl"; sm: "cw.sm"; sn: "cw.sn"; so: "cw.so"; sp: "cw.sp"; sq: "cw.sq"; sr: "cw.sr"; ss: "cw.ss"; st: "cw.st"; su: "cw.su"; sv: "cw.sv"; sw: "cw.sw"; sx: "cw.sx"; sy: "cw.sy"; sz: "cw.sz"; ta: "cw.ta"; tb: "cw.tb"; tc: "cw.tc"; td: "cw.td"; te: "cw.te"; tf: "cw.tf"; tg: "cw.tg"; th: "cw.th"; ti: "cw.ti"; tj: "cw.tj"; tk: "cw.tk"; tl: "cw.tl"; tm: "cw.tm"; tn: "cw.tn"; to: "cw.to"; tp: "cw.tp"; tq: "cw.tq"; tr: "cw.tr"; ts: "cw.ts"; tt: "cw.tt"; tu: "cw.tu"; tv: "cw.tv"; tw: "cw.tw"; tx: "cw.tx"; ty: "cw.ty"; tz: "cw.tz"; ua: "cw.ua"; ub: "cw.ub"; uc: "cw.uc"; ud: "cw.ud"; ue: "cw.ue"; uf: "cw.uf"; ug: "cw.ug"; uh: "cw.uh"; ui: "cw.ui"; uj: "cw.uj"; uk: "cw.uk"; ul: "cw.ul"; um: "cw.um"; un: "cw.un"; uo: "cw.uo"; up: "cw.up"; uq: "cw.uq"; ur: "cw.ur"; us: "cw.us"; ut: "cw.ut"; uu: "cw.uu"; uv: "cw.uv"; uw: "cw.uw"; ux: "cw.ux"; uy: "cw.uy"; uz: "cw.uz"; va: "cw.va"; vb: "cw.vb"; vc: "cw.vc"; vd: "cw.vd"; ve: "cw.ve"; vf: "cw.vf"; vg: "cw.vg"; vh: "cw.vh"; vi: "cw.vi"; vj: "cw.vj"; vk: "cw.vk"; vl: "cw.vl"; vm: "cw.vm"; vn: "cw.vn"; vo: "cw.vo"; vp: "cw.vp"; vq: "cw.vq"; vr: "cw.vr"; vs: "cw.vs"; vt: "cw.vt"; vu: "cw.vu"; vv: "cw.vv"; vw: "cw.vw"; vx: "cw.vx"; vy: "cw.vy"; vz: "cw.vz"; wa: "cw.wa"; wb: "cw.wb"; wc: "cw.wc"; wd: "cw.wd"; we: "cw.we"; wf: "cw.wf"; wg: "cw.wg"; wh: "cw.wh"; wi: "cw.wi"; wj: "cw.wj"; wk: "cw.wk"; wl: "cw.wl"; wm: "cw.wm"; wn: "cw.wn"; wo: "cw.wo"; wp: "cw.wp"; wq: "cw.wq"; wr: "cw.wr"; ws: "cw.ws"; wt: "cw.wt"; wu: "cw.wu"; wv: "cw.wv"; ww: "cw.ww"; wx: "cw.wx"; wy: "cw.wy"; wz: "cw.wz"; xa: "cw.xa"; xb: "cw.xb"; xc: "cw.xc"; xd: "cw.xd"; xe: "cw.xe"; xf: "cw.xf"; xg: "cw.xg"; xh: "cw.xh"; xi: "cw.xi"; xj: "cw.xj"; xk: "cw.xk"; xl: "cw.xl"; xm: "cw.xm"; xn: "cw.xn"; xo: "cw.xo"; xp: "cw.xp"; xq: "cw.xq"; xr: "cw.xr"; xs: "cw.xs"; xt: "cw.xt"; xu: "cw.xu"; xv: "cw.xv"; xw: "cw.xw"; xx: "cw.xx"; xy: "cw.xy"; xz: "cw.xz"; ya: "cw.ya"; yb: "cw.yb"; yc: "cw.yc"; yd: "cw.yd"; ye: "cw.ye"; yf: "cw.yf"; yg: "cw.yg"; yh: "cw.yh"; yi: "cw.yi"; yj: "cw.yj"; yk: "cw.yk"; yl: "cw.yl"; ym: "cw.ym"; yn: "cw.yn"; yo: "cw.yo"; yp: "cw.yp"; yq: "cw.yq"; yr: "cw.yr"; ys: "cw.ys"; yt: "cw.yt"; yu: "cw.yu"; yv: "cw.yv"; yw: "cw.yw"; yx: "cw.yx"; yy: "cw.yy"; yz: "cw.yz"; za: "cw.za"; zb: "cw.zb"; zc: "cw.zc"; zd: "cw.zd"; ze: "cw.ze"; zf: "cw.zf"; zg: "cw.zg"; zh: "cw.zh"; zi: "cw.zi"; zj: "cw.zj"; zk: "cw.zk"; zl: "cw.zl"; zm: "cw.zm"; zn: "cw.zn"; zo: "cw.zo"; zp: "cw.zp"; zq: "cw.zq"; zr: "cw.zr"; zs: "cw.zs"; zt: "cw.zt"; zu: "cw.zu"; zv: "cw.zv"; zw: "cw.zw"; zx: "cw.zx"; zy: "cw.zy"; zz: "cw.zz"; }; cx: { aa: "cx.aa"; ab: "cx.ab"; ac: "cx.ac"; ad: "cx.ad"; ae: "cx.ae"; af: "cx.af"; ag: "cx.ag"; ah: "cx.ah"; ai: "cx.ai"; aj: "cx.aj"; ak: "cx.ak"; al: "cx.al"; am: "cx.am"; an: "cx.an"; ao: "cx.ao"; ap: "cx.ap"; aq: "cx.aq"; ar: "cx.ar"; as: "cx.as"; at: "cx.at"; au: "cx.au"; av: "cx.av"; aw: "cx.aw"; ax: "cx.ax"; ay: "cx.ay"; az: "cx.az"; ba: "cx.ba"; bb: "cx.bb"; bc: "cx.bc"; bd: "cx.bd"; be: "cx.be"; bf: "cx.bf"; bg: "cx.bg"; bh: "cx.bh"; bi: "cx.bi"; bj: "cx.bj"; bk: "cx.bk"; bl: "cx.bl"; bm: "cx.bm"; bn: "cx.bn"; bo: "cx.bo"; bp: "cx.bp"; bq: "cx.bq"; br: "cx.br"; bs: "cx.bs"; bt: "cx.bt"; bu: "cx.bu"; bv: "cx.bv"; bw: "cx.bw"; bx: "cx.bx"; by: "cx.by"; bz: "cx.bz"; ca: "cx.ca"; cb: "cx.cb"; cc: "cx.cc"; cd: "cx.cd"; ce: "cx.ce"; cf: "cx.cf"; cg: "cx.cg"; ch: "cx.ch"; ci: "cx.ci"; cj: "cx.cj"; ck: "cx.ck"; cl: "cx.cl"; cm: "cx.cm"; cn: "cx.cn"; co: "cx.co"; cp: "cx.cp"; cq: "cx.cq"; cr: "cx.cr"; cs: "cx.cs"; ct: "cx.ct"; cu: "cx.cu"; cv: "cx.cv"; cw: "cx.cw"; cx: "cx.cx"; cy: "cx.cy"; cz: "cx.cz"; da: "cx.da"; db: "cx.db"; dc: "cx.dc"; dd: "cx.dd"; de: "cx.de"; df: "cx.df"; dg: "cx.dg"; dh: "cx.dh"; di: "cx.di"; dj: "cx.dj"; dk: "cx.dk"; dl: "cx.dl"; dm: "cx.dm"; dn: "cx.dn"; do: "cx.do"; dp: "cx.dp"; dq: "cx.dq"; dr: "cx.dr"; ds: "cx.ds"; dt: "cx.dt"; du: "cx.du"; dv: "cx.dv"; dw: "cx.dw"; dx: "cx.dx"; dy: "cx.dy"; dz: "cx.dz"; ea: "cx.ea"; eb: "cx.eb"; ec: "cx.ec"; ed: "cx.ed"; ee: "cx.ee"; ef: "cx.ef"; eg: "cx.eg"; eh: "cx.eh"; ei: "cx.ei"; ej: "cx.ej"; ek: "cx.ek"; el: "cx.el"; em: "cx.em"; en: "cx.en"; eo: "cx.eo"; ep: "cx.ep"; eq: "cx.eq"; er: "cx.er"; es: "cx.es"; et: "cx.et"; eu: "cx.eu"; ev: "cx.ev"; ew: "cx.ew"; ex: "cx.ex"; ey: "cx.ey"; ez: "cx.ez"; fa: "cx.fa"; fb: "cx.fb"; fc: "cx.fc"; fd: "cx.fd"; fe: "cx.fe"; ff: "cx.ff"; fg: "cx.fg"; fh: "cx.fh"; fi: "cx.fi"; fj: "cx.fj"; fk: "cx.fk"; fl: "cx.fl"; fm: "cx.fm"; fn: "cx.fn"; fo: "cx.fo"; fp: "cx.fp"; fq: "cx.fq"; fr: "cx.fr"; fs: "cx.fs"; ft: "cx.ft"; fu: "cx.fu"; fv: "cx.fv"; fw: "cx.fw"; fx: "cx.fx"; fy: "cx.fy"; fz: "cx.fz"; ga: "cx.ga"; gb: "cx.gb"; gc: "cx.gc"; gd: "cx.gd"; ge: "cx.ge"; gf: "cx.gf"; gg: "cx.gg"; gh: "cx.gh"; gi: "cx.gi"; gj: "cx.gj"; gk: "cx.gk"; gl: "cx.gl"; gm: "cx.gm"; gn: "cx.gn"; go: "cx.go"; gp: "cx.gp"; gq: "cx.gq"; gr: "cx.gr"; gs: "cx.gs"; gt: "cx.gt"; gu: "cx.gu"; gv: "cx.gv"; gw: "cx.gw"; gx: "cx.gx"; gy: "cx.gy"; gz: "cx.gz"; ha: "cx.ha"; hb: "cx.hb"; hc: "cx.hc"; hd: "cx.hd"; he: "cx.he"; hf: "cx.hf"; hg: "cx.hg"; hh: "cx.hh"; hi: "cx.hi"; hj: "cx.hj"; hk: "cx.hk"; hl: "cx.hl"; hm: "cx.hm"; hn: "cx.hn"; ho: "cx.ho"; hp: "cx.hp"; hq: "cx.hq"; hr: "cx.hr"; hs: "cx.hs"; ht: "cx.ht"; hu: "cx.hu"; hv: "cx.hv"; hw: "cx.hw"; hx: "cx.hx"; hy: "cx.hy"; hz: "cx.hz"; ia: "cx.ia"; ib: "cx.ib"; ic: "cx.ic"; id: "cx.id"; ie: "cx.ie"; if: "cx.if"; ig: "cx.ig"; ih: "cx.ih"; ii: "cx.ii"; ij: "cx.ij"; ik: "cx.ik"; il: "cx.il"; im: "cx.im"; in: "cx.in"; io: "cx.io"; ip: "cx.ip"; iq: "cx.iq"; ir: "cx.ir"; is: "cx.is"; it: "cx.it"; iu: "cx.iu"; iv: "cx.iv"; iw: "cx.iw"; ix: "cx.ix"; iy: "cx.iy"; iz: "cx.iz"; ja: "cx.ja"; jb: "cx.jb"; jc: "cx.jc"; jd: "cx.jd"; je: "cx.je"; jf: "cx.jf"; jg: "cx.jg"; jh: "cx.jh"; ji: "cx.ji"; jj: "cx.jj"; jk: "cx.jk"; jl: "cx.jl"; jm: "cx.jm"; jn: "cx.jn"; jo: "cx.jo"; jp: "cx.jp"; jq: "cx.jq"; jr: "cx.jr"; js: "cx.js"; jt: "cx.jt"; ju: "cx.ju"; jv: "cx.jv"; jw: "cx.jw"; jx: "cx.jx"; jy: "cx.jy"; jz: "cx.jz"; ka: "cx.ka"; kb: "cx.kb"; kc: "cx.kc"; kd: "cx.kd"; ke: "cx.ke"; kf: "cx.kf"; kg: "cx.kg"; kh: "cx.kh"; ki: "cx.ki"; kj: "cx.kj"; kk: "cx.kk"; kl: "cx.kl"; km: "cx.km"; kn: "cx.kn"; ko: "cx.ko"; kp: "cx.kp"; kq: "cx.kq"; kr: "cx.kr"; ks: "cx.ks"; kt: "cx.kt"; ku: "cx.ku"; kv: "cx.kv"; kw: "cx.kw"; kx: "cx.kx"; ky: "cx.ky"; kz: "cx.kz"; la: "cx.la"; lb: "cx.lb"; lc: "cx.lc"; ld: "cx.ld"; le: "cx.le"; lf: "cx.lf"; lg: "cx.lg"; lh: "cx.lh"; li: "cx.li"; lj: "cx.lj"; lk: "cx.lk"; ll: "cx.ll"; lm: "cx.lm"; ln: "cx.ln"; lo: "cx.lo"; lp: "cx.lp"; lq: "cx.lq"; lr: "cx.lr"; ls: "cx.ls"; lt: "cx.lt"; lu: "cx.lu"; lv: "cx.lv"; lw: "cx.lw"; lx: "cx.lx"; ly: "cx.ly"; lz: "cx.lz"; ma: "cx.ma"; mb: "cx.mb"; mc: "cx.mc"; md: "cx.md"; me: "cx.me"; mf: "cx.mf"; mg: "cx.mg"; mh: "cx.mh"; mi: "cx.mi"; mj: "cx.mj"; mk: "cx.mk"; ml: "cx.ml"; mm: "cx.mm"; mn: "cx.mn"; mo: "cx.mo"; mp: "cx.mp"; mq: "cx.mq"; mr: "cx.mr"; ms: "cx.ms"; mt: "cx.mt"; mu: "cx.mu"; mv: "cx.mv"; mw: "cx.mw"; mx: "cx.mx"; my: "cx.my"; mz: "cx.mz"; na: "cx.na"; nb: "cx.nb"; nc: "cx.nc"; nd: "cx.nd"; ne: "cx.ne"; nf: "cx.nf"; ng: "cx.ng"; nh: "cx.nh"; ni: "cx.ni"; nj: "cx.nj"; nk: "cx.nk"; nl: "cx.nl"; nm: "cx.nm"; nn: "cx.nn"; no: "cx.no"; np: "cx.np"; nq: "cx.nq"; nr: "cx.nr"; ns: "cx.ns"; nt: "cx.nt"; nu: "cx.nu"; nv: "cx.nv"; nw: "cx.nw"; nx: "cx.nx"; ny: "cx.ny"; nz: "cx.nz"; oa: "cx.oa"; ob: "cx.ob"; oc: "cx.oc"; od: "cx.od"; oe: "cx.oe"; of: "cx.of"; og: "cx.og"; oh: "cx.oh"; oi: "cx.oi"; oj: "cx.oj"; ok: "cx.ok"; ol: "cx.ol"; om: "cx.om"; on: "cx.on"; oo: "cx.oo"; op: "cx.op"; oq: "cx.oq"; or: "cx.or"; os: "cx.os"; ot: "cx.ot"; ou: "cx.ou"; ov: "cx.ov"; ow: "cx.ow"; ox: "cx.ox"; oy: "cx.oy"; oz: "cx.oz"; pa: "cx.pa"; pb: "cx.pb"; pc: "cx.pc"; pd: "cx.pd"; pe: "cx.pe"; pf: "cx.pf"; pg: "cx.pg"; ph: "cx.ph"; pi: "cx.pi"; pj: "cx.pj"; pk: "cx.pk"; pl: "cx.pl"; pm: "cx.pm"; pn: "cx.pn"; po: "cx.po"; pp: "cx.pp"; pq: "cx.pq"; pr: "cx.pr"; ps: "cx.ps"; pt: "cx.pt"; pu: "cx.pu"; pv: "cx.pv"; pw: "cx.pw"; px: "cx.px"; py: "cx.py"; pz: "cx.pz"; qa: "cx.qa"; qb: "cx.qb"; qc: "cx.qc"; qd: "cx.qd"; qe: "cx.qe"; qf: "cx.qf"; qg: "cx.qg"; qh: "cx.qh"; qi: "cx.qi"; qj: "cx.qj"; qk: "cx.qk"; ql: "cx.ql"; qm: "cx.qm"; qn: "cx.qn"; qo: "cx.qo"; qp: "cx.qp"; qq: "cx.qq"; qr: "cx.qr"; qs: "cx.qs"; qt: "cx.qt"; qu: "cx.qu"; qv: "cx.qv"; qw: "cx.qw"; qx: "cx.qx"; qy: "cx.qy"; qz: "cx.qz"; ra: "cx.ra"; rb: "cx.rb"; rc: "cx.rc"; rd: "cx.rd"; re: "cx.re"; rf: "cx.rf"; rg: "cx.rg"; rh: "cx.rh"; ri: "cx.ri"; rj: "cx.rj"; rk: "cx.rk"; rl: "cx.rl"; rm: "cx.rm"; rn: "cx.rn"; ro: "cx.ro"; rp: "cx.rp"; rq: "cx.rq"; rr: "cx.rr"; rs: "cx.rs"; rt: "cx.rt"; ru: "cx.ru"; rv: "cx.rv"; rw: "cx.rw"; rx: "cx.rx"; ry: "cx.ry"; rz: "cx.rz"; sa: "cx.sa"; sb: "cx.sb"; sc: "cx.sc"; sd: "cx.sd"; se: "cx.se"; sf: "cx.sf"; sg: "cx.sg"; sh: "cx.sh"; si: "cx.si"; sj: "cx.sj"; sk: "cx.sk"; sl: "cx.sl"; sm: "cx.sm"; sn: "cx.sn"; so: "cx.so"; sp: "cx.sp"; sq: "cx.sq"; sr: "cx.sr"; ss: "cx.ss"; st: "cx.st"; su: "cx.su"; sv: "cx.sv"; sw: "cx.sw"; sx: "cx.sx"; sy: "cx.sy"; sz: "cx.sz"; ta: "cx.ta"; tb: "cx.tb"; tc: "cx.tc"; td: "cx.td"; te: "cx.te"; tf: "cx.tf"; tg: "cx.tg"; th: "cx.th"; ti: "cx.ti"; tj: "cx.tj"; tk: "cx.tk"; tl: "cx.tl"; tm: "cx.tm"; tn: "cx.tn"; to: "cx.to"; tp: "cx.tp"; tq: "cx.tq"; tr: "cx.tr"; ts: "cx.ts"; tt: "cx.tt"; tu: "cx.tu"; tv: "cx.tv"; tw: "cx.tw"; tx: "cx.tx"; ty: "cx.ty"; tz: "cx.tz"; ua: "cx.ua"; ub: "cx.ub"; uc: "cx.uc"; ud: "cx.ud"; ue: "cx.ue"; uf: "cx.uf"; ug: "cx.ug"; uh: "cx.uh"; ui: "cx.ui"; uj: "cx.uj"; uk: "cx.uk"; ul: "cx.ul"; um: "cx.um"; un: "cx.un"; uo: "cx.uo"; up: "cx.up"; uq: "cx.uq"; ur: "cx.ur"; us: "cx.us"; ut: "cx.ut"; uu: "cx.uu"; uv: "cx.uv"; uw: "cx.uw"; ux: "cx.ux"; uy: "cx.uy"; uz: "cx.uz"; va: "cx.va"; vb: "cx.vb"; vc: "cx.vc"; vd: "cx.vd"; ve: "cx.ve"; vf: "cx.vf"; vg: "cx.vg"; vh: "cx.vh"; vi: "cx.vi"; vj: "cx.vj"; vk: "cx.vk"; vl: "cx.vl"; vm: "cx.vm"; vn: "cx.vn"; vo: "cx.vo"; vp: "cx.vp"; vq: "cx.vq"; vr: "cx.vr"; vs: "cx.vs"; vt: "cx.vt"; vu: "cx.vu"; vv: "cx.vv"; vw: "cx.vw"; vx: "cx.vx"; vy: "cx.vy"; vz: "cx.vz"; wa: "cx.wa"; wb: "cx.wb"; wc: "cx.wc"; wd: "cx.wd"; we: "cx.we"; wf: "cx.wf"; wg: "cx.wg"; wh: "cx.wh"; wi: "cx.wi"; wj: "cx.wj"; wk: "cx.wk"; wl: "cx.wl"; wm: "cx.wm"; wn: "cx.wn"; wo: "cx.wo"; wp: "cx.wp"; wq: "cx.wq"; wr: "cx.wr"; ws: "cx.ws"; wt: "cx.wt"; wu: "cx.wu"; wv: "cx.wv"; ww: "cx.ww"; wx: "cx.wx"; wy: "cx.wy"; wz: "cx.wz"; xa: "cx.xa"; xb: "cx.xb"; xc: "cx.xc"; xd: "cx.xd"; xe: "cx.xe"; xf: "cx.xf"; xg: "cx.xg"; xh: "cx.xh"; xi: "cx.xi"; xj: "cx.xj"; xk: "cx.xk"; xl: "cx.xl"; xm: "cx.xm"; xn: "cx.xn"; xo: "cx.xo"; xp: "cx.xp"; xq: "cx.xq"; xr: "cx.xr"; xs: "cx.xs"; xt: "cx.xt"; xu: "cx.xu"; xv: "cx.xv"; xw: "cx.xw"; xx: "cx.xx"; xy: "cx.xy"; xz: "cx.xz"; ya: "cx.ya"; yb: "cx.yb"; yc: "cx.yc"; yd: "cx.yd"; ye: "cx.ye"; yf: "cx.yf"; yg: "cx.yg"; yh: "cx.yh"; yi: "cx.yi"; yj: "cx.yj"; yk: "cx.yk"; yl: "cx.yl"; ym: "cx.ym"; yn: "cx.yn"; yo: "cx.yo"; yp: "cx.yp"; yq: "cx.yq"; yr: "cx.yr"; ys: "cx.ys"; yt: "cx.yt"; yu: "cx.yu"; yv: "cx.yv"; yw: "cx.yw"; yx: "cx.yx"; yy: "cx.yy"; yz: "cx.yz"; za: "cx.za"; zb: "cx.zb"; zc: "cx.zc"; zd: "cx.zd"; ze: "cx.ze"; zf: "cx.zf"; zg: "cx.zg"; zh: "cx.zh"; zi: "cx.zi"; zj: "cx.zj"; zk: "cx.zk"; zl: "cx.zl"; zm: "cx.zm"; zn: "cx.zn"; zo: "cx.zo"; zp: "cx.zp"; zq: "cx.zq"; zr: "cx.zr"; zs: "cx.zs"; zt: "cx.zt"; zu: "cx.zu"; zv: "cx.zv"; zw: "cx.zw"; zx: "cx.zx"; zy: "cx.zy"; zz: "cx.zz"; }; cy: { aa: "cy.aa"; ab: "cy.ab"; ac: "cy.ac"; ad: "cy.ad"; ae: "cy.ae"; af: "cy.af"; ag: "cy.ag"; ah: "cy.ah"; ai: "cy.ai"; aj: "cy.aj"; ak: "cy.ak"; al: "cy.al"; am: "cy.am"; an: "cy.an"; ao: "cy.ao"; ap: "cy.ap"; aq: "cy.aq"; ar: "cy.ar"; as: "cy.as"; at: "cy.at"; au: "cy.au"; av: "cy.av"; aw: "cy.aw"; ax: "cy.ax"; ay: "cy.ay"; az: "cy.az"; ba: "cy.ba"; bb: "cy.bb"; bc: "cy.bc"; bd: "cy.bd"; be: "cy.be"; bf: "cy.bf"; bg: "cy.bg"; bh: "cy.bh"; bi: "cy.bi"; bj: "cy.bj"; bk: "cy.bk"; bl: "cy.bl"; bm: "cy.bm"; bn: "cy.bn"; bo: "cy.bo"; bp: "cy.bp"; bq: "cy.bq"; br: "cy.br"; bs: "cy.bs"; bt: "cy.bt"; bu: "cy.bu"; bv: "cy.bv"; bw: "cy.bw"; bx: "cy.bx"; by: "cy.by"; bz: "cy.bz"; ca: "cy.ca"; cb: "cy.cb"; cc: "cy.cc"; cd: "cy.cd"; ce: "cy.ce"; cf: "cy.cf"; cg: "cy.cg"; ch: "cy.ch"; ci: "cy.ci"; cj: "cy.cj"; ck: "cy.ck"; cl: "cy.cl"; cm: "cy.cm"; cn: "cy.cn"; co: "cy.co"; cp: "cy.cp"; cq: "cy.cq"; cr: "cy.cr"; cs: "cy.cs"; ct: "cy.ct"; cu: "cy.cu"; cv: "cy.cv"; cw: "cy.cw"; cx: "cy.cx"; cy: "cy.cy"; cz: "cy.cz"; da: "cy.da"; db: "cy.db"; dc: "cy.dc"; dd: "cy.dd"; de: "cy.de"; df: "cy.df"; dg: "cy.dg"; dh: "cy.dh"; di: "cy.di"; dj: "cy.dj"; dk: "cy.dk"; dl: "cy.dl"; dm: "cy.dm"; dn: "cy.dn"; do: "cy.do"; dp: "cy.dp"; dq: "cy.dq"; dr: "cy.dr"; ds: "cy.ds"; dt: "cy.dt"; du: "cy.du"; dv: "cy.dv"; dw: "cy.dw"; dx: "cy.dx"; dy: "cy.dy"; dz: "cy.dz"; ea: "cy.ea"; eb: "cy.eb"; ec: "cy.ec"; ed: "cy.ed"; ee: "cy.ee"; ef: "cy.ef"; eg: "cy.eg"; eh: "cy.eh"; ei: "cy.ei"; ej: "cy.ej"; ek: "cy.ek"; el: "cy.el"; em: "cy.em"; en: "cy.en"; eo: "cy.eo"; ep: "cy.ep"; eq: "cy.eq"; er: "cy.er"; es: "cy.es"; et: "cy.et"; eu: "cy.eu"; ev: "cy.ev"; ew: "cy.ew"; ex: "cy.ex"; ey: "cy.ey"; ez: "cy.ez"; fa: "cy.fa"; fb: "cy.fb"; fc: "cy.fc"; fd: "cy.fd"; fe: "cy.fe"; ff: "cy.ff"; fg: "cy.fg"; fh: "cy.fh"; fi: "cy.fi"; fj: "cy.fj"; fk: "cy.fk"; fl: "cy.fl"; fm: "cy.fm"; fn: "cy.fn"; fo: "cy.fo"; fp: "cy.fp"; fq: "cy.fq"; fr: "cy.fr"; fs: "cy.fs"; ft: "cy.ft"; fu: "cy.fu"; fv: "cy.fv"; fw: "cy.fw"; fx: "cy.fx"; fy: "cy.fy"; fz: "cy.fz"; ga: "cy.ga"; gb: "cy.gb"; gc: "cy.gc"; gd: "cy.gd"; ge: "cy.ge"; gf: "cy.gf"; gg: "cy.gg"; gh: "cy.gh"; gi: "cy.gi"; gj: "cy.gj"; gk: "cy.gk"; gl: "cy.gl"; gm: "cy.gm"; gn: "cy.gn"; go: "cy.go"; gp: "cy.gp"; gq: "cy.gq"; gr: "cy.gr"; gs: "cy.gs"; gt: "cy.gt"; gu: "cy.gu"; gv: "cy.gv"; gw: "cy.gw"; gx: "cy.gx"; gy: "cy.gy"; gz: "cy.gz"; ha: "cy.ha"; hb: "cy.hb"; hc: "cy.hc"; hd: "cy.hd"; he: "cy.he"; hf: "cy.hf"; hg: "cy.hg"; hh: "cy.hh"; hi: "cy.hi"; hj: "cy.hj"; hk: "cy.hk"; hl: "cy.hl"; hm: "cy.hm"; hn: "cy.hn"; ho: "cy.ho"; hp: "cy.hp"; hq: "cy.hq"; hr: "cy.hr"; hs: "cy.hs"; ht: "cy.ht"; hu: "cy.hu"; hv: "cy.hv"; hw: "cy.hw"; hx: "cy.hx"; hy: "cy.hy"; hz: "cy.hz"; ia: "cy.ia"; ib: "cy.ib"; ic: "cy.ic"; id: "cy.id"; ie: "cy.ie"; if: "cy.if"; ig: "cy.ig"; ih: "cy.ih"; ii: "cy.ii"; ij: "cy.ij"; ik: "cy.ik"; il: "cy.il"; im: "cy.im"; in: "cy.in"; io: "cy.io"; ip: "cy.ip"; iq: "cy.iq"; ir: "cy.ir"; is: "cy.is"; it: "cy.it"; iu: "cy.iu"; iv: "cy.iv"; iw: "cy.iw"; ix: "cy.ix"; iy: "cy.iy"; iz: "cy.iz"; ja: "cy.ja"; jb: "cy.jb"; jc: "cy.jc"; jd: "cy.jd"; je: "cy.je"; jf: "cy.jf"; jg: "cy.jg"; jh: "cy.jh"; ji: "cy.ji"; jj: "cy.jj"; jk: "cy.jk"; jl: "cy.jl"; jm: "cy.jm"; jn: "cy.jn"; jo: "cy.jo"; jp: "cy.jp"; jq: "cy.jq"; jr: "cy.jr"; js: "cy.js"; jt: "cy.jt"; ju: "cy.ju"; jv: "cy.jv"; jw: "cy.jw"; jx: "cy.jx"; jy: "cy.jy"; jz: "cy.jz"; ka: "cy.ka"; kb: "cy.kb"; kc: "cy.kc"; kd: "cy.kd"; ke: "cy.ke"; kf: "cy.kf"; kg: "cy.kg"; kh: "cy.kh"; ki: "cy.ki"; kj: "cy.kj"; kk: "cy.kk"; kl: "cy.kl"; km: "cy.km"; kn: "cy.kn"; ko: "cy.ko"; kp: "cy.kp"; kq: "cy.kq"; kr: "cy.kr"; ks: "cy.ks"; kt: "cy.kt"; ku: "cy.ku"; kv: "cy.kv"; kw: "cy.kw"; kx: "cy.kx"; ky: "cy.ky"; kz: "cy.kz"; la: "cy.la"; lb: "cy.lb"; lc: "cy.lc"; ld: "cy.ld"; le: "cy.le"; lf: "cy.lf"; lg: "cy.lg"; lh: "cy.lh"; li: "cy.li"; lj: "cy.lj"; lk: "cy.lk"; ll: "cy.ll"; lm: "cy.lm"; ln: "cy.ln"; lo: "cy.lo"; lp: "cy.lp"; lq: "cy.lq"; lr: "cy.lr"; ls: "cy.ls"; lt: "cy.lt"; lu: "cy.lu"; lv: "cy.lv"; lw: "cy.lw"; lx: "cy.lx"; ly: "cy.ly"; lz: "cy.lz"; ma: "cy.ma"; mb: "cy.mb"; mc: "cy.mc"; md: "cy.md"; me: "cy.me"; mf: "cy.mf"; mg: "cy.mg"; mh: "cy.mh"; mi: "cy.mi"; mj: "cy.mj"; mk: "cy.mk"; ml: "cy.ml"; mm: "cy.mm"; mn: "cy.mn"; mo: "cy.mo"; mp: "cy.mp"; mq: "cy.mq"; mr: "cy.mr"; ms: "cy.ms"; mt: "cy.mt"; mu: "cy.mu"; mv: "cy.mv"; mw: "cy.mw"; mx: "cy.mx"; my: "cy.my"; mz: "cy.mz"; na: "cy.na"; nb: "cy.nb"; nc: "cy.nc"; nd: "cy.nd"; ne: "cy.ne"; nf: "cy.nf"; ng: "cy.ng"; nh: "cy.nh"; ni: "cy.ni"; nj: "cy.nj"; nk: "cy.nk"; nl: "cy.nl"; nm: "cy.nm"; nn: "cy.nn"; no: "cy.no"; np: "cy.np"; nq: "cy.nq"; nr: "cy.nr"; ns: "cy.ns"; nt: "cy.nt"; nu: "cy.nu"; nv: "cy.nv"; nw: "cy.nw"; nx: "cy.nx"; ny: "cy.ny"; nz: "cy.nz"; oa: "cy.oa"; ob: "cy.ob"; oc: "cy.oc"; od: "cy.od"; oe: "cy.oe"; of: "cy.of"; og: "cy.og"; oh: "cy.oh"; oi: "cy.oi"; oj: "cy.oj"; ok: "cy.ok"; ol: "cy.ol"; om: "cy.om"; on: "cy.on"; oo: "cy.oo"; op: "cy.op"; oq: "cy.oq"; or: "cy.or"; os: "cy.os"; ot: "cy.ot"; ou: "cy.ou"; ov: "cy.ov"; ow: "cy.ow"; ox: "cy.ox"; oy: "cy.oy"; oz: "cy.oz"; pa: "cy.pa"; pb: "cy.pb"; pc: "cy.pc"; pd: "cy.pd"; pe: "cy.pe"; pf: "cy.pf"; pg: "cy.pg"; ph: "cy.ph"; pi: "cy.pi"; pj: "cy.pj"; pk: "cy.pk"; pl: "cy.pl"; pm: "cy.pm"; pn: "cy.pn"; po: "cy.po"; pp: "cy.pp"; pq: "cy.pq"; pr: "cy.pr"; ps: "cy.ps"; pt: "cy.pt"; pu: "cy.pu"; pv: "cy.pv"; pw: "cy.pw"; px: "cy.px"; py: "cy.py"; pz: "cy.pz"; qa: "cy.qa"; qb: "cy.qb"; qc: "cy.qc"; qd: "cy.qd"; qe: "cy.qe"; qf: "cy.qf"; qg: "cy.qg"; qh: "cy.qh"; qi: "cy.qi"; qj: "cy.qj"; qk: "cy.qk"; ql: "cy.ql"; qm: "cy.qm"; qn: "cy.qn"; qo: "cy.qo"; qp: "cy.qp"; qq: "cy.qq"; qr: "cy.qr"; qs: "cy.qs"; qt: "cy.qt"; qu: "cy.qu"; qv: "cy.qv"; qw: "cy.qw"; qx: "cy.qx"; qy: "cy.qy"; qz: "cy.qz"; ra: "cy.ra"; rb: "cy.rb"; rc: "cy.rc"; rd: "cy.rd"; re: "cy.re"; rf: "cy.rf"; rg: "cy.rg"; rh: "cy.rh"; ri: "cy.ri"; rj: "cy.rj"; rk: "cy.rk"; rl: "cy.rl"; rm: "cy.rm"; rn: "cy.rn"; ro: "cy.ro"; rp: "cy.rp"; rq: "cy.rq"; rr: "cy.rr"; rs: "cy.rs"; rt: "cy.rt"; ru: "cy.ru"; rv: "cy.rv"; rw: "cy.rw"; rx: "cy.rx"; ry: "cy.ry"; rz: "cy.rz"; sa: "cy.sa"; sb: "cy.sb"; sc: "cy.sc"; sd: "cy.sd"; se: "cy.se"; sf: "cy.sf"; sg: "cy.sg"; sh: "cy.sh"; si: "cy.si"; sj: "cy.sj"; sk: "cy.sk"; sl: "cy.sl"; sm: "cy.sm"; sn: "cy.sn"; so: "cy.so"; sp: "cy.sp"; sq: "cy.sq"; sr: "cy.sr"; ss: "cy.ss"; st: "cy.st"; su: "cy.su"; sv: "cy.sv"; sw: "cy.sw"; sx: "cy.sx"; sy: "cy.sy"; sz: "cy.sz"; ta: "cy.ta"; tb: "cy.tb"; tc: "cy.tc"; td: "cy.td"; te: "cy.te"; tf: "cy.tf"; tg: "cy.tg"; th: "cy.th"; ti: "cy.ti"; tj: "cy.tj"; tk: "cy.tk"; tl: "cy.tl"; tm: "cy.tm"; tn: "cy.tn"; to: "cy.to"; tp: "cy.tp"; tq: "cy.tq"; tr: "cy.tr"; ts: "cy.ts"; tt: "cy.tt"; tu: "cy.tu"; tv: "cy.tv"; tw: "cy.tw"; tx: "cy.tx"; ty: "cy.ty"; tz: "cy.tz"; ua: "cy.ua"; ub: "cy.ub"; uc: "cy.uc"; ud: "cy.ud"; ue: "cy.ue"; uf: "cy.uf"; ug: "cy.ug"; uh: "cy.uh"; ui: "cy.ui"; uj: "cy.uj"; uk: "cy.uk"; ul: "cy.ul"; um: "cy.um"; un: "cy.un"; uo: "cy.uo"; up: "cy.up"; uq: "cy.uq"; ur: "cy.ur"; us: "cy.us"; ut: "cy.ut"; uu: "cy.uu"; uv: "cy.uv"; uw: "cy.uw"; ux: "cy.ux"; uy: "cy.uy"; uz: "cy.uz"; va: "cy.va"; vb: "cy.vb"; vc: "cy.vc"; vd: "cy.vd"; ve: "cy.ve"; vf: "cy.vf"; vg: "cy.vg"; vh: "cy.vh"; vi: "cy.vi"; vj: "cy.vj"; vk: "cy.vk"; vl: "cy.vl"; vm: "cy.vm"; vn: "cy.vn"; vo: "cy.vo"; vp: "cy.vp"; vq: "cy.vq"; vr: "cy.vr"; vs: "cy.vs"; vt: "cy.vt"; vu: "cy.vu"; vv: "cy.vv"; vw: "cy.vw"; vx: "cy.vx"; vy: "cy.vy"; vz: "cy.vz"; wa: "cy.wa"; wb: "cy.wb"; wc: "cy.wc"; wd: "cy.wd"; we: "cy.we"; wf: "cy.wf"; wg: "cy.wg"; wh: "cy.wh"; wi: "cy.wi"; wj: "cy.wj"; wk: "cy.wk"; wl: "cy.wl"; wm: "cy.wm"; wn: "cy.wn"; wo: "cy.wo"; wp: "cy.wp"; wq: "cy.wq"; wr: "cy.wr"; ws: "cy.ws"; wt: "cy.wt"; wu: "cy.wu"; wv: "cy.wv"; ww: "cy.ww"; wx: "cy.wx"; wy: "cy.wy"; wz: "cy.wz"; xa: "cy.xa"; xb: "cy.xb"; xc: "cy.xc"; xd: "cy.xd"; xe: "cy.xe"; xf: "cy.xf"; xg: "cy.xg"; xh: "cy.xh"; xi: "cy.xi"; xj: "cy.xj"; xk: "cy.xk"; xl: "cy.xl"; xm: "cy.xm"; xn: "cy.xn"; xo: "cy.xo"; xp: "cy.xp"; xq: "cy.xq"; xr: "cy.xr"; xs: "cy.xs"; xt: "cy.xt"; xu: "cy.xu"; xv: "cy.xv"; xw: "cy.xw"; xx: "cy.xx"; xy: "cy.xy"; xz: "cy.xz"; ya: "cy.ya"; yb: "cy.yb"; yc: "cy.yc"; yd: "cy.yd"; ye: "cy.ye"; yf: "cy.yf"; yg: "cy.yg"; yh: "cy.yh"; yi: "cy.yi"; yj: "cy.yj"; yk: "cy.yk"; yl: "cy.yl"; ym: "cy.ym"; yn: "cy.yn"; yo: "cy.yo"; yp: "cy.yp"; yq: "cy.yq"; yr: "cy.yr"; ys: "cy.ys"; yt: "cy.yt"; yu: "cy.yu"; yv: "cy.yv"; yw: "cy.yw"; yx: "cy.yx"; yy: "cy.yy"; yz: "cy.yz"; za: "cy.za"; zb: "cy.zb"; zc: "cy.zc"; zd: "cy.zd"; ze: "cy.ze"; zf: "cy.zf"; zg: "cy.zg"; zh: "cy.zh"; zi: "cy.zi"; zj: "cy.zj"; zk: "cy.zk"; zl: "cy.zl"; zm: "cy.zm"; zn: "cy.zn"; zo: "cy.zo"; zp: "cy.zp"; zq: "cy.zq"; zr: "cy.zr"; zs: "cy.zs"; zt: "cy.zt"; zu: "cy.zu"; zv: "cy.zv"; zw: "cy.zw"; zx: "cy.zx"; zy: "cy.zy"; zz: "cy.zz"; }; cz: { aa: "cz.aa"; ab: "cz.ab"; ac: "cz.ac"; ad: "cz.ad"; ae: "cz.ae"; af: "cz.af"; ag: "cz.ag"; ah: "cz.ah"; ai: "cz.ai"; aj: "cz.aj"; ak: "cz.ak"; al: "cz.al"; am: "cz.am"; an: "cz.an"; ao: "cz.ao"; ap: "cz.ap"; aq: "cz.aq"; ar: "cz.ar"; as: "cz.as"; at: "cz.at"; au: "cz.au"; av: "cz.av"; aw: "cz.aw"; ax: "cz.ax"; ay: "cz.ay"; az: "cz.az"; ba: "cz.ba"; bb: "cz.bb"; bc: "cz.bc"; bd: "cz.bd"; be: "cz.be"; bf: "cz.bf"; bg: "cz.bg"; bh: "cz.bh"; bi: "cz.bi"; bj: "cz.bj"; bk: "cz.bk"; bl: "cz.bl"; bm: "cz.bm"; bn: "cz.bn"; bo: "cz.bo"; bp: "cz.bp"; bq: "cz.bq"; br: "cz.br"; bs: "cz.bs"; bt: "cz.bt"; bu: "cz.bu"; bv: "cz.bv"; bw: "cz.bw"; bx: "cz.bx"; by: "cz.by"; bz: "cz.bz"; ca: "cz.ca"; cb: "cz.cb"; cc: "cz.cc"; cd: "cz.cd"; ce: "cz.ce"; cf: "cz.cf"; cg: "cz.cg"; ch: "cz.ch"; ci: "cz.ci"; cj: "cz.cj"; ck: "cz.ck"; cl: "cz.cl"; cm: "cz.cm"; cn: "cz.cn"; co: "cz.co"; cp: "cz.cp"; cq: "cz.cq"; cr: "cz.cr"; cs: "cz.cs"; ct: "cz.ct"; cu: "cz.cu"; cv: "cz.cv"; cw: "cz.cw"; cx: "cz.cx"; cy: "cz.cy"; cz: "cz.cz"; da: "cz.da"; db: "cz.db"; dc: "cz.dc"; dd: "cz.dd"; de: "cz.de"; df: "cz.df"; dg: "cz.dg"; dh: "cz.dh"; di: "cz.di"; dj: "cz.dj"; dk: "cz.dk"; dl: "cz.dl"; dm: "cz.dm"; dn: "cz.dn"; do: "cz.do"; dp: "cz.dp"; dq: "cz.dq"; dr: "cz.dr"; ds: "cz.ds"; dt: "cz.dt"; du: "cz.du"; dv: "cz.dv"; dw: "cz.dw"; dx: "cz.dx"; dy: "cz.dy"; dz: "cz.dz"; ea: "cz.ea"; eb: "cz.eb"; ec: "cz.ec"; ed: "cz.ed"; ee: "cz.ee"; ef: "cz.ef"; eg: "cz.eg"; eh: "cz.eh"; ei: "cz.ei"; ej: "cz.ej"; ek: "cz.ek"; el: "cz.el"; em: "cz.em"; en: "cz.en"; eo: "cz.eo"; ep: "cz.ep"; eq: "cz.eq"; er: "cz.er"; es: "cz.es"; et: "cz.et"; eu: "cz.eu"; ev: "cz.ev"; ew: "cz.ew"; ex: "cz.ex"; ey: "cz.ey"; ez: "cz.ez"; fa: "cz.fa"; fb: "cz.fb"; fc: "cz.fc"; fd: "cz.fd"; fe: "cz.fe"; ff: "cz.ff"; fg: "cz.fg"; fh: "cz.fh"; fi: "cz.fi"; fj: "cz.fj"; fk: "cz.fk"; fl: "cz.fl"; fm: "cz.fm"; fn: "cz.fn"; fo: "cz.fo"; fp: "cz.fp"; fq: "cz.fq"; fr: "cz.fr"; fs: "cz.fs"; ft: "cz.ft"; fu: "cz.fu"; fv: "cz.fv"; fw: "cz.fw"; fx: "cz.fx"; fy: "cz.fy"; fz: "cz.fz"; ga: "cz.ga"; gb: "cz.gb"; gc: "cz.gc"; gd: "cz.gd"; ge: "cz.ge"; gf: "cz.gf"; gg: "cz.gg"; gh: "cz.gh"; gi: "cz.gi"; gj: "cz.gj"; gk: "cz.gk"; gl: "cz.gl"; gm: "cz.gm"; gn: "cz.gn"; go: "cz.go"; gp: "cz.gp"; gq: "cz.gq"; gr: "cz.gr"; gs: "cz.gs"; gt: "cz.gt"; gu: "cz.gu"; gv: "cz.gv"; gw: "cz.gw"; gx: "cz.gx"; gy: "cz.gy"; gz: "cz.gz"; ha: "cz.ha"; hb: "cz.hb"; hc: "cz.hc"; hd: "cz.hd"; he: "cz.he"; hf: "cz.hf"; hg: "cz.hg"; hh: "cz.hh"; hi: "cz.hi"; hj: "cz.hj"; hk: "cz.hk"; hl: "cz.hl"; hm: "cz.hm"; hn: "cz.hn"; ho: "cz.ho"; hp: "cz.hp"; hq: "cz.hq"; hr: "cz.hr"; hs: "cz.hs"; ht: "cz.ht"; hu: "cz.hu"; hv: "cz.hv"; hw: "cz.hw"; hx: "cz.hx"; hy: "cz.hy"; hz: "cz.hz"; ia: "cz.ia"; ib: "cz.ib"; ic: "cz.ic"; id: "cz.id"; ie: "cz.ie"; if: "cz.if"; ig: "cz.ig"; ih: "cz.ih"; ii: "cz.ii"; ij: "cz.ij"; ik: "cz.ik"; il: "cz.il"; im: "cz.im"; in: "cz.in"; io: "cz.io"; ip: "cz.ip"; iq: "cz.iq"; ir: "cz.ir"; is: "cz.is"; it: "cz.it"; iu: "cz.iu"; iv: "cz.iv"; iw: "cz.iw"; ix: "cz.ix"; iy: "cz.iy"; iz: "cz.iz"; ja: "cz.ja"; jb: "cz.jb"; jc: "cz.jc"; jd: "cz.jd"; je: "cz.je"; jf: "cz.jf"; jg: "cz.jg"; jh: "cz.jh"; ji: "cz.ji"; jj: "cz.jj"; jk: "cz.jk"; jl: "cz.jl"; jm: "cz.jm"; jn: "cz.jn"; jo: "cz.jo"; jp: "cz.jp"; jq: "cz.jq"; jr: "cz.jr"; js: "cz.js"; jt: "cz.jt"; ju: "cz.ju"; jv: "cz.jv"; jw: "cz.jw"; jx: "cz.jx"; jy: "cz.jy"; jz: "cz.jz"; ka: "cz.ka"; kb: "cz.kb"; kc: "cz.kc"; kd: "cz.kd"; ke: "cz.ke"; kf: "cz.kf"; kg: "cz.kg"; kh: "cz.kh"; ki: "cz.ki"; kj: "cz.kj"; kk: "cz.kk"; kl: "cz.kl"; km: "cz.km"; kn: "cz.kn"; ko: "cz.ko"; kp: "cz.kp"; kq: "cz.kq"; kr: "cz.kr"; ks: "cz.ks"; kt: "cz.kt"; ku: "cz.ku"; kv: "cz.kv"; kw: "cz.kw"; kx: "cz.kx"; ky: "cz.ky"; kz: "cz.kz"; la: "cz.la"; lb: "cz.lb"; lc: "cz.lc"; ld: "cz.ld"; le: "cz.le"; lf: "cz.lf"; lg: "cz.lg"; lh: "cz.lh"; li: "cz.li"; lj: "cz.lj"; lk: "cz.lk"; ll: "cz.ll"; lm: "cz.lm"; ln: "cz.ln"; lo: "cz.lo"; lp: "cz.lp"; lq: "cz.lq"; lr: "cz.lr"; ls: "cz.ls"; lt: "cz.lt"; lu: "cz.lu"; lv: "cz.lv"; lw: "cz.lw"; lx: "cz.lx"; ly: "cz.ly"; lz: "cz.lz"; ma: "cz.ma"; mb: "cz.mb"; mc: "cz.mc"; md: "cz.md"; me: "cz.me"; mf: "cz.mf"; mg: "cz.mg"; mh: "cz.mh"; mi: "cz.mi"; mj: "cz.mj"; mk: "cz.mk"; ml: "cz.ml"; mm: "cz.mm"; mn: "cz.mn"; mo: "cz.mo"; mp: "cz.mp"; mq: "cz.mq"; mr: "cz.mr"; ms: "cz.ms"; mt: "cz.mt"; mu: "cz.mu"; mv: "cz.mv"; mw: "cz.mw"; mx: "cz.mx"; my: "cz.my"; mz: "cz.mz"; na: "cz.na"; nb: "cz.nb"; nc: "cz.nc"; nd: "cz.nd"; ne: "cz.ne"; nf: "cz.nf"; ng: "cz.ng"; nh: "cz.nh"; ni: "cz.ni"; nj: "cz.nj"; nk: "cz.nk"; nl: "cz.nl"; nm: "cz.nm"; nn: "cz.nn"; no: "cz.no"; np: "cz.np"; nq: "cz.nq"; nr: "cz.nr"; ns: "cz.ns"; nt: "cz.nt"; nu: "cz.nu"; nv: "cz.nv"; nw: "cz.nw"; nx: "cz.nx"; ny: "cz.ny"; nz: "cz.nz"; oa: "cz.oa"; ob: "cz.ob"; oc: "cz.oc"; od: "cz.od"; oe: "cz.oe"; of: "cz.of"; og: "cz.og"; oh: "cz.oh"; oi: "cz.oi"; oj: "cz.oj"; ok: "cz.ok"; ol: "cz.ol"; om: "cz.om"; on: "cz.on"; oo: "cz.oo"; op: "cz.op"; oq: "cz.oq"; or: "cz.or"; os: "cz.os"; ot: "cz.ot"; ou: "cz.ou"; ov: "cz.ov"; ow: "cz.ow"; ox: "cz.ox"; oy: "cz.oy"; oz: "cz.oz"; pa: "cz.pa"; pb: "cz.pb"; pc: "cz.pc"; pd: "cz.pd"; pe: "cz.pe"; pf: "cz.pf"; pg: "cz.pg"; ph: "cz.ph"; pi: "cz.pi"; pj: "cz.pj"; pk: "cz.pk"; pl: "cz.pl"; pm: "cz.pm"; pn: "cz.pn"; po: "cz.po"; pp: "cz.pp"; pq: "cz.pq"; pr: "cz.pr"; ps: "cz.ps"; pt: "cz.pt"; pu: "cz.pu"; pv: "cz.pv"; pw: "cz.pw"; px: "cz.px"; py: "cz.py"; pz: "cz.pz"; qa: "cz.qa"; qb: "cz.qb"; qc: "cz.qc"; qd: "cz.qd"; qe: "cz.qe"; qf: "cz.qf"; qg: "cz.qg"; qh: "cz.qh"; qi: "cz.qi"; qj: "cz.qj"; qk: "cz.qk"; ql: "cz.ql"; qm: "cz.qm"; qn: "cz.qn"; qo: "cz.qo"; qp: "cz.qp"; qq: "cz.qq"; qr: "cz.qr"; qs: "cz.qs"; qt: "cz.qt"; qu: "cz.qu"; qv: "cz.qv"; qw: "cz.qw"; qx: "cz.qx"; qy: "cz.qy"; qz: "cz.qz"; ra: "cz.ra"; rb: "cz.rb"; rc: "cz.rc"; rd: "cz.rd"; re: "cz.re"; rf: "cz.rf"; rg: "cz.rg"; rh: "cz.rh"; ri: "cz.ri"; rj: "cz.rj"; rk: "cz.rk"; rl: "cz.rl"; rm: "cz.rm"; rn: "cz.rn"; ro: "cz.ro"; rp: "cz.rp"; rq: "cz.rq"; rr: "cz.rr"; rs: "cz.rs"; rt: "cz.rt"; ru: "cz.ru"; rv: "cz.rv"; rw: "cz.rw"; rx: "cz.rx"; ry: "cz.ry"; rz: "cz.rz"; sa: "cz.sa"; sb: "cz.sb"; sc: "cz.sc"; sd: "cz.sd"; se: "cz.se"; sf: "cz.sf"; sg: "cz.sg"; sh: "cz.sh"; si: "cz.si"; sj: "cz.sj"; sk: "cz.sk"; sl: "cz.sl"; sm: "cz.sm"; sn: "cz.sn"; so: "cz.so"; sp: "cz.sp"; sq: "cz.sq"; sr: "cz.sr"; ss: "cz.ss"; st: "cz.st"; su: "cz.su"; sv: "cz.sv"; sw: "cz.sw"; sx: "cz.sx"; sy: "cz.sy"; sz: "cz.sz"; ta: "cz.ta"; tb: "cz.tb"; tc: "cz.tc"; td: "cz.td"; te: "cz.te"; tf: "cz.tf"; tg: "cz.tg"; th: "cz.th"; ti: "cz.ti"; tj: "cz.tj"; tk: "cz.tk"; tl: "cz.tl"; tm: "cz.tm"; tn: "cz.tn"; to: "cz.to"; tp: "cz.tp"; tq: "cz.tq"; tr: "cz.tr"; ts: "cz.ts"; tt: "cz.tt"; tu: "cz.tu"; tv: "cz.tv"; tw: "cz.tw"; tx: "cz.tx"; ty: "cz.ty"; tz: "cz.tz"; ua: "cz.ua"; ub: "cz.ub"; uc: "cz.uc"; ud: "cz.ud"; ue: "cz.ue"; uf: "cz.uf"; ug: "cz.ug"; uh: "cz.uh"; ui: "cz.ui"; uj: "cz.uj"; uk: "cz.uk"; ul: "cz.ul"; um: "cz.um"; un: "cz.un"; uo: "cz.uo"; up: "cz.up"; uq: "cz.uq"; ur: "cz.ur"; us: "cz.us"; ut: "cz.ut"; uu: "cz.uu"; uv: "cz.uv"; uw: "cz.uw"; ux: "cz.ux"; uy: "cz.uy"; uz: "cz.uz"; va: "cz.va"; vb: "cz.vb"; vc: "cz.vc"; vd: "cz.vd"; ve: "cz.ve"; vf: "cz.vf"; vg: "cz.vg"; vh: "cz.vh"; vi: "cz.vi"; vj: "cz.vj"; vk: "cz.vk"; vl: "cz.vl"; vm: "cz.vm"; vn: "cz.vn"; vo: "cz.vo"; vp: "cz.vp"; vq: "cz.vq"; vr: "cz.vr"; vs: "cz.vs"; vt: "cz.vt"; vu: "cz.vu"; vv: "cz.vv"; vw: "cz.vw"; vx: "cz.vx"; vy: "cz.vy"; vz: "cz.vz"; wa: "cz.wa"; wb: "cz.wb"; wc: "cz.wc"; wd: "cz.wd"; we: "cz.we"; wf: "cz.wf"; wg: "cz.wg"; wh: "cz.wh"; wi: "cz.wi"; wj: "cz.wj"; wk: "cz.wk"; wl: "cz.wl"; wm: "cz.wm"; wn: "cz.wn"; wo: "cz.wo"; wp: "cz.wp"; wq: "cz.wq"; wr: "cz.wr"; ws: "cz.ws"; wt: "cz.wt"; wu: "cz.wu"; wv: "cz.wv"; ww: "cz.ww"; wx: "cz.wx"; wy: "cz.wy"; wz: "cz.wz"; xa: "cz.xa"; xb: "cz.xb"; xc: "cz.xc"; xd: "cz.xd"; xe: "cz.xe"; xf: "cz.xf"; xg: "cz.xg"; xh: "cz.xh"; xi: "cz.xi"; xj: "cz.xj"; xk: "cz.xk"; xl: "cz.xl"; xm: "cz.xm"; xn: "cz.xn"; xo: "cz.xo"; xp: "cz.xp"; xq: "cz.xq"; xr: "cz.xr"; xs: "cz.xs"; xt: "cz.xt"; xu: "cz.xu"; xv: "cz.xv"; xw: "cz.xw"; xx: "cz.xx"; xy: "cz.xy"; xz: "cz.xz"; ya: "cz.ya"; yb: "cz.yb"; yc: "cz.yc"; yd: "cz.yd"; ye: "cz.ye"; yf: "cz.yf"; yg: "cz.yg"; yh: "cz.yh"; yi: "cz.yi"; yj: "cz.yj"; yk: "cz.yk"; yl: "cz.yl"; ym: "cz.ym"; yn: "cz.yn"; yo: "cz.yo"; yp: "cz.yp"; yq: "cz.yq"; yr: "cz.yr"; ys: "cz.ys"; yt: "cz.yt"; yu: "cz.yu"; yv: "cz.yv"; yw: "cz.yw"; yx: "cz.yx"; yy: "cz.yy"; yz: "cz.yz"; za: "cz.za"; zb: "cz.zb"; zc: "cz.zc"; zd: "cz.zd"; ze: "cz.ze"; zf: "cz.zf"; zg: "cz.zg"; zh: "cz.zh"; zi: "cz.zi"; zj: "cz.zj"; zk: "cz.zk"; zl: "cz.zl"; zm: "cz.zm"; zn: "cz.zn"; zo: "cz.zo"; zp: "cz.zp"; zq: "cz.zq"; zr: "cz.zr"; zs: "cz.zs"; zt: "cz.zt"; zu: "cz.zu"; zv: "cz.zv"; zw: "cz.zw"; zx: "cz.zx"; zy: "cz.zy"; zz: "cz.zz"; }; da: { aa: "da.aa"; ab: "da.ab"; ac: "da.ac"; ad: "da.ad"; ae: "da.ae"; af: "da.af"; ag: "da.ag"; ah: "da.ah"; ai: "da.ai"; aj: "da.aj"; ak: "da.ak"; al: "da.al"; am: "da.am"; an: "da.an"; ao: "da.ao"; ap: "da.ap"; aq: "da.aq"; ar: "da.ar"; as: "da.as"; at: "da.at"; au: "da.au"; av: "da.av"; aw: "da.aw"; ax: "da.ax"; ay: "da.ay"; az: "da.az"; ba: "da.ba"; bb: "da.bb"; bc: "da.bc"; bd: "da.bd"; be: "da.be"; bf: "da.bf"; bg: "da.bg"; bh: "da.bh"; bi: "da.bi"; bj: "da.bj"; bk: "da.bk"; bl: "da.bl"; bm: "da.bm"; bn: "da.bn"; bo: "da.bo"; bp: "da.bp"; bq: "da.bq"; br: "da.br"; bs: "da.bs"; bt: "da.bt"; bu: "da.bu"; bv: "da.bv"; bw: "da.bw"; bx: "da.bx"; by: "da.by"; bz: "da.bz"; ca: "da.ca"; cb: "da.cb"; cc: "da.cc"; cd: "da.cd"; ce: "da.ce"; cf: "da.cf"; cg: "da.cg"; ch: "da.ch"; ci: "da.ci"; cj: "da.cj"; ck: "da.ck"; cl: "da.cl"; cm: "da.cm"; cn: "da.cn"; co: "da.co"; cp: "da.cp"; cq: "da.cq"; cr: "da.cr"; cs: "da.cs"; ct: "da.ct"; cu: "da.cu"; cv: "da.cv"; cw: "da.cw"; cx: "da.cx"; cy: "da.cy"; cz: "da.cz"; da: "da.da"; db: "da.db"; dc: "da.dc"; dd: "da.dd"; de: "da.de"; df: "da.df"; dg: "da.dg"; dh: "da.dh"; di: "da.di"; dj: "da.dj"; dk: "da.dk"; dl: "da.dl"; dm: "da.dm"; dn: "da.dn"; do: "da.do"; dp: "da.dp"; dq: "da.dq"; dr: "da.dr"; ds: "da.ds"; dt: "da.dt"; du: "da.du"; dv: "da.dv"; dw: "da.dw"; dx: "da.dx"; dy: "da.dy"; dz: "da.dz"; ea: "da.ea"; eb: "da.eb"; ec: "da.ec"; ed: "da.ed"; ee: "da.ee"; ef: "da.ef"; eg: "da.eg"; eh: "da.eh"; ei: "da.ei"; ej: "da.ej"; ek: "da.ek"; el: "da.el"; em: "da.em"; en: "da.en"; eo: "da.eo"; ep: "da.ep"; eq: "da.eq"; er: "da.er"; es: "da.es"; et: "da.et"; eu: "da.eu"; ev: "da.ev"; ew: "da.ew"; ex: "da.ex"; ey: "da.ey"; ez: "da.ez"; fa: "da.fa"; fb: "da.fb"; fc: "da.fc"; fd: "da.fd"; fe: "da.fe"; ff: "da.ff"; fg: "da.fg"; fh: "da.fh"; fi: "da.fi"; fj: "da.fj"; fk: "da.fk"; fl: "da.fl"; fm: "da.fm"; fn: "da.fn"; fo: "da.fo"; fp: "da.fp"; fq: "da.fq"; fr: "da.fr"; fs: "da.fs"; ft: "da.ft"; fu: "da.fu"; fv: "da.fv"; fw: "da.fw"; fx: "da.fx"; fy: "da.fy"; fz: "da.fz"; ga: "da.ga"; gb: "da.gb"; gc: "da.gc"; gd: "da.gd"; ge: "da.ge"; gf: "da.gf"; gg: "da.gg"; gh: "da.gh"; gi: "da.gi"; gj: "da.gj"; gk: "da.gk"; gl: "da.gl"; gm: "da.gm"; gn: "da.gn"; go: "da.go"; gp: "da.gp"; gq: "da.gq"; gr: "da.gr"; gs: "da.gs"; gt: "da.gt"; gu: "da.gu"; gv: "da.gv"; gw: "da.gw"; gx: "da.gx"; gy: "da.gy"; gz: "da.gz"; ha: "da.ha"; hb: "da.hb"; hc: "da.hc"; hd: "da.hd"; he: "da.he"; hf: "da.hf"; hg: "da.hg"; hh: "da.hh"; hi: "da.hi"; hj: "da.hj"; hk: "da.hk"; hl: "da.hl"; hm: "da.hm"; hn: "da.hn"; ho: "da.ho"; hp: "da.hp"; hq: "da.hq"; hr: "da.hr"; hs: "da.hs"; ht: "da.ht"; hu: "da.hu"; hv: "da.hv"; hw: "da.hw"; hx: "da.hx"; hy: "da.hy"; hz: "da.hz"; ia: "da.ia"; ib: "da.ib"; ic: "da.ic"; id: "da.id"; ie: "da.ie"; if: "da.if"; ig: "da.ig"; ih: "da.ih"; ii: "da.ii"; ij: "da.ij"; ik: "da.ik"; il: "da.il"; im: "da.im"; in: "da.in"; io: "da.io"; ip: "da.ip"; iq: "da.iq"; ir: "da.ir"; is: "da.is"; it: "da.it"; iu: "da.iu"; iv: "da.iv"; iw: "da.iw"; ix: "da.ix"; iy: "da.iy"; iz: "da.iz"; ja: "da.ja"; jb: "da.jb"; jc: "da.jc"; jd: "da.jd"; je: "da.je"; jf: "da.jf"; jg: "da.jg"; jh: "da.jh"; ji: "da.ji"; jj: "da.jj"; jk: "da.jk"; jl: "da.jl"; jm: "da.jm"; jn: "da.jn"; jo: "da.jo"; jp: "da.jp"; jq: "da.jq"; jr: "da.jr"; js: "da.js"; jt: "da.jt"; ju: "da.ju"; jv: "da.jv"; jw: "da.jw"; jx: "da.jx"; jy: "da.jy"; jz: "da.jz"; ka: "da.ka"; kb: "da.kb"; kc: "da.kc"; kd: "da.kd"; ke: "da.ke"; kf: "da.kf"; kg: "da.kg"; kh: "da.kh"; ki: "da.ki"; kj: "da.kj"; kk: "da.kk"; kl: "da.kl"; km: "da.km"; kn: "da.kn"; ko: "da.ko"; kp: "da.kp"; kq: "da.kq"; kr: "da.kr"; ks: "da.ks"; kt: "da.kt"; ku: "da.ku"; kv: "da.kv"; kw: "da.kw"; kx: "da.kx"; ky: "da.ky"; kz: "da.kz"; la: "da.la"; lb: "da.lb"; lc: "da.lc"; ld: "da.ld"; le: "da.le"; lf: "da.lf"; lg: "da.lg"; lh: "da.lh"; li: "da.li"; lj: "da.lj"; lk: "da.lk"; ll: "da.ll"; lm: "da.lm"; ln: "da.ln"; lo: "da.lo"; lp: "da.lp"; lq: "da.lq"; lr: "da.lr"; ls: "da.ls"; lt: "da.lt"; lu: "da.lu"; lv: "da.lv"; lw: "da.lw"; lx: "da.lx"; ly: "da.ly"; lz: "da.lz"; ma: "da.ma"; mb: "da.mb"; mc: "da.mc"; md: "da.md"; me: "da.me"; mf: "da.mf"; mg: "da.mg"; mh: "da.mh"; mi: "da.mi"; mj: "da.mj"; mk: "da.mk"; ml: "da.ml"; mm: "da.mm"; mn: "da.mn"; mo: "da.mo"; mp: "da.mp"; mq: "da.mq"; mr: "da.mr"; ms: "da.ms"; mt: "da.mt"; mu: "da.mu"; mv: "da.mv"; mw: "da.mw"; mx: "da.mx"; my: "da.my"; mz: "da.mz"; na: "da.na"; nb: "da.nb"; nc: "da.nc"; nd: "da.nd"; ne: "da.ne"; nf: "da.nf"; ng: "da.ng"; nh: "da.nh"; ni: "da.ni"; nj: "da.nj"; nk: "da.nk"; nl: "da.nl"; nm: "da.nm"; nn: "da.nn"; no: "da.no"; np: "da.np"; nq: "da.nq"; nr: "da.nr"; ns: "da.ns"; nt: "da.nt"; nu: "da.nu"; nv: "da.nv"; nw: "da.nw"; nx: "da.nx"; ny: "da.ny"; nz: "da.nz"; oa: "da.oa"; ob: "da.ob"; oc: "da.oc"; od: "da.od"; oe: "da.oe"; of: "da.of"; og: "da.og"; oh: "da.oh"; oi: "da.oi"; oj: "da.oj"; ok: "da.ok"; ol: "da.ol"; om: "da.om"; on: "da.on"; oo: "da.oo"; op: "da.op"; oq: "da.oq"; or: "da.or"; os: "da.os"; ot: "da.ot"; ou: "da.ou"; ov: "da.ov"; ow: "da.ow"; ox: "da.ox"; oy: "da.oy"; oz: "da.oz"; pa: "da.pa"; pb: "da.pb"; pc: "da.pc"; pd: "da.pd"; pe: "da.pe"; pf: "da.pf"; pg: "da.pg"; ph: "da.ph"; pi: "da.pi"; pj: "da.pj"; pk: "da.pk"; pl: "da.pl"; pm: "da.pm"; pn: "da.pn"; po: "da.po"; pp: "da.pp"; pq: "da.pq"; pr: "da.pr"; ps: "da.ps"; pt: "da.pt"; pu: "da.pu"; pv: "da.pv"; pw: "da.pw"; px: "da.px"; py: "da.py"; pz: "da.pz"; qa: "da.qa"; qb: "da.qb"; qc: "da.qc"; qd: "da.qd"; qe: "da.qe"; qf: "da.qf"; qg: "da.qg"; qh: "da.qh"; qi: "da.qi"; qj: "da.qj"; qk: "da.qk"; ql: "da.ql"; qm: "da.qm"; qn: "da.qn"; qo: "da.qo"; qp: "da.qp"; qq: "da.qq"; qr: "da.qr"; qs: "da.qs"; qt: "da.qt"; qu: "da.qu"; qv: "da.qv"; qw: "da.qw"; qx: "da.qx"; qy: "da.qy"; qz: "da.qz"; ra: "da.ra"; rb: "da.rb"; rc: "da.rc"; rd: "da.rd"; re: "da.re"; rf: "da.rf"; rg: "da.rg"; rh: "da.rh"; ri: "da.ri"; rj: "da.rj"; rk: "da.rk"; rl: "da.rl"; rm: "da.rm"; rn: "da.rn"; ro: "da.ro"; rp: "da.rp"; rq: "da.rq"; rr: "da.rr"; rs: "da.rs"; rt: "da.rt"; ru: "da.ru"; rv: "da.rv"; rw: "da.rw"; rx: "da.rx"; ry: "da.ry"; rz: "da.rz"; sa: "da.sa"; sb: "da.sb"; sc: "da.sc"; sd: "da.sd"; se: "da.se"; sf: "da.sf"; sg: "da.sg"; sh: "da.sh"; si: "da.si"; sj: "da.sj"; sk: "da.sk"; sl: "da.sl"; sm: "da.sm"; sn: "da.sn"; so: "da.so"; sp: "da.sp"; sq: "da.sq"; sr: "da.sr"; ss: "da.ss"; st: "da.st"; su: "da.su"; sv: "da.sv"; sw: "da.sw"; sx: "da.sx"; sy: "da.sy"; sz: "da.sz"; ta: "da.ta"; tb: "da.tb"; tc: "da.tc"; td: "da.td"; te: "da.te"; tf: "da.tf"; tg: "da.tg"; th: "da.th"; ti: "da.ti"; tj: "da.tj"; tk: "da.tk"; tl: "da.tl"; tm: "da.tm"; tn: "da.tn"; to: "da.to"; tp: "da.tp"; tq: "da.tq"; tr: "da.tr"; ts: "da.ts"; tt: "da.tt"; tu: "da.tu"; tv: "da.tv"; tw: "da.tw"; tx: "da.tx"; ty: "da.ty"; tz: "da.tz"; ua: "da.ua"; ub: "da.ub"; uc: "da.uc"; ud: "da.ud"; ue: "da.ue"; uf: "da.uf"; ug: "da.ug"; uh: "da.uh"; ui: "da.ui"; uj: "da.uj"; uk: "da.uk"; ul: "da.ul"; um: "da.um"; un: "da.un"; uo: "da.uo"; up: "da.up"; uq: "da.uq"; ur: "da.ur"; us: "da.us"; ut: "da.ut"; uu: "da.uu"; uv: "da.uv"; uw: "da.uw"; ux: "da.ux"; uy: "da.uy"; uz: "da.uz"; va: "da.va"; vb: "da.vb"; vc: "da.vc"; vd: "da.vd"; ve: "da.ve"; vf: "da.vf"; vg: "da.vg"; vh: "da.vh"; vi: "da.vi"; vj: "da.vj"; vk: "da.vk"; vl: "da.vl"; vm: "da.vm"; vn: "da.vn"; vo: "da.vo"; vp: "da.vp"; vq: "da.vq"; vr: "da.vr"; vs: "da.vs"; vt: "da.vt"; vu: "da.vu"; vv: "da.vv"; vw: "da.vw"; vx: "da.vx"; vy: "da.vy"; vz: "da.vz"; wa: "da.wa"; wb: "da.wb"; wc: "da.wc"; wd: "da.wd"; we: "da.we"; wf: "da.wf"; wg: "da.wg"; wh: "da.wh"; wi: "da.wi"; wj: "da.wj"; wk: "da.wk"; wl: "da.wl"; wm: "da.wm"; wn: "da.wn"; wo: "da.wo"; wp: "da.wp"; wq: "da.wq"; wr: "da.wr"; ws: "da.ws"; wt: "da.wt"; wu: "da.wu"; wv: "da.wv"; ww: "da.ww"; wx: "da.wx"; wy: "da.wy"; wz: "da.wz"; xa: "da.xa"; xb: "da.xb"; xc: "da.xc"; xd: "da.xd"; xe: "da.xe"; xf: "da.xf"; xg: "da.xg"; xh: "da.xh"; xi: "da.xi"; xj: "da.xj"; xk: "da.xk"; xl: "da.xl"; xm: "da.xm"; xn: "da.xn"; xo: "da.xo"; xp: "da.xp"; xq: "da.xq"; xr: "da.xr"; xs: "da.xs"; xt: "da.xt"; xu: "da.xu"; xv: "da.xv"; xw: "da.xw"; xx: "da.xx"; xy: "da.xy"; xz: "da.xz"; ya: "da.ya"; yb: "da.yb"; yc: "da.yc"; yd: "da.yd"; ye: "da.ye"; yf: "da.yf"; yg: "da.yg"; yh: "da.yh"; yi: "da.yi"; yj: "da.yj"; yk: "da.yk"; yl: "da.yl"; ym: "da.ym"; yn: "da.yn"; yo: "da.yo"; yp: "da.yp"; yq: "da.yq"; yr: "da.yr"; ys: "da.ys"; yt: "da.yt"; yu: "da.yu"; yv: "da.yv"; yw: "da.yw"; yx: "da.yx"; yy: "da.yy"; yz: "da.yz"; za: "da.za"; zb: "da.zb"; zc: "da.zc"; zd: "da.zd"; ze: "da.ze"; zf: "da.zf"; zg: "da.zg"; zh: "da.zh"; zi: "da.zi"; zj: "da.zj"; zk: "da.zk"; zl: "da.zl"; zm: "da.zm"; zn: "da.zn"; zo: "da.zo"; zp: "da.zp"; zq: "da.zq"; zr: "da.zr"; zs: "da.zs"; zt: "da.zt"; zu: "da.zu"; zv: "da.zv"; zw: "da.zw"; zx: "da.zx"; zy: "da.zy"; zz: "da.zz"; }; db: { aa: "db.aa"; ab: "db.ab"; ac: "db.ac"; ad: "db.ad"; ae: "db.ae"; af: "db.af"; ag: "db.ag"; ah: "db.ah"; ai: "db.ai"; aj: "db.aj"; ak: "db.ak"; al: "db.al"; am: "db.am"; an: "db.an"; ao: "db.ao"; ap: "db.ap"; aq: "db.aq"; ar: "db.ar"; as: "db.as"; at: "db.at"; au: "db.au"; av: "db.av"; aw: "db.aw"; ax: "db.ax"; ay: "db.ay"; az: "db.az"; ba: "db.ba"; bb: "db.bb"; bc: "db.bc"; bd: "db.bd"; be: "db.be"; bf: "db.bf"; bg: "db.bg"; bh: "db.bh"; bi: "db.bi"; bj: "db.bj"; bk: "db.bk"; bl: "db.bl"; bm: "db.bm"; bn: "db.bn"; bo: "db.bo"; bp: "db.bp"; bq: "db.bq"; br: "db.br"; bs: "db.bs"; bt: "db.bt"; bu: "db.bu"; bv: "db.bv"; bw: "db.bw"; bx: "db.bx"; by: "db.by"; bz: "db.bz"; ca: "db.ca"; cb: "db.cb"; cc: "db.cc"; cd: "db.cd"; ce: "db.ce"; cf: "db.cf"; cg: "db.cg"; ch: "db.ch"; ci: "db.ci"; cj: "db.cj"; ck: "db.ck"; cl: "db.cl"; cm: "db.cm"; cn: "db.cn"; co: "db.co"; cp: "db.cp"; cq: "db.cq"; cr: "db.cr"; cs: "db.cs"; ct: "db.ct"; cu: "db.cu"; cv: "db.cv"; cw: "db.cw"; cx: "db.cx"; cy: "db.cy"; cz: "db.cz"; da: "db.da"; db: "db.db"; dc: "db.dc"; dd: "db.dd"; de: "db.de"; df: "db.df"; dg: "db.dg"; dh: "db.dh"; di: "db.di"; dj: "db.dj"; dk: "db.dk"; dl: "db.dl"; dm: "db.dm"; dn: "db.dn"; do: "db.do"; dp: "db.dp"; dq: "db.dq"; dr: "db.dr"; ds: "db.ds"; dt: "db.dt"; du: "db.du"; dv: "db.dv"; dw: "db.dw"; dx: "db.dx"; dy: "db.dy"; dz: "db.dz"; ea: "db.ea"; eb: "db.eb"; ec: "db.ec"; ed: "db.ed"; ee: "db.ee"; ef: "db.ef"; eg: "db.eg"; eh: "db.eh"; ei: "db.ei"; ej: "db.ej"; ek: "db.ek"; el: "db.el"; em: "db.em"; en: "db.en"; eo: "db.eo"; ep: "db.ep"; eq: "db.eq"; er: "db.er"; es: "db.es"; et: "db.et"; eu: "db.eu"; ev: "db.ev"; ew: "db.ew"; ex: "db.ex"; ey: "db.ey"; ez: "db.ez"; fa: "db.fa"; fb: "db.fb"; fc: "db.fc"; fd: "db.fd"; fe: "db.fe"; ff: "db.ff"; fg: "db.fg"; fh: "db.fh"; fi: "db.fi"; fj: "db.fj"; fk: "db.fk"; fl: "db.fl"; fm: "db.fm"; fn: "db.fn"; fo: "db.fo"; fp: "db.fp"; fq: "db.fq"; fr: "db.fr"; fs: "db.fs"; ft: "db.ft"; fu: "db.fu"; fv: "db.fv"; fw: "db.fw"; fx: "db.fx"; fy: "db.fy"; fz: "db.fz"; ga: "db.ga"; gb: "db.gb"; gc: "db.gc"; gd: "db.gd"; ge: "db.ge"; gf: "db.gf"; gg: "db.gg"; gh: "db.gh"; gi: "db.gi"; gj: "db.gj"; gk: "db.gk"; gl: "db.gl"; gm: "db.gm"; gn: "db.gn"; go: "db.go"; gp: "db.gp"; gq: "db.gq"; gr: "db.gr"; gs: "db.gs"; gt: "db.gt"; gu: "db.gu"; gv: "db.gv"; gw: "db.gw"; gx: "db.gx"; gy: "db.gy"; gz: "db.gz"; ha: "db.ha"; hb: "db.hb"; hc: "db.hc"; hd: "db.hd"; he: "db.he"; hf: "db.hf"; hg: "db.hg"; hh: "db.hh"; hi: "db.hi"; hj: "db.hj"; hk: "db.hk"; hl: "db.hl"; hm: "db.hm"; hn: "db.hn"; ho: "db.ho"; hp: "db.hp"; hq: "db.hq"; hr: "db.hr"; hs: "db.hs"; ht: "db.ht"; hu: "db.hu"; hv: "db.hv"; hw: "db.hw"; hx: "db.hx"; hy: "db.hy"; hz: "db.hz"; ia: "db.ia"; ib: "db.ib"; ic: "db.ic"; id: "db.id"; ie: "db.ie"; if: "db.if"; ig: "db.ig"; ih: "db.ih"; ii: "db.ii"; ij: "db.ij"; ik: "db.ik"; il: "db.il"; im: "db.im"; in: "db.in"; io: "db.io"; ip: "db.ip"; iq: "db.iq"; ir: "db.ir"; is: "db.is"; it: "db.it"; iu: "db.iu"; iv: "db.iv"; iw: "db.iw"; ix: "db.ix"; iy: "db.iy"; iz: "db.iz"; ja: "db.ja"; jb: "db.jb"; jc: "db.jc"; jd: "db.jd"; je: "db.je"; jf: "db.jf"; jg: "db.jg"; jh: "db.jh"; ji: "db.ji"; jj: "db.jj"; jk: "db.jk"; jl: "db.jl"; jm: "db.jm"; jn: "db.jn"; jo: "db.jo"; jp: "db.jp"; jq: "db.jq"; jr: "db.jr"; js: "db.js"; jt: "db.jt"; ju: "db.ju"; jv: "db.jv"; jw: "db.jw"; jx: "db.jx"; jy: "db.jy"; jz: "db.jz"; ka: "db.ka"; kb: "db.kb"; kc: "db.kc"; kd: "db.kd"; ke: "db.ke"; kf: "db.kf"; kg: "db.kg"; kh: "db.kh"; ki: "db.ki"; kj: "db.kj"; kk: "db.kk"; kl: "db.kl"; km: "db.km"; kn: "db.kn"; ko: "db.ko"; kp: "db.kp"; kq: "db.kq"; kr: "db.kr"; ks: "db.ks"; kt: "db.kt"; ku: "db.ku"; kv: "db.kv"; kw: "db.kw"; kx: "db.kx"; ky: "db.ky"; kz: "db.kz"; la: "db.la"; lb: "db.lb"; lc: "db.lc"; ld: "db.ld"; le: "db.le"; lf: "db.lf"; lg: "db.lg"; lh: "db.lh"; li: "db.li"; lj: "db.lj"; lk: "db.lk"; ll: "db.ll"; lm: "db.lm"; ln: "db.ln"; lo: "db.lo"; lp: "db.lp"; lq: "db.lq"; lr: "db.lr"; ls: "db.ls"; lt: "db.lt"; lu: "db.lu"; lv: "db.lv"; lw: "db.lw"; lx: "db.lx"; ly: "db.ly"; lz: "db.lz"; ma: "db.ma"; mb: "db.mb"; mc: "db.mc"; md: "db.md"; me: "db.me"; mf: "db.mf"; mg: "db.mg"; mh: "db.mh"; mi: "db.mi"; mj: "db.mj"; mk: "db.mk"; ml: "db.ml"; mm: "db.mm"; mn: "db.mn"; mo: "db.mo"; mp: "db.mp"; mq: "db.mq"; mr: "db.mr"; ms: "db.ms"; mt: "db.mt"; mu: "db.mu"; mv: "db.mv"; mw: "db.mw"; mx: "db.mx"; my: "db.my"; mz: "db.mz"; na: "db.na"; nb: "db.nb"; nc: "db.nc"; nd: "db.nd"; ne: "db.ne"; nf: "db.nf"; ng: "db.ng"; nh: "db.nh"; ni: "db.ni"; nj: "db.nj"; nk: "db.nk"; nl: "db.nl"; nm: "db.nm"; nn: "db.nn"; no: "db.no"; np: "db.np"; nq: "db.nq"; nr: "db.nr"; ns: "db.ns"; nt: "db.nt"; nu: "db.nu"; nv: "db.nv"; nw: "db.nw"; nx: "db.nx"; ny: "db.ny"; nz: "db.nz"; oa: "db.oa"; ob: "db.ob"; oc: "db.oc"; od: "db.od"; oe: "db.oe"; of: "db.of"; og: "db.og"; oh: "db.oh"; oi: "db.oi"; oj: "db.oj"; ok: "db.ok"; ol: "db.ol"; om: "db.om"; on: "db.on"; oo: "db.oo"; op: "db.op"; oq: "db.oq"; or: "db.or"; os: "db.os"; ot: "db.ot"; ou: "db.ou"; ov: "db.ov"; ow: "db.ow"; ox: "db.ox"; oy: "db.oy"; oz: "db.oz"; pa: "db.pa"; pb: "db.pb"; pc: "db.pc"; pd: "db.pd"; pe: "db.pe"; pf: "db.pf"; pg: "db.pg"; ph: "db.ph"; pi: "db.pi"; pj: "db.pj"; pk: "db.pk"; pl: "db.pl"; pm: "db.pm"; pn: "db.pn"; po: "db.po"; pp: "db.pp"; pq: "db.pq"; pr: "db.pr"; ps: "db.ps"; pt: "db.pt"; pu: "db.pu"; pv: "db.pv"; pw: "db.pw"; px: "db.px"; py: "db.py"; pz: "db.pz"; qa: "db.qa"; qb: "db.qb"; qc: "db.qc"; qd: "db.qd"; qe: "db.qe"; qf: "db.qf"; qg: "db.qg"; qh: "db.qh"; qi: "db.qi"; qj: "db.qj"; qk: "db.qk"; ql: "db.ql"; qm: "db.qm"; qn: "db.qn"; qo: "db.qo"; qp: "db.qp"; qq: "db.qq"; qr: "db.qr"; qs: "db.qs"; qt: "db.qt"; qu: "db.qu"; qv: "db.qv"; qw: "db.qw"; qx: "db.qx"; qy: "db.qy"; qz: "db.qz"; ra: "db.ra"; rb: "db.rb"; rc: "db.rc"; rd: "db.rd"; re: "db.re"; rf: "db.rf"; rg: "db.rg"; rh: "db.rh"; ri: "db.ri"; rj: "db.rj"; rk: "db.rk"; rl: "db.rl"; rm: "db.rm"; rn: "db.rn"; ro: "db.ro"; rp: "db.rp"; rq: "db.rq"; rr: "db.rr"; rs: "db.rs"; rt: "db.rt"; ru: "db.ru"; rv: "db.rv"; rw: "db.rw"; rx: "db.rx"; ry: "db.ry"; rz: "db.rz"; sa: "db.sa"; sb: "db.sb"; sc: "db.sc"; sd: "db.sd"; se: "db.se"; sf: "db.sf"; sg: "db.sg"; sh: "db.sh"; si: "db.si"; sj: "db.sj"; sk: "db.sk"; sl: "db.sl"; sm: "db.sm"; sn: "db.sn"; so: "db.so"; sp: "db.sp"; sq: "db.sq"; sr: "db.sr"; ss: "db.ss"; st: "db.st"; su: "db.su"; sv: "db.sv"; sw: "db.sw"; sx: "db.sx"; sy: "db.sy"; sz: "db.sz"; ta: "db.ta"; tb: "db.tb"; tc: "db.tc"; td: "db.td"; te: "db.te"; tf: "db.tf"; tg: "db.tg"; th: "db.th"; ti: "db.ti"; tj: "db.tj"; tk: "db.tk"; tl: "db.tl"; tm: "db.tm"; tn: "db.tn"; to: "db.to"; tp: "db.tp"; tq: "db.tq"; tr: "db.tr"; ts: "db.ts"; tt: "db.tt"; tu: "db.tu"; tv: "db.tv"; tw: "db.tw"; tx: "db.tx"; ty: "db.ty"; tz: "db.tz"; ua: "db.ua"; ub: "db.ub"; uc: "db.uc"; ud: "db.ud"; ue: "db.ue"; uf: "db.uf"; ug: "db.ug"; uh: "db.uh"; ui: "db.ui"; uj: "db.uj"; uk: "db.uk"; ul: "db.ul"; um: "db.um"; un: "db.un"; uo: "db.uo"; up: "db.up"; uq: "db.uq"; ur: "db.ur"; us: "db.us"; ut: "db.ut"; uu: "db.uu"; uv: "db.uv"; uw: "db.uw"; ux: "db.ux"; uy: "db.uy"; uz: "db.uz"; va: "db.va"; vb: "db.vb"; vc: "db.vc"; vd: "db.vd"; ve: "db.ve"; vf: "db.vf"; vg: "db.vg"; vh: "db.vh"; vi: "db.vi"; vj: "db.vj"; vk: "db.vk"; vl: "db.vl"; vm: "db.vm"; vn: "db.vn"; vo: "db.vo"; vp: "db.vp"; vq: "db.vq"; vr: "db.vr"; vs: "db.vs"; vt: "db.vt"; vu: "db.vu"; vv: "db.vv"; vw: "db.vw"; vx: "db.vx"; vy: "db.vy"; vz: "db.vz"; wa: "db.wa"; wb: "db.wb"; wc: "db.wc"; wd: "db.wd"; we: "db.we"; wf: "db.wf"; wg: "db.wg"; wh: "db.wh"; wi: "db.wi"; wj: "db.wj"; wk: "db.wk"; wl: "db.wl"; wm: "db.wm"; wn: "db.wn"; wo: "db.wo"; wp: "db.wp"; wq: "db.wq"; wr: "db.wr"; ws: "db.ws"; wt: "db.wt"; wu: "db.wu"; wv: "db.wv"; ww: "db.ww"; wx: "db.wx"; wy: "db.wy"; wz: "db.wz"; xa: "db.xa"; xb: "db.xb"; xc: "db.xc"; xd: "db.xd"; xe: "db.xe"; xf: "db.xf"; xg: "db.xg"; xh: "db.xh"; xi: "db.xi"; xj: "db.xj"; xk: "db.xk"; xl: "db.xl"; xm: "db.xm"; xn: "db.xn"; xo: "db.xo"; xp: "db.xp"; xq: "db.xq"; xr: "db.xr"; xs: "db.xs"; xt: "db.xt"; xu: "db.xu"; xv: "db.xv"; xw: "db.xw"; xx: "db.xx"; xy: "db.xy"; xz: "db.xz"; ya: "db.ya"; yb: "db.yb"; yc: "db.yc"; yd: "db.yd"; ye: "db.ye"; yf: "db.yf"; yg: "db.yg"; yh: "db.yh"; yi: "db.yi"; yj: "db.yj"; yk: "db.yk"; yl: "db.yl"; ym: "db.ym"; yn: "db.yn"; yo: "db.yo"; yp: "db.yp"; yq: "db.yq"; yr: "db.yr"; ys: "db.ys"; yt: "db.yt"; yu: "db.yu"; yv: "db.yv"; yw: "db.yw"; yx: "db.yx"; yy: "db.yy"; yz: "db.yz"; za: "db.za"; zb: "db.zb"; zc: "db.zc"; zd: "db.zd"; ze: "db.ze"; zf: "db.zf"; zg: "db.zg"; zh: "db.zh"; zi: "db.zi"; zj: "db.zj"; zk: "db.zk"; zl: "db.zl"; zm: "db.zm"; zn: "db.zn"; zo: "db.zo"; zp: "db.zp"; zq: "db.zq"; zr: "db.zr"; zs: "db.zs"; zt: "db.zt"; zu: "db.zu"; zv: "db.zv"; zw: "db.zw"; zx: "db.zx"; zy: "db.zy"; zz: "db.zz"; }; dc: { aa: "dc.aa"; ab: "dc.ab"; ac: "dc.ac"; ad: "dc.ad"; ae: "dc.ae"; af: "dc.af"; ag: "dc.ag"; ah: "dc.ah"; ai: "dc.ai"; aj: "dc.aj"; ak: "dc.ak"; al: "dc.al"; am: "dc.am"; an: "dc.an"; ao: "dc.ao"; ap: "dc.ap"; aq: "dc.aq"; ar: "dc.ar"; as: "dc.as"; at: "dc.at"; au: "dc.au"; av: "dc.av"; aw: "dc.aw"; ax: "dc.ax"; ay: "dc.ay"; az: "dc.az"; ba: "dc.ba"; bb: "dc.bb"; bc: "dc.bc"; bd: "dc.bd"; be: "dc.be"; bf: "dc.bf"; bg: "dc.bg"; bh: "dc.bh"; bi: "dc.bi"; bj: "dc.bj"; bk: "dc.bk"; bl: "dc.bl"; bm: "dc.bm"; bn: "dc.bn"; bo: "dc.bo"; bp: "dc.bp"; bq: "dc.bq"; br: "dc.br"; bs: "dc.bs"; bt: "dc.bt"; bu: "dc.bu"; bv: "dc.bv"; bw: "dc.bw"; bx: "dc.bx"; by: "dc.by"; bz: "dc.bz"; ca: "dc.ca"; cb: "dc.cb"; cc: "dc.cc"; cd: "dc.cd"; ce: "dc.ce"; cf: "dc.cf"; cg: "dc.cg"; ch: "dc.ch"; ci: "dc.ci"; cj: "dc.cj"; ck: "dc.ck"; cl: "dc.cl"; cm: "dc.cm"; cn: "dc.cn"; co: "dc.co"; cp: "dc.cp"; cq: "dc.cq"; cr: "dc.cr"; cs: "dc.cs"; ct: "dc.ct"; cu: "dc.cu"; cv: "dc.cv"; cw: "dc.cw"; cx: "dc.cx"; cy: "dc.cy"; cz: "dc.cz"; da: "dc.da"; db: "dc.db"; dc: "dc.dc"; dd: "dc.dd"; de: "dc.de"; df: "dc.df"; dg: "dc.dg"; dh: "dc.dh"; di: "dc.di"; dj: "dc.dj"; dk: "dc.dk"; dl: "dc.dl"; dm: "dc.dm"; dn: "dc.dn"; do: "dc.do"; dp: "dc.dp"; dq: "dc.dq"; dr: "dc.dr"; ds: "dc.ds"; dt: "dc.dt"; du: "dc.du"; dv: "dc.dv"; dw: "dc.dw"; dx: "dc.dx"; dy: "dc.dy"; dz: "dc.dz"; ea: "dc.ea"; eb: "dc.eb"; ec: "dc.ec"; ed: "dc.ed"; ee: "dc.ee"; ef: "dc.ef"; eg: "dc.eg"; eh: "dc.eh"; ei: "dc.ei"; ej: "dc.ej"; ek: "dc.ek"; el: "dc.el"; em: "dc.em"; en: "dc.en"; eo: "dc.eo"; ep: "dc.ep"; eq: "dc.eq"; er: "dc.er"; es: "dc.es"; et: "dc.et"; eu: "dc.eu"; ev: "dc.ev"; ew: "dc.ew"; ex: "dc.ex"; ey: "dc.ey"; ez: "dc.ez"; fa: "dc.fa"; fb: "dc.fb"; fc: "dc.fc"; fd: "dc.fd"; fe: "dc.fe"; ff: "dc.ff"; fg: "dc.fg"; fh: "dc.fh"; fi: "dc.fi"; fj: "dc.fj"; fk: "dc.fk"; fl: "dc.fl"; fm: "dc.fm"; fn: "dc.fn"; fo: "dc.fo"; fp: "dc.fp"; fq: "dc.fq"; fr: "dc.fr"; fs: "dc.fs"; ft: "dc.ft"; fu: "dc.fu"; fv: "dc.fv"; fw: "dc.fw"; fx: "dc.fx"; fy: "dc.fy"; fz: "dc.fz"; ga: "dc.ga"; gb: "dc.gb"; gc: "dc.gc"; gd: "dc.gd"; ge: "dc.ge"; gf: "dc.gf"; gg: "dc.gg"; gh: "dc.gh"; gi: "dc.gi"; gj: "dc.gj"; gk: "dc.gk"; gl: "dc.gl"; gm: "dc.gm"; gn: "dc.gn"; go: "dc.go"; gp: "dc.gp"; gq: "dc.gq"; gr: "dc.gr"; gs: "dc.gs"; gt: "dc.gt"; gu: "dc.gu"; gv: "dc.gv"; gw: "dc.gw"; gx: "dc.gx"; gy: "dc.gy"; gz: "dc.gz"; ha: "dc.ha"; hb: "dc.hb"; hc: "dc.hc"; hd: "dc.hd"; he: "dc.he"; hf: "dc.hf"; hg: "dc.hg"; hh: "dc.hh"; hi: "dc.hi"; hj: "dc.hj"; hk: "dc.hk"; hl: "dc.hl"; hm: "dc.hm"; hn: "dc.hn"; ho: "dc.ho"; hp: "dc.hp"; hq: "dc.hq"; hr: "dc.hr"; hs: "dc.hs"; ht: "dc.ht"; hu: "dc.hu"; hv: "dc.hv"; hw: "dc.hw"; hx: "dc.hx"; hy: "dc.hy"; hz: "dc.hz"; ia: "dc.ia"; ib: "dc.ib"; ic: "dc.ic"; id: "dc.id"; ie: "dc.ie"; if: "dc.if"; ig: "dc.ig"; ih: "dc.ih"; ii: "dc.ii"; ij: "dc.ij"; ik: "dc.ik"; il: "dc.il"; im: "dc.im"; in: "dc.in"; io: "dc.io"; ip: "dc.ip"; iq: "dc.iq"; ir: "dc.ir"; is: "dc.is"; it: "dc.it"; iu: "dc.iu"; iv: "dc.iv"; iw: "dc.iw"; ix: "dc.ix"; iy: "dc.iy"; iz: "dc.iz"; ja: "dc.ja"; jb: "dc.jb"; jc: "dc.jc"; jd: "dc.jd"; je: "dc.je"; jf: "dc.jf"; jg: "dc.jg"; jh: "dc.jh"; ji: "dc.ji"; jj: "dc.jj"; jk: "dc.jk"; jl: "dc.jl"; jm: "dc.jm"; jn: "dc.jn"; jo: "dc.jo"; jp: "dc.jp"; jq: "dc.jq"; jr: "dc.jr"; js: "dc.js"; jt: "dc.jt"; ju: "dc.ju"; jv: "dc.jv"; jw: "dc.jw"; jx: "dc.jx"; jy: "dc.jy"; jz: "dc.jz"; ka: "dc.ka"; kb: "dc.kb"; kc: "dc.kc"; kd: "dc.kd"; ke: "dc.ke"; kf: "dc.kf"; kg: "dc.kg"; kh: "dc.kh"; ki: "dc.ki"; kj: "dc.kj"; kk: "dc.kk"; kl: "dc.kl"; km: "dc.km"; kn: "dc.kn"; ko: "dc.ko"; kp: "dc.kp"; kq: "dc.kq"; kr: "dc.kr"; ks: "dc.ks"; kt: "dc.kt"; ku: "dc.ku"; kv: "dc.kv"; kw: "dc.kw"; kx: "dc.kx"; ky: "dc.ky"; kz: "dc.kz"; la: "dc.la"; lb: "dc.lb"; lc: "dc.lc"; ld: "dc.ld"; le: "dc.le"; lf: "dc.lf"; lg: "dc.lg"; lh: "dc.lh"; li: "dc.li"; lj: "dc.lj"; lk: "dc.lk"; ll: "dc.ll"; lm: "dc.lm"; ln: "dc.ln"; lo: "dc.lo"; lp: "dc.lp"; lq: "dc.lq"; lr: "dc.lr"; ls: "dc.ls"; lt: "dc.lt"; lu: "dc.lu"; lv: "dc.lv"; lw: "dc.lw"; lx: "dc.lx"; ly: "dc.ly"; lz: "dc.lz"; ma: "dc.ma"; mb: "dc.mb"; mc: "dc.mc"; md: "dc.md"; me: "dc.me"; mf: "dc.mf"; mg: "dc.mg"; mh: "dc.mh"; mi: "dc.mi"; mj: "dc.mj"; mk: "dc.mk"; ml: "dc.ml"; mm: "dc.mm"; mn: "dc.mn"; mo: "dc.mo"; mp: "dc.mp"; mq: "dc.mq"; mr: "dc.mr"; ms: "dc.ms"; mt: "dc.mt"; mu: "dc.mu"; mv: "dc.mv"; mw: "dc.mw"; mx: "dc.mx"; my: "dc.my"; mz: "dc.mz"; na: "dc.na"; nb: "dc.nb"; nc: "dc.nc"; nd: "dc.nd"; ne: "dc.ne"; nf: "dc.nf"; ng: "dc.ng"; nh: "dc.nh"; ni: "dc.ni"; nj: "dc.nj"; nk: "dc.nk"; nl: "dc.nl"; nm: "dc.nm"; nn: "dc.nn"; no: "dc.no"; np: "dc.np"; nq: "dc.nq"; nr: "dc.nr"; ns: "dc.ns"; nt: "dc.nt"; nu: "dc.nu"; nv: "dc.nv"; nw: "dc.nw"; nx: "dc.nx"; ny: "dc.ny"; nz: "dc.nz"; oa: "dc.oa"; ob: "dc.ob"; oc: "dc.oc"; od: "dc.od"; oe: "dc.oe"; of: "dc.of"; og: "dc.og"; oh: "dc.oh"; oi: "dc.oi"; oj: "dc.oj"; ok: "dc.ok"; ol: "dc.ol"; om: "dc.om"; on: "dc.on"; oo: "dc.oo"; op: "dc.op"; oq: "dc.oq"; or: "dc.or"; os: "dc.os"; ot: "dc.ot"; ou: "dc.ou"; ov: "dc.ov"; ow: "dc.ow"; ox: "dc.ox"; oy: "dc.oy"; oz: "dc.oz"; pa: "dc.pa"; pb: "dc.pb"; pc: "dc.pc"; pd: "dc.pd"; pe: "dc.pe"; pf: "dc.pf"; pg: "dc.pg"; ph: "dc.ph"; pi: "dc.pi"; pj: "dc.pj"; pk: "dc.pk"; pl: "dc.pl"; pm: "dc.pm"; pn: "dc.pn"; po: "dc.po"; pp: "dc.pp"; pq: "dc.pq"; pr: "dc.pr"; ps: "dc.ps"; pt: "dc.pt"; pu: "dc.pu"; pv: "dc.pv"; pw: "dc.pw"; px: "dc.px"; py: "dc.py"; pz: "dc.pz"; qa: "dc.qa"; qb: "dc.qb"; qc: "dc.qc"; qd: "dc.qd"; qe: "dc.qe"; qf: "dc.qf"; qg: "dc.qg"; qh: "dc.qh"; qi: "dc.qi"; qj: "dc.qj"; qk: "dc.qk"; ql: "dc.ql"; qm: "dc.qm"; qn: "dc.qn"; qo: "dc.qo"; qp: "dc.qp"; qq: "dc.qq"; qr: "dc.qr"; qs: "dc.qs"; qt: "dc.qt"; qu: "dc.qu"; qv: "dc.qv"; qw: "dc.qw"; qx: "dc.qx"; qy: "dc.qy"; qz: "dc.qz"; ra: "dc.ra"; rb: "dc.rb"; rc: "dc.rc"; rd: "dc.rd"; re: "dc.re"; rf: "dc.rf"; rg: "dc.rg"; rh: "dc.rh"; ri: "dc.ri"; rj: "dc.rj"; rk: "dc.rk"; rl: "dc.rl"; rm: "dc.rm"; rn: "dc.rn"; ro: "dc.ro"; rp: "dc.rp"; rq: "dc.rq"; rr: "dc.rr"; rs: "dc.rs"; rt: "dc.rt"; ru: "dc.ru"; rv: "dc.rv"; rw: "dc.rw"; rx: "dc.rx"; ry: "dc.ry"; rz: "dc.rz"; sa: "dc.sa"; sb: "dc.sb"; sc: "dc.sc"; sd: "dc.sd"; se: "dc.se"; sf: "dc.sf"; sg: "dc.sg"; sh: "dc.sh"; si: "dc.si"; sj: "dc.sj"; sk: "dc.sk"; sl: "dc.sl"; sm: "dc.sm"; sn: "dc.sn"; so: "dc.so"; sp: "dc.sp"; sq: "dc.sq"; sr: "dc.sr"; ss: "dc.ss"; st: "dc.st"; su: "dc.su"; sv: "dc.sv"; sw: "dc.sw"; sx: "dc.sx"; sy: "dc.sy"; sz: "dc.sz"; ta: "dc.ta"; tb: "dc.tb"; tc: "dc.tc"; td: "dc.td"; te: "dc.te"; tf: "dc.tf"; tg: "dc.tg"; th: "dc.th"; ti: "dc.ti"; tj: "dc.tj"; tk: "dc.tk"; tl: "dc.tl"; tm: "dc.tm"; tn: "dc.tn"; to: "dc.to"; tp: "dc.tp"; tq: "dc.tq"; tr: "dc.tr"; ts: "dc.ts"; tt: "dc.tt"; tu: "dc.tu"; tv: "dc.tv"; tw: "dc.tw"; tx: "dc.tx"; ty: "dc.ty"; tz: "dc.tz"; ua: "dc.ua"; ub: "dc.ub"; uc: "dc.uc"; ud: "dc.ud"; ue: "dc.ue"; uf: "dc.uf"; ug: "dc.ug"; uh: "dc.uh"; ui: "dc.ui"; uj: "dc.uj"; uk: "dc.uk"; ul: "dc.ul"; um: "dc.um"; un: "dc.un"; uo: "dc.uo"; up: "dc.up"; uq: "dc.uq"; ur: "dc.ur"; us: "dc.us"; ut: "dc.ut"; uu: "dc.uu"; uv: "dc.uv"; uw: "dc.uw"; ux: "dc.ux"; uy: "dc.uy"; uz: "dc.uz"; va: "dc.va"; vb: "dc.vb"; vc: "dc.vc"; vd: "dc.vd"; ve: "dc.ve"; vf: "dc.vf"; vg: "dc.vg"; vh: "dc.vh"; vi: "dc.vi"; vj: "dc.vj"; vk: "dc.vk"; vl: "dc.vl"; vm: "dc.vm"; vn: "dc.vn"; vo: "dc.vo"; vp: "dc.vp"; vq: "dc.vq"; vr: "dc.vr"; vs: "dc.vs"; vt: "dc.vt"; vu: "dc.vu"; vv: "dc.vv"; vw: "dc.vw"; vx: "dc.vx"; vy: "dc.vy"; vz: "dc.vz"; wa: "dc.wa"; wb: "dc.wb"; wc: "dc.wc"; wd: "dc.wd"; we: "dc.we"; wf: "dc.wf"; wg: "dc.wg"; wh: "dc.wh"; wi: "dc.wi"; wj: "dc.wj"; wk: "dc.wk"; wl: "dc.wl"; wm: "dc.wm"; wn: "dc.wn"; wo: "dc.wo"; wp: "dc.wp"; wq: "dc.wq"; wr: "dc.wr"; ws: "dc.ws"; wt: "dc.wt"; wu: "dc.wu"; wv: "dc.wv"; ww: "dc.ww"; wx: "dc.wx"; wy: "dc.wy"; wz: "dc.wz"; xa: "dc.xa"; xb: "dc.xb"; xc: "dc.xc"; xd: "dc.xd"; xe: "dc.xe"; xf: "dc.xf"; xg: "dc.xg"; xh: "dc.xh"; xi: "dc.xi"; xj: "dc.xj"; xk: "dc.xk"; xl: "dc.xl"; xm: "dc.xm"; xn: "dc.xn"; xo: "dc.xo"; xp: "dc.xp"; xq: "dc.xq"; xr: "dc.xr"; xs: "dc.xs"; xt: "dc.xt"; xu: "dc.xu"; xv: "dc.xv"; xw: "dc.xw"; xx: "dc.xx"; xy: "dc.xy"; xz: "dc.xz"; ya: "dc.ya"; yb: "dc.yb"; yc: "dc.yc"; yd: "dc.yd"; ye: "dc.ye"; yf: "dc.yf"; yg: "dc.yg"; yh: "dc.yh"; yi: "dc.yi"; yj: "dc.yj"; yk: "dc.yk"; yl: "dc.yl"; ym: "dc.ym"; yn: "dc.yn"; yo: "dc.yo"; yp: "dc.yp"; yq: "dc.yq"; yr: "dc.yr"; ys: "dc.ys"; yt: "dc.yt"; yu: "dc.yu"; yv: "dc.yv"; yw: "dc.yw"; yx: "dc.yx"; yy: "dc.yy"; yz: "dc.yz"; za: "dc.za"; zb: "dc.zb"; zc: "dc.zc"; zd: "dc.zd"; ze: "dc.ze"; zf: "dc.zf"; zg: "dc.zg"; zh: "dc.zh"; zi: "dc.zi"; zj: "dc.zj"; zk: "dc.zk"; zl: "dc.zl"; zm: "dc.zm"; zn: "dc.zn"; zo: "dc.zo"; zp: "dc.zp"; zq: "dc.zq"; zr: "dc.zr"; zs: "dc.zs"; zt: "dc.zt"; zu: "dc.zu"; zv: "dc.zv"; zw: "dc.zw"; zx: "dc.zx"; zy: "dc.zy"; zz: "dc.zz"; }; dd: { aa: "dd.aa"; ab: "dd.ab"; ac: "dd.ac"; ad: "dd.ad"; ae: "dd.ae"; af: "dd.af"; ag: "dd.ag"; ah: "dd.ah"; ai: "dd.ai"; aj: "dd.aj"; ak: "dd.ak"; al: "dd.al"; am: "dd.am"; an: "dd.an"; ao: "dd.ao"; ap: "dd.ap"; aq: "dd.aq"; ar: "dd.ar"; as: "dd.as"; at: "dd.at"; au: "dd.au"; av: "dd.av"; aw: "dd.aw"; ax: "dd.ax"; ay: "dd.ay"; az: "dd.az"; ba: "dd.ba"; bb: "dd.bb"; bc: "dd.bc"; bd: "dd.bd"; be: "dd.be"; bf: "dd.bf"; bg: "dd.bg"; bh: "dd.bh"; bi: "dd.bi"; bj: "dd.bj"; bk: "dd.bk"; bl: "dd.bl"; bm: "dd.bm"; bn: "dd.bn"; bo: "dd.bo"; bp: "dd.bp"; bq: "dd.bq"; br: "dd.br"; bs: "dd.bs"; bt: "dd.bt"; bu: "dd.bu"; bv: "dd.bv"; bw: "dd.bw"; bx: "dd.bx"; by: "dd.by"; bz: "dd.bz"; ca: "dd.ca"; cb: "dd.cb"; cc: "dd.cc"; cd: "dd.cd"; ce: "dd.ce"; cf: "dd.cf"; cg: "dd.cg"; ch: "dd.ch"; ci: "dd.ci"; cj: "dd.cj"; ck: "dd.ck"; cl: "dd.cl"; cm: "dd.cm"; cn: "dd.cn"; co: "dd.co"; cp: "dd.cp"; cq: "dd.cq"; cr: "dd.cr"; cs: "dd.cs"; ct: "dd.ct"; cu: "dd.cu"; cv: "dd.cv"; cw: "dd.cw"; cx: "dd.cx"; cy: "dd.cy"; cz: "dd.cz"; da: "dd.da"; db: "dd.db"; dc: "dd.dc"; dd: "dd.dd"; de: "dd.de"; df: "dd.df"; dg: "dd.dg"; dh: "dd.dh"; di: "dd.di"; dj: "dd.dj"; dk: "dd.dk"; dl: "dd.dl"; dm: "dd.dm"; dn: "dd.dn"; do: "dd.do"; dp: "dd.dp"; dq: "dd.dq"; dr: "dd.dr"; ds: "dd.ds"; dt: "dd.dt"; du: "dd.du"; dv: "dd.dv"; dw: "dd.dw"; dx: "dd.dx"; dy: "dd.dy"; dz: "dd.dz"; ea: "dd.ea"; eb: "dd.eb"; ec: "dd.ec"; ed: "dd.ed"; ee: "dd.ee"; ef: "dd.ef"; eg: "dd.eg"; eh: "dd.eh"; ei: "dd.ei"; ej: "dd.ej"; ek: "dd.ek"; el: "dd.el"; em: "dd.em"; en: "dd.en"; eo: "dd.eo"; ep: "dd.ep"; eq: "dd.eq"; er: "dd.er"; es: "dd.es"; et: "dd.et"; eu: "dd.eu"; ev: "dd.ev"; ew: "dd.ew"; ex: "dd.ex"; ey: "dd.ey"; ez: "dd.ez"; fa: "dd.fa"; fb: "dd.fb"; fc: "dd.fc"; fd: "dd.fd"; fe: "dd.fe"; ff: "dd.ff"; fg: "dd.fg"; fh: "dd.fh"; fi: "dd.fi"; fj: "dd.fj"; fk: "dd.fk"; fl: "dd.fl"; fm: "dd.fm"; fn: "dd.fn"; fo: "dd.fo"; fp: "dd.fp"; fq: "dd.fq"; fr: "dd.fr"; fs: "dd.fs"; ft: "dd.ft"; fu: "dd.fu"; fv: "dd.fv"; fw: "dd.fw"; fx: "dd.fx"; fy: "dd.fy"; fz: "dd.fz"; ga: "dd.ga"; gb: "dd.gb"; gc: "dd.gc"; gd: "dd.gd"; ge: "dd.ge"; gf: "dd.gf"; gg: "dd.gg"; gh: "dd.gh"; gi: "dd.gi"; gj: "dd.gj"; gk: "dd.gk"; gl: "dd.gl"; gm: "dd.gm"; gn: "dd.gn"; go: "dd.go"; gp: "dd.gp"; gq: "dd.gq"; gr: "dd.gr"; gs: "dd.gs"; gt: "dd.gt"; gu: "dd.gu"; gv: "dd.gv"; gw: "dd.gw"; gx: "dd.gx"; gy: "dd.gy"; gz: "dd.gz"; ha: "dd.ha"; hb: "dd.hb"; hc: "dd.hc"; hd: "dd.hd"; he: "dd.he"; hf: "dd.hf"; hg: "dd.hg"; hh: "dd.hh"; hi: "dd.hi"; hj: "dd.hj"; hk: "dd.hk"; hl: "dd.hl"; hm: "dd.hm"; hn: "dd.hn"; ho: "dd.ho"; hp: "dd.hp"; hq: "dd.hq"; hr: "dd.hr"; hs: "dd.hs"; ht: "dd.ht"; hu: "dd.hu"; hv: "dd.hv"; hw: "dd.hw"; hx: "dd.hx"; hy: "dd.hy"; hz: "dd.hz"; ia: "dd.ia"; ib: "dd.ib"; ic: "dd.ic"; id: "dd.id"; ie: "dd.ie"; if: "dd.if"; ig: "dd.ig"; ih: "dd.ih"; ii: "dd.ii"; ij: "dd.ij"; ik: "dd.ik"; il: "dd.il"; im: "dd.im"; in: "dd.in"; io: "dd.io"; ip: "dd.ip"; iq: "dd.iq"; ir: "dd.ir"; is: "dd.is"; it: "dd.it"; iu: "dd.iu"; iv: "dd.iv"; iw: "dd.iw"; ix: "dd.ix"; iy: "dd.iy"; iz: "dd.iz"; ja: "dd.ja"; jb: "dd.jb"; jc: "dd.jc"; jd: "dd.jd"; je: "dd.je"; jf: "dd.jf"; jg: "dd.jg"; jh: "dd.jh"; ji: "dd.ji"; jj: "dd.jj"; jk: "dd.jk"; jl: "dd.jl"; jm: "dd.jm"; jn: "dd.jn"; jo: "dd.jo"; jp: "dd.jp"; jq: "dd.jq"; jr: "dd.jr"; js: "dd.js"; jt: "dd.jt"; ju: "dd.ju"; jv: "dd.jv"; jw: "dd.jw"; jx: "dd.jx"; jy: "dd.jy"; jz: "dd.jz"; ka: "dd.ka"; kb: "dd.kb"; kc: "dd.kc"; kd: "dd.kd"; ke: "dd.ke"; kf: "dd.kf"; kg: "dd.kg"; kh: "dd.kh"; ki: "dd.ki"; kj: "dd.kj"; kk: "dd.kk"; kl: "dd.kl"; km: "dd.km"; kn: "dd.kn"; ko: "dd.ko"; kp: "dd.kp"; kq: "dd.kq"; kr: "dd.kr"; ks: "dd.ks"; kt: "dd.kt"; ku: "dd.ku"; kv: "dd.kv"; kw: "dd.kw"; kx: "dd.kx"; ky: "dd.ky"; kz: "dd.kz"; la: "dd.la"; lb: "dd.lb"; lc: "dd.lc"; ld: "dd.ld"; le: "dd.le"; lf: "dd.lf"; lg: "dd.lg"; lh: "dd.lh"; li: "dd.li"; lj: "dd.lj"; lk: "dd.lk"; ll: "dd.ll"; lm: "dd.lm"; ln: "dd.ln"; lo: "dd.lo"; lp: "dd.lp"; lq: "dd.lq"; lr: "dd.lr"; ls: "dd.ls"; lt: "dd.lt"; lu: "dd.lu"; lv: "dd.lv"; lw: "dd.lw"; lx: "dd.lx"; ly: "dd.ly"; lz: "dd.lz"; ma: "dd.ma"; mb: "dd.mb"; mc: "dd.mc"; md: "dd.md"; me: "dd.me"; mf: "dd.mf"; mg: "dd.mg"; mh: "dd.mh"; mi: "dd.mi"; mj: "dd.mj"; mk: "dd.mk"; ml: "dd.ml"; mm: "dd.mm"; mn: "dd.mn"; mo: "dd.mo"; mp: "dd.mp"; mq: "dd.mq"; mr: "dd.mr"; ms: "dd.ms"; mt: "dd.mt"; mu: "dd.mu"; mv: "dd.mv"; mw: "dd.mw"; mx: "dd.mx"; my: "dd.my"; mz: "dd.mz"; na: "dd.na"; nb: "dd.nb"; nc: "dd.nc"; nd: "dd.nd"; ne: "dd.ne"; nf: "dd.nf"; ng: "dd.ng"; nh: "dd.nh"; ni: "dd.ni"; nj: "dd.nj"; nk: "dd.nk"; nl: "dd.nl"; nm: "dd.nm"; nn: "dd.nn"; no: "dd.no"; np: "dd.np"; nq: "dd.nq"; nr: "dd.nr"; ns: "dd.ns"; nt: "dd.nt"; nu: "dd.nu"; nv: "dd.nv"; nw: "dd.nw"; nx: "dd.nx"; ny: "dd.ny"; nz: "dd.nz"; oa: "dd.oa"; ob: "dd.ob"; oc: "dd.oc"; od: "dd.od"; oe: "dd.oe"; of: "dd.of"; og: "dd.og"; oh: "dd.oh"; oi: "dd.oi"; oj: "dd.oj"; ok: "dd.ok"; ol: "dd.ol"; om: "dd.om"; on: "dd.on"; oo: "dd.oo"; op: "dd.op"; oq: "dd.oq"; or: "dd.or"; os: "dd.os"; ot: "dd.ot"; ou: "dd.ou"; ov: "dd.ov"; ow: "dd.ow"; ox: "dd.ox"; oy: "dd.oy"; oz: "dd.oz"; pa: "dd.pa"; pb: "dd.pb"; pc: "dd.pc"; pd: "dd.pd"; pe: "dd.pe"; pf: "dd.pf"; pg: "dd.pg"; ph: "dd.ph"; pi: "dd.pi"; pj: "dd.pj"; pk: "dd.pk"; pl: "dd.pl"; pm: "dd.pm"; pn: "dd.pn"; po: "dd.po"; pp: "dd.pp"; pq: "dd.pq"; pr: "dd.pr"; ps: "dd.ps"; pt: "dd.pt"; pu: "dd.pu"; pv: "dd.pv"; pw: "dd.pw"; px: "dd.px"; py: "dd.py"; pz: "dd.pz"; qa: "dd.qa"; qb: "dd.qb"; qc: "dd.qc"; qd: "dd.qd"; qe: "dd.qe"; qf: "dd.qf"; qg: "dd.qg"; qh: "dd.qh"; qi: "dd.qi"; qj: "dd.qj"; qk: "dd.qk"; ql: "dd.ql"; qm: "dd.qm"; qn: "dd.qn"; qo: "dd.qo"; qp: "dd.qp"; qq: "dd.qq"; qr: "dd.qr"; qs: "dd.qs"; qt: "dd.qt"; qu: "dd.qu"; qv: "dd.qv"; qw: "dd.qw"; qx: "dd.qx"; qy: "dd.qy"; qz: "dd.qz"; ra: "dd.ra"; rb: "dd.rb"; rc: "dd.rc"; rd: "dd.rd"; re: "dd.re"; rf: "dd.rf"; rg: "dd.rg"; rh: "dd.rh"; ri: "dd.ri"; rj: "dd.rj"; rk: "dd.rk"; rl: "dd.rl"; rm: "dd.rm"; rn: "dd.rn"; ro: "dd.ro"; rp: "dd.rp"; rq: "dd.rq"; rr: "dd.rr"; rs: "dd.rs"; rt: "dd.rt"; ru: "dd.ru"; rv: "dd.rv"; rw: "dd.rw"; rx: "dd.rx"; ry: "dd.ry"; rz: "dd.rz"; sa: "dd.sa"; sb: "dd.sb"; sc: "dd.sc"; sd: "dd.sd"; se: "dd.se"; sf: "dd.sf"; sg: "dd.sg"; sh: "dd.sh"; si: "dd.si"; sj: "dd.sj"; sk: "dd.sk"; sl: "dd.sl"; sm: "dd.sm"; sn: "dd.sn"; so: "dd.so"; sp: "dd.sp"; sq: "dd.sq"; sr: "dd.sr"; ss: "dd.ss"; st: "dd.st"; su: "dd.su"; sv: "dd.sv"; sw: "dd.sw"; sx: "dd.sx"; sy: "dd.sy"; sz: "dd.sz"; ta: "dd.ta"; tb: "dd.tb"; tc: "dd.tc"; td: "dd.td"; te: "dd.te"; tf: "dd.tf"; tg: "dd.tg"; th: "dd.th"; ti: "dd.ti"; tj: "dd.tj"; tk: "dd.tk"; tl: "dd.tl"; tm: "dd.tm"; tn: "dd.tn"; to: "dd.to"; tp: "dd.tp"; tq: "dd.tq"; tr: "dd.tr"; ts: "dd.ts"; tt: "dd.tt"; tu: "dd.tu"; tv: "dd.tv"; tw: "dd.tw"; tx: "dd.tx"; ty: "dd.ty"; tz: "dd.tz"; ua: "dd.ua"; ub: "dd.ub"; uc: "dd.uc"; ud: "dd.ud"; ue: "dd.ue"; uf: "dd.uf"; ug: "dd.ug"; uh: "dd.uh"; ui: "dd.ui"; uj: "dd.uj"; uk: "dd.uk"; ul: "dd.ul"; um: "dd.um"; un: "dd.un"; uo: "dd.uo"; up: "dd.up"; uq: "dd.uq"; ur: "dd.ur"; us: "dd.us"; ut: "dd.ut"; uu: "dd.uu"; uv: "dd.uv"; uw: "dd.uw"; ux: "dd.ux"; uy: "dd.uy"; uz: "dd.uz"; va: "dd.va"; vb: "dd.vb"; vc: "dd.vc"; vd: "dd.vd"; ve: "dd.ve"; vf: "dd.vf"; vg: "dd.vg"; vh: "dd.vh"; vi: "dd.vi"; vj: "dd.vj"; vk: "dd.vk"; vl: "dd.vl"; vm: "dd.vm"; vn: "dd.vn"; vo: "dd.vo"; vp: "dd.vp"; vq: "dd.vq"; vr: "dd.vr"; vs: "dd.vs"; vt: "dd.vt"; vu: "dd.vu"; vv: "dd.vv"; vw: "dd.vw"; vx: "dd.vx"; vy: "dd.vy"; vz: "dd.vz"; wa: "dd.wa"; wb: "dd.wb"; wc: "dd.wc"; wd: "dd.wd"; we: "dd.we"; wf: "dd.wf"; wg: "dd.wg"; wh: "dd.wh"; wi: "dd.wi"; wj: "dd.wj"; wk: "dd.wk"; wl: "dd.wl"; wm: "dd.wm"; wn: "dd.wn"; wo: "dd.wo"; wp: "dd.wp"; wq: "dd.wq"; wr: "dd.wr"; ws: "dd.ws"; wt: "dd.wt"; wu: "dd.wu"; wv: "dd.wv"; ww: "dd.ww"; wx: "dd.wx"; wy: "dd.wy"; wz: "dd.wz"; xa: "dd.xa"; xb: "dd.xb"; xc: "dd.xc"; xd: "dd.xd"; xe: "dd.xe"; xf: "dd.xf"; xg: "dd.xg"; xh: "dd.xh"; xi: "dd.xi"; xj: "dd.xj"; xk: "dd.xk"; xl: "dd.xl"; xm: "dd.xm"; xn: "dd.xn"; xo: "dd.xo"; xp: "dd.xp"; xq: "dd.xq"; xr: "dd.xr"; xs: "dd.xs"; xt: "dd.xt"; xu: "dd.xu"; xv: "dd.xv"; xw: "dd.xw"; xx: "dd.xx"; xy: "dd.xy"; xz: "dd.xz"; ya: "dd.ya"; yb: "dd.yb"; yc: "dd.yc"; yd: "dd.yd"; ye: "dd.ye"; yf: "dd.yf"; yg: "dd.yg"; yh: "dd.yh"; yi: "dd.yi"; yj: "dd.yj"; yk: "dd.yk"; yl: "dd.yl"; ym: "dd.ym"; yn: "dd.yn"; yo: "dd.yo"; yp: "dd.yp"; yq: "dd.yq"; yr: "dd.yr"; ys: "dd.ys"; yt: "dd.yt"; yu: "dd.yu"; yv: "dd.yv"; yw: "dd.yw"; yx: "dd.yx"; yy: "dd.yy"; yz: "dd.yz"; za: "dd.za"; zb: "dd.zb"; zc: "dd.zc"; zd: "dd.zd"; ze: "dd.ze"; zf: "dd.zf"; zg: "dd.zg"; zh: "dd.zh"; zi: "dd.zi"; zj: "dd.zj"; zk: "dd.zk"; zl: "dd.zl"; zm: "dd.zm"; zn: "dd.zn"; zo: "dd.zo"; zp: "dd.zp"; zq: "dd.zq"; zr: "dd.zr"; zs: "dd.zs"; zt: "dd.zt"; zu: "dd.zu"; zv: "dd.zv"; zw: "dd.zw"; zx: "dd.zx"; zy: "dd.zy"; zz: "dd.zz"; }; de: { aa: "de.aa"; ab: "de.ab"; ac: "de.ac"; ad: "de.ad"; ae: "de.ae"; af: "de.af"; ag: "de.ag"; ah: "de.ah"; ai: "de.ai"; aj: "de.aj"; ak: "de.ak"; al: "de.al"; am: "de.am"; an: "de.an"; ao: "de.ao"; ap: "de.ap"; aq: "de.aq"; ar: "de.ar"; as: "de.as"; at: "de.at"; au: "de.au"; av: "de.av"; aw: "de.aw"; ax: "de.ax"; ay: "de.ay"; az: "de.az"; ba: "de.ba"; bb: "de.bb"; bc: "de.bc"; bd: "de.bd"; be: "de.be"; bf: "de.bf"; bg: "de.bg"; bh: "de.bh"; bi: "de.bi"; bj: "de.bj"; bk: "de.bk"; bl: "de.bl"; bm: "de.bm"; bn: "de.bn"; bo: "de.bo"; bp: "de.bp"; bq: "de.bq"; br: "de.br"; bs: "de.bs"; bt: "de.bt"; bu: "de.bu"; bv: "de.bv"; bw: "de.bw"; bx: "de.bx"; by: "de.by"; bz: "de.bz"; ca: "de.ca"; cb: "de.cb"; cc: "de.cc"; cd: "de.cd"; ce: "de.ce"; cf: "de.cf"; cg: "de.cg"; ch: "de.ch"; ci: "de.ci"; cj: "de.cj"; ck: "de.ck"; cl: "de.cl"; cm: "de.cm"; cn: "de.cn"; co: "de.co"; cp: "de.cp"; cq: "de.cq"; cr: "de.cr"; cs: "de.cs"; ct: "de.ct"; cu: "de.cu"; cv: "de.cv"; cw: "de.cw"; cx: "de.cx"; cy: "de.cy"; cz: "de.cz"; da: "de.da"; db: "de.db"; dc: "de.dc"; dd: "de.dd"; de: "de.de"; df: "de.df"; dg: "de.dg"; dh: "de.dh"; di: "de.di"; dj: "de.dj"; dk: "de.dk"; dl: "de.dl"; dm: "de.dm"; dn: "de.dn"; do: "de.do"; dp: "de.dp"; dq: "de.dq"; dr: "de.dr"; ds: "de.ds"; dt: "de.dt"; du: "de.du"; dv: "de.dv"; dw: "de.dw"; dx: "de.dx"; dy: "de.dy"; dz: "de.dz"; ea: "de.ea"; eb: "de.eb"; ec: "de.ec"; ed: "de.ed"; ee: "de.ee"; ef: "de.ef"; eg: "de.eg"; eh: "de.eh"; ei: "de.ei"; ej: "de.ej"; ek: "de.ek"; el: "de.el"; em: "de.em"; en: "de.en"; eo: "de.eo"; ep: "de.ep"; eq: "de.eq"; er: "de.er"; es: "de.es"; et: "de.et"; eu: "de.eu"; ev: "de.ev"; ew: "de.ew"; ex: "de.ex"; ey: "de.ey"; ez: "de.ez"; fa: "de.fa"; fb: "de.fb"; fc: "de.fc"; fd: "de.fd"; fe: "de.fe"; ff: "de.ff"; fg: "de.fg"; fh: "de.fh"; fi: "de.fi"; fj: "de.fj"; fk: "de.fk"; fl: "de.fl"; fm: "de.fm"; fn: "de.fn"; fo: "de.fo"; fp: "de.fp"; fq: "de.fq"; fr: "de.fr"; fs: "de.fs"; ft: "de.ft"; fu: "de.fu"; fv: "de.fv"; fw: "de.fw"; fx: "de.fx"; fy: "de.fy"; fz: "de.fz"; ga: "de.ga"; gb: "de.gb"; gc: "de.gc"; gd: "de.gd"; ge: "de.ge"; gf: "de.gf"; gg: "de.gg"; gh: "de.gh"; gi: "de.gi"; gj: "de.gj"; gk: "de.gk"; gl: "de.gl"; gm: "de.gm"; gn: "de.gn"; go: "de.go"; gp: "de.gp"; gq: "de.gq"; gr: "de.gr"; gs: "de.gs"; gt: "de.gt"; gu: "de.gu"; gv: "de.gv"; gw: "de.gw"; gx: "de.gx"; gy: "de.gy"; gz: "de.gz"; ha: "de.ha"; hb: "de.hb"; hc: "de.hc"; hd: "de.hd"; he: "de.he"; hf: "de.hf"; hg: "de.hg"; hh: "de.hh"; hi: "de.hi"; hj: "de.hj"; hk: "de.hk"; hl: "de.hl"; hm: "de.hm"; hn: "de.hn"; ho: "de.ho"; hp: "de.hp"; hq: "de.hq"; hr: "de.hr"; hs: "de.hs"; ht: "de.ht"; hu: "de.hu"; hv: "de.hv"; hw: "de.hw"; hx: "de.hx"; hy: "de.hy"; hz: "de.hz"; ia: "de.ia"; ib: "de.ib"; ic: "de.ic"; id: "de.id"; ie: "de.ie"; if: "de.if"; ig: "de.ig"; ih: "de.ih"; ii: "de.ii"; ij: "de.ij"; ik: "de.ik"; il: "de.il"; im: "de.im"; in: "de.in"; io: "de.io"; ip: "de.ip"; iq: "de.iq"; ir: "de.ir"; is: "de.is"; it: "de.it"; iu: "de.iu"; iv: "de.iv"; iw: "de.iw"; ix: "de.ix"; iy: "de.iy"; iz: "de.iz"; ja: "de.ja"; jb: "de.jb"; jc: "de.jc"; jd: "de.jd"; je: "de.je"; jf: "de.jf"; jg: "de.jg"; jh: "de.jh"; ji: "de.ji"; jj: "de.jj"; jk: "de.jk"; jl: "de.jl"; jm: "de.jm"; jn: "de.jn"; jo: "de.jo"; jp: "de.jp"; jq: "de.jq"; jr: "de.jr"; js: "de.js"; jt: "de.jt"; ju: "de.ju"; jv: "de.jv"; jw: "de.jw"; jx: "de.jx"; jy: "de.jy"; jz: "de.jz"; ka: "de.ka"; kb: "de.kb"; kc: "de.kc"; kd: "de.kd"; ke: "de.ke"; kf: "de.kf"; kg: "de.kg"; kh: "de.kh"; ki: "de.ki"; kj: "de.kj"; kk: "de.kk"; kl: "de.kl"; km: "de.km"; kn: "de.kn"; ko: "de.ko"; kp: "de.kp"; kq: "de.kq"; kr: "de.kr"; ks: "de.ks"; kt: "de.kt"; ku: "de.ku"; kv: "de.kv"; kw: "de.kw"; kx: "de.kx"; ky: "de.ky"; kz: "de.kz"; la: "de.la"; lb: "de.lb"; lc: "de.lc"; ld: "de.ld"; le: "de.le"; lf: "de.lf"; lg: "de.lg"; lh: "de.lh"; li: "de.li"; lj: "de.lj"; lk: "de.lk"; ll: "de.ll"; lm: "de.lm"; ln: "de.ln"; lo: "de.lo"; lp: "de.lp"; lq: "de.lq"; lr: "de.lr"; ls: "de.ls"; lt: "de.lt"; lu: "de.lu"; lv: "de.lv"; lw: "de.lw"; lx: "de.lx"; ly: "de.ly"; lz: "de.lz"; ma: "de.ma"; mb: "de.mb"; mc: "de.mc"; md: "de.md"; me: "de.me"; mf: "de.mf"; mg: "de.mg"; mh: "de.mh"; mi: "de.mi"; mj: "de.mj"; mk: "de.mk"; ml: "de.ml"; mm: "de.mm"; mn: "de.mn"; mo: "de.mo"; mp: "de.mp"; mq: "de.mq"; mr: "de.mr"; ms: "de.ms"; mt: "de.mt"; mu: "de.mu"; mv: "de.mv"; mw: "de.mw"; mx: "de.mx"; my: "de.my"; mz: "de.mz"; na: "de.na"; nb: "de.nb"; nc: "de.nc"; nd: "de.nd"; ne: "de.ne"; nf: "de.nf"; ng: "de.ng"; nh: "de.nh"; ni: "de.ni"; nj: "de.nj"; nk: "de.nk"; nl: "de.nl"; nm: "de.nm"; nn: "de.nn"; no: "de.no"; np: "de.np"; nq: "de.nq"; nr: "de.nr"; ns: "de.ns"; nt: "de.nt"; nu: "de.nu"; nv: "de.nv"; nw: "de.nw"; nx: "de.nx"; ny: "de.ny"; nz: "de.nz"; oa: "de.oa"; ob: "de.ob"; oc: "de.oc"; od: "de.od"; oe: "de.oe"; of: "de.of"; og: "de.og"; oh: "de.oh"; oi: "de.oi"; oj: "de.oj"; ok: "de.ok"; ol: "de.ol"; om: "de.om"; on: "de.on"; oo: "de.oo"; op: "de.op"; oq: "de.oq"; or: "de.or"; os: "de.os"; ot: "de.ot"; ou: "de.ou"; ov: "de.ov"; ow: "de.ow"; ox: "de.ox"; oy: "de.oy"; oz: "de.oz"; pa: "de.pa"; pb: "de.pb"; pc: "de.pc"; pd: "de.pd"; pe: "de.pe"; pf: "de.pf"; pg: "de.pg"; ph: "de.ph"; pi: "de.pi"; pj: "de.pj"; pk: "de.pk"; pl: "de.pl"; pm: "de.pm"; pn: "de.pn"; po: "de.po"; pp: "de.pp"; pq: "de.pq"; pr: "de.pr"; ps: "de.ps"; pt: "de.pt"; pu: "de.pu"; pv: "de.pv"; pw: "de.pw"; px: "de.px"; py: "de.py"; pz: "de.pz"; qa: "de.qa"; qb: "de.qb"; qc: "de.qc"; qd: "de.qd"; qe: "de.qe"; qf: "de.qf"; qg: "de.qg"; qh: "de.qh"; qi: "de.qi"; qj: "de.qj"; qk: "de.qk"; ql: "de.ql"; qm: "de.qm"; qn: "de.qn"; qo: "de.qo"; qp: "de.qp"; qq: "de.qq"; qr: "de.qr"; qs: "de.qs"; qt: "de.qt"; qu: "de.qu"; qv: "de.qv"; qw: "de.qw"; qx: "de.qx"; qy: "de.qy"; qz: "de.qz"; ra: "de.ra"; rb: "de.rb"; rc: "de.rc"; rd: "de.rd"; re: "de.re"; rf: "de.rf"; rg: "de.rg"; rh: "de.rh"; ri: "de.ri"; rj: "de.rj"; rk: "de.rk"; rl: "de.rl"; rm: "de.rm"; rn: "de.rn"; ro: "de.ro"; rp: "de.rp"; rq: "de.rq"; rr: "de.rr"; rs: "de.rs"; rt: "de.rt"; ru: "de.ru"; rv: "de.rv"; rw: "de.rw"; rx: "de.rx"; ry: "de.ry"; rz: "de.rz"; sa: "de.sa"; sb: "de.sb"; sc: "de.sc"; sd: "de.sd"; se: "de.se"; sf: "de.sf"; sg: "de.sg"; sh: "de.sh"; si: "de.si"; sj: "de.sj"; sk: "de.sk"; sl: "de.sl"; sm: "de.sm"; sn: "de.sn"; so: "de.so"; sp: "de.sp"; sq: "de.sq"; sr: "de.sr"; ss: "de.ss"; st: "de.st"; su: "de.su"; sv: "de.sv"; sw: "de.sw"; sx: "de.sx"; sy: "de.sy"; sz: "de.sz"; ta: "de.ta"; tb: "de.tb"; tc: "de.tc"; td: "de.td"; te: "de.te"; tf: "de.tf"; tg: "de.tg"; th: "de.th"; ti: "de.ti"; tj: "de.tj"; tk: "de.tk"; tl: "de.tl"; tm: "de.tm"; tn: "de.tn"; to: "de.to"; tp: "de.tp"; tq: "de.tq"; tr: "de.tr"; ts: "de.ts"; tt: "de.tt"; tu: "de.tu"; tv: "de.tv"; tw: "de.tw"; tx: "de.tx"; ty: "de.ty"; tz: "de.tz"; ua: "de.ua"; ub: "de.ub"; uc: "de.uc"; ud: "de.ud"; ue: "de.ue"; uf: "de.uf"; ug: "de.ug"; uh: "de.uh"; ui: "de.ui"; uj: "de.uj"; uk: "de.uk"; ul: "de.ul"; um: "de.um"; un: "de.un"; uo: "de.uo"; up: "de.up"; uq: "de.uq"; ur: "de.ur"; us: "de.us"; ut: "de.ut"; uu: "de.uu"; uv: "de.uv"; uw: "de.uw"; ux: "de.ux"; uy: "de.uy"; uz: "de.uz"; va: "de.va"; vb: "de.vb"; vc: "de.vc"; vd: "de.vd"; ve: "de.ve"; vf: "de.vf"; vg: "de.vg"; vh: "de.vh"; vi: "de.vi"; vj: "de.vj"; vk: "de.vk"; vl: "de.vl"; vm: "de.vm"; vn: "de.vn"; vo: "de.vo"; vp: "de.vp"; vq: "de.vq"; vr: "de.vr"; vs: "de.vs"; vt: "de.vt"; vu: "de.vu"; vv: "de.vv"; vw: "de.vw"; vx: "de.vx"; vy: "de.vy"; vz: "de.vz"; wa: "de.wa"; wb: "de.wb"; wc: "de.wc"; wd: "de.wd"; we: "de.we"; wf: "de.wf"; wg: "de.wg"; wh: "de.wh"; wi: "de.wi"; wj: "de.wj"; wk: "de.wk"; wl: "de.wl"; wm: "de.wm"; wn: "de.wn"; wo: "de.wo"; wp: "de.wp"; wq: "de.wq"; wr: "de.wr"; ws: "de.ws"; wt: "de.wt"; wu: "de.wu"; wv: "de.wv"; ww: "de.ww"; wx: "de.wx"; wy: "de.wy"; wz: "de.wz"; xa: "de.xa"; xb: "de.xb"; xc: "de.xc"; xd: "de.xd"; xe: "de.xe"; xf: "de.xf"; xg: "de.xg"; xh: "de.xh"; xi: "de.xi"; xj: "de.xj"; xk: "de.xk"; xl: "de.xl"; xm: "de.xm"; xn: "de.xn"; xo: "de.xo"; xp: "de.xp"; xq: "de.xq"; xr: "de.xr"; xs: "de.xs"; xt: "de.xt"; xu: "de.xu"; xv: "de.xv"; xw: "de.xw"; xx: "de.xx"; xy: "de.xy"; xz: "de.xz"; ya: "de.ya"; yb: "de.yb"; yc: "de.yc"; yd: "de.yd"; ye: "de.ye"; yf: "de.yf"; yg: "de.yg"; yh: "de.yh"; yi: "de.yi"; yj: "de.yj"; yk: "de.yk"; yl: "de.yl"; ym: "de.ym"; yn: "de.yn"; yo: "de.yo"; yp: "de.yp"; yq: "de.yq"; yr: "de.yr"; ys: "de.ys"; yt: "de.yt"; yu: "de.yu"; yv: "de.yv"; yw: "de.yw"; yx: "de.yx"; yy: "de.yy"; yz: "de.yz"; za: "de.za"; zb: "de.zb"; zc: "de.zc"; zd: "de.zd"; ze: "de.ze"; zf: "de.zf"; zg: "de.zg"; zh: "de.zh"; zi: "de.zi"; zj: "de.zj"; zk: "de.zk"; zl: "de.zl"; zm: "de.zm"; zn: "de.zn"; zo: "de.zo"; zp: "de.zp"; zq: "de.zq"; zr: "de.zr"; zs: "de.zs"; zt: "de.zt"; zu: "de.zu"; zv: "de.zv"; zw: "de.zw"; zx: "de.zx"; zy: "de.zy"; zz: "de.zz"; }; df: { aa: "df.aa"; ab: "df.ab"; ac: "df.ac"; ad: "df.ad"; ae: "df.ae"; af: "df.af"; ag: "df.ag"; ah: "df.ah"; ai: "df.ai"; aj: "df.aj"; ak: "df.ak"; al: "df.al"; am: "df.am"; an: "df.an"; ao: "df.ao"; ap: "df.ap"; aq: "df.aq"; ar: "df.ar"; as: "df.as"; at: "df.at"; au: "df.au"; av: "df.av"; aw: "df.aw"; ax: "df.ax"; ay: "df.ay"; az: "df.az"; ba: "df.ba"; bb: "df.bb"; bc: "df.bc"; bd: "df.bd"; be: "df.be"; bf: "df.bf"; bg: "df.bg"; bh: "df.bh"; bi: "df.bi"; bj: "df.bj"; bk: "df.bk"; bl: "df.bl"; bm: "df.bm"; bn: "df.bn"; bo: "df.bo"; bp: "df.bp"; bq: "df.bq"; br: "df.br"; bs: "df.bs"; bt: "df.bt"; bu: "df.bu"; bv: "df.bv"; bw: "df.bw"; bx: "df.bx"; by: "df.by"; bz: "df.bz"; ca: "df.ca"; cb: "df.cb"; cc: "df.cc"; cd: "df.cd"; ce: "df.ce"; cf: "df.cf"; cg: "df.cg"; ch: "df.ch"; ci: "df.ci"; cj: "df.cj"; ck: "df.ck"; cl: "df.cl"; cm: "df.cm"; cn: "df.cn"; co: "df.co"; cp: "df.cp"; cq: "df.cq"; cr: "df.cr"; cs: "df.cs"; ct: "df.ct"; cu: "df.cu"; cv: "df.cv"; cw: "df.cw"; cx: "df.cx"; cy: "df.cy"; cz: "df.cz"; da: "df.da"; db: "df.db"; dc: "df.dc"; dd: "df.dd"; de: "df.de"; df: "df.df"; dg: "df.dg"; dh: "df.dh"; di: "df.di"; dj: "df.dj"; dk: "df.dk"; dl: "df.dl"; dm: "df.dm"; dn: "df.dn"; do: "df.do"; dp: "df.dp"; dq: "df.dq"; dr: "df.dr"; ds: "df.ds"; dt: "df.dt"; du: "df.du"; dv: "df.dv"; dw: "df.dw"; dx: "df.dx"; dy: "df.dy"; dz: "df.dz"; ea: "df.ea"; eb: "df.eb"; ec: "df.ec"; ed: "df.ed"; ee: "df.ee"; ef: "df.ef"; eg: "df.eg"; eh: "df.eh"; ei: "df.ei"; ej: "df.ej"; ek: "df.ek"; el: "df.el"; em: "df.em"; en: "df.en"; eo: "df.eo"; ep: "df.ep"; eq: "df.eq"; er: "df.er"; es: "df.es"; et: "df.et"; eu: "df.eu"; ev: "df.ev"; ew: "df.ew"; ex: "df.ex"; ey: "df.ey"; ez: "df.ez"; fa: "df.fa"; fb: "df.fb"; fc: "df.fc"; fd: "df.fd"; fe: "df.fe"; ff: "df.ff"; fg: "df.fg"; fh: "df.fh"; fi: "df.fi"; fj: "df.fj"; fk: "df.fk"; fl: "df.fl"; fm: "df.fm"; fn: "df.fn"; fo: "df.fo"; fp: "df.fp"; fq: "df.fq"; fr: "df.fr"; fs: "df.fs"; ft: "df.ft"; fu: "df.fu"; fv: "df.fv"; fw: "df.fw"; fx: "df.fx"; fy: "df.fy"; fz: "df.fz"; ga: "df.ga"; gb: "df.gb"; gc: "df.gc"; gd: "df.gd"; ge: "df.ge"; gf: "df.gf"; gg: "df.gg"; gh: "df.gh"; gi: "df.gi"; gj: "df.gj"; gk: "df.gk"; gl: "df.gl"; gm: "df.gm"; gn: "df.gn"; go: "df.go"; gp: "df.gp"; gq: "df.gq"; gr: "df.gr"; gs: "df.gs"; gt: "df.gt"; gu: "df.gu"; gv: "df.gv"; gw: "df.gw"; gx: "df.gx"; gy: "df.gy"; gz: "df.gz"; ha: "df.ha"; hb: "df.hb"; hc: "df.hc"; hd: "df.hd"; he: "df.he"; hf: "df.hf"; hg: "df.hg"; hh: "df.hh"; hi: "df.hi"; hj: "df.hj"; hk: "df.hk"; hl: "df.hl"; hm: "df.hm"; hn: "df.hn"; ho: "df.ho"; hp: "df.hp"; hq: "df.hq"; hr: "df.hr"; hs: "df.hs"; ht: "df.ht"; hu: "df.hu"; hv: "df.hv"; hw: "df.hw"; hx: "df.hx"; hy: "df.hy"; hz: "df.hz"; ia: "df.ia"; ib: "df.ib"; ic: "df.ic"; id: "df.id"; ie: "df.ie"; if: "df.if"; ig: "df.ig"; ih: "df.ih"; ii: "df.ii"; ij: "df.ij"; ik: "df.ik"; il: "df.il"; im: "df.im"; in: "df.in"; io: "df.io"; ip: "df.ip"; iq: "df.iq"; ir: "df.ir"; is: "df.is"; it: "df.it"; iu: "df.iu"; iv: "df.iv"; iw: "df.iw"; ix: "df.ix"; iy: "df.iy"; iz: "df.iz"; ja: "df.ja"; jb: "df.jb"; jc: "df.jc"; jd: "df.jd"; je: "df.je"; jf: "df.jf"; jg: "df.jg"; jh: "df.jh"; ji: "df.ji"; jj: "df.jj"; jk: "df.jk"; jl: "df.jl"; jm: "df.jm"; jn: "df.jn"; jo: "df.jo"; jp: "df.jp"; jq: "df.jq"; jr: "df.jr"; js: "df.js"; jt: "df.jt"; ju: "df.ju"; jv: "df.jv"; jw: "df.jw"; jx: "df.jx"; jy: "df.jy"; jz: "df.jz"; ka: "df.ka"; kb: "df.kb"; kc: "df.kc"; kd: "df.kd"; ke: "df.ke"; kf: "df.kf"; kg: "df.kg"; kh: "df.kh"; ki: "df.ki"; kj: "df.kj"; kk: "df.kk"; kl: "df.kl"; km: "df.km"; kn: "df.kn"; ko: "df.ko"; kp: "df.kp"; kq: "df.kq"; kr: "df.kr"; ks: "df.ks"; kt: "df.kt"; ku: "df.ku"; kv: "df.kv"; kw: "df.kw"; kx: "df.kx"; ky: "df.ky"; kz: "df.kz"; la: "df.la"; lb: "df.lb"; lc: "df.lc"; ld: "df.ld"; le: "df.le"; lf: "df.lf"; lg: "df.lg"; lh: "df.lh"; li: "df.li"; lj: "df.lj"; lk: "df.lk"; ll: "df.ll"; lm: "df.lm"; ln: "df.ln"; lo: "df.lo"; lp: "df.lp"; lq: "df.lq"; lr: "df.lr"; ls: "df.ls"; lt: "df.lt"; lu: "df.lu"; lv: "df.lv"; lw: "df.lw"; lx: "df.lx"; ly: "df.ly"; lz: "df.lz"; ma: "df.ma"; mb: "df.mb"; mc: "df.mc"; md: "df.md"; me: "df.me"; mf: "df.mf"; mg: "df.mg"; mh: "df.mh"; mi: "df.mi"; mj: "df.mj"; mk: "df.mk"; ml: "df.ml"; mm: "df.mm"; mn: "df.mn"; mo: "df.mo"; mp: "df.mp"; mq: "df.mq"; mr: "df.mr"; ms: "df.ms"; mt: "df.mt"; mu: "df.mu"; mv: "df.mv"; mw: "df.mw"; mx: "df.mx"; my: "df.my"; mz: "df.mz"; na: "df.na"; nb: "df.nb"; nc: "df.nc"; nd: "df.nd"; ne: "df.ne"; nf: "df.nf"; ng: "df.ng"; nh: "df.nh"; ni: "df.ni"; nj: "df.nj"; nk: "df.nk"; nl: "df.nl"; nm: "df.nm"; nn: "df.nn"; no: "df.no"; np: "df.np"; nq: "df.nq"; nr: "df.nr"; ns: "df.ns"; nt: "df.nt"; nu: "df.nu"; nv: "df.nv"; nw: "df.nw"; nx: "df.nx"; ny: "df.ny"; nz: "df.nz"; oa: "df.oa"; ob: "df.ob"; oc: "df.oc"; od: "df.od"; oe: "df.oe"; of: "df.of"; og: "df.og"; oh: "df.oh"; oi: "df.oi"; oj: "df.oj"; ok: "df.ok"; ol: "df.ol"; om: "df.om"; on: "df.on"; oo: "df.oo"; op: "df.op"; oq: "df.oq"; or: "df.or"; os: "df.os"; ot: "df.ot"; ou: "df.ou"; ov: "df.ov"; ow: "df.ow"; ox: "df.ox"; oy: "df.oy"; oz: "df.oz"; pa: "df.pa"; pb: "df.pb"; pc: "df.pc"; pd: "df.pd"; pe: "df.pe"; pf: "df.pf"; pg: "df.pg"; ph: "df.ph"; pi: "df.pi"; pj: "df.pj"; pk: "df.pk"; pl: "df.pl"; pm: "df.pm"; pn: "df.pn"; po: "df.po"; pp: "df.pp"; pq: "df.pq"; pr: "df.pr"; ps: "df.ps"; pt: "df.pt"; pu: "df.pu"; pv: "df.pv"; pw: "df.pw"; px: "df.px"; py: "df.py"; pz: "df.pz"; qa: "df.qa"; qb: "df.qb"; qc: "df.qc"; qd: "df.qd"; qe: "df.qe"; qf: "df.qf"; qg: "df.qg"; qh: "df.qh"; qi: "df.qi"; qj: "df.qj"; qk: "df.qk"; ql: "df.ql"; qm: "df.qm"; qn: "df.qn"; qo: "df.qo"; qp: "df.qp"; qq: "df.qq"; qr: "df.qr"; qs: "df.qs"; qt: "df.qt"; qu: "df.qu"; qv: "df.qv"; qw: "df.qw"; qx: "df.qx"; qy: "df.qy"; qz: "df.qz"; ra: "df.ra"; rb: "df.rb"; rc: "df.rc"; rd: "df.rd"; re: "df.re"; rf: "df.rf"; rg: "df.rg"; rh: "df.rh"; ri: "df.ri"; rj: "df.rj"; rk: "df.rk"; rl: "df.rl"; rm: "df.rm"; rn: "df.rn"; ro: "df.ro"; rp: "df.rp"; rq: "df.rq"; rr: "df.rr"; rs: "df.rs"; rt: "df.rt"; ru: "df.ru"; rv: "df.rv"; rw: "df.rw"; rx: "df.rx"; ry: "df.ry"; rz: "df.rz"; sa: "df.sa"; sb: "df.sb"; sc: "df.sc"; sd: "df.sd"; se: "df.se"; sf: "df.sf"; sg: "df.sg"; sh: "df.sh"; si: "df.si"; sj: "df.sj"; sk: "df.sk"; sl: "df.sl"; sm: "df.sm"; sn: "df.sn"; so: "df.so"; sp: "df.sp"; sq: "df.sq"; sr: "df.sr"; ss: "df.ss"; st: "df.st"; su: "df.su"; sv: "df.sv"; sw: "df.sw"; sx: "df.sx"; sy: "df.sy"; sz: "df.sz"; ta: "df.ta"; tb: "df.tb"; tc: "df.tc"; td: "df.td"; te: "df.te"; tf: "df.tf"; tg: "df.tg"; th: "df.th"; ti: "df.ti"; tj: "df.tj"; tk: "df.tk"; tl: "df.tl"; tm: "df.tm"; tn: "df.tn"; to: "df.to"; tp: "df.tp"; tq: "df.tq"; tr: "df.tr"; ts: "df.ts"; tt: "df.tt"; tu: "df.tu"; tv: "df.tv"; tw: "df.tw"; tx: "df.tx"; ty: "df.ty"; tz: "df.tz"; ua: "df.ua"; ub: "df.ub"; uc: "df.uc"; ud: "df.ud"; ue: "df.ue"; uf: "df.uf"; ug: "df.ug"; uh: "df.uh"; ui: "df.ui"; uj: "df.uj"; uk: "df.uk"; ul: "df.ul"; um: "df.um"; un: "df.un"; uo: "df.uo"; up: "df.up"; uq: "df.uq"; ur: "df.ur"; us: "df.us"; ut: "df.ut"; uu: "df.uu"; uv: "df.uv"; uw: "df.uw"; ux: "df.ux"; uy: "df.uy"; uz: "df.uz"; va: "df.va"; vb: "df.vb"; vc: "df.vc"; vd: "df.vd"; ve: "df.ve"; vf: "df.vf"; vg: "df.vg"; vh: "df.vh"; vi: "df.vi"; vj: "df.vj"; vk: "df.vk"; vl: "df.vl"; vm: "df.vm"; vn: "df.vn"; vo: "df.vo"; vp: "df.vp"; vq: "df.vq"; vr: "df.vr"; vs: "df.vs"; vt: "df.vt"; vu: "df.vu"; vv: "df.vv"; vw: "df.vw"; vx: "df.vx"; vy: "df.vy"; vz: "df.vz"; wa: "df.wa"; wb: "df.wb"; wc: "df.wc"; wd: "df.wd"; we: "df.we"; wf: "df.wf"; wg: "df.wg"; wh: "df.wh"; wi: "df.wi"; wj: "df.wj"; wk: "df.wk"; wl: "df.wl"; wm: "df.wm"; wn: "df.wn"; wo: "df.wo"; wp: "df.wp"; wq: "df.wq"; wr: "df.wr"; ws: "df.ws"; wt: "df.wt"; wu: "df.wu"; wv: "df.wv"; ww: "df.ww"; wx: "df.wx"; wy: "df.wy"; wz: "df.wz"; xa: "df.xa"; xb: "df.xb"; xc: "df.xc"; xd: "df.xd"; xe: "df.xe"; xf: "df.xf"; xg: "df.xg"; xh: "df.xh"; xi: "df.xi"; xj: "df.xj"; xk: "df.xk"; xl: "df.xl"; xm: "df.xm"; xn: "df.xn"; xo: "df.xo"; xp: "df.xp"; xq: "df.xq"; xr: "df.xr"; xs: "df.xs"; xt: "df.xt"; xu: "df.xu"; xv: "df.xv"; xw: "df.xw"; xx: "df.xx"; xy: "df.xy"; xz: "df.xz"; ya: "df.ya"; yb: "df.yb"; yc: "df.yc"; yd: "df.yd"; ye: "df.ye"; yf: "df.yf"; yg: "df.yg"; yh: "df.yh"; yi: "df.yi"; yj: "df.yj"; yk: "df.yk"; yl: "df.yl"; ym: "df.ym"; yn: "df.yn"; yo: "df.yo"; yp: "df.yp"; yq: "df.yq"; yr: "df.yr"; ys: "df.ys"; yt: "df.yt"; yu: "df.yu"; yv: "df.yv"; yw: "df.yw"; yx: "df.yx"; yy: "df.yy"; yz: "df.yz"; za: "df.za"; zb: "df.zb"; zc: "df.zc"; zd: "df.zd"; ze: "df.ze"; zf: "df.zf"; zg: "df.zg"; zh: "df.zh"; zi: "df.zi"; zj: "df.zj"; zk: "df.zk"; zl: "df.zl"; zm: "df.zm"; zn: "df.zn"; zo: "df.zo"; zp: "df.zp"; zq: "df.zq"; zr: "df.zr"; zs: "df.zs"; zt: "df.zt"; zu: "df.zu"; zv: "df.zv"; zw: "df.zw"; zx: "df.zx"; zy: "df.zy"; zz: "df.zz"; }; dg: { aa: "dg.aa"; ab: "dg.ab"; ac: "dg.ac"; ad: "dg.ad"; ae: "dg.ae"; af: "dg.af"; ag: "dg.ag"; ah: "dg.ah"; ai: "dg.ai"; aj: "dg.aj"; ak: "dg.ak"; al: "dg.al"; am: "dg.am"; an: "dg.an"; ao: "dg.ao"; ap: "dg.ap"; aq: "dg.aq"; ar: "dg.ar"; as: "dg.as"; at: "dg.at"; au: "dg.au"; av: "dg.av"; aw: "dg.aw"; ax: "dg.ax"; ay: "dg.ay"; az: "dg.az"; ba: "dg.ba"; bb: "dg.bb"; bc: "dg.bc"; bd: "dg.bd"; be: "dg.be"; bf: "dg.bf"; bg: "dg.bg"; bh: "dg.bh"; bi: "dg.bi"; bj: "dg.bj"; bk: "dg.bk"; bl: "dg.bl"; bm: "dg.bm"; bn: "dg.bn"; bo: "dg.bo"; bp: "dg.bp"; bq: "dg.bq"; br: "dg.br"; bs: "dg.bs"; bt: "dg.bt"; bu: "dg.bu"; bv: "dg.bv"; bw: "dg.bw"; bx: "dg.bx"; by: "dg.by"; bz: "dg.bz"; ca: "dg.ca"; cb: "dg.cb"; cc: "dg.cc"; cd: "dg.cd"; ce: "dg.ce"; cf: "dg.cf"; cg: "dg.cg"; ch: "dg.ch"; ci: "dg.ci"; cj: "dg.cj"; ck: "dg.ck"; cl: "dg.cl"; cm: "dg.cm"; cn: "dg.cn"; co: "dg.co"; cp: "dg.cp"; cq: "dg.cq"; cr: "dg.cr"; cs: "dg.cs"; ct: "dg.ct"; cu: "dg.cu"; cv: "dg.cv"; cw: "dg.cw"; cx: "dg.cx"; cy: "dg.cy"; cz: "dg.cz"; da: "dg.da"; db: "dg.db"; dc: "dg.dc"; dd: "dg.dd"; de: "dg.de"; df: "dg.df"; dg: "dg.dg"; dh: "dg.dh"; di: "dg.di"; dj: "dg.dj"; dk: "dg.dk"; dl: "dg.dl"; dm: "dg.dm"; dn: "dg.dn"; do: "dg.do"; dp: "dg.dp"; dq: "dg.dq"; dr: "dg.dr"; ds: "dg.ds"; dt: "dg.dt"; du: "dg.du"; dv: "dg.dv"; dw: "dg.dw"; dx: "dg.dx"; dy: "dg.dy"; dz: "dg.dz"; ea: "dg.ea"; eb: "dg.eb"; ec: "dg.ec"; ed: "dg.ed"; ee: "dg.ee"; ef: "dg.ef"; eg: "dg.eg"; eh: "dg.eh"; ei: "dg.ei"; ej: "dg.ej"; ek: "dg.ek"; el: "dg.el"; em: "dg.em"; en: "dg.en"; eo: "dg.eo"; ep: "dg.ep"; eq: "dg.eq"; er: "dg.er"; es: "dg.es"; et: "dg.et"; eu: "dg.eu"; ev: "dg.ev"; ew: "dg.ew"; ex: "dg.ex"; ey: "dg.ey"; ez: "dg.ez"; fa: "dg.fa"; fb: "dg.fb"; fc: "dg.fc"; fd: "dg.fd"; fe: "dg.fe"; ff: "dg.ff"; fg: "dg.fg"; fh: "dg.fh"; fi: "dg.fi"; fj: "dg.fj"; fk: "dg.fk"; fl: "dg.fl"; fm: "dg.fm"; fn: "dg.fn"; fo: "dg.fo"; fp: "dg.fp"; fq: "dg.fq"; fr: "dg.fr"; fs: "dg.fs"; ft: "dg.ft"; fu: "dg.fu"; fv: "dg.fv"; fw: "dg.fw"; fx: "dg.fx"; fy: "dg.fy"; fz: "dg.fz"; ga: "dg.ga"; gb: "dg.gb"; gc: "dg.gc"; gd: "dg.gd"; ge: "dg.ge"; gf: "dg.gf"; gg: "dg.gg"; gh: "dg.gh"; gi: "dg.gi"; gj: "dg.gj"; gk: "dg.gk"; gl: "dg.gl"; gm: "dg.gm"; gn: "dg.gn"; go: "dg.go"; gp: "dg.gp"; gq: "dg.gq"; gr: "dg.gr"; gs: "dg.gs"; gt: "dg.gt"; gu: "dg.gu"; gv: "dg.gv"; gw: "dg.gw"; gx: "dg.gx"; gy: "dg.gy"; gz: "dg.gz"; ha: "dg.ha"; hb: "dg.hb"; hc: "dg.hc"; hd: "dg.hd"; he: "dg.he"; hf: "dg.hf"; hg: "dg.hg"; hh: "dg.hh"; hi: "dg.hi"; hj: "dg.hj"; hk: "dg.hk"; hl: "dg.hl"; hm: "dg.hm"; hn: "dg.hn"; ho: "dg.ho"; hp: "dg.hp"; hq: "dg.hq"; hr: "dg.hr"; hs: "dg.hs"; ht: "dg.ht"; hu: "dg.hu"; hv: "dg.hv"; hw: "dg.hw"; hx: "dg.hx"; hy: "dg.hy"; hz: "dg.hz"; ia: "dg.ia"; ib: "dg.ib"; ic: "dg.ic"; id: "dg.id"; ie: "dg.ie"; if: "dg.if"; ig: "dg.ig"; ih: "dg.ih"; ii: "dg.ii"; ij: "dg.ij"; ik: "dg.ik"; il: "dg.il"; im: "dg.im"; in: "dg.in"; io: "dg.io"; ip: "dg.ip"; iq: "dg.iq"; ir: "dg.ir"; is: "dg.is"; it: "dg.it"; iu: "dg.iu"; iv: "dg.iv"; iw: "dg.iw"; ix: "dg.ix"; iy: "dg.iy"; iz: "dg.iz"; ja: "dg.ja"; jb: "dg.jb"; jc: "dg.jc"; jd: "dg.jd"; je: "dg.je"; jf: "dg.jf"; jg: "dg.jg"; jh: "dg.jh"; ji: "dg.ji"; jj: "dg.jj"; jk: "dg.jk"; jl: "dg.jl"; jm: "dg.jm"; jn: "dg.jn"; jo: "dg.jo"; jp: "dg.jp"; jq: "dg.jq"; jr: "dg.jr"; js: "dg.js"; jt: "dg.jt"; ju: "dg.ju"; jv: "dg.jv"; jw: "dg.jw"; jx: "dg.jx"; jy: "dg.jy"; jz: "dg.jz"; ka: "dg.ka"; kb: "dg.kb"; kc: "dg.kc"; kd: "dg.kd"; ke: "dg.ke"; kf: "dg.kf"; kg: "dg.kg"; kh: "dg.kh"; ki: "dg.ki"; kj: "dg.kj"; kk: "dg.kk"; kl: "dg.kl"; km: "dg.km"; kn: "dg.kn"; ko: "dg.ko"; kp: "dg.kp"; kq: "dg.kq"; kr: "dg.kr"; ks: "dg.ks"; kt: "dg.kt"; ku: "dg.ku"; kv: "dg.kv"; kw: "dg.kw"; kx: "dg.kx"; ky: "dg.ky"; kz: "dg.kz"; la: "dg.la"; lb: "dg.lb"; lc: "dg.lc"; ld: "dg.ld"; le: "dg.le"; lf: "dg.lf"; lg: "dg.lg"; lh: "dg.lh"; li: "dg.li"; lj: "dg.lj"; lk: "dg.lk"; ll: "dg.ll"; lm: "dg.lm"; ln: "dg.ln"; lo: "dg.lo"; lp: "dg.lp"; lq: "dg.lq"; lr: "dg.lr"; ls: "dg.ls"; lt: "dg.lt"; lu: "dg.lu"; lv: "dg.lv"; lw: "dg.lw"; lx: "dg.lx"; ly: "dg.ly"; lz: "dg.lz"; ma: "dg.ma"; mb: "dg.mb"; mc: "dg.mc"; md: "dg.md"; me: "dg.me"; mf: "dg.mf"; mg: "dg.mg"; mh: "dg.mh"; mi: "dg.mi"; mj: "dg.mj"; mk: "dg.mk"; ml: "dg.ml"; mm: "dg.mm"; mn: "dg.mn"; mo: "dg.mo"; mp: "dg.mp"; mq: "dg.mq"; mr: "dg.mr"; ms: "dg.ms"; mt: "dg.mt"; mu: "dg.mu"; mv: "dg.mv"; mw: "dg.mw"; mx: "dg.mx"; my: "dg.my"; mz: "dg.mz"; na: "dg.na"; nb: "dg.nb"; nc: "dg.nc"; nd: "dg.nd"; ne: "dg.ne"; nf: "dg.nf"; ng: "dg.ng"; nh: "dg.nh"; ni: "dg.ni"; nj: "dg.nj"; nk: "dg.nk"; nl: "dg.nl"; nm: "dg.nm"; nn: "dg.nn"; no: "dg.no"; np: "dg.np"; nq: "dg.nq"; nr: "dg.nr"; ns: "dg.ns"; nt: "dg.nt"; nu: "dg.nu"; nv: "dg.nv"; nw: "dg.nw"; nx: "dg.nx"; ny: "dg.ny"; nz: "dg.nz"; oa: "dg.oa"; ob: "dg.ob"; oc: "dg.oc"; od: "dg.od"; oe: "dg.oe"; of: "dg.of"; og: "dg.og"; oh: "dg.oh"; oi: "dg.oi"; oj: "dg.oj"; ok: "dg.ok"; ol: "dg.ol"; om: "dg.om"; on: "dg.on"; oo: "dg.oo"; op: "dg.op"; oq: "dg.oq"; or: "dg.or"; os: "dg.os"; ot: "dg.ot"; ou: "dg.ou"; ov: "dg.ov"; ow: "dg.ow"; ox: "dg.ox"; oy: "dg.oy"; oz: "dg.oz"; pa: "dg.pa"; pb: "dg.pb"; pc: "dg.pc"; pd: "dg.pd"; pe: "dg.pe"; pf: "dg.pf"; pg: "dg.pg"; ph: "dg.ph"; pi: "dg.pi"; pj: "dg.pj"; pk: "dg.pk"; pl: "dg.pl"; pm: "dg.pm"; pn: "dg.pn"; po: "dg.po"; pp: "dg.pp"; pq: "dg.pq"; pr: "dg.pr"; ps: "dg.ps"; pt: "dg.pt"; pu: "dg.pu"; pv: "dg.pv"; pw: "dg.pw"; px: "dg.px"; py: "dg.py"; pz: "dg.pz"; qa: "dg.qa"; qb: "dg.qb"; qc: "dg.qc"; qd: "dg.qd"; qe: "dg.qe"; qf: "dg.qf"; qg: "dg.qg"; qh: "dg.qh"; qi: "dg.qi"; qj: "dg.qj"; qk: "dg.qk"; ql: "dg.ql"; qm: "dg.qm"; qn: "dg.qn"; qo: "dg.qo"; qp: "dg.qp"; qq: "dg.qq"; qr: "dg.qr"; qs: "dg.qs"; qt: "dg.qt"; qu: "dg.qu"; qv: "dg.qv"; qw: "dg.qw"; qx: "dg.qx"; qy: "dg.qy"; qz: "dg.qz"; ra: "dg.ra"; rb: "dg.rb"; rc: "dg.rc"; rd: "dg.rd"; re: "dg.re"; rf: "dg.rf"; rg: "dg.rg"; rh: "dg.rh"; ri: "dg.ri"; rj: "dg.rj"; rk: "dg.rk"; rl: "dg.rl"; rm: "dg.rm"; rn: "dg.rn"; ro: "dg.ro"; rp: "dg.rp"; rq: "dg.rq"; rr: "dg.rr"; rs: "dg.rs"; rt: "dg.rt"; ru: "dg.ru"; rv: "dg.rv"; rw: "dg.rw"; rx: "dg.rx"; ry: "dg.ry"; rz: "dg.rz"; sa: "dg.sa"; sb: "dg.sb"; sc: "dg.sc"; sd: "dg.sd"; se: "dg.se"; sf: "dg.sf"; sg: "dg.sg"; sh: "dg.sh"; si: "dg.si"; sj: "dg.sj"; sk: "dg.sk"; sl: "dg.sl"; sm: "dg.sm"; sn: "dg.sn"; so: "dg.so"; sp: "dg.sp"; sq: "dg.sq"; sr: "dg.sr"; ss: "dg.ss"; st: "dg.st"; su: "dg.su"; sv: "dg.sv"; sw: "dg.sw"; sx: "dg.sx"; sy: "dg.sy"; sz: "dg.sz"; ta: "dg.ta"; tb: "dg.tb"; tc: "dg.tc"; td: "dg.td"; te: "dg.te"; tf: "dg.tf"; tg: "dg.tg"; th: "dg.th"; ti: "dg.ti"; tj: "dg.tj"; tk: "dg.tk"; tl: "dg.tl"; tm: "dg.tm"; tn: "dg.tn"; to: "dg.to"; tp: "dg.tp"; tq: "dg.tq"; tr: "dg.tr"; ts: "dg.ts"; tt: "dg.tt"; tu: "dg.tu"; tv: "dg.tv"; tw: "dg.tw"; tx: "dg.tx"; ty: "dg.ty"; tz: "dg.tz"; ua: "dg.ua"; ub: "dg.ub"; uc: "dg.uc"; ud: "dg.ud"; ue: "dg.ue"; uf: "dg.uf"; ug: "dg.ug"; uh: "dg.uh"; ui: "dg.ui"; uj: "dg.uj"; uk: "dg.uk"; ul: "dg.ul"; um: "dg.um"; un: "dg.un"; uo: "dg.uo"; up: "dg.up"; uq: "dg.uq"; ur: "dg.ur"; us: "dg.us"; ut: "dg.ut"; uu: "dg.uu"; uv: "dg.uv"; uw: "dg.uw"; ux: "dg.ux"; uy: "dg.uy"; uz: "dg.uz"; va: "dg.va"; vb: "dg.vb"; vc: "dg.vc"; vd: "dg.vd"; ve: "dg.ve"; vf: "dg.vf"; vg: "dg.vg"; vh: "dg.vh"; vi: "dg.vi"; vj: "dg.vj"; vk: "dg.vk"; vl: "dg.vl"; vm: "dg.vm"; vn: "dg.vn"; vo: "dg.vo"; vp: "dg.vp"; vq: "dg.vq"; vr: "dg.vr"; vs: "dg.vs"; vt: "dg.vt"; vu: "dg.vu"; vv: "dg.vv"; vw: "dg.vw"; vx: "dg.vx"; vy: "dg.vy"; vz: "dg.vz"; wa: "dg.wa"; wb: "dg.wb"; wc: "dg.wc"; wd: "dg.wd"; we: "dg.we"; wf: "dg.wf"; wg: "dg.wg"; wh: "dg.wh"; wi: "dg.wi"; wj: "dg.wj"; wk: "dg.wk"; wl: "dg.wl"; wm: "dg.wm"; wn: "dg.wn"; wo: "dg.wo"; wp: "dg.wp"; wq: "dg.wq"; wr: "dg.wr"; ws: "dg.ws"; wt: "dg.wt"; wu: "dg.wu"; wv: "dg.wv"; ww: "dg.ww"; wx: "dg.wx"; wy: "dg.wy"; wz: "dg.wz"; xa: "dg.xa"; xb: "dg.xb"; xc: "dg.xc"; xd: "dg.xd"; xe: "dg.xe"; xf: "dg.xf"; xg: "dg.xg"; xh: "dg.xh"; xi: "dg.xi"; xj: "dg.xj"; xk: "dg.xk"; xl: "dg.xl"; xm: "dg.xm"; xn: "dg.xn"; xo: "dg.xo"; xp: "dg.xp"; xq: "dg.xq"; xr: "dg.xr"; xs: "dg.xs"; xt: "dg.xt"; xu: "dg.xu"; xv: "dg.xv"; xw: "dg.xw"; xx: "dg.xx"; xy: "dg.xy"; xz: "dg.xz"; ya: "dg.ya"; yb: "dg.yb"; yc: "dg.yc"; yd: "dg.yd"; ye: "dg.ye"; yf: "dg.yf"; yg: "dg.yg"; yh: "dg.yh"; yi: "dg.yi"; yj: "dg.yj"; yk: "dg.yk"; yl: "dg.yl"; ym: "dg.ym"; yn: "dg.yn"; yo: "dg.yo"; yp: "dg.yp"; yq: "dg.yq"; yr: "dg.yr"; ys: "dg.ys"; yt: "dg.yt"; yu: "dg.yu"; yv: "dg.yv"; yw: "dg.yw"; yx: "dg.yx"; yy: "dg.yy"; yz: "dg.yz"; za: "dg.za"; zb: "dg.zb"; zc: "dg.zc"; zd: "dg.zd"; ze: "dg.ze"; zf: "dg.zf"; zg: "dg.zg"; zh: "dg.zh"; zi: "dg.zi"; zj: "dg.zj"; zk: "dg.zk"; zl: "dg.zl"; zm: "dg.zm"; zn: "dg.zn"; zo: "dg.zo"; zp: "dg.zp"; zq: "dg.zq"; zr: "dg.zr"; zs: "dg.zs"; zt: "dg.zt"; zu: "dg.zu"; zv: "dg.zv"; zw: "dg.zw"; zx: "dg.zx"; zy: "dg.zy"; zz: "dg.zz"; }; dh: { aa: "dh.aa"; ab: "dh.ab"; ac: "dh.ac"; ad: "dh.ad"; ae: "dh.ae"; af: "dh.af"; ag: "dh.ag"; ah: "dh.ah"; ai: "dh.ai"; aj: "dh.aj"; ak: "dh.ak"; al: "dh.al"; am: "dh.am"; an: "dh.an"; ao: "dh.ao"; ap: "dh.ap"; aq: "dh.aq"; ar: "dh.ar"; as: "dh.as"; at: "dh.at"; au: "dh.au"; av: "dh.av"; aw: "dh.aw"; ax: "dh.ax"; ay: "dh.ay"; az: "dh.az"; ba: "dh.ba"; bb: "dh.bb"; bc: "dh.bc"; bd: "dh.bd"; be: "dh.be"; bf: "dh.bf"; bg: "dh.bg"; bh: "dh.bh"; bi: "dh.bi"; bj: "dh.bj"; bk: "dh.bk"; bl: "dh.bl"; bm: "dh.bm"; bn: "dh.bn"; bo: "dh.bo"; bp: "dh.bp"; bq: "dh.bq"; br: "dh.br"; bs: "dh.bs"; bt: "dh.bt"; bu: "dh.bu"; bv: "dh.bv"; bw: "dh.bw"; bx: "dh.bx"; by: "dh.by"; bz: "dh.bz"; ca: "dh.ca"; cb: "dh.cb"; cc: "dh.cc"; cd: "dh.cd"; ce: "dh.ce"; cf: "dh.cf"; cg: "dh.cg"; ch: "dh.ch"; ci: "dh.ci"; cj: "dh.cj"; ck: "dh.ck"; cl: "dh.cl"; cm: "dh.cm"; cn: "dh.cn"; co: "dh.co"; cp: "dh.cp"; cq: "dh.cq"; cr: "dh.cr"; cs: "dh.cs"; ct: "dh.ct"; cu: "dh.cu"; cv: "dh.cv"; cw: "dh.cw"; cx: "dh.cx"; cy: "dh.cy"; cz: "dh.cz"; da: "dh.da"; db: "dh.db"; dc: "dh.dc"; dd: "dh.dd"; de: "dh.de"; df: "dh.df"; dg: "dh.dg"; dh: "dh.dh"; di: "dh.di"; dj: "dh.dj"; dk: "dh.dk"; dl: "dh.dl"; dm: "dh.dm"; dn: "dh.dn"; do: "dh.do"; dp: "dh.dp"; dq: "dh.dq"; dr: "dh.dr"; ds: "dh.ds"; dt: "dh.dt"; du: "dh.du"; dv: "dh.dv"; dw: "dh.dw"; dx: "dh.dx"; dy: "dh.dy"; dz: "dh.dz"; ea: "dh.ea"; eb: "dh.eb"; ec: "dh.ec"; ed: "dh.ed"; ee: "dh.ee"; ef: "dh.ef"; eg: "dh.eg"; eh: "dh.eh"; ei: "dh.ei"; ej: "dh.ej"; ek: "dh.ek"; el: "dh.el"; em: "dh.em"; en: "dh.en"; eo: "dh.eo"; ep: "dh.ep"; eq: "dh.eq"; er: "dh.er"; es: "dh.es"; et: "dh.et"; eu: "dh.eu"; ev: "dh.ev"; ew: "dh.ew"; ex: "dh.ex"; ey: "dh.ey"; ez: "dh.ez"; fa: "dh.fa"; fb: "dh.fb"; fc: "dh.fc"; fd: "dh.fd"; fe: "dh.fe"; ff: "dh.ff"; fg: "dh.fg"; fh: "dh.fh"; fi: "dh.fi"; fj: "dh.fj"; fk: "dh.fk"; fl: "dh.fl"; fm: "dh.fm"; fn: "dh.fn"; fo: "dh.fo"; fp: "dh.fp"; fq: "dh.fq"; fr: "dh.fr"; fs: "dh.fs"; ft: "dh.ft"; fu: "dh.fu"; fv: "dh.fv"; fw: "dh.fw"; fx: "dh.fx"; fy: "dh.fy"; fz: "dh.fz"; ga: "dh.ga"; gb: "dh.gb"; gc: "dh.gc"; gd: "dh.gd"; ge: "dh.ge"; gf: "dh.gf"; gg: "dh.gg"; gh: "dh.gh"; gi: "dh.gi"; gj: "dh.gj"; gk: "dh.gk"; gl: "dh.gl"; gm: "dh.gm"; gn: "dh.gn"; go: "dh.go"; gp: "dh.gp"; gq: "dh.gq"; gr: "dh.gr"; gs: "dh.gs"; gt: "dh.gt"; gu: "dh.gu"; gv: "dh.gv"; gw: "dh.gw"; gx: "dh.gx"; gy: "dh.gy"; gz: "dh.gz"; ha: "dh.ha"; hb: "dh.hb"; hc: "dh.hc"; hd: "dh.hd"; he: "dh.he"; hf: "dh.hf"; hg: "dh.hg"; hh: "dh.hh"; hi: "dh.hi"; hj: "dh.hj"; hk: "dh.hk"; hl: "dh.hl"; hm: "dh.hm"; hn: "dh.hn"; ho: "dh.ho"; hp: "dh.hp"; hq: "dh.hq"; hr: "dh.hr"; hs: "dh.hs"; ht: "dh.ht"; hu: "dh.hu"; hv: "dh.hv"; hw: "dh.hw"; hx: "dh.hx"; hy: "dh.hy"; hz: "dh.hz"; ia: "dh.ia"; ib: "dh.ib"; ic: "dh.ic"; id: "dh.id"; ie: "dh.ie"; if: "dh.if"; ig: "dh.ig"; ih: "dh.ih"; ii: "dh.ii"; ij: "dh.ij"; ik: "dh.ik"; il: "dh.il"; im: "dh.im"; in: "dh.in"; io: "dh.io"; ip: "dh.ip"; iq: "dh.iq"; ir: "dh.ir"; is: "dh.is"; it: "dh.it"; iu: "dh.iu"; iv: "dh.iv"; iw: "dh.iw"; ix: "dh.ix"; iy: "dh.iy"; iz: "dh.iz"; ja: "dh.ja"; jb: "dh.jb"; jc: "dh.jc"; jd: "dh.jd"; je: "dh.je"; jf: "dh.jf"; jg: "dh.jg"; jh: "dh.jh"; ji: "dh.ji"; jj: "dh.jj"; jk: "dh.jk"; jl: "dh.jl"; jm: "dh.jm"; jn: "dh.jn"; jo: "dh.jo"; jp: "dh.jp"; jq: "dh.jq"; jr: "dh.jr"; js: "dh.js"; jt: "dh.jt"; ju: "dh.ju"; jv: "dh.jv"; jw: "dh.jw"; jx: "dh.jx"; jy: "dh.jy"; jz: "dh.jz"; ka: "dh.ka"; kb: "dh.kb"; kc: "dh.kc"; kd: "dh.kd"; ke: "dh.ke"; kf: "dh.kf"; kg: "dh.kg"; kh: "dh.kh"; ki: "dh.ki"; kj: "dh.kj"; kk: "dh.kk"; kl: "dh.kl"; km: "dh.km"; kn: "dh.kn"; ko: "dh.ko"; kp: "dh.kp"; kq: "dh.kq"; kr: "dh.kr"; ks: "dh.ks"; kt: "dh.kt"; ku: "dh.ku"; kv: "dh.kv"; kw: "dh.kw"; kx: "dh.kx"; ky: "dh.ky"; kz: "dh.kz"; la: "dh.la"; lb: "dh.lb"; lc: "dh.lc"; ld: "dh.ld"; le: "dh.le"; lf: "dh.lf"; lg: "dh.lg"; lh: "dh.lh"; li: "dh.li"; lj: "dh.lj"; lk: "dh.lk"; ll: "dh.ll"; lm: "dh.lm"; ln: "dh.ln"; lo: "dh.lo"; lp: "dh.lp"; lq: "dh.lq"; lr: "dh.lr"; ls: "dh.ls"; lt: "dh.lt"; lu: "dh.lu"; lv: "dh.lv"; lw: "dh.lw"; lx: "dh.lx"; ly: "dh.ly"; lz: "dh.lz"; ma: "dh.ma"; mb: "dh.mb"; mc: "dh.mc"; md: "dh.md"; me: "dh.me"; mf: "dh.mf"; mg: "dh.mg"; mh: "dh.mh"; mi: "dh.mi"; mj: "dh.mj"; mk: "dh.mk"; ml: "dh.ml"; mm: "dh.mm"; mn: "dh.mn"; mo: "dh.mo"; mp: "dh.mp"; mq: "dh.mq"; mr: "dh.mr"; ms: "dh.ms"; mt: "dh.mt"; mu: "dh.mu"; mv: "dh.mv"; mw: "dh.mw"; mx: "dh.mx"; my: "dh.my"; mz: "dh.mz"; na: "dh.na"; nb: "dh.nb"; nc: "dh.nc"; nd: "dh.nd"; ne: "dh.ne"; nf: "dh.nf"; ng: "dh.ng"; nh: "dh.nh"; ni: "dh.ni"; nj: "dh.nj"; nk: "dh.nk"; nl: "dh.nl"; nm: "dh.nm"; nn: "dh.nn"; no: "dh.no"; np: "dh.np"; nq: "dh.nq"; nr: "dh.nr"; ns: "dh.ns"; nt: "dh.nt"; nu: "dh.nu"; nv: "dh.nv"; nw: "dh.nw"; nx: "dh.nx"; ny: "dh.ny"; nz: "dh.nz"; oa: "dh.oa"; ob: "dh.ob"; oc: "dh.oc"; od: "dh.od"; oe: "dh.oe"; of: "dh.of"; og: "dh.og"; oh: "dh.oh"; oi: "dh.oi"; oj: "dh.oj"; ok: "dh.ok"; ol: "dh.ol"; om: "dh.om"; on: "dh.on"; oo: "dh.oo"; op: "dh.op"; oq: "dh.oq"; or: "dh.or"; os: "dh.os"; ot: "dh.ot"; ou: "dh.ou"; ov: "dh.ov"; ow: "dh.ow"; ox: "dh.ox"; oy: "dh.oy"; oz: "dh.oz"; pa: "dh.pa"; pb: "dh.pb"; pc: "dh.pc"; pd: "dh.pd"; pe: "dh.pe"; pf: "dh.pf"; pg: "dh.pg"; ph: "dh.ph"; pi: "dh.pi"; pj: "dh.pj"; pk: "dh.pk"; pl: "dh.pl"; pm: "dh.pm"; pn: "dh.pn"; po: "dh.po"; pp: "dh.pp"; pq: "dh.pq"; pr: "dh.pr"; ps: "dh.ps"; pt: "dh.pt"; pu: "dh.pu"; pv: "dh.pv"; pw: "dh.pw"; px: "dh.px"; py: "dh.py"; pz: "dh.pz"; qa: "dh.qa"; qb: "dh.qb"; qc: "dh.qc"; qd: "dh.qd"; qe: "dh.qe"; qf: "dh.qf"; qg: "dh.qg"; qh: "dh.qh"; qi: "dh.qi"; qj: "dh.qj"; qk: "dh.qk"; ql: "dh.ql"; qm: "dh.qm"; qn: "dh.qn"; qo: "dh.qo"; qp: "dh.qp"; qq: "dh.qq"; qr: "dh.qr"; qs: "dh.qs"; qt: "dh.qt"; qu: "dh.qu"; qv: "dh.qv"; qw: "dh.qw"; qx: "dh.qx"; qy: "dh.qy"; qz: "dh.qz"; ra: "dh.ra"; rb: "dh.rb"; rc: "dh.rc"; rd: "dh.rd"; re: "dh.re"; rf: "dh.rf"; rg: "dh.rg"; rh: "dh.rh"; ri: "dh.ri"; rj: "dh.rj"; rk: "dh.rk"; rl: "dh.rl"; rm: "dh.rm"; rn: "dh.rn"; ro: "dh.ro"; rp: "dh.rp"; rq: "dh.rq"; rr: "dh.rr"; rs: "dh.rs"; rt: "dh.rt"; ru: "dh.ru"; rv: "dh.rv"; rw: "dh.rw"; rx: "dh.rx"; ry: "dh.ry"; rz: "dh.rz"; sa: "dh.sa"; sb: "dh.sb"; sc: "dh.sc"; sd: "dh.sd"; se: "dh.se"; sf: "dh.sf"; sg: "dh.sg"; sh: "dh.sh"; si: "dh.si"; sj: "dh.sj"; sk: "dh.sk"; sl: "dh.sl"; sm: "dh.sm"; sn: "dh.sn"; so: "dh.so"; sp: "dh.sp"; sq: "dh.sq"; sr: "dh.sr"; ss: "dh.ss"; st: "dh.st"; su: "dh.su"; sv: "dh.sv"; sw: "dh.sw"; sx: "dh.sx"; sy: "dh.sy"; sz: "dh.sz"; ta: "dh.ta"; tb: "dh.tb"; tc: "dh.tc"; td: "dh.td"; te: "dh.te"; tf: "dh.tf"; tg: "dh.tg"; th: "dh.th"; ti: "dh.ti"; tj: "dh.tj"; tk: "dh.tk"; tl: "dh.tl"; tm: "dh.tm"; tn: "dh.tn"; to: "dh.to"; tp: "dh.tp"; tq: "dh.tq"; tr: "dh.tr"; ts: "dh.ts"; tt: "dh.tt"; tu: "dh.tu"; tv: "dh.tv"; tw: "dh.tw"; tx: "dh.tx"; ty: "dh.ty"; tz: "dh.tz"; ua: "dh.ua"; ub: "dh.ub"; uc: "dh.uc"; ud: "dh.ud"; ue: "dh.ue"; uf: "dh.uf"; ug: "dh.ug"; uh: "dh.uh"; ui: "dh.ui"; uj: "dh.uj"; uk: "dh.uk"; ul: "dh.ul"; um: "dh.um"; un: "dh.un"; uo: "dh.uo"; up: "dh.up"; uq: "dh.uq"; ur: "dh.ur"; us: "dh.us"; ut: "dh.ut"; uu: "dh.uu"; uv: "dh.uv"; uw: "dh.uw"; ux: "dh.ux"; uy: "dh.uy"; uz: "dh.uz"; va: "dh.va"; vb: "dh.vb"; vc: "dh.vc"; vd: "dh.vd"; ve: "dh.ve"; vf: "dh.vf"; vg: "dh.vg"; vh: "dh.vh"; vi: "dh.vi"; vj: "dh.vj"; vk: "dh.vk"; vl: "dh.vl"; vm: "dh.vm"; vn: "dh.vn"; vo: "dh.vo"; vp: "dh.vp"; vq: "dh.vq"; vr: "dh.vr"; vs: "dh.vs"; vt: "dh.vt"; vu: "dh.vu"; vv: "dh.vv"; vw: "dh.vw"; vx: "dh.vx"; vy: "dh.vy"; vz: "dh.vz"; wa: "dh.wa"; wb: "dh.wb"; wc: "dh.wc"; wd: "dh.wd"; we: "dh.we"; wf: "dh.wf"; wg: "dh.wg"; wh: "dh.wh"; wi: "dh.wi"; wj: "dh.wj"; wk: "dh.wk"; wl: "dh.wl"; wm: "dh.wm"; wn: "dh.wn"; wo: "dh.wo"; wp: "dh.wp"; wq: "dh.wq"; wr: "dh.wr"; ws: "dh.ws"; wt: "dh.wt"; wu: "dh.wu"; wv: "dh.wv"; ww: "dh.ww"; wx: "dh.wx"; wy: "dh.wy"; wz: "dh.wz"; xa: "dh.xa"; xb: "dh.xb"; xc: "dh.xc"; xd: "dh.xd"; xe: "dh.xe"; xf: "dh.xf"; xg: "dh.xg"; xh: "dh.xh"; xi: "dh.xi"; xj: "dh.xj"; xk: "dh.xk"; xl: "dh.xl"; xm: "dh.xm"; xn: "dh.xn"; xo: "dh.xo"; xp: "dh.xp"; xq: "dh.xq"; xr: "dh.xr"; xs: "dh.xs"; xt: "dh.xt"; xu: "dh.xu"; xv: "dh.xv"; xw: "dh.xw"; xx: "dh.xx"; xy: "dh.xy"; xz: "dh.xz"; ya: "dh.ya"; yb: "dh.yb"; yc: "dh.yc"; yd: "dh.yd"; ye: "dh.ye"; yf: "dh.yf"; yg: "dh.yg"; yh: "dh.yh"; yi: "dh.yi"; yj: "dh.yj"; yk: "dh.yk"; yl: "dh.yl"; ym: "dh.ym"; yn: "dh.yn"; yo: "dh.yo"; yp: "dh.yp"; yq: "dh.yq"; yr: "dh.yr"; ys: "dh.ys"; yt: "dh.yt"; yu: "dh.yu"; yv: "dh.yv"; yw: "dh.yw"; yx: "dh.yx"; yy: "dh.yy"; yz: "dh.yz"; za: "dh.za"; zb: "dh.zb"; zc: "dh.zc"; zd: "dh.zd"; ze: "dh.ze"; zf: "dh.zf"; zg: "dh.zg"; zh: "dh.zh"; zi: "dh.zi"; zj: "dh.zj"; zk: "dh.zk"; zl: "dh.zl"; zm: "dh.zm"; zn: "dh.zn"; zo: "dh.zo"; zp: "dh.zp"; zq: "dh.zq"; zr: "dh.zr"; zs: "dh.zs"; zt: "dh.zt"; zu: "dh.zu"; zv: "dh.zv"; zw: "dh.zw"; zx: "dh.zx"; zy: "dh.zy"; zz: "dh.zz"; }; di: { aa: "di.aa"; ab: "di.ab"; ac: "di.ac"; ad: "di.ad"; ae: "di.ae"; af: "di.af"; ag: "di.ag"; ah: "di.ah"; ai: "di.ai"; aj: "di.aj"; ak: "di.ak"; al: "di.al"; am: "di.am"; an: "di.an"; ao: "di.ao"; ap: "di.ap"; aq: "di.aq"; ar: "di.ar"; as: "di.as"; at: "di.at"; au: "di.au"; av: "di.av"; aw: "di.aw"; ax: "di.ax"; ay: "di.ay"; az: "di.az"; ba: "di.ba"; bb: "di.bb"; bc: "di.bc"; bd: "di.bd"; be: "di.be"; bf: "di.bf"; bg: "di.bg"; bh: "di.bh"; bi: "di.bi"; bj: "di.bj"; bk: "di.bk"; bl: "di.bl"; bm: "di.bm"; bn: "di.bn"; bo: "di.bo"; bp: "di.bp"; bq: "di.bq"; br: "di.br"; bs: "di.bs"; bt: "di.bt"; bu: "di.bu"; bv: "di.bv"; bw: "di.bw"; bx: "di.bx"; by: "di.by"; bz: "di.bz"; ca: "di.ca"; cb: "di.cb"; cc: "di.cc"; cd: "di.cd"; ce: "di.ce"; cf: "di.cf"; cg: "di.cg"; ch: "di.ch"; ci: "di.ci"; cj: "di.cj"; ck: "di.ck"; cl: "di.cl"; cm: "di.cm"; cn: "di.cn"; co: "di.co"; cp: "di.cp"; cq: "di.cq"; cr: "di.cr"; cs: "di.cs"; ct: "di.ct"; cu: "di.cu"; cv: "di.cv"; cw: "di.cw"; cx: "di.cx"; cy: "di.cy"; cz: "di.cz"; da: "di.da"; db: "di.db"; dc: "di.dc"; dd: "di.dd"; de: "di.de"; df: "di.df"; dg: "di.dg"; dh: "di.dh"; di: "di.di"; dj: "di.dj"; dk: "di.dk"; dl: "di.dl"; dm: "di.dm"; dn: "di.dn"; do: "di.do"; dp: "di.dp"; dq: "di.dq"; dr: "di.dr"; ds: "di.ds"; dt: "di.dt"; du: "di.du"; dv: "di.dv"; dw: "di.dw"; dx: "di.dx"; dy: "di.dy"; dz: "di.dz"; ea: "di.ea"; eb: "di.eb"; ec: "di.ec"; ed: "di.ed"; ee: "di.ee"; ef: "di.ef"; eg: "di.eg"; eh: "di.eh"; ei: "di.ei"; ej: "di.ej"; ek: "di.ek"; el: "di.el"; em: "di.em"; en: "di.en"; eo: "di.eo"; ep: "di.ep"; eq: "di.eq"; er: "di.er"; es: "di.es"; et: "di.et"; eu: "di.eu"; ev: "di.ev"; ew: "di.ew"; ex: "di.ex"; ey: "di.ey"; ez: "di.ez"; fa: "di.fa"; fb: "di.fb"; fc: "di.fc"; fd: "di.fd"; fe: "di.fe"; ff: "di.ff"; fg: "di.fg"; fh: "di.fh"; fi: "di.fi"; fj: "di.fj"; fk: "di.fk"; fl: "di.fl"; fm: "di.fm"; fn: "di.fn"; fo: "di.fo"; fp: "di.fp"; fq: "di.fq"; fr: "di.fr"; fs: "di.fs"; ft: "di.ft"; fu: "di.fu"; fv: "di.fv"; fw: "di.fw"; fx: "di.fx"; fy: "di.fy"; fz: "di.fz"; ga: "di.ga"; gb: "di.gb"; gc: "di.gc"; gd: "di.gd"; ge: "di.ge"; gf: "di.gf"; gg: "di.gg"; gh: "di.gh"; gi: "di.gi"; gj: "di.gj"; gk: "di.gk"; gl: "di.gl"; gm: "di.gm"; gn: "di.gn"; go: "di.go"; gp: "di.gp"; gq: "di.gq"; gr: "di.gr"; gs: "di.gs"; gt: "di.gt"; gu: "di.gu"; gv: "di.gv"; gw: "di.gw"; gx: "di.gx"; gy: "di.gy"; gz: "di.gz"; ha: "di.ha"; hb: "di.hb"; hc: "di.hc"; hd: "di.hd"; he: "di.he"; hf: "di.hf"; hg: "di.hg"; hh: "di.hh"; hi: "di.hi"; hj: "di.hj"; hk: "di.hk"; hl: "di.hl"; hm: "di.hm"; hn: "di.hn"; ho: "di.ho"; hp: "di.hp"; hq: "di.hq"; hr: "di.hr"; hs: "di.hs"; ht: "di.ht"; hu: "di.hu"; hv: "di.hv"; hw: "di.hw"; hx: "di.hx"; hy: "di.hy"; hz: "di.hz"; ia: "di.ia"; ib: "di.ib"; ic: "di.ic"; id: "di.id"; ie: "di.ie"; if: "di.if"; ig: "di.ig"; ih: "di.ih"; ii: "di.ii"; ij: "di.ij"; ik: "di.ik"; il: "di.il"; im: "di.im"; in: "di.in"; io: "di.io"; ip: "di.ip"; iq: "di.iq"; ir: "di.ir"; is: "di.is"; it: "di.it"; iu: "di.iu"; iv: "di.iv"; iw: "di.iw"; ix: "di.ix"; iy: "di.iy"; iz: "di.iz"; ja: "di.ja"; jb: "di.jb"; jc: "di.jc"; jd: "di.jd"; je: "di.je"; jf: "di.jf"; jg: "di.jg"; jh: "di.jh"; ji: "di.ji"; jj: "di.jj"; jk: "di.jk"; jl: "di.jl"; jm: "di.jm"; jn: "di.jn"; jo: "di.jo"; jp: "di.jp"; jq: "di.jq"; jr: "di.jr"; js: "di.js"; jt: "di.jt"; ju: "di.ju"; jv: "di.jv"; jw: "di.jw"; jx: "di.jx"; jy: "di.jy"; jz: "di.jz"; ka: "di.ka"; kb: "di.kb"; kc: "di.kc"; kd: "di.kd"; ke: "di.ke"; kf: "di.kf"; kg: "di.kg"; kh: "di.kh"; ki: "di.ki"; kj: "di.kj"; kk: "di.kk"; kl: "di.kl"; km: "di.km"; kn: "di.kn"; ko: "di.ko"; kp: "di.kp"; kq: "di.kq"; kr: "di.kr"; ks: "di.ks"; kt: "di.kt"; ku: "di.ku"; kv: "di.kv"; kw: "di.kw"; kx: "di.kx"; ky: "di.ky"; kz: "di.kz"; la: "di.la"; lb: "di.lb"; lc: "di.lc"; ld: "di.ld"; le: "di.le"; lf: "di.lf"; lg: "di.lg"; lh: "di.lh"; li: "di.li"; lj: "di.lj"; lk: "di.lk"; ll: "di.ll"; lm: "di.lm"; ln: "di.ln"; lo: "di.lo"; lp: "di.lp"; lq: "di.lq"; lr: "di.lr"; ls: "di.ls"; lt: "di.lt"; lu: "di.lu"; lv: "di.lv"; lw: "di.lw"; lx: "di.lx"; ly: "di.ly"; lz: "di.lz"; ma: "di.ma"; mb: "di.mb"; mc: "di.mc"; md: "di.md"; me: "di.me"; mf: "di.mf"; mg: "di.mg"; mh: "di.mh"; mi: "di.mi"; mj: "di.mj"; mk: "di.mk"; ml: "di.ml"; mm: "di.mm"; mn: "di.mn"; mo: "di.mo"; mp: "di.mp"; mq: "di.mq"; mr: "di.mr"; ms: "di.ms"; mt: "di.mt"; mu: "di.mu"; mv: "di.mv"; mw: "di.mw"; mx: "di.mx"; my: "di.my"; mz: "di.mz"; na: "di.na"; nb: "di.nb"; nc: "di.nc"; nd: "di.nd"; ne: "di.ne"; nf: "di.nf"; ng: "di.ng"; nh: "di.nh"; ni: "di.ni"; nj: "di.nj"; nk: "di.nk"; nl: "di.nl"; nm: "di.nm"; nn: "di.nn"; no: "di.no"; np: "di.np"; nq: "di.nq"; nr: "di.nr"; ns: "di.ns"; nt: "di.nt"; nu: "di.nu"; nv: "di.nv"; nw: "di.nw"; nx: "di.nx"; ny: "di.ny"; nz: "di.nz"; oa: "di.oa"; ob: "di.ob"; oc: "di.oc"; od: "di.od"; oe: "di.oe"; of: "di.of"; og: "di.og"; oh: "di.oh"; oi: "di.oi"; oj: "di.oj"; ok: "di.ok"; ol: "di.ol"; om: "di.om"; on: "di.on"; oo: "di.oo"; op: "di.op"; oq: "di.oq"; or: "di.or"; os: "di.os"; ot: "di.ot"; ou: "di.ou"; ov: "di.ov"; ow: "di.ow"; ox: "di.ox"; oy: "di.oy"; oz: "di.oz"; pa: "di.pa"; pb: "di.pb"; pc: "di.pc"; pd: "di.pd"; pe: "di.pe"; pf: "di.pf"; pg: "di.pg"; ph: "di.ph"; pi: "di.pi"; pj: "di.pj"; pk: "di.pk"; pl: "di.pl"; pm: "di.pm"; pn: "di.pn"; po: "di.po"; pp: "di.pp"; pq: "di.pq"; pr: "di.pr"; ps: "di.ps"; pt: "di.pt"; pu: "di.pu"; pv: "di.pv"; pw: "di.pw"; px: "di.px"; py: "di.py"; pz: "di.pz"; qa: "di.qa"; qb: "di.qb"; qc: "di.qc"; qd: "di.qd"; qe: "di.qe"; qf: "di.qf"; qg: "di.qg"; qh: "di.qh"; qi: "di.qi"; qj: "di.qj"; qk: "di.qk"; ql: "di.ql"; qm: "di.qm"; qn: "di.qn"; qo: "di.qo"; qp: "di.qp"; qq: "di.qq"; qr: "di.qr"; qs: "di.qs"; qt: "di.qt"; qu: "di.qu"; qv: "di.qv"; qw: "di.qw"; qx: "di.qx"; qy: "di.qy"; qz: "di.qz"; ra: "di.ra"; rb: "di.rb"; rc: "di.rc"; rd: "di.rd"; re: "di.re"; rf: "di.rf"; rg: "di.rg"; rh: "di.rh"; ri: "di.ri"; rj: "di.rj"; rk: "di.rk"; rl: "di.rl"; rm: "di.rm"; rn: "di.rn"; ro: "di.ro"; rp: "di.rp"; rq: "di.rq"; rr: "di.rr"; rs: "di.rs"; rt: "di.rt"; ru: "di.ru"; rv: "di.rv"; rw: "di.rw"; rx: "di.rx"; ry: "di.ry"; rz: "di.rz"; sa: "di.sa"; sb: "di.sb"; sc: "di.sc"; sd: "di.sd"; se: "di.se"; sf: "di.sf"; sg: "di.sg"; sh: "di.sh"; si: "di.si"; sj: "di.sj"; sk: "di.sk"; sl: "di.sl"; sm: "di.sm"; sn: "di.sn"; so: "di.so"; sp: "di.sp"; sq: "di.sq"; sr: "di.sr"; ss: "di.ss"; st: "di.st"; su: "di.su"; sv: "di.sv"; sw: "di.sw"; sx: "di.sx"; sy: "di.sy"; sz: "di.sz"; ta: "di.ta"; tb: "di.tb"; tc: "di.tc"; td: "di.td"; te: "di.te"; tf: "di.tf"; tg: "di.tg"; th: "di.th"; ti: "di.ti"; tj: "di.tj"; tk: "di.tk"; tl: "di.tl"; tm: "di.tm"; tn: "di.tn"; to: "di.to"; tp: "di.tp"; tq: "di.tq"; tr: "di.tr"; ts: "di.ts"; tt: "di.tt"; tu: "di.tu"; tv: "di.tv"; tw: "di.tw"; tx: "di.tx"; ty: "di.ty"; tz: "di.tz"; ua: "di.ua"; ub: "di.ub"; uc: "di.uc"; ud: "di.ud"; ue: "di.ue"; uf: "di.uf"; ug: "di.ug"; uh: "di.uh"; ui: "di.ui"; uj: "di.uj"; uk: "di.uk"; ul: "di.ul"; um: "di.um"; un: "di.un"; uo: "di.uo"; up: "di.up"; uq: "di.uq"; ur: "di.ur"; us: "di.us"; ut: "di.ut"; uu: "di.uu"; uv: "di.uv"; uw: "di.uw"; ux: "di.ux"; uy: "di.uy"; uz: "di.uz"; va: "di.va"; vb: "di.vb"; vc: "di.vc"; vd: "di.vd"; ve: "di.ve"; vf: "di.vf"; vg: "di.vg"; vh: "di.vh"; vi: "di.vi"; vj: "di.vj"; vk: "di.vk"; vl: "di.vl"; vm: "di.vm"; vn: "di.vn"; vo: "di.vo"; vp: "di.vp"; vq: "di.vq"; vr: "di.vr"; vs: "di.vs"; vt: "di.vt"; vu: "di.vu"; vv: "di.vv"; vw: "di.vw"; vx: "di.vx"; vy: "di.vy"; vz: "di.vz"; wa: "di.wa"; wb: "di.wb"; wc: "di.wc"; wd: "di.wd"; we: "di.we"; wf: "di.wf"; wg: "di.wg"; wh: "di.wh"; wi: "di.wi"; wj: "di.wj"; wk: "di.wk"; wl: "di.wl"; wm: "di.wm"; wn: "di.wn"; wo: "di.wo"; wp: "di.wp"; wq: "di.wq"; wr: "di.wr"; ws: "di.ws"; wt: "di.wt"; wu: "di.wu"; wv: "di.wv"; ww: "di.ww"; wx: "di.wx"; wy: "di.wy"; wz: "di.wz"; xa: "di.xa"; xb: "di.xb"; xc: "di.xc"; xd: "di.xd"; xe: "di.xe"; xf: "di.xf"; xg: "di.xg"; xh: "di.xh"; xi: "di.xi"; xj: "di.xj"; xk: "di.xk"; xl: "di.xl"; xm: "di.xm"; xn: "di.xn"; xo: "di.xo"; xp: "di.xp"; xq: "di.xq"; xr: "di.xr"; xs: "di.xs"; xt: "di.xt"; xu: "di.xu"; xv: "di.xv"; xw: "di.xw"; xx: "di.xx"; xy: "di.xy"; xz: "di.xz"; ya: "di.ya"; yb: "di.yb"; yc: "di.yc"; yd: "di.yd"; ye: "di.ye"; yf: "di.yf"; yg: "di.yg"; yh: "di.yh"; yi: "di.yi"; yj: "di.yj"; yk: "di.yk"; yl: "di.yl"; ym: "di.ym"; yn: "di.yn"; yo: "di.yo"; yp: "di.yp"; yq: "di.yq"; yr: "di.yr"; ys: "di.ys"; yt: "di.yt"; yu: "di.yu"; yv: "di.yv"; yw: "di.yw"; yx: "di.yx"; yy: "di.yy"; yz: "di.yz"; za: "di.za"; zb: "di.zb"; zc: "di.zc"; zd: "di.zd"; ze: "di.ze"; zf: "di.zf"; zg: "di.zg"; zh: "di.zh"; zi: "di.zi"; zj: "di.zj"; zk: "di.zk"; zl: "di.zl"; zm: "di.zm"; zn: "di.zn"; zo: "di.zo"; zp: "di.zp"; zq: "di.zq"; zr: "di.zr"; zs: "di.zs"; zt: "di.zt"; zu: "di.zu"; zv: "di.zv"; zw: "di.zw"; zx: "di.zx"; zy: "di.zy"; zz: "di.zz"; }; dj: { aa: "dj.aa"; ab: "dj.ab"; ac: "dj.ac"; ad: "dj.ad"; ae: "dj.ae"; af: "dj.af"; ag: "dj.ag"; ah: "dj.ah"; ai: "dj.ai"; aj: "dj.aj"; ak: "dj.ak"; al: "dj.al"; am: "dj.am"; an: "dj.an"; ao: "dj.ao"; ap: "dj.ap"; aq: "dj.aq"; ar: "dj.ar"; as: "dj.as"; at: "dj.at"; au: "dj.au"; av: "dj.av"; aw: "dj.aw"; ax: "dj.ax"; ay: "dj.ay"; az: "dj.az"; ba: "dj.ba"; bb: "dj.bb"; bc: "dj.bc"; bd: "dj.bd"; be: "dj.be"; bf: "dj.bf"; bg: "dj.bg"; bh: "dj.bh"; bi: "dj.bi"; bj: "dj.bj"; bk: "dj.bk"; bl: "dj.bl"; bm: "dj.bm"; bn: "dj.bn"; bo: "dj.bo"; bp: "dj.bp"; bq: "dj.bq"; br: "dj.br"; bs: "dj.bs"; bt: "dj.bt"; bu: "dj.bu"; bv: "dj.bv"; bw: "dj.bw"; bx: "dj.bx"; by: "dj.by"; bz: "dj.bz"; ca: "dj.ca"; cb: "dj.cb"; cc: "dj.cc"; cd: "dj.cd"; ce: "dj.ce"; cf: "dj.cf"; cg: "dj.cg"; ch: "dj.ch"; ci: "dj.ci"; cj: "dj.cj"; ck: "dj.ck"; cl: "dj.cl"; cm: "dj.cm"; cn: "dj.cn"; co: "dj.co"; cp: "dj.cp"; cq: "dj.cq"; cr: "dj.cr"; cs: "dj.cs"; ct: "dj.ct"; cu: "dj.cu"; cv: "dj.cv"; cw: "dj.cw"; cx: "dj.cx"; cy: "dj.cy"; cz: "dj.cz"; da: "dj.da"; db: "dj.db"; dc: "dj.dc"; dd: "dj.dd"; de: "dj.de"; df: "dj.df"; dg: "dj.dg"; dh: "dj.dh"; di: "dj.di"; dj: "dj.dj"; dk: "dj.dk"; dl: "dj.dl"; dm: "dj.dm"; dn: "dj.dn"; do: "dj.do"; dp: "dj.dp"; dq: "dj.dq"; dr: "dj.dr"; ds: "dj.ds"; dt: "dj.dt"; du: "dj.du"; dv: "dj.dv"; dw: "dj.dw"; dx: "dj.dx"; dy: "dj.dy"; dz: "dj.dz"; ea: "dj.ea"; eb: "dj.eb"; ec: "dj.ec"; ed: "dj.ed"; ee: "dj.ee"; ef: "dj.ef"; eg: "dj.eg"; eh: "dj.eh"; ei: "dj.ei"; ej: "dj.ej"; ek: "dj.ek"; el: "dj.el"; em: "dj.em"; en: "dj.en"; eo: "dj.eo"; ep: "dj.ep"; eq: "dj.eq"; er: "dj.er"; es: "dj.es"; et: "dj.et"; eu: "dj.eu"; ev: "dj.ev"; ew: "dj.ew"; ex: "dj.ex"; ey: "dj.ey"; ez: "dj.ez"; fa: "dj.fa"; fb: "dj.fb"; fc: "dj.fc"; fd: "dj.fd"; fe: "dj.fe"; ff: "dj.ff"; fg: "dj.fg"; fh: "dj.fh"; fi: "dj.fi"; fj: "dj.fj"; fk: "dj.fk"; fl: "dj.fl"; fm: "dj.fm"; fn: "dj.fn"; fo: "dj.fo"; fp: "dj.fp"; fq: "dj.fq"; fr: "dj.fr"; fs: "dj.fs"; ft: "dj.ft"; fu: "dj.fu"; fv: "dj.fv"; fw: "dj.fw"; fx: "dj.fx"; fy: "dj.fy"; fz: "dj.fz"; ga: "dj.ga"; gb: "dj.gb"; gc: "dj.gc"; gd: "dj.gd"; ge: "dj.ge"; gf: "dj.gf"; gg: "dj.gg"; gh: "dj.gh"; gi: "dj.gi"; gj: "dj.gj"; gk: "dj.gk"; gl: "dj.gl"; gm: "dj.gm"; gn: "dj.gn"; go: "dj.go"; gp: "dj.gp"; gq: "dj.gq"; gr: "dj.gr"; gs: "dj.gs"; gt: "dj.gt"; gu: "dj.gu"; gv: "dj.gv"; gw: "dj.gw"; gx: "dj.gx"; gy: "dj.gy"; gz: "dj.gz"; ha: "dj.ha"; hb: "dj.hb"; hc: "dj.hc"; hd: "dj.hd"; he: "dj.he"; hf: "dj.hf"; hg: "dj.hg"; hh: "dj.hh"; hi: "dj.hi"; hj: "dj.hj"; hk: "dj.hk"; hl: "dj.hl"; hm: "dj.hm"; hn: "dj.hn"; ho: "dj.ho"; hp: "dj.hp"; hq: "dj.hq"; hr: "dj.hr"; hs: "dj.hs"; ht: "dj.ht"; hu: "dj.hu"; hv: "dj.hv"; hw: "dj.hw"; hx: "dj.hx"; hy: "dj.hy"; hz: "dj.hz"; ia: "dj.ia"; ib: "dj.ib"; ic: "dj.ic"; id: "dj.id"; ie: "dj.ie"; if: "dj.if"; ig: "dj.ig"; ih: "dj.ih"; ii: "dj.ii"; ij: "dj.ij"; ik: "dj.ik"; il: "dj.il"; im: "dj.im"; in: "dj.in"; io: "dj.io"; ip: "dj.ip"; iq: "dj.iq"; ir: "dj.ir"; is: "dj.is"; it: "dj.it"; iu: "dj.iu"; iv: "dj.iv"; iw: "dj.iw"; ix: "dj.ix"; iy: "dj.iy"; iz: "dj.iz"; ja: "dj.ja"; jb: "dj.jb"; jc: "dj.jc"; jd: "dj.jd"; je: "dj.je"; jf: "dj.jf"; jg: "dj.jg"; jh: "dj.jh"; ji: "dj.ji"; jj: "dj.jj"; jk: "dj.jk"; jl: "dj.jl"; jm: "dj.jm"; jn: "dj.jn"; jo: "dj.jo"; jp: "dj.jp"; jq: "dj.jq"; jr: "dj.jr"; js: "dj.js"; jt: "dj.jt"; ju: "dj.ju"; jv: "dj.jv"; jw: "dj.jw"; jx: "dj.jx"; jy: "dj.jy"; jz: "dj.jz"; ka: "dj.ka"; kb: "dj.kb"; kc: "dj.kc"; kd: "dj.kd"; ke: "dj.ke"; kf: "dj.kf"; kg: "dj.kg"; kh: "dj.kh"; ki: "dj.ki"; kj: "dj.kj"; kk: "dj.kk"; kl: "dj.kl"; km: "dj.km"; kn: "dj.kn"; ko: "dj.ko"; kp: "dj.kp"; kq: "dj.kq"; kr: "dj.kr"; ks: "dj.ks"; kt: "dj.kt"; ku: "dj.ku"; kv: "dj.kv"; kw: "dj.kw"; kx: "dj.kx"; ky: "dj.ky"; kz: "dj.kz"; la: "dj.la"; lb: "dj.lb"; lc: "dj.lc"; ld: "dj.ld"; le: "dj.le"; lf: "dj.lf"; lg: "dj.lg"; lh: "dj.lh"; li: "dj.li"; lj: "dj.lj"; lk: "dj.lk"; ll: "dj.ll"; lm: "dj.lm"; ln: "dj.ln"; lo: "dj.lo"; lp: "dj.lp"; lq: "dj.lq"; lr: "dj.lr"; ls: "dj.ls"; lt: "dj.lt"; lu: "dj.lu"; lv: "dj.lv"; lw: "dj.lw"; lx: "dj.lx"; ly: "dj.ly"; lz: "dj.lz"; ma: "dj.ma"; mb: "dj.mb"; mc: "dj.mc"; md: "dj.md"; me: "dj.me"; mf: "dj.mf"; mg: "dj.mg"; mh: "dj.mh"; mi: "dj.mi"; mj: "dj.mj"; mk: "dj.mk"; ml: "dj.ml"; mm: "dj.mm"; mn: "dj.mn"; mo: "dj.mo"; mp: "dj.mp"; mq: "dj.mq"; mr: "dj.mr"; ms: "dj.ms"; mt: "dj.mt"; mu: "dj.mu"; mv: "dj.mv"; mw: "dj.mw"; mx: "dj.mx"; my: "dj.my"; mz: "dj.mz"; na: "dj.na"; nb: "dj.nb"; nc: "dj.nc"; nd: "dj.nd"; ne: "dj.ne"; nf: "dj.nf"; ng: "dj.ng"; nh: "dj.nh"; ni: "dj.ni"; nj: "dj.nj"; nk: "dj.nk"; nl: "dj.nl"; nm: "dj.nm"; nn: "dj.nn"; no: "dj.no"; np: "dj.np"; nq: "dj.nq"; nr: "dj.nr"; ns: "dj.ns"; nt: "dj.nt"; nu: "dj.nu"; nv: "dj.nv"; nw: "dj.nw"; nx: "dj.nx"; ny: "dj.ny"; nz: "dj.nz"; oa: "dj.oa"; ob: "dj.ob"; oc: "dj.oc"; od: "dj.od"; oe: "dj.oe"; of: "dj.of"; og: "dj.og"; oh: "dj.oh"; oi: "dj.oi"; oj: "dj.oj"; ok: "dj.ok"; ol: "dj.ol"; om: "dj.om"; on: "dj.on"; oo: "dj.oo"; op: "dj.op"; oq: "dj.oq"; or: "dj.or"; os: "dj.os"; ot: "dj.ot"; ou: "dj.ou"; ov: "dj.ov"; ow: "dj.ow"; ox: "dj.ox"; oy: "dj.oy"; oz: "dj.oz"; pa: "dj.pa"; pb: "dj.pb"; pc: "dj.pc"; pd: "dj.pd"; pe: "dj.pe"; pf: "dj.pf"; pg: "dj.pg"; ph: "dj.ph"; pi: "dj.pi"; pj: "dj.pj"; pk: "dj.pk"; pl: "dj.pl"; pm: "dj.pm"; pn: "dj.pn"; po: "dj.po"; pp: "dj.pp"; pq: "dj.pq"; pr: "dj.pr"; ps: "dj.ps"; pt: "dj.pt"; pu: "dj.pu"; pv: "dj.pv"; pw: "dj.pw"; px: "dj.px"; py: "dj.py"; pz: "dj.pz"; qa: "dj.qa"; qb: "dj.qb"; qc: "dj.qc"; qd: "dj.qd"; qe: "dj.qe"; qf: "dj.qf"; qg: "dj.qg"; qh: "dj.qh"; qi: "dj.qi"; qj: "dj.qj"; qk: "dj.qk"; ql: "dj.ql"; qm: "dj.qm"; qn: "dj.qn"; qo: "dj.qo"; qp: "dj.qp"; qq: "dj.qq"; qr: "dj.qr"; qs: "dj.qs"; qt: "dj.qt"; qu: "dj.qu"; qv: "dj.qv"; qw: "dj.qw"; qx: "dj.qx"; qy: "dj.qy"; qz: "dj.qz"; ra: "dj.ra"; rb: "dj.rb"; rc: "dj.rc"; rd: "dj.rd"; re: "dj.re"; rf: "dj.rf"; rg: "dj.rg"; rh: "dj.rh"; ri: "dj.ri"; rj: "dj.rj"; rk: "dj.rk"; rl: "dj.rl"; rm: "dj.rm"; rn: "dj.rn"; ro: "dj.ro"; rp: "dj.rp"; rq: "dj.rq"; rr: "dj.rr"; rs: "dj.rs"; rt: "dj.rt"; ru: "dj.ru"; rv: "dj.rv"; rw: "dj.rw"; rx: "dj.rx"; ry: "dj.ry"; rz: "dj.rz"; sa: "dj.sa"; sb: "dj.sb"; sc: "dj.sc"; sd: "dj.sd"; se: "dj.se"; sf: "dj.sf"; sg: "dj.sg"; sh: "dj.sh"; si: "dj.si"; sj: "dj.sj"; sk: "dj.sk"; sl: "dj.sl"; sm: "dj.sm"; sn: "dj.sn"; so: "dj.so"; sp: "dj.sp"; sq: "dj.sq"; sr: "dj.sr"; ss: "dj.ss"; st: "dj.st"; su: "dj.su"; sv: "dj.sv"; sw: "dj.sw"; sx: "dj.sx"; sy: "dj.sy"; sz: "dj.sz"; ta: "dj.ta"; tb: "dj.tb"; tc: "dj.tc"; td: "dj.td"; te: "dj.te"; tf: "dj.tf"; tg: "dj.tg"; th: "dj.th"; ti: "dj.ti"; tj: "dj.tj"; tk: "dj.tk"; tl: "dj.tl"; tm: "dj.tm"; tn: "dj.tn"; to: "dj.to"; tp: "dj.tp"; tq: "dj.tq"; tr: "dj.tr"; ts: "dj.ts"; tt: "dj.tt"; tu: "dj.tu"; tv: "dj.tv"; tw: "dj.tw"; tx: "dj.tx"; ty: "dj.ty"; tz: "dj.tz"; ua: "dj.ua"; ub: "dj.ub"; uc: "dj.uc"; ud: "dj.ud"; ue: "dj.ue"; uf: "dj.uf"; ug: "dj.ug"; uh: "dj.uh"; ui: "dj.ui"; uj: "dj.uj"; uk: "dj.uk"; ul: "dj.ul"; um: "dj.um"; un: "dj.un"; uo: "dj.uo"; up: "dj.up"; uq: "dj.uq"; ur: "dj.ur"; us: "dj.us"; ut: "dj.ut"; uu: "dj.uu"; uv: "dj.uv"; uw: "dj.uw"; ux: "dj.ux"; uy: "dj.uy"; uz: "dj.uz"; va: "dj.va"; vb: "dj.vb"; vc: "dj.vc"; vd: "dj.vd"; ve: "dj.ve"; vf: "dj.vf"; vg: "dj.vg"; vh: "dj.vh"; vi: "dj.vi"; vj: "dj.vj"; vk: "dj.vk"; vl: "dj.vl"; vm: "dj.vm"; vn: "dj.vn"; vo: "dj.vo"; vp: "dj.vp"; vq: "dj.vq"; vr: "dj.vr"; vs: "dj.vs"; vt: "dj.vt"; vu: "dj.vu"; vv: "dj.vv"; vw: "dj.vw"; vx: "dj.vx"; vy: "dj.vy"; vz: "dj.vz"; wa: "dj.wa"; wb: "dj.wb"; wc: "dj.wc"; wd: "dj.wd"; we: "dj.we"; wf: "dj.wf"; wg: "dj.wg"; wh: "dj.wh"; wi: "dj.wi"; wj: "dj.wj"; wk: "dj.wk"; wl: "dj.wl"; wm: "dj.wm"; wn: "dj.wn"; wo: "dj.wo"; wp: "dj.wp"; wq: "dj.wq"; wr: "dj.wr"; ws: "dj.ws"; wt: "dj.wt"; wu: "dj.wu"; wv: "dj.wv"; ww: "dj.ww"; wx: "dj.wx"; wy: "dj.wy"; wz: "dj.wz"; xa: "dj.xa"; xb: "dj.xb"; xc: "dj.xc"; xd: "dj.xd"; xe: "dj.xe"; xf: "dj.xf"; xg: "dj.xg"; xh: "dj.xh"; xi: "dj.xi"; xj: "dj.xj"; xk: "dj.xk"; xl: "dj.xl"; xm: "dj.xm"; xn: "dj.xn"; xo: "dj.xo"; xp: "dj.xp"; xq: "dj.xq"; xr: "dj.xr"; xs: "dj.xs"; xt: "dj.xt"; xu: "dj.xu"; xv: "dj.xv"; xw: "dj.xw"; xx: "dj.xx"; xy: "dj.xy"; xz: "dj.xz"; ya: "dj.ya"; yb: "dj.yb"; yc: "dj.yc"; yd: "dj.yd"; ye: "dj.ye"; yf: "dj.yf"; yg: "dj.yg"; yh: "dj.yh"; yi: "dj.yi"; yj: "dj.yj"; yk: "dj.yk"; yl: "dj.yl"; ym: "dj.ym"; yn: "dj.yn"; yo: "dj.yo"; yp: "dj.yp"; yq: "dj.yq"; yr: "dj.yr"; ys: "dj.ys"; yt: "dj.yt"; yu: "dj.yu"; yv: "dj.yv"; yw: "dj.yw"; yx: "dj.yx"; yy: "dj.yy"; yz: "dj.yz"; za: "dj.za"; zb: "dj.zb"; zc: "dj.zc"; zd: "dj.zd"; ze: "dj.ze"; zf: "dj.zf"; zg: "dj.zg"; zh: "dj.zh"; zi: "dj.zi"; zj: "dj.zj"; zk: "dj.zk"; zl: "dj.zl"; zm: "dj.zm"; zn: "dj.zn"; zo: "dj.zo"; zp: "dj.zp"; zq: "dj.zq"; zr: "dj.zr"; zs: "dj.zs"; zt: "dj.zt"; zu: "dj.zu"; zv: "dj.zv"; zw: "dj.zw"; zx: "dj.zx"; zy: "dj.zy"; zz: "dj.zz"; }; dk: { aa: "dk.aa"; ab: "dk.ab"; ac: "dk.ac"; ad: "dk.ad"; ae: "dk.ae"; af: "dk.af"; ag: "dk.ag"; ah: "dk.ah"; ai: "dk.ai"; aj: "dk.aj"; ak: "dk.ak"; al: "dk.al"; am: "dk.am"; an: "dk.an"; ao: "dk.ao"; ap: "dk.ap"; aq: "dk.aq"; ar: "dk.ar"; as: "dk.as"; at: "dk.at"; au: "dk.au"; av: "dk.av"; aw: "dk.aw"; ax: "dk.ax"; ay: "dk.ay"; az: "dk.az"; ba: "dk.ba"; bb: "dk.bb"; bc: "dk.bc"; bd: "dk.bd"; be: "dk.be"; bf: "dk.bf"; bg: "dk.bg"; bh: "dk.bh"; bi: "dk.bi"; bj: "dk.bj"; bk: "dk.bk"; bl: "dk.bl"; bm: "dk.bm"; bn: "dk.bn"; bo: "dk.bo"; bp: "dk.bp"; bq: "dk.bq"; br: "dk.br"; bs: "dk.bs"; bt: "dk.bt"; bu: "dk.bu"; bv: "dk.bv"; bw: "dk.bw"; bx: "dk.bx"; by: "dk.by"; bz: "dk.bz"; ca: "dk.ca"; cb: "dk.cb"; cc: "dk.cc"; cd: "dk.cd"; ce: "dk.ce"; cf: "dk.cf"; cg: "dk.cg"; ch: "dk.ch"; ci: "dk.ci"; cj: "dk.cj"; ck: "dk.ck"; cl: "dk.cl"; cm: "dk.cm"; cn: "dk.cn"; co: "dk.co"; cp: "dk.cp"; cq: "dk.cq"; cr: "dk.cr"; cs: "dk.cs"; ct: "dk.ct"; cu: "dk.cu"; cv: "dk.cv"; cw: "dk.cw"; cx: "dk.cx"; cy: "dk.cy"; cz: "dk.cz"; da: "dk.da"; db: "dk.db"; dc: "dk.dc"; dd: "dk.dd"; de: "dk.de"; df: "dk.df"; dg: "dk.dg"; dh: "dk.dh"; di: "dk.di"; dj: "dk.dj"; dk: "dk.dk"; dl: "dk.dl"; dm: "dk.dm"; dn: "dk.dn"; do: "dk.do"; dp: "dk.dp"; dq: "dk.dq"; dr: "dk.dr"; ds: "dk.ds"; dt: "dk.dt"; du: "dk.du"; dv: "dk.dv"; dw: "dk.dw"; dx: "dk.dx"; dy: "dk.dy"; dz: "dk.dz"; ea: "dk.ea"; eb: "dk.eb"; ec: "dk.ec"; ed: "dk.ed"; ee: "dk.ee"; ef: "dk.ef"; eg: "dk.eg"; eh: "dk.eh"; ei: "dk.ei"; ej: "dk.ej"; ek: "dk.ek"; el: "dk.el"; em: "dk.em"; en: "dk.en"; eo: "dk.eo"; ep: "dk.ep"; eq: "dk.eq"; er: "dk.er"; es: "dk.es"; et: "dk.et"; eu: "dk.eu"; ev: "dk.ev"; ew: "dk.ew"; ex: "dk.ex"; ey: "dk.ey"; ez: "dk.ez"; fa: "dk.fa"; fb: "dk.fb"; fc: "dk.fc"; fd: "dk.fd"; fe: "dk.fe"; ff: "dk.ff"; fg: "dk.fg"; fh: "dk.fh"; fi: "dk.fi"; fj: "dk.fj"; fk: "dk.fk"; fl: "dk.fl"; fm: "dk.fm"; fn: "dk.fn"; fo: "dk.fo"; fp: "dk.fp"; fq: "dk.fq"; fr: "dk.fr"; fs: "dk.fs"; ft: "dk.ft"; fu: "dk.fu"; fv: "dk.fv"; fw: "dk.fw"; fx: "dk.fx"; fy: "dk.fy"; fz: "dk.fz"; ga: "dk.ga"; gb: "dk.gb"; gc: "dk.gc"; gd: "dk.gd"; ge: "dk.ge"; gf: "dk.gf"; gg: "dk.gg"; gh: "dk.gh"; gi: "dk.gi"; gj: "dk.gj"; gk: "dk.gk"; gl: "dk.gl"; gm: "dk.gm"; gn: "dk.gn"; go: "dk.go"; gp: "dk.gp"; gq: "dk.gq"; gr: "dk.gr"; gs: "dk.gs"; gt: "dk.gt"; gu: "dk.gu"; gv: "dk.gv"; gw: "dk.gw"; gx: "dk.gx"; gy: "dk.gy"; gz: "dk.gz"; ha: "dk.ha"; hb: "dk.hb"; hc: "dk.hc"; hd: "dk.hd"; he: "dk.he"; hf: "dk.hf"; hg: "dk.hg"; hh: "dk.hh"; hi: "dk.hi"; hj: "dk.hj"; hk: "dk.hk"; hl: "dk.hl"; hm: "dk.hm"; hn: "dk.hn"; ho: "dk.ho"; hp: "dk.hp"; hq: "dk.hq"; hr: "dk.hr"; hs: "dk.hs"; ht: "dk.ht"; hu: "dk.hu"; hv: "dk.hv"; hw: "dk.hw"; hx: "dk.hx"; hy: "dk.hy"; hz: "dk.hz"; ia: "dk.ia"; ib: "dk.ib"; ic: "dk.ic"; id: "dk.id"; ie: "dk.ie"; if: "dk.if"; ig: "dk.ig"; ih: "dk.ih"; ii: "dk.ii"; ij: "dk.ij"; ik: "dk.ik"; il: "dk.il"; im: "dk.im"; in: "dk.in"; io: "dk.io"; ip: "dk.ip"; iq: "dk.iq"; ir: "dk.ir"; is: "dk.is"; it: "dk.it"; iu: "dk.iu"; iv: "dk.iv"; iw: "dk.iw"; ix: "dk.ix"; iy: "dk.iy"; iz: "dk.iz"; ja: "dk.ja"; jb: "dk.jb"; jc: "dk.jc"; jd: "dk.jd"; je: "dk.je"; jf: "dk.jf"; jg: "dk.jg"; jh: "dk.jh"; ji: "dk.ji"; jj: "dk.jj"; jk: "dk.jk"; jl: "dk.jl"; jm: "dk.jm"; jn: "dk.jn"; jo: "dk.jo"; jp: "dk.jp"; jq: "dk.jq"; jr: "dk.jr"; js: "dk.js"; jt: "dk.jt"; ju: "dk.ju"; jv: "dk.jv"; jw: "dk.jw"; jx: "dk.jx"; jy: "dk.jy"; jz: "dk.jz"; ka: "dk.ka"; kb: "dk.kb"; kc: "dk.kc"; kd: "dk.kd"; ke: "dk.ke"; kf: "dk.kf"; kg: "dk.kg"; kh: "dk.kh"; ki: "dk.ki"; kj: "dk.kj"; kk: "dk.kk"; kl: "dk.kl"; km: "dk.km"; kn: "dk.kn"; ko: "dk.ko"; kp: "dk.kp"; kq: "dk.kq"; kr: "dk.kr"; ks: "dk.ks"; kt: "dk.kt"; ku: "dk.ku"; kv: "dk.kv"; kw: "dk.kw"; kx: "dk.kx"; ky: "dk.ky"; kz: "dk.kz"; la: "dk.la"; lb: "dk.lb"; lc: "dk.lc"; ld: "dk.ld"; le: "dk.le"; lf: "dk.lf"; lg: "dk.lg"; lh: "dk.lh"; li: "dk.li"; lj: "dk.lj"; lk: "dk.lk"; ll: "dk.ll"; lm: "dk.lm"; ln: "dk.ln"; lo: "dk.lo"; lp: "dk.lp"; lq: "dk.lq"; lr: "dk.lr"; ls: "dk.ls"; lt: "dk.lt"; lu: "dk.lu"; lv: "dk.lv"; lw: "dk.lw"; lx: "dk.lx"; ly: "dk.ly"; lz: "dk.lz"; ma: "dk.ma"; mb: "dk.mb"; mc: "dk.mc"; md: "dk.md"; me: "dk.me"; mf: "dk.mf"; mg: "dk.mg"; mh: "dk.mh"; mi: "dk.mi"; mj: "dk.mj"; mk: "dk.mk"; ml: "dk.ml"; mm: "dk.mm"; mn: "dk.mn"; mo: "dk.mo"; mp: "dk.mp"; mq: "dk.mq"; mr: "dk.mr"; ms: "dk.ms"; mt: "dk.mt"; mu: "dk.mu"; mv: "dk.mv"; mw: "dk.mw"; mx: "dk.mx"; my: "dk.my"; mz: "dk.mz"; na: "dk.na"; nb: "dk.nb"; nc: "dk.nc"; nd: "dk.nd"; ne: "dk.ne"; nf: "dk.nf"; ng: "dk.ng"; nh: "dk.nh"; ni: "dk.ni"; nj: "dk.nj"; nk: "dk.nk"; nl: "dk.nl"; nm: "dk.nm"; nn: "dk.nn"; no: "dk.no"; np: "dk.np"; nq: "dk.nq"; nr: "dk.nr"; ns: "dk.ns"; nt: "dk.nt"; nu: "dk.nu"; nv: "dk.nv"; nw: "dk.nw"; nx: "dk.nx"; ny: "dk.ny"; nz: "dk.nz"; oa: "dk.oa"; ob: "dk.ob"; oc: "dk.oc"; od: "dk.od"; oe: "dk.oe"; of: "dk.of"; og: "dk.og"; oh: "dk.oh"; oi: "dk.oi"; oj: "dk.oj"; ok: "dk.ok"; ol: "dk.ol"; om: "dk.om"; on: "dk.on"; oo: "dk.oo"; op: "dk.op"; oq: "dk.oq"; or: "dk.or"; os: "dk.os"; ot: "dk.ot"; ou: "dk.ou"; ov: "dk.ov"; ow: "dk.ow"; ox: "dk.ox"; oy: "dk.oy"; oz: "dk.oz"; pa: "dk.pa"; pb: "dk.pb"; pc: "dk.pc"; pd: "dk.pd"; pe: "dk.pe"; pf: "dk.pf"; pg: "dk.pg"; ph: "dk.ph"; pi: "dk.pi"; pj: "dk.pj"; pk: "dk.pk"; pl: "dk.pl"; pm: "dk.pm"; pn: "dk.pn"; po: "dk.po"; pp: "dk.pp"; pq: "dk.pq"; pr: "dk.pr"; ps: "dk.ps"; pt: "dk.pt"; pu: "dk.pu"; pv: "dk.pv"; pw: "dk.pw"; px: "dk.px"; py: "dk.py"; pz: "dk.pz"; qa: "dk.qa"; qb: "dk.qb"; qc: "dk.qc"; qd: "dk.qd"; qe: "dk.qe"; qf: "dk.qf"; qg: "dk.qg"; qh: "dk.qh"; qi: "dk.qi"; qj: "dk.qj"; qk: "dk.qk"; ql: "dk.ql"; qm: "dk.qm"; qn: "dk.qn"; qo: "dk.qo"; qp: "dk.qp"; qq: "dk.qq"; qr: "dk.qr"; qs: "dk.qs"; qt: "dk.qt"; qu: "dk.qu"; qv: "dk.qv"; qw: "dk.qw"; qx: "dk.qx"; qy: "dk.qy"; qz: "dk.qz"; ra: "dk.ra"; rb: "dk.rb"; rc: "dk.rc"; rd: "dk.rd"; re: "dk.re"; rf: "dk.rf"; rg: "dk.rg"; rh: "dk.rh"; ri: "dk.ri"; rj: "dk.rj"; rk: "dk.rk"; rl: "dk.rl"; rm: "dk.rm"; rn: "dk.rn"; ro: "dk.ro"; rp: "dk.rp"; rq: "dk.rq"; rr: "dk.rr"; rs: "dk.rs"; rt: "dk.rt"; ru: "dk.ru"; rv: "dk.rv"; rw: "dk.rw"; rx: "dk.rx"; ry: "dk.ry"; rz: "dk.rz"; sa: "dk.sa"; sb: "dk.sb"; sc: "dk.sc"; sd: "dk.sd"; se: "dk.se"; sf: "dk.sf"; sg: "dk.sg"; sh: "dk.sh"; si: "dk.si"; sj: "dk.sj"; sk: "dk.sk"; sl: "dk.sl"; sm: "dk.sm"; sn: "dk.sn"; so: "dk.so"; sp: "dk.sp"; sq: "dk.sq"; sr: "dk.sr"; ss: "dk.ss"; st: "dk.st"; su: "dk.su"; sv: "dk.sv"; sw: "dk.sw"; sx: "dk.sx"; sy: "dk.sy"; sz: "dk.sz"; ta: "dk.ta"; tb: "dk.tb"; tc: "dk.tc"; td: "dk.td"; te: "dk.te"; tf: "dk.tf"; tg: "dk.tg"; th: "dk.th"; ti: "dk.ti"; tj: "dk.tj"; tk: "dk.tk"; tl: "dk.tl"; tm: "dk.tm"; tn: "dk.tn"; to: "dk.to"; tp: "dk.tp"; tq: "dk.tq"; tr: "dk.tr"; ts: "dk.ts"; tt: "dk.tt"; tu: "dk.tu"; tv: "dk.tv"; tw: "dk.tw"; tx: "dk.tx"; ty: "dk.ty"; tz: "dk.tz"; ua: "dk.ua"; ub: "dk.ub"; uc: "dk.uc"; ud: "dk.ud"; ue: "dk.ue"; uf: "dk.uf"; ug: "dk.ug"; uh: "dk.uh"; ui: "dk.ui"; uj: "dk.uj"; uk: "dk.uk"; ul: "dk.ul"; um: "dk.um"; un: "dk.un"; uo: "dk.uo"; up: "dk.up"; uq: "dk.uq"; ur: "dk.ur"; us: "dk.us"; ut: "dk.ut"; uu: "dk.uu"; uv: "dk.uv"; uw: "dk.uw"; ux: "dk.ux"; uy: "dk.uy"; uz: "dk.uz"; va: "dk.va"; vb: "dk.vb"; vc: "dk.vc"; vd: "dk.vd"; ve: "dk.ve"; vf: "dk.vf"; vg: "dk.vg"; vh: "dk.vh"; vi: "dk.vi"; vj: "dk.vj"; vk: "dk.vk"; vl: "dk.vl"; vm: "dk.vm"; vn: "dk.vn"; vo: "dk.vo"; vp: "dk.vp"; vq: "dk.vq"; vr: "dk.vr"; vs: "dk.vs"; vt: "dk.vt"; vu: "dk.vu"; vv: "dk.vv"; vw: "dk.vw"; vx: "dk.vx"; vy: "dk.vy"; vz: "dk.vz"; wa: "dk.wa"; wb: "dk.wb"; wc: "dk.wc"; wd: "dk.wd"; we: "dk.we"; wf: "dk.wf"; wg: "dk.wg"; wh: "dk.wh"; wi: "dk.wi"; wj: "dk.wj"; wk: "dk.wk"; wl: "dk.wl"; wm: "dk.wm"; wn: "dk.wn"; wo: "dk.wo"; wp: "dk.wp"; wq: "dk.wq"; wr: "dk.wr"; ws: "dk.ws"; wt: "dk.wt"; wu: "dk.wu"; wv: "dk.wv"; ww: "dk.ww"; wx: "dk.wx"; wy: "dk.wy"; wz: "dk.wz"; xa: "dk.xa"; xb: "dk.xb"; xc: "dk.xc"; xd: "dk.xd"; xe: "dk.xe"; xf: "dk.xf"; xg: "dk.xg"; xh: "dk.xh"; xi: "dk.xi"; xj: "dk.xj"; xk: "dk.xk"; xl: "dk.xl"; xm: "dk.xm"; xn: "dk.xn"; xo: "dk.xo"; xp: "dk.xp"; xq: "dk.xq"; xr: "dk.xr"; xs: "dk.xs"; xt: "dk.xt"; xu: "dk.xu"; xv: "dk.xv"; xw: "dk.xw"; xx: "dk.xx"; xy: "dk.xy"; xz: "dk.xz"; ya: "dk.ya"; yb: "dk.yb"; yc: "dk.yc"; yd: "dk.yd"; ye: "dk.ye"; yf: "dk.yf"; yg: "dk.yg"; yh: "dk.yh"; yi: "dk.yi"; yj: "dk.yj"; yk: "dk.yk"; yl: "dk.yl"; ym: "dk.ym"; yn: "dk.yn"; yo: "dk.yo"; yp: "dk.yp"; yq: "dk.yq"; yr: "dk.yr"; ys: "dk.ys"; yt: "dk.yt"; yu: "dk.yu"; yv: "dk.yv"; yw: "dk.yw"; yx: "dk.yx"; yy: "dk.yy"; yz: "dk.yz"; za: "dk.za"; zb: "dk.zb"; zc: "dk.zc"; zd: "dk.zd"; ze: "dk.ze"; zf: "dk.zf"; zg: "dk.zg"; zh: "dk.zh"; zi: "dk.zi"; zj: "dk.zj"; zk: "dk.zk"; zl: "dk.zl"; zm: "dk.zm"; zn: "dk.zn"; zo: "dk.zo"; zp: "dk.zp"; zq: "dk.zq"; zr: "dk.zr"; zs: "dk.zs"; zt: "dk.zt"; zu: "dk.zu"; zv: "dk.zv"; zw: "dk.zw"; zx: "dk.zx"; zy: "dk.zy"; zz: "dk.zz"; }; dl: { aa: "dl.aa"; ab: "dl.ab"; ac: "dl.ac"; ad: "dl.ad"; ae: "dl.ae"; af: "dl.af"; ag: "dl.ag"; ah: "dl.ah"; ai: "dl.ai"; aj: "dl.aj"; ak: "dl.ak"; al: "dl.al"; am: "dl.am"; an: "dl.an"; ao: "dl.ao"; ap: "dl.ap"; aq: "dl.aq"; ar: "dl.ar"; as: "dl.as"; at: "dl.at"; au: "dl.au"; av: "dl.av"; aw: "dl.aw"; ax: "dl.ax"; ay: "dl.ay"; az: "dl.az"; ba: "dl.ba"; bb: "dl.bb"; bc: "dl.bc"; bd: "dl.bd"; be: "dl.be"; bf: "dl.bf"; bg: "dl.bg"; bh: "dl.bh"; bi: "dl.bi"; bj: "dl.bj"; bk: "dl.bk"; bl: "dl.bl"; bm: "dl.bm"; bn: "dl.bn"; bo: "dl.bo"; bp: "dl.bp"; bq: "dl.bq"; br: "dl.br"; bs: "dl.bs"; bt: "dl.bt"; bu: "dl.bu"; bv: "dl.bv"; bw: "dl.bw"; bx: "dl.bx"; by: "dl.by"; bz: "dl.bz"; ca: "dl.ca"; cb: "dl.cb"; cc: "dl.cc"; cd: "dl.cd"; ce: "dl.ce"; cf: "dl.cf"; cg: "dl.cg"; ch: "dl.ch"; ci: "dl.ci"; cj: "dl.cj"; ck: "dl.ck"; cl: "dl.cl"; cm: "dl.cm"; cn: "dl.cn"; co: "dl.co"; cp: "dl.cp"; cq: "dl.cq"; cr: "dl.cr"; cs: "dl.cs"; ct: "dl.ct"; cu: "dl.cu"; cv: "dl.cv"; cw: "dl.cw"; cx: "dl.cx"; cy: "dl.cy"; cz: "dl.cz"; da: "dl.da"; db: "dl.db"; dc: "dl.dc"; dd: "dl.dd"; de: "dl.de"; df: "dl.df"; dg: "dl.dg"; dh: "dl.dh"; di: "dl.di"; dj: "dl.dj"; dk: "dl.dk"; dl: "dl.dl"; dm: "dl.dm"; dn: "dl.dn"; do: "dl.do"; dp: "dl.dp"; dq: "dl.dq"; dr: "dl.dr"; ds: "dl.ds"; dt: "dl.dt"; du: "dl.du"; dv: "dl.dv"; dw: "dl.dw"; dx: "dl.dx"; dy: "dl.dy"; dz: "dl.dz"; ea: "dl.ea"; eb: "dl.eb"; ec: "dl.ec"; ed: "dl.ed"; ee: "dl.ee"; ef: "dl.ef"; eg: "dl.eg"; eh: "dl.eh"; ei: "dl.ei"; ej: "dl.ej"; ek: "dl.ek"; el: "dl.el"; em: "dl.em"; en: "dl.en"; eo: "dl.eo"; ep: "dl.ep"; eq: "dl.eq"; er: "dl.er"; es: "dl.es"; et: "dl.et"; eu: "dl.eu"; ev: "dl.ev"; ew: "dl.ew"; ex: "dl.ex"; ey: "dl.ey"; ez: "dl.ez"; fa: "dl.fa"; fb: "dl.fb"; fc: "dl.fc"; fd: "dl.fd"; fe: "dl.fe"; ff: "dl.ff"; fg: "dl.fg"; fh: "dl.fh"; fi: "dl.fi"; fj: "dl.fj"; fk: "dl.fk"; fl: "dl.fl"; fm: "dl.fm"; fn: "dl.fn"; fo: "dl.fo"; fp: "dl.fp"; fq: "dl.fq"; fr: "dl.fr"; fs: "dl.fs"; ft: "dl.ft"; fu: "dl.fu"; fv: "dl.fv"; fw: "dl.fw"; fx: "dl.fx"; fy: "dl.fy"; fz: "dl.fz"; ga: "dl.ga"; gb: "dl.gb"; gc: "dl.gc"; gd: "dl.gd"; ge: "dl.ge"; gf: "dl.gf"; gg: "dl.gg"; gh: "dl.gh"; gi: "dl.gi"; gj: "dl.gj"; gk: "dl.gk"; gl: "dl.gl"; gm: "dl.gm"; gn: "dl.gn"; go: "dl.go"; gp: "dl.gp"; gq: "dl.gq"; gr: "dl.gr"; gs: "dl.gs"; gt: "dl.gt"; gu: "dl.gu"; gv: "dl.gv"; gw: "dl.gw"; gx: "dl.gx"; gy: "dl.gy"; gz: "dl.gz"; ha: "dl.ha"; hb: "dl.hb"; hc: "dl.hc"; hd: "dl.hd"; he: "dl.he"; hf: "dl.hf"; hg: "dl.hg"; hh: "dl.hh"; hi: "dl.hi"; hj: "dl.hj"; hk: "dl.hk"; hl: "dl.hl"; hm: "dl.hm"; hn: "dl.hn"; ho: "dl.ho"; hp: "dl.hp"; hq: "dl.hq"; hr: "dl.hr"; hs: "dl.hs"; ht: "dl.ht"; hu: "dl.hu"; hv: "dl.hv"; hw: "dl.hw"; hx: "dl.hx"; hy: "dl.hy"; hz: "dl.hz"; ia: "dl.ia"; ib: "dl.ib"; ic: "dl.ic"; id: "dl.id"; ie: "dl.ie"; if: "dl.if"; ig: "dl.ig"; ih: "dl.ih"; ii: "dl.ii"; ij: "dl.ij"; ik: "dl.ik"; il: "dl.il"; im: "dl.im"; in: "dl.in"; io: "dl.io"; ip: "dl.ip"; iq: "dl.iq"; ir: "dl.ir"; is: "dl.is"; it: "dl.it"; iu: "dl.iu"; iv: "dl.iv"; iw: "dl.iw"; ix: "dl.ix"; iy: "dl.iy"; iz: "dl.iz"; ja: "dl.ja"; jb: "dl.jb"; jc: "dl.jc"; jd: "dl.jd"; je: "dl.je"; jf: "dl.jf"; jg: "dl.jg"; jh: "dl.jh"; ji: "dl.ji"; jj: "dl.jj"; jk: "dl.jk"; jl: "dl.jl"; jm: "dl.jm"; jn: "dl.jn"; jo: "dl.jo"; jp: "dl.jp"; jq: "dl.jq"; jr: "dl.jr"; js: "dl.js"; jt: "dl.jt"; ju: "dl.ju"; jv: "dl.jv"; jw: "dl.jw"; jx: "dl.jx"; jy: "dl.jy"; jz: "dl.jz"; ka: "dl.ka"; kb: "dl.kb"; kc: "dl.kc"; kd: "dl.kd"; ke: "dl.ke"; kf: "dl.kf"; kg: "dl.kg"; kh: "dl.kh"; ki: "dl.ki"; kj: "dl.kj"; kk: "dl.kk"; kl: "dl.kl"; km: "dl.km"; kn: "dl.kn"; ko: "dl.ko"; kp: "dl.kp"; kq: "dl.kq"; kr: "dl.kr"; ks: "dl.ks"; kt: "dl.kt"; ku: "dl.ku"; kv: "dl.kv"; kw: "dl.kw"; kx: "dl.kx"; ky: "dl.ky"; kz: "dl.kz"; la: "dl.la"; lb: "dl.lb"; lc: "dl.lc"; ld: "dl.ld"; le: "dl.le"; lf: "dl.lf"; lg: "dl.lg"; lh: "dl.lh"; li: "dl.li"; lj: "dl.lj"; lk: "dl.lk"; ll: "dl.ll"; lm: "dl.lm"; ln: "dl.ln"; lo: "dl.lo"; lp: "dl.lp"; lq: "dl.lq"; lr: "dl.lr"; ls: "dl.ls"; lt: "dl.lt"; lu: "dl.lu"; lv: "dl.lv"; lw: "dl.lw"; lx: "dl.lx"; ly: "dl.ly"; lz: "dl.lz"; ma: "dl.ma"; mb: "dl.mb"; mc: "dl.mc"; md: "dl.md"; me: "dl.me"; mf: "dl.mf"; mg: "dl.mg"; mh: "dl.mh"; mi: "dl.mi"; mj: "dl.mj"; mk: "dl.mk"; ml: "dl.ml"; mm: "dl.mm"; mn: "dl.mn"; mo: "dl.mo"; mp: "dl.mp"; mq: "dl.mq"; mr: "dl.mr"; ms: "dl.ms"; mt: "dl.mt"; mu: "dl.mu"; mv: "dl.mv"; mw: "dl.mw"; mx: "dl.mx"; my: "dl.my"; mz: "dl.mz"; na: "dl.na"; nb: "dl.nb"; nc: "dl.nc"; nd: "dl.nd"; ne: "dl.ne"; nf: "dl.nf"; ng: "dl.ng"; nh: "dl.nh"; ni: "dl.ni"; nj: "dl.nj"; nk: "dl.nk"; nl: "dl.nl"; nm: "dl.nm"; nn: "dl.nn"; no: "dl.no"; np: "dl.np"; nq: "dl.nq"; nr: "dl.nr"; ns: "dl.ns"; nt: "dl.nt"; nu: "dl.nu"; nv: "dl.nv"; nw: "dl.nw"; nx: "dl.nx"; ny: "dl.ny"; nz: "dl.nz"; oa: "dl.oa"; ob: "dl.ob"; oc: "dl.oc"; od: "dl.od"; oe: "dl.oe"; of: "dl.of"; og: "dl.og"; oh: "dl.oh"; oi: "dl.oi"; oj: "dl.oj"; ok: "dl.ok"; ol: "dl.ol"; om: "dl.om"; on: "dl.on"; oo: "dl.oo"; op: "dl.op"; oq: "dl.oq"; or: "dl.or"; os: "dl.os"; ot: "dl.ot"; ou: "dl.ou"; ov: "dl.ov"; ow: "dl.ow"; ox: "dl.ox"; oy: "dl.oy"; oz: "dl.oz"; pa: "dl.pa"; pb: "dl.pb"; pc: "dl.pc"; pd: "dl.pd"; pe: "dl.pe"; pf: "dl.pf"; pg: "dl.pg"; ph: "dl.ph"; pi: "dl.pi"; pj: "dl.pj"; pk: "dl.pk"; pl: "dl.pl"; pm: "dl.pm"; pn: "dl.pn"; po: "dl.po"; pp: "dl.pp"; pq: "dl.pq"; pr: "dl.pr"; ps: "dl.ps"; pt: "dl.pt"; pu: "dl.pu"; pv: "dl.pv"; pw: "dl.pw"; px: "dl.px"; py: "dl.py"; pz: "dl.pz"; qa: "dl.qa"; qb: "dl.qb"; qc: "dl.qc"; qd: "dl.qd"; qe: "dl.qe"; qf: "dl.qf"; qg: "dl.qg"; qh: "dl.qh"; qi: "dl.qi"; qj: "dl.qj"; qk: "dl.qk"; ql: "dl.ql"; qm: "dl.qm"; qn: "dl.qn"; qo: "dl.qo"; qp: "dl.qp"; qq: "dl.qq"; qr: "dl.qr"; qs: "dl.qs"; qt: "dl.qt"; qu: "dl.qu"; qv: "dl.qv"; qw: "dl.qw"; qx: "dl.qx"; qy: "dl.qy"; qz: "dl.qz"; ra: "dl.ra"; rb: "dl.rb"; rc: "dl.rc"; rd: "dl.rd"; re: "dl.re"; rf: "dl.rf"; rg: "dl.rg"; rh: "dl.rh"; ri: "dl.ri"; rj: "dl.rj"; rk: "dl.rk"; rl: "dl.rl"; rm: "dl.rm"; rn: "dl.rn"; ro: "dl.ro"; rp: "dl.rp"; rq: "dl.rq"; rr: "dl.rr"; rs: "dl.rs"; rt: "dl.rt"; ru: "dl.ru"; rv: "dl.rv"; rw: "dl.rw"; rx: "dl.rx"; ry: "dl.ry"; rz: "dl.rz"; sa: "dl.sa"; sb: "dl.sb"; sc: "dl.sc"; sd: "dl.sd"; se: "dl.se"; sf: "dl.sf"; sg: "dl.sg"; sh: "dl.sh"; si: "dl.si"; sj: "dl.sj"; sk: "dl.sk"; sl: "dl.sl"; sm: "dl.sm"; sn: "dl.sn"; so: "dl.so"; sp: "dl.sp"; sq: "dl.sq"; sr: "dl.sr"; ss: "dl.ss"; st: "dl.st"; su: "dl.su"; sv: "dl.sv"; sw: "dl.sw"; sx: "dl.sx"; sy: "dl.sy"; sz: "dl.sz"; ta: "dl.ta"; tb: "dl.tb"; tc: "dl.tc"; td: "dl.td"; te: "dl.te"; tf: "dl.tf"; tg: "dl.tg"; th: "dl.th"; ti: "dl.ti"; tj: "dl.tj"; tk: "dl.tk"; tl: "dl.tl"; tm: "dl.tm"; tn: "dl.tn"; to: "dl.to"; tp: "dl.tp"; tq: "dl.tq"; tr: "dl.tr"; ts: "dl.ts"; tt: "dl.tt"; tu: "dl.tu"; tv: "dl.tv"; tw: "dl.tw"; tx: "dl.tx"; ty: "dl.ty"; tz: "dl.tz"; ua: "dl.ua"; ub: "dl.ub"; uc: "dl.uc"; ud: "dl.ud"; ue: "dl.ue"; uf: "dl.uf"; ug: "dl.ug"; uh: "dl.uh"; ui: "dl.ui"; uj: "dl.uj"; uk: "dl.uk"; ul: "dl.ul"; um: "dl.um"; un: "dl.un"; uo: "dl.uo"; up: "dl.up"; uq: "dl.uq"; ur: "dl.ur"; us: "dl.us"; ut: "dl.ut"; uu: "dl.uu"; uv: "dl.uv"; uw: "dl.uw"; ux: "dl.ux"; uy: "dl.uy"; uz: "dl.uz"; va: "dl.va"; vb: "dl.vb"; vc: "dl.vc"; vd: "dl.vd"; ve: "dl.ve"; vf: "dl.vf"; vg: "dl.vg"; vh: "dl.vh"; vi: "dl.vi"; vj: "dl.vj"; vk: "dl.vk"; vl: "dl.vl"; vm: "dl.vm"; vn: "dl.vn"; vo: "dl.vo"; vp: "dl.vp"; vq: "dl.vq"; vr: "dl.vr"; vs: "dl.vs"; vt: "dl.vt"; vu: "dl.vu"; vv: "dl.vv"; vw: "dl.vw"; vx: "dl.vx"; vy: "dl.vy"; vz: "dl.vz"; wa: "dl.wa"; wb: "dl.wb"; wc: "dl.wc"; wd: "dl.wd"; we: "dl.we"; wf: "dl.wf"; wg: "dl.wg"; wh: "dl.wh"; wi: "dl.wi"; wj: "dl.wj"; wk: "dl.wk"; wl: "dl.wl"; wm: "dl.wm"; wn: "dl.wn"; wo: "dl.wo"; wp: "dl.wp"; wq: "dl.wq"; wr: "dl.wr"; ws: "dl.ws"; wt: "dl.wt"; wu: "dl.wu"; wv: "dl.wv"; ww: "dl.ww"; wx: "dl.wx"; wy: "dl.wy"; wz: "dl.wz"; xa: "dl.xa"; xb: "dl.xb"; xc: "dl.xc"; xd: "dl.xd"; xe: "dl.xe"; xf: "dl.xf"; xg: "dl.xg"; xh: "dl.xh"; xi: "dl.xi"; xj: "dl.xj"; xk: "dl.xk"; xl: "dl.xl"; xm: "dl.xm"; xn: "dl.xn"; xo: "dl.xo"; xp: "dl.xp"; xq: "dl.xq"; xr: "dl.xr"; xs: "dl.xs"; xt: "dl.xt"; xu: "dl.xu"; xv: "dl.xv"; xw: "dl.xw"; xx: "dl.xx"; xy: "dl.xy"; xz: "dl.xz"; ya: "dl.ya"; yb: "dl.yb"; yc: "dl.yc"; yd: "dl.yd"; ye: "dl.ye"; yf: "dl.yf"; yg: "dl.yg"; yh: "dl.yh"; yi: "dl.yi"; yj: "dl.yj"; yk: "dl.yk"; yl: "dl.yl"; ym: "dl.ym"; yn: "dl.yn"; yo: "dl.yo"; yp: "dl.yp"; yq: "dl.yq"; yr: "dl.yr"; ys: "dl.ys"; yt: "dl.yt"; yu: "dl.yu"; yv: "dl.yv"; yw: "dl.yw"; yx: "dl.yx"; yy: "dl.yy"; yz: "dl.yz"; za: "dl.za"; zb: "dl.zb"; zc: "dl.zc"; zd: "dl.zd"; ze: "dl.ze"; zf: "dl.zf"; zg: "dl.zg"; zh: "dl.zh"; zi: "dl.zi"; zj: "dl.zj"; zk: "dl.zk"; zl: "dl.zl"; zm: "dl.zm"; zn: "dl.zn"; zo: "dl.zo"; zp: "dl.zp"; zq: "dl.zq"; zr: "dl.zr"; zs: "dl.zs"; zt: "dl.zt"; zu: "dl.zu"; zv: "dl.zv"; zw: "dl.zw"; zx: "dl.zx"; zy: "dl.zy"; zz: "dl.zz"; }; dm: { aa: "dm.aa"; ab: "dm.ab"; ac: "dm.ac"; ad: "dm.ad"; ae: "dm.ae"; af: "dm.af"; ag: "dm.ag"; ah: "dm.ah"; ai: "dm.ai"; aj: "dm.aj"; ak: "dm.ak"; al: "dm.al"; am: "dm.am"; an: "dm.an"; ao: "dm.ao"; ap: "dm.ap"; aq: "dm.aq"; ar: "dm.ar"; as: "dm.as"; at: "dm.at"; au: "dm.au"; av: "dm.av"; aw: "dm.aw"; ax: "dm.ax"; ay: "dm.ay"; az: "dm.az"; ba: "dm.ba"; bb: "dm.bb"; bc: "dm.bc"; bd: "dm.bd"; be: "dm.be"; bf: "dm.bf"; bg: "dm.bg"; bh: "dm.bh"; bi: "dm.bi"; bj: "dm.bj"; bk: "dm.bk"; bl: "dm.bl"; bm: "dm.bm"; bn: "dm.bn"; bo: "dm.bo"; bp: "dm.bp"; bq: "dm.bq"; br: "dm.br"; bs: "dm.bs"; bt: "dm.bt"; bu: "dm.bu"; bv: "dm.bv"; bw: "dm.bw"; bx: "dm.bx"; by: "dm.by"; bz: "dm.bz"; ca: "dm.ca"; cb: "dm.cb"; cc: "dm.cc"; cd: "dm.cd"; ce: "dm.ce"; cf: "dm.cf"; cg: "dm.cg"; ch: "dm.ch"; ci: "dm.ci"; cj: "dm.cj"; ck: "dm.ck"; cl: "dm.cl"; cm: "dm.cm"; cn: "dm.cn"; co: "dm.co"; cp: "dm.cp"; cq: "dm.cq"; cr: "dm.cr"; cs: "dm.cs"; ct: "dm.ct"; cu: "dm.cu"; cv: "dm.cv"; cw: "dm.cw"; cx: "dm.cx"; cy: "dm.cy"; cz: "dm.cz"; da: "dm.da"; db: "dm.db"; dc: "dm.dc"; dd: "dm.dd"; de: "dm.de"; df: "dm.df"; dg: "dm.dg"; dh: "dm.dh"; di: "dm.di"; dj: "dm.dj"; dk: "dm.dk"; dl: "dm.dl"; dm: "dm.dm"; dn: "dm.dn"; do: "dm.do"; dp: "dm.dp"; dq: "dm.dq"; dr: "dm.dr"; ds: "dm.ds"; dt: "dm.dt"; du: "dm.du"; dv: "dm.dv"; dw: "dm.dw"; dx: "dm.dx"; dy: "dm.dy"; dz: "dm.dz"; ea: "dm.ea"; eb: "dm.eb"; ec: "dm.ec"; ed: "dm.ed"; ee: "dm.ee"; ef: "dm.ef"; eg: "dm.eg"; eh: "dm.eh"; ei: "dm.ei"; ej: "dm.ej"; ek: "dm.ek"; el: "dm.el"; em: "dm.em"; en: "dm.en"; eo: "dm.eo"; ep: "dm.ep"; eq: "dm.eq"; er: "dm.er"; es: "dm.es"; et: "dm.et"; eu: "dm.eu"; ev: "dm.ev"; ew: "dm.ew"; ex: "dm.ex"; ey: "dm.ey"; ez: "dm.ez"; fa: "dm.fa"; fb: "dm.fb"; fc: "dm.fc"; fd: "dm.fd"; fe: "dm.fe"; ff: "dm.ff"; fg: "dm.fg"; fh: "dm.fh"; fi: "dm.fi"; fj: "dm.fj"; fk: "dm.fk"; fl: "dm.fl"; fm: "dm.fm"; fn: "dm.fn"; fo: "dm.fo"; fp: "dm.fp"; fq: "dm.fq"; fr: "dm.fr"; fs: "dm.fs"; ft: "dm.ft"; fu: "dm.fu"; fv: "dm.fv"; fw: "dm.fw"; fx: "dm.fx"; fy: "dm.fy"; fz: "dm.fz"; ga: "dm.ga"; gb: "dm.gb"; gc: "dm.gc"; gd: "dm.gd"; ge: "dm.ge"; gf: "dm.gf"; gg: "dm.gg"; gh: "dm.gh"; gi: "dm.gi"; gj: "dm.gj"; gk: "dm.gk"; gl: "dm.gl"; gm: "dm.gm"; gn: "dm.gn"; go: "dm.go"; gp: "dm.gp"; gq: "dm.gq"; gr: "dm.gr"; gs: "dm.gs"; gt: "dm.gt"; gu: "dm.gu"; gv: "dm.gv"; gw: "dm.gw"; gx: "dm.gx"; gy: "dm.gy"; gz: "dm.gz"; ha: "dm.ha"; hb: "dm.hb"; hc: "dm.hc"; hd: "dm.hd"; he: "dm.he"; hf: "dm.hf"; hg: "dm.hg"; hh: "dm.hh"; hi: "dm.hi"; hj: "dm.hj"; hk: "dm.hk"; hl: "dm.hl"; hm: "dm.hm"; hn: "dm.hn"; ho: "dm.ho"; hp: "dm.hp"; hq: "dm.hq"; hr: "dm.hr"; hs: "dm.hs"; ht: "dm.ht"; hu: "dm.hu"; hv: "dm.hv"; hw: "dm.hw"; hx: "dm.hx"; hy: "dm.hy"; hz: "dm.hz"; ia: "dm.ia"; ib: "dm.ib"; ic: "dm.ic"; id: "dm.id"; ie: "dm.ie"; if: "dm.if"; ig: "dm.ig"; ih: "dm.ih"; ii: "dm.ii"; ij: "dm.ij"; ik: "dm.ik"; il: "dm.il"; im: "dm.im"; in: "dm.in"; io: "dm.io"; ip: "dm.ip"; iq: "dm.iq"; ir: "dm.ir"; is: "dm.is"; it: "dm.it"; iu: "dm.iu"; iv: "dm.iv"; iw: "dm.iw"; ix: "dm.ix"; iy: "dm.iy"; iz: "dm.iz"; ja: "dm.ja"; jb: "dm.jb"; jc: "dm.jc"; jd: "dm.jd"; je: "dm.je"; jf: "dm.jf"; jg: "dm.jg"; jh: "dm.jh"; ji: "dm.ji"; jj: "dm.jj"; jk: "dm.jk"; jl: "dm.jl"; jm: "dm.jm"; jn: "dm.jn"; jo: "dm.jo"; jp: "dm.jp"; jq: "dm.jq"; jr: "dm.jr"; js: "dm.js"; jt: "dm.jt"; ju: "dm.ju"; jv: "dm.jv"; jw: "dm.jw"; jx: "dm.jx"; jy: "dm.jy"; jz: "dm.jz"; ka: "dm.ka"; kb: "dm.kb"; kc: "dm.kc"; kd: "dm.kd"; ke: "dm.ke"; kf: "dm.kf"; kg: "dm.kg"; kh: "dm.kh"; ki: "dm.ki"; kj: "dm.kj"; kk: "dm.kk"; kl: "dm.kl"; km: "dm.km"; kn: "dm.kn"; ko: "dm.ko"; kp: "dm.kp"; kq: "dm.kq"; kr: "dm.kr"; ks: "dm.ks"; kt: "dm.kt"; ku: "dm.ku"; kv: "dm.kv"; kw: "dm.kw"; kx: "dm.kx"; ky: "dm.ky"; kz: "dm.kz"; la: "dm.la"; lb: "dm.lb"; lc: "dm.lc"; ld: "dm.ld"; le: "dm.le"; lf: "dm.lf"; lg: "dm.lg"; lh: "dm.lh"; li: "dm.li"; lj: "dm.lj"; lk: "dm.lk"; ll: "dm.ll"; lm: "dm.lm"; ln: "dm.ln"; lo: "dm.lo"; lp: "dm.lp"; lq: "dm.lq"; lr: "dm.lr"; ls: "dm.ls"; lt: "dm.lt"; lu: "dm.lu"; lv: "dm.lv"; lw: "dm.lw"; lx: "dm.lx"; ly: "dm.ly"; lz: "dm.lz"; ma: "dm.ma"; mb: "dm.mb"; mc: "dm.mc"; md: "dm.md"; me: "dm.me"; mf: "dm.mf"; mg: "dm.mg"; mh: "dm.mh"; mi: "dm.mi"; mj: "dm.mj"; mk: "dm.mk"; ml: "dm.ml"; mm: "dm.mm"; mn: "dm.mn"; mo: "dm.mo"; mp: "dm.mp"; mq: "dm.mq"; mr: "dm.mr"; ms: "dm.ms"; mt: "dm.mt"; mu: "dm.mu"; mv: "dm.mv"; mw: "dm.mw"; mx: "dm.mx"; my: "dm.my"; mz: "dm.mz"; na: "dm.na"; nb: "dm.nb"; nc: "dm.nc"; nd: "dm.nd"; ne: "dm.ne"; nf: "dm.nf"; ng: "dm.ng"; nh: "dm.nh"; ni: "dm.ni"; nj: "dm.nj"; nk: "dm.nk"; nl: "dm.nl"; nm: "dm.nm"; nn: "dm.nn"; no: "dm.no"; np: "dm.np"; nq: "dm.nq"; nr: "dm.nr"; ns: "dm.ns"; nt: "dm.nt"; nu: "dm.nu"; nv: "dm.nv"; nw: "dm.nw"; nx: "dm.nx"; ny: "dm.ny"; nz: "dm.nz"; oa: "dm.oa"; ob: "dm.ob"; oc: "dm.oc"; od: "dm.od"; oe: "dm.oe"; of: "dm.of"; og: "dm.og"; oh: "dm.oh"; oi: "dm.oi"; oj: "dm.oj"; ok: "dm.ok"; ol: "dm.ol"; om: "dm.om"; on: "dm.on"; oo: "dm.oo"; op: "dm.op"; oq: "dm.oq"; or: "dm.or"; os: "dm.os"; ot: "dm.ot"; ou: "dm.ou"; ov: "dm.ov"; ow: "dm.ow"; ox: "dm.ox"; oy: "dm.oy"; oz: "dm.oz"; pa: "dm.pa"; pb: "dm.pb"; pc: "dm.pc"; pd: "dm.pd"; pe: "dm.pe"; pf: "dm.pf"; pg: "dm.pg"; ph: "dm.ph"; pi: "dm.pi"; pj: "dm.pj"; pk: "dm.pk"; pl: "dm.pl"; pm: "dm.pm"; pn: "dm.pn"; po: "dm.po"; pp: "dm.pp"; pq: "dm.pq"; pr: "dm.pr"; ps: "dm.ps"; pt: "dm.pt"; pu: "dm.pu"; pv: "dm.pv"; pw: "dm.pw"; px: "dm.px"; py: "dm.py"; pz: "dm.pz"; qa: "dm.qa"; qb: "dm.qb"; qc: "dm.qc"; qd: "dm.qd"; qe: "dm.qe"; qf: "dm.qf"; qg: "dm.qg"; qh: "dm.qh"; qi: "dm.qi"; qj: "dm.qj"; qk: "dm.qk"; ql: "dm.ql"; qm: "dm.qm"; qn: "dm.qn"; qo: "dm.qo"; qp: "dm.qp"; qq: "dm.qq"; qr: "dm.qr"; qs: "dm.qs"; qt: "dm.qt"; qu: "dm.qu"; qv: "dm.qv"; qw: "dm.qw"; qx: "dm.qx"; qy: "dm.qy"; qz: "dm.qz"; ra: "dm.ra"; rb: "dm.rb"; rc: "dm.rc"; rd: "dm.rd"; re: "dm.re"; rf: "dm.rf"; rg: "dm.rg"; rh: "dm.rh"; ri: "dm.ri"; rj: "dm.rj"; rk: "dm.rk"; rl: "dm.rl"; rm: "dm.rm"; rn: "dm.rn"; ro: "dm.ro"; rp: "dm.rp"; rq: "dm.rq"; rr: "dm.rr"; rs: "dm.rs"; rt: "dm.rt"; ru: "dm.ru"; rv: "dm.rv"; rw: "dm.rw"; rx: "dm.rx"; ry: "dm.ry"; rz: "dm.rz"; sa: "dm.sa"; sb: "dm.sb"; sc: "dm.sc"; sd: "dm.sd"; se: "dm.se"; sf: "dm.sf"; sg: "dm.sg"; sh: "dm.sh"; si: "dm.si"; sj: "dm.sj"; sk: "dm.sk"; sl: "dm.sl"; sm: "dm.sm"; sn: "dm.sn"; so: "dm.so"; sp: "dm.sp"; sq: "dm.sq"; sr: "dm.sr"; ss: "dm.ss"; st: "dm.st"; su: "dm.su"; sv: "dm.sv"; sw: "dm.sw"; sx: "dm.sx"; sy: "dm.sy"; sz: "dm.sz"; ta: "dm.ta"; tb: "dm.tb"; tc: "dm.tc"; td: "dm.td"; te: "dm.te"; tf: "dm.tf"; tg: "dm.tg"; th: "dm.th"; ti: "dm.ti"; tj: "dm.tj"; tk: "dm.tk"; tl: "dm.tl"; tm: "dm.tm"; tn: "dm.tn"; to: "dm.to"; tp: "dm.tp"; tq: "dm.tq"; tr: "dm.tr"; ts: "dm.ts"; tt: "dm.tt"; tu: "dm.tu"; tv: "dm.tv"; tw: "dm.tw"; tx: "dm.tx"; ty: "dm.ty"; tz: "dm.tz"; ua: "dm.ua"; ub: "dm.ub"; uc: "dm.uc"; ud: "dm.ud"; ue: "dm.ue"; uf: "dm.uf"; ug: "dm.ug"; uh: "dm.uh"; ui: "dm.ui"; uj: "dm.uj"; uk: "dm.uk"; ul: "dm.ul"; um: "dm.um"; un: "dm.un"; uo: "dm.uo"; up: "dm.up"; uq: "dm.uq"; ur: "dm.ur"; us: "dm.us"; ut: "dm.ut"; uu: "dm.uu"; uv: "dm.uv"; uw: "dm.uw"; ux: "dm.ux"; uy: "dm.uy"; uz: "dm.uz"; va: "dm.va"; vb: "dm.vb"; vc: "dm.vc"; vd: "dm.vd"; ve: "dm.ve"; vf: "dm.vf"; vg: "dm.vg"; vh: "dm.vh"; vi: "dm.vi"; vj: "dm.vj"; vk: "dm.vk"; vl: "dm.vl"; vm: "dm.vm"; vn: "dm.vn"; vo: "dm.vo"; vp: "dm.vp"; vq: "dm.vq"; vr: "dm.vr"; vs: "dm.vs"; vt: "dm.vt"; vu: "dm.vu"; vv: "dm.vv"; vw: "dm.vw"; vx: "dm.vx"; vy: "dm.vy"; vz: "dm.vz"; wa: "dm.wa"; wb: "dm.wb"; wc: "dm.wc"; wd: "dm.wd"; we: "dm.we"; wf: "dm.wf"; wg: "dm.wg"; wh: "dm.wh"; wi: "dm.wi"; wj: "dm.wj"; wk: "dm.wk"; wl: "dm.wl"; wm: "dm.wm"; wn: "dm.wn"; wo: "dm.wo"; wp: "dm.wp"; wq: "dm.wq"; wr: "dm.wr"; ws: "dm.ws"; wt: "dm.wt"; wu: "dm.wu"; wv: "dm.wv"; ww: "dm.ww"; wx: "dm.wx"; wy: "dm.wy"; wz: "dm.wz"; xa: "dm.xa"; xb: "dm.xb"; xc: "dm.xc"; xd: "dm.xd"; xe: "dm.xe"; xf: "dm.xf"; xg: "dm.xg"; xh: "dm.xh"; xi: "dm.xi"; xj: "dm.xj"; xk: "dm.xk"; xl: "dm.xl"; xm: "dm.xm"; xn: "dm.xn"; xo: "dm.xo"; xp: "dm.xp"; xq: "dm.xq"; xr: "dm.xr"; xs: "dm.xs"; xt: "dm.xt"; xu: "dm.xu"; xv: "dm.xv"; xw: "dm.xw"; xx: "dm.xx"; xy: "dm.xy"; xz: "dm.xz"; ya: "dm.ya"; yb: "dm.yb"; yc: "dm.yc"; yd: "dm.yd"; ye: "dm.ye"; yf: "dm.yf"; yg: "dm.yg"; yh: "dm.yh"; yi: "dm.yi"; yj: "dm.yj"; yk: "dm.yk"; yl: "dm.yl"; ym: "dm.ym"; yn: "dm.yn"; yo: "dm.yo"; yp: "dm.yp"; yq: "dm.yq"; yr: "dm.yr"; ys: "dm.ys"; yt: "dm.yt"; yu: "dm.yu"; yv: "dm.yv"; yw: "dm.yw"; yx: "dm.yx"; yy: "dm.yy"; yz: "dm.yz"; za: "dm.za"; zb: "dm.zb"; zc: "dm.zc"; zd: "dm.zd"; ze: "dm.ze"; zf: "dm.zf"; zg: "dm.zg"; zh: "dm.zh"; zi: "dm.zi"; zj: "dm.zj"; zk: "dm.zk"; zl: "dm.zl"; zm: "dm.zm"; zn: "dm.zn"; zo: "dm.zo"; zp: "dm.zp"; zq: "dm.zq"; zr: "dm.zr"; zs: "dm.zs"; zt: "dm.zt"; zu: "dm.zu"; zv: "dm.zv"; zw: "dm.zw"; zx: "dm.zx"; zy: "dm.zy"; zz: "dm.zz"; }; dn: { aa: "dn.aa"; ab: "dn.ab"; ac: "dn.ac"; ad: "dn.ad"; ae: "dn.ae"; af: "dn.af"; ag: "dn.ag"; ah: "dn.ah"; ai: "dn.ai"; aj: "dn.aj"; ak: "dn.ak"; al: "dn.al"; am: "dn.am"; an: "dn.an"; ao: "dn.ao"; ap: "dn.ap"; aq: "dn.aq"; ar: "dn.ar"; as: "dn.as"; at: "dn.at"; au: "dn.au"; av: "dn.av"; aw: "dn.aw"; ax: "dn.ax"; ay: "dn.ay"; az: "dn.az"; ba: "dn.ba"; bb: "dn.bb"; bc: "dn.bc"; bd: "dn.bd"; be: "dn.be"; bf: "dn.bf"; bg: "dn.bg"; bh: "dn.bh"; bi: "dn.bi"; bj: "dn.bj"; bk: "dn.bk"; bl: "dn.bl"; bm: "dn.bm"; bn: "dn.bn"; bo: "dn.bo"; bp: "dn.bp"; bq: "dn.bq"; br: "dn.br"; bs: "dn.bs"; bt: "dn.bt"; bu: "dn.bu"; bv: "dn.bv"; bw: "dn.bw"; bx: "dn.bx"; by: "dn.by"; bz: "dn.bz"; ca: "dn.ca"; cb: "dn.cb"; cc: "dn.cc"; cd: "dn.cd"; ce: "dn.ce"; cf: "dn.cf"; cg: "dn.cg"; ch: "dn.ch"; ci: "dn.ci"; cj: "dn.cj"; ck: "dn.ck"; cl: "dn.cl"; cm: "dn.cm"; cn: "dn.cn"; co: "dn.co"; cp: "dn.cp"; cq: "dn.cq"; cr: "dn.cr"; cs: "dn.cs"; ct: "dn.ct"; cu: "dn.cu"; cv: "dn.cv"; cw: "dn.cw"; cx: "dn.cx"; cy: "dn.cy"; cz: "dn.cz"; da: "dn.da"; db: "dn.db"; dc: "dn.dc"; dd: "dn.dd"; de: "dn.de"; df: "dn.df"; dg: "dn.dg"; dh: "dn.dh"; di: "dn.di"; dj: "dn.dj"; dk: "dn.dk"; dl: "dn.dl"; dm: "dn.dm"; dn: "dn.dn"; do: "dn.do"; dp: "dn.dp"; dq: "dn.dq"; dr: "dn.dr"; ds: "dn.ds"; dt: "dn.dt"; du: "dn.du"; dv: "dn.dv"; dw: "dn.dw"; dx: "dn.dx"; dy: "dn.dy"; dz: "dn.dz"; ea: "dn.ea"; eb: "dn.eb"; ec: "dn.ec"; ed: "dn.ed"; ee: "dn.ee"; ef: "dn.ef"; eg: "dn.eg"; eh: "dn.eh"; ei: "dn.ei"; ej: "dn.ej"; ek: "dn.ek"; el: "dn.el"; em: "dn.em"; en: "dn.en"; eo: "dn.eo"; ep: "dn.ep"; eq: "dn.eq"; er: "dn.er"; es: "dn.es"; et: "dn.et"; eu: "dn.eu"; ev: "dn.ev"; ew: "dn.ew"; ex: "dn.ex"; ey: "dn.ey"; ez: "dn.ez"; fa: "dn.fa"; fb: "dn.fb"; fc: "dn.fc"; fd: "dn.fd"; fe: "dn.fe"; ff: "dn.ff"; fg: "dn.fg"; fh: "dn.fh"; fi: "dn.fi"; fj: "dn.fj"; fk: "dn.fk"; fl: "dn.fl"; fm: "dn.fm"; fn: "dn.fn"; fo: "dn.fo"; fp: "dn.fp"; fq: "dn.fq"; fr: "dn.fr"; fs: "dn.fs"; ft: "dn.ft"; fu: "dn.fu"; fv: "dn.fv"; fw: "dn.fw"; fx: "dn.fx"; fy: "dn.fy"; fz: "dn.fz"; ga: "dn.ga"; gb: "dn.gb"; gc: "dn.gc"; gd: "dn.gd"; ge: "dn.ge"; gf: "dn.gf"; gg: "dn.gg"; gh: "dn.gh"; gi: "dn.gi"; gj: "dn.gj"; gk: "dn.gk"; gl: "dn.gl"; gm: "dn.gm"; gn: "dn.gn"; go: "dn.go"; gp: "dn.gp"; gq: "dn.gq"; gr: "dn.gr"; gs: "dn.gs"; gt: "dn.gt"; gu: "dn.gu"; gv: "dn.gv"; gw: "dn.gw"; gx: "dn.gx"; gy: "dn.gy"; gz: "dn.gz"; ha: "dn.ha"; hb: "dn.hb"; hc: "dn.hc"; hd: "dn.hd"; he: "dn.he"; hf: "dn.hf"; hg: "dn.hg"; hh: "dn.hh"; hi: "dn.hi"; hj: "dn.hj"; hk: "dn.hk"; hl: "dn.hl"; hm: "dn.hm"; hn: "dn.hn"; ho: "dn.ho"; hp: "dn.hp"; hq: "dn.hq"; hr: "dn.hr"; hs: "dn.hs"; ht: "dn.ht"; hu: "dn.hu"; hv: "dn.hv"; hw: "dn.hw"; hx: "dn.hx"; hy: "dn.hy"; hz: "dn.hz"; ia: "dn.ia"; ib: "dn.ib"; ic: "dn.ic"; id: "dn.id"; ie: "dn.ie"; if: "dn.if"; ig: "dn.ig"; ih: "dn.ih"; ii: "dn.ii"; ij: "dn.ij"; ik: "dn.ik"; il: "dn.il"; im: "dn.im"; in: "dn.in"; io: "dn.io"; ip: "dn.ip"; iq: "dn.iq"; ir: "dn.ir"; is: "dn.is"; it: "dn.it"; iu: "dn.iu"; iv: "dn.iv"; iw: "dn.iw"; ix: "dn.ix"; iy: "dn.iy"; iz: "dn.iz"; ja: "dn.ja"; jb: "dn.jb"; jc: "dn.jc"; jd: "dn.jd"; je: "dn.je"; jf: "dn.jf"; jg: "dn.jg"; jh: "dn.jh"; ji: "dn.ji"; jj: "dn.jj"; jk: "dn.jk"; jl: "dn.jl"; jm: "dn.jm"; jn: "dn.jn"; jo: "dn.jo"; jp: "dn.jp"; jq: "dn.jq"; jr: "dn.jr"; js: "dn.js"; jt: "dn.jt"; ju: "dn.ju"; jv: "dn.jv"; jw: "dn.jw"; jx: "dn.jx"; jy: "dn.jy"; jz: "dn.jz"; ka: "dn.ka"; kb: "dn.kb"; kc: "dn.kc"; kd: "dn.kd"; ke: "dn.ke"; kf: "dn.kf"; kg: "dn.kg"; kh: "dn.kh"; ki: "dn.ki"; kj: "dn.kj"; kk: "dn.kk"; kl: "dn.kl"; km: "dn.km"; kn: "dn.kn"; ko: "dn.ko"; kp: "dn.kp"; kq: "dn.kq"; kr: "dn.kr"; ks: "dn.ks"; kt: "dn.kt"; ku: "dn.ku"; kv: "dn.kv"; kw: "dn.kw"; kx: "dn.kx"; ky: "dn.ky"; kz: "dn.kz"; la: "dn.la"; lb: "dn.lb"; lc: "dn.lc"; ld: "dn.ld"; le: "dn.le"; lf: "dn.lf"; lg: "dn.lg"; lh: "dn.lh"; li: "dn.li"; lj: "dn.lj"; lk: "dn.lk"; ll: "dn.ll"; lm: "dn.lm"; ln: "dn.ln"; lo: "dn.lo"; lp: "dn.lp"; lq: "dn.lq"; lr: "dn.lr"; ls: "dn.ls"; lt: "dn.lt"; lu: "dn.lu"; lv: "dn.lv"; lw: "dn.lw"; lx: "dn.lx"; ly: "dn.ly"; lz: "dn.lz"; ma: "dn.ma"; mb: "dn.mb"; mc: "dn.mc"; md: "dn.md"; me: "dn.me"; mf: "dn.mf"; mg: "dn.mg"; mh: "dn.mh"; mi: "dn.mi"; mj: "dn.mj"; mk: "dn.mk"; ml: "dn.ml"; mm: "dn.mm"; mn: "dn.mn"; mo: "dn.mo"; mp: "dn.mp"; mq: "dn.mq"; mr: "dn.mr"; ms: "dn.ms"; mt: "dn.mt"; mu: "dn.mu"; mv: "dn.mv"; mw: "dn.mw"; mx: "dn.mx"; my: "dn.my"; mz: "dn.mz"; na: "dn.na"; nb: "dn.nb"; nc: "dn.nc"; nd: "dn.nd"; ne: "dn.ne"; nf: "dn.nf"; ng: "dn.ng"; nh: "dn.nh"; ni: "dn.ni"; nj: "dn.nj"; nk: "dn.nk"; nl: "dn.nl"; nm: "dn.nm"; nn: "dn.nn"; no: "dn.no"; np: "dn.np"; nq: "dn.nq"; nr: "dn.nr"; ns: "dn.ns"; nt: "dn.nt"; nu: "dn.nu"; nv: "dn.nv"; nw: "dn.nw"; nx: "dn.nx"; ny: "dn.ny"; nz: "dn.nz"; oa: "dn.oa"; ob: "dn.ob"; oc: "dn.oc"; od: "dn.od"; oe: "dn.oe"; of: "dn.of"; og: "dn.og"; oh: "dn.oh"; oi: "dn.oi"; oj: "dn.oj"; ok: "dn.ok"; ol: "dn.ol"; om: "dn.om"; on: "dn.on"; oo: "dn.oo"; op: "dn.op"; oq: "dn.oq"; or: "dn.or"; os: "dn.os"; ot: "dn.ot"; ou: "dn.ou"; ov: "dn.ov"; ow: "dn.ow"; ox: "dn.ox"; oy: "dn.oy"; oz: "dn.oz"; pa: "dn.pa"; pb: "dn.pb"; pc: "dn.pc"; pd: "dn.pd"; pe: "dn.pe"; pf: "dn.pf"; pg: "dn.pg"; ph: "dn.ph"; pi: "dn.pi"; pj: "dn.pj"; pk: "dn.pk"; pl: "dn.pl"; pm: "dn.pm"; pn: "dn.pn"; po: "dn.po"; pp: "dn.pp"; pq: "dn.pq"; pr: "dn.pr"; ps: "dn.ps"; pt: "dn.pt"; pu: "dn.pu"; pv: "dn.pv"; pw: "dn.pw"; px: "dn.px"; py: "dn.py"; pz: "dn.pz"; qa: "dn.qa"; qb: "dn.qb"; qc: "dn.qc"; qd: "dn.qd"; qe: "dn.qe"; qf: "dn.qf"; qg: "dn.qg"; qh: "dn.qh"; qi: "dn.qi"; qj: "dn.qj"; qk: "dn.qk"; ql: "dn.ql"; qm: "dn.qm"; qn: "dn.qn"; qo: "dn.qo"; qp: "dn.qp"; qq: "dn.qq"; qr: "dn.qr"; qs: "dn.qs"; qt: "dn.qt"; qu: "dn.qu"; qv: "dn.qv"; qw: "dn.qw"; qx: "dn.qx"; qy: "dn.qy"; qz: "dn.qz"; ra: "dn.ra"; rb: "dn.rb"; rc: "dn.rc"; rd: "dn.rd"; re: "dn.re"; rf: "dn.rf"; rg: "dn.rg"; rh: "dn.rh"; ri: "dn.ri"; rj: "dn.rj"; rk: "dn.rk"; rl: "dn.rl"; rm: "dn.rm"; rn: "dn.rn"; ro: "dn.ro"; rp: "dn.rp"; rq: "dn.rq"; rr: "dn.rr"; rs: "dn.rs"; rt: "dn.rt"; ru: "dn.ru"; rv: "dn.rv"; rw: "dn.rw"; rx: "dn.rx"; ry: "dn.ry"; rz: "dn.rz"; sa: "dn.sa"; sb: "dn.sb"; sc: "dn.sc"; sd: "dn.sd"; se: "dn.se"; sf: "dn.sf"; sg: "dn.sg"; sh: "dn.sh"; si: "dn.si"; sj: "dn.sj"; sk: "dn.sk"; sl: "dn.sl"; sm: "dn.sm"; sn: "dn.sn"; so: "dn.so"; sp: "dn.sp"; sq: "dn.sq"; sr: "dn.sr"; ss: "dn.ss"; st: "dn.st"; su: "dn.su"; sv: "dn.sv"; sw: "dn.sw"; sx: "dn.sx"; sy: "dn.sy"; sz: "dn.sz"; ta: "dn.ta"; tb: "dn.tb"; tc: "dn.tc"; td: "dn.td"; te: "dn.te"; tf: "dn.tf"; tg: "dn.tg"; th: "dn.th"; ti: "dn.ti"; tj: "dn.tj"; tk: "dn.tk"; tl: "dn.tl"; tm: "dn.tm"; tn: "dn.tn"; to: "dn.to"; tp: "dn.tp"; tq: "dn.tq"; tr: "dn.tr"; ts: "dn.ts"; tt: "dn.tt"; tu: "dn.tu"; tv: "dn.tv"; tw: "dn.tw"; tx: "dn.tx"; ty: "dn.ty"; tz: "dn.tz"; ua: "dn.ua"; ub: "dn.ub"; uc: "dn.uc"; ud: "dn.ud"; ue: "dn.ue"; uf: "dn.uf"; ug: "dn.ug"; uh: "dn.uh"; ui: "dn.ui"; uj: "dn.uj"; uk: "dn.uk"; ul: "dn.ul"; um: "dn.um"; un: "dn.un"; uo: "dn.uo"; up: "dn.up"; uq: "dn.uq"; ur: "dn.ur"; us: "dn.us"; ut: "dn.ut"; uu: "dn.uu"; uv: "dn.uv"; uw: "dn.uw"; ux: "dn.ux"; uy: "dn.uy"; uz: "dn.uz"; va: "dn.va"; vb: "dn.vb"; vc: "dn.vc"; vd: "dn.vd"; ve: "dn.ve"; vf: "dn.vf"; vg: "dn.vg"; vh: "dn.vh"; vi: "dn.vi"; vj: "dn.vj"; vk: "dn.vk"; vl: "dn.vl"; vm: "dn.vm"; vn: "dn.vn"; vo: "dn.vo"; vp: "dn.vp"; vq: "dn.vq"; vr: "dn.vr"; vs: "dn.vs"; vt: "dn.vt"; vu: "dn.vu"; vv: "dn.vv"; vw: "dn.vw"; vx: "dn.vx"; vy: "dn.vy"; vz: "dn.vz"; wa: "dn.wa"; wb: "dn.wb"; wc: "dn.wc"; wd: "dn.wd"; we: "dn.we"; wf: "dn.wf"; wg: "dn.wg"; wh: "dn.wh"; wi: "dn.wi"; wj: "dn.wj"; wk: "dn.wk"; wl: "dn.wl"; wm: "dn.wm"; wn: "dn.wn"; wo: "dn.wo"; wp: "dn.wp"; wq: "dn.wq"; wr: "dn.wr"; ws: "dn.ws"; wt: "dn.wt"; wu: "dn.wu"; wv: "dn.wv"; ww: "dn.ww"; wx: "dn.wx"; wy: "dn.wy"; wz: "dn.wz"; xa: "dn.xa"; xb: "dn.xb"; xc: "dn.xc"; xd: "dn.xd"; xe: "dn.xe"; xf: "dn.xf"; xg: "dn.xg"; xh: "dn.xh"; xi: "dn.xi"; xj: "dn.xj"; xk: "dn.xk"; xl: "dn.xl"; xm: "dn.xm"; xn: "dn.xn"; xo: "dn.xo"; xp: "dn.xp"; xq: "dn.xq"; xr: "dn.xr"; xs: "dn.xs"; xt: "dn.xt"; xu: "dn.xu"; xv: "dn.xv"; xw: "dn.xw"; xx: "dn.xx"; xy: "dn.xy"; xz: "dn.xz"; ya: "dn.ya"; yb: "dn.yb"; yc: "dn.yc"; yd: "dn.yd"; ye: "dn.ye"; yf: "dn.yf"; yg: "dn.yg"; yh: "dn.yh"; yi: "dn.yi"; yj: "dn.yj"; yk: "dn.yk"; yl: "dn.yl"; ym: "dn.ym"; yn: "dn.yn"; yo: "dn.yo"; yp: "dn.yp"; yq: "dn.yq"; yr: "dn.yr"; ys: "dn.ys"; yt: "dn.yt"; yu: "dn.yu"; yv: "dn.yv"; yw: "dn.yw"; yx: "dn.yx"; yy: "dn.yy"; yz: "dn.yz"; za: "dn.za"; zb: "dn.zb"; zc: "dn.zc"; zd: "dn.zd"; ze: "dn.ze"; zf: "dn.zf"; zg: "dn.zg"; zh: "dn.zh"; zi: "dn.zi"; zj: "dn.zj"; zk: "dn.zk"; zl: "dn.zl"; zm: "dn.zm"; zn: "dn.zn"; zo: "dn.zo"; zp: "dn.zp"; zq: "dn.zq"; zr: "dn.zr"; zs: "dn.zs"; zt: "dn.zt"; zu: "dn.zu"; zv: "dn.zv"; zw: "dn.zw"; zx: "dn.zx"; zy: "dn.zy"; zz: "dn.zz"; }; do: { aa: "do.aa"; ab: "do.ab"; ac: "do.ac"; ad: "do.ad"; ae: "do.ae"; af: "do.af"; ag: "do.ag"; ah: "do.ah"; ai: "do.ai"; aj: "do.aj"; ak: "do.ak"; al: "do.al"; am: "do.am"; an: "do.an"; ao: "do.ao"; ap: "do.ap"; aq: "do.aq"; ar: "do.ar"; as: "do.as"; at: "do.at"; au: "do.au"; av: "do.av"; aw: "do.aw"; ax: "do.ax"; ay: "do.ay"; az: "do.az"; ba: "do.ba"; bb: "do.bb"; bc: "do.bc"; bd: "do.bd"; be: "do.be"; bf: "do.bf"; bg: "do.bg"; bh: "do.bh"; bi: "do.bi"; bj: "do.bj"; bk: "do.bk"; bl: "do.bl"; bm: "do.bm"; bn: "do.bn"; bo: "do.bo"; bp: "do.bp"; bq: "do.bq"; br: "do.br"; bs: "do.bs"; bt: "do.bt"; bu: "do.bu"; bv: "do.bv"; bw: "do.bw"; bx: "do.bx"; by: "do.by"; bz: "do.bz"; ca: "do.ca"; cb: "do.cb"; cc: "do.cc"; cd: "do.cd"; ce: "do.ce"; cf: "do.cf"; cg: "do.cg"; ch: "do.ch"; ci: "do.ci"; cj: "do.cj"; ck: "do.ck"; cl: "do.cl"; cm: "do.cm"; cn: "do.cn"; co: "do.co"; cp: "do.cp"; cq: "do.cq"; cr: "do.cr"; cs: "do.cs"; ct: "do.ct"; cu: "do.cu"; cv: "do.cv"; cw: "do.cw"; cx: "do.cx"; cy: "do.cy"; cz: "do.cz"; da: "do.da"; db: "do.db"; dc: "do.dc"; dd: "do.dd"; de: "do.de"; df: "do.df"; dg: "do.dg"; dh: "do.dh"; di: "do.di"; dj: "do.dj"; dk: "do.dk"; dl: "do.dl"; dm: "do.dm"; dn: "do.dn"; do: "do.do"; dp: "do.dp"; dq: "do.dq"; dr: "do.dr"; ds: "do.ds"; dt: "do.dt"; du: "do.du"; dv: "do.dv"; dw: "do.dw"; dx: "do.dx"; dy: "do.dy"; dz: "do.dz"; ea: "do.ea"; eb: "do.eb"; ec: "do.ec"; ed: "do.ed"; ee: "do.ee"; ef: "do.ef"; eg: "do.eg"; eh: "do.eh"; ei: "do.ei"; ej: "do.ej"; ek: "do.ek"; el: "do.el"; em: "do.em"; en: "do.en"; eo: "do.eo"; ep: "do.ep"; eq: "do.eq"; er: "do.er"; es: "do.es"; et: "do.et"; eu: "do.eu"; ev: "do.ev"; ew: "do.ew"; ex: "do.ex"; ey: "do.ey"; ez: "do.ez"; fa: "do.fa"; fb: "do.fb"; fc: "do.fc"; fd: "do.fd"; fe: "do.fe"; ff: "do.ff"; fg: "do.fg"; fh: "do.fh"; fi: "do.fi"; fj: "do.fj"; fk: "do.fk"; fl: "do.fl"; fm: "do.fm"; fn: "do.fn"; fo: "do.fo"; fp: "do.fp"; fq: "do.fq"; fr: "do.fr"; fs: "do.fs"; ft: "do.ft"; fu: "do.fu"; fv: "do.fv"; fw: "do.fw"; fx: "do.fx"; fy: "do.fy"; fz: "do.fz"; ga: "do.ga"; gb: "do.gb"; gc: "do.gc"; gd: "do.gd"; ge: "do.ge"; gf: "do.gf"; gg: "do.gg"; gh: "do.gh"; gi: "do.gi"; gj: "do.gj"; gk: "do.gk"; gl: "do.gl"; gm: "do.gm"; gn: "do.gn"; go: "do.go"; gp: "do.gp"; gq: "do.gq"; gr: "do.gr"; gs: "do.gs"; gt: "do.gt"; gu: "do.gu"; gv: "do.gv"; gw: "do.gw"; gx: "do.gx"; gy: "do.gy"; gz: "do.gz"; ha: "do.ha"; hb: "do.hb"; hc: "do.hc"; hd: "do.hd"; he: "do.he"; hf: "do.hf"; hg: "do.hg"; hh: "do.hh"; hi: "do.hi"; hj: "do.hj"; hk: "do.hk"; hl: "do.hl"; hm: "do.hm"; hn: "do.hn"; ho: "do.ho"; hp: "do.hp"; hq: "do.hq"; hr: "do.hr"; hs: "do.hs"; ht: "do.ht"; hu: "do.hu"; hv: "do.hv"; hw: "do.hw"; hx: "do.hx"; hy: "do.hy"; hz: "do.hz"; ia: "do.ia"; ib: "do.ib"; ic: "do.ic"; id: "do.id"; ie: "do.ie"; if: "do.if"; ig: "do.ig"; ih: "do.ih"; ii: "do.ii"; ij: "do.ij"; ik: "do.ik"; il: "do.il"; im: "do.im"; in: "do.in"; io: "do.io"; ip: "do.ip"; iq: "do.iq"; ir: "do.ir"; is: "do.is"; it: "do.it"; iu: "do.iu"; iv: "do.iv"; iw: "do.iw"; ix: "do.ix"; iy: "do.iy"; iz: "do.iz"; ja: "do.ja"; jb: "do.jb"; jc: "do.jc"; jd: "do.jd"; je: "do.je"; jf: "do.jf"; jg: "do.jg"; jh: "do.jh"; ji: "do.ji"; jj: "do.jj"; jk: "do.jk"; jl: "do.jl"; jm: "do.jm"; jn: "do.jn"; jo: "do.jo"; jp: "do.jp"; jq: "do.jq"; jr: "do.jr"; js: "do.js"; jt: "do.jt"; ju: "do.ju"; jv: "do.jv"; jw: "do.jw"; jx: "do.jx"; jy: "do.jy"; jz: "do.jz"; ka: "do.ka"; kb: "do.kb"; kc: "do.kc"; kd: "do.kd"; ke: "do.ke"; kf: "do.kf"; kg: "do.kg"; kh: "do.kh"; ki: "do.ki"; kj: "do.kj"; kk: "do.kk"; kl: "do.kl"; km: "do.km"; kn: "do.kn"; ko: "do.ko"; kp: "do.kp"; kq: "do.kq"; kr: "do.kr"; ks: "do.ks"; kt: "do.kt"; ku: "do.ku"; kv: "do.kv"; kw: "do.kw"; kx: "do.kx"; ky: "do.ky"; kz: "do.kz"; la: "do.la"; lb: "do.lb"; lc: "do.lc"; ld: "do.ld"; le: "do.le"; lf: "do.lf"; lg: "do.lg"; lh: "do.lh"; li: "do.li"; lj: "do.lj"; lk: "do.lk"; ll: "do.ll"; lm: "do.lm"; ln: "do.ln"; lo: "do.lo"; lp: "do.lp"; lq: "do.lq"; lr: "do.lr"; ls: "do.ls"; lt: "do.lt"; lu: "do.lu"; lv: "do.lv"; lw: "do.lw"; lx: "do.lx"; ly: "do.ly"; lz: "do.lz"; ma: "do.ma"; mb: "do.mb"; mc: "do.mc"; md: "do.md"; me: "do.me"; mf: "do.mf"; mg: "do.mg"; mh: "do.mh"; mi: "do.mi"; mj: "do.mj"; mk: "do.mk"; ml: "do.ml"; mm: "do.mm"; mn: "do.mn"; mo: "do.mo"; mp: "do.mp"; mq: "do.mq"; mr: "do.mr"; ms: "do.ms"; mt: "do.mt"; mu: "do.mu"; mv: "do.mv"; mw: "do.mw"; mx: "do.mx"; my: "do.my"; mz: "do.mz"; na: "do.na"; nb: "do.nb"; nc: "do.nc"; nd: "do.nd"; ne: "do.ne"; nf: "do.nf"; ng: "do.ng"; nh: "do.nh"; ni: "do.ni"; nj: "do.nj"; nk: "do.nk"; nl: "do.nl"; nm: "do.nm"; nn: "do.nn"; no: "do.no"; np: "do.np"; nq: "do.nq"; nr: "do.nr"; ns: "do.ns"; nt: "do.nt"; nu: "do.nu"; nv: "do.nv"; nw: "do.nw"; nx: "do.nx"; ny: "do.ny"; nz: "do.nz"; oa: "do.oa"; ob: "do.ob"; oc: "do.oc"; od: "do.od"; oe: "do.oe"; of: "do.of"; og: "do.og"; oh: "do.oh"; oi: "do.oi"; oj: "do.oj"; ok: "do.ok"; ol: "do.ol"; om: "do.om"; on: "do.on"; oo: "do.oo"; op: "do.op"; oq: "do.oq"; or: "do.or"; os: "do.os"; ot: "do.ot"; ou: "do.ou"; ov: "do.ov"; ow: "do.ow"; ox: "do.ox"; oy: "do.oy"; oz: "do.oz"; pa: "do.pa"; pb: "do.pb"; pc: "do.pc"; pd: "do.pd"; pe: "do.pe"; pf: "do.pf"; pg: "do.pg"; ph: "do.ph"; pi: "do.pi"; pj: "do.pj"; pk: "do.pk"; pl: "do.pl"; pm: "do.pm"; pn: "do.pn"; po: "do.po"; pp: "do.pp"; pq: "do.pq"; pr: "do.pr"; ps: "do.ps"; pt: "do.pt"; pu: "do.pu"; pv: "do.pv"; pw: "do.pw"; px: "do.px"; py: "do.py"; pz: "do.pz"; qa: "do.qa"; qb: "do.qb"; qc: "do.qc"; qd: "do.qd"; qe: "do.qe"; qf: "do.qf"; qg: "do.qg"; qh: "do.qh"; qi: "do.qi"; qj: "do.qj"; qk: "do.qk"; ql: "do.ql"; qm: "do.qm"; qn: "do.qn"; qo: "do.qo"; qp: "do.qp"; qq: "do.qq"; qr: "do.qr"; qs: "do.qs"; qt: "do.qt"; qu: "do.qu"; qv: "do.qv"; qw: "do.qw"; qx: "do.qx"; qy: "do.qy"; qz: "do.qz"; ra: "do.ra"; rb: "do.rb"; rc: "do.rc"; rd: "do.rd"; re: "do.re"; rf: "do.rf"; rg: "do.rg"; rh: "do.rh"; ri: "do.ri"; rj: "do.rj"; rk: "do.rk"; rl: "do.rl"; rm: "do.rm"; rn: "do.rn"; ro: "do.ro"; rp: "do.rp"; rq: "do.rq"; rr: "do.rr"; rs: "do.rs"; rt: "do.rt"; ru: "do.ru"; rv: "do.rv"; rw: "do.rw"; rx: "do.rx"; ry: "do.ry"; rz: "do.rz"; sa: "do.sa"; sb: "do.sb"; sc: "do.sc"; sd: "do.sd"; se: "do.se"; sf: "do.sf"; sg: "do.sg"; sh: "do.sh"; si: "do.si"; sj: "do.sj"; sk: "do.sk"; sl: "do.sl"; sm: "do.sm"; sn: "do.sn"; so: "do.so"; sp: "do.sp"; sq: "do.sq"; sr: "do.sr"; ss: "do.ss"; st: "do.st"; su: "do.su"; sv: "do.sv"; sw: "do.sw"; sx: "do.sx"; sy: "do.sy"; sz: "do.sz"; ta: "do.ta"; tb: "do.tb"; tc: "do.tc"; td: "do.td"; te: "do.te"; tf: "do.tf"; tg: "do.tg"; th: "do.th"; ti: "do.ti"; tj: "do.tj"; tk: "do.tk"; tl: "do.tl"; tm: "do.tm"; tn: "do.tn"; to: "do.to"; tp: "do.tp"; tq: "do.tq"; tr: "do.tr"; ts: "do.ts"; tt: "do.tt"; tu: "do.tu"; tv: "do.tv"; tw: "do.tw"; tx: "do.tx"; ty: "do.ty"; tz: "do.tz"; ua: "do.ua"; ub: "do.ub"; uc: "do.uc"; ud: "do.ud"; ue: "do.ue"; uf: "do.uf"; ug: "do.ug"; uh: "do.uh"; ui: "do.ui"; uj: "do.uj"; uk: "do.uk"; ul: "do.ul"; um: "do.um"; un: "do.un"; uo: "do.uo"; up: "do.up"; uq: "do.uq"; ur: "do.ur"; us: "do.us"; ut: "do.ut"; uu: "do.uu"; uv: "do.uv"; uw: "do.uw"; ux: "do.ux"; uy: "do.uy"; uz: "do.uz"; va: "do.va"; vb: "do.vb"; vc: "do.vc"; vd: "do.vd"; ve: "do.ve"; vf: "do.vf"; vg: "do.vg"; vh: "do.vh"; vi: "do.vi"; vj: "do.vj"; vk: "do.vk"; vl: "do.vl"; vm: "do.vm"; vn: "do.vn"; vo: "do.vo"; vp: "do.vp"; vq: "do.vq"; vr: "do.vr"; vs: "do.vs"; vt: "do.vt"; vu: "do.vu"; vv: "do.vv"; vw: "do.vw"; vx: "do.vx"; vy: "do.vy"; vz: "do.vz"; wa: "do.wa"; wb: "do.wb"; wc: "do.wc"; wd: "do.wd"; we: "do.we"; wf: "do.wf"; wg: "do.wg"; wh: "do.wh"; wi: "do.wi"; wj: "do.wj"; wk: "do.wk"; wl: "do.wl"; wm: "do.wm"; wn: "do.wn"; wo: "do.wo"; wp: "do.wp"; wq: "do.wq"; wr: "do.wr"; ws: "do.ws"; wt: "do.wt"; wu: "do.wu"; wv: "do.wv"; ww: "do.ww"; wx: "do.wx"; wy: "do.wy"; wz: "do.wz"; xa: "do.xa"; xb: "do.xb"; xc: "do.xc"; xd: "do.xd"; xe: "do.xe"; xf: "do.xf"; xg: "do.xg"; xh: "do.xh"; xi: "do.xi"; xj: "do.xj"; xk: "do.xk"; xl: "do.xl"; xm: "do.xm"; xn: "do.xn"; xo: "do.xo"; xp: "do.xp"; xq: "do.xq"; xr: "do.xr"; xs: "do.xs"; xt: "do.xt"; xu: "do.xu"; xv: "do.xv"; xw: "do.xw"; xx: "do.xx"; xy: "do.xy"; xz: "do.xz"; ya: "do.ya"; yb: "do.yb"; yc: "do.yc"; yd: "do.yd"; ye: "do.ye"; yf: "do.yf"; yg: "do.yg"; yh: "do.yh"; yi: "do.yi"; yj: "do.yj"; yk: "do.yk"; yl: "do.yl"; ym: "do.ym"; yn: "do.yn"; yo: "do.yo"; yp: "do.yp"; yq: "do.yq"; yr: "do.yr"; ys: "do.ys"; yt: "do.yt"; yu: "do.yu"; yv: "do.yv"; yw: "do.yw"; yx: "do.yx"; yy: "do.yy"; yz: "do.yz"; za: "do.za"; zb: "do.zb"; zc: "do.zc"; zd: "do.zd"; ze: "do.ze"; zf: "do.zf"; zg: "do.zg"; zh: "do.zh"; zi: "do.zi"; zj: "do.zj"; zk: "do.zk"; zl: "do.zl"; zm: "do.zm"; zn: "do.zn"; zo: "do.zo"; zp: "do.zp"; zq: "do.zq"; zr: "do.zr"; zs: "do.zs"; zt: "do.zt"; zu: "do.zu"; zv: "do.zv"; zw: "do.zw"; zx: "do.zx"; zy: "do.zy"; zz: "do.zz"; }; dp: { aa: "dp.aa"; ab: "dp.ab"; ac: "dp.ac"; ad: "dp.ad"; ae: "dp.ae"; af: "dp.af"; ag: "dp.ag"; ah: "dp.ah"; ai: "dp.ai"; aj: "dp.aj"; ak: "dp.ak"; al: "dp.al"; am: "dp.am"; an: "dp.an"; ao: "dp.ao"; ap: "dp.ap"; aq: "dp.aq"; ar: "dp.ar"; as: "dp.as"; at: "dp.at"; au: "dp.au"; av: "dp.av"; aw: "dp.aw"; ax: "dp.ax"; ay: "dp.ay"; az: "dp.az"; ba: "dp.ba"; bb: "dp.bb"; bc: "dp.bc"; bd: "dp.bd"; be: "dp.be"; bf: "dp.bf"; bg: "dp.bg"; bh: "dp.bh"; bi: "dp.bi"; bj: "dp.bj"; bk: "dp.bk"; bl: "dp.bl"; bm: "dp.bm"; bn: "dp.bn"; bo: "dp.bo"; bp: "dp.bp"; bq: "dp.bq"; br: "dp.br"; bs: "dp.bs"; bt: "dp.bt"; bu: "dp.bu"; bv: "dp.bv"; bw: "dp.bw"; bx: "dp.bx"; by: "dp.by"; bz: "dp.bz"; ca: "dp.ca"; cb: "dp.cb"; cc: "dp.cc"; cd: "dp.cd"; ce: "dp.ce"; cf: "dp.cf"; cg: "dp.cg"; ch: "dp.ch"; ci: "dp.ci"; cj: "dp.cj"; ck: "dp.ck"; cl: "dp.cl"; cm: "dp.cm"; cn: "dp.cn"; co: "dp.co"; cp: "dp.cp"; cq: "dp.cq"; cr: "dp.cr"; cs: "dp.cs"; ct: "dp.ct"; cu: "dp.cu"; cv: "dp.cv"; cw: "dp.cw"; cx: "dp.cx"; cy: "dp.cy"; cz: "dp.cz"; da: "dp.da"; db: "dp.db"; dc: "dp.dc"; dd: "dp.dd"; de: "dp.de"; df: "dp.df"; dg: "dp.dg"; dh: "dp.dh"; di: "dp.di"; dj: "dp.dj"; dk: "dp.dk"; dl: "dp.dl"; dm: "dp.dm"; dn: "dp.dn"; do: "dp.do"; dp: "dp.dp"; dq: "dp.dq"; dr: "dp.dr"; ds: "dp.ds"; dt: "dp.dt"; du: "dp.du"; dv: "dp.dv"; dw: "dp.dw"; dx: "dp.dx"; dy: "dp.dy"; dz: "dp.dz"; ea: "dp.ea"; eb: "dp.eb"; ec: "dp.ec"; ed: "dp.ed"; ee: "dp.ee"; ef: "dp.ef"; eg: "dp.eg"; eh: "dp.eh"; ei: "dp.ei"; ej: "dp.ej"; ek: "dp.ek"; el: "dp.el"; em: "dp.em"; en: "dp.en"; eo: "dp.eo"; ep: "dp.ep"; eq: "dp.eq"; er: "dp.er"; es: "dp.es"; et: "dp.et"; eu: "dp.eu"; ev: "dp.ev"; ew: "dp.ew"; ex: "dp.ex"; ey: "dp.ey"; ez: "dp.ez"; fa: "dp.fa"; fb: "dp.fb"; fc: "dp.fc"; fd: "dp.fd"; fe: "dp.fe"; ff: "dp.ff"; fg: "dp.fg"; fh: "dp.fh"; fi: "dp.fi"; fj: "dp.fj"; fk: "dp.fk"; fl: "dp.fl"; fm: "dp.fm"; fn: "dp.fn"; fo: "dp.fo"; fp: "dp.fp"; fq: "dp.fq"; fr: "dp.fr"; fs: "dp.fs"; ft: "dp.ft"; fu: "dp.fu"; fv: "dp.fv"; fw: "dp.fw"; fx: "dp.fx"; fy: "dp.fy"; fz: "dp.fz"; ga: "dp.ga"; gb: "dp.gb"; gc: "dp.gc"; gd: "dp.gd"; ge: "dp.ge"; gf: "dp.gf"; gg: "dp.gg"; gh: "dp.gh"; gi: "dp.gi"; gj: "dp.gj"; gk: "dp.gk"; gl: "dp.gl"; gm: "dp.gm"; gn: "dp.gn"; go: "dp.go"; gp: "dp.gp"; gq: "dp.gq"; gr: "dp.gr"; gs: "dp.gs"; gt: "dp.gt"; gu: "dp.gu"; gv: "dp.gv"; gw: "dp.gw"; gx: "dp.gx"; gy: "dp.gy"; gz: "dp.gz"; ha: "dp.ha"; hb: "dp.hb"; hc: "dp.hc"; hd: "dp.hd"; he: "dp.he"; hf: "dp.hf"; hg: "dp.hg"; hh: "dp.hh"; hi: "dp.hi"; hj: "dp.hj"; hk: "dp.hk"; hl: "dp.hl"; hm: "dp.hm"; hn: "dp.hn"; ho: "dp.ho"; hp: "dp.hp"; hq: "dp.hq"; hr: "dp.hr"; hs: "dp.hs"; ht: "dp.ht"; hu: "dp.hu"; hv: "dp.hv"; hw: "dp.hw"; hx: "dp.hx"; hy: "dp.hy"; hz: "dp.hz"; ia: "dp.ia"; ib: "dp.ib"; ic: "dp.ic"; id: "dp.id"; ie: "dp.ie"; if: "dp.if"; ig: "dp.ig"; ih: "dp.ih"; ii: "dp.ii"; ij: "dp.ij"; ik: "dp.ik"; il: "dp.il"; im: "dp.im"; in: "dp.in"; io: "dp.io"; ip: "dp.ip"; iq: "dp.iq"; ir: "dp.ir"; is: "dp.is"; it: "dp.it"; iu: "dp.iu"; iv: "dp.iv"; iw: "dp.iw"; ix: "dp.ix"; iy: "dp.iy"; iz: "dp.iz"; ja: "dp.ja"; jb: "dp.jb"; jc: "dp.jc"; jd: "dp.jd"; je: "dp.je"; jf: "dp.jf"; jg: "dp.jg"; jh: "dp.jh"; ji: "dp.ji"; jj: "dp.jj"; jk: "dp.jk"; jl: "dp.jl"; jm: "dp.jm"; jn: "dp.jn"; jo: "dp.jo"; jp: "dp.jp"; jq: "dp.jq"; jr: "dp.jr"; js: "dp.js"; jt: "dp.jt"; ju: "dp.ju"; jv: "dp.jv"; jw: "dp.jw"; jx: "dp.jx"; jy: "dp.jy"; jz: "dp.jz"; ka: "dp.ka"; kb: "dp.kb"; kc: "dp.kc"; kd: "dp.kd"; ke: "dp.ke"; kf: "dp.kf"; kg: "dp.kg"; kh: "dp.kh"; ki: "dp.ki"; kj: "dp.kj"; kk: "dp.kk"; kl: "dp.kl"; km: "dp.km"; kn: "dp.kn"; ko: "dp.ko"; kp: "dp.kp"; kq: "dp.kq"; kr: "dp.kr"; ks: "dp.ks"; kt: "dp.kt"; ku: "dp.ku"; kv: "dp.kv"; kw: "dp.kw"; kx: "dp.kx"; ky: "dp.ky"; kz: "dp.kz"; la: "dp.la"; lb: "dp.lb"; lc: "dp.lc"; ld: "dp.ld"; le: "dp.le"; lf: "dp.lf"; lg: "dp.lg"; lh: "dp.lh"; li: "dp.li"; lj: "dp.lj"; lk: "dp.lk"; ll: "dp.ll"; lm: "dp.lm"; ln: "dp.ln"; lo: "dp.lo"; lp: "dp.lp"; lq: "dp.lq"; lr: "dp.lr"; ls: "dp.ls"; lt: "dp.lt"; lu: "dp.lu"; lv: "dp.lv"; lw: "dp.lw"; lx: "dp.lx"; ly: "dp.ly"; lz: "dp.lz"; ma: "dp.ma"; mb: "dp.mb"; mc: "dp.mc"; md: "dp.md"; me: "dp.me"; mf: "dp.mf"; mg: "dp.mg"; mh: "dp.mh"; mi: "dp.mi"; mj: "dp.mj"; mk: "dp.mk"; ml: "dp.ml"; mm: "dp.mm"; mn: "dp.mn"; mo: "dp.mo"; mp: "dp.mp"; mq: "dp.mq"; mr: "dp.mr"; ms: "dp.ms"; mt: "dp.mt"; mu: "dp.mu"; mv: "dp.mv"; mw: "dp.mw"; mx: "dp.mx"; my: "dp.my"; mz: "dp.mz"; na: "dp.na"; nb: "dp.nb"; nc: "dp.nc"; nd: "dp.nd"; ne: "dp.ne"; nf: "dp.nf"; ng: "dp.ng"; nh: "dp.nh"; ni: "dp.ni"; nj: "dp.nj"; nk: "dp.nk"; nl: "dp.nl"; nm: "dp.nm"; nn: "dp.nn"; no: "dp.no"; np: "dp.np"; nq: "dp.nq"; nr: "dp.nr"; ns: "dp.ns"; nt: "dp.nt"; nu: "dp.nu"; nv: "dp.nv"; nw: "dp.nw"; nx: "dp.nx"; ny: "dp.ny"; nz: "dp.nz"; oa: "dp.oa"; ob: "dp.ob"; oc: "dp.oc"; od: "dp.od"; oe: "dp.oe"; of: "dp.of"; og: "dp.og"; oh: "dp.oh"; oi: "dp.oi"; oj: "dp.oj"; ok: "dp.ok"; ol: "dp.ol"; om: "dp.om"; on: "dp.on"; oo: "dp.oo"; op: "dp.op"; oq: "dp.oq"; or: "dp.or"; os: "dp.os"; ot: "dp.ot"; ou: "dp.ou"; ov: "dp.ov"; ow: "dp.ow"; ox: "dp.ox"; oy: "dp.oy"; oz: "dp.oz"; pa: "dp.pa"; pb: "dp.pb"; pc: "dp.pc"; pd: "dp.pd"; pe: "dp.pe"; pf: "dp.pf"; pg: "dp.pg"; ph: "dp.ph"; pi: "dp.pi"; pj: "dp.pj"; pk: "dp.pk"; pl: "dp.pl"; pm: "dp.pm"; pn: "dp.pn"; po: "dp.po"; pp: "dp.pp"; pq: "dp.pq"; pr: "dp.pr"; ps: "dp.ps"; pt: "dp.pt"; pu: "dp.pu"; pv: "dp.pv"; pw: "dp.pw"; px: "dp.px"; py: "dp.py"; pz: "dp.pz"; qa: "dp.qa"; qb: "dp.qb"; qc: "dp.qc"; qd: "dp.qd"; qe: "dp.qe"; qf: "dp.qf"; qg: "dp.qg"; qh: "dp.qh"; qi: "dp.qi"; qj: "dp.qj"; qk: "dp.qk"; ql: "dp.ql"; qm: "dp.qm"; qn: "dp.qn"; qo: "dp.qo"; qp: "dp.qp"; qq: "dp.qq"; qr: "dp.qr"; qs: "dp.qs"; qt: "dp.qt"; qu: "dp.qu"; qv: "dp.qv"; qw: "dp.qw"; qx: "dp.qx"; qy: "dp.qy"; qz: "dp.qz"; ra: "dp.ra"; rb: "dp.rb"; rc: "dp.rc"; rd: "dp.rd"; re: "dp.re"; rf: "dp.rf"; rg: "dp.rg"; rh: "dp.rh"; ri: "dp.ri"; rj: "dp.rj"; rk: "dp.rk"; rl: "dp.rl"; rm: "dp.rm"; rn: "dp.rn"; ro: "dp.ro"; rp: "dp.rp"; rq: "dp.rq"; rr: "dp.rr"; rs: "dp.rs"; rt: "dp.rt"; ru: "dp.ru"; rv: "dp.rv"; rw: "dp.rw"; rx: "dp.rx"; ry: "dp.ry"; rz: "dp.rz"; sa: "dp.sa"; sb: "dp.sb"; sc: "dp.sc"; sd: "dp.sd"; se: "dp.se"; sf: "dp.sf"; sg: "dp.sg"; sh: "dp.sh"; si: "dp.si"; sj: "dp.sj"; sk: "dp.sk"; sl: "dp.sl"; sm: "dp.sm"; sn: "dp.sn"; so: "dp.so"; sp: "dp.sp"; sq: "dp.sq"; sr: "dp.sr"; ss: "dp.ss"; st: "dp.st"; su: "dp.su"; sv: "dp.sv"; sw: "dp.sw"; sx: "dp.sx"; sy: "dp.sy"; sz: "dp.sz"; ta: "dp.ta"; tb: "dp.tb"; tc: "dp.tc"; td: "dp.td"; te: "dp.te"; tf: "dp.tf"; tg: "dp.tg"; th: "dp.th"; ti: "dp.ti"; tj: "dp.tj"; tk: "dp.tk"; tl: "dp.tl"; tm: "dp.tm"; tn: "dp.tn"; to: "dp.to"; tp: "dp.tp"; tq: "dp.tq"; tr: "dp.tr"; ts: "dp.ts"; tt: "dp.tt"; tu: "dp.tu"; tv: "dp.tv"; tw: "dp.tw"; tx: "dp.tx"; ty: "dp.ty"; tz: "dp.tz"; ua: "dp.ua"; ub: "dp.ub"; uc: "dp.uc"; ud: "dp.ud"; ue: "dp.ue"; uf: "dp.uf"; ug: "dp.ug"; uh: "dp.uh"; ui: "dp.ui"; uj: "dp.uj"; uk: "dp.uk"; ul: "dp.ul"; um: "dp.um"; un: "dp.un"; uo: "dp.uo"; up: "dp.up"; uq: "dp.uq"; ur: "dp.ur"; us: "dp.us"; ut: "dp.ut"; uu: "dp.uu"; uv: "dp.uv"; uw: "dp.uw"; ux: "dp.ux"; uy: "dp.uy"; uz: "dp.uz"; va: "dp.va"; vb: "dp.vb"; vc: "dp.vc"; vd: "dp.vd"; ve: "dp.ve"; vf: "dp.vf"; vg: "dp.vg"; vh: "dp.vh"; vi: "dp.vi"; vj: "dp.vj"; vk: "dp.vk"; vl: "dp.vl"; vm: "dp.vm"; vn: "dp.vn"; vo: "dp.vo"; vp: "dp.vp"; vq: "dp.vq"; vr: "dp.vr"; vs: "dp.vs"; vt: "dp.vt"; vu: "dp.vu"; vv: "dp.vv"; vw: "dp.vw"; vx: "dp.vx"; vy: "dp.vy"; vz: "dp.vz"; wa: "dp.wa"; wb: "dp.wb"; wc: "dp.wc"; wd: "dp.wd"; we: "dp.we"; wf: "dp.wf"; wg: "dp.wg"; wh: "dp.wh"; wi: "dp.wi"; wj: "dp.wj"; wk: "dp.wk"; wl: "dp.wl"; wm: "dp.wm"; wn: "dp.wn"; wo: "dp.wo"; wp: "dp.wp"; wq: "dp.wq"; wr: "dp.wr"; ws: "dp.ws"; wt: "dp.wt"; wu: "dp.wu"; wv: "dp.wv"; ww: "dp.ww"; wx: "dp.wx"; wy: "dp.wy"; wz: "dp.wz"; xa: "dp.xa"; xb: "dp.xb"; xc: "dp.xc"; xd: "dp.xd"; xe: "dp.xe"; xf: "dp.xf"; xg: "dp.xg"; xh: "dp.xh"; xi: "dp.xi"; xj: "dp.xj"; xk: "dp.xk"; xl: "dp.xl"; xm: "dp.xm"; xn: "dp.xn"; xo: "dp.xo"; xp: "dp.xp"; xq: "dp.xq"; xr: "dp.xr"; xs: "dp.xs"; xt: "dp.xt"; xu: "dp.xu"; xv: "dp.xv"; xw: "dp.xw"; xx: "dp.xx"; xy: "dp.xy"; xz: "dp.xz"; ya: "dp.ya"; yb: "dp.yb"; yc: "dp.yc"; yd: "dp.yd"; ye: "dp.ye"; yf: "dp.yf"; yg: "dp.yg"; yh: "dp.yh"; yi: "dp.yi"; yj: "dp.yj"; yk: "dp.yk"; yl: "dp.yl"; ym: "dp.ym"; yn: "dp.yn"; yo: "dp.yo"; yp: "dp.yp"; yq: "dp.yq"; yr: "dp.yr"; ys: "dp.ys"; yt: "dp.yt"; yu: "dp.yu"; yv: "dp.yv"; yw: "dp.yw"; yx: "dp.yx"; yy: "dp.yy"; yz: "dp.yz"; za: "dp.za"; zb: "dp.zb"; zc: "dp.zc"; zd: "dp.zd"; ze: "dp.ze"; zf: "dp.zf"; zg: "dp.zg"; zh: "dp.zh"; zi: "dp.zi"; zj: "dp.zj"; zk: "dp.zk"; zl: "dp.zl"; zm: "dp.zm"; zn: "dp.zn"; zo: "dp.zo"; zp: "dp.zp"; zq: "dp.zq"; zr: "dp.zr"; zs: "dp.zs"; zt: "dp.zt"; zu: "dp.zu"; zv: "dp.zv"; zw: "dp.zw"; zx: "dp.zx"; zy: "dp.zy"; zz: "dp.zz"; }; dq: { aa: "dq.aa"; ab: "dq.ab"; ac: "dq.ac"; ad: "dq.ad"; ae: "dq.ae"; af: "dq.af"; ag: "dq.ag"; ah: "dq.ah"; ai: "dq.ai"; aj: "dq.aj"; ak: "dq.ak"; al: "dq.al"; am: "dq.am"; an: "dq.an"; ao: "dq.ao"; ap: "dq.ap"; aq: "dq.aq"; ar: "dq.ar"; as: "dq.as"; at: "dq.at"; au: "dq.au"; av: "dq.av"; aw: "dq.aw"; ax: "dq.ax"; ay: "dq.ay"; az: "dq.az"; ba: "dq.ba"; bb: "dq.bb"; bc: "dq.bc"; bd: "dq.bd"; be: "dq.be"; bf: "dq.bf"; bg: "dq.bg"; bh: "dq.bh"; bi: "dq.bi"; bj: "dq.bj"; bk: "dq.bk"; bl: "dq.bl"; bm: "dq.bm"; bn: "dq.bn"; bo: "dq.bo"; bp: "dq.bp"; bq: "dq.bq"; br: "dq.br"; bs: "dq.bs"; bt: "dq.bt"; bu: "dq.bu"; bv: "dq.bv"; bw: "dq.bw"; bx: "dq.bx"; by: "dq.by"; bz: "dq.bz"; ca: "dq.ca"; cb: "dq.cb"; cc: "dq.cc"; cd: "dq.cd"; ce: "dq.ce"; cf: "dq.cf"; cg: "dq.cg"; ch: "dq.ch"; ci: "dq.ci"; cj: "dq.cj"; ck: "dq.ck"; cl: "dq.cl"; cm: "dq.cm"; cn: "dq.cn"; co: "dq.co"; cp: "dq.cp"; cq: "dq.cq"; cr: "dq.cr"; cs: "dq.cs"; ct: "dq.ct"; cu: "dq.cu"; cv: "dq.cv"; cw: "dq.cw"; cx: "dq.cx"; cy: "dq.cy"; cz: "dq.cz"; da: "dq.da"; db: "dq.db"; dc: "dq.dc"; dd: "dq.dd"; de: "dq.de"; df: "dq.df"; dg: "dq.dg"; dh: "dq.dh"; di: "dq.di"; dj: "dq.dj"; dk: "dq.dk"; dl: "dq.dl"; dm: "dq.dm"; dn: "dq.dn"; do: "dq.do"; dp: "dq.dp"; dq: "dq.dq"; dr: "dq.dr"; ds: "dq.ds"; dt: "dq.dt"; du: "dq.du"; dv: "dq.dv"; dw: "dq.dw"; dx: "dq.dx"; dy: "dq.dy"; dz: "dq.dz"; ea: "dq.ea"; eb: "dq.eb"; ec: "dq.ec"; ed: "dq.ed"; ee: "dq.ee"; ef: "dq.ef"; eg: "dq.eg"; eh: "dq.eh"; ei: "dq.ei"; ej: "dq.ej"; ek: "dq.ek"; el: "dq.el"; em: "dq.em"; en: "dq.en"; eo: "dq.eo"; ep: "dq.ep"; eq: "dq.eq"; er: "dq.er"; es: "dq.es"; et: "dq.et"; eu: "dq.eu"; ev: "dq.ev"; ew: "dq.ew"; ex: "dq.ex"; ey: "dq.ey"; ez: "dq.ez"; fa: "dq.fa"; fb: "dq.fb"; fc: "dq.fc"; fd: "dq.fd"; fe: "dq.fe"; ff: "dq.ff"; fg: "dq.fg"; fh: "dq.fh"; fi: "dq.fi"; fj: "dq.fj"; fk: "dq.fk"; fl: "dq.fl"; fm: "dq.fm"; fn: "dq.fn"; fo: "dq.fo"; fp: "dq.fp"; fq: "dq.fq"; fr: "dq.fr"; fs: "dq.fs"; ft: "dq.ft"; fu: "dq.fu"; fv: "dq.fv"; fw: "dq.fw"; fx: "dq.fx"; fy: "dq.fy"; fz: "dq.fz"; ga: "dq.ga"; gb: "dq.gb"; gc: "dq.gc"; gd: "dq.gd"; ge: "dq.ge"; gf: "dq.gf"; gg: "dq.gg"; gh: "dq.gh"; gi: "dq.gi"; gj: "dq.gj"; gk: "dq.gk"; gl: "dq.gl"; gm: "dq.gm"; gn: "dq.gn"; go: "dq.go"; gp: "dq.gp"; gq: "dq.gq"; gr: "dq.gr"; gs: "dq.gs"; gt: "dq.gt"; gu: "dq.gu"; gv: "dq.gv"; gw: "dq.gw"; gx: "dq.gx"; gy: "dq.gy"; gz: "dq.gz"; ha: "dq.ha"; hb: "dq.hb"; hc: "dq.hc"; hd: "dq.hd"; he: "dq.he"; hf: "dq.hf"; hg: "dq.hg"; hh: "dq.hh"; hi: "dq.hi"; hj: "dq.hj"; hk: "dq.hk"; hl: "dq.hl"; hm: "dq.hm"; hn: "dq.hn"; ho: "dq.ho"; hp: "dq.hp"; hq: "dq.hq"; hr: "dq.hr"; hs: "dq.hs"; ht: "dq.ht"; hu: "dq.hu"; hv: "dq.hv"; hw: "dq.hw"; hx: "dq.hx"; hy: "dq.hy"; hz: "dq.hz"; ia: "dq.ia"; ib: "dq.ib"; ic: "dq.ic"; id: "dq.id"; ie: "dq.ie"; if: "dq.if"; ig: "dq.ig"; ih: "dq.ih"; ii: "dq.ii"; ij: "dq.ij"; ik: "dq.ik"; il: "dq.il"; im: "dq.im"; in: "dq.in"; io: "dq.io"; ip: "dq.ip"; iq: "dq.iq"; ir: "dq.ir"; is: "dq.is"; it: "dq.it"; iu: "dq.iu"; iv: "dq.iv"; iw: "dq.iw"; ix: "dq.ix"; iy: "dq.iy"; iz: "dq.iz"; ja: "dq.ja"; jb: "dq.jb"; jc: "dq.jc"; jd: "dq.jd"; je: "dq.je"; jf: "dq.jf"; jg: "dq.jg"; jh: "dq.jh"; ji: "dq.ji"; jj: "dq.jj"; jk: "dq.jk"; jl: "dq.jl"; jm: "dq.jm"; jn: "dq.jn"; jo: "dq.jo"; jp: "dq.jp"; jq: "dq.jq"; jr: "dq.jr"; js: "dq.js"; jt: "dq.jt"; ju: "dq.ju"; jv: "dq.jv"; jw: "dq.jw"; jx: "dq.jx"; jy: "dq.jy"; jz: "dq.jz"; ka: "dq.ka"; kb: "dq.kb"; kc: "dq.kc"; kd: "dq.kd"; ke: "dq.ke"; kf: "dq.kf"; kg: "dq.kg"; kh: "dq.kh"; ki: "dq.ki"; kj: "dq.kj"; kk: "dq.kk"; kl: "dq.kl"; km: "dq.km"; kn: "dq.kn"; ko: "dq.ko"; kp: "dq.kp"; kq: "dq.kq"; kr: "dq.kr"; ks: "dq.ks"; kt: "dq.kt"; ku: "dq.ku"; kv: "dq.kv"; kw: "dq.kw"; kx: "dq.kx"; ky: "dq.ky"; kz: "dq.kz"; la: "dq.la"; lb: "dq.lb"; lc: "dq.lc"; ld: "dq.ld"; le: "dq.le"; lf: "dq.lf"; lg: "dq.lg"; lh: "dq.lh"; li: "dq.li"; lj: "dq.lj"; lk: "dq.lk"; ll: "dq.ll"; lm: "dq.lm"; ln: "dq.ln"; lo: "dq.lo"; lp: "dq.lp"; lq: "dq.lq"; lr: "dq.lr"; ls: "dq.ls"; lt: "dq.lt"; lu: "dq.lu"; lv: "dq.lv"; lw: "dq.lw"; lx: "dq.lx"; ly: "dq.ly"; lz: "dq.lz"; ma: "dq.ma"; mb: "dq.mb"; mc: "dq.mc"; md: "dq.md"; me: "dq.me"; mf: "dq.mf"; mg: "dq.mg"; mh: "dq.mh"; mi: "dq.mi"; mj: "dq.mj"; mk: "dq.mk"; ml: "dq.ml"; mm: "dq.mm"; mn: "dq.mn"; mo: "dq.mo"; mp: "dq.mp"; mq: "dq.mq"; mr: "dq.mr"; ms: "dq.ms"; mt: "dq.mt"; mu: "dq.mu"; mv: "dq.mv"; mw: "dq.mw"; mx: "dq.mx"; my: "dq.my"; mz: "dq.mz"; na: "dq.na"; nb: "dq.nb"; nc: "dq.nc"; nd: "dq.nd"; ne: "dq.ne"; nf: "dq.nf"; ng: "dq.ng"; nh: "dq.nh"; ni: "dq.ni"; nj: "dq.nj"; nk: "dq.nk"; nl: "dq.nl"; nm: "dq.nm"; nn: "dq.nn"; no: "dq.no"; np: "dq.np"; nq: "dq.nq"; nr: "dq.nr"; ns: "dq.ns"; nt: "dq.nt"; nu: "dq.nu"; nv: "dq.nv"; nw: "dq.nw"; nx: "dq.nx"; ny: "dq.ny"; nz: "dq.nz"; oa: "dq.oa"; ob: "dq.ob"; oc: "dq.oc"; od: "dq.od"; oe: "dq.oe"; of: "dq.of"; og: "dq.og"; oh: "dq.oh"; oi: "dq.oi"; oj: "dq.oj"; ok: "dq.ok"; ol: "dq.ol"; om: "dq.om"; on: "dq.on"; oo: "dq.oo"; op: "dq.op"; oq: "dq.oq"; or: "dq.or"; os: "dq.os"; ot: "dq.ot"; ou: "dq.ou"; ov: "dq.ov"; ow: "dq.ow"; ox: "dq.ox"; oy: "dq.oy"; oz: "dq.oz"; pa: "dq.pa"; pb: "dq.pb"; pc: "dq.pc"; pd: "dq.pd"; pe: "dq.pe"; pf: "dq.pf"; pg: "dq.pg"; ph: "dq.ph"; pi: "dq.pi"; pj: "dq.pj"; pk: "dq.pk"; pl: "dq.pl"; pm: "dq.pm"; pn: "dq.pn"; po: "dq.po"; pp: "dq.pp"; pq: "dq.pq"; pr: "dq.pr"; ps: "dq.ps"; pt: "dq.pt"; pu: "dq.pu"; pv: "dq.pv"; pw: "dq.pw"; px: "dq.px"; py: "dq.py"; pz: "dq.pz"; qa: "dq.qa"; qb: "dq.qb"; qc: "dq.qc"; qd: "dq.qd"; qe: "dq.qe"; qf: "dq.qf"; qg: "dq.qg"; qh: "dq.qh"; qi: "dq.qi"; qj: "dq.qj"; qk: "dq.qk"; ql: "dq.ql"; qm: "dq.qm"; qn: "dq.qn"; qo: "dq.qo"; qp: "dq.qp"; qq: "dq.qq"; qr: "dq.qr"; qs: "dq.qs"; qt: "dq.qt"; qu: "dq.qu"; qv: "dq.qv"; qw: "dq.qw"; qx: "dq.qx"; qy: "dq.qy"; qz: "dq.qz"; ra: "dq.ra"; rb: "dq.rb"; rc: "dq.rc"; rd: "dq.rd"; re: "dq.re"; rf: "dq.rf"; rg: "dq.rg"; rh: "dq.rh"; ri: "dq.ri"; rj: "dq.rj"; rk: "dq.rk"; rl: "dq.rl"; rm: "dq.rm"; rn: "dq.rn"; ro: "dq.ro"; rp: "dq.rp"; rq: "dq.rq"; rr: "dq.rr"; rs: "dq.rs"; rt: "dq.rt"; ru: "dq.ru"; rv: "dq.rv"; rw: "dq.rw"; rx: "dq.rx"; ry: "dq.ry"; rz: "dq.rz"; sa: "dq.sa"; sb: "dq.sb"; sc: "dq.sc"; sd: "dq.sd"; se: "dq.se"; sf: "dq.sf"; sg: "dq.sg"; sh: "dq.sh"; si: "dq.si"; sj: "dq.sj"; sk: "dq.sk"; sl: "dq.sl"; sm: "dq.sm"; sn: "dq.sn"; so: "dq.so"; sp: "dq.sp"; sq: "dq.sq"; sr: "dq.sr"; ss: "dq.ss"; st: "dq.st"; su: "dq.su"; sv: "dq.sv"; sw: "dq.sw"; sx: "dq.sx"; sy: "dq.sy"; sz: "dq.sz"; ta: "dq.ta"; tb: "dq.tb"; tc: "dq.tc"; td: "dq.td"; te: "dq.te"; tf: "dq.tf"; tg: "dq.tg"; th: "dq.th"; ti: "dq.ti"; tj: "dq.tj"; tk: "dq.tk"; tl: "dq.tl"; tm: "dq.tm"; tn: "dq.tn"; to: "dq.to"; tp: "dq.tp"; tq: "dq.tq"; tr: "dq.tr"; ts: "dq.ts"; tt: "dq.tt"; tu: "dq.tu"; tv: "dq.tv"; tw: "dq.tw"; tx: "dq.tx"; ty: "dq.ty"; tz: "dq.tz"; ua: "dq.ua"; ub: "dq.ub"; uc: "dq.uc"; ud: "dq.ud"; ue: "dq.ue"; uf: "dq.uf"; ug: "dq.ug"; uh: "dq.uh"; ui: "dq.ui"; uj: "dq.uj"; uk: "dq.uk"; ul: "dq.ul"; um: "dq.um"; un: "dq.un"; uo: "dq.uo"; up: "dq.up"; uq: "dq.uq"; ur: "dq.ur"; us: "dq.us"; ut: "dq.ut"; uu: "dq.uu"; uv: "dq.uv"; uw: "dq.uw"; ux: "dq.ux"; uy: "dq.uy"; uz: "dq.uz"; va: "dq.va"; vb: "dq.vb"; vc: "dq.vc"; vd: "dq.vd"; ve: "dq.ve"; vf: "dq.vf"; vg: "dq.vg"; vh: "dq.vh"; vi: "dq.vi"; vj: "dq.vj"; vk: "dq.vk"; vl: "dq.vl"; vm: "dq.vm"; vn: "dq.vn"; vo: "dq.vo"; vp: "dq.vp"; vq: "dq.vq"; vr: "dq.vr"; vs: "dq.vs"; vt: "dq.vt"; vu: "dq.vu"; vv: "dq.vv"; vw: "dq.vw"; vx: "dq.vx"; vy: "dq.vy"; vz: "dq.vz"; wa: "dq.wa"; wb: "dq.wb"; wc: "dq.wc"; wd: "dq.wd"; we: "dq.we"; wf: "dq.wf"; wg: "dq.wg"; wh: "dq.wh"; wi: "dq.wi"; wj: "dq.wj"; wk: "dq.wk"; wl: "dq.wl"; wm: "dq.wm"; wn: "dq.wn"; wo: "dq.wo"; wp: "dq.wp"; wq: "dq.wq"; wr: "dq.wr"; ws: "dq.ws"; wt: "dq.wt"; wu: "dq.wu"; wv: "dq.wv"; ww: "dq.ww"; wx: "dq.wx"; wy: "dq.wy"; wz: "dq.wz"; xa: "dq.xa"; xb: "dq.xb"; xc: "dq.xc"; xd: "dq.xd"; xe: "dq.xe"; xf: "dq.xf"; xg: "dq.xg"; xh: "dq.xh"; xi: "dq.xi"; xj: "dq.xj"; xk: "dq.xk"; xl: "dq.xl"; xm: "dq.xm"; xn: "dq.xn"; xo: "dq.xo"; xp: "dq.xp"; xq: "dq.xq"; xr: "dq.xr"; xs: "dq.xs"; xt: "dq.xt"; xu: "dq.xu"; xv: "dq.xv"; xw: "dq.xw"; xx: "dq.xx"; xy: "dq.xy"; xz: "dq.xz"; ya: "dq.ya"; yb: "dq.yb"; yc: "dq.yc"; yd: "dq.yd"; ye: "dq.ye"; yf: "dq.yf"; yg: "dq.yg"; yh: "dq.yh"; yi: "dq.yi"; yj: "dq.yj"; yk: "dq.yk"; yl: "dq.yl"; ym: "dq.ym"; yn: "dq.yn"; yo: "dq.yo"; yp: "dq.yp"; yq: "dq.yq"; yr: "dq.yr"; ys: "dq.ys"; yt: "dq.yt"; yu: "dq.yu"; yv: "dq.yv"; yw: "dq.yw"; yx: "dq.yx"; yy: "dq.yy"; yz: "dq.yz"; za: "dq.za"; zb: "dq.zb"; zc: "dq.zc"; zd: "dq.zd"; ze: "dq.ze"; zf: "dq.zf"; zg: "dq.zg"; zh: "dq.zh"; zi: "dq.zi"; zj: "dq.zj"; zk: "dq.zk"; zl: "dq.zl"; zm: "dq.zm"; zn: "dq.zn"; zo: "dq.zo"; zp: "dq.zp"; zq: "dq.zq"; zr: "dq.zr"; zs: "dq.zs"; zt: "dq.zt"; zu: "dq.zu"; zv: "dq.zv"; zw: "dq.zw"; zx: "dq.zx"; zy: "dq.zy"; zz: "dq.zz"; }; dr: { aa: "dr.aa"; ab: "dr.ab"; ac: "dr.ac"; ad: "dr.ad"; ae: "dr.ae"; af: "dr.af"; ag: "dr.ag"; ah: "dr.ah"; ai: "dr.ai"; aj: "dr.aj"; ak: "dr.ak"; al: "dr.al"; am: "dr.am"; an: "dr.an"; ao: "dr.ao"; ap: "dr.ap"; aq: "dr.aq"; ar: "dr.ar"; as: "dr.as"; at: "dr.at"; au: "dr.au"; av: "dr.av"; aw: "dr.aw"; ax: "dr.ax"; ay: "dr.ay"; az: "dr.az"; ba: "dr.ba"; bb: "dr.bb"; bc: "dr.bc"; bd: "dr.bd"; be: "dr.be"; bf: "dr.bf"; bg: "dr.bg"; bh: "dr.bh"; bi: "dr.bi"; bj: "dr.bj"; bk: "dr.bk"; bl: "dr.bl"; bm: "dr.bm"; bn: "dr.bn"; bo: "dr.bo"; bp: "dr.bp"; bq: "dr.bq"; br: "dr.br"; bs: "dr.bs"; bt: "dr.bt"; bu: "dr.bu"; bv: "dr.bv"; bw: "dr.bw"; bx: "dr.bx"; by: "dr.by"; bz: "dr.bz"; ca: "dr.ca"; cb: "dr.cb"; cc: "dr.cc"; cd: "dr.cd"; ce: "dr.ce"; cf: "dr.cf"; cg: "dr.cg"; ch: "dr.ch"; ci: "dr.ci"; cj: "dr.cj"; ck: "dr.ck"; cl: "dr.cl"; cm: "dr.cm"; cn: "dr.cn"; co: "dr.co"; cp: "dr.cp"; cq: "dr.cq"; cr: "dr.cr"; cs: "dr.cs"; ct: "dr.ct"; cu: "dr.cu"; cv: "dr.cv"; cw: "dr.cw"; cx: "dr.cx"; cy: "dr.cy"; cz: "dr.cz"; da: "dr.da"; db: "dr.db"; dc: "dr.dc"; dd: "dr.dd"; de: "dr.de"; df: "dr.df"; dg: "dr.dg"; dh: "dr.dh"; di: "dr.di"; dj: "dr.dj"; dk: "dr.dk"; dl: "dr.dl"; dm: "dr.dm"; dn: "dr.dn"; do: "dr.do"; dp: "dr.dp"; dq: "dr.dq"; dr: "dr.dr"; ds: "dr.ds"; dt: "dr.dt"; du: "dr.du"; dv: "dr.dv"; dw: "dr.dw"; dx: "dr.dx"; dy: "dr.dy"; dz: "dr.dz"; ea: "dr.ea"; eb: "dr.eb"; ec: "dr.ec"; ed: "dr.ed"; ee: "dr.ee"; ef: "dr.ef"; eg: "dr.eg"; eh: "dr.eh"; ei: "dr.ei"; ej: "dr.ej"; ek: "dr.ek"; el: "dr.el"; em: "dr.em"; en: "dr.en"; eo: "dr.eo"; ep: "dr.ep"; eq: "dr.eq"; er: "dr.er"; es: "dr.es"; et: "dr.et"; eu: "dr.eu"; ev: "dr.ev"; ew: "dr.ew"; ex: "dr.ex"; ey: "dr.ey"; ez: "dr.ez"; fa: "dr.fa"; fb: "dr.fb"; fc: "dr.fc"; fd: "dr.fd"; fe: "dr.fe"; ff: "dr.ff"; fg: "dr.fg"; fh: "dr.fh"; fi: "dr.fi"; fj: "dr.fj"; fk: "dr.fk"; fl: "dr.fl"; fm: "dr.fm"; fn: "dr.fn"; fo: "dr.fo"; fp: "dr.fp"; fq: "dr.fq"; fr: "dr.fr"; fs: "dr.fs"; ft: "dr.ft"; fu: "dr.fu"; fv: "dr.fv"; fw: "dr.fw"; fx: "dr.fx"; fy: "dr.fy"; fz: "dr.fz"; ga: "dr.ga"; gb: "dr.gb"; gc: "dr.gc"; gd: "dr.gd"; ge: "dr.ge"; gf: "dr.gf"; gg: "dr.gg"; gh: "dr.gh"; gi: "dr.gi"; gj: "dr.gj"; gk: "dr.gk"; gl: "dr.gl"; gm: "dr.gm"; gn: "dr.gn"; go: "dr.go"; gp: "dr.gp"; gq: "dr.gq"; gr: "dr.gr"; gs: "dr.gs"; gt: "dr.gt"; gu: "dr.gu"; gv: "dr.gv"; gw: "dr.gw"; gx: "dr.gx"; gy: "dr.gy"; gz: "dr.gz"; ha: "dr.ha"; hb: "dr.hb"; hc: "dr.hc"; hd: "dr.hd"; he: "dr.he"; hf: "dr.hf"; hg: "dr.hg"; hh: "dr.hh"; hi: "dr.hi"; hj: "dr.hj"; hk: "dr.hk"; hl: "dr.hl"; hm: "dr.hm"; hn: "dr.hn"; ho: "dr.ho"; hp: "dr.hp"; hq: "dr.hq"; hr: "dr.hr"; hs: "dr.hs"; ht: "dr.ht"; hu: "dr.hu"; hv: "dr.hv"; hw: "dr.hw"; hx: "dr.hx"; hy: "dr.hy"; hz: "dr.hz"; ia: "dr.ia"; ib: "dr.ib"; ic: "dr.ic"; id: "dr.id"; ie: "dr.ie"; if: "dr.if"; ig: "dr.ig"; ih: "dr.ih"; ii: "dr.ii"; ij: "dr.ij"; ik: "dr.ik"; il: "dr.il"; im: "dr.im"; in: "dr.in"; io: "dr.io"; ip: "dr.ip"; iq: "dr.iq"; ir: "dr.ir"; is: "dr.is"; it: "dr.it"; iu: "dr.iu"; iv: "dr.iv"; iw: "dr.iw"; ix: "dr.ix"; iy: "dr.iy"; iz: "dr.iz"; ja: "dr.ja"; jb: "dr.jb"; jc: "dr.jc"; jd: "dr.jd"; je: "dr.je"; jf: "dr.jf"; jg: "dr.jg"; jh: "dr.jh"; ji: "dr.ji"; jj: "dr.jj"; jk: "dr.jk"; jl: "dr.jl"; jm: "dr.jm"; jn: "dr.jn"; jo: "dr.jo"; jp: "dr.jp"; jq: "dr.jq"; jr: "dr.jr"; js: "dr.js"; jt: "dr.jt"; ju: "dr.ju"; jv: "dr.jv"; jw: "dr.jw"; jx: "dr.jx"; jy: "dr.jy"; jz: "dr.jz"; ka: "dr.ka"; kb: "dr.kb"; kc: "dr.kc"; kd: "dr.kd"; ke: "dr.ke"; kf: "dr.kf"; kg: "dr.kg"; kh: "dr.kh"; ki: "dr.ki"; kj: "dr.kj"; kk: "dr.kk"; kl: "dr.kl"; km: "dr.km"; kn: "dr.kn"; ko: "dr.ko"; kp: "dr.kp"; kq: "dr.kq"; kr: "dr.kr"; ks: "dr.ks"; kt: "dr.kt"; ku: "dr.ku"; kv: "dr.kv"; kw: "dr.kw"; kx: "dr.kx"; ky: "dr.ky"; kz: "dr.kz"; la: "dr.la"; lb: "dr.lb"; lc: "dr.lc"; ld: "dr.ld"; le: "dr.le"; lf: "dr.lf"; lg: "dr.lg"; lh: "dr.lh"; li: "dr.li"; lj: "dr.lj"; lk: "dr.lk"; ll: "dr.ll"; lm: "dr.lm"; ln: "dr.ln"; lo: "dr.lo"; lp: "dr.lp"; lq: "dr.lq"; lr: "dr.lr"; ls: "dr.ls"; lt: "dr.lt"; lu: "dr.lu"; lv: "dr.lv"; lw: "dr.lw"; lx: "dr.lx"; ly: "dr.ly"; lz: "dr.lz"; ma: "dr.ma"; mb: "dr.mb"; mc: "dr.mc"; md: "dr.md"; me: "dr.me"; mf: "dr.mf"; mg: "dr.mg"; mh: "dr.mh"; mi: "dr.mi"; mj: "dr.mj"; mk: "dr.mk"; ml: "dr.ml"; mm: "dr.mm"; mn: "dr.mn"; mo: "dr.mo"; mp: "dr.mp"; mq: "dr.mq"; mr: "dr.mr"; ms: "dr.ms"; mt: "dr.mt"; mu: "dr.mu"; mv: "dr.mv"; mw: "dr.mw"; mx: "dr.mx"; my: "dr.my"; mz: "dr.mz"; na: "dr.na"; nb: "dr.nb"; nc: "dr.nc"; nd: "dr.nd"; ne: "dr.ne"; nf: "dr.nf"; ng: "dr.ng"; nh: "dr.nh"; ni: "dr.ni"; nj: "dr.nj"; nk: "dr.nk"; nl: "dr.nl"; nm: "dr.nm"; nn: "dr.nn"; no: "dr.no"; np: "dr.np"; nq: "dr.nq"; nr: "dr.nr"; ns: "dr.ns"; nt: "dr.nt"; nu: "dr.nu"; nv: "dr.nv"; nw: "dr.nw"; nx: "dr.nx"; ny: "dr.ny"; nz: "dr.nz"; oa: "dr.oa"; ob: "dr.ob"; oc: "dr.oc"; od: "dr.od"; oe: "dr.oe"; of: "dr.of"; og: "dr.og"; oh: "dr.oh"; oi: "dr.oi"; oj: "dr.oj"; ok: "dr.ok"; ol: "dr.ol"; om: "dr.om"; on: "dr.on"; oo: "dr.oo"; op: "dr.op"; oq: "dr.oq"; or: "dr.or"; os: "dr.os"; ot: "dr.ot"; ou: "dr.ou"; ov: "dr.ov"; ow: "dr.ow"; ox: "dr.ox"; oy: "dr.oy"; oz: "dr.oz"; pa: "dr.pa"; pb: "dr.pb"; pc: "dr.pc"; pd: "dr.pd"; pe: "dr.pe"; pf: "dr.pf"; pg: "dr.pg"; ph: "dr.ph"; pi: "dr.pi"; pj: "dr.pj"; pk: "dr.pk"; pl: "dr.pl"; pm: "dr.pm"; pn: "dr.pn"; po: "dr.po"; pp: "dr.pp"; pq: "dr.pq"; pr: "dr.pr"; ps: "dr.ps"; pt: "dr.pt"; pu: "dr.pu"; pv: "dr.pv"; pw: "dr.pw"; px: "dr.px"; py: "dr.py"; pz: "dr.pz"; qa: "dr.qa"; qb: "dr.qb"; qc: "dr.qc"; qd: "dr.qd"; qe: "dr.qe"; qf: "dr.qf"; qg: "dr.qg"; qh: "dr.qh"; qi: "dr.qi"; qj: "dr.qj"; qk: "dr.qk"; ql: "dr.ql"; qm: "dr.qm"; qn: "dr.qn"; qo: "dr.qo"; qp: "dr.qp"; qq: "dr.qq"; qr: "dr.qr"; qs: "dr.qs"; qt: "dr.qt"; qu: "dr.qu"; qv: "dr.qv"; qw: "dr.qw"; qx: "dr.qx"; qy: "dr.qy"; qz: "dr.qz"; ra: "dr.ra"; rb: "dr.rb"; rc: "dr.rc"; rd: "dr.rd"; re: "dr.re"; rf: "dr.rf"; rg: "dr.rg"; rh: "dr.rh"; ri: "dr.ri"; rj: "dr.rj"; rk: "dr.rk"; rl: "dr.rl"; rm: "dr.rm"; rn: "dr.rn"; ro: "dr.ro"; rp: "dr.rp"; rq: "dr.rq"; rr: "dr.rr"; rs: "dr.rs"; rt: "dr.rt"; ru: "dr.ru"; rv: "dr.rv"; rw: "dr.rw"; rx: "dr.rx"; ry: "dr.ry"; rz: "dr.rz"; sa: "dr.sa"; sb: "dr.sb"; sc: "dr.sc"; sd: "dr.sd"; se: "dr.se"; sf: "dr.sf"; sg: "dr.sg"; sh: "dr.sh"; si: "dr.si"; sj: "dr.sj"; sk: "dr.sk"; sl: "dr.sl"; sm: "dr.sm"; sn: "dr.sn"; so: "dr.so"; sp: "dr.sp"; sq: "dr.sq"; sr: "dr.sr"; ss: "dr.ss"; st: "dr.st"; su: "dr.su"; sv: "dr.sv"; sw: "dr.sw"; sx: "dr.sx"; sy: "dr.sy"; sz: "dr.sz"; ta: "dr.ta"; tb: "dr.tb"; tc: "dr.tc"; td: "dr.td"; te: "dr.te"; tf: "dr.tf"; tg: "dr.tg"; th: "dr.th"; ti: "dr.ti"; tj: "dr.tj"; tk: "dr.tk"; tl: "dr.tl"; tm: "dr.tm"; tn: "dr.tn"; to: "dr.to"; tp: "dr.tp"; tq: "dr.tq"; tr: "dr.tr"; ts: "dr.ts"; tt: "dr.tt"; tu: "dr.tu"; tv: "dr.tv"; tw: "dr.tw"; tx: "dr.tx"; ty: "dr.ty"; tz: "dr.tz"; ua: "dr.ua"; ub: "dr.ub"; uc: "dr.uc"; ud: "dr.ud"; ue: "dr.ue"; uf: "dr.uf"; ug: "dr.ug"; uh: "dr.uh"; ui: "dr.ui"; uj: "dr.uj"; uk: "dr.uk"; ul: "dr.ul"; um: "dr.um"; un: "dr.un"; uo: "dr.uo"; up: "dr.up"; uq: "dr.uq"; ur: "dr.ur"; us: "dr.us"; ut: "dr.ut"; uu: "dr.uu"; uv: "dr.uv"; uw: "dr.uw"; ux: "dr.ux"; uy: "dr.uy"; uz: "dr.uz"; va: "dr.va"; vb: "dr.vb"; vc: "dr.vc"; vd: "dr.vd"; ve: "dr.ve"; vf: "dr.vf"; vg: "dr.vg"; vh: "dr.vh"; vi: "dr.vi"; vj: "dr.vj"; vk: "dr.vk"; vl: "dr.vl"; vm: "dr.vm"; vn: "dr.vn"; vo: "dr.vo"; vp: "dr.vp"; vq: "dr.vq"; vr: "dr.vr"; vs: "dr.vs"; vt: "dr.vt"; vu: "dr.vu"; vv: "dr.vv"; vw: "dr.vw"; vx: "dr.vx"; vy: "dr.vy"; vz: "dr.vz"; wa: "dr.wa"; wb: "dr.wb"; wc: "dr.wc"; wd: "dr.wd"; we: "dr.we"; wf: "dr.wf"; wg: "dr.wg"; wh: "dr.wh"; wi: "dr.wi"; wj: "dr.wj"; wk: "dr.wk"; wl: "dr.wl"; wm: "dr.wm"; wn: "dr.wn"; wo: "dr.wo"; wp: "dr.wp"; wq: "dr.wq"; wr: "dr.wr"; ws: "dr.ws"; wt: "dr.wt"; wu: "dr.wu"; wv: "dr.wv"; ww: "dr.ww"; wx: "dr.wx"; wy: "dr.wy"; wz: "dr.wz"; xa: "dr.xa"; xb: "dr.xb"; xc: "dr.xc"; xd: "dr.xd"; xe: "dr.xe"; xf: "dr.xf"; xg: "dr.xg"; xh: "dr.xh"; xi: "dr.xi"; xj: "dr.xj"; xk: "dr.xk"; xl: "dr.xl"; xm: "dr.xm"; xn: "dr.xn"; xo: "dr.xo"; xp: "dr.xp"; xq: "dr.xq"; xr: "dr.xr"; xs: "dr.xs"; xt: "dr.xt"; xu: "dr.xu"; xv: "dr.xv"; xw: "dr.xw"; xx: "dr.xx"; xy: "dr.xy"; xz: "dr.xz"; ya: "dr.ya"; yb: "dr.yb"; yc: "dr.yc"; yd: "dr.yd"; ye: "dr.ye"; yf: "dr.yf"; yg: "dr.yg"; yh: "dr.yh"; yi: "dr.yi"; yj: "dr.yj"; yk: "dr.yk"; yl: "dr.yl"; ym: "dr.ym"; yn: "dr.yn"; yo: "dr.yo"; yp: "dr.yp"; yq: "dr.yq"; yr: "dr.yr"; ys: "dr.ys"; yt: "dr.yt"; yu: "dr.yu"; yv: "dr.yv"; yw: "dr.yw"; yx: "dr.yx"; yy: "dr.yy"; yz: "dr.yz"; za: "dr.za"; zb: "dr.zb"; zc: "dr.zc"; zd: "dr.zd"; ze: "dr.ze"; zf: "dr.zf"; zg: "dr.zg"; zh: "dr.zh"; zi: "dr.zi"; zj: "dr.zj"; zk: "dr.zk"; zl: "dr.zl"; zm: "dr.zm"; zn: "dr.zn"; zo: "dr.zo"; zp: "dr.zp"; zq: "dr.zq"; zr: "dr.zr"; zs: "dr.zs"; zt: "dr.zt"; zu: "dr.zu"; zv: "dr.zv"; zw: "dr.zw"; zx: "dr.zx"; zy: "dr.zy"; zz: "dr.zz"; }; ds: { aa: "ds.aa"; ab: "ds.ab"; ac: "ds.ac"; ad: "ds.ad"; ae: "ds.ae"; af: "ds.af"; ag: "ds.ag"; ah: "ds.ah"; ai: "ds.ai"; aj: "ds.aj"; ak: "ds.ak"; al: "ds.al"; am: "ds.am"; an: "ds.an"; ao: "ds.ao"; ap: "ds.ap"; aq: "ds.aq"; ar: "ds.ar"; as: "ds.as"; at: "ds.at"; au: "ds.au"; av: "ds.av"; aw: "ds.aw"; ax: "ds.ax"; ay: "ds.ay"; az: "ds.az"; ba: "ds.ba"; bb: "ds.bb"; bc: "ds.bc"; bd: "ds.bd"; be: "ds.be"; bf: "ds.bf"; bg: "ds.bg"; bh: "ds.bh"; bi: "ds.bi"; bj: "ds.bj"; bk: "ds.bk"; bl: "ds.bl"; bm: "ds.bm"; bn: "ds.bn"; bo: "ds.bo"; bp: "ds.bp"; bq: "ds.bq"; br: "ds.br"; bs: "ds.bs"; bt: "ds.bt"; bu: "ds.bu"; bv: "ds.bv"; bw: "ds.bw"; bx: "ds.bx"; by: "ds.by"; bz: "ds.bz"; ca: "ds.ca"; cb: "ds.cb"; cc: "ds.cc"; cd: "ds.cd"; ce: "ds.ce"; cf: "ds.cf"; cg: "ds.cg"; ch: "ds.ch"; ci: "ds.ci"; cj: "ds.cj"; ck: "ds.ck"; cl: "ds.cl"; cm: "ds.cm"; cn: "ds.cn"; co: "ds.co"; cp: "ds.cp"; cq: "ds.cq"; cr: "ds.cr"; cs: "ds.cs"; ct: "ds.ct"; cu: "ds.cu"; cv: "ds.cv"; cw: "ds.cw"; cx: "ds.cx"; cy: "ds.cy"; cz: "ds.cz"; da: "ds.da"; db: "ds.db"; dc: "ds.dc"; dd: "ds.dd"; de: "ds.de"; df: "ds.df"; dg: "ds.dg"; dh: "ds.dh"; di: "ds.di"; dj: "ds.dj"; dk: "ds.dk"; dl: "ds.dl"; dm: "ds.dm"; dn: "ds.dn"; do: "ds.do"; dp: "ds.dp"; dq: "ds.dq"; dr: "ds.dr"; ds: "ds.ds"; dt: "ds.dt"; du: "ds.du"; dv: "ds.dv"; dw: "ds.dw"; dx: "ds.dx"; dy: "ds.dy"; dz: "ds.dz"; ea: "ds.ea"; eb: "ds.eb"; ec: "ds.ec"; ed: "ds.ed"; ee: "ds.ee"; ef: "ds.ef"; eg: "ds.eg"; eh: "ds.eh"; ei: "ds.ei"; ej: "ds.ej"; ek: "ds.ek"; el: "ds.el"; em: "ds.em"; en: "ds.en"; eo: "ds.eo"; ep: "ds.ep"; eq: "ds.eq"; er: "ds.er"; es: "ds.es"; et: "ds.et"; eu: "ds.eu"; ev: "ds.ev"; ew: "ds.ew"; ex: "ds.ex"; ey: "ds.ey"; ez: "ds.ez"; fa: "ds.fa"; fb: "ds.fb"; fc: "ds.fc"; fd: "ds.fd"; fe: "ds.fe"; ff: "ds.ff"; fg: "ds.fg"; fh: "ds.fh"; fi: "ds.fi"; fj: "ds.fj"; fk: "ds.fk"; fl: "ds.fl"; fm: "ds.fm"; fn: "ds.fn"; fo: "ds.fo"; fp: "ds.fp"; fq: "ds.fq"; fr: "ds.fr"; fs: "ds.fs"; ft: "ds.ft"; fu: "ds.fu"; fv: "ds.fv"; fw: "ds.fw"; fx: "ds.fx"; fy: "ds.fy"; fz: "ds.fz"; ga: "ds.ga"; gb: "ds.gb"; gc: "ds.gc"; gd: "ds.gd"; ge: "ds.ge"; gf: "ds.gf"; gg: "ds.gg"; gh: "ds.gh"; gi: "ds.gi"; gj: "ds.gj"; gk: "ds.gk"; gl: "ds.gl"; gm: "ds.gm"; gn: "ds.gn"; go: "ds.go"; gp: "ds.gp"; gq: "ds.gq"; gr: "ds.gr"; gs: "ds.gs"; gt: "ds.gt"; gu: "ds.gu"; gv: "ds.gv"; gw: "ds.gw"; gx: "ds.gx"; gy: "ds.gy"; gz: "ds.gz"; ha: "ds.ha"; hb: "ds.hb"; hc: "ds.hc"; hd: "ds.hd"; he: "ds.he"; hf: "ds.hf"; hg: "ds.hg"; hh: "ds.hh"; hi: "ds.hi"; hj: "ds.hj"; hk: "ds.hk"; hl: "ds.hl"; hm: "ds.hm"; hn: "ds.hn"; ho: "ds.ho"; hp: "ds.hp"; hq: "ds.hq"; hr: "ds.hr"; hs: "ds.hs"; ht: "ds.ht"; hu: "ds.hu"; hv: "ds.hv"; hw: "ds.hw"; hx: "ds.hx"; hy: "ds.hy"; hz: "ds.hz"; ia: "ds.ia"; ib: "ds.ib"; ic: "ds.ic"; id: "ds.id"; ie: "ds.ie"; if: "ds.if"; ig: "ds.ig"; ih: "ds.ih"; ii: "ds.ii"; ij: "ds.ij"; ik: "ds.ik"; il: "ds.il"; im: "ds.im"; in: "ds.in"; io: "ds.io"; ip: "ds.ip"; iq: "ds.iq"; ir: "ds.ir"; is: "ds.is"; it: "ds.it"; iu: "ds.iu"; iv: "ds.iv"; iw: "ds.iw"; ix: "ds.ix"; iy: "ds.iy"; iz: "ds.iz"; ja: "ds.ja"; jb: "ds.jb"; jc: "ds.jc"; jd: "ds.jd"; je: "ds.je"; jf: "ds.jf"; jg: "ds.jg"; jh: "ds.jh"; ji: "ds.ji"; jj: "ds.jj"; jk: "ds.jk"; jl: "ds.jl"; jm: "ds.jm"; jn: "ds.jn"; jo: "ds.jo"; jp: "ds.jp"; jq: "ds.jq"; jr: "ds.jr"; js: "ds.js"; jt: "ds.jt"; ju: "ds.ju"; jv: "ds.jv"; jw: "ds.jw"; jx: "ds.jx"; jy: "ds.jy"; jz: "ds.jz"; ka: "ds.ka"; kb: "ds.kb"; kc: "ds.kc"; kd: "ds.kd"; ke: "ds.ke"; kf: "ds.kf"; kg: "ds.kg"; kh: "ds.kh"; ki: "ds.ki"; kj: "ds.kj"; kk: "ds.kk"; kl: "ds.kl"; km: "ds.km"; kn: "ds.kn"; ko: "ds.ko"; kp: "ds.kp"; kq: "ds.kq"; kr: "ds.kr"; ks: "ds.ks"; kt: "ds.kt"; ku: "ds.ku"; kv: "ds.kv"; kw: "ds.kw"; kx: "ds.kx"; ky: "ds.ky"; kz: "ds.kz"; la: "ds.la"; lb: "ds.lb"; lc: "ds.lc"; ld: "ds.ld"; le: "ds.le"; lf: "ds.lf"; lg: "ds.lg"; lh: "ds.lh"; li: "ds.li"; lj: "ds.lj"; lk: "ds.lk"; ll: "ds.ll"; lm: "ds.lm"; ln: "ds.ln"; lo: "ds.lo"; lp: "ds.lp"; lq: "ds.lq"; lr: "ds.lr"; ls: "ds.ls"; lt: "ds.lt"; lu: "ds.lu"; lv: "ds.lv"; lw: "ds.lw"; lx: "ds.lx"; ly: "ds.ly"; lz: "ds.lz"; ma: "ds.ma"; mb: "ds.mb"; mc: "ds.mc"; md: "ds.md"; me: "ds.me"; mf: "ds.mf"; mg: "ds.mg"; mh: "ds.mh"; mi: "ds.mi"; mj: "ds.mj"; mk: "ds.mk"; ml: "ds.ml"; mm: "ds.mm"; mn: "ds.mn"; mo: "ds.mo"; mp: "ds.mp"; mq: "ds.mq"; mr: "ds.mr"; ms: "ds.ms"; mt: "ds.mt"; mu: "ds.mu"; mv: "ds.mv"; mw: "ds.mw"; mx: "ds.mx"; my: "ds.my"; mz: "ds.mz"; na: "ds.na"; nb: "ds.nb"; nc: "ds.nc"; nd: "ds.nd"; ne: "ds.ne"; nf: "ds.nf"; ng: "ds.ng"; nh: "ds.nh"; ni: "ds.ni"; nj: "ds.nj"; nk: "ds.nk"; nl: "ds.nl"; nm: "ds.nm"; nn: "ds.nn"; no: "ds.no"; np: "ds.np"; nq: "ds.nq"; nr: "ds.nr"; ns: "ds.ns"; nt: "ds.nt"; nu: "ds.nu"; nv: "ds.nv"; nw: "ds.nw"; nx: "ds.nx"; ny: "ds.ny"; nz: "ds.nz"; oa: "ds.oa"; ob: "ds.ob"; oc: "ds.oc"; od: "ds.od"; oe: "ds.oe"; of: "ds.of"; og: "ds.og"; oh: "ds.oh"; oi: "ds.oi"; oj: "ds.oj"; ok: "ds.ok"; ol: "ds.ol"; om: "ds.om"; on: "ds.on"; oo: "ds.oo"; op: "ds.op"; oq: "ds.oq"; or: "ds.or"; os: "ds.os"; ot: "ds.ot"; ou: "ds.ou"; ov: "ds.ov"; ow: "ds.ow"; ox: "ds.ox"; oy: "ds.oy"; oz: "ds.oz"; pa: "ds.pa"; pb: "ds.pb"; pc: "ds.pc"; pd: "ds.pd"; pe: "ds.pe"; pf: "ds.pf"; pg: "ds.pg"; ph: "ds.ph"; pi: "ds.pi"; pj: "ds.pj"; pk: "ds.pk"; pl: "ds.pl"; pm: "ds.pm"; pn: "ds.pn"; po: "ds.po"; pp: "ds.pp"; pq: "ds.pq"; pr: "ds.pr"; ps: "ds.ps"; pt: "ds.pt"; pu: "ds.pu"; pv: "ds.pv"; pw: "ds.pw"; px: "ds.px"; py: "ds.py"; pz: "ds.pz"; qa: "ds.qa"; qb: "ds.qb"; qc: "ds.qc"; qd: "ds.qd"; qe: "ds.qe"; qf: "ds.qf"; qg: "ds.qg"; qh: "ds.qh"; qi: "ds.qi"; qj: "ds.qj"; qk: "ds.qk"; ql: "ds.ql"; qm: "ds.qm"; qn: "ds.qn"; qo: "ds.qo"; qp: "ds.qp"; qq: "ds.qq"; qr: "ds.qr"; qs: "ds.qs"; qt: "ds.qt"; qu: "ds.qu"; qv: "ds.qv"; qw: "ds.qw"; qx: "ds.qx"; qy: "ds.qy"; qz: "ds.qz"; ra: "ds.ra"; rb: "ds.rb"; rc: "ds.rc"; rd: "ds.rd"; re: "ds.re"; rf: "ds.rf"; rg: "ds.rg"; rh: "ds.rh"; ri: "ds.ri"; rj: "ds.rj"; rk: "ds.rk"; rl: "ds.rl"; rm: "ds.rm"; rn: "ds.rn"; ro: "ds.ro"; rp: "ds.rp"; rq: "ds.rq"; rr: "ds.rr"; rs: "ds.rs"; rt: "ds.rt"; ru: "ds.ru"; rv: "ds.rv"; rw: "ds.rw"; rx: "ds.rx"; ry: "ds.ry"; rz: "ds.rz"; sa: "ds.sa"; sb: "ds.sb"; sc: "ds.sc"; sd: "ds.sd"; se: "ds.se"; sf: "ds.sf"; sg: "ds.sg"; sh: "ds.sh"; si: "ds.si"; sj: "ds.sj"; sk: "ds.sk"; sl: "ds.sl"; sm: "ds.sm"; sn: "ds.sn"; so: "ds.so"; sp: "ds.sp"; sq: "ds.sq"; sr: "ds.sr"; ss: "ds.ss"; st: "ds.st"; su: "ds.su"; sv: "ds.sv"; sw: "ds.sw"; sx: "ds.sx"; sy: "ds.sy"; sz: "ds.sz"; ta: "ds.ta"; tb: "ds.tb"; tc: "ds.tc"; td: "ds.td"; te: "ds.te"; tf: "ds.tf"; tg: "ds.tg"; th: "ds.th"; ti: "ds.ti"; tj: "ds.tj"; tk: "ds.tk"; tl: "ds.tl"; tm: "ds.tm"; tn: "ds.tn"; to: "ds.to"; tp: "ds.tp"; tq: "ds.tq"; tr: "ds.tr"; ts: "ds.ts"; tt: "ds.tt"; tu: "ds.tu"; tv: "ds.tv"; tw: "ds.tw"; tx: "ds.tx"; ty: "ds.ty"; tz: "ds.tz"; ua: "ds.ua"; ub: "ds.ub"; uc: "ds.uc"; ud: "ds.ud"; ue: "ds.ue"; uf: "ds.uf"; ug: "ds.ug"; uh: "ds.uh"; ui: "ds.ui"; uj: "ds.uj"; uk: "ds.uk"; ul: "ds.ul"; um: "ds.um"; un: "ds.un"; uo: "ds.uo"; up: "ds.up"; uq: "ds.uq"; ur: "ds.ur"; us: "ds.us"; ut: "ds.ut"; uu: "ds.uu"; uv: "ds.uv"; uw: "ds.uw"; ux: "ds.ux"; uy: "ds.uy"; uz: "ds.uz"; va: "ds.va"; vb: "ds.vb"; vc: "ds.vc"; vd: "ds.vd"; ve: "ds.ve"; vf: "ds.vf"; vg: "ds.vg"; vh: "ds.vh"; vi: "ds.vi"; vj: "ds.vj"; vk: "ds.vk"; vl: "ds.vl"; vm: "ds.vm"; vn: "ds.vn"; vo: "ds.vo"; vp: "ds.vp"; vq: "ds.vq"; vr: "ds.vr"; vs: "ds.vs"; vt: "ds.vt"; vu: "ds.vu"; vv: "ds.vv"; vw: "ds.vw"; vx: "ds.vx"; vy: "ds.vy"; vz: "ds.vz"; wa: "ds.wa"; wb: "ds.wb"; wc: "ds.wc"; wd: "ds.wd"; we: "ds.we"; wf: "ds.wf"; wg: "ds.wg"; wh: "ds.wh"; wi: "ds.wi"; wj: "ds.wj"; wk: "ds.wk"; wl: "ds.wl"; wm: "ds.wm"; wn: "ds.wn"; wo: "ds.wo"; wp: "ds.wp"; wq: "ds.wq"; wr: "ds.wr"; ws: "ds.ws"; wt: "ds.wt"; wu: "ds.wu"; wv: "ds.wv"; ww: "ds.ww"; wx: "ds.wx"; wy: "ds.wy"; wz: "ds.wz"; xa: "ds.xa"; xb: "ds.xb"; xc: "ds.xc"; xd: "ds.xd"; xe: "ds.xe"; xf: "ds.xf"; xg: "ds.xg"; xh: "ds.xh"; xi: "ds.xi"; xj: "ds.xj"; xk: "ds.xk"; xl: "ds.xl"; xm: "ds.xm"; xn: "ds.xn"; xo: "ds.xo"; xp: "ds.xp"; xq: "ds.xq"; xr: "ds.xr"; xs: "ds.xs"; xt: "ds.xt"; xu: "ds.xu"; xv: "ds.xv"; xw: "ds.xw"; xx: "ds.xx"; xy: "ds.xy"; xz: "ds.xz"; ya: "ds.ya"; yb: "ds.yb"; yc: "ds.yc"; yd: "ds.yd"; ye: "ds.ye"; yf: "ds.yf"; yg: "ds.yg"; yh: "ds.yh"; yi: "ds.yi"; yj: "ds.yj"; yk: "ds.yk"; yl: "ds.yl"; ym: "ds.ym"; yn: "ds.yn"; yo: "ds.yo"; yp: "ds.yp"; yq: "ds.yq"; yr: "ds.yr"; ys: "ds.ys"; yt: "ds.yt"; yu: "ds.yu"; yv: "ds.yv"; yw: "ds.yw"; yx: "ds.yx"; yy: "ds.yy"; yz: "ds.yz"; za: "ds.za"; zb: "ds.zb"; zc: "ds.zc"; zd: "ds.zd"; ze: "ds.ze"; zf: "ds.zf"; zg: "ds.zg"; zh: "ds.zh"; zi: "ds.zi"; zj: "ds.zj"; zk: "ds.zk"; zl: "ds.zl"; zm: "ds.zm"; zn: "ds.zn"; zo: "ds.zo"; zp: "ds.zp"; zq: "ds.zq"; zr: "ds.zr"; zs: "ds.zs"; zt: "ds.zt"; zu: "ds.zu"; zv: "ds.zv"; zw: "ds.zw"; zx: "ds.zx"; zy: "ds.zy"; zz: "ds.zz"; }; dt: { aa: "dt.aa"; ab: "dt.ab"; ac: "dt.ac"; ad: "dt.ad"; ae: "dt.ae"; af: "dt.af"; ag: "dt.ag"; ah: "dt.ah"; ai: "dt.ai"; aj: "dt.aj"; ak: "dt.ak"; al: "dt.al"; am: "dt.am"; an: "dt.an"; ao: "dt.ao"; ap: "dt.ap"; aq: "dt.aq"; ar: "dt.ar"; as: "dt.as"; at: "dt.at"; au: "dt.au"; av: "dt.av"; aw: "dt.aw"; ax: "dt.ax"; ay: "dt.ay"; az: "dt.az"; ba: "dt.ba"; bb: "dt.bb"; bc: "dt.bc"; bd: "dt.bd"; be: "dt.be"; bf: "dt.bf"; bg: "dt.bg"; bh: "dt.bh"; bi: "dt.bi"; bj: "dt.bj"; bk: "dt.bk"; bl: "dt.bl"; bm: "dt.bm"; bn: "dt.bn"; bo: "dt.bo"; bp: "dt.bp"; bq: "dt.bq"; br: "dt.br"; bs: "dt.bs"; bt: "dt.bt"; bu: "dt.bu"; bv: "dt.bv"; bw: "dt.bw"; bx: "dt.bx"; by: "dt.by"; bz: "dt.bz"; ca: "dt.ca"; cb: "dt.cb"; cc: "dt.cc"; cd: "dt.cd"; ce: "dt.ce"; cf: "dt.cf"; cg: "dt.cg"; ch: "dt.ch"; ci: "dt.ci"; cj: "dt.cj"; ck: "dt.ck"; cl: "dt.cl"; cm: "dt.cm"; cn: "dt.cn"; co: "dt.co"; cp: "dt.cp"; cq: "dt.cq"; cr: "dt.cr"; cs: "dt.cs"; ct: "dt.ct"; cu: "dt.cu"; cv: "dt.cv"; cw: "dt.cw"; cx: "dt.cx"; cy: "dt.cy"; cz: "dt.cz"; da: "dt.da"; db: "dt.db"; dc: "dt.dc"; dd: "dt.dd"; de: "dt.de"; df: "dt.df"; dg: "dt.dg"; dh: "dt.dh"; di: "dt.di"; dj: "dt.dj"; dk: "dt.dk"; dl: "dt.dl"; dm: "dt.dm"; dn: "dt.dn"; do: "dt.do"; dp: "dt.dp"; dq: "dt.dq"; dr: "dt.dr"; ds: "dt.ds"; dt: "dt.dt"; du: "dt.du"; dv: "dt.dv"; dw: "dt.dw"; dx: "dt.dx"; dy: "dt.dy"; dz: "dt.dz"; ea: "dt.ea"; eb: "dt.eb"; ec: "dt.ec"; ed: "dt.ed"; ee: "dt.ee"; ef: "dt.ef"; eg: "dt.eg"; eh: "dt.eh"; ei: "dt.ei"; ej: "dt.ej"; ek: "dt.ek"; el: "dt.el"; em: "dt.em"; en: "dt.en"; eo: "dt.eo"; ep: "dt.ep"; eq: "dt.eq"; er: "dt.er"; es: "dt.es"; et: "dt.et"; eu: "dt.eu"; ev: "dt.ev"; ew: "dt.ew"; ex: "dt.ex"; ey: "dt.ey"; ez: "dt.ez"; fa: "dt.fa"; fb: "dt.fb"; fc: "dt.fc"; fd: "dt.fd"; fe: "dt.fe"; ff: "dt.ff"; fg: "dt.fg"; fh: "dt.fh"; fi: "dt.fi"; fj: "dt.fj"; fk: "dt.fk"; fl: "dt.fl"; fm: "dt.fm"; fn: "dt.fn"; fo: "dt.fo"; fp: "dt.fp"; fq: "dt.fq"; fr: "dt.fr"; fs: "dt.fs"; ft: "dt.ft"; fu: "dt.fu"; fv: "dt.fv"; fw: "dt.fw"; fx: "dt.fx"; fy: "dt.fy"; fz: "dt.fz"; ga: "dt.ga"; gb: "dt.gb"; gc: "dt.gc"; gd: "dt.gd"; ge: "dt.ge"; gf: "dt.gf"; gg: "dt.gg"; gh: "dt.gh"; gi: "dt.gi"; gj: "dt.gj"; gk: "dt.gk"; gl: "dt.gl"; gm: "dt.gm"; gn: "dt.gn"; go: "dt.go"; gp: "dt.gp"; gq: "dt.gq"; gr: "dt.gr"; gs: "dt.gs"; gt: "dt.gt"; gu: "dt.gu"; gv: "dt.gv"; gw: "dt.gw"; gx: "dt.gx"; gy: "dt.gy"; gz: "dt.gz"; ha: "dt.ha"; hb: "dt.hb"; hc: "dt.hc"; hd: "dt.hd"; he: "dt.he"; hf: "dt.hf"; hg: "dt.hg"; hh: "dt.hh"; hi: "dt.hi"; hj: "dt.hj"; hk: "dt.hk"; hl: "dt.hl"; hm: "dt.hm"; hn: "dt.hn"; ho: "dt.ho"; hp: "dt.hp"; hq: "dt.hq"; hr: "dt.hr"; hs: "dt.hs"; ht: "dt.ht"; hu: "dt.hu"; hv: "dt.hv"; hw: "dt.hw"; hx: "dt.hx"; hy: "dt.hy"; hz: "dt.hz"; ia: "dt.ia"; ib: "dt.ib"; ic: "dt.ic"; id: "dt.id"; ie: "dt.ie"; if: "dt.if"; ig: "dt.ig"; ih: "dt.ih"; ii: "dt.ii"; ij: "dt.ij"; ik: "dt.ik"; il: "dt.il"; im: "dt.im"; in: "dt.in"; io: "dt.io"; ip: "dt.ip"; iq: "dt.iq"; ir: "dt.ir"; is: "dt.is"; it: "dt.it"; iu: "dt.iu"; iv: "dt.iv"; iw: "dt.iw"; ix: "dt.ix"; iy: "dt.iy"; iz: "dt.iz"; ja: "dt.ja"; jb: "dt.jb"; jc: "dt.jc"; jd: "dt.jd"; je: "dt.je"; jf: "dt.jf"; jg: "dt.jg"; jh: "dt.jh"; ji: "dt.ji"; jj: "dt.jj"; jk: "dt.jk"; jl: "dt.jl"; jm: "dt.jm"; jn: "dt.jn"; jo: "dt.jo"; jp: "dt.jp"; jq: "dt.jq"; jr: "dt.jr"; js: "dt.js"; jt: "dt.jt"; ju: "dt.ju"; jv: "dt.jv"; jw: "dt.jw"; jx: "dt.jx"; jy: "dt.jy"; jz: "dt.jz"; ka: "dt.ka"; kb: "dt.kb"; kc: "dt.kc"; kd: "dt.kd"; ke: "dt.ke"; kf: "dt.kf"; kg: "dt.kg"; kh: "dt.kh"; ki: "dt.ki"; kj: "dt.kj"; kk: "dt.kk"; kl: "dt.kl"; km: "dt.km"; kn: "dt.kn"; ko: "dt.ko"; kp: "dt.kp"; kq: "dt.kq"; kr: "dt.kr"; ks: "dt.ks"; kt: "dt.kt"; ku: "dt.ku"; kv: "dt.kv"; kw: "dt.kw"; kx: "dt.kx"; ky: "dt.ky"; kz: "dt.kz"; la: "dt.la"; lb: "dt.lb"; lc: "dt.lc"; ld: "dt.ld"; le: "dt.le"; lf: "dt.lf"; lg: "dt.lg"; lh: "dt.lh"; li: "dt.li"; lj: "dt.lj"; lk: "dt.lk"; ll: "dt.ll"; lm: "dt.lm"; ln: "dt.ln"; lo: "dt.lo"; lp: "dt.lp"; lq: "dt.lq"; lr: "dt.lr"; ls: "dt.ls"; lt: "dt.lt"; lu: "dt.lu"; lv: "dt.lv"; lw: "dt.lw"; lx: "dt.lx"; ly: "dt.ly"; lz: "dt.lz"; ma: "dt.ma"; mb: "dt.mb"; mc: "dt.mc"; md: "dt.md"; me: "dt.me"; mf: "dt.mf"; mg: "dt.mg"; mh: "dt.mh"; mi: "dt.mi"; mj: "dt.mj"; mk: "dt.mk"; ml: "dt.ml"; mm: "dt.mm"; mn: "dt.mn"; mo: "dt.mo"; mp: "dt.mp"; mq: "dt.mq"; mr: "dt.mr"; ms: "dt.ms"; mt: "dt.mt"; mu: "dt.mu"; mv: "dt.mv"; mw: "dt.mw"; mx: "dt.mx"; my: "dt.my"; mz: "dt.mz"; na: "dt.na"; nb: "dt.nb"; nc: "dt.nc"; nd: "dt.nd"; ne: "dt.ne"; nf: "dt.nf"; ng: "dt.ng"; nh: "dt.nh"; ni: "dt.ni"; nj: "dt.nj"; nk: "dt.nk"; nl: "dt.nl"; nm: "dt.nm"; nn: "dt.nn"; no: "dt.no"; np: "dt.np"; nq: "dt.nq"; nr: "dt.nr"; ns: "dt.ns"; nt: "dt.nt"; nu: "dt.nu"; nv: "dt.nv"; nw: "dt.nw"; nx: "dt.nx"; ny: "dt.ny"; nz: "dt.nz"; oa: "dt.oa"; ob: "dt.ob"; oc: "dt.oc"; od: "dt.od"; oe: "dt.oe"; of: "dt.of"; og: "dt.og"; oh: "dt.oh"; oi: "dt.oi"; oj: "dt.oj"; ok: "dt.ok"; ol: "dt.ol"; om: "dt.om"; on: "dt.on"; oo: "dt.oo"; op: "dt.op"; oq: "dt.oq"; or: "dt.or"; os: "dt.os"; ot: "dt.ot"; ou: "dt.ou"; ov: "dt.ov"; ow: "dt.ow"; ox: "dt.ox"; oy: "dt.oy"; oz: "dt.oz"; pa: "dt.pa"; pb: "dt.pb"; pc: "dt.pc"; pd: "dt.pd"; pe: "dt.pe"; pf: "dt.pf"; pg: "dt.pg"; ph: "dt.ph"; pi: "dt.pi"; pj: "dt.pj"; pk: "dt.pk"; pl: "dt.pl"; pm: "dt.pm"; pn: "dt.pn"; po: "dt.po"; pp: "dt.pp"; pq: "dt.pq"; pr: "dt.pr"; ps: "dt.ps"; pt: "dt.pt"; pu: "dt.pu"; pv: "dt.pv"; pw: "dt.pw"; px: "dt.px"; py: "dt.py"; pz: "dt.pz"; qa: "dt.qa"; qb: "dt.qb"; qc: "dt.qc"; qd: "dt.qd"; qe: "dt.qe"; qf: "dt.qf"; qg: "dt.qg"; qh: "dt.qh"; qi: "dt.qi"; qj: "dt.qj"; qk: "dt.qk"; ql: "dt.ql"; qm: "dt.qm"; qn: "dt.qn"; qo: "dt.qo"; qp: "dt.qp"; qq: "dt.qq"; qr: "dt.qr"; qs: "dt.qs"; qt: "dt.qt"; qu: "dt.qu"; qv: "dt.qv"; qw: "dt.qw"; qx: "dt.qx"; qy: "dt.qy"; qz: "dt.qz"; ra: "dt.ra"; rb: "dt.rb"; rc: "dt.rc"; rd: "dt.rd"; re: "dt.re"; rf: "dt.rf"; rg: "dt.rg"; rh: "dt.rh"; ri: "dt.ri"; rj: "dt.rj"; rk: "dt.rk"; rl: "dt.rl"; rm: "dt.rm"; rn: "dt.rn"; ro: "dt.ro"; rp: "dt.rp"; rq: "dt.rq"; rr: "dt.rr"; rs: "dt.rs"; rt: "dt.rt"; ru: "dt.ru"; rv: "dt.rv"; rw: "dt.rw"; rx: "dt.rx"; ry: "dt.ry"; rz: "dt.rz"; sa: "dt.sa"; sb: "dt.sb"; sc: "dt.sc"; sd: "dt.sd"; se: "dt.se"; sf: "dt.sf"; sg: "dt.sg"; sh: "dt.sh"; si: "dt.si"; sj: "dt.sj"; sk: "dt.sk"; sl: "dt.sl"; sm: "dt.sm"; sn: "dt.sn"; so: "dt.so"; sp: "dt.sp"; sq: "dt.sq"; sr: "dt.sr"; ss: "dt.ss"; st: "dt.st"; su: "dt.su"; sv: "dt.sv"; sw: "dt.sw"; sx: "dt.sx"; sy: "dt.sy"; sz: "dt.sz"; ta: "dt.ta"; tb: "dt.tb"; tc: "dt.tc"; td: "dt.td"; te: "dt.te"; tf: "dt.tf"; tg: "dt.tg"; th: "dt.th"; ti: "dt.ti"; tj: "dt.tj"; tk: "dt.tk"; tl: "dt.tl"; tm: "dt.tm"; tn: "dt.tn"; to: "dt.to"; tp: "dt.tp"; tq: "dt.tq"; tr: "dt.tr"; ts: "dt.ts"; tt: "dt.tt"; tu: "dt.tu"; tv: "dt.tv"; tw: "dt.tw"; tx: "dt.tx"; ty: "dt.ty"; tz: "dt.tz"; ua: "dt.ua"; ub: "dt.ub"; uc: "dt.uc"; ud: "dt.ud"; ue: "dt.ue"; uf: "dt.uf"; ug: "dt.ug"; uh: "dt.uh"; ui: "dt.ui"; uj: "dt.uj"; uk: "dt.uk"; ul: "dt.ul"; um: "dt.um"; un: "dt.un"; uo: "dt.uo"; up: "dt.up"; uq: "dt.uq"; ur: "dt.ur"; us: "dt.us"; ut: "dt.ut"; uu: "dt.uu"; uv: "dt.uv"; uw: "dt.uw"; ux: "dt.ux"; uy: "dt.uy"; uz: "dt.uz"; va: "dt.va"; vb: "dt.vb"; vc: "dt.vc"; vd: "dt.vd"; ve: "dt.ve"; vf: "dt.vf"; vg: "dt.vg"; vh: "dt.vh"; vi: "dt.vi"; vj: "dt.vj"; vk: "dt.vk"; vl: "dt.vl"; vm: "dt.vm"; vn: "dt.vn"; vo: "dt.vo"; vp: "dt.vp"; vq: "dt.vq"; vr: "dt.vr"; vs: "dt.vs"; vt: "dt.vt"; vu: "dt.vu"; vv: "dt.vv"; vw: "dt.vw"; vx: "dt.vx"; vy: "dt.vy"; vz: "dt.vz"; wa: "dt.wa"; wb: "dt.wb"; wc: "dt.wc"; wd: "dt.wd"; we: "dt.we"; wf: "dt.wf"; wg: "dt.wg"; wh: "dt.wh"; wi: "dt.wi"; wj: "dt.wj"; wk: "dt.wk"; wl: "dt.wl"; wm: "dt.wm"; wn: "dt.wn"; wo: "dt.wo"; wp: "dt.wp"; wq: "dt.wq"; wr: "dt.wr"; ws: "dt.ws"; wt: "dt.wt"; wu: "dt.wu"; wv: "dt.wv"; ww: "dt.ww"; wx: "dt.wx"; wy: "dt.wy"; wz: "dt.wz"; xa: "dt.xa"; xb: "dt.xb"; xc: "dt.xc"; xd: "dt.xd"; xe: "dt.xe"; xf: "dt.xf"; xg: "dt.xg"; xh: "dt.xh"; xi: "dt.xi"; xj: "dt.xj"; xk: "dt.xk"; xl: "dt.xl"; xm: "dt.xm"; xn: "dt.xn"; xo: "dt.xo"; xp: "dt.xp"; xq: "dt.xq"; xr: "dt.xr"; xs: "dt.xs"; xt: "dt.xt"; xu: "dt.xu"; xv: "dt.xv"; xw: "dt.xw"; xx: "dt.xx"; xy: "dt.xy"; xz: "dt.xz"; ya: "dt.ya"; yb: "dt.yb"; yc: "dt.yc"; yd: "dt.yd"; ye: "dt.ye"; yf: "dt.yf"; yg: "dt.yg"; yh: "dt.yh"; yi: "dt.yi"; yj: "dt.yj"; yk: "dt.yk"; yl: "dt.yl"; ym: "dt.ym"; yn: "dt.yn"; yo: "dt.yo"; yp: "dt.yp"; yq: "dt.yq"; yr: "dt.yr"; ys: "dt.ys"; yt: "dt.yt"; yu: "dt.yu"; yv: "dt.yv"; yw: "dt.yw"; yx: "dt.yx"; yy: "dt.yy"; yz: "dt.yz"; za: "dt.za"; zb: "dt.zb"; zc: "dt.zc"; zd: "dt.zd"; ze: "dt.ze"; zf: "dt.zf"; zg: "dt.zg"; zh: "dt.zh"; zi: "dt.zi"; zj: "dt.zj"; zk: "dt.zk"; zl: "dt.zl"; zm: "dt.zm"; zn: "dt.zn"; zo: "dt.zo"; zp: "dt.zp"; zq: "dt.zq"; zr: "dt.zr"; zs: "dt.zs"; zt: "dt.zt"; zu: "dt.zu"; zv: "dt.zv"; zw: "dt.zw"; zx: "dt.zx"; zy: "dt.zy"; zz: "dt.zz"; }; du: { aa: "du.aa"; ab: "du.ab"; ac: "du.ac"; ad: "du.ad"; ae: "du.ae"; af: "du.af"; ag: "du.ag"; ah: "du.ah"; ai: "du.ai"; aj: "du.aj"; ak: "du.ak"; al: "du.al"; am: "du.am"; an: "du.an"; ao: "du.ao"; ap: "du.ap"; aq: "du.aq"; ar: "du.ar"; as: "du.as"; at: "du.at"; au: "du.au"; av: "du.av"; aw: "du.aw"; ax: "du.ax"; ay: "du.ay"; az: "du.az"; ba: "du.ba"; bb: "du.bb"; bc: "du.bc"; bd: "du.bd"; be: "du.be"; bf: "du.bf"; bg: "du.bg"; bh: "du.bh"; bi: "du.bi"; bj: "du.bj"; bk: "du.bk"; bl: "du.bl"; bm: "du.bm"; bn: "du.bn"; bo: "du.bo"; bp: "du.bp"; bq: "du.bq"; br: "du.br"; bs: "du.bs"; bt: "du.bt"; bu: "du.bu"; bv: "du.bv"; bw: "du.bw"; bx: "du.bx"; by: "du.by"; bz: "du.bz"; ca: "du.ca"; cb: "du.cb"; cc: "du.cc"; cd: "du.cd"; ce: "du.ce"; cf: "du.cf"; cg: "du.cg"; ch: "du.ch"; ci: "du.ci"; cj: "du.cj"; ck: "du.ck"; cl: "du.cl"; cm: "du.cm"; cn: "du.cn"; co: "du.co"; cp: "du.cp"; cq: "du.cq"; cr: "du.cr"; cs: "du.cs"; ct: "du.ct"; cu: "du.cu"; cv: "du.cv"; cw: "du.cw"; cx: "du.cx"; cy: "du.cy"; cz: "du.cz"; da: "du.da"; db: "du.db"; dc: "du.dc"; dd: "du.dd"; de: "du.de"; df: "du.df"; dg: "du.dg"; dh: "du.dh"; di: "du.di"; dj: "du.dj"; dk: "du.dk"; dl: "du.dl"; dm: "du.dm"; dn: "du.dn"; do: "du.do"; dp: "du.dp"; dq: "du.dq"; dr: "du.dr"; ds: "du.ds"; dt: "du.dt"; du: "du.du"; dv: "du.dv"; dw: "du.dw"; dx: "du.dx"; dy: "du.dy"; dz: "du.dz"; ea: "du.ea"; eb: "du.eb"; ec: "du.ec"; ed: "du.ed"; ee: "du.ee"; ef: "du.ef"; eg: "du.eg"; eh: "du.eh"; ei: "du.ei"; ej: "du.ej"; ek: "du.ek"; el: "du.el"; em: "du.em"; en: "du.en"; eo: "du.eo"; ep: "du.ep"; eq: "du.eq"; er: "du.er"; es: "du.es"; et: "du.et"; eu: "du.eu"; ev: "du.ev"; ew: "du.ew"; ex: "du.ex"; ey: "du.ey"; ez: "du.ez"; fa: "du.fa"; fb: "du.fb"; fc: "du.fc"; fd: "du.fd"; fe: "du.fe"; ff: "du.ff"; fg: "du.fg"; fh: "du.fh"; fi: "du.fi"; fj: "du.fj"; fk: "du.fk"; fl: "du.fl"; fm: "du.fm"; fn: "du.fn"; fo: "du.fo"; fp: "du.fp"; fq: "du.fq"; fr: "du.fr"; fs: "du.fs"; ft: "du.ft"; fu: "du.fu"; fv: "du.fv"; fw: "du.fw"; fx: "du.fx"; fy: "du.fy"; fz: "du.fz"; ga: "du.ga"; gb: "du.gb"; gc: "du.gc"; gd: "du.gd"; ge: "du.ge"; gf: "du.gf"; gg: "du.gg"; gh: "du.gh"; gi: "du.gi"; gj: "du.gj"; gk: "du.gk"; gl: "du.gl"; gm: "du.gm"; gn: "du.gn"; go: "du.go"; gp: "du.gp"; gq: "du.gq"; gr: "du.gr"; gs: "du.gs"; gt: "du.gt"; gu: "du.gu"; gv: "du.gv"; gw: "du.gw"; gx: "du.gx"; gy: "du.gy"; gz: "du.gz"; ha: "du.ha"; hb: "du.hb"; hc: "du.hc"; hd: "du.hd"; he: "du.he"; hf: "du.hf"; hg: "du.hg"; hh: "du.hh"; hi: "du.hi"; hj: "du.hj"; hk: "du.hk"; hl: "du.hl"; hm: "du.hm"; hn: "du.hn"; ho: "du.ho"; hp: "du.hp"; hq: "du.hq"; hr: "du.hr"; hs: "du.hs"; ht: "du.ht"; hu: "du.hu"; hv: "du.hv"; hw: "du.hw"; hx: "du.hx"; hy: "du.hy"; hz: "du.hz"; ia: "du.ia"; ib: "du.ib"; ic: "du.ic"; id: "du.id"; ie: "du.ie"; if: "du.if"; ig: "du.ig"; ih: "du.ih"; ii: "du.ii"; ij: "du.ij"; ik: "du.ik"; il: "du.il"; im: "du.im"; in: "du.in"; io: "du.io"; ip: "du.ip"; iq: "du.iq"; ir: "du.ir"; is: "du.is"; it: "du.it"; iu: "du.iu"; iv: "du.iv"; iw: "du.iw"; ix: "du.ix"; iy: "du.iy"; iz: "du.iz"; ja: "du.ja"; jb: "du.jb"; jc: "du.jc"; jd: "du.jd"; je: "du.je"; jf: "du.jf"; jg: "du.jg"; jh: "du.jh"; ji: "du.ji"; jj: "du.jj"; jk: "du.jk"; jl: "du.jl"; jm: "du.jm"; jn: "du.jn"; jo: "du.jo"; jp: "du.jp"; jq: "du.jq"; jr: "du.jr"; js: "du.js"; jt: "du.jt"; ju: "du.ju"; jv: "du.jv"; jw: "du.jw"; jx: "du.jx"; jy: "du.jy"; jz: "du.jz"; ka: "du.ka"; kb: "du.kb"; kc: "du.kc"; kd: "du.kd"; ke: "du.ke"; kf: "du.kf"; kg: "du.kg"; kh: "du.kh"; ki: "du.ki"; kj: "du.kj"; kk: "du.kk"; kl: "du.kl"; km: "du.km"; kn: "du.kn"; ko: "du.ko"; kp: "du.kp"; kq: "du.kq"; kr: "du.kr"; ks: "du.ks"; kt: "du.kt"; ku: "du.ku"; kv: "du.kv"; kw: "du.kw"; kx: "du.kx"; ky: "du.ky"; kz: "du.kz"; la: "du.la"; lb: "du.lb"; lc: "du.lc"; ld: "du.ld"; le: "du.le"; lf: "du.lf"; lg: "du.lg"; lh: "du.lh"; li: "du.li"; lj: "du.lj"; lk: "du.lk"; ll: "du.ll"; lm: "du.lm"; ln: "du.ln"; lo: "du.lo"; lp: "du.lp"; lq: "du.lq"; lr: "du.lr"; ls: "du.ls"; lt: "du.lt"; lu: "du.lu"; lv: "du.lv"; lw: "du.lw"; lx: "du.lx"; ly: "du.ly"; lz: "du.lz"; ma: "du.ma"; mb: "du.mb"; mc: "du.mc"; md: "du.md"; me: "du.me"; mf: "du.mf"; mg: "du.mg"; mh: "du.mh"; mi: "du.mi"; mj: "du.mj"; mk: "du.mk"; ml: "du.ml"; mm: "du.mm"; mn: "du.mn"; mo: "du.mo"; mp: "du.mp"; mq: "du.mq"; mr: "du.mr"; ms: "du.ms"; mt: "du.mt"; mu: "du.mu"; mv: "du.mv"; mw: "du.mw"; mx: "du.mx"; my: "du.my"; mz: "du.mz"; na: "du.na"; nb: "du.nb"; nc: "du.nc"; nd: "du.nd"; ne: "du.ne"; nf: "du.nf"; ng: "du.ng"; nh: "du.nh"; ni: "du.ni"; nj: "du.nj"; nk: "du.nk"; nl: "du.nl"; nm: "du.nm"; nn: "du.nn"; no: "du.no"; np: "du.np"; nq: "du.nq"; nr: "du.nr"; ns: "du.ns"; nt: "du.nt"; nu: "du.nu"; nv: "du.nv"; nw: "du.nw"; nx: "du.nx"; ny: "du.ny"; nz: "du.nz"; oa: "du.oa"; ob: "du.ob"; oc: "du.oc"; od: "du.od"; oe: "du.oe"; of: "du.of"; og: "du.og"; oh: "du.oh"; oi: "du.oi"; oj: "du.oj"; ok: "du.ok"; ol: "du.ol"; om: "du.om"; on: "du.on"; oo: "du.oo"; op: "du.op"; oq: "du.oq"; or: "du.or"; os: "du.os"; ot: "du.ot"; ou: "du.ou"; ov: "du.ov"; ow: "du.ow"; ox: "du.ox"; oy: "du.oy"; oz: "du.oz"; pa: "du.pa"; pb: "du.pb"; pc: "du.pc"; pd: "du.pd"; pe: "du.pe"; pf: "du.pf"; pg: "du.pg"; ph: "du.ph"; pi: "du.pi"; pj: "du.pj"; pk: "du.pk"; pl: "du.pl"; pm: "du.pm"; pn: "du.pn"; po: "du.po"; pp: "du.pp"; pq: "du.pq"; pr: "du.pr"; ps: "du.ps"; pt: "du.pt"; pu: "du.pu"; pv: "du.pv"; pw: "du.pw"; px: "du.px"; py: "du.py"; pz: "du.pz"; qa: "du.qa"; qb: "du.qb"; qc: "du.qc"; qd: "du.qd"; qe: "du.qe"; qf: "du.qf"; qg: "du.qg"; qh: "du.qh"; qi: "du.qi"; qj: "du.qj"; qk: "du.qk"; ql: "du.ql"; qm: "du.qm"; qn: "du.qn"; qo: "du.qo"; qp: "du.qp"; qq: "du.qq"; qr: "du.qr"; qs: "du.qs"; qt: "du.qt"; qu: "du.qu"; qv: "du.qv"; qw: "du.qw"; qx: "du.qx"; qy: "du.qy"; qz: "du.qz"; ra: "du.ra"; rb: "du.rb"; rc: "du.rc"; rd: "du.rd"; re: "du.re"; rf: "du.rf"; rg: "du.rg"; rh: "du.rh"; ri: "du.ri"; rj: "du.rj"; rk: "du.rk"; rl: "du.rl"; rm: "du.rm"; rn: "du.rn"; ro: "du.ro"; rp: "du.rp"; rq: "du.rq"; rr: "du.rr"; rs: "du.rs"; rt: "du.rt"; ru: "du.ru"; rv: "du.rv"; rw: "du.rw"; rx: "du.rx"; ry: "du.ry"; rz: "du.rz"; sa: "du.sa"; sb: "du.sb"; sc: "du.sc"; sd: "du.sd"; se: "du.se"; sf: "du.sf"; sg: "du.sg"; sh: "du.sh"; si: "du.si"; sj: "du.sj"; sk: "du.sk"; sl: "du.sl"; sm: "du.sm"; sn: "du.sn"; so: "du.so"; sp: "du.sp"; sq: "du.sq"; sr: "du.sr"; ss: "du.ss"; st: "du.st"; su: "du.su"; sv: "du.sv"; sw: "du.sw"; sx: "du.sx"; sy: "du.sy"; sz: "du.sz"; ta: "du.ta"; tb: "du.tb"; tc: "du.tc"; td: "du.td"; te: "du.te"; tf: "du.tf"; tg: "du.tg"; th: "du.th"; ti: "du.ti"; tj: "du.tj"; tk: "du.tk"; tl: "du.tl"; tm: "du.tm"; tn: "du.tn"; to: "du.to"; tp: "du.tp"; tq: "du.tq"; tr: "du.tr"; ts: "du.ts"; tt: "du.tt"; tu: "du.tu"; tv: "du.tv"; tw: "du.tw"; tx: "du.tx"; ty: "du.ty"; tz: "du.tz"; ua: "du.ua"; ub: "du.ub"; uc: "du.uc"; ud: "du.ud"; ue: "du.ue"; uf: "du.uf"; ug: "du.ug"; uh: "du.uh"; ui: "du.ui"; uj: "du.uj"; uk: "du.uk"; ul: "du.ul"; um: "du.um"; un: "du.un"; uo: "du.uo"; up: "du.up"; uq: "du.uq"; ur: "du.ur"; us: "du.us"; ut: "du.ut"; uu: "du.uu"; uv: "du.uv"; uw: "du.uw"; ux: "du.ux"; uy: "du.uy"; uz: "du.uz"; va: "du.va"; vb: "du.vb"; vc: "du.vc"; vd: "du.vd"; ve: "du.ve"; vf: "du.vf"; vg: "du.vg"; vh: "du.vh"; vi: "du.vi"; vj: "du.vj"; vk: "du.vk"; vl: "du.vl"; vm: "du.vm"; vn: "du.vn"; vo: "du.vo"; vp: "du.vp"; vq: "du.vq"; vr: "du.vr"; vs: "du.vs"; vt: "du.vt"; vu: "du.vu"; vv: "du.vv"; vw: "du.vw"; vx: "du.vx"; vy: "du.vy"; vz: "du.vz"; wa: "du.wa"; wb: "du.wb"; wc: "du.wc"; wd: "du.wd"; we: "du.we"; wf: "du.wf"; wg: "du.wg"; wh: "du.wh"; wi: "du.wi"; wj: "du.wj"; wk: "du.wk"; wl: "du.wl"; wm: "du.wm"; wn: "du.wn"; wo: "du.wo"; wp: "du.wp"; wq: "du.wq"; wr: "du.wr"; ws: "du.ws"; wt: "du.wt"; wu: "du.wu"; wv: "du.wv"; ww: "du.ww"; wx: "du.wx"; wy: "du.wy"; wz: "du.wz"; xa: "du.xa"; xb: "du.xb"; xc: "du.xc"; xd: "du.xd"; xe: "du.xe"; xf: "du.xf"; xg: "du.xg"; xh: "du.xh"; xi: "du.xi"; xj: "du.xj"; xk: "du.xk"; xl: "du.xl"; xm: "du.xm"; xn: "du.xn"; xo: "du.xo"; xp: "du.xp"; xq: "du.xq"; xr: "du.xr"; xs: "du.xs"; xt: "du.xt"; xu: "du.xu"; xv: "du.xv"; xw: "du.xw"; xx: "du.xx"; xy: "du.xy"; xz: "du.xz"; ya: "du.ya"; yb: "du.yb"; yc: "du.yc"; yd: "du.yd"; ye: "du.ye"; yf: "du.yf"; yg: "du.yg"; yh: "du.yh"; yi: "du.yi"; yj: "du.yj"; yk: "du.yk"; yl: "du.yl"; ym: "du.ym"; yn: "du.yn"; yo: "du.yo"; yp: "du.yp"; yq: "du.yq"; yr: "du.yr"; ys: "du.ys"; yt: "du.yt"; yu: "du.yu"; yv: "du.yv"; yw: "du.yw"; yx: "du.yx"; yy: "du.yy"; yz: "du.yz"; za: "du.za"; zb: "du.zb"; zc: "du.zc"; zd: "du.zd"; ze: "du.ze"; zf: "du.zf"; zg: "du.zg"; zh: "du.zh"; zi: "du.zi"; zj: "du.zj"; zk: "du.zk"; zl: "du.zl"; zm: "du.zm"; zn: "du.zn"; zo: "du.zo"; zp: "du.zp"; zq: "du.zq"; zr: "du.zr"; zs: "du.zs"; zt: "du.zt"; zu: "du.zu"; zv: "du.zv"; zw: "du.zw"; zx: "du.zx"; zy: "du.zy"; zz: "du.zz"; }; dv: { aa: "dv.aa"; ab: "dv.ab"; ac: "dv.ac"; ad: "dv.ad"; ae: "dv.ae"; af: "dv.af"; ag: "dv.ag"; ah: "dv.ah"; ai: "dv.ai"; aj: "dv.aj"; ak: "dv.ak"; al: "dv.al"; am: "dv.am"; an: "dv.an"; ao: "dv.ao"; ap: "dv.ap"; aq: "dv.aq"; ar: "dv.ar"; as: "dv.as"; at: "dv.at"; au: "dv.au"; av: "dv.av"; aw: "dv.aw"; ax: "dv.ax"; ay: "dv.ay"; az: "dv.az"; ba: "dv.ba"; bb: "dv.bb"; bc: "dv.bc"; bd: "dv.bd"; be: "dv.be"; bf: "dv.bf"; bg: "dv.bg"; bh: "dv.bh"; bi: "dv.bi"; bj: "dv.bj"; bk: "dv.bk"; bl: "dv.bl"; bm: "dv.bm"; bn: "dv.bn"; bo: "dv.bo"; bp: "dv.bp"; bq: "dv.bq"; br: "dv.br"; bs: "dv.bs"; bt: "dv.bt"; bu: "dv.bu"; bv: "dv.bv"; bw: "dv.bw"; bx: "dv.bx"; by: "dv.by"; bz: "dv.bz"; ca: "dv.ca"; cb: "dv.cb"; cc: "dv.cc"; cd: "dv.cd"; ce: "dv.ce"; cf: "dv.cf"; cg: "dv.cg"; ch: "dv.ch"; ci: "dv.ci"; cj: "dv.cj"; ck: "dv.ck"; cl: "dv.cl"; cm: "dv.cm"; cn: "dv.cn"; co: "dv.co"; cp: "dv.cp"; cq: "dv.cq"; cr: "dv.cr"; cs: "dv.cs"; ct: "dv.ct"; cu: "dv.cu"; cv: "dv.cv"; cw: "dv.cw"; cx: "dv.cx"; cy: "dv.cy"; cz: "dv.cz"; da: "dv.da"; db: "dv.db"; dc: "dv.dc"; dd: "dv.dd"; de: "dv.de"; df: "dv.df"; dg: "dv.dg"; dh: "dv.dh"; di: "dv.di"; dj: "dv.dj"; dk: "dv.dk"; dl: "dv.dl"; dm: "dv.dm"; dn: "dv.dn"; do: "dv.do"; dp: "dv.dp"; dq: "dv.dq"; dr: "dv.dr"; ds: "dv.ds"; dt: "dv.dt"; du: "dv.du"; dv: "dv.dv"; dw: "dv.dw"; dx: "dv.dx"; dy: "dv.dy"; dz: "dv.dz"; ea: "dv.ea"; eb: "dv.eb"; ec: "dv.ec"; ed: "dv.ed"; ee: "dv.ee"; ef: "dv.ef"; eg: "dv.eg"; eh: "dv.eh"; ei: "dv.ei"; ej: "dv.ej"; ek: "dv.ek"; el: "dv.el"; em: "dv.em"; en: "dv.en"; eo: "dv.eo"; ep: "dv.ep"; eq: "dv.eq"; er: "dv.er"; es: "dv.es"; et: "dv.et"; eu: "dv.eu"; ev: "dv.ev"; ew: "dv.ew"; ex: "dv.ex"; ey: "dv.ey"; ez: "dv.ez"; fa: "dv.fa"; fb: "dv.fb"; fc: "dv.fc"; fd: "dv.fd"; fe: "dv.fe"; ff: "dv.ff"; fg: "dv.fg"; fh: "dv.fh"; fi: "dv.fi"; fj: "dv.fj"; fk: "dv.fk"; fl: "dv.fl"; fm: "dv.fm"; fn: "dv.fn"; fo: "dv.fo"; fp: "dv.fp"; fq: "dv.fq"; fr: "dv.fr"; fs: "dv.fs"; ft: "dv.ft"; fu: "dv.fu"; fv: "dv.fv"; fw: "dv.fw"; fx: "dv.fx"; fy: "dv.fy"; fz: "dv.fz"; ga: "dv.ga"; gb: "dv.gb"; gc: "dv.gc"; gd: "dv.gd"; ge: "dv.ge"; gf: "dv.gf"; gg: "dv.gg"; gh: "dv.gh"; gi: "dv.gi"; gj: "dv.gj"; gk: "dv.gk"; gl: "dv.gl"; gm: "dv.gm"; gn: "dv.gn"; go: "dv.go"; gp: "dv.gp"; gq: "dv.gq"; gr: "dv.gr"; gs: "dv.gs"; gt: "dv.gt"; gu: "dv.gu"; gv: "dv.gv"; gw: "dv.gw"; gx: "dv.gx"; gy: "dv.gy"; gz: "dv.gz"; ha: "dv.ha"; hb: "dv.hb"; hc: "dv.hc"; hd: "dv.hd"; he: "dv.he"; hf: "dv.hf"; hg: "dv.hg"; hh: "dv.hh"; hi: "dv.hi"; hj: "dv.hj"; hk: "dv.hk"; hl: "dv.hl"; hm: "dv.hm"; hn: "dv.hn"; ho: "dv.ho"; hp: "dv.hp"; hq: "dv.hq"; hr: "dv.hr"; hs: "dv.hs"; ht: "dv.ht"; hu: "dv.hu"; hv: "dv.hv"; hw: "dv.hw"; hx: "dv.hx"; hy: "dv.hy"; hz: "dv.hz"; ia: "dv.ia"; ib: "dv.ib"; ic: "dv.ic"; id: "dv.id"; ie: "dv.ie"; if: "dv.if"; ig: "dv.ig"; ih: "dv.ih"; ii: "dv.ii"; ij: "dv.ij"; ik: "dv.ik"; il: "dv.il"; im: "dv.im"; in: "dv.in"; io: "dv.io"; ip: "dv.ip"; iq: "dv.iq"; ir: "dv.ir"; is: "dv.is"; it: "dv.it"; iu: "dv.iu"; iv: "dv.iv"; iw: "dv.iw"; ix: "dv.ix"; iy: "dv.iy"; iz: "dv.iz"; ja: "dv.ja"; jb: "dv.jb"; jc: "dv.jc"; jd: "dv.jd"; je: "dv.je"; jf: "dv.jf"; jg: "dv.jg"; jh: "dv.jh"; ji: "dv.ji"; jj: "dv.jj"; jk: "dv.jk"; jl: "dv.jl"; jm: "dv.jm"; jn: "dv.jn"; jo: "dv.jo"; jp: "dv.jp"; jq: "dv.jq"; jr: "dv.jr"; js: "dv.js"; jt: "dv.jt"; ju: "dv.ju"; jv: "dv.jv"; jw: "dv.jw"; jx: "dv.jx"; jy: "dv.jy"; jz: "dv.jz"; ka: "dv.ka"; kb: "dv.kb"; kc: "dv.kc"; kd: "dv.kd"; ke: "dv.ke"; kf: "dv.kf"; kg: "dv.kg"; kh: "dv.kh"; ki: "dv.ki"; kj: "dv.kj"; kk: "dv.kk"; kl: "dv.kl"; km: "dv.km"; kn: "dv.kn"; ko: "dv.ko"; kp: "dv.kp"; kq: "dv.kq"; kr: "dv.kr"; ks: "dv.ks"; kt: "dv.kt"; ku: "dv.ku"; kv: "dv.kv"; kw: "dv.kw"; kx: "dv.kx"; ky: "dv.ky"; kz: "dv.kz"; la: "dv.la"; lb: "dv.lb"; lc: "dv.lc"; ld: "dv.ld"; le: "dv.le"; lf: "dv.lf"; lg: "dv.lg"; lh: "dv.lh"; li: "dv.li"; lj: "dv.lj"; lk: "dv.lk"; ll: "dv.ll"; lm: "dv.lm"; ln: "dv.ln"; lo: "dv.lo"; lp: "dv.lp"; lq: "dv.lq"; lr: "dv.lr"; ls: "dv.ls"; lt: "dv.lt"; lu: "dv.lu"; lv: "dv.lv"; lw: "dv.lw"; lx: "dv.lx"; ly: "dv.ly"; lz: "dv.lz"; ma: "dv.ma"; mb: "dv.mb"; mc: "dv.mc"; md: "dv.md"; me: "dv.me"; mf: "dv.mf"; mg: "dv.mg"; mh: "dv.mh"; mi: "dv.mi"; mj: "dv.mj"; mk: "dv.mk"; ml: "dv.ml"; mm: "dv.mm"; mn: "dv.mn"; mo: "dv.mo"; mp: "dv.mp"; mq: "dv.mq"; mr: "dv.mr"; ms: "dv.ms"; mt: "dv.mt"; mu: "dv.mu"; mv: "dv.mv"; mw: "dv.mw"; mx: "dv.mx"; my: "dv.my"; mz: "dv.mz"; na: "dv.na"; nb: "dv.nb"; nc: "dv.nc"; nd: "dv.nd"; ne: "dv.ne"; nf: "dv.nf"; ng: "dv.ng"; nh: "dv.nh"; ni: "dv.ni"; nj: "dv.nj"; nk: "dv.nk"; nl: "dv.nl"; nm: "dv.nm"; nn: "dv.nn"; no: "dv.no"; np: "dv.np"; nq: "dv.nq"; nr: "dv.nr"; ns: "dv.ns"; nt: "dv.nt"; nu: "dv.nu"; nv: "dv.nv"; nw: "dv.nw"; nx: "dv.nx"; ny: "dv.ny"; nz: "dv.nz"; oa: "dv.oa"; ob: "dv.ob"; oc: "dv.oc"; od: "dv.od"; oe: "dv.oe"; of: "dv.of"; og: "dv.og"; oh: "dv.oh"; oi: "dv.oi"; oj: "dv.oj"; ok: "dv.ok"; ol: "dv.ol"; om: "dv.om"; on: "dv.on"; oo: "dv.oo"; op: "dv.op"; oq: "dv.oq"; or: "dv.or"; os: "dv.os"; ot: "dv.ot"; ou: "dv.ou"; ov: "dv.ov"; ow: "dv.ow"; ox: "dv.ox"; oy: "dv.oy"; oz: "dv.oz"; pa: "dv.pa"; pb: "dv.pb"; pc: "dv.pc"; pd: "dv.pd"; pe: "dv.pe"; pf: "dv.pf"; pg: "dv.pg"; ph: "dv.ph"; pi: "dv.pi"; pj: "dv.pj"; pk: "dv.pk"; pl: "dv.pl"; pm: "dv.pm"; pn: "dv.pn"; po: "dv.po"; pp: "dv.pp"; pq: "dv.pq"; pr: "dv.pr"; ps: "dv.ps"; pt: "dv.pt"; pu: "dv.pu"; pv: "dv.pv"; pw: "dv.pw"; px: "dv.px"; py: "dv.py"; pz: "dv.pz"; qa: "dv.qa"; qb: "dv.qb"; qc: "dv.qc"; qd: "dv.qd"; qe: "dv.qe"; qf: "dv.qf"; qg: "dv.qg"; qh: "dv.qh"; qi: "dv.qi"; qj: "dv.qj"; qk: "dv.qk"; ql: "dv.ql"; qm: "dv.qm"; qn: "dv.qn"; qo: "dv.qo"; qp: "dv.qp"; qq: "dv.qq"; qr: "dv.qr"; qs: "dv.qs"; qt: "dv.qt"; qu: "dv.qu"; qv: "dv.qv"; qw: "dv.qw"; qx: "dv.qx"; qy: "dv.qy"; qz: "dv.qz"; ra: "dv.ra"; rb: "dv.rb"; rc: "dv.rc"; rd: "dv.rd"; re: "dv.re"; rf: "dv.rf"; rg: "dv.rg"; rh: "dv.rh"; ri: "dv.ri"; rj: "dv.rj"; rk: "dv.rk"; rl: "dv.rl"; rm: "dv.rm"; rn: "dv.rn"; ro: "dv.ro"; rp: "dv.rp"; rq: "dv.rq"; rr: "dv.rr"; rs: "dv.rs"; rt: "dv.rt"; ru: "dv.ru"; rv: "dv.rv"; rw: "dv.rw"; rx: "dv.rx"; ry: "dv.ry"; rz: "dv.rz"; sa: "dv.sa"; sb: "dv.sb"; sc: "dv.sc"; sd: "dv.sd"; se: "dv.se"; sf: "dv.sf"; sg: "dv.sg"; sh: "dv.sh"; si: "dv.si"; sj: "dv.sj"; sk: "dv.sk"; sl: "dv.sl"; sm: "dv.sm"; sn: "dv.sn"; so: "dv.so"; sp: "dv.sp"; sq: "dv.sq"; sr: "dv.sr"; ss: "dv.ss"; st: "dv.st"; su: "dv.su"; sv: "dv.sv"; sw: "dv.sw"; sx: "dv.sx"; sy: "dv.sy"; sz: "dv.sz"; ta: "dv.ta"; tb: "dv.tb"; tc: "dv.tc"; td: "dv.td"; te: "dv.te"; tf: "dv.tf"; tg: "dv.tg"; th: "dv.th"; ti: "dv.ti"; tj: "dv.tj"; tk: "dv.tk"; tl: "dv.tl"; tm: "dv.tm"; tn: "dv.tn"; to: "dv.to"; tp: "dv.tp"; tq: "dv.tq"; tr: "dv.tr"; ts: "dv.ts"; tt: "dv.tt"; tu: "dv.tu"; tv: "dv.tv"; tw: "dv.tw"; tx: "dv.tx"; ty: "dv.ty"; tz: "dv.tz"; ua: "dv.ua"; ub: "dv.ub"; uc: "dv.uc"; ud: "dv.ud"; ue: "dv.ue"; uf: "dv.uf"; ug: "dv.ug"; uh: "dv.uh"; ui: "dv.ui"; uj: "dv.uj"; uk: "dv.uk"; ul: "dv.ul"; um: "dv.um"; un: "dv.un"; uo: "dv.uo"; up: "dv.up"; uq: "dv.uq"; ur: "dv.ur"; us: "dv.us"; ut: "dv.ut"; uu: "dv.uu"; uv: "dv.uv"; uw: "dv.uw"; ux: "dv.ux"; uy: "dv.uy"; uz: "dv.uz"; va: "dv.va"; vb: "dv.vb"; vc: "dv.vc"; vd: "dv.vd"; ve: "dv.ve"; vf: "dv.vf"; vg: "dv.vg"; vh: "dv.vh"; vi: "dv.vi"; vj: "dv.vj"; vk: "dv.vk"; vl: "dv.vl"; vm: "dv.vm"; vn: "dv.vn"; vo: "dv.vo"; vp: "dv.vp"; vq: "dv.vq"; vr: "dv.vr"; vs: "dv.vs"; vt: "dv.vt"; vu: "dv.vu"; vv: "dv.vv"; vw: "dv.vw"; vx: "dv.vx"; vy: "dv.vy"; vz: "dv.vz"; wa: "dv.wa"; wb: "dv.wb"; wc: "dv.wc"; wd: "dv.wd"; we: "dv.we"; wf: "dv.wf"; wg: "dv.wg"; wh: "dv.wh"; wi: "dv.wi"; wj: "dv.wj"; wk: "dv.wk"; wl: "dv.wl"; wm: "dv.wm"; wn: "dv.wn"; wo: "dv.wo"; wp: "dv.wp"; wq: "dv.wq"; wr: "dv.wr"; ws: "dv.ws"; wt: "dv.wt"; wu: "dv.wu"; wv: "dv.wv"; ww: "dv.ww"; wx: "dv.wx"; wy: "dv.wy"; wz: "dv.wz"; xa: "dv.xa"; xb: "dv.xb"; xc: "dv.xc"; xd: "dv.xd"; xe: "dv.xe"; xf: "dv.xf"; xg: "dv.xg"; xh: "dv.xh"; xi: "dv.xi"; xj: "dv.xj"; xk: "dv.xk"; xl: "dv.xl"; xm: "dv.xm"; xn: "dv.xn"; xo: "dv.xo"; xp: "dv.xp"; xq: "dv.xq"; xr: "dv.xr"; xs: "dv.xs"; xt: "dv.xt"; xu: "dv.xu"; xv: "dv.xv"; xw: "dv.xw"; xx: "dv.xx"; xy: "dv.xy"; xz: "dv.xz"; ya: "dv.ya"; yb: "dv.yb"; yc: "dv.yc"; yd: "dv.yd"; ye: "dv.ye"; yf: "dv.yf"; yg: "dv.yg"; yh: "dv.yh"; yi: "dv.yi"; yj: "dv.yj"; yk: "dv.yk"; yl: "dv.yl"; ym: "dv.ym"; yn: "dv.yn"; yo: "dv.yo"; yp: "dv.yp"; yq: "dv.yq"; yr: "dv.yr"; ys: "dv.ys"; yt: "dv.yt"; yu: "dv.yu"; yv: "dv.yv"; yw: "dv.yw"; yx: "dv.yx"; yy: "dv.yy"; yz: "dv.yz"; za: "dv.za"; zb: "dv.zb"; zc: "dv.zc"; zd: "dv.zd"; ze: "dv.ze"; zf: "dv.zf"; zg: "dv.zg"; zh: "dv.zh"; zi: "dv.zi"; zj: "dv.zj"; zk: "dv.zk"; zl: "dv.zl"; zm: "dv.zm"; zn: "dv.zn"; zo: "dv.zo"; zp: "dv.zp"; zq: "dv.zq"; zr: "dv.zr"; zs: "dv.zs"; zt: "dv.zt"; zu: "dv.zu"; zv: "dv.zv"; zw: "dv.zw"; zx: "dv.zx"; zy: "dv.zy"; zz: "dv.zz"; }; dw: { aa: "dw.aa"; ab: "dw.ab"; ac: "dw.ac"; ad: "dw.ad"; ae: "dw.ae"; af: "dw.af"; ag: "dw.ag"; ah: "dw.ah"; ai: "dw.ai"; aj: "dw.aj"; ak: "dw.ak"; al: "dw.al"; am: "dw.am"; an: "dw.an"; ao: "dw.ao"; ap: "dw.ap"; aq: "dw.aq"; ar: "dw.ar"; as: "dw.as"; at: "dw.at"; au: "dw.au"; av: "dw.av"; aw: "dw.aw"; ax: "dw.ax"; ay: "dw.ay"; az: "dw.az"; ba: "dw.ba"; bb: "dw.bb"; bc: "dw.bc"; bd: "dw.bd"; be: "dw.be"; bf: "dw.bf"; bg: "dw.bg"; bh: "dw.bh"; bi: "dw.bi"; bj: "dw.bj"; bk: "dw.bk"; bl: "dw.bl"; bm: "dw.bm"; bn: "dw.bn"; bo: "dw.bo"; bp: "dw.bp"; bq: "dw.bq"; br: "dw.br"; bs: "dw.bs"; bt: "dw.bt"; bu: "dw.bu"; bv: "dw.bv"; bw: "dw.bw"; bx: "dw.bx"; by: "dw.by"; bz: "dw.bz"; ca: "dw.ca"; cb: "dw.cb"; cc: "dw.cc"; cd: "dw.cd"; ce: "dw.ce"; cf: "dw.cf"; cg: "dw.cg"; ch: "dw.ch"; ci: "dw.ci"; cj: "dw.cj"; ck: "dw.ck"; cl: "dw.cl"; cm: "dw.cm"; cn: "dw.cn"; co: "dw.co"; cp: "dw.cp"; cq: "dw.cq"; cr: "dw.cr"; cs: "dw.cs"; ct: "dw.ct"; cu: "dw.cu"; cv: "dw.cv"; cw: "dw.cw"; cx: "dw.cx"; cy: "dw.cy"; cz: "dw.cz"; da: "dw.da"; db: "dw.db"; dc: "dw.dc"; dd: "dw.dd"; de: "dw.de"; df: "dw.df"; dg: "dw.dg"; dh: "dw.dh"; di: "dw.di"; dj: "dw.dj"; dk: "dw.dk"; dl: "dw.dl"; dm: "dw.dm"; dn: "dw.dn"; do: "dw.do"; dp: "dw.dp"; dq: "dw.dq"; dr: "dw.dr"; ds: "dw.ds"; dt: "dw.dt"; du: "dw.du"; dv: "dw.dv"; dw: "dw.dw"; dx: "dw.dx"; dy: "dw.dy"; dz: "dw.dz"; ea: "dw.ea"; eb: "dw.eb"; ec: "dw.ec"; ed: "dw.ed"; ee: "dw.ee"; ef: "dw.ef"; eg: "dw.eg"; eh: "dw.eh"; ei: "dw.ei"; ej: "dw.ej"; ek: "dw.ek"; el: "dw.el"; em: "dw.em"; en: "dw.en"; eo: "dw.eo"; ep: "dw.ep"; eq: "dw.eq"; er: "dw.er"; es: "dw.es"; et: "dw.et"; eu: "dw.eu"; ev: "dw.ev"; ew: "dw.ew"; ex: "dw.ex"; ey: "dw.ey"; ez: "dw.ez"; fa: "dw.fa"; fb: "dw.fb"; fc: "dw.fc"; fd: "dw.fd"; fe: "dw.fe"; ff: "dw.ff"; fg: "dw.fg"; fh: "dw.fh"; fi: "dw.fi"; fj: "dw.fj"; fk: "dw.fk"; fl: "dw.fl"; fm: "dw.fm"; fn: "dw.fn"; fo: "dw.fo"; fp: "dw.fp"; fq: "dw.fq"; fr: "dw.fr"; fs: "dw.fs"; ft: "dw.ft"; fu: "dw.fu"; fv: "dw.fv"; fw: "dw.fw"; fx: "dw.fx"; fy: "dw.fy"; fz: "dw.fz"; ga: "dw.ga"; gb: "dw.gb"; gc: "dw.gc"; gd: "dw.gd"; ge: "dw.ge"; gf: "dw.gf"; gg: "dw.gg"; gh: "dw.gh"; gi: "dw.gi"; gj: "dw.gj"; gk: "dw.gk"; gl: "dw.gl"; gm: "dw.gm"; gn: "dw.gn"; go: "dw.go"; gp: "dw.gp"; gq: "dw.gq"; gr: "dw.gr"; gs: "dw.gs"; gt: "dw.gt"; gu: "dw.gu"; gv: "dw.gv"; gw: "dw.gw"; gx: "dw.gx"; gy: "dw.gy"; gz: "dw.gz"; ha: "dw.ha"; hb: "dw.hb"; hc: "dw.hc"; hd: "dw.hd"; he: "dw.he"; hf: "dw.hf"; hg: "dw.hg"; hh: "dw.hh"; hi: "dw.hi"; hj: "dw.hj"; hk: "dw.hk"; hl: "dw.hl"; hm: "dw.hm"; hn: "dw.hn"; ho: "dw.ho"; hp: "dw.hp"; hq: "dw.hq"; hr: "dw.hr"; hs: "dw.hs"; ht: "dw.ht"; hu: "dw.hu"; hv: "dw.hv"; hw: "dw.hw"; hx: "dw.hx"; hy: "dw.hy"; hz: "dw.hz"; ia: "dw.ia"; ib: "dw.ib"; ic: "dw.ic"; id: "dw.id"; ie: "dw.ie"; if: "dw.if"; ig: "dw.ig"; ih: "dw.ih"; ii: "dw.ii"; ij: "dw.ij"; ik: "dw.ik"; il: "dw.il"; im: "dw.im"; in: "dw.in"; io: "dw.io"; ip: "dw.ip"; iq: "dw.iq"; ir: "dw.ir"; is: "dw.is"; it: "dw.it"; iu: "dw.iu"; iv: "dw.iv"; iw: "dw.iw"; ix: "dw.ix"; iy: "dw.iy"; iz: "dw.iz"; ja: "dw.ja"; jb: "dw.jb"; jc: "dw.jc"; jd: "dw.jd"; je: "dw.je"; jf: "dw.jf"; jg: "dw.jg"; jh: "dw.jh"; ji: "dw.ji"; jj: "dw.jj"; jk: "dw.jk"; jl: "dw.jl"; jm: "dw.jm"; jn: "dw.jn"; jo: "dw.jo"; jp: "dw.jp"; jq: "dw.jq"; jr: "dw.jr"; js: "dw.js"; jt: "dw.jt"; ju: "dw.ju"; jv: "dw.jv"; jw: "dw.jw"; jx: "dw.jx"; jy: "dw.jy"; jz: "dw.jz"; ka: "dw.ka"; kb: "dw.kb"; kc: "dw.kc"; kd: "dw.kd"; ke: "dw.ke"; kf: "dw.kf"; kg: "dw.kg"; kh: "dw.kh"; ki: "dw.ki"; kj: "dw.kj"; kk: "dw.kk"; kl: "dw.kl"; km: "dw.km"; kn: "dw.kn"; ko: "dw.ko"; kp: "dw.kp"; kq: "dw.kq"; kr: "dw.kr"; ks: "dw.ks"; kt: "dw.kt"; ku: "dw.ku"; kv: "dw.kv"; kw: "dw.kw"; kx: "dw.kx"; ky: "dw.ky"; kz: "dw.kz"; la: "dw.la"; lb: "dw.lb"; lc: "dw.lc"; ld: "dw.ld"; le: "dw.le"; lf: "dw.lf"; lg: "dw.lg"; lh: "dw.lh"; li: "dw.li"; lj: "dw.lj"; lk: "dw.lk"; ll: "dw.ll"; lm: "dw.lm"; ln: "dw.ln"; lo: "dw.lo"; lp: "dw.lp"; lq: "dw.lq"; lr: "dw.lr"; ls: "dw.ls"; lt: "dw.lt"; lu: "dw.lu"; lv: "dw.lv"; lw: "dw.lw"; lx: "dw.lx"; ly: "dw.ly"; lz: "dw.lz"; ma: "dw.ma"; mb: "dw.mb"; mc: "dw.mc"; md: "dw.md"; me: "dw.me"; mf: "dw.mf"; mg: "dw.mg"; mh: "dw.mh"; mi: "dw.mi"; mj: "dw.mj"; mk: "dw.mk"; ml: "dw.ml"; mm: "dw.mm"; mn: "dw.mn"; mo: "dw.mo"; mp: "dw.mp"; mq: "dw.mq"; mr: "dw.mr"; ms: "dw.ms"; mt: "dw.mt"; mu: "dw.mu"; mv: "dw.mv"; mw: "dw.mw"; mx: "dw.mx"; my: "dw.my"; mz: "dw.mz"; na: "dw.na"; nb: "dw.nb"; nc: "dw.nc"; nd: "dw.nd"; ne: "dw.ne"; nf: "dw.nf"; ng: "dw.ng"; nh: "dw.nh"; ni: "dw.ni"; nj: "dw.nj"; nk: "dw.nk"; nl: "dw.nl"; nm: "dw.nm"; nn: "dw.nn"; no: "dw.no"; np: "dw.np"; nq: "dw.nq"; nr: "dw.nr"; ns: "dw.ns"; nt: "dw.nt"; nu: "dw.nu"; nv: "dw.nv"; nw: "dw.nw"; nx: "dw.nx"; ny: "dw.ny"; nz: "dw.nz"; oa: "dw.oa"; ob: "dw.ob"; oc: "dw.oc"; od: "dw.od"; oe: "dw.oe"; of: "dw.of"; og: "dw.og"; oh: "dw.oh"; oi: "dw.oi"; oj: "dw.oj"; ok: "dw.ok"; ol: "dw.ol"; om: "dw.om"; on: "dw.on"; oo: "dw.oo"; op: "dw.op"; oq: "dw.oq"; or: "dw.or"; os: "dw.os"; ot: "dw.ot"; ou: "dw.ou"; ov: "dw.ov"; ow: "dw.ow"; ox: "dw.ox"; oy: "dw.oy"; oz: "dw.oz"; pa: "dw.pa"; pb: "dw.pb"; pc: "dw.pc"; pd: "dw.pd"; pe: "dw.pe"; pf: "dw.pf"; pg: "dw.pg"; ph: "dw.ph"; pi: "dw.pi"; pj: "dw.pj"; pk: "dw.pk"; pl: "dw.pl"; pm: "dw.pm"; pn: "dw.pn"; po: "dw.po"; pp: "dw.pp"; pq: "dw.pq"; pr: "dw.pr"; ps: "dw.ps"; pt: "dw.pt"; pu: "dw.pu"; pv: "dw.pv"; pw: "dw.pw"; px: "dw.px"; py: "dw.py"; pz: "dw.pz"; qa: "dw.qa"; qb: "dw.qb"; qc: "dw.qc"; qd: "dw.qd"; qe: "dw.qe"; qf: "dw.qf"; qg: "dw.qg"; qh: "dw.qh"; qi: "dw.qi"; qj: "dw.qj"; qk: "dw.qk"; ql: "dw.ql"; qm: "dw.qm"; qn: "dw.qn"; qo: "dw.qo"; qp: "dw.qp"; qq: "dw.qq"; qr: "dw.qr"; qs: "dw.qs"; qt: "dw.qt"; qu: "dw.qu"; qv: "dw.qv"; qw: "dw.qw"; qx: "dw.qx"; qy: "dw.qy"; qz: "dw.qz"; ra: "dw.ra"; rb: "dw.rb"; rc: "dw.rc"; rd: "dw.rd"; re: "dw.re"; rf: "dw.rf"; rg: "dw.rg"; rh: "dw.rh"; ri: "dw.ri"; rj: "dw.rj"; rk: "dw.rk"; rl: "dw.rl"; rm: "dw.rm"; rn: "dw.rn"; ro: "dw.ro"; rp: "dw.rp"; rq: "dw.rq"; rr: "dw.rr"; rs: "dw.rs"; rt: "dw.rt"; ru: "dw.ru"; rv: "dw.rv"; rw: "dw.rw"; rx: "dw.rx"; ry: "dw.ry"; rz: "dw.rz"; sa: "dw.sa"; sb: "dw.sb"; sc: "dw.sc"; sd: "dw.sd"; se: "dw.se"; sf: "dw.sf"; sg: "dw.sg"; sh: "dw.sh"; si: "dw.si"; sj: "dw.sj"; sk: "dw.sk"; sl: "dw.sl"; sm: "dw.sm"; sn: "dw.sn"; so: "dw.so"; sp: "dw.sp"; sq: "dw.sq"; sr: "dw.sr"; ss: "dw.ss"; st: "dw.st"; su: "dw.su"; sv: "dw.sv"; sw: "dw.sw"; sx: "dw.sx"; sy: "dw.sy"; sz: "dw.sz"; ta: "dw.ta"; tb: "dw.tb"; tc: "dw.tc"; td: "dw.td"; te: "dw.te"; tf: "dw.tf"; tg: "dw.tg"; th: "dw.th"; ti: "dw.ti"; tj: "dw.tj"; tk: "dw.tk"; tl: "dw.tl"; tm: "dw.tm"; tn: "dw.tn"; to: "dw.to"; tp: "dw.tp"; tq: "dw.tq"; tr: "dw.tr"; ts: "dw.ts"; tt: "dw.tt"; tu: "dw.tu"; tv: "dw.tv"; tw: "dw.tw"; tx: "dw.tx"; ty: "dw.ty"; tz: "dw.tz"; ua: "dw.ua"; ub: "dw.ub"; uc: "dw.uc"; ud: "dw.ud"; ue: "dw.ue"; uf: "dw.uf"; ug: "dw.ug"; uh: "dw.uh"; ui: "dw.ui"; uj: "dw.uj"; uk: "dw.uk"; ul: "dw.ul"; um: "dw.um"; un: "dw.un"; uo: "dw.uo"; up: "dw.up"; uq: "dw.uq"; ur: "dw.ur"; us: "dw.us"; ut: "dw.ut"; uu: "dw.uu"; uv: "dw.uv"; uw: "dw.uw"; ux: "dw.ux"; uy: "dw.uy"; uz: "dw.uz"; va: "dw.va"; vb: "dw.vb"; vc: "dw.vc"; vd: "dw.vd"; ve: "dw.ve"; vf: "dw.vf"; vg: "dw.vg"; vh: "dw.vh"; vi: "dw.vi"; vj: "dw.vj"; vk: "dw.vk"; vl: "dw.vl"; vm: "dw.vm"; vn: "dw.vn"; vo: "dw.vo"; vp: "dw.vp"; vq: "dw.vq"; vr: "dw.vr"; vs: "dw.vs"; vt: "dw.vt"; vu: "dw.vu"; vv: "dw.vv"; vw: "dw.vw"; vx: "dw.vx"; vy: "dw.vy"; vz: "dw.vz"; wa: "dw.wa"; wb: "dw.wb"; wc: "dw.wc"; wd: "dw.wd"; we: "dw.we"; wf: "dw.wf"; wg: "dw.wg"; wh: "dw.wh"; wi: "dw.wi"; wj: "dw.wj"; wk: "dw.wk"; wl: "dw.wl"; wm: "dw.wm"; wn: "dw.wn"; wo: "dw.wo"; wp: "dw.wp"; wq: "dw.wq"; wr: "dw.wr"; ws: "dw.ws"; wt: "dw.wt"; wu: "dw.wu"; wv: "dw.wv"; ww: "dw.ww"; wx: "dw.wx"; wy: "dw.wy"; wz: "dw.wz"; xa: "dw.xa"; xb: "dw.xb"; xc: "dw.xc"; xd: "dw.xd"; xe: "dw.xe"; xf: "dw.xf"; xg: "dw.xg"; xh: "dw.xh"; xi: "dw.xi"; xj: "dw.xj"; xk: "dw.xk"; xl: "dw.xl"; xm: "dw.xm"; xn: "dw.xn"; xo: "dw.xo"; xp: "dw.xp"; xq: "dw.xq"; xr: "dw.xr"; xs: "dw.xs"; xt: "dw.xt"; xu: "dw.xu"; xv: "dw.xv"; xw: "dw.xw"; xx: "dw.xx"; xy: "dw.xy"; xz: "dw.xz"; ya: "dw.ya"; yb: "dw.yb"; yc: "dw.yc"; yd: "dw.yd"; ye: "dw.ye"; yf: "dw.yf"; yg: "dw.yg"; yh: "dw.yh"; yi: "dw.yi"; yj: "dw.yj"; yk: "dw.yk"; yl: "dw.yl"; ym: "dw.ym"; yn: "dw.yn"; yo: "dw.yo"; yp: "dw.yp"; yq: "dw.yq"; yr: "dw.yr"; ys: "dw.ys"; yt: "dw.yt"; yu: "dw.yu"; yv: "dw.yv"; yw: "dw.yw"; yx: "dw.yx"; yy: "dw.yy"; yz: "dw.yz"; za: "dw.za"; zb: "dw.zb"; zc: "dw.zc"; zd: "dw.zd"; ze: "dw.ze"; zf: "dw.zf"; zg: "dw.zg"; zh: "dw.zh"; zi: "dw.zi"; zj: "dw.zj"; zk: "dw.zk"; zl: "dw.zl"; zm: "dw.zm"; zn: "dw.zn"; zo: "dw.zo"; zp: "dw.zp"; zq: "dw.zq"; zr: "dw.zr"; zs: "dw.zs"; zt: "dw.zt"; zu: "dw.zu"; zv: "dw.zv"; zw: "dw.zw"; zx: "dw.zx"; zy: "dw.zy"; zz: "dw.zz"; }; dx: { aa: "dx.aa"; ab: "dx.ab"; ac: "dx.ac"; ad: "dx.ad"; ae: "dx.ae"; af: "dx.af"; ag: "dx.ag"; ah: "dx.ah"; ai: "dx.ai"; aj: "dx.aj"; ak: "dx.ak"; al: "dx.al"; am: "dx.am"; an: "dx.an"; ao: "dx.ao"; ap: "dx.ap"; aq: "dx.aq"; ar: "dx.ar"; as: "dx.as"; at: "dx.at"; au: "dx.au"; av: "dx.av"; aw: "dx.aw"; ax: "dx.ax"; ay: "dx.ay"; az: "dx.az"; ba: "dx.ba"; bb: "dx.bb"; bc: "dx.bc"; bd: "dx.bd"; be: "dx.be"; bf: "dx.bf"; bg: "dx.bg"; bh: "dx.bh"; bi: "dx.bi"; bj: "dx.bj"; bk: "dx.bk"; bl: "dx.bl"; bm: "dx.bm"; bn: "dx.bn"; bo: "dx.bo"; bp: "dx.bp"; bq: "dx.bq"; br: "dx.br"; bs: "dx.bs"; bt: "dx.bt"; bu: "dx.bu"; bv: "dx.bv"; bw: "dx.bw"; bx: "dx.bx"; by: "dx.by"; bz: "dx.bz"; ca: "dx.ca"; cb: "dx.cb"; cc: "dx.cc"; cd: "dx.cd"; ce: "dx.ce"; cf: "dx.cf"; cg: "dx.cg"; ch: "dx.ch"; ci: "dx.ci"; cj: "dx.cj"; ck: "dx.ck"; cl: "dx.cl"; cm: "dx.cm"; cn: "dx.cn"; co: "dx.co"; cp: "dx.cp"; cq: "dx.cq"; cr: "dx.cr"; cs: "dx.cs"; ct: "dx.ct"; cu: "dx.cu"; cv: "dx.cv"; cw: "dx.cw"; cx: "dx.cx"; cy: "dx.cy"; cz: "dx.cz"; da: "dx.da"; db: "dx.db"; dc: "dx.dc"; dd: "dx.dd"; de: "dx.de"; df: "dx.df"; dg: "dx.dg"; dh: "dx.dh"; di: "dx.di"; dj: "dx.dj"; dk: "dx.dk"; dl: "dx.dl"; dm: "dx.dm"; dn: "dx.dn"; do: "dx.do"; dp: "dx.dp"; dq: "dx.dq"; dr: "dx.dr"; ds: "dx.ds"; dt: "dx.dt"; du: "dx.du"; dv: "dx.dv"; dw: "dx.dw"; dx: "dx.dx"; dy: "dx.dy"; dz: "dx.dz"; ea: "dx.ea"; eb: "dx.eb"; ec: "dx.ec"; ed: "dx.ed"; ee: "dx.ee"; ef: "dx.ef"; eg: "dx.eg"; eh: "dx.eh"; ei: "dx.ei"; ej: "dx.ej"; ek: "dx.ek"; el: "dx.el"; em: "dx.em"; en: "dx.en"; eo: "dx.eo"; ep: "dx.ep"; eq: "dx.eq"; er: "dx.er"; es: "dx.es"; et: "dx.et"; eu: "dx.eu"; ev: "dx.ev"; ew: "dx.ew"; ex: "dx.ex"; ey: "dx.ey"; ez: "dx.ez"; fa: "dx.fa"; fb: "dx.fb"; fc: "dx.fc"; fd: "dx.fd"; fe: "dx.fe"; ff: "dx.ff"; fg: "dx.fg"; fh: "dx.fh"; fi: "dx.fi"; fj: "dx.fj"; fk: "dx.fk"; fl: "dx.fl"; fm: "dx.fm"; fn: "dx.fn"; fo: "dx.fo"; fp: "dx.fp"; fq: "dx.fq"; fr: "dx.fr"; fs: "dx.fs"; ft: "dx.ft"; fu: "dx.fu"; fv: "dx.fv"; fw: "dx.fw"; fx: "dx.fx"; fy: "dx.fy"; fz: "dx.fz"; ga: "dx.ga"; gb: "dx.gb"; gc: "dx.gc"; gd: "dx.gd"; ge: "dx.ge"; gf: "dx.gf"; gg: "dx.gg"; gh: "dx.gh"; gi: "dx.gi"; gj: "dx.gj"; gk: "dx.gk"; gl: "dx.gl"; gm: "dx.gm"; gn: "dx.gn"; go: "dx.go"; gp: "dx.gp"; gq: "dx.gq"; gr: "dx.gr"; gs: "dx.gs"; gt: "dx.gt"; gu: "dx.gu"; gv: "dx.gv"; gw: "dx.gw"; gx: "dx.gx"; gy: "dx.gy"; gz: "dx.gz"; ha: "dx.ha"; hb: "dx.hb"; hc: "dx.hc"; hd: "dx.hd"; he: "dx.he"; hf: "dx.hf"; hg: "dx.hg"; hh: "dx.hh"; hi: "dx.hi"; hj: "dx.hj"; hk: "dx.hk"; hl: "dx.hl"; hm: "dx.hm"; hn: "dx.hn"; ho: "dx.ho"; hp: "dx.hp"; hq: "dx.hq"; hr: "dx.hr"; hs: "dx.hs"; ht: "dx.ht"; hu: "dx.hu"; hv: "dx.hv"; hw: "dx.hw"; hx: "dx.hx"; hy: "dx.hy"; hz: "dx.hz"; ia: "dx.ia"; ib: "dx.ib"; ic: "dx.ic"; id: "dx.id"; ie: "dx.ie"; if: "dx.if"; ig: "dx.ig"; ih: "dx.ih"; ii: "dx.ii"; ij: "dx.ij"; ik: "dx.ik"; il: "dx.il"; im: "dx.im"; in: "dx.in"; io: "dx.io"; ip: "dx.ip"; iq: "dx.iq"; ir: "dx.ir"; is: "dx.is"; it: "dx.it"; iu: "dx.iu"; iv: "dx.iv"; iw: "dx.iw"; ix: "dx.ix"; iy: "dx.iy"; iz: "dx.iz"; ja: "dx.ja"; jb: "dx.jb"; jc: "dx.jc"; jd: "dx.jd"; je: "dx.je"; jf: "dx.jf"; jg: "dx.jg"; jh: "dx.jh"; ji: "dx.ji"; jj: "dx.jj"; jk: "dx.jk"; jl: "dx.jl"; jm: "dx.jm"; jn: "dx.jn"; jo: "dx.jo"; jp: "dx.jp"; jq: "dx.jq"; jr: "dx.jr"; js: "dx.js"; jt: "dx.jt"; ju: "dx.ju"; jv: "dx.jv"; jw: "dx.jw"; jx: "dx.jx"; jy: "dx.jy"; jz: "dx.jz"; ka: "dx.ka"; kb: "dx.kb"; kc: "dx.kc"; kd: "dx.kd"; ke: "dx.ke"; kf: "dx.kf"; kg: "dx.kg"; kh: "dx.kh"; ki: "dx.ki"; kj: "dx.kj"; kk: "dx.kk"; kl: "dx.kl"; km: "dx.km"; kn: "dx.kn"; ko: "dx.ko"; kp: "dx.kp"; kq: "dx.kq"; kr: "dx.kr"; ks: "dx.ks"; kt: "dx.kt"; ku: "dx.ku"; kv: "dx.kv"; kw: "dx.kw"; kx: "dx.kx"; ky: "dx.ky"; kz: "dx.kz"; la: "dx.la"; lb: "dx.lb"; lc: "dx.lc"; ld: "dx.ld"; le: "dx.le"; lf: "dx.lf"; lg: "dx.lg"; lh: "dx.lh"; li: "dx.li"; lj: "dx.lj"; lk: "dx.lk"; ll: "dx.ll"; lm: "dx.lm"; ln: "dx.ln"; lo: "dx.lo"; lp: "dx.lp"; lq: "dx.lq"; lr: "dx.lr"; ls: "dx.ls"; lt: "dx.lt"; lu: "dx.lu"; lv: "dx.lv"; lw: "dx.lw"; lx: "dx.lx"; ly: "dx.ly"; lz: "dx.lz"; ma: "dx.ma"; mb: "dx.mb"; mc: "dx.mc"; md: "dx.md"; me: "dx.me"; mf: "dx.mf"; mg: "dx.mg"; mh: "dx.mh"; mi: "dx.mi"; mj: "dx.mj"; mk: "dx.mk"; ml: "dx.ml"; mm: "dx.mm"; mn: "dx.mn"; mo: "dx.mo"; mp: "dx.mp"; mq: "dx.mq"; mr: "dx.mr"; ms: "dx.ms"; mt: "dx.mt"; mu: "dx.mu"; mv: "dx.mv"; mw: "dx.mw"; mx: "dx.mx"; my: "dx.my"; mz: "dx.mz"; na: "dx.na"; nb: "dx.nb"; nc: "dx.nc"; nd: "dx.nd"; ne: "dx.ne"; nf: "dx.nf"; ng: "dx.ng"; nh: "dx.nh"; ni: "dx.ni"; nj: "dx.nj"; nk: "dx.nk"; nl: "dx.nl"; nm: "dx.nm"; nn: "dx.nn"; no: "dx.no"; np: "dx.np"; nq: "dx.nq"; nr: "dx.nr"; ns: "dx.ns"; nt: "dx.nt"; nu: "dx.nu"; nv: "dx.nv"; nw: "dx.nw"; nx: "dx.nx"; ny: "dx.ny"; nz: "dx.nz"; oa: "dx.oa"; ob: "dx.ob"; oc: "dx.oc"; od: "dx.od"; oe: "dx.oe"; of: "dx.of"; og: "dx.og"; oh: "dx.oh"; oi: "dx.oi"; oj: "dx.oj"; ok: "dx.ok"; ol: "dx.ol"; om: "dx.om"; on: "dx.on"; oo: "dx.oo"; op: "dx.op"; oq: "dx.oq"; or: "dx.or"; os: "dx.os"; ot: "dx.ot"; ou: "dx.ou"; ov: "dx.ov"; ow: "dx.ow"; ox: "dx.ox"; oy: "dx.oy"; oz: "dx.oz"; pa: "dx.pa"; pb: "dx.pb"; pc: "dx.pc"; pd: "dx.pd"; pe: "dx.pe"; pf: "dx.pf"; pg: "dx.pg"; ph: "dx.ph"; pi: "dx.pi"; pj: "dx.pj"; pk: "dx.pk"; pl: "dx.pl"; pm: "dx.pm"; pn: "dx.pn"; po: "dx.po"; pp: "dx.pp"; pq: "dx.pq"; pr: "dx.pr"; ps: "dx.ps"; pt: "dx.pt"; pu: "dx.pu"; pv: "dx.pv"; pw: "dx.pw"; px: "dx.px"; py: "dx.py"; pz: "dx.pz"; qa: "dx.qa"; qb: "dx.qb"; qc: "dx.qc"; qd: "dx.qd"; qe: "dx.qe"; qf: "dx.qf"; qg: "dx.qg"; qh: "dx.qh"; qi: "dx.qi"; qj: "dx.qj"; qk: "dx.qk"; ql: "dx.ql"; qm: "dx.qm"; qn: "dx.qn"; qo: "dx.qo"; qp: "dx.qp"; qq: "dx.qq"; qr: "dx.qr"; qs: "dx.qs"; qt: "dx.qt"; qu: "dx.qu"; qv: "dx.qv"; qw: "dx.qw"; qx: "dx.qx"; qy: "dx.qy"; qz: "dx.qz"; ra: "dx.ra"; rb: "dx.rb"; rc: "dx.rc"; rd: "dx.rd"; re: "dx.re"; rf: "dx.rf"; rg: "dx.rg"; rh: "dx.rh"; ri: "dx.ri"; rj: "dx.rj"; rk: "dx.rk"; rl: "dx.rl"; rm: "dx.rm"; rn: "dx.rn"; ro: "dx.ro"; rp: "dx.rp"; rq: "dx.rq"; rr: "dx.rr"; rs: "dx.rs"; rt: "dx.rt"; ru: "dx.ru"; rv: "dx.rv"; rw: "dx.rw"; rx: "dx.rx"; ry: "dx.ry"; rz: "dx.rz"; sa: "dx.sa"; sb: "dx.sb"; sc: "dx.sc"; sd: "dx.sd"; se: "dx.se"; sf: "dx.sf"; sg: "dx.sg"; sh: "dx.sh"; si: "dx.si"; sj: "dx.sj"; sk: "dx.sk"; sl: "dx.sl"; sm: "dx.sm"; sn: "dx.sn"; so: "dx.so"; sp: "dx.sp"; sq: "dx.sq"; sr: "dx.sr"; ss: "dx.ss"; st: "dx.st"; su: "dx.su"; sv: "dx.sv"; sw: "dx.sw"; sx: "dx.sx"; sy: "dx.sy"; sz: "dx.sz"; ta: "dx.ta"; tb: "dx.tb"; tc: "dx.tc"; td: "dx.td"; te: "dx.te"; tf: "dx.tf"; tg: "dx.tg"; th: "dx.th"; ti: "dx.ti"; tj: "dx.tj"; tk: "dx.tk"; tl: "dx.tl"; tm: "dx.tm"; tn: "dx.tn"; to: "dx.to"; tp: "dx.tp"; tq: "dx.tq"; tr: "dx.tr"; ts: "dx.ts"; tt: "dx.tt"; tu: "dx.tu"; tv: "dx.tv"; tw: "dx.tw"; tx: "dx.tx"; ty: "dx.ty"; tz: "dx.tz"; ua: "dx.ua"; ub: "dx.ub"; uc: "dx.uc"; ud: "dx.ud"; ue: "dx.ue"; uf: "dx.uf"; ug: "dx.ug"; uh: "dx.uh"; ui: "dx.ui"; uj: "dx.uj"; uk: "dx.uk"; ul: "dx.ul"; um: "dx.um"; un: "dx.un"; uo: "dx.uo"; up: "dx.up"; uq: "dx.uq"; ur: "dx.ur"; us: "dx.us"; ut: "dx.ut"; uu: "dx.uu"; uv: "dx.uv"; uw: "dx.uw"; ux: "dx.ux"; uy: "dx.uy"; uz: "dx.uz"; va: "dx.va"; vb: "dx.vb"; vc: "dx.vc"; vd: "dx.vd"; ve: "dx.ve"; vf: "dx.vf"; vg: "dx.vg"; vh: "dx.vh"; vi: "dx.vi"; vj: "dx.vj"; vk: "dx.vk"; vl: "dx.vl"; vm: "dx.vm"; vn: "dx.vn"; vo: "dx.vo"; vp: "dx.vp"; vq: "dx.vq"; vr: "dx.vr"; vs: "dx.vs"; vt: "dx.vt"; vu: "dx.vu"; vv: "dx.vv"; vw: "dx.vw"; vx: "dx.vx"; vy: "dx.vy"; vz: "dx.vz"; wa: "dx.wa"; wb: "dx.wb"; wc: "dx.wc"; wd: "dx.wd"; we: "dx.we"; wf: "dx.wf"; wg: "dx.wg"; wh: "dx.wh"; wi: "dx.wi"; wj: "dx.wj"; wk: "dx.wk"; wl: "dx.wl"; wm: "dx.wm"; wn: "dx.wn"; wo: "dx.wo"; wp: "dx.wp"; wq: "dx.wq"; wr: "dx.wr"; ws: "dx.ws"; wt: "dx.wt"; wu: "dx.wu"; wv: "dx.wv"; ww: "dx.ww"; wx: "dx.wx"; wy: "dx.wy"; wz: "dx.wz"; xa: "dx.xa"; xb: "dx.xb"; xc: "dx.xc"; xd: "dx.xd"; xe: "dx.xe"; xf: "dx.xf"; xg: "dx.xg"; xh: "dx.xh"; xi: "dx.xi"; xj: "dx.xj"; xk: "dx.xk"; xl: "dx.xl"; xm: "dx.xm"; xn: "dx.xn"; xo: "dx.xo"; xp: "dx.xp"; xq: "dx.xq"; xr: "dx.xr"; xs: "dx.xs"; xt: "dx.xt"; xu: "dx.xu"; xv: "dx.xv"; xw: "dx.xw"; xx: "dx.xx"; xy: "dx.xy"; xz: "dx.xz"; ya: "dx.ya"; yb: "dx.yb"; yc: "dx.yc"; yd: "dx.yd"; ye: "dx.ye"; yf: "dx.yf"; yg: "dx.yg"; yh: "dx.yh"; yi: "dx.yi"; yj: "dx.yj"; yk: "dx.yk"; yl: "dx.yl"; ym: "dx.ym"; yn: "dx.yn"; yo: "dx.yo"; yp: "dx.yp"; yq: "dx.yq"; yr: "dx.yr"; ys: "dx.ys"; yt: "dx.yt"; yu: "dx.yu"; yv: "dx.yv"; yw: "dx.yw"; yx: "dx.yx"; yy: "dx.yy"; yz: "dx.yz"; za: "dx.za"; zb: "dx.zb"; zc: "dx.zc"; zd: "dx.zd"; ze: "dx.ze"; zf: "dx.zf"; zg: "dx.zg"; zh: "dx.zh"; zi: "dx.zi"; zj: "dx.zj"; zk: "dx.zk"; zl: "dx.zl"; zm: "dx.zm"; zn: "dx.zn"; zo: "dx.zo"; zp: "dx.zp"; zq: "dx.zq"; zr: "dx.zr"; zs: "dx.zs"; zt: "dx.zt"; zu: "dx.zu"; zv: "dx.zv"; zw: "dx.zw"; zx: "dx.zx"; zy: "dx.zy"; zz: "dx.zz"; }; dy: { aa: "dy.aa"; ab: "dy.ab"; ac: "dy.ac"; ad: "dy.ad"; ae: "dy.ae"; af: "dy.af"; ag: "dy.ag"; ah: "dy.ah"; ai: "dy.ai"; aj: "dy.aj"; ak: "dy.ak"; al: "dy.al"; am: "dy.am"; an: "dy.an"; ao: "dy.ao"; ap: "dy.ap"; aq: "dy.aq"; ar: "dy.ar"; as: "dy.as"; at: "dy.at"; au: "dy.au"; av: "dy.av"; aw: "dy.aw"; ax: "dy.ax"; ay: "dy.ay"; az: "dy.az"; ba: "dy.ba"; bb: "dy.bb"; bc: "dy.bc"; bd: "dy.bd"; be: "dy.be"; bf: "dy.bf"; bg: "dy.bg"; bh: "dy.bh"; bi: "dy.bi"; bj: "dy.bj"; bk: "dy.bk"; bl: "dy.bl"; bm: "dy.bm"; bn: "dy.bn"; bo: "dy.bo"; bp: "dy.bp"; bq: "dy.bq"; br: "dy.br"; bs: "dy.bs"; bt: "dy.bt"; bu: "dy.bu"; bv: "dy.bv"; bw: "dy.bw"; bx: "dy.bx"; by: "dy.by"; bz: "dy.bz"; ca: "dy.ca"; cb: "dy.cb"; cc: "dy.cc"; cd: "dy.cd"; ce: "dy.ce"; cf: "dy.cf"; cg: "dy.cg"; ch: "dy.ch"; ci: "dy.ci"; cj: "dy.cj"; ck: "dy.ck"; cl: "dy.cl"; cm: "dy.cm"; cn: "dy.cn"; co: "dy.co"; cp: "dy.cp"; cq: "dy.cq"; cr: "dy.cr"; cs: "dy.cs"; ct: "dy.ct"; cu: "dy.cu"; cv: "dy.cv"; cw: "dy.cw"; cx: "dy.cx"; cy: "dy.cy"; cz: "dy.cz"; da: "dy.da"; db: "dy.db"; dc: "dy.dc"; dd: "dy.dd"; de: "dy.de"; df: "dy.df"; dg: "dy.dg"; dh: "dy.dh"; di: "dy.di"; dj: "dy.dj"; dk: "dy.dk"; dl: "dy.dl"; dm: "dy.dm"; dn: "dy.dn"; do: "dy.do"; dp: "dy.dp"; dq: "dy.dq"; dr: "dy.dr"; ds: "dy.ds"; dt: "dy.dt"; du: "dy.du"; dv: "dy.dv"; dw: "dy.dw"; dx: "dy.dx"; dy: "dy.dy"; dz: "dy.dz"; ea: "dy.ea"; eb: "dy.eb"; ec: "dy.ec"; ed: "dy.ed"; ee: "dy.ee"; ef: "dy.ef"; eg: "dy.eg"; eh: "dy.eh"; ei: "dy.ei"; ej: "dy.ej"; ek: "dy.ek"; el: "dy.el"; em: "dy.em"; en: "dy.en"; eo: "dy.eo"; ep: "dy.ep"; eq: "dy.eq"; er: "dy.er"; es: "dy.es"; et: "dy.et"; eu: "dy.eu"; ev: "dy.ev"; ew: "dy.ew"; ex: "dy.ex"; ey: "dy.ey"; ez: "dy.ez"; fa: "dy.fa"; fb: "dy.fb"; fc: "dy.fc"; fd: "dy.fd"; fe: "dy.fe"; ff: "dy.ff"; fg: "dy.fg"; fh: "dy.fh"; fi: "dy.fi"; fj: "dy.fj"; fk: "dy.fk"; fl: "dy.fl"; fm: "dy.fm"; fn: "dy.fn"; fo: "dy.fo"; fp: "dy.fp"; fq: "dy.fq"; fr: "dy.fr"; fs: "dy.fs"; ft: "dy.ft"; fu: "dy.fu"; fv: "dy.fv"; fw: "dy.fw"; fx: "dy.fx"; fy: "dy.fy"; fz: "dy.fz"; ga: "dy.ga"; gb: "dy.gb"; gc: "dy.gc"; gd: "dy.gd"; ge: "dy.ge"; gf: "dy.gf"; gg: "dy.gg"; gh: "dy.gh"; gi: "dy.gi"; gj: "dy.gj"; gk: "dy.gk"; gl: "dy.gl"; gm: "dy.gm"; gn: "dy.gn"; go: "dy.go"; gp: "dy.gp"; gq: "dy.gq"; gr: "dy.gr"; gs: "dy.gs"; gt: "dy.gt"; gu: "dy.gu"; gv: "dy.gv"; gw: "dy.gw"; gx: "dy.gx"; gy: "dy.gy"; gz: "dy.gz"; ha: "dy.ha"; hb: "dy.hb"; hc: "dy.hc"; hd: "dy.hd"; he: "dy.he"; hf: "dy.hf"; hg: "dy.hg"; hh: "dy.hh"; hi: "dy.hi"; hj: "dy.hj"; hk: "dy.hk"; hl: "dy.hl"; hm: "dy.hm"; hn: "dy.hn"; ho: "dy.ho"; hp: "dy.hp"; hq: "dy.hq"; hr: "dy.hr"; hs: "dy.hs"; ht: "dy.ht"; hu: "dy.hu"; hv: "dy.hv"; hw: "dy.hw"; hx: "dy.hx"; hy: "dy.hy"; hz: "dy.hz"; ia: "dy.ia"; ib: "dy.ib"; ic: "dy.ic"; id: "dy.id"; ie: "dy.ie"; if: "dy.if"; ig: "dy.ig"; ih: "dy.ih"; ii: "dy.ii"; ij: "dy.ij"; ik: "dy.ik"; il: "dy.il"; im: "dy.im"; in: "dy.in"; io: "dy.io"; ip: "dy.ip"; iq: "dy.iq"; ir: "dy.ir"; is: "dy.is"; it: "dy.it"; iu: "dy.iu"; iv: "dy.iv"; iw: "dy.iw"; ix: "dy.ix"; iy: "dy.iy"; iz: "dy.iz"; ja: "dy.ja"; jb: "dy.jb"; jc: "dy.jc"; jd: "dy.jd"; je: "dy.je"; jf: "dy.jf"; jg: "dy.jg"; jh: "dy.jh"; ji: "dy.ji"; jj: "dy.jj"; jk: "dy.jk"; jl: "dy.jl"; jm: "dy.jm"; jn: "dy.jn"; jo: "dy.jo"; jp: "dy.jp"; jq: "dy.jq"; jr: "dy.jr"; js: "dy.js"; jt: "dy.jt"; ju: "dy.ju"; jv: "dy.jv"; jw: "dy.jw"; jx: "dy.jx"; jy: "dy.jy"; jz: "dy.jz"; ka: "dy.ka"; kb: "dy.kb"; kc: "dy.kc"; kd: "dy.kd"; ke: "dy.ke"; kf: "dy.kf"; kg: "dy.kg"; kh: "dy.kh"; ki: "dy.ki"; kj: "dy.kj"; kk: "dy.kk"; kl: "dy.kl"; km: "dy.km"; kn: "dy.kn"; ko: "dy.ko"; kp: "dy.kp"; kq: "dy.kq"; kr: "dy.kr"; ks: "dy.ks"; kt: "dy.kt"; ku: "dy.ku"; kv: "dy.kv"; kw: "dy.kw"; kx: "dy.kx"; ky: "dy.ky"; kz: "dy.kz"; la: "dy.la"; lb: "dy.lb"; lc: "dy.lc"; ld: "dy.ld"; le: "dy.le"; lf: "dy.lf"; lg: "dy.lg"; lh: "dy.lh"; li: "dy.li"; lj: "dy.lj"; lk: "dy.lk"; ll: "dy.ll"; lm: "dy.lm"; ln: "dy.ln"; lo: "dy.lo"; lp: "dy.lp"; lq: "dy.lq"; lr: "dy.lr"; ls: "dy.ls"; lt: "dy.lt"; lu: "dy.lu"; lv: "dy.lv"; lw: "dy.lw"; lx: "dy.lx"; ly: "dy.ly"; lz: "dy.lz"; ma: "dy.ma"; mb: "dy.mb"; mc: "dy.mc"; md: "dy.md"; me: "dy.me"; mf: "dy.mf"; mg: "dy.mg"; mh: "dy.mh"; mi: "dy.mi"; mj: "dy.mj"; mk: "dy.mk"; ml: "dy.ml"; mm: "dy.mm"; mn: "dy.mn"; mo: "dy.mo"; mp: "dy.mp"; mq: "dy.mq"; mr: "dy.mr"; ms: "dy.ms"; mt: "dy.mt"; mu: "dy.mu"; mv: "dy.mv"; mw: "dy.mw"; mx: "dy.mx"; my: "dy.my"; mz: "dy.mz"; na: "dy.na"; nb: "dy.nb"; nc: "dy.nc"; nd: "dy.nd"; ne: "dy.ne"; nf: "dy.nf"; ng: "dy.ng"; nh: "dy.nh"; ni: "dy.ni"; nj: "dy.nj"; nk: "dy.nk"; nl: "dy.nl"; nm: "dy.nm"; nn: "dy.nn"; no: "dy.no"; np: "dy.np"; nq: "dy.nq"; nr: "dy.nr"; ns: "dy.ns"; nt: "dy.nt"; nu: "dy.nu"; nv: "dy.nv"; nw: "dy.nw"; nx: "dy.nx"; ny: "dy.ny"; nz: "dy.nz"; oa: "dy.oa"; ob: "dy.ob"; oc: "dy.oc"; od: "dy.od"; oe: "dy.oe"; of: "dy.of"; og: "dy.og"; oh: "dy.oh"; oi: "dy.oi"; oj: "dy.oj"; ok: "dy.ok"; ol: "dy.ol"; om: "dy.om"; on: "dy.on"; oo: "dy.oo"; op: "dy.op"; oq: "dy.oq"; or: "dy.or"; os: "dy.os"; ot: "dy.ot"; ou: "dy.ou"; ov: "dy.ov"; ow: "dy.ow"; ox: "dy.ox"; oy: "dy.oy"; oz: "dy.oz"; pa: "dy.pa"; pb: "dy.pb"; pc: "dy.pc"; pd: "dy.pd"; pe: "dy.pe"; pf: "dy.pf"; pg: "dy.pg"; ph: "dy.ph"; pi: "dy.pi"; pj: "dy.pj"; pk: "dy.pk"; pl: "dy.pl"; pm: "dy.pm"; pn: "dy.pn"; po: "dy.po"; pp: "dy.pp"; pq: "dy.pq"; pr: "dy.pr"; ps: "dy.ps"; pt: "dy.pt"; pu: "dy.pu"; pv: "dy.pv"; pw: "dy.pw"; px: "dy.px"; py: "dy.py"; pz: "dy.pz"; qa: "dy.qa"; qb: "dy.qb"; qc: "dy.qc"; qd: "dy.qd"; qe: "dy.qe"; qf: "dy.qf"; qg: "dy.qg"; qh: "dy.qh"; qi: "dy.qi"; qj: "dy.qj"; qk: "dy.qk"; ql: "dy.ql"; qm: "dy.qm"; qn: "dy.qn"; qo: "dy.qo"; qp: "dy.qp"; qq: "dy.qq"; qr: "dy.qr"; qs: "dy.qs"; qt: "dy.qt"; qu: "dy.qu"; qv: "dy.qv"; qw: "dy.qw"; qx: "dy.qx"; qy: "dy.qy"; qz: "dy.qz"; ra: "dy.ra"; rb: "dy.rb"; rc: "dy.rc"; rd: "dy.rd"; re: "dy.re"; rf: "dy.rf"; rg: "dy.rg"; rh: "dy.rh"; ri: "dy.ri"; rj: "dy.rj"; rk: "dy.rk"; rl: "dy.rl"; rm: "dy.rm"; rn: "dy.rn"; ro: "dy.ro"; rp: "dy.rp"; rq: "dy.rq"; rr: "dy.rr"; rs: "dy.rs"; rt: "dy.rt"; ru: "dy.ru"; rv: "dy.rv"; rw: "dy.rw"; rx: "dy.rx"; ry: "dy.ry"; rz: "dy.rz"; sa: "dy.sa"; sb: "dy.sb"; sc: "dy.sc"; sd: "dy.sd"; se: "dy.se"; sf: "dy.sf"; sg: "dy.sg"; sh: "dy.sh"; si: "dy.si"; sj: "dy.sj"; sk: "dy.sk"; sl: "dy.sl"; sm: "dy.sm"; sn: "dy.sn"; so: "dy.so"; sp: "dy.sp"; sq: "dy.sq"; sr: "dy.sr"; ss: "dy.ss"; st: "dy.st"; su: "dy.su"; sv: "dy.sv"; sw: "dy.sw"; sx: "dy.sx"; sy: "dy.sy"; sz: "dy.sz"; ta: "dy.ta"; tb: "dy.tb"; tc: "dy.tc"; td: "dy.td"; te: "dy.te"; tf: "dy.tf"; tg: "dy.tg"; th: "dy.th"; ti: "dy.ti"; tj: "dy.tj"; tk: "dy.tk"; tl: "dy.tl"; tm: "dy.tm"; tn: "dy.tn"; to: "dy.to"; tp: "dy.tp"; tq: "dy.tq"; tr: "dy.tr"; ts: "dy.ts"; tt: "dy.tt"; tu: "dy.tu"; tv: "dy.tv"; tw: "dy.tw"; tx: "dy.tx"; ty: "dy.ty"; tz: "dy.tz"; ua: "dy.ua"; ub: "dy.ub"; uc: "dy.uc"; ud: "dy.ud"; ue: "dy.ue"; uf: "dy.uf"; ug: "dy.ug"; uh: "dy.uh"; ui: "dy.ui"; uj: "dy.uj"; uk: "dy.uk"; ul: "dy.ul"; um: "dy.um"; un: "dy.un"; uo: "dy.uo"; up: "dy.up"; uq: "dy.uq"; ur: "dy.ur"; us: "dy.us"; ut: "dy.ut"; uu: "dy.uu"; uv: "dy.uv"; uw: "dy.uw"; ux: "dy.ux"; uy: "dy.uy"; uz: "dy.uz"; va: "dy.va"; vb: "dy.vb"; vc: "dy.vc"; vd: "dy.vd"; ve: "dy.ve"; vf: "dy.vf"; vg: "dy.vg"; vh: "dy.vh"; vi: "dy.vi"; vj: "dy.vj"; vk: "dy.vk"; vl: "dy.vl"; vm: "dy.vm"; vn: "dy.vn"; vo: "dy.vo"; vp: "dy.vp"; vq: "dy.vq"; vr: "dy.vr"; vs: "dy.vs"; vt: "dy.vt"; vu: "dy.vu"; vv: "dy.vv"; vw: "dy.vw"; vx: "dy.vx"; vy: "dy.vy"; vz: "dy.vz"; wa: "dy.wa"; wb: "dy.wb"; wc: "dy.wc"; wd: "dy.wd"; we: "dy.we"; wf: "dy.wf"; wg: "dy.wg"; wh: "dy.wh"; wi: "dy.wi"; wj: "dy.wj"; wk: "dy.wk"; wl: "dy.wl"; wm: "dy.wm"; wn: "dy.wn"; wo: "dy.wo"; wp: "dy.wp"; wq: "dy.wq"; wr: "dy.wr"; ws: "dy.ws"; wt: "dy.wt"; wu: "dy.wu"; wv: "dy.wv"; ww: "dy.ww"; wx: "dy.wx"; wy: "dy.wy"; wz: "dy.wz"; xa: "dy.xa"; xb: "dy.xb"; xc: "dy.xc"; xd: "dy.xd"; xe: "dy.xe"; xf: "dy.xf"; xg: "dy.xg"; xh: "dy.xh"; xi: "dy.xi"; xj: "dy.xj"; xk: "dy.xk"; xl: "dy.xl"; xm: "dy.xm"; xn: "dy.xn"; xo: "dy.xo"; xp: "dy.xp"; xq: "dy.xq"; xr: "dy.xr"; xs: "dy.xs"; xt: "dy.xt"; xu: "dy.xu"; xv: "dy.xv"; xw: "dy.xw"; xx: "dy.xx"; xy: "dy.xy"; xz: "dy.xz"; ya: "dy.ya"; yb: "dy.yb"; yc: "dy.yc"; yd: "dy.yd"; ye: "dy.ye"; yf: "dy.yf"; yg: "dy.yg"; yh: "dy.yh"; yi: "dy.yi"; yj: "dy.yj"; yk: "dy.yk"; yl: "dy.yl"; ym: "dy.ym"; yn: "dy.yn"; yo: "dy.yo"; yp: "dy.yp"; yq: "dy.yq"; yr: "dy.yr"; ys: "dy.ys"; yt: "dy.yt"; yu: "dy.yu"; yv: "dy.yv"; yw: "dy.yw"; yx: "dy.yx"; yy: "dy.yy"; yz: "dy.yz"; za: "dy.za"; zb: "dy.zb"; zc: "dy.zc"; zd: "dy.zd"; ze: "dy.ze"; zf: "dy.zf"; zg: "dy.zg"; zh: "dy.zh"; zi: "dy.zi"; zj: "dy.zj"; zk: "dy.zk"; zl: "dy.zl"; zm: "dy.zm"; zn: "dy.zn"; zo: "dy.zo"; zp: "dy.zp"; zq: "dy.zq"; zr: "dy.zr"; zs: "dy.zs"; zt: "dy.zt"; zu: "dy.zu"; zv: "dy.zv"; zw: "dy.zw"; zx: "dy.zx"; zy: "dy.zy"; zz: "dy.zz"; }; dz: { aa: "dz.aa"; ab: "dz.ab"; ac: "dz.ac"; ad: "dz.ad"; ae: "dz.ae"; af: "dz.af"; ag: "dz.ag"; ah: "dz.ah"; ai: "dz.ai"; aj: "dz.aj"; ak: "dz.ak"; al: "dz.al"; am: "dz.am"; an: "dz.an"; ao: "dz.ao"; ap: "dz.ap"; aq: "dz.aq"; ar: "dz.ar"; as: "dz.as"; at: "dz.at"; au: "dz.au"; av: "dz.av"; aw: "dz.aw"; ax: "dz.ax"; ay: "dz.ay"; az: "dz.az"; ba: "dz.ba"; bb: "dz.bb"; bc: "dz.bc"; bd: "dz.bd"; be: "dz.be"; bf: "dz.bf"; bg: "dz.bg"; bh: "dz.bh"; bi: "dz.bi"; bj: "dz.bj"; bk: "dz.bk"; bl: "dz.bl"; bm: "dz.bm"; bn: "dz.bn"; bo: "dz.bo"; bp: "dz.bp"; bq: "dz.bq"; br: "dz.br"; bs: "dz.bs"; bt: "dz.bt"; bu: "dz.bu"; bv: "dz.bv"; bw: "dz.bw"; bx: "dz.bx"; by: "dz.by"; bz: "dz.bz"; ca: "dz.ca"; cb: "dz.cb"; cc: "dz.cc"; cd: "dz.cd"; ce: "dz.ce"; cf: "dz.cf"; cg: "dz.cg"; ch: "dz.ch"; ci: "dz.ci"; cj: "dz.cj"; ck: "dz.ck"; cl: "dz.cl"; cm: "dz.cm"; cn: "dz.cn"; co: "dz.co"; cp: "dz.cp"; cq: "dz.cq"; cr: "dz.cr"; cs: "dz.cs"; ct: "dz.ct"; cu: "dz.cu"; cv: "dz.cv"; cw: "dz.cw"; cx: "dz.cx"; cy: "dz.cy"; cz: "dz.cz"; da: "dz.da"; db: "dz.db"; dc: "dz.dc"; dd: "dz.dd"; de: "dz.de"; df: "dz.df"; dg: "dz.dg"; dh: "dz.dh"; di: "dz.di"; dj: "dz.dj"; dk: "dz.dk"; dl: "dz.dl"; dm: "dz.dm"; dn: "dz.dn"; do: "dz.do"; dp: "dz.dp"; dq: "dz.dq"; dr: "dz.dr"; ds: "dz.ds"; dt: "dz.dt"; du: "dz.du"; dv: "dz.dv"; dw: "dz.dw"; dx: "dz.dx"; dy: "dz.dy"; dz: "dz.dz"; ea: "dz.ea"; eb: "dz.eb"; ec: "dz.ec"; ed: "dz.ed"; ee: "dz.ee"; ef: "dz.ef"; eg: "dz.eg"; eh: "dz.eh"; ei: "dz.ei"; ej: "dz.ej"; ek: "dz.ek"; el: "dz.el"; em: "dz.em"; en: "dz.en"; eo: "dz.eo"; ep: "dz.ep"; eq: "dz.eq"; er: "dz.er"; es: "dz.es"; et: "dz.et"; eu: "dz.eu"; ev: "dz.ev"; ew: "dz.ew"; ex: "dz.ex"; ey: "dz.ey"; ez: "dz.ez"; fa: "dz.fa"; fb: "dz.fb"; fc: "dz.fc"; fd: "dz.fd"; fe: "dz.fe"; ff: "dz.ff"; fg: "dz.fg"; fh: "dz.fh"; fi: "dz.fi"; fj: "dz.fj"; fk: "dz.fk"; fl: "dz.fl"; fm: "dz.fm"; fn: "dz.fn"; fo: "dz.fo"; fp: "dz.fp"; fq: "dz.fq"; fr: "dz.fr"; fs: "dz.fs"; ft: "dz.ft"; fu: "dz.fu"; fv: "dz.fv"; fw: "dz.fw"; fx: "dz.fx"; fy: "dz.fy"; fz: "dz.fz"; ga: "dz.ga"; gb: "dz.gb"; gc: "dz.gc"; gd: "dz.gd"; ge: "dz.ge"; gf: "dz.gf"; gg: "dz.gg"; gh: "dz.gh"; gi: "dz.gi"; gj: "dz.gj"; gk: "dz.gk"; gl: "dz.gl"; gm: "dz.gm"; gn: "dz.gn"; go: "dz.go"; gp: "dz.gp"; gq: "dz.gq"; gr: "dz.gr"; gs: "dz.gs"; gt: "dz.gt"; gu: "dz.gu"; gv: "dz.gv"; gw: "dz.gw"; gx: "dz.gx"; gy: "dz.gy"; gz: "dz.gz"; ha: "dz.ha"; hb: "dz.hb"; hc: "dz.hc"; hd: "dz.hd"; he: "dz.he"; hf: "dz.hf"; hg: "dz.hg"; hh: "dz.hh"; hi: "dz.hi"; hj: "dz.hj"; hk: "dz.hk"; hl: "dz.hl"; hm: "dz.hm"; hn: "dz.hn"; ho: "dz.ho"; hp: "dz.hp"; hq: "dz.hq"; hr: "dz.hr"; hs: "dz.hs"; ht: "dz.ht"; hu: "dz.hu"; hv: "dz.hv"; hw: "dz.hw"; hx: "dz.hx"; hy: "dz.hy"; hz: "dz.hz"; ia: "dz.ia"; ib: "dz.ib"; ic: "dz.ic"; id: "dz.id"; ie: "dz.ie"; if: "dz.if"; ig: "dz.ig"; ih: "dz.ih"; ii: "dz.ii"; ij: "dz.ij"; ik: "dz.ik"; il: "dz.il"; im: "dz.im"; in: "dz.in"; io: "dz.io"; ip: "dz.ip"; iq: "dz.iq"; ir: "dz.ir"; is: "dz.is"; it: "dz.it"; iu: "dz.iu"; iv: "dz.iv"; iw: "dz.iw"; ix: "dz.ix"; iy: "dz.iy"; iz: "dz.iz"; ja: "dz.ja"; jb: "dz.jb"; jc: "dz.jc"; jd: "dz.jd"; je: "dz.je"; jf: "dz.jf"; jg: "dz.jg"; jh: "dz.jh"; ji: "dz.ji"; jj: "dz.jj"; jk: "dz.jk"; jl: "dz.jl"; jm: "dz.jm"; jn: "dz.jn"; jo: "dz.jo"; jp: "dz.jp"; jq: "dz.jq"; jr: "dz.jr"; js: "dz.js"; jt: "dz.jt"; ju: "dz.ju"; jv: "dz.jv"; jw: "dz.jw"; jx: "dz.jx"; jy: "dz.jy"; jz: "dz.jz"; ka: "dz.ka"; kb: "dz.kb"; kc: "dz.kc"; kd: "dz.kd"; ke: "dz.ke"; kf: "dz.kf"; kg: "dz.kg"; kh: "dz.kh"; ki: "dz.ki"; kj: "dz.kj"; kk: "dz.kk"; kl: "dz.kl"; km: "dz.km"; kn: "dz.kn"; ko: "dz.ko"; kp: "dz.kp"; kq: "dz.kq"; kr: "dz.kr"; ks: "dz.ks"; kt: "dz.kt"; ku: "dz.ku"; kv: "dz.kv"; kw: "dz.kw"; kx: "dz.kx"; ky: "dz.ky"; kz: "dz.kz"; la: "dz.la"; lb: "dz.lb"; lc: "dz.lc"; ld: "dz.ld"; le: "dz.le"; lf: "dz.lf"; lg: "dz.lg"; lh: "dz.lh"; li: "dz.li"; lj: "dz.lj"; lk: "dz.lk"; ll: "dz.ll"; lm: "dz.lm"; ln: "dz.ln"; lo: "dz.lo"; lp: "dz.lp"; lq: "dz.lq"; lr: "dz.lr"; ls: "dz.ls"; lt: "dz.lt"; lu: "dz.lu"; lv: "dz.lv"; lw: "dz.lw"; lx: "dz.lx"; ly: "dz.ly"; lz: "dz.lz"; ma: "dz.ma"; mb: "dz.mb"; mc: "dz.mc"; md: "dz.md"; me: "dz.me"; mf: "dz.mf"; mg: "dz.mg"; mh: "dz.mh"; mi: "dz.mi"; mj: "dz.mj"; mk: "dz.mk"; ml: "dz.ml"; mm: "dz.mm"; mn: "dz.mn"; mo: "dz.mo"; mp: "dz.mp"; mq: "dz.mq"; mr: "dz.mr"; ms: "dz.ms"; mt: "dz.mt"; mu: "dz.mu"; mv: "dz.mv"; mw: "dz.mw"; mx: "dz.mx"; my: "dz.my"; mz: "dz.mz"; na: "dz.na"; nb: "dz.nb"; nc: "dz.nc"; nd: "dz.nd"; ne: "dz.ne"; nf: "dz.nf"; ng: "dz.ng"; nh: "dz.nh"; ni: "dz.ni"; nj: "dz.nj"; nk: "dz.nk"; nl: "dz.nl"; nm: "dz.nm"; nn: "dz.nn"; no: "dz.no"; np: "dz.np"; nq: "dz.nq"; nr: "dz.nr"; ns: "dz.ns"; nt: "dz.nt"; nu: "dz.nu"; nv: "dz.nv"; nw: "dz.nw"; nx: "dz.nx"; ny: "dz.ny"; nz: "dz.nz"; oa: "dz.oa"; ob: "dz.ob"; oc: "dz.oc"; od: "dz.od"; oe: "dz.oe"; of: "dz.of"; og: "dz.og"; oh: "dz.oh"; oi: "dz.oi"; oj: "dz.oj"; ok: "dz.ok"; ol: "dz.ol"; om: "dz.om"; on: "dz.on"; oo: "dz.oo"; op: "dz.op"; oq: "dz.oq"; or: "dz.or"; os: "dz.os"; ot: "dz.ot"; ou: "dz.ou"; ov: "dz.ov"; ow: "dz.ow"; ox: "dz.ox"; oy: "dz.oy"; oz: "dz.oz"; pa: "dz.pa"; pb: "dz.pb"; pc: "dz.pc"; pd: "dz.pd"; pe: "dz.pe"; pf: "dz.pf"; pg: "dz.pg"; ph: "dz.ph"; pi: "dz.pi"; pj: "dz.pj"; pk: "dz.pk"; pl: "dz.pl"; pm: "dz.pm"; pn: "dz.pn"; po: "dz.po"; pp: "dz.pp"; pq: "dz.pq"; pr: "dz.pr"; ps: "dz.ps"; pt: "dz.pt"; pu: "dz.pu"; pv: "dz.pv"; pw: "dz.pw"; px: "dz.px"; py: "dz.py"; pz: "dz.pz"; qa: "dz.qa"; qb: "dz.qb"; qc: "dz.qc"; qd: "dz.qd"; qe: "dz.qe"; qf: "dz.qf"; qg: "dz.qg"; qh: "dz.qh"; qi: "dz.qi"; qj: "dz.qj"; qk: "dz.qk"; ql: "dz.ql"; qm: "dz.qm"; qn: "dz.qn"; qo: "dz.qo"; qp: "dz.qp"; qq: "dz.qq"; qr: "dz.qr"; qs: "dz.qs"; qt: "dz.qt"; qu: "dz.qu"; qv: "dz.qv"; qw: "dz.qw"; qx: "dz.qx"; qy: "dz.qy"; qz: "dz.qz"; ra: "dz.ra"; rb: "dz.rb"; rc: "dz.rc"; rd: "dz.rd"; re: "dz.re"; rf: "dz.rf"; rg: "dz.rg"; rh: "dz.rh"; ri: "dz.ri"; rj: "dz.rj"; rk: "dz.rk"; rl: "dz.rl"; rm: "dz.rm"; rn: "dz.rn"; ro: "dz.ro"; rp: "dz.rp"; rq: "dz.rq"; rr: "dz.rr"; rs: "dz.rs"; rt: "dz.rt"; ru: "dz.ru"; rv: "dz.rv"; rw: "dz.rw"; rx: "dz.rx"; ry: "dz.ry"; rz: "dz.rz"; sa: "dz.sa"; sb: "dz.sb"; sc: "dz.sc"; sd: "dz.sd"; se: "dz.se"; sf: "dz.sf"; sg: "dz.sg"; sh: "dz.sh"; si: "dz.si"; sj: "dz.sj"; sk: "dz.sk"; sl: "dz.sl"; sm: "dz.sm"; sn: "dz.sn"; so: "dz.so"; sp: "dz.sp"; sq: "dz.sq"; sr: "dz.sr"; ss: "dz.ss"; st: "dz.st"; su: "dz.su"; sv: "dz.sv"; sw: "dz.sw"; sx: "dz.sx"; sy: "dz.sy"; sz: "dz.sz"; ta: "dz.ta"; tb: "dz.tb"; tc: "dz.tc"; td: "dz.td"; te: "dz.te"; tf: "dz.tf"; tg: "dz.tg"; th: "dz.th"; ti: "dz.ti"; tj: "dz.tj"; tk: "dz.tk"; tl: "dz.tl"; tm: "dz.tm"; tn: "dz.tn"; to: "dz.to"; tp: "dz.tp"; tq: "dz.tq"; tr: "dz.tr"; ts: "dz.ts"; tt: "dz.tt"; tu: "dz.tu"; tv: "dz.tv"; tw: "dz.tw"; tx: "dz.tx"; ty: "dz.ty"; tz: "dz.tz"; ua: "dz.ua"; ub: "dz.ub"; uc: "dz.uc"; ud: "dz.ud"; ue: "dz.ue"; uf: "dz.uf"; ug: "dz.ug"; uh: "dz.uh"; ui: "dz.ui"; uj: "dz.uj"; uk: "dz.uk"; ul: "dz.ul"; um: "dz.um"; un: "dz.un"; uo: "dz.uo"; up: "dz.up"; uq: "dz.uq"; ur: "dz.ur"; us: "dz.us"; ut: "dz.ut"; uu: "dz.uu"; uv: "dz.uv"; uw: "dz.uw"; ux: "dz.ux"; uy: "dz.uy"; uz: "dz.uz"; va: "dz.va"; vb: "dz.vb"; vc: "dz.vc"; vd: "dz.vd"; ve: "dz.ve"; vf: "dz.vf"; vg: "dz.vg"; vh: "dz.vh"; vi: "dz.vi"; vj: "dz.vj"; vk: "dz.vk"; vl: "dz.vl"; vm: "dz.vm"; vn: "dz.vn"; vo: "dz.vo"; vp: "dz.vp"; vq: "dz.vq"; vr: "dz.vr"; vs: "dz.vs"; vt: "dz.vt"; vu: "dz.vu"; vv: "dz.vv"; vw: "dz.vw"; vx: "dz.vx"; vy: "dz.vy"; vz: "dz.vz"; wa: "dz.wa"; wb: "dz.wb"; wc: "dz.wc"; wd: "dz.wd"; we: "dz.we"; wf: "dz.wf"; wg: "dz.wg"; wh: "dz.wh"; wi: "dz.wi"; wj: "dz.wj"; wk: "dz.wk"; wl: "dz.wl"; wm: "dz.wm"; wn: "dz.wn"; wo: "dz.wo"; wp: "dz.wp"; wq: "dz.wq"; wr: "dz.wr"; ws: "dz.ws"; wt: "dz.wt"; wu: "dz.wu"; wv: "dz.wv"; ww: "dz.ww"; wx: "dz.wx"; wy: "dz.wy"; wz: "dz.wz"; xa: "dz.xa"; xb: "dz.xb"; xc: "dz.xc"; xd: "dz.xd"; xe: "dz.xe"; xf: "dz.xf"; xg: "dz.xg"; xh: "dz.xh"; xi: "dz.xi"; xj: "dz.xj"; xk: "dz.xk"; xl: "dz.xl"; xm: "dz.xm"; xn: "dz.xn"; xo: "dz.xo"; xp: "dz.xp"; xq: "dz.xq"; xr: "dz.xr"; xs: "dz.xs"; xt: "dz.xt"; xu: "dz.xu"; xv: "dz.xv"; xw: "dz.xw"; xx: "dz.xx"; xy: "dz.xy"; xz: "dz.xz"; ya: "dz.ya"; yb: "dz.yb"; yc: "dz.yc"; yd: "dz.yd"; ye: "dz.ye"; yf: "dz.yf"; yg: "dz.yg"; yh: "dz.yh"; yi: "dz.yi"; yj: "dz.yj"; yk: "dz.yk"; yl: "dz.yl"; ym: "dz.ym"; yn: "dz.yn"; yo: "dz.yo"; yp: "dz.yp"; yq: "dz.yq"; yr: "dz.yr"; ys: "dz.ys"; yt: "dz.yt"; yu: "dz.yu"; yv: "dz.yv"; yw: "dz.yw"; yx: "dz.yx"; yy: "dz.yy"; yz: "dz.yz"; za: "dz.za"; zb: "dz.zb"; zc: "dz.zc"; zd: "dz.zd"; ze: "dz.ze"; zf: "dz.zf"; zg: "dz.zg"; zh: "dz.zh"; zi: "dz.zi"; zj: "dz.zj"; zk: "dz.zk"; zl: "dz.zl"; zm: "dz.zm"; zn: "dz.zn"; zo: "dz.zo"; zp: "dz.zp"; zq: "dz.zq"; zr: "dz.zr"; zs: "dz.zs"; zt: "dz.zt"; zu: "dz.zu"; zv: "dz.zv"; zw: "dz.zw"; zx: "dz.zx"; zy: "dz.zy"; zz: "dz.zz"; }; ea: { aa: "ea.aa"; ab: "ea.ab"; ac: "ea.ac"; ad: "ea.ad"; ae: "ea.ae"; af: "ea.af"; ag: "ea.ag"; ah: "ea.ah"; ai: "ea.ai"; aj: "ea.aj"; ak: "ea.ak"; al: "ea.al"; am: "ea.am"; an: "ea.an"; ao: "ea.ao"; ap: "ea.ap"; aq: "ea.aq"; ar: "ea.ar"; as: "ea.as"; at: "ea.at"; au: "ea.au"; av: "ea.av"; aw: "ea.aw"; ax: "ea.ax"; ay: "ea.ay"; az: "ea.az"; ba: "ea.ba"; bb: "ea.bb"; bc: "ea.bc"; bd: "ea.bd"; be: "ea.be"; bf: "ea.bf"; bg: "ea.bg"; bh: "ea.bh"; bi: "ea.bi"; bj: "ea.bj"; bk: "ea.bk"; bl: "ea.bl"; bm: "ea.bm"; bn: "ea.bn"; bo: "ea.bo"; bp: "ea.bp"; bq: "ea.bq"; br: "ea.br"; bs: "ea.bs"; bt: "ea.bt"; bu: "ea.bu"; bv: "ea.bv"; bw: "ea.bw"; bx: "ea.bx"; by: "ea.by"; bz: "ea.bz"; ca: "ea.ca"; cb: "ea.cb"; cc: "ea.cc"; cd: "ea.cd"; ce: "ea.ce"; cf: "ea.cf"; cg: "ea.cg"; ch: "ea.ch"; ci: "ea.ci"; cj: "ea.cj"; ck: "ea.ck"; cl: "ea.cl"; cm: "ea.cm"; cn: "ea.cn"; co: "ea.co"; cp: "ea.cp"; cq: "ea.cq"; cr: "ea.cr"; cs: "ea.cs"; ct: "ea.ct"; cu: "ea.cu"; cv: "ea.cv"; cw: "ea.cw"; cx: "ea.cx"; cy: "ea.cy"; cz: "ea.cz"; da: "ea.da"; db: "ea.db"; dc: "ea.dc"; dd: "ea.dd"; de: "ea.de"; df: "ea.df"; dg: "ea.dg"; dh: "ea.dh"; di: "ea.di"; dj: "ea.dj"; dk: "ea.dk"; dl: "ea.dl"; dm: "ea.dm"; dn: "ea.dn"; do: "ea.do"; dp: "ea.dp"; dq: "ea.dq"; dr: "ea.dr"; ds: "ea.ds"; dt: "ea.dt"; du: "ea.du"; dv: "ea.dv"; dw: "ea.dw"; dx: "ea.dx"; dy: "ea.dy"; dz: "ea.dz"; ea: "ea.ea"; eb: "ea.eb"; ec: "ea.ec"; ed: "ea.ed"; ee: "ea.ee"; ef: "ea.ef"; eg: "ea.eg"; eh: "ea.eh"; ei: "ea.ei"; ej: "ea.ej"; ek: "ea.ek"; el: "ea.el"; em: "ea.em"; en: "ea.en"; eo: "ea.eo"; ep: "ea.ep"; eq: "ea.eq"; er: "ea.er"; es: "ea.es"; et: "ea.et"; eu: "ea.eu"; ev: "ea.ev"; ew: "ea.ew"; ex: "ea.ex"; ey: "ea.ey"; ez: "ea.ez"; fa: "ea.fa"; fb: "ea.fb"; fc: "ea.fc"; fd: "ea.fd"; fe: "ea.fe"; ff: "ea.ff"; fg: "ea.fg"; fh: "ea.fh"; fi: "ea.fi"; fj: "ea.fj"; fk: "ea.fk"; fl: "ea.fl"; fm: "ea.fm"; fn: "ea.fn"; fo: "ea.fo"; fp: "ea.fp"; fq: "ea.fq"; fr: "ea.fr"; fs: "ea.fs"; ft: "ea.ft"; fu: "ea.fu"; fv: "ea.fv"; fw: "ea.fw"; fx: "ea.fx"; fy: "ea.fy"; fz: "ea.fz"; ga: "ea.ga"; gb: "ea.gb"; gc: "ea.gc"; gd: "ea.gd"; ge: "ea.ge"; gf: "ea.gf"; gg: "ea.gg"; gh: "ea.gh"; gi: "ea.gi"; gj: "ea.gj"; gk: "ea.gk"; gl: "ea.gl"; gm: "ea.gm"; gn: "ea.gn"; go: "ea.go"; gp: "ea.gp"; gq: "ea.gq"; gr: "ea.gr"; gs: "ea.gs"; gt: "ea.gt"; gu: "ea.gu"; gv: "ea.gv"; gw: "ea.gw"; gx: "ea.gx"; gy: "ea.gy"; gz: "ea.gz"; ha: "ea.ha"; hb: "ea.hb"; hc: "ea.hc"; hd: "ea.hd"; he: "ea.he"; hf: "ea.hf"; hg: "ea.hg"; hh: "ea.hh"; hi: "ea.hi"; hj: "ea.hj"; hk: "ea.hk"; hl: "ea.hl"; hm: "ea.hm"; hn: "ea.hn"; ho: "ea.ho"; hp: "ea.hp"; hq: "ea.hq"; hr: "ea.hr"; hs: "ea.hs"; ht: "ea.ht"; hu: "ea.hu"; hv: "ea.hv"; hw: "ea.hw"; hx: "ea.hx"; hy: "ea.hy"; hz: "ea.hz"; ia: "ea.ia"; ib: "ea.ib"; ic: "ea.ic"; id: "ea.id"; ie: "ea.ie"; if: "ea.if"; ig: "ea.ig"; ih: "ea.ih"; ii: "ea.ii"; ij: "ea.ij"; ik: "ea.ik"; il: "ea.il"; im: "ea.im"; in: "ea.in"; io: "ea.io"; ip: "ea.ip"; iq: "ea.iq"; ir: "ea.ir"; is: "ea.is"; it: "ea.it"; iu: "ea.iu"; iv: "ea.iv"; iw: "ea.iw"; ix: "ea.ix"; iy: "ea.iy"; iz: "ea.iz"; ja: "ea.ja"; jb: "ea.jb"; jc: "ea.jc"; jd: "ea.jd"; je: "ea.je"; jf: "ea.jf"; jg: "ea.jg"; jh: "ea.jh"; ji: "ea.ji"; jj: "ea.jj"; jk: "ea.jk"; jl: "ea.jl"; jm: "ea.jm"; jn: "ea.jn"; jo: "ea.jo"; jp: "ea.jp"; jq: "ea.jq"; jr: "ea.jr"; js: "ea.js"; jt: "ea.jt"; ju: "ea.ju"; jv: "ea.jv"; jw: "ea.jw"; jx: "ea.jx"; jy: "ea.jy"; jz: "ea.jz"; ka: "ea.ka"; kb: "ea.kb"; kc: "ea.kc"; kd: "ea.kd"; ke: "ea.ke"; kf: "ea.kf"; kg: "ea.kg"; kh: "ea.kh"; ki: "ea.ki"; kj: "ea.kj"; kk: "ea.kk"; kl: "ea.kl"; km: "ea.km"; kn: "ea.kn"; ko: "ea.ko"; kp: "ea.kp"; kq: "ea.kq"; kr: "ea.kr"; ks: "ea.ks"; kt: "ea.kt"; ku: "ea.ku"; kv: "ea.kv"; kw: "ea.kw"; kx: "ea.kx"; ky: "ea.ky"; kz: "ea.kz"; la: "ea.la"; lb: "ea.lb"; lc: "ea.lc"; ld: "ea.ld"; le: "ea.le"; lf: "ea.lf"; lg: "ea.lg"; lh: "ea.lh"; li: "ea.li"; lj: "ea.lj"; lk: "ea.lk"; ll: "ea.ll"; lm: "ea.lm"; ln: "ea.ln"; lo: "ea.lo"; lp: "ea.lp"; lq: "ea.lq"; lr: "ea.lr"; ls: "ea.ls"; lt: "ea.lt"; lu: "ea.lu"; lv: "ea.lv"; lw: "ea.lw"; lx: "ea.lx"; ly: "ea.ly"; lz: "ea.lz"; ma: "ea.ma"; mb: "ea.mb"; mc: "ea.mc"; md: "ea.md"; me: "ea.me"; mf: "ea.mf"; mg: "ea.mg"; mh: "ea.mh"; mi: "ea.mi"; mj: "ea.mj"; mk: "ea.mk"; ml: "ea.ml"; mm: "ea.mm"; mn: "ea.mn"; mo: "ea.mo"; mp: "ea.mp"; mq: "ea.mq"; mr: "ea.mr"; ms: "ea.ms"; mt: "ea.mt"; mu: "ea.mu"; mv: "ea.mv"; mw: "ea.mw"; mx: "ea.mx"; my: "ea.my"; mz: "ea.mz"; na: "ea.na"; nb: "ea.nb"; nc: "ea.nc"; nd: "ea.nd"; ne: "ea.ne"; nf: "ea.nf"; ng: "ea.ng"; nh: "ea.nh"; ni: "ea.ni"; nj: "ea.nj"; nk: "ea.nk"; nl: "ea.nl"; nm: "ea.nm"; nn: "ea.nn"; no: "ea.no"; np: "ea.np"; nq: "ea.nq"; nr: "ea.nr"; ns: "ea.ns"; nt: "ea.nt"; nu: "ea.nu"; nv: "ea.nv"; nw: "ea.nw"; nx: "ea.nx"; ny: "ea.ny"; nz: "ea.nz"; oa: "ea.oa"; ob: "ea.ob"; oc: "ea.oc"; od: "ea.od"; oe: "ea.oe"; of: "ea.of"; og: "ea.og"; oh: "ea.oh"; oi: "ea.oi"; oj: "ea.oj"; ok: "ea.ok"; ol: "ea.ol"; om: "ea.om"; on: "ea.on"; oo: "ea.oo"; op: "ea.op"; oq: "ea.oq"; or: "ea.or"; os: "ea.os"; ot: "ea.ot"; ou: "ea.ou"; ov: "ea.ov"; ow: "ea.ow"; ox: "ea.ox"; oy: "ea.oy"; oz: "ea.oz"; pa: "ea.pa"; pb: "ea.pb"; pc: "ea.pc"; pd: "ea.pd"; pe: "ea.pe"; pf: "ea.pf"; pg: "ea.pg"; ph: "ea.ph"; pi: "ea.pi"; pj: "ea.pj"; pk: "ea.pk"; pl: "ea.pl"; pm: "ea.pm"; pn: "ea.pn"; po: "ea.po"; pp: "ea.pp"; pq: "ea.pq"; pr: "ea.pr"; ps: "ea.ps"; pt: "ea.pt"; pu: "ea.pu"; pv: "ea.pv"; pw: "ea.pw"; px: "ea.px"; py: "ea.py"; pz: "ea.pz"; qa: "ea.qa"; qb: "ea.qb"; qc: "ea.qc"; qd: "ea.qd"; qe: "ea.qe"; qf: "ea.qf"; qg: "ea.qg"; qh: "ea.qh"; qi: "ea.qi"; qj: "ea.qj"; qk: "ea.qk"; ql: "ea.ql"; qm: "ea.qm"; qn: "ea.qn"; qo: "ea.qo"; qp: "ea.qp"; qq: "ea.qq"; qr: "ea.qr"; qs: "ea.qs"; qt: "ea.qt"; qu: "ea.qu"; qv: "ea.qv"; qw: "ea.qw"; qx: "ea.qx"; qy: "ea.qy"; qz: "ea.qz"; ra: "ea.ra"; rb: "ea.rb"; rc: "ea.rc"; rd: "ea.rd"; re: "ea.re"; rf: "ea.rf"; rg: "ea.rg"; rh: "ea.rh"; ri: "ea.ri"; rj: "ea.rj"; rk: "ea.rk"; rl: "ea.rl"; rm: "ea.rm"; rn: "ea.rn"; ro: "ea.ro"; rp: "ea.rp"; rq: "ea.rq"; rr: "ea.rr"; rs: "ea.rs"; rt: "ea.rt"; ru: "ea.ru"; rv: "ea.rv"; rw: "ea.rw"; rx: "ea.rx"; ry: "ea.ry"; rz: "ea.rz"; sa: "ea.sa"; sb: "ea.sb"; sc: "ea.sc"; sd: "ea.sd"; se: "ea.se"; sf: "ea.sf"; sg: "ea.sg"; sh: "ea.sh"; si: "ea.si"; sj: "ea.sj"; sk: "ea.sk"; sl: "ea.sl"; sm: "ea.sm"; sn: "ea.sn"; so: "ea.so"; sp: "ea.sp"; sq: "ea.sq"; sr: "ea.sr"; ss: "ea.ss"; st: "ea.st"; su: "ea.su"; sv: "ea.sv"; sw: "ea.sw"; sx: "ea.sx"; sy: "ea.sy"; sz: "ea.sz"; ta: "ea.ta"; tb: "ea.tb"; tc: "ea.tc"; td: "ea.td"; te: "ea.te"; tf: "ea.tf"; tg: "ea.tg"; th: "ea.th"; ti: "ea.ti"; tj: "ea.tj"; tk: "ea.tk"; tl: "ea.tl"; tm: "ea.tm"; tn: "ea.tn"; to: "ea.to"; tp: "ea.tp"; tq: "ea.tq"; tr: "ea.tr"; ts: "ea.ts"; tt: "ea.tt"; tu: "ea.tu"; tv: "ea.tv"; tw: "ea.tw"; tx: "ea.tx"; ty: "ea.ty"; tz: "ea.tz"; ua: "ea.ua"; ub: "ea.ub"; uc: "ea.uc"; ud: "ea.ud"; ue: "ea.ue"; uf: "ea.uf"; ug: "ea.ug"; uh: "ea.uh"; ui: "ea.ui"; uj: "ea.uj"; uk: "ea.uk"; ul: "ea.ul"; um: "ea.um"; un: "ea.un"; uo: "ea.uo"; up: "ea.up"; uq: "ea.uq"; ur: "ea.ur"; us: "ea.us"; ut: "ea.ut"; uu: "ea.uu"; uv: "ea.uv"; uw: "ea.uw"; ux: "ea.ux"; uy: "ea.uy"; uz: "ea.uz"; va: "ea.va"; vb: "ea.vb"; vc: "ea.vc"; vd: "ea.vd"; ve: "ea.ve"; vf: "ea.vf"; vg: "ea.vg"; vh: "ea.vh"; vi: "ea.vi"; vj: "ea.vj"; vk: "ea.vk"; vl: "ea.vl"; vm: "ea.vm"; vn: "ea.vn"; vo: "ea.vo"; vp: "ea.vp"; vq: "ea.vq"; vr: "ea.vr"; vs: "ea.vs"; vt: "ea.vt"; vu: "ea.vu"; vv: "ea.vv"; vw: "ea.vw"; vx: "ea.vx"; vy: "ea.vy"; vz: "ea.vz"; wa: "ea.wa"; wb: "ea.wb"; wc: "ea.wc"; wd: "ea.wd"; we: "ea.we"; wf: "ea.wf"; wg: "ea.wg"; wh: "ea.wh"; wi: "ea.wi"; wj: "ea.wj"; wk: "ea.wk"; wl: "ea.wl"; wm: "ea.wm"; wn: "ea.wn"; wo: "ea.wo"; wp: "ea.wp"; wq: "ea.wq"; wr: "ea.wr"; ws: "ea.ws"; wt: "ea.wt"; wu: "ea.wu"; wv: "ea.wv"; ww: "ea.ww"; wx: "ea.wx"; wy: "ea.wy"; wz: "ea.wz"; xa: "ea.xa"; xb: "ea.xb"; xc: "ea.xc"; xd: "ea.xd"; xe: "ea.xe"; xf: "ea.xf"; xg: "ea.xg"; xh: "ea.xh"; xi: "ea.xi"; xj: "ea.xj"; xk: "ea.xk"; xl: "ea.xl"; xm: "ea.xm"; xn: "ea.xn"; xo: "ea.xo"; xp: "ea.xp"; xq: "ea.xq"; xr: "ea.xr"; xs: "ea.xs"; xt: "ea.xt"; xu: "ea.xu"; xv: "ea.xv"; xw: "ea.xw"; xx: "ea.xx"; xy: "ea.xy"; xz: "ea.xz"; ya: "ea.ya"; yb: "ea.yb"; yc: "ea.yc"; yd: "ea.yd"; ye: "ea.ye"; yf: "ea.yf"; yg: "ea.yg"; yh: "ea.yh"; yi: "ea.yi"; yj: "ea.yj"; yk: "ea.yk"; yl: "ea.yl"; ym: "ea.ym"; yn: "ea.yn"; yo: "ea.yo"; yp: "ea.yp"; yq: "ea.yq"; yr: "ea.yr"; ys: "ea.ys"; yt: "ea.yt"; yu: "ea.yu"; yv: "ea.yv"; yw: "ea.yw"; yx: "ea.yx"; yy: "ea.yy"; yz: "ea.yz"; za: "ea.za"; zb: "ea.zb"; zc: "ea.zc"; zd: "ea.zd"; ze: "ea.ze"; zf: "ea.zf"; zg: "ea.zg"; zh: "ea.zh"; zi: "ea.zi"; zj: "ea.zj"; zk: "ea.zk"; zl: "ea.zl"; zm: "ea.zm"; zn: "ea.zn"; zo: "ea.zo"; zp: "ea.zp"; zq: "ea.zq"; zr: "ea.zr"; zs: "ea.zs"; zt: "ea.zt"; zu: "ea.zu"; zv: "ea.zv"; zw: "ea.zw"; zx: "ea.zx"; zy: "ea.zy"; zz: "ea.zz"; }; eb: { aa: "eb.aa"; ab: "eb.ab"; ac: "eb.ac"; ad: "eb.ad"; ae: "eb.ae"; af: "eb.af"; ag: "eb.ag"; ah: "eb.ah"; ai: "eb.ai"; aj: "eb.aj"; ak: "eb.ak"; al: "eb.al"; am: "eb.am"; an: "eb.an"; ao: "eb.ao"; ap: "eb.ap"; aq: "eb.aq"; ar: "eb.ar"; as: "eb.as"; at: "eb.at"; au: "eb.au"; av: "eb.av"; aw: "eb.aw"; ax: "eb.ax"; ay: "eb.ay"; az: "eb.az"; ba: "eb.ba"; bb: "eb.bb"; bc: "eb.bc"; bd: "eb.bd"; be: "eb.be"; bf: "eb.bf"; bg: "eb.bg"; bh: "eb.bh"; bi: "eb.bi"; bj: "eb.bj"; bk: "eb.bk"; bl: "eb.bl"; bm: "eb.bm"; bn: "eb.bn"; bo: "eb.bo"; bp: "eb.bp"; bq: "eb.bq"; br: "eb.br"; bs: "eb.bs"; bt: "eb.bt"; bu: "eb.bu"; bv: "eb.bv"; bw: "eb.bw"; bx: "eb.bx"; by: "eb.by"; bz: "eb.bz"; ca: "eb.ca"; cb: "eb.cb"; cc: "eb.cc"; cd: "eb.cd"; ce: "eb.ce"; cf: "eb.cf"; cg: "eb.cg"; ch: "eb.ch"; ci: "eb.ci"; cj: "eb.cj"; ck: "eb.ck"; cl: "eb.cl"; cm: "eb.cm"; cn: "eb.cn"; co: "eb.co"; cp: "eb.cp"; cq: "eb.cq"; cr: "eb.cr"; cs: "eb.cs"; ct: "eb.ct"; cu: "eb.cu"; cv: "eb.cv"; cw: "eb.cw"; cx: "eb.cx"; cy: "eb.cy"; cz: "eb.cz"; da: "eb.da"; db: "eb.db"; dc: "eb.dc"; dd: "eb.dd"; de: "eb.de"; df: "eb.df"; dg: "eb.dg"; dh: "eb.dh"; di: "eb.di"; dj: "eb.dj"; dk: "eb.dk"; dl: "eb.dl"; dm: "eb.dm"; dn: "eb.dn"; do: "eb.do"; dp: "eb.dp"; dq: "eb.dq"; dr: "eb.dr"; ds: "eb.ds"; dt: "eb.dt"; du: "eb.du"; dv: "eb.dv"; dw: "eb.dw"; dx: "eb.dx"; dy: "eb.dy"; dz: "eb.dz"; ea: "eb.ea"; eb: "eb.eb"; ec: "eb.ec"; ed: "eb.ed"; ee: "eb.ee"; ef: "eb.ef"; eg: "eb.eg"; eh: "eb.eh"; ei: "eb.ei"; ej: "eb.ej"; ek: "eb.ek"; el: "eb.el"; em: "eb.em"; en: "eb.en"; eo: "eb.eo"; ep: "eb.ep"; eq: "eb.eq"; er: "eb.er"; es: "eb.es"; et: "eb.et"; eu: "eb.eu"; ev: "eb.ev"; ew: "eb.ew"; ex: "eb.ex"; ey: "eb.ey"; ez: "eb.ez"; fa: "eb.fa"; fb: "eb.fb"; fc: "eb.fc"; fd: "eb.fd"; fe: "eb.fe"; ff: "eb.ff"; fg: "eb.fg"; fh: "eb.fh"; fi: "eb.fi"; fj: "eb.fj"; fk: "eb.fk"; fl: "eb.fl"; fm: "eb.fm"; fn: "eb.fn"; fo: "eb.fo"; fp: "eb.fp"; fq: "eb.fq"; fr: "eb.fr"; fs: "eb.fs"; ft: "eb.ft"; fu: "eb.fu"; fv: "eb.fv"; fw: "eb.fw"; fx: "eb.fx"; fy: "eb.fy"; fz: "eb.fz"; ga: "eb.ga"; gb: "eb.gb"; gc: "eb.gc"; gd: "eb.gd"; ge: "eb.ge"; gf: "eb.gf"; gg: "eb.gg"; gh: "eb.gh"; gi: "eb.gi"; gj: "eb.gj"; gk: "eb.gk"; gl: "eb.gl"; gm: "eb.gm"; gn: "eb.gn"; go: "eb.go"; gp: "eb.gp"; gq: "eb.gq"; gr: "eb.gr"; gs: "eb.gs"; gt: "eb.gt"; gu: "eb.gu"; gv: "eb.gv"; gw: "eb.gw"; gx: "eb.gx"; gy: "eb.gy"; gz: "eb.gz"; ha: "eb.ha"; hb: "eb.hb"; hc: "eb.hc"; hd: "eb.hd"; he: "eb.he"; hf: "eb.hf"; hg: "eb.hg"; hh: "eb.hh"; hi: "eb.hi"; hj: "eb.hj"; hk: "eb.hk"; hl: "eb.hl"; hm: "eb.hm"; hn: "eb.hn"; ho: "eb.ho"; hp: "eb.hp"; hq: "eb.hq"; hr: "eb.hr"; hs: "eb.hs"; ht: "eb.ht"; hu: "eb.hu"; hv: "eb.hv"; hw: "eb.hw"; hx: "eb.hx"; hy: "eb.hy"; hz: "eb.hz"; ia: "eb.ia"; ib: "eb.ib"; ic: "eb.ic"; id: "eb.id"; ie: "eb.ie"; if: "eb.if"; ig: "eb.ig"; ih: "eb.ih"; ii: "eb.ii"; ij: "eb.ij"; ik: "eb.ik"; il: "eb.il"; im: "eb.im"; in: "eb.in"; io: "eb.io"; ip: "eb.ip"; iq: "eb.iq"; ir: "eb.ir"; is: "eb.is"; it: "eb.it"; iu: "eb.iu"; iv: "eb.iv"; iw: "eb.iw"; ix: "eb.ix"; iy: "eb.iy"; iz: "eb.iz"; ja: "eb.ja"; jb: "eb.jb"; jc: "eb.jc"; jd: "eb.jd"; je: "eb.je"; jf: "eb.jf"; jg: "eb.jg"; jh: "eb.jh"; ji: "eb.ji"; jj: "eb.jj"; jk: "eb.jk"; jl: "eb.jl"; jm: "eb.jm"; jn: "eb.jn"; jo: "eb.jo"; jp: "eb.jp"; jq: "eb.jq"; jr: "eb.jr"; js: "eb.js"; jt: "eb.jt"; ju: "eb.ju"; jv: "eb.jv"; jw: "eb.jw"; jx: "eb.jx"; jy: "eb.jy"; jz: "eb.jz"; ka: "eb.ka"; kb: "eb.kb"; kc: "eb.kc"; kd: "eb.kd"; ke: "eb.ke"; kf: "eb.kf"; kg: "eb.kg"; kh: "eb.kh"; ki: "eb.ki"; kj: "eb.kj"; kk: "eb.kk"; kl: "eb.kl"; km: "eb.km"; kn: "eb.kn"; ko: "eb.ko"; kp: "eb.kp"; kq: "eb.kq"; kr: "eb.kr"; ks: "eb.ks"; kt: "eb.kt"; ku: "eb.ku"; kv: "eb.kv"; kw: "eb.kw"; kx: "eb.kx"; ky: "eb.ky"; kz: "eb.kz"; la: "eb.la"; lb: "eb.lb"; lc: "eb.lc"; ld: "eb.ld"; le: "eb.le"; lf: "eb.lf"; lg: "eb.lg"; lh: "eb.lh"; li: "eb.li"; lj: "eb.lj"; lk: "eb.lk"; ll: "eb.ll"; lm: "eb.lm"; ln: "eb.ln"; lo: "eb.lo"; lp: "eb.lp"; lq: "eb.lq"; lr: "eb.lr"; ls: "eb.ls"; lt: "eb.lt"; lu: "eb.lu"; lv: "eb.lv"; lw: "eb.lw"; lx: "eb.lx"; ly: "eb.ly"; lz: "eb.lz"; ma: "eb.ma"; mb: "eb.mb"; mc: "eb.mc"; md: "eb.md"; me: "eb.me"; mf: "eb.mf"; mg: "eb.mg"; mh: "eb.mh"; mi: "eb.mi"; mj: "eb.mj"; mk: "eb.mk"; ml: "eb.ml"; mm: "eb.mm"; mn: "eb.mn"; mo: "eb.mo"; mp: "eb.mp"; mq: "eb.mq"; mr: "eb.mr"; ms: "eb.ms"; mt: "eb.mt"; mu: "eb.mu"; mv: "eb.mv"; mw: "eb.mw"; mx: "eb.mx"; my: "eb.my"; mz: "eb.mz"; na: "eb.na"; nb: "eb.nb"; nc: "eb.nc"; nd: "eb.nd"; ne: "eb.ne"; nf: "eb.nf"; ng: "eb.ng"; nh: "eb.nh"; ni: "eb.ni"; nj: "eb.nj"; nk: "eb.nk"; nl: "eb.nl"; nm: "eb.nm"; nn: "eb.nn"; no: "eb.no"; np: "eb.np"; nq: "eb.nq"; nr: "eb.nr"; ns: "eb.ns"; nt: "eb.nt"; nu: "eb.nu"; nv: "eb.nv"; nw: "eb.nw"; nx: "eb.nx"; ny: "eb.ny"; nz: "eb.nz"; oa: "eb.oa"; ob: "eb.ob"; oc: "eb.oc"; od: "eb.od"; oe: "eb.oe"; of: "eb.of"; og: "eb.og"; oh: "eb.oh"; oi: "eb.oi"; oj: "eb.oj"; ok: "eb.ok"; ol: "eb.ol"; om: "eb.om"; on: "eb.on"; oo: "eb.oo"; op: "eb.op"; oq: "eb.oq"; or: "eb.or"; os: "eb.os"; ot: "eb.ot"; ou: "eb.ou"; ov: "eb.ov"; ow: "eb.ow"; ox: "eb.ox"; oy: "eb.oy"; oz: "eb.oz"; pa: "eb.pa"; pb: "eb.pb"; pc: "eb.pc"; pd: "eb.pd"; pe: "eb.pe"; pf: "eb.pf"; pg: "eb.pg"; ph: "eb.ph"; pi: "eb.pi"; pj: "eb.pj"; pk: "eb.pk"; pl: "eb.pl"; pm: "eb.pm"; pn: "eb.pn"; po: "eb.po"; pp: "eb.pp"; pq: "eb.pq"; pr: "eb.pr"; ps: "eb.ps"; pt: "eb.pt"; pu: "eb.pu"; pv: "eb.pv"; pw: "eb.pw"; px: "eb.px"; py: "eb.py"; pz: "eb.pz"; qa: "eb.qa"; qb: "eb.qb"; qc: "eb.qc"; qd: "eb.qd"; qe: "eb.qe"; qf: "eb.qf"; qg: "eb.qg"; qh: "eb.qh"; qi: "eb.qi"; qj: "eb.qj"; qk: "eb.qk"; ql: "eb.ql"; qm: "eb.qm"; qn: "eb.qn"; qo: "eb.qo"; qp: "eb.qp"; qq: "eb.qq"; qr: "eb.qr"; qs: "eb.qs"; qt: "eb.qt"; qu: "eb.qu"; qv: "eb.qv"; qw: "eb.qw"; qx: "eb.qx"; qy: "eb.qy"; qz: "eb.qz"; ra: "eb.ra"; rb: "eb.rb"; rc: "eb.rc"; rd: "eb.rd"; re: "eb.re"; rf: "eb.rf"; rg: "eb.rg"; rh: "eb.rh"; ri: "eb.ri"; rj: "eb.rj"; rk: "eb.rk"; rl: "eb.rl"; rm: "eb.rm"; rn: "eb.rn"; ro: "eb.ro"; rp: "eb.rp"; rq: "eb.rq"; rr: "eb.rr"; rs: "eb.rs"; rt: "eb.rt"; ru: "eb.ru"; rv: "eb.rv"; rw: "eb.rw"; rx: "eb.rx"; ry: "eb.ry"; rz: "eb.rz"; sa: "eb.sa"; sb: "eb.sb"; sc: "eb.sc"; sd: "eb.sd"; se: "eb.se"; sf: "eb.sf"; sg: "eb.sg"; sh: "eb.sh"; si: "eb.si"; sj: "eb.sj"; sk: "eb.sk"; sl: "eb.sl"; sm: "eb.sm"; sn: "eb.sn"; so: "eb.so"; sp: "eb.sp"; sq: "eb.sq"; sr: "eb.sr"; ss: "eb.ss"; st: "eb.st"; su: "eb.su"; sv: "eb.sv"; sw: "eb.sw"; sx: "eb.sx"; sy: "eb.sy"; sz: "eb.sz"; ta: "eb.ta"; tb: "eb.tb"; tc: "eb.tc"; td: "eb.td"; te: "eb.te"; tf: "eb.tf"; tg: "eb.tg"; th: "eb.th"; ti: "eb.ti"; tj: "eb.tj"; tk: "eb.tk"; tl: "eb.tl"; tm: "eb.tm"; tn: "eb.tn"; to: "eb.to"; tp: "eb.tp"; tq: "eb.tq"; tr: "eb.tr"; ts: "eb.ts"; tt: "eb.tt"; tu: "eb.tu"; tv: "eb.tv"; tw: "eb.tw"; tx: "eb.tx"; ty: "eb.ty"; tz: "eb.tz"; ua: "eb.ua"; ub: "eb.ub"; uc: "eb.uc"; ud: "eb.ud"; ue: "eb.ue"; uf: "eb.uf"; ug: "eb.ug"; uh: "eb.uh"; ui: "eb.ui"; uj: "eb.uj"; uk: "eb.uk"; ul: "eb.ul"; um: "eb.um"; un: "eb.un"; uo: "eb.uo"; up: "eb.up"; uq: "eb.uq"; ur: "eb.ur"; us: "eb.us"; ut: "eb.ut"; uu: "eb.uu"; uv: "eb.uv"; uw: "eb.uw"; ux: "eb.ux"; uy: "eb.uy"; uz: "eb.uz"; va: "eb.va"; vb: "eb.vb"; vc: "eb.vc"; vd: "eb.vd"; ve: "eb.ve"; vf: "eb.vf"; vg: "eb.vg"; vh: "eb.vh"; vi: "eb.vi"; vj: "eb.vj"; vk: "eb.vk"; vl: "eb.vl"; vm: "eb.vm"; vn: "eb.vn"; vo: "eb.vo"; vp: "eb.vp"; vq: "eb.vq"; vr: "eb.vr"; vs: "eb.vs"; vt: "eb.vt"; vu: "eb.vu"; vv: "eb.vv"; vw: "eb.vw"; vx: "eb.vx"; vy: "eb.vy"; vz: "eb.vz"; wa: "eb.wa"; wb: "eb.wb"; wc: "eb.wc"; wd: "eb.wd"; we: "eb.we"; wf: "eb.wf"; wg: "eb.wg"; wh: "eb.wh"; wi: "eb.wi"; wj: "eb.wj"; wk: "eb.wk"; wl: "eb.wl"; wm: "eb.wm"; wn: "eb.wn"; wo: "eb.wo"; wp: "eb.wp"; wq: "eb.wq"; wr: "eb.wr"; ws: "eb.ws"; wt: "eb.wt"; wu: "eb.wu"; wv: "eb.wv"; ww: "eb.ww"; wx: "eb.wx"; wy: "eb.wy"; wz: "eb.wz"; xa: "eb.xa"; xb: "eb.xb"; xc: "eb.xc"; xd: "eb.xd"; xe: "eb.xe"; xf: "eb.xf"; xg: "eb.xg"; xh: "eb.xh"; xi: "eb.xi"; xj: "eb.xj"; xk: "eb.xk"; xl: "eb.xl"; xm: "eb.xm"; xn: "eb.xn"; xo: "eb.xo"; xp: "eb.xp"; xq: "eb.xq"; xr: "eb.xr"; xs: "eb.xs"; xt: "eb.xt"; xu: "eb.xu"; xv: "eb.xv"; xw: "eb.xw"; xx: "eb.xx"; xy: "eb.xy"; xz: "eb.xz"; ya: "eb.ya"; yb: "eb.yb"; yc: "eb.yc"; yd: "eb.yd"; ye: "eb.ye"; yf: "eb.yf"; yg: "eb.yg"; yh: "eb.yh"; yi: "eb.yi"; yj: "eb.yj"; yk: "eb.yk"; yl: "eb.yl"; ym: "eb.ym"; yn: "eb.yn"; yo: "eb.yo"; yp: "eb.yp"; yq: "eb.yq"; yr: "eb.yr"; ys: "eb.ys"; yt: "eb.yt"; yu: "eb.yu"; yv: "eb.yv"; yw: "eb.yw"; yx: "eb.yx"; yy: "eb.yy"; yz: "eb.yz"; za: "eb.za"; zb: "eb.zb"; zc: "eb.zc"; zd: "eb.zd"; ze: "eb.ze"; zf: "eb.zf"; zg: "eb.zg"; zh: "eb.zh"; zi: "eb.zi"; zj: "eb.zj"; zk: "eb.zk"; zl: "eb.zl"; zm: "eb.zm"; zn: "eb.zn"; zo: "eb.zo"; zp: "eb.zp"; zq: "eb.zq"; zr: "eb.zr"; zs: "eb.zs"; zt: "eb.zt"; zu: "eb.zu"; zv: "eb.zv"; zw: "eb.zw"; zx: "eb.zx"; zy: "eb.zy"; zz: "eb.zz"; }; ec: { aa: "ec.aa"; ab: "ec.ab"; ac: "ec.ac"; ad: "ec.ad"; ae: "ec.ae"; af: "ec.af"; ag: "ec.ag"; ah: "ec.ah"; ai: "ec.ai"; aj: "ec.aj"; ak: "ec.ak"; al: "ec.al"; am: "ec.am"; an: "ec.an"; ao: "ec.ao"; ap: "ec.ap"; aq: "ec.aq"; ar: "ec.ar"; as: "ec.as"; at: "ec.at"; au: "ec.au"; av: "ec.av"; aw: "ec.aw"; ax: "ec.ax"; ay: "ec.ay"; az: "ec.az"; ba: "ec.ba"; bb: "ec.bb"; bc: "ec.bc"; bd: "ec.bd"; be: "ec.be"; bf: "ec.bf"; bg: "ec.bg"; bh: "ec.bh"; bi: "ec.bi"; bj: "ec.bj"; bk: "ec.bk"; bl: "ec.bl"; bm: "ec.bm"; bn: "ec.bn"; bo: "ec.bo"; bp: "ec.bp"; bq: "ec.bq"; br: "ec.br"; bs: "ec.bs"; bt: "ec.bt"; bu: "ec.bu"; bv: "ec.bv"; bw: "ec.bw"; bx: "ec.bx"; by: "ec.by"; bz: "ec.bz"; ca: "ec.ca"; cb: "ec.cb"; cc: "ec.cc"; cd: "ec.cd"; ce: "ec.ce"; cf: "ec.cf"; cg: "ec.cg"; ch: "ec.ch"; ci: "ec.ci"; cj: "ec.cj"; ck: "ec.ck"; cl: "ec.cl"; cm: "ec.cm"; cn: "ec.cn"; co: "ec.co"; cp: "ec.cp"; cq: "ec.cq"; cr: "ec.cr"; cs: "ec.cs"; ct: "ec.ct"; cu: "ec.cu"; cv: "ec.cv"; cw: "ec.cw"; cx: "ec.cx"; cy: "ec.cy"; cz: "ec.cz"; da: "ec.da"; db: "ec.db"; dc: "ec.dc"; dd: "ec.dd"; de: "ec.de"; df: "ec.df"; dg: "ec.dg"; dh: "ec.dh"; di: "ec.di"; dj: "ec.dj"; dk: "ec.dk"; dl: "ec.dl"; dm: "ec.dm"; dn: "ec.dn"; do: "ec.do"; dp: "ec.dp"; dq: "ec.dq"; dr: "ec.dr"; ds: "ec.ds"; dt: "ec.dt"; du: "ec.du"; dv: "ec.dv"; dw: "ec.dw"; dx: "ec.dx"; dy: "ec.dy"; dz: "ec.dz"; ea: "ec.ea"; eb: "ec.eb"; ec: "ec.ec"; ed: "ec.ed"; ee: "ec.ee"; ef: "ec.ef"; eg: "ec.eg"; eh: "ec.eh"; ei: "ec.ei"; ej: "ec.ej"; ek: "ec.ek"; el: "ec.el"; em: "ec.em"; en: "ec.en"; eo: "ec.eo"; ep: "ec.ep"; eq: "ec.eq"; er: "ec.er"; es: "ec.es"; et: "ec.et"; eu: "ec.eu"; ev: "ec.ev"; ew: "ec.ew"; ex: "ec.ex"; ey: "ec.ey"; ez: "ec.ez"; fa: "ec.fa"; fb: "ec.fb"; fc: "ec.fc"; fd: "ec.fd"; fe: "ec.fe"; ff: "ec.ff"; fg: "ec.fg"; fh: "ec.fh"; fi: "ec.fi"; fj: "ec.fj"; fk: "ec.fk"; fl: "ec.fl"; fm: "ec.fm"; fn: "ec.fn"; fo: "ec.fo"; fp: "ec.fp"; fq: "ec.fq"; fr: "ec.fr"; fs: "ec.fs"; ft: "ec.ft"; fu: "ec.fu"; fv: "ec.fv"; fw: "ec.fw"; fx: "ec.fx"; fy: "ec.fy"; fz: "ec.fz"; ga: "ec.ga"; gb: "ec.gb"; gc: "ec.gc"; gd: "ec.gd"; ge: "ec.ge"; gf: "ec.gf"; gg: "ec.gg"; gh: "ec.gh"; gi: "ec.gi"; gj: "ec.gj"; gk: "ec.gk"; gl: "ec.gl"; gm: "ec.gm"; gn: "ec.gn"; go: "ec.go"; gp: "ec.gp"; gq: "ec.gq"; gr: "ec.gr"; gs: "ec.gs"; gt: "ec.gt"; gu: "ec.gu"; gv: "ec.gv"; gw: "ec.gw"; gx: "ec.gx"; gy: "ec.gy"; gz: "ec.gz"; ha: "ec.ha"; hb: "ec.hb"; hc: "ec.hc"; hd: "ec.hd"; he: "ec.he"; hf: "ec.hf"; hg: "ec.hg"; hh: "ec.hh"; hi: "ec.hi"; hj: "ec.hj"; hk: "ec.hk"; hl: "ec.hl"; hm: "ec.hm"; hn: "ec.hn"; ho: "ec.ho"; hp: "ec.hp"; hq: "ec.hq"; hr: "ec.hr"; hs: "ec.hs"; ht: "ec.ht"; hu: "ec.hu"; hv: "ec.hv"; hw: "ec.hw"; hx: "ec.hx"; hy: "ec.hy"; hz: "ec.hz"; ia: "ec.ia"; ib: "ec.ib"; ic: "ec.ic"; id: "ec.id"; ie: "ec.ie"; if: "ec.if"; ig: "ec.ig"; ih: "ec.ih"; ii: "ec.ii"; ij: "ec.ij"; ik: "ec.ik"; il: "ec.il"; im: "ec.im"; in: "ec.in"; io: "ec.io"; ip: "ec.ip"; iq: "ec.iq"; ir: "ec.ir"; is: "ec.is"; it: "ec.it"; iu: "ec.iu"; iv: "ec.iv"; iw: "ec.iw"; ix: "ec.ix"; iy: "ec.iy"; iz: "ec.iz"; ja: "ec.ja"; jb: "ec.jb"; jc: "ec.jc"; jd: "ec.jd"; je: "ec.je"; jf: "ec.jf"; jg: "ec.jg"; jh: "ec.jh"; ji: "ec.ji"; jj: "ec.jj"; jk: "ec.jk"; jl: "ec.jl"; jm: "ec.jm"; jn: "ec.jn"; jo: "ec.jo"; jp: "ec.jp"; jq: "ec.jq"; jr: "ec.jr"; js: "ec.js"; jt: "ec.jt"; ju: "ec.ju"; jv: "ec.jv"; jw: "ec.jw"; jx: "ec.jx"; jy: "ec.jy"; jz: "ec.jz"; ka: "ec.ka"; kb: "ec.kb"; kc: "ec.kc"; kd: "ec.kd"; ke: "ec.ke"; kf: "ec.kf"; kg: "ec.kg"; kh: "ec.kh"; ki: "ec.ki"; kj: "ec.kj"; kk: "ec.kk"; kl: "ec.kl"; km: "ec.km"; kn: "ec.kn"; ko: "ec.ko"; kp: "ec.kp"; kq: "ec.kq"; kr: "ec.kr"; ks: "ec.ks"; kt: "ec.kt"; ku: "ec.ku"; kv: "ec.kv"; kw: "ec.kw"; kx: "ec.kx"; ky: "ec.ky"; kz: "ec.kz"; la: "ec.la"; lb: "ec.lb"; lc: "ec.lc"; ld: "ec.ld"; le: "ec.le"; lf: "ec.lf"; lg: "ec.lg"; lh: "ec.lh"; li: "ec.li"; lj: "ec.lj"; lk: "ec.lk"; ll: "ec.ll"; lm: "ec.lm"; ln: "ec.ln"; lo: "ec.lo"; lp: "ec.lp"; lq: "ec.lq"; lr: "ec.lr"; ls: "ec.ls"; lt: "ec.lt"; lu: "ec.lu"; lv: "ec.lv"; lw: "ec.lw"; lx: "ec.lx"; ly: "ec.ly"; lz: "ec.lz"; ma: "ec.ma"; mb: "ec.mb"; mc: "ec.mc"; md: "ec.md"; me: "ec.me"; mf: "ec.mf"; mg: "ec.mg"; mh: "ec.mh"; mi: "ec.mi"; mj: "ec.mj"; mk: "ec.mk"; ml: "ec.ml"; mm: "ec.mm"; mn: "ec.mn"; mo: "ec.mo"; mp: "ec.mp"; mq: "ec.mq"; mr: "ec.mr"; ms: "ec.ms"; mt: "ec.mt"; mu: "ec.mu"; mv: "ec.mv"; mw: "ec.mw"; mx: "ec.mx"; my: "ec.my"; mz: "ec.mz"; na: "ec.na"; nb: "ec.nb"; nc: "ec.nc"; nd: "ec.nd"; ne: "ec.ne"; nf: "ec.nf"; ng: "ec.ng"; nh: "ec.nh"; ni: "ec.ni"; nj: "ec.nj"; nk: "ec.nk"; nl: "ec.nl"; nm: "ec.nm"; nn: "ec.nn"; no: "ec.no"; np: "ec.np"; nq: "ec.nq"; nr: "ec.nr"; ns: "ec.ns"; nt: "ec.nt"; nu: "ec.nu"; nv: "ec.nv"; nw: "ec.nw"; nx: "ec.nx"; ny: "ec.ny"; nz: "ec.nz"; oa: "ec.oa"; ob: "ec.ob"; oc: "ec.oc"; od: "ec.od"; oe: "ec.oe"; of: "ec.of"; og: "ec.og"; oh: "ec.oh"; oi: "ec.oi"; oj: "ec.oj"; ok: "ec.ok"; ol: "ec.ol"; om: "ec.om"; on: "ec.on"; oo: "ec.oo"; op: "ec.op"; oq: "ec.oq"; or: "ec.or"; os: "ec.os"; ot: "ec.ot"; ou: "ec.ou"; ov: "ec.ov"; ow: "ec.ow"; ox: "ec.ox"; oy: "ec.oy"; oz: "ec.oz"; pa: "ec.pa"; pb: "ec.pb"; pc: "ec.pc"; pd: "ec.pd"; pe: "ec.pe"; pf: "ec.pf"; pg: "ec.pg"; ph: "ec.ph"; pi: "ec.pi"; pj: "ec.pj"; pk: "ec.pk"; pl: "ec.pl"; pm: "ec.pm"; pn: "ec.pn"; po: "ec.po"; pp: "ec.pp"; pq: "ec.pq"; pr: "ec.pr"; ps: "ec.ps"; pt: "ec.pt"; pu: "ec.pu"; pv: "ec.pv"; pw: "ec.pw"; px: "ec.px"; py: "ec.py"; pz: "ec.pz"; qa: "ec.qa"; qb: "ec.qb"; qc: "ec.qc"; qd: "ec.qd"; qe: "ec.qe"; qf: "ec.qf"; qg: "ec.qg"; qh: "ec.qh"; qi: "ec.qi"; qj: "ec.qj"; qk: "ec.qk"; ql: "ec.ql"; qm: "ec.qm"; qn: "ec.qn"; qo: "ec.qo"; qp: "ec.qp"; qq: "ec.qq"; qr: "ec.qr"; qs: "ec.qs"; qt: "ec.qt"; qu: "ec.qu"; qv: "ec.qv"; qw: "ec.qw"; qx: "ec.qx"; qy: "ec.qy"; qz: "ec.qz"; ra: "ec.ra"; rb: "ec.rb"; rc: "ec.rc"; rd: "ec.rd"; re: "ec.re"; rf: "ec.rf"; rg: "ec.rg"; rh: "ec.rh"; ri: "ec.ri"; rj: "ec.rj"; rk: "ec.rk"; rl: "ec.rl"; rm: "ec.rm"; rn: "ec.rn"; ro: "ec.ro"; rp: "ec.rp"; rq: "ec.rq"; rr: "ec.rr"; rs: "ec.rs"; rt: "ec.rt"; ru: "ec.ru"; rv: "ec.rv"; rw: "ec.rw"; rx: "ec.rx"; ry: "ec.ry"; rz: "ec.rz"; sa: "ec.sa"; sb: "ec.sb"; sc: "ec.sc"; sd: "ec.sd"; se: "ec.se"; sf: "ec.sf"; sg: "ec.sg"; sh: "ec.sh"; si: "ec.si"; sj: "ec.sj"; sk: "ec.sk"; sl: "ec.sl"; sm: "ec.sm"; sn: "ec.sn"; so: "ec.so"; sp: "ec.sp"; sq: "ec.sq"; sr: "ec.sr"; ss: "ec.ss"; st: "ec.st"; su: "ec.su"; sv: "ec.sv"; sw: "ec.sw"; sx: "ec.sx"; sy: "ec.sy"; sz: "ec.sz"; ta: "ec.ta"; tb: "ec.tb"; tc: "ec.tc"; td: "ec.td"; te: "ec.te"; tf: "ec.tf"; tg: "ec.tg"; th: "ec.th"; ti: "ec.ti"; tj: "ec.tj"; tk: "ec.tk"; tl: "ec.tl"; tm: "ec.tm"; tn: "ec.tn"; to: "ec.to"; tp: "ec.tp"; tq: "ec.tq"; tr: "ec.tr"; ts: "ec.ts"; tt: "ec.tt"; tu: "ec.tu"; tv: "ec.tv"; tw: "ec.tw"; tx: "ec.tx"; ty: "ec.ty"; tz: "ec.tz"; ua: "ec.ua"; ub: "ec.ub"; uc: "ec.uc"; ud: "ec.ud"; ue: "ec.ue"; uf: "ec.uf"; ug: "ec.ug"; uh: "ec.uh"; ui: "ec.ui"; uj: "ec.uj"; uk: "ec.uk"; ul: "ec.ul"; um: "ec.um"; un: "ec.un"; uo: "ec.uo"; up: "ec.up"; uq: "ec.uq"; ur: "ec.ur"; us: "ec.us"; ut: "ec.ut"; uu: "ec.uu"; uv: "ec.uv"; uw: "ec.uw"; ux: "ec.ux"; uy: "ec.uy"; uz: "ec.uz"; va: "ec.va"; vb: "ec.vb"; vc: "ec.vc"; vd: "ec.vd"; ve: "ec.ve"; vf: "ec.vf"; vg: "ec.vg"; vh: "ec.vh"; vi: "ec.vi"; vj: "ec.vj"; vk: "ec.vk"; vl: "ec.vl"; vm: "ec.vm"; vn: "ec.vn"; vo: "ec.vo"; vp: "ec.vp"; vq: "ec.vq"; vr: "ec.vr"; vs: "ec.vs"; vt: "ec.vt"; vu: "ec.vu"; vv: "ec.vv"; vw: "ec.vw"; vx: "ec.vx"; vy: "ec.vy"; vz: "ec.vz"; wa: "ec.wa"; wb: "ec.wb"; wc: "ec.wc"; wd: "ec.wd"; we: "ec.we"; wf: "ec.wf"; wg: "ec.wg"; wh: "ec.wh"; wi: "ec.wi"; wj: "ec.wj"; wk: "ec.wk"; wl: "ec.wl"; wm: "ec.wm"; wn: "ec.wn"; wo: "ec.wo"; wp: "ec.wp"; wq: "ec.wq"; wr: "ec.wr"; ws: "ec.ws"; wt: "ec.wt"; wu: "ec.wu"; wv: "ec.wv"; ww: "ec.ww"; wx: "ec.wx"; wy: "ec.wy"; wz: "ec.wz"; xa: "ec.xa"; xb: "ec.xb"; xc: "ec.xc"; xd: "ec.xd"; xe: "ec.xe"; xf: "ec.xf"; xg: "ec.xg"; xh: "ec.xh"; xi: "ec.xi"; xj: "ec.xj"; xk: "ec.xk"; xl: "ec.xl"; xm: "ec.xm"; xn: "ec.xn"; xo: "ec.xo"; xp: "ec.xp"; xq: "ec.xq"; xr: "ec.xr"; xs: "ec.xs"; xt: "ec.xt"; xu: "ec.xu"; xv: "ec.xv"; xw: "ec.xw"; xx: "ec.xx"; xy: "ec.xy"; xz: "ec.xz"; ya: "ec.ya"; yb: "ec.yb"; yc: "ec.yc"; yd: "ec.yd"; ye: "ec.ye"; yf: "ec.yf"; yg: "ec.yg"; yh: "ec.yh"; yi: "ec.yi"; yj: "ec.yj"; yk: "ec.yk"; yl: "ec.yl"; ym: "ec.ym"; yn: "ec.yn"; yo: "ec.yo"; yp: "ec.yp"; yq: "ec.yq"; yr: "ec.yr"; ys: "ec.ys"; yt: "ec.yt"; yu: "ec.yu"; yv: "ec.yv"; yw: "ec.yw"; yx: "ec.yx"; yy: "ec.yy"; yz: "ec.yz"; za: "ec.za"; zb: "ec.zb"; zc: "ec.zc"; zd: "ec.zd"; ze: "ec.ze"; zf: "ec.zf"; zg: "ec.zg"; zh: "ec.zh"; zi: "ec.zi"; zj: "ec.zj"; zk: "ec.zk"; zl: "ec.zl"; zm: "ec.zm"; zn: "ec.zn"; zo: "ec.zo"; zp: "ec.zp"; zq: "ec.zq"; zr: "ec.zr"; zs: "ec.zs"; zt: "ec.zt"; zu: "ec.zu"; zv: "ec.zv"; zw: "ec.zw"; zx: "ec.zx"; zy: "ec.zy"; zz: "ec.zz"; }; ed: { aa: "ed.aa"; ab: "ed.ab"; ac: "ed.ac"; ad: "ed.ad"; ae: "ed.ae"; af: "ed.af"; ag: "ed.ag"; ah: "ed.ah"; ai: "ed.ai"; aj: "ed.aj"; ak: "ed.ak"; al: "ed.al"; am: "ed.am"; an: "ed.an"; ao: "ed.ao"; ap: "ed.ap"; aq: "ed.aq"; ar: "ed.ar"; as: "ed.as"; at: "ed.at"; au: "ed.au"; av: "ed.av"; aw: "ed.aw"; ax: "ed.ax"; ay: "ed.ay"; az: "ed.az"; ba: "ed.ba"; bb: "ed.bb"; bc: "ed.bc"; bd: "ed.bd"; be: "ed.be"; bf: "ed.bf"; bg: "ed.bg"; bh: "ed.bh"; bi: "ed.bi"; bj: "ed.bj"; bk: "ed.bk"; bl: "ed.bl"; bm: "ed.bm"; bn: "ed.bn"; bo: "ed.bo"; bp: "ed.bp"; bq: "ed.bq"; br: "ed.br"; bs: "ed.bs"; bt: "ed.bt"; bu: "ed.bu"; bv: "ed.bv"; bw: "ed.bw"; bx: "ed.bx"; by: "ed.by"; bz: "ed.bz"; ca: "ed.ca"; cb: "ed.cb"; cc: "ed.cc"; cd: "ed.cd"; ce: "ed.ce"; cf: "ed.cf"; cg: "ed.cg"; ch: "ed.ch"; ci: "ed.ci"; cj: "ed.cj"; ck: "ed.ck"; cl: "ed.cl"; cm: "ed.cm"; cn: "ed.cn"; co: "ed.co"; cp: "ed.cp"; cq: "ed.cq"; cr: "ed.cr"; cs: "ed.cs"; ct: "ed.ct"; cu: "ed.cu"; cv: "ed.cv"; cw: "ed.cw"; cx: "ed.cx"; cy: "ed.cy"; cz: "ed.cz"; da: "ed.da"; db: "ed.db"; dc: "ed.dc"; dd: "ed.dd"; de: "ed.de"; df: "ed.df"; dg: "ed.dg"; dh: "ed.dh"; di: "ed.di"; dj: "ed.dj"; dk: "ed.dk"; dl: "ed.dl"; dm: "ed.dm"; dn: "ed.dn"; do: "ed.do"; dp: "ed.dp"; dq: "ed.dq"; dr: "ed.dr"; ds: "ed.ds"; dt: "ed.dt"; du: "ed.du"; dv: "ed.dv"; dw: "ed.dw"; dx: "ed.dx"; dy: "ed.dy"; dz: "ed.dz"; ea: "ed.ea"; eb: "ed.eb"; ec: "ed.ec"; ed: "ed.ed"; ee: "ed.ee"; ef: "ed.ef"; eg: "ed.eg"; eh: "ed.eh"; ei: "ed.ei"; ej: "ed.ej"; ek: "ed.ek"; el: "ed.el"; em: "ed.em"; en: "ed.en"; eo: "ed.eo"; ep: "ed.ep"; eq: "ed.eq"; er: "ed.er"; es: "ed.es"; et: "ed.et"; eu: "ed.eu"; ev: "ed.ev"; ew: "ed.ew"; ex: "ed.ex"; ey: "ed.ey"; ez: "ed.ez"; fa: "ed.fa"; fb: "ed.fb"; fc: "ed.fc"; fd: "ed.fd"; fe: "ed.fe"; ff: "ed.ff"; fg: "ed.fg"; fh: "ed.fh"; fi: "ed.fi"; fj: "ed.fj"; fk: "ed.fk"; fl: "ed.fl"; fm: "ed.fm"; fn: "ed.fn"; fo: "ed.fo"; fp: "ed.fp"; fq: "ed.fq"; fr: "ed.fr"; fs: "ed.fs"; ft: "ed.ft"; fu: "ed.fu"; fv: "ed.fv"; fw: "ed.fw"; fx: "ed.fx"; fy: "ed.fy"; fz: "ed.fz"; ga: "ed.ga"; gb: "ed.gb"; gc: "ed.gc"; gd: "ed.gd"; ge: "ed.ge"; gf: "ed.gf"; gg: "ed.gg"; gh: "ed.gh"; gi: "ed.gi"; gj: "ed.gj"; gk: "ed.gk"; gl: "ed.gl"; gm: "ed.gm"; gn: "ed.gn"; go: "ed.go"; gp: "ed.gp"; gq: "ed.gq"; gr: "ed.gr"; gs: "ed.gs"; gt: "ed.gt"; gu: "ed.gu"; gv: "ed.gv"; gw: "ed.gw"; gx: "ed.gx"; gy: "ed.gy"; gz: "ed.gz"; ha: "ed.ha"; hb: "ed.hb"; hc: "ed.hc"; hd: "ed.hd"; he: "ed.he"; hf: "ed.hf"; hg: "ed.hg"; hh: "ed.hh"; hi: "ed.hi"; hj: "ed.hj"; hk: "ed.hk"; hl: "ed.hl"; hm: "ed.hm"; hn: "ed.hn"; ho: "ed.ho"; hp: "ed.hp"; hq: "ed.hq"; hr: "ed.hr"; hs: "ed.hs"; ht: "ed.ht"; hu: "ed.hu"; hv: "ed.hv"; hw: "ed.hw"; hx: "ed.hx"; hy: "ed.hy"; hz: "ed.hz"; ia: "ed.ia"; ib: "ed.ib"; ic: "ed.ic"; id: "ed.id"; ie: "ed.ie"; if: "ed.if"; ig: "ed.ig"; ih: "ed.ih"; ii: "ed.ii"; ij: "ed.ij"; ik: "ed.ik"; il: "ed.il"; im: "ed.im"; in: "ed.in"; io: "ed.io"; ip: "ed.ip"; iq: "ed.iq"; ir: "ed.ir"; is: "ed.is"; it: "ed.it"; iu: "ed.iu"; iv: "ed.iv"; iw: "ed.iw"; ix: "ed.ix"; iy: "ed.iy"; iz: "ed.iz"; ja: "ed.ja"; jb: "ed.jb"; jc: "ed.jc"; jd: "ed.jd"; je: "ed.je"; jf: "ed.jf"; jg: "ed.jg"; jh: "ed.jh"; ji: "ed.ji"; jj: "ed.jj"; jk: "ed.jk"; jl: "ed.jl"; jm: "ed.jm"; jn: "ed.jn"; jo: "ed.jo"; jp: "ed.jp"; jq: "ed.jq"; jr: "ed.jr"; js: "ed.js"; jt: "ed.jt"; ju: "ed.ju"; jv: "ed.jv"; jw: "ed.jw"; jx: "ed.jx"; jy: "ed.jy"; jz: "ed.jz"; ka: "ed.ka"; kb: "ed.kb"; kc: "ed.kc"; kd: "ed.kd"; ke: "ed.ke"; kf: "ed.kf"; kg: "ed.kg"; kh: "ed.kh"; ki: "ed.ki"; kj: "ed.kj"; kk: "ed.kk"; kl: "ed.kl"; km: "ed.km"; kn: "ed.kn"; ko: "ed.ko"; kp: "ed.kp"; kq: "ed.kq"; kr: "ed.kr"; ks: "ed.ks"; kt: "ed.kt"; ku: "ed.ku"; kv: "ed.kv"; kw: "ed.kw"; kx: "ed.kx"; ky: "ed.ky"; kz: "ed.kz"; la: "ed.la"; lb: "ed.lb"; lc: "ed.lc"; ld: "ed.ld"; le: "ed.le"; lf: "ed.lf"; lg: "ed.lg"; lh: "ed.lh"; li: "ed.li"; lj: "ed.lj"; lk: "ed.lk"; ll: "ed.ll"; lm: "ed.lm"; ln: "ed.ln"; lo: "ed.lo"; lp: "ed.lp"; lq: "ed.lq"; lr: "ed.lr"; ls: "ed.ls"; lt: "ed.lt"; lu: "ed.lu"; lv: "ed.lv"; lw: "ed.lw"; lx: "ed.lx"; ly: "ed.ly"; lz: "ed.lz"; ma: "ed.ma"; mb: "ed.mb"; mc: "ed.mc"; md: "ed.md"; me: "ed.me"; mf: "ed.mf"; mg: "ed.mg"; mh: "ed.mh"; mi: "ed.mi"; mj: "ed.mj"; mk: "ed.mk"; ml: "ed.ml"; mm: "ed.mm"; mn: "ed.mn"; mo: "ed.mo"; mp: "ed.mp"; mq: "ed.mq"; mr: "ed.mr"; ms: "ed.ms"; mt: "ed.mt"; mu: "ed.mu"; mv: "ed.mv"; mw: "ed.mw"; mx: "ed.mx"; my: "ed.my"; mz: "ed.mz"; na: "ed.na"; nb: "ed.nb"; nc: "ed.nc"; nd: "ed.nd"; ne: "ed.ne"; nf: "ed.nf"; ng: "ed.ng"; nh: "ed.nh"; ni: "ed.ni"; nj: "ed.nj"; nk: "ed.nk"; nl: "ed.nl"; nm: "ed.nm"; nn: "ed.nn"; no: "ed.no"; np: "ed.np"; nq: "ed.nq"; nr: "ed.nr"; ns: "ed.ns"; nt: "ed.nt"; nu: "ed.nu"; nv: "ed.nv"; nw: "ed.nw"; nx: "ed.nx"; ny: "ed.ny"; nz: "ed.nz"; oa: "ed.oa"; ob: "ed.ob"; oc: "ed.oc"; od: "ed.od"; oe: "ed.oe"; of: "ed.of"; og: "ed.og"; oh: "ed.oh"; oi: "ed.oi"; oj: "ed.oj"; ok: "ed.ok"; ol: "ed.ol"; om: "ed.om"; on: "ed.on"; oo: "ed.oo"; op: "ed.op"; oq: "ed.oq"; or: "ed.or"; os: "ed.os"; ot: "ed.ot"; ou: "ed.ou"; ov: "ed.ov"; ow: "ed.ow"; ox: "ed.ox"; oy: "ed.oy"; oz: "ed.oz"; pa: "ed.pa"; pb: "ed.pb"; pc: "ed.pc"; pd: "ed.pd"; pe: "ed.pe"; pf: "ed.pf"; pg: "ed.pg"; ph: "ed.ph"; pi: "ed.pi"; pj: "ed.pj"; pk: "ed.pk"; pl: "ed.pl"; pm: "ed.pm"; pn: "ed.pn"; po: "ed.po"; pp: "ed.pp"; pq: "ed.pq"; pr: "ed.pr"; ps: "ed.ps"; pt: "ed.pt"; pu: "ed.pu"; pv: "ed.pv"; pw: "ed.pw"; px: "ed.px"; py: "ed.py"; pz: "ed.pz"; qa: "ed.qa"; qb: "ed.qb"; qc: "ed.qc"; qd: "ed.qd"; qe: "ed.qe"; qf: "ed.qf"; qg: "ed.qg"; qh: "ed.qh"; qi: "ed.qi"; qj: "ed.qj"; qk: "ed.qk"; ql: "ed.ql"; qm: "ed.qm"; qn: "ed.qn"; qo: "ed.qo"; qp: "ed.qp"; qq: "ed.qq"; qr: "ed.qr"; qs: "ed.qs"; qt: "ed.qt"; qu: "ed.qu"; qv: "ed.qv"; qw: "ed.qw"; qx: "ed.qx"; qy: "ed.qy"; qz: "ed.qz"; ra: "ed.ra"; rb: "ed.rb"; rc: "ed.rc"; rd: "ed.rd"; re: "ed.re"; rf: "ed.rf"; rg: "ed.rg"; rh: "ed.rh"; ri: "ed.ri"; rj: "ed.rj"; rk: "ed.rk"; rl: "ed.rl"; rm: "ed.rm"; rn: "ed.rn"; ro: "ed.ro"; rp: "ed.rp"; rq: "ed.rq"; rr: "ed.rr"; rs: "ed.rs"; rt: "ed.rt"; ru: "ed.ru"; rv: "ed.rv"; rw: "ed.rw"; rx: "ed.rx"; ry: "ed.ry"; rz: "ed.rz"; sa: "ed.sa"; sb: "ed.sb"; sc: "ed.sc"; sd: "ed.sd"; se: "ed.se"; sf: "ed.sf"; sg: "ed.sg"; sh: "ed.sh"; si: "ed.si"; sj: "ed.sj"; sk: "ed.sk"; sl: "ed.sl"; sm: "ed.sm"; sn: "ed.sn"; so: "ed.so"; sp: "ed.sp"; sq: "ed.sq"; sr: "ed.sr"; ss: "ed.ss"; st: "ed.st"; su: "ed.su"; sv: "ed.sv"; sw: "ed.sw"; sx: "ed.sx"; sy: "ed.sy"; sz: "ed.sz"; ta: "ed.ta"; tb: "ed.tb"; tc: "ed.tc"; td: "ed.td"; te: "ed.te"; tf: "ed.tf"; tg: "ed.tg"; th: "ed.th"; ti: "ed.ti"; tj: "ed.tj"; tk: "ed.tk"; tl: "ed.tl"; tm: "ed.tm"; tn: "ed.tn"; to: "ed.to"; tp: "ed.tp"; tq: "ed.tq"; tr: "ed.tr"; ts: "ed.ts"; tt: "ed.tt"; tu: "ed.tu"; tv: "ed.tv"; tw: "ed.tw"; tx: "ed.tx"; ty: "ed.ty"; tz: "ed.tz"; ua: "ed.ua"; ub: "ed.ub"; uc: "ed.uc"; ud: "ed.ud"; ue: "ed.ue"; uf: "ed.uf"; ug: "ed.ug"; uh: "ed.uh"; ui: "ed.ui"; uj: "ed.uj"; uk: "ed.uk"; ul: "ed.ul"; um: "ed.um"; un: "ed.un"; uo: "ed.uo"; up: "ed.up"; uq: "ed.uq"; ur: "ed.ur"; us: "ed.us"; ut: "ed.ut"; uu: "ed.uu"; uv: "ed.uv"; uw: "ed.uw"; ux: "ed.ux"; uy: "ed.uy"; uz: "ed.uz"; va: "ed.va"; vb: "ed.vb"; vc: "ed.vc"; vd: "ed.vd"; ve: "ed.ve"; vf: "ed.vf"; vg: "ed.vg"; vh: "ed.vh"; vi: "ed.vi"; vj: "ed.vj"; vk: "ed.vk"; vl: "ed.vl"; vm: "ed.vm"; vn: "ed.vn"; vo: "ed.vo"; vp: "ed.vp"; vq: "ed.vq"; vr: "ed.vr"; vs: "ed.vs"; vt: "ed.vt"; vu: "ed.vu"; vv: "ed.vv"; vw: "ed.vw"; vx: "ed.vx"; vy: "ed.vy"; vz: "ed.vz"; wa: "ed.wa"; wb: "ed.wb"; wc: "ed.wc"; wd: "ed.wd"; we: "ed.we"; wf: "ed.wf"; wg: "ed.wg"; wh: "ed.wh"; wi: "ed.wi"; wj: "ed.wj"; wk: "ed.wk"; wl: "ed.wl"; wm: "ed.wm"; wn: "ed.wn"; wo: "ed.wo"; wp: "ed.wp"; wq: "ed.wq"; wr: "ed.wr"; ws: "ed.ws"; wt: "ed.wt"; wu: "ed.wu"; wv: "ed.wv"; ww: "ed.ww"; wx: "ed.wx"; wy: "ed.wy"; wz: "ed.wz"; xa: "ed.xa"; xb: "ed.xb"; xc: "ed.xc"; xd: "ed.xd"; xe: "ed.xe"; xf: "ed.xf"; xg: "ed.xg"; xh: "ed.xh"; xi: "ed.xi"; xj: "ed.xj"; xk: "ed.xk"; xl: "ed.xl"; xm: "ed.xm"; xn: "ed.xn"; xo: "ed.xo"; xp: "ed.xp"; xq: "ed.xq"; xr: "ed.xr"; xs: "ed.xs"; xt: "ed.xt"; xu: "ed.xu"; xv: "ed.xv"; xw: "ed.xw"; xx: "ed.xx"; xy: "ed.xy"; xz: "ed.xz"; ya: "ed.ya"; yb: "ed.yb"; yc: "ed.yc"; yd: "ed.yd"; ye: "ed.ye"; yf: "ed.yf"; yg: "ed.yg"; yh: "ed.yh"; yi: "ed.yi"; yj: "ed.yj"; yk: "ed.yk"; yl: "ed.yl"; ym: "ed.ym"; yn: "ed.yn"; yo: "ed.yo"; yp: "ed.yp"; yq: "ed.yq"; yr: "ed.yr"; ys: "ed.ys"; yt: "ed.yt"; yu: "ed.yu"; yv: "ed.yv"; yw: "ed.yw"; yx: "ed.yx"; yy: "ed.yy"; yz: "ed.yz"; za: "ed.za"; zb: "ed.zb"; zc: "ed.zc"; zd: "ed.zd"; ze: "ed.ze"; zf: "ed.zf"; zg: "ed.zg"; zh: "ed.zh"; zi: "ed.zi"; zj: "ed.zj"; zk: "ed.zk"; zl: "ed.zl"; zm: "ed.zm"; zn: "ed.zn"; zo: "ed.zo"; zp: "ed.zp"; zq: "ed.zq"; zr: "ed.zr"; zs: "ed.zs"; zt: "ed.zt"; zu: "ed.zu"; zv: "ed.zv"; zw: "ed.zw"; zx: "ed.zx"; zy: "ed.zy"; zz: "ed.zz"; }; ee: { aa: "ee.aa"; ab: "ee.ab"; ac: "ee.ac"; ad: "ee.ad"; ae: "ee.ae"; af: "ee.af"; ag: "ee.ag"; ah: "ee.ah"; ai: "ee.ai"; aj: "ee.aj"; ak: "ee.ak"; al: "ee.al"; am: "ee.am"; an: "ee.an"; ao: "ee.ao"; ap: "ee.ap"; aq: "ee.aq"; ar: "ee.ar"; as: "ee.as"; at: "ee.at"; au: "ee.au"; av: "ee.av"; aw: "ee.aw"; ax: "ee.ax"; ay: "ee.ay"; az: "ee.az"; ba: "ee.ba"; bb: "ee.bb"; bc: "ee.bc"; bd: "ee.bd"; be: "ee.be"; bf: "ee.bf"; bg: "ee.bg"; bh: "ee.bh"; bi: "ee.bi"; bj: "ee.bj"; bk: "ee.bk"; bl: "ee.bl"; bm: "ee.bm"; bn: "ee.bn"; bo: "ee.bo"; bp: "ee.bp"; bq: "ee.bq"; br: "ee.br"; bs: "ee.bs"; bt: "ee.bt"; bu: "ee.bu"; bv: "ee.bv"; bw: "ee.bw"; bx: "ee.bx"; by: "ee.by"; bz: "ee.bz"; ca: "ee.ca"; cb: "ee.cb"; cc: "ee.cc"; cd: "ee.cd"; ce: "ee.ce"; cf: "ee.cf"; cg: "ee.cg"; ch: "ee.ch"; ci: "ee.ci"; cj: "ee.cj"; ck: "ee.ck"; cl: "ee.cl"; cm: "ee.cm"; cn: "ee.cn"; co: "ee.co"; cp: "ee.cp"; cq: "ee.cq"; cr: "ee.cr"; cs: "ee.cs"; ct: "ee.ct"; cu: "ee.cu"; cv: "ee.cv"; cw: "ee.cw"; cx: "ee.cx"; cy: "ee.cy"; cz: "ee.cz"; da: "ee.da"; db: "ee.db"; dc: "ee.dc"; dd: "ee.dd"; de: "ee.de"; df: "ee.df"; dg: "ee.dg"; dh: "ee.dh"; di: "ee.di"; dj: "ee.dj"; dk: "ee.dk"; dl: "ee.dl"; dm: "ee.dm"; dn: "ee.dn"; do: "ee.do"; dp: "ee.dp"; dq: "ee.dq"; dr: "ee.dr"; ds: "ee.ds"; dt: "ee.dt"; du: "ee.du"; dv: "ee.dv"; dw: "ee.dw"; dx: "ee.dx"; dy: "ee.dy"; dz: "ee.dz"; ea: "ee.ea"; eb: "ee.eb"; ec: "ee.ec"; ed: "ee.ed"; ee: "ee.ee"; ef: "ee.ef"; eg: "ee.eg"; eh: "ee.eh"; ei: "ee.ei"; ej: "ee.ej"; ek: "ee.ek"; el: "ee.el"; em: "ee.em"; en: "ee.en"; eo: "ee.eo"; ep: "ee.ep"; eq: "ee.eq"; er: "ee.er"; es: "ee.es"; et: "ee.et"; eu: "ee.eu"; ev: "ee.ev"; ew: "ee.ew"; ex: "ee.ex"; ey: "ee.ey"; ez: "ee.ez"; fa: "ee.fa"; fb: "ee.fb"; fc: "ee.fc"; fd: "ee.fd"; fe: "ee.fe"; ff: "ee.ff"; fg: "ee.fg"; fh: "ee.fh"; fi: "ee.fi"; fj: "ee.fj"; fk: "ee.fk"; fl: "ee.fl"; fm: "ee.fm"; fn: "ee.fn"; fo: "ee.fo"; fp: "ee.fp"; fq: "ee.fq"; fr: "ee.fr"; fs: "ee.fs"; ft: "ee.ft"; fu: "ee.fu"; fv: "ee.fv"; fw: "ee.fw"; fx: "ee.fx"; fy: "ee.fy"; fz: "ee.fz"; ga: "ee.ga"; gb: "ee.gb"; gc: "ee.gc"; gd: "ee.gd"; ge: "ee.ge"; gf: "ee.gf"; gg: "ee.gg"; gh: "ee.gh"; gi: "ee.gi"; gj: "ee.gj"; gk: "ee.gk"; gl: "ee.gl"; gm: "ee.gm"; gn: "ee.gn"; go: "ee.go"; gp: "ee.gp"; gq: "ee.gq"; gr: "ee.gr"; gs: "ee.gs"; gt: "ee.gt"; gu: "ee.gu"; gv: "ee.gv"; gw: "ee.gw"; gx: "ee.gx"; gy: "ee.gy"; gz: "ee.gz"; ha: "ee.ha"; hb: "ee.hb"; hc: "ee.hc"; hd: "ee.hd"; he: "ee.he"; hf: "ee.hf"; hg: "ee.hg"; hh: "ee.hh"; hi: "ee.hi"; hj: "ee.hj"; hk: "ee.hk"; hl: "ee.hl"; hm: "ee.hm"; hn: "ee.hn"; ho: "ee.ho"; hp: "ee.hp"; hq: "ee.hq"; hr: "ee.hr"; hs: "ee.hs"; ht: "ee.ht"; hu: "ee.hu"; hv: "ee.hv"; hw: "ee.hw"; hx: "ee.hx"; hy: "ee.hy"; hz: "ee.hz"; ia: "ee.ia"; ib: "ee.ib"; ic: "ee.ic"; id: "ee.id"; ie: "ee.ie"; if: "ee.if"; ig: "ee.ig"; ih: "ee.ih"; ii: "ee.ii"; ij: "ee.ij"; ik: "ee.ik"; il: "ee.il"; im: "ee.im"; in: "ee.in"; io: "ee.io"; ip: "ee.ip"; iq: "ee.iq"; ir: "ee.ir"; is: "ee.is"; it: "ee.it"; iu: "ee.iu"; iv: "ee.iv"; iw: "ee.iw"; ix: "ee.ix"; iy: "ee.iy"; iz: "ee.iz"; ja: "ee.ja"; jb: "ee.jb"; jc: "ee.jc"; jd: "ee.jd"; je: "ee.je"; jf: "ee.jf"; jg: "ee.jg"; jh: "ee.jh"; ji: "ee.ji"; jj: "ee.jj"; jk: "ee.jk"; jl: "ee.jl"; jm: "ee.jm"; jn: "ee.jn"; jo: "ee.jo"; jp: "ee.jp"; jq: "ee.jq"; jr: "ee.jr"; js: "ee.js"; jt: "ee.jt"; ju: "ee.ju"; jv: "ee.jv"; jw: "ee.jw"; jx: "ee.jx"; jy: "ee.jy"; jz: "ee.jz"; ka: "ee.ka"; kb: "ee.kb"; kc: "ee.kc"; kd: "ee.kd"; ke: "ee.ke"; kf: "ee.kf"; kg: "ee.kg"; kh: "ee.kh"; ki: "ee.ki"; kj: "ee.kj"; kk: "ee.kk"; kl: "ee.kl"; km: "ee.km"; kn: "ee.kn"; ko: "ee.ko"; kp: "ee.kp"; kq: "ee.kq"; kr: "ee.kr"; ks: "ee.ks"; kt: "ee.kt"; ku: "ee.ku"; kv: "ee.kv"; kw: "ee.kw"; kx: "ee.kx"; ky: "ee.ky"; kz: "ee.kz"; la: "ee.la"; lb: "ee.lb"; lc: "ee.lc"; ld: "ee.ld"; le: "ee.le"; lf: "ee.lf"; lg: "ee.lg"; lh: "ee.lh"; li: "ee.li"; lj: "ee.lj"; lk: "ee.lk"; ll: "ee.ll"; lm: "ee.lm"; ln: "ee.ln"; lo: "ee.lo"; lp: "ee.lp"; lq: "ee.lq"; lr: "ee.lr"; ls: "ee.ls"; lt: "ee.lt"; lu: "ee.lu"; lv: "ee.lv"; lw: "ee.lw"; lx: "ee.lx"; ly: "ee.ly"; lz: "ee.lz"; ma: "ee.ma"; mb: "ee.mb"; mc: "ee.mc"; md: "ee.md"; me: "ee.me"; mf: "ee.mf"; mg: "ee.mg"; mh: "ee.mh"; mi: "ee.mi"; mj: "ee.mj"; mk: "ee.mk"; ml: "ee.ml"; mm: "ee.mm"; mn: "ee.mn"; mo: "ee.mo"; mp: "ee.mp"; mq: "ee.mq"; mr: "ee.mr"; ms: "ee.ms"; mt: "ee.mt"; mu: "ee.mu"; mv: "ee.mv"; mw: "ee.mw"; mx: "ee.mx"; my: "ee.my"; mz: "ee.mz"; na: "ee.na"; nb: "ee.nb"; nc: "ee.nc"; nd: "ee.nd"; ne: "ee.ne"; nf: "ee.nf"; ng: "ee.ng"; nh: "ee.nh"; ni: "ee.ni"; nj: "ee.nj"; nk: "ee.nk"; nl: "ee.nl"; nm: "ee.nm"; nn: "ee.nn"; no: "ee.no"; np: "ee.np"; nq: "ee.nq"; nr: "ee.nr"; ns: "ee.ns"; nt: "ee.nt"; nu: "ee.nu"; nv: "ee.nv"; nw: "ee.nw"; nx: "ee.nx"; ny: "ee.ny"; nz: "ee.nz"; oa: "ee.oa"; ob: "ee.ob"; oc: "ee.oc"; od: "ee.od"; oe: "ee.oe"; of: "ee.of"; og: "ee.og"; oh: "ee.oh"; oi: "ee.oi"; oj: "ee.oj"; ok: "ee.ok"; ol: "ee.ol"; om: "ee.om"; on: "ee.on"; oo: "ee.oo"; op: "ee.op"; oq: "ee.oq"; or: "ee.or"; os: "ee.os"; ot: "ee.ot"; ou: "ee.ou"; ov: "ee.ov"; ow: "ee.ow"; ox: "ee.ox"; oy: "ee.oy"; oz: "ee.oz"; pa: "ee.pa"; pb: "ee.pb"; pc: "ee.pc"; pd: "ee.pd"; pe: "ee.pe"; pf: "ee.pf"; pg: "ee.pg"; ph: "ee.ph"; pi: "ee.pi"; pj: "ee.pj"; pk: "ee.pk"; pl: "ee.pl"; pm: "ee.pm"; pn: "ee.pn"; po: "ee.po"; pp: "ee.pp"; pq: "ee.pq"; pr: "ee.pr"; ps: "ee.ps"; pt: "ee.pt"; pu: "ee.pu"; pv: "ee.pv"; pw: "ee.pw"; px: "ee.px"; py: "ee.py"; pz: "ee.pz"; qa: "ee.qa"; qb: "ee.qb"; qc: "ee.qc"; qd: "ee.qd"; qe: "ee.qe"; qf: "ee.qf"; qg: "ee.qg"; qh: "ee.qh"; qi: "ee.qi"; qj: "ee.qj"; qk: "ee.qk"; ql: "ee.ql"; qm: "ee.qm"; qn: "ee.qn"; qo: "ee.qo"; qp: "ee.qp"; qq: "ee.qq"; qr: "ee.qr"; qs: "ee.qs"; qt: "ee.qt"; qu: "ee.qu"; qv: "ee.qv"; qw: "ee.qw"; qx: "ee.qx"; qy: "ee.qy"; qz: "ee.qz"; ra: "ee.ra"; rb: "ee.rb"; rc: "ee.rc"; rd: "ee.rd"; re: "ee.re"; rf: "ee.rf"; rg: "ee.rg"; rh: "ee.rh"; ri: "ee.ri"; rj: "ee.rj"; rk: "ee.rk"; rl: "ee.rl"; rm: "ee.rm"; rn: "ee.rn"; ro: "ee.ro"; rp: "ee.rp"; rq: "ee.rq"; rr: "ee.rr"; rs: "ee.rs"; rt: "ee.rt"; ru: "ee.ru"; rv: "ee.rv"; rw: "ee.rw"; rx: "ee.rx"; ry: "ee.ry"; rz: "ee.rz"; sa: "ee.sa"; sb: "ee.sb"; sc: "ee.sc"; sd: "ee.sd"; se: "ee.se"; sf: "ee.sf"; sg: "ee.sg"; sh: "ee.sh"; si: "ee.si"; sj: "ee.sj"; sk: "ee.sk"; sl: "ee.sl"; sm: "ee.sm"; sn: "ee.sn"; so: "ee.so"; sp: "ee.sp"; sq: "ee.sq"; sr: "ee.sr"; ss: "ee.ss"; st: "ee.st"; su: "ee.su"; sv: "ee.sv"; sw: "ee.sw"; sx: "ee.sx"; sy: "ee.sy"; sz: "ee.sz"; ta: "ee.ta"; tb: "ee.tb"; tc: "ee.tc"; td: "ee.td"; te: "ee.te"; tf: "ee.tf"; tg: "ee.tg"; th: "ee.th"; ti: "ee.ti"; tj: "ee.tj"; tk: "ee.tk"; tl: "ee.tl"; tm: "ee.tm"; tn: "ee.tn"; to: "ee.to"; tp: "ee.tp"; tq: "ee.tq"; tr: "ee.tr"; ts: "ee.ts"; tt: "ee.tt"; tu: "ee.tu"; tv: "ee.tv"; tw: "ee.tw"; tx: "ee.tx"; ty: "ee.ty"; tz: "ee.tz"; ua: "ee.ua"; ub: "ee.ub"; uc: "ee.uc"; ud: "ee.ud"; ue: "ee.ue"; uf: "ee.uf"; ug: "ee.ug"; uh: "ee.uh"; ui: "ee.ui"; uj: "ee.uj"; uk: "ee.uk"; ul: "ee.ul"; um: "ee.um"; un: "ee.un"; uo: "ee.uo"; up: "ee.up"; uq: "ee.uq"; ur: "ee.ur"; us: "ee.us"; ut: "ee.ut"; uu: "ee.uu"; uv: "ee.uv"; uw: "ee.uw"; ux: "ee.ux"; uy: "ee.uy"; uz: "ee.uz"; va: "ee.va"; vb: "ee.vb"; vc: "ee.vc"; vd: "ee.vd"; ve: "ee.ve"; vf: "ee.vf"; vg: "ee.vg"; vh: "ee.vh"; vi: "ee.vi"; vj: "ee.vj"; vk: "ee.vk"; vl: "ee.vl"; vm: "ee.vm"; vn: "ee.vn"; vo: "ee.vo"; vp: "ee.vp"; vq: "ee.vq"; vr: "ee.vr"; vs: "ee.vs"; vt: "ee.vt"; vu: "ee.vu"; vv: "ee.vv"; vw: "ee.vw"; vx: "ee.vx"; vy: "ee.vy"; vz: "ee.vz"; wa: "ee.wa"; wb: "ee.wb"; wc: "ee.wc"; wd: "ee.wd"; we: "ee.we"; wf: "ee.wf"; wg: "ee.wg"; wh: "ee.wh"; wi: "ee.wi"; wj: "ee.wj"; wk: "ee.wk"; wl: "ee.wl"; wm: "ee.wm"; wn: "ee.wn"; wo: "ee.wo"; wp: "ee.wp"; wq: "ee.wq"; wr: "ee.wr"; ws: "ee.ws"; wt: "ee.wt"; wu: "ee.wu"; wv: "ee.wv"; ww: "ee.ww"; wx: "ee.wx"; wy: "ee.wy"; wz: "ee.wz"; xa: "ee.xa"; xb: "ee.xb"; xc: "ee.xc"; xd: "ee.xd"; xe: "ee.xe"; xf: "ee.xf"; xg: "ee.xg"; xh: "ee.xh"; xi: "ee.xi"; xj: "ee.xj"; xk: "ee.xk"; xl: "ee.xl"; xm: "ee.xm"; xn: "ee.xn"; xo: "ee.xo"; xp: "ee.xp"; xq: "ee.xq"; xr: "ee.xr"; xs: "ee.xs"; xt: "ee.xt"; xu: "ee.xu"; xv: "ee.xv"; xw: "ee.xw"; xx: "ee.xx"; xy: "ee.xy"; xz: "ee.xz"; ya: "ee.ya"; yb: "ee.yb"; yc: "ee.yc"; yd: "ee.yd"; ye: "ee.ye"; yf: "ee.yf"; yg: "ee.yg"; yh: "ee.yh"; yi: "ee.yi"; yj: "ee.yj"; yk: "ee.yk"; yl: "ee.yl"; ym: "ee.ym"; yn: "ee.yn"; yo: "ee.yo"; yp: "ee.yp"; yq: "ee.yq"; yr: "ee.yr"; ys: "ee.ys"; yt: "ee.yt"; yu: "ee.yu"; yv: "ee.yv"; yw: "ee.yw"; yx: "ee.yx"; yy: "ee.yy"; yz: "ee.yz"; za: "ee.za"; zb: "ee.zb"; zc: "ee.zc"; zd: "ee.zd"; ze: "ee.ze"; zf: "ee.zf"; zg: "ee.zg"; zh: "ee.zh"; zi: "ee.zi"; zj: "ee.zj"; zk: "ee.zk"; zl: "ee.zl"; zm: "ee.zm"; zn: "ee.zn"; zo: "ee.zo"; zp: "ee.zp"; zq: "ee.zq"; zr: "ee.zr"; zs: "ee.zs"; zt: "ee.zt"; zu: "ee.zu"; zv: "ee.zv"; zw: "ee.zw"; zx: "ee.zx"; zy: "ee.zy"; zz: "ee.zz"; }; ef: { aa: "ef.aa"; ab: "ef.ab"; ac: "ef.ac"; ad: "ef.ad"; ae: "ef.ae"; af: "ef.af"; ag: "ef.ag"; ah: "ef.ah"; ai: "ef.ai"; aj: "ef.aj"; ak: "ef.ak"; al: "ef.al"; am: "ef.am"; an: "ef.an"; ao: "ef.ao"; ap: "ef.ap"; aq: "ef.aq"; ar: "ef.ar"; as: "ef.as"; at: "ef.at"; au: "ef.au"; av: "ef.av"; aw: "ef.aw"; ax: "ef.ax"; ay: "ef.ay"; az: "ef.az"; ba: "ef.ba"; bb: "ef.bb"; bc: "ef.bc"; bd: "ef.bd"; be: "ef.be"; bf: "ef.bf"; bg: "ef.bg"; bh: "ef.bh"; bi: "ef.bi"; bj: "ef.bj"; bk: "ef.bk"; bl: "ef.bl"; bm: "ef.bm"; bn: "ef.bn"; bo: "ef.bo"; bp: "ef.bp"; bq: "ef.bq"; br: "ef.br"; bs: "ef.bs"; bt: "ef.bt"; bu: "ef.bu"; bv: "ef.bv"; bw: "ef.bw"; bx: "ef.bx"; by: "ef.by"; bz: "ef.bz"; ca: "ef.ca"; cb: "ef.cb"; cc: "ef.cc"; cd: "ef.cd"; ce: "ef.ce"; cf: "ef.cf"; cg: "ef.cg"; ch: "ef.ch"; ci: "ef.ci"; cj: "ef.cj"; ck: "ef.ck"; cl: "ef.cl"; cm: "ef.cm"; cn: "ef.cn"; co: "ef.co"; cp: "ef.cp"; cq: "ef.cq"; cr: "ef.cr"; cs: "ef.cs"; ct: "ef.ct"; cu: "ef.cu"; cv: "ef.cv"; cw: "ef.cw"; cx: "ef.cx"; cy: "ef.cy"; cz: "ef.cz"; da: "ef.da"; db: "ef.db"; dc: "ef.dc"; dd: "ef.dd"; de: "ef.de"; df: "ef.df"; dg: "ef.dg"; dh: "ef.dh"; di: "ef.di"; dj: "ef.dj"; dk: "ef.dk"; dl: "ef.dl"; dm: "ef.dm"; dn: "ef.dn"; do: "ef.do"; dp: "ef.dp"; dq: "ef.dq"; dr: "ef.dr"; ds: "ef.ds"; dt: "ef.dt"; du: "ef.du"; dv: "ef.dv"; dw: "ef.dw"; dx: "ef.dx"; dy: "ef.dy"; dz: "ef.dz"; ea: "ef.ea"; eb: "ef.eb"; ec: "ef.ec"; ed: "ef.ed"; ee: "ef.ee"; ef: "ef.ef"; eg: "ef.eg"; eh: "ef.eh"; ei: "ef.ei"; ej: "ef.ej"; ek: "ef.ek"; el: "ef.el"; em: "ef.em"; en: "ef.en"; eo: "ef.eo"; ep: "ef.ep"; eq: "ef.eq"; er: "ef.er"; es: "ef.es"; et: "ef.et"; eu: "ef.eu"; ev: "ef.ev"; ew: "ef.ew"; ex: "ef.ex"; ey: "ef.ey"; ez: "ef.ez"; fa: "ef.fa"; fb: "ef.fb"; fc: "ef.fc"; fd: "ef.fd"; fe: "ef.fe"; ff: "ef.ff"; fg: "ef.fg"; fh: "ef.fh"; fi: "ef.fi"; fj: "ef.fj"; fk: "ef.fk"; fl: "ef.fl"; fm: "ef.fm"; fn: "ef.fn"; fo: "ef.fo"; fp: "ef.fp"; fq: "ef.fq"; fr: "ef.fr"; fs: "ef.fs"; ft: "ef.ft"; fu: "ef.fu"; fv: "ef.fv"; fw: "ef.fw"; fx: "ef.fx"; fy: "ef.fy"; fz: "ef.fz"; ga: "ef.ga"; gb: "ef.gb"; gc: "ef.gc"; gd: "ef.gd"; ge: "ef.ge"; gf: "ef.gf"; gg: "ef.gg"; gh: "ef.gh"; gi: "ef.gi"; gj: "ef.gj"; gk: "ef.gk"; gl: "ef.gl"; gm: "ef.gm"; gn: "ef.gn"; go: "ef.go"; gp: "ef.gp"; gq: "ef.gq"; gr: "ef.gr"; gs: "ef.gs"; gt: "ef.gt"; gu: "ef.gu"; gv: "ef.gv"; gw: "ef.gw"; gx: "ef.gx"; gy: "ef.gy"; gz: "ef.gz"; ha: "ef.ha"; hb: "ef.hb"; hc: "ef.hc"; hd: "ef.hd"; he: "ef.he"; hf: "ef.hf"; hg: "ef.hg"; hh: "ef.hh"; hi: "ef.hi"; hj: "ef.hj"; hk: "ef.hk"; hl: "ef.hl"; hm: "ef.hm"; hn: "ef.hn"; ho: "ef.ho"; hp: "ef.hp"; hq: "ef.hq"; hr: "ef.hr"; hs: "ef.hs"; ht: "ef.ht"; hu: "ef.hu"; hv: "ef.hv"; hw: "ef.hw"; hx: "ef.hx"; hy: "ef.hy"; hz: "ef.hz"; ia: "ef.ia"; ib: "ef.ib"; ic: "ef.ic"; id: "ef.id"; ie: "ef.ie"; if: "ef.if"; ig: "ef.ig"; ih: "ef.ih"; ii: "ef.ii"; ij: "ef.ij"; ik: "ef.ik"; il: "ef.il"; im: "ef.im"; in: "ef.in"; io: "ef.io"; ip: "ef.ip"; iq: "ef.iq"; ir: "ef.ir"; is: "ef.is"; it: "ef.it"; iu: "ef.iu"; iv: "ef.iv"; iw: "ef.iw"; ix: "ef.ix"; iy: "ef.iy"; iz: "ef.iz"; ja: "ef.ja"; jb: "ef.jb"; jc: "ef.jc"; jd: "ef.jd"; je: "ef.je"; jf: "ef.jf"; jg: "ef.jg"; jh: "ef.jh"; ji: "ef.ji"; jj: "ef.jj"; jk: "ef.jk"; jl: "ef.jl"; jm: "ef.jm"; jn: "ef.jn"; jo: "ef.jo"; jp: "ef.jp"; jq: "ef.jq"; jr: "ef.jr"; js: "ef.js"; jt: "ef.jt"; ju: "ef.ju"; jv: "ef.jv"; jw: "ef.jw"; jx: "ef.jx"; jy: "ef.jy"; jz: "ef.jz"; ka: "ef.ka"; kb: "ef.kb"; kc: "ef.kc"; kd: "ef.kd"; ke: "ef.ke"; kf: "ef.kf"; kg: "ef.kg"; kh: "ef.kh"; ki: "ef.ki"; kj: "ef.kj"; kk: "ef.kk"; kl: "ef.kl"; km: "ef.km"; kn: "ef.kn"; ko: "ef.ko"; kp: "ef.kp"; kq: "ef.kq"; kr: "ef.kr"; ks: "ef.ks"; kt: "ef.kt"; ku: "ef.ku"; kv: "ef.kv"; kw: "ef.kw"; kx: "ef.kx"; ky: "ef.ky"; kz: "ef.kz"; la: "ef.la"; lb: "ef.lb"; lc: "ef.lc"; ld: "ef.ld"; le: "ef.le"; lf: "ef.lf"; lg: "ef.lg"; lh: "ef.lh"; li: "ef.li"; lj: "ef.lj"; lk: "ef.lk"; ll: "ef.ll"; lm: "ef.lm"; ln: "ef.ln"; lo: "ef.lo"; lp: "ef.lp"; lq: "ef.lq"; lr: "ef.lr"; ls: "ef.ls"; lt: "ef.lt"; lu: "ef.lu"; lv: "ef.lv"; lw: "ef.lw"; lx: "ef.lx"; ly: "ef.ly"; lz: "ef.lz"; ma: "ef.ma"; mb: "ef.mb"; mc: "ef.mc"; md: "ef.md"; me: "ef.me"; mf: "ef.mf"; mg: "ef.mg"; mh: "ef.mh"; mi: "ef.mi"; mj: "ef.mj"; mk: "ef.mk"; ml: "ef.ml"; mm: "ef.mm"; mn: "ef.mn"; mo: "ef.mo"; mp: "ef.mp"; mq: "ef.mq"; mr: "ef.mr"; ms: "ef.ms"; mt: "ef.mt"; mu: "ef.mu"; mv: "ef.mv"; mw: "ef.mw"; mx: "ef.mx"; my: "ef.my"; mz: "ef.mz"; na: "ef.na"; nb: "ef.nb"; nc: "ef.nc"; nd: "ef.nd"; ne: "ef.ne"; nf: "ef.nf"; ng: "ef.ng"; nh: "ef.nh"; ni: "ef.ni"; nj: "ef.nj"; nk: "ef.nk"; nl: "ef.nl"; nm: "ef.nm"; nn: "ef.nn"; no: "ef.no"; np: "ef.np"; nq: "ef.nq"; nr: "ef.nr"; ns: "ef.ns"; nt: "ef.nt"; nu: "ef.nu"; nv: "ef.nv"; nw: "ef.nw"; nx: "ef.nx"; ny: "ef.ny"; nz: "ef.nz"; oa: "ef.oa"; ob: "ef.ob"; oc: "ef.oc"; od: "ef.od"; oe: "ef.oe"; of: "ef.of"; og: "ef.og"; oh: "ef.oh"; oi: "ef.oi"; oj: "ef.oj"; ok: "ef.ok"; ol: "ef.ol"; om: "ef.om"; on: "ef.on"; oo: "ef.oo"; op: "ef.op"; oq: "ef.oq"; or: "ef.or"; os: "ef.os"; ot: "ef.ot"; ou: "ef.ou"; ov: "ef.ov"; ow: "ef.ow"; ox: "ef.ox"; oy: "ef.oy"; oz: "ef.oz"; pa: "ef.pa"; pb: "ef.pb"; pc: "ef.pc"; pd: "ef.pd"; pe: "ef.pe"; pf: "ef.pf"; pg: "ef.pg"; ph: "ef.ph"; pi: "ef.pi"; pj: "ef.pj"; pk: "ef.pk"; pl: "ef.pl"; pm: "ef.pm"; pn: "ef.pn"; po: "ef.po"; pp: "ef.pp"; pq: "ef.pq"; pr: "ef.pr"; ps: "ef.ps"; pt: "ef.pt"; pu: "ef.pu"; pv: "ef.pv"; pw: "ef.pw"; px: "ef.px"; py: "ef.py"; pz: "ef.pz"; qa: "ef.qa"; qb: "ef.qb"; qc: "ef.qc"; qd: "ef.qd"; qe: "ef.qe"; qf: "ef.qf"; qg: "ef.qg"; qh: "ef.qh"; qi: "ef.qi"; qj: "ef.qj"; qk: "ef.qk"; ql: "ef.ql"; qm: "ef.qm"; qn: "ef.qn"; qo: "ef.qo"; qp: "ef.qp"; qq: "ef.qq"; qr: "ef.qr"; qs: "ef.qs"; qt: "ef.qt"; qu: "ef.qu"; qv: "ef.qv"; qw: "ef.qw"; qx: "ef.qx"; qy: "ef.qy"; qz: "ef.qz"; ra: "ef.ra"; rb: "ef.rb"; rc: "ef.rc"; rd: "ef.rd"; re: "ef.re"; rf: "ef.rf"; rg: "ef.rg"; rh: "ef.rh"; ri: "ef.ri"; rj: "ef.rj"; rk: "ef.rk"; rl: "ef.rl"; rm: "ef.rm"; rn: "ef.rn"; ro: "ef.ro"; rp: "ef.rp"; rq: "ef.rq"; rr: "ef.rr"; rs: "ef.rs"; rt: "ef.rt"; ru: "ef.ru"; rv: "ef.rv"; rw: "ef.rw"; rx: "ef.rx"; ry: "ef.ry"; rz: "ef.rz"; sa: "ef.sa"; sb: "ef.sb"; sc: "ef.sc"; sd: "ef.sd"; se: "ef.se"; sf: "ef.sf"; sg: "ef.sg"; sh: "ef.sh"; si: "ef.si"; sj: "ef.sj"; sk: "ef.sk"; sl: "ef.sl"; sm: "ef.sm"; sn: "ef.sn"; so: "ef.so"; sp: "ef.sp"; sq: "ef.sq"; sr: "ef.sr"; ss: "ef.ss"; st: "ef.st"; su: "ef.su"; sv: "ef.sv"; sw: "ef.sw"; sx: "ef.sx"; sy: "ef.sy"; sz: "ef.sz"; ta: "ef.ta"; tb: "ef.tb"; tc: "ef.tc"; td: "ef.td"; te: "ef.te"; tf: "ef.tf"; tg: "ef.tg"; th: "ef.th"; ti: "ef.ti"; tj: "ef.tj"; tk: "ef.tk"; tl: "ef.tl"; tm: "ef.tm"; tn: "ef.tn"; to: "ef.to"; tp: "ef.tp"; tq: "ef.tq"; tr: "ef.tr"; ts: "ef.ts"; tt: "ef.tt"; tu: "ef.tu"; tv: "ef.tv"; tw: "ef.tw"; tx: "ef.tx"; ty: "ef.ty"; tz: "ef.tz"; ua: "ef.ua"; ub: "ef.ub"; uc: "ef.uc"; ud: "ef.ud"; ue: "ef.ue"; uf: "ef.uf"; ug: "ef.ug"; uh: "ef.uh"; ui: "ef.ui"; uj: "ef.uj"; uk: "ef.uk"; ul: "ef.ul"; um: "ef.um"; un: "ef.un"; uo: "ef.uo"; up: "ef.up"; uq: "ef.uq"; ur: "ef.ur"; us: "ef.us"; ut: "ef.ut"; uu: "ef.uu"; uv: "ef.uv"; uw: "ef.uw"; ux: "ef.ux"; uy: "ef.uy"; uz: "ef.uz"; va: "ef.va"; vb: "ef.vb"; vc: "ef.vc"; vd: "ef.vd"; ve: "ef.ve"; vf: "ef.vf"; vg: "ef.vg"; vh: "ef.vh"; vi: "ef.vi"; vj: "ef.vj"; vk: "ef.vk"; vl: "ef.vl"; vm: "ef.vm"; vn: "ef.vn"; vo: "ef.vo"; vp: "ef.vp"; vq: "ef.vq"; vr: "ef.vr"; vs: "ef.vs"; vt: "ef.vt"; vu: "ef.vu"; vv: "ef.vv"; vw: "ef.vw"; vx: "ef.vx"; vy: "ef.vy"; vz: "ef.vz"; wa: "ef.wa"; wb: "ef.wb"; wc: "ef.wc"; wd: "ef.wd"; we: "ef.we"; wf: "ef.wf"; wg: "ef.wg"; wh: "ef.wh"; wi: "ef.wi"; wj: "ef.wj"; wk: "ef.wk"; wl: "ef.wl"; wm: "ef.wm"; wn: "ef.wn"; wo: "ef.wo"; wp: "ef.wp"; wq: "ef.wq"; wr: "ef.wr"; ws: "ef.ws"; wt: "ef.wt"; wu: "ef.wu"; wv: "ef.wv"; ww: "ef.ww"; wx: "ef.wx"; wy: "ef.wy"; wz: "ef.wz"; xa: "ef.xa"; xb: "ef.xb"; xc: "ef.xc"; xd: "ef.xd"; xe: "ef.xe"; xf: "ef.xf"; xg: "ef.xg"; xh: "ef.xh"; xi: "ef.xi"; xj: "ef.xj"; xk: "ef.xk"; xl: "ef.xl"; xm: "ef.xm"; xn: "ef.xn"; xo: "ef.xo"; xp: "ef.xp"; xq: "ef.xq"; xr: "ef.xr"; xs: "ef.xs"; xt: "ef.xt"; xu: "ef.xu"; xv: "ef.xv"; xw: "ef.xw"; xx: "ef.xx"; xy: "ef.xy"; xz: "ef.xz"; ya: "ef.ya"; yb: "ef.yb"; yc: "ef.yc"; yd: "ef.yd"; ye: "ef.ye"; yf: "ef.yf"; yg: "ef.yg"; yh: "ef.yh"; yi: "ef.yi"; yj: "ef.yj"; yk: "ef.yk"; yl: "ef.yl"; ym: "ef.ym"; yn: "ef.yn"; yo: "ef.yo"; yp: "ef.yp"; yq: "ef.yq"; yr: "ef.yr"; ys: "ef.ys"; yt: "ef.yt"; yu: "ef.yu"; yv: "ef.yv"; yw: "ef.yw"; yx: "ef.yx"; yy: "ef.yy"; yz: "ef.yz"; za: "ef.za"; zb: "ef.zb"; zc: "ef.zc"; zd: "ef.zd"; ze: "ef.ze"; zf: "ef.zf"; zg: "ef.zg"; zh: "ef.zh"; zi: "ef.zi"; zj: "ef.zj"; zk: "ef.zk"; zl: "ef.zl"; zm: "ef.zm"; zn: "ef.zn"; zo: "ef.zo"; zp: "ef.zp"; zq: "ef.zq"; zr: "ef.zr"; zs: "ef.zs"; zt: "ef.zt"; zu: "ef.zu"; zv: "ef.zv"; zw: "ef.zw"; zx: "ef.zx"; zy: "ef.zy"; zz: "ef.zz"; }; eg: { aa: "eg.aa"; ab: "eg.ab"; ac: "eg.ac"; ad: "eg.ad"; ae: "eg.ae"; af: "eg.af"; ag: "eg.ag"; ah: "eg.ah"; ai: "eg.ai"; aj: "eg.aj"; ak: "eg.ak"; al: "eg.al"; am: "eg.am"; an: "eg.an"; ao: "eg.ao"; ap: "eg.ap"; aq: "eg.aq"; ar: "eg.ar"; as: "eg.as"; at: "eg.at"; au: "eg.au"; av: "eg.av"; aw: "eg.aw"; ax: "eg.ax"; ay: "eg.ay"; az: "eg.az"; ba: "eg.ba"; bb: "eg.bb"; bc: "eg.bc"; bd: "eg.bd"; be: "eg.be"; bf: "eg.bf"; bg: "eg.bg"; bh: "eg.bh"; bi: "eg.bi"; bj: "eg.bj"; bk: "eg.bk"; bl: "eg.bl"; bm: "eg.bm"; bn: "eg.bn"; bo: "eg.bo"; bp: "eg.bp"; bq: "eg.bq"; br: "eg.br"; bs: "eg.bs"; bt: "eg.bt"; bu: "eg.bu"; bv: "eg.bv"; bw: "eg.bw"; bx: "eg.bx"; by: "eg.by"; bz: "eg.bz"; ca: "eg.ca"; cb: "eg.cb"; cc: "eg.cc"; cd: "eg.cd"; ce: "eg.ce"; cf: "eg.cf"; cg: "eg.cg"; ch: "eg.ch"; ci: "eg.ci"; cj: "eg.cj"; ck: "eg.ck"; cl: "eg.cl"; cm: "eg.cm"; cn: "eg.cn"; co: "eg.co"; cp: "eg.cp"; cq: "eg.cq"; cr: "eg.cr"; cs: "eg.cs"; ct: "eg.ct"; cu: "eg.cu"; cv: "eg.cv"; cw: "eg.cw"; cx: "eg.cx"; cy: "eg.cy"; cz: "eg.cz"; da: "eg.da"; db: "eg.db"; dc: "eg.dc"; dd: "eg.dd"; de: "eg.de"; df: "eg.df"; dg: "eg.dg"; dh: "eg.dh"; di: "eg.di"; dj: "eg.dj"; dk: "eg.dk"; dl: "eg.dl"; dm: "eg.dm"; dn: "eg.dn"; do: "eg.do"; dp: "eg.dp"; dq: "eg.dq"; dr: "eg.dr"; ds: "eg.ds"; dt: "eg.dt"; du: "eg.du"; dv: "eg.dv"; dw: "eg.dw"; dx: "eg.dx"; dy: "eg.dy"; dz: "eg.dz"; ea: "eg.ea"; eb: "eg.eb"; ec: "eg.ec"; ed: "eg.ed"; ee: "eg.ee"; ef: "eg.ef"; eg: "eg.eg"; eh: "eg.eh"; ei: "eg.ei"; ej: "eg.ej"; ek: "eg.ek"; el: "eg.el"; em: "eg.em"; en: "eg.en"; eo: "eg.eo"; ep: "eg.ep"; eq: "eg.eq"; er: "eg.er"; es: "eg.es"; et: "eg.et"; eu: "eg.eu"; ev: "eg.ev"; ew: "eg.ew"; ex: "eg.ex"; ey: "eg.ey"; ez: "eg.ez"; fa: "eg.fa"; fb: "eg.fb"; fc: "eg.fc"; fd: "eg.fd"; fe: "eg.fe"; ff: "eg.ff"; fg: "eg.fg"; fh: "eg.fh"; fi: "eg.fi"; fj: "eg.fj"; fk: "eg.fk"; fl: "eg.fl"; fm: "eg.fm"; fn: "eg.fn"; fo: "eg.fo"; fp: "eg.fp"; fq: "eg.fq"; fr: "eg.fr"; fs: "eg.fs"; ft: "eg.ft"; fu: "eg.fu"; fv: "eg.fv"; fw: "eg.fw"; fx: "eg.fx"; fy: "eg.fy"; fz: "eg.fz"; ga: "eg.ga"; gb: "eg.gb"; gc: "eg.gc"; gd: "eg.gd"; ge: "eg.ge"; gf: "eg.gf"; gg: "eg.gg"; gh: "eg.gh"; gi: "eg.gi"; gj: "eg.gj"; gk: "eg.gk"; gl: "eg.gl"; gm: "eg.gm"; gn: "eg.gn"; go: "eg.go"; gp: "eg.gp"; gq: "eg.gq"; gr: "eg.gr"; gs: "eg.gs"; gt: "eg.gt"; gu: "eg.gu"; gv: "eg.gv"; gw: "eg.gw"; gx: "eg.gx"; gy: "eg.gy"; gz: "eg.gz"; ha: "eg.ha"; hb: "eg.hb"; hc: "eg.hc"; hd: "eg.hd"; he: "eg.he"; hf: "eg.hf"; hg: "eg.hg"; hh: "eg.hh"; hi: "eg.hi"; hj: "eg.hj"; hk: "eg.hk"; hl: "eg.hl"; hm: "eg.hm"; hn: "eg.hn"; ho: "eg.ho"; hp: "eg.hp"; hq: "eg.hq"; hr: "eg.hr"; hs: "eg.hs"; ht: "eg.ht"; hu: "eg.hu"; hv: "eg.hv"; hw: "eg.hw"; hx: "eg.hx"; hy: "eg.hy"; hz: "eg.hz"; ia: "eg.ia"; ib: "eg.ib"; ic: "eg.ic"; id: "eg.id"; ie: "eg.ie"; if: "eg.if"; ig: "eg.ig"; ih: "eg.ih"; ii: "eg.ii"; ij: "eg.ij"; ik: "eg.ik"; il: "eg.il"; im: "eg.im"; in: "eg.in"; io: "eg.io"; ip: "eg.ip"; iq: "eg.iq"; ir: "eg.ir"; is: "eg.is"; it: "eg.it"; iu: "eg.iu"; iv: "eg.iv"; iw: "eg.iw"; ix: "eg.ix"; iy: "eg.iy"; iz: "eg.iz"; ja: "eg.ja"; jb: "eg.jb"; jc: "eg.jc"; jd: "eg.jd"; je: "eg.je"; jf: "eg.jf"; jg: "eg.jg"; jh: "eg.jh"; ji: "eg.ji"; jj: "eg.jj"; jk: "eg.jk"; jl: "eg.jl"; jm: "eg.jm"; jn: "eg.jn"; jo: "eg.jo"; jp: "eg.jp"; jq: "eg.jq"; jr: "eg.jr"; js: "eg.js"; jt: "eg.jt"; ju: "eg.ju"; jv: "eg.jv"; jw: "eg.jw"; jx: "eg.jx"; jy: "eg.jy"; jz: "eg.jz"; ka: "eg.ka"; kb: "eg.kb"; kc: "eg.kc"; kd: "eg.kd"; ke: "eg.ke"; kf: "eg.kf"; kg: "eg.kg"; kh: "eg.kh"; ki: "eg.ki"; kj: "eg.kj"; kk: "eg.kk"; kl: "eg.kl"; km: "eg.km"; kn: "eg.kn"; ko: "eg.ko"; kp: "eg.kp"; kq: "eg.kq"; kr: "eg.kr"; ks: "eg.ks"; kt: "eg.kt"; ku: "eg.ku"; kv: "eg.kv"; kw: "eg.kw"; kx: "eg.kx"; ky: "eg.ky"; kz: "eg.kz"; la: "eg.la"; lb: "eg.lb"; lc: "eg.lc"; ld: "eg.ld"; le: "eg.le"; lf: "eg.lf"; lg: "eg.lg"; lh: "eg.lh"; li: "eg.li"; lj: "eg.lj"; lk: "eg.lk"; ll: "eg.ll"; lm: "eg.lm"; ln: "eg.ln"; lo: "eg.lo"; lp: "eg.lp"; lq: "eg.lq"; lr: "eg.lr"; ls: "eg.ls"; lt: "eg.lt"; lu: "eg.lu"; lv: "eg.lv"; lw: "eg.lw"; lx: "eg.lx"; ly: "eg.ly"; lz: "eg.lz"; ma: "eg.ma"; mb: "eg.mb"; mc: "eg.mc"; md: "eg.md"; me: "eg.me"; mf: "eg.mf"; mg: "eg.mg"; mh: "eg.mh"; mi: "eg.mi"; mj: "eg.mj"; mk: "eg.mk"; ml: "eg.ml"; mm: "eg.mm"; mn: "eg.mn"; mo: "eg.mo"; mp: "eg.mp"; mq: "eg.mq"; mr: "eg.mr"; ms: "eg.ms"; mt: "eg.mt"; mu: "eg.mu"; mv: "eg.mv"; mw: "eg.mw"; mx: "eg.mx"; my: "eg.my"; mz: "eg.mz"; na: "eg.na"; nb: "eg.nb"; nc: "eg.nc"; nd: "eg.nd"; ne: "eg.ne"; nf: "eg.nf"; ng: "eg.ng"; nh: "eg.nh"; ni: "eg.ni"; nj: "eg.nj"; nk: "eg.nk"; nl: "eg.nl"; nm: "eg.nm"; nn: "eg.nn"; no: "eg.no"; np: "eg.np"; nq: "eg.nq"; nr: "eg.nr"; ns: "eg.ns"; nt: "eg.nt"; nu: "eg.nu"; nv: "eg.nv"; nw: "eg.nw"; nx: "eg.nx"; ny: "eg.ny"; nz: "eg.nz"; oa: "eg.oa"; ob: "eg.ob"; oc: "eg.oc"; od: "eg.od"; oe: "eg.oe"; of: "eg.of"; og: "eg.og"; oh: "eg.oh"; oi: "eg.oi"; oj: "eg.oj"; ok: "eg.ok"; ol: "eg.ol"; om: "eg.om"; on: "eg.on"; oo: "eg.oo"; op: "eg.op"; oq: "eg.oq"; or: "eg.or"; os: "eg.os"; ot: "eg.ot"; ou: "eg.ou"; ov: "eg.ov"; ow: "eg.ow"; ox: "eg.ox"; oy: "eg.oy"; oz: "eg.oz"; pa: "eg.pa"; pb: "eg.pb"; pc: "eg.pc"; pd: "eg.pd"; pe: "eg.pe"; pf: "eg.pf"; pg: "eg.pg"; ph: "eg.ph"; pi: "eg.pi"; pj: "eg.pj"; pk: "eg.pk"; pl: "eg.pl"; pm: "eg.pm"; pn: "eg.pn"; po: "eg.po"; pp: "eg.pp"; pq: "eg.pq"; pr: "eg.pr"; ps: "eg.ps"; pt: "eg.pt"; pu: "eg.pu"; pv: "eg.pv"; pw: "eg.pw"; px: "eg.px"; py: "eg.py"; pz: "eg.pz"; qa: "eg.qa"; qb: "eg.qb"; qc: "eg.qc"; qd: "eg.qd"; qe: "eg.qe"; qf: "eg.qf"; qg: "eg.qg"; qh: "eg.qh"; qi: "eg.qi"; qj: "eg.qj"; qk: "eg.qk"; ql: "eg.ql"; qm: "eg.qm"; qn: "eg.qn"; qo: "eg.qo"; qp: "eg.qp"; qq: "eg.qq"; qr: "eg.qr"; qs: "eg.qs"; qt: "eg.qt"; qu: "eg.qu"; qv: "eg.qv"; qw: "eg.qw"; qx: "eg.qx"; qy: "eg.qy"; qz: "eg.qz"; ra: "eg.ra"; rb: "eg.rb"; rc: "eg.rc"; rd: "eg.rd"; re: "eg.re"; rf: "eg.rf"; rg: "eg.rg"; rh: "eg.rh"; ri: "eg.ri"; rj: "eg.rj"; rk: "eg.rk"; rl: "eg.rl"; rm: "eg.rm"; rn: "eg.rn"; ro: "eg.ro"; rp: "eg.rp"; rq: "eg.rq"; rr: "eg.rr"; rs: "eg.rs"; rt: "eg.rt"; ru: "eg.ru"; rv: "eg.rv"; rw: "eg.rw"; rx: "eg.rx"; ry: "eg.ry"; rz: "eg.rz"; sa: "eg.sa"; sb: "eg.sb"; sc: "eg.sc"; sd: "eg.sd"; se: "eg.se"; sf: "eg.sf"; sg: "eg.sg"; sh: "eg.sh"; si: "eg.si"; sj: "eg.sj"; sk: "eg.sk"; sl: "eg.sl"; sm: "eg.sm"; sn: "eg.sn"; so: "eg.so"; sp: "eg.sp"; sq: "eg.sq"; sr: "eg.sr"; ss: "eg.ss"; st: "eg.st"; su: "eg.su"; sv: "eg.sv"; sw: "eg.sw"; sx: "eg.sx"; sy: "eg.sy"; sz: "eg.sz"; ta: "eg.ta"; tb: "eg.tb"; tc: "eg.tc"; td: "eg.td"; te: "eg.te"; tf: "eg.tf"; tg: "eg.tg"; th: "eg.th"; ti: "eg.ti"; tj: "eg.tj"; tk: "eg.tk"; tl: "eg.tl"; tm: "eg.tm"; tn: "eg.tn"; to: "eg.to"; tp: "eg.tp"; tq: "eg.tq"; tr: "eg.tr"; ts: "eg.ts"; tt: "eg.tt"; tu: "eg.tu"; tv: "eg.tv"; tw: "eg.tw"; tx: "eg.tx"; ty: "eg.ty"; tz: "eg.tz"; ua: "eg.ua"; ub: "eg.ub"; uc: "eg.uc"; ud: "eg.ud"; ue: "eg.ue"; uf: "eg.uf"; ug: "eg.ug"; uh: "eg.uh"; ui: "eg.ui"; uj: "eg.uj"; uk: "eg.uk"; ul: "eg.ul"; um: "eg.um"; un: "eg.un"; uo: "eg.uo"; up: "eg.up"; uq: "eg.uq"; ur: "eg.ur"; us: "eg.us"; ut: "eg.ut"; uu: "eg.uu"; uv: "eg.uv"; uw: "eg.uw"; ux: "eg.ux"; uy: "eg.uy"; uz: "eg.uz"; va: "eg.va"; vb: "eg.vb"; vc: "eg.vc"; vd: "eg.vd"; ve: "eg.ve"; vf: "eg.vf"; vg: "eg.vg"; vh: "eg.vh"; vi: "eg.vi"; vj: "eg.vj"; vk: "eg.vk"; vl: "eg.vl"; vm: "eg.vm"; vn: "eg.vn"; vo: "eg.vo"; vp: "eg.vp"; vq: "eg.vq"; vr: "eg.vr"; vs: "eg.vs"; vt: "eg.vt"; vu: "eg.vu"; vv: "eg.vv"; vw: "eg.vw"; vx: "eg.vx"; vy: "eg.vy"; vz: "eg.vz"; wa: "eg.wa"; wb: "eg.wb"; wc: "eg.wc"; wd: "eg.wd"; we: "eg.we"; wf: "eg.wf"; wg: "eg.wg"; wh: "eg.wh"; wi: "eg.wi"; wj: "eg.wj"; wk: "eg.wk"; wl: "eg.wl"; wm: "eg.wm"; wn: "eg.wn"; wo: "eg.wo"; wp: "eg.wp"; wq: "eg.wq"; wr: "eg.wr"; ws: "eg.ws"; wt: "eg.wt"; wu: "eg.wu"; wv: "eg.wv"; ww: "eg.ww"; wx: "eg.wx"; wy: "eg.wy"; wz: "eg.wz"; xa: "eg.xa"; xb: "eg.xb"; xc: "eg.xc"; xd: "eg.xd"; xe: "eg.xe"; xf: "eg.xf"; xg: "eg.xg"; xh: "eg.xh"; xi: "eg.xi"; xj: "eg.xj"; xk: "eg.xk"; xl: "eg.xl"; xm: "eg.xm"; xn: "eg.xn"; xo: "eg.xo"; xp: "eg.xp"; xq: "eg.xq"; xr: "eg.xr"; xs: "eg.xs"; xt: "eg.xt"; xu: "eg.xu"; xv: "eg.xv"; xw: "eg.xw"; xx: "eg.xx"; xy: "eg.xy"; xz: "eg.xz"; ya: "eg.ya"; yb: "eg.yb"; yc: "eg.yc"; yd: "eg.yd"; ye: "eg.ye"; yf: "eg.yf"; yg: "eg.yg"; yh: "eg.yh"; yi: "eg.yi"; yj: "eg.yj"; yk: "eg.yk"; yl: "eg.yl"; ym: "eg.ym"; yn: "eg.yn"; yo: "eg.yo"; yp: "eg.yp"; yq: "eg.yq"; yr: "eg.yr"; ys: "eg.ys"; yt: "eg.yt"; yu: "eg.yu"; yv: "eg.yv"; yw: "eg.yw"; yx: "eg.yx"; yy: "eg.yy"; yz: "eg.yz"; za: "eg.za"; zb: "eg.zb"; zc: "eg.zc"; zd: "eg.zd"; ze: "eg.ze"; zf: "eg.zf"; zg: "eg.zg"; zh: "eg.zh"; zi: "eg.zi"; zj: "eg.zj"; zk: "eg.zk"; zl: "eg.zl"; zm: "eg.zm"; zn: "eg.zn"; zo: "eg.zo"; zp: "eg.zp"; zq: "eg.zq"; zr: "eg.zr"; zs: "eg.zs"; zt: "eg.zt"; zu: "eg.zu"; zv: "eg.zv"; zw: "eg.zw"; zx: "eg.zx"; zy: "eg.zy"; zz: "eg.zz"; }; eh: { aa: "eh.aa"; ab: "eh.ab"; ac: "eh.ac"; ad: "eh.ad"; ae: "eh.ae"; af: "eh.af"; ag: "eh.ag"; ah: "eh.ah"; ai: "eh.ai"; aj: "eh.aj"; ak: "eh.ak"; al: "eh.al"; am: "eh.am"; an: "eh.an"; ao: "eh.ao"; ap: "eh.ap"; aq: "eh.aq"; ar: "eh.ar"; as: "eh.as"; at: "eh.at"; au: "eh.au"; av: "eh.av"; aw: "eh.aw"; ax: "eh.ax"; ay: "eh.ay"; az: "eh.az"; ba: "eh.ba"; bb: "eh.bb"; bc: "eh.bc"; bd: "eh.bd"; be: "eh.be"; bf: "eh.bf"; bg: "eh.bg"; bh: "eh.bh"; bi: "eh.bi"; bj: "eh.bj"; bk: "eh.bk"; bl: "eh.bl"; bm: "eh.bm"; bn: "eh.bn"; bo: "eh.bo"; bp: "eh.bp"; bq: "eh.bq"; br: "eh.br"; bs: "eh.bs"; bt: "eh.bt"; bu: "eh.bu"; bv: "eh.bv"; bw: "eh.bw"; bx: "eh.bx"; by: "eh.by"; bz: "eh.bz"; ca: "eh.ca"; cb: "eh.cb"; cc: "eh.cc"; cd: "eh.cd"; ce: "eh.ce"; cf: "eh.cf"; cg: "eh.cg"; ch: "eh.ch"; ci: "eh.ci"; cj: "eh.cj"; ck: "eh.ck"; cl: "eh.cl"; cm: "eh.cm"; cn: "eh.cn"; co: "eh.co"; cp: "eh.cp"; cq: "eh.cq"; cr: "eh.cr"; cs: "eh.cs"; ct: "eh.ct"; cu: "eh.cu"; cv: "eh.cv"; cw: "eh.cw"; cx: "eh.cx"; cy: "eh.cy"; cz: "eh.cz"; da: "eh.da"; db: "eh.db"; dc: "eh.dc"; dd: "eh.dd"; de: "eh.de"; df: "eh.df"; dg: "eh.dg"; dh: "eh.dh"; di: "eh.di"; dj: "eh.dj"; dk: "eh.dk"; dl: "eh.dl"; dm: "eh.dm"; dn: "eh.dn"; do: "eh.do"; dp: "eh.dp"; dq: "eh.dq"; dr: "eh.dr"; ds: "eh.ds"; dt: "eh.dt"; du: "eh.du"; dv: "eh.dv"; dw: "eh.dw"; dx: "eh.dx"; dy: "eh.dy"; dz: "eh.dz"; ea: "eh.ea"; eb: "eh.eb"; ec: "eh.ec"; ed: "eh.ed"; ee: "eh.ee"; ef: "eh.ef"; eg: "eh.eg"; eh: "eh.eh"; ei: "eh.ei"; ej: "eh.ej"; ek: "eh.ek"; el: "eh.el"; em: "eh.em"; en: "eh.en"; eo: "eh.eo"; ep: "eh.ep"; eq: "eh.eq"; er: "eh.er"; es: "eh.es"; et: "eh.et"; eu: "eh.eu"; ev: "eh.ev"; ew: "eh.ew"; ex: "eh.ex"; ey: "eh.ey"; ez: "eh.ez"; fa: "eh.fa"; fb: "eh.fb"; fc: "eh.fc"; fd: "eh.fd"; fe: "eh.fe"; ff: "eh.ff"; fg: "eh.fg"; fh: "eh.fh"; fi: "eh.fi"; fj: "eh.fj"; fk: "eh.fk"; fl: "eh.fl"; fm: "eh.fm"; fn: "eh.fn"; fo: "eh.fo"; fp: "eh.fp"; fq: "eh.fq"; fr: "eh.fr"; fs: "eh.fs"; ft: "eh.ft"; fu: "eh.fu"; fv: "eh.fv"; fw: "eh.fw"; fx: "eh.fx"; fy: "eh.fy"; fz: "eh.fz"; ga: "eh.ga"; gb: "eh.gb"; gc: "eh.gc"; gd: "eh.gd"; ge: "eh.ge"; gf: "eh.gf"; gg: "eh.gg"; gh: "eh.gh"; gi: "eh.gi"; gj: "eh.gj"; gk: "eh.gk"; gl: "eh.gl"; gm: "eh.gm"; gn: "eh.gn"; go: "eh.go"; gp: "eh.gp"; gq: "eh.gq"; gr: "eh.gr"; gs: "eh.gs"; gt: "eh.gt"; gu: "eh.gu"; gv: "eh.gv"; gw: "eh.gw"; gx: "eh.gx"; gy: "eh.gy"; gz: "eh.gz"; ha: "eh.ha"; hb: "eh.hb"; hc: "eh.hc"; hd: "eh.hd"; he: "eh.he"; hf: "eh.hf"; hg: "eh.hg"; hh: "eh.hh"; hi: "eh.hi"; hj: "eh.hj"; hk: "eh.hk"; hl: "eh.hl"; hm: "eh.hm"; hn: "eh.hn"; ho: "eh.ho"; hp: "eh.hp"; hq: "eh.hq"; hr: "eh.hr"; hs: "eh.hs"; ht: "eh.ht"; hu: "eh.hu"; hv: "eh.hv"; hw: "eh.hw"; hx: "eh.hx"; hy: "eh.hy"; hz: "eh.hz"; ia: "eh.ia"; ib: "eh.ib"; ic: "eh.ic"; id: "eh.id"; ie: "eh.ie"; if: "eh.if"; ig: "eh.ig"; ih: "eh.ih"; ii: "eh.ii"; ij: "eh.ij"; ik: "eh.ik"; il: "eh.il"; im: "eh.im"; in: "eh.in"; io: "eh.io"; ip: "eh.ip"; iq: "eh.iq"; ir: "eh.ir"; is: "eh.is"; it: "eh.it"; iu: "eh.iu"; iv: "eh.iv"; iw: "eh.iw"; ix: "eh.ix"; iy: "eh.iy"; iz: "eh.iz"; ja: "eh.ja"; jb: "eh.jb"; jc: "eh.jc"; jd: "eh.jd"; je: "eh.je"; jf: "eh.jf"; jg: "eh.jg"; jh: "eh.jh"; ji: "eh.ji"; jj: "eh.jj"; jk: "eh.jk"; jl: "eh.jl"; jm: "eh.jm"; jn: "eh.jn"; jo: "eh.jo"; jp: "eh.jp"; jq: "eh.jq"; jr: "eh.jr"; js: "eh.js"; jt: "eh.jt"; ju: "eh.ju"; jv: "eh.jv"; jw: "eh.jw"; jx: "eh.jx"; jy: "eh.jy"; jz: "eh.jz"; ka: "eh.ka"; kb: "eh.kb"; kc: "eh.kc"; kd: "eh.kd"; ke: "eh.ke"; kf: "eh.kf"; kg: "eh.kg"; kh: "eh.kh"; ki: "eh.ki"; kj: "eh.kj"; kk: "eh.kk"; kl: "eh.kl"; km: "eh.km"; kn: "eh.kn"; ko: "eh.ko"; kp: "eh.kp"; kq: "eh.kq"; kr: "eh.kr"; ks: "eh.ks"; kt: "eh.kt"; ku: "eh.ku"; kv: "eh.kv"; kw: "eh.kw"; kx: "eh.kx"; ky: "eh.ky"; kz: "eh.kz"; la: "eh.la"; lb: "eh.lb"; lc: "eh.lc"; ld: "eh.ld"; le: "eh.le"; lf: "eh.lf"; lg: "eh.lg"; lh: "eh.lh"; li: "eh.li"; lj: "eh.lj"; lk: "eh.lk"; ll: "eh.ll"; lm: "eh.lm"; ln: "eh.ln"; lo: "eh.lo"; lp: "eh.lp"; lq: "eh.lq"; lr: "eh.lr"; ls: "eh.ls"; lt: "eh.lt"; lu: "eh.lu"; lv: "eh.lv"; lw: "eh.lw"; lx: "eh.lx"; ly: "eh.ly"; lz: "eh.lz"; ma: "eh.ma"; mb: "eh.mb"; mc: "eh.mc"; md: "eh.md"; me: "eh.me"; mf: "eh.mf"; mg: "eh.mg"; mh: "eh.mh"; mi: "eh.mi"; mj: "eh.mj"; mk: "eh.mk"; ml: "eh.ml"; mm: "eh.mm"; mn: "eh.mn"; mo: "eh.mo"; mp: "eh.mp"; mq: "eh.mq"; mr: "eh.mr"; ms: "eh.ms"; mt: "eh.mt"; mu: "eh.mu"; mv: "eh.mv"; mw: "eh.mw"; mx: "eh.mx"; my: "eh.my"; mz: "eh.mz"; na: "eh.na"; nb: "eh.nb"; nc: "eh.nc"; nd: "eh.nd"; ne: "eh.ne"; nf: "eh.nf"; ng: "eh.ng"; nh: "eh.nh"; ni: "eh.ni"; nj: "eh.nj"; nk: "eh.nk"; nl: "eh.nl"; nm: "eh.nm"; nn: "eh.nn"; no: "eh.no"; np: "eh.np"; nq: "eh.nq"; nr: "eh.nr"; ns: "eh.ns"; nt: "eh.nt"; nu: "eh.nu"; nv: "eh.nv"; nw: "eh.nw"; nx: "eh.nx"; ny: "eh.ny"; nz: "eh.nz"; oa: "eh.oa"; ob: "eh.ob"; oc: "eh.oc"; od: "eh.od"; oe: "eh.oe"; of: "eh.of"; og: "eh.og"; oh: "eh.oh"; oi: "eh.oi"; oj: "eh.oj"; ok: "eh.ok"; ol: "eh.ol"; om: "eh.om"; on: "eh.on"; oo: "eh.oo"; op: "eh.op"; oq: "eh.oq"; or: "eh.or"; os: "eh.os"; ot: "eh.ot"; ou: "eh.ou"; ov: "eh.ov"; ow: "eh.ow"; ox: "eh.ox"; oy: "eh.oy"; oz: "eh.oz"; pa: "eh.pa"; pb: "eh.pb"; pc: "eh.pc"; pd: "eh.pd"; pe: "eh.pe"; pf: "eh.pf"; pg: "eh.pg"; ph: "eh.ph"; pi: "eh.pi"; pj: "eh.pj"; pk: "eh.pk"; pl: "eh.pl"; pm: "eh.pm"; pn: "eh.pn"; po: "eh.po"; pp: "eh.pp"; pq: "eh.pq"; pr: "eh.pr"; ps: "eh.ps"; pt: "eh.pt"; pu: "eh.pu"; pv: "eh.pv"; pw: "eh.pw"; px: "eh.px"; py: "eh.py"; pz: "eh.pz"; qa: "eh.qa"; qb: "eh.qb"; qc: "eh.qc"; qd: "eh.qd"; qe: "eh.qe"; qf: "eh.qf"; qg: "eh.qg"; qh: "eh.qh"; qi: "eh.qi"; qj: "eh.qj"; qk: "eh.qk"; ql: "eh.ql"; qm: "eh.qm"; qn: "eh.qn"; qo: "eh.qo"; qp: "eh.qp"; qq: "eh.qq"; qr: "eh.qr"; qs: "eh.qs"; qt: "eh.qt"; qu: "eh.qu"; qv: "eh.qv"; qw: "eh.qw"; qx: "eh.qx"; qy: "eh.qy"; qz: "eh.qz"; ra: "eh.ra"; rb: "eh.rb"; rc: "eh.rc"; rd: "eh.rd"; re: "eh.re"; rf: "eh.rf"; rg: "eh.rg"; rh: "eh.rh"; ri: "eh.ri"; rj: "eh.rj"; rk: "eh.rk"; rl: "eh.rl"; rm: "eh.rm"; rn: "eh.rn"; ro: "eh.ro"; rp: "eh.rp"; rq: "eh.rq"; rr: "eh.rr"; rs: "eh.rs"; rt: "eh.rt"; ru: "eh.ru"; rv: "eh.rv"; rw: "eh.rw"; rx: "eh.rx"; ry: "eh.ry"; rz: "eh.rz"; sa: "eh.sa"; sb: "eh.sb"; sc: "eh.sc"; sd: "eh.sd"; se: "eh.se"; sf: "eh.sf"; sg: "eh.sg"; sh: "eh.sh"; si: "eh.si"; sj: "eh.sj"; sk: "eh.sk"; sl: "eh.sl"; sm: "eh.sm"; sn: "eh.sn"; so: "eh.so"; sp: "eh.sp"; sq: "eh.sq"; sr: "eh.sr"; ss: "eh.ss"; st: "eh.st"; su: "eh.su"; sv: "eh.sv"; sw: "eh.sw"; sx: "eh.sx"; sy: "eh.sy"; sz: "eh.sz"; ta: "eh.ta"; tb: "eh.tb"; tc: "eh.tc"; td: "eh.td"; te: "eh.te"; tf: "eh.tf"; tg: "eh.tg"; th: "eh.th"; ti: "eh.ti"; tj: "eh.tj"; tk: "eh.tk"; tl: "eh.tl"; tm: "eh.tm"; tn: "eh.tn"; to: "eh.to"; tp: "eh.tp"; tq: "eh.tq"; tr: "eh.tr"; ts: "eh.ts"; tt: "eh.tt"; tu: "eh.tu"; tv: "eh.tv"; tw: "eh.tw"; tx: "eh.tx"; ty: "eh.ty"; tz: "eh.tz"; ua: "eh.ua"; ub: "eh.ub"; uc: "eh.uc"; ud: "eh.ud"; ue: "eh.ue"; uf: "eh.uf"; ug: "eh.ug"; uh: "eh.uh"; ui: "eh.ui"; uj: "eh.uj"; uk: "eh.uk"; ul: "eh.ul"; um: "eh.um"; un: "eh.un"; uo: "eh.uo"; up: "eh.up"; uq: "eh.uq"; ur: "eh.ur"; us: "eh.us"; ut: "eh.ut"; uu: "eh.uu"; uv: "eh.uv"; uw: "eh.uw"; ux: "eh.ux"; uy: "eh.uy"; uz: "eh.uz"; va: "eh.va"; vb: "eh.vb"; vc: "eh.vc"; vd: "eh.vd"; ve: "eh.ve"; vf: "eh.vf"; vg: "eh.vg"; vh: "eh.vh"; vi: "eh.vi"; vj: "eh.vj"; vk: "eh.vk"; vl: "eh.vl"; vm: "eh.vm"; vn: "eh.vn"; vo: "eh.vo"; vp: "eh.vp"; vq: "eh.vq"; vr: "eh.vr"; vs: "eh.vs"; vt: "eh.vt"; vu: "eh.vu"; vv: "eh.vv"; vw: "eh.vw"; vx: "eh.vx"; vy: "eh.vy"; vz: "eh.vz"; wa: "eh.wa"; wb: "eh.wb"; wc: "eh.wc"; wd: "eh.wd"; we: "eh.we"; wf: "eh.wf"; wg: "eh.wg"; wh: "eh.wh"; wi: "eh.wi"; wj: "eh.wj"; wk: "eh.wk"; wl: "eh.wl"; wm: "eh.wm"; wn: "eh.wn"; wo: "eh.wo"; wp: "eh.wp"; wq: "eh.wq"; wr: "eh.wr"; ws: "eh.ws"; wt: "eh.wt"; wu: "eh.wu"; wv: "eh.wv"; ww: "eh.ww"; wx: "eh.wx"; wy: "eh.wy"; wz: "eh.wz"; xa: "eh.xa"; xb: "eh.xb"; xc: "eh.xc"; xd: "eh.xd"; xe: "eh.xe"; xf: "eh.xf"; xg: "eh.xg"; xh: "eh.xh"; xi: "eh.xi"; xj: "eh.xj"; xk: "eh.xk"; xl: "eh.xl"; xm: "eh.xm"; xn: "eh.xn"; xo: "eh.xo"; xp: "eh.xp"; xq: "eh.xq"; xr: "eh.xr"; xs: "eh.xs"; xt: "eh.xt"; xu: "eh.xu"; xv: "eh.xv"; xw: "eh.xw"; xx: "eh.xx"; xy: "eh.xy"; xz: "eh.xz"; ya: "eh.ya"; yb: "eh.yb"; yc: "eh.yc"; yd: "eh.yd"; ye: "eh.ye"; yf: "eh.yf"; yg: "eh.yg"; yh: "eh.yh"; yi: "eh.yi"; yj: "eh.yj"; yk: "eh.yk"; yl: "eh.yl"; ym: "eh.ym"; yn: "eh.yn"; yo: "eh.yo"; yp: "eh.yp"; yq: "eh.yq"; yr: "eh.yr"; ys: "eh.ys"; yt: "eh.yt"; yu: "eh.yu"; yv: "eh.yv"; yw: "eh.yw"; yx: "eh.yx"; yy: "eh.yy"; yz: "eh.yz"; za: "eh.za"; zb: "eh.zb"; zc: "eh.zc"; zd: "eh.zd"; ze: "eh.ze"; zf: "eh.zf"; zg: "eh.zg"; zh: "eh.zh"; zi: "eh.zi"; zj: "eh.zj"; zk: "eh.zk"; zl: "eh.zl"; zm: "eh.zm"; zn: "eh.zn"; zo: "eh.zo"; zp: "eh.zp"; zq: "eh.zq"; zr: "eh.zr"; zs: "eh.zs"; zt: "eh.zt"; zu: "eh.zu"; zv: "eh.zv"; zw: "eh.zw"; zx: "eh.zx"; zy: "eh.zy"; zz: "eh.zz"; }; ei: { aa: "ei.aa"; ab: "ei.ab"; ac: "ei.ac"; ad: "ei.ad"; ae: "ei.ae"; af: "ei.af"; ag: "ei.ag"; ah: "ei.ah"; ai: "ei.ai"; aj: "ei.aj"; ak: "ei.ak"; al: "ei.al"; am: "ei.am"; an: "ei.an"; ao: "ei.ao"; ap: "ei.ap"; aq: "ei.aq"; ar: "ei.ar"; as: "ei.as"; at: "ei.at"; au: "ei.au"; av: "ei.av"; aw: "ei.aw"; ax: "ei.ax"; ay: "ei.ay"; az: "ei.az"; ba: "ei.ba"; bb: "ei.bb"; bc: "ei.bc"; bd: "ei.bd"; be: "ei.be"; bf: "ei.bf"; bg: "ei.bg"; bh: "ei.bh"; bi: "ei.bi"; bj: "ei.bj"; bk: "ei.bk"; bl: "ei.bl"; bm: "ei.bm"; bn: "ei.bn"; bo: "ei.bo"; bp: "ei.bp"; bq: "ei.bq"; br: "ei.br"; bs: "ei.bs"; bt: "ei.bt"; bu: "ei.bu"; bv: "ei.bv"; bw: "ei.bw"; bx: "ei.bx"; by: "ei.by"; bz: "ei.bz"; ca: "ei.ca"; cb: "ei.cb"; cc: "ei.cc"; cd: "ei.cd"; ce: "ei.ce"; cf: "ei.cf"; cg: "ei.cg"; ch: "ei.ch"; ci: "ei.ci"; cj: "ei.cj"; ck: "ei.ck"; cl: "ei.cl"; cm: "ei.cm"; cn: "ei.cn"; co: "ei.co"; cp: "ei.cp"; cq: "ei.cq"; cr: "ei.cr"; cs: "ei.cs"; ct: "ei.ct"; cu: "ei.cu"; cv: "ei.cv"; cw: "ei.cw"; cx: "ei.cx"; cy: "ei.cy"; cz: "ei.cz"; da: "ei.da"; db: "ei.db"; dc: "ei.dc"; dd: "ei.dd"; de: "ei.de"; df: "ei.df"; dg: "ei.dg"; dh: "ei.dh"; di: "ei.di"; dj: "ei.dj"; dk: "ei.dk"; dl: "ei.dl"; dm: "ei.dm"; dn: "ei.dn"; do: "ei.do"; dp: "ei.dp"; dq: "ei.dq"; dr: "ei.dr"; ds: "ei.ds"; dt: "ei.dt"; du: "ei.du"; dv: "ei.dv"; dw: "ei.dw"; dx: "ei.dx"; dy: "ei.dy"; dz: "ei.dz"; ea: "ei.ea"; eb: "ei.eb"; ec: "ei.ec"; ed: "ei.ed"; ee: "ei.ee"; ef: "ei.ef"; eg: "ei.eg"; eh: "ei.eh"; ei: "ei.ei"; ej: "ei.ej"; ek: "ei.ek"; el: "ei.el"; em: "ei.em"; en: "ei.en"; eo: "ei.eo"; ep: "ei.ep"; eq: "ei.eq"; er: "ei.er"; es: "ei.es"; et: "ei.et"; eu: "ei.eu"; ev: "ei.ev"; ew: "ei.ew"; ex: "ei.ex"; ey: "ei.ey"; ez: "ei.ez"; fa: "ei.fa"; fb: "ei.fb"; fc: "ei.fc"; fd: "ei.fd"; fe: "ei.fe"; ff: "ei.ff"; fg: "ei.fg"; fh: "ei.fh"; fi: "ei.fi"; fj: "ei.fj"; fk: "ei.fk"; fl: "ei.fl"; fm: "ei.fm"; fn: "ei.fn"; fo: "ei.fo"; fp: "ei.fp"; fq: "ei.fq"; fr: "ei.fr"; fs: "ei.fs"; ft: "ei.ft"; fu: "ei.fu"; fv: "ei.fv"; fw: "ei.fw"; fx: "ei.fx"; fy: "ei.fy"; fz: "ei.fz"; ga: "ei.ga"; gb: "ei.gb"; gc: "ei.gc"; gd: "ei.gd"; ge: "ei.ge"; gf: "ei.gf"; gg: "ei.gg"; gh: "ei.gh"; gi: "ei.gi"; gj: "ei.gj"; gk: "ei.gk"; gl: "ei.gl"; gm: "ei.gm"; gn: "ei.gn"; go: "ei.go"; gp: "ei.gp"; gq: "ei.gq"; gr: "ei.gr"; gs: "ei.gs"; gt: "ei.gt"; gu: "ei.gu"; gv: "ei.gv"; gw: "ei.gw"; gx: "ei.gx"; gy: "ei.gy"; gz: "ei.gz"; ha: "ei.ha"; hb: "ei.hb"; hc: "ei.hc"; hd: "ei.hd"; he: "ei.he"; hf: "ei.hf"; hg: "ei.hg"; hh: "ei.hh"; hi: "ei.hi"; hj: "ei.hj"; hk: "ei.hk"; hl: "ei.hl"; hm: "ei.hm"; hn: "ei.hn"; ho: "ei.ho"; hp: "ei.hp"; hq: "ei.hq"; hr: "ei.hr"; hs: "ei.hs"; ht: "ei.ht"; hu: "ei.hu"; hv: "ei.hv"; hw: "ei.hw"; hx: "ei.hx"; hy: "ei.hy"; hz: "ei.hz"; ia: "ei.ia"; ib: "ei.ib"; ic: "ei.ic"; id: "ei.id"; ie: "ei.ie"; if: "ei.if"; ig: "ei.ig"; ih: "ei.ih"; ii: "ei.ii"; ij: "ei.ij"; ik: "ei.ik"; il: "ei.il"; im: "ei.im"; in: "ei.in"; io: "ei.io"; ip: "ei.ip"; iq: "ei.iq"; ir: "ei.ir"; is: "ei.is"; it: "ei.it"; iu: "ei.iu"; iv: "ei.iv"; iw: "ei.iw"; ix: "ei.ix"; iy: "ei.iy"; iz: "ei.iz"; ja: "ei.ja"; jb: "ei.jb"; jc: "ei.jc"; jd: "ei.jd"; je: "ei.je"; jf: "ei.jf"; jg: "ei.jg"; jh: "ei.jh"; ji: "ei.ji"; jj: "ei.jj"; jk: "ei.jk"; jl: "ei.jl"; jm: "ei.jm"; jn: "ei.jn"; jo: "ei.jo"; jp: "ei.jp"; jq: "ei.jq"; jr: "ei.jr"; js: "ei.js"; jt: "ei.jt"; ju: "ei.ju"; jv: "ei.jv"; jw: "ei.jw"; jx: "ei.jx"; jy: "ei.jy"; jz: "ei.jz"; ka: "ei.ka"; kb: "ei.kb"; kc: "ei.kc"; kd: "ei.kd"; ke: "ei.ke"; kf: "ei.kf"; kg: "ei.kg"; kh: "ei.kh"; ki: "ei.ki"; kj: "ei.kj"; kk: "ei.kk"; kl: "ei.kl"; km: "ei.km"; kn: "ei.kn"; ko: "ei.ko"; kp: "ei.kp"; kq: "ei.kq"; kr: "ei.kr"; ks: "ei.ks"; kt: "ei.kt"; ku: "ei.ku"; kv: "ei.kv"; kw: "ei.kw"; kx: "ei.kx"; ky: "ei.ky"; kz: "ei.kz"; la: "ei.la"; lb: "ei.lb"; lc: "ei.lc"; ld: "ei.ld"; le: "ei.le"; lf: "ei.lf"; lg: "ei.lg"; lh: "ei.lh"; li: "ei.li"; lj: "ei.lj"; lk: "ei.lk"; ll: "ei.ll"; lm: "ei.lm"; ln: "ei.ln"; lo: "ei.lo"; lp: "ei.lp"; lq: "ei.lq"; lr: "ei.lr"; ls: "ei.ls"; lt: "ei.lt"; lu: "ei.lu"; lv: "ei.lv"; lw: "ei.lw"; lx: "ei.lx"; ly: "ei.ly"; lz: "ei.lz"; ma: "ei.ma"; mb: "ei.mb"; mc: "ei.mc"; md: "ei.md"; me: "ei.me"; mf: "ei.mf"; mg: "ei.mg"; mh: "ei.mh"; mi: "ei.mi"; mj: "ei.mj"; mk: "ei.mk"; ml: "ei.ml"; mm: "ei.mm"; mn: "ei.mn"; mo: "ei.mo"; mp: "ei.mp"; mq: "ei.mq"; mr: "ei.mr"; ms: "ei.ms"; mt: "ei.mt"; mu: "ei.mu"; mv: "ei.mv"; mw: "ei.mw"; mx: "ei.mx"; my: "ei.my"; mz: "ei.mz"; na: "ei.na"; nb: "ei.nb"; nc: "ei.nc"; nd: "ei.nd"; ne: "ei.ne"; nf: "ei.nf"; ng: "ei.ng"; nh: "ei.nh"; ni: "ei.ni"; nj: "ei.nj"; nk: "ei.nk"; nl: "ei.nl"; nm: "ei.nm"; nn: "ei.nn"; no: "ei.no"; np: "ei.np"; nq: "ei.nq"; nr: "ei.nr"; ns: "ei.ns"; nt: "ei.nt"; nu: "ei.nu"; nv: "ei.nv"; nw: "ei.nw"; nx: "ei.nx"; ny: "ei.ny"; nz: "ei.nz"; oa: "ei.oa"; ob: "ei.ob"; oc: "ei.oc"; od: "ei.od"; oe: "ei.oe"; of: "ei.of"; og: "ei.og"; oh: "ei.oh"; oi: "ei.oi"; oj: "ei.oj"; ok: "ei.ok"; ol: "ei.ol"; om: "ei.om"; on: "ei.on"; oo: "ei.oo"; op: "ei.op"; oq: "ei.oq"; or: "ei.or"; os: "ei.os"; ot: "ei.ot"; ou: "ei.ou"; ov: "ei.ov"; ow: "ei.ow"; ox: "ei.ox"; oy: "ei.oy"; oz: "ei.oz"; pa: "ei.pa"; pb: "ei.pb"; pc: "ei.pc"; pd: "ei.pd"; pe: "ei.pe"; pf: "ei.pf"; pg: "ei.pg"; ph: "ei.ph"; pi: "ei.pi"; pj: "ei.pj"; pk: "ei.pk"; pl: "ei.pl"; pm: "ei.pm"; pn: "ei.pn"; po: "ei.po"; pp: "ei.pp"; pq: "ei.pq"; pr: "ei.pr"; ps: "ei.ps"; pt: "ei.pt"; pu: "ei.pu"; pv: "ei.pv"; pw: "ei.pw"; px: "ei.px"; py: "ei.py"; pz: "ei.pz"; qa: "ei.qa"; qb: "ei.qb"; qc: "ei.qc"; qd: "ei.qd"; qe: "ei.qe"; qf: "ei.qf"; qg: "ei.qg"; qh: "ei.qh"; qi: "ei.qi"; qj: "ei.qj"; qk: "ei.qk"; ql: "ei.ql"; qm: "ei.qm"; qn: "ei.qn"; qo: "ei.qo"; qp: "ei.qp"; qq: "ei.qq"; qr: "ei.qr"; qs: "ei.qs"; qt: "ei.qt"; qu: "ei.qu"; qv: "ei.qv"; qw: "ei.qw"; qx: "ei.qx"; qy: "ei.qy"; qz: "ei.qz"; ra: "ei.ra"; rb: "ei.rb"; rc: "ei.rc"; rd: "ei.rd"; re: "ei.re"; rf: "ei.rf"; rg: "ei.rg"; rh: "ei.rh"; ri: "ei.ri"; rj: "ei.rj"; rk: "ei.rk"; rl: "ei.rl"; rm: "ei.rm"; rn: "ei.rn"; ro: "ei.ro"; rp: "ei.rp"; rq: "ei.rq"; rr: "ei.rr"; rs: "ei.rs"; rt: "ei.rt"; ru: "ei.ru"; rv: "ei.rv"; rw: "ei.rw"; rx: "ei.rx"; ry: "ei.ry"; rz: "ei.rz"; sa: "ei.sa"; sb: "ei.sb"; sc: "ei.sc"; sd: "ei.sd"; se: "ei.se"; sf: "ei.sf"; sg: "ei.sg"; sh: "ei.sh"; si: "ei.si"; sj: "ei.sj"; sk: "ei.sk"; sl: "ei.sl"; sm: "ei.sm"; sn: "ei.sn"; so: "ei.so"; sp: "ei.sp"; sq: "ei.sq"; sr: "ei.sr"; ss: "ei.ss"; st: "ei.st"; su: "ei.su"; sv: "ei.sv"; sw: "ei.sw"; sx: "ei.sx"; sy: "ei.sy"; sz: "ei.sz"; ta: "ei.ta"; tb: "ei.tb"; tc: "ei.tc"; td: "ei.td"; te: "ei.te"; tf: "ei.tf"; tg: "ei.tg"; th: "ei.th"; ti: "ei.ti"; tj: "ei.tj"; tk: "ei.tk"; tl: "ei.tl"; tm: "ei.tm"; tn: "ei.tn"; to: "ei.to"; tp: "ei.tp"; tq: "ei.tq"; tr: "ei.tr"; ts: "ei.ts"; tt: "ei.tt"; tu: "ei.tu"; tv: "ei.tv"; tw: "ei.tw"; tx: "ei.tx"; ty: "ei.ty"; tz: "ei.tz"; ua: "ei.ua"; ub: "ei.ub"; uc: "ei.uc"; ud: "ei.ud"; ue: "ei.ue"; uf: "ei.uf"; ug: "ei.ug"; uh: "ei.uh"; ui: "ei.ui"; uj: "ei.uj"; uk: "ei.uk"; ul: "ei.ul"; um: "ei.um"; un: "ei.un"; uo: "ei.uo"; up: "ei.up"; uq: "ei.uq"; ur: "ei.ur"; us: "ei.us"; ut: "ei.ut"; uu: "ei.uu"; uv: "ei.uv"; uw: "ei.uw"; ux: "ei.ux"; uy: "ei.uy"; uz: "ei.uz"; va: "ei.va"; vb: "ei.vb"; vc: "ei.vc"; vd: "ei.vd"; ve: "ei.ve"; vf: "ei.vf"; vg: "ei.vg"; vh: "ei.vh"; vi: "ei.vi"; vj: "ei.vj"; vk: "ei.vk"; vl: "ei.vl"; vm: "ei.vm"; vn: "ei.vn"; vo: "ei.vo"; vp: "ei.vp"; vq: "ei.vq"; vr: "ei.vr"; vs: "ei.vs"; vt: "ei.vt"; vu: "ei.vu"; vv: "ei.vv"; vw: "ei.vw"; vx: "ei.vx"; vy: "ei.vy"; vz: "ei.vz"; wa: "ei.wa"; wb: "ei.wb"; wc: "ei.wc"; wd: "ei.wd"; we: "ei.we"; wf: "ei.wf"; wg: "ei.wg"; wh: "ei.wh"; wi: "ei.wi"; wj: "ei.wj"; wk: "ei.wk"; wl: "ei.wl"; wm: "ei.wm"; wn: "ei.wn"; wo: "ei.wo"; wp: "ei.wp"; wq: "ei.wq"; wr: "ei.wr"; ws: "ei.ws"; wt: "ei.wt"; wu: "ei.wu"; wv: "ei.wv"; ww: "ei.ww"; wx: "ei.wx"; wy: "ei.wy"; wz: "ei.wz"; xa: "ei.xa"; xb: "ei.xb"; xc: "ei.xc"; xd: "ei.xd"; xe: "ei.xe"; xf: "ei.xf"; xg: "ei.xg"; xh: "ei.xh"; xi: "ei.xi"; xj: "ei.xj"; xk: "ei.xk"; xl: "ei.xl"; xm: "ei.xm"; xn: "ei.xn"; xo: "ei.xo"; xp: "ei.xp"; xq: "ei.xq"; xr: "ei.xr"; xs: "ei.xs"; xt: "ei.xt"; xu: "ei.xu"; xv: "ei.xv"; xw: "ei.xw"; xx: "ei.xx"; xy: "ei.xy"; xz: "ei.xz"; ya: "ei.ya"; yb: "ei.yb"; yc: "ei.yc"; yd: "ei.yd"; ye: "ei.ye"; yf: "ei.yf"; yg: "ei.yg"; yh: "ei.yh"; yi: "ei.yi"; yj: "ei.yj"; yk: "ei.yk"; yl: "ei.yl"; ym: "ei.ym"; yn: "ei.yn"; yo: "ei.yo"; yp: "ei.yp"; yq: "ei.yq"; yr: "ei.yr"; ys: "ei.ys"; yt: "ei.yt"; yu: "ei.yu"; yv: "ei.yv"; yw: "ei.yw"; yx: "ei.yx"; yy: "ei.yy"; yz: "ei.yz"; za: "ei.za"; zb: "ei.zb"; zc: "ei.zc"; zd: "ei.zd"; ze: "ei.ze"; zf: "ei.zf"; zg: "ei.zg"; zh: "ei.zh"; zi: "ei.zi"; zj: "ei.zj"; zk: "ei.zk"; zl: "ei.zl"; zm: "ei.zm"; zn: "ei.zn"; zo: "ei.zo"; zp: "ei.zp"; zq: "ei.zq"; zr: "ei.zr"; zs: "ei.zs"; zt: "ei.zt"; zu: "ei.zu"; zv: "ei.zv"; zw: "ei.zw"; zx: "ei.zx"; zy: "ei.zy"; zz: "ei.zz"; }; ej: { aa: "ej.aa"; ab: "ej.ab"; ac: "ej.ac"; ad: "ej.ad"; ae: "ej.ae"; af: "ej.af"; ag: "ej.ag"; ah: "ej.ah"; ai: "ej.ai"; aj: "ej.aj"; ak: "ej.ak"; al: "ej.al"; am: "ej.am"; an: "ej.an"; ao: "ej.ao"; ap: "ej.ap"; aq: "ej.aq"; ar: "ej.ar"; as: "ej.as"; at: "ej.at"; au: "ej.au"; av: "ej.av"; aw: "ej.aw"; ax: "ej.ax"; ay: "ej.ay"; az: "ej.az"; ba: "ej.ba"; bb: "ej.bb"; bc: "ej.bc"; bd: "ej.bd"; be: "ej.be"; bf: "ej.bf"; bg: "ej.bg"; bh: "ej.bh"; bi: "ej.bi"; bj: "ej.bj"; bk: "ej.bk"; bl: "ej.bl"; bm: "ej.bm"; bn: "ej.bn"; bo: "ej.bo"; bp: "ej.bp"; bq: "ej.bq"; br: "ej.br"; bs: "ej.bs"; bt: "ej.bt"; bu: "ej.bu"; bv: "ej.bv"; bw: "ej.bw"; bx: "ej.bx"; by: "ej.by"; bz: "ej.bz"; ca: "ej.ca"; cb: "ej.cb"; cc: "ej.cc"; cd: "ej.cd"; ce: "ej.ce"; cf: "ej.cf"; cg: "ej.cg"; ch: "ej.ch"; ci: "ej.ci"; cj: "ej.cj"; ck: "ej.ck"; cl: "ej.cl"; cm: "ej.cm"; cn: "ej.cn"; co: "ej.co"; cp: "ej.cp"; cq: "ej.cq"; cr: "ej.cr"; cs: "ej.cs"; ct: "ej.ct"; cu: "ej.cu"; cv: "ej.cv"; cw: "ej.cw"; cx: "ej.cx"; cy: "ej.cy"; cz: "ej.cz"; da: "ej.da"; db: "ej.db"; dc: "ej.dc"; dd: "ej.dd"; de: "ej.de"; df: "ej.df"; dg: "ej.dg"; dh: "ej.dh"; di: "ej.di"; dj: "ej.dj"; dk: "ej.dk"; dl: "ej.dl"; dm: "ej.dm"; dn: "ej.dn"; do: "ej.do"; dp: "ej.dp"; dq: "ej.dq"; dr: "ej.dr"; ds: "ej.ds"; dt: "ej.dt"; du: "ej.du"; dv: "ej.dv"; dw: "ej.dw"; dx: "ej.dx"; dy: "ej.dy"; dz: "ej.dz"; ea: "ej.ea"; eb: "ej.eb"; ec: "ej.ec"; ed: "ej.ed"; ee: "ej.ee"; ef: "ej.ef"; eg: "ej.eg"; eh: "ej.eh"; ei: "ej.ei"; ej: "ej.ej"; ek: "ej.ek"; el: "ej.el"; em: "ej.em"; en: "ej.en"; eo: "ej.eo"; ep: "ej.ep"; eq: "ej.eq"; er: "ej.er"; es: "ej.es"; et: "ej.et"; eu: "ej.eu"; ev: "ej.ev"; ew: "ej.ew"; ex: "ej.ex"; ey: "ej.ey"; ez: "ej.ez"; fa: "ej.fa"; fb: "ej.fb"; fc: "ej.fc"; fd: "ej.fd"; fe: "ej.fe"; ff: "ej.ff"; fg: "ej.fg"; fh: "ej.fh"; fi: "ej.fi"; fj: "ej.fj"; fk: "ej.fk"; fl: "ej.fl"; fm: "ej.fm"; fn: "ej.fn"; fo: "ej.fo"; fp: "ej.fp"; fq: "ej.fq"; fr: "ej.fr"; fs: "ej.fs"; ft: "ej.ft"; fu: "ej.fu"; fv: "ej.fv"; fw: "ej.fw"; fx: "ej.fx"; fy: "ej.fy"; fz: "ej.fz"; ga: "ej.ga"; gb: "ej.gb"; gc: "ej.gc"; gd: "ej.gd"; ge: "ej.ge"; gf: "ej.gf"; gg: "ej.gg"; gh: "ej.gh"; gi: "ej.gi"; gj: "ej.gj"; gk: "ej.gk"; gl: "ej.gl"; gm: "ej.gm"; gn: "ej.gn"; go: "ej.go"; gp: "ej.gp"; gq: "ej.gq"; gr: "ej.gr"; gs: "ej.gs"; gt: "ej.gt"; gu: "ej.gu"; gv: "ej.gv"; gw: "ej.gw"; gx: "ej.gx"; gy: "ej.gy"; gz: "ej.gz"; ha: "ej.ha"; hb: "ej.hb"; hc: "ej.hc"; hd: "ej.hd"; he: "ej.he"; hf: "ej.hf"; hg: "ej.hg"; hh: "ej.hh"; hi: "ej.hi"; hj: "ej.hj"; hk: "ej.hk"; hl: "ej.hl"; hm: "ej.hm"; hn: "ej.hn"; ho: "ej.ho"; hp: "ej.hp"; hq: "ej.hq"; hr: "ej.hr"; hs: "ej.hs"; ht: "ej.ht"; hu: "ej.hu"; hv: "ej.hv"; hw: "ej.hw"; hx: "ej.hx"; hy: "ej.hy"; hz: "ej.hz"; ia: "ej.ia"; ib: "ej.ib"; ic: "ej.ic"; id: "ej.id"; ie: "ej.ie"; if: "ej.if"; ig: "ej.ig"; ih: "ej.ih"; ii: "ej.ii"; ij: "ej.ij"; ik: "ej.ik"; il: "ej.il"; im: "ej.im"; in: "ej.in"; io: "ej.io"; ip: "ej.ip"; iq: "ej.iq"; ir: "ej.ir"; is: "ej.is"; it: "ej.it"; iu: "ej.iu"; iv: "ej.iv"; iw: "ej.iw"; ix: "ej.ix"; iy: "ej.iy"; iz: "ej.iz"; ja: "ej.ja"; jb: "ej.jb"; jc: "ej.jc"; jd: "ej.jd"; je: "ej.je"; jf: "ej.jf"; jg: "ej.jg"; jh: "ej.jh"; ji: "ej.ji"; jj: "ej.jj"; jk: "ej.jk"; jl: "ej.jl"; jm: "ej.jm"; jn: "ej.jn"; jo: "ej.jo"; jp: "ej.jp"; jq: "ej.jq"; jr: "ej.jr"; js: "ej.js"; jt: "ej.jt"; ju: "ej.ju"; jv: "ej.jv"; jw: "ej.jw"; jx: "ej.jx"; jy: "ej.jy"; jz: "ej.jz"; ka: "ej.ka"; kb: "ej.kb"; kc: "ej.kc"; kd: "ej.kd"; ke: "ej.ke"; kf: "ej.kf"; kg: "ej.kg"; kh: "ej.kh"; ki: "ej.ki"; kj: "ej.kj"; kk: "ej.kk"; kl: "ej.kl"; km: "ej.km"; kn: "ej.kn"; ko: "ej.ko"; kp: "ej.kp"; kq: "ej.kq"; kr: "ej.kr"; ks: "ej.ks"; kt: "ej.kt"; ku: "ej.ku"; kv: "ej.kv"; kw: "ej.kw"; kx: "ej.kx"; ky: "ej.ky"; kz: "ej.kz"; la: "ej.la"; lb: "ej.lb"; lc: "ej.lc"; ld: "ej.ld"; le: "ej.le"; lf: "ej.lf"; lg: "ej.lg"; lh: "ej.lh"; li: "ej.li"; lj: "ej.lj"; lk: "ej.lk"; ll: "ej.ll"; lm: "ej.lm"; ln: "ej.ln"; lo: "ej.lo"; lp: "ej.lp"; lq: "ej.lq"; lr: "ej.lr"; ls: "ej.ls"; lt: "ej.lt"; lu: "ej.lu"; lv: "ej.lv"; lw: "ej.lw"; lx: "ej.lx"; ly: "ej.ly"; lz: "ej.lz"; ma: "ej.ma"; mb: "ej.mb"; mc: "ej.mc"; md: "ej.md"; me: "ej.me"; mf: "ej.mf"; mg: "ej.mg"; mh: "ej.mh"; mi: "ej.mi"; mj: "ej.mj"; mk: "ej.mk"; ml: "ej.ml"; mm: "ej.mm"; mn: "ej.mn"; mo: "ej.mo"; mp: "ej.mp"; mq: "ej.mq"; mr: "ej.mr"; ms: "ej.ms"; mt: "ej.mt"; mu: "ej.mu"; mv: "ej.mv"; mw: "ej.mw"; mx: "ej.mx"; my: "ej.my"; mz: "ej.mz"; na: "ej.na"; nb: "ej.nb"; nc: "ej.nc"; nd: "ej.nd"; ne: "ej.ne"; nf: "ej.nf"; ng: "ej.ng"; nh: "ej.nh"; ni: "ej.ni"; nj: "ej.nj"; nk: "ej.nk"; nl: "ej.nl"; nm: "ej.nm"; nn: "ej.nn"; no: "ej.no"; np: "ej.np"; nq: "ej.nq"; nr: "ej.nr"; ns: "ej.ns"; nt: "ej.nt"; nu: "ej.nu"; nv: "ej.nv"; nw: "ej.nw"; nx: "ej.nx"; ny: "ej.ny"; nz: "ej.nz"; oa: "ej.oa"; ob: "ej.ob"; oc: "ej.oc"; od: "ej.od"; oe: "ej.oe"; of: "ej.of"; og: "ej.og"; oh: "ej.oh"; oi: "ej.oi"; oj: "ej.oj"; ok: "ej.ok"; ol: "ej.ol"; om: "ej.om"; on: "ej.on"; oo: "ej.oo"; op: "ej.op"; oq: "ej.oq"; or: "ej.or"; os: "ej.os"; ot: "ej.ot"; ou: "ej.ou"; ov: "ej.ov"; ow: "ej.ow"; ox: "ej.ox"; oy: "ej.oy"; oz: "ej.oz"; pa: "ej.pa"; pb: "ej.pb"; pc: "ej.pc"; pd: "ej.pd"; pe: "ej.pe"; pf: "ej.pf"; pg: "ej.pg"; ph: "ej.ph"; pi: "ej.pi"; pj: "ej.pj"; pk: "ej.pk"; pl: "ej.pl"; pm: "ej.pm"; pn: "ej.pn"; po: "ej.po"; pp: "ej.pp"; pq: "ej.pq"; pr: "ej.pr"; ps: "ej.ps"; pt: "ej.pt"; pu: "ej.pu"; pv: "ej.pv"; pw: "ej.pw"; px: "ej.px"; py: "ej.py"; pz: "ej.pz"; qa: "ej.qa"; qb: "ej.qb"; qc: "ej.qc"; qd: "ej.qd"; qe: "ej.qe"; qf: "ej.qf"; qg: "ej.qg"; qh: "ej.qh"; qi: "ej.qi"; qj: "ej.qj"; qk: "ej.qk"; ql: "ej.ql"; qm: "ej.qm"; qn: "ej.qn"; qo: "ej.qo"; qp: "ej.qp"; qq: "ej.qq"; qr: "ej.qr"; qs: "ej.qs"; qt: "ej.qt"; qu: "ej.qu"; qv: "ej.qv"; qw: "ej.qw"; qx: "ej.qx"; qy: "ej.qy"; qz: "ej.qz"; ra: "ej.ra"; rb: "ej.rb"; rc: "ej.rc"; rd: "ej.rd"; re: "ej.re"; rf: "ej.rf"; rg: "ej.rg"; rh: "ej.rh"; ri: "ej.ri"; rj: "ej.rj"; rk: "ej.rk"; rl: "ej.rl"; rm: "ej.rm"; rn: "ej.rn"; ro: "ej.ro"; rp: "ej.rp"; rq: "ej.rq"; rr: "ej.rr"; rs: "ej.rs"; rt: "ej.rt"; ru: "ej.ru"; rv: "ej.rv"; rw: "ej.rw"; rx: "ej.rx"; ry: "ej.ry"; rz: "ej.rz"; sa: "ej.sa"; sb: "ej.sb"; sc: "ej.sc"; sd: "ej.sd"; se: "ej.se"; sf: "ej.sf"; sg: "ej.sg"; sh: "ej.sh"; si: "ej.si"; sj: "ej.sj"; sk: "ej.sk"; sl: "ej.sl"; sm: "ej.sm"; sn: "ej.sn"; so: "ej.so"; sp: "ej.sp"; sq: "ej.sq"; sr: "ej.sr"; ss: "ej.ss"; st: "ej.st"; su: "ej.su"; sv: "ej.sv"; sw: "ej.sw"; sx: "ej.sx"; sy: "ej.sy"; sz: "ej.sz"; ta: "ej.ta"; tb: "ej.tb"; tc: "ej.tc"; td: "ej.td"; te: "ej.te"; tf: "ej.tf"; tg: "ej.tg"; th: "ej.th"; ti: "ej.ti"; tj: "ej.tj"; tk: "ej.tk"; tl: "ej.tl"; tm: "ej.tm"; tn: "ej.tn"; to: "ej.to"; tp: "ej.tp"; tq: "ej.tq"; tr: "ej.tr"; ts: "ej.ts"; tt: "ej.tt"; tu: "ej.tu"; tv: "ej.tv"; tw: "ej.tw"; tx: "ej.tx"; ty: "ej.ty"; tz: "ej.tz"; ua: "ej.ua"; ub: "ej.ub"; uc: "ej.uc"; ud: "ej.ud"; ue: "ej.ue"; uf: "ej.uf"; ug: "ej.ug"; uh: "ej.uh"; ui: "ej.ui"; uj: "ej.uj"; uk: "ej.uk"; ul: "ej.ul"; um: "ej.um"; un: "ej.un"; uo: "ej.uo"; up: "ej.up"; uq: "ej.uq"; ur: "ej.ur"; us: "ej.us"; ut: "ej.ut"; uu: "ej.uu"; uv: "ej.uv"; uw: "ej.uw"; ux: "ej.ux"; uy: "ej.uy"; uz: "ej.uz"; va: "ej.va"; vb: "ej.vb"; vc: "ej.vc"; vd: "ej.vd"; ve: "ej.ve"; vf: "ej.vf"; vg: "ej.vg"; vh: "ej.vh"; vi: "ej.vi"; vj: "ej.vj"; vk: "ej.vk"; vl: "ej.vl"; vm: "ej.vm"; vn: "ej.vn"; vo: "ej.vo"; vp: "ej.vp"; vq: "ej.vq"; vr: "ej.vr"; vs: "ej.vs"; vt: "ej.vt"; vu: "ej.vu"; vv: "ej.vv"; vw: "ej.vw"; vx: "ej.vx"; vy: "ej.vy"; vz: "ej.vz"; wa: "ej.wa"; wb: "ej.wb"; wc: "ej.wc"; wd: "ej.wd"; we: "ej.we"; wf: "ej.wf"; wg: "ej.wg"; wh: "ej.wh"; wi: "ej.wi"; wj: "ej.wj"; wk: "ej.wk"; wl: "ej.wl"; wm: "ej.wm"; wn: "ej.wn"; wo: "ej.wo"; wp: "ej.wp"; wq: "ej.wq"; wr: "ej.wr"; ws: "ej.ws"; wt: "ej.wt"; wu: "ej.wu"; wv: "ej.wv"; ww: "ej.ww"; wx: "ej.wx"; wy: "ej.wy"; wz: "ej.wz"; xa: "ej.xa"; xb: "ej.xb"; xc: "ej.xc"; xd: "ej.xd"; xe: "ej.xe"; xf: "ej.xf"; xg: "ej.xg"; xh: "ej.xh"; xi: "ej.xi"; xj: "ej.xj"; xk: "ej.xk"; xl: "ej.xl"; xm: "ej.xm"; xn: "ej.xn"; xo: "ej.xo"; xp: "ej.xp"; xq: "ej.xq"; xr: "ej.xr"; xs: "ej.xs"; xt: "ej.xt"; xu: "ej.xu"; xv: "ej.xv"; xw: "ej.xw"; xx: "ej.xx"; xy: "ej.xy"; xz: "ej.xz"; ya: "ej.ya"; yb: "ej.yb"; yc: "ej.yc"; yd: "ej.yd"; ye: "ej.ye"; yf: "ej.yf"; yg: "ej.yg"; yh: "ej.yh"; yi: "ej.yi"; yj: "ej.yj"; yk: "ej.yk"; yl: "ej.yl"; ym: "ej.ym"; yn: "ej.yn"; yo: "ej.yo"; yp: "ej.yp"; yq: "ej.yq"; yr: "ej.yr"; ys: "ej.ys"; yt: "ej.yt"; yu: "ej.yu"; yv: "ej.yv"; yw: "ej.yw"; yx: "ej.yx"; yy: "ej.yy"; yz: "ej.yz"; za: "ej.za"; zb: "ej.zb"; zc: "ej.zc"; zd: "ej.zd"; ze: "ej.ze"; zf: "ej.zf"; zg: "ej.zg"; zh: "ej.zh"; zi: "ej.zi"; zj: "ej.zj"; zk: "ej.zk"; zl: "ej.zl"; zm: "ej.zm"; zn: "ej.zn"; zo: "ej.zo"; zp: "ej.zp"; zq: "ej.zq"; zr: "ej.zr"; zs: "ej.zs"; zt: "ej.zt"; zu: "ej.zu"; zv: "ej.zv"; zw: "ej.zw"; zx: "ej.zx"; zy: "ej.zy"; zz: "ej.zz"; }; ek: { aa: "ek.aa"; ab: "ek.ab"; ac: "ek.ac"; ad: "ek.ad"; ae: "ek.ae"; af: "ek.af"; ag: "ek.ag"; ah: "ek.ah"; ai: "ek.ai"; aj: "ek.aj"; ak: "ek.ak"; al: "ek.al"; am: "ek.am"; an: "ek.an"; ao: "ek.ao"; ap: "ek.ap"; aq: "ek.aq"; ar: "ek.ar"; as: "ek.as"; at: "ek.at"; au: "ek.au"; av: "ek.av"; aw: "ek.aw"; ax: "ek.ax"; ay: "ek.ay"; az: "ek.az"; ba: "ek.ba"; bb: "ek.bb"; bc: "ek.bc"; bd: "ek.bd"; be: "ek.be"; bf: "ek.bf"; bg: "ek.bg"; bh: "ek.bh"; bi: "ek.bi"; bj: "ek.bj"; bk: "ek.bk"; bl: "ek.bl"; bm: "ek.bm"; bn: "ek.bn"; bo: "ek.bo"; bp: "ek.bp"; bq: "ek.bq"; br: "ek.br"; bs: "ek.bs"; bt: "ek.bt"; bu: "ek.bu"; bv: "ek.bv"; bw: "ek.bw"; bx: "ek.bx"; by: "ek.by"; bz: "ek.bz"; ca: "ek.ca"; cb: "ek.cb"; cc: "ek.cc"; cd: "ek.cd"; ce: "ek.ce"; cf: "ek.cf"; cg: "ek.cg"; ch: "ek.ch"; ci: "ek.ci"; cj: "ek.cj"; ck: "ek.ck"; cl: "ek.cl"; cm: "ek.cm"; cn: "ek.cn"; co: "ek.co"; cp: "ek.cp"; cq: "ek.cq"; cr: "ek.cr"; cs: "ek.cs"; ct: "ek.ct"; cu: "ek.cu"; cv: "ek.cv"; cw: "ek.cw"; cx: "ek.cx"; cy: "ek.cy"; cz: "ek.cz"; da: "ek.da"; db: "ek.db"; dc: "ek.dc"; dd: "ek.dd"; de: "ek.de"; df: "ek.df"; dg: "ek.dg"; dh: "ek.dh"; di: "ek.di"; dj: "ek.dj"; dk: "ek.dk"; dl: "ek.dl"; dm: "ek.dm"; dn: "ek.dn"; do: "ek.do"; dp: "ek.dp"; dq: "ek.dq"; dr: "ek.dr"; ds: "ek.ds"; dt: "ek.dt"; du: "ek.du"; dv: "ek.dv"; dw: "ek.dw"; dx: "ek.dx"; dy: "ek.dy"; dz: "ek.dz"; ea: "ek.ea"; eb: "ek.eb"; ec: "ek.ec"; ed: "ek.ed"; ee: "ek.ee"; ef: "ek.ef"; eg: "ek.eg"; eh: "ek.eh"; ei: "ek.ei"; ej: "ek.ej"; ek: "ek.ek"; el: "ek.el"; em: "ek.em"; en: "ek.en"; eo: "ek.eo"; ep: "ek.ep"; eq: "ek.eq"; er: "ek.er"; es: "ek.es"; et: "ek.et"; eu: "ek.eu"; ev: "ek.ev"; ew: "ek.ew"; ex: "ek.ex"; ey: "ek.ey"; ez: "ek.ez"; fa: "ek.fa"; fb: "ek.fb"; fc: "ek.fc"; fd: "ek.fd"; fe: "ek.fe"; ff: "ek.ff"; fg: "ek.fg"; fh: "ek.fh"; fi: "ek.fi"; fj: "ek.fj"; fk: "ek.fk"; fl: "ek.fl"; fm: "ek.fm"; fn: "ek.fn"; fo: "ek.fo"; fp: "ek.fp"; fq: "ek.fq"; fr: "ek.fr"; fs: "ek.fs"; ft: "ek.ft"; fu: "ek.fu"; fv: "ek.fv"; fw: "ek.fw"; fx: "ek.fx"; fy: "ek.fy"; fz: "ek.fz"; ga: "ek.ga"; gb: "ek.gb"; gc: "ek.gc"; gd: "ek.gd"; ge: "ek.ge"; gf: "ek.gf"; gg: "ek.gg"; gh: "ek.gh"; gi: "ek.gi"; gj: "ek.gj"; gk: "ek.gk"; gl: "ek.gl"; gm: "ek.gm"; gn: "ek.gn"; go: "ek.go"; gp: "ek.gp"; gq: "ek.gq"; gr: "ek.gr"; gs: "ek.gs"; gt: "ek.gt"; gu: "ek.gu"; gv: "ek.gv"; gw: "ek.gw"; gx: "ek.gx"; gy: "ek.gy"; gz: "ek.gz"; ha: "ek.ha"; hb: "ek.hb"; hc: "ek.hc"; hd: "ek.hd"; he: "ek.he"; hf: "ek.hf"; hg: "ek.hg"; hh: "ek.hh"; hi: "ek.hi"; hj: "ek.hj"; hk: "ek.hk"; hl: "ek.hl"; hm: "ek.hm"; hn: "ek.hn"; ho: "ek.ho"; hp: "ek.hp"; hq: "ek.hq"; hr: "ek.hr"; hs: "ek.hs"; ht: "ek.ht"; hu: "ek.hu"; hv: "ek.hv"; hw: "ek.hw"; hx: "ek.hx"; hy: "ek.hy"; hz: "ek.hz"; ia: "ek.ia"; ib: "ek.ib"; ic: "ek.ic"; id: "ek.id"; ie: "ek.ie"; if: "ek.if"; ig: "ek.ig"; ih: "ek.ih"; ii: "ek.ii"; ij: "ek.ij"; ik: "ek.ik"; il: "ek.il"; im: "ek.im"; in: "ek.in"; io: "ek.io"; ip: "ek.ip"; iq: "ek.iq"; ir: "ek.ir"; is: "ek.is"; it: "ek.it"; iu: "ek.iu"; iv: "ek.iv"; iw: "ek.iw"; ix: "ek.ix"; iy: "ek.iy"; iz: "ek.iz"; ja: "ek.ja"; jb: "ek.jb"; jc: "ek.jc"; jd: "ek.jd"; je: "ek.je"; jf: "ek.jf"; jg: "ek.jg"; jh: "ek.jh"; ji: "ek.ji"; jj: "ek.jj"; jk: "ek.jk"; jl: "ek.jl"; jm: "ek.jm"; jn: "ek.jn"; jo: "ek.jo"; jp: "ek.jp"; jq: "ek.jq"; jr: "ek.jr"; js: "ek.js"; jt: "ek.jt"; ju: "ek.ju"; jv: "ek.jv"; jw: "ek.jw"; jx: "ek.jx"; jy: "ek.jy"; jz: "ek.jz"; ka: "ek.ka"; kb: "ek.kb"; kc: "ek.kc"; kd: "ek.kd"; ke: "ek.ke"; kf: "ek.kf"; kg: "ek.kg"; kh: "ek.kh"; ki: "ek.ki"; kj: "ek.kj"; kk: "ek.kk"; kl: "ek.kl"; km: "ek.km"; kn: "ek.kn"; ko: "ek.ko"; kp: "ek.kp"; kq: "ek.kq"; kr: "ek.kr"; ks: "ek.ks"; kt: "ek.kt"; ku: "ek.ku"; kv: "ek.kv"; kw: "ek.kw"; kx: "ek.kx"; ky: "ek.ky"; kz: "ek.kz"; la: "ek.la"; lb: "ek.lb"; lc: "ek.lc"; ld: "ek.ld"; le: "ek.le"; lf: "ek.lf"; lg: "ek.lg"; lh: "ek.lh"; li: "ek.li"; lj: "ek.lj"; lk: "ek.lk"; ll: "ek.ll"; lm: "ek.lm"; ln: "ek.ln"; lo: "ek.lo"; lp: "ek.lp"; lq: "ek.lq"; lr: "ek.lr"; ls: "ek.ls"; lt: "ek.lt"; lu: "ek.lu"; lv: "ek.lv"; lw: "ek.lw"; lx: "ek.lx"; ly: "ek.ly"; lz: "ek.lz"; ma: "ek.ma"; mb: "ek.mb"; mc: "ek.mc"; md: "ek.md"; me: "ek.me"; mf: "ek.mf"; mg: "ek.mg"; mh: "ek.mh"; mi: "ek.mi"; mj: "ek.mj"; mk: "ek.mk"; ml: "ek.ml"; mm: "ek.mm"; mn: "ek.mn"; mo: "ek.mo"; mp: "ek.mp"; mq: "ek.mq"; mr: "ek.mr"; ms: "ek.ms"; mt: "ek.mt"; mu: "ek.mu"; mv: "ek.mv"; mw: "ek.mw"; mx: "ek.mx"; my: "ek.my"; mz: "ek.mz"; na: "ek.na"; nb: "ek.nb"; nc: "ek.nc"; nd: "ek.nd"; ne: "ek.ne"; nf: "ek.nf"; ng: "ek.ng"; nh: "ek.nh"; ni: "ek.ni"; nj: "ek.nj"; nk: "ek.nk"; nl: "ek.nl"; nm: "ek.nm"; nn: "ek.nn"; no: "ek.no"; np: "ek.np"; nq: "ek.nq"; nr: "ek.nr"; ns: "ek.ns"; nt: "ek.nt"; nu: "ek.nu"; nv: "ek.nv"; nw: "ek.nw"; nx: "ek.nx"; ny: "ek.ny"; nz: "ek.nz"; oa: "ek.oa"; ob: "ek.ob"; oc: "ek.oc"; od: "ek.od"; oe: "ek.oe"; of: "ek.of"; og: "ek.og"; oh: "ek.oh"; oi: "ek.oi"; oj: "ek.oj"; ok: "ek.ok"; ol: "ek.ol"; om: "ek.om"; on: "ek.on"; oo: "ek.oo"; op: "ek.op"; oq: "ek.oq"; or: "ek.or"; os: "ek.os"; ot: "ek.ot"; ou: "ek.ou"; ov: "ek.ov"; ow: "ek.ow"; ox: "ek.ox"; oy: "ek.oy"; oz: "ek.oz"; pa: "ek.pa"; pb: "ek.pb"; pc: "ek.pc"; pd: "ek.pd"; pe: "ek.pe"; pf: "ek.pf"; pg: "ek.pg"; ph: "ek.ph"; pi: "ek.pi"; pj: "ek.pj"; pk: "ek.pk"; pl: "ek.pl"; pm: "ek.pm"; pn: "ek.pn"; po: "ek.po"; pp: "ek.pp"; pq: "ek.pq"; pr: "ek.pr"; ps: "ek.ps"; pt: "ek.pt"; pu: "ek.pu"; pv: "ek.pv"; pw: "ek.pw"; px: "ek.px"; py: "ek.py"; pz: "ek.pz"; qa: "ek.qa"; qb: "ek.qb"; qc: "ek.qc"; qd: "ek.qd"; qe: "ek.qe"; qf: "ek.qf"; qg: "ek.qg"; qh: "ek.qh"; qi: "ek.qi"; qj: "ek.qj"; qk: "ek.qk"; ql: "ek.ql"; qm: "ek.qm"; qn: "ek.qn"; qo: "ek.qo"; qp: "ek.qp"; qq: "ek.qq"; qr: "ek.qr"; qs: "ek.qs"; qt: "ek.qt"; qu: "ek.qu"; qv: "ek.qv"; qw: "ek.qw"; qx: "ek.qx"; qy: "ek.qy"; qz: "ek.qz"; ra: "ek.ra"; rb: "ek.rb"; rc: "ek.rc"; rd: "ek.rd"; re: "ek.re"; rf: "ek.rf"; rg: "ek.rg"; rh: "ek.rh"; ri: "ek.ri"; rj: "ek.rj"; rk: "ek.rk"; rl: "ek.rl"; rm: "ek.rm"; rn: "ek.rn"; ro: "ek.ro"; rp: "ek.rp"; rq: "ek.rq"; rr: "ek.rr"; rs: "ek.rs"; rt: "ek.rt"; ru: "ek.ru"; rv: "ek.rv"; rw: "ek.rw"; rx: "ek.rx"; ry: "ek.ry"; rz: "ek.rz"; sa: "ek.sa"; sb: "ek.sb"; sc: "ek.sc"; sd: "ek.sd"; se: "ek.se"; sf: "ek.sf"; sg: "ek.sg"; sh: "ek.sh"; si: "ek.si"; sj: "ek.sj"; sk: "ek.sk"; sl: "ek.sl"; sm: "ek.sm"; sn: "ek.sn"; so: "ek.so"; sp: "ek.sp"; sq: "ek.sq"; sr: "ek.sr"; ss: "ek.ss"; st: "ek.st"; su: "ek.su"; sv: "ek.sv"; sw: "ek.sw"; sx: "ek.sx"; sy: "ek.sy"; sz: "ek.sz"; ta: "ek.ta"; tb: "ek.tb"; tc: "ek.tc"; td: "ek.td"; te: "ek.te"; tf: "ek.tf"; tg: "ek.tg"; th: "ek.th"; ti: "ek.ti"; tj: "ek.tj"; tk: "ek.tk"; tl: "ek.tl"; tm: "ek.tm"; tn: "ek.tn"; to: "ek.to"; tp: "ek.tp"; tq: "ek.tq"; tr: "ek.tr"; ts: "ek.ts"; tt: "ek.tt"; tu: "ek.tu"; tv: "ek.tv"; tw: "ek.tw"; tx: "ek.tx"; ty: "ek.ty"; tz: "ek.tz"; ua: "ek.ua"; ub: "ek.ub"; uc: "ek.uc"; ud: "ek.ud"; ue: "ek.ue"; uf: "ek.uf"; ug: "ek.ug"; uh: "ek.uh"; ui: "ek.ui"; uj: "ek.uj"; uk: "ek.uk"; ul: "ek.ul"; um: "ek.um"; un: "ek.un"; uo: "ek.uo"; up: "ek.up"; uq: "ek.uq"; ur: "ek.ur"; us: "ek.us"; ut: "ek.ut"; uu: "ek.uu"; uv: "ek.uv"; uw: "ek.uw"; ux: "ek.ux"; uy: "ek.uy"; uz: "ek.uz"; va: "ek.va"; vb: "ek.vb"; vc: "ek.vc"; vd: "ek.vd"; ve: "ek.ve"; vf: "ek.vf"; vg: "ek.vg"; vh: "ek.vh"; vi: "ek.vi"; vj: "ek.vj"; vk: "ek.vk"; vl: "ek.vl"; vm: "ek.vm"; vn: "ek.vn"; vo: "ek.vo"; vp: "ek.vp"; vq: "ek.vq"; vr: "ek.vr"; vs: "ek.vs"; vt: "ek.vt"; vu: "ek.vu"; vv: "ek.vv"; vw: "ek.vw"; vx: "ek.vx"; vy: "ek.vy"; vz: "ek.vz"; wa: "ek.wa"; wb: "ek.wb"; wc: "ek.wc"; wd: "ek.wd"; we: "ek.we"; wf: "ek.wf"; wg: "ek.wg"; wh: "ek.wh"; wi: "ek.wi"; wj: "ek.wj"; wk: "ek.wk"; wl: "ek.wl"; wm: "ek.wm"; wn: "ek.wn"; wo: "ek.wo"; wp: "ek.wp"; wq: "ek.wq"; wr: "ek.wr"; ws: "ek.ws"; wt: "ek.wt"; wu: "ek.wu"; wv: "ek.wv"; ww: "ek.ww"; wx: "ek.wx"; wy: "ek.wy"; wz: "ek.wz"; xa: "ek.xa"; xb: "ek.xb"; xc: "ek.xc"; xd: "ek.xd"; xe: "ek.xe"; xf: "ek.xf"; xg: "ek.xg"; xh: "ek.xh"; xi: "ek.xi"; xj: "ek.xj"; xk: "ek.xk"; xl: "ek.xl"; xm: "ek.xm"; xn: "ek.xn"; xo: "ek.xo"; xp: "ek.xp"; xq: "ek.xq"; xr: "ek.xr"; xs: "ek.xs"; xt: "ek.xt"; xu: "ek.xu"; xv: "ek.xv"; xw: "ek.xw"; xx: "ek.xx"; xy: "ek.xy"; xz: "ek.xz"; ya: "ek.ya"; yb: "ek.yb"; yc: "ek.yc"; yd: "ek.yd"; ye: "ek.ye"; yf: "ek.yf"; yg: "ek.yg"; yh: "ek.yh"; yi: "ek.yi"; yj: "ek.yj"; yk: "ek.yk"; yl: "ek.yl"; ym: "ek.ym"; yn: "ek.yn"; yo: "ek.yo"; yp: "ek.yp"; yq: "ek.yq"; yr: "ek.yr"; ys: "ek.ys"; yt: "ek.yt"; yu: "ek.yu"; yv: "ek.yv"; yw: "ek.yw"; yx: "ek.yx"; yy: "ek.yy"; yz: "ek.yz"; za: "ek.za"; zb: "ek.zb"; zc: "ek.zc"; zd: "ek.zd"; ze: "ek.ze"; zf: "ek.zf"; zg: "ek.zg"; zh: "ek.zh"; zi: "ek.zi"; zj: "ek.zj"; zk: "ek.zk"; zl: "ek.zl"; zm: "ek.zm"; zn: "ek.zn"; zo: "ek.zo"; zp: "ek.zp"; zq: "ek.zq"; zr: "ek.zr"; zs: "ek.zs"; zt: "ek.zt"; zu: "ek.zu"; zv: "ek.zv"; zw: "ek.zw"; zx: "ek.zx"; zy: "ek.zy"; zz: "ek.zz"; }; el: { aa: "el.aa"; ab: "el.ab"; ac: "el.ac"; ad: "el.ad"; ae: "el.ae"; af: "el.af"; ag: "el.ag"; ah: "el.ah"; ai: "el.ai"; aj: "el.aj"; ak: "el.ak"; al: "el.al"; am: "el.am"; an: "el.an"; ao: "el.ao"; ap: "el.ap"; aq: "el.aq"; ar: "el.ar"; as: "el.as"; at: "el.at"; au: "el.au"; av: "el.av"; aw: "el.aw"; ax: "el.ax"; ay: "el.ay"; az: "el.az"; ba: "el.ba"; bb: "el.bb"; bc: "el.bc"; bd: "el.bd"; be: "el.be"; bf: "el.bf"; bg: "el.bg"; bh: "el.bh"; bi: "el.bi"; bj: "el.bj"; bk: "el.bk"; bl: "el.bl"; bm: "el.bm"; bn: "el.bn"; bo: "el.bo"; bp: "el.bp"; bq: "el.bq"; br: "el.br"; bs: "el.bs"; bt: "el.bt"; bu: "el.bu"; bv: "el.bv"; bw: "el.bw"; bx: "el.bx"; by: "el.by"; bz: "el.bz"; ca: "el.ca"; cb: "el.cb"; cc: "el.cc"; cd: "el.cd"; ce: "el.ce"; cf: "el.cf"; cg: "el.cg"; ch: "el.ch"; ci: "el.ci"; cj: "el.cj"; ck: "el.ck"; cl: "el.cl"; cm: "el.cm"; cn: "el.cn"; co: "el.co"; cp: "el.cp"; cq: "el.cq"; cr: "el.cr"; cs: "el.cs"; ct: "el.ct"; cu: "el.cu"; cv: "el.cv"; cw: "el.cw"; cx: "el.cx"; cy: "el.cy"; cz: "el.cz"; da: "el.da"; db: "el.db"; dc: "el.dc"; dd: "el.dd"; de: "el.de"; df: "el.df"; dg: "el.dg"; dh: "el.dh"; di: "el.di"; dj: "el.dj"; dk: "el.dk"; dl: "el.dl"; dm: "el.dm"; dn: "el.dn"; do: "el.do"; dp: "el.dp"; dq: "el.dq"; dr: "el.dr"; ds: "el.ds"; dt: "el.dt"; du: "el.du"; dv: "el.dv"; dw: "el.dw"; dx: "el.dx"; dy: "el.dy"; dz: "el.dz"; ea: "el.ea"; eb: "el.eb"; ec: "el.ec"; ed: "el.ed"; ee: "el.ee"; ef: "el.ef"; eg: "el.eg"; eh: "el.eh"; ei: "el.ei"; ej: "el.ej"; ek: "el.ek"; el: "el.el"; em: "el.em"; en: "el.en"; eo: "el.eo"; ep: "el.ep"; eq: "el.eq"; er: "el.er"; es: "el.es"; et: "el.et"; eu: "el.eu"; ev: "el.ev"; ew: "el.ew"; ex: "el.ex"; ey: "el.ey"; ez: "el.ez"; fa: "el.fa"; fb: "el.fb"; fc: "el.fc"; fd: "el.fd"; fe: "el.fe"; ff: "el.ff"; fg: "el.fg"; fh: "el.fh"; fi: "el.fi"; fj: "el.fj"; fk: "el.fk"; fl: "el.fl"; fm: "el.fm"; fn: "el.fn"; fo: "el.fo"; fp: "el.fp"; fq: "el.fq"; fr: "el.fr"; fs: "el.fs"; ft: "el.ft"; fu: "el.fu"; fv: "el.fv"; fw: "el.fw"; fx: "el.fx"; fy: "el.fy"; fz: "el.fz"; ga: "el.ga"; gb: "el.gb"; gc: "el.gc"; gd: "el.gd"; ge: "el.ge"; gf: "el.gf"; gg: "el.gg"; gh: "el.gh"; gi: "el.gi"; gj: "el.gj"; gk: "el.gk"; gl: "el.gl"; gm: "el.gm"; gn: "el.gn"; go: "el.go"; gp: "el.gp"; gq: "el.gq"; gr: "el.gr"; gs: "el.gs"; gt: "el.gt"; gu: "el.gu"; gv: "el.gv"; gw: "el.gw"; gx: "el.gx"; gy: "el.gy"; gz: "el.gz"; ha: "el.ha"; hb: "el.hb"; hc: "el.hc"; hd: "el.hd"; he: "el.he"; hf: "el.hf"; hg: "el.hg"; hh: "el.hh"; hi: "el.hi"; hj: "el.hj"; hk: "el.hk"; hl: "el.hl"; hm: "el.hm"; hn: "el.hn"; ho: "el.ho"; hp: "el.hp"; hq: "el.hq"; hr: "el.hr"; hs: "el.hs"; ht: "el.ht"; hu: "el.hu"; hv: "el.hv"; hw: "el.hw"; hx: "el.hx"; hy: "el.hy"; hz: "el.hz"; ia: "el.ia"; ib: "el.ib"; ic: "el.ic"; id: "el.id"; ie: "el.ie"; if: "el.if"; ig: "el.ig"; ih: "el.ih"; ii: "el.ii"; ij: "el.ij"; ik: "el.ik"; il: "el.il"; im: "el.im"; in: "el.in"; io: "el.io"; ip: "el.ip"; iq: "el.iq"; ir: "el.ir"; is: "el.is"; it: "el.it"; iu: "el.iu"; iv: "el.iv"; iw: "el.iw"; ix: "el.ix"; iy: "el.iy"; iz: "el.iz"; ja: "el.ja"; jb: "el.jb"; jc: "el.jc"; jd: "el.jd"; je: "el.je"; jf: "el.jf"; jg: "el.jg"; jh: "el.jh"; ji: "el.ji"; jj: "el.jj"; jk: "el.jk"; jl: "el.jl"; jm: "el.jm"; jn: "el.jn"; jo: "el.jo"; jp: "el.jp"; jq: "el.jq"; jr: "el.jr"; js: "el.js"; jt: "el.jt"; ju: "el.ju"; jv: "el.jv"; jw: "el.jw"; jx: "el.jx"; jy: "el.jy"; jz: "el.jz"; ka: "el.ka"; kb: "el.kb"; kc: "el.kc"; kd: "el.kd"; ke: "el.ke"; kf: "el.kf"; kg: "el.kg"; kh: "el.kh"; ki: "el.ki"; kj: "el.kj"; kk: "el.kk"; kl: "el.kl"; km: "el.km"; kn: "el.kn"; ko: "el.ko"; kp: "el.kp"; kq: "el.kq"; kr: "el.kr"; ks: "el.ks"; kt: "el.kt"; ku: "el.ku"; kv: "el.kv"; kw: "el.kw"; kx: "el.kx"; ky: "el.ky"; kz: "el.kz"; la: "el.la"; lb: "el.lb"; lc: "el.lc"; ld: "el.ld"; le: "el.le"; lf: "el.lf"; lg: "el.lg"; lh: "el.lh"; li: "el.li"; lj: "el.lj"; lk: "el.lk"; ll: "el.ll"; lm: "el.lm"; ln: "el.ln"; lo: "el.lo"; lp: "el.lp"; lq: "el.lq"; lr: "el.lr"; ls: "el.ls"; lt: "el.lt"; lu: "el.lu"; lv: "el.lv"; lw: "el.lw"; lx: "el.lx"; ly: "el.ly"; lz: "el.lz"; ma: "el.ma"; mb: "el.mb"; mc: "el.mc"; md: "el.md"; me: "el.me"; mf: "el.mf"; mg: "el.mg"; mh: "el.mh"; mi: "el.mi"; mj: "el.mj"; mk: "el.mk"; ml: "el.ml"; mm: "el.mm"; mn: "el.mn"; mo: "el.mo"; mp: "el.mp"; mq: "el.mq"; mr: "el.mr"; ms: "el.ms"; mt: "el.mt"; mu: "el.mu"; mv: "el.mv"; mw: "el.mw"; mx: "el.mx"; my: "el.my"; mz: "el.mz"; na: "el.na"; nb: "el.nb"; nc: "el.nc"; nd: "el.nd"; ne: "el.ne"; nf: "el.nf"; ng: "el.ng"; nh: "el.nh"; ni: "el.ni"; nj: "el.nj"; nk: "el.nk"; nl: "el.nl"; nm: "el.nm"; nn: "el.nn"; no: "el.no"; np: "el.np"; nq: "el.nq"; nr: "el.nr"; ns: "el.ns"; nt: "el.nt"; nu: "el.nu"; nv: "el.nv"; nw: "el.nw"; nx: "el.nx"; ny: "el.ny"; nz: "el.nz"; oa: "el.oa"; ob: "el.ob"; oc: "el.oc"; od: "el.od"; oe: "el.oe"; of: "el.of"; og: "el.og"; oh: "el.oh"; oi: "el.oi"; oj: "el.oj"; ok: "el.ok"; ol: "el.ol"; om: "el.om"; on: "el.on"; oo: "el.oo"; op: "el.op"; oq: "el.oq"; or: "el.or"; os: "el.os"; ot: "el.ot"; ou: "el.ou"; ov: "el.ov"; ow: "el.ow"; ox: "el.ox"; oy: "el.oy"; oz: "el.oz"; pa: "el.pa"; pb: "el.pb"; pc: "el.pc"; pd: "el.pd"; pe: "el.pe"; pf: "el.pf"; pg: "el.pg"; ph: "el.ph"; pi: "el.pi"; pj: "el.pj"; pk: "el.pk"; pl: "el.pl"; pm: "el.pm"; pn: "el.pn"; po: "el.po"; pp: "el.pp"; pq: "el.pq"; pr: "el.pr"; ps: "el.ps"; pt: "el.pt"; pu: "el.pu"; pv: "el.pv"; pw: "el.pw"; px: "el.px"; py: "el.py"; pz: "el.pz"; qa: "el.qa"; qb: "el.qb"; qc: "el.qc"; qd: "el.qd"; qe: "el.qe"; qf: "el.qf"; qg: "el.qg"; qh: "el.qh"; qi: "el.qi"; qj: "el.qj"; qk: "el.qk"; ql: "el.ql"; qm: "el.qm"; qn: "el.qn"; qo: "el.qo"; qp: "el.qp"; qq: "el.qq"; qr: "el.qr"; qs: "el.qs"; qt: "el.qt"; qu: "el.qu"; qv: "el.qv"; qw: "el.qw"; qx: "el.qx"; qy: "el.qy"; qz: "el.qz"; ra: "el.ra"; rb: "el.rb"; rc: "el.rc"; rd: "el.rd"; re: "el.re"; rf: "el.rf"; rg: "el.rg"; rh: "el.rh"; ri: "el.ri"; rj: "el.rj"; rk: "el.rk"; rl: "el.rl"; rm: "el.rm"; rn: "el.rn"; ro: "el.ro"; rp: "el.rp"; rq: "el.rq"; rr: "el.rr"; rs: "el.rs"; rt: "el.rt"; ru: "el.ru"; rv: "el.rv"; rw: "el.rw"; rx: "el.rx"; ry: "el.ry"; rz: "el.rz"; sa: "el.sa"; sb: "el.sb"; sc: "el.sc"; sd: "el.sd"; se: "el.se"; sf: "el.sf"; sg: "el.sg"; sh: "el.sh"; si: "el.si"; sj: "el.sj"; sk: "el.sk"; sl: "el.sl"; sm: "el.sm"; sn: "el.sn"; so: "el.so"; sp: "el.sp"; sq: "el.sq"; sr: "el.sr"; ss: "el.ss"; st: "el.st"; su: "el.su"; sv: "el.sv"; sw: "el.sw"; sx: "el.sx"; sy: "el.sy"; sz: "el.sz"; ta: "el.ta"; tb: "el.tb"; tc: "el.tc"; td: "el.td"; te: "el.te"; tf: "el.tf"; tg: "el.tg"; th: "el.th"; ti: "el.ti"; tj: "el.tj"; tk: "el.tk"; tl: "el.tl"; tm: "el.tm"; tn: "el.tn"; to: "el.to"; tp: "el.tp"; tq: "el.tq"; tr: "el.tr"; ts: "el.ts"; tt: "el.tt"; tu: "el.tu"; tv: "el.tv"; tw: "el.tw"; tx: "el.tx"; ty: "el.ty"; tz: "el.tz"; ua: "el.ua"; ub: "el.ub"; uc: "el.uc"; ud: "el.ud"; ue: "el.ue"; uf: "el.uf"; ug: "el.ug"; uh: "el.uh"; ui: "el.ui"; uj: "el.uj"; uk: "el.uk"; ul: "el.ul"; um: "el.um"; un: "el.un"; uo: "el.uo"; up: "el.up"; uq: "el.uq"; ur: "el.ur"; us: "el.us"; ut: "el.ut"; uu: "el.uu"; uv: "el.uv"; uw: "el.uw"; ux: "el.ux"; uy: "el.uy"; uz: "el.uz"; va: "el.va"; vb: "el.vb"; vc: "el.vc"; vd: "el.vd"; ve: "el.ve"; vf: "el.vf"; vg: "el.vg"; vh: "el.vh"; vi: "el.vi"; vj: "el.vj"; vk: "el.vk"; vl: "el.vl"; vm: "el.vm"; vn: "el.vn"; vo: "el.vo"; vp: "el.vp"; vq: "el.vq"; vr: "el.vr"; vs: "el.vs"; vt: "el.vt"; vu: "el.vu"; vv: "el.vv"; vw: "el.vw"; vx: "el.vx"; vy: "el.vy"; vz: "el.vz"; wa: "el.wa"; wb: "el.wb"; wc: "el.wc"; wd: "el.wd"; we: "el.we"; wf: "el.wf"; wg: "el.wg"; wh: "el.wh"; wi: "el.wi"; wj: "el.wj"; wk: "el.wk"; wl: "el.wl"; wm: "el.wm"; wn: "el.wn"; wo: "el.wo"; wp: "el.wp"; wq: "el.wq"; wr: "el.wr"; ws: "el.ws"; wt: "el.wt"; wu: "el.wu"; wv: "el.wv"; ww: "el.ww"; wx: "el.wx"; wy: "el.wy"; wz: "el.wz"; xa: "el.xa"; xb: "el.xb"; xc: "el.xc"; xd: "el.xd"; xe: "el.xe"; xf: "el.xf"; xg: "el.xg"; xh: "el.xh"; xi: "el.xi"; xj: "el.xj"; xk: "el.xk"; xl: "el.xl"; xm: "el.xm"; xn: "el.xn"; xo: "el.xo"; xp: "el.xp"; xq: "el.xq"; xr: "el.xr"; xs: "el.xs"; xt: "el.xt"; xu: "el.xu"; xv: "el.xv"; xw: "el.xw"; xx: "el.xx"; xy: "el.xy"; xz: "el.xz"; ya: "el.ya"; yb: "el.yb"; yc: "el.yc"; yd: "el.yd"; ye: "el.ye"; yf: "el.yf"; yg: "el.yg"; yh: "el.yh"; yi: "el.yi"; yj: "el.yj"; yk: "el.yk"; yl: "el.yl"; ym: "el.ym"; yn: "el.yn"; yo: "el.yo"; yp: "el.yp"; yq: "el.yq"; yr: "el.yr"; ys: "el.ys"; yt: "el.yt"; yu: "el.yu"; yv: "el.yv"; yw: "el.yw"; yx: "el.yx"; yy: "el.yy"; yz: "el.yz"; za: "el.za"; zb: "el.zb"; zc: "el.zc"; zd: "el.zd"; ze: "el.ze"; zf: "el.zf"; zg: "el.zg"; zh: "el.zh"; zi: "el.zi"; zj: "el.zj"; zk: "el.zk"; zl: "el.zl"; zm: "el.zm"; zn: "el.zn"; zo: "el.zo"; zp: "el.zp"; zq: "el.zq"; zr: "el.zr"; zs: "el.zs"; zt: "el.zt"; zu: "el.zu"; zv: "el.zv"; zw: "el.zw"; zx: "el.zx"; zy: "el.zy"; zz: "el.zz"; }; em: { aa: "em.aa"; ab: "em.ab"; ac: "em.ac"; ad: "em.ad"; ae: "em.ae"; af: "em.af"; ag: "em.ag"; ah: "em.ah"; ai: "em.ai"; aj: "em.aj"; ak: "em.ak"; al: "em.al"; am: "em.am"; an: "em.an"; ao: "em.ao"; ap: "em.ap"; aq: "em.aq"; ar: "em.ar"; as: "em.as"; at: "em.at"; au: "em.au"; av: "em.av"; aw: "em.aw"; ax: "em.ax"; ay: "em.ay"; az: "em.az"; ba: "em.ba"; bb: "em.bb"; bc: "em.bc"; bd: "em.bd"; be: "em.be"; bf: "em.bf"; bg: "em.bg"; bh: "em.bh"; bi: "em.bi"; bj: "em.bj"; bk: "em.bk"; bl: "em.bl"; bm: "em.bm"; bn: "em.bn"; bo: "em.bo"; bp: "em.bp"; bq: "em.bq"; br: "em.br"; bs: "em.bs"; bt: "em.bt"; bu: "em.bu"; bv: "em.bv"; bw: "em.bw"; bx: "em.bx"; by: "em.by"; bz: "em.bz"; ca: "em.ca"; cb: "em.cb"; cc: "em.cc"; cd: "em.cd"; ce: "em.ce"; cf: "em.cf"; cg: "em.cg"; ch: "em.ch"; ci: "em.ci"; cj: "em.cj"; ck: "em.ck"; cl: "em.cl"; cm: "em.cm"; cn: "em.cn"; co: "em.co"; cp: "em.cp"; cq: "em.cq"; cr: "em.cr"; cs: "em.cs"; ct: "em.ct"; cu: "em.cu"; cv: "em.cv"; cw: "em.cw"; cx: "em.cx"; cy: "em.cy"; cz: "em.cz"; da: "em.da"; db: "em.db"; dc: "em.dc"; dd: "em.dd"; de: "em.de"; df: "em.df"; dg: "em.dg"; dh: "em.dh"; di: "em.di"; dj: "em.dj"; dk: "em.dk"; dl: "em.dl"; dm: "em.dm"; dn: "em.dn"; do: "em.do"; dp: "em.dp"; dq: "em.dq"; dr: "em.dr"; ds: "em.ds"; dt: "em.dt"; du: "em.du"; dv: "em.dv"; dw: "em.dw"; dx: "em.dx"; dy: "em.dy"; dz: "em.dz"; ea: "em.ea"; eb: "em.eb"; ec: "em.ec"; ed: "em.ed"; ee: "em.ee"; ef: "em.ef"; eg: "em.eg"; eh: "em.eh"; ei: "em.ei"; ej: "em.ej"; ek: "em.ek"; el: "em.el"; em: "em.em"; en: "em.en"; eo: "em.eo"; ep: "em.ep"; eq: "em.eq"; er: "em.er"; es: "em.es"; et: "em.et"; eu: "em.eu"; ev: "em.ev"; ew: "em.ew"; ex: "em.ex"; ey: "em.ey"; ez: "em.ez"; fa: "em.fa"; fb: "em.fb"; fc: "em.fc"; fd: "em.fd"; fe: "em.fe"; ff: "em.ff"; fg: "em.fg"; fh: "em.fh"; fi: "em.fi"; fj: "em.fj"; fk: "em.fk"; fl: "em.fl"; fm: "em.fm"; fn: "em.fn"; fo: "em.fo"; fp: "em.fp"; fq: "em.fq"; fr: "em.fr"; fs: "em.fs"; ft: "em.ft"; fu: "em.fu"; fv: "em.fv"; fw: "em.fw"; fx: "em.fx"; fy: "em.fy"; fz: "em.fz"; ga: "em.ga"; gb: "em.gb"; gc: "em.gc"; gd: "em.gd"; ge: "em.ge"; gf: "em.gf"; gg: "em.gg"; gh: "em.gh"; gi: "em.gi"; gj: "em.gj"; gk: "em.gk"; gl: "em.gl"; gm: "em.gm"; gn: "em.gn"; go: "em.go"; gp: "em.gp"; gq: "em.gq"; gr: "em.gr"; gs: "em.gs"; gt: "em.gt"; gu: "em.gu"; gv: "em.gv"; gw: "em.gw"; gx: "em.gx"; gy: "em.gy"; gz: "em.gz"; ha: "em.ha"; hb: "em.hb"; hc: "em.hc"; hd: "em.hd"; he: "em.he"; hf: "em.hf"; hg: "em.hg"; hh: "em.hh"; hi: "em.hi"; hj: "em.hj"; hk: "em.hk"; hl: "em.hl"; hm: "em.hm"; hn: "em.hn"; ho: "em.ho"; hp: "em.hp"; hq: "em.hq"; hr: "em.hr"; hs: "em.hs"; ht: "em.ht"; hu: "em.hu"; hv: "em.hv"; hw: "em.hw"; hx: "em.hx"; hy: "em.hy"; hz: "em.hz"; ia: "em.ia"; ib: "em.ib"; ic: "em.ic"; id: "em.id"; ie: "em.ie"; if: "em.if"; ig: "em.ig"; ih: "em.ih"; ii: "em.ii"; ij: "em.ij"; ik: "em.ik"; il: "em.il"; im: "em.im"; in: "em.in"; io: "em.io"; ip: "em.ip"; iq: "em.iq"; ir: "em.ir"; is: "em.is"; it: "em.it"; iu: "em.iu"; iv: "em.iv"; iw: "em.iw"; ix: "em.ix"; iy: "em.iy"; iz: "em.iz"; ja: "em.ja"; jb: "em.jb"; jc: "em.jc"; jd: "em.jd"; je: "em.je"; jf: "em.jf"; jg: "em.jg"; jh: "em.jh"; ji: "em.ji"; jj: "em.jj"; jk: "em.jk"; jl: "em.jl"; jm: "em.jm"; jn: "em.jn"; jo: "em.jo"; jp: "em.jp"; jq: "em.jq"; jr: "em.jr"; js: "em.js"; jt: "em.jt"; ju: "em.ju"; jv: "em.jv"; jw: "em.jw"; jx: "em.jx"; jy: "em.jy"; jz: "em.jz"; ka: "em.ka"; kb: "em.kb"; kc: "em.kc"; kd: "em.kd"; ke: "em.ke"; kf: "em.kf"; kg: "em.kg"; kh: "em.kh"; ki: "em.ki"; kj: "em.kj"; kk: "em.kk"; kl: "em.kl"; km: "em.km"; kn: "em.kn"; ko: "em.ko"; kp: "em.kp"; kq: "em.kq"; kr: "em.kr"; ks: "em.ks"; kt: "em.kt"; ku: "em.ku"; kv: "em.kv"; kw: "em.kw"; kx: "em.kx"; ky: "em.ky"; kz: "em.kz"; la: "em.la"; lb: "em.lb"; lc: "em.lc"; ld: "em.ld"; le: "em.le"; lf: "em.lf"; lg: "em.lg"; lh: "em.lh"; li: "em.li"; lj: "em.lj"; lk: "em.lk"; ll: "em.ll"; lm: "em.lm"; ln: "em.ln"; lo: "em.lo"; lp: "em.lp"; lq: "em.lq"; lr: "em.lr"; ls: "em.ls"; lt: "em.lt"; lu: "em.lu"; lv: "em.lv"; lw: "em.lw"; lx: "em.lx"; ly: "em.ly"; lz: "em.lz"; ma: "em.ma"; mb: "em.mb"; mc: "em.mc"; md: "em.md"; me: "em.me"; mf: "em.mf"; mg: "em.mg"; mh: "em.mh"; mi: "em.mi"; mj: "em.mj"; mk: "em.mk"; ml: "em.ml"; mm: "em.mm"; mn: "em.mn"; mo: "em.mo"; mp: "em.mp"; mq: "em.mq"; mr: "em.mr"; ms: "em.ms"; mt: "em.mt"; mu: "em.mu"; mv: "em.mv"; mw: "em.mw"; mx: "em.mx"; my: "em.my"; mz: "em.mz"; na: "em.na"; nb: "em.nb"; nc: "em.nc"; nd: "em.nd"; ne: "em.ne"; nf: "em.nf"; ng: "em.ng"; nh: "em.nh"; ni: "em.ni"; nj: "em.nj"; nk: "em.nk"; nl: "em.nl"; nm: "em.nm"; nn: "em.nn"; no: "em.no"; np: "em.np"; nq: "em.nq"; nr: "em.nr"; ns: "em.ns"; nt: "em.nt"; nu: "em.nu"; nv: "em.nv"; nw: "em.nw"; nx: "em.nx"; ny: "em.ny"; nz: "em.nz"; oa: "em.oa"; ob: "em.ob"; oc: "em.oc"; od: "em.od"; oe: "em.oe"; of: "em.of"; og: "em.og"; oh: "em.oh"; oi: "em.oi"; oj: "em.oj"; ok: "em.ok"; ol: "em.ol"; om: "em.om"; on: "em.on"; oo: "em.oo"; op: "em.op"; oq: "em.oq"; or: "em.or"; os: "em.os"; ot: "em.ot"; ou: "em.ou"; ov: "em.ov"; ow: "em.ow"; ox: "em.ox"; oy: "em.oy"; oz: "em.oz"; pa: "em.pa"; pb: "em.pb"; pc: "em.pc"; pd: "em.pd"; pe: "em.pe"; pf: "em.pf"; pg: "em.pg"; ph: "em.ph"; pi: "em.pi"; pj: "em.pj"; pk: "em.pk"; pl: "em.pl"; pm: "em.pm"; pn: "em.pn"; po: "em.po"; pp: "em.pp"; pq: "em.pq"; pr: "em.pr"; ps: "em.ps"; pt: "em.pt"; pu: "em.pu"; pv: "em.pv"; pw: "em.pw"; px: "em.px"; py: "em.py"; pz: "em.pz"; qa: "em.qa"; qb: "em.qb"; qc: "em.qc"; qd: "em.qd"; qe: "em.qe"; qf: "em.qf"; qg: "em.qg"; qh: "em.qh"; qi: "em.qi"; qj: "em.qj"; qk: "em.qk"; ql: "em.ql"; qm: "em.qm"; qn: "em.qn"; qo: "em.qo"; qp: "em.qp"; qq: "em.qq"; qr: "em.qr"; qs: "em.qs"; qt: "em.qt"; qu: "em.qu"; qv: "em.qv"; qw: "em.qw"; qx: "em.qx"; qy: "em.qy"; qz: "em.qz"; ra: "em.ra"; rb: "em.rb"; rc: "em.rc"; rd: "em.rd"; re: "em.re"; rf: "em.rf"; rg: "em.rg"; rh: "em.rh"; ri: "em.ri"; rj: "em.rj"; rk: "em.rk"; rl: "em.rl"; rm: "em.rm"; rn: "em.rn"; ro: "em.ro"; rp: "em.rp"; rq: "em.rq"; rr: "em.rr"; rs: "em.rs"; rt: "em.rt"; ru: "em.ru"; rv: "em.rv"; rw: "em.rw"; rx: "em.rx"; ry: "em.ry"; rz: "em.rz"; sa: "em.sa"; sb: "em.sb"; sc: "em.sc"; sd: "em.sd"; se: "em.se"; sf: "em.sf"; sg: "em.sg"; sh: "em.sh"; si: "em.si"; sj: "em.sj"; sk: "em.sk"; sl: "em.sl"; sm: "em.sm"; sn: "em.sn"; so: "em.so"; sp: "em.sp"; sq: "em.sq"; sr: "em.sr"; ss: "em.ss"; st: "em.st"; su: "em.su"; sv: "em.sv"; sw: "em.sw"; sx: "em.sx"; sy: "em.sy"; sz: "em.sz"; ta: "em.ta"; tb: "em.tb"; tc: "em.tc"; td: "em.td"; te: "em.te"; tf: "em.tf"; tg: "em.tg"; th: "em.th"; ti: "em.ti"; tj: "em.tj"; tk: "em.tk"; tl: "em.tl"; tm: "em.tm"; tn: "em.tn"; to: "em.to"; tp: "em.tp"; tq: "em.tq"; tr: "em.tr"; ts: "em.ts"; tt: "em.tt"; tu: "em.tu"; tv: "em.tv"; tw: "em.tw"; tx: "em.tx"; ty: "em.ty"; tz: "em.tz"; ua: "em.ua"; ub: "em.ub"; uc: "em.uc"; ud: "em.ud"; ue: "em.ue"; uf: "em.uf"; ug: "em.ug"; uh: "em.uh"; ui: "em.ui"; uj: "em.uj"; uk: "em.uk"; ul: "em.ul"; um: "em.um"; un: "em.un"; uo: "em.uo"; up: "em.up"; uq: "em.uq"; ur: "em.ur"; us: "em.us"; ut: "em.ut"; uu: "em.uu"; uv: "em.uv"; uw: "em.uw"; ux: "em.ux"; uy: "em.uy"; uz: "em.uz"; va: "em.va"; vb: "em.vb"; vc: "em.vc"; vd: "em.vd"; ve: "em.ve"; vf: "em.vf"; vg: "em.vg"; vh: "em.vh"; vi: "em.vi"; vj: "em.vj"; vk: "em.vk"; vl: "em.vl"; vm: "em.vm"; vn: "em.vn"; vo: "em.vo"; vp: "em.vp"; vq: "em.vq"; vr: "em.vr"; vs: "em.vs"; vt: "em.vt"; vu: "em.vu"; vv: "em.vv"; vw: "em.vw"; vx: "em.vx"; vy: "em.vy"; vz: "em.vz"; wa: "em.wa"; wb: "em.wb"; wc: "em.wc"; wd: "em.wd"; we: "em.we"; wf: "em.wf"; wg: "em.wg"; wh: "em.wh"; wi: "em.wi"; wj: "em.wj"; wk: "em.wk"; wl: "em.wl"; wm: "em.wm"; wn: "em.wn"; wo: "em.wo"; wp: "em.wp"; wq: "em.wq"; wr: "em.wr"; ws: "em.ws"; wt: "em.wt"; wu: "em.wu"; wv: "em.wv"; ww: "em.ww"; wx: "em.wx"; wy: "em.wy"; wz: "em.wz"; xa: "em.xa"; xb: "em.xb"; xc: "em.xc"; xd: "em.xd"; xe: "em.xe"; xf: "em.xf"; xg: "em.xg"; xh: "em.xh"; xi: "em.xi"; xj: "em.xj"; xk: "em.xk"; xl: "em.xl"; xm: "em.xm"; xn: "em.xn"; xo: "em.xo"; xp: "em.xp"; xq: "em.xq"; xr: "em.xr"; xs: "em.xs"; xt: "em.xt"; xu: "em.xu"; xv: "em.xv"; xw: "em.xw"; xx: "em.xx"; xy: "em.xy"; xz: "em.xz"; ya: "em.ya"; yb: "em.yb"; yc: "em.yc"; yd: "em.yd"; ye: "em.ye"; yf: "em.yf"; yg: "em.yg"; yh: "em.yh"; yi: "em.yi"; yj: "em.yj"; yk: "em.yk"; yl: "em.yl"; ym: "em.ym"; yn: "em.yn"; yo: "em.yo"; yp: "em.yp"; yq: "em.yq"; yr: "em.yr"; ys: "em.ys"; yt: "em.yt"; yu: "em.yu"; yv: "em.yv"; yw: "em.yw"; yx: "em.yx"; yy: "em.yy"; yz: "em.yz"; za: "em.za"; zb: "em.zb"; zc: "em.zc"; zd: "em.zd"; ze: "em.ze"; zf: "em.zf"; zg: "em.zg"; zh: "em.zh"; zi: "em.zi"; zj: "em.zj"; zk: "em.zk"; zl: "em.zl"; zm: "em.zm"; zn: "em.zn"; zo: "em.zo"; zp: "em.zp"; zq: "em.zq"; zr: "em.zr"; zs: "em.zs"; zt: "em.zt"; zu: "em.zu"; zv: "em.zv"; zw: "em.zw"; zx: "em.zx"; zy: "em.zy"; zz: "em.zz"; }; en: { aa: "en.aa"; ab: "en.ab"; ac: "en.ac"; ad: "en.ad"; ae: "en.ae"; af: "en.af"; ag: "en.ag"; ah: "en.ah"; ai: "en.ai"; aj: "en.aj"; ak: "en.ak"; al: "en.al"; am: "en.am"; an: "en.an"; ao: "en.ao"; ap: "en.ap"; aq: "en.aq"; ar: "en.ar"; as: "en.as"; at: "en.at"; au: "en.au"; av: "en.av"; aw: "en.aw"; ax: "en.ax"; ay: "en.ay"; az: "en.az"; ba: "en.ba"; bb: "en.bb"; bc: "en.bc"; bd: "en.bd"; be: "en.be"; bf: "en.bf"; bg: "en.bg"; bh: "en.bh"; bi: "en.bi"; bj: "en.bj"; bk: "en.bk"; bl: "en.bl"; bm: "en.bm"; bn: "en.bn"; bo: "en.bo"; bp: "en.bp"; bq: "en.bq"; br: "en.br"; bs: "en.bs"; bt: "en.bt"; bu: "en.bu"; bv: "en.bv"; bw: "en.bw"; bx: "en.bx"; by: "en.by"; bz: "en.bz"; ca: "en.ca"; cb: "en.cb"; cc: "en.cc"; cd: "en.cd"; ce: "en.ce"; cf: "en.cf"; cg: "en.cg"; ch: "en.ch"; ci: "en.ci"; cj: "en.cj"; ck: "en.ck"; cl: "en.cl"; cm: "en.cm"; cn: "en.cn"; co: "en.co"; cp: "en.cp"; cq: "en.cq"; cr: "en.cr"; cs: "en.cs"; ct: "en.ct"; cu: "en.cu"; cv: "en.cv"; cw: "en.cw"; cx: "en.cx"; cy: "en.cy"; cz: "en.cz"; da: "en.da"; db: "en.db"; dc: "en.dc"; dd: "en.dd"; de: "en.de"; df: "en.df"; dg: "en.dg"; dh: "en.dh"; di: "en.di"; dj: "en.dj"; dk: "en.dk"; dl: "en.dl"; dm: "en.dm"; dn: "en.dn"; do: "en.do"; dp: "en.dp"; dq: "en.dq"; dr: "en.dr"; ds: "en.ds"; dt: "en.dt"; du: "en.du"; dv: "en.dv"; dw: "en.dw"; dx: "en.dx"; dy: "en.dy"; dz: "en.dz"; ea: "en.ea"; eb: "en.eb"; ec: "en.ec"; ed: "en.ed"; ee: "en.ee"; ef: "en.ef"; eg: "en.eg"; eh: "en.eh"; ei: "en.ei"; ej: "en.ej"; ek: "en.ek"; el: "en.el"; em: "en.em"; en: "en.en"; eo: "en.eo"; ep: "en.ep"; eq: "en.eq"; er: "en.er"; es: "en.es"; et: "en.et"; eu: "en.eu"; ev: "en.ev"; ew: "en.ew"; ex: "en.ex"; ey: "en.ey"; ez: "en.ez"; fa: "en.fa"; fb: "en.fb"; fc: "en.fc"; fd: "en.fd"; fe: "en.fe"; ff: "en.ff"; fg: "en.fg"; fh: "en.fh"; fi: "en.fi"; fj: "en.fj"; fk: "en.fk"; fl: "en.fl"; fm: "en.fm"; fn: "en.fn"; fo: "en.fo"; fp: "en.fp"; fq: "en.fq"; fr: "en.fr"; fs: "en.fs"; ft: "en.ft"; fu: "en.fu"; fv: "en.fv"; fw: "en.fw"; fx: "en.fx"; fy: "en.fy"; fz: "en.fz"; ga: "en.ga"; gb: "en.gb"; gc: "en.gc"; gd: "en.gd"; ge: "en.ge"; gf: "en.gf"; gg: "en.gg"; gh: "en.gh"; gi: "en.gi"; gj: "en.gj"; gk: "en.gk"; gl: "en.gl"; gm: "en.gm"; gn: "en.gn"; go: "en.go"; gp: "en.gp"; gq: "en.gq"; gr: "en.gr"; gs: "en.gs"; gt: "en.gt"; gu: "en.gu"; gv: "en.gv"; gw: "en.gw"; gx: "en.gx"; gy: "en.gy"; gz: "en.gz"; ha: "en.ha"; hb: "en.hb"; hc: "en.hc"; hd: "en.hd"; he: "en.he"; hf: "en.hf"; hg: "en.hg"; hh: "en.hh"; hi: "en.hi"; hj: "en.hj"; hk: "en.hk"; hl: "en.hl"; hm: "en.hm"; hn: "en.hn"; ho: "en.ho"; hp: "en.hp"; hq: "en.hq"; hr: "en.hr"; hs: "en.hs"; ht: "en.ht"; hu: "en.hu"; hv: "en.hv"; hw: "en.hw"; hx: "en.hx"; hy: "en.hy"; hz: "en.hz"; ia: "en.ia"; ib: "en.ib"; ic: "en.ic"; id: "en.id"; ie: "en.ie"; if: "en.if"; ig: "en.ig"; ih: "en.ih"; ii: "en.ii"; ij: "en.ij"; ik: "en.ik"; il: "en.il"; im: "en.im"; in: "en.in"; io: "en.io"; ip: "en.ip"; iq: "en.iq"; ir: "en.ir"; is: "en.is"; it: "en.it"; iu: "en.iu"; iv: "en.iv"; iw: "en.iw"; ix: "en.ix"; iy: "en.iy"; iz: "en.iz"; ja: "en.ja"; jb: "en.jb"; jc: "en.jc"; jd: "en.jd"; je: "en.je"; jf: "en.jf"; jg: "en.jg"; jh: "en.jh"; ji: "en.ji"; jj: "en.jj"; jk: "en.jk"; jl: "en.jl"; jm: "en.jm"; jn: "en.jn"; jo: "en.jo"; jp: "en.jp"; jq: "en.jq"; jr: "en.jr"; js: "en.js"; jt: "en.jt"; ju: "en.ju"; jv: "en.jv"; jw: "en.jw"; jx: "en.jx"; jy: "en.jy"; jz: "en.jz"; ka: "en.ka"; kb: "en.kb"; kc: "en.kc"; kd: "en.kd"; ke: "en.ke"; kf: "en.kf"; kg: "en.kg"; kh: "en.kh"; ki: "en.ki"; kj: "en.kj"; kk: "en.kk"; kl: "en.kl"; km: "en.km"; kn: "en.kn"; ko: "en.ko"; kp: "en.kp"; kq: "en.kq"; kr: "en.kr"; ks: "en.ks"; kt: "en.kt"; ku: "en.ku"; kv: "en.kv"; kw: "en.kw"; kx: "en.kx"; ky: "en.ky"; kz: "en.kz"; la: "en.la"; lb: "en.lb"; lc: "en.lc"; ld: "en.ld"; le: "en.le"; lf: "en.lf"; lg: "en.lg"; lh: "en.lh"; li: "en.li"; lj: "en.lj"; lk: "en.lk"; ll: "en.ll"; lm: "en.lm"; ln: "en.ln"; lo: "en.lo"; lp: "en.lp"; lq: "en.lq"; lr: "en.lr"; ls: "en.ls"; lt: "en.lt"; lu: "en.lu"; lv: "en.lv"; lw: "en.lw"; lx: "en.lx"; ly: "en.ly"; lz: "en.lz"; ma: "en.ma"; mb: "en.mb"; mc: "en.mc"; md: "en.md"; me: "en.me"; mf: "en.mf"; mg: "en.mg"; mh: "en.mh"; mi: "en.mi"; mj: "en.mj"; mk: "en.mk"; ml: "en.ml"; mm: "en.mm"; mn: "en.mn"; mo: "en.mo"; mp: "en.mp"; mq: "en.mq"; mr: "en.mr"; ms: "en.ms"; mt: "en.mt"; mu: "en.mu"; mv: "en.mv"; mw: "en.mw"; mx: "en.mx"; my: "en.my"; mz: "en.mz"; na: "en.na"; nb: "en.nb"; nc: "en.nc"; nd: "en.nd"; ne: "en.ne"; nf: "en.nf"; ng: "en.ng"; nh: "en.nh"; ni: "en.ni"; nj: "en.nj"; nk: "en.nk"; nl: "en.nl"; nm: "en.nm"; nn: "en.nn"; no: "en.no"; np: "en.np"; nq: "en.nq"; nr: "en.nr"; ns: "en.ns"; nt: "en.nt"; nu: "en.nu"; nv: "en.nv"; nw: "en.nw"; nx: "en.nx"; ny: "en.ny"; nz: "en.nz"; oa: "en.oa"; ob: "en.ob"; oc: "en.oc"; od: "en.od"; oe: "en.oe"; of: "en.of"; og: "en.og"; oh: "en.oh"; oi: "en.oi"; oj: "en.oj"; ok: "en.ok"; ol: "en.ol"; om: "en.om"; on: "en.on"; oo: "en.oo"; op: "en.op"; oq: "en.oq"; or: "en.or"; os: "en.os"; ot: "en.ot"; ou: "en.ou"; ov: "en.ov"; ow: "en.ow"; ox: "en.ox"; oy: "en.oy"; oz: "en.oz"; pa: "en.pa"; pb: "en.pb"; pc: "en.pc"; pd: "en.pd"; pe: "en.pe"; pf: "en.pf"; pg: "en.pg"; ph: "en.ph"; pi: "en.pi"; pj: "en.pj"; pk: "en.pk"; pl: "en.pl"; pm: "en.pm"; pn: "en.pn"; po: "en.po"; pp: "en.pp"; pq: "en.pq"; pr: "en.pr"; ps: "en.ps"; pt: "en.pt"; pu: "en.pu"; pv: "en.pv"; pw: "en.pw"; px: "en.px"; py: "en.py"; pz: "en.pz"; qa: "en.qa"; qb: "en.qb"; qc: "en.qc"; qd: "en.qd"; qe: "en.qe"; qf: "en.qf"; qg: "en.qg"; qh: "en.qh"; qi: "en.qi"; qj: "en.qj"; qk: "en.qk"; ql: "en.ql"; qm: "en.qm"; qn: "en.qn"; qo: "en.qo"; qp: "en.qp"; qq: "en.qq"; qr: "en.qr"; qs: "en.qs"; qt: "en.qt"; qu: "en.qu"; qv: "en.qv"; qw: "en.qw"; qx: "en.qx"; qy: "en.qy"; qz: "en.qz"; ra: "en.ra"; rb: "en.rb"; rc: "en.rc"; rd: "en.rd"; re: "en.re"; rf: "en.rf"; rg: "en.rg"; rh: "en.rh"; ri: "en.ri"; rj: "en.rj"; rk: "en.rk"; rl: "en.rl"; rm: "en.rm"; rn: "en.rn"; ro: "en.ro"; rp: "en.rp"; rq: "en.rq"; rr: "en.rr"; rs: "en.rs"; rt: "en.rt"; ru: "en.ru"; rv: "en.rv"; rw: "en.rw"; rx: "en.rx"; ry: "en.ry"; rz: "en.rz"; sa: "en.sa"; sb: "en.sb"; sc: "en.sc"; sd: "en.sd"; se: "en.se"; sf: "en.sf"; sg: "en.sg"; sh: "en.sh"; si: "en.si"; sj: "en.sj"; sk: "en.sk"; sl: "en.sl"; sm: "en.sm"; sn: "en.sn"; so: "en.so"; sp: "en.sp"; sq: "en.sq"; sr: "en.sr"; ss: "en.ss"; st: "en.st"; su: "en.su"; sv: "en.sv"; sw: "en.sw"; sx: "en.sx"; sy: "en.sy"; sz: "en.sz"; ta: "en.ta"; tb: "en.tb"; tc: "en.tc"; td: "en.td"; te: "en.te"; tf: "en.tf"; tg: "en.tg"; th: "en.th"; ti: "en.ti"; tj: "en.tj"; tk: "en.tk"; tl: "en.tl"; tm: "en.tm"; tn: "en.tn"; to: "en.to"; tp: "en.tp"; tq: "en.tq"; tr: "en.tr"; ts: "en.ts"; tt: "en.tt"; tu: "en.tu"; tv: "en.tv"; tw: "en.tw"; tx: "en.tx"; ty: "en.ty"; tz: "en.tz"; ua: "en.ua"; ub: "en.ub"; uc: "en.uc"; ud: "en.ud"; ue: "en.ue"; uf: "en.uf"; ug: "en.ug"; uh: "en.uh"; ui: "en.ui"; uj: "en.uj"; uk: "en.uk"; ul: "en.ul"; um: "en.um"; un: "en.un"; uo: "en.uo"; up: "en.up"; uq: "en.uq"; ur: "en.ur"; us: "en.us"; ut: "en.ut"; uu: "en.uu"; uv: "en.uv"; uw: "en.uw"; ux: "en.ux"; uy: "en.uy"; uz: "en.uz"; va: "en.va"; vb: "en.vb"; vc: "en.vc"; vd: "en.vd"; ve: "en.ve"; vf: "en.vf"; vg: "en.vg"; vh: "en.vh"; vi: "en.vi"; vj: "en.vj"; vk: "en.vk"; vl: "en.vl"; vm: "en.vm"; vn: "en.vn"; vo: "en.vo"; vp: "en.vp"; vq: "en.vq"; vr: "en.vr"; vs: "en.vs"; vt: "en.vt"; vu: "en.vu"; vv: "en.vv"; vw: "en.vw"; vx: "en.vx"; vy: "en.vy"; vz: "en.vz"; wa: "en.wa"; wb: "en.wb"; wc: "en.wc"; wd: "en.wd"; we: "en.we"; wf: "en.wf"; wg: "en.wg"; wh: "en.wh"; wi: "en.wi"; wj: "en.wj"; wk: "en.wk"; wl: "en.wl"; wm: "en.wm"; wn: "en.wn"; wo: "en.wo"; wp: "en.wp"; wq: "en.wq"; wr: "en.wr"; ws: "en.ws"; wt: "en.wt"; wu: "en.wu"; wv: "en.wv"; ww: "en.ww"; wx: "en.wx"; wy: "en.wy"; wz: "en.wz"; xa: "en.xa"; xb: "en.xb"; xc: "en.xc"; xd: "en.xd"; xe: "en.xe"; xf: "en.xf"; xg: "en.xg"; xh: "en.xh"; xi: "en.xi"; xj: "en.xj"; xk: "en.xk"; xl: "en.xl"; xm: "en.xm"; xn: "en.xn"; xo: "en.xo"; xp: "en.xp"; xq: "en.xq"; xr: "en.xr"; xs: "en.xs"; xt: "en.xt"; xu: "en.xu"; xv: "en.xv"; xw: "en.xw"; xx: "en.xx"; xy: "en.xy"; xz: "en.xz"; ya: "en.ya"; yb: "en.yb"; yc: "en.yc"; yd: "en.yd"; ye: "en.ye"; yf: "en.yf"; yg: "en.yg"; yh: "en.yh"; yi: "en.yi"; yj: "en.yj"; yk: "en.yk"; yl: "en.yl"; ym: "en.ym"; yn: "en.yn"; yo: "en.yo"; yp: "en.yp"; yq: "en.yq"; yr: "en.yr"; ys: "en.ys"; yt: "en.yt"; yu: "en.yu"; yv: "en.yv"; yw: "en.yw"; yx: "en.yx"; yy: "en.yy"; yz: "en.yz"; za: "en.za"; zb: "en.zb"; zc: "en.zc"; zd: "en.zd"; ze: "en.ze"; zf: "en.zf"; zg: "en.zg"; zh: "en.zh"; zi: "en.zi"; zj: "en.zj"; zk: "en.zk"; zl: "en.zl"; zm: "en.zm"; zn: "en.zn"; zo: "en.zo"; zp: "en.zp"; zq: "en.zq"; zr: "en.zr"; zs: "en.zs"; zt: "en.zt"; zu: "en.zu"; zv: "en.zv"; zw: "en.zw"; zx: "en.zx"; zy: "en.zy"; zz: "en.zz"; }; eo: { aa: "eo.aa"; ab: "eo.ab"; ac: "eo.ac"; ad: "eo.ad"; ae: "eo.ae"; af: "eo.af"; ag: "eo.ag"; ah: "eo.ah"; ai: "eo.ai"; aj: "eo.aj"; ak: "eo.ak"; al: "eo.al"; am: "eo.am"; an: "eo.an"; ao: "eo.ao"; ap: "eo.ap"; aq: "eo.aq"; ar: "eo.ar"; as: "eo.as"; at: "eo.at"; au: "eo.au"; av: "eo.av"; aw: "eo.aw"; ax: "eo.ax"; ay: "eo.ay"; az: "eo.az"; ba: "eo.ba"; bb: "eo.bb"; bc: "eo.bc"; bd: "eo.bd"; be: "eo.be"; bf: "eo.bf"; bg: "eo.bg"; bh: "eo.bh"; bi: "eo.bi"; bj: "eo.bj"; bk: "eo.bk"; bl: "eo.bl"; bm: "eo.bm"; bn: "eo.bn"; bo: "eo.bo"; bp: "eo.bp"; bq: "eo.bq"; br: "eo.br"; bs: "eo.bs"; bt: "eo.bt"; bu: "eo.bu"; bv: "eo.bv"; bw: "eo.bw"; bx: "eo.bx"; by: "eo.by"; bz: "eo.bz"; ca: "eo.ca"; cb: "eo.cb"; cc: "eo.cc"; cd: "eo.cd"; ce: "eo.ce"; cf: "eo.cf"; cg: "eo.cg"; ch: "eo.ch"; ci: "eo.ci"; cj: "eo.cj"; ck: "eo.ck"; cl: "eo.cl"; cm: "eo.cm"; cn: "eo.cn"; co: "eo.co"; cp: "eo.cp"; cq: "eo.cq"; cr: "eo.cr"; cs: "eo.cs"; ct: "eo.ct"; cu: "eo.cu"; cv: "eo.cv"; cw: "eo.cw"; cx: "eo.cx"; cy: "eo.cy"; cz: "eo.cz"; da: "eo.da"; db: "eo.db"; dc: "eo.dc"; dd: "eo.dd"; de: "eo.de"; df: "eo.df"; dg: "eo.dg"; dh: "eo.dh"; di: "eo.di"; dj: "eo.dj"; dk: "eo.dk"; dl: "eo.dl"; dm: "eo.dm"; dn: "eo.dn"; do: "eo.do"; dp: "eo.dp"; dq: "eo.dq"; dr: "eo.dr"; ds: "eo.ds"; dt: "eo.dt"; du: "eo.du"; dv: "eo.dv"; dw: "eo.dw"; dx: "eo.dx"; dy: "eo.dy"; dz: "eo.dz"; ea: "eo.ea"; eb: "eo.eb"; ec: "eo.ec"; ed: "eo.ed"; ee: "eo.ee"; ef: "eo.ef"; eg: "eo.eg"; eh: "eo.eh"; ei: "eo.ei"; ej: "eo.ej"; ek: "eo.ek"; el: "eo.el"; em: "eo.em"; en: "eo.en"; eo: "eo.eo"; ep: "eo.ep"; eq: "eo.eq"; er: "eo.er"; es: "eo.es"; et: "eo.et"; eu: "eo.eu"; ev: "eo.ev"; ew: "eo.ew"; ex: "eo.ex"; ey: "eo.ey"; ez: "eo.ez"; fa: "eo.fa"; fb: "eo.fb"; fc: "eo.fc"; fd: "eo.fd"; fe: "eo.fe"; ff: "eo.ff"; fg: "eo.fg"; fh: "eo.fh"; fi: "eo.fi"; fj: "eo.fj"; fk: "eo.fk"; fl: "eo.fl"; fm: "eo.fm"; fn: "eo.fn"; fo: "eo.fo"; fp: "eo.fp"; fq: "eo.fq"; fr: "eo.fr"; fs: "eo.fs"; ft: "eo.ft"; fu: "eo.fu"; fv: "eo.fv"; fw: "eo.fw"; fx: "eo.fx"; fy: "eo.fy"; fz: "eo.fz"; ga: "eo.ga"; gb: "eo.gb"; gc: "eo.gc"; gd: "eo.gd"; ge: "eo.ge"; gf: "eo.gf"; gg: "eo.gg"; gh: "eo.gh"; gi: "eo.gi"; gj: "eo.gj"; gk: "eo.gk"; gl: "eo.gl"; gm: "eo.gm"; gn: "eo.gn"; go: "eo.go"; gp: "eo.gp"; gq: "eo.gq"; gr: "eo.gr"; gs: "eo.gs"; gt: "eo.gt"; gu: "eo.gu"; gv: "eo.gv"; gw: "eo.gw"; gx: "eo.gx"; gy: "eo.gy"; gz: "eo.gz"; ha: "eo.ha"; hb: "eo.hb"; hc: "eo.hc"; hd: "eo.hd"; he: "eo.he"; hf: "eo.hf"; hg: "eo.hg"; hh: "eo.hh"; hi: "eo.hi"; hj: "eo.hj"; hk: "eo.hk"; hl: "eo.hl"; hm: "eo.hm"; hn: "eo.hn"; ho: "eo.ho"; hp: "eo.hp"; hq: "eo.hq"; hr: "eo.hr"; hs: "eo.hs"; ht: "eo.ht"; hu: "eo.hu"; hv: "eo.hv"; hw: "eo.hw"; hx: "eo.hx"; hy: "eo.hy"; hz: "eo.hz"; ia: "eo.ia"; ib: "eo.ib"; ic: "eo.ic"; id: "eo.id"; ie: "eo.ie"; if: "eo.if"; ig: "eo.ig"; ih: "eo.ih"; ii: "eo.ii"; ij: "eo.ij"; ik: "eo.ik"; il: "eo.il"; im: "eo.im"; in: "eo.in"; io: "eo.io"; ip: "eo.ip"; iq: "eo.iq"; ir: "eo.ir"; is: "eo.is"; it: "eo.it"; iu: "eo.iu"; iv: "eo.iv"; iw: "eo.iw"; ix: "eo.ix"; iy: "eo.iy"; iz: "eo.iz"; ja: "eo.ja"; jb: "eo.jb"; jc: "eo.jc"; jd: "eo.jd"; je: "eo.je"; jf: "eo.jf"; jg: "eo.jg"; jh: "eo.jh"; ji: "eo.ji"; jj: "eo.jj"; jk: "eo.jk"; jl: "eo.jl"; jm: "eo.jm"; jn: "eo.jn"; jo: "eo.jo"; jp: "eo.jp"; jq: "eo.jq"; jr: "eo.jr"; js: "eo.js"; jt: "eo.jt"; ju: "eo.ju"; jv: "eo.jv"; jw: "eo.jw"; jx: "eo.jx"; jy: "eo.jy"; jz: "eo.jz"; ka: "eo.ka"; kb: "eo.kb"; kc: "eo.kc"; kd: "eo.kd"; ke: "eo.ke"; kf: "eo.kf"; kg: "eo.kg"; kh: "eo.kh"; ki: "eo.ki"; kj: "eo.kj"; kk: "eo.kk"; kl: "eo.kl"; km: "eo.km"; kn: "eo.kn"; ko: "eo.ko"; kp: "eo.kp"; kq: "eo.kq"; kr: "eo.kr"; ks: "eo.ks"; kt: "eo.kt"; ku: "eo.ku"; kv: "eo.kv"; kw: "eo.kw"; kx: "eo.kx"; ky: "eo.ky"; kz: "eo.kz"; la: "eo.la"; lb: "eo.lb"; lc: "eo.lc"; ld: "eo.ld"; le: "eo.le"; lf: "eo.lf"; lg: "eo.lg"; lh: "eo.lh"; li: "eo.li"; lj: "eo.lj"; lk: "eo.lk"; ll: "eo.ll"; lm: "eo.lm"; ln: "eo.ln"; lo: "eo.lo"; lp: "eo.lp"; lq: "eo.lq"; lr: "eo.lr"; ls: "eo.ls"; lt: "eo.lt"; lu: "eo.lu"; lv: "eo.lv"; lw: "eo.lw"; lx: "eo.lx"; ly: "eo.ly"; lz: "eo.lz"; ma: "eo.ma"; mb: "eo.mb"; mc: "eo.mc"; md: "eo.md"; me: "eo.me"; mf: "eo.mf"; mg: "eo.mg"; mh: "eo.mh"; mi: "eo.mi"; mj: "eo.mj"; mk: "eo.mk"; ml: "eo.ml"; mm: "eo.mm"; mn: "eo.mn"; mo: "eo.mo"; mp: "eo.mp"; mq: "eo.mq"; mr: "eo.mr"; ms: "eo.ms"; mt: "eo.mt"; mu: "eo.mu"; mv: "eo.mv"; mw: "eo.mw"; mx: "eo.mx"; my: "eo.my"; mz: "eo.mz"; na: "eo.na"; nb: "eo.nb"; nc: "eo.nc"; nd: "eo.nd"; ne: "eo.ne"; nf: "eo.nf"; ng: "eo.ng"; nh: "eo.nh"; ni: "eo.ni"; nj: "eo.nj"; nk: "eo.nk"; nl: "eo.nl"; nm: "eo.nm"; nn: "eo.nn"; no: "eo.no"; np: "eo.np"; nq: "eo.nq"; nr: "eo.nr"; ns: "eo.ns"; nt: "eo.nt"; nu: "eo.nu"; nv: "eo.nv"; nw: "eo.nw"; nx: "eo.nx"; ny: "eo.ny"; nz: "eo.nz"; oa: "eo.oa"; ob: "eo.ob"; oc: "eo.oc"; od: "eo.od"; oe: "eo.oe"; of: "eo.of"; og: "eo.og"; oh: "eo.oh"; oi: "eo.oi"; oj: "eo.oj"; ok: "eo.ok"; ol: "eo.ol"; om: "eo.om"; on: "eo.on"; oo: "eo.oo"; op: "eo.op"; oq: "eo.oq"; or: "eo.or"; os: "eo.os"; ot: "eo.ot"; ou: "eo.ou"; ov: "eo.ov"; ow: "eo.ow"; ox: "eo.ox"; oy: "eo.oy"; oz: "eo.oz"; pa: "eo.pa"; pb: "eo.pb"; pc: "eo.pc"; pd: "eo.pd"; pe: "eo.pe"; pf: "eo.pf"; pg: "eo.pg"; ph: "eo.ph"; pi: "eo.pi"; pj: "eo.pj"; pk: "eo.pk"; pl: "eo.pl"; pm: "eo.pm"; pn: "eo.pn"; po: "eo.po"; pp: "eo.pp"; pq: "eo.pq"; pr: "eo.pr"; ps: "eo.ps"; pt: "eo.pt"; pu: "eo.pu"; pv: "eo.pv"; pw: "eo.pw"; px: "eo.px"; py: "eo.py"; pz: "eo.pz"; qa: "eo.qa"; qb: "eo.qb"; qc: "eo.qc"; qd: "eo.qd"; qe: "eo.qe"; qf: "eo.qf"; qg: "eo.qg"; qh: "eo.qh"; qi: "eo.qi"; qj: "eo.qj"; qk: "eo.qk"; ql: "eo.ql"; qm: "eo.qm"; qn: "eo.qn"; qo: "eo.qo"; qp: "eo.qp"; qq: "eo.qq"; qr: "eo.qr"; qs: "eo.qs"; qt: "eo.qt"; qu: "eo.qu"; qv: "eo.qv"; qw: "eo.qw"; qx: "eo.qx"; qy: "eo.qy"; qz: "eo.qz"; ra: "eo.ra"; rb: "eo.rb"; rc: "eo.rc"; rd: "eo.rd"; re: "eo.re"; rf: "eo.rf"; rg: "eo.rg"; rh: "eo.rh"; ri: "eo.ri"; rj: "eo.rj"; rk: "eo.rk"; rl: "eo.rl"; rm: "eo.rm"; rn: "eo.rn"; ro: "eo.ro"; rp: "eo.rp"; rq: "eo.rq"; rr: "eo.rr"; rs: "eo.rs"; rt: "eo.rt"; ru: "eo.ru"; rv: "eo.rv"; rw: "eo.rw"; rx: "eo.rx"; ry: "eo.ry"; rz: "eo.rz"; sa: "eo.sa"; sb: "eo.sb"; sc: "eo.sc"; sd: "eo.sd"; se: "eo.se"; sf: "eo.sf"; sg: "eo.sg"; sh: "eo.sh"; si: "eo.si"; sj: "eo.sj"; sk: "eo.sk"; sl: "eo.sl"; sm: "eo.sm"; sn: "eo.sn"; so: "eo.so"; sp: "eo.sp"; sq: "eo.sq"; sr: "eo.sr"; ss: "eo.ss"; st: "eo.st"; su: "eo.su"; sv: "eo.sv"; sw: "eo.sw"; sx: "eo.sx"; sy: "eo.sy"; sz: "eo.sz"; ta: "eo.ta"; tb: "eo.tb"; tc: "eo.tc"; td: "eo.td"; te: "eo.te"; tf: "eo.tf"; tg: "eo.tg"; th: "eo.th"; ti: "eo.ti"; tj: "eo.tj"; tk: "eo.tk"; tl: "eo.tl"; tm: "eo.tm"; tn: "eo.tn"; to: "eo.to"; tp: "eo.tp"; tq: "eo.tq"; tr: "eo.tr"; ts: "eo.ts"; tt: "eo.tt"; tu: "eo.tu"; tv: "eo.tv"; tw: "eo.tw"; tx: "eo.tx"; ty: "eo.ty"; tz: "eo.tz"; ua: "eo.ua"; ub: "eo.ub"; uc: "eo.uc"; ud: "eo.ud"; ue: "eo.ue"; uf: "eo.uf"; ug: "eo.ug"; uh: "eo.uh"; ui: "eo.ui"; uj: "eo.uj"; uk: "eo.uk"; ul: "eo.ul"; um: "eo.um"; un: "eo.un"; uo: "eo.uo"; up: "eo.up"; uq: "eo.uq"; ur: "eo.ur"; us: "eo.us"; ut: "eo.ut"; uu: "eo.uu"; uv: "eo.uv"; uw: "eo.uw"; ux: "eo.ux"; uy: "eo.uy"; uz: "eo.uz"; va: "eo.va"; vb: "eo.vb"; vc: "eo.vc"; vd: "eo.vd"; ve: "eo.ve"; vf: "eo.vf"; vg: "eo.vg"; vh: "eo.vh"; vi: "eo.vi"; vj: "eo.vj"; vk: "eo.vk"; vl: "eo.vl"; vm: "eo.vm"; vn: "eo.vn"; vo: "eo.vo"; vp: "eo.vp"; vq: "eo.vq"; vr: "eo.vr"; vs: "eo.vs"; vt: "eo.vt"; vu: "eo.vu"; vv: "eo.vv"; vw: "eo.vw"; vx: "eo.vx"; vy: "eo.vy"; vz: "eo.vz"; wa: "eo.wa"; wb: "eo.wb"; wc: "eo.wc"; wd: "eo.wd"; we: "eo.we"; wf: "eo.wf"; wg: "eo.wg"; wh: "eo.wh"; wi: "eo.wi"; wj: "eo.wj"; wk: "eo.wk"; wl: "eo.wl"; wm: "eo.wm"; wn: "eo.wn"; wo: "eo.wo"; wp: "eo.wp"; wq: "eo.wq"; wr: "eo.wr"; ws: "eo.ws"; wt: "eo.wt"; wu: "eo.wu"; wv: "eo.wv"; ww: "eo.ww"; wx: "eo.wx"; wy: "eo.wy"; wz: "eo.wz"; xa: "eo.xa"; xb: "eo.xb"; xc: "eo.xc"; xd: "eo.xd"; xe: "eo.xe"; xf: "eo.xf"; xg: "eo.xg"; xh: "eo.xh"; xi: "eo.xi"; xj: "eo.xj"; xk: "eo.xk"; xl: "eo.xl"; xm: "eo.xm"; xn: "eo.xn"; xo: "eo.xo"; xp: "eo.xp"; xq: "eo.xq"; xr: "eo.xr"; xs: "eo.xs"; xt: "eo.xt"; xu: "eo.xu"; xv: "eo.xv"; xw: "eo.xw"; xx: "eo.xx"; xy: "eo.xy"; xz: "eo.xz"; ya: "eo.ya"; yb: "eo.yb"; yc: "eo.yc"; yd: "eo.yd"; ye: "eo.ye"; yf: "eo.yf"; yg: "eo.yg"; yh: "eo.yh"; yi: "eo.yi"; yj: "eo.yj"; yk: "eo.yk"; yl: "eo.yl"; ym: "eo.ym"; yn: "eo.yn"; yo: "eo.yo"; yp: "eo.yp"; yq: "eo.yq"; yr: "eo.yr"; ys: "eo.ys"; yt: "eo.yt"; yu: "eo.yu"; yv: "eo.yv"; yw: "eo.yw"; yx: "eo.yx"; yy: "eo.yy"; yz: "eo.yz"; za: "eo.za"; zb: "eo.zb"; zc: "eo.zc"; zd: "eo.zd"; ze: "eo.ze"; zf: "eo.zf"; zg: "eo.zg"; zh: "eo.zh"; zi: "eo.zi"; zj: "eo.zj"; zk: "eo.zk"; zl: "eo.zl"; zm: "eo.zm"; zn: "eo.zn"; zo: "eo.zo"; zp: "eo.zp"; zq: "eo.zq"; zr: "eo.zr"; zs: "eo.zs"; zt: "eo.zt"; zu: "eo.zu"; zv: "eo.zv"; zw: "eo.zw"; zx: "eo.zx"; zy: "eo.zy"; zz: "eo.zz"; }; ep: { aa: "ep.aa"; ab: "ep.ab"; ac: "ep.ac"; ad: "ep.ad"; ae: "ep.ae"; af: "ep.af"; ag: "ep.ag"; ah: "ep.ah"; ai: "ep.ai"; aj: "ep.aj"; ak: "ep.ak"; al: "ep.al"; am: "ep.am"; an: "ep.an"; ao: "ep.ao"; ap: "ep.ap"; aq: "ep.aq"; ar: "ep.ar"; as: "ep.as"; at: "ep.at"; au: "ep.au"; av: "ep.av"; aw: "ep.aw"; ax: "ep.ax"; ay: "ep.ay"; az: "ep.az"; ba: "ep.ba"; bb: "ep.bb"; bc: "ep.bc"; bd: "ep.bd"; be: "ep.be"; bf: "ep.bf"; bg: "ep.bg"; bh: "ep.bh"; bi: "ep.bi"; bj: "ep.bj"; bk: "ep.bk"; bl: "ep.bl"; bm: "ep.bm"; bn: "ep.bn"; bo: "ep.bo"; bp: "ep.bp"; bq: "ep.bq"; br: "ep.br"; bs: "ep.bs"; bt: "ep.bt"; bu: "ep.bu"; bv: "ep.bv"; bw: "ep.bw"; bx: "ep.bx"; by: "ep.by"; bz: "ep.bz"; ca: "ep.ca"; cb: "ep.cb"; cc: "ep.cc"; cd: "ep.cd"; ce: "ep.ce"; cf: "ep.cf"; cg: "ep.cg"; ch: "ep.ch"; ci: "ep.ci"; cj: "ep.cj"; ck: "ep.ck"; cl: "ep.cl"; cm: "ep.cm"; cn: "ep.cn"; co: "ep.co"; cp: "ep.cp"; cq: "ep.cq"; cr: "ep.cr"; cs: "ep.cs"; ct: "ep.ct"; cu: "ep.cu"; cv: "ep.cv"; cw: "ep.cw"; cx: "ep.cx"; cy: "ep.cy"; cz: "ep.cz"; da: "ep.da"; db: "ep.db"; dc: "ep.dc"; dd: "ep.dd"; de: "ep.de"; df: "ep.df"; dg: "ep.dg"; dh: "ep.dh"; di: "ep.di"; dj: "ep.dj"; dk: "ep.dk"; dl: "ep.dl"; dm: "ep.dm"; dn: "ep.dn"; do: "ep.do"; dp: "ep.dp"; dq: "ep.dq"; dr: "ep.dr"; ds: "ep.ds"; dt: "ep.dt"; du: "ep.du"; dv: "ep.dv"; dw: "ep.dw"; dx: "ep.dx"; dy: "ep.dy"; dz: "ep.dz"; ea: "ep.ea"; eb: "ep.eb"; ec: "ep.ec"; ed: "ep.ed"; ee: "ep.ee"; ef: "ep.ef"; eg: "ep.eg"; eh: "ep.eh"; ei: "ep.ei"; ej: "ep.ej"; ek: "ep.ek"; el: "ep.el"; em: "ep.em"; en: "ep.en"; eo: "ep.eo"; ep: "ep.ep"; eq: "ep.eq"; er: "ep.er"; es: "ep.es"; et: "ep.et"; eu: "ep.eu"; ev: "ep.ev"; ew: "ep.ew"; ex: "ep.ex"; ey: "ep.ey"; ez: "ep.ez"; fa: "ep.fa"; fb: "ep.fb"; fc: "ep.fc"; fd: "ep.fd"; fe: "ep.fe"; ff: "ep.ff"; fg: "ep.fg"; fh: "ep.fh"; fi: "ep.fi"; fj: "ep.fj"; fk: "ep.fk"; fl: "ep.fl"; fm: "ep.fm"; fn: "ep.fn"; fo: "ep.fo"; fp: "ep.fp"; fq: "ep.fq"; fr: "ep.fr"; fs: "ep.fs"; ft: "ep.ft"; fu: "ep.fu"; fv: "ep.fv"; fw: "ep.fw"; fx: "ep.fx"; fy: "ep.fy"; fz: "ep.fz"; ga: "ep.ga"; gb: "ep.gb"; gc: "ep.gc"; gd: "ep.gd"; ge: "ep.ge"; gf: "ep.gf"; gg: "ep.gg"; gh: "ep.gh"; gi: "ep.gi"; gj: "ep.gj"; gk: "ep.gk"; gl: "ep.gl"; gm: "ep.gm"; gn: "ep.gn"; go: "ep.go"; gp: "ep.gp"; gq: "ep.gq"; gr: "ep.gr"; gs: "ep.gs"; gt: "ep.gt"; gu: "ep.gu"; gv: "ep.gv"; gw: "ep.gw"; gx: "ep.gx"; gy: "ep.gy"; gz: "ep.gz"; ha: "ep.ha"; hb: "ep.hb"; hc: "ep.hc"; hd: "ep.hd"; he: "ep.he"; hf: "ep.hf"; hg: "ep.hg"; hh: "ep.hh"; hi: "ep.hi"; hj: "ep.hj"; hk: "ep.hk"; hl: "ep.hl"; hm: "ep.hm"; hn: "ep.hn"; ho: "ep.ho"; hp: "ep.hp"; hq: "ep.hq"; hr: "ep.hr"; hs: "ep.hs"; ht: "ep.ht"; hu: "ep.hu"; hv: "ep.hv"; hw: "ep.hw"; hx: "ep.hx"; hy: "ep.hy"; hz: "ep.hz"; ia: "ep.ia"; ib: "ep.ib"; ic: "ep.ic"; id: "ep.id"; ie: "ep.ie"; if: "ep.if"; ig: "ep.ig"; ih: "ep.ih"; ii: "ep.ii"; ij: "ep.ij"; ik: "ep.ik"; il: "ep.il"; im: "ep.im"; in: "ep.in"; io: "ep.io"; ip: "ep.ip"; iq: "ep.iq"; ir: "ep.ir"; is: "ep.is"; it: "ep.it"; iu: "ep.iu"; iv: "ep.iv"; iw: "ep.iw"; ix: "ep.ix"; iy: "ep.iy"; iz: "ep.iz"; ja: "ep.ja"; jb: "ep.jb"; jc: "ep.jc"; jd: "ep.jd"; je: "ep.je"; jf: "ep.jf"; jg: "ep.jg"; jh: "ep.jh"; ji: "ep.ji"; jj: "ep.jj"; jk: "ep.jk"; jl: "ep.jl"; jm: "ep.jm"; jn: "ep.jn"; jo: "ep.jo"; jp: "ep.jp"; jq: "ep.jq"; jr: "ep.jr"; js: "ep.js"; jt: "ep.jt"; ju: "ep.ju"; jv: "ep.jv"; jw: "ep.jw"; jx: "ep.jx"; jy: "ep.jy"; jz: "ep.jz"; ka: "ep.ka"; kb: "ep.kb"; kc: "ep.kc"; kd: "ep.kd"; ke: "ep.ke"; kf: "ep.kf"; kg: "ep.kg"; kh: "ep.kh"; ki: "ep.ki"; kj: "ep.kj"; kk: "ep.kk"; kl: "ep.kl"; km: "ep.km"; kn: "ep.kn"; ko: "ep.ko"; kp: "ep.kp"; kq: "ep.kq"; kr: "ep.kr"; ks: "ep.ks"; kt: "ep.kt"; ku: "ep.ku"; kv: "ep.kv"; kw: "ep.kw"; kx: "ep.kx"; ky: "ep.ky"; kz: "ep.kz"; la: "ep.la"; lb: "ep.lb"; lc: "ep.lc"; ld: "ep.ld"; le: "ep.le"; lf: "ep.lf"; lg: "ep.lg"; lh: "ep.lh"; li: "ep.li"; lj: "ep.lj"; lk: "ep.lk"; ll: "ep.ll"; lm: "ep.lm"; ln: "ep.ln"; lo: "ep.lo"; lp: "ep.lp"; lq: "ep.lq"; lr: "ep.lr"; ls: "ep.ls"; lt: "ep.lt"; lu: "ep.lu"; lv: "ep.lv"; lw: "ep.lw"; lx: "ep.lx"; ly: "ep.ly"; lz: "ep.lz"; ma: "ep.ma"; mb: "ep.mb"; mc: "ep.mc"; md: "ep.md"; me: "ep.me"; mf: "ep.mf"; mg: "ep.mg"; mh: "ep.mh"; mi: "ep.mi"; mj: "ep.mj"; mk: "ep.mk"; ml: "ep.ml"; mm: "ep.mm"; mn: "ep.mn"; mo: "ep.mo"; mp: "ep.mp"; mq: "ep.mq"; mr: "ep.mr"; ms: "ep.ms"; mt: "ep.mt"; mu: "ep.mu"; mv: "ep.mv"; mw: "ep.mw"; mx: "ep.mx"; my: "ep.my"; mz: "ep.mz"; na: "ep.na"; nb: "ep.nb"; nc: "ep.nc"; nd: "ep.nd"; ne: "ep.ne"; nf: "ep.nf"; ng: "ep.ng"; nh: "ep.nh"; ni: "ep.ni"; nj: "ep.nj"; nk: "ep.nk"; nl: "ep.nl"; nm: "ep.nm"; nn: "ep.nn"; no: "ep.no"; np: "ep.np"; nq: "ep.nq"; nr: "ep.nr"; ns: "ep.ns"; nt: "ep.nt"; nu: "ep.nu"; nv: "ep.nv"; nw: "ep.nw"; nx: "ep.nx"; ny: "ep.ny"; nz: "ep.nz"; oa: "ep.oa"; ob: "ep.ob"; oc: "ep.oc"; od: "ep.od"; oe: "ep.oe"; of: "ep.of"; og: "ep.og"; oh: "ep.oh"; oi: "ep.oi"; oj: "ep.oj"; ok: "ep.ok"; ol: "ep.ol"; om: "ep.om"; on: "ep.on"; oo: "ep.oo"; op: "ep.op"; oq: "ep.oq"; or: "ep.or"; os: "ep.os"; ot: "ep.ot"; ou: "ep.ou"; ov: "ep.ov"; ow: "ep.ow"; ox: "ep.ox"; oy: "ep.oy"; oz: "ep.oz"; pa: "ep.pa"; pb: "ep.pb"; pc: "ep.pc"; pd: "ep.pd"; pe: "ep.pe"; pf: "ep.pf"; pg: "ep.pg"; ph: "ep.ph"; pi: "ep.pi"; pj: "ep.pj"; pk: "ep.pk"; pl: "ep.pl"; pm: "ep.pm"; pn: "ep.pn"; po: "ep.po"; pp: "ep.pp"; pq: "ep.pq"; pr: "ep.pr"; ps: "ep.ps"; pt: "ep.pt"; pu: "ep.pu"; pv: "ep.pv"; pw: "ep.pw"; px: "ep.px"; py: "ep.py"; pz: "ep.pz"; qa: "ep.qa"; qb: "ep.qb"; qc: "ep.qc"; qd: "ep.qd"; qe: "ep.qe"; qf: "ep.qf"; qg: "ep.qg"; qh: "ep.qh"; qi: "ep.qi"; qj: "ep.qj"; qk: "ep.qk"; ql: "ep.ql"; qm: "ep.qm"; qn: "ep.qn"; qo: "ep.qo"; qp: "ep.qp"; qq: "ep.qq"; qr: "ep.qr"; qs: "ep.qs"; qt: "ep.qt"; qu: "ep.qu"; qv: "ep.qv"; qw: "ep.qw"; qx: "ep.qx"; qy: "ep.qy"; qz: "ep.qz"; ra: "ep.ra"; rb: "ep.rb"; rc: "ep.rc"; rd: "ep.rd"; re: "ep.re"; rf: "ep.rf"; rg: "ep.rg"; rh: "ep.rh"; ri: "ep.ri"; rj: "ep.rj"; rk: "ep.rk"; rl: "ep.rl"; rm: "ep.rm"; rn: "ep.rn"; ro: "ep.ro"; rp: "ep.rp"; rq: "ep.rq"; rr: "ep.rr"; rs: "ep.rs"; rt: "ep.rt"; ru: "ep.ru"; rv: "ep.rv"; rw: "ep.rw"; rx: "ep.rx"; ry: "ep.ry"; rz: "ep.rz"; sa: "ep.sa"; sb: "ep.sb"; sc: "ep.sc"; sd: "ep.sd"; se: "ep.se"; sf: "ep.sf"; sg: "ep.sg"; sh: "ep.sh"; si: "ep.si"; sj: "ep.sj"; sk: "ep.sk"; sl: "ep.sl"; sm: "ep.sm"; sn: "ep.sn"; so: "ep.so"; sp: "ep.sp"; sq: "ep.sq"; sr: "ep.sr"; ss: "ep.ss"; st: "ep.st"; su: "ep.su"; sv: "ep.sv"; sw: "ep.sw"; sx: "ep.sx"; sy: "ep.sy"; sz: "ep.sz"; ta: "ep.ta"; tb: "ep.tb"; tc: "ep.tc"; td: "ep.td"; te: "ep.te"; tf: "ep.tf"; tg: "ep.tg"; th: "ep.th"; ti: "ep.ti"; tj: "ep.tj"; tk: "ep.tk"; tl: "ep.tl"; tm: "ep.tm"; tn: "ep.tn"; to: "ep.to"; tp: "ep.tp"; tq: "ep.tq"; tr: "ep.tr"; ts: "ep.ts"; tt: "ep.tt"; tu: "ep.tu"; tv: "ep.tv"; tw: "ep.tw"; tx: "ep.tx"; ty: "ep.ty"; tz: "ep.tz"; ua: "ep.ua"; ub: "ep.ub"; uc: "ep.uc"; ud: "ep.ud"; ue: "ep.ue"; uf: "ep.uf"; ug: "ep.ug"; uh: "ep.uh"; ui: "ep.ui"; uj: "ep.uj"; uk: "ep.uk"; ul: "ep.ul"; um: "ep.um"; un: "ep.un"; uo: "ep.uo"; up: "ep.up"; uq: "ep.uq"; ur: "ep.ur"; us: "ep.us"; ut: "ep.ut"; uu: "ep.uu"; uv: "ep.uv"; uw: "ep.uw"; ux: "ep.ux"; uy: "ep.uy"; uz: "ep.uz"; va: "ep.va"; vb: "ep.vb"; vc: "ep.vc"; vd: "ep.vd"; ve: "ep.ve"; vf: "ep.vf"; vg: "ep.vg"; vh: "ep.vh"; vi: "ep.vi"; vj: "ep.vj"; vk: "ep.vk"; vl: "ep.vl"; vm: "ep.vm"; vn: "ep.vn"; vo: "ep.vo"; vp: "ep.vp"; vq: "ep.vq"; vr: "ep.vr"; vs: "ep.vs"; vt: "ep.vt"; vu: "ep.vu"; vv: "ep.vv"; vw: "ep.vw"; vx: "ep.vx"; vy: "ep.vy"; vz: "ep.vz"; wa: "ep.wa"; wb: "ep.wb"; wc: "ep.wc"; wd: "ep.wd"; we: "ep.we"; wf: "ep.wf"; wg: "ep.wg"; wh: "ep.wh"; wi: "ep.wi"; wj: "ep.wj"; wk: "ep.wk"; wl: "ep.wl"; wm: "ep.wm"; wn: "ep.wn"; wo: "ep.wo"; wp: "ep.wp"; wq: "ep.wq"; wr: "ep.wr"; ws: "ep.ws"; wt: "ep.wt"; wu: "ep.wu"; wv: "ep.wv"; ww: "ep.ww"; wx: "ep.wx"; wy: "ep.wy"; wz: "ep.wz"; xa: "ep.xa"; xb: "ep.xb"; xc: "ep.xc"; xd: "ep.xd"; xe: "ep.xe"; xf: "ep.xf"; xg: "ep.xg"; xh: "ep.xh"; xi: "ep.xi"; xj: "ep.xj"; xk: "ep.xk"; xl: "ep.xl"; xm: "ep.xm"; xn: "ep.xn"; xo: "ep.xo"; xp: "ep.xp"; xq: "ep.xq"; xr: "ep.xr"; xs: "ep.xs"; xt: "ep.xt"; xu: "ep.xu"; xv: "ep.xv"; xw: "ep.xw"; xx: "ep.xx"; xy: "ep.xy"; xz: "ep.xz"; ya: "ep.ya"; yb: "ep.yb"; yc: "ep.yc"; yd: "ep.yd"; ye: "ep.ye"; yf: "ep.yf"; yg: "ep.yg"; yh: "ep.yh"; yi: "ep.yi"; yj: "ep.yj"; yk: "ep.yk"; yl: "ep.yl"; ym: "ep.ym"; yn: "ep.yn"; yo: "ep.yo"; yp: "ep.yp"; yq: "ep.yq"; yr: "ep.yr"; ys: "ep.ys"; yt: "ep.yt"; yu: "ep.yu"; yv: "ep.yv"; yw: "ep.yw"; yx: "ep.yx"; yy: "ep.yy"; yz: "ep.yz"; za: "ep.za"; zb: "ep.zb"; zc: "ep.zc"; zd: "ep.zd"; ze: "ep.ze"; zf: "ep.zf"; zg: "ep.zg"; zh: "ep.zh"; zi: "ep.zi"; zj: "ep.zj"; zk: "ep.zk"; zl: "ep.zl"; zm: "ep.zm"; zn: "ep.zn"; zo: "ep.zo"; zp: "ep.zp"; zq: "ep.zq"; zr: "ep.zr"; zs: "ep.zs"; zt: "ep.zt"; zu: "ep.zu"; zv: "ep.zv"; zw: "ep.zw"; zx: "ep.zx"; zy: "ep.zy"; zz: "ep.zz"; }; eq: { aa: "eq.aa"; ab: "eq.ab"; ac: "eq.ac"; ad: "eq.ad"; ae: "eq.ae"; af: "eq.af"; ag: "eq.ag"; ah: "eq.ah"; ai: "eq.ai"; aj: "eq.aj"; ak: "eq.ak"; al: "eq.al"; am: "eq.am"; an: "eq.an"; ao: "eq.ao"; ap: "eq.ap"; aq: "eq.aq"; ar: "eq.ar"; as: "eq.as"; at: "eq.at"; au: "eq.au"; av: "eq.av"; aw: "eq.aw"; ax: "eq.ax"; ay: "eq.ay"; az: "eq.az"; ba: "eq.ba"; bb: "eq.bb"; bc: "eq.bc"; bd: "eq.bd"; be: "eq.be"; bf: "eq.bf"; bg: "eq.bg"; bh: "eq.bh"; bi: "eq.bi"; bj: "eq.bj"; bk: "eq.bk"; bl: "eq.bl"; bm: "eq.bm"; bn: "eq.bn"; bo: "eq.bo"; bp: "eq.bp"; bq: "eq.bq"; br: "eq.br"; bs: "eq.bs"; bt: "eq.bt"; bu: "eq.bu"; bv: "eq.bv"; bw: "eq.bw"; bx: "eq.bx"; by: "eq.by"; bz: "eq.bz"; ca: "eq.ca"; cb: "eq.cb"; cc: "eq.cc"; cd: "eq.cd"; ce: "eq.ce"; cf: "eq.cf"; cg: "eq.cg"; ch: "eq.ch"; ci: "eq.ci"; cj: "eq.cj"; ck: "eq.ck"; cl: "eq.cl"; cm: "eq.cm"; cn: "eq.cn"; co: "eq.co"; cp: "eq.cp"; cq: "eq.cq"; cr: "eq.cr"; cs: "eq.cs"; ct: "eq.ct"; cu: "eq.cu"; cv: "eq.cv"; cw: "eq.cw"; cx: "eq.cx"; cy: "eq.cy"; cz: "eq.cz"; da: "eq.da"; db: "eq.db"; dc: "eq.dc"; dd: "eq.dd"; de: "eq.de"; df: "eq.df"; dg: "eq.dg"; dh: "eq.dh"; di: "eq.di"; dj: "eq.dj"; dk: "eq.dk"; dl: "eq.dl"; dm: "eq.dm"; dn: "eq.dn"; do: "eq.do"; dp: "eq.dp"; dq: "eq.dq"; dr: "eq.dr"; ds: "eq.ds"; dt: "eq.dt"; du: "eq.du"; dv: "eq.dv"; dw: "eq.dw"; dx: "eq.dx"; dy: "eq.dy"; dz: "eq.dz"; ea: "eq.ea"; eb: "eq.eb"; ec: "eq.ec"; ed: "eq.ed"; ee: "eq.ee"; ef: "eq.ef"; eg: "eq.eg"; eh: "eq.eh"; ei: "eq.ei"; ej: "eq.ej"; ek: "eq.ek"; el: "eq.el"; em: "eq.em"; en: "eq.en"; eo: "eq.eo"; ep: "eq.ep"; eq: "eq.eq"; er: "eq.er"; es: "eq.es"; et: "eq.et"; eu: "eq.eu"; ev: "eq.ev"; ew: "eq.ew"; ex: "eq.ex"; ey: "eq.ey"; ez: "eq.ez"; fa: "eq.fa"; fb: "eq.fb"; fc: "eq.fc"; fd: "eq.fd"; fe: "eq.fe"; ff: "eq.ff"; fg: "eq.fg"; fh: "eq.fh"; fi: "eq.fi"; fj: "eq.fj"; fk: "eq.fk"; fl: "eq.fl"; fm: "eq.fm"; fn: "eq.fn"; fo: "eq.fo"; fp: "eq.fp"; fq: "eq.fq"; fr: "eq.fr"; fs: "eq.fs"; ft: "eq.ft"; fu: "eq.fu"; fv: "eq.fv"; fw: "eq.fw"; fx: "eq.fx"; fy: "eq.fy"; fz: "eq.fz"; ga: "eq.ga"; gb: "eq.gb"; gc: "eq.gc"; gd: "eq.gd"; ge: "eq.ge"; gf: "eq.gf"; gg: "eq.gg"; gh: "eq.gh"; gi: "eq.gi"; gj: "eq.gj"; gk: "eq.gk"; gl: "eq.gl"; gm: "eq.gm"; gn: "eq.gn"; go: "eq.go"; gp: "eq.gp"; gq: "eq.gq"; gr: "eq.gr"; gs: "eq.gs"; gt: "eq.gt"; gu: "eq.gu"; gv: "eq.gv"; gw: "eq.gw"; gx: "eq.gx"; gy: "eq.gy"; gz: "eq.gz"; ha: "eq.ha"; hb: "eq.hb"; hc: "eq.hc"; hd: "eq.hd"; he: "eq.he"; hf: "eq.hf"; hg: "eq.hg"; hh: "eq.hh"; hi: "eq.hi"; hj: "eq.hj"; hk: "eq.hk"; hl: "eq.hl"; hm: "eq.hm"; hn: "eq.hn"; ho: "eq.ho"; hp: "eq.hp"; hq: "eq.hq"; hr: "eq.hr"; hs: "eq.hs"; ht: "eq.ht"; hu: "eq.hu"; hv: "eq.hv"; hw: "eq.hw"; hx: "eq.hx"; hy: "eq.hy"; hz: "eq.hz"; ia: "eq.ia"; ib: "eq.ib"; ic: "eq.ic"; id: "eq.id"; ie: "eq.ie"; if: "eq.if"; ig: "eq.ig"; ih: "eq.ih"; ii: "eq.ii"; ij: "eq.ij"; ik: "eq.ik"; il: "eq.il"; im: "eq.im"; in: "eq.in"; io: "eq.io"; ip: "eq.ip"; iq: "eq.iq"; ir: "eq.ir"; is: "eq.is"; it: "eq.it"; iu: "eq.iu"; iv: "eq.iv"; iw: "eq.iw"; ix: "eq.ix"; iy: "eq.iy"; iz: "eq.iz"; ja: "eq.ja"; jb: "eq.jb"; jc: "eq.jc"; jd: "eq.jd"; je: "eq.je"; jf: "eq.jf"; jg: "eq.jg"; jh: "eq.jh"; ji: "eq.ji"; jj: "eq.jj"; jk: "eq.jk"; jl: "eq.jl"; jm: "eq.jm"; jn: "eq.jn"; jo: "eq.jo"; jp: "eq.jp"; jq: "eq.jq"; jr: "eq.jr"; js: "eq.js"; jt: "eq.jt"; ju: "eq.ju"; jv: "eq.jv"; jw: "eq.jw"; jx: "eq.jx"; jy: "eq.jy"; jz: "eq.jz"; ka: "eq.ka"; kb: "eq.kb"; kc: "eq.kc"; kd: "eq.kd"; ke: "eq.ke"; kf: "eq.kf"; kg: "eq.kg"; kh: "eq.kh"; ki: "eq.ki"; kj: "eq.kj"; kk: "eq.kk"; kl: "eq.kl"; km: "eq.km"; kn: "eq.kn"; ko: "eq.ko"; kp: "eq.kp"; kq: "eq.kq"; kr: "eq.kr"; ks: "eq.ks"; kt: "eq.kt"; ku: "eq.ku"; kv: "eq.kv"; kw: "eq.kw"; kx: "eq.kx"; ky: "eq.ky"; kz: "eq.kz"; la: "eq.la"; lb: "eq.lb"; lc: "eq.lc"; ld: "eq.ld"; le: "eq.le"; lf: "eq.lf"; lg: "eq.lg"; lh: "eq.lh"; li: "eq.li"; lj: "eq.lj"; lk: "eq.lk"; ll: "eq.ll"; lm: "eq.lm"; ln: "eq.ln"; lo: "eq.lo"; lp: "eq.lp"; lq: "eq.lq"; lr: "eq.lr"; ls: "eq.ls"; lt: "eq.lt"; lu: "eq.lu"; lv: "eq.lv"; lw: "eq.lw"; lx: "eq.lx"; ly: "eq.ly"; lz: "eq.lz"; ma: "eq.ma"; mb: "eq.mb"; mc: "eq.mc"; md: "eq.md"; me: "eq.me"; mf: "eq.mf"; mg: "eq.mg"; mh: "eq.mh"; mi: "eq.mi"; mj: "eq.mj"; mk: "eq.mk"; ml: "eq.ml"; mm: "eq.mm"; mn: "eq.mn"; mo: "eq.mo"; mp: "eq.mp"; mq: "eq.mq"; mr: "eq.mr"; ms: "eq.ms"; mt: "eq.mt"; mu: "eq.mu"; mv: "eq.mv"; mw: "eq.mw"; mx: "eq.mx"; my: "eq.my"; mz: "eq.mz"; na: "eq.na"; nb: "eq.nb"; nc: "eq.nc"; nd: "eq.nd"; ne: "eq.ne"; nf: "eq.nf"; ng: "eq.ng"; nh: "eq.nh"; ni: "eq.ni"; nj: "eq.nj"; nk: "eq.nk"; nl: "eq.nl"; nm: "eq.nm"; nn: "eq.nn"; no: "eq.no"; np: "eq.np"; nq: "eq.nq"; nr: "eq.nr"; ns: "eq.ns"; nt: "eq.nt"; nu: "eq.nu"; nv: "eq.nv"; nw: "eq.nw"; nx: "eq.nx"; ny: "eq.ny"; nz: "eq.nz"; oa: "eq.oa"; ob: "eq.ob"; oc: "eq.oc"; od: "eq.od"; oe: "eq.oe"; of: "eq.of"; og: "eq.og"; oh: "eq.oh"; oi: "eq.oi"; oj: "eq.oj"; ok: "eq.ok"; ol: "eq.ol"; om: "eq.om"; on: "eq.on"; oo: "eq.oo"; op: "eq.op"; oq: "eq.oq"; or: "eq.or"; os: "eq.os"; ot: "eq.ot"; ou: "eq.ou"; ov: "eq.ov"; ow: "eq.ow"; ox: "eq.ox"; oy: "eq.oy"; oz: "eq.oz"; pa: "eq.pa"; pb: "eq.pb"; pc: "eq.pc"; pd: "eq.pd"; pe: "eq.pe"; pf: "eq.pf"; pg: "eq.pg"; ph: "eq.ph"; pi: "eq.pi"; pj: "eq.pj"; pk: "eq.pk"; pl: "eq.pl"; pm: "eq.pm"; pn: "eq.pn"; po: "eq.po"; pp: "eq.pp"; pq: "eq.pq"; pr: "eq.pr"; ps: "eq.ps"; pt: "eq.pt"; pu: "eq.pu"; pv: "eq.pv"; pw: "eq.pw"; px: "eq.px"; py: "eq.py"; pz: "eq.pz"; qa: "eq.qa"; qb: "eq.qb"; qc: "eq.qc"; qd: "eq.qd"; qe: "eq.qe"; qf: "eq.qf"; qg: "eq.qg"; qh: "eq.qh"; qi: "eq.qi"; qj: "eq.qj"; qk: "eq.qk"; ql: "eq.ql"; qm: "eq.qm"; qn: "eq.qn"; qo: "eq.qo"; qp: "eq.qp"; qq: "eq.qq"; qr: "eq.qr"; qs: "eq.qs"; qt: "eq.qt"; qu: "eq.qu"; qv: "eq.qv"; qw: "eq.qw"; qx: "eq.qx"; qy: "eq.qy"; qz: "eq.qz"; ra: "eq.ra"; rb: "eq.rb"; rc: "eq.rc"; rd: "eq.rd"; re: "eq.re"; rf: "eq.rf"; rg: "eq.rg"; rh: "eq.rh"; ri: "eq.ri"; rj: "eq.rj"; rk: "eq.rk"; rl: "eq.rl"; rm: "eq.rm"; rn: "eq.rn"; ro: "eq.ro"; rp: "eq.rp"; rq: "eq.rq"; rr: "eq.rr"; rs: "eq.rs"; rt: "eq.rt"; ru: "eq.ru"; rv: "eq.rv"; rw: "eq.rw"; rx: "eq.rx"; ry: "eq.ry"; rz: "eq.rz"; sa: "eq.sa"; sb: "eq.sb"; sc: "eq.sc"; sd: "eq.sd"; se: "eq.se"; sf: "eq.sf"; sg: "eq.sg"; sh: "eq.sh"; si: "eq.si"; sj: "eq.sj"; sk: "eq.sk"; sl: "eq.sl"; sm: "eq.sm"; sn: "eq.sn"; so: "eq.so"; sp: "eq.sp"; sq: "eq.sq"; sr: "eq.sr"; ss: "eq.ss"; st: "eq.st"; su: "eq.su"; sv: "eq.sv"; sw: "eq.sw"; sx: "eq.sx"; sy: "eq.sy"; sz: "eq.sz"; ta: "eq.ta"; tb: "eq.tb"; tc: "eq.tc"; td: "eq.td"; te: "eq.te"; tf: "eq.tf"; tg: "eq.tg"; th: "eq.th"; ti: "eq.ti"; tj: "eq.tj"; tk: "eq.tk"; tl: "eq.tl"; tm: "eq.tm"; tn: "eq.tn"; to: "eq.to"; tp: "eq.tp"; tq: "eq.tq"; tr: "eq.tr"; ts: "eq.ts"; tt: "eq.tt"; tu: "eq.tu"; tv: "eq.tv"; tw: "eq.tw"; tx: "eq.tx"; ty: "eq.ty"; tz: "eq.tz"; ua: "eq.ua"; ub: "eq.ub"; uc: "eq.uc"; ud: "eq.ud"; ue: "eq.ue"; uf: "eq.uf"; ug: "eq.ug"; uh: "eq.uh"; ui: "eq.ui"; uj: "eq.uj"; uk: "eq.uk"; ul: "eq.ul"; um: "eq.um"; un: "eq.un"; uo: "eq.uo"; up: "eq.up"; uq: "eq.uq"; ur: "eq.ur"; us: "eq.us"; ut: "eq.ut"; uu: "eq.uu"; uv: "eq.uv"; uw: "eq.uw"; ux: "eq.ux"; uy: "eq.uy"; uz: "eq.uz"; va: "eq.va"; vb: "eq.vb"; vc: "eq.vc"; vd: "eq.vd"; ve: "eq.ve"; vf: "eq.vf"; vg: "eq.vg"; vh: "eq.vh"; vi: "eq.vi"; vj: "eq.vj"; vk: "eq.vk"; vl: "eq.vl"; vm: "eq.vm"; vn: "eq.vn"; vo: "eq.vo"; vp: "eq.vp"; vq: "eq.vq"; vr: "eq.vr"; vs: "eq.vs"; vt: "eq.vt"; vu: "eq.vu"; vv: "eq.vv"; vw: "eq.vw"; vx: "eq.vx"; vy: "eq.vy"; vz: "eq.vz"; wa: "eq.wa"; wb: "eq.wb"; wc: "eq.wc"; wd: "eq.wd"; we: "eq.we"; wf: "eq.wf"; wg: "eq.wg"; wh: "eq.wh"; wi: "eq.wi"; wj: "eq.wj"; wk: "eq.wk"; wl: "eq.wl"; wm: "eq.wm"; wn: "eq.wn"; wo: "eq.wo"; wp: "eq.wp"; wq: "eq.wq"; wr: "eq.wr"; ws: "eq.ws"; wt: "eq.wt"; wu: "eq.wu"; wv: "eq.wv"; ww: "eq.ww"; wx: "eq.wx"; wy: "eq.wy"; wz: "eq.wz"; xa: "eq.xa"; xb: "eq.xb"; xc: "eq.xc"; xd: "eq.xd"; xe: "eq.xe"; xf: "eq.xf"; xg: "eq.xg"; xh: "eq.xh"; xi: "eq.xi"; xj: "eq.xj"; xk: "eq.xk"; xl: "eq.xl"; xm: "eq.xm"; xn: "eq.xn"; xo: "eq.xo"; xp: "eq.xp"; xq: "eq.xq"; xr: "eq.xr"; xs: "eq.xs"; xt: "eq.xt"; xu: "eq.xu"; xv: "eq.xv"; xw: "eq.xw"; xx: "eq.xx"; xy: "eq.xy"; xz: "eq.xz"; ya: "eq.ya"; yb: "eq.yb"; yc: "eq.yc"; yd: "eq.yd"; ye: "eq.ye"; yf: "eq.yf"; yg: "eq.yg"; yh: "eq.yh"; yi: "eq.yi"; yj: "eq.yj"; yk: "eq.yk"; yl: "eq.yl"; ym: "eq.ym"; yn: "eq.yn"; yo: "eq.yo"; yp: "eq.yp"; yq: "eq.yq"; yr: "eq.yr"; ys: "eq.ys"; yt: "eq.yt"; yu: "eq.yu"; yv: "eq.yv"; yw: "eq.yw"; yx: "eq.yx"; yy: "eq.yy"; yz: "eq.yz"; za: "eq.za"; zb: "eq.zb"; zc: "eq.zc"; zd: "eq.zd"; ze: "eq.ze"; zf: "eq.zf"; zg: "eq.zg"; zh: "eq.zh"; zi: "eq.zi"; zj: "eq.zj"; zk: "eq.zk"; zl: "eq.zl"; zm: "eq.zm"; zn: "eq.zn"; zo: "eq.zo"; zp: "eq.zp"; zq: "eq.zq"; zr: "eq.zr"; zs: "eq.zs"; zt: "eq.zt"; zu: "eq.zu"; zv: "eq.zv"; zw: "eq.zw"; zx: "eq.zx"; zy: "eq.zy"; zz: "eq.zz"; }; er: { aa: "er.aa"; ab: "er.ab"; ac: "er.ac"; ad: "er.ad"; ae: "er.ae"; af: "er.af"; ag: "er.ag"; ah: "er.ah"; ai: "er.ai"; aj: "er.aj"; ak: "er.ak"; al: "er.al"; am: "er.am"; an: "er.an"; ao: "er.ao"; ap: "er.ap"; aq: "er.aq"; ar: "er.ar"; as: "er.as"; at: "er.at"; au: "er.au"; av: "er.av"; aw: "er.aw"; ax: "er.ax"; ay: "er.ay"; az: "er.az"; ba: "er.ba"; bb: "er.bb"; bc: "er.bc"; bd: "er.bd"; be: "er.be"; bf: "er.bf"; bg: "er.bg"; bh: "er.bh"; bi: "er.bi"; bj: "er.bj"; bk: "er.bk"; bl: "er.bl"; bm: "er.bm"; bn: "er.bn"; bo: "er.bo"; bp: "er.bp"; bq: "er.bq"; br: "er.br"; bs: "er.bs"; bt: "er.bt"; bu: "er.bu"; bv: "er.bv"; bw: "er.bw"; bx: "er.bx"; by: "er.by"; bz: "er.bz"; ca: "er.ca"; cb: "er.cb"; cc: "er.cc"; cd: "er.cd"; ce: "er.ce"; cf: "er.cf"; cg: "er.cg"; ch: "er.ch"; ci: "er.ci"; cj: "er.cj"; ck: "er.ck"; cl: "er.cl"; cm: "er.cm"; cn: "er.cn"; co: "er.co"; cp: "er.cp"; cq: "er.cq"; cr: "er.cr"; cs: "er.cs"; ct: "er.ct"; cu: "er.cu"; cv: "er.cv"; cw: "er.cw"; cx: "er.cx"; cy: "er.cy"; cz: "er.cz"; da: "er.da"; db: "er.db"; dc: "er.dc"; dd: "er.dd"; de: "er.de"; df: "er.df"; dg: "er.dg"; dh: "er.dh"; di: "er.di"; dj: "er.dj"; dk: "er.dk"; dl: "er.dl"; dm: "er.dm"; dn: "er.dn"; do: "er.do"; dp: "er.dp"; dq: "er.dq"; dr: "er.dr"; ds: "er.ds"; dt: "er.dt"; du: "er.du"; dv: "er.dv"; dw: "er.dw"; dx: "er.dx"; dy: "er.dy"; dz: "er.dz"; ea: "er.ea"; eb: "er.eb"; ec: "er.ec"; ed: "er.ed"; ee: "er.ee"; ef: "er.ef"; eg: "er.eg"; eh: "er.eh"; ei: "er.ei"; ej: "er.ej"; ek: "er.ek"; el: "er.el"; em: "er.em"; en: "er.en"; eo: "er.eo"; ep: "er.ep"; eq: "er.eq"; er: "er.er"; es: "er.es"; et: "er.et"; eu: "er.eu"; ev: "er.ev"; ew: "er.ew"; ex: "er.ex"; ey: "er.ey"; ez: "er.ez"; fa: "er.fa"; fb: "er.fb"; fc: "er.fc"; fd: "er.fd"; fe: "er.fe"; ff: "er.ff"; fg: "er.fg"; fh: "er.fh"; fi: "er.fi"; fj: "er.fj"; fk: "er.fk"; fl: "er.fl"; fm: "er.fm"; fn: "er.fn"; fo: "er.fo"; fp: "er.fp"; fq: "er.fq"; fr: "er.fr"; fs: "er.fs"; ft: "er.ft"; fu: "er.fu"; fv: "er.fv"; fw: "er.fw"; fx: "er.fx"; fy: "er.fy"; fz: "er.fz"; ga: "er.ga"; gb: "er.gb"; gc: "er.gc"; gd: "er.gd"; ge: "er.ge"; gf: "er.gf"; gg: "er.gg"; gh: "er.gh"; gi: "er.gi"; gj: "er.gj"; gk: "er.gk"; gl: "er.gl"; gm: "er.gm"; gn: "er.gn"; go: "er.go"; gp: "er.gp"; gq: "er.gq"; gr: "er.gr"; gs: "er.gs"; gt: "er.gt"; gu: "er.gu"; gv: "er.gv"; gw: "er.gw"; gx: "er.gx"; gy: "er.gy"; gz: "er.gz"; ha: "er.ha"; hb: "er.hb"; hc: "er.hc"; hd: "er.hd"; he: "er.he"; hf: "er.hf"; hg: "er.hg"; hh: "er.hh"; hi: "er.hi"; hj: "er.hj"; hk: "er.hk"; hl: "er.hl"; hm: "er.hm"; hn: "er.hn"; ho: "er.ho"; hp: "er.hp"; hq: "er.hq"; hr: "er.hr"; hs: "er.hs"; ht: "er.ht"; hu: "er.hu"; hv: "er.hv"; hw: "er.hw"; hx: "er.hx"; hy: "er.hy"; hz: "er.hz"; ia: "er.ia"; ib: "er.ib"; ic: "er.ic"; id: "er.id"; ie: "er.ie"; if: "er.if"; ig: "er.ig"; ih: "er.ih"; ii: "er.ii"; ij: "er.ij"; ik: "er.ik"; il: "er.il"; im: "er.im"; in: "er.in"; io: "er.io"; ip: "er.ip"; iq: "er.iq"; ir: "er.ir"; is: "er.is"; it: "er.it"; iu: "er.iu"; iv: "er.iv"; iw: "er.iw"; ix: "er.ix"; iy: "er.iy"; iz: "er.iz"; ja: "er.ja"; jb: "er.jb"; jc: "er.jc"; jd: "er.jd"; je: "er.je"; jf: "er.jf"; jg: "er.jg"; jh: "er.jh"; ji: "er.ji"; jj: "er.jj"; jk: "er.jk"; jl: "er.jl"; jm: "er.jm"; jn: "er.jn"; jo: "er.jo"; jp: "er.jp"; jq: "er.jq"; jr: "er.jr"; js: "er.js"; jt: "er.jt"; ju: "er.ju"; jv: "er.jv"; jw: "er.jw"; jx: "er.jx"; jy: "er.jy"; jz: "er.jz"; ka: "er.ka"; kb: "er.kb"; kc: "er.kc"; kd: "er.kd"; ke: "er.ke"; kf: "er.kf"; kg: "er.kg"; kh: "er.kh"; ki: "er.ki"; kj: "er.kj"; kk: "er.kk"; kl: "er.kl"; km: "er.km"; kn: "er.kn"; ko: "er.ko"; kp: "er.kp"; kq: "er.kq"; kr: "er.kr"; ks: "er.ks"; kt: "er.kt"; ku: "er.ku"; kv: "er.kv"; kw: "er.kw"; kx: "er.kx"; ky: "er.ky"; kz: "er.kz"; la: "er.la"; lb: "er.lb"; lc: "er.lc"; ld: "er.ld"; le: "er.le"; lf: "er.lf"; lg: "er.lg"; lh: "er.lh"; li: "er.li"; lj: "er.lj"; lk: "er.lk"; ll: "er.ll"; lm: "er.lm"; ln: "er.ln"; lo: "er.lo"; lp: "er.lp"; lq: "er.lq"; lr: "er.lr"; ls: "er.ls"; lt: "er.lt"; lu: "er.lu"; lv: "er.lv"; lw: "er.lw"; lx: "er.lx"; ly: "er.ly"; lz: "er.lz"; ma: "er.ma"; mb: "er.mb"; mc: "er.mc"; md: "er.md"; me: "er.me"; mf: "er.mf"; mg: "er.mg"; mh: "er.mh"; mi: "er.mi"; mj: "er.mj"; mk: "er.mk"; ml: "er.ml"; mm: "er.mm"; mn: "er.mn"; mo: "er.mo"; mp: "er.mp"; mq: "er.mq"; mr: "er.mr"; ms: "er.ms"; mt: "er.mt"; mu: "er.mu"; mv: "er.mv"; mw: "er.mw"; mx: "er.mx"; my: "er.my"; mz: "er.mz"; na: "er.na"; nb: "er.nb"; nc: "er.nc"; nd: "er.nd"; ne: "er.ne"; nf: "er.nf"; ng: "er.ng"; nh: "er.nh"; ni: "er.ni"; nj: "er.nj"; nk: "er.nk"; nl: "er.nl"; nm: "er.nm"; nn: "er.nn"; no: "er.no"; np: "er.np"; nq: "er.nq"; nr: "er.nr"; ns: "er.ns"; nt: "er.nt"; nu: "er.nu"; nv: "er.nv"; nw: "er.nw"; nx: "er.nx"; ny: "er.ny"; nz: "er.nz"; oa: "er.oa"; ob: "er.ob"; oc: "er.oc"; od: "er.od"; oe: "er.oe"; of: "er.of"; og: "er.og"; oh: "er.oh"; oi: "er.oi"; oj: "er.oj"; ok: "er.ok"; ol: "er.ol"; om: "er.om"; on: "er.on"; oo: "er.oo"; op: "er.op"; oq: "er.oq"; or: "er.or"; os: "er.os"; ot: "er.ot"; ou: "er.ou"; ov: "er.ov"; ow: "er.ow"; ox: "er.ox"; oy: "er.oy"; oz: "er.oz"; pa: "er.pa"; pb: "er.pb"; pc: "er.pc"; pd: "er.pd"; pe: "er.pe"; pf: "er.pf"; pg: "er.pg"; ph: "er.ph"; pi: "er.pi"; pj: "er.pj"; pk: "er.pk"; pl: "er.pl"; pm: "er.pm"; pn: "er.pn"; po: "er.po"; pp: "er.pp"; pq: "er.pq"; pr: "er.pr"; ps: "er.ps"; pt: "er.pt"; pu: "er.pu"; pv: "er.pv"; pw: "er.pw"; px: "er.px"; py: "er.py"; pz: "er.pz"; qa: "er.qa"; qb: "er.qb"; qc: "er.qc"; qd: "er.qd"; qe: "er.qe"; qf: "er.qf"; qg: "er.qg"; qh: "er.qh"; qi: "er.qi"; qj: "er.qj"; qk: "er.qk"; ql: "er.ql"; qm: "er.qm"; qn: "er.qn"; qo: "er.qo"; qp: "er.qp"; qq: "er.qq"; qr: "er.qr"; qs: "er.qs"; qt: "er.qt"; qu: "er.qu"; qv: "er.qv"; qw: "er.qw"; qx: "er.qx"; qy: "er.qy"; qz: "er.qz"; ra: "er.ra"; rb: "er.rb"; rc: "er.rc"; rd: "er.rd"; re: "er.re"; rf: "er.rf"; rg: "er.rg"; rh: "er.rh"; ri: "er.ri"; rj: "er.rj"; rk: "er.rk"; rl: "er.rl"; rm: "er.rm"; rn: "er.rn"; ro: "er.ro"; rp: "er.rp"; rq: "er.rq"; rr: "er.rr"; rs: "er.rs"; rt: "er.rt"; ru: "er.ru"; rv: "er.rv"; rw: "er.rw"; rx: "er.rx"; ry: "er.ry"; rz: "er.rz"; sa: "er.sa"; sb: "er.sb"; sc: "er.sc"; sd: "er.sd"; se: "er.se"; sf: "er.sf"; sg: "er.sg"; sh: "er.sh"; si: "er.si"; sj: "er.sj"; sk: "er.sk"; sl: "er.sl"; sm: "er.sm"; sn: "er.sn"; so: "er.so"; sp: "er.sp"; sq: "er.sq"; sr: "er.sr"; ss: "er.ss"; st: "er.st"; su: "er.su"; sv: "er.sv"; sw: "er.sw"; sx: "er.sx"; sy: "er.sy"; sz: "er.sz"; ta: "er.ta"; tb: "er.tb"; tc: "er.tc"; td: "er.td"; te: "er.te"; tf: "er.tf"; tg: "er.tg"; th: "er.th"; ti: "er.ti"; tj: "er.tj"; tk: "er.tk"; tl: "er.tl"; tm: "er.tm"; tn: "er.tn"; to: "er.to"; tp: "er.tp"; tq: "er.tq"; tr: "er.tr"; ts: "er.ts"; tt: "er.tt"; tu: "er.tu"; tv: "er.tv"; tw: "er.tw"; tx: "er.tx"; ty: "er.ty"; tz: "er.tz"; ua: "er.ua"; ub: "er.ub"; uc: "er.uc"; ud: "er.ud"; ue: "er.ue"; uf: "er.uf"; ug: "er.ug"; uh: "er.uh"; ui: "er.ui"; uj: "er.uj"; uk: "er.uk"; ul: "er.ul"; um: "er.um"; un: "er.un"; uo: "er.uo"; up: "er.up"; uq: "er.uq"; ur: "er.ur"; us: "er.us"; ut: "er.ut"; uu: "er.uu"; uv: "er.uv"; uw: "er.uw"; ux: "er.ux"; uy: "er.uy"; uz: "er.uz"; va: "er.va"; vb: "er.vb"; vc: "er.vc"; vd: "er.vd"; ve: "er.ve"; vf: "er.vf"; vg: "er.vg"; vh: "er.vh"; vi: "er.vi"; vj: "er.vj"; vk: "er.vk"; vl: "er.vl"; vm: "er.vm"; vn: "er.vn"; vo: "er.vo"; vp: "er.vp"; vq: "er.vq"; vr: "er.vr"; vs: "er.vs"; vt: "er.vt"; vu: "er.vu"; vv: "er.vv"; vw: "er.vw"; vx: "er.vx"; vy: "er.vy"; vz: "er.vz"; wa: "er.wa"; wb: "er.wb"; wc: "er.wc"; wd: "er.wd"; we: "er.we"; wf: "er.wf"; wg: "er.wg"; wh: "er.wh"; wi: "er.wi"; wj: "er.wj"; wk: "er.wk"; wl: "er.wl"; wm: "er.wm"; wn: "er.wn"; wo: "er.wo"; wp: "er.wp"; wq: "er.wq"; wr: "er.wr"; ws: "er.ws"; wt: "er.wt"; wu: "er.wu"; wv: "er.wv"; ww: "er.ww"; wx: "er.wx"; wy: "er.wy"; wz: "er.wz"; xa: "er.xa"; xb: "er.xb"; xc: "er.xc"; xd: "er.xd"; xe: "er.xe"; xf: "er.xf"; xg: "er.xg"; xh: "er.xh"; xi: "er.xi"; xj: "er.xj"; xk: "er.xk"; xl: "er.xl"; xm: "er.xm"; xn: "er.xn"; xo: "er.xo"; xp: "er.xp"; xq: "er.xq"; xr: "er.xr"; xs: "er.xs"; xt: "er.xt"; xu: "er.xu"; xv: "er.xv"; xw: "er.xw"; xx: "er.xx"; xy: "er.xy"; xz: "er.xz"; ya: "er.ya"; yb: "er.yb"; yc: "er.yc"; yd: "er.yd"; ye: "er.ye"; yf: "er.yf"; yg: "er.yg"; yh: "er.yh"; yi: "er.yi"; yj: "er.yj"; yk: "er.yk"; yl: "er.yl"; ym: "er.ym"; yn: "er.yn"; yo: "er.yo"; yp: "er.yp"; yq: "er.yq"; yr: "er.yr"; ys: "er.ys"; yt: "er.yt"; yu: "er.yu"; yv: "er.yv"; yw: "er.yw"; yx: "er.yx"; yy: "er.yy"; yz: "er.yz"; za: "er.za"; zb: "er.zb"; zc: "er.zc"; zd: "er.zd"; ze: "er.ze"; zf: "er.zf"; zg: "er.zg"; zh: "er.zh"; zi: "er.zi"; zj: "er.zj"; zk: "er.zk"; zl: "er.zl"; zm: "er.zm"; zn: "er.zn"; zo: "er.zo"; zp: "er.zp"; zq: "er.zq"; zr: "er.zr"; zs: "er.zs"; zt: "er.zt"; zu: "er.zu"; zv: "er.zv"; zw: "er.zw"; zx: "er.zx"; zy: "er.zy"; zz: "er.zz"; }; es: { aa: "es.aa"; ab: "es.ab"; ac: "es.ac"; ad: "es.ad"; ae: "es.ae"; af: "es.af"; ag: "es.ag"; ah: "es.ah"; ai: "es.ai"; aj: "es.aj"; ak: "es.ak"; al: "es.al"; am: "es.am"; an: "es.an"; ao: "es.ao"; ap: "es.ap"; aq: "es.aq"; ar: "es.ar"; as: "es.as"; at: "es.at"; au: "es.au"; av: "es.av"; aw: "es.aw"; ax: "es.ax"; ay: "es.ay"; az: "es.az"; ba: "es.ba"; bb: "es.bb"; bc: "es.bc"; bd: "es.bd"; be: "es.be"; bf: "es.bf"; bg: "es.bg"; bh: "es.bh"; bi: "es.bi"; bj: "es.bj"; bk: "es.bk"; bl: "es.bl"; bm: "es.bm"; bn: "es.bn"; bo: "es.bo"; bp: "es.bp"; bq: "es.bq"; br: "es.br"; bs: "es.bs"; bt: "es.bt"; bu: "es.bu"; bv: "es.bv"; bw: "es.bw"; bx: "es.bx"; by: "es.by"; bz: "es.bz"; ca: "es.ca"; cb: "es.cb"; cc: "es.cc"; cd: "es.cd"; ce: "es.ce"; cf: "es.cf"; cg: "es.cg"; ch: "es.ch"; ci: "es.ci"; cj: "es.cj"; ck: "es.ck"; cl: "es.cl"; cm: "es.cm"; cn: "es.cn"; co: "es.co"; cp: "es.cp"; cq: "es.cq"; cr: "es.cr"; cs: "es.cs"; ct: "es.ct"; cu: "es.cu"; cv: "es.cv"; cw: "es.cw"; cx: "es.cx"; cy: "es.cy"; cz: "es.cz"; da: "es.da"; db: "es.db"; dc: "es.dc"; dd: "es.dd"; de: "es.de"; df: "es.df"; dg: "es.dg"; dh: "es.dh"; di: "es.di"; dj: "es.dj"; dk: "es.dk"; dl: "es.dl"; dm: "es.dm"; dn: "es.dn"; do: "es.do"; dp: "es.dp"; dq: "es.dq"; dr: "es.dr"; ds: "es.ds"; dt: "es.dt"; du: "es.du"; dv: "es.dv"; dw: "es.dw"; dx: "es.dx"; dy: "es.dy"; dz: "es.dz"; ea: "es.ea"; eb: "es.eb"; ec: "es.ec"; ed: "es.ed"; ee: "es.ee"; ef: "es.ef"; eg: "es.eg"; eh: "es.eh"; ei: "es.ei"; ej: "es.ej"; ek: "es.ek"; el: "es.el"; em: "es.em"; en: "es.en"; eo: "es.eo"; ep: "es.ep"; eq: "es.eq"; er: "es.er"; es: "es.es"; et: "es.et"; eu: "es.eu"; ev: "es.ev"; ew: "es.ew"; ex: "es.ex"; ey: "es.ey"; ez: "es.ez"; fa: "es.fa"; fb: "es.fb"; fc: "es.fc"; fd: "es.fd"; fe: "es.fe"; ff: "es.ff"; fg: "es.fg"; fh: "es.fh"; fi: "es.fi"; fj: "es.fj"; fk: "es.fk"; fl: "es.fl"; fm: "es.fm"; fn: "es.fn"; fo: "es.fo"; fp: "es.fp"; fq: "es.fq"; fr: "es.fr"; fs: "es.fs"; ft: "es.ft"; fu: "es.fu"; fv: "es.fv"; fw: "es.fw"; fx: "es.fx"; fy: "es.fy"; fz: "es.fz"; ga: "es.ga"; gb: "es.gb"; gc: "es.gc"; gd: "es.gd"; ge: "es.ge"; gf: "es.gf"; gg: "es.gg"; gh: "es.gh"; gi: "es.gi"; gj: "es.gj"; gk: "es.gk"; gl: "es.gl"; gm: "es.gm"; gn: "es.gn"; go: "es.go"; gp: "es.gp"; gq: "es.gq"; gr: "es.gr"; gs: "es.gs"; gt: "es.gt"; gu: "es.gu"; gv: "es.gv"; gw: "es.gw"; gx: "es.gx"; gy: "es.gy"; gz: "es.gz"; ha: "es.ha"; hb: "es.hb"; hc: "es.hc"; hd: "es.hd"; he: "es.he"; hf: "es.hf"; hg: "es.hg"; hh: "es.hh"; hi: "es.hi"; hj: "es.hj"; hk: "es.hk"; hl: "es.hl"; hm: "es.hm"; hn: "es.hn"; ho: "es.ho"; hp: "es.hp"; hq: "es.hq"; hr: "es.hr"; hs: "es.hs"; ht: "es.ht"; hu: "es.hu"; hv: "es.hv"; hw: "es.hw"; hx: "es.hx"; hy: "es.hy"; hz: "es.hz"; ia: "es.ia"; ib: "es.ib"; ic: "es.ic"; id: "es.id"; ie: "es.ie"; if: "es.if"; ig: "es.ig"; ih: "es.ih"; ii: "es.ii"; ij: "es.ij"; ik: "es.ik"; il: "es.il"; im: "es.im"; in: "es.in"; io: "es.io"; ip: "es.ip"; iq: "es.iq"; ir: "es.ir"; is: "es.is"; it: "es.it"; iu: "es.iu"; iv: "es.iv"; iw: "es.iw"; ix: "es.ix"; iy: "es.iy"; iz: "es.iz"; ja: "es.ja"; jb: "es.jb"; jc: "es.jc"; jd: "es.jd"; je: "es.je"; jf: "es.jf"; jg: "es.jg"; jh: "es.jh"; ji: "es.ji"; jj: "es.jj"; jk: "es.jk"; jl: "es.jl"; jm: "es.jm"; jn: "es.jn"; jo: "es.jo"; jp: "es.jp"; jq: "es.jq"; jr: "es.jr"; js: "es.js"; jt: "es.jt"; ju: "es.ju"; jv: "es.jv"; jw: "es.jw"; jx: "es.jx"; jy: "es.jy"; jz: "es.jz"; ka: "es.ka"; kb: "es.kb"; kc: "es.kc"; kd: "es.kd"; ke: "es.ke"; kf: "es.kf"; kg: "es.kg"; kh: "es.kh"; ki: "es.ki"; kj: "es.kj"; kk: "es.kk"; kl: "es.kl"; km: "es.km"; kn: "es.kn"; ko: "es.ko"; kp: "es.kp"; kq: "es.kq"; kr: "es.kr"; ks: "es.ks"; kt: "es.kt"; ku: "es.ku"; kv: "es.kv"; kw: "es.kw"; kx: "es.kx"; ky: "es.ky"; kz: "es.kz"; la: "es.la"; lb: "es.lb"; lc: "es.lc"; ld: "es.ld"; le: "es.le"; lf: "es.lf"; lg: "es.lg"; lh: "es.lh"; li: "es.li"; lj: "es.lj"; lk: "es.lk"; ll: "es.ll"; lm: "es.lm"; ln: "es.ln"; lo: "es.lo"; lp: "es.lp"; lq: "es.lq"; lr: "es.lr"; ls: "es.ls"; lt: "es.lt"; lu: "es.lu"; lv: "es.lv"; lw: "es.lw"; lx: "es.lx"; ly: "es.ly"; lz: "es.lz"; ma: "es.ma"; mb: "es.mb"; mc: "es.mc"; md: "es.md"; me: "es.me"; mf: "es.mf"; mg: "es.mg"; mh: "es.mh"; mi: "es.mi"; mj: "es.mj"; mk: "es.mk"; ml: "es.ml"; mm: "es.mm"; mn: "es.mn"; mo: "es.mo"; mp: "es.mp"; mq: "es.mq"; mr: "es.mr"; ms: "es.ms"; mt: "es.mt"; mu: "es.mu"; mv: "es.mv"; mw: "es.mw"; mx: "es.mx"; my: "es.my"; mz: "es.mz"; na: "es.na"; nb: "es.nb"; nc: "es.nc"; nd: "es.nd"; ne: "es.ne"; nf: "es.nf"; ng: "es.ng"; nh: "es.nh"; ni: "es.ni"; nj: "es.nj"; nk: "es.nk"; nl: "es.nl"; nm: "es.nm"; nn: "es.nn"; no: "es.no"; np: "es.np"; nq: "es.nq"; nr: "es.nr"; ns: "es.ns"; nt: "es.nt"; nu: "es.nu"; nv: "es.nv"; nw: "es.nw"; nx: "es.nx"; ny: "es.ny"; nz: "es.nz"; oa: "es.oa"; ob: "es.ob"; oc: "es.oc"; od: "es.od"; oe: "es.oe"; of: "es.of"; og: "es.og"; oh: "es.oh"; oi: "es.oi"; oj: "es.oj"; ok: "es.ok"; ol: "es.ol"; om: "es.om"; on: "es.on"; oo: "es.oo"; op: "es.op"; oq: "es.oq"; or: "es.or"; os: "es.os"; ot: "es.ot"; ou: "es.ou"; ov: "es.ov"; ow: "es.ow"; ox: "es.ox"; oy: "es.oy"; oz: "es.oz"; pa: "es.pa"; pb: "es.pb"; pc: "es.pc"; pd: "es.pd"; pe: "es.pe"; pf: "es.pf"; pg: "es.pg"; ph: "es.ph"; pi: "es.pi"; pj: "es.pj"; pk: "es.pk"; pl: "es.pl"; pm: "es.pm"; pn: "es.pn"; po: "es.po"; pp: "es.pp"; pq: "es.pq"; pr: "es.pr"; ps: "es.ps"; pt: "es.pt"; pu: "es.pu"; pv: "es.pv"; pw: "es.pw"; px: "es.px"; py: "es.py"; pz: "es.pz"; qa: "es.qa"; qb: "es.qb"; qc: "es.qc"; qd: "es.qd"; qe: "es.qe"; qf: "es.qf"; qg: "es.qg"; qh: "es.qh"; qi: "es.qi"; qj: "es.qj"; qk: "es.qk"; ql: "es.ql"; qm: "es.qm"; qn: "es.qn"; qo: "es.qo"; qp: "es.qp"; qq: "es.qq"; qr: "es.qr"; qs: "es.qs"; qt: "es.qt"; qu: "es.qu"; qv: "es.qv"; qw: "es.qw"; qx: "es.qx"; qy: "es.qy"; qz: "es.qz"; ra: "es.ra"; rb: "es.rb"; rc: "es.rc"; rd: "es.rd"; re: "es.re"; rf: "es.rf"; rg: "es.rg"; rh: "es.rh"; ri: "es.ri"; rj: "es.rj"; rk: "es.rk"; rl: "es.rl"; rm: "es.rm"; rn: "es.rn"; ro: "es.ro"; rp: "es.rp"; rq: "es.rq"; rr: "es.rr"; rs: "es.rs"; rt: "es.rt"; ru: "es.ru"; rv: "es.rv"; rw: "es.rw"; rx: "es.rx"; ry: "es.ry"; rz: "es.rz"; sa: "es.sa"; sb: "es.sb"; sc: "es.sc"; sd: "es.sd"; se: "es.se"; sf: "es.sf"; sg: "es.sg"; sh: "es.sh"; si: "es.si"; sj: "es.sj"; sk: "es.sk"; sl: "es.sl"; sm: "es.sm"; sn: "es.sn"; so: "es.so"; sp: "es.sp"; sq: "es.sq"; sr: "es.sr"; ss: "es.ss"; st: "es.st"; su: "es.su"; sv: "es.sv"; sw: "es.sw"; sx: "es.sx"; sy: "es.sy"; sz: "es.sz"; ta: "es.ta"; tb: "es.tb"; tc: "es.tc"; td: "es.td"; te: "es.te"; tf: "es.tf"; tg: "es.tg"; th: "es.th"; ti: "es.ti"; tj: "es.tj"; tk: "es.tk"; tl: "es.tl"; tm: "es.tm"; tn: "es.tn"; to: "es.to"; tp: "es.tp"; tq: "es.tq"; tr: "es.tr"; ts: "es.ts"; tt: "es.tt"; tu: "es.tu"; tv: "es.tv"; tw: "es.tw"; tx: "es.tx"; ty: "es.ty"; tz: "es.tz"; ua: "es.ua"; ub: "es.ub"; uc: "es.uc"; ud: "es.ud"; ue: "es.ue"; uf: "es.uf"; ug: "es.ug"; uh: "es.uh"; ui: "es.ui"; uj: "es.uj"; uk: "es.uk"; ul: "es.ul"; um: "es.um"; un: "es.un"; uo: "es.uo"; up: "es.up"; uq: "es.uq"; ur: "es.ur"; us: "es.us"; ut: "es.ut"; uu: "es.uu"; uv: "es.uv"; uw: "es.uw"; ux: "es.ux"; uy: "es.uy"; uz: "es.uz"; va: "es.va"; vb: "es.vb"; vc: "es.vc"; vd: "es.vd"; ve: "es.ve"; vf: "es.vf"; vg: "es.vg"; vh: "es.vh"; vi: "es.vi"; vj: "es.vj"; vk: "es.vk"; vl: "es.vl"; vm: "es.vm"; vn: "es.vn"; vo: "es.vo"; vp: "es.vp"; vq: "es.vq"; vr: "es.vr"; vs: "es.vs"; vt: "es.vt"; vu: "es.vu"; vv: "es.vv"; vw: "es.vw"; vx: "es.vx"; vy: "es.vy"; vz: "es.vz"; wa: "es.wa"; wb: "es.wb"; wc: "es.wc"; wd: "es.wd"; we: "es.we"; wf: "es.wf"; wg: "es.wg"; wh: "es.wh"; wi: "es.wi"; wj: "es.wj"; wk: "es.wk"; wl: "es.wl"; wm: "es.wm"; wn: "es.wn"; wo: "es.wo"; wp: "es.wp"; wq: "es.wq"; wr: "es.wr"; ws: "es.ws"; wt: "es.wt"; wu: "es.wu"; wv: "es.wv"; ww: "es.ww"; wx: "es.wx"; wy: "es.wy"; wz: "es.wz"; xa: "es.xa"; xb: "es.xb"; xc: "es.xc"; xd: "es.xd"; xe: "es.xe"; xf: "es.xf"; xg: "es.xg"; xh: "es.xh"; xi: "es.xi"; xj: "es.xj"; xk: "es.xk"; xl: "es.xl"; xm: "es.xm"; xn: "es.xn"; xo: "es.xo"; xp: "es.xp"; xq: "es.xq"; xr: "es.xr"; xs: "es.xs"; xt: "es.xt"; xu: "es.xu"; xv: "es.xv"; xw: "es.xw"; xx: "es.xx"; xy: "es.xy"; xz: "es.xz"; ya: "es.ya"; yb: "es.yb"; yc: "es.yc"; yd: "es.yd"; ye: "es.ye"; yf: "es.yf"; yg: "es.yg"; yh: "es.yh"; yi: "es.yi"; yj: "es.yj"; yk: "es.yk"; yl: "es.yl"; ym: "es.ym"; yn: "es.yn"; yo: "es.yo"; yp: "es.yp"; yq: "es.yq"; yr: "es.yr"; ys: "es.ys"; yt: "es.yt"; yu: "es.yu"; yv: "es.yv"; yw: "es.yw"; yx: "es.yx"; yy: "es.yy"; yz: "es.yz"; za: "es.za"; zb: "es.zb"; zc: "es.zc"; zd: "es.zd"; ze: "es.ze"; zf: "es.zf"; zg: "es.zg"; zh: "es.zh"; zi: "es.zi"; zj: "es.zj"; zk: "es.zk"; zl: "es.zl"; zm: "es.zm"; zn: "es.zn"; zo: "es.zo"; zp: "es.zp"; zq: "es.zq"; zr: "es.zr"; zs: "es.zs"; zt: "es.zt"; zu: "es.zu"; zv: "es.zv"; zw: "es.zw"; zx: "es.zx"; zy: "es.zy"; zz: "es.zz"; }; et: { aa: "et.aa"; ab: "et.ab"; ac: "et.ac"; ad: "et.ad"; ae: "et.ae"; af: "et.af"; ag: "et.ag"; ah: "et.ah"; ai: "et.ai"; aj: "et.aj"; ak: "et.ak"; al: "et.al"; am: "et.am"; an: "et.an"; ao: "et.ao"; ap: "et.ap"; aq: "et.aq"; ar: "et.ar"; as: "et.as"; at: "et.at"; au: "et.au"; av: "et.av"; aw: "et.aw"; ax: "et.ax"; ay: "et.ay"; az: "et.az"; ba: "et.ba"; bb: "et.bb"; bc: "et.bc"; bd: "et.bd"; be: "et.be"; bf: "et.bf"; bg: "et.bg"; bh: "et.bh"; bi: "et.bi"; bj: "et.bj"; bk: "et.bk"; bl: "et.bl"; bm: "et.bm"; bn: "et.bn"; bo: "et.bo"; bp: "et.bp"; bq: "et.bq"; br: "et.br"; bs: "et.bs"; bt: "et.bt"; bu: "et.bu"; bv: "et.bv"; bw: "et.bw"; bx: "et.bx"; by: "et.by"; bz: "et.bz"; ca: "et.ca"; cb: "et.cb"; cc: "et.cc"; cd: "et.cd"; ce: "et.ce"; cf: "et.cf"; cg: "et.cg"; ch: "et.ch"; ci: "et.ci"; cj: "et.cj"; ck: "et.ck"; cl: "et.cl"; cm: "et.cm"; cn: "et.cn"; co: "et.co"; cp: "et.cp"; cq: "et.cq"; cr: "et.cr"; cs: "et.cs"; ct: "et.ct"; cu: "et.cu"; cv: "et.cv"; cw: "et.cw"; cx: "et.cx"; cy: "et.cy"; cz: "et.cz"; da: "et.da"; db: "et.db"; dc: "et.dc"; dd: "et.dd"; de: "et.de"; df: "et.df"; dg: "et.dg"; dh: "et.dh"; di: "et.di"; dj: "et.dj"; dk: "et.dk"; dl: "et.dl"; dm: "et.dm"; dn: "et.dn"; do: "et.do"; dp: "et.dp"; dq: "et.dq"; dr: "et.dr"; ds: "et.ds"; dt: "et.dt"; du: "et.du"; dv: "et.dv"; dw: "et.dw"; dx: "et.dx"; dy: "et.dy"; dz: "et.dz"; ea: "et.ea"; eb: "et.eb"; ec: "et.ec"; ed: "et.ed"; ee: "et.ee"; ef: "et.ef"; eg: "et.eg"; eh: "et.eh"; ei: "et.ei"; ej: "et.ej"; ek: "et.ek"; el: "et.el"; em: "et.em"; en: "et.en"; eo: "et.eo"; ep: "et.ep"; eq: "et.eq"; er: "et.er"; es: "et.es"; et: "et.et"; eu: "et.eu"; ev: "et.ev"; ew: "et.ew"; ex: "et.ex"; ey: "et.ey"; ez: "et.ez"; fa: "et.fa"; fb: "et.fb"; fc: "et.fc"; fd: "et.fd"; fe: "et.fe"; ff: "et.ff"; fg: "et.fg"; fh: "et.fh"; fi: "et.fi"; fj: "et.fj"; fk: "et.fk"; fl: "et.fl"; fm: "et.fm"; fn: "et.fn"; fo: "et.fo"; fp: "et.fp"; fq: "et.fq"; fr: "et.fr"; fs: "et.fs"; ft: "et.ft"; fu: "et.fu"; fv: "et.fv"; fw: "et.fw"; fx: "et.fx"; fy: "et.fy"; fz: "et.fz"; ga: "et.ga"; gb: "et.gb"; gc: "et.gc"; gd: "et.gd"; ge: "et.ge"; gf: "et.gf"; gg: "et.gg"; gh: "et.gh"; gi: "et.gi"; gj: "et.gj"; gk: "et.gk"; gl: "et.gl"; gm: "et.gm"; gn: "et.gn"; go: "et.go"; gp: "et.gp"; gq: "et.gq"; gr: "et.gr"; gs: "et.gs"; gt: "et.gt"; gu: "et.gu"; gv: "et.gv"; gw: "et.gw"; gx: "et.gx"; gy: "et.gy"; gz: "et.gz"; ha: "et.ha"; hb: "et.hb"; hc: "et.hc"; hd: "et.hd"; he: "et.he"; hf: "et.hf"; hg: "et.hg"; hh: "et.hh"; hi: "et.hi"; hj: "et.hj"; hk: "et.hk"; hl: "et.hl"; hm: "et.hm"; hn: "et.hn"; ho: "et.ho"; hp: "et.hp"; hq: "et.hq"; hr: "et.hr"; hs: "et.hs"; ht: "et.ht"; hu: "et.hu"; hv: "et.hv"; hw: "et.hw"; hx: "et.hx"; hy: "et.hy"; hz: "et.hz"; ia: "et.ia"; ib: "et.ib"; ic: "et.ic"; id: "et.id"; ie: "et.ie"; if: "et.if"; ig: "et.ig"; ih: "et.ih"; ii: "et.ii"; ij: "et.ij"; ik: "et.ik"; il: "et.il"; im: "et.im"; in: "et.in"; io: "et.io"; ip: "et.ip"; iq: "et.iq"; ir: "et.ir"; is: "et.is"; it: "et.it"; iu: "et.iu"; iv: "et.iv"; iw: "et.iw"; ix: "et.ix"; iy: "et.iy"; iz: "et.iz"; ja: "et.ja"; jb: "et.jb"; jc: "et.jc"; jd: "et.jd"; je: "et.je"; jf: "et.jf"; jg: "et.jg"; jh: "et.jh"; ji: "et.ji"; jj: "et.jj"; jk: "et.jk"; jl: "et.jl"; jm: "et.jm"; jn: "et.jn"; jo: "et.jo"; jp: "et.jp"; jq: "et.jq"; jr: "et.jr"; js: "et.js"; jt: "et.jt"; ju: "et.ju"; jv: "et.jv"; jw: "et.jw"; jx: "et.jx"; jy: "et.jy"; jz: "et.jz"; ka: "et.ka"; kb: "et.kb"; kc: "et.kc"; kd: "et.kd"; ke: "et.ke"; kf: "et.kf"; kg: "et.kg"; kh: "et.kh"; ki: "et.ki"; kj: "et.kj"; kk: "et.kk"; kl: "et.kl"; km: "et.km"; kn: "et.kn"; ko: "et.ko"; kp: "et.kp"; kq: "et.kq"; kr: "et.kr"; ks: "et.ks"; kt: "et.kt"; ku: "et.ku"; kv: "et.kv"; kw: "et.kw"; kx: "et.kx"; ky: "et.ky"; kz: "et.kz"; la: "et.la"; lb: "et.lb"; lc: "et.lc"; ld: "et.ld"; le: "et.le"; lf: "et.lf"; lg: "et.lg"; lh: "et.lh"; li: "et.li"; lj: "et.lj"; lk: "et.lk"; ll: "et.ll"; lm: "et.lm"; ln: "et.ln"; lo: "et.lo"; lp: "et.lp"; lq: "et.lq"; lr: "et.lr"; ls: "et.ls"; lt: "et.lt"; lu: "et.lu"; lv: "et.lv"; lw: "et.lw"; lx: "et.lx"; ly: "et.ly"; lz: "et.lz"; ma: "et.ma"; mb: "et.mb"; mc: "et.mc"; md: "et.md"; me: "et.me"; mf: "et.mf"; mg: "et.mg"; mh: "et.mh"; mi: "et.mi"; mj: "et.mj"; mk: "et.mk"; ml: "et.ml"; mm: "et.mm"; mn: "et.mn"; mo: "et.mo"; mp: "et.mp"; mq: "et.mq"; mr: "et.mr"; ms: "et.ms"; mt: "et.mt"; mu: "et.mu"; mv: "et.mv"; mw: "et.mw"; mx: "et.mx"; my: "et.my"; mz: "et.mz"; na: "et.na"; nb: "et.nb"; nc: "et.nc"; nd: "et.nd"; ne: "et.ne"; nf: "et.nf"; ng: "et.ng"; nh: "et.nh"; ni: "et.ni"; nj: "et.nj"; nk: "et.nk"; nl: "et.nl"; nm: "et.nm"; nn: "et.nn"; no: "et.no"; np: "et.np"; nq: "et.nq"; nr: "et.nr"; ns: "et.ns"; nt: "et.nt"; nu: "et.nu"; nv: "et.nv"; nw: "et.nw"; nx: "et.nx"; ny: "et.ny"; nz: "et.nz"; oa: "et.oa"; ob: "et.ob"; oc: "et.oc"; od: "et.od"; oe: "et.oe"; of: "et.of"; og: "et.og"; oh: "et.oh"; oi: "et.oi"; oj: "et.oj"; ok: "et.ok"; ol: "et.ol"; om: "et.om"; on: "et.on"; oo: "et.oo"; op: "et.op"; oq: "et.oq"; or: "et.or"; os: "et.os"; ot: "et.ot"; ou: "et.ou"; ov: "et.ov"; ow: "et.ow"; ox: "et.ox"; oy: "et.oy"; oz: "et.oz"; pa: "et.pa"; pb: "et.pb"; pc: "et.pc"; pd: "et.pd"; pe: "et.pe"; pf: "et.pf"; pg: "et.pg"; ph: "et.ph"; pi: "et.pi"; pj: "et.pj"; pk: "et.pk"; pl: "et.pl"; pm: "et.pm"; pn: "et.pn"; po: "et.po"; pp: "et.pp"; pq: "et.pq"; pr: "et.pr"; ps: "et.ps"; pt: "et.pt"; pu: "et.pu"; pv: "et.pv"; pw: "et.pw"; px: "et.px"; py: "et.py"; pz: "et.pz"; qa: "et.qa"; qb: "et.qb"; qc: "et.qc"; qd: "et.qd"; qe: "et.qe"; qf: "et.qf"; qg: "et.qg"; qh: "et.qh"; qi: "et.qi"; qj: "et.qj"; qk: "et.qk"; ql: "et.ql"; qm: "et.qm"; qn: "et.qn"; qo: "et.qo"; qp: "et.qp"; qq: "et.qq"; qr: "et.qr"; qs: "et.qs"; qt: "et.qt"; qu: "et.qu"; qv: "et.qv"; qw: "et.qw"; qx: "et.qx"; qy: "et.qy"; qz: "et.qz"; ra: "et.ra"; rb: "et.rb"; rc: "et.rc"; rd: "et.rd"; re: "et.re"; rf: "et.rf"; rg: "et.rg"; rh: "et.rh"; ri: "et.ri"; rj: "et.rj"; rk: "et.rk"; rl: "et.rl"; rm: "et.rm"; rn: "et.rn"; ro: "et.ro"; rp: "et.rp"; rq: "et.rq"; rr: "et.rr"; rs: "et.rs"; rt: "et.rt"; ru: "et.ru"; rv: "et.rv"; rw: "et.rw"; rx: "et.rx"; ry: "et.ry"; rz: "et.rz"; sa: "et.sa"; sb: "et.sb"; sc: "et.sc"; sd: "et.sd"; se: "et.se"; sf: "et.sf"; sg: "et.sg"; sh: "et.sh"; si: "et.si"; sj: "et.sj"; sk: "et.sk"; sl: "et.sl"; sm: "et.sm"; sn: "et.sn"; so: "et.so"; sp: "et.sp"; sq: "et.sq"; sr: "et.sr"; ss: "et.ss"; st: "et.st"; su: "et.su"; sv: "et.sv"; sw: "et.sw"; sx: "et.sx"; sy: "et.sy"; sz: "et.sz"; ta: "et.ta"; tb: "et.tb"; tc: "et.tc"; td: "et.td"; te: "et.te"; tf: "et.tf"; tg: "et.tg"; th: "et.th"; ti: "et.ti"; tj: "et.tj"; tk: "et.tk"; tl: "et.tl"; tm: "et.tm"; tn: "et.tn"; to: "et.to"; tp: "et.tp"; tq: "et.tq"; tr: "et.tr"; ts: "et.ts"; tt: "et.tt"; tu: "et.tu"; tv: "et.tv"; tw: "et.tw"; tx: "et.tx"; ty: "et.ty"; tz: "et.tz"; ua: "et.ua"; ub: "et.ub"; uc: "et.uc"; ud: "et.ud"; ue: "et.ue"; uf: "et.uf"; ug: "et.ug"; uh: "et.uh"; ui: "et.ui"; uj: "et.uj"; uk: "et.uk"; ul: "et.ul"; um: "et.um"; un: "et.un"; uo: "et.uo"; up: "et.up"; uq: "et.uq"; ur: "et.ur"; us: "et.us"; ut: "et.ut"; uu: "et.uu"; uv: "et.uv"; uw: "et.uw"; ux: "et.ux"; uy: "et.uy"; uz: "et.uz"; va: "et.va"; vb: "et.vb"; vc: "et.vc"; vd: "et.vd"; ve: "et.ve"; vf: "et.vf"; vg: "et.vg"; vh: "et.vh"; vi: "et.vi"; vj: "et.vj"; vk: "et.vk"; vl: "et.vl"; vm: "et.vm"; vn: "et.vn"; vo: "et.vo"; vp: "et.vp"; vq: "et.vq"; vr: "et.vr"; vs: "et.vs"; vt: "et.vt"; vu: "et.vu"; vv: "et.vv"; vw: "et.vw"; vx: "et.vx"; vy: "et.vy"; vz: "et.vz"; wa: "et.wa"; wb: "et.wb"; wc: "et.wc"; wd: "et.wd"; we: "et.we"; wf: "et.wf"; wg: "et.wg"; wh: "et.wh"; wi: "et.wi"; wj: "et.wj"; wk: "et.wk"; wl: "et.wl"; wm: "et.wm"; wn: "et.wn"; wo: "et.wo"; wp: "et.wp"; wq: "et.wq"; wr: "et.wr"; ws: "et.ws"; wt: "et.wt"; wu: "et.wu"; wv: "et.wv"; ww: "et.ww"; wx: "et.wx"; wy: "et.wy"; wz: "et.wz"; xa: "et.xa"; xb: "et.xb"; xc: "et.xc"; xd: "et.xd"; xe: "et.xe"; xf: "et.xf"; xg: "et.xg"; xh: "et.xh"; xi: "et.xi"; xj: "et.xj"; xk: "et.xk"; xl: "et.xl"; xm: "et.xm"; xn: "et.xn"; xo: "et.xo"; xp: "et.xp"; xq: "et.xq"; xr: "et.xr"; xs: "et.xs"; xt: "et.xt"; xu: "et.xu"; xv: "et.xv"; xw: "et.xw"; xx: "et.xx"; xy: "et.xy"; xz: "et.xz"; ya: "et.ya"; yb: "et.yb"; yc: "et.yc"; yd: "et.yd"; ye: "et.ye"; yf: "et.yf"; yg: "et.yg"; yh: "et.yh"; yi: "et.yi"; yj: "et.yj"; yk: "et.yk"; yl: "et.yl"; ym: "et.ym"; yn: "et.yn"; yo: "et.yo"; yp: "et.yp"; yq: "et.yq"; yr: "et.yr"; ys: "et.ys"; yt: "et.yt"; yu: "et.yu"; yv: "et.yv"; yw: "et.yw"; yx: "et.yx"; yy: "et.yy"; yz: "et.yz"; za: "et.za"; zb: "et.zb"; zc: "et.zc"; zd: "et.zd"; ze: "et.ze"; zf: "et.zf"; zg: "et.zg"; zh: "et.zh"; zi: "et.zi"; zj: "et.zj"; zk: "et.zk"; zl: "et.zl"; zm: "et.zm"; zn: "et.zn"; zo: "et.zo"; zp: "et.zp"; zq: "et.zq"; zr: "et.zr"; zs: "et.zs"; zt: "et.zt"; zu: "et.zu"; zv: "et.zv"; zw: "et.zw"; zx: "et.zx"; zy: "et.zy"; zz: "et.zz"; }; eu: { aa: "eu.aa"; ab: "eu.ab"; ac: "eu.ac"; ad: "eu.ad"; ae: "eu.ae"; af: "eu.af"; ag: "eu.ag"; ah: "eu.ah"; ai: "eu.ai"; aj: "eu.aj"; ak: "eu.ak"; al: "eu.al"; am: "eu.am"; an: "eu.an"; ao: "eu.ao"; ap: "eu.ap"; aq: "eu.aq"; ar: "eu.ar"; as: "eu.as"; at: "eu.at"; au: "eu.au"; av: "eu.av"; aw: "eu.aw"; ax: "eu.ax"; ay: "eu.ay"; az: "eu.az"; ba: "eu.ba"; bb: "eu.bb"; bc: "eu.bc"; bd: "eu.bd"; be: "eu.be"; bf: "eu.bf"; bg: "eu.bg"; bh: "eu.bh"; bi: "eu.bi"; bj: "eu.bj"; bk: "eu.bk"; bl: "eu.bl"; bm: "eu.bm"; bn: "eu.bn"; bo: "eu.bo"; bp: "eu.bp"; bq: "eu.bq"; br: "eu.br"; bs: "eu.bs"; bt: "eu.bt"; bu: "eu.bu"; bv: "eu.bv"; bw: "eu.bw"; bx: "eu.bx"; by: "eu.by"; bz: "eu.bz"; ca: "eu.ca"; cb: "eu.cb"; cc: "eu.cc"; cd: "eu.cd"; ce: "eu.ce"; cf: "eu.cf"; cg: "eu.cg"; ch: "eu.ch"; ci: "eu.ci"; cj: "eu.cj"; ck: "eu.ck"; cl: "eu.cl"; cm: "eu.cm"; cn: "eu.cn"; co: "eu.co"; cp: "eu.cp"; cq: "eu.cq"; cr: "eu.cr"; cs: "eu.cs"; ct: "eu.ct"; cu: "eu.cu"; cv: "eu.cv"; cw: "eu.cw"; cx: "eu.cx"; cy: "eu.cy"; cz: "eu.cz"; da: "eu.da"; db: "eu.db"; dc: "eu.dc"; dd: "eu.dd"; de: "eu.de"; df: "eu.df"; dg: "eu.dg"; dh: "eu.dh"; di: "eu.di"; dj: "eu.dj"; dk: "eu.dk"; dl: "eu.dl"; dm: "eu.dm"; dn: "eu.dn"; do: "eu.do"; dp: "eu.dp"; dq: "eu.dq"; dr: "eu.dr"; ds: "eu.ds"; dt: "eu.dt"; du: "eu.du"; dv: "eu.dv"; dw: "eu.dw"; dx: "eu.dx"; dy: "eu.dy"; dz: "eu.dz"; ea: "eu.ea"; eb: "eu.eb"; ec: "eu.ec"; ed: "eu.ed"; ee: "eu.ee"; ef: "eu.ef"; eg: "eu.eg"; eh: "eu.eh"; ei: "eu.ei"; ej: "eu.ej"; ek: "eu.ek"; el: "eu.el"; em: "eu.em"; en: "eu.en"; eo: "eu.eo"; ep: "eu.ep"; eq: "eu.eq"; er: "eu.er"; es: "eu.es"; et: "eu.et"; eu: "eu.eu"; ev: "eu.ev"; ew: "eu.ew"; ex: "eu.ex"; ey: "eu.ey"; ez: "eu.ez"; fa: "eu.fa"; fb: "eu.fb"; fc: "eu.fc"; fd: "eu.fd"; fe: "eu.fe"; ff: "eu.ff"; fg: "eu.fg"; fh: "eu.fh"; fi: "eu.fi"; fj: "eu.fj"; fk: "eu.fk"; fl: "eu.fl"; fm: "eu.fm"; fn: "eu.fn"; fo: "eu.fo"; fp: "eu.fp"; fq: "eu.fq"; fr: "eu.fr"; fs: "eu.fs"; ft: "eu.ft"; fu: "eu.fu"; fv: "eu.fv"; fw: "eu.fw"; fx: "eu.fx"; fy: "eu.fy"; fz: "eu.fz"; ga: "eu.ga"; gb: "eu.gb"; gc: "eu.gc"; gd: "eu.gd"; ge: "eu.ge"; gf: "eu.gf"; gg: "eu.gg"; gh: "eu.gh"; gi: "eu.gi"; gj: "eu.gj"; gk: "eu.gk"; gl: "eu.gl"; gm: "eu.gm"; gn: "eu.gn"; go: "eu.go"; gp: "eu.gp"; gq: "eu.gq"; gr: "eu.gr"; gs: "eu.gs"; gt: "eu.gt"; gu: "eu.gu"; gv: "eu.gv"; gw: "eu.gw"; gx: "eu.gx"; gy: "eu.gy"; gz: "eu.gz"; ha: "eu.ha"; hb: "eu.hb"; hc: "eu.hc"; hd: "eu.hd"; he: "eu.he"; hf: "eu.hf"; hg: "eu.hg"; hh: "eu.hh"; hi: "eu.hi"; hj: "eu.hj"; hk: "eu.hk"; hl: "eu.hl"; hm: "eu.hm"; hn: "eu.hn"; ho: "eu.ho"; hp: "eu.hp"; hq: "eu.hq"; hr: "eu.hr"; hs: "eu.hs"; ht: "eu.ht"; hu: "eu.hu"; hv: "eu.hv"; hw: "eu.hw"; hx: "eu.hx"; hy: "eu.hy"; hz: "eu.hz"; ia: "eu.ia"; ib: "eu.ib"; ic: "eu.ic"; id: "eu.id"; ie: "eu.ie"; if: "eu.if"; ig: "eu.ig"; ih: "eu.ih"; ii: "eu.ii"; ij: "eu.ij"; ik: "eu.ik"; il: "eu.il"; im: "eu.im"; in: "eu.in"; io: "eu.io"; ip: "eu.ip"; iq: "eu.iq"; ir: "eu.ir"; is: "eu.is"; it: "eu.it"; iu: "eu.iu"; iv: "eu.iv"; iw: "eu.iw"; ix: "eu.ix"; iy: "eu.iy"; iz: "eu.iz"; ja: "eu.ja"; jb: "eu.jb"; jc: "eu.jc"; jd: "eu.jd"; je: "eu.je"; jf: "eu.jf"; jg: "eu.jg"; jh: "eu.jh"; ji: "eu.ji"; jj: "eu.jj"; jk: "eu.jk"; jl: "eu.jl"; jm: "eu.jm"; jn: "eu.jn"; jo: "eu.jo"; jp: "eu.jp"; jq: "eu.jq"; jr: "eu.jr"; js: "eu.js"; jt: "eu.jt"; ju: "eu.ju"; jv: "eu.jv"; jw: "eu.jw"; jx: "eu.jx"; jy: "eu.jy"; jz: "eu.jz"; ka: "eu.ka"; kb: "eu.kb"; kc: "eu.kc"; kd: "eu.kd"; ke: "eu.ke"; kf: "eu.kf"; kg: "eu.kg"; kh: "eu.kh"; ki: "eu.ki"; kj: "eu.kj"; kk: "eu.kk"; kl: "eu.kl"; km: "eu.km"; kn: "eu.kn"; ko: "eu.ko"; kp: "eu.kp"; kq: "eu.kq"; kr: "eu.kr"; ks: "eu.ks"; kt: "eu.kt"; ku: "eu.ku"; kv: "eu.kv"; kw: "eu.kw"; kx: "eu.kx"; ky: "eu.ky"; kz: "eu.kz"; la: "eu.la"; lb: "eu.lb"; lc: "eu.lc"; ld: "eu.ld"; le: "eu.le"; lf: "eu.lf"; lg: "eu.lg"; lh: "eu.lh"; li: "eu.li"; lj: "eu.lj"; lk: "eu.lk"; ll: "eu.ll"; lm: "eu.lm"; ln: "eu.ln"; lo: "eu.lo"; lp: "eu.lp"; lq: "eu.lq"; lr: "eu.lr"; ls: "eu.ls"; lt: "eu.lt"; lu: "eu.lu"; lv: "eu.lv"; lw: "eu.lw"; lx: "eu.lx"; ly: "eu.ly"; lz: "eu.lz"; ma: "eu.ma"; mb: "eu.mb"; mc: "eu.mc"; md: "eu.md"; me: "eu.me"; mf: "eu.mf"; mg: "eu.mg"; mh: "eu.mh"; mi: "eu.mi"; mj: "eu.mj"; mk: "eu.mk"; ml: "eu.ml"; mm: "eu.mm"; mn: "eu.mn"; mo: "eu.mo"; mp: "eu.mp"; mq: "eu.mq"; mr: "eu.mr"; ms: "eu.ms"; mt: "eu.mt"; mu: "eu.mu"; mv: "eu.mv"; mw: "eu.mw"; mx: "eu.mx"; my: "eu.my"; mz: "eu.mz"; na: "eu.na"; nb: "eu.nb"; nc: "eu.nc"; nd: "eu.nd"; ne: "eu.ne"; nf: "eu.nf"; ng: "eu.ng"; nh: "eu.nh"; ni: "eu.ni"; nj: "eu.nj"; nk: "eu.nk"; nl: "eu.nl"; nm: "eu.nm"; nn: "eu.nn"; no: "eu.no"; np: "eu.np"; nq: "eu.nq"; nr: "eu.nr"; ns: "eu.ns"; nt: "eu.nt"; nu: "eu.nu"; nv: "eu.nv"; nw: "eu.nw"; nx: "eu.nx"; ny: "eu.ny"; nz: "eu.nz"; oa: "eu.oa"; ob: "eu.ob"; oc: "eu.oc"; od: "eu.od"; oe: "eu.oe"; of: "eu.of"; og: "eu.og"; oh: "eu.oh"; oi: "eu.oi"; oj: "eu.oj"; ok: "eu.ok"; ol: "eu.ol"; om: "eu.om"; on: "eu.on"; oo: "eu.oo"; op: "eu.op"; oq: "eu.oq"; or: "eu.or"; os: "eu.os"; ot: "eu.ot"; ou: "eu.ou"; ov: "eu.ov"; ow: "eu.ow"; ox: "eu.ox"; oy: "eu.oy"; oz: "eu.oz"; pa: "eu.pa"; pb: "eu.pb"; pc: "eu.pc"; pd: "eu.pd"; pe: "eu.pe"; pf: "eu.pf"; pg: "eu.pg"; ph: "eu.ph"; pi: "eu.pi"; pj: "eu.pj"; pk: "eu.pk"; pl: "eu.pl"; pm: "eu.pm"; pn: "eu.pn"; po: "eu.po"; pp: "eu.pp"; pq: "eu.pq"; pr: "eu.pr"; ps: "eu.ps"; pt: "eu.pt"; pu: "eu.pu"; pv: "eu.pv"; pw: "eu.pw"; px: "eu.px"; py: "eu.py"; pz: "eu.pz"; qa: "eu.qa"; qb: "eu.qb"; qc: "eu.qc"; qd: "eu.qd"; qe: "eu.qe"; qf: "eu.qf"; qg: "eu.qg"; qh: "eu.qh"; qi: "eu.qi"; qj: "eu.qj"; qk: "eu.qk"; ql: "eu.ql"; qm: "eu.qm"; qn: "eu.qn"; qo: "eu.qo"; qp: "eu.qp"; qq: "eu.qq"; qr: "eu.qr"; qs: "eu.qs"; qt: "eu.qt"; qu: "eu.qu"; qv: "eu.qv"; qw: "eu.qw"; qx: "eu.qx"; qy: "eu.qy"; qz: "eu.qz"; ra: "eu.ra"; rb: "eu.rb"; rc: "eu.rc"; rd: "eu.rd"; re: "eu.re"; rf: "eu.rf"; rg: "eu.rg"; rh: "eu.rh"; ri: "eu.ri"; rj: "eu.rj"; rk: "eu.rk"; rl: "eu.rl"; rm: "eu.rm"; rn: "eu.rn"; ro: "eu.ro"; rp: "eu.rp"; rq: "eu.rq"; rr: "eu.rr"; rs: "eu.rs"; rt: "eu.rt"; ru: "eu.ru"; rv: "eu.rv"; rw: "eu.rw"; rx: "eu.rx"; ry: "eu.ry"; rz: "eu.rz"; sa: "eu.sa"; sb: "eu.sb"; sc: "eu.sc"; sd: "eu.sd"; se: "eu.se"; sf: "eu.sf"; sg: "eu.sg"; sh: "eu.sh"; si: "eu.si"; sj: "eu.sj"; sk: "eu.sk"; sl: "eu.sl"; sm: "eu.sm"; sn: "eu.sn"; so: "eu.so"; sp: "eu.sp"; sq: "eu.sq"; sr: "eu.sr"; ss: "eu.ss"; st: "eu.st"; su: "eu.su"; sv: "eu.sv"; sw: "eu.sw"; sx: "eu.sx"; sy: "eu.sy"; sz: "eu.sz"; ta: "eu.ta"; tb: "eu.tb"; tc: "eu.tc"; td: "eu.td"; te: "eu.te"; tf: "eu.tf"; tg: "eu.tg"; th: "eu.th"; ti: "eu.ti"; tj: "eu.tj"; tk: "eu.tk"; tl: "eu.tl"; tm: "eu.tm"; tn: "eu.tn"; to: "eu.to"; tp: "eu.tp"; tq: "eu.tq"; tr: "eu.tr"; ts: "eu.ts"; tt: "eu.tt"; tu: "eu.tu"; tv: "eu.tv"; tw: "eu.tw"; tx: "eu.tx"; ty: "eu.ty"; tz: "eu.tz"; ua: "eu.ua"; ub: "eu.ub"; uc: "eu.uc"; ud: "eu.ud"; ue: "eu.ue"; uf: "eu.uf"; ug: "eu.ug"; uh: "eu.uh"; ui: "eu.ui"; uj: "eu.uj"; uk: "eu.uk"; ul: "eu.ul"; um: "eu.um"; un: "eu.un"; uo: "eu.uo"; up: "eu.up"; uq: "eu.uq"; ur: "eu.ur"; us: "eu.us"; ut: "eu.ut"; uu: "eu.uu"; uv: "eu.uv"; uw: "eu.uw"; ux: "eu.ux"; uy: "eu.uy"; uz: "eu.uz"; va: "eu.va"; vb: "eu.vb"; vc: "eu.vc"; vd: "eu.vd"; ve: "eu.ve"; vf: "eu.vf"; vg: "eu.vg"; vh: "eu.vh"; vi: "eu.vi"; vj: "eu.vj"; vk: "eu.vk"; vl: "eu.vl"; vm: "eu.vm"; vn: "eu.vn"; vo: "eu.vo"; vp: "eu.vp"; vq: "eu.vq"; vr: "eu.vr"; vs: "eu.vs"; vt: "eu.vt"; vu: "eu.vu"; vv: "eu.vv"; vw: "eu.vw"; vx: "eu.vx"; vy: "eu.vy"; vz: "eu.vz"; wa: "eu.wa"; wb: "eu.wb"; wc: "eu.wc"; wd: "eu.wd"; we: "eu.we"; wf: "eu.wf"; wg: "eu.wg"; wh: "eu.wh"; wi: "eu.wi"; wj: "eu.wj"; wk: "eu.wk"; wl: "eu.wl"; wm: "eu.wm"; wn: "eu.wn"; wo: "eu.wo"; wp: "eu.wp"; wq: "eu.wq"; wr: "eu.wr"; ws: "eu.ws"; wt: "eu.wt"; wu: "eu.wu"; wv: "eu.wv"; ww: "eu.ww"; wx: "eu.wx"; wy: "eu.wy"; wz: "eu.wz"; xa: "eu.xa"; xb: "eu.xb"; xc: "eu.xc"; xd: "eu.xd"; xe: "eu.xe"; xf: "eu.xf"; xg: "eu.xg"; xh: "eu.xh"; xi: "eu.xi"; xj: "eu.xj"; xk: "eu.xk"; xl: "eu.xl"; xm: "eu.xm"; xn: "eu.xn"; xo: "eu.xo"; xp: "eu.xp"; xq: "eu.xq"; xr: "eu.xr"; xs: "eu.xs"; xt: "eu.xt"; xu: "eu.xu"; xv: "eu.xv"; xw: "eu.xw"; xx: "eu.xx"; xy: "eu.xy"; xz: "eu.xz"; ya: "eu.ya"; yb: "eu.yb"; yc: "eu.yc"; yd: "eu.yd"; ye: "eu.ye"; yf: "eu.yf"; yg: "eu.yg"; yh: "eu.yh"; yi: "eu.yi"; yj: "eu.yj"; yk: "eu.yk"; yl: "eu.yl"; ym: "eu.ym"; yn: "eu.yn"; yo: "eu.yo"; yp: "eu.yp"; yq: "eu.yq"; yr: "eu.yr"; ys: "eu.ys"; yt: "eu.yt"; yu: "eu.yu"; yv: "eu.yv"; yw: "eu.yw"; yx: "eu.yx"; yy: "eu.yy"; yz: "eu.yz"; za: "eu.za"; zb: "eu.zb"; zc: "eu.zc"; zd: "eu.zd"; ze: "eu.ze"; zf: "eu.zf"; zg: "eu.zg"; zh: "eu.zh"; zi: "eu.zi"; zj: "eu.zj"; zk: "eu.zk"; zl: "eu.zl"; zm: "eu.zm"; zn: "eu.zn"; zo: "eu.zo"; zp: "eu.zp"; zq: "eu.zq"; zr: "eu.zr"; zs: "eu.zs"; zt: "eu.zt"; zu: "eu.zu"; zv: "eu.zv"; zw: "eu.zw"; zx: "eu.zx"; zy: "eu.zy"; zz: "eu.zz"; }; ev: { aa: "ev.aa"; ab: "ev.ab"; ac: "ev.ac"; ad: "ev.ad"; ae: "ev.ae"; af: "ev.af"; ag: "ev.ag"; ah: "ev.ah"; ai: "ev.ai"; aj: "ev.aj"; ak: "ev.ak"; al: "ev.al"; am: "ev.am"; an: "ev.an"; ao: "ev.ao"; ap: "ev.ap"; aq: "ev.aq"; ar: "ev.ar"; as: "ev.as"; at: "ev.at"; au: "ev.au"; av: "ev.av"; aw: "ev.aw"; ax: "ev.ax"; ay: "ev.ay"; az: "ev.az"; ba: "ev.ba"; bb: "ev.bb"; bc: "ev.bc"; bd: "ev.bd"; be: "ev.be"; bf: "ev.bf"; bg: "ev.bg"; bh: "ev.bh"; bi: "ev.bi"; bj: "ev.bj"; bk: "ev.bk"; bl: "ev.bl"; bm: "ev.bm"; bn: "ev.bn"; bo: "ev.bo"; bp: "ev.bp"; bq: "ev.bq"; br: "ev.br"; bs: "ev.bs"; bt: "ev.bt"; bu: "ev.bu"; bv: "ev.bv"; bw: "ev.bw"; bx: "ev.bx"; by: "ev.by"; bz: "ev.bz"; ca: "ev.ca"; cb: "ev.cb"; cc: "ev.cc"; cd: "ev.cd"; ce: "ev.ce"; cf: "ev.cf"; cg: "ev.cg"; ch: "ev.ch"; ci: "ev.ci"; cj: "ev.cj"; ck: "ev.ck"; cl: "ev.cl"; cm: "ev.cm"; cn: "ev.cn"; co: "ev.co"; cp: "ev.cp"; cq: "ev.cq"; cr: "ev.cr"; cs: "ev.cs"; ct: "ev.ct"; cu: "ev.cu"; cv: "ev.cv"; cw: "ev.cw"; cx: "ev.cx"; cy: "ev.cy"; cz: "ev.cz"; da: "ev.da"; db: "ev.db"; dc: "ev.dc"; dd: "ev.dd"; de: "ev.de"; df: "ev.df"; dg: "ev.dg"; dh: "ev.dh"; di: "ev.di"; dj: "ev.dj"; dk: "ev.dk"; dl: "ev.dl"; dm: "ev.dm"; dn: "ev.dn"; do: "ev.do"; dp: "ev.dp"; dq: "ev.dq"; dr: "ev.dr"; ds: "ev.ds"; dt: "ev.dt"; du: "ev.du"; dv: "ev.dv"; dw: "ev.dw"; dx: "ev.dx"; dy: "ev.dy"; dz: "ev.dz"; ea: "ev.ea"; eb: "ev.eb"; ec: "ev.ec"; ed: "ev.ed"; ee: "ev.ee"; ef: "ev.ef"; eg: "ev.eg"; eh: "ev.eh"; ei: "ev.ei"; ej: "ev.ej"; ek: "ev.ek"; el: "ev.el"; em: "ev.em"; en: "ev.en"; eo: "ev.eo"; ep: "ev.ep"; eq: "ev.eq"; er: "ev.er"; es: "ev.es"; et: "ev.et"; eu: "ev.eu"; ev: "ev.ev"; ew: "ev.ew"; ex: "ev.ex"; ey: "ev.ey"; ez: "ev.ez"; fa: "ev.fa"; fb: "ev.fb"; fc: "ev.fc"; fd: "ev.fd"; fe: "ev.fe"; ff: "ev.ff"; fg: "ev.fg"; fh: "ev.fh"; fi: "ev.fi"; fj: "ev.fj"; fk: "ev.fk"; fl: "ev.fl"; fm: "ev.fm"; fn: "ev.fn"; fo: "ev.fo"; fp: "ev.fp"; fq: "ev.fq"; fr: "ev.fr"; fs: "ev.fs"; ft: "ev.ft"; fu: "ev.fu"; fv: "ev.fv"; fw: "ev.fw"; fx: "ev.fx"; fy: "ev.fy"; fz: "ev.fz"; ga: "ev.ga"; gb: "ev.gb"; gc: "ev.gc"; gd: "ev.gd"; ge: "ev.ge"; gf: "ev.gf"; gg: "ev.gg"; gh: "ev.gh"; gi: "ev.gi"; gj: "ev.gj"; gk: "ev.gk"; gl: "ev.gl"; gm: "ev.gm"; gn: "ev.gn"; go: "ev.go"; gp: "ev.gp"; gq: "ev.gq"; gr: "ev.gr"; gs: "ev.gs"; gt: "ev.gt"; gu: "ev.gu"; gv: "ev.gv"; gw: "ev.gw"; gx: "ev.gx"; gy: "ev.gy"; gz: "ev.gz"; ha: "ev.ha"; hb: "ev.hb"; hc: "ev.hc"; hd: "ev.hd"; he: "ev.he"; hf: "ev.hf"; hg: "ev.hg"; hh: "ev.hh"; hi: "ev.hi"; hj: "ev.hj"; hk: "ev.hk"; hl: "ev.hl"; hm: "ev.hm"; hn: "ev.hn"; ho: "ev.ho"; hp: "ev.hp"; hq: "ev.hq"; hr: "ev.hr"; hs: "ev.hs"; ht: "ev.ht"; hu: "ev.hu"; hv: "ev.hv"; hw: "ev.hw"; hx: "ev.hx"; hy: "ev.hy"; hz: "ev.hz"; ia: "ev.ia"; ib: "ev.ib"; ic: "ev.ic"; id: "ev.id"; ie: "ev.ie"; if: "ev.if"; ig: "ev.ig"; ih: "ev.ih"; ii: "ev.ii"; ij: "ev.ij"; ik: "ev.ik"; il: "ev.il"; im: "ev.im"; in: "ev.in"; io: "ev.io"; ip: "ev.ip"; iq: "ev.iq"; ir: "ev.ir"; is: "ev.is"; it: "ev.it"; iu: "ev.iu"; iv: "ev.iv"; iw: "ev.iw"; ix: "ev.ix"; iy: "ev.iy"; iz: "ev.iz"; ja: "ev.ja"; jb: "ev.jb"; jc: "ev.jc"; jd: "ev.jd"; je: "ev.je"; jf: "ev.jf"; jg: "ev.jg"; jh: "ev.jh"; ji: "ev.ji"; jj: "ev.jj"; jk: "ev.jk"; jl: "ev.jl"; jm: "ev.jm"; jn: "ev.jn"; jo: "ev.jo"; jp: "ev.jp"; jq: "ev.jq"; jr: "ev.jr"; js: "ev.js"; jt: "ev.jt"; ju: "ev.ju"; jv: "ev.jv"; jw: "ev.jw"; jx: "ev.jx"; jy: "ev.jy"; jz: "ev.jz"; ka: "ev.ka"; kb: "ev.kb"; kc: "ev.kc"; kd: "ev.kd"; ke: "ev.ke"; kf: "ev.kf"; kg: "ev.kg"; kh: "ev.kh"; ki: "ev.ki"; kj: "ev.kj"; kk: "ev.kk"; kl: "ev.kl"; km: "ev.km"; kn: "ev.kn"; ko: "ev.ko"; kp: "ev.kp"; kq: "ev.kq"; kr: "ev.kr"; ks: "ev.ks"; kt: "ev.kt"; ku: "ev.ku"; kv: "ev.kv"; kw: "ev.kw"; kx: "ev.kx"; ky: "ev.ky"; kz: "ev.kz"; la: "ev.la"; lb: "ev.lb"; lc: "ev.lc"; ld: "ev.ld"; le: "ev.le"; lf: "ev.lf"; lg: "ev.lg"; lh: "ev.lh"; li: "ev.li"; lj: "ev.lj"; lk: "ev.lk"; ll: "ev.ll"; lm: "ev.lm"; ln: "ev.ln"; lo: "ev.lo"; lp: "ev.lp"; lq: "ev.lq"; lr: "ev.lr"; ls: "ev.ls"; lt: "ev.lt"; lu: "ev.lu"; lv: "ev.lv"; lw: "ev.lw"; lx: "ev.lx"; ly: "ev.ly"; lz: "ev.lz"; ma: "ev.ma"; mb: "ev.mb"; mc: "ev.mc"; md: "ev.md"; me: "ev.me"; mf: "ev.mf"; mg: "ev.mg"; mh: "ev.mh"; mi: "ev.mi"; mj: "ev.mj"; mk: "ev.mk"; ml: "ev.ml"; mm: "ev.mm"; mn: "ev.mn"; mo: "ev.mo"; mp: "ev.mp"; mq: "ev.mq"; mr: "ev.mr"; ms: "ev.ms"; mt: "ev.mt"; mu: "ev.mu"; mv: "ev.mv"; mw: "ev.mw"; mx: "ev.mx"; my: "ev.my"; mz: "ev.mz"; na: "ev.na"; nb: "ev.nb"; nc: "ev.nc"; nd: "ev.nd"; ne: "ev.ne"; nf: "ev.nf"; ng: "ev.ng"; nh: "ev.nh"; ni: "ev.ni"; nj: "ev.nj"; nk: "ev.nk"; nl: "ev.nl"; nm: "ev.nm"; nn: "ev.nn"; no: "ev.no"; np: "ev.np"; nq: "ev.nq"; nr: "ev.nr"; ns: "ev.ns"; nt: "ev.nt"; nu: "ev.nu"; nv: "ev.nv"; nw: "ev.nw"; nx: "ev.nx"; ny: "ev.ny"; nz: "ev.nz"; oa: "ev.oa"; ob: "ev.ob"; oc: "ev.oc"; od: "ev.od"; oe: "ev.oe"; of: "ev.of"; og: "ev.og"; oh: "ev.oh"; oi: "ev.oi"; oj: "ev.oj"; ok: "ev.ok"; ol: "ev.ol"; om: "ev.om"; on: "ev.on"; oo: "ev.oo"; op: "ev.op"; oq: "ev.oq"; or: "ev.or"; os: "ev.os"; ot: "ev.ot"; ou: "ev.ou"; ov: "ev.ov"; ow: "ev.ow"; ox: "ev.ox"; oy: "ev.oy"; oz: "ev.oz"; pa: "ev.pa"; pb: "ev.pb"; pc: "ev.pc"; pd: "ev.pd"; pe: "ev.pe"; pf: "ev.pf"; pg: "ev.pg"; ph: "ev.ph"; pi: "ev.pi"; pj: "ev.pj"; pk: "ev.pk"; pl: "ev.pl"; pm: "ev.pm"; pn: "ev.pn"; po: "ev.po"; pp: "ev.pp"; pq: "ev.pq"; pr: "ev.pr"; ps: "ev.ps"; pt: "ev.pt"; pu: "ev.pu"; pv: "ev.pv"; pw: "ev.pw"; px: "ev.px"; py: "ev.py"; pz: "ev.pz"; qa: "ev.qa"; qb: "ev.qb"; qc: "ev.qc"; qd: "ev.qd"; qe: "ev.qe"; qf: "ev.qf"; qg: "ev.qg"; qh: "ev.qh"; qi: "ev.qi"; qj: "ev.qj"; qk: "ev.qk"; ql: "ev.ql"; qm: "ev.qm"; qn: "ev.qn"; qo: "ev.qo"; qp: "ev.qp"; qq: "ev.qq"; qr: "ev.qr"; qs: "ev.qs"; qt: "ev.qt"; qu: "ev.qu"; qv: "ev.qv"; qw: "ev.qw"; qx: "ev.qx"; qy: "ev.qy"; qz: "ev.qz"; ra: "ev.ra"; rb: "ev.rb"; rc: "ev.rc"; rd: "ev.rd"; re: "ev.re"; rf: "ev.rf"; rg: "ev.rg"; rh: "ev.rh"; ri: "ev.ri"; rj: "ev.rj"; rk: "ev.rk"; rl: "ev.rl"; rm: "ev.rm"; rn: "ev.rn"; ro: "ev.ro"; rp: "ev.rp"; rq: "ev.rq"; rr: "ev.rr"; rs: "ev.rs"; rt: "ev.rt"; ru: "ev.ru"; rv: "ev.rv"; rw: "ev.rw"; rx: "ev.rx"; ry: "ev.ry"; rz: "ev.rz"; sa: "ev.sa"; sb: "ev.sb"; sc: "ev.sc"; sd: "ev.sd"; se: "ev.se"; sf: "ev.sf"; sg: "ev.sg"; sh: "ev.sh"; si: "ev.si"; sj: "ev.sj"; sk: "ev.sk"; sl: "ev.sl"; sm: "ev.sm"; sn: "ev.sn"; so: "ev.so"; sp: "ev.sp"; sq: "ev.sq"; sr: "ev.sr"; ss: "ev.ss"; st: "ev.st"; su: "ev.su"; sv: "ev.sv"; sw: "ev.sw"; sx: "ev.sx"; sy: "ev.sy"; sz: "ev.sz"; ta: "ev.ta"; tb: "ev.tb"; tc: "ev.tc"; td: "ev.td"; te: "ev.te"; tf: "ev.tf"; tg: "ev.tg"; th: "ev.th"; ti: "ev.ti"; tj: "ev.tj"; tk: "ev.tk"; tl: "ev.tl"; tm: "ev.tm"; tn: "ev.tn"; to: "ev.to"; tp: "ev.tp"; tq: "ev.tq"; tr: "ev.tr"; ts: "ev.ts"; tt: "ev.tt"; tu: "ev.tu"; tv: "ev.tv"; tw: "ev.tw"; tx: "ev.tx"; ty: "ev.ty"; tz: "ev.tz"; ua: "ev.ua"; ub: "ev.ub"; uc: "ev.uc"; ud: "ev.ud"; ue: "ev.ue"; uf: "ev.uf"; ug: "ev.ug"; uh: "ev.uh"; ui: "ev.ui"; uj: "ev.uj"; uk: "ev.uk"; ul: "ev.ul"; um: "ev.um"; un: "ev.un"; uo: "ev.uo"; up: "ev.up"; uq: "ev.uq"; ur: "ev.ur"; us: "ev.us"; ut: "ev.ut"; uu: "ev.uu"; uv: "ev.uv"; uw: "ev.uw"; ux: "ev.ux"; uy: "ev.uy"; uz: "ev.uz"; va: "ev.va"; vb: "ev.vb"; vc: "ev.vc"; vd: "ev.vd"; ve: "ev.ve"; vf: "ev.vf"; vg: "ev.vg"; vh: "ev.vh"; vi: "ev.vi"; vj: "ev.vj"; vk: "ev.vk"; vl: "ev.vl"; vm: "ev.vm"; vn: "ev.vn"; vo: "ev.vo"; vp: "ev.vp"; vq: "ev.vq"; vr: "ev.vr"; vs: "ev.vs"; vt: "ev.vt"; vu: "ev.vu"; vv: "ev.vv"; vw: "ev.vw"; vx: "ev.vx"; vy: "ev.vy"; vz: "ev.vz"; wa: "ev.wa"; wb: "ev.wb"; wc: "ev.wc"; wd: "ev.wd"; we: "ev.we"; wf: "ev.wf"; wg: "ev.wg"; wh: "ev.wh"; wi: "ev.wi"; wj: "ev.wj"; wk: "ev.wk"; wl: "ev.wl"; wm: "ev.wm"; wn: "ev.wn"; wo: "ev.wo"; wp: "ev.wp"; wq: "ev.wq"; wr: "ev.wr"; ws: "ev.ws"; wt: "ev.wt"; wu: "ev.wu"; wv: "ev.wv"; ww: "ev.ww"; wx: "ev.wx"; wy: "ev.wy"; wz: "ev.wz"; xa: "ev.xa"; xb: "ev.xb"; xc: "ev.xc"; xd: "ev.xd"; xe: "ev.xe"; xf: "ev.xf"; xg: "ev.xg"; xh: "ev.xh"; xi: "ev.xi"; xj: "ev.xj"; xk: "ev.xk"; xl: "ev.xl"; xm: "ev.xm"; xn: "ev.xn"; xo: "ev.xo"; xp: "ev.xp"; xq: "ev.xq"; xr: "ev.xr"; xs: "ev.xs"; xt: "ev.xt"; xu: "ev.xu"; xv: "ev.xv"; xw: "ev.xw"; xx: "ev.xx"; xy: "ev.xy"; xz: "ev.xz"; ya: "ev.ya"; yb: "ev.yb"; yc: "ev.yc"; yd: "ev.yd"; ye: "ev.ye"; yf: "ev.yf"; yg: "ev.yg"; yh: "ev.yh"; yi: "ev.yi"; yj: "ev.yj"; yk: "ev.yk"; yl: "ev.yl"; ym: "ev.ym"; yn: "ev.yn"; yo: "ev.yo"; yp: "ev.yp"; yq: "ev.yq"; yr: "ev.yr"; ys: "ev.ys"; yt: "ev.yt"; yu: "ev.yu"; yv: "ev.yv"; yw: "ev.yw"; yx: "ev.yx"; yy: "ev.yy"; yz: "ev.yz"; za: "ev.za"; zb: "ev.zb"; zc: "ev.zc"; zd: "ev.zd"; ze: "ev.ze"; zf: "ev.zf"; zg: "ev.zg"; zh: "ev.zh"; zi: "ev.zi"; zj: "ev.zj"; zk: "ev.zk"; zl: "ev.zl"; zm: "ev.zm"; zn: "ev.zn"; zo: "ev.zo"; zp: "ev.zp"; zq: "ev.zq"; zr: "ev.zr"; zs: "ev.zs"; zt: "ev.zt"; zu: "ev.zu"; zv: "ev.zv"; zw: "ev.zw"; zx: "ev.zx"; zy: "ev.zy"; zz: "ev.zz"; }; ew: { aa: "ew.aa"; ab: "ew.ab"; ac: "ew.ac"; ad: "ew.ad"; ae: "ew.ae"; af: "ew.af"; ag: "ew.ag"; ah: "ew.ah"; ai: "ew.ai"; aj: "ew.aj"; ak: "ew.ak"; al: "ew.al"; am: "ew.am"; an: "ew.an"; ao: "ew.ao"; ap: "ew.ap"; aq: "ew.aq"; ar: "ew.ar"; as: "ew.as"; at: "ew.at"; au: "ew.au"; av: "ew.av"; aw: "ew.aw"; ax: "ew.ax"; ay: "ew.ay"; az: "ew.az"; ba: "ew.ba"; bb: "ew.bb"; bc: "ew.bc"; bd: "ew.bd"; be: "ew.be"; bf: "ew.bf"; bg: "ew.bg"; bh: "ew.bh"; bi: "ew.bi"; bj: "ew.bj"; bk: "ew.bk"; bl: "ew.bl"; bm: "ew.bm"; bn: "ew.bn"; bo: "ew.bo"; bp: "ew.bp"; bq: "ew.bq"; br: "ew.br"; bs: "ew.bs"; bt: "ew.bt"; bu: "ew.bu"; bv: "ew.bv"; bw: "ew.bw"; bx: "ew.bx"; by: "ew.by"; bz: "ew.bz"; ca: "ew.ca"; cb: "ew.cb"; cc: "ew.cc"; cd: "ew.cd"; ce: "ew.ce"; cf: "ew.cf"; cg: "ew.cg"; ch: "ew.ch"; ci: "ew.ci"; cj: "ew.cj"; ck: "ew.ck"; cl: "ew.cl"; cm: "ew.cm"; cn: "ew.cn"; co: "ew.co"; cp: "ew.cp"; cq: "ew.cq"; cr: "ew.cr"; cs: "ew.cs"; ct: "ew.ct"; cu: "ew.cu"; cv: "ew.cv"; cw: "ew.cw"; cx: "ew.cx"; cy: "ew.cy"; cz: "ew.cz"; da: "ew.da"; db: "ew.db"; dc: "ew.dc"; dd: "ew.dd"; de: "ew.de"; df: "ew.df"; dg: "ew.dg"; dh: "ew.dh"; di: "ew.di"; dj: "ew.dj"; dk: "ew.dk"; dl: "ew.dl"; dm: "ew.dm"; dn: "ew.dn"; do: "ew.do"; dp: "ew.dp"; dq: "ew.dq"; dr: "ew.dr"; ds: "ew.ds"; dt: "ew.dt"; du: "ew.du"; dv: "ew.dv"; dw: "ew.dw"; dx: "ew.dx"; dy: "ew.dy"; dz: "ew.dz"; ea: "ew.ea"; eb: "ew.eb"; ec: "ew.ec"; ed: "ew.ed"; ee: "ew.ee"; ef: "ew.ef"; eg: "ew.eg"; eh: "ew.eh"; ei: "ew.ei"; ej: "ew.ej"; ek: "ew.ek"; el: "ew.el"; em: "ew.em"; en: "ew.en"; eo: "ew.eo"; ep: "ew.ep"; eq: "ew.eq"; er: "ew.er"; es: "ew.es"; et: "ew.et"; eu: "ew.eu"; ev: "ew.ev"; ew: "ew.ew"; ex: "ew.ex"; ey: "ew.ey"; ez: "ew.ez"; fa: "ew.fa"; fb: "ew.fb"; fc: "ew.fc"; fd: "ew.fd"; fe: "ew.fe"; ff: "ew.ff"; fg: "ew.fg"; fh: "ew.fh"; fi: "ew.fi"; fj: "ew.fj"; fk: "ew.fk"; fl: "ew.fl"; fm: "ew.fm"; fn: "ew.fn"; fo: "ew.fo"; fp: "ew.fp"; fq: "ew.fq"; fr: "ew.fr"; fs: "ew.fs"; ft: "ew.ft"; fu: "ew.fu"; fv: "ew.fv"; fw: "ew.fw"; fx: "ew.fx"; fy: "ew.fy"; fz: "ew.fz"; ga: "ew.ga"; gb: "ew.gb"; gc: "ew.gc"; gd: "ew.gd"; ge: "ew.ge"; gf: "ew.gf"; gg: "ew.gg"; gh: "ew.gh"; gi: "ew.gi"; gj: "ew.gj"; gk: "ew.gk"; gl: "ew.gl"; gm: "ew.gm"; gn: "ew.gn"; go: "ew.go"; gp: "ew.gp"; gq: "ew.gq"; gr: "ew.gr"; gs: "ew.gs"; gt: "ew.gt"; gu: "ew.gu"; gv: "ew.gv"; gw: "ew.gw"; gx: "ew.gx"; gy: "ew.gy"; gz: "ew.gz"; ha: "ew.ha"; hb: "ew.hb"; hc: "ew.hc"; hd: "ew.hd"; he: "ew.he"; hf: "ew.hf"; hg: "ew.hg"; hh: "ew.hh"; hi: "ew.hi"; hj: "ew.hj"; hk: "ew.hk"; hl: "ew.hl"; hm: "ew.hm"; hn: "ew.hn"; ho: "ew.ho"; hp: "ew.hp"; hq: "ew.hq"; hr: "ew.hr"; hs: "ew.hs"; ht: "ew.ht"; hu: "ew.hu"; hv: "ew.hv"; hw: "ew.hw"; hx: "ew.hx"; hy: "ew.hy"; hz: "ew.hz"; ia: "ew.ia"; ib: "ew.ib"; ic: "ew.ic"; id: "ew.id"; ie: "ew.ie"; if: "ew.if"; ig: "ew.ig"; ih: "ew.ih"; ii: "ew.ii"; ij: "ew.ij"; ik: "ew.ik"; il: "ew.il"; im: "ew.im"; in: "ew.in"; io: "ew.io"; ip: "ew.ip"; iq: "ew.iq"; ir: "ew.ir"; is: "ew.is"; it: "ew.it"; iu: "ew.iu"; iv: "ew.iv"; iw: "ew.iw"; ix: "ew.ix"; iy: "ew.iy"; iz: "ew.iz"; ja: "ew.ja"; jb: "ew.jb"; jc: "ew.jc"; jd: "ew.jd"; je: "ew.je"; jf: "ew.jf"; jg: "ew.jg"; jh: "ew.jh"; ji: "ew.ji"; jj: "ew.jj"; jk: "ew.jk"; jl: "ew.jl"; jm: "ew.jm"; jn: "ew.jn"; jo: "ew.jo"; jp: "ew.jp"; jq: "ew.jq"; jr: "ew.jr"; js: "ew.js"; jt: "ew.jt"; ju: "ew.ju"; jv: "ew.jv"; jw: "ew.jw"; jx: "ew.jx"; jy: "ew.jy"; jz: "ew.jz"; ka: "ew.ka"; kb: "ew.kb"; kc: "ew.kc"; kd: "ew.kd"; ke: "ew.ke"; kf: "ew.kf"; kg: "ew.kg"; kh: "ew.kh"; ki: "ew.ki"; kj: "ew.kj"; kk: "ew.kk"; kl: "ew.kl"; km: "ew.km"; kn: "ew.kn"; ko: "ew.ko"; kp: "ew.kp"; kq: "ew.kq"; kr: "ew.kr"; ks: "ew.ks"; kt: "ew.kt"; ku: "ew.ku"; kv: "ew.kv"; kw: "ew.kw"; kx: "ew.kx"; ky: "ew.ky"; kz: "ew.kz"; la: "ew.la"; lb: "ew.lb"; lc: "ew.lc"; ld: "ew.ld"; le: "ew.le"; lf: "ew.lf"; lg: "ew.lg"; lh: "ew.lh"; li: "ew.li"; lj: "ew.lj"; lk: "ew.lk"; ll: "ew.ll"; lm: "ew.lm"; ln: "ew.ln"; lo: "ew.lo"; lp: "ew.lp"; lq: "ew.lq"; lr: "ew.lr"; ls: "ew.ls"; lt: "ew.lt"; lu: "ew.lu"; lv: "ew.lv"; lw: "ew.lw"; lx: "ew.lx"; ly: "ew.ly"; lz: "ew.lz"; ma: "ew.ma"; mb: "ew.mb"; mc: "ew.mc"; md: "ew.md"; me: "ew.me"; mf: "ew.mf"; mg: "ew.mg"; mh: "ew.mh"; mi: "ew.mi"; mj: "ew.mj"; mk: "ew.mk"; ml: "ew.ml"; mm: "ew.mm"; mn: "ew.mn"; mo: "ew.mo"; mp: "ew.mp"; mq: "ew.mq"; mr: "ew.mr"; ms: "ew.ms"; mt: "ew.mt"; mu: "ew.mu"; mv: "ew.mv"; mw: "ew.mw"; mx: "ew.mx"; my: "ew.my"; mz: "ew.mz"; na: "ew.na"; nb: "ew.nb"; nc: "ew.nc"; nd: "ew.nd"; ne: "ew.ne"; nf: "ew.nf"; ng: "ew.ng"; nh: "ew.nh"; ni: "ew.ni"; nj: "ew.nj"; nk: "ew.nk"; nl: "ew.nl"; nm: "ew.nm"; nn: "ew.nn"; no: "ew.no"; np: "ew.np"; nq: "ew.nq"; nr: "ew.nr"; ns: "ew.ns"; nt: "ew.nt"; nu: "ew.nu"; nv: "ew.nv"; nw: "ew.nw"; nx: "ew.nx"; ny: "ew.ny"; nz: "ew.nz"; oa: "ew.oa"; ob: "ew.ob"; oc: "ew.oc"; od: "ew.od"; oe: "ew.oe"; of: "ew.of"; og: "ew.og"; oh: "ew.oh"; oi: "ew.oi"; oj: "ew.oj"; ok: "ew.ok"; ol: "ew.ol"; om: "ew.om"; on: "ew.on"; oo: "ew.oo"; op: "ew.op"; oq: "ew.oq"; or: "ew.or"; os: "ew.os"; ot: "ew.ot"; ou: "ew.ou"; ov: "ew.ov"; ow: "ew.ow"; ox: "ew.ox"; oy: "ew.oy"; oz: "ew.oz"; pa: "ew.pa"; pb: "ew.pb"; pc: "ew.pc"; pd: "ew.pd"; pe: "ew.pe"; pf: "ew.pf"; pg: "ew.pg"; ph: "ew.ph"; pi: "ew.pi"; pj: "ew.pj"; pk: "ew.pk"; pl: "ew.pl"; pm: "ew.pm"; pn: "ew.pn"; po: "ew.po"; pp: "ew.pp"; pq: "ew.pq"; pr: "ew.pr"; ps: "ew.ps"; pt: "ew.pt"; pu: "ew.pu"; pv: "ew.pv"; pw: "ew.pw"; px: "ew.px"; py: "ew.py"; pz: "ew.pz"; qa: "ew.qa"; qb: "ew.qb"; qc: "ew.qc"; qd: "ew.qd"; qe: "ew.qe"; qf: "ew.qf"; qg: "ew.qg"; qh: "ew.qh"; qi: "ew.qi"; qj: "ew.qj"; qk: "ew.qk"; ql: "ew.ql"; qm: "ew.qm"; qn: "ew.qn"; qo: "ew.qo"; qp: "ew.qp"; qq: "ew.qq"; qr: "ew.qr"; qs: "ew.qs"; qt: "ew.qt"; qu: "ew.qu"; qv: "ew.qv"; qw: "ew.qw"; qx: "ew.qx"; qy: "ew.qy"; qz: "ew.qz"; ra: "ew.ra"; rb: "ew.rb"; rc: "ew.rc"; rd: "ew.rd"; re: "ew.re"; rf: "ew.rf"; rg: "ew.rg"; rh: "ew.rh"; ri: "ew.ri"; rj: "ew.rj"; rk: "ew.rk"; rl: "ew.rl"; rm: "ew.rm"; rn: "ew.rn"; ro: "ew.ro"; rp: "ew.rp"; rq: "ew.rq"; rr: "ew.rr"; rs: "ew.rs"; rt: "ew.rt"; ru: "ew.ru"; rv: "ew.rv"; rw: "ew.rw"; rx: "ew.rx"; ry: "ew.ry"; rz: "ew.rz"; sa: "ew.sa"; sb: "ew.sb"; sc: "ew.sc"; sd: "ew.sd"; se: "ew.se"; sf: "ew.sf"; sg: "ew.sg"; sh: "ew.sh"; si: "ew.si"; sj: "ew.sj"; sk: "ew.sk"; sl: "ew.sl"; sm: "ew.sm"; sn: "ew.sn"; so: "ew.so"; sp: "ew.sp"; sq: "ew.sq"; sr: "ew.sr"; ss: "ew.ss"; st: "ew.st"; su: "ew.su"; sv: "ew.sv"; sw: "ew.sw"; sx: "ew.sx"; sy: "ew.sy"; sz: "ew.sz"; ta: "ew.ta"; tb: "ew.tb"; tc: "ew.tc"; td: "ew.td"; te: "ew.te"; tf: "ew.tf"; tg: "ew.tg"; th: "ew.th"; ti: "ew.ti"; tj: "ew.tj"; tk: "ew.tk"; tl: "ew.tl"; tm: "ew.tm"; tn: "ew.tn"; to: "ew.to"; tp: "ew.tp"; tq: "ew.tq"; tr: "ew.tr"; ts: "ew.ts"; tt: "ew.tt"; tu: "ew.tu"; tv: "ew.tv"; tw: "ew.tw"; tx: "ew.tx"; ty: "ew.ty"; tz: "ew.tz"; ua: "ew.ua"; ub: "ew.ub"; uc: "ew.uc"; ud: "ew.ud"; ue: "ew.ue"; uf: "ew.uf"; ug: "ew.ug"; uh: "ew.uh"; ui: "ew.ui"; uj: "ew.uj"; uk: "ew.uk"; ul: "ew.ul"; um: "ew.um"; un: "ew.un"; uo: "ew.uo"; up: "ew.up"; uq: "ew.uq"; ur: "ew.ur"; us: "ew.us"; ut: "ew.ut"; uu: "ew.uu"; uv: "ew.uv"; uw: "ew.uw"; ux: "ew.ux"; uy: "ew.uy"; uz: "ew.uz"; va: "ew.va"; vb: "ew.vb"; vc: "ew.vc"; vd: "ew.vd"; ve: "ew.ve"; vf: "ew.vf"; vg: "ew.vg"; vh: "ew.vh"; vi: "ew.vi"; vj: "ew.vj"; vk: "ew.vk"; vl: "ew.vl"; vm: "ew.vm"; vn: "ew.vn"; vo: "ew.vo"; vp: "ew.vp"; vq: "ew.vq"; vr: "ew.vr"; vs: "ew.vs"; vt: "ew.vt"; vu: "ew.vu"; vv: "ew.vv"; vw: "ew.vw"; vx: "ew.vx"; vy: "ew.vy"; vz: "ew.vz"; wa: "ew.wa"; wb: "ew.wb"; wc: "ew.wc"; wd: "ew.wd"; we: "ew.we"; wf: "ew.wf"; wg: "ew.wg"; wh: "ew.wh"; wi: "ew.wi"; wj: "ew.wj"; wk: "ew.wk"; wl: "ew.wl"; wm: "ew.wm"; wn: "ew.wn"; wo: "ew.wo"; wp: "ew.wp"; wq: "ew.wq"; wr: "ew.wr"; ws: "ew.ws"; wt: "ew.wt"; wu: "ew.wu"; wv: "ew.wv"; ww: "ew.ww"; wx: "ew.wx"; wy: "ew.wy"; wz: "ew.wz"; xa: "ew.xa"; xb: "ew.xb"; xc: "ew.xc"; xd: "ew.xd"; xe: "ew.xe"; xf: "ew.xf"; xg: "ew.xg"; xh: "ew.xh"; xi: "ew.xi"; xj: "ew.xj"; xk: "ew.xk"; xl: "ew.xl"; xm: "ew.xm"; xn: "ew.xn"; xo: "ew.xo"; xp: "ew.xp"; xq: "ew.xq"; xr: "ew.xr"; xs: "ew.xs"; xt: "ew.xt"; xu: "ew.xu"; xv: "ew.xv"; xw: "ew.xw"; xx: "ew.xx"; xy: "ew.xy"; xz: "ew.xz"; ya: "ew.ya"; yb: "ew.yb"; yc: "ew.yc"; yd: "ew.yd"; ye: "ew.ye"; yf: "ew.yf"; yg: "ew.yg"; yh: "ew.yh"; yi: "ew.yi"; yj: "ew.yj"; yk: "ew.yk"; yl: "ew.yl"; ym: "ew.ym"; yn: "ew.yn"; yo: "ew.yo"; yp: "ew.yp"; yq: "ew.yq"; yr: "ew.yr"; ys: "ew.ys"; yt: "ew.yt"; yu: "ew.yu"; yv: "ew.yv"; yw: "ew.yw"; yx: "ew.yx"; yy: "ew.yy"; yz: "ew.yz"; za: "ew.za"; zb: "ew.zb"; zc: "ew.zc"; zd: "ew.zd"; ze: "ew.ze"; zf: "ew.zf"; zg: "ew.zg"; zh: "ew.zh"; zi: "ew.zi"; zj: "ew.zj"; zk: "ew.zk"; zl: "ew.zl"; zm: "ew.zm"; zn: "ew.zn"; zo: "ew.zo"; zp: "ew.zp"; zq: "ew.zq"; zr: "ew.zr"; zs: "ew.zs"; zt: "ew.zt"; zu: "ew.zu"; zv: "ew.zv"; zw: "ew.zw"; zx: "ew.zx"; zy: "ew.zy"; zz: "ew.zz"; }; ex: { aa: "ex.aa"; ab: "ex.ab"; ac: "ex.ac"; ad: "ex.ad"; ae: "ex.ae"; af: "ex.af"; ag: "ex.ag"; ah: "ex.ah"; ai: "ex.ai"; aj: "ex.aj"; ak: "ex.ak"; al: "ex.al"; am: "ex.am"; an: "ex.an"; ao: "ex.ao"; ap: "ex.ap"; aq: "ex.aq"; ar: "ex.ar"; as: "ex.as"; at: "ex.at"; au: "ex.au"; av: "ex.av"; aw: "ex.aw"; ax: "ex.ax"; ay: "ex.ay"; az: "ex.az"; ba: "ex.ba"; bb: "ex.bb"; bc: "ex.bc"; bd: "ex.bd"; be: "ex.be"; bf: "ex.bf"; bg: "ex.bg"; bh: "ex.bh"; bi: "ex.bi"; bj: "ex.bj"; bk: "ex.bk"; bl: "ex.bl"; bm: "ex.bm"; bn: "ex.bn"; bo: "ex.bo"; bp: "ex.bp"; bq: "ex.bq"; br: "ex.br"; bs: "ex.bs"; bt: "ex.bt"; bu: "ex.bu"; bv: "ex.bv"; bw: "ex.bw"; bx: "ex.bx"; by: "ex.by"; bz: "ex.bz"; ca: "ex.ca"; cb: "ex.cb"; cc: "ex.cc"; cd: "ex.cd"; ce: "ex.ce"; cf: "ex.cf"; cg: "ex.cg"; ch: "ex.ch"; ci: "ex.ci"; cj: "ex.cj"; ck: "ex.ck"; cl: "ex.cl"; cm: "ex.cm"; cn: "ex.cn"; co: "ex.co"; cp: "ex.cp"; cq: "ex.cq"; cr: "ex.cr"; cs: "ex.cs"; ct: "ex.ct"; cu: "ex.cu"; cv: "ex.cv"; cw: "ex.cw"; cx: "ex.cx"; cy: "ex.cy"; cz: "ex.cz"; da: "ex.da"; db: "ex.db"; dc: "ex.dc"; dd: "ex.dd"; de: "ex.de"; df: "ex.df"; dg: "ex.dg"; dh: "ex.dh"; di: "ex.di"; dj: "ex.dj"; dk: "ex.dk"; dl: "ex.dl"; dm: "ex.dm"; dn: "ex.dn"; do: "ex.do"; dp: "ex.dp"; dq: "ex.dq"; dr: "ex.dr"; ds: "ex.ds"; dt: "ex.dt"; du: "ex.du"; dv: "ex.dv"; dw: "ex.dw"; dx: "ex.dx"; dy: "ex.dy"; dz: "ex.dz"; ea: "ex.ea"; eb: "ex.eb"; ec: "ex.ec"; ed: "ex.ed"; ee: "ex.ee"; ef: "ex.ef"; eg: "ex.eg"; eh: "ex.eh"; ei: "ex.ei"; ej: "ex.ej"; ek: "ex.ek"; el: "ex.el"; em: "ex.em"; en: "ex.en"; eo: "ex.eo"; ep: "ex.ep"; eq: "ex.eq"; er: "ex.er"; es: "ex.es"; et: "ex.et"; eu: "ex.eu"; ev: "ex.ev"; ew: "ex.ew"; ex: "ex.ex"; ey: "ex.ey"; ez: "ex.ez"; fa: "ex.fa"; fb: "ex.fb"; fc: "ex.fc"; fd: "ex.fd"; fe: "ex.fe"; ff: "ex.ff"; fg: "ex.fg"; fh: "ex.fh"; fi: "ex.fi"; fj: "ex.fj"; fk: "ex.fk"; fl: "ex.fl"; fm: "ex.fm"; fn: "ex.fn"; fo: "ex.fo"; fp: "ex.fp"; fq: "ex.fq"; fr: "ex.fr"; fs: "ex.fs"; ft: "ex.ft"; fu: "ex.fu"; fv: "ex.fv"; fw: "ex.fw"; fx: "ex.fx"; fy: "ex.fy"; fz: "ex.fz"; ga: "ex.ga"; gb: "ex.gb"; gc: "ex.gc"; gd: "ex.gd"; ge: "ex.ge"; gf: "ex.gf"; gg: "ex.gg"; gh: "ex.gh"; gi: "ex.gi"; gj: "ex.gj"; gk: "ex.gk"; gl: "ex.gl"; gm: "ex.gm"; gn: "ex.gn"; go: "ex.go"; gp: "ex.gp"; gq: "ex.gq"; gr: "ex.gr"; gs: "ex.gs"; gt: "ex.gt"; gu: "ex.gu"; gv: "ex.gv"; gw: "ex.gw"; gx: "ex.gx"; gy: "ex.gy"; gz: "ex.gz"; ha: "ex.ha"; hb: "ex.hb"; hc: "ex.hc"; hd: "ex.hd"; he: "ex.he"; hf: "ex.hf"; hg: "ex.hg"; hh: "ex.hh"; hi: "ex.hi"; hj: "ex.hj"; hk: "ex.hk"; hl: "ex.hl"; hm: "ex.hm"; hn: "ex.hn"; ho: "ex.ho"; hp: "ex.hp"; hq: "ex.hq"; hr: "ex.hr"; hs: "ex.hs"; ht: "ex.ht"; hu: "ex.hu"; hv: "ex.hv"; hw: "ex.hw"; hx: "ex.hx"; hy: "ex.hy"; hz: "ex.hz"; ia: "ex.ia"; ib: "ex.ib"; ic: "ex.ic"; id: "ex.id"; ie: "ex.ie"; if: "ex.if"; ig: "ex.ig"; ih: "ex.ih"; ii: "ex.ii"; ij: "ex.ij"; ik: "ex.ik"; il: "ex.il"; im: "ex.im"; in: "ex.in"; io: "ex.io"; ip: "ex.ip"; iq: "ex.iq"; ir: "ex.ir"; is: "ex.is"; it: "ex.it"; iu: "ex.iu"; iv: "ex.iv"; iw: "ex.iw"; ix: "ex.ix"; iy: "ex.iy"; iz: "ex.iz"; ja: "ex.ja"; jb: "ex.jb"; jc: "ex.jc"; jd: "ex.jd"; je: "ex.je"; jf: "ex.jf"; jg: "ex.jg"; jh: "ex.jh"; ji: "ex.ji"; jj: "ex.jj"; jk: "ex.jk"; jl: "ex.jl"; jm: "ex.jm"; jn: "ex.jn"; jo: "ex.jo"; jp: "ex.jp"; jq: "ex.jq"; jr: "ex.jr"; js: "ex.js"; jt: "ex.jt"; ju: "ex.ju"; jv: "ex.jv"; jw: "ex.jw"; jx: "ex.jx"; jy: "ex.jy"; jz: "ex.jz"; ka: "ex.ka"; kb: "ex.kb"; kc: "ex.kc"; kd: "ex.kd"; ke: "ex.ke"; kf: "ex.kf"; kg: "ex.kg"; kh: "ex.kh"; ki: "ex.ki"; kj: "ex.kj"; kk: "ex.kk"; kl: "ex.kl"; km: "ex.km"; kn: "ex.kn"; ko: "ex.ko"; kp: "ex.kp"; kq: "ex.kq"; kr: "ex.kr"; ks: "ex.ks"; kt: "ex.kt"; ku: "ex.ku"; kv: "ex.kv"; kw: "ex.kw"; kx: "ex.kx"; ky: "ex.ky"; kz: "ex.kz"; la: "ex.la"; lb: "ex.lb"; lc: "ex.lc"; ld: "ex.ld"; le: "ex.le"; lf: "ex.lf"; lg: "ex.lg"; lh: "ex.lh"; li: "ex.li"; lj: "ex.lj"; lk: "ex.lk"; ll: "ex.ll"; lm: "ex.lm"; ln: "ex.ln"; lo: "ex.lo"; lp: "ex.lp"; lq: "ex.lq"; lr: "ex.lr"; ls: "ex.ls"; lt: "ex.lt"; lu: "ex.lu"; lv: "ex.lv"; lw: "ex.lw"; lx: "ex.lx"; ly: "ex.ly"; lz: "ex.lz"; ma: "ex.ma"; mb: "ex.mb"; mc: "ex.mc"; md: "ex.md"; me: "ex.me"; mf: "ex.mf"; mg: "ex.mg"; mh: "ex.mh"; mi: "ex.mi"; mj: "ex.mj"; mk: "ex.mk"; ml: "ex.ml"; mm: "ex.mm"; mn: "ex.mn"; mo: "ex.mo"; mp: "ex.mp"; mq: "ex.mq"; mr: "ex.mr"; ms: "ex.ms"; mt: "ex.mt"; mu: "ex.mu"; mv: "ex.mv"; mw: "ex.mw"; mx: "ex.mx"; my: "ex.my"; mz: "ex.mz"; na: "ex.na"; nb: "ex.nb"; nc: "ex.nc"; nd: "ex.nd"; ne: "ex.ne"; nf: "ex.nf"; ng: "ex.ng"; nh: "ex.nh"; ni: "ex.ni"; nj: "ex.nj"; nk: "ex.nk"; nl: "ex.nl"; nm: "ex.nm"; nn: "ex.nn"; no: "ex.no"; np: "ex.np"; nq: "ex.nq"; nr: "ex.nr"; ns: "ex.ns"; nt: "ex.nt"; nu: "ex.nu"; nv: "ex.nv"; nw: "ex.nw"; nx: "ex.nx"; ny: "ex.ny"; nz: "ex.nz"; oa: "ex.oa"; ob: "ex.ob"; oc: "ex.oc"; od: "ex.od"; oe: "ex.oe"; of: "ex.of"; og: "ex.og"; oh: "ex.oh"; oi: "ex.oi"; oj: "ex.oj"; ok: "ex.ok"; ol: "ex.ol"; om: "ex.om"; on: "ex.on"; oo: "ex.oo"; op: "ex.op"; oq: "ex.oq"; or: "ex.or"; os: "ex.os"; ot: "ex.ot"; ou: "ex.ou"; ov: "ex.ov"; ow: "ex.ow"; ox: "ex.ox"; oy: "ex.oy"; oz: "ex.oz"; pa: "ex.pa"; pb: "ex.pb"; pc: "ex.pc"; pd: "ex.pd"; pe: "ex.pe"; pf: "ex.pf"; pg: "ex.pg"; ph: "ex.ph"; pi: "ex.pi"; pj: "ex.pj"; pk: "ex.pk"; pl: "ex.pl"; pm: "ex.pm"; pn: "ex.pn"; po: "ex.po"; pp: "ex.pp"; pq: "ex.pq"; pr: "ex.pr"; ps: "ex.ps"; pt: "ex.pt"; pu: "ex.pu"; pv: "ex.pv"; pw: "ex.pw"; px: "ex.px"; py: "ex.py"; pz: "ex.pz"; qa: "ex.qa"; qb: "ex.qb"; qc: "ex.qc"; qd: "ex.qd"; qe: "ex.qe"; qf: "ex.qf"; qg: "ex.qg"; qh: "ex.qh"; qi: "ex.qi"; qj: "ex.qj"; qk: "ex.qk"; ql: "ex.ql"; qm: "ex.qm"; qn: "ex.qn"; qo: "ex.qo"; qp: "ex.qp"; qq: "ex.qq"; qr: "ex.qr"; qs: "ex.qs"; qt: "ex.qt"; qu: "ex.qu"; qv: "ex.qv"; qw: "ex.qw"; qx: "ex.qx"; qy: "ex.qy"; qz: "ex.qz"; ra: "ex.ra"; rb: "ex.rb"; rc: "ex.rc"; rd: "ex.rd"; re: "ex.re"; rf: "ex.rf"; rg: "ex.rg"; rh: "ex.rh"; ri: "ex.ri"; rj: "ex.rj"; rk: "ex.rk"; rl: "ex.rl"; rm: "ex.rm"; rn: "ex.rn"; ro: "ex.ro"; rp: "ex.rp"; rq: "ex.rq"; rr: "ex.rr"; rs: "ex.rs"; rt: "ex.rt"; ru: "ex.ru"; rv: "ex.rv"; rw: "ex.rw"; rx: "ex.rx"; ry: "ex.ry"; rz: "ex.rz"; sa: "ex.sa"; sb: "ex.sb"; sc: "ex.sc"; sd: "ex.sd"; se: "ex.se"; sf: "ex.sf"; sg: "ex.sg"; sh: "ex.sh"; si: "ex.si"; sj: "ex.sj"; sk: "ex.sk"; sl: "ex.sl"; sm: "ex.sm"; sn: "ex.sn"; so: "ex.so"; sp: "ex.sp"; sq: "ex.sq"; sr: "ex.sr"; ss: "ex.ss"; st: "ex.st"; su: "ex.su"; sv: "ex.sv"; sw: "ex.sw"; sx: "ex.sx"; sy: "ex.sy"; sz: "ex.sz"; ta: "ex.ta"; tb: "ex.tb"; tc: "ex.tc"; td: "ex.td"; te: "ex.te"; tf: "ex.tf"; tg: "ex.tg"; th: "ex.th"; ti: "ex.ti"; tj: "ex.tj"; tk: "ex.tk"; tl: "ex.tl"; tm: "ex.tm"; tn: "ex.tn"; to: "ex.to"; tp: "ex.tp"; tq: "ex.tq"; tr: "ex.tr"; ts: "ex.ts"; tt: "ex.tt"; tu: "ex.tu"; tv: "ex.tv"; tw: "ex.tw"; tx: "ex.tx"; ty: "ex.ty"; tz: "ex.tz"; ua: "ex.ua"; ub: "ex.ub"; uc: "ex.uc"; ud: "ex.ud"; ue: "ex.ue"; uf: "ex.uf"; ug: "ex.ug"; uh: "ex.uh"; ui: "ex.ui"; uj: "ex.uj"; uk: "ex.uk"; ul: "ex.ul"; um: "ex.um"; un: "ex.un"; uo: "ex.uo"; up: "ex.up"; uq: "ex.uq"; ur: "ex.ur"; us: "ex.us"; ut: "ex.ut"; uu: "ex.uu"; uv: "ex.uv"; uw: "ex.uw"; ux: "ex.ux"; uy: "ex.uy"; uz: "ex.uz"; va: "ex.va"; vb: "ex.vb"; vc: "ex.vc"; vd: "ex.vd"; ve: "ex.ve"; vf: "ex.vf"; vg: "ex.vg"; vh: "ex.vh"; vi: "ex.vi"; vj: "ex.vj"; vk: "ex.vk"; vl: "ex.vl"; vm: "ex.vm"; vn: "ex.vn"; vo: "ex.vo"; vp: "ex.vp"; vq: "ex.vq"; vr: "ex.vr"; vs: "ex.vs"; vt: "ex.vt"; vu: "ex.vu"; vv: "ex.vv"; vw: "ex.vw"; vx: "ex.vx"; vy: "ex.vy"; vz: "ex.vz"; wa: "ex.wa"; wb: "ex.wb"; wc: "ex.wc"; wd: "ex.wd"; we: "ex.we"; wf: "ex.wf"; wg: "ex.wg"; wh: "ex.wh"; wi: "ex.wi"; wj: "ex.wj"; wk: "ex.wk"; wl: "ex.wl"; wm: "ex.wm"; wn: "ex.wn"; wo: "ex.wo"; wp: "ex.wp"; wq: "ex.wq"; wr: "ex.wr"; ws: "ex.ws"; wt: "ex.wt"; wu: "ex.wu"; wv: "ex.wv"; ww: "ex.ww"; wx: "ex.wx"; wy: "ex.wy"; wz: "ex.wz"; xa: "ex.xa"; xb: "ex.xb"; xc: "ex.xc"; xd: "ex.xd"; xe: "ex.xe"; xf: "ex.xf"; xg: "ex.xg"; xh: "ex.xh"; xi: "ex.xi"; xj: "ex.xj"; xk: "ex.xk"; xl: "ex.xl"; xm: "ex.xm"; xn: "ex.xn"; xo: "ex.xo"; xp: "ex.xp"; xq: "ex.xq"; xr: "ex.xr"; xs: "ex.xs"; xt: "ex.xt"; xu: "ex.xu"; xv: "ex.xv"; xw: "ex.xw"; xx: "ex.xx"; xy: "ex.xy"; xz: "ex.xz"; ya: "ex.ya"; yb: "ex.yb"; yc: "ex.yc"; yd: "ex.yd"; ye: "ex.ye"; yf: "ex.yf"; yg: "ex.yg"; yh: "ex.yh"; yi: "ex.yi"; yj: "ex.yj"; yk: "ex.yk"; yl: "ex.yl"; ym: "ex.ym"; yn: "ex.yn"; yo: "ex.yo"; yp: "ex.yp"; yq: "ex.yq"; yr: "ex.yr"; ys: "ex.ys"; yt: "ex.yt"; yu: "ex.yu"; yv: "ex.yv"; yw: "ex.yw"; yx: "ex.yx"; yy: "ex.yy"; yz: "ex.yz"; za: "ex.za"; zb: "ex.zb"; zc: "ex.zc"; zd: "ex.zd"; ze: "ex.ze"; zf: "ex.zf"; zg: "ex.zg"; zh: "ex.zh"; zi: "ex.zi"; zj: "ex.zj"; zk: "ex.zk"; zl: "ex.zl"; zm: "ex.zm"; zn: "ex.zn"; zo: "ex.zo"; zp: "ex.zp"; zq: "ex.zq"; zr: "ex.zr"; zs: "ex.zs"; zt: "ex.zt"; zu: "ex.zu"; zv: "ex.zv"; zw: "ex.zw"; zx: "ex.zx"; zy: "ex.zy"; zz: "ex.zz"; }; ey: { aa: "ey.aa"; ab: "ey.ab"; ac: "ey.ac"; ad: "ey.ad"; ae: "ey.ae"; af: "ey.af"; ag: "ey.ag"; ah: "ey.ah"; ai: "ey.ai"; aj: "ey.aj"; ak: "ey.ak"; al: "ey.al"; am: "ey.am"; an: "ey.an"; ao: "ey.ao"; ap: "ey.ap"; aq: "ey.aq"; ar: "ey.ar"; as: "ey.as"; at: "ey.at"; au: "ey.au"; av: "ey.av"; aw: "ey.aw"; ax: "ey.ax"; ay: "ey.ay"; az: "ey.az"; ba: "ey.ba"; bb: "ey.bb"; bc: "ey.bc"; bd: "ey.bd"; be: "ey.be"; bf: "ey.bf"; bg: "ey.bg"; bh: "ey.bh"; bi: "ey.bi"; bj: "ey.bj"; bk: "ey.bk"; bl: "ey.bl"; bm: "ey.bm"; bn: "ey.bn"; bo: "ey.bo"; bp: "ey.bp"; bq: "ey.bq"; br: "ey.br"; bs: "ey.bs"; bt: "ey.bt"; bu: "ey.bu"; bv: "ey.bv"; bw: "ey.bw"; bx: "ey.bx"; by: "ey.by"; bz: "ey.bz"; ca: "ey.ca"; cb: "ey.cb"; cc: "ey.cc"; cd: "ey.cd"; ce: "ey.ce"; cf: "ey.cf"; cg: "ey.cg"; ch: "ey.ch"; ci: "ey.ci"; cj: "ey.cj"; ck: "ey.ck"; cl: "ey.cl"; cm: "ey.cm"; cn: "ey.cn"; co: "ey.co"; cp: "ey.cp"; cq: "ey.cq"; cr: "ey.cr"; cs: "ey.cs"; ct: "ey.ct"; cu: "ey.cu"; cv: "ey.cv"; cw: "ey.cw"; cx: "ey.cx"; cy: "ey.cy"; cz: "ey.cz"; da: "ey.da"; db: "ey.db"; dc: "ey.dc"; dd: "ey.dd"; de: "ey.de"; df: "ey.df"; dg: "ey.dg"; dh: "ey.dh"; di: "ey.di"; dj: "ey.dj"; dk: "ey.dk"; dl: "ey.dl"; dm: "ey.dm"; dn: "ey.dn"; do: "ey.do"; dp: "ey.dp"; dq: "ey.dq"; dr: "ey.dr"; ds: "ey.ds"; dt: "ey.dt"; du: "ey.du"; dv: "ey.dv"; dw: "ey.dw"; dx: "ey.dx"; dy: "ey.dy"; dz: "ey.dz"; ea: "ey.ea"; eb: "ey.eb"; ec: "ey.ec"; ed: "ey.ed"; ee: "ey.ee"; ef: "ey.ef"; eg: "ey.eg"; eh: "ey.eh"; ei: "ey.ei"; ej: "ey.ej"; ek: "ey.ek"; el: "ey.el"; em: "ey.em"; en: "ey.en"; eo: "ey.eo"; ep: "ey.ep"; eq: "ey.eq"; er: "ey.er"; es: "ey.es"; et: "ey.et"; eu: "ey.eu"; ev: "ey.ev"; ew: "ey.ew"; ex: "ey.ex"; ey: "ey.ey"; ez: "ey.ez"; fa: "ey.fa"; fb: "ey.fb"; fc: "ey.fc"; fd: "ey.fd"; fe: "ey.fe"; ff: "ey.ff"; fg: "ey.fg"; fh: "ey.fh"; fi: "ey.fi"; fj: "ey.fj"; fk: "ey.fk"; fl: "ey.fl"; fm: "ey.fm"; fn: "ey.fn"; fo: "ey.fo"; fp: "ey.fp"; fq: "ey.fq"; fr: "ey.fr"; fs: "ey.fs"; ft: "ey.ft"; fu: "ey.fu"; fv: "ey.fv"; fw: "ey.fw"; fx: "ey.fx"; fy: "ey.fy"; fz: "ey.fz"; ga: "ey.ga"; gb: "ey.gb"; gc: "ey.gc"; gd: "ey.gd"; ge: "ey.ge"; gf: "ey.gf"; gg: "ey.gg"; gh: "ey.gh"; gi: "ey.gi"; gj: "ey.gj"; gk: "ey.gk"; gl: "ey.gl"; gm: "ey.gm"; gn: "ey.gn"; go: "ey.go"; gp: "ey.gp"; gq: "ey.gq"; gr: "ey.gr"; gs: "ey.gs"; gt: "ey.gt"; gu: "ey.gu"; gv: "ey.gv"; gw: "ey.gw"; gx: "ey.gx"; gy: "ey.gy"; gz: "ey.gz"; ha: "ey.ha"; hb: "ey.hb"; hc: "ey.hc"; hd: "ey.hd"; he: "ey.he"; hf: "ey.hf"; hg: "ey.hg"; hh: "ey.hh"; hi: "ey.hi"; hj: "ey.hj"; hk: "ey.hk"; hl: "ey.hl"; hm: "ey.hm"; hn: "ey.hn"; ho: "ey.ho"; hp: "ey.hp"; hq: "ey.hq"; hr: "ey.hr"; hs: "ey.hs"; ht: "ey.ht"; hu: "ey.hu"; hv: "ey.hv"; hw: "ey.hw"; hx: "ey.hx"; hy: "ey.hy"; hz: "ey.hz"; ia: "ey.ia"; ib: "ey.ib"; ic: "ey.ic"; id: "ey.id"; ie: "ey.ie"; if: "ey.if"; ig: "ey.ig"; ih: "ey.ih"; ii: "ey.ii"; ij: "ey.ij"; ik: "ey.ik"; il: "ey.il"; im: "ey.im"; in: "ey.in"; io: "ey.io"; ip: "ey.ip"; iq: "ey.iq"; ir: "ey.ir"; is: "ey.is"; it: "ey.it"; iu: "ey.iu"; iv: "ey.iv"; iw: "ey.iw"; ix: "ey.ix"; iy: "ey.iy"; iz: "ey.iz"; ja: "ey.ja"; jb: "ey.jb"; jc: "ey.jc"; jd: "ey.jd"; je: "ey.je"; jf: "ey.jf"; jg: "ey.jg"; jh: "ey.jh"; ji: "ey.ji"; jj: "ey.jj"; jk: "ey.jk"; jl: "ey.jl"; jm: "ey.jm"; jn: "ey.jn"; jo: "ey.jo"; jp: "ey.jp"; jq: "ey.jq"; jr: "ey.jr"; js: "ey.js"; jt: "ey.jt"; ju: "ey.ju"; jv: "ey.jv"; jw: "ey.jw"; jx: "ey.jx"; jy: "ey.jy"; jz: "ey.jz"; ka: "ey.ka"; kb: "ey.kb"; kc: "ey.kc"; kd: "ey.kd"; ke: "ey.ke"; kf: "ey.kf"; kg: "ey.kg"; kh: "ey.kh"; ki: "ey.ki"; kj: "ey.kj"; kk: "ey.kk"; kl: "ey.kl"; km: "ey.km"; kn: "ey.kn"; ko: "ey.ko"; kp: "ey.kp"; kq: "ey.kq"; kr: "ey.kr"; ks: "ey.ks"; kt: "ey.kt"; ku: "ey.ku"; kv: "ey.kv"; kw: "ey.kw"; kx: "ey.kx"; ky: "ey.ky"; kz: "ey.kz"; la: "ey.la"; lb: "ey.lb"; lc: "ey.lc"; ld: "ey.ld"; le: "ey.le"; lf: "ey.lf"; lg: "ey.lg"; lh: "ey.lh"; li: "ey.li"; lj: "ey.lj"; lk: "ey.lk"; ll: "ey.ll"; lm: "ey.lm"; ln: "ey.ln"; lo: "ey.lo"; lp: "ey.lp"; lq: "ey.lq"; lr: "ey.lr"; ls: "ey.ls"; lt: "ey.lt"; lu: "ey.lu"; lv: "ey.lv"; lw: "ey.lw"; lx: "ey.lx"; ly: "ey.ly"; lz: "ey.lz"; ma: "ey.ma"; mb: "ey.mb"; mc: "ey.mc"; md: "ey.md"; me: "ey.me"; mf: "ey.mf"; mg: "ey.mg"; mh: "ey.mh"; mi: "ey.mi"; mj: "ey.mj"; mk: "ey.mk"; ml: "ey.ml"; mm: "ey.mm"; mn: "ey.mn"; mo: "ey.mo"; mp: "ey.mp"; mq: "ey.mq"; mr: "ey.mr"; ms: "ey.ms"; mt: "ey.mt"; mu: "ey.mu"; mv: "ey.mv"; mw: "ey.mw"; mx: "ey.mx"; my: "ey.my"; mz: "ey.mz"; na: "ey.na"; nb: "ey.nb"; nc: "ey.nc"; nd: "ey.nd"; ne: "ey.ne"; nf: "ey.nf"; ng: "ey.ng"; nh: "ey.nh"; ni: "ey.ni"; nj: "ey.nj"; nk: "ey.nk"; nl: "ey.nl"; nm: "ey.nm"; nn: "ey.nn"; no: "ey.no"; np: "ey.np"; nq: "ey.nq"; nr: "ey.nr"; ns: "ey.ns"; nt: "ey.nt"; nu: "ey.nu"; nv: "ey.nv"; nw: "ey.nw"; nx: "ey.nx"; ny: "ey.ny"; nz: "ey.nz"; oa: "ey.oa"; ob: "ey.ob"; oc: "ey.oc"; od: "ey.od"; oe: "ey.oe"; of: "ey.of"; og: "ey.og"; oh: "ey.oh"; oi: "ey.oi"; oj: "ey.oj"; ok: "ey.ok"; ol: "ey.ol"; om: "ey.om"; on: "ey.on"; oo: "ey.oo"; op: "ey.op"; oq: "ey.oq"; or: "ey.or"; os: "ey.os"; ot: "ey.ot"; ou: "ey.ou"; ov: "ey.ov"; ow: "ey.ow"; ox: "ey.ox"; oy: "ey.oy"; oz: "ey.oz"; pa: "ey.pa"; pb: "ey.pb"; pc: "ey.pc"; pd: "ey.pd"; pe: "ey.pe"; pf: "ey.pf"; pg: "ey.pg"; ph: "ey.ph"; pi: "ey.pi"; pj: "ey.pj"; pk: "ey.pk"; pl: "ey.pl"; pm: "ey.pm"; pn: "ey.pn"; po: "ey.po"; pp: "ey.pp"; pq: "ey.pq"; pr: "ey.pr"; ps: "ey.ps"; pt: "ey.pt"; pu: "ey.pu"; pv: "ey.pv"; pw: "ey.pw"; px: "ey.px"; py: "ey.py"; pz: "ey.pz"; qa: "ey.qa"; qb: "ey.qb"; qc: "ey.qc"; qd: "ey.qd"; qe: "ey.qe"; qf: "ey.qf"; qg: "ey.qg"; qh: "ey.qh"; qi: "ey.qi"; qj: "ey.qj"; qk: "ey.qk"; ql: "ey.ql"; qm: "ey.qm"; qn: "ey.qn"; qo: "ey.qo"; qp: "ey.qp"; qq: "ey.qq"; qr: "ey.qr"; qs: "ey.qs"; qt: "ey.qt"; qu: "ey.qu"; qv: "ey.qv"; qw: "ey.qw"; qx: "ey.qx"; qy: "ey.qy"; qz: "ey.qz"; ra: "ey.ra"; rb: "ey.rb"; rc: "ey.rc"; rd: "ey.rd"; re: "ey.re"; rf: "ey.rf"; rg: "ey.rg"; rh: "ey.rh"; ri: "ey.ri"; rj: "ey.rj"; rk: "ey.rk"; rl: "ey.rl"; rm: "ey.rm"; rn: "ey.rn"; ro: "ey.ro"; rp: "ey.rp"; rq: "ey.rq"; rr: "ey.rr"; rs: "ey.rs"; rt: "ey.rt"; ru: "ey.ru"; rv: "ey.rv"; rw: "ey.rw"; rx: "ey.rx"; ry: "ey.ry"; rz: "ey.rz"; sa: "ey.sa"; sb: "ey.sb"; sc: "ey.sc"; sd: "ey.sd"; se: "ey.se"; sf: "ey.sf"; sg: "ey.sg"; sh: "ey.sh"; si: "ey.si"; sj: "ey.sj"; sk: "ey.sk"; sl: "ey.sl"; sm: "ey.sm"; sn: "ey.sn"; so: "ey.so"; sp: "ey.sp"; sq: "ey.sq"; sr: "ey.sr"; ss: "ey.ss"; st: "ey.st"; su: "ey.su"; sv: "ey.sv"; sw: "ey.sw"; sx: "ey.sx"; sy: "ey.sy"; sz: "ey.sz"; ta: "ey.ta"; tb: "ey.tb"; tc: "ey.tc"; td: "ey.td"; te: "ey.te"; tf: "ey.tf"; tg: "ey.tg"; th: "ey.th"; ti: "ey.ti"; tj: "ey.tj"; tk: "ey.tk"; tl: "ey.tl"; tm: "ey.tm"; tn: "ey.tn"; to: "ey.to"; tp: "ey.tp"; tq: "ey.tq"; tr: "ey.tr"; ts: "ey.ts"; tt: "ey.tt"; tu: "ey.tu"; tv: "ey.tv"; tw: "ey.tw"; tx: "ey.tx"; ty: "ey.ty"; tz: "ey.tz"; ua: "ey.ua"; ub: "ey.ub"; uc: "ey.uc"; ud: "ey.ud"; ue: "ey.ue"; uf: "ey.uf"; ug: "ey.ug"; uh: "ey.uh"; ui: "ey.ui"; uj: "ey.uj"; uk: "ey.uk"; ul: "ey.ul"; um: "ey.um"; un: "ey.un"; uo: "ey.uo"; up: "ey.up"; uq: "ey.uq"; ur: "ey.ur"; us: "ey.us"; ut: "ey.ut"; uu: "ey.uu"; uv: "ey.uv"; uw: "ey.uw"; ux: "ey.ux"; uy: "ey.uy"; uz: "ey.uz"; va: "ey.va"; vb: "ey.vb"; vc: "ey.vc"; vd: "ey.vd"; ve: "ey.ve"; vf: "ey.vf"; vg: "ey.vg"; vh: "ey.vh"; vi: "ey.vi"; vj: "ey.vj"; vk: "ey.vk"; vl: "ey.vl"; vm: "ey.vm"; vn: "ey.vn"; vo: "ey.vo"; vp: "ey.vp"; vq: "ey.vq"; vr: "ey.vr"; vs: "ey.vs"; vt: "ey.vt"; vu: "ey.vu"; vv: "ey.vv"; vw: "ey.vw"; vx: "ey.vx"; vy: "ey.vy"; vz: "ey.vz"; wa: "ey.wa"; wb: "ey.wb"; wc: "ey.wc"; wd: "ey.wd"; we: "ey.we"; wf: "ey.wf"; wg: "ey.wg"; wh: "ey.wh"; wi: "ey.wi"; wj: "ey.wj"; wk: "ey.wk"; wl: "ey.wl"; wm: "ey.wm"; wn: "ey.wn"; wo: "ey.wo"; wp: "ey.wp"; wq: "ey.wq"; wr: "ey.wr"; ws: "ey.ws"; wt: "ey.wt"; wu: "ey.wu"; wv: "ey.wv"; ww: "ey.ww"; wx: "ey.wx"; wy: "ey.wy"; wz: "ey.wz"; xa: "ey.xa"; xb: "ey.xb"; xc: "ey.xc"; xd: "ey.xd"; xe: "ey.xe"; xf: "ey.xf"; xg: "ey.xg"; xh: "ey.xh"; xi: "ey.xi"; xj: "ey.xj"; xk: "ey.xk"; xl: "ey.xl"; xm: "ey.xm"; xn: "ey.xn"; xo: "ey.xo"; xp: "ey.xp"; xq: "ey.xq"; xr: "ey.xr"; xs: "ey.xs"; xt: "ey.xt"; xu: "ey.xu"; xv: "ey.xv"; xw: "ey.xw"; xx: "ey.xx"; xy: "ey.xy"; xz: "ey.xz"; ya: "ey.ya"; yb: "ey.yb"; yc: "ey.yc"; yd: "ey.yd"; ye: "ey.ye"; yf: "ey.yf"; yg: "ey.yg"; yh: "ey.yh"; yi: "ey.yi"; yj: "ey.yj"; yk: "ey.yk"; yl: "ey.yl"; ym: "ey.ym"; yn: "ey.yn"; yo: "ey.yo"; yp: "ey.yp"; yq: "ey.yq"; yr: "ey.yr"; ys: "ey.ys"; yt: "ey.yt"; yu: "ey.yu"; yv: "ey.yv"; yw: "ey.yw"; yx: "ey.yx"; yy: "ey.yy"; yz: "ey.yz"; za: "ey.za"; zb: "ey.zb"; zc: "ey.zc"; zd: "ey.zd"; ze: "ey.ze"; zf: "ey.zf"; zg: "ey.zg"; zh: "ey.zh"; zi: "ey.zi"; zj: "ey.zj"; zk: "ey.zk"; zl: "ey.zl"; zm: "ey.zm"; zn: "ey.zn"; zo: "ey.zo"; zp: "ey.zp"; zq: "ey.zq"; zr: "ey.zr"; zs: "ey.zs"; zt: "ey.zt"; zu: "ey.zu"; zv: "ey.zv"; zw: "ey.zw"; zx: "ey.zx"; zy: "ey.zy"; zz: "ey.zz"; }; ez: { aa: "ez.aa"; ab: "ez.ab"; ac: "ez.ac"; ad: "ez.ad"; ae: "ez.ae"; af: "ez.af"; ag: "ez.ag"; ah: "ez.ah"; ai: "ez.ai"; aj: "ez.aj"; ak: "ez.ak"; al: "ez.al"; am: "ez.am"; an: "ez.an"; ao: "ez.ao"; ap: "ez.ap"; aq: "ez.aq"; ar: "ez.ar"; as: "ez.as"; at: "ez.at"; au: "ez.au"; av: "ez.av"; aw: "ez.aw"; ax: "ez.ax"; ay: "ez.ay"; az: "ez.az"; ba: "ez.ba"; bb: "ez.bb"; bc: "ez.bc"; bd: "ez.bd"; be: "ez.be"; bf: "ez.bf"; bg: "ez.bg"; bh: "ez.bh"; bi: "ez.bi"; bj: "ez.bj"; bk: "ez.bk"; bl: "ez.bl"; bm: "ez.bm"; bn: "ez.bn"; bo: "ez.bo"; bp: "ez.bp"; bq: "ez.bq"; br: "ez.br"; bs: "ez.bs"; bt: "ez.bt"; bu: "ez.bu"; bv: "ez.bv"; bw: "ez.bw"; bx: "ez.bx"; by: "ez.by"; bz: "ez.bz"; ca: "ez.ca"; cb: "ez.cb"; cc: "ez.cc"; cd: "ez.cd"; ce: "ez.ce"; cf: "ez.cf"; cg: "ez.cg"; ch: "ez.ch"; ci: "ez.ci"; cj: "ez.cj"; ck: "ez.ck"; cl: "ez.cl"; cm: "ez.cm"; cn: "ez.cn"; co: "ez.co"; cp: "ez.cp"; cq: "ez.cq"; cr: "ez.cr"; cs: "ez.cs"; ct: "ez.ct"; cu: "ez.cu"; cv: "ez.cv"; cw: "ez.cw"; cx: "ez.cx"; cy: "ez.cy"; cz: "ez.cz"; da: "ez.da"; db: "ez.db"; dc: "ez.dc"; dd: "ez.dd"; de: "ez.de"; df: "ez.df"; dg: "ez.dg"; dh: "ez.dh"; di: "ez.di"; dj: "ez.dj"; dk: "ez.dk"; dl: "ez.dl"; dm: "ez.dm"; dn: "ez.dn"; do: "ez.do"; dp: "ez.dp"; dq: "ez.dq"; dr: "ez.dr"; ds: "ez.ds"; dt: "ez.dt"; du: "ez.du"; dv: "ez.dv"; dw: "ez.dw"; dx: "ez.dx"; dy: "ez.dy"; dz: "ez.dz"; ea: "ez.ea"; eb: "ez.eb"; ec: "ez.ec"; ed: "ez.ed"; ee: "ez.ee"; ef: "ez.ef"; eg: "ez.eg"; eh: "ez.eh"; ei: "ez.ei"; ej: "ez.ej"; ek: "ez.ek"; el: "ez.el"; em: "ez.em"; en: "ez.en"; eo: "ez.eo"; ep: "ez.ep"; eq: "ez.eq"; er: "ez.er"; es: "ez.es"; et: "ez.et"; eu: "ez.eu"; ev: "ez.ev"; ew: "ez.ew"; ex: "ez.ex"; ey: "ez.ey"; ez: "ez.ez"; fa: "ez.fa"; fb: "ez.fb"; fc: "ez.fc"; fd: "ez.fd"; fe: "ez.fe"; ff: "ez.ff"; fg: "ez.fg"; fh: "ez.fh"; fi: "ez.fi"; fj: "ez.fj"; fk: "ez.fk"; fl: "ez.fl"; fm: "ez.fm"; fn: "ez.fn"; fo: "ez.fo"; fp: "ez.fp"; fq: "ez.fq"; fr: "ez.fr"; fs: "ez.fs"; ft: "ez.ft"; fu: "ez.fu"; fv: "ez.fv"; fw: "ez.fw"; fx: "ez.fx"; fy: "ez.fy"; fz: "ez.fz"; ga: "ez.ga"; gb: "ez.gb"; gc: "ez.gc"; gd: "ez.gd"; ge: "ez.ge"; gf: "ez.gf"; gg: "ez.gg"; gh: "ez.gh"; gi: "ez.gi"; gj: "ez.gj"; gk: "ez.gk"; gl: "ez.gl"; gm: "ez.gm"; gn: "ez.gn"; go: "ez.go"; gp: "ez.gp"; gq: "ez.gq"; gr: "ez.gr"; gs: "ez.gs"; gt: "ez.gt"; gu: "ez.gu"; gv: "ez.gv"; gw: "ez.gw"; gx: "ez.gx"; gy: "ez.gy"; gz: "ez.gz"; ha: "ez.ha"; hb: "ez.hb"; hc: "ez.hc"; hd: "ez.hd"; he: "ez.he"; hf: "ez.hf"; hg: "ez.hg"; hh: "ez.hh"; hi: "ez.hi"; hj: "ez.hj"; hk: "ez.hk"; hl: "ez.hl"; hm: "ez.hm"; hn: "ez.hn"; ho: "ez.ho"; hp: "ez.hp"; hq: "ez.hq"; hr: "ez.hr"; hs: "ez.hs"; ht: "ez.ht"; hu: "ez.hu"; hv: "ez.hv"; hw: "ez.hw"; hx: "ez.hx"; hy: "ez.hy"; hz: "ez.hz"; ia: "ez.ia"; ib: "ez.ib"; ic: "ez.ic"; id: "ez.id"; ie: "ez.ie"; if: "ez.if"; ig: "ez.ig"; ih: "ez.ih"; ii: "ez.ii"; ij: "ez.ij"; ik: "ez.ik"; il: "ez.il"; im: "ez.im"; in: "ez.in"; io: "ez.io"; ip: "ez.ip"; iq: "ez.iq"; ir: "ez.ir"; is: "ez.is"; it: "ez.it"; iu: "ez.iu"; iv: "ez.iv"; iw: "ez.iw"; ix: "ez.ix"; iy: "ez.iy"; iz: "ez.iz"; ja: "ez.ja"; jb: "ez.jb"; jc: "ez.jc"; jd: "ez.jd"; je: "ez.je"; jf: "ez.jf"; jg: "ez.jg"; jh: "ez.jh"; ji: "ez.ji"; jj: "ez.jj"; jk: "ez.jk"; jl: "ez.jl"; jm: "ez.jm"; jn: "ez.jn"; jo: "ez.jo"; jp: "ez.jp"; jq: "ez.jq"; jr: "ez.jr"; js: "ez.js"; jt: "ez.jt"; ju: "ez.ju"; jv: "ez.jv"; jw: "ez.jw"; jx: "ez.jx"; jy: "ez.jy"; jz: "ez.jz"; ka: "ez.ka"; kb: "ez.kb"; kc: "ez.kc"; kd: "ez.kd"; ke: "ez.ke"; kf: "ez.kf"; kg: "ez.kg"; kh: "ez.kh"; ki: "ez.ki"; kj: "ez.kj"; kk: "ez.kk"; kl: "ez.kl"; km: "ez.km"; kn: "ez.kn"; ko: "ez.ko"; kp: "ez.kp"; kq: "ez.kq"; kr: "ez.kr"; ks: "ez.ks"; kt: "ez.kt"; ku: "ez.ku"; kv: "ez.kv"; kw: "ez.kw"; kx: "ez.kx"; ky: "ez.ky"; kz: "ez.kz"; la: "ez.la"; lb: "ez.lb"; lc: "ez.lc"; ld: "ez.ld"; le: "ez.le"; lf: "ez.lf"; lg: "ez.lg"; lh: "ez.lh"; li: "ez.li"; lj: "ez.lj"; lk: "ez.lk"; ll: "ez.ll"; lm: "ez.lm"; ln: "ez.ln"; lo: "ez.lo"; lp: "ez.lp"; lq: "ez.lq"; lr: "ez.lr"; ls: "ez.ls"; lt: "ez.lt"; lu: "ez.lu"; lv: "ez.lv"; lw: "ez.lw"; lx: "ez.lx"; ly: "ez.ly"; lz: "ez.lz"; ma: "ez.ma"; mb: "ez.mb"; mc: "ez.mc"; md: "ez.md"; me: "ez.me"; mf: "ez.mf"; mg: "ez.mg"; mh: "ez.mh"; mi: "ez.mi"; mj: "ez.mj"; mk: "ez.mk"; ml: "ez.ml"; mm: "ez.mm"; mn: "ez.mn"; mo: "ez.mo"; mp: "ez.mp"; mq: "ez.mq"; mr: "ez.mr"; ms: "ez.ms"; mt: "ez.mt"; mu: "ez.mu"; mv: "ez.mv"; mw: "ez.mw"; mx: "ez.mx"; my: "ez.my"; mz: "ez.mz"; na: "ez.na"; nb: "ez.nb"; nc: "ez.nc"; nd: "ez.nd"; ne: "ez.ne"; nf: "ez.nf"; ng: "ez.ng"; nh: "ez.nh"; ni: "ez.ni"; nj: "ez.nj"; nk: "ez.nk"; nl: "ez.nl"; nm: "ez.nm"; nn: "ez.nn"; no: "ez.no"; np: "ez.np"; nq: "ez.nq"; nr: "ez.nr"; ns: "ez.ns"; nt: "ez.nt"; nu: "ez.nu"; nv: "ez.nv"; nw: "ez.nw"; nx: "ez.nx"; ny: "ez.ny"; nz: "ez.nz"; oa: "ez.oa"; ob: "ez.ob"; oc: "ez.oc"; od: "ez.od"; oe: "ez.oe"; of: "ez.of"; og: "ez.og"; oh: "ez.oh"; oi: "ez.oi"; oj: "ez.oj"; ok: "ez.ok"; ol: "ez.ol"; om: "ez.om"; on: "ez.on"; oo: "ez.oo"; op: "ez.op"; oq: "ez.oq"; or: "ez.or"; os: "ez.os"; ot: "ez.ot"; ou: "ez.ou"; ov: "ez.ov"; ow: "ez.ow"; ox: "ez.ox"; oy: "ez.oy"; oz: "ez.oz"; pa: "ez.pa"; pb: "ez.pb"; pc: "ez.pc"; pd: "ez.pd"; pe: "ez.pe"; pf: "ez.pf"; pg: "ez.pg"; ph: "ez.ph"; pi: "ez.pi"; pj: "ez.pj"; pk: "ez.pk"; pl: "ez.pl"; pm: "ez.pm"; pn: "ez.pn"; po: "ez.po"; pp: "ez.pp"; pq: "ez.pq"; pr: "ez.pr"; ps: "ez.ps"; pt: "ez.pt"; pu: "ez.pu"; pv: "ez.pv"; pw: "ez.pw"; px: "ez.px"; py: "ez.py"; pz: "ez.pz"; qa: "ez.qa"; qb: "ez.qb"; qc: "ez.qc"; qd: "ez.qd"; qe: "ez.qe"; qf: "ez.qf"; qg: "ez.qg"; qh: "ez.qh"; qi: "ez.qi"; qj: "ez.qj"; qk: "ez.qk"; ql: "ez.ql"; qm: "ez.qm"; qn: "ez.qn"; qo: "ez.qo"; qp: "ez.qp"; qq: "ez.qq"; qr: "ez.qr"; qs: "ez.qs"; qt: "ez.qt"; qu: "ez.qu"; qv: "ez.qv"; qw: "ez.qw"; qx: "ez.qx"; qy: "ez.qy"; qz: "ez.qz"; ra: "ez.ra"; rb: "ez.rb"; rc: "ez.rc"; rd: "ez.rd"; re: "ez.re"; rf: "ez.rf"; rg: "ez.rg"; rh: "ez.rh"; ri: "ez.ri"; rj: "ez.rj"; rk: "ez.rk"; rl: "ez.rl"; rm: "ez.rm"; rn: "ez.rn"; ro: "ez.ro"; rp: "ez.rp"; rq: "ez.rq"; rr: "ez.rr"; rs: "ez.rs"; rt: "ez.rt"; ru: "ez.ru"; rv: "ez.rv"; rw: "ez.rw"; rx: "ez.rx"; ry: "ez.ry"; rz: "ez.rz"; sa: "ez.sa"; sb: "ez.sb"; sc: "ez.sc"; sd: "ez.sd"; se: "ez.se"; sf: "ez.sf"; sg: "ez.sg"; sh: "ez.sh"; si: "ez.si"; sj: "ez.sj"; sk: "ez.sk"; sl: "ez.sl"; sm: "ez.sm"; sn: "ez.sn"; so: "ez.so"; sp: "ez.sp"; sq: "ez.sq"; sr: "ez.sr"; ss: "ez.ss"; st: "ez.st"; su: "ez.su"; sv: "ez.sv"; sw: "ez.sw"; sx: "ez.sx"; sy: "ez.sy"; sz: "ez.sz"; ta: "ez.ta"; tb: "ez.tb"; tc: "ez.tc"; td: "ez.td"; te: "ez.te"; tf: "ez.tf"; tg: "ez.tg"; th: "ez.th"; ti: "ez.ti"; tj: "ez.tj"; tk: "ez.tk"; tl: "ez.tl"; tm: "ez.tm"; tn: "ez.tn"; to: "ez.to"; tp: "ez.tp"; tq: "ez.tq"; tr: "ez.tr"; ts: "ez.ts"; tt: "ez.tt"; tu: "ez.tu"; tv: "ez.tv"; tw: "ez.tw"; tx: "ez.tx"; ty: "ez.ty"; tz: "ez.tz"; ua: "ez.ua"; ub: "ez.ub"; uc: "ez.uc"; ud: "ez.ud"; ue: "ez.ue"; uf: "ez.uf"; ug: "ez.ug"; uh: "ez.uh"; ui: "ez.ui"; uj: "ez.uj"; uk: "ez.uk"; ul: "ez.ul"; um: "ez.um"; un: "ez.un"; uo: "ez.uo"; up: "ez.up"; uq: "ez.uq"; ur: "ez.ur"; us: "ez.us"; ut: "ez.ut"; uu: "ez.uu"; uv: "ez.uv"; uw: "ez.uw"; ux: "ez.ux"; uy: "ez.uy"; uz: "ez.uz"; va: "ez.va"; vb: "ez.vb"; vc: "ez.vc"; vd: "ez.vd"; ve: "ez.ve"; vf: "ez.vf"; vg: "ez.vg"; vh: "ez.vh"; vi: "ez.vi"; vj: "ez.vj"; vk: "ez.vk"; vl: "ez.vl"; vm: "ez.vm"; vn: "ez.vn"; vo: "ez.vo"; vp: "ez.vp"; vq: "ez.vq"; vr: "ez.vr"; vs: "ez.vs"; vt: "ez.vt"; vu: "ez.vu"; vv: "ez.vv"; vw: "ez.vw"; vx: "ez.vx"; vy: "ez.vy"; vz: "ez.vz"; wa: "ez.wa"; wb: "ez.wb"; wc: "ez.wc"; wd: "ez.wd"; we: "ez.we"; wf: "ez.wf"; wg: "ez.wg"; wh: "ez.wh"; wi: "ez.wi"; wj: "ez.wj"; wk: "ez.wk"; wl: "ez.wl"; wm: "ez.wm"; wn: "ez.wn"; wo: "ez.wo"; wp: "ez.wp"; wq: "ez.wq"; wr: "ez.wr"; ws: "ez.ws"; wt: "ez.wt"; wu: "ez.wu"; wv: "ez.wv"; ww: "ez.ww"; wx: "ez.wx"; wy: "ez.wy"; wz: "ez.wz"; xa: "ez.xa"; xb: "ez.xb"; xc: "ez.xc"; xd: "ez.xd"; xe: "ez.xe"; xf: "ez.xf"; xg: "ez.xg"; xh: "ez.xh"; xi: "ez.xi"; xj: "ez.xj"; xk: "ez.xk"; xl: "ez.xl"; xm: "ez.xm"; xn: "ez.xn"; xo: "ez.xo"; xp: "ez.xp"; xq: "ez.xq"; xr: "ez.xr"; xs: "ez.xs"; xt: "ez.xt"; xu: "ez.xu"; xv: "ez.xv"; xw: "ez.xw"; xx: "ez.xx"; xy: "ez.xy"; xz: "ez.xz"; ya: "ez.ya"; yb: "ez.yb"; yc: "ez.yc"; yd: "ez.yd"; ye: "ez.ye"; yf: "ez.yf"; yg: "ez.yg"; yh: "ez.yh"; yi: "ez.yi"; yj: "ez.yj"; yk: "ez.yk"; yl: "ez.yl"; ym: "ez.ym"; yn: "ez.yn"; yo: "ez.yo"; yp: "ez.yp"; yq: "ez.yq"; yr: "ez.yr"; ys: "ez.ys"; yt: "ez.yt"; yu: "ez.yu"; yv: "ez.yv"; yw: "ez.yw"; yx: "ez.yx"; yy: "ez.yy"; yz: "ez.yz"; za: "ez.za"; zb: "ez.zb"; zc: "ez.zc"; zd: "ez.zd"; ze: "ez.ze"; zf: "ez.zf"; zg: "ez.zg"; zh: "ez.zh"; zi: "ez.zi"; zj: "ez.zj"; zk: "ez.zk"; zl: "ez.zl"; zm: "ez.zm"; zn: "ez.zn"; zo: "ez.zo"; zp: "ez.zp"; zq: "ez.zq"; zr: "ez.zr"; zs: "ez.zs"; zt: "ez.zt"; zu: "ez.zu"; zv: "ez.zv"; zw: "ez.zw"; zx: "ez.zx"; zy: "ez.zy"; zz: "ez.zz"; }; fa: { aa: "fa.aa"; ab: "fa.ab"; ac: "fa.ac"; ad: "fa.ad"; ae: "fa.ae"; af: "fa.af"; ag: "fa.ag"; ah: "fa.ah"; ai: "fa.ai"; aj: "fa.aj"; ak: "fa.ak"; al: "fa.al"; am: "fa.am"; an: "fa.an"; ao: "fa.ao"; ap: "fa.ap"; aq: "fa.aq"; ar: "fa.ar"; as: "fa.as"; at: "fa.at"; au: "fa.au"; av: "fa.av"; aw: "fa.aw"; ax: "fa.ax"; ay: "fa.ay"; az: "fa.az"; ba: "fa.ba"; bb: "fa.bb"; bc: "fa.bc"; bd: "fa.bd"; be: "fa.be"; bf: "fa.bf"; bg: "fa.bg"; bh: "fa.bh"; bi: "fa.bi"; bj: "fa.bj"; bk: "fa.bk"; bl: "fa.bl"; bm: "fa.bm"; bn: "fa.bn"; bo: "fa.bo"; bp: "fa.bp"; bq: "fa.bq"; br: "fa.br"; bs: "fa.bs"; bt: "fa.bt"; bu: "fa.bu"; bv: "fa.bv"; bw: "fa.bw"; bx: "fa.bx"; by: "fa.by"; bz: "fa.bz"; ca: "fa.ca"; cb: "fa.cb"; cc: "fa.cc"; cd: "fa.cd"; ce: "fa.ce"; cf: "fa.cf"; cg: "fa.cg"; ch: "fa.ch"; ci: "fa.ci"; cj: "fa.cj"; ck: "fa.ck"; cl: "fa.cl"; cm: "fa.cm"; cn: "fa.cn"; co: "fa.co"; cp: "fa.cp"; cq: "fa.cq"; cr: "fa.cr"; cs: "fa.cs"; ct: "fa.ct"; cu: "fa.cu"; cv: "fa.cv"; cw: "fa.cw"; cx: "fa.cx"; cy: "fa.cy"; cz: "fa.cz"; da: "fa.da"; db: "fa.db"; dc: "fa.dc"; dd: "fa.dd"; de: "fa.de"; df: "fa.df"; dg: "fa.dg"; dh: "fa.dh"; di: "fa.di"; dj: "fa.dj"; dk: "fa.dk"; dl: "fa.dl"; dm: "fa.dm"; dn: "fa.dn"; do: "fa.do"; dp: "fa.dp"; dq: "fa.dq"; dr: "fa.dr"; ds: "fa.ds"; dt: "fa.dt"; du: "fa.du"; dv: "fa.dv"; dw: "fa.dw"; dx: "fa.dx"; dy: "fa.dy"; dz: "fa.dz"; ea: "fa.ea"; eb: "fa.eb"; ec: "fa.ec"; ed: "fa.ed"; ee: "fa.ee"; ef: "fa.ef"; eg: "fa.eg"; eh: "fa.eh"; ei: "fa.ei"; ej: "fa.ej"; ek: "fa.ek"; el: "fa.el"; em: "fa.em"; en: "fa.en"; eo: "fa.eo"; ep: "fa.ep"; eq: "fa.eq"; er: "fa.er"; es: "fa.es"; et: "fa.et"; eu: "fa.eu"; ev: "fa.ev"; ew: "fa.ew"; ex: "fa.ex"; ey: "fa.ey"; ez: "fa.ez"; fa: "fa.fa"; fb: "fa.fb"; fc: "fa.fc"; fd: "fa.fd"; fe: "fa.fe"; ff: "fa.ff"; fg: "fa.fg"; fh: "fa.fh"; fi: "fa.fi"; fj: "fa.fj"; fk: "fa.fk"; fl: "fa.fl"; fm: "fa.fm"; fn: "fa.fn"; fo: "fa.fo"; fp: "fa.fp"; fq: "fa.fq"; fr: "fa.fr"; fs: "fa.fs"; ft: "fa.ft"; fu: "fa.fu"; fv: "fa.fv"; fw: "fa.fw"; fx: "fa.fx"; fy: "fa.fy"; fz: "fa.fz"; ga: "fa.ga"; gb: "fa.gb"; gc: "fa.gc"; gd: "fa.gd"; ge: "fa.ge"; gf: "fa.gf"; gg: "fa.gg"; gh: "fa.gh"; gi: "fa.gi"; gj: "fa.gj"; gk: "fa.gk"; gl: "fa.gl"; gm: "fa.gm"; gn: "fa.gn"; go: "fa.go"; gp: "fa.gp"; gq: "fa.gq"; gr: "fa.gr"; gs: "fa.gs"; gt: "fa.gt"; gu: "fa.gu"; gv: "fa.gv"; gw: "fa.gw"; gx: "fa.gx"; gy: "fa.gy"; gz: "fa.gz"; ha: "fa.ha"; hb: "fa.hb"; hc: "fa.hc"; hd: "fa.hd"; he: "fa.he"; hf: "fa.hf"; hg: "fa.hg"; hh: "fa.hh"; hi: "fa.hi"; hj: "fa.hj"; hk: "fa.hk"; hl: "fa.hl"; hm: "fa.hm"; hn: "fa.hn"; ho: "fa.ho"; hp: "fa.hp"; hq: "fa.hq"; hr: "fa.hr"; hs: "fa.hs"; ht: "fa.ht"; hu: "fa.hu"; hv: "fa.hv"; hw: "fa.hw"; hx: "fa.hx"; hy: "fa.hy"; hz: "fa.hz"; ia: "fa.ia"; ib: "fa.ib"; ic: "fa.ic"; id: "fa.id"; ie: "fa.ie"; if: "fa.if"; ig: "fa.ig"; ih: "fa.ih"; ii: "fa.ii"; ij: "fa.ij"; ik: "fa.ik"; il: "fa.il"; im: "fa.im"; in: "fa.in"; io: "fa.io"; ip: "fa.ip"; iq: "fa.iq"; ir: "fa.ir"; is: "fa.is"; it: "fa.it"; iu: "fa.iu"; iv: "fa.iv"; iw: "fa.iw"; ix: "fa.ix"; iy: "fa.iy"; iz: "fa.iz"; ja: "fa.ja"; jb: "fa.jb"; jc: "fa.jc"; jd: "fa.jd"; je: "fa.je"; jf: "fa.jf"; jg: "fa.jg"; jh: "fa.jh"; ji: "fa.ji"; jj: "fa.jj"; jk: "fa.jk"; jl: "fa.jl"; jm: "fa.jm"; jn: "fa.jn"; jo: "fa.jo"; jp: "fa.jp"; jq: "fa.jq"; jr: "fa.jr"; js: "fa.js"; jt: "fa.jt"; ju: "fa.ju"; jv: "fa.jv"; jw: "fa.jw"; jx: "fa.jx"; jy: "fa.jy"; jz: "fa.jz"; ka: "fa.ka"; kb: "fa.kb"; kc: "fa.kc"; kd: "fa.kd"; ke: "fa.ke"; kf: "fa.kf"; kg: "fa.kg"; kh: "fa.kh"; ki: "fa.ki"; kj: "fa.kj"; kk: "fa.kk"; kl: "fa.kl"; km: "fa.km"; kn: "fa.kn"; ko: "fa.ko"; kp: "fa.kp"; kq: "fa.kq"; kr: "fa.kr"; ks: "fa.ks"; kt: "fa.kt"; ku: "fa.ku"; kv: "fa.kv"; kw: "fa.kw"; kx: "fa.kx"; ky: "fa.ky"; kz: "fa.kz"; la: "fa.la"; lb: "fa.lb"; lc: "fa.lc"; ld: "fa.ld"; le: "fa.le"; lf: "fa.lf"; lg: "fa.lg"; lh: "fa.lh"; li: "fa.li"; lj: "fa.lj"; lk: "fa.lk"; ll: "fa.ll"; lm: "fa.lm"; ln: "fa.ln"; lo: "fa.lo"; lp: "fa.lp"; lq: "fa.lq"; lr: "fa.lr"; ls: "fa.ls"; lt: "fa.lt"; lu: "fa.lu"; lv: "fa.lv"; lw: "fa.lw"; lx: "fa.lx"; ly: "fa.ly"; lz: "fa.lz"; ma: "fa.ma"; mb: "fa.mb"; mc: "fa.mc"; md: "fa.md"; me: "fa.me"; mf: "fa.mf"; mg: "fa.mg"; mh: "fa.mh"; mi: "fa.mi"; mj: "fa.mj"; mk: "fa.mk"; ml: "fa.ml"; mm: "fa.mm"; mn: "fa.mn"; mo: "fa.mo"; mp: "fa.mp"; mq: "fa.mq"; mr: "fa.mr"; ms: "fa.ms"; mt: "fa.mt"; mu: "fa.mu"; mv: "fa.mv"; mw: "fa.mw"; mx: "fa.mx"; my: "fa.my"; mz: "fa.mz"; na: "fa.na"; nb: "fa.nb"; nc: "fa.nc"; nd: "fa.nd"; ne: "fa.ne"; nf: "fa.nf"; ng: "fa.ng"; nh: "fa.nh"; ni: "fa.ni"; nj: "fa.nj"; nk: "fa.nk"; nl: "fa.nl"; nm: "fa.nm"; nn: "fa.nn"; no: "fa.no"; np: "fa.np"; nq: "fa.nq"; nr: "fa.nr"; ns: "fa.ns"; nt: "fa.nt"; nu: "fa.nu"; nv: "fa.nv"; nw: "fa.nw"; nx: "fa.nx"; ny: "fa.ny"; nz: "fa.nz"; oa: "fa.oa"; ob: "fa.ob"; oc: "fa.oc"; od: "fa.od"; oe: "fa.oe"; of: "fa.of"; og: "fa.og"; oh: "fa.oh"; oi: "fa.oi"; oj: "fa.oj"; ok: "fa.ok"; ol: "fa.ol"; om: "fa.om"; on: "fa.on"; oo: "fa.oo"; op: "fa.op"; oq: "fa.oq"; or: "fa.or"; os: "fa.os"; ot: "fa.ot"; ou: "fa.ou"; ov: "fa.ov"; ow: "fa.ow"; ox: "fa.ox"; oy: "fa.oy"; oz: "fa.oz"; pa: "fa.pa"; pb: "fa.pb"; pc: "fa.pc"; pd: "fa.pd"; pe: "fa.pe"; pf: "fa.pf"; pg: "fa.pg"; ph: "fa.ph"; pi: "fa.pi"; pj: "fa.pj"; pk: "fa.pk"; pl: "fa.pl"; pm: "fa.pm"; pn: "fa.pn"; po: "fa.po"; pp: "fa.pp"; pq: "fa.pq"; pr: "fa.pr"; ps: "fa.ps"; pt: "fa.pt"; pu: "fa.pu"; pv: "fa.pv"; pw: "fa.pw"; px: "fa.px"; py: "fa.py"; pz: "fa.pz"; qa: "fa.qa"; qb: "fa.qb"; qc: "fa.qc"; qd: "fa.qd"; qe: "fa.qe"; qf: "fa.qf"; qg: "fa.qg"; qh: "fa.qh"; qi: "fa.qi"; qj: "fa.qj"; qk: "fa.qk"; ql: "fa.ql"; qm: "fa.qm"; qn: "fa.qn"; qo: "fa.qo"; qp: "fa.qp"; qq: "fa.qq"; qr: "fa.qr"; qs: "fa.qs"; qt: "fa.qt"; qu: "fa.qu"; qv: "fa.qv"; qw: "fa.qw"; qx: "fa.qx"; qy: "fa.qy"; qz: "fa.qz"; ra: "fa.ra"; rb: "fa.rb"; rc: "fa.rc"; rd: "fa.rd"; re: "fa.re"; rf: "fa.rf"; rg: "fa.rg"; rh: "fa.rh"; ri: "fa.ri"; rj: "fa.rj"; rk: "fa.rk"; rl: "fa.rl"; rm: "fa.rm"; rn: "fa.rn"; ro: "fa.ro"; rp: "fa.rp"; rq: "fa.rq"; rr: "fa.rr"; rs: "fa.rs"; rt: "fa.rt"; ru: "fa.ru"; rv: "fa.rv"; rw: "fa.rw"; rx: "fa.rx"; ry: "fa.ry"; rz: "fa.rz"; sa: "fa.sa"; sb: "fa.sb"; sc: "fa.sc"; sd: "fa.sd"; se: "fa.se"; sf: "fa.sf"; sg: "fa.sg"; sh: "fa.sh"; si: "fa.si"; sj: "fa.sj"; sk: "fa.sk"; sl: "fa.sl"; sm: "fa.sm"; sn: "fa.sn"; so: "fa.so"; sp: "fa.sp"; sq: "fa.sq"; sr: "fa.sr"; ss: "fa.ss"; st: "fa.st"; su: "fa.su"; sv: "fa.sv"; sw: "fa.sw"; sx: "fa.sx"; sy: "fa.sy"; sz: "fa.sz"; ta: "fa.ta"; tb: "fa.tb"; tc: "fa.tc"; td: "fa.td"; te: "fa.te"; tf: "fa.tf"; tg: "fa.tg"; th: "fa.th"; ti: "fa.ti"; tj: "fa.tj"; tk: "fa.tk"; tl: "fa.tl"; tm: "fa.tm"; tn: "fa.tn"; to: "fa.to"; tp: "fa.tp"; tq: "fa.tq"; tr: "fa.tr"; ts: "fa.ts"; tt: "fa.tt"; tu: "fa.tu"; tv: "fa.tv"; tw: "fa.tw"; tx: "fa.tx"; ty: "fa.ty"; tz: "fa.tz"; ua: "fa.ua"; ub: "fa.ub"; uc: "fa.uc"; ud: "fa.ud"; ue: "fa.ue"; uf: "fa.uf"; ug: "fa.ug"; uh: "fa.uh"; ui: "fa.ui"; uj: "fa.uj"; uk: "fa.uk"; ul: "fa.ul"; um: "fa.um"; un: "fa.un"; uo: "fa.uo"; up: "fa.up"; uq: "fa.uq"; ur: "fa.ur"; us: "fa.us"; ut: "fa.ut"; uu: "fa.uu"; uv: "fa.uv"; uw: "fa.uw"; ux: "fa.ux"; uy: "fa.uy"; uz: "fa.uz"; va: "fa.va"; vb: "fa.vb"; vc: "fa.vc"; vd: "fa.vd"; ve: "fa.ve"; vf: "fa.vf"; vg: "fa.vg"; vh: "fa.vh"; vi: "fa.vi"; vj: "fa.vj"; vk: "fa.vk"; vl: "fa.vl"; vm: "fa.vm"; vn: "fa.vn"; vo: "fa.vo"; vp: "fa.vp"; vq: "fa.vq"; vr: "fa.vr"; vs: "fa.vs"; vt: "fa.vt"; vu: "fa.vu"; vv: "fa.vv"; vw: "fa.vw"; vx: "fa.vx"; vy: "fa.vy"; vz: "fa.vz"; wa: "fa.wa"; wb: "fa.wb"; wc: "fa.wc"; wd: "fa.wd"; we: "fa.we"; wf: "fa.wf"; wg: "fa.wg"; wh: "fa.wh"; wi: "fa.wi"; wj: "fa.wj"; wk: "fa.wk"; wl: "fa.wl"; wm: "fa.wm"; wn: "fa.wn"; wo: "fa.wo"; wp: "fa.wp"; wq: "fa.wq"; wr: "fa.wr"; ws: "fa.ws"; wt: "fa.wt"; wu: "fa.wu"; wv: "fa.wv"; ww: "fa.ww"; wx: "fa.wx"; wy: "fa.wy"; wz: "fa.wz"; xa: "fa.xa"; xb: "fa.xb"; xc: "fa.xc"; xd: "fa.xd"; xe: "fa.xe"; xf: "fa.xf"; xg: "fa.xg"; xh: "fa.xh"; xi: "fa.xi"; xj: "fa.xj"; xk: "fa.xk"; xl: "fa.xl"; xm: "fa.xm"; xn: "fa.xn"; xo: "fa.xo"; xp: "fa.xp"; xq: "fa.xq"; xr: "fa.xr"; xs: "fa.xs"; xt: "fa.xt"; xu: "fa.xu"; xv: "fa.xv"; xw: "fa.xw"; xx: "fa.xx"; xy: "fa.xy"; xz: "fa.xz"; ya: "fa.ya"; yb: "fa.yb"; yc: "fa.yc"; yd: "fa.yd"; ye: "fa.ye"; yf: "fa.yf"; yg: "fa.yg"; yh: "fa.yh"; yi: "fa.yi"; yj: "fa.yj"; yk: "fa.yk"; yl: "fa.yl"; ym: "fa.ym"; yn: "fa.yn"; yo: "fa.yo"; yp: "fa.yp"; yq: "fa.yq"; yr: "fa.yr"; ys: "fa.ys"; yt: "fa.yt"; yu: "fa.yu"; yv: "fa.yv"; yw: "fa.yw"; yx: "fa.yx"; yy: "fa.yy"; yz: "fa.yz"; za: "fa.za"; zb: "fa.zb"; zc: "fa.zc"; zd: "fa.zd"; ze: "fa.ze"; zf: "fa.zf"; zg: "fa.zg"; zh: "fa.zh"; zi: "fa.zi"; zj: "fa.zj"; zk: "fa.zk"; zl: "fa.zl"; zm: "fa.zm"; zn: "fa.zn"; zo: "fa.zo"; zp: "fa.zp"; zq: "fa.zq"; zr: "fa.zr"; zs: "fa.zs"; zt: "fa.zt"; zu: "fa.zu"; zv: "fa.zv"; zw: "fa.zw"; zx: "fa.zx"; zy: "fa.zy"; zz: "fa.zz"; }; fb: { aa: "fb.aa"; ab: "fb.ab"; ac: "fb.ac"; ad: "fb.ad"; ae: "fb.ae"; af: "fb.af"; ag: "fb.ag"; ah: "fb.ah"; ai: "fb.ai"; aj: "fb.aj"; ak: "fb.ak"; al: "fb.al"; am: "fb.am"; an: "fb.an"; ao: "fb.ao"; ap: "fb.ap"; aq: "fb.aq"; ar: "fb.ar"; as: "fb.as"; at: "fb.at"; au: "fb.au"; av: "fb.av"; aw: "fb.aw"; ax: "fb.ax"; ay: "fb.ay"; az: "fb.az"; ba: "fb.ba"; bb: "fb.bb"; bc: "fb.bc"; bd: "fb.bd"; be: "fb.be"; bf: "fb.bf"; bg: "fb.bg"; bh: "fb.bh"; bi: "fb.bi"; bj: "fb.bj"; bk: "fb.bk"; bl: "fb.bl"; bm: "fb.bm"; bn: "fb.bn"; bo: "fb.bo"; bp: "fb.bp"; bq: "fb.bq"; br: "fb.br"; bs: "fb.bs"; bt: "fb.bt"; bu: "fb.bu"; bv: "fb.bv"; bw: "fb.bw"; bx: "fb.bx"; by: "fb.by"; bz: "fb.bz"; ca: "fb.ca"; cb: "fb.cb"; cc: "fb.cc"; cd: "fb.cd"; ce: "fb.ce"; cf: "fb.cf"; cg: "fb.cg"; ch: "fb.ch"; ci: "fb.ci"; cj: "fb.cj"; ck: "fb.ck"; cl: "fb.cl"; cm: "fb.cm"; cn: "fb.cn"; co: "fb.co"; cp: "fb.cp"; cq: "fb.cq"; cr: "fb.cr"; cs: "fb.cs"; ct: "fb.ct"; cu: "fb.cu"; cv: "fb.cv"; cw: "fb.cw"; cx: "fb.cx"; cy: "fb.cy"; cz: "fb.cz"; da: "fb.da"; db: "fb.db"; dc: "fb.dc"; dd: "fb.dd"; de: "fb.de"; df: "fb.df"; dg: "fb.dg"; dh: "fb.dh"; di: "fb.di"; dj: "fb.dj"; dk: "fb.dk"; dl: "fb.dl"; dm: "fb.dm"; dn: "fb.dn"; do: "fb.do"; dp: "fb.dp"; dq: "fb.dq"; dr: "fb.dr"; ds: "fb.ds"; dt: "fb.dt"; du: "fb.du"; dv: "fb.dv"; dw: "fb.dw"; dx: "fb.dx"; dy: "fb.dy"; dz: "fb.dz"; ea: "fb.ea"; eb: "fb.eb"; ec: "fb.ec"; ed: "fb.ed"; ee: "fb.ee"; ef: "fb.ef"; eg: "fb.eg"; eh: "fb.eh"; ei: "fb.ei"; ej: "fb.ej"; ek: "fb.ek"; el: "fb.el"; em: "fb.em"; en: "fb.en"; eo: "fb.eo"; ep: "fb.ep"; eq: "fb.eq"; er: "fb.er"; es: "fb.es"; et: "fb.et"; eu: "fb.eu"; ev: "fb.ev"; ew: "fb.ew"; ex: "fb.ex"; ey: "fb.ey"; ez: "fb.ez"; fa: "fb.fa"; fb: "fb.fb"; fc: "fb.fc"; fd: "fb.fd"; fe: "fb.fe"; ff: "fb.ff"; fg: "fb.fg"; fh: "fb.fh"; fi: "fb.fi"; fj: "fb.fj"; fk: "fb.fk"; fl: "fb.fl"; fm: "fb.fm"; fn: "fb.fn"; fo: "fb.fo"; fp: "fb.fp"; fq: "fb.fq"; fr: "fb.fr"; fs: "fb.fs"; ft: "fb.ft"; fu: "fb.fu"; fv: "fb.fv"; fw: "fb.fw"; fx: "fb.fx"; fy: "fb.fy"; fz: "fb.fz"; ga: "fb.ga"; gb: "fb.gb"; gc: "fb.gc"; gd: "fb.gd"; ge: "fb.ge"; gf: "fb.gf"; gg: "fb.gg"; gh: "fb.gh"; gi: "fb.gi"; gj: "fb.gj"; gk: "fb.gk"; gl: "fb.gl"; gm: "fb.gm"; gn: "fb.gn"; go: "fb.go"; gp: "fb.gp"; gq: "fb.gq"; gr: "fb.gr"; gs: "fb.gs"; gt: "fb.gt"; gu: "fb.gu"; gv: "fb.gv"; gw: "fb.gw"; gx: "fb.gx"; gy: "fb.gy"; gz: "fb.gz"; ha: "fb.ha"; hb: "fb.hb"; hc: "fb.hc"; hd: "fb.hd"; he: "fb.he"; hf: "fb.hf"; hg: "fb.hg"; hh: "fb.hh"; hi: "fb.hi"; hj: "fb.hj"; hk: "fb.hk"; hl: "fb.hl"; hm: "fb.hm"; hn: "fb.hn"; ho: "fb.ho"; hp: "fb.hp"; hq: "fb.hq"; hr: "fb.hr"; hs: "fb.hs"; ht: "fb.ht"; hu: "fb.hu"; hv: "fb.hv"; hw: "fb.hw"; hx: "fb.hx"; hy: "fb.hy"; hz: "fb.hz"; ia: "fb.ia"; ib: "fb.ib"; ic: "fb.ic"; id: "fb.id"; ie: "fb.ie"; if: "fb.if"; ig: "fb.ig"; ih: "fb.ih"; ii: "fb.ii"; ij: "fb.ij"; ik: "fb.ik"; il: "fb.il"; im: "fb.im"; in: "fb.in"; io: "fb.io"; ip: "fb.ip"; iq: "fb.iq"; ir: "fb.ir"; is: "fb.is"; it: "fb.it"; iu: "fb.iu"; iv: "fb.iv"; iw: "fb.iw"; ix: "fb.ix"; iy: "fb.iy"; iz: "fb.iz"; ja: "fb.ja"; jb: "fb.jb"; jc: "fb.jc"; jd: "fb.jd"; je: "fb.je"; jf: "fb.jf"; jg: "fb.jg"; jh: "fb.jh"; ji: "fb.ji"; jj: "fb.jj"; jk: "fb.jk"; jl: "fb.jl"; jm: "fb.jm"; jn: "fb.jn"; jo: "fb.jo"; jp: "fb.jp"; jq: "fb.jq"; jr: "fb.jr"; js: "fb.js"; jt: "fb.jt"; ju: "fb.ju"; jv: "fb.jv"; jw: "fb.jw"; jx: "fb.jx"; jy: "fb.jy"; jz: "fb.jz"; ka: "fb.ka"; kb: "fb.kb"; kc: "fb.kc"; kd: "fb.kd"; ke: "fb.ke"; kf: "fb.kf"; kg: "fb.kg"; kh: "fb.kh"; ki: "fb.ki"; kj: "fb.kj"; kk: "fb.kk"; kl: "fb.kl"; km: "fb.km"; kn: "fb.kn"; ko: "fb.ko"; kp: "fb.kp"; kq: "fb.kq"; kr: "fb.kr"; ks: "fb.ks"; kt: "fb.kt"; ku: "fb.ku"; kv: "fb.kv"; kw: "fb.kw"; kx: "fb.kx"; ky: "fb.ky"; kz: "fb.kz"; la: "fb.la"; lb: "fb.lb"; lc: "fb.lc"; ld: "fb.ld"; le: "fb.le"; lf: "fb.lf"; lg: "fb.lg"; lh: "fb.lh"; li: "fb.li"; lj: "fb.lj"; lk: "fb.lk"; ll: "fb.ll"; lm: "fb.lm"; ln: "fb.ln"; lo: "fb.lo"; lp: "fb.lp"; lq: "fb.lq"; lr: "fb.lr"; ls: "fb.ls"; lt: "fb.lt"; lu: "fb.lu"; lv: "fb.lv"; lw: "fb.lw"; lx: "fb.lx"; ly: "fb.ly"; lz: "fb.lz"; ma: "fb.ma"; mb: "fb.mb"; mc: "fb.mc"; md: "fb.md"; me: "fb.me"; mf: "fb.mf"; mg: "fb.mg"; mh: "fb.mh"; mi: "fb.mi"; mj: "fb.mj"; mk: "fb.mk"; ml: "fb.ml"; mm: "fb.mm"; mn: "fb.mn"; mo: "fb.mo"; mp: "fb.mp"; mq: "fb.mq"; mr: "fb.mr"; ms: "fb.ms"; mt: "fb.mt"; mu: "fb.mu"; mv: "fb.mv"; mw: "fb.mw"; mx: "fb.mx"; my: "fb.my"; mz: "fb.mz"; na: "fb.na"; nb: "fb.nb"; nc: "fb.nc"; nd: "fb.nd"; ne: "fb.ne"; nf: "fb.nf"; ng: "fb.ng"; nh: "fb.nh"; ni: "fb.ni"; nj: "fb.nj"; nk: "fb.nk"; nl: "fb.nl"; nm: "fb.nm"; nn: "fb.nn"; no: "fb.no"; np: "fb.np"; nq: "fb.nq"; nr: "fb.nr"; ns: "fb.ns"; nt: "fb.nt"; nu: "fb.nu"; nv: "fb.nv"; nw: "fb.nw"; nx: "fb.nx"; ny: "fb.ny"; nz: "fb.nz"; oa: "fb.oa"; ob: "fb.ob"; oc: "fb.oc"; od: "fb.od"; oe: "fb.oe"; of: "fb.of"; og: "fb.og"; oh: "fb.oh"; oi: "fb.oi"; oj: "fb.oj"; ok: "fb.ok"; ol: "fb.ol"; om: "fb.om"; on: "fb.on"; oo: "fb.oo"; op: "fb.op"; oq: "fb.oq"; or: "fb.or"; os: "fb.os"; ot: "fb.ot"; ou: "fb.ou"; ov: "fb.ov"; ow: "fb.ow"; ox: "fb.ox"; oy: "fb.oy"; oz: "fb.oz"; pa: "fb.pa"; pb: "fb.pb"; pc: "fb.pc"; pd: "fb.pd"; pe: "fb.pe"; pf: "fb.pf"; pg: "fb.pg"; ph: "fb.ph"; pi: "fb.pi"; pj: "fb.pj"; pk: "fb.pk"; pl: "fb.pl"; pm: "fb.pm"; pn: "fb.pn"; po: "fb.po"; pp: "fb.pp"; pq: "fb.pq"; pr: "fb.pr"; ps: "fb.ps"; pt: "fb.pt"; pu: "fb.pu"; pv: "fb.pv"; pw: "fb.pw"; px: "fb.px"; py: "fb.py"; pz: "fb.pz"; qa: "fb.qa"; qb: "fb.qb"; qc: "fb.qc"; qd: "fb.qd"; qe: "fb.qe"; qf: "fb.qf"; qg: "fb.qg"; qh: "fb.qh"; qi: "fb.qi"; qj: "fb.qj"; qk: "fb.qk"; ql: "fb.ql"; qm: "fb.qm"; qn: "fb.qn"; qo: "fb.qo"; qp: "fb.qp"; qq: "fb.qq"; qr: "fb.qr"; qs: "fb.qs"; qt: "fb.qt"; qu: "fb.qu"; qv: "fb.qv"; qw: "fb.qw"; qx: "fb.qx"; qy: "fb.qy"; qz: "fb.qz"; ra: "fb.ra"; rb: "fb.rb"; rc: "fb.rc"; rd: "fb.rd"; re: "fb.re"; rf: "fb.rf"; rg: "fb.rg"; rh: "fb.rh"; ri: "fb.ri"; rj: "fb.rj"; rk: "fb.rk"; rl: "fb.rl"; rm: "fb.rm"; rn: "fb.rn"; ro: "fb.ro"; rp: "fb.rp"; rq: "fb.rq"; rr: "fb.rr"; rs: "fb.rs"; rt: "fb.rt"; ru: "fb.ru"; rv: "fb.rv"; rw: "fb.rw"; rx: "fb.rx"; ry: "fb.ry"; rz: "fb.rz"; sa: "fb.sa"; sb: "fb.sb"; sc: "fb.sc"; sd: "fb.sd"; se: "fb.se"; sf: "fb.sf"; sg: "fb.sg"; sh: "fb.sh"; si: "fb.si"; sj: "fb.sj"; sk: "fb.sk"; sl: "fb.sl"; sm: "fb.sm"; sn: "fb.sn"; so: "fb.so"; sp: "fb.sp"; sq: "fb.sq"; sr: "fb.sr"; ss: "fb.ss"; st: "fb.st"; su: "fb.su"; sv: "fb.sv"; sw: "fb.sw"; sx: "fb.sx"; sy: "fb.sy"; sz: "fb.sz"; ta: "fb.ta"; tb: "fb.tb"; tc: "fb.tc"; td: "fb.td"; te: "fb.te"; tf: "fb.tf"; tg: "fb.tg"; th: "fb.th"; ti: "fb.ti"; tj: "fb.tj"; tk: "fb.tk"; tl: "fb.tl"; tm: "fb.tm"; tn: "fb.tn"; to: "fb.to"; tp: "fb.tp"; tq: "fb.tq"; tr: "fb.tr"; ts: "fb.ts"; tt: "fb.tt"; tu: "fb.tu"; tv: "fb.tv"; tw: "fb.tw"; tx: "fb.tx"; ty: "fb.ty"; tz: "fb.tz"; ua: "fb.ua"; ub: "fb.ub"; uc: "fb.uc"; ud: "fb.ud"; ue: "fb.ue"; uf: "fb.uf"; ug: "fb.ug"; uh: "fb.uh"; ui: "fb.ui"; uj: "fb.uj"; uk: "fb.uk"; ul: "fb.ul"; um: "fb.um"; un: "fb.un"; uo: "fb.uo"; up: "fb.up"; uq: "fb.uq"; ur: "fb.ur"; us: "fb.us"; ut: "fb.ut"; uu: "fb.uu"; uv: "fb.uv"; uw: "fb.uw"; ux: "fb.ux"; uy: "fb.uy"; uz: "fb.uz"; va: "fb.va"; vb: "fb.vb"; vc: "fb.vc"; vd: "fb.vd"; ve: "fb.ve"; vf: "fb.vf"; vg: "fb.vg"; vh: "fb.vh"; vi: "fb.vi"; vj: "fb.vj"; vk: "fb.vk"; vl: "fb.vl"; vm: "fb.vm"; vn: "fb.vn"; vo: "fb.vo"; vp: "fb.vp"; vq: "fb.vq"; vr: "fb.vr"; vs: "fb.vs"; vt: "fb.vt"; vu: "fb.vu"; vv: "fb.vv"; vw: "fb.vw"; vx: "fb.vx"; vy: "fb.vy"; vz: "fb.vz"; wa: "fb.wa"; wb: "fb.wb"; wc: "fb.wc"; wd: "fb.wd"; we: "fb.we"; wf: "fb.wf"; wg: "fb.wg"; wh: "fb.wh"; wi: "fb.wi"; wj: "fb.wj"; wk: "fb.wk"; wl: "fb.wl"; wm: "fb.wm"; wn: "fb.wn"; wo: "fb.wo"; wp: "fb.wp"; wq: "fb.wq"; wr: "fb.wr"; ws: "fb.ws"; wt: "fb.wt"; wu: "fb.wu"; wv: "fb.wv"; ww: "fb.ww"; wx: "fb.wx"; wy: "fb.wy"; wz: "fb.wz"; xa: "fb.xa"; xb: "fb.xb"; xc: "fb.xc"; xd: "fb.xd"; xe: "fb.xe"; xf: "fb.xf"; xg: "fb.xg"; xh: "fb.xh"; xi: "fb.xi"; xj: "fb.xj"; xk: "fb.xk"; xl: "fb.xl"; xm: "fb.xm"; xn: "fb.xn"; xo: "fb.xo"; xp: "fb.xp"; xq: "fb.xq"; xr: "fb.xr"; xs: "fb.xs"; xt: "fb.xt"; xu: "fb.xu"; xv: "fb.xv"; xw: "fb.xw"; xx: "fb.xx"; xy: "fb.xy"; xz: "fb.xz"; ya: "fb.ya"; yb: "fb.yb"; yc: "fb.yc"; yd: "fb.yd"; ye: "fb.ye"; yf: "fb.yf"; yg: "fb.yg"; yh: "fb.yh"; yi: "fb.yi"; yj: "fb.yj"; yk: "fb.yk"; yl: "fb.yl"; ym: "fb.ym"; yn: "fb.yn"; yo: "fb.yo"; yp: "fb.yp"; yq: "fb.yq"; yr: "fb.yr"; ys: "fb.ys"; yt: "fb.yt"; yu: "fb.yu"; yv: "fb.yv"; yw: "fb.yw"; yx: "fb.yx"; yy: "fb.yy"; yz: "fb.yz"; za: "fb.za"; zb: "fb.zb"; zc: "fb.zc"; zd: "fb.zd"; ze: "fb.ze"; zf: "fb.zf"; zg: "fb.zg"; zh: "fb.zh"; zi: "fb.zi"; zj: "fb.zj"; zk: "fb.zk"; zl: "fb.zl"; zm: "fb.zm"; zn: "fb.zn"; zo: "fb.zo"; zp: "fb.zp"; zq: "fb.zq"; zr: "fb.zr"; zs: "fb.zs"; zt: "fb.zt"; zu: "fb.zu"; zv: "fb.zv"; zw: "fb.zw"; zx: "fb.zx"; zy: "fb.zy"; zz: "fb.zz"; }; fc: { aa: "fc.aa"; ab: "fc.ab"; ac: "fc.ac"; ad: "fc.ad"; ae: "fc.ae"; af: "fc.af"; ag: "fc.ag"; ah: "fc.ah"; ai: "fc.ai"; aj: "fc.aj"; ak: "fc.ak"; al: "fc.al"; am: "fc.am"; an: "fc.an"; ao: "fc.ao"; ap: "fc.ap"; aq: "fc.aq"; ar: "fc.ar"; as: "fc.as"; at: "fc.at"; au: "fc.au"; av: "fc.av"; aw: "fc.aw"; ax: "fc.ax"; ay: "fc.ay"; az: "fc.az"; ba: "fc.ba"; bb: "fc.bb"; bc: "fc.bc"; bd: "fc.bd"; be: "fc.be"; bf: "fc.bf"; bg: "fc.bg"; bh: "fc.bh"; bi: "fc.bi"; bj: "fc.bj"; bk: "fc.bk"; bl: "fc.bl"; bm: "fc.bm"; bn: "fc.bn"; bo: "fc.bo"; bp: "fc.bp"; bq: "fc.bq"; br: "fc.br"; bs: "fc.bs"; bt: "fc.bt"; bu: "fc.bu"; bv: "fc.bv"; bw: "fc.bw"; bx: "fc.bx"; by: "fc.by"; bz: "fc.bz"; ca: "fc.ca"; cb: "fc.cb"; cc: "fc.cc"; cd: "fc.cd"; ce: "fc.ce"; cf: "fc.cf"; cg: "fc.cg"; ch: "fc.ch"; ci: "fc.ci"; cj: "fc.cj"; ck: "fc.ck"; cl: "fc.cl"; cm: "fc.cm"; cn: "fc.cn"; co: "fc.co"; cp: "fc.cp"; cq: "fc.cq"; cr: "fc.cr"; cs: "fc.cs"; ct: "fc.ct"; cu: "fc.cu"; cv: "fc.cv"; cw: "fc.cw"; cx: "fc.cx"; cy: "fc.cy"; cz: "fc.cz"; da: "fc.da"; db: "fc.db"; dc: "fc.dc"; dd: "fc.dd"; de: "fc.de"; df: "fc.df"; dg: "fc.dg"; dh: "fc.dh"; di: "fc.di"; dj: "fc.dj"; dk: "fc.dk"; dl: "fc.dl"; dm: "fc.dm"; dn: "fc.dn"; do: "fc.do"; dp: "fc.dp"; dq: "fc.dq"; dr: "fc.dr"; ds: "fc.ds"; dt: "fc.dt"; du: "fc.du"; dv: "fc.dv"; dw: "fc.dw"; dx: "fc.dx"; dy: "fc.dy"; dz: "fc.dz"; ea: "fc.ea"; eb: "fc.eb"; ec: "fc.ec"; ed: "fc.ed"; ee: "fc.ee"; ef: "fc.ef"; eg: "fc.eg"; eh: "fc.eh"; ei: "fc.ei"; ej: "fc.ej"; ek: "fc.ek"; el: "fc.el"; em: "fc.em"; en: "fc.en"; eo: "fc.eo"; ep: "fc.ep"; eq: "fc.eq"; er: "fc.er"; es: "fc.es"; et: "fc.et"; eu: "fc.eu"; ev: "fc.ev"; ew: "fc.ew"; ex: "fc.ex"; ey: "fc.ey"; ez: "fc.ez"; fa: "fc.fa"; fb: "fc.fb"; fc: "fc.fc"; fd: "fc.fd"; fe: "fc.fe"; ff: "fc.ff"; fg: "fc.fg"; fh: "fc.fh"; fi: "fc.fi"; fj: "fc.fj"; fk: "fc.fk"; fl: "fc.fl"; fm: "fc.fm"; fn: "fc.fn"; fo: "fc.fo"; fp: "fc.fp"; fq: "fc.fq"; fr: "fc.fr"; fs: "fc.fs"; ft: "fc.ft"; fu: "fc.fu"; fv: "fc.fv"; fw: "fc.fw"; fx: "fc.fx"; fy: "fc.fy"; fz: "fc.fz"; ga: "fc.ga"; gb: "fc.gb"; gc: "fc.gc"; gd: "fc.gd"; ge: "fc.ge"; gf: "fc.gf"; gg: "fc.gg"; gh: "fc.gh"; gi: "fc.gi"; gj: "fc.gj"; gk: "fc.gk"; gl: "fc.gl"; gm: "fc.gm"; gn: "fc.gn"; go: "fc.go"; gp: "fc.gp"; gq: "fc.gq"; gr: "fc.gr"; gs: "fc.gs"; gt: "fc.gt"; gu: "fc.gu"; gv: "fc.gv"; gw: "fc.gw"; gx: "fc.gx"; gy: "fc.gy"; gz: "fc.gz"; ha: "fc.ha"; hb: "fc.hb"; hc: "fc.hc"; hd: "fc.hd"; he: "fc.he"; hf: "fc.hf"; hg: "fc.hg"; hh: "fc.hh"; hi: "fc.hi"; hj: "fc.hj"; hk: "fc.hk"; hl: "fc.hl"; hm: "fc.hm"; hn: "fc.hn"; ho: "fc.ho"; hp: "fc.hp"; hq: "fc.hq"; hr: "fc.hr"; hs: "fc.hs"; ht: "fc.ht"; hu: "fc.hu"; hv: "fc.hv"; hw: "fc.hw"; hx: "fc.hx"; hy: "fc.hy"; hz: "fc.hz"; ia: "fc.ia"; ib: "fc.ib"; ic: "fc.ic"; id: "fc.id"; ie: "fc.ie"; if: "fc.if"; ig: "fc.ig"; ih: "fc.ih"; ii: "fc.ii"; ij: "fc.ij"; ik: "fc.ik"; il: "fc.il"; im: "fc.im"; in: "fc.in"; io: "fc.io"; ip: "fc.ip"; iq: "fc.iq"; ir: "fc.ir"; is: "fc.is"; it: "fc.it"; iu: "fc.iu"; iv: "fc.iv"; iw: "fc.iw"; ix: "fc.ix"; iy: "fc.iy"; iz: "fc.iz"; ja: "fc.ja"; jb: "fc.jb"; jc: "fc.jc"; jd: "fc.jd"; je: "fc.je"; jf: "fc.jf"; jg: "fc.jg"; jh: "fc.jh"; ji: "fc.ji"; jj: "fc.jj"; jk: "fc.jk"; jl: "fc.jl"; jm: "fc.jm"; jn: "fc.jn"; jo: "fc.jo"; jp: "fc.jp"; jq: "fc.jq"; jr: "fc.jr"; js: "fc.js"; jt: "fc.jt"; ju: "fc.ju"; jv: "fc.jv"; jw: "fc.jw"; jx: "fc.jx"; jy: "fc.jy"; jz: "fc.jz"; ka: "fc.ka"; kb: "fc.kb"; kc: "fc.kc"; kd: "fc.kd"; ke: "fc.ke"; kf: "fc.kf"; kg: "fc.kg"; kh: "fc.kh"; ki: "fc.ki"; kj: "fc.kj"; kk: "fc.kk"; kl: "fc.kl"; km: "fc.km"; kn: "fc.kn"; ko: "fc.ko"; kp: "fc.kp"; kq: "fc.kq"; kr: "fc.kr"; ks: "fc.ks"; kt: "fc.kt"; ku: "fc.ku"; kv: "fc.kv"; kw: "fc.kw"; kx: "fc.kx"; ky: "fc.ky"; kz: "fc.kz"; la: "fc.la"; lb: "fc.lb"; lc: "fc.lc"; ld: "fc.ld"; le: "fc.le"; lf: "fc.lf"; lg: "fc.lg"; lh: "fc.lh"; li: "fc.li"; lj: "fc.lj"; lk: "fc.lk"; ll: "fc.ll"; lm: "fc.lm"; ln: "fc.ln"; lo: "fc.lo"; lp: "fc.lp"; lq: "fc.lq"; lr: "fc.lr"; ls: "fc.ls"; lt: "fc.lt"; lu: "fc.lu"; lv: "fc.lv"; lw: "fc.lw"; lx: "fc.lx"; ly: "fc.ly"; lz: "fc.lz"; ma: "fc.ma"; mb: "fc.mb"; mc: "fc.mc"; md: "fc.md"; me: "fc.me"; mf: "fc.mf"; mg: "fc.mg"; mh: "fc.mh"; mi: "fc.mi"; mj: "fc.mj"; mk: "fc.mk"; ml: "fc.ml"; mm: "fc.mm"; mn: "fc.mn"; mo: "fc.mo"; mp: "fc.mp"; mq: "fc.mq"; mr: "fc.mr"; ms: "fc.ms"; mt: "fc.mt"; mu: "fc.mu"; mv: "fc.mv"; mw: "fc.mw"; mx: "fc.mx"; my: "fc.my"; mz: "fc.mz"; na: "fc.na"; nb: "fc.nb"; nc: "fc.nc"; nd: "fc.nd"; ne: "fc.ne"; nf: "fc.nf"; ng: "fc.ng"; nh: "fc.nh"; ni: "fc.ni"; nj: "fc.nj"; nk: "fc.nk"; nl: "fc.nl"; nm: "fc.nm"; nn: "fc.nn"; no: "fc.no"; np: "fc.np"; nq: "fc.nq"; nr: "fc.nr"; ns: "fc.ns"; nt: "fc.nt"; nu: "fc.nu"; nv: "fc.nv"; nw: "fc.nw"; nx: "fc.nx"; ny: "fc.ny"; nz: "fc.nz"; oa: "fc.oa"; ob: "fc.ob"; oc: "fc.oc"; od: "fc.od"; oe: "fc.oe"; of: "fc.of"; og: "fc.og"; oh: "fc.oh"; oi: "fc.oi"; oj: "fc.oj"; ok: "fc.ok"; ol: "fc.ol"; om: "fc.om"; on: "fc.on"; oo: "fc.oo"; op: "fc.op"; oq: "fc.oq"; or: "fc.or"; os: "fc.os"; ot: "fc.ot"; ou: "fc.ou"; ov: "fc.ov"; ow: "fc.ow"; ox: "fc.ox"; oy: "fc.oy"; oz: "fc.oz"; pa: "fc.pa"; pb: "fc.pb"; pc: "fc.pc"; pd: "fc.pd"; pe: "fc.pe"; pf: "fc.pf"; pg: "fc.pg"; ph: "fc.ph"; pi: "fc.pi"; pj: "fc.pj"; pk: "fc.pk"; pl: "fc.pl"; pm: "fc.pm"; pn: "fc.pn"; po: "fc.po"; pp: "fc.pp"; pq: "fc.pq"; pr: "fc.pr"; ps: "fc.ps"; pt: "fc.pt"; pu: "fc.pu"; pv: "fc.pv"; pw: "fc.pw"; px: "fc.px"; py: "fc.py"; pz: "fc.pz"; qa: "fc.qa"; qb: "fc.qb"; qc: "fc.qc"; qd: "fc.qd"; qe: "fc.qe"; qf: "fc.qf"; qg: "fc.qg"; qh: "fc.qh"; qi: "fc.qi"; qj: "fc.qj"; qk: "fc.qk"; ql: "fc.ql"; qm: "fc.qm"; qn: "fc.qn"; qo: "fc.qo"; qp: "fc.qp"; qq: "fc.qq"; qr: "fc.qr"; qs: "fc.qs"; qt: "fc.qt"; qu: "fc.qu"; qv: "fc.qv"; qw: "fc.qw"; qx: "fc.qx"; qy: "fc.qy"; qz: "fc.qz"; ra: "fc.ra"; rb: "fc.rb"; rc: "fc.rc"; rd: "fc.rd"; re: "fc.re"; rf: "fc.rf"; rg: "fc.rg"; rh: "fc.rh"; ri: "fc.ri"; rj: "fc.rj"; rk: "fc.rk"; rl: "fc.rl"; rm: "fc.rm"; rn: "fc.rn"; ro: "fc.ro"; rp: "fc.rp"; rq: "fc.rq"; rr: "fc.rr"; rs: "fc.rs"; rt: "fc.rt"; ru: "fc.ru"; rv: "fc.rv"; rw: "fc.rw"; rx: "fc.rx"; ry: "fc.ry"; rz: "fc.rz"; sa: "fc.sa"; sb: "fc.sb"; sc: "fc.sc"; sd: "fc.sd"; se: "fc.se"; sf: "fc.sf"; sg: "fc.sg"; sh: "fc.sh"; si: "fc.si"; sj: "fc.sj"; sk: "fc.sk"; sl: "fc.sl"; sm: "fc.sm"; sn: "fc.sn"; so: "fc.so"; sp: "fc.sp"; sq: "fc.sq"; sr: "fc.sr"; ss: "fc.ss"; st: "fc.st"; su: "fc.su"; sv: "fc.sv"; sw: "fc.sw"; sx: "fc.sx"; sy: "fc.sy"; sz: "fc.sz"; ta: "fc.ta"; tb: "fc.tb"; tc: "fc.tc"; td: "fc.td"; te: "fc.te"; tf: "fc.tf"; tg: "fc.tg"; th: "fc.th"; ti: "fc.ti"; tj: "fc.tj"; tk: "fc.tk"; tl: "fc.tl"; tm: "fc.tm"; tn: "fc.tn"; to: "fc.to"; tp: "fc.tp"; tq: "fc.tq"; tr: "fc.tr"; ts: "fc.ts"; tt: "fc.tt"; tu: "fc.tu"; tv: "fc.tv"; tw: "fc.tw"; tx: "fc.tx"; ty: "fc.ty"; tz: "fc.tz"; ua: "fc.ua"; ub: "fc.ub"; uc: "fc.uc"; ud: "fc.ud"; ue: "fc.ue"; uf: "fc.uf"; ug: "fc.ug"; uh: "fc.uh"; ui: "fc.ui"; uj: "fc.uj"; uk: "fc.uk"; ul: "fc.ul"; um: "fc.um"; un: "fc.un"; uo: "fc.uo"; up: "fc.up"; uq: "fc.uq"; ur: "fc.ur"; us: "fc.us"; ut: "fc.ut"; uu: "fc.uu"; uv: "fc.uv"; uw: "fc.uw"; ux: "fc.ux"; uy: "fc.uy"; uz: "fc.uz"; va: "fc.va"; vb: "fc.vb"; vc: "fc.vc"; vd: "fc.vd"; ve: "fc.ve"; vf: "fc.vf"; vg: "fc.vg"; vh: "fc.vh"; vi: "fc.vi"; vj: "fc.vj"; vk: "fc.vk"; vl: "fc.vl"; vm: "fc.vm"; vn: "fc.vn"; vo: "fc.vo"; vp: "fc.vp"; vq: "fc.vq"; vr: "fc.vr"; vs: "fc.vs"; vt: "fc.vt"; vu: "fc.vu"; vv: "fc.vv"; vw: "fc.vw"; vx: "fc.vx"; vy: "fc.vy"; vz: "fc.vz"; wa: "fc.wa"; wb: "fc.wb"; wc: "fc.wc"; wd: "fc.wd"; we: "fc.we"; wf: "fc.wf"; wg: "fc.wg"; wh: "fc.wh"; wi: "fc.wi"; wj: "fc.wj"; wk: "fc.wk"; wl: "fc.wl"; wm: "fc.wm"; wn: "fc.wn"; wo: "fc.wo"; wp: "fc.wp"; wq: "fc.wq"; wr: "fc.wr"; ws: "fc.ws"; wt: "fc.wt"; wu: "fc.wu"; wv: "fc.wv"; ww: "fc.ww"; wx: "fc.wx"; wy: "fc.wy"; wz: "fc.wz"; xa: "fc.xa"; xb: "fc.xb"; xc: "fc.xc"; xd: "fc.xd"; xe: "fc.xe"; xf: "fc.xf"; xg: "fc.xg"; xh: "fc.xh"; xi: "fc.xi"; xj: "fc.xj"; xk: "fc.xk"; xl: "fc.xl"; xm: "fc.xm"; xn: "fc.xn"; xo: "fc.xo"; xp: "fc.xp"; xq: "fc.xq"; xr: "fc.xr"; xs: "fc.xs"; xt: "fc.xt"; xu: "fc.xu"; xv: "fc.xv"; xw: "fc.xw"; xx: "fc.xx"; xy: "fc.xy"; xz: "fc.xz"; ya: "fc.ya"; yb: "fc.yb"; yc: "fc.yc"; yd: "fc.yd"; ye: "fc.ye"; yf: "fc.yf"; yg: "fc.yg"; yh: "fc.yh"; yi: "fc.yi"; yj: "fc.yj"; yk: "fc.yk"; yl: "fc.yl"; ym: "fc.ym"; yn: "fc.yn"; yo: "fc.yo"; yp: "fc.yp"; yq: "fc.yq"; yr: "fc.yr"; ys: "fc.ys"; yt: "fc.yt"; yu: "fc.yu"; yv: "fc.yv"; yw: "fc.yw"; yx: "fc.yx"; yy: "fc.yy"; yz: "fc.yz"; za: "fc.za"; zb: "fc.zb"; zc: "fc.zc"; zd: "fc.zd"; ze: "fc.ze"; zf: "fc.zf"; zg: "fc.zg"; zh: "fc.zh"; zi: "fc.zi"; zj: "fc.zj"; zk: "fc.zk"; zl: "fc.zl"; zm: "fc.zm"; zn: "fc.zn"; zo: "fc.zo"; zp: "fc.zp"; zq: "fc.zq"; zr: "fc.zr"; zs: "fc.zs"; zt: "fc.zt"; zu: "fc.zu"; zv: "fc.zv"; zw: "fc.zw"; zx: "fc.zx"; zy: "fc.zy"; zz: "fc.zz"; }; fd: { aa: "fd.aa"; ab: "fd.ab"; ac: "fd.ac"; ad: "fd.ad"; ae: "fd.ae"; af: "fd.af"; ag: "fd.ag"; ah: "fd.ah"; ai: "fd.ai"; aj: "fd.aj"; ak: "fd.ak"; al: "fd.al"; am: "fd.am"; an: "fd.an"; ao: "fd.ao"; ap: "fd.ap"; aq: "fd.aq"; ar: "fd.ar"; as: "fd.as"; at: "fd.at"; au: "fd.au"; av: "fd.av"; aw: "fd.aw"; ax: "fd.ax"; ay: "fd.ay"; az: "fd.az"; ba: "fd.ba"; bb: "fd.bb"; bc: "fd.bc"; bd: "fd.bd"; be: "fd.be"; bf: "fd.bf"; bg: "fd.bg"; bh: "fd.bh"; bi: "fd.bi"; bj: "fd.bj"; bk: "fd.bk"; bl: "fd.bl"; bm: "fd.bm"; bn: "fd.bn"; bo: "fd.bo"; bp: "fd.bp"; bq: "fd.bq"; br: "fd.br"; bs: "fd.bs"; bt: "fd.bt"; bu: "fd.bu"; bv: "fd.bv"; bw: "fd.bw"; bx: "fd.bx"; by: "fd.by"; bz: "fd.bz"; ca: "fd.ca"; cb: "fd.cb"; cc: "fd.cc"; cd: "fd.cd"; ce: "fd.ce"; cf: "fd.cf"; cg: "fd.cg"; ch: "fd.ch"; ci: "fd.ci"; cj: "fd.cj"; ck: "fd.ck"; cl: "fd.cl"; cm: "fd.cm"; cn: "fd.cn"; co: "fd.co"; cp: "fd.cp"; cq: "fd.cq"; cr: "fd.cr"; cs: "fd.cs"; ct: "fd.ct"; cu: "fd.cu"; cv: "fd.cv"; cw: "fd.cw"; cx: "fd.cx"; cy: "fd.cy"; cz: "fd.cz"; da: "fd.da"; db: "fd.db"; dc: "fd.dc"; dd: "fd.dd"; de: "fd.de"; df: "fd.df"; dg: "fd.dg"; dh: "fd.dh"; di: "fd.di"; dj: "fd.dj"; dk: "fd.dk"; dl: "fd.dl"; dm: "fd.dm"; dn: "fd.dn"; do: "fd.do"; dp: "fd.dp"; dq: "fd.dq"; dr: "fd.dr"; ds: "fd.ds"; dt: "fd.dt"; du: "fd.du"; dv: "fd.dv"; dw: "fd.dw"; dx: "fd.dx"; dy: "fd.dy"; dz: "fd.dz"; ea: "fd.ea"; eb: "fd.eb"; ec: "fd.ec"; ed: "fd.ed"; ee: "fd.ee"; ef: "fd.ef"; eg: "fd.eg"; eh: "fd.eh"; ei: "fd.ei"; ej: "fd.ej"; ek: "fd.ek"; el: "fd.el"; em: "fd.em"; en: "fd.en"; eo: "fd.eo"; ep: "fd.ep"; eq: "fd.eq"; er: "fd.er"; es: "fd.es"; et: "fd.et"; eu: "fd.eu"; ev: "fd.ev"; ew: "fd.ew"; ex: "fd.ex"; ey: "fd.ey"; ez: "fd.ez"; fa: "fd.fa"; fb: "fd.fb"; fc: "fd.fc"; fd: "fd.fd"; fe: "fd.fe"; ff: "fd.ff"; fg: "fd.fg"; fh: "fd.fh"; fi: "fd.fi"; fj: "fd.fj"; fk: "fd.fk"; fl: "fd.fl"; fm: "fd.fm"; fn: "fd.fn"; fo: "fd.fo"; fp: "fd.fp"; fq: "fd.fq"; fr: "fd.fr"; fs: "fd.fs"; ft: "fd.ft"; fu: "fd.fu"; fv: "fd.fv"; fw: "fd.fw"; fx: "fd.fx"; fy: "fd.fy"; fz: "fd.fz"; ga: "fd.ga"; gb: "fd.gb"; gc: "fd.gc"; gd: "fd.gd"; ge: "fd.ge"; gf: "fd.gf"; gg: "fd.gg"; gh: "fd.gh"; gi: "fd.gi"; gj: "fd.gj"; gk: "fd.gk"; gl: "fd.gl"; gm: "fd.gm"; gn: "fd.gn"; go: "fd.go"; gp: "fd.gp"; gq: "fd.gq"; gr: "fd.gr"; gs: "fd.gs"; gt: "fd.gt"; gu: "fd.gu"; gv: "fd.gv"; gw: "fd.gw"; gx: "fd.gx"; gy: "fd.gy"; gz: "fd.gz"; ha: "fd.ha"; hb: "fd.hb"; hc: "fd.hc"; hd: "fd.hd"; he: "fd.he"; hf: "fd.hf"; hg: "fd.hg"; hh: "fd.hh"; hi: "fd.hi"; hj: "fd.hj"; hk: "fd.hk"; hl: "fd.hl"; hm: "fd.hm"; hn: "fd.hn"; ho: "fd.ho"; hp: "fd.hp"; hq: "fd.hq"; hr: "fd.hr"; hs: "fd.hs"; ht: "fd.ht"; hu: "fd.hu"; hv: "fd.hv"; hw: "fd.hw"; hx: "fd.hx"; hy: "fd.hy"; hz: "fd.hz"; ia: "fd.ia"; ib: "fd.ib"; ic: "fd.ic"; id: "fd.id"; ie: "fd.ie"; if: "fd.if"; ig: "fd.ig"; ih: "fd.ih"; ii: "fd.ii"; ij: "fd.ij"; ik: "fd.ik"; il: "fd.il"; im: "fd.im"; in: "fd.in"; io: "fd.io"; ip: "fd.ip"; iq: "fd.iq"; ir: "fd.ir"; is: "fd.is"; it: "fd.it"; iu: "fd.iu"; iv: "fd.iv"; iw: "fd.iw"; ix: "fd.ix"; iy: "fd.iy"; iz: "fd.iz"; ja: "fd.ja"; jb: "fd.jb"; jc: "fd.jc"; jd: "fd.jd"; je: "fd.je"; jf: "fd.jf"; jg: "fd.jg"; jh: "fd.jh"; ji: "fd.ji"; jj: "fd.jj"; jk: "fd.jk"; jl: "fd.jl"; jm: "fd.jm"; jn: "fd.jn"; jo: "fd.jo"; jp: "fd.jp"; jq: "fd.jq"; jr: "fd.jr"; js: "fd.js"; jt: "fd.jt"; ju: "fd.ju"; jv: "fd.jv"; jw: "fd.jw"; jx: "fd.jx"; jy: "fd.jy"; jz: "fd.jz"; ka: "fd.ka"; kb: "fd.kb"; kc: "fd.kc"; kd: "fd.kd"; ke: "fd.ke"; kf: "fd.kf"; kg: "fd.kg"; kh: "fd.kh"; ki: "fd.ki"; kj: "fd.kj"; kk: "fd.kk"; kl: "fd.kl"; km: "fd.km"; kn: "fd.kn"; ko: "fd.ko"; kp: "fd.kp"; kq: "fd.kq"; kr: "fd.kr"; ks: "fd.ks"; kt: "fd.kt"; ku: "fd.ku"; kv: "fd.kv"; kw: "fd.kw"; kx: "fd.kx"; ky: "fd.ky"; kz: "fd.kz"; la: "fd.la"; lb: "fd.lb"; lc: "fd.lc"; ld: "fd.ld"; le: "fd.le"; lf: "fd.lf"; lg: "fd.lg"; lh: "fd.lh"; li: "fd.li"; lj: "fd.lj"; lk: "fd.lk"; ll: "fd.ll"; lm: "fd.lm"; ln: "fd.ln"; lo: "fd.lo"; lp: "fd.lp"; lq: "fd.lq"; lr: "fd.lr"; ls: "fd.ls"; lt: "fd.lt"; lu: "fd.lu"; lv: "fd.lv"; lw: "fd.lw"; lx: "fd.lx"; ly: "fd.ly"; lz: "fd.lz"; ma: "fd.ma"; mb: "fd.mb"; mc: "fd.mc"; md: "fd.md"; me: "fd.me"; mf: "fd.mf"; mg: "fd.mg"; mh: "fd.mh"; mi: "fd.mi"; mj: "fd.mj"; mk: "fd.mk"; ml: "fd.ml"; mm: "fd.mm"; mn: "fd.mn"; mo: "fd.mo"; mp: "fd.mp"; mq: "fd.mq"; mr: "fd.mr"; ms: "fd.ms"; mt: "fd.mt"; mu: "fd.mu"; mv: "fd.mv"; mw: "fd.mw"; mx: "fd.mx"; my: "fd.my"; mz: "fd.mz"; na: "fd.na"; nb: "fd.nb"; nc: "fd.nc"; nd: "fd.nd"; ne: "fd.ne"; nf: "fd.nf"; ng: "fd.ng"; nh: "fd.nh"; ni: "fd.ni"; nj: "fd.nj"; nk: "fd.nk"; nl: "fd.nl"; nm: "fd.nm"; nn: "fd.nn"; no: "fd.no"; np: "fd.np"; nq: "fd.nq"; nr: "fd.nr"; ns: "fd.ns"; nt: "fd.nt"; nu: "fd.nu"; nv: "fd.nv"; nw: "fd.nw"; nx: "fd.nx"; ny: "fd.ny"; nz: "fd.nz"; oa: "fd.oa"; ob: "fd.ob"; oc: "fd.oc"; od: "fd.od"; oe: "fd.oe"; of: "fd.of"; og: "fd.og"; oh: "fd.oh"; oi: "fd.oi"; oj: "fd.oj"; ok: "fd.ok"; ol: "fd.ol"; om: "fd.om"; on: "fd.on"; oo: "fd.oo"; op: "fd.op"; oq: "fd.oq"; or: "fd.or"; os: "fd.os"; ot: "fd.ot"; ou: "fd.ou"; ov: "fd.ov"; ow: "fd.ow"; ox: "fd.ox"; oy: "fd.oy"; oz: "fd.oz"; pa: "fd.pa"; pb: "fd.pb"; pc: "fd.pc"; pd: "fd.pd"; pe: "fd.pe"; pf: "fd.pf"; pg: "fd.pg"; ph: "fd.ph"; pi: "fd.pi"; pj: "fd.pj"; pk: "fd.pk"; pl: "fd.pl"; pm: "fd.pm"; pn: "fd.pn"; po: "fd.po"; pp: "fd.pp"; pq: "fd.pq"; pr: "fd.pr"; ps: "fd.ps"; pt: "fd.pt"; pu: "fd.pu"; pv: "fd.pv"; pw: "fd.pw"; px: "fd.px"; py: "fd.py"; pz: "fd.pz"; qa: "fd.qa"; qb: "fd.qb"; qc: "fd.qc"; qd: "fd.qd"; qe: "fd.qe"; qf: "fd.qf"; qg: "fd.qg"; qh: "fd.qh"; qi: "fd.qi"; qj: "fd.qj"; qk: "fd.qk"; ql: "fd.ql"; qm: "fd.qm"; qn: "fd.qn"; qo: "fd.qo"; qp: "fd.qp"; qq: "fd.qq"; qr: "fd.qr"; qs: "fd.qs"; qt: "fd.qt"; qu: "fd.qu"; qv: "fd.qv"; qw: "fd.qw"; qx: "fd.qx"; qy: "fd.qy"; qz: "fd.qz"; ra: "fd.ra"; rb: "fd.rb"; rc: "fd.rc"; rd: "fd.rd"; re: "fd.re"; rf: "fd.rf"; rg: "fd.rg"; rh: "fd.rh"; ri: "fd.ri"; rj: "fd.rj"; rk: "fd.rk"; rl: "fd.rl"; rm: "fd.rm"; rn: "fd.rn"; ro: "fd.ro"; rp: "fd.rp"; rq: "fd.rq"; rr: "fd.rr"; rs: "fd.rs"; rt: "fd.rt"; ru: "fd.ru"; rv: "fd.rv"; rw: "fd.rw"; rx: "fd.rx"; ry: "fd.ry"; rz: "fd.rz"; sa: "fd.sa"; sb: "fd.sb"; sc: "fd.sc"; sd: "fd.sd"; se: "fd.se"; sf: "fd.sf"; sg: "fd.sg"; sh: "fd.sh"; si: "fd.si"; sj: "fd.sj"; sk: "fd.sk"; sl: "fd.sl"; sm: "fd.sm"; sn: "fd.sn"; so: "fd.so"; sp: "fd.sp"; sq: "fd.sq"; sr: "fd.sr"; ss: "fd.ss"; st: "fd.st"; su: "fd.su"; sv: "fd.sv"; sw: "fd.sw"; sx: "fd.sx"; sy: "fd.sy"; sz: "fd.sz"; ta: "fd.ta"; tb: "fd.tb"; tc: "fd.tc"; td: "fd.td"; te: "fd.te"; tf: "fd.tf"; tg: "fd.tg"; th: "fd.th"; ti: "fd.ti"; tj: "fd.tj"; tk: "fd.tk"; tl: "fd.tl"; tm: "fd.tm"; tn: "fd.tn"; to: "fd.to"; tp: "fd.tp"; tq: "fd.tq"; tr: "fd.tr"; ts: "fd.ts"; tt: "fd.tt"; tu: "fd.tu"; tv: "fd.tv"; tw: "fd.tw"; tx: "fd.tx"; ty: "fd.ty"; tz: "fd.tz"; ua: "fd.ua"; ub: "fd.ub"; uc: "fd.uc"; ud: "fd.ud"; ue: "fd.ue"; uf: "fd.uf"; ug: "fd.ug"; uh: "fd.uh"; ui: "fd.ui"; uj: "fd.uj"; uk: "fd.uk"; ul: "fd.ul"; um: "fd.um"; un: "fd.un"; uo: "fd.uo"; up: "fd.up"; uq: "fd.uq"; ur: "fd.ur"; us: "fd.us"; ut: "fd.ut"; uu: "fd.uu"; uv: "fd.uv"; uw: "fd.uw"; ux: "fd.ux"; uy: "fd.uy"; uz: "fd.uz"; va: "fd.va"; vb: "fd.vb"; vc: "fd.vc"; vd: "fd.vd"; ve: "fd.ve"; vf: "fd.vf"; vg: "fd.vg"; vh: "fd.vh"; vi: "fd.vi"; vj: "fd.vj"; vk: "fd.vk"; vl: "fd.vl"; vm: "fd.vm"; vn: "fd.vn"; vo: "fd.vo"; vp: "fd.vp"; vq: "fd.vq"; vr: "fd.vr"; vs: "fd.vs"; vt: "fd.vt"; vu: "fd.vu"; vv: "fd.vv"; vw: "fd.vw"; vx: "fd.vx"; vy: "fd.vy"; vz: "fd.vz"; wa: "fd.wa"; wb: "fd.wb"; wc: "fd.wc"; wd: "fd.wd"; we: "fd.we"; wf: "fd.wf"; wg: "fd.wg"; wh: "fd.wh"; wi: "fd.wi"; wj: "fd.wj"; wk: "fd.wk"; wl: "fd.wl"; wm: "fd.wm"; wn: "fd.wn"; wo: "fd.wo"; wp: "fd.wp"; wq: "fd.wq"; wr: "fd.wr"; ws: "fd.ws"; wt: "fd.wt"; wu: "fd.wu"; wv: "fd.wv"; ww: "fd.ww"; wx: "fd.wx"; wy: "fd.wy"; wz: "fd.wz"; xa: "fd.xa"; xb: "fd.xb"; xc: "fd.xc"; xd: "fd.xd"; xe: "fd.xe"; xf: "fd.xf"; xg: "fd.xg"; xh: "fd.xh"; xi: "fd.xi"; xj: "fd.xj"; xk: "fd.xk"; xl: "fd.xl"; xm: "fd.xm"; xn: "fd.xn"; xo: "fd.xo"; xp: "fd.xp"; xq: "fd.xq"; xr: "fd.xr"; xs: "fd.xs"; xt: "fd.xt"; xu: "fd.xu"; xv: "fd.xv"; xw: "fd.xw"; xx: "fd.xx"; xy: "fd.xy"; xz: "fd.xz"; ya: "fd.ya"; yb: "fd.yb"; yc: "fd.yc"; yd: "fd.yd"; ye: "fd.ye"; yf: "fd.yf"; yg: "fd.yg"; yh: "fd.yh"; yi: "fd.yi"; yj: "fd.yj"; yk: "fd.yk"; yl: "fd.yl"; ym: "fd.ym"; yn: "fd.yn"; yo: "fd.yo"; yp: "fd.yp"; yq: "fd.yq"; yr: "fd.yr"; ys: "fd.ys"; yt: "fd.yt"; yu: "fd.yu"; yv: "fd.yv"; yw: "fd.yw"; yx: "fd.yx"; yy: "fd.yy"; yz: "fd.yz"; za: "fd.za"; zb: "fd.zb"; zc: "fd.zc"; zd: "fd.zd"; ze: "fd.ze"; zf: "fd.zf"; zg: "fd.zg"; zh: "fd.zh"; zi: "fd.zi"; zj: "fd.zj"; zk: "fd.zk"; zl: "fd.zl"; zm: "fd.zm"; zn: "fd.zn"; zo: "fd.zo"; zp: "fd.zp"; zq: "fd.zq"; zr: "fd.zr"; zs: "fd.zs"; zt: "fd.zt"; zu: "fd.zu"; zv: "fd.zv"; zw: "fd.zw"; zx: "fd.zx"; zy: "fd.zy"; zz: "fd.zz"; }; fe: { aa: "fe.aa"; ab: "fe.ab"; ac: "fe.ac"; ad: "fe.ad"; ae: "fe.ae"; af: "fe.af"; ag: "fe.ag"; ah: "fe.ah"; ai: "fe.ai"; aj: "fe.aj"; ak: "fe.ak"; al: "fe.al"; am: "fe.am"; an: "fe.an"; ao: "fe.ao"; ap: "fe.ap"; aq: "fe.aq"; ar: "fe.ar"; as: "fe.as"; at: "fe.at"; au: "fe.au"; av: "fe.av"; aw: "fe.aw"; ax: "fe.ax"; ay: "fe.ay"; az: "fe.az"; ba: "fe.ba"; bb: "fe.bb"; bc: "fe.bc"; bd: "fe.bd"; be: "fe.be"; bf: "fe.bf"; bg: "fe.bg"; bh: "fe.bh"; bi: "fe.bi"; bj: "fe.bj"; bk: "fe.bk"; bl: "fe.bl"; bm: "fe.bm"; bn: "fe.bn"; bo: "fe.bo"; bp: "fe.bp"; bq: "fe.bq"; br: "fe.br"; bs: "fe.bs"; bt: "fe.bt"; bu: "fe.bu"; bv: "fe.bv"; bw: "fe.bw"; bx: "fe.bx"; by: "fe.by"; bz: "fe.bz"; ca: "fe.ca"; cb: "fe.cb"; cc: "fe.cc"; cd: "fe.cd"; ce: "fe.ce"; cf: "fe.cf"; cg: "fe.cg"; ch: "fe.ch"; ci: "fe.ci"; cj: "fe.cj"; ck: "fe.ck"; cl: "fe.cl"; cm: "fe.cm"; cn: "fe.cn"; co: "fe.co"; cp: "fe.cp"; cq: "fe.cq"; cr: "fe.cr"; cs: "fe.cs"; ct: "fe.ct"; cu: "fe.cu"; cv: "fe.cv"; cw: "fe.cw"; cx: "fe.cx"; cy: "fe.cy"; cz: "fe.cz"; da: "fe.da"; db: "fe.db"; dc: "fe.dc"; dd: "fe.dd"; de: "fe.de"; df: "fe.df"; dg: "fe.dg"; dh: "fe.dh"; di: "fe.di"; dj: "fe.dj"; dk: "fe.dk"; dl: "fe.dl"; dm: "fe.dm"; dn: "fe.dn"; do: "fe.do"; dp: "fe.dp"; dq: "fe.dq"; dr: "fe.dr"; ds: "fe.ds"; dt: "fe.dt"; du: "fe.du"; dv: "fe.dv"; dw: "fe.dw"; dx: "fe.dx"; dy: "fe.dy"; dz: "fe.dz"; ea: "fe.ea"; eb: "fe.eb"; ec: "fe.ec"; ed: "fe.ed"; ee: "fe.ee"; ef: "fe.ef"; eg: "fe.eg"; eh: "fe.eh"; ei: "fe.ei"; ej: "fe.ej"; ek: "fe.ek"; el: "fe.el"; em: "fe.em"; en: "fe.en"; eo: "fe.eo"; ep: "fe.ep"; eq: "fe.eq"; er: "fe.er"; es: "fe.es"; et: "fe.et"; eu: "fe.eu"; ev: "fe.ev"; ew: "fe.ew"; ex: "fe.ex"; ey: "fe.ey"; ez: "fe.ez"; fa: "fe.fa"; fb: "fe.fb"; fc: "fe.fc"; fd: "fe.fd"; fe: "fe.fe"; ff: "fe.ff"; fg: "fe.fg"; fh: "fe.fh"; fi: "fe.fi"; fj: "fe.fj"; fk: "fe.fk"; fl: "fe.fl"; fm: "fe.fm"; fn: "fe.fn"; fo: "fe.fo"; fp: "fe.fp"; fq: "fe.fq"; fr: "fe.fr"; fs: "fe.fs"; ft: "fe.ft"; fu: "fe.fu"; fv: "fe.fv"; fw: "fe.fw"; fx: "fe.fx"; fy: "fe.fy"; fz: "fe.fz"; ga: "fe.ga"; gb: "fe.gb"; gc: "fe.gc"; gd: "fe.gd"; ge: "fe.ge"; gf: "fe.gf"; gg: "fe.gg"; gh: "fe.gh"; gi: "fe.gi"; gj: "fe.gj"; gk: "fe.gk"; gl: "fe.gl"; gm: "fe.gm"; gn: "fe.gn"; go: "fe.go"; gp: "fe.gp"; gq: "fe.gq"; gr: "fe.gr"; gs: "fe.gs"; gt: "fe.gt"; gu: "fe.gu"; gv: "fe.gv"; gw: "fe.gw"; gx: "fe.gx"; gy: "fe.gy"; gz: "fe.gz"; ha: "fe.ha"; hb: "fe.hb"; hc: "fe.hc"; hd: "fe.hd"; he: "fe.he"; hf: "fe.hf"; hg: "fe.hg"; hh: "fe.hh"; hi: "fe.hi"; hj: "fe.hj"; hk: "fe.hk"; hl: "fe.hl"; hm: "fe.hm"; hn: "fe.hn"; ho: "fe.ho"; hp: "fe.hp"; hq: "fe.hq"; hr: "fe.hr"; hs: "fe.hs"; ht: "fe.ht"; hu: "fe.hu"; hv: "fe.hv"; hw: "fe.hw"; hx: "fe.hx"; hy: "fe.hy"; hz: "fe.hz"; ia: "fe.ia"; ib: "fe.ib"; ic: "fe.ic"; id: "fe.id"; ie: "fe.ie"; if: "fe.if"; ig: "fe.ig"; ih: "fe.ih"; ii: "fe.ii"; ij: "fe.ij"; ik: "fe.ik"; il: "fe.il"; im: "fe.im"; in: "fe.in"; io: "fe.io"; ip: "fe.ip"; iq: "fe.iq"; ir: "fe.ir"; is: "fe.is"; it: "fe.it"; iu: "fe.iu"; iv: "fe.iv"; iw: "fe.iw"; ix: "fe.ix"; iy: "fe.iy"; iz: "fe.iz"; ja: "fe.ja"; jb: "fe.jb"; jc: "fe.jc"; jd: "fe.jd"; je: "fe.je"; jf: "fe.jf"; jg: "fe.jg"; jh: "fe.jh"; ji: "fe.ji"; jj: "fe.jj"; jk: "fe.jk"; jl: "fe.jl"; jm: "fe.jm"; jn: "fe.jn"; jo: "fe.jo"; jp: "fe.jp"; jq: "fe.jq"; jr: "fe.jr"; js: "fe.js"; jt: "fe.jt"; ju: "fe.ju"; jv: "fe.jv"; jw: "fe.jw"; jx: "fe.jx"; jy: "fe.jy"; jz: "fe.jz"; ka: "fe.ka"; kb: "fe.kb"; kc: "fe.kc"; kd: "fe.kd"; ke: "fe.ke"; kf: "fe.kf"; kg: "fe.kg"; kh: "fe.kh"; ki: "fe.ki"; kj: "fe.kj"; kk: "fe.kk"; kl: "fe.kl"; km: "fe.km"; kn: "fe.kn"; ko: "fe.ko"; kp: "fe.kp"; kq: "fe.kq"; kr: "fe.kr"; ks: "fe.ks"; kt: "fe.kt"; ku: "fe.ku"; kv: "fe.kv"; kw: "fe.kw"; kx: "fe.kx"; ky: "fe.ky"; kz: "fe.kz"; la: "fe.la"; lb: "fe.lb"; lc: "fe.lc"; ld: "fe.ld"; le: "fe.le"; lf: "fe.lf"; lg: "fe.lg"; lh: "fe.lh"; li: "fe.li"; lj: "fe.lj"; lk: "fe.lk"; ll: "fe.ll"; lm: "fe.lm"; ln: "fe.ln"; lo: "fe.lo"; lp: "fe.lp"; lq: "fe.lq"; lr: "fe.lr"; ls: "fe.ls"; lt: "fe.lt"; lu: "fe.lu"; lv: "fe.lv"; lw: "fe.lw"; lx: "fe.lx"; ly: "fe.ly"; lz: "fe.lz"; ma: "fe.ma"; mb: "fe.mb"; mc: "fe.mc"; md: "fe.md"; me: "fe.me"; mf: "fe.mf"; mg: "fe.mg"; mh: "fe.mh"; mi: "fe.mi"; mj: "fe.mj"; mk: "fe.mk"; ml: "fe.ml"; mm: "fe.mm"; mn: "fe.mn"; mo: "fe.mo"; mp: "fe.mp"; mq: "fe.mq"; mr: "fe.mr"; ms: "fe.ms"; mt: "fe.mt"; mu: "fe.mu"; mv: "fe.mv"; mw: "fe.mw"; mx: "fe.mx"; my: "fe.my"; mz: "fe.mz"; na: "fe.na"; nb: "fe.nb"; nc: "fe.nc"; nd: "fe.nd"; ne: "fe.ne"; nf: "fe.nf"; ng: "fe.ng"; nh: "fe.nh"; ni: "fe.ni"; nj: "fe.nj"; nk: "fe.nk"; nl: "fe.nl"; nm: "fe.nm"; nn: "fe.nn"; no: "fe.no"; np: "fe.np"; nq: "fe.nq"; nr: "fe.nr"; ns: "fe.ns"; nt: "fe.nt"; nu: "fe.nu"; nv: "fe.nv"; nw: "fe.nw"; nx: "fe.nx"; ny: "fe.ny"; nz: "fe.nz"; oa: "fe.oa"; ob: "fe.ob"; oc: "fe.oc"; od: "fe.od"; oe: "fe.oe"; of: "fe.of"; og: "fe.og"; oh: "fe.oh"; oi: "fe.oi"; oj: "fe.oj"; ok: "fe.ok"; ol: "fe.ol"; om: "fe.om"; on: "fe.on"; oo: "fe.oo"; op: "fe.op"; oq: "fe.oq"; or: "fe.or"; os: "fe.os"; ot: "fe.ot"; ou: "fe.ou"; ov: "fe.ov"; ow: "fe.ow"; ox: "fe.ox"; oy: "fe.oy"; oz: "fe.oz"; pa: "fe.pa"; pb: "fe.pb"; pc: "fe.pc"; pd: "fe.pd"; pe: "fe.pe"; pf: "fe.pf"; pg: "fe.pg"; ph: "fe.ph"; pi: "fe.pi"; pj: "fe.pj"; pk: "fe.pk"; pl: "fe.pl"; pm: "fe.pm"; pn: "fe.pn"; po: "fe.po"; pp: "fe.pp"; pq: "fe.pq"; pr: "fe.pr"; ps: "fe.ps"; pt: "fe.pt"; pu: "fe.pu"; pv: "fe.pv"; pw: "fe.pw"; px: "fe.px"; py: "fe.py"; pz: "fe.pz"; qa: "fe.qa"; qb: "fe.qb"; qc: "fe.qc"; qd: "fe.qd"; qe: "fe.qe"; qf: "fe.qf"; qg: "fe.qg"; qh: "fe.qh"; qi: "fe.qi"; qj: "fe.qj"; qk: "fe.qk"; ql: "fe.ql"; qm: "fe.qm"; qn: "fe.qn"; qo: "fe.qo"; qp: "fe.qp"; qq: "fe.qq"; qr: "fe.qr"; qs: "fe.qs"; qt: "fe.qt"; qu: "fe.qu"; qv: "fe.qv"; qw: "fe.qw"; qx: "fe.qx"; qy: "fe.qy"; qz: "fe.qz"; ra: "fe.ra"; rb: "fe.rb"; rc: "fe.rc"; rd: "fe.rd"; re: "fe.re"; rf: "fe.rf"; rg: "fe.rg"; rh: "fe.rh"; ri: "fe.ri"; rj: "fe.rj"; rk: "fe.rk"; rl: "fe.rl"; rm: "fe.rm"; rn: "fe.rn"; ro: "fe.ro"; rp: "fe.rp"; rq: "fe.rq"; rr: "fe.rr"; rs: "fe.rs"; rt: "fe.rt"; ru: "fe.ru"; rv: "fe.rv"; rw: "fe.rw"; rx: "fe.rx"; ry: "fe.ry"; rz: "fe.rz"; sa: "fe.sa"; sb: "fe.sb"; sc: "fe.sc"; sd: "fe.sd"; se: "fe.se"; sf: "fe.sf"; sg: "fe.sg"; sh: "fe.sh"; si: "fe.si"; sj: "fe.sj"; sk: "fe.sk"; sl: "fe.sl"; sm: "fe.sm"; sn: "fe.sn"; so: "fe.so"; sp: "fe.sp"; sq: "fe.sq"; sr: "fe.sr"; ss: "fe.ss"; st: "fe.st"; su: "fe.su"; sv: "fe.sv"; sw: "fe.sw"; sx: "fe.sx"; sy: "fe.sy"; sz: "fe.sz"; ta: "fe.ta"; tb: "fe.tb"; tc: "fe.tc"; td: "fe.td"; te: "fe.te"; tf: "fe.tf"; tg: "fe.tg"; th: "fe.th"; ti: "fe.ti"; tj: "fe.tj"; tk: "fe.tk"; tl: "fe.tl"; tm: "fe.tm"; tn: "fe.tn"; to: "fe.to"; tp: "fe.tp"; tq: "fe.tq"; tr: "fe.tr"; ts: "fe.ts"; tt: "fe.tt"; tu: "fe.tu"; tv: "fe.tv"; tw: "fe.tw"; tx: "fe.tx"; ty: "fe.ty"; tz: "fe.tz"; ua: "fe.ua"; ub: "fe.ub"; uc: "fe.uc"; ud: "fe.ud"; ue: "fe.ue"; uf: "fe.uf"; ug: "fe.ug"; uh: "fe.uh"; ui: "fe.ui"; uj: "fe.uj"; uk: "fe.uk"; ul: "fe.ul"; um: "fe.um"; un: "fe.un"; uo: "fe.uo"; up: "fe.up"; uq: "fe.uq"; ur: "fe.ur"; us: "fe.us"; ut: "fe.ut"; uu: "fe.uu"; uv: "fe.uv"; uw: "fe.uw"; ux: "fe.ux"; uy: "fe.uy"; uz: "fe.uz"; va: "fe.va"; vb: "fe.vb"; vc: "fe.vc"; vd: "fe.vd"; ve: "fe.ve"; vf: "fe.vf"; vg: "fe.vg"; vh: "fe.vh"; vi: "fe.vi"; vj: "fe.vj"; vk: "fe.vk"; vl: "fe.vl"; vm: "fe.vm"; vn: "fe.vn"; vo: "fe.vo"; vp: "fe.vp"; vq: "fe.vq"; vr: "fe.vr"; vs: "fe.vs"; vt: "fe.vt"; vu: "fe.vu"; vv: "fe.vv"; vw: "fe.vw"; vx: "fe.vx"; vy: "fe.vy"; vz: "fe.vz"; wa: "fe.wa"; wb: "fe.wb"; wc: "fe.wc"; wd: "fe.wd"; we: "fe.we"; wf: "fe.wf"; wg: "fe.wg"; wh: "fe.wh"; wi: "fe.wi"; wj: "fe.wj"; wk: "fe.wk"; wl: "fe.wl"; wm: "fe.wm"; wn: "fe.wn"; wo: "fe.wo"; wp: "fe.wp"; wq: "fe.wq"; wr: "fe.wr"; ws: "fe.ws"; wt: "fe.wt"; wu: "fe.wu"; wv: "fe.wv"; ww: "fe.ww"; wx: "fe.wx"; wy: "fe.wy"; wz: "fe.wz"; xa: "fe.xa"; xb: "fe.xb"; xc: "fe.xc"; xd: "fe.xd"; xe: "fe.xe"; xf: "fe.xf"; xg: "fe.xg"; xh: "fe.xh"; xi: "fe.xi"; xj: "fe.xj"; xk: "fe.xk"; xl: "fe.xl"; xm: "fe.xm"; xn: "fe.xn"; xo: "fe.xo"; xp: "fe.xp"; xq: "fe.xq"; xr: "fe.xr"; xs: "fe.xs"; xt: "fe.xt"; xu: "fe.xu"; xv: "fe.xv"; xw: "fe.xw"; xx: "fe.xx"; xy: "fe.xy"; xz: "fe.xz"; ya: "fe.ya"; yb: "fe.yb"; yc: "fe.yc"; yd: "fe.yd"; ye: "fe.ye"; yf: "fe.yf"; yg: "fe.yg"; yh: "fe.yh"; yi: "fe.yi"; yj: "fe.yj"; yk: "fe.yk"; yl: "fe.yl"; ym: "fe.ym"; yn: "fe.yn"; yo: "fe.yo"; yp: "fe.yp"; yq: "fe.yq"; yr: "fe.yr"; ys: "fe.ys"; yt: "fe.yt"; yu: "fe.yu"; yv: "fe.yv"; yw: "fe.yw"; yx: "fe.yx"; yy: "fe.yy"; yz: "fe.yz"; za: "fe.za"; zb: "fe.zb"; zc: "fe.zc"; zd: "fe.zd"; ze: "fe.ze"; zf: "fe.zf"; zg: "fe.zg"; zh: "fe.zh"; zi: "fe.zi"; zj: "fe.zj"; zk: "fe.zk"; zl: "fe.zl"; zm: "fe.zm"; zn: "fe.zn"; zo: "fe.zo"; zp: "fe.zp"; zq: "fe.zq"; zr: "fe.zr"; zs: "fe.zs"; zt: "fe.zt"; zu: "fe.zu"; zv: "fe.zv"; zw: "fe.zw"; zx: "fe.zx"; zy: "fe.zy"; zz: "fe.zz"; }; ff: { aa: "ff.aa"; ab: "ff.ab"; ac: "ff.ac"; ad: "ff.ad"; ae: "ff.ae"; af: "ff.af"; ag: "ff.ag"; ah: "ff.ah"; ai: "ff.ai"; aj: "ff.aj"; ak: "ff.ak"; al: "ff.al"; am: "ff.am"; an: "ff.an"; ao: "ff.ao"; ap: "ff.ap"; aq: "ff.aq"; ar: "ff.ar"; as: "ff.as"; at: "ff.at"; au: "ff.au"; av: "ff.av"; aw: "ff.aw"; ax: "ff.ax"; ay: "ff.ay"; az: "ff.az"; ba: "ff.ba"; bb: "ff.bb"; bc: "ff.bc"; bd: "ff.bd"; be: "ff.be"; bf: "ff.bf"; bg: "ff.bg"; bh: "ff.bh"; bi: "ff.bi"; bj: "ff.bj"; bk: "ff.bk"; bl: "ff.bl"; bm: "ff.bm"; bn: "ff.bn"; bo: "ff.bo"; bp: "ff.bp"; bq: "ff.bq"; br: "ff.br"; bs: "ff.bs"; bt: "ff.bt"; bu: "ff.bu"; bv: "ff.bv"; bw: "ff.bw"; bx: "ff.bx"; by: "ff.by"; bz: "ff.bz"; ca: "ff.ca"; cb: "ff.cb"; cc: "ff.cc"; cd: "ff.cd"; ce: "ff.ce"; cf: "ff.cf"; cg: "ff.cg"; ch: "ff.ch"; ci: "ff.ci"; cj: "ff.cj"; ck: "ff.ck"; cl: "ff.cl"; cm: "ff.cm"; cn: "ff.cn"; co: "ff.co"; cp: "ff.cp"; cq: "ff.cq"; cr: "ff.cr"; cs: "ff.cs"; ct: "ff.ct"; cu: "ff.cu"; cv: "ff.cv"; cw: "ff.cw"; cx: "ff.cx"; cy: "ff.cy"; cz: "ff.cz"; da: "ff.da"; db: "ff.db"; dc: "ff.dc"; dd: "ff.dd"; de: "ff.de"; df: "ff.df"; dg: "ff.dg"; dh: "ff.dh"; di: "ff.di"; dj: "ff.dj"; dk: "ff.dk"; dl: "ff.dl"; dm: "ff.dm"; dn: "ff.dn"; do: "ff.do"; dp: "ff.dp"; dq: "ff.dq"; dr: "ff.dr"; ds: "ff.ds"; dt: "ff.dt"; du: "ff.du"; dv: "ff.dv"; dw: "ff.dw"; dx: "ff.dx"; dy: "ff.dy"; dz: "ff.dz"; ea: "ff.ea"; eb: "ff.eb"; ec: "ff.ec"; ed: "ff.ed"; ee: "ff.ee"; ef: "ff.ef"; eg: "ff.eg"; eh: "ff.eh"; ei: "ff.ei"; ej: "ff.ej"; ek: "ff.ek"; el: "ff.el"; em: "ff.em"; en: "ff.en"; eo: "ff.eo"; ep: "ff.ep"; eq: "ff.eq"; er: "ff.er"; es: "ff.es"; et: "ff.et"; eu: "ff.eu"; ev: "ff.ev"; ew: "ff.ew"; ex: "ff.ex"; ey: "ff.ey"; ez: "ff.ez"; fa: "ff.fa"; fb: "ff.fb"; fc: "ff.fc"; fd: "ff.fd"; fe: "ff.fe"; ff: "ff.ff"; fg: "ff.fg"; fh: "ff.fh"; fi: "ff.fi"; fj: "ff.fj"; fk: "ff.fk"; fl: "ff.fl"; fm: "ff.fm"; fn: "ff.fn"; fo: "ff.fo"; fp: "ff.fp"; fq: "ff.fq"; fr: "ff.fr"; fs: "ff.fs"; ft: "ff.ft"; fu: "ff.fu"; fv: "ff.fv"; fw: "ff.fw"; fx: "ff.fx"; fy: "ff.fy"; fz: "ff.fz"; ga: "ff.ga"; gb: "ff.gb"; gc: "ff.gc"; gd: "ff.gd"; ge: "ff.ge"; gf: "ff.gf"; gg: "ff.gg"; gh: "ff.gh"; gi: "ff.gi"; gj: "ff.gj"; gk: "ff.gk"; gl: "ff.gl"; gm: "ff.gm"; gn: "ff.gn"; go: "ff.go"; gp: "ff.gp"; gq: "ff.gq"; gr: "ff.gr"; gs: "ff.gs"; gt: "ff.gt"; gu: "ff.gu"; gv: "ff.gv"; gw: "ff.gw"; gx: "ff.gx"; gy: "ff.gy"; gz: "ff.gz"; ha: "ff.ha"; hb: "ff.hb"; hc: "ff.hc"; hd: "ff.hd"; he: "ff.he"; hf: "ff.hf"; hg: "ff.hg"; hh: "ff.hh"; hi: "ff.hi"; hj: "ff.hj"; hk: "ff.hk"; hl: "ff.hl"; hm: "ff.hm"; hn: "ff.hn"; ho: "ff.ho"; hp: "ff.hp"; hq: "ff.hq"; hr: "ff.hr"; hs: "ff.hs"; ht: "ff.ht"; hu: "ff.hu"; hv: "ff.hv"; hw: "ff.hw"; hx: "ff.hx"; hy: "ff.hy"; hz: "ff.hz"; ia: "ff.ia"; ib: "ff.ib"; ic: "ff.ic"; id: "ff.id"; ie: "ff.ie"; if: "ff.if"; ig: "ff.ig"; ih: "ff.ih"; ii: "ff.ii"; ij: "ff.ij"; ik: "ff.ik"; il: "ff.il"; im: "ff.im"; in: "ff.in"; io: "ff.io"; ip: "ff.ip"; iq: "ff.iq"; ir: "ff.ir"; is: "ff.is"; it: "ff.it"; iu: "ff.iu"; iv: "ff.iv"; iw: "ff.iw"; ix: "ff.ix"; iy: "ff.iy"; iz: "ff.iz"; ja: "ff.ja"; jb: "ff.jb"; jc: "ff.jc"; jd: "ff.jd"; je: "ff.je"; jf: "ff.jf"; jg: "ff.jg"; jh: "ff.jh"; ji: "ff.ji"; jj: "ff.jj"; jk: "ff.jk"; jl: "ff.jl"; jm: "ff.jm"; jn: "ff.jn"; jo: "ff.jo"; jp: "ff.jp"; jq: "ff.jq"; jr: "ff.jr"; js: "ff.js"; jt: "ff.jt"; ju: "ff.ju"; jv: "ff.jv"; jw: "ff.jw"; jx: "ff.jx"; jy: "ff.jy"; jz: "ff.jz"; ka: "ff.ka"; kb: "ff.kb"; kc: "ff.kc"; kd: "ff.kd"; ke: "ff.ke"; kf: "ff.kf"; kg: "ff.kg"; kh: "ff.kh"; ki: "ff.ki"; kj: "ff.kj"; kk: "ff.kk"; kl: "ff.kl"; km: "ff.km"; kn: "ff.kn"; ko: "ff.ko"; kp: "ff.kp"; kq: "ff.kq"; kr: "ff.kr"; ks: "ff.ks"; kt: "ff.kt"; ku: "ff.ku"; kv: "ff.kv"; kw: "ff.kw"; kx: "ff.kx"; ky: "ff.ky"; kz: "ff.kz"; la: "ff.la"; lb: "ff.lb"; lc: "ff.lc"; ld: "ff.ld"; le: "ff.le"; lf: "ff.lf"; lg: "ff.lg"; lh: "ff.lh"; li: "ff.li"; lj: "ff.lj"; lk: "ff.lk"; ll: "ff.ll"; lm: "ff.lm"; ln: "ff.ln"; lo: "ff.lo"; lp: "ff.lp"; lq: "ff.lq"; lr: "ff.lr"; ls: "ff.ls"; lt: "ff.lt"; lu: "ff.lu"; lv: "ff.lv"; lw: "ff.lw"; lx: "ff.lx"; ly: "ff.ly"; lz: "ff.lz"; ma: "ff.ma"; mb: "ff.mb"; mc: "ff.mc"; md: "ff.md"; me: "ff.me"; mf: "ff.mf"; mg: "ff.mg"; mh: "ff.mh"; mi: "ff.mi"; mj: "ff.mj"; mk: "ff.mk"; ml: "ff.ml"; mm: "ff.mm"; mn: "ff.mn"; mo: "ff.mo"; mp: "ff.mp"; mq: "ff.mq"; mr: "ff.mr"; ms: "ff.ms"; mt: "ff.mt"; mu: "ff.mu"; mv: "ff.mv"; mw: "ff.mw"; mx: "ff.mx"; my: "ff.my"; mz: "ff.mz"; na: "ff.na"; nb: "ff.nb"; nc: "ff.nc"; nd: "ff.nd"; ne: "ff.ne"; nf: "ff.nf"; ng: "ff.ng"; nh: "ff.nh"; ni: "ff.ni"; nj: "ff.nj"; nk: "ff.nk"; nl: "ff.nl"; nm: "ff.nm"; nn: "ff.nn"; no: "ff.no"; np: "ff.np"; nq: "ff.nq"; nr: "ff.nr"; ns: "ff.ns"; nt: "ff.nt"; nu: "ff.nu"; nv: "ff.nv"; nw: "ff.nw"; nx: "ff.nx"; ny: "ff.ny"; nz: "ff.nz"; oa: "ff.oa"; ob: "ff.ob"; oc: "ff.oc"; od: "ff.od"; oe: "ff.oe"; of: "ff.of"; og: "ff.og"; oh: "ff.oh"; oi: "ff.oi"; oj: "ff.oj"; ok: "ff.ok"; ol: "ff.ol"; om: "ff.om"; on: "ff.on"; oo: "ff.oo"; op: "ff.op"; oq: "ff.oq"; or: "ff.or"; os: "ff.os"; ot: "ff.ot"; ou: "ff.ou"; ov: "ff.ov"; ow: "ff.ow"; ox: "ff.ox"; oy: "ff.oy"; oz: "ff.oz"; pa: "ff.pa"; pb: "ff.pb"; pc: "ff.pc"; pd: "ff.pd"; pe: "ff.pe"; pf: "ff.pf"; pg: "ff.pg"; ph: "ff.ph"; pi: "ff.pi"; pj: "ff.pj"; pk: "ff.pk"; pl: "ff.pl"; pm: "ff.pm"; pn: "ff.pn"; po: "ff.po"; pp: "ff.pp"; pq: "ff.pq"; pr: "ff.pr"; ps: "ff.ps"; pt: "ff.pt"; pu: "ff.pu"; pv: "ff.pv"; pw: "ff.pw"; px: "ff.px"; py: "ff.py"; pz: "ff.pz"; qa: "ff.qa"; qb: "ff.qb"; qc: "ff.qc"; qd: "ff.qd"; qe: "ff.qe"; qf: "ff.qf"; qg: "ff.qg"; qh: "ff.qh"; qi: "ff.qi"; qj: "ff.qj"; qk: "ff.qk"; ql: "ff.ql"; qm: "ff.qm"; qn: "ff.qn"; qo: "ff.qo"; qp: "ff.qp"; qq: "ff.qq"; qr: "ff.qr"; qs: "ff.qs"; qt: "ff.qt"; qu: "ff.qu"; qv: "ff.qv"; qw: "ff.qw"; qx: "ff.qx"; qy: "ff.qy"; qz: "ff.qz"; ra: "ff.ra"; rb: "ff.rb"; rc: "ff.rc"; rd: "ff.rd"; re: "ff.re"; rf: "ff.rf"; rg: "ff.rg"; rh: "ff.rh"; ri: "ff.ri"; rj: "ff.rj"; rk: "ff.rk"; rl: "ff.rl"; rm: "ff.rm"; rn: "ff.rn"; ro: "ff.ro"; rp: "ff.rp"; rq: "ff.rq"; rr: "ff.rr"; rs: "ff.rs"; rt: "ff.rt"; ru: "ff.ru"; rv: "ff.rv"; rw: "ff.rw"; rx: "ff.rx"; ry: "ff.ry"; rz: "ff.rz"; sa: "ff.sa"; sb: "ff.sb"; sc: "ff.sc"; sd: "ff.sd"; se: "ff.se"; sf: "ff.sf"; sg: "ff.sg"; sh: "ff.sh"; si: "ff.si"; sj: "ff.sj"; sk: "ff.sk"; sl: "ff.sl"; sm: "ff.sm"; sn: "ff.sn"; so: "ff.so"; sp: "ff.sp"; sq: "ff.sq"; sr: "ff.sr"; ss: "ff.ss"; st: "ff.st"; su: "ff.su"; sv: "ff.sv"; sw: "ff.sw"; sx: "ff.sx"; sy: "ff.sy"; sz: "ff.sz"; ta: "ff.ta"; tb: "ff.tb"; tc: "ff.tc"; td: "ff.td"; te: "ff.te"; tf: "ff.tf"; tg: "ff.tg"; th: "ff.th"; ti: "ff.ti"; tj: "ff.tj"; tk: "ff.tk"; tl: "ff.tl"; tm: "ff.tm"; tn: "ff.tn"; to: "ff.to"; tp: "ff.tp"; tq: "ff.tq"; tr: "ff.tr"; ts: "ff.ts"; tt: "ff.tt"; tu: "ff.tu"; tv: "ff.tv"; tw: "ff.tw"; tx: "ff.tx"; ty: "ff.ty"; tz: "ff.tz"; ua: "ff.ua"; ub: "ff.ub"; uc: "ff.uc"; ud: "ff.ud"; ue: "ff.ue"; uf: "ff.uf"; ug: "ff.ug"; uh: "ff.uh"; ui: "ff.ui"; uj: "ff.uj"; uk: "ff.uk"; ul: "ff.ul"; um: "ff.um"; un: "ff.un"; uo: "ff.uo"; up: "ff.up"; uq: "ff.uq"; ur: "ff.ur"; us: "ff.us"; ut: "ff.ut"; uu: "ff.uu"; uv: "ff.uv"; uw: "ff.uw"; ux: "ff.ux"; uy: "ff.uy"; uz: "ff.uz"; va: "ff.va"; vb: "ff.vb"; vc: "ff.vc"; vd: "ff.vd"; ve: "ff.ve"; vf: "ff.vf"; vg: "ff.vg"; vh: "ff.vh"; vi: "ff.vi"; vj: "ff.vj"; vk: "ff.vk"; vl: "ff.vl"; vm: "ff.vm"; vn: "ff.vn"; vo: "ff.vo"; vp: "ff.vp"; vq: "ff.vq"; vr: "ff.vr"; vs: "ff.vs"; vt: "ff.vt"; vu: "ff.vu"; vv: "ff.vv"; vw: "ff.vw"; vx: "ff.vx"; vy: "ff.vy"; vz: "ff.vz"; wa: "ff.wa"; wb: "ff.wb"; wc: "ff.wc"; wd: "ff.wd"; we: "ff.we"; wf: "ff.wf"; wg: "ff.wg"; wh: "ff.wh"; wi: "ff.wi"; wj: "ff.wj"; wk: "ff.wk"; wl: "ff.wl"; wm: "ff.wm"; wn: "ff.wn"; wo: "ff.wo"; wp: "ff.wp"; wq: "ff.wq"; wr: "ff.wr"; ws: "ff.ws"; wt: "ff.wt"; wu: "ff.wu"; wv: "ff.wv"; ww: "ff.ww"; wx: "ff.wx"; wy: "ff.wy"; wz: "ff.wz"; xa: "ff.xa"; xb: "ff.xb"; xc: "ff.xc"; xd: "ff.xd"; xe: "ff.xe"; xf: "ff.xf"; xg: "ff.xg"; xh: "ff.xh"; xi: "ff.xi"; xj: "ff.xj"; xk: "ff.xk"; xl: "ff.xl"; xm: "ff.xm"; xn: "ff.xn"; xo: "ff.xo"; xp: "ff.xp"; xq: "ff.xq"; xr: "ff.xr"; xs: "ff.xs"; xt: "ff.xt"; xu: "ff.xu"; xv: "ff.xv"; xw: "ff.xw"; xx: "ff.xx"; xy: "ff.xy"; xz: "ff.xz"; ya: "ff.ya"; yb: "ff.yb"; yc: "ff.yc"; yd: "ff.yd"; ye: "ff.ye"; yf: "ff.yf"; yg: "ff.yg"; yh: "ff.yh"; yi: "ff.yi"; yj: "ff.yj"; yk: "ff.yk"; yl: "ff.yl"; ym: "ff.ym"; yn: "ff.yn"; yo: "ff.yo"; yp: "ff.yp"; yq: "ff.yq"; yr: "ff.yr"; ys: "ff.ys"; yt: "ff.yt"; yu: "ff.yu"; yv: "ff.yv"; yw: "ff.yw"; yx: "ff.yx"; yy: "ff.yy"; yz: "ff.yz"; za: "ff.za"; zb: "ff.zb"; zc: "ff.zc"; zd: "ff.zd"; ze: "ff.ze"; zf: "ff.zf"; zg: "ff.zg"; zh: "ff.zh"; zi: "ff.zi"; zj: "ff.zj"; zk: "ff.zk"; zl: "ff.zl"; zm: "ff.zm"; zn: "ff.zn"; zo: "ff.zo"; zp: "ff.zp"; zq: "ff.zq"; zr: "ff.zr"; zs: "ff.zs"; zt: "ff.zt"; zu: "ff.zu"; zv: "ff.zv"; zw: "ff.zw"; zx: "ff.zx"; zy: "ff.zy"; zz: "ff.zz"; }; fg: { aa: "fg.aa"; ab: "fg.ab"; ac: "fg.ac"; ad: "fg.ad"; ae: "fg.ae"; af: "fg.af"; ag: "fg.ag"; ah: "fg.ah"; ai: "fg.ai"; aj: "fg.aj"; ak: "fg.ak"; al: "fg.al"; am: "fg.am"; an: "fg.an"; ao: "fg.ao"; ap: "fg.ap"; aq: "fg.aq"; ar: "fg.ar"; as: "fg.as"; at: "fg.at"; au: "fg.au"; av: "fg.av"; aw: "fg.aw"; ax: "fg.ax"; ay: "fg.ay"; az: "fg.az"; ba: "fg.ba"; bb: "fg.bb"; bc: "fg.bc"; bd: "fg.bd"; be: "fg.be"; bf: "fg.bf"; bg: "fg.bg"; bh: "fg.bh"; bi: "fg.bi"; bj: "fg.bj"; bk: "fg.bk"; bl: "fg.bl"; bm: "fg.bm"; bn: "fg.bn"; bo: "fg.bo"; bp: "fg.bp"; bq: "fg.bq"; br: "fg.br"; bs: "fg.bs"; bt: "fg.bt"; bu: "fg.bu"; bv: "fg.bv"; bw: "fg.bw"; bx: "fg.bx"; by: "fg.by"; bz: "fg.bz"; ca: "fg.ca"; cb: "fg.cb"; cc: "fg.cc"; cd: "fg.cd"; ce: "fg.ce"; cf: "fg.cf"; cg: "fg.cg"; ch: "fg.ch"; ci: "fg.ci"; cj: "fg.cj"; ck: "fg.ck"; cl: "fg.cl"; cm: "fg.cm"; cn: "fg.cn"; co: "fg.co"; cp: "fg.cp"; cq: "fg.cq"; cr: "fg.cr"; cs: "fg.cs"; ct: "fg.ct"; cu: "fg.cu"; cv: "fg.cv"; cw: "fg.cw"; cx: "fg.cx"; cy: "fg.cy"; cz: "fg.cz"; da: "fg.da"; db: "fg.db"; dc: "fg.dc"; dd: "fg.dd"; de: "fg.de"; df: "fg.df"; dg: "fg.dg"; dh: "fg.dh"; di: "fg.di"; dj: "fg.dj"; dk: "fg.dk"; dl: "fg.dl"; dm: "fg.dm"; dn: "fg.dn"; do: "fg.do"; dp: "fg.dp"; dq: "fg.dq"; dr: "fg.dr"; ds: "fg.ds"; dt: "fg.dt"; du: "fg.du"; dv: "fg.dv"; dw: "fg.dw"; dx: "fg.dx"; dy: "fg.dy"; dz: "fg.dz"; ea: "fg.ea"; eb: "fg.eb"; ec: "fg.ec"; ed: "fg.ed"; ee: "fg.ee"; ef: "fg.ef"; eg: "fg.eg"; eh: "fg.eh"; ei: "fg.ei"; ej: "fg.ej"; ek: "fg.ek"; el: "fg.el"; em: "fg.em"; en: "fg.en"; eo: "fg.eo"; ep: "fg.ep"; eq: "fg.eq"; er: "fg.er"; es: "fg.es"; et: "fg.et"; eu: "fg.eu"; ev: "fg.ev"; ew: "fg.ew"; ex: "fg.ex"; ey: "fg.ey"; ez: "fg.ez"; fa: "fg.fa"; fb: "fg.fb"; fc: "fg.fc"; fd: "fg.fd"; fe: "fg.fe"; ff: "fg.ff"; fg: "fg.fg"; fh: "fg.fh"; fi: "fg.fi"; fj: "fg.fj"; fk: "fg.fk"; fl: "fg.fl"; fm: "fg.fm"; fn: "fg.fn"; fo: "fg.fo"; fp: "fg.fp"; fq: "fg.fq"; fr: "fg.fr"; fs: "fg.fs"; ft: "fg.ft"; fu: "fg.fu"; fv: "fg.fv"; fw: "fg.fw"; fx: "fg.fx"; fy: "fg.fy"; fz: "fg.fz"; ga: "fg.ga"; gb: "fg.gb"; gc: "fg.gc"; gd: "fg.gd"; ge: "fg.ge"; gf: "fg.gf"; gg: "fg.gg"; gh: "fg.gh"; gi: "fg.gi"; gj: "fg.gj"; gk: "fg.gk"; gl: "fg.gl"; gm: "fg.gm"; gn: "fg.gn"; go: "fg.go"; gp: "fg.gp"; gq: "fg.gq"; gr: "fg.gr"; gs: "fg.gs"; gt: "fg.gt"; gu: "fg.gu"; gv: "fg.gv"; gw: "fg.gw"; gx: "fg.gx"; gy: "fg.gy"; gz: "fg.gz"; ha: "fg.ha"; hb: "fg.hb"; hc: "fg.hc"; hd: "fg.hd"; he: "fg.he"; hf: "fg.hf"; hg: "fg.hg"; hh: "fg.hh"; hi: "fg.hi"; hj: "fg.hj"; hk: "fg.hk"; hl: "fg.hl"; hm: "fg.hm"; hn: "fg.hn"; ho: "fg.ho"; hp: "fg.hp"; hq: "fg.hq"; hr: "fg.hr"; hs: "fg.hs"; ht: "fg.ht"; hu: "fg.hu"; hv: "fg.hv"; hw: "fg.hw"; hx: "fg.hx"; hy: "fg.hy"; hz: "fg.hz"; ia: "fg.ia"; ib: "fg.ib"; ic: "fg.ic"; id: "fg.id"; ie: "fg.ie"; if: "fg.if"; ig: "fg.ig"; ih: "fg.ih"; ii: "fg.ii"; ij: "fg.ij"; ik: "fg.ik"; il: "fg.il"; im: "fg.im"; in: "fg.in"; io: "fg.io"; ip: "fg.ip"; iq: "fg.iq"; ir: "fg.ir"; is: "fg.is"; it: "fg.it"; iu: "fg.iu"; iv: "fg.iv"; iw: "fg.iw"; ix: "fg.ix"; iy: "fg.iy"; iz: "fg.iz"; ja: "fg.ja"; jb: "fg.jb"; jc: "fg.jc"; jd: "fg.jd"; je: "fg.je"; jf: "fg.jf"; jg: "fg.jg"; jh: "fg.jh"; ji: "fg.ji"; jj: "fg.jj"; jk: "fg.jk"; jl: "fg.jl"; jm: "fg.jm"; jn: "fg.jn"; jo: "fg.jo"; jp: "fg.jp"; jq: "fg.jq"; jr: "fg.jr"; js: "fg.js"; jt: "fg.jt"; ju: "fg.ju"; jv: "fg.jv"; jw: "fg.jw"; jx: "fg.jx"; jy: "fg.jy"; jz: "fg.jz"; ka: "fg.ka"; kb: "fg.kb"; kc: "fg.kc"; kd: "fg.kd"; ke: "fg.ke"; kf: "fg.kf"; kg: "fg.kg"; kh: "fg.kh"; ki: "fg.ki"; kj: "fg.kj"; kk: "fg.kk"; kl: "fg.kl"; km: "fg.km"; kn: "fg.kn"; ko: "fg.ko"; kp: "fg.kp"; kq: "fg.kq"; kr: "fg.kr"; ks: "fg.ks"; kt: "fg.kt"; ku: "fg.ku"; kv: "fg.kv"; kw: "fg.kw"; kx: "fg.kx"; ky: "fg.ky"; kz: "fg.kz"; la: "fg.la"; lb: "fg.lb"; lc: "fg.lc"; ld: "fg.ld"; le: "fg.le"; lf: "fg.lf"; lg: "fg.lg"; lh: "fg.lh"; li: "fg.li"; lj: "fg.lj"; lk: "fg.lk"; ll: "fg.ll"; lm: "fg.lm"; ln: "fg.ln"; lo: "fg.lo"; lp: "fg.lp"; lq: "fg.lq"; lr: "fg.lr"; ls: "fg.ls"; lt: "fg.lt"; lu: "fg.lu"; lv: "fg.lv"; lw: "fg.lw"; lx: "fg.lx"; ly: "fg.ly"; lz: "fg.lz"; ma: "fg.ma"; mb: "fg.mb"; mc: "fg.mc"; md: "fg.md"; me: "fg.me"; mf: "fg.mf"; mg: "fg.mg"; mh: "fg.mh"; mi: "fg.mi"; mj: "fg.mj"; mk: "fg.mk"; ml: "fg.ml"; mm: "fg.mm"; mn: "fg.mn"; mo: "fg.mo"; mp: "fg.mp"; mq: "fg.mq"; mr: "fg.mr"; ms: "fg.ms"; mt: "fg.mt"; mu: "fg.mu"; mv: "fg.mv"; mw: "fg.mw"; mx: "fg.mx"; my: "fg.my"; mz: "fg.mz"; na: "fg.na"; nb: "fg.nb"; nc: "fg.nc"; nd: "fg.nd"; ne: "fg.ne"; nf: "fg.nf"; ng: "fg.ng"; nh: "fg.nh"; ni: "fg.ni"; nj: "fg.nj"; nk: "fg.nk"; nl: "fg.nl"; nm: "fg.nm"; nn: "fg.nn"; no: "fg.no"; np: "fg.np"; nq: "fg.nq"; nr: "fg.nr"; ns: "fg.ns"; nt: "fg.nt"; nu: "fg.nu"; nv: "fg.nv"; nw: "fg.nw"; nx: "fg.nx"; ny: "fg.ny"; nz: "fg.nz"; oa: "fg.oa"; ob: "fg.ob"; oc: "fg.oc"; od: "fg.od"; oe: "fg.oe"; of: "fg.of"; og: "fg.og"; oh: "fg.oh"; oi: "fg.oi"; oj: "fg.oj"; ok: "fg.ok"; ol: "fg.ol"; om: "fg.om"; on: "fg.on"; oo: "fg.oo"; op: "fg.op"; oq: "fg.oq"; or: "fg.or"; os: "fg.os"; ot: "fg.ot"; ou: "fg.ou"; ov: "fg.ov"; ow: "fg.ow"; ox: "fg.ox"; oy: "fg.oy"; oz: "fg.oz"; pa: "fg.pa"; pb: "fg.pb"; pc: "fg.pc"; pd: "fg.pd"; pe: "fg.pe"; pf: "fg.pf"; pg: "fg.pg"; ph: "fg.ph"; pi: "fg.pi"; pj: "fg.pj"; pk: "fg.pk"; pl: "fg.pl"; pm: "fg.pm"; pn: "fg.pn"; po: "fg.po"; pp: "fg.pp"; pq: "fg.pq"; pr: "fg.pr"; ps: "fg.ps"; pt: "fg.pt"; pu: "fg.pu"; pv: "fg.pv"; pw: "fg.pw"; px: "fg.px"; py: "fg.py"; pz: "fg.pz"; qa: "fg.qa"; qb: "fg.qb"; qc: "fg.qc"; qd: "fg.qd"; qe: "fg.qe"; qf: "fg.qf"; qg: "fg.qg"; qh: "fg.qh"; qi: "fg.qi"; qj: "fg.qj"; qk: "fg.qk"; ql: "fg.ql"; qm: "fg.qm"; qn: "fg.qn"; qo: "fg.qo"; qp: "fg.qp"; qq: "fg.qq"; qr: "fg.qr"; qs: "fg.qs"; qt: "fg.qt"; qu: "fg.qu"; qv: "fg.qv"; qw: "fg.qw"; qx: "fg.qx"; qy: "fg.qy"; qz: "fg.qz"; ra: "fg.ra"; rb: "fg.rb"; rc: "fg.rc"; rd: "fg.rd"; re: "fg.re"; rf: "fg.rf"; rg: "fg.rg"; rh: "fg.rh"; ri: "fg.ri"; rj: "fg.rj"; rk: "fg.rk"; rl: "fg.rl"; rm: "fg.rm"; rn: "fg.rn"; ro: "fg.ro"; rp: "fg.rp"; rq: "fg.rq"; rr: "fg.rr"; rs: "fg.rs"; rt: "fg.rt"; ru: "fg.ru"; rv: "fg.rv"; rw: "fg.rw"; rx: "fg.rx"; ry: "fg.ry"; rz: "fg.rz"; sa: "fg.sa"; sb: "fg.sb"; sc: "fg.sc"; sd: "fg.sd"; se: "fg.se"; sf: "fg.sf"; sg: "fg.sg"; sh: "fg.sh"; si: "fg.si"; sj: "fg.sj"; sk: "fg.sk"; sl: "fg.sl"; sm: "fg.sm"; sn: "fg.sn"; so: "fg.so"; sp: "fg.sp"; sq: "fg.sq"; sr: "fg.sr"; ss: "fg.ss"; st: "fg.st"; su: "fg.su"; sv: "fg.sv"; sw: "fg.sw"; sx: "fg.sx"; sy: "fg.sy"; sz: "fg.sz"; ta: "fg.ta"; tb: "fg.tb"; tc: "fg.tc"; td: "fg.td"; te: "fg.te"; tf: "fg.tf"; tg: "fg.tg"; th: "fg.th"; ti: "fg.ti"; tj: "fg.tj"; tk: "fg.tk"; tl: "fg.tl"; tm: "fg.tm"; tn: "fg.tn"; to: "fg.to"; tp: "fg.tp"; tq: "fg.tq"; tr: "fg.tr"; ts: "fg.ts"; tt: "fg.tt"; tu: "fg.tu"; tv: "fg.tv"; tw: "fg.tw"; tx: "fg.tx"; ty: "fg.ty"; tz: "fg.tz"; ua: "fg.ua"; ub: "fg.ub"; uc: "fg.uc"; ud: "fg.ud"; ue: "fg.ue"; uf: "fg.uf"; ug: "fg.ug"; uh: "fg.uh"; ui: "fg.ui"; uj: "fg.uj"; uk: "fg.uk"; ul: "fg.ul"; um: "fg.um"; un: "fg.un"; uo: "fg.uo"; up: "fg.up"; uq: "fg.uq"; ur: "fg.ur"; us: "fg.us"; ut: "fg.ut"; uu: "fg.uu"; uv: "fg.uv"; uw: "fg.uw"; ux: "fg.ux"; uy: "fg.uy"; uz: "fg.uz"; va: "fg.va"; vb: "fg.vb"; vc: "fg.vc"; vd: "fg.vd"; ve: "fg.ve"; vf: "fg.vf"; vg: "fg.vg"; vh: "fg.vh"; vi: "fg.vi"; vj: "fg.vj"; vk: "fg.vk"; vl: "fg.vl"; vm: "fg.vm"; vn: "fg.vn"; vo: "fg.vo"; vp: "fg.vp"; vq: "fg.vq"; vr: "fg.vr"; vs: "fg.vs"; vt: "fg.vt"; vu: "fg.vu"; vv: "fg.vv"; vw: "fg.vw"; vx: "fg.vx"; vy: "fg.vy"; vz: "fg.vz"; wa: "fg.wa"; wb: "fg.wb"; wc: "fg.wc"; wd: "fg.wd"; we: "fg.we"; wf: "fg.wf"; wg: "fg.wg"; wh: "fg.wh"; wi: "fg.wi"; wj: "fg.wj"; wk: "fg.wk"; wl: "fg.wl"; wm: "fg.wm"; wn: "fg.wn"; wo: "fg.wo"; wp: "fg.wp"; wq: "fg.wq"; wr: "fg.wr"; ws: "fg.ws"; wt: "fg.wt"; wu: "fg.wu"; wv: "fg.wv"; ww: "fg.ww"; wx: "fg.wx"; wy: "fg.wy"; wz: "fg.wz"; xa: "fg.xa"; xb: "fg.xb"; xc: "fg.xc"; xd: "fg.xd"; xe: "fg.xe"; xf: "fg.xf"; xg: "fg.xg"; xh: "fg.xh"; xi: "fg.xi"; xj: "fg.xj"; xk: "fg.xk"; xl: "fg.xl"; xm: "fg.xm"; xn: "fg.xn"; xo: "fg.xo"; xp: "fg.xp"; xq: "fg.xq"; xr: "fg.xr"; xs: "fg.xs"; xt: "fg.xt"; xu: "fg.xu"; xv: "fg.xv"; xw: "fg.xw"; xx: "fg.xx"; xy: "fg.xy"; xz: "fg.xz"; ya: "fg.ya"; yb: "fg.yb"; yc: "fg.yc"; yd: "fg.yd"; ye: "fg.ye"; yf: "fg.yf"; yg: "fg.yg"; yh: "fg.yh"; yi: "fg.yi"; yj: "fg.yj"; yk: "fg.yk"; yl: "fg.yl"; ym: "fg.ym"; yn: "fg.yn"; yo: "fg.yo"; yp: "fg.yp"; yq: "fg.yq"; yr: "fg.yr"; ys: "fg.ys"; yt: "fg.yt"; yu: "fg.yu"; yv: "fg.yv"; yw: "fg.yw"; yx: "fg.yx"; yy: "fg.yy"; yz: "fg.yz"; za: "fg.za"; zb: "fg.zb"; zc: "fg.zc"; zd: "fg.zd"; ze: "fg.ze"; zf: "fg.zf"; zg: "fg.zg"; zh: "fg.zh"; zi: "fg.zi"; zj: "fg.zj"; zk: "fg.zk"; zl: "fg.zl"; zm: "fg.zm"; zn: "fg.zn"; zo: "fg.zo"; zp: "fg.zp"; zq: "fg.zq"; zr: "fg.zr"; zs: "fg.zs"; zt: "fg.zt"; zu: "fg.zu"; zv: "fg.zv"; zw: "fg.zw"; zx: "fg.zx"; zy: "fg.zy"; zz: "fg.zz"; }; fh: { aa: "fh.aa"; ab: "fh.ab"; ac: "fh.ac"; ad: "fh.ad"; ae: "fh.ae"; af: "fh.af"; ag: "fh.ag"; ah: "fh.ah"; ai: "fh.ai"; aj: "fh.aj"; ak: "fh.ak"; al: "fh.al"; am: "fh.am"; an: "fh.an"; ao: "fh.ao"; ap: "fh.ap"; aq: "fh.aq"; ar: "fh.ar"; as: "fh.as"; at: "fh.at"; au: "fh.au"; av: "fh.av"; aw: "fh.aw"; ax: "fh.ax"; ay: "fh.ay"; az: "fh.az"; ba: "fh.ba"; bb: "fh.bb"; bc: "fh.bc"; bd: "fh.bd"; be: "fh.be"; bf: "fh.bf"; bg: "fh.bg"; bh: "fh.bh"; bi: "fh.bi"; bj: "fh.bj"; bk: "fh.bk"; bl: "fh.bl"; bm: "fh.bm"; bn: "fh.bn"; bo: "fh.bo"; bp: "fh.bp"; bq: "fh.bq"; br: "fh.br"; bs: "fh.bs"; bt: "fh.bt"; bu: "fh.bu"; bv: "fh.bv"; bw: "fh.bw"; bx: "fh.bx"; by: "fh.by"; bz: "fh.bz"; ca: "fh.ca"; cb: "fh.cb"; cc: "fh.cc"; cd: "fh.cd"; ce: "fh.ce"; cf: "fh.cf"; cg: "fh.cg"; ch: "fh.ch"; ci: "fh.ci"; cj: "fh.cj"; ck: "fh.ck"; cl: "fh.cl"; cm: "fh.cm"; cn: "fh.cn"; co: "fh.co"; cp: "fh.cp"; cq: "fh.cq"; cr: "fh.cr"; cs: "fh.cs"; ct: "fh.ct"; cu: "fh.cu"; cv: "fh.cv"; cw: "fh.cw"; cx: "fh.cx"; cy: "fh.cy"; cz: "fh.cz"; da: "fh.da"; db: "fh.db"; dc: "fh.dc"; dd: "fh.dd"; de: "fh.de"; df: "fh.df"; dg: "fh.dg"; dh: "fh.dh"; di: "fh.di"; dj: "fh.dj"; dk: "fh.dk"; dl: "fh.dl"; dm: "fh.dm"; dn: "fh.dn"; do: "fh.do"; dp: "fh.dp"; dq: "fh.dq"; dr: "fh.dr"; ds: "fh.ds"; dt: "fh.dt"; du: "fh.du"; dv: "fh.dv"; dw: "fh.dw"; dx: "fh.dx"; dy: "fh.dy"; dz: "fh.dz"; ea: "fh.ea"; eb: "fh.eb"; ec: "fh.ec"; ed: "fh.ed"; ee: "fh.ee"; ef: "fh.ef"; eg: "fh.eg"; eh: "fh.eh"; ei: "fh.ei"; ej: "fh.ej"; ek: "fh.ek"; el: "fh.el"; em: "fh.em"; en: "fh.en"; eo: "fh.eo"; ep: "fh.ep"; eq: "fh.eq"; er: "fh.er"; es: "fh.es"; et: "fh.et"; eu: "fh.eu"; ev: "fh.ev"; ew: "fh.ew"; ex: "fh.ex"; ey: "fh.ey"; ez: "fh.ez"; fa: "fh.fa"; fb: "fh.fb"; fc: "fh.fc"; fd: "fh.fd"; fe: "fh.fe"; ff: "fh.ff"; fg: "fh.fg"; fh: "fh.fh"; fi: "fh.fi"; fj: "fh.fj"; fk: "fh.fk"; fl: "fh.fl"; fm: "fh.fm"; fn: "fh.fn"; fo: "fh.fo"; fp: "fh.fp"; fq: "fh.fq"; fr: "fh.fr"; fs: "fh.fs"; ft: "fh.ft"; fu: "fh.fu"; fv: "fh.fv"; fw: "fh.fw"; fx: "fh.fx"; fy: "fh.fy"; fz: "fh.fz"; ga: "fh.ga"; gb: "fh.gb"; gc: "fh.gc"; gd: "fh.gd"; ge: "fh.ge"; gf: "fh.gf"; gg: "fh.gg"; gh: "fh.gh"; gi: "fh.gi"; gj: "fh.gj"; gk: "fh.gk"; gl: "fh.gl"; gm: "fh.gm"; gn: "fh.gn"; go: "fh.go"; gp: "fh.gp"; gq: "fh.gq"; gr: "fh.gr"; gs: "fh.gs"; gt: "fh.gt"; gu: "fh.gu"; gv: "fh.gv"; gw: "fh.gw"; gx: "fh.gx"; gy: "fh.gy"; gz: "fh.gz"; ha: "fh.ha"; hb: "fh.hb"; hc: "fh.hc"; hd: "fh.hd"; he: "fh.he"; hf: "fh.hf"; hg: "fh.hg"; hh: "fh.hh"; hi: "fh.hi"; hj: "fh.hj"; hk: "fh.hk"; hl: "fh.hl"; hm: "fh.hm"; hn: "fh.hn"; ho: "fh.ho"; hp: "fh.hp"; hq: "fh.hq"; hr: "fh.hr"; hs: "fh.hs"; ht: "fh.ht"; hu: "fh.hu"; hv: "fh.hv"; hw: "fh.hw"; hx: "fh.hx"; hy: "fh.hy"; hz: "fh.hz"; ia: "fh.ia"; ib: "fh.ib"; ic: "fh.ic"; id: "fh.id"; ie: "fh.ie"; if: "fh.if"; ig: "fh.ig"; ih: "fh.ih"; ii: "fh.ii"; ij: "fh.ij"; ik: "fh.ik"; il: "fh.il"; im: "fh.im"; in: "fh.in"; io: "fh.io"; ip: "fh.ip"; iq: "fh.iq"; ir: "fh.ir"; is: "fh.is"; it: "fh.it"; iu: "fh.iu"; iv: "fh.iv"; iw: "fh.iw"; ix: "fh.ix"; iy: "fh.iy"; iz: "fh.iz"; ja: "fh.ja"; jb: "fh.jb"; jc: "fh.jc"; jd: "fh.jd"; je: "fh.je"; jf: "fh.jf"; jg: "fh.jg"; jh: "fh.jh"; ji: "fh.ji"; jj: "fh.jj"; jk: "fh.jk"; jl: "fh.jl"; jm: "fh.jm"; jn: "fh.jn"; jo: "fh.jo"; jp: "fh.jp"; jq: "fh.jq"; jr: "fh.jr"; js: "fh.js"; jt: "fh.jt"; ju: "fh.ju"; jv: "fh.jv"; jw: "fh.jw"; jx: "fh.jx"; jy: "fh.jy"; jz: "fh.jz"; ka: "fh.ka"; kb: "fh.kb"; kc: "fh.kc"; kd: "fh.kd"; ke: "fh.ke"; kf: "fh.kf"; kg: "fh.kg"; kh: "fh.kh"; ki: "fh.ki"; kj: "fh.kj"; kk: "fh.kk"; kl: "fh.kl"; km: "fh.km"; kn: "fh.kn"; ko: "fh.ko"; kp: "fh.kp"; kq: "fh.kq"; kr: "fh.kr"; ks: "fh.ks"; kt: "fh.kt"; ku: "fh.ku"; kv: "fh.kv"; kw: "fh.kw"; kx: "fh.kx"; ky: "fh.ky"; kz: "fh.kz"; la: "fh.la"; lb: "fh.lb"; lc: "fh.lc"; ld: "fh.ld"; le: "fh.le"; lf: "fh.lf"; lg: "fh.lg"; lh: "fh.lh"; li: "fh.li"; lj: "fh.lj"; lk: "fh.lk"; ll: "fh.ll"; lm: "fh.lm"; ln: "fh.ln"; lo: "fh.lo"; lp: "fh.lp"; lq: "fh.lq"; lr: "fh.lr"; ls: "fh.ls"; lt: "fh.lt"; lu: "fh.lu"; lv: "fh.lv"; lw: "fh.lw"; lx: "fh.lx"; ly: "fh.ly"; lz: "fh.lz"; ma: "fh.ma"; mb: "fh.mb"; mc: "fh.mc"; md: "fh.md"; me: "fh.me"; mf: "fh.mf"; mg: "fh.mg"; mh: "fh.mh"; mi: "fh.mi"; mj: "fh.mj"; mk: "fh.mk"; ml: "fh.ml"; mm: "fh.mm"; mn: "fh.mn"; mo: "fh.mo"; mp: "fh.mp"; mq: "fh.mq"; mr: "fh.mr"; ms: "fh.ms"; mt: "fh.mt"; mu: "fh.mu"; mv: "fh.mv"; mw: "fh.mw"; mx: "fh.mx"; my: "fh.my"; mz: "fh.mz"; na: "fh.na"; nb: "fh.nb"; nc: "fh.nc"; nd: "fh.nd"; ne: "fh.ne"; nf: "fh.nf"; ng: "fh.ng"; nh: "fh.nh"; ni: "fh.ni"; nj: "fh.nj"; nk: "fh.nk"; nl: "fh.nl"; nm: "fh.nm"; nn: "fh.nn"; no: "fh.no"; np: "fh.np"; nq: "fh.nq"; nr: "fh.nr"; ns: "fh.ns"; nt: "fh.nt"; nu: "fh.nu"; nv: "fh.nv"; nw: "fh.nw"; nx: "fh.nx"; ny: "fh.ny"; nz: "fh.nz"; oa: "fh.oa"; ob: "fh.ob"; oc: "fh.oc"; od: "fh.od"; oe: "fh.oe"; of: "fh.of"; og: "fh.og"; oh: "fh.oh"; oi: "fh.oi"; oj: "fh.oj"; ok: "fh.ok"; ol: "fh.ol"; om: "fh.om"; on: "fh.on"; oo: "fh.oo"; op: "fh.op"; oq: "fh.oq"; or: "fh.or"; os: "fh.os"; ot: "fh.ot"; ou: "fh.ou"; ov: "fh.ov"; ow: "fh.ow"; ox: "fh.ox"; oy: "fh.oy"; oz: "fh.oz"; pa: "fh.pa"; pb: "fh.pb"; pc: "fh.pc"; pd: "fh.pd"; pe: "fh.pe"; pf: "fh.pf"; pg: "fh.pg"; ph: "fh.ph"; pi: "fh.pi"; pj: "fh.pj"; pk: "fh.pk"; pl: "fh.pl"; pm: "fh.pm"; pn: "fh.pn"; po: "fh.po"; pp: "fh.pp"; pq: "fh.pq"; pr: "fh.pr"; ps: "fh.ps"; pt: "fh.pt"; pu: "fh.pu"; pv: "fh.pv"; pw: "fh.pw"; px: "fh.px"; py: "fh.py"; pz: "fh.pz"; qa: "fh.qa"; qb: "fh.qb"; qc: "fh.qc"; qd: "fh.qd"; qe: "fh.qe"; qf: "fh.qf"; qg: "fh.qg"; qh: "fh.qh"; qi: "fh.qi"; qj: "fh.qj"; qk: "fh.qk"; ql: "fh.ql"; qm: "fh.qm"; qn: "fh.qn"; qo: "fh.qo"; qp: "fh.qp"; qq: "fh.qq"; qr: "fh.qr"; qs: "fh.qs"; qt: "fh.qt"; qu: "fh.qu"; qv: "fh.qv"; qw: "fh.qw"; qx: "fh.qx"; qy: "fh.qy"; qz: "fh.qz"; ra: "fh.ra"; rb: "fh.rb"; rc: "fh.rc"; rd: "fh.rd"; re: "fh.re"; rf: "fh.rf"; rg: "fh.rg"; rh: "fh.rh"; ri: "fh.ri"; rj: "fh.rj"; rk: "fh.rk"; rl: "fh.rl"; rm: "fh.rm"; rn: "fh.rn"; ro: "fh.ro"; rp: "fh.rp"; rq: "fh.rq"; rr: "fh.rr"; rs: "fh.rs"; rt: "fh.rt"; ru: "fh.ru"; rv: "fh.rv"; rw: "fh.rw"; rx: "fh.rx"; ry: "fh.ry"; rz: "fh.rz"; sa: "fh.sa"; sb: "fh.sb"; sc: "fh.sc"; sd: "fh.sd"; se: "fh.se"; sf: "fh.sf"; sg: "fh.sg"; sh: "fh.sh"; si: "fh.si"; sj: "fh.sj"; sk: "fh.sk"; sl: "fh.sl"; sm: "fh.sm"; sn: "fh.sn"; so: "fh.so"; sp: "fh.sp"; sq: "fh.sq"; sr: "fh.sr"; ss: "fh.ss"; st: "fh.st"; su: "fh.su"; sv: "fh.sv"; sw: "fh.sw"; sx: "fh.sx"; sy: "fh.sy"; sz: "fh.sz"; ta: "fh.ta"; tb: "fh.tb"; tc: "fh.tc"; td: "fh.td"; te: "fh.te"; tf: "fh.tf"; tg: "fh.tg"; th: "fh.th"; ti: "fh.ti"; tj: "fh.tj"; tk: "fh.tk"; tl: "fh.tl"; tm: "fh.tm"; tn: "fh.tn"; to: "fh.to"; tp: "fh.tp"; tq: "fh.tq"; tr: "fh.tr"; ts: "fh.ts"; tt: "fh.tt"; tu: "fh.tu"; tv: "fh.tv"; tw: "fh.tw"; tx: "fh.tx"; ty: "fh.ty"; tz: "fh.tz"; ua: "fh.ua"; ub: "fh.ub"; uc: "fh.uc"; ud: "fh.ud"; ue: "fh.ue"; uf: "fh.uf"; ug: "fh.ug"; uh: "fh.uh"; ui: "fh.ui"; uj: "fh.uj"; uk: "fh.uk"; ul: "fh.ul"; um: "fh.um"; un: "fh.un"; uo: "fh.uo"; up: "fh.up"; uq: "fh.uq"; ur: "fh.ur"; us: "fh.us"; ut: "fh.ut"; uu: "fh.uu"; uv: "fh.uv"; uw: "fh.uw"; ux: "fh.ux"; uy: "fh.uy"; uz: "fh.uz"; va: "fh.va"; vb: "fh.vb"; vc: "fh.vc"; vd: "fh.vd"; ve: "fh.ve"; vf: "fh.vf"; vg: "fh.vg"; vh: "fh.vh"; vi: "fh.vi"; vj: "fh.vj"; vk: "fh.vk"; vl: "fh.vl"; vm: "fh.vm"; vn: "fh.vn"; vo: "fh.vo"; vp: "fh.vp"; vq: "fh.vq"; vr: "fh.vr"; vs: "fh.vs"; vt: "fh.vt"; vu: "fh.vu"; vv: "fh.vv"; vw: "fh.vw"; vx: "fh.vx"; vy: "fh.vy"; vz: "fh.vz"; wa: "fh.wa"; wb: "fh.wb"; wc: "fh.wc"; wd: "fh.wd"; we: "fh.we"; wf: "fh.wf"; wg: "fh.wg"; wh: "fh.wh"; wi: "fh.wi"; wj: "fh.wj"; wk: "fh.wk"; wl: "fh.wl"; wm: "fh.wm"; wn: "fh.wn"; wo: "fh.wo"; wp: "fh.wp"; wq: "fh.wq"; wr: "fh.wr"; ws: "fh.ws"; wt: "fh.wt"; wu: "fh.wu"; wv: "fh.wv"; ww: "fh.ww"; wx: "fh.wx"; wy: "fh.wy"; wz: "fh.wz"; xa: "fh.xa"; xb: "fh.xb"; xc: "fh.xc"; xd: "fh.xd"; xe: "fh.xe"; xf: "fh.xf"; xg: "fh.xg"; xh: "fh.xh"; xi: "fh.xi"; xj: "fh.xj"; xk: "fh.xk"; xl: "fh.xl"; xm: "fh.xm"; xn: "fh.xn"; xo: "fh.xo"; xp: "fh.xp"; xq: "fh.xq"; xr: "fh.xr"; xs: "fh.xs"; xt: "fh.xt"; xu: "fh.xu"; xv: "fh.xv"; xw: "fh.xw"; xx: "fh.xx"; xy: "fh.xy"; xz: "fh.xz"; ya: "fh.ya"; yb: "fh.yb"; yc: "fh.yc"; yd: "fh.yd"; ye: "fh.ye"; yf: "fh.yf"; yg: "fh.yg"; yh: "fh.yh"; yi: "fh.yi"; yj: "fh.yj"; yk: "fh.yk"; yl: "fh.yl"; ym: "fh.ym"; yn: "fh.yn"; yo: "fh.yo"; yp: "fh.yp"; yq: "fh.yq"; yr: "fh.yr"; ys: "fh.ys"; yt: "fh.yt"; yu: "fh.yu"; yv: "fh.yv"; yw: "fh.yw"; yx: "fh.yx"; yy: "fh.yy"; yz: "fh.yz"; za: "fh.za"; zb: "fh.zb"; zc: "fh.zc"; zd: "fh.zd"; ze: "fh.ze"; zf: "fh.zf"; zg: "fh.zg"; zh: "fh.zh"; zi: "fh.zi"; zj: "fh.zj"; zk: "fh.zk"; zl: "fh.zl"; zm: "fh.zm"; zn: "fh.zn"; zo: "fh.zo"; zp: "fh.zp"; zq: "fh.zq"; zr: "fh.zr"; zs: "fh.zs"; zt: "fh.zt"; zu: "fh.zu"; zv: "fh.zv"; zw: "fh.zw"; zx: "fh.zx"; zy: "fh.zy"; zz: "fh.zz"; }; fi: { aa: "fi.aa"; ab: "fi.ab"; ac: "fi.ac"; ad: "fi.ad"; ae: "fi.ae"; af: "fi.af"; ag: "fi.ag"; ah: "fi.ah"; ai: "fi.ai"; aj: "fi.aj"; ak: "fi.ak"; al: "fi.al"; am: "fi.am"; an: "fi.an"; ao: "fi.ao"; ap: "fi.ap"; aq: "fi.aq"; ar: "fi.ar"; as: "fi.as"; at: "fi.at"; au: "fi.au"; av: "fi.av"; aw: "fi.aw"; ax: "fi.ax"; ay: "fi.ay"; az: "fi.az"; ba: "fi.ba"; bb: "fi.bb"; bc: "fi.bc"; bd: "fi.bd"; be: "fi.be"; bf: "fi.bf"; bg: "fi.bg"; bh: "fi.bh"; bi: "fi.bi"; bj: "fi.bj"; bk: "fi.bk"; bl: "fi.bl"; bm: "fi.bm"; bn: "fi.bn"; bo: "fi.bo"; bp: "fi.bp"; bq: "fi.bq"; br: "fi.br"; bs: "fi.bs"; bt: "fi.bt"; bu: "fi.bu"; bv: "fi.bv"; bw: "fi.bw"; bx: "fi.bx"; by: "fi.by"; bz: "fi.bz"; ca: "fi.ca"; cb: "fi.cb"; cc: "fi.cc"; cd: "fi.cd"; ce: "fi.ce"; cf: "fi.cf"; cg: "fi.cg"; ch: "fi.ch"; ci: "fi.ci"; cj: "fi.cj"; ck: "fi.ck"; cl: "fi.cl"; cm: "fi.cm"; cn: "fi.cn"; co: "fi.co"; cp: "fi.cp"; cq: "fi.cq"; cr: "fi.cr"; cs: "fi.cs"; ct: "fi.ct"; cu: "fi.cu"; cv: "fi.cv"; cw: "fi.cw"; cx: "fi.cx"; cy: "fi.cy"; cz: "fi.cz"; da: "fi.da"; db: "fi.db"; dc: "fi.dc"; dd: "fi.dd"; de: "fi.de"; df: "fi.df"; dg: "fi.dg"; dh: "fi.dh"; di: "fi.di"; dj: "fi.dj"; dk: "fi.dk"; dl: "fi.dl"; dm: "fi.dm"; dn: "fi.dn"; do: "fi.do"; dp: "fi.dp"; dq: "fi.dq"; dr: "fi.dr"; ds: "fi.ds"; dt: "fi.dt"; du: "fi.du"; dv: "fi.dv"; dw: "fi.dw"; dx: "fi.dx"; dy: "fi.dy"; dz: "fi.dz"; ea: "fi.ea"; eb: "fi.eb"; ec: "fi.ec"; ed: "fi.ed"; ee: "fi.ee"; ef: "fi.ef"; eg: "fi.eg"; eh: "fi.eh"; ei: "fi.ei"; ej: "fi.ej"; ek: "fi.ek"; el: "fi.el"; em: "fi.em"; en: "fi.en"; eo: "fi.eo"; ep: "fi.ep"; eq: "fi.eq"; er: "fi.er"; es: "fi.es"; et: "fi.et"; eu: "fi.eu"; ev: "fi.ev"; ew: "fi.ew"; ex: "fi.ex"; ey: "fi.ey"; ez: "fi.ez"; fa: "fi.fa"; fb: "fi.fb"; fc: "fi.fc"; fd: "fi.fd"; fe: "fi.fe"; ff: "fi.ff"; fg: "fi.fg"; fh: "fi.fh"; fi: "fi.fi"; fj: "fi.fj"; fk: "fi.fk"; fl: "fi.fl"; fm: "fi.fm"; fn: "fi.fn"; fo: "fi.fo"; fp: "fi.fp"; fq: "fi.fq"; fr: "fi.fr"; fs: "fi.fs"; ft: "fi.ft"; fu: "fi.fu"; fv: "fi.fv"; fw: "fi.fw"; fx: "fi.fx"; fy: "fi.fy"; fz: "fi.fz"; ga: "fi.ga"; gb: "fi.gb"; gc: "fi.gc"; gd: "fi.gd"; ge: "fi.ge"; gf: "fi.gf"; gg: "fi.gg"; gh: "fi.gh"; gi: "fi.gi"; gj: "fi.gj"; gk: "fi.gk"; gl: "fi.gl"; gm: "fi.gm"; gn: "fi.gn"; go: "fi.go"; gp: "fi.gp"; gq: "fi.gq"; gr: "fi.gr"; gs: "fi.gs"; gt: "fi.gt"; gu: "fi.gu"; gv: "fi.gv"; gw: "fi.gw"; gx: "fi.gx"; gy: "fi.gy"; gz: "fi.gz"; ha: "fi.ha"; hb: "fi.hb"; hc: "fi.hc"; hd: "fi.hd"; he: "fi.he"; hf: "fi.hf"; hg: "fi.hg"; hh: "fi.hh"; hi: "fi.hi"; hj: "fi.hj"; hk: "fi.hk"; hl: "fi.hl"; hm: "fi.hm"; hn: "fi.hn"; ho: "fi.ho"; hp: "fi.hp"; hq: "fi.hq"; hr: "fi.hr"; hs: "fi.hs"; ht: "fi.ht"; hu: "fi.hu"; hv: "fi.hv"; hw: "fi.hw"; hx: "fi.hx"; hy: "fi.hy"; hz: "fi.hz"; ia: "fi.ia"; ib: "fi.ib"; ic: "fi.ic"; id: "fi.id"; ie: "fi.ie"; if: "fi.if"; ig: "fi.ig"; ih: "fi.ih"; ii: "fi.ii"; ij: "fi.ij"; ik: "fi.ik"; il: "fi.il"; im: "fi.im"; in: "fi.in"; io: "fi.io"; ip: "fi.ip"; iq: "fi.iq"; ir: "fi.ir"; is: "fi.is"; it: "fi.it"; iu: "fi.iu"; iv: "fi.iv"; iw: "fi.iw"; ix: "fi.ix"; iy: "fi.iy"; iz: "fi.iz"; ja: "fi.ja"; jb: "fi.jb"; jc: "fi.jc"; jd: "fi.jd"; je: "fi.je"; jf: "fi.jf"; jg: "fi.jg"; jh: "fi.jh"; ji: "fi.ji"; jj: "fi.jj"; jk: "fi.jk"; jl: "fi.jl"; jm: "fi.jm"; jn: "fi.jn"; jo: "fi.jo"; jp: "fi.jp"; jq: "fi.jq"; jr: "fi.jr"; js: "fi.js"; jt: "fi.jt"; ju: "fi.ju"; jv: "fi.jv"; jw: "fi.jw"; jx: "fi.jx"; jy: "fi.jy"; jz: "fi.jz"; ka: "fi.ka"; kb: "fi.kb"; kc: "fi.kc"; kd: "fi.kd"; ke: "fi.ke"; kf: "fi.kf"; kg: "fi.kg"; kh: "fi.kh"; ki: "fi.ki"; kj: "fi.kj"; kk: "fi.kk"; kl: "fi.kl"; km: "fi.km"; kn: "fi.kn"; ko: "fi.ko"; kp: "fi.kp"; kq: "fi.kq"; kr: "fi.kr"; ks: "fi.ks"; kt: "fi.kt"; ku: "fi.ku"; kv: "fi.kv"; kw: "fi.kw"; kx: "fi.kx"; ky: "fi.ky"; kz: "fi.kz"; la: "fi.la"; lb: "fi.lb"; lc: "fi.lc"; ld: "fi.ld"; le: "fi.le"; lf: "fi.lf"; lg: "fi.lg"; lh: "fi.lh"; li: "fi.li"; lj: "fi.lj"; lk: "fi.lk"; ll: "fi.ll"; lm: "fi.lm"; ln: "fi.ln"; lo: "fi.lo"; lp: "fi.lp"; lq: "fi.lq"; lr: "fi.lr"; ls: "fi.ls"; lt: "fi.lt"; lu: "fi.lu"; lv: "fi.lv"; lw: "fi.lw"; lx: "fi.lx"; ly: "fi.ly"; lz: "fi.lz"; ma: "fi.ma"; mb: "fi.mb"; mc: "fi.mc"; md: "fi.md"; me: "fi.me"; mf: "fi.mf"; mg: "fi.mg"; mh: "fi.mh"; mi: "fi.mi"; mj: "fi.mj"; mk: "fi.mk"; ml: "fi.ml"; mm: "fi.mm"; mn: "fi.mn"; mo: "fi.mo"; mp: "fi.mp"; mq: "fi.mq"; mr: "fi.mr"; ms: "fi.ms"; mt: "fi.mt"; mu: "fi.mu"; mv: "fi.mv"; mw: "fi.mw"; mx: "fi.mx"; my: "fi.my"; mz: "fi.mz"; na: "fi.na"; nb: "fi.nb"; nc: "fi.nc"; nd: "fi.nd"; ne: "fi.ne"; nf: "fi.nf"; ng: "fi.ng"; nh: "fi.nh"; ni: "fi.ni"; nj: "fi.nj"; nk: "fi.nk"; nl: "fi.nl"; nm: "fi.nm"; nn: "fi.nn"; no: "fi.no"; np: "fi.np"; nq: "fi.nq"; nr: "fi.nr"; ns: "fi.ns"; nt: "fi.nt"; nu: "fi.nu"; nv: "fi.nv"; nw: "fi.nw"; nx: "fi.nx"; ny: "fi.ny"; nz: "fi.nz"; oa: "fi.oa"; ob: "fi.ob"; oc: "fi.oc"; od: "fi.od"; oe: "fi.oe"; of: "fi.of"; og: "fi.og"; oh: "fi.oh"; oi: "fi.oi"; oj: "fi.oj"; ok: "fi.ok"; ol: "fi.ol"; om: "fi.om"; on: "fi.on"; oo: "fi.oo"; op: "fi.op"; oq: "fi.oq"; or: "fi.or"; os: "fi.os"; ot: "fi.ot"; ou: "fi.ou"; ov: "fi.ov"; ow: "fi.ow"; ox: "fi.ox"; oy: "fi.oy"; oz: "fi.oz"; pa: "fi.pa"; pb: "fi.pb"; pc: "fi.pc"; pd: "fi.pd"; pe: "fi.pe"; pf: "fi.pf"; pg: "fi.pg"; ph: "fi.ph"; pi: "fi.pi"; pj: "fi.pj"; pk: "fi.pk"; pl: "fi.pl"; pm: "fi.pm"; pn: "fi.pn"; po: "fi.po"; pp: "fi.pp"; pq: "fi.pq"; pr: "fi.pr"; ps: "fi.ps"; pt: "fi.pt"; pu: "fi.pu"; pv: "fi.pv"; pw: "fi.pw"; px: "fi.px"; py: "fi.py"; pz: "fi.pz"; qa: "fi.qa"; qb: "fi.qb"; qc: "fi.qc"; qd: "fi.qd"; qe: "fi.qe"; qf: "fi.qf"; qg: "fi.qg"; qh: "fi.qh"; qi: "fi.qi"; qj: "fi.qj"; qk: "fi.qk"; ql: "fi.ql"; qm: "fi.qm"; qn: "fi.qn"; qo: "fi.qo"; qp: "fi.qp"; qq: "fi.qq"; qr: "fi.qr"; qs: "fi.qs"; qt: "fi.qt"; qu: "fi.qu"; qv: "fi.qv"; qw: "fi.qw"; qx: "fi.qx"; qy: "fi.qy"; qz: "fi.qz"; ra: "fi.ra"; rb: "fi.rb"; rc: "fi.rc"; rd: "fi.rd"; re: "fi.re"; rf: "fi.rf"; rg: "fi.rg"; rh: "fi.rh"; ri: "fi.ri"; rj: "fi.rj"; rk: "fi.rk"; rl: "fi.rl"; rm: "fi.rm"; rn: "fi.rn"; ro: "fi.ro"; rp: "fi.rp"; rq: "fi.rq"; rr: "fi.rr"; rs: "fi.rs"; rt: "fi.rt"; ru: "fi.ru"; rv: "fi.rv"; rw: "fi.rw"; rx: "fi.rx"; ry: "fi.ry"; rz: "fi.rz"; sa: "fi.sa"; sb: "fi.sb"; sc: "fi.sc"; sd: "fi.sd"; se: "fi.se"; sf: "fi.sf"; sg: "fi.sg"; sh: "fi.sh"; si: "fi.si"; sj: "fi.sj"; sk: "fi.sk"; sl: "fi.sl"; sm: "fi.sm"; sn: "fi.sn"; so: "fi.so"; sp: "fi.sp"; sq: "fi.sq"; sr: "fi.sr"; ss: "fi.ss"; st: "fi.st"; su: "fi.su"; sv: "fi.sv"; sw: "fi.sw"; sx: "fi.sx"; sy: "fi.sy"; sz: "fi.sz"; ta: "fi.ta"; tb: "fi.tb"; tc: "fi.tc"; td: "fi.td"; te: "fi.te"; tf: "fi.tf"; tg: "fi.tg"; th: "fi.th"; ti: "fi.ti"; tj: "fi.tj"; tk: "fi.tk"; tl: "fi.tl"; tm: "fi.tm"; tn: "fi.tn"; to: "fi.to"; tp: "fi.tp"; tq: "fi.tq"; tr: "fi.tr"; ts: "fi.ts"; tt: "fi.tt"; tu: "fi.tu"; tv: "fi.tv"; tw: "fi.tw"; tx: "fi.tx"; ty: "fi.ty"; tz: "fi.tz"; ua: "fi.ua"; ub: "fi.ub"; uc: "fi.uc"; ud: "fi.ud"; ue: "fi.ue"; uf: "fi.uf"; ug: "fi.ug"; uh: "fi.uh"; ui: "fi.ui"; uj: "fi.uj"; uk: "fi.uk"; ul: "fi.ul"; um: "fi.um"; un: "fi.un"; uo: "fi.uo"; up: "fi.up"; uq: "fi.uq"; ur: "fi.ur"; us: "fi.us"; ut: "fi.ut"; uu: "fi.uu"; uv: "fi.uv"; uw: "fi.uw"; ux: "fi.ux"; uy: "fi.uy"; uz: "fi.uz"; va: "fi.va"; vb: "fi.vb"; vc: "fi.vc"; vd: "fi.vd"; ve: "fi.ve"; vf: "fi.vf"; vg: "fi.vg"; vh: "fi.vh"; vi: "fi.vi"; vj: "fi.vj"; vk: "fi.vk"; vl: "fi.vl"; vm: "fi.vm"; vn: "fi.vn"; vo: "fi.vo"; vp: "fi.vp"; vq: "fi.vq"; vr: "fi.vr"; vs: "fi.vs"; vt: "fi.vt"; vu: "fi.vu"; vv: "fi.vv"; vw: "fi.vw"; vx: "fi.vx"; vy: "fi.vy"; vz: "fi.vz"; wa: "fi.wa"; wb: "fi.wb"; wc: "fi.wc"; wd: "fi.wd"; we: "fi.we"; wf: "fi.wf"; wg: "fi.wg"; wh: "fi.wh"; wi: "fi.wi"; wj: "fi.wj"; wk: "fi.wk"; wl: "fi.wl"; wm: "fi.wm"; wn: "fi.wn"; wo: "fi.wo"; wp: "fi.wp"; wq: "fi.wq"; wr: "fi.wr"; ws: "fi.ws"; wt: "fi.wt"; wu: "fi.wu"; wv: "fi.wv"; ww: "fi.ww"; wx: "fi.wx"; wy: "fi.wy"; wz: "fi.wz"; xa: "fi.xa"; xb: "fi.xb"; xc: "fi.xc"; xd: "fi.xd"; xe: "fi.xe"; xf: "fi.xf"; xg: "fi.xg"; xh: "fi.xh"; xi: "fi.xi"; xj: "fi.xj"; xk: "fi.xk"; xl: "fi.xl"; xm: "fi.xm"; xn: "fi.xn"; xo: "fi.xo"; xp: "fi.xp"; xq: "fi.xq"; xr: "fi.xr"; xs: "fi.xs"; xt: "fi.xt"; xu: "fi.xu"; xv: "fi.xv"; xw: "fi.xw"; xx: "fi.xx"; xy: "fi.xy"; xz: "fi.xz"; ya: "fi.ya"; yb: "fi.yb"; yc: "fi.yc"; yd: "fi.yd"; ye: "fi.ye"; yf: "fi.yf"; yg: "fi.yg"; yh: "fi.yh"; yi: "fi.yi"; yj: "fi.yj"; yk: "fi.yk"; yl: "fi.yl"; ym: "fi.ym"; yn: "fi.yn"; yo: "fi.yo"; yp: "fi.yp"; yq: "fi.yq"; yr: "fi.yr"; ys: "fi.ys"; yt: "fi.yt"; yu: "fi.yu"; yv: "fi.yv"; yw: "fi.yw"; yx: "fi.yx"; yy: "fi.yy"; yz: "fi.yz"; za: "fi.za"; zb: "fi.zb"; zc: "fi.zc"; zd: "fi.zd"; ze: "fi.ze"; zf: "fi.zf"; zg: "fi.zg"; zh: "fi.zh"; zi: "fi.zi"; zj: "fi.zj"; zk: "fi.zk"; zl: "fi.zl"; zm: "fi.zm"; zn: "fi.zn"; zo: "fi.zo"; zp: "fi.zp"; zq: "fi.zq"; zr: "fi.zr"; zs: "fi.zs"; zt: "fi.zt"; zu: "fi.zu"; zv: "fi.zv"; zw: "fi.zw"; zx: "fi.zx"; zy: "fi.zy"; zz: "fi.zz"; }; fj: { aa: "fj.aa"; ab: "fj.ab"; ac: "fj.ac"; ad: "fj.ad"; ae: "fj.ae"; af: "fj.af"; ag: "fj.ag"; ah: "fj.ah"; ai: "fj.ai"; aj: "fj.aj"; ak: "fj.ak"; al: "fj.al"; am: "fj.am"; an: "fj.an"; ao: "fj.ao"; ap: "fj.ap"; aq: "fj.aq"; ar: "fj.ar"; as: "fj.as"; at: "fj.at"; au: "fj.au"; av: "fj.av"; aw: "fj.aw"; ax: "fj.ax"; ay: "fj.ay"; az: "fj.az"; ba: "fj.ba"; bb: "fj.bb"; bc: "fj.bc"; bd: "fj.bd"; be: "fj.be"; bf: "fj.bf"; bg: "fj.bg"; bh: "fj.bh"; bi: "fj.bi"; bj: "fj.bj"; bk: "fj.bk"; bl: "fj.bl"; bm: "fj.bm"; bn: "fj.bn"; bo: "fj.bo"; bp: "fj.bp"; bq: "fj.bq"; br: "fj.br"; bs: "fj.bs"; bt: "fj.bt"; bu: "fj.bu"; bv: "fj.bv"; bw: "fj.bw"; bx: "fj.bx"; by: "fj.by"; bz: "fj.bz"; ca: "fj.ca"; cb: "fj.cb"; cc: "fj.cc"; cd: "fj.cd"; ce: "fj.ce"; cf: "fj.cf"; cg: "fj.cg"; ch: "fj.ch"; ci: "fj.ci"; cj: "fj.cj"; ck: "fj.ck"; cl: "fj.cl"; cm: "fj.cm"; cn: "fj.cn"; co: "fj.co"; cp: "fj.cp"; cq: "fj.cq"; cr: "fj.cr"; cs: "fj.cs"; ct: "fj.ct"; cu: "fj.cu"; cv: "fj.cv"; cw: "fj.cw"; cx: "fj.cx"; cy: "fj.cy"; cz: "fj.cz"; da: "fj.da"; db: "fj.db"; dc: "fj.dc"; dd: "fj.dd"; de: "fj.de"; df: "fj.df"; dg: "fj.dg"; dh: "fj.dh"; di: "fj.di"; dj: "fj.dj"; dk: "fj.dk"; dl: "fj.dl"; dm: "fj.dm"; dn: "fj.dn"; do: "fj.do"; dp: "fj.dp"; dq: "fj.dq"; dr: "fj.dr"; ds: "fj.ds"; dt: "fj.dt"; du: "fj.du"; dv: "fj.dv"; dw: "fj.dw"; dx: "fj.dx"; dy: "fj.dy"; dz: "fj.dz"; ea: "fj.ea"; eb: "fj.eb"; ec: "fj.ec"; ed: "fj.ed"; ee: "fj.ee"; ef: "fj.ef"; eg: "fj.eg"; eh: "fj.eh"; ei: "fj.ei"; ej: "fj.ej"; ek: "fj.ek"; el: "fj.el"; em: "fj.em"; en: "fj.en"; eo: "fj.eo"; ep: "fj.ep"; eq: "fj.eq"; er: "fj.er"; es: "fj.es"; et: "fj.et"; eu: "fj.eu"; ev: "fj.ev"; ew: "fj.ew"; ex: "fj.ex"; ey: "fj.ey"; ez: "fj.ez"; fa: "fj.fa"; fb: "fj.fb"; fc: "fj.fc"; fd: "fj.fd"; fe: "fj.fe"; ff: "fj.ff"; fg: "fj.fg"; fh: "fj.fh"; fi: "fj.fi"; fj: "fj.fj"; fk: "fj.fk"; fl: "fj.fl"; fm: "fj.fm"; fn: "fj.fn"; fo: "fj.fo"; fp: "fj.fp"; fq: "fj.fq"; fr: "fj.fr"; fs: "fj.fs"; ft: "fj.ft"; fu: "fj.fu"; fv: "fj.fv"; fw: "fj.fw"; fx: "fj.fx"; fy: "fj.fy"; fz: "fj.fz"; ga: "fj.ga"; gb: "fj.gb"; gc: "fj.gc"; gd: "fj.gd"; ge: "fj.ge"; gf: "fj.gf"; gg: "fj.gg"; gh: "fj.gh"; gi: "fj.gi"; gj: "fj.gj"; gk: "fj.gk"; gl: "fj.gl"; gm: "fj.gm"; gn: "fj.gn"; go: "fj.go"; gp: "fj.gp"; gq: "fj.gq"; gr: "fj.gr"; gs: "fj.gs"; gt: "fj.gt"; gu: "fj.gu"; gv: "fj.gv"; gw: "fj.gw"; gx: "fj.gx"; gy: "fj.gy"; gz: "fj.gz"; ha: "fj.ha"; hb: "fj.hb"; hc: "fj.hc"; hd: "fj.hd"; he: "fj.he"; hf: "fj.hf"; hg: "fj.hg"; hh: "fj.hh"; hi: "fj.hi"; hj: "fj.hj"; hk: "fj.hk"; hl: "fj.hl"; hm: "fj.hm"; hn: "fj.hn"; ho: "fj.ho"; hp: "fj.hp"; hq: "fj.hq"; hr: "fj.hr"; hs: "fj.hs"; ht: "fj.ht"; hu: "fj.hu"; hv: "fj.hv"; hw: "fj.hw"; hx: "fj.hx"; hy: "fj.hy"; hz: "fj.hz"; ia: "fj.ia"; ib: "fj.ib"; ic: "fj.ic"; id: "fj.id"; ie: "fj.ie"; if: "fj.if"; ig: "fj.ig"; ih: "fj.ih"; ii: "fj.ii"; ij: "fj.ij"; ik: "fj.ik"; il: "fj.il"; im: "fj.im"; in: "fj.in"; io: "fj.io"; ip: "fj.ip"; iq: "fj.iq"; ir: "fj.ir"; is: "fj.is"; it: "fj.it"; iu: "fj.iu"; iv: "fj.iv"; iw: "fj.iw"; ix: "fj.ix"; iy: "fj.iy"; iz: "fj.iz"; ja: "fj.ja"; jb: "fj.jb"; jc: "fj.jc"; jd: "fj.jd"; je: "fj.je"; jf: "fj.jf"; jg: "fj.jg"; jh: "fj.jh"; ji: "fj.ji"; jj: "fj.jj"; jk: "fj.jk"; jl: "fj.jl"; jm: "fj.jm"; jn: "fj.jn"; jo: "fj.jo"; jp: "fj.jp"; jq: "fj.jq"; jr: "fj.jr"; js: "fj.js"; jt: "fj.jt"; ju: "fj.ju"; jv: "fj.jv"; jw: "fj.jw"; jx: "fj.jx"; jy: "fj.jy"; jz: "fj.jz"; ka: "fj.ka"; kb: "fj.kb"; kc: "fj.kc"; kd: "fj.kd"; ke: "fj.ke"; kf: "fj.kf"; kg: "fj.kg"; kh: "fj.kh"; ki: "fj.ki"; kj: "fj.kj"; kk: "fj.kk"; kl: "fj.kl"; km: "fj.km"; kn: "fj.kn"; ko: "fj.ko"; kp: "fj.kp"; kq: "fj.kq"; kr: "fj.kr"; ks: "fj.ks"; kt: "fj.kt"; ku: "fj.ku"; kv: "fj.kv"; kw: "fj.kw"; kx: "fj.kx"; ky: "fj.ky"; kz: "fj.kz"; la: "fj.la"; lb: "fj.lb"; lc: "fj.lc"; ld: "fj.ld"; le: "fj.le"; lf: "fj.lf"; lg: "fj.lg"; lh: "fj.lh"; li: "fj.li"; lj: "fj.lj"; lk: "fj.lk"; ll: "fj.ll"; lm: "fj.lm"; ln: "fj.ln"; lo: "fj.lo"; lp: "fj.lp"; lq: "fj.lq"; lr: "fj.lr"; ls: "fj.ls"; lt: "fj.lt"; lu: "fj.lu"; lv: "fj.lv"; lw: "fj.lw"; lx: "fj.lx"; ly: "fj.ly"; lz: "fj.lz"; ma: "fj.ma"; mb: "fj.mb"; mc: "fj.mc"; md: "fj.md"; me: "fj.me"; mf: "fj.mf"; mg: "fj.mg"; mh: "fj.mh"; mi: "fj.mi"; mj: "fj.mj"; mk: "fj.mk"; ml: "fj.ml"; mm: "fj.mm"; mn: "fj.mn"; mo: "fj.mo"; mp: "fj.mp"; mq: "fj.mq"; mr: "fj.mr"; ms: "fj.ms"; mt: "fj.mt"; mu: "fj.mu"; mv: "fj.mv"; mw: "fj.mw"; mx: "fj.mx"; my: "fj.my"; mz: "fj.mz"; na: "fj.na"; nb: "fj.nb"; nc: "fj.nc"; nd: "fj.nd"; ne: "fj.ne"; nf: "fj.nf"; ng: "fj.ng"; nh: "fj.nh"; ni: "fj.ni"; nj: "fj.nj"; nk: "fj.nk"; nl: "fj.nl"; nm: "fj.nm"; nn: "fj.nn"; no: "fj.no"; np: "fj.np"; nq: "fj.nq"; nr: "fj.nr"; ns: "fj.ns"; nt: "fj.nt"; nu: "fj.nu"; nv: "fj.nv"; nw: "fj.nw"; nx: "fj.nx"; ny: "fj.ny"; nz: "fj.nz"; oa: "fj.oa"; ob: "fj.ob"; oc: "fj.oc"; od: "fj.od"; oe: "fj.oe"; of: "fj.of"; og: "fj.og"; oh: "fj.oh"; oi: "fj.oi"; oj: "fj.oj"; ok: "fj.ok"; ol: "fj.ol"; om: "fj.om"; on: "fj.on"; oo: "fj.oo"; op: "fj.op"; oq: "fj.oq"; or: "fj.or"; os: "fj.os"; ot: "fj.ot"; ou: "fj.ou"; ov: "fj.ov"; ow: "fj.ow"; ox: "fj.ox"; oy: "fj.oy"; oz: "fj.oz"; pa: "fj.pa"; pb: "fj.pb"; pc: "fj.pc"; pd: "fj.pd"; pe: "fj.pe"; pf: "fj.pf"; pg: "fj.pg"; ph: "fj.ph"; pi: "fj.pi"; pj: "fj.pj"; pk: "fj.pk"; pl: "fj.pl"; pm: "fj.pm"; pn: "fj.pn"; po: "fj.po"; pp: "fj.pp"; pq: "fj.pq"; pr: "fj.pr"; ps: "fj.ps"; pt: "fj.pt"; pu: "fj.pu"; pv: "fj.pv"; pw: "fj.pw"; px: "fj.px"; py: "fj.py"; pz: "fj.pz"; qa: "fj.qa"; qb: "fj.qb"; qc: "fj.qc"; qd: "fj.qd"; qe: "fj.qe"; qf: "fj.qf"; qg: "fj.qg"; qh: "fj.qh"; qi: "fj.qi"; qj: "fj.qj"; qk: "fj.qk"; ql: "fj.ql"; qm: "fj.qm"; qn: "fj.qn"; qo: "fj.qo"; qp: "fj.qp"; qq: "fj.qq"; qr: "fj.qr"; qs: "fj.qs"; qt: "fj.qt"; qu: "fj.qu"; qv: "fj.qv"; qw: "fj.qw"; qx: "fj.qx"; qy: "fj.qy"; qz: "fj.qz"; ra: "fj.ra"; rb: "fj.rb"; rc: "fj.rc"; rd: "fj.rd"; re: "fj.re"; rf: "fj.rf"; rg: "fj.rg"; rh: "fj.rh"; ri: "fj.ri"; rj: "fj.rj"; rk: "fj.rk"; rl: "fj.rl"; rm: "fj.rm"; rn: "fj.rn"; ro: "fj.ro"; rp: "fj.rp"; rq: "fj.rq"; rr: "fj.rr"; rs: "fj.rs"; rt: "fj.rt"; ru: "fj.ru"; rv: "fj.rv"; rw: "fj.rw"; rx: "fj.rx"; ry: "fj.ry"; rz: "fj.rz"; sa: "fj.sa"; sb: "fj.sb"; sc: "fj.sc"; sd: "fj.sd"; se: "fj.se"; sf: "fj.sf"; sg: "fj.sg"; sh: "fj.sh"; si: "fj.si"; sj: "fj.sj"; sk: "fj.sk"; sl: "fj.sl"; sm: "fj.sm"; sn: "fj.sn"; so: "fj.so"; sp: "fj.sp"; sq: "fj.sq"; sr: "fj.sr"; ss: "fj.ss"; st: "fj.st"; su: "fj.su"; sv: "fj.sv"; sw: "fj.sw"; sx: "fj.sx"; sy: "fj.sy"; sz: "fj.sz"; ta: "fj.ta"; tb: "fj.tb"; tc: "fj.tc"; td: "fj.td"; te: "fj.te"; tf: "fj.tf"; tg: "fj.tg"; th: "fj.th"; ti: "fj.ti"; tj: "fj.tj"; tk: "fj.tk"; tl: "fj.tl"; tm: "fj.tm"; tn: "fj.tn"; to: "fj.to"; tp: "fj.tp"; tq: "fj.tq"; tr: "fj.tr"; ts: "fj.ts"; tt: "fj.tt"; tu: "fj.tu"; tv: "fj.tv"; tw: "fj.tw"; tx: "fj.tx"; ty: "fj.ty"; tz: "fj.tz"; ua: "fj.ua"; ub: "fj.ub"; uc: "fj.uc"; ud: "fj.ud"; ue: "fj.ue"; uf: "fj.uf"; ug: "fj.ug"; uh: "fj.uh"; ui: "fj.ui"; uj: "fj.uj"; uk: "fj.uk"; ul: "fj.ul"; um: "fj.um"; un: "fj.un"; uo: "fj.uo"; up: "fj.up"; uq: "fj.uq"; ur: "fj.ur"; us: "fj.us"; ut: "fj.ut"; uu: "fj.uu"; uv: "fj.uv"; uw: "fj.uw"; ux: "fj.ux"; uy: "fj.uy"; uz: "fj.uz"; va: "fj.va"; vb: "fj.vb"; vc: "fj.vc"; vd: "fj.vd"; ve: "fj.ve"; vf: "fj.vf"; vg: "fj.vg"; vh: "fj.vh"; vi: "fj.vi"; vj: "fj.vj"; vk: "fj.vk"; vl: "fj.vl"; vm: "fj.vm"; vn: "fj.vn"; vo: "fj.vo"; vp: "fj.vp"; vq: "fj.vq"; vr: "fj.vr"; vs: "fj.vs"; vt: "fj.vt"; vu: "fj.vu"; vv: "fj.vv"; vw: "fj.vw"; vx: "fj.vx"; vy: "fj.vy"; vz: "fj.vz"; wa: "fj.wa"; wb: "fj.wb"; wc: "fj.wc"; wd: "fj.wd"; we: "fj.we"; wf: "fj.wf"; wg: "fj.wg"; wh: "fj.wh"; wi: "fj.wi"; wj: "fj.wj"; wk: "fj.wk"; wl: "fj.wl"; wm: "fj.wm"; wn: "fj.wn"; wo: "fj.wo"; wp: "fj.wp"; wq: "fj.wq"; wr: "fj.wr"; ws: "fj.ws"; wt: "fj.wt"; wu: "fj.wu"; wv: "fj.wv"; ww: "fj.ww"; wx: "fj.wx"; wy: "fj.wy"; wz: "fj.wz"; xa: "fj.xa"; xb: "fj.xb"; xc: "fj.xc"; xd: "fj.xd"; xe: "fj.xe"; xf: "fj.xf"; xg: "fj.xg"; xh: "fj.xh"; xi: "fj.xi"; xj: "fj.xj"; xk: "fj.xk"; xl: "fj.xl"; xm: "fj.xm"; xn: "fj.xn"; xo: "fj.xo"; xp: "fj.xp"; xq: "fj.xq"; xr: "fj.xr"; xs: "fj.xs"; xt: "fj.xt"; xu: "fj.xu"; xv: "fj.xv"; xw: "fj.xw"; xx: "fj.xx"; xy: "fj.xy"; xz: "fj.xz"; ya: "fj.ya"; yb: "fj.yb"; yc: "fj.yc"; yd: "fj.yd"; ye: "fj.ye"; yf: "fj.yf"; yg: "fj.yg"; yh: "fj.yh"; yi: "fj.yi"; yj: "fj.yj"; yk: "fj.yk"; yl: "fj.yl"; ym: "fj.ym"; yn: "fj.yn"; yo: "fj.yo"; yp: "fj.yp"; yq: "fj.yq"; yr: "fj.yr"; ys: "fj.ys"; yt: "fj.yt"; yu: "fj.yu"; yv: "fj.yv"; yw: "fj.yw"; yx: "fj.yx"; yy: "fj.yy"; yz: "fj.yz"; za: "fj.za"; zb: "fj.zb"; zc: "fj.zc"; zd: "fj.zd"; ze: "fj.ze"; zf: "fj.zf"; zg: "fj.zg"; zh: "fj.zh"; zi: "fj.zi"; zj: "fj.zj"; zk: "fj.zk"; zl: "fj.zl"; zm: "fj.zm"; zn: "fj.zn"; zo: "fj.zo"; zp: "fj.zp"; zq: "fj.zq"; zr: "fj.zr"; zs: "fj.zs"; zt: "fj.zt"; zu: "fj.zu"; zv: "fj.zv"; zw: "fj.zw"; zx: "fj.zx"; zy: "fj.zy"; zz: "fj.zz"; }; fk: { aa: "fk.aa"; ab: "fk.ab"; ac: "fk.ac"; ad: "fk.ad"; ae: "fk.ae"; af: "fk.af"; ag: "fk.ag"; ah: "fk.ah"; ai: "fk.ai"; aj: "fk.aj"; ak: "fk.ak"; al: "fk.al"; am: "fk.am"; an: "fk.an"; ao: "fk.ao"; ap: "fk.ap"; aq: "fk.aq"; ar: "fk.ar"; as: "fk.as"; at: "fk.at"; au: "fk.au"; av: "fk.av"; aw: "fk.aw"; ax: "fk.ax"; ay: "fk.ay"; az: "fk.az"; ba: "fk.ba"; bb: "fk.bb"; bc: "fk.bc"; bd: "fk.bd"; be: "fk.be"; bf: "fk.bf"; bg: "fk.bg"; bh: "fk.bh"; bi: "fk.bi"; bj: "fk.bj"; bk: "fk.bk"; bl: "fk.bl"; bm: "fk.bm"; bn: "fk.bn"; bo: "fk.bo"; bp: "fk.bp"; bq: "fk.bq"; br: "fk.br"; bs: "fk.bs"; bt: "fk.bt"; bu: "fk.bu"; bv: "fk.bv"; bw: "fk.bw"; bx: "fk.bx"; by: "fk.by"; bz: "fk.bz"; ca: "fk.ca"; cb: "fk.cb"; cc: "fk.cc"; cd: "fk.cd"; ce: "fk.ce"; cf: "fk.cf"; cg: "fk.cg"; ch: "fk.ch"; ci: "fk.ci"; cj: "fk.cj"; ck: "fk.ck"; cl: "fk.cl"; cm: "fk.cm"; cn: "fk.cn"; co: "fk.co"; cp: "fk.cp"; cq: "fk.cq"; cr: "fk.cr"; cs: "fk.cs"; ct: "fk.ct"; cu: "fk.cu"; cv: "fk.cv"; cw: "fk.cw"; cx: "fk.cx"; cy: "fk.cy"; cz: "fk.cz"; da: "fk.da"; db: "fk.db"; dc: "fk.dc"; dd: "fk.dd"; de: "fk.de"; df: "fk.df"; dg: "fk.dg"; dh: "fk.dh"; di: "fk.di"; dj: "fk.dj"; dk: "fk.dk"; dl: "fk.dl"; dm: "fk.dm"; dn: "fk.dn"; do: "fk.do"; dp: "fk.dp"; dq: "fk.dq"; dr: "fk.dr"; ds: "fk.ds"; dt: "fk.dt"; du: "fk.du"; dv: "fk.dv"; dw: "fk.dw"; dx: "fk.dx"; dy: "fk.dy"; dz: "fk.dz"; ea: "fk.ea"; eb: "fk.eb"; ec: "fk.ec"; ed: "fk.ed"; ee: "fk.ee"; ef: "fk.ef"; eg: "fk.eg"; eh: "fk.eh"; ei: "fk.ei"; ej: "fk.ej"; ek: "fk.ek"; el: "fk.el"; em: "fk.em"; en: "fk.en"; eo: "fk.eo"; ep: "fk.ep"; eq: "fk.eq"; er: "fk.er"; es: "fk.es"; et: "fk.et"; eu: "fk.eu"; ev: "fk.ev"; ew: "fk.ew"; ex: "fk.ex"; ey: "fk.ey"; ez: "fk.ez"; fa: "fk.fa"; fb: "fk.fb"; fc: "fk.fc"; fd: "fk.fd"; fe: "fk.fe"; ff: "fk.ff"; fg: "fk.fg"; fh: "fk.fh"; fi: "fk.fi"; fj: "fk.fj"; fk: "fk.fk"; fl: "fk.fl"; fm: "fk.fm"; fn: "fk.fn"; fo: "fk.fo"; fp: "fk.fp"; fq: "fk.fq"; fr: "fk.fr"; fs: "fk.fs"; ft: "fk.ft"; fu: "fk.fu"; fv: "fk.fv"; fw: "fk.fw"; fx: "fk.fx"; fy: "fk.fy"; fz: "fk.fz"; ga: "fk.ga"; gb: "fk.gb"; gc: "fk.gc"; gd: "fk.gd"; ge: "fk.ge"; gf: "fk.gf"; gg: "fk.gg"; gh: "fk.gh"; gi: "fk.gi"; gj: "fk.gj"; gk: "fk.gk"; gl: "fk.gl"; gm: "fk.gm"; gn: "fk.gn"; go: "fk.go"; gp: "fk.gp"; gq: "fk.gq"; gr: "fk.gr"; gs: "fk.gs"; gt: "fk.gt"; gu: "fk.gu"; gv: "fk.gv"; gw: "fk.gw"; gx: "fk.gx"; gy: "fk.gy"; gz: "fk.gz"; ha: "fk.ha"; hb: "fk.hb"; hc: "fk.hc"; hd: "fk.hd"; he: "fk.he"; hf: "fk.hf"; hg: "fk.hg"; hh: "fk.hh"; hi: "fk.hi"; hj: "fk.hj"; hk: "fk.hk"; hl: "fk.hl"; hm: "fk.hm"; hn: "fk.hn"; ho: "fk.ho"; hp: "fk.hp"; hq: "fk.hq"; hr: "fk.hr"; hs: "fk.hs"; ht: "fk.ht"; hu: "fk.hu"; hv: "fk.hv"; hw: "fk.hw"; hx: "fk.hx"; hy: "fk.hy"; hz: "fk.hz"; ia: "fk.ia"; ib: "fk.ib"; ic: "fk.ic"; id: "fk.id"; ie: "fk.ie"; if: "fk.if"; ig: "fk.ig"; ih: "fk.ih"; ii: "fk.ii"; ij: "fk.ij"; ik: "fk.ik"; il: "fk.il"; im: "fk.im"; in: "fk.in"; io: "fk.io"; ip: "fk.ip"; iq: "fk.iq"; ir: "fk.ir"; is: "fk.is"; it: "fk.it"; iu: "fk.iu"; iv: "fk.iv"; iw: "fk.iw"; ix: "fk.ix"; iy: "fk.iy"; iz: "fk.iz"; ja: "fk.ja"; jb: "fk.jb"; jc: "fk.jc"; jd: "fk.jd"; je: "fk.je"; jf: "fk.jf"; jg: "fk.jg"; jh: "fk.jh"; ji: "fk.ji"; jj: "fk.jj"; jk: "fk.jk"; jl: "fk.jl"; jm: "fk.jm"; jn: "fk.jn"; jo: "fk.jo"; jp: "fk.jp"; jq: "fk.jq"; jr: "fk.jr"; js: "fk.js"; jt: "fk.jt"; ju: "fk.ju"; jv: "fk.jv"; jw: "fk.jw"; jx: "fk.jx"; jy: "fk.jy"; jz: "fk.jz"; ka: "fk.ka"; kb: "fk.kb"; kc: "fk.kc"; kd: "fk.kd"; ke: "fk.ke"; kf: "fk.kf"; kg: "fk.kg"; kh: "fk.kh"; ki: "fk.ki"; kj: "fk.kj"; kk: "fk.kk"; kl: "fk.kl"; km: "fk.km"; kn: "fk.kn"; ko: "fk.ko"; kp: "fk.kp"; kq: "fk.kq"; kr: "fk.kr"; ks: "fk.ks"; kt: "fk.kt"; ku: "fk.ku"; kv: "fk.kv"; kw: "fk.kw"; kx: "fk.kx"; ky: "fk.ky"; kz: "fk.kz"; la: "fk.la"; lb: "fk.lb"; lc: "fk.lc"; ld: "fk.ld"; le: "fk.le"; lf: "fk.lf"; lg: "fk.lg"; lh: "fk.lh"; li: "fk.li"; lj: "fk.lj"; lk: "fk.lk"; ll: "fk.ll"; lm: "fk.lm"; ln: "fk.ln"; lo: "fk.lo"; lp: "fk.lp"; lq: "fk.lq"; lr: "fk.lr"; ls: "fk.ls"; lt: "fk.lt"; lu: "fk.lu"; lv: "fk.lv"; lw: "fk.lw"; lx: "fk.lx"; ly: "fk.ly"; lz: "fk.lz"; ma: "fk.ma"; mb: "fk.mb"; mc: "fk.mc"; md: "fk.md"; me: "fk.me"; mf: "fk.mf"; mg: "fk.mg"; mh: "fk.mh"; mi: "fk.mi"; mj: "fk.mj"; mk: "fk.mk"; ml: "fk.ml"; mm: "fk.mm"; mn: "fk.mn"; mo: "fk.mo"; mp: "fk.mp"; mq: "fk.mq"; mr: "fk.mr"; ms: "fk.ms"; mt: "fk.mt"; mu: "fk.mu"; mv: "fk.mv"; mw: "fk.mw"; mx: "fk.mx"; my: "fk.my"; mz: "fk.mz"; na: "fk.na"; nb: "fk.nb"; nc: "fk.nc"; nd: "fk.nd"; ne: "fk.ne"; nf: "fk.nf"; ng: "fk.ng"; nh: "fk.nh"; ni: "fk.ni"; nj: "fk.nj"; nk: "fk.nk"; nl: "fk.nl"; nm: "fk.nm"; nn: "fk.nn"; no: "fk.no"; np: "fk.np"; nq: "fk.nq"; nr: "fk.nr"; ns: "fk.ns"; nt: "fk.nt"; nu: "fk.nu"; nv: "fk.nv"; nw: "fk.nw"; nx: "fk.nx"; ny: "fk.ny"; nz: "fk.nz"; oa: "fk.oa"; ob: "fk.ob"; oc: "fk.oc"; od: "fk.od"; oe: "fk.oe"; of: "fk.of"; og: "fk.og"; oh: "fk.oh"; oi: "fk.oi"; oj: "fk.oj"; ok: "fk.ok"; ol: "fk.ol"; om: "fk.om"; on: "fk.on"; oo: "fk.oo"; op: "fk.op"; oq: "fk.oq"; or: "fk.or"; os: "fk.os"; ot: "fk.ot"; ou: "fk.ou"; ov: "fk.ov"; ow: "fk.ow"; ox: "fk.ox"; oy: "fk.oy"; oz: "fk.oz"; pa: "fk.pa"; pb: "fk.pb"; pc: "fk.pc"; pd: "fk.pd"; pe: "fk.pe"; pf: "fk.pf"; pg: "fk.pg"; ph: "fk.ph"; pi: "fk.pi"; pj: "fk.pj"; pk: "fk.pk"; pl: "fk.pl"; pm: "fk.pm"; pn: "fk.pn"; po: "fk.po"; pp: "fk.pp"; pq: "fk.pq"; pr: "fk.pr"; ps: "fk.ps"; pt: "fk.pt"; pu: "fk.pu"; pv: "fk.pv"; pw: "fk.pw"; px: "fk.px"; py: "fk.py"; pz: "fk.pz"; qa: "fk.qa"; qb: "fk.qb"; qc: "fk.qc"; qd: "fk.qd"; qe: "fk.qe"; qf: "fk.qf"; qg: "fk.qg"; qh: "fk.qh"; qi: "fk.qi"; qj: "fk.qj"; qk: "fk.qk"; ql: "fk.ql"; qm: "fk.qm"; qn: "fk.qn"; qo: "fk.qo"; qp: "fk.qp"; qq: "fk.qq"; qr: "fk.qr"; qs: "fk.qs"; qt: "fk.qt"; qu: "fk.qu"; qv: "fk.qv"; qw: "fk.qw"; qx: "fk.qx"; qy: "fk.qy"; qz: "fk.qz"; ra: "fk.ra"; rb: "fk.rb"; rc: "fk.rc"; rd: "fk.rd"; re: "fk.re"; rf: "fk.rf"; rg: "fk.rg"; rh: "fk.rh"; ri: "fk.ri"; rj: "fk.rj"; rk: "fk.rk"; rl: "fk.rl"; rm: "fk.rm"; rn: "fk.rn"; ro: "fk.ro"; rp: "fk.rp"; rq: "fk.rq"; rr: "fk.rr"; rs: "fk.rs"; rt: "fk.rt"; ru: "fk.ru"; rv: "fk.rv"; rw: "fk.rw"; rx: "fk.rx"; ry: "fk.ry"; rz: "fk.rz"; sa: "fk.sa"; sb: "fk.sb"; sc: "fk.sc"; sd: "fk.sd"; se: "fk.se"; sf: "fk.sf"; sg: "fk.sg"; sh: "fk.sh"; si: "fk.si"; sj: "fk.sj"; sk: "fk.sk"; sl: "fk.sl"; sm: "fk.sm"; sn: "fk.sn"; so: "fk.so"; sp: "fk.sp"; sq: "fk.sq"; sr: "fk.sr"; ss: "fk.ss"; st: "fk.st"; su: "fk.su"; sv: "fk.sv"; sw: "fk.sw"; sx: "fk.sx"; sy: "fk.sy"; sz: "fk.sz"; ta: "fk.ta"; tb: "fk.tb"; tc: "fk.tc"; td: "fk.td"; te: "fk.te"; tf: "fk.tf"; tg: "fk.tg"; th: "fk.th"; ti: "fk.ti"; tj: "fk.tj"; tk: "fk.tk"; tl: "fk.tl"; tm: "fk.tm"; tn: "fk.tn"; to: "fk.to"; tp: "fk.tp"; tq: "fk.tq"; tr: "fk.tr"; ts: "fk.ts"; tt: "fk.tt"; tu: "fk.tu"; tv: "fk.tv"; tw: "fk.tw"; tx: "fk.tx"; ty: "fk.ty"; tz: "fk.tz"; ua: "fk.ua"; ub: "fk.ub"; uc: "fk.uc"; ud: "fk.ud"; ue: "fk.ue"; uf: "fk.uf"; ug: "fk.ug"; uh: "fk.uh"; ui: "fk.ui"; uj: "fk.uj"; uk: "fk.uk"; ul: "fk.ul"; um: "fk.um"; un: "fk.un"; uo: "fk.uo"; up: "fk.up"; uq: "fk.uq"; ur: "fk.ur"; us: "fk.us"; ut: "fk.ut"; uu: "fk.uu"; uv: "fk.uv"; uw: "fk.uw"; ux: "fk.ux"; uy: "fk.uy"; uz: "fk.uz"; va: "fk.va"; vb: "fk.vb"; vc: "fk.vc"; vd: "fk.vd"; ve: "fk.ve"; vf: "fk.vf"; vg: "fk.vg"; vh: "fk.vh"; vi: "fk.vi"; vj: "fk.vj"; vk: "fk.vk"; vl: "fk.vl"; vm: "fk.vm"; vn: "fk.vn"; vo: "fk.vo"; vp: "fk.vp"; vq: "fk.vq"; vr: "fk.vr"; vs: "fk.vs"; vt: "fk.vt"; vu: "fk.vu"; vv: "fk.vv"; vw: "fk.vw"; vx: "fk.vx"; vy: "fk.vy"; vz: "fk.vz"; wa: "fk.wa"; wb: "fk.wb"; wc: "fk.wc"; wd: "fk.wd"; we: "fk.we"; wf: "fk.wf"; wg: "fk.wg"; wh: "fk.wh"; wi: "fk.wi"; wj: "fk.wj"; wk: "fk.wk"; wl: "fk.wl"; wm: "fk.wm"; wn: "fk.wn"; wo: "fk.wo"; wp: "fk.wp"; wq: "fk.wq"; wr: "fk.wr"; ws: "fk.ws"; wt: "fk.wt"; wu: "fk.wu"; wv: "fk.wv"; ww: "fk.ww"; wx: "fk.wx"; wy: "fk.wy"; wz: "fk.wz"; xa: "fk.xa"; xb: "fk.xb"; xc: "fk.xc"; xd: "fk.xd"; xe: "fk.xe"; xf: "fk.xf"; xg: "fk.xg"; xh: "fk.xh"; xi: "fk.xi"; xj: "fk.xj"; xk: "fk.xk"; xl: "fk.xl"; xm: "fk.xm"; xn: "fk.xn"; xo: "fk.xo"; xp: "fk.xp"; xq: "fk.xq"; xr: "fk.xr"; xs: "fk.xs"; xt: "fk.xt"; xu: "fk.xu"; xv: "fk.xv"; xw: "fk.xw"; xx: "fk.xx"; xy: "fk.xy"; xz: "fk.xz"; ya: "fk.ya"; yb: "fk.yb"; yc: "fk.yc"; yd: "fk.yd"; ye: "fk.ye"; yf: "fk.yf"; yg: "fk.yg"; yh: "fk.yh"; yi: "fk.yi"; yj: "fk.yj"; yk: "fk.yk"; yl: "fk.yl"; ym: "fk.ym"; yn: "fk.yn"; yo: "fk.yo"; yp: "fk.yp"; yq: "fk.yq"; yr: "fk.yr"; ys: "fk.ys"; yt: "fk.yt"; yu: "fk.yu"; yv: "fk.yv"; yw: "fk.yw"; yx: "fk.yx"; yy: "fk.yy"; yz: "fk.yz"; za: "fk.za"; zb: "fk.zb"; zc: "fk.zc"; zd: "fk.zd"; ze: "fk.ze"; zf: "fk.zf"; zg: "fk.zg"; zh: "fk.zh"; zi: "fk.zi"; zj: "fk.zj"; zk: "fk.zk"; zl: "fk.zl"; zm: "fk.zm"; zn: "fk.zn"; zo: "fk.zo"; zp: "fk.zp"; zq: "fk.zq"; zr: "fk.zr"; zs: "fk.zs"; zt: "fk.zt"; zu: "fk.zu"; zv: "fk.zv"; zw: "fk.zw"; zx: "fk.zx"; zy: "fk.zy"; zz: "fk.zz"; }; fl: { aa: "fl.aa"; ab: "fl.ab"; ac: "fl.ac"; ad: "fl.ad"; ae: "fl.ae"; af: "fl.af"; ag: "fl.ag"; ah: "fl.ah"; ai: "fl.ai"; aj: "fl.aj"; ak: "fl.ak"; al: "fl.al"; am: "fl.am"; an: "fl.an"; ao: "fl.ao"; ap: "fl.ap"; aq: "fl.aq"; ar: "fl.ar"; as: "fl.as"; at: "fl.at"; au: "fl.au"; av: "fl.av"; aw: "fl.aw"; ax: "fl.ax"; ay: "fl.ay"; az: "fl.az"; ba: "fl.ba"; bb: "fl.bb"; bc: "fl.bc"; bd: "fl.bd"; be: "fl.be"; bf: "fl.bf"; bg: "fl.bg"; bh: "fl.bh"; bi: "fl.bi"; bj: "fl.bj"; bk: "fl.bk"; bl: "fl.bl"; bm: "fl.bm"; bn: "fl.bn"; bo: "fl.bo"; bp: "fl.bp"; bq: "fl.bq"; br: "fl.br"; bs: "fl.bs"; bt: "fl.bt"; bu: "fl.bu"; bv: "fl.bv"; bw: "fl.bw"; bx: "fl.bx"; by: "fl.by"; bz: "fl.bz"; ca: "fl.ca"; cb: "fl.cb"; cc: "fl.cc"; cd: "fl.cd"; ce: "fl.ce"; cf: "fl.cf"; cg: "fl.cg"; ch: "fl.ch"; ci: "fl.ci"; cj: "fl.cj"; ck: "fl.ck"; cl: "fl.cl"; cm: "fl.cm"; cn: "fl.cn"; co: "fl.co"; cp: "fl.cp"; cq: "fl.cq"; cr: "fl.cr"; cs: "fl.cs"; ct: "fl.ct"; cu: "fl.cu"; cv: "fl.cv"; cw: "fl.cw"; cx: "fl.cx"; cy: "fl.cy"; cz: "fl.cz"; da: "fl.da"; db: "fl.db"; dc: "fl.dc"; dd: "fl.dd"; de: "fl.de"; df: "fl.df"; dg: "fl.dg"; dh: "fl.dh"; di: "fl.di"; dj: "fl.dj"; dk: "fl.dk"; dl: "fl.dl"; dm: "fl.dm"; dn: "fl.dn"; do: "fl.do"; dp: "fl.dp"; dq: "fl.dq"; dr: "fl.dr"; ds: "fl.ds"; dt: "fl.dt"; du: "fl.du"; dv: "fl.dv"; dw: "fl.dw"; dx: "fl.dx"; dy: "fl.dy"; dz: "fl.dz"; ea: "fl.ea"; eb: "fl.eb"; ec: "fl.ec"; ed: "fl.ed"; ee: "fl.ee"; ef: "fl.ef"; eg: "fl.eg"; eh: "fl.eh"; ei: "fl.ei"; ej: "fl.ej"; ek: "fl.ek"; el: "fl.el"; em: "fl.em"; en: "fl.en"; eo: "fl.eo"; ep: "fl.ep"; eq: "fl.eq"; er: "fl.er"; es: "fl.es"; et: "fl.et"; eu: "fl.eu"; ev: "fl.ev"; ew: "fl.ew"; ex: "fl.ex"; ey: "fl.ey"; ez: "fl.ez"; fa: "fl.fa"; fb: "fl.fb"; fc: "fl.fc"; fd: "fl.fd"; fe: "fl.fe"; ff: "fl.ff"; fg: "fl.fg"; fh: "fl.fh"; fi: "fl.fi"; fj: "fl.fj"; fk: "fl.fk"; fl: "fl.fl"; fm: "fl.fm"; fn: "fl.fn"; fo: "fl.fo"; fp: "fl.fp"; fq: "fl.fq"; fr: "fl.fr"; fs: "fl.fs"; ft: "fl.ft"; fu: "fl.fu"; fv: "fl.fv"; fw: "fl.fw"; fx: "fl.fx"; fy: "fl.fy"; fz: "fl.fz"; ga: "fl.ga"; gb: "fl.gb"; gc: "fl.gc"; gd: "fl.gd"; ge: "fl.ge"; gf: "fl.gf"; gg: "fl.gg"; gh: "fl.gh"; gi: "fl.gi"; gj: "fl.gj"; gk: "fl.gk"; gl: "fl.gl"; gm: "fl.gm"; gn: "fl.gn"; go: "fl.go"; gp: "fl.gp"; gq: "fl.gq"; gr: "fl.gr"; gs: "fl.gs"; gt: "fl.gt"; gu: "fl.gu"; gv: "fl.gv"; gw: "fl.gw"; gx: "fl.gx"; gy: "fl.gy"; gz: "fl.gz"; ha: "fl.ha"; hb: "fl.hb"; hc: "fl.hc"; hd: "fl.hd"; he: "fl.he"; hf: "fl.hf"; hg: "fl.hg"; hh: "fl.hh"; hi: "fl.hi"; hj: "fl.hj"; hk: "fl.hk"; hl: "fl.hl"; hm: "fl.hm"; hn: "fl.hn"; ho: "fl.ho"; hp: "fl.hp"; hq: "fl.hq"; hr: "fl.hr"; hs: "fl.hs"; ht: "fl.ht"; hu: "fl.hu"; hv: "fl.hv"; hw: "fl.hw"; hx: "fl.hx"; hy: "fl.hy"; hz: "fl.hz"; ia: "fl.ia"; ib: "fl.ib"; ic: "fl.ic"; id: "fl.id"; ie: "fl.ie"; if: "fl.if"; ig: "fl.ig"; ih: "fl.ih"; ii: "fl.ii"; ij: "fl.ij"; ik: "fl.ik"; il: "fl.il"; im: "fl.im"; in: "fl.in"; io: "fl.io"; ip: "fl.ip"; iq: "fl.iq"; ir: "fl.ir"; is: "fl.is"; it: "fl.it"; iu: "fl.iu"; iv: "fl.iv"; iw: "fl.iw"; ix: "fl.ix"; iy: "fl.iy"; iz: "fl.iz"; ja: "fl.ja"; jb: "fl.jb"; jc: "fl.jc"; jd: "fl.jd"; je: "fl.je"; jf: "fl.jf"; jg: "fl.jg"; jh: "fl.jh"; ji: "fl.ji"; jj: "fl.jj"; jk: "fl.jk"; jl: "fl.jl"; jm: "fl.jm"; jn: "fl.jn"; jo: "fl.jo"; jp: "fl.jp"; jq: "fl.jq"; jr: "fl.jr"; js: "fl.js"; jt: "fl.jt"; ju: "fl.ju"; jv: "fl.jv"; jw: "fl.jw"; jx: "fl.jx"; jy: "fl.jy"; jz: "fl.jz"; ka: "fl.ka"; kb: "fl.kb"; kc: "fl.kc"; kd: "fl.kd"; ke: "fl.ke"; kf: "fl.kf"; kg: "fl.kg"; kh: "fl.kh"; ki: "fl.ki"; kj: "fl.kj"; kk: "fl.kk"; kl: "fl.kl"; km: "fl.km"; kn: "fl.kn"; ko: "fl.ko"; kp: "fl.kp"; kq: "fl.kq"; kr: "fl.kr"; ks: "fl.ks"; kt: "fl.kt"; ku: "fl.ku"; kv: "fl.kv"; kw: "fl.kw"; kx: "fl.kx"; ky: "fl.ky"; kz: "fl.kz"; la: "fl.la"; lb: "fl.lb"; lc: "fl.lc"; ld: "fl.ld"; le: "fl.le"; lf: "fl.lf"; lg: "fl.lg"; lh: "fl.lh"; li: "fl.li"; lj: "fl.lj"; lk: "fl.lk"; ll: "fl.ll"; lm: "fl.lm"; ln: "fl.ln"; lo: "fl.lo"; lp: "fl.lp"; lq: "fl.lq"; lr: "fl.lr"; ls: "fl.ls"; lt: "fl.lt"; lu: "fl.lu"; lv: "fl.lv"; lw: "fl.lw"; lx: "fl.lx"; ly: "fl.ly"; lz: "fl.lz"; ma: "fl.ma"; mb: "fl.mb"; mc: "fl.mc"; md: "fl.md"; me: "fl.me"; mf: "fl.mf"; mg: "fl.mg"; mh: "fl.mh"; mi: "fl.mi"; mj: "fl.mj"; mk: "fl.mk"; ml: "fl.ml"; mm: "fl.mm"; mn: "fl.mn"; mo: "fl.mo"; mp: "fl.mp"; mq: "fl.mq"; mr: "fl.mr"; ms: "fl.ms"; mt: "fl.mt"; mu: "fl.mu"; mv: "fl.mv"; mw: "fl.mw"; mx: "fl.mx"; my: "fl.my"; mz: "fl.mz"; na: "fl.na"; nb: "fl.nb"; nc: "fl.nc"; nd: "fl.nd"; ne: "fl.ne"; nf: "fl.nf"; ng: "fl.ng"; nh: "fl.nh"; ni: "fl.ni"; nj: "fl.nj"; nk: "fl.nk"; nl: "fl.nl"; nm: "fl.nm"; nn: "fl.nn"; no: "fl.no"; np: "fl.np"; nq: "fl.nq"; nr: "fl.nr"; ns: "fl.ns"; nt: "fl.nt"; nu: "fl.nu"; nv: "fl.nv"; nw: "fl.nw"; nx: "fl.nx"; ny: "fl.ny"; nz: "fl.nz"; oa: "fl.oa"; ob: "fl.ob"; oc: "fl.oc"; od: "fl.od"; oe: "fl.oe"; of: "fl.of"; og: "fl.og"; oh: "fl.oh"; oi: "fl.oi"; oj: "fl.oj"; ok: "fl.ok"; ol: "fl.ol"; om: "fl.om"; on: "fl.on"; oo: "fl.oo"; op: "fl.op"; oq: "fl.oq"; or: "fl.or"; os: "fl.os"; ot: "fl.ot"; ou: "fl.ou"; ov: "fl.ov"; ow: "fl.ow"; ox: "fl.ox"; oy: "fl.oy"; oz: "fl.oz"; pa: "fl.pa"; pb: "fl.pb"; pc: "fl.pc"; pd: "fl.pd"; pe: "fl.pe"; pf: "fl.pf"; pg: "fl.pg"; ph: "fl.ph"; pi: "fl.pi"; pj: "fl.pj"; pk: "fl.pk"; pl: "fl.pl"; pm: "fl.pm"; pn: "fl.pn"; po: "fl.po"; pp: "fl.pp"; pq: "fl.pq"; pr: "fl.pr"; ps: "fl.ps"; pt: "fl.pt"; pu: "fl.pu"; pv: "fl.pv"; pw: "fl.pw"; px: "fl.px"; py: "fl.py"; pz: "fl.pz"; qa: "fl.qa"; qb: "fl.qb"; qc: "fl.qc"; qd: "fl.qd"; qe: "fl.qe"; qf: "fl.qf"; qg: "fl.qg"; qh: "fl.qh"; qi: "fl.qi"; qj: "fl.qj"; qk: "fl.qk"; ql: "fl.ql"; qm: "fl.qm"; qn: "fl.qn"; qo: "fl.qo"; qp: "fl.qp"; qq: "fl.qq"; qr: "fl.qr"; qs: "fl.qs"; qt: "fl.qt"; qu: "fl.qu"; qv: "fl.qv"; qw: "fl.qw"; qx: "fl.qx"; qy: "fl.qy"; qz: "fl.qz"; ra: "fl.ra"; rb: "fl.rb"; rc: "fl.rc"; rd: "fl.rd"; re: "fl.re"; rf: "fl.rf"; rg: "fl.rg"; rh: "fl.rh"; ri: "fl.ri"; rj: "fl.rj"; rk: "fl.rk"; rl: "fl.rl"; rm: "fl.rm"; rn: "fl.rn"; ro: "fl.ro"; rp: "fl.rp"; rq: "fl.rq"; rr: "fl.rr"; rs: "fl.rs"; rt: "fl.rt"; ru: "fl.ru"; rv: "fl.rv"; rw: "fl.rw"; rx: "fl.rx"; ry: "fl.ry"; rz: "fl.rz"; sa: "fl.sa"; sb: "fl.sb"; sc: "fl.sc"; sd: "fl.sd"; se: "fl.se"; sf: "fl.sf"; sg: "fl.sg"; sh: "fl.sh"; si: "fl.si"; sj: "fl.sj"; sk: "fl.sk"; sl: "fl.sl"; sm: "fl.sm"; sn: "fl.sn"; so: "fl.so"; sp: "fl.sp"; sq: "fl.sq"; sr: "fl.sr"; ss: "fl.ss"; st: "fl.st"; su: "fl.su"; sv: "fl.sv"; sw: "fl.sw"; sx: "fl.sx"; sy: "fl.sy"; sz: "fl.sz"; ta: "fl.ta"; tb: "fl.tb"; tc: "fl.tc"; td: "fl.td"; te: "fl.te"; tf: "fl.tf"; tg: "fl.tg"; th: "fl.th"; ti: "fl.ti"; tj: "fl.tj"; tk: "fl.tk"; tl: "fl.tl"; tm: "fl.tm"; tn: "fl.tn"; to: "fl.to"; tp: "fl.tp"; tq: "fl.tq"; tr: "fl.tr"; ts: "fl.ts"; tt: "fl.tt"; tu: "fl.tu"; tv: "fl.tv"; tw: "fl.tw"; tx: "fl.tx"; ty: "fl.ty"; tz: "fl.tz"; ua: "fl.ua"; ub: "fl.ub"; uc: "fl.uc"; ud: "fl.ud"; ue: "fl.ue"; uf: "fl.uf"; ug: "fl.ug"; uh: "fl.uh"; ui: "fl.ui"; uj: "fl.uj"; uk: "fl.uk"; ul: "fl.ul"; um: "fl.um"; un: "fl.un"; uo: "fl.uo"; up: "fl.up"; uq: "fl.uq"; ur: "fl.ur"; us: "fl.us"; ut: "fl.ut"; uu: "fl.uu"; uv: "fl.uv"; uw: "fl.uw"; ux: "fl.ux"; uy: "fl.uy"; uz: "fl.uz"; va: "fl.va"; vb: "fl.vb"; vc: "fl.vc"; vd: "fl.vd"; ve: "fl.ve"; vf: "fl.vf"; vg: "fl.vg"; vh: "fl.vh"; vi: "fl.vi"; vj: "fl.vj"; vk: "fl.vk"; vl: "fl.vl"; vm: "fl.vm"; vn: "fl.vn"; vo: "fl.vo"; vp: "fl.vp"; vq: "fl.vq"; vr: "fl.vr"; vs: "fl.vs"; vt: "fl.vt"; vu: "fl.vu"; vv: "fl.vv"; vw: "fl.vw"; vx: "fl.vx"; vy: "fl.vy"; vz: "fl.vz"; wa: "fl.wa"; wb: "fl.wb"; wc: "fl.wc"; wd: "fl.wd"; we: "fl.we"; wf: "fl.wf"; wg: "fl.wg"; wh: "fl.wh"; wi: "fl.wi"; wj: "fl.wj"; wk: "fl.wk"; wl: "fl.wl"; wm: "fl.wm"; wn: "fl.wn"; wo: "fl.wo"; wp: "fl.wp"; wq: "fl.wq"; wr: "fl.wr"; ws: "fl.ws"; wt: "fl.wt"; wu: "fl.wu"; wv: "fl.wv"; ww: "fl.ww"; wx: "fl.wx"; wy: "fl.wy"; wz: "fl.wz"; xa: "fl.xa"; xb: "fl.xb"; xc: "fl.xc"; xd: "fl.xd"; xe: "fl.xe"; xf: "fl.xf"; xg: "fl.xg"; xh: "fl.xh"; xi: "fl.xi"; xj: "fl.xj"; xk: "fl.xk"; xl: "fl.xl"; xm: "fl.xm"; xn: "fl.xn"; xo: "fl.xo"; xp: "fl.xp"; xq: "fl.xq"; xr: "fl.xr"; xs: "fl.xs"; xt: "fl.xt"; xu: "fl.xu"; xv: "fl.xv"; xw: "fl.xw"; xx: "fl.xx"; xy: "fl.xy"; xz: "fl.xz"; ya: "fl.ya"; yb: "fl.yb"; yc: "fl.yc"; yd: "fl.yd"; ye: "fl.ye"; yf: "fl.yf"; yg: "fl.yg"; yh: "fl.yh"; yi: "fl.yi"; yj: "fl.yj"; yk: "fl.yk"; yl: "fl.yl"; ym: "fl.ym"; yn: "fl.yn"; yo: "fl.yo"; yp: "fl.yp"; yq: "fl.yq"; yr: "fl.yr"; ys: "fl.ys"; yt: "fl.yt"; yu: "fl.yu"; yv: "fl.yv"; yw: "fl.yw"; yx: "fl.yx"; yy: "fl.yy"; yz: "fl.yz"; za: "fl.za"; zb: "fl.zb"; zc: "fl.zc"; zd: "fl.zd"; ze: "fl.ze"; zf: "fl.zf"; zg: "fl.zg"; zh: "fl.zh"; zi: "fl.zi"; zj: "fl.zj"; zk: "fl.zk"; zl: "fl.zl"; zm: "fl.zm"; zn: "fl.zn"; zo: "fl.zo"; zp: "fl.zp"; zq: "fl.zq"; zr: "fl.zr"; zs: "fl.zs"; zt: "fl.zt"; zu: "fl.zu"; zv: "fl.zv"; zw: "fl.zw"; zx: "fl.zx"; zy: "fl.zy"; zz: "fl.zz"; }; fm: { aa: "fm.aa"; ab: "fm.ab"; ac: "fm.ac"; ad: "fm.ad"; ae: "fm.ae"; af: "fm.af"; ag: "fm.ag"; ah: "fm.ah"; ai: "fm.ai"; aj: "fm.aj"; ak: "fm.ak"; al: "fm.al"; am: "fm.am"; an: "fm.an"; ao: "fm.ao"; ap: "fm.ap"; aq: "fm.aq"; ar: "fm.ar"; as: "fm.as"; at: "fm.at"; au: "fm.au"; av: "fm.av"; aw: "fm.aw"; ax: "fm.ax"; ay: "fm.ay"; az: "fm.az"; ba: "fm.ba"; bb: "fm.bb"; bc: "fm.bc"; bd: "fm.bd"; be: "fm.be"; bf: "fm.bf"; bg: "fm.bg"; bh: "fm.bh"; bi: "fm.bi"; bj: "fm.bj"; bk: "fm.bk"; bl: "fm.bl"; bm: "fm.bm"; bn: "fm.bn"; bo: "fm.bo"; bp: "fm.bp"; bq: "fm.bq"; br: "fm.br"; bs: "fm.bs"; bt: "fm.bt"; bu: "fm.bu"; bv: "fm.bv"; bw: "fm.bw"; bx: "fm.bx"; by: "fm.by"; bz: "fm.bz"; ca: "fm.ca"; cb: "fm.cb"; cc: "fm.cc"; cd: "fm.cd"; ce: "fm.ce"; cf: "fm.cf"; cg: "fm.cg"; ch: "fm.ch"; ci: "fm.ci"; cj: "fm.cj"; ck: "fm.ck"; cl: "fm.cl"; cm: "fm.cm"; cn: "fm.cn"; co: "fm.co"; cp: "fm.cp"; cq: "fm.cq"; cr: "fm.cr"; cs: "fm.cs"; ct: "fm.ct"; cu: "fm.cu"; cv: "fm.cv"; cw: "fm.cw"; cx: "fm.cx"; cy: "fm.cy"; cz: "fm.cz"; da: "fm.da"; db: "fm.db"; dc: "fm.dc"; dd: "fm.dd"; de: "fm.de"; df: "fm.df"; dg: "fm.dg"; dh: "fm.dh"; di: "fm.di"; dj: "fm.dj"; dk: "fm.dk"; dl: "fm.dl"; dm: "fm.dm"; dn: "fm.dn"; do: "fm.do"; dp: "fm.dp"; dq: "fm.dq"; dr: "fm.dr"; ds: "fm.ds"; dt: "fm.dt"; du: "fm.du"; dv: "fm.dv"; dw: "fm.dw"; dx: "fm.dx"; dy: "fm.dy"; dz: "fm.dz"; ea: "fm.ea"; eb: "fm.eb"; ec: "fm.ec"; ed: "fm.ed"; ee: "fm.ee"; ef: "fm.ef"; eg: "fm.eg"; eh: "fm.eh"; ei: "fm.ei"; ej: "fm.ej"; ek: "fm.ek"; el: "fm.el"; em: "fm.em"; en: "fm.en"; eo: "fm.eo"; ep: "fm.ep"; eq: "fm.eq"; er: "fm.er"; es: "fm.es"; et: "fm.et"; eu: "fm.eu"; ev: "fm.ev"; ew: "fm.ew"; ex: "fm.ex"; ey: "fm.ey"; ez: "fm.ez"; fa: "fm.fa"; fb: "fm.fb"; fc: "fm.fc"; fd: "fm.fd"; fe: "fm.fe"; ff: "fm.ff"; fg: "fm.fg"; fh: "fm.fh"; fi: "fm.fi"; fj: "fm.fj"; fk: "fm.fk"; fl: "fm.fl"; fm: "fm.fm"; fn: "fm.fn"; fo: "fm.fo"; fp: "fm.fp"; fq: "fm.fq"; fr: "fm.fr"; fs: "fm.fs"; ft: "fm.ft"; fu: "fm.fu"; fv: "fm.fv"; fw: "fm.fw"; fx: "fm.fx"; fy: "fm.fy"; fz: "fm.fz"; ga: "fm.ga"; gb: "fm.gb"; gc: "fm.gc"; gd: "fm.gd"; ge: "fm.ge"; gf: "fm.gf"; gg: "fm.gg"; gh: "fm.gh"; gi: "fm.gi"; gj: "fm.gj"; gk: "fm.gk"; gl: "fm.gl"; gm: "fm.gm"; gn: "fm.gn"; go: "fm.go"; gp: "fm.gp"; gq: "fm.gq"; gr: "fm.gr"; gs: "fm.gs"; gt: "fm.gt"; gu: "fm.gu"; gv: "fm.gv"; gw: "fm.gw"; gx: "fm.gx"; gy: "fm.gy"; gz: "fm.gz"; ha: "fm.ha"; hb: "fm.hb"; hc: "fm.hc"; hd: "fm.hd"; he: "fm.he"; hf: "fm.hf"; hg: "fm.hg"; hh: "fm.hh"; hi: "fm.hi"; hj: "fm.hj"; hk: "fm.hk"; hl: "fm.hl"; hm: "fm.hm"; hn: "fm.hn"; ho: "fm.ho"; hp: "fm.hp"; hq: "fm.hq"; hr: "fm.hr"; hs: "fm.hs"; ht: "fm.ht"; hu: "fm.hu"; hv: "fm.hv"; hw: "fm.hw"; hx: "fm.hx"; hy: "fm.hy"; hz: "fm.hz"; ia: "fm.ia"; ib: "fm.ib"; ic: "fm.ic"; id: "fm.id"; ie: "fm.ie"; if: "fm.if"; ig: "fm.ig"; ih: "fm.ih"; ii: "fm.ii"; ij: "fm.ij"; ik: "fm.ik"; il: "fm.il"; im: "fm.im"; in: "fm.in"; io: "fm.io"; ip: "fm.ip"; iq: "fm.iq"; ir: "fm.ir"; is: "fm.is"; it: "fm.it"; iu: "fm.iu"; iv: "fm.iv"; iw: "fm.iw"; ix: "fm.ix"; iy: "fm.iy"; iz: "fm.iz"; ja: "fm.ja"; jb: "fm.jb"; jc: "fm.jc"; jd: "fm.jd"; je: "fm.je"; jf: "fm.jf"; jg: "fm.jg"; jh: "fm.jh"; ji: "fm.ji"; jj: "fm.jj"; jk: "fm.jk"; jl: "fm.jl"; jm: "fm.jm"; jn: "fm.jn"; jo: "fm.jo"; jp: "fm.jp"; jq: "fm.jq"; jr: "fm.jr"; js: "fm.js"; jt: "fm.jt"; ju: "fm.ju"; jv: "fm.jv"; jw: "fm.jw"; jx: "fm.jx"; jy: "fm.jy"; jz: "fm.jz"; ka: "fm.ka"; kb: "fm.kb"; kc: "fm.kc"; kd: "fm.kd"; ke: "fm.ke"; kf: "fm.kf"; kg: "fm.kg"; kh: "fm.kh"; ki: "fm.ki"; kj: "fm.kj"; kk: "fm.kk"; kl: "fm.kl"; km: "fm.km"; kn: "fm.kn"; ko: "fm.ko"; kp: "fm.kp"; kq: "fm.kq"; kr: "fm.kr"; ks: "fm.ks"; kt: "fm.kt"; ku: "fm.ku"; kv: "fm.kv"; kw: "fm.kw"; kx: "fm.kx"; ky: "fm.ky"; kz: "fm.kz"; la: "fm.la"; lb: "fm.lb"; lc: "fm.lc"; ld: "fm.ld"; le: "fm.le"; lf: "fm.lf"; lg: "fm.lg"; lh: "fm.lh"; li: "fm.li"; lj: "fm.lj"; lk: "fm.lk"; ll: "fm.ll"; lm: "fm.lm"; ln: "fm.ln"; lo: "fm.lo"; lp: "fm.lp"; lq: "fm.lq"; lr: "fm.lr"; ls: "fm.ls"; lt: "fm.lt"; lu: "fm.lu"; lv: "fm.lv"; lw: "fm.lw"; lx: "fm.lx"; ly: "fm.ly"; lz: "fm.lz"; ma: "fm.ma"; mb: "fm.mb"; mc: "fm.mc"; md: "fm.md"; me: "fm.me"; mf: "fm.mf"; mg: "fm.mg"; mh: "fm.mh"; mi: "fm.mi"; mj: "fm.mj"; mk: "fm.mk"; ml: "fm.ml"; mm: "fm.mm"; mn: "fm.mn"; mo: "fm.mo"; mp: "fm.mp"; mq: "fm.mq"; mr: "fm.mr"; ms: "fm.ms"; mt: "fm.mt"; mu: "fm.mu"; mv: "fm.mv"; mw: "fm.mw"; mx: "fm.mx"; my: "fm.my"; mz: "fm.mz"; na: "fm.na"; nb: "fm.nb"; nc: "fm.nc"; nd: "fm.nd"; ne: "fm.ne"; nf: "fm.nf"; ng: "fm.ng"; nh: "fm.nh"; ni: "fm.ni"; nj: "fm.nj"; nk: "fm.nk"; nl: "fm.nl"; nm: "fm.nm"; nn: "fm.nn"; no: "fm.no"; np: "fm.np"; nq: "fm.nq"; nr: "fm.nr"; ns: "fm.ns"; nt: "fm.nt"; nu: "fm.nu"; nv: "fm.nv"; nw: "fm.nw"; nx: "fm.nx"; ny: "fm.ny"; nz: "fm.nz"; oa: "fm.oa"; ob: "fm.ob"; oc: "fm.oc"; od: "fm.od"; oe: "fm.oe"; of: "fm.of"; og: "fm.og"; oh: "fm.oh"; oi: "fm.oi"; oj: "fm.oj"; ok: "fm.ok"; ol: "fm.ol"; om: "fm.om"; on: "fm.on"; oo: "fm.oo"; op: "fm.op"; oq: "fm.oq"; or: "fm.or"; os: "fm.os"; ot: "fm.ot"; ou: "fm.ou"; ov: "fm.ov"; ow: "fm.ow"; ox: "fm.ox"; oy: "fm.oy"; oz: "fm.oz"; pa: "fm.pa"; pb: "fm.pb"; pc: "fm.pc"; pd: "fm.pd"; pe: "fm.pe"; pf: "fm.pf"; pg: "fm.pg"; ph: "fm.ph"; pi: "fm.pi"; pj: "fm.pj"; pk: "fm.pk"; pl: "fm.pl"; pm: "fm.pm"; pn: "fm.pn"; po: "fm.po"; pp: "fm.pp"; pq: "fm.pq"; pr: "fm.pr"; ps: "fm.ps"; pt: "fm.pt"; pu: "fm.pu"; pv: "fm.pv"; pw: "fm.pw"; px: "fm.px"; py: "fm.py"; pz: "fm.pz"; qa: "fm.qa"; qb: "fm.qb"; qc: "fm.qc"; qd: "fm.qd"; qe: "fm.qe"; qf: "fm.qf"; qg: "fm.qg"; qh: "fm.qh"; qi: "fm.qi"; qj: "fm.qj"; qk: "fm.qk"; ql: "fm.ql"; qm: "fm.qm"; qn: "fm.qn"; qo: "fm.qo"; qp: "fm.qp"; qq: "fm.qq"; qr: "fm.qr"; qs: "fm.qs"; qt: "fm.qt"; qu: "fm.qu"; qv: "fm.qv"; qw: "fm.qw"; qx: "fm.qx"; qy: "fm.qy"; qz: "fm.qz"; ra: "fm.ra"; rb: "fm.rb"; rc: "fm.rc"; rd: "fm.rd"; re: "fm.re"; rf: "fm.rf"; rg: "fm.rg"; rh: "fm.rh"; ri: "fm.ri"; rj: "fm.rj"; rk: "fm.rk"; rl: "fm.rl"; rm: "fm.rm"; rn: "fm.rn"; ro: "fm.ro"; rp: "fm.rp"; rq: "fm.rq"; rr: "fm.rr"; rs: "fm.rs"; rt: "fm.rt"; ru: "fm.ru"; rv: "fm.rv"; rw: "fm.rw"; rx: "fm.rx"; ry: "fm.ry"; rz: "fm.rz"; sa: "fm.sa"; sb: "fm.sb"; sc: "fm.sc"; sd: "fm.sd"; se: "fm.se"; sf: "fm.sf"; sg: "fm.sg"; sh: "fm.sh"; si: "fm.si"; sj: "fm.sj"; sk: "fm.sk"; sl: "fm.sl"; sm: "fm.sm"; sn: "fm.sn"; so: "fm.so"; sp: "fm.sp"; sq: "fm.sq"; sr: "fm.sr"; ss: "fm.ss"; st: "fm.st"; su: "fm.su"; sv: "fm.sv"; sw: "fm.sw"; sx: "fm.sx"; sy: "fm.sy"; sz: "fm.sz"; ta: "fm.ta"; tb: "fm.tb"; tc: "fm.tc"; td: "fm.td"; te: "fm.te"; tf: "fm.tf"; tg: "fm.tg"; th: "fm.th"; ti: "fm.ti"; tj: "fm.tj"; tk: "fm.tk"; tl: "fm.tl"; tm: "fm.tm"; tn: "fm.tn"; to: "fm.to"; tp: "fm.tp"; tq: "fm.tq"; tr: "fm.tr"; ts: "fm.ts"; tt: "fm.tt"; tu: "fm.tu"; tv: "fm.tv"; tw: "fm.tw"; tx: "fm.tx"; ty: "fm.ty"; tz: "fm.tz"; ua: "fm.ua"; ub: "fm.ub"; uc: "fm.uc"; ud: "fm.ud"; ue: "fm.ue"; uf: "fm.uf"; ug: "fm.ug"; uh: "fm.uh"; ui: "fm.ui"; uj: "fm.uj"; uk: "fm.uk"; ul: "fm.ul"; um: "fm.um"; un: "fm.un"; uo: "fm.uo"; up: "fm.up"; uq: "fm.uq"; ur: "fm.ur"; us: "fm.us"; ut: "fm.ut"; uu: "fm.uu"; uv: "fm.uv"; uw: "fm.uw"; ux: "fm.ux"; uy: "fm.uy"; uz: "fm.uz"; va: "fm.va"; vb: "fm.vb"; vc: "fm.vc"; vd: "fm.vd"; ve: "fm.ve"; vf: "fm.vf"; vg: "fm.vg"; vh: "fm.vh"; vi: "fm.vi"; vj: "fm.vj"; vk: "fm.vk"; vl: "fm.vl"; vm: "fm.vm"; vn: "fm.vn"; vo: "fm.vo"; vp: "fm.vp"; vq: "fm.vq"; vr: "fm.vr"; vs: "fm.vs"; vt: "fm.vt"; vu: "fm.vu"; vv: "fm.vv"; vw: "fm.vw"; vx: "fm.vx"; vy: "fm.vy"; vz: "fm.vz"; wa: "fm.wa"; wb: "fm.wb"; wc: "fm.wc"; wd: "fm.wd"; we: "fm.we"; wf: "fm.wf"; wg: "fm.wg"; wh: "fm.wh"; wi: "fm.wi"; wj: "fm.wj"; wk: "fm.wk"; wl: "fm.wl"; wm: "fm.wm"; wn: "fm.wn"; wo: "fm.wo"; wp: "fm.wp"; wq: "fm.wq"; wr: "fm.wr"; ws: "fm.ws"; wt: "fm.wt"; wu: "fm.wu"; wv: "fm.wv"; ww: "fm.ww"; wx: "fm.wx"; wy: "fm.wy"; wz: "fm.wz"; xa: "fm.xa"; xb: "fm.xb"; xc: "fm.xc"; xd: "fm.xd"; xe: "fm.xe"; xf: "fm.xf"; xg: "fm.xg"; xh: "fm.xh"; xi: "fm.xi"; xj: "fm.xj"; xk: "fm.xk"; xl: "fm.xl"; xm: "fm.xm"; xn: "fm.xn"; xo: "fm.xo"; xp: "fm.xp"; xq: "fm.xq"; xr: "fm.xr"; xs: "fm.xs"; xt: "fm.xt"; xu: "fm.xu"; xv: "fm.xv"; xw: "fm.xw"; xx: "fm.xx"; xy: "fm.xy"; xz: "fm.xz"; ya: "fm.ya"; yb: "fm.yb"; yc: "fm.yc"; yd: "fm.yd"; ye: "fm.ye"; yf: "fm.yf"; yg: "fm.yg"; yh: "fm.yh"; yi: "fm.yi"; yj: "fm.yj"; yk: "fm.yk"; yl: "fm.yl"; ym: "fm.ym"; yn: "fm.yn"; yo: "fm.yo"; yp: "fm.yp"; yq: "fm.yq"; yr: "fm.yr"; ys: "fm.ys"; yt: "fm.yt"; yu: "fm.yu"; yv: "fm.yv"; yw: "fm.yw"; yx: "fm.yx"; yy: "fm.yy"; yz: "fm.yz"; za: "fm.za"; zb: "fm.zb"; zc: "fm.zc"; zd: "fm.zd"; ze: "fm.ze"; zf: "fm.zf"; zg: "fm.zg"; zh: "fm.zh"; zi: "fm.zi"; zj: "fm.zj"; zk: "fm.zk"; zl: "fm.zl"; zm: "fm.zm"; zn: "fm.zn"; zo: "fm.zo"; zp: "fm.zp"; zq: "fm.zq"; zr: "fm.zr"; zs: "fm.zs"; zt: "fm.zt"; zu: "fm.zu"; zv: "fm.zv"; zw: "fm.zw"; zx: "fm.zx"; zy: "fm.zy"; zz: "fm.zz"; }; fn: { aa: "fn.aa"; ab: "fn.ab"; ac: "fn.ac"; ad: "fn.ad"; ae: "fn.ae"; af: "fn.af"; ag: "fn.ag"; ah: "fn.ah"; ai: "fn.ai"; aj: "fn.aj"; ak: "fn.ak"; al: "fn.al"; am: "fn.am"; an: "fn.an"; ao: "fn.ao"; ap: "fn.ap"; aq: "fn.aq"; ar: "fn.ar"; as: "fn.as"; at: "fn.at"; au: "fn.au"; av: "fn.av"; aw: "fn.aw"; ax: "fn.ax"; ay: "fn.ay"; az: "fn.az"; ba: "fn.ba"; bb: "fn.bb"; bc: "fn.bc"; bd: "fn.bd"; be: "fn.be"; bf: "fn.bf"; bg: "fn.bg"; bh: "fn.bh"; bi: "fn.bi"; bj: "fn.bj"; bk: "fn.bk"; bl: "fn.bl"; bm: "fn.bm"; bn: "fn.bn"; bo: "fn.bo"; bp: "fn.bp"; bq: "fn.bq"; br: "fn.br"; bs: "fn.bs"; bt: "fn.bt"; bu: "fn.bu"; bv: "fn.bv"; bw: "fn.bw"; bx: "fn.bx"; by: "fn.by"; bz: "fn.bz"; ca: "fn.ca"; cb: "fn.cb"; cc: "fn.cc"; cd: "fn.cd"; ce: "fn.ce"; cf: "fn.cf"; cg: "fn.cg"; ch: "fn.ch"; ci: "fn.ci"; cj: "fn.cj"; ck: "fn.ck"; cl: "fn.cl"; cm: "fn.cm"; cn: "fn.cn"; co: "fn.co"; cp: "fn.cp"; cq: "fn.cq"; cr: "fn.cr"; cs: "fn.cs"; ct: "fn.ct"; cu: "fn.cu"; cv: "fn.cv"; cw: "fn.cw"; cx: "fn.cx"; cy: "fn.cy"; cz: "fn.cz"; da: "fn.da"; db: "fn.db"; dc: "fn.dc"; dd: "fn.dd"; de: "fn.de"; df: "fn.df"; dg: "fn.dg"; dh: "fn.dh"; di: "fn.di"; dj: "fn.dj"; dk: "fn.dk"; dl: "fn.dl"; dm: "fn.dm"; dn: "fn.dn"; do: "fn.do"; dp: "fn.dp"; dq: "fn.dq"; dr: "fn.dr"; ds: "fn.ds"; dt: "fn.dt"; du: "fn.du"; dv: "fn.dv"; dw: "fn.dw"; dx: "fn.dx"; dy: "fn.dy"; dz: "fn.dz"; ea: "fn.ea"; eb: "fn.eb"; ec: "fn.ec"; ed: "fn.ed"; ee: "fn.ee"; ef: "fn.ef"; eg: "fn.eg"; eh: "fn.eh"; ei: "fn.ei"; ej: "fn.ej"; ek: "fn.ek"; el: "fn.el"; em: "fn.em"; en: "fn.en"; eo: "fn.eo"; ep: "fn.ep"; eq: "fn.eq"; er: "fn.er"; es: "fn.es"; et: "fn.et"; eu: "fn.eu"; ev: "fn.ev"; ew: "fn.ew"; ex: "fn.ex"; ey: "fn.ey"; ez: "fn.ez"; fa: "fn.fa"; fb: "fn.fb"; fc: "fn.fc"; fd: "fn.fd"; fe: "fn.fe"; ff: "fn.ff"; fg: "fn.fg"; fh: "fn.fh"; fi: "fn.fi"; fj: "fn.fj"; fk: "fn.fk"; fl: "fn.fl"; fm: "fn.fm"; fn: "fn.fn"; fo: "fn.fo"; fp: "fn.fp"; fq: "fn.fq"; fr: "fn.fr"; fs: "fn.fs"; ft: "fn.ft"; fu: "fn.fu"; fv: "fn.fv"; fw: "fn.fw"; fx: "fn.fx"; fy: "fn.fy"; fz: "fn.fz"; ga: "fn.ga"; gb: "fn.gb"; gc: "fn.gc"; gd: "fn.gd"; ge: "fn.ge"; gf: "fn.gf"; gg: "fn.gg"; gh: "fn.gh"; gi: "fn.gi"; gj: "fn.gj"; gk: "fn.gk"; gl: "fn.gl"; gm: "fn.gm"; gn: "fn.gn"; go: "fn.go"; gp: "fn.gp"; gq: "fn.gq"; gr: "fn.gr"; gs: "fn.gs"; gt: "fn.gt"; gu: "fn.gu"; gv: "fn.gv"; gw: "fn.gw"; gx: "fn.gx"; gy: "fn.gy"; gz: "fn.gz"; ha: "fn.ha"; hb: "fn.hb"; hc: "fn.hc"; hd: "fn.hd"; he: "fn.he"; hf: "fn.hf"; hg: "fn.hg"; hh: "fn.hh"; hi: "fn.hi"; hj: "fn.hj"; hk: "fn.hk"; hl: "fn.hl"; hm: "fn.hm"; hn: "fn.hn"; ho: "fn.ho"; hp: "fn.hp"; hq: "fn.hq"; hr: "fn.hr"; hs: "fn.hs"; ht: "fn.ht"; hu: "fn.hu"; hv: "fn.hv"; hw: "fn.hw"; hx: "fn.hx"; hy: "fn.hy"; hz: "fn.hz"; ia: "fn.ia"; ib: "fn.ib"; ic: "fn.ic"; id: "fn.id"; ie: "fn.ie"; if: "fn.if"; ig: "fn.ig"; ih: "fn.ih"; ii: "fn.ii"; ij: "fn.ij"; ik: "fn.ik"; il: "fn.il"; im: "fn.im"; in: "fn.in"; io: "fn.io"; ip: "fn.ip"; iq: "fn.iq"; ir: "fn.ir"; is: "fn.is"; it: "fn.it"; iu: "fn.iu"; iv: "fn.iv"; iw: "fn.iw"; ix: "fn.ix"; iy: "fn.iy"; iz: "fn.iz"; ja: "fn.ja"; jb: "fn.jb"; jc: "fn.jc"; jd: "fn.jd"; je: "fn.je"; jf: "fn.jf"; jg: "fn.jg"; jh: "fn.jh"; ji: "fn.ji"; jj: "fn.jj"; jk: "fn.jk"; jl: "fn.jl"; jm: "fn.jm"; jn: "fn.jn"; jo: "fn.jo"; jp: "fn.jp"; jq: "fn.jq"; jr: "fn.jr"; js: "fn.js"; jt: "fn.jt"; ju: "fn.ju"; jv: "fn.jv"; jw: "fn.jw"; jx: "fn.jx"; jy: "fn.jy"; jz: "fn.jz"; ka: "fn.ka"; kb: "fn.kb"; kc: "fn.kc"; kd: "fn.kd"; ke: "fn.ke"; kf: "fn.kf"; kg: "fn.kg"; kh: "fn.kh"; ki: "fn.ki"; kj: "fn.kj"; kk: "fn.kk"; kl: "fn.kl"; km: "fn.km"; kn: "fn.kn"; ko: "fn.ko"; kp: "fn.kp"; kq: "fn.kq"; kr: "fn.kr"; ks: "fn.ks"; kt: "fn.kt"; ku: "fn.ku"; kv: "fn.kv"; kw: "fn.kw"; kx: "fn.kx"; ky: "fn.ky"; kz: "fn.kz"; la: "fn.la"; lb: "fn.lb"; lc: "fn.lc"; ld: "fn.ld"; le: "fn.le"; lf: "fn.lf"; lg: "fn.lg"; lh: "fn.lh"; li: "fn.li"; lj: "fn.lj"; lk: "fn.lk"; ll: "fn.ll"; lm: "fn.lm"; ln: "fn.ln"; lo: "fn.lo"; lp: "fn.lp"; lq: "fn.lq"; lr: "fn.lr"; ls: "fn.ls"; lt: "fn.lt"; lu: "fn.lu"; lv: "fn.lv"; lw: "fn.lw"; lx: "fn.lx"; ly: "fn.ly"; lz: "fn.lz"; ma: "fn.ma"; mb: "fn.mb"; mc: "fn.mc"; md: "fn.md"; me: "fn.me"; mf: "fn.mf"; mg: "fn.mg"; mh: "fn.mh"; mi: "fn.mi"; mj: "fn.mj"; mk: "fn.mk"; ml: "fn.ml"; mm: "fn.mm"; mn: "fn.mn"; mo: "fn.mo"; mp: "fn.mp"; mq: "fn.mq"; mr: "fn.mr"; ms: "fn.ms"; mt: "fn.mt"; mu: "fn.mu"; mv: "fn.mv"; mw: "fn.mw"; mx: "fn.mx"; my: "fn.my"; mz: "fn.mz"; na: "fn.na"; nb: "fn.nb"; nc: "fn.nc"; nd: "fn.nd"; ne: "fn.ne"; nf: "fn.nf"; ng: "fn.ng"; nh: "fn.nh"; ni: "fn.ni"; nj: "fn.nj"; nk: "fn.nk"; nl: "fn.nl"; nm: "fn.nm"; nn: "fn.nn"; no: "fn.no"; np: "fn.np"; nq: "fn.nq"; nr: "fn.nr"; ns: "fn.ns"; nt: "fn.nt"; nu: "fn.nu"; nv: "fn.nv"; nw: "fn.nw"; nx: "fn.nx"; ny: "fn.ny"; nz: "fn.nz"; oa: "fn.oa"; ob: "fn.ob"; oc: "fn.oc"; od: "fn.od"; oe: "fn.oe"; of: "fn.of"; og: "fn.og"; oh: "fn.oh"; oi: "fn.oi"; oj: "fn.oj"; ok: "fn.ok"; ol: "fn.ol"; om: "fn.om"; on: "fn.on"; oo: "fn.oo"; op: "fn.op"; oq: "fn.oq"; or: "fn.or"; os: "fn.os"; ot: "fn.ot"; ou: "fn.ou"; ov: "fn.ov"; ow: "fn.ow"; ox: "fn.ox"; oy: "fn.oy"; oz: "fn.oz"; pa: "fn.pa"; pb: "fn.pb"; pc: "fn.pc"; pd: "fn.pd"; pe: "fn.pe"; pf: "fn.pf"; pg: "fn.pg"; ph: "fn.ph"; pi: "fn.pi"; pj: "fn.pj"; pk: "fn.pk"; pl: "fn.pl"; pm: "fn.pm"; pn: "fn.pn"; po: "fn.po"; pp: "fn.pp"; pq: "fn.pq"; pr: "fn.pr"; ps: "fn.ps"; pt: "fn.pt"; pu: "fn.pu"; pv: "fn.pv"; pw: "fn.pw"; px: "fn.px"; py: "fn.py"; pz: "fn.pz"; qa: "fn.qa"; qb: "fn.qb"; qc: "fn.qc"; qd: "fn.qd"; qe: "fn.qe"; qf: "fn.qf"; qg: "fn.qg"; qh: "fn.qh"; qi: "fn.qi"; qj: "fn.qj"; qk: "fn.qk"; ql: "fn.ql"; qm: "fn.qm"; qn: "fn.qn"; qo: "fn.qo"; qp: "fn.qp"; qq: "fn.qq"; qr: "fn.qr"; qs: "fn.qs"; qt: "fn.qt"; qu: "fn.qu"; qv: "fn.qv"; qw: "fn.qw"; qx: "fn.qx"; qy: "fn.qy"; qz: "fn.qz"; ra: "fn.ra"; rb: "fn.rb"; rc: "fn.rc"; rd: "fn.rd"; re: "fn.re"; rf: "fn.rf"; rg: "fn.rg"; rh: "fn.rh"; ri: "fn.ri"; rj: "fn.rj"; rk: "fn.rk"; rl: "fn.rl"; rm: "fn.rm"; rn: "fn.rn"; ro: "fn.ro"; rp: "fn.rp"; rq: "fn.rq"; rr: "fn.rr"; rs: "fn.rs"; rt: "fn.rt"; ru: "fn.ru"; rv: "fn.rv"; rw: "fn.rw"; rx: "fn.rx"; ry: "fn.ry"; rz: "fn.rz"; sa: "fn.sa"; sb: "fn.sb"; sc: "fn.sc"; sd: "fn.sd"; se: "fn.se"; sf: "fn.sf"; sg: "fn.sg"; sh: "fn.sh"; si: "fn.si"; sj: "fn.sj"; sk: "fn.sk"; sl: "fn.sl"; sm: "fn.sm"; sn: "fn.sn"; so: "fn.so"; sp: "fn.sp"; sq: "fn.sq"; sr: "fn.sr"; ss: "fn.ss"; st: "fn.st"; su: "fn.su"; sv: "fn.sv"; sw: "fn.sw"; sx: "fn.sx"; sy: "fn.sy"; sz: "fn.sz"; ta: "fn.ta"; tb: "fn.tb"; tc: "fn.tc"; td: "fn.td"; te: "fn.te"; tf: "fn.tf"; tg: "fn.tg"; th: "fn.th"; ti: "fn.ti"; tj: "fn.tj"; tk: "fn.tk"; tl: "fn.tl"; tm: "fn.tm"; tn: "fn.tn"; to: "fn.to"; tp: "fn.tp"; tq: "fn.tq"; tr: "fn.tr"; ts: "fn.ts"; tt: "fn.tt"; tu: "fn.tu"; tv: "fn.tv"; tw: "fn.tw"; tx: "fn.tx"; ty: "fn.ty"; tz: "fn.tz"; ua: "fn.ua"; ub: "fn.ub"; uc: "fn.uc"; ud: "fn.ud"; ue: "fn.ue"; uf: "fn.uf"; ug: "fn.ug"; uh: "fn.uh"; ui: "fn.ui"; uj: "fn.uj"; uk: "fn.uk"; ul: "fn.ul"; um: "fn.um"; un: "fn.un"; uo: "fn.uo"; up: "fn.up"; uq: "fn.uq"; ur: "fn.ur"; us: "fn.us"; ut: "fn.ut"; uu: "fn.uu"; uv: "fn.uv"; uw: "fn.uw"; ux: "fn.ux"; uy: "fn.uy"; uz: "fn.uz"; va: "fn.va"; vb: "fn.vb"; vc: "fn.vc"; vd: "fn.vd"; ve: "fn.ve"; vf: "fn.vf"; vg: "fn.vg"; vh: "fn.vh"; vi: "fn.vi"; vj: "fn.vj"; vk: "fn.vk"; vl: "fn.vl"; vm: "fn.vm"; vn: "fn.vn"; vo: "fn.vo"; vp: "fn.vp"; vq: "fn.vq"; vr: "fn.vr"; vs: "fn.vs"; vt: "fn.vt"; vu: "fn.vu"; vv: "fn.vv"; vw: "fn.vw"; vx: "fn.vx"; vy: "fn.vy"; vz: "fn.vz"; wa: "fn.wa"; wb: "fn.wb"; wc: "fn.wc"; wd: "fn.wd"; we: "fn.we"; wf: "fn.wf"; wg: "fn.wg"; wh: "fn.wh"; wi: "fn.wi"; wj: "fn.wj"; wk: "fn.wk"; wl: "fn.wl"; wm: "fn.wm"; wn: "fn.wn"; wo: "fn.wo"; wp: "fn.wp"; wq: "fn.wq"; wr: "fn.wr"; ws: "fn.ws"; wt: "fn.wt"; wu: "fn.wu"; wv: "fn.wv"; ww: "fn.ww"; wx: "fn.wx"; wy: "fn.wy"; wz: "fn.wz"; xa: "fn.xa"; xb: "fn.xb"; xc: "fn.xc"; xd: "fn.xd"; xe: "fn.xe"; xf: "fn.xf"; xg: "fn.xg"; xh: "fn.xh"; xi: "fn.xi"; xj: "fn.xj"; xk: "fn.xk"; xl: "fn.xl"; xm: "fn.xm"; xn: "fn.xn"; xo: "fn.xo"; xp: "fn.xp"; xq: "fn.xq"; xr: "fn.xr"; xs: "fn.xs"; xt: "fn.xt"; xu: "fn.xu"; xv: "fn.xv"; xw: "fn.xw"; xx: "fn.xx"; xy: "fn.xy"; xz: "fn.xz"; ya: "fn.ya"; yb: "fn.yb"; yc: "fn.yc"; yd: "fn.yd"; ye: "fn.ye"; yf: "fn.yf"; yg: "fn.yg"; yh: "fn.yh"; yi: "fn.yi"; yj: "fn.yj"; yk: "fn.yk"; yl: "fn.yl"; ym: "fn.ym"; yn: "fn.yn"; yo: "fn.yo"; yp: "fn.yp"; yq: "fn.yq"; yr: "fn.yr"; ys: "fn.ys"; yt: "fn.yt"; yu: "fn.yu"; yv: "fn.yv"; yw: "fn.yw"; yx: "fn.yx"; yy: "fn.yy"; yz: "fn.yz"; za: "fn.za"; zb: "fn.zb"; zc: "fn.zc"; zd: "fn.zd"; ze: "fn.ze"; zf: "fn.zf"; zg: "fn.zg"; zh: "fn.zh"; zi: "fn.zi"; zj: "fn.zj"; zk: "fn.zk"; zl: "fn.zl"; zm: "fn.zm"; zn: "fn.zn"; zo: "fn.zo"; zp: "fn.zp"; zq: "fn.zq"; zr: "fn.zr"; zs: "fn.zs"; zt: "fn.zt"; zu: "fn.zu"; zv: "fn.zv"; zw: "fn.zw"; zx: "fn.zx"; zy: "fn.zy"; zz: "fn.zz"; }; fo: { aa: "fo.aa"; ab: "fo.ab"; ac: "fo.ac"; ad: "fo.ad"; ae: "fo.ae"; af: "fo.af"; ag: "fo.ag"; ah: "fo.ah"; ai: "fo.ai"; aj: "fo.aj"; ak: "fo.ak"; al: "fo.al"; am: "fo.am"; an: "fo.an"; ao: "fo.ao"; ap: "fo.ap"; aq: "fo.aq"; ar: "fo.ar"; as: "fo.as"; at: "fo.at"; au: "fo.au"; av: "fo.av"; aw: "fo.aw"; ax: "fo.ax"; ay: "fo.ay"; az: "fo.az"; ba: "fo.ba"; bb: "fo.bb"; bc: "fo.bc"; bd: "fo.bd"; be: "fo.be"; bf: "fo.bf"; bg: "fo.bg"; bh: "fo.bh"; bi: "fo.bi"; bj: "fo.bj"; bk: "fo.bk"; bl: "fo.bl"; bm: "fo.bm"; bn: "fo.bn"; bo: "fo.bo"; bp: "fo.bp"; bq: "fo.bq"; br: "fo.br"; bs: "fo.bs"; bt: "fo.bt"; bu: "fo.bu"; bv: "fo.bv"; bw: "fo.bw"; bx: "fo.bx"; by: "fo.by"; bz: "fo.bz"; ca: "fo.ca"; cb: "fo.cb"; cc: "fo.cc"; cd: "fo.cd"; ce: "fo.ce"; cf: "fo.cf"; cg: "fo.cg"; ch: "fo.ch"; ci: "fo.ci"; cj: "fo.cj"; ck: "fo.ck"; cl: "fo.cl"; cm: "fo.cm"; cn: "fo.cn"; co: "fo.co"; cp: "fo.cp"; cq: "fo.cq"; cr: "fo.cr"; cs: "fo.cs"; ct: "fo.ct"; cu: "fo.cu"; cv: "fo.cv"; cw: "fo.cw"; cx: "fo.cx"; cy: "fo.cy"; cz: "fo.cz"; da: "fo.da"; db: "fo.db"; dc: "fo.dc"; dd: "fo.dd"; de: "fo.de"; df: "fo.df"; dg: "fo.dg"; dh: "fo.dh"; di: "fo.di"; dj: "fo.dj"; dk: "fo.dk"; dl: "fo.dl"; dm: "fo.dm"; dn: "fo.dn"; do: "fo.do"; dp: "fo.dp"; dq: "fo.dq"; dr: "fo.dr"; ds: "fo.ds"; dt: "fo.dt"; du: "fo.du"; dv: "fo.dv"; dw: "fo.dw"; dx: "fo.dx"; dy: "fo.dy"; dz: "fo.dz"; ea: "fo.ea"; eb: "fo.eb"; ec: "fo.ec"; ed: "fo.ed"; ee: "fo.ee"; ef: "fo.ef"; eg: "fo.eg"; eh: "fo.eh"; ei: "fo.ei"; ej: "fo.ej"; ek: "fo.ek"; el: "fo.el"; em: "fo.em"; en: "fo.en"; eo: "fo.eo"; ep: "fo.ep"; eq: "fo.eq"; er: "fo.er"; es: "fo.es"; et: "fo.et"; eu: "fo.eu"; ev: "fo.ev"; ew: "fo.ew"; ex: "fo.ex"; ey: "fo.ey"; ez: "fo.ez"; fa: "fo.fa"; fb: "fo.fb"; fc: "fo.fc"; fd: "fo.fd"; fe: "fo.fe"; ff: "fo.ff"; fg: "fo.fg"; fh: "fo.fh"; fi: "fo.fi"; fj: "fo.fj"; fk: "fo.fk"; fl: "fo.fl"; fm: "fo.fm"; fn: "fo.fn"; fo: "fo.fo"; fp: "fo.fp"; fq: "fo.fq"; fr: "fo.fr"; fs: "fo.fs"; ft: "fo.ft"; fu: "fo.fu"; fv: "fo.fv"; fw: "fo.fw"; fx: "fo.fx"; fy: "fo.fy"; fz: "fo.fz"; ga: "fo.ga"; gb: "fo.gb"; gc: "fo.gc"; gd: "fo.gd"; ge: "fo.ge"; gf: "fo.gf"; gg: "fo.gg"; gh: "fo.gh"; gi: "fo.gi"; gj: "fo.gj"; gk: "fo.gk"; gl: "fo.gl"; gm: "fo.gm"; gn: "fo.gn"; go: "fo.go"; gp: "fo.gp"; gq: "fo.gq"; gr: "fo.gr"; gs: "fo.gs"; gt: "fo.gt"; gu: "fo.gu"; gv: "fo.gv"; gw: "fo.gw"; gx: "fo.gx"; gy: "fo.gy"; gz: "fo.gz"; ha: "fo.ha"; hb: "fo.hb"; hc: "fo.hc"; hd: "fo.hd"; he: "fo.he"; hf: "fo.hf"; hg: "fo.hg"; hh: "fo.hh"; hi: "fo.hi"; hj: "fo.hj"; hk: "fo.hk"; hl: "fo.hl"; hm: "fo.hm"; hn: "fo.hn"; ho: "fo.ho"; hp: "fo.hp"; hq: "fo.hq"; hr: "fo.hr"; hs: "fo.hs"; ht: "fo.ht"; hu: "fo.hu"; hv: "fo.hv"; hw: "fo.hw"; hx: "fo.hx"; hy: "fo.hy"; hz: "fo.hz"; ia: "fo.ia"; ib: "fo.ib"; ic: "fo.ic"; id: "fo.id"; ie: "fo.ie"; if: "fo.if"; ig: "fo.ig"; ih: "fo.ih"; ii: "fo.ii"; ij: "fo.ij"; ik: "fo.ik"; il: "fo.il"; im: "fo.im"; in: "fo.in"; io: "fo.io"; ip: "fo.ip"; iq: "fo.iq"; ir: "fo.ir"; is: "fo.is"; it: "fo.it"; iu: "fo.iu"; iv: "fo.iv"; iw: "fo.iw"; ix: "fo.ix"; iy: "fo.iy"; iz: "fo.iz"; ja: "fo.ja"; jb: "fo.jb"; jc: "fo.jc"; jd: "fo.jd"; je: "fo.je"; jf: "fo.jf"; jg: "fo.jg"; jh: "fo.jh"; ji: "fo.ji"; jj: "fo.jj"; jk: "fo.jk"; jl: "fo.jl"; jm: "fo.jm"; jn: "fo.jn"; jo: "fo.jo"; jp: "fo.jp"; jq: "fo.jq"; jr: "fo.jr"; js: "fo.js"; jt: "fo.jt"; ju: "fo.ju"; jv: "fo.jv"; jw: "fo.jw"; jx: "fo.jx"; jy: "fo.jy"; jz: "fo.jz"; ka: "fo.ka"; kb: "fo.kb"; kc: "fo.kc"; kd: "fo.kd"; ke: "fo.ke"; kf: "fo.kf"; kg: "fo.kg"; kh: "fo.kh"; ki: "fo.ki"; kj: "fo.kj"; kk: "fo.kk"; kl: "fo.kl"; km: "fo.km"; kn: "fo.kn"; ko: "fo.ko"; kp: "fo.kp"; kq: "fo.kq"; kr: "fo.kr"; ks: "fo.ks"; kt: "fo.kt"; ku: "fo.ku"; kv: "fo.kv"; kw: "fo.kw"; kx: "fo.kx"; ky: "fo.ky"; kz: "fo.kz"; la: "fo.la"; lb: "fo.lb"; lc: "fo.lc"; ld: "fo.ld"; le: "fo.le"; lf: "fo.lf"; lg: "fo.lg"; lh: "fo.lh"; li: "fo.li"; lj: "fo.lj"; lk: "fo.lk"; ll: "fo.ll"; lm: "fo.lm"; ln: "fo.ln"; lo: "fo.lo"; lp: "fo.lp"; lq: "fo.lq"; lr: "fo.lr"; ls: "fo.ls"; lt: "fo.lt"; lu: "fo.lu"; lv: "fo.lv"; lw: "fo.lw"; lx: "fo.lx"; ly: "fo.ly"; lz: "fo.lz"; ma: "fo.ma"; mb: "fo.mb"; mc: "fo.mc"; md: "fo.md"; me: "fo.me"; mf: "fo.mf"; mg: "fo.mg"; mh: "fo.mh"; mi: "fo.mi"; mj: "fo.mj"; mk: "fo.mk"; ml: "fo.ml"; mm: "fo.mm"; mn: "fo.mn"; mo: "fo.mo"; mp: "fo.mp"; mq: "fo.mq"; mr: "fo.mr"; ms: "fo.ms"; mt: "fo.mt"; mu: "fo.mu"; mv: "fo.mv"; mw: "fo.mw"; mx: "fo.mx"; my: "fo.my"; mz: "fo.mz"; na: "fo.na"; nb: "fo.nb"; nc: "fo.nc"; nd: "fo.nd"; ne: "fo.ne"; nf: "fo.nf"; ng: "fo.ng"; nh: "fo.nh"; ni: "fo.ni"; nj: "fo.nj"; nk: "fo.nk"; nl: "fo.nl"; nm: "fo.nm"; nn: "fo.nn"; no: "fo.no"; np: "fo.np"; nq: "fo.nq"; nr: "fo.nr"; ns: "fo.ns"; nt: "fo.nt"; nu: "fo.nu"; nv: "fo.nv"; nw: "fo.nw"; nx: "fo.nx"; ny: "fo.ny"; nz: "fo.nz"; oa: "fo.oa"; ob: "fo.ob"; oc: "fo.oc"; od: "fo.od"; oe: "fo.oe"; of: "fo.of"; og: "fo.og"; oh: "fo.oh"; oi: "fo.oi"; oj: "fo.oj"; ok: "fo.ok"; ol: "fo.ol"; om: "fo.om"; on: "fo.on"; oo: "fo.oo"; op: "fo.op"; oq: "fo.oq"; or: "fo.or"; os: "fo.os"; ot: "fo.ot"; ou: "fo.ou"; ov: "fo.ov"; ow: "fo.ow"; ox: "fo.ox"; oy: "fo.oy"; oz: "fo.oz"; pa: "fo.pa"; pb: "fo.pb"; pc: "fo.pc"; pd: "fo.pd"; pe: "fo.pe"; pf: "fo.pf"; pg: "fo.pg"; ph: "fo.ph"; pi: "fo.pi"; pj: "fo.pj"; pk: "fo.pk"; pl: "fo.pl"; pm: "fo.pm"; pn: "fo.pn"; po: "fo.po"; pp: "fo.pp"; pq: "fo.pq"; pr: "fo.pr"; ps: "fo.ps"; pt: "fo.pt"; pu: "fo.pu"; pv: "fo.pv"; pw: "fo.pw"; px: "fo.px"; py: "fo.py"; pz: "fo.pz"; qa: "fo.qa"; qb: "fo.qb"; qc: "fo.qc"; qd: "fo.qd"; qe: "fo.qe"; qf: "fo.qf"; qg: "fo.qg"; qh: "fo.qh"; qi: "fo.qi"; qj: "fo.qj"; qk: "fo.qk"; ql: "fo.ql"; qm: "fo.qm"; qn: "fo.qn"; qo: "fo.qo"; qp: "fo.qp"; qq: "fo.qq"; qr: "fo.qr"; qs: "fo.qs"; qt: "fo.qt"; qu: "fo.qu"; qv: "fo.qv"; qw: "fo.qw"; qx: "fo.qx"; qy: "fo.qy"; qz: "fo.qz"; ra: "fo.ra"; rb: "fo.rb"; rc: "fo.rc"; rd: "fo.rd"; re: "fo.re"; rf: "fo.rf"; rg: "fo.rg"; rh: "fo.rh"; ri: "fo.ri"; rj: "fo.rj"; rk: "fo.rk"; rl: "fo.rl"; rm: "fo.rm"; rn: "fo.rn"; ro: "fo.ro"; rp: "fo.rp"; rq: "fo.rq"; rr: "fo.rr"; rs: "fo.rs"; rt: "fo.rt"; ru: "fo.ru"; rv: "fo.rv"; rw: "fo.rw"; rx: "fo.rx"; ry: "fo.ry"; rz: "fo.rz"; sa: "fo.sa"; sb: "fo.sb"; sc: "fo.sc"; sd: "fo.sd"; se: "fo.se"; sf: "fo.sf"; sg: "fo.sg"; sh: "fo.sh"; si: "fo.si"; sj: "fo.sj"; sk: "fo.sk"; sl: "fo.sl"; sm: "fo.sm"; sn: "fo.sn"; so: "fo.so"; sp: "fo.sp"; sq: "fo.sq"; sr: "fo.sr"; ss: "fo.ss"; st: "fo.st"; su: "fo.su"; sv: "fo.sv"; sw: "fo.sw"; sx: "fo.sx"; sy: "fo.sy"; sz: "fo.sz"; ta: "fo.ta"; tb: "fo.tb"; tc: "fo.tc"; td: "fo.td"; te: "fo.te"; tf: "fo.tf"; tg: "fo.tg"; th: "fo.th"; ti: "fo.ti"; tj: "fo.tj"; tk: "fo.tk"; tl: "fo.tl"; tm: "fo.tm"; tn: "fo.tn"; to: "fo.to"; tp: "fo.tp"; tq: "fo.tq"; tr: "fo.tr"; ts: "fo.ts"; tt: "fo.tt"; tu: "fo.tu"; tv: "fo.tv"; tw: "fo.tw"; tx: "fo.tx"; ty: "fo.ty"; tz: "fo.tz"; ua: "fo.ua"; ub: "fo.ub"; uc: "fo.uc"; ud: "fo.ud"; ue: "fo.ue"; uf: "fo.uf"; ug: "fo.ug"; uh: "fo.uh"; ui: "fo.ui"; uj: "fo.uj"; uk: "fo.uk"; ul: "fo.ul"; um: "fo.um"; un: "fo.un"; uo: "fo.uo"; up: "fo.up"; uq: "fo.uq"; ur: "fo.ur"; us: "fo.us"; ut: "fo.ut"; uu: "fo.uu"; uv: "fo.uv"; uw: "fo.uw"; ux: "fo.ux"; uy: "fo.uy"; uz: "fo.uz"; va: "fo.va"; vb: "fo.vb"; vc: "fo.vc"; vd: "fo.vd"; ve: "fo.ve"; vf: "fo.vf"; vg: "fo.vg"; vh: "fo.vh"; vi: "fo.vi"; vj: "fo.vj"; vk: "fo.vk"; vl: "fo.vl"; vm: "fo.vm"; vn: "fo.vn"; vo: "fo.vo"; vp: "fo.vp"; vq: "fo.vq"; vr: "fo.vr"; vs: "fo.vs"; vt: "fo.vt"; vu: "fo.vu"; vv: "fo.vv"; vw: "fo.vw"; vx: "fo.vx"; vy: "fo.vy"; vz: "fo.vz"; wa: "fo.wa"; wb: "fo.wb"; wc: "fo.wc"; wd: "fo.wd"; we: "fo.we"; wf: "fo.wf"; wg: "fo.wg"; wh: "fo.wh"; wi: "fo.wi"; wj: "fo.wj"; wk: "fo.wk"; wl: "fo.wl"; wm: "fo.wm"; wn: "fo.wn"; wo: "fo.wo"; wp: "fo.wp"; wq: "fo.wq"; wr: "fo.wr"; ws: "fo.ws"; wt: "fo.wt"; wu: "fo.wu"; wv: "fo.wv"; ww: "fo.ww"; wx: "fo.wx"; wy: "fo.wy"; wz: "fo.wz"; xa: "fo.xa"; xb: "fo.xb"; xc: "fo.xc"; xd: "fo.xd"; xe: "fo.xe"; xf: "fo.xf"; xg: "fo.xg"; xh: "fo.xh"; xi: "fo.xi"; xj: "fo.xj"; xk: "fo.xk"; xl: "fo.xl"; xm: "fo.xm"; xn: "fo.xn"; xo: "fo.xo"; xp: "fo.xp"; xq: "fo.xq"; xr: "fo.xr"; xs: "fo.xs"; xt: "fo.xt"; xu: "fo.xu"; xv: "fo.xv"; xw: "fo.xw"; xx: "fo.xx"; xy: "fo.xy"; xz: "fo.xz"; ya: "fo.ya"; yb: "fo.yb"; yc: "fo.yc"; yd: "fo.yd"; ye: "fo.ye"; yf: "fo.yf"; yg: "fo.yg"; yh: "fo.yh"; yi: "fo.yi"; yj: "fo.yj"; yk: "fo.yk"; yl: "fo.yl"; ym: "fo.ym"; yn: "fo.yn"; yo: "fo.yo"; yp: "fo.yp"; yq: "fo.yq"; yr: "fo.yr"; ys: "fo.ys"; yt: "fo.yt"; yu: "fo.yu"; yv: "fo.yv"; yw: "fo.yw"; yx: "fo.yx"; yy: "fo.yy"; yz: "fo.yz"; za: "fo.za"; zb: "fo.zb"; zc: "fo.zc"; zd: "fo.zd"; ze: "fo.ze"; zf: "fo.zf"; zg: "fo.zg"; zh: "fo.zh"; zi: "fo.zi"; zj: "fo.zj"; zk: "fo.zk"; zl: "fo.zl"; zm: "fo.zm"; zn: "fo.zn"; zo: "fo.zo"; zp: "fo.zp"; zq: "fo.zq"; zr: "fo.zr"; zs: "fo.zs"; zt: "fo.zt"; zu: "fo.zu"; zv: "fo.zv"; zw: "fo.zw"; zx: "fo.zx"; zy: "fo.zy"; zz: "fo.zz"; }; fp: { aa: "fp.aa"; ab: "fp.ab"; ac: "fp.ac"; ad: "fp.ad"; ae: "fp.ae"; af: "fp.af"; ag: "fp.ag"; ah: "fp.ah"; ai: "fp.ai"; aj: "fp.aj"; ak: "fp.ak"; al: "fp.al"; am: "fp.am"; an: "fp.an"; ao: "fp.ao"; ap: "fp.ap"; aq: "fp.aq"; ar: "fp.ar"; as: "fp.as"; at: "fp.at"; au: "fp.au"; av: "fp.av"; aw: "fp.aw"; ax: "fp.ax"; ay: "fp.ay"; az: "fp.az"; ba: "fp.ba"; bb: "fp.bb"; bc: "fp.bc"; bd: "fp.bd"; be: "fp.be"; bf: "fp.bf"; bg: "fp.bg"; bh: "fp.bh"; bi: "fp.bi"; bj: "fp.bj"; bk: "fp.bk"; bl: "fp.bl"; bm: "fp.bm"; bn: "fp.bn"; bo: "fp.bo"; bp: "fp.bp"; bq: "fp.bq"; br: "fp.br"; bs: "fp.bs"; bt: "fp.bt"; bu: "fp.bu"; bv: "fp.bv"; bw: "fp.bw"; bx: "fp.bx"; by: "fp.by"; bz: "fp.bz"; ca: "fp.ca"; cb: "fp.cb"; cc: "fp.cc"; cd: "fp.cd"; ce: "fp.ce"; cf: "fp.cf"; cg: "fp.cg"; ch: "fp.ch"; ci: "fp.ci"; cj: "fp.cj"; ck: "fp.ck"; cl: "fp.cl"; cm: "fp.cm"; cn: "fp.cn"; co: "fp.co"; cp: "fp.cp"; cq: "fp.cq"; cr: "fp.cr"; cs: "fp.cs"; ct: "fp.ct"; cu: "fp.cu"; cv: "fp.cv"; cw: "fp.cw"; cx: "fp.cx"; cy: "fp.cy"; cz: "fp.cz"; da: "fp.da"; db: "fp.db"; dc: "fp.dc"; dd: "fp.dd"; de: "fp.de"; df: "fp.df"; dg: "fp.dg"; dh: "fp.dh"; di: "fp.di"; dj: "fp.dj"; dk: "fp.dk"; dl: "fp.dl"; dm: "fp.dm"; dn: "fp.dn"; do: "fp.do"; dp: "fp.dp"; dq: "fp.dq"; dr: "fp.dr"; ds: "fp.ds"; dt: "fp.dt"; du: "fp.du"; dv: "fp.dv"; dw: "fp.dw"; dx: "fp.dx"; dy: "fp.dy"; dz: "fp.dz"; ea: "fp.ea"; eb: "fp.eb"; ec: "fp.ec"; ed: "fp.ed"; ee: "fp.ee"; ef: "fp.ef"; eg: "fp.eg"; eh: "fp.eh"; ei: "fp.ei"; ej: "fp.ej"; ek: "fp.ek"; el: "fp.el"; em: "fp.em"; en: "fp.en"; eo: "fp.eo"; ep: "fp.ep"; eq: "fp.eq"; er: "fp.er"; es: "fp.es"; et: "fp.et"; eu: "fp.eu"; ev: "fp.ev"; ew: "fp.ew"; ex: "fp.ex"; ey: "fp.ey"; ez: "fp.ez"; fa: "fp.fa"; fb: "fp.fb"; fc: "fp.fc"; fd: "fp.fd"; fe: "fp.fe"; ff: "fp.ff"; fg: "fp.fg"; fh: "fp.fh"; fi: "fp.fi"; fj: "fp.fj"; fk: "fp.fk"; fl: "fp.fl"; fm: "fp.fm"; fn: "fp.fn"; fo: "fp.fo"; fp: "fp.fp"; fq: "fp.fq"; fr: "fp.fr"; fs: "fp.fs"; ft: "fp.ft"; fu: "fp.fu"; fv: "fp.fv"; fw: "fp.fw"; fx: "fp.fx"; fy: "fp.fy"; fz: "fp.fz"; ga: "fp.ga"; gb: "fp.gb"; gc: "fp.gc"; gd: "fp.gd"; ge: "fp.ge"; gf: "fp.gf"; gg: "fp.gg"; gh: "fp.gh"; gi: "fp.gi"; gj: "fp.gj"; gk: "fp.gk"; gl: "fp.gl"; gm: "fp.gm"; gn: "fp.gn"; go: "fp.go"; gp: "fp.gp"; gq: "fp.gq"; gr: "fp.gr"; gs: "fp.gs"; gt: "fp.gt"; gu: "fp.gu"; gv: "fp.gv"; gw: "fp.gw"; gx: "fp.gx"; gy: "fp.gy"; gz: "fp.gz"; ha: "fp.ha"; hb: "fp.hb"; hc: "fp.hc"; hd: "fp.hd"; he: "fp.he"; hf: "fp.hf"; hg: "fp.hg"; hh: "fp.hh"; hi: "fp.hi"; hj: "fp.hj"; hk: "fp.hk"; hl: "fp.hl"; hm: "fp.hm"; hn: "fp.hn"; ho: "fp.ho"; hp: "fp.hp"; hq: "fp.hq"; hr: "fp.hr"; hs: "fp.hs"; ht: "fp.ht"; hu: "fp.hu"; hv: "fp.hv"; hw: "fp.hw"; hx: "fp.hx"; hy: "fp.hy"; hz: "fp.hz"; ia: "fp.ia"; ib: "fp.ib"; ic: "fp.ic"; id: "fp.id"; ie: "fp.ie"; if: "fp.if"; ig: "fp.ig"; ih: "fp.ih"; ii: "fp.ii"; ij: "fp.ij"; ik: "fp.ik"; il: "fp.il"; im: "fp.im"; in: "fp.in"; io: "fp.io"; ip: "fp.ip"; iq: "fp.iq"; ir: "fp.ir"; is: "fp.is"; it: "fp.it"; iu: "fp.iu"; iv: "fp.iv"; iw: "fp.iw"; ix: "fp.ix"; iy: "fp.iy"; iz: "fp.iz"; ja: "fp.ja"; jb: "fp.jb"; jc: "fp.jc"; jd: "fp.jd"; je: "fp.je"; jf: "fp.jf"; jg: "fp.jg"; jh: "fp.jh"; ji: "fp.ji"; jj: "fp.jj"; jk: "fp.jk"; jl: "fp.jl"; jm: "fp.jm"; jn: "fp.jn"; jo: "fp.jo"; jp: "fp.jp"; jq: "fp.jq"; jr: "fp.jr"; js: "fp.js"; jt: "fp.jt"; ju: "fp.ju"; jv: "fp.jv"; jw: "fp.jw"; jx: "fp.jx"; jy: "fp.jy"; jz: "fp.jz"; ka: "fp.ka"; kb: "fp.kb"; kc: "fp.kc"; kd: "fp.kd"; ke: "fp.ke"; kf: "fp.kf"; kg: "fp.kg"; kh: "fp.kh"; ki: "fp.ki"; kj: "fp.kj"; kk: "fp.kk"; kl: "fp.kl"; km: "fp.km"; kn: "fp.kn"; ko: "fp.ko"; kp: "fp.kp"; kq: "fp.kq"; kr: "fp.kr"; ks: "fp.ks"; kt: "fp.kt"; ku: "fp.ku"; kv: "fp.kv"; kw: "fp.kw"; kx: "fp.kx"; ky: "fp.ky"; kz: "fp.kz"; la: "fp.la"; lb: "fp.lb"; lc: "fp.lc"; ld: "fp.ld"; le: "fp.le"; lf: "fp.lf"; lg: "fp.lg"; lh: "fp.lh"; li: "fp.li"; lj: "fp.lj"; lk: "fp.lk"; ll: "fp.ll"; lm: "fp.lm"; ln: "fp.ln"; lo: "fp.lo"; lp: "fp.lp"; lq: "fp.lq"; lr: "fp.lr"; ls: "fp.ls"; lt: "fp.lt"; lu: "fp.lu"; lv: "fp.lv"; lw: "fp.lw"; lx: "fp.lx"; ly: "fp.ly"; lz: "fp.lz"; ma: "fp.ma"; mb: "fp.mb"; mc: "fp.mc"; md: "fp.md"; me: "fp.me"; mf: "fp.mf"; mg: "fp.mg"; mh: "fp.mh"; mi: "fp.mi"; mj: "fp.mj"; mk: "fp.mk"; ml: "fp.ml"; mm: "fp.mm"; mn: "fp.mn"; mo: "fp.mo"; mp: "fp.mp"; mq: "fp.mq"; mr: "fp.mr"; ms: "fp.ms"; mt: "fp.mt"; mu: "fp.mu"; mv: "fp.mv"; mw: "fp.mw"; mx: "fp.mx"; my: "fp.my"; mz: "fp.mz"; na: "fp.na"; nb: "fp.nb"; nc: "fp.nc"; nd: "fp.nd"; ne: "fp.ne"; nf: "fp.nf"; ng: "fp.ng"; nh: "fp.nh"; ni: "fp.ni"; nj: "fp.nj"; nk: "fp.nk"; nl: "fp.nl"; nm: "fp.nm"; nn: "fp.nn"; no: "fp.no"; np: "fp.np"; nq: "fp.nq"; nr: "fp.nr"; ns: "fp.ns"; nt: "fp.nt"; nu: "fp.nu"; nv: "fp.nv"; nw: "fp.nw"; nx: "fp.nx"; ny: "fp.ny"; nz: "fp.nz"; oa: "fp.oa"; ob: "fp.ob"; oc: "fp.oc"; od: "fp.od"; oe: "fp.oe"; of: "fp.of"; og: "fp.og"; oh: "fp.oh"; oi: "fp.oi"; oj: "fp.oj"; ok: "fp.ok"; ol: "fp.ol"; om: "fp.om"; on: "fp.on"; oo: "fp.oo"; op: "fp.op"; oq: "fp.oq"; or: "fp.or"; os: "fp.os"; ot: "fp.ot"; ou: "fp.ou"; ov: "fp.ov"; ow: "fp.ow"; ox: "fp.ox"; oy: "fp.oy"; oz: "fp.oz"; pa: "fp.pa"; pb: "fp.pb"; pc: "fp.pc"; pd: "fp.pd"; pe: "fp.pe"; pf: "fp.pf"; pg: "fp.pg"; ph: "fp.ph"; pi: "fp.pi"; pj: "fp.pj"; pk: "fp.pk"; pl: "fp.pl"; pm: "fp.pm"; pn: "fp.pn"; po: "fp.po"; pp: "fp.pp"; pq: "fp.pq"; pr: "fp.pr"; ps: "fp.ps"; pt: "fp.pt"; pu: "fp.pu"; pv: "fp.pv"; pw: "fp.pw"; px: "fp.px"; py: "fp.py"; pz: "fp.pz"; qa: "fp.qa"; qb: "fp.qb"; qc: "fp.qc"; qd: "fp.qd"; qe: "fp.qe"; qf: "fp.qf"; qg: "fp.qg"; qh: "fp.qh"; qi: "fp.qi"; qj: "fp.qj"; qk: "fp.qk"; ql: "fp.ql"; qm: "fp.qm"; qn: "fp.qn"; qo: "fp.qo"; qp: "fp.qp"; qq: "fp.qq"; qr: "fp.qr"; qs: "fp.qs"; qt: "fp.qt"; qu: "fp.qu"; qv: "fp.qv"; qw: "fp.qw"; qx: "fp.qx"; qy: "fp.qy"; qz: "fp.qz"; ra: "fp.ra"; rb: "fp.rb"; rc: "fp.rc"; rd: "fp.rd"; re: "fp.re"; rf: "fp.rf"; rg: "fp.rg"; rh: "fp.rh"; ri: "fp.ri"; rj: "fp.rj"; rk: "fp.rk"; rl: "fp.rl"; rm: "fp.rm"; rn: "fp.rn"; ro: "fp.ro"; rp: "fp.rp"; rq: "fp.rq"; rr: "fp.rr"; rs: "fp.rs"; rt: "fp.rt"; ru: "fp.ru"; rv: "fp.rv"; rw: "fp.rw"; rx: "fp.rx"; ry: "fp.ry"; rz: "fp.rz"; sa: "fp.sa"; sb: "fp.sb"; sc: "fp.sc"; sd: "fp.sd"; se: "fp.se"; sf: "fp.sf"; sg: "fp.sg"; sh: "fp.sh"; si: "fp.si"; sj: "fp.sj"; sk: "fp.sk"; sl: "fp.sl"; sm: "fp.sm"; sn: "fp.sn"; so: "fp.so"; sp: "fp.sp"; sq: "fp.sq"; sr: "fp.sr"; ss: "fp.ss"; st: "fp.st"; su: "fp.su"; sv: "fp.sv"; sw: "fp.sw"; sx: "fp.sx"; sy: "fp.sy"; sz: "fp.sz"; ta: "fp.ta"; tb: "fp.tb"; tc: "fp.tc"; td: "fp.td"; te: "fp.te"; tf: "fp.tf"; tg: "fp.tg"; th: "fp.th"; ti: "fp.ti"; tj: "fp.tj"; tk: "fp.tk"; tl: "fp.tl"; tm: "fp.tm"; tn: "fp.tn"; to: "fp.to"; tp: "fp.tp"; tq: "fp.tq"; tr: "fp.tr"; ts: "fp.ts"; tt: "fp.tt"; tu: "fp.tu"; tv: "fp.tv"; tw: "fp.tw"; tx: "fp.tx"; ty: "fp.ty"; tz: "fp.tz"; ua: "fp.ua"; ub: "fp.ub"; uc: "fp.uc"; ud: "fp.ud"; ue: "fp.ue"; uf: "fp.uf"; ug: "fp.ug"; uh: "fp.uh"; ui: "fp.ui"; uj: "fp.uj"; uk: "fp.uk"; ul: "fp.ul"; um: "fp.um"; un: "fp.un"; uo: "fp.uo"; up: "fp.up"; uq: "fp.uq"; ur: "fp.ur"; us: "fp.us"; ut: "fp.ut"; uu: "fp.uu"; uv: "fp.uv"; uw: "fp.uw"; ux: "fp.ux"; uy: "fp.uy"; uz: "fp.uz"; va: "fp.va"; vb: "fp.vb"; vc: "fp.vc"; vd: "fp.vd"; ve: "fp.ve"; vf: "fp.vf"; vg: "fp.vg"; vh: "fp.vh"; vi: "fp.vi"; vj: "fp.vj"; vk: "fp.vk"; vl: "fp.vl"; vm: "fp.vm"; vn: "fp.vn"; vo: "fp.vo"; vp: "fp.vp"; vq: "fp.vq"; vr: "fp.vr"; vs: "fp.vs"; vt: "fp.vt"; vu: "fp.vu"; vv: "fp.vv"; vw: "fp.vw"; vx: "fp.vx"; vy: "fp.vy"; vz: "fp.vz"; wa: "fp.wa"; wb: "fp.wb"; wc: "fp.wc"; wd: "fp.wd"; we: "fp.we"; wf: "fp.wf"; wg: "fp.wg"; wh: "fp.wh"; wi: "fp.wi"; wj: "fp.wj"; wk: "fp.wk"; wl: "fp.wl"; wm: "fp.wm"; wn: "fp.wn"; wo: "fp.wo"; wp: "fp.wp"; wq: "fp.wq"; wr: "fp.wr"; ws: "fp.ws"; wt: "fp.wt"; wu: "fp.wu"; wv: "fp.wv"; ww: "fp.ww"; wx: "fp.wx"; wy: "fp.wy"; wz: "fp.wz"; xa: "fp.xa"; xb: "fp.xb"; xc: "fp.xc"; xd: "fp.xd"; xe: "fp.xe"; xf: "fp.xf"; xg: "fp.xg"; xh: "fp.xh"; xi: "fp.xi"; xj: "fp.xj"; xk: "fp.xk"; xl: "fp.xl"; xm: "fp.xm"; xn: "fp.xn"; xo: "fp.xo"; xp: "fp.xp"; xq: "fp.xq"; xr: "fp.xr"; xs: "fp.xs"; xt: "fp.xt"; xu: "fp.xu"; xv: "fp.xv"; xw: "fp.xw"; xx: "fp.xx"; xy: "fp.xy"; xz: "fp.xz"; ya: "fp.ya"; yb: "fp.yb"; yc: "fp.yc"; yd: "fp.yd"; ye: "fp.ye"; yf: "fp.yf"; yg: "fp.yg"; yh: "fp.yh"; yi: "fp.yi"; yj: "fp.yj"; yk: "fp.yk"; yl: "fp.yl"; ym: "fp.ym"; yn: "fp.yn"; yo: "fp.yo"; yp: "fp.yp"; yq: "fp.yq"; yr: "fp.yr"; ys: "fp.ys"; yt: "fp.yt"; yu: "fp.yu"; yv: "fp.yv"; yw: "fp.yw"; yx: "fp.yx"; yy: "fp.yy"; yz: "fp.yz"; za: "fp.za"; zb: "fp.zb"; zc: "fp.zc"; zd: "fp.zd"; ze: "fp.ze"; zf: "fp.zf"; zg: "fp.zg"; zh: "fp.zh"; zi: "fp.zi"; zj: "fp.zj"; zk: "fp.zk"; zl: "fp.zl"; zm: "fp.zm"; zn: "fp.zn"; zo: "fp.zo"; zp: "fp.zp"; zq: "fp.zq"; zr: "fp.zr"; zs: "fp.zs"; zt: "fp.zt"; zu: "fp.zu"; zv: "fp.zv"; zw: "fp.zw"; zx: "fp.zx"; zy: "fp.zy"; zz: "fp.zz"; }; fq: { aa: "fq.aa"; ab: "fq.ab"; ac: "fq.ac"; ad: "fq.ad"; ae: "fq.ae"; af: "fq.af"; ag: "fq.ag"; ah: "fq.ah"; ai: "fq.ai"; aj: "fq.aj"; ak: "fq.ak"; al: "fq.al"; am: "fq.am"; an: "fq.an"; ao: "fq.ao"; ap: "fq.ap"; aq: "fq.aq"; ar: "fq.ar"; as: "fq.as"; at: "fq.at"; au: "fq.au"; av: "fq.av"; aw: "fq.aw"; ax: "fq.ax"; ay: "fq.ay"; az: "fq.az"; ba: "fq.ba"; bb: "fq.bb"; bc: "fq.bc"; bd: "fq.bd"; be: "fq.be"; bf: "fq.bf"; bg: "fq.bg"; bh: "fq.bh"; bi: "fq.bi"; bj: "fq.bj"; bk: "fq.bk"; bl: "fq.bl"; bm: "fq.bm"; bn: "fq.bn"; bo: "fq.bo"; bp: "fq.bp"; bq: "fq.bq"; br: "fq.br"; bs: "fq.bs"; bt: "fq.bt"; bu: "fq.bu"; bv: "fq.bv"; bw: "fq.bw"; bx: "fq.bx"; by: "fq.by"; bz: "fq.bz"; ca: "fq.ca"; cb: "fq.cb"; cc: "fq.cc"; cd: "fq.cd"; ce: "fq.ce"; cf: "fq.cf"; cg: "fq.cg"; ch: "fq.ch"; ci: "fq.ci"; cj: "fq.cj"; ck: "fq.ck"; cl: "fq.cl"; cm: "fq.cm"; cn: "fq.cn"; co: "fq.co"; cp: "fq.cp"; cq: "fq.cq"; cr: "fq.cr"; cs: "fq.cs"; ct: "fq.ct"; cu: "fq.cu"; cv: "fq.cv"; cw: "fq.cw"; cx: "fq.cx"; cy: "fq.cy"; cz: "fq.cz"; da: "fq.da"; db: "fq.db"; dc: "fq.dc"; dd: "fq.dd"; de: "fq.de"; df: "fq.df"; dg: "fq.dg"; dh: "fq.dh"; di: "fq.di"; dj: "fq.dj"; dk: "fq.dk"; dl: "fq.dl"; dm: "fq.dm"; dn: "fq.dn"; do: "fq.do"; dp: "fq.dp"; dq: "fq.dq"; dr: "fq.dr"; ds: "fq.ds"; dt: "fq.dt"; du: "fq.du"; dv: "fq.dv"; dw: "fq.dw"; dx: "fq.dx"; dy: "fq.dy"; dz: "fq.dz"; ea: "fq.ea"; eb: "fq.eb"; ec: "fq.ec"; ed: "fq.ed"; ee: "fq.ee"; ef: "fq.ef"; eg: "fq.eg"; eh: "fq.eh"; ei: "fq.ei"; ej: "fq.ej"; ek: "fq.ek"; el: "fq.el"; em: "fq.em"; en: "fq.en"; eo: "fq.eo"; ep: "fq.ep"; eq: "fq.eq"; er: "fq.er"; es: "fq.es"; et: "fq.et"; eu: "fq.eu"; ev: "fq.ev"; ew: "fq.ew"; ex: "fq.ex"; ey: "fq.ey"; ez: "fq.ez"; fa: "fq.fa"; fb: "fq.fb"; fc: "fq.fc"; fd: "fq.fd"; fe: "fq.fe"; ff: "fq.ff"; fg: "fq.fg"; fh: "fq.fh"; fi: "fq.fi"; fj: "fq.fj"; fk: "fq.fk"; fl: "fq.fl"; fm: "fq.fm"; fn: "fq.fn"; fo: "fq.fo"; fp: "fq.fp"; fq: "fq.fq"; fr: "fq.fr"; fs: "fq.fs"; ft: "fq.ft"; fu: "fq.fu"; fv: "fq.fv"; fw: "fq.fw"; fx: "fq.fx"; fy: "fq.fy"; fz: "fq.fz"; ga: "fq.ga"; gb: "fq.gb"; gc: "fq.gc"; gd: "fq.gd"; ge: "fq.ge"; gf: "fq.gf"; gg: "fq.gg"; gh: "fq.gh"; gi: "fq.gi"; gj: "fq.gj"; gk: "fq.gk"; gl: "fq.gl"; gm: "fq.gm"; gn: "fq.gn"; go: "fq.go"; gp: "fq.gp"; gq: "fq.gq"; gr: "fq.gr"; gs: "fq.gs"; gt: "fq.gt"; gu: "fq.gu"; gv: "fq.gv"; gw: "fq.gw"; gx: "fq.gx"; gy: "fq.gy"; gz: "fq.gz"; ha: "fq.ha"; hb: "fq.hb"; hc: "fq.hc"; hd: "fq.hd"; he: "fq.he"; hf: "fq.hf"; hg: "fq.hg"; hh: "fq.hh"; hi: "fq.hi"; hj: "fq.hj"; hk: "fq.hk"; hl: "fq.hl"; hm: "fq.hm"; hn: "fq.hn"; ho: "fq.ho"; hp: "fq.hp"; hq: "fq.hq"; hr: "fq.hr"; hs: "fq.hs"; ht: "fq.ht"; hu: "fq.hu"; hv: "fq.hv"; hw: "fq.hw"; hx: "fq.hx"; hy: "fq.hy"; hz: "fq.hz"; ia: "fq.ia"; ib: "fq.ib"; ic: "fq.ic"; id: "fq.id"; ie: "fq.ie"; if: "fq.if"; ig: "fq.ig"; ih: "fq.ih"; ii: "fq.ii"; ij: "fq.ij"; ik: "fq.ik"; il: "fq.il"; im: "fq.im"; in: "fq.in"; io: "fq.io"; ip: "fq.ip"; iq: "fq.iq"; ir: "fq.ir"; is: "fq.is"; it: "fq.it"; iu: "fq.iu"; iv: "fq.iv"; iw: "fq.iw"; ix: "fq.ix"; iy: "fq.iy"; iz: "fq.iz"; ja: "fq.ja"; jb: "fq.jb"; jc: "fq.jc"; jd: "fq.jd"; je: "fq.je"; jf: "fq.jf"; jg: "fq.jg"; jh: "fq.jh"; ji: "fq.ji"; jj: "fq.jj"; jk: "fq.jk"; jl: "fq.jl"; jm: "fq.jm"; jn: "fq.jn"; jo: "fq.jo"; jp: "fq.jp"; jq: "fq.jq"; jr: "fq.jr"; js: "fq.js"; jt: "fq.jt"; ju: "fq.ju"; jv: "fq.jv"; jw: "fq.jw"; jx: "fq.jx"; jy: "fq.jy"; jz: "fq.jz"; ka: "fq.ka"; kb: "fq.kb"; kc: "fq.kc"; kd: "fq.kd"; ke: "fq.ke"; kf: "fq.kf"; kg: "fq.kg"; kh: "fq.kh"; ki: "fq.ki"; kj: "fq.kj"; kk: "fq.kk"; kl: "fq.kl"; km: "fq.km"; kn: "fq.kn"; ko: "fq.ko"; kp: "fq.kp"; kq: "fq.kq"; kr: "fq.kr"; ks: "fq.ks"; kt: "fq.kt"; ku: "fq.ku"; kv: "fq.kv"; kw: "fq.kw"; kx: "fq.kx"; ky: "fq.ky"; kz: "fq.kz"; la: "fq.la"; lb: "fq.lb"; lc: "fq.lc"; ld: "fq.ld"; le: "fq.le"; lf: "fq.lf"; lg: "fq.lg"; lh: "fq.lh"; li: "fq.li"; lj: "fq.lj"; lk: "fq.lk"; ll: "fq.ll"; lm: "fq.lm"; ln: "fq.ln"; lo: "fq.lo"; lp: "fq.lp"; lq: "fq.lq"; lr: "fq.lr"; ls: "fq.ls"; lt: "fq.lt"; lu: "fq.lu"; lv: "fq.lv"; lw: "fq.lw"; lx: "fq.lx"; ly: "fq.ly"; lz: "fq.lz"; ma: "fq.ma"; mb: "fq.mb"; mc: "fq.mc"; md: "fq.md"; me: "fq.me"; mf: "fq.mf"; mg: "fq.mg"; mh: "fq.mh"; mi: "fq.mi"; mj: "fq.mj"; mk: "fq.mk"; ml: "fq.ml"; mm: "fq.mm"; mn: "fq.mn"; mo: "fq.mo"; mp: "fq.mp"; mq: "fq.mq"; mr: "fq.mr"; ms: "fq.ms"; mt: "fq.mt"; mu: "fq.mu"; mv: "fq.mv"; mw: "fq.mw"; mx: "fq.mx"; my: "fq.my"; mz: "fq.mz"; na: "fq.na"; nb: "fq.nb"; nc: "fq.nc"; nd: "fq.nd"; ne: "fq.ne"; nf: "fq.nf"; ng: "fq.ng"; nh: "fq.nh"; ni: "fq.ni"; nj: "fq.nj"; nk: "fq.nk"; nl: "fq.nl"; nm: "fq.nm"; nn: "fq.nn"; no: "fq.no"; np: "fq.np"; nq: "fq.nq"; nr: "fq.nr"; ns: "fq.ns"; nt: "fq.nt"; nu: "fq.nu"; nv: "fq.nv"; nw: "fq.nw"; nx: "fq.nx"; ny: "fq.ny"; nz: "fq.nz"; oa: "fq.oa"; ob: "fq.ob"; oc: "fq.oc"; od: "fq.od"; oe: "fq.oe"; of: "fq.of"; og: "fq.og"; oh: "fq.oh"; oi: "fq.oi"; oj: "fq.oj"; ok: "fq.ok"; ol: "fq.ol"; om: "fq.om"; on: "fq.on"; oo: "fq.oo"; op: "fq.op"; oq: "fq.oq"; or: "fq.or"; os: "fq.os"; ot: "fq.ot"; ou: "fq.ou"; ov: "fq.ov"; ow: "fq.ow"; ox: "fq.ox"; oy: "fq.oy"; oz: "fq.oz"; pa: "fq.pa"; pb: "fq.pb"; pc: "fq.pc"; pd: "fq.pd"; pe: "fq.pe"; pf: "fq.pf"; pg: "fq.pg"; ph: "fq.ph"; pi: "fq.pi"; pj: "fq.pj"; pk: "fq.pk"; pl: "fq.pl"; pm: "fq.pm"; pn: "fq.pn"; po: "fq.po"; pp: "fq.pp"; pq: "fq.pq"; pr: "fq.pr"; ps: "fq.ps"; pt: "fq.pt"; pu: "fq.pu"; pv: "fq.pv"; pw: "fq.pw"; px: "fq.px"; py: "fq.py"; pz: "fq.pz"; qa: "fq.qa"; qb: "fq.qb"; qc: "fq.qc"; qd: "fq.qd"; qe: "fq.qe"; qf: "fq.qf"; qg: "fq.qg"; qh: "fq.qh"; qi: "fq.qi"; qj: "fq.qj"; qk: "fq.qk"; ql: "fq.ql"; qm: "fq.qm"; qn: "fq.qn"; qo: "fq.qo"; qp: "fq.qp"; qq: "fq.qq"; qr: "fq.qr"; qs: "fq.qs"; qt: "fq.qt"; qu: "fq.qu"; qv: "fq.qv"; qw: "fq.qw"; qx: "fq.qx"; qy: "fq.qy"; qz: "fq.qz"; ra: "fq.ra"; rb: "fq.rb"; rc: "fq.rc"; rd: "fq.rd"; re: "fq.re"; rf: "fq.rf"; rg: "fq.rg"; rh: "fq.rh"; ri: "fq.ri"; rj: "fq.rj"; rk: "fq.rk"; rl: "fq.rl"; rm: "fq.rm"; rn: "fq.rn"; ro: "fq.ro"; rp: "fq.rp"; rq: "fq.rq"; rr: "fq.rr"; rs: "fq.rs"; rt: "fq.rt"; ru: "fq.ru"; rv: "fq.rv"; rw: "fq.rw"; rx: "fq.rx"; ry: "fq.ry"; rz: "fq.rz"; sa: "fq.sa"; sb: "fq.sb"; sc: "fq.sc"; sd: "fq.sd"; se: "fq.se"; sf: "fq.sf"; sg: "fq.sg"; sh: "fq.sh"; si: "fq.si"; sj: "fq.sj"; sk: "fq.sk"; sl: "fq.sl"; sm: "fq.sm"; sn: "fq.sn"; so: "fq.so"; sp: "fq.sp"; sq: "fq.sq"; sr: "fq.sr"; ss: "fq.ss"; st: "fq.st"; su: "fq.su"; sv: "fq.sv"; sw: "fq.sw"; sx: "fq.sx"; sy: "fq.sy"; sz: "fq.sz"; ta: "fq.ta"; tb: "fq.tb"; tc: "fq.tc"; td: "fq.td"; te: "fq.te"; tf: "fq.tf"; tg: "fq.tg"; th: "fq.th"; ti: "fq.ti"; tj: "fq.tj"; tk: "fq.tk"; tl: "fq.tl"; tm: "fq.tm"; tn: "fq.tn"; to: "fq.to"; tp: "fq.tp"; tq: "fq.tq"; tr: "fq.tr"; ts: "fq.ts"; tt: "fq.tt"; tu: "fq.tu"; tv: "fq.tv"; tw: "fq.tw"; tx: "fq.tx"; ty: "fq.ty"; tz: "fq.tz"; ua: "fq.ua"; ub: "fq.ub"; uc: "fq.uc"; ud: "fq.ud"; ue: "fq.ue"; uf: "fq.uf"; ug: "fq.ug"; uh: "fq.uh"; ui: "fq.ui"; uj: "fq.uj"; uk: "fq.uk"; ul: "fq.ul"; um: "fq.um"; un: "fq.un"; uo: "fq.uo"; up: "fq.up"; uq: "fq.uq"; ur: "fq.ur"; us: "fq.us"; ut: "fq.ut"; uu: "fq.uu"; uv: "fq.uv"; uw: "fq.uw"; ux: "fq.ux"; uy: "fq.uy"; uz: "fq.uz"; va: "fq.va"; vb: "fq.vb"; vc: "fq.vc"; vd: "fq.vd"; ve: "fq.ve"; vf: "fq.vf"; vg: "fq.vg"; vh: "fq.vh"; vi: "fq.vi"; vj: "fq.vj"; vk: "fq.vk"; vl: "fq.vl"; vm: "fq.vm"; vn: "fq.vn"; vo: "fq.vo"; vp: "fq.vp"; vq: "fq.vq"; vr: "fq.vr"; vs: "fq.vs"; vt: "fq.vt"; vu: "fq.vu"; vv: "fq.vv"; vw: "fq.vw"; vx: "fq.vx"; vy: "fq.vy"; vz: "fq.vz"; wa: "fq.wa"; wb: "fq.wb"; wc: "fq.wc"; wd: "fq.wd"; we: "fq.we"; wf: "fq.wf"; wg: "fq.wg"; wh: "fq.wh"; wi: "fq.wi"; wj: "fq.wj"; wk: "fq.wk"; wl: "fq.wl"; wm: "fq.wm"; wn: "fq.wn"; wo: "fq.wo"; wp: "fq.wp"; wq: "fq.wq"; wr: "fq.wr"; ws: "fq.ws"; wt: "fq.wt"; wu: "fq.wu"; wv: "fq.wv"; ww: "fq.ww"; wx: "fq.wx"; wy: "fq.wy"; wz: "fq.wz"; xa: "fq.xa"; xb: "fq.xb"; xc: "fq.xc"; xd: "fq.xd"; xe: "fq.xe"; xf: "fq.xf"; xg: "fq.xg"; xh: "fq.xh"; xi: "fq.xi"; xj: "fq.xj"; xk: "fq.xk"; xl: "fq.xl"; xm: "fq.xm"; xn: "fq.xn"; xo: "fq.xo"; xp: "fq.xp"; xq: "fq.xq"; xr: "fq.xr"; xs: "fq.xs"; xt: "fq.xt"; xu: "fq.xu"; xv: "fq.xv"; xw: "fq.xw"; xx: "fq.xx"; xy: "fq.xy"; xz: "fq.xz"; ya: "fq.ya"; yb: "fq.yb"; yc: "fq.yc"; yd: "fq.yd"; ye: "fq.ye"; yf: "fq.yf"; yg: "fq.yg"; yh: "fq.yh"; yi: "fq.yi"; yj: "fq.yj"; yk: "fq.yk"; yl: "fq.yl"; ym: "fq.ym"; yn: "fq.yn"; yo: "fq.yo"; yp: "fq.yp"; yq: "fq.yq"; yr: "fq.yr"; ys: "fq.ys"; yt: "fq.yt"; yu: "fq.yu"; yv: "fq.yv"; yw: "fq.yw"; yx: "fq.yx"; yy: "fq.yy"; yz: "fq.yz"; za: "fq.za"; zb: "fq.zb"; zc: "fq.zc"; zd: "fq.zd"; ze: "fq.ze"; zf: "fq.zf"; zg: "fq.zg"; zh: "fq.zh"; zi: "fq.zi"; zj: "fq.zj"; zk: "fq.zk"; zl: "fq.zl"; zm: "fq.zm"; zn: "fq.zn"; zo: "fq.zo"; zp: "fq.zp"; zq: "fq.zq"; zr: "fq.zr"; zs: "fq.zs"; zt: "fq.zt"; zu: "fq.zu"; zv: "fq.zv"; zw: "fq.zw"; zx: "fq.zx"; zy: "fq.zy"; zz: "fq.zz"; }; fr: { aa: "fr.aa"; ab: "fr.ab"; ac: "fr.ac"; ad: "fr.ad"; ae: "fr.ae"; af: "fr.af"; ag: "fr.ag"; ah: "fr.ah"; ai: "fr.ai"; aj: "fr.aj"; ak: "fr.ak"; al: "fr.al"; am: "fr.am"; an: "fr.an"; ao: "fr.ao"; ap: "fr.ap"; aq: "fr.aq"; ar: "fr.ar"; as: "fr.as"; at: "fr.at"; au: "fr.au"; av: "fr.av"; aw: "fr.aw"; ax: "fr.ax"; ay: "fr.ay"; az: "fr.az"; ba: "fr.ba"; bb: "fr.bb"; bc: "fr.bc"; bd: "fr.bd"; be: "fr.be"; bf: "fr.bf"; bg: "fr.bg"; bh: "fr.bh"; bi: "fr.bi"; bj: "fr.bj"; bk: "fr.bk"; bl: "fr.bl"; bm: "fr.bm"; bn: "fr.bn"; bo: "fr.bo"; bp: "fr.bp"; bq: "fr.bq"; br: "fr.br"; bs: "fr.bs"; bt: "fr.bt"; bu: "fr.bu"; bv: "fr.bv"; bw: "fr.bw"; bx: "fr.bx"; by: "fr.by"; bz: "fr.bz"; ca: "fr.ca"; cb: "fr.cb"; cc: "fr.cc"; cd: "fr.cd"; ce: "fr.ce"; cf: "fr.cf"; cg: "fr.cg"; ch: "fr.ch"; ci: "fr.ci"; cj: "fr.cj"; ck: "fr.ck"; cl: "fr.cl"; cm: "fr.cm"; cn: "fr.cn"; co: "fr.co"; cp: "fr.cp"; cq: "fr.cq"; cr: "fr.cr"; cs: "fr.cs"; ct: "fr.ct"; cu: "fr.cu"; cv: "fr.cv"; cw: "fr.cw"; cx: "fr.cx"; cy: "fr.cy"; cz: "fr.cz"; da: "fr.da"; db: "fr.db"; dc: "fr.dc"; dd: "fr.dd"; de: "fr.de"; df: "fr.df"; dg: "fr.dg"; dh: "fr.dh"; di: "fr.di"; dj: "fr.dj"; dk: "fr.dk"; dl: "fr.dl"; dm: "fr.dm"; dn: "fr.dn"; do: "fr.do"; dp: "fr.dp"; dq: "fr.dq"; dr: "fr.dr"; ds: "fr.ds"; dt: "fr.dt"; du: "fr.du"; dv: "fr.dv"; dw: "fr.dw"; dx: "fr.dx"; dy: "fr.dy"; dz: "fr.dz"; ea: "fr.ea"; eb: "fr.eb"; ec: "fr.ec"; ed: "fr.ed"; ee: "fr.ee"; ef: "fr.ef"; eg: "fr.eg"; eh: "fr.eh"; ei: "fr.ei"; ej: "fr.ej"; ek: "fr.ek"; el: "fr.el"; em: "fr.em"; en: "fr.en"; eo: "fr.eo"; ep: "fr.ep"; eq: "fr.eq"; er: "fr.er"; es: "fr.es"; et: "fr.et"; eu: "fr.eu"; ev: "fr.ev"; ew: "fr.ew"; ex: "fr.ex"; ey: "fr.ey"; ez: "fr.ez"; fa: "fr.fa"; fb: "fr.fb"; fc: "fr.fc"; fd: "fr.fd"; fe: "fr.fe"; ff: "fr.ff"; fg: "fr.fg"; fh: "fr.fh"; fi: "fr.fi"; fj: "fr.fj"; fk: "fr.fk"; fl: "fr.fl"; fm: "fr.fm"; fn: "fr.fn"; fo: "fr.fo"; fp: "fr.fp"; fq: "fr.fq"; fr: "fr.fr"; fs: "fr.fs"; ft: "fr.ft"; fu: "fr.fu"; fv: "fr.fv"; fw: "fr.fw"; fx: "fr.fx"; fy: "fr.fy"; fz: "fr.fz"; ga: "fr.ga"; gb: "fr.gb"; gc: "fr.gc"; gd: "fr.gd"; ge: "fr.ge"; gf: "fr.gf"; gg: "fr.gg"; gh: "fr.gh"; gi: "fr.gi"; gj: "fr.gj"; gk: "fr.gk"; gl: "fr.gl"; gm: "fr.gm"; gn: "fr.gn"; go: "fr.go"; gp: "fr.gp"; gq: "fr.gq"; gr: "fr.gr"; gs: "fr.gs"; gt: "fr.gt"; gu: "fr.gu"; gv: "fr.gv"; gw: "fr.gw"; gx: "fr.gx"; gy: "fr.gy"; gz: "fr.gz"; ha: "fr.ha"; hb: "fr.hb"; hc: "fr.hc"; hd: "fr.hd"; he: "fr.he"; hf: "fr.hf"; hg: "fr.hg"; hh: "fr.hh"; hi: "fr.hi"; hj: "fr.hj"; hk: "fr.hk"; hl: "fr.hl"; hm: "fr.hm"; hn: "fr.hn"; ho: "fr.ho"; hp: "fr.hp"; hq: "fr.hq"; hr: "fr.hr"; hs: "fr.hs"; ht: "fr.ht"; hu: "fr.hu"; hv: "fr.hv"; hw: "fr.hw"; hx: "fr.hx"; hy: "fr.hy"; hz: "fr.hz"; ia: "fr.ia"; ib: "fr.ib"; ic: "fr.ic"; id: "fr.id"; ie: "fr.ie"; if: "fr.if"; ig: "fr.ig"; ih: "fr.ih"; ii: "fr.ii"; ij: "fr.ij"; ik: "fr.ik"; il: "fr.il"; im: "fr.im"; in: "fr.in"; io: "fr.io"; ip: "fr.ip"; iq: "fr.iq"; ir: "fr.ir"; is: "fr.is"; it: "fr.it"; iu: "fr.iu"; iv: "fr.iv"; iw: "fr.iw"; ix: "fr.ix"; iy: "fr.iy"; iz: "fr.iz"; ja: "fr.ja"; jb: "fr.jb"; jc: "fr.jc"; jd: "fr.jd"; je: "fr.je"; jf: "fr.jf"; jg: "fr.jg"; jh: "fr.jh"; ji: "fr.ji"; jj: "fr.jj"; jk: "fr.jk"; jl: "fr.jl"; jm: "fr.jm"; jn: "fr.jn"; jo: "fr.jo"; jp: "fr.jp"; jq: "fr.jq"; jr: "fr.jr"; js: "fr.js"; jt: "fr.jt"; ju: "fr.ju"; jv: "fr.jv"; jw: "fr.jw"; jx: "fr.jx"; jy: "fr.jy"; jz: "fr.jz"; ka: "fr.ka"; kb: "fr.kb"; kc: "fr.kc"; kd: "fr.kd"; ke: "fr.ke"; kf: "fr.kf"; kg: "fr.kg"; kh: "fr.kh"; ki: "fr.ki"; kj: "fr.kj"; kk: "fr.kk"; kl: "fr.kl"; km: "fr.km"; kn: "fr.kn"; ko: "fr.ko"; kp: "fr.kp"; kq: "fr.kq"; kr: "fr.kr"; ks: "fr.ks"; kt: "fr.kt"; ku: "fr.ku"; kv: "fr.kv"; kw: "fr.kw"; kx: "fr.kx"; ky: "fr.ky"; kz: "fr.kz"; la: "fr.la"; lb: "fr.lb"; lc: "fr.lc"; ld: "fr.ld"; le: "fr.le"; lf: "fr.lf"; lg: "fr.lg"; lh: "fr.lh"; li: "fr.li"; lj: "fr.lj"; lk: "fr.lk"; ll: "fr.ll"; lm: "fr.lm"; ln: "fr.ln"; lo: "fr.lo"; lp: "fr.lp"; lq: "fr.lq"; lr: "fr.lr"; ls: "fr.ls"; lt: "fr.lt"; lu: "fr.lu"; lv: "fr.lv"; lw: "fr.lw"; lx: "fr.lx"; ly: "fr.ly"; lz: "fr.lz"; ma: "fr.ma"; mb: "fr.mb"; mc: "fr.mc"; md: "fr.md"; me: "fr.me"; mf: "fr.mf"; mg: "fr.mg"; mh: "fr.mh"; mi: "fr.mi"; mj: "fr.mj"; mk: "fr.mk"; ml: "fr.ml"; mm: "fr.mm"; mn: "fr.mn"; mo: "fr.mo"; mp: "fr.mp"; mq: "fr.mq"; mr: "fr.mr"; ms: "fr.ms"; mt: "fr.mt"; mu: "fr.mu"; mv: "fr.mv"; mw: "fr.mw"; mx: "fr.mx"; my: "fr.my"; mz: "fr.mz"; na: "fr.na"; nb: "fr.nb"; nc: "fr.nc"; nd: "fr.nd"; ne: "fr.ne"; nf: "fr.nf"; ng: "fr.ng"; nh: "fr.nh"; ni: "fr.ni"; nj: "fr.nj"; nk: "fr.nk"; nl: "fr.nl"; nm: "fr.nm"; nn: "fr.nn"; no: "fr.no"; np: "fr.np"; nq: "fr.nq"; nr: "fr.nr"; ns: "fr.ns"; nt: "fr.nt"; nu: "fr.nu"; nv: "fr.nv"; nw: "fr.nw"; nx: "fr.nx"; ny: "fr.ny"; nz: "fr.nz"; oa: "fr.oa"; ob: "fr.ob"; oc: "fr.oc"; od: "fr.od"; oe: "fr.oe"; of: "fr.of"; og: "fr.og"; oh: "fr.oh"; oi: "fr.oi"; oj: "fr.oj"; ok: "fr.ok"; ol: "fr.ol"; om: "fr.om"; on: "fr.on"; oo: "fr.oo"; op: "fr.op"; oq: "fr.oq"; or: "fr.or"; os: "fr.os"; ot: "fr.ot"; ou: "fr.ou"; ov: "fr.ov"; ow: "fr.ow"; ox: "fr.ox"; oy: "fr.oy"; oz: "fr.oz"; pa: "fr.pa"; pb: "fr.pb"; pc: "fr.pc"; pd: "fr.pd"; pe: "fr.pe"; pf: "fr.pf"; pg: "fr.pg"; ph: "fr.ph"; pi: "fr.pi"; pj: "fr.pj"; pk: "fr.pk"; pl: "fr.pl"; pm: "fr.pm"; pn: "fr.pn"; po: "fr.po"; pp: "fr.pp"; pq: "fr.pq"; pr: "fr.pr"; ps: "fr.ps"; pt: "fr.pt"; pu: "fr.pu"; pv: "fr.pv"; pw: "fr.pw"; px: "fr.px"; py: "fr.py"; pz: "fr.pz"; qa: "fr.qa"; qb: "fr.qb"; qc: "fr.qc"; qd: "fr.qd"; qe: "fr.qe"; qf: "fr.qf"; qg: "fr.qg"; qh: "fr.qh"; qi: "fr.qi"; qj: "fr.qj"; qk: "fr.qk"; ql: "fr.ql"; qm: "fr.qm"; qn: "fr.qn"; qo: "fr.qo"; qp: "fr.qp"; qq: "fr.qq"; qr: "fr.qr"; qs: "fr.qs"; qt: "fr.qt"; qu: "fr.qu"; qv: "fr.qv"; qw: "fr.qw"; qx: "fr.qx"; qy: "fr.qy"; qz: "fr.qz"; ra: "fr.ra"; rb: "fr.rb"; rc: "fr.rc"; rd: "fr.rd"; re: "fr.re"; rf: "fr.rf"; rg: "fr.rg"; rh: "fr.rh"; ri: "fr.ri"; rj: "fr.rj"; rk: "fr.rk"; rl: "fr.rl"; rm: "fr.rm"; rn: "fr.rn"; ro: "fr.ro"; rp: "fr.rp"; rq: "fr.rq"; rr: "fr.rr"; rs: "fr.rs"; rt: "fr.rt"; ru: "fr.ru"; rv: "fr.rv"; rw: "fr.rw"; rx: "fr.rx"; ry: "fr.ry"; rz: "fr.rz"; sa: "fr.sa"; sb: "fr.sb"; sc: "fr.sc"; sd: "fr.sd"; se: "fr.se"; sf: "fr.sf"; sg: "fr.sg"; sh: "fr.sh"; si: "fr.si"; sj: "fr.sj"; sk: "fr.sk"; sl: "fr.sl"; sm: "fr.sm"; sn: "fr.sn"; so: "fr.so"; sp: "fr.sp"; sq: "fr.sq"; sr: "fr.sr"; ss: "fr.ss"; st: "fr.st"; su: "fr.su"; sv: "fr.sv"; sw: "fr.sw"; sx: "fr.sx"; sy: "fr.sy"; sz: "fr.sz"; ta: "fr.ta"; tb: "fr.tb"; tc: "fr.tc"; td: "fr.td"; te: "fr.te"; tf: "fr.tf"; tg: "fr.tg"; th: "fr.th"; ti: "fr.ti"; tj: "fr.tj"; tk: "fr.tk"; tl: "fr.tl"; tm: "fr.tm"; tn: "fr.tn"; to: "fr.to"; tp: "fr.tp"; tq: "fr.tq"; tr: "fr.tr"; ts: "fr.ts"; tt: "fr.tt"; tu: "fr.tu"; tv: "fr.tv"; tw: "fr.tw"; tx: "fr.tx"; ty: "fr.ty"; tz: "fr.tz"; ua: "fr.ua"; ub: "fr.ub"; uc: "fr.uc"; ud: "fr.ud"; ue: "fr.ue"; uf: "fr.uf"; ug: "fr.ug"; uh: "fr.uh"; ui: "fr.ui"; uj: "fr.uj"; uk: "fr.uk"; ul: "fr.ul"; um: "fr.um"; un: "fr.un"; uo: "fr.uo"; up: "fr.up"; uq: "fr.uq"; ur: "fr.ur"; us: "fr.us"; ut: "fr.ut"; uu: "fr.uu"; uv: "fr.uv"; uw: "fr.uw"; ux: "fr.ux"; uy: "fr.uy"; uz: "fr.uz"; va: "fr.va"; vb: "fr.vb"; vc: "fr.vc"; vd: "fr.vd"; ve: "fr.ve"; vf: "fr.vf"; vg: "fr.vg"; vh: "fr.vh"; vi: "fr.vi"; ... 120 more ...; zz: "fr.zz"; }; ... 527 more ...; zz: { ...; }; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >null as any as {[K in manyprops]: {[K2 in manyprops]: `${K}.${K2}`}} : { aa: { aa: "aa.aa"; ab: "aa.ab"; ac: "aa.ac"; ad: "aa.ad"; ae: "aa.ae"; af: "aa.af"; ag: "aa.ag"; ah: "aa.ah"; ai: "aa.ai"; aj: "aa.aj"; ak: "aa.ak"; al: "aa.al"; am: "aa.am"; an: "aa.an"; ao: "aa.ao"; ap: "aa.ap"; aq: "aa.aq"; ar: "aa.ar"; as: "aa.as"; at: "aa.at"; au: "aa.au"; av: "aa.av"; aw: "aa.aw"; ax: "aa.ax"; ay: "aa.ay"; az: "aa.az"; ba: "aa.ba"; bb: "aa.bb"; bc: "aa.bc"; bd: "aa.bd"; be: "aa.be"; bf: "aa.bf"; bg: "aa.bg"; bh: "aa.bh"; bi: "aa.bi"; bj: "aa.bj"; bk: "aa.bk"; bl: "aa.bl"; bm: "aa.bm"; bn: "aa.bn"; bo: "aa.bo"; bp: "aa.bp"; bq: "aa.bq"; br: "aa.br"; bs: "aa.bs"; bt: "aa.bt"; bu: "aa.bu"; bv: "aa.bv"; bw: "aa.bw"; bx: "aa.bx"; by: "aa.by"; bz: "aa.bz"; ca: "aa.ca"; cb: "aa.cb"; cc: "aa.cc"; cd: "aa.cd"; ce: "aa.ce"; cf: "aa.cf"; cg: "aa.cg"; ch: "aa.ch"; ci: "aa.ci"; cj: "aa.cj"; ck: "aa.ck"; cl: "aa.cl"; cm: "aa.cm"; cn: "aa.cn"; co: "aa.co"; cp: "aa.cp"; cq: "aa.cq"; cr: "aa.cr"; cs: "aa.cs"; ct: "aa.ct"; cu: "aa.cu"; cv: "aa.cv"; cw: "aa.cw"; cx: "aa.cx"; cy: "aa.cy"; cz: "aa.cz"; da: "aa.da"; db: "aa.db"; dc: "aa.dc"; dd: "aa.dd"; de: "aa.de"; df: "aa.df"; dg: "aa.dg"; dh: "aa.dh"; di: "aa.di"; dj: "aa.dj"; dk: "aa.dk"; dl: "aa.dl"; dm: "aa.dm"; dn: "aa.dn"; do: "aa.do"; dp: "aa.dp"; dq: "aa.dq"; dr: "aa.dr"; ds: "aa.ds"; dt: "aa.dt"; du: "aa.du"; dv: "aa.dv"; dw: "aa.dw"; dx: "aa.dx"; dy: "aa.dy"; dz: "aa.dz"; ea: "aa.ea"; eb: "aa.eb"; ec: "aa.ec"; ed: "aa.ed"; ee: "aa.ee"; ef: "aa.ef"; eg: "aa.eg"; eh: "aa.eh"; ei: "aa.ei"; ej: "aa.ej"; ek: "aa.ek"; el: "aa.el"; em: "aa.em"; en: "aa.en"; eo: "aa.eo"; ep: "aa.ep"; eq: "aa.eq"; er: "aa.er"; es: "aa.es"; et: "aa.et"; eu: "aa.eu"; ev: "aa.ev"; ew: "aa.ew"; ex: "aa.ex"; ey: "aa.ey"; ez: "aa.ez"; fa: "aa.fa"; fb: "aa.fb"; fc: "aa.fc"; fd: "aa.fd"; fe: "aa.fe"; ff: "aa.ff"; fg: "aa.fg"; fh: "aa.fh"; fi: "aa.fi"; fj: "aa.fj"; fk: "aa.fk"; fl: "aa.fl"; fm: "aa.fm"; fn: "aa.fn"; fo: "aa.fo"; fp: "aa.fp"; fq: "aa.fq"; fr: "aa.fr"; fs: "aa.fs"; ft: "aa.ft"; fu: "aa.fu"; fv: "aa.fv"; fw: "aa.fw"; fx: "aa.fx"; fy: "aa.fy"; fz: "aa.fz"; ga: "aa.ga"; gb: "aa.gb"; gc: "aa.gc"; gd: "aa.gd"; ge: "aa.ge"; gf: "aa.gf"; gg: "aa.gg"; gh: "aa.gh"; gi: "aa.gi"; gj: "aa.gj"; gk: "aa.gk"; gl: "aa.gl"; gm: "aa.gm"; gn: "aa.gn"; go: "aa.go"; gp: "aa.gp"; gq: "aa.gq"; gr: "aa.gr"; gs: "aa.gs"; gt: "aa.gt"; gu: "aa.gu"; gv: "aa.gv"; gw: "aa.gw"; gx: "aa.gx"; gy: "aa.gy"; gz: "aa.gz"; ha: "aa.ha"; hb: "aa.hb"; hc: "aa.hc"; hd: "aa.hd"; he: "aa.he"; hf: "aa.hf"; hg: "aa.hg"; hh: "aa.hh"; hi: "aa.hi"; hj: "aa.hj"; hk: "aa.hk"; hl: "aa.hl"; hm: "aa.hm"; hn: "aa.hn"; ho: "aa.ho"; hp: "aa.hp"; hq: "aa.hq"; hr: "aa.hr"; hs: "aa.hs"; ht: "aa.ht"; hu: "aa.hu"; hv: "aa.hv"; hw: "aa.hw"; hx: "aa.hx"; hy: "aa.hy"; hz: "aa.hz"; ia: "aa.ia"; ib: "aa.ib"; ic: "aa.ic"; id: "aa.id"; ie: "aa.ie"; if: "aa.if"; ig: "aa.ig"; ih: "aa.ih"; ii: "aa.ii"; ij: "aa.ij"; ik: "aa.ik"; il: "aa.il"; im: "aa.im"; in: "aa.in"; io: "aa.io"; ip: "aa.ip"; iq: "aa.iq"; ir: "aa.ir"; is: "aa.is"; it: "aa.it"; iu: "aa.iu"; iv: "aa.iv"; iw: "aa.iw"; ix: "aa.ix"; iy: "aa.iy"; iz: "aa.iz"; ja: "aa.ja"; jb: "aa.jb"; jc: "aa.jc"; jd: "aa.jd"; je: "aa.je"; jf: "aa.jf"; jg: "aa.jg"; jh: "aa.jh"; ji: "aa.ji"; jj: "aa.jj"; jk: "aa.jk"; jl: "aa.jl"; jm: "aa.jm"; jn: "aa.jn"; jo: "aa.jo"; jp: "aa.jp"; jq: "aa.jq"; jr: "aa.jr"; js: "aa.js"; jt: "aa.jt"; ju: "aa.ju"; jv: "aa.jv"; jw: "aa.jw"; jx: "aa.jx"; jy: "aa.jy"; jz: "aa.jz"; ka: "aa.ka"; kb: "aa.kb"; kc: "aa.kc"; kd: "aa.kd"; ke: "aa.ke"; kf: "aa.kf"; kg: "aa.kg"; kh: "aa.kh"; ki: "aa.ki"; kj: "aa.kj"; kk: "aa.kk"; kl: "aa.kl"; km: "aa.km"; kn: "aa.kn"; ko: "aa.ko"; kp: "aa.kp"; kq: "aa.kq"; kr: "aa.kr"; ks: "aa.ks"; kt: "aa.kt"; ku: "aa.ku"; kv: "aa.kv"; kw: "aa.kw"; kx: "aa.kx"; ky: "aa.ky"; kz: "aa.kz"; la: "aa.la"; lb: "aa.lb"; lc: "aa.lc"; ld: "aa.ld"; le: "aa.le"; lf: "aa.lf"; lg: "aa.lg"; lh: "aa.lh"; li: "aa.li"; lj: "aa.lj"; lk: "aa.lk"; ll: "aa.ll"; lm: "aa.lm"; ln: "aa.ln"; lo: "aa.lo"; lp: "aa.lp"; lq: "aa.lq"; lr: "aa.lr"; ls: "aa.ls"; lt: "aa.lt"; lu: "aa.lu"; lv: "aa.lv"; lw: "aa.lw"; lx: "aa.lx"; ly: "aa.ly"; lz: "aa.lz"; ma: "aa.ma"; mb: "aa.mb"; mc: "aa.mc"; md: "aa.md"; me: "aa.me"; mf: "aa.mf"; mg: "aa.mg"; mh: "aa.mh"; mi: "aa.mi"; mj: "aa.mj"; mk: "aa.mk"; ml: "aa.ml"; mm: "aa.mm"; mn: "aa.mn"; mo: "aa.mo"; mp: "aa.mp"; mq: "aa.mq"; mr: "aa.mr"; ms: "aa.ms"; mt: "aa.mt"; mu: "aa.mu"; mv: "aa.mv"; mw: "aa.mw"; mx: "aa.mx"; my: "aa.my"; mz: "aa.mz"; na: "aa.na"; nb: "aa.nb"; nc: "aa.nc"; nd: "aa.nd"; ne: "aa.ne"; nf: "aa.nf"; ng: "aa.ng"; nh: "aa.nh"; ni: "aa.ni"; nj: "aa.nj"; nk: "aa.nk"; nl: "aa.nl"; nm: "aa.nm"; nn: "aa.nn"; no: "aa.no"; np: "aa.np"; nq: "aa.nq"; nr: "aa.nr"; ns: "aa.ns"; nt: "aa.nt"; nu: "aa.nu"; nv: "aa.nv"; nw: "aa.nw"; nx: "aa.nx"; ny: "aa.ny"; nz: "aa.nz"; oa: "aa.oa"; ob: "aa.ob"; oc: "aa.oc"; od: "aa.od"; oe: "aa.oe"; of: "aa.of"; og: "aa.og"; oh: "aa.oh"; oi: "aa.oi"; oj: "aa.oj"; ok: "aa.ok"; ol: "aa.ol"; om: "aa.om"; on: "aa.on"; oo: "aa.oo"; op: "aa.op"; oq: "aa.oq"; or: "aa.or"; os: "aa.os"; ot: "aa.ot"; ou: "aa.ou"; ov: "aa.ov"; ow: "aa.ow"; ox: "aa.ox"; oy: "aa.oy"; oz: "aa.oz"; pa: "aa.pa"; pb: "aa.pb"; pc: "aa.pc"; pd: "aa.pd"; pe: "aa.pe"; pf: "aa.pf"; pg: "aa.pg"; ph: "aa.ph"; pi: "aa.pi"; pj: "aa.pj"; pk: "aa.pk"; pl: "aa.pl"; pm: "aa.pm"; pn: "aa.pn"; po: "aa.po"; pp: "aa.pp"; pq: "aa.pq"; pr: "aa.pr"; ps: "aa.ps"; pt: "aa.pt"; pu: "aa.pu"; pv: "aa.pv"; pw: "aa.pw"; px: "aa.px"; py: "aa.py"; pz: "aa.pz"; qa: "aa.qa"; qb: "aa.qb"; qc: "aa.qc"; qd: "aa.qd"; qe: "aa.qe"; qf: "aa.qf"; qg: "aa.qg"; qh: "aa.qh"; qi: "aa.qi"; qj: "aa.qj"; qk: "aa.qk"; ql: "aa.ql"; qm: "aa.qm"; qn: "aa.qn"; qo: "aa.qo"; qp: "aa.qp"; qq: "aa.qq"; qr: "aa.qr"; qs: "aa.qs"; qt: "aa.qt"; qu: "aa.qu"; qv: "aa.qv"; qw: "aa.qw"; qx: "aa.qx"; qy: "aa.qy"; qz: "aa.qz"; ra: "aa.ra"; rb: "aa.rb"; rc: "aa.rc"; rd: "aa.rd"; re: "aa.re"; rf: "aa.rf"; rg: "aa.rg"; rh: "aa.rh"; ri: "aa.ri"; rj: "aa.rj"; rk: "aa.rk"; rl: "aa.rl"; rm: "aa.rm"; rn: "aa.rn"; ro: "aa.ro"; rp: "aa.rp"; rq: "aa.rq"; rr: "aa.rr"; rs: "aa.rs"; rt: "aa.rt"; ru: "aa.ru"; rv: "aa.rv"; rw: "aa.rw"; rx: "aa.rx"; ry: "aa.ry"; rz: "aa.rz"; sa: "aa.sa"; sb: "aa.sb"; sc: "aa.sc"; sd: "aa.sd"; se: "aa.se"; sf: "aa.sf"; sg: "aa.sg"; sh: "aa.sh"; si: "aa.si"; sj: "aa.sj"; sk: "aa.sk"; sl: "aa.sl"; sm: "aa.sm"; sn: "aa.sn"; so: "aa.so"; sp: "aa.sp"; sq: "aa.sq"; sr: "aa.sr"; ss: "aa.ss"; st: "aa.st"; su: "aa.su"; sv: "aa.sv"; sw: "aa.sw"; sx: "aa.sx"; sy: "aa.sy"; sz: "aa.sz"; ta: "aa.ta"; tb: "aa.tb"; tc: "aa.tc"; td: "aa.td"; te: "aa.te"; tf: "aa.tf"; tg: "aa.tg"; th: "aa.th"; ti: "aa.ti"; tj: "aa.tj"; tk: "aa.tk"; tl: "aa.tl"; tm: "aa.tm"; tn: "aa.tn"; to: "aa.to"; tp: "aa.tp"; tq: "aa.tq"; tr: "aa.tr"; ts: "aa.ts"; tt: "aa.tt"; tu: "aa.tu"; tv: "aa.tv"; tw: "aa.tw"; tx: "aa.tx"; ty: "aa.ty"; tz: "aa.tz"; ua: "aa.ua"; ub: "aa.ub"; uc: "aa.uc"; ud: "aa.ud"; ue: "aa.ue"; uf: "aa.uf"; ug: "aa.ug"; uh: "aa.uh"; ui: "aa.ui"; uj: "aa.uj"; uk: "aa.uk"; ul: "aa.ul"; um: "aa.um"; un: "aa.un"; uo: "aa.uo"; up: "aa.up"; uq: "aa.uq"; ur: "aa.ur"; us: "aa.us"; ut: "aa.ut"; uu: "aa.uu"; uv: "aa.uv"; uw: "aa.uw"; ux: "aa.ux"; uy: "aa.uy"; uz: "aa.uz"; va: "aa.va"; vb: "aa.vb"; vc: "aa.vc"; vd: "aa.vd"; ve: "aa.ve"; vf: "aa.vf"; vg: "aa.vg"; vh: "aa.vh"; vi: "aa.vi"; vj: "aa.vj"; vk: "aa.vk"; vl: "aa.vl"; vm: "aa.vm"; vn: "aa.vn"; vo: "aa.vo"; vp: "aa.vp"; vq: "aa.vq"; vr: "aa.vr"; vs: "aa.vs"; vt: "aa.vt"; vu: "aa.vu"; vv: "aa.vv"; vw: "aa.vw"; vx: "aa.vx"; vy: "aa.vy"; vz: "aa.vz"; wa: "aa.wa"; wb: "aa.wb"; wc: "aa.wc"; wd: "aa.wd"; we: "aa.we"; wf: "aa.wf"; wg: "aa.wg"; wh: "aa.wh"; wi: "aa.wi"; wj: "aa.wj"; wk: "aa.wk"; wl: "aa.wl"; wm: "aa.wm"; wn: "aa.wn"; wo: "aa.wo"; wp: "aa.wp"; wq: "aa.wq"; wr: "aa.wr"; ws: "aa.ws"; wt: "aa.wt"; wu: "aa.wu"; wv: "aa.wv"; ww: "aa.ww"; wx: "aa.wx"; wy: "aa.wy"; wz: "aa.wz"; xa: "aa.xa"; xb: "aa.xb"; xc: "aa.xc"; xd: "aa.xd"; xe: "aa.xe"; xf: "aa.xf"; xg: "aa.xg"; xh: "aa.xh"; xi: "aa.xi"; xj: "aa.xj"; xk: "aa.xk"; xl: "aa.xl"; xm: "aa.xm"; xn: "aa.xn"; xo: "aa.xo"; xp: "aa.xp"; xq: "aa.xq"; xr: "aa.xr"; xs: "aa.xs"; xt: "aa.xt"; xu: "aa.xu"; xv: "aa.xv"; xw: "aa.xw"; xx: "aa.xx"; xy: "aa.xy"; xz: "aa.xz"; ya: "aa.ya"; yb: "aa.yb"; yc: "aa.yc"; yd: "aa.yd"; ye: "aa.ye"; yf: "aa.yf"; yg: "aa.yg"; yh: "aa.yh"; yi: "aa.yi"; yj: "aa.yj"; yk: "aa.yk"; yl: "aa.yl"; ym: "aa.ym"; yn: "aa.yn"; yo: "aa.yo"; yp: "aa.yp"; yq: "aa.yq"; yr: "aa.yr"; ys: "aa.ys"; yt: "aa.yt"; yu: "aa.yu"; yv: "aa.yv"; yw: "aa.yw"; yx: "aa.yx"; yy: "aa.yy"; yz: "aa.yz"; za: "aa.za"; zb: "aa.zb"; zc: "aa.zc"; zd: "aa.zd"; ze: "aa.ze"; zf: "aa.zf"; zg: "aa.zg"; zh: "aa.zh"; zi: "aa.zi"; zj: "aa.zj"; zk: "aa.zk"; zl: "aa.zl"; zm: "aa.zm"; zn: "aa.zn"; zo: "aa.zo"; zp: "aa.zp"; zq: "aa.zq"; zr: "aa.zr"; zs: "aa.zs"; zt: "aa.zt"; zu: "aa.zu"; zv: "aa.zv"; zw: "aa.zw"; zx: "aa.zx"; zy: "aa.zy"; zz: "aa.zz"; }; ab: { aa: "ab.aa"; ab: "ab.ab"; ac: "ab.ac"; ad: "ab.ad"; ae: "ab.ae"; af: "ab.af"; ag: "ab.ag"; ah: "ab.ah"; ai: "ab.ai"; aj: "ab.aj"; ak: "ab.ak"; al: "ab.al"; am: "ab.am"; an: "ab.an"; ao: "ab.ao"; ap: "ab.ap"; aq: "ab.aq"; ar: "ab.ar"; as: "ab.as"; at: "ab.at"; au: "ab.au"; av: "ab.av"; aw: "ab.aw"; ax: "ab.ax"; ay: "ab.ay"; az: "ab.az"; ba: "ab.ba"; bb: "ab.bb"; bc: "ab.bc"; bd: "ab.bd"; be: "ab.be"; bf: "ab.bf"; bg: "ab.bg"; bh: "ab.bh"; bi: "ab.bi"; bj: "ab.bj"; bk: "ab.bk"; bl: "ab.bl"; bm: "ab.bm"; bn: "ab.bn"; bo: "ab.bo"; bp: "ab.bp"; bq: "ab.bq"; br: "ab.br"; bs: "ab.bs"; bt: "ab.bt"; bu: "ab.bu"; bv: "ab.bv"; bw: "ab.bw"; bx: "ab.bx"; by: "ab.by"; bz: "ab.bz"; ca: "ab.ca"; cb: "ab.cb"; cc: "ab.cc"; cd: "ab.cd"; ce: "ab.ce"; cf: "ab.cf"; cg: "ab.cg"; ch: "ab.ch"; ci: "ab.ci"; cj: "ab.cj"; ck: "ab.ck"; cl: "ab.cl"; cm: "ab.cm"; cn: "ab.cn"; co: "ab.co"; cp: "ab.cp"; cq: "ab.cq"; cr: "ab.cr"; cs: "ab.cs"; ct: "ab.ct"; cu: "ab.cu"; cv: "ab.cv"; cw: "ab.cw"; cx: "ab.cx"; cy: "ab.cy"; cz: "ab.cz"; da: "ab.da"; db: "ab.db"; dc: "ab.dc"; dd: "ab.dd"; de: "ab.de"; df: "ab.df"; dg: "ab.dg"; dh: "ab.dh"; di: "ab.di"; dj: "ab.dj"; dk: "ab.dk"; dl: "ab.dl"; dm: "ab.dm"; dn: "ab.dn"; do: "ab.do"; dp: "ab.dp"; dq: "ab.dq"; dr: "ab.dr"; ds: "ab.ds"; dt: "ab.dt"; du: "ab.du"; dv: "ab.dv"; dw: "ab.dw"; dx: "ab.dx"; dy: "ab.dy"; dz: "ab.dz"; ea: "ab.ea"; eb: "ab.eb"; ec: "ab.ec"; ed: "ab.ed"; ee: "ab.ee"; ef: "ab.ef"; eg: "ab.eg"; eh: "ab.eh"; ei: "ab.ei"; ej: "ab.ej"; ek: "ab.ek"; el: "ab.el"; em: "ab.em"; en: "ab.en"; eo: "ab.eo"; ep: "ab.ep"; eq: "ab.eq"; er: "ab.er"; es: "ab.es"; et: "ab.et"; eu: "ab.eu"; ev: "ab.ev"; ew: "ab.ew"; ex: "ab.ex"; ey: "ab.ey"; ez: "ab.ez"; fa: "ab.fa"; fb: "ab.fb"; fc: "ab.fc"; fd: "ab.fd"; fe: "ab.fe"; ff: "ab.ff"; fg: "ab.fg"; fh: "ab.fh"; fi: "ab.fi"; fj: "ab.fj"; fk: "ab.fk"; fl: "ab.fl"; fm: "ab.fm"; fn: "ab.fn"; fo: "ab.fo"; fp: "ab.fp"; fq: "ab.fq"; fr: "ab.fr"; fs: "ab.fs"; ft: "ab.ft"; fu: "ab.fu"; fv: "ab.fv"; fw: "ab.fw"; fx: "ab.fx"; fy: "ab.fy"; fz: "ab.fz"; ga: "ab.ga"; gb: "ab.gb"; gc: "ab.gc"; gd: "ab.gd"; ge: "ab.ge"; gf: "ab.gf"; gg: "ab.gg"; gh: "ab.gh"; gi: "ab.gi"; gj: "ab.gj"; gk: "ab.gk"; gl: "ab.gl"; gm: "ab.gm"; gn: "ab.gn"; go: "ab.go"; gp: "ab.gp"; gq: "ab.gq"; gr: "ab.gr"; gs: "ab.gs"; gt: "ab.gt"; gu: "ab.gu"; gv: "ab.gv"; gw: "ab.gw"; gx: "ab.gx"; gy: "ab.gy"; gz: "ab.gz"; ha: "ab.ha"; hb: "ab.hb"; hc: "ab.hc"; hd: "ab.hd"; he: "ab.he"; hf: "ab.hf"; hg: "ab.hg"; hh: "ab.hh"; hi: "ab.hi"; hj: "ab.hj"; hk: "ab.hk"; hl: "ab.hl"; hm: "ab.hm"; hn: "ab.hn"; ho: "ab.ho"; hp: "ab.hp"; hq: "ab.hq"; hr: "ab.hr"; hs: "ab.hs"; ht: "ab.ht"; hu: "ab.hu"; hv: "ab.hv"; hw: "ab.hw"; hx: "ab.hx"; hy: "ab.hy"; hz: "ab.hz"; ia: "ab.ia"; ib: "ab.ib"; ic: "ab.ic"; id: "ab.id"; ie: "ab.ie"; if: "ab.if"; ig: "ab.ig"; ih: "ab.ih"; ii: "ab.ii"; ij: "ab.ij"; ik: "ab.ik"; il: "ab.il"; im: "ab.im"; in: "ab.in"; io: "ab.io"; ip: "ab.ip"; iq: "ab.iq"; ir: "ab.ir"; is: "ab.is"; it: "ab.it"; iu: "ab.iu"; iv: "ab.iv"; iw: "ab.iw"; ix: "ab.ix"; iy: "ab.iy"; iz: "ab.iz"; ja: "ab.ja"; jb: "ab.jb"; jc: "ab.jc"; jd: "ab.jd"; je: "ab.je"; jf: "ab.jf"; jg: "ab.jg"; jh: "ab.jh"; ji: "ab.ji"; jj: "ab.jj"; jk: "ab.jk"; jl: "ab.jl"; jm: "ab.jm"; jn: "ab.jn"; jo: "ab.jo"; jp: "ab.jp"; jq: "ab.jq"; jr: "ab.jr"; js: "ab.js"; jt: "ab.jt"; ju: "ab.ju"; jv: "ab.jv"; jw: "ab.jw"; jx: "ab.jx"; jy: "ab.jy"; jz: "ab.jz"; ka: "ab.ka"; kb: "ab.kb"; kc: "ab.kc"; kd: "ab.kd"; ke: "ab.ke"; kf: "ab.kf"; kg: "ab.kg"; kh: "ab.kh"; ki: "ab.ki"; kj: "ab.kj"; kk: "ab.kk"; kl: "ab.kl"; km: "ab.km"; kn: "ab.kn"; ko: "ab.ko"; kp: "ab.kp"; kq: "ab.kq"; kr: "ab.kr"; ks: "ab.ks"; kt: "ab.kt"; ku: "ab.ku"; kv: "ab.kv"; kw: "ab.kw"; kx: "ab.kx"; ky: "ab.ky"; kz: "ab.kz"; la: "ab.la"; lb: "ab.lb"; lc: "ab.lc"; ld: "ab.ld"; le: "ab.le"; lf: "ab.lf"; lg: "ab.lg"; lh: "ab.lh"; li: "ab.li"; lj: "ab.lj"; lk: "ab.lk"; ll: "ab.ll"; lm: "ab.lm"; ln: "ab.ln"; lo: "ab.lo"; lp: "ab.lp"; lq: "ab.lq"; lr: "ab.lr"; ls: "ab.ls"; lt: "ab.lt"; lu: "ab.lu"; lv: "ab.lv"; lw: "ab.lw"; lx: "ab.lx"; ly: "ab.ly"; lz: "ab.lz"; ma: "ab.ma"; mb: "ab.mb"; mc: "ab.mc"; md: "ab.md"; me: "ab.me"; mf: "ab.mf"; mg: "ab.mg"; mh: "ab.mh"; mi: "ab.mi"; mj: "ab.mj"; mk: "ab.mk"; ml: "ab.ml"; mm: "ab.mm"; mn: "ab.mn"; mo: "ab.mo"; mp: "ab.mp"; mq: "ab.mq"; mr: "ab.mr"; ms: "ab.ms"; mt: "ab.mt"; mu: "ab.mu"; mv: "ab.mv"; mw: "ab.mw"; mx: "ab.mx"; my: "ab.my"; mz: "ab.mz"; na: "ab.na"; nb: "ab.nb"; nc: "ab.nc"; nd: "ab.nd"; ne: "ab.ne"; nf: "ab.nf"; ng: "ab.ng"; nh: "ab.nh"; ni: "ab.ni"; nj: "ab.nj"; nk: "ab.nk"; nl: "ab.nl"; nm: "ab.nm"; nn: "ab.nn"; no: "ab.no"; np: "ab.np"; nq: "ab.nq"; nr: "ab.nr"; ns: "ab.ns"; nt: "ab.nt"; nu: "ab.nu"; nv: "ab.nv"; nw: "ab.nw"; nx: "ab.nx"; ny: "ab.ny"; nz: "ab.nz"; oa: "ab.oa"; ob: "ab.ob"; oc: "ab.oc"; od: "ab.od"; oe: "ab.oe"; of: "ab.of"; og: "ab.og"; oh: "ab.oh"; oi: "ab.oi"; oj: "ab.oj"; ok: "ab.ok"; ol: "ab.ol"; om: "ab.om"; on: "ab.on"; oo: "ab.oo"; op: "ab.op"; oq: "ab.oq"; or: "ab.or"; os: "ab.os"; ot: "ab.ot"; ou: "ab.ou"; ov: "ab.ov"; ow: "ab.ow"; ox: "ab.ox"; oy: "ab.oy"; oz: "ab.oz"; pa: "ab.pa"; pb: "ab.pb"; pc: "ab.pc"; pd: "ab.pd"; pe: "ab.pe"; pf: "ab.pf"; pg: "ab.pg"; ph: "ab.ph"; pi: "ab.pi"; pj: "ab.pj"; pk: "ab.pk"; pl: "ab.pl"; pm: "ab.pm"; pn: "ab.pn"; po: "ab.po"; pp: "ab.pp"; pq: "ab.pq"; pr: "ab.pr"; ps: "ab.ps"; pt: "ab.pt"; pu: "ab.pu"; pv: "ab.pv"; pw: "ab.pw"; px: "ab.px"; py: "ab.py"; pz: "ab.pz"; qa: "ab.qa"; qb: "ab.qb"; qc: "ab.qc"; qd: "ab.qd"; qe: "ab.qe"; qf: "ab.qf"; qg: "ab.qg"; qh: "ab.qh"; qi: "ab.qi"; qj: "ab.qj"; qk: "ab.qk"; ql: "ab.ql"; qm: "ab.qm"; qn: "ab.qn"; qo: "ab.qo"; qp: "ab.qp"; qq: "ab.qq"; qr: "ab.qr"; qs: "ab.qs"; qt: "ab.qt"; qu: "ab.qu"; qv: "ab.qv"; qw: "ab.qw"; qx: "ab.qx"; qy: "ab.qy"; qz: "ab.qz"; ra: "ab.ra"; rb: "ab.rb"; rc: "ab.rc"; rd: "ab.rd"; re: "ab.re"; rf: "ab.rf"; rg: "ab.rg"; rh: "ab.rh"; ri: "ab.ri"; rj: "ab.rj"; rk: "ab.rk"; rl: "ab.rl"; rm: "ab.rm"; rn: "ab.rn"; ro: "ab.ro"; rp: "ab.rp"; rq: "ab.rq"; rr: "ab.rr"; rs: "ab.rs"; rt: "ab.rt"; ru: "ab.ru"; rv: "ab.rv"; rw: "ab.rw"; rx: "ab.rx"; ry: "ab.ry"; rz: "ab.rz"; sa: "ab.sa"; sb: "ab.sb"; sc: "ab.sc"; sd: "ab.sd"; se: "ab.se"; sf: "ab.sf"; sg: "ab.sg"; sh: "ab.sh"; si: "ab.si"; sj: "ab.sj"; sk: "ab.sk"; sl: "ab.sl"; sm: "ab.sm"; sn: "ab.sn"; so: "ab.so"; sp: "ab.sp"; sq: "ab.sq"; sr: "ab.sr"; ss: "ab.ss"; st: "ab.st"; su: "ab.su"; sv: "ab.sv"; sw: "ab.sw"; sx: "ab.sx"; sy: "ab.sy"; sz: "ab.sz"; ta: "ab.ta"; tb: "ab.tb"; tc: "ab.tc"; td: "ab.td"; te: "ab.te"; tf: "ab.tf"; tg: "ab.tg"; th: "ab.th"; ti: "ab.ti"; tj: "ab.tj"; tk: "ab.tk"; tl: "ab.tl"; tm: "ab.tm"; tn: "ab.tn"; to: "ab.to"; tp: "ab.tp"; tq: "ab.tq"; tr: "ab.tr"; ts: "ab.ts"; tt: "ab.tt"; tu: "ab.tu"; tv: "ab.tv"; tw: "ab.tw"; tx: "ab.tx"; ty: "ab.ty"; tz: "ab.tz"; ua: "ab.ua"; ub: "ab.ub"; uc: "ab.uc"; ud: "ab.ud"; ue: "ab.ue"; uf: "ab.uf"; ug: "ab.ug"; uh: "ab.uh"; ui: "ab.ui"; uj: "ab.uj"; uk: "ab.uk"; ul: "ab.ul"; um: "ab.um"; un: "ab.un"; uo: "ab.uo"; up: "ab.up"; uq: "ab.uq"; ur: "ab.ur"; us: "ab.us"; ut: "ab.ut"; uu: "ab.uu"; uv: "ab.uv"; uw: "ab.uw"; ux: "ab.ux"; uy: "ab.uy"; uz: "ab.uz"; va: "ab.va"; vb: "ab.vb"; vc: "ab.vc"; vd: "ab.vd"; ve: "ab.ve"; vf: "ab.vf"; vg: "ab.vg"; vh: "ab.vh"; vi: "ab.vi"; vj: "ab.vj"; vk: "ab.vk"; vl: "ab.vl"; vm: "ab.vm"; vn: "ab.vn"; vo: "ab.vo"; vp: "ab.vp"; vq: "ab.vq"; vr: "ab.vr"; vs: "ab.vs"; vt: "ab.vt"; vu: "ab.vu"; vv: "ab.vv"; vw: "ab.vw"; vx: "ab.vx"; vy: "ab.vy"; vz: "ab.vz"; wa: "ab.wa"; wb: "ab.wb"; wc: "ab.wc"; wd: "ab.wd"; we: "ab.we"; wf: "ab.wf"; wg: "ab.wg"; wh: "ab.wh"; wi: "ab.wi"; wj: "ab.wj"; wk: "ab.wk"; wl: "ab.wl"; wm: "ab.wm"; wn: "ab.wn"; wo: "ab.wo"; wp: "ab.wp"; wq: "ab.wq"; wr: "ab.wr"; ws: "ab.ws"; wt: "ab.wt"; wu: "ab.wu"; wv: "ab.wv"; ww: "ab.ww"; wx: "ab.wx"; wy: "ab.wy"; wz: "ab.wz"; xa: "ab.xa"; xb: "ab.xb"; xc: "ab.xc"; xd: "ab.xd"; xe: "ab.xe"; xf: "ab.xf"; xg: "ab.xg"; xh: "ab.xh"; xi: "ab.xi"; xj: "ab.xj"; xk: "ab.xk"; xl: "ab.xl"; xm: "ab.xm"; xn: "ab.xn"; xo: "ab.xo"; xp: "ab.xp"; xq: "ab.xq"; xr: "ab.xr"; xs: "ab.xs"; xt: "ab.xt"; xu: "ab.xu"; xv: "ab.xv"; xw: "ab.xw"; xx: "ab.xx"; xy: "ab.xy"; xz: "ab.xz"; ya: "ab.ya"; yb: "ab.yb"; yc: "ab.yc"; yd: "ab.yd"; ye: "ab.ye"; yf: "ab.yf"; yg: "ab.yg"; yh: "ab.yh"; yi: "ab.yi"; yj: "ab.yj"; yk: "ab.yk"; yl: "ab.yl"; ym: "ab.ym"; yn: "ab.yn"; yo: "ab.yo"; yp: "ab.yp"; yq: "ab.yq"; yr: "ab.yr"; ys: "ab.ys"; yt: "ab.yt"; yu: "ab.yu"; yv: "ab.yv"; yw: "ab.yw"; yx: "ab.yx"; yy: "ab.yy"; yz: "ab.yz"; za: "ab.za"; zb: "ab.zb"; zc: "ab.zc"; zd: "ab.zd"; ze: "ab.ze"; zf: "ab.zf"; zg: "ab.zg"; zh: "ab.zh"; zi: "ab.zi"; zj: "ab.zj"; zk: "ab.zk"; zl: "ab.zl"; zm: "ab.zm"; zn: "ab.zn"; zo: "ab.zo"; zp: "ab.zp"; zq: "ab.zq"; zr: "ab.zr"; zs: "ab.zs"; zt: "ab.zt"; zu: "ab.zu"; zv: "ab.zv"; zw: "ab.zw"; zx: "ab.zx"; zy: "ab.zy"; zz: "ab.zz"; }; ac: { aa: "ac.aa"; ab: "ac.ab"; ac: "ac.ac"; ad: "ac.ad"; ae: "ac.ae"; af: "ac.af"; ag: "ac.ag"; ah: "ac.ah"; ai: "ac.ai"; aj: "ac.aj"; ak: "ac.ak"; al: "ac.al"; am: "ac.am"; an: "ac.an"; ao: "ac.ao"; ap: "ac.ap"; aq: "ac.aq"; ar: "ac.ar"; as: "ac.as"; at: "ac.at"; au: "ac.au"; av: "ac.av"; aw: "ac.aw"; ax: "ac.ax"; ay: "ac.ay"; az: "ac.az"; ba: "ac.ba"; bb: "ac.bb"; bc: "ac.bc"; bd: "ac.bd"; be: "ac.be"; bf: "ac.bf"; bg: "ac.bg"; bh: "ac.bh"; bi: "ac.bi"; bj: "ac.bj"; bk: "ac.bk"; bl: "ac.bl"; bm: "ac.bm"; bn: "ac.bn"; bo: "ac.bo"; bp: "ac.bp"; bq: "ac.bq"; br: "ac.br"; bs: "ac.bs"; bt: "ac.bt"; bu: "ac.bu"; bv: "ac.bv"; bw: "ac.bw"; bx: "ac.bx"; by: "ac.by"; bz: "ac.bz"; ca: "ac.ca"; cb: "ac.cb"; cc: "ac.cc"; cd: "ac.cd"; ce: "ac.ce"; cf: "ac.cf"; cg: "ac.cg"; ch: "ac.ch"; ci: "ac.ci"; cj: "ac.cj"; ck: "ac.ck"; cl: "ac.cl"; cm: "ac.cm"; cn: "ac.cn"; co: "ac.co"; cp: "ac.cp"; cq: "ac.cq"; cr: "ac.cr"; cs: "ac.cs"; ct: "ac.ct"; cu: "ac.cu"; cv: "ac.cv"; cw: "ac.cw"; cx: "ac.cx"; cy: "ac.cy"; cz: "ac.cz"; da: "ac.da"; db: "ac.db"; dc: "ac.dc"; dd: "ac.dd"; de: "ac.de"; df: "ac.df"; dg: "ac.dg"; dh: "ac.dh"; di: "ac.di"; dj: "ac.dj"; dk: "ac.dk"; dl: "ac.dl"; dm: "ac.dm"; dn: "ac.dn"; do: "ac.do"; dp: "ac.dp"; dq: "ac.dq"; dr: "ac.dr"; ds: "ac.ds"; dt: "ac.dt"; du: "ac.du"; dv: "ac.dv"; dw: "ac.dw"; dx: "ac.dx"; dy: "ac.dy"; dz: "ac.dz"; ea: "ac.ea"; eb: "ac.eb"; ec: "ac.ec"; ed: "ac.ed"; ee: "ac.ee"; ef: "ac.ef"; eg: "ac.eg"; eh: "ac.eh"; ei: "ac.ei"; ej: "ac.ej"; ek: "ac.ek"; el: "ac.el"; em: "ac.em"; en: "ac.en"; eo: "ac.eo"; ep: "ac.ep"; eq: "ac.eq"; er: "ac.er"; es: "ac.es"; et: "ac.et"; eu: "ac.eu"; ev: "ac.ev"; ew: "ac.ew"; ex: "ac.ex"; ey: "ac.ey"; ez: "ac.ez"; fa: "ac.fa"; fb: "ac.fb"; fc: "ac.fc"; fd: "ac.fd"; fe: "ac.fe"; ff: "ac.ff"; fg: "ac.fg"; fh: "ac.fh"; fi: "ac.fi"; fj: "ac.fj"; fk: "ac.fk"; fl: "ac.fl"; fm: "ac.fm"; fn: "ac.fn"; fo: "ac.fo"; fp: "ac.fp"; fq: "ac.fq"; fr: "ac.fr"; fs: "ac.fs"; ft: "ac.ft"; fu: "ac.fu"; fv: "ac.fv"; fw: "ac.fw"; fx: "ac.fx"; fy: "ac.fy"; fz: "ac.fz"; ga: "ac.ga"; gb: "ac.gb"; gc: "ac.gc"; gd: "ac.gd"; ge: "ac.ge"; gf: "ac.gf"; gg: "ac.gg"; gh: "ac.gh"; gi: "ac.gi"; gj: "ac.gj"; gk: "ac.gk"; gl: "ac.gl"; gm: "ac.gm"; gn: "ac.gn"; go: "ac.go"; gp: "ac.gp"; gq: "ac.gq"; gr: "ac.gr"; gs: "ac.gs"; gt: "ac.gt"; gu: "ac.gu"; gv: "ac.gv"; gw: "ac.gw"; gx: "ac.gx"; gy: "ac.gy"; gz: "ac.gz"; ha: "ac.ha"; hb: "ac.hb"; hc: "ac.hc"; hd: "ac.hd"; he: "ac.he"; hf: "ac.hf"; hg: "ac.hg"; hh: "ac.hh"; hi: "ac.hi"; hj: "ac.hj"; hk: "ac.hk"; hl: "ac.hl"; hm: "ac.hm"; hn: "ac.hn"; ho: "ac.ho"; hp: "ac.hp"; hq: "ac.hq"; hr: "ac.hr"; hs: "ac.hs"; ht: "ac.ht"; hu: "ac.hu"; hv: "ac.hv"; hw: "ac.hw"; hx: "ac.hx"; hy: "ac.hy"; hz: "ac.hz"; ia: "ac.ia"; ib: "ac.ib"; ic: "ac.ic"; id: "ac.id"; ie: "ac.ie"; if: "ac.if"; ig: "ac.ig"; ih: "ac.ih"; ii: "ac.ii"; ij: "ac.ij"; ik: "ac.ik"; il: "ac.il"; im: "ac.im"; in: "ac.in"; io: "ac.io"; ip: "ac.ip"; iq: "ac.iq"; ir: "ac.ir"; is: "ac.is"; it: "ac.it"; iu: "ac.iu"; iv: "ac.iv"; iw: "ac.iw"; ix: "ac.ix"; iy: "ac.iy"; iz: "ac.iz"; ja: "ac.ja"; jb: "ac.jb"; jc: "ac.jc"; jd: "ac.jd"; je: "ac.je"; jf: "ac.jf"; jg: "ac.jg"; jh: "ac.jh"; ji: "ac.ji"; jj: "ac.jj"; jk: "ac.jk"; jl: "ac.jl"; jm: "ac.jm"; jn: "ac.jn"; jo: "ac.jo"; jp: "ac.jp"; jq: "ac.jq"; jr: "ac.jr"; js: "ac.js"; jt: "ac.jt"; ju: "ac.ju"; jv: "ac.jv"; jw: "ac.jw"; jx: "ac.jx"; jy: "ac.jy"; jz: "ac.jz"; ka: "ac.ka"; kb: "ac.kb"; kc: "ac.kc"; kd: "ac.kd"; ke: "ac.ke"; kf: "ac.kf"; kg: "ac.kg"; kh: "ac.kh"; ki: "ac.ki"; kj: "ac.kj"; kk: "ac.kk"; kl: "ac.kl"; km: "ac.km"; kn: "ac.kn"; ko: "ac.ko"; kp: "ac.kp"; kq: "ac.kq"; kr: "ac.kr"; ks: "ac.ks"; kt: "ac.kt"; ku: "ac.ku"; kv: "ac.kv"; kw: "ac.kw"; kx: "ac.kx"; ky: "ac.ky"; kz: "ac.kz"; la: "ac.la"; lb: "ac.lb"; lc: "ac.lc"; ld: "ac.ld"; le: "ac.le"; lf: "ac.lf"; lg: "ac.lg"; lh: "ac.lh"; li: "ac.li"; lj: "ac.lj"; lk: "ac.lk"; ll: "ac.ll"; lm: "ac.lm"; ln: "ac.ln"; lo: "ac.lo"; lp: "ac.lp"; lq: "ac.lq"; lr: "ac.lr"; ls: "ac.ls"; lt: "ac.lt"; lu: "ac.lu"; lv: "ac.lv"; lw: "ac.lw"; lx: "ac.lx"; ly: "ac.ly"; lz: "ac.lz"; ma: "ac.ma"; mb: "ac.mb"; mc: "ac.mc"; md: "ac.md"; me: "ac.me"; mf: "ac.mf"; mg: "ac.mg"; mh: "ac.mh"; mi: "ac.mi"; mj: "ac.mj"; mk: "ac.mk"; ml: "ac.ml"; mm: "ac.mm"; mn: "ac.mn"; mo: "ac.mo"; mp: "ac.mp"; mq: "ac.mq"; mr: "ac.mr"; ms: "ac.ms"; mt: "ac.mt"; mu: "ac.mu"; mv: "ac.mv"; mw: "ac.mw"; mx: "ac.mx"; my: "ac.my"; mz: "ac.mz"; na: "ac.na"; nb: "ac.nb"; nc: "ac.nc"; nd: "ac.nd"; ne: "ac.ne"; nf: "ac.nf"; ng: "ac.ng"; nh: "ac.nh"; ni: "ac.ni"; nj: "ac.nj"; nk: "ac.nk"; nl: "ac.nl"; nm: "ac.nm"; nn: "ac.nn"; no: "ac.no"; np: "ac.np"; nq: "ac.nq"; nr: "ac.nr"; ns: "ac.ns"; nt: "ac.nt"; nu: "ac.nu"; nv: "ac.nv"; nw: "ac.nw"; nx: "ac.nx"; ny: "ac.ny"; nz: "ac.nz"; oa: "ac.oa"; ob: "ac.ob"; oc: "ac.oc"; od: "ac.od"; oe: "ac.oe"; of: "ac.of"; og: "ac.og"; oh: "ac.oh"; oi: "ac.oi"; oj: "ac.oj"; ok: "ac.ok"; ol: "ac.ol"; om: "ac.om"; on: "ac.on"; oo: "ac.oo"; op: "ac.op"; oq: "ac.oq"; or: "ac.or"; os: "ac.os"; ot: "ac.ot"; ou: "ac.ou"; ov: "ac.ov"; ow: "ac.ow"; ox: "ac.ox"; oy: "ac.oy"; oz: "ac.oz"; pa: "ac.pa"; pb: "ac.pb"; pc: "ac.pc"; pd: "ac.pd"; pe: "ac.pe"; pf: "ac.pf"; pg: "ac.pg"; ph: "ac.ph"; pi: "ac.pi"; pj: "ac.pj"; pk: "ac.pk"; pl: "ac.pl"; pm: "ac.pm"; pn: "ac.pn"; po: "ac.po"; pp: "ac.pp"; pq: "ac.pq"; pr: "ac.pr"; ps: "ac.ps"; pt: "ac.pt"; pu: "ac.pu"; pv: "ac.pv"; pw: "ac.pw"; px: "ac.px"; py: "ac.py"; pz: "ac.pz"; qa: "ac.qa"; qb: "ac.qb"; qc: "ac.qc"; qd: "ac.qd"; qe: "ac.qe"; qf: "ac.qf"; qg: "ac.qg"; qh: "ac.qh"; qi: "ac.qi"; qj: "ac.qj"; qk: "ac.qk"; ql: "ac.ql"; qm: "ac.qm"; qn: "ac.qn"; qo: "ac.qo"; qp: "ac.qp"; qq: "ac.qq"; qr: "ac.qr"; qs: "ac.qs"; qt: "ac.qt"; qu: "ac.qu"; qv: "ac.qv"; qw: "ac.qw"; qx: "ac.qx"; qy: "ac.qy"; qz: "ac.qz"; ra: "ac.ra"; rb: "ac.rb"; rc: "ac.rc"; rd: "ac.rd"; re: "ac.re"; rf: "ac.rf"; rg: "ac.rg"; rh: "ac.rh"; ri: "ac.ri"; rj: "ac.rj"; rk: "ac.rk"; rl: "ac.rl"; rm: "ac.rm"; rn: "ac.rn"; ro: "ac.ro"; rp: "ac.rp"; rq: "ac.rq"; rr: "ac.rr"; rs: "ac.rs"; rt: "ac.rt"; ru: "ac.ru"; rv: "ac.rv"; rw: "ac.rw"; rx: "ac.rx"; ry: "ac.ry"; rz: "ac.rz"; sa: "ac.sa"; sb: "ac.sb"; sc: "ac.sc"; sd: "ac.sd"; se: "ac.se"; sf: "ac.sf"; sg: "ac.sg"; sh: "ac.sh"; si: "ac.si"; sj: "ac.sj"; sk: "ac.sk"; sl: "ac.sl"; sm: "ac.sm"; sn: "ac.sn"; so: "ac.so"; sp: "ac.sp"; sq: "ac.sq"; sr: "ac.sr"; ss: "ac.ss"; st: "ac.st"; su: "ac.su"; sv: "ac.sv"; sw: "ac.sw"; sx: "ac.sx"; sy: "ac.sy"; sz: "ac.sz"; ta: "ac.ta"; tb: "ac.tb"; tc: "ac.tc"; td: "ac.td"; te: "ac.te"; tf: "ac.tf"; tg: "ac.tg"; th: "ac.th"; ti: "ac.ti"; tj: "ac.tj"; tk: "ac.tk"; tl: "ac.tl"; tm: "ac.tm"; tn: "ac.tn"; to: "ac.to"; tp: "ac.tp"; tq: "ac.tq"; tr: "ac.tr"; ts: "ac.ts"; tt: "ac.tt"; tu: "ac.tu"; tv: "ac.tv"; tw: "ac.tw"; tx: "ac.tx"; ty: "ac.ty"; tz: "ac.tz"; ua: "ac.ua"; ub: "ac.ub"; uc: "ac.uc"; ud: "ac.ud"; ue: "ac.ue"; uf: "ac.uf"; ug: "ac.ug"; uh: "ac.uh"; ui: "ac.ui"; uj: "ac.uj"; uk: "ac.uk"; ul: "ac.ul"; um: "ac.um"; un: "ac.un"; uo: "ac.uo"; up: "ac.up"; uq: "ac.uq"; ur: "ac.ur"; us: "ac.us"; ut: "ac.ut"; uu: "ac.uu"; uv: "ac.uv"; uw: "ac.uw"; ux: "ac.ux"; uy: "ac.uy"; uz: "ac.uz"; va: "ac.va"; vb: "ac.vb"; vc: "ac.vc"; vd: "ac.vd"; ve: "ac.ve"; vf: "ac.vf"; vg: "ac.vg"; vh: "ac.vh"; vi: "ac.vi"; vj: "ac.vj"; vk: "ac.vk"; vl: "ac.vl"; vm: "ac.vm"; vn: "ac.vn"; vo: "ac.vo"; vp: "ac.vp"; vq: "ac.vq"; vr: "ac.vr"; vs: "ac.vs"; vt: "ac.vt"; vu: "ac.vu"; vv: "ac.vv"; vw: "ac.vw"; vx: "ac.vx"; vy: "ac.vy"; vz: "ac.vz"; wa: "ac.wa"; wb: "ac.wb"; wc: "ac.wc"; wd: "ac.wd"; we: "ac.we"; wf: "ac.wf"; wg: "ac.wg"; wh: "ac.wh"; wi: "ac.wi"; wj: "ac.wj"; wk: "ac.wk"; wl: "ac.wl"; wm: "ac.wm"; wn: "ac.wn"; wo: "ac.wo"; wp: "ac.wp"; wq: "ac.wq"; wr: "ac.wr"; ws: "ac.ws"; wt: "ac.wt"; wu: "ac.wu"; wv: "ac.wv"; ww: "ac.ww"; wx: "ac.wx"; wy: "ac.wy"; wz: "ac.wz"; xa: "ac.xa"; xb: "ac.xb"; xc: "ac.xc"; xd: "ac.xd"; xe: "ac.xe"; xf: "ac.xf"; xg: "ac.xg"; xh: "ac.xh"; xi: "ac.xi"; xj: "ac.xj"; xk: "ac.xk"; xl: "ac.xl"; xm: "ac.xm"; xn: "ac.xn"; xo: "ac.xo"; xp: "ac.xp"; xq: "ac.xq"; xr: "ac.xr"; xs: "ac.xs"; xt: "ac.xt"; xu: "ac.xu"; xv: "ac.xv"; xw: "ac.xw"; xx: "ac.xx"; xy: "ac.xy"; xz: "ac.xz"; ya: "ac.ya"; yb: "ac.yb"; yc: "ac.yc"; yd: "ac.yd"; ye: "ac.ye"; yf: "ac.yf"; yg: "ac.yg"; yh: "ac.yh"; yi: "ac.yi"; yj: "ac.yj"; yk: "ac.yk"; yl: "ac.yl"; ym: "ac.ym"; yn: "ac.yn"; yo: "ac.yo"; yp: "ac.yp"; yq: "ac.yq"; yr: "ac.yr"; ys: "ac.ys"; yt: "ac.yt"; yu: "ac.yu"; yv: "ac.yv"; yw: "ac.yw"; yx: "ac.yx"; yy: "ac.yy"; yz: "ac.yz"; za: "ac.za"; zb: "ac.zb"; zc: "ac.zc"; zd: "ac.zd"; ze: "ac.ze"; zf: "ac.zf"; zg: "ac.zg"; zh: "ac.zh"; zi: "ac.zi"; zj: "ac.zj"; zk: "ac.zk"; zl: "ac.zl"; zm: "ac.zm"; zn: "ac.zn"; zo: "ac.zo"; zp: "ac.zp"; zq: "ac.zq"; zr: "ac.zr"; zs: "ac.zs"; zt: "ac.zt"; zu: "ac.zu"; zv: "ac.zv"; zw: "ac.zw"; zx: "ac.zx"; zy: "ac.zy"; zz: "ac.zz"; }; ad: { aa: "ad.aa"; ab: "ad.ab"; ac: "ad.ac"; ad: "ad.ad"; ae: "ad.ae"; af: "ad.af"; ag: "ad.ag"; ah: "ad.ah"; ai: "ad.ai"; aj: "ad.aj"; ak: "ad.ak"; al: "ad.al"; am: "ad.am"; an: "ad.an"; ao: "ad.ao"; ap: "ad.ap"; aq: "ad.aq"; ar: "ad.ar"; as: "ad.as"; at: "ad.at"; au: "ad.au"; av: "ad.av"; aw: "ad.aw"; ax: "ad.ax"; ay: "ad.ay"; az: "ad.az"; ba: "ad.ba"; bb: "ad.bb"; bc: "ad.bc"; bd: "ad.bd"; be: "ad.be"; bf: "ad.bf"; bg: "ad.bg"; bh: "ad.bh"; bi: "ad.bi"; bj: "ad.bj"; bk: "ad.bk"; bl: "ad.bl"; bm: "ad.bm"; bn: "ad.bn"; bo: "ad.bo"; bp: "ad.bp"; bq: "ad.bq"; br: "ad.br"; bs: "ad.bs"; bt: "ad.bt"; bu: "ad.bu"; bv: "ad.bv"; bw: "ad.bw"; bx: "ad.bx"; by: "ad.by"; bz: "ad.bz"; ca: "ad.ca"; cb: "ad.cb"; cc: "ad.cc"; cd: "ad.cd"; ce: "ad.ce"; cf: "ad.cf"; cg: "ad.cg"; ch: "ad.ch"; ci: "ad.ci"; cj: "ad.cj"; ck: "ad.ck"; cl: "ad.cl"; cm: "ad.cm"; cn: "ad.cn"; co: "ad.co"; cp: "ad.cp"; cq: "ad.cq"; cr: "ad.cr"; cs: "ad.cs"; ct: "ad.ct"; cu: "ad.cu"; cv: "ad.cv"; cw: "ad.cw"; cx: "ad.cx"; cy: "ad.cy"; cz: "ad.cz"; da: "ad.da"; db: "ad.db"; dc: "ad.dc"; dd: "ad.dd"; de: "ad.de"; df: "ad.df"; dg: "ad.dg"; dh: "ad.dh"; di: "ad.di"; dj: "ad.dj"; dk: "ad.dk"; dl: "ad.dl"; dm: "ad.dm"; dn: "ad.dn"; do: "ad.do"; dp: "ad.dp"; dq: "ad.dq"; dr: "ad.dr"; ds: "ad.ds"; dt: "ad.dt"; du: "ad.du"; dv: "ad.dv"; dw: "ad.dw"; dx: "ad.dx"; dy: "ad.dy"; dz: "ad.dz"; ea: "ad.ea"; eb: "ad.eb"; ec: "ad.ec"; ed: "ad.ed"; ee: "ad.ee"; ef: "ad.ef"; eg: "ad.eg"; eh: "ad.eh"; ei: "ad.ei"; ej: "ad.ej"; ek: "ad.ek"; el: "ad.el"; em: "ad.em"; en: "ad.en"; eo: "ad.eo"; ep: "ad.ep"; eq: "ad.eq"; er: "ad.er"; es: "ad.es"; et: "ad.et"; eu: "ad.eu"; ev: "ad.ev"; ew: "ad.ew"; ex: "ad.ex"; ey: "ad.ey"; ez: "ad.ez"; fa: "ad.fa"; fb: "ad.fb"; fc: "ad.fc"; fd: "ad.fd"; fe: "ad.fe"; ff: "ad.ff"; fg: "ad.fg"; fh: "ad.fh"; fi: "ad.fi"; fj: "ad.fj"; fk: "ad.fk"; fl: "ad.fl"; fm: "ad.fm"; fn: "ad.fn"; fo: "ad.fo"; fp: "ad.fp"; fq: "ad.fq"; fr: "ad.fr"; fs: "ad.fs"; ft: "ad.ft"; fu: "ad.fu"; fv: "ad.fv"; fw: "ad.fw"; fx: "ad.fx"; fy: "ad.fy"; fz: "ad.fz"; ga: "ad.ga"; gb: "ad.gb"; gc: "ad.gc"; gd: "ad.gd"; ge: "ad.ge"; gf: "ad.gf"; gg: "ad.gg"; gh: "ad.gh"; gi: "ad.gi"; gj: "ad.gj"; gk: "ad.gk"; gl: "ad.gl"; gm: "ad.gm"; gn: "ad.gn"; go: "ad.go"; gp: "ad.gp"; gq: "ad.gq"; gr: "ad.gr"; gs: "ad.gs"; gt: "ad.gt"; gu: "ad.gu"; gv: "ad.gv"; gw: "ad.gw"; gx: "ad.gx"; gy: "ad.gy"; gz: "ad.gz"; ha: "ad.ha"; hb: "ad.hb"; hc: "ad.hc"; hd: "ad.hd"; he: "ad.he"; hf: "ad.hf"; hg: "ad.hg"; hh: "ad.hh"; hi: "ad.hi"; hj: "ad.hj"; hk: "ad.hk"; hl: "ad.hl"; hm: "ad.hm"; hn: "ad.hn"; ho: "ad.ho"; hp: "ad.hp"; hq: "ad.hq"; hr: "ad.hr"; hs: "ad.hs"; ht: "ad.ht"; hu: "ad.hu"; hv: "ad.hv"; hw: "ad.hw"; hx: "ad.hx"; hy: "ad.hy"; hz: "ad.hz"; ia: "ad.ia"; ib: "ad.ib"; ic: "ad.ic"; id: "ad.id"; ie: "ad.ie"; if: "ad.if"; ig: "ad.ig"; ih: "ad.ih"; ii: "ad.ii"; ij: "ad.ij"; ik: "ad.ik"; il: "ad.il"; im: "ad.im"; in: "ad.in"; io: "ad.io"; ip: "ad.ip"; iq: "ad.iq"; ir: "ad.ir"; is: "ad.is"; it: "ad.it"; iu: "ad.iu"; iv: "ad.iv"; iw: "ad.iw"; ix: "ad.ix"; iy: "ad.iy"; iz: "ad.iz"; ja: "ad.ja"; jb: "ad.jb"; jc: "ad.jc"; jd: "ad.jd"; je: "ad.je"; jf: "ad.jf"; jg: "ad.jg"; jh: "ad.jh"; ji: "ad.ji"; jj: "ad.jj"; jk: "ad.jk"; jl: "ad.jl"; jm: "ad.jm"; jn: "ad.jn"; jo: "ad.jo"; jp: "ad.jp"; jq: "ad.jq"; jr: "ad.jr"; js: "ad.js"; jt: "ad.jt"; ju: "ad.ju"; jv: "ad.jv"; jw: "ad.jw"; jx: "ad.jx"; jy: "ad.jy"; jz: "ad.jz"; ka: "ad.ka"; kb: "ad.kb"; kc: "ad.kc"; kd: "ad.kd"; ke: "ad.ke"; kf: "ad.kf"; kg: "ad.kg"; kh: "ad.kh"; ki: "ad.ki"; kj: "ad.kj"; kk: "ad.kk"; kl: "ad.kl"; km: "ad.km"; kn: "ad.kn"; ko: "ad.ko"; kp: "ad.kp"; kq: "ad.kq"; kr: "ad.kr"; ks: "ad.ks"; kt: "ad.kt"; ku: "ad.ku"; kv: "ad.kv"; kw: "ad.kw"; kx: "ad.kx"; ky: "ad.ky"; kz: "ad.kz"; la: "ad.la"; lb: "ad.lb"; lc: "ad.lc"; ld: "ad.ld"; le: "ad.le"; lf: "ad.lf"; lg: "ad.lg"; lh: "ad.lh"; li: "ad.li"; lj: "ad.lj"; lk: "ad.lk"; ll: "ad.ll"; lm: "ad.lm"; ln: "ad.ln"; lo: "ad.lo"; lp: "ad.lp"; lq: "ad.lq"; lr: "ad.lr"; ls: "ad.ls"; lt: "ad.lt"; lu: "ad.lu"; lv: "ad.lv"; lw: "ad.lw"; lx: "ad.lx"; ly: "ad.ly"; lz: "ad.lz"; ma: "ad.ma"; mb: "ad.mb"; mc: "ad.mc"; md: "ad.md"; me: "ad.me"; mf: "ad.mf"; mg: "ad.mg"; mh: "ad.mh"; mi: "ad.mi"; mj: "ad.mj"; mk: "ad.mk"; ml: "ad.ml"; mm: "ad.mm"; mn: "ad.mn"; mo: "ad.mo"; mp: "ad.mp"; mq: "ad.mq"; mr: "ad.mr"; ms: "ad.ms"; mt: "ad.mt"; mu: "ad.mu"; mv: "ad.mv"; mw: "ad.mw"; mx: "ad.mx"; my: "ad.my"; mz: "ad.mz"; na: "ad.na"; nb: "ad.nb"; nc: "ad.nc"; nd: "ad.nd"; ne: "ad.ne"; nf: "ad.nf"; ng: "ad.ng"; nh: "ad.nh"; ni: "ad.ni"; nj: "ad.nj"; nk: "ad.nk"; nl: "ad.nl"; nm: "ad.nm"; nn: "ad.nn"; no: "ad.no"; np: "ad.np"; nq: "ad.nq"; nr: "ad.nr"; ns: "ad.ns"; nt: "ad.nt"; nu: "ad.nu"; nv: "ad.nv"; nw: "ad.nw"; nx: "ad.nx"; ny: "ad.ny"; nz: "ad.nz"; oa: "ad.oa"; ob: "ad.ob"; oc: "ad.oc"; od: "ad.od"; oe: "ad.oe"; of: "ad.of"; og: "ad.og"; oh: "ad.oh"; oi: "ad.oi"; oj: "ad.oj"; ok: "ad.ok"; ol: "ad.ol"; om: "ad.om"; on: "ad.on"; oo: "ad.oo"; op: "ad.op"; oq: "ad.oq"; or: "ad.or"; os: "ad.os"; ot: "ad.ot"; ou: "ad.ou"; ov: "ad.ov"; ow: "ad.ow"; ox: "ad.ox"; oy: "ad.oy"; oz: "ad.oz"; pa: "ad.pa"; pb: "ad.pb"; pc: "ad.pc"; pd: "ad.pd"; pe: "ad.pe"; pf: "ad.pf"; pg: "ad.pg"; ph: "ad.ph"; pi: "ad.pi"; pj: "ad.pj"; pk: "ad.pk"; pl: "ad.pl"; pm: "ad.pm"; pn: "ad.pn"; po: "ad.po"; pp: "ad.pp"; pq: "ad.pq"; pr: "ad.pr"; ps: "ad.ps"; pt: "ad.pt"; pu: "ad.pu"; pv: "ad.pv"; pw: "ad.pw"; px: "ad.px"; py: "ad.py"; pz: "ad.pz"; qa: "ad.qa"; qb: "ad.qb"; qc: "ad.qc"; qd: "ad.qd"; qe: "ad.qe"; qf: "ad.qf"; qg: "ad.qg"; qh: "ad.qh"; qi: "ad.qi"; qj: "ad.qj"; qk: "ad.qk"; ql: "ad.ql"; qm: "ad.qm"; qn: "ad.qn"; qo: "ad.qo"; qp: "ad.qp"; qq: "ad.qq"; qr: "ad.qr"; qs: "ad.qs"; qt: "ad.qt"; qu: "ad.qu"; qv: "ad.qv"; qw: "ad.qw"; qx: "ad.qx"; qy: "ad.qy"; qz: "ad.qz"; ra: "ad.ra"; rb: "ad.rb"; rc: "ad.rc"; rd: "ad.rd"; re: "ad.re"; rf: "ad.rf"; rg: "ad.rg"; rh: "ad.rh"; ri: "ad.ri"; rj: "ad.rj"; rk: "ad.rk"; rl: "ad.rl"; rm: "ad.rm"; rn: "ad.rn"; ro: "ad.ro"; rp: "ad.rp"; rq: "ad.rq"; rr: "ad.rr"; rs: "ad.rs"; rt: "ad.rt"; ru: "ad.ru"; rv: "ad.rv"; rw: "ad.rw"; rx: "ad.rx"; ry: "ad.ry"; rz: "ad.rz"; sa: "ad.sa"; sb: "ad.sb"; sc: "ad.sc"; sd: "ad.sd"; se: "ad.se"; sf: "ad.sf"; sg: "ad.sg"; sh: "ad.sh"; si: "ad.si"; sj: "ad.sj"; sk: "ad.sk"; sl: "ad.sl"; sm: "ad.sm"; sn: "ad.sn"; so: "ad.so"; sp: "ad.sp"; sq: "ad.sq"; sr: "ad.sr"; ss: "ad.ss"; st: "ad.st"; su: "ad.su"; sv: "ad.sv"; sw: "ad.sw"; sx: "ad.sx"; sy: "ad.sy"; sz: "ad.sz"; ta: "ad.ta"; tb: "ad.tb"; tc: "ad.tc"; td: "ad.td"; te: "ad.te"; tf: "ad.tf"; tg: "ad.tg"; th: "ad.th"; ti: "ad.ti"; tj: "ad.tj"; tk: "ad.tk"; tl: "ad.tl"; tm: "ad.tm"; tn: "ad.tn"; to: "ad.to"; tp: "ad.tp"; tq: "ad.tq"; tr: "ad.tr"; ts: "ad.ts"; tt: "ad.tt"; tu: "ad.tu"; tv: "ad.tv"; tw: "ad.tw"; tx: "ad.tx"; ty: "ad.ty"; tz: "ad.tz"; ua: "ad.ua"; ub: "ad.ub"; uc: "ad.uc"; ud: "ad.ud"; ue: "ad.ue"; uf: "ad.uf"; ug: "ad.ug"; uh: "ad.uh"; ui: "ad.ui"; uj: "ad.uj"; uk: "ad.uk"; ul: "ad.ul"; um: "ad.um"; un: "ad.un"; uo: "ad.uo"; up: "ad.up"; uq: "ad.uq"; ur: "ad.ur"; us: "ad.us"; ut: "ad.ut"; uu: "ad.uu"; uv: "ad.uv"; uw: "ad.uw"; ux: "ad.ux"; uy: "ad.uy"; uz: "ad.uz"; va: "ad.va"; vb: "ad.vb"; vc: "ad.vc"; vd: "ad.vd"; ve: "ad.ve"; vf: "ad.vf"; vg: "ad.vg"; vh: "ad.vh"; vi: "ad.vi"; vj: "ad.vj"; vk: "ad.vk"; vl: "ad.vl"; vm: "ad.vm"; vn: "ad.vn"; vo: "ad.vo"; vp: "ad.vp"; vq: "ad.vq"; vr: "ad.vr"; vs: "ad.vs"; vt: "ad.vt"; vu: "ad.vu"; vv: "ad.vv"; vw: "ad.vw"; vx: "ad.vx"; vy: "ad.vy"; vz: "ad.vz"; wa: "ad.wa"; wb: "ad.wb"; wc: "ad.wc"; wd: "ad.wd"; we: "ad.we"; wf: "ad.wf"; wg: "ad.wg"; wh: "ad.wh"; wi: "ad.wi"; wj: "ad.wj"; wk: "ad.wk"; wl: "ad.wl"; wm: "ad.wm"; wn: "ad.wn"; wo: "ad.wo"; wp: "ad.wp"; wq: "ad.wq"; wr: "ad.wr"; ws: "ad.ws"; wt: "ad.wt"; wu: "ad.wu"; wv: "ad.wv"; ww: "ad.ww"; wx: "ad.wx"; wy: "ad.wy"; wz: "ad.wz"; xa: "ad.xa"; xb: "ad.xb"; xc: "ad.xc"; xd: "ad.xd"; xe: "ad.xe"; xf: "ad.xf"; xg: "ad.xg"; xh: "ad.xh"; xi: "ad.xi"; xj: "ad.xj"; xk: "ad.xk"; xl: "ad.xl"; xm: "ad.xm"; xn: "ad.xn"; xo: "ad.xo"; xp: "ad.xp"; xq: "ad.xq"; xr: "ad.xr"; xs: "ad.xs"; xt: "ad.xt"; xu: "ad.xu"; xv: "ad.xv"; xw: "ad.xw"; xx: "ad.xx"; xy: "ad.xy"; xz: "ad.xz"; ya: "ad.ya"; yb: "ad.yb"; yc: "ad.yc"; yd: "ad.yd"; ye: "ad.ye"; yf: "ad.yf"; yg: "ad.yg"; yh: "ad.yh"; yi: "ad.yi"; yj: "ad.yj"; yk: "ad.yk"; yl: "ad.yl"; ym: "ad.ym"; yn: "ad.yn"; yo: "ad.yo"; yp: "ad.yp"; yq: "ad.yq"; yr: "ad.yr"; ys: "ad.ys"; yt: "ad.yt"; yu: "ad.yu"; yv: "ad.yv"; yw: "ad.yw"; yx: "ad.yx"; yy: "ad.yy"; yz: "ad.yz"; za: "ad.za"; zb: "ad.zb"; zc: "ad.zc"; zd: "ad.zd"; ze: "ad.ze"; zf: "ad.zf"; zg: "ad.zg"; zh: "ad.zh"; zi: "ad.zi"; zj: "ad.zj"; zk: "ad.zk"; zl: "ad.zl"; zm: "ad.zm"; zn: "ad.zn"; zo: "ad.zo"; zp: "ad.zp"; zq: "ad.zq"; zr: "ad.zr"; zs: "ad.zs"; zt: "ad.zt"; zu: "ad.zu"; zv: "ad.zv"; zw: "ad.zw"; zx: "ad.zx"; zy: "ad.zy"; zz: "ad.zz"; }; ae: { aa: "ae.aa"; ab: "ae.ab"; ac: "ae.ac"; ad: "ae.ad"; ae: "ae.ae"; af: "ae.af"; ag: "ae.ag"; ah: "ae.ah"; ai: "ae.ai"; aj: "ae.aj"; ak: "ae.ak"; al: "ae.al"; am: "ae.am"; an: "ae.an"; ao: "ae.ao"; ap: "ae.ap"; aq: "ae.aq"; ar: "ae.ar"; as: "ae.as"; at: "ae.at"; au: "ae.au"; av: "ae.av"; aw: "ae.aw"; ax: "ae.ax"; ay: "ae.ay"; az: "ae.az"; ba: "ae.ba"; bb: "ae.bb"; bc: "ae.bc"; bd: "ae.bd"; be: "ae.be"; bf: "ae.bf"; bg: "ae.bg"; bh: "ae.bh"; bi: "ae.bi"; bj: "ae.bj"; bk: "ae.bk"; bl: "ae.bl"; bm: "ae.bm"; bn: "ae.bn"; bo: "ae.bo"; bp: "ae.bp"; bq: "ae.bq"; br: "ae.br"; bs: "ae.bs"; bt: "ae.bt"; bu: "ae.bu"; bv: "ae.bv"; bw: "ae.bw"; bx: "ae.bx"; by: "ae.by"; bz: "ae.bz"; ca: "ae.ca"; cb: "ae.cb"; cc: "ae.cc"; cd: "ae.cd"; ce: "ae.ce"; cf: "ae.cf"; cg: "ae.cg"; ch: "ae.ch"; ci: "ae.ci"; cj: "ae.cj"; ck: "ae.ck"; cl: "ae.cl"; cm: "ae.cm"; cn: "ae.cn"; co: "ae.co"; cp: "ae.cp"; cq: "ae.cq"; cr: "ae.cr"; cs: "ae.cs"; ct: "ae.ct"; cu: "ae.cu"; cv: "ae.cv"; cw: "ae.cw"; cx: "ae.cx"; cy: "ae.cy"; cz: "ae.cz"; da: "ae.da"; db: "ae.db"; dc: "ae.dc"; dd: "ae.dd"; de: "ae.de"; df: "ae.df"; dg: "ae.dg"; dh: "ae.dh"; di: "ae.di"; dj: "ae.dj"; dk: "ae.dk"; dl: "ae.dl"; dm: "ae.dm"; dn: "ae.dn"; do: "ae.do"; dp: "ae.dp"; dq: "ae.dq"; dr: "ae.dr"; ds: "ae.ds"; dt: "ae.dt"; du: "ae.du"; dv: "ae.dv"; dw: "ae.dw"; dx: "ae.dx"; dy: "ae.dy"; dz: "ae.dz"; ea: "ae.ea"; eb: "ae.eb"; ec: "ae.ec"; ed: "ae.ed"; ee: "ae.ee"; ef: "ae.ef"; eg: "ae.eg"; eh: "ae.eh"; ei: "ae.ei"; ej: "ae.ej"; ek: "ae.ek"; el: "ae.el"; em: "ae.em"; en: "ae.en"; eo: "ae.eo"; ep: "ae.ep"; eq: "ae.eq"; er: "ae.er"; es: "ae.es"; et: "ae.et"; eu: "ae.eu"; ev: "ae.ev"; ew: "ae.ew"; ex: "ae.ex"; ey: "ae.ey"; ez: "ae.ez"; fa: "ae.fa"; fb: "ae.fb"; fc: "ae.fc"; fd: "ae.fd"; fe: "ae.fe"; ff: "ae.ff"; fg: "ae.fg"; fh: "ae.fh"; fi: "ae.fi"; fj: "ae.fj"; fk: "ae.fk"; fl: "ae.fl"; fm: "ae.fm"; fn: "ae.fn"; fo: "ae.fo"; fp: "ae.fp"; fq: "ae.fq"; fr: "ae.fr"; fs: "ae.fs"; ft: "ae.ft"; fu: "ae.fu"; fv: "ae.fv"; fw: "ae.fw"; fx: "ae.fx"; fy: "ae.fy"; fz: "ae.fz"; ga: "ae.ga"; gb: "ae.gb"; gc: "ae.gc"; gd: "ae.gd"; ge: "ae.ge"; gf: "ae.gf"; gg: "ae.gg"; gh: "ae.gh"; gi: "ae.gi"; gj: "ae.gj"; gk: "ae.gk"; gl: "ae.gl"; gm: "ae.gm"; gn: "ae.gn"; go: "ae.go"; gp: "ae.gp"; gq: "ae.gq"; gr: "ae.gr"; gs: "ae.gs"; gt: "ae.gt"; gu: "ae.gu"; gv: "ae.gv"; gw: "ae.gw"; gx: "ae.gx"; gy: "ae.gy"; gz: "ae.gz"; ha: "ae.ha"; hb: "ae.hb"; hc: "ae.hc"; hd: "ae.hd"; he: "ae.he"; hf: "ae.hf"; hg: "ae.hg"; hh: "ae.hh"; hi: "ae.hi"; hj: "ae.hj"; hk: "ae.hk"; hl: "ae.hl"; hm: "ae.hm"; hn: "ae.hn"; ho: "ae.ho"; hp: "ae.hp"; hq: "ae.hq"; hr: "ae.hr"; hs: "ae.hs"; ht: "ae.ht"; hu: "ae.hu"; hv: "ae.hv"; hw: "ae.hw"; hx: "ae.hx"; hy: "ae.hy"; hz: "ae.hz"; ia: "ae.ia"; ib: "ae.ib"; ic: "ae.ic"; id: "ae.id"; ie: "ae.ie"; if: "ae.if"; ig: "ae.ig"; ih: "ae.ih"; ii: "ae.ii"; ij: "ae.ij"; ik: "ae.ik"; il: "ae.il"; im: "ae.im"; in: "ae.in"; io: "ae.io"; ip: "ae.ip"; iq: "ae.iq"; ir: "ae.ir"; is: "ae.is"; it: "ae.it"; iu: "ae.iu"; iv: "ae.iv"; iw: "ae.iw"; ix: "ae.ix"; iy: "ae.iy"; iz: "ae.iz"; ja: "ae.ja"; jb: "ae.jb"; jc: "ae.jc"; jd: "ae.jd"; je: "ae.je"; jf: "ae.jf"; jg: "ae.jg"; jh: "ae.jh"; ji: "ae.ji"; jj: "ae.jj"; jk: "ae.jk"; jl: "ae.jl"; jm: "ae.jm"; jn: "ae.jn"; jo: "ae.jo"; jp: "ae.jp"; jq: "ae.jq"; jr: "ae.jr"; js: "ae.js"; jt: "ae.jt"; ju: "ae.ju"; jv: "ae.jv"; jw: "ae.jw"; jx: "ae.jx"; jy: "ae.jy"; jz: "ae.jz"; ka: "ae.ka"; kb: "ae.kb"; kc: "ae.kc"; kd: "ae.kd"; ke: "ae.ke"; kf: "ae.kf"; kg: "ae.kg"; kh: "ae.kh"; ki: "ae.ki"; kj: "ae.kj"; kk: "ae.kk"; kl: "ae.kl"; km: "ae.km"; kn: "ae.kn"; ko: "ae.ko"; kp: "ae.kp"; kq: "ae.kq"; kr: "ae.kr"; ks: "ae.ks"; kt: "ae.kt"; ku: "ae.ku"; kv: "ae.kv"; kw: "ae.kw"; kx: "ae.kx"; ky: "ae.ky"; kz: "ae.kz"; la: "ae.la"; lb: "ae.lb"; lc: "ae.lc"; ld: "ae.ld"; le: "ae.le"; lf: "ae.lf"; lg: "ae.lg"; lh: "ae.lh"; li: "ae.li"; lj: "ae.lj"; lk: "ae.lk"; ll: "ae.ll"; lm: "ae.lm"; ln: "ae.ln"; lo: "ae.lo"; lp: "ae.lp"; lq: "ae.lq"; lr: "ae.lr"; ls: "ae.ls"; lt: "ae.lt"; lu: "ae.lu"; lv: "ae.lv"; lw: "ae.lw"; lx: "ae.lx"; ly: "ae.ly"; lz: "ae.lz"; ma: "ae.ma"; mb: "ae.mb"; mc: "ae.mc"; md: "ae.md"; me: "ae.me"; mf: "ae.mf"; mg: "ae.mg"; mh: "ae.mh"; mi: "ae.mi"; mj: "ae.mj"; mk: "ae.mk"; ml: "ae.ml"; mm: "ae.mm"; mn: "ae.mn"; mo: "ae.mo"; mp: "ae.mp"; mq: "ae.mq"; mr: "ae.mr"; ms: "ae.ms"; mt: "ae.mt"; mu: "ae.mu"; mv: "ae.mv"; mw: "ae.mw"; mx: "ae.mx"; my: "ae.my"; mz: "ae.mz"; na: "ae.na"; nb: "ae.nb"; nc: "ae.nc"; nd: "ae.nd"; ne: "ae.ne"; nf: "ae.nf"; ng: "ae.ng"; nh: "ae.nh"; ni: "ae.ni"; nj: "ae.nj"; nk: "ae.nk"; nl: "ae.nl"; nm: "ae.nm"; nn: "ae.nn"; no: "ae.no"; np: "ae.np"; nq: "ae.nq"; nr: "ae.nr"; ns: "ae.ns"; nt: "ae.nt"; nu: "ae.nu"; nv: "ae.nv"; nw: "ae.nw"; nx: "ae.nx"; ny: "ae.ny"; nz: "ae.nz"; oa: "ae.oa"; ob: "ae.ob"; oc: "ae.oc"; od: "ae.od"; oe: "ae.oe"; of: "ae.of"; og: "ae.og"; oh: "ae.oh"; oi: "ae.oi"; oj: "ae.oj"; ok: "ae.ok"; ol: "ae.ol"; om: "ae.om"; on: "ae.on"; oo: "ae.oo"; op: "ae.op"; oq: "ae.oq"; or: "ae.or"; os: "ae.os"; ot: "ae.ot"; ou: "ae.ou"; ov: "ae.ov"; ow: "ae.ow"; ox: "ae.ox"; oy: "ae.oy"; oz: "ae.oz"; pa: "ae.pa"; pb: "ae.pb"; pc: "ae.pc"; pd: "ae.pd"; pe: "ae.pe"; pf: "ae.pf"; pg: "ae.pg"; ph: "ae.ph"; pi: "ae.pi"; pj: "ae.pj"; pk: "ae.pk"; pl: "ae.pl"; pm: "ae.pm"; pn: "ae.pn"; po: "ae.po"; pp: "ae.pp"; pq: "ae.pq"; pr: "ae.pr"; ps: "ae.ps"; pt: "ae.pt"; pu: "ae.pu"; pv: "ae.pv"; pw: "ae.pw"; px: "ae.px"; py: "ae.py"; pz: "ae.pz"; qa: "ae.qa"; qb: "ae.qb"; qc: "ae.qc"; qd: "ae.qd"; qe: "ae.qe"; qf: "ae.qf"; qg: "ae.qg"; qh: "ae.qh"; qi: "ae.qi"; qj: "ae.qj"; qk: "ae.qk"; ql: "ae.ql"; qm: "ae.qm"; qn: "ae.qn"; qo: "ae.qo"; qp: "ae.qp"; qq: "ae.qq"; qr: "ae.qr"; qs: "ae.qs"; qt: "ae.qt"; qu: "ae.qu"; qv: "ae.qv"; qw: "ae.qw"; qx: "ae.qx"; qy: "ae.qy"; qz: "ae.qz"; ra: "ae.ra"; rb: "ae.rb"; rc: "ae.rc"; rd: "ae.rd"; re: "ae.re"; rf: "ae.rf"; rg: "ae.rg"; rh: "ae.rh"; ri: "ae.ri"; rj: "ae.rj"; rk: "ae.rk"; rl: "ae.rl"; rm: "ae.rm"; rn: "ae.rn"; ro: "ae.ro"; rp: "ae.rp"; rq: "ae.rq"; rr: "ae.rr"; rs: "ae.rs"; rt: "ae.rt"; ru: "ae.ru"; rv: "ae.rv"; rw: "ae.rw"; rx: "ae.rx"; ry: "ae.ry"; rz: "ae.rz"; sa: "ae.sa"; sb: "ae.sb"; sc: "ae.sc"; sd: "ae.sd"; se: "ae.se"; sf: "ae.sf"; sg: "ae.sg"; sh: "ae.sh"; si: "ae.si"; sj: "ae.sj"; sk: "ae.sk"; sl: "ae.sl"; sm: "ae.sm"; sn: "ae.sn"; so: "ae.so"; sp: "ae.sp"; sq: "ae.sq"; sr: "ae.sr"; ss: "ae.ss"; st: "ae.st"; su: "ae.su"; sv: "ae.sv"; sw: "ae.sw"; sx: "ae.sx"; sy: "ae.sy"; sz: "ae.sz"; ta: "ae.ta"; tb: "ae.tb"; tc: "ae.tc"; td: "ae.td"; te: "ae.te"; tf: "ae.tf"; tg: "ae.tg"; th: "ae.th"; ti: "ae.ti"; tj: "ae.tj"; tk: "ae.tk"; tl: "ae.tl"; tm: "ae.tm"; tn: "ae.tn"; to: "ae.to"; tp: "ae.tp"; tq: "ae.tq"; tr: "ae.tr"; ts: "ae.ts"; tt: "ae.tt"; tu: "ae.tu"; tv: "ae.tv"; tw: "ae.tw"; tx: "ae.tx"; ty: "ae.ty"; tz: "ae.tz"; ua: "ae.ua"; ub: "ae.ub"; uc: "ae.uc"; ud: "ae.ud"; ue: "ae.ue"; uf: "ae.uf"; ug: "ae.ug"; uh: "ae.uh"; ui: "ae.ui"; uj: "ae.uj"; uk: "ae.uk"; ul: "ae.ul"; um: "ae.um"; un: "ae.un"; uo: "ae.uo"; up: "ae.up"; uq: "ae.uq"; ur: "ae.ur"; us: "ae.us"; ut: "ae.ut"; uu: "ae.uu"; uv: "ae.uv"; uw: "ae.uw"; ux: "ae.ux"; uy: "ae.uy"; uz: "ae.uz"; va: "ae.va"; vb: "ae.vb"; vc: "ae.vc"; vd: "ae.vd"; ve: "ae.ve"; vf: "ae.vf"; vg: "ae.vg"; vh: "ae.vh"; vi: "ae.vi"; vj: "ae.vj"; vk: "ae.vk"; vl: "ae.vl"; vm: "ae.vm"; vn: "ae.vn"; vo: "ae.vo"; vp: "ae.vp"; vq: "ae.vq"; vr: "ae.vr"; vs: "ae.vs"; vt: "ae.vt"; vu: "ae.vu"; vv: "ae.vv"; vw: "ae.vw"; vx: "ae.vx"; vy: "ae.vy"; vz: "ae.vz"; wa: "ae.wa"; wb: "ae.wb"; wc: "ae.wc"; wd: "ae.wd"; we: "ae.we"; wf: "ae.wf"; wg: "ae.wg"; wh: "ae.wh"; wi: "ae.wi"; wj: "ae.wj"; wk: "ae.wk"; wl: "ae.wl"; wm: "ae.wm"; wn: "ae.wn"; wo: "ae.wo"; wp: "ae.wp"; wq: "ae.wq"; wr: "ae.wr"; ws: "ae.ws"; wt: "ae.wt"; wu: "ae.wu"; wv: "ae.wv"; ww: "ae.ww"; wx: "ae.wx"; wy: "ae.wy"; wz: "ae.wz"; xa: "ae.xa"; xb: "ae.xb"; xc: "ae.xc"; xd: "ae.xd"; xe: "ae.xe"; xf: "ae.xf"; xg: "ae.xg"; xh: "ae.xh"; xi: "ae.xi"; xj: "ae.xj"; xk: "ae.xk"; xl: "ae.xl"; xm: "ae.xm"; xn: "ae.xn"; xo: "ae.xo"; xp: "ae.xp"; xq: "ae.xq"; xr: "ae.xr"; xs: "ae.xs"; xt: "ae.xt"; xu: "ae.xu"; xv: "ae.xv"; xw: "ae.xw"; xx: "ae.xx"; xy: "ae.xy"; xz: "ae.xz"; ya: "ae.ya"; yb: "ae.yb"; yc: "ae.yc"; yd: "ae.yd"; ye: "ae.ye"; yf: "ae.yf"; yg: "ae.yg"; yh: "ae.yh"; yi: "ae.yi"; yj: "ae.yj"; yk: "ae.yk"; yl: "ae.yl"; ym: "ae.ym"; yn: "ae.yn"; yo: "ae.yo"; yp: "ae.yp"; yq: "ae.yq"; yr: "ae.yr"; ys: "ae.ys"; yt: "ae.yt"; yu: "ae.yu"; yv: "ae.yv"; yw: "ae.yw"; yx: "ae.yx"; yy: "ae.yy"; yz: "ae.yz"; za: "ae.za"; zb: "ae.zb"; zc: "ae.zc"; zd: "ae.zd"; ze: "ae.ze"; zf: "ae.zf"; zg: "ae.zg"; zh: "ae.zh"; zi: "ae.zi"; zj: "ae.zj"; zk: "ae.zk"; zl: "ae.zl"; zm: "ae.zm"; zn: "ae.zn"; zo: "ae.zo"; zp: "ae.zp"; zq: "ae.zq"; zr: "ae.zr"; zs: "ae.zs"; zt: "ae.zt"; zu: "ae.zu"; zv: "ae.zv"; zw: "ae.zw"; zx: "ae.zx"; zy: "ae.zy"; zz: "ae.zz"; }; af: { aa: "af.aa"; ab: "af.ab"; ac: "af.ac"; ad: "af.ad"; ae: "af.ae"; af: "af.af"; ag: "af.ag"; ah: "af.ah"; ai: "af.ai"; aj: "af.aj"; ak: "af.ak"; al: "af.al"; am: "af.am"; an: "af.an"; ao: "af.ao"; ap: "af.ap"; aq: "af.aq"; ar: "af.ar"; as: "af.as"; at: "af.at"; au: "af.au"; av: "af.av"; aw: "af.aw"; ax: "af.ax"; ay: "af.ay"; az: "af.az"; ba: "af.ba"; bb: "af.bb"; bc: "af.bc"; bd: "af.bd"; be: "af.be"; bf: "af.bf"; bg: "af.bg"; bh: "af.bh"; bi: "af.bi"; bj: "af.bj"; bk: "af.bk"; bl: "af.bl"; bm: "af.bm"; bn: "af.bn"; bo: "af.bo"; bp: "af.bp"; bq: "af.bq"; br: "af.br"; bs: "af.bs"; bt: "af.bt"; bu: "af.bu"; bv: "af.bv"; bw: "af.bw"; bx: "af.bx"; by: "af.by"; bz: "af.bz"; ca: "af.ca"; cb: "af.cb"; cc: "af.cc"; cd: "af.cd"; ce: "af.ce"; cf: "af.cf"; cg: "af.cg"; ch: "af.ch"; ci: "af.ci"; cj: "af.cj"; ck: "af.ck"; cl: "af.cl"; cm: "af.cm"; cn: "af.cn"; co: "af.co"; cp: "af.cp"; cq: "af.cq"; cr: "af.cr"; cs: "af.cs"; ct: "af.ct"; cu: "af.cu"; cv: "af.cv"; cw: "af.cw"; cx: "af.cx"; cy: "af.cy"; cz: "af.cz"; da: "af.da"; db: "af.db"; dc: "af.dc"; dd: "af.dd"; de: "af.de"; df: "af.df"; dg: "af.dg"; dh: "af.dh"; di: "af.di"; dj: "af.dj"; dk: "af.dk"; dl: "af.dl"; dm: "af.dm"; dn: "af.dn"; do: "af.do"; dp: "af.dp"; dq: "af.dq"; dr: "af.dr"; ds: "af.ds"; dt: "af.dt"; du: "af.du"; dv: "af.dv"; dw: "af.dw"; dx: "af.dx"; dy: "af.dy"; dz: "af.dz"; ea: "af.ea"; eb: "af.eb"; ec: "af.ec"; ed: "af.ed"; ee: "af.ee"; ef: "af.ef"; eg: "af.eg"; eh: "af.eh"; ei: "af.ei"; ej: "af.ej"; ek: "af.ek"; el: "af.el"; em: "af.em"; en: "af.en"; eo: "af.eo"; ep: "af.ep"; eq: "af.eq"; er: "af.er"; es: "af.es"; et: "af.et"; eu: "af.eu"; ev: "af.ev"; ew: "af.ew"; ex: "af.ex"; ey: "af.ey"; ez: "af.ez"; fa: "af.fa"; fb: "af.fb"; fc: "af.fc"; fd: "af.fd"; fe: "af.fe"; ff: "af.ff"; fg: "af.fg"; fh: "af.fh"; fi: "af.fi"; fj: "af.fj"; fk: "af.fk"; fl: "af.fl"; fm: "af.fm"; fn: "af.fn"; fo: "af.fo"; fp: "af.fp"; fq: "af.fq"; fr: "af.fr"; fs: "af.fs"; ft: "af.ft"; fu: "af.fu"; fv: "af.fv"; fw: "af.fw"; fx: "af.fx"; fy: "af.fy"; fz: "af.fz"; ga: "af.ga"; gb: "af.gb"; gc: "af.gc"; gd: "af.gd"; ge: "af.ge"; gf: "af.gf"; gg: "af.gg"; gh: "af.gh"; gi: "af.gi"; gj: "af.gj"; gk: "af.gk"; gl: "af.gl"; gm: "af.gm"; gn: "af.gn"; go: "af.go"; gp: "af.gp"; gq: "af.gq"; gr: "af.gr"; gs: "af.gs"; gt: "af.gt"; gu: "af.gu"; gv: "af.gv"; gw: "af.gw"; gx: "af.gx"; gy: "af.gy"; gz: "af.gz"; ha: "af.ha"; hb: "af.hb"; hc: "af.hc"; hd: "af.hd"; he: "af.he"; hf: "af.hf"; hg: "af.hg"; hh: "af.hh"; hi: "af.hi"; hj: "af.hj"; hk: "af.hk"; hl: "af.hl"; hm: "af.hm"; hn: "af.hn"; ho: "af.ho"; hp: "af.hp"; hq: "af.hq"; hr: "af.hr"; hs: "af.hs"; ht: "af.ht"; hu: "af.hu"; hv: "af.hv"; hw: "af.hw"; hx: "af.hx"; hy: "af.hy"; hz: "af.hz"; ia: "af.ia"; ib: "af.ib"; ic: "af.ic"; id: "af.id"; ie: "af.ie"; if: "af.if"; ig: "af.ig"; ih: "af.ih"; ii: "af.ii"; ij: "af.ij"; ik: "af.ik"; il: "af.il"; im: "af.im"; in: "af.in"; io: "af.io"; ip: "af.ip"; iq: "af.iq"; ir: "af.ir"; is: "af.is"; it: "af.it"; iu: "af.iu"; iv: "af.iv"; iw: "af.iw"; ix: "af.ix"; iy: "af.iy"; iz: "af.iz"; ja: "af.ja"; jb: "af.jb"; jc: "af.jc"; jd: "af.jd"; je: "af.je"; jf: "af.jf"; jg: "af.jg"; jh: "af.jh"; ji: "af.ji"; jj: "af.jj"; jk: "af.jk"; jl: "af.jl"; jm: "af.jm"; jn: "af.jn"; jo: "af.jo"; jp: "af.jp"; jq: "af.jq"; jr: "af.jr"; js: "af.js"; jt: "af.jt"; ju: "af.ju"; jv: "af.jv"; jw: "af.jw"; jx: "af.jx"; jy: "af.jy"; jz: "af.jz"; ka: "af.ka"; kb: "af.kb"; kc: "af.kc"; kd: "af.kd"; ke: "af.ke"; kf: "af.kf"; kg: "af.kg"; kh: "af.kh"; ki: "af.ki"; kj: "af.kj"; kk: "af.kk"; kl: "af.kl"; km: "af.km"; kn: "af.kn"; ko: "af.ko"; kp: "af.kp"; kq: "af.kq"; kr: "af.kr"; ks: "af.ks"; kt: "af.kt"; ku: "af.ku"; kv: "af.kv"; kw: "af.kw"; kx: "af.kx"; ky: "af.ky"; kz: "af.kz"; la: "af.la"; lb: "af.lb"; lc: "af.lc"; ld: "af.ld"; le: "af.le"; lf: "af.lf"; lg: "af.lg"; lh: "af.lh"; li: "af.li"; lj: "af.lj"; lk: "af.lk"; ll: "af.ll"; lm: "af.lm"; ln: "af.ln"; lo: "af.lo"; lp: "af.lp"; lq: "af.lq"; lr: "af.lr"; ls: "af.ls"; lt: "af.lt"; lu: "af.lu"; lv: "af.lv"; lw: "af.lw"; lx: "af.lx"; ly: "af.ly"; lz: "af.lz"; ma: "af.ma"; mb: "af.mb"; mc: "af.mc"; md: "af.md"; me: "af.me"; mf: "af.mf"; mg: "af.mg"; mh: "af.mh"; mi: "af.mi"; mj: "af.mj"; mk: "af.mk"; ml: "af.ml"; mm: "af.mm"; mn: "af.mn"; mo: "af.mo"; mp: "af.mp"; mq: "af.mq"; mr: "af.mr"; ms: "af.ms"; mt: "af.mt"; mu: "af.mu"; mv: "af.mv"; mw: "af.mw"; mx: "af.mx"; my: "af.my"; mz: "af.mz"; na: "af.na"; nb: "af.nb"; nc: "af.nc"; nd: "af.nd"; ne: "af.ne"; nf: "af.nf"; ng: "af.ng"; nh: "af.nh"; ni: "af.ni"; nj: "af.nj"; nk: "af.nk"; nl: "af.nl"; nm: "af.nm"; nn: "af.nn"; no: "af.no"; np: "af.np"; nq: "af.nq"; nr: "af.nr"; ns: "af.ns"; nt: "af.nt"; nu: "af.nu"; nv: "af.nv"; nw: "af.nw"; nx: "af.nx"; ny: "af.ny"; nz: "af.nz"; oa: "af.oa"; ob: "af.ob"; oc: "af.oc"; od: "af.od"; oe: "af.oe"; of: "af.of"; og: "af.og"; oh: "af.oh"; oi: "af.oi"; oj: "af.oj"; ok: "af.ok"; ol: "af.ol"; om: "af.om"; on: "af.on"; oo: "af.oo"; op: "af.op"; oq: "af.oq"; or: "af.or"; os: "af.os"; ot: "af.ot"; ou: "af.ou"; ov: "af.ov"; ow: "af.ow"; ox: "af.ox"; oy: "af.oy"; oz: "af.oz"; pa: "af.pa"; pb: "af.pb"; pc: "af.pc"; pd: "af.pd"; pe: "af.pe"; pf: "af.pf"; pg: "af.pg"; ph: "af.ph"; pi: "af.pi"; pj: "af.pj"; pk: "af.pk"; pl: "af.pl"; pm: "af.pm"; pn: "af.pn"; po: "af.po"; pp: "af.pp"; pq: "af.pq"; pr: "af.pr"; ps: "af.ps"; pt: "af.pt"; pu: "af.pu"; pv: "af.pv"; pw: "af.pw"; px: "af.px"; py: "af.py"; pz: "af.pz"; qa: "af.qa"; qb: "af.qb"; qc: "af.qc"; qd: "af.qd"; qe: "af.qe"; qf: "af.qf"; qg: "af.qg"; qh: "af.qh"; qi: "af.qi"; qj: "af.qj"; qk: "af.qk"; ql: "af.ql"; qm: "af.qm"; qn: "af.qn"; qo: "af.qo"; qp: "af.qp"; qq: "af.qq"; qr: "af.qr"; qs: "af.qs"; qt: "af.qt"; qu: "af.qu"; qv: "af.qv"; qw: "af.qw"; qx: "af.qx"; qy: "af.qy"; qz: "af.qz"; ra: "af.ra"; rb: "af.rb"; rc: "af.rc"; rd: "af.rd"; re: "af.re"; rf: "af.rf"; rg: "af.rg"; rh: "af.rh"; ri: "af.ri"; rj: "af.rj"; rk: "af.rk"; rl: "af.rl"; rm: "af.rm"; rn: "af.rn"; ro: "af.ro"; rp: "af.rp"; rq: "af.rq"; rr: "af.rr"; rs: "af.rs"; rt: "af.rt"; ru: "af.ru"; rv: "af.rv"; rw: "af.rw"; rx: "af.rx"; ry: "af.ry"; rz: "af.rz"; sa: "af.sa"; sb: "af.sb"; sc: "af.sc"; sd: "af.sd"; se: "af.se"; sf: "af.sf"; sg: "af.sg"; sh: "af.sh"; si: "af.si"; sj: "af.sj"; sk: "af.sk"; sl: "af.sl"; sm: "af.sm"; sn: "af.sn"; so: "af.so"; sp: "af.sp"; sq: "af.sq"; sr: "af.sr"; ss: "af.ss"; st: "af.st"; su: "af.su"; sv: "af.sv"; sw: "af.sw"; sx: "af.sx"; sy: "af.sy"; sz: "af.sz"; ta: "af.ta"; tb: "af.tb"; tc: "af.tc"; td: "af.td"; te: "af.te"; tf: "af.tf"; tg: "af.tg"; th: "af.th"; ti: "af.ti"; tj: "af.tj"; tk: "af.tk"; tl: "af.tl"; tm: "af.tm"; tn: "af.tn"; to: "af.to"; tp: "af.tp"; tq: "af.tq"; tr: "af.tr"; ts: "af.ts"; tt: "af.tt"; tu: "af.tu"; tv: "af.tv"; tw: "af.tw"; tx: "af.tx"; ty: "af.ty"; tz: "af.tz"; ua: "af.ua"; ub: "af.ub"; uc: "af.uc"; ud: "af.ud"; ue: "af.ue"; uf: "af.uf"; ug: "af.ug"; uh: "af.uh"; ui: "af.ui"; uj: "af.uj"; uk: "af.uk"; ul: "af.ul"; um: "af.um"; un: "af.un"; uo: "af.uo"; up: "af.up"; uq: "af.uq"; ur: "af.ur"; us: "af.us"; ut: "af.ut"; uu: "af.uu"; uv: "af.uv"; uw: "af.uw"; ux: "af.ux"; uy: "af.uy"; uz: "af.uz"; va: "af.va"; vb: "af.vb"; vc: "af.vc"; vd: "af.vd"; ve: "af.ve"; vf: "af.vf"; vg: "af.vg"; vh: "af.vh"; vi: "af.vi"; vj: "af.vj"; vk: "af.vk"; vl: "af.vl"; vm: "af.vm"; vn: "af.vn"; vo: "af.vo"; vp: "af.vp"; vq: "af.vq"; vr: "af.vr"; vs: "af.vs"; vt: "af.vt"; vu: "af.vu"; vv: "af.vv"; vw: "af.vw"; vx: "af.vx"; vy: "af.vy"; vz: "af.vz"; wa: "af.wa"; wb: "af.wb"; wc: "af.wc"; wd: "af.wd"; we: "af.we"; wf: "af.wf"; wg: "af.wg"; wh: "af.wh"; wi: "af.wi"; wj: "af.wj"; wk: "af.wk"; wl: "af.wl"; wm: "af.wm"; wn: "af.wn"; wo: "af.wo"; wp: "af.wp"; wq: "af.wq"; wr: "af.wr"; ws: "af.ws"; wt: "af.wt"; wu: "af.wu"; wv: "af.wv"; ww: "af.ww"; wx: "af.wx"; wy: "af.wy"; wz: "af.wz"; xa: "af.xa"; xb: "af.xb"; xc: "af.xc"; xd: "af.xd"; xe: "af.xe"; xf: "af.xf"; xg: "af.xg"; xh: "af.xh"; xi: "af.xi"; xj: "af.xj"; xk: "af.xk"; xl: "af.xl"; xm: "af.xm"; xn: "af.xn"; xo: "af.xo"; xp: "af.xp"; xq: "af.xq"; xr: "af.xr"; xs: "af.xs"; xt: "af.xt"; xu: "af.xu"; xv: "af.xv"; xw: "af.xw"; xx: "af.xx"; xy: "af.xy"; xz: "af.xz"; ya: "af.ya"; yb: "af.yb"; yc: "af.yc"; yd: "af.yd"; ye: "af.ye"; yf: "af.yf"; yg: "af.yg"; yh: "af.yh"; yi: "af.yi"; yj: "af.yj"; yk: "af.yk"; yl: "af.yl"; ym: "af.ym"; yn: "af.yn"; yo: "af.yo"; yp: "af.yp"; yq: "af.yq"; yr: "af.yr"; ys: "af.ys"; yt: "af.yt"; yu: "af.yu"; yv: "af.yv"; yw: "af.yw"; yx: "af.yx"; yy: "af.yy"; yz: "af.yz"; za: "af.za"; zb: "af.zb"; zc: "af.zc"; zd: "af.zd"; ze: "af.ze"; zf: "af.zf"; zg: "af.zg"; zh: "af.zh"; zi: "af.zi"; zj: "af.zj"; zk: "af.zk"; zl: "af.zl"; zm: "af.zm"; zn: "af.zn"; zo: "af.zo"; zp: "af.zp"; zq: "af.zq"; zr: "af.zr"; zs: "af.zs"; zt: "af.zt"; zu: "af.zu"; zv: "af.zv"; zw: "af.zw"; zx: "af.zx"; zy: "af.zy"; zz: "af.zz"; }; ag: { aa: "ag.aa"; ab: "ag.ab"; ac: "ag.ac"; ad: "ag.ad"; ae: "ag.ae"; af: "ag.af"; ag: "ag.ag"; ah: "ag.ah"; ai: "ag.ai"; aj: "ag.aj"; ak: "ag.ak"; al: "ag.al"; am: "ag.am"; an: "ag.an"; ao: "ag.ao"; ap: "ag.ap"; aq: "ag.aq"; ar: "ag.ar"; as: "ag.as"; at: "ag.at"; au: "ag.au"; av: "ag.av"; aw: "ag.aw"; ax: "ag.ax"; ay: "ag.ay"; az: "ag.az"; ba: "ag.ba"; bb: "ag.bb"; bc: "ag.bc"; bd: "ag.bd"; be: "ag.be"; bf: "ag.bf"; bg: "ag.bg"; bh: "ag.bh"; bi: "ag.bi"; bj: "ag.bj"; bk: "ag.bk"; bl: "ag.bl"; bm: "ag.bm"; bn: "ag.bn"; bo: "ag.bo"; bp: "ag.bp"; bq: "ag.bq"; br: "ag.br"; bs: "ag.bs"; bt: "ag.bt"; bu: "ag.bu"; bv: "ag.bv"; bw: "ag.bw"; bx: "ag.bx"; by: "ag.by"; bz: "ag.bz"; ca: "ag.ca"; cb: "ag.cb"; cc: "ag.cc"; cd: "ag.cd"; ce: "ag.ce"; cf: "ag.cf"; cg: "ag.cg"; ch: "ag.ch"; ci: "ag.ci"; cj: "ag.cj"; ck: "ag.ck"; cl: "ag.cl"; cm: "ag.cm"; cn: "ag.cn"; co: "ag.co"; cp: "ag.cp"; cq: "ag.cq"; cr: "ag.cr"; cs: "ag.cs"; ct: "ag.ct"; cu: "ag.cu"; cv: "ag.cv"; cw: "ag.cw"; cx: "ag.cx"; cy: "ag.cy"; cz: "ag.cz"; da: "ag.da"; db: "ag.db"; dc: "ag.dc"; dd: "ag.dd"; de: "ag.de"; df: "ag.df"; dg: "ag.dg"; dh: "ag.dh"; di: "ag.di"; dj: "ag.dj"; dk: "ag.dk"; dl: "ag.dl"; dm: "ag.dm"; dn: "ag.dn"; do: "ag.do"; dp: "ag.dp"; dq: "ag.dq"; dr: "ag.dr"; ds: "ag.ds"; dt: "ag.dt"; du: "ag.du"; dv: "ag.dv"; dw: "ag.dw"; dx: "ag.dx"; dy: "ag.dy"; dz: "ag.dz"; ea: "ag.ea"; eb: "ag.eb"; ec: "ag.ec"; ed: "ag.ed"; ee: "ag.ee"; ef: "ag.ef"; eg: "ag.eg"; eh: "ag.eh"; ei: "ag.ei"; ej: "ag.ej"; ek: "ag.ek"; el: "ag.el"; em: "ag.em"; en: "ag.en"; eo: "ag.eo"; ep: "ag.ep"; eq: "ag.eq"; er: "ag.er"; es: "ag.es"; et: "ag.et"; eu: "ag.eu"; ev: "ag.ev"; ew: "ag.ew"; ex: "ag.ex"; ey: "ag.ey"; ez: "ag.ez"; fa: "ag.fa"; fb: "ag.fb"; fc: "ag.fc"; fd: "ag.fd"; fe: "ag.fe"; ff: "ag.ff"; fg: "ag.fg"; fh: "ag.fh"; fi: "ag.fi"; fj: "ag.fj"; fk: "ag.fk"; fl: "ag.fl"; fm: "ag.fm"; fn: "ag.fn"; fo: "ag.fo"; fp: "ag.fp"; fq: "ag.fq"; fr: "ag.fr"; fs: "ag.fs"; ft: "ag.ft"; fu: "ag.fu"; fv: "ag.fv"; fw: "ag.fw"; fx: "ag.fx"; fy: "ag.fy"; fz: "ag.fz"; ga: "ag.ga"; gb: "ag.gb"; gc: "ag.gc"; gd: "ag.gd"; ge: "ag.ge"; gf: "ag.gf"; gg: "ag.gg"; gh: "ag.gh"; gi: "ag.gi"; gj: "ag.gj"; gk: "ag.gk"; gl: "ag.gl"; gm: "ag.gm"; gn: "ag.gn"; go: "ag.go"; gp: "ag.gp"; gq: "ag.gq"; gr: "ag.gr"; gs: "ag.gs"; gt: "ag.gt"; gu: "ag.gu"; gv: "ag.gv"; gw: "ag.gw"; gx: "ag.gx"; gy: "ag.gy"; gz: "ag.gz"; ha: "ag.ha"; hb: "ag.hb"; hc: "ag.hc"; hd: "ag.hd"; he: "ag.he"; hf: "ag.hf"; hg: "ag.hg"; hh: "ag.hh"; hi: "ag.hi"; hj: "ag.hj"; hk: "ag.hk"; hl: "ag.hl"; hm: "ag.hm"; hn: "ag.hn"; ho: "ag.ho"; hp: "ag.hp"; hq: "ag.hq"; hr: "ag.hr"; hs: "ag.hs"; ht: "ag.ht"; hu: "ag.hu"; hv: "ag.hv"; hw: "ag.hw"; hx: "ag.hx"; hy: "ag.hy"; hz: "ag.hz"; ia: "ag.ia"; ib: "ag.ib"; ic: "ag.ic"; id: "ag.id"; ie: "ag.ie"; if: "ag.if"; ig: "ag.ig"; ih: "ag.ih"; ii: "ag.ii"; ij: "ag.ij"; ik: "ag.ik"; il: "ag.il"; im: "ag.im"; in: "ag.in"; io: "ag.io"; ip: "ag.ip"; iq: "ag.iq"; ir: "ag.ir"; is: "ag.is"; it: "ag.it"; iu: "ag.iu"; iv: "ag.iv"; iw: "ag.iw"; ix: "ag.ix"; iy: "ag.iy"; iz: "ag.iz"; ja: "ag.ja"; jb: "ag.jb"; jc: "ag.jc"; jd: "ag.jd"; je: "ag.je"; jf: "ag.jf"; jg: "ag.jg"; jh: "ag.jh"; ji: "ag.ji"; jj: "ag.jj"; jk: "ag.jk"; jl: "ag.jl"; jm: "ag.jm"; jn: "ag.jn"; jo: "ag.jo"; jp: "ag.jp"; jq: "ag.jq"; jr: "ag.jr"; js: "ag.js"; jt: "ag.jt"; ju: "ag.ju"; jv: "ag.jv"; jw: "ag.jw"; jx: "ag.jx"; jy: "ag.jy"; jz: "ag.jz"; ka: "ag.ka"; kb: "ag.kb"; kc: "ag.kc"; kd: "ag.kd"; ke: "ag.ke"; kf: "ag.kf"; kg: "ag.kg"; kh: "ag.kh"; ki: "ag.ki"; kj: "ag.kj"; kk: "ag.kk"; kl: "ag.kl"; km: "ag.km"; kn: "ag.kn"; ko: "ag.ko"; kp: "ag.kp"; kq: "ag.kq"; kr: "ag.kr"; ks: "ag.ks"; kt: "ag.kt"; ku: "ag.ku"; kv: "ag.kv"; kw: "ag.kw"; kx: "ag.kx"; ky: "ag.ky"; kz: "ag.kz"; la: "ag.la"; lb: "ag.lb"; lc: "ag.lc"; ld: "ag.ld"; le: "ag.le"; lf: "ag.lf"; lg: "ag.lg"; lh: "ag.lh"; li: "ag.li"; lj: "ag.lj"; lk: "ag.lk"; ll: "ag.ll"; lm: "ag.lm"; ln: "ag.ln"; lo: "ag.lo"; lp: "ag.lp"; lq: "ag.lq"; lr: "ag.lr"; ls: "ag.ls"; lt: "ag.lt"; lu: "ag.lu"; lv: "ag.lv"; lw: "ag.lw"; lx: "ag.lx"; ly: "ag.ly"; lz: "ag.lz"; ma: "ag.ma"; mb: "ag.mb"; mc: "ag.mc"; md: "ag.md"; me: "ag.me"; mf: "ag.mf"; mg: "ag.mg"; mh: "ag.mh"; mi: "ag.mi"; mj: "ag.mj"; mk: "ag.mk"; ml: "ag.ml"; mm: "ag.mm"; mn: "ag.mn"; mo: "ag.mo"; mp: "ag.mp"; mq: "ag.mq"; mr: "ag.mr"; ms: "ag.ms"; mt: "ag.mt"; mu: "ag.mu"; mv: "ag.mv"; mw: "ag.mw"; mx: "ag.mx"; my: "ag.my"; mz: "ag.mz"; na: "ag.na"; nb: "ag.nb"; nc: "ag.nc"; nd: "ag.nd"; ne: "ag.ne"; nf: "ag.nf"; ng: "ag.ng"; nh: "ag.nh"; ni: "ag.ni"; nj: "ag.nj"; nk: "ag.nk"; nl: "ag.nl"; nm: "ag.nm"; nn: "ag.nn"; no: "ag.no"; np: "ag.np"; nq: "ag.nq"; nr: "ag.nr"; ns: "ag.ns"; nt: "ag.nt"; nu: "ag.nu"; nv: "ag.nv"; nw: "ag.nw"; nx: "ag.nx"; ny: "ag.ny"; nz: "ag.nz"; oa: "ag.oa"; ob: "ag.ob"; oc: "ag.oc"; od: "ag.od"; oe: "ag.oe"; of: "ag.of"; og: "ag.og"; oh: "ag.oh"; oi: "ag.oi"; oj: "ag.oj"; ok: "ag.ok"; ol: "ag.ol"; om: "ag.om"; on: "ag.on"; oo: "ag.oo"; op: "ag.op"; oq: "ag.oq"; or: "ag.or"; os: "ag.os"; ot: "ag.ot"; ou: "ag.ou"; ov: "ag.ov"; ow: "ag.ow"; ox: "ag.ox"; oy: "ag.oy"; oz: "ag.oz"; pa: "ag.pa"; pb: "ag.pb"; pc: "ag.pc"; pd: "ag.pd"; pe: "ag.pe"; pf: "ag.pf"; pg: "ag.pg"; ph: "ag.ph"; pi: "ag.pi"; pj: "ag.pj"; pk: "ag.pk"; pl: "ag.pl"; pm: "ag.pm"; pn: "ag.pn"; po: "ag.po"; pp: "ag.pp"; pq: "ag.pq"; pr: "ag.pr"; ps: "ag.ps"; pt: "ag.pt"; pu: "ag.pu"; pv: "ag.pv"; pw: "ag.pw"; px: "ag.px"; py: "ag.py"; pz: "ag.pz"; qa: "ag.qa"; qb: "ag.qb"; qc: "ag.qc"; qd: "ag.qd"; qe: "ag.qe"; qf: "ag.qf"; qg: "ag.qg"; qh: "ag.qh"; qi: "ag.qi"; qj: "ag.qj"; qk: "ag.qk"; ql: "ag.ql"; qm: "ag.qm"; qn: "ag.qn"; qo: "ag.qo"; qp: "ag.qp"; qq: "ag.qq"; qr: "ag.qr"; qs: "ag.qs"; qt: "ag.qt"; qu: "ag.qu"; qv: "ag.qv"; qw: "ag.qw"; qx: "ag.qx"; qy: "ag.qy"; qz: "ag.qz"; ra: "ag.ra"; rb: "ag.rb"; rc: "ag.rc"; rd: "ag.rd"; re: "ag.re"; rf: "ag.rf"; rg: "ag.rg"; rh: "ag.rh"; ri: "ag.ri"; rj: "ag.rj"; rk: "ag.rk"; rl: "ag.rl"; rm: "ag.rm"; rn: "ag.rn"; ro: "ag.ro"; rp: "ag.rp"; rq: "ag.rq"; rr: "ag.rr"; rs: "ag.rs"; rt: "ag.rt"; ru: "ag.ru"; rv: "ag.rv"; rw: "ag.rw"; rx: "ag.rx"; ry: "ag.ry"; rz: "ag.rz"; sa: "ag.sa"; sb: "ag.sb"; sc: "ag.sc"; sd: "ag.sd"; se: "ag.se"; sf: "ag.sf"; sg: "ag.sg"; sh: "ag.sh"; si: "ag.si"; sj: "ag.sj"; sk: "ag.sk"; sl: "ag.sl"; sm: "ag.sm"; sn: "ag.sn"; so: "ag.so"; sp: "ag.sp"; sq: "ag.sq"; sr: "ag.sr"; ss: "ag.ss"; st: "ag.st"; su: "ag.su"; sv: "ag.sv"; sw: "ag.sw"; sx: "ag.sx"; sy: "ag.sy"; sz: "ag.sz"; ta: "ag.ta"; tb: "ag.tb"; tc: "ag.tc"; td: "ag.td"; te: "ag.te"; tf: "ag.tf"; tg: "ag.tg"; th: "ag.th"; ti: "ag.ti"; tj: "ag.tj"; tk: "ag.tk"; tl: "ag.tl"; tm: "ag.tm"; tn: "ag.tn"; to: "ag.to"; tp: "ag.tp"; tq: "ag.tq"; tr: "ag.tr"; ts: "ag.ts"; tt: "ag.tt"; tu: "ag.tu"; tv: "ag.tv"; tw: "ag.tw"; tx: "ag.tx"; ty: "ag.ty"; tz: "ag.tz"; ua: "ag.ua"; ub: "ag.ub"; uc: "ag.uc"; ud: "ag.ud"; ue: "ag.ue"; uf: "ag.uf"; ug: "ag.ug"; uh: "ag.uh"; ui: "ag.ui"; uj: "ag.uj"; uk: "ag.uk"; ul: "ag.ul"; um: "ag.um"; un: "ag.un"; uo: "ag.uo"; up: "ag.up"; uq: "ag.uq"; ur: "ag.ur"; us: "ag.us"; ut: "ag.ut"; uu: "ag.uu"; uv: "ag.uv"; uw: "ag.uw"; ux: "ag.ux"; uy: "ag.uy"; uz: "ag.uz"; va: "ag.va"; vb: "ag.vb"; vc: "ag.vc"; vd: "ag.vd"; ve: "ag.ve"; vf: "ag.vf"; vg: "ag.vg"; vh: "ag.vh"; vi: "ag.vi"; vj: "ag.vj"; vk: "ag.vk"; vl: "ag.vl"; vm: "ag.vm"; vn: "ag.vn"; vo: "ag.vo"; vp: "ag.vp"; vq: "ag.vq"; vr: "ag.vr"; vs: "ag.vs"; vt: "ag.vt"; vu: "ag.vu"; vv: "ag.vv"; vw: "ag.vw"; vx: "ag.vx"; vy: "ag.vy"; vz: "ag.vz"; wa: "ag.wa"; wb: "ag.wb"; wc: "ag.wc"; wd: "ag.wd"; we: "ag.we"; wf: "ag.wf"; wg: "ag.wg"; wh: "ag.wh"; wi: "ag.wi"; wj: "ag.wj"; wk: "ag.wk"; wl: "ag.wl"; wm: "ag.wm"; wn: "ag.wn"; wo: "ag.wo"; wp: "ag.wp"; wq: "ag.wq"; wr: "ag.wr"; ws: "ag.ws"; wt: "ag.wt"; wu: "ag.wu"; wv: "ag.wv"; ww: "ag.ww"; wx: "ag.wx"; wy: "ag.wy"; wz: "ag.wz"; xa: "ag.xa"; xb: "ag.xb"; xc: "ag.xc"; xd: "ag.xd"; xe: "ag.xe"; xf: "ag.xf"; xg: "ag.xg"; xh: "ag.xh"; xi: "ag.xi"; xj: "ag.xj"; xk: "ag.xk"; xl: "ag.xl"; xm: "ag.xm"; xn: "ag.xn"; xo: "ag.xo"; xp: "ag.xp"; xq: "ag.xq"; xr: "ag.xr"; xs: "ag.xs"; xt: "ag.xt"; xu: "ag.xu"; xv: "ag.xv"; xw: "ag.xw"; xx: "ag.xx"; xy: "ag.xy"; xz: "ag.xz"; ya: "ag.ya"; yb: "ag.yb"; yc: "ag.yc"; yd: "ag.yd"; ye: "ag.ye"; yf: "ag.yf"; yg: "ag.yg"; yh: "ag.yh"; yi: "ag.yi"; yj: "ag.yj"; yk: "ag.yk"; yl: "ag.yl"; ym: "ag.ym"; yn: "ag.yn"; yo: "ag.yo"; yp: "ag.yp"; yq: "ag.yq"; yr: "ag.yr"; ys: "ag.ys"; yt: "ag.yt"; yu: "ag.yu"; yv: "ag.yv"; yw: "ag.yw"; yx: "ag.yx"; yy: "ag.yy"; yz: "ag.yz"; za: "ag.za"; zb: "ag.zb"; zc: "ag.zc"; zd: "ag.zd"; ze: "ag.ze"; zf: "ag.zf"; zg: "ag.zg"; zh: "ag.zh"; zi: "ag.zi"; zj: "ag.zj"; zk: "ag.zk"; zl: "ag.zl"; zm: "ag.zm"; zn: "ag.zn"; zo: "ag.zo"; zp: "ag.zp"; zq: "ag.zq"; zr: "ag.zr"; zs: "ag.zs"; zt: "ag.zt"; zu: "ag.zu"; zv: "ag.zv"; zw: "ag.zw"; zx: "ag.zx"; zy: "ag.zy"; zz: "ag.zz"; }; ah: { aa: "ah.aa"; ab: "ah.ab"; ac: "ah.ac"; ad: "ah.ad"; ae: "ah.ae"; af: "ah.af"; ag: "ah.ag"; ah: "ah.ah"; ai: "ah.ai"; aj: "ah.aj"; ak: "ah.ak"; al: "ah.al"; am: "ah.am"; an: "ah.an"; ao: "ah.ao"; ap: "ah.ap"; aq: "ah.aq"; ar: "ah.ar"; as: "ah.as"; at: "ah.at"; au: "ah.au"; av: "ah.av"; aw: "ah.aw"; ax: "ah.ax"; ay: "ah.ay"; az: "ah.az"; ba: "ah.ba"; bb: "ah.bb"; bc: "ah.bc"; bd: "ah.bd"; be: "ah.be"; bf: "ah.bf"; bg: "ah.bg"; bh: "ah.bh"; bi: "ah.bi"; bj: "ah.bj"; bk: "ah.bk"; bl: "ah.bl"; bm: "ah.bm"; bn: "ah.bn"; bo: "ah.bo"; bp: "ah.bp"; bq: "ah.bq"; br: "ah.br"; bs: "ah.bs"; bt: "ah.bt"; bu: "ah.bu"; bv: "ah.bv"; bw: "ah.bw"; bx: "ah.bx"; by: "ah.by"; bz: "ah.bz"; ca: "ah.ca"; cb: "ah.cb"; cc: "ah.cc"; cd: "ah.cd"; ce: "ah.ce"; cf: "ah.cf"; cg: "ah.cg"; ch: "ah.ch"; ci: "ah.ci"; cj: "ah.cj"; ck: "ah.ck"; cl: "ah.cl"; cm: "ah.cm"; cn: "ah.cn"; co: "ah.co"; cp: "ah.cp"; cq: "ah.cq"; cr: "ah.cr"; cs: "ah.cs"; ct: "ah.ct"; cu: "ah.cu"; cv: "ah.cv"; cw: "ah.cw"; cx: "ah.cx"; cy: "ah.cy"; cz: "ah.cz"; da: "ah.da"; db: "ah.db"; dc: "ah.dc"; dd: "ah.dd"; de: "ah.de"; df: "ah.df"; dg: "ah.dg"; dh: "ah.dh"; di: "ah.di"; dj: "ah.dj"; dk: "ah.dk"; dl: "ah.dl"; dm: "ah.dm"; dn: "ah.dn"; do: "ah.do"; dp: "ah.dp"; dq: "ah.dq"; dr: "ah.dr"; ds: "ah.ds"; dt: "ah.dt"; du: "ah.du"; dv: "ah.dv"; dw: "ah.dw"; dx: "ah.dx"; dy: "ah.dy"; dz: "ah.dz"; ea: "ah.ea"; eb: "ah.eb"; ec: "ah.ec"; ed: "ah.ed"; ee: "ah.ee"; ef: "ah.ef"; eg: "ah.eg"; eh: "ah.eh"; ei: "ah.ei"; ej: "ah.ej"; ek: "ah.ek"; el: "ah.el"; em: "ah.em"; en: "ah.en"; eo: "ah.eo"; ep: "ah.ep"; eq: "ah.eq"; er: "ah.er"; es: "ah.es"; et: "ah.et"; eu: "ah.eu"; ev: "ah.ev"; ew: "ah.ew"; ex: "ah.ex"; ey: "ah.ey"; ez: "ah.ez"; fa: "ah.fa"; fb: "ah.fb"; fc: "ah.fc"; fd: "ah.fd"; fe: "ah.fe"; ff: "ah.ff"; fg: "ah.fg"; fh: "ah.fh"; fi: "ah.fi"; fj: "ah.fj"; fk: "ah.fk"; fl: "ah.fl"; fm: "ah.fm"; fn: "ah.fn"; fo: "ah.fo"; fp: "ah.fp"; fq: "ah.fq"; fr: "ah.fr"; fs: "ah.fs"; ft: "ah.ft"; fu: "ah.fu"; fv: "ah.fv"; fw: "ah.fw"; fx: "ah.fx"; fy: "ah.fy"; fz: "ah.fz"; ga: "ah.ga"; gb: "ah.gb"; gc: "ah.gc"; gd: "ah.gd"; ge: "ah.ge"; gf: "ah.gf"; gg: "ah.gg"; gh: "ah.gh"; gi: "ah.gi"; gj: "ah.gj"; gk: "ah.gk"; gl: "ah.gl"; gm: "ah.gm"; gn: "ah.gn"; go: "ah.go"; gp: "ah.gp"; gq: "ah.gq"; gr: "ah.gr"; gs: "ah.gs"; gt: "ah.gt"; gu: "ah.gu"; gv: "ah.gv"; gw: "ah.gw"; gx: "ah.gx"; gy: "ah.gy"; gz: "ah.gz"; ha: "ah.ha"; hb: "ah.hb"; hc: "ah.hc"; hd: "ah.hd"; he: "ah.he"; hf: "ah.hf"; hg: "ah.hg"; hh: "ah.hh"; hi: "ah.hi"; hj: "ah.hj"; hk: "ah.hk"; hl: "ah.hl"; hm: "ah.hm"; hn: "ah.hn"; ho: "ah.ho"; hp: "ah.hp"; hq: "ah.hq"; hr: "ah.hr"; hs: "ah.hs"; ht: "ah.ht"; hu: "ah.hu"; hv: "ah.hv"; hw: "ah.hw"; hx: "ah.hx"; hy: "ah.hy"; hz: "ah.hz"; ia: "ah.ia"; ib: "ah.ib"; ic: "ah.ic"; id: "ah.id"; ie: "ah.ie"; if: "ah.if"; ig: "ah.ig"; ih: "ah.ih"; ii: "ah.ii"; ij: "ah.ij"; ik: "ah.ik"; il: "ah.il"; im: "ah.im"; in: "ah.in"; io: "ah.io"; ip: "ah.ip"; iq: "ah.iq"; ir: "ah.ir"; is: "ah.is"; it: "ah.it"; iu: "ah.iu"; iv: "ah.iv"; iw: "ah.iw"; ix: "ah.ix"; iy: "ah.iy"; iz: "ah.iz"; ja: "ah.ja"; jb: "ah.jb"; jc: "ah.jc"; jd: "ah.jd"; je: "ah.je"; jf: "ah.jf"; jg: "ah.jg"; jh: "ah.jh"; ji: "ah.ji"; jj: "ah.jj"; jk: "ah.jk"; jl: "ah.jl"; jm: "ah.jm"; jn: "ah.jn"; jo: "ah.jo"; jp: "ah.jp"; jq: "ah.jq"; jr: "ah.jr"; js: "ah.js"; jt: "ah.jt"; ju: "ah.ju"; jv: "ah.jv"; jw: "ah.jw"; jx: "ah.jx"; jy: "ah.jy"; jz: "ah.jz"; ka: "ah.ka"; kb: "ah.kb"; kc: "ah.kc"; kd: "ah.kd"; ke: "ah.ke"; kf: "ah.kf"; kg: "ah.kg"; kh: "ah.kh"; ki: "ah.ki"; kj: "ah.kj"; kk: "ah.kk"; kl: "ah.kl"; km: "ah.km"; kn: "ah.kn"; ko: "ah.ko"; kp: "ah.kp"; kq: "ah.kq"; kr: "ah.kr"; ks: "ah.ks"; kt: "ah.kt"; ku: "ah.ku"; kv: "ah.kv"; kw: "ah.kw"; kx: "ah.kx"; ky: "ah.ky"; kz: "ah.kz"; la: "ah.la"; lb: "ah.lb"; lc: "ah.lc"; ld: "ah.ld"; le: "ah.le"; lf: "ah.lf"; lg: "ah.lg"; lh: "ah.lh"; li: "ah.li"; lj: "ah.lj"; lk: "ah.lk"; ll: "ah.ll"; lm: "ah.lm"; ln: "ah.ln"; lo: "ah.lo"; lp: "ah.lp"; lq: "ah.lq"; lr: "ah.lr"; ls: "ah.ls"; lt: "ah.lt"; lu: "ah.lu"; lv: "ah.lv"; lw: "ah.lw"; lx: "ah.lx"; ly: "ah.ly"; lz: "ah.lz"; ma: "ah.ma"; mb: "ah.mb"; mc: "ah.mc"; md: "ah.md"; me: "ah.me"; mf: "ah.mf"; mg: "ah.mg"; mh: "ah.mh"; mi: "ah.mi"; mj: "ah.mj"; mk: "ah.mk"; ml: "ah.ml"; mm: "ah.mm"; mn: "ah.mn"; mo: "ah.mo"; mp: "ah.mp"; mq: "ah.mq"; mr: "ah.mr"; ms: "ah.ms"; mt: "ah.mt"; mu: "ah.mu"; mv: "ah.mv"; mw: "ah.mw"; mx: "ah.mx"; my: "ah.my"; mz: "ah.mz"; na: "ah.na"; nb: "ah.nb"; nc: "ah.nc"; nd: "ah.nd"; ne: "ah.ne"; nf: "ah.nf"; ng: "ah.ng"; nh: "ah.nh"; ni: "ah.ni"; nj: "ah.nj"; nk: "ah.nk"; nl: "ah.nl"; nm: "ah.nm"; nn: "ah.nn"; no: "ah.no"; np: "ah.np"; nq: "ah.nq"; nr: "ah.nr"; ns: "ah.ns"; nt: "ah.nt"; nu: "ah.nu"; nv: "ah.nv"; nw: "ah.nw"; nx: "ah.nx"; ny: "ah.ny"; nz: "ah.nz"; oa: "ah.oa"; ob: "ah.ob"; oc: "ah.oc"; od: "ah.od"; oe: "ah.oe"; of: "ah.of"; og: "ah.og"; oh: "ah.oh"; oi: "ah.oi"; oj: "ah.oj"; ok: "ah.ok"; ol: "ah.ol"; om: "ah.om"; on: "ah.on"; oo: "ah.oo"; op: "ah.op"; oq: "ah.oq"; or: "ah.or"; os: "ah.os"; ot: "ah.ot"; ou: "ah.ou"; ov: "ah.ov"; ow: "ah.ow"; ox: "ah.ox"; oy: "ah.oy"; oz: "ah.oz"; pa: "ah.pa"; pb: "ah.pb"; pc: "ah.pc"; pd: "ah.pd"; pe: "ah.pe"; pf: "ah.pf"; pg: "ah.pg"; ph: "ah.ph"; pi: "ah.pi"; pj: "ah.pj"; pk: "ah.pk"; pl: "ah.pl"; pm: "ah.pm"; pn: "ah.pn"; po: "ah.po"; pp: "ah.pp"; pq: "ah.pq"; pr: "ah.pr"; ps: "ah.ps"; pt: "ah.pt"; pu: "ah.pu"; pv: "ah.pv"; pw: "ah.pw"; px: "ah.px"; py: "ah.py"; pz: "ah.pz"; qa: "ah.qa"; qb: "ah.qb"; qc: "ah.qc"; qd: "ah.qd"; qe: "ah.qe"; qf: "ah.qf"; qg: "ah.qg"; qh: "ah.qh"; qi: "ah.qi"; qj: "ah.qj"; qk: "ah.qk"; ql: "ah.ql"; qm: "ah.qm"; qn: "ah.qn"; qo: "ah.qo"; qp: "ah.qp"; qq: "ah.qq"; qr: "ah.qr"; qs: "ah.qs"; qt: "ah.qt"; qu: "ah.qu"; qv: "ah.qv"; qw: "ah.qw"; qx: "ah.qx"; qy: "ah.qy"; qz: "ah.qz"; ra: "ah.ra"; rb: "ah.rb"; rc: "ah.rc"; rd: "ah.rd"; re: "ah.re"; rf: "ah.rf"; rg: "ah.rg"; rh: "ah.rh"; ri: "ah.ri"; rj: "ah.rj"; rk: "ah.rk"; rl: "ah.rl"; rm: "ah.rm"; rn: "ah.rn"; ro: "ah.ro"; rp: "ah.rp"; rq: "ah.rq"; rr: "ah.rr"; rs: "ah.rs"; rt: "ah.rt"; ru: "ah.ru"; rv: "ah.rv"; rw: "ah.rw"; rx: "ah.rx"; ry: "ah.ry"; rz: "ah.rz"; sa: "ah.sa"; sb: "ah.sb"; sc: "ah.sc"; sd: "ah.sd"; se: "ah.se"; sf: "ah.sf"; sg: "ah.sg"; sh: "ah.sh"; si: "ah.si"; sj: "ah.sj"; sk: "ah.sk"; sl: "ah.sl"; sm: "ah.sm"; sn: "ah.sn"; so: "ah.so"; sp: "ah.sp"; sq: "ah.sq"; sr: "ah.sr"; ss: "ah.ss"; st: "ah.st"; su: "ah.su"; sv: "ah.sv"; sw: "ah.sw"; sx: "ah.sx"; sy: "ah.sy"; sz: "ah.sz"; ta: "ah.ta"; tb: "ah.tb"; tc: "ah.tc"; td: "ah.td"; te: "ah.te"; tf: "ah.tf"; tg: "ah.tg"; th: "ah.th"; ti: "ah.ti"; tj: "ah.tj"; tk: "ah.tk"; tl: "ah.tl"; tm: "ah.tm"; tn: "ah.tn"; to: "ah.to"; tp: "ah.tp"; tq: "ah.tq"; tr: "ah.tr"; ts: "ah.ts"; tt: "ah.tt"; tu: "ah.tu"; tv: "ah.tv"; tw: "ah.tw"; tx: "ah.tx"; ty: "ah.ty"; tz: "ah.tz"; ua: "ah.ua"; ub: "ah.ub"; uc: "ah.uc"; ud: "ah.ud"; ue: "ah.ue"; uf: "ah.uf"; ug: "ah.ug"; uh: "ah.uh"; ui: "ah.ui"; uj: "ah.uj"; uk: "ah.uk"; ul: "ah.ul"; um: "ah.um"; un: "ah.un"; uo: "ah.uo"; up: "ah.up"; uq: "ah.uq"; ur: "ah.ur"; us: "ah.us"; ut: "ah.ut"; uu: "ah.uu"; uv: "ah.uv"; uw: "ah.uw"; ux: "ah.ux"; uy: "ah.uy"; uz: "ah.uz"; va: "ah.va"; vb: "ah.vb"; vc: "ah.vc"; vd: "ah.vd"; ve: "ah.ve"; vf: "ah.vf"; vg: "ah.vg"; vh: "ah.vh"; vi: "ah.vi"; vj: "ah.vj"; vk: "ah.vk"; vl: "ah.vl"; vm: "ah.vm"; vn: "ah.vn"; vo: "ah.vo"; vp: "ah.vp"; vq: "ah.vq"; vr: "ah.vr"; vs: "ah.vs"; vt: "ah.vt"; vu: "ah.vu"; vv: "ah.vv"; vw: "ah.vw"; vx: "ah.vx"; vy: "ah.vy"; vz: "ah.vz"; wa: "ah.wa"; wb: "ah.wb"; wc: "ah.wc"; wd: "ah.wd"; we: "ah.we"; wf: "ah.wf"; wg: "ah.wg"; wh: "ah.wh"; wi: "ah.wi"; wj: "ah.wj"; wk: "ah.wk"; wl: "ah.wl"; wm: "ah.wm"; wn: "ah.wn"; wo: "ah.wo"; wp: "ah.wp"; wq: "ah.wq"; wr: "ah.wr"; ws: "ah.ws"; wt: "ah.wt"; wu: "ah.wu"; wv: "ah.wv"; ww: "ah.ww"; wx: "ah.wx"; wy: "ah.wy"; wz: "ah.wz"; xa: "ah.xa"; xb: "ah.xb"; xc: "ah.xc"; xd: "ah.xd"; xe: "ah.xe"; xf: "ah.xf"; xg: "ah.xg"; xh: "ah.xh"; xi: "ah.xi"; xj: "ah.xj"; xk: "ah.xk"; xl: "ah.xl"; xm: "ah.xm"; xn: "ah.xn"; xo: "ah.xo"; xp: "ah.xp"; xq: "ah.xq"; xr: "ah.xr"; xs: "ah.xs"; xt: "ah.xt"; xu: "ah.xu"; xv: "ah.xv"; xw: "ah.xw"; xx: "ah.xx"; xy: "ah.xy"; xz: "ah.xz"; ya: "ah.ya"; yb: "ah.yb"; yc: "ah.yc"; yd: "ah.yd"; ye: "ah.ye"; yf: "ah.yf"; yg: "ah.yg"; yh: "ah.yh"; yi: "ah.yi"; yj: "ah.yj"; yk: "ah.yk"; yl: "ah.yl"; ym: "ah.ym"; yn: "ah.yn"; yo: "ah.yo"; yp: "ah.yp"; yq: "ah.yq"; yr: "ah.yr"; ys: "ah.ys"; yt: "ah.yt"; yu: "ah.yu"; yv: "ah.yv"; yw: "ah.yw"; yx: "ah.yx"; yy: "ah.yy"; yz: "ah.yz"; za: "ah.za"; zb: "ah.zb"; zc: "ah.zc"; zd: "ah.zd"; ze: "ah.ze"; zf: "ah.zf"; zg: "ah.zg"; zh: "ah.zh"; zi: "ah.zi"; zj: "ah.zj"; zk: "ah.zk"; zl: "ah.zl"; zm: "ah.zm"; zn: "ah.zn"; zo: "ah.zo"; zp: "ah.zp"; zq: "ah.zq"; zr: "ah.zr"; zs: "ah.zs"; zt: "ah.zt"; zu: "ah.zu"; zv: "ah.zv"; zw: "ah.zw"; zx: "ah.zx"; zy: "ah.zy"; zz: "ah.zz"; }; ai: { aa: "ai.aa"; ab: "ai.ab"; ac: "ai.ac"; ad: "ai.ad"; ae: "ai.ae"; af: "ai.af"; ag: "ai.ag"; ah: "ai.ah"; ai: "ai.ai"; aj: "ai.aj"; ak: "ai.ak"; al: "ai.al"; am: "ai.am"; an: "ai.an"; ao: "ai.ao"; ap: "ai.ap"; aq: "ai.aq"; ar: "ai.ar"; as: "ai.as"; at: "ai.at"; au: "ai.au"; av: "ai.av"; aw: "ai.aw"; ax: "ai.ax"; ay: "ai.ay"; az: "ai.az"; ba: "ai.ba"; bb: "ai.bb"; bc: "ai.bc"; bd: "ai.bd"; be: "ai.be"; bf: "ai.bf"; bg: "ai.bg"; bh: "ai.bh"; bi: "ai.bi"; bj: "ai.bj"; bk: "ai.bk"; bl: "ai.bl"; bm: "ai.bm"; bn: "ai.bn"; bo: "ai.bo"; bp: "ai.bp"; bq: "ai.bq"; br: "ai.br"; bs: "ai.bs"; bt: "ai.bt"; bu: "ai.bu"; bv: "ai.bv"; bw: "ai.bw"; bx: "ai.bx"; by: "ai.by"; bz: "ai.bz"; ca: "ai.ca"; cb: "ai.cb"; cc: "ai.cc"; cd: "ai.cd"; ce: "ai.ce"; cf: "ai.cf"; cg: "ai.cg"; ch: "ai.ch"; ci: "ai.ci"; cj: "ai.cj"; ck: "ai.ck"; cl: "ai.cl"; cm: "ai.cm"; cn: "ai.cn"; co: "ai.co"; cp: "ai.cp"; cq: "ai.cq"; cr: "ai.cr"; cs: "ai.cs"; ct: "ai.ct"; cu: "ai.cu"; cv: "ai.cv"; cw: "ai.cw"; cx: "ai.cx"; cy: "ai.cy"; cz: "ai.cz"; da: "ai.da"; db: "ai.db"; dc: "ai.dc"; dd: "ai.dd"; de: "ai.de"; df: "ai.df"; dg: "ai.dg"; dh: "ai.dh"; di: "ai.di"; dj: "ai.dj"; dk: "ai.dk"; dl: "ai.dl"; dm: "ai.dm"; dn: "ai.dn"; do: "ai.do"; dp: "ai.dp"; dq: "ai.dq"; dr: "ai.dr"; ds: "ai.ds"; dt: "ai.dt"; du: "ai.du"; dv: "ai.dv"; dw: "ai.dw"; dx: "ai.dx"; dy: "ai.dy"; dz: "ai.dz"; ea: "ai.ea"; eb: "ai.eb"; ec: "ai.ec"; ed: "ai.ed"; ee: "ai.ee"; ef: "ai.ef"; eg: "ai.eg"; eh: "ai.eh"; ei: "ai.ei"; ej: "ai.ej"; ek: "ai.ek"; el: "ai.el"; em: "ai.em"; en: "ai.en"; eo: "ai.eo"; ep: "ai.ep"; eq: "ai.eq"; er: "ai.er"; es: "ai.es"; et: "ai.et"; eu: "ai.eu"; ev: "ai.ev"; ew: "ai.ew"; ex: "ai.ex"; ey: "ai.ey"; ez: "ai.ez"; fa: "ai.fa"; fb: "ai.fb"; fc: "ai.fc"; fd: "ai.fd"; fe: "ai.fe"; ff: "ai.ff"; fg: "ai.fg"; fh: "ai.fh"; fi: "ai.fi"; fj: "ai.fj"; fk: "ai.fk"; fl: "ai.fl"; fm: "ai.fm"; fn: "ai.fn"; fo: "ai.fo"; fp: "ai.fp"; fq: "ai.fq"; fr: "ai.fr"; fs: "ai.fs"; ft: "ai.ft"; fu: "ai.fu"; fv: "ai.fv"; fw: "ai.fw"; fx: "ai.fx"; fy: "ai.fy"; fz: "ai.fz"; ga: "ai.ga"; gb: "ai.gb"; gc: "ai.gc"; gd: "ai.gd"; ge: "ai.ge"; gf: "ai.gf"; gg: "ai.gg"; gh: "ai.gh"; gi: "ai.gi"; gj: "ai.gj"; gk: "ai.gk"; gl: "ai.gl"; gm: "ai.gm"; gn: "ai.gn"; go: "ai.go"; gp: "ai.gp"; gq: "ai.gq"; gr: "ai.gr"; gs: "ai.gs"; gt: "ai.gt"; gu: "ai.gu"; gv: "ai.gv"; gw: "ai.gw"; gx: "ai.gx"; gy: "ai.gy"; gz: "ai.gz"; ha: "ai.ha"; hb: "ai.hb"; hc: "ai.hc"; hd: "ai.hd"; he: "ai.he"; hf: "ai.hf"; hg: "ai.hg"; hh: "ai.hh"; hi: "ai.hi"; hj: "ai.hj"; hk: "ai.hk"; hl: "ai.hl"; hm: "ai.hm"; hn: "ai.hn"; ho: "ai.ho"; hp: "ai.hp"; hq: "ai.hq"; hr: "ai.hr"; hs: "ai.hs"; ht: "ai.ht"; hu: "ai.hu"; hv: "ai.hv"; hw: "ai.hw"; hx: "ai.hx"; hy: "ai.hy"; hz: "ai.hz"; ia: "ai.ia"; ib: "ai.ib"; ic: "ai.ic"; id: "ai.id"; ie: "ai.ie"; if: "ai.if"; ig: "ai.ig"; ih: "ai.ih"; ii: "ai.ii"; ij: "ai.ij"; ik: "ai.ik"; il: "ai.il"; im: "ai.im"; in: "ai.in"; io: "ai.io"; ip: "ai.ip"; iq: "ai.iq"; ir: "ai.ir"; is: "ai.is"; it: "ai.it"; iu: "ai.iu"; iv: "ai.iv"; iw: "ai.iw"; ix: "ai.ix"; iy: "ai.iy"; iz: "ai.iz"; ja: "ai.ja"; jb: "ai.jb"; jc: "ai.jc"; jd: "ai.jd"; je: "ai.je"; jf: "ai.jf"; jg: "ai.jg"; jh: "ai.jh"; ji: "ai.ji"; jj: "ai.jj"; jk: "ai.jk"; jl: "ai.jl"; jm: "ai.jm"; jn: "ai.jn"; jo: "ai.jo"; jp: "ai.jp"; jq: "ai.jq"; jr: "ai.jr"; js: "ai.js"; jt: "ai.jt"; ju: "ai.ju"; jv: "ai.jv"; jw: "ai.jw"; jx: "ai.jx"; jy: "ai.jy"; jz: "ai.jz"; ka: "ai.ka"; kb: "ai.kb"; kc: "ai.kc"; kd: "ai.kd"; ke: "ai.ke"; kf: "ai.kf"; kg: "ai.kg"; kh: "ai.kh"; ki: "ai.ki"; kj: "ai.kj"; kk: "ai.kk"; kl: "ai.kl"; km: "ai.km"; kn: "ai.kn"; ko: "ai.ko"; kp: "ai.kp"; kq: "ai.kq"; kr: "ai.kr"; ks: "ai.ks"; kt: "ai.kt"; ku: "ai.ku"; kv: "ai.kv"; kw: "ai.kw"; kx: "ai.kx"; ky: "ai.ky"; kz: "ai.kz"; la: "ai.la"; lb: "ai.lb"; lc: "ai.lc"; ld: "ai.ld"; le: "ai.le"; lf: "ai.lf"; lg: "ai.lg"; lh: "ai.lh"; li: "ai.li"; lj: "ai.lj"; lk: "ai.lk"; ll: "ai.ll"; lm: "ai.lm"; ln: "ai.ln"; lo: "ai.lo"; lp: "ai.lp"; lq: "ai.lq"; lr: "ai.lr"; ls: "ai.ls"; lt: "ai.lt"; lu: "ai.lu"; lv: "ai.lv"; lw: "ai.lw"; lx: "ai.lx"; ly: "ai.ly"; lz: "ai.lz"; ma: "ai.ma"; mb: "ai.mb"; mc: "ai.mc"; md: "ai.md"; me: "ai.me"; mf: "ai.mf"; mg: "ai.mg"; mh: "ai.mh"; mi: "ai.mi"; mj: "ai.mj"; mk: "ai.mk"; ml: "ai.ml"; mm: "ai.mm"; mn: "ai.mn"; mo: "ai.mo"; mp: "ai.mp"; mq: "ai.mq"; mr: "ai.mr"; ms: "ai.ms"; mt: "ai.mt"; mu: "ai.mu"; mv: "ai.mv"; mw: "ai.mw"; mx: "ai.mx"; my: "ai.my"; mz: "ai.mz"; na: "ai.na"; nb: "ai.nb"; nc: "ai.nc"; nd: "ai.nd"; ne: "ai.ne"; nf: "ai.nf"; ng: "ai.ng"; nh: "ai.nh"; ni: "ai.ni"; nj: "ai.nj"; nk: "ai.nk"; nl: "ai.nl"; nm: "ai.nm"; nn: "ai.nn"; no: "ai.no"; np: "ai.np"; nq: "ai.nq"; nr: "ai.nr"; ns: "ai.ns"; nt: "ai.nt"; nu: "ai.nu"; nv: "ai.nv"; nw: "ai.nw"; nx: "ai.nx"; ny: "ai.ny"; nz: "ai.nz"; oa: "ai.oa"; ob: "ai.ob"; oc: "ai.oc"; od: "ai.od"; oe: "ai.oe"; of: "ai.of"; og: "ai.og"; oh: "ai.oh"; oi: "ai.oi"; oj: "ai.oj"; ok: "ai.ok"; ol: "ai.ol"; om: "ai.om"; on: "ai.on"; oo: "ai.oo"; op: "ai.op"; oq: "ai.oq"; or: "ai.or"; os: "ai.os"; ot: "ai.ot"; ou: "ai.ou"; ov: "ai.ov"; ow: "ai.ow"; ox: "ai.ox"; oy: "ai.oy"; oz: "ai.oz"; pa: "ai.pa"; pb: "ai.pb"; pc: "ai.pc"; pd: "ai.pd"; pe: "ai.pe"; pf: "ai.pf"; pg: "ai.pg"; ph: "ai.ph"; pi: "ai.pi"; pj: "ai.pj"; pk: "ai.pk"; pl: "ai.pl"; pm: "ai.pm"; pn: "ai.pn"; po: "ai.po"; pp: "ai.pp"; pq: "ai.pq"; pr: "ai.pr"; ps: "ai.ps"; pt: "ai.pt"; pu: "ai.pu"; pv: "ai.pv"; pw: "ai.pw"; px: "ai.px"; py: "ai.py"; pz: "ai.pz"; qa: "ai.qa"; qb: "ai.qb"; qc: "ai.qc"; qd: "ai.qd"; qe: "ai.qe"; qf: "ai.qf"; qg: "ai.qg"; qh: "ai.qh"; qi: "ai.qi"; qj: "ai.qj"; qk: "ai.qk"; ql: "ai.ql"; qm: "ai.qm"; qn: "ai.qn"; qo: "ai.qo"; qp: "ai.qp"; qq: "ai.qq"; qr: "ai.qr"; qs: "ai.qs"; qt: "ai.qt"; qu: "ai.qu"; qv: "ai.qv"; qw: "ai.qw"; qx: "ai.qx"; qy: "ai.qy"; qz: "ai.qz"; ra: "ai.ra"; rb: "ai.rb"; rc: "ai.rc"; rd: "ai.rd"; re: "ai.re"; rf: "ai.rf"; rg: "ai.rg"; rh: "ai.rh"; ri: "ai.ri"; rj: "ai.rj"; rk: "ai.rk"; rl: "ai.rl"; rm: "ai.rm"; rn: "ai.rn"; ro: "ai.ro"; rp: "ai.rp"; rq: "ai.rq"; rr: "ai.rr"; rs: "ai.rs"; rt: "ai.rt"; ru: "ai.ru"; rv: "ai.rv"; rw: "ai.rw"; rx: "ai.rx"; ry: "ai.ry"; rz: "ai.rz"; sa: "ai.sa"; sb: "ai.sb"; sc: "ai.sc"; sd: "ai.sd"; se: "ai.se"; sf: "ai.sf"; sg: "ai.sg"; sh: "ai.sh"; si: "ai.si"; sj: "ai.sj"; sk: "ai.sk"; sl: "ai.sl"; sm: "ai.sm"; sn: "ai.sn"; so: "ai.so"; sp: "ai.sp"; sq: "ai.sq"; sr: "ai.sr"; ss: "ai.ss"; st: "ai.st"; su: "ai.su"; sv: "ai.sv"; sw: "ai.sw"; sx: "ai.sx"; sy: "ai.sy"; sz: "ai.sz"; ta: "ai.ta"; tb: "ai.tb"; tc: "ai.tc"; td: "ai.td"; te: "ai.te"; tf: "ai.tf"; tg: "ai.tg"; th: "ai.th"; ti: "ai.ti"; tj: "ai.tj"; tk: "ai.tk"; tl: "ai.tl"; tm: "ai.tm"; tn: "ai.tn"; to: "ai.to"; tp: "ai.tp"; tq: "ai.tq"; tr: "ai.tr"; ts: "ai.ts"; tt: "ai.tt"; tu: "ai.tu"; tv: "ai.tv"; tw: "ai.tw"; tx: "ai.tx"; ty: "ai.ty"; tz: "ai.tz"; ua: "ai.ua"; ub: "ai.ub"; uc: "ai.uc"; ud: "ai.ud"; ue: "ai.ue"; uf: "ai.uf"; ug: "ai.ug"; uh: "ai.uh"; ui: "ai.ui"; uj: "ai.uj"; uk: "ai.uk"; ul: "ai.ul"; um: "ai.um"; un: "ai.un"; uo: "ai.uo"; up: "ai.up"; uq: "ai.uq"; ur: "ai.ur"; us: "ai.us"; ut: "ai.ut"; uu: "ai.uu"; uv: "ai.uv"; uw: "ai.uw"; ux: "ai.ux"; uy: "ai.uy"; uz: "ai.uz"; va: "ai.va"; vb: "ai.vb"; vc: "ai.vc"; vd: "ai.vd"; ve: "ai.ve"; vf: "ai.vf"; vg: "ai.vg"; vh: "ai.vh"; vi: "ai.vi"; vj: "ai.vj"; vk: "ai.vk"; vl: "ai.vl"; vm: "ai.vm"; vn: "ai.vn"; vo: "ai.vo"; vp: "ai.vp"; vq: "ai.vq"; vr: "ai.vr"; vs: "ai.vs"; vt: "ai.vt"; vu: "ai.vu"; vv: "ai.vv"; vw: "ai.vw"; vx: "ai.vx"; vy: "ai.vy"; vz: "ai.vz"; wa: "ai.wa"; wb: "ai.wb"; wc: "ai.wc"; wd: "ai.wd"; we: "ai.we"; wf: "ai.wf"; wg: "ai.wg"; wh: "ai.wh"; wi: "ai.wi"; wj: "ai.wj"; wk: "ai.wk"; wl: "ai.wl"; wm: "ai.wm"; wn: "ai.wn"; wo: "ai.wo"; wp: "ai.wp"; wq: "ai.wq"; wr: "ai.wr"; ws: "ai.ws"; wt: "ai.wt"; wu: "ai.wu"; wv: "ai.wv"; ww: "ai.ww"; wx: "ai.wx"; wy: "ai.wy"; wz: "ai.wz"; xa: "ai.xa"; xb: "ai.xb"; xc: "ai.xc"; xd: "ai.xd"; xe: "ai.xe"; xf: "ai.xf"; xg: "ai.xg"; xh: "ai.xh"; xi: "ai.xi"; xj: "ai.xj"; xk: "ai.xk"; xl: "ai.xl"; xm: "ai.xm"; xn: "ai.xn"; xo: "ai.xo"; xp: "ai.xp"; xq: "ai.xq"; xr: "ai.xr"; xs: "ai.xs"; xt: "ai.xt"; xu: "ai.xu"; xv: "ai.xv"; xw: "ai.xw"; xx: "ai.xx"; xy: "ai.xy"; xz: "ai.xz"; ya: "ai.ya"; yb: "ai.yb"; yc: "ai.yc"; yd: "ai.yd"; ye: "ai.ye"; yf: "ai.yf"; yg: "ai.yg"; yh: "ai.yh"; yi: "ai.yi"; yj: "ai.yj"; yk: "ai.yk"; yl: "ai.yl"; ym: "ai.ym"; yn: "ai.yn"; yo: "ai.yo"; yp: "ai.yp"; yq: "ai.yq"; yr: "ai.yr"; ys: "ai.ys"; yt: "ai.yt"; yu: "ai.yu"; yv: "ai.yv"; yw: "ai.yw"; yx: "ai.yx"; yy: "ai.yy"; yz: "ai.yz"; za: "ai.za"; zb: "ai.zb"; zc: "ai.zc"; zd: "ai.zd"; ze: "ai.ze"; zf: "ai.zf"; zg: "ai.zg"; zh: "ai.zh"; zi: "ai.zi"; zj: "ai.zj"; zk: "ai.zk"; zl: "ai.zl"; zm: "ai.zm"; zn: "ai.zn"; zo: "ai.zo"; zp: "ai.zp"; zq: "ai.zq"; zr: "ai.zr"; zs: "ai.zs"; zt: "ai.zt"; zu: "ai.zu"; zv: "ai.zv"; zw: "ai.zw"; zx: "ai.zx"; zy: "ai.zy"; zz: "ai.zz"; }; aj: { aa: "aj.aa"; ab: "aj.ab"; ac: "aj.ac"; ad: "aj.ad"; ae: "aj.ae"; af: "aj.af"; ag: "aj.ag"; ah: "aj.ah"; ai: "aj.ai"; aj: "aj.aj"; ak: "aj.ak"; al: "aj.al"; am: "aj.am"; an: "aj.an"; ao: "aj.ao"; ap: "aj.ap"; aq: "aj.aq"; ar: "aj.ar"; as: "aj.as"; at: "aj.at"; au: "aj.au"; av: "aj.av"; aw: "aj.aw"; ax: "aj.ax"; ay: "aj.ay"; az: "aj.az"; ba: "aj.ba"; bb: "aj.bb"; bc: "aj.bc"; bd: "aj.bd"; be: "aj.be"; bf: "aj.bf"; bg: "aj.bg"; bh: "aj.bh"; bi: "aj.bi"; bj: "aj.bj"; bk: "aj.bk"; bl: "aj.bl"; bm: "aj.bm"; bn: "aj.bn"; bo: "aj.bo"; bp: "aj.bp"; bq: "aj.bq"; br: "aj.br"; bs: "aj.bs"; bt: "aj.bt"; bu: "aj.bu"; bv: "aj.bv"; bw: "aj.bw"; bx: "aj.bx"; by: "aj.by"; bz: "aj.bz"; ca: "aj.ca"; cb: "aj.cb"; cc: "aj.cc"; cd: "aj.cd"; ce: "aj.ce"; cf: "aj.cf"; cg: "aj.cg"; ch: "aj.ch"; ci: "aj.ci"; cj: "aj.cj"; ck: "aj.ck"; cl: "aj.cl"; cm: "aj.cm"; cn: "aj.cn"; co: "aj.co"; cp: "aj.cp"; cq: "aj.cq"; cr: "aj.cr"; cs: "aj.cs"; ct: "aj.ct"; cu: "aj.cu"; cv: "aj.cv"; cw: "aj.cw"; cx: "aj.cx"; cy: "aj.cy"; cz: "aj.cz"; da: "aj.da"; db: "aj.db"; dc: "aj.dc"; dd: "aj.dd"; de: "aj.de"; df: "aj.df"; dg: "aj.dg"; dh: "aj.dh"; di: "aj.di"; dj: "aj.dj"; dk: "aj.dk"; dl: "aj.dl"; dm: "aj.dm"; dn: "aj.dn"; do: "aj.do"; dp: "aj.dp"; dq: "aj.dq"; dr: "aj.dr"; ds: "aj.ds"; dt: "aj.dt"; du: "aj.du"; dv: "aj.dv"; dw: "aj.dw"; dx: "aj.dx"; dy: "aj.dy"; dz: "aj.dz"; ea: "aj.ea"; eb: "aj.eb"; ec: "aj.ec"; ed: "aj.ed"; ee: "aj.ee"; ef: "aj.ef"; eg: "aj.eg"; eh: "aj.eh"; ei: "aj.ei"; ej: "aj.ej"; ek: "aj.ek"; el: "aj.el"; em: "aj.em"; en: "aj.en"; eo: "aj.eo"; ep: "aj.ep"; eq: "aj.eq"; er: "aj.er"; es: "aj.es"; et: "aj.et"; eu: "aj.eu"; ev: "aj.ev"; ew: "aj.ew"; ex: "aj.ex"; ey: "aj.ey"; ez: "aj.ez"; fa: "aj.fa"; fb: "aj.fb"; fc: "aj.fc"; fd: "aj.fd"; fe: "aj.fe"; ff: "aj.ff"; fg: "aj.fg"; fh: "aj.fh"; fi: "aj.fi"; fj: "aj.fj"; fk: "aj.fk"; fl: "aj.fl"; fm: "aj.fm"; fn: "aj.fn"; fo: "aj.fo"; fp: "aj.fp"; fq: "aj.fq"; fr: "aj.fr"; fs: "aj.fs"; ft: "aj.ft"; fu: "aj.fu"; fv: "aj.fv"; fw: "aj.fw"; fx: "aj.fx"; fy: "aj.fy"; fz: "aj.fz"; ga: "aj.ga"; gb: "aj.gb"; gc: "aj.gc"; gd: "aj.gd"; ge: "aj.ge"; gf: "aj.gf"; gg: "aj.gg"; gh: "aj.gh"; gi: "aj.gi"; gj: "aj.gj"; gk: "aj.gk"; gl: "aj.gl"; gm: "aj.gm"; gn: "aj.gn"; go: "aj.go"; gp: "aj.gp"; gq: "aj.gq"; gr: "aj.gr"; gs: "aj.gs"; gt: "aj.gt"; gu: "aj.gu"; gv: "aj.gv"; gw: "aj.gw"; gx: "aj.gx"; gy: "aj.gy"; gz: "aj.gz"; ha: "aj.ha"; hb: "aj.hb"; hc: "aj.hc"; hd: "aj.hd"; he: "aj.he"; hf: "aj.hf"; hg: "aj.hg"; hh: "aj.hh"; hi: "aj.hi"; hj: "aj.hj"; hk: "aj.hk"; hl: "aj.hl"; hm: "aj.hm"; hn: "aj.hn"; ho: "aj.ho"; hp: "aj.hp"; hq: "aj.hq"; hr: "aj.hr"; hs: "aj.hs"; ht: "aj.ht"; hu: "aj.hu"; hv: "aj.hv"; hw: "aj.hw"; hx: "aj.hx"; hy: "aj.hy"; hz: "aj.hz"; ia: "aj.ia"; ib: "aj.ib"; ic: "aj.ic"; id: "aj.id"; ie: "aj.ie"; if: "aj.if"; ig: "aj.ig"; ih: "aj.ih"; ii: "aj.ii"; ij: "aj.ij"; ik: "aj.ik"; il: "aj.il"; im: "aj.im"; in: "aj.in"; io: "aj.io"; ip: "aj.ip"; iq: "aj.iq"; ir: "aj.ir"; is: "aj.is"; it: "aj.it"; iu: "aj.iu"; iv: "aj.iv"; iw: "aj.iw"; ix: "aj.ix"; iy: "aj.iy"; iz: "aj.iz"; ja: "aj.ja"; jb: "aj.jb"; jc: "aj.jc"; jd: "aj.jd"; je: "aj.je"; jf: "aj.jf"; jg: "aj.jg"; jh: "aj.jh"; ji: "aj.ji"; jj: "aj.jj"; jk: "aj.jk"; jl: "aj.jl"; jm: "aj.jm"; jn: "aj.jn"; jo: "aj.jo"; jp: "aj.jp"; jq: "aj.jq"; jr: "aj.jr"; js: "aj.js"; jt: "aj.jt"; ju: "aj.ju"; jv: "aj.jv"; jw: "aj.jw"; jx: "aj.jx"; jy: "aj.jy"; jz: "aj.jz"; ka: "aj.ka"; kb: "aj.kb"; kc: "aj.kc"; kd: "aj.kd"; ke: "aj.ke"; kf: "aj.kf"; kg: "aj.kg"; kh: "aj.kh"; ki: "aj.ki"; kj: "aj.kj"; kk: "aj.kk"; kl: "aj.kl"; km: "aj.km"; kn: "aj.kn"; ko: "aj.ko"; kp: "aj.kp"; kq: "aj.kq"; kr: "aj.kr"; ks: "aj.ks"; kt: "aj.kt"; ku: "aj.ku"; kv: "aj.kv"; kw: "aj.kw"; kx: "aj.kx"; ky: "aj.ky"; kz: "aj.kz"; la: "aj.la"; lb: "aj.lb"; lc: "aj.lc"; ld: "aj.ld"; le: "aj.le"; lf: "aj.lf"; lg: "aj.lg"; lh: "aj.lh"; li: "aj.li"; lj: "aj.lj"; lk: "aj.lk"; ll: "aj.ll"; lm: "aj.lm"; ln: "aj.ln"; lo: "aj.lo"; lp: "aj.lp"; lq: "aj.lq"; lr: "aj.lr"; ls: "aj.ls"; lt: "aj.lt"; lu: "aj.lu"; lv: "aj.lv"; lw: "aj.lw"; lx: "aj.lx"; ly: "aj.ly"; lz: "aj.lz"; ma: "aj.ma"; mb: "aj.mb"; mc: "aj.mc"; md: "aj.md"; me: "aj.me"; mf: "aj.mf"; mg: "aj.mg"; mh: "aj.mh"; mi: "aj.mi"; mj: "aj.mj"; mk: "aj.mk"; ml: "aj.ml"; mm: "aj.mm"; mn: "aj.mn"; mo: "aj.mo"; mp: "aj.mp"; mq: "aj.mq"; mr: "aj.mr"; ms: "aj.ms"; mt: "aj.mt"; mu: "aj.mu"; mv: "aj.mv"; mw: "aj.mw"; mx: "aj.mx"; my: "aj.my"; mz: "aj.mz"; na: "aj.na"; nb: "aj.nb"; nc: "aj.nc"; nd: "aj.nd"; ne: "aj.ne"; nf: "aj.nf"; ng: "aj.ng"; nh: "aj.nh"; ni: "aj.ni"; nj: "aj.nj"; nk: "aj.nk"; nl: "aj.nl"; nm: "aj.nm"; nn: "aj.nn"; no: "aj.no"; np: "aj.np"; nq: "aj.nq"; nr: "aj.nr"; ns: "aj.ns"; nt: "aj.nt"; nu: "aj.nu"; nv: "aj.nv"; nw: "aj.nw"; nx: "aj.nx"; ny: "aj.ny"; nz: "aj.nz"; oa: "aj.oa"; ob: "aj.ob"; oc: "aj.oc"; od: "aj.od"; oe: "aj.oe"; of: "aj.of"; og: "aj.og"; oh: "aj.oh"; oi: "aj.oi"; oj: "aj.oj"; ok: "aj.ok"; ol: "aj.ol"; om: "aj.om"; on: "aj.on"; oo: "aj.oo"; op: "aj.op"; oq: "aj.oq"; or: "aj.or"; os: "aj.os"; ot: "aj.ot"; ou: "aj.ou"; ov: "aj.ov"; ow: "aj.ow"; ox: "aj.ox"; oy: "aj.oy"; oz: "aj.oz"; pa: "aj.pa"; pb: "aj.pb"; pc: "aj.pc"; pd: "aj.pd"; pe: "aj.pe"; pf: "aj.pf"; pg: "aj.pg"; ph: "aj.ph"; pi: "aj.pi"; pj: "aj.pj"; pk: "aj.pk"; pl: "aj.pl"; pm: "aj.pm"; pn: "aj.pn"; po: "aj.po"; pp: "aj.pp"; pq: "aj.pq"; pr: "aj.pr"; ps: "aj.ps"; pt: "aj.pt"; pu: "aj.pu"; pv: "aj.pv"; pw: "aj.pw"; px: "aj.px"; py: "aj.py"; pz: "aj.pz"; qa: "aj.qa"; qb: "aj.qb"; qc: "aj.qc"; qd: "aj.qd"; qe: "aj.qe"; qf: "aj.qf"; qg: "aj.qg"; qh: "aj.qh"; qi: "aj.qi"; qj: "aj.qj"; qk: "aj.qk"; ql: "aj.ql"; qm: "aj.qm"; qn: "aj.qn"; qo: "aj.qo"; qp: "aj.qp"; qq: "aj.qq"; qr: "aj.qr"; qs: "aj.qs"; qt: "aj.qt"; qu: "aj.qu"; qv: "aj.qv"; qw: "aj.qw"; qx: "aj.qx"; qy: "aj.qy"; qz: "aj.qz"; ra: "aj.ra"; rb: "aj.rb"; rc: "aj.rc"; rd: "aj.rd"; re: "aj.re"; rf: "aj.rf"; rg: "aj.rg"; rh: "aj.rh"; ri: "aj.ri"; rj: "aj.rj"; rk: "aj.rk"; rl: "aj.rl"; rm: "aj.rm"; rn: "aj.rn"; ro: "aj.ro"; rp: "aj.rp"; rq: "aj.rq"; rr: "aj.rr"; rs: "aj.rs"; rt: "aj.rt"; ru: "aj.ru"; rv: "aj.rv"; rw: "aj.rw"; rx: "aj.rx"; ry: "aj.ry"; rz: "aj.rz"; sa: "aj.sa"; sb: "aj.sb"; sc: "aj.sc"; sd: "aj.sd"; se: "aj.se"; sf: "aj.sf"; sg: "aj.sg"; sh: "aj.sh"; si: "aj.si"; sj: "aj.sj"; sk: "aj.sk"; sl: "aj.sl"; sm: "aj.sm"; sn: "aj.sn"; so: "aj.so"; sp: "aj.sp"; sq: "aj.sq"; sr: "aj.sr"; ss: "aj.ss"; st: "aj.st"; su: "aj.su"; sv: "aj.sv"; sw: "aj.sw"; sx: "aj.sx"; sy: "aj.sy"; sz: "aj.sz"; ta: "aj.ta"; tb: "aj.tb"; tc: "aj.tc"; td: "aj.td"; te: "aj.te"; tf: "aj.tf"; tg: "aj.tg"; th: "aj.th"; ti: "aj.ti"; tj: "aj.tj"; tk: "aj.tk"; tl: "aj.tl"; tm: "aj.tm"; tn: "aj.tn"; to: "aj.to"; tp: "aj.tp"; tq: "aj.tq"; tr: "aj.tr"; ts: "aj.ts"; tt: "aj.tt"; tu: "aj.tu"; tv: "aj.tv"; tw: "aj.tw"; tx: "aj.tx"; ty: "aj.ty"; tz: "aj.tz"; ua: "aj.ua"; ub: "aj.ub"; uc: "aj.uc"; ud: "aj.ud"; ue: "aj.ue"; uf: "aj.uf"; ug: "aj.ug"; uh: "aj.uh"; ui: "aj.ui"; uj: "aj.uj"; uk: "aj.uk"; ul: "aj.ul"; um: "aj.um"; un: "aj.un"; uo: "aj.uo"; up: "aj.up"; uq: "aj.uq"; ur: "aj.ur"; us: "aj.us"; ut: "aj.ut"; uu: "aj.uu"; uv: "aj.uv"; uw: "aj.uw"; ux: "aj.ux"; uy: "aj.uy"; uz: "aj.uz"; va: "aj.va"; vb: "aj.vb"; vc: "aj.vc"; vd: "aj.vd"; ve: "aj.ve"; vf: "aj.vf"; vg: "aj.vg"; vh: "aj.vh"; vi: "aj.vi"; vj: "aj.vj"; vk: "aj.vk"; vl: "aj.vl"; vm: "aj.vm"; vn: "aj.vn"; vo: "aj.vo"; vp: "aj.vp"; vq: "aj.vq"; vr: "aj.vr"; vs: "aj.vs"; vt: "aj.vt"; vu: "aj.vu"; vv: "aj.vv"; vw: "aj.vw"; vx: "aj.vx"; vy: "aj.vy"; vz: "aj.vz"; wa: "aj.wa"; wb: "aj.wb"; wc: "aj.wc"; wd: "aj.wd"; we: "aj.we"; wf: "aj.wf"; wg: "aj.wg"; wh: "aj.wh"; wi: "aj.wi"; wj: "aj.wj"; wk: "aj.wk"; wl: "aj.wl"; wm: "aj.wm"; wn: "aj.wn"; wo: "aj.wo"; wp: "aj.wp"; wq: "aj.wq"; wr: "aj.wr"; ws: "aj.ws"; wt: "aj.wt"; wu: "aj.wu"; wv: "aj.wv"; ww: "aj.ww"; wx: "aj.wx"; wy: "aj.wy"; wz: "aj.wz"; xa: "aj.xa"; xb: "aj.xb"; xc: "aj.xc"; xd: "aj.xd"; xe: "aj.xe"; xf: "aj.xf"; xg: "aj.xg"; xh: "aj.xh"; xi: "aj.xi"; xj: "aj.xj"; xk: "aj.xk"; xl: "aj.xl"; xm: "aj.xm"; xn: "aj.xn"; xo: "aj.xo"; xp: "aj.xp"; xq: "aj.xq"; xr: "aj.xr"; xs: "aj.xs"; xt: "aj.xt"; xu: "aj.xu"; xv: "aj.xv"; xw: "aj.xw"; xx: "aj.xx"; xy: "aj.xy"; xz: "aj.xz"; ya: "aj.ya"; yb: "aj.yb"; yc: "aj.yc"; yd: "aj.yd"; ye: "aj.ye"; yf: "aj.yf"; yg: "aj.yg"; yh: "aj.yh"; yi: "aj.yi"; yj: "aj.yj"; yk: "aj.yk"; yl: "aj.yl"; ym: "aj.ym"; yn: "aj.yn"; yo: "aj.yo"; yp: "aj.yp"; yq: "aj.yq"; yr: "aj.yr"; ys: "aj.ys"; yt: "aj.yt"; yu: "aj.yu"; yv: "aj.yv"; yw: "aj.yw"; yx: "aj.yx"; yy: "aj.yy"; yz: "aj.yz"; za: "aj.za"; zb: "aj.zb"; zc: "aj.zc"; zd: "aj.zd"; ze: "aj.ze"; zf: "aj.zf"; zg: "aj.zg"; zh: "aj.zh"; zi: "aj.zi"; zj: "aj.zj"; zk: "aj.zk"; zl: "aj.zl"; zm: "aj.zm"; zn: "aj.zn"; zo: "aj.zo"; zp: "aj.zp"; zq: "aj.zq"; zr: "aj.zr"; zs: "aj.zs"; zt: "aj.zt"; zu: "aj.zu"; zv: "aj.zv"; zw: "aj.zw"; zx: "aj.zx"; zy: "aj.zy"; zz: "aj.zz"; }; ak: { aa: "ak.aa"; ab: "ak.ab"; ac: "ak.ac"; ad: "ak.ad"; ae: "ak.ae"; af: "ak.af"; ag: "ak.ag"; ah: "ak.ah"; ai: "ak.ai"; aj: "ak.aj"; ak: "ak.ak"; al: "ak.al"; am: "ak.am"; an: "ak.an"; ao: "ak.ao"; ap: "ak.ap"; aq: "ak.aq"; ar: "ak.ar"; as: "ak.as"; at: "ak.at"; au: "ak.au"; av: "ak.av"; aw: "ak.aw"; ax: "ak.ax"; ay: "ak.ay"; az: "ak.az"; ba: "ak.ba"; bb: "ak.bb"; bc: "ak.bc"; bd: "ak.bd"; be: "ak.be"; bf: "ak.bf"; bg: "ak.bg"; bh: "ak.bh"; bi: "ak.bi"; bj: "ak.bj"; bk: "ak.bk"; bl: "ak.bl"; bm: "ak.bm"; bn: "ak.bn"; bo: "ak.bo"; bp: "ak.bp"; bq: "ak.bq"; br: "ak.br"; bs: "ak.bs"; bt: "ak.bt"; bu: "ak.bu"; bv: "ak.bv"; bw: "ak.bw"; bx: "ak.bx"; by: "ak.by"; bz: "ak.bz"; ca: "ak.ca"; cb: "ak.cb"; cc: "ak.cc"; cd: "ak.cd"; ce: "ak.ce"; cf: "ak.cf"; cg: "ak.cg"; ch: "ak.ch"; ci: "ak.ci"; cj: "ak.cj"; ck: "ak.ck"; cl: "ak.cl"; cm: "ak.cm"; cn: "ak.cn"; co: "ak.co"; cp: "ak.cp"; cq: "ak.cq"; cr: "ak.cr"; cs: "ak.cs"; ct: "ak.ct"; cu: "ak.cu"; cv: "ak.cv"; cw: "ak.cw"; cx: "ak.cx"; cy: "ak.cy"; cz: "ak.cz"; da: "ak.da"; db: "ak.db"; dc: "ak.dc"; dd: "ak.dd"; de: "ak.de"; df: "ak.df"; dg: "ak.dg"; dh: "ak.dh"; di: "ak.di"; dj: "ak.dj"; dk: "ak.dk"; dl: "ak.dl"; dm: "ak.dm"; dn: "ak.dn"; do: "ak.do"; dp: "ak.dp"; dq: "ak.dq"; dr: "ak.dr"; ds: "ak.ds"; dt: "ak.dt"; du: "ak.du"; dv: "ak.dv"; dw: "ak.dw"; dx: "ak.dx"; dy: "ak.dy"; dz: "ak.dz"; ea: "ak.ea"; eb: "ak.eb"; ec: "ak.ec"; ed: "ak.ed"; ee: "ak.ee"; ef: "ak.ef"; eg: "ak.eg"; eh: "ak.eh"; ei: "ak.ei"; ej: "ak.ej"; ek: "ak.ek"; el: "ak.el"; em: "ak.em"; en: "ak.en"; eo: "ak.eo"; ep: "ak.ep"; eq: "ak.eq"; er: "ak.er"; es: "ak.es"; et: "ak.et"; eu: "ak.eu"; ev: "ak.ev"; ew: "ak.ew"; ex: "ak.ex"; ey: "ak.ey"; ez: "ak.ez"; fa: "ak.fa"; fb: "ak.fb"; fc: "ak.fc"; fd: "ak.fd"; fe: "ak.fe"; ff: "ak.ff"; fg: "ak.fg"; fh: "ak.fh"; fi: "ak.fi"; fj: "ak.fj"; fk: "ak.fk"; fl: "ak.fl"; fm: "ak.fm"; fn: "ak.fn"; fo: "ak.fo"; fp: "ak.fp"; fq: "ak.fq"; fr: "ak.fr"; fs: "ak.fs"; ft: "ak.ft"; fu: "ak.fu"; fv: "ak.fv"; fw: "ak.fw"; fx: "ak.fx"; fy: "ak.fy"; fz: "ak.fz"; ga: "ak.ga"; gb: "ak.gb"; gc: "ak.gc"; gd: "ak.gd"; ge: "ak.ge"; gf: "ak.gf"; gg: "ak.gg"; gh: "ak.gh"; gi: "ak.gi"; gj: "ak.gj"; gk: "ak.gk"; gl: "ak.gl"; gm: "ak.gm"; gn: "ak.gn"; go: "ak.go"; gp: "ak.gp"; gq: "ak.gq"; gr: "ak.gr"; gs: "ak.gs"; gt: "ak.gt"; gu: "ak.gu"; gv: "ak.gv"; gw: "ak.gw"; gx: "ak.gx"; gy: "ak.gy"; gz: "ak.gz"; ha: "ak.ha"; hb: "ak.hb"; hc: "ak.hc"; hd: "ak.hd"; he: "ak.he"; hf: "ak.hf"; hg: "ak.hg"; hh: "ak.hh"; hi: "ak.hi"; hj: "ak.hj"; hk: "ak.hk"; hl: "ak.hl"; hm: "ak.hm"; hn: "ak.hn"; ho: "ak.ho"; hp: "ak.hp"; hq: "ak.hq"; hr: "ak.hr"; hs: "ak.hs"; ht: "ak.ht"; hu: "ak.hu"; hv: "ak.hv"; hw: "ak.hw"; hx: "ak.hx"; hy: "ak.hy"; hz: "ak.hz"; ia: "ak.ia"; ib: "ak.ib"; ic: "ak.ic"; id: "ak.id"; ie: "ak.ie"; if: "ak.if"; ig: "ak.ig"; ih: "ak.ih"; ii: "ak.ii"; ij: "ak.ij"; ik: "ak.ik"; il: "ak.il"; im: "ak.im"; in: "ak.in"; io: "ak.io"; ip: "ak.ip"; iq: "ak.iq"; ir: "ak.ir"; is: "ak.is"; it: "ak.it"; iu: "ak.iu"; iv: "ak.iv"; iw: "ak.iw"; ix: "ak.ix"; iy: "ak.iy"; iz: "ak.iz"; ja: "ak.ja"; jb: "ak.jb"; jc: "ak.jc"; jd: "ak.jd"; je: "ak.je"; jf: "ak.jf"; jg: "ak.jg"; jh: "ak.jh"; ji: "ak.ji"; jj: "ak.jj"; jk: "ak.jk"; jl: "ak.jl"; jm: "ak.jm"; jn: "ak.jn"; jo: "ak.jo"; jp: "ak.jp"; jq: "ak.jq"; jr: "ak.jr"; js: "ak.js"; jt: "ak.jt"; ju: "ak.ju"; jv: "ak.jv"; jw: "ak.jw"; jx: "ak.jx"; jy: "ak.jy"; jz: "ak.jz"; ka: "ak.ka"; kb: "ak.kb"; kc: "ak.kc"; kd: "ak.kd"; ke: "ak.ke"; kf: "ak.kf"; kg: "ak.kg"; kh: "ak.kh"; ki: "ak.ki"; kj: "ak.kj"; kk: "ak.kk"; kl: "ak.kl"; km: "ak.km"; kn: "ak.kn"; ko: "ak.ko"; kp: "ak.kp"; kq: "ak.kq"; kr: "ak.kr"; ks: "ak.ks"; kt: "ak.kt"; ku: "ak.ku"; kv: "ak.kv"; kw: "ak.kw"; kx: "ak.kx"; ky: "ak.ky"; kz: "ak.kz"; la: "ak.la"; lb: "ak.lb"; lc: "ak.lc"; ld: "ak.ld"; le: "ak.le"; lf: "ak.lf"; lg: "ak.lg"; lh: "ak.lh"; li: "ak.li"; lj: "ak.lj"; lk: "ak.lk"; ll: "ak.ll"; lm: "ak.lm"; ln: "ak.ln"; lo: "ak.lo"; lp: "ak.lp"; lq: "ak.lq"; lr: "ak.lr"; ls: "ak.ls"; lt: "ak.lt"; lu: "ak.lu"; lv: "ak.lv"; lw: "ak.lw"; lx: "ak.lx"; ly: "ak.ly"; lz: "ak.lz"; ma: "ak.ma"; mb: "ak.mb"; mc: "ak.mc"; md: "ak.md"; me: "ak.me"; mf: "ak.mf"; mg: "ak.mg"; mh: "ak.mh"; mi: "ak.mi"; mj: "ak.mj"; mk: "ak.mk"; ml: "ak.ml"; mm: "ak.mm"; mn: "ak.mn"; mo: "ak.mo"; mp: "ak.mp"; mq: "ak.mq"; mr: "ak.mr"; ms: "ak.ms"; mt: "ak.mt"; mu: "ak.mu"; mv: "ak.mv"; mw: "ak.mw"; mx: "ak.mx"; my: "ak.my"; mz: "ak.mz"; na: "ak.na"; nb: "ak.nb"; nc: "ak.nc"; nd: "ak.nd"; ne: "ak.ne"; nf: "ak.nf"; ng: "ak.ng"; nh: "ak.nh"; ni: "ak.ni"; nj: "ak.nj"; nk: "ak.nk"; nl: "ak.nl"; nm: "ak.nm"; nn: "ak.nn"; no: "ak.no"; np: "ak.np"; nq: "ak.nq"; nr: "ak.nr"; ns: "ak.ns"; nt: "ak.nt"; nu: "ak.nu"; nv: "ak.nv"; nw: "ak.nw"; nx: "ak.nx"; ny: "ak.ny"; nz: "ak.nz"; oa: "ak.oa"; ob: "ak.ob"; oc: "ak.oc"; od: "ak.od"; oe: "ak.oe"; of: "ak.of"; og: "ak.og"; oh: "ak.oh"; oi: "ak.oi"; oj: "ak.oj"; ok: "ak.ok"; ol: "ak.ol"; om: "ak.om"; on: "ak.on"; oo: "ak.oo"; op: "ak.op"; oq: "ak.oq"; or: "ak.or"; os: "ak.os"; ot: "ak.ot"; ou: "ak.ou"; ov: "ak.ov"; ow: "ak.ow"; ox: "ak.ox"; oy: "ak.oy"; oz: "ak.oz"; pa: "ak.pa"; pb: "ak.pb"; pc: "ak.pc"; pd: "ak.pd"; pe: "ak.pe"; pf: "ak.pf"; pg: "ak.pg"; ph: "ak.ph"; pi: "ak.pi"; pj: "ak.pj"; pk: "ak.pk"; pl: "ak.pl"; pm: "ak.pm"; pn: "ak.pn"; po: "ak.po"; pp: "ak.pp"; pq: "ak.pq"; pr: "ak.pr"; ps: "ak.ps"; pt: "ak.pt"; pu: "ak.pu"; pv: "ak.pv"; pw: "ak.pw"; px: "ak.px"; py: "ak.py"; pz: "ak.pz"; qa: "ak.qa"; qb: "ak.qb"; qc: "ak.qc"; qd: "ak.qd"; qe: "ak.qe"; qf: "ak.qf"; qg: "ak.qg"; qh: "ak.qh"; qi: "ak.qi"; qj: "ak.qj"; qk: "ak.qk"; ql: "ak.ql"; qm: "ak.qm"; qn: "ak.qn"; qo: "ak.qo"; qp: "ak.qp"; qq: "ak.qq"; qr: "ak.qr"; qs: "ak.qs"; qt: "ak.qt"; qu: "ak.qu"; qv: "ak.qv"; qw: "ak.qw"; qx: "ak.qx"; qy: "ak.qy"; qz: "ak.qz"; ra: "ak.ra"; rb: "ak.rb"; rc: "ak.rc"; rd: "ak.rd"; re: "ak.re"; rf: "ak.rf"; rg: "ak.rg"; rh: "ak.rh"; ri: "ak.ri"; rj: "ak.rj"; rk: "ak.rk"; rl: "ak.rl"; rm: "ak.rm"; rn: "ak.rn"; ro: "ak.ro"; rp: "ak.rp"; rq: "ak.rq"; rr: "ak.rr"; rs: "ak.rs"; rt: "ak.rt"; ru: "ak.ru"; rv: "ak.rv"; rw: "ak.rw"; rx: "ak.rx"; ry: "ak.ry"; rz: "ak.rz"; sa: "ak.sa"; sb: "ak.sb"; sc: "ak.sc"; sd: "ak.sd"; se: "ak.se"; sf: "ak.sf"; sg: "ak.sg"; sh: "ak.sh"; si: "ak.si"; sj: "ak.sj"; sk: "ak.sk"; sl: "ak.sl"; sm: "ak.sm"; sn: "ak.sn"; so: "ak.so"; sp: "ak.sp"; sq: "ak.sq"; sr: "ak.sr"; ss: "ak.ss"; st: "ak.st"; su: "ak.su"; sv: "ak.sv"; sw: "ak.sw"; sx: "ak.sx"; sy: "ak.sy"; sz: "ak.sz"; ta: "ak.ta"; tb: "ak.tb"; tc: "ak.tc"; td: "ak.td"; te: "ak.te"; tf: "ak.tf"; tg: "ak.tg"; th: "ak.th"; ti: "ak.ti"; tj: "ak.tj"; tk: "ak.tk"; tl: "ak.tl"; tm: "ak.tm"; tn: "ak.tn"; to: "ak.to"; tp: "ak.tp"; tq: "ak.tq"; tr: "ak.tr"; ts: "ak.ts"; tt: "ak.tt"; tu: "ak.tu"; tv: "ak.tv"; tw: "ak.tw"; tx: "ak.tx"; ty: "ak.ty"; tz: "ak.tz"; ua: "ak.ua"; ub: "ak.ub"; uc: "ak.uc"; ud: "ak.ud"; ue: "ak.ue"; uf: "ak.uf"; ug: "ak.ug"; uh: "ak.uh"; ui: "ak.ui"; uj: "ak.uj"; uk: "ak.uk"; ul: "ak.ul"; um: "ak.um"; un: "ak.un"; uo: "ak.uo"; up: "ak.up"; uq: "ak.uq"; ur: "ak.ur"; us: "ak.us"; ut: "ak.ut"; uu: "ak.uu"; uv: "ak.uv"; uw: "ak.uw"; ux: "ak.ux"; uy: "ak.uy"; uz: "ak.uz"; va: "ak.va"; vb: "ak.vb"; vc: "ak.vc"; vd: "ak.vd"; ve: "ak.ve"; vf: "ak.vf"; vg: "ak.vg"; vh: "ak.vh"; vi: "ak.vi"; vj: "ak.vj"; vk: "ak.vk"; vl: "ak.vl"; vm: "ak.vm"; vn: "ak.vn"; vo: "ak.vo"; vp: "ak.vp"; vq: "ak.vq"; vr: "ak.vr"; vs: "ak.vs"; vt: "ak.vt"; vu: "ak.vu"; vv: "ak.vv"; vw: "ak.vw"; vx: "ak.vx"; vy: "ak.vy"; vz: "ak.vz"; wa: "ak.wa"; wb: "ak.wb"; wc: "ak.wc"; wd: "ak.wd"; we: "ak.we"; wf: "ak.wf"; wg: "ak.wg"; wh: "ak.wh"; wi: "ak.wi"; wj: "ak.wj"; wk: "ak.wk"; wl: "ak.wl"; wm: "ak.wm"; wn: "ak.wn"; wo: "ak.wo"; wp: "ak.wp"; wq: "ak.wq"; wr: "ak.wr"; ws: "ak.ws"; wt: "ak.wt"; wu: "ak.wu"; wv: "ak.wv"; ww: "ak.ww"; wx: "ak.wx"; wy: "ak.wy"; wz: "ak.wz"; xa: "ak.xa"; xb: "ak.xb"; xc: "ak.xc"; xd: "ak.xd"; xe: "ak.xe"; xf: "ak.xf"; xg: "ak.xg"; xh: "ak.xh"; xi: "ak.xi"; xj: "ak.xj"; xk: "ak.xk"; xl: "ak.xl"; xm: "ak.xm"; xn: "ak.xn"; xo: "ak.xo"; xp: "ak.xp"; xq: "ak.xq"; xr: "ak.xr"; xs: "ak.xs"; xt: "ak.xt"; xu: "ak.xu"; xv: "ak.xv"; xw: "ak.xw"; xx: "ak.xx"; xy: "ak.xy"; xz: "ak.xz"; ya: "ak.ya"; yb: "ak.yb"; yc: "ak.yc"; yd: "ak.yd"; ye: "ak.ye"; yf: "ak.yf"; yg: "ak.yg"; yh: "ak.yh"; yi: "ak.yi"; yj: "ak.yj"; yk: "ak.yk"; yl: "ak.yl"; ym: "ak.ym"; yn: "ak.yn"; yo: "ak.yo"; yp: "ak.yp"; yq: "ak.yq"; yr: "ak.yr"; ys: "ak.ys"; yt: "ak.yt"; yu: "ak.yu"; yv: "ak.yv"; yw: "ak.yw"; yx: "ak.yx"; yy: "ak.yy"; yz: "ak.yz"; za: "ak.za"; zb: "ak.zb"; zc: "ak.zc"; zd: "ak.zd"; ze: "ak.ze"; zf: "ak.zf"; zg: "ak.zg"; zh: "ak.zh"; zi: "ak.zi"; zj: "ak.zj"; zk: "ak.zk"; zl: "ak.zl"; zm: "ak.zm"; zn: "ak.zn"; zo: "ak.zo"; zp: "ak.zp"; zq: "ak.zq"; zr: "ak.zr"; zs: "ak.zs"; zt: "ak.zt"; zu: "ak.zu"; zv: "ak.zv"; zw: "ak.zw"; zx: "ak.zx"; zy: "ak.zy"; zz: "ak.zz"; }; al: { aa: "al.aa"; ab: "al.ab"; ac: "al.ac"; ad: "al.ad"; ae: "al.ae"; af: "al.af"; ag: "al.ag"; ah: "al.ah"; ai: "al.ai"; aj: "al.aj"; ak: "al.ak"; al: "al.al"; am: "al.am"; an: "al.an"; ao: "al.ao"; ap: "al.ap"; aq: "al.aq"; ar: "al.ar"; as: "al.as"; at: "al.at"; au: "al.au"; av: "al.av"; aw: "al.aw"; ax: "al.ax"; ay: "al.ay"; az: "al.az"; ba: "al.ba"; bb: "al.bb"; bc: "al.bc"; bd: "al.bd"; be: "al.be"; bf: "al.bf"; bg: "al.bg"; bh: "al.bh"; bi: "al.bi"; bj: "al.bj"; bk: "al.bk"; bl: "al.bl"; bm: "al.bm"; bn: "al.bn"; bo: "al.bo"; bp: "al.bp"; bq: "al.bq"; br: "al.br"; bs: "al.bs"; bt: "al.bt"; bu: "al.bu"; bv: "al.bv"; bw: "al.bw"; bx: "al.bx"; by: "al.by"; bz: "al.bz"; ca: "al.ca"; cb: "al.cb"; cc: "al.cc"; cd: "al.cd"; ce: "al.ce"; cf: "al.cf"; cg: "al.cg"; ch: "al.ch"; ci: "al.ci"; cj: "al.cj"; ck: "al.ck"; cl: "al.cl"; cm: "al.cm"; cn: "al.cn"; co: "al.co"; cp: "al.cp"; cq: "al.cq"; cr: "al.cr"; cs: "al.cs"; ct: "al.ct"; cu: "al.cu"; cv: "al.cv"; cw: "al.cw"; cx: "al.cx"; cy: "al.cy"; cz: "al.cz"; da: "al.da"; db: "al.db"; dc: "al.dc"; dd: "al.dd"; de: "al.de"; df: "al.df"; dg: "al.dg"; dh: "al.dh"; di: "al.di"; dj: "al.dj"; dk: "al.dk"; dl: "al.dl"; dm: "al.dm"; dn: "al.dn"; do: "al.do"; dp: "al.dp"; dq: "al.dq"; dr: "al.dr"; ds: "al.ds"; dt: "al.dt"; du: "al.du"; dv: "al.dv"; dw: "al.dw"; dx: "al.dx"; dy: "al.dy"; dz: "al.dz"; ea: "al.ea"; eb: "al.eb"; ec: "al.ec"; ed: "al.ed"; ee: "al.ee"; ef: "al.ef"; eg: "al.eg"; eh: "al.eh"; ei: "al.ei"; ej: "al.ej"; ek: "al.ek"; el: "al.el"; em: "al.em"; en: "al.en"; eo: "al.eo"; ep: "al.ep"; eq: "al.eq"; er: "al.er"; es: "al.es"; et: "al.et"; eu: "al.eu"; ev: "al.ev"; ew: "al.ew"; ex: "al.ex"; ey: "al.ey"; ez: "al.ez"; fa: "al.fa"; fb: "al.fb"; fc: "al.fc"; fd: "al.fd"; fe: "al.fe"; ff: "al.ff"; fg: "al.fg"; fh: "al.fh"; fi: "al.fi"; fj: "al.fj"; fk: "al.fk"; fl: "al.fl"; fm: "al.fm"; fn: "al.fn"; fo: "al.fo"; fp: "al.fp"; fq: "al.fq"; fr: "al.fr"; fs: "al.fs"; ft: "al.ft"; fu: "al.fu"; fv: "al.fv"; fw: "al.fw"; fx: "al.fx"; fy: "al.fy"; fz: "al.fz"; ga: "al.ga"; gb: "al.gb"; gc: "al.gc"; gd: "al.gd"; ge: "al.ge"; gf: "al.gf"; gg: "al.gg"; gh: "al.gh"; gi: "al.gi"; gj: "al.gj"; gk: "al.gk"; gl: "al.gl"; gm: "al.gm"; gn: "al.gn"; go: "al.go"; gp: "al.gp"; gq: "al.gq"; gr: "al.gr"; gs: "al.gs"; gt: "al.gt"; gu: "al.gu"; gv: "al.gv"; gw: "al.gw"; gx: "al.gx"; gy: "al.gy"; gz: "al.gz"; ha: "al.ha"; hb: "al.hb"; hc: "al.hc"; hd: "al.hd"; he: "al.he"; hf: "al.hf"; hg: "al.hg"; hh: "al.hh"; hi: "al.hi"; hj: "al.hj"; hk: "al.hk"; hl: "al.hl"; hm: "al.hm"; hn: "al.hn"; ho: "al.ho"; hp: "al.hp"; hq: "al.hq"; hr: "al.hr"; hs: "al.hs"; ht: "al.ht"; hu: "al.hu"; hv: "al.hv"; hw: "al.hw"; hx: "al.hx"; hy: "al.hy"; hz: "al.hz"; ia: "al.ia"; ib: "al.ib"; ic: "al.ic"; id: "al.id"; ie: "al.ie"; if: "al.if"; ig: "al.ig"; ih: "al.ih"; ii: "al.ii"; ij: "al.ij"; ik: "al.ik"; il: "al.il"; im: "al.im"; in: "al.in"; io: "al.io"; ip: "al.ip"; iq: "al.iq"; ir: "al.ir"; is: "al.is"; it: "al.it"; iu: "al.iu"; iv: "al.iv"; iw: "al.iw"; ix: "al.ix"; iy: "al.iy"; iz: "al.iz"; ja: "al.ja"; jb: "al.jb"; jc: "al.jc"; jd: "al.jd"; je: "al.je"; jf: "al.jf"; jg: "al.jg"; jh: "al.jh"; ji: "al.ji"; jj: "al.jj"; jk: "al.jk"; jl: "al.jl"; jm: "al.jm"; jn: "al.jn"; jo: "al.jo"; jp: "al.jp"; jq: "al.jq"; jr: "al.jr"; js: "al.js"; jt: "al.jt"; ju: "al.ju"; jv: "al.jv"; jw: "al.jw"; jx: "al.jx"; jy: "al.jy"; jz: "al.jz"; ka: "al.ka"; kb: "al.kb"; kc: "al.kc"; kd: "al.kd"; ke: "al.ke"; kf: "al.kf"; kg: "al.kg"; kh: "al.kh"; ki: "al.ki"; kj: "al.kj"; kk: "al.kk"; kl: "al.kl"; km: "al.km"; kn: "al.kn"; ko: "al.ko"; kp: "al.kp"; kq: "al.kq"; kr: "al.kr"; ks: "al.ks"; kt: "al.kt"; ku: "al.ku"; kv: "al.kv"; kw: "al.kw"; kx: "al.kx"; ky: "al.ky"; kz: "al.kz"; la: "al.la"; lb: "al.lb"; lc: "al.lc"; ld: "al.ld"; le: "al.le"; lf: "al.lf"; lg: "al.lg"; lh: "al.lh"; li: "al.li"; lj: "al.lj"; lk: "al.lk"; ll: "al.ll"; lm: "al.lm"; ln: "al.ln"; lo: "al.lo"; lp: "al.lp"; lq: "al.lq"; lr: "al.lr"; ls: "al.ls"; lt: "al.lt"; lu: "al.lu"; lv: "al.lv"; lw: "al.lw"; lx: "al.lx"; ly: "al.ly"; lz: "al.lz"; ma: "al.ma"; mb: "al.mb"; mc: "al.mc"; md: "al.md"; me: "al.me"; mf: "al.mf"; mg: "al.mg"; mh: "al.mh"; mi: "al.mi"; mj: "al.mj"; mk: "al.mk"; ml: "al.ml"; mm: "al.mm"; mn: "al.mn"; mo: "al.mo"; mp: "al.mp"; mq: "al.mq"; mr: "al.mr"; ms: "al.ms"; mt: "al.mt"; mu: "al.mu"; mv: "al.mv"; mw: "al.mw"; mx: "al.mx"; my: "al.my"; mz: "al.mz"; na: "al.na"; nb: "al.nb"; nc: "al.nc"; nd: "al.nd"; ne: "al.ne"; nf: "al.nf"; ng: "al.ng"; nh: "al.nh"; ni: "al.ni"; nj: "al.nj"; nk: "al.nk"; nl: "al.nl"; nm: "al.nm"; nn: "al.nn"; no: "al.no"; np: "al.np"; nq: "al.nq"; nr: "al.nr"; ns: "al.ns"; nt: "al.nt"; nu: "al.nu"; nv: "al.nv"; nw: "al.nw"; nx: "al.nx"; ny: "al.ny"; nz: "al.nz"; oa: "al.oa"; ob: "al.ob"; oc: "al.oc"; od: "al.od"; oe: "al.oe"; of: "al.of"; og: "al.og"; oh: "al.oh"; oi: "al.oi"; oj: "al.oj"; ok: "al.ok"; ol: "al.ol"; om: "al.om"; on: "al.on"; oo: "al.oo"; op: "al.op"; oq: "al.oq"; or: "al.or"; os: "al.os"; ot: "al.ot"; ou: "al.ou"; ov: "al.ov"; ow: "al.ow"; ox: "al.ox"; oy: "al.oy"; oz: "al.oz"; pa: "al.pa"; pb: "al.pb"; pc: "al.pc"; pd: "al.pd"; pe: "al.pe"; pf: "al.pf"; pg: "al.pg"; ph: "al.ph"; pi: "al.pi"; pj: "al.pj"; pk: "al.pk"; pl: "al.pl"; pm: "al.pm"; pn: "al.pn"; po: "al.po"; pp: "al.pp"; pq: "al.pq"; pr: "al.pr"; ps: "al.ps"; pt: "al.pt"; pu: "al.pu"; pv: "al.pv"; pw: "al.pw"; px: "al.px"; py: "al.py"; pz: "al.pz"; qa: "al.qa"; qb: "al.qb"; qc: "al.qc"; qd: "al.qd"; qe: "al.qe"; qf: "al.qf"; qg: "al.qg"; qh: "al.qh"; qi: "al.qi"; qj: "al.qj"; qk: "al.qk"; ql: "al.ql"; qm: "al.qm"; qn: "al.qn"; qo: "al.qo"; qp: "al.qp"; qq: "al.qq"; qr: "al.qr"; qs: "al.qs"; qt: "al.qt"; qu: "al.qu"; qv: "al.qv"; qw: "al.qw"; qx: "al.qx"; qy: "al.qy"; qz: "al.qz"; ra: "al.ra"; rb: "al.rb"; rc: "al.rc"; rd: "al.rd"; re: "al.re"; rf: "al.rf"; rg: "al.rg"; rh: "al.rh"; ri: "al.ri"; rj: "al.rj"; rk: "al.rk"; rl: "al.rl"; rm: "al.rm"; rn: "al.rn"; ro: "al.ro"; rp: "al.rp"; rq: "al.rq"; rr: "al.rr"; rs: "al.rs"; rt: "al.rt"; ru: "al.ru"; rv: "al.rv"; rw: "al.rw"; rx: "al.rx"; ry: "al.ry"; rz: "al.rz"; sa: "al.sa"; sb: "al.sb"; sc: "al.sc"; sd: "al.sd"; se: "al.se"; sf: "al.sf"; sg: "al.sg"; sh: "al.sh"; si: "al.si"; sj: "al.sj"; sk: "al.sk"; sl: "al.sl"; sm: "al.sm"; sn: "al.sn"; so: "al.so"; sp: "al.sp"; sq: "al.sq"; sr: "al.sr"; ss: "al.ss"; st: "al.st"; su: "al.su"; sv: "al.sv"; sw: "al.sw"; sx: "al.sx"; sy: "al.sy"; sz: "al.sz"; ta: "al.ta"; tb: "al.tb"; tc: "al.tc"; td: "al.td"; te: "al.te"; tf: "al.tf"; tg: "al.tg"; th: "al.th"; ti: "al.ti"; tj: "al.tj"; tk: "al.tk"; tl: "al.tl"; tm: "al.tm"; tn: "al.tn"; to: "al.to"; tp: "al.tp"; tq: "al.tq"; tr: "al.tr"; ts: "al.ts"; tt: "al.tt"; tu: "al.tu"; tv: "al.tv"; tw: "al.tw"; tx: "al.tx"; ty: "al.ty"; tz: "al.tz"; ua: "al.ua"; ub: "al.ub"; uc: "al.uc"; ud: "al.ud"; ue: "al.ue"; uf: "al.uf"; ug: "al.ug"; uh: "al.uh"; ui: "al.ui"; uj: "al.uj"; uk: "al.uk"; ul: "al.ul"; um: "al.um"; un: "al.un"; uo: "al.uo"; up: "al.up"; uq: "al.uq"; ur: "al.ur"; us: "al.us"; ut: "al.ut"; uu: "al.uu"; uv: "al.uv"; uw: "al.uw"; ux: "al.ux"; uy: "al.uy"; uz: "al.uz"; va: "al.va"; vb: "al.vb"; vc: "al.vc"; vd: "al.vd"; ve: "al.ve"; vf: "al.vf"; vg: "al.vg"; vh: "al.vh"; vi: "al.vi"; vj: "al.vj"; vk: "al.vk"; vl: "al.vl"; vm: "al.vm"; vn: "al.vn"; vo: "al.vo"; vp: "al.vp"; vq: "al.vq"; vr: "al.vr"; vs: "al.vs"; vt: "al.vt"; vu: "al.vu"; vv: "al.vv"; vw: "al.vw"; vx: "al.vx"; vy: "al.vy"; vz: "al.vz"; wa: "al.wa"; wb: "al.wb"; wc: "al.wc"; wd: "al.wd"; we: "al.we"; wf: "al.wf"; wg: "al.wg"; wh: "al.wh"; wi: "al.wi"; wj: "al.wj"; wk: "al.wk"; wl: "al.wl"; wm: "al.wm"; wn: "al.wn"; wo: "al.wo"; wp: "al.wp"; wq: "al.wq"; wr: "al.wr"; ws: "al.ws"; wt: "al.wt"; wu: "al.wu"; wv: "al.wv"; ww: "al.ww"; wx: "al.wx"; wy: "al.wy"; wz: "al.wz"; xa: "al.xa"; xb: "al.xb"; xc: "al.xc"; xd: "al.xd"; xe: "al.xe"; xf: "al.xf"; xg: "al.xg"; xh: "al.xh"; xi: "al.xi"; xj: "al.xj"; xk: "al.xk"; xl: "al.xl"; xm: "al.xm"; xn: "al.xn"; xo: "al.xo"; xp: "al.xp"; xq: "al.xq"; xr: "al.xr"; xs: "al.xs"; xt: "al.xt"; xu: "al.xu"; xv: "al.xv"; xw: "al.xw"; xx: "al.xx"; xy: "al.xy"; xz: "al.xz"; ya: "al.ya"; yb: "al.yb"; yc: "al.yc"; yd: "al.yd"; ye: "al.ye"; yf: "al.yf"; yg: "al.yg"; yh: "al.yh"; yi: "al.yi"; yj: "al.yj"; yk: "al.yk"; yl: "al.yl"; ym: "al.ym"; yn: "al.yn"; yo: "al.yo"; yp: "al.yp"; yq: "al.yq"; yr: "al.yr"; ys: "al.ys"; yt: "al.yt"; yu: "al.yu"; yv: "al.yv"; yw: "al.yw"; yx: "al.yx"; yy: "al.yy"; yz: "al.yz"; za: "al.za"; zb: "al.zb"; zc: "al.zc"; zd: "al.zd"; ze: "al.ze"; zf: "al.zf"; zg: "al.zg"; zh: "al.zh"; zi: "al.zi"; zj: "al.zj"; zk: "al.zk"; zl: "al.zl"; zm: "al.zm"; zn: "al.zn"; zo: "al.zo"; zp: "al.zp"; zq: "al.zq"; zr: "al.zr"; zs: "al.zs"; zt: "al.zt"; zu: "al.zu"; zv: "al.zv"; zw: "al.zw"; zx: "al.zx"; zy: "al.zy"; zz: "al.zz"; }; am: { aa: "am.aa"; ab: "am.ab"; ac: "am.ac"; ad: "am.ad"; ae: "am.ae"; af: "am.af"; ag: "am.ag"; ah: "am.ah"; ai: "am.ai"; aj: "am.aj"; ak: "am.ak"; al: "am.al"; am: "am.am"; an: "am.an"; ao: "am.ao"; ap: "am.ap"; aq: "am.aq"; ar: "am.ar"; as: "am.as"; at: "am.at"; au: "am.au"; av: "am.av"; aw: "am.aw"; ax: "am.ax"; ay: "am.ay"; az: "am.az"; ba: "am.ba"; bb: "am.bb"; bc: "am.bc"; bd: "am.bd"; be: "am.be"; bf: "am.bf"; bg: "am.bg"; bh: "am.bh"; bi: "am.bi"; bj: "am.bj"; bk: "am.bk"; bl: "am.bl"; bm: "am.bm"; bn: "am.bn"; bo: "am.bo"; bp: "am.bp"; bq: "am.bq"; br: "am.br"; bs: "am.bs"; bt: "am.bt"; bu: "am.bu"; bv: "am.bv"; bw: "am.bw"; bx: "am.bx"; by: "am.by"; bz: "am.bz"; ca: "am.ca"; cb: "am.cb"; cc: "am.cc"; cd: "am.cd"; ce: "am.ce"; cf: "am.cf"; cg: "am.cg"; ch: "am.ch"; ci: "am.ci"; cj: "am.cj"; ck: "am.ck"; cl: "am.cl"; cm: "am.cm"; cn: "am.cn"; co: "am.co"; cp: "am.cp"; cq: "am.cq"; cr: "am.cr"; cs: "am.cs"; ct: "am.ct"; cu: "am.cu"; cv: "am.cv"; cw: "am.cw"; cx: "am.cx"; cy: "am.cy"; cz: "am.cz"; da: "am.da"; db: "am.db"; dc: "am.dc"; dd: "am.dd"; de: "am.de"; df: "am.df"; dg: "am.dg"; dh: "am.dh"; di: "am.di"; dj: "am.dj"; dk: "am.dk"; dl: "am.dl"; dm: "am.dm"; dn: "am.dn"; do: "am.do"; dp: "am.dp"; dq: "am.dq"; dr: "am.dr"; ds: "am.ds"; dt: "am.dt"; du: "am.du"; dv: "am.dv"; dw: "am.dw"; dx: "am.dx"; dy: "am.dy"; dz: "am.dz"; ea: "am.ea"; eb: "am.eb"; ec: "am.ec"; ed: "am.ed"; ee: "am.ee"; ef: "am.ef"; eg: "am.eg"; eh: "am.eh"; ei: "am.ei"; ej: "am.ej"; ek: "am.ek"; el: "am.el"; em: "am.em"; en: "am.en"; eo: "am.eo"; ep: "am.ep"; eq: "am.eq"; er: "am.er"; es: "am.es"; et: "am.et"; eu: "am.eu"; ev: "am.ev"; ew: "am.ew"; ex: "am.ex"; ey: "am.ey"; ez: "am.ez"; fa: "am.fa"; fb: "am.fb"; fc: "am.fc"; fd: "am.fd"; fe: "am.fe"; ff: "am.ff"; fg: "am.fg"; fh: "am.fh"; fi: "am.fi"; fj: "am.fj"; fk: "am.fk"; fl: "am.fl"; fm: "am.fm"; fn: "am.fn"; fo: "am.fo"; fp: "am.fp"; fq: "am.fq"; fr: "am.fr"; fs: "am.fs"; ft: "am.ft"; fu: "am.fu"; fv: "am.fv"; fw: "am.fw"; fx: "am.fx"; fy: "am.fy"; fz: "am.fz"; ga: "am.ga"; gb: "am.gb"; gc: "am.gc"; gd: "am.gd"; ge: "am.ge"; gf: "am.gf"; gg: "am.gg"; gh: "am.gh"; gi: "am.gi"; gj: "am.gj"; gk: "am.gk"; gl: "am.gl"; gm: "am.gm"; gn: "am.gn"; go: "am.go"; gp: "am.gp"; gq: "am.gq"; gr: "am.gr"; gs: "am.gs"; gt: "am.gt"; gu: "am.gu"; gv: "am.gv"; gw: "am.gw"; gx: "am.gx"; gy: "am.gy"; gz: "am.gz"; ha: "am.ha"; hb: "am.hb"; hc: "am.hc"; hd: "am.hd"; he: "am.he"; hf: "am.hf"; hg: "am.hg"; hh: "am.hh"; hi: "am.hi"; hj: "am.hj"; hk: "am.hk"; hl: "am.hl"; hm: "am.hm"; hn: "am.hn"; ho: "am.ho"; hp: "am.hp"; hq: "am.hq"; hr: "am.hr"; hs: "am.hs"; ht: "am.ht"; hu: "am.hu"; hv: "am.hv"; hw: "am.hw"; hx: "am.hx"; hy: "am.hy"; hz: "am.hz"; ia: "am.ia"; ib: "am.ib"; ic: "am.ic"; id: "am.id"; ie: "am.ie"; if: "am.if"; ig: "am.ig"; ih: "am.ih"; ii: "am.ii"; ij: "am.ij"; ik: "am.ik"; il: "am.il"; im: "am.im"; in: "am.in"; io: "am.io"; ip: "am.ip"; iq: "am.iq"; ir: "am.ir"; is: "am.is"; it: "am.it"; iu: "am.iu"; iv: "am.iv"; iw: "am.iw"; ix: "am.ix"; iy: "am.iy"; iz: "am.iz"; ja: "am.ja"; jb: "am.jb"; jc: "am.jc"; jd: "am.jd"; je: "am.je"; jf: "am.jf"; jg: "am.jg"; jh: "am.jh"; ji: "am.ji"; jj: "am.jj"; jk: "am.jk"; jl: "am.jl"; jm: "am.jm"; jn: "am.jn"; jo: "am.jo"; jp: "am.jp"; jq: "am.jq"; jr: "am.jr"; js: "am.js"; jt: "am.jt"; ju: "am.ju"; jv: "am.jv"; jw: "am.jw"; jx: "am.jx"; jy: "am.jy"; jz: "am.jz"; ka: "am.ka"; kb: "am.kb"; kc: "am.kc"; kd: "am.kd"; ke: "am.ke"; kf: "am.kf"; kg: "am.kg"; kh: "am.kh"; ki: "am.ki"; kj: "am.kj"; kk: "am.kk"; kl: "am.kl"; km: "am.km"; kn: "am.kn"; ko: "am.ko"; kp: "am.kp"; kq: "am.kq"; kr: "am.kr"; ks: "am.ks"; kt: "am.kt"; ku: "am.ku"; kv: "am.kv"; kw: "am.kw"; kx: "am.kx"; ky: "am.ky"; kz: "am.kz"; la: "am.la"; lb: "am.lb"; lc: "am.lc"; ld: "am.ld"; le: "am.le"; lf: "am.lf"; lg: "am.lg"; lh: "am.lh"; li: "am.li"; lj: "am.lj"; lk: "am.lk"; ll: "am.ll"; lm: "am.lm"; ln: "am.ln"; lo: "am.lo"; lp: "am.lp"; lq: "am.lq"; lr: "am.lr"; ls: "am.ls"; lt: "am.lt"; lu: "am.lu"; lv: "am.lv"; lw: "am.lw"; lx: "am.lx"; ly: "am.ly"; lz: "am.lz"; ma: "am.ma"; mb: "am.mb"; mc: "am.mc"; md: "am.md"; me: "am.me"; mf: "am.mf"; mg: "am.mg"; mh: "am.mh"; mi: "am.mi"; mj: "am.mj"; mk: "am.mk"; ml: "am.ml"; mm: "am.mm"; mn: "am.mn"; mo: "am.mo"; mp: "am.mp"; mq: "am.mq"; mr: "am.mr"; ms: "am.ms"; mt: "am.mt"; mu: "am.mu"; mv: "am.mv"; mw: "am.mw"; mx: "am.mx"; my: "am.my"; mz: "am.mz"; na: "am.na"; nb: "am.nb"; nc: "am.nc"; nd: "am.nd"; ne: "am.ne"; nf: "am.nf"; ng: "am.ng"; nh: "am.nh"; ni: "am.ni"; nj: "am.nj"; nk: "am.nk"; nl: "am.nl"; nm: "am.nm"; nn: "am.nn"; no: "am.no"; np: "am.np"; nq: "am.nq"; nr: "am.nr"; ns: "am.ns"; nt: "am.nt"; nu: "am.nu"; nv: "am.nv"; nw: "am.nw"; nx: "am.nx"; ny: "am.ny"; nz: "am.nz"; oa: "am.oa"; ob: "am.ob"; oc: "am.oc"; od: "am.od"; oe: "am.oe"; of: "am.of"; og: "am.og"; oh: "am.oh"; oi: "am.oi"; oj: "am.oj"; ok: "am.ok"; ol: "am.ol"; om: "am.om"; on: "am.on"; oo: "am.oo"; op: "am.op"; oq: "am.oq"; or: "am.or"; os: "am.os"; ot: "am.ot"; ou: "am.ou"; ov: "am.ov"; ow: "am.ow"; ox: "am.ox"; oy: "am.oy"; oz: "am.oz"; pa: "am.pa"; pb: "am.pb"; pc: "am.pc"; pd: "am.pd"; pe: "am.pe"; pf: "am.pf"; pg: "am.pg"; ph: "am.ph"; pi: "am.pi"; pj: "am.pj"; pk: "am.pk"; pl: "am.pl"; pm: "am.pm"; pn: "am.pn"; po: "am.po"; pp: "am.pp"; pq: "am.pq"; pr: "am.pr"; ps: "am.ps"; pt: "am.pt"; pu: "am.pu"; pv: "am.pv"; pw: "am.pw"; px: "am.px"; py: "am.py"; pz: "am.pz"; qa: "am.qa"; qb: "am.qb"; qc: "am.qc"; qd: "am.qd"; qe: "am.qe"; qf: "am.qf"; qg: "am.qg"; qh: "am.qh"; qi: "am.qi"; qj: "am.qj"; qk: "am.qk"; ql: "am.ql"; qm: "am.qm"; qn: "am.qn"; qo: "am.qo"; qp: "am.qp"; qq: "am.qq"; qr: "am.qr"; qs: "am.qs"; qt: "am.qt"; qu: "am.qu"; qv: "am.qv"; qw: "am.qw"; qx: "am.qx"; qy: "am.qy"; qz: "am.qz"; ra: "am.ra"; rb: "am.rb"; rc: "am.rc"; rd: "am.rd"; re: "am.re"; rf: "am.rf"; rg: "am.rg"; rh: "am.rh"; ri: "am.ri"; rj: "am.rj"; rk: "am.rk"; rl: "am.rl"; rm: "am.rm"; rn: "am.rn"; ro: "am.ro"; rp: "am.rp"; rq: "am.rq"; rr: "am.rr"; rs: "am.rs"; rt: "am.rt"; ru: "am.ru"; rv: "am.rv"; rw: "am.rw"; rx: "am.rx"; ry: "am.ry"; rz: "am.rz"; sa: "am.sa"; sb: "am.sb"; sc: "am.sc"; sd: "am.sd"; se: "am.se"; sf: "am.sf"; sg: "am.sg"; sh: "am.sh"; si: "am.si"; sj: "am.sj"; sk: "am.sk"; sl: "am.sl"; sm: "am.sm"; sn: "am.sn"; so: "am.so"; sp: "am.sp"; sq: "am.sq"; sr: "am.sr"; ss: "am.ss"; st: "am.st"; su: "am.su"; sv: "am.sv"; sw: "am.sw"; sx: "am.sx"; sy: "am.sy"; sz: "am.sz"; ta: "am.ta"; tb: "am.tb"; tc: "am.tc"; td: "am.td"; te: "am.te"; tf: "am.tf"; tg: "am.tg"; th: "am.th"; ti: "am.ti"; tj: "am.tj"; tk: "am.tk"; tl: "am.tl"; tm: "am.tm"; tn: "am.tn"; to: "am.to"; tp: "am.tp"; tq: "am.tq"; tr: "am.tr"; ts: "am.ts"; tt: "am.tt"; tu: "am.tu"; tv: "am.tv"; tw: "am.tw"; tx: "am.tx"; ty: "am.ty"; tz: "am.tz"; ua: "am.ua"; ub: "am.ub"; uc: "am.uc"; ud: "am.ud"; ue: "am.ue"; uf: "am.uf"; ug: "am.ug"; uh: "am.uh"; ui: "am.ui"; uj: "am.uj"; uk: "am.uk"; ul: "am.ul"; um: "am.um"; un: "am.un"; uo: "am.uo"; up: "am.up"; uq: "am.uq"; ur: "am.ur"; us: "am.us"; ut: "am.ut"; uu: "am.uu"; uv: "am.uv"; uw: "am.uw"; ux: "am.ux"; uy: "am.uy"; uz: "am.uz"; va: "am.va"; vb: "am.vb"; vc: "am.vc"; vd: "am.vd"; ve: "am.ve"; vf: "am.vf"; vg: "am.vg"; vh: "am.vh"; vi: "am.vi"; vj: "am.vj"; vk: "am.vk"; vl: "am.vl"; vm: "am.vm"; vn: "am.vn"; vo: "am.vo"; vp: "am.vp"; vq: "am.vq"; vr: "am.vr"; vs: "am.vs"; vt: "am.vt"; vu: "am.vu"; vv: "am.vv"; vw: "am.vw"; vx: "am.vx"; vy: "am.vy"; vz: "am.vz"; wa: "am.wa"; wb: "am.wb"; wc: "am.wc"; wd: "am.wd"; we: "am.we"; wf: "am.wf"; wg: "am.wg"; wh: "am.wh"; wi: "am.wi"; wj: "am.wj"; wk: "am.wk"; wl: "am.wl"; wm: "am.wm"; wn: "am.wn"; wo: "am.wo"; wp: "am.wp"; wq: "am.wq"; wr: "am.wr"; ws: "am.ws"; wt: "am.wt"; wu: "am.wu"; wv: "am.wv"; ww: "am.ww"; wx: "am.wx"; wy: "am.wy"; wz: "am.wz"; xa: "am.xa"; xb: "am.xb"; xc: "am.xc"; xd: "am.xd"; xe: "am.xe"; xf: "am.xf"; xg: "am.xg"; xh: "am.xh"; xi: "am.xi"; xj: "am.xj"; xk: "am.xk"; xl: "am.xl"; xm: "am.xm"; xn: "am.xn"; xo: "am.xo"; xp: "am.xp"; xq: "am.xq"; xr: "am.xr"; xs: "am.xs"; xt: "am.xt"; xu: "am.xu"; xv: "am.xv"; xw: "am.xw"; xx: "am.xx"; xy: "am.xy"; xz: "am.xz"; ya: "am.ya"; yb: "am.yb"; yc: "am.yc"; yd: "am.yd"; ye: "am.ye"; yf: "am.yf"; yg: "am.yg"; yh: "am.yh"; yi: "am.yi"; yj: "am.yj"; yk: "am.yk"; yl: "am.yl"; ym: "am.ym"; yn: "am.yn"; yo: "am.yo"; yp: "am.yp"; yq: "am.yq"; yr: "am.yr"; ys: "am.ys"; yt: "am.yt"; yu: "am.yu"; yv: "am.yv"; yw: "am.yw"; yx: "am.yx"; yy: "am.yy"; yz: "am.yz"; za: "am.za"; zb: "am.zb"; zc: "am.zc"; zd: "am.zd"; ze: "am.ze"; zf: "am.zf"; zg: "am.zg"; zh: "am.zh"; zi: "am.zi"; zj: "am.zj"; zk: "am.zk"; zl: "am.zl"; zm: "am.zm"; zn: "am.zn"; zo: "am.zo"; zp: "am.zp"; zq: "am.zq"; zr: "am.zr"; zs: "am.zs"; zt: "am.zt"; zu: "am.zu"; zv: "am.zv"; zw: "am.zw"; zx: "am.zx"; zy: "am.zy"; zz: "am.zz"; }; an: { aa: "an.aa"; ab: "an.ab"; ac: "an.ac"; ad: "an.ad"; ae: "an.ae"; af: "an.af"; ag: "an.ag"; ah: "an.ah"; ai: "an.ai"; aj: "an.aj"; ak: "an.ak"; al: "an.al"; am: "an.am"; an: "an.an"; ao: "an.ao"; ap: "an.ap"; aq: "an.aq"; ar: "an.ar"; as: "an.as"; at: "an.at"; au: "an.au"; av: "an.av"; aw: "an.aw"; ax: "an.ax"; ay: "an.ay"; az: "an.az"; ba: "an.ba"; bb: "an.bb"; bc: "an.bc"; bd: "an.bd"; be: "an.be"; bf: "an.bf"; bg: "an.bg"; bh: "an.bh"; bi: "an.bi"; bj: "an.bj"; bk: "an.bk"; bl: "an.bl"; bm: "an.bm"; bn: "an.bn"; bo: "an.bo"; bp: "an.bp"; bq: "an.bq"; br: "an.br"; bs: "an.bs"; bt: "an.bt"; bu: "an.bu"; bv: "an.bv"; bw: "an.bw"; bx: "an.bx"; by: "an.by"; bz: "an.bz"; ca: "an.ca"; cb: "an.cb"; cc: "an.cc"; cd: "an.cd"; ce: "an.ce"; cf: "an.cf"; cg: "an.cg"; ch: "an.ch"; ci: "an.ci"; cj: "an.cj"; ck: "an.ck"; cl: "an.cl"; cm: "an.cm"; cn: "an.cn"; co: "an.co"; cp: "an.cp"; cq: "an.cq"; cr: "an.cr"; cs: "an.cs"; ct: "an.ct"; cu: "an.cu"; cv: "an.cv"; cw: "an.cw"; cx: "an.cx"; cy: "an.cy"; cz: "an.cz"; da: "an.da"; db: "an.db"; dc: "an.dc"; dd: "an.dd"; de: "an.de"; df: "an.df"; dg: "an.dg"; dh: "an.dh"; di: "an.di"; dj: "an.dj"; dk: "an.dk"; dl: "an.dl"; dm: "an.dm"; dn: "an.dn"; do: "an.do"; dp: "an.dp"; dq: "an.dq"; dr: "an.dr"; ds: "an.ds"; dt: "an.dt"; du: "an.du"; dv: "an.dv"; dw: "an.dw"; dx: "an.dx"; dy: "an.dy"; dz: "an.dz"; ea: "an.ea"; eb: "an.eb"; ec: "an.ec"; ed: "an.ed"; ee: "an.ee"; ef: "an.ef"; eg: "an.eg"; eh: "an.eh"; ei: "an.ei"; ej: "an.ej"; ek: "an.ek"; el: "an.el"; em: "an.em"; en: "an.en"; eo: "an.eo"; ep: "an.ep"; eq: "an.eq"; er: "an.er"; es: "an.es"; et: "an.et"; eu: "an.eu"; ev: "an.ev"; ew: "an.ew"; ex: "an.ex"; ey: "an.ey"; ez: "an.ez"; fa: "an.fa"; fb: "an.fb"; fc: "an.fc"; fd: "an.fd"; fe: "an.fe"; ff: "an.ff"; fg: "an.fg"; fh: "an.fh"; fi: "an.fi"; fj: "an.fj"; fk: "an.fk"; fl: "an.fl"; fm: "an.fm"; fn: "an.fn"; fo: "an.fo"; fp: "an.fp"; fq: "an.fq"; fr: "an.fr"; fs: "an.fs"; ft: "an.ft"; fu: "an.fu"; fv: "an.fv"; fw: "an.fw"; fx: "an.fx"; fy: "an.fy"; fz: "an.fz"; ga: "an.ga"; gb: "an.gb"; gc: "an.gc"; gd: "an.gd"; ge: "an.ge"; gf: "an.gf"; gg: "an.gg"; gh: "an.gh"; gi: "an.gi"; gj: "an.gj"; gk: "an.gk"; gl: "an.gl"; gm: "an.gm"; gn: "an.gn"; go: "an.go"; gp: "an.gp"; gq: "an.gq"; gr: "an.gr"; gs: "an.gs"; gt: "an.gt"; gu: "an.gu"; gv: "an.gv"; gw: "an.gw"; gx: "an.gx"; gy: "an.gy"; gz: "an.gz"; ha: "an.ha"; hb: "an.hb"; hc: "an.hc"; hd: "an.hd"; he: "an.he"; hf: "an.hf"; hg: "an.hg"; hh: "an.hh"; hi: "an.hi"; hj: "an.hj"; hk: "an.hk"; hl: "an.hl"; hm: "an.hm"; hn: "an.hn"; ho: "an.ho"; hp: "an.hp"; hq: "an.hq"; hr: "an.hr"; hs: "an.hs"; ht: "an.ht"; hu: "an.hu"; hv: "an.hv"; hw: "an.hw"; hx: "an.hx"; hy: "an.hy"; hz: "an.hz"; ia: "an.ia"; ib: "an.ib"; ic: "an.ic"; id: "an.id"; ie: "an.ie"; if: "an.if"; ig: "an.ig"; ih: "an.ih"; ii: "an.ii"; ij: "an.ij"; ik: "an.ik"; il: "an.il"; im: "an.im"; in: "an.in"; io: "an.io"; ip: "an.ip"; iq: "an.iq"; ir: "an.ir"; is: "an.is"; it: "an.it"; iu: "an.iu"; iv: "an.iv"; iw: "an.iw"; ix: "an.ix"; iy: "an.iy"; iz: "an.iz"; ja: "an.ja"; jb: "an.jb"; jc: "an.jc"; jd: "an.jd"; je: "an.je"; jf: "an.jf"; jg: "an.jg"; jh: "an.jh"; ji: "an.ji"; jj: "an.jj"; jk: "an.jk"; jl: "an.jl"; jm: "an.jm"; jn: "an.jn"; jo: "an.jo"; jp: "an.jp"; jq: "an.jq"; jr: "an.jr"; js: "an.js"; jt: "an.jt"; ju: "an.ju"; jv: "an.jv"; jw: "an.jw"; jx: "an.jx"; jy: "an.jy"; jz: "an.jz"; ka: "an.ka"; kb: "an.kb"; kc: "an.kc"; kd: "an.kd"; ke: "an.ke"; kf: "an.kf"; kg: "an.kg"; kh: "an.kh"; ki: "an.ki"; kj: "an.kj"; kk: "an.kk"; kl: "an.kl"; km: "an.km"; kn: "an.kn"; ko: "an.ko"; kp: "an.kp"; kq: "an.kq"; kr: "an.kr"; ks: "an.ks"; kt: "an.kt"; ku: "an.ku"; kv: "an.kv"; kw: "an.kw"; kx: "an.kx"; ky: "an.ky"; kz: "an.kz"; la: "an.la"; lb: "an.lb"; lc: "an.lc"; ld: "an.ld"; le: "an.le"; lf: "an.lf"; lg: "an.lg"; lh: "an.lh"; li: "an.li"; lj: "an.lj"; lk: "an.lk"; ll: "an.ll"; lm: "an.lm"; ln: "an.ln"; lo: "an.lo"; lp: "an.lp"; lq: "an.lq"; lr: "an.lr"; ls: "an.ls"; lt: "an.lt"; lu: "an.lu"; lv: "an.lv"; lw: "an.lw"; lx: "an.lx"; ly: "an.ly"; lz: "an.lz"; ma: "an.ma"; mb: "an.mb"; mc: "an.mc"; md: "an.md"; me: "an.me"; mf: "an.mf"; mg: "an.mg"; mh: "an.mh"; mi: "an.mi"; mj: "an.mj"; mk: "an.mk"; ml: "an.ml"; mm: "an.mm"; mn: "an.mn"; mo: "an.mo"; mp: "an.mp"; mq: "an.mq"; mr: "an.mr"; ms: "an.ms"; mt: "an.mt"; mu: "an.mu"; mv: "an.mv"; mw: "an.mw"; mx: "an.mx"; my: "an.my"; mz: "an.mz"; na: "an.na"; nb: "an.nb"; nc: "an.nc"; nd: "an.nd"; ne: "an.ne"; nf: "an.nf"; ng: "an.ng"; nh: "an.nh"; ni: "an.ni"; nj: "an.nj"; nk: "an.nk"; nl: "an.nl"; nm: "an.nm"; nn: "an.nn"; no: "an.no"; np: "an.np"; nq: "an.nq"; nr: "an.nr"; ns: "an.ns"; nt: "an.nt"; nu: "an.nu"; nv: "an.nv"; nw: "an.nw"; nx: "an.nx"; ny: "an.ny"; nz: "an.nz"; oa: "an.oa"; ob: "an.ob"; oc: "an.oc"; od: "an.od"; oe: "an.oe"; of: "an.of"; og: "an.og"; oh: "an.oh"; oi: "an.oi"; oj: "an.oj"; ok: "an.ok"; ol: "an.ol"; om: "an.om"; on: "an.on"; oo: "an.oo"; op: "an.op"; oq: "an.oq"; or: "an.or"; os: "an.os"; ot: "an.ot"; ou: "an.ou"; ov: "an.ov"; ow: "an.ow"; ox: "an.ox"; oy: "an.oy"; oz: "an.oz"; pa: "an.pa"; pb: "an.pb"; pc: "an.pc"; pd: "an.pd"; pe: "an.pe"; pf: "an.pf"; pg: "an.pg"; ph: "an.ph"; pi: "an.pi"; pj: "an.pj"; pk: "an.pk"; pl: "an.pl"; pm: "an.pm"; pn: "an.pn"; po: "an.po"; pp: "an.pp"; pq: "an.pq"; pr: "an.pr"; ps: "an.ps"; pt: "an.pt"; pu: "an.pu"; pv: "an.pv"; pw: "an.pw"; px: "an.px"; py: "an.py"; pz: "an.pz"; qa: "an.qa"; qb: "an.qb"; qc: "an.qc"; qd: "an.qd"; qe: "an.qe"; qf: "an.qf"; qg: "an.qg"; qh: "an.qh"; qi: "an.qi"; qj: "an.qj"; qk: "an.qk"; ql: "an.ql"; qm: "an.qm"; qn: "an.qn"; qo: "an.qo"; qp: "an.qp"; qq: "an.qq"; qr: "an.qr"; qs: "an.qs"; qt: "an.qt"; qu: "an.qu"; qv: "an.qv"; qw: "an.qw"; qx: "an.qx"; qy: "an.qy"; qz: "an.qz"; ra: "an.ra"; rb: "an.rb"; rc: "an.rc"; rd: "an.rd"; re: "an.re"; rf: "an.rf"; rg: "an.rg"; rh: "an.rh"; ri: "an.ri"; rj: "an.rj"; rk: "an.rk"; rl: "an.rl"; rm: "an.rm"; rn: "an.rn"; ro: "an.ro"; rp: "an.rp"; rq: "an.rq"; rr: "an.rr"; rs: "an.rs"; rt: "an.rt"; ru: "an.ru"; rv: "an.rv"; rw: "an.rw"; rx: "an.rx"; ry: "an.ry"; rz: "an.rz"; sa: "an.sa"; sb: "an.sb"; sc: "an.sc"; sd: "an.sd"; se: "an.se"; sf: "an.sf"; sg: "an.sg"; sh: "an.sh"; si: "an.si"; sj: "an.sj"; sk: "an.sk"; sl: "an.sl"; sm: "an.sm"; sn: "an.sn"; so: "an.so"; sp: "an.sp"; sq: "an.sq"; sr: "an.sr"; ss: "an.ss"; st: "an.st"; su: "an.su"; sv: "an.sv"; sw: "an.sw"; sx: "an.sx"; sy: "an.sy"; sz: "an.sz"; ta: "an.ta"; tb: "an.tb"; tc: "an.tc"; td: "an.td"; te: "an.te"; tf: "an.tf"; tg: "an.tg"; th: "an.th"; ti: "an.ti"; tj: "an.tj"; tk: "an.tk"; tl: "an.tl"; tm: "an.tm"; tn: "an.tn"; to: "an.to"; tp: "an.tp"; tq: "an.tq"; tr: "an.tr"; ts: "an.ts"; tt: "an.tt"; tu: "an.tu"; tv: "an.tv"; tw: "an.tw"; tx: "an.tx"; ty: "an.ty"; tz: "an.tz"; ua: "an.ua"; ub: "an.ub"; uc: "an.uc"; ud: "an.ud"; ue: "an.ue"; uf: "an.uf"; ug: "an.ug"; uh: "an.uh"; ui: "an.ui"; uj: "an.uj"; uk: "an.uk"; ul: "an.ul"; um: "an.um"; un: "an.un"; uo: "an.uo"; up: "an.up"; uq: "an.uq"; ur: "an.ur"; us: "an.us"; ut: "an.ut"; uu: "an.uu"; uv: "an.uv"; uw: "an.uw"; ux: "an.ux"; uy: "an.uy"; uz: "an.uz"; va: "an.va"; vb: "an.vb"; vc: "an.vc"; vd: "an.vd"; ve: "an.ve"; vf: "an.vf"; vg: "an.vg"; vh: "an.vh"; vi: "an.vi"; vj: "an.vj"; vk: "an.vk"; vl: "an.vl"; vm: "an.vm"; vn: "an.vn"; vo: "an.vo"; vp: "an.vp"; vq: "an.vq"; vr: "an.vr"; vs: "an.vs"; vt: "an.vt"; vu: "an.vu"; vv: "an.vv"; vw: "an.vw"; vx: "an.vx"; vy: "an.vy"; vz: "an.vz"; wa: "an.wa"; wb: "an.wb"; wc: "an.wc"; wd: "an.wd"; we: "an.we"; wf: "an.wf"; wg: "an.wg"; wh: "an.wh"; wi: "an.wi"; wj: "an.wj"; wk: "an.wk"; wl: "an.wl"; wm: "an.wm"; wn: "an.wn"; wo: "an.wo"; wp: "an.wp"; wq: "an.wq"; wr: "an.wr"; ws: "an.ws"; wt: "an.wt"; wu: "an.wu"; wv: "an.wv"; ww: "an.ww"; wx: "an.wx"; wy: "an.wy"; wz: "an.wz"; xa: "an.xa"; xb: "an.xb"; xc: "an.xc"; xd: "an.xd"; xe: "an.xe"; xf: "an.xf"; xg: "an.xg"; xh: "an.xh"; xi: "an.xi"; xj: "an.xj"; xk: "an.xk"; xl: "an.xl"; xm: "an.xm"; xn: "an.xn"; xo: "an.xo"; xp: "an.xp"; xq: "an.xq"; xr: "an.xr"; xs: "an.xs"; xt: "an.xt"; xu: "an.xu"; xv: "an.xv"; xw: "an.xw"; xx: "an.xx"; xy: "an.xy"; xz: "an.xz"; ya: "an.ya"; yb: "an.yb"; yc: "an.yc"; yd: "an.yd"; ye: "an.ye"; yf: "an.yf"; yg: "an.yg"; yh: "an.yh"; yi: "an.yi"; yj: "an.yj"; yk: "an.yk"; yl: "an.yl"; ym: "an.ym"; yn: "an.yn"; yo: "an.yo"; yp: "an.yp"; yq: "an.yq"; yr: "an.yr"; ys: "an.ys"; yt: "an.yt"; yu: "an.yu"; yv: "an.yv"; yw: "an.yw"; yx: "an.yx"; yy: "an.yy"; yz: "an.yz"; za: "an.za"; zb: "an.zb"; zc: "an.zc"; zd: "an.zd"; ze: "an.ze"; zf: "an.zf"; zg: "an.zg"; zh: "an.zh"; zi: "an.zi"; zj: "an.zj"; zk: "an.zk"; zl: "an.zl"; zm: "an.zm"; zn: "an.zn"; zo: "an.zo"; zp: "an.zp"; zq: "an.zq"; zr: "an.zr"; zs: "an.zs"; zt: "an.zt"; zu: "an.zu"; zv: "an.zv"; zw: "an.zw"; zx: "an.zx"; zy: "an.zy"; zz: "an.zz"; }; ao: { aa: "ao.aa"; ab: "ao.ab"; ac: "ao.ac"; ad: "ao.ad"; ae: "ao.ae"; af: "ao.af"; ag: "ao.ag"; ah: "ao.ah"; ai: "ao.ai"; aj: "ao.aj"; ak: "ao.ak"; al: "ao.al"; am: "ao.am"; an: "ao.an"; ao: "ao.ao"; ap: "ao.ap"; aq: "ao.aq"; ar: "ao.ar"; as: "ao.as"; at: "ao.at"; au: "ao.au"; av: "ao.av"; aw: "ao.aw"; ax: "ao.ax"; ay: "ao.ay"; az: "ao.az"; ba: "ao.ba"; bb: "ao.bb"; bc: "ao.bc"; bd: "ao.bd"; be: "ao.be"; bf: "ao.bf"; bg: "ao.bg"; bh: "ao.bh"; bi: "ao.bi"; bj: "ao.bj"; bk: "ao.bk"; bl: "ao.bl"; bm: "ao.bm"; bn: "ao.bn"; bo: "ao.bo"; bp: "ao.bp"; bq: "ao.bq"; br: "ao.br"; bs: "ao.bs"; bt: "ao.bt"; bu: "ao.bu"; bv: "ao.bv"; bw: "ao.bw"; bx: "ao.bx"; by: "ao.by"; bz: "ao.bz"; ca: "ao.ca"; cb: "ao.cb"; cc: "ao.cc"; cd: "ao.cd"; ce: "ao.ce"; cf: "ao.cf"; cg: "ao.cg"; ch: "ao.ch"; ci: "ao.ci"; cj: "ao.cj"; ck: "ao.ck"; cl: "ao.cl"; cm: "ao.cm"; cn: "ao.cn"; co: "ao.co"; cp: "ao.cp"; cq: "ao.cq"; cr: "ao.cr"; cs: "ao.cs"; ct: "ao.ct"; cu: "ao.cu"; cv: "ao.cv"; cw: "ao.cw"; cx: "ao.cx"; cy: "ao.cy"; cz: "ao.cz"; da: "ao.da"; db: "ao.db"; dc: "ao.dc"; dd: "ao.dd"; de: "ao.de"; df: "ao.df"; dg: "ao.dg"; dh: "ao.dh"; di: "ao.di"; dj: "ao.dj"; dk: "ao.dk"; dl: "ao.dl"; dm: "ao.dm"; dn: "ao.dn"; do: "ao.do"; dp: "ao.dp"; dq: "ao.dq"; dr: "ao.dr"; ds: "ao.ds"; dt: "ao.dt"; du: "ao.du"; dv: "ao.dv"; dw: "ao.dw"; dx: "ao.dx"; dy: "ao.dy"; dz: "ao.dz"; ea: "ao.ea"; eb: "ao.eb"; ec: "ao.ec"; ed: "ao.ed"; ee: "ao.ee"; ef: "ao.ef"; eg: "ao.eg"; eh: "ao.eh"; ei: "ao.ei"; ej: "ao.ej"; ek: "ao.ek"; el: "ao.el"; em: "ao.em"; en: "ao.en"; eo: "ao.eo"; ep: "ao.ep"; eq: "ao.eq"; er: "ao.er"; es: "ao.es"; et: "ao.et"; eu: "ao.eu"; ev: "ao.ev"; ew: "ao.ew"; ex: "ao.ex"; ey: "ao.ey"; ez: "ao.ez"; fa: "ao.fa"; fb: "ao.fb"; fc: "ao.fc"; fd: "ao.fd"; fe: "ao.fe"; ff: "ao.ff"; fg: "ao.fg"; fh: "ao.fh"; fi: "ao.fi"; fj: "ao.fj"; fk: "ao.fk"; fl: "ao.fl"; fm: "ao.fm"; fn: "ao.fn"; fo: "ao.fo"; fp: "ao.fp"; fq: "ao.fq"; fr: "ao.fr"; fs: "ao.fs"; ft: "ao.ft"; fu: "ao.fu"; fv: "ao.fv"; fw: "ao.fw"; fx: "ao.fx"; fy: "ao.fy"; fz: "ao.fz"; ga: "ao.ga"; gb: "ao.gb"; gc: "ao.gc"; gd: "ao.gd"; ge: "ao.ge"; gf: "ao.gf"; gg: "ao.gg"; gh: "ao.gh"; gi: "ao.gi"; gj: "ao.gj"; gk: "ao.gk"; gl: "ao.gl"; gm: "ao.gm"; gn: "ao.gn"; go: "ao.go"; gp: "ao.gp"; gq: "ao.gq"; gr: "ao.gr"; gs: "ao.gs"; gt: "ao.gt"; gu: "ao.gu"; gv: "ao.gv"; gw: "ao.gw"; gx: "ao.gx"; gy: "ao.gy"; gz: "ao.gz"; ha: "ao.ha"; hb: "ao.hb"; hc: "ao.hc"; hd: "ao.hd"; he: "ao.he"; hf: "ao.hf"; hg: "ao.hg"; hh: "ao.hh"; hi: "ao.hi"; hj: "ao.hj"; hk: "ao.hk"; hl: "ao.hl"; hm: "ao.hm"; hn: "ao.hn"; ho: "ao.ho"; hp: "ao.hp"; hq: "ao.hq"; hr: "ao.hr"; hs: "ao.hs"; ht: "ao.ht"; hu: "ao.hu"; hv: "ao.hv"; hw: "ao.hw"; hx: "ao.hx"; hy: "ao.hy"; hz: "ao.hz"; ia: "ao.ia"; ib: "ao.ib"; ic: "ao.ic"; id: "ao.id"; ie: "ao.ie"; if: "ao.if"; ig: "ao.ig"; ih: "ao.ih"; ii: "ao.ii"; ij: "ao.ij"; ik: "ao.ik"; il: "ao.il"; im: "ao.im"; in: "ao.in"; io: "ao.io"; ip: "ao.ip"; iq: "ao.iq"; ir: "ao.ir"; is: "ao.is"; it: "ao.it"; iu: "ao.iu"; iv: "ao.iv"; iw: "ao.iw"; ix: "ao.ix"; iy: "ao.iy"; iz: "ao.iz"; ja: "ao.ja"; jb: "ao.jb"; jc: "ao.jc"; jd: "ao.jd"; je: "ao.je"; jf: "ao.jf"; jg: "ao.jg"; jh: "ao.jh"; ji: "ao.ji"; jj: "ao.jj"; jk: "ao.jk"; jl: "ao.jl"; jm: "ao.jm"; jn: "ao.jn"; jo: "ao.jo"; jp: "ao.jp"; jq: "ao.jq"; jr: "ao.jr"; js: "ao.js"; jt: "ao.jt"; ju: "ao.ju"; jv: "ao.jv"; jw: "ao.jw"; jx: "ao.jx"; jy: "ao.jy"; jz: "ao.jz"; ka: "ao.ka"; kb: "ao.kb"; kc: "ao.kc"; kd: "ao.kd"; ke: "ao.ke"; kf: "ao.kf"; kg: "ao.kg"; kh: "ao.kh"; ki: "ao.ki"; kj: "ao.kj"; kk: "ao.kk"; kl: "ao.kl"; km: "ao.km"; kn: "ao.kn"; ko: "ao.ko"; kp: "ao.kp"; kq: "ao.kq"; kr: "ao.kr"; ks: "ao.ks"; kt: "ao.kt"; ku: "ao.ku"; kv: "ao.kv"; kw: "ao.kw"; kx: "ao.kx"; ky: "ao.ky"; kz: "ao.kz"; la: "ao.la"; lb: "ao.lb"; lc: "ao.lc"; ld: "ao.ld"; le: "ao.le"; lf: "ao.lf"; lg: "ao.lg"; lh: "ao.lh"; li: "ao.li"; lj: "ao.lj"; lk: "ao.lk"; ll: "ao.ll"; lm: "ao.lm"; ln: "ao.ln"; lo: "ao.lo"; lp: "ao.lp"; lq: "ao.lq"; lr: "ao.lr"; ls: "ao.ls"; lt: "ao.lt"; lu: "ao.lu"; lv: "ao.lv"; lw: "ao.lw"; lx: "ao.lx"; ly: "ao.ly"; lz: "ao.lz"; ma: "ao.ma"; mb: "ao.mb"; mc: "ao.mc"; md: "ao.md"; me: "ao.me"; mf: "ao.mf"; mg: "ao.mg"; mh: "ao.mh"; mi: "ao.mi"; mj: "ao.mj"; mk: "ao.mk"; ml: "ao.ml"; mm: "ao.mm"; mn: "ao.mn"; mo: "ao.mo"; mp: "ao.mp"; mq: "ao.mq"; mr: "ao.mr"; ms: "ao.ms"; mt: "ao.mt"; mu: "ao.mu"; mv: "ao.mv"; mw: "ao.mw"; mx: "ao.mx"; my: "ao.my"; mz: "ao.mz"; na: "ao.na"; nb: "ao.nb"; nc: "ao.nc"; nd: "ao.nd"; ne: "ao.ne"; nf: "ao.nf"; ng: "ao.ng"; nh: "ao.nh"; ni: "ao.ni"; nj: "ao.nj"; nk: "ao.nk"; nl: "ao.nl"; nm: "ao.nm"; nn: "ao.nn"; no: "ao.no"; np: "ao.np"; nq: "ao.nq"; nr: "ao.nr"; ns: "ao.ns"; nt: "ao.nt"; nu: "ao.nu"; nv: "ao.nv"; nw: "ao.nw"; nx: "ao.nx"; ny: "ao.ny"; nz: "ao.nz"; oa: "ao.oa"; ob: "ao.ob"; oc: "ao.oc"; od: "ao.od"; oe: "ao.oe"; of: "ao.of"; og: "ao.og"; oh: "ao.oh"; oi: "ao.oi"; oj: "ao.oj"; ok: "ao.ok"; ol: "ao.ol"; om: "ao.om"; on: "ao.on"; oo: "ao.oo"; op: "ao.op"; oq: "ao.oq"; or: "ao.or"; os: "ao.os"; ot: "ao.ot"; ou: "ao.ou"; ov: "ao.ov"; ow: "ao.ow"; ox: "ao.ox"; oy: "ao.oy"; oz: "ao.oz"; pa: "ao.pa"; pb: "ao.pb"; pc: "ao.pc"; pd: "ao.pd"; pe: "ao.pe"; pf: "ao.pf"; pg: "ao.pg"; ph: "ao.ph"; pi: "ao.pi"; pj: "ao.pj"; pk: "ao.pk"; pl: "ao.pl"; pm: "ao.pm"; pn: "ao.pn"; po: "ao.po"; pp: "ao.pp"; pq: "ao.pq"; pr: "ao.pr"; ps: "ao.ps"; pt: "ao.pt"; pu: "ao.pu"; pv: "ao.pv"; pw: "ao.pw"; px: "ao.px"; py: "ao.py"; pz: "ao.pz"; qa: "ao.qa"; qb: "ao.qb"; qc: "ao.qc"; qd: "ao.qd"; qe: "ao.qe"; qf: "ao.qf"; qg: "ao.qg"; qh: "ao.qh"; qi: "ao.qi"; qj: "ao.qj"; qk: "ao.qk"; ql: "ao.ql"; qm: "ao.qm"; qn: "ao.qn"; qo: "ao.qo"; qp: "ao.qp"; qq: "ao.qq"; qr: "ao.qr"; qs: "ao.qs"; qt: "ao.qt"; qu: "ao.qu"; qv: "ao.qv"; qw: "ao.qw"; qx: "ao.qx"; qy: "ao.qy"; qz: "ao.qz"; ra: "ao.ra"; rb: "ao.rb"; rc: "ao.rc"; rd: "ao.rd"; re: "ao.re"; rf: "ao.rf"; rg: "ao.rg"; rh: "ao.rh"; ri: "ao.ri"; rj: "ao.rj"; rk: "ao.rk"; rl: "ao.rl"; rm: "ao.rm"; rn: "ao.rn"; ro: "ao.ro"; rp: "ao.rp"; rq: "ao.rq"; rr: "ao.rr"; rs: "ao.rs"; rt: "ao.rt"; ru: "ao.ru"; rv: "ao.rv"; rw: "ao.rw"; rx: "ao.rx"; ry: "ao.ry"; rz: "ao.rz"; sa: "ao.sa"; sb: "ao.sb"; sc: "ao.sc"; sd: "ao.sd"; se: "ao.se"; sf: "ao.sf"; sg: "ao.sg"; sh: "ao.sh"; si: "ao.si"; sj: "ao.sj"; sk: "ao.sk"; sl: "ao.sl"; sm: "ao.sm"; sn: "ao.sn"; so: "ao.so"; sp: "ao.sp"; sq: "ao.sq"; sr: "ao.sr"; ss: "ao.ss"; st: "ao.st"; su: "ao.su"; sv: "ao.sv"; sw: "ao.sw"; sx: "ao.sx"; sy: "ao.sy"; sz: "ao.sz"; ta: "ao.ta"; tb: "ao.tb"; tc: "ao.tc"; td: "ao.td"; te: "ao.te"; tf: "ao.tf"; tg: "ao.tg"; th: "ao.th"; ti: "ao.ti"; tj: "ao.tj"; tk: "ao.tk"; tl: "ao.tl"; tm: "ao.tm"; tn: "ao.tn"; to: "ao.to"; tp: "ao.tp"; tq: "ao.tq"; tr: "ao.tr"; ts: "ao.ts"; tt: "ao.tt"; tu: "ao.tu"; tv: "ao.tv"; tw: "ao.tw"; tx: "ao.tx"; ty: "ao.ty"; tz: "ao.tz"; ua: "ao.ua"; ub: "ao.ub"; uc: "ao.uc"; ud: "ao.ud"; ue: "ao.ue"; uf: "ao.uf"; ug: "ao.ug"; uh: "ao.uh"; ui: "ao.ui"; uj: "ao.uj"; uk: "ao.uk"; ul: "ao.ul"; um: "ao.um"; un: "ao.un"; uo: "ao.uo"; up: "ao.up"; uq: "ao.uq"; ur: "ao.ur"; us: "ao.us"; ut: "ao.ut"; uu: "ao.uu"; uv: "ao.uv"; uw: "ao.uw"; ux: "ao.ux"; uy: "ao.uy"; uz: "ao.uz"; va: "ao.va"; vb: "ao.vb"; vc: "ao.vc"; vd: "ao.vd"; ve: "ao.ve"; vf: "ao.vf"; vg: "ao.vg"; vh: "ao.vh"; vi: "ao.vi"; vj: "ao.vj"; vk: "ao.vk"; vl: "ao.vl"; vm: "ao.vm"; vn: "ao.vn"; vo: "ao.vo"; vp: "ao.vp"; vq: "ao.vq"; vr: "ao.vr"; vs: "ao.vs"; vt: "ao.vt"; vu: "ao.vu"; vv: "ao.vv"; vw: "ao.vw"; vx: "ao.vx"; vy: "ao.vy"; vz: "ao.vz"; wa: "ao.wa"; wb: "ao.wb"; wc: "ao.wc"; wd: "ao.wd"; we: "ao.we"; wf: "ao.wf"; wg: "ao.wg"; wh: "ao.wh"; wi: "ao.wi"; wj: "ao.wj"; wk: "ao.wk"; wl: "ao.wl"; wm: "ao.wm"; wn: "ao.wn"; wo: "ao.wo"; wp: "ao.wp"; wq: "ao.wq"; wr: "ao.wr"; ws: "ao.ws"; wt: "ao.wt"; wu: "ao.wu"; wv: "ao.wv"; ww: "ao.ww"; wx: "ao.wx"; wy: "ao.wy"; wz: "ao.wz"; xa: "ao.xa"; xb: "ao.xb"; xc: "ao.xc"; xd: "ao.xd"; xe: "ao.xe"; xf: "ao.xf"; xg: "ao.xg"; xh: "ao.xh"; xi: "ao.xi"; xj: "ao.xj"; xk: "ao.xk"; xl: "ao.xl"; xm: "ao.xm"; xn: "ao.xn"; xo: "ao.xo"; xp: "ao.xp"; xq: "ao.xq"; xr: "ao.xr"; xs: "ao.xs"; xt: "ao.xt"; xu: "ao.xu"; xv: "ao.xv"; xw: "ao.xw"; xx: "ao.xx"; xy: "ao.xy"; xz: "ao.xz"; ya: "ao.ya"; yb: "ao.yb"; yc: "ao.yc"; yd: "ao.yd"; ye: "ao.ye"; yf: "ao.yf"; yg: "ao.yg"; yh: "ao.yh"; yi: "ao.yi"; yj: "ao.yj"; yk: "ao.yk"; yl: "ao.yl"; ym: "ao.ym"; yn: "ao.yn"; yo: "ao.yo"; yp: "ao.yp"; yq: "ao.yq"; yr: "ao.yr"; ys: "ao.ys"; yt: "ao.yt"; yu: "ao.yu"; yv: "ao.yv"; yw: "ao.yw"; yx: "ao.yx"; yy: "ao.yy"; yz: "ao.yz"; za: "ao.za"; zb: "ao.zb"; zc: "ao.zc"; zd: "ao.zd"; ze: "ao.ze"; zf: "ao.zf"; zg: "ao.zg"; zh: "ao.zh"; zi: "ao.zi"; zj: "ao.zj"; zk: "ao.zk"; zl: "ao.zl"; zm: "ao.zm"; zn: "ao.zn"; zo: "ao.zo"; zp: "ao.zp"; zq: "ao.zq"; zr: "ao.zr"; zs: "ao.zs"; zt: "ao.zt"; zu: "ao.zu"; zv: "ao.zv"; zw: "ao.zw"; zx: "ao.zx"; zy: "ao.zy"; zz: "ao.zz"; }; ap: { aa: "ap.aa"; ab: "ap.ab"; ac: "ap.ac"; ad: "ap.ad"; ae: "ap.ae"; af: "ap.af"; ag: "ap.ag"; ah: "ap.ah"; ai: "ap.ai"; aj: "ap.aj"; ak: "ap.ak"; al: "ap.al"; am: "ap.am"; an: "ap.an"; ao: "ap.ao"; ap: "ap.ap"; aq: "ap.aq"; ar: "ap.ar"; as: "ap.as"; at: "ap.at"; au: "ap.au"; av: "ap.av"; aw: "ap.aw"; ax: "ap.ax"; ay: "ap.ay"; az: "ap.az"; ba: "ap.ba"; bb: "ap.bb"; bc: "ap.bc"; bd: "ap.bd"; be: "ap.be"; bf: "ap.bf"; bg: "ap.bg"; bh: "ap.bh"; bi: "ap.bi"; bj: "ap.bj"; bk: "ap.bk"; bl: "ap.bl"; bm: "ap.bm"; bn: "ap.bn"; bo: "ap.bo"; bp: "ap.bp"; bq: "ap.bq"; br: "ap.br"; bs: "ap.bs"; bt: "ap.bt"; bu: "ap.bu"; bv: "ap.bv"; bw: "ap.bw"; bx: "ap.bx"; by: "ap.by"; bz: "ap.bz"; ca: "ap.ca"; cb: "ap.cb"; cc: "ap.cc"; cd: "ap.cd"; ce: "ap.ce"; cf: "ap.cf"; cg: "ap.cg"; ch: "ap.ch"; ci: "ap.ci"; cj: "ap.cj"; ck: "ap.ck"; cl: "ap.cl"; cm: "ap.cm"; cn: "ap.cn"; co: "ap.co"; cp: "ap.cp"; cq: "ap.cq"; cr: "ap.cr"; cs: "ap.cs"; ct: "ap.ct"; cu: "ap.cu"; cv: "ap.cv"; cw: "ap.cw"; cx: "ap.cx"; cy: "ap.cy"; cz: "ap.cz"; da: "ap.da"; db: "ap.db"; dc: "ap.dc"; dd: "ap.dd"; de: "ap.de"; df: "ap.df"; dg: "ap.dg"; dh: "ap.dh"; di: "ap.di"; dj: "ap.dj"; dk: "ap.dk"; dl: "ap.dl"; dm: "ap.dm"; dn: "ap.dn"; do: "ap.do"; dp: "ap.dp"; dq: "ap.dq"; dr: "ap.dr"; ds: "ap.ds"; dt: "ap.dt"; du: "ap.du"; dv: "ap.dv"; dw: "ap.dw"; dx: "ap.dx"; dy: "ap.dy"; dz: "ap.dz"; ea: "ap.ea"; eb: "ap.eb"; ec: "ap.ec"; ed: "ap.ed"; ee: "ap.ee"; ef: "ap.ef"; eg: "ap.eg"; eh: "ap.eh"; ei: "ap.ei"; ej: "ap.ej"; ek: "ap.ek"; el: "ap.el"; em: "ap.em"; en: "ap.en"; eo: "ap.eo"; ep: "ap.ep"; eq: "ap.eq"; er: "ap.er"; es: "ap.es"; et: "ap.et"; eu: "ap.eu"; ev: "ap.ev"; ew: "ap.ew"; ex: "ap.ex"; ey: "ap.ey"; ez: "ap.ez"; fa: "ap.fa"; fb: "ap.fb"; fc: "ap.fc"; fd: "ap.fd"; fe: "ap.fe"; ff: "ap.ff"; fg: "ap.fg"; fh: "ap.fh"; fi: "ap.fi"; fj: "ap.fj"; fk: "ap.fk"; fl: "ap.fl"; fm: "ap.fm"; fn: "ap.fn"; fo: "ap.fo"; fp: "ap.fp"; fq: "ap.fq"; fr: "ap.fr"; fs: "ap.fs"; ft: "ap.ft"; fu: "ap.fu"; fv: "ap.fv"; fw: "ap.fw"; fx: "ap.fx"; fy: "ap.fy"; fz: "ap.fz"; ga: "ap.ga"; gb: "ap.gb"; gc: "ap.gc"; gd: "ap.gd"; ge: "ap.ge"; gf: "ap.gf"; gg: "ap.gg"; gh: "ap.gh"; gi: "ap.gi"; gj: "ap.gj"; gk: "ap.gk"; gl: "ap.gl"; gm: "ap.gm"; gn: "ap.gn"; go: "ap.go"; gp: "ap.gp"; gq: "ap.gq"; gr: "ap.gr"; gs: "ap.gs"; gt: "ap.gt"; gu: "ap.gu"; gv: "ap.gv"; gw: "ap.gw"; gx: "ap.gx"; gy: "ap.gy"; gz: "ap.gz"; ha: "ap.ha"; hb: "ap.hb"; hc: "ap.hc"; hd: "ap.hd"; he: "ap.he"; hf: "ap.hf"; hg: "ap.hg"; hh: "ap.hh"; hi: "ap.hi"; hj: "ap.hj"; hk: "ap.hk"; hl: "ap.hl"; hm: "ap.hm"; hn: "ap.hn"; ho: "ap.ho"; hp: "ap.hp"; hq: "ap.hq"; hr: "ap.hr"; hs: "ap.hs"; ht: "ap.ht"; hu: "ap.hu"; hv: "ap.hv"; hw: "ap.hw"; hx: "ap.hx"; hy: "ap.hy"; hz: "ap.hz"; ia: "ap.ia"; ib: "ap.ib"; ic: "ap.ic"; id: "ap.id"; ie: "ap.ie"; if: "ap.if"; ig: "ap.ig"; ih: "ap.ih"; ii: "ap.ii"; ij: "ap.ij"; ik: "ap.ik"; il: "ap.il"; im: "ap.im"; in: "ap.in"; io: "ap.io"; ip: "ap.ip"; iq: "ap.iq"; ir: "ap.ir"; is: "ap.is"; it: "ap.it"; iu: "ap.iu"; iv: "ap.iv"; iw: "ap.iw"; ix: "ap.ix"; iy: "ap.iy"; iz: "ap.iz"; ja: "ap.ja"; jb: "ap.jb"; jc: "ap.jc"; jd: "ap.jd"; je: "ap.je"; jf: "ap.jf"; jg: "ap.jg"; jh: "ap.jh"; ji: "ap.ji"; jj: "ap.jj"; jk: "ap.jk"; jl: "ap.jl"; jm: "ap.jm"; jn: "ap.jn"; jo: "ap.jo"; jp: "ap.jp"; jq: "ap.jq"; jr: "ap.jr"; js: "ap.js"; jt: "ap.jt"; ju: "ap.ju"; jv: "ap.jv"; jw: "ap.jw"; jx: "ap.jx"; jy: "ap.jy"; jz: "ap.jz"; ka: "ap.ka"; kb: "ap.kb"; kc: "ap.kc"; kd: "ap.kd"; ke: "ap.ke"; kf: "ap.kf"; kg: "ap.kg"; kh: "ap.kh"; ki: "ap.ki"; kj: "ap.kj"; kk: "ap.kk"; kl: "ap.kl"; km: "ap.km"; kn: "ap.kn"; ko: "ap.ko"; kp: "ap.kp"; kq: "ap.kq"; kr: "ap.kr"; ks: "ap.ks"; kt: "ap.kt"; ku: "ap.ku"; kv: "ap.kv"; kw: "ap.kw"; kx: "ap.kx"; ky: "ap.ky"; kz: "ap.kz"; la: "ap.la"; lb: "ap.lb"; lc: "ap.lc"; ld: "ap.ld"; le: "ap.le"; lf: "ap.lf"; lg: "ap.lg"; lh: "ap.lh"; li: "ap.li"; lj: "ap.lj"; lk: "ap.lk"; ll: "ap.ll"; lm: "ap.lm"; ln: "ap.ln"; lo: "ap.lo"; lp: "ap.lp"; lq: "ap.lq"; lr: "ap.lr"; ls: "ap.ls"; lt: "ap.lt"; lu: "ap.lu"; lv: "ap.lv"; lw: "ap.lw"; lx: "ap.lx"; ly: "ap.ly"; lz: "ap.lz"; ma: "ap.ma"; mb: "ap.mb"; mc: "ap.mc"; md: "ap.md"; me: "ap.me"; mf: "ap.mf"; mg: "ap.mg"; mh: "ap.mh"; mi: "ap.mi"; mj: "ap.mj"; mk: "ap.mk"; ml: "ap.ml"; mm: "ap.mm"; mn: "ap.mn"; mo: "ap.mo"; mp: "ap.mp"; mq: "ap.mq"; mr: "ap.mr"; ms: "ap.ms"; mt: "ap.mt"; mu: "ap.mu"; mv: "ap.mv"; mw: "ap.mw"; mx: "ap.mx"; my: "ap.my"; mz: "ap.mz"; na: "ap.na"; nb: "ap.nb"; nc: "ap.nc"; nd: "ap.nd"; ne: "ap.ne"; nf: "ap.nf"; ng: "ap.ng"; nh: "ap.nh"; ni: "ap.ni"; nj: "ap.nj"; nk: "ap.nk"; nl: "ap.nl"; nm: "ap.nm"; nn: "ap.nn"; no: "ap.no"; np: "ap.np"; nq: "ap.nq"; nr: "ap.nr"; ns: "ap.ns"; nt: "ap.nt"; nu: "ap.nu"; nv: "ap.nv"; nw: "ap.nw"; nx: "ap.nx"; ny: "ap.ny"; nz: "ap.nz"; oa: "ap.oa"; ob: "ap.ob"; oc: "ap.oc"; od: "ap.od"; oe: "ap.oe"; of: "ap.of"; og: "ap.og"; oh: "ap.oh"; oi: "ap.oi"; oj: "ap.oj"; ok: "ap.ok"; ol: "ap.ol"; om: "ap.om"; on: "ap.on"; oo: "ap.oo"; op: "ap.op"; oq: "ap.oq"; or: "ap.or"; os: "ap.os"; ot: "ap.ot"; ou: "ap.ou"; ov: "ap.ov"; ow: "ap.ow"; ox: "ap.ox"; oy: "ap.oy"; oz: "ap.oz"; pa: "ap.pa"; pb: "ap.pb"; pc: "ap.pc"; pd: "ap.pd"; pe: "ap.pe"; pf: "ap.pf"; pg: "ap.pg"; ph: "ap.ph"; pi: "ap.pi"; pj: "ap.pj"; pk: "ap.pk"; pl: "ap.pl"; pm: "ap.pm"; pn: "ap.pn"; po: "ap.po"; pp: "ap.pp"; pq: "ap.pq"; pr: "ap.pr"; ps: "ap.ps"; pt: "ap.pt"; pu: "ap.pu"; pv: "ap.pv"; pw: "ap.pw"; px: "ap.px"; py: "ap.py"; pz: "ap.pz"; qa: "ap.qa"; qb: "ap.qb"; qc: "ap.qc"; qd: "ap.qd"; qe: "ap.qe"; qf: "ap.qf"; qg: "ap.qg"; qh: "ap.qh"; qi: "ap.qi"; qj: "ap.qj"; qk: "ap.qk"; ql: "ap.ql"; qm: "ap.qm"; qn: "ap.qn"; qo: "ap.qo"; qp: "ap.qp"; qq: "ap.qq"; qr: "ap.qr"; qs: "ap.qs"; qt: "ap.qt"; qu: "ap.qu"; qv: "ap.qv"; qw: "ap.qw"; qx: "ap.qx"; qy: "ap.qy"; qz: "ap.qz"; ra: "ap.ra"; rb: "ap.rb"; rc: "ap.rc"; rd: "ap.rd"; re: "ap.re"; rf: "ap.rf"; rg: "ap.rg"; rh: "ap.rh"; ri: "ap.ri"; rj: "ap.rj"; rk: "ap.rk"; rl: "ap.rl"; rm: "ap.rm"; rn: "ap.rn"; ro: "ap.ro"; rp: "ap.rp"; rq: "ap.rq"; rr: "ap.rr"; rs: "ap.rs"; rt: "ap.rt"; ru: "ap.ru"; rv: "ap.rv"; rw: "ap.rw"; rx: "ap.rx"; ry: "ap.ry"; rz: "ap.rz"; sa: "ap.sa"; sb: "ap.sb"; sc: "ap.sc"; sd: "ap.sd"; se: "ap.se"; sf: "ap.sf"; sg: "ap.sg"; sh: "ap.sh"; si: "ap.si"; sj: "ap.sj"; sk: "ap.sk"; sl: "ap.sl"; sm: "ap.sm"; sn: "ap.sn"; so: "ap.so"; sp: "ap.sp"; sq: "ap.sq"; sr: "ap.sr"; ss: "ap.ss"; st: "ap.st"; su: "ap.su"; sv: "ap.sv"; sw: "ap.sw"; sx: "ap.sx"; sy: "ap.sy"; sz: "ap.sz"; ta: "ap.ta"; tb: "ap.tb"; tc: "ap.tc"; td: "ap.td"; te: "ap.te"; tf: "ap.tf"; tg: "ap.tg"; th: "ap.th"; ti: "ap.ti"; tj: "ap.tj"; tk: "ap.tk"; tl: "ap.tl"; tm: "ap.tm"; tn: "ap.tn"; to: "ap.to"; tp: "ap.tp"; tq: "ap.tq"; tr: "ap.tr"; ts: "ap.ts"; tt: "ap.tt"; tu: "ap.tu"; tv: "ap.tv"; tw: "ap.tw"; tx: "ap.tx"; ty: "ap.ty"; tz: "ap.tz"; ua: "ap.ua"; ub: "ap.ub"; uc: "ap.uc"; ud: "ap.ud"; ue: "ap.ue"; uf: "ap.uf"; ug: "ap.ug"; uh: "ap.uh"; ui: "ap.ui"; uj: "ap.uj"; uk: "ap.uk"; ul: "ap.ul"; um: "ap.um"; un: "ap.un"; uo: "ap.uo"; up: "ap.up"; uq: "ap.uq"; ur: "ap.ur"; us: "ap.us"; ut: "ap.ut"; uu: "ap.uu"; uv: "ap.uv"; uw: "ap.uw"; ux: "ap.ux"; uy: "ap.uy"; uz: "ap.uz"; va: "ap.va"; vb: "ap.vb"; vc: "ap.vc"; vd: "ap.vd"; ve: "ap.ve"; vf: "ap.vf"; vg: "ap.vg"; vh: "ap.vh"; vi: "ap.vi"; vj: "ap.vj"; vk: "ap.vk"; vl: "ap.vl"; vm: "ap.vm"; vn: "ap.vn"; vo: "ap.vo"; vp: "ap.vp"; vq: "ap.vq"; vr: "ap.vr"; vs: "ap.vs"; vt: "ap.vt"; vu: "ap.vu"; vv: "ap.vv"; vw: "ap.vw"; vx: "ap.vx"; vy: "ap.vy"; vz: "ap.vz"; wa: "ap.wa"; wb: "ap.wb"; wc: "ap.wc"; wd: "ap.wd"; we: "ap.we"; wf: "ap.wf"; wg: "ap.wg"; wh: "ap.wh"; wi: "ap.wi"; wj: "ap.wj"; wk: "ap.wk"; wl: "ap.wl"; wm: "ap.wm"; wn: "ap.wn"; wo: "ap.wo"; wp: "ap.wp"; wq: "ap.wq"; wr: "ap.wr"; ws: "ap.ws"; wt: "ap.wt"; wu: "ap.wu"; wv: "ap.wv"; ww: "ap.ww"; wx: "ap.wx"; wy: "ap.wy"; wz: "ap.wz"; xa: "ap.xa"; xb: "ap.xb"; xc: "ap.xc"; xd: "ap.xd"; xe: "ap.xe"; xf: "ap.xf"; xg: "ap.xg"; xh: "ap.xh"; xi: "ap.xi"; xj: "ap.xj"; xk: "ap.xk"; xl: "ap.xl"; xm: "ap.xm"; xn: "ap.xn"; xo: "ap.xo"; xp: "ap.xp"; xq: "ap.xq"; xr: "ap.xr"; xs: "ap.xs"; xt: "ap.xt"; xu: "ap.xu"; xv: "ap.xv"; xw: "ap.xw"; xx: "ap.xx"; xy: "ap.xy"; xz: "ap.xz"; ya: "ap.ya"; yb: "ap.yb"; yc: "ap.yc"; yd: "ap.yd"; ye: "ap.ye"; yf: "ap.yf"; yg: "ap.yg"; yh: "ap.yh"; yi: "ap.yi"; yj: "ap.yj"; yk: "ap.yk"; yl: "ap.yl"; ym: "ap.ym"; yn: "ap.yn"; yo: "ap.yo"; yp: "ap.yp"; yq: "ap.yq"; yr: "ap.yr"; ys: "ap.ys"; yt: "ap.yt"; yu: "ap.yu"; yv: "ap.yv"; yw: "ap.yw"; yx: "ap.yx"; yy: "ap.yy"; yz: "ap.yz"; za: "ap.za"; zb: "ap.zb"; zc: "ap.zc"; zd: "ap.zd"; ze: "ap.ze"; zf: "ap.zf"; zg: "ap.zg"; zh: "ap.zh"; zi: "ap.zi"; zj: "ap.zj"; zk: "ap.zk"; zl: "ap.zl"; zm: "ap.zm"; zn: "ap.zn"; zo: "ap.zo"; zp: "ap.zp"; zq: "ap.zq"; zr: "ap.zr"; zs: "ap.zs"; zt: "ap.zt"; zu: "ap.zu"; zv: "ap.zv"; zw: "ap.zw"; zx: "ap.zx"; zy: "ap.zy"; zz: "ap.zz"; }; aq: { aa: "aq.aa"; ab: "aq.ab"; ac: "aq.ac"; ad: "aq.ad"; ae: "aq.ae"; af: "aq.af"; ag: "aq.ag"; ah: "aq.ah"; ai: "aq.ai"; aj: "aq.aj"; ak: "aq.ak"; al: "aq.al"; am: "aq.am"; an: "aq.an"; ao: "aq.ao"; ap: "aq.ap"; aq: "aq.aq"; ar: "aq.ar"; as: "aq.as"; at: "aq.at"; au: "aq.au"; av: "aq.av"; aw: "aq.aw"; ax: "aq.ax"; ay: "aq.ay"; az: "aq.az"; ba: "aq.ba"; bb: "aq.bb"; bc: "aq.bc"; bd: "aq.bd"; be: "aq.be"; bf: "aq.bf"; bg: "aq.bg"; bh: "aq.bh"; bi: "aq.bi"; bj: "aq.bj"; bk: "aq.bk"; bl: "aq.bl"; bm: "aq.bm"; bn: "aq.bn"; bo: "aq.bo"; bp: "aq.bp"; bq: "aq.bq"; br: "aq.br"; bs: "aq.bs"; bt: "aq.bt"; bu: "aq.bu"; bv: "aq.bv"; bw: "aq.bw"; bx: "aq.bx"; by: "aq.by"; bz: "aq.bz"; ca: "aq.ca"; cb: "aq.cb"; cc: "aq.cc"; cd: "aq.cd"; ce: "aq.ce"; cf: "aq.cf"; cg: "aq.cg"; ch: "aq.ch"; ci: "aq.ci"; cj: "aq.cj"; ck: "aq.ck"; cl: "aq.cl"; cm: "aq.cm"; cn: "aq.cn"; co: "aq.co"; cp: "aq.cp"; cq: "aq.cq"; cr: "aq.cr"; cs: "aq.cs"; ct: "aq.ct"; cu: "aq.cu"; cv: "aq.cv"; cw: "aq.cw"; cx: "aq.cx"; cy: "aq.cy"; cz: "aq.cz"; da: "aq.da"; db: "aq.db"; dc: "aq.dc"; dd: "aq.dd"; de: "aq.de"; df: "aq.df"; dg: "aq.dg"; dh: "aq.dh"; di: "aq.di"; dj: "aq.dj"; dk: "aq.dk"; dl: "aq.dl"; dm: "aq.dm"; dn: "aq.dn"; do: "aq.do"; dp: "aq.dp"; dq: "aq.dq"; dr: "aq.dr"; ds: "aq.ds"; dt: "aq.dt"; du: "aq.du"; dv: "aq.dv"; dw: "aq.dw"; dx: "aq.dx"; dy: "aq.dy"; dz: "aq.dz"; ea: "aq.ea"; eb: "aq.eb"; ec: "aq.ec"; ed: "aq.ed"; ee: "aq.ee"; ef: "aq.ef"; eg: "aq.eg"; eh: "aq.eh"; ei: "aq.ei"; ej: "aq.ej"; ek: "aq.ek"; el: "aq.el"; em: "aq.em"; en: "aq.en"; eo: "aq.eo"; ep: "aq.ep"; eq: "aq.eq"; er: "aq.er"; es: "aq.es"; et: "aq.et"; eu: "aq.eu"; ev: "aq.ev"; ew: "aq.ew"; ex: "aq.ex"; ey: "aq.ey"; ez: "aq.ez"; fa: "aq.fa"; fb: "aq.fb"; fc: "aq.fc"; fd: "aq.fd"; fe: "aq.fe"; ff: "aq.ff"; fg: "aq.fg"; fh: "aq.fh"; fi: "aq.fi"; fj: "aq.fj"; fk: "aq.fk"; fl: "aq.fl"; fm: "aq.fm"; fn: "aq.fn"; fo: "aq.fo"; fp: "aq.fp"; fq: "aq.fq"; fr: "aq.fr"; fs: "aq.fs"; ft: "aq.ft"; fu: "aq.fu"; fv: "aq.fv"; fw: "aq.fw"; fx: "aq.fx"; fy: "aq.fy"; fz: "aq.fz"; ga: "aq.ga"; gb: "aq.gb"; gc: "aq.gc"; gd: "aq.gd"; ge: "aq.ge"; gf: "aq.gf"; gg: "aq.gg"; gh: "aq.gh"; gi: "aq.gi"; gj: "aq.gj"; gk: "aq.gk"; gl: "aq.gl"; gm: "aq.gm"; gn: "aq.gn"; go: "aq.go"; gp: "aq.gp"; gq: "aq.gq"; gr: "aq.gr"; gs: "aq.gs"; gt: "aq.gt"; gu: "aq.gu"; gv: "aq.gv"; gw: "aq.gw"; gx: "aq.gx"; gy: "aq.gy"; gz: "aq.gz"; ha: "aq.ha"; hb: "aq.hb"; hc: "aq.hc"; hd: "aq.hd"; he: "aq.he"; hf: "aq.hf"; hg: "aq.hg"; hh: "aq.hh"; hi: "aq.hi"; hj: "aq.hj"; hk: "aq.hk"; hl: "aq.hl"; hm: "aq.hm"; hn: "aq.hn"; ho: "aq.ho"; hp: "aq.hp"; hq: "aq.hq"; hr: "aq.hr"; hs: "aq.hs"; ht: "aq.ht"; hu: "aq.hu"; hv: "aq.hv"; hw: "aq.hw"; hx: "aq.hx"; hy: "aq.hy"; hz: "aq.hz"; ia: "aq.ia"; ib: "aq.ib"; ic: "aq.ic"; id: "aq.id"; ie: "aq.ie"; if: "aq.if"; ig: "aq.ig"; ih: "aq.ih"; ii: "aq.ii"; ij: "aq.ij"; ik: "aq.ik"; il: "aq.il"; im: "aq.im"; in: "aq.in"; io: "aq.io"; ip: "aq.ip"; iq: "aq.iq"; ir: "aq.ir"; is: "aq.is"; it: "aq.it"; iu: "aq.iu"; iv: "aq.iv"; iw: "aq.iw"; ix: "aq.ix"; iy: "aq.iy"; iz: "aq.iz"; ja: "aq.ja"; jb: "aq.jb"; jc: "aq.jc"; jd: "aq.jd"; je: "aq.je"; jf: "aq.jf"; jg: "aq.jg"; jh: "aq.jh"; ji: "aq.ji"; jj: "aq.jj"; jk: "aq.jk"; jl: "aq.jl"; jm: "aq.jm"; jn: "aq.jn"; jo: "aq.jo"; jp: "aq.jp"; jq: "aq.jq"; jr: "aq.jr"; js: "aq.js"; jt: "aq.jt"; ju: "aq.ju"; jv: "aq.jv"; jw: "aq.jw"; jx: "aq.jx"; jy: "aq.jy"; jz: "aq.jz"; ka: "aq.ka"; kb: "aq.kb"; kc: "aq.kc"; kd: "aq.kd"; ke: "aq.ke"; kf: "aq.kf"; kg: "aq.kg"; kh: "aq.kh"; ki: "aq.ki"; kj: "aq.kj"; kk: "aq.kk"; kl: "aq.kl"; km: "aq.km"; kn: "aq.kn"; ko: "aq.ko"; kp: "aq.kp"; kq: "aq.kq"; kr: "aq.kr"; ks: "aq.ks"; kt: "aq.kt"; ku: "aq.ku"; kv: "aq.kv"; kw: "aq.kw"; kx: "aq.kx"; ky: "aq.ky"; kz: "aq.kz"; la: "aq.la"; lb: "aq.lb"; lc: "aq.lc"; ld: "aq.ld"; le: "aq.le"; lf: "aq.lf"; lg: "aq.lg"; lh: "aq.lh"; li: "aq.li"; lj: "aq.lj"; lk: "aq.lk"; ll: "aq.ll"; lm: "aq.lm"; ln: "aq.ln"; lo: "aq.lo"; lp: "aq.lp"; lq: "aq.lq"; lr: "aq.lr"; ls: "aq.ls"; lt: "aq.lt"; lu: "aq.lu"; lv: "aq.lv"; lw: "aq.lw"; lx: "aq.lx"; ly: "aq.ly"; lz: "aq.lz"; ma: "aq.ma"; mb: "aq.mb"; mc: "aq.mc"; md: "aq.md"; me: "aq.me"; mf: "aq.mf"; mg: "aq.mg"; mh: "aq.mh"; mi: "aq.mi"; mj: "aq.mj"; mk: "aq.mk"; ml: "aq.ml"; mm: "aq.mm"; mn: "aq.mn"; mo: "aq.mo"; mp: "aq.mp"; mq: "aq.mq"; mr: "aq.mr"; ms: "aq.ms"; mt: "aq.mt"; mu: "aq.mu"; mv: "aq.mv"; mw: "aq.mw"; mx: "aq.mx"; my: "aq.my"; mz: "aq.mz"; na: "aq.na"; nb: "aq.nb"; nc: "aq.nc"; nd: "aq.nd"; ne: "aq.ne"; nf: "aq.nf"; ng: "aq.ng"; nh: "aq.nh"; ni: "aq.ni"; nj: "aq.nj"; nk: "aq.nk"; nl: "aq.nl"; nm: "aq.nm"; nn: "aq.nn"; no: "aq.no"; np: "aq.np"; nq: "aq.nq"; nr: "aq.nr"; ns: "aq.ns"; nt: "aq.nt"; nu: "aq.nu"; nv: "aq.nv"; nw: "aq.nw"; nx: "aq.nx"; ny: "aq.ny"; nz: "aq.nz"; oa: "aq.oa"; ob: "aq.ob"; oc: "aq.oc"; od: "aq.od"; oe: "aq.oe"; of: "aq.of"; og: "aq.og"; oh: "aq.oh"; oi: "aq.oi"; oj: "aq.oj"; ok: "aq.ok"; ol: "aq.ol"; om: "aq.om"; on: "aq.on"; oo: "aq.oo"; op: "aq.op"; oq: "aq.oq"; or: "aq.or"; os: "aq.os"; ot: "aq.ot"; ou: "aq.ou"; ov: "aq.ov"; ow: "aq.ow"; ox: "aq.ox"; oy: "aq.oy"; oz: "aq.oz"; pa: "aq.pa"; pb: "aq.pb"; pc: "aq.pc"; pd: "aq.pd"; pe: "aq.pe"; pf: "aq.pf"; pg: "aq.pg"; ph: "aq.ph"; pi: "aq.pi"; pj: "aq.pj"; pk: "aq.pk"; pl: "aq.pl"; pm: "aq.pm"; pn: "aq.pn"; po: "aq.po"; pp: "aq.pp"; pq: "aq.pq"; pr: "aq.pr"; ps: "aq.ps"; pt: "aq.pt"; pu: "aq.pu"; pv: "aq.pv"; pw: "aq.pw"; px: "aq.px"; py: "aq.py"; pz: "aq.pz"; qa: "aq.qa"; qb: "aq.qb"; qc: "aq.qc"; qd: "aq.qd"; qe: "aq.qe"; qf: "aq.qf"; qg: "aq.qg"; qh: "aq.qh"; qi: "aq.qi"; qj: "aq.qj"; qk: "aq.qk"; ql: "aq.ql"; qm: "aq.qm"; qn: "aq.qn"; qo: "aq.qo"; qp: "aq.qp"; qq: "aq.qq"; qr: "aq.qr"; qs: "aq.qs"; qt: "aq.qt"; qu: "aq.qu"; qv: "aq.qv"; qw: "aq.qw"; qx: "aq.qx"; qy: "aq.qy"; qz: "aq.qz"; ra: "aq.ra"; rb: "aq.rb"; rc: "aq.rc"; rd: "aq.rd"; re: "aq.re"; rf: "aq.rf"; rg: "aq.rg"; rh: "aq.rh"; ri: "aq.ri"; rj: "aq.rj"; rk: "aq.rk"; rl: "aq.rl"; rm: "aq.rm"; rn: "aq.rn"; ro: "aq.ro"; rp: "aq.rp"; rq: "aq.rq"; rr: "aq.rr"; rs: "aq.rs"; rt: "aq.rt"; ru: "aq.ru"; rv: "aq.rv"; rw: "aq.rw"; rx: "aq.rx"; ry: "aq.ry"; rz: "aq.rz"; sa: "aq.sa"; sb: "aq.sb"; sc: "aq.sc"; sd: "aq.sd"; se: "aq.se"; sf: "aq.sf"; sg: "aq.sg"; sh: "aq.sh"; si: "aq.si"; sj: "aq.sj"; sk: "aq.sk"; sl: "aq.sl"; sm: "aq.sm"; sn: "aq.sn"; so: "aq.so"; sp: "aq.sp"; sq: "aq.sq"; sr: "aq.sr"; ss: "aq.ss"; st: "aq.st"; su: "aq.su"; sv: "aq.sv"; sw: "aq.sw"; sx: "aq.sx"; sy: "aq.sy"; sz: "aq.sz"; ta: "aq.ta"; tb: "aq.tb"; tc: "aq.tc"; td: "aq.td"; te: "aq.te"; tf: "aq.tf"; tg: "aq.tg"; th: "aq.th"; ti: "aq.ti"; tj: "aq.tj"; tk: "aq.tk"; tl: "aq.tl"; tm: "aq.tm"; tn: "aq.tn"; to: "aq.to"; tp: "aq.tp"; tq: "aq.tq"; tr: "aq.tr"; ts: "aq.ts"; tt: "aq.tt"; tu: "aq.tu"; tv: "aq.tv"; tw: "aq.tw"; tx: "aq.tx"; ty: "aq.ty"; tz: "aq.tz"; ua: "aq.ua"; ub: "aq.ub"; uc: "aq.uc"; ud: "aq.ud"; ue: "aq.ue"; uf: "aq.uf"; ug: "aq.ug"; uh: "aq.uh"; ui: "aq.ui"; uj: "aq.uj"; uk: "aq.uk"; ul: "aq.ul"; um: "aq.um"; un: "aq.un"; uo: "aq.uo"; up: "aq.up"; uq: "aq.uq"; ur: "aq.ur"; us: "aq.us"; ut: "aq.ut"; uu: "aq.uu"; uv: "aq.uv"; uw: "aq.uw"; ux: "aq.ux"; uy: "aq.uy"; uz: "aq.uz"; va: "aq.va"; vb: "aq.vb"; vc: "aq.vc"; vd: "aq.vd"; ve: "aq.ve"; vf: "aq.vf"; vg: "aq.vg"; vh: "aq.vh"; vi: "aq.vi"; vj: "aq.vj"; vk: "aq.vk"; vl: "aq.vl"; vm: "aq.vm"; vn: "aq.vn"; vo: "aq.vo"; vp: "aq.vp"; vq: "aq.vq"; vr: "aq.vr"; vs: "aq.vs"; vt: "aq.vt"; vu: "aq.vu"; vv: "aq.vv"; vw: "aq.vw"; vx: "aq.vx"; vy: "aq.vy"; vz: "aq.vz"; wa: "aq.wa"; wb: "aq.wb"; wc: "aq.wc"; wd: "aq.wd"; we: "aq.we"; wf: "aq.wf"; wg: "aq.wg"; wh: "aq.wh"; wi: "aq.wi"; wj: "aq.wj"; wk: "aq.wk"; wl: "aq.wl"; wm: "aq.wm"; wn: "aq.wn"; wo: "aq.wo"; wp: "aq.wp"; wq: "aq.wq"; wr: "aq.wr"; ws: "aq.ws"; wt: "aq.wt"; wu: "aq.wu"; wv: "aq.wv"; ww: "aq.ww"; wx: "aq.wx"; wy: "aq.wy"; wz: "aq.wz"; xa: "aq.xa"; xb: "aq.xb"; xc: "aq.xc"; xd: "aq.xd"; xe: "aq.xe"; xf: "aq.xf"; xg: "aq.xg"; xh: "aq.xh"; xi: "aq.xi"; xj: "aq.xj"; xk: "aq.xk"; xl: "aq.xl"; xm: "aq.xm"; xn: "aq.xn"; xo: "aq.xo"; xp: "aq.xp"; xq: "aq.xq"; xr: "aq.xr"; xs: "aq.xs"; xt: "aq.xt"; xu: "aq.xu"; xv: "aq.xv"; xw: "aq.xw"; xx: "aq.xx"; xy: "aq.xy"; xz: "aq.xz"; ya: "aq.ya"; yb: "aq.yb"; yc: "aq.yc"; yd: "aq.yd"; ye: "aq.ye"; yf: "aq.yf"; yg: "aq.yg"; yh: "aq.yh"; yi: "aq.yi"; yj: "aq.yj"; yk: "aq.yk"; yl: "aq.yl"; ym: "aq.ym"; yn: "aq.yn"; yo: "aq.yo"; yp: "aq.yp"; yq: "aq.yq"; yr: "aq.yr"; ys: "aq.ys"; yt: "aq.yt"; yu: "aq.yu"; yv: "aq.yv"; yw: "aq.yw"; yx: "aq.yx"; yy: "aq.yy"; yz: "aq.yz"; za: "aq.za"; zb: "aq.zb"; zc: "aq.zc"; zd: "aq.zd"; ze: "aq.ze"; zf: "aq.zf"; zg: "aq.zg"; zh: "aq.zh"; zi: "aq.zi"; zj: "aq.zj"; zk: "aq.zk"; zl: "aq.zl"; zm: "aq.zm"; zn: "aq.zn"; zo: "aq.zo"; zp: "aq.zp"; zq: "aq.zq"; zr: "aq.zr"; zs: "aq.zs"; zt: "aq.zt"; zu: "aq.zu"; zv: "aq.zv"; zw: "aq.zw"; zx: "aq.zx"; zy: "aq.zy"; zz: "aq.zz"; }; ar: { aa: "ar.aa"; ab: "ar.ab"; ac: "ar.ac"; ad: "ar.ad"; ae: "ar.ae"; af: "ar.af"; ag: "ar.ag"; ah: "ar.ah"; ai: "ar.ai"; aj: "ar.aj"; ak: "ar.ak"; al: "ar.al"; am: "ar.am"; an: "ar.an"; ao: "ar.ao"; ap: "ar.ap"; aq: "ar.aq"; ar: "ar.ar"; as: "ar.as"; at: "ar.at"; au: "ar.au"; av: "ar.av"; aw: "ar.aw"; ax: "ar.ax"; ay: "ar.ay"; az: "ar.az"; ba: "ar.ba"; bb: "ar.bb"; bc: "ar.bc"; bd: "ar.bd"; be: "ar.be"; bf: "ar.bf"; bg: "ar.bg"; bh: "ar.bh"; bi: "ar.bi"; bj: "ar.bj"; bk: "ar.bk"; bl: "ar.bl"; bm: "ar.bm"; bn: "ar.bn"; bo: "ar.bo"; bp: "ar.bp"; bq: "ar.bq"; br: "ar.br"; bs: "ar.bs"; bt: "ar.bt"; bu: "ar.bu"; bv: "ar.bv"; bw: "ar.bw"; bx: "ar.bx"; by: "ar.by"; bz: "ar.bz"; ca: "ar.ca"; cb: "ar.cb"; cc: "ar.cc"; cd: "ar.cd"; ce: "ar.ce"; cf: "ar.cf"; cg: "ar.cg"; ch: "ar.ch"; ci: "ar.ci"; cj: "ar.cj"; ck: "ar.ck"; cl: "ar.cl"; cm: "ar.cm"; cn: "ar.cn"; co: "ar.co"; cp: "ar.cp"; cq: "ar.cq"; cr: "ar.cr"; cs: "ar.cs"; ct: "ar.ct"; cu: "ar.cu"; cv: "ar.cv"; cw: "ar.cw"; cx: "ar.cx"; cy: "ar.cy"; cz: "ar.cz"; da: "ar.da"; db: "ar.db"; dc: "ar.dc"; dd: "ar.dd"; de: "ar.de"; df: "ar.df"; dg: "ar.dg"; dh: "ar.dh"; di: "ar.di"; dj: "ar.dj"; dk: "ar.dk"; dl: "ar.dl"; dm: "ar.dm"; dn: "ar.dn"; do: "ar.do"; dp: "ar.dp"; dq: "ar.dq"; dr: "ar.dr"; ds: "ar.ds"; dt: "ar.dt"; du: "ar.du"; dv: "ar.dv"; dw: "ar.dw"; dx: "ar.dx"; dy: "ar.dy"; dz: "ar.dz"; ea: "ar.ea"; eb: "ar.eb"; ec: "ar.ec"; ed: "ar.ed"; ee: "ar.ee"; ef: "ar.ef"; eg: "ar.eg"; eh: "ar.eh"; ei: "ar.ei"; ej: "ar.ej"; ek: "ar.ek"; el: "ar.el"; em: "ar.em"; en: "ar.en"; eo: "ar.eo"; ep: "ar.ep"; eq: "ar.eq"; er: "ar.er"; es: "ar.es"; et: "ar.et"; eu: "ar.eu"; ev: "ar.ev"; ew: "ar.ew"; ex: "ar.ex"; ey: "ar.ey"; ez: "ar.ez"; fa: "ar.fa"; fb: "ar.fb"; fc: "ar.fc"; fd: "ar.fd"; fe: "ar.fe"; ff: "ar.ff"; fg: "ar.fg"; fh: "ar.fh"; fi: "ar.fi"; fj: "ar.fj"; fk: "ar.fk"; fl: "ar.fl"; fm: "ar.fm"; fn: "ar.fn"; fo: "ar.fo"; fp: "ar.fp"; fq: "ar.fq"; fr: "ar.fr"; fs: "ar.fs"; ft: "ar.ft"; fu: "ar.fu"; fv: "ar.fv"; fw: "ar.fw"; fx: "ar.fx"; fy: "ar.fy"; fz: "ar.fz"; ga: "ar.ga"; gb: "ar.gb"; gc: "ar.gc"; gd: "ar.gd"; ge: "ar.ge"; gf: "ar.gf"; gg: "ar.gg"; gh: "ar.gh"; gi: "ar.gi"; gj: "ar.gj"; gk: "ar.gk"; gl: "ar.gl"; gm: "ar.gm"; gn: "ar.gn"; go: "ar.go"; gp: "ar.gp"; gq: "ar.gq"; gr: "ar.gr"; gs: "ar.gs"; gt: "ar.gt"; gu: "ar.gu"; gv: "ar.gv"; gw: "ar.gw"; gx: "ar.gx"; gy: "ar.gy"; gz: "ar.gz"; ha: "ar.ha"; hb: "ar.hb"; hc: "ar.hc"; hd: "ar.hd"; he: "ar.he"; hf: "ar.hf"; hg: "ar.hg"; hh: "ar.hh"; hi: "ar.hi"; hj: "ar.hj"; hk: "ar.hk"; hl: "ar.hl"; hm: "ar.hm"; hn: "ar.hn"; ho: "ar.ho"; hp: "ar.hp"; hq: "ar.hq"; hr: "ar.hr"; hs: "ar.hs"; ht: "ar.ht"; hu: "ar.hu"; hv: "ar.hv"; hw: "ar.hw"; hx: "ar.hx"; hy: "ar.hy"; hz: "ar.hz"; ia: "ar.ia"; ib: "ar.ib"; ic: "ar.ic"; id: "ar.id"; ie: "ar.ie"; if: "ar.if"; ig: "ar.ig"; ih: "ar.ih"; ii: "ar.ii"; ij: "ar.ij"; ik: "ar.ik"; il: "ar.il"; im: "ar.im"; in: "ar.in"; io: "ar.io"; ip: "ar.ip"; iq: "ar.iq"; ir: "ar.ir"; is: "ar.is"; it: "ar.it"; iu: "ar.iu"; iv: "ar.iv"; iw: "ar.iw"; ix: "ar.ix"; iy: "ar.iy"; iz: "ar.iz"; ja: "ar.ja"; jb: "ar.jb"; jc: "ar.jc"; jd: "ar.jd"; je: "ar.je"; jf: "ar.jf"; jg: "ar.jg"; jh: "ar.jh"; ji: "ar.ji"; jj: "ar.jj"; jk: "ar.jk"; jl: "ar.jl"; jm: "ar.jm"; jn: "ar.jn"; jo: "ar.jo"; jp: "ar.jp"; jq: "ar.jq"; jr: "ar.jr"; js: "ar.js"; jt: "ar.jt"; ju: "ar.ju"; jv: "ar.jv"; jw: "ar.jw"; jx: "ar.jx"; jy: "ar.jy"; jz: "ar.jz"; ka: "ar.ka"; kb: "ar.kb"; kc: "ar.kc"; kd: "ar.kd"; ke: "ar.ke"; kf: "ar.kf"; kg: "ar.kg"; kh: "ar.kh"; ki: "ar.ki"; kj: "ar.kj"; kk: "ar.kk"; kl: "ar.kl"; km: "ar.km"; kn: "ar.kn"; ko: "ar.ko"; kp: "ar.kp"; kq: "ar.kq"; kr: "ar.kr"; ks: "ar.ks"; kt: "ar.kt"; ku: "ar.ku"; kv: "ar.kv"; kw: "ar.kw"; kx: "ar.kx"; ky: "ar.ky"; kz: "ar.kz"; la: "ar.la"; lb: "ar.lb"; lc: "ar.lc"; ld: "ar.ld"; le: "ar.le"; lf: "ar.lf"; lg: "ar.lg"; lh: "ar.lh"; li: "ar.li"; lj: "ar.lj"; lk: "ar.lk"; ll: "ar.ll"; lm: "ar.lm"; ln: "ar.ln"; lo: "ar.lo"; lp: "ar.lp"; lq: "ar.lq"; lr: "ar.lr"; ls: "ar.ls"; lt: "ar.lt"; lu: "ar.lu"; lv: "ar.lv"; lw: "ar.lw"; lx: "ar.lx"; ly: "ar.ly"; lz: "ar.lz"; ma: "ar.ma"; mb: "ar.mb"; mc: "ar.mc"; md: "ar.md"; me: "ar.me"; mf: "ar.mf"; mg: "ar.mg"; mh: "ar.mh"; mi: "ar.mi"; mj: "ar.mj"; mk: "ar.mk"; ml: "ar.ml"; mm: "ar.mm"; mn: "ar.mn"; mo: "ar.mo"; mp: "ar.mp"; mq: "ar.mq"; mr: "ar.mr"; ms: "ar.ms"; mt: "ar.mt"; mu: "ar.mu"; mv: "ar.mv"; mw: "ar.mw"; mx: "ar.mx"; my: "ar.my"; mz: "ar.mz"; na: "ar.na"; nb: "ar.nb"; nc: "ar.nc"; nd: "ar.nd"; ne: "ar.ne"; nf: "ar.nf"; ng: "ar.ng"; nh: "ar.nh"; ni: "ar.ni"; nj: "ar.nj"; nk: "ar.nk"; nl: "ar.nl"; nm: "ar.nm"; nn: "ar.nn"; no: "ar.no"; np: "ar.np"; nq: "ar.nq"; nr: "ar.nr"; ns: "ar.ns"; nt: "ar.nt"; nu: "ar.nu"; nv: "ar.nv"; nw: "ar.nw"; nx: "ar.nx"; ny: "ar.ny"; nz: "ar.nz"; oa: "ar.oa"; ob: "ar.ob"; oc: "ar.oc"; od: "ar.od"; oe: "ar.oe"; of: "ar.of"; og: "ar.og"; oh: "ar.oh"; oi: "ar.oi"; oj: "ar.oj"; ok: "ar.ok"; ol: "ar.ol"; om: "ar.om"; on: "ar.on"; oo: "ar.oo"; op: "ar.op"; oq: "ar.oq"; or: "ar.or"; os: "ar.os"; ot: "ar.ot"; ou: "ar.ou"; ov: "ar.ov"; ow: "ar.ow"; ox: "ar.ox"; oy: "ar.oy"; oz: "ar.oz"; pa: "ar.pa"; pb: "ar.pb"; pc: "ar.pc"; pd: "ar.pd"; pe: "ar.pe"; pf: "ar.pf"; pg: "ar.pg"; ph: "ar.ph"; pi: "ar.pi"; pj: "ar.pj"; pk: "ar.pk"; pl: "ar.pl"; pm: "ar.pm"; pn: "ar.pn"; po: "ar.po"; pp: "ar.pp"; pq: "ar.pq"; pr: "ar.pr"; ps: "ar.ps"; pt: "ar.pt"; pu: "ar.pu"; pv: "ar.pv"; pw: "ar.pw"; px: "ar.px"; py: "ar.py"; pz: "ar.pz"; qa: "ar.qa"; qb: "ar.qb"; qc: "ar.qc"; qd: "ar.qd"; qe: "ar.qe"; qf: "ar.qf"; qg: "ar.qg"; qh: "ar.qh"; qi: "ar.qi"; qj: "ar.qj"; qk: "ar.qk"; ql: "ar.ql"; qm: "ar.qm"; qn: "ar.qn"; qo: "ar.qo"; qp: "ar.qp"; qq: "ar.qq"; qr: "ar.qr"; qs: "ar.qs"; qt: "ar.qt"; qu: "ar.qu"; qv: "ar.qv"; qw: "ar.qw"; qx: "ar.qx"; qy: "ar.qy"; qz: "ar.qz"; ra: "ar.ra"; rb: "ar.rb"; rc: "ar.rc"; rd: "ar.rd"; re: "ar.re"; rf: "ar.rf"; rg: "ar.rg"; rh: "ar.rh"; ri: "ar.ri"; rj: "ar.rj"; rk: "ar.rk"; rl: "ar.rl"; rm: "ar.rm"; rn: "ar.rn"; ro: "ar.ro"; rp: "ar.rp"; rq: "ar.rq"; rr: "ar.rr"; rs: "ar.rs"; rt: "ar.rt"; ru: "ar.ru"; rv: "ar.rv"; rw: "ar.rw"; rx: "ar.rx"; ry: "ar.ry"; rz: "ar.rz"; sa: "ar.sa"; sb: "ar.sb"; sc: "ar.sc"; sd: "ar.sd"; se: "ar.se"; sf: "ar.sf"; sg: "ar.sg"; sh: "ar.sh"; si: "ar.si"; sj: "ar.sj"; sk: "ar.sk"; sl: "ar.sl"; sm: "ar.sm"; sn: "ar.sn"; so: "ar.so"; sp: "ar.sp"; sq: "ar.sq"; sr: "ar.sr"; ss: "ar.ss"; st: "ar.st"; su: "ar.su"; sv: "ar.sv"; sw: "ar.sw"; sx: "ar.sx"; sy: "ar.sy"; sz: "ar.sz"; ta: "ar.ta"; tb: "ar.tb"; tc: "ar.tc"; td: "ar.td"; te: "ar.te"; tf: "ar.tf"; tg: "ar.tg"; th: "ar.th"; ti: "ar.ti"; tj: "ar.tj"; tk: "ar.tk"; tl: "ar.tl"; tm: "ar.tm"; tn: "ar.tn"; to: "ar.to"; tp: "ar.tp"; tq: "ar.tq"; tr: "ar.tr"; ts: "ar.ts"; tt: "ar.tt"; tu: "ar.tu"; tv: "ar.tv"; tw: "ar.tw"; tx: "ar.tx"; ty: "ar.ty"; tz: "ar.tz"; ua: "ar.ua"; ub: "ar.ub"; uc: "ar.uc"; ud: "ar.ud"; ue: "ar.ue"; uf: "ar.uf"; ug: "ar.ug"; uh: "ar.uh"; ui: "ar.ui"; uj: "ar.uj"; uk: "ar.uk"; ul: "ar.ul"; um: "ar.um"; un: "ar.un"; uo: "ar.uo"; up: "ar.up"; uq: "ar.uq"; ur: "ar.ur"; us: "ar.us"; ut: "ar.ut"; uu: "ar.uu"; uv: "ar.uv"; uw: "ar.uw"; ux: "ar.ux"; uy: "ar.uy"; uz: "ar.uz"; va: "ar.va"; vb: "ar.vb"; vc: "ar.vc"; vd: "ar.vd"; ve: "ar.ve"; vf: "ar.vf"; vg: "ar.vg"; vh: "ar.vh"; vi: "ar.vi"; vj: "ar.vj"; vk: "ar.vk"; vl: "ar.vl"; vm: "ar.vm"; vn: "ar.vn"; vo: "ar.vo"; vp: "ar.vp"; vq: "ar.vq"; vr: "ar.vr"; vs: "ar.vs"; vt: "ar.vt"; vu: "ar.vu"; vv: "ar.vv"; vw: "ar.vw"; vx: "ar.vx"; vy: "ar.vy"; vz: "ar.vz"; wa: "ar.wa"; wb: "ar.wb"; wc: "ar.wc"; wd: "ar.wd"; we: "ar.we"; wf: "ar.wf"; wg: "ar.wg"; wh: "ar.wh"; wi: "ar.wi"; wj: "ar.wj"; wk: "ar.wk"; wl: "ar.wl"; wm: "ar.wm"; wn: "ar.wn"; wo: "ar.wo"; wp: "ar.wp"; wq: "ar.wq"; wr: "ar.wr"; ws: "ar.ws"; wt: "ar.wt"; wu: "ar.wu"; wv: "ar.wv"; ww: "ar.ww"; wx: "ar.wx"; wy: "ar.wy"; wz: "ar.wz"; xa: "ar.xa"; xb: "ar.xb"; xc: "ar.xc"; xd: "ar.xd"; xe: "ar.xe"; xf: "ar.xf"; xg: "ar.xg"; xh: "ar.xh"; xi: "ar.xi"; xj: "ar.xj"; xk: "ar.xk"; xl: "ar.xl"; xm: "ar.xm"; xn: "ar.xn"; xo: "ar.xo"; xp: "ar.xp"; xq: "ar.xq"; xr: "ar.xr"; xs: "ar.xs"; xt: "ar.xt"; xu: "ar.xu"; xv: "ar.xv"; xw: "ar.xw"; xx: "ar.xx"; xy: "ar.xy"; xz: "ar.xz"; ya: "ar.ya"; yb: "ar.yb"; yc: "ar.yc"; yd: "ar.yd"; ye: "ar.ye"; yf: "ar.yf"; yg: "ar.yg"; yh: "ar.yh"; yi: "ar.yi"; yj: "ar.yj"; yk: "ar.yk"; yl: "ar.yl"; ym: "ar.ym"; yn: "ar.yn"; yo: "ar.yo"; yp: "ar.yp"; yq: "ar.yq"; yr: "ar.yr"; ys: "ar.ys"; yt: "ar.yt"; yu: "ar.yu"; yv: "ar.yv"; yw: "ar.yw"; yx: "ar.yx"; yy: "ar.yy"; yz: "ar.yz"; za: "ar.za"; zb: "ar.zb"; zc: "ar.zc"; zd: "ar.zd"; ze: "ar.ze"; zf: "ar.zf"; zg: "ar.zg"; zh: "ar.zh"; zi: "ar.zi"; zj: "ar.zj"; zk: "ar.zk"; zl: "ar.zl"; zm: "ar.zm"; zn: "ar.zn"; zo: "ar.zo"; zp: "ar.zp"; zq: "ar.zq"; zr: "ar.zr"; zs: "ar.zs"; zt: "ar.zt"; zu: "ar.zu"; zv: "ar.zv"; zw: "ar.zw"; zx: "ar.zx"; zy: "ar.zy"; zz: "ar.zz"; }; as: { aa: "as.aa"; ab: "as.ab"; ac: "as.ac"; ad: "as.ad"; ae: "as.ae"; af: "as.af"; ag: "as.ag"; ah: "as.ah"; ai: "as.ai"; aj: "as.aj"; ak: "as.ak"; al: "as.al"; am: "as.am"; an: "as.an"; ao: "as.ao"; ap: "as.ap"; aq: "as.aq"; ar: "as.ar"; as: "as.as"; at: "as.at"; au: "as.au"; av: "as.av"; aw: "as.aw"; ax: "as.ax"; ay: "as.ay"; az: "as.az"; ba: "as.ba"; bb: "as.bb"; bc: "as.bc"; bd: "as.bd"; be: "as.be"; bf: "as.bf"; bg: "as.bg"; bh: "as.bh"; bi: "as.bi"; bj: "as.bj"; bk: "as.bk"; bl: "as.bl"; bm: "as.bm"; bn: "as.bn"; bo: "as.bo"; bp: "as.bp"; bq: "as.bq"; br: "as.br"; bs: "as.bs"; bt: "as.bt"; bu: "as.bu"; bv: "as.bv"; bw: "as.bw"; bx: "as.bx"; by: "as.by"; bz: "as.bz"; ca: "as.ca"; cb: "as.cb"; cc: "as.cc"; cd: "as.cd"; ce: "as.ce"; cf: "as.cf"; cg: "as.cg"; ch: "as.ch"; ci: "as.ci"; cj: "as.cj"; ck: "as.ck"; cl: "as.cl"; cm: "as.cm"; cn: "as.cn"; co: "as.co"; cp: "as.cp"; cq: "as.cq"; cr: "as.cr"; cs: "as.cs"; ct: "as.ct"; cu: "as.cu"; cv: "as.cv"; cw: "as.cw"; cx: "as.cx"; cy: "as.cy"; cz: "as.cz"; da: "as.da"; db: "as.db"; dc: "as.dc"; dd: "as.dd"; de: "as.de"; df: "as.df"; dg: "as.dg"; dh: "as.dh"; di: "as.di"; dj: "as.dj"; dk: "as.dk"; dl: "as.dl"; dm: "as.dm"; dn: "as.dn"; do: "as.do"; dp: "as.dp"; dq: "as.dq"; dr: "as.dr"; ds: "as.ds"; dt: "as.dt"; du: "as.du"; dv: "as.dv"; dw: "as.dw"; dx: "as.dx"; dy: "as.dy"; dz: "as.dz"; ea: "as.ea"; eb: "as.eb"; ec: "as.ec"; ed: "as.ed"; ee: "as.ee"; ef: "as.ef"; eg: "as.eg"; eh: "as.eh"; ei: "as.ei"; ej: "as.ej"; ek: "as.ek"; el: "as.el"; em: "as.em"; en: "as.en"; eo: "as.eo"; ep: "as.ep"; eq: "as.eq"; er: "as.er"; es: "as.es"; et: "as.et"; eu: "as.eu"; ev: "as.ev"; ew: "as.ew"; ex: "as.ex"; ey: "as.ey"; ez: "as.ez"; fa: "as.fa"; fb: "as.fb"; fc: "as.fc"; fd: "as.fd"; fe: "as.fe"; ff: "as.ff"; fg: "as.fg"; fh: "as.fh"; fi: "as.fi"; fj: "as.fj"; fk: "as.fk"; fl: "as.fl"; fm: "as.fm"; fn: "as.fn"; fo: "as.fo"; fp: "as.fp"; fq: "as.fq"; fr: "as.fr"; fs: "as.fs"; ft: "as.ft"; fu: "as.fu"; fv: "as.fv"; fw: "as.fw"; fx: "as.fx"; fy: "as.fy"; fz: "as.fz"; ga: "as.ga"; gb: "as.gb"; gc: "as.gc"; gd: "as.gd"; ge: "as.ge"; gf: "as.gf"; gg: "as.gg"; gh: "as.gh"; gi: "as.gi"; gj: "as.gj"; gk: "as.gk"; gl: "as.gl"; gm: "as.gm"; gn: "as.gn"; go: "as.go"; gp: "as.gp"; gq: "as.gq"; gr: "as.gr"; gs: "as.gs"; gt: "as.gt"; gu: "as.gu"; gv: "as.gv"; gw: "as.gw"; gx: "as.gx"; gy: "as.gy"; gz: "as.gz"; ha: "as.ha"; hb: "as.hb"; hc: "as.hc"; hd: "as.hd"; he: "as.he"; hf: "as.hf"; hg: "as.hg"; hh: "as.hh"; hi: "as.hi"; hj: "as.hj"; hk: "as.hk"; hl: "as.hl"; hm: "as.hm"; hn: "as.hn"; ho: "as.ho"; hp: "as.hp"; hq: "as.hq"; hr: "as.hr"; hs: "as.hs"; ht: "as.ht"; hu: "as.hu"; hv: "as.hv"; hw: "as.hw"; hx: "as.hx"; hy: "as.hy"; hz: "as.hz"; ia: "as.ia"; ib: "as.ib"; ic: "as.ic"; id: "as.id"; ie: "as.ie"; if: "as.if"; ig: "as.ig"; ih: "as.ih"; ii: "as.ii"; ij: "as.ij"; ik: "as.ik"; il: "as.il"; im: "as.im"; in: "as.in"; io: "as.io"; ip: "as.ip"; iq: "as.iq"; ir: "as.ir"; is: "as.is"; it: "as.it"; iu: "as.iu"; iv: "as.iv"; iw: "as.iw"; ix: "as.ix"; iy: "as.iy"; iz: "as.iz"; ja: "as.ja"; jb: "as.jb"; jc: "as.jc"; jd: "as.jd"; je: "as.je"; jf: "as.jf"; jg: "as.jg"; jh: "as.jh"; ji: "as.ji"; jj: "as.jj"; jk: "as.jk"; jl: "as.jl"; jm: "as.jm"; jn: "as.jn"; jo: "as.jo"; jp: "as.jp"; jq: "as.jq"; jr: "as.jr"; js: "as.js"; jt: "as.jt"; ju: "as.ju"; jv: "as.jv"; jw: "as.jw"; jx: "as.jx"; jy: "as.jy"; jz: "as.jz"; ka: "as.ka"; kb: "as.kb"; kc: "as.kc"; kd: "as.kd"; ke: "as.ke"; kf: "as.kf"; kg: "as.kg"; kh: "as.kh"; ki: "as.ki"; kj: "as.kj"; kk: "as.kk"; kl: "as.kl"; km: "as.km"; kn: "as.kn"; ko: "as.ko"; kp: "as.kp"; kq: "as.kq"; kr: "as.kr"; ks: "as.ks"; kt: "as.kt"; ku: "as.ku"; kv: "as.kv"; kw: "as.kw"; kx: "as.kx"; ky: "as.ky"; kz: "as.kz"; la: "as.la"; lb: "as.lb"; lc: "as.lc"; ld: "as.ld"; le: "as.le"; lf: "as.lf"; lg: "as.lg"; lh: "as.lh"; li: "as.li"; lj: "as.lj"; lk: "as.lk"; ll: "as.ll"; lm: "as.lm"; ln: "as.ln"; lo: "as.lo"; lp: "as.lp"; lq: "as.lq"; lr: "as.lr"; ls: "as.ls"; lt: "as.lt"; lu: "as.lu"; lv: "as.lv"; lw: "as.lw"; lx: "as.lx"; ly: "as.ly"; lz: "as.lz"; ma: "as.ma"; mb: "as.mb"; mc: "as.mc"; md: "as.md"; me: "as.me"; mf: "as.mf"; mg: "as.mg"; mh: "as.mh"; mi: "as.mi"; mj: "as.mj"; mk: "as.mk"; ml: "as.ml"; mm: "as.mm"; mn: "as.mn"; mo: "as.mo"; mp: "as.mp"; mq: "as.mq"; mr: "as.mr"; ms: "as.ms"; mt: "as.mt"; mu: "as.mu"; mv: "as.mv"; mw: "as.mw"; mx: "as.mx"; my: "as.my"; mz: "as.mz"; na: "as.na"; nb: "as.nb"; nc: "as.nc"; nd: "as.nd"; ne: "as.ne"; nf: "as.nf"; ng: "as.ng"; nh: "as.nh"; ni: "as.ni"; nj: "as.nj"; nk: "as.nk"; nl: "as.nl"; nm: "as.nm"; nn: "as.nn"; no: "as.no"; np: "as.np"; nq: "as.nq"; nr: "as.nr"; ns: "as.ns"; nt: "as.nt"; nu: "as.nu"; nv: "as.nv"; nw: "as.nw"; nx: "as.nx"; ny: "as.ny"; nz: "as.nz"; oa: "as.oa"; ob: "as.ob"; oc: "as.oc"; od: "as.od"; oe: "as.oe"; of: "as.of"; og: "as.og"; oh: "as.oh"; oi: "as.oi"; oj: "as.oj"; ok: "as.ok"; ol: "as.ol"; om: "as.om"; on: "as.on"; oo: "as.oo"; op: "as.op"; oq: "as.oq"; or: "as.or"; os: "as.os"; ot: "as.ot"; ou: "as.ou"; ov: "as.ov"; ow: "as.ow"; ox: "as.ox"; oy: "as.oy"; oz: "as.oz"; pa: "as.pa"; pb: "as.pb"; pc: "as.pc"; pd: "as.pd"; pe: "as.pe"; pf: "as.pf"; pg: "as.pg"; ph: "as.ph"; pi: "as.pi"; pj: "as.pj"; pk: "as.pk"; pl: "as.pl"; pm: "as.pm"; pn: "as.pn"; po: "as.po"; pp: "as.pp"; pq: "as.pq"; pr: "as.pr"; ps: "as.ps"; pt: "as.pt"; pu: "as.pu"; pv: "as.pv"; pw: "as.pw"; px: "as.px"; py: "as.py"; pz: "as.pz"; qa: "as.qa"; qb: "as.qb"; qc: "as.qc"; qd: "as.qd"; qe: "as.qe"; qf: "as.qf"; qg: "as.qg"; qh: "as.qh"; qi: "as.qi"; qj: "as.qj"; qk: "as.qk"; ql: "as.ql"; qm: "as.qm"; qn: "as.qn"; qo: "as.qo"; qp: "as.qp"; qq: "as.qq"; qr: "as.qr"; qs: "as.qs"; qt: "as.qt"; qu: "as.qu"; qv: "as.qv"; qw: "as.qw"; qx: "as.qx"; qy: "as.qy"; qz: "as.qz"; ra: "as.ra"; rb: "as.rb"; rc: "as.rc"; rd: "as.rd"; re: "as.re"; rf: "as.rf"; rg: "as.rg"; rh: "as.rh"; ri: "as.ri"; rj: "as.rj"; rk: "as.rk"; rl: "as.rl"; rm: "as.rm"; rn: "as.rn"; ro: "as.ro"; rp: "as.rp"; rq: "as.rq"; rr: "as.rr"; rs: "as.rs"; rt: "as.rt"; ru: "as.ru"; rv: "as.rv"; rw: "as.rw"; rx: "as.rx"; ry: "as.ry"; rz: "as.rz"; sa: "as.sa"; sb: "as.sb"; sc: "as.sc"; sd: "as.sd"; se: "as.se"; sf: "as.sf"; sg: "as.sg"; sh: "as.sh"; si: "as.si"; sj: "as.sj"; sk: "as.sk"; sl: "as.sl"; sm: "as.sm"; sn: "as.sn"; so: "as.so"; sp: "as.sp"; sq: "as.sq"; sr: "as.sr"; ss: "as.ss"; st: "as.st"; su: "as.su"; sv: "as.sv"; sw: "as.sw"; sx: "as.sx"; sy: "as.sy"; sz: "as.sz"; ta: "as.ta"; tb: "as.tb"; tc: "as.tc"; td: "as.td"; te: "as.te"; tf: "as.tf"; tg: "as.tg"; th: "as.th"; ti: "as.ti"; tj: "as.tj"; tk: "as.tk"; tl: "as.tl"; tm: "as.tm"; tn: "as.tn"; to: "as.to"; tp: "as.tp"; tq: "as.tq"; tr: "as.tr"; ts: "as.ts"; tt: "as.tt"; tu: "as.tu"; tv: "as.tv"; tw: "as.tw"; tx: "as.tx"; ty: "as.ty"; tz: "as.tz"; ua: "as.ua"; ub: "as.ub"; uc: "as.uc"; ud: "as.ud"; ue: "as.ue"; uf: "as.uf"; ug: "as.ug"; uh: "as.uh"; ui: "as.ui"; uj: "as.uj"; uk: "as.uk"; ul: "as.ul"; um: "as.um"; un: "as.un"; uo: "as.uo"; up: "as.up"; uq: "as.uq"; ur: "as.ur"; us: "as.us"; ut: "as.ut"; uu: "as.uu"; uv: "as.uv"; uw: "as.uw"; ux: "as.ux"; uy: "as.uy"; uz: "as.uz"; va: "as.va"; vb: "as.vb"; vc: "as.vc"; vd: "as.vd"; ve: "as.ve"; vf: "as.vf"; vg: "as.vg"; vh: "as.vh"; vi: "as.vi"; vj: "as.vj"; vk: "as.vk"; vl: "as.vl"; vm: "as.vm"; vn: "as.vn"; vo: "as.vo"; vp: "as.vp"; vq: "as.vq"; vr: "as.vr"; vs: "as.vs"; vt: "as.vt"; vu: "as.vu"; vv: "as.vv"; vw: "as.vw"; vx: "as.vx"; vy: "as.vy"; vz: "as.vz"; wa: "as.wa"; wb: "as.wb"; wc: "as.wc"; wd: "as.wd"; we: "as.we"; wf: "as.wf"; wg: "as.wg"; wh: "as.wh"; wi: "as.wi"; wj: "as.wj"; wk: "as.wk"; wl: "as.wl"; wm: "as.wm"; wn: "as.wn"; wo: "as.wo"; wp: "as.wp"; wq: "as.wq"; wr: "as.wr"; ws: "as.ws"; wt: "as.wt"; wu: "as.wu"; wv: "as.wv"; ww: "as.ww"; wx: "as.wx"; wy: "as.wy"; wz: "as.wz"; xa: "as.xa"; xb: "as.xb"; xc: "as.xc"; xd: "as.xd"; xe: "as.xe"; xf: "as.xf"; xg: "as.xg"; xh: "as.xh"; xi: "as.xi"; xj: "as.xj"; xk: "as.xk"; xl: "as.xl"; xm: "as.xm"; xn: "as.xn"; xo: "as.xo"; xp: "as.xp"; xq: "as.xq"; xr: "as.xr"; xs: "as.xs"; xt: "as.xt"; xu: "as.xu"; xv: "as.xv"; xw: "as.xw"; xx: "as.xx"; xy: "as.xy"; xz: "as.xz"; ya: "as.ya"; yb: "as.yb"; yc: "as.yc"; yd: "as.yd"; ye: "as.ye"; yf: "as.yf"; yg: "as.yg"; yh: "as.yh"; yi: "as.yi"; yj: "as.yj"; yk: "as.yk"; yl: "as.yl"; ym: "as.ym"; yn: "as.yn"; yo: "as.yo"; yp: "as.yp"; yq: "as.yq"; yr: "as.yr"; ys: "as.ys"; yt: "as.yt"; yu: "as.yu"; yv: "as.yv"; yw: "as.yw"; yx: "as.yx"; yy: "as.yy"; yz: "as.yz"; za: "as.za"; zb: "as.zb"; zc: "as.zc"; zd: "as.zd"; ze: "as.ze"; zf: "as.zf"; zg: "as.zg"; zh: "as.zh"; zi: "as.zi"; zj: "as.zj"; zk: "as.zk"; zl: "as.zl"; zm: "as.zm"; zn: "as.zn"; zo: "as.zo"; zp: "as.zp"; zq: "as.zq"; zr: "as.zr"; zs: "as.zs"; zt: "as.zt"; zu: "as.zu"; zv: "as.zv"; zw: "as.zw"; zx: "as.zx"; zy: "as.zy"; zz: "as.zz"; }; at: { aa: "at.aa"; ab: "at.ab"; ac: "at.ac"; ad: "at.ad"; ae: "at.ae"; af: "at.af"; ag: "at.ag"; ah: "at.ah"; ai: "at.ai"; aj: "at.aj"; ak: "at.ak"; al: "at.al"; am: "at.am"; an: "at.an"; ao: "at.ao"; ap: "at.ap"; aq: "at.aq"; ar: "at.ar"; as: "at.as"; at: "at.at"; au: "at.au"; av: "at.av"; aw: "at.aw"; ax: "at.ax"; ay: "at.ay"; az: "at.az"; ba: "at.ba"; bb: "at.bb"; bc: "at.bc"; bd: "at.bd"; be: "at.be"; bf: "at.bf"; bg: "at.bg"; bh: "at.bh"; bi: "at.bi"; bj: "at.bj"; bk: "at.bk"; bl: "at.bl"; bm: "at.bm"; bn: "at.bn"; bo: "at.bo"; bp: "at.bp"; bq: "at.bq"; br: "at.br"; bs: "at.bs"; bt: "at.bt"; bu: "at.bu"; bv: "at.bv"; bw: "at.bw"; bx: "at.bx"; by: "at.by"; bz: "at.bz"; ca: "at.ca"; cb: "at.cb"; cc: "at.cc"; cd: "at.cd"; ce: "at.ce"; cf: "at.cf"; cg: "at.cg"; ch: "at.ch"; ci: "at.ci"; cj: "at.cj"; ck: "at.ck"; cl: "at.cl"; cm: "at.cm"; cn: "at.cn"; co: "at.co"; cp: "at.cp"; cq: "at.cq"; cr: "at.cr"; cs: "at.cs"; ct: "at.ct"; cu: "at.cu"; cv: "at.cv"; cw: "at.cw"; cx: "at.cx"; cy: "at.cy"; cz: "at.cz"; da: "at.da"; db: "at.db"; dc: "at.dc"; dd: "at.dd"; de: "at.de"; df: "at.df"; dg: "at.dg"; dh: "at.dh"; di: "at.di"; dj: "at.dj"; dk: "at.dk"; dl: "at.dl"; dm: "at.dm"; dn: "at.dn"; do: "at.do"; dp: "at.dp"; dq: "at.dq"; dr: "at.dr"; ds: "at.ds"; dt: "at.dt"; du: "at.du"; dv: "at.dv"; dw: "at.dw"; dx: "at.dx"; dy: "at.dy"; dz: "at.dz"; ea: "at.ea"; eb: "at.eb"; ec: "at.ec"; ed: "at.ed"; ee: "at.ee"; ef: "at.ef"; eg: "at.eg"; eh: "at.eh"; ei: "at.ei"; ej: "at.ej"; ek: "at.ek"; el: "at.el"; em: "at.em"; en: "at.en"; eo: "at.eo"; ep: "at.ep"; eq: "at.eq"; er: "at.er"; es: "at.es"; et: "at.et"; eu: "at.eu"; ev: "at.ev"; ew: "at.ew"; ex: "at.ex"; ey: "at.ey"; ez: "at.ez"; fa: "at.fa"; fb: "at.fb"; fc: "at.fc"; fd: "at.fd"; fe: "at.fe"; ff: "at.ff"; fg: "at.fg"; fh: "at.fh"; fi: "at.fi"; fj: "at.fj"; fk: "at.fk"; fl: "at.fl"; fm: "at.fm"; fn: "at.fn"; fo: "at.fo"; fp: "at.fp"; fq: "at.fq"; fr: "at.fr"; fs: "at.fs"; ft: "at.ft"; fu: "at.fu"; fv: "at.fv"; fw: "at.fw"; fx: "at.fx"; fy: "at.fy"; fz: "at.fz"; ga: "at.ga"; gb: "at.gb"; gc: "at.gc"; gd: "at.gd"; ge: "at.ge"; gf: "at.gf"; gg: "at.gg"; gh: "at.gh"; gi: "at.gi"; gj: "at.gj"; gk: "at.gk"; gl: "at.gl"; gm: "at.gm"; gn: "at.gn"; go: "at.go"; gp: "at.gp"; gq: "at.gq"; gr: "at.gr"; gs: "at.gs"; gt: "at.gt"; gu: "at.gu"; gv: "at.gv"; gw: "at.gw"; gx: "at.gx"; gy: "at.gy"; gz: "at.gz"; ha: "at.ha"; hb: "at.hb"; hc: "at.hc"; hd: "at.hd"; he: "at.he"; hf: "at.hf"; hg: "at.hg"; hh: "at.hh"; hi: "at.hi"; hj: "at.hj"; hk: "at.hk"; hl: "at.hl"; hm: "at.hm"; hn: "at.hn"; ho: "at.ho"; hp: "at.hp"; hq: "at.hq"; hr: "at.hr"; hs: "at.hs"; ht: "at.ht"; hu: "at.hu"; hv: "at.hv"; hw: "at.hw"; hx: "at.hx"; hy: "at.hy"; hz: "at.hz"; ia: "at.ia"; ib: "at.ib"; ic: "at.ic"; id: "at.id"; ie: "at.ie"; if: "at.if"; ig: "at.ig"; ih: "at.ih"; ii: "at.ii"; ij: "at.ij"; ik: "at.ik"; il: "at.il"; im: "at.im"; in: "at.in"; io: "at.io"; ip: "at.ip"; iq: "at.iq"; ir: "at.ir"; is: "at.is"; it: "at.it"; iu: "at.iu"; iv: "at.iv"; iw: "at.iw"; ix: "at.ix"; iy: "at.iy"; iz: "at.iz"; ja: "at.ja"; jb: "at.jb"; jc: "at.jc"; jd: "at.jd"; je: "at.je"; jf: "at.jf"; jg: "at.jg"; jh: "at.jh"; ji: "at.ji"; jj: "at.jj"; jk: "at.jk"; jl: "at.jl"; jm: "at.jm"; jn: "at.jn"; jo: "at.jo"; jp: "at.jp"; jq: "at.jq"; jr: "at.jr"; js: "at.js"; jt: "at.jt"; ju: "at.ju"; jv: "at.jv"; jw: "at.jw"; jx: "at.jx"; jy: "at.jy"; jz: "at.jz"; ka: "at.ka"; kb: "at.kb"; kc: "at.kc"; kd: "at.kd"; ke: "at.ke"; kf: "at.kf"; kg: "at.kg"; kh: "at.kh"; ki: "at.ki"; kj: "at.kj"; kk: "at.kk"; kl: "at.kl"; km: "at.km"; kn: "at.kn"; ko: "at.ko"; kp: "at.kp"; kq: "at.kq"; kr: "at.kr"; ks: "at.ks"; kt: "at.kt"; ku: "at.ku"; kv: "at.kv"; kw: "at.kw"; kx: "at.kx"; ky: "at.ky"; kz: "at.kz"; la: "at.la"; lb: "at.lb"; lc: "at.lc"; ld: "at.ld"; le: "at.le"; lf: "at.lf"; lg: "at.lg"; lh: "at.lh"; li: "at.li"; lj: "at.lj"; lk: "at.lk"; ll: "at.ll"; lm: "at.lm"; ln: "at.ln"; lo: "at.lo"; lp: "at.lp"; lq: "at.lq"; lr: "at.lr"; ls: "at.ls"; lt: "at.lt"; lu: "at.lu"; lv: "at.lv"; lw: "at.lw"; lx: "at.lx"; ly: "at.ly"; lz: "at.lz"; ma: "at.ma"; mb: "at.mb"; mc: "at.mc"; md: "at.md"; me: "at.me"; mf: "at.mf"; mg: "at.mg"; mh: "at.mh"; mi: "at.mi"; mj: "at.mj"; mk: "at.mk"; ml: "at.ml"; mm: "at.mm"; mn: "at.mn"; mo: "at.mo"; mp: "at.mp"; mq: "at.mq"; mr: "at.mr"; ms: "at.ms"; mt: "at.mt"; mu: "at.mu"; mv: "at.mv"; mw: "at.mw"; mx: "at.mx"; my: "at.my"; mz: "at.mz"; na: "at.na"; nb: "at.nb"; nc: "at.nc"; nd: "at.nd"; ne: "at.ne"; nf: "at.nf"; ng: "at.ng"; nh: "at.nh"; ni: "at.ni"; nj: "at.nj"; nk: "at.nk"; nl: "at.nl"; nm: "at.nm"; nn: "at.nn"; no: "at.no"; np: "at.np"; nq: "at.nq"; nr: "at.nr"; ns: "at.ns"; nt: "at.nt"; nu: "at.nu"; nv: "at.nv"; nw: "at.nw"; nx: "at.nx"; ny: "at.ny"; nz: "at.nz"; oa: "at.oa"; ob: "at.ob"; oc: "at.oc"; od: "at.od"; oe: "at.oe"; of: "at.of"; og: "at.og"; oh: "at.oh"; oi: "at.oi"; oj: "at.oj"; ok: "at.ok"; ol: "at.ol"; om: "at.om"; on: "at.on"; oo: "at.oo"; op: "at.op"; oq: "at.oq"; or: "at.or"; os: "at.os"; ot: "at.ot"; ou: "at.ou"; ov: "at.ov"; ow: "at.ow"; ox: "at.ox"; oy: "at.oy"; oz: "at.oz"; pa: "at.pa"; pb: "at.pb"; pc: "at.pc"; pd: "at.pd"; pe: "at.pe"; pf: "at.pf"; pg: "at.pg"; ph: "at.ph"; pi: "at.pi"; pj: "at.pj"; pk: "at.pk"; pl: "at.pl"; pm: "at.pm"; pn: "at.pn"; po: "at.po"; pp: "at.pp"; pq: "at.pq"; pr: "at.pr"; ps: "at.ps"; pt: "at.pt"; pu: "at.pu"; pv: "at.pv"; pw: "at.pw"; px: "at.px"; py: "at.py"; pz: "at.pz"; qa: "at.qa"; qb: "at.qb"; qc: "at.qc"; qd: "at.qd"; qe: "at.qe"; qf: "at.qf"; qg: "at.qg"; qh: "at.qh"; qi: "at.qi"; qj: "at.qj"; qk: "at.qk"; ql: "at.ql"; qm: "at.qm"; qn: "at.qn"; qo: "at.qo"; qp: "at.qp"; qq: "at.qq"; qr: "at.qr"; qs: "at.qs"; qt: "at.qt"; qu: "at.qu"; qv: "at.qv"; qw: "at.qw"; qx: "at.qx"; qy: "at.qy"; qz: "at.qz"; ra: "at.ra"; rb: "at.rb"; rc: "at.rc"; rd: "at.rd"; re: "at.re"; rf: "at.rf"; rg: "at.rg"; rh: "at.rh"; ri: "at.ri"; rj: "at.rj"; rk: "at.rk"; rl: "at.rl"; rm: "at.rm"; rn: "at.rn"; ro: "at.ro"; rp: "at.rp"; rq: "at.rq"; rr: "at.rr"; rs: "at.rs"; rt: "at.rt"; ru: "at.ru"; rv: "at.rv"; rw: "at.rw"; rx: "at.rx"; ry: "at.ry"; rz: "at.rz"; sa: "at.sa"; sb: "at.sb"; sc: "at.sc"; sd: "at.sd"; se: "at.se"; sf: "at.sf"; sg: "at.sg"; sh: "at.sh"; si: "at.si"; sj: "at.sj"; sk: "at.sk"; sl: "at.sl"; sm: "at.sm"; sn: "at.sn"; so: "at.so"; sp: "at.sp"; sq: "at.sq"; sr: "at.sr"; ss: "at.ss"; st: "at.st"; su: "at.su"; sv: "at.sv"; sw: "at.sw"; sx: "at.sx"; sy: "at.sy"; sz: "at.sz"; ta: "at.ta"; tb: "at.tb"; tc: "at.tc"; td: "at.td"; te: "at.te"; tf: "at.tf"; tg: "at.tg"; th: "at.th"; ti: "at.ti"; tj: "at.tj"; tk: "at.tk"; tl: "at.tl"; tm: "at.tm"; tn: "at.tn"; to: "at.to"; tp: "at.tp"; tq: "at.tq"; tr: "at.tr"; ts: "at.ts"; tt: "at.tt"; tu: "at.tu"; tv: "at.tv"; tw: "at.tw"; tx: "at.tx"; ty: "at.ty"; tz: "at.tz"; ua: "at.ua"; ub: "at.ub"; uc: "at.uc"; ud: "at.ud"; ue: "at.ue"; uf: "at.uf"; ug: "at.ug"; uh: "at.uh"; ui: "at.ui"; uj: "at.uj"; uk: "at.uk"; ul: "at.ul"; um: "at.um"; un: "at.un"; uo: "at.uo"; up: "at.up"; uq: "at.uq"; ur: "at.ur"; us: "at.us"; ut: "at.ut"; uu: "at.uu"; uv: "at.uv"; uw: "at.uw"; ux: "at.ux"; uy: "at.uy"; uz: "at.uz"; va: "at.va"; vb: "at.vb"; vc: "at.vc"; vd: "at.vd"; ve: "at.ve"; vf: "at.vf"; vg: "at.vg"; vh: "at.vh"; vi: "at.vi"; vj: "at.vj"; vk: "at.vk"; vl: "at.vl"; vm: "at.vm"; vn: "at.vn"; vo: "at.vo"; vp: "at.vp"; vq: "at.vq"; vr: "at.vr"; vs: "at.vs"; vt: "at.vt"; vu: "at.vu"; vv: "at.vv"; vw: "at.vw"; vx: "at.vx"; vy: "at.vy"; vz: "at.vz"; wa: "at.wa"; wb: "at.wb"; wc: "at.wc"; wd: "at.wd"; we: "at.we"; wf: "at.wf"; wg: "at.wg"; wh: "at.wh"; wi: "at.wi"; wj: "at.wj"; wk: "at.wk"; wl: "at.wl"; wm: "at.wm"; wn: "at.wn"; wo: "at.wo"; wp: "at.wp"; wq: "at.wq"; wr: "at.wr"; ws: "at.ws"; wt: "at.wt"; wu: "at.wu"; wv: "at.wv"; ww: "at.ww"; wx: "at.wx"; wy: "at.wy"; wz: "at.wz"; xa: "at.xa"; xb: "at.xb"; xc: "at.xc"; xd: "at.xd"; xe: "at.xe"; xf: "at.xf"; xg: "at.xg"; xh: "at.xh"; xi: "at.xi"; xj: "at.xj"; xk: "at.xk"; xl: "at.xl"; xm: "at.xm"; xn: "at.xn"; xo: "at.xo"; xp: "at.xp"; xq: "at.xq"; xr: "at.xr"; xs: "at.xs"; xt: "at.xt"; xu: "at.xu"; xv: "at.xv"; xw: "at.xw"; xx: "at.xx"; xy: "at.xy"; xz: "at.xz"; ya: "at.ya"; yb: "at.yb"; yc: "at.yc"; yd: "at.yd"; ye: "at.ye"; yf: "at.yf"; yg: "at.yg"; yh: "at.yh"; yi: "at.yi"; yj: "at.yj"; yk: "at.yk"; yl: "at.yl"; ym: "at.ym"; yn: "at.yn"; yo: "at.yo"; yp: "at.yp"; yq: "at.yq"; yr: "at.yr"; ys: "at.ys"; yt: "at.yt"; yu: "at.yu"; yv: "at.yv"; yw: "at.yw"; yx: "at.yx"; yy: "at.yy"; yz: "at.yz"; za: "at.za"; zb: "at.zb"; zc: "at.zc"; zd: "at.zd"; ze: "at.ze"; zf: "at.zf"; zg: "at.zg"; zh: "at.zh"; zi: "at.zi"; zj: "at.zj"; zk: "at.zk"; zl: "at.zl"; zm: "at.zm"; zn: "at.zn"; zo: "at.zo"; zp: "at.zp"; zq: "at.zq"; zr: "at.zr"; zs: "at.zs"; zt: "at.zt"; zu: "at.zu"; zv: "at.zv"; zw: "at.zw"; zx: "at.zx"; zy: "at.zy"; zz: "at.zz"; }; au: { aa: "au.aa"; ab: "au.ab"; ac: "au.ac"; ad: "au.ad"; ae: "au.ae"; af: "au.af"; ag: "au.ag"; ah: "au.ah"; ai: "au.ai"; aj: "au.aj"; ak: "au.ak"; al: "au.al"; am: "au.am"; an: "au.an"; ao: "au.ao"; ap: "au.ap"; aq: "au.aq"; ar: "au.ar"; as: "au.as"; at: "au.at"; au: "au.au"; av: "au.av"; aw: "au.aw"; ax: "au.ax"; ay: "au.ay"; az: "au.az"; ba: "au.ba"; bb: "au.bb"; bc: "au.bc"; bd: "au.bd"; be: "au.be"; bf: "au.bf"; bg: "au.bg"; bh: "au.bh"; bi: "au.bi"; bj: "au.bj"; bk: "au.bk"; bl: "au.bl"; bm: "au.bm"; bn: "au.bn"; bo: "au.bo"; bp: "au.bp"; bq: "au.bq"; br: "au.br"; bs: "au.bs"; bt: "au.bt"; bu: "au.bu"; bv: "au.bv"; bw: "au.bw"; bx: "au.bx"; by: "au.by"; bz: "au.bz"; ca: "au.ca"; cb: "au.cb"; cc: "au.cc"; cd: "au.cd"; ce: "au.ce"; cf: "au.cf"; cg: "au.cg"; ch: "au.ch"; ci: "au.ci"; cj: "au.cj"; ck: "au.ck"; cl: "au.cl"; cm: "au.cm"; cn: "au.cn"; co: "au.co"; cp: "au.cp"; cq: "au.cq"; cr: "au.cr"; cs: "au.cs"; ct: "au.ct"; cu: "au.cu"; cv: "au.cv"; cw: "au.cw"; cx: "au.cx"; cy: "au.cy"; cz: "au.cz"; da: "au.da"; db: "au.db"; dc: "au.dc"; dd: "au.dd"; de: "au.de"; df: "au.df"; dg: "au.dg"; dh: "au.dh"; di: "au.di"; dj: "au.dj"; dk: "au.dk"; dl: "au.dl"; dm: "au.dm"; dn: "au.dn"; do: "au.do"; dp: "au.dp"; dq: "au.dq"; dr: "au.dr"; ds: "au.ds"; dt: "au.dt"; du: "au.du"; dv: "au.dv"; dw: "au.dw"; dx: "au.dx"; dy: "au.dy"; dz: "au.dz"; ea: "au.ea"; eb: "au.eb"; ec: "au.ec"; ed: "au.ed"; ee: "au.ee"; ef: "au.ef"; eg: "au.eg"; eh: "au.eh"; ei: "au.ei"; ej: "au.ej"; ek: "au.ek"; el: "au.el"; em: "au.em"; en: "au.en"; eo: "au.eo"; ep: "au.ep"; eq: "au.eq"; er: "au.er"; es: "au.es"; et: "au.et"; eu: "au.eu"; ev: "au.ev"; ew: "au.ew"; ex: "au.ex"; ey: "au.ey"; ez: "au.ez"; fa: "au.fa"; fb: "au.fb"; fc: "au.fc"; fd: "au.fd"; fe: "au.fe"; ff: "au.ff"; fg: "au.fg"; fh: "au.fh"; fi: "au.fi"; fj: "au.fj"; fk: "au.fk"; fl: "au.fl"; fm: "au.fm"; fn: "au.fn"; fo: "au.fo"; fp: "au.fp"; fq: "au.fq"; fr: "au.fr"; fs: "au.fs"; ft: "au.ft"; fu: "au.fu"; fv: "au.fv"; fw: "au.fw"; fx: "au.fx"; fy: "au.fy"; fz: "au.fz"; ga: "au.ga"; gb: "au.gb"; gc: "au.gc"; gd: "au.gd"; ge: "au.ge"; gf: "au.gf"; gg: "au.gg"; gh: "au.gh"; gi: "au.gi"; gj: "au.gj"; gk: "au.gk"; gl: "au.gl"; gm: "au.gm"; gn: "au.gn"; go: "au.go"; gp: "au.gp"; gq: "au.gq"; gr: "au.gr"; gs: "au.gs"; gt: "au.gt"; gu: "au.gu"; gv: "au.gv"; gw: "au.gw"; gx: "au.gx"; gy: "au.gy"; gz: "au.gz"; ha: "au.ha"; hb: "au.hb"; hc: "au.hc"; hd: "au.hd"; he: "au.he"; hf: "au.hf"; hg: "au.hg"; hh: "au.hh"; hi: "au.hi"; hj: "au.hj"; hk: "au.hk"; hl: "au.hl"; hm: "au.hm"; hn: "au.hn"; ho: "au.ho"; hp: "au.hp"; hq: "au.hq"; hr: "au.hr"; hs: "au.hs"; ht: "au.ht"; hu: "au.hu"; hv: "au.hv"; hw: "au.hw"; hx: "au.hx"; hy: "au.hy"; hz: "au.hz"; ia: "au.ia"; ib: "au.ib"; ic: "au.ic"; id: "au.id"; ie: "au.ie"; if: "au.if"; ig: "au.ig"; ih: "au.ih"; ii: "au.ii"; ij: "au.ij"; ik: "au.ik"; il: "au.il"; im: "au.im"; in: "au.in"; io: "au.io"; ip: "au.ip"; iq: "au.iq"; ir: "au.ir"; is: "au.is"; it: "au.it"; iu: "au.iu"; iv: "au.iv"; iw: "au.iw"; ix: "au.ix"; iy: "au.iy"; iz: "au.iz"; ja: "au.ja"; jb: "au.jb"; jc: "au.jc"; jd: "au.jd"; je: "au.je"; jf: "au.jf"; jg: "au.jg"; jh: "au.jh"; ji: "au.ji"; jj: "au.jj"; jk: "au.jk"; jl: "au.jl"; jm: "au.jm"; jn: "au.jn"; jo: "au.jo"; jp: "au.jp"; jq: "au.jq"; jr: "au.jr"; js: "au.js"; jt: "au.jt"; ju: "au.ju"; jv: "au.jv"; jw: "au.jw"; jx: "au.jx"; jy: "au.jy"; jz: "au.jz"; ka: "au.ka"; kb: "au.kb"; kc: "au.kc"; kd: "au.kd"; ke: "au.ke"; kf: "au.kf"; kg: "au.kg"; kh: "au.kh"; ki: "au.ki"; kj: "au.kj"; kk: "au.kk"; kl: "au.kl"; km: "au.km"; kn: "au.kn"; ko: "au.ko"; kp: "au.kp"; kq: "au.kq"; kr: "au.kr"; ks: "au.ks"; kt: "au.kt"; ku: "au.ku"; kv: "au.kv"; kw: "au.kw"; kx: "au.kx"; ky: "au.ky"; kz: "au.kz"; la: "au.la"; lb: "au.lb"; lc: "au.lc"; ld: "au.ld"; le: "au.le"; lf: "au.lf"; lg: "au.lg"; lh: "au.lh"; li: "au.li"; lj: "au.lj"; lk: "au.lk"; ll: "au.ll"; lm: "au.lm"; ln: "au.ln"; lo: "au.lo"; lp: "au.lp"; lq: "au.lq"; lr: "au.lr"; ls: "au.ls"; lt: "au.lt"; lu: "au.lu"; lv: "au.lv"; lw: "au.lw"; lx: "au.lx"; ly: "au.ly"; lz: "au.lz"; ma: "au.ma"; mb: "au.mb"; mc: "au.mc"; md: "au.md"; me: "au.me"; mf: "au.mf"; mg: "au.mg"; mh: "au.mh"; mi: "au.mi"; mj: "au.mj"; mk: "au.mk"; ml: "au.ml"; mm: "au.mm"; mn: "au.mn"; mo: "au.mo"; mp: "au.mp"; mq: "au.mq"; mr: "au.mr"; ms: "au.ms"; mt: "au.mt"; mu: "au.mu"; mv: "au.mv"; mw: "au.mw"; mx: "au.mx"; my: "au.my"; mz: "au.mz"; na: "au.na"; nb: "au.nb"; nc: "au.nc"; nd: "au.nd"; ne: "au.ne"; nf: "au.nf"; ng: "au.ng"; nh: "au.nh"; ni: "au.ni"; nj: "au.nj"; nk: "au.nk"; nl: "au.nl"; nm: "au.nm"; nn: "au.nn"; no: "au.no"; np: "au.np"; nq: "au.nq"; nr: "au.nr"; ns: "au.ns"; nt: "au.nt"; nu: "au.nu"; nv: "au.nv"; nw: "au.nw"; nx: "au.nx"; ny: "au.ny"; nz: "au.nz"; oa: "au.oa"; ob: "au.ob"; oc: "au.oc"; od: "au.od"; oe: "au.oe"; of: "au.of"; og: "au.og"; oh: "au.oh"; oi: "au.oi"; oj: "au.oj"; ok: "au.ok"; ol: "au.ol"; om: "au.om"; on: "au.on"; oo: "au.oo"; op: "au.op"; oq: "au.oq"; or: "au.or"; os: "au.os"; ot: "au.ot"; ou: "au.ou"; ov: "au.ov"; ow: "au.ow"; ox: "au.ox"; oy: "au.oy"; oz: "au.oz"; pa: "au.pa"; pb: "au.pb"; pc: "au.pc"; pd: "au.pd"; pe: "au.pe"; pf: "au.pf"; pg: "au.pg"; ph: "au.ph"; pi: "au.pi"; pj: "au.pj"; pk: "au.pk"; pl: "au.pl"; pm: "au.pm"; pn: "au.pn"; po: "au.po"; pp: "au.pp"; pq: "au.pq"; pr: "au.pr"; ps: "au.ps"; pt: "au.pt"; pu: "au.pu"; pv: "au.pv"; pw: "au.pw"; px: "au.px"; py: "au.py"; pz: "au.pz"; qa: "au.qa"; qb: "au.qb"; qc: "au.qc"; qd: "au.qd"; qe: "au.qe"; qf: "au.qf"; qg: "au.qg"; qh: "au.qh"; qi: "au.qi"; qj: "au.qj"; qk: "au.qk"; ql: "au.ql"; qm: "au.qm"; qn: "au.qn"; qo: "au.qo"; qp: "au.qp"; qq: "au.qq"; qr: "au.qr"; qs: "au.qs"; qt: "au.qt"; qu: "au.qu"; qv: "au.qv"; qw: "au.qw"; qx: "au.qx"; qy: "au.qy"; qz: "au.qz"; ra: "au.ra"; rb: "au.rb"; rc: "au.rc"; rd: "au.rd"; re: "au.re"; rf: "au.rf"; rg: "au.rg"; rh: "au.rh"; ri: "au.ri"; rj: "au.rj"; rk: "au.rk"; rl: "au.rl"; rm: "au.rm"; rn: "au.rn"; ro: "au.ro"; rp: "au.rp"; rq: "au.rq"; rr: "au.rr"; rs: "au.rs"; rt: "au.rt"; ru: "au.ru"; rv: "au.rv"; rw: "au.rw"; rx: "au.rx"; ry: "au.ry"; rz: "au.rz"; sa: "au.sa"; sb: "au.sb"; sc: "au.sc"; sd: "au.sd"; se: "au.se"; sf: "au.sf"; sg: "au.sg"; sh: "au.sh"; si: "au.si"; sj: "au.sj"; sk: "au.sk"; sl: "au.sl"; sm: "au.sm"; sn: "au.sn"; so: "au.so"; sp: "au.sp"; sq: "au.sq"; sr: "au.sr"; ss: "au.ss"; st: "au.st"; su: "au.su"; sv: "au.sv"; sw: "au.sw"; sx: "au.sx"; sy: "au.sy"; sz: "au.sz"; ta: "au.ta"; tb: "au.tb"; tc: "au.tc"; td: "au.td"; te: "au.te"; tf: "au.tf"; tg: "au.tg"; th: "au.th"; ti: "au.ti"; tj: "au.tj"; tk: "au.tk"; tl: "au.tl"; tm: "au.tm"; tn: "au.tn"; to: "au.to"; tp: "au.tp"; tq: "au.tq"; tr: "au.tr"; ts: "au.ts"; tt: "au.tt"; tu: "au.tu"; tv: "au.tv"; tw: "au.tw"; tx: "au.tx"; ty: "au.ty"; tz: "au.tz"; ua: "au.ua"; ub: "au.ub"; uc: "au.uc"; ud: "au.ud"; ue: "au.ue"; uf: "au.uf"; ug: "au.ug"; uh: "au.uh"; ui: "au.ui"; uj: "au.uj"; uk: "au.uk"; ul: "au.ul"; um: "au.um"; un: "au.un"; uo: "au.uo"; up: "au.up"; uq: "au.uq"; ur: "au.ur"; us: "au.us"; ut: "au.ut"; uu: "au.uu"; uv: "au.uv"; uw: "au.uw"; ux: "au.ux"; uy: "au.uy"; uz: "au.uz"; va: "au.va"; vb: "au.vb"; vc: "au.vc"; vd: "au.vd"; ve: "au.ve"; vf: "au.vf"; vg: "au.vg"; vh: "au.vh"; vi: "au.vi"; vj: "au.vj"; vk: "au.vk"; vl: "au.vl"; vm: "au.vm"; vn: "au.vn"; vo: "au.vo"; vp: "au.vp"; vq: "au.vq"; vr: "au.vr"; vs: "au.vs"; vt: "au.vt"; vu: "au.vu"; vv: "au.vv"; vw: "au.vw"; vx: "au.vx"; vy: "au.vy"; vz: "au.vz"; wa: "au.wa"; wb: "au.wb"; wc: "au.wc"; wd: "au.wd"; we: "au.we"; wf: "au.wf"; wg: "au.wg"; wh: "au.wh"; wi: "au.wi"; wj: "au.wj"; wk: "au.wk"; wl: "au.wl"; wm: "au.wm"; wn: "au.wn"; wo: "au.wo"; wp: "au.wp"; wq: "au.wq"; wr: "au.wr"; ws: "au.ws"; wt: "au.wt"; wu: "au.wu"; wv: "au.wv"; ww: "au.ww"; wx: "au.wx"; wy: "au.wy"; wz: "au.wz"; xa: "au.xa"; xb: "au.xb"; xc: "au.xc"; xd: "au.xd"; xe: "au.xe"; xf: "au.xf"; xg: "au.xg"; xh: "au.xh"; xi: "au.xi"; xj: "au.xj"; xk: "au.xk"; xl: "au.xl"; xm: "au.xm"; xn: "au.xn"; xo: "au.xo"; xp: "au.xp"; xq: "au.xq"; xr: "au.xr"; xs: "au.xs"; xt: "au.xt"; xu: "au.xu"; xv: "au.xv"; xw: "au.xw"; xx: "au.xx"; xy: "au.xy"; xz: "au.xz"; ya: "au.ya"; yb: "au.yb"; yc: "au.yc"; yd: "au.yd"; ye: "au.ye"; yf: "au.yf"; yg: "au.yg"; yh: "au.yh"; yi: "au.yi"; yj: "au.yj"; yk: "au.yk"; yl: "au.yl"; ym: "au.ym"; yn: "au.yn"; yo: "au.yo"; yp: "au.yp"; yq: "au.yq"; yr: "au.yr"; ys: "au.ys"; yt: "au.yt"; yu: "au.yu"; yv: "au.yv"; yw: "au.yw"; yx: "au.yx"; yy: "au.yy"; yz: "au.yz"; za: "au.za"; zb: "au.zb"; zc: "au.zc"; zd: "au.zd"; ze: "au.ze"; zf: "au.zf"; zg: "au.zg"; zh: "au.zh"; zi: "au.zi"; zj: "au.zj"; zk: "au.zk"; zl: "au.zl"; zm: "au.zm"; zn: "au.zn"; zo: "au.zo"; zp: "au.zp"; zq: "au.zq"; zr: "au.zr"; zs: "au.zs"; zt: "au.zt"; zu: "au.zu"; zv: "au.zv"; zw: "au.zw"; zx: "au.zx"; zy: "au.zy"; zz: "au.zz"; }; av: { aa: "av.aa"; ab: "av.ab"; ac: "av.ac"; ad: "av.ad"; ae: "av.ae"; af: "av.af"; ag: "av.ag"; ah: "av.ah"; ai: "av.ai"; aj: "av.aj"; ak: "av.ak"; al: "av.al"; am: "av.am"; an: "av.an"; ao: "av.ao"; ap: "av.ap"; aq: "av.aq"; ar: "av.ar"; as: "av.as"; at: "av.at"; au: "av.au"; av: "av.av"; aw: "av.aw"; ax: "av.ax"; ay: "av.ay"; az: "av.az"; ba: "av.ba"; bb: "av.bb"; bc: "av.bc"; bd: "av.bd"; be: "av.be"; bf: "av.bf"; bg: "av.bg"; bh: "av.bh"; bi: "av.bi"; bj: "av.bj"; bk: "av.bk"; bl: "av.bl"; bm: "av.bm"; bn: "av.bn"; bo: "av.bo"; bp: "av.bp"; bq: "av.bq"; br: "av.br"; bs: "av.bs"; bt: "av.bt"; bu: "av.bu"; bv: "av.bv"; bw: "av.bw"; bx: "av.bx"; by: "av.by"; bz: "av.bz"; ca: "av.ca"; cb: "av.cb"; cc: "av.cc"; cd: "av.cd"; ce: "av.ce"; cf: "av.cf"; cg: "av.cg"; ch: "av.ch"; ci: "av.ci"; cj: "av.cj"; ck: "av.ck"; cl: "av.cl"; cm: "av.cm"; cn: "av.cn"; co: "av.co"; cp: "av.cp"; cq: "av.cq"; cr: "av.cr"; cs: "av.cs"; ct: "av.ct"; cu: "av.cu"; cv: "av.cv"; cw: "av.cw"; cx: "av.cx"; cy: "av.cy"; cz: "av.cz"; da: "av.da"; db: "av.db"; dc: "av.dc"; dd: "av.dd"; de: "av.de"; df: "av.df"; dg: "av.dg"; dh: "av.dh"; di: "av.di"; dj: "av.dj"; dk: "av.dk"; dl: "av.dl"; dm: "av.dm"; dn: "av.dn"; do: "av.do"; dp: "av.dp"; dq: "av.dq"; dr: "av.dr"; ds: "av.ds"; dt: "av.dt"; du: "av.du"; dv: "av.dv"; dw: "av.dw"; dx: "av.dx"; dy: "av.dy"; dz: "av.dz"; ea: "av.ea"; eb: "av.eb"; ec: "av.ec"; ed: "av.ed"; ee: "av.ee"; ef: "av.ef"; eg: "av.eg"; eh: "av.eh"; ei: "av.ei"; ej: "av.ej"; ek: "av.ek"; el: "av.el"; em: "av.em"; en: "av.en"; eo: "av.eo"; ep: "av.ep"; eq: "av.eq"; er: "av.er"; es: "av.es"; et: "av.et"; eu: "av.eu"; ev: "av.ev"; ew: "av.ew"; ex: "av.ex"; ey: "av.ey"; ez: "av.ez"; fa: "av.fa"; fb: "av.fb"; fc: "av.fc"; fd: "av.fd"; fe: "av.fe"; ff: "av.ff"; fg: "av.fg"; fh: "av.fh"; fi: "av.fi"; fj: "av.fj"; fk: "av.fk"; fl: "av.fl"; fm: "av.fm"; fn: "av.fn"; fo: "av.fo"; fp: "av.fp"; fq: "av.fq"; fr: "av.fr"; fs: "av.fs"; ft: "av.ft"; fu: "av.fu"; fv: "av.fv"; fw: "av.fw"; fx: "av.fx"; fy: "av.fy"; fz: "av.fz"; ga: "av.ga"; gb: "av.gb"; gc: "av.gc"; gd: "av.gd"; ge: "av.ge"; gf: "av.gf"; gg: "av.gg"; gh: "av.gh"; gi: "av.gi"; gj: "av.gj"; gk: "av.gk"; gl: "av.gl"; gm: "av.gm"; gn: "av.gn"; go: "av.go"; gp: "av.gp"; gq: "av.gq"; gr: "av.gr"; gs: "av.gs"; gt: "av.gt"; gu: "av.gu"; gv: "av.gv"; gw: "av.gw"; gx: "av.gx"; gy: "av.gy"; gz: "av.gz"; ha: "av.ha"; hb: "av.hb"; hc: "av.hc"; hd: "av.hd"; he: "av.he"; hf: "av.hf"; hg: "av.hg"; hh: "av.hh"; hi: "av.hi"; hj: "av.hj"; hk: "av.hk"; hl: "av.hl"; hm: "av.hm"; hn: "av.hn"; ho: "av.ho"; hp: "av.hp"; hq: "av.hq"; hr: "av.hr"; hs: "av.hs"; ht: "av.ht"; hu: "av.hu"; hv: "av.hv"; hw: "av.hw"; hx: "av.hx"; hy: "av.hy"; hz: "av.hz"; ia: "av.ia"; ib: "av.ib"; ic: "av.ic"; id: "av.id"; ie: "av.ie"; if: "av.if"; ig: "av.ig"; ih: "av.ih"; ii: "av.ii"; ij: "av.ij"; ik: "av.ik"; il: "av.il"; im: "av.im"; in: "av.in"; io: "av.io"; ip: "av.ip"; iq: "av.iq"; ir: "av.ir"; is: "av.is"; it: "av.it"; iu: "av.iu"; iv: "av.iv"; iw: "av.iw"; ix: "av.ix"; iy: "av.iy"; iz: "av.iz"; ja: "av.ja"; jb: "av.jb"; jc: "av.jc"; jd: "av.jd"; je: "av.je"; jf: "av.jf"; jg: "av.jg"; jh: "av.jh"; ji: "av.ji"; jj: "av.jj"; jk: "av.jk"; jl: "av.jl"; jm: "av.jm"; jn: "av.jn"; jo: "av.jo"; jp: "av.jp"; jq: "av.jq"; jr: "av.jr"; js: "av.js"; jt: "av.jt"; ju: "av.ju"; jv: "av.jv"; jw: "av.jw"; jx: "av.jx"; jy: "av.jy"; jz: "av.jz"; ka: "av.ka"; kb: "av.kb"; kc: "av.kc"; kd: "av.kd"; ke: "av.ke"; kf: "av.kf"; kg: "av.kg"; kh: "av.kh"; ki: "av.ki"; kj: "av.kj"; kk: "av.kk"; kl: "av.kl"; km: "av.km"; kn: "av.kn"; ko: "av.ko"; kp: "av.kp"; kq: "av.kq"; kr: "av.kr"; ks: "av.ks"; kt: "av.kt"; ku: "av.ku"; kv: "av.kv"; kw: "av.kw"; kx: "av.kx"; ky: "av.ky"; kz: "av.kz"; la: "av.la"; lb: "av.lb"; lc: "av.lc"; ld: "av.ld"; le: "av.le"; lf: "av.lf"; lg: "av.lg"; lh: "av.lh"; li: "av.li"; lj: "av.lj"; lk: "av.lk"; ll: "av.ll"; lm: "av.lm"; ln: "av.ln"; lo: "av.lo"; lp: "av.lp"; lq: "av.lq"; lr: "av.lr"; ls: "av.ls"; lt: "av.lt"; lu: "av.lu"; lv: "av.lv"; lw: "av.lw"; lx: "av.lx"; ly: "av.ly"; lz: "av.lz"; ma: "av.ma"; mb: "av.mb"; mc: "av.mc"; md: "av.md"; me: "av.me"; mf: "av.mf"; mg: "av.mg"; mh: "av.mh"; mi: "av.mi"; mj: "av.mj"; mk: "av.mk"; ml: "av.ml"; mm: "av.mm"; mn: "av.mn"; mo: "av.mo"; mp: "av.mp"; mq: "av.mq"; mr: "av.mr"; ms: "av.ms"; mt: "av.mt"; mu: "av.mu"; mv: "av.mv"; mw: "av.mw"; mx: "av.mx"; my: "av.my"; mz: "av.mz"; na: "av.na"; nb: "av.nb"; nc: "av.nc"; nd: "av.nd"; ne: "av.ne"; nf: "av.nf"; ng: "av.ng"; nh: "av.nh"; ni: "av.ni"; nj: "av.nj"; nk: "av.nk"; nl: "av.nl"; nm: "av.nm"; nn: "av.nn"; no: "av.no"; np: "av.np"; nq: "av.nq"; nr: "av.nr"; ns: "av.ns"; nt: "av.nt"; nu: "av.nu"; nv: "av.nv"; nw: "av.nw"; nx: "av.nx"; ny: "av.ny"; nz: "av.nz"; oa: "av.oa"; ob: "av.ob"; oc: "av.oc"; od: "av.od"; oe: "av.oe"; of: "av.of"; og: "av.og"; oh: "av.oh"; oi: "av.oi"; oj: "av.oj"; ok: "av.ok"; ol: "av.ol"; om: "av.om"; on: "av.on"; oo: "av.oo"; op: "av.op"; oq: "av.oq"; or: "av.or"; os: "av.os"; ot: "av.ot"; ou: "av.ou"; ov: "av.ov"; ow: "av.ow"; ox: "av.ox"; oy: "av.oy"; oz: "av.oz"; pa: "av.pa"; pb: "av.pb"; pc: "av.pc"; pd: "av.pd"; pe: "av.pe"; pf: "av.pf"; pg: "av.pg"; ph: "av.ph"; pi: "av.pi"; pj: "av.pj"; pk: "av.pk"; pl: "av.pl"; pm: "av.pm"; pn: "av.pn"; po: "av.po"; pp: "av.pp"; pq: "av.pq"; pr: "av.pr"; ps: "av.ps"; pt: "av.pt"; pu: "av.pu"; pv: "av.pv"; pw: "av.pw"; px: "av.px"; py: "av.py"; pz: "av.pz"; qa: "av.qa"; qb: "av.qb"; qc: "av.qc"; qd: "av.qd"; qe: "av.qe"; qf: "av.qf"; qg: "av.qg"; qh: "av.qh"; qi: "av.qi"; qj: "av.qj"; qk: "av.qk"; ql: "av.ql"; qm: "av.qm"; qn: "av.qn"; qo: "av.qo"; qp: "av.qp"; qq: "av.qq"; qr: "av.qr"; qs: "av.qs"; qt: "av.qt"; qu: "av.qu"; qv: "av.qv"; qw: "av.qw"; qx: "av.qx"; qy: "av.qy"; qz: "av.qz"; ra: "av.ra"; rb: "av.rb"; rc: "av.rc"; rd: "av.rd"; re: "av.re"; rf: "av.rf"; rg: "av.rg"; rh: "av.rh"; ri: "av.ri"; rj: "av.rj"; rk: "av.rk"; rl: "av.rl"; rm: "av.rm"; rn: "av.rn"; ro: "av.ro"; rp: "av.rp"; rq: "av.rq"; rr: "av.rr"; rs: "av.rs"; rt: "av.rt"; ru: "av.ru"; rv: "av.rv"; rw: "av.rw"; rx: "av.rx"; ry: "av.ry"; rz: "av.rz"; sa: "av.sa"; sb: "av.sb"; sc: "av.sc"; sd: "av.sd"; se: "av.se"; sf: "av.sf"; sg: "av.sg"; sh: "av.sh"; si: "av.si"; sj: "av.sj"; sk: "av.sk"; sl: "av.sl"; sm: "av.sm"; sn: "av.sn"; so: "av.so"; sp: "av.sp"; sq: "av.sq"; sr: "av.sr"; ss: "av.ss"; st: "av.st"; su: "av.su"; sv: "av.sv"; sw: "av.sw"; sx: "av.sx"; sy: "av.sy"; sz: "av.sz"; ta: "av.ta"; tb: "av.tb"; tc: "av.tc"; td: "av.td"; te: "av.te"; tf: "av.tf"; tg: "av.tg"; th: "av.th"; ti: "av.ti"; tj: "av.tj"; tk: "av.tk"; tl: "av.tl"; tm: "av.tm"; tn: "av.tn"; to: "av.to"; tp: "av.tp"; tq: "av.tq"; tr: "av.tr"; ts: "av.ts"; tt: "av.tt"; tu: "av.tu"; tv: "av.tv"; tw: "av.tw"; tx: "av.tx"; ty: "av.ty"; tz: "av.tz"; ua: "av.ua"; ub: "av.ub"; uc: "av.uc"; ud: "av.ud"; ue: "av.ue"; uf: "av.uf"; ug: "av.ug"; uh: "av.uh"; ui: "av.ui"; uj: "av.uj"; uk: "av.uk"; ul: "av.ul"; um: "av.um"; un: "av.un"; uo: "av.uo"; up: "av.up"; uq: "av.uq"; ur: "av.ur"; us: "av.us"; ut: "av.ut"; uu: "av.uu"; uv: "av.uv"; uw: "av.uw"; ux: "av.ux"; uy: "av.uy"; uz: "av.uz"; va: "av.va"; vb: "av.vb"; vc: "av.vc"; vd: "av.vd"; ve: "av.ve"; vf: "av.vf"; vg: "av.vg"; vh: "av.vh"; vi: "av.vi"; vj: "av.vj"; vk: "av.vk"; vl: "av.vl"; vm: "av.vm"; vn: "av.vn"; vo: "av.vo"; vp: "av.vp"; vq: "av.vq"; vr: "av.vr"; vs: "av.vs"; vt: "av.vt"; vu: "av.vu"; vv: "av.vv"; vw: "av.vw"; vx: "av.vx"; vy: "av.vy"; vz: "av.vz"; wa: "av.wa"; wb: "av.wb"; wc: "av.wc"; wd: "av.wd"; we: "av.we"; wf: "av.wf"; wg: "av.wg"; wh: "av.wh"; wi: "av.wi"; wj: "av.wj"; wk: "av.wk"; wl: "av.wl"; wm: "av.wm"; wn: "av.wn"; wo: "av.wo"; wp: "av.wp"; wq: "av.wq"; wr: "av.wr"; ws: "av.ws"; wt: "av.wt"; wu: "av.wu"; wv: "av.wv"; ww: "av.ww"; wx: "av.wx"; wy: "av.wy"; wz: "av.wz"; xa: "av.xa"; xb: "av.xb"; xc: "av.xc"; xd: "av.xd"; xe: "av.xe"; xf: "av.xf"; xg: "av.xg"; xh: "av.xh"; xi: "av.xi"; xj: "av.xj"; xk: "av.xk"; xl: "av.xl"; xm: "av.xm"; xn: "av.xn"; xo: "av.xo"; xp: "av.xp"; xq: "av.xq"; xr: "av.xr"; xs: "av.xs"; xt: "av.xt"; xu: "av.xu"; xv: "av.xv"; xw: "av.xw"; xx: "av.xx"; xy: "av.xy"; xz: "av.xz"; ya: "av.ya"; yb: "av.yb"; yc: "av.yc"; yd: "av.yd"; ye: "av.ye"; yf: "av.yf"; yg: "av.yg"; yh: "av.yh"; yi: "av.yi"; yj: "av.yj"; yk: "av.yk"; yl: "av.yl"; ym: "av.ym"; yn: "av.yn"; yo: "av.yo"; yp: "av.yp"; yq: "av.yq"; yr: "av.yr"; ys: "av.ys"; yt: "av.yt"; yu: "av.yu"; yv: "av.yv"; yw: "av.yw"; yx: "av.yx"; yy: "av.yy"; yz: "av.yz"; za: "av.za"; zb: "av.zb"; zc: "av.zc"; zd: "av.zd"; ze: "av.ze"; zf: "av.zf"; zg: "av.zg"; zh: "av.zh"; zi: "av.zi"; zj: "av.zj"; zk: "av.zk"; zl: "av.zl"; zm: "av.zm"; zn: "av.zn"; zo: "av.zo"; zp: "av.zp"; zq: "av.zq"; zr: "av.zr"; zs: "av.zs"; zt: "av.zt"; zu: "av.zu"; zv: "av.zv"; zw: "av.zw"; zx: "av.zx"; zy: "av.zy"; zz: "av.zz"; }; aw: { aa: "aw.aa"; ab: "aw.ab"; ac: "aw.ac"; ad: "aw.ad"; ae: "aw.ae"; af: "aw.af"; ag: "aw.ag"; ah: "aw.ah"; ai: "aw.ai"; aj: "aw.aj"; ak: "aw.ak"; al: "aw.al"; am: "aw.am"; an: "aw.an"; ao: "aw.ao"; ap: "aw.ap"; aq: "aw.aq"; ar: "aw.ar"; as: "aw.as"; at: "aw.at"; au: "aw.au"; av: "aw.av"; aw: "aw.aw"; ax: "aw.ax"; ay: "aw.ay"; az: "aw.az"; ba: "aw.ba"; bb: "aw.bb"; bc: "aw.bc"; bd: "aw.bd"; be: "aw.be"; bf: "aw.bf"; bg: "aw.bg"; bh: "aw.bh"; bi: "aw.bi"; bj: "aw.bj"; bk: "aw.bk"; bl: "aw.bl"; bm: "aw.bm"; bn: "aw.bn"; bo: "aw.bo"; bp: "aw.bp"; bq: "aw.bq"; br: "aw.br"; bs: "aw.bs"; bt: "aw.bt"; bu: "aw.bu"; bv: "aw.bv"; bw: "aw.bw"; bx: "aw.bx"; by: "aw.by"; bz: "aw.bz"; ca: "aw.ca"; cb: "aw.cb"; cc: "aw.cc"; cd: "aw.cd"; ce: "aw.ce"; cf: "aw.cf"; cg: "aw.cg"; ch: "aw.ch"; ci: "aw.ci"; cj: "aw.cj"; ck: "aw.ck"; cl: "aw.cl"; cm: "aw.cm"; cn: "aw.cn"; co: "aw.co"; cp: "aw.cp"; cq: "aw.cq"; cr: "aw.cr"; cs: "aw.cs"; ct: "aw.ct"; cu: "aw.cu"; cv: "aw.cv"; cw: "aw.cw"; cx: "aw.cx"; cy: "aw.cy"; cz: "aw.cz"; da: "aw.da"; db: "aw.db"; dc: "aw.dc"; dd: "aw.dd"; de: "aw.de"; df: "aw.df"; dg: "aw.dg"; dh: "aw.dh"; di: "aw.di"; dj: "aw.dj"; dk: "aw.dk"; dl: "aw.dl"; dm: "aw.dm"; dn: "aw.dn"; do: "aw.do"; dp: "aw.dp"; dq: "aw.dq"; dr: "aw.dr"; ds: "aw.ds"; dt: "aw.dt"; du: "aw.du"; dv: "aw.dv"; dw: "aw.dw"; dx: "aw.dx"; dy: "aw.dy"; dz: "aw.dz"; ea: "aw.ea"; eb: "aw.eb"; ec: "aw.ec"; ed: "aw.ed"; ee: "aw.ee"; ef: "aw.ef"; eg: "aw.eg"; eh: "aw.eh"; ei: "aw.ei"; ej: "aw.ej"; ek: "aw.ek"; el: "aw.el"; em: "aw.em"; en: "aw.en"; eo: "aw.eo"; ep: "aw.ep"; eq: "aw.eq"; er: "aw.er"; es: "aw.es"; et: "aw.et"; eu: "aw.eu"; ev: "aw.ev"; ew: "aw.ew"; ex: "aw.ex"; ey: "aw.ey"; ez: "aw.ez"; fa: "aw.fa"; fb: "aw.fb"; fc: "aw.fc"; fd: "aw.fd"; fe: "aw.fe"; ff: "aw.ff"; fg: "aw.fg"; fh: "aw.fh"; fi: "aw.fi"; fj: "aw.fj"; fk: "aw.fk"; fl: "aw.fl"; fm: "aw.fm"; fn: "aw.fn"; fo: "aw.fo"; fp: "aw.fp"; fq: "aw.fq"; fr: "aw.fr"; fs: "aw.fs"; ft: "aw.ft"; fu: "aw.fu"; fv: "aw.fv"; fw: "aw.fw"; fx: "aw.fx"; fy: "aw.fy"; fz: "aw.fz"; ga: "aw.ga"; gb: "aw.gb"; gc: "aw.gc"; gd: "aw.gd"; ge: "aw.ge"; gf: "aw.gf"; gg: "aw.gg"; gh: "aw.gh"; gi: "aw.gi"; gj: "aw.gj"; gk: "aw.gk"; gl: "aw.gl"; gm: "aw.gm"; gn: "aw.gn"; go: "aw.go"; gp: "aw.gp"; gq: "aw.gq"; gr: "aw.gr"; gs: "aw.gs"; gt: "aw.gt"; gu: "aw.gu"; gv: "aw.gv"; gw: "aw.gw"; gx: "aw.gx"; gy: "aw.gy"; gz: "aw.gz"; ha: "aw.ha"; hb: "aw.hb"; hc: "aw.hc"; hd: "aw.hd"; he: "aw.he"; hf: "aw.hf"; hg: "aw.hg"; hh: "aw.hh"; hi: "aw.hi"; hj: "aw.hj"; hk: "aw.hk"; hl: "aw.hl"; hm: "aw.hm"; hn: "aw.hn"; ho: "aw.ho"; hp: "aw.hp"; hq: "aw.hq"; hr: "aw.hr"; hs: "aw.hs"; ht: "aw.ht"; hu: "aw.hu"; hv: "aw.hv"; hw: "aw.hw"; hx: "aw.hx"; hy: "aw.hy"; hz: "aw.hz"; ia: "aw.ia"; ib: "aw.ib"; ic: "aw.ic"; id: "aw.id"; ie: "aw.ie"; if: "aw.if"; ig: "aw.ig"; ih: "aw.ih"; ii: "aw.ii"; ij: "aw.ij"; ik: "aw.ik"; il: "aw.il"; im: "aw.im"; in: "aw.in"; io: "aw.io"; ip: "aw.ip"; iq: "aw.iq"; ir: "aw.ir"; is: "aw.is"; it: "aw.it"; iu: "aw.iu"; iv: "aw.iv"; iw: "aw.iw"; ix: "aw.ix"; iy: "aw.iy"; iz: "aw.iz"; ja: "aw.ja"; jb: "aw.jb"; jc: "aw.jc"; jd: "aw.jd"; je: "aw.je"; jf: "aw.jf"; jg: "aw.jg"; jh: "aw.jh"; ji: "aw.ji"; jj: "aw.jj"; jk: "aw.jk"; jl: "aw.jl"; jm: "aw.jm"; jn: "aw.jn"; jo: "aw.jo"; jp: "aw.jp"; jq: "aw.jq"; jr: "aw.jr"; js: "aw.js"; jt: "aw.jt"; ju: "aw.ju"; jv: "aw.jv"; jw: "aw.jw"; jx: "aw.jx"; jy: "aw.jy"; jz: "aw.jz"; ka: "aw.ka"; kb: "aw.kb"; kc: "aw.kc"; kd: "aw.kd"; ke: "aw.ke"; kf: "aw.kf"; kg: "aw.kg"; kh: "aw.kh"; ki: "aw.ki"; kj: "aw.kj"; kk: "aw.kk"; kl: "aw.kl"; km: "aw.km"; kn: "aw.kn"; ko: "aw.ko"; kp: "aw.kp"; kq: "aw.kq"; kr: "aw.kr"; ks: "aw.ks"; kt: "aw.kt"; ku: "aw.ku"; kv: "aw.kv"; kw: "aw.kw"; kx: "aw.kx"; ky: "aw.ky"; kz: "aw.kz"; la: "aw.la"; lb: "aw.lb"; lc: "aw.lc"; ld: "aw.ld"; le: "aw.le"; lf: "aw.lf"; lg: "aw.lg"; lh: "aw.lh"; li: "aw.li"; lj: "aw.lj"; lk: "aw.lk"; ll: "aw.ll"; lm: "aw.lm"; ln: "aw.ln"; lo: "aw.lo"; lp: "aw.lp"; lq: "aw.lq"; lr: "aw.lr"; ls: "aw.ls"; lt: "aw.lt"; lu: "aw.lu"; lv: "aw.lv"; lw: "aw.lw"; lx: "aw.lx"; ly: "aw.ly"; lz: "aw.lz"; ma: "aw.ma"; mb: "aw.mb"; mc: "aw.mc"; md: "aw.md"; me: "aw.me"; mf: "aw.mf"; mg: "aw.mg"; mh: "aw.mh"; mi: "aw.mi"; mj: "aw.mj"; mk: "aw.mk"; ml: "aw.ml"; mm: "aw.mm"; mn: "aw.mn"; mo: "aw.mo"; mp: "aw.mp"; mq: "aw.mq"; mr: "aw.mr"; ms: "aw.ms"; mt: "aw.mt"; mu: "aw.mu"; mv: "aw.mv"; mw: "aw.mw"; mx: "aw.mx"; my: "aw.my"; mz: "aw.mz"; na: "aw.na"; nb: "aw.nb"; nc: "aw.nc"; nd: "aw.nd"; ne: "aw.ne"; nf: "aw.nf"; ng: "aw.ng"; nh: "aw.nh"; ni: "aw.ni"; nj: "aw.nj"; nk: "aw.nk"; nl: "aw.nl"; nm: "aw.nm"; nn: "aw.nn"; no: "aw.no"; np: "aw.np"; nq: "aw.nq"; nr: "aw.nr"; ns: "aw.ns"; nt: "aw.nt"; nu: "aw.nu"; nv: "aw.nv"; nw: "aw.nw"; nx: "aw.nx"; ny: "aw.ny"; nz: "aw.nz"; oa: "aw.oa"; ob: "aw.ob"; oc: "aw.oc"; od: "aw.od"; oe: "aw.oe"; of: "aw.of"; og: "aw.og"; oh: "aw.oh"; oi: "aw.oi"; oj: "aw.oj"; ok: "aw.ok"; ol: "aw.ol"; om: "aw.om"; on: "aw.on"; oo: "aw.oo"; op: "aw.op"; oq: "aw.oq"; or: "aw.or"; os: "aw.os"; ot: "aw.ot"; ou: "aw.ou"; ov: "aw.ov"; ow: "aw.ow"; ox: "aw.ox"; oy: "aw.oy"; oz: "aw.oz"; pa: "aw.pa"; pb: "aw.pb"; pc: "aw.pc"; pd: "aw.pd"; pe: "aw.pe"; pf: "aw.pf"; pg: "aw.pg"; ph: "aw.ph"; pi: "aw.pi"; pj: "aw.pj"; pk: "aw.pk"; pl: "aw.pl"; pm: "aw.pm"; pn: "aw.pn"; po: "aw.po"; pp: "aw.pp"; pq: "aw.pq"; pr: "aw.pr"; ps: "aw.ps"; pt: "aw.pt"; pu: "aw.pu"; pv: "aw.pv"; pw: "aw.pw"; px: "aw.px"; py: "aw.py"; pz: "aw.pz"; qa: "aw.qa"; qb: "aw.qb"; qc: "aw.qc"; qd: "aw.qd"; qe: "aw.qe"; qf: "aw.qf"; qg: "aw.qg"; qh: "aw.qh"; qi: "aw.qi"; qj: "aw.qj"; qk: "aw.qk"; ql: "aw.ql"; qm: "aw.qm"; qn: "aw.qn"; qo: "aw.qo"; qp: "aw.qp"; qq: "aw.qq"; qr: "aw.qr"; qs: "aw.qs"; qt: "aw.qt"; qu: "aw.qu"; qv: "aw.qv"; qw: "aw.qw"; qx: "aw.qx"; qy: "aw.qy"; qz: "aw.qz"; ra: "aw.ra"; rb: "aw.rb"; rc: "aw.rc"; rd: "aw.rd"; re: "aw.re"; rf: "aw.rf"; rg: "aw.rg"; rh: "aw.rh"; ri: "aw.ri"; rj: "aw.rj"; rk: "aw.rk"; rl: "aw.rl"; rm: "aw.rm"; rn: "aw.rn"; ro: "aw.ro"; rp: "aw.rp"; rq: "aw.rq"; rr: "aw.rr"; rs: "aw.rs"; rt: "aw.rt"; ru: "aw.ru"; rv: "aw.rv"; rw: "aw.rw"; rx: "aw.rx"; ry: "aw.ry"; rz: "aw.rz"; sa: "aw.sa"; sb: "aw.sb"; sc: "aw.sc"; sd: "aw.sd"; se: "aw.se"; sf: "aw.sf"; sg: "aw.sg"; sh: "aw.sh"; si: "aw.si"; sj: "aw.sj"; sk: "aw.sk"; sl: "aw.sl"; sm: "aw.sm"; sn: "aw.sn"; so: "aw.so"; sp: "aw.sp"; sq: "aw.sq"; sr: "aw.sr"; ss: "aw.ss"; st: "aw.st"; su: "aw.su"; sv: "aw.sv"; sw: "aw.sw"; sx: "aw.sx"; sy: "aw.sy"; sz: "aw.sz"; ta: "aw.ta"; tb: "aw.tb"; tc: "aw.tc"; td: "aw.td"; te: "aw.te"; tf: "aw.tf"; tg: "aw.tg"; th: "aw.th"; ti: "aw.ti"; tj: "aw.tj"; tk: "aw.tk"; tl: "aw.tl"; tm: "aw.tm"; tn: "aw.tn"; to: "aw.to"; tp: "aw.tp"; tq: "aw.tq"; tr: "aw.tr"; ts: "aw.ts"; tt: "aw.tt"; tu: "aw.tu"; tv: "aw.tv"; tw: "aw.tw"; tx: "aw.tx"; ty: "aw.ty"; tz: "aw.tz"; ua: "aw.ua"; ub: "aw.ub"; uc: "aw.uc"; ud: "aw.ud"; ue: "aw.ue"; uf: "aw.uf"; ug: "aw.ug"; uh: "aw.uh"; ui: "aw.ui"; uj: "aw.uj"; uk: "aw.uk"; ul: "aw.ul"; um: "aw.um"; un: "aw.un"; uo: "aw.uo"; up: "aw.up"; uq: "aw.uq"; ur: "aw.ur"; us: "aw.us"; ut: "aw.ut"; uu: "aw.uu"; uv: "aw.uv"; uw: "aw.uw"; ux: "aw.ux"; uy: "aw.uy"; uz: "aw.uz"; va: "aw.va"; vb: "aw.vb"; vc: "aw.vc"; vd: "aw.vd"; ve: "aw.ve"; vf: "aw.vf"; vg: "aw.vg"; vh: "aw.vh"; vi: "aw.vi"; vj: "aw.vj"; vk: "aw.vk"; vl: "aw.vl"; vm: "aw.vm"; vn: "aw.vn"; vo: "aw.vo"; vp: "aw.vp"; vq: "aw.vq"; vr: "aw.vr"; vs: "aw.vs"; vt: "aw.vt"; vu: "aw.vu"; vv: "aw.vv"; vw: "aw.vw"; vx: "aw.vx"; vy: "aw.vy"; vz: "aw.vz"; wa: "aw.wa"; wb: "aw.wb"; wc: "aw.wc"; wd: "aw.wd"; we: "aw.we"; wf: "aw.wf"; wg: "aw.wg"; wh: "aw.wh"; wi: "aw.wi"; wj: "aw.wj"; wk: "aw.wk"; wl: "aw.wl"; wm: "aw.wm"; wn: "aw.wn"; wo: "aw.wo"; wp: "aw.wp"; wq: "aw.wq"; wr: "aw.wr"; ws: "aw.ws"; wt: "aw.wt"; wu: "aw.wu"; wv: "aw.wv"; ww: "aw.ww"; wx: "aw.wx"; wy: "aw.wy"; wz: "aw.wz"; xa: "aw.xa"; xb: "aw.xb"; xc: "aw.xc"; xd: "aw.xd"; xe: "aw.xe"; xf: "aw.xf"; xg: "aw.xg"; xh: "aw.xh"; xi: "aw.xi"; xj: "aw.xj"; xk: "aw.xk"; xl: "aw.xl"; xm: "aw.xm"; xn: "aw.xn"; xo: "aw.xo"; xp: "aw.xp"; xq: "aw.xq"; xr: "aw.xr"; xs: "aw.xs"; xt: "aw.xt"; xu: "aw.xu"; xv: "aw.xv"; xw: "aw.xw"; xx: "aw.xx"; xy: "aw.xy"; xz: "aw.xz"; ya: "aw.ya"; yb: "aw.yb"; yc: "aw.yc"; yd: "aw.yd"; ye: "aw.ye"; yf: "aw.yf"; yg: "aw.yg"; yh: "aw.yh"; yi: "aw.yi"; yj: "aw.yj"; yk: "aw.yk"; yl: "aw.yl"; ym: "aw.ym"; yn: "aw.yn"; yo: "aw.yo"; yp: "aw.yp"; yq: "aw.yq"; yr: "aw.yr"; ys: "aw.ys"; yt: "aw.yt"; yu: "aw.yu"; yv: "aw.yv"; yw: "aw.yw"; yx: "aw.yx"; yy: "aw.yy"; yz: "aw.yz"; za: "aw.za"; zb: "aw.zb"; zc: "aw.zc"; zd: "aw.zd"; ze: "aw.ze"; zf: "aw.zf"; zg: "aw.zg"; zh: "aw.zh"; zi: "aw.zi"; zj: "aw.zj"; zk: "aw.zk"; zl: "aw.zl"; zm: "aw.zm"; zn: "aw.zn"; zo: "aw.zo"; zp: "aw.zp"; zq: "aw.zq"; zr: "aw.zr"; zs: "aw.zs"; zt: "aw.zt"; zu: "aw.zu"; zv: "aw.zv"; zw: "aw.zw"; zx: "aw.zx"; zy: "aw.zy"; zz: "aw.zz"; }; ax: { aa: "ax.aa"; ab: "ax.ab"; ac: "ax.ac"; ad: "ax.ad"; ae: "ax.ae"; af: "ax.af"; ag: "ax.ag"; ah: "ax.ah"; ai: "ax.ai"; aj: "ax.aj"; ak: "ax.ak"; al: "ax.al"; am: "ax.am"; an: "ax.an"; ao: "ax.ao"; ap: "ax.ap"; aq: "ax.aq"; ar: "ax.ar"; as: "ax.as"; at: "ax.at"; au: "ax.au"; av: "ax.av"; aw: "ax.aw"; ax: "ax.ax"; ay: "ax.ay"; az: "ax.az"; ba: "ax.ba"; bb: "ax.bb"; bc: "ax.bc"; bd: "ax.bd"; be: "ax.be"; bf: "ax.bf"; bg: "ax.bg"; bh: "ax.bh"; bi: "ax.bi"; bj: "ax.bj"; bk: "ax.bk"; bl: "ax.bl"; bm: "ax.bm"; bn: "ax.bn"; bo: "ax.bo"; bp: "ax.bp"; bq: "ax.bq"; br: "ax.br"; bs: "ax.bs"; bt: "ax.bt"; bu: "ax.bu"; bv: "ax.bv"; bw: "ax.bw"; bx: "ax.bx"; by: "ax.by"; bz: "ax.bz"; ca: "ax.ca"; cb: "ax.cb"; cc: "ax.cc"; cd: "ax.cd"; ce: "ax.ce"; cf: "ax.cf"; cg: "ax.cg"; ch: "ax.ch"; ci: "ax.ci"; cj: "ax.cj"; ck: "ax.ck"; cl: "ax.cl"; cm: "ax.cm"; cn: "ax.cn"; co: "ax.co"; cp: "ax.cp"; cq: "ax.cq"; cr: "ax.cr"; cs: "ax.cs"; ct: "ax.ct"; cu: "ax.cu"; cv: "ax.cv"; cw: "ax.cw"; cx: "ax.cx"; cy: "ax.cy"; cz: "ax.cz"; da: "ax.da"; db: "ax.db"; dc: "ax.dc"; dd: "ax.dd"; de: "ax.de"; df: "ax.df"; dg: "ax.dg"; dh: "ax.dh"; di: "ax.di"; dj: "ax.dj"; dk: "ax.dk"; dl: "ax.dl"; dm: "ax.dm"; dn: "ax.dn"; do: "ax.do"; dp: "ax.dp"; dq: "ax.dq"; dr: "ax.dr"; ds: "ax.ds"; dt: "ax.dt"; du: "ax.du"; dv: "ax.dv"; dw: "ax.dw"; dx: "ax.dx"; dy: "ax.dy"; dz: "ax.dz"; ea: "ax.ea"; eb: "ax.eb"; ec: "ax.ec"; ed: "ax.ed"; ee: "ax.ee"; ef: "ax.ef"; eg: "ax.eg"; eh: "ax.eh"; ei: "ax.ei"; ej: "ax.ej"; ek: "ax.ek"; el: "ax.el"; em: "ax.em"; en: "ax.en"; eo: "ax.eo"; ep: "ax.ep"; eq: "ax.eq"; er: "ax.er"; es: "ax.es"; et: "ax.et"; eu: "ax.eu"; ev: "ax.ev"; ew: "ax.ew"; ex: "ax.ex"; ey: "ax.ey"; ez: "ax.ez"; fa: "ax.fa"; fb: "ax.fb"; fc: "ax.fc"; fd: "ax.fd"; fe: "ax.fe"; ff: "ax.ff"; fg: "ax.fg"; fh: "ax.fh"; fi: "ax.fi"; fj: "ax.fj"; fk: "ax.fk"; fl: "ax.fl"; fm: "ax.fm"; fn: "ax.fn"; fo: "ax.fo"; fp: "ax.fp"; fq: "ax.fq"; fr: "ax.fr"; fs: "ax.fs"; ft: "ax.ft"; fu: "ax.fu"; fv: "ax.fv"; fw: "ax.fw"; fx: "ax.fx"; fy: "ax.fy"; fz: "ax.fz"; ga: "ax.ga"; gb: "ax.gb"; gc: "ax.gc"; gd: "ax.gd"; ge: "ax.ge"; gf: "ax.gf"; gg: "ax.gg"; gh: "ax.gh"; gi: "ax.gi"; gj: "ax.gj"; gk: "ax.gk"; gl: "ax.gl"; gm: "ax.gm"; gn: "ax.gn"; go: "ax.go"; gp: "ax.gp"; gq: "ax.gq"; gr: "ax.gr"; gs: "ax.gs"; gt: "ax.gt"; gu: "ax.gu"; gv: "ax.gv"; gw: "ax.gw"; gx: "ax.gx"; gy: "ax.gy"; gz: "ax.gz"; ha: "ax.ha"; hb: "ax.hb"; hc: "ax.hc"; hd: "ax.hd"; he: "ax.he"; hf: "ax.hf"; hg: "ax.hg"; hh: "ax.hh"; hi: "ax.hi"; hj: "ax.hj"; hk: "ax.hk"; hl: "ax.hl"; hm: "ax.hm"; hn: "ax.hn"; ho: "ax.ho"; hp: "ax.hp"; hq: "ax.hq"; hr: "ax.hr"; hs: "ax.hs"; ht: "ax.ht"; hu: "ax.hu"; hv: "ax.hv"; hw: "ax.hw"; hx: "ax.hx"; hy: "ax.hy"; hz: "ax.hz"; ia: "ax.ia"; ib: "ax.ib"; ic: "ax.ic"; id: "ax.id"; ie: "ax.ie"; if: "ax.if"; ig: "ax.ig"; ih: "ax.ih"; ii: "ax.ii"; ij: "ax.ij"; ik: "ax.ik"; il: "ax.il"; im: "ax.im"; in: "ax.in"; io: "ax.io"; ip: "ax.ip"; iq: "ax.iq"; ir: "ax.ir"; is: "ax.is"; it: "ax.it"; iu: "ax.iu"; iv: "ax.iv"; iw: "ax.iw"; ix: "ax.ix"; iy: "ax.iy"; iz: "ax.iz"; ja: "ax.ja"; jb: "ax.jb"; jc: "ax.jc"; jd: "ax.jd"; je: "ax.je"; jf: "ax.jf"; jg: "ax.jg"; jh: "ax.jh"; ji: "ax.ji"; jj: "ax.jj"; jk: "ax.jk"; jl: "ax.jl"; jm: "ax.jm"; jn: "ax.jn"; jo: "ax.jo"; jp: "ax.jp"; jq: "ax.jq"; jr: "ax.jr"; js: "ax.js"; jt: "ax.jt"; ju: "ax.ju"; jv: "ax.jv"; jw: "ax.jw"; jx: "ax.jx"; jy: "ax.jy"; jz: "ax.jz"; ka: "ax.ka"; kb: "ax.kb"; kc: "ax.kc"; kd: "ax.kd"; ke: "ax.ke"; kf: "ax.kf"; kg: "ax.kg"; kh: "ax.kh"; ki: "ax.ki"; kj: "ax.kj"; kk: "ax.kk"; kl: "ax.kl"; km: "ax.km"; kn: "ax.kn"; ko: "ax.ko"; kp: "ax.kp"; kq: "ax.kq"; kr: "ax.kr"; ks: "ax.ks"; kt: "ax.kt"; ku: "ax.ku"; kv: "ax.kv"; kw: "ax.kw"; kx: "ax.kx"; ky: "ax.ky"; kz: "ax.kz"; la: "ax.la"; lb: "ax.lb"; lc: "ax.lc"; ld: "ax.ld"; le: "ax.le"; lf: "ax.lf"; lg: "ax.lg"; lh: "ax.lh"; li: "ax.li"; lj: "ax.lj"; lk: "ax.lk"; ll: "ax.ll"; lm: "ax.lm"; ln: "ax.ln"; lo: "ax.lo"; lp: "ax.lp"; lq: "ax.lq"; lr: "ax.lr"; ls: "ax.ls"; lt: "ax.lt"; lu: "ax.lu"; lv: "ax.lv"; lw: "ax.lw"; lx: "ax.lx"; ly: "ax.ly"; lz: "ax.lz"; ma: "ax.ma"; mb: "ax.mb"; mc: "ax.mc"; md: "ax.md"; me: "ax.me"; mf: "ax.mf"; mg: "ax.mg"; mh: "ax.mh"; mi: "ax.mi"; mj: "ax.mj"; mk: "ax.mk"; ml: "ax.ml"; mm: "ax.mm"; mn: "ax.mn"; mo: "ax.mo"; mp: "ax.mp"; mq: "ax.mq"; mr: "ax.mr"; ms: "ax.ms"; mt: "ax.mt"; mu: "ax.mu"; mv: "ax.mv"; mw: "ax.mw"; mx: "ax.mx"; my: "ax.my"; mz: "ax.mz"; na: "ax.na"; nb: "ax.nb"; nc: "ax.nc"; nd: "ax.nd"; ne: "ax.ne"; nf: "ax.nf"; ng: "ax.ng"; nh: "ax.nh"; ni: "ax.ni"; nj: "ax.nj"; nk: "ax.nk"; nl: "ax.nl"; nm: "ax.nm"; nn: "ax.nn"; no: "ax.no"; np: "ax.np"; nq: "ax.nq"; nr: "ax.nr"; ns: "ax.ns"; nt: "ax.nt"; nu: "ax.nu"; nv: "ax.nv"; nw: "ax.nw"; nx: "ax.nx"; ny: "ax.ny"; nz: "ax.nz"; oa: "ax.oa"; ob: "ax.ob"; oc: "ax.oc"; od: "ax.od"; oe: "ax.oe"; of: "ax.of"; og: "ax.og"; oh: "ax.oh"; oi: "ax.oi"; oj: "ax.oj"; ok: "ax.ok"; ol: "ax.ol"; om: "ax.om"; on: "ax.on"; oo: "ax.oo"; op: "ax.op"; oq: "ax.oq"; or: "ax.or"; os: "ax.os"; ot: "ax.ot"; ou: "ax.ou"; ov: "ax.ov"; ow: "ax.ow"; ox: "ax.ox"; oy: "ax.oy"; oz: "ax.oz"; pa: "ax.pa"; pb: "ax.pb"; pc: "ax.pc"; pd: "ax.pd"; pe: "ax.pe"; pf: "ax.pf"; pg: "ax.pg"; ph: "ax.ph"; pi: "ax.pi"; pj: "ax.pj"; pk: "ax.pk"; pl: "ax.pl"; pm: "ax.pm"; pn: "ax.pn"; po: "ax.po"; pp: "ax.pp"; pq: "ax.pq"; pr: "ax.pr"; ps: "ax.ps"; pt: "ax.pt"; pu: "ax.pu"; pv: "ax.pv"; pw: "ax.pw"; px: "ax.px"; py: "ax.py"; pz: "ax.pz"; qa: "ax.qa"; qb: "ax.qb"; qc: "ax.qc"; qd: "ax.qd"; qe: "ax.qe"; qf: "ax.qf"; qg: "ax.qg"; qh: "ax.qh"; qi: "ax.qi"; qj: "ax.qj"; qk: "ax.qk"; ql: "ax.ql"; qm: "ax.qm"; qn: "ax.qn"; qo: "ax.qo"; qp: "ax.qp"; qq: "ax.qq"; qr: "ax.qr"; qs: "ax.qs"; qt: "ax.qt"; qu: "ax.qu"; qv: "ax.qv"; qw: "ax.qw"; qx: "ax.qx"; qy: "ax.qy"; qz: "ax.qz"; ra: "ax.ra"; rb: "ax.rb"; rc: "ax.rc"; rd: "ax.rd"; re: "ax.re"; rf: "ax.rf"; rg: "ax.rg"; rh: "ax.rh"; ri: "ax.ri"; rj: "ax.rj"; rk: "ax.rk"; rl: "ax.rl"; rm: "ax.rm"; rn: "ax.rn"; ro: "ax.ro"; rp: "ax.rp"; rq: "ax.rq"; rr: "ax.rr"; rs: "ax.rs"; rt: "ax.rt"; ru: "ax.ru"; rv: "ax.rv"; rw: "ax.rw"; rx: "ax.rx"; ry: "ax.ry"; rz: "ax.rz"; sa: "ax.sa"; sb: "ax.sb"; sc: "ax.sc"; sd: "ax.sd"; se: "ax.se"; sf: "ax.sf"; sg: "ax.sg"; sh: "ax.sh"; si: "ax.si"; sj: "ax.sj"; sk: "ax.sk"; sl: "ax.sl"; sm: "ax.sm"; sn: "ax.sn"; so: "ax.so"; sp: "ax.sp"; sq: "ax.sq"; sr: "ax.sr"; ss: "ax.ss"; st: "ax.st"; su: "ax.su"; sv: "ax.sv"; sw: "ax.sw"; sx: "ax.sx"; sy: "ax.sy"; sz: "ax.sz"; ta: "ax.ta"; tb: "ax.tb"; tc: "ax.tc"; td: "ax.td"; te: "ax.te"; tf: "ax.tf"; tg: "ax.tg"; th: "ax.th"; ti: "ax.ti"; tj: "ax.tj"; tk: "ax.tk"; tl: "ax.tl"; tm: "ax.tm"; tn: "ax.tn"; to: "ax.to"; tp: "ax.tp"; tq: "ax.tq"; tr: "ax.tr"; ts: "ax.ts"; tt: "ax.tt"; tu: "ax.tu"; tv: "ax.tv"; tw: "ax.tw"; tx: "ax.tx"; ty: "ax.ty"; tz: "ax.tz"; ua: "ax.ua"; ub: "ax.ub"; uc: "ax.uc"; ud: "ax.ud"; ue: "ax.ue"; uf: "ax.uf"; ug: "ax.ug"; uh: "ax.uh"; ui: "ax.ui"; uj: "ax.uj"; uk: "ax.uk"; ul: "ax.ul"; um: "ax.um"; un: "ax.un"; uo: "ax.uo"; up: "ax.up"; uq: "ax.uq"; ur: "ax.ur"; us: "ax.us"; ut: "ax.ut"; uu: "ax.uu"; uv: "ax.uv"; uw: "ax.uw"; ux: "ax.ux"; uy: "ax.uy"; uz: "ax.uz"; va: "ax.va"; vb: "ax.vb"; vc: "ax.vc"; vd: "ax.vd"; ve: "ax.ve"; vf: "ax.vf"; vg: "ax.vg"; vh: "ax.vh"; vi: "ax.vi"; vj: "ax.vj"; vk: "ax.vk"; vl: "ax.vl"; vm: "ax.vm"; vn: "ax.vn"; vo: "ax.vo"; vp: "ax.vp"; vq: "ax.vq"; vr: "ax.vr"; vs: "ax.vs"; vt: "ax.vt"; vu: "ax.vu"; vv: "ax.vv"; vw: "ax.vw"; vx: "ax.vx"; vy: "ax.vy"; vz: "ax.vz"; wa: "ax.wa"; wb: "ax.wb"; wc: "ax.wc"; wd: "ax.wd"; we: "ax.we"; wf: "ax.wf"; wg: "ax.wg"; wh: "ax.wh"; wi: "ax.wi"; wj: "ax.wj"; wk: "ax.wk"; wl: "ax.wl"; wm: "ax.wm"; wn: "ax.wn"; wo: "ax.wo"; wp: "ax.wp"; wq: "ax.wq"; wr: "ax.wr"; ws: "ax.ws"; wt: "ax.wt"; wu: "ax.wu"; wv: "ax.wv"; ww: "ax.ww"; wx: "ax.wx"; wy: "ax.wy"; wz: "ax.wz"; xa: "ax.xa"; xb: "ax.xb"; xc: "ax.xc"; xd: "ax.xd"; xe: "ax.xe"; xf: "ax.xf"; xg: "ax.xg"; xh: "ax.xh"; xi: "ax.xi"; xj: "ax.xj"; xk: "ax.xk"; xl: "ax.xl"; xm: "ax.xm"; xn: "ax.xn"; xo: "ax.xo"; xp: "ax.xp"; xq: "ax.xq"; xr: "ax.xr"; xs: "ax.xs"; xt: "ax.xt"; xu: "ax.xu"; xv: "ax.xv"; xw: "ax.xw"; xx: "ax.xx"; xy: "ax.xy"; xz: "ax.xz"; ya: "ax.ya"; yb: "ax.yb"; yc: "ax.yc"; yd: "ax.yd"; ye: "ax.ye"; yf: "ax.yf"; yg: "ax.yg"; yh: "ax.yh"; yi: "ax.yi"; yj: "ax.yj"; yk: "ax.yk"; yl: "ax.yl"; ym: "ax.ym"; yn: "ax.yn"; yo: "ax.yo"; yp: "ax.yp"; yq: "ax.yq"; yr: "ax.yr"; ys: "ax.ys"; yt: "ax.yt"; yu: "ax.yu"; yv: "ax.yv"; yw: "ax.yw"; yx: "ax.yx"; yy: "ax.yy"; yz: "ax.yz"; za: "ax.za"; zb: "ax.zb"; zc: "ax.zc"; zd: "ax.zd"; ze: "ax.ze"; zf: "ax.zf"; zg: "ax.zg"; zh: "ax.zh"; zi: "ax.zi"; zj: "ax.zj"; zk: "ax.zk"; zl: "ax.zl"; zm: "ax.zm"; zn: "ax.zn"; zo: "ax.zo"; zp: "ax.zp"; zq: "ax.zq"; zr: "ax.zr"; zs: "ax.zs"; zt: "ax.zt"; zu: "ax.zu"; zv: "ax.zv"; zw: "ax.zw"; zx: "ax.zx"; zy: "ax.zy"; zz: "ax.zz"; }; ay: { aa: "ay.aa"; ab: "ay.ab"; ac: "ay.ac"; ad: "ay.ad"; ae: "ay.ae"; af: "ay.af"; ag: "ay.ag"; ah: "ay.ah"; ai: "ay.ai"; aj: "ay.aj"; ak: "ay.ak"; al: "ay.al"; am: "ay.am"; an: "ay.an"; ao: "ay.ao"; ap: "ay.ap"; aq: "ay.aq"; ar: "ay.ar"; as: "ay.as"; at: "ay.at"; au: "ay.au"; av: "ay.av"; aw: "ay.aw"; ax: "ay.ax"; ay: "ay.ay"; az: "ay.az"; ba: "ay.ba"; bb: "ay.bb"; bc: "ay.bc"; bd: "ay.bd"; be: "ay.be"; bf: "ay.bf"; bg: "ay.bg"; bh: "ay.bh"; bi: "ay.bi"; bj: "ay.bj"; bk: "ay.bk"; bl: "ay.bl"; bm: "ay.bm"; bn: "ay.bn"; bo: "ay.bo"; bp: "ay.bp"; bq: "ay.bq"; br: "ay.br"; bs: "ay.bs"; bt: "ay.bt"; bu: "ay.bu"; bv: "ay.bv"; bw: "ay.bw"; bx: "ay.bx"; by: "ay.by"; bz: "ay.bz"; ca: "ay.ca"; cb: "ay.cb"; cc: "ay.cc"; cd: "ay.cd"; ce: "ay.ce"; cf: "ay.cf"; cg: "ay.cg"; ch: "ay.ch"; ci: "ay.ci"; cj: "ay.cj"; ck: "ay.ck"; cl: "ay.cl"; cm: "ay.cm"; cn: "ay.cn"; co: "ay.co"; cp: "ay.cp"; cq: "ay.cq"; cr: "ay.cr"; cs: "ay.cs"; ct: "ay.ct"; cu: "ay.cu"; cv: "ay.cv"; cw: "ay.cw"; cx: "ay.cx"; cy: "ay.cy"; cz: "ay.cz"; da: "ay.da"; db: "ay.db"; dc: "ay.dc"; dd: "ay.dd"; de: "ay.de"; df: "ay.df"; dg: "ay.dg"; dh: "ay.dh"; di: "ay.di"; dj: "ay.dj"; dk: "ay.dk"; dl: "ay.dl"; dm: "ay.dm"; dn: "ay.dn"; do: "ay.do"; dp: "ay.dp"; dq: "ay.dq"; dr: "ay.dr"; ds: "ay.ds"; dt: "ay.dt"; du: "ay.du"; dv: "ay.dv"; dw: "ay.dw"; dx: "ay.dx"; dy: "ay.dy"; dz: "ay.dz"; ea: "ay.ea"; eb: "ay.eb"; ec: "ay.ec"; ed: "ay.ed"; ee: "ay.ee"; ef: "ay.ef"; eg: "ay.eg"; eh: "ay.eh"; ei: "ay.ei"; ej: "ay.ej"; ek: "ay.ek"; el: "ay.el"; em: "ay.em"; en: "ay.en"; eo: "ay.eo"; ep: "ay.ep"; eq: "ay.eq"; er: "ay.er"; es: "ay.es"; et: "ay.et"; eu: "ay.eu"; ev: "ay.ev"; ew: "ay.ew"; ex: "ay.ex"; ey: "ay.ey"; ez: "ay.ez"; fa: "ay.fa"; fb: "ay.fb"; fc: "ay.fc"; fd: "ay.fd"; fe: "ay.fe"; ff: "ay.ff"; fg: "ay.fg"; fh: "ay.fh"; fi: "ay.fi"; fj: "ay.fj"; fk: "ay.fk"; fl: "ay.fl"; fm: "ay.fm"; fn: "ay.fn"; fo: "ay.fo"; fp: "ay.fp"; fq: "ay.fq"; fr: "ay.fr"; fs: "ay.fs"; ft: "ay.ft"; fu: "ay.fu"; fv: "ay.fv"; fw: "ay.fw"; fx: "ay.fx"; fy: "ay.fy"; fz: "ay.fz"; ga: "ay.ga"; gb: "ay.gb"; gc: "ay.gc"; gd: "ay.gd"; ge: "ay.ge"; gf: "ay.gf"; gg: "ay.gg"; gh: "ay.gh"; gi: "ay.gi"; gj: "ay.gj"; gk: "ay.gk"; gl: "ay.gl"; gm: "ay.gm"; gn: "ay.gn"; go: "ay.go"; gp: "ay.gp"; gq: "ay.gq"; gr: "ay.gr"; gs: "ay.gs"; gt: "ay.gt"; gu: "ay.gu"; gv: "ay.gv"; gw: "ay.gw"; gx: "ay.gx"; gy: "ay.gy"; gz: "ay.gz"; ha: "ay.ha"; hb: "ay.hb"; hc: "ay.hc"; hd: "ay.hd"; he: "ay.he"; hf: "ay.hf"; hg: "ay.hg"; hh: "ay.hh"; hi: "ay.hi"; hj: "ay.hj"; hk: "ay.hk"; hl: "ay.hl"; hm: "ay.hm"; hn: "ay.hn"; ho: "ay.ho"; hp: "ay.hp"; hq: "ay.hq"; hr: "ay.hr"; hs: "ay.hs"; ht: "ay.ht"; hu: "ay.hu"; hv: "ay.hv"; hw: "ay.hw"; hx: "ay.hx"; hy: "ay.hy"; hz: "ay.hz"; ia: "ay.ia"; ib: "ay.ib"; ic: "ay.ic"; id: "ay.id"; ie: "ay.ie"; if: "ay.if"; ig: "ay.ig"; ih: "ay.ih"; ii: "ay.ii"; ij: "ay.ij"; ik: "ay.ik"; il: "ay.il"; im: "ay.im"; in: "ay.in"; io: "ay.io"; ip: "ay.ip"; iq: "ay.iq"; ir: "ay.ir"; is: "ay.is"; it: "ay.it"; iu: "ay.iu"; iv: "ay.iv"; iw: "ay.iw"; ix: "ay.ix"; iy: "ay.iy"; iz: "ay.iz"; ja: "ay.ja"; jb: "ay.jb"; jc: "ay.jc"; jd: "ay.jd"; je: "ay.je"; jf: "ay.jf"; jg: "ay.jg"; jh: "ay.jh"; ji: "ay.ji"; jj: "ay.jj"; jk: "ay.jk"; jl: "ay.jl"; jm: "ay.jm"; jn: "ay.jn"; jo: "ay.jo"; jp: "ay.jp"; jq: "ay.jq"; jr: "ay.jr"; js: "ay.js"; jt: "ay.jt"; ju: "ay.ju"; jv: "ay.jv"; jw: "ay.jw"; jx: "ay.jx"; jy: "ay.jy"; jz: "ay.jz"; ka: "ay.ka"; kb: "ay.kb"; kc: "ay.kc"; kd: "ay.kd"; ke: "ay.ke"; kf: "ay.kf"; kg: "ay.kg"; kh: "ay.kh"; ki: "ay.ki"; kj: "ay.kj"; kk: "ay.kk"; kl: "ay.kl"; km: "ay.km"; kn: "ay.kn"; ko: "ay.ko"; kp: "ay.kp"; kq: "ay.kq"; kr: "ay.kr"; ks: "ay.ks"; kt: "ay.kt"; ku: "ay.ku"; kv: "ay.kv"; kw: "ay.kw"; kx: "ay.kx"; ky: "ay.ky"; kz: "ay.kz"; la: "ay.la"; lb: "ay.lb"; lc: "ay.lc"; ld: "ay.ld"; le: "ay.le"; lf: "ay.lf"; lg: "ay.lg"; lh: "ay.lh"; li: "ay.li"; lj: "ay.lj"; lk: "ay.lk"; ll: "ay.ll"; lm: "ay.lm"; ln: "ay.ln"; lo: "ay.lo"; lp: "ay.lp"; lq: "ay.lq"; lr: "ay.lr"; ls: "ay.ls"; lt: "ay.lt"; lu: "ay.lu"; lv: "ay.lv"; lw: "ay.lw"; lx: "ay.lx"; ly: "ay.ly"; lz: "ay.lz"; ma: "ay.ma"; mb: "ay.mb"; mc: "ay.mc"; md: "ay.md"; me: "ay.me"; mf: "ay.mf"; mg: "ay.mg"; mh: "ay.mh"; mi: "ay.mi"; mj: "ay.mj"; mk: "ay.mk"; ml: "ay.ml"; mm: "ay.mm"; mn: "ay.mn"; mo: "ay.mo"; mp: "ay.mp"; mq: "ay.mq"; mr: "ay.mr"; ms: "ay.ms"; mt: "ay.mt"; mu: "ay.mu"; mv: "ay.mv"; mw: "ay.mw"; mx: "ay.mx"; my: "ay.my"; mz: "ay.mz"; na: "ay.na"; nb: "ay.nb"; nc: "ay.nc"; nd: "ay.nd"; ne: "ay.ne"; nf: "ay.nf"; ng: "ay.ng"; nh: "ay.nh"; ni: "ay.ni"; nj: "ay.nj"; nk: "ay.nk"; nl: "ay.nl"; nm: "ay.nm"; nn: "ay.nn"; no: "ay.no"; np: "ay.np"; nq: "ay.nq"; nr: "ay.nr"; ns: "ay.ns"; nt: "ay.nt"; nu: "ay.nu"; nv: "ay.nv"; nw: "ay.nw"; nx: "ay.nx"; ny: "ay.ny"; nz: "ay.nz"; oa: "ay.oa"; ob: "ay.ob"; oc: "ay.oc"; od: "ay.od"; oe: "ay.oe"; of: "ay.of"; og: "ay.og"; oh: "ay.oh"; oi: "ay.oi"; oj: "ay.oj"; ok: "ay.ok"; ol: "ay.ol"; om: "ay.om"; on: "ay.on"; oo: "ay.oo"; op: "ay.op"; oq: "ay.oq"; or: "ay.or"; os: "ay.os"; ot: "ay.ot"; ou: "ay.ou"; ov: "ay.ov"; ow: "ay.ow"; ox: "ay.ox"; oy: "ay.oy"; oz: "ay.oz"; pa: "ay.pa"; pb: "ay.pb"; pc: "ay.pc"; pd: "ay.pd"; pe: "ay.pe"; pf: "ay.pf"; pg: "ay.pg"; ph: "ay.ph"; pi: "ay.pi"; pj: "ay.pj"; pk: "ay.pk"; pl: "ay.pl"; pm: "ay.pm"; pn: "ay.pn"; po: "ay.po"; pp: "ay.pp"; pq: "ay.pq"; pr: "ay.pr"; ps: "ay.ps"; pt: "ay.pt"; pu: "ay.pu"; pv: "ay.pv"; pw: "ay.pw"; px: "ay.px"; py: "ay.py"; pz: "ay.pz"; qa: "ay.qa"; qb: "ay.qb"; qc: "ay.qc"; qd: "ay.qd"; qe: "ay.qe"; qf: "ay.qf"; qg: "ay.qg"; qh: "ay.qh"; qi: "ay.qi"; qj: "ay.qj"; qk: "ay.qk"; ql: "ay.ql"; qm: "ay.qm"; qn: "ay.qn"; qo: "ay.qo"; qp: "ay.qp"; qq: "ay.qq"; qr: "ay.qr"; qs: "ay.qs"; qt: "ay.qt"; qu: "ay.qu"; qv: "ay.qv"; qw: "ay.qw"; qx: "ay.qx"; qy: "ay.qy"; qz: "ay.qz"; ra: "ay.ra"; rb: "ay.rb"; rc: "ay.rc"; rd: "ay.rd"; re: "ay.re"; rf: "ay.rf"; rg: "ay.rg"; rh: "ay.rh"; ri: "ay.ri"; rj: "ay.rj"; rk: "ay.rk"; rl: "ay.rl"; rm: "ay.rm"; rn: "ay.rn"; ro: "ay.ro"; rp: "ay.rp"; rq: "ay.rq"; rr: "ay.rr"; rs: "ay.rs"; rt: "ay.rt"; ru: "ay.ru"; rv: "ay.rv"; rw: "ay.rw"; rx: "ay.rx"; ry: "ay.ry"; rz: "ay.rz"; sa: "ay.sa"; sb: "ay.sb"; sc: "ay.sc"; sd: "ay.sd"; se: "ay.se"; sf: "ay.sf"; sg: "ay.sg"; sh: "ay.sh"; si: "ay.si"; sj: "ay.sj"; sk: "ay.sk"; sl: "ay.sl"; sm: "ay.sm"; sn: "ay.sn"; so: "ay.so"; sp: "ay.sp"; sq: "ay.sq"; sr: "ay.sr"; ss: "ay.ss"; st: "ay.st"; su: "ay.su"; sv: "ay.sv"; sw: "ay.sw"; sx: "ay.sx"; sy: "ay.sy"; sz: "ay.sz"; ta: "ay.ta"; tb: "ay.tb"; tc: "ay.tc"; td: "ay.td"; te: "ay.te"; tf: "ay.tf"; tg: "ay.tg"; th: "ay.th"; ti: "ay.ti"; tj: "ay.tj"; tk: "ay.tk"; tl: "ay.tl"; tm: "ay.tm"; tn: "ay.tn"; to: "ay.to"; tp: "ay.tp"; tq: "ay.tq"; tr: "ay.tr"; ts: "ay.ts"; tt: "ay.tt"; tu: "ay.tu"; tv: "ay.tv"; tw: "ay.tw"; tx: "ay.tx"; ty: "ay.ty"; tz: "ay.tz"; ua: "ay.ua"; ub: "ay.ub"; uc: "ay.uc"; ud: "ay.ud"; ue: "ay.ue"; uf: "ay.uf"; ug: "ay.ug"; uh: "ay.uh"; ui: "ay.ui"; uj: "ay.uj"; uk: "ay.uk"; ul: "ay.ul"; um: "ay.um"; un: "ay.un"; uo: "ay.uo"; up: "ay.up"; uq: "ay.uq"; ur: "ay.ur"; us: "ay.us"; ut: "ay.ut"; uu: "ay.uu"; uv: "ay.uv"; uw: "ay.uw"; ux: "ay.ux"; uy: "ay.uy"; uz: "ay.uz"; va: "ay.va"; vb: "ay.vb"; vc: "ay.vc"; vd: "ay.vd"; ve: "ay.ve"; vf: "ay.vf"; vg: "ay.vg"; vh: "ay.vh"; vi: "ay.vi"; vj: "ay.vj"; vk: "ay.vk"; vl: "ay.vl"; vm: "ay.vm"; vn: "ay.vn"; vo: "ay.vo"; vp: "ay.vp"; vq: "ay.vq"; vr: "ay.vr"; vs: "ay.vs"; vt: "ay.vt"; vu: "ay.vu"; vv: "ay.vv"; vw: "ay.vw"; vx: "ay.vx"; vy: "ay.vy"; vz: "ay.vz"; wa: "ay.wa"; wb: "ay.wb"; wc: "ay.wc"; wd: "ay.wd"; we: "ay.we"; wf: "ay.wf"; wg: "ay.wg"; wh: "ay.wh"; wi: "ay.wi"; wj: "ay.wj"; wk: "ay.wk"; wl: "ay.wl"; wm: "ay.wm"; wn: "ay.wn"; wo: "ay.wo"; wp: "ay.wp"; wq: "ay.wq"; wr: "ay.wr"; ws: "ay.ws"; wt: "ay.wt"; wu: "ay.wu"; wv: "ay.wv"; ww: "ay.ww"; wx: "ay.wx"; wy: "ay.wy"; wz: "ay.wz"; xa: "ay.xa"; xb: "ay.xb"; xc: "ay.xc"; xd: "ay.xd"; xe: "ay.xe"; xf: "ay.xf"; xg: "ay.xg"; xh: "ay.xh"; xi: "ay.xi"; xj: "ay.xj"; xk: "ay.xk"; xl: "ay.xl"; xm: "ay.xm"; xn: "ay.xn"; xo: "ay.xo"; xp: "ay.xp"; xq: "ay.xq"; xr: "ay.xr"; xs: "ay.xs"; xt: "ay.xt"; xu: "ay.xu"; xv: "ay.xv"; xw: "ay.xw"; xx: "ay.xx"; xy: "ay.xy"; xz: "ay.xz"; ya: "ay.ya"; yb: "ay.yb"; yc: "ay.yc"; yd: "ay.yd"; ye: "ay.ye"; yf: "ay.yf"; yg: "ay.yg"; yh: "ay.yh"; yi: "ay.yi"; yj: "ay.yj"; yk: "ay.yk"; yl: "ay.yl"; ym: "ay.ym"; yn: "ay.yn"; yo: "ay.yo"; yp: "ay.yp"; yq: "ay.yq"; yr: "ay.yr"; ys: "ay.ys"; yt: "ay.yt"; yu: "ay.yu"; yv: "ay.yv"; yw: "ay.yw"; yx: "ay.yx"; yy: "ay.yy"; yz: "ay.yz"; za: "ay.za"; zb: "ay.zb"; zc: "ay.zc"; zd: "ay.zd"; ze: "ay.ze"; zf: "ay.zf"; zg: "ay.zg"; zh: "ay.zh"; zi: "ay.zi"; zj: "ay.zj"; zk: "ay.zk"; zl: "ay.zl"; zm: "ay.zm"; zn: "ay.zn"; zo: "ay.zo"; zp: "ay.zp"; zq: "ay.zq"; zr: "ay.zr"; zs: "ay.zs"; zt: "ay.zt"; zu: "ay.zu"; zv: "ay.zv"; zw: "ay.zw"; zx: "ay.zx"; zy: "ay.zy"; zz: "ay.zz"; }; az: { aa: "az.aa"; ab: "az.ab"; ac: "az.ac"; ad: "az.ad"; ae: "az.ae"; af: "az.af"; ag: "az.ag"; ah: "az.ah"; ai: "az.ai"; aj: "az.aj"; ak: "az.ak"; al: "az.al"; am: "az.am"; an: "az.an"; ao: "az.ao"; ap: "az.ap"; aq: "az.aq"; ar: "az.ar"; as: "az.as"; at: "az.at"; au: "az.au"; av: "az.av"; aw: "az.aw"; ax: "az.ax"; ay: "az.ay"; az: "az.az"; ba: "az.ba"; bb: "az.bb"; bc: "az.bc"; bd: "az.bd"; be: "az.be"; bf: "az.bf"; bg: "az.bg"; bh: "az.bh"; bi: "az.bi"; bj: "az.bj"; bk: "az.bk"; bl: "az.bl"; bm: "az.bm"; bn: "az.bn"; bo: "az.bo"; bp: "az.bp"; bq: "az.bq"; br: "az.br"; bs: "az.bs"; bt: "az.bt"; bu: "az.bu"; bv: "az.bv"; bw: "az.bw"; bx: "az.bx"; by: "az.by"; bz: "az.bz"; ca: "az.ca"; cb: "az.cb"; cc: "az.cc"; cd: "az.cd"; ce: "az.ce"; cf: "az.cf"; cg: "az.cg"; ch: "az.ch"; ci: "az.ci"; cj: "az.cj"; ck: "az.ck"; cl: "az.cl"; cm: "az.cm"; cn: "az.cn"; co: "az.co"; cp: "az.cp"; cq: "az.cq"; cr: "az.cr"; cs: "az.cs"; ct: "az.ct"; cu: "az.cu"; cv: "az.cv"; cw: "az.cw"; cx: "az.cx"; cy: "az.cy"; cz: "az.cz"; da: "az.da"; db: "az.db"; dc: "az.dc"; dd: "az.dd"; de: "az.de"; df: "az.df"; dg: "az.dg"; dh: "az.dh"; di: "az.di"; dj: "az.dj"; dk: "az.dk"; dl: "az.dl"; dm: "az.dm"; dn: "az.dn"; do: "az.do"; dp: "az.dp"; dq: "az.dq"; dr: "az.dr"; ds: "az.ds"; dt: "az.dt"; du: "az.du"; dv: "az.dv"; dw: "az.dw"; dx: "az.dx"; dy: "az.dy"; dz: "az.dz"; ea: "az.ea"; eb: "az.eb"; ec: "az.ec"; ed: "az.ed"; ee: "az.ee"; ef: "az.ef"; eg: "az.eg"; eh: "az.eh"; ei: "az.ei"; ej: "az.ej"; ek: "az.ek"; el: "az.el"; em: "az.em"; en: "az.en"; eo: "az.eo"; ep: "az.ep"; eq: "az.eq"; er: "az.er"; es: "az.es"; et: "az.et"; eu: "az.eu"; ev: "az.ev"; ew: "az.ew"; ex: "az.ex"; ey: "az.ey"; ez: "az.ez"; fa: "az.fa"; fb: "az.fb"; fc: "az.fc"; fd: "az.fd"; fe: "az.fe"; ff: "az.ff"; fg: "az.fg"; fh: "az.fh"; fi: "az.fi"; fj: "az.fj"; fk: "az.fk"; fl: "az.fl"; fm: "az.fm"; fn: "az.fn"; fo: "az.fo"; fp: "az.fp"; fq: "az.fq"; fr: "az.fr"; fs: "az.fs"; ft: "az.ft"; fu: "az.fu"; fv: "az.fv"; fw: "az.fw"; fx: "az.fx"; fy: "az.fy"; fz: "az.fz"; ga: "az.ga"; gb: "az.gb"; gc: "az.gc"; gd: "az.gd"; ge: "az.ge"; gf: "az.gf"; gg: "az.gg"; gh: "az.gh"; gi: "az.gi"; gj: "az.gj"; gk: "az.gk"; gl: "az.gl"; gm: "az.gm"; gn: "az.gn"; go: "az.go"; gp: "az.gp"; gq: "az.gq"; gr: "az.gr"; gs: "az.gs"; gt: "az.gt"; gu: "az.gu"; gv: "az.gv"; gw: "az.gw"; gx: "az.gx"; gy: "az.gy"; gz: "az.gz"; ha: "az.ha"; hb: "az.hb"; hc: "az.hc"; hd: "az.hd"; he: "az.he"; hf: "az.hf"; hg: "az.hg"; hh: "az.hh"; hi: "az.hi"; hj: "az.hj"; hk: "az.hk"; hl: "az.hl"; hm: "az.hm"; hn: "az.hn"; ho: "az.ho"; hp: "az.hp"; hq: "az.hq"; hr: "az.hr"; hs: "az.hs"; ht: "az.ht"; hu: "az.hu"; hv: "az.hv"; hw: "az.hw"; hx: "az.hx"; hy: "az.hy"; hz: "az.hz"; ia: "az.ia"; ib: "az.ib"; ic: "az.ic"; id: "az.id"; ie: "az.ie"; if: "az.if"; ig: "az.ig"; ih: "az.ih"; ii: "az.ii"; ij: "az.ij"; ik: "az.ik"; il: "az.il"; im: "az.im"; in: "az.in"; io: "az.io"; ip: "az.ip"; iq: "az.iq"; ir: "az.ir"; is: "az.is"; it: "az.it"; iu: "az.iu"; iv: "az.iv"; iw: "az.iw"; ix: "az.ix"; iy: "az.iy"; iz: "az.iz"; ja: "az.ja"; jb: "az.jb"; jc: "az.jc"; jd: "az.jd"; je: "az.je"; jf: "az.jf"; jg: "az.jg"; jh: "az.jh"; ji: "az.ji"; jj: "az.jj"; jk: "az.jk"; jl: "az.jl"; jm: "az.jm"; jn: "az.jn"; jo: "az.jo"; jp: "az.jp"; jq: "az.jq"; jr: "az.jr"; js: "az.js"; jt: "az.jt"; ju: "az.ju"; jv: "az.jv"; jw: "az.jw"; jx: "az.jx"; jy: "az.jy"; jz: "az.jz"; ka: "az.ka"; kb: "az.kb"; kc: "az.kc"; kd: "az.kd"; ke: "az.ke"; kf: "az.kf"; kg: "az.kg"; kh: "az.kh"; ki: "az.ki"; kj: "az.kj"; kk: "az.kk"; kl: "az.kl"; km: "az.km"; kn: "az.kn"; ko: "az.ko"; kp: "az.kp"; kq: "az.kq"; kr: "az.kr"; ks: "az.ks"; kt: "az.kt"; ku: "az.ku"; kv: "az.kv"; kw: "az.kw"; kx: "az.kx"; ky: "az.ky"; kz: "az.kz"; la: "az.la"; lb: "az.lb"; lc: "az.lc"; ld: "az.ld"; le: "az.le"; lf: "az.lf"; lg: "az.lg"; lh: "az.lh"; li: "az.li"; lj: "az.lj"; lk: "az.lk"; ll: "az.ll"; lm: "az.lm"; ln: "az.ln"; lo: "az.lo"; lp: "az.lp"; lq: "az.lq"; lr: "az.lr"; ls: "az.ls"; lt: "az.lt"; lu: "az.lu"; lv: "az.lv"; lw: "az.lw"; lx: "az.lx"; ly: "az.ly"; lz: "az.lz"; ma: "az.ma"; mb: "az.mb"; mc: "az.mc"; md: "az.md"; me: "az.me"; mf: "az.mf"; mg: "az.mg"; mh: "az.mh"; mi: "az.mi"; mj: "az.mj"; mk: "az.mk"; ml: "az.ml"; mm: "az.mm"; mn: "az.mn"; mo: "az.mo"; mp: "az.mp"; mq: "az.mq"; mr: "az.mr"; ms: "az.ms"; mt: "az.mt"; mu: "az.mu"; mv: "az.mv"; mw: "az.mw"; mx: "az.mx"; my: "az.my"; mz: "az.mz"; na: "az.na"; nb: "az.nb"; nc: "az.nc"; nd: "az.nd"; ne: "az.ne"; nf: "az.nf"; ng: "az.ng"; nh: "az.nh"; ni: "az.ni"; nj: "az.nj"; nk: "az.nk"; nl: "az.nl"; nm: "az.nm"; nn: "az.nn"; no: "az.no"; np: "az.np"; nq: "az.nq"; nr: "az.nr"; ns: "az.ns"; nt: "az.nt"; nu: "az.nu"; nv: "az.nv"; nw: "az.nw"; nx: "az.nx"; ny: "az.ny"; nz: "az.nz"; oa: "az.oa"; ob: "az.ob"; oc: "az.oc"; od: "az.od"; oe: "az.oe"; of: "az.of"; og: "az.og"; oh: "az.oh"; oi: "az.oi"; oj: "az.oj"; ok: "az.ok"; ol: "az.ol"; om: "az.om"; on: "az.on"; oo: "az.oo"; op: "az.op"; oq: "az.oq"; or: "az.or"; os: "az.os"; ot: "az.ot"; ou: "az.ou"; ov: "az.ov"; ow: "az.ow"; ox: "az.ox"; oy: "az.oy"; oz: "az.oz"; pa: "az.pa"; pb: "az.pb"; pc: "az.pc"; pd: "az.pd"; pe: "az.pe"; pf: "az.pf"; pg: "az.pg"; ph: "az.ph"; pi: "az.pi"; pj: "az.pj"; pk: "az.pk"; pl: "az.pl"; pm: "az.pm"; pn: "az.pn"; po: "az.po"; pp: "az.pp"; pq: "az.pq"; pr: "az.pr"; ps: "az.ps"; pt: "az.pt"; pu: "az.pu"; pv: "az.pv"; pw: "az.pw"; px: "az.px"; py: "az.py"; pz: "az.pz"; qa: "az.qa"; qb: "az.qb"; qc: "az.qc"; qd: "az.qd"; qe: "az.qe"; qf: "az.qf"; qg: "az.qg"; qh: "az.qh"; qi: "az.qi"; qj: "az.qj"; qk: "az.qk"; ql: "az.ql"; qm: "az.qm"; qn: "az.qn"; qo: "az.qo"; qp: "az.qp"; qq: "az.qq"; qr: "az.qr"; qs: "az.qs"; qt: "az.qt"; qu: "az.qu"; qv: "az.qv"; qw: "az.qw"; qx: "az.qx"; qy: "az.qy"; qz: "az.qz"; ra: "az.ra"; rb: "az.rb"; rc: "az.rc"; rd: "az.rd"; re: "az.re"; rf: "az.rf"; rg: "az.rg"; rh: "az.rh"; ri: "az.ri"; rj: "az.rj"; rk: "az.rk"; rl: "az.rl"; rm: "az.rm"; rn: "az.rn"; ro: "az.ro"; rp: "az.rp"; rq: "az.rq"; rr: "az.rr"; rs: "az.rs"; rt: "az.rt"; ru: "az.ru"; rv: "az.rv"; rw: "az.rw"; rx: "az.rx"; ry: "az.ry"; rz: "az.rz"; sa: "az.sa"; sb: "az.sb"; sc: "az.sc"; sd: "az.sd"; se: "az.se"; sf: "az.sf"; sg: "az.sg"; sh: "az.sh"; si: "az.si"; sj: "az.sj"; sk: "az.sk"; sl: "az.sl"; sm: "az.sm"; sn: "az.sn"; so: "az.so"; sp: "az.sp"; sq: "az.sq"; sr: "az.sr"; ss: "az.ss"; st: "az.st"; su: "az.su"; sv: "az.sv"; sw: "az.sw"; sx: "az.sx"; sy: "az.sy"; sz: "az.sz"; ta: "az.ta"; tb: "az.tb"; tc: "az.tc"; td: "az.td"; te: "az.te"; tf: "az.tf"; tg: "az.tg"; th: "az.th"; ti: "az.ti"; tj: "az.tj"; tk: "az.tk"; tl: "az.tl"; tm: "az.tm"; tn: "az.tn"; to: "az.to"; tp: "az.tp"; tq: "az.tq"; tr: "az.tr"; ts: "az.ts"; tt: "az.tt"; tu: "az.tu"; tv: "az.tv"; tw: "az.tw"; tx: "az.tx"; ty: "az.ty"; tz: "az.tz"; ua: "az.ua"; ub: "az.ub"; uc: "az.uc"; ud: "az.ud"; ue: "az.ue"; uf: "az.uf"; ug: "az.ug"; uh: "az.uh"; ui: "az.ui"; uj: "az.uj"; uk: "az.uk"; ul: "az.ul"; um: "az.um"; un: "az.un"; uo: "az.uo"; up: "az.up"; uq: "az.uq"; ur: "az.ur"; us: "az.us"; ut: "az.ut"; uu: "az.uu"; uv: "az.uv"; uw: "az.uw"; ux: "az.ux"; uy: "az.uy"; uz: "az.uz"; va: "az.va"; vb: "az.vb"; vc: "az.vc"; vd: "az.vd"; ve: "az.ve"; vf: "az.vf"; vg: "az.vg"; vh: "az.vh"; vi: "az.vi"; vj: "az.vj"; vk: "az.vk"; vl: "az.vl"; vm: "az.vm"; vn: "az.vn"; vo: "az.vo"; vp: "az.vp"; vq: "az.vq"; vr: "az.vr"; vs: "az.vs"; vt: "az.vt"; vu: "az.vu"; vv: "az.vv"; vw: "az.vw"; vx: "az.vx"; vy: "az.vy"; vz: "az.vz"; wa: "az.wa"; wb: "az.wb"; wc: "az.wc"; wd: "az.wd"; we: "az.we"; wf: "az.wf"; wg: "az.wg"; wh: "az.wh"; wi: "az.wi"; wj: "az.wj"; wk: "az.wk"; wl: "az.wl"; wm: "az.wm"; wn: "az.wn"; wo: "az.wo"; wp: "az.wp"; wq: "az.wq"; wr: "az.wr"; ws: "az.ws"; wt: "az.wt"; wu: "az.wu"; wv: "az.wv"; ww: "az.ww"; wx: "az.wx"; wy: "az.wy"; wz: "az.wz"; xa: "az.xa"; xb: "az.xb"; xc: "az.xc"; xd: "az.xd"; xe: "az.xe"; xf: "az.xf"; xg: "az.xg"; xh: "az.xh"; xi: "az.xi"; xj: "az.xj"; xk: "az.xk"; xl: "az.xl"; xm: "az.xm"; xn: "az.xn"; xo: "az.xo"; xp: "az.xp"; xq: "az.xq"; xr: "az.xr"; xs: "az.xs"; xt: "az.xt"; xu: "az.xu"; xv: "az.xv"; xw: "az.xw"; xx: "az.xx"; xy: "az.xy"; xz: "az.xz"; ya: "az.ya"; yb: "az.yb"; yc: "az.yc"; yd: "az.yd"; ye: "az.ye"; yf: "az.yf"; yg: "az.yg"; yh: "az.yh"; yi: "az.yi"; yj: "az.yj"; yk: "az.yk"; yl: "az.yl"; ym: "az.ym"; yn: "az.yn"; yo: "az.yo"; yp: "az.yp"; yq: "az.yq"; yr: "az.yr"; ys: "az.ys"; yt: "az.yt"; yu: "az.yu"; yv: "az.yv"; yw: "az.yw"; yx: "az.yx"; yy: "az.yy"; yz: "az.yz"; za: "az.za"; zb: "az.zb"; zc: "az.zc"; zd: "az.zd"; ze: "az.ze"; zf: "az.zf"; zg: "az.zg"; zh: "az.zh"; zi: "az.zi"; zj: "az.zj"; zk: "az.zk"; zl: "az.zl"; zm: "az.zm"; zn: "az.zn"; zo: "az.zo"; zp: "az.zp"; zq: "az.zq"; zr: "az.zr"; zs: "az.zs"; zt: "az.zt"; zu: "az.zu"; zv: "az.zv"; zw: "az.zw"; zx: "az.zx"; zy: "az.zy"; zz: "az.zz"; }; ba: { aa: "ba.aa"; ab: "ba.ab"; ac: "ba.ac"; ad: "ba.ad"; ae: "ba.ae"; af: "ba.af"; ag: "ba.ag"; ah: "ba.ah"; ai: "ba.ai"; aj: "ba.aj"; ak: "ba.ak"; al: "ba.al"; am: "ba.am"; an: "ba.an"; ao: "ba.ao"; ap: "ba.ap"; aq: "ba.aq"; ar: "ba.ar"; as: "ba.as"; at: "ba.at"; au: "ba.au"; av: "ba.av"; aw: "ba.aw"; ax: "ba.ax"; ay: "ba.ay"; az: "ba.az"; ba: "ba.ba"; bb: "ba.bb"; bc: "ba.bc"; bd: "ba.bd"; be: "ba.be"; bf: "ba.bf"; bg: "ba.bg"; bh: "ba.bh"; bi: "ba.bi"; bj: "ba.bj"; bk: "ba.bk"; bl: "ba.bl"; bm: "ba.bm"; bn: "ba.bn"; bo: "ba.bo"; bp: "ba.bp"; bq: "ba.bq"; br: "ba.br"; bs: "ba.bs"; bt: "ba.bt"; bu: "ba.bu"; bv: "ba.bv"; bw: "ba.bw"; bx: "ba.bx"; by: "ba.by"; bz: "ba.bz"; ca: "ba.ca"; cb: "ba.cb"; cc: "ba.cc"; cd: "ba.cd"; ce: "ba.ce"; cf: "ba.cf"; cg: "ba.cg"; ch: "ba.ch"; ci: "ba.ci"; cj: "ba.cj"; ck: "ba.ck"; cl: "ba.cl"; cm: "ba.cm"; cn: "ba.cn"; co: "ba.co"; cp: "ba.cp"; cq: "ba.cq"; cr: "ba.cr"; cs: "ba.cs"; ct: "ba.ct"; cu: "ba.cu"; cv: "ba.cv"; cw: "ba.cw"; cx: "ba.cx"; cy: "ba.cy"; cz: "ba.cz"; da: "ba.da"; db: "ba.db"; dc: "ba.dc"; dd: "ba.dd"; de: "ba.de"; df: "ba.df"; dg: "ba.dg"; dh: "ba.dh"; di: "ba.di"; dj: "ba.dj"; dk: "ba.dk"; dl: "ba.dl"; dm: "ba.dm"; dn: "ba.dn"; do: "ba.do"; dp: "ba.dp"; dq: "ba.dq"; dr: "ba.dr"; ds: "ba.ds"; dt: "ba.dt"; du: "ba.du"; dv: "ba.dv"; dw: "ba.dw"; dx: "ba.dx"; dy: "ba.dy"; dz: "ba.dz"; ea: "ba.ea"; eb: "ba.eb"; ec: "ba.ec"; ed: "ba.ed"; ee: "ba.ee"; ef: "ba.ef"; eg: "ba.eg"; eh: "ba.eh"; ei: "ba.ei"; ej: "ba.ej"; ek: "ba.ek"; el: "ba.el"; em: "ba.em"; en: "ba.en"; eo: "ba.eo"; ep: "ba.ep"; eq: "ba.eq"; er: "ba.er"; es: "ba.es"; et: "ba.et"; eu: "ba.eu"; ev: "ba.ev"; ew: "ba.ew"; ex: "ba.ex"; ey: "ba.ey"; ez: "ba.ez"; fa: "ba.fa"; fb: "ba.fb"; fc: "ba.fc"; fd: "ba.fd"; fe: "ba.fe"; ff: "ba.ff"; fg: "ba.fg"; fh: "ba.fh"; fi: "ba.fi"; fj: "ba.fj"; fk: "ba.fk"; fl: "ba.fl"; fm: "ba.fm"; fn: "ba.fn"; fo: "ba.fo"; fp: "ba.fp"; fq: "ba.fq"; fr: "ba.fr"; fs: "ba.fs"; ft: "ba.ft"; fu: "ba.fu"; fv: "ba.fv"; fw: "ba.fw"; fx: "ba.fx"; fy: "ba.fy"; fz: "ba.fz"; ga: "ba.ga"; gb: "ba.gb"; gc: "ba.gc"; gd: "ba.gd"; ge: "ba.ge"; gf: "ba.gf"; gg: "ba.gg"; gh: "ba.gh"; gi: "ba.gi"; gj: "ba.gj"; gk: "ba.gk"; gl: "ba.gl"; gm: "ba.gm"; gn: "ba.gn"; go: "ba.go"; gp: "ba.gp"; gq: "ba.gq"; gr: "ba.gr"; gs: "ba.gs"; gt: "ba.gt"; gu: "ba.gu"; gv: "ba.gv"; gw: "ba.gw"; gx: "ba.gx"; gy: "ba.gy"; gz: "ba.gz"; ha: "ba.ha"; hb: "ba.hb"; hc: "ba.hc"; hd: "ba.hd"; he: "ba.he"; hf: "ba.hf"; hg: "ba.hg"; hh: "ba.hh"; hi: "ba.hi"; hj: "ba.hj"; hk: "ba.hk"; hl: "ba.hl"; hm: "ba.hm"; hn: "ba.hn"; ho: "ba.ho"; hp: "ba.hp"; hq: "ba.hq"; hr: "ba.hr"; hs: "ba.hs"; ht: "ba.ht"; hu: "ba.hu"; hv: "ba.hv"; hw: "ba.hw"; hx: "ba.hx"; hy: "ba.hy"; hz: "ba.hz"; ia: "ba.ia"; ib: "ba.ib"; ic: "ba.ic"; id: "ba.id"; ie: "ba.ie"; if: "ba.if"; ig: "ba.ig"; ih: "ba.ih"; ii: "ba.ii"; ij: "ba.ij"; ik: "ba.ik"; il: "ba.il"; im: "ba.im"; in: "ba.in"; io: "ba.io"; ip: "ba.ip"; iq: "ba.iq"; ir: "ba.ir"; is: "ba.is"; it: "ba.it"; iu: "ba.iu"; iv: "ba.iv"; iw: "ba.iw"; ix: "ba.ix"; iy: "ba.iy"; iz: "ba.iz"; ja: "ba.ja"; jb: "ba.jb"; jc: "ba.jc"; jd: "ba.jd"; je: "ba.je"; jf: "ba.jf"; jg: "ba.jg"; jh: "ba.jh"; ji: "ba.ji"; jj: "ba.jj"; jk: "ba.jk"; jl: "ba.jl"; jm: "ba.jm"; jn: "ba.jn"; jo: "ba.jo"; jp: "ba.jp"; jq: "ba.jq"; jr: "ba.jr"; js: "ba.js"; jt: "ba.jt"; ju: "ba.ju"; jv: "ba.jv"; jw: "ba.jw"; jx: "ba.jx"; jy: "ba.jy"; jz: "ba.jz"; ka: "ba.ka"; kb: "ba.kb"; kc: "ba.kc"; kd: "ba.kd"; ke: "ba.ke"; kf: "ba.kf"; kg: "ba.kg"; kh: "ba.kh"; ki: "ba.ki"; kj: "ba.kj"; kk: "ba.kk"; kl: "ba.kl"; km: "ba.km"; kn: "ba.kn"; ko: "ba.ko"; kp: "ba.kp"; kq: "ba.kq"; kr: "ba.kr"; ks: "ba.ks"; kt: "ba.kt"; ku: "ba.ku"; kv: "ba.kv"; kw: "ba.kw"; kx: "ba.kx"; ky: "ba.ky"; kz: "ba.kz"; la: "ba.la"; lb: "ba.lb"; lc: "ba.lc"; ld: "ba.ld"; le: "ba.le"; lf: "ba.lf"; lg: "ba.lg"; lh: "ba.lh"; li: "ba.li"; lj: "ba.lj"; lk: "ba.lk"; ll: "ba.ll"; lm: "ba.lm"; ln: "ba.ln"; lo: "ba.lo"; lp: "ba.lp"; lq: "ba.lq"; lr: "ba.lr"; ls: "ba.ls"; lt: "ba.lt"; lu: "ba.lu"; lv: "ba.lv"; lw: "ba.lw"; lx: "ba.lx"; ly: "ba.ly"; lz: "ba.lz"; ma: "ba.ma"; mb: "ba.mb"; mc: "ba.mc"; md: "ba.md"; me: "ba.me"; mf: "ba.mf"; mg: "ba.mg"; mh: "ba.mh"; mi: "ba.mi"; mj: "ba.mj"; mk: "ba.mk"; ml: "ba.ml"; mm: "ba.mm"; mn: "ba.mn"; mo: "ba.mo"; mp: "ba.mp"; mq: "ba.mq"; mr: "ba.mr"; ms: "ba.ms"; mt: "ba.mt"; mu: "ba.mu"; mv: "ba.mv"; mw: "ba.mw"; mx: "ba.mx"; my: "ba.my"; mz: "ba.mz"; na: "ba.na"; nb: "ba.nb"; nc: "ba.nc"; nd: "ba.nd"; ne: "ba.ne"; nf: "ba.nf"; ng: "ba.ng"; nh: "ba.nh"; ni: "ba.ni"; nj: "ba.nj"; nk: "ba.nk"; nl: "ba.nl"; nm: "ba.nm"; nn: "ba.nn"; no: "ba.no"; np: "ba.np"; nq: "ba.nq"; nr: "ba.nr"; ns: "ba.ns"; nt: "ba.nt"; nu: "ba.nu"; nv: "ba.nv"; nw: "ba.nw"; nx: "ba.nx"; ny: "ba.ny"; nz: "ba.nz"; oa: "ba.oa"; ob: "ba.ob"; oc: "ba.oc"; od: "ba.od"; oe: "ba.oe"; of: "ba.of"; og: "ba.og"; oh: "ba.oh"; oi: "ba.oi"; oj: "ba.oj"; ok: "ba.ok"; ol: "ba.ol"; om: "ba.om"; on: "ba.on"; oo: "ba.oo"; op: "ba.op"; oq: "ba.oq"; or: "ba.or"; os: "ba.os"; ot: "ba.ot"; ou: "ba.ou"; ov: "ba.ov"; ow: "ba.ow"; ox: "ba.ox"; oy: "ba.oy"; oz: "ba.oz"; pa: "ba.pa"; pb: "ba.pb"; pc: "ba.pc"; pd: "ba.pd"; pe: "ba.pe"; pf: "ba.pf"; pg: "ba.pg"; ph: "ba.ph"; pi: "ba.pi"; pj: "ba.pj"; pk: "ba.pk"; pl: "ba.pl"; pm: "ba.pm"; pn: "ba.pn"; po: "ba.po"; pp: "ba.pp"; pq: "ba.pq"; pr: "ba.pr"; ps: "ba.ps"; pt: "ba.pt"; pu: "ba.pu"; pv: "ba.pv"; pw: "ba.pw"; px: "ba.px"; py: "ba.py"; pz: "ba.pz"; qa: "ba.qa"; qb: "ba.qb"; qc: "ba.qc"; qd: "ba.qd"; qe: "ba.qe"; qf: "ba.qf"; qg: "ba.qg"; qh: "ba.qh"; qi: "ba.qi"; qj: "ba.qj"; qk: "ba.qk"; ql: "ba.ql"; qm: "ba.qm"; qn: "ba.qn"; qo: "ba.qo"; qp: "ba.qp"; qq: "ba.qq"; qr: "ba.qr"; qs: "ba.qs"; qt: "ba.qt"; qu: "ba.qu"; qv: "ba.qv"; qw: "ba.qw"; qx: "ba.qx"; qy: "ba.qy"; qz: "ba.qz"; ra: "ba.ra"; rb: "ba.rb"; rc: "ba.rc"; rd: "ba.rd"; re: "ba.re"; rf: "ba.rf"; rg: "ba.rg"; rh: "ba.rh"; ri: "ba.ri"; rj: "ba.rj"; rk: "ba.rk"; rl: "ba.rl"; rm: "ba.rm"; rn: "ba.rn"; ro: "ba.ro"; rp: "ba.rp"; rq: "ba.rq"; rr: "ba.rr"; rs: "ba.rs"; rt: "ba.rt"; ru: "ba.ru"; rv: "ba.rv"; rw: "ba.rw"; rx: "ba.rx"; ry: "ba.ry"; rz: "ba.rz"; sa: "ba.sa"; sb: "ba.sb"; sc: "ba.sc"; sd: "ba.sd"; se: "ba.se"; sf: "ba.sf"; sg: "ba.sg"; sh: "ba.sh"; si: "ba.si"; sj: "ba.sj"; sk: "ba.sk"; sl: "ba.sl"; sm: "ba.sm"; sn: "ba.sn"; so: "ba.so"; sp: "ba.sp"; sq: "ba.sq"; sr: "ba.sr"; ss: "ba.ss"; st: "ba.st"; su: "ba.su"; sv: "ba.sv"; sw: "ba.sw"; sx: "ba.sx"; sy: "ba.sy"; sz: "ba.sz"; ta: "ba.ta"; tb: "ba.tb"; tc: "ba.tc"; td: "ba.td"; te: "ba.te"; tf: "ba.tf"; tg: "ba.tg"; th: "ba.th"; ti: "ba.ti"; tj: "ba.tj"; tk: "ba.tk"; tl: "ba.tl"; tm: "ba.tm"; tn: "ba.tn"; to: "ba.to"; tp: "ba.tp"; tq: "ba.tq"; tr: "ba.tr"; ts: "ba.ts"; tt: "ba.tt"; tu: "ba.tu"; tv: "ba.tv"; tw: "ba.tw"; tx: "ba.tx"; ty: "ba.ty"; tz: "ba.tz"; ua: "ba.ua"; ub: "ba.ub"; uc: "ba.uc"; ud: "ba.ud"; ue: "ba.ue"; uf: "ba.uf"; ug: "ba.ug"; uh: "ba.uh"; ui: "ba.ui"; uj: "ba.uj"; uk: "ba.uk"; ul: "ba.ul"; um: "ba.um"; un: "ba.un"; uo: "ba.uo"; up: "ba.up"; uq: "ba.uq"; ur: "ba.ur"; us: "ba.us"; ut: "ba.ut"; uu: "ba.uu"; uv: "ba.uv"; uw: "ba.uw"; ux: "ba.ux"; uy: "ba.uy"; uz: "ba.uz"; va: "ba.va"; vb: "ba.vb"; vc: "ba.vc"; vd: "ba.vd"; ve: "ba.ve"; vf: "ba.vf"; vg: "ba.vg"; vh: "ba.vh"; vi: "ba.vi"; vj: "ba.vj"; vk: "ba.vk"; vl: "ba.vl"; vm: "ba.vm"; vn: "ba.vn"; vo: "ba.vo"; vp: "ba.vp"; vq: "ba.vq"; vr: "ba.vr"; vs: "ba.vs"; vt: "ba.vt"; vu: "ba.vu"; vv: "ba.vv"; vw: "ba.vw"; vx: "ba.vx"; vy: "ba.vy"; vz: "ba.vz"; wa: "ba.wa"; wb: "ba.wb"; wc: "ba.wc"; wd: "ba.wd"; we: "ba.we"; wf: "ba.wf"; wg: "ba.wg"; wh: "ba.wh"; wi: "ba.wi"; wj: "ba.wj"; wk: "ba.wk"; wl: "ba.wl"; wm: "ba.wm"; wn: "ba.wn"; wo: "ba.wo"; wp: "ba.wp"; wq: "ba.wq"; wr: "ba.wr"; ws: "ba.ws"; wt: "ba.wt"; wu: "ba.wu"; wv: "ba.wv"; ww: "ba.ww"; wx: "ba.wx"; wy: "ba.wy"; wz: "ba.wz"; xa: "ba.xa"; xb: "ba.xb"; xc: "ba.xc"; xd: "ba.xd"; xe: "ba.xe"; xf: "ba.xf"; xg: "ba.xg"; xh: "ba.xh"; xi: "ba.xi"; xj: "ba.xj"; xk: "ba.xk"; xl: "ba.xl"; xm: "ba.xm"; xn: "ba.xn"; xo: "ba.xo"; xp: "ba.xp"; xq: "ba.xq"; xr: "ba.xr"; xs: "ba.xs"; xt: "ba.xt"; xu: "ba.xu"; xv: "ba.xv"; xw: "ba.xw"; xx: "ba.xx"; xy: "ba.xy"; xz: "ba.xz"; ya: "ba.ya"; yb: "ba.yb"; yc: "ba.yc"; yd: "ba.yd"; ye: "ba.ye"; yf: "ba.yf"; yg: "ba.yg"; yh: "ba.yh"; yi: "ba.yi"; yj: "ba.yj"; yk: "ba.yk"; yl: "ba.yl"; ym: "ba.ym"; yn: "ba.yn"; yo: "ba.yo"; yp: "ba.yp"; yq: "ba.yq"; yr: "ba.yr"; ys: "ba.ys"; yt: "ba.yt"; yu: "ba.yu"; yv: "ba.yv"; yw: "ba.yw"; yx: "ba.yx"; yy: "ba.yy"; yz: "ba.yz"; za: "ba.za"; zb: "ba.zb"; zc: "ba.zc"; zd: "ba.zd"; ze: "ba.ze"; zf: "ba.zf"; zg: "ba.zg"; zh: "ba.zh"; zi: "ba.zi"; zj: "ba.zj"; zk: "ba.zk"; zl: "ba.zl"; zm: "ba.zm"; zn: "ba.zn"; zo: "ba.zo"; zp: "ba.zp"; zq: "ba.zq"; zr: "ba.zr"; zs: "ba.zs"; zt: "ba.zt"; zu: "ba.zu"; zv: "ba.zv"; zw: "ba.zw"; zx: "ba.zx"; zy: "ba.zy"; zz: "ba.zz"; }; bb: { aa: "bb.aa"; ab: "bb.ab"; ac: "bb.ac"; ad: "bb.ad"; ae: "bb.ae"; af: "bb.af"; ag: "bb.ag"; ah: "bb.ah"; ai: "bb.ai"; aj: "bb.aj"; ak: "bb.ak"; al: "bb.al"; am: "bb.am"; an: "bb.an"; ao: "bb.ao"; ap: "bb.ap"; aq: "bb.aq"; ar: "bb.ar"; as: "bb.as"; at: "bb.at"; au: "bb.au"; av: "bb.av"; aw: "bb.aw"; ax: "bb.ax"; ay: "bb.ay"; az: "bb.az"; ba: "bb.ba"; bb: "bb.bb"; bc: "bb.bc"; bd: "bb.bd"; be: "bb.be"; bf: "bb.bf"; bg: "bb.bg"; bh: "bb.bh"; bi: "bb.bi"; bj: "bb.bj"; bk: "bb.bk"; bl: "bb.bl"; bm: "bb.bm"; bn: "bb.bn"; bo: "bb.bo"; bp: "bb.bp"; bq: "bb.bq"; br: "bb.br"; bs: "bb.bs"; bt: "bb.bt"; bu: "bb.bu"; bv: "bb.bv"; bw: "bb.bw"; bx: "bb.bx"; by: "bb.by"; bz: "bb.bz"; ca: "bb.ca"; cb: "bb.cb"; cc: "bb.cc"; cd: "bb.cd"; ce: "bb.ce"; cf: "bb.cf"; cg: "bb.cg"; ch: "bb.ch"; ci: "bb.ci"; cj: "bb.cj"; ck: "bb.ck"; cl: "bb.cl"; cm: "bb.cm"; cn: "bb.cn"; co: "bb.co"; cp: "bb.cp"; cq: "bb.cq"; cr: "bb.cr"; cs: "bb.cs"; ct: "bb.ct"; cu: "bb.cu"; cv: "bb.cv"; cw: "bb.cw"; cx: "bb.cx"; cy: "bb.cy"; cz: "bb.cz"; da: "bb.da"; db: "bb.db"; dc: "bb.dc"; dd: "bb.dd"; de: "bb.de"; df: "bb.df"; dg: "bb.dg"; dh: "bb.dh"; di: "bb.di"; dj: "bb.dj"; dk: "bb.dk"; dl: "bb.dl"; dm: "bb.dm"; dn: "bb.dn"; do: "bb.do"; dp: "bb.dp"; dq: "bb.dq"; dr: "bb.dr"; ds: "bb.ds"; dt: "bb.dt"; du: "bb.du"; dv: "bb.dv"; dw: "bb.dw"; dx: "bb.dx"; dy: "bb.dy"; dz: "bb.dz"; ea: "bb.ea"; eb: "bb.eb"; ec: "bb.ec"; ed: "bb.ed"; ee: "bb.ee"; ef: "bb.ef"; eg: "bb.eg"; eh: "bb.eh"; ei: "bb.ei"; ej: "bb.ej"; ek: "bb.ek"; el: "bb.el"; em: "bb.em"; en: "bb.en"; eo: "bb.eo"; ep: "bb.ep"; eq: "bb.eq"; er: "bb.er"; es: "bb.es"; et: "bb.et"; eu: "bb.eu"; ev: "bb.ev"; ew: "bb.ew"; ex: "bb.ex"; ey: "bb.ey"; ez: "bb.ez"; fa: "bb.fa"; fb: "bb.fb"; fc: "bb.fc"; fd: "bb.fd"; fe: "bb.fe"; ff: "bb.ff"; fg: "bb.fg"; fh: "bb.fh"; fi: "bb.fi"; fj: "bb.fj"; fk: "bb.fk"; fl: "bb.fl"; fm: "bb.fm"; fn: "bb.fn"; fo: "bb.fo"; fp: "bb.fp"; fq: "bb.fq"; fr: "bb.fr"; fs: "bb.fs"; ft: "bb.ft"; fu: "bb.fu"; fv: "bb.fv"; fw: "bb.fw"; fx: "bb.fx"; fy: "bb.fy"; fz: "bb.fz"; ga: "bb.ga"; gb: "bb.gb"; gc: "bb.gc"; gd: "bb.gd"; ge: "bb.ge"; gf: "bb.gf"; gg: "bb.gg"; gh: "bb.gh"; gi: "bb.gi"; gj: "bb.gj"; gk: "bb.gk"; gl: "bb.gl"; gm: "bb.gm"; gn: "bb.gn"; go: "bb.go"; gp: "bb.gp"; gq: "bb.gq"; gr: "bb.gr"; gs: "bb.gs"; gt: "bb.gt"; gu: "bb.gu"; gv: "bb.gv"; gw: "bb.gw"; gx: "bb.gx"; gy: "bb.gy"; gz: "bb.gz"; ha: "bb.ha"; hb: "bb.hb"; hc: "bb.hc"; hd: "bb.hd"; he: "bb.he"; hf: "bb.hf"; hg: "bb.hg"; hh: "bb.hh"; hi: "bb.hi"; hj: "bb.hj"; hk: "bb.hk"; hl: "bb.hl"; hm: "bb.hm"; hn: "bb.hn"; ho: "bb.ho"; hp: "bb.hp"; hq: "bb.hq"; hr: "bb.hr"; hs: "bb.hs"; ht: "bb.ht"; hu: "bb.hu"; hv: "bb.hv"; hw: "bb.hw"; hx: "bb.hx"; hy: "bb.hy"; hz: "bb.hz"; ia: "bb.ia"; ib: "bb.ib"; ic: "bb.ic"; id: "bb.id"; ie: "bb.ie"; if: "bb.if"; ig: "bb.ig"; ih: "bb.ih"; ii: "bb.ii"; ij: "bb.ij"; ik: "bb.ik"; il: "bb.il"; im: "bb.im"; in: "bb.in"; io: "bb.io"; ip: "bb.ip"; iq: "bb.iq"; ir: "bb.ir"; is: "bb.is"; it: "bb.it"; iu: "bb.iu"; iv: "bb.iv"; iw: "bb.iw"; ix: "bb.ix"; iy: "bb.iy"; iz: "bb.iz"; ja: "bb.ja"; jb: "bb.jb"; jc: "bb.jc"; jd: "bb.jd"; je: "bb.je"; jf: "bb.jf"; jg: "bb.jg"; jh: "bb.jh"; ji: "bb.ji"; jj: "bb.jj"; jk: "bb.jk"; jl: "bb.jl"; jm: "bb.jm"; jn: "bb.jn"; jo: "bb.jo"; jp: "bb.jp"; jq: "bb.jq"; jr: "bb.jr"; js: "bb.js"; jt: "bb.jt"; ju: "bb.ju"; jv: "bb.jv"; jw: "bb.jw"; jx: "bb.jx"; jy: "bb.jy"; jz: "bb.jz"; ka: "bb.ka"; kb: "bb.kb"; kc: "bb.kc"; kd: "bb.kd"; ke: "bb.ke"; kf: "bb.kf"; kg: "bb.kg"; kh: "bb.kh"; ki: "bb.ki"; kj: "bb.kj"; kk: "bb.kk"; kl: "bb.kl"; km: "bb.km"; kn: "bb.kn"; ko: "bb.ko"; kp: "bb.kp"; kq: "bb.kq"; kr: "bb.kr"; ks: "bb.ks"; kt: "bb.kt"; ku: "bb.ku"; kv: "bb.kv"; kw: "bb.kw"; kx: "bb.kx"; ky: "bb.ky"; kz: "bb.kz"; la: "bb.la"; lb: "bb.lb"; lc: "bb.lc"; ld: "bb.ld"; le: "bb.le"; lf: "bb.lf"; lg: "bb.lg"; lh: "bb.lh"; li: "bb.li"; lj: "bb.lj"; lk: "bb.lk"; ll: "bb.ll"; lm: "bb.lm"; ln: "bb.ln"; lo: "bb.lo"; lp: "bb.lp"; lq: "bb.lq"; lr: "bb.lr"; ls: "bb.ls"; lt: "bb.lt"; lu: "bb.lu"; lv: "bb.lv"; lw: "bb.lw"; lx: "bb.lx"; ly: "bb.ly"; lz: "bb.lz"; ma: "bb.ma"; mb: "bb.mb"; mc: "bb.mc"; md: "bb.md"; me: "bb.me"; mf: "bb.mf"; mg: "bb.mg"; mh: "bb.mh"; mi: "bb.mi"; mj: "bb.mj"; mk: "bb.mk"; ml: "bb.ml"; mm: "bb.mm"; mn: "bb.mn"; mo: "bb.mo"; mp: "bb.mp"; mq: "bb.mq"; mr: "bb.mr"; ms: "bb.ms"; mt: "bb.mt"; mu: "bb.mu"; mv: "bb.mv"; mw: "bb.mw"; mx: "bb.mx"; my: "bb.my"; mz: "bb.mz"; na: "bb.na"; nb: "bb.nb"; nc: "bb.nc"; nd: "bb.nd"; ne: "bb.ne"; nf: "bb.nf"; ng: "bb.ng"; nh: "bb.nh"; ni: "bb.ni"; nj: "bb.nj"; nk: "bb.nk"; nl: "bb.nl"; nm: "bb.nm"; nn: "bb.nn"; no: "bb.no"; np: "bb.np"; nq: "bb.nq"; nr: "bb.nr"; ns: "bb.ns"; nt: "bb.nt"; nu: "bb.nu"; nv: "bb.nv"; nw: "bb.nw"; nx: "bb.nx"; ny: "bb.ny"; nz: "bb.nz"; oa: "bb.oa"; ob: "bb.ob"; oc: "bb.oc"; od: "bb.od"; oe: "bb.oe"; of: "bb.of"; og: "bb.og"; oh: "bb.oh"; oi: "bb.oi"; oj: "bb.oj"; ok: "bb.ok"; ol: "bb.ol"; om: "bb.om"; on: "bb.on"; oo: "bb.oo"; op: "bb.op"; oq: "bb.oq"; or: "bb.or"; os: "bb.os"; ot: "bb.ot"; ou: "bb.ou"; ov: "bb.ov"; ow: "bb.ow"; ox: "bb.ox"; oy: "bb.oy"; oz: "bb.oz"; pa: "bb.pa"; pb: "bb.pb"; pc: "bb.pc"; pd: "bb.pd"; pe: "bb.pe"; pf: "bb.pf"; pg: "bb.pg"; ph: "bb.ph"; pi: "bb.pi"; pj: "bb.pj"; pk: "bb.pk"; pl: "bb.pl"; pm: "bb.pm"; pn: "bb.pn"; po: "bb.po"; pp: "bb.pp"; pq: "bb.pq"; pr: "bb.pr"; ps: "bb.ps"; pt: "bb.pt"; pu: "bb.pu"; pv: "bb.pv"; pw: "bb.pw"; px: "bb.px"; py: "bb.py"; pz: "bb.pz"; qa: "bb.qa"; qb: "bb.qb"; qc: "bb.qc"; qd: "bb.qd"; qe: "bb.qe"; qf: "bb.qf"; qg: "bb.qg"; qh: "bb.qh"; qi: "bb.qi"; qj: "bb.qj"; qk: "bb.qk"; ql: "bb.ql"; qm: "bb.qm"; qn: "bb.qn"; qo: "bb.qo"; qp: "bb.qp"; qq: "bb.qq"; qr: "bb.qr"; qs: "bb.qs"; qt: "bb.qt"; qu: "bb.qu"; qv: "bb.qv"; qw: "bb.qw"; qx: "bb.qx"; qy: "bb.qy"; qz: "bb.qz"; ra: "bb.ra"; rb: "bb.rb"; rc: "bb.rc"; rd: "bb.rd"; re: "bb.re"; rf: "bb.rf"; rg: "bb.rg"; rh: "bb.rh"; ri: "bb.ri"; rj: "bb.rj"; rk: "bb.rk"; rl: "bb.rl"; rm: "bb.rm"; rn: "bb.rn"; ro: "bb.ro"; rp: "bb.rp"; rq: "bb.rq"; rr: "bb.rr"; rs: "bb.rs"; rt: "bb.rt"; ru: "bb.ru"; rv: "bb.rv"; rw: "bb.rw"; rx: "bb.rx"; ry: "bb.ry"; rz: "bb.rz"; sa: "bb.sa"; sb: "bb.sb"; sc: "bb.sc"; sd: "bb.sd"; se: "bb.se"; sf: "bb.sf"; sg: "bb.sg"; sh: "bb.sh"; si: "bb.si"; sj: "bb.sj"; sk: "bb.sk"; sl: "bb.sl"; sm: "bb.sm"; sn: "bb.sn"; so: "bb.so"; sp: "bb.sp"; sq: "bb.sq"; sr: "bb.sr"; ss: "bb.ss"; st: "bb.st"; su: "bb.su"; sv: "bb.sv"; sw: "bb.sw"; sx: "bb.sx"; sy: "bb.sy"; sz: "bb.sz"; ta: "bb.ta"; tb: "bb.tb"; tc: "bb.tc"; td: "bb.td"; te: "bb.te"; tf: "bb.tf"; tg: "bb.tg"; th: "bb.th"; ti: "bb.ti"; tj: "bb.tj"; tk: "bb.tk"; tl: "bb.tl"; tm: "bb.tm"; tn: "bb.tn"; to: "bb.to"; tp: "bb.tp"; tq: "bb.tq"; tr: "bb.tr"; ts: "bb.ts"; tt: "bb.tt"; tu: "bb.tu"; tv: "bb.tv"; tw: "bb.tw"; tx: "bb.tx"; ty: "bb.ty"; tz: "bb.tz"; ua: "bb.ua"; ub: "bb.ub"; uc: "bb.uc"; ud: "bb.ud"; ue: "bb.ue"; uf: "bb.uf"; ug: "bb.ug"; uh: "bb.uh"; ui: "bb.ui"; uj: "bb.uj"; uk: "bb.uk"; ul: "bb.ul"; um: "bb.um"; un: "bb.un"; uo: "bb.uo"; up: "bb.up"; uq: "bb.uq"; ur: "bb.ur"; us: "bb.us"; ut: "bb.ut"; uu: "bb.uu"; uv: "bb.uv"; uw: "bb.uw"; ux: "bb.ux"; uy: "bb.uy"; uz: "bb.uz"; va: "bb.va"; vb: "bb.vb"; vc: "bb.vc"; vd: "bb.vd"; ve: "bb.ve"; vf: "bb.vf"; vg: "bb.vg"; vh: "bb.vh"; vi: "bb.vi"; vj: "bb.vj"; vk: "bb.vk"; vl: "bb.vl"; vm: "bb.vm"; vn: "bb.vn"; vo: "bb.vo"; vp: "bb.vp"; vq: "bb.vq"; vr: "bb.vr"; vs: "bb.vs"; vt: "bb.vt"; vu: "bb.vu"; vv: "bb.vv"; vw: "bb.vw"; vx: "bb.vx"; vy: "bb.vy"; vz: "bb.vz"; wa: "bb.wa"; wb: "bb.wb"; wc: "bb.wc"; wd: "bb.wd"; we: "bb.we"; wf: "bb.wf"; wg: "bb.wg"; wh: "bb.wh"; wi: "bb.wi"; wj: "bb.wj"; wk: "bb.wk"; wl: "bb.wl"; wm: "bb.wm"; wn: "bb.wn"; wo: "bb.wo"; wp: "bb.wp"; wq: "bb.wq"; wr: "bb.wr"; ws: "bb.ws"; wt: "bb.wt"; wu: "bb.wu"; wv: "bb.wv"; ww: "bb.ww"; wx: "bb.wx"; wy: "bb.wy"; wz: "bb.wz"; xa: "bb.xa"; xb: "bb.xb"; xc: "bb.xc"; xd: "bb.xd"; xe: "bb.xe"; xf: "bb.xf"; xg: "bb.xg"; xh: "bb.xh"; xi: "bb.xi"; xj: "bb.xj"; xk: "bb.xk"; xl: "bb.xl"; xm: "bb.xm"; xn: "bb.xn"; xo: "bb.xo"; xp: "bb.xp"; xq: "bb.xq"; xr: "bb.xr"; xs: "bb.xs"; xt: "bb.xt"; xu: "bb.xu"; xv: "bb.xv"; xw: "bb.xw"; xx: "bb.xx"; xy: "bb.xy"; xz: "bb.xz"; ya: "bb.ya"; yb: "bb.yb"; yc: "bb.yc"; yd: "bb.yd"; ye: "bb.ye"; yf: "bb.yf"; yg: "bb.yg"; yh: "bb.yh"; yi: "bb.yi"; yj: "bb.yj"; yk: "bb.yk"; yl: "bb.yl"; ym: "bb.ym"; yn: "bb.yn"; yo: "bb.yo"; yp: "bb.yp"; yq: "bb.yq"; yr: "bb.yr"; ys: "bb.ys"; yt: "bb.yt"; yu: "bb.yu"; yv: "bb.yv"; yw: "bb.yw"; yx: "bb.yx"; yy: "bb.yy"; yz: "bb.yz"; za: "bb.za"; zb: "bb.zb"; zc: "bb.zc"; zd: "bb.zd"; ze: "bb.ze"; zf: "bb.zf"; zg: "bb.zg"; zh: "bb.zh"; zi: "bb.zi"; zj: "bb.zj"; zk: "bb.zk"; zl: "bb.zl"; zm: "bb.zm"; zn: "bb.zn"; zo: "bb.zo"; zp: "bb.zp"; zq: "bb.zq"; zr: "bb.zr"; zs: "bb.zs"; zt: "bb.zt"; zu: "bb.zu"; zv: "bb.zv"; zw: "bb.zw"; zx: "bb.zx"; zy: "bb.zy"; zz: "bb.zz"; }; bc: { aa: "bc.aa"; ab: "bc.ab"; ac: "bc.ac"; ad: "bc.ad"; ae: "bc.ae"; af: "bc.af"; ag: "bc.ag"; ah: "bc.ah"; ai: "bc.ai"; aj: "bc.aj"; ak: "bc.ak"; al: "bc.al"; am: "bc.am"; an: "bc.an"; ao: "bc.ao"; ap: "bc.ap"; aq: "bc.aq"; ar: "bc.ar"; as: "bc.as"; at: "bc.at"; au: "bc.au"; av: "bc.av"; aw: "bc.aw"; ax: "bc.ax"; ay: "bc.ay"; az: "bc.az"; ba: "bc.ba"; bb: "bc.bb"; bc: "bc.bc"; bd: "bc.bd"; be: "bc.be"; bf: "bc.bf"; bg: "bc.bg"; bh: "bc.bh"; bi: "bc.bi"; bj: "bc.bj"; bk: "bc.bk"; bl: "bc.bl"; bm: "bc.bm"; bn: "bc.bn"; bo: "bc.bo"; bp: "bc.bp"; bq: "bc.bq"; br: "bc.br"; bs: "bc.bs"; bt: "bc.bt"; bu: "bc.bu"; bv: "bc.bv"; bw: "bc.bw"; bx: "bc.bx"; by: "bc.by"; bz: "bc.bz"; ca: "bc.ca"; cb: "bc.cb"; cc: "bc.cc"; cd: "bc.cd"; ce: "bc.ce"; cf: "bc.cf"; cg: "bc.cg"; ch: "bc.ch"; ci: "bc.ci"; cj: "bc.cj"; ck: "bc.ck"; cl: "bc.cl"; cm: "bc.cm"; cn: "bc.cn"; co: "bc.co"; cp: "bc.cp"; cq: "bc.cq"; cr: "bc.cr"; cs: "bc.cs"; ct: "bc.ct"; cu: "bc.cu"; cv: "bc.cv"; cw: "bc.cw"; cx: "bc.cx"; cy: "bc.cy"; cz: "bc.cz"; da: "bc.da"; db: "bc.db"; dc: "bc.dc"; dd: "bc.dd"; de: "bc.de"; df: "bc.df"; dg: "bc.dg"; dh: "bc.dh"; di: "bc.di"; dj: "bc.dj"; dk: "bc.dk"; dl: "bc.dl"; dm: "bc.dm"; dn: "bc.dn"; do: "bc.do"; dp: "bc.dp"; dq: "bc.dq"; dr: "bc.dr"; ds: "bc.ds"; dt: "bc.dt"; du: "bc.du"; dv: "bc.dv"; dw: "bc.dw"; dx: "bc.dx"; dy: "bc.dy"; dz: "bc.dz"; ea: "bc.ea"; eb: "bc.eb"; ec: "bc.ec"; ed: "bc.ed"; ee: "bc.ee"; ef: "bc.ef"; eg: "bc.eg"; eh: "bc.eh"; ei: "bc.ei"; ej: "bc.ej"; ek: "bc.ek"; el: "bc.el"; em: "bc.em"; en: "bc.en"; eo: "bc.eo"; ep: "bc.ep"; eq: "bc.eq"; er: "bc.er"; es: "bc.es"; et: "bc.et"; eu: "bc.eu"; ev: "bc.ev"; ew: "bc.ew"; ex: "bc.ex"; ey: "bc.ey"; ez: "bc.ez"; fa: "bc.fa"; fb: "bc.fb"; fc: "bc.fc"; fd: "bc.fd"; fe: "bc.fe"; ff: "bc.ff"; fg: "bc.fg"; fh: "bc.fh"; fi: "bc.fi"; fj: "bc.fj"; fk: "bc.fk"; fl: "bc.fl"; fm: "bc.fm"; fn: "bc.fn"; fo: "bc.fo"; fp: "bc.fp"; fq: "bc.fq"; fr: "bc.fr"; fs: "bc.fs"; ft: "bc.ft"; fu: "bc.fu"; fv: "bc.fv"; fw: "bc.fw"; fx: "bc.fx"; fy: "bc.fy"; fz: "bc.fz"; ga: "bc.ga"; gb: "bc.gb"; gc: "bc.gc"; gd: "bc.gd"; ge: "bc.ge"; gf: "bc.gf"; gg: "bc.gg"; gh: "bc.gh"; gi: "bc.gi"; gj: "bc.gj"; gk: "bc.gk"; gl: "bc.gl"; gm: "bc.gm"; gn: "bc.gn"; go: "bc.go"; gp: "bc.gp"; gq: "bc.gq"; gr: "bc.gr"; gs: "bc.gs"; gt: "bc.gt"; gu: "bc.gu"; gv: "bc.gv"; gw: "bc.gw"; gx: "bc.gx"; gy: "bc.gy"; gz: "bc.gz"; ha: "bc.ha"; hb: "bc.hb"; hc: "bc.hc"; hd: "bc.hd"; he: "bc.he"; hf: "bc.hf"; hg: "bc.hg"; hh: "bc.hh"; hi: "bc.hi"; hj: "bc.hj"; hk: "bc.hk"; hl: "bc.hl"; hm: "bc.hm"; hn: "bc.hn"; ho: "bc.ho"; hp: "bc.hp"; hq: "bc.hq"; hr: "bc.hr"; hs: "bc.hs"; ht: "bc.ht"; hu: "bc.hu"; hv: "bc.hv"; hw: "bc.hw"; hx: "bc.hx"; hy: "bc.hy"; hz: "bc.hz"; ia: "bc.ia"; ib: "bc.ib"; ic: "bc.ic"; id: "bc.id"; ie: "bc.ie"; if: "bc.if"; ig: "bc.ig"; ih: "bc.ih"; ii: "bc.ii"; ij: "bc.ij"; ik: "bc.ik"; il: "bc.il"; im: "bc.im"; in: "bc.in"; io: "bc.io"; ip: "bc.ip"; iq: "bc.iq"; ir: "bc.ir"; is: "bc.is"; it: "bc.it"; iu: "bc.iu"; iv: "bc.iv"; iw: "bc.iw"; ix: "bc.ix"; iy: "bc.iy"; iz: "bc.iz"; ja: "bc.ja"; jb: "bc.jb"; jc: "bc.jc"; jd: "bc.jd"; je: "bc.je"; jf: "bc.jf"; jg: "bc.jg"; jh: "bc.jh"; ji: "bc.ji"; jj: "bc.jj"; jk: "bc.jk"; jl: "bc.jl"; jm: "bc.jm"; jn: "bc.jn"; jo: "bc.jo"; jp: "bc.jp"; jq: "bc.jq"; jr: "bc.jr"; js: "bc.js"; jt: "bc.jt"; ju: "bc.ju"; jv: "bc.jv"; jw: "bc.jw"; jx: "bc.jx"; jy: "bc.jy"; jz: "bc.jz"; ka: "bc.ka"; kb: "bc.kb"; kc: "bc.kc"; kd: "bc.kd"; ke: "bc.ke"; kf: "bc.kf"; kg: "bc.kg"; kh: "bc.kh"; ki: "bc.ki"; kj: "bc.kj"; kk: "bc.kk"; kl: "bc.kl"; km: "bc.km"; kn: "bc.kn"; ko: "bc.ko"; kp: "bc.kp"; kq: "bc.kq"; kr: "bc.kr"; ks: "bc.ks"; kt: "bc.kt"; ku: "bc.ku"; kv: "bc.kv"; kw: "bc.kw"; kx: "bc.kx"; ky: "bc.ky"; kz: "bc.kz"; la: "bc.la"; lb: "bc.lb"; lc: "bc.lc"; ld: "bc.ld"; le: "bc.le"; lf: "bc.lf"; lg: "bc.lg"; lh: "bc.lh"; li: "bc.li"; lj: "bc.lj"; lk: "bc.lk"; ll: "bc.ll"; lm: "bc.lm"; ln: "bc.ln"; lo: "bc.lo"; lp: "bc.lp"; lq: "bc.lq"; lr: "bc.lr"; ls: "bc.ls"; lt: "bc.lt"; lu: "bc.lu"; lv: "bc.lv"; lw: "bc.lw"; lx: "bc.lx"; ly: "bc.ly"; lz: "bc.lz"; ma: "bc.ma"; mb: "bc.mb"; mc: "bc.mc"; md: "bc.md"; me: "bc.me"; mf: "bc.mf"; mg: "bc.mg"; mh: "bc.mh"; mi: "bc.mi"; mj: "bc.mj"; mk: "bc.mk"; ml: "bc.ml"; mm: "bc.mm"; mn: "bc.mn"; mo: "bc.mo"; mp: "bc.mp"; mq: "bc.mq"; mr: "bc.mr"; ms: "bc.ms"; mt: "bc.mt"; mu: "bc.mu"; mv: "bc.mv"; mw: "bc.mw"; mx: "bc.mx"; my: "bc.my"; mz: "bc.mz"; na: "bc.na"; nb: "bc.nb"; nc: "bc.nc"; nd: "bc.nd"; ne: "bc.ne"; nf: "bc.nf"; ng: "bc.ng"; nh: "bc.nh"; ni: "bc.ni"; nj: "bc.nj"; nk: "bc.nk"; nl: "bc.nl"; nm: "bc.nm"; nn: "bc.nn"; no: "bc.no"; np: "bc.np"; nq: "bc.nq"; nr: "bc.nr"; ns: "bc.ns"; nt: "bc.nt"; nu: "bc.nu"; nv: "bc.nv"; nw: "bc.nw"; nx: "bc.nx"; ny: "bc.ny"; nz: "bc.nz"; oa: "bc.oa"; ob: "bc.ob"; oc: "bc.oc"; od: "bc.od"; oe: "bc.oe"; of: "bc.of"; og: "bc.og"; oh: "bc.oh"; oi: "bc.oi"; oj: "bc.oj"; ok: "bc.ok"; ol: "bc.ol"; om: "bc.om"; on: "bc.on"; oo: "bc.oo"; op: "bc.op"; oq: "bc.oq"; or: "bc.or"; os: "bc.os"; ot: "bc.ot"; ou: "bc.ou"; ov: "bc.ov"; ow: "bc.ow"; ox: "bc.ox"; oy: "bc.oy"; oz: "bc.oz"; pa: "bc.pa"; pb: "bc.pb"; pc: "bc.pc"; pd: "bc.pd"; pe: "bc.pe"; pf: "bc.pf"; pg: "bc.pg"; ph: "bc.ph"; pi: "bc.pi"; pj: "bc.pj"; pk: "bc.pk"; pl: "bc.pl"; pm: "bc.pm"; pn: "bc.pn"; po: "bc.po"; pp: "bc.pp"; pq: "bc.pq"; pr: "bc.pr"; ps: "bc.ps"; pt: "bc.pt"; pu: "bc.pu"; pv: "bc.pv"; pw: "bc.pw"; px: "bc.px"; py: "bc.py"; pz: "bc.pz"; qa: "bc.qa"; qb: "bc.qb"; qc: "bc.qc"; qd: "bc.qd"; qe: "bc.qe"; qf: "bc.qf"; qg: "bc.qg"; qh: "bc.qh"; qi: "bc.qi"; qj: "bc.qj"; qk: "bc.qk"; ql: "bc.ql"; qm: "bc.qm"; qn: "bc.qn"; qo: "bc.qo"; qp: "bc.qp"; qq: "bc.qq"; qr: "bc.qr"; qs: "bc.qs"; qt: "bc.qt"; qu: "bc.qu"; qv: "bc.qv"; qw: "bc.qw"; qx: "bc.qx"; qy: "bc.qy"; qz: "bc.qz"; ra: "bc.ra"; rb: "bc.rb"; rc: "bc.rc"; rd: "bc.rd"; re: "bc.re"; rf: "bc.rf"; rg: "bc.rg"; rh: "bc.rh"; ri: "bc.ri"; rj: "bc.rj"; rk: "bc.rk"; rl: "bc.rl"; rm: "bc.rm"; rn: "bc.rn"; ro: "bc.ro"; rp: "bc.rp"; rq: "bc.rq"; rr: "bc.rr"; rs: "bc.rs"; rt: "bc.rt"; ru: "bc.ru"; rv: "bc.rv"; rw: "bc.rw"; rx: "bc.rx"; ry: "bc.ry"; rz: "bc.rz"; sa: "bc.sa"; sb: "bc.sb"; sc: "bc.sc"; sd: "bc.sd"; se: "bc.se"; sf: "bc.sf"; sg: "bc.sg"; sh: "bc.sh"; si: "bc.si"; sj: "bc.sj"; sk: "bc.sk"; sl: "bc.sl"; sm: "bc.sm"; sn: "bc.sn"; so: "bc.so"; sp: "bc.sp"; sq: "bc.sq"; sr: "bc.sr"; ss: "bc.ss"; st: "bc.st"; su: "bc.su"; sv: "bc.sv"; sw: "bc.sw"; sx: "bc.sx"; sy: "bc.sy"; sz: "bc.sz"; ta: "bc.ta"; tb: "bc.tb"; tc: "bc.tc"; td: "bc.td"; te: "bc.te"; tf: "bc.tf"; tg: "bc.tg"; th: "bc.th"; ti: "bc.ti"; tj: "bc.tj"; tk: "bc.tk"; tl: "bc.tl"; tm: "bc.tm"; tn: "bc.tn"; to: "bc.to"; tp: "bc.tp"; tq: "bc.tq"; tr: "bc.tr"; ts: "bc.ts"; tt: "bc.tt"; tu: "bc.tu"; tv: "bc.tv"; tw: "bc.tw"; tx: "bc.tx"; ty: "bc.ty"; tz: "bc.tz"; ua: "bc.ua"; ub: "bc.ub"; uc: "bc.uc"; ud: "bc.ud"; ue: "bc.ue"; uf: "bc.uf"; ug: "bc.ug"; uh: "bc.uh"; ui: "bc.ui"; uj: "bc.uj"; uk: "bc.uk"; ul: "bc.ul"; um: "bc.um"; un: "bc.un"; uo: "bc.uo"; up: "bc.up"; uq: "bc.uq"; ur: "bc.ur"; us: "bc.us"; ut: "bc.ut"; uu: "bc.uu"; uv: "bc.uv"; uw: "bc.uw"; ux: "bc.ux"; uy: "bc.uy"; uz: "bc.uz"; va: "bc.va"; vb: "bc.vb"; vc: "bc.vc"; vd: "bc.vd"; ve: "bc.ve"; vf: "bc.vf"; vg: "bc.vg"; vh: "bc.vh"; vi: "bc.vi"; vj: "bc.vj"; vk: "bc.vk"; vl: "bc.vl"; vm: "bc.vm"; vn: "bc.vn"; vo: "bc.vo"; vp: "bc.vp"; vq: "bc.vq"; vr: "bc.vr"; vs: "bc.vs"; vt: "bc.vt"; vu: "bc.vu"; vv: "bc.vv"; vw: "bc.vw"; vx: "bc.vx"; vy: "bc.vy"; vz: "bc.vz"; wa: "bc.wa"; wb: "bc.wb"; wc: "bc.wc"; wd: "bc.wd"; we: "bc.we"; wf: "bc.wf"; wg: "bc.wg"; wh: "bc.wh"; wi: "bc.wi"; wj: "bc.wj"; wk: "bc.wk"; wl: "bc.wl"; wm: "bc.wm"; wn: "bc.wn"; wo: "bc.wo"; wp: "bc.wp"; wq: "bc.wq"; wr: "bc.wr"; ws: "bc.ws"; wt: "bc.wt"; wu: "bc.wu"; wv: "bc.wv"; ww: "bc.ww"; wx: "bc.wx"; wy: "bc.wy"; wz: "bc.wz"; xa: "bc.xa"; xb: "bc.xb"; xc: "bc.xc"; xd: "bc.xd"; xe: "bc.xe"; xf: "bc.xf"; xg: "bc.xg"; xh: "bc.xh"; xi: "bc.xi"; xj: "bc.xj"; xk: "bc.xk"; xl: "bc.xl"; xm: "bc.xm"; xn: "bc.xn"; xo: "bc.xo"; xp: "bc.xp"; xq: "bc.xq"; xr: "bc.xr"; xs: "bc.xs"; xt: "bc.xt"; xu: "bc.xu"; xv: "bc.xv"; xw: "bc.xw"; xx: "bc.xx"; xy: "bc.xy"; xz: "bc.xz"; ya: "bc.ya"; yb: "bc.yb"; yc: "bc.yc"; yd: "bc.yd"; ye: "bc.ye"; yf: "bc.yf"; yg: "bc.yg"; yh: "bc.yh"; yi: "bc.yi"; yj: "bc.yj"; yk: "bc.yk"; yl: "bc.yl"; ym: "bc.ym"; yn: "bc.yn"; yo: "bc.yo"; yp: "bc.yp"; yq: "bc.yq"; yr: "bc.yr"; ys: "bc.ys"; yt: "bc.yt"; yu: "bc.yu"; yv: "bc.yv"; yw: "bc.yw"; yx: "bc.yx"; yy: "bc.yy"; yz: "bc.yz"; za: "bc.za"; zb: "bc.zb"; zc: "bc.zc"; zd: "bc.zd"; ze: "bc.ze"; zf: "bc.zf"; zg: "bc.zg"; zh: "bc.zh"; zi: "bc.zi"; zj: "bc.zj"; zk: "bc.zk"; zl: "bc.zl"; zm: "bc.zm"; zn: "bc.zn"; zo: "bc.zo"; zp: "bc.zp"; zq: "bc.zq"; zr: "bc.zr"; zs: "bc.zs"; zt: "bc.zt"; zu: "bc.zu"; zv: "bc.zv"; zw: "bc.zw"; zx: "bc.zx"; zy: "bc.zy"; zz: "bc.zz"; }; bd: { aa: "bd.aa"; ab: "bd.ab"; ac: "bd.ac"; ad: "bd.ad"; ae: "bd.ae"; af: "bd.af"; ag: "bd.ag"; ah: "bd.ah"; ai: "bd.ai"; aj: "bd.aj"; ak: "bd.ak"; al: "bd.al"; am: "bd.am"; an: "bd.an"; ao: "bd.ao"; ap: "bd.ap"; aq: "bd.aq"; ar: "bd.ar"; as: "bd.as"; at: "bd.at"; au: "bd.au"; av: "bd.av"; aw: "bd.aw"; ax: "bd.ax"; ay: "bd.ay"; az: "bd.az"; ba: "bd.ba"; bb: "bd.bb"; bc: "bd.bc"; bd: "bd.bd"; be: "bd.be"; bf: "bd.bf"; bg: "bd.bg"; bh: "bd.bh"; bi: "bd.bi"; bj: "bd.bj"; bk: "bd.bk"; bl: "bd.bl"; bm: "bd.bm"; bn: "bd.bn"; bo: "bd.bo"; bp: "bd.bp"; bq: "bd.bq"; br: "bd.br"; bs: "bd.bs"; bt: "bd.bt"; bu: "bd.bu"; bv: "bd.bv"; bw: "bd.bw"; bx: "bd.bx"; by: "bd.by"; bz: "bd.bz"; ca: "bd.ca"; cb: "bd.cb"; cc: "bd.cc"; cd: "bd.cd"; ce: "bd.ce"; cf: "bd.cf"; cg: "bd.cg"; ch: "bd.ch"; ci: "bd.ci"; cj: "bd.cj"; ck: "bd.ck"; cl: "bd.cl"; cm: "bd.cm"; cn: "bd.cn"; co: "bd.co"; cp: "bd.cp"; cq: "bd.cq"; cr: "bd.cr"; cs: "bd.cs"; ct: "bd.ct"; cu: "bd.cu"; cv: "bd.cv"; cw: "bd.cw"; cx: "bd.cx"; cy: "bd.cy"; cz: "bd.cz"; da: "bd.da"; db: "bd.db"; dc: "bd.dc"; dd: "bd.dd"; de: "bd.de"; df: "bd.df"; dg: "bd.dg"; dh: "bd.dh"; di: "bd.di"; dj: "bd.dj"; dk: "bd.dk"; dl: "bd.dl"; dm: "bd.dm"; dn: "bd.dn"; do: "bd.do"; dp: "bd.dp"; dq: "bd.dq"; dr: "bd.dr"; ds: "bd.ds"; dt: "bd.dt"; du: "bd.du"; dv: "bd.dv"; dw: "bd.dw"; dx: "bd.dx"; dy: "bd.dy"; dz: "bd.dz"; ea: "bd.ea"; eb: "bd.eb"; ec: "bd.ec"; ed: "bd.ed"; ee: "bd.ee"; ef: "bd.ef"; eg: "bd.eg"; eh: "bd.eh"; ei: "bd.ei"; ej: "bd.ej"; ek: "bd.ek"; el: "bd.el"; em: "bd.em"; en: "bd.en"; eo: "bd.eo"; ep: "bd.ep"; eq: "bd.eq"; er: "bd.er"; es: "bd.es"; et: "bd.et"; eu: "bd.eu"; ev: "bd.ev"; ew: "bd.ew"; ex: "bd.ex"; ey: "bd.ey"; ez: "bd.ez"; fa: "bd.fa"; fb: "bd.fb"; fc: "bd.fc"; fd: "bd.fd"; fe: "bd.fe"; ff: "bd.ff"; fg: "bd.fg"; fh: "bd.fh"; fi: "bd.fi"; fj: "bd.fj"; fk: "bd.fk"; fl: "bd.fl"; fm: "bd.fm"; fn: "bd.fn"; fo: "bd.fo"; fp: "bd.fp"; fq: "bd.fq"; fr: "bd.fr"; fs: "bd.fs"; ft: "bd.ft"; fu: "bd.fu"; fv: "bd.fv"; fw: "bd.fw"; fx: "bd.fx"; fy: "bd.fy"; fz: "bd.fz"; ga: "bd.ga"; gb: "bd.gb"; gc: "bd.gc"; gd: "bd.gd"; ge: "bd.ge"; gf: "bd.gf"; gg: "bd.gg"; gh: "bd.gh"; gi: "bd.gi"; gj: "bd.gj"; gk: "bd.gk"; gl: "bd.gl"; gm: "bd.gm"; gn: "bd.gn"; go: "bd.go"; gp: "bd.gp"; gq: "bd.gq"; gr: "bd.gr"; gs: "bd.gs"; gt: "bd.gt"; gu: "bd.gu"; gv: "bd.gv"; gw: "bd.gw"; gx: "bd.gx"; gy: "bd.gy"; gz: "bd.gz"; ha: "bd.ha"; hb: "bd.hb"; hc: "bd.hc"; hd: "bd.hd"; he: "bd.he"; hf: "bd.hf"; hg: "bd.hg"; hh: "bd.hh"; hi: "bd.hi"; hj: "bd.hj"; hk: "bd.hk"; hl: "bd.hl"; hm: "bd.hm"; hn: "bd.hn"; ho: "bd.ho"; hp: "bd.hp"; hq: "bd.hq"; hr: "bd.hr"; hs: "bd.hs"; ht: "bd.ht"; hu: "bd.hu"; hv: "bd.hv"; hw: "bd.hw"; hx: "bd.hx"; hy: "bd.hy"; hz: "bd.hz"; ia: "bd.ia"; ib: "bd.ib"; ic: "bd.ic"; id: "bd.id"; ie: "bd.ie"; if: "bd.if"; ig: "bd.ig"; ih: "bd.ih"; ii: "bd.ii"; ij: "bd.ij"; ik: "bd.ik"; il: "bd.il"; im: "bd.im"; in: "bd.in"; io: "bd.io"; ip: "bd.ip"; iq: "bd.iq"; ir: "bd.ir"; is: "bd.is"; it: "bd.it"; iu: "bd.iu"; iv: "bd.iv"; iw: "bd.iw"; ix: "bd.ix"; iy: "bd.iy"; iz: "bd.iz"; ja: "bd.ja"; jb: "bd.jb"; jc: "bd.jc"; jd: "bd.jd"; je: "bd.je"; jf: "bd.jf"; jg: "bd.jg"; jh: "bd.jh"; ji: "bd.ji"; jj: "bd.jj"; jk: "bd.jk"; jl: "bd.jl"; jm: "bd.jm"; jn: "bd.jn"; jo: "bd.jo"; jp: "bd.jp"; jq: "bd.jq"; jr: "bd.jr"; js: "bd.js"; jt: "bd.jt"; ju: "bd.ju"; jv: "bd.jv"; jw: "bd.jw"; jx: "bd.jx"; jy: "bd.jy"; jz: "bd.jz"; ka: "bd.ka"; kb: "bd.kb"; kc: "bd.kc"; kd: "bd.kd"; ke: "bd.ke"; kf: "bd.kf"; kg: "bd.kg"; kh: "bd.kh"; ki: "bd.ki"; kj: "bd.kj"; kk: "bd.kk"; kl: "bd.kl"; km: "bd.km"; kn: "bd.kn"; ko: "bd.ko"; kp: "bd.kp"; kq: "bd.kq"; kr: "bd.kr"; ks: "bd.ks"; kt: "bd.kt"; ku: "bd.ku"; kv: "bd.kv"; kw: "bd.kw"; kx: "bd.kx"; ky: "bd.ky"; kz: "bd.kz"; la: "bd.la"; lb: "bd.lb"; lc: "bd.lc"; ld: "bd.ld"; le: "bd.le"; lf: "bd.lf"; lg: "bd.lg"; lh: "bd.lh"; li: "bd.li"; lj: "bd.lj"; lk: "bd.lk"; ll: "bd.ll"; lm: "bd.lm"; ln: "bd.ln"; lo: "bd.lo"; lp: "bd.lp"; lq: "bd.lq"; lr: "bd.lr"; ls: "bd.ls"; lt: "bd.lt"; lu: "bd.lu"; lv: "bd.lv"; lw: "bd.lw"; lx: "bd.lx"; ly: "bd.ly"; lz: "bd.lz"; ma: "bd.ma"; mb: "bd.mb"; mc: "bd.mc"; md: "bd.md"; me: "bd.me"; mf: "bd.mf"; mg: "bd.mg"; mh: "bd.mh"; mi: "bd.mi"; mj: "bd.mj"; mk: "bd.mk"; ml: "bd.ml"; mm: "bd.mm"; mn: "bd.mn"; mo: "bd.mo"; mp: "bd.mp"; mq: "bd.mq"; mr: "bd.mr"; ms: "bd.ms"; mt: "bd.mt"; mu: "bd.mu"; mv: "bd.mv"; mw: "bd.mw"; mx: "bd.mx"; my: "bd.my"; mz: "bd.mz"; na: "bd.na"; nb: "bd.nb"; nc: "bd.nc"; nd: "bd.nd"; ne: "bd.ne"; nf: "bd.nf"; ng: "bd.ng"; nh: "bd.nh"; ni: "bd.ni"; nj: "bd.nj"; nk: "bd.nk"; nl: "bd.nl"; nm: "bd.nm"; nn: "bd.nn"; no: "bd.no"; np: "bd.np"; nq: "bd.nq"; nr: "bd.nr"; ns: "bd.ns"; nt: "bd.nt"; nu: "bd.nu"; nv: "bd.nv"; nw: "bd.nw"; nx: "bd.nx"; ny: "bd.ny"; nz: "bd.nz"; oa: "bd.oa"; ob: "bd.ob"; oc: "bd.oc"; od: "bd.od"; oe: "bd.oe"; of: "bd.of"; og: "bd.og"; oh: "bd.oh"; oi: "bd.oi"; oj: "bd.oj"; ok: "bd.ok"; ol: "bd.ol"; om: "bd.om"; on: "bd.on"; oo: "bd.oo"; op: "bd.op"; oq: "bd.oq"; or: "bd.or"; os: "bd.os"; ot: "bd.ot"; ou: "bd.ou"; ov: "bd.ov"; ow: "bd.ow"; ox: "bd.ox"; oy: "bd.oy"; oz: "bd.oz"; pa: "bd.pa"; pb: "bd.pb"; pc: "bd.pc"; pd: "bd.pd"; pe: "bd.pe"; pf: "bd.pf"; pg: "bd.pg"; ph: "bd.ph"; pi: "bd.pi"; pj: "bd.pj"; pk: "bd.pk"; pl: "bd.pl"; pm: "bd.pm"; pn: "bd.pn"; po: "bd.po"; pp: "bd.pp"; pq: "bd.pq"; pr: "bd.pr"; ps: "bd.ps"; pt: "bd.pt"; pu: "bd.pu"; pv: "bd.pv"; pw: "bd.pw"; px: "bd.px"; py: "bd.py"; pz: "bd.pz"; qa: "bd.qa"; qb: "bd.qb"; qc: "bd.qc"; qd: "bd.qd"; qe: "bd.qe"; qf: "bd.qf"; qg: "bd.qg"; qh: "bd.qh"; qi: "bd.qi"; qj: "bd.qj"; qk: "bd.qk"; ql: "bd.ql"; qm: "bd.qm"; qn: "bd.qn"; qo: "bd.qo"; qp: "bd.qp"; qq: "bd.qq"; qr: "bd.qr"; qs: "bd.qs"; qt: "bd.qt"; qu: "bd.qu"; qv: "bd.qv"; qw: "bd.qw"; qx: "bd.qx"; qy: "bd.qy"; qz: "bd.qz"; ra: "bd.ra"; rb: "bd.rb"; rc: "bd.rc"; rd: "bd.rd"; re: "bd.re"; rf: "bd.rf"; rg: "bd.rg"; rh: "bd.rh"; ri: "bd.ri"; rj: "bd.rj"; rk: "bd.rk"; rl: "bd.rl"; rm: "bd.rm"; rn: "bd.rn"; ro: "bd.ro"; rp: "bd.rp"; rq: "bd.rq"; rr: "bd.rr"; rs: "bd.rs"; rt: "bd.rt"; ru: "bd.ru"; rv: "bd.rv"; rw: "bd.rw"; rx: "bd.rx"; ry: "bd.ry"; rz: "bd.rz"; sa: "bd.sa"; sb: "bd.sb"; sc: "bd.sc"; sd: "bd.sd"; se: "bd.se"; sf: "bd.sf"; sg: "bd.sg"; sh: "bd.sh"; si: "bd.si"; sj: "bd.sj"; sk: "bd.sk"; sl: "bd.sl"; sm: "bd.sm"; sn: "bd.sn"; so: "bd.so"; sp: "bd.sp"; sq: "bd.sq"; sr: "bd.sr"; ss: "bd.ss"; st: "bd.st"; su: "bd.su"; sv: "bd.sv"; sw: "bd.sw"; sx: "bd.sx"; sy: "bd.sy"; sz: "bd.sz"; ta: "bd.ta"; tb: "bd.tb"; tc: "bd.tc"; td: "bd.td"; te: "bd.te"; tf: "bd.tf"; tg: "bd.tg"; th: "bd.th"; ti: "bd.ti"; tj: "bd.tj"; tk: "bd.tk"; tl: "bd.tl"; tm: "bd.tm"; tn: "bd.tn"; to: "bd.to"; tp: "bd.tp"; tq: "bd.tq"; tr: "bd.tr"; ts: "bd.ts"; tt: "bd.tt"; tu: "bd.tu"; tv: "bd.tv"; tw: "bd.tw"; tx: "bd.tx"; ty: "bd.ty"; tz: "bd.tz"; ua: "bd.ua"; ub: "bd.ub"; uc: "bd.uc"; ud: "bd.ud"; ue: "bd.ue"; uf: "bd.uf"; ug: "bd.ug"; uh: "bd.uh"; ui: "bd.ui"; uj: "bd.uj"; uk: "bd.uk"; ul: "bd.ul"; um: "bd.um"; un: "bd.un"; uo: "bd.uo"; up: "bd.up"; uq: "bd.uq"; ur: "bd.ur"; us: "bd.us"; ut: "bd.ut"; uu: "bd.uu"; uv: "bd.uv"; uw: "bd.uw"; ux: "bd.ux"; uy: "bd.uy"; uz: "bd.uz"; va: "bd.va"; vb: "bd.vb"; vc: "bd.vc"; vd: "bd.vd"; ve: "bd.ve"; vf: "bd.vf"; vg: "bd.vg"; vh: "bd.vh"; vi: "bd.vi"; vj: "bd.vj"; vk: "bd.vk"; vl: "bd.vl"; vm: "bd.vm"; vn: "bd.vn"; vo: "bd.vo"; vp: "bd.vp"; vq: "bd.vq"; vr: "bd.vr"; vs: "bd.vs"; vt: "bd.vt"; vu: "bd.vu"; vv: "bd.vv"; vw: "bd.vw"; vx: "bd.vx"; vy: "bd.vy"; vz: "bd.vz"; wa: "bd.wa"; wb: "bd.wb"; wc: "bd.wc"; wd: "bd.wd"; we: "bd.we"; wf: "bd.wf"; wg: "bd.wg"; wh: "bd.wh"; wi: "bd.wi"; wj: "bd.wj"; wk: "bd.wk"; wl: "bd.wl"; wm: "bd.wm"; wn: "bd.wn"; wo: "bd.wo"; wp: "bd.wp"; wq: "bd.wq"; wr: "bd.wr"; ws: "bd.ws"; wt: "bd.wt"; wu: "bd.wu"; wv: "bd.wv"; ww: "bd.ww"; wx: "bd.wx"; wy: "bd.wy"; wz: "bd.wz"; xa: "bd.xa"; xb: "bd.xb"; xc: "bd.xc"; xd: "bd.xd"; xe: "bd.xe"; xf: "bd.xf"; xg: "bd.xg"; xh: "bd.xh"; xi: "bd.xi"; xj: "bd.xj"; xk: "bd.xk"; xl: "bd.xl"; xm: "bd.xm"; xn: "bd.xn"; xo: "bd.xo"; xp: "bd.xp"; xq: "bd.xq"; xr: "bd.xr"; xs: "bd.xs"; xt: "bd.xt"; xu: "bd.xu"; xv: "bd.xv"; xw: "bd.xw"; xx: "bd.xx"; xy: "bd.xy"; xz: "bd.xz"; ya: "bd.ya"; yb: "bd.yb"; yc: "bd.yc"; yd: "bd.yd"; ye: "bd.ye"; yf: "bd.yf"; yg: "bd.yg"; yh: "bd.yh"; yi: "bd.yi"; yj: "bd.yj"; yk: "bd.yk"; yl: "bd.yl"; ym: "bd.ym"; yn: "bd.yn"; yo: "bd.yo"; yp: "bd.yp"; yq: "bd.yq"; yr: "bd.yr"; ys: "bd.ys"; yt: "bd.yt"; yu: "bd.yu"; yv: "bd.yv"; yw: "bd.yw"; yx: "bd.yx"; yy: "bd.yy"; yz: "bd.yz"; za: "bd.za"; zb: "bd.zb"; zc: "bd.zc"; zd: "bd.zd"; ze: "bd.ze"; zf: "bd.zf"; zg: "bd.zg"; zh: "bd.zh"; zi: "bd.zi"; zj: "bd.zj"; zk: "bd.zk"; zl: "bd.zl"; zm: "bd.zm"; zn: "bd.zn"; zo: "bd.zo"; zp: "bd.zp"; zq: "bd.zq"; zr: "bd.zr"; zs: "bd.zs"; zt: "bd.zt"; zu: "bd.zu"; zv: "bd.zv"; zw: "bd.zw"; zx: "bd.zx"; zy: "bd.zy"; zz: "bd.zz"; }; be: { aa: "be.aa"; ab: "be.ab"; ac: "be.ac"; ad: "be.ad"; ae: "be.ae"; af: "be.af"; ag: "be.ag"; ah: "be.ah"; ai: "be.ai"; aj: "be.aj"; ak: "be.ak"; al: "be.al"; am: "be.am"; an: "be.an"; ao: "be.ao"; ap: "be.ap"; aq: "be.aq"; ar: "be.ar"; as: "be.as"; at: "be.at"; au: "be.au"; av: "be.av"; aw: "be.aw"; ax: "be.ax"; ay: "be.ay"; az: "be.az"; ba: "be.ba"; bb: "be.bb"; bc: "be.bc"; bd: "be.bd"; be: "be.be"; bf: "be.bf"; bg: "be.bg"; bh: "be.bh"; bi: "be.bi"; bj: "be.bj"; bk: "be.bk"; bl: "be.bl"; bm: "be.bm"; bn: "be.bn"; bo: "be.bo"; bp: "be.bp"; bq: "be.bq"; br: "be.br"; bs: "be.bs"; bt: "be.bt"; bu: "be.bu"; bv: "be.bv"; bw: "be.bw"; bx: "be.bx"; by: "be.by"; bz: "be.bz"; ca: "be.ca"; cb: "be.cb"; cc: "be.cc"; cd: "be.cd"; ce: "be.ce"; cf: "be.cf"; cg: "be.cg"; ch: "be.ch"; ci: "be.ci"; cj: "be.cj"; ck: "be.ck"; cl: "be.cl"; cm: "be.cm"; cn: "be.cn"; co: "be.co"; cp: "be.cp"; cq: "be.cq"; cr: "be.cr"; cs: "be.cs"; ct: "be.ct"; cu: "be.cu"; cv: "be.cv"; cw: "be.cw"; cx: "be.cx"; cy: "be.cy"; cz: "be.cz"; da: "be.da"; db: "be.db"; dc: "be.dc"; dd: "be.dd"; de: "be.de"; df: "be.df"; dg: "be.dg"; dh: "be.dh"; di: "be.di"; dj: "be.dj"; dk: "be.dk"; dl: "be.dl"; dm: "be.dm"; dn: "be.dn"; do: "be.do"; dp: "be.dp"; dq: "be.dq"; dr: "be.dr"; ds: "be.ds"; dt: "be.dt"; du: "be.du"; dv: "be.dv"; dw: "be.dw"; dx: "be.dx"; dy: "be.dy"; dz: "be.dz"; ea: "be.ea"; eb: "be.eb"; ec: "be.ec"; ed: "be.ed"; ee: "be.ee"; ef: "be.ef"; eg: "be.eg"; eh: "be.eh"; ei: "be.ei"; ej: "be.ej"; ek: "be.ek"; el: "be.el"; em: "be.em"; en: "be.en"; eo: "be.eo"; ep: "be.ep"; eq: "be.eq"; er: "be.er"; es: "be.es"; et: "be.et"; eu: "be.eu"; ev: "be.ev"; ew: "be.ew"; ex: "be.ex"; ey: "be.ey"; ez: "be.ez"; fa: "be.fa"; fb: "be.fb"; fc: "be.fc"; fd: "be.fd"; fe: "be.fe"; ff: "be.ff"; fg: "be.fg"; fh: "be.fh"; fi: "be.fi"; fj: "be.fj"; fk: "be.fk"; fl: "be.fl"; fm: "be.fm"; fn: "be.fn"; fo: "be.fo"; fp: "be.fp"; fq: "be.fq"; fr: "be.fr"; fs: "be.fs"; ft: "be.ft"; fu: "be.fu"; fv: "be.fv"; fw: "be.fw"; fx: "be.fx"; fy: "be.fy"; fz: "be.fz"; ga: "be.ga"; gb: "be.gb"; gc: "be.gc"; gd: "be.gd"; ge: "be.ge"; gf: "be.gf"; gg: "be.gg"; gh: "be.gh"; gi: "be.gi"; gj: "be.gj"; gk: "be.gk"; gl: "be.gl"; gm: "be.gm"; gn: "be.gn"; go: "be.go"; gp: "be.gp"; gq: "be.gq"; gr: "be.gr"; gs: "be.gs"; gt: "be.gt"; gu: "be.gu"; gv: "be.gv"; gw: "be.gw"; gx: "be.gx"; gy: "be.gy"; gz: "be.gz"; ha: "be.ha"; hb: "be.hb"; hc: "be.hc"; hd: "be.hd"; he: "be.he"; hf: "be.hf"; hg: "be.hg"; hh: "be.hh"; hi: "be.hi"; hj: "be.hj"; hk: "be.hk"; hl: "be.hl"; hm: "be.hm"; hn: "be.hn"; ho: "be.ho"; hp: "be.hp"; hq: "be.hq"; hr: "be.hr"; hs: "be.hs"; ht: "be.ht"; hu: "be.hu"; hv: "be.hv"; hw: "be.hw"; hx: "be.hx"; hy: "be.hy"; hz: "be.hz"; ia: "be.ia"; ib: "be.ib"; ic: "be.ic"; id: "be.id"; ie: "be.ie"; if: "be.if"; ig: "be.ig"; ih: "be.ih"; ii: "be.ii"; ij: "be.ij"; ik: "be.ik"; il: "be.il"; im: "be.im"; in: "be.in"; io: "be.io"; ip: "be.ip"; iq: "be.iq"; ir: "be.ir"; is: "be.is"; it: "be.it"; iu: "be.iu"; iv: "be.iv"; iw: "be.iw"; ix: "be.ix"; iy: "be.iy"; iz: "be.iz"; ja: "be.ja"; jb: "be.jb"; jc: "be.jc"; jd: "be.jd"; je: "be.je"; jf: "be.jf"; jg: "be.jg"; jh: "be.jh"; ji: "be.ji"; jj: "be.jj"; jk: "be.jk"; jl: "be.jl"; jm: "be.jm"; jn: "be.jn"; jo: "be.jo"; jp: "be.jp"; jq: "be.jq"; jr: "be.jr"; js: "be.js"; jt: "be.jt"; ju: "be.ju"; jv: "be.jv"; jw: "be.jw"; jx: "be.jx"; jy: "be.jy"; jz: "be.jz"; ka: "be.ka"; kb: "be.kb"; kc: "be.kc"; kd: "be.kd"; ke: "be.ke"; kf: "be.kf"; kg: "be.kg"; kh: "be.kh"; ki: "be.ki"; kj: "be.kj"; kk: "be.kk"; kl: "be.kl"; km: "be.km"; kn: "be.kn"; ko: "be.ko"; kp: "be.kp"; kq: "be.kq"; kr: "be.kr"; ks: "be.ks"; kt: "be.kt"; ku: "be.ku"; kv: "be.kv"; kw: "be.kw"; kx: "be.kx"; ky: "be.ky"; kz: "be.kz"; la: "be.la"; lb: "be.lb"; lc: "be.lc"; ld: "be.ld"; le: "be.le"; lf: "be.lf"; lg: "be.lg"; lh: "be.lh"; li: "be.li"; lj: "be.lj"; lk: "be.lk"; ll: "be.ll"; lm: "be.lm"; ln: "be.ln"; lo: "be.lo"; lp: "be.lp"; lq: "be.lq"; lr: "be.lr"; ls: "be.ls"; lt: "be.lt"; lu: "be.lu"; lv: "be.lv"; lw: "be.lw"; lx: "be.lx"; ly: "be.ly"; lz: "be.lz"; ma: "be.ma"; mb: "be.mb"; mc: "be.mc"; md: "be.md"; me: "be.me"; mf: "be.mf"; mg: "be.mg"; mh: "be.mh"; mi: "be.mi"; mj: "be.mj"; mk: "be.mk"; ml: "be.ml"; mm: "be.mm"; mn: "be.mn"; mo: "be.mo"; mp: "be.mp"; mq: "be.mq"; mr: "be.mr"; ms: "be.ms"; mt: "be.mt"; mu: "be.mu"; mv: "be.mv"; mw: "be.mw"; mx: "be.mx"; my: "be.my"; mz: "be.mz"; na: "be.na"; nb: "be.nb"; nc: "be.nc"; nd: "be.nd"; ne: "be.ne"; nf: "be.nf"; ng: "be.ng"; nh: "be.nh"; ni: "be.ni"; nj: "be.nj"; nk: "be.nk"; nl: "be.nl"; nm: "be.nm"; nn: "be.nn"; no: "be.no"; np: "be.np"; nq: "be.nq"; nr: "be.nr"; ns: "be.ns"; nt: "be.nt"; nu: "be.nu"; nv: "be.nv"; nw: "be.nw"; nx: "be.nx"; ny: "be.ny"; nz: "be.nz"; oa: "be.oa"; ob: "be.ob"; oc: "be.oc"; od: "be.od"; oe: "be.oe"; of: "be.of"; og: "be.og"; oh: "be.oh"; oi: "be.oi"; oj: "be.oj"; ok: "be.ok"; ol: "be.ol"; om: "be.om"; on: "be.on"; oo: "be.oo"; op: "be.op"; oq: "be.oq"; or: "be.or"; os: "be.os"; ot: "be.ot"; ou: "be.ou"; ov: "be.ov"; ow: "be.ow"; ox: "be.ox"; oy: "be.oy"; oz: "be.oz"; pa: "be.pa"; pb: "be.pb"; pc: "be.pc"; pd: "be.pd"; pe: "be.pe"; pf: "be.pf"; pg: "be.pg"; ph: "be.ph"; pi: "be.pi"; pj: "be.pj"; pk: "be.pk"; pl: "be.pl"; pm: "be.pm"; pn: "be.pn"; po: "be.po"; pp: "be.pp"; pq: "be.pq"; pr: "be.pr"; ps: "be.ps"; pt: "be.pt"; pu: "be.pu"; pv: "be.pv"; pw: "be.pw"; px: "be.px"; py: "be.py"; pz: "be.pz"; qa: "be.qa"; qb: "be.qb"; qc: "be.qc"; qd: "be.qd"; qe: "be.qe"; qf: "be.qf"; qg: "be.qg"; qh: "be.qh"; qi: "be.qi"; qj: "be.qj"; qk: "be.qk"; ql: "be.ql"; qm: "be.qm"; qn: "be.qn"; qo: "be.qo"; qp: "be.qp"; qq: "be.qq"; qr: "be.qr"; qs: "be.qs"; qt: "be.qt"; qu: "be.qu"; qv: "be.qv"; qw: "be.qw"; qx: "be.qx"; qy: "be.qy"; qz: "be.qz"; ra: "be.ra"; rb: "be.rb"; rc: "be.rc"; rd: "be.rd"; re: "be.re"; rf: "be.rf"; rg: "be.rg"; rh: "be.rh"; ri: "be.ri"; rj: "be.rj"; rk: "be.rk"; rl: "be.rl"; rm: "be.rm"; rn: "be.rn"; ro: "be.ro"; rp: "be.rp"; rq: "be.rq"; rr: "be.rr"; rs: "be.rs"; rt: "be.rt"; ru: "be.ru"; rv: "be.rv"; rw: "be.rw"; rx: "be.rx"; ry: "be.ry"; rz: "be.rz"; sa: "be.sa"; sb: "be.sb"; sc: "be.sc"; sd: "be.sd"; se: "be.se"; sf: "be.sf"; sg: "be.sg"; sh: "be.sh"; si: "be.si"; sj: "be.sj"; sk: "be.sk"; sl: "be.sl"; sm: "be.sm"; sn: "be.sn"; so: "be.so"; sp: "be.sp"; sq: "be.sq"; sr: "be.sr"; ss: "be.ss"; st: "be.st"; su: "be.su"; sv: "be.sv"; sw: "be.sw"; sx: "be.sx"; sy: "be.sy"; sz: "be.sz"; ta: "be.ta"; tb: "be.tb"; tc: "be.tc"; td: "be.td"; te: "be.te"; tf: "be.tf"; tg: "be.tg"; th: "be.th"; ti: "be.ti"; tj: "be.tj"; tk: "be.tk"; tl: "be.tl"; tm: "be.tm"; tn: "be.tn"; to: "be.to"; tp: "be.tp"; tq: "be.tq"; tr: "be.tr"; ts: "be.ts"; tt: "be.tt"; tu: "be.tu"; tv: "be.tv"; tw: "be.tw"; tx: "be.tx"; ty: "be.ty"; tz: "be.tz"; ua: "be.ua"; ub: "be.ub"; uc: "be.uc"; ud: "be.ud"; ue: "be.ue"; uf: "be.uf"; ug: "be.ug"; uh: "be.uh"; ui: "be.ui"; uj: "be.uj"; uk: "be.uk"; ul: "be.ul"; um: "be.um"; un: "be.un"; uo: "be.uo"; up: "be.up"; uq: "be.uq"; ur: "be.ur"; us: "be.us"; ut: "be.ut"; uu: "be.uu"; uv: "be.uv"; uw: "be.uw"; ux: "be.ux"; uy: "be.uy"; uz: "be.uz"; va: "be.va"; vb: "be.vb"; vc: "be.vc"; vd: "be.vd"; ve: "be.ve"; vf: "be.vf"; vg: "be.vg"; vh: "be.vh"; vi: "be.vi"; vj: "be.vj"; vk: "be.vk"; vl: "be.vl"; vm: "be.vm"; vn: "be.vn"; vo: "be.vo"; vp: "be.vp"; vq: "be.vq"; vr: "be.vr"; vs: "be.vs"; vt: "be.vt"; vu: "be.vu"; vv: "be.vv"; vw: "be.vw"; vx: "be.vx"; vy: "be.vy"; vz: "be.vz"; wa: "be.wa"; wb: "be.wb"; wc: "be.wc"; wd: "be.wd"; we: "be.we"; wf: "be.wf"; wg: "be.wg"; wh: "be.wh"; wi: "be.wi"; wj: "be.wj"; wk: "be.wk"; wl: "be.wl"; wm: "be.wm"; wn: "be.wn"; wo: "be.wo"; wp: "be.wp"; wq: "be.wq"; wr: "be.wr"; ws: "be.ws"; wt: "be.wt"; wu: "be.wu"; wv: "be.wv"; ww: "be.ww"; wx: "be.wx"; wy: "be.wy"; wz: "be.wz"; xa: "be.xa"; xb: "be.xb"; xc: "be.xc"; xd: "be.xd"; xe: "be.xe"; xf: "be.xf"; xg: "be.xg"; xh: "be.xh"; xi: "be.xi"; xj: "be.xj"; xk: "be.xk"; xl: "be.xl"; xm: "be.xm"; xn: "be.xn"; xo: "be.xo"; xp: "be.xp"; xq: "be.xq"; xr: "be.xr"; xs: "be.xs"; xt: "be.xt"; xu: "be.xu"; xv: "be.xv"; xw: "be.xw"; xx: "be.xx"; xy: "be.xy"; xz: "be.xz"; ya: "be.ya"; yb: "be.yb"; yc: "be.yc"; yd: "be.yd"; ye: "be.ye"; yf: "be.yf"; yg: "be.yg"; yh: "be.yh"; yi: "be.yi"; yj: "be.yj"; yk: "be.yk"; yl: "be.yl"; ym: "be.ym"; yn: "be.yn"; yo: "be.yo"; yp: "be.yp"; yq: "be.yq"; yr: "be.yr"; ys: "be.ys"; yt: "be.yt"; yu: "be.yu"; yv: "be.yv"; yw: "be.yw"; yx: "be.yx"; yy: "be.yy"; yz: "be.yz"; za: "be.za"; zb: "be.zb"; zc: "be.zc"; zd: "be.zd"; ze: "be.ze"; zf: "be.zf"; zg: "be.zg"; zh: "be.zh"; zi: "be.zi"; zj: "be.zj"; zk: "be.zk"; zl: "be.zl"; zm: "be.zm"; zn: "be.zn"; zo: "be.zo"; zp: "be.zp"; zq: "be.zq"; zr: "be.zr"; zs: "be.zs"; zt: "be.zt"; zu: "be.zu"; zv: "be.zv"; zw: "be.zw"; zx: "be.zx"; zy: "be.zy"; zz: "be.zz"; }; bf: { aa: "bf.aa"; ab: "bf.ab"; ac: "bf.ac"; ad: "bf.ad"; ae: "bf.ae"; af: "bf.af"; ag: "bf.ag"; ah: "bf.ah"; ai: "bf.ai"; aj: "bf.aj"; ak: "bf.ak"; al: "bf.al"; am: "bf.am"; an: "bf.an"; ao: "bf.ao"; ap: "bf.ap"; aq: "bf.aq"; ar: "bf.ar"; as: "bf.as"; at: "bf.at"; au: "bf.au"; av: "bf.av"; aw: "bf.aw"; ax: "bf.ax"; ay: "bf.ay"; az: "bf.az"; ba: "bf.ba"; bb: "bf.bb"; bc: "bf.bc"; bd: "bf.bd"; be: "bf.be"; bf: "bf.bf"; bg: "bf.bg"; bh: "bf.bh"; bi: "bf.bi"; bj: "bf.bj"; bk: "bf.bk"; bl: "bf.bl"; bm: "bf.bm"; bn: "bf.bn"; bo: "bf.bo"; bp: "bf.bp"; bq: "bf.bq"; br: "bf.br"; bs: "bf.bs"; bt: "bf.bt"; bu: "bf.bu"; bv: "bf.bv"; bw: "bf.bw"; bx: "bf.bx"; by: "bf.by"; bz: "bf.bz"; ca: "bf.ca"; cb: "bf.cb"; cc: "bf.cc"; cd: "bf.cd"; ce: "bf.ce"; cf: "bf.cf"; cg: "bf.cg"; ch: "bf.ch"; ci: "bf.ci"; cj: "bf.cj"; ck: "bf.ck"; cl: "bf.cl"; cm: "bf.cm"; cn: "bf.cn"; co: "bf.co"; cp: "bf.cp"; cq: "bf.cq"; cr: "bf.cr"; cs: "bf.cs"; ct: "bf.ct"; cu: "bf.cu"; cv: "bf.cv"; cw: "bf.cw"; cx: "bf.cx"; cy: "bf.cy"; cz: "bf.cz"; da: "bf.da"; db: "bf.db"; dc: "bf.dc"; dd: "bf.dd"; de: "bf.de"; df: "bf.df"; dg: "bf.dg"; dh: "bf.dh"; di: "bf.di"; dj: "bf.dj"; dk: "bf.dk"; dl: "bf.dl"; dm: "bf.dm"; dn: "bf.dn"; do: "bf.do"; dp: "bf.dp"; dq: "bf.dq"; dr: "bf.dr"; ds: "bf.ds"; dt: "bf.dt"; du: "bf.du"; dv: "bf.dv"; dw: "bf.dw"; dx: "bf.dx"; dy: "bf.dy"; dz: "bf.dz"; ea: "bf.ea"; eb: "bf.eb"; ec: "bf.ec"; ed: "bf.ed"; ee: "bf.ee"; ef: "bf.ef"; eg: "bf.eg"; eh: "bf.eh"; ei: "bf.ei"; ej: "bf.ej"; ek: "bf.ek"; el: "bf.el"; em: "bf.em"; en: "bf.en"; eo: "bf.eo"; ep: "bf.ep"; eq: "bf.eq"; er: "bf.er"; es: "bf.es"; et: "bf.et"; eu: "bf.eu"; ev: "bf.ev"; ew: "bf.ew"; ex: "bf.ex"; ey: "bf.ey"; ez: "bf.ez"; fa: "bf.fa"; fb: "bf.fb"; fc: "bf.fc"; fd: "bf.fd"; fe: "bf.fe"; ff: "bf.ff"; fg: "bf.fg"; fh: "bf.fh"; fi: "bf.fi"; fj: "bf.fj"; fk: "bf.fk"; fl: "bf.fl"; fm: "bf.fm"; fn: "bf.fn"; fo: "bf.fo"; fp: "bf.fp"; fq: "bf.fq"; fr: "bf.fr"; fs: "bf.fs"; ft: "bf.ft"; fu: "bf.fu"; fv: "bf.fv"; fw: "bf.fw"; fx: "bf.fx"; fy: "bf.fy"; fz: "bf.fz"; ga: "bf.ga"; gb: "bf.gb"; gc: "bf.gc"; gd: "bf.gd"; ge: "bf.ge"; gf: "bf.gf"; gg: "bf.gg"; gh: "bf.gh"; gi: "bf.gi"; gj: "bf.gj"; gk: "bf.gk"; gl: "bf.gl"; gm: "bf.gm"; gn: "bf.gn"; go: "bf.go"; gp: "bf.gp"; gq: "bf.gq"; gr: "bf.gr"; gs: "bf.gs"; gt: "bf.gt"; gu: "bf.gu"; gv: "bf.gv"; gw: "bf.gw"; gx: "bf.gx"; gy: "bf.gy"; gz: "bf.gz"; ha: "bf.ha"; hb: "bf.hb"; hc: "bf.hc"; hd: "bf.hd"; he: "bf.he"; hf: "bf.hf"; hg: "bf.hg"; hh: "bf.hh"; hi: "bf.hi"; hj: "bf.hj"; hk: "bf.hk"; hl: "bf.hl"; hm: "bf.hm"; hn: "bf.hn"; ho: "bf.ho"; hp: "bf.hp"; hq: "bf.hq"; hr: "bf.hr"; hs: "bf.hs"; ht: "bf.ht"; hu: "bf.hu"; hv: "bf.hv"; hw: "bf.hw"; hx: "bf.hx"; hy: "bf.hy"; hz: "bf.hz"; ia: "bf.ia"; ib: "bf.ib"; ic: "bf.ic"; id: "bf.id"; ie: "bf.ie"; if: "bf.if"; ig: "bf.ig"; ih: "bf.ih"; ii: "bf.ii"; ij: "bf.ij"; ik: "bf.ik"; il: "bf.il"; im: "bf.im"; in: "bf.in"; io: "bf.io"; ip: "bf.ip"; iq: "bf.iq"; ir: "bf.ir"; is: "bf.is"; it: "bf.it"; iu: "bf.iu"; iv: "bf.iv"; iw: "bf.iw"; ix: "bf.ix"; iy: "bf.iy"; iz: "bf.iz"; ja: "bf.ja"; jb: "bf.jb"; jc: "bf.jc"; jd: "bf.jd"; je: "bf.je"; jf: "bf.jf"; jg: "bf.jg"; jh: "bf.jh"; ji: "bf.ji"; jj: "bf.jj"; jk: "bf.jk"; jl: "bf.jl"; jm: "bf.jm"; jn: "bf.jn"; jo: "bf.jo"; jp: "bf.jp"; jq: "bf.jq"; jr: "bf.jr"; js: "bf.js"; jt: "bf.jt"; ju: "bf.ju"; jv: "bf.jv"; jw: "bf.jw"; jx: "bf.jx"; jy: "bf.jy"; jz: "bf.jz"; ka: "bf.ka"; kb: "bf.kb"; kc: "bf.kc"; kd: "bf.kd"; ke: "bf.ke"; kf: "bf.kf"; kg: "bf.kg"; kh: "bf.kh"; ki: "bf.ki"; kj: "bf.kj"; kk: "bf.kk"; kl: "bf.kl"; km: "bf.km"; kn: "bf.kn"; ko: "bf.ko"; kp: "bf.kp"; kq: "bf.kq"; kr: "bf.kr"; ks: "bf.ks"; kt: "bf.kt"; ku: "bf.ku"; kv: "bf.kv"; kw: "bf.kw"; kx: "bf.kx"; ky: "bf.ky"; kz: "bf.kz"; la: "bf.la"; lb: "bf.lb"; lc: "bf.lc"; ld: "bf.ld"; le: "bf.le"; lf: "bf.lf"; lg: "bf.lg"; lh: "bf.lh"; li: "bf.li"; lj: "bf.lj"; lk: "bf.lk"; ll: "bf.ll"; lm: "bf.lm"; ln: "bf.ln"; lo: "bf.lo"; lp: "bf.lp"; lq: "bf.lq"; lr: "bf.lr"; ls: "bf.ls"; lt: "bf.lt"; lu: "bf.lu"; lv: "bf.lv"; lw: "bf.lw"; lx: "bf.lx"; ly: "bf.ly"; lz: "bf.lz"; ma: "bf.ma"; mb: "bf.mb"; mc: "bf.mc"; md: "bf.md"; me: "bf.me"; mf: "bf.mf"; mg: "bf.mg"; mh: "bf.mh"; mi: "bf.mi"; mj: "bf.mj"; mk: "bf.mk"; ml: "bf.ml"; mm: "bf.mm"; mn: "bf.mn"; mo: "bf.mo"; mp: "bf.mp"; mq: "bf.mq"; mr: "bf.mr"; ms: "bf.ms"; mt: "bf.mt"; mu: "bf.mu"; mv: "bf.mv"; mw: "bf.mw"; mx: "bf.mx"; my: "bf.my"; mz: "bf.mz"; na: "bf.na"; nb: "bf.nb"; nc: "bf.nc"; nd: "bf.nd"; ne: "bf.ne"; nf: "bf.nf"; ng: "bf.ng"; nh: "bf.nh"; ni: "bf.ni"; nj: "bf.nj"; nk: "bf.nk"; nl: "bf.nl"; nm: "bf.nm"; nn: "bf.nn"; no: "bf.no"; np: "bf.np"; nq: "bf.nq"; nr: "bf.nr"; ns: "bf.ns"; nt: "bf.nt"; nu: "bf.nu"; nv: "bf.nv"; nw: "bf.nw"; nx: "bf.nx"; ny: "bf.ny"; nz: "bf.nz"; oa: "bf.oa"; ob: "bf.ob"; oc: "bf.oc"; od: "bf.od"; oe: "bf.oe"; of: "bf.of"; og: "bf.og"; oh: "bf.oh"; oi: "bf.oi"; oj: "bf.oj"; ok: "bf.ok"; ol: "bf.ol"; om: "bf.om"; on: "bf.on"; oo: "bf.oo"; op: "bf.op"; oq: "bf.oq"; or: "bf.or"; os: "bf.os"; ot: "bf.ot"; ou: "bf.ou"; ov: "bf.ov"; ow: "bf.ow"; ox: "bf.ox"; oy: "bf.oy"; oz: "bf.oz"; pa: "bf.pa"; pb: "bf.pb"; pc: "bf.pc"; pd: "bf.pd"; pe: "bf.pe"; pf: "bf.pf"; pg: "bf.pg"; ph: "bf.ph"; pi: "bf.pi"; pj: "bf.pj"; pk: "bf.pk"; pl: "bf.pl"; pm: "bf.pm"; pn: "bf.pn"; po: "bf.po"; pp: "bf.pp"; pq: "bf.pq"; pr: "bf.pr"; ps: "bf.ps"; pt: "bf.pt"; pu: "bf.pu"; pv: "bf.pv"; pw: "bf.pw"; px: "bf.px"; py: "bf.py"; pz: "bf.pz"; qa: "bf.qa"; qb: "bf.qb"; qc: "bf.qc"; qd: "bf.qd"; qe: "bf.qe"; qf: "bf.qf"; qg: "bf.qg"; qh: "bf.qh"; qi: "bf.qi"; qj: "bf.qj"; qk: "bf.qk"; ql: "bf.ql"; qm: "bf.qm"; qn: "bf.qn"; qo: "bf.qo"; qp: "bf.qp"; qq: "bf.qq"; qr: "bf.qr"; qs: "bf.qs"; qt: "bf.qt"; qu: "bf.qu"; qv: "bf.qv"; qw: "bf.qw"; qx: "bf.qx"; qy: "bf.qy"; qz: "bf.qz"; ra: "bf.ra"; rb: "bf.rb"; rc: "bf.rc"; rd: "bf.rd"; re: "bf.re"; rf: "bf.rf"; rg: "bf.rg"; rh: "bf.rh"; ri: "bf.ri"; rj: "bf.rj"; rk: "bf.rk"; rl: "bf.rl"; rm: "bf.rm"; rn: "bf.rn"; ro: "bf.ro"; rp: "bf.rp"; rq: "bf.rq"; rr: "bf.rr"; rs: "bf.rs"; rt: "bf.rt"; ru: "bf.ru"; rv: "bf.rv"; rw: "bf.rw"; rx: "bf.rx"; ry: "bf.ry"; rz: "bf.rz"; sa: "bf.sa"; sb: "bf.sb"; sc: "bf.sc"; sd: "bf.sd"; se: "bf.se"; sf: "bf.sf"; sg: "bf.sg"; sh: "bf.sh"; si: "bf.si"; sj: "bf.sj"; sk: "bf.sk"; sl: "bf.sl"; sm: "bf.sm"; sn: "bf.sn"; so: "bf.so"; sp: "bf.sp"; sq: "bf.sq"; sr: "bf.sr"; ss: "bf.ss"; st: "bf.st"; su: "bf.su"; sv: "bf.sv"; sw: "bf.sw"; sx: "bf.sx"; sy: "bf.sy"; sz: "bf.sz"; ta: "bf.ta"; tb: "bf.tb"; tc: "bf.tc"; td: "bf.td"; te: "bf.te"; tf: "bf.tf"; tg: "bf.tg"; th: "bf.th"; ti: "bf.ti"; tj: "bf.tj"; tk: "bf.tk"; tl: "bf.tl"; tm: "bf.tm"; tn: "bf.tn"; to: "bf.to"; tp: "bf.tp"; tq: "bf.tq"; tr: "bf.tr"; ts: "bf.ts"; tt: "bf.tt"; tu: "bf.tu"; tv: "bf.tv"; tw: "bf.tw"; tx: "bf.tx"; ty: "bf.ty"; tz: "bf.tz"; ua: "bf.ua"; ub: "bf.ub"; uc: "bf.uc"; ud: "bf.ud"; ue: "bf.ue"; uf: "bf.uf"; ug: "bf.ug"; uh: "bf.uh"; ui: "bf.ui"; uj: "bf.uj"; uk: "bf.uk"; ul: "bf.ul"; um: "bf.um"; un: "bf.un"; uo: "bf.uo"; up: "bf.up"; uq: "bf.uq"; ur: "bf.ur"; us: "bf.us"; ut: "bf.ut"; uu: "bf.uu"; uv: "bf.uv"; uw: "bf.uw"; ux: "bf.ux"; uy: "bf.uy"; uz: "bf.uz"; va: "bf.va"; vb: "bf.vb"; vc: "bf.vc"; vd: "bf.vd"; ve: "bf.ve"; vf: "bf.vf"; vg: "bf.vg"; vh: "bf.vh"; vi: "bf.vi"; vj: "bf.vj"; vk: "bf.vk"; vl: "bf.vl"; vm: "bf.vm"; vn: "bf.vn"; vo: "bf.vo"; vp: "bf.vp"; vq: "bf.vq"; vr: "bf.vr"; vs: "bf.vs"; vt: "bf.vt"; vu: "bf.vu"; vv: "bf.vv"; vw: "bf.vw"; vx: "bf.vx"; vy: "bf.vy"; vz: "bf.vz"; wa: "bf.wa"; wb: "bf.wb"; wc: "bf.wc"; wd: "bf.wd"; we: "bf.we"; wf: "bf.wf"; wg: "bf.wg"; wh: "bf.wh"; wi: "bf.wi"; wj: "bf.wj"; wk: "bf.wk"; wl: "bf.wl"; wm: "bf.wm"; wn: "bf.wn"; wo: "bf.wo"; wp: "bf.wp"; wq: "bf.wq"; wr: "bf.wr"; ws: "bf.ws"; wt: "bf.wt"; wu: "bf.wu"; wv: "bf.wv"; ww: "bf.ww"; wx: "bf.wx"; wy: "bf.wy"; wz: "bf.wz"; xa: "bf.xa"; xb: "bf.xb"; xc: "bf.xc"; xd: "bf.xd"; xe: "bf.xe"; xf: "bf.xf"; xg: "bf.xg"; xh: "bf.xh"; xi: "bf.xi"; xj: "bf.xj"; xk: "bf.xk"; xl: "bf.xl"; xm: "bf.xm"; xn: "bf.xn"; xo: "bf.xo"; xp: "bf.xp"; xq: "bf.xq"; xr: "bf.xr"; xs: "bf.xs"; xt: "bf.xt"; xu: "bf.xu"; xv: "bf.xv"; xw: "bf.xw"; xx: "bf.xx"; xy: "bf.xy"; xz: "bf.xz"; ya: "bf.ya"; yb: "bf.yb"; yc: "bf.yc"; yd: "bf.yd"; ye: "bf.ye"; yf: "bf.yf"; yg: "bf.yg"; yh: "bf.yh"; yi: "bf.yi"; yj: "bf.yj"; yk: "bf.yk"; yl: "bf.yl"; ym: "bf.ym"; yn: "bf.yn"; yo: "bf.yo"; yp: "bf.yp"; yq: "bf.yq"; yr: "bf.yr"; ys: "bf.ys"; yt: "bf.yt"; yu: "bf.yu"; yv: "bf.yv"; yw: "bf.yw"; yx: "bf.yx"; yy: "bf.yy"; yz: "bf.yz"; za: "bf.za"; zb: "bf.zb"; zc: "bf.zc"; zd: "bf.zd"; ze: "bf.ze"; zf: "bf.zf"; zg: "bf.zg"; zh: "bf.zh"; zi: "bf.zi"; zj: "bf.zj"; zk: "bf.zk"; zl: "bf.zl"; zm: "bf.zm"; zn: "bf.zn"; zo: "bf.zo"; zp: "bf.zp"; zq: "bf.zq"; zr: "bf.zr"; zs: "bf.zs"; zt: "bf.zt"; zu: "bf.zu"; zv: "bf.zv"; zw: "bf.zw"; zx: "bf.zx"; zy: "bf.zy"; zz: "bf.zz"; }; bg: { aa: "bg.aa"; ab: "bg.ab"; ac: "bg.ac"; ad: "bg.ad"; ae: "bg.ae"; af: "bg.af"; ag: "bg.ag"; ah: "bg.ah"; ai: "bg.ai"; aj: "bg.aj"; ak: "bg.ak"; al: "bg.al"; am: "bg.am"; an: "bg.an"; ao: "bg.ao"; ap: "bg.ap"; aq: "bg.aq"; ar: "bg.ar"; as: "bg.as"; at: "bg.at"; au: "bg.au"; av: "bg.av"; aw: "bg.aw"; ax: "bg.ax"; ay: "bg.ay"; az: "bg.az"; ba: "bg.ba"; bb: "bg.bb"; bc: "bg.bc"; bd: "bg.bd"; be: "bg.be"; bf: "bg.bf"; bg: "bg.bg"; bh: "bg.bh"; bi: "bg.bi"; bj: "bg.bj"; bk: "bg.bk"; bl: "bg.bl"; bm: "bg.bm"; bn: "bg.bn"; bo: "bg.bo"; bp: "bg.bp"; bq: "bg.bq"; br: "bg.br"; bs: "bg.bs"; bt: "bg.bt"; bu: "bg.bu"; bv: "bg.bv"; bw: "bg.bw"; bx: "bg.bx"; by: "bg.by"; bz: "bg.bz"; ca: "bg.ca"; cb: "bg.cb"; cc: "bg.cc"; cd: "bg.cd"; ce: "bg.ce"; cf: "bg.cf"; cg: "bg.cg"; ch: "bg.ch"; ci: "bg.ci"; cj: "bg.cj"; ck: "bg.ck"; cl: "bg.cl"; cm: "bg.cm"; cn: "bg.cn"; co: "bg.co"; cp: "bg.cp"; cq: "bg.cq"; cr: "bg.cr"; cs: "bg.cs"; ct: "bg.ct"; cu: "bg.cu"; cv: "bg.cv"; cw: "bg.cw"; cx: "bg.cx"; cy: "bg.cy"; cz: "bg.cz"; da: "bg.da"; db: "bg.db"; dc: "bg.dc"; dd: "bg.dd"; de: "bg.de"; df: "bg.df"; dg: "bg.dg"; dh: "bg.dh"; di: "bg.di"; dj: "bg.dj"; dk: "bg.dk"; dl: "bg.dl"; dm: "bg.dm"; dn: "bg.dn"; do: "bg.do"; dp: "bg.dp"; dq: "bg.dq"; dr: "bg.dr"; ds: "bg.ds"; dt: "bg.dt"; du: "bg.du"; dv: "bg.dv"; dw: "bg.dw"; dx: "bg.dx"; dy: "bg.dy"; dz: "bg.dz"; ea: "bg.ea"; eb: "bg.eb"; ec: "bg.ec"; ed: "bg.ed"; ee: "bg.ee"; ef: "bg.ef"; eg: "bg.eg"; eh: "bg.eh"; ei: "bg.ei"; ej: "bg.ej"; ek: "bg.ek"; el: "bg.el"; em: "bg.em"; en: "bg.en"; eo: "bg.eo"; ep: "bg.ep"; eq: "bg.eq"; er: "bg.er"; es: "bg.es"; et: "bg.et"; eu: "bg.eu"; ev: "bg.ev"; ew: "bg.ew"; ex: "bg.ex"; ey: "bg.ey"; ez: "bg.ez"; fa: "bg.fa"; fb: "bg.fb"; fc: "bg.fc"; fd: "bg.fd"; fe: "bg.fe"; ff: "bg.ff"; fg: "bg.fg"; fh: "bg.fh"; fi: "bg.fi"; fj: "bg.fj"; fk: "bg.fk"; fl: "bg.fl"; fm: "bg.fm"; fn: "bg.fn"; fo: "bg.fo"; fp: "bg.fp"; fq: "bg.fq"; fr: "bg.fr"; fs: "bg.fs"; ft: "bg.ft"; fu: "bg.fu"; fv: "bg.fv"; fw: "bg.fw"; fx: "bg.fx"; fy: "bg.fy"; fz: "bg.fz"; ga: "bg.ga"; gb: "bg.gb"; gc: "bg.gc"; gd: "bg.gd"; ge: "bg.ge"; gf: "bg.gf"; gg: "bg.gg"; gh: "bg.gh"; gi: "bg.gi"; gj: "bg.gj"; gk: "bg.gk"; gl: "bg.gl"; gm: "bg.gm"; gn: "bg.gn"; go: "bg.go"; gp: "bg.gp"; gq: "bg.gq"; gr: "bg.gr"; gs: "bg.gs"; gt: "bg.gt"; gu: "bg.gu"; gv: "bg.gv"; gw: "bg.gw"; gx: "bg.gx"; gy: "bg.gy"; gz: "bg.gz"; ha: "bg.ha"; hb: "bg.hb"; hc: "bg.hc"; hd: "bg.hd"; he: "bg.he"; hf: "bg.hf"; hg: "bg.hg"; hh: "bg.hh"; hi: "bg.hi"; hj: "bg.hj"; hk: "bg.hk"; hl: "bg.hl"; hm: "bg.hm"; hn: "bg.hn"; ho: "bg.ho"; hp: "bg.hp"; hq: "bg.hq"; hr: "bg.hr"; hs: "bg.hs"; ht: "bg.ht"; hu: "bg.hu"; hv: "bg.hv"; hw: "bg.hw"; hx: "bg.hx"; hy: "bg.hy"; hz: "bg.hz"; ia: "bg.ia"; ib: "bg.ib"; ic: "bg.ic"; id: "bg.id"; ie: "bg.ie"; if: "bg.if"; ig: "bg.ig"; ih: "bg.ih"; ii: "bg.ii"; ij: "bg.ij"; ik: "bg.ik"; il: "bg.il"; im: "bg.im"; in: "bg.in"; io: "bg.io"; ip: "bg.ip"; iq: "bg.iq"; ir: "bg.ir"; is: "bg.is"; it: "bg.it"; iu: "bg.iu"; iv: "bg.iv"; iw: "bg.iw"; ix: "bg.ix"; iy: "bg.iy"; iz: "bg.iz"; ja: "bg.ja"; jb: "bg.jb"; jc: "bg.jc"; jd: "bg.jd"; je: "bg.je"; jf: "bg.jf"; jg: "bg.jg"; jh: "bg.jh"; ji: "bg.ji"; jj: "bg.jj"; jk: "bg.jk"; jl: "bg.jl"; jm: "bg.jm"; jn: "bg.jn"; jo: "bg.jo"; jp: "bg.jp"; jq: "bg.jq"; jr: "bg.jr"; js: "bg.js"; jt: "bg.jt"; ju: "bg.ju"; jv: "bg.jv"; jw: "bg.jw"; jx: "bg.jx"; jy: "bg.jy"; jz: "bg.jz"; ka: "bg.ka"; kb: "bg.kb"; kc: "bg.kc"; kd: "bg.kd"; ke: "bg.ke"; kf: "bg.kf"; kg: "bg.kg"; kh: "bg.kh"; ki: "bg.ki"; kj: "bg.kj"; kk: "bg.kk"; kl: "bg.kl"; km: "bg.km"; kn: "bg.kn"; ko: "bg.ko"; kp: "bg.kp"; kq: "bg.kq"; kr: "bg.kr"; ks: "bg.ks"; kt: "bg.kt"; ku: "bg.ku"; kv: "bg.kv"; kw: "bg.kw"; kx: "bg.kx"; ky: "bg.ky"; kz: "bg.kz"; la: "bg.la"; lb: "bg.lb"; lc: "bg.lc"; ld: "bg.ld"; le: "bg.le"; lf: "bg.lf"; lg: "bg.lg"; lh: "bg.lh"; li: "bg.li"; lj: "bg.lj"; lk: "bg.lk"; ll: "bg.ll"; lm: "bg.lm"; ln: "bg.ln"; lo: "bg.lo"; lp: "bg.lp"; lq: "bg.lq"; lr: "bg.lr"; ls: "bg.ls"; lt: "bg.lt"; lu: "bg.lu"; lv: "bg.lv"; lw: "bg.lw"; lx: "bg.lx"; ly: "bg.ly"; lz: "bg.lz"; ma: "bg.ma"; mb: "bg.mb"; mc: "bg.mc"; md: "bg.md"; me: "bg.me"; mf: "bg.mf"; mg: "bg.mg"; mh: "bg.mh"; mi: "bg.mi"; mj: "bg.mj"; mk: "bg.mk"; ml: "bg.ml"; mm: "bg.mm"; mn: "bg.mn"; mo: "bg.mo"; mp: "bg.mp"; mq: "bg.mq"; mr: "bg.mr"; ms: "bg.ms"; mt: "bg.mt"; mu: "bg.mu"; mv: "bg.mv"; mw: "bg.mw"; mx: "bg.mx"; my: "bg.my"; mz: "bg.mz"; na: "bg.na"; nb: "bg.nb"; nc: "bg.nc"; nd: "bg.nd"; ne: "bg.ne"; nf: "bg.nf"; ng: "bg.ng"; nh: "bg.nh"; ni: "bg.ni"; nj: "bg.nj"; nk: "bg.nk"; nl: "bg.nl"; nm: "bg.nm"; nn: "bg.nn"; no: "bg.no"; np: "bg.np"; nq: "bg.nq"; nr: "bg.nr"; ns: "bg.ns"; nt: "bg.nt"; nu: "bg.nu"; nv: "bg.nv"; nw: "bg.nw"; nx: "bg.nx"; ny: "bg.ny"; nz: "bg.nz"; oa: "bg.oa"; ob: "bg.ob"; oc: "bg.oc"; od: "bg.od"; oe: "bg.oe"; of: "bg.of"; og: "bg.og"; oh: "bg.oh"; oi: "bg.oi"; oj: "bg.oj"; ok: "bg.ok"; ol: "bg.ol"; om: "bg.om"; on: "bg.on"; oo: "bg.oo"; op: "bg.op"; oq: "bg.oq"; or: "bg.or"; os: "bg.os"; ot: "bg.ot"; ou: "bg.ou"; ov: "bg.ov"; ow: "bg.ow"; ox: "bg.ox"; oy: "bg.oy"; oz: "bg.oz"; pa: "bg.pa"; pb: "bg.pb"; pc: "bg.pc"; pd: "bg.pd"; pe: "bg.pe"; pf: "bg.pf"; pg: "bg.pg"; ph: "bg.ph"; pi: "bg.pi"; pj: "bg.pj"; pk: "bg.pk"; pl: "bg.pl"; pm: "bg.pm"; pn: "bg.pn"; po: "bg.po"; pp: "bg.pp"; pq: "bg.pq"; pr: "bg.pr"; ps: "bg.ps"; pt: "bg.pt"; pu: "bg.pu"; pv: "bg.pv"; pw: "bg.pw"; px: "bg.px"; py: "bg.py"; pz: "bg.pz"; qa: "bg.qa"; qb: "bg.qb"; qc: "bg.qc"; qd: "bg.qd"; qe: "bg.qe"; qf: "bg.qf"; qg: "bg.qg"; qh: "bg.qh"; qi: "bg.qi"; qj: "bg.qj"; qk: "bg.qk"; ql: "bg.ql"; qm: "bg.qm"; qn: "bg.qn"; qo: "bg.qo"; qp: "bg.qp"; qq: "bg.qq"; qr: "bg.qr"; qs: "bg.qs"; qt: "bg.qt"; qu: "bg.qu"; qv: "bg.qv"; qw: "bg.qw"; qx: "bg.qx"; qy: "bg.qy"; qz: "bg.qz"; ra: "bg.ra"; rb: "bg.rb"; rc: "bg.rc"; rd: "bg.rd"; re: "bg.re"; rf: "bg.rf"; rg: "bg.rg"; rh: "bg.rh"; ri: "bg.ri"; rj: "bg.rj"; rk: "bg.rk"; rl: "bg.rl"; rm: "bg.rm"; rn: "bg.rn"; ro: "bg.ro"; rp: "bg.rp"; rq: "bg.rq"; rr: "bg.rr"; rs: "bg.rs"; rt: "bg.rt"; ru: "bg.ru"; rv: "bg.rv"; rw: "bg.rw"; rx: "bg.rx"; ry: "bg.ry"; rz: "bg.rz"; sa: "bg.sa"; sb: "bg.sb"; sc: "bg.sc"; sd: "bg.sd"; se: "bg.se"; sf: "bg.sf"; sg: "bg.sg"; sh: "bg.sh"; si: "bg.si"; sj: "bg.sj"; sk: "bg.sk"; sl: "bg.sl"; sm: "bg.sm"; sn: "bg.sn"; so: "bg.so"; sp: "bg.sp"; sq: "bg.sq"; sr: "bg.sr"; ss: "bg.ss"; st: "bg.st"; su: "bg.su"; sv: "bg.sv"; sw: "bg.sw"; sx: "bg.sx"; sy: "bg.sy"; sz: "bg.sz"; ta: "bg.ta"; tb: "bg.tb"; tc: "bg.tc"; td: "bg.td"; te: "bg.te"; tf: "bg.tf"; tg: "bg.tg"; th: "bg.th"; ti: "bg.ti"; tj: "bg.tj"; tk: "bg.tk"; tl: "bg.tl"; tm: "bg.tm"; tn: "bg.tn"; to: "bg.to"; tp: "bg.tp"; tq: "bg.tq"; tr: "bg.tr"; ts: "bg.ts"; tt: "bg.tt"; tu: "bg.tu"; tv: "bg.tv"; tw: "bg.tw"; tx: "bg.tx"; ty: "bg.ty"; tz: "bg.tz"; ua: "bg.ua"; ub: "bg.ub"; uc: "bg.uc"; ud: "bg.ud"; ue: "bg.ue"; uf: "bg.uf"; ug: "bg.ug"; uh: "bg.uh"; ui: "bg.ui"; uj: "bg.uj"; uk: "bg.uk"; ul: "bg.ul"; um: "bg.um"; un: "bg.un"; uo: "bg.uo"; up: "bg.up"; uq: "bg.uq"; ur: "bg.ur"; us: "bg.us"; ut: "bg.ut"; uu: "bg.uu"; uv: "bg.uv"; uw: "bg.uw"; ux: "bg.ux"; uy: "bg.uy"; uz: "bg.uz"; va: "bg.va"; vb: "bg.vb"; vc: "bg.vc"; vd: "bg.vd"; ve: "bg.ve"; vf: "bg.vf"; vg: "bg.vg"; vh: "bg.vh"; vi: "bg.vi"; vj: "bg.vj"; vk: "bg.vk"; vl: "bg.vl"; vm: "bg.vm"; vn: "bg.vn"; vo: "bg.vo"; vp: "bg.vp"; vq: "bg.vq"; vr: "bg.vr"; vs: "bg.vs"; vt: "bg.vt"; vu: "bg.vu"; vv: "bg.vv"; vw: "bg.vw"; vx: "bg.vx"; vy: "bg.vy"; vz: "bg.vz"; wa: "bg.wa"; wb: "bg.wb"; wc: "bg.wc"; wd: "bg.wd"; we: "bg.we"; wf: "bg.wf"; wg: "bg.wg"; wh: "bg.wh"; wi: "bg.wi"; wj: "bg.wj"; wk: "bg.wk"; wl: "bg.wl"; wm: "bg.wm"; wn: "bg.wn"; wo: "bg.wo"; wp: "bg.wp"; wq: "bg.wq"; wr: "bg.wr"; ws: "bg.ws"; wt: "bg.wt"; wu: "bg.wu"; wv: "bg.wv"; ww: "bg.ww"; wx: "bg.wx"; wy: "bg.wy"; wz: "bg.wz"; xa: "bg.xa"; xb: "bg.xb"; xc: "bg.xc"; xd: "bg.xd"; xe: "bg.xe"; xf: "bg.xf"; xg: "bg.xg"; xh: "bg.xh"; xi: "bg.xi"; xj: "bg.xj"; xk: "bg.xk"; xl: "bg.xl"; xm: "bg.xm"; xn: "bg.xn"; xo: "bg.xo"; xp: "bg.xp"; xq: "bg.xq"; xr: "bg.xr"; xs: "bg.xs"; xt: "bg.xt"; xu: "bg.xu"; xv: "bg.xv"; xw: "bg.xw"; xx: "bg.xx"; xy: "bg.xy"; xz: "bg.xz"; ya: "bg.ya"; yb: "bg.yb"; yc: "bg.yc"; yd: "bg.yd"; ye: "bg.ye"; yf: "bg.yf"; yg: "bg.yg"; yh: "bg.yh"; yi: "bg.yi"; yj: "bg.yj"; yk: "bg.yk"; yl: "bg.yl"; ym: "bg.ym"; yn: "bg.yn"; yo: "bg.yo"; yp: "bg.yp"; yq: "bg.yq"; yr: "bg.yr"; ys: "bg.ys"; yt: "bg.yt"; yu: "bg.yu"; yv: "bg.yv"; yw: "bg.yw"; yx: "bg.yx"; yy: "bg.yy"; yz: "bg.yz"; za: "bg.za"; zb: "bg.zb"; zc: "bg.zc"; zd: "bg.zd"; ze: "bg.ze"; zf: "bg.zf"; zg: "bg.zg"; zh: "bg.zh"; zi: "bg.zi"; zj: "bg.zj"; zk: "bg.zk"; zl: "bg.zl"; zm: "bg.zm"; zn: "bg.zn"; zo: "bg.zo"; zp: "bg.zp"; zq: "bg.zq"; zr: "bg.zr"; zs: "bg.zs"; zt: "bg.zt"; zu: "bg.zu"; zv: "bg.zv"; zw: "bg.zw"; zx: "bg.zx"; zy: "bg.zy"; zz: "bg.zz"; }; bh: { aa: "bh.aa"; ab: "bh.ab"; ac: "bh.ac"; ad: "bh.ad"; ae: "bh.ae"; af: "bh.af"; ag: "bh.ag"; ah: "bh.ah"; ai: "bh.ai"; aj: "bh.aj"; ak: "bh.ak"; al: "bh.al"; am: "bh.am"; an: "bh.an"; ao: "bh.ao"; ap: "bh.ap"; aq: "bh.aq"; ar: "bh.ar"; as: "bh.as"; at: "bh.at"; au: "bh.au"; av: "bh.av"; aw: "bh.aw"; ax: "bh.ax"; ay: "bh.ay"; az: "bh.az"; ba: "bh.ba"; bb: "bh.bb"; bc: "bh.bc"; bd: "bh.bd"; be: "bh.be"; bf: "bh.bf"; bg: "bh.bg"; bh: "bh.bh"; bi: "bh.bi"; bj: "bh.bj"; bk: "bh.bk"; bl: "bh.bl"; bm: "bh.bm"; bn: "bh.bn"; bo: "bh.bo"; bp: "bh.bp"; bq: "bh.bq"; br: "bh.br"; bs: "bh.bs"; bt: "bh.bt"; bu: "bh.bu"; bv: "bh.bv"; bw: "bh.bw"; bx: "bh.bx"; by: "bh.by"; bz: "bh.bz"; ca: "bh.ca"; cb: "bh.cb"; cc: "bh.cc"; cd: "bh.cd"; ce: "bh.ce"; cf: "bh.cf"; cg: "bh.cg"; ch: "bh.ch"; ci: "bh.ci"; cj: "bh.cj"; ck: "bh.ck"; cl: "bh.cl"; cm: "bh.cm"; cn: "bh.cn"; co: "bh.co"; cp: "bh.cp"; cq: "bh.cq"; cr: "bh.cr"; cs: "bh.cs"; ct: "bh.ct"; cu: "bh.cu"; cv: "bh.cv"; cw: "bh.cw"; cx: "bh.cx"; cy: "bh.cy"; cz: "bh.cz"; da: "bh.da"; db: "bh.db"; dc: "bh.dc"; dd: "bh.dd"; de: "bh.de"; df: "bh.df"; dg: "bh.dg"; dh: "bh.dh"; di: "bh.di"; dj: "bh.dj"; dk: "bh.dk"; dl: "bh.dl"; dm: "bh.dm"; dn: "bh.dn"; do: "bh.do"; dp: "bh.dp"; dq: "bh.dq"; dr: "bh.dr"; ds: "bh.ds"; dt: "bh.dt"; du: "bh.du"; dv: "bh.dv"; dw: "bh.dw"; dx: "bh.dx"; dy: "bh.dy"; dz: "bh.dz"; ea: "bh.ea"; eb: "bh.eb"; ec: "bh.ec"; ed: "bh.ed"; ee: "bh.ee"; ef: "bh.ef"; eg: "bh.eg"; eh: "bh.eh"; ei: "bh.ei"; ej: "bh.ej"; ek: "bh.ek"; el: "bh.el"; em: "bh.em"; en: "bh.en"; eo: "bh.eo"; ep: "bh.ep"; eq: "bh.eq"; er: "bh.er"; es: "bh.es"; et: "bh.et"; eu: "bh.eu"; ev: "bh.ev"; ew: "bh.ew"; ex: "bh.ex"; ey: "bh.ey"; ez: "bh.ez"; fa: "bh.fa"; fb: "bh.fb"; fc: "bh.fc"; fd: "bh.fd"; fe: "bh.fe"; ff: "bh.ff"; fg: "bh.fg"; fh: "bh.fh"; fi: "bh.fi"; fj: "bh.fj"; fk: "bh.fk"; fl: "bh.fl"; fm: "bh.fm"; fn: "bh.fn"; fo: "bh.fo"; fp: "bh.fp"; fq: "bh.fq"; fr: "bh.fr"; fs: "bh.fs"; ft: "bh.ft"; fu: "bh.fu"; fv: "bh.fv"; fw: "bh.fw"; fx: "bh.fx"; fy: "bh.fy"; fz: "bh.fz"; ga: "bh.ga"; gb: "bh.gb"; gc: "bh.gc"; gd: "bh.gd"; ge: "bh.ge"; gf: "bh.gf"; gg: "bh.gg"; gh: "bh.gh"; gi: "bh.gi"; gj: "bh.gj"; gk: "bh.gk"; gl: "bh.gl"; gm: "bh.gm"; gn: "bh.gn"; go: "bh.go"; gp: "bh.gp"; gq: "bh.gq"; gr: "bh.gr"; gs: "bh.gs"; gt: "bh.gt"; gu: "bh.gu"; gv: "bh.gv"; gw: "bh.gw"; gx: "bh.gx"; gy: "bh.gy"; gz: "bh.gz"; ha: "bh.ha"; hb: "bh.hb"; hc: "bh.hc"; hd: "bh.hd"; he: "bh.he"; hf: "bh.hf"; hg: "bh.hg"; hh: "bh.hh"; hi: "bh.hi"; hj: "bh.hj"; hk: "bh.hk"; hl: "bh.hl"; hm: "bh.hm"; hn: "bh.hn"; ho: "bh.ho"; hp: "bh.hp"; hq: "bh.hq"; hr: "bh.hr"; hs: "bh.hs"; ht: "bh.ht"; hu: "bh.hu"; hv: "bh.hv"; hw: "bh.hw"; hx: "bh.hx"; hy: "bh.hy"; hz: "bh.hz"; ia: "bh.ia"; ib: "bh.ib"; ic: "bh.ic"; id: "bh.id"; ie: "bh.ie"; if: "bh.if"; ig: "bh.ig"; ih: "bh.ih"; ii: "bh.ii"; ij: "bh.ij"; ik: "bh.ik"; il: "bh.il"; im: "bh.im"; in: "bh.in"; io: "bh.io"; ip: "bh.ip"; iq: "bh.iq"; ir: "bh.ir"; is: "bh.is"; it: "bh.it"; iu: "bh.iu"; iv: "bh.iv"; iw: "bh.iw"; ix: "bh.ix"; iy: "bh.iy"; iz: "bh.iz"; ja: "bh.ja"; jb: "bh.jb"; jc: "bh.jc"; jd: "bh.jd"; je: "bh.je"; jf: "bh.jf"; jg: "bh.jg"; jh: "bh.jh"; ji: "bh.ji"; jj: "bh.jj"; jk: "bh.jk"; jl: "bh.jl"; jm: "bh.jm"; jn: "bh.jn"; jo: "bh.jo"; jp: "bh.jp"; jq: "bh.jq"; jr: "bh.jr"; js: "bh.js"; jt: "bh.jt"; ju: "bh.ju"; jv: "bh.jv"; jw: "bh.jw"; jx: "bh.jx"; jy: "bh.jy"; jz: "bh.jz"; ka: "bh.ka"; kb: "bh.kb"; kc: "bh.kc"; kd: "bh.kd"; ke: "bh.ke"; kf: "bh.kf"; kg: "bh.kg"; kh: "bh.kh"; ki: "bh.ki"; kj: "bh.kj"; kk: "bh.kk"; kl: "bh.kl"; km: "bh.km"; kn: "bh.kn"; ko: "bh.ko"; kp: "bh.kp"; kq: "bh.kq"; kr: "bh.kr"; ks: "bh.ks"; kt: "bh.kt"; ku: "bh.ku"; kv: "bh.kv"; kw: "bh.kw"; kx: "bh.kx"; ky: "bh.ky"; kz: "bh.kz"; la: "bh.la"; lb: "bh.lb"; lc: "bh.lc"; ld: "bh.ld"; le: "bh.le"; lf: "bh.lf"; lg: "bh.lg"; lh: "bh.lh"; li: "bh.li"; lj: "bh.lj"; lk: "bh.lk"; ll: "bh.ll"; lm: "bh.lm"; ln: "bh.ln"; lo: "bh.lo"; lp: "bh.lp"; lq: "bh.lq"; lr: "bh.lr"; ls: "bh.ls"; lt: "bh.lt"; lu: "bh.lu"; lv: "bh.lv"; lw: "bh.lw"; lx: "bh.lx"; ly: "bh.ly"; lz: "bh.lz"; ma: "bh.ma"; mb: "bh.mb"; mc: "bh.mc"; md: "bh.md"; me: "bh.me"; mf: "bh.mf"; mg: "bh.mg"; mh: "bh.mh"; mi: "bh.mi"; mj: "bh.mj"; mk: "bh.mk"; ml: "bh.ml"; mm: "bh.mm"; mn: "bh.mn"; mo: "bh.mo"; mp: "bh.mp"; mq: "bh.mq"; mr: "bh.mr"; ms: "bh.ms"; mt: "bh.mt"; mu: "bh.mu"; mv: "bh.mv"; mw: "bh.mw"; mx: "bh.mx"; my: "bh.my"; mz: "bh.mz"; na: "bh.na"; nb: "bh.nb"; nc: "bh.nc"; nd: "bh.nd"; ne: "bh.ne"; nf: "bh.nf"; ng: "bh.ng"; nh: "bh.nh"; ni: "bh.ni"; nj: "bh.nj"; nk: "bh.nk"; nl: "bh.nl"; nm: "bh.nm"; nn: "bh.nn"; no: "bh.no"; np: "bh.np"; nq: "bh.nq"; nr: "bh.nr"; ns: "bh.ns"; nt: "bh.nt"; nu: "bh.nu"; nv: "bh.nv"; nw: "bh.nw"; nx: "bh.nx"; ny: "bh.ny"; nz: "bh.nz"; oa: "bh.oa"; ob: "bh.ob"; oc: "bh.oc"; od: "bh.od"; oe: "bh.oe"; of: "bh.of"; og: "bh.og"; oh: "bh.oh"; oi: "bh.oi"; oj: "bh.oj"; ok: "bh.ok"; ol: "bh.ol"; om: "bh.om"; on: "bh.on"; oo: "bh.oo"; op: "bh.op"; oq: "bh.oq"; or: "bh.or"; os: "bh.os"; ot: "bh.ot"; ou: "bh.ou"; ov: "bh.ov"; ow: "bh.ow"; ox: "bh.ox"; oy: "bh.oy"; oz: "bh.oz"; pa: "bh.pa"; pb: "bh.pb"; pc: "bh.pc"; pd: "bh.pd"; pe: "bh.pe"; pf: "bh.pf"; pg: "bh.pg"; ph: "bh.ph"; pi: "bh.pi"; pj: "bh.pj"; pk: "bh.pk"; pl: "bh.pl"; pm: "bh.pm"; pn: "bh.pn"; po: "bh.po"; pp: "bh.pp"; pq: "bh.pq"; pr: "bh.pr"; ps: "bh.ps"; pt: "bh.pt"; pu: "bh.pu"; pv: "bh.pv"; pw: "bh.pw"; px: "bh.px"; py: "bh.py"; pz: "bh.pz"; qa: "bh.qa"; qb: "bh.qb"; qc: "bh.qc"; qd: "bh.qd"; qe: "bh.qe"; qf: "bh.qf"; qg: "bh.qg"; qh: "bh.qh"; qi: "bh.qi"; qj: "bh.qj"; qk: "bh.qk"; ql: "bh.ql"; qm: "bh.qm"; qn: "bh.qn"; qo: "bh.qo"; qp: "bh.qp"; qq: "bh.qq"; qr: "bh.qr"; qs: "bh.qs"; qt: "bh.qt"; qu: "bh.qu"; qv: "bh.qv"; qw: "bh.qw"; qx: "bh.qx"; qy: "bh.qy"; qz: "bh.qz"; ra: "bh.ra"; rb: "bh.rb"; rc: "bh.rc"; rd: "bh.rd"; re: "bh.re"; rf: "bh.rf"; rg: "bh.rg"; rh: "bh.rh"; ri: "bh.ri"; rj: "bh.rj"; rk: "bh.rk"; rl: "bh.rl"; rm: "bh.rm"; rn: "bh.rn"; ro: "bh.ro"; rp: "bh.rp"; rq: "bh.rq"; rr: "bh.rr"; rs: "bh.rs"; rt: "bh.rt"; ru: "bh.ru"; rv: "bh.rv"; rw: "bh.rw"; rx: "bh.rx"; ry: "bh.ry"; rz: "bh.rz"; sa: "bh.sa"; sb: "bh.sb"; sc: "bh.sc"; sd: "bh.sd"; se: "bh.se"; sf: "bh.sf"; sg: "bh.sg"; sh: "bh.sh"; si: "bh.si"; sj: "bh.sj"; sk: "bh.sk"; sl: "bh.sl"; sm: "bh.sm"; sn: "bh.sn"; so: "bh.so"; sp: "bh.sp"; sq: "bh.sq"; sr: "bh.sr"; ss: "bh.ss"; st: "bh.st"; su: "bh.su"; sv: "bh.sv"; sw: "bh.sw"; sx: "bh.sx"; sy: "bh.sy"; sz: "bh.sz"; ta: "bh.ta"; tb: "bh.tb"; tc: "bh.tc"; td: "bh.td"; te: "bh.te"; tf: "bh.tf"; tg: "bh.tg"; th: "bh.th"; ti: "bh.ti"; tj: "bh.tj"; tk: "bh.tk"; tl: "bh.tl"; tm: "bh.tm"; tn: "bh.tn"; to: "bh.to"; tp: "bh.tp"; tq: "bh.tq"; tr: "bh.tr"; ts: "bh.ts"; tt: "bh.tt"; tu: "bh.tu"; tv: "bh.tv"; tw: "bh.tw"; tx: "bh.tx"; ty: "bh.ty"; tz: "bh.tz"; ua: "bh.ua"; ub: "bh.ub"; uc: "bh.uc"; ud: "bh.ud"; ue: "bh.ue"; uf: "bh.uf"; ug: "bh.ug"; uh: "bh.uh"; ui: "bh.ui"; uj: "bh.uj"; uk: "bh.uk"; ul: "bh.ul"; um: "bh.um"; un: "bh.un"; uo: "bh.uo"; up: "bh.up"; uq: "bh.uq"; ur: "bh.ur"; us: "bh.us"; ut: "bh.ut"; uu: "bh.uu"; uv: "bh.uv"; uw: "bh.uw"; ux: "bh.ux"; uy: "bh.uy"; uz: "bh.uz"; va: "bh.va"; vb: "bh.vb"; vc: "bh.vc"; vd: "bh.vd"; ve: "bh.ve"; vf: "bh.vf"; vg: "bh.vg"; vh: "bh.vh"; vi: "bh.vi"; vj: "bh.vj"; vk: "bh.vk"; vl: "bh.vl"; vm: "bh.vm"; vn: "bh.vn"; vo: "bh.vo"; vp: "bh.vp"; vq: "bh.vq"; vr: "bh.vr"; vs: "bh.vs"; vt: "bh.vt"; vu: "bh.vu"; vv: "bh.vv"; vw: "bh.vw"; vx: "bh.vx"; vy: "bh.vy"; vz: "bh.vz"; wa: "bh.wa"; wb: "bh.wb"; wc: "bh.wc"; wd: "bh.wd"; we: "bh.we"; wf: "bh.wf"; wg: "bh.wg"; wh: "bh.wh"; wi: "bh.wi"; wj: "bh.wj"; wk: "bh.wk"; wl: "bh.wl"; wm: "bh.wm"; wn: "bh.wn"; wo: "bh.wo"; wp: "bh.wp"; wq: "bh.wq"; wr: "bh.wr"; ws: "bh.ws"; wt: "bh.wt"; wu: "bh.wu"; wv: "bh.wv"; ww: "bh.ww"; wx: "bh.wx"; wy: "bh.wy"; wz: "bh.wz"; xa: "bh.xa"; xb: "bh.xb"; xc: "bh.xc"; xd: "bh.xd"; xe: "bh.xe"; xf: "bh.xf"; xg: "bh.xg"; xh: "bh.xh"; xi: "bh.xi"; xj: "bh.xj"; xk: "bh.xk"; xl: "bh.xl"; xm: "bh.xm"; xn: "bh.xn"; xo: "bh.xo"; xp: "bh.xp"; xq: "bh.xq"; xr: "bh.xr"; xs: "bh.xs"; xt: "bh.xt"; xu: "bh.xu"; xv: "bh.xv"; xw: "bh.xw"; xx: "bh.xx"; xy: "bh.xy"; xz: "bh.xz"; ya: "bh.ya"; yb: "bh.yb"; yc: "bh.yc"; yd: "bh.yd"; ye: "bh.ye"; yf: "bh.yf"; yg: "bh.yg"; yh: "bh.yh"; yi: "bh.yi"; yj: "bh.yj"; yk: "bh.yk"; yl: "bh.yl"; ym: "bh.ym"; yn: "bh.yn"; yo: "bh.yo"; yp: "bh.yp"; yq: "bh.yq"; yr: "bh.yr"; ys: "bh.ys"; yt: "bh.yt"; yu: "bh.yu"; yv: "bh.yv"; yw: "bh.yw"; yx: "bh.yx"; yy: "bh.yy"; yz: "bh.yz"; za: "bh.za"; zb: "bh.zb"; zc: "bh.zc"; zd: "bh.zd"; ze: "bh.ze"; zf: "bh.zf"; zg: "bh.zg"; zh: "bh.zh"; zi: "bh.zi"; zj: "bh.zj"; zk: "bh.zk"; zl: "bh.zl"; zm: "bh.zm"; zn: "bh.zn"; zo: "bh.zo"; zp: "bh.zp"; zq: "bh.zq"; zr: "bh.zr"; zs: "bh.zs"; zt: "bh.zt"; zu: "bh.zu"; zv: "bh.zv"; zw: "bh.zw"; zx: "bh.zx"; zy: "bh.zy"; zz: "bh.zz"; }; bi: { aa: "bi.aa"; ab: "bi.ab"; ac: "bi.ac"; ad: "bi.ad"; ae: "bi.ae"; af: "bi.af"; ag: "bi.ag"; ah: "bi.ah"; ai: "bi.ai"; aj: "bi.aj"; ak: "bi.ak"; al: "bi.al"; am: "bi.am"; an: "bi.an"; ao: "bi.ao"; ap: "bi.ap"; aq: "bi.aq"; ar: "bi.ar"; as: "bi.as"; at: "bi.at"; au: "bi.au"; av: "bi.av"; aw: "bi.aw"; ax: "bi.ax"; ay: "bi.ay"; az: "bi.az"; ba: "bi.ba"; bb: "bi.bb"; bc: "bi.bc"; bd: "bi.bd"; be: "bi.be"; bf: "bi.bf"; bg: "bi.bg"; bh: "bi.bh"; bi: "bi.bi"; bj: "bi.bj"; bk: "bi.bk"; bl: "bi.bl"; bm: "bi.bm"; bn: "bi.bn"; bo: "bi.bo"; bp: "bi.bp"; bq: "bi.bq"; br: "bi.br"; bs: "bi.bs"; bt: "bi.bt"; bu: "bi.bu"; bv: "bi.bv"; bw: "bi.bw"; bx: "bi.bx"; by: "bi.by"; bz: "bi.bz"; ca: "bi.ca"; cb: "bi.cb"; cc: "bi.cc"; cd: "bi.cd"; ce: "bi.ce"; cf: "bi.cf"; cg: "bi.cg"; ch: "bi.ch"; ci: "bi.ci"; cj: "bi.cj"; ck: "bi.ck"; cl: "bi.cl"; cm: "bi.cm"; cn: "bi.cn"; co: "bi.co"; cp: "bi.cp"; cq: "bi.cq"; cr: "bi.cr"; cs: "bi.cs"; ct: "bi.ct"; cu: "bi.cu"; cv: "bi.cv"; cw: "bi.cw"; cx: "bi.cx"; cy: "bi.cy"; cz: "bi.cz"; da: "bi.da"; db: "bi.db"; dc: "bi.dc"; dd: "bi.dd"; de: "bi.de"; df: "bi.df"; dg: "bi.dg"; dh: "bi.dh"; di: "bi.di"; dj: "bi.dj"; dk: "bi.dk"; dl: "bi.dl"; dm: "bi.dm"; dn: "bi.dn"; do: "bi.do"; dp: "bi.dp"; dq: "bi.dq"; dr: "bi.dr"; ds: "bi.ds"; dt: "bi.dt"; du: "bi.du"; dv: "bi.dv"; dw: "bi.dw"; dx: "bi.dx"; dy: "bi.dy"; dz: "bi.dz"; ea: "bi.ea"; eb: "bi.eb"; ec: "bi.ec"; ed: "bi.ed"; ee: "bi.ee"; ef: "bi.ef"; eg: "bi.eg"; eh: "bi.eh"; ei: "bi.ei"; ej: "bi.ej"; ek: "bi.ek"; el: "bi.el"; em: "bi.em"; en: "bi.en"; eo: "bi.eo"; ep: "bi.ep"; eq: "bi.eq"; er: "bi.er"; es: "bi.es"; et: "bi.et"; eu: "bi.eu"; ev: "bi.ev"; ew: "bi.ew"; ex: "bi.ex"; ey: "bi.ey"; ez: "bi.ez"; fa: "bi.fa"; fb: "bi.fb"; fc: "bi.fc"; fd: "bi.fd"; fe: "bi.fe"; ff: "bi.ff"; fg: "bi.fg"; fh: "bi.fh"; fi: "bi.fi"; fj: "bi.fj"; fk: "bi.fk"; fl: "bi.fl"; fm: "bi.fm"; fn: "bi.fn"; fo: "bi.fo"; fp: "bi.fp"; fq: "bi.fq"; fr: "bi.fr"; fs: "bi.fs"; ft: "bi.ft"; fu: "bi.fu"; fv: "bi.fv"; fw: "bi.fw"; fx: "bi.fx"; fy: "bi.fy"; fz: "bi.fz"; ga: "bi.ga"; gb: "bi.gb"; gc: "bi.gc"; gd: "bi.gd"; ge: "bi.ge"; gf: "bi.gf"; gg: "bi.gg"; gh: "bi.gh"; gi: "bi.gi"; gj: "bi.gj"; gk: "bi.gk"; gl: "bi.gl"; gm: "bi.gm"; gn: "bi.gn"; go: "bi.go"; gp: "bi.gp"; gq: "bi.gq"; gr: "bi.gr"; gs: "bi.gs"; gt: "bi.gt"; gu: "bi.gu"; gv: "bi.gv"; gw: "bi.gw"; gx: "bi.gx"; gy: "bi.gy"; gz: "bi.gz"; ha: "bi.ha"; hb: "bi.hb"; hc: "bi.hc"; hd: "bi.hd"; he: "bi.he"; hf: "bi.hf"; hg: "bi.hg"; hh: "bi.hh"; hi: "bi.hi"; hj: "bi.hj"; hk: "bi.hk"; hl: "bi.hl"; hm: "bi.hm"; hn: "bi.hn"; ho: "bi.ho"; hp: "bi.hp"; hq: "bi.hq"; hr: "bi.hr"; hs: "bi.hs"; ht: "bi.ht"; hu: "bi.hu"; hv: "bi.hv"; hw: "bi.hw"; hx: "bi.hx"; hy: "bi.hy"; hz: "bi.hz"; ia: "bi.ia"; ib: "bi.ib"; ic: "bi.ic"; id: "bi.id"; ie: "bi.ie"; if: "bi.if"; ig: "bi.ig"; ih: "bi.ih"; ii: "bi.ii"; ij: "bi.ij"; ik: "bi.ik"; il: "bi.il"; im: "bi.im"; in: "bi.in"; io: "bi.io"; ip: "bi.ip"; iq: "bi.iq"; ir: "bi.ir"; is: "bi.is"; it: "bi.it"; iu: "bi.iu"; iv: "bi.iv"; iw: "bi.iw"; ix: "bi.ix"; iy: "bi.iy"; iz: "bi.iz"; ja: "bi.ja"; jb: "bi.jb"; jc: "bi.jc"; jd: "bi.jd"; je: "bi.je"; jf: "bi.jf"; jg: "bi.jg"; jh: "bi.jh"; ji: "bi.ji"; jj: "bi.jj"; jk: "bi.jk"; jl: "bi.jl"; jm: "bi.jm"; jn: "bi.jn"; jo: "bi.jo"; jp: "bi.jp"; jq: "bi.jq"; jr: "bi.jr"; js: "bi.js"; jt: "bi.jt"; ju: "bi.ju"; jv: "bi.jv"; jw: "bi.jw"; jx: "bi.jx"; jy: "bi.jy"; jz: "bi.jz"; ka: "bi.ka"; kb: "bi.kb"; kc: "bi.kc"; kd: "bi.kd"; ke: "bi.ke"; kf: "bi.kf"; kg: "bi.kg"; kh: "bi.kh"; ki: "bi.ki"; kj: "bi.kj"; kk: "bi.kk"; kl: "bi.kl"; km: "bi.km"; kn: "bi.kn"; ko: "bi.ko"; kp: "bi.kp"; kq: "bi.kq"; kr: "bi.kr"; ks: "bi.ks"; kt: "bi.kt"; ku: "bi.ku"; kv: "bi.kv"; kw: "bi.kw"; kx: "bi.kx"; ky: "bi.ky"; kz: "bi.kz"; la: "bi.la"; lb: "bi.lb"; lc: "bi.lc"; ld: "bi.ld"; le: "bi.le"; lf: "bi.lf"; lg: "bi.lg"; lh: "bi.lh"; li: "bi.li"; lj: "bi.lj"; lk: "bi.lk"; ll: "bi.ll"; lm: "bi.lm"; ln: "bi.ln"; lo: "bi.lo"; lp: "bi.lp"; lq: "bi.lq"; lr: "bi.lr"; ls: "bi.ls"; lt: "bi.lt"; lu: "bi.lu"; lv: "bi.lv"; lw: "bi.lw"; lx: "bi.lx"; ly: "bi.ly"; lz: "bi.lz"; ma: "bi.ma"; mb: "bi.mb"; mc: "bi.mc"; md: "bi.md"; me: "bi.me"; mf: "bi.mf"; mg: "bi.mg"; mh: "bi.mh"; mi: "bi.mi"; mj: "bi.mj"; mk: "bi.mk"; ml: "bi.ml"; mm: "bi.mm"; mn: "bi.mn"; mo: "bi.mo"; mp: "bi.mp"; mq: "bi.mq"; mr: "bi.mr"; ms: "bi.ms"; mt: "bi.mt"; mu: "bi.mu"; mv: "bi.mv"; mw: "bi.mw"; mx: "bi.mx"; my: "bi.my"; mz: "bi.mz"; na: "bi.na"; nb: "bi.nb"; nc: "bi.nc"; nd: "bi.nd"; ne: "bi.ne"; nf: "bi.nf"; ng: "bi.ng"; nh: "bi.nh"; ni: "bi.ni"; nj: "bi.nj"; nk: "bi.nk"; nl: "bi.nl"; nm: "bi.nm"; nn: "bi.nn"; no: "bi.no"; np: "bi.np"; nq: "bi.nq"; nr: "bi.nr"; ns: "bi.ns"; nt: "bi.nt"; nu: "bi.nu"; nv: "bi.nv"; nw: "bi.nw"; nx: "bi.nx"; ny: "bi.ny"; nz: "bi.nz"; oa: "bi.oa"; ob: "bi.ob"; oc: "bi.oc"; od: "bi.od"; oe: "bi.oe"; of: "bi.of"; og: "bi.og"; oh: "bi.oh"; oi: "bi.oi"; oj: "bi.oj"; ok: "bi.ok"; ol: "bi.ol"; om: "bi.om"; on: "bi.on"; oo: "bi.oo"; op: "bi.op"; oq: "bi.oq"; or: "bi.or"; os: "bi.os"; ot: "bi.ot"; ou: "bi.ou"; ov: "bi.ov"; ow: "bi.ow"; ox: "bi.ox"; oy: "bi.oy"; oz: "bi.oz"; pa: "bi.pa"; pb: "bi.pb"; pc: "bi.pc"; pd: "bi.pd"; pe: "bi.pe"; pf: "bi.pf"; pg: "bi.pg"; ph: "bi.ph"; pi: "bi.pi"; pj: "bi.pj"; pk: "bi.pk"; pl: "bi.pl"; pm: "bi.pm"; pn: "bi.pn"; po: "bi.po"; pp: "bi.pp"; pq: "bi.pq"; pr: "bi.pr"; ps: "bi.ps"; pt: "bi.pt"; pu: "bi.pu"; pv: "bi.pv"; pw: "bi.pw"; px: "bi.px"; py: "bi.py"; pz: "bi.pz"; qa: "bi.qa"; qb: "bi.qb"; qc: "bi.qc"; qd: "bi.qd"; qe: "bi.qe"; qf: "bi.qf"; qg: "bi.qg"; qh: "bi.qh"; qi: "bi.qi"; qj: "bi.qj"; qk: "bi.qk"; ql: "bi.ql"; qm: "bi.qm"; qn: "bi.qn"; qo: "bi.qo"; qp: "bi.qp"; qq: "bi.qq"; qr: "bi.qr"; qs: "bi.qs"; qt: "bi.qt"; qu: "bi.qu"; qv: "bi.qv"; qw: "bi.qw"; qx: "bi.qx"; qy: "bi.qy"; qz: "bi.qz"; ra: "bi.ra"; rb: "bi.rb"; rc: "bi.rc"; rd: "bi.rd"; re: "bi.re"; rf: "bi.rf"; rg: "bi.rg"; rh: "bi.rh"; ri: "bi.ri"; rj: "bi.rj"; rk: "bi.rk"; rl: "bi.rl"; rm: "bi.rm"; rn: "bi.rn"; ro: "bi.ro"; rp: "bi.rp"; rq: "bi.rq"; rr: "bi.rr"; rs: "bi.rs"; rt: "bi.rt"; ru: "bi.ru"; rv: "bi.rv"; rw: "bi.rw"; rx: "bi.rx"; ry: "bi.ry"; rz: "bi.rz"; sa: "bi.sa"; sb: "bi.sb"; sc: "bi.sc"; sd: "bi.sd"; se: "bi.se"; sf: "bi.sf"; sg: "bi.sg"; sh: "bi.sh"; si: "bi.si"; sj: "bi.sj"; sk: "bi.sk"; sl: "bi.sl"; sm: "bi.sm"; sn: "bi.sn"; so: "bi.so"; sp: "bi.sp"; sq: "bi.sq"; sr: "bi.sr"; ss: "bi.ss"; st: "bi.st"; su: "bi.su"; sv: "bi.sv"; sw: "bi.sw"; sx: "bi.sx"; sy: "bi.sy"; sz: "bi.sz"; ta: "bi.ta"; tb: "bi.tb"; tc: "bi.tc"; td: "bi.td"; te: "bi.te"; tf: "bi.tf"; tg: "bi.tg"; th: "bi.th"; ti: "bi.ti"; tj: "bi.tj"; tk: "bi.tk"; tl: "bi.tl"; tm: "bi.tm"; tn: "bi.tn"; to: "bi.to"; tp: "bi.tp"; tq: "bi.tq"; tr: "bi.tr"; ts: "bi.ts"; tt: "bi.tt"; tu: "bi.tu"; tv: "bi.tv"; tw: "bi.tw"; tx: "bi.tx"; ty: "bi.ty"; tz: "bi.tz"; ua: "bi.ua"; ub: "bi.ub"; uc: "bi.uc"; ud: "bi.ud"; ue: "bi.ue"; uf: "bi.uf"; ug: "bi.ug"; uh: "bi.uh"; ui: "bi.ui"; uj: "bi.uj"; uk: "bi.uk"; ul: "bi.ul"; um: "bi.um"; un: "bi.un"; uo: "bi.uo"; up: "bi.up"; uq: "bi.uq"; ur: "bi.ur"; us: "bi.us"; ut: "bi.ut"; uu: "bi.uu"; uv: "bi.uv"; uw: "bi.uw"; ux: "bi.ux"; uy: "bi.uy"; uz: "bi.uz"; va: "bi.va"; vb: "bi.vb"; vc: "bi.vc"; vd: "bi.vd"; ve: "bi.ve"; vf: "bi.vf"; vg: "bi.vg"; vh: "bi.vh"; vi: "bi.vi"; vj: "bi.vj"; vk: "bi.vk"; vl: "bi.vl"; vm: "bi.vm"; vn: "bi.vn"; vo: "bi.vo"; vp: "bi.vp"; vq: "bi.vq"; vr: "bi.vr"; vs: "bi.vs"; vt: "bi.vt"; vu: "bi.vu"; vv: "bi.vv"; vw: "bi.vw"; vx: "bi.vx"; vy: "bi.vy"; vz: "bi.vz"; wa: "bi.wa"; wb: "bi.wb"; wc: "bi.wc"; wd: "bi.wd"; we: "bi.we"; wf: "bi.wf"; wg: "bi.wg"; wh: "bi.wh"; wi: "bi.wi"; wj: "bi.wj"; wk: "bi.wk"; wl: "bi.wl"; wm: "bi.wm"; wn: "bi.wn"; wo: "bi.wo"; wp: "bi.wp"; wq: "bi.wq"; wr: "bi.wr"; ws: "bi.ws"; wt: "bi.wt"; wu: "bi.wu"; wv: "bi.wv"; ww: "bi.ww"; wx: "bi.wx"; wy: "bi.wy"; wz: "bi.wz"; xa: "bi.xa"; xb: "bi.xb"; xc: "bi.xc"; xd: "bi.xd"; xe: "bi.xe"; xf: "bi.xf"; xg: "bi.xg"; xh: "bi.xh"; xi: "bi.xi"; xj: "bi.xj"; xk: "bi.xk"; xl: "bi.xl"; xm: "bi.xm"; xn: "bi.xn"; xo: "bi.xo"; xp: "bi.xp"; xq: "bi.xq"; xr: "bi.xr"; xs: "bi.xs"; xt: "bi.xt"; xu: "bi.xu"; xv: "bi.xv"; xw: "bi.xw"; xx: "bi.xx"; xy: "bi.xy"; xz: "bi.xz"; ya: "bi.ya"; yb: "bi.yb"; yc: "bi.yc"; yd: "bi.yd"; ye: "bi.ye"; yf: "bi.yf"; yg: "bi.yg"; yh: "bi.yh"; yi: "bi.yi"; yj: "bi.yj"; yk: "bi.yk"; yl: "bi.yl"; ym: "bi.ym"; yn: "bi.yn"; yo: "bi.yo"; yp: "bi.yp"; yq: "bi.yq"; yr: "bi.yr"; ys: "bi.ys"; yt: "bi.yt"; yu: "bi.yu"; yv: "bi.yv"; yw: "bi.yw"; yx: "bi.yx"; yy: "bi.yy"; yz: "bi.yz"; za: "bi.za"; zb: "bi.zb"; zc: "bi.zc"; zd: "bi.zd"; ze: "bi.ze"; zf: "bi.zf"; zg: "bi.zg"; zh: "bi.zh"; zi: "bi.zi"; zj: "bi.zj"; zk: "bi.zk"; zl: "bi.zl"; zm: "bi.zm"; zn: "bi.zn"; zo: "bi.zo"; zp: "bi.zp"; zq: "bi.zq"; zr: "bi.zr"; zs: "bi.zs"; zt: "bi.zt"; zu: "bi.zu"; zv: "bi.zv"; zw: "bi.zw"; zx: "bi.zx"; zy: "bi.zy"; zz: "bi.zz"; }; bj: { aa: "bj.aa"; ab: "bj.ab"; ac: "bj.ac"; ad: "bj.ad"; ae: "bj.ae"; af: "bj.af"; ag: "bj.ag"; ah: "bj.ah"; ai: "bj.ai"; aj: "bj.aj"; ak: "bj.ak"; al: "bj.al"; am: "bj.am"; an: "bj.an"; ao: "bj.ao"; ap: "bj.ap"; aq: "bj.aq"; ar: "bj.ar"; as: "bj.as"; at: "bj.at"; au: "bj.au"; av: "bj.av"; aw: "bj.aw"; ax: "bj.ax"; ay: "bj.ay"; az: "bj.az"; ba: "bj.ba"; bb: "bj.bb"; bc: "bj.bc"; bd: "bj.bd"; be: "bj.be"; bf: "bj.bf"; bg: "bj.bg"; bh: "bj.bh"; bi: "bj.bi"; bj: "bj.bj"; bk: "bj.bk"; bl: "bj.bl"; bm: "bj.bm"; bn: "bj.bn"; bo: "bj.bo"; bp: "bj.bp"; bq: "bj.bq"; br: "bj.br"; bs: "bj.bs"; bt: "bj.bt"; bu: "bj.bu"; bv: "bj.bv"; bw: "bj.bw"; bx: "bj.bx"; by: "bj.by"; bz: "bj.bz"; ca: "bj.ca"; cb: "bj.cb"; cc: "bj.cc"; cd: "bj.cd"; ce: "bj.ce"; cf: "bj.cf"; cg: "bj.cg"; ch: "bj.ch"; ci: "bj.ci"; cj: "bj.cj"; ck: "bj.ck"; cl: "bj.cl"; cm: "bj.cm"; cn: "bj.cn"; co: "bj.co"; cp: "bj.cp"; cq: "bj.cq"; cr: "bj.cr"; cs: "bj.cs"; ct: "bj.ct"; cu: "bj.cu"; cv: "bj.cv"; cw: "bj.cw"; cx: "bj.cx"; cy: "bj.cy"; cz: "bj.cz"; da: "bj.da"; db: "bj.db"; dc: "bj.dc"; dd: "bj.dd"; de: "bj.de"; df: "bj.df"; dg: "bj.dg"; dh: "bj.dh"; di: "bj.di"; dj: "bj.dj"; dk: "bj.dk"; dl: "bj.dl"; dm: "bj.dm"; dn: "bj.dn"; do: "bj.do"; dp: "bj.dp"; dq: "bj.dq"; dr: "bj.dr"; ds: "bj.ds"; dt: "bj.dt"; du: "bj.du"; dv: "bj.dv"; dw: "bj.dw"; dx: "bj.dx"; dy: "bj.dy"; dz: "bj.dz"; ea: "bj.ea"; eb: "bj.eb"; ec: "bj.ec"; ed: "bj.ed"; ee: "bj.ee"; ef: "bj.ef"; eg: "bj.eg"; eh: "bj.eh"; ei: "bj.ei"; ej: "bj.ej"; ek: "bj.ek"; el: "bj.el"; em: "bj.em"; en: "bj.en"; eo: "bj.eo"; ep: "bj.ep"; eq: "bj.eq"; er: "bj.er"; es: "bj.es"; et: "bj.et"; eu: "bj.eu"; ev: "bj.ev"; ew: "bj.ew"; ex: "bj.ex"; ey: "bj.ey"; ez: "bj.ez"; fa: "bj.fa"; fb: "bj.fb"; fc: "bj.fc"; fd: "bj.fd"; fe: "bj.fe"; ff: "bj.ff"; fg: "bj.fg"; fh: "bj.fh"; fi: "bj.fi"; fj: "bj.fj"; fk: "bj.fk"; fl: "bj.fl"; fm: "bj.fm"; fn: "bj.fn"; fo: "bj.fo"; fp: "bj.fp"; fq: "bj.fq"; fr: "bj.fr"; fs: "bj.fs"; ft: "bj.ft"; fu: "bj.fu"; fv: "bj.fv"; fw: "bj.fw"; fx: "bj.fx"; fy: "bj.fy"; fz: "bj.fz"; ga: "bj.ga"; gb: "bj.gb"; gc: "bj.gc"; gd: "bj.gd"; ge: "bj.ge"; gf: "bj.gf"; gg: "bj.gg"; gh: "bj.gh"; gi: "bj.gi"; gj: "bj.gj"; gk: "bj.gk"; gl: "bj.gl"; gm: "bj.gm"; gn: "bj.gn"; go: "bj.go"; gp: "bj.gp"; gq: "bj.gq"; gr: "bj.gr"; gs: "bj.gs"; gt: "bj.gt"; gu: "bj.gu"; gv: "bj.gv"; gw: "bj.gw"; gx: "bj.gx"; gy: "bj.gy"; gz: "bj.gz"; ha: "bj.ha"; hb: "bj.hb"; hc: "bj.hc"; hd: "bj.hd"; he: "bj.he"; hf: "bj.hf"; hg: "bj.hg"; hh: "bj.hh"; hi: "bj.hi"; hj: "bj.hj"; hk: "bj.hk"; hl: "bj.hl"; hm: "bj.hm"; hn: "bj.hn"; ho: "bj.ho"; hp: "bj.hp"; hq: "bj.hq"; hr: "bj.hr"; hs: "bj.hs"; ht: "bj.ht"; hu: "bj.hu"; hv: "bj.hv"; hw: "bj.hw"; hx: "bj.hx"; hy: "bj.hy"; hz: "bj.hz"; ia: "bj.ia"; ib: "bj.ib"; ic: "bj.ic"; id: "bj.id"; ie: "bj.ie"; if: "bj.if"; ig: "bj.ig"; ih: "bj.ih"; ii: "bj.ii"; ij: "bj.ij"; ik: "bj.ik"; il: "bj.il"; im: "bj.im"; in: "bj.in"; io: "bj.io"; ip: "bj.ip"; iq: "bj.iq"; ir: "bj.ir"; is: "bj.is"; it: "bj.it"; iu: "bj.iu"; iv: "bj.iv"; iw: "bj.iw"; ix: "bj.ix"; iy: "bj.iy"; iz: "bj.iz"; ja: "bj.ja"; jb: "bj.jb"; jc: "bj.jc"; jd: "bj.jd"; je: "bj.je"; jf: "bj.jf"; jg: "bj.jg"; jh: "bj.jh"; ji: "bj.ji"; jj: "bj.jj"; jk: "bj.jk"; jl: "bj.jl"; jm: "bj.jm"; jn: "bj.jn"; jo: "bj.jo"; jp: "bj.jp"; jq: "bj.jq"; jr: "bj.jr"; js: "bj.js"; jt: "bj.jt"; ju: "bj.ju"; jv: "bj.jv"; jw: "bj.jw"; jx: "bj.jx"; jy: "bj.jy"; jz: "bj.jz"; ka: "bj.ka"; kb: "bj.kb"; kc: "bj.kc"; kd: "bj.kd"; ke: "bj.ke"; kf: "bj.kf"; kg: "bj.kg"; kh: "bj.kh"; ki: "bj.ki"; kj: "bj.kj"; kk: "bj.kk"; kl: "bj.kl"; km: "bj.km"; kn: "bj.kn"; ko: "bj.ko"; kp: "bj.kp"; kq: "bj.kq"; kr: "bj.kr"; ks: "bj.ks"; kt: "bj.kt"; ku: "bj.ku"; kv: "bj.kv"; kw: "bj.kw"; kx: "bj.kx"; ky: "bj.ky"; kz: "bj.kz"; la: "bj.la"; lb: "bj.lb"; lc: "bj.lc"; ld: "bj.ld"; le: "bj.le"; lf: "bj.lf"; lg: "bj.lg"; lh: "bj.lh"; li: "bj.li"; lj: "bj.lj"; lk: "bj.lk"; ll: "bj.ll"; lm: "bj.lm"; ln: "bj.ln"; lo: "bj.lo"; lp: "bj.lp"; lq: "bj.lq"; lr: "bj.lr"; ls: "bj.ls"; lt: "bj.lt"; lu: "bj.lu"; lv: "bj.lv"; lw: "bj.lw"; lx: "bj.lx"; ly: "bj.ly"; lz: "bj.lz"; ma: "bj.ma"; mb: "bj.mb"; mc: "bj.mc"; md: "bj.md"; me: "bj.me"; mf: "bj.mf"; mg: "bj.mg"; mh: "bj.mh"; mi: "bj.mi"; mj: "bj.mj"; mk: "bj.mk"; ml: "bj.ml"; mm: "bj.mm"; mn: "bj.mn"; mo: "bj.mo"; mp: "bj.mp"; mq: "bj.mq"; mr: "bj.mr"; ms: "bj.ms"; mt: "bj.mt"; mu: "bj.mu"; mv: "bj.mv"; mw: "bj.mw"; mx: "bj.mx"; my: "bj.my"; mz: "bj.mz"; na: "bj.na"; nb: "bj.nb"; nc: "bj.nc"; nd: "bj.nd"; ne: "bj.ne"; nf: "bj.nf"; ng: "bj.ng"; nh: "bj.nh"; ni: "bj.ni"; nj: "bj.nj"; nk: "bj.nk"; nl: "bj.nl"; nm: "bj.nm"; nn: "bj.nn"; no: "bj.no"; np: "bj.np"; nq: "bj.nq"; nr: "bj.nr"; ns: "bj.ns"; nt: "bj.nt"; nu: "bj.nu"; nv: "bj.nv"; nw: "bj.nw"; nx: "bj.nx"; ny: "bj.ny"; nz: "bj.nz"; oa: "bj.oa"; ob: "bj.ob"; oc: "bj.oc"; od: "bj.od"; oe: "bj.oe"; of: "bj.of"; og: "bj.og"; oh: "bj.oh"; oi: "bj.oi"; oj: "bj.oj"; ok: "bj.ok"; ol: "bj.ol"; om: "bj.om"; on: "bj.on"; oo: "bj.oo"; op: "bj.op"; oq: "bj.oq"; or: "bj.or"; os: "bj.os"; ot: "bj.ot"; ou: "bj.ou"; ov: "bj.ov"; ow: "bj.ow"; ox: "bj.ox"; oy: "bj.oy"; oz: "bj.oz"; pa: "bj.pa"; pb: "bj.pb"; pc: "bj.pc"; pd: "bj.pd"; pe: "bj.pe"; pf: "bj.pf"; pg: "bj.pg"; ph: "bj.ph"; pi: "bj.pi"; pj: "bj.pj"; pk: "bj.pk"; pl: "bj.pl"; pm: "bj.pm"; pn: "bj.pn"; po: "bj.po"; pp: "bj.pp"; pq: "bj.pq"; pr: "bj.pr"; ps: "bj.ps"; pt: "bj.pt"; pu: "bj.pu"; pv: "bj.pv"; pw: "bj.pw"; px: "bj.px"; py: "bj.py"; pz: "bj.pz"; qa: "bj.qa"; qb: "bj.qb"; qc: "bj.qc"; qd: "bj.qd"; qe: "bj.qe"; qf: "bj.qf"; qg: "bj.qg"; qh: "bj.qh"; qi: "bj.qi"; qj: "bj.qj"; qk: "bj.qk"; ql: "bj.ql"; qm: "bj.qm"; qn: "bj.qn"; qo: "bj.qo"; qp: "bj.qp"; qq: "bj.qq"; qr: "bj.qr"; qs: "bj.qs"; qt: "bj.qt"; qu: "bj.qu"; qv: "bj.qv"; qw: "bj.qw"; qx: "bj.qx"; qy: "bj.qy"; qz: "bj.qz"; ra: "bj.ra"; rb: "bj.rb"; rc: "bj.rc"; rd: "bj.rd"; re: "bj.re"; rf: "bj.rf"; rg: "bj.rg"; rh: "bj.rh"; ri: "bj.ri"; rj: "bj.rj"; rk: "bj.rk"; rl: "bj.rl"; rm: "bj.rm"; rn: "bj.rn"; ro: "bj.ro"; rp: "bj.rp"; rq: "bj.rq"; rr: "bj.rr"; rs: "bj.rs"; rt: "bj.rt"; ru: "bj.ru"; rv: "bj.rv"; rw: "bj.rw"; rx: "bj.rx"; ry: "bj.ry"; rz: "bj.rz"; sa: "bj.sa"; sb: "bj.sb"; sc: "bj.sc"; sd: "bj.sd"; se: "bj.se"; sf: "bj.sf"; sg: "bj.sg"; sh: "bj.sh"; si: "bj.si"; sj: "bj.sj"; sk: "bj.sk"; sl: "bj.sl"; sm: "bj.sm"; sn: "bj.sn"; so: "bj.so"; sp: "bj.sp"; sq: "bj.sq"; sr: "bj.sr"; ss: "bj.ss"; st: "bj.st"; su: "bj.su"; sv: "bj.sv"; sw: "bj.sw"; sx: "bj.sx"; sy: "bj.sy"; sz: "bj.sz"; ta: "bj.ta"; tb: "bj.tb"; tc: "bj.tc"; td: "bj.td"; te: "bj.te"; tf: "bj.tf"; tg: "bj.tg"; th: "bj.th"; ti: "bj.ti"; tj: "bj.tj"; tk: "bj.tk"; tl: "bj.tl"; tm: "bj.tm"; tn: "bj.tn"; to: "bj.to"; tp: "bj.tp"; tq: "bj.tq"; tr: "bj.tr"; ts: "bj.ts"; tt: "bj.tt"; tu: "bj.tu"; tv: "bj.tv"; tw: "bj.tw"; tx: "bj.tx"; ty: "bj.ty"; tz: "bj.tz"; ua: "bj.ua"; ub: "bj.ub"; uc: "bj.uc"; ud: "bj.ud"; ue: "bj.ue"; uf: "bj.uf"; ug: "bj.ug"; uh: "bj.uh"; ui: "bj.ui"; uj: "bj.uj"; uk: "bj.uk"; ul: "bj.ul"; um: "bj.um"; un: "bj.un"; uo: "bj.uo"; up: "bj.up"; uq: "bj.uq"; ur: "bj.ur"; us: "bj.us"; ut: "bj.ut"; uu: "bj.uu"; uv: "bj.uv"; uw: "bj.uw"; ux: "bj.ux"; uy: "bj.uy"; uz: "bj.uz"; va: "bj.va"; vb: "bj.vb"; vc: "bj.vc"; vd: "bj.vd"; ve: "bj.ve"; vf: "bj.vf"; vg: "bj.vg"; vh: "bj.vh"; vi: "bj.vi"; vj: "bj.vj"; vk: "bj.vk"; vl: "bj.vl"; vm: "bj.vm"; vn: "bj.vn"; vo: "bj.vo"; vp: "bj.vp"; vq: "bj.vq"; vr: "bj.vr"; vs: "bj.vs"; vt: "bj.vt"; vu: "bj.vu"; vv: "bj.vv"; vw: "bj.vw"; vx: "bj.vx"; vy: "bj.vy"; vz: "bj.vz"; wa: "bj.wa"; wb: "bj.wb"; wc: "bj.wc"; wd: "bj.wd"; we: "bj.we"; wf: "bj.wf"; wg: "bj.wg"; wh: "bj.wh"; wi: "bj.wi"; wj: "bj.wj"; wk: "bj.wk"; wl: "bj.wl"; wm: "bj.wm"; wn: "bj.wn"; wo: "bj.wo"; wp: "bj.wp"; wq: "bj.wq"; wr: "bj.wr"; ws: "bj.ws"; wt: "bj.wt"; wu: "bj.wu"; wv: "bj.wv"; ww: "bj.ww"; wx: "bj.wx"; wy: "bj.wy"; wz: "bj.wz"; xa: "bj.xa"; xb: "bj.xb"; xc: "bj.xc"; xd: "bj.xd"; xe: "bj.xe"; xf: "bj.xf"; xg: "bj.xg"; xh: "bj.xh"; xi: "bj.xi"; xj: "bj.xj"; xk: "bj.xk"; xl: "bj.xl"; xm: "bj.xm"; xn: "bj.xn"; xo: "bj.xo"; xp: "bj.xp"; xq: "bj.xq"; xr: "bj.xr"; xs: "bj.xs"; xt: "bj.xt"; xu: "bj.xu"; xv: "bj.xv"; xw: "bj.xw"; xx: "bj.xx"; xy: "bj.xy"; xz: "bj.xz"; ya: "bj.ya"; yb: "bj.yb"; yc: "bj.yc"; yd: "bj.yd"; ye: "bj.ye"; yf: "bj.yf"; yg: "bj.yg"; yh: "bj.yh"; yi: "bj.yi"; yj: "bj.yj"; yk: "bj.yk"; yl: "bj.yl"; ym: "bj.ym"; yn: "bj.yn"; yo: "bj.yo"; yp: "bj.yp"; yq: "bj.yq"; yr: "bj.yr"; ys: "bj.ys"; yt: "bj.yt"; yu: "bj.yu"; yv: "bj.yv"; yw: "bj.yw"; yx: "bj.yx"; yy: "bj.yy"; yz: "bj.yz"; za: "bj.za"; zb: "bj.zb"; zc: "bj.zc"; zd: "bj.zd"; ze: "bj.ze"; zf: "bj.zf"; zg: "bj.zg"; zh: "bj.zh"; zi: "bj.zi"; zj: "bj.zj"; zk: "bj.zk"; zl: "bj.zl"; zm: "bj.zm"; zn: "bj.zn"; zo: "bj.zo"; zp: "bj.zp"; zq: "bj.zq"; zr: "bj.zr"; zs: "bj.zs"; zt: "bj.zt"; zu: "bj.zu"; zv: "bj.zv"; zw: "bj.zw"; zx: "bj.zx"; zy: "bj.zy"; zz: "bj.zz"; }; bk: { aa: "bk.aa"; ab: "bk.ab"; ac: "bk.ac"; ad: "bk.ad"; ae: "bk.ae"; af: "bk.af"; ag: "bk.ag"; ah: "bk.ah"; ai: "bk.ai"; aj: "bk.aj"; ak: "bk.ak"; al: "bk.al"; am: "bk.am"; an: "bk.an"; ao: "bk.ao"; ap: "bk.ap"; aq: "bk.aq"; ar: "bk.ar"; as: "bk.as"; at: "bk.at"; au: "bk.au"; av: "bk.av"; aw: "bk.aw"; ax: "bk.ax"; ay: "bk.ay"; az: "bk.az"; ba: "bk.ba"; bb: "bk.bb"; bc: "bk.bc"; bd: "bk.bd"; be: "bk.be"; bf: "bk.bf"; bg: "bk.bg"; bh: "bk.bh"; bi: "bk.bi"; bj: "bk.bj"; bk: "bk.bk"; bl: "bk.bl"; bm: "bk.bm"; bn: "bk.bn"; bo: "bk.bo"; bp: "bk.bp"; bq: "bk.bq"; br: "bk.br"; bs: "bk.bs"; bt: "bk.bt"; bu: "bk.bu"; bv: "bk.bv"; bw: "bk.bw"; bx: "bk.bx"; by: "bk.by"; bz: "bk.bz"; ca: "bk.ca"; cb: "bk.cb"; cc: "bk.cc"; cd: "bk.cd"; ce: "bk.ce"; cf: "bk.cf"; cg: "bk.cg"; ch: "bk.ch"; ci: "bk.ci"; cj: "bk.cj"; ck: "bk.ck"; cl: "bk.cl"; cm: "bk.cm"; cn: "bk.cn"; co: "bk.co"; cp: "bk.cp"; cq: "bk.cq"; cr: "bk.cr"; cs: "bk.cs"; ct: "bk.ct"; cu: "bk.cu"; cv: "bk.cv"; cw: "bk.cw"; cx: "bk.cx"; cy: "bk.cy"; cz: "bk.cz"; da: "bk.da"; db: "bk.db"; dc: "bk.dc"; dd: "bk.dd"; de: "bk.de"; df: "bk.df"; dg: "bk.dg"; dh: "bk.dh"; di: "bk.di"; dj: "bk.dj"; dk: "bk.dk"; dl: "bk.dl"; dm: "bk.dm"; dn: "bk.dn"; do: "bk.do"; dp: "bk.dp"; dq: "bk.dq"; dr: "bk.dr"; ds: "bk.ds"; dt: "bk.dt"; du: "bk.du"; dv: "bk.dv"; dw: "bk.dw"; dx: "bk.dx"; dy: "bk.dy"; dz: "bk.dz"; ea: "bk.ea"; eb: "bk.eb"; ec: "bk.ec"; ed: "bk.ed"; ee: "bk.ee"; ef: "bk.ef"; eg: "bk.eg"; eh: "bk.eh"; ei: "bk.ei"; ej: "bk.ej"; ek: "bk.ek"; el: "bk.el"; em: "bk.em"; en: "bk.en"; eo: "bk.eo"; ep: "bk.ep"; eq: "bk.eq"; er: "bk.er"; es: "bk.es"; et: "bk.et"; eu: "bk.eu"; ev: "bk.ev"; ew: "bk.ew"; ex: "bk.ex"; ey: "bk.ey"; ez: "bk.ez"; fa: "bk.fa"; fb: "bk.fb"; fc: "bk.fc"; fd: "bk.fd"; fe: "bk.fe"; ff: "bk.ff"; fg: "bk.fg"; fh: "bk.fh"; fi: "bk.fi"; fj: "bk.fj"; fk: "bk.fk"; fl: "bk.fl"; fm: "bk.fm"; fn: "bk.fn"; fo: "bk.fo"; fp: "bk.fp"; fq: "bk.fq"; fr: "bk.fr"; fs: "bk.fs"; ft: "bk.ft"; fu: "bk.fu"; fv: "bk.fv"; fw: "bk.fw"; fx: "bk.fx"; fy: "bk.fy"; fz: "bk.fz"; ga: "bk.ga"; gb: "bk.gb"; gc: "bk.gc"; gd: "bk.gd"; ge: "bk.ge"; gf: "bk.gf"; gg: "bk.gg"; gh: "bk.gh"; gi: "bk.gi"; gj: "bk.gj"; gk: "bk.gk"; gl: "bk.gl"; gm: "bk.gm"; gn: "bk.gn"; go: "bk.go"; gp: "bk.gp"; gq: "bk.gq"; gr: "bk.gr"; gs: "bk.gs"; gt: "bk.gt"; gu: "bk.gu"; gv: "bk.gv"; gw: "bk.gw"; gx: "bk.gx"; gy: "bk.gy"; gz: "bk.gz"; ha: "bk.ha"; hb: "bk.hb"; hc: "bk.hc"; hd: "bk.hd"; he: "bk.he"; hf: "bk.hf"; hg: "bk.hg"; hh: "bk.hh"; hi: "bk.hi"; hj: "bk.hj"; hk: "bk.hk"; hl: "bk.hl"; hm: "bk.hm"; hn: "bk.hn"; ho: "bk.ho"; hp: "bk.hp"; hq: "bk.hq"; hr: "bk.hr"; hs: "bk.hs"; ht: "bk.ht"; hu: "bk.hu"; hv: "bk.hv"; hw: "bk.hw"; hx: "bk.hx"; hy: "bk.hy"; hz: "bk.hz"; ia: "bk.ia"; ib: "bk.ib"; ic: "bk.ic"; id: "bk.id"; ie: "bk.ie"; if: "bk.if"; ig: "bk.ig"; ih: "bk.ih"; ii: "bk.ii"; ij: "bk.ij"; ik: "bk.ik"; il: "bk.il"; im: "bk.im"; in: "bk.in"; io: "bk.io"; ip: "bk.ip"; iq: "bk.iq"; ir: "bk.ir"; is: "bk.is"; it: "bk.it"; iu: "bk.iu"; iv: "bk.iv"; iw: "bk.iw"; ix: "bk.ix"; iy: "bk.iy"; iz: "bk.iz"; ja: "bk.ja"; jb: "bk.jb"; jc: "bk.jc"; jd: "bk.jd"; je: "bk.je"; jf: "bk.jf"; jg: "bk.jg"; jh: "bk.jh"; ji: "bk.ji"; jj: "bk.jj"; jk: "bk.jk"; jl: "bk.jl"; jm: "bk.jm"; jn: "bk.jn"; jo: "bk.jo"; jp: "bk.jp"; jq: "bk.jq"; jr: "bk.jr"; js: "bk.js"; jt: "bk.jt"; ju: "bk.ju"; jv: "bk.jv"; jw: "bk.jw"; jx: "bk.jx"; jy: "bk.jy"; jz: "bk.jz"; ka: "bk.ka"; kb: "bk.kb"; kc: "bk.kc"; kd: "bk.kd"; ke: "bk.ke"; kf: "bk.kf"; kg: "bk.kg"; kh: "bk.kh"; ki: "bk.ki"; kj: "bk.kj"; kk: "bk.kk"; kl: "bk.kl"; km: "bk.km"; kn: "bk.kn"; ko: "bk.ko"; kp: "bk.kp"; kq: "bk.kq"; kr: "bk.kr"; ks: "bk.ks"; kt: "bk.kt"; ku: "bk.ku"; kv: "bk.kv"; kw: "bk.kw"; kx: "bk.kx"; ky: "bk.ky"; kz: "bk.kz"; la: "bk.la"; lb: "bk.lb"; lc: "bk.lc"; ld: "bk.ld"; le: "bk.le"; lf: "bk.lf"; lg: "bk.lg"; lh: "bk.lh"; li: "bk.li"; lj: "bk.lj"; lk: "bk.lk"; ll: "bk.ll"; lm: "bk.lm"; ln: "bk.ln"; lo: "bk.lo"; lp: "bk.lp"; lq: "bk.lq"; lr: "bk.lr"; ls: "bk.ls"; lt: "bk.lt"; lu: "bk.lu"; lv: "bk.lv"; lw: "bk.lw"; lx: "bk.lx"; ly: "bk.ly"; lz: "bk.lz"; ma: "bk.ma"; mb: "bk.mb"; mc: "bk.mc"; md: "bk.md"; me: "bk.me"; mf: "bk.mf"; mg: "bk.mg"; mh: "bk.mh"; mi: "bk.mi"; mj: "bk.mj"; mk: "bk.mk"; ml: "bk.ml"; mm: "bk.mm"; mn: "bk.mn"; mo: "bk.mo"; mp: "bk.mp"; mq: "bk.mq"; mr: "bk.mr"; ms: "bk.ms"; mt: "bk.mt"; mu: "bk.mu"; mv: "bk.mv"; mw: "bk.mw"; mx: "bk.mx"; my: "bk.my"; mz: "bk.mz"; na: "bk.na"; nb: "bk.nb"; nc: "bk.nc"; nd: "bk.nd"; ne: "bk.ne"; nf: "bk.nf"; ng: "bk.ng"; nh: "bk.nh"; ni: "bk.ni"; nj: "bk.nj"; nk: "bk.nk"; nl: "bk.nl"; nm: "bk.nm"; nn: "bk.nn"; no: "bk.no"; np: "bk.np"; nq: "bk.nq"; nr: "bk.nr"; ns: "bk.ns"; nt: "bk.nt"; nu: "bk.nu"; nv: "bk.nv"; nw: "bk.nw"; nx: "bk.nx"; ny: "bk.ny"; nz: "bk.nz"; oa: "bk.oa"; ob: "bk.ob"; oc: "bk.oc"; od: "bk.od"; oe: "bk.oe"; of: "bk.of"; og: "bk.og"; oh: "bk.oh"; oi: "bk.oi"; oj: "bk.oj"; ok: "bk.ok"; ol: "bk.ol"; om: "bk.om"; on: "bk.on"; oo: "bk.oo"; op: "bk.op"; oq: "bk.oq"; or: "bk.or"; os: "bk.os"; ot: "bk.ot"; ou: "bk.ou"; ov: "bk.ov"; ow: "bk.ow"; ox: "bk.ox"; oy: "bk.oy"; oz: "bk.oz"; pa: "bk.pa"; pb: "bk.pb"; pc: "bk.pc"; pd: "bk.pd"; pe: "bk.pe"; pf: "bk.pf"; pg: "bk.pg"; ph: "bk.ph"; pi: "bk.pi"; pj: "bk.pj"; pk: "bk.pk"; pl: "bk.pl"; pm: "bk.pm"; pn: "bk.pn"; po: "bk.po"; pp: "bk.pp"; pq: "bk.pq"; pr: "bk.pr"; ps: "bk.ps"; pt: "bk.pt"; pu: "bk.pu"; pv: "bk.pv"; pw: "bk.pw"; px: "bk.px"; py: "bk.py"; pz: "bk.pz"; qa: "bk.qa"; qb: "bk.qb"; qc: "bk.qc"; qd: "bk.qd"; qe: "bk.qe"; qf: "bk.qf"; qg: "bk.qg"; qh: "bk.qh"; qi: "bk.qi"; qj: "bk.qj"; qk: "bk.qk"; ql: "bk.ql"; qm: "bk.qm"; qn: "bk.qn"; qo: "bk.qo"; qp: "bk.qp"; qq: "bk.qq"; qr: "bk.qr"; qs: "bk.qs"; qt: "bk.qt"; qu: "bk.qu"; qv: "bk.qv"; qw: "bk.qw"; qx: "bk.qx"; qy: "bk.qy"; qz: "bk.qz"; ra: "bk.ra"; rb: "bk.rb"; rc: "bk.rc"; rd: "bk.rd"; re: "bk.re"; rf: "bk.rf"; rg: "bk.rg"; rh: "bk.rh"; ri: "bk.ri"; rj: "bk.rj"; rk: "bk.rk"; rl: "bk.rl"; rm: "bk.rm"; rn: "bk.rn"; ro: "bk.ro"; rp: "bk.rp"; rq: "bk.rq"; rr: "bk.rr"; rs: "bk.rs"; rt: "bk.rt"; ru: "bk.ru"; rv: "bk.rv"; rw: "bk.rw"; rx: "bk.rx"; ry: "bk.ry"; rz: "bk.rz"; sa: "bk.sa"; sb: "bk.sb"; sc: "bk.sc"; sd: "bk.sd"; se: "bk.se"; sf: "bk.sf"; sg: "bk.sg"; sh: "bk.sh"; si: "bk.si"; sj: "bk.sj"; sk: "bk.sk"; sl: "bk.sl"; sm: "bk.sm"; sn: "bk.sn"; so: "bk.so"; sp: "bk.sp"; sq: "bk.sq"; sr: "bk.sr"; ss: "bk.ss"; st: "bk.st"; su: "bk.su"; sv: "bk.sv"; sw: "bk.sw"; sx: "bk.sx"; sy: "bk.sy"; sz: "bk.sz"; ta: "bk.ta"; tb: "bk.tb"; tc: "bk.tc"; td: "bk.td"; te: "bk.te"; tf: "bk.tf"; tg: "bk.tg"; th: "bk.th"; ti: "bk.ti"; tj: "bk.tj"; tk: "bk.tk"; tl: "bk.tl"; tm: "bk.tm"; tn: "bk.tn"; to: "bk.to"; tp: "bk.tp"; tq: "bk.tq"; tr: "bk.tr"; ts: "bk.ts"; tt: "bk.tt"; tu: "bk.tu"; tv: "bk.tv"; tw: "bk.tw"; tx: "bk.tx"; ty: "bk.ty"; tz: "bk.tz"; ua: "bk.ua"; ub: "bk.ub"; uc: "bk.uc"; ud: "bk.ud"; ue: "bk.ue"; uf: "bk.uf"; ug: "bk.ug"; uh: "bk.uh"; ui: "bk.ui"; uj: "bk.uj"; uk: "bk.uk"; ul: "bk.ul"; um: "bk.um"; un: "bk.un"; uo: "bk.uo"; up: "bk.up"; uq: "bk.uq"; ur: "bk.ur"; us: "bk.us"; ut: "bk.ut"; uu: "bk.uu"; uv: "bk.uv"; uw: "bk.uw"; ux: "bk.ux"; uy: "bk.uy"; uz: "bk.uz"; va: "bk.va"; vb: "bk.vb"; vc: "bk.vc"; vd: "bk.vd"; ve: "bk.ve"; vf: "bk.vf"; vg: "bk.vg"; vh: "bk.vh"; vi: "bk.vi"; vj: "bk.vj"; vk: "bk.vk"; vl: "bk.vl"; vm: "bk.vm"; vn: "bk.vn"; vo: "bk.vo"; vp: "bk.vp"; vq: "bk.vq"; vr: "bk.vr"; vs: "bk.vs"; vt: "bk.vt"; vu: "bk.vu"; vv: "bk.vv"; vw: "bk.vw"; vx: "bk.vx"; vy: "bk.vy"; vz: "bk.vz"; wa: "bk.wa"; wb: "bk.wb"; wc: "bk.wc"; wd: "bk.wd"; we: "bk.we"; wf: "bk.wf"; wg: "bk.wg"; wh: "bk.wh"; wi: "bk.wi"; wj: "bk.wj"; wk: "bk.wk"; wl: "bk.wl"; wm: "bk.wm"; wn: "bk.wn"; wo: "bk.wo"; wp: "bk.wp"; wq: "bk.wq"; wr: "bk.wr"; ws: "bk.ws"; wt: "bk.wt"; wu: "bk.wu"; wv: "bk.wv"; ww: "bk.ww"; wx: "bk.wx"; wy: "bk.wy"; wz: "bk.wz"; xa: "bk.xa"; xb: "bk.xb"; xc: "bk.xc"; xd: "bk.xd"; xe: "bk.xe"; xf: "bk.xf"; xg: "bk.xg"; xh: "bk.xh"; xi: "bk.xi"; xj: "bk.xj"; xk: "bk.xk"; xl: "bk.xl"; xm: "bk.xm"; xn: "bk.xn"; xo: "bk.xo"; xp: "bk.xp"; xq: "bk.xq"; xr: "bk.xr"; xs: "bk.xs"; xt: "bk.xt"; xu: "bk.xu"; xv: "bk.xv"; xw: "bk.xw"; xx: "bk.xx"; xy: "bk.xy"; xz: "bk.xz"; ya: "bk.ya"; yb: "bk.yb"; yc: "bk.yc"; yd: "bk.yd"; ye: "bk.ye"; yf: "bk.yf"; yg: "bk.yg"; yh: "bk.yh"; yi: "bk.yi"; yj: "bk.yj"; yk: "bk.yk"; yl: "bk.yl"; ym: "bk.ym"; yn: "bk.yn"; yo: "bk.yo"; yp: "bk.yp"; yq: "bk.yq"; yr: "bk.yr"; ys: "bk.ys"; yt: "bk.yt"; yu: "bk.yu"; yv: "bk.yv"; yw: "bk.yw"; yx: "bk.yx"; yy: "bk.yy"; yz: "bk.yz"; za: "bk.za"; zb: "bk.zb"; zc: "bk.zc"; zd: "bk.zd"; ze: "bk.ze"; zf: "bk.zf"; zg: "bk.zg"; zh: "bk.zh"; zi: "bk.zi"; zj: "bk.zj"; zk: "bk.zk"; zl: "bk.zl"; zm: "bk.zm"; zn: "bk.zn"; zo: "bk.zo"; zp: "bk.zp"; zq: "bk.zq"; zr: "bk.zr"; zs: "bk.zs"; zt: "bk.zt"; zu: "bk.zu"; zv: "bk.zv"; zw: "bk.zw"; zx: "bk.zx"; zy: "bk.zy"; zz: "bk.zz"; }; bl: { aa: "bl.aa"; ab: "bl.ab"; ac: "bl.ac"; ad: "bl.ad"; ae: "bl.ae"; af: "bl.af"; ag: "bl.ag"; ah: "bl.ah"; ai: "bl.ai"; aj: "bl.aj"; ak: "bl.ak"; al: "bl.al"; am: "bl.am"; an: "bl.an"; ao: "bl.ao"; ap: "bl.ap"; aq: "bl.aq"; ar: "bl.ar"; as: "bl.as"; at: "bl.at"; au: "bl.au"; av: "bl.av"; aw: "bl.aw"; ax: "bl.ax"; ay: "bl.ay"; az: "bl.az"; ba: "bl.ba"; bb: "bl.bb"; bc: "bl.bc"; bd: "bl.bd"; be: "bl.be"; bf: "bl.bf"; bg: "bl.bg"; bh: "bl.bh"; bi: "bl.bi"; bj: "bl.bj"; bk: "bl.bk"; bl: "bl.bl"; bm: "bl.bm"; bn: "bl.bn"; bo: "bl.bo"; bp: "bl.bp"; bq: "bl.bq"; br: "bl.br"; bs: "bl.bs"; bt: "bl.bt"; bu: "bl.bu"; bv: "bl.bv"; bw: "bl.bw"; bx: "bl.bx"; by: "bl.by"; bz: "bl.bz"; ca: "bl.ca"; cb: "bl.cb"; cc: "bl.cc"; cd: "bl.cd"; ce: "bl.ce"; cf: "bl.cf"; cg: "bl.cg"; ch: "bl.ch"; ci: "bl.ci"; cj: "bl.cj"; ck: "bl.ck"; cl: "bl.cl"; cm: "bl.cm"; cn: "bl.cn"; co: "bl.co"; cp: "bl.cp"; cq: "bl.cq"; cr: "bl.cr"; cs: "bl.cs"; ct: "bl.ct"; cu: "bl.cu"; cv: "bl.cv"; cw: "bl.cw"; cx: "bl.cx"; cy: "bl.cy"; cz: "bl.cz"; da: "bl.da"; db: "bl.db"; dc: "bl.dc"; dd: "bl.dd"; de: "bl.de"; df: "bl.df"; dg: "bl.dg"; dh: "bl.dh"; di: "bl.di"; dj: "bl.dj"; dk: "bl.dk"; dl: "bl.dl"; dm: "bl.dm"; dn: "bl.dn"; do: "bl.do"; dp: "bl.dp"; dq: "bl.dq"; dr: "bl.dr"; ds: "bl.ds"; dt: "bl.dt"; du: "bl.du"; dv: "bl.dv"; dw: "bl.dw"; dx: "bl.dx"; dy: "bl.dy"; dz: "bl.dz"; ea: "bl.ea"; eb: "bl.eb"; ec: "bl.ec"; ed: "bl.ed"; ee: "bl.ee"; ef: "bl.ef"; eg: "bl.eg"; eh: "bl.eh"; ei: "bl.ei"; ej: "bl.ej"; ek: "bl.ek"; el: "bl.el"; em: "bl.em"; en: "bl.en"; eo: "bl.eo"; ep: "bl.ep"; eq: "bl.eq"; er: "bl.er"; es: "bl.es"; et: "bl.et"; eu: "bl.eu"; ev: "bl.ev"; ew: "bl.ew"; ex: "bl.ex"; ey: "bl.ey"; ez: "bl.ez"; fa: "bl.fa"; fb: "bl.fb"; fc: "bl.fc"; fd: "bl.fd"; fe: "bl.fe"; ff: "bl.ff"; fg: "bl.fg"; fh: "bl.fh"; fi: "bl.fi"; fj: "bl.fj"; fk: "bl.fk"; fl: "bl.fl"; fm: "bl.fm"; fn: "bl.fn"; fo: "bl.fo"; fp: "bl.fp"; fq: "bl.fq"; fr: "bl.fr"; fs: "bl.fs"; ft: "bl.ft"; fu: "bl.fu"; fv: "bl.fv"; fw: "bl.fw"; fx: "bl.fx"; fy: "bl.fy"; fz: "bl.fz"; ga: "bl.ga"; gb: "bl.gb"; gc: "bl.gc"; gd: "bl.gd"; ge: "bl.ge"; gf: "bl.gf"; gg: "bl.gg"; gh: "bl.gh"; gi: "bl.gi"; gj: "bl.gj"; gk: "bl.gk"; gl: "bl.gl"; gm: "bl.gm"; gn: "bl.gn"; go: "bl.go"; gp: "bl.gp"; gq: "bl.gq"; gr: "bl.gr"; gs: "bl.gs"; gt: "bl.gt"; gu: "bl.gu"; gv: "bl.gv"; gw: "bl.gw"; gx: "bl.gx"; gy: "bl.gy"; gz: "bl.gz"; ha: "bl.ha"; hb: "bl.hb"; hc: "bl.hc"; hd: "bl.hd"; he: "bl.he"; hf: "bl.hf"; hg: "bl.hg"; hh: "bl.hh"; hi: "bl.hi"; hj: "bl.hj"; hk: "bl.hk"; hl: "bl.hl"; hm: "bl.hm"; hn: "bl.hn"; ho: "bl.ho"; hp: "bl.hp"; hq: "bl.hq"; hr: "bl.hr"; hs: "bl.hs"; ht: "bl.ht"; hu: "bl.hu"; hv: "bl.hv"; hw: "bl.hw"; hx: "bl.hx"; hy: "bl.hy"; hz: "bl.hz"; ia: "bl.ia"; ib: "bl.ib"; ic: "bl.ic"; id: "bl.id"; ie: "bl.ie"; if: "bl.if"; ig: "bl.ig"; ih: "bl.ih"; ii: "bl.ii"; ij: "bl.ij"; ik: "bl.ik"; il: "bl.il"; im: "bl.im"; in: "bl.in"; io: "bl.io"; ip: "bl.ip"; iq: "bl.iq"; ir: "bl.ir"; is: "bl.is"; it: "bl.it"; iu: "bl.iu"; iv: "bl.iv"; iw: "bl.iw"; ix: "bl.ix"; iy: "bl.iy"; iz: "bl.iz"; ja: "bl.ja"; jb: "bl.jb"; jc: "bl.jc"; jd: "bl.jd"; je: "bl.je"; jf: "bl.jf"; jg: "bl.jg"; jh: "bl.jh"; ji: "bl.ji"; jj: "bl.jj"; jk: "bl.jk"; jl: "bl.jl"; jm: "bl.jm"; jn: "bl.jn"; jo: "bl.jo"; jp: "bl.jp"; jq: "bl.jq"; jr: "bl.jr"; js: "bl.js"; jt: "bl.jt"; ju: "bl.ju"; jv: "bl.jv"; jw: "bl.jw"; jx: "bl.jx"; jy: "bl.jy"; jz: "bl.jz"; ka: "bl.ka"; kb: "bl.kb"; kc: "bl.kc"; kd: "bl.kd"; ke: "bl.ke"; kf: "bl.kf"; kg: "bl.kg"; kh: "bl.kh"; ki: "bl.ki"; kj: "bl.kj"; kk: "bl.kk"; kl: "bl.kl"; km: "bl.km"; kn: "bl.kn"; ko: "bl.ko"; kp: "bl.kp"; kq: "bl.kq"; kr: "bl.kr"; ks: "bl.ks"; kt: "bl.kt"; ku: "bl.ku"; kv: "bl.kv"; kw: "bl.kw"; kx: "bl.kx"; ky: "bl.ky"; kz: "bl.kz"; la: "bl.la"; lb: "bl.lb"; lc: "bl.lc"; ld: "bl.ld"; le: "bl.le"; lf: "bl.lf"; lg: "bl.lg"; lh: "bl.lh"; li: "bl.li"; lj: "bl.lj"; lk: "bl.lk"; ll: "bl.ll"; lm: "bl.lm"; ln: "bl.ln"; lo: "bl.lo"; lp: "bl.lp"; lq: "bl.lq"; lr: "bl.lr"; ls: "bl.ls"; lt: "bl.lt"; lu: "bl.lu"; lv: "bl.lv"; lw: "bl.lw"; lx: "bl.lx"; ly: "bl.ly"; lz: "bl.lz"; ma: "bl.ma"; mb: "bl.mb"; mc: "bl.mc"; md: "bl.md"; me: "bl.me"; mf: "bl.mf"; mg: "bl.mg"; mh: "bl.mh"; mi: "bl.mi"; mj: "bl.mj"; mk: "bl.mk"; ml: "bl.ml"; mm: "bl.mm"; mn: "bl.mn"; mo: "bl.mo"; mp: "bl.mp"; mq: "bl.mq"; mr: "bl.mr"; ms: "bl.ms"; mt: "bl.mt"; mu: "bl.mu"; mv: "bl.mv"; mw: "bl.mw"; mx: "bl.mx"; my: "bl.my"; mz: "bl.mz"; na: "bl.na"; nb: "bl.nb"; nc: "bl.nc"; nd: "bl.nd"; ne: "bl.ne"; nf: "bl.nf"; ng: "bl.ng"; nh: "bl.nh"; ni: "bl.ni"; nj: "bl.nj"; nk: "bl.nk"; nl: "bl.nl"; nm: "bl.nm"; nn: "bl.nn"; no: "bl.no"; np: "bl.np"; nq: "bl.nq"; nr: "bl.nr"; ns: "bl.ns"; nt: "bl.nt"; nu: "bl.nu"; nv: "bl.nv"; nw: "bl.nw"; nx: "bl.nx"; ny: "bl.ny"; nz: "bl.nz"; oa: "bl.oa"; ob: "bl.ob"; oc: "bl.oc"; od: "bl.od"; oe: "bl.oe"; of: "bl.of"; og: "bl.og"; oh: "bl.oh"; oi: "bl.oi"; oj: "bl.oj"; ok: "bl.ok"; ol: "bl.ol"; om: "bl.om"; on: "bl.on"; oo: "bl.oo"; op: "bl.op"; oq: "bl.oq"; or: "bl.or"; os: "bl.os"; ot: "bl.ot"; ou: "bl.ou"; ov: "bl.ov"; ow: "bl.ow"; ox: "bl.ox"; oy: "bl.oy"; oz: "bl.oz"; pa: "bl.pa"; pb: "bl.pb"; pc: "bl.pc"; pd: "bl.pd"; pe: "bl.pe"; pf: "bl.pf"; pg: "bl.pg"; ph: "bl.ph"; pi: "bl.pi"; pj: "bl.pj"; pk: "bl.pk"; pl: "bl.pl"; pm: "bl.pm"; pn: "bl.pn"; po: "bl.po"; pp: "bl.pp"; pq: "bl.pq"; pr: "bl.pr"; ps: "bl.ps"; pt: "bl.pt"; pu: "bl.pu"; pv: "bl.pv"; pw: "bl.pw"; px: "bl.px"; py: "bl.py"; pz: "bl.pz"; qa: "bl.qa"; qb: "bl.qb"; qc: "bl.qc"; qd: "bl.qd"; qe: "bl.qe"; qf: "bl.qf"; qg: "bl.qg"; qh: "bl.qh"; qi: "bl.qi"; qj: "bl.qj"; qk: "bl.qk"; ql: "bl.ql"; qm: "bl.qm"; qn: "bl.qn"; qo: "bl.qo"; qp: "bl.qp"; qq: "bl.qq"; qr: "bl.qr"; qs: "bl.qs"; qt: "bl.qt"; qu: "bl.qu"; qv: "bl.qv"; qw: "bl.qw"; qx: "bl.qx"; qy: "bl.qy"; qz: "bl.qz"; ra: "bl.ra"; rb: "bl.rb"; rc: "bl.rc"; rd: "bl.rd"; re: "bl.re"; rf: "bl.rf"; rg: "bl.rg"; rh: "bl.rh"; ri: "bl.ri"; rj: "bl.rj"; rk: "bl.rk"; rl: "bl.rl"; rm: "bl.rm"; rn: "bl.rn"; ro: "bl.ro"; rp: "bl.rp"; rq: "bl.rq"; rr: "bl.rr"; rs: "bl.rs"; rt: "bl.rt"; ru: "bl.ru"; rv: "bl.rv"; rw: "bl.rw"; rx: "bl.rx"; ry: "bl.ry"; rz: "bl.rz"; sa: "bl.sa"; sb: "bl.sb"; sc: "bl.sc"; sd: "bl.sd"; se: "bl.se"; sf: "bl.sf"; sg: "bl.sg"; sh: "bl.sh"; si: "bl.si"; sj: "bl.sj"; sk: "bl.sk"; sl: "bl.sl"; sm: "bl.sm"; sn: "bl.sn"; so: "bl.so"; sp: "bl.sp"; sq: "bl.sq"; sr: "bl.sr"; ss: "bl.ss"; st: "bl.st"; su: "bl.su"; sv: "bl.sv"; sw: "bl.sw"; sx: "bl.sx"; sy: "bl.sy"; sz: "bl.sz"; ta: "bl.ta"; tb: "bl.tb"; tc: "bl.tc"; td: "bl.td"; te: "bl.te"; tf: "bl.tf"; tg: "bl.tg"; th: "bl.th"; ti: "bl.ti"; tj: "bl.tj"; tk: "bl.tk"; tl: "bl.tl"; tm: "bl.tm"; tn: "bl.tn"; to: "bl.to"; tp: "bl.tp"; tq: "bl.tq"; tr: "bl.tr"; ts: "bl.ts"; tt: "bl.tt"; tu: "bl.tu"; tv: "bl.tv"; tw: "bl.tw"; tx: "bl.tx"; ty: "bl.ty"; tz: "bl.tz"; ua: "bl.ua"; ub: "bl.ub"; uc: "bl.uc"; ud: "bl.ud"; ue: "bl.ue"; uf: "bl.uf"; ug: "bl.ug"; uh: "bl.uh"; ui: "bl.ui"; uj: "bl.uj"; uk: "bl.uk"; ul: "bl.ul"; um: "bl.um"; un: "bl.un"; uo: "bl.uo"; up: "bl.up"; uq: "bl.uq"; ur: "bl.ur"; us: "bl.us"; ut: "bl.ut"; uu: "bl.uu"; uv: "bl.uv"; uw: "bl.uw"; ux: "bl.ux"; uy: "bl.uy"; uz: "bl.uz"; va: "bl.va"; vb: "bl.vb"; vc: "bl.vc"; vd: "bl.vd"; ve: "bl.ve"; vf: "bl.vf"; vg: "bl.vg"; vh: "bl.vh"; vi: "bl.vi"; vj: "bl.vj"; vk: "bl.vk"; vl: "bl.vl"; vm: "bl.vm"; vn: "bl.vn"; vo: "bl.vo"; vp: "bl.vp"; vq: "bl.vq"; vr: "bl.vr"; vs: "bl.vs"; vt: "bl.vt"; vu: "bl.vu"; vv: "bl.vv"; vw: "bl.vw"; vx: "bl.vx"; vy: "bl.vy"; vz: "bl.vz"; wa: "bl.wa"; wb: "bl.wb"; wc: "bl.wc"; wd: "bl.wd"; we: "bl.we"; wf: "bl.wf"; wg: "bl.wg"; wh: "bl.wh"; wi: "bl.wi"; wj: "bl.wj"; wk: "bl.wk"; wl: "bl.wl"; wm: "bl.wm"; wn: "bl.wn"; wo: "bl.wo"; wp: "bl.wp"; wq: "bl.wq"; wr: "bl.wr"; ws: "bl.ws"; wt: "bl.wt"; wu: "bl.wu"; wv: "bl.wv"; ww: "bl.ww"; wx: "bl.wx"; wy: "bl.wy"; wz: "bl.wz"; xa: "bl.xa"; xb: "bl.xb"; xc: "bl.xc"; xd: "bl.xd"; xe: "bl.xe"; xf: "bl.xf"; xg: "bl.xg"; xh: "bl.xh"; xi: "bl.xi"; xj: "bl.xj"; xk: "bl.xk"; xl: "bl.xl"; xm: "bl.xm"; xn: "bl.xn"; xo: "bl.xo"; xp: "bl.xp"; xq: "bl.xq"; xr: "bl.xr"; xs: "bl.xs"; xt: "bl.xt"; xu: "bl.xu"; xv: "bl.xv"; xw: "bl.xw"; xx: "bl.xx"; xy: "bl.xy"; xz: "bl.xz"; ya: "bl.ya"; yb: "bl.yb"; yc: "bl.yc"; yd: "bl.yd"; ye: "bl.ye"; yf: "bl.yf"; yg: "bl.yg"; yh: "bl.yh"; yi: "bl.yi"; yj: "bl.yj"; yk: "bl.yk"; yl: "bl.yl"; ym: "bl.ym"; yn: "bl.yn"; yo: "bl.yo"; yp: "bl.yp"; yq: "bl.yq"; yr: "bl.yr"; ys: "bl.ys"; yt: "bl.yt"; yu: "bl.yu"; yv: "bl.yv"; yw: "bl.yw"; yx: "bl.yx"; yy: "bl.yy"; yz: "bl.yz"; za: "bl.za"; zb: "bl.zb"; zc: "bl.zc"; zd: "bl.zd"; ze: "bl.ze"; zf: "bl.zf"; zg: "bl.zg"; zh: "bl.zh"; zi: "bl.zi"; zj: "bl.zj"; zk: "bl.zk"; zl: "bl.zl"; zm: "bl.zm"; zn: "bl.zn"; zo: "bl.zo"; zp: "bl.zp"; zq: "bl.zq"; zr: "bl.zr"; zs: "bl.zs"; zt: "bl.zt"; zu: "bl.zu"; zv: "bl.zv"; zw: "bl.zw"; zx: "bl.zx"; zy: "bl.zy"; zz: "bl.zz"; }; bm: { aa: "bm.aa"; ab: "bm.ab"; ac: "bm.ac"; ad: "bm.ad"; ae: "bm.ae"; af: "bm.af"; ag: "bm.ag"; ah: "bm.ah"; ai: "bm.ai"; aj: "bm.aj"; ak: "bm.ak"; al: "bm.al"; am: "bm.am"; an: "bm.an"; ao: "bm.ao"; ap: "bm.ap"; aq: "bm.aq"; ar: "bm.ar"; as: "bm.as"; at: "bm.at"; au: "bm.au"; av: "bm.av"; aw: "bm.aw"; ax: "bm.ax"; ay: "bm.ay"; az: "bm.az"; ba: "bm.ba"; bb: "bm.bb"; bc: "bm.bc"; bd: "bm.bd"; be: "bm.be"; bf: "bm.bf"; bg: "bm.bg"; bh: "bm.bh"; bi: "bm.bi"; bj: "bm.bj"; bk: "bm.bk"; bl: "bm.bl"; bm: "bm.bm"; bn: "bm.bn"; bo: "bm.bo"; bp: "bm.bp"; bq: "bm.bq"; br: "bm.br"; bs: "bm.bs"; bt: "bm.bt"; bu: "bm.bu"; bv: "bm.bv"; bw: "bm.bw"; bx: "bm.bx"; by: "bm.by"; bz: "bm.bz"; ca: "bm.ca"; cb: "bm.cb"; cc: "bm.cc"; cd: "bm.cd"; ce: "bm.ce"; cf: "bm.cf"; cg: "bm.cg"; ch: "bm.ch"; ci: "bm.ci"; cj: "bm.cj"; ck: "bm.ck"; cl: "bm.cl"; cm: "bm.cm"; cn: "bm.cn"; co: "bm.co"; cp: "bm.cp"; cq: "bm.cq"; cr: "bm.cr"; cs: "bm.cs"; ct: "bm.ct"; cu: "bm.cu"; cv: "bm.cv"; cw: "bm.cw"; cx: "bm.cx"; cy: "bm.cy"; cz: "bm.cz"; da: "bm.da"; db: "bm.db"; dc: "bm.dc"; dd: "bm.dd"; de: "bm.de"; df: "bm.df"; dg: "bm.dg"; dh: "bm.dh"; di: "bm.di"; dj: "bm.dj"; dk: "bm.dk"; dl: "bm.dl"; dm: "bm.dm"; dn: "bm.dn"; do: "bm.do"; dp: "bm.dp"; dq: "bm.dq"; dr: "bm.dr"; ds: "bm.ds"; dt: "bm.dt"; du: "bm.du"; dv: "bm.dv"; dw: "bm.dw"; dx: "bm.dx"; dy: "bm.dy"; dz: "bm.dz"; ea: "bm.ea"; eb: "bm.eb"; ec: "bm.ec"; ed: "bm.ed"; ee: "bm.ee"; ef: "bm.ef"; eg: "bm.eg"; eh: "bm.eh"; ei: "bm.ei"; ej: "bm.ej"; ek: "bm.ek"; el: "bm.el"; em: "bm.em"; en: "bm.en"; eo: "bm.eo"; ep: "bm.ep"; eq: "bm.eq"; er: "bm.er"; es: "bm.es"; et: "bm.et"; eu: "bm.eu"; ev: "bm.ev"; ew: "bm.ew"; ex: "bm.ex"; ey: "bm.ey"; ez: "bm.ez"; fa: "bm.fa"; fb: "bm.fb"; fc: "bm.fc"; fd: "bm.fd"; fe: "bm.fe"; ff: "bm.ff"; fg: "bm.fg"; fh: "bm.fh"; fi: "bm.fi"; fj: "bm.fj"; fk: "bm.fk"; fl: "bm.fl"; fm: "bm.fm"; fn: "bm.fn"; fo: "bm.fo"; fp: "bm.fp"; fq: "bm.fq"; fr: "bm.fr"; fs: "bm.fs"; ft: "bm.ft"; fu: "bm.fu"; fv: "bm.fv"; fw: "bm.fw"; fx: "bm.fx"; fy: "bm.fy"; fz: "bm.fz"; ga: "bm.ga"; gb: "bm.gb"; gc: "bm.gc"; gd: "bm.gd"; ge: "bm.ge"; gf: "bm.gf"; gg: "bm.gg"; gh: "bm.gh"; gi: "bm.gi"; gj: "bm.gj"; gk: "bm.gk"; gl: "bm.gl"; gm: "bm.gm"; gn: "bm.gn"; go: "bm.go"; gp: "bm.gp"; gq: "bm.gq"; gr: "bm.gr"; gs: "bm.gs"; gt: "bm.gt"; gu: "bm.gu"; gv: "bm.gv"; gw: "bm.gw"; gx: "bm.gx"; gy: "bm.gy"; gz: "bm.gz"; ha: "bm.ha"; hb: "bm.hb"; hc: "bm.hc"; hd: "bm.hd"; he: "bm.he"; hf: "bm.hf"; hg: "bm.hg"; hh: "bm.hh"; hi: "bm.hi"; hj: "bm.hj"; hk: "bm.hk"; hl: "bm.hl"; hm: "bm.hm"; hn: "bm.hn"; ho: "bm.ho"; hp: "bm.hp"; hq: "bm.hq"; hr: "bm.hr"; hs: "bm.hs"; ht: "bm.ht"; hu: "bm.hu"; hv: "bm.hv"; hw: "bm.hw"; hx: "bm.hx"; hy: "bm.hy"; hz: "bm.hz"; ia: "bm.ia"; ib: "bm.ib"; ic: "bm.ic"; id: "bm.id"; ie: "bm.ie"; if: "bm.if"; ig: "bm.ig"; ih: "bm.ih"; ii: "bm.ii"; ij: "bm.ij"; ik: "bm.ik"; il: "bm.il"; im: "bm.im"; in: "bm.in"; io: "bm.io"; ip: "bm.ip"; iq: "bm.iq"; ir: "bm.ir"; is: "bm.is"; it: "bm.it"; iu: "bm.iu"; iv: "bm.iv"; iw: "bm.iw"; ix: "bm.ix"; iy: "bm.iy"; iz: "bm.iz"; ja: "bm.ja"; jb: "bm.jb"; jc: "bm.jc"; jd: "bm.jd"; je: "bm.je"; jf: "bm.jf"; jg: "bm.jg"; jh: "bm.jh"; ji: "bm.ji"; jj: "bm.jj"; jk: "bm.jk"; jl: "bm.jl"; jm: "bm.jm"; jn: "bm.jn"; jo: "bm.jo"; jp: "bm.jp"; jq: "bm.jq"; jr: "bm.jr"; js: "bm.js"; jt: "bm.jt"; ju: "bm.ju"; jv: "bm.jv"; jw: "bm.jw"; jx: "bm.jx"; jy: "bm.jy"; jz: "bm.jz"; ka: "bm.ka"; kb: "bm.kb"; kc: "bm.kc"; kd: "bm.kd"; ke: "bm.ke"; kf: "bm.kf"; kg: "bm.kg"; kh: "bm.kh"; ki: "bm.ki"; kj: "bm.kj"; kk: "bm.kk"; kl: "bm.kl"; km: "bm.km"; kn: "bm.kn"; ko: "bm.ko"; kp: "bm.kp"; kq: "bm.kq"; kr: "bm.kr"; ks: "bm.ks"; kt: "bm.kt"; ku: "bm.ku"; kv: "bm.kv"; kw: "bm.kw"; kx: "bm.kx"; ky: "bm.ky"; kz: "bm.kz"; la: "bm.la"; lb: "bm.lb"; lc: "bm.lc"; ld: "bm.ld"; le: "bm.le"; lf: "bm.lf"; lg: "bm.lg"; lh: "bm.lh"; li: "bm.li"; lj: "bm.lj"; lk: "bm.lk"; ll: "bm.ll"; lm: "bm.lm"; ln: "bm.ln"; lo: "bm.lo"; lp: "bm.lp"; lq: "bm.lq"; lr: "bm.lr"; ls: "bm.ls"; lt: "bm.lt"; lu: "bm.lu"; lv: "bm.lv"; lw: "bm.lw"; lx: "bm.lx"; ly: "bm.ly"; lz: "bm.lz"; ma: "bm.ma"; mb: "bm.mb"; mc: "bm.mc"; md: "bm.md"; me: "bm.me"; mf: "bm.mf"; mg: "bm.mg"; mh: "bm.mh"; mi: "bm.mi"; mj: "bm.mj"; mk: "bm.mk"; ml: "bm.ml"; mm: "bm.mm"; mn: "bm.mn"; mo: "bm.mo"; mp: "bm.mp"; mq: "bm.mq"; mr: "bm.mr"; ms: "bm.ms"; mt: "bm.mt"; mu: "bm.mu"; mv: "bm.mv"; mw: "bm.mw"; mx: "bm.mx"; my: "bm.my"; mz: "bm.mz"; na: "bm.na"; nb: "bm.nb"; nc: "bm.nc"; nd: "bm.nd"; ne: "bm.ne"; nf: "bm.nf"; ng: "bm.ng"; nh: "bm.nh"; ni: "bm.ni"; nj: "bm.nj"; nk: "bm.nk"; nl: "bm.nl"; nm: "bm.nm"; nn: "bm.nn"; no: "bm.no"; np: "bm.np"; nq: "bm.nq"; nr: "bm.nr"; ns: "bm.ns"; nt: "bm.nt"; nu: "bm.nu"; nv: "bm.nv"; nw: "bm.nw"; nx: "bm.nx"; ny: "bm.ny"; nz: "bm.nz"; oa: "bm.oa"; ob: "bm.ob"; oc: "bm.oc"; od: "bm.od"; oe: "bm.oe"; of: "bm.of"; og: "bm.og"; oh: "bm.oh"; oi: "bm.oi"; oj: "bm.oj"; ok: "bm.ok"; ol: "bm.ol"; om: "bm.om"; on: "bm.on"; oo: "bm.oo"; op: "bm.op"; oq: "bm.oq"; or: "bm.or"; os: "bm.os"; ot: "bm.ot"; ou: "bm.ou"; ov: "bm.ov"; ow: "bm.ow"; ox: "bm.ox"; oy: "bm.oy"; oz: "bm.oz"; pa: "bm.pa"; pb: "bm.pb"; pc: "bm.pc"; pd: "bm.pd"; pe: "bm.pe"; pf: "bm.pf"; pg: "bm.pg"; ph: "bm.ph"; pi: "bm.pi"; pj: "bm.pj"; pk: "bm.pk"; pl: "bm.pl"; pm: "bm.pm"; pn: "bm.pn"; po: "bm.po"; pp: "bm.pp"; pq: "bm.pq"; pr: "bm.pr"; ps: "bm.ps"; pt: "bm.pt"; pu: "bm.pu"; pv: "bm.pv"; pw: "bm.pw"; px: "bm.px"; py: "bm.py"; pz: "bm.pz"; qa: "bm.qa"; qb: "bm.qb"; qc: "bm.qc"; qd: "bm.qd"; qe: "bm.qe"; qf: "bm.qf"; qg: "bm.qg"; qh: "bm.qh"; qi: "bm.qi"; qj: "bm.qj"; qk: "bm.qk"; ql: "bm.ql"; qm: "bm.qm"; qn: "bm.qn"; qo: "bm.qo"; qp: "bm.qp"; qq: "bm.qq"; qr: "bm.qr"; qs: "bm.qs"; qt: "bm.qt"; qu: "bm.qu"; qv: "bm.qv"; qw: "bm.qw"; qx: "bm.qx"; qy: "bm.qy"; qz: "bm.qz"; ra: "bm.ra"; rb: "bm.rb"; rc: "bm.rc"; rd: "bm.rd"; re: "bm.re"; rf: "bm.rf"; rg: "bm.rg"; rh: "bm.rh"; ri: "bm.ri"; rj: "bm.rj"; rk: "bm.rk"; rl: "bm.rl"; rm: "bm.rm"; rn: "bm.rn"; ro: "bm.ro"; rp: "bm.rp"; rq: "bm.rq"; rr: "bm.rr"; rs: "bm.rs"; rt: "bm.rt"; ru: "bm.ru"; rv: "bm.rv"; rw: "bm.rw"; rx: "bm.rx"; ry: "bm.ry"; rz: "bm.rz"; sa: "bm.sa"; sb: "bm.sb"; sc: "bm.sc"; sd: "bm.sd"; se: "bm.se"; sf: "bm.sf"; sg: "bm.sg"; sh: "bm.sh"; si: "bm.si"; sj: "bm.sj"; sk: "bm.sk"; sl: "bm.sl"; sm: "bm.sm"; sn: "bm.sn"; so: "bm.so"; sp: "bm.sp"; sq: "bm.sq"; sr: "bm.sr"; ss: "bm.ss"; st: "bm.st"; su: "bm.su"; sv: "bm.sv"; sw: "bm.sw"; sx: "bm.sx"; sy: "bm.sy"; sz: "bm.sz"; ta: "bm.ta"; tb: "bm.tb"; tc: "bm.tc"; td: "bm.td"; te: "bm.te"; tf: "bm.tf"; tg: "bm.tg"; th: "bm.th"; ti: "bm.ti"; tj: "bm.tj"; tk: "bm.tk"; tl: "bm.tl"; tm: "bm.tm"; tn: "bm.tn"; to: "bm.to"; tp: "bm.tp"; tq: "bm.tq"; tr: "bm.tr"; ts: "bm.ts"; tt: "bm.tt"; tu: "bm.tu"; tv: "bm.tv"; tw: "bm.tw"; tx: "bm.tx"; ty: "bm.ty"; tz: "bm.tz"; ua: "bm.ua"; ub: "bm.ub"; uc: "bm.uc"; ud: "bm.ud"; ue: "bm.ue"; uf: "bm.uf"; ug: "bm.ug"; uh: "bm.uh"; ui: "bm.ui"; uj: "bm.uj"; uk: "bm.uk"; ul: "bm.ul"; um: "bm.um"; un: "bm.un"; uo: "bm.uo"; up: "bm.up"; uq: "bm.uq"; ur: "bm.ur"; us: "bm.us"; ut: "bm.ut"; uu: "bm.uu"; uv: "bm.uv"; uw: "bm.uw"; ux: "bm.ux"; uy: "bm.uy"; uz: "bm.uz"; va: "bm.va"; vb: "bm.vb"; vc: "bm.vc"; vd: "bm.vd"; ve: "bm.ve"; vf: "bm.vf"; vg: "bm.vg"; vh: "bm.vh"; vi: "bm.vi"; vj: "bm.vj"; vk: "bm.vk"; vl: "bm.vl"; vm: "bm.vm"; vn: "bm.vn"; vo: "bm.vo"; vp: "bm.vp"; vq: "bm.vq"; vr: "bm.vr"; vs: "bm.vs"; vt: "bm.vt"; vu: "bm.vu"; vv: "bm.vv"; vw: "bm.vw"; vx: "bm.vx"; vy: "bm.vy"; vz: "bm.vz"; wa: "bm.wa"; wb: "bm.wb"; wc: "bm.wc"; wd: "bm.wd"; we: "bm.we"; wf: "bm.wf"; wg: "bm.wg"; wh: "bm.wh"; wi: "bm.wi"; wj: "bm.wj"; wk: "bm.wk"; wl: "bm.wl"; wm: "bm.wm"; wn: "bm.wn"; wo: "bm.wo"; wp: "bm.wp"; wq: "bm.wq"; wr: "bm.wr"; ws: "bm.ws"; wt: "bm.wt"; wu: "bm.wu"; wv: "bm.wv"; ww: "bm.ww"; wx: "bm.wx"; wy: "bm.wy"; wz: "bm.wz"; xa: "bm.xa"; xb: "bm.xb"; xc: "bm.xc"; xd: "bm.xd"; xe: "bm.xe"; xf: "bm.xf"; xg: "bm.xg"; xh: "bm.xh"; xi: "bm.xi"; xj: "bm.xj"; xk: "bm.xk"; xl: "bm.xl"; xm: "bm.xm"; xn: "bm.xn"; xo: "bm.xo"; xp: "bm.xp"; xq: "bm.xq"; xr: "bm.xr"; xs: "bm.xs"; xt: "bm.xt"; xu: "bm.xu"; xv: "bm.xv"; xw: "bm.xw"; xx: "bm.xx"; xy: "bm.xy"; xz: "bm.xz"; ya: "bm.ya"; yb: "bm.yb"; yc: "bm.yc"; yd: "bm.yd"; ye: "bm.ye"; yf: "bm.yf"; yg: "bm.yg"; yh: "bm.yh"; yi: "bm.yi"; yj: "bm.yj"; yk: "bm.yk"; yl: "bm.yl"; ym: "bm.ym"; yn: "bm.yn"; yo: "bm.yo"; yp: "bm.yp"; yq: "bm.yq"; yr: "bm.yr"; ys: "bm.ys"; yt: "bm.yt"; yu: "bm.yu"; yv: "bm.yv"; yw: "bm.yw"; yx: "bm.yx"; yy: "bm.yy"; yz: "bm.yz"; za: "bm.za"; zb: "bm.zb"; zc: "bm.zc"; zd: "bm.zd"; ze: "bm.ze"; zf: "bm.zf"; zg: "bm.zg"; zh: "bm.zh"; zi: "bm.zi"; zj: "bm.zj"; zk: "bm.zk"; zl: "bm.zl"; zm: "bm.zm"; zn: "bm.zn"; zo: "bm.zo"; zp: "bm.zp"; zq: "bm.zq"; zr: "bm.zr"; zs: "bm.zs"; zt: "bm.zt"; zu: "bm.zu"; zv: "bm.zv"; zw: "bm.zw"; zx: "bm.zx"; zy: "bm.zy"; zz: "bm.zz"; }; bn: { aa: "bn.aa"; ab: "bn.ab"; ac: "bn.ac"; ad: "bn.ad"; ae: "bn.ae"; af: "bn.af"; ag: "bn.ag"; ah: "bn.ah"; ai: "bn.ai"; aj: "bn.aj"; ak: "bn.ak"; al: "bn.al"; am: "bn.am"; an: "bn.an"; ao: "bn.ao"; ap: "bn.ap"; aq: "bn.aq"; ar: "bn.ar"; as: "bn.as"; at: "bn.at"; au: "bn.au"; av: "bn.av"; aw: "bn.aw"; ax: "bn.ax"; ay: "bn.ay"; az: "bn.az"; ba: "bn.ba"; bb: "bn.bb"; bc: "bn.bc"; bd: "bn.bd"; be: "bn.be"; bf: "bn.bf"; bg: "bn.bg"; bh: "bn.bh"; bi: "bn.bi"; bj: "bn.bj"; bk: "bn.bk"; bl: "bn.bl"; bm: "bn.bm"; bn: "bn.bn"; bo: "bn.bo"; bp: "bn.bp"; bq: "bn.bq"; br: "bn.br"; bs: "bn.bs"; bt: "bn.bt"; bu: "bn.bu"; bv: "bn.bv"; bw: "bn.bw"; bx: "bn.bx"; by: "bn.by"; bz: "bn.bz"; ca: "bn.ca"; cb: "bn.cb"; cc: "bn.cc"; cd: "bn.cd"; ce: "bn.ce"; cf: "bn.cf"; cg: "bn.cg"; ch: "bn.ch"; ci: "bn.ci"; cj: "bn.cj"; ck: "bn.ck"; cl: "bn.cl"; cm: "bn.cm"; cn: "bn.cn"; co: "bn.co"; cp: "bn.cp"; cq: "bn.cq"; cr: "bn.cr"; cs: "bn.cs"; ct: "bn.ct"; cu: "bn.cu"; cv: "bn.cv"; cw: "bn.cw"; cx: "bn.cx"; cy: "bn.cy"; cz: "bn.cz"; da: "bn.da"; db: "bn.db"; dc: "bn.dc"; dd: "bn.dd"; de: "bn.de"; df: "bn.df"; dg: "bn.dg"; dh: "bn.dh"; di: "bn.di"; dj: "bn.dj"; dk: "bn.dk"; dl: "bn.dl"; dm: "bn.dm"; dn: "bn.dn"; do: "bn.do"; dp: "bn.dp"; dq: "bn.dq"; dr: "bn.dr"; ds: "bn.ds"; dt: "bn.dt"; du: "bn.du"; dv: "bn.dv"; dw: "bn.dw"; dx: "bn.dx"; dy: "bn.dy"; dz: "bn.dz"; ea: "bn.ea"; eb: "bn.eb"; ec: "bn.ec"; ed: "bn.ed"; ee: "bn.ee"; ef: "bn.ef"; eg: "bn.eg"; eh: "bn.eh"; ei: "bn.ei"; ej: "bn.ej"; ek: "bn.ek"; el: "bn.el"; em: "bn.em"; en: "bn.en"; eo: "bn.eo"; ep: "bn.ep"; eq: "bn.eq"; er: "bn.er"; es: "bn.es"; et: "bn.et"; eu: "bn.eu"; ev: "bn.ev"; ew: "bn.ew"; ex: "bn.ex"; ey: "bn.ey"; ez: "bn.ez"; fa: "bn.fa"; fb: "bn.fb"; fc: "bn.fc"; fd: "bn.fd"; fe: "bn.fe"; ff: "bn.ff"; fg: "bn.fg"; fh: "bn.fh"; fi: "bn.fi"; fj: "bn.fj"; fk: "bn.fk"; fl: "bn.fl"; fm: "bn.fm"; fn: "bn.fn"; fo: "bn.fo"; fp: "bn.fp"; fq: "bn.fq"; fr: "bn.fr"; fs: "bn.fs"; ft: "bn.ft"; fu: "bn.fu"; fv: "bn.fv"; fw: "bn.fw"; fx: "bn.fx"; fy: "bn.fy"; fz: "bn.fz"; ga: "bn.ga"; gb: "bn.gb"; gc: "bn.gc"; gd: "bn.gd"; ge: "bn.ge"; gf: "bn.gf"; gg: "bn.gg"; gh: "bn.gh"; gi: "bn.gi"; gj: "bn.gj"; gk: "bn.gk"; gl: "bn.gl"; gm: "bn.gm"; gn: "bn.gn"; go: "bn.go"; gp: "bn.gp"; gq: "bn.gq"; gr: "bn.gr"; gs: "bn.gs"; gt: "bn.gt"; gu: "bn.gu"; gv: "bn.gv"; gw: "bn.gw"; gx: "bn.gx"; gy: "bn.gy"; gz: "bn.gz"; ha: "bn.ha"; hb: "bn.hb"; hc: "bn.hc"; hd: "bn.hd"; he: "bn.he"; hf: "bn.hf"; hg: "bn.hg"; hh: "bn.hh"; hi: "bn.hi"; hj: "bn.hj"; hk: "bn.hk"; hl: "bn.hl"; hm: "bn.hm"; hn: "bn.hn"; ho: "bn.ho"; hp: "bn.hp"; hq: "bn.hq"; hr: "bn.hr"; hs: "bn.hs"; ht: "bn.ht"; hu: "bn.hu"; hv: "bn.hv"; hw: "bn.hw"; hx: "bn.hx"; hy: "bn.hy"; hz: "bn.hz"; ia: "bn.ia"; ib: "bn.ib"; ic: "bn.ic"; id: "bn.id"; ie: "bn.ie"; if: "bn.if"; ig: "bn.ig"; ih: "bn.ih"; ii: "bn.ii"; ij: "bn.ij"; ik: "bn.ik"; il: "bn.il"; im: "bn.im"; in: "bn.in"; io: "bn.io"; ip: "bn.ip"; iq: "bn.iq"; ir: "bn.ir"; is: "bn.is"; it: "bn.it"; iu: "bn.iu"; iv: "bn.iv"; iw: "bn.iw"; ix: "bn.ix"; iy: "bn.iy"; iz: "bn.iz"; ja: "bn.ja"; jb: "bn.jb"; jc: "bn.jc"; jd: "bn.jd"; je: "bn.je"; jf: "bn.jf"; jg: "bn.jg"; jh: "bn.jh"; ji: "bn.ji"; jj: "bn.jj"; jk: "bn.jk"; jl: "bn.jl"; jm: "bn.jm"; jn: "bn.jn"; jo: "bn.jo"; jp: "bn.jp"; jq: "bn.jq"; jr: "bn.jr"; js: "bn.js"; jt: "bn.jt"; ju: "bn.ju"; jv: "bn.jv"; jw: "bn.jw"; jx: "bn.jx"; jy: "bn.jy"; jz: "bn.jz"; ka: "bn.ka"; kb: "bn.kb"; kc: "bn.kc"; kd: "bn.kd"; ke: "bn.ke"; kf: "bn.kf"; kg: "bn.kg"; kh: "bn.kh"; ki: "bn.ki"; kj: "bn.kj"; kk: "bn.kk"; kl: "bn.kl"; km: "bn.km"; kn: "bn.kn"; ko: "bn.ko"; kp: "bn.kp"; kq: "bn.kq"; kr: "bn.kr"; ks: "bn.ks"; kt: "bn.kt"; ku: "bn.ku"; kv: "bn.kv"; kw: "bn.kw"; kx: "bn.kx"; ky: "bn.ky"; kz: "bn.kz"; la: "bn.la"; lb: "bn.lb"; lc: "bn.lc"; ld: "bn.ld"; le: "bn.le"; lf: "bn.lf"; lg: "bn.lg"; lh: "bn.lh"; li: "bn.li"; lj: "bn.lj"; lk: "bn.lk"; ll: "bn.ll"; lm: "bn.lm"; ln: "bn.ln"; lo: "bn.lo"; lp: "bn.lp"; lq: "bn.lq"; lr: "bn.lr"; ls: "bn.ls"; lt: "bn.lt"; lu: "bn.lu"; lv: "bn.lv"; lw: "bn.lw"; lx: "bn.lx"; ly: "bn.ly"; lz: "bn.lz"; ma: "bn.ma"; mb: "bn.mb"; mc: "bn.mc"; md: "bn.md"; me: "bn.me"; mf: "bn.mf"; mg: "bn.mg"; mh: "bn.mh"; mi: "bn.mi"; mj: "bn.mj"; mk: "bn.mk"; ml: "bn.ml"; mm: "bn.mm"; mn: "bn.mn"; mo: "bn.mo"; mp: "bn.mp"; mq: "bn.mq"; mr: "bn.mr"; ms: "bn.ms"; mt: "bn.mt"; mu: "bn.mu"; mv: "bn.mv"; mw: "bn.mw"; mx: "bn.mx"; my: "bn.my"; mz: "bn.mz"; na: "bn.na"; nb: "bn.nb"; nc: "bn.nc"; nd: "bn.nd"; ne: "bn.ne"; nf: "bn.nf"; ng: "bn.ng"; nh: "bn.nh"; ni: "bn.ni"; nj: "bn.nj"; nk: "bn.nk"; nl: "bn.nl"; nm: "bn.nm"; nn: "bn.nn"; no: "bn.no"; np: "bn.np"; nq: "bn.nq"; nr: "bn.nr"; ns: "bn.ns"; nt: "bn.nt"; nu: "bn.nu"; nv: "bn.nv"; nw: "bn.nw"; nx: "bn.nx"; ny: "bn.ny"; nz: "bn.nz"; oa: "bn.oa"; ob: "bn.ob"; oc: "bn.oc"; od: "bn.od"; oe: "bn.oe"; of: "bn.of"; og: "bn.og"; oh: "bn.oh"; oi: "bn.oi"; oj: "bn.oj"; ok: "bn.ok"; ol: "bn.ol"; om: "bn.om"; on: "bn.on"; oo: "bn.oo"; op: "bn.op"; oq: "bn.oq"; or: "bn.or"; os: "bn.os"; ot: "bn.ot"; ou: "bn.ou"; ov: "bn.ov"; ow: "bn.ow"; ox: "bn.ox"; oy: "bn.oy"; oz: "bn.oz"; pa: "bn.pa"; pb: "bn.pb"; pc: "bn.pc"; pd: "bn.pd"; pe: "bn.pe"; pf: "bn.pf"; pg: "bn.pg"; ph: "bn.ph"; pi: "bn.pi"; pj: "bn.pj"; pk: "bn.pk"; pl: "bn.pl"; pm: "bn.pm"; pn: "bn.pn"; po: "bn.po"; pp: "bn.pp"; pq: "bn.pq"; pr: "bn.pr"; ps: "bn.ps"; pt: "bn.pt"; pu: "bn.pu"; pv: "bn.pv"; pw: "bn.pw"; px: "bn.px"; py: "bn.py"; pz: "bn.pz"; qa: "bn.qa"; qb: "bn.qb"; qc: "bn.qc"; qd: "bn.qd"; qe: "bn.qe"; qf: "bn.qf"; qg: "bn.qg"; qh: "bn.qh"; qi: "bn.qi"; qj: "bn.qj"; qk: "bn.qk"; ql: "bn.ql"; qm: "bn.qm"; qn: "bn.qn"; qo: "bn.qo"; qp: "bn.qp"; qq: "bn.qq"; qr: "bn.qr"; qs: "bn.qs"; qt: "bn.qt"; qu: "bn.qu"; qv: "bn.qv"; qw: "bn.qw"; qx: "bn.qx"; qy: "bn.qy"; qz: "bn.qz"; ra: "bn.ra"; rb: "bn.rb"; rc: "bn.rc"; rd: "bn.rd"; re: "bn.re"; rf: "bn.rf"; rg: "bn.rg"; rh: "bn.rh"; ri: "bn.ri"; rj: "bn.rj"; rk: "bn.rk"; rl: "bn.rl"; rm: "bn.rm"; rn: "bn.rn"; ro: "bn.ro"; rp: "bn.rp"; rq: "bn.rq"; rr: "bn.rr"; rs: "bn.rs"; rt: "bn.rt"; ru: "bn.ru"; rv: "bn.rv"; rw: "bn.rw"; rx: "bn.rx"; ry: "bn.ry"; rz: "bn.rz"; sa: "bn.sa"; sb: "bn.sb"; sc: "bn.sc"; sd: "bn.sd"; se: "bn.se"; sf: "bn.sf"; sg: "bn.sg"; sh: "bn.sh"; si: "bn.si"; sj: "bn.sj"; sk: "bn.sk"; sl: "bn.sl"; sm: "bn.sm"; sn: "bn.sn"; so: "bn.so"; sp: "bn.sp"; sq: "bn.sq"; sr: "bn.sr"; ss: "bn.ss"; st: "bn.st"; su: "bn.su"; sv: "bn.sv"; sw: "bn.sw"; sx: "bn.sx"; sy: "bn.sy"; sz: "bn.sz"; ta: "bn.ta"; tb: "bn.tb"; tc: "bn.tc"; td: "bn.td"; te: "bn.te"; tf: "bn.tf"; tg: "bn.tg"; th: "bn.th"; ti: "bn.ti"; tj: "bn.tj"; tk: "bn.tk"; tl: "bn.tl"; tm: "bn.tm"; tn: "bn.tn"; to: "bn.to"; tp: "bn.tp"; tq: "bn.tq"; tr: "bn.tr"; ts: "bn.ts"; tt: "bn.tt"; tu: "bn.tu"; tv: "bn.tv"; tw: "bn.tw"; tx: "bn.tx"; ty: "bn.ty"; tz: "bn.tz"; ua: "bn.ua"; ub: "bn.ub"; uc: "bn.uc"; ud: "bn.ud"; ue: "bn.ue"; uf: "bn.uf"; ug: "bn.ug"; uh: "bn.uh"; ui: "bn.ui"; uj: "bn.uj"; uk: "bn.uk"; ul: "bn.ul"; um: "bn.um"; un: "bn.un"; uo: "bn.uo"; up: "bn.up"; uq: "bn.uq"; ur: "bn.ur"; us: "bn.us"; ut: "bn.ut"; uu: "bn.uu"; uv: "bn.uv"; uw: "bn.uw"; ux: "bn.ux"; uy: "bn.uy"; uz: "bn.uz"; va: "bn.va"; vb: "bn.vb"; vc: "bn.vc"; vd: "bn.vd"; ve: "bn.ve"; vf: "bn.vf"; vg: "bn.vg"; vh: "bn.vh"; vi: "bn.vi"; vj: "bn.vj"; vk: "bn.vk"; vl: "bn.vl"; vm: "bn.vm"; vn: "bn.vn"; vo: "bn.vo"; vp: "bn.vp"; vq: "bn.vq"; vr: "bn.vr"; vs: "bn.vs"; vt: "bn.vt"; vu: "bn.vu"; vv: "bn.vv"; vw: "bn.vw"; vx: "bn.vx"; vy: "bn.vy"; vz: "bn.vz"; wa: "bn.wa"; wb: "bn.wb"; wc: "bn.wc"; wd: "bn.wd"; we: "bn.we"; wf: "bn.wf"; wg: "bn.wg"; wh: "bn.wh"; wi: "bn.wi"; wj: "bn.wj"; wk: "bn.wk"; wl: "bn.wl"; wm: "bn.wm"; wn: "bn.wn"; wo: "bn.wo"; wp: "bn.wp"; wq: "bn.wq"; wr: "bn.wr"; ws: "bn.ws"; wt: "bn.wt"; wu: "bn.wu"; wv: "bn.wv"; ww: "bn.ww"; wx: "bn.wx"; wy: "bn.wy"; wz: "bn.wz"; xa: "bn.xa"; xb: "bn.xb"; xc: "bn.xc"; xd: "bn.xd"; xe: "bn.xe"; xf: "bn.xf"; xg: "bn.xg"; xh: "bn.xh"; xi: "bn.xi"; xj: "bn.xj"; xk: "bn.xk"; xl: "bn.xl"; xm: "bn.xm"; xn: "bn.xn"; xo: "bn.xo"; xp: "bn.xp"; xq: "bn.xq"; xr: "bn.xr"; xs: "bn.xs"; xt: "bn.xt"; xu: "bn.xu"; xv: "bn.xv"; xw: "bn.xw"; xx: "bn.xx"; xy: "bn.xy"; xz: "bn.xz"; ya: "bn.ya"; yb: "bn.yb"; yc: "bn.yc"; yd: "bn.yd"; ye: "bn.ye"; yf: "bn.yf"; yg: "bn.yg"; yh: "bn.yh"; yi: "bn.yi"; yj: "bn.yj"; yk: "bn.yk"; yl: "bn.yl"; ym: "bn.ym"; yn: "bn.yn"; yo: "bn.yo"; yp: "bn.yp"; yq: "bn.yq"; yr: "bn.yr"; ys: "bn.ys"; yt: "bn.yt"; yu: "bn.yu"; yv: "bn.yv"; yw: "bn.yw"; yx: "bn.yx"; yy: "bn.yy"; yz: "bn.yz"; za: "bn.za"; zb: "bn.zb"; zc: "bn.zc"; zd: "bn.zd"; ze: "bn.ze"; zf: "bn.zf"; zg: "bn.zg"; zh: "bn.zh"; zi: "bn.zi"; zj: "bn.zj"; zk: "bn.zk"; zl: "bn.zl"; zm: "bn.zm"; zn: "bn.zn"; zo: "bn.zo"; zp: "bn.zp"; zq: "bn.zq"; zr: "bn.zr"; zs: "bn.zs"; zt: "bn.zt"; zu: "bn.zu"; zv: "bn.zv"; zw: "bn.zw"; zx: "bn.zx"; zy: "bn.zy"; zz: "bn.zz"; }; bo: { aa: "bo.aa"; ab: "bo.ab"; ac: "bo.ac"; ad: "bo.ad"; ae: "bo.ae"; af: "bo.af"; ag: "bo.ag"; ah: "bo.ah"; ai: "bo.ai"; aj: "bo.aj"; ak: "bo.ak"; al: "bo.al"; am: "bo.am"; an: "bo.an"; ao: "bo.ao"; ap: "bo.ap"; aq: "bo.aq"; ar: "bo.ar"; as: "bo.as"; at: "bo.at"; au: "bo.au"; av: "bo.av"; aw: "bo.aw"; ax: "bo.ax"; ay: "bo.ay"; az: "bo.az"; ba: "bo.ba"; bb: "bo.bb"; bc: "bo.bc"; bd: "bo.bd"; be: "bo.be"; bf: "bo.bf"; bg: "bo.bg"; bh: "bo.bh"; bi: "bo.bi"; bj: "bo.bj"; bk: "bo.bk"; bl: "bo.bl"; bm: "bo.bm"; bn: "bo.bn"; bo: "bo.bo"; bp: "bo.bp"; bq: "bo.bq"; br: "bo.br"; bs: "bo.bs"; bt: "bo.bt"; bu: "bo.bu"; bv: "bo.bv"; bw: "bo.bw"; bx: "bo.bx"; by: "bo.by"; bz: "bo.bz"; ca: "bo.ca"; cb: "bo.cb"; cc: "bo.cc"; cd: "bo.cd"; ce: "bo.ce"; cf: "bo.cf"; cg: "bo.cg"; ch: "bo.ch"; ci: "bo.ci"; cj: "bo.cj"; ck: "bo.ck"; cl: "bo.cl"; cm: "bo.cm"; cn: "bo.cn"; co: "bo.co"; cp: "bo.cp"; cq: "bo.cq"; cr: "bo.cr"; cs: "bo.cs"; ct: "bo.ct"; cu: "bo.cu"; cv: "bo.cv"; cw: "bo.cw"; cx: "bo.cx"; cy: "bo.cy"; cz: "bo.cz"; da: "bo.da"; db: "bo.db"; dc: "bo.dc"; dd: "bo.dd"; de: "bo.de"; df: "bo.df"; dg: "bo.dg"; dh: "bo.dh"; di: "bo.di"; dj: "bo.dj"; dk: "bo.dk"; dl: "bo.dl"; dm: "bo.dm"; dn: "bo.dn"; do: "bo.do"; dp: "bo.dp"; dq: "bo.dq"; dr: "bo.dr"; ds: "bo.ds"; dt: "bo.dt"; du: "bo.du"; dv: "bo.dv"; dw: "bo.dw"; dx: "bo.dx"; dy: "bo.dy"; dz: "bo.dz"; ea: "bo.ea"; eb: "bo.eb"; ec: "bo.ec"; ed: "bo.ed"; ee: "bo.ee"; ef: "bo.ef"; eg: "bo.eg"; eh: "bo.eh"; ei: "bo.ei"; ej: "bo.ej"; ek: "bo.ek"; el: "bo.el"; em: "bo.em"; en: "bo.en"; eo: "bo.eo"; ep: "bo.ep"; eq: "bo.eq"; er: "bo.er"; es: "bo.es"; et: "bo.et"; eu: "bo.eu"; ev: "bo.ev"; ew: "bo.ew"; ex: "bo.ex"; ey: "bo.ey"; ez: "bo.ez"; fa: "bo.fa"; fb: "bo.fb"; fc: "bo.fc"; fd: "bo.fd"; fe: "bo.fe"; ff: "bo.ff"; fg: "bo.fg"; fh: "bo.fh"; fi: "bo.fi"; fj: "bo.fj"; fk: "bo.fk"; fl: "bo.fl"; fm: "bo.fm"; fn: "bo.fn"; fo: "bo.fo"; fp: "bo.fp"; fq: "bo.fq"; fr: "bo.fr"; fs: "bo.fs"; ft: "bo.ft"; fu: "bo.fu"; fv: "bo.fv"; fw: "bo.fw"; fx: "bo.fx"; fy: "bo.fy"; fz: "bo.fz"; ga: "bo.ga"; gb: "bo.gb"; gc: "bo.gc"; gd: "bo.gd"; ge: "bo.ge"; gf: "bo.gf"; gg: "bo.gg"; gh: "bo.gh"; gi: "bo.gi"; gj: "bo.gj"; gk: "bo.gk"; gl: "bo.gl"; gm: "bo.gm"; gn: "bo.gn"; go: "bo.go"; gp: "bo.gp"; gq: "bo.gq"; gr: "bo.gr"; gs: "bo.gs"; gt: "bo.gt"; gu: "bo.gu"; gv: "bo.gv"; gw: "bo.gw"; gx: "bo.gx"; gy: "bo.gy"; gz: "bo.gz"; ha: "bo.ha"; hb: "bo.hb"; hc: "bo.hc"; hd: "bo.hd"; he: "bo.he"; hf: "bo.hf"; hg: "bo.hg"; hh: "bo.hh"; hi: "bo.hi"; hj: "bo.hj"; hk: "bo.hk"; hl: "bo.hl"; hm: "bo.hm"; hn: "bo.hn"; ho: "bo.ho"; hp: "bo.hp"; hq: "bo.hq"; hr: "bo.hr"; hs: "bo.hs"; ht: "bo.ht"; hu: "bo.hu"; hv: "bo.hv"; hw: "bo.hw"; hx: "bo.hx"; hy: "bo.hy"; hz: "bo.hz"; ia: "bo.ia"; ib: "bo.ib"; ic: "bo.ic"; id: "bo.id"; ie: "bo.ie"; if: "bo.if"; ig: "bo.ig"; ih: "bo.ih"; ii: "bo.ii"; ij: "bo.ij"; ik: "bo.ik"; il: "bo.il"; im: "bo.im"; in: "bo.in"; io: "bo.io"; ip: "bo.ip"; iq: "bo.iq"; ir: "bo.ir"; is: "bo.is"; it: "bo.it"; iu: "bo.iu"; iv: "bo.iv"; iw: "bo.iw"; ix: "bo.ix"; iy: "bo.iy"; iz: "bo.iz"; ja: "bo.ja"; jb: "bo.jb"; jc: "bo.jc"; jd: "bo.jd"; je: "bo.je"; jf: "bo.jf"; jg: "bo.jg"; jh: "bo.jh"; ji: "bo.ji"; jj: "bo.jj"; jk: "bo.jk"; jl: "bo.jl"; jm: "bo.jm"; jn: "bo.jn"; jo: "bo.jo"; jp: "bo.jp"; jq: "bo.jq"; jr: "bo.jr"; js: "bo.js"; jt: "bo.jt"; ju: "bo.ju"; jv: "bo.jv"; jw: "bo.jw"; jx: "bo.jx"; jy: "bo.jy"; jz: "bo.jz"; ka: "bo.ka"; kb: "bo.kb"; kc: "bo.kc"; kd: "bo.kd"; ke: "bo.ke"; kf: "bo.kf"; kg: "bo.kg"; kh: "bo.kh"; ki: "bo.ki"; kj: "bo.kj"; kk: "bo.kk"; kl: "bo.kl"; km: "bo.km"; kn: "bo.kn"; ko: "bo.ko"; kp: "bo.kp"; kq: "bo.kq"; kr: "bo.kr"; ks: "bo.ks"; kt: "bo.kt"; ku: "bo.ku"; kv: "bo.kv"; kw: "bo.kw"; kx: "bo.kx"; ky: "bo.ky"; kz: "bo.kz"; la: "bo.la"; lb: "bo.lb"; lc: "bo.lc"; ld: "bo.ld"; le: "bo.le"; lf: "bo.lf"; lg: "bo.lg"; lh: "bo.lh"; li: "bo.li"; lj: "bo.lj"; lk: "bo.lk"; ll: "bo.ll"; lm: "bo.lm"; ln: "bo.ln"; lo: "bo.lo"; lp: "bo.lp"; lq: "bo.lq"; lr: "bo.lr"; ls: "bo.ls"; lt: "bo.lt"; lu: "bo.lu"; lv: "bo.lv"; lw: "bo.lw"; lx: "bo.lx"; ly: "bo.ly"; lz: "bo.lz"; ma: "bo.ma"; mb: "bo.mb"; mc: "bo.mc"; md: "bo.md"; me: "bo.me"; mf: "bo.mf"; mg: "bo.mg"; mh: "bo.mh"; mi: "bo.mi"; mj: "bo.mj"; mk: "bo.mk"; ml: "bo.ml"; mm: "bo.mm"; mn: "bo.mn"; mo: "bo.mo"; mp: "bo.mp"; mq: "bo.mq"; mr: "bo.mr"; ms: "bo.ms"; mt: "bo.mt"; mu: "bo.mu"; mv: "bo.mv"; mw: "bo.mw"; mx: "bo.mx"; my: "bo.my"; mz: "bo.mz"; na: "bo.na"; nb: "bo.nb"; nc: "bo.nc"; nd: "bo.nd"; ne: "bo.ne"; nf: "bo.nf"; ng: "bo.ng"; nh: "bo.nh"; ni: "bo.ni"; nj: "bo.nj"; nk: "bo.nk"; nl: "bo.nl"; nm: "bo.nm"; nn: "bo.nn"; no: "bo.no"; np: "bo.np"; nq: "bo.nq"; nr: "bo.nr"; ns: "bo.ns"; nt: "bo.nt"; nu: "bo.nu"; nv: "bo.nv"; nw: "bo.nw"; nx: "bo.nx"; ny: "bo.ny"; nz: "bo.nz"; oa: "bo.oa"; ob: "bo.ob"; oc: "bo.oc"; od: "bo.od"; oe: "bo.oe"; of: "bo.of"; og: "bo.og"; oh: "bo.oh"; oi: "bo.oi"; oj: "bo.oj"; ok: "bo.ok"; ol: "bo.ol"; om: "bo.om"; on: "bo.on"; oo: "bo.oo"; op: "bo.op"; oq: "bo.oq"; or: "bo.or"; os: "bo.os"; ot: "bo.ot"; ou: "bo.ou"; ov: "bo.ov"; ow: "bo.ow"; ox: "bo.ox"; oy: "bo.oy"; oz: "bo.oz"; pa: "bo.pa"; pb: "bo.pb"; pc: "bo.pc"; pd: "bo.pd"; pe: "bo.pe"; pf: "bo.pf"; pg: "bo.pg"; ph: "bo.ph"; pi: "bo.pi"; pj: "bo.pj"; pk: "bo.pk"; pl: "bo.pl"; pm: "bo.pm"; pn: "bo.pn"; po: "bo.po"; pp: "bo.pp"; pq: "bo.pq"; pr: "bo.pr"; ps: "bo.ps"; pt: "bo.pt"; pu: "bo.pu"; pv: "bo.pv"; pw: "bo.pw"; px: "bo.px"; py: "bo.py"; pz: "bo.pz"; qa: "bo.qa"; qb: "bo.qb"; qc: "bo.qc"; qd: "bo.qd"; qe: "bo.qe"; qf: "bo.qf"; qg: "bo.qg"; qh: "bo.qh"; qi: "bo.qi"; qj: "bo.qj"; qk: "bo.qk"; ql: "bo.ql"; qm: "bo.qm"; qn: "bo.qn"; qo: "bo.qo"; qp: "bo.qp"; qq: "bo.qq"; qr: "bo.qr"; qs: "bo.qs"; qt: "bo.qt"; qu: "bo.qu"; qv: "bo.qv"; qw: "bo.qw"; qx: "bo.qx"; qy: "bo.qy"; qz: "bo.qz"; ra: "bo.ra"; rb: "bo.rb"; rc: "bo.rc"; rd: "bo.rd"; re: "bo.re"; rf: "bo.rf"; rg: "bo.rg"; rh: "bo.rh"; ri: "bo.ri"; rj: "bo.rj"; rk: "bo.rk"; rl: "bo.rl"; rm: "bo.rm"; rn: "bo.rn"; ro: "bo.ro"; rp: "bo.rp"; rq: "bo.rq"; rr: "bo.rr"; rs: "bo.rs"; rt: "bo.rt"; ru: "bo.ru"; rv: "bo.rv"; rw: "bo.rw"; rx: "bo.rx"; ry: "bo.ry"; rz: "bo.rz"; sa: "bo.sa"; sb: "bo.sb"; sc: "bo.sc"; sd: "bo.sd"; se: "bo.se"; sf: "bo.sf"; sg: "bo.sg"; sh: "bo.sh"; si: "bo.si"; sj: "bo.sj"; sk: "bo.sk"; sl: "bo.sl"; sm: "bo.sm"; sn: "bo.sn"; so: "bo.so"; sp: "bo.sp"; sq: "bo.sq"; sr: "bo.sr"; ss: "bo.ss"; st: "bo.st"; su: "bo.su"; sv: "bo.sv"; sw: "bo.sw"; sx: "bo.sx"; sy: "bo.sy"; sz: "bo.sz"; ta: "bo.ta"; tb: "bo.tb"; tc: "bo.tc"; td: "bo.td"; te: "bo.te"; tf: "bo.tf"; tg: "bo.tg"; th: "bo.th"; ti: "bo.ti"; tj: "bo.tj"; tk: "bo.tk"; tl: "bo.tl"; tm: "bo.tm"; tn: "bo.tn"; to: "bo.to"; tp: "bo.tp"; tq: "bo.tq"; tr: "bo.tr"; ts: "bo.ts"; tt: "bo.tt"; tu: "bo.tu"; tv: "bo.tv"; tw: "bo.tw"; tx: "bo.tx"; ty: "bo.ty"; tz: "bo.tz"; ua: "bo.ua"; ub: "bo.ub"; uc: "bo.uc"; ud: "bo.ud"; ue: "bo.ue"; uf: "bo.uf"; ug: "bo.ug"; uh: "bo.uh"; ui: "bo.ui"; uj: "bo.uj"; uk: "bo.uk"; ul: "bo.ul"; um: "bo.um"; un: "bo.un"; uo: "bo.uo"; up: "bo.up"; uq: "bo.uq"; ur: "bo.ur"; us: "bo.us"; ut: "bo.ut"; uu: "bo.uu"; uv: "bo.uv"; uw: "bo.uw"; ux: "bo.ux"; uy: "bo.uy"; uz: "bo.uz"; va: "bo.va"; vb: "bo.vb"; vc: "bo.vc"; vd: "bo.vd"; ve: "bo.ve"; vf: "bo.vf"; vg: "bo.vg"; vh: "bo.vh"; vi: "bo.vi"; vj: "bo.vj"; vk: "bo.vk"; vl: "bo.vl"; vm: "bo.vm"; vn: "bo.vn"; vo: "bo.vo"; vp: "bo.vp"; vq: "bo.vq"; vr: "bo.vr"; vs: "bo.vs"; vt: "bo.vt"; vu: "bo.vu"; vv: "bo.vv"; vw: "bo.vw"; vx: "bo.vx"; vy: "bo.vy"; vz: "bo.vz"; wa: "bo.wa"; wb: "bo.wb"; wc: "bo.wc"; wd: "bo.wd"; we: "bo.we"; wf: "bo.wf"; wg: "bo.wg"; wh: "bo.wh"; wi: "bo.wi"; wj: "bo.wj"; wk: "bo.wk"; wl: "bo.wl"; wm: "bo.wm"; wn: "bo.wn"; wo: "bo.wo"; wp: "bo.wp"; wq: "bo.wq"; wr: "bo.wr"; ws: "bo.ws"; wt: "bo.wt"; wu: "bo.wu"; wv: "bo.wv"; ww: "bo.ww"; wx: "bo.wx"; wy: "bo.wy"; wz: "bo.wz"; xa: "bo.xa"; xb: "bo.xb"; xc: "bo.xc"; xd: "bo.xd"; xe: "bo.xe"; xf: "bo.xf"; xg: "bo.xg"; xh: "bo.xh"; xi: "bo.xi"; xj: "bo.xj"; xk: "bo.xk"; xl: "bo.xl"; xm: "bo.xm"; xn: "bo.xn"; xo: "bo.xo"; xp: "bo.xp"; xq: "bo.xq"; xr: "bo.xr"; xs: "bo.xs"; xt: "bo.xt"; xu: "bo.xu"; xv: "bo.xv"; xw: "bo.xw"; xx: "bo.xx"; xy: "bo.xy"; xz: "bo.xz"; ya: "bo.ya"; yb: "bo.yb"; yc: "bo.yc"; yd: "bo.yd"; ye: "bo.ye"; yf: "bo.yf"; yg: "bo.yg"; yh: "bo.yh"; yi: "bo.yi"; yj: "bo.yj"; yk: "bo.yk"; yl: "bo.yl"; ym: "bo.ym"; yn: "bo.yn"; yo: "bo.yo"; yp: "bo.yp"; yq: "bo.yq"; yr: "bo.yr"; ys: "bo.ys"; yt: "bo.yt"; yu: "bo.yu"; yv: "bo.yv"; yw: "bo.yw"; yx: "bo.yx"; yy: "bo.yy"; yz: "bo.yz"; za: "bo.za"; zb: "bo.zb"; zc: "bo.zc"; zd: "bo.zd"; ze: "bo.ze"; zf: "bo.zf"; zg: "bo.zg"; zh: "bo.zh"; zi: "bo.zi"; zj: "bo.zj"; zk: "bo.zk"; zl: "bo.zl"; zm: "bo.zm"; zn: "bo.zn"; zo: "bo.zo"; zp: "bo.zp"; zq: "bo.zq"; zr: "bo.zr"; zs: "bo.zs"; zt: "bo.zt"; zu: "bo.zu"; zv: "bo.zv"; zw: "bo.zw"; zx: "bo.zx"; zy: "bo.zy"; zz: "bo.zz"; }; bp: { aa: "bp.aa"; ab: "bp.ab"; ac: "bp.ac"; ad: "bp.ad"; ae: "bp.ae"; af: "bp.af"; ag: "bp.ag"; ah: "bp.ah"; ai: "bp.ai"; aj: "bp.aj"; ak: "bp.ak"; al: "bp.al"; am: "bp.am"; an: "bp.an"; ao: "bp.ao"; ap: "bp.ap"; aq: "bp.aq"; ar: "bp.ar"; as: "bp.as"; at: "bp.at"; au: "bp.au"; av: "bp.av"; aw: "bp.aw"; ax: "bp.ax"; ay: "bp.ay"; az: "bp.az"; ba: "bp.ba"; bb: "bp.bb"; bc: "bp.bc"; bd: "bp.bd"; be: "bp.be"; bf: "bp.bf"; bg: "bp.bg"; bh: "bp.bh"; bi: "bp.bi"; bj: "bp.bj"; bk: "bp.bk"; bl: "bp.bl"; bm: "bp.bm"; bn: "bp.bn"; bo: "bp.bo"; bp: "bp.bp"; bq: "bp.bq"; br: "bp.br"; bs: "bp.bs"; bt: "bp.bt"; bu: "bp.bu"; bv: "bp.bv"; bw: "bp.bw"; bx: "bp.bx"; by: "bp.by"; bz: "bp.bz"; ca: "bp.ca"; cb: "bp.cb"; cc: "bp.cc"; cd: "bp.cd"; ce: "bp.ce"; cf: "bp.cf"; cg: "bp.cg"; ch: "bp.ch"; ci: "bp.ci"; cj: "bp.cj"; ck: "bp.ck"; cl: "bp.cl"; cm: "bp.cm"; cn: "bp.cn"; co: "bp.co"; cp: "bp.cp"; cq: "bp.cq"; cr: "bp.cr"; cs: "bp.cs"; ct: "bp.ct"; cu: "bp.cu"; cv: "bp.cv"; cw: "bp.cw"; cx: "bp.cx"; cy: "bp.cy"; cz: "bp.cz"; da: "bp.da"; db: "bp.db"; dc: "bp.dc"; dd: "bp.dd"; de: "bp.de"; df: "bp.df"; dg: "bp.dg"; dh: "bp.dh"; di: "bp.di"; dj: "bp.dj"; dk: "bp.dk"; dl: "bp.dl"; dm: "bp.dm"; dn: "bp.dn"; do: "bp.do"; dp: "bp.dp"; dq: "bp.dq"; dr: "bp.dr"; ds: "bp.ds"; dt: "bp.dt"; du: "bp.du"; dv: "bp.dv"; dw: "bp.dw"; dx: "bp.dx"; dy: "bp.dy"; dz: "bp.dz"; ea: "bp.ea"; eb: "bp.eb"; ec: "bp.ec"; ed: "bp.ed"; ee: "bp.ee"; ef: "bp.ef"; eg: "bp.eg"; eh: "bp.eh"; ei: "bp.ei"; ej: "bp.ej"; ek: "bp.ek"; el: "bp.el"; em: "bp.em"; en: "bp.en"; eo: "bp.eo"; ep: "bp.ep"; eq: "bp.eq"; er: "bp.er"; es: "bp.es"; et: "bp.et"; eu: "bp.eu"; ev: "bp.ev"; ew: "bp.ew"; ex: "bp.ex"; ey: "bp.ey"; ez: "bp.ez"; fa: "bp.fa"; fb: "bp.fb"; fc: "bp.fc"; fd: "bp.fd"; fe: "bp.fe"; ff: "bp.ff"; fg: "bp.fg"; fh: "bp.fh"; fi: "bp.fi"; fj: "bp.fj"; fk: "bp.fk"; fl: "bp.fl"; fm: "bp.fm"; fn: "bp.fn"; fo: "bp.fo"; fp: "bp.fp"; fq: "bp.fq"; fr: "bp.fr"; fs: "bp.fs"; ft: "bp.ft"; fu: "bp.fu"; fv: "bp.fv"; fw: "bp.fw"; fx: "bp.fx"; fy: "bp.fy"; fz: "bp.fz"; ga: "bp.ga"; gb: "bp.gb"; gc: "bp.gc"; gd: "bp.gd"; ge: "bp.ge"; gf: "bp.gf"; gg: "bp.gg"; gh: "bp.gh"; gi: "bp.gi"; gj: "bp.gj"; gk: "bp.gk"; gl: "bp.gl"; gm: "bp.gm"; gn: "bp.gn"; go: "bp.go"; gp: "bp.gp"; gq: "bp.gq"; gr: "bp.gr"; gs: "bp.gs"; gt: "bp.gt"; gu: "bp.gu"; gv: "bp.gv"; gw: "bp.gw"; gx: "bp.gx"; gy: "bp.gy"; gz: "bp.gz"; ha: "bp.ha"; hb: "bp.hb"; hc: "bp.hc"; hd: "bp.hd"; he: "bp.he"; hf: "bp.hf"; hg: "bp.hg"; hh: "bp.hh"; hi: "bp.hi"; hj: "bp.hj"; hk: "bp.hk"; hl: "bp.hl"; hm: "bp.hm"; hn: "bp.hn"; ho: "bp.ho"; hp: "bp.hp"; hq: "bp.hq"; hr: "bp.hr"; hs: "bp.hs"; ht: "bp.ht"; hu: "bp.hu"; hv: "bp.hv"; hw: "bp.hw"; hx: "bp.hx"; hy: "bp.hy"; hz: "bp.hz"; ia: "bp.ia"; ib: "bp.ib"; ic: "bp.ic"; id: "bp.id"; ie: "bp.ie"; if: "bp.if"; ig: "bp.ig"; ih: "bp.ih"; ii: "bp.ii"; ij: "bp.ij"; ik: "bp.ik"; il: "bp.il"; im: "bp.im"; in: "bp.in"; io: "bp.io"; ip: "bp.ip"; iq: "bp.iq"; ir: "bp.ir"; is: "bp.is"; it: "bp.it"; iu: "bp.iu"; iv: "bp.iv"; iw: "bp.iw"; ix: "bp.ix"; iy: "bp.iy"; iz: "bp.iz"; ja: "bp.ja"; jb: "bp.jb"; jc: "bp.jc"; jd: "bp.jd"; je: "bp.je"; jf: "bp.jf"; jg: "bp.jg"; jh: "bp.jh"; ji: "bp.ji"; jj: "bp.jj"; jk: "bp.jk"; jl: "bp.jl"; jm: "bp.jm"; jn: "bp.jn"; jo: "bp.jo"; jp: "bp.jp"; jq: "bp.jq"; jr: "bp.jr"; js: "bp.js"; jt: "bp.jt"; ju: "bp.ju"; jv: "bp.jv"; jw: "bp.jw"; jx: "bp.jx"; jy: "bp.jy"; jz: "bp.jz"; ka: "bp.ka"; kb: "bp.kb"; kc: "bp.kc"; kd: "bp.kd"; ke: "bp.ke"; kf: "bp.kf"; kg: "bp.kg"; kh: "bp.kh"; ki: "bp.ki"; kj: "bp.kj"; kk: "bp.kk"; kl: "bp.kl"; km: "bp.km"; kn: "bp.kn"; ko: "bp.ko"; kp: "bp.kp"; kq: "bp.kq"; kr: "bp.kr"; ks: "bp.ks"; kt: "bp.kt"; ku: "bp.ku"; kv: "bp.kv"; kw: "bp.kw"; kx: "bp.kx"; ky: "bp.ky"; kz: "bp.kz"; la: "bp.la"; lb: "bp.lb"; lc: "bp.lc"; ld: "bp.ld"; le: "bp.le"; lf: "bp.lf"; lg: "bp.lg"; lh: "bp.lh"; li: "bp.li"; lj: "bp.lj"; lk: "bp.lk"; ll: "bp.ll"; lm: "bp.lm"; ln: "bp.ln"; lo: "bp.lo"; lp: "bp.lp"; lq: "bp.lq"; lr: "bp.lr"; ls: "bp.ls"; lt: "bp.lt"; lu: "bp.lu"; lv: "bp.lv"; lw: "bp.lw"; lx: "bp.lx"; ly: "bp.ly"; lz: "bp.lz"; ma: "bp.ma"; mb: "bp.mb"; mc: "bp.mc"; md: "bp.md"; me: "bp.me"; mf: "bp.mf"; mg: "bp.mg"; mh: "bp.mh"; mi: "bp.mi"; mj: "bp.mj"; mk: "bp.mk"; ml: "bp.ml"; mm: "bp.mm"; mn: "bp.mn"; mo: "bp.mo"; mp: "bp.mp"; mq: "bp.mq"; mr: "bp.mr"; ms: "bp.ms"; mt: "bp.mt"; mu: "bp.mu"; mv: "bp.mv"; mw: "bp.mw"; mx: "bp.mx"; my: "bp.my"; mz: "bp.mz"; na: "bp.na"; nb: "bp.nb"; nc: "bp.nc"; nd: "bp.nd"; ne: "bp.ne"; nf: "bp.nf"; ng: "bp.ng"; nh: "bp.nh"; ni: "bp.ni"; nj: "bp.nj"; nk: "bp.nk"; nl: "bp.nl"; nm: "bp.nm"; nn: "bp.nn"; no: "bp.no"; np: "bp.np"; nq: "bp.nq"; nr: "bp.nr"; ns: "bp.ns"; nt: "bp.nt"; nu: "bp.nu"; nv: "bp.nv"; nw: "bp.nw"; nx: "bp.nx"; ny: "bp.ny"; nz: "bp.nz"; oa: "bp.oa"; ob: "bp.ob"; oc: "bp.oc"; od: "bp.od"; oe: "bp.oe"; of: "bp.of"; og: "bp.og"; oh: "bp.oh"; oi: "bp.oi"; oj: "bp.oj"; ok: "bp.ok"; ol: "bp.ol"; om: "bp.om"; on: "bp.on"; oo: "bp.oo"; op: "bp.op"; oq: "bp.oq"; or: "bp.or"; os: "bp.os"; ot: "bp.ot"; ou: "bp.ou"; ov: "bp.ov"; ow: "bp.ow"; ox: "bp.ox"; oy: "bp.oy"; oz: "bp.oz"; pa: "bp.pa"; pb: "bp.pb"; pc: "bp.pc"; pd: "bp.pd"; pe: "bp.pe"; pf: "bp.pf"; pg: "bp.pg"; ph: "bp.ph"; pi: "bp.pi"; pj: "bp.pj"; pk: "bp.pk"; pl: "bp.pl"; pm: "bp.pm"; pn: "bp.pn"; po: "bp.po"; pp: "bp.pp"; pq: "bp.pq"; pr: "bp.pr"; ps: "bp.ps"; pt: "bp.pt"; pu: "bp.pu"; pv: "bp.pv"; pw: "bp.pw"; px: "bp.px"; py: "bp.py"; pz: "bp.pz"; qa: "bp.qa"; qb: "bp.qb"; qc: "bp.qc"; qd: "bp.qd"; qe: "bp.qe"; qf: "bp.qf"; qg: "bp.qg"; qh: "bp.qh"; qi: "bp.qi"; qj: "bp.qj"; qk: "bp.qk"; ql: "bp.ql"; qm: "bp.qm"; qn: "bp.qn"; qo: "bp.qo"; qp: "bp.qp"; qq: "bp.qq"; qr: "bp.qr"; qs: "bp.qs"; qt: "bp.qt"; qu: "bp.qu"; qv: "bp.qv"; qw: "bp.qw"; qx: "bp.qx"; qy: "bp.qy"; qz: "bp.qz"; ra: "bp.ra"; rb: "bp.rb"; rc: "bp.rc"; rd: "bp.rd"; re: "bp.re"; rf: "bp.rf"; rg: "bp.rg"; rh: "bp.rh"; ri: "bp.ri"; rj: "bp.rj"; rk: "bp.rk"; rl: "bp.rl"; rm: "bp.rm"; rn: "bp.rn"; ro: "bp.ro"; rp: "bp.rp"; rq: "bp.rq"; rr: "bp.rr"; rs: "bp.rs"; rt: "bp.rt"; ru: "bp.ru"; rv: "bp.rv"; rw: "bp.rw"; rx: "bp.rx"; ry: "bp.ry"; rz: "bp.rz"; sa: "bp.sa"; sb: "bp.sb"; sc: "bp.sc"; sd: "bp.sd"; se: "bp.se"; sf: "bp.sf"; sg: "bp.sg"; sh: "bp.sh"; si: "bp.si"; sj: "bp.sj"; sk: "bp.sk"; sl: "bp.sl"; sm: "bp.sm"; sn: "bp.sn"; so: "bp.so"; sp: "bp.sp"; sq: "bp.sq"; sr: "bp.sr"; ss: "bp.ss"; st: "bp.st"; su: "bp.su"; sv: "bp.sv"; sw: "bp.sw"; sx: "bp.sx"; sy: "bp.sy"; sz: "bp.sz"; ta: "bp.ta"; tb: "bp.tb"; tc: "bp.tc"; td: "bp.td"; te: "bp.te"; tf: "bp.tf"; tg: "bp.tg"; th: "bp.th"; ti: "bp.ti"; tj: "bp.tj"; tk: "bp.tk"; tl: "bp.tl"; tm: "bp.tm"; tn: "bp.tn"; to: "bp.to"; tp: "bp.tp"; tq: "bp.tq"; tr: "bp.tr"; ts: "bp.ts"; tt: "bp.tt"; tu: "bp.tu"; tv: "bp.tv"; tw: "bp.tw"; tx: "bp.tx"; ty: "bp.ty"; tz: "bp.tz"; ua: "bp.ua"; ub: "bp.ub"; uc: "bp.uc"; ud: "bp.ud"; ue: "bp.ue"; uf: "bp.uf"; ug: "bp.ug"; uh: "bp.uh"; ui: "bp.ui"; uj: "bp.uj"; uk: "bp.uk"; ul: "bp.ul"; um: "bp.um"; un: "bp.un"; uo: "bp.uo"; up: "bp.up"; uq: "bp.uq"; ur: "bp.ur"; us: "bp.us"; ut: "bp.ut"; uu: "bp.uu"; uv: "bp.uv"; uw: "bp.uw"; ux: "bp.ux"; uy: "bp.uy"; uz: "bp.uz"; va: "bp.va"; vb: "bp.vb"; vc: "bp.vc"; vd: "bp.vd"; ve: "bp.ve"; vf: "bp.vf"; vg: "bp.vg"; vh: "bp.vh"; vi: "bp.vi"; vj: "bp.vj"; vk: "bp.vk"; vl: "bp.vl"; vm: "bp.vm"; vn: "bp.vn"; vo: "bp.vo"; vp: "bp.vp"; vq: "bp.vq"; vr: "bp.vr"; vs: "bp.vs"; vt: "bp.vt"; vu: "bp.vu"; vv: "bp.vv"; vw: "bp.vw"; vx: "bp.vx"; vy: "bp.vy"; vz: "bp.vz"; wa: "bp.wa"; wb: "bp.wb"; wc: "bp.wc"; wd: "bp.wd"; we: "bp.we"; wf: "bp.wf"; wg: "bp.wg"; wh: "bp.wh"; wi: "bp.wi"; wj: "bp.wj"; wk: "bp.wk"; wl: "bp.wl"; wm: "bp.wm"; wn: "bp.wn"; wo: "bp.wo"; wp: "bp.wp"; wq: "bp.wq"; wr: "bp.wr"; ws: "bp.ws"; wt: "bp.wt"; wu: "bp.wu"; wv: "bp.wv"; ww: "bp.ww"; wx: "bp.wx"; wy: "bp.wy"; wz: "bp.wz"; xa: "bp.xa"; xb: "bp.xb"; xc: "bp.xc"; xd: "bp.xd"; xe: "bp.xe"; xf: "bp.xf"; xg: "bp.xg"; xh: "bp.xh"; xi: "bp.xi"; xj: "bp.xj"; xk: "bp.xk"; xl: "bp.xl"; xm: "bp.xm"; xn: "bp.xn"; xo: "bp.xo"; xp: "bp.xp"; xq: "bp.xq"; xr: "bp.xr"; xs: "bp.xs"; xt: "bp.xt"; xu: "bp.xu"; xv: "bp.xv"; xw: "bp.xw"; xx: "bp.xx"; xy: "bp.xy"; xz: "bp.xz"; ya: "bp.ya"; yb: "bp.yb"; yc: "bp.yc"; yd: "bp.yd"; ye: "bp.ye"; yf: "bp.yf"; yg: "bp.yg"; yh: "bp.yh"; yi: "bp.yi"; yj: "bp.yj"; yk: "bp.yk"; yl: "bp.yl"; ym: "bp.ym"; yn: "bp.yn"; yo: "bp.yo"; yp: "bp.yp"; yq: "bp.yq"; yr: "bp.yr"; ys: "bp.ys"; yt: "bp.yt"; yu: "bp.yu"; yv: "bp.yv"; yw: "bp.yw"; yx: "bp.yx"; yy: "bp.yy"; yz: "bp.yz"; za: "bp.za"; zb: "bp.zb"; zc: "bp.zc"; zd: "bp.zd"; ze: "bp.ze"; zf: "bp.zf"; zg: "bp.zg"; zh: "bp.zh"; zi: "bp.zi"; zj: "bp.zj"; zk: "bp.zk"; zl: "bp.zl"; zm: "bp.zm"; zn: "bp.zn"; zo: "bp.zo"; zp: "bp.zp"; zq: "bp.zq"; zr: "bp.zr"; zs: "bp.zs"; zt: "bp.zt"; zu: "bp.zu"; zv: "bp.zv"; zw: "bp.zw"; zx: "bp.zx"; zy: "bp.zy"; zz: "bp.zz"; }; bq: { aa: "bq.aa"; ab: "bq.ab"; ac: "bq.ac"; ad: "bq.ad"; ae: "bq.ae"; af: "bq.af"; ag: "bq.ag"; ah: "bq.ah"; ai: "bq.ai"; aj: "bq.aj"; ak: "bq.ak"; al: "bq.al"; am: "bq.am"; an: "bq.an"; ao: "bq.ao"; ap: "bq.ap"; aq: "bq.aq"; ar: "bq.ar"; as: "bq.as"; at: "bq.at"; au: "bq.au"; av: "bq.av"; aw: "bq.aw"; ax: "bq.ax"; ay: "bq.ay"; az: "bq.az"; ba: "bq.ba"; bb: "bq.bb"; bc: "bq.bc"; bd: "bq.bd"; be: "bq.be"; bf: "bq.bf"; bg: "bq.bg"; bh: "bq.bh"; bi: "bq.bi"; bj: "bq.bj"; bk: "bq.bk"; bl: "bq.bl"; bm: "bq.bm"; bn: "bq.bn"; bo: "bq.bo"; bp: "bq.bp"; bq: "bq.bq"; br: "bq.br"; bs: "bq.bs"; bt: "bq.bt"; bu: "bq.bu"; bv: "bq.bv"; bw: "bq.bw"; bx: "bq.bx"; by: "bq.by"; bz: "bq.bz"; ca: "bq.ca"; cb: "bq.cb"; cc: "bq.cc"; cd: "bq.cd"; ce: "bq.ce"; cf: "bq.cf"; cg: "bq.cg"; ch: "bq.ch"; ci: "bq.ci"; cj: "bq.cj"; ck: "bq.ck"; cl: "bq.cl"; cm: "bq.cm"; cn: "bq.cn"; co: "bq.co"; cp: "bq.cp"; cq: "bq.cq"; cr: "bq.cr"; cs: "bq.cs"; ct: "bq.ct"; cu: "bq.cu"; cv: "bq.cv"; cw: "bq.cw"; cx: "bq.cx"; cy: "bq.cy"; cz: "bq.cz"; da: "bq.da"; db: "bq.db"; dc: "bq.dc"; dd: "bq.dd"; de: "bq.de"; df: "bq.df"; dg: "bq.dg"; dh: "bq.dh"; di: "bq.di"; dj: "bq.dj"; dk: "bq.dk"; dl: "bq.dl"; dm: "bq.dm"; dn: "bq.dn"; do: "bq.do"; dp: "bq.dp"; dq: "bq.dq"; dr: "bq.dr"; ds: "bq.ds"; dt: "bq.dt"; du: "bq.du"; dv: "bq.dv"; dw: "bq.dw"; dx: "bq.dx"; dy: "bq.dy"; dz: "bq.dz"; ea: "bq.ea"; eb: "bq.eb"; ec: "bq.ec"; ed: "bq.ed"; ee: "bq.ee"; ef: "bq.ef"; eg: "bq.eg"; eh: "bq.eh"; ei: "bq.ei"; ej: "bq.ej"; ek: "bq.ek"; el: "bq.el"; em: "bq.em"; en: "bq.en"; eo: "bq.eo"; ep: "bq.ep"; eq: "bq.eq"; er: "bq.er"; es: "bq.es"; et: "bq.et"; eu: "bq.eu"; ev: "bq.ev"; ew: "bq.ew"; ex: "bq.ex"; ey: "bq.ey"; ez: "bq.ez"; fa: "bq.fa"; fb: "bq.fb"; fc: "bq.fc"; fd: "bq.fd"; fe: "bq.fe"; ff: "bq.ff"; fg: "bq.fg"; fh: "bq.fh"; fi: "bq.fi"; fj: "bq.fj"; fk: "bq.fk"; fl: "bq.fl"; fm: "bq.fm"; fn: "bq.fn"; fo: "bq.fo"; fp: "bq.fp"; fq: "bq.fq"; fr: "bq.fr"; fs: "bq.fs"; ft: "bq.ft"; fu: "bq.fu"; fv: "bq.fv"; fw: "bq.fw"; fx: "bq.fx"; fy: "bq.fy"; fz: "bq.fz"; ga: "bq.ga"; gb: "bq.gb"; gc: "bq.gc"; gd: "bq.gd"; ge: "bq.ge"; gf: "bq.gf"; gg: "bq.gg"; gh: "bq.gh"; gi: "bq.gi"; gj: "bq.gj"; gk: "bq.gk"; gl: "bq.gl"; gm: "bq.gm"; gn: "bq.gn"; go: "bq.go"; gp: "bq.gp"; gq: "bq.gq"; gr: "bq.gr"; gs: "bq.gs"; gt: "bq.gt"; gu: "bq.gu"; gv: "bq.gv"; gw: "bq.gw"; gx: "bq.gx"; gy: "bq.gy"; gz: "bq.gz"; ha: "bq.ha"; hb: "bq.hb"; hc: "bq.hc"; hd: "bq.hd"; he: "bq.he"; hf: "bq.hf"; hg: "bq.hg"; hh: "bq.hh"; hi: "bq.hi"; hj: "bq.hj"; hk: "bq.hk"; hl: "bq.hl"; hm: "bq.hm"; hn: "bq.hn"; ho: "bq.ho"; hp: "bq.hp"; hq: "bq.hq"; hr: "bq.hr"; hs: "bq.hs"; ht: "bq.ht"; hu: "bq.hu"; hv: "bq.hv"; hw: "bq.hw"; hx: "bq.hx"; hy: "bq.hy"; hz: "bq.hz"; ia: "bq.ia"; ib: "bq.ib"; ic: "bq.ic"; id: "bq.id"; ie: "bq.ie"; if: "bq.if"; ig: "bq.ig"; ih: "bq.ih"; ii: "bq.ii"; ij: "bq.ij"; ik: "bq.ik"; il: "bq.il"; im: "bq.im"; in: "bq.in"; io: "bq.io"; ip: "bq.ip"; iq: "bq.iq"; ir: "bq.ir"; is: "bq.is"; it: "bq.it"; iu: "bq.iu"; iv: "bq.iv"; iw: "bq.iw"; ix: "bq.ix"; iy: "bq.iy"; iz: "bq.iz"; ja: "bq.ja"; jb: "bq.jb"; jc: "bq.jc"; jd: "bq.jd"; je: "bq.je"; jf: "bq.jf"; jg: "bq.jg"; jh: "bq.jh"; ji: "bq.ji"; jj: "bq.jj"; jk: "bq.jk"; jl: "bq.jl"; jm: "bq.jm"; jn: "bq.jn"; jo: "bq.jo"; jp: "bq.jp"; jq: "bq.jq"; jr: "bq.jr"; js: "bq.js"; jt: "bq.jt"; ju: "bq.ju"; jv: "bq.jv"; jw: "bq.jw"; jx: "bq.jx"; jy: "bq.jy"; jz: "bq.jz"; ka: "bq.ka"; kb: "bq.kb"; kc: "bq.kc"; kd: "bq.kd"; ke: "bq.ke"; kf: "bq.kf"; kg: "bq.kg"; kh: "bq.kh"; ki: "bq.ki"; kj: "bq.kj"; kk: "bq.kk"; kl: "bq.kl"; km: "bq.km"; kn: "bq.kn"; ko: "bq.ko"; kp: "bq.kp"; kq: "bq.kq"; kr: "bq.kr"; ks: "bq.ks"; kt: "bq.kt"; ku: "bq.ku"; kv: "bq.kv"; kw: "bq.kw"; kx: "bq.kx"; ky: "bq.ky"; kz: "bq.kz"; la: "bq.la"; lb: "bq.lb"; lc: "bq.lc"; ld: "bq.ld"; le: "bq.le"; lf: "bq.lf"; lg: "bq.lg"; lh: "bq.lh"; li: "bq.li"; lj: "bq.lj"; lk: "bq.lk"; ll: "bq.ll"; lm: "bq.lm"; ln: "bq.ln"; lo: "bq.lo"; lp: "bq.lp"; lq: "bq.lq"; lr: "bq.lr"; ls: "bq.ls"; lt: "bq.lt"; lu: "bq.lu"; lv: "bq.lv"; lw: "bq.lw"; lx: "bq.lx"; ly: "bq.ly"; lz: "bq.lz"; ma: "bq.ma"; mb: "bq.mb"; mc: "bq.mc"; md: "bq.md"; me: "bq.me"; mf: "bq.mf"; mg: "bq.mg"; mh: "bq.mh"; mi: "bq.mi"; mj: "bq.mj"; mk: "bq.mk"; ml: "bq.ml"; mm: "bq.mm"; mn: "bq.mn"; mo: "bq.mo"; mp: "bq.mp"; mq: "bq.mq"; mr: "bq.mr"; ms: "bq.ms"; mt: "bq.mt"; mu: "bq.mu"; mv: "bq.mv"; mw: "bq.mw"; mx: "bq.mx"; my: "bq.my"; mz: "bq.mz"; na: "bq.na"; nb: "bq.nb"; nc: "bq.nc"; nd: "bq.nd"; ne: "bq.ne"; nf: "bq.nf"; ng: "bq.ng"; nh: "bq.nh"; ni: "bq.ni"; nj: "bq.nj"; nk: "bq.nk"; nl: "bq.nl"; nm: "bq.nm"; nn: "bq.nn"; no: "bq.no"; np: "bq.np"; nq: "bq.nq"; nr: "bq.nr"; ns: "bq.ns"; nt: "bq.nt"; nu: "bq.nu"; nv: "bq.nv"; nw: "bq.nw"; nx: "bq.nx"; ny: "bq.ny"; nz: "bq.nz"; oa: "bq.oa"; ob: "bq.ob"; oc: "bq.oc"; od: "bq.od"; oe: "bq.oe"; of: "bq.of"; og: "bq.og"; oh: "bq.oh"; oi: "bq.oi"; oj: "bq.oj"; ok: "bq.ok"; ol: "bq.ol"; om: "bq.om"; on: "bq.on"; oo: "bq.oo"; op: "bq.op"; oq: "bq.oq"; or: "bq.or"; os: "bq.os"; ot: "bq.ot"; ou: "bq.ou"; ov: "bq.ov"; ow: "bq.ow"; ox: "bq.ox"; oy: "bq.oy"; oz: "bq.oz"; pa: "bq.pa"; pb: "bq.pb"; pc: "bq.pc"; pd: "bq.pd"; pe: "bq.pe"; pf: "bq.pf"; pg: "bq.pg"; ph: "bq.ph"; pi: "bq.pi"; pj: "bq.pj"; pk: "bq.pk"; pl: "bq.pl"; pm: "bq.pm"; pn: "bq.pn"; po: "bq.po"; pp: "bq.pp"; pq: "bq.pq"; pr: "bq.pr"; ps: "bq.ps"; pt: "bq.pt"; pu: "bq.pu"; pv: "bq.pv"; pw: "bq.pw"; px: "bq.px"; py: "bq.py"; pz: "bq.pz"; qa: "bq.qa"; qb: "bq.qb"; qc: "bq.qc"; qd: "bq.qd"; qe: "bq.qe"; qf: "bq.qf"; qg: "bq.qg"; qh: "bq.qh"; qi: "bq.qi"; qj: "bq.qj"; qk: "bq.qk"; ql: "bq.ql"; qm: "bq.qm"; qn: "bq.qn"; qo: "bq.qo"; qp: "bq.qp"; qq: "bq.qq"; qr: "bq.qr"; qs: "bq.qs"; qt: "bq.qt"; qu: "bq.qu"; qv: "bq.qv"; qw: "bq.qw"; qx: "bq.qx"; qy: "bq.qy"; qz: "bq.qz"; ra: "bq.ra"; rb: "bq.rb"; rc: "bq.rc"; rd: "bq.rd"; re: "bq.re"; rf: "bq.rf"; rg: "bq.rg"; rh: "bq.rh"; ri: "bq.ri"; rj: "bq.rj"; rk: "bq.rk"; rl: "bq.rl"; rm: "bq.rm"; rn: "bq.rn"; ro: "bq.ro"; rp: "bq.rp"; rq: "bq.rq"; rr: "bq.rr"; rs: "bq.rs"; rt: "bq.rt"; ru: "bq.ru"; rv: "bq.rv"; rw: "bq.rw"; rx: "bq.rx"; ry: "bq.ry"; rz: "bq.rz"; sa: "bq.sa"; sb: "bq.sb"; sc: "bq.sc"; sd: "bq.sd"; se: "bq.se"; sf: "bq.sf"; sg: "bq.sg"; sh: "bq.sh"; si: "bq.si"; sj: "bq.sj"; sk: "bq.sk"; sl: "bq.sl"; sm: "bq.sm"; sn: "bq.sn"; so: "bq.so"; sp: "bq.sp"; sq: "bq.sq"; sr: "bq.sr"; ss: "bq.ss"; st: "bq.st"; su: "bq.su"; sv: "bq.sv"; sw: "bq.sw"; sx: "bq.sx"; sy: "bq.sy"; sz: "bq.sz"; ta: "bq.ta"; tb: "bq.tb"; tc: "bq.tc"; td: "bq.td"; te: "bq.te"; tf: "bq.tf"; tg: "bq.tg"; th: "bq.th"; ti: "bq.ti"; tj: "bq.tj"; tk: "bq.tk"; tl: "bq.tl"; tm: "bq.tm"; tn: "bq.tn"; to: "bq.to"; tp: "bq.tp"; tq: "bq.tq"; tr: "bq.tr"; ts: "bq.ts"; tt: "bq.tt"; tu: "bq.tu"; tv: "bq.tv"; tw: "bq.tw"; tx: "bq.tx"; ty: "bq.ty"; tz: "bq.tz"; ua: "bq.ua"; ub: "bq.ub"; uc: "bq.uc"; ud: "bq.ud"; ue: "bq.ue"; uf: "bq.uf"; ug: "bq.ug"; uh: "bq.uh"; ui: "bq.ui"; uj: "bq.uj"; uk: "bq.uk"; ul: "bq.ul"; um: "bq.um"; un: "bq.un"; uo: "bq.uo"; up: "bq.up"; uq: "bq.uq"; ur: "bq.ur"; us: "bq.us"; ut: "bq.ut"; uu: "bq.uu"; uv: "bq.uv"; uw: "bq.uw"; ux: "bq.ux"; uy: "bq.uy"; uz: "bq.uz"; va: "bq.va"; vb: "bq.vb"; vc: "bq.vc"; vd: "bq.vd"; ve: "bq.ve"; vf: "bq.vf"; vg: "bq.vg"; vh: "bq.vh"; vi: "bq.vi"; vj: "bq.vj"; vk: "bq.vk"; vl: "bq.vl"; vm: "bq.vm"; vn: "bq.vn"; vo: "bq.vo"; vp: "bq.vp"; vq: "bq.vq"; vr: "bq.vr"; vs: "bq.vs"; vt: "bq.vt"; vu: "bq.vu"; vv: "bq.vv"; vw: "bq.vw"; vx: "bq.vx"; vy: "bq.vy"; vz: "bq.vz"; wa: "bq.wa"; wb: "bq.wb"; wc: "bq.wc"; wd: "bq.wd"; we: "bq.we"; wf: "bq.wf"; wg: "bq.wg"; wh: "bq.wh"; wi: "bq.wi"; wj: "bq.wj"; wk: "bq.wk"; wl: "bq.wl"; wm: "bq.wm"; wn: "bq.wn"; wo: "bq.wo"; wp: "bq.wp"; wq: "bq.wq"; wr: "bq.wr"; ws: "bq.ws"; wt: "bq.wt"; wu: "bq.wu"; wv: "bq.wv"; ww: "bq.ww"; wx: "bq.wx"; wy: "bq.wy"; wz: "bq.wz"; xa: "bq.xa"; xb: "bq.xb"; xc: "bq.xc"; xd: "bq.xd"; xe: "bq.xe"; xf: "bq.xf"; xg: "bq.xg"; xh: "bq.xh"; xi: "bq.xi"; xj: "bq.xj"; xk: "bq.xk"; xl: "bq.xl"; xm: "bq.xm"; xn: "bq.xn"; xo: "bq.xo"; xp: "bq.xp"; xq: "bq.xq"; xr: "bq.xr"; xs: "bq.xs"; xt: "bq.xt"; xu: "bq.xu"; xv: "bq.xv"; xw: "bq.xw"; xx: "bq.xx"; xy: "bq.xy"; xz: "bq.xz"; ya: "bq.ya"; yb: "bq.yb"; yc: "bq.yc"; yd: "bq.yd"; ye: "bq.ye"; yf: "bq.yf"; yg: "bq.yg"; yh: "bq.yh"; yi: "bq.yi"; yj: "bq.yj"; yk: "bq.yk"; yl: "bq.yl"; ym: "bq.ym"; yn: "bq.yn"; yo: "bq.yo"; yp: "bq.yp"; yq: "bq.yq"; yr: "bq.yr"; ys: "bq.ys"; yt: "bq.yt"; yu: "bq.yu"; yv: "bq.yv"; yw: "bq.yw"; yx: "bq.yx"; yy: "bq.yy"; yz: "bq.yz"; za: "bq.za"; zb: "bq.zb"; zc: "bq.zc"; zd: "bq.zd"; ze: "bq.ze"; zf: "bq.zf"; zg: "bq.zg"; zh: "bq.zh"; zi: "bq.zi"; zj: "bq.zj"; zk: "bq.zk"; zl: "bq.zl"; zm: "bq.zm"; zn: "bq.zn"; zo: "bq.zo"; zp: "bq.zp"; zq: "bq.zq"; zr: "bq.zr"; zs: "bq.zs"; zt: "bq.zt"; zu: "bq.zu"; zv: "bq.zv"; zw: "bq.zw"; zx: "bq.zx"; zy: "bq.zy"; zz: "bq.zz"; }; br: { aa: "br.aa"; ab: "br.ab"; ac: "br.ac"; ad: "br.ad"; ae: "br.ae"; af: "br.af"; ag: "br.ag"; ah: "br.ah"; ai: "br.ai"; aj: "br.aj"; ak: "br.ak"; al: "br.al"; am: "br.am"; an: "br.an"; ao: "br.ao"; ap: "br.ap"; aq: "br.aq"; ar: "br.ar"; as: "br.as"; at: "br.at"; au: "br.au"; av: "br.av"; aw: "br.aw"; ax: "br.ax"; ay: "br.ay"; az: "br.az"; ba: "br.ba"; bb: "br.bb"; bc: "br.bc"; bd: "br.bd"; be: "br.be"; bf: "br.bf"; bg: "br.bg"; bh: "br.bh"; bi: "br.bi"; bj: "br.bj"; bk: "br.bk"; bl: "br.bl"; bm: "br.bm"; bn: "br.bn"; bo: "br.bo"; bp: "br.bp"; bq: "br.bq"; br: "br.br"; bs: "br.bs"; bt: "br.bt"; bu: "br.bu"; bv: "br.bv"; bw: "br.bw"; bx: "br.bx"; by: "br.by"; bz: "br.bz"; ca: "br.ca"; cb: "br.cb"; cc: "br.cc"; cd: "br.cd"; ce: "br.ce"; cf: "br.cf"; cg: "br.cg"; ch: "br.ch"; ci: "br.ci"; cj: "br.cj"; ck: "br.ck"; cl: "br.cl"; cm: "br.cm"; cn: "br.cn"; co: "br.co"; cp: "br.cp"; cq: "br.cq"; cr: "br.cr"; cs: "br.cs"; ct: "br.ct"; cu: "br.cu"; cv: "br.cv"; cw: "br.cw"; cx: "br.cx"; cy: "br.cy"; cz: "br.cz"; da: "br.da"; db: "br.db"; dc: "br.dc"; dd: "br.dd"; de: "br.de"; df: "br.df"; dg: "br.dg"; dh: "br.dh"; di: "br.di"; dj: "br.dj"; dk: "br.dk"; dl: "br.dl"; dm: "br.dm"; dn: "br.dn"; do: "br.do"; dp: "br.dp"; dq: "br.dq"; dr: "br.dr"; ds: "br.ds"; dt: "br.dt"; du: "br.du"; dv: "br.dv"; dw: "br.dw"; dx: "br.dx"; dy: "br.dy"; dz: "br.dz"; ea: "br.ea"; eb: "br.eb"; ec: "br.ec"; ed: "br.ed"; ee: "br.ee"; ef: "br.ef"; eg: "br.eg"; eh: "br.eh"; ei: "br.ei"; ej: "br.ej"; ek: "br.ek"; el: "br.el"; em: "br.em"; en: "br.en"; eo: "br.eo"; ep: "br.ep"; eq: "br.eq"; er: "br.er"; es: "br.es"; et: "br.et"; eu: "br.eu"; ev: "br.ev"; ew: "br.ew"; ex: "br.ex"; ey: "br.ey"; ez: "br.ez"; fa: "br.fa"; fb: "br.fb"; fc: "br.fc"; fd: "br.fd"; fe: "br.fe"; ff: "br.ff"; fg: "br.fg"; fh: "br.fh"; fi: "br.fi"; fj: "br.fj"; fk: "br.fk"; fl: "br.fl"; fm: "br.fm"; fn: "br.fn"; fo: "br.fo"; fp: "br.fp"; fq: "br.fq"; fr: "br.fr"; fs: "br.fs"; ft: "br.ft"; fu: "br.fu"; fv: "br.fv"; fw: "br.fw"; fx: "br.fx"; fy: "br.fy"; fz: "br.fz"; ga: "br.ga"; gb: "br.gb"; gc: "br.gc"; gd: "br.gd"; ge: "br.ge"; gf: "br.gf"; gg: "br.gg"; gh: "br.gh"; gi: "br.gi"; gj: "br.gj"; gk: "br.gk"; gl: "br.gl"; gm: "br.gm"; gn: "br.gn"; go: "br.go"; gp: "br.gp"; gq: "br.gq"; gr: "br.gr"; gs: "br.gs"; gt: "br.gt"; gu: "br.gu"; gv: "br.gv"; gw: "br.gw"; gx: "br.gx"; gy: "br.gy"; gz: "br.gz"; ha: "br.ha"; hb: "br.hb"; hc: "br.hc"; hd: "br.hd"; he: "br.he"; hf: "br.hf"; hg: "br.hg"; hh: "br.hh"; hi: "br.hi"; hj: "br.hj"; hk: "br.hk"; hl: "br.hl"; hm: "br.hm"; hn: "br.hn"; ho: "br.ho"; hp: "br.hp"; hq: "br.hq"; hr: "br.hr"; hs: "br.hs"; ht: "br.ht"; hu: "br.hu"; hv: "br.hv"; hw: "br.hw"; hx: "br.hx"; hy: "br.hy"; hz: "br.hz"; ia: "br.ia"; ib: "br.ib"; ic: "br.ic"; id: "br.id"; ie: "br.ie"; if: "br.if"; ig: "br.ig"; ih: "br.ih"; ii: "br.ii"; ij: "br.ij"; ik: "br.ik"; il: "br.il"; im: "br.im"; in: "br.in"; io: "br.io"; ip: "br.ip"; iq: "br.iq"; ir: "br.ir"; is: "br.is"; it: "br.it"; iu: "br.iu"; iv: "br.iv"; iw: "br.iw"; ix: "br.ix"; iy: "br.iy"; iz: "br.iz"; ja: "br.ja"; jb: "br.jb"; jc: "br.jc"; jd: "br.jd"; je: "br.je"; jf: "br.jf"; jg: "br.jg"; jh: "br.jh"; ji: "br.ji"; jj: "br.jj"; jk: "br.jk"; jl: "br.jl"; jm: "br.jm"; jn: "br.jn"; jo: "br.jo"; jp: "br.jp"; jq: "br.jq"; jr: "br.jr"; js: "br.js"; jt: "br.jt"; ju: "br.ju"; jv: "br.jv"; jw: "br.jw"; jx: "br.jx"; jy: "br.jy"; jz: "br.jz"; ka: "br.ka"; kb: "br.kb"; kc: "br.kc"; kd: "br.kd"; ke: "br.ke"; kf: "br.kf"; kg: "br.kg"; kh: "br.kh"; ki: "br.ki"; kj: "br.kj"; kk: "br.kk"; kl: "br.kl"; km: "br.km"; kn: "br.kn"; ko: "br.ko"; kp: "br.kp"; kq: "br.kq"; kr: "br.kr"; ks: "br.ks"; kt: "br.kt"; ku: "br.ku"; kv: "br.kv"; kw: "br.kw"; kx: "br.kx"; ky: "br.ky"; kz: "br.kz"; la: "br.la"; lb: "br.lb"; lc: "br.lc"; ld: "br.ld"; le: "br.le"; lf: "br.lf"; lg: "br.lg"; lh: "br.lh"; li: "br.li"; lj: "br.lj"; lk: "br.lk"; ll: "br.ll"; lm: "br.lm"; ln: "br.ln"; lo: "br.lo"; lp: "br.lp"; lq: "br.lq"; lr: "br.lr"; ls: "br.ls"; lt: "br.lt"; lu: "br.lu"; lv: "br.lv"; lw: "br.lw"; lx: "br.lx"; ly: "br.ly"; lz: "br.lz"; ma: "br.ma"; mb: "br.mb"; mc: "br.mc"; md: "br.md"; me: "br.me"; mf: "br.mf"; mg: "br.mg"; mh: "br.mh"; mi: "br.mi"; mj: "br.mj"; mk: "br.mk"; ml: "br.ml"; mm: "br.mm"; mn: "br.mn"; mo: "br.mo"; mp: "br.mp"; mq: "br.mq"; mr: "br.mr"; ms: "br.ms"; mt: "br.mt"; mu: "br.mu"; mv: "br.mv"; mw: "br.mw"; mx: "br.mx"; my: "br.my"; mz: "br.mz"; na: "br.na"; nb: "br.nb"; nc: "br.nc"; nd: "br.nd"; ne: "br.ne"; nf: "br.nf"; ng: "br.ng"; nh: "br.nh"; ni: "br.ni"; nj: "br.nj"; nk: "br.nk"; nl: "br.nl"; nm: "br.nm"; nn: "br.nn"; no: "br.no"; np: "br.np"; nq: "br.nq"; nr: "br.nr"; ns: "br.ns"; nt: "br.nt"; nu: "br.nu"; nv: "br.nv"; nw: "br.nw"; nx: "br.nx"; ny: "br.ny"; nz: "br.nz"; oa: "br.oa"; ob: "br.ob"; oc: "br.oc"; od: "br.od"; oe: "br.oe"; of: "br.of"; og: "br.og"; oh: "br.oh"; oi: "br.oi"; oj: "br.oj"; ok: "br.ok"; ol: "br.ol"; om: "br.om"; on: "br.on"; oo: "br.oo"; op: "br.op"; oq: "br.oq"; or: "br.or"; os: "br.os"; ot: "br.ot"; ou: "br.ou"; ov: "br.ov"; ow: "br.ow"; ox: "br.ox"; oy: "br.oy"; oz: "br.oz"; pa: "br.pa"; pb: "br.pb"; pc: "br.pc"; pd: "br.pd"; pe: "br.pe"; pf: "br.pf"; pg: "br.pg"; ph: "br.ph"; pi: "br.pi"; pj: "br.pj"; pk: "br.pk"; pl: "br.pl"; pm: "br.pm"; pn: "br.pn"; po: "br.po"; pp: "br.pp"; pq: "br.pq"; pr: "br.pr"; ps: "br.ps"; pt: "br.pt"; pu: "br.pu"; pv: "br.pv"; pw: "br.pw"; px: "br.px"; py: "br.py"; pz: "br.pz"; qa: "br.qa"; qb: "br.qb"; qc: "br.qc"; qd: "br.qd"; qe: "br.qe"; qf: "br.qf"; qg: "br.qg"; qh: "br.qh"; qi: "br.qi"; qj: "br.qj"; qk: "br.qk"; ql: "br.ql"; qm: "br.qm"; qn: "br.qn"; qo: "br.qo"; qp: "br.qp"; qq: "br.qq"; qr: "br.qr"; qs: "br.qs"; qt: "br.qt"; qu: "br.qu"; qv: "br.qv"; qw: "br.qw"; qx: "br.qx"; qy: "br.qy"; qz: "br.qz"; ra: "br.ra"; rb: "br.rb"; rc: "br.rc"; rd: "br.rd"; re: "br.re"; rf: "br.rf"; rg: "br.rg"; rh: "br.rh"; ri: "br.ri"; rj: "br.rj"; rk: "br.rk"; rl: "br.rl"; rm: "br.rm"; rn: "br.rn"; ro: "br.ro"; rp: "br.rp"; rq: "br.rq"; rr: "br.rr"; rs: "br.rs"; rt: "br.rt"; ru: "br.ru"; rv: "br.rv"; rw: "br.rw"; rx: "br.rx"; ry: "br.ry"; rz: "br.rz"; sa: "br.sa"; sb: "br.sb"; sc: "br.sc"; sd: "br.sd"; se: "br.se"; sf: "br.sf"; sg: "br.sg"; sh: "br.sh"; si: "br.si"; sj: "br.sj"; sk: "br.sk"; sl: "br.sl"; sm: "br.sm"; sn: "br.sn"; so: "br.so"; sp: "br.sp"; sq: "br.sq"; sr: "br.sr"; ss: "br.ss"; st: "br.st"; su: "br.su"; sv: "br.sv"; sw: "br.sw"; sx: "br.sx"; sy: "br.sy"; sz: "br.sz"; ta: "br.ta"; tb: "br.tb"; tc: "br.tc"; td: "br.td"; te: "br.te"; tf: "br.tf"; tg: "br.tg"; th: "br.th"; ti: "br.ti"; tj: "br.tj"; tk: "br.tk"; tl: "br.tl"; tm: "br.tm"; tn: "br.tn"; to: "br.to"; tp: "br.tp"; tq: "br.tq"; tr: "br.tr"; ts: "br.ts"; tt: "br.tt"; tu: "br.tu"; tv: "br.tv"; tw: "br.tw"; tx: "br.tx"; ty: "br.ty"; tz: "br.tz"; ua: "br.ua"; ub: "br.ub"; uc: "br.uc"; ud: "br.ud"; ue: "br.ue"; uf: "br.uf"; ug: "br.ug"; uh: "br.uh"; ui: "br.ui"; uj: "br.uj"; uk: "br.uk"; ul: "br.ul"; um: "br.um"; un: "br.un"; uo: "br.uo"; up: "br.up"; uq: "br.uq"; ur: "br.ur"; us: "br.us"; ut: "br.ut"; uu: "br.uu"; uv: "br.uv"; uw: "br.uw"; ux: "br.ux"; uy: "br.uy"; uz: "br.uz"; va: "br.va"; vb: "br.vb"; vc: "br.vc"; vd: "br.vd"; ve: "br.ve"; vf: "br.vf"; vg: "br.vg"; vh: "br.vh"; vi: "br.vi"; vj: "br.vj"; vk: "br.vk"; vl: "br.vl"; vm: "br.vm"; vn: "br.vn"; vo: "br.vo"; vp: "br.vp"; vq: "br.vq"; vr: "br.vr"; vs: "br.vs"; vt: "br.vt"; vu: "br.vu"; vv: "br.vv"; vw: "br.vw"; vx: "br.vx"; vy: "br.vy"; vz: "br.vz"; wa: "br.wa"; wb: "br.wb"; wc: "br.wc"; wd: "br.wd"; we: "br.we"; wf: "br.wf"; wg: "br.wg"; wh: "br.wh"; wi: "br.wi"; wj: "br.wj"; wk: "br.wk"; wl: "br.wl"; wm: "br.wm"; wn: "br.wn"; wo: "br.wo"; wp: "br.wp"; wq: "br.wq"; wr: "br.wr"; ws: "br.ws"; wt: "br.wt"; wu: "br.wu"; wv: "br.wv"; ww: "br.ww"; wx: "br.wx"; wy: "br.wy"; wz: "br.wz"; xa: "br.xa"; xb: "br.xb"; xc: "br.xc"; xd: "br.xd"; xe: "br.xe"; xf: "br.xf"; xg: "br.xg"; xh: "br.xh"; xi: "br.xi"; xj: "br.xj"; xk: "br.xk"; xl: "br.xl"; xm: "br.xm"; xn: "br.xn"; xo: "br.xo"; xp: "br.xp"; xq: "br.xq"; xr: "br.xr"; xs: "br.xs"; xt: "br.xt"; xu: "br.xu"; xv: "br.xv"; xw: "br.xw"; xx: "br.xx"; xy: "br.xy"; xz: "br.xz"; ya: "br.ya"; yb: "br.yb"; yc: "br.yc"; yd: "br.yd"; ye: "br.ye"; yf: "br.yf"; yg: "br.yg"; yh: "br.yh"; yi: "br.yi"; yj: "br.yj"; yk: "br.yk"; yl: "br.yl"; ym: "br.ym"; yn: "br.yn"; yo: "br.yo"; yp: "br.yp"; yq: "br.yq"; yr: "br.yr"; ys: "br.ys"; yt: "br.yt"; yu: "br.yu"; yv: "br.yv"; yw: "br.yw"; yx: "br.yx"; yy: "br.yy"; yz: "br.yz"; za: "br.za"; zb: "br.zb"; zc: "br.zc"; zd: "br.zd"; ze: "br.ze"; zf: "br.zf"; zg: "br.zg"; zh: "br.zh"; zi: "br.zi"; zj: "br.zj"; zk: "br.zk"; zl: "br.zl"; zm: "br.zm"; zn: "br.zn"; zo: "br.zo"; zp: "br.zp"; zq: "br.zq"; zr: "br.zr"; zs: "br.zs"; zt: "br.zt"; zu: "br.zu"; zv: "br.zv"; zw: "br.zw"; zx: "br.zx"; zy: "br.zy"; zz: "br.zz"; }; bs: { aa: "bs.aa"; ab: "bs.ab"; ac: "bs.ac"; ad: "bs.ad"; ae: "bs.ae"; af: "bs.af"; ag: "bs.ag"; ah: "bs.ah"; ai: "bs.ai"; aj: "bs.aj"; ak: "bs.ak"; al: "bs.al"; am: "bs.am"; an: "bs.an"; ao: "bs.ao"; ap: "bs.ap"; aq: "bs.aq"; ar: "bs.ar"; as: "bs.as"; at: "bs.at"; au: "bs.au"; av: "bs.av"; aw: "bs.aw"; ax: "bs.ax"; ay: "bs.ay"; az: "bs.az"; ba: "bs.ba"; bb: "bs.bb"; bc: "bs.bc"; bd: "bs.bd"; be: "bs.be"; bf: "bs.bf"; bg: "bs.bg"; bh: "bs.bh"; bi: "bs.bi"; bj: "bs.bj"; bk: "bs.bk"; bl: "bs.bl"; bm: "bs.bm"; bn: "bs.bn"; bo: "bs.bo"; bp: "bs.bp"; bq: "bs.bq"; br: "bs.br"; bs: "bs.bs"; bt: "bs.bt"; bu: "bs.bu"; bv: "bs.bv"; bw: "bs.bw"; bx: "bs.bx"; by: "bs.by"; bz: "bs.bz"; ca: "bs.ca"; cb: "bs.cb"; cc: "bs.cc"; cd: "bs.cd"; ce: "bs.ce"; cf: "bs.cf"; cg: "bs.cg"; ch: "bs.ch"; ci: "bs.ci"; cj: "bs.cj"; ck: "bs.ck"; cl: "bs.cl"; cm: "bs.cm"; cn: "bs.cn"; co: "bs.co"; cp: "bs.cp"; cq: "bs.cq"; cr: "bs.cr"; cs: "bs.cs"; ct: "bs.ct"; cu: "bs.cu"; cv: "bs.cv"; cw: "bs.cw"; cx: "bs.cx"; cy: "bs.cy"; cz: "bs.cz"; da: "bs.da"; db: "bs.db"; dc: "bs.dc"; dd: "bs.dd"; de: "bs.de"; df: "bs.df"; dg: "bs.dg"; dh: "bs.dh"; di: "bs.di"; dj: "bs.dj"; dk: "bs.dk"; dl: "bs.dl"; dm: "bs.dm"; dn: "bs.dn"; do: "bs.do"; dp: "bs.dp"; dq: "bs.dq"; dr: "bs.dr"; ds: "bs.ds"; dt: "bs.dt"; du: "bs.du"; dv: "bs.dv"; dw: "bs.dw"; dx: "bs.dx"; dy: "bs.dy"; dz: "bs.dz"; ea: "bs.ea"; eb: "bs.eb"; ec: "bs.ec"; ed: "bs.ed"; ee: "bs.ee"; ef: "bs.ef"; eg: "bs.eg"; eh: "bs.eh"; ei: "bs.ei"; ej: "bs.ej"; ek: "bs.ek"; el: "bs.el"; em: "bs.em"; en: "bs.en"; eo: "bs.eo"; ep: "bs.ep"; eq: "bs.eq"; er: "bs.er"; es: "bs.es"; et: "bs.et"; eu: "bs.eu"; ev: "bs.ev"; ew: "bs.ew"; ex: "bs.ex"; ey: "bs.ey"; ez: "bs.ez"; fa: "bs.fa"; fb: "bs.fb"; fc: "bs.fc"; fd: "bs.fd"; fe: "bs.fe"; ff: "bs.ff"; fg: "bs.fg"; fh: "bs.fh"; fi: "bs.fi"; fj: "bs.fj"; fk: "bs.fk"; fl: "bs.fl"; fm: "bs.fm"; fn: "bs.fn"; fo: "bs.fo"; fp: "bs.fp"; fq: "bs.fq"; fr: "bs.fr"; fs: "bs.fs"; ft: "bs.ft"; fu: "bs.fu"; fv: "bs.fv"; fw: "bs.fw"; fx: "bs.fx"; fy: "bs.fy"; fz: "bs.fz"; ga: "bs.ga"; gb: "bs.gb"; gc: "bs.gc"; gd: "bs.gd"; ge: "bs.ge"; gf: "bs.gf"; gg: "bs.gg"; gh: "bs.gh"; gi: "bs.gi"; gj: "bs.gj"; gk: "bs.gk"; gl: "bs.gl"; gm: "bs.gm"; gn: "bs.gn"; go: "bs.go"; gp: "bs.gp"; gq: "bs.gq"; gr: "bs.gr"; gs: "bs.gs"; gt: "bs.gt"; gu: "bs.gu"; gv: "bs.gv"; gw: "bs.gw"; gx: "bs.gx"; gy: "bs.gy"; gz: "bs.gz"; ha: "bs.ha"; hb: "bs.hb"; hc: "bs.hc"; hd: "bs.hd"; he: "bs.he"; hf: "bs.hf"; hg: "bs.hg"; hh: "bs.hh"; hi: "bs.hi"; hj: "bs.hj"; hk: "bs.hk"; hl: "bs.hl"; hm: "bs.hm"; hn: "bs.hn"; ho: "bs.ho"; hp: "bs.hp"; hq: "bs.hq"; hr: "bs.hr"; hs: "bs.hs"; ht: "bs.ht"; hu: "bs.hu"; hv: "bs.hv"; hw: "bs.hw"; hx: "bs.hx"; hy: "bs.hy"; hz: "bs.hz"; ia: "bs.ia"; ib: "bs.ib"; ic: "bs.ic"; id: "bs.id"; ie: "bs.ie"; if: "bs.if"; ig: "bs.ig"; ih: "bs.ih"; ii: "bs.ii"; ij: "bs.ij"; ik: "bs.ik"; il: "bs.il"; im: "bs.im"; in: "bs.in"; io: "bs.io"; ip: "bs.ip"; iq: "bs.iq"; ir: "bs.ir"; is: "bs.is"; it: "bs.it"; iu: "bs.iu"; iv: "bs.iv"; iw: "bs.iw"; ix: "bs.ix"; iy: "bs.iy"; iz: "bs.iz"; ja: "bs.ja"; jb: "bs.jb"; jc: "bs.jc"; jd: "bs.jd"; je: "bs.je"; jf: "bs.jf"; jg: "bs.jg"; jh: "bs.jh"; ji: "bs.ji"; jj: "bs.jj"; jk: "bs.jk"; jl: "bs.jl"; jm: "bs.jm"; jn: "bs.jn"; jo: "bs.jo"; jp: "bs.jp"; jq: "bs.jq"; jr: "bs.jr"; js: "bs.js"; jt: "bs.jt"; ju: "bs.ju"; jv: "bs.jv"; jw: "bs.jw"; jx: "bs.jx"; jy: "bs.jy"; jz: "bs.jz"; ka: "bs.ka"; kb: "bs.kb"; kc: "bs.kc"; kd: "bs.kd"; ke: "bs.ke"; kf: "bs.kf"; kg: "bs.kg"; kh: "bs.kh"; ki: "bs.ki"; kj: "bs.kj"; kk: "bs.kk"; kl: "bs.kl"; km: "bs.km"; kn: "bs.kn"; ko: "bs.ko"; kp: "bs.kp"; kq: "bs.kq"; kr: "bs.kr"; ks: "bs.ks"; kt: "bs.kt"; ku: "bs.ku"; kv: "bs.kv"; kw: "bs.kw"; kx: "bs.kx"; ky: "bs.ky"; kz: "bs.kz"; la: "bs.la"; lb: "bs.lb"; lc: "bs.lc"; ld: "bs.ld"; le: "bs.le"; lf: "bs.lf"; lg: "bs.lg"; lh: "bs.lh"; li: "bs.li"; lj: "bs.lj"; lk: "bs.lk"; ll: "bs.ll"; lm: "bs.lm"; ln: "bs.ln"; lo: "bs.lo"; lp: "bs.lp"; lq: "bs.lq"; lr: "bs.lr"; ls: "bs.ls"; lt: "bs.lt"; lu: "bs.lu"; lv: "bs.lv"; lw: "bs.lw"; lx: "bs.lx"; ly: "bs.ly"; lz: "bs.lz"; ma: "bs.ma"; mb: "bs.mb"; mc: "bs.mc"; md: "bs.md"; me: "bs.me"; mf: "bs.mf"; mg: "bs.mg"; mh: "bs.mh"; mi: "bs.mi"; mj: "bs.mj"; mk: "bs.mk"; ml: "bs.ml"; mm: "bs.mm"; mn: "bs.mn"; mo: "bs.mo"; mp: "bs.mp"; mq: "bs.mq"; mr: "bs.mr"; ms: "bs.ms"; mt: "bs.mt"; mu: "bs.mu"; mv: "bs.mv"; mw: "bs.mw"; mx: "bs.mx"; my: "bs.my"; mz: "bs.mz"; na: "bs.na"; nb: "bs.nb"; nc: "bs.nc"; nd: "bs.nd"; ne: "bs.ne"; nf: "bs.nf"; ng: "bs.ng"; nh: "bs.nh"; ni: "bs.ni"; nj: "bs.nj"; nk: "bs.nk"; nl: "bs.nl"; nm: "bs.nm"; nn: "bs.nn"; no: "bs.no"; np: "bs.np"; nq: "bs.nq"; nr: "bs.nr"; ns: "bs.ns"; nt: "bs.nt"; nu: "bs.nu"; nv: "bs.nv"; nw: "bs.nw"; nx: "bs.nx"; ny: "bs.ny"; nz: "bs.nz"; oa: "bs.oa"; ob: "bs.ob"; oc: "bs.oc"; od: "bs.od"; oe: "bs.oe"; of: "bs.of"; og: "bs.og"; oh: "bs.oh"; oi: "bs.oi"; oj: "bs.oj"; ok: "bs.ok"; ol: "bs.ol"; om: "bs.om"; on: "bs.on"; oo: "bs.oo"; op: "bs.op"; oq: "bs.oq"; or: "bs.or"; os: "bs.os"; ot: "bs.ot"; ou: "bs.ou"; ov: "bs.ov"; ow: "bs.ow"; ox: "bs.ox"; oy: "bs.oy"; oz: "bs.oz"; pa: "bs.pa"; pb: "bs.pb"; pc: "bs.pc"; pd: "bs.pd"; pe: "bs.pe"; pf: "bs.pf"; pg: "bs.pg"; ph: "bs.ph"; pi: "bs.pi"; pj: "bs.pj"; pk: "bs.pk"; pl: "bs.pl"; pm: "bs.pm"; pn: "bs.pn"; po: "bs.po"; pp: "bs.pp"; pq: "bs.pq"; pr: "bs.pr"; ps: "bs.ps"; pt: "bs.pt"; pu: "bs.pu"; pv: "bs.pv"; pw: "bs.pw"; px: "bs.px"; py: "bs.py"; pz: "bs.pz"; qa: "bs.qa"; qb: "bs.qb"; qc: "bs.qc"; qd: "bs.qd"; qe: "bs.qe"; qf: "bs.qf"; qg: "bs.qg"; qh: "bs.qh"; qi: "bs.qi"; qj: "bs.qj"; qk: "bs.qk"; ql: "bs.ql"; qm: "bs.qm"; qn: "bs.qn"; qo: "bs.qo"; qp: "bs.qp"; qq: "bs.qq"; qr: "bs.qr"; qs: "bs.qs"; qt: "bs.qt"; qu: "bs.qu"; qv: "bs.qv"; qw: "bs.qw"; qx: "bs.qx"; qy: "bs.qy"; qz: "bs.qz"; ra: "bs.ra"; rb: "bs.rb"; rc: "bs.rc"; rd: "bs.rd"; re: "bs.re"; rf: "bs.rf"; rg: "bs.rg"; rh: "bs.rh"; ri: "bs.ri"; rj: "bs.rj"; rk: "bs.rk"; rl: "bs.rl"; rm: "bs.rm"; rn: "bs.rn"; ro: "bs.ro"; rp: "bs.rp"; rq: "bs.rq"; rr: "bs.rr"; rs: "bs.rs"; rt: "bs.rt"; ru: "bs.ru"; rv: "bs.rv"; rw: "bs.rw"; rx: "bs.rx"; ry: "bs.ry"; rz: "bs.rz"; sa: "bs.sa"; sb: "bs.sb"; sc: "bs.sc"; sd: "bs.sd"; se: "bs.se"; sf: "bs.sf"; sg: "bs.sg"; sh: "bs.sh"; si: "bs.si"; sj: "bs.sj"; sk: "bs.sk"; sl: "bs.sl"; sm: "bs.sm"; sn: "bs.sn"; so: "bs.so"; sp: "bs.sp"; sq: "bs.sq"; sr: "bs.sr"; ss: "bs.ss"; st: "bs.st"; su: "bs.su"; sv: "bs.sv"; sw: "bs.sw"; sx: "bs.sx"; sy: "bs.sy"; sz: "bs.sz"; ta: "bs.ta"; tb: "bs.tb"; tc: "bs.tc"; td: "bs.td"; te: "bs.te"; tf: "bs.tf"; tg: "bs.tg"; th: "bs.th"; ti: "bs.ti"; tj: "bs.tj"; tk: "bs.tk"; tl: "bs.tl"; tm: "bs.tm"; tn: "bs.tn"; to: "bs.to"; tp: "bs.tp"; tq: "bs.tq"; tr: "bs.tr"; ts: "bs.ts"; tt: "bs.tt"; tu: "bs.tu"; tv: "bs.tv"; tw: "bs.tw"; tx: "bs.tx"; ty: "bs.ty"; tz: "bs.tz"; ua: "bs.ua"; ub: "bs.ub"; uc: "bs.uc"; ud: "bs.ud"; ue: "bs.ue"; uf: "bs.uf"; ug: "bs.ug"; uh: "bs.uh"; ui: "bs.ui"; uj: "bs.uj"; uk: "bs.uk"; ul: "bs.ul"; um: "bs.um"; un: "bs.un"; uo: "bs.uo"; up: "bs.up"; uq: "bs.uq"; ur: "bs.ur"; us: "bs.us"; ut: "bs.ut"; uu: "bs.uu"; uv: "bs.uv"; uw: "bs.uw"; ux: "bs.ux"; uy: "bs.uy"; uz: "bs.uz"; va: "bs.va"; vb: "bs.vb"; vc: "bs.vc"; vd: "bs.vd"; ve: "bs.ve"; vf: "bs.vf"; vg: "bs.vg"; vh: "bs.vh"; vi: "bs.vi"; vj: "bs.vj"; vk: "bs.vk"; vl: "bs.vl"; vm: "bs.vm"; vn: "bs.vn"; vo: "bs.vo"; vp: "bs.vp"; vq: "bs.vq"; vr: "bs.vr"; vs: "bs.vs"; vt: "bs.vt"; vu: "bs.vu"; vv: "bs.vv"; vw: "bs.vw"; vx: "bs.vx"; vy: "bs.vy"; vz: "bs.vz"; wa: "bs.wa"; wb: "bs.wb"; wc: "bs.wc"; wd: "bs.wd"; we: "bs.we"; wf: "bs.wf"; wg: "bs.wg"; wh: "bs.wh"; wi: "bs.wi"; wj: "bs.wj"; wk: "bs.wk"; wl: "bs.wl"; wm: "bs.wm"; wn: "bs.wn"; wo: "bs.wo"; wp: "bs.wp"; wq: "bs.wq"; wr: "bs.wr"; ws: "bs.ws"; wt: "bs.wt"; wu: "bs.wu"; wv: "bs.wv"; ww: "bs.ww"; wx: "bs.wx"; wy: "bs.wy"; wz: "bs.wz"; xa: "bs.xa"; xb: "bs.xb"; xc: "bs.xc"; xd: "bs.xd"; xe: "bs.xe"; xf: "bs.xf"; xg: "bs.xg"; xh: "bs.xh"; xi: "bs.xi"; xj: "bs.xj"; xk: "bs.xk"; xl: "bs.xl"; xm: "bs.xm"; xn: "bs.xn"; xo: "bs.xo"; xp: "bs.xp"; xq: "bs.xq"; xr: "bs.xr"; xs: "bs.xs"; xt: "bs.xt"; xu: "bs.xu"; xv: "bs.xv"; xw: "bs.xw"; xx: "bs.xx"; xy: "bs.xy"; xz: "bs.xz"; ya: "bs.ya"; yb: "bs.yb"; yc: "bs.yc"; yd: "bs.yd"; ye: "bs.ye"; yf: "bs.yf"; yg: "bs.yg"; yh: "bs.yh"; yi: "bs.yi"; yj: "bs.yj"; yk: "bs.yk"; yl: "bs.yl"; ym: "bs.ym"; yn: "bs.yn"; yo: "bs.yo"; yp: "bs.yp"; yq: "bs.yq"; yr: "bs.yr"; ys: "bs.ys"; yt: "bs.yt"; yu: "bs.yu"; yv: "bs.yv"; yw: "bs.yw"; yx: "bs.yx"; yy: "bs.yy"; yz: "bs.yz"; za: "bs.za"; zb: "bs.zb"; zc: "bs.zc"; zd: "bs.zd"; ze: "bs.ze"; zf: "bs.zf"; zg: "bs.zg"; zh: "bs.zh"; zi: "bs.zi"; zj: "bs.zj"; zk: "bs.zk"; zl: "bs.zl"; zm: "bs.zm"; zn: "bs.zn"; zo: "bs.zo"; zp: "bs.zp"; zq: "bs.zq"; zr: "bs.zr"; zs: "bs.zs"; zt: "bs.zt"; zu: "bs.zu"; zv: "bs.zv"; zw: "bs.zw"; zx: "bs.zx"; zy: "bs.zy"; zz: "bs.zz"; }; bt: { aa: "bt.aa"; ab: "bt.ab"; ac: "bt.ac"; ad: "bt.ad"; ae: "bt.ae"; af: "bt.af"; ag: "bt.ag"; ah: "bt.ah"; ai: "bt.ai"; aj: "bt.aj"; ak: "bt.ak"; al: "bt.al"; am: "bt.am"; an: "bt.an"; ao: "bt.ao"; ap: "bt.ap"; aq: "bt.aq"; ar: "bt.ar"; as: "bt.as"; at: "bt.at"; au: "bt.au"; av: "bt.av"; aw: "bt.aw"; ax: "bt.ax"; ay: "bt.ay"; az: "bt.az"; ba: "bt.ba"; bb: "bt.bb"; bc: "bt.bc"; bd: "bt.bd"; be: "bt.be"; bf: "bt.bf"; bg: "bt.bg"; bh: "bt.bh"; bi: "bt.bi"; bj: "bt.bj"; bk: "bt.bk"; bl: "bt.bl"; bm: "bt.bm"; bn: "bt.bn"; bo: "bt.bo"; bp: "bt.bp"; bq: "bt.bq"; br: "bt.br"; bs: "bt.bs"; bt: "bt.bt"; bu: "bt.bu"; bv: "bt.bv"; bw: "bt.bw"; bx: "bt.bx"; by: "bt.by"; bz: "bt.bz"; ca: "bt.ca"; cb: "bt.cb"; cc: "bt.cc"; cd: "bt.cd"; ce: "bt.ce"; cf: "bt.cf"; cg: "bt.cg"; ch: "bt.ch"; ci: "bt.ci"; cj: "bt.cj"; ck: "bt.ck"; cl: "bt.cl"; cm: "bt.cm"; cn: "bt.cn"; co: "bt.co"; cp: "bt.cp"; cq: "bt.cq"; cr: "bt.cr"; cs: "bt.cs"; ct: "bt.ct"; cu: "bt.cu"; cv: "bt.cv"; cw: "bt.cw"; cx: "bt.cx"; cy: "bt.cy"; cz: "bt.cz"; da: "bt.da"; db: "bt.db"; dc: "bt.dc"; dd: "bt.dd"; de: "bt.de"; df: "bt.df"; dg: "bt.dg"; dh: "bt.dh"; di: "bt.di"; dj: "bt.dj"; dk: "bt.dk"; dl: "bt.dl"; dm: "bt.dm"; dn: "bt.dn"; do: "bt.do"; dp: "bt.dp"; dq: "bt.dq"; dr: "bt.dr"; ds: "bt.ds"; dt: "bt.dt"; du: "bt.du"; dv: "bt.dv"; dw: "bt.dw"; dx: "bt.dx"; dy: "bt.dy"; dz: "bt.dz"; ea: "bt.ea"; eb: "bt.eb"; ec: "bt.ec"; ed: "bt.ed"; ee: "bt.ee"; ef: "bt.ef"; eg: "bt.eg"; eh: "bt.eh"; ei: "bt.ei"; ej: "bt.ej"; ek: "bt.ek"; el: "bt.el"; em: "bt.em"; en: "bt.en"; eo: "bt.eo"; ep: "bt.ep"; eq: "bt.eq"; er: "bt.er"; es: "bt.es"; et: "bt.et"; eu: "bt.eu"; ev: "bt.ev"; ew: "bt.ew"; ex: "bt.ex"; ey: "bt.ey"; ez: "bt.ez"; fa: "bt.fa"; fb: "bt.fb"; fc: "bt.fc"; fd: "bt.fd"; fe: "bt.fe"; ff: "bt.ff"; fg: "bt.fg"; fh: "bt.fh"; fi: "bt.fi"; fj: "bt.fj"; fk: "bt.fk"; fl: "bt.fl"; fm: "bt.fm"; fn: "bt.fn"; fo: "bt.fo"; fp: "bt.fp"; fq: "bt.fq"; fr: "bt.fr"; fs: "bt.fs"; ft: "bt.ft"; fu: "bt.fu"; fv: "bt.fv"; fw: "bt.fw"; fx: "bt.fx"; fy: "bt.fy"; fz: "bt.fz"; ga: "bt.ga"; gb: "bt.gb"; gc: "bt.gc"; gd: "bt.gd"; ge: "bt.ge"; gf: "bt.gf"; gg: "bt.gg"; gh: "bt.gh"; gi: "bt.gi"; gj: "bt.gj"; gk: "bt.gk"; gl: "bt.gl"; gm: "bt.gm"; gn: "bt.gn"; go: "bt.go"; gp: "bt.gp"; gq: "bt.gq"; gr: "bt.gr"; gs: "bt.gs"; gt: "bt.gt"; gu: "bt.gu"; gv: "bt.gv"; gw: "bt.gw"; gx: "bt.gx"; gy: "bt.gy"; gz: "bt.gz"; ha: "bt.ha"; hb: "bt.hb"; hc: "bt.hc"; hd: "bt.hd"; he: "bt.he"; hf: "bt.hf"; hg: "bt.hg"; hh: "bt.hh"; hi: "bt.hi"; hj: "bt.hj"; hk: "bt.hk"; hl: "bt.hl"; hm: "bt.hm"; hn: "bt.hn"; ho: "bt.ho"; hp: "bt.hp"; hq: "bt.hq"; hr: "bt.hr"; hs: "bt.hs"; ht: "bt.ht"; hu: "bt.hu"; hv: "bt.hv"; hw: "bt.hw"; hx: "bt.hx"; hy: "bt.hy"; hz: "bt.hz"; ia: "bt.ia"; ib: "bt.ib"; ic: "bt.ic"; id: "bt.id"; ie: "bt.ie"; if: "bt.if"; ig: "bt.ig"; ih: "bt.ih"; ii: "bt.ii"; ij: "bt.ij"; ik: "bt.ik"; il: "bt.il"; im: "bt.im"; in: "bt.in"; io: "bt.io"; ip: "bt.ip"; iq: "bt.iq"; ir: "bt.ir"; is: "bt.is"; it: "bt.it"; iu: "bt.iu"; iv: "bt.iv"; iw: "bt.iw"; ix: "bt.ix"; iy: "bt.iy"; iz: "bt.iz"; ja: "bt.ja"; jb: "bt.jb"; jc: "bt.jc"; jd: "bt.jd"; je: "bt.je"; jf: "bt.jf"; jg: "bt.jg"; jh: "bt.jh"; ji: "bt.ji"; jj: "bt.jj"; jk: "bt.jk"; jl: "bt.jl"; jm: "bt.jm"; jn: "bt.jn"; jo: "bt.jo"; jp: "bt.jp"; jq: "bt.jq"; jr: "bt.jr"; js: "bt.js"; jt: "bt.jt"; ju: "bt.ju"; jv: "bt.jv"; jw: "bt.jw"; jx: "bt.jx"; jy: "bt.jy"; jz: "bt.jz"; ka: "bt.ka"; kb: "bt.kb"; kc: "bt.kc"; kd: "bt.kd"; ke: "bt.ke"; kf: "bt.kf"; kg: "bt.kg"; kh: "bt.kh"; ki: "bt.ki"; kj: "bt.kj"; kk: "bt.kk"; kl: "bt.kl"; km: "bt.km"; kn: "bt.kn"; ko: "bt.ko"; kp: "bt.kp"; kq: "bt.kq"; kr: "bt.kr"; ks: "bt.ks"; kt: "bt.kt"; ku: "bt.ku"; kv: "bt.kv"; kw: "bt.kw"; kx: "bt.kx"; ky: "bt.ky"; kz: "bt.kz"; la: "bt.la"; lb: "bt.lb"; lc: "bt.lc"; ld: "bt.ld"; le: "bt.le"; lf: "bt.lf"; lg: "bt.lg"; lh: "bt.lh"; li: "bt.li"; lj: "bt.lj"; lk: "bt.lk"; ll: "bt.ll"; lm: "bt.lm"; ln: "bt.ln"; lo: "bt.lo"; lp: "bt.lp"; lq: "bt.lq"; lr: "bt.lr"; ls: "bt.ls"; lt: "bt.lt"; lu: "bt.lu"; lv: "bt.lv"; lw: "bt.lw"; lx: "bt.lx"; ly: "bt.ly"; lz: "bt.lz"; ma: "bt.ma"; mb: "bt.mb"; mc: "bt.mc"; md: "bt.md"; me: "bt.me"; mf: "bt.mf"; mg: "bt.mg"; mh: "bt.mh"; mi: "bt.mi"; mj: "bt.mj"; mk: "bt.mk"; ml: "bt.ml"; mm: "bt.mm"; mn: "bt.mn"; mo: "bt.mo"; mp: "bt.mp"; mq: "bt.mq"; mr: "bt.mr"; ms: "bt.ms"; mt: "bt.mt"; mu: "bt.mu"; mv: "bt.mv"; mw: "bt.mw"; mx: "bt.mx"; my: "bt.my"; mz: "bt.mz"; na: "bt.na"; nb: "bt.nb"; nc: "bt.nc"; nd: "bt.nd"; ne: "bt.ne"; nf: "bt.nf"; ng: "bt.ng"; nh: "bt.nh"; ni: "bt.ni"; nj: "bt.nj"; nk: "bt.nk"; nl: "bt.nl"; nm: "bt.nm"; nn: "bt.nn"; no: "bt.no"; np: "bt.np"; nq: "bt.nq"; nr: "bt.nr"; ns: "bt.ns"; nt: "bt.nt"; nu: "bt.nu"; nv: "bt.nv"; nw: "bt.nw"; nx: "bt.nx"; ny: "bt.ny"; nz: "bt.nz"; oa: "bt.oa"; ob: "bt.ob"; oc: "bt.oc"; od: "bt.od"; oe: "bt.oe"; of: "bt.of"; og: "bt.og"; oh: "bt.oh"; oi: "bt.oi"; oj: "bt.oj"; ok: "bt.ok"; ol: "bt.ol"; om: "bt.om"; on: "bt.on"; oo: "bt.oo"; op: "bt.op"; oq: "bt.oq"; or: "bt.or"; os: "bt.os"; ot: "bt.ot"; ou: "bt.ou"; ov: "bt.ov"; ow: "bt.ow"; ox: "bt.ox"; oy: "bt.oy"; oz: "bt.oz"; pa: "bt.pa"; pb: "bt.pb"; pc: "bt.pc"; pd: "bt.pd"; pe: "bt.pe"; pf: "bt.pf"; pg: "bt.pg"; ph: "bt.ph"; pi: "bt.pi"; pj: "bt.pj"; pk: "bt.pk"; pl: "bt.pl"; pm: "bt.pm"; pn: "bt.pn"; po: "bt.po"; pp: "bt.pp"; pq: "bt.pq"; pr: "bt.pr"; ps: "bt.ps"; pt: "bt.pt"; pu: "bt.pu"; pv: "bt.pv"; pw: "bt.pw"; px: "bt.px"; py: "bt.py"; pz: "bt.pz"; qa: "bt.qa"; qb: "bt.qb"; qc: "bt.qc"; qd: "bt.qd"; qe: "bt.qe"; qf: "bt.qf"; qg: "bt.qg"; qh: "bt.qh"; qi: "bt.qi"; qj: "bt.qj"; qk: "bt.qk"; ql: "bt.ql"; qm: "bt.qm"; qn: "bt.qn"; qo: "bt.qo"; qp: "bt.qp"; qq: "bt.qq"; qr: "bt.qr"; qs: "bt.qs"; qt: "bt.qt"; qu: "bt.qu"; qv: "bt.qv"; qw: "bt.qw"; qx: "bt.qx"; qy: "bt.qy"; qz: "bt.qz"; ra: "bt.ra"; rb: "bt.rb"; rc: "bt.rc"; rd: "bt.rd"; re: "bt.re"; rf: "bt.rf"; rg: "bt.rg"; rh: "bt.rh"; ri: "bt.ri"; rj: "bt.rj"; rk: "bt.rk"; rl: "bt.rl"; rm: "bt.rm"; rn: "bt.rn"; ro: "bt.ro"; rp: "bt.rp"; rq: "bt.rq"; rr: "bt.rr"; rs: "bt.rs"; rt: "bt.rt"; ru: "bt.ru"; rv: "bt.rv"; rw: "bt.rw"; rx: "bt.rx"; ry: "bt.ry"; rz: "bt.rz"; sa: "bt.sa"; sb: "bt.sb"; sc: "bt.sc"; sd: "bt.sd"; se: "bt.se"; sf: "bt.sf"; sg: "bt.sg"; sh: "bt.sh"; si: "bt.si"; sj: "bt.sj"; sk: "bt.sk"; sl: "bt.sl"; sm: "bt.sm"; sn: "bt.sn"; so: "bt.so"; sp: "bt.sp"; sq: "bt.sq"; sr: "bt.sr"; ss: "bt.ss"; st: "bt.st"; su: "bt.su"; sv: "bt.sv"; sw: "bt.sw"; sx: "bt.sx"; sy: "bt.sy"; sz: "bt.sz"; ta: "bt.ta"; tb: "bt.tb"; tc: "bt.tc"; td: "bt.td"; te: "bt.te"; tf: "bt.tf"; tg: "bt.tg"; th: "bt.th"; ti: "bt.ti"; tj: "bt.tj"; tk: "bt.tk"; tl: "bt.tl"; tm: "bt.tm"; tn: "bt.tn"; to: "bt.to"; tp: "bt.tp"; tq: "bt.tq"; tr: "bt.tr"; ts: "bt.ts"; tt: "bt.tt"; tu: "bt.tu"; tv: "bt.tv"; tw: "bt.tw"; tx: "bt.tx"; ty: "bt.ty"; tz: "bt.tz"; ua: "bt.ua"; ub: "bt.ub"; uc: "bt.uc"; ud: "bt.ud"; ue: "bt.ue"; uf: "bt.uf"; ug: "bt.ug"; uh: "bt.uh"; ui: "bt.ui"; uj: "bt.uj"; uk: "bt.uk"; ul: "bt.ul"; um: "bt.um"; un: "bt.un"; uo: "bt.uo"; up: "bt.up"; uq: "bt.uq"; ur: "bt.ur"; us: "bt.us"; ut: "bt.ut"; uu: "bt.uu"; uv: "bt.uv"; uw: "bt.uw"; ux: "bt.ux"; uy: "bt.uy"; uz: "bt.uz"; va: "bt.va"; vb: "bt.vb"; vc: "bt.vc"; vd: "bt.vd"; ve: "bt.ve"; vf: "bt.vf"; vg: "bt.vg"; vh: "bt.vh"; vi: "bt.vi"; vj: "bt.vj"; vk: "bt.vk"; vl: "bt.vl"; vm: "bt.vm"; vn: "bt.vn"; vo: "bt.vo"; vp: "bt.vp"; vq: "bt.vq"; vr: "bt.vr"; vs: "bt.vs"; vt: "bt.vt"; vu: "bt.vu"; vv: "bt.vv"; vw: "bt.vw"; vx: "bt.vx"; vy: "bt.vy"; vz: "bt.vz"; wa: "bt.wa"; wb: "bt.wb"; wc: "bt.wc"; wd: "bt.wd"; we: "bt.we"; wf: "bt.wf"; wg: "bt.wg"; wh: "bt.wh"; wi: "bt.wi"; wj: "bt.wj"; wk: "bt.wk"; wl: "bt.wl"; wm: "bt.wm"; wn: "bt.wn"; wo: "bt.wo"; wp: "bt.wp"; wq: "bt.wq"; wr: "bt.wr"; ws: "bt.ws"; wt: "bt.wt"; wu: "bt.wu"; wv: "bt.wv"; ww: "bt.ww"; wx: "bt.wx"; wy: "bt.wy"; wz: "bt.wz"; xa: "bt.xa"; xb: "bt.xb"; xc: "bt.xc"; xd: "bt.xd"; xe: "bt.xe"; xf: "bt.xf"; xg: "bt.xg"; xh: "bt.xh"; xi: "bt.xi"; xj: "bt.xj"; xk: "bt.xk"; xl: "bt.xl"; xm: "bt.xm"; xn: "bt.xn"; xo: "bt.xo"; xp: "bt.xp"; xq: "bt.xq"; xr: "bt.xr"; xs: "bt.xs"; xt: "bt.xt"; xu: "bt.xu"; xv: "bt.xv"; xw: "bt.xw"; xx: "bt.xx"; xy: "bt.xy"; xz: "bt.xz"; ya: "bt.ya"; yb: "bt.yb"; yc: "bt.yc"; yd: "bt.yd"; ye: "bt.ye"; yf: "bt.yf"; yg: "bt.yg"; yh: "bt.yh"; yi: "bt.yi"; yj: "bt.yj"; yk: "bt.yk"; yl: "bt.yl"; ym: "bt.ym"; yn: "bt.yn"; yo: "bt.yo"; yp: "bt.yp"; yq: "bt.yq"; yr: "bt.yr"; ys: "bt.ys"; yt: "bt.yt"; yu: "bt.yu"; yv: "bt.yv"; yw: "bt.yw"; yx: "bt.yx"; yy: "bt.yy"; yz: "bt.yz"; za: "bt.za"; zb: "bt.zb"; zc: "bt.zc"; zd: "bt.zd"; ze: "bt.ze"; zf: "bt.zf"; zg: "bt.zg"; zh: "bt.zh"; zi: "bt.zi"; zj: "bt.zj"; zk: "bt.zk"; zl: "bt.zl"; zm: "bt.zm"; zn: "bt.zn"; zo: "bt.zo"; zp: "bt.zp"; zq: "bt.zq"; zr: "bt.zr"; zs: "bt.zs"; zt: "bt.zt"; zu: "bt.zu"; zv: "bt.zv"; zw: "bt.zw"; zx: "bt.zx"; zy: "bt.zy"; zz: "bt.zz"; }; bu: { aa: "bu.aa"; ab: "bu.ab"; ac: "bu.ac"; ad: "bu.ad"; ae: "bu.ae"; af: "bu.af"; ag: "bu.ag"; ah: "bu.ah"; ai: "bu.ai"; aj: "bu.aj"; ak: "bu.ak"; al: "bu.al"; am: "bu.am"; an: "bu.an"; ao: "bu.ao"; ap: "bu.ap"; aq: "bu.aq"; ar: "bu.ar"; as: "bu.as"; at: "bu.at"; au: "bu.au"; av: "bu.av"; aw: "bu.aw"; ax: "bu.ax"; ay: "bu.ay"; az: "bu.az"; ba: "bu.ba"; bb: "bu.bb"; bc: "bu.bc"; bd: "bu.bd"; be: "bu.be"; bf: "bu.bf"; bg: "bu.bg"; bh: "bu.bh"; bi: "bu.bi"; bj: "bu.bj"; bk: "bu.bk"; bl: "bu.bl"; bm: "bu.bm"; bn: "bu.bn"; bo: "bu.bo"; bp: "bu.bp"; bq: "bu.bq"; br: "bu.br"; bs: "bu.bs"; bt: "bu.bt"; bu: "bu.bu"; bv: "bu.bv"; bw: "bu.bw"; bx: "bu.bx"; by: "bu.by"; bz: "bu.bz"; ca: "bu.ca"; cb: "bu.cb"; cc: "bu.cc"; cd: "bu.cd"; ce: "bu.ce"; cf: "bu.cf"; cg: "bu.cg"; ch: "bu.ch"; ci: "bu.ci"; cj: "bu.cj"; ck: "bu.ck"; cl: "bu.cl"; cm: "bu.cm"; cn: "bu.cn"; co: "bu.co"; cp: "bu.cp"; cq: "bu.cq"; cr: "bu.cr"; cs: "bu.cs"; ct: "bu.ct"; cu: "bu.cu"; cv: "bu.cv"; cw: "bu.cw"; cx: "bu.cx"; cy: "bu.cy"; cz: "bu.cz"; da: "bu.da"; db: "bu.db"; dc: "bu.dc"; dd: "bu.dd"; de: "bu.de"; df: "bu.df"; dg: "bu.dg"; dh: "bu.dh"; di: "bu.di"; dj: "bu.dj"; dk: "bu.dk"; dl: "bu.dl"; dm: "bu.dm"; dn: "bu.dn"; do: "bu.do"; dp: "bu.dp"; dq: "bu.dq"; dr: "bu.dr"; ds: "bu.ds"; dt: "bu.dt"; du: "bu.du"; dv: "bu.dv"; dw: "bu.dw"; dx: "bu.dx"; dy: "bu.dy"; dz: "bu.dz"; ea: "bu.ea"; eb: "bu.eb"; ec: "bu.ec"; ed: "bu.ed"; ee: "bu.ee"; ef: "bu.ef"; eg: "bu.eg"; eh: "bu.eh"; ei: "bu.ei"; ej: "bu.ej"; ek: "bu.ek"; el: "bu.el"; em: "bu.em"; en: "bu.en"; eo: "bu.eo"; ep: "bu.ep"; eq: "bu.eq"; er: "bu.er"; es: "bu.es"; et: "bu.et"; eu: "bu.eu"; ev: "bu.ev"; ew: "bu.ew"; ex: "bu.ex"; ey: "bu.ey"; ez: "bu.ez"; fa: "bu.fa"; fb: "bu.fb"; fc: "bu.fc"; fd: "bu.fd"; fe: "bu.fe"; ff: "bu.ff"; fg: "bu.fg"; fh: "bu.fh"; fi: "bu.fi"; fj: "bu.fj"; fk: "bu.fk"; fl: "bu.fl"; fm: "bu.fm"; fn: "bu.fn"; fo: "bu.fo"; fp: "bu.fp"; fq: "bu.fq"; fr: "bu.fr"; fs: "bu.fs"; ft: "bu.ft"; fu: "bu.fu"; fv: "bu.fv"; fw: "bu.fw"; fx: "bu.fx"; fy: "bu.fy"; fz: "bu.fz"; ga: "bu.ga"; gb: "bu.gb"; gc: "bu.gc"; gd: "bu.gd"; ge: "bu.ge"; gf: "bu.gf"; gg: "bu.gg"; gh: "bu.gh"; gi: "bu.gi"; gj: "bu.gj"; gk: "bu.gk"; gl: "bu.gl"; gm: "bu.gm"; gn: "bu.gn"; go: "bu.go"; gp: "bu.gp"; gq: "bu.gq"; gr: "bu.gr"; gs: "bu.gs"; gt: "bu.gt"; gu: "bu.gu"; gv: "bu.gv"; gw: "bu.gw"; gx: "bu.gx"; gy: "bu.gy"; gz: "bu.gz"; ha: "bu.ha"; hb: "bu.hb"; hc: "bu.hc"; hd: "bu.hd"; he: "bu.he"; hf: "bu.hf"; hg: "bu.hg"; hh: "bu.hh"; hi: "bu.hi"; hj: "bu.hj"; hk: "bu.hk"; hl: "bu.hl"; hm: "bu.hm"; hn: "bu.hn"; ho: "bu.ho"; hp: "bu.hp"; hq: "bu.hq"; hr: "bu.hr"; hs: "bu.hs"; ht: "bu.ht"; hu: "bu.hu"; hv: "bu.hv"; hw: "bu.hw"; hx: "bu.hx"; hy: "bu.hy"; hz: "bu.hz"; ia: "bu.ia"; ib: "bu.ib"; ic: "bu.ic"; id: "bu.id"; ie: "bu.ie"; if: "bu.if"; ig: "bu.ig"; ih: "bu.ih"; ii: "bu.ii"; ij: "bu.ij"; ik: "bu.ik"; il: "bu.il"; im: "bu.im"; in: "bu.in"; io: "bu.io"; ip: "bu.ip"; iq: "bu.iq"; ir: "bu.ir"; is: "bu.is"; it: "bu.it"; iu: "bu.iu"; iv: "bu.iv"; iw: "bu.iw"; ix: "bu.ix"; iy: "bu.iy"; iz: "bu.iz"; ja: "bu.ja"; jb: "bu.jb"; jc: "bu.jc"; jd: "bu.jd"; je: "bu.je"; jf: "bu.jf"; jg: "bu.jg"; jh: "bu.jh"; ji: "bu.ji"; jj: "bu.jj"; jk: "bu.jk"; jl: "bu.jl"; jm: "bu.jm"; jn: "bu.jn"; jo: "bu.jo"; jp: "bu.jp"; jq: "bu.jq"; jr: "bu.jr"; js: "bu.js"; jt: "bu.jt"; ju: "bu.ju"; jv: "bu.jv"; jw: "bu.jw"; jx: "bu.jx"; jy: "bu.jy"; jz: "bu.jz"; ka: "bu.ka"; kb: "bu.kb"; kc: "bu.kc"; kd: "bu.kd"; ke: "bu.ke"; kf: "bu.kf"; kg: "bu.kg"; kh: "bu.kh"; ki: "bu.ki"; kj: "bu.kj"; kk: "bu.kk"; kl: "bu.kl"; km: "bu.km"; kn: "bu.kn"; ko: "bu.ko"; kp: "bu.kp"; kq: "bu.kq"; kr: "bu.kr"; ks: "bu.ks"; kt: "bu.kt"; ku: "bu.ku"; kv: "bu.kv"; kw: "bu.kw"; kx: "bu.kx"; ky: "bu.ky"; kz: "bu.kz"; la: "bu.la"; lb: "bu.lb"; lc: "bu.lc"; ld: "bu.ld"; le: "bu.le"; lf: "bu.lf"; lg: "bu.lg"; lh: "bu.lh"; li: "bu.li"; lj: "bu.lj"; lk: "bu.lk"; ll: "bu.ll"; lm: "bu.lm"; ln: "bu.ln"; lo: "bu.lo"; lp: "bu.lp"; lq: "bu.lq"; lr: "bu.lr"; ls: "bu.ls"; lt: "bu.lt"; lu: "bu.lu"; lv: "bu.lv"; lw: "bu.lw"; lx: "bu.lx"; ly: "bu.ly"; lz: "bu.lz"; ma: "bu.ma"; mb: "bu.mb"; mc: "bu.mc"; md: "bu.md"; me: "bu.me"; mf: "bu.mf"; mg: "bu.mg"; mh: "bu.mh"; mi: "bu.mi"; mj: "bu.mj"; mk: "bu.mk"; ml: "bu.ml"; mm: "bu.mm"; mn: "bu.mn"; mo: "bu.mo"; mp: "bu.mp"; mq: "bu.mq"; mr: "bu.mr"; ms: "bu.ms"; mt: "bu.mt"; mu: "bu.mu"; mv: "bu.mv"; mw: "bu.mw"; mx: "bu.mx"; my: "bu.my"; mz: "bu.mz"; na: "bu.na"; nb: "bu.nb"; nc: "bu.nc"; nd: "bu.nd"; ne: "bu.ne"; nf: "bu.nf"; ng: "bu.ng"; nh: "bu.nh"; ni: "bu.ni"; nj: "bu.nj"; nk: "bu.nk"; nl: "bu.nl"; nm: "bu.nm"; nn: "bu.nn"; no: "bu.no"; np: "bu.np"; nq: "bu.nq"; nr: "bu.nr"; ns: "bu.ns"; nt: "bu.nt"; nu: "bu.nu"; nv: "bu.nv"; nw: "bu.nw"; nx: "bu.nx"; ny: "bu.ny"; nz: "bu.nz"; oa: "bu.oa"; ob: "bu.ob"; oc: "bu.oc"; od: "bu.od"; oe: "bu.oe"; of: "bu.of"; og: "bu.og"; oh: "bu.oh"; oi: "bu.oi"; oj: "bu.oj"; ok: "bu.ok"; ol: "bu.ol"; om: "bu.om"; on: "bu.on"; oo: "bu.oo"; op: "bu.op"; oq: "bu.oq"; or: "bu.or"; os: "bu.os"; ot: "bu.ot"; ou: "bu.ou"; ov: "bu.ov"; ow: "bu.ow"; ox: "bu.ox"; oy: "bu.oy"; oz: "bu.oz"; pa: "bu.pa"; pb: "bu.pb"; pc: "bu.pc"; pd: "bu.pd"; pe: "bu.pe"; pf: "bu.pf"; pg: "bu.pg"; ph: "bu.ph"; pi: "bu.pi"; pj: "bu.pj"; pk: "bu.pk"; pl: "bu.pl"; pm: "bu.pm"; pn: "bu.pn"; po: "bu.po"; pp: "bu.pp"; pq: "bu.pq"; pr: "bu.pr"; ps: "bu.ps"; pt: "bu.pt"; pu: "bu.pu"; pv: "bu.pv"; pw: "bu.pw"; px: "bu.px"; py: "bu.py"; pz: "bu.pz"; qa: "bu.qa"; qb: "bu.qb"; qc: "bu.qc"; qd: "bu.qd"; qe: "bu.qe"; qf: "bu.qf"; qg: "bu.qg"; qh: "bu.qh"; qi: "bu.qi"; qj: "bu.qj"; qk: "bu.qk"; ql: "bu.ql"; qm: "bu.qm"; qn: "bu.qn"; qo: "bu.qo"; qp: "bu.qp"; qq: "bu.qq"; qr: "bu.qr"; qs: "bu.qs"; qt: "bu.qt"; qu: "bu.qu"; qv: "bu.qv"; qw: "bu.qw"; qx: "bu.qx"; qy: "bu.qy"; qz: "bu.qz"; ra: "bu.ra"; rb: "bu.rb"; rc: "bu.rc"; rd: "bu.rd"; re: "bu.re"; rf: "bu.rf"; rg: "bu.rg"; rh: "bu.rh"; ri: "bu.ri"; rj: "bu.rj"; rk: "bu.rk"; rl: "bu.rl"; rm: "bu.rm"; rn: "bu.rn"; ro: "bu.ro"; rp: "bu.rp"; rq: "bu.rq"; rr: "bu.rr"; rs: "bu.rs"; rt: "bu.rt"; ru: "bu.ru"; rv: "bu.rv"; rw: "bu.rw"; rx: "bu.rx"; ry: "bu.ry"; rz: "bu.rz"; sa: "bu.sa"; sb: "bu.sb"; sc: "bu.sc"; sd: "bu.sd"; se: "bu.se"; sf: "bu.sf"; sg: "bu.sg"; sh: "bu.sh"; si: "bu.si"; sj: "bu.sj"; sk: "bu.sk"; sl: "bu.sl"; sm: "bu.sm"; sn: "bu.sn"; so: "bu.so"; sp: "bu.sp"; sq: "bu.sq"; sr: "bu.sr"; ss: "bu.ss"; st: "bu.st"; su: "bu.su"; sv: "bu.sv"; sw: "bu.sw"; sx: "bu.sx"; sy: "bu.sy"; sz: "bu.sz"; ta: "bu.ta"; tb: "bu.tb"; tc: "bu.tc"; td: "bu.td"; te: "bu.te"; tf: "bu.tf"; tg: "bu.tg"; th: "bu.th"; ti: "bu.ti"; tj: "bu.tj"; tk: "bu.tk"; tl: "bu.tl"; tm: "bu.tm"; tn: "bu.tn"; to: "bu.to"; tp: "bu.tp"; tq: "bu.tq"; tr: "bu.tr"; ts: "bu.ts"; tt: "bu.tt"; tu: "bu.tu"; tv: "bu.tv"; tw: "bu.tw"; tx: "bu.tx"; ty: "bu.ty"; tz: "bu.tz"; ua: "bu.ua"; ub: "bu.ub"; uc: "bu.uc"; ud: "bu.ud"; ue: "bu.ue"; uf: "bu.uf"; ug: "bu.ug"; uh: "bu.uh"; ui: "bu.ui"; uj: "bu.uj"; uk: "bu.uk"; ul: "bu.ul"; um: "bu.um"; un: "bu.un"; uo: "bu.uo"; up: "bu.up"; uq: "bu.uq"; ur: "bu.ur"; us: "bu.us"; ut: "bu.ut"; uu: "bu.uu"; uv: "bu.uv"; uw: "bu.uw"; ux: "bu.ux"; uy: "bu.uy"; uz: "bu.uz"; va: "bu.va"; vb: "bu.vb"; vc: "bu.vc"; vd: "bu.vd"; ve: "bu.ve"; vf: "bu.vf"; vg: "bu.vg"; vh: "bu.vh"; vi: "bu.vi"; vj: "bu.vj"; vk: "bu.vk"; vl: "bu.vl"; vm: "bu.vm"; vn: "bu.vn"; vo: "bu.vo"; vp: "bu.vp"; vq: "bu.vq"; vr: "bu.vr"; vs: "bu.vs"; vt: "bu.vt"; vu: "bu.vu"; vv: "bu.vv"; vw: "bu.vw"; vx: "bu.vx"; vy: "bu.vy"; vz: "bu.vz"; wa: "bu.wa"; wb: "bu.wb"; wc: "bu.wc"; wd: "bu.wd"; we: "bu.we"; wf: "bu.wf"; wg: "bu.wg"; wh: "bu.wh"; wi: "bu.wi"; wj: "bu.wj"; wk: "bu.wk"; wl: "bu.wl"; wm: "bu.wm"; wn: "bu.wn"; wo: "bu.wo"; wp: "bu.wp"; wq: "bu.wq"; wr: "bu.wr"; ws: "bu.ws"; wt: "bu.wt"; wu: "bu.wu"; wv: "bu.wv"; ww: "bu.ww"; wx: "bu.wx"; wy: "bu.wy"; wz: "bu.wz"; xa: "bu.xa"; xb: "bu.xb"; xc: "bu.xc"; xd: "bu.xd"; xe: "bu.xe"; xf: "bu.xf"; xg: "bu.xg"; xh: "bu.xh"; xi: "bu.xi"; xj: "bu.xj"; xk: "bu.xk"; xl: "bu.xl"; xm: "bu.xm"; xn: "bu.xn"; xo: "bu.xo"; xp: "bu.xp"; xq: "bu.xq"; xr: "bu.xr"; xs: "bu.xs"; xt: "bu.xt"; xu: "bu.xu"; xv: "bu.xv"; xw: "bu.xw"; xx: "bu.xx"; xy: "bu.xy"; xz: "bu.xz"; ya: "bu.ya"; yb: "bu.yb"; yc: "bu.yc"; yd: "bu.yd"; ye: "bu.ye"; yf: "bu.yf"; yg: "bu.yg"; yh: "bu.yh"; yi: "bu.yi"; yj: "bu.yj"; yk: "bu.yk"; yl: "bu.yl"; ym: "bu.ym"; yn: "bu.yn"; yo: "bu.yo"; yp: "bu.yp"; yq: "bu.yq"; yr: "bu.yr"; ys: "bu.ys"; yt: "bu.yt"; yu: "bu.yu"; yv: "bu.yv"; yw: "bu.yw"; yx: "bu.yx"; yy: "bu.yy"; yz: "bu.yz"; za: "bu.za"; zb: "bu.zb"; zc: "bu.zc"; zd: "bu.zd"; ze: "bu.ze"; zf: "bu.zf"; zg: "bu.zg"; zh: "bu.zh"; zi: "bu.zi"; zj: "bu.zj"; zk: "bu.zk"; zl: "bu.zl"; zm: "bu.zm"; zn: "bu.zn"; zo: "bu.zo"; zp: "bu.zp"; zq: "bu.zq"; zr: "bu.zr"; zs: "bu.zs"; zt: "bu.zt"; zu: "bu.zu"; zv: "bu.zv"; zw: "bu.zw"; zx: "bu.zx"; zy: "bu.zy"; zz: "bu.zz"; }; bv: { aa: "bv.aa"; ab: "bv.ab"; ac: "bv.ac"; ad: "bv.ad"; ae: "bv.ae"; af: "bv.af"; ag: "bv.ag"; ah: "bv.ah"; ai: "bv.ai"; aj: "bv.aj"; ak: "bv.ak"; al: "bv.al"; am: "bv.am"; an: "bv.an"; ao: "bv.ao"; ap: "bv.ap"; aq: "bv.aq"; ar: "bv.ar"; as: "bv.as"; at: "bv.at"; au: "bv.au"; av: "bv.av"; aw: "bv.aw"; ax: "bv.ax"; ay: "bv.ay"; az: "bv.az"; ba: "bv.ba"; bb: "bv.bb"; bc: "bv.bc"; bd: "bv.bd"; be: "bv.be"; bf: "bv.bf"; bg: "bv.bg"; bh: "bv.bh"; bi: "bv.bi"; bj: "bv.bj"; bk: "bv.bk"; bl: "bv.bl"; bm: "bv.bm"; bn: "bv.bn"; bo: "bv.bo"; bp: "bv.bp"; bq: "bv.bq"; br: "bv.br"; bs: "bv.bs"; bt: "bv.bt"; bu: "bv.bu"; bv: "bv.bv"; bw: "bv.bw"; bx: "bv.bx"; by: "bv.by"; bz: "bv.bz"; ca: "bv.ca"; cb: "bv.cb"; cc: "bv.cc"; cd: "bv.cd"; ce: "bv.ce"; cf: "bv.cf"; cg: "bv.cg"; ch: "bv.ch"; ci: "bv.ci"; cj: "bv.cj"; ck: "bv.ck"; cl: "bv.cl"; cm: "bv.cm"; cn: "bv.cn"; co: "bv.co"; cp: "bv.cp"; cq: "bv.cq"; cr: "bv.cr"; cs: "bv.cs"; ct: "bv.ct"; cu: "bv.cu"; cv: "bv.cv"; cw: "bv.cw"; cx: "bv.cx"; cy: "bv.cy"; cz: "bv.cz"; da: "bv.da"; db: "bv.db"; dc: "bv.dc"; dd: "bv.dd"; de: "bv.de"; df: "bv.df"; dg: "bv.dg"; dh: "bv.dh"; di: "bv.di"; dj: "bv.dj"; dk: "bv.dk"; dl: "bv.dl"; dm: "bv.dm"; dn: "bv.dn"; do: "bv.do"; dp: "bv.dp"; dq: "bv.dq"; dr: "bv.dr"; ds: "bv.ds"; dt: "bv.dt"; du: "bv.du"; dv: "bv.dv"; dw: "bv.dw"; dx: "bv.dx"; dy: "bv.dy"; dz: "bv.dz"; ea: "bv.ea"; eb: "bv.eb"; ec: "bv.ec"; ed: "bv.ed"; ee: "bv.ee"; ef: "bv.ef"; eg: "bv.eg"; eh: "bv.eh"; ei: "bv.ei"; ej: "bv.ej"; ek: "bv.ek"; el: "bv.el"; em: "bv.em"; en: "bv.en"; eo: "bv.eo"; ep: "bv.ep"; eq: "bv.eq"; er: "bv.er"; es: "bv.es"; et: "bv.et"; eu: "bv.eu"; ev: "bv.ev"; ew: "bv.ew"; ex: "bv.ex"; ey: "bv.ey"; ez: "bv.ez"; fa: "bv.fa"; fb: "bv.fb"; fc: "bv.fc"; fd: "bv.fd"; fe: "bv.fe"; ff: "bv.ff"; fg: "bv.fg"; fh: "bv.fh"; fi: "bv.fi"; fj: "bv.fj"; fk: "bv.fk"; fl: "bv.fl"; fm: "bv.fm"; fn: "bv.fn"; fo: "bv.fo"; fp: "bv.fp"; fq: "bv.fq"; fr: "bv.fr"; fs: "bv.fs"; ft: "bv.ft"; fu: "bv.fu"; fv: "bv.fv"; fw: "bv.fw"; fx: "bv.fx"; fy: "bv.fy"; fz: "bv.fz"; ga: "bv.ga"; gb: "bv.gb"; gc: "bv.gc"; gd: "bv.gd"; ge: "bv.ge"; gf: "bv.gf"; gg: "bv.gg"; gh: "bv.gh"; gi: "bv.gi"; gj: "bv.gj"; gk: "bv.gk"; gl: "bv.gl"; gm: "bv.gm"; gn: "bv.gn"; go: "bv.go"; gp: "bv.gp"; gq: "bv.gq"; gr: "bv.gr"; gs: "bv.gs"; gt: "bv.gt"; gu: "bv.gu"; gv: "bv.gv"; gw: "bv.gw"; gx: "bv.gx"; gy: "bv.gy"; gz: "bv.gz"; ha: "bv.ha"; hb: "bv.hb"; hc: "bv.hc"; hd: "bv.hd"; he: "bv.he"; hf: "bv.hf"; hg: "bv.hg"; hh: "bv.hh"; hi: "bv.hi"; hj: "bv.hj"; hk: "bv.hk"; hl: "bv.hl"; hm: "bv.hm"; hn: "bv.hn"; ho: "bv.ho"; hp: "bv.hp"; hq: "bv.hq"; hr: "bv.hr"; hs: "bv.hs"; ht: "bv.ht"; hu: "bv.hu"; hv: "bv.hv"; hw: "bv.hw"; hx: "bv.hx"; hy: "bv.hy"; hz: "bv.hz"; ia: "bv.ia"; ib: "bv.ib"; ic: "bv.ic"; id: "bv.id"; ie: "bv.ie"; if: "bv.if"; ig: "bv.ig"; ih: "bv.ih"; ii: "bv.ii"; ij: "bv.ij"; ik: "bv.ik"; il: "bv.il"; im: "bv.im"; in: "bv.in"; io: "bv.io"; ip: "bv.ip"; iq: "bv.iq"; ir: "bv.ir"; is: "bv.is"; it: "bv.it"; iu: "bv.iu"; iv: "bv.iv"; iw: "bv.iw"; ix: "bv.ix"; iy: "bv.iy"; iz: "bv.iz"; ja: "bv.ja"; jb: "bv.jb"; jc: "bv.jc"; jd: "bv.jd"; je: "bv.je"; jf: "bv.jf"; jg: "bv.jg"; jh: "bv.jh"; ji: "bv.ji"; jj: "bv.jj"; jk: "bv.jk"; jl: "bv.jl"; jm: "bv.jm"; jn: "bv.jn"; jo: "bv.jo"; jp: "bv.jp"; jq: "bv.jq"; jr: "bv.jr"; js: "bv.js"; jt: "bv.jt"; ju: "bv.ju"; jv: "bv.jv"; jw: "bv.jw"; jx: "bv.jx"; jy: "bv.jy"; jz: "bv.jz"; ka: "bv.ka"; kb: "bv.kb"; kc: "bv.kc"; kd: "bv.kd"; ke: "bv.ke"; kf: "bv.kf"; kg: "bv.kg"; kh: "bv.kh"; ki: "bv.ki"; kj: "bv.kj"; kk: "bv.kk"; kl: "bv.kl"; km: "bv.km"; kn: "bv.kn"; ko: "bv.ko"; kp: "bv.kp"; kq: "bv.kq"; kr: "bv.kr"; ks: "bv.ks"; kt: "bv.kt"; ku: "bv.ku"; kv: "bv.kv"; kw: "bv.kw"; kx: "bv.kx"; ky: "bv.ky"; kz: "bv.kz"; la: "bv.la"; lb: "bv.lb"; lc: "bv.lc"; ld: "bv.ld"; le: "bv.le"; lf: "bv.lf"; lg: "bv.lg"; lh: "bv.lh"; li: "bv.li"; lj: "bv.lj"; lk: "bv.lk"; ll: "bv.ll"; lm: "bv.lm"; ln: "bv.ln"; lo: "bv.lo"; lp: "bv.lp"; lq: "bv.lq"; lr: "bv.lr"; ls: "bv.ls"; lt: "bv.lt"; lu: "bv.lu"; lv: "bv.lv"; lw: "bv.lw"; lx: "bv.lx"; ly: "bv.ly"; lz: "bv.lz"; ma: "bv.ma"; mb: "bv.mb"; mc: "bv.mc"; md: "bv.md"; me: "bv.me"; mf: "bv.mf"; mg: "bv.mg"; mh: "bv.mh"; mi: "bv.mi"; mj: "bv.mj"; mk: "bv.mk"; ml: "bv.ml"; mm: "bv.mm"; mn: "bv.mn"; mo: "bv.mo"; mp: "bv.mp"; mq: "bv.mq"; mr: "bv.mr"; ms: "bv.ms"; mt: "bv.mt"; mu: "bv.mu"; mv: "bv.mv"; mw: "bv.mw"; mx: "bv.mx"; my: "bv.my"; mz: "bv.mz"; na: "bv.na"; nb: "bv.nb"; nc: "bv.nc"; nd: "bv.nd"; ne: "bv.ne"; nf: "bv.nf"; ng: "bv.ng"; nh: "bv.nh"; ni: "bv.ni"; nj: "bv.nj"; nk: "bv.nk"; nl: "bv.nl"; nm: "bv.nm"; nn: "bv.nn"; no: "bv.no"; np: "bv.np"; nq: "bv.nq"; nr: "bv.nr"; ns: "bv.ns"; nt: "bv.nt"; nu: "bv.nu"; nv: "bv.nv"; nw: "bv.nw"; nx: "bv.nx"; ny: "bv.ny"; nz: "bv.nz"; oa: "bv.oa"; ob: "bv.ob"; oc: "bv.oc"; od: "bv.od"; oe: "bv.oe"; of: "bv.of"; og: "bv.og"; oh: "bv.oh"; oi: "bv.oi"; oj: "bv.oj"; ok: "bv.ok"; ol: "bv.ol"; om: "bv.om"; on: "bv.on"; oo: "bv.oo"; op: "bv.op"; oq: "bv.oq"; or: "bv.or"; os: "bv.os"; ot: "bv.ot"; ou: "bv.ou"; ov: "bv.ov"; ow: "bv.ow"; ox: "bv.ox"; oy: "bv.oy"; oz: "bv.oz"; pa: "bv.pa"; pb: "bv.pb"; pc: "bv.pc"; pd: "bv.pd"; pe: "bv.pe"; pf: "bv.pf"; pg: "bv.pg"; ph: "bv.ph"; pi: "bv.pi"; pj: "bv.pj"; pk: "bv.pk"; pl: "bv.pl"; pm: "bv.pm"; pn: "bv.pn"; po: "bv.po"; pp: "bv.pp"; pq: "bv.pq"; pr: "bv.pr"; ps: "bv.ps"; pt: "bv.pt"; pu: "bv.pu"; pv: "bv.pv"; pw: "bv.pw"; px: "bv.px"; py: "bv.py"; pz: "bv.pz"; qa: "bv.qa"; qb: "bv.qb"; qc: "bv.qc"; qd: "bv.qd"; qe: "bv.qe"; qf: "bv.qf"; qg: "bv.qg"; qh: "bv.qh"; qi: "bv.qi"; qj: "bv.qj"; qk: "bv.qk"; ql: "bv.ql"; qm: "bv.qm"; qn: "bv.qn"; qo: "bv.qo"; qp: "bv.qp"; qq: "bv.qq"; qr: "bv.qr"; qs: "bv.qs"; qt: "bv.qt"; qu: "bv.qu"; qv: "bv.qv"; qw: "bv.qw"; qx: "bv.qx"; qy: "bv.qy"; qz: "bv.qz"; ra: "bv.ra"; rb: "bv.rb"; rc: "bv.rc"; rd: "bv.rd"; re: "bv.re"; rf: "bv.rf"; rg: "bv.rg"; rh: "bv.rh"; ri: "bv.ri"; rj: "bv.rj"; rk: "bv.rk"; rl: "bv.rl"; rm: "bv.rm"; rn: "bv.rn"; ro: "bv.ro"; rp: "bv.rp"; rq: "bv.rq"; rr: "bv.rr"; rs: "bv.rs"; rt: "bv.rt"; ru: "bv.ru"; rv: "bv.rv"; rw: "bv.rw"; rx: "bv.rx"; ry: "bv.ry"; rz: "bv.rz"; sa: "bv.sa"; sb: "bv.sb"; sc: "bv.sc"; sd: "bv.sd"; se: "bv.se"; sf: "bv.sf"; sg: "bv.sg"; sh: "bv.sh"; si: "bv.si"; sj: "bv.sj"; sk: "bv.sk"; sl: "bv.sl"; sm: "bv.sm"; sn: "bv.sn"; so: "bv.so"; sp: "bv.sp"; sq: "bv.sq"; sr: "bv.sr"; ss: "bv.ss"; st: "bv.st"; su: "bv.su"; sv: "bv.sv"; sw: "bv.sw"; sx: "bv.sx"; sy: "bv.sy"; sz: "bv.sz"; ta: "bv.ta"; tb: "bv.tb"; tc: "bv.tc"; td: "bv.td"; te: "bv.te"; tf: "bv.tf"; tg: "bv.tg"; th: "bv.th"; ti: "bv.ti"; tj: "bv.tj"; tk: "bv.tk"; tl: "bv.tl"; tm: "bv.tm"; tn: "bv.tn"; to: "bv.to"; tp: "bv.tp"; tq: "bv.tq"; tr: "bv.tr"; ts: "bv.ts"; tt: "bv.tt"; tu: "bv.tu"; tv: "bv.tv"; tw: "bv.tw"; tx: "bv.tx"; ty: "bv.ty"; tz: "bv.tz"; ua: "bv.ua"; ub: "bv.ub"; uc: "bv.uc"; ud: "bv.ud"; ue: "bv.ue"; uf: "bv.uf"; ug: "bv.ug"; uh: "bv.uh"; ui: "bv.ui"; uj: "bv.uj"; uk: "bv.uk"; ul: "bv.ul"; um: "bv.um"; un: "bv.un"; uo: "bv.uo"; up: "bv.up"; uq: "bv.uq"; ur: "bv.ur"; us: "bv.us"; ut: "bv.ut"; uu: "bv.uu"; uv: "bv.uv"; uw: "bv.uw"; ux: "bv.ux"; uy: "bv.uy"; uz: "bv.uz"; va: "bv.va"; vb: "bv.vb"; vc: "bv.vc"; vd: "bv.vd"; ve: "bv.ve"; vf: "bv.vf"; vg: "bv.vg"; vh: "bv.vh"; vi: "bv.vi"; vj: "bv.vj"; vk: "bv.vk"; vl: "bv.vl"; vm: "bv.vm"; vn: "bv.vn"; vo: "bv.vo"; vp: "bv.vp"; vq: "bv.vq"; vr: "bv.vr"; vs: "bv.vs"; vt: "bv.vt"; vu: "bv.vu"; vv: "bv.vv"; vw: "bv.vw"; vx: "bv.vx"; vy: "bv.vy"; vz: "bv.vz"; wa: "bv.wa"; wb: "bv.wb"; wc: "bv.wc"; wd: "bv.wd"; we: "bv.we"; wf: "bv.wf"; wg: "bv.wg"; wh: "bv.wh"; wi: "bv.wi"; wj: "bv.wj"; wk: "bv.wk"; wl: "bv.wl"; wm: "bv.wm"; wn: "bv.wn"; wo: "bv.wo"; wp: "bv.wp"; wq: "bv.wq"; wr: "bv.wr"; ws: "bv.ws"; wt: "bv.wt"; wu: "bv.wu"; wv: "bv.wv"; ww: "bv.ww"; wx: "bv.wx"; wy: "bv.wy"; wz: "bv.wz"; xa: "bv.xa"; xb: "bv.xb"; xc: "bv.xc"; xd: "bv.xd"; xe: "bv.xe"; xf: "bv.xf"; xg: "bv.xg"; xh: "bv.xh"; xi: "bv.xi"; xj: "bv.xj"; xk: "bv.xk"; xl: "bv.xl"; xm: "bv.xm"; xn: "bv.xn"; xo: "bv.xo"; xp: "bv.xp"; xq: "bv.xq"; xr: "bv.xr"; xs: "bv.xs"; xt: "bv.xt"; xu: "bv.xu"; xv: "bv.xv"; xw: "bv.xw"; xx: "bv.xx"; xy: "bv.xy"; xz: "bv.xz"; ya: "bv.ya"; yb: "bv.yb"; yc: "bv.yc"; yd: "bv.yd"; ye: "bv.ye"; yf: "bv.yf"; yg: "bv.yg"; yh: "bv.yh"; yi: "bv.yi"; yj: "bv.yj"; yk: "bv.yk"; yl: "bv.yl"; ym: "bv.ym"; yn: "bv.yn"; yo: "bv.yo"; yp: "bv.yp"; yq: "bv.yq"; yr: "bv.yr"; ys: "bv.ys"; yt: "bv.yt"; yu: "bv.yu"; yv: "bv.yv"; yw: "bv.yw"; yx: "bv.yx"; yy: "bv.yy"; yz: "bv.yz"; za: "bv.za"; zb: "bv.zb"; zc: "bv.zc"; zd: "bv.zd"; ze: "bv.ze"; zf: "bv.zf"; zg: "bv.zg"; zh: "bv.zh"; zi: "bv.zi"; zj: "bv.zj"; zk: "bv.zk"; zl: "bv.zl"; zm: "bv.zm"; zn: "bv.zn"; zo: "bv.zo"; zp: "bv.zp"; zq: "bv.zq"; zr: "bv.zr"; zs: "bv.zs"; zt: "bv.zt"; zu: "bv.zu"; zv: "bv.zv"; zw: "bv.zw"; zx: "bv.zx"; zy: "bv.zy"; zz: "bv.zz"; }; bw: { aa: "bw.aa"; ab: "bw.ab"; ac: "bw.ac"; ad: "bw.ad"; ae: "bw.ae"; af: "bw.af"; ag: "bw.ag"; ah: "bw.ah"; ai: "bw.ai"; aj: "bw.aj"; ak: "bw.ak"; al: "bw.al"; am: "bw.am"; an: "bw.an"; ao: "bw.ao"; ap: "bw.ap"; aq: "bw.aq"; ar: "bw.ar"; as: "bw.as"; at: "bw.at"; au: "bw.au"; av: "bw.av"; aw: "bw.aw"; ax: "bw.ax"; ay: "bw.ay"; az: "bw.az"; ba: "bw.ba"; bb: "bw.bb"; bc: "bw.bc"; bd: "bw.bd"; be: "bw.be"; bf: "bw.bf"; bg: "bw.bg"; bh: "bw.bh"; bi: "bw.bi"; bj: "bw.bj"; bk: "bw.bk"; bl: "bw.bl"; bm: "bw.bm"; bn: "bw.bn"; bo: "bw.bo"; bp: "bw.bp"; bq: "bw.bq"; br: "bw.br"; bs: "bw.bs"; bt: "bw.bt"; bu: "bw.bu"; bv: "bw.bv"; bw: "bw.bw"; bx: "bw.bx"; by: "bw.by"; bz: "bw.bz"; ca: "bw.ca"; cb: "bw.cb"; cc: "bw.cc"; cd: "bw.cd"; ce: "bw.ce"; cf: "bw.cf"; cg: "bw.cg"; ch: "bw.ch"; ci: "bw.ci"; cj: "bw.cj"; ck: "bw.ck"; cl: "bw.cl"; cm: "bw.cm"; cn: "bw.cn"; co: "bw.co"; cp: "bw.cp"; cq: "bw.cq"; cr: "bw.cr"; cs: "bw.cs"; ct: "bw.ct"; cu: "bw.cu"; cv: "bw.cv"; cw: "bw.cw"; cx: "bw.cx"; cy: "bw.cy"; cz: "bw.cz"; da: "bw.da"; db: "bw.db"; dc: "bw.dc"; dd: "bw.dd"; de: "bw.de"; df: "bw.df"; dg: "bw.dg"; dh: "bw.dh"; di: "bw.di"; dj: "bw.dj"; dk: "bw.dk"; dl: "bw.dl"; dm: "bw.dm"; dn: "bw.dn"; do: "bw.do"; dp: "bw.dp"; dq: "bw.dq"; dr: "bw.dr"; ds: "bw.ds"; dt: "bw.dt"; du: "bw.du"; dv: "bw.dv"; dw: "bw.dw"; dx: "bw.dx"; dy: "bw.dy"; dz: "bw.dz"; ea: "bw.ea"; eb: "bw.eb"; ec: "bw.ec"; ed: "bw.ed"; ee: "bw.ee"; ef: "bw.ef"; eg: "bw.eg"; eh: "bw.eh"; ei: "bw.ei"; ej: "bw.ej"; ek: "bw.ek"; el: "bw.el"; em: "bw.em"; en: "bw.en"; eo: "bw.eo"; ep: "bw.ep"; eq: "bw.eq"; er: "bw.er"; es: "bw.es"; et: "bw.et"; eu: "bw.eu"; ev: "bw.ev"; ew: "bw.ew"; ex: "bw.ex"; ey: "bw.ey"; ez: "bw.ez"; fa: "bw.fa"; fb: "bw.fb"; fc: "bw.fc"; fd: "bw.fd"; fe: "bw.fe"; ff: "bw.ff"; fg: "bw.fg"; fh: "bw.fh"; fi: "bw.fi"; fj: "bw.fj"; fk: "bw.fk"; fl: "bw.fl"; fm: "bw.fm"; fn: "bw.fn"; fo: "bw.fo"; fp: "bw.fp"; fq: "bw.fq"; fr: "bw.fr"; fs: "bw.fs"; ft: "bw.ft"; fu: "bw.fu"; fv: "bw.fv"; fw: "bw.fw"; fx: "bw.fx"; fy: "bw.fy"; fz: "bw.fz"; ga: "bw.ga"; gb: "bw.gb"; gc: "bw.gc"; gd: "bw.gd"; ge: "bw.ge"; gf: "bw.gf"; gg: "bw.gg"; gh: "bw.gh"; gi: "bw.gi"; gj: "bw.gj"; gk: "bw.gk"; gl: "bw.gl"; gm: "bw.gm"; gn: "bw.gn"; go: "bw.go"; gp: "bw.gp"; gq: "bw.gq"; gr: "bw.gr"; gs: "bw.gs"; gt: "bw.gt"; gu: "bw.gu"; gv: "bw.gv"; gw: "bw.gw"; gx: "bw.gx"; gy: "bw.gy"; gz: "bw.gz"; ha: "bw.ha"; hb: "bw.hb"; hc: "bw.hc"; hd: "bw.hd"; he: "bw.he"; hf: "bw.hf"; hg: "bw.hg"; hh: "bw.hh"; hi: "bw.hi"; hj: "bw.hj"; hk: "bw.hk"; hl: "bw.hl"; hm: "bw.hm"; hn: "bw.hn"; ho: "bw.ho"; hp: "bw.hp"; hq: "bw.hq"; hr: "bw.hr"; hs: "bw.hs"; ht: "bw.ht"; hu: "bw.hu"; hv: "bw.hv"; hw: "bw.hw"; hx: "bw.hx"; hy: "bw.hy"; hz: "bw.hz"; ia: "bw.ia"; ib: "bw.ib"; ic: "bw.ic"; id: "bw.id"; ie: "bw.ie"; if: "bw.if"; ig: "bw.ig"; ih: "bw.ih"; ii: "bw.ii"; ij: "bw.ij"; ik: "bw.ik"; il: "bw.il"; im: "bw.im"; in: "bw.in"; io: "bw.io"; ip: "bw.ip"; iq: "bw.iq"; ir: "bw.ir"; is: "bw.is"; it: "bw.it"; iu: "bw.iu"; iv: "bw.iv"; iw: "bw.iw"; ix: "bw.ix"; iy: "bw.iy"; iz: "bw.iz"; ja: "bw.ja"; jb: "bw.jb"; jc: "bw.jc"; jd: "bw.jd"; je: "bw.je"; jf: "bw.jf"; jg: "bw.jg"; jh: "bw.jh"; ji: "bw.ji"; jj: "bw.jj"; jk: "bw.jk"; jl: "bw.jl"; jm: "bw.jm"; jn: "bw.jn"; jo: "bw.jo"; jp: "bw.jp"; jq: "bw.jq"; jr: "bw.jr"; js: "bw.js"; jt: "bw.jt"; ju: "bw.ju"; jv: "bw.jv"; jw: "bw.jw"; jx: "bw.jx"; jy: "bw.jy"; jz: "bw.jz"; ka: "bw.ka"; kb: "bw.kb"; kc: "bw.kc"; kd: "bw.kd"; ke: "bw.ke"; kf: "bw.kf"; kg: "bw.kg"; kh: "bw.kh"; ki: "bw.ki"; kj: "bw.kj"; kk: "bw.kk"; kl: "bw.kl"; km: "bw.km"; kn: "bw.kn"; ko: "bw.ko"; kp: "bw.kp"; kq: "bw.kq"; kr: "bw.kr"; ks: "bw.ks"; kt: "bw.kt"; ku: "bw.ku"; kv: "bw.kv"; kw: "bw.kw"; kx: "bw.kx"; ky: "bw.ky"; kz: "bw.kz"; la: "bw.la"; lb: "bw.lb"; lc: "bw.lc"; ld: "bw.ld"; le: "bw.le"; lf: "bw.lf"; lg: "bw.lg"; lh: "bw.lh"; li: "bw.li"; lj: "bw.lj"; lk: "bw.lk"; ll: "bw.ll"; lm: "bw.lm"; ln: "bw.ln"; lo: "bw.lo"; lp: "bw.lp"; lq: "bw.lq"; lr: "bw.lr"; ls: "bw.ls"; lt: "bw.lt"; lu: "bw.lu"; lv: "bw.lv"; lw: "bw.lw"; lx: "bw.lx"; ly: "bw.ly"; lz: "bw.lz"; ma: "bw.ma"; mb: "bw.mb"; mc: "bw.mc"; md: "bw.md"; me: "bw.me"; mf: "bw.mf"; mg: "bw.mg"; mh: "bw.mh"; mi: "bw.mi"; mj: "bw.mj"; mk: "bw.mk"; ml: "bw.ml"; mm: "bw.mm"; mn: "bw.mn"; mo: "bw.mo"; mp: "bw.mp"; mq: "bw.mq"; mr: "bw.mr"; ms: "bw.ms"; mt: "bw.mt"; mu: "bw.mu"; mv: "bw.mv"; mw: "bw.mw"; mx: "bw.mx"; my: "bw.my"; mz: "bw.mz"; na: "bw.na"; nb: "bw.nb"; nc: "bw.nc"; nd: "bw.nd"; ne: "bw.ne"; nf: "bw.nf"; ng: "bw.ng"; nh: "bw.nh"; ni: "bw.ni"; nj: "bw.nj"; nk: "bw.nk"; nl: "bw.nl"; nm: "bw.nm"; nn: "bw.nn"; no: "bw.no"; np: "bw.np"; nq: "bw.nq"; nr: "bw.nr"; ns: "bw.ns"; nt: "bw.nt"; nu: "bw.nu"; nv: "bw.nv"; nw: "bw.nw"; nx: "bw.nx"; ny: "bw.ny"; nz: "bw.nz"; oa: "bw.oa"; ob: "bw.ob"; oc: "bw.oc"; od: "bw.od"; oe: "bw.oe"; of: "bw.of"; og: "bw.og"; oh: "bw.oh"; oi: "bw.oi"; oj: "bw.oj"; ok: "bw.ok"; ol: "bw.ol"; om: "bw.om"; on: "bw.on"; oo: "bw.oo"; op: "bw.op"; oq: "bw.oq"; or: "bw.or"; os: "bw.os"; ot: "bw.ot"; ou: "bw.ou"; ov: "bw.ov"; ow: "bw.ow"; ox: "bw.ox"; oy: "bw.oy"; oz: "bw.oz"; pa: "bw.pa"; pb: "bw.pb"; pc: "bw.pc"; pd: "bw.pd"; pe: "bw.pe"; pf: "bw.pf"; pg: "bw.pg"; ph: "bw.ph"; pi: "bw.pi"; pj: "bw.pj"; pk: "bw.pk"; pl: "bw.pl"; pm: "bw.pm"; pn: "bw.pn"; po: "bw.po"; pp: "bw.pp"; pq: "bw.pq"; pr: "bw.pr"; ps: "bw.ps"; pt: "bw.pt"; pu: "bw.pu"; pv: "bw.pv"; pw: "bw.pw"; px: "bw.px"; py: "bw.py"; pz: "bw.pz"; qa: "bw.qa"; qb: "bw.qb"; qc: "bw.qc"; qd: "bw.qd"; qe: "bw.qe"; qf: "bw.qf"; qg: "bw.qg"; qh: "bw.qh"; qi: "bw.qi"; qj: "bw.qj"; qk: "bw.qk"; ql: "bw.ql"; qm: "bw.qm"; qn: "bw.qn"; qo: "bw.qo"; qp: "bw.qp"; qq: "bw.qq"; qr: "bw.qr"; qs: "bw.qs"; qt: "bw.qt"; qu: "bw.qu"; qv: "bw.qv"; qw: "bw.qw"; qx: "bw.qx"; qy: "bw.qy"; qz: "bw.qz"; ra: "bw.ra"; rb: "bw.rb"; rc: "bw.rc"; rd: "bw.rd"; re: "bw.re"; rf: "bw.rf"; rg: "bw.rg"; rh: "bw.rh"; ri: "bw.ri"; rj: "bw.rj"; rk: "bw.rk"; rl: "bw.rl"; rm: "bw.rm"; rn: "bw.rn"; ro: "bw.ro"; rp: "bw.rp"; rq: "bw.rq"; rr: "bw.rr"; rs: "bw.rs"; rt: "bw.rt"; ru: "bw.ru"; rv: "bw.rv"; rw: "bw.rw"; rx: "bw.rx"; ry: "bw.ry"; rz: "bw.rz"; sa: "bw.sa"; sb: "bw.sb"; sc: "bw.sc"; sd: "bw.sd"; se: "bw.se"; sf: "bw.sf"; sg: "bw.sg"; sh: "bw.sh"; si: "bw.si"; sj: "bw.sj"; sk: "bw.sk"; sl: "bw.sl"; sm: "bw.sm"; sn: "bw.sn"; so: "bw.so"; sp: "bw.sp"; sq: "bw.sq"; sr: "bw.sr"; ss: "bw.ss"; st: "bw.st"; su: "bw.su"; sv: "bw.sv"; sw: "bw.sw"; sx: "bw.sx"; sy: "bw.sy"; sz: "bw.sz"; ta: "bw.ta"; tb: "bw.tb"; tc: "bw.tc"; td: "bw.td"; te: "bw.te"; tf: "bw.tf"; tg: "bw.tg"; th: "bw.th"; ti: "bw.ti"; tj: "bw.tj"; tk: "bw.tk"; tl: "bw.tl"; tm: "bw.tm"; tn: "bw.tn"; to: "bw.to"; tp: "bw.tp"; tq: "bw.tq"; tr: "bw.tr"; ts: "bw.ts"; tt: "bw.tt"; tu: "bw.tu"; tv: "bw.tv"; tw: "bw.tw"; tx: "bw.tx"; ty: "bw.ty"; tz: "bw.tz"; ua: "bw.ua"; ub: "bw.ub"; uc: "bw.uc"; ud: "bw.ud"; ue: "bw.ue"; uf: "bw.uf"; ug: "bw.ug"; uh: "bw.uh"; ui: "bw.ui"; uj: "bw.uj"; uk: "bw.uk"; ul: "bw.ul"; um: "bw.um"; un: "bw.un"; uo: "bw.uo"; up: "bw.up"; uq: "bw.uq"; ur: "bw.ur"; us: "bw.us"; ut: "bw.ut"; uu: "bw.uu"; uv: "bw.uv"; uw: "bw.uw"; ux: "bw.ux"; uy: "bw.uy"; uz: "bw.uz"; va: "bw.va"; vb: "bw.vb"; vc: "bw.vc"; vd: "bw.vd"; ve: "bw.ve"; vf: "bw.vf"; vg: "bw.vg"; vh: "bw.vh"; vi: "bw.vi"; vj: "bw.vj"; vk: "bw.vk"; vl: "bw.vl"; vm: "bw.vm"; vn: "bw.vn"; vo: "bw.vo"; vp: "bw.vp"; vq: "bw.vq"; vr: "bw.vr"; vs: "bw.vs"; vt: "bw.vt"; vu: "bw.vu"; vv: "bw.vv"; vw: "bw.vw"; vx: "bw.vx"; vy: "bw.vy"; vz: "bw.vz"; wa: "bw.wa"; wb: "bw.wb"; wc: "bw.wc"; wd: "bw.wd"; we: "bw.we"; wf: "bw.wf"; wg: "bw.wg"; wh: "bw.wh"; wi: "bw.wi"; wj: "bw.wj"; wk: "bw.wk"; wl: "bw.wl"; wm: "bw.wm"; wn: "bw.wn"; wo: "bw.wo"; wp: "bw.wp"; wq: "bw.wq"; wr: "bw.wr"; ws: "bw.ws"; wt: "bw.wt"; wu: "bw.wu"; wv: "bw.wv"; ww: "bw.ww"; wx: "bw.wx"; wy: "bw.wy"; wz: "bw.wz"; xa: "bw.xa"; xb: "bw.xb"; xc: "bw.xc"; xd: "bw.xd"; xe: "bw.xe"; xf: "bw.xf"; xg: "bw.xg"; xh: "bw.xh"; xi: "bw.xi"; xj: "bw.xj"; xk: "bw.xk"; xl: "bw.xl"; xm: "bw.xm"; xn: "bw.xn"; xo: "bw.xo"; xp: "bw.xp"; xq: "bw.xq"; xr: "bw.xr"; xs: "bw.xs"; xt: "bw.xt"; xu: "bw.xu"; xv: "bw.xv"; xw: "bw.xw"; xx: "bw.xx"; xy: "bw.xy"; xz: "bw.xz"; ya: "bw.ya"; yb: "bw.yb"; yc: "bw.yc"; yd: "bw.yd"; ye: "bw.ye"; yf: "bw.yf"; yg: "bw.yg"; yh: "bw.yh"; yi: "bw.yi"; yj: "bw.yj"; yk: "bw.yk"; yl: "bw.yl"; ym: "bw.ym"; yn: "bw.yn"; yo: "bw.yo"; yp: "bw.yp"; yq: "bw.yq"; yr: "bw.yr"; ys: "bw.ys"; yt: "bw.yt"; yu: "bw.yu"; yv: "bw.yv"; yw: "bw.yw"; yx: "bw.yx"; yy: "bw.yy"; yz: "bw.yz"; za: "bw.za"; zb: "bw.zb"; zc: "bw.zc"; zd: "bw.zd"; ze: "bw.ze"; zf: "bw.zf"; zg: "bw.zg"; zh: "bw.zh"; zi: "bw.zi"; zj: "bw.zj"; zk: "bw.zk"; zl: "bw.zl"; zm: "bw.zm"; zn: "bw.zn"; zo: "bw.zo"; zp: "bw.zp"; zq: "bw.zq"; zr: "bw.zr"; zs: "bw.zs"; zt: "bw.zt"; zu: "bw.zu"; zv: "bw.zv"; zw: "bw.zw"; zx: "bw.zx"; zy: "bw.zy"; zz: "bw.zz"; }; bx: { aa: "bx.aa"; ab: "bx.ab"; ac: "bx.ac"; ad: "bx.ad"; ae: "bx.ae"; af: "bx.af"; ag: "bx.ag"; ah: "bx.ah"; ai: "bx.ai"; aj: "bx.aj"; ak: "bx.ak"; al: "bx.al"; am: "bx.am"; an: "bx.an"; ao: "bx.ao"; ap: "bx.ap"; aq: "bx.aq"; ar: "bx.ar"; as: "bx.as"; at: "bx.at"; au: "bx.au"; av: "bx.av"; aw: "bx.aw"; ax: "bx.ax"; ay: "bx.ay"; az: "bx.az"; ba: "bx.ba"; bb: "bx.bb"; bc: "bx.bc"; bd: "bx.bd"; be: "bx.be"; bf: "bx.bf"; bg: "bx.bg"; bh: "bx.bh"; bi: "bx.bi"; bj: "bx.bj"; bk: "bx.bk"; bl: "bx.bl"; bm: "bx.bm"; bn: "bx.bn"; bo: "bx.bo"; bp: "bx.bp"; bq: "bx.bq"; br: "bx.br"; bs: "bx.bs"; bt: "bx.bt"; bu: "bx.bu"; bv: "bx.bv"; bw: "bx.bw"; bx: "bx.bx"; by: "bx.by"; bz: "bx.bz"; ca: "bx.ca"; cb: "bx.cb"; cc: "bx.cc"; cd: "bx.cd"; ce: "bx.ce"; cf: "bx.cf"; cg: "bx.cg"; ch: "bx.ch"; ci: "bx.ci"; cj: "bx.cj"; ck: "bx.ck"; cl: "bx.cl"; cm: "bx.cm"; cn: "bx.cn"; co: "bx.co"; cp: "bx.cp"; cq: "bx.cq"; cr: "bx.cr"; cs: "bx.cs"; ct: "bx.ct"; cu: "bx.cu"; cv: "bx.cv"; cw: "bx.cw"; cx: "bx.cx"; cy: "bx.cy"; cz: "bx.cz"; da: "bx.da"; db: "bx.db"; dc: "bx.dc"; dd: "bx.dd"; de: "bx.de"; df: "bx.df"; dg: "bx.dg"; dh: "bx.dh"; di: "bx.di"; dj: "bx.dj"; dk: "bx.dk"; dl: "bx.dl"; dm: "bx.dm"; dn: "bx.dn"; do: "bx.do"; dp: "bx.dp"; dq: "bx.dq"; dr: "bx.dr"; ds: "bx.ds"; dt: "bx.dt"; du: "bx.du"; dv: "bx.dv"; dw: "bx.dw"; dx: "bx.dx"; dy: "bx.dy"; dz: "bx.dz"; ea: "bx.ea"; eb: "bx.eb"; ec: "bx.ec"; ed: "bx.ed"; ee: "bx.ee"; ef: "bx.ef"; eg: "bx.eg"; eh: "bx.eh"; ei: "bx.ei"; ej: "bx.ej"; ek: "bx.ek"; el: "bx.el"; em: "bx.em"; en: "bx.en"; eo: "bx.eo"; ep: "bx.ep"; eq: "bx.eq"; er: "bx.er"; es: "bx.es"; et: "bx.et"; eu: "bx.eu"; ev: "bx.ev"; ew: "bx.ew"; ex: "bx.ex"; ey: "bx.ey"; ez: "bx.ez"; fa: "bx.fa"; fb: "bx.fb"; fc: "bx.fc"; fd: "bx.fd"; fe: "bx.fe"; ff: "bx.ff"; fg: "bx.fg"; fh: "bx.fh"; fi: "bx.fi"; fj: "bx.fj"; fk: "bx.fk"; fl: "bx.fl"; fm: "bx.fm"; fn: "bx.fn"; fo: "bx.fo"; fp: "bx.fp"; fq: "bx.fq"; fr: "bx.fr"; fs: "bx.fs"; ft: "bx.ft"; fu: "bx.fu"; fv: "bx.fv"; fw: "bx.fw"; fx: "bx.fx"; fy: "bx.fy"; fz: "bx.fz"; ga: "bx.ga"; gb: "bx.gb"; gc: "bx.gc"; gd: "bx.gd"; ge: "bx.ge"; gf: "bx.gf"; gg: "bx.gg"; gh: "bx.gh"; gi: "bx.gi"; gj: "bx.gj"; gk: "bx.gk"; gl: "bx.gl"; gm: "bx.gm"; gn: "bx.gn"; go: "bx.go"; gp: "bx.gp"; gq: "bx.gq"; gr: "bx.gr"; gs: "bx.gs"; gt: "bx.gt"; gu: "bx.gu"; gv: "bx.gv"; gw: "bx.gw"; gx: "bx.gx"; gy: "bx.gy"; gz: "bx.gz"; ha: "bx.ha"; hb: "bx.hb"; hc: "bx.hc"; hd: "bx.hd"; he: "bx.he"; hf: "bx.hf"; hg: "bx.hg"; hh: "bx.hh"; hi: "bx.hi"; hj: "bx.hj"; hk: "bx.hk"; hl: "bx.hl"; hm: "bx.hm"; hn: "bx.hn"; ho: "bx.ho"; hp: "bx.hp"; hq: "bx.hq"; hr: "bx.hr"; hs: "bx.hs"; ht: "bx.ht"; hu: "bx.hu"; hv: "bx.hv"; hw: "bx.hw"; hx: "bx.hx"; hy: "bx.hy"; hz: "bx.hz"; ia: "bx.ia"; ib: "bx.ib"; ic: "bx.ic"; id: "bx.id"; ie: "bx.ie"; if: "bx.if"; ig: "bx.ig"; ih: "bx.ih"; ii: "bx.ii"; ij: "bx.ij"; ik: "bx.ik"; il: "bx.il"; im: "bx.im"; in: "bx.in"; io: "bx.io"; ip: "bx.ip"; iq: "bx.iq"; ir: "bx.ir"; is: "bx.is"; it: "bx.it"; iu: "bx.iu"; iv: "bx.iv"; iw: "bx.iw"; ix: "bx.ix"; iy: "bx.iy"; iz: "bx.iz"; ja: "bx.ja"; jb: "bx.jb"; jc: "bx.jc"; jd: "bx.jd"; je: "bx.je"; jf: "bx.jf"; jg: "bx.jg"; jh: "bx.jh"; ji: "bx.ji"; jj: "bx.jj"; jk: "bx.jk"; jl: "bx.jl"; jm: "bx.jm"; jn: "bx.jn"; jo: "bx.jo"; jp: "bx.jp"; jq: "bx.jq"; jr: "bx.jr"; js: "bx.js"; jt: "bx.jt"; ju: "bx.ju"; jv: "bx.jv"; jw: "bx.jw"; jx: "bx.jx"; jy: "bx.jy"; jz: "bx.jz"; ka: "bx.ka"; kb: "bx.kb"; kc: "bx.kc"; kd: "bx.kd"; ke: "bx.ke"; kf: "bx.kf"; kg: "bx.kg"; kh: "bx.kh"; ki: "bx.ki"; kj: "bx.kj"; kk: "bx.kk"; kl: "bx.kl"; km: "bx.km"; kn: "bx.kn"; ko: "bx.ko"; kp: "bx.kp"; kq: "bx.kq"; kr: "bx.kr"; ks: "bx.ks"; kt: "bx.kt"; ku: "bx.ku"; kv: "bx.kv"; kw: "bx.kw"; kx: "bx.kx"; ky: "bx.ky"; kz: "bx.kz"; la: "bx.la"; lb: "bx.lb"; lc: "bx.lc"; ld: "bx.ld"; le: "bx.le"; lf: "bx.lf"; lg: "bx.lg"; lh: "bx.lh"; li: "bx.li"; lj: "bx.lj"; lk: "bx.lk"; ll: "bx.ll"; lm: "bx.lm"; ln: "bx.ln"; lo: "bx.lo"; lp: "bx.lp"; lq: "bx.lq"; lr: "bx.lr"; ls: "bx.ls"; lt: "bx.lt"; lu: "bx.lu"; lv: "bx.lv"; lw: "bx.lw"; lx: "bx.lx"; ly: "bx.ly"; lz: "bx.lz"; ma: "bx.ma"; mb: "bx.mb"; mc: "bx.mc"; md: "bx.md"; me: "bx.me"; mf: "bx.mf"; mg: "bx.mg"; mh: "bx.mh"; mi: "bx.mi"; mj: "bx.mj"; mk: "bx.mk"; ml: "bx.ml"; mm: "bx.mm"; mn: "bx.mn"; mo: "bx.mo"; mp: "bx.mp"; mq: "bx.mq"; mr: "bx.mr"; ms: "bx.ms"; mt: "bx.mt"; mu: "bx.mu"; mv: "bx.mv"; mw: "bx.mw"; mx: "bx.mx"; my: "bx.my"; mz: "bx.mz"; na: "bx.na"; nb: "bx.nb"; nc: "bx.nc"; nd: "bx.nd"; ne: "bx.ne"; nf: "bx.nf"; ng: "bx.ng"; nh: "bx.nh"; ni: "bx.ni"; nj: "bx.nj"; nk: "bx.nk"; nl: "bx.nl"; nm: "bx.nm"; nn: "bx.nn"; no: "bx.no"; np: "bx.np"; nq: "bx.nq"; nr: "bx.nr"; ns: "bx.ns"; nt: "bx.nt"; nu: "bx.nu"; nv: "bx.nv"; nw: "bx.nw"; nx: "bx.nx"; ny: "bx.ny"; nz: "bx.nz"; oa: "bx.oa"; ob: "bx.ob"; oc: "bx.oc"; od: "bx.od"; oe: "bx.oe"; of: "bx.of"; og: "bx.og"; oh: "bx.oh"; oi: "bx.oi"; oj: "bx.oj"; ok: "bx.ok"; ol: "bx.ol"; om: "bx.om"; on: "bx.on"; oo: "bx.oo"; op: "bx.op"; oq: "bx.oq"; or: "bx.or"; os: "bx.os"; ot: "bx.ot"; ou: "bx.ou"; ov: "bx.ov"; ow: "bx.ow"; ox: "bx.ox"; oy: "bx.oy"; oz: "bx.oz"; pa: "bx.pa"; pb: "bx.pb"; pc: "bx.pc"; pd: "bx.pd"; pe: "bx.pe"; pf: "bx.pf"; pg: "bx.pg"; ph: "bx.ph"; pi: "bx.pi"; pj: "bx.pj"; pk: "bx.pk"; pl: "bx.pl"; pm: "bx.pm"; pn: "bx.pn"; po: "bx.po"; pp: "bx.pp"; pq: "bx.pq"; pr: "bx.pr"; ps: "bx.ps"; pt: "bx.pt"; pu: "bx.pu"; pv: "bx.pv"; pw: "bx.pw"; px: "bx.px"; py: "bx.py"; pz: "bx.pz"; qa: "bx.qa"; qb: "bx.qb"; qc: "bx.qc"; qd: "bx.qd"; qe: "bx.qe"; qf: "bx.qf"; qg: "bx.qg"; qh: "bx.qh"; qi: "bx.qi"; qj: "bx.qj"; qk: "bx.qk"; ql: "bx.ql"; qm: "bx.qm"; qn: "bx.qn"; qo: "bx.qo"; qp: "bx.qp"; qq: "bx.qq"; qr: "bx.qr"; qs: "bx.qs"; qt: "bx.qt"; qu: "bx.qu"; qv: "bx.qv"; qw: "bx.qw"; qx: "bx.qx"; qy: "bx.qy"; qz: "bx.qz"; ra: "bx.ra"; rb: "bx.rb"; rc: "bx.rc"; rd: "bx.rd"; re: "bx.re"; rf: "bx.rf"; rg: "bx.rg"; rh: "bx.rh"; ri: "bx.ri"; rj: "bx.rj"; rk: "bx.rk"; rl: "bx.rl"; rm: "bx.rm"; rn: "bx.rn"; ro: "bx.ro"; rp: "bx.rp"; rq: "bx.rq"; rr: "bx.rr"; rs: "bx.rs"; rt: "bx.rt"; ru: "bx.ru"; rv: "bx.rv"; rw: "bx.rw"; rx: "bx.rx"; ry: "bx.ry"; rz: "bx.rz"; sa: "bx.sa"; sb: "bx.sb"; sc: "bx.sc"; sd: "bx.sd"; se: "bx.se"; sf: "bx.sf"; sg: "bx.sg"; sh: "bx.sh"; si: "bx.si"; sj: "bx.sj"; sk: "bx.sk"; sl: "bx.sl"; sm: "bx.sm"; sn: "bx.sn"; so: "bx.so"; sp: "bx.sp"; sq: "bx.sq"; sr: "bx.sr"; ss: "bx.ss"; st: "bx.st"; su: "bx.su"; sv: "bx.sv"; sw: "bx.sw"; sx: "bx.sx"; sy: "bx.sy"; sz: "bx.sz"; ta: "bx.ta"; tb: "bx.tb"; tc: "bx.tc"; td: "bx.td"; te: "bx.te"; tf: "bx.tf"; tg: "bx.tg"; th: "bx.th"; ti: "bx.ti"; tj: "bx.tj"; tk: "bx.tk"; tl: "bx.tl"; tm: "bx.tm"; tn: "bx.tn"; to: "bx.to"; tp: "bx.tp"; tq: "bx.tq"; tr: "bx.tr"; ts: "bx.ts"; tt: "bx.tt"; tu: "bx.tu"; tv: "bx.tv"; tw: "bx.tw"; tx: "bx.tx"; ty: "bx.ty"; tz: "bx.tz"; ua: "bx.ua"; ub: "bx.ub"; uc: "bx.uc"; ud: "bx.ud"; ue: "bx.ue"; uf: "bx.uf"; ug: "bx.ug"; uh: "bx.uh"; ui: "bx.ui"; uj: "bx.uj"; uk: "bx.uk"; ul: "bx.ul"; um: "bx.um"; un: "bx.un"; uo: "bx.uo"; up: "bx.up"; uq: "bx.uq"; ur: "bx.ur"; us: "bx.us"; ut: "bx.ut"; uu: "bx.uu"; uv: "bx.uv"; uw: "bx.uw"; ux: "bx.ux"; uy: "bx.uy"; uz: "bx.uz"; va: "bx.va"; vb: "bx.vb"; vc: "bx.vc"; vd: "bx.vd"; ve: "bx.ve"; vf: "bx.vf"; vg: "bx.vg"; vh: "bx.vh"; vi: "bx.vi"; vj: "bx.vj"; vk: "bx.vk"; vl: "bx.vl"; vm: "bx.vm"; vn: "bx.vn"; vo: "bx.vo"; vp: "bx.vp"; vq: "bx.vq"; vr: "bx.vr"; vs: "bx.vs"; vt: "bx.vt"; vu: "bx.vu"; vv: "bx.vv"; vw: "bx.vw"; vx: "bx.vx"; vy: "bx.vy"; vz: "bx.vz"; wa: "bx.wa"; wb: "bx.wb"; wc: "bx.wc"; wd: "bx.wd"; we: "bx.we"; wf: "bx.wf"; wg: "bx.wg"; wh: "bx.wh"; wi: "bx.wi"; wj: "bx.wj"; wk: "bx.wk"; wl: "bx.wl"; wm: "bx.wm"; wn: "bx.wn"; wo: "bx.wo"; wp: "bx.wp"; wq: "bx.wq"; wr: "bx.wr"; ws: "bx.ws"; wt: "bx.wt"; wu: "bx.wu"; wv: "bx.wv"; ww: "bx.ww"; wx: "bx.wx"; wy: "bx.wy"; wz: "bx.wz"; xa: "bx.xa"; xb: "bx.xb"; xc: "bx.xc"; xd: "bx.xd"; xe: "bx.xe"; xf: "bx.xf"; xg: "bx.xg"; xh: "bx.xh"; xi: "bx.xi"; xj: "bx.xj"; xk: "bx.xk"; xl: "bx.xl"; xm: "bx.xm"; xn: "bx.xn"; xo: "bx.xo"; xp: "bx.xp"; xq: "bx.xq"; xr: "bx.xr"; xs: "bx.xs"; xt: "bx.xt"; xu: "bx.xu"; xv: "bx.xv"; xw: "bx.xw"; xx: "bx.xx"; xy: "bx.xy"; xz: "bx.xz"; ya: "bx.ya"; yb: "bx.yb"; yc: "bx.yc"; yd: "bx.yd"; ye: "bx.ye"; yf: "bx.yf"; yg: "bx.yg"; yh: "bx.yh"; yi: "bx.yi"; yj: "bx.yj"; yk: "bx.yk"; yl: "bx.yl"; ym: "bx.ym"; yn: "bx.yn"; yo: "bx.yo"; yp: "bx.yp"; yq: "bx.yq"; yr: "bx.yr"; ys: "bx.ys"; yt: "bx.yt"; yu: "bx.yu"; yv: "bx.yv"; yw: "bx.yw"; yx: "bx.yx"; yy: "bx.yy"; yz: "bx.yz"; za: "bx.za"; zb: "bx.zb"; zc: "bx.zc"; zd: "bx.zd"; ze: "bx.ze"; zf: "bx.zf"; zg: "bx.zg"; zh: "bx.zh"; zi: "bx.zi"; zj: "bx.zj"; zk: "bx.zk"; zl: "bx.zl"; zm: "bx.zm"; zn: "bx.zn"; zo: "bx.zo"; zp: "bx.zp"; zq: "bx.zq"; zr: "bx.zr"; zs: "bx.zs"; zt: "bx.zt"; zu: "bx.zu"; zv: "bx.zv"; zw: "bx.zw"; zx: "bx.zx"; zy: "bx.zy"; zz: "bx.zz"; }; by: { aa: "by.aa"; ab: "by.ab"; ac: "by.ac"; ad: "by.ad"; ae: "by.ae"; af: "by.af"; ag: "by.ag"; ah: "by.ah"; ai: "by.ai"; aj: "by.aj"; ak: "by.ak"; al: "by.al"; am: "by.am"; an: "by.an"; ao: "by.ao"; ap: "by.ap"; aq: "by.aq"; ar: "by.ar"; as: "by.as"; at: "by.at"; au: "by.au"; av: "by.av"; aw: "by.aw"; ax: "by.ax"; ay: "by.ay"; az: "by.az"; ba: "by.ba"; bb: "by.bb"; bc: "by.bc"; bd: "by.bd"; be: "by.be"; bf: "by.bf"; bg: "by.bg"; bh: "by.bh"; bi: "by.bi"; bj: "by.bj"; bk: "by.bk"; bl: "by.bl"; bm: "by.bm"; bn: "by.bn"; bo: "by.bo"; bp: "by.bp"; bq: "by.bq"; br: "by.br"; bs: "by.bs"; bt: "by.bt"; bu: "by.bu"; bv: "by.bv"; bw: "by.bw"; bx: "by.bx"; by: "by.by"; bz: "by.bz"; ca: "by.ca"; cb: "by.cb"; cc: "by.cc"; cd: "by.cd"; ce: "by.ce"; cf: "by.cf"; cg: "by.cg"; ch: "by.ch"; ci: "by.ci"; cj: "by.cj"; ck: "by.ck"; cl: "by.cl"; cm: "by.cm"; cn: "by.cn"; co: "by.co"; cp: "by.cp"; cq: "by.cq"; cr: "by.cr"; cs: "by.cs"; ct: "by.ct"; cu: "by.cu"; cv: "by.cv"; cw: "by.cw"; cx: "by.cx"; cy: "by.cy"; cz: "by.cz"; da: "by.da"; db: "by.db"; dc: "by.dc"; dd: "by.dd"; de: "by.de"; df: "by.df"; dg: "by.dg"; dh: "by.dh"; di: "by.di"; dj: "by.dj"; dk: "by.dk"; dl: "by.dl"; dm: "by.dm"; dn: "by.dn"; do: "by.do"; dp: "by.dp"; dq: "by.dq"; dr: "by.dr"; ds: "by.ds"; dt: "by.dt"; du: "by.du"; dv: "by.dv"; dw: "by.dw"; dx: "by.dx"; dy: "by.dy"; dz: "by.dz"; ea: "by.ea"; eb: "by.eb"; ec: "by.ec"; ed: "by.ed"; ee: "by.ee"; ef: "by.ef"; eg: "by.eg"; eh: "by.eh"; ei: "by.ei"; ej: "by.ej"; ek: "by.ek"; el: "by.el"; em: "by.em"; en: "by.en"; eo: "by.eo"; ep: "by.ep"; eq: "by.eq"; er: "by.er"; es: "by.es"; et: "by.et"; eu: "by.eu"; ev: "by.ev"; ew: "by.ew"; ex: "by.ex"; ey: "by.ey"; ez: "by.ez"; fa: "by.fa"; fb: "by.fb"; fc: "by.fc"; fd: "by.fd"; fe: "by.fe"; ff: "by.ff"; fg: "by.fg"; fh: "by.fh"; fi: "by.fi"; fj: "by.fj"; fk: "by.fk"; fl: "by.fl"; fm: "by.fm"; fn: "by.fn"; fo: "by.fo"; fp: "by.fp"; fq: "by.fq"; fr: "by.fr"; fs: "by.fs"; ft: "by.ft"; fu: "by.fu"; fv: "by.fv"; fw: "by.fw"; fx: "by.fx"; fy: "by.fy"; fz: "by.fz"; ga: "by.ga"; gb: "by.gb"; gc: "by.gc"; gd: "by.gd"; ge: "by.ge"; gf: "by.gf"; gg: "by.gg"; gh: "by.gh"; gi: "by.gi"; gj: "by.gj"; gk: "by.gk"; gl: "by.gl"; gm: "by.gm"; gn: "by.gn"; go: "by.go"; gp: "by.gp"; gq: "by.gq"; gr: "by.gr"; gs: "by.gs"; gt: "by.gt"; gu: "by.gu"; gv: "by.gv"; gw: "by.gw"; gx: "by.gx"; gy: "by.gy"; gz: "by.gz"; ha: "by.ha"; hb: "by.hb"; hc: "by.hc"; hd: "by.hd"; he: "by.he"; hf: "by.hf"; hg: "by.hg"; hh: "by.hh"; hi: "by.hi"; hj: "by.hj"; hk: "by.hk"; hl: "by.hl"; hm: "by.hm"; hn: "by.hn"; ho: "by.ho"; hp: "by.hp"; hq: "by.hq"; hr: "by.hr"; hs: "by.hs"; ht: "by.ht"; hu: "by.hu"; hv: "by.hv"; hw: "by.hw"; hx: "by.hx"; hy: "by.hy"; hz: "by.hz"; ia: "by.ia"; ib: "by.ib"; ic: "by.ic"; id: "by.id"; ie: "by.ie"; if: "by.if"; ig: "by.ig"; ih: "by.ih"; ii: "by.ii"; ij: "by.ij"; ik: "by.ik"; il: "by.il"; im: "by.im"; in: "by.in"; io: "by.io"; ip: "by.ip"; iq: "by.iq"; ir: "by.ir"; is: "by.is"; it: "by.it"; iu: "by.iu"; iv: "by.iv"; iw: "by.iw"; ix: "by.ix"; iy: "by.iy"; iz: "by.iz"; ja: "by.ja"; jb: "by.jb"; jc: "by.jc"; jd: "by.jd"; je: "by.je"; jf: "by.jf"; jg: "by.jg"; jh: "by.jh"; ji: "by.ji"; jj: "by.jj"; jk: "by.jk"; jl: "by.jl"; jm: "by.jm"; jn: "by.jn"; jo: "by.jo"; jp: "by.jp"; jq: "by.jq"; jr: "by.jr"; js: "by.js"; jt: "by.jt"; ju: "by.ju"; jv: "by.jv"; jw: "by.jw"; jx: "by.jx"; jy: "by.jy"; jz: "by.jz"; ka: "by.ka"; kb: "by.kb"; kc: "by.kc"; kd: "by.kd"; ke: "by.ke"; kf: "by.kf"; kg: "by.kg"; kh: "by.kh"; ki: "by.ki"; kj: "by.kj"; kk: "by.kk"; kl: "by.kl"; km: "by.km"; kn: "by.kn"; ko: "by.ko"; kp: "by.kp"; kq: "by.kq"; kr: "by.kr"; ks: "by.ks"; kt: "by.kt"; ku: "by.ku"; kv: "by.kv"; kw: "by.kw"; kx: "by.kx"; ky: "by.ky"; kz: "by.kz"; la: "by.la"; lb: "by.lb"; lc: "by.lc"; ld: "by.ld"; le: "by.le"; lf: "by.lf"; lg: "by.lg"; lh: "by.lh"; li: "by.li"; lj: "by.lj"; lk: "by.lk"; ll: "by.ll"; lm: "by.lm"; ln: "by.ln"; lo: "by.lo"; lp: "by.lp"; lq: "by.lq"; lr: "by.lr"; ls: "by.ls"; lt: "by.lt"; lu: "by.lu"; lv: "by.lv"; lw: "by.lw"; lx: "by.lx"; ly: "by.ly"; lz: "by.lz"; ma: "by.ma"; mb: "by.mb"; mc: "by.mc"; md: "by.md"; me: "by.me"; mf: "by.mf"; mg: "by.mg"; mh: "by.mh"; mi: "by.mi"; mj: "by.mj"; mk: "by.mk"; ml: "by.ml"; mm: "by.mm"; mn: "by.mn"; mo: "by.mo"; mp: "by.mp"; mq: "by.mq"; mr: "by.mr"; ms: "by.ms"; mt: "by.mt"; mu: "by.mu"; mv: "by.mv"; mw: "by.mw"; mx: "by.mx"; my: "by.my"; mz: "by.mz"; na: "by.na"; nb: "by.nb"; nc: "by.nc"; nd: "by.nd"; ne: "by.ne"; nf: "by.nf"; ng: "by.ng"; nh: "by.nh"; ni: "by.ni"; nj: "by.nj"; nk: "by.nk"; nl: "by.nl"; nm: "by.nm"; nn: "by.nn"; no: "by.no"; np: "by.np"; nq: "by.nq"; nr: "by.nr"; ns: "by.ns"; nt: "by.nt"; nu: "by.nu"; nv: "by.nv"; nw: "by.nw"; nx: "by.nx"; ny: "by.ny"; nz: "by.nz"; oa: "by.oa"; ob: "by.ob"; oc: "by.oc"; od: "by.od"; oe: "by.oe"; of: "by.of"; og: "by.og"; oh: "by.oh"; oi: "by.oi"; oj: "by.oj"; ok: "by.ok"; ol: "by.ol"; om: "by.om"; on: "by.on"; oo: "by.oo"; op: "by.op"; oq: "by.oq"; or: "by.or"; os: "by.os"; ot: "by.ot"; ou: "by.ou"; ov: "by.ov"; ow: "by.ow"; ox: "by.ox"; oy: "by.oy"; oz: "by.oz"; pa: "by.pa"; pb: "by.pb"; pc: "by.pc"; pd: "by.pd"; pe: "by.pe"; pf: "by.pf"; pg: "by.pg"; ph: "by.ph"; pi: "by.pi"; pj: "by.pj"; pk: "by.pk"; pl: "by.pl"; pm: "by.pm"; pn: "by.pn"; po: "by.po"; pp: "by.pp"; pq: "by.pq"; pr: "by.pr"; ps: "by.ps"; pt: "by.pt"; pu: "by.pu"; pv: "by.pv"; pw: "by.pw"; px: "by.px"; py: "by.py"; pz: "by.pz"; qa: "by.qa"; qb: "by.qb"; qc: "by.qc"; qd: "by.qd"; qe: "by.qe"; qf: "by.qf"; qg: "by.qg"; qh: "by.qh"; qi: "by.qi"; qj: "by.qj"; qk: "by.qk"; ql: "by.ql"; qm: "by.qm"; qn: "by.qn"; qo: "by.qo"; qp: "by.qp"; qq: "by.qq"; qr: "by.qr"; qs: "by.qs"; qt: "by.qt"; qu: "by.qu"; qv: "by.qv"; qw: "by.qw"; qx: "by.qx"; qy: "by.qy"; qz: "by.qz"; ra: "by.ra"; rb: "by.rb"; rc: "by.rc"; rd: "by.rd"; re: "by.re"; rf: "by.rf"; rg: "by.rg"; rh: "by.rh"; ri: "by.ri"; rj: "by.rj"; rk: "by.rk"; rl: "by.rl"; rm: "by.rm"; rn: "by.rn"; ro: "by.ro"; rp: "by.rp"; rq: "by.rq"; rr: "by.rr"; rs: "by.rs"; rt: "by.rt"; ru: "by.ru"; rv: "by.rv"; rw: "by.rw"; rx: "by.rx"; ry: "by.ry"; rz: "by.rz"; sa: "by.sa"; sb: "by.sb"; sc: "by.sc"; sd: "by.sd"; se: "by.se"; sf: "by.sf"; sg: "by.sg"; sh: "by.sh"; si: "by.si"; sj: "by.sj"; sk: "by.sk"; sl: "by.sl"; sm: "by.sm"; sn: "by.sn"; so: "by.so"; sp: "by.sp"; sq: "by.sq"; sr: "by.sr"; ss: "by.ss"; st: "by.st"; su: "by.su"; sv: "by.sv"; sw: "by.sw"; sx: "by.sx"; sy: "by.sy"; sz: "by.sz"; ta: "by.ta"; tb: "by.tb"; tc: "by.tc"; td: "by.td"; te: "by.te"; tf: "by.tf"; tg: "by.tg"; th: "by.th"; ti: "by.ti"; tj: "by.tj"; tk: "by.tk"; tl: "by.tl"; tm: "by.tm"; tn: "by.tn"; to: "by.to"; tp: "by.tp"; tq: "by.tq"; tr: "by.tr"; ts: "by.ts"; tt: "by.tt"; tu: "by.tu"; tv: "by.tv"; tw: "by.tw"; tx: "by.tx"; ty: "by.ty"; tz: "by.tz"; ua: "by.ua"; ub: "by.ub"; uc: "by.uc"; ud: "by.ud"; ue: "by.ue"; uf: "by.uf"; ug: "by.ug"; uh: "by.uh"; ui: "by.ui"; uj: "by.uj"; uk: "by.uk"; ul: "by.ul"; um: "by.um"; un: "by.un"; uo: "by.uo"; up: "by.up"; uq: "by.uq"; ur: "by.ur"; us: "by.us"; ut: "by.ut"; uu: "by.uu"; uv: "by.uv"; uw: "by.uw"; ux: "by.ux"; uy: "by.uy"; uz: "by.uz"; va: "by.va"; vb: "by.vb"; vc: "by.vc"; vd: "by.vd"; ve: "by.ve"; vf: "by.vf"; vg: "by.vg"; vh: "by.vh"; vi: "by.vi"; vj: "by.vj"; vk: "by.vk"; vl: "by.vl"; vm: "by.vm"; vn: "by.vn"; vo: "by.vo"; vp: "by.vp"; vq: "by.vq"; vr: "by.vr"; vs: "by.vs"; vt: "by.vt"; vu: "by.vu"; vv: "by.vv"; vw: "by.vw"; vx: "by.vx"; vy: "by.vy"; vz: "by.vz"; wa: "by.wa"; wb: "by.wb"; wc: "by.wc"; wd: "by.wd"; we: "by.we"; wf: "by.wf"; wg: "by.wg"; wh: "by.wh"; wi: "by.wi"; wj: "by.wj"; wk: "by.wk"; wl: "by.wl"; wm: "by.wm"; wn: "by.wn"; wo: "by.wo"; wp: "by.wp"; wq: "by.wq"; wr: "by.wr"; ws: "by.ws"; wt: "by.wt"; wu: "by.wu"; wv: "by.wv"; ww: "by.ww"; wx: "by.wx"; wy: "by.wy"; wz: "by.wz"; xa: "by.xa"; xb: "by.xb"; xc: "by.xc"; xd: "by.xd"; xe: "by.xe"; xf: "by.xf"; xg: "by.xg"; xh: "by.xh"; xi: "by.xi"; xj: "by.xj"; xk: "by.xk"; xl: "by.xl"; xm: "by.xm"; xn: "by.xn"; xo: "by.xo"; xp: "by.xp"; xq: "by.xq"; xr: "by.xr"; xs: "by.xs"; xt: "by.xt"; xu: "by.xu"; xv: "by.xv"; xw: "by.xw"; xx: "by.xx"; xy: "by.xy"; xz: "by.xz"; ya: "by.ya"; yb: "by.yb"; yc: "by.yc"; yd: "by.yd"; ye: "by.ye"; yf: "by.yf"; yg: "by.yg"; yh: "by.yh"; yi: "by.yi"; yj: "by.yj"; yk: "by.yk"; yl: "by.yl"; ym: "by.ym"; yn: "by.yn"; yo: "by.yo"; yp: "by.yp"; yq: "by.yq"; yr: "by.yr"; ys: "by.ys"; yt: "by.yt"; yu: "by.yu"; yv: "by.yv"; yw: "by.yw"; yx: "by.yx"; yy: "by.yy"; yz: "by.yz"; za: "by.za"; zb: "by.zb"; zc: "by.zc"; zd: "by.zd"; ze: "by.ze"; zf: "by.zf"; zg: "by.zg"; zh: "by.zh"; zi: "by.zi"; zj: "by.zj"; zk: "by.zk"; zl: "by.zl"; zm: "by.zm"; zn: "by.zn"; zo: "by.zo"; zp: "by.zp"; zq: "by.zq"; zr: "by.zr"; zs: "by.zs"; zt: "by.zt"; zu: "by.zu"; zv: "by.zv"; zw: "by.zw"; zx: "by.zx"; zy: "by.zy"; zz: "by.zz"; }; bz: { aa: "bz.aa"; ab: "bz.ab"; ac: "bz.ac"; ad: "bz.ad"; ae: "bz.ae"; af: "bz.af"; ag: "bz.ag"; ah: "bz.ah"; ai: "bz.ai"; aj: "bz.aj"; ak: "bz.ak"; al: "bz.al"; am: "bz.am"; an: "bz.an"; ao: "bz.ao"; ap: "bz.ap"; aq: "bz.aq"; ar: "bz.ar"; as: "bz.as"; at: "bz.at"; au: "bz.au"; av: "bz.av"; aw: "bz.aw"; ax: "bz.ax"; ay: "bz.ay"; az: "bz.az"; ba: "bz.ba"; bb: "bz.bb"; bc: "bz.bc"; bd: "bz.bd"; be: "bz.be"; bf: "bz.bf"; bg: "bz.bg"; bh: "bz.bh"; bi: "bz.bi"; bj: "bz.bj"; bk: "bz.bk"; bl: "bz.bl"; bm: "bz.bm"; bn: "bz.bn"; bo: "bz.bo"; bp: "bz.bp"; bq: "bz.bq"; br: "bz.br"; bs: "bz.bs"; bt: "bz.bt"; bu: "bz.bu"; bv: "bz.bv"; bw: "bz.bw"; bx: "bz.bx"; by: "bz.by"; bz: "bz.bz"; ca: "bz.ca"; cb: "bz.cb"; cc: "bz.cc"; cd: "bz.cd"; ce: "bz.ce"; cf: "bz.cf"; cg: "bz.cg"; ch: "bz.ch"; ci: "bz.ci"; cj: "bz.cj"; ck: "bz.ck"; cl: "bz.cl"; cm: "bz.cm"; cn: "bz.cn"; co: "bz.co"; cp: "bz.cp"; cq: "bz.cq"; cr: "bz.cr"; cs: "bz.cs"; ct: "bz.ct"; cu: "bz.cu"; cv: "bz.cv"; cw: "bz.cw"; cx: "bz.cx"; cy: "bz.cy"; cz: "bz.cz"; da: "bz.da"; db: "bz.db"; dc: "bz.dc"; dd: "bz.dd"; de: "bz.de"; df: "bz.df"; dg: "bz.dg"; dh: "bz.dh"; di: "bz.di"; dj: "bz.dj"; dk: "bz.dk"; dl: "bz.dl"; dm: "bz.dm"; dn: "bz.dn"; do: "bz.do"; dp: "bz.dp"; dq: "bz.dq"; dr: "bz.dr"; ds: "bz.ds"; dt: "bz.dt"; du: "bz.du"; dv: "bz.dv"; dw: "bz.dw"; dx: "bz.dx"; dy: "bz.dy"; dz: "bz.dz"; ea: "bz.ea"; eb: "bz.eb"; ec: "bz.ec"; ed: "bz.ed"; ee: "bz.ee"; ef: "bz.ef"; eg: "bz.eg"; eh: "bz.eh"; ei: "bz.ei"; ej: "bz.ej"; ek: "bz.ek"; el: "bz.el"; em: "bz.em"; en: "bz.en"; eo: "bz.eo"; ep: "bz.ep"; eq: "bz.eq"; er: "bz.er"; es: "bz.es"; et: "bz.et"; eu: "bz.eu"; ev: "bz.ev"; ew: "bz.ew"; ex: "bz.ex"; ey: "bz.ey"; ez: "bz.ez"; fa: "bz.fa"; fb: "bz.fb"; fc: "bz.fc"; fd: "bz.fd"; fe: "bz.fe"; ff: "bz.ff"; fg: "bz.fg"; fh: "bz.fh"; fi: "bz.fi"; fj: "bz.fj"; fk: "bz.fk"; fl: "bz.fl"; fm: "bz.fm"; fn: "bz.fn"; fo: "bz.fo"; fp: "bz.fp"; fq: "bz.fq"; fr: "bz.fr"; fs: "bz.fs"; ft: "bz.ft"; fu: "bz.fu"; fv: "bz.fv"; fw: "bz.fw"; fx: "bz.fx"; fy: "bz.fy"; fz: "bz.fz"; ga: "bz.ga"; gb: "bz.gb"; gc: "bz.gc"; gd: "bz.gd"; ge: "bz.ge"; gf: "bz.gf"; gg: "bz.gg"; gh: "bz.gh"; gi: "bz.gi"; gj: "bz.gj"; gk: "bz.gk"; gl: "bz.gl"; gm: "bz.gm"; gn: "bz.gn"; go: "bz.go"; gp: "bz.gp"; gq: "bz.gq"; gr: "bz.gr"; gs: "bz.gs"; gt: "bz.gt"; gu: "bz.gu"; gv: "bz.gv"; gw: "bz.gw"; gx: "bz.gx"; gy: "bz.gy"; gz: "bz.gz"; ha: "bz.ha"; hb: "bz.hb"; hc: "bz.hc"; hd: "bz.hd"; he: "bz.he"; hf: "bz.hf"; hg: "bz.hg"; hh: "bz.hh"; hi: "bz.hi"; hj: "bz.hj"; hk: "bz.hk"; hl: "bz.hl"; hm: "bz.hm"; hn: "bz.hn"; ho: "bz.ho"; hp: "bz.hp"; hq: "bz.hq"; hr: "bz.hr"; hs: "bz.hs"; ht: "bz.ht"; hu: "bz.hu"; hv: "bz.hv"; hw: "bz.hw"; hx: "bz.hx"; hy: "bz.hy"; hz: "bz.hz"; ia: "bz.ia"; ib: "bz.ib"; ic: "bz.ic"; id: "bz.id"; ie: "bz.ie"; if: "bz.if"; ig: "bz.ig"; ih: "bz.ih"; ii: "bz.ii"; ij: "bz.ij"; ik: "bz.ik"; il: "bz.il"; im: "bz.im"; in: "bz.in"; io: "bz.io"; ip: "bz.ip"; iq: "bz.iq"; ir: "bz.ir"; is: "bz.is"; it: "bz.it"; iu: "bz.iu"; iv: "bz.iv"; iw: "bz.iw"; ix: "bz.ix"; iy: "bz.iy"; iz: "bz.iz"; ja: "bz.ja"; jb: "bz.jb"; jc: "bz.jc"; jd: "bz.jd"; je: "bz.je"; jf: "bz.jf"; jg: "bz.jg"; jh: "bz.jh"; ji: "bz.ji"; jj: "bz.jj"; jk: "bz.jk"; jl: "bz.jl"; jm: "bz.jm"; jn: "bz.jn"; jo: "bz.jo"; jp: "bz.jp"; jq: "bz.jq"; jr: "bz.jr"; js: "bz.js"; jt: "bz.jt"; ju: "bz.ju"; jv: "bz.jv"; jw: "bz.jw"; jx: "bz.jx"; jy: "bz.jy"; jz: "bz.jz"; ka: "bz.ka"; kb: "bz.kb"; kc: "bz.kc"; kd: "bz.kd"; ke: "bz.ke"; kf: "bz.kf"; kg: "bz.kg"; kh: "bz.kh"; ki: "bz.ki"; kj: "bz.kj"; kk: "bz.kk"; kl: "bz.kl"; km: "bz.km"; kn: "bz.kn"; ko: "bz.ko"; kp: "bz.kp"; kq: "bz.kq"; kr: "bz.kr"; ks: "bz.ks"; kt: "bz.kt"; ku: "bz.ku"; kv: "bz.kv"; kw: "bz.kw"; kx: "bz.kx"; ky: "bz.ky"; kz: "bz.kz"; la: "bz.la"; lb: "bz.lb"; lc: "bz.lc"; ld: "bz.ld"; le: "bz.le"; lf: "bz.lf"; lg: "bz.lg"; lh: "bz.lh"; li: "bz.li"; lj: "bz.lj"; lk: "bz.lk"; ll: "bz.ll"; lm: "bz.lm"; ln: "bz.ln"; lo: "bz.lo"; lp: "bz.lp"; lq: "bz.lq"; lr: "bz.lr"; ls: "bz.ls"; lt: "bz.lt"; lu: "bz.lu"; lv: "bz.lv"; lw: "bz.lw"; lx: "bz.lx"; ly: "bz.ly"; lz: "bz.lz"; ma: "bz.ma"; mb: "bz.mb"; mc: "bz.mc"; md: "bz.md"; me: "bz.me"; mf: "bz.mf"; mg: "bz.mg"; mh: "bz.mh"; mi: "bz.mi"; mj: "bz.mj"; mk: "bz.mk"; ml: "bz.ml"; mm: "bz.mm"; mn: "bz.mn"; mo: "bz.mo"; mp: "bz.mp"; mq: "bz.mq"; mr: "bz.mr"; ms: "bz.ms"; mt: "bz.mt"; mu: "bz.mu"; mv: "bz.mv"; mw: "bz.mw"; mx: "bz.mx"; my: "bz.my"; mz: "bz.mz"; na: "bz.na"; nb: "bz.nb"; nc: "bz.nc"; nd: "bz.nd"; ne: "bz.ne"; nf: "bz.nf"; ng: "bz.ng"; nh: "bz.nh"; ni: "bz.ni"; nj: "bz.nj"; nk: "bz.nk"; nl: "bz.nl"; nm: "bz.nm"; nn: "bz.nn"; no: "bz.no"; np: "bz.np"; nq: "bz.nq"; nr: "bz.nr"; ns: "bz.ns"; nt: "bz.nt"; nu: "bz.nu"; nv: "bz.nv"; nw: "bz.nw"; nx: "bz.nx"; ny: "bz.ny"; nz: "bz.nz"; oa: "bz.oa"; ob: "bz.ob"; oc: "bz.oc"; od: "bz.od"; oe: "bz.oe"; of: "bz.of"; og: "bz.og"; oh: "bz.oh"; oi: "bz.oi"; oj: "bz.oj"; ok: "bz.ok"; ol: "bz.ol"; om: "bz.om"; on: "bz.on"; oo: "bz.oo"; op: "bz.op"; oq: "bz.oq"; or: "bz.or"; os: "bz.os"; ot: "bz.ot"; ou: "bz.ou"; ov: "bz.ov"; ow: "bz.ow"; ox: "bz.ox"; oy: "bz.oy"; oz: "bz.oz"; pa: "bz.pa"; pb: "bz.pb"; pc: "bz.pc"; pd: "bz.pd"; pe: "bz.pe"; pf: "bz.pf"; pg: "bz.pg"; ph: "bz.ph"; pi: "bz.pi"; pj: "bz.pj"; pk: "bz.pk"; pl: "bz.pl"; pm: "bz.pm"; pn: "bz.pn"; po: "bz.po"; pp: "bz.pp"; pq: "bz.pq"; pr: "bz.pr"; ps: "bz.ps"; pt: "bz.pt"; pu: "bz.pu"; pv: "bz.pv"; pw: "bz.pw"; px: "bz.px"; py: "bz.py"; pz: "bz.pz"; qa: "bz.qa"; qb: "bz.qb"; qc: "bz.qc"; qd: "bz.qd"; qe: "bz.qe"; qf: "bz.qf"; qg: "bz.qg"; qh: "bz.qh"; qi: "bz.qi"; qj: "bz.qj"; qk: "bz.qk"; ql: "bz.ql"; qm: "bz.qm"; qn: "bz.qn"; qo: "bz.qo"; qp: "bz.qp"; qq: "bz.qq"; qr: "bz.qr"; qs: "bz.qs"; qt: "bz.qt"; qu: "bz.qu"; qv: "bz.qv"; qw: "bz.qw"; qx: "bz.qx"; qy: "bz.qy"; qz: "bz.qz"; ra: "bz.ra"; rb: "bz.rb"; rc: "bz.rc"; rd: "bz.rd"; re: "bz.re"; rf: "bz.rf"; rg: "bz.rg"; rh: "bz.rh"; ri: "bz.ri"; rj: "bz.rj"; rk: "bz.rk"; rl: "bz.rl"; rm: "bz.rm"; rn: "bz.rn"; ro: "bz.ro"; rp: "bz.rp"; rq: "bz.rq"; rr: "bz.rr"; rs: "bz.rs"; rt: "bz.rt"; ru: "bz.ru"; rv: "bz.rv"; rw: "bz.rw"; rx: "bz.rx"; ry: "bz.ry"; rz: "bz.rz"; sa: "bz.sa"; sb: "bz.sb"; sc: "bz.sc"; sd: "bz.sd"; se: "bz.se"; sf: "bz.sf"; sg: "bz.sg"; sh: "bz.sh"; si: "bz.si"; sj: "bz.sj"; sk: "bz.sk"; sl: "bz.sl"; sm: "bz.sm"; sn: "bz.sn"; so: "bz.so"; sp: "bz.sp"; sq: "bz.sq"; sr: "bz.sr"; ss: "bz.ss"; st: "bz.st"; su: "bz.su"; sv: "bz.sv"; sw: "bz.sw"; sx: "bz.sx"; sy: "bz.sy"; sz: "bz.sz"; ta: "bz.ta"; tb: "bz.tb"; tc: "bz.tc"; td: "bz.td"; te: "bz.te"; tf: "bz.tf"; tg: "bz.tg"; th: "bz.th"; ti: "bz.ti"; tj: "bz.tj"; tk: "bz.tk"; tl: "bz.tl"; tm: "bz.tm"; tn: "bz.tn"; to: "bz.to"; tp: "bz.tp"; tq: "bz.tq"; tr: "bz.tr"; ts: "bz.ts"; tt: "bz.tt"; tu: "bz.tu"; tv: "bz.tv"; tw: "bz.tw"; tx: "bz.tx"; ty: "bz.ty"; tz: "bz.tz"; ua: "bz.ua"; ub: "bz.ub"; uc: "bz.uc"; ud: "bz.ud"; ue: "bz.ue"; uf: "bz.uf"; ug: "bz.ug"; uh: "bz.uh"; ui: "bz.ui"; uj: "bz.uj"; uk: "bz.uk"; ul: "bz.ul"; um: "bz.um"; un: "bz.un"; uo: "bz.uo"; up: "bz.up"; uq: "bz.uq"; ur: "bz.ur"; us: "bz.us"; ut: "bz.ut"; uu: "bz.uu"; uv: "bz.uv"; uw: "bz.uw"; ux: "bz.ux"; uy: "bz.uy"; uz: "bz.uz"; va: "bz.va"; vb: "bz.vb"; vc: "bz.vc"; vd: "bz.vd"; ve: "bz.ve"; vf: "bz.vf"; vg: "bz.vg"; vh: "bz.vh"; vi: "bz.vi"; vj: "bz.vj"; vk: "bz.vk"; vl: "bz.vl"; vm: "bz.vm"; vn: "bz.vn"; vo: "bz.vo"; vp: "bz.vp"; vq: "bz.vq"; vr: "bz.vr"; vs: "bz.vs"; vt: "bz.vt"; vu: "bz.vu"; vv: "bz.vv"; vw: "bz.vw"; vx: "bz.vx"; vy: "bz.vy"; vz: "bz.vz"; wa: "bz.wa"; wb: "bz.wb"; wc: "bz.wc"; wd: "bz.wd"; we: "bz.we"; wf: "bz.wf"; wg: "bz.wg"; wh: "bz.wh"; wi: "bz.wi"; wj: "bz.wj"; wk: "bz.wk"; wl: "bz.wl"; wm: "bz.wm"; wn: "bz.wn"; wo: "bz.wo"; wp: "bz.wp"; wq: "bz.wq"; wr: "bz.wr"; ws: "bz.ws"; wt: "bz.wt"; wu: "bz.wu"; wv: "bz.wv"; ww: "bz.ww"; wx: "bz.wx"; wy: "bz.wy"; wz: "bz.wz"; xa: "bz.xa"; xb: "bz.xb"; xc: "bz.xc"; xd: "bz.xd"; xe: "bz.xe"; xf: "bz.xf"; xg: "bz.xg"; xh: "bz.xh"; xi: "bz.xi"; xj: "bz.xj"; xk: "bz.xk"; xl: "bz.xl"; xm: "bz.xm"; xn: "bz.xn"; xo: "bz.xo"; xp: "bz.xp"; xq: "bz.xq"; xr: "bz.xr"; xs: "bz.xs"; xt: "bz.xt"; xu: "bz.xu"; xv: "bz.xv"; xw: "bz.xw"; xx: "bz.xx"; xy: "bz.xy"; xz: "bz.xz"; ya: "bz.ya"; yb: "bz.yb"; yc: "bz.yc"; yd: "bz.yd"; ye: "bz.ye"; yf: "bz.yf"; yg: "bz.yg"; yh: "bz.yh"; yi: "bz.yi"; yj: "bz.yj"; yk: "bz.yk"; yl: "bz.yl"; ym: "bz.ym"; yn: "bz.yn"; yo: "bz.yo"; yp: "bz.yp"; yq: "bz.yq"; yr: "bz.yr"; ys: "bz.ys"; yt: "bz.yt"; yu: "bz.yu"; yv: "bz.yv"; yw: "bz.yw"; yx: "bz.yx"; yy: "bz.yy"; yz: "bz.yz"; za: "bz.za"; zb: "bz.zb"; zc: "bz.zc"; zd: "bz.zd"; ze: "bz.ze"; zf: "bz.zf"; zg: "bz.zg"; zh: "bz.zh"; zi: "bz.zi"; zj: "bz.zj"; zk: "bz.zk"; zl: "bz.zl"; zm: "bz.zm"; zn: "bz.zn"; zo: "bz.zo"; zp: "bz.zp"; zq: "bz.zq"; zr: "bz.zr"; zs: "bz.zs"; zt: "bz.zt"; zu: "bz.zu"; zv: "bz.zv"; zw: "bz.zw"; zx: "bz.zx"; zy: "bz.zy"; zz: "bz.zz"; }; ca: { aa: "ca.aa"; ab: "ca.ab"; ac: "ca.ac"; ad: "ca.ad"; ae: "ca.ae"; af: "ca.af"; ag: "ca.ag"; ah: "ca.ah"; ai: "ca.ai"; aj: "ca.aj"; ak: "ca.ak"; al: "ca.al"; am: "ca.am"; an: "ca.an"; ao: "ca.ao"; ap: "ca.ap"; aq: "ca.aq"; ar: "ca.ar"; as: "ca.as"; at: "ca.at"; au: "ca.au"; av: "ca.av"; aw: "ca.aw"; ax: "ca.ax"; ay: "ca.ay"; az: "ca.az"; ba: "ca.ba"; bb: "ca.bb"; bc: "ca.bc"; bd: "ca.bd"; be: "ca.be"; bf: "ca.bf"; bg: "ca.bg"; bh: "ca.bh"; bi: "ca.bi"; bj: "ca.bj"; bk: "ca.bk"; bl: "ca.bl"; bm: "ca.bm"; bn: "ca.bn"; bo: "ca.bo"; bp: "ca.bp"; bq: "ca.bq"; br: "ca.br"; bs: "ca.bs"; bt: "ca.bt"; bu: "ca.bu"; bv: "ca.bv"; bw: "ca.bw"; bx: "ca.bx"; by: "ca.by"; bz: "ca.bz"; ca: "ca.ca"; cb: "ca.cb"; cc: "ca.cc"; cd: "ca.cd"; ce: "ca.ce"; cf: "ca.cf"; cg: "ca.cg"; ch: "ca.ch"; ci: "ca.ci"; cj: "ca.cj"; ck: "ca.ck"; cl: "ca.cl"; cm: "ca.cm"; cn: "ca.cn"; co: "ca.co"; cp: "ca.cp"; cq: "ca.cq"; cr: "ca.cr"; cs: "ca.cs"; ct: "ca.ct"; cu: "ca.cu"; cv: "ca.cv"; cw: "ca.cw"; cx: "ca.cx"; cy: "ca.cy"; cz: "ca.cz"; da: "ca.da"; db: "ca.db"; dc: "ca.dc"; dd: "ca.dd"; de: "ca.de"; df: "ca.df"; dg: "ca.dg"; dh: "ca.dh"; di: "ca.di"; dj: "ca.dj"; dk: "ca.dk"; dl: "ca.dl"; dm: "ca.dm"; dn: "ca.dn"; do: "ca.do"; dp: "ca.dp"; dq: "ca.dq"; dr: "ca.dr"; ds: "ca.ds"; dt: "ca.dt"; du: "ca.du"; dv: "ca.dv"; dw: "ca.dw"; dx: "ca.dx"; dy: "ca.dy"; dz: "ca.dz"; ea: "ca.ea"; eb: "ca.eb"; ec: "ca.ec"; ed: "ca.ed"; ee: "ca.ee"; ef: "ca.ef"; eg: "ca.eg"; eh: "ca.eh"; ei: "ca.ei"; ej: "ca.ej"; ek: "ca.ek"; el: "ca.el"; em: "ca.em"; en: "ca.en"; eo: "ca.eo"; ep: "ca.ep"; eq: "ca.eq"; er: "ca.er"; es: "ca.es"; et: "ca.et"; eu: "ca.eu"; ev: "ca.ev"; ew: "ca.ew"; ex: "ca.ex"; ey: "ca.ey"; ez: "ca.ez"; fa: "ca.fa"; fb: "ca.fb"; fc: "ca.fc"; fd: "ca.fd"; fe: "ca.fe"; ff: "ca.ff"; fg: "ca.fg"; fh: "ca.fh"; fi: "ca.fi"; fj: "ca.fj"; fk: "ca.fk"; fl: "ca.fl"; fm: "ca.fm"; fn: "ca.fn"; fo: "ca.fo"; fp: "ca.fp"; fq: "ca.fq"; fr: "ca.fr"; fs: "ca.fs"; ft: "ca.ft"; fu: "ca.fu"; fv: "ca.fv"; fw: "ca.fw"; fx: "ca.fx"; fy: "ca.fy"; fz: "ca.fz"; ga: "ca.ga"; gb: "ca.gb"; gc: "ca.gc"; gd: "ca.gd"; ge: "ca.ge"; gf: "ca.gf"; gg: "ca.gg"; gh: "ca.gh"; gi: "ca.gi"; gj: "ca.gj"; gk: "ca.gk"; gl: "ca.gl"; gm: "ca.gm"; gn: "ca.gn"; go: "ca.go"; gp: "ca.gp"; gq: "ca.gq"; gr: "ca.gr"; gs: "ca.gs"; gt: "ca.gt"; gu: "ca.gu"; gv: "ca.gv"; gw: "ca.gw"; gx: "ca.gx"; gy: "ca.gy"; gz: "ca.gz"; ha: "ca.ha"; hb: "ca.hb"; hc: "ca.hc"; hd: "ca.hd"; he: "ca.he"; hf: "ca.hf"; hg: "ca.hg"; hh: "ca.hh"; hi: "ca.hi"; hj: "ca.hj"; hk: "ca.hk"; hl: "ca.hl"; hm: "ca.hm"; hn: "ca.hn"; ho: "ca.ho"; hp: "ca.hp"; hq: "ca.hq"; hr: "ca.hr"; hs: "ca.hs"; ht: "ca.ht"; hu: "ca.hu"; hv: "ca.hv"; hw: "ca.hw"; hx: "ca.hx"; hy: "ca.hy"; hz: "ca.hz"; ia: "ca.ia"; ib: "ca.ib"; ic: "ca.ic"; id: "ca.id"; ie: "ca.ie"; if: "ca.if"; ig: "ca.ig"; ih: "ca.ih"; ii: "ca.ii"; ij: "ca.ij"; ik: "ca.ik"; il: "ca.il"; im: "ca.im"; in: "ca.in"; io: "ca.io"; ip: "ca.ip"; iq: "ca.iq"; ir: "ca.ir"; is: "ca.is"; it: "ca.it"; iu: "ca.iu"; iv: "ca.iv"; iw: "ca.iw"; ix: "ca.ix"; iy: "ca.iy"; iz: "ca.iz"; ja: "ca.ja"; jb: "ca.jb"; jc: "ca.jc"; jd: "ca.jd"; je: "ca.je"; jf: "ca.jf"; jg: "ca.jg"; jh: "ca.jh"; ji: "ca.ji"; jj: "ca.jj"; jk: "ca.jk"; jl: "ca.jl"; jm: "ca.jm"; jn: "ca.jn"; jo: "ca.jo"; jp: "ca.jp"; jq: "ca.jq"; jr: "ca.jr"; js: "ca.js"; jt: "ca.jt"; ju: "ca.ju"; jv: "ca.jv"; jw: "ca.jw"; jx: "ca.jx"; jy: "ca.jy"; jz: "ca.jz"; ka: "ca.ka"; kb: "ca.kb"; kc: "ca.kc"; kd: "ca.kd"; ke: "ca.ke"; kf: "ca.kf"; kg: "ca.kg"; kh: "ca.kh"; ki: "ca.ki"; kj: "ca.kj"; kk: "ca.kk"; kl: "ca.kl"; km: "ca.km"; kn: "ca.kn"; ko: "ca.ko"; kp: "ca.kp"; kq: "ca.kq"; kr: "ca.kr"; ks: "ca.ks"; kt: "ca.kt"; ku: "ca.ku"; kv: "ca.kv"; kw: "ca.kw"; kx: "ca.kx"; ky: "ca.ky"; kz: "ca.kz"; la: "ca.la"; lb: "ca.lb"; lc: "ca.lc"; ld: "ca.ld"; le: "ca.le"; lf: "ca.lf"; lg: "ca.lg"; lh: "ca.lh"; li: "ca.li"; lj: "ca.lj"; lk: "ca.lk"; ll: "ca.ll"; lm: "ca.lm"; ln: "ca.ln"; lo: "ca.lo"; lp: "ca.lp"; lq: "ca.lq"; lr: "ca.lr"; ls: "ca.ls"; lt: "ca.lt"; lu: "ca.lu"; lv: "ca.lv"; lw: "ca.lw"; lx: "ca.lx"; ly: "ca.ly"; lz: "ca.lz"; ma: "ca.ma"; mb: "ca.mb"; mc: "ca.mc"; md: "ca.md"; me: "ca.me"; mf: "ca.mf"; mg: "ca.mg"; mh: "ca.mh"; mi: "ca.mi"; mj: "ca.mj"; mk: "ca.mk"; ml: "ca.ml"; mm: "ca.mm"; mn: "ca.mn"; mo: "ca.mo"; mp: "ca.mp"; mq: "ca.mq"; mr: "ca.mr"; ms: "ca.ms"; mt: "ca.mt"; mu: "ca.mu"; mv: "ca.mv"; mw: "ca.mw"; mx: "ca.mx"; my: "ca.my"; mz: "ca.mz"; na: "ca.na"; nb: "ca.nb"; nc: "ca.nc"; nd: "ca.nd"; ne: "ca.ne"; nf: "ca.nf"; ng: "ca.ng"; nh: "ca.nh"; ni: "ca.ni"; nj: "ca.nj"; nk: "ca.nk"; nl: "ca.nl"; nm: "ca.nm"; nn: "ca.nn"; no: "ca.no"; np: "ca.np"; nq: "ca.nq"; nr: "ca.nr"; ns: "ca.ns"; nt: "ca.nt"; nu: "ca.nu"; nv: "ca.nv"; nw: "ca.nw"; nx: "ca.nx"; ny: "ca.ny"; nz: "ca.nz"; oa: "ca.oa"; ob: "ca.ob"; oc: "ca.oc"; od: "ca.od"; oe: "ca.oe"; of: "ca.of"; og: "ca.og"; oh: "ca.oh"; oi: "ca.oi"; oj: "ca.oj"; ok: "ca.ok"; ol: "ca.ol"; om: "ca.om"; on: "ca.on"; oo: "ca.oo"; op: "ca.op"; oq: "ca.oq"; or: "ca.or"; os: "ca.os"; ot: "ca.ot"; ou: "ca.ou"; ov: "ca.ov"; ow: "ca.ow"; ox: "ca.ox"; oy: "ca.oy"; oz: "ca.oz"; pa: "ca.pa"; pb: "ca.pb"; pc: "ca.pc"; pd: "ca.pd"; pe: "ca.pe"; pf: "ca.pf"; pg: "ca.pg"; ph: "ca.ph"; pi: "ca.pi"; pj: "ca.pj"; pk: "ca.pk"; pl: "ca.pl"; pm: "ca.pm"; pn: "ca.pn"; po: "ca.po"; pp: "ca.pp"; pq: "ca.pq"; pr: "ca.pr"; ps: "ca.ps"; pt: "ca.pt"; pu: "ca.pu"; pv: "ca.pv"; pw: "ca.pw"; px: "ca.px"; py: "ca.py"; pz: "ca.pz"; qa: "ca.qa"; qb: "ca.qb"; qc: "ca.qc"; qd: "ca.qd"; qe: "ca.qe"; qf: "ca.qf"; qg: "ca.qg"; qh: "ca.qh"; qi: "ca.qi"; qj: "ca.qj"; qk: "ca.qk"; ql: "ca.ql"; qm: "ca.qm"; qn: "ca.qn"; qo: "ca.qo"; qp: "ca.qp"; qq: "ca.qq"; qr: "ca.qr"; qs: "ca.qs"; qt: "ca.qt"; qu: "ca.qu"; qv: "ca.qv"; qw: "ca.qw"; qx: "ca.qx"; qy: "ca.qy"; qz: "ca.qz"; ra: "ca.ra"; rb: "ca.rb"; rc: "ca.rc"; rd: "ca.rd"; re: "ca.re"; rf: "ca.rf"; rg: "ca.rg"; rh: "ca.rh"; ri: "ca.ri"; rj: "ca.rj"; rk: "ca.rk"; rl: "ca.rl"; rm: "ca.rm"; rn: "ca.rn"; ro: "ca.ro"; rp: "ca.rp"; rq: "ca.rq"; rr: "ca.rr"; rs: "ca.rs"; rt: "ca.rt"; ru: "ca.ru"; rv: "ca.rv"; rw: "ca.rw"; rx: "ca.rx"; ry: "ca.ry"; rz: "ca.rz"; sa: "ca.sa"; sb: "ca.sb"; sc: "ca.sc"; sd: "ca.sd"; se: "ca.se"; sf: "ca.sf"; sg: "ca.sg"; sh: "ca.sh"; si: "ca.si"; sj: "ca.sj"; sk: "ca.sk"; sl: "ca.sl"; sm: "ca.sm"; sn: "ca.sn"; so: "ca.so"; sp: "ca.sp"; sq: "ca.sq"; sr: "ca.sr"; ss: "ca.ss"; st: "ca.st"; su: "ca.su"; sv: "ca.sv"; sw: "ca.sw"; sx: "ca.sx"; sy: "ca.sy"; sz: "ca.sz"; ta: "ca.ta"; tb: "ca.tb"; tc: "ca.tc"; td: "ca.td"; te: "ca.te"; tf: "ca.tf"; tg: "ca.tg"; th: "ca.th"; ti: "ca.ti"; tj: "ca.tj"; tk: "ca.tk"; tl: "ca.tl"; tm: "ca.tm"; tn: "ca.tn"; to: "ca.to"; tp: "ca.tp"; tq: "ca.tq"; tr: "ca.tr"; ts: "ca.ts"; tt: "ca.tt"; tu: "ca.tu"; tv: "ca.tv"; tw: "ca.tw"; tx: "ca.tx"; ty: "ca.ty"; tz: "ca.tz"; ua: "ca.ua"; ub: "ca.ub"; uc: "ca.uc"; ud: "ca.ud"; ue: "ca.ue"; uf: "ca.uf"; ug: "ca.ug"; uh: "ca.uh"; ui: "ca.ui"; uj: "ca.uj"; uk: "ca.uk"; ul: "ca.ul"; um: "ca.um"; un: "ca.un"; uo: "ca.uo"; up: "ca.up"; uq: "ca.uq"; ur: "ca.ur"; us: "ca.us"; ut: "ca.ut"; uu: "ca.uu"; uv: "ca.uv"; uw: "ca.uw"; ux: "ca.ux"; uy: "ca.uy"; uz: "ca.uz"; va: "ca.va"; vb: "ca.vb"; vc: "ca.vc"; vd: "ca.vd"; ve: "ca.ve"; vf: "ca.vf"; vg: "ca.vg"; vh: "ca.vh"; vi: "ca.vi"; vj: "ca.vj"; vk: "ca.vk"; vl: "ca.vl"; vm: "ca.vm"; vn: "ca.vn"; vo: "ca.vo"; vp: "ca.vp"; vq: "ca.vq"; vr: "ca.vr"; vs: "ca.vs"; vt: "ca.vt"; vu: "ca.vu"; vv: "ca.vv"; vw: "ca.vw"; vx: "ca.vx"; vy: "ca.vy"; vz: "ca.vz"; wa: "ca.wa"; wb: "ca.wb"; wc: "ca.wc"; wd: "ca.wd"; we: "ca.we"; wf: "ca.wf"; wg: "ca.wg"; wh: "ca.wh"; wi: "ca.wi"; wj: "ca.wj"; wk: "ca.wk"; wl: "ca.wl"; wm: "ca.wm"; wn: "ca.wn"; wo: "ca.wo"; wp: "ca.wp"; wq: "ca.wq"; wr: "ca.wr"; ws: "ca.ws"; wt: "ca.wt"; wu: "ca.wu"; wv: "ca.wv"; ww: "ca.ww"; wx: "ca.wx"; wy: "ca.wy"; wz: "ca.wz"; xa: "ca.xa"; xb: "ca.xb"; xc: "ca.xc"; xd: "ca.xd"; xe: "ca.xe"; xf: "ca.xf"; xg: "ca.xg"; xh: "ca.xh"; xi: "ca.xi"; xj: "ca.xj"; xk: "ca.xk"; xl: "ca.xl"; xm: "ca.xm"; xn: "ca.xn"; xo: "ca.xo"; xp: "ca.xp"; xq: "ca.xq"; xr: "ca.xr"; xs: "ca.xs"; xt: "ca.xt"; xu: "ca.xu"; xv: "ca.xv"; xw: "ca.xw"; xx: "ca.xx"; xy: "ca.xy"; xz: "ca.xz"; ya: "ca.ya"; yb: "ca.yb"; yc: "ca.yc"; yd: "ca.yd"; ye: "ca.ye"; yf: "ca.yf"; yg: "ca.yg"; yh: "ca.yh"; yi: "ca.yi"; yj: "ca.yj"; yk: "ca.yk"; yl: "ca.yl"; ym: "ca.ym"; yn: "ca.yn"; yo: "ca.yo"; yp: "ca.yp"; yq: "ca.yq"; yr: "ca.yr"; ys: "ca.ys"; yt: "ca.yt"; yu: "ca.yu"; yv: "ca.yv"; yw: "ca.yw"; yx: "ca.yx"; yy: "ca.yy"; yz: "ca.yz"; za: "ca.za"; zb: "ca.zb"; zc: "ca.zc"; zd: "ca.zd"; ze: "ca.ze"; zf: "ca.zf"; zg: "ca.zg"; zh: "ca.zh"; zi: "ca.zi"; zj: "ca.zj"; zk: "ca.zk"; zl: "ca.zl"; zm: "ca.zm"; zn: "ca.zn"; zo: "ca.zo"; zp: "ca.zp"; zq: "ca.zq"; zr: "ca.zr"; zs: "ca.zs"; zt: "ca.zt"; zu: "ca.zu"; zv: "ca.zv"; zw: "ca.zw"; zx: "ca.zx"; zy: "ca.zy"; zz: "ca.zz"; }; cb: { aa: "cb.aa"; ab: "cb.ab"; ac: "cb.ac"; ad: "cb.ad"; ae: "cb.ae"; af: "cb.af"; ag: "cb.ag"; ah: "cb.ah"; ai: "cb.ai"; aj: "cb.aj"; ak: "cb.ak"; al: "cb.al"; am: "cb.am"; an: "cb.an"; ao: "cb.ao"; ap: "cb.ap"; aq: "cb.aq"; ar: "cb.ar"; as: "cb.as"; at: "cb.at"; au: "cb.au"; av: "cb.av"; aw: "cb.aw"; ax: "cb.ax"; ay: "cb.ay"; az: "cb.az"; ba: "cb.ba"; bb: "cb.bb"; bc: "cb.bc"; bd: "cb.bd"; be: "cb.be"; bf: "cb.bf"; bg: "cb.bg"; bh: "cb.bh"; bi: "cb.bi"; bj: "cb.bj"; bk: "cb.bk"; bl: "cb.bl"; bm: "cb.bm"; bn: "cb.bn"; bo: "cb.bo"; bp: "cb.bp"; bq: "cb.bq"; br: "cb.br"; bs: "cb.bs"; bt: "cb.bt"; bu: "cb.bu"; bv: "cb.bv"; bw: "cb.bw"; bx: "cb.bx"; by: "cb.by"; bz: "cb.bz"; ca: "cb.ca"; cb: "cb.cb"; cc: "cb.cc"; cd: "cb.cd"; ce: "cb.ce"; cf: "cb.cf"; cg: "cb.cg"; ch: "cb.ch"; ci: "cb.ci"; cj: "cb.cj"; ck: "cb.ck"; cl: "cb.cl"; cm: "cb.cm"; cn: "cb.cn"; co: "cb.co"; cp: "cb.cp"; cq: "cb.cq"; cr: "cb.cr"; cs: "cb.cs"; ct: "cb.ct"; cu: "cb.cu"; cv: "cb.cv"; cw: "cb.cw"; cx: "cb.cx"; cy: "cb.cy"; cz: "cb.cz"; da: "cb.da"; db: "cb.db"; dc: "cb.dc"; dd: "cb.dd"; de: "cb.de"; df: "cb.df"; dg: "cb.dg"; dh: "cb.dh"; di: "cb.di"; dj: "cb.dj"; dk: "cb.dk"; dl: "cb.dl"; dm: "cb.dm"; dn: "cb.dn"; do: "cb.do"; dp: "cb.dp"; dq: "cb.dq"; dr: "cb.dr"; ds: "cb.ds"; dt: "cb.dt"; du: "cb.du"; dv: "cb.dv"; dw: "cb.dw"; dx: "cb.dx"; dy: "cb.dy"; dz: "cb.dz"; ea: "cb.ea"; eb: "cb.eb"; ec: "cb.ec"; ed: "cb.ed"; ee: "cb.ee"; ef: "cb.ef"; eg: "cb.eg"; eh: "cb.eh"; ei: "cb.ei"; ej: "cb.ej"; ek: "cb.ek"; el: "cb.el"; em: "cb.em"; en: "cb.en"; eo: "cb.eo"; ep: "cb.ep"; eq: "cb.eq"; er: "cb.er"; es: "cb.es"; et: "cb.et"; eu: "cb.eu"; ev: "cb.ev"; ew: "cb.ew"; ex: "cb.ex"; ey: "cb.ey"; ez: "cb.ez"; fa: "cb.fa"; fb: "cb.fb"; fc: "cb.fc"; fd: "cb.fd"; fe: "cb.fe"; ff: "cb.ff"; fg: "cb.fg"; fh: "cb.fh"; fi: "cb.fi"; fj: "cb.fj"; fk: "cb.fk"; fl: "cb.fl"; fm: "cb.fm"; fn: "cb.fn"; fo: "cb.fo"; fp: "cb.fp"; fq: "cb.fq"; fr: "cb.fr"; fs: "cb.fs"; ft: "cb.ft"; fu: "cb.fu"; fv: "cb.fv"; fw: "cb.fw"; fx: "cb.fx"; fy: "cb.fy"; fz: "cb.fz"; ga: "cb.ga"; gb: "cb.gb"; gc: "cb.gc"; gd: "cb.gd"; ge: "cb.ge"; gf: "cb.gf"; gg: "cb.gg"; gh: "cb.gh"; gi: "cb.gi"; gj: "cb.gj"; gk: "cb.gk"; gl: "cb.gl"; gm: "cb.gm"; gn: "cb.gn"; go: "cb.go"; gp: "cb.gp"; gq: "cb.gq"; gr: "cb.gr"; gs: "cb.gs"; gt: "cb.gt"; gu: "cb.gu"; gv: "cb.gv"; gw: "cb.gw"; gx: "cb.gx"; gy: "cb.gy"; gz: "cb.gz"; ha: "cb.ha"; hb: "cb.hb"; hc: "cb.hc"; hd: "cb.hd"; he: "cb.he"; hf: "cb.hf"; hg: "cb.hg"; hh: "cb.hh"; hi: "cb.hi"; hj: "cb.hj"; hk: "cb.hk"; hl: "cb.hl"; hm: "cb.hm"; hn: "cb.hn"; ho: "cb.ho"; hp: "cb.hp"; hq: "cb.hq"; hr: "cb.hr"; hs: "cb.hs"; ht: "cb.ht"; hu: "cb.hu"; hv: "cb.hv"; hw: "cb.hw"; hx: "cb.hx"; hy: "cb.hy"; hz: "cb.hz"; ia: "cb.ia"; ib: "cb.ib"; ic: "cb.ic"; id: "cb.id"; ie: "cb.ie"; if: "cb.if"; ig: "cb.ig"; ih: "cb.ih"; ii: "cb.ii"; ij: "cb.ij"; ik: "cb.ik"; il: "cb.il"; im: "cb.im"; in: "cb.in"; io: "cb.io"; ip: "cb.ip"; iq: "cb.iq"; ir: "cb.ir"; is: "cb.is"; it: "cb.it"; iu: "cb.iu"; iv: "cb.iv"; iw: "cb.iw"; ix: "cb.ix"; iy: "cb.iy"; iz: "cb.iz"; ja: "cb.ja"; jb: "cb.jb"; jc: "cb.jc"; jd: "cb.jd"; je: "cb.je"; jf: "cb.jf"; jg: "cb.jg"; jh: "cb.jh"; ji: "cb.ji"; jj: "cb.jj"; jk: "cb.jk"; jl: "cb.jl"; jm: "cb.jm"; jn: "cb.jn"; jo: "cb.jo"; jp: "cb.jp"; jq: "cb.jq"; jr: "cb.jr"; js: "cb.js"; jt: "cb.jt"; ju: "cb.ju"; jv: "cb.jv"; jw: "cb.jw"; jx: "cb.jx"; jy: "cb.jy"; jz: "cb.jz"; ka: "cb.ka"; kb: "cb.kb"; kc: "cb.kc"; kd: "cb.kd"; ke: "cb.ke"; kf: "cb.kf"; kg: "cb.kg"; kh: "cb.kh"; ki: "cb.ki"; kj: "cb.kj"; kk: "cb.kk"; kl: "cb.kl"; km: "cb.km"; kn: "cb.kn"; ko: "cb.ko"; kp: "cb.kp"; kq: "cb.kq"; kr: "cb.kr"; ks: "cb.ks"; kt: "cb.kt"; ku: "cb.ku"; kv: "cb.kv"; kw: "cb.kw"; kx: "cb.kx"; ky: "cb.ky"; kz: "cb.kz"; la: "cb.la"; lb: "cb.lb"; lc: "cb.lc"; ld: "cb.ld"; le: "cb.le"; lf: "cb.lf"; lg: "cb.lg"; lh: "cb.lh"; li: "cb.li"; lj: "cb.lj"; lk: "cb.lk"; ll: "cb.ll"; lm: "cb.lm"; ln: "cb.ln"; lo: "cb.lo"; lp: "cb.lp"; lq: "cb.lq"; lr: "cb.lr"; ls: "cb.ls"; lt: "cb.lt"; lu: "cb.lu"; lv: "cb.lv"; lw: "cb.lw"; lx: "cb.lx"; ly: "cb.ly"; lz: "cb.lz"; ma: "cb.ma"; mb: "cb.mb"; mc: "cb.mc"; md: "cb.md"; me: "cb.me"; mf: "cb.mf"; mg: "cb.mg"; mh: "cb.mh"; mi: "cb.mi"; mj: "cb.mj"; mk: "cb.mk"; ml: "cb.ml"; mm: "cb.mm"; mn: "cb.mn"; mo: "cb.mo"; mp: "cb.mp"; mq: "cb.mq"; mr: "cb.mr"; ms: "cb.ms"; mt: "cb.mt"; mu: "cb.mu"; mv: "cb.mv"; mw: "cb.mw"; mx: "cb.mx"; my: "cb.my"; mz: "cb.mz"; na: "cb.na"; nb: "cb.nb"; nc: "cb.nc"; nd: "cb.nd"; ne: "cb.ne"; nf: "cb.nf"; ng: "cb.ng"; nh: "cb.nh"; ni: "cb.ni"; nj: "cb.nj"; nk: "cb.nk"; nl: "cb.nl"; nm: "cb.nm"; nn: "cb.nn"; no: "cb.no"; np: "cb.np"; nq: "cb.nq"; nr: "cb.nr"; ns: "cb.ns"; nt: "cb.nt"; nu: "cb.nu"; nv: "cb.nv"; nw: "cb.nw"; nx: "cb.nx"; ny: "cb.ny"; nz: "cb.nz"; oa: "cb.oa"; ob: "cb.ob"; oc: "cb.oc"; od: "cb.od"; oe: "cb.oe"; of: "cb.of"; og: "cb.og"; oh: "cb.oh"; oi: "cb.oi"; oj: "cb.oj"; ok: "cb.ok"; ol: "cb.ol"; om: "cb.om"; on: "cb.on"; oo: "cb.oo"; op: "cb.op"; oq: "cb.oq"; or: "cb.or"; os: "cb.os"; ot: "cb.ot"; ou: "cb.ou"; ov: "cb.ov"; ow: "cb.ow"; ox: "cb.ox"; oy: "cb.oy"; oz: "cb.oz"; pa: "cb.pa"; pb: "cb.pb"; pc: "cb.pc"; pd: "cb.pd"; pe: "cb.pe"; pf: "cb.pf"; pg: "cb.pg"; ph: "cb.ph"; pi: "cb.pi"; pj: "cb.pj"; pk: "cb.pk"; pl: "cb.pl"; pm: "cb.pm"; pn: "cb.pn"; po: "cb.po"; pp: "cb.pp"; pq: "cb.pq"; pr: "cb.pr"; ps: "cb.ps"; pt: "cb.pt"; pu: "cb.pu"; pv: "cb.pv"; pw: "cb.pw"; px: "cb.px"; py: "cb.py"; pz: "cb.pz"; qa: "cb.qa"; qb: "cb.qb"; qc: "cb.qc"; qd: "cb.qd"; qe: "cb.qe"; qf: "cb.qf"; qg: "cb.qg"; qh: "cb.qh"; qi: "cb.qi"; qj: "cb.qj"; qk: "cb.qk"; ql: "cb.ql"; qm: "cb.qm"; qn: "cb.qn"; qo: "cb.qo"; qp: "cb.qp"; qq: "cb.qq"; qr: "cb.qr"; qs: "cb.qs"; qt: "cb.qt"; qu: "cb.qu"; qv: "cb.qv"; qw: "cb.qw"; qx: "cb.qx"; qy: "cb.qy"; qz: "cb.qz"; ra: "cb.ra"; rb: "cb.rb"; rc: "cb.rc"; rd: "cb.rd"; re: "cb.re"; rf: "cb.rf"; rg: "cb.rg"; rh: "cb.rh"; ri: "cb.ri"; rj: "cb.rj"; rk: "cb.rk"; rl: "cb.rl"; rm: "cb.rm"; rn: "cb.rn"; ro: "cb.ro"; rp: "cb.rp"; rq: "cb.rq"; rr: "cb.rr"; rs: "cb.rs"; rt: "cb.rt"; ru: "cb.ru"; rv: "cb.rv"; rw: "cb.rw"; rx: "cb.rx"; ry: "cb.ry"; rz: "cb.rz"; sa: "cb.sa"; sb: "cb.sb"; sc: "cb.sc"; sd: "cb.sd"; se: "cb.se"; sf: "cb.sf"; sg: "cb.sg"; sh: "cb.sh"; si: "cb.si"; sj: "cb.sj"; sk: "cb.sk"; sl: "cb.sl"; sm: "cb.sm"; sn: "cb.sn"; so: "cb.so"; sp: "cb.sp"; sq: "cb.sq"; sr: "cb.sr"; ss: "cb.ss"; st: "cb.st"; su: "cb.su"; sv: "cb.sv"; sw: "cb.sw"; sx: "cb.sx"; sy: "cb.sy"; sz: "cb.sz"; ta: "cb.ta"; tb: "cb.tb"; tc: "cb.tc"; td: "cb.td"; te: "cb.te"; tf: "cb.tf"; tg: "cb.tg"; th: "cb.th"; ti: "cb.ti"; tj: "cb.tj"; tk: "cb.tk"; tl: "cb.tl"; tm: "cb.tm"; tn: "cb.tn"; to: "cb.to"; tp: "cb.tp"; tq: "cb.tq"; tr: "cb.tr"; ts: "cb.ts"; tt: "cb.tt"; tu: "cb.tu"; tv: "cb.tv"; tw: "cb.tw"; tx: "cb.tx"; ty: "cb.ty"; tz: "cb.tz"; ua: "cb.ua"; ub: "cb.ub"; uc: "cb.uc"; ud: "cb.ud"; ue: "cb.ue"; uf: "cb.uf"; ug: "cb.ug"; uh: "cb.uh"; ui: "cb.ui"; uj: "cb.uj"; uk: "cb.uk"; ul: "cb.ul"; um: "cb.um"; un: "cb.un"; uo: "cb.uo"; up: "cb.up"; uq: "cb.uq"; ur: "cb.ur"; us: "cb.us"; ut: "cb.ut"; uu: "cb.uu"; uv: "cb.uv"; uw: "cb.uw"; ux: "cb.ux"; uy: "cb.uy"; uz: "cb.uz"; va: "cb.va"; vb: "cb.vb"; vc: "cb.vc"; vd: "cb.vd"; ve: "cb.ve"; vf: "cb.vf"; vg: "cb.vg"; vh: "cb.vh"; vi: "cb.vi"; vj: "cb.vj"; vk: "cb.vk"; vl: "cb.vl"; vm: "cb.vm"; vn: "cb.vn"; vo: "cb.vo"; vp: "cb.vp"; vq: "cb.vq"; vr: "cb.vr"; vs: "cb.vs"; vt: "cb.vt"; vu: "cb.vu"; vv: "cb.vv"; vw: "cb.vw"; vx: "cb.vx"; vy: "cb.vy"; vz: "cb.vz"; wa: "cb.wa"; wb: "cb.wb"; wc: "cb.wc"; wd: "cb.wd"; we: "cb.we"; wf: "cb.wf"; wg: "cb.wg"; wh: "cb.wh"; wi: "cb.wi"; wj: "cb.wj"; wk: "cb.wk"; wl: "cb.wl"; wm: "cb.wm"; wn: "cb.wn"; wo: "cb.wo"; wp: "cb.wp"; wq: "cb.wq"; wr: "cb.wr"; ws: "cb.ws"; wt: "cb.wt"; wu: "cb.wu"; wv: "cb.wv"; ww: "cb.ww"; wx: "cb.wx"; wy: "cb.wy"; wz: "cb.wz"; xa: "cb.xa"; xb: "cb.xb"; xc: "cb.xc"; xd: "cb.xd"; xe: "cb.xe"; xf: "cb.xf"; xg: "cb.xg"; xh: "cb.xh"; xi: "cb.xi"; xj: "cb.xj"; xk: "cb.xk"; xl: "cb.xl"; xm: "cb.xm"; xn: "cb.xn"; xo: "cb.xo"; xp: "cb.xp"; xq: "cb.xq"; xr: "cb.xr"; xs: "cb.xs"; xt: "cb.xt"; xu: "cb.xu"; xv: "cb.xv"; xw: "cb.xw"; xx: "cb.xx"; xy: "cb.xy"; xz: "cb.xz"; ya: "cb.ya"; yb: "cb.yb"; yc: "cb.yc"; yd: "cb.yd"; ye: "cb.ye"; yf: "cb.yf"; yg: "cb.yg"; yh: "cb.yh"; yi: "cb.yi"; yj: "cb.yj"; yk: "cb.yk"; yl: "cb.yl"; ym: "cb.ym"; yn: "cb.yn"; yo: "cb.yo"; yp: "cb.yp"; yq: "cb.yq"; yr: "cb.yr"; ys: "cb.ys"; yt: "cb.yt"; yu: "cb.yu"; yv: "cb.yv"; yw: "cb.yw"; yx: "cb.yx"; yy: "cb.yy"; yz: "cb.yz"; za: "cb.za"; zb: "cb.zb"; zc: "cb.zc"; zd: "cb.zd"; ze: "cb.ze"; zf: "cb.zf"; zg: "cb.zg"; zh: "cb.zh"; zi: "cb.zi"; zj: "cb.zj"; zk: "cb.zk"; zl: "cb.zl"; zm: "cb.zm"; zn: "cb.zn"; zo: "cb.zo"; zp: "cb.zp"; zq: "cb.zq"; zr: "cb.zr"; zs: "cb.zs"; zt: "cb.zt"; zu: "cb.zu"; zv: "cb.zv"; zw: "cb.zw"; zx: "cb.zx"; zy: "cb.zy"; zz: "cb.zz"; }; cc: { aa: "cc.aa"; ab: "cc.ab"; ac: "cc.ac"; ad: "cc.ad"; ae: "cc.ae"; af: "cc.af"; ag: "cc.ag"; ah: "cc.ah"; ai: "cc.ai"; aj: "cc.aj"; ak: "cc.ak"; al: "cc.al"; am: "cc.am"; an: "cc.an"; ao: "cc.ao"; ap: "cc.ap"; aq: "cc.aq"; ar: "cc.ar"; as: "cc.as"; at: "cc.at"; au: "cc.au"; av: "cc.av"; aw: "cc.aw"; ax: "cc.ax"; ay: "cc.ay"; az: "cc.az"; ba: "cc.ba"; bb: "cc.bb"; bc: "cc.bc"; bd: "cc.bd"; be: "cc.be"; bf: "cc.bf"; bg: "cc.bg"; bh: "cc.bh"; bi: "cc.bi"; bj: "cc.bj"; bk: "cc.bk"; bl: "cc.bl"; bm: "cc.bm"; bn: "cc.bn"; bo: "cc.bo"; bp: "cc.bp"; bq: "cc.bq"; br: "cc.br"; bs: "cc.bs"; bt: "cc.bt"; bu: "cc.bu"; bv: "cc.bv"; bw: "cc.bw"; bx: "cc.bx"; by: "cc.by"; bz: "cc.bz"; ca: "cc.ca"; cb: "cc.cb"; cc: "cc.cc"; cd: "cc.cd"; ce: "cc.ce"; cf: "cc.cf"; cg: "cc.cg"; ch: "cc.ch"; ci: "cc.ci"; cj: "cc.cj"; ck: "cc.ck"; cl: "cc.cl"; cm: "cc.cm"; cn: "cc.cn"; co: "cc.co"; cp: "cc.cp"; cq: "cc.cq"; cr: "cc.cr"; cs: "cc.cs"; ct: "cc.ct"; cu: "cc.cu"; cv: "cc.cv"; cw: "cc.cw"; cx: "cc.cx"; cy: "cc.cy"; cz: "cc.cz"; da: "cc.da"; db: "cc.db"; dc: "cc.dc"; dd: "cc.dd"; de: "cc.de"; df: "cc.df"; dg: "cc.dg"; dh: "cc.dh"; di: "cc.di"; dj: "cc.dj"; dk: "cc.dk"; dl: "cc.dl"; dm: "cc.dm"; dn: "cc.dn"; do: "cc.do"; dp: "cc.dp"; dq: "cc.dq"; dr: "cc.dr"; ds: "cc.ds"; dt: "cc.dt"; du: "cc.du"; dv: "cc.dv"; dw: "cc.dw"; dx: "cc.dx"; dy: "cc.dy"; dz: "cc.dz"; ea: "cc.ea"; eb: "cc.eb"; ec: "cc.ec"; ed: "cc.ed"; ee: "cc.ee"; ef: "cc.ef"; eg: "cc.eg"; eh: "cc.eh"; ei: "cc.ei"; ej: "cc.ej"; ek: "cc.ek"; el: "cc.el"; em: "cc.em"; en: "cc.en"; eo: "cc.eo"; ep: "cc.ep"; eq: "cc.eq"; er: "cc.er"; es: "cc.es"; et: "cc.et"; eu: "cc.eu"; ev: "cc.ev"; ew: "cc.ew"; ex: "cc.ex"; ey: "cc.ey"; ez: "cc.ez"; fa: "cc.fa"; fb: "cc.fb"; fc: "cc.fc"; fd: "cc.fd"; fe: "cc.fe"; ff: "cc.ff"; fg: "cc.fg"; fh: "cc.fh"; fi: "cc.fi"; fj: "cc.fj"; fk: "cc.fk"; fl: "cc.fl"; fm: "cc.fm"; fn: "cc.fn"; fo: "cc.fo"; fp: "cc.fp"; fq: "cc.fq"; fr: "cc.fr"; fs: "cc.fs"; ft: "cc.ft"; fu: "cc.fu"; fv: "cc.fv"; fw: "cc.fw"; fx: "cc.fx"; fy: "cc.fy"; fz: "cc.fz"; ga: "cc.ga"; gb: "cc.gb"; gc: "cc.gc"; gd: "cc.gd"; ge: "cc.ge"; gf: "cc.gf"; gg: "cc.gg"; gh: "cc.gh"; gi: "cc.gi"; gj: "cc.gj"; gk: "cc.gk"; gl: "cc.gl"; gm: "cc.gm"; gn: "cc.gn"; go: "cc.go"; gp: "cc.gp"; gq: "cc.gq"; gr: "cc.gr"; gs: "cc.gs"; gt: "cc.gt"; gu: "cc.gu"; gv: "cc.gv"; gw: "cc.gw"; gx: "cc.gx"; gy: "cc.gy"; gz: "cc.gz"; ha: "cc.ha"; hb: "cc.hb"; hc: "cc.hc"; hd: "cc.hd"; he: "cc.he"; hf: "cc.hf"; hg: "cc.hg"; hh: "cc.hh"; hi: "cc.hi"; hj: "cc.hj"; hk: "cc.hk"; hl: "cc.hl"; hm: "cc.hm"; hn: "cc.hn"; ho: "cc.ho"; hp: "cc.hp"; hq: "cc.hq"; hr: "cc.hr"; hs: "cc.hs"; ht: "cc.ht"; hu: "cc.hu"; hv: "cc.hv"; hw: "cc.hw"; hx: "cc.hx"; hy: "cc.hy"; hz: "cc.hz"; ia: "cc.ia"; ib: "cc.ib"; ic: "cc.ic"; id: "cc.id"; ie: "cc.ie"; if: "cc.if"; ig: "cc.ig"; ih: "cc.ih"; ii: "cc.ii"; ij: "cc.ij"; ik: "cc.ik"; il: "cc.il"; im: "cc.im"; in: "cc.in"; io: "cc.io"; ip: "cc.ip"; iq: "cc.iq"; ir: "cc.ir"; is: "cc.is"; it: "cc.it"; iu: "cc.iu"; iv: "cc.iv"; iw: "cc.iw"; ix: "cc.ix"; iy: "cc.iy"; iz: "cc.iz"; ja: "cc.ja"; jb: "cc.jb"; jc: "cc.jc"; jd: "cc.jd"; je: "cc.je"; jf: "cc.jf"; jg: "cc.jg"; jh: "cc.jh"; ji: "cc.ji"; jj: "cc.jj"; jk: "cc.jk"; jl: "cc.jl"; jm: "cc.jm"; jn: "cc.jn"; jo: "cc.jo"; jp: "cc.jp"; jq: "cc.jq"; jr: "cc.jr"; js: "cc.js"; jt: "cc.jt"; ju: "cc.ju"; jv: "cc.jv"; jw: "cc.jw"; jx: "cc.jx"; jy: "cc.jy"; jz: "cc.jz"; ka: "cc.ka"; kb: "cc.kb"; kc: "cc.kc"; kd: "cc.kd"; ke: "cc.ke"; kf: "cc.kf"; kg: "cc.kg"; kh: "cc.kh"; ki: "cc.ki"; kj: "cc.kj"; kk: "cc.kk"; kl: "cc.kl"; km: "cc.km"; kn: "cc.kn"; ko: "cc.ko"; kp: "cc.kp"; kq: "cc.kq"; kr: "cc.kr"; ks: "cc.ks"; kt: "cc.kt"; ku: "cc.ku"; kv: "cc.kv"; kw: "cc.kw"; kx: "cc.kx"; ky: "cc.ky"; kz: "cc.kz"; la: "cc.la"; lb: "cc.lb"; lc: "cc.lc"; ld: "cc.ld"; le: "cc.le"; lf: "cc.lf"; lg: "cc.lg"; lh: "cc.lh"; li: "cc.li"; lj: "cc.lj"; lk: "cc.lk"; ll: "cc.ll"; lm: "cc.lm"; ln: "cc.ln"; lo: "cc.lo"; lp: "cc.lp"; lq: "cc.lq"; lr: "cc.lr"; ls: "cc.ls"; lt: "cc.lt"; lu: "cc.lu"; lv: "cc.lv"; lw: "cc.lw"; lx: "cc.lx"; ly: "cc.ly"; lz: "cc.lz"; ma: "cc.ma"; mb: "cc.mb"; mc: "cc.mc"; md: "cc.md"; me: "cc.me"; mf: "cc.mf"; mg: "cc.mg"; mh: "cc.mh"; mi: "cc.mi"; mj: "cc.mj"; mk: "cc.mk"; ml: "cc.ml"; mm: "cc.mm"; mn: "cc.mn"; mo: "cc.mo"; mp: "cc.mp"; mq: "cc.mq"; mr: "cc.mr"; ms: "cc.ms"; mt: "cc.mt"; mu: "cc.mu"; mv: "cc.mv"; mw: "cc.mw"; mx: "cc.mx"; my: "cc.my"; mz: "cc.mz"; na: "cc.na"; nb: "cc.nb"; nc: "cc.nc"; nd: "cc.nd"; ne: "cc.ne"; nf: "cc.nf"; ng: "cc.ng"; nh: "cc.nh"; ni: "cc.ni"; nj: "cc.nj"; nk: "cc.nk"; nl: "cc.nl"; nm: "cc.nm"; nn: "cc.nn"; no: "cc.no"; np: "cc.np"; nq: "cc.nq"; nr: "cc.nr"; ns: "cc.ns"; nt: "cc.nt"; nu: "cc.nu"; nv: "cc.nv"; nw: "cc.nw"; nx: "cc.nx"; ny: "cc.ny"; nz: "cc.nz"; oa: "cc.oa"; ob: "cc.ob"; oc: "cc.oc"; od: "cc.od"; oe: "cc.oe"; of: "cc.of"; og: "cc.og"; oh: "cc.oh"; oi: "cc.oi"; oj: "cc.oj"; ok: "cc.ok"; ol: "cc.ol"; om: "cc.om"; on: "cc.on"; oo: "cc.oo"; op: "cc.op"; oq: "cc.oq"; or: "cc.or"; os: "cc.os"; ot: "cc.ot"; ou: "cc.ou"; ov: "cc.ov"; ow: "cc.ow"; ox: "cc.ox"; oy: "cc.oy"; oz: "cc.oz"; pa: "cc.pa"; pb: "cc.pb"; pc: "cc.pc"; pd: "cc.pd"; pe: "cc.pe"; pf: "cc.pf"; pg: "cc.pg"; ph: "cc.ph"; pi: "cc.pi"; pj: "cc.pj"; pk: "cc.pk"; pl: "cc.pl"; pm: "cc.pm"; pn: "cc.pn"; po: "cc.po"; pp: "cc.pp"; pq: "cc.pq"; pr: "cc.pr"; ps: "cc.ps"; pt: "cc.pt"; pu: "cc.pu"; pv: "cc.pv"; pw: "cc.pw"; px: "cc.px"; py: "cc.py"; pz: "cc.pz"; qa: "cc.qa"; qb: "cc.qb"; qc: "cc.qc"; qd: "cc.qd"; qe: "cc.qe"; qf: "cc.qf"; qg: "cc.qg"; qh: "cc.qh"; qi: "cc.qi"; qj: "cc.qj"; qk: "cc.qk"; ql: "cc.ql"; qm: "cc.qm"; qn: "cc.qn"; qo: "cc.qo"; qp: "cc.qp"; qq: "cc.qq"; qr: "cc.qr"; qs: "cc.qs"; qt: "cc.qt"; qu: "cc.qu"; qv: "cc.qv"; qw: "cc.qw"; qx: "cc.qx"; qy: "cc.qy"; qz: "cc.qz"; ra: "cc.ra"; rb: "cc.rb"; rc: "cc.rc"; rd: "cc.rd"; re: "cc.re"; rf: "cc.rf"; rg: "cc.rg"; rh: "cc.rh"; ri: "cc.ri"; rj: "cc.rj"; rk: "cc.rk"; rl: "cc.rl"; rm: "cc.rm"; rn: "cc.rn"; ro: "cc.ro"; rp: "cc.rp"; rq: "cc.rq"; rr: "cc.rr"; rs: "cc.rs"; rt: "cc.rt"; ru: "cc.ru"; rv: "cc.rv"; rw: "cc.rw"; rx: "cc.rx"; ry: "cc.ry"; rz: "cc.rz"; sa: "cc.sa"; sb: "cc.sb"; sc: "cc.sc"; sd: "cc.sd"; se: "cc.se"; sf: "cc.sf"; sg: "cc.sg"; sh: "cc.sh"; si: "cc.si"; sj: "cc.sj"; sk: "cc.sk"; sl: "cc.sl"; sm: "cc.sm"; sn: "cc.sn"; so: "cc.so"; sp: "cc.sp"; sq: "cc.sq"; sr: "cc.sr"; ss: "cc.ss"; st: "cc.st"; su: "cc.su"; sv: "cc.sv"; sw: "cc.sw"; sx: "cc.sx"; sy: "cc.sy"; sz: "cc.sz"; ta: "cc.ta"; tb: "cc.tb"; tc: "cc.tc"; td: "cc.td"; te: "cc.te"; tf: "cc.tf"; tg: "cc.tg"; th: "cc.th"; ti: "cc.ti"; tj: "cc.tj"; tk: "cc.tk"; tl: "cc.tl"; tm: "cc.tm"; tn: "cc.tn"; to: "cc.to"; tp: "cc.tp"; tq: "cc.tq"; tr: "cc.tr"; ts: "cc.ts"; tt: "cc.tt"; tu: "cc.tu"; tv: "cc.tv"; tw: "cc.tw"; tx: "cc.tx"; ty: "cc.ty"; tz: "cc.tz"; ua: "cc.ua"; ub: "cc.ub"; uc: "cc.uc"; ud: "cc.ud"; ue: "cc.ue"; uf: "cc.uf"; ug: "cc.ug"; uh: "cc.uh"; ui: "cc.ui"; uj: "cc.uj"; uk: "cc.uk"; ul: "cc.ul"; um: "cc.um"; un: "cc.un"; uo: "cc.uo"; up: "cc.up"; uq: "cc.uq"; ur: "cc.ur"; us: "cc.us"; ut: "cc.ut"; uu: "cc.uu"; uv: "cc.uv"; uw: "cc.uw"; ux: "cc.ux"; uy: "cc.uy"; uz: "cc.uz"; va: "cc.va"; vb: "cc.vb"; vc: "cc.vc"; vd: "cc.vd"; ve: "cc.ve"; vf: "cc.vf"; vg: "cc.vg"; vh: "cc.vh"; vi: "cc.vi"; vj: "cc.vj"; vk: "cc.vk"; vl: "cc.vl"; vm: "cc.vm"; vn: "cc.vn"; vo: "cc.vo"; vp: "cc.vp"; vq: "cc.vq"; vr: "cc.vr"; vs: "cc.vs"; vt: "cc.vt"; vu: "cc.vu"; vv: "cc.vv"; vw: "cc.vw"; vx: "cc.vx"; vy: "cc.vy"; vz: "cc.vz"; wa: "cc.wa"; wb: "cc.wb"; wc: "cc.wc"; wd: "cc.wd"; we: "cc.we"; wf: "cc.wf"; wg: "cc.wg"; wh: "cc.wh"; wi: "cc.wi"; wj: "cc.wj"; wk: "cc.wk"; wl: "cc.wl"; wm: "cc.wm"; wn: "cc.wn"; wo: "cc.wo"; wp: "cc.wp"; wq: "cc.wq"; wr: "cc.wr"; ws: "cc.ws"; wt: "cc.wt"; wu: "cc.wu"; wv: "cc.wv"; ww: "cc.ww"; wx: "cc.wx"; wy: "cc.wy"; wz: "cc.wz"; xa: "cc.xa"; xb: "cc.xb"; xc: "cc.xc"; xd: "cc.xd"; xe: "cc.xe"; xf: "cc.xf"; xg: "cc.xg"; xh: "cc.xh"; xi: "cc.xi"; xj: "cc.xj"; xk: "cc.xk"; xl: "cc.xl"; xm: "cc.xm"; xn: "cc.xn"; xo: "cc.xo"; xp: "cc.xp"; xq: "cc.xq"; xr: "cc.xr"; xs: "cc.xs"; xt: "cc.xt"; xu: "cc.xu"; xv: "cc.xv"; xw: "cc.xw"; xx: "cc.xx"; xy: "cc.xy"; xz: "cc.xz"; ya: "cc.ya"; yb: "cc.yb"; yc: "cc.yc"; yd: "cc.yd"; ye: "cc.ye"; yf: "cc.yf"; yg: "cc.yg"; yh: "cc.yh"; yi: "cc.yi"; yj: "cc.yj"; yk: "cc.yk"; yl: "cc.yl"; ym: "cc.ym"; yn: "cc.yn"; yo: "cc.yo"; yp: "cc.yp"; yq: "cc.yq"; yr: "cc.yr"; ys: "cc.ys"; yt: "cc.yt"; yu: "cc.yu"; yv: "cc.yv"; yw: "cc.yw"; yx: "cc.yx"; yy: "cc.yy"; yz: "cc.yz"; za: "cc.za"; zb: "cc.zb"; zc: "cc.zc"; zd: "cc.zd"; ze: "cc.ze"; zf: "cc.zf"; zg: "cc.zg"; zh: "cc.zh"; zi: "cc.zi"; zj: "cc.zj"; zk: "cc.zk"; zl: "cc.zl"; zm: "cc.zm"; zn: "cc.zn"; zo: "cc.zo"; zp: "cc.zp"; zq: "cc.zq"; zr: "cc.zr"; zs: "cc.zs"; zt: "cc.zt"; zu: "cc.zu"; zv: "cc.zv"; zw: "cc.zw"; zx: "cc.zx"; zy: "cc.zy"; zz: "cc.zz"; }; cd: { aa: "cd.aa"; ab: "cd.ab"; ac: "cd.ac"; ad: "cd.ad"; ae: "cd.ae"; af: "cd.af"; ag: "cd.ag"; ah: "cd.ah"; ai: "cd.ai"; aj: "cd.aj"; ak: "cd.ak"; al: "cd.al"; am: "cd.am"; an: "cd.an"; ao: "cd.ao"; ap: "cd.ap"; aq: "cd.aq"; ar: "cd.ar"; as: "cd.as"; at: "cd.at"; au: "cd.au"; av: "cd.av"; aw: "cd.aw"; ax: "cd.ax"; ay: "cd.ay"; az: "cd.az"; ba: "cd.ba"; bb: "cd.bb"; bc: "cd.bc"; bd: "cd.bd"; be: "cd.be"; bf: "cd.bf"; bg: "cd.bg"; bh: "cd.bh"; bi: "cd.bi"; bj: "cd.bj"; bk: "cd.bk"; bl: "cd.bl"; bm: "cd.bm"; bn: "cd.bn"; bo: "cd.bo"; bp: "cd.bp"; bq: "cd.bq"; br: "cd.br"; bs: "cd.bs"; bt: "cd.bt"; bu: "cd.bu"; bv: "cd.bv"; bw: "cd.bw"; bx: "cd.bx"; by: "cd.by"; bz: "cd.bz"; ca: "cd.ca"; cb: "cd.cb"; cc: "cd.cc"; cd: "cd.cd"; ce: "cd.ce"; cf: "cd.cf"; cg: "cd.cg"; ch: "cd.ch"; ci: "cd.ci"; cj: "cd.cj"; ck: "cd.ck"; cl: "cd.cl"; cm: "cd.cm"; cn: "cd.cn"; co: "cd.co"; cp: "cd.cp"; cq: "cd.cq"; cr: "cd.cr"; cs: "cd.cs"; ct: "cd.ct"; cu: "cd.cu"; cv: "cd.cv"; cw: "cd.cw"; cx: "cd.cx"; cy: "cd.cy"; cz: "cd.cz"; da: "cd.da"; db: "cd.db"; dc: "cd.dc"; dd: "cd.dd"; de: "cd.de"; df: "cd.df"; dg: "cd.dg"; dh: "cd.dh"; di: "cd.di"; dj: "cd.dj"; dk: "cd.dk"; dl: "cd.dl"; dm: "cd.dm"; dn: "cd.dn"; do: "cd.do"; dp: "cd.dp"; dq: "cd.dq"; dr: "cd.dr"; ds: "cd.ds"; dt: "cd.dt"; du: "cd.du"; dv: "cd.dv"; dw: "cd.dw"; dx: "cd.dx"; dy: "cd.dy"; dz: "cd.dz"; ea: "cd.ea"; eb: "cd.eb"; ec: "cd.ec"; ed: "cd.ed"; ee: "cd.ee"; ef: "cd.ef"; eg: "cd.eg"; eh: "cd.eh"; ei: "cd.ei"; ej: "cd.ej"; ek: "cd.ek"; el: "cd.el"; em: "cd.em"; en: "cd.en"; eo: "cd.eo"; ep: "cd.ep"; eq: "cd.eq"; er: "cd.er"; es: "cd.es"; et: "cd.et"; eu: "cd.eu"; ev: "cd.ev"; ew: "cd.ew"; ex: "cd.ex"; ey: "cd.ey"; ez: "cd.ez"; fa: "cd.fa"; fb: "cd.fb"; fc: "cd.fc"; fd: "cd.fd"; fe: "cd.fe"; ff: "cd.ff"; fg: "cd.fg"; fh: "cd.fh"; fi: "cd.fi"; fj: "cd.fj"; fk: "cd.fk"; fl: "cd.fl"; fm: "cd.fm"; fn: "cd.fn"; fo: "cd.fo"; fp: "cd.fp"; fq: "cd.fq"; fr: "cd.fr"; fs: "cd.fs"; ft: "cd.ft"; fu: "cd.fu"; fv: "cd.fv"; fw: "cd.fw"; fx: "cd.fx"; fy: "cd.fy"; fz: "cd.fz"; ga: "cd.ga"; gb: "cd.gb"; gc: "cd.gc"; gd: "cd.gd"; ge: "cd.ge"; gf: "cd.gf"; gg: "cd.gg"; gh: "cd.gh"; gi: "cd.gi"; gj: "cd.gj"; gk: "cd.gk"; gl: "cd.gl"; gm: "cd.gm"; gn: "cd.gn"; go: "cd.go"; gp: "cd.gp"; gq: "cd.gq"; gr: "cd.gr"; gs: "cd.gs"; gt: "cd.gt"; gu: "cd.gu"; gv: "cd.gv"; gw: "cd.gw"; gx: "cd.gx"; gy: "cd.gy"; gz: "cd.gz"; ha: "cd.ha"; hb: "cd.hb"; hc: "cd.hc"; hd: "cd.hd"; he: "cd.he"; hf: "cd.hf"; hg: "cd.hg"; hh: "cd.hh"; hi: "cd.hi"; hj: "cd.hj"; hk: "cd.hk"; hl: "cd.hl"; hm: "cd.hm"; hn: "cd.hn"; ho: "cd.ho"; hp: "cd.hp"; hq: "cd.hq"; hr: "cd.hr"; hs: "cd.hs"; ht: "cd.ht"; hu: "cd.hu"; hv: "cd.hv"; hw: "cd.hw"; hx: "cd.hx"; hy: "cd.hy"; hz: "cd.hz"; ia: "cd.ia"; ib: "cd.ib"; ic: "cd.ic"; id: "cd.id"; ie: "cd.ie"; if: "cd.if"; ig: "cd.ig"; ih: "cd.ih"; ii: "cd.ii"; ij: "cd.ij"; ik: "cd.ik"; il: "cd.il"; im: "cd.im"; in: "cd.in"; io: "cd.io"; ip: "cd.ip"; iq: "cd.iq"; ir: "cd.ir"; is: "cd.is"; it: "cd.it"; iu: "cd.iu"; iv: "cd.iv"; iw: "cd.iw"; ix: "cd.ix"; iy: "cd.iy"; iz: "cd.iz"; ja: "cd.ja"; jb: "cd.jb"; jc: "cd.jc"; jd: "cd.jd"; je: "cd.je"; jf: "cd.jf"; jg: "cd.jg"; jh: "cd.jh"; ji: "cd.ji"; jj: "cd.jj"; jk: "cd.jk"; jl: "cd.jl"; jm: "cd.jm"; jn: "cd.jn"; jo: "cd.jo"; jp: "cd.jp"; jq: "cd.jq"; jr: "cd.jr"; js: "cd.js"; jt: "cd.jt"; ju: "cd.ju"; jv: "cd.jv"; jw: "cd.jw"; jx: "cd.jx"; jy: "cd.jy"; jz: "cd.jz"; ka: "cd.ka"; kb: "cd.kb"; kc: "cd.kc"; kd: "cd.kd"; ke: "cd.ke"; kf: "cd.kf"; kg: "cd.kg"; kh: "cd.kh"; ki: "cd.ki"; kj: "cd.kj"; kk: "cd.kk"; kl: "cd.kl"; km: "cd.km"; kn: "cd.kn"; ko: "cd.ko"; kp: "cd.kp"; kq: "cd.kq"; kr: "cd.kr"; ks: "cd.ks"; kt: "cd.kt"; ku: "cd.ku"; kv: "cd.kv"; kw: "cd.kw"; kx: "cd.kx"; ky: "cd.ky"; kz: "cd.kz"; la: "cd.la"; lb: "cd.lb"; lc: "cd.lc"; ld: "cd.ld"; le: "cd.le"; lf: "cd.lf"; lg: "cd.lg"; lh: "cd.lh"; li: "cd.li"; lj: "cd.lj"; lk: "cd.lk"; ll: "cd.ll"; lm: "cd.lm"; ln: "cd.ln"; lo: "cd.lo"; lp: "cd.lp"; lq: "cd.lq"; lr: "cd.lr"; ls: "cd.ls"; lt: "cd.lt"; lu: "cd.lu"; lv: "cd.lv"; lw: "cd.lw"; lx: "cd.lx"; ly: "cd.ly"; lz: "cd.lz"; ma: "cd.ma"; mb: "cd.mb"; mc: "cd.mc"; md: "cd.md"; me: "cd.me"; mf: "cd.mf"; mg: "cd.mg"; mh: "cd.mh"; mi: "cd.mi"; mj: "cd.mj"; mk: "cd.mk"; ml: "cd.ml"; mm: "cd.mm"; mn: "cd.mn"; mo: "cd.mo"; mp: "cd.mp"; mq: "cd.mq"; mr: "cd.mr"; ms: "cd.ms"; mt: "cd.mt"; mu: "cd.mu"; mv: "cd.mv"; mw: "cd.mw"; mx: "cd.mx"; my: "cd.my"; mz: "cd.mz"; na: "cd.na"; nb: "cd.nb"; nc: "cd.nc"; nd: "cd.nd"; ne: "cd.ne"; nf: "cd.nf"; ng: "cd.ng"; nh: "cd.nh"; ni: "cd.ni"; nj: "cd.nj"; nk: "cd.nk"; nl: "cd.nl"; nm: "cd.nm"; nn: "cd.nn"; no: "cd.no"; np: "cd.np"; nq: "cd.nq"; nr: "cd.nr"; ns: "cd.ns"; nt: "cd.nt"; nu: "cd.nu"; nv: "cd.nv"; nw: "cd.nw"; nx: "cd.nx"; ny: "cd.ny"; nz: "cd.nz"; oa: "cd.oa"; ob: "cd.ob"; oc: "cd.oc"; od: "cd.od"; oe: "cd.oe"; of: "cd.of"; og: "cd.og"; oh: "cd.oh"; oi: "cd.oi"; oj: "cd.oj"; ok: "cd.ok"; ol: "cd.ol"; om: "cd.om"; on: "cd.on"; oo: "cd.oo"; op: "cd.op"; oq: "cd.oq"; or: "cd.or"; os: "cd.os"; ot: "cd.ot"; ou: "cd.ou"; ov: "cd.ov"; ow: "cd.ow"; ox: "cd.ox"; oy: "cd.oy"; oz: "cd.oz"; pa: "cd.pa"; pb: "cd.pb"; pc: "cd.pc"; pd: "cd.pd"; pe: "cd.pe"; pf: "cd.pf"; pg: "cd.pg"; ph: "cd.ph"; pi: "cd.pi"; pj: "cd.pj"; pk: "cd.pk"; pl: "cd.pl"; pm: "cd.pm"; pn: "cd.pn"; po: "cd.po"; pp: "cd.pp"; pq: "cd.pq"; pr: "cd.pr"; ps: "cd.ps"; pt: "cd.pt"; pu: "cd.pu"; pv: "cd.pv"; pw: "cd.pw"; px: "cd.px"; py: "cd.py"; pz: "cd.pz"; qa: "cd.qa"; qb: "cd.qb"; qc: "cd.qc"; qd: "cd.qd"; qe: "cd.qe"; qf: "cd.qf"; qg: "cd.qg"; qh: "cd.qh"; qi: "cd.qi"; qj: "cd.qj"; qk: "cd.qk"; ql: "cd.ql"; qm: "cd.qm"; qn: "cd.qn"; qo: "cd.qo"; qp: "cd.qp"; qq: "cd.qq"; qr: "cd.qr"; qs: "cd.qs"; qt: "cd.qt"; qu: "cd.qu"; qv: "cd.qv"; qw: "cd.qw"; qx: "cd.qx"; qy: "cd.qy"; qz: "cd.qz"; ra: "cd.ra"; rb: "cd.rb"; rc: "cd.rc"; rd: "cd.rd"; re: "cd.re"; rf: "cd.rf"; rg: "cd.rg"; rh: "cd.rh"; ri: "cd.ri"; rj: "cd.rj"; rk: "cd.rk"; rl: "cd.rl"; rm: "cd.rm"; rn: "cd.rn"; ro: "cd.ro"; rp: "cd.rp"; rq: "cd.rq"; rr: "cd.rr"; rs: "cd.rs"; rt: "cd.rt"; ru: "cd.ru"; rv: "cd.rv"; rw: "cd.rw"; rx: "cd.rx"; ry: "cd.ry"; rz: "cd.rz"; sa: "cd.sa"; sb: "cd.sb"; sc: "cd.sc"; sd: "cd.sd"; se: "cd.se"; sf: "cd.sf"; sg: "cd.sg"; sh: "cd.sh"; si: "cd.si"; sj: "cd.sj"; sk: "cd.sk"; sl: "cd.sl"; sm: "cd.sm"; sn: "cd.sn"; so: "cd.so"; sp: "cd.sp"; sq: "cd.sq"; sr: "cd.sr"; ss: "cd.ss"; st: "cd.st"; su: "cd.su"; sv: "cd.sv"; sw: "cd.sw"; sx: "cd.sx"; sy: "cd.sy"; sz: "cd.sz"; ta: "cd.ta"; tb: "cd.tb"; tc: "cd.tc"; td: "cd.td"; te: "cd.te"; tf: "cd.tf"; tg: "cd.tg"; th: "cd.th"; ti: "cd.ti"; tj: "cd.tj"; tk: "cd.tk"; tl: "cd.tl"; tm: "cd.tm"; tn: "cd.tn"; to: "cd.to"; tp: "cd.tp"; tq: "cd.tq"; tr: "cd.tr"; ts: "cd.ts"; tt: "cd.tt"; tu: "cd.tu"; tv: "cd.tv"; tw: "cd.tw"; tx: "cd.tx"; ty: "cd.ty"; tz: "cd.tz"; ua: "cd.ua"; ub: "cd.ub"; uc: "cd.uc"; ud: "cd.ud"; ue: "cd.ue"; uf: "cd.uf"; ug: "cd.ug"; uh: "cd.uh"; ui: "cd.ui"; uj: "cd.uj"; uk: "cd.uk"; ul: "cd.ul"; um: "cd.um"; un: "cd.un"; uo: "cd.uo"; up: "cd.up"; uq: "cd.uq"; ur: "cd.ur"; us: "cd.us"; ut: "cd.ut"; uu: "cd.uu"; uv: "cd.uv"; uw: "cd.uw"; ux: "cd.ux"; uy: "cd.uy"; uz: "cd.uz"; va: "cd.va"; vb: "cd.vb"; vc: "cd.vc"; vd: "cd.vd"; ve: "cd.ve"; vf: "cd.vf"; vg: "cd.vg"; vh: "cd.vh"; vi: "cd.vi"; vj: "cd.vj"; vk: "cd.vk"; vl: "cd.vl"; vm: "cd.vm"; vn: "cd.vn"; vo: "cd.vo"; vp: "cd.vp"; vq: "cd.vq"; vr: "cd.vr"; vs: "cd.vs"; vt: "cd.vt"; vu: "cd.vu"; vv: "cd.vv"; vw: "cd.vw"; vx: "cd.vx"; vy: "cd.vy"; vz: "cd.vz"; wa: "cd.wa"; wb: "cd.wb"; wc: "cd.wc"; wd: "cd.wd"; we: "cd.we"; wf: "cd.wf"; wg: "cd.wg"; wh: "cd.wh"; wi: "cd.wi"; wj: "cd.wj"; wk: "cd.wk"; wl: "cd.wl"; wm: "cd.wm"; wn: "cd.wn"; wo: "cd.wo"; wp: "cd.wp"; wq: "cd.wq"; wr: "cd.wr"; ws: "cd.ws"; wt: "cd.wt"; wu: "cd.wu"; wv: "cd.wv"; ww: "cd.ww"; wx: "cd.wx"; wy: "cd.wy"; wz: "cd.wz"; xa: "cd.xa"; xb: "cd.xb"; xc: "cd.xc"; xd: "cd.xd"; xe: "cd.xe"; xf: "cd.xf"; xg: "cd.xg"; xh: "cd.xh"; xi: "cd.xi"; xj: "cd.xj"; xk: "cd.xk"; xl: "cd.xl"; xm: "cd.xm"; xn: "cd.xn"; xo: "cd.xo"; xp: "cd.xp"; xq: "cd.xq"; xr: "cd.xr"; xs: "cd.xs"; xt: "cd.xt"; xu: "cd.xu"; xv: "cd.xv"; xw: "cd.xw"; xx: "cd.xx"; xy: "cd.xy"; xz: "cd.xz"; ya: "cd.ya"; yb: "cd.yb"; yc: "cd.yc"; yd: "cd.yd"; ye: "cd.ye"; yf: "cd.yf"; yg: "cd.yg"; yh: "cd.yh"; yi: "cd.yi"; yj: "cd.yj"; yk: "cd.yk"; yl: "cd.yl"; ym: "cd.ym"; yn: "cd.yn"; yo: "cd.yo"; yp: "cd.yp"; yq: "cd.yq"; yr: "cd.yr"; ys: "cd.ys"; yt: "cd.yt"; yu: "cd.yu"; yv: "cd.yv"; yw: "cd.yw"; yx: "cd.yx"; yy: "cd.yy"; yz: "cd.yz"; za: "cd.za"; zb: "cd.zb"; zc: "cd.zc"; zd: "cd.zd"; ze: "cd.ze"; zf: "cd.zf"; zg: "cd.zg"; zh: "cd.zh"; zi: "cd.zi"; zj: "cd.zj"; zk: "cd.zk"; zl: "cd.zl"; zm: "cd.zm"; zn: "cd.zn"; zo: "cd.zo"; zp: "cd.zp"; zq: "cd.zq"; zr: "cd.zr"; zs: "cd.zs"; zt: "cd.zt"; zu: "cd.zu"; zv: "cd.zv"; zw: "cd.zw"; zx: "cd.zx"; zy: "cd.zy"; zz: "cd.zz"; }; ce: { aa: "ce.aa"; ab: "ce.ab"; ac: "ce.ac"; ad: "ce.ad"; ae: "ce.ae"; af: "ce.af"; ag: "ce.ag"; ah: "ce.ah"; ai: "ce.ai"; aj: "ce.aj"; ak: "ce.ak"; al: "ce.al"; am: "ce.am"; an: "ce.an"; ao: "ce.ao"; ap: "ce.ap"; aq: "ce.aq"; ar: "ce.ar"; as: "ce.as"; at: "ce.at"; au: "ce.au"; av: "ce.av"; aw: "ce.aw"; ax: "ce.ax"; ay: "ce.ay"; az: "ce.az"; ba: "ce.ba"; bb: "ce.bb"; bc: "ce.bc"; bd: "ce.bd"; be: "ce.be"; bf: "ce.bf"; bg: "ce.bg"; bh: "ce.bh"; bi: "ce.bi"; bj: "ce.bj"; bk: "ce.bk"; bl: "ce.bl"; bm: "ce.bm"; bn: "ce.bn"; bo: "ce.bo"; bp: "ce.bp"; bq: "ce.bq"; br: "ce.br"; bs: "ce.bs"; bt: "ce.bt"; bu: "ce.bu"; bv: "ce.bv"; bw: "ce.bw"; bx: "ce.bx"; by: "ce.by"; bz: "ce.bz"; ca: "ce.ca"; cb: "ce.cb"; cc: "ce.cc"; cd: "ce.cd"; ce: "ce.ce"; cf: "ce.cf"; cg: "ce.cg"; ch: "ce.ch"; ci: "ce.ci"; cj: "ce.cj"; ck: "ce.ck"; cl: "ce.cl"; cm: "ce.cm"; cn: "ce.cn"; co: "ce.co"; cp: "ce.cp"; cq: "ce.cq"; cr: "ce.cr"; cs: "ce.cs"; ct: "ce.ct"; cu: "ce.cu"; cv: "ce.cv"; cw: "ce.cw"; cx: "ce.cx"; cy: "ce.cy"; cz: "ce.cz"; da: "ce.da"; db: "ce.db"; dc: "ce.dc"; dd: "ce.dd"; de: "ce.de"; df: "ce.df"; dg: "ce.dg"; dh: "ce.dh"; di: "ce.di"; dj: "ce.dj"; dk: "ce.dk"; dl: "ce.dl"; dm: "ce.dm"; dn: "ce.dn"; do: "ce.do"; dp: "ce.dp"; dq: "ce.dq"; dr: "ce.dr"; ds: "ce.ds"; dt: "ce.dt"; du: "ce.du"; dv: "ce.dv"; dw: "ce.dw"; dx: "ce.dx"; dy: "ce.dy"; dz: "ce.dz"; ea: "ce.ea"; eb: "ce.eb"; ec: "ce.ec"; ed: "ce.ed"; ee: "ce.ee"; ef: "ce.ef"; eg: "ce.eg"; eh: "ce.eh"; ei: "ce.ei"; ej: "ce.ej"; ek: "ce.ek"; el: "ce.el"; em: "ce.em"; en: "ce.en"; eo: "ce.eo"; ep: "ce.ep"; eq: "ce.eq"; er: "ce.er"; es: "ce.es"; et: "ce.et"; eu: "ce.eu"; ev: "ce.ev"; ew: "ce.ew"; ex: "ce.ex"; ey: "ce.ey"; ez: "ce.ez"; fa: "ce.fa"; fb: "ce.fb"; fc: "ce.fc"; fd: "ce.fd"; fe: "ce.fe"; ff: "ce.ff"; fg: "ce.fg"; fh: "ce.fh"; fi: "ce.fi"; fj: "ce.fj"; fk: "ce.fk"; fl: "ce.fl"; fm: "ce.fm"; fn: "ce.fn"; fo: "ce.fo"; fp: "ce.fp"; fq: "ce.fq"; fr: "ce.fr"; fs: "ce.fs"; ft: "ce.ft"; fu: "ce.fu"; fv: "ce.fv"; fw: "ce.fw"; fx: "ce.fx"; fy: "ce.fy"; fz: "ce.fz"; ga: "ce.ga"; gb: "ce.gb"; gc: "ce.gc"; gd: "ce.gd"; ge: "ce.ge"; gf: "ce.gf"; gg: "ce.gg"; gh: "ce.gh"; gi: "ce.gi"; gj: "ce.gj"; gk: "ce.gk"; gl: "ce.gl"; gm: "ce.gm"; gn: "ce.gn"; go: "ce.go"; gp: "ce.gp"; gq: "ce.gq"; gr: "ce.gr"; gs: "ce.gs"; gt: "ce.gt"; gu: "ce.gu"; gv: "ce.gv"; gw: "ce.gw"; gx: "ce.gx"; gy: "ce.gy"; gz: "ce.gz"; ha: "ce.ha"; hb: "ce.hb"; hc: "ce.hc"; hd: "ce.hd"; he: "ce.he"; hf: "ce.hf"; hg: "ce.hg"; hh: "ce.hh"; hi: "ce.hi"; hj: "ce.hj"; hk: "ce.hk"; hl: "ce.hl"; hm: "ce.hm"; hn: "ce.hn"; ho: "ce.ho"; hp: "ce.hp"; hq: "ce.hq"; hr: "ce.hr"; hs: "ce.hs"; ht: "ce.ht"; hu: "ce.hu"; hv: "ce.hv"; hw: "ce.hw"; hx: "ce.hx"; hy: "ce.hy"; hz: "ce.hz"; ia: "ce.ia"; ib: "ce.ib"; ic: "ce.ic"; id: "ce.id"; ie: "ce.ie"; if: "ce.if"; ig: "ce.ig"; ih: "ce.ih"; ii: "ce.ii"; ij: "ce.ij"; ik: "ce.ik"; il: "ce.il"; im: "ce.im"; in: "ce.in"; io: "ce.io"; ip: "ce.ip"; iq: "ce.iq"; ir: "ce.ir"; is: "ce.is"; it: "ce.it"; iu: "ce.iu"; iv: "ce.iv"; iw: "ce.iw"; ix: "ce.ix"; iy: "ce.iy"; iz: "ce.iz"; ja: "ce.ja"; jb: "ce.jb"; jc: "ce.jc"; jd: "ce.jd"; je: "ce.je"; jf: "ce.jf"; jg: "ce.jg"; jh: "ce.jh"; ji: "ce.ji"; jj: "ce.jj"; jk: "ce.jk"; jl: "ce.jl"; jm: "ce.jm"; jn: "ce.jn"; jo: "ce.jo"; jp: "ce.jp"; jq: "ce.jq"; jr: "ce.jr"; js: "ce.js"; jt: "ce.jt"; ju: "ce.ju"; jv: "ce.jv"; jw: "ce.jw"; jx: "ce.jx"; jy: "ce.jy"; jz: "ce.jz"; ka: "ce.ka"; kb: "ce.kb"; kc: "ce.kc"; kd: "ce.kd"; ke: "ce.ke"; kf: "ce.kf"; kg: "ce.kg"; kh: "ce.kh"; ki: "ce.ki"; kj: "ce.kj"; kk: "ce.kk"; kl: "ce.kl"; km: "ce.km"; kn: "ce.kn"; ko: "ce.ko"; kp: "ce.kp"; kq: "ce.kq"; kr: "ce.kr"; ks: "ce.ks"; kt: "ce.kt"; ku: "ce.ku"; kv: "ce.kv"; kw: "ce.kw"; kx: "ce.kx"; ky: "ce.ky"; kz: "ce.kz"; la: "ce.la"; lb: "ce.lb"; lc: "ce.lc"; ld: "ce.ld"; le: "ce.le"; lf: "ce.lf"; lg: "ce.lg"; lh: "ce.lh"; li: "ce.li"; lj: "ce.lj"; lk: "ce.lk"; ll: "ce.ll"; lm: "ce.lm"; ln: "ce.ln"; lo: "ce.lo"; lp: "ce.lp"; lq: "ce.lq"; lr: "ce.lr"; ls: "ce.ls"; lt: "ce.lt"; lu: "ce.lu"; lv: "ce.lv"; lw: "ce.lw"; lx: "ce.lx"; ly: "ce.ly"; lz: "ce.lz"; ma: "ce.ma"; mb: "ce.mb"; mc: "ce.mc"; md: "ce.md"; me: "ce.me"; mf: "ce.mf"; mg: "ce.mg"; mh: "ce.mh"; mi: "ce.mi"; mj: "ce.mj"; mk: "ce.mk"; ml: "ce.ml"; mm: "ce.mm"; mn: "ce.mn"; mo: "ce.mo"; mp: "ce.mp"; mq: "ce.mq"; mr: "ce.mr"; ms: "ce.ms"; mt: "ce.mt"; mu: "ce.mu"; mv: "ce.mv"; mw: "ce.mw"; mx: "ce.mx"; my: "ce.my"; mz: "ce.mz"; na: "ce.na"; nb: "ce.nb"; nc: "ce.nc"; nd: "ce.nd"; ne: "ce.ne"; nf: "ce.nf"; ng: "ce.ng"; nh: "ce.nh"; ni: "ce.ni"; nj: "ce.nj"; nk: "ce.nk"; nl: "ce.nl"; nm: "ce.nm"; nn: "ce.nn"; no: "ce.no"; np: "ce.np"; nq: "ce.nq"; nr: "ce.nr"; ns: "ce.ns"; nt: "ce.nt"; nu: "ce.nu"; nv: "ce.nv"; nw: "ce.nw"; nx: "ce.nx"; ny: "ce.ny"; nz: "ce.nz"; oa: "ce.oa"; ob: "ce.ob"; oc: "ce.oc"; od: "ce.od"; oe: "ce.oe"; of: "ce.of"; og: "ce.og"; oh: "ce.oh"; oi: "ce.oi"; oj: "ce.oj"; ok: "ce.ok"; ol: "ce.ol"; om: "ce.om"; on: "ce.on"; oo: "ce.oo"; op: "ce.op"; oq: "ce.oq"; or: "ce.or"; os: "ce.os"; ot: "ce.ot"; ou: "ce.ou"; ov: "ce.ov"; ow: "ce.ow"; ox: "ce.ox"; oy: "ce.oy"; oz: "ce.oz"; pa: "ce.pa"; pb: "ce.pb"; pc: "ce.pc"; pd: "ce.pd"; pe: "ce.pe"; pf: "ce.pf"; pg: "ce.pg"; ph: "ce.ph"; pi: "ce.pi"; pj: "ce.pj"; pk: "ce.pk"; pl: "ce.pl"; pm: "ce.pm"; pn: "ce.pn"; po: "ce.po"; pp: "ce.pp"; pq: "ce.pq"; pr: "ce.pr"; ps: "ce.ps"; pt: "ce.pt"; pu: "ce.pu"; pv: "ce.pv"; pw: "ce.pw"; px: "ce.px"; py: "ce.py"; pz: "ce.pz"; qa: "ce.qa"; qb: "ce.qb"; qc: "ce.qc"; qd: "ce.qd"; qe: "ce.qe"; qf: "ce.qf"; qg: "ce.qg"; qh: "ce.qh"; qi: "ce.qi"; qj: "ce.qj"; qk: "ce.qk"; ql: "ce.ql"; qm: "ce.qm"; qn: "ce.qn"; qo: "ce.qo"; qp: "ce.qp"; qq: "ce.qq"; qr: "ce.qr"; qs: "ce.qs"; qt: "ce.qt"; qu: "ce.qu"; qv: "ce.qv"; qw: "ce.qw"; qx: "ce.qx"; qy: "ce.qy"; qz: "ce.qz"; ra: "ce.ra"; rb: "ce.rb"; rc: "ce.rc"; rd: "ce.rd"; re: "ce.re"; rf: "ce.rf"; rg: "ce.rg"; rh: "ce.rh"; ri: "ce.ri"; rj: "ce.rj"; rk: "ce.rk"; rl: "ce.rl"; rm: "ce.rm"; rn: "ce.rn"; ro: "ce.ro"; rp: "ce.rp"; rq: "ce.rq"; rr: "ce.rr"; rs: "ce.rs"; rt: "ce.rt"; ru: "ce.ru"; rv: "ce.rv"; rw: "ce.rw"; rx: "ce.rx"; ry: "ce.ry"; rz: "ce.rz"; sa: "ce.sa"; sb: "ce.sb"; sc: "ce.sc"; sd: "ce.sd"; se: "ce.se"; sf: "ce.sf"; sg: "ce.sg"; sh: "ce.sh"; si: "ce.si"; sj: "ce.sj"; sk: "ce.sk"; sl: "ce.sl"; sm: "ce.sm"; sn: "ce.sn"; so: "ce.so"; sp: "ce.sp"; sq: "ce.sq"; sr: "ce.sr"; ss: "ce.ss"; st: "ce.st"; su: "ce.su"; sv: "ce.sv"; sw: "ce.sw"; sx: "ce.sx"; sy: "ce.sy"; sz: "ce.sz"; ta: "ce.ta"; tb: "ce.tb"; tc: "ce.tc"; td: "ce.td"; te: "ce.te"; tf: "ce.tf"; tg: "ce.tg"; th: "ce.th"; ti: "ce.ti"; tj: "ce.tj"; tk: "ce.tk"; tl: "ce.tl"; tm: "ce.tm"; tn: "ce.tn"; to: "ce.to"; tp: "ce.tp"; tq: "ce.tq"; tr: "ce.tr"; ts: "ce.ts"; tt: "ce.tt"; tu: "ce.tu"; tv: "ce.tv"; tw: "ce.tw"; tx: "ce.tx"; ty: "ce.ty"; tz: "ce.tz"; ua: "ce.ua"; ub: "ce.ub"; uc: "ce.uc"; ud: "ce.ud"; ue: "ce.ue"; uf: "ce.uf"; ug: "ce.ug"; uh: "ce.uh"; ui: "ce.ui"; uj: "ce.uj"; uk: "ce.uk"; ul: "ce.ul"; um: "ce.um"; un: "ce.un"; uo: "ce.uo"; up: "ce.up"; uq: "ce.uq"; ur: "ce.ur"; us: "ce.us"; ut: "ce.ut"; uu: "ce.uu"; uv: "ce.uv"; uw: "ce.uw"; ux: "ce.ux"; uy: "ce.uy"; uz: "ce.uz"; va: "ce.va"; vb: "ce.vb"; vc: "ce.vc"; vd: "ce.vd"; ve: "ce.ve"; vf: "ce.vf"; vg: "ce.vg"; vh: "ce.vh"; vi: "ce.vi"; vj: "ce.vj"; vk: "ce.vk"; vl: "ce.vl"; vm: "ce.vm"; vn: "ce.vn"; vo: "ce.vo"; vp: "ce.vp"; vq: "ce.vq"; vr: "ce.vr"; vs: "ce.vs"; vt: "ce.vt"; vu: "ce.vu"; vv: "ce.vv"; vw: "ce.vw"; vx: "ce.vx"; vy: "ce.vy"; vz: "ce.vz"; wa: "ce.wa"; wb: "ce.wb"; wc: "ce.wc"; wd: "ce.wd"; we: "ce.we"; wf: "ce.wf"; wg: "ce.wg"; wh: "ce.wh"; wi: "ce.wi"; wj: "ce.wj"; wk: "ce.wk"; wl: "ce.wl"; wm: "ce.wm"; wn: "ce.wn"; wo: "ce.wo"; wp: "ce.wp"; wq: "ce.wq"; wr: "ce.wr"; ws: "ce.ws"; wt: "ce.wt"; wu: "ce.wu"; wv: "ce.wv"; ww: "ce.ww"; wx: "ce.wx"; wy: "ce.wy"; wz: "ce.wz"; xa: "ce.xa"; xb: "ce.xb"; xc: "ce.xc"; xd: "ce.xd"; xe: "ce.xe"; xf: "ce.xf"; xg: "ce.xg"; xh: "ce.xh"; xi: "ce.xi"; xj: "ce.xj"; xk: "ce.xk"; xl: "ce.xl"; xm: "ce.xm"; xn: "ce.xn"; xo: "ce.xo"; xp: "ce.xp"; xq: "ce.xq"; xr: "ce.xr"; xs: "ce.xs"; xt: "ce.xt"; xu: "ce.xu"; xv: "ce.xv"; xw: "ce.xw"; xx: "ce.xx"; xy: "ce.xy"; xz: "ce.xz"; ya: "ce.ya"; yb: "ce.yb"; yc: "ce.yc"; yd: "ce.yd"; ye: "ce.ye"; yf: "ce.yf"; yg: "ce.yg"; yh: "ce.yh"; yi: "ce.yi"; yj: "ce.yj"; yk: "ce.yk"; yl: "ce.yl"; ym: "ce.ym"; yn: "ce.yn"; yo: "ce.yo"; yp: "ce.yp"; yq: "ce.yq"; yr: "ce.yr"; ys: "ce.ys"; yt: "ce.yt"; yu: "ce.yu"; yv: "ce.yv"; yw: "ce.yw"; yx: "ce.yx"; yy: "ce.yy"; yz: "ce.yz"; za: "ce.za"; zb: "ce.zb"; zc: "ce.zc"; zd: "ce.zd"; ze: "ce.ze"; zf: "ce.zf"; zg: "ce.zg"; zh: "ce.zh"; zi: "ce.zi"; zj: "ce.zj"; zk: "ce.zk"; zl: "ce.zl"; zm: "ce.zm"; zn: "ce.zn"; zo: "ce.zo"; zp: "ce.zp"; zq: "ce.zq"; zr: "ce.zr"; zs: "ce.zs"; zt: "ce.zt"; zu: "ce.zu"; zv: "ce.zv"; zw: "ce.zw"; zx: "ce.zx"; zy: "ce.zy"; zz: "ce.zz"; }; cf: { aa: "cf.aa"; ab: "cf.ab"; ac: "cf.ac"; ad: "cf.ad"; ae: "cf.ae"; af: "cf.af"; ag: "cf.ag"; ah: "cf.ah"; ai: "cf.ai"; aj: "cf.aj"; ak: "cf.ak"; al: "cf.al"; am: "cf.am"; an: "cf.an"; ao: "cf.ao"; ap: "cf.ap"; aq: "cf.aq"; ar: "cf.ar"; as: "cf.as"; at: "cf.at"; au: "cf.au"; av: "cf.av"; aw: "cf.aw"; ax: "cf.ax"; ay: "cf.ay"; az: "cf.az"; ba: "cf.ba"; bb: "cf.bb"; bc: "cf.bc"; bd: "cf.bd"; be: "cf.be"; bf: "cf.bf"; bg: "cf.bg"; bh: "cf.bh"; bi: "cf.bi"; bj: "cf.bj"; bk: "cf.bk"; bl: "cf.bl"; bm: "cf.bm"; bn: "cf.bn"; bo: "cf.bo"; bp: "cf.bp"; bq: "cf.bq"; br: "cf.br"; bs: "cf.bs"; bt: "cf.bt"; bu: "cf.bu"; bv: "cf.bv"; bw: "cf.bw"; bx: "cf.bx"; by: "cf.by"; bz: "cf.bz"; ca: "cf.ca"; cb: "cf.cb"; cc: "cf.cc"; cd: "cf.cd"; ce: "cf.ce"; cf: "cf.cf"; cg: "cf.cg"; ch: "cf.ch"; ci: "cf.ci"; cj: "cf.cj"; ck: "cf.ck"; cl: "cf.cl"; cm: "cf.cm"; cn: "cf.cn"; co: "cf.co"; cp: "cf.cp"; cq: "cf.cq"; cr: "cf.cr"; cs: "cf.cs"; ct: "cf.ct"; cu: "cf.cu"; cv: "cf.cv"; cw: "cf.cw"; cx: "cf.cx"; cy: "cf.cy"; cz: "cf.cz"; da: "cf.da"; db: "cf.db"; dc: "cf.dc"; dd: "cf.dd"; de: "cf.de"; df: "cf.df"; dg: "cf.dg"; dh: "cf.dh"; di: "cf.di"; dj: "cf.dj"; dk: "cf.dk"; dl: "cf.dl"; dm: "cf.dm"; dn: "cf.dn"; do: "cf.do"; dp: "cf.dp"; dq: "cf.dq"; dr: "cf.dr"; ds: "cf.ds"; dt: "cf.dt"; du: "cf.du"; dv: "cf.dv"; dw: "cf.dw"; dx: "cf.dx"; dy: "cf.dy"; dz: "cf.dz"; ea: "cf.ea"; eb: "cf.eb"; ec: "cf.ec"; ed: "cf.ed"; ee: "cf.ee"; ef: "cf.ef"; eg: "cf.eg"; eh: "cf.eh"; ei: "cf.ei"; ej: "cf.ej"; ek: "cf.ek"; el: "cf.el"; em: "cf.em"; en: "cf.en"; eo: "cf.eo"; ep: "cf.ep"; eq: "cf.eq"; er: "cf.er"; es: "cf.es"; et: "cf.et"; eu: "cf.eu"; ev: "cf.ev"; ew: "cf.ew"; ex: "cf.ex"; ey: "cf.ey"; ez: "cf.ez"; fa: "cf.fa"; fb: "cf.fb"; fc: "cf.fc"; fd: "cf.fd"; fe: "cf.fe"; ff: "cf.ff"; fg: "cf.fg"; fh: "cf.fh"; fi: "cf.fi"; fj: "cf.fj"; fk: "cf.fk"; fl: "cf.fl"; fm: "cf.fm"; fn: "cf.fn"; fo: "cf.fo"; fp: "cf.fp"; fq: "cf.fq"; fr: "cf.fr"; fs: "cf.fs"; ft: "cf.ft"; fu: "cf.fu"; fv: "cf.fv"; fw: "cf.fw"; fx: "cf.fx"; fy: "cf.fy"; fz: "cf.fz"; ga: "cf.ga"; gb: "cf.gb"; gc: "cf.gc"; gd: "cf.gd"; ge: "cf.ge"; gf: "cf.gf"; gg: "cf.gg"; gh: "cf.gh"; gi: "cf.gi"; gj: "cf.gj"; gk: "cf.gk"; gl: "cf.gl"; gm: "cf.gm"; gn: "cf.gn"; go: "cf.go"; gp: "cf.gp"; gq: "cf.gq"; gr: "cf.gr"; gs: "cf.gs"; gt: "cf.gt"; gu: "cf.gu"; gv: "cf.gv"; gw: "cf.gw"; gx: "cf.gx"; gy: "cf.gy"; gz: "cf.gz"; ha: "cf.ha"; hb: "cf.hb"; hc: "cf.hc"; hd: "cf.hd"; he: "cf.he"; hf: "cf.hf"; hg: "cf.hg"; hh: "cf.hh"; hi: "cf.hi"; hj: "cf.hj"; hk: "cf.hk"; hl: "cf.hl"; hm: "cf.hm"; hn: "cf.hn"; ho: "cf.ho"; hp: "cf.hp"; hq: "cf.hq"; hr: "cf.hr"; hs: "cf.hs"; ht: "cf.ht"; hu: "cf.hu"; hv: "cf.hv"; hw: "cf.hw"; hx: "cf.hx"; hy: "cf.hy"; hz: "cf.hz"; ia: "cf.ia"; ib: "cf.ib"; ic: "cf.ic"; id: "cf.id"; ie: "cf.ie"; if: "cf.if"; ig: "cf.ig"; ih: "cf.ih"; ii: "cf.ii"; ij: "cf.ij"; ik: "cf.ik"; il: "cf.il"; im: "cf.im"; in: "cf.in"; io: "cf.io"; ip: "cf.ip"; iq: "cf.iq"; ir: "cf.ir"; is: "cf.is"; it: "cf.it"; iu: "cf.iu"; iv: "cf.iv"; iw: "cf.iw"; ix: "cf.ix"; iy: "cf.iy"; iz: "cf.iz"; ja: "cf.ja"; jb: "cf.jb"; jc: "cf.jc"; jd: "cf.jd"; je: "cf.je"; jf: "cf.jf"; jg: "cf.jg"; jh: "cf.jh"; ji: "cf.ji"; jj: "cf.jj"; jk: "cf.jk"; jl: "cf.jl"; jm: "cf.jm"; jn: "cf.jn"; jo: "cf.jo"; jp: "cf.jp"; jq: "cf.jq"; jr: "cf.jr"; js: "cf.js"; jt: "cf.jt"; ju: "cf.ju"; jv: "cf.jv"; jw: "cf.jw"; jx: "cf.jx"; jy: "cf.jy"; jz: "cf.jz"; ka: "cf.ka"; kb: "cf.kb"; kc: "cf.kc"; kd: "cf.kd"; ke: "cf.ke"; kf: "cf.kf"; kg: "cf.kg"; kh: "cf.kh"; ki: "cf.ki"; kj: "cf.kj"; kk: "cf.kk"; kl: "cf.kl"; km: "cf.km"; kn: "cf.kn"; ko: "cf.ko"; kp: "cf.kp"; kq: "cf.kq"; kr: "cf.kr"; ks: "cf.ks"; kt: "cf.kt"; ku: "cf.ku"; kv: "cf.kv"; kw: "cf.kw"; kx: "cf.kx"; ky: "cf.ky"; kz: "cf.kz"; la: "cf.la"; lb: "cf.lb"; lc: "cf.lc"; ld: "cf.ld"; le: "cf.le"; lf: "cf.lf"; lg: "cf.lg"; lh: "cf.lh"; li: "cf.li"; lj: "cf.lj"; lk: "cf.lk"; ll: "cf.ll"; lm: "cf.lm"; ln: "cf.ln"; lo: "cf.lo"; lp: "cf.lp"; lq: "cf.lq"; lr: "cf.lr"; ls: "cf.ls"; lt: "cf.lt"; lu: "cf.lu"; lv: "cf.lv"; lw: "cf.lw"; lx: "cf.lx"; ly: "cf.ly"; lz: "cf.lz"; ma: "cf.ma"; mb: "cf.mb"; mc: "cf.mc"; md: "cf.md"; me: "cf.me"; mf: "cf.mf"; mg: "cf.mg"; mh: "cf.mh"; mi: "cf.mi"; mj: "cf.mj"; mk: "cf.mk"; ml: "cf.ml"; mm: "cf.mm"; mn: "cf.mn"; mo: "cf.mo"; mp: "cf.mp"; mq: "cf.mq"; mr: "cf.mr"; ms: "cf.ms"; mt: "cf.mt"; mu: "cf.mu"; mv: "cf.mv"; mw: "cf.mw"; mx: "cf.mx"; my: "cf.my"; mz: "cf.mz"; na: "cf.na"; nb: "cf.nb"; nc: "cf.nc"; nd: "cf.nd"; ne: "cf.ne"; nf: "cf.nf"; ng: "cf.ng"; nh: "cf.nh"; ni: "cf.ni"; nj: "cf.nj"; nk: "cf.nk"; nl: "cf.nl"; nm: "cf.nm"; nn: "cf.nn"; no: "cf.no"; np: "cf.np"; nq: "cf.nq"; nr: "cf.nr"; ns: "cf.ns"; nt: "cf.nt"; nu: "cf.nu"; nv: "cf.nv"; nw: "cf.nw"; nx: "cf.nx"; ny: "cf.ny"; nz: "cf.nz"; oa: "cf.oa"; ob: "cf.ob"; oc: "cf.oc"; od: "cf.od"; oe: "cf.oe"; of: "cf.of"; og: "cf.og"; oh: "cf.oh"; oi: "cf.oi"; oj: "cf.oj"; ok: "cf.ok"; ol: "cf.ol"; om: "cf.om"; on: "cf.on"; oo: "cf.oo"; op: "cf.op"; oq: "cf.oq"; or: "cf.or"; os: "cf.os"; ot: "cf.ot"; ou: "cf.ou"; ov: "cf.ov"; ow: "cf.ow"; ox: "cf.ox"; oy: "cf.oy"; oz: "cf.oz"; pa: "cf.pa"; pb: "cf.pb"; pc: "cf.pc"; pd: "cf.pd"; pe: "cf.pe"; pf: "cf.pf"; pg: "cf.pg"; ph: "cf.ph"; pi: "cf.pi"; pj: "cf.pj"; pk: "cf.pk"; pl: "cf.pl"; pm: "cf.pm"; pn: "cf.pn"; po: "cf.po"; pp: "cf.pp"; pq: "cf.pq"; pr: "cf.pr"; ps: "cf.ps"; pt: "cf.pt"; pu: "cf.pu"; pv: "cf.pv"; pw: "cf.pw"; px: "cf.px"; py: "cf.py"; pz: "cf.pz"; qa: "cf.qa"; qb: "cf.qb"; qc: "cf.qc"; qd: "cf.qd"; qe: "cf.qe"; qf: "cf.qf"; qg: "cf.qg"; qh: "cf.qh"; qi: "cf.qi"; qj: "cf.qj"; qk: "cf.qk"; ql: "cf.ql"; qm: "cf.qm"; qn: "cf.qn"; qo: "cf.qo"; qp: "cf.qp"; qq: "cf.qq"; qr: "cf.qr"; qs: "cf.qs"; qt: "cf.qt"; qu: "cf.qu"; qv: "cf.qv"; qw: "cf.qw"; qx: "cf.qx"; qy: "cf.qy"; qz: "cf.qz"; ra: "cf.ra"; rb: "cf.rb"; rc: "cf.rc"; rd: "cf.rd"; re: "cf.re"; rf: "cf.rf"; rg: "cf.rg"; rh: "cf.rh"; ri: "cf.ri"; rj: "cf.rj"; rk: "cf.rk"; rl: "cf.rl"; rm: "cf.rm"; rn: "cf.rn"; ro: "cf.ro"; rp: "cf.rp"; rq: "cf.rq"; rr: "cf.rr"; rs: "cf.rs"; rt: "cf.rt"; ru: "cf.ru"; rv: "cf.rv"; rw: "cf.rw"; rx: "cf.rx"; ry: "cf.ry"; rz: "cf.rz"; sa: "cf.sa"; sb: "cf.sb"; sc: "cf.sc"; sd: "cf.sd"; se: "cf.se"; sf: "cf.sf"; sg: "cf.sg"; sh: "cf.sh"; si: "cf.si"; sj: "cf.sj"; sk: "cf.sk"; sl: "cf.sl"; sm: "cf.sm"; sn: "cf.sn"; so: "cf.so"; sp: "cf.sp"; sq: "cf.sq"; sr: "cf.sr"; ss: "cf.ss"; st: "cf.st"; su: "cf.su"; sv: "cf.sv"; sw: "cf.sw"; sx: "cf.sx"; sy: "cf.sy"; sz: "cf.sz"; ta: "cf.ta"; tb: "cf.tb"; tc: "cf.tc"; td: "cf.td"; te: "cf.te"; tf: "cf.tf"; tg: "cf.tg"; th: "cf.th"; ti: "cf.ti"; tj: "cf.tj"; tk: "cf.tk"; tl: "cf.tl"; tm: "cf.tm"; tn: "cf.tn"; to: "cf.to"; tp: "cf.tp"; tq: "cf.tq"; tr: "cf.tr"; ts: "cf.ts"; tt: "cf.tt"; tu: "cf.tu"; tv: "cf.tv"; tw: "cf.tw"; tx: "cf.tx"; ty: "cf.ty"; tz: "cf.tz"; ua: "cf.ua"; ub: "cf.ub"; uc: "cf.uc"; ud: "cf.ud"; ue: "cf.ue"; uf: "cf.uf"; ug: "cf.ug"; uh: "cf.uh"; ui: "cf.ui"; uj: "cf.uj"; uk: "cf.uk"; ul: "cf.ul"; um: "cf.um"; un: "cf.un"; uo: "cf.uo"; up: "cf.up"; uq: "cf.uq"; ur: "cf.ur"; us: "cf.us"; ut: "cf.ut"; uu: "cf.uu"; uv: "cf.uv"; uw: "cf.uw"; ux: "cf.ux"; uy: "cf.uy"; uz: "cf.uz"; va: "cf.va"; vb: "cf.vb"; vc: "cf.vc"; vd: "cf.vd"; ve: "cf.ve"; vf: "cf.vf"; vg: "cf.vg"; vh: "cf.vh"; vi: "cf.vi"; vj: "cf.vj"; vk: "cf.vk"; vl: "cf.vl"; vm: "cf.vm"; vn: "cf.vn"; vo: "cf.vo"; vp: "cf.vp"; vq: "cf.vq"; vr: "cf.vr"; vs: "cf.vs"; vt: "cf.vt"; vu: "cf.vu"; vv: "cf.vv"; vw: "cf.vw"; vx: "cf.vx"; vy: "cf.vy"; vz: "cf.vz"; wa: "cf.wa"; wb: "cf.wb"; wc: "cf.wc"; wd: "cf.wd"; we: "cf.we"; wf: "cf.wf"; wg: "cf.wg"; wh: "cf.wh"; wi: "cf.wi"; wj: "cf.wj"; wk: "cf.wk"; wl: "cf.wl"; wm: "cf.wm"; wn: "cf.wn"; wo: "cf.wo"; wp: "cf.wp"; wq: "cf.wq"; wr: "cf.wr"; ws: "cf.ws"; wt: "cf.wt"; wu: "cf.wu"; wv: "cf.wv"; ww: "cf.ww"; wx: "cf.wx"; wy: "cf.wy"; wz: "cf.wz"; xa: "cf.xa"; xb: "cf.xb"; xc: "cf.xc"; xd: "cf.xd"; xe: "cf.xe"; xf: "cf.xf"; xg: "cf.xg"; xh: "cf.xh"; xi: "cf.xi"; xj: "cf.xj"; xk: "cf.xk"; xl: "cf.xl"; xm: "cf.xm"; xn: "cf.xn"; xo: "cf.xo"; xp: "cf.xp"; xq: "cf.xq"; xr: "cf.xr"; xs: "cf.xs"; xt: "cf.xt"; xu: "cf.xu"; xv: "cf.xv"; xw: "cf.xw"; xx: "cf.xx"; xy: "cf.xy"; xz: "cf.xz"; ya: "cf.ya"; yb: "cf.yb"; yc: "cf.yc"; yd: "cf.yd"; ye: "cf.ye"; yf: "cf.yf"; yg: "cf.yg"; yh: "cf.yh"; yi: "cf.yi"; yj: "cf.yj"; yk: "cf.yk"; yl: "cf.yl"; ym: "cf.ym"; yn: "cf.yn"; yo: "cf.yo"; yp: "cf.yp"; yq: "cf.yq"; yr: "cf.yr"; ys: "cf.ys"; yt: "cf.yt"; yu: "cf.yu"; yv: "cf.yv"; yw: "cf.yw"; yx: "cf.yx"; yy: "cf.yy"; yz: "cf.yz"; za: "cf.za"; zb: "cf.zb"; zc: "cf.zc"; zd: "cf.zd"; ze: "cf.ze"; zf: "cf.zf"; zg: "cf.zg"; zh: "cf.zh"; zi: "cf.zi"; zj: "cf.zj"; zk: "cf.zk"; zl: "cf.zl"; zm: "cf.zm"; zn: "cf.zn"; zo: "cf.zo"; zp: "cf.zp"; zq: "cf.zq"; zr: "cf.zr"; zs: "cf.zs"; zt: "cf.zt"; zu: "cf.zu"; zv: "cf.zv"; zw: "cf.zw"; zx: "cf.zx"; zy: "cf.zy"; zz: "cf.zz"; }; cg: { aa: "cg.aa"; ab: "cg.ab"; ac: "cg.ac"; ad: "cg.ad"; ae: "cg.ae"; af: "cg.af"; ag: "cg.ag"; ah: "cg.ah"; ai: "cg.ai"; aj: "cg.aj"; ak: "cg.ak"; al: "cg.al"; am: "cg.am"; an: "cg.an"; ao: "cg.ao"; ap: "cg.ap"; aq: "cg.aq"; ar: "cg.ar"; as: "cg.as"; at: "cg.at"; au: "cg.au"; av: "cg.av"; aw: "cg.aw"; ax: "cg.ax"; ay: "cg.ay"; az: "cg.az"; ba: "cg.ba"; bb: "cg.bb"; bc: "cg.bc"; bd: "cg.bd"; be: "cg.be"; bf: "cg.bf"; bg: "cg.bg"; bh: "cg.bh"; bi: "cg.bi"; bj: "cg.bj"; bk: "cg.bk"; bl: "cg.bl"; bm: "cg.bm"; bn: "cg.bn"; bo: "cg.bo"; bp: "cg.bp"; bq: "cg.bq"; br: "cg.br"; bs: "cg.bs"; bt: "cg.bt"; bu: "cg.bu"; bv: "cg.bv"; bw: "cg.bw"; bx: "cg.bx"; by: "cg.by"; bz: "cg.bz"; ca: "cg.ca"; cb: "cg.cb"; cc: "cg.cc"; cd: "cg.cd"; ce: "cg.ce"; cf: "cg.cf"; cg: "cg.cg"; ch: "cg.ch"; ci: "cg.ci"; cj: "cg.cj"; ck: "cg.ck"; cl: "cg.cl"; cm: "cg.cm"; cn: "cg.cn"; co: "cg.co"; cp: "cg.cp"; cq: "cg.cq"; cr: "cg.cr"; cs: "cg.cs"; ct: "cg.ct"; cu: "cg.cu"; cv: "cg.cv"; cw: "cg.cw"; cx: "cg.cx"; cy: "cg.cy"; cz: "cg.cz"; da: "cg.da"; db: "cg.db"; dc: "cg.dc"; dd: "cg.dd"; de: "cg.de"; df: "cg.df"; dg: "cg.dg"; dh: "cg.dh"; di: "cg.di"; dj: "cg.dj"; dk: "cg.dk"; dl: "cg.dl"; dm: "cg.dm"; dn: "cg.dn"; do: "cg.do"; dp: "cg.dp"; dq: "cg.dq"; dr: "cg.dr"; ds: "cg.ds"; dt: "cg.dt"; du: "cg.du"; dv: "cg.dv"; dw: "cg.dw"; dx: "cg.dx"; dy: "cg.dy"; dz: "cg.dz"; ea: "cg.ea"; eb: "cg.eb"; ec: "cg.ec"; ed: "cg.ed"; ee: "cg.ee"; ef: "cg.ef"; eg: "cg.eg"; eh: "cg.eh"; ei: "cg.ei"; ej: "cg.ej"; ek: "cg.ek"; el: "cg.el"; em: "cg.em"; en: "cg.en"; eo: "cg.eo"; ep: "cg.ep"; eq: "cg.eq"; er: "cg.er"; es: "cg.es"; et: "cg.et"; eu: "cg.eu"; ev: "cg.ev"; ew: "cg.ew"; ex: "cg.ex"; ey: "cg.ey"; ez: "cg.ez"; fa: "cg.fa"; fb: "cg.fb"; fc: "cg.fc"; fd: "cg.fd"; fe: "cg.fe"; ff: "cg.ff"; fg: "cg.fg"; fh: "cg.fh"; fi: "cg.fi"; fj: "cg.fj"; fk: "cg.fk"; fl: "cg.fl"; fm: "cg.fm"; fn: "cg.fn"; fo: "cg.fo"; fp: "cg.fp"; fq: "cg.fq"; fr: "cg.fr"; fs: "cg.fs"; ft: "cg.ft"; fu: "cg.fu"; fv: "cg.fv"; fw: "cg.fw"; fx: "cg.fx"; fy: "cg.fy"; fz: "cg.fz"; ga: "cg.ga"; gb: "cg.gb"; gc: "cg.gc"; gd: "cg.gd"; ge: "cg.ge"; gf: "cg.gf"; gg: "cg.gg"; gh: "cg.gh"; gi: "cg.gi"; gj: "cg.gj"; gk: "cg.gk"; gl: "cg.gl"; gm: "cg.gm"; gn: "cg.gn"; go: "cg.go"; gp: "cg.gp"; gq: "cg.gq"; gr: "cg.gr"; gs: "cg.gs"; gt: "cg.gt"; gu: "cg.gu"; gv: "cg.gv"; gw: "cg.gw"; gx: "cg.gx"; gy: "cg.gy"; gz: "cg.gz"; ha: "cg.ha"; hb: "cg.hb"; hc: "cg.hc"; hd: "cg.hd"; he: "cg.he"; hf: "cg.hf"; hg: "cg.hg"; hh: "cg.hh"; hi: "cg.hi"; hj: "cg.hj"; hk: "cg.hk"; hl: "cg.hl"; hm: "cg.hm"; hn: "cg.hn"; ho: "cg.ho"; hp: "cg.hp"; hq: "cg.hq"; hr: "cg.hr"; hs: "cg.hs"; ht: "cg.ht"; hu: "cg.hu"; hv: "cg.hv"; hw: "cg.hw"; hx: "cg.hx"; hy: "cg.hy"; hz: "cg.hz"; ia: "cg.ia"; ib: "cg.ib"; ic: "cg.ic"; id: "cg.id"; ie: "cg.ie"; if: "cg.if"; ig: "cg.ig"; ih: "cg.ih"; ii: "cg.ii"; ij: "cg.ij"; ik: "cg.ik"; il: "cg.il"; im: "cg.im"; in: "cg.in"; io: "cg.io"; ip: "cg.ip"; iq: "cg.iq"; ir: "cg.ir"; is: "cg.is"; it: "cg.it"; iu: "cg.iu"; iv: "cg.iv"; iw: "cg.iw"; ix: "cg.ix"; iy: "cg.iy"; iz: "cg.iz"; ja: "cg.ja"; jb: "cg.jb"; jc: "cg.jc"; jd: "cg.jd"; je: "cg.je"; jf: "cg.jf"; jg: "cg.jg"; jh: "cg.jh"; ji: "cg.ji"; jj: "cg.jj"; jk: "cg.jk"; jl: "cg.jl"; jm: "cg.jm"; jn: "cg.jn"; jo: "cg.jo"; jp: "cg.jp"; jq: "cg.jq"; jr: "cg.jr"; js: "cg.js"; jt: "cg.jt"; ju: "cg.ju"; jv: "cg.jv"; jw: "cg.jw"; jx: "cg.jx"; jy: "cg.jy"; jz: "cg.jz"; ka: "cg.ka"; kb: "cg.kb"; kc: "cg.kc"; kd: "cg.kd"; ke: "cg.ke"; kf: "cg.kf"; kg: "cg.kg"; kh: "cg.kh"; ki: "cg.ki"; kj: "cg.kj"; kk: "cg.kk"; kl: "cg.kl"; km: "cg.km"; kn: "cg.kn"; ko: "cg.ko"; kp: "cg.kp"; kq: "cg.kq"; kr: "cg.kr"; ks: "cg.ks"; kt: "cg.kt"; ku: "cg.ku"; kv: "cg.kv"; kw: "cg.kw"; kx: "cg.kx"; ky: "cg.ky"; kz: "cg.kz"; la: "cg.la"; lb: "cg.lb"; lc: "cg.lc"; ld: "cg.ld"; le: "cg.le"; lf: "cg.lf"; lg: "cg.lg"; lh: "cg.lh"; li: "cg.li"; lj: "cg.lj"; lk: "cg.lk"; ll: "cg.ll"; lm: "cg.lm"; ln: "cg.ln"; lo: "cg.lo"; lp: "cg.lp"; lq: "cg.lq"; lr: "cg.lr"; ls: "cg.ls"; lt: "cg.lt"; lu: "cg.lu"; lv: "cg.lv"; lw: "cg.lw"; lx: "cg.lx"; ly: "cg.ly"; lz: "cg.lz"; ma: "cg.ma"; mb: "cg.mb"; mc: "cg.mc"; md: "cg.md"; me: "cg.me"; mf: "cg.mf"; mg: "cg.mg"; mh: "cg.mh"; mi: "cg.mi"; mj: "cg.mj"; mk: "cg.mk"; ml: "cg.ml"; mm: "cg.mm"; mn: "cg.mn"; mo: "cg.mo"; mp: "cg.mp"; mq: "cg.mq"; mr: "cg.mr"; ms: "cg.ms"; mt: "cg.mt"; mu: "cg.mu"; mv: "cg.mv"; mw: "cg.mw"; mx: "cg.mx"; my: "cg.my"; mz: "cg.mz"; na: "cg.na"; nb: "cg.nb"; nc: "cg.nc"; nd: "cg.nd"; ne: "cg.ne"; nf: "cg.nf"; ng: "cg.ng"; nh: "cg.nh"; ni: "cg.ni"; nj: "cg.nj"; nk: "cg.nk"; nl: "cg.nl"; nm: "cg.nm"; nn: "cg.nn"; no: "cg.no"; np: "cg.np"; nq: "cg.nq"; nr: "cg.nr"; ns: "cg.ns"; nt: "cg.nt"; nu: "cg.nu"; nv: "cg.nv"; nw: "cg.nw"; nx: "cg.nx"; ny: "cg.ny"; nz: "cg.nz"; oa: "cg.oa"; ob: "cg.ob"; oc: "cg.oc"; od: "cg.od"; oe: "cg.oe"; of: "cg.of"; og: "cg.og"; oh: "cg.oh"; oi: "cg.oi"; oj: "cg.oj"; ok: "cg.ok"; ol: "cg.ol"; om: "cg.om"; on: "cg.on"; oo: "cg.oo"; op: "cg.op"; oq: "cg.oq"; or: "cg.or"; os: "cg.os"; ot: "cg.ot"; ou: "cg.ou"; ov: "cg.ov"; ow: "cg.ow"; ox: "cg.ox"; oy: "cg.oy"; oz: "cg.oz"; pa: "cg.pa"; pb: "cg.pb"; pc: "cg.pc"; pd: "cg.pd"; pe: "cg.pe"; pf: "cg.pf"; pg: "cg.pg"; ph: "cg.ph"; pi: "cg.pi"; pj: "cg.pj"; pk: "cg.pk"; pl: "cg.pl"; pm: "cg.pm"; pn: "cg.pn"; po: "cg.po"; pp: "cg.pp"; pq: "cg.pq"; pr: "cg.pr"; ps: "cg.ps"; pt: "cg.pt"; pu: "cg.pu"; pv: "cg.pv"; pw: "cg.pw"; px: "cg.px"; py: "cg.py"; pz: "cg.pz"; qa: "cg.qa"; qb: "cg.qb"; qc: "cg.qc"; qd: "cg.qd"; qe: "cg.qe"; qf: "cg.qf"; qg: "cg.qg"; qh: "cg.qh"; qi: "cg.qi"; qj: "cg.qj"; qk: "cg.qk"; ql: "cg.ql"; qm: "cg.qm"; qn: "cg.qn"; qo: "cg.qo"; qp: "cg.qp"; qq: "cg.qq"; qr: "cg.qr"; qs: "cg.qs"; qt: "cg.qt"; qu: "cg.qu"; qv: "cg.qv"; qw: "cg.qw"; qx: "cg.qx"; qy: "cg.qy"; qz: "cg.qz"; ra: "cg.ra"; rb: "cg.rb"; rc: "cg.rc"; rd: "cg.rd"; re: "cg.re"; rf: "cg.rf"; rg: "cg.rg"; rh: "cg.rh"; ri: "cg.ri"; rj: "cg.rj"; rk: "cg.rk"; rl: "cg.rl"; rm: "cg.rm"; rn: "cg.rn"; ro: "cg.ro"; rp: "cg.rp"; rq: "cg.rq"; rr: "cg.rr"; rs: "cg.rs"; rt: "cg.rt"; ru: "cg.ru"; rv: "cg.rv"; rw: "cg.rw"; rx: "cg.rx"; ry: "cg.ry"; rz: "cg.rz"; sa: "cg.sa"; sb: "cg.sb"; sc: "cg.sc"; sd: "cg.sd"; se: "cg.se"; sf: "cg.sf"; sg: "cg.sg"; sh: "cg.sh"; si: "cg.si"; sj: "cg.sj"; sk: "cg.sk"; sl: "cg.sl"; sm: "cg.sm"; sn: "cg.sn"; so: "cg.so"; sp: "cg.sp"; sq: "cg.sq"; sr: "cg.sr"; ss: "cg.ss"; st: "cg.st"; su: "cg.su"; sv: "cg.sv"; sw: "cg.sw"; sx: "cg.sx"; sy: "cg.sy"; sz: "cg.sz"; ta: "cg.ta"; tb: "cg.tb"; tc: "cg.tc"; td: "cg.td"; te: "cg.te"; tf: "cg.tf"; tg: "cg.tg"; th: "cg.th"; ti: "cg.ti"; tj: "cg.tj"; tk: "cg.tk"; tl: "cg.tl"; tm: "cg.tm"; tn: "cg.tn"; to: "cg.to"; tp: "cg.tp"; tq: "cg.tq"; tr: "cg.tr"; ts: "cg.ts"; tt: "cg.tt"; tu: "cg.tu"; tv: "cg.tv"; tw: "cg.tw"; tx: "cg.tx"; ty: "cg.ty"; tz: "cg.tz"; ua: "cg.ua"; ub: "cg.ub"; uc: "cg.uc"; ud: "cg.ud"; ue: "cg.ue"; uf: "cg.uf"; ug: "cg.ug"; uh: "cg.uh"; ui: "cg.ui"; uj: "cg.uj"; uk: "cg.uk"; ul: "cg.ul"; um: "cg.um"; un: "cg.un"; uo: "cg.uo"; up: "cg.up"; uq: "cg.uq"; ur: "cg.ur"; us: "cg.us"; ut: "cg.ut"; uu: "cg.uu"; uv: "cg.uv"; uw: "cg.uw"; ux: "cg.ux"; uy: "cg.uy"; uz: "cg.uz"; va: "cg.va"; vb: "cg.vb"; vc: "cg.vc"; vd: "cg.vd"; ve: "cg.ve"; vf: "cg.vf"; vg: "cg.vg"; vh: "cg.vh"; vi: "cg.vi"; vj: "cg.vj"; vk: "cg.vk"; vl: "cg.vl"; vm: "cg.vm"; vn: "cg.vn"; vo: "cg.vo"; vp: "cg.vp"; vq: "cg.vq"; vr: "cg.vr"; vs: "cg.vs"; vt: "cg.vt"; vu: "cg.vu"; vv: "cg.vv"; vw: "cg.vw"; vx: "cg.vx"; vy: "cg.vy"; vz: "cg.vz"; wa: "cg.wa"; wb: "cg.wb"; wc: "cg.wc"; wd: "cg.wd"; we: "cg.we"; wf: "cg.wf"; wg: "cg.wg"; wh: "cg.wh"; wi: "cg.wi"; wj: "cg.wj"; wk: "cg.wk"; wl: "cg.wl"; wm: "cg.wm"; wn: "cg.wn"; wo: "cg.wo"; wp: "cg.wp"; wq: "cg.wq"; wr: "cg.wr"; ws: "cg.ws"; wt: "cg.wt"; wu: "cg.wu"; wv: "cg.wv"; ww: "cg.ww"; wx: "cg.wx"; wy: "cg.wy"; wz: "cg.wz"; xa: "cg.xa"; xb: "cg.xb"; xc: "cg.xc"; xd: "cg.xd"; xe: "cg.xe"; xf: "cg.xf"; xg: "cg.xg"; xh: "cg.xh"; xi: "cg.xi"; xj: "cg.xj"; xk: "cg.xk"; xl: "cg.xl"; xm: "cg.xm"; xn: "cg.xn"; xo: "cg.xo"; xp: "cg.xp"; xq: "cg.xq"; xr: "cg.xr"; xs: "cg.xs"; xt: "cg.xt"; xu: "cg.xu"; xv: "cg.xv"; xw: "cg.xw"; xx: "cg.xx"; xy: "cg.xy"; xz: "cg.xz"; ya: "cg.ya"; yb: "cg.yb"; yc: "cg.yc"; yd: "cg.yd"; ye: "cg.ye"; yf: "cg.yf"; yg: "cg.yg"; yh: "cg.yh"; yi: "cg.yi"; yj: "cg.yj"; yk: "cg.yk"; yl: "cg.yl"; ym: "cg.ym"; yn: "cg.yn"; yo: "cg.yo"; yp: "cg.yp"; yq: "cg.yq"; yr: "cg.yr"; ys: "cg.ys"; yt: "cg.yt"; yu: "cg.yu"; yv: "cg.yv"; yw: "cg.yw"; yx: "cg.yx"; yy: "cg.yy"; yz: "cg.yz"; za: "cg.za"; zb: "cg.zb"; zc: "cg.zc"; zd: "cg.zd"; ze: "cg.ze"; zf: "cg.zf"; zg: "cg.zg"; zh: "cg.zh"; zi: "cg.zi"; zj: "cg.zj"; zk: "cg.zk"; zl: "cg.zl"; zm: "cg.zm"; zn: "cg.zn"; zo: "cg.zo"; zp: "cg.zp"; zq: "cg.zq"; zr: "cg.zr"; zs: "cg.zs"; zt: "cg.zt"; zu: "cg.zu"; zv: "cg.zv"; zw: "cg.zw"; zx: "cg.zx"; zy: "cg.zy"; zz: "cg.zz"; }; ch: { aa: "ch.aa"; ab: "ch.ab"; ac: "ch.ac"; ad: "ch.ad"; ae: "ch.ae"; af: "ch.af"; ag: "ch.ag"; ah: "ch.ah"; ai: "ch.ai"; aj: "ch.aj"; ak: "ch.ak"; al: "ch.al"; am: "ch.am"; an: "ch.an"; ao: "ch.ao"; ap: "ch.ap"; aq: "ch.aq"; ar: "ch.ar"; as: "ch.as"; at: "ch.at"; au: "ch.au"; av: "ch.av"; aw: "ch.aw"; ax: "ch.ax"; ay: "ch.ay"; az: "ch.az"; ba: "ch.ba"; bb: "ch.bb"; bc: "ch.bc"; bd: "ch.bd"; be: "ch.be"; bf: "ch.bf"; bg: "ch.bg"; bh: "ch.bh"; bi: "ch.bi"; bj: "ch.bj"; bk: "ch.bk"; bl: "ch.bl"; bm: "ch.bm"; bn: "ch.bn"; bo: "ch.bo"; bp: "ch.bp"; bq: "ch.bq"; br: "ch.br"; bs: "ch.bs"; bt: "ch.bt"; bu: "ch.bu"; bv: "ch.bv"; bw: "ch.bw"; bx: "ch.bx"; by: "ch.by"; bz: "ch.bz"; ca: "ch.ca"; cb: "ch.cb"; cc: "ch.cc"; cd: "ch.cd"; ce: "ch.ce"; cf: "ch.cf"; cg: "ch.cg"; ch: "ch.ch"; ci: "ch.ci"; cj: "ch.cj"; ck: "ch.ck"; cl: "ch.cl"; cm: "ch.cm"; cn: "ch.cn"; co: "ch.co"; cp: "ch.cp"; cq: "ch.cq"; cr: "ch.cr"; cs: "ch.cs"; ct: "ch.ct"; cu: "ch.cu"; cv: "ch.cv"; cw: "ch.cw"; cx: "ch.cx"; cy: "ch.cy"; cz: "ch.cz"; da: "ch.da"; db: "ch.db"; dc: "ch.dc"; dd: "ch.dd"; de: "ch.de"; df: "ch.df"; dg: "ch.dg"; dh: "ch.dh"; di: "ch.di"; dj: "ch.dj"; dk: "ch.dk"; dl: "ch.dl"; dm: "ch.dm"; dn: "ch.dn"; do: "ch.do"; dp: "ch.dp"; dq: "ch.dq"; dr: "ch.dr"; ds: "ch.ds"; dt: "ch.dt"; du: "ch.du"; dv: "ch.dv"; dw: "ch.dw"; dx: "ch.dx"; dy: "ch.dy"; dz: "ch.dz"; ea: "ch.ea"; eb: "ch.eb"; ec: "ch.ec"; ed: "ch.ed"; ee: "ch.ee"; ef: "ch.ef"; eg: "ch.eg"; eh: "ch.eh"; ei: "ch.ei"; ej: "ch.ej"; ek: "ch.ek"; el: "ch.el"; em: "ch.em"; en: "ch.en"; eo: "ch.eo"; ep: "ch.ep"; eq: "ch.eq"; er: "ch.er"; es: "ch.es"; et: "ch.et"; eu: "ch.eu"; ev: "ch.ev"; ew: "ch.ew"; ex: "ch.ex"; ey: "ch.ey"; ez: "ch.ez"; fa: "ch.fa"; fb: "ch.fb"; fc: "ch.fc"; fd: "ch.fd"; fe: "ch.fe"; ff: "ch.ff"; fg: "ch.fg"; fh: "ch.fh"; fi: "ch.fi"; fj: "ch.fj"; fk: "ch.fk"; fl: "ch.fl"; fm: "ch.fm"; fn: "ch.fn"; fo: "ch.fo"; fp: "ch.fp"; fq: "ch.fq"; fr: "ch.fr"; fs: "ch.fs"; ft: "ch.ft"; fu: "ch.fu"; fv: "ch.fv"; fw: "ch.fw"; fx: "ch.fx"; fy: "ch.fy"; fz: "ch.fz"; ga: "ch.ga"; gb: "ch.gb"; gc: "ch.gc"; gd: "ch.gd"; ge: "ch.ge"; gf: "ch.gf"; gg: "ch.gg"; gh: "ch.gh"; gi: "ch.gi"; gj: "ch.gj"; gk: "ch.gk"; gl: "ch.gl"; gm: "ch.gm"; gn: "ch.gn"; go: "ch.go"; gp: "ch.gp"; gq: "ch.gq"; gr: "ch.gr"; gs: "ch.gs"; gt: "ch.gt"; gu: "ch.gu"; gv: "ch.gv"; gw: "ch.gw"; gx: "ch.gx"; gy: "ch.gy"; gz: "ch.gz"; ha: "ch.ha"; hb: "ch.hb"; hc: "ch.hc"; hd: "ch.hd"; he: "ch.he"; hf: "ch.hf"; hg: "ch.hg"; hh: "ch.hh"; hi: "ch.hi"; hj: "ch.hj"; hk: "ch.hk"; hl: "ch.hl"; hm: "ch.hm"; hn: "ch.hn"; ho: "ch.ho"; hp: "ch.hp"; hq: "ch.hq"; hr: "ch.hr"; hs: "ch.hs"; ht: "ch.ht"; hu: "ch.hu"; hv: "ch.hv"; hw: "ch.hw"; hx: "ch.hx"; hy: "ch.hy"; hz: "ch.hz"; ia: "ch.ia"; ib: "ch.ib"; ic: "ch.ic"; id: "ch.id"; ie: "ch.ie"; if: "ch.if"; ig: "ch.ig"; ih: "ch.ih"; ii: "ch.ii"; ij: "ch.ij"; ik: "ch.ik"; il: "ch.il"; im: "ch.im"; in: "ch.in"; io: "ch.io"; ip: "ch.ip"; iq: "ch.iq"; ir: "ch.ir"; is: "ch.is"; it: "ch.it"; iu: "ch.iu"; iv: "ch.iv"; iw: "ch.iw"; ix: "ch.ix"; iy: "ch.iy"; iz: "ch.iz"; ja: "ch.ja"; jb: "ch.jb"; jc: "ch.jc"; jd: "ch.jd"; je: "ch.je"; jf: "ch.jf"; jg: "ch.jg"; jh: "ch.jh"; ji: "ch.ji"; jj: "ch.jj"; jk: "ch.jk"; jl: "ch.jl"; jm: "ch.jm"; jn: "ch.jn"; jo: "ch.jo"; jp: "ch.jp"; jq: "ch.jq"; jr: "ch.jr"; js: "ch.js"; jt: "ch.jt"; ju: "ch.ju"; jv: "ch.jv"; jw: "ch.jw"; jx: "ch.jx"; jy: "ch.jy"; jz: "ch.jz"; ka: "ch.ka"; kb: "ch.kb"; kc: "ch.kc"; kd: "ch.kd"; ke: "ch.ke"; kf: "ch.kf"; kg: "ch.kg"; kh: "ch.kh"; ki: "ch.ki"; kj: "ch.kj"; kk: "ch.kk"; kl: "ch.kl"; km: "ch.km"; kn: "ch.kn"; ko: "ch.ko"; kp: "ch.kp"; kq: "ch.kq"; kr: "ch.kr"; ks: "ch.ks"; kt: "ch.kt"; ku: "ch.ku"; kv: "ch.kv"; kw: "ch.kw"; kx: "ch.kx"; ky: "ch.ky"; kz: "ch.kz"; la: "ch.la"; lb: "ch.lb"; lc: "ch.lc"; ld: "ch.ld"; le: "ch.le"; lf: "ch.lf"; lg: "ch.lg"; lh: "ch.lh"; li: "ch.li"; lj: "ch.lj"; lk: "ch.lk"; ll: "ch.ll"; lm: "ch.lm"; ln: "ch.ln"; lo: "ch.lo"; lp: "ch.lp"; lq: "ch.lq"; lr: "ch.lr"; ls: "ch.ls"; lt: "ch.lt"; lu: "ch.lu"; lv: "ch.lv"; lw: "ch.lw"; lx: "ch.lx"; ly: "ch.ly"; lz: "ch.lz"; ma: "ch.ma"; mb: "ch.mb"; mc: "ch.mc"; md: "ch.md"; me: "ch.me"; mf: "ch.mf"; mg: "ch.mg"; mh: "ch.mh"; mi: "ch.mi"; mj: "ch.mj"; mk: "ch.mk"; ml: "ch.ml"; mm: "ch.mm"; mn: "ch.mn"; mo: "ch.mo"; mp: "ch.mp"; mq: "ch.mq"; mr: "ch.mr"; ms: "ch.ms"; mt: "ch.mt"; mu: "ch.mu"; mv: "ch.mv"; mw: "ch.mw"; mx: "ch.mx"; my: "ch.my"; mz: "ch.mz"; na: "ch.na"; nb: "ch.nb"; nc: "ch.nc"; nd: "ch.nd"; ne: "ch.ne"; nf: "ch.nf"; ng: "ch.ng"; nh: "ch.nh"; ni: "ch.ni"; nj: "ch.nj"; nk: "ch.nk"; nl: "ch.nl"; nm: "ch.nm"; nn: "ch.nn"; no: "ch.no"; np: "ch.np"; nq: "ch.nq"; nr: "ch.nr"; ns: "ch.ns"; nt: "ch.nt"; nu: "ch.nu"; nv: "ch.nv"; nw: "ch.nw"; nx: "ch.nx"; ny: "ch.ny"; nz: "ch.nz"; oa: "ch.oa"; ob: "ch.ob"; oc: "ch.oc"; od: "ch.od"; oe: "ch.oe"; of: "ch.of"; og: "ch.og"; oh: "ch.oh"; oi: "ch.oi"; oj: "ch.oj"; ok: "ch.ok"; ol: "ch.ol"; om: "ch.om"; on: "ch.on"; oo: "ch.oo"; op: "ch.op"; oq: "ch.oq"; or: "ch.or"; os: "ch.os"; ot: "ch.ot"; ou: "ch.ou"; ov: "ch.ov"; ow: "ch.ow"; ox: "ch.ox"; oy: "ch.oy"; oz: "ch.oz"; pa: "ch.pa"; pb: "ch.pb"; pc: "ch.pc"; pd: "ch.pd"; pe: "ch.pe"; pf: "ch.pf"; pg: "ch.pg"; ph: "ch.ph"; pi: "ch.pi"; pj: "ch.pj"; pk: "ch.pk"; pl: "ch.pl"; pm: "ch.pm"; pn: "ch.pn"; po: "ch.po"; pp: "ch.pp"; pq: "ch.pq"; pr: "ch.pr"; ps: "ch.ps"; pt: "ch.pt"; pu: "ch.pu"; pv: "ch.pv"; pw: "ch.pw"; px: "ch.px"; py: "ch.py"; pz: "ch.pz"; qa: "ch.qa"; qb: "ch.qb"; qc: "ch.qc"; qd: "ch.qd"; qe: "ch.qe"; qf: "ch.qf"; qg: "ch.qg"; qh: "ch.qh"; qi: "ch.qi"; qj: "ch.qj"; qk: "ch.qk"; ql: "ch.ql"; qm: "ch.qm"; qn: "ch.qn"; qo: "ch.qo"; qp: "ch.qp"; qq: "ch.qq"; qr: "ch.qr"; qs: "ch.qs"; qt: "ch.qt"; qu: "ch.qu"; qv: "ch.qv"; qw: "ch.qw"; qx: "ch.qx"; qy: "ch.qy"; qz: "ch.qz"; ra: "ch.ra"; rb: "ch.rb"; rc: "ch.rc"; rd: "ch.rd"; re: "ch.re"; rf: "ch.rf"; rg: "ch.rg"; rh: "ch.rh"; ri: "ch.ri"; rj: "ch.rj"; rk: "ch.rk"; rl: "ch.rl"; rm: "ch.rm"; rn: "ch.rn"; ro: "ch.ro"; rp: "ch.rp"; rq: "ch.rq"; rr: "ch.rr"; rs: "ch.rs"; rt: "ch.rt"; ru: "ch.ru"; rv: "ch.rv"; rw: "ch.rw"; rx: "ch.rx"; ry: "ch.ry"; rz: "ch.rz"; sa: "ch.sa"; sb: "ch.sb"; sc: "ch.sc"; sd: "ch.sd"; se: "ch.se"; sf: "ch.sf"; sg: "ch.sg"; sh: "ch.sh"; si: "ch.si"; sj: "ch.sj"; sk: "ch.sk"; sl: "ch.sl"; sm: "ch.sm"; sn: "ch.sn"; so: "ch.so"; sp: "ch.sp"; sq: "ch.sq"; sr: "ch.sr"; ss: "ch.ss"; st: "ch.st"; su: "ch.su"; sv: "ch.sv"; sw: "ch.sw"; sx: "ch.sx"; sy: "ch.sy"; sz: "ch.sz"; ta: "ch.ta"; tb: "ch.tb"; tc: "ch.tc"; td: "ch.td"; te: "ch.te"; tf: "ch.tf"; tg: "ch.tg"; th: "ch.th"; ti: "ch.ti"; tj: "ch.tj"; tk: "ch.tk"; tl: "ch.tl"; tm: "ch.tm"; tn: "ch.tn"; to: "ch.to"; tp: "ch.tp"; tq: "ch.tq"; tr: "ch.tr"; ts: "ch.ts"; tt: "ch.tt"; tu: "ch.tu"; tv: "ch.tv"; tw: "ch.tw"; tx: "ch.tx"; ty: "ch.ty"; tz: "ch.tz"; ua: "ch.ua"; ub: "ch.ub"; uc: "ch.uc"; ud: "ch.ud"; ue: "ch.ue"; uf: "ch.uf"; ug: "ch.ug"; uh: "ch.uh"; ui: "ch.ui"; uj: "ch.uj"; uk: "ch.uk"; ul: "ch.ul"; um: "ch.um"; un: "ch.un"; uo: "ch.uo"; up: "ch.up"; uq: "ch.uq"; ur: "ch.ur"; us: "ch.us"; ut: "ch.ut"; uu: "ch.uu"; uv: "ch.uv"; uw: "ch.uw"; ux: "ch.ux"; uy: "ch.uy"; uz: "ch.uz"; va: "ch.va"; vb: "ch.vb"; vc: "ch.vc"; vd: "ch.vd"; ve: "ch.ve"; vf: "ch.vf"; vg: "ch.vg"; vh: "ch.vh"; vi: "ch.vi"; vj: "ch.vj"; vk: "ch.vk"; vl: "ch.vl"; vm: "ch.vm"; vn: "ch.vn"; vo: "ch.vo"; vp: "ch.vp"; vq: "ch.vq"; vr: "ch.vr"; vs: "ch.vs"; vt: "ch.vt"; vu: "ch.vu"; vv: "ch.vv"; vw: "ch.vw"; vx: "ch.vx"; vy: "ch.vy"; vz: "ch.vz"; wa: "ch.wa"; wb: "ch.wb"; wc: "ch.wc"; wd: "ch.wd"; we: "ch.we"; wf: "ch.wf"; wg: "ch.wg"; wh: "ch.wh"; wi: "ch.wi"; wj: "ch.wj"; wk: "ch.wk"; wl: "ch.wl"; wm: "ch.wm"; wn: "ch.wn"; wo: "ch.wo"; wp: "ch.wp"; wq: "ch.wq"; wr: "ch.wr"; ws: "ch.ws"; wt: "ch.wt"; wu: "ch.wu"; wv: "ch.wv"; ww: "ch.ww"; wx: "ch.wx"; wy: "ch.wy"; wz: "ch.wz"; xa: "ch.xa"; xb: "ch.xb"; xc: "ch.xc"; xd: "ch.xd"; xe: "ch.xe"; xf: "ch.xf"; xg: "ch.xg"; xh: "ch.xh"; xi: "ch.xi"; xj: "ch.xj"; xk: "ch.xk"; xl: "ch.xl"; xm: "ch.xm"; xn: "ch.xn"; xo: "ch.xo"; xp: "ch.xp"; xq: "ch.xq"; xr: "ch.xr"; xs: "ch.xs"; xt: "ch.xt"; xu: "ch.xu"; xv: "ch.xv"; xw: "ch.xw"; xx: "ch.xx"; xy: "ch.xy"; xz: "ch.xz"; ya: "ch.ya"; yb: "ch.yb"; yc: "ch.yc"; yd: "ch.yd"; ye: "ch.ye"; yf: "ch.yf"; yg: "ch.yg"; yh: "ch.yh"; yi: "ch.yi"; yj: "ch.yj"; yk: "ch.yk"; yl: "ch.yl"; ym: "ch.ym"; yn: "ch.yn"; yo: "ch.yo"; yp: "ch.yp"; yq: "ch.yq"; yr: "ch.yr"; ys: "ch.ys"; yt: "ch.yt"; yu: "ch.yu"; yv: "ch.yv"; yw: "ch.yw"; yx: "ch.yx"; yy: "ch.yy"; yz: "ch.yz"; za: "ch.za"; zb: "ch.zb"; zc: "ch.zc"; zd: "ch.zd"; ze: "ch.ze"; zf: "ch.zf"; zg: "ch.zg"; zh: "ch.zh"; zi: "ch.zi"; zj: "ch.zj"; zk: "ch.zk"; zl: "ch.zl"; zm: "ch.zm"; zn: "ch.zn"; zo: "ch.zo"; zp: "ch.zp"; zq: "ch.zq"; zr: "ch.zr"; zs: "ch.zs"; zt: "ch.zt"; zu: "ch.zu"; zv: "ch.zv"; zw: "ch.zw"; zx: "ch.zx"; zy: "ch.zy"; zz: "ch.zz"; }; ci: { aa: "ci.aa"; ab: "ci.ab"; ac: "ci.ac"; ad: "ci.ad"; ae: "ci.ae"; af: "ci.af"; ag: "ci.ag"; ah: "ci.ah"; ai: "ci.ai"; aj: "ci.aj"; ak: "ci.ak"; al: "ci.al"; am: "ci.am"; an: "ci.an"; ao: "ci.ao"; ap: "ci.ap"; aq: "ci.aq"; ar: "ci.ar"; as: "ci.as"; at: "ci.at"; au: "ci.au"; av: "ci.av"; aw: "ci.aw"; ax: "ci.ax"; ay: "ci.ay"; az: "ci.az"; ba: "ci.ba"; bb: "ci.bb"; bc: "ci.bc"; bd: "ci.bd"; be: "ci.be"; bf: "ci.bf"; bg: "ci.bg"; bh: "ci.bh"; bi: "ci.bi"; bj: "ci.bj"; bk: "ci.bk"; bl: "ci.bl"; bm: "ci.bm"; bn: "ci.bn"; bo: "ci.bo"; bp: "ci.bp"; bq: "ci.bq"; br: "ci.br"; bs: "ci.bs"; bt: "ci.bt"; bu: "ci.bu"; bv: "ci.bv"; bw: "ci.bw"; bx: "ci.bx"; by: "ci.by"; bz: "ci.bz"; ca: "ci.ca"; cb: "ci.cb"; cc: "ci.cc"; cd: "ci.cd"; ce: "ci.ce"; cf: "ci.cf"; cg: "ci.cg"; ch: "ci.ch"; ci: "ci.ci"; cj: "ci.cj"; ck: "ci.ck"; cl: "ci.cl"; cm: "ci.cm"; cn: "ci.cn"; co: "ci.co"; cp: "ci.cp"; cq: "ci.cq"; cr: "ci.cr"; cs: "ci.cs"; ct: "ci.ct"; cu: "ci.cu"; cv: "ci.cv"; cw: "ci.cw"; cx: "ci.cx"; cy: "ci.cy"; cz: "ci.cz"; da: "ci.da"; db: "ci.db"; dc: "ci.dc"; dd: "ci.dd"; de: "ci.de"; df: "ci.df"; dg: "ci.dg"; dh: "ci.dh"; di: "ci.di"; dj: "ci.dj"; dk: "ci.dk"; dl: "ci.dl"; dm: "ci.dm"; dn: "ci.dn"; do: "ci.do"; dp: "ci.dp"; dq: "ci.dq"; dr: "ci.dr"; ds: "ci.ds"; dt: "ci.dt"; du: "ci.du"; dv: "ci.dv"; dw: "ci.dw"; dx: "ci.dx"; dy: "ci.dy"; dz: "ci.dz"; ea: "ci.ea"; eb: "ci.eb"; ec: "ci.ec"; ed: "ci.ed"; ee: "ci.ee"; ef: "ci.ef"; eg: "ci.eg"; eh: "ci.eh"; ei: "ci.ei"; ej: "ci.ej"; ek: "ci.ek"; el: "ci.el"; em: "ci.em"; en: "ci.en"; eo: "ci.eo"; ep: "ci.ep"; eq: "ci.eq"; er: "ci.er"; es: "ci.es"; et: "ci.et"; eu: "ci.eu"; ev: "ci.ev"; ew: "ci.ew"; ex: "ci.ex"; ey: "ci.ey"; ez: "ci.ez"; fa: "ci.fa"; fb: "ci.fb"; fc: "ci.fc"; fd: "ci.fd"; fe: "ci.fe"; ff: "ci.ff"; fg: "ci.fg"; fh: "ci.fh"; fi: "ci.fi"; fj: "ci.fj"; fk: "ci.fk"; fl: "ci.fl"; fm: "ci.fm"; fn: "ci.fn"; fo: "ci.fo"; fp: "ci.fp"; fq: "ci.fq"; fr: "ci.fr"; fs: "ci.fs"; ft: "ci.ft"; fu: "ci.fu"; fv: "ci.fv"; fw: "ci.fw"; fx: "ci.fx"; fy: "ci.fy"; fz: "ci.fz"; ga: "ci.ga"; gb: "ci.gb"; gc: "ci.gc"; gd: "ci.gd"; ge: "ci.ge"; gf: "ci.gf"; gg: "ci.gg"; gh: "ci.gh"; gi: "ci.gi"; gj: "ci.gj"; gk: "ci.gk"; gl: "ci.gl"; gm: "ci.gm"; gn: "ci.gn"; go: "ci.go"; gp: "ci.gp"; gq: "ci.gq"; gr: "ci.gr"; gs: "ci.gs"; gt: "ci.gt"; gu: "ci.gu"; gv: "ci.gv"; gw: "ci.gw"; gx: "ci.gx"; gy: "ci.gy"; gz: "ci.gz"; ha: "ci.ha"; hb: "ci.hb"; hc: "ci.hc"; hd: "ci.hd"; he: "ci.he"; hf: "ci.hf"; hg: "ci.hg"; hh: "ci.hh"; hi: "ci.hi"; hj: "ci.hj"; hk: "ci.hk"; hl: "ci.hl"; hm: "ci.hm"; hn: "ci.hn"; ho: "ci.ho"; hp: "ci.hp"; hq: "ci.hq"; hr: "ci.hr"; hs: "ci.hs"; ht: "ci.ht"; hu: "ci.hu"; hv: "ci.hv"; hw: "ci.hw"; hx: "ci.hx"; hy: "ci.hy"; hz: "ci.hz"; ia: "ci.ia"; ib: "ci.ib"; ic: "ci.ic"; id: "ci.id"; ie: "ci.ie"; if: "ci.if"; ig: "ci.ig"; ih: "ci.ih"; ii: "ci.ii"; ij: "ci.ij"; ik: "ci.ik"; il: "ci.il"; im: "ci.im"; in: "ci.in"; io: "ci.io"; ip: "ci.ip"; iq: "ci.iq"; ir: "ci.ir"; is: "ci.is"; it: "ci.it"; iu: "ci.iu"; iv: "ci.iv"; iw: "ci.iw"; ix: "ci.ix"; iy: "ci.iy"; iz: "ci.iz"; ja: "ci.ja"; jb: "ci.jb"; jc: "ci.jc"; jd: "ci.jd"; je: "ci.je"; jf: "ci.jf"; jg: "ci.jg"; jh: "ci.jh"; ji: "ci.ji"; jj: "ci.jj"; jk: "ci.jk"; jl: "ci.jl"; jm: "ci.jm"; jn: "ci.jn"; jo: "ci.jo"; jp: "ci.jp"; jq: "ci.jq"; jr: "ci.jr"; js: "ci.js"; jt: "ci.jt"; ju: "ci.ju"; jv: "ci.jv"; jw: "ci.jw"; jx: "ci.jx"; jy: "ci.jy"; jz: "ci.jz"; ka: "ci.ka"; kb: "ci.kb"; kc: "ci.kc"; kd: "ci.kd"; ke: "ci.ke"; kf: "ci.kf"; kg: "ci.kg"; kh: "ci.kh"; ki: "ci.ki"; kj: "ci.kj"; kk: "ci.kk"; kl: "ci.kl"; km: "ci.km"; kn: "ci.kn"; ko: "ci.ko"; kp: "ci.kp"; kq: "ci.kq"; kr: "ci.kr"; ks: "ci.ks"; kt: "ci.kt"; ku: "ci.ku"; kv: "ci.kv"; kw: "ci.kw"; kx: "ci.kx"; ky: "ci.ky"; kz: "ci.kz"; la: "ci.la"; lb: "ci.lb"; lc: "ci.lc"; ld: "ci.ld"; le: "ci.le"; lf: "ci.lf"; lg: "ci.lg"; lh: "ci.lh"; li: "ci.li"; lj: "ci.lj"; lk: "ci.lk"; ll: "ci.ll"; lm: "ci.lm"; ln: "ci.ln"; lo: "ci.lo"; lp: "ci.lp"; lq: "ci.lq"; lr: "ci.lr"; ls: "ci.ls"; lt: "ci.lt"; lu: "ci.lu"; lv: "ci.lv"; lw: "ci.lw"; lx: "ci.lx"; ly: "ci.ly"; lz: "ci.lz"; ma: "ci.ma"; mb: "ci.mb"; mc: "ci.mc"; md: "ci.md"; me: "ci.me"; mf: "ci.mf"; mg: "ci.mg"; mh: "ci.mh"; mi: "ci.mi"; mj: "ci.mj"; mk: "ci.mk"; ml: "ci.ml"; mm: "ci.mm"; mn: "ci.mn"; mo: "ci.mo"; mp: "ci.mp"; mq: "ci.mq"; mr: "ci.mr"; ms: "ci.ms"; mt: "ci.mt"; mu: "ci.mu"; mv: "ci.mv"; mw: "ci.mw"; mx: "ci.mx"; my: "ci.my"; mz: "ci.mz"; na: "ci.na"; nb: "ci.nb"; nc: "ci.nc"; nd: "ci.nd"; ne: "ci.ne"; nf: "ci.nf"; ng: "ci.ng"; nh: "ci.nh"; ni: "ci.ni"; nj: "ci.nj"; nk: "ci.nk"; nl: "ci.nl"; nm: "ci.nm"; nn: "ci.nn"; no: "ci.no"; np: "ci.np"; nq: "ci.nq"; nr: "ci.nr"; ns: "ci.ns"; nt: "ci.nt"; nu: "ci.nu"; nv: "ci.nv"; nw: "ci.nw"; nx: "ci.nx"; ny: "ci.ny"; nz: "ci.nz"; oa: "ci.oa"; ob: "ci.ob"; oc: "ci.oc"; od: "ci.od"; oe: "ci.oe"; of: "ci.of"; og: "ci.og"; oh: "ci.oh"; oi: "ci.oi"; oj: "ci.oj"; ok: "ci.ok"; ol: "ci.ol"; om: "ci.om"; on: "ci.on"; oo: "ci.oo"; op: "ci.op"; oq: "ci.oq"; or: "ci.or"; os: "ci.os"; ot: "ci.ot"; ou: "ci.ou"; ov: "ci.ov"; ow: "ci.ow"; ox: "ci.ox"; oy: "ci.oy"; oz: "ci.oz"; pa: "ci.pa"; pb: "ci.pb"; pc: "ci.pc"; pd: "ci.pd"; pe: "ci.pe"; pf: "ci.pf"; pg: "ci.pg"; ph: "ci.ph"; pi: "ci.pi"; pj: "ci.pj"; pk: "ci.pk"; pl: "ci.pl"; pm: "ci.pm"; pn: "ci.pn"; po: "ci.po"; pp: "ci.pp"; pq: "ci.pq"; pr: "ci.pr"; ps: "ci.ps"; pt: "ci.pt"; pu: "ci.pu"; pv: "ci.pv"; pw: "ci.pw"; px: "ci.px"; py: "ci.py"; pz: "ci.pz"; qa: "ci.qa"; qb: "ci.qb"; qc: "ci.qc"; qd: "ci.qd"; qe: "ci.qe"; qf: "ci.qf"; qg: "ci.qg"; qh: "ci.qh"; qi: "ci.qi"; qj: "ci.qj"; qk: "ci.qk"; ql: "ci.ql"; qm: "ci.qm"; qn: "ci.qn"; qo: "ci.qo"; qp: "ci.qp"; qq: "ci.qq"; qr: "ci.qr"; qs: "ci.qs"; qt: "ci.qt"; qu: "ci.qu"; qv: "ci.qv"; qw: "ci.qw"; qx: "ci.qx"; qy: "ci.qy"; qz: "ci.qz"; ra: "ci.ra"; rb: "ci.rb"; rc: "ci.rc"; rd: "ci.rd"; re: "ci.re"; rf: "ci.rf"; rg: "ci.rg"; rh: "ci.rh"; ri: "ci.ri"; rj: "ci.rj"; rk: "ci.rk"; rl: "ci.rl"; rm: "ci.rm"; rn: "ci.rn"; ro: "ci.ro"; rp: "ci.rp"; rq: "ci.rq"; rr: "ci.rr"; rs: "ci.rs"; rt: "ci.rt"; ru: "ci.ru"; rv: "ci.rv"; rw: "ci.rw"; rx: "ci.rx"; ry: "ci.ry"; rz: "ci.rz"; sa: "ci.sa"; sb: "ci.sb"; sc: "ci.sc"; sd: "ci.sd"; se: "ci.se"; sf: "ci.sf"; sg: "ci.sg"; sh: "ci.sh"; si: "ci.si"; sj: "ci.sj"; sk: "ci.sk"; sl: "ci.sl"; sm: "ci.sm"; sn: "ci.sn"; so: "ci.so"; sp: "ci.sp"; sq: "ci.sq"; sr: "ci.sr"; ss: "ci.ss"; st: "ci.st"; su: "ci.su"; sv: "ci.sv"; sw: "ci.sw"; sx: "ci.sx"; sy: "ci.sy"; sz: "ci.sz"; ta: "ci.ta"; tb: "ci.tb"; tc: "ci.tc"; td: "ci.td"; te: "ci.te"; tf: "ci.tf"; tg: "ci.tg"; th: "ci.th"; ti: "ci.ti"; tj: "ci.tj"; tk: "ci.tk"; tl: "ci.tl"; tm: "ci.tm"; tn: "ci.tn"; to: "ci.to"; tp: "ci.tp"; tq: "ci.tq"; tr: "ci.tr"; ts: "ci.ts"; tt: "ci.tt"; tu: "ci.tu"; tv: "ci.tv"; tw: "ci.tw"; tx: "ci.tx"; ty: "ci.ty"; tz: "ci.tz"; ua: "ci.ua"; ub: "ci.ub"; uc: "ci.uc"; ud: "ci.ud"; ue: "ci.ue"; uf: "ci.uf"; ug: "ci.ug"; uh: "ci.uh"; ui: "ci.ui"; uj: "ci.uj"; uk: "ci.uk"; ul: "ci.ul"; um: "ci.um"; un: "ci.un"; uo: "ci.uo"; up: "ci.up"; uq: "ci.uq"; ur: "ci.ur"; us: "ci.us"; ut: "ci.ut"; uu: "ci.uu"; uv: "ci.uv"; uw: "ci.uw"; ux: "ci.ux"; uy: "ci.uy"; uz: "ci.uz"; va: "ci.va"; vb: "ci.vb"; vc: "ci.vc"; vd: "ci.vd"; ve: "ci.ve"; vf: "ci.vf"; vg: "ci.vg"; vh: "ci.vh"; vi: "ci.vi"; vj: "ci.vj"; vk: "ci.vk"; vl: "ci.vl"; vm: "ci.vm"; vn: "ci.vn"; vo: "ci.vo"; vp: "ci.vp"; vq: "ci.vq"; vr: "ci.vr"; vs: "ci.vs"; vt: "ci.vt"; vu: "ci.vu"; vv: "ci.vv"; vw: "ci.vw"; vx: "ci.vx"; vy: "ci.vy"; vz: "ci.vz"; wa: "ci.wa"; wb: "ci.wb"; wc: "ci.wc"; wd: "ci.wd"; we: "ci.we"; wf: "ci.wf"; wg: "ci.wg"; wh: "ci.wh"; wi: "ci.wi"; wj: "ci.wj"; wk: "ci.wk"; wl: "ci.wl"; wm: "ci.wm"; wn: "ci.wn"; wo: "ci.wo"; wp: "ci.wp"; wq: "ci.wq"; wr: "ci.wr"; ws: "ci.ws"; wt: "ci.wt"; wu: "ci.wu"; wv: "ci.wv"; ww: "ci.ww"; wx: "ci.wx"; wy: "ci.wy"; wz: "ci.wz"; xa: "ci.xa"; xb: "ci.xb"; xc: "ci.xc"; xd: "ci.xd"; xe: "ci.xe"; xf: "ci.xf"; xg: "ci.xg"; xh: "ci.xh"; xi: "ci.xi"; xj: "ci.xj"; xk: "ci.xk"; xl: "ci.xl"; xm: "ci.xm"; xn: "ci.xn"; xo: "ci.xo"; xp: "ci.xp"; xq: "ci.xq"; xr: "ci.xr"; xs: "ci.xs"; xt: "ci.xt"; xu: "ci.xu"; xv: "ci.xv"; xw: "ci.xw"; xx: "ci.xx"; xy: "ci.xy"; xz: "ci.xz"; ya: "ci.ya"; yb: "ci.yb"; yc: "ci.yc"; yd: "ci.yd"; ye: "ci.ye"; yf: "ci.yf"; yg: "ci.yg"; yh: "ci.yh"; yi: "ci.yi"; yj: "ci.yj"; yk: "ci.yk"; yl: "ci.yl"; ym: "ci.ym"; yn: "ci.yn"; yo: "ci.yo"; yp: "ci.yp"; yq: "ci.yq"; yr: "ci.yr"; ys: "ci.ys"; yt: "ci.yt"; yu: "ci.yu"; yv: "ci.yv"; yw: "ci.yw"; yx: "ci.yx"; yy: "ci.yy"; yz: "ci.yz"; za: "ci.za"; zb: "ci.zb"; zc: "ci.zc"; zd: "ci.zd"; ze: "ci.ze"; zf: "ci.zf"; zg: "ci.zg"; zh: "ci.zh"; zi: "ci.zi"; zj: "ci.zj"; zk: "ci.zk"; zl: "ci.zl"; zm: "ci.zm"; zn: "ci.zn"; zo: "ci.zo"; zp: "ci.zp"; zq: "ci.zq"; zr: "ci.zr"; zs: "ci.zs"; zt: "ci.zt"; zu: "ci.zu"; zv: "ci.zv"; zw: "ci.zw"; zx: "ci.zx"; zy: "ci.zy"; zz: "ci.zz"; }; cj: { aa: "cj.aa"; ab: "cj.ab"; ac: "cj.ac"; ad: "cj.ad"; ae: "cj.ae"; af: "cj.af"; ag: "cj.ag"; ah: "cj.ah"; ai: "cj.ai"; aj: "cj.aj"; ak: "cj.ak"; al: "cj.al"; am: "cj.am"; an: "cj.an"; ao: "cj.ao"; ap: "cj.ap"; aq: "cj.aq"; ar: "cj.ar"; as: "cj.as"; at: "cj.at"; au: "cj.au"; av: "cj.av"; aw: "cj.aw"; ax: "cj.ax"; ay: "cj.ay"; az: "cj.az"; ba: "cj.ba"; bb: "cj.bb"; bc: "cj.bc"; bd: "cj.bd"; be: "cj.be"; bf: "cj.bf"; bg: "cj.bg"; bh: "cj.bh"; bi: "cj.bi"; bj: "cj.bj"; bk: "cj.bk"; bl: "cj.bl"; bm: "cj.bm"; bn: "cj.bn"; bo: "cj.bo"; bp: "cj.bp"; bq: "cj.bq"; br: "cj.br"; bs: "cj.bs"; bt: "cj.bt"; bu: "cj.bu"; bv: "cj.bv"; bw: "cj.bw"; bx: "cj.bx"; by: "cj.by"; bz: "cj.bz"; ca: "cj.ca"; cb: "cj.cb"; cc: "cj.cc"; cd: "cj.cd"; ce: "cj.ce"; cf: "cj.cf"; cg: "cj.cg"; ch: "cj.ch"; ci: "cj.ci"; cj: "cj.cj"; ck: "cj.ck"; cl: "cj.cl"; cm: "cj.cm"; cn: "cj.cn"; co: "cj.co"; cp: "cj.cp"; cq: "cj.cq"; cr: "cj.cr"; cs: "cj.cs"; ct: "cj.ct"; cu: "cj.cu"; cv: "cj.cv"; cw: "cj.cw"; cx: "cj.cx"; cy: "cj.cy"; cz: "cj.cz"; da: "cj.da"; db: "cj.db"; dc: "cj.dc"; dd: "cj.dd"; de: "cj.de"; df: "cj.df"; dg: "cj.dg"; dh: "cj.dh"; di: "cj.di"; dj: "cj.dj"; dk: "cj.dk"; dl: "cj.dl"; dm: "cj.dm"; dn: "cj.dn"; do: "cj.do"; dp: "cj.dp"; dq: "cj.dq"; dr: "cj.dr"; ds: "cj.ds"; dt: "cj.dt"; du: "cj.du"; dv: "cj.dv"; dw: "cj.dw"; dx: "cj.dx"; dy: "cj.dy"; dz: "cj.dz"; ea: "cj.ea"; eb: "cj.eb"; ec: "cj.ec"; ed: "cj.ed"; ee: "cj.ee"; ef: "cj.ef"; eg: "cj.eg"; eh: "cj.eh"; ei: "cj.ei"; ej: "cj.ej"; ek: "cj.ek"; el: "cj.el"; em: "cj.em"; en: "cj.en"; eo: "cj.eo"; ep: "cj.ep"; eq: "cj.eq"; er: "cj.er"; es: "cj.es"; et: "cj.et"; eu: "cj.eu"; ev: "cj.ev"; ew: "cj.ew"; ex: "cj.ex"; ey: "cj.ey"; ez: "cj.ez"; fa: "cj.fa"; fb: "cj.fb"; fc: "cj.fc"; fd: "cj.fd"; fe: "cj.fe"; ff: "cj.ff"; fg: "cj.fg"; fh: "cj.fh"; fi: "cj.fi"; fj: "cj.fj"; fk: "cj.fk"; fl: "cj.fl"; fm: "cj.fm"; fn: "cj.fn"; fo: "cj.fo"; fp: "cj.fp"; fq: "cj.fq"; fr: "cj.fr"; fs: "cj.fs"; ft: "cj.ft"; fu: "cj.fu"; fv: "cj.fv"; fw: "cj.fw"; fx: "cj.fx"; fy: "cj.fy"; fz: "cj.fz"; ga: "cj.ga"; gb: "cj.gb"; gc: "cj.gc"; gd: "cj.gd"; ge: "cj.ge"; gf: "cj.gf"; gg: "cj.gg"; gh: "cj.gh"; gi: "cj.gi"; gj: "cj.gj"; gk: "cj.gk"; gl: "cj.gl"; gm: "cj.gm"; gn: "cj.gn"; go: "cj.go"; gp: "cj.gp"; gq: "cj.gq"; gr: "cj.gr"; gs: "cj.gs"; gt: "cj.gt"; gu: "cj.gu"; gv: "cj.gv"; gw: "cj.gw"; gx: "cj.gx"; gy: "cj.gy"; gz: "cj.gz"; ha: "cj.ha"; hb: "cj.hb"; hc: "cj.hc"; hd: "cj.hd"; he: "cj.he"; hf: "cj.hf"; hg: "cj.hg"; hh: "cj.hh"; hi: "cj.hi"; hj: "cj.hj"; hk: "cj.hk"; hl: "cj.hl"; hm: "cj.hm"; hn: "cj.hn"; ho: "cj.ho"; hp: "cj.hp"; hq: "cj.hq"; hr: "cj.hr"; hs: "cj.hs"; ht: "cj.ht"; hu: "cj.hu"; hv: "cj.hv"; hw: "cj.hw"; hx: "cj.hx"; hy: "cj.hy"; hz: "cj.hz"; ia: "cj.ia"; ib: "cj.ib"; ic: "cj.ic"; id: "cj.id"; ie: "cj.ie"; if: "cj.if"; ig: "cj.ig"; ih: "cj.ih"; ii: "cj.ii"; ij: "cj.ij"; ik: "cj.ik"; il: "cj.il"; im: "cj.im"; in: "cj.in"; io: "cj.io"; ip: "cj.ip"; iq: "cj.iq"; ir: "cj.ir"; is: "cj.is"; it: "cj.it"; iu: "cj.iu"; iv: "cj.iv"; iw: "cj.iw"; ix: "cj.ix"; iy: "cj.iy"; iz: "cj.iz"; ja: "cj.ja"; jb: "cj.jb"; jc: "cj.jc"; jd: "cj.jd"; je: "cj.je"; jf: "cj.jf"; jg: "cj.jg"; jh: "cj.jh"; ji: "cj.ji"; jj: "cj.jj"; jk: "cj.jk"; jl: "cj.jl"; jm: "cj.jm"; jn: "cj.jn"; jo: "cj.jo"; jp: "cj.jp"; jq: "cj.jq"; jr: "cj.jr"; js: "cj.js"; jt: "cj.jt"; ju: "cj.ju"; jv: "cj.jv"; jw: "cj.jw"; jx: "cj.jx"; jy: "cj.jy"; jz: "cj.jz"; ka: "cj.ka"; kb: "cj.kb"; kc: "cj.kc"; kd: "cj.kd"; ke: "cj.ke"; kf: "cj.kf"; kg: "cj.kg"; kh: "cj.kh"; ki: "cj.ki"; kj: "cj.kj"; kk: "cj.kk"; kl: "cj.kl"; km: "cj.km"; kn: "cj.kn"; ko: "cj.ko"; kp: "cj.kp"; kq: "cj.kq"; kr: "cj.kr"; ks: "cj.ks"; kt: "cj.kt"; ku: "cj.ku"; kv: "cj.kv"; kw: "cj.kw"; kx: "cj.kx"; ky: "cj.ky"; kz: "cj.kz"; la: "cj.la"; lb: "cj.lb"; lc: "cj.lc"; ld: "cj.ld"; le: "cj.le"; lf: "cj.lf"; lg: "cj.lg"; lh: "cj.lh"; li: "cj.li"; lj: "cj.lj"; lk: "cj.lk"; ll: "cj.ll"; lm: "cj.lm"; ln: "cj.ln"; lo: "cj.lo"; lp: "cj.lp"; lq: "cj.lq"; lr: "cj.lr"; ls: "cj.ls"; lt: "cj.lt"; lu: "cj.lu"; lv: "cj.lv"; lw: "cj.lw"; lx: "cj.lx"; ly: "cj.ly"; lz: "cj.lz"; ma: "cj.ma"; mb: "cj.mb"; mc: "cj.mc"; md: "cj.md"; me: "cj.me"; mf: "cj.mf"; mg: "cj.mg"; mh: "cj.mh"; mi: "cj.mi"; mj: "cj.mj"; mk: "cj.mk"; ml: "cj.ml"; mm: "cj.mm"; mn: "cj.mn"; mo: "cj.mo"; mp: "cj.mp"; mq: "cj.mq"; mr: "cj.mr"; ms: "cj.ms"; mt: "cj.mt"; mu: "cj.mu"; mv: "cj.mv"; mw: "cj.mw"; mx: "cj.mx"; my: "cj.my"; mz: "cj.mz"; na: "cj.na"; nb: "cj.nb"; nc: "cj.nc"; nd: "cj.nd"; ne: "cj.ne"; nf: "cj.nf"; ng: "cj.ng"; nh: "cj.nh"; ni: "cj.ni"; nj: "cj.nj"; nk: "cj.nk"; nl: "cj.nl"; nm: "cj.nm"; nn: "cj.nn"; no: "cj.no"; np: "cj.np"; nq: "cj.nq"; nr: "cj.nr"; ns: "cj.ns"; nt: "cj.nt"; nu: "cj.nu"; nv: "cj.nv"; nw: "cj.nw"; nx: "cj.nx"; ny: "cj.ny"; nz: "cj.nz"; oa: "cj.oa"; ob: "cj.ob"; oc: "cj.oc"; od: "cj.od"; oe: "cj.oe"; of: "cj.of"; og: "cj.og"; oh: "cj.oh"; oi: "cj.oi"; oj: "cj.oj"; ok: "cj.ok"; ol: "cj.ol"; om: "cj.om"; on: "cj.on"; oo: "cj.oo"; op: "cj.op"; oq: "cj.oq"; or: "cj.or"; os: "cj.os"; ot: "cj.ot"; ou: "cj.ou"; ov: "cj.ov"; ow: "cj.ow"; ox: "cj.ox"; oy: "cj.oy"; oz: "cj.oz"; pa: "cj.pa"; pb: "cj.pb"; pc: "cj.pc"; pd: "cj.pd"; pe: "cj.pe"; pf: "cj.pf"; pg: "cj.pg"; ph: "cj.ph"; pi: "cj.pi"; pj: "cj.pj"; pk: "cj.pk"; pl: "cj.pl"; pm: "cj.pm"; pn: "cj.pn"; po: "cj.po"; pp: "cj.pp"; pq: "cj.pq"; pr: "cj.pr"; ps: "cj.ps"; pt: "cj.pt"; pu: "cj.pu"; pv: "cj.pv"; pw: "cj.pw"; px: "cj.px"; py: "cj.py"; pz: "cj.pz"; qa: "cj.qa"; qb: "cj.qb"; qc: "cj.qc"; qd: "cj.qd"; qe: "cj.qe"; qf: "cj.qf"; qg: "cj.qg"; qh: "cj.qh"; qi: "cj.qi"; qj: "cj.qj"; qk: "cj.qk"; ql: "cj.ql"; qm: "cj.qm"; qn: "cj.qn"; qo: "cj.qo"; qp: "cj.qp"; qq: "cj.qq"; qr: "cj.qr"; qs: "cj.qs"; qt: "cj.qt"; qu: "cj.qu"; qv: "cj.qv"; qw: "cj.qw"; qx: "cj.qx"; qy: "cj.qy"; qz: "cj.qz"; ra: "cj.ra"; rb: "cj.rb"; rc: "cj.rc"; rd: "cj.rd"; re: "cj.re"; rf: "cj.rf"; rg: "cj.rg"; rh: "cj.rh"; ri: "cj.ri"; rj: "cj.rj"; rk: "cj.rk"; rl: "cj.rl"; rm: "cj.rm"; rn: "cj.rn"; ro: "cj.ro"; rp: "cj.rp"; rq: "cj.rq"; rr: "cj.rr"; rs: "cj.rs"; rt: "cj.rt"; ru: "cj.ru"; rv: "cj.rv"; rw: "cj.rw"; rx: "cj.rx"; ry: "cj.ry"; rz: "cj.rz"; sa: "cj.sa"; sb: "cj.sb"; sc: "cj.sc"; sd: "cj.sd"; se: "cj.se"; sf: "cj.sf"; sg: "cj.sg"; sh: "cj.sh"; si: "cj.si"; sj: "cj.sj"; sk: "cj.sk"; sl: "cj.sl"; sm: "cj.sm"; sn: "cj.sn"; so: "cj.so"; sp: "cj.sp"; sq: "cj.sq"; sr: "cj.sr"; ss: "cj.ss"; st: "cj.st"; su: "cj.su"; sv: "cj.sv"; sw: "cj.sw"; sx: "cj.sx"; sy: "cj.sy"; sz: "cj.sz"; ta: "cj.ta"; tb: "cj.tb"; tc: "cj.tc"; td: "cj.td"; te: "cj.te"; tf: "cj.tf"; tg: "cj.tg"; th: "cj.th"; ti: "cj.ti"; tj: "cj.tj"; tk: "cj.tk"; tl: "cj.tl"; tm: "cj.tm"; tn: "cj.tn"; to: "cj.to"; tp: "cj.tp"; tq: "cj.tq"; tr: "cj.tr"; ts: "cj.ts"; tt: "cj.tt"; tu: "cj.tu"; tv: "cj.tv"; tw: "cj.tw"; tx: "cj.tx"; ty: "cj.ty"; tz: "cj.tz"; ua: "cj.ua"; ub: "cj.ub"; uc: "cj.uc"; ud: "cj.ud"; ue: "cj.ue"; uf: "cj.uf"; ug: "cj.ug"; uh: "cj.uh"; ui: "cj.ui"; uj: "cj.uj"; uk: "cj.uk"; ul: "cj.ul"; um: "cj.um"; un: "cj.un"; uo: "cj.uo"; up: "cj.up"; uq: "cj.uq"; ur: "cj.ur"; us: "cj.us"; ut: "cj.ut"; uu: "cj.uu"; uv: "cj.uv"; uw: "cj.uw"; ux: "cj.ux"; uy: "cj.uy"; uz: "cj.uz"; va: "cj.va"; vb: "cj.vb"; vc: "cj.vc"; vd: "cj.vd"; ve: "cj.ve"; vf: "cj.vf"; vg: "cj.vg"; vh: "cj.vh"; vi: "cj.vi"; vj: "cj.vj"; vk: "cj.vk"; vl: "cj.vl"; vm: "cj.vm"; vn: "cj.vn"; vo: "cj.vo"; vp: "cj.vp"; vq: "cj.vq"; vr: "cj.vr"; vs: "cj.vs"; vt: "cj.vt"; vu: "cj.vu"; vv: "cj.vv"; vw: "cj.vw"; vx: "cj.vx"; vy: "cj.vy"; vz: "cj.vz"; wa: "cj.wa"; wb: "cj.wb"; wc: "cj.wc"; wd: "cj.wd"; we: "cj.we"; wf: "cj.wf"; wg: "cj.wg"; wh: "cj.wh"; wi: "cj.wi"; wj: "cj.wj"; wk: "cj.wk"; wl: "cj.wl"; wm: "cj.wm"; wn: "cj.wn"; wo: "cj.wo"; wp: "cj.wp"; wq: "cj.wq"; wr: "cj.wr"; ws: "cj.ws"; wt: "cj.wt"; wu: "cj.wu"; wv: "cj.wv"; ww: "cj.ww"; wx: "cj.wx"; wy: "cj.wy"; wz: "cj.wz"; xa: "cj.xa"; xb: "cj.xb"; xc: "cj.xc"; xd: "cj.xd"; xe: "cj.xe"; xf: "cj.xf"; xg: "cj.xg"; xh: "cj.xh"; xi: "cj.xi"; xj: "cj.xj"; xk: "cj.xk"; xl: "cj.xl"; xm: "cj.xm"; xn: "cj.xn"; xo: "cj.xo"; xp: "cj.xp"; xq: "cj.xq"; xr: "cj.xr"; xs: "cj.xs"; xt: "cj.xt"; xu: "cj.xu"; xv: "cj.xv"; xw: "cj.xw"; xx: "cj.xx"; xy: "cj.xy"; xz: "cj.xz"; ya: "cj.ya"; yb: "cj.yb"; yc: "cj.yc"; yd: "cj.yd"; ye: "cj.ye"; yf: "cj.yf"; yg: "cj.yg"; yh: "cj.yh"; yi: "cj.yi"; yj: "cj.yj"; yk: "cj.yk"; yl: "cj.yl"; ym: "cj.ym"; yn: "cj.yn"; yo: "cj.yo"; yp: "cj.yp"; yq: "cj.yq"; yr: "cj.yr"; ys: "cj.ys"; yt: "cj.yt"; yu: "cj.yu"; yv: "cj.yv"; yw: "cj.yw"; yx: "cj.yx"; yy: "cj.yy"; yz: "cj.yz"; za: "cj.za"; zb: "cj.zb"; zc: "cj.zc"; zd: "cj.zd"; ze: "cj.ze"; zf: "cj.zf"; zg: "cj.zg"; zh: "cj.zh"; zi: "cj.zi"; zj: "cj.zj"; zk: "cj.zk"; zl: "cj.zl"; zm: "cj.zm"; zn: "cj.zn"; zo: "cj.zo"; zp: "cj.zp"; zq: "cj.zq"; zr: "cj.zr"; zs: "cj.zs"; zt: "cj.zt"; zu: "cj.zu"; zv: "cj.zv"; zw: "cj.zw"; zx: "cj.zx"; zy: "cj.zy"; zz: "cj.zz"; }; ck: { aa: "ck.aa"; ab: "ck.ab"; ac: "ck.ac"; ad: "ck.ad"; ae: "ck.ae"; af: "ck.af"; ag: "ck.ag"; ah: "ck.ah"; ai: "ck.ai"; aj: "ck.aj"; ak: "ck.ak"; al: "ck.al"; am: "ck.am"; an: "ck.an"; ao: "ck.ao"; ap: "ck.ap"; aq: "ck.aq"; ar: "ck.ar"; as: "ck.as"; at: "ck.at"; au: "ck.au"; av: "ck.av"; aw: "ck.aw"; ax: "ck.ax"; ay: "ck.ay"; az: "ck.az"; ba: "ck.ba"; bb: "ck.bb"; bc: "ck.bc"; bd: "ck.bd"; be: "ck.be"; bf: "ck.bf"; bg: "ck.bg"; bh: "ck.bh"; bi: "ck.bi"; bj: "ck.bj"; bk: "ck.bk"; bl: "ck.bl"; bm: "ck.bm"; bn: "ck.bn"; bo: "ck.bo"; bp: "ck.bp"; bq: "ck.bq"; br: "ck.br"; bs: "ck.bs"; bt: "ck.bt"; bu: "ck.bu"; bv: "ck.bv"; bw: "ck.bw"; bx: "ck.bx"; by: "ck.by"; bz: "ck.bz"; ca: "ck.ca"; cb: "ck.cb"; cc: "ck.cc"; cd: "ck.cd"; ce: "ck.ce"; cf: "ck.cf"; cg: "ck.cg"; ch: "ck.ch"; ci: "ck.ci"; cj: "ck.cj"; ck: "ck.ck"; cl: "ck.cl"; cm: "ck.cm"; cn: "ck.cn"; co: "ck.co"; cp: "ck.cp"; cq: "ck.cq"; cr: "ck.cr"; cs: "ck.cs"; ct: "ck.ct"; cu: "ck.cu"; cv: "ck.cv"; cw: "ck.cw"; cx: "ck.cx"; cy: "ck.cy"; cz: "ck.cz"; da: "ck.da"; db: "ck.db"; dc: "ck.dc"; dd: "ck.dd"; de: "ck.de"; df: "ck.df"; dg: "ck.dg"; dh: "ck.dh"; di: "ck.di"; dj: "ck.dj"; dk: "ck.dk"; dl: "ck.dl"; dm: "ck.dm"; dn: "ck.dn"; do: "ck.do"; dp: "ck.dp"; dq: "ck.dq"; dr: "ck.dr"; ds: "ck.ds"; dt: "ck.dt"; du: "ck.du"; dv: "ck.dv"; dw: "ck.dw"; dx: "ck.dx"; dy: "ck.dy"; dz: "ck.dz"; ea: "ck.ea"; eb: "ck.eb"; ec: "ck.ec"; ed: "ck.ed"; ee: "ck.ee"; ef: "ck.ef"; eg: "ck.eg"; eh: "ck.eh"; ei: "ck.ei"; ej: "ck.ej"; ek: "ck.ek"; el: "ck.el"; em: "ck.em"; en: "ck.en"; eo: "ck.eo"; ep: "ck.ep"; eq: "ck.eq"; er: "ck.er"; es: "ck.es"; et: "ck.et"; eu: "ck.eu"; ev: "ck.ev"; ew: "ck.ew"; ex: "ck.ex"; ey: "ck.ey"; ez: "ck.ez"; fa: "ck.fa"; fb: "ck.fb"; fc: "ck.fc"; fd: "ck.fd"; fe: "ck.fe"; ff: "ck.ff"; fg: "ck.fg"; fh: "ck.fh"; fi: "ck.fi"; fj: "ck.fj"; fk: "ck.fk"; fl: "ck.fl"; fm: "ck.fm"; fn: "ck.fn"; fo: "ck.fo"; fp: "ck.fp"; fq: "ck.fq"; fr: "ck.fr"; fs: "ck.fs"; ft: "ck.ft"; fu: "ck.fu"; fv: "ck.fv"; fw: "ck.fw"; fx: "ck.fx"; fy: "ck.fy"; fz: "ck.fz"; ga: "ck.ga"; gb: "ck.gb"; gc: "ck.gc"; gd: "ck.gd"; ge: "ck.ge"; gf: "ck.gf"; gg: "ck.gg"; gh: "ck.gh"; gi: "ck.gi"; gj: "ck.gj"; gk: "ck.gk"; gl: "ck.gl"; gm: "ck.gm"; gn: "ck.gn"; go: "ck.go"; gp: "ck.gp"; gq: "ck.gq"; gr: "ck.gr"; gs: "ck.gs"; gt: "ck.gt"; gu: "ck.gu"; gv: "ck.gv"; gw: "ck.gw"; gx: "ck.gx"; gy: "ck.gy"; gz: "ck.gz"; ha: "ck.ha"; hb: "ck.hb"; hc: "ck.hc"; hd: "ck.hd"; he: "ck.he"; hf: "ck.hf"; hg: "ck.hg"; hh: "ck.hh"; hi: "ck.hi"; hj: "ck.hj"; hk: "ck.hk"; hl: "ck.hl"; hm: "ck.hm"; hn: "ck.hn"; ho: "ck.ho"; hp: "ck.hp"; hq: "ck.hq"; hr: "ck.hr"; hs: "ck.hs"; ht: "ck.ht"; hu: "ck.hu"; hv: "ck.hv"; hw: "ck.hw"; hx: "ck.hx"; hy: "ck.hy"; hz: "ck.hz"; ia: "ck.ia"; ib: "ck.ib"; ic: "ck.ic"; id: "ck.id"; ie: "ck.ie"; if: "ck.if"; ig: "ck.ig"; ih: "ck.ih"; ii: "ck.ii"; ij: "ck.ij"; ik: "ck.ik"; il: "ck.il"; im: "ck.im"; in: "ck.in"; io: "ck.io"; ip: "ck.ip"; iq: "ck.iq"; ir: "ck.ir"; is: "ck.is"; it: "ck.it"; iu: "ck.iu"; iv: "ck.iv"; iw: "ck.iw"; ix: "ck.ix"; iy: "ck.iy"; iz: "ck.iz"; ja: "ck.ja"; jb: "ck.jb"; jc: "ck.jc"; jd: "ck.jd"; je: "ck.je"; jf: "ck.jf"; jg: "ck.jg"; jh: "ck.jh"; ji: "ck.ji"; jj: "ck.jj"; jk: "ck.jk"; jl: "ck.jl"; jm: "ck.jm"; jn: "ck.jn"; jo: "ck.jo"; jp: "ck.jp"; jq: "ck.jq"; jr: "ck.jr"; js: "ck.js"; jt: "ck.jt"; ju: "ck.ju"; jv: "ck.jv"; jw: "ck.jw"; jx: "ck.jx"; jy: "ck.jy"; jz: "ck.jz"; ka: "ck.ka"; kb: "ck.kb"; kc: "ck.kc"; kd: "ck.kd"; ke: "ck.ke"; kf: "ck.kf"; kg: "ck.kg"; kh: "ck.kh"; ki: "ck.ki"; kj: "ck.kj"; kk: "ck.kk"; kl: "ck.kl"; km: "ck.km"; kn: "ck.kn"; ko: "ck.ko"; kp: "ck.kp"; kq: "ck.kq"; kr: "ck.kr"; ks: "ck.ks"; kt: "ck.kt"; ku: "ck.ku"; kv: "ck.kv"; kw: "ck.kw"; kx: "ck.kx"; ky: "ck.ky"; kz: "ck.kz"; la: "ck.la"; lb: "ck.lb"; lc: "ck.lc"; ld: "ck.ld"; le: "ck.le"; lf: "ck.lf"; lg: "ck.lg"; lh: "ck.lh"; li: "ck.li"; lj: "ck.lj"; lk: "ck.lk"; ll: "ck.ll"; lm: "ck.lm"; ln: "ck.ln"; lo: "ck.lo"; lp: "ck.lp"; lq: "ck.lq"; lr: "ck.lr"; ls: "ck.ls"; lt: "ck.lt"; lu: "ck.lu"; lv: "ck.lv"; lw: "ck.lw"; lx: "ck.lx"; ly: "ck.ly"; lz: "ck.lz"; ma: "ck.ma"; mb: "ck.mb"; mc: "ck.mc"; md: "ck.md"; me: "ck.me"; mf: "ck.mf"; mg: "ck.mg"; mh: "ck.mh"; mi: "ck.mi"; mj: "ck.mj"; mk: "ck.mk"; ml: "ck.ml"; mm: "ck.mm"; mn: "ck.mn"; mo: "ck.mo"; mp: "ck.mp"; mq: "ck.mq"; mr: "ck.mr"; ms: "ck.ms"; mt: "ck.mt"; mu: "ck.mu"; mv: "ck.mv"; mw: "ck.mw"; mx: "ck.mx"; my: "ck.my"; mz: "ck.mz"; na: "ck.na"; nb: "ck.nb"; nc: "ck.nc"; nd: "ck.nd"; ne: "ck.ne"; nf: "ck.nf"; ng: "ck.ng"; nh: "ck.nh"; ni: "ck.ni"; nj: "ck.nj"; nk: "ck.nk"; nl: "ck.nl"; nm: "ck.nm"; nn: "ck.nn"; no: "ck.no"; np: "ck.np"; nq: "ck.nq"; nr: "ck.nr"; ns: "ck.ns"; nt: "ck.nt"; nu: "ck.nu"; nv: "ck.nv"; nw: "ck.nw"; nx: "ck.nx"; ny: "ck.ny"; nz: "ck.nz"; oa: "ck.oa"; ob: "ck.ob"; oc: "ck.oc"; od: "ck.od"; oe: "ck.oe"; of: "ck.of"; og: "ck.og"; oh: "ck.oh"; oi: "ck.oi"; oj: "ck.oj"; ok: "ck.ok"; ol: "ck.ol"; om: "ck.om"; on: "ck.on"; oo: "ck.oo"; op: "ck.op"; oq: "ck.oq"; or: "ck.or"; os: "ck.os"; ot: "ck.ot"; ou: "ck.ou"; ov: "ck.ov"; ow: "ck.ow"; ox: "ck.ox"; oy: "ck.oy"; oz: "ck.oz"; pa: "ck.pa"; pb: "ck.pb"; pc: "ck.pc"; pd: "ck.pd"; pe: "ck.pe"; pf: "ck.pf"; pg: "ck.pg"; ph: "ck.ph"; pi: "ck.pi"; pj: "ck.pj"; pk: "ck.pk"; pl: "ck.pl"; pm: "ck.pm"; pn: "ck.pn"; po: "ck.po"; pp: "ck.pp"; pq: "ck.pq"; pr: "ck.pr"; ps: "ck.ps"; pt: "ck.pt"; pu: "ck.pu"; pv: "ck.pv"; pw: "ck.pw"; px: "ck.px"; py: "ck.py"; pz: "ck.pz"; qa: "ck.qa"; qb: "ck.qb"; qc: "ck.qc"; qd: "ck.qd"; qe: "ck.qe"; qf: "ck.qf"; qg: "ck.qg"; qh: "ck.qh"; qi: "ck.qi"; qj: "ck.qj"; qk: "ck.qk"; ql: "ck.ql"; qm: "ck.qm"; qn: "ck.qn"; qo: "ck.qo"; qp: "ck.qp"; qq: "ck.qq"; qr: "ck.qr"; qs: "ck.qs"; qt: "ck.qt"; qu: "ck.qu"; qv: "ck.qv"; qw: "ck.qw"; qx: "ck.qx"; qy: "ck.qy"; qz: "ck.qz"; ra: "ck.ra"; rb: "ck.rb"; rc: "ck.rc"; rd: "ck.rd"; re: "ck.re"; rf: "ck.rf"; rg: "ck.rg"; rh: "ck.rh"; ri: "ck.ri"; rj: "ck.rj"; rk: "ck.rk"; rl: "ck.rl"; rm: "ck.rm"; rn: "ck.rn"; ro: "ck.ro"; rp: "ck.rp"; rq: "ck.rq"; rr: "ck.rr"; rs: "ck.rs"; rt: "ck.rt"; ru: "ck.ru"; rv: "ck.rv"; rw: "ck.rw"; rx: "ck.rx"; ry: "ck.ry"; rz: "ck.rz"; sa: "ck.sa"; sb: "ck.sb"; sc: "ck.sc"; sd: "ck.sd"; se: "ck.se"; sf: "ck.sf"; sg: "ck.sg"; sh: "ck.sh"; si: "ck.si"; sj: "ck.sj"; sk: "ck.sk"; sl: "ck.sl"; sm: "ck.sm"; sn: "ck.sn"; so: "ck.so"; sp: "ck.sp"; sq: "ck.sq"; sr: "ck.sr"; ss: "ck.ss"; st: "ck.st"; su: "ck.su"; sv: "ck.sv"; sw: "ck.sw"; sx: "ck.sx"; sy: "ck.sy"; sz: "ck.sz"; ta: "ck.ta"; tb: "ck.tb"; tc: "ck.tc"; td: "ck.td"; te: "ck.te"; tf: "ck.tf"; tg: "ck.tg"; th: "ck.th"; ti: "ck.ti"; tj: "ck.tj"; tk: "ck.tk"; tl: "ck.tl"; tm: "ck.tm"; tn: "ck.tn"; to: "ck.to"; tp: "ck.tp"; tq: "ck.tq"; tr: "ck.tr"; ts: "ck.ts"; tt: "ck.tt"; tu: "ck.tu"; tv: "ck.tv"; tw: "ck.tw"; tx: "ck.tx"; ty: "ck.ty"; tz: "ck.tz"; ua: "ck.ua"; ub: "ck.ub"; uc: "ck.uc"; ud: "ck.ud"; ue: "ck.ue"; uf: "ck.uf"; ug: "ck.ug"; uh: "ck.uh"; ui: "ck.ui"; uj: "ck.uj"; uk: "ck.uk"; ul: "ck.ul"; um: "ck.um"; un: "ck.un"; uo: "ck.uo"; up: "ck.up"; uq: "ck.uq"; ur: "ck.ur"; us: "ck.us"; ut: "ck.ut"; uu: "ck.uu"; uv: "ck.uv"; uw: "ck.uw"; ux: "ck.ux"; uy: "ck.uy"; uz: "ck.uz"; va: "ck.va"; vb: "ck.vb"; vc: "ck.vc"; vd: "ck.vd"; ve: "ck.ve"; vf: "ck.vf"; vg: "ck.vg"; vh: "ck.vh"; vi: "ck.vi"; vj: "ck.vj"; vk: "ck.vk"; vl: "ck.vl"; vm: "ck.vm"; vn: "ck.vn"; vo: "ck.vo"; vp: "ck.vp"; vq: "ck.vq"; vr: "ck.vr"; vs: "ck.vs"; vt: "ck.vt"; vu: "ck.vu"; vv: "ck.vv"; vw: "ck.vw"; vx: "ck.vx"; vy: "ck.vy"; vz: "ck.vz"; wa: "ck.wa"; wb: "ck.wb"; wc: "ck.wc"; wd: "ck.wd"; we: "ck.we"; wf: "ck.wf"; wg: "ck.wg"; wh: "ck.wh"; wi: "ck.wi"; wj: "ck.wj"; wk: "ck.wk"; wl: "ck.wl"; wm: "ck.wm"; wn: "ck.wn"; wo: "ck.wo"; wp: "ck.wp"; wq: "ck.wq"; wr: "ck.wr"; ws: "ck.ws"; wt: "ck.wt"; wu: "ck.wu"; wv: "ck.wv"; ww: "ck.ww"; wx: "ck.wx"; wy: "ck.wy"; wz: "ck.wz"; xa: "ck.xa"; xb: "ck.xb"; xc: "ck.xc"; xd: "ck.xd"; xe: "ck.xe"; xf: "ck.xf"; xg: "ck.xg"; xh: "ck.xh"; xi: "ck.xi"; xj: "ck.xj"; xk: "ck.xk"; xl: "ck.xl"; xm: "ck.xm"; xn: "ck.xn"; xo: "ck.xo"; xp: "ck.xp"; xq: "ck.xq"; xr: "ck.xr"; xs: "ck.xs"; xt: "ck.xt"; xu: "ck.xu"; xv: "ck.xv"; xw: "ck.xw"; xx: "ck.xx"; xy: "ck.xy"; xz: "ck.xz"; ya: "ck.ya"; yb: "ck.yb"; yc: "ck.yc"; yd: "ck.yd"; ye: "ck.ye"; yf: "ck.yf"; yg: "ck.yg"; yh: "ck.yh"; yi: "ck.yi"; yj: "ck.yj"; yk: "ck.yk"; yl: "ck.yl"; ym: "ck.ym"; yn: "ck.yn"; yo: "ck.yo"; yp: "ck.yp"; yq: "ck.yq"; yr: "ck.yr"; ys: "ck.ys"; yt: "ck.yt"; yu: "ck.yu"; yv: "ck.yv"; yw: "ck.yw"; yx: "ck.yx"; yy: "ck.yy"; yz: "ck.yz"; za: "ck.za"; zb: "ck.zb"; zc: "ck.zc"; zd: "ck.zd"; ze: "ck.ze"; zf: "ck.zf"; zg: "ck.zg"; zh: "ck.zh"; zi: "ck.zi"; zj: "ck.zj"; zk: "ck.zk"; zl: "ck.zl"; zm: "ck.zm"; zn: "ck.zn"; zo: "ck.zo"; zp: "ck.zp"; zq: "ck.zq"; zr: "ck.zr"; zs: "ck.zs"; zt: "ck.zt"; zu: "ck.zu"; zv: "ck.zv"; zw: "ck.zw"; zx: "ck.zx"; zy: "ck.zy"; zz: "ck.zz"; }; cl: { aa: "cl.aa"; ab: "cl.ab"; ac: "cl.ac"; ad: "cl.ad"; ae: "cl.ae"; af: "cl.af"; ag: "cl.ag"; ah: "cl.ah"; ai: "cl.ai"; aj: "cl.aj"; ak: "cl.ak"; al: "cl.al"; am: "cl.am"; an: "cl.an"; ao: "cl.ao"; ap: "cl.ap"; aq: "cl.aq"; ar: "cl.ar"; as: "cl.as"; at: "cl.at"; au: "cl.au"; av: "cl.av"; aw: "cl.aw"; ax: "cl.ax"; ay: "cl.ay"; az: "cl.az"; ba: "cl.ba"; bb: "cl.bb"; bc: "cl.bc"; bd: "cl.bd"; be: "cl.be"; bf: "cl.bf"; bg: "cl.bg"; bh: "cl.bh"; bi: "cl.bi"; bj: "cl.bj"; bk: "cl.bk"; bl: "cl.bl"; bm: "cl.bm"; bn: "cl.bn"; bo: "cl.bo"; bp: "cl.bp"; bq: "cl.bq"; br: "cl.br"; bs: "cl.bs"; bt: "cl.bt"; bu: "cl.bu"; bv: "cl.bv"; bw: "cl.bw"; bx: "cl.bx"; by: "cl.by"; bz: "cl.bz"; ca: "cl.ca"; cb: "cl.cb"; cc: "cl.cc"; cd: "cl.cd"; ce: "cl.ce"; cf: "cl.cf"; cg: "cl.cg"; ch: "cl.ch"; ci: "cl.ci"; cj: "cl.cj"; ck: "cl.ck"; cl: "cl.cl"; cm: "cl.cm"; cn: "cl.cn"; co: "cl.co"; cp: "cl.cp"; cq: "cl.cq"; cr: "cl.cr"; cs: "cl.cs"; ct: "cl.ct"; cu: "cl.cu"; cv: "cl.cv"; cw: "cl.cw"; cx: "cl.cx"; cy: "cl.cy"; cz: "cl.cz"; da: "cl.da"; db: "cl.db"; dc: "cl.dc"; dd: "cl.dd"; de: "cl.de"; df: "cl.df"; dg: "cl.dg"; dh: "cl.dh"; di: "cl.di"; dj: "cl.dj"; dk: "cl.dk"; dl: "cl.dl"; dm: "cl.dm"; dn: "cl.dn"; do: "cl.do"; dp: "cl.dp"; dq: "cl.dq"; dr: "cl.dr"; ds: "cl.ds"; dt: "cl.dt"; du: "cl.du"; dv: "cl.dv"; dw: "cl.dw"; dx: "cl.dx"; dy: "cl.dy"; dz: "cl.dz"; ea: "cl.ea"; eb: "cl.eb"; ec: "cl.ec"; ed: "cl.ed"; ee: "cl.ee"; ef: "cl.ef"; eg: "cl.eg"; eh: "cl.eh"; ei: "cl.ei"; ej: "cl.ej"; ek: "cl.ek"; el: "cl.el"; em: "cl.em"; en: "cl.en"; eo: "cl.eo"; ep: "cl.ep"; eq: "cl.eq"; er: "cl.er"; es: "cl.es"; et: "cl.et"; eu: "cl.eu"; ev: "cl.ev"; ew: "cl.ew"; ex: "cl.ex"; ey: "cl.ey"; ez: "cl.ez"; fa: "cl.fa"; fb: "cl.fb"; fc: "cl.fc"; fd: "cl.fd"; fe: "cl.fe"; ff: "cl.ff"; fg: "cl.fg"; fh: "cl.fh"; fi: "cl.fi"; fj: "cl.fj"; fk: "cl.fk"; fl: "cl.fl"; fm: "cl.fm"; fn: "cl.fn"; fo: "cl.fo"; fp: "cl.fp"; fq: "cl.fq"; fr: "cl.fr"; fs: "cl.fs"; ft: "cl.ft"; fu: "cl.fu"; fv: "cl.fv"; fw: "cl.fw"; fx: "cl.fx"; fy: "cl.fy"; fz: "cl.fz"; ga: "cl.ga"; gb: "cl.gb"; gc: "cl.gc"; gd: "cl.gd"; ge: "cl.ge"; gf: "cl.gf"; gg: "cl.gg"; gh: "cl.gh"; gi: "cl.gi"; gj: "cl.gj"; gk: "cl.gk"; gl: "cl.gl"; gm: "cl.gm"; gn: "cl.gn"; go: "cl.go"; gp: "cl.gp"; gq: "cl.gq"; gr: "cl.gr"; gs: "cl.gs"; gt: "cl.gt"; gu: "cl.gu"; gv: "cl.gv"; gw: "cl.gw"; gx: "cl.gx"; gy: "cl.gy"; gz: "cl.gz"; ha: "cl.ha"; hb: "cl.hb"; hc: "cl.hc"; hd: "cl.hd"; he: "cl.he"; hf: "cl.hf"; hg: "cl.hg"; hh: "cl.hh"; hi: "cl.hi"; hj: "cl.hj"; hk: "cl.hk"; hl: "cl.hl"; hm: "cl.hm"; hn: "cl.hn"; ho: "cl.ho"; hp: "cl.hp"; hq: "cl.hq"; hr: "cl.hr"; hs: "cl.hs"; ht: "cl.ht"; hu: "cl.hu"; hv: "cl.hv"; hw: "cl.hw"; hx: "cl.hx"; hy: "cl.hy"; hz: "cl.hz"; ia: "cl.ia"; ib: "cl.ib"; ic: "cl.ic"; id: "cl.id"; ie: "cl.ie"; if: "cl.if"; ig: "cl.ig"; ih: "cl.ih"; ii: "cl.ii"; ij: "cl.ij"; ik: "cl.ik"; il: "cl.il"; im: "cl.im"; in: "cl.in"; io: "cl.io"; ip: "cl.ip"; iq: "cl.iq"; ir: "cl.ir"; is: "cl.is"; it: "cl.it"; iu: "cl.iu"; iv: "cl.iv"; iw: "cl.iw"; ix: "cl.ix"; iy: "cl.iy"; iz: "cl.iz"; ja: "cl.ja"; jb: "cl.jb"; jc: "cl.jc"; jd: "cl.jd"; je: "cl.je"; jf: "cl.jf"; jg: "cl.jg"; jh: "cl.jh"; ji: "cl.ji"; jj: "cl.jj"; jk: "cl.jk"; jl: "cl.jl"; jm: "cl.jm"; jn: "cl.jn"; jo: "cl.jo"; jp: "cl.jp"; jq: "cl.jq"; jr: "cl.jr"; js: "cl.js"; jt: "cl.jt"; ju: "cl.ju"; jv: "cl.jv"; jw: "cl.jw"; jx: "cl.jx"; jy: "cl.jy"; jz: "cl.jz"; ka: "cl.ka"; kb: "cl.kb"; kc: "cl.kc"; kd: "cl.kd"; ke: "cl.ke"; kf: "cl.kf"; kg: "cl.kg"; kh: "cl.kh"; ki: "cl.ki"; kj: "cl.kj"; kk: "cl.kk"; kl: "cl.kl"; km: "cl.km"; kn: "cl.kn"; ko: "cl.ko"; kp: "cl.kp"; kq: "cl.kq"; kr: "cl.kr"; ks: "cl.ks"; kt: "cl.kt"; ku: "cl.ku"; kv: "cl.kv"; kw: "cl.kw"; kx: "cl.kx"; ky: "cl.ky"; kz: "cl.kz"; la: "cl.la"; lb: "cl.lb"; lc: "cl.lc"; ld: "cl.ld"; le: "cl.le"; lf: "cl.lf"; lg: "cl.lg"; lh: "cl.lh"; li: "cl.li"; lj: "cl.lj"; lk: "cl.lk"; ll: "cl.ll"; lm: "cl.lm"; ln: "cl.ln"; lo: "cl.lo"; lp: "cl.lp"; lq: "cl.lq"; lr: "cl.lr"; ls: "cl.ls"; lt: "cl.lt"; lu: "cl.lu"; lv: "cl.lv"; lw: "cl.lw"; lx: "cl.lx"; ly: "cl.ly"; lz: "cl.lz"; ma: "cl.ma"; mb: "cl.mb"; mc: "cl.mc"; md: "cl.md"; me: "cl.me"; mf: "cl.mf"; mg: "cl.mg"; mh: "cl.mh"; mi: "cl.mi"; mj: "cl.mj"; mk: "cl.mk"; ml: "cl.ml"; mm: "cl.mm"; mn: "cl.mn"; mo: "cl.mo"; mp: "cl.mp"; mq: "cl.mq"; mr: "cl.mr"; ms: "cl.ms"; mt: "cl.mt"; mu: "cl.mu"; mv: "cl.mv"; mw: "cl.mw"; mx: "cl.mx"; my: "cl.my"; mz: "cl.mz"; na: "cl.na"; nb: "cl.nb"; nc: "cl.nc"; nd: "cl.nd"; ne: "cl.ne"; nf: "cl.nf"; ng: "cl.ng"; nh: "cl.nh"; ni: "cl.ni"; nj: "cl.nj"; nk: "cl.nk"; nl: "cl.nl"; nm: "cl.nm"; nn: "cl.nn"; no: "cl.no"; np: "cl.np"; nq: "cl.nq"; nr: "cl.nr"; ns: "cl.ns"; nt: "cl.nt"; nu: "cl.nu"; nv: "cl.nv"; nw: "cl.nw"; nx: "cl.nx"; ny: "cl.ny"; nz: "cl.nz"; oa: "cl.oa"; ob: "cl.ob"; oc: "cl.oc"; od: "cl.od"; oe: "cl.oe"; of: "cl.of"; og: "cl.og"; oh: "cl.oh"; oi: "cl.oi"; oj: "cl.oj"; ok: "cl.ok"; ol: "cl.ol"; om: "cl.om"; on: "cl.on"; oo: "cl.oo"; op: "cl.op"; oq: "cl.oq"; or: "cl.or"; os: "cl.os"; ot: "cl.ot"; ou: "cl.ou"; ov: "cl.ov"; ow: "cl.ow"; ox: "cl.ox"; oy: "cl.oy"; oz: "cl.oz"; pa: "cl.pa"; pb: "cl.pb"; pc: "cl.pc"; pd: "cl.pd"; pe: "cl.pe"; pf: "cl.pf"; pg: "cl.pg"; ph: "cl.ph"; pi: "cl.pi"; pj: "cl.pj"; pk: "cl.pk"; pl: "cl.pl"; pm: "cl.pm"; pn: "cl.pn"; po: "cl.po"; pp: "cl.pp"; pq: "cl.pq"; pr: "cl.pr"; ps: "cl.ps"; pt: "cl.pt"; pu: "cl.pu"; pv: "cl.pv"; pw: "cl.pw"; px: "cl.px"; py: "cl.py"; pz: "cl.pz"; qa: "cl.qa"; qb: "cl.qb"; qc: "cl.qc"; qd: "cl.qd"; qe: "cl.qe"; qf: "cl.qf"; qg: "cl.qg"; qh: "cl.qh"; qi: "cl.qi"; qj: "cl.qj"; qk: "cl.qk"; ql: "cl.ql"; qm: "cl.qm"; qn: "cl.qn"; qo: "cl.qo"; qp: "cl.qp"; qq: "cl.qq"; qr: "cl.qr"; qs: "cl.qs"; qt: "cl.qt"; qu: "cl.qu"; qv: "cl.qv"; qw: "cl.qw"; qx: "cl.qx"; qy: "cl.qy"; qz: "cl.qz"; ra: "cl.ra"; rb: "cl.rb"; rc: "cl.rc"; rd: "cl.rd"; re: "cl.re"; rf: "cl.rf"; rg: "cl.rg"; rh: "cl.rh"; ri: "cl.ri"; rj: "cl.rj"; rk: "cl.rk"; rl: "cl.rl"; rm: "cl.rm"; rn: "cl.rn"; ro: "cl.ro"; rp: "cl.rp"; rq: "cl.rq"; rr: "cl.rr"; rs: "cl.rs"; rt: "cl.rt"; ru: "cl.ru"; rv: "cl.rv"; rw: "cl.rw"; rx: "cl.rx"; ry: "cl.ry"; rz: "cl.rz"; sa: "cl.sa"; sb: "cl.sb"; sc: "cl.sc"; sd: "cl.sd"; se: "cl.se"; sf: "cl.sf"; sg: "cl.sg"; sh: "cl.sh"; si: "cl.si"; sj: "cl.sj"; sk: "cl.sk"; sl: "cl.sl"; sm: "cl.sm"; sn: "cl.sn"; so: "cl.so"; sp: "cl.sp"; sq: "cl.sq"; sr: "cl.sr"; ss: "cl.ss"; st: "cl.st"; su: "cl.su"; sv: "cl.sv"; sw: "cl.sw"; sx: "cl.sx"; sy: "cl.sy"; sz: "cl.sz"; ta: "cl.ta"; tb: "cl.tb"; tc: "cl.tc"; td: "cl.td"; te: "cl.te"; tf: "cl.tf"; tg: "cl.tg"; th: "cl.th"; ti: "cl.ti"; tj: "cl.tj"; tk: "cl.tk"; tl: "cl.tl"; tm: "cl.tm"; tn: "cl.tn"; to: "cl.to"; tp: "cl.tp"; tq: "cl.tq"; tr: "cl.tr"; ts: "cl.ts"; tt: "cl.tt"; tu: "cl.tu"; tv: "cl.tv"; tw: "cl.tw"; tx: "cl.tx"; ty: "cl.ty"; tz: "cl.tz"; ua: "cl.ua"; ub: "cl.ub"; uc: "cl.uc"; ud: "cl.ud"; ue: "cl.ue"; uf: "cl.uf"; ug: "cl.ug"; uh: "cl.uh"; ui: "cl.ui"; uj: "cl.uj"; uk: "cl.uk"; ul: "cl.ul"; um: "cl.um"; un: "cl.un"; uo: "cl.uo"; up: "cl.up"; uq: "cl.uq"; ur: "cl.ur"; us: "cl.us"; ut: "cl.ut"; uu: "cl.uu"; uv: "cl.uv"; uw: "cl.uw"; ux: "cl.ux"; uy: "cl.uy"; uz: "cl.uz"; va: "cl.va"; vb: "cl.vb"; vc: "cl.vc"; vd: "cl.vd"; ve: "cl.ve"; vf: "cl.vf"; vg: "cl.vg"; vh: "cl.vh"; vi: "cl.vi"; vj: "cl.vj"; vk: "cl.vk"; vl: "cl.vl"; vm: "cl.vm"; vn: "cl.vn"; vo: "cl.vo"; vp: "cl.vp"; vq: "cl.vq"; vr: "cl.vr"; vs: "cl.vs"; vt: "cl.vt"; vu: "cl.vu"; vv: "cl.vv"; vw: "cl.vw"; vx: "cl.vx"; vy: "cl.vy"; vz: "cl.vz"; wa: "cl.wa"; wb: "cl.wb"; wc: "cl.wc"; wd: "cl.wd"; we: "cl.we"; wf: "cl.wf"; wg: "cl.wg"; wh: "cl.wh"; wi: "cl.wi"; wj: "cl.wj"; wk: "cl.wk"; wl: "cl.wl"; wm: "cl.wm"; wn: "cl.wn"; wo: "cl.wo"; wp: "cl.wp"; wq: "cl.wq"; wr: "cl.wr"; ws: "cl.ws"; wt: "cl.wt"; wu: "cl.wu"; wv: "cl.wv"; ww: "cl.ww"; wx: "cl.wx"; wy: "cl.wy"; wz: "cl.wz"; xa: "cl.xa"; xb: "cl.xb"; xc: "cl.xc"; xd: "cl.xd"; xe: "cl.xe"; xf: "cl.xf"; xg: "cl.xg"; xh: "cl.xh"; xi: "cl.xi"; xj: "cl.xj"; xk: "cl.xk"; xl: "cl.xl"; xm: "cl.xm"; xn: "cl.xn"; xo: "cl.xo"; xp: "cl.xp"; xq: "cl.xq"; xr: "cl.xr"; xs: "cl.xs"; xt: "cl.xt"; xu: "cl.xu"; xv: "cl.xv"; xw: "cl.xw"; xx: "cl.xx"; xy: "cl.xy"; xz: "cl.xz"; ya: "cl.ya"; yb: "cl.yb"; yc: "cl.yc"; yd: "cl.yd"; ye: "cl.ye"; yf: "cl.yf"; yg: "cl.yg"; yh: "cl.yh"; yi: "cl.yi"; yj: "cl.yj"; yk: "cl.yk"; yl: "cl.yl"; ym: "cl.ym"; yn: "cl.yn"; yo: "cl.yo"; yp: "cl.yp"; yq: "cl.yq"; yr: "cl.yr"; ys: "cl.ys"; yt: "cl.yt"; yu: "cl.yu"; yv: "cl.yv"; yw: "cl.yw"; yx: "cl.yx"; yy: "cl.yy"; yz: "cl.yz"; za: "cl.za"; zb: "cl.zb"; zc: "cl.zc"; zd: "cl.zd"; ze: "cl.ze"; zf: "cl.zf"; zg: "cl.zg"; zh: "cl.zh"; zi: "cl.zi"; zj: "cl.zj"; zk: "cl.zk"; zl: "cl.zl"; zm: "cl.zm"; zn: "cl.zn"; zo: "cl.zo"; zp: "cl.zp"; zq: "cl.zq"; zr: "cl.zr"; zs: "cl.zs"; zt: "cl.zt"; zu: "cl.zu"; zv: "cl.zv"; zw: "cl.zw"; zx: "cl.zx"; zy: "cl.zy"; zz: "cl.zz"; }; cm: { aa: "cm.aa"; ab: "cm.ab"; ac: "cm.ac"; ad: "cm.ad"; ae: "cm.ae"; af: "cm.af"; ag: "cm.ag"; ah: "cm.ah"; ai: "cm.ai"; aj: "cm.aj"; ak: "cm.ak"; al: "cm.al"; am: "cm.am"; an: "cm.an"; ao: "cm.ao"; ap: "cm.ap"; aq: "cm.aq"; ar: "cm.ar"; as: "cm.as"; at: "cm.at"; au: "cm.au"; av: "cm.av"; aw: "cm.aw"; ax: "cm.ax"; ay: "cm.ay"; az: "cm.az"; ba: "cm.ba"; bb: "cm.bb"; bc: "cm.bc"; bd: "cm.bd"; be: "cm.be"; bf: "cm.bf"; bg: "cm.bg"; bh: "cm.bh"; bi: "cm.bi"; bj: "cm.bj"; bk: "cm.bk"; bl: "cm.bl"; bm: "cm.bm"; bn: "cm.bn"; bo: "cm.bo"; bp: "cm.bp"; bq: "cm.bq"; br: "cm.br"; bs: "cm.bs"; bt: "cm.bt"; bu: "cm.bu"; bv: "cm.bv"; bw: "cm.bw"; bx: "cm.bx"; by: "cm.by"; bz: "cm.bz"; ca: "cm.ca"; cb: "cm.cb"; cc: "cm.cc"; cd: "cm.cd"; ce: "cm.ce"; cf: "cm.cf"; cg: "cm.cg"; ch: "cm.ch"; ci: "cm.ci"; cj: "cm.cj"; ck: "cm.ck"; cl: "cm.cl"; cm: "cm.cm"; cn: "cm.cn"; co: "cm.co"; cp: "cm.cp"; cq: "cm.cq"; cr: "cm.cr"; cs: "cm.cs"; ct: "cm.ct"; cu: "cm.cu"; cv: "cm.cv"; cw: "cm.cw"; cx: "cm.cx"; cy: "cm.cy"; cz: "cm.cz"; da: "cm.da"; db: "cm.db"; dc: "cm.dc"; dd: "cm.dd"; de: "cm.de"; df: "cm.df"; dg: "cm.dg"; dh: "cm.dh"; di: "cm.di"; dj: "cm.dj"; dk: "cm.dk"; dl: "cm.dl"; dm: "cm.dm"; dn: "cm.dn"; do: "cm.do"; dp: "cm.dp"; dq: "cm.dq"; dr: "cm.dr"; ds: "cm.ds"; dt: "cm.dt"; du: "cm.du"; dv: "cm.dv"; dw: "cm.dw"; dx: "cm.dx"; dy: "cm.dy"; dz: "cm.dz"; ea: "cm.ea"; eb: "cm.eb"; ec: "cm.ec"; ed: "cm.ed"; ee: "cm.ee"; ef: "cm.ef"; eg: "cm.eg"; eh: "cm.eh"; ei: "cm.ei"; ej: "cm.ej"; ek: "cm.ek"; el: "cm.el"; em: "cm.em"; en: "cm.en"; eo: "cm.eo"; ep: "cm.ep"; eq: "cm.eq"; er: "cm.er"; es: "cm.es"; et: "cm.et"; eu: "cm.eu"; ev: "cm.ev"; ew: "cm.ew"; ex: "cm.ex"; ey: "cm.ey"; ez: "cm.ez"; fa: "cm.fa"; fb: "cm.fb"; fc: "cm.fc"; fd: "cm.fd"; fe: "cm.fe"; ff: "cm.ff"; fg: "cm.fg"; fh: "cm.fh"; fi: "cm.fi"; fj: "cm.fj"; fk: "cm.fk"; fl: "cm.fl"; fm: "cm.fm"; fn: "cm.fn"; fo: "cm.fo"; fp: "cm.fp"; fq: "cm.fq"; fr: "cm.fr"; fs: "cm.fs"; ft: "cm.ft"; fu: "cm.fu"; fv: "cm.fv"; fw: "cm.fw"; fx: "cm.fx"; fy: "cm.fy"; fz: "cm.fz"; ga: "cm.ga"; gb: "cm.gb"; gc: "cm.gc"; gd: "cm.gd"; ge: "cm.ge"; gf: "cm.gf"; gg: "cm.gg"; gh: "cm.gh"; gi: "cm.gi"; gj: "cm.gj"; gk: "cm.gk"; gl: "cm.gl"; gm: "cm.gm"; gn: "cm.gn"; go: "cm.go"; gp: "cm.gp"; gq: "cm.gq"; gr: "cm.gr"; gs: "cm.gs"; gt: "cm.gt"; gu: "cm.gu"; gv: "cm.gv"; gw: "cm.gw"; gx: "cm.gx"; gy: "cm.gy"; gz: "cm.gz"; ha: "cm.ha"; hb: "cm.hb"; hc: "cm.hc"; hd: "cm.hd"; he: "cm.he"; hf: "cm.hf"; hg: "cm.hg"; hh: "cm.hh"; hi: "cm.hi"; hj: "cm.hj"; hk: "cm.hk"; hl: "cm.hl"; hm: "cm.hm"; hn: "cm.hn"; ho: "cm.ho"; hp: "cm.hp"; hq: "cm.hq"; hr: "cm.hr"; hs: "cm.hs"; ht: "cm.ht"; hu: "cm.hu"; hv: "cm.hv"; hw: "cm.hw"; hx: "cm.hx"; hy: "cm.hy"; hz: "cm.hz"; ia: "cm.ia"; ib: "cm.ib"; ic: "cm.ic"; id: "cm.id"; ie: "cm.ie"; if: "cm.if"; ig: "cm.ig"; ih: "cm.ih"; ii: "cm.ii"; ij: "cm.ij"; ik: "cm.ik"; il: "cm.il"; im: "cm.im"; in: "cm.in"; io: "cm.io"; ip: "cm.ip"; iq: "cm.iq"; ir: "cm.ir"; is: "cm.is"; it: "cm.it"; iu: "cm.iu"; iv: "cm.iv"; iw: "cm.iw"; ix: "cm.ix"; iy: "cm.iy"; iz: "cm.iz"; ja: "cm.ja"; jb: "cm.jb"; jc: "cm.jc"; jd: "cm.jd"; je: "cm.je"; jf: "cm.jf"; jg: "cm.jg"; jh: "cm.jh"; ji: "cm.ji"; jj: "cm.jj"; jk: "cm.jk"; jl: "cm.jl"; jm: "cm.jm"; jn: "cm.jn"; jo: "cm.jo"; jp: "cm.jp"; jq: "cm.jq"; jr: "cm.jr"; js: "cm.js"; jt: "cm.jt"; ju: "cm.ju"; jv: "cm.jv"; jw: "cm.jw"; jx: "cm.jx"; jy: "cm.jy"; jz: "cm.jz"; ka: "cm.ka"; kb: "cm.kb"; kc: "cm.kc"; kd: "cm.kd"; ke: "cm.ke"; kf: "cm.kf"; kg: "cm.kg"; kh: "cm.kh"; ki: "cm.ki"; kj: "cm.kj"; kk: "cm.kk"; kl: "cm.kl"; km: "cm.km"; kn: "cm.kn"; ko: "cm.ko"; kp: "cm.kp"; kq: "cm.kq"; kr: "cm.kr"; ks: "cm.ks"; kt: "cm.kt"; ku: "cm.ku"; kv: "cm.kv"; kw: "cm.kw"; kx: "cm.kx"; ky: "cm.ky"; kz: "cm.kz"; la: "cm.la"; lb: "cm.lb"; lc: "cm.lc"; ld: "cm.ld"; le: "cm.le"; lf: "cm.lf"; lg: "cm.lg"; lh: "cm.lh"; li: "cm.li"; lj: "cm.lj"; lk: "cm.lk"; ll: "cm.ll"; lm: "cm.lm"; ln: "cm.ln"; lo: "cm.lo"; lp: "cm.lp"; lq: "cm.lq"; lr: "cm.lr"; ls: "cm.ls"; lt: "cm.lt"; lu: "cm.lu"; lv: "cm.lv"; lw: "cm.lw"; lx: "cm.lx"; ly: "cm.ly"; lz: "cm.lz"; ma: "cm.ma"; mb: "cm.mb"; mc: "cm.mc"; md: "cm.md"; me: "cm.me"; mf: "cm.mf"; mg: "cm.mg"; mh: "cm.mh"; mi: "cm.mi"; mj: "cm.mj"; mk: "cm.mk"; ml: "cm.ml"; mm: "cm.mm"; mn: "cm.mn"; mo: "cm.mo"; mp: "cm.mp"; mq: "cm.mq"; mr: "cm.mr"; ms: "cm.ms"; mt: "cm.mt"; mu: "cm.mu"; mv: "cm.mv"; mw: "cm.mw"; mx: "cm.mx"; my: "cm.my"; mz: "cm.mz"; na: "cm.na"; nb: "cm.nb"; nc: "cm.nc"; nd: "cm.nd"; ne: "cm.ne"; nf: "cm.nf"; ng: "cm.ng"; nh: "cm.nh"; ni: "cm.ni"; nj: "cm.nj"; nk: "cm.nk"; nl: "cm.nl"; nm: "cm.nm"; nn: "cm.nn"; no: "cm.no"; np: "cm.np"; nq: "cm.nq"; nr: "cm.nr"; ns: "cm.ns"; nt: "cm.nt"; nu: "cm.nu"; nv: "cm.nv"; nw: "cm.nw"; nx: "cm.nx"; ny: "cm.ny"; nz: "cm.nz"; oa: "cm.oa"; ob: "cm.ob"; oc: "cm.oc"; od: "cm.od"; oe: "cm.oe"; of: "cm.of"; og: "cm.og"; oh: "cm.oh"; oi: "cm.oi"; oj: "cm.oj"; ok: "cm.ok"; ol: "cm.ol"; om: "cm.om"; on: "cm.on"; oo: "cm.oo"; op: "cm.op"; oq: "cm.oq"; or: "cm.or"; os: "cm.os"; ot: "cm.ot"; ou: "cm.ou"; ov: "cm.ov"; ow: "cm.ow"; ox: "cm.ox"; oy: "cm.oy"; oz: "cm.oz"; pa: "cm.pa"; pb: "cm.pb"; pc: "cm.pc"; pd: "cm.pd"; pe: "cm.pe"; pf: "cm.pf"; pg: "cm.pg"; ph: "cm.ph"; pi: "cm.pi"; pj: "cm.pj"; pk: "cm.pk"; pl: "cm.pl"; pm: "cm.pm"; pn: "cm.pn"; po: "cm.po"; pp: "cm.pp"; pq: "cm.pq"; pr: "cm.pr"; ps: "cm.ps"; pt: "cm.pt"; pu: "cm.pu"; pv: "cm.pv"; pw: "cm.pw"; px: "cm.px"; py: "cm.py"; pz: "cm.pz"; qa: "cm.qa"; qb: "cm.qb"; qc: "cm.qc"; qd: "cm.qd"; qe: "cm.qe"; qf: "cm.qf"; qg: "cm.qg"; qh: "cm.qh"; qi: "cm.qi"; qj: "cm.qj"; qk: "cm.qk"; ql: "cm.ql"; qm: "cm.qm"; qn: "cm.qn"; qo: "cm.qo"; qp: "cm.qp"; qq: "cm.qq"; qr: "cm.qr"; qs: "cm.qs"; qt: "cm.qt"; qu: "cm.qu"; qv: "cm.qv"; qw: "cm.qw"; qx: "cm.qx"; qy: "cm.qy"; qz: "cm.qz"; ra: "cm.ra"; rb: "cm.rb"; rc: "cm.rc"; rd: "cm.rd"; re: "cm.re"; rf: "cm.rf"; rg: "cm.rg"; rh: "cm.rh"; ri: "cm.ri"; rj: "cm.rj"; rk: "cm.rk"; rl: "cm.rl"; rm: "cm.rm"; rn: "cm.rn"; ro: "cm.ro"; rp: "cm.rp"; rq: "cm.rq"; rr: "cm.rr"; rs: "cm.rs"; rt: "cm.rt"; ru: "cm.ru"; rv: "cm.rv"; rw: "cm.rw"; rx: "cm.rx"; ry: "cm.ry"; rz: "cm.rz"; sa: "cm.sa"; sb: "cm.sb"; sc: "cm.sc"; sd: "cm.sd"; se: "cm.se"; sf: "cm.sf"; sg: "cm.sg"; sh: "cm.sh"; si: "cm.si"; sj: "cm.sj"; sk: "cm.sk"; sl: "cm.sl"; sm: "cm.sm"; sn: "cm.sn"; so: "cm.so"; sp: "cm.sp"; sq: "cm.sq"; sr: "cm.sr"; ss: "cm.ss"; st: "cm.st"; su: "cm.su"; sv: "cm.sv"; sw: "cm.sw"; sx: "cm.sx"; sy: "cm.sy"; sz: "cm.sz"; ta: "cm.ta"; tb: "cm.tb"; tc: "cm.tc"; td: "cm.td"; te: "cm.te"; tf: "cm.tf"; tg: "cm.tg"; th: "cm.th"; ti: "cm.ti"; tj: "cm.tj"; tk: "cm.tk"; tl: "cm.tl"; tm: "cm.tm"; tn: "cm.tn"; to: "cm.to"; tp: "cm.tp"; tq: "cm.tq"; tr: "cm.tr"; ts: "cm.ts"; tt: "cm.tt"; tu: "cm.tu"; tv: "cm.tv"; tw: "cm.tw"; tx: "cm.tx"; ty: "cm.ty"; tz: "cm.tz"; ua: "cm.ua"; ub: "cm.ub"; uc: "cm.uc"; ud: "cm.ud"; ue: "cm.ue"; uf: "cm.uf"; ug: "cm.ug"; uh: "cm.uh"; ui: "cm.ui"; uj: "cm.uj"; uk: "cm.uk"; ul: "cm.ul"; um: "cm.um"; un: "cm.un"; uo: "cm.uo"; up: "cm.up"; uq: "cm.uq"; ur: "cm.ur"; us: "cm.us"; ut: "cm.ut"; uu: "cm.uu"; uv: "cm.uv"; uw: "cm.uw"; ux: "cm.ux"; uy: "cm.uy"; uz: "cm.uz"; va: "cm.va"; vb: "cm.vb"; vc: "cm.vc"; vd: "cm.vd"; ve: "cm.ve"; vf: "cm.vf"; vg: "cm.vg"; vh: "cm.vh"; vi: "cm.vi"; vj: "cm.vj"; vk: "cm.vk"; vl: "cm.vl"; vm: "cm.vm"; vn: "cm.vn"; vo: "cm.vo"; vp: "cm.vp"; vq: "cm.vq"; vr: "cm.vr"; vs: "cm.vs"; vt: "cm.vt"; vu: "cm.vu"; vv: "cm.vv"; vw: "cm.vw"; vx: "cm.vx"; vy: "cm.vy"; vz: "cm.vz"; wa: "cm.wa"; wb: "cm.wb"; wc: "cm.wc"; wd: "cm.wd"; we: "cm.we"; wf: "cm.wf"; wg: "cm.wg"; wh: "cm.wh"; wi: "cm.wi"; wj: "cm.wj"; wk: "cm.wk"; wl: "cm.wl"; wm: "cm.wm"; wn: "cm.wn"; wo: "cm.wo"; wp: "cm.wp"; wq: "cm.wq"; wr: "cm.wr"; ws: "cm.ws"; wt: "cm.wt"; wu: "cm.wu"; wv: "cm.wv"; ww: "cm.ww"; wx: "cm.wx"; wy: "cm.wy"; wz: "cm.wz"; xa: "cm.xa"; xb: "cm.xb"; xc: "cm.xc"; xd: "cm.xd"; xe: "cm.xe"; xf: "cm.xf"; xg: "cm.xg"; xh: "cm.xh"; xi: "cm.xi"; xj: "cm.xj"; xk: "cm.xk"; xl: "cm.xl"; xm: "cm.xm"; xn: "cm.xn"; xo: "cm.xo"; xp: "cm.xp"; xq: "cm.xq"; xr: "cm.xr"; xs: "cm.xs"; xt: "cm.xt"; xu: "cm.xu"; xv: "cm.xv"; xw: "cm.xw"; xx: "cm.xx"; xy: "cm.xy"; xz: "cm.xz"; ya: "cm.ya"; yb: "cm.yb"; yc: "cm.yc"; yd: "cm.yd"; ye: "cm.ye"; yf: "cm.yf"; yg: "cm.yg"; yh: "cm.yh"; yi: "cm.yi"; yj: "cm.yj"; yk: "cm.yk"; yl: "cm.yl"; ym: "cm.ym"; yn: "cm.yn"; yo: "cm.yo"; yp: "cm.yp"; yq: "cm.yq"; yr: "cm.yr"; ys: "cm.ys"; yt: "cm.yt"; yu: "cm.yu"; yv: "cm.yv"; yw: "cm.yw"; yx: "cm.yx"; yy: "cm.yy"; yz: "cm.yz"; za: "cm.za"; zb: "cm.zb"; zc: "cm.zc"; zd: "cm.zd"; ze: "cm.ze"; zf: "cm.zf"; zg: "cm.zg"; zh: "cm.zh"; zi: "cm.zi"; zj: "cm.zj"; zk: "cm.zk"; zl: "cm.zl"; zm: "cm.zm"; zn: "cm.zn"; zo: "cm.zo"; zp: "cm.zp"; zq: "cm.zq"; zr: "cm.zr"; zs: "cm.zs"; zt: "cm.zt"; zu: "cm.zu"; zv: "cm.zv"; zw: "cm.zw"; zx: "cm.zx"; zy: "cm.zy"; zz: "cm.zz"; }; cn: { aa: "cn.aa"; ab: "cn.ab"; ac: "cn.ac"; ad: "cn.ad"; ae: "cn.ae"; af: "cn.af"; ag: "cn.ag"; ah: "cn.ah"; ai: "cn.ai"; aj: "cn.aj"; ak: "cn.ak"; al: "cn.al"; am: "cn.am"; an: "cn.an"; ao: "cn.ao"; ap: "cn.ap"; aq: "cn.aq"; ar: "cn.ar"; as: "cn.as"; at: "cn.at"; au: "cn.au"; av: "cn.av"; aw: "cn.aw"; ax: "cn.ax"; ay: "cn.ay"; az: "cn.az"; ba: "cn.ba"; bb: "cn.bb"; bc: "cn.bc"; bd: "cn.bd"; be: "cn.be"; bf: "cn.bf"; bg: "cn.bg"; bh: "cn.bh"; bi: "cn.bi"; bj: "cn.bj"; bk: "cn.bk"; bl: "cn.bl"; bm: "cn.bm"; bn: "cn.bn"; bo: "cn.bo"; bp: "cn.bp"; bq: "cn.bq"; br: "cn.br"; bs: "cn.bs"; bt: "cn.bt"; bu: "cn.bu"; bv: "cn.bv"; bw: "cn.bw"; bx: "cn.bx"; by: "cn.by"; bz: "cn.bz"; ca: "cn.ca"; cb: "cn.cb"; cc: "cn.cc"; cd: "cn.cd"; ce: "cn.ce"; cf: "cn.cf"; cg: "cn.cg"; ch: "cn.ch"; ci: "cn.ci"; cj: "cn.cj"; ck: "cn.ck"; cl: "cn.cl"; cm: "cn.cm"; cn: "cn.cn"; co: "cn.co"; cp: "cn.cp"; cq: "cn.cq"; cr: "cn.cr"; cs: "cn.cs"; ct: "cn.ct"; cu: "cn.cu"; cv: "cn.cv"; cw: "cn.cw"; cx: "cn.cx"; cy: "cn.cy"; cz: "cn.cz"; da: "cn.da"; db: "cn.db"; dc: "cn.dc"; dd: "cn.dd"; de: "cn.de"; df: "cn.df"; dg: "cn.dg"; dh: "cn.dh"; di: "cn.di"; dj: "cn.dj"; dk: "cn.dk"; dl: "cn.dl"; dm: "cn.dm"; dn: "cn.dn"; do: "cn.do"; dp: "cn.dp"; dq: "cn.dq"; dr: "cn.dr"; ds: "cn.ds"; dt: "cn.dt"; du: "cn.du"; dv: "cn.dv"; dw: "cn.dw"; dx: "cn.dx"; dy: "cn.dy"; dz: "cn.dz"; ea: "cn.ea"; eb: "cn.eb"; ec: "cn.ec"; ed: "cn.ed"; ee: "cn.ee"; ef: "cn.ef"; eg: "cn.eg"; eh: "cn.eh"; ei: "cn.ei"; ej: "cn.ej"; ek: "cn.ek"; el: "cn.el"; em: "cn.em"; en: "cn.en"; eo: "cn.eo"; ep: "cn.ep"; eq: "cn.eq"; er: "cn.er"; es: "cn.es"; et: "cn.et"; eu: "cn.eu"; ev: "cn.ev"; ew: "cn.ew"; ex: "cn.ex"; ey: "cn.ey"; ez: "cn.ez"; fa: "cn.fa"; fb: "cn.fb"; fc: "cn.fc"; fd: "cn.fd"; fe: "cn.fe"; ff: "cn.ff"; fg: "cn.fg"; fh: "cn.fh"; fi: "cn.fi"; fj: "cn.fj"; fk: "cn.fk"; fl: "cn.fl"; fm: "cn.fm"; fn: "cn.fn"; fo: "cn.fo"; fp: "cn.fp"; fq: "cn.fq"; fr: "cn.fr"; fs: "cn.fs"; ft: "cn.ft"; fu: "cn.fu"; fv: "cn.fv"; fw: "cn.fw"; fx: "cn.fx"; fy: "cn.fy"; fz: "cn.fz"; ga: "cn.ga"; gb: "cn.gb"; gc: "cn.gc"; gd: "cn.gd"; ge: "cn.ge"; gf: "cn.gf"; gg: "cn.gg"; gh: "cn.gh"; gi: "cn.gi"; gj: "cn.gj"; gk: "cn.gk"; gl: "cn.gl"; gm: "cn.gm"; gn: "cn.gn"; go: "cn.go"; gp: "cn.gp"; gq: "cn.gq"; gr: "cn.gr"; gs: "cn.gs"; gt: "cn.gt"; gu: "cn.gu"; gv: "cn.gv"; gw: "cn.gw"; gx: "cn.gx"; gy: "cn.gy"; gz: "cn.gz"; ha: "cn.ha"; hb: "cn.hb"; hc: "cn.hc"; hd: "cn.hd"; he: "cn.he"; hf: "cn.hf"; hg: "cn.hg"; hh: "cn.hh"; hi: "cn.hi"; hj: "cn.hj"; hk: "cn.hk"; hl: "cn.hl"; hm: "cn.hm"; hn: "cn.hn"; ho: "cn.ho"; hp: "cn.hp"; hq: "cn.hq"; hr: "cn.hr"; hs: "cn.hs"; ht: "cn.ht"; hu: "cn.hu"; hv: "cn.hv"; hw: "cn.hw"; hx: "cn.hx"; hy: "cn.hy"; hz: "cn.hz"; ia: "cn.ia"; ib: "cn.ib"; ic: "cn.ic"; id: "cn.id"; ie: "cn.ie"; if: "cn.if"; ig: "cn.ig"; ih: "cn.ih"; ii: "cn.ii"; ij: "cn.ij"; ik: "cn.ik"; il: "cn.il"; im: "cn.im"; in: "cn.in"; io: "cn.io"; ip: "cn.ip"; iq: "cn.iq"; ir: "cn.ir"; is: "cn.is"; it: "cn.it"; iu: "cn.iu"; iv: "cn.iv"; iw: "cn.iw"; ix: "cn.ix"; iy: "cn.iy"; iz: "cn.iz"; ja: "cn.ja"; jb: "cn.jb"; jc: "cn.jc"; jd: "cn.jd"; je: "cn.je"; jf: "cn.jf"; jg: "cn.jg"; jh: "cn.jh"; ji: "cn.ji"; jj: "cn.jj"; jk: "cn.jk"; jl: "cn.jl"; jm: "cn.jm"; jn: "cn.jn"; jo: "cn.jo"; jp: "cn.jp"; jq: "cn.jq"; jr: "cn.jr"; js: "cn.js"; jt: "cn.jt"; ju: "cn.ju"; jv: "cn.jv"; jw: "cn.jw"; jx: "cn.jx"; jy: "cn.jy"; jz: "cn.jz"; ka: "cn.ka"; kb: "cn.kb"; kc: "cn.kc"; kd: "cn.kd"; ke: "cn.ke"; kf: "cn.kf"; kg: "cn.kg"; kh: "cn.kh"; ki: "cn.ki"; kj: "cn.kj"; kk: "cn.kk"; kl: "cn.kl"; km: "cn.km"; kn: "cn.kn"; ko: "cn.ko"; kp: "cn.kp"; kq: "cn.kq"; kr: "cn.kr"; ks: "cn.ks"; kt: "cn.kt"; ku: "cn.ku"; kv: "cn.kv"; kw: "cn.kw"; kx: "cn.kx"; ky: "cn.ky"; kz: "cn.kz"; la: "cn.la"; lb: "cn.lb"; lc: "cn.lc"; ld: "cn.ld"; le: "cn.le"; lf: "cn.lf"; lg: "cn.lg"; lh: "cn.lh"; li: "cn.li"; lj: "cn.lj"; lk: "cn.lk"; ll: "cn.ll"; lm: "cn.lm"; ln: "cn.ln"; lo: "cn.lo"; lp: "cn.lp"; lq: "cn.lq"; lr: "cn.lr"; ls: "cn.ls"; lt: "cn.lt"; lu: "cn.lu"; lv: "cn.lv"; lw: "cn.lw"; lx: "cn.lx"; ly: "cn.ly"; lz: "cn.lz"; ma: "cn.ma"; mb: "cn.mb"; mc: "cn.mc"; md: "cn.md"; me: "cn.me"; mf: "cn.mf"; mg: "cn.mg"; mh: "cn.mh"; mi: "cn.mi"; mj: "cn.mj"; mk: "cn.mk"; ml: "cn.ml"; mm: "cn.mm"; mn: "cn.mn"; mo: "cn.mo"; mp: "cn.mp"; mq: "cn.mq"; mr: "cn.mr"; ms: "cn.ms"; mt: "cn.mt"; mu: "cn.mu"; mv: "cn.mv"; mw: "cn.mw"; mx: "cn.mx"; my: "cn.my"; mz: "cn.mz"; na: "cn.na"; nb: "cn.nb"; nc: "cn.nc"; nd: "cn.nd"; ne: "cn.ne"; nf: "cn.nf"; ng: "cn.ng"; nh: "cn.nh"; ni: "cn.ni"; nj: "cn.nj"; nk: "cn.nk"; nl: "cn.nl"; nm: "cn.nm"; nn: "cn.nn"; no: "cn.no"; np: "cn.np"; nq: "cn.nq"; nr: "cn.nr"; ns: "cn.ns"; nt: "cn.nt"; nu: "cn.nu"; nv: "cn.nv"; nw: "cn.nw"; nx: "cn.nx"; ny: "cn.ny"; nz: "cn.nz"; oa: "cn.oa"; ob: "cn.ob"; oc: "cn.oc"; od: "cn.od"; oe: "cn.oe"; of: "cn.of"; og: "cn.og"; oh: "cn.oh"; oi: "cn.oi"; oj: "cn.oj"; ok: "cn.ok"; ol: "cn.ol"; om: "cn.om"; on: "cn.on"; oo: "cn.oo"; op: "cn.op"; oq: "cn.oq"; or: "cn.or"; os: "cn.os"; ot: "cn.ot"; ou: "cn.ou"; ov: "cn.ov"; ow: "cn.ow"; ox: "cn.ox"; oy: "cn.oy"; oz: "cn.oz"; pa: "cn.pa"; pb: "cn.pb"; pc: "cn.pc"; pd: "cn.pd"; pe: "cn.pe"; pf: "cn.pf"; pg: "cn.pg"; ph: "cn.ph"; pi: "cn.pi"; pj: "cn.pj"; pk: "cn.pk"; pl: "cn.pl"; pm: "cn.pm"; pn: "cn.pn"; po: "cn.po"; pp: "cn.pp"; pq: "cn.pq"; pr: "cn.pr"; ps: "cn.ps"; pt: "cn.pt"; pu: "cn.pu"; pv: "cn.pv"; pw: "cn.pw"; px: "cn.px"; py: "cn.py"; pz: "cn.pz"; qa: "cn.qa"; qb: "cn.qb"; qc: "cn.qc"; qd: "cn.qd"; qe: "cn.qe"; qf: "cn.qf"; qg: "cn.qg"; qh: "cn.qh"; qi: "cn.qi"; qj: "cn.qj"; qk: "cn.qk"; ql: "cn.ql"; qm: "cn.qm"; qn: "cn.qn"; qo: "cn.qo"; qp: "cn.qp"; qq: "cn.qq"; qr: "cn.qr"; qs: "cn.qs"; qt: "cn.qt"; qu: "cn.qu"; qv: "cn.qv"; qw: "cn.qw"; qx: "cn.qx"; qy: "cn.qy"; qz: "cn.qz"; ra: "cn.ra"; rb: "cn.rb"; rc: "cn.rc"; rd: "cn.rd"; re: "cn.re"; rf: "cn.rf"; rg: "cn.rg"; rh: "cn.rh"; ri: "cn.ri"; rj: "cn.rj"; rk: "cn.rk"; rl: "cn.rl"; rm: "cn.rm"; rn: "cn.rn"; ro: "cn.ro"; rp: "cn.rp"; rq: "cn.rq"; rr: "cn.rr"; rs: "cn.rs"; rt: "cn.rt"; ru: "cn.ru"; rv: "cn.rv"; rw: "cn.rw"; rx: "cn.rx"; ry: "cn.ry"; rz: "cn.rz"; sa: "cn.sa"; sb: "cn.sb"; sc: "cn.sc"; sd: "cn.sd"; se: "cn.se"; sf: "cn.sf"; sg: "cn.sg"; sh: "cn.sh"; si: "cn.si"; sj: "cn.sj"; sk: "cn.sk"; sl: "cn.sl"; sm: "cn.sm"; sn: "cn.sn"; so: "cn.so"; sp: "cn.sp"; sq: "cn.sq"; sr: "cn.sr"; ss: "cn.ss"; st: "cn.st"; su: "cn.su"; sv: "cn.sv"; sw: "cn.sw"; sx: "cn.sx"; sy: "cn.sy"; sz: "cn.sz"; ta: "cn.ta"; tb: "cn.tb"; tc: "cn.tc"; td: "cn.td"; te: "cn.te"; tf: "cn.tf"; tg: "cn.tg"; th: "cn.th"; ti: "cn.ti"; tj: "cn.tj"; tk: "cn.tk"; tl: "cn.tl"; tm: "cn.tm"; tn: "cn.tn"; to: "cn.to"; tp: "cn.tp"; tq: "cn.tq"; tr: "cn.tr"; ts: "cn.ts"; tt: "cn.tt"; tu: "cn.tu"; tv: "cn.tv"; tw: "cn.tw"; tx: "cn.tx"; ty: "cn.ty"; tz: "cn.tz"; ua: "cn.ua"; ub: "cn.ub"; uc: "cn.uc"; ud: "cn.ud"; ue: "cn.ue"; uf: "cn.uf"; ug: "cn.ug"; uh: "cn.uh"; ui: "cn.ui"; uj: "cn.uj"; uk: "cn.uk"; ul: "cn.ul"; um: "cn.um"; un: "cn.un"; uo: "cn.uo"; up: "cn.up"; uq: "cn.uq"; ur: "cn.ur"; us: "cn.us"; ut: "cn.ut"; uu: "cn.uu"; uv: "cn.uv"; uw: "cn.uw"; ux: "cn.ux"; uy: "cn.uy"; uz: "cn.uz"; va: "cn.va"; vb: "cn.vb"; vc: "cn.vc"; vd: "cn.vd"; ve: "cn.ve"; vf: "cn.vf"; vg: "cn.vg"; vh: "cn.vh"; vi: "cn.vi"; vj: "cn.vj"; vk: "cn.vk"; vl: "cn.vl"; vm: "cn.vm"; vn: "cn.vn"; vo: "cn.vo"; vp: "cn.vp"; vq: "cn.vq"; vr: "cn.vr"; vs: "cn.vs"; vt: "cn.vt"; vu: "cn.vu"; vv: "cn.vv"; vw: "cn.vw"; vx: "cn.vx"; vy: "cn.vy"; vz: "cn.vz"; wa: "cn.wa"; wb: "cn.wb"; wc: "cn.wc"; wd: "cn.wd"; we: "cn.we"; wf: "cn.wf"; wg: "cn.wg"; wh: "cn.wh"; wi: "cn.wi"; wj: "cn.wj"; wk: "cn.wk"; wl: "cn.wl"; wm: "cn.wm"; wn: "cn.wn"; wo: "cn.wo"; wp: "cn.wp"; wq: "cn.wq"; wr: "cn.wr"; ws: "cn.ws"; wt: "cn.wt"; wu: "cn.wu"; wv: "cn.wv"; ww: "cn.ww"; wx: "cn.wx"; wy: "cn.wy"; wz: "cn.wz"; xa: "cn.xa"; xb: "cn.xb"; xc: "cn.xc"; xd: "cn.xd"; xe: "cn.xe"; xf: "cn.xf"; xg: "cn.xg"; xh: "cn.xh"; xi: "cn.xi"; xj: "cn.xj"; xk: "cn.xk"; xl: "cn.xl"; xm: "cn.xm"; xn: "cn.xn"; xo: "cn.xo"; xp: "cn.xp"; xq: "cn.xq"; xr: "cn.xr"; xs: "cn.xs"; xt: "cn.xt"; xu: "cn.xu"; xv: "cn.xv"; xw: "cn.xw"; xx: "cn.xx"; xy: "cn.xy"; xz: "cn.xz"; ya: "cn.ya"; yb: "cn.yb"; yc: "cn.yc"; yd: "cn.yd"; ye: "cn.ye"; yf: "cn.yf"; yg: "cn.yg"; yh: "cn.yh"; yi: "cn.yi"; yj: "cn.yj"; yk: "cn.yk"; yl: "cn.yl"; ym: "cn.ym"; yn: "cn.yn"; yo: "cn.yo"; yp: "cn.yp"; yq: "cn.yq"; yr: "cn.yr"; ys: "cn.ys"; yt: "cn.yt"; yu: "cn.yu"; yv: "cn.yv"; yw: "cn.yw"; yx: "cn.yx"; yy: "cn.yy"; yz: "cn.yz"; za: "cn.za"; zb: "cn.zb"; zc: "cn.zc"; zd: "cn.zd"; ze: "cn.ze"; zf: "cn.zf"; zg: "cn.zg"; zh: "cn.zh"; zi: "cn.zi"; zj: "cn.zj"; zk: "cn.zk"; zl: "cn.zl"; zm: "cn.zm"; zn: "cn.zn"; zo: "cn.zo"; zp: "cn.zp"; zq: "cn.zq"; zr: "cn.zr"; zs: "cn.zs"; zt: "cn.zt"; zu: "cn.zu"; zv: "cn.zv"; zw: "cn.zw"; zx: "cn.zx"; zy: "cn.zy"; zz: "cn.zz"; }; co: { aa: "co.aa"; ab: "co.ab"; ac: "co.ac"; ad: "co.ad"; ae: "co.ae"; af: "co.af"; ag: "co.ag"; ah: "co.ah"; ai: "co.ai"; aj: "co.aj"; ak: "co.ak"; al: "co.al"; am: "co.am"; an: "co.an"; ao: "co.ao"; ap: "co.ap"; aq: "co.aq"; ar: "co.ar"; as: "co.as"; at: "co.at"; au: "co.au"; av: "co.av"; aw: "co.aw"; ax: "co.ax"; ay: "co.ay"; az: "co.az"; ba: "co.ba"; bb: "co.bb"; bc: "co.bc"; bd: "co.bd"; be: "co.be"; bf: "co.bf"; bg: "co.bg"; bh: "co.bh"; bi: "co.bi"; bj: "co.bj"; bk: "co.bk"; bl: "co.bl"; bm: "co.bm"; bn: "co.bn"; bo: "co.bo"; bp: "co.bp"; bq: "co.bq"; br: "co.br"; bs: "co.bs"; bt: "co.bt"; bu: "co.bu"; bv: "co.bv"; bw: "co.bw"; bx: "co.bx"; by: "co.by"; bz: "co.bz"; ca: "co.ca"; cb: "co.cb"; cc: "co.cc"; cd: "co.cd"; ce: "co.ce"; cf: "co.cf"; cg: "co.cg"; ch: "co.ch"; ci: "co.ci"; cj: "co.cj"; ck: "co.ck"; cl: "co.cl"; cm: "co.cm"; cn: "co.cn"; co: "co.co"; cp: "co.cp"; cq: "co.cq"; cr: "co.cr"; cs: "co.cs"; ct: "co.ct"; cu: "co.cu"; cv: "co.cv"; cw: "co.cw"; cx: "co.cx"; cy: "co.cy"; cz: "co.cz"; da: "co.da"; db: "co.db"; dc: "co.dc"; dd: "co.dd"; de: "co.de"; df: "co.df"; dg: "co.dg"; dh: "co.dh"; di: "co.di"; dj: "co.dj"; dk: "co.dk"; dl: "co.dl"; dm: "co.dm"; dn: "co.dn"; do: "co.do"; dp: "co.dp"; dq: "co.dq"; dr: "co.dr"; ds: "co.ds"; dt: "co.dt"; du: "co.du"; dv: "co.dv"; dw: "co.dw"; dx: "co.dx"; dy: "co.dy"; dz: "co.dz"; ea: "co.ea"; eb: "co.eb"; ec: "co.ec"; ed: "co.ed"; ee: "co.ee"; ef: "co.ef"; eg: "co.eg"; eh: "co.eh"; ei: "co.ei"; ej: "co.ej"; ek: "co.ek"; el: "co.el"; em: "co.em"; en: "co.en"; eo: "co.eo"; ep: "co.ep"; eq: "co.eq"; er: "co.er"; es: "co.es"; et: "co.et"; eu: "co.eu"; ev: "co.ev"; ew: "co.ew"; ex: "co.ex"; ey: "co.ey"; ez: "co.ez"; fa: "co.fa"; fb: "co.fb"; fc: "co.fc"; fd: "co.fd"; fe: "co.fe"; ff: "co.ff"; fg: "co.fg"; fh: "co.fh"; fi: "co.fi"; fj: "co.fj"; fk: "co.fk"; fl: "co.fl"; fm: "co.fm"; fn: "co.fn"; fo: "co.fo"; fp: "co.fp"; fq: "co.fq"; fr: "co.fr"; fs: "co.fs"; ft: "co.ft"; fu: "co.fu"; fv: "co.fv"; fw: "co.fw"; fx: "co.fx"; fy: "co.fy"; fz: "co.fz"; ga: "co.ga"; gb: "co.gb"; gc: "co.gc"; gd: "co.gd"; ge: "co.ge"; gf: "co.gf"; gg: "co.gg"; gh: "co.gh"; gi: "co.gi"; gj: "co.gj"; gk: "co.gk"; gl: "co.gl"; gm: "co.gm"; gn: "co.gn"; go: "co.go"; gp: "co.gp"; gq: "co.gq"; gr: "co.gr"; gs: "co.gs"; gt: "co.gt"; gu: "co.gu"; gv: "co.gv"; gw: "co.gw"; gx: "co.gx"; gy: "co.gy"; gz: "co.gz"; ha: "co.ha"; hb: "co.hb"; hc: "co.hc"; hd: "co.hd"; he: "co.he"; hf: "co.hf"; hg: "co.hg"; hh: "co.hh"; hi: "co.hi"; hj: "co.hj"; hk: "co.hk"; hl: "co.hl"; hm: "co.hm"; hn: "co.hn"; ho: "co.ho"; hp: "co.hp"; hq: "co.hq"; hr: "co.hr"; hs: "co.hs"; ht: "co.ht"; hu: "co.hu"; hv: "co.hv"; hw: "co.hw"; hx: "co.hx"; hy: "co.hy"; hz: "co.hz"; ia: "co.ia"; ib: "co.ib"; ic: "co.ic"; id: "co.id"; ie: "co.ie"; if: "co.if"; ig: "co.ig"; ih: "co.ih"; ii: "co.ii"; ij: "co.ij"; ik: "co.ik"; il: "co.il"; im: "co.im"; in: "co.in"; io: "co.io"; ip: "co.ip"; iq: "co.iq"; ir: "co.ir"; is: "co.is"; it: "co.it"; iu: "co.iu"; iv: "co.iv"; iw: "co.iw"; ix: "co.ix"; iy: "co.iy"; iz: "co.iz"; ja: "co.ja"; jb: "co.jb"; jc: "co.jc"; jd: "co.jd"; je: "co.je"; jf: "co.jf"; jg: "co.jg"; jh: "co.jh"; ji: "co.ji"; jj: "co.jj"; jk: "co.jk"; jl: "co.jl"; jm: "co.jm"; jn: "co.jn"; jo: "co.jo"; jp: "co.jp"; jq: "co.jq"; jr: "co.jr"; js: "co.js"; jt: "co.jt"; ju: "co.ju"; jv: "co.jv"; jw: "co.jw"; jx: "co.jx"; jy: "co.jy"; jz: "co.jz"; ka: "co.ka"; kb: "co.kb"; kc: "co.kc"; kd: "co.kd"; ke: "co.ke"; kf: "co.kf"; kg: "co.kg"; kh: "co.kh"; ki: "co.ki"; kj: "co.kj"; kk: "co.kk"; kl: "co.kl"; km: "co.km"; kn: "co.kn"; ko: "co.ko"; kp: "co.kp"; kq: "co.kq"; kr: "co.kr"; ks: "co.ks"; kt: "co.kt"; ku: "co.ku"; kv: "co.kv"; kw: "co.kw"; kx: "co.kx"; ky: "co.ky"; kz: "co.kz"; la: "co.la"; lb: "co.lb"; lc: "co.lc"; ld: "co.ld"; le: "co.le"; lf: "co.lf"; lg: "co.lg"; lh: "co.lh"; li: "co.li"; lj: "co.lj"; lk: "co.lk"; ll: "co.ll"; lm: "co.lm"; ln: "co.ln"; lo: "co.lo"; lp: "co.lp"; lq: "co.lq"; lr: "co.lr"; ls: "co.ls"; lt: "co.lt"; lu: "co.lu"; lv: "co.lv"; lw: "co.lw"; lx: "co.lx"; ly: "co.ly"; lz: "co.lz"; ma: "co.ma"; mb: "co.mb"; mc: "co.mc"; md: "co.md"; me: "co.me"; mf: "co.mf"; mg: "co.mg"; mh: "co.mh"; mi: "co.mi"; mj: "co.mj"; mk: "co.mk"; ml: "co.ml"; mm: "co.mm"; mn: "co.mn"; mo: "co.mo"; mp: "co.mp"; mq: "co.mq"; mr: "co.mr"; ms: "co.ms"; mt: "co.mt"; mu: "co.mu"; mv: "co.mv"; mw: "co.mw"; mx: "co.mx"; my: "co.my"; mz: "co.mz"; na: "co.na"; nb: "co.nb"; nc: "co.nc"; nd: "co.nd"; ne: "co.ne"; nf: "co.nf"; ng: "co.ng"; nh: "co.nh"; ni: "co.ni"; nj: "co.nj"; nk: "co.nk"; nl: "co.nl"; nm: "co.nm"; nn: "co.nn"; no: "co.no"; np: "co.np"; nq: "co.nq"; nr: "co.nr"; ns: "co.ns"; nt: "co.nt"; nu: "co.nu"; nv: "co.nv"; nw: "co.nw"; nx: "co.nx"; ny: "co.ny"; nz: "co.nz"; oa: "co.oa"; ob: "co.ob"; oc: "co.oc"; od: "co.od"; oe: "co.oe"; of: "co.of"; og: "co.og"; oh: "co.oh"; oi: "co.oi"; oj: "co.oj"; ok: "co.ok"; ol: "co.ol"; om: "co.om"; on: "co.on"; oo: "co.oo"; op: "co.op"; oq: "co.oq"; or: "co.or"; os: "co.os"; ot: "co.ot"; ou: "co.ou"; ov: "co.ov"; ow: "co.ow"; ox: "co.ox"; oy: "co.oy"; oz: "co.oz"; pa: "co.pa"; pb: "co.pb"; pc: "co.pc"; pd: "co.pd"; pe: "co.pe"; pf: "co.pf"; pg: "co.pg"; ph: "co.ph"; pi: "co.pi"; pj: "co.pj"; pk: "co.pk"; pl: "co.pl"; pm: "co.pm"; pn: "co.pn"; po: "co.po"; pp: "co.pp"; pq: "co.pq"; pr: "co.pr"; ps: "co.ps"; pt: "co.pt"; pu: "co.pu"; pv: "co.pv"; pw: "co.pw"; px: "co.px"; py: "co.py"; pz: "co.pz"; qa: "co.qa"; qb: "co.qb"; qc: "co.qc"; qd: "co.qd"; qe: "co.qe"; qf: "co.qf"; qg: "co.qg"; qh: "co.qh"; qi: "co.qi"; qj: "co.qj"; qk: "co.qk"; ql: "co.ql"; qm: "co.qm"; qn: "co.qn"; qo: "co.qo"; qp: "co.qp"; qq: "co.qq"; qr: "co.qr"; qs: "co.qs"; qt: "co.qt"; qu: "co.qu"; qv: "co.qv"; qw: "co.qw"; qx: "co.qx"; qy: "co.qy"; qz: "co.qz"; ra: "co.ra"; rb: "co.rb"; rc: "co.rc"; rd: "co.rd"; re: "co.re"; rf: "co.rf"; rg: "co.rg"; rh: "co.rh"; ri: "co.ri"; rj: "co.rj"; rk: "co.rk"; rl: "co.rl"; rm: "co.rm"; rn: "co.rn"; ro: "co.ro"; rp: "co.rp"; rq: "co.rq"; rr: "co.rr"; rs: "co.rs"; rt: "co.rt"; ru: "co.ru"; rv: "co.rv"; rw: "co.rw"; rx: "co.rx"; ry: "co.ry"; rz: "co.rz"; sa: "co.sa"; sb: "co.sb"; sc: "co.sc"; sd: "co.sd"; se: "co.se"; sf: "co.sf"; sg: "co.sg"; sh: "co.sh"; si: "co.si"; sj: "co.sj"; sk: "co.sk"; sl: "co.sl"; sm: "co.sm"; sn: "co.sn"; so: "co.so"; sp: "co.sp"; sq: "co.sq"; sr: "co.sr"; ss: "co.ss"; st: "co.st"; su: "co.su"; sv: "co.sv"; sw: "co.sw"; sx: "co.sx"; sy: "co.sy"; sz: "co.sz"; ta: "co.ta"; tb: "co.tb"; tc: "co.tc"; td: "co.td"; te: "co.te"; tf: "co.tf"; tg: "co.tg"; th: "co.th"; ti: "co.ti"; tj: "co.tj"; tk: "co.tk"; tl: "co.tl"; tm: "co.tm"; tn: "co.tn"; to: "co.to"; tp: "co.tp"; tq: "co.tq"; tr: "co.tr"; ts: "co.ts"; tt: "co.tt"; tu: "co.tu"; tv: "co.tv"; tw: "co.tw"; tx: "co.tx"; ty: "co.ty"; tz: "co.tz"; ua: "co.ua"; ub: "co.ub"; uc: "co.uc"; ud: "co.ud"; ue: "co.ue"; uf: "co.uf"; ug: "co.ug"; uh: "co.uh"; ui: "co.ui"; uj: "co.uj"; uk: "co.uk"; ul: "co.ul"; um: "co.um"; un: "co.un"; uo: "co.uo"; up: "co.up"; uq: "co.uq"; ur: "co.ur"; us: "co.us"; ut: "co.ut"; uu: "co.uu"; uv: "co.uv"; uw: "co.uw"; ux: "co.ux"; uy: "co.uy"; uz: "co.uz"; va: "co.va"; vb: "co.vb"; vc: "co.vc"; vd: "co.vd"; ve: "co.ve"; vf: "co.vf"; vg: "co.vg"; vh: "co.vh"; vi: "co.vi"; vj: "co.vj"; vk: "co.vk"; vl: "co.vl"; vm: "co.vm"; vn: "co.vn"; vo: "co.vo"; vp: "co.vp"; vq: "co.vq"; vr: "co.vr"; vs: "co.vs"; vt: "co.vt"; vu: "co.vu"; vv: "co.vv"; vw: "co.vw"; vx: "co.vx"; vy: "co.vy"; vz: "co.vz"; wa: "co.wa"; wb: "co.wb"; wc: "co.wc"; wd: "co.wd"; we: "co.we"; wf: "co.wf"; wg: "co.wg"; wh: "co.wh"; wi: "co.wi"; wj: "co.wj"; wk: "co.wk"; wl: "co.wl"; wm: "co.wm"; wn: "co.wn"; wo: "co.wo"; wp: "co.wp"; wq: "co.wq"; wr: "co.wr"; ws: "co.ws"; wt: "co.wt"; wu: "co.wu"; wv: "co.wv"; ww: "co.ww"; wx: "co.wx"; wy: "co.wy"; wz: "co.wz"; xa: "co.xa"; xb: "co.xb"; xc: "co.xc"; xd: "co.xd"; xe: "co.xe"; xf: "co.xf"; xg: "co.xg"; xh: "co.xh"; xi: "co.xi"; xj: "co.xj"; xk: "co.xk"; xl: "co.xl"; xm: "co.xm"; xn: "co.xn"; xo: "co.xo"; xp: "co.xp"; xq: "co.xq"; xr: "co.xr"; xs: "co.xs"; xt: "co.xt"; xu: "co.xu"; xv: "co.xv"; xw: "co.xw"; xx: "co.xx"; xy: "co.xy"; xz: "co.xz"; ya: "co.ya"; yb: "co.yb"; yc: "co.yc"; yd: "co.yd"; ye: "co.ye"; yf: "co.yf"; yg: "co.yg"; yh: "co.yh"; yi: "co.yi"; yj: "co.yj"; yk: "co.yk"; yl: "co.yl"; ym: "co.ym"; yn: "co.yn"; yo: "co.yo"; yp: "co.yp"; yq: "co.yq"; yr: "co.yr"; ys: "co.ys"; yt: "co.yt"; yu: "co.yu"; yv: "co.yv"; yw: "co.yw"; yx: "co.yx"; yy: "co.yy"; yz: "co.yz"; za: "co.za"; zb: "co.zb"; zc: "co.zc"; zd: "co.zd"; ze: "co.ze"; zf: "co.zf"; zg: "co.zg"; zh: "co.zh"; zi: "co.zi"; zj: "co.zj"; zk: "co.zk"; zl: "co.zl"; zm: "co.zm"; zn: "co.zn"; zo: "co.zo"; zp: "co.zp"; zq: "co.zq"; zr: "co.zr"; zs: "co.zs"; zt: "co.zt"; zu: "co.zu"; zv: "co.zv"; zw: "co.zw"; zx: "co.zx"; zy: "co.zy"; zz: "co.zz"; }; cp: { aa: "cp.aa"; ab: "cp.ab"; ac: "cp.ac"; ad: "cp.ad"; ae: "cp.ae"; af: "cp.af"; ag: "cp.ag"; ah: "cp.ah"; ai: "cp.ai"; aj: "cp.aj"; ak: "cp.ak"; al: "cp.al"; am: "cp.am"; an: "cp.an"; ao: "cp.ao"; ap: "cp.ap"; aq: "cp.aq"; ar: "cp.ar"; as: "cp.as"; at: "cp.at"; au: "cp.au"; av: "cp.av"; aw: "cp.aw"; ax: "cp.ax"; ay: "cp.ay"; az: "cp.az"; ba: "cp.ba"; bb: "cp.bb"; bc: "cp.bc"; bd: "cp.bd"; be: "cp.be"; bf: "cp.bf"; bg: "cp.bg"; bh: "cp.bh"; bi: "cp.bi"; bj: "cp.bj"; bk: "cp.bk"; bl: "cp.bl"; bm: "cp.bm"; bn: "cp.bn"; bo: "cp.bo"; bp: "cp.bp"; bq: "cp.bq"; br: "cp.br"; bs: "cp.bs"; bt: "cp.bt"; bu: "cp.bu"; bv: "cp.bv"; bw: "cp.bw"; bx: "cp.bx"; by: "cp.by"; bz: "cp.bz"; ca: "cp.ca"; cb: "cp.cb"; cc: "cp.cc"; cd: "cp.cd"; ce: "cp.ce"; cf: "cp.cf"; cg: "cp.cg"; ch: "cp.ch"; ci: "cp.ci"; cj: "cp.cj"; ck: "cp.ck"; cl: "cp.cl"; cm: "cp.cm"; cn: "cp.cn"; co: "cp.co"; cp: "cp.cp"; cq: "cp.cq"; cr: "cp.cr"; cs: "cp.cs"; ct: "cp.ct"; cu: "cp.cu"; cv: "cp.cv"; cw: "cp.cw"; cx: "cp.cx"; cy: "cp.cy"; cz: "cp.cz"; da: "cp.da"; db: "cp.db"; dc: "cp.dc"; dd: "cp.dd"; de: "cp.de"; df: "cp.df"; dg: "cp.dg"; dh: "cp.dh"; di: "cp.di"; dj: "cp.dj"; dk: "cp.dk"; dl: "cp.dl"; dm: "cp.dm"; dn: "cp.dn"; do: "cp.do"; dp: "cp.dp"; dq: "cp.dq"; dr: "cp.dr"; ds: "cp.ds"; dt: "cp.dt"; du: "cp.du"; dv: "cp.dv"; dw: "cp.dw"; dx: "cp.dx"; dy: "cp.dy"; dz: "cp.dz"; ea: "cp.ea"; eb: "cp.eb"; ec: "cp.ec"; ed: "cp.ed"; ee: "cp.ee"; ef: "cp.ef"; eg: "cp.eg"; eh: "cp.eh"; ei: "cp.ei"; ej: "cp.ej"; ek: "cp.ek"; el: "cp.el"; em: "cp.em"; en: "cp.en"; eo: "cp.eo"; ep: "cp.ep"; eq: "cp.eq"; er: "cp.er"; es: "cp.es"; et: "cp.et"; eu: "cp.eu"; ev: "cp.ev"; ew: "cp.ew"; ex: "cp.ex"; ey: "cp.ey"; ez: "cp.ez"; fa: "cp.fa"; fb: "cp.fb"; fc: "cp.fc"; fd: "cp.fd"; fe: "cp.fe"; ff: "cp.ff"; fg: "cp.fg"; fh: "cp.fh"; fi: "cp.fi"; fj: "cp.fj"; fk: "cp.fk"; fl: "cp.fl"; fm: "cp.fm"; fn: "cp.fn"; fo: "cp.fo"; fp: "cp.fp"; fq: "cp.fq"; fr: "cp.fr"; fs: "cp.fs"; ft: "cp.ft"; fu: "cp.fu"; fv: "cp.fv"; fw: "cp.fw"; fx: "cp.fx"; fy: "cp.fy"; fz: "cp.fz"; ga: "cp.ga"; gb: "cp.gb"; gc: "cp.gc"; gd: "cp.gd"; ge: "cp.ge"; gf: "cp.gf"; gg: "cp.gg"; gh: "cp.gh"; gi: "cp.gi"; gj: "cp.gj"; gk: "cp.gk"; gl: "cp.gl"; gm: "cp.gm"; gn: "cp.gn"; go: "cp.go"; gp: "cp.gp"; gq: "cp.gq"; gr: "cp.gr"; gs: "cp.gs"; gt: "cp.gt"; gu: "cp.gu"; gv: "cp.gv"; gw: "cp.gw"; gx: "cp.gx"; gy: "cp.gy"; gz: "cp.gz"; ha: "cp.ha"; hb: "cp.hb"; hc: "cp.hc"; hd: "cp.hd"; he: "cp.he"; hf: "cp.hf"; hg: "cp.hg"; hh: "cp.hh"; hi: "cp.hi"; hj: "cp.hj"; hk: "cp.hk"; hl: "cp.hl"; hm: "cp.hm"; hn: "cp.hn"; ho: "cp.ho"; hp: "cp.hp"; hq: "cp.hq"; hr: "cp.hr"; hs: "cp.hs"; ht: "cp.ht"; hu: "cp.hu"; hv: "cp.hv"; hw: "cp.hw"; hx: "cp.hx"; hy: "cp.hy"; hz: "cp.hz"; ia: "cp.ia"; ib: "cp.ib"; ic: "cp.ic"; id: "cp.id"; ie: "cp.ie"; if: "cp.if"; ig: "cp.ig"; ih: "cp.ih"; ii: "cp.ii"; ij: "cp.ij"; ik: "cp.ik"; il: "cp.il"; im: "cp.im"; in: "cp.in"; io: "cp.io"; ip: "cp.ip"; iq: "cp.iq"; ir: "cp.ir"; is: "cp.is"; it: "cp.it"; iu: "cp.iu"; iv: "cp.iv"; iw: "cp.iw"; ix: "cp.ix"; iy: "cp.iy"; iz: "cp.iz"; ja: "cp.ja"; jb: "cp.jb"; jc: "cp.jc"; jd: "cp.jd"; je: "cp.je"; jf: "cp.jf"; jg: "cp.jg"; jh: "cp.jh"; ji: "cp.ji"; jj: "cp.jj"; jk: "cp.jk"; jl: "cp.jl"; jm: "cp.jm"; jn: "cp.jn"; jo: "cp.jo"; jp: "cp.jp"; jq: "cp.jq"; jr: "cp.jr"; js: "cp.js"; jt: "cp.jt"; ju: "cp.ju"; jv: "cp.jv"; jw: "cp.jw"; jx: "cp.jx"; jy: "cp.jy"; jz: "cp.jz"; ka: "cp.ka"; kb: "cp.kb"; kc: "cp.kc"; kd: "cp.kd"; ke: "cp.ke"; kf: "cp.kf"; kg: "cp.kg"; kh: "cp.kh"; ki: "cp.ki"; kj: "cp.kj"; kk: "cp.kk"; kl: "cp.kl"; km: "cp.km"; kn: "cp.kn"; ko: "cp.ko"; kp: "cp.kp"; kq: "cp.kq"; kr: "cp.kr"; ks: "cp.ks"; kt: "cp.kt"; ku: "cp.ku"; kv: "cp.kv"; kw: "cp.kw"; kx: "cp.kx"; ky: "cp.ky"; kz: "cp.kz"; la: "cp.la"; lb: "cp.lb"; lc: "cp.lc"; ld: "cp.ld"; le: "cp.le"; lf: "cp.lf"; lg: "cp.lg"; lh: "cp.lh"; li: "cp.li"; lj: "cp.lj"; lk: "cp.lk"; ll: "cp.ll"; lm: "cp.lm"; ln: "cp.ln"; lo: "cp.lo"; lp: "cp.lp"; lq: "cp.lq"; lr: "cp.lr"; ls: "cp.ls"; lt: "cp.lt"; lu: "cp.lu"; lv: "cp.lv"; lw: "cp.lw"; lx: "cp.lx"; ly: "cp.ly"; lz: "cp.lz"; ma: "cp.ma"; mb: "cp.mb"; mc: "cp.mc"; md: "cp.md"; me: "cp.me"; mf: "cp.mf"; mg: "cp.mg"; mh: "cp.mh"; mi: "cp.mi"; mj: "cp.mj"; mk: "cp.mk"; ml: "cp.ml"; mm: "cp.mm"; mn: "cp.mn"; mo: "cp.mo"; mp: "cp.mp"; mq: "cp.mq"; mr: "cp.mr"; ms: "cp.ms"; mt: "cp.mt"; mu: "cp.mu"; mv: "cp.mv"; mw: "cp.mw"; mx: "cp.mx"; my: "cp.my"; mz: "cp.mz"; na: "cp.na"; nb: "cp.nb"; nc: "cp.nc"; nd: "cp.nd"; ne: "cp.ne"; nf: "cp.nf"; ng: "cp.ng"; nh: "cp.nh"; ni: "cp.ni"; nj: "cp.nj"; nk: "cp.nk"; nl: "cp.nl"; nm: "cp.nm"; nn: "cp.nn"; no: "cp.no"; np: "cp.np"; nq: "cp.nq"; nr: "cp.nr"; ns: "cp.ns"; nt: "cp.nt"; nu: "cp.nu"; nv: "cp.nv"; nw: "cp.nw"; nx: "cp.nx"; ny: "cp.ny"; nz: "cp.nz"; oa: "cp.oa"; ob: "cp.ob"; oc: "cp.oc"; od: "cp.od"; oe: "cp.oe"; of: "cp.of"; og: "cp.og"; oh: "cp.oh"; oi: "cp.oi"; oj: "cp.oj"; ok: "cp.ok"; ol: "cp.ol"; om: "cp.om"; on: "cp.on"; oo: "cp.oo"; op: "cp.op"; oq: "cp.oq"; or: "cp.or"; os: "cp.os"; ot: "cp.ot"; ou: "cp.ou"; ov: "cp.ov"; ow: "cp.ow"; ox: "cp.ox"; oy: "cp.oy"; oz: "cp.oz"; pa: "cp.pa"; pb: "cp.pb"; pc: "cp.pc"; pd: "cp.pd"; pe: "cp.pe"; pf: "cp.pf"; pg: "cp.pg"; ph: "cp.ph"; pi: "cp.pi"; pj: "cp.pj"; pk: "cp.pk"; pl: "cp.pl"; pm: "cp.pm"; pn: "cp.pn"; po: "cp.po"; pp: "cp.pp"; pq: "cp.pq"; pr: "cp.pr"; ps: "cp.ps"; pt: "cp.pt"; pu: "cp.pu"; pv: "cp.pv"; pw: "cp.pw"; px: "cp.px"; py: "cp.py"; pz: "cp.pz"; qa: "cp.qa"; qb: "cp.qb"; qc: "cp.qc"; qd: "cp.qd"; qe: "cp.qe"; qf: "cp.qf"; qg: "cp.qg"; qh: "cp.qh"; qi: "cp.qi"; qj: "cp.qj"; qk: "cp.qk"; ql: "cp.ql"; qm: "cp.qm"; qn: "cp.qn"; qo: "cp.qo"; qp: "cp.qp"; qq: "cp.qq"; qr: "cp.qr"; qs: "cp.qs"; qt: "cp.qt"; qu: "cp.qu"; qv: "cp.qv"; qw: "cp.qw"; qx: "cp.qx"; qy: "cp.qy"; qz: "cp.qz"; ra: "cp.ra"; rb: "cp.rb"; rc: "cp.rc"; rd: "cp.rd"; re: "cp.re"; rf: "cp.rf"; rg: "cp.rg"; rh: "cp.rh"; ri: "cp.ri"; rj: "cp.rj"; rk: "cp.rk"; rl: "cp.rl"; rm: "cp.rm"; rn: "cp.rn"; ro: "cp.ro"; rp: "cp.rp"; rq: "cp.rq"; rr: "cp.rr"; rs: "cp.rs"; rt: "cp.rt"; ru: "cp.ru"; rv: "cp.rv"; rw: "cp.rw"; rx: "cp.rx"; ry: "cp.ry"; rz: "cp.rz"; sa: "cp.sa"; sb: "cp.sb"; sc: "cp.sc"; sd: "cp.sd"; se: "cp.se"; sf: "cp.sf"; sg: "cp.sg"; sh: "cp.sh"; si: "cp.si"; sj: "cp.sj"; sk: "cp.sk"; sl: "cp.sl"; sm: "cp.sm"; sn: "cp.sn"; so: "cp.so"; sp: "cp.sp"; sq: "cp.sq"; sr: "cp.sr"; ss: "cp.ss"; st: "cp.st"; su: "cp.su"; sv: "cp.sv"; sw: "cp.sw"; sx: "cp.sx"; sy: "cp.sy"; sz: "cp.sz"; ta: "cp.ta"; tb: "cp.tb"; tc: "cp.tc"; td: "cp.td"; te: "cp.te"; tf: "cp.tf"; tg: "cp.tg"; th: "cp.th"; ti: "cp.ti"; tj: "cp.tj"; tk: "cp.tk"; tl: "cp.tl"; tm: "cp.tm"; tn: "cp.tn"; to: "cp.to"; tp: "cp.tp"; tq: "cp.tq"; tr: "cp.tr"; ts: "cp.ts"; tt: "cp.tt"; tu: "cp.tu"; tv: "cp.tv"; tw: "cp.tw"; tx: "cp.tx"; ty: "cp.ty"; tz: "cp.tz"; ua: "cp.ua"; ub: "cp.ub"; uc: "cp.uc"; ud: "cp.ud"; ue: "cp.ue"; uf: "cp.uf"; ug: "cp.ug"; uh: "cp.uh"; ui: "cp.ui"; uj: "cp.uj"; uk: "cp.uk"; ul: "cp.ul"; um: "cp.um"; un: "cp.un"; uo: "cp.uo"; up: "cp.up"; uq: "cp.uq"; ur: "cp.ur"; us: "cp.us"; ut: "cp.ut"; uu: "cp.uu"; uv: "cp.uv"; uw: "cp.uw"; ux: "cp.ux"; uy: "cp.uy"; uz: "cp.uz"; va: "cp.va"; vb: "cp.vb"; vc: "cp.vc"; vd: "cp.vd"; ve: "cp.ve"; vf: "cp.vf"; vg: "cp.vg"; vh: "cp.vh"; vi: "cp.vi"; vj: "cp.vj"; vk: "cp.vk"; vl: "cp.vl"; vm: "cp.vm"; vn: "cp.vn"; vo: "cp.vo"; vp: "cp.vp"; vq: "cp.vq"; vr: "cp.vr"; vs: "cp.vs"; vt: "cp.vt"; vu: "cp.vu"; vv: "cp.vv"; vw: "cp.vw"; vx: "cp.vx"; vy: "cp.vy"; vz: "cp.vz"; wa: "cp.wa"; wb: "cp.wb"; wc: "cp.wc"; wd: "cp.wd"; we: "cp.we"; wf: "cp.wf"; wg: "cp.wg"; wh: "cp.wh"; wi: "cp.wi"; wj: "cp.wj"; wk: "cp.wk"; wl: "cp.wl"; wm: "cp.wm"; wn: "cp.wn"; wo: "cp.wo"; wp: "cp.wp"; wq: "cp.wq"; wr: "cp.wr"; ws: "cp.ws"; wt: "cp.wt"; wu: "cp.wu"; wv: "cp.wv"; ww: "cp.ww"; wx: "cp.wx"; wy: "cp.wy"; wz: "cp.wz"; xa: "cp.xa"; xb: "cp.xb"; xc: "cp.xc"; xd: "cp.xd"; xe: "cp.xe"; xf: "cp.xf"; xg: "cp.xg"; xh: "cp.xh"; xi: "cp.xi"; xj: "cp.xj"; xk: "cp.xk"; xl: "cp.xl"; xm: "cp.xm"; xn: "cp.xn"; xo: "cp.xo"; xp: "cp.xp"; xq: "cp.xq"; xr: "cp.xr"; xs: "cp.xs"; xt: "cp.xt"; xu: "cp.xu"; xv: "cp.xv"; xw: "cp.xw"; xx: "cp.xx"; xy: "cp.xy"; xz: "cp.xz"; ya: "cp.ya"; yb: "cp.yb"; yc: "cp.yc"; yd: "cp.yd"; ye: "cp.ye"; yf: "cp.yf"; yg: "cp.yg"; yh: "cp.yh"; yi: "cp.yi"; yj: "cp.yj"; yk: "cp.yk"; yl: "cp.yl"; ym: "cp.ym"; yn: "cp.yn"; yo: "cp.yo"; yp: "cp.yp"; yq: "cp.yq"; yr: "cp.yr"; ys: "cp.ys"; yt: "cp.yt"; yu: "cp.yu"; yv: "cp.yv"; yw: "cp.yw"; yx: "cp.yx"; yy: "cp.yy"; yz: "cp.yz"; za: "cp.za"; zb: "cp.zb"; zc: "cp.zc"; zd: "cp.zd"; ze: "cp.ze"; zf: "cp.zf"; zg: "cp.zg"; zh: "cp.zh"; zi: "cp.zi"; zj: "cp.zj"; zk: "cp.zk"; zl: "cp.zl"; zm: "cp.zm"; zn: "cp.zn"; zo: "cp.zo"; zp: "cp.zp"; zq: "cp.zq"; zr: "cp.zr"; zs: "cp.zs"; zt: "cp.zt"; zu: "cp.zu"; zv: "cp.zv"; zw: "cp.zw"; zx: "cp.zx"; zy: "cp.zy"; zz: "cp.zz"; }; cq: { aa: "cq.aa"; ab: "cq.ab"; ac: "cq.ac"; ad: "cq.ad"; ae: "cq.ae"; af: "cq.af"; ag: "cq.ag"; ah: "cq.ah"; ai: "cq.ai"; aj: "cq.aj"; ak: "cq.ak"; al: "cq.al"; am: "cq.am"; an: "cq.an"; ao: "cq.ao"; ap: "cq.ap"; aq: "cq.aq"; ar: "cq.ar"; as: "cq.as"; at: "cq.at"; au: "cq.au"; av: "cq.av"; aw: "cq.aw"; ax: "cq.ax"; ay: "cq.ay"; az: "cq.az"; ba: "cq.ba"; bb: "cq.bb"; bc: "cq.bc"; bd: "cq.bd"; be: "cq.be"; bf: "cq.bf"; bg: "cq.bg"; bh: "cq.bh"; bi: "cq.bi"; bj: "cq.bj"; bk: "cq.bk"; bl: "cq.bl"; bm: "cq.bm"; bn: "cq.bn"; bo: "cq.bo"; bp: "cq.bp"; bq: "cq.bq"; br: "cq.br"; bs: "cq.bs"; bt: "cq.bt"; bu: "cq.bu"; bv: "cq.bv"; bw: "cq.bw"; bx: "cq.bx"; by: "cq.by"; bz: "cq.bz"; ca: "cq.ca"; cb: "cq.cb"; cc: "cq.cc"; cd: "cq.cd"; ce: "cq.ce"; cf: "cq.cf"; cg: "cq.cg"; ch: "cq.ch"; ci: "cq.ci"; cj: "cq.cj"; ck: "cq.ck"; cl: "cq.cl"; cm: "cq.cm"; cn: "cq.cn"; co: "cq.co"; cp: "cq.cp"; cq: "cq.cq"; cr: "cq.cr"; cs: "cq.cs"; ct: "cq.ct"; cu: "cq.cu"; cv: "cq.cv"; cw: "cq.cw"; cx: "cq.cx"; cy: "cq.cy"; cz: "cq.cz"; da: "cq.da"; db: "cq.db"; dc: "cq.dc"; dd: "cq.dd"; de: "cq.de"; df: "cq.df"; dg: "cq.dg"; dh: "cq.dh"; di: "cq.di"; dj: "cq.dj"; dk: "cq.dk"; dl: "cq.dl"; dm: "cq.dm"; dn: "cq.dn"; do: "cq.do"; dp: "cq.dp"; dq: "cq.dq"; dr: "cq.dr"; ds: "cq.ds"; dt: "cq.dt"; du: "cq.du"; dv: "cq.dv"; dw: "cq.dw"; dx: "cq.dx"; dy: "cq.dy"; dz: "cq.dz"; ea: "cq.ea"; eb: "cq.eb"; ec: "cq.ec"; ed: "cq.ed"; ee: "cq.ee"; ef: "cq.ef"; eg: "cq.eg"; eh: "cq.eh"; ei: "cq.ei"; ej: "cq.ej"; ek: "cq.ek"; el: "cq.el"; em: "cq.em"; en: "cq.en"; eo: "cq.eo"; ep: "cq.ep"; eq: "cq.eq"; er: "cq.er"; es: "cq.es"; et: "cq.et"; eu: "cq.eu"; ev: "cq.ev"; ew: "cq.ew"; ex: "cq.ex"; ey: "cq.ey"; ez: "cq.ez"; fa: "cq.fa"; fb: "cq.fb"; fc: "cq.fc"; fd: "cq.fd"; fe: "cq.fe"; ff: "cq.ff"; fg: "cq.fg"; fh: "cq.fh"; fi: "cq.fi"; fj: "cq.fj"; fk: "cq.fk"; fl: "cq.fl"; fm: "cq.fm"; fn: "cq.fn"; fo: "cq.fo"; fp: "cq.fp"; fq: "cq.fq"; fr: "cq.fr"; fs: "cq.fs"; ft: "cq.ft"; fu: "cq.fu"; fv: "cq.fv"; fw: "cq.fw"; fx: "cq.fx"; fy: "cq.fy"; fz: "cq.fz"; ga: "cq.ga"; gb: "cq.gb"; gc: "cq.gc"; gd: "cq.gd"; ge: "cq.ge"; gf: "cq.gf"; gg: "cq.gg"; gh: "cq.gh"; gi: "cq.gi"; gj: "cq.gj"; gk: "cq.gk"; gl: "cq.gl"; gm: "cq.gm"; gn: "cq.gn"; go: "cq.go"; gp: "cq.gp"; gq: "cq.gq"; gr: "cq.gr"; gs: "cq.gs"; gt: "cq.gt"; gu: "cq.gu"; gv: "cq.gv"; gw: "cq.gw"; gx: "cq.gx"; gy: "cq.gy"; gz: "cq.gz"; ha: "cq.ha"; hb: "cq.hb"; hc: "cq.hc"; hd: "cq.hd"; he: "cq.he"; hf: "cq.hf"; hg: "cq.hg"; hh: "cq.hh"; hi: "cq.hi"; hj: "cq.hj"; hk: "cq.hk"; hl: "cq.hl"; hm: "cq.hm"; hn: "cq.hn"; ho: "cq.ho"; hp: "cq.hp"; hq: "cq.hq"; hr: "cq.hr"; hs: "cq.hs"; ht: "cq.ht"; hu: "cq.hu"; hv: "cq.hv"; hw: "cq.hw"; hx: "cq.hx"; hy: "cq.hy"; hz: "cq.hz"; ia: "cq.ia"; ib: "cq.ib"; ic: "cq.ic"; id: "cq.id"; ie: "cq.ie"; if: "cq.if"; ig: "cq.ig"; ih: "cq.ih"; ii: "cq.ii"; ij: "cq.ij"; ik: "cq.ik"; il: "cq.il"; im: "cq.im"; in: "cq.in"; io: "cq.io"; ip: "cq.ip"; iq: "cq.iq"; ir: "cq.ir"; is: "cq.is"; it: "cq.it"; iu: "cq.iu"; iv: "cq.iv"; iw: "cq.iw"; ix: "cq.ix"; iy: "cq.iy"; iz: "cq.iz"; ja: "cq.ja"; jb: "cq.jb"; jc: "cq.jc"; jd: "cq.jd"; je: "cq.je"; jf: "cq.jf"; jg: "cq.jg"; jh: "cq.jh"; ji: "cq.ji"; jj: "cq.jj"; jk: "cq.jk"; jl: "cq.jl"; jm: "cq.jm"; jn: "cq.jn"; jo: "cq.jo"; jp: "cq.jp"; jq: "cq.jq"; jr: "cq.jr"; js: "cq.js"; jt: "cq.jt"; ju: "cq.ju"; jv: "cq.jv"; jw: "cq.jw"; jx: "cq.jx"; jy: "cq.jy"; jz: "cq.jz"; ka: "cq.ka"; kb: "cq.kb"; kc: "cq.kc"; kd: "cq.kd"; ke: "cq.ke"; kf: "cq.kf"; kg: "cq.kg"; kh: "cq.kh"; ki: "cq.ki"; kj: "cq.kj"; kk: "cq.kk"; kl: "cq.kl"; km: "cq.km"; kn: "cq.kn"; ko: "cq.ko"; kp: "cq.kp"; kq: "cq.kq"; kr: "cq.kr"; ks: "cq.ks"; kt: "cq.kt"; ku: "cq.ku"; kv: "cq.kv"; kw: "cq.kw"; kx: "cq.kx"; ky: "cq.ky"; kz: "cq.kz"; la: "cq.la"; lb: "cq.lb"; lc: "cq.lc"; ld: "cq.ld"; le: "cq.le"; lf: "cq.lf"; lg: "cq.lg"; lh: "cq.lh"; li: "cq.li"; lj: "cq.lj"; lk: "cq.lk"; ll: "cq.ll"; lm: "cq.lm"; ln: "cq.ln"; lo: "cq.lo"; lp: "cq.lp"; lq: "cq.lq"; lr: "cq.lr"; ls: "cq.ls"; lt: "cq.lt"; lu: "cq.lu"; lv: "cq.lv"; lw: "cq.lw"; lx: "cq.lx"; ly: "cq.ly"; lz: "cq.lz"; ma: "cq.ma"; mb: "cq.mb"; mc: "cq.mc"; md: "cq.md"; me: "cq.me"; mf: "cq.mf"; mg: "cq.mg"; mh: "cq.mh"; mi: "cq.mi"; mj: "cq.mj"; mk: "cq.mk"; ml: "cq.ml"; mm: "cq.mm"; mn: "cq.mn"; mo: "cq.mo"; mp: "cq.mp"; mq: "cq.mq"; mr: "cq.mr"; ms: "cq.ms"; mt: "cq.mt"; mu: "cq.mu"; mv: "cq.mv"; mw: "cq.mw"; mx: "cq.mx"; my: "cq.my"; mz: "cq.mz"; na: "cq.na"; nb: "cq.nb"; nc: "cq.nc"; nd: "cq.nd"; ne: "cq.ne"; nf: "cq.nf"; ng: "cq.ng"; nh: "cq.nh"; ni: "cq.ni"; nj: "cq.nj"; nk: "cq.nk"; nl: "cq.nl"; nm: "cq.nm"; nn: "cq.nn"; no: "cq.no"; np: "cq.np"; nq: "cq.nq"; nr: "cq.nr"; ns: "cq.ns"; nt: "cq.nt"; nu: "cq.nu"; nv: "cq.nv"; nw: "cq.nw"; nx: "cq.nx"; ny: "cq.ny"; nz: "cq.nz"; oa: "cq.oa"; ob: "cq.ob"; oc: "cq.oc"; od: "cq.od"; oe: "cq.oe"; of: "cq.of"; og: "cq.og"; oh: "cq.oh"; oi: "cq.oi"; oj: "cq.oj"; ok: "cq.ok"; ol: "cq.ol"; om: "cq.om"; on: "cq.on"; oo: "cq.oo"; op: "cq.op"; oq: "cq.oq"; or: "cq.or"; os: "cq.os"; ot: "cq.ot"; ou: "cq.ou"; ov: "cq.ov"; ow: "cq.ow"; ox: "cq.ox"; oy: "cq.oy"; oz: "cq.oz"; pa: "cq.pa"; pb: "cq.pb"; pc: "cq.pc"; pd: "cq.pd"; pe: "cq.pe"; pf: "cq.pf"; pg: "cq.pg"; ph: "cq.ph"; pi: "cq.pi"; pj: "cq.pj"; pk: "cq.pk"; pl: "cq.pl"; pm: "cq.pm"; pn: "cq.pn"; po: "cq.po"; pp: "cq.pp"; pq: "cq.pq"; pr: "cq.pr"; ps: "cq.ps"; pt: "cq.pt"; pu: "cq.pu"; pv: "cq.pv"; pw: "cq.pw"; px: "cq.px"; py: "cq.py"; pz: "cq.pz"; qa: "cq.qa"; qb: "cq.qb"; qc: "cq.qc"; qd: "cq.qd"; qe: "cq.qe"; qf: "cq.qf"; qg: "cq.qg"; qh: "cq.qh"; qi: "cq.qi"; qj: "cq.qj"; qk: "cq.qk"; ql: "cq.ql"; qm: "cq.qm"; qn: "cq.qn"; qo: "cq.qo"; qp: "cq.qp"; qq: "cq.qq"; qr: "cq.qr"; qs: "cq.qs"; qt: "cq.qt"; qu: "cq.qu"; qv: "cq.qv"; qw: "cq.qw"; qx: "cq.qx"; qy: "cq.qy"; qz: "cq.qz"; ra: "cq.ra"; rb: "cq.rb"; rc: "cq.rc"; rd: "cq.rd"; re: "cq.re"; rf: "cq.rf"; rg: "cq.rg"; rh: "cq.rh"; ri: "cq.ri"; rj: "cq.rj"; rk: "cq.rk"; rl: "cq.rl"; rm: "cq.rm"; rn: "cq.rn"; ro: "cq.ro"; rp: "cq.rp"; rq: "cq.rq"; rr: "cq.rr"; rs: "cq.rs"; rt: "cq.rt"; ru: "cq.ru"; rv: "cq.rv"; rw: "cq.rw"; rx: "cq.rx"; ry: "cq.ry"; rz: "cq.rz"; sa: "cq.sa"; sb: "cq.sb"; sc: "cq.sc"; sd: "cq.sd"; se: "cq.se"; sf: "cq.sf"; sg: "cq.sg"; sh: "cq.sh"; si: "cq.si"; sj: "cq.sj"; sk: "cq.sk"; sl: "cq.sl"; sm: "cq.sm"; sn: "cq.sn"; so: "cq.so"; sp: "cq.sp"; sq: "cq.sq"; sr: "cq.sr"; ss: "cq.ss"; st: "cq.st"; su: "cq.su"; sv: "cq.sv"; sw: "cq.sw"; sx: "cq.sx"; sy: "cq.sy"; sz: "cq.sz"; ta: "cq.ta"; tb: "cq.tb"; tc: "cq.tc"; td: "cq.td"; te: "cq.te"; tf: "cq.tf"; tg: "cq.tg"; th: "cq.th"; ti: "cq.ti"; tj: "cq.tj"; tk: "cq.tk"; tl: "cq.tl"; tm: "cq.tm"; tn: "cq.tn"; to: "cq.to"; tp: "cq.tp"; tq: "cq.tq"; tr: "cq.tr"; ts: "cq.ts"; tt: "cq.tt"; tu: "cq.tu"; tv: "cq.tv"; tw: "cq.tw"; tx: "cq.tx"; ty: "cq.ty"; tz: "cq.tz"; ua: "cq.ua"; ub: "cq.ub"; uc: "cq.uc"; ud: "cq.ud"; ue: "cq.ue"; uf: "cq.uf"; ug: "cq.ug"; uh: "cq.uh"; ui: "cq.ui"; uj: "cq.uj"; uk: "cq.uk"; ul: "cq.ul"; um: "cq.um"; un: "cq.un"; uo: "cq.uo"; up: "cq.up"; uq: "cq.uq"; ur: "cq.ur"; us: "cq.us"; ut: "cq.ut"; uu: "cq.uu"; uv: "cq.uv"; uw: "cq.uw"; ux: "cq.ux"; uy: "cq.uy"; uz: "cq.uz"; va: "cq.va"; vb: "cq.vb"; vc: "cq.vc"; vd: "cq.vd"; ve: "cq.ve"; vf: "cq.vf"; vg: "cq.vg"; vh: "cq.vh"; vi: "cq.vi"; vj: "cq.vj"; vk: "cq.vk"; vl: "cq.vl"; vm: "cq.vm"; vn: "cq.vn"; vo: "cq.vo"; vp: "cq.vp"; vq: "cq.vq"; vr: "cq.vr"; vs: "cq.vs"; vt: "cq.vt"; vu: "cq.vu"; vv: "cq.vv"; vw: "cq.vw"; vx: "cq.vx"; vy: "cq.vy"; vz: "cq.vz"; wa: "cq.wa"; wb: "cq.wb"; wc: "cq.wc"; wd: "cq.wd"; we: "cq.we"; wf: "cq.wf"; wg: "cq.wg"; wh: "cq.wh"; wi: "cq.wi"; wj: "cq.wj"; wk: "cq.wk"; wl: "cq.wl"; wm: "cq.wm"; wn: "cq.wn"; wo: "cq.wo"; wp: "cq.wp"; wq: "cq.wq"; wr: "cq.wr"; ws: "cq.ws"; wt: "cq.wt"; wu: "cq.wu"; wv: "cq.wv"; ww: "cq.ww"; wx: "cq.wx"; wy: "cq.wy"; wz: "cq.wz"; xa: "cq.xa"; xb: "cq.xb"; xc: "cq.xc"; xd: "cq.xd"; xe: "cq.xe"; xf: "cq.xf"; xg: "cq.xg"; xh: "cq.xh"; xi: "cq.xi"; xj: "cq.xj"; xk: "cq.xk"; xl: "cq.xl"; xm: "cq.xm"; xn: "cq.xn"; xo: "cq.xo"; xp: "cq.xp"; xq: "cq.xq"; xr: "cq.xr"; xs: "cq.xs"; xt: "cq.xt"; xu: "cq.xu"; xv: "cq.xv"; xw: "cq.xw"; xx: "cq.xx"; xy: "cq.xy"; xz: "cq.xz"; ya: "cq.ya"; yb: "cq.yb"; yc: "cq.yc"; yd: "cq.yd"; ye: "cq.ye"; yf: "cq.yf"; yg: "cq.yg"; yh: "cq.yh"; yi: "cq.yi"; yj: "cq.yj"; yk: "cq.yk"; yl: "cq.yl"; ym: "cq.ym"; yn: "cq.yn"; yo: "cq.yo"; yp: "cq.yp"; yq: "cq.yq"; yr: "cq.yr"; ys: "cq.ys"; yt: "cq.yt"; yu: "cq.yu"; yv: "cq.yv"; yw: "cq.yw"; yx: "cq.yx"; yy: "cq.yy"; yz: "cq.yz"; za: "cq.za"; zb: "cq.zb"; zc: "cq.zc"; zd: "cq.zd"; ze: "cq.ze"; zf: "cq.zf"; zg: "cq.zg"; zh: "cq.zh"; zi: "cq.zi"; zj: "cq.zj"; zk: "cq.zk"; zl: "cq.zl"; zm: "cq.zm"; zn: "cq.zn"; zo: "cq.zo"; zp: "cq.zp"; zq: "cq.zq"; zr: "cq.zr"; zs: "cq.zs"; zt: "cq.zt"; zu: "cq.zu"; zv: "cq.zv"; zw: "cq.zw"; zx: "cq.zx"; zy: "cq.zy"; zz: "cq.zz"; }; cr: { aa: "cr.aa"; ab: "cr.ab"; ac: "cr.ac"; ad: "cr.ad"; ae: "cr.ae"; af: "cr.af"; ag: "cr.ag"; ah: "cr.ah"; ai: "cr.ai"; aj: "cr.aj"; ak: "cr.ak"; al: "cr.al"; am: "cr.am"; an: "cr.an"; ao: "cr.ao"; ap: "cr.ap"; aq: "cr.aq"; ar: "cr.ar"; as: "cr.as"; at: "cr.at"; au: "cr.au"; av: "cr.av"; aw: "cr.aw"; ax: "cr.ax"; ay: "cr.ay"; az: "cr.az"; ba: "cr.ba"; bb: "cr.bb"; bc: "cr.bc"; bd: "cr.bd"; be: "cr.be"; bf: "cr.bf"; bg: "cr.bg"; bh: "cr.bh"; bi: "cr.bi"; bj: "cr.bj"; bk: "cr.bk"; bl: "cr.bl"; bm: "cr.bm"; bn: "cr.bn"; bo: "cr.bo"; bp: "cr.bp"; bq: "cr.bq"; br: "cr.br"; bs: "cr.bs"; bt: "cr.bt"; bu: "cr.bu"; bv: "cr.bv"; bw: "cr.bw"; bx: "cr.bx"; by: "cr.by"; bz: "cr.bz"; ca: "cr.ca"; cb: "cr.cb"; cc: "cr.cc"; cd: "cr.cd"; ce: "cr.ce"; cf: "cr.cf"; cg: "cr.cg"; ch: "cr.ch"; ci: "cr.ci"; cj: "cr.cj"; ck: "cr.ck"; cl: "cr.cl"; cm: "cr.cm"; cn: "cr.cn"; co: "cr.co"; cp: "cr.cp"; cq: "cr.cq"; cr: "cr.cr"; cs: "cr.cs"; ct: "cr.ct"; cu: "cr.cu"; cv: "cr.cv"; cw: "cr.cw"; cx: "cr.cx"; cy: "cr.cy"; cz: "cr.cz"; da: "cr.da"; db: "cr.db"; dc: "cr.dc"; dd: "cr.dd"; de: "cr.de"; df: "cr.df"; dg: "cr.dg"; dh: "cr.dh"; di: "cr.di"; dj: "cr.dj"; dk: "cr.dk"; dl: "cr.dl"; dm: "cr.dm"; dn: "cr.dn"; do: "cr.do"; dp: "cr.dp"; dq: "cr.dq"; dr: "cr.dr"; ds: "cr.ds"; dt: "cr.dt"; du: "cr.du"; dv: "cr.dv"; dw: "cr.dw"; dx: "cr.dx"; dy: "cr.dy"; dz: "cr.dz"; ea: "cr.ea"; eb: "cr.eb"; ec: "cr.ec"; ed: "cr.ed"; ee: "cr.ee"; ef: "cr.ef"; eg: "cr.eg"; eh: "cr.eh"; ei: "cr.ei"; ej: "cr.ej"; ek: "cr.ek"; el: "cr.el"; em: "cr.em"; en: "cr.en"; eo: "cr.eo"; ep: "cr.ep"; eq: "cr.eq"; er: "cr.er"; es: "cr.es"; et: "cr.et"; eu: "cr.eu"; ev: "cr.ev"; ew: "cr.ew"; ex: "cr.ex"; ey: "cr.ey"; ez: "cr.ez"; fa: "cr.fa"; fb: "cr.fb"; fc: "cr.fc"; fd: "cr.fd"; fe: "cr.fe"; ff: "cr.ff"; fg: "cr.fg"; fh: "cr.fh"; fi: "cr.fi"; fj: "cr.fj"; fk: "cr.fk"; fl: "cr.fl"; fm: "cr.fm"; fn: "cr.fn"; fo: "cr.fo"; fp: "cr.fp"; fq: "cr.fq"; fr: "cr.fr"; fs: "cr.fs"; ft: "cr.ft"; fu: "cr.fu"; fv: "cr.fv"; fw: "cr.fw"; fx: "cr.fx"; fy: "cr.fy"; fz: "cr.fz"; ga: "cr.ga"; gb: "cr.gb"; gc: "cr.gc"; gd: "cr.gd"; ge: "cr.ge"; gf: "cr.gf"; gg: "cr.gg"; gh: "cr.gh"; gi: "cr.gi"; gj: "cr.gj"; gk: "cr.gk"; gl: "cr.gl"; gm: "cr.gm"; gn: "cr.gn"; go: "cr.go"; gp: "cr.gp"; gq: "cr.gq"; gr: "cr.gr"; gs: "cr.gs"; gt: "cr.gt"; gu: "cr.gu"; gv: "cr.gv"; gw: "cr.gw"; gx: "cr.gx"; gy: "cr.gy"; gz: "cr.gz"; ha: "cr.ha"; hb: "cr.hb"; hc: "cr.hc"; hd: "cr.hd"; he: "cr.he"; hf: "cr.hf"; hg: "cr.hg"; hh: "cr.hh"; hi: "cr.hi"; hj: "cr.hj"; hk: "cr.hk"; hl: "cr.hl"; hm: "cr.hm"; hn: "cr.hn"; ho: "cr.ho"; hp: "cr.hp"; hq: "cr.hq"; hr: "cr.hr"; hs: "cr.hs"; ht: "cr.ht"; hu: "cr.hu"; hv: "cr.hv"; hw: "cr.hw"; hx: "cr.hx"; hy: "cr.hy"; hz: "cr.hz"; ia: "cr.ia"; ib: "cr.ib"; ic: "cr.ic"; id: "cr.id"; ie: "cr.ie"; if: "cr.if"; ig: "cr.ig"; ih: "cr.ih"; ii: "cr.ii"; ij: "cr.ij"; ik: "cr.ik"; il: "cr.il"; im: "cr.im"; in: "cr.in"; io: "cr.io"; ip: "cr.ip"; iq: "cr.iq"; ir: "cr.ir"; is: "cr.is"; it: "cr.it"; iu: "cr.iu"; iv: "cr.iv"; iw: "cr.iw"; ix: "cr.ix"; iy: "cr.iy"; iz: "cr.iz"; ja: "cr.ja"; jb: "cr.jb"; jc: "cr.jc"; jd: "cr.jd"; je: "cr.je"; jf: "cr.jf"; jg: "cr.jg"; jh: "cr.jh"; ji: "cr.ji"; jj: "cr.jj"; jk: "cr.jk"; jl: "cr.jl"; jm: "cr.jm"; jn: "cr.jn"; jo: "cr.jo"; jp: "cr.jp"; jq: "cr.jq"; jr: "cr.jr"; js: "cr.js"; jt: "cr.jt"; ju: "cr.ju"; jv: "cr.jv"; jw: "cr.jw"; jx: "cr.jx"; jy: "cr.jy"; jz: "cr.jz"; ka: "cr.ka"; kb: "cr.kb"; kc: "cr.kc"; kd: "cr.kd"; ke: "cr.ke"; kf: "cr.kf"; kg: "cr.kg"; kh: "cr.kh"; ki: "cr.ki"; kj: "cr.kj"; kk: "cr.kk"; kl: "cr.kl"; km: "cr.km"; kn: "cr.kn"; ko: "cr.ko"; kp: "cr.kp"; kq: "cr.kq"; kr: "cr.kr"; ks: "cr.ks"; kt: "cr.kt"; ku: "cr.ku"; kv: "cr.kv"; kw: "cr.kw"; kx: "cr.kx"; ky: "cr.ky"; kz: "cr.kz"; la: "cr.la"; lb: "cr.lb"; lc: "cr.lc"; ld: "cr.ld"; le: "cr.le"; lf: "cr.lf"; lg: "cr.lg"; lh: "cr.lh"; li: "cr.li"; lj: "cr.lj"; lk: "cr.lk"; ll: "cr.ll"; lm: "cr.lm"; ln: "cr.ln"; lo: "cr.lo"; lp: "cr.lp"; lq: "cr.lq"; lr: "cr.lr"; ls: "cr.ls"; lt: "cr.lt"; lu: "cr.lu"; lv: "cr.lv"; lw: "cr.lw"; lx: "cr.lx"; ly: "cr.ly"; lz: "cr.lz"; ma: "cr.ma"; mb: "cr.mb"; mc: "cr.mc"; md: "cr.md"; me: "cr.me"; mf: "cr.mf"; mg: "cr.mg"; mh: "cr.mh"; mi: "cr.mi"; mj: "cr.mj"; mk: "cr.mk"; ml: "cr.ml"; mm: "cr.mm"; mn: "cr.mn"; mo: "cr.mo"; mp: "cr.mp"; mq: "cr.mq"; mr: "cr.mr"; ms: "cr.ms"; mt: "cr.mt"; mu: "cr.mu"; mv: "cr.mv"; mw: "cr.mw"; mx: "cr.mx"; my: "cr.my"; mz: "cr.mz"; na: "cr.na"; nb: "cr.nb"; nc: "cr.nc"; nd: "cr.nd"; ne: "cr.ne"; nf: "cr.nf"; ng: "cr.ng"; nh: "cr.nh"; ni: "cr.ni"; nj: "cr.nj"; nk: "cr.nk"; nl: "cr.nl"; nm: "cr.nm"; nn: "cr.nn"; no: "cr.no"; np: "cr.np"; nq: "cr.nq"; nr: "cr.nr"; ns: "cr.ns"; nt: "cr.nt"; nu: "cr.nu"; nv: "cr.nv"; nw: "cr.nw"; nx: "cr.nx"; ny: "cr.ny"; nz: "cr.nz"; oa: "cr.oa"; ob: "cr.ob"; oc: "cr.oc"; od: "cr.od"; oe: "cr.oe"; of: "cr.of"; og: "cr.og"; oh: "cr.oh"; oi: "cr.oi"; oj: "cr.oj"; ok: "cr.ok"; ol: "cr.ol"; om: "cr.om"; on: "cr.on"; oo: "cr.oo"; op: "cr.op"; oq: "cr.oq"; or: "cr.or"; os: "cr.os"; ot: "cr.ot"; ou: "cr.ou"; ov: "cr.ov"; ow: "cr.ow"; ox: "cr.ox"; oy: "cr.oy"; oz: "cr.oz"; pa: "cr.pa"; pb: "cr.pb"; pc: "cr.pc"; pd: "cr.pd"; pe: "cr.pe"; pf: "cr.pf"; pg: "cr.pg"; ph: "cr.ph"; pi: "cr.pi"; pj: "cr.pj"; pk: "cr.pk"; pl: "cr.pl"; pm: "cr.pm"; pn: "cr.pn"; po: "cr.po"; pp: "cr.pp"; pq: "cr.pq"; pr: "cr.pr"; ps: "cr.ps"; pt: "cr.pt"; pu: "cr.pu"; pv: "cr.pv"; pw: "cr.pw"; px: "cr.px"; py: "cr.py"; pz: "cr.pz"; qa: "cr.qa"; qb: "cr.qb"; qc: "cr.qc"; qd: "cr.qd"; qe: "cr.qe"; qf: "cr.qf"; qg: "cr.qg"; qh: "cr.qh"; qi: "cr.qi"; qj: "cr.qj"; qk: "cr.qk"; ql: "cr.ql"; qm: "cr.qm"; qn: "cr.qn"; qo: "cr.qo"; qp: "cr.qp"; qq: "cr.qq"; qr: "cr.qr"; qs: "cr.qs"; qt: "cr.qt"; qu: "cr.qu"; qv: "cr.qv"; qw: "cr.qw"; qx: "cr.qx"; qy: "cr.qy"; qz: "cr.qz"; ra: "cr.ra"; rb: "cr.rb"; rc: "cr.rc"; rd: "cr.rd"; re: "cr.re"; rf: "cr.rf"; rg: "cr.rg"; rh: "cr.rh"; ri: "cr.ri"; rj: "cr.rj"; rk: "cr.rk"; rl: "cr.rl"; rm: "cr.rm"; rn: "cr.rn"; ro: "cr.ro"; rp: "cr.rp"; rq: "cr.rq"; rr: "cr.rr"; rs: "cr.rs"; rt: "cr.rt"; ru: "cr.ru"; rv: "cr.rv"; rw: "cr.rw"; rx: "cr.rx"; ry: "cr.ry"; rz: "cr.rz"; sa: "cr.sa"; sb: "cr.sb"; sc: "cr.sc"; sd: "cr.sd"; se: "cr.se"; sf: "cr.sf"; sg: "cr.sg"; sh: "cr.sh"; si: "cr.si"; sj: "cr.sj"; sk: "cr.sk"; sl: "cr.sl"; sm: "cr.sm"; sn: "cr.sn"; so: "cr.so"; sp: "cr.sp"; sq: "cr.sq"; sr: "cr.sr"; ss: "cr.ss"; st: "cr.st"; su: "cr.su"; sv: "cr.sv"; sw: "cr.sw"; sx: "cr.sx"; sy: "cr.sy"; sz: "cr.sz"; ta: "cr.ta"; tb: "cr.tb"; tc: "cr.tc"; td: "cr.td"; te: "cr.te"; tf: "cr.tf"; tg: "cr.tg"; th: "cr.th"; ti: "cr.ti"; tj: "cr.tj"; tk: "cr.tk"; tl: "cr.tl"; tm: "cr.tm"; tn: "cr.tn"; to: "cr.to"; tp: "cr.tp"; tq: "cr.tq"; tr: "cr.tr"; ts: "cr.ts"; tt: "cr.tt"; tu: "cr.tu"; tv: "cr.tv"; tw: "cr.tw"; tx: "cr.tx"; ty: "cr.ty"; tz: "cr.tz"; ua: "cr.ua"; ub: "cr.ub"; uc: "cr.uc"; ud: "cr.ud"; ue: "cr.ue"; uf: "cr.uf"; ug: "cr.ug"; uh: "cr.uh"; ui: "cr.ui"; uj: "cr.uj"; uk: "cr.uk"; ul: "cr.ul"; um: "cr.um"; un: "cr.un"; uo: "cr.uo"; up: "cr.up"; uq: "cr.uq"; ur: "cr.ur"; us: "cr.us"; ut: "cr.ut"; uu: "cr.uu"; uv: "cr.uv"; uw: "cr.uw"; ux: "cr.ux"; uy: "cr.uy"; uz: "cr.uz"; va: "cr.va"; vb: "cr.vb"; vc: "cr.vc"; vd: "cr.vd"; ve: "cr.ve"; vf: "cr.vf"; vg: "cr.vg"; vh: "cr.vh"; vi: "cr.vi"; vj: "cr.vj"; vk: "cr.vk"; vl: "cr.vl"; vm: "cr.vm"; vn: "cr.vn"; vo: "cr.vo"; vp: "cr.vp"; vq: "cr.vq"; vr: "cr.vr"; vs: "cr.vs"; vt: "cr.vt"; vu: "cr.vu"; vv: "cr.vv"; vw: "cr.vw"; vx: "cr.vx"; vy: "cr.vy"; vz: "cr.vz"; wa: "cr.wa"; wb: "cr.wb"; wc: "cr.wc"; wd: "cr.wd"; we: "cr.we"; wf: "cr.wf"; wg: "cr.wg"; wh: "cr.wh"; wi: "cr.wi"; wj: "cr.wj"; wk: "cr.wk"; wl: "cr.wl"; wm: "cr.wm"; wn: "cr.wn"; wo: "cr.wo"; wp: "cr.wp"; wq: "cr.wq"; wr: "cr.wr"; ws: "cr.ws"; wt: "cr.wt"; wu: "cr.wu"; wv: "cr.wv"; ww: "cr.ww"; wx: "cr.wx"; wy: "cr.wy"; wz: "cr.wz"; xa: "cr.xa"; xb: "cr.xb"; xc: "cr.xc"; xd: "cr.xd"; xe: "cr.xe"; xf: "cr.xf"; xg: "cr.xg"; xh: "cr.xh"; xi: "cr.xi"; xj: "cr.xj"; xk: "cr.xk"; xl: "cr.xl"; xm: "cr.xm"; xn: "cr.xn"; xo: "cr.xo"; xp: "cr.xp"; xq: "cr.xq"; xr: "cr.xr"; xs: "cr.xs"; xt: "cr.xt"; xu: "cr.xu"; xv: "cr.xv"; xw: "cr.xw"; xx: "cr.xx"; xy: "cr.xy"; xz: "cr.xz"; ya: "cr.ya"; yb: "cr.yb"; yc: "cr.yc"; yd: "cr.yd"; ye: "cr.ye"; yf: "cr.yf"; yg: "cr.yg"; yh: "cr.yh"; yi: "cr.yi"; yj: "cr.yj"; yk: "cr.yk"; yl: "cr.yl"; ym: "cr.ym"; yn: "cr.yn"; yo: "cr.yo"; yp: "cr.yp"; yq: "cr.yq"; yr: "cr.yr"; ys: "cr.ys"; yt: "cr.yt"; yu: "cr.yu"; yv: "cr.yv"; yw: "cr.yw"; yx: "cr.yx"; yy: "cr.yy"; yz: "cr.yz"; za: "cr.za"; zb: "cr.zb"; zc: "cr.zc"; zd: "cr.zd"; ze: "cr.ze"; zf: "cr.zf"; zg: "cr.zg"; zh: "cr.zh"; zi: "cr.zi"; zj: "cr.zj"; zk: "cr.zk"; zl: "cr.zl"; zm: "cr.zm"; zn: "cr.zn"; zo: "cr.zo"; zp: "cr.zp"; zq: "cr.zq"; zr: "cr.zr"; zs: "cr.zs"; zt: "cr.zt"; zu: "cr.zu"; zv: "cr.zv"; zw: "cr.zw"; zx: "cr.zx"; zy: "cr.zy"; zz: "cr.zz"; }; cs: { aa: "cs.aa"; ab: "cs.ab"; ac: "cs.ac"; ad: "cs.ad"; ae: "cs.ae"; af: "cs.af"; ag: "cs.ag"; ah: "cs.ah"; ai: "cs.ai"; aj: "cs.aj"; ak: "cs.ak"; al: "cs.al"; am: "cs.am"; an: "cs.an"; ao: "cs.ao"; ap: "cs.ap"; aq: "cs.aq"; ar: "cs.ar"; as: "cs.as"; at: "cs.at"; au: "cs.au"; av: "cs.av"; aw: "cs.aw"; ax: "cs.ax"; ay: "cs.ay"; az: "cs.az"; ba: "cs.ba"; bb: "cs.bb"; bc: "cs.bc"; bd: "cs.bd"; be: "cs.be"; bf: "cs.bf"; bg: "cs.bg"; bh: "cs.bh"; bi: "cs.bi"; bj: "cs.bj"; bk: "cs.bk"; bl: "cs.bl"; bm: "cs.bm"; bn: "cs.bn"; bo: "cs.bo"; bp: "cs.bp"; bq: "cs.bq"; br: "cs.br"; bs: "cs.bs"; bt: "cs.bt"; bu: "cs.bu"; bv: "cs.bv"; bw: "cs.bw"; bx: "cs.bx"; by: "cs.by"; bz: "cs.bz"; ca: "cs.ca"; cb: "cs.cb"; cc: "cs.cc"; cd: "cs.cd"; ce: "cs.ce"; cf: "cs.cf"; cg: "cs.cg"; ch: "cs.ch"; ci: "cs.ci"; cj: "cs.cj"; ck: "cs.ck"; cl: "cs.cl"; cm: "cs.cm"; cn: "cs.cn"; co: "cs.co"; cp: "cs.cp"; cq: "cs.cq"; cr: "cs.cr"; cs: "cs.cs"; ct: "cs.ct"; cu: "cs.cu"; cv: "cs.cv"; cw: "cs.cw"; cx: "cs.cx"; cy: "cs.cy"; cz: "cs.cz"; da: "cs.da"; db: "cs.db"; dc: "cs.dc"; dd: "cs.dd"; de: "cs.de"; df: "cs.df"; dg: "cs.dg"; dh: "cs.dh"; di: "cs.di"; dj: "cs.dj"; dk: "cs.dk"; dl: "cs.dl"; dm: "cs.dm"; dn: "cs.dn"; do: "cs.do"; dp: "cs.dp"; dq: "cs.dq"; dr: "cs.dr"; ds: "cs.ds"; dt: "cs.dt"; du: "cs.du"; dv: "cs.dv"; dw: "cs.dw"; dx: "cs.dx"; dy: "cs.dy"; dz: "cs.dz"; ea: "cs.ea"; eb: "cs.eb"; ec: "cs.ec"; ed: "cs.ed"; ee: "cs.ee"; ef: "cs.ef"; eg: "cs.eg"; eh: "cs.eh"; ei: "cs.ei"; ej: "cs.ej"; ek: "cs.ek"; el: "cs.el"; em: "cs.em"; en: "cs.en"; eo: "cs.eo"; ep: "cs.ep"; eq: "cs.eq"; er: "cs.er"; es: "cs.es"; et: "cs.et"; eu: "cs.eu"; ev: "cs.ev"; ew: "cs.ew"; ex: "cs.ex"; ey: "cs.ey"; ez: "cs.ez"; fa: "cs.fa"; fb: "cs.fb"; fc: "cs.fc"; fd: "cs.fd"; fe: "cs.fe"; ff: "cs.ff"; fg: "cs.fg"; fh: "cs.fh"; fi: "cs.fi"; fj: "cs.fj"; fk: "cs.fk"; fl: "cs.fl"; fm: "cs.fm"; fn: "cs.fn"; fo: "cs.fo"; fp: "cs.fp"; fq: "cs.fq"; fr: "cs.fr"; fs: "cs.fs"; ft: "cs.ft"; fu: "cs.fu"; fv: "cs.fv"; fw: "cs.fw"; fx: "cs.fx"; fy: "cs.fy"; fz: "cs.fz"; ga: "cs.ga"; gb: "cs.gb"; gc: "cs.gc"; gd: "cs.gd"; ge: "cs.ge"; gf: "cs.gf"; gg: "cs.gg"; gh: "cs.gh"; gi: "cs.gi"; gj: "cs.gj"; gk: "cs.gk"; gl: "cs.gl"; gm: "cs.gm"; gn: "cs.gn"; go: "cs.go"; gp: "cs.gp"; gq: "cs.gq"; gr: "cs.gr"; gs: "cs.gs"; gt: "cs.gt"; gu: "cs.gu"; gv: "cs.gv"; gw: "cs.gw"; gx: "cs.gx"; gy: "cs.gy"; gz: "cs.gz"; ha: "cs.ha"; hb: "cs.hb"; hc: "cs.hc"; hd: "cs.hd"; he: "cs.he"; hf: "cs.hf"; hg: "cs.hg"; hh: "cs.hh"; hi: "cs.hi"; hj: "cs.hj"; hk: "cs.hk"; hl: "cs.hl"; hm: "cs.hm"; hn: "cs.hn"; ho: "cs.ho"; hp: "cs.hp"; hq: "cs.hq"; hr: "cs.hr"; hs: "cs.hs"; ht: "cs.ht"; hu: "cs.hu"; hv: "cs.hv"; hw: "cs.hw"; hx: "cs.hx"; hy: "cs.hy"; hz: "cs.hz"; ia: "cs.ia"; ib: "cs.ib"; ic: "cs.ic"; id: "cs.id"; ie: "cs.ie"; if: "cs.if"; ig: "cs.ig"; ih: "cs.ih"; ii: "cs.ii"; ij: "cs.ij"; ik: "cs.ik"; il: "cs.il"; im: "cs.im"; in: "cs.in"; io: "cs.io"; ip: "cs.ip"; iq: "cs.iq"; ir: "cs.ir"; is: "cs.is"; it: "cs.it"; iu: "cs.iu"; iv: "cs.iv"; iw: "cs.iw"; ix: "cs.ix"; iy: "cs.iy"; iz: "cs.iz"; ja: "cs.ja"; jb: "cs.jb"; jc: "cs.jc"; jd: "cs.jd"; je: "cs.je"; jf: "cs.jf"; jg: "cs.jg"; jh: "cs.jh"; ji: "cs.ji"; jj: "cs.jj"; jk: "cs.jk"; jl: "cs.jl"; jm: "cs.jm"; jn: "cs.jn"; jo: "cs.jo"; jp: "cs.jp"; jq: "cs.jq"; jr: "cs.jr"; js: "cs.js"; jt: "cs.jt"; ju: "cs.ju"; jv: "cs.jv"; jw: "cs.jw"; jx: "cs.jx"; jy: "cs.jy"; jz: "cs.jz"; ka: "cs.ka"; kb: "cs.kb"; kc: "cs.kc"; kd: "cs.kd"; ke: "cs.ke"; kf: "cs.kf"; kg: "cs.kg"; kh: "cs.kh"; ki: "cs.ki"; kj: "cs.kj"; kk: "cs.kk"; kl: "cs.kl"; km: "cs.km"; kn: "cs.kn"; ko: "cs.ko"; kp: "cs.kp"; kq: "cs.kq"; kr: "cs.kr"; ks: "cs.ks"; kt: "cs.kt"; ku: "cs.ku"; kv: "cs.kv"; kw: "cs.kw"; kx: "cs.kx"; ky: "cs.ky"; kz: "cs.kz"; la: "cs.la"; lb: "cs.lb"; lc: "cs.lc"; ld: "cs.ld"; le: "cs.le"; lf: "cs.lf"; lg: "cs.lg"; lh: "cs.lh"; li: "cs.li"; lj: "cs.lj"; lk: "cs.lk"; ll: "cs.ll"; lm: "cs.lm"; ln: "cs.ln"; lo: "cs.lo"; lp: "cs.lp"; lq: "cs.lq"; lr: "cs.lr"; ls: "cs.ls"; lt: "cs.lt"; lu: "cs.lu"; lv: "cs.lv"; lw: "cs.lw"; lx: "cs.lx"; ly: "cs.ly"; lz: "cs.lz"; ma: "cs.ma"; mb: "cs.mb"; mc: "cs.mc"; md: "cs.md"; me: "cs.me"; mf: "cs.mf"; mg: "cs.mg"; mh: "cs.mh"; mi: "cs.mi"; mj: "cs.mj"; mk: "cs.mk"; ml: "cs.ml"; mm: "cs.mm"; mn: "cs.mn"; mo: "cs.mo"; mp: "cs.mp"; mq: "cs.mq"; mr: "cs.mr"; ms: "cs.ms"; mt: "cs.mt"; mu: "cs.mu"; mv: "cs.mv"; mw: "cs.mw"; mx: "cs.mx"; my: "cs.my"; mz: "cs.mz"; na: "cs.na"; nb: "cs.nb"; nc: "cs.nc"; nd: "cs.nd"; ne: "cs.ne"; nf: "cs.nf"; ng: "cs.ng"; nh: "cs.nh"; ni: "cs.ni"; nj: "cs.nj"; nk: "cs.nk"; nl: "cs.nl"; nm: "cs.nm"; nn: "cs.nn"; no: "cs.no"; np: "cs.np"; nq: "cs.nq"; nr: "cs.nr"; ns: "cs.ns"; nt: "cs.nt"; nu: "cs.nu"; nv: "cs.nv"; nw: "cs.nw"; nx: "cs.nx"; ny: "cs.ny"; nz: "cs.nz"; oa: "cs.oa"; ob: "cs.ob"; oc: "cs.oc"; od: "cs.od"; oe: "cs.oe"; of: "cs.of"; og: "cs.og"; oh: "cs.oh"; oi: "cs.oi"; oj: "cs.oj"; ok: "cs.ok"; ol: "cs.ol"; om: "cs.om"; on: "cs.on"; oo: "cs.oo"; op: "cs.op"; oq: "cs.oq"; or: "cs.or"; os: "cs.os"; ot: "cs.ot"; ou: "cs.ou"; ov: "cs.ov"; ow: "cs.ow"; ox: "cs.ox"; oy: "cs.oy"; oz: "cs.oz"; pa: "cs.pa"; pb: "cs.pb"; pc: "cs.pc"; pd: "cs.pd"; pe: "cs.pe"; pf: "cs.pf"; pg: "cs.pg"; ph: "cs.ph"; pi: "cs.pi"; pj: "cs.pj"; pk: "cs.pk"; pl: "cs.pl"; pm: "cs.pm"; pn: "cs.pn"; po: "cs.po"; pp: "cs.pp"; pq: "cs.pq"; pr: "cs.pr"; ps: "cs.ps"; pt: "cs.pt"; pu: "cs.pu"; pv: "cs.pv"; pw: "cs.pw"; px: "cs.px"; py: "cs.py"; pz: "cs.pz"; qa: "cs.qa"; qb: "cs.qb"; qc: "cs.qc"; qd: "cs.qd"; qe: "cs.qe"; qf: "cs.qf"; qg: "cs.qg"; qh: "cs.qh"; qi: "cs.qi"; qj: "cs.qj"; qk: "cs.qk"; ql: "cs.ql"; qm: "cs.qm"; qn: "cs.qn"; qo: "cs.qo"; qp: "cs.qp"; qq: "cs.qq"; qr: "cs.qr"; qs: "cs.qs"; qt: "cs.qt"; qu: "cs.qu"; qv: "cs.qv"; qw: "cs.qw"; qx: "cs.qx"; qy: "cs.qy"; qz: "cs.qz"; ra: "cs.ra"; rb: "cs.rb"; rc: "cs.rc"; rd: "cs.rd"; re: "cs.re"; rf: "cs.rf"; rg: "cs.rg"; rh: "cs.rh"; ri: "cs.ri"; rj: "cs.rj"; rk: "cs.rk"; rl: "cs.rl"; rm: "cs.rm"; rn: "cs.rn"; ro: "cs.ro"; rp: "cs.rp"; rq: "cs.rq"; rr: "cs.rr"; rs: "cs.rs"; rt: "cs.rt"; ru: "cs.ru"; rv: "cs.rv"; rw: "cs.rw"; rx: "cs.rx"; ry: "cs.ry"; rz: "cs.rz"; sa: "cs.sa"; sb: "cs.sb"; sc: "cs.sc"; sd: "cs.sd"; se: "cs.se"; sf: "cs.sf"; sg: "cs.sg"; sh: "cs.sh"; si: "cs.si"; sj: "cs.sj"; sk: "cs.sk"; sl: "cs.sl"; sm: "cs.sm"; sn: "cs.sn"; so: "cs.so"; sp: "cs.sp"; sq: "cs.sq"; sr: "cs.sr"; ss: "cs.ss"; st: "cs.st"; su: "cs.su"; sv: "cs.sv"; sw: "cs.sw"; sx: "cs.sx"; sy: "cs.sy"; sz: "cs.sz"; ta: "cs.ta"; tb: "cs.tb"; tc: "cs.tc"; td: "cs.td"; te: "cs.te"; tf: "cs.tf"; tg: "cs.tg"; th: "cs.th"; ti: "cs.ti"; tj: "cs.tj"; tk: "cs.tk"; tl: "cs.tl"; tm: "cs.tm"; tn: "cs.tn"; to: "cs.to"; tp: "cs.tp"; tq: "cs.tq"; tr: "cs.tr"; ts: "cs.ts"; tt: "cs.tt"; tu: "cs.tu"; tv: "cs.tv"; tw: "cs.tw"; tx: "cs.tx"; ty: "cs.ty"; tz: "cs.tz"; ua: "cs.ua"; ub: "cs.ub"; uc: "cs.uc"; ud: "cs.ud"; ue: "cs.ue"; uf: "cs.uf"; ug: "cs.ug"; uh: "cs.uh"; ui: "cs.ui"; uj: "cs.uj"; uk: "cs.uk"; ul: "cs.ul"; um: "cs.um"; un: "cs.un"; uo: "cs.uo"; up: "cs.up"; uq: "cs.uq"; ur: "cs.ur"; us: "cs.us"; ut: "cs.ut"; uu: "cs.uu"; uv: "cs.uv"; uw: "cs.uw"; ux: "cs.ux"; uy: "cs.uy"; uz: "cs.uz"; va: "cs.va"; vb: "cs.vb"; vc: "cs.vc"; vd: "cs.vd"; ve: "cs.ve"; vf: "cs.vf"; vg: "cs.vg"; vh: "cs.vh"; vi: "cs.vi"; vj: "cs.vj"; vk: "cs.vk"; vl: "cs.vl"; vm: "cs.vm"; vn: "cs.vn"; vo: "cs.vo"; vp: "cs.vp"; vq: "cs.vq"; vr: "cs.vr"; vs: "cs.vs"; vt: "cs.vt"; vu: "cs.vu"; vv: "cs.vv"; vw: "cs.vw"; vx: "cs.vx"; vy: "cs.vy"; vz: "cs.vz"; wa: "cs.wa"; wb: "cs.wb"; wc: "cs.wc"; wd: "cs.wd"; we: "cs.we"; wf: "cs.wf"; wg: "cs.wg"; wh: "cs.wh"; wi: "cs.wi"; wj: "cs.wj"; wk: "cs.wk"; wl: "cs.wl"; wm: "cs.wm"; wn: "cs.wn"; wo: "cs.wo"; wp: "cs.wp"; wq: "cs.wq"; wr: "cs.wr"; ws: "cs.ws"; wt: "cs.wt"; wu: "cs.wu"; wv: "cs.wv"; ww: "cs.ww"; wx: "cs.wx"; wy: "cs.wy"; wz: "cs.wz"; xa: "cs.xa"; xb: "cs.xb"; xc: "cs.xc"; xd: "cs.xd"; xe: "cs.xe"; xf: "cs.xf"; xg: "cs.xg"; xh: "cs.xh"; xi: "cs.xi"; xj: "cs.xj"; xk: "cs.xk"; xl: "cs.xl"; xm: "cs.xm"; xn: "cs.xn"; xo: "cs.xo"; xp: "cs.xp"; xq: "cs.xq"; xr: "cs.xr"; xs: "cs.xs"; xt: "cs.xt"; xu: "cs.xu"; xv: "cs.xv"; xw: "cs.xw"; xx: "cs.xx"; xy: "cs.xy"; xz: "cs.xz"; ya: "cs.ya"; yb: "cs.yb"; yc: "cs.yc"; yd: "cs.yd"; ye: "cs.ye"; yf: "cs.yf"; yg: "cs.yg"; yh: "cs.yh"; yi: "cs.yi"; yj: "cs.yj"; yk: "cs.yk"; yl: "cs.yl"; ym: "cs.ym"; yn: "cs.yn"; yo: "cs.yo"; yp: "cs.yp"; yq: "cs.yq"; yr: "cs.yr"; ys: "cs.ys"; yt: "cs.yt"; yu: "cs.yu"; yv: "cs.yv"; yw: "cs.yw"; yx: "cs.yx"; yy: "cs.yy"; yz: "cs.yz"; za: "cs.za"; zb: "cs.zb"; zc: "cs.zc"; zd: "cs.zd"; ze: "cs.ze"; zf: "cs.zf"; zg: "cs.zg"; zh: "cs.zh"; zi: "cs.zi"; zj: "cs.zj"; zk: "cs.zk"; zl: "cs.zl"; zm: "cs.zm"; zn: "cs.zn"; zo: "cs.zo"; zp: "cs.zp"; zq: "cs.zq"; zr: "cs.zr"; zs: "cs.zs"; zt: "cs.zt"; zu: "cs.zu"; zv: "cs.zv"; zw: "cs.zw"; zx: "cs.zx"; zy: "cs.zy"; zz: "cs.zz"; }; ct: { aa: "ct.aa"; ab: "ct.ab"; ac: "ct.ac"; ad: "ct.ad"; ae: "ct.ae"; af: "ct.af"; ag: "ct.ag"; ah: "ct.ah"; ai: "ct.ai"; aj: "ct.aj"; ak: "ct.ak"; al: "ct.al"; am: "ct.am"; an: "ct.an"; ao: "ct.ao"; ap: "ct.ap"; aq: "ct.aq"; ar: "ct.ar"; as: "ct.as"; at: "ct.at"; au: "ct.au"; av: "ct.av"; aw: "ct.aw"; ax: "ct.ax"; ay: "ct.ay"; az: "ct.az"; ba: "ct.ba"; bb: "ct.bb"; bc: "ct.bc"; bd: "ct.bd"; be: "ct.be"; bf: "ct.bf"; bg: "ct.bg"; bh: "ct.bh"; bi: "ct.bi"; bj: "ct.bj"; bk: "ct.bk"; bl: "ct.bl"; bm: "ct.bm"; bn: "ct.bn"; bo: "ct.bo"; bp: "ct.bp"; bq: "ct.bq"; br: "ct.br"; bs: "ct.bs"; bt: "ct.bt"; bu: "ct.bu"; bv: "ct.bv"; bw: "ct.bw"; bx: "ct.bx"; by: "ct.by"; bz: "ct.bz"; ca: "ct.ca"; cb: "ct.cb"; cc: "ct.cc"; cd: "ct.cd"; ce: "ct.ce"; cf: "ct.cf"; cg: "ct.cg"; ch: "ct.ch"; ci: "ct.ci"; cj: "ct.cj"; ck: "ct.ck"; cl: "ct.cl"; cm: "ct.cm"; cn: "ct.cn"; co: "ct.co"; cp: "ct.cp"; cq: "ct.cq"; cr: "ct.cr"; cs: "ct.cs"; ct: "ct.ct"; cu: "ct.cu"; cv: "ct.cv"; cw: "ct.cw"; cx: "ct.cx"; cy: "ct.cy"; cz: "ct.cz"; da: "ct.da"; db: "ct.db"; dc: "ct.dc"; dd: "ct.dd"; de: "ct.de"; df: "ct.df"; dg: "ct.dg"; dh: "ct.dh"; di: "ct.di"; dj: "ct.dj"; dk: "ct.dk"; dl: "ct.dl"; dm: "ct.dm"; dn: "ct.dn"; do: "ct.do"; dp: "ct.dp"; dq: "ct.dq"; dr: "ct.dr"; ds: "ct.ds"; dt: "ct.dt"; du: "ct.du"; dv: "ct.dv"; dw: "ct.dw"; dx: "ct.dx"; dy: "ct.dy"; dz: "ct.dz"; ea: "ct.ea"; eb: "ct.eb"; ec: "ct.ec"; ed: "ct.ed"; ee: "ct.ee"; ef: "ct.ef"; eg: "ct.eg"; eh: "ct.eh"; ei: "ct.ei"; ej: "ct.ej"; ek: "ct.ek"; el: "ct.el"; em: "ct.em"; en: "ct.en"; eo: "ct.eo"; ep: "ct.ep"; eq: "ct.eq"; er: "ct.er"; es: "ct.es"; et: "ct.et"; eu: "ct.eu"; ev: "ct.ev"; ew: "ct.ew"; ex: "ct.ex"; ey: "ct.ey"; ez: "ct.ez"; fa: "ct.fa"; fb: "ct.fb"; fc: "ct.fc"; fd: "ct.fd"; fe: "ct.fe"; ff: "ct.ff"; fg: "ct.fg"; fh: "ct.fh"; fi: "ct.fi"; fj: "ct.fj"; fk: "ct.fk"; fl: "ct.fl"; fm: "ct.fm"; fn: "ct.fn"; fo: "ct.fo"; fp: "ct.fp"; fq: "ct.fq"; fr: "ct.fr"; fs: "ct.fs"; ft: "ct.ft"; fu: "ct.fu"; fv: "ct.fv"; fw: "ct.fw"; fx: "ct.fx"; fy: "ct.fy"; fz: "ct.fz"; ga: "ct.ga"; gb: "ct.gb"; gc: "ct.gc"; gd: "ct.gd"; ge: "ct.ge"; gf: "ct.gf"; gg: "ct.gg"; gh: "ct.gh"; gi: "ct.gi"; gj: "ct.gj"; gk: "ct.gk"; gl: "ct.gl"; gm: "ct.gm"; gn: "ct.gn"; go: "ct.go"; gp: "ct.gp"; gq: "ct.gq"; gr: "ct.gr"; gs: "ct.gs"; gt: "ct.gt"; gu: "ct.gu"; gv: "ct.gv"; gw: "ct.gw"; gx: "ct.gx"; gy: "ct.gy"; gz: "ct.gz"; ha: "ct.ha"; hb: "ct.hb"; hc: "ct.hc"; hd: "ct.hd"; he: "ct.he"; hf: "ct.hf"; hg: "ct.hg"; hh: "ct.hh"; hi: "ct.hi"; hj: "ct.hj"; hk: "ct.hk"; hl: "ct.hl"; hm: "ct.hm"; hn: "ct.hn"; ho: "ct.ho"; hp: "ct.hp"; hq: "ct.hq"; hr: "ct.hr"; hs: "ct.hs"; ht: "ct.ht"; hu: "ct.hu"; hv: "ct.hv"; hw: "ct.hw"; hx: "ct.hx"; hy: "ct.hy"; hz: "ct.hz"; ia: "ct.ia"; ib: "ct.ib"; ic: "ct.ic"; id: "ct.id"; ie: "ct.ie"; if: "ct.if"; ig: "ct.ig"; ih: "ct.ih"; ii: "ct.ii"; ij: "ct.ij"; ik: "ct.ik"; il: "ct.il"; im: "ct.im"; in: "ct.in"; io: "ct.io"; ip: "ct.ip"; iq: "ct.iq"; ir: "ct.ir"; is: "ct.is"; it: "ct.it"; iu: "ct.iu"; iv: "ct.iv"; iw: "ct.iw"; ix: "ct.ix"; iy: "ct.iy"; iz: "ct.iz"; ja: "ct.ja"; jb: "ct.jb"; jc: "ct.jc"; jd: "ct.jd"; je: "ct.je"; jf: "ct.jf"; jg: "ct.jg"; jh: "ct.jh"; ji: "ct.ji"; jj: "ct.jj"; jk: "ct.jk"; jl: "ct.jl"; jm: "ct.jm"; jn: "ct.jn"; jo: "ct.jo"; jp: "ct.jp"; jq: "ct.jq"; jr: "ct.jr"; js: "ct.js"; jt: "ct.jt"; ju: "ct.ju"; jv: "ct.jv"; jw: "ct.jw"; jx: "ct.jx"; jy: "ct.jy"; jz: "ct.jz"; ka: "ct.ka"; kb: "ct.kb"; kc: "ct.kc"; kd: "ct.kd"; ke: "ct.ke"; kf: "ct.kf"; kg: "ct.kg"; kh: "ct.kh"; ki: "ct.ki"; kj: "ct.kj"; kk: "ct.kk"; kl: "ct.kl"; km: "ct.km"; kn: "ct.kn"; ko: "ct.ko"; kp: "ct.kp"; kq: "ct.kq"; kr: "ct.kr"; ks: "ct.ks"; kt: "ct.kt"; ku: "ct.ku"; kv: "ct.kv"; kw: "ct.kw"; kx: "ct.kx"; ky: "ct.ky"; kz: "ct.kz"; la: "ct.la"; lb: "ct.lb"; lc: "ct.lc"; ld: "ct.ld"; le: "ct.le"; lf: "ct.lf"; lg: "ct.lg"; lh: "ct.lh"; li: "ct.li"; lj: "ct.lj"; lk: "ct.lk"; ll: "ct.ll"; lm: "ct.lm"; ln: "ct.ln"; lo: "ct.lo"; lp: "ct.lp"; lq: "ct.lq"; lr: "ct.lr"; ls: "ct.ls"; lt: "ct.lt"; lu: "ct.lu"; lv: "ct.lv"; lw: "ct.lw"; lx: "ct.lx"; ly: "ct.ly"; lz: "ct.lz"; ma: "ct.ma"; mb: "ct.mb"; mc: "ct.mc"; md: "ct.md"; me: "ct.me"; mf: "ct.mf"; mg: "ct.mg"; mh: "ct.mh"; mi: "ct.mi"; mj: "ct.mj"; mk: "ct.mk"; ml: "ct.ml"; mm: "ct.mm"; mn: "ct.mn"; mo: "ct.mo"; mp: "ct.mp"; mq: "ct.mq"; mr: "ct.mr"; ms: "ct.ms"; mt: "ct.mt"; mu: "ct.mu"; mv: "ct.mv"; mw: "ct.mw"; mx: "ct.mx"; my: "ct.my"; mz: "ct.mz"; na: "ct.na"; nb: "ct.nb"; nc: "ct.nc"; nd: "ct.nd"; ne: "ct.ne"; nf: "ct.nf"; ng: "ct.ng"; nh: "ct.nh"; ni: "ct.ni"; nj: "ct.nj"; nk: "ct.nk"; nl: "ct.nl"; nm: "ct.nm"; nn: "ct.nn"; no: "ct.no"; np: "ct.np"; nq: "ct.nq"; nr: "ct.nr"; ns: "ct.ns"; nt: "ct.nt"; nu: "ct.nu"; nv: "ct.nv"; nw: "ct.nw"; nx: "ct.nx"; ny: "ct.ny"; nz: "ct.nz"; oa: "ct.oa"; ob: "ct.ob"; oc: "ct.oc"; od: "ct.od"; oe: "ct.oe"; of: "ct.of"; og: "ct.og"; oh: "ct.oh"; oi: "ct.oi"; oj: "ct.oj"; ok: "ct.ok"; ol: "ct.ol"; om: "ct.om"; on: "ct.on"; oo: "ct.oo"; op: "ct.op"; oq: "ct.oq"; or: "ct.or"; os: "ct.os"; ot: "ct.ot"; ou: "ct.ou"; ov: "ct.ov"; ow: "ct.ow"; ox: "ct.ox"; oy: "ct.oy"; oz: "ct.oz"; pa: "ct.pa"; pb: "ct.pb"; pc: "ct.pc"; pd: "ct.pd"; pe: "ct.pe"; pf: "ct.pf"; pg: "ct.pg"; ph: "ct.ph"; pi: "ct.pi"; pj: "ct.pj"; pk: "ct.pk"; pl: "ct.pl"; pm: "ct.pm"; pn: "ct.pn"; po: "ct.po"; pp: "ct.pp"; pq: "ct.pq"; pr: "ct.pr"; ps: "ct.ps"; pt: "ct.pt"; pu: "ct.pu"; pv: "ct.pv"; pw: "ct.pw"; px: "ct.px"; py: "ct.py"; pz: "ct.pz"; qa: "ct.qa"; qb: "ct.qb"; qc: "ct.qc"; qd: "ct.qd"; qe: "ct.qe"; qf: "ct.qf"; qg: "ct.qg"; qh: "ct.qh"; qi: "ct.qi"; qj: "ct.qj"; qk: "ct.qk"; ql: "ct.ql"; qm: "ct.qm"; qn: "ct.qn"; qo: "ct.qo"; qp: "ct.qp"; qq: "ct.qq"; qr: "ct.qr"; qs: "ct.qs"; qt: "ct.qt"; qu: "ct.qu"; qv: "ct.qv"; qw: "ct.qw"; qx: "ct.qx"; qy: "ct.qy"; qz: "ct.qz"; ra: "ct.ra"; rb: "ct.rb"; rc: "ct.rc"; rd: "ct.rd"; re: "ct.re"; rf: "ct.rf"; rg: "ct.rg"; rh: "ct.rh"; ri: "ct.ri"; rj: "ct.rj"; rk: "ct.rk"; rl: "ct.rl"; rm: "ct.rm"; rn: "ct.rn"; ro: "ct.ro"; rp: "ct.rp"; rq: "ct.rq"; rr: "ct.rr"; rs: "ct.rs"; rt: "ct.rt"; ru: "ct.ru"; rv: "ct.rv"; rw: "ct.rw"; rx: "ct.rx"; ry: "ct.ry"; rz: "ct.rz"; sa: "ct.sa"; sb: "ct.sb"; sc: "ct.sc"; sd: "ct.sd"; se: "ct.se"; sf: "ct.sf"; sg: "ct.sg"; sh: "ct.sh"; si: "ct.si"; sj: "ct.sj"; sk: "ct.sk"; sl: "ct.sl"; sm: "ct.sm"; sn: "ct.sn"; so: "ct.so"; sp: "ct.sp"; sq: "ct.sq"; sr: "ct.sr"; ss: "ct.ss"; st: "ct.st"; su: "ct.su"; sv: "ct.sv"; sw: "ct.sw"; sx: "ct.sx"; sy: "ct.sy"; sz: "ct.sz"; ta: "ct.ta"; tb: "ct.tb"; tc: "ct.tc"; td: "ct.td"; te: "ct.te"; tf: "ct.tf"; tg: "ct.tg"; th: "ct.th"; ti: "ct.ti"; tj: "ct.tj"; tk: "ct.tk"; tl: "ct.tl"; tm: "ct.tm"; tn: "ct.tn"; to: "ct.to"; tp: "ct.tp"; tq: "ct.tq"; tr: "ct.tr"; ts: "ct.ts"; tt: "ct.tt"; tu: "ct.tu"; tv: "ct.tv"; tw: "ct.tw"; tx: "ct.tx"; ty: "ct.ty"; tz: "ct.tz"; ua: "ct.ua"; ub: "ct.ub"; uc: "ct.uc"; ud: "ct.ud"; ue: "ct.ue"; uf: "ct.uf"; ug: "ct.ug"; uh: "ct.uh"; ui: "ct.ui"; uj: "ct.uj"; uk: "ct.uk"; ul: "ct.ul"; um: "ct.um"; un: "ct.un"; uo: "ct.uo"; up: "ct.up"; uq: "ct.uq"; ur: "ct.ur"; us: "ct.us"; ut: "ct.ut"; uu: "ct.uu"; uv: "ct.uv"; uw: "ct.uw"; ux: "ct.ux"; uy: "ct.uy"; uz: "ct.uz"; va: "ct.va"; vb: "ct.vb"; vc: "ct.vc"; vd: "ct.vd"; ve: "ct.ve"; vf: "ct.vf"; vg: "ct.vg"; vh: "ct.vh"; vi: "ct.vi"; vj: "ct.vj"; vk: "ct.vk"; vl: "ct.vl"; vm: "ct.vm"; vn: "ct.vn"; vo: "ct.vo"; vp: "ct.vp"; vq: "ct.vq"; vr: "ct.vr"; vs: "ct.vs"; vt: "ct.vt"; vu: "ct.vu"; vv: "ct.vv"; vw: "ct.vw"; vx: "ct.vx"; vy: "ct.vy"; vz: "ct.vz"; wa: "ct.wa"; wb: "ct.wb"; wc: "ct.wc"; wd: "ct.wd"; we: "ct.we"; wf: "ct.wf"; wg: "ct.wg"; wh: "ct.wh"; wi: "ct.wi"; wj: "ct.wj"; wk: "ct.wk"; wl: "ct.wl"; wm: "ct.wm"; wn: "ct.wn"; wo: "ct.wo"; wp: "ct.wp"; wq: "ct.wq"; wr: "ct.wr"; ws: "ct.ws"; wt: "ct.wt"; wu: "ct.wu"; wv: "ct.wv"; ww: "ct.ww"; wx: "ct.wx"; wy: "ct.wy"; wz: "ct.wz"; xa: "ct.xa"; xb: "ct.xb"; xc: "ct.xc"; xd: "ct.xd"; xe: "ct.xe"; xf: "ct.xf"; xg: "ct.xg"; xh: "ct.xh"; xi: "ct.xi"; xj: "ct.xj"; xk: "ct.xk"; xl: "ct.xl"; xm: "ct.xm"; xn: "ct.xn"; xo: "ct.xo"; xp: "ct.xp"; xq: "ct.xq"; xr: "ct.xr"; xs: "ct.xs"; xt: "ct.xt"; xu: "ct.xu"; xv: "ct.xv"; xw: "ct.xw"; xx: "ct.xx"; xy: "ct.xy"; xz: "ct.xz"; ya: "ct.ya"; yb: "ct.yb"; yc: "ct.yc"; yd: "ct.yd"; ye: "ct.ye"; yf: "ct.yf"; yg: "ct.yg"; yh: "ct.yh"; yi: "ct.yi"; yj: "ct.yj"; yk: "ct.yk"; yl: "ct.yl"; ym: "ct.ym"; yn: "ct.yn"; yo: "ct.yo"; yp: "ct.yp"; yq: "ct.yq"; yr: "ct.yr"; ys: "ct.ys"; yt: "ct.yt"; yu: "ct.yu"; yv: "ct.yv"; yw: "ct.yw"; yx: "ct.yx"; yy: "ct.yy"; yz: "ct.yz"; za: "ct.za"; zb: "ct.zb"; zc: "ct.zc"; zd: "ct.zd"; ze: "ct.ze"; zf: "ct.zf"; zg: "ct.zg"; zh: "ct.zh"; zi: "ct.zi"; zj: "ct.zj"; zk: "ct.zk"; zl: "ct.zl"; zm: "ct.zm"; zn: "ct.zn"; zo: "ct.zo"; zp: "ct.zp"; zq: "ct.zq"; zr: "ct.zr"; zs: "ct.zs"; zt: "ct.zt"; zu: "ct.zu"; zv: "ct.zv"; zw: "ct.zw"; zx: "ct.zx"; zy: "ct.zy"; zz: "ct.zz"; }; cu: { aa: "cu.aa"; ab: "cu.ab"; ac: "cu.ac"; ad: "cu.ad"; ae: "cu.ae"; af: "cu.af"; ag: "cu.ag"; ah: "cu.ah"; ai: "cu.ai"; aj: "cu.aj"; ak: "cu.ak"; al: "cu.al"; am: "cu.am"; an: "cu.an"; ao: "cu.ao"; ap: "cu.ap"; aq: "cu.aq"; ar: "cu.ar"; as: "cu.as"; at: "cu.at"; au: "cu.au"; av: "cu.av"; aw: "cu.aw"; ax: "cu.ax"; ay: "cu.ay"; az: "cu.az"; ba: "cu.ba"; bb: "cu.bb"; bc: "cu.bc"; bd: "cu.bd"; be: "cu.be"; bf: "cu.bf"; bg: "cu.bg"; bh: "cu.bh"; bi: "cu.bi"; bj: "cu.bj"; bk: "cu.bk"; bl: "cu.bl"; bm: "cu.bm"; bn: "cu.bn"; bo: "cu.bo"; bp: "cu.bp"; bq: "cu.bq"; br: "cu.br"; bs: "cu.bs"; bt: "cu.bt"; bu: "cu.bu"; bv: "cu.bv"; bw: "cu.bw"; bx: "cu.bx"; by: "cu.by"; bz: "cu.bz"; ca: "cu.ca"; cb: "cu.cb"; cc: "cu.cc"; cd: "cu.cd"; ce: "cu.ce"; cf: "cu.cf"; cg: "cu.cg"; ch: "cu.ch"; ci: "cu.ci"; cj: "cu.cj"; ck: "cu.ck"; cl: "cu.cl"; cm: "cu.cm"; cn: "cu.cn"; co: "cu.co"; cp: "cu.cp"; cq: "cu.cq"; cr: "cu.cr"; cs: "cu.cs"; ct: "cu.ct"; cu: "cu.cu"; cv: "cu.cv"; cw: "cu.cw"; cx: "cu.cx"; cy: "cu.cy"; cz: "cu.cz"; da: "cu.da"; db: "cu.db"; dc: "cu.dc"; dd: "cu.dd"; de: "cu.de"; df: "cu.df"; dg: "cu.dg"; dh: "cu.dh"; di: "cu.di"; dj: "cu.dj"; dk: "cu.dk"; dl: "cu.dl"; dm: "cu.dm"; dn: "cu.dn"; do: "cu.do"; dp: "cu.dp"; dq: "cu.dq"; dr: "cu.dr"; ds: "cu.ds"; dt: "cu.dt"; du: "cu.du"; dv: "cu.dv"; dw: "cu.dw"; dx: "cu.dx"; dy: "cu.dy"; dz: "cu.dz"; ea: "cu.ea"; eb: "cu.eb"; ec: "cu.ec"; ed: "cu.ed"; ee: "cu.ee"; ef: "cu.ef"; eg: "cu.eg"; eh: "cu.eh"; ei: "cu.ei"; ej: "cu.ej"; ek: "cu.ek"; el: "cu.el"; em: "cu.em"; en: "cu.en"; eo: "cu.eo"; ep: "cu.ep"; eq: "cu.eq"; er: "cu.er"; es: "cu.es"; et: "cu.et"; eu: "cu.eu"; ev: "cu.ev"; ew: "cu.ew"; ex: "cu.ex"; ey: "cu.ey"; ez: "cu.ez"; fa: "cu.fa"; fb: "cu.fb"; fc: "cu.fc"; fd: "cu.fd"; fe: "cu.fe"; ff: "cu.ff"; fg: "cu.fg"; fh: "cu.fh"; fi: "cu.fi"; fj: "cu.fj"; fk: "cu.fk"; fl: "cu.fl"; fm: "cu.fm"; fn: "cu.fn"; fo: "cu.fo"; fp: "cu.fp"; fq: "cu.fq"; fr: "cu.fr"; fs: "cu.fs"; ft: "cu.ft"; fu: "cu.fu"; fv: "cu.fv"; fw: "cu.fw"; fx: "cu.fx"; fy: "cu.fy"; fz: "cu.fz"; ga: "cu.ga"; gb: "cu.gb"; gc: "cu.gc"; gd: "cu.gd"; ge: "cu.ge"; gf: "cu.gf"; gg: "cu.gg"; gh: "cu.gh"; gi: "cu.gi"; gj: "cu.gj"; gk: "cu.gk"; gl: "cu.gl"; gm: "cu.gm"; gn: "cu.gn"; go: "cu.go"; gp: "cu.gp"; gq: "cu.gq"; gr: "cu.gr"; gs: "cu.gs"; gt: "cu.gt"; gu: "cu.gu"; gv: "cu.gv"; gw: "cu.gw"; gx: "cu.gx"; gy: "cu.gy"; gz: "cu.gz"; ha: "cu.ha"; hb: "cu.hb"; hc: "cu.hc"; hd: "cu.hd"; he: "cu.he"; hf: "cu.hf"; hg: "cu.hg"; hh: "cu.hh"; hi: "cu.hi"; hj: "cu.hj"; hk: "cu.hk"; hl: "cu.hl"; hm: "cu.hm"; hn: "cu.hn"; ho: "cu.ho"; hp: "cu.hp"; hq: "cu.hq"; hr: "cu.hr"; hs: "cu.hs"; ht: "cu.ht"; hu: "cu.hu"; hv: "cu.hv"; hw: "cu.hw"; hx: "cu.hx"; hy: "cu.hy"; hz: "cu.hz"; ia: "cu.ia"; ib: "cu.ib"; ic: "cu.ic"; id: "cu.id"; ie: "cu.ie"; if: "cu.if"; ig: "cu.ig"; ih: "cu.ih"; ii: "cu.ii"; ij: "cu.ij"; ik: "cu.ik"; il: "cu.il"; im: "cu.im"; in: "cu.in"; io: "cu.io"; ip: "cu.ip"; iq: "cu.iq"; ir: "cu.ir"; is: "cu.is"; it: "cu.it"; iu: "cu.iu"; iv: "cu.iv"; iw: "cu.iw"; ix: "cu.ix"; iy: "cu.iy"; iz: "cu.iz"; ja: "cu.ja"; jb: "cu.jb"; jc: "cu.jc"; jd: "cu.jd"; je: "cu.je"; jf: "cu.jf"; jg: "cu.jg"; jh: "cu.jh"; ji: "cu.ji"; jj: "cu.jj"; jk: "cu.jk"; jl: "cu.jl"; jm: "cu.jm"; jn: "cu.jn"; jo: "cu.jo"; jp: "cu.jp"; jq: "cu.jq"; jr: "cu.jr"; js: "cu.js"; jt: "cu.jt"; ju: "cu.ju"; jv: "cu.jv"; jw: "cu.jw"; jx: "cu.jx"; jy: "cu.jy"; jz: "cu.jz"; ka: "cu.ka"; kb: "cu.kb"; kc: "cu.kc"; kd: "cu.kd"; ke: "cu.ke"; kf: "cu.kf"; kg: "cu.kg"; kh: "cu.kh"; ki: "cu.ki"; kj: "cu.kj"; kk: "cu.kk"; kl: "cu.kl"; km: "cu.km"; kn: "cu.kn"; ko: "cu.ko"; kp: "cu.kp"; kq: "cu.kq"; kr: "cu.kr"; ks: "cu.ks"; kt: "cu.kt"; ku: "cu.ku"; kv: "cu.kv"; kw: "cu.kw"; kx: "cu.kx"; ky: "cu.ky"; kz: "cu.kz"; la: "cu.la"; lb: "cu.lb"; lc: "cu.lc"; ld: "cu.ld"; le: "cu.le"; lf: "cu.lf"; lg: "cu.lg"; lh: "cu.lh"; li: "cu.li"; lj: "cu.lj"; lk: "cu.lk"; ll: "cu.ll"; lm: "cu.lm"; ln: "cu.ln"; lo: "cu.lo"; lp: "cu.lp"; lq: "cu.lq"; lr: "cu.lr"; ls: "cu.ls"; lt: "cu.lt"; lu: "cu.lu"; lv: "cu.lv"; lw: "cu.lw"; lx: "cu.lx"; ly: "cu.ly"; lz: "cu.lz"; ma: "cu.ma"; mb: "cu.mb"; mc: "cu.mc"; md: "cu.md"; me: "cu.me"; mf: "cu.mf"; mg: "cu.mg"; mh: "cu.mh"; mi: "cu.mi"; mj: "cu.mj"; mk: "cu.mk"; ml: "cu.ml"; mm: "cu.mm"; mn: "cu.mn"; mo: "cu.mo"; mp: "cu.mp"; mq: "cu.mq"; mr: "cu.mr"; ms: "cu.ms"; mt: "cu.mt"; mu: "cu.mu"; mv: "cu.mv"; mw: "cu.mw"; mx: "cu.mx"; my: "cu.my"; mz: "cu.mz"; na: "cu.na"; nb: "cu.nb"; nc: "cu.nc"; nd: "cu.nd"; ne: "cu.ne"; nf: "cu.nf"; ng: "cu.ng"; nh: "cu.nh"; ni: "cu.ni"; nj: "cu.nj"; nk: "cu.nk"; nl: "cu.nl"; nm: "cu.nm"; nn: "cu.nn"; no: "cu.no"; np: "cu.np"; nq: "cu.nq"; nr: "cu.nr"; ns: "cu.ns"; nt: "cu.nt"; nu: "cu.nu"; nv: "cu.nv"; nw: "cu.nw"; nx: "cu.nx"; ny: "cu.ny"; nz: "cu.nz"; oa: "cu.oa"; ob: "cu.ob"; oc: "cu.oc"; od: "cu.od"; oe: "cu.oe"; of: "cu.of"; og: "cu.og"; oh: "cu.oh"; oi: "cu.oi"; oj: "cu.oj"; ok: "cu.ok"; ol: "cu.ol"; om: "cu.om"; on: "cu.on"; oo: "cu.oo"; op: "cu.op"; oq: "cu.oq"; or: "cu.or"; os: "cu.os"; ot: "cu.ot"; ou: "cu.ou"; ov: "cu.ov"; ow: "cu.ow"; ox: "cu.ox"; oy: "cu.oy"; oz: "cu.oz"; pa: "cu.pa"; pb: "cu.pb"; pc: "cu.pc"; pd: "cu.pd"; pe: "cu.pe"; pf: "cu.pf"; pg: "cu.pg"; ph: "cu.ph"; pi: "cu.pi"; pj: "cu.pj"; pk: "cu.pk"; pl: "cu.pl"; pm: "cu.pm"; pn: "cu.pn"; po: "cu.po"; pp: "cu.pp"; pq: "cu.pq"; pr: "cu.pr"; ps: "cu.ps"; pt: "cu.pt"; pu: "cu.pu"; pv: "cu.pv"; pw: "cu.pw"; px: "cu.px"; py: "cu.py"; pz: "cu.pz"; qa: "cu.qa"; qb: "cu.qb"; qc: "cu.qc"; qd: "cu.qd"; qe: "cu.qe"; qf: "cu.qf"; qg: "cu.qg"; qh: "cu.qh"; qi: "cu.qi"; qj: "cu.qj"; qk: "cu.qk"; ql: "cu.ql"; qm: "cu.qm"; qn: "cu.qn"; qo: "cu.qo"; qp: "cu.qp"; qq: "cu.qq"; qr: "cu.qr"; qs: "cu.qs"; qt: "cu.qt"; qu: "cu.qu"; qv: "cu.qv"; qw: "cu.qw"; qx: "cu.qx"; qy: "cu.qy"; qz: "cu.qz"; ra: "cu.ra"; rb: "cu.rb"; rc: "cu.rc"; rd: "cu.rd"; re: "cu.re"; rf: "cu.rf"; rg: "cu.rg"; rh: "cu.rh"; ri: "cu.ri"; rj: "cu.rj"; rk: "cu.rk"; rl: "cu.rl"; rm: "cu.rm"; rn: "cu.rn"; ro: "cu.ro"; rp: "cu.rp"; rq: "cu.rq"; rr: "cu.rr"; rs: "cu.rs"; rt: "cu.rt"; ru: "cu.ru"; rv: "cu.rv"; rw: "cu.rw"; rx: "cu.rx"; ry: "cu.ry"; rz: "cu.rz"; sa: "cu.sa"; sb: "cu.sb"; sc: "cu.sc"; sd: "cu.sd"; se: "cu.se"; sf: "cu.sf"; sg: "cu.sg"; sh: "cu.sh"; si: "cu.si"; sj: "cu.sj"; sk: "cu.sk"; sl: "cu.sl"; sm: "cu.sm"; sn: "cu.sn"; so: "cu.so"; sp: "cu.sp"; sq: "cu.sq"; sr: "cu.sr"; ss: "cu.ss"; st: "cu.st"; su: "cu.su"; sv: "cu.sv"; sw: "cu.sw"; sx: "cu.sx"; sy: "cu.sy"; sz: "cu.sz"; ta: "cu.ta"; tb: "cu.tb"; tc: "cu.tc"; td: "cu.td"; te: "cu.te"; tf: "cu.tf"; tg: "cu.tg"; th: "cu.th"; ti: "cu.ti"; tj: "cu.tj"; tk: "cu.tk"; tl: "cu.tl"; tm: "cu.tm"; tn: "cu.tn"; to: "cu.to"; tp: "cu.tp"; tq: "cu.tq"; tr: "cu.tr"; ts: "cu.ts"; tt: "cu.tt"; tu: "cu.tu"; tv: "cu.tv"; tw: "cu.tw"; tx: "cu.tx"; ty: "cu.ty"; tz: "cu.tz"; ua: "cu.ua"; ub: "cu.ub"; uc: "cu.uc"; ud: "cu.ud"; ue: "cu.ue"; uf: "cu.uf"; ug: "cu.ug"; uh: "cu.uh"; ui: "cu.ui"; uj: "cu.uj"; uk: "cu.uk"; ul: "cu.ul"; um: "cu.um"; un: "cu.un"; uo: "cu.uo"; up: "cu.up"; uq: "cu.uq"; ur: "cu.ur"; us: "cu.us"; ut: "cu.ut"; uu: "cu.uu"; uv: "cu.uv"; uw: "cu.uw"; ux: "cu.ux"; uy: "cu.uy"; uz: "cu.uz"; va: "cu.va"; vb: "cu.vb"; vc: "cu.vc"; vd: "cu.vd"; ve: "cu.ve"; vf: "cu.vf"; vg: "cu.vg"; vh: "cu.vh"; vi: "cu.vi"; vj: "cu.vj"; vk: "cu.vk"; vl: "cu.vl"; vm: "cu.vm"; vn: "cu.vn"; vo: "cu.vo"; vp: "cu.vp"; vq: "cu.vq"; vr: "cu.vr"; vs: "cu.vs"; vt: "cu.vt"; vu: "cu.vu"; vv: "cu.vv"; vw: "cu.vw"; vx: "cu.vx"; vy: "cu.vy"; vz: "cu.vz"; wa: "cu.wa"; wb: "cu.wb"; wc: "cu.wc"; wd: "cu.wd"; we: "cu.we"; wf: "cu.wf"; wg: "cu.wg"; wh: "cu.wh"; wi: "cu.wi"; wj: "cu.wj"; wk: "cu.wk"; wl: "cu.wl"; wm: "cu.wm"; wn: "cu.wn"; wo: "cu.wo"; wp: "cu.wp"; wq: "cu.wq"; wr: "cu.wr"; ws: "cu.ws"; wt: "cu.wt"; wu: "cu.wu"; wv: "cu.wv"; ww: "cu.ww"; wx: "cu.wx"; wy: "cu.wy"; wz: "cu.wz"; xa: "cu.xa"; xb: "cu.xb"; xc: "cu.xc"; xd: "cu.xd"; xe: "cu.xe"; xf: "cu.xf"; xg: "cu.xg"; xh: "cu.xh"; xi: "cu.xi"; xj: "cu.xj"; xk: "cu.xk"; xl: "cu.xl"; xm: "cu.xm"; xn: "cu.xn"; xo: "cu.xo"; xp: "cu.xp"; xq: "cu.xq"; xr: "cu.xr"; xs: "cu.xs"; xt: "cu.xt"; xu: "cu.xu"; xv: "cu.xv"; xw: "cu.xw"; xx: "cu.xx"; xy: "cu.xy"; xz: "cu.xz"; ya: "cu.ya"; yb: "cu.yb"; yc: "cu.yc"; yd: "cu.yd"; ye: "cu.ye"; yf: "cu.yf"; yg: "cu.yg"; yh: "cu.yh"; yi: "cu.yi"; yj: "cu.yj"; yk: "cu.yk"; yl: "cu.yl"; ym: "cu.ym"; yn: "cu.yn"; yo: "cu.yo"; yp: "cu.yp"; yq: "cu.yq"; yr: "cu.yr"; ys: "cu.ys"; yt: "cu.yt"; yu: "cu.yu"; yv: "cu.yv"; yw: "cu.yw"; yx: "cu.yx"; yy: "cu.yy"; yz: "cu.yz"; za: "cu.za"; zb: "cu.zb"; zc: "cu.zc"; zd: "cu.zd"; ze: "cu.ze"; zf: "cu.zf"; zg: "cu.zg"; zh: "cu.zh"; zi: "cu.zi"; zj: "cu.zj"; zk: "cu.zk"; zl: "cu.zl"; zm: "cu.zm"; zn: "cu.zn"; zo: "cu.zo"; zp: "cu.zp"; zq: "cu.zq"; zr: "cu.zr"; zs: "cu.zs"; zt: "cu.zt"; zu: "cu.zu"; zv: "cu.zv"; zw: "cu.zw"; zx: "cu.zx"; zy: "cu.zy"; zz: "cu.zz"; }; cv: { aa: "cv.aa"; ab: "cv.ab"; ac: "cv.ac"; ad: "cv.ad"; ae: "cv.ae"; af: "cv.af"; ag: "cv.ag"; ah: "cv.ah"; ai: "cv.ai"; aj: "cv.aj"; ak: "cv.ak"; al: "cv.al"; am: "cv.am"; an: "cv.an"; ao: "cv.ao"; ap: "cv.ap"; aq: "cv.aq"; ar: "cv.ar"; as: "cv.as"; at: "cv.at"; au: "cv.au"; av: "cv.av"; aw: "cv.aw"; ax: "cv.ax"; ay: "cv.ay"; az: "cv.az"; ba: "cv.ba"; bb: "cv.bb"; bc: "cv.bc"; bd: "cv.bd"; be: "cv.be"; bf: "cv.bf"; bg: "cv.bg"; bh: "cv.bh"; bi: "cv.bi"; bj: "cv.bj"; bk: "cv.bk"; bl: "cv.bl"; bm: "cv.bm"; bn: "cv.bn"; bo: "cv.bo"; bp: "cv.bp"; bq: "cv.bq"; br: "cv.br"; bs: "cv.bs"; bt: "cv.bt"; bu: "cv.bu"; bv: "cv.bv"; bw: "cv.bw"; bx: "cv.bx"; by: "cv.by"; bz: "cv.bz"; ca: "cv.ca"; cb: "cv.cb"; cc: "cv.cc"; cd: "cv.cd"; ce: "cv.ce"; cf: "cv.cf"; cg: "cv.cg"; ch: "cv.ch"; ci: "cv.ci"; cj: "cv.cj"; ck: "cv.ck"; cl: "cv.cl"; cm: "cv.cm"; cn: "cv.cn"; co: "cv.co"; cp: "cv.cp"; cq: "cv.cq"; cr: "cv.cr"; cs: "cv.cs"; ct: "cv.ct"; cu: "cv.cu"; cv: "cv.cv"; cw: "cv.cw"; cx: "cv.cx"; cy: "cv.cy"; cz: "cv.cz"; da: "cv.da"; db: "cv.db"; dc: "cv.dc"; dd: "cv.dd"; de: "cv.de"; df: "cv.df"; dg: "cv.dg"; dh: "cv.dh"; di: "cv.di"; dj: "cv.dj"; dk: "cv.dk"; dl: "cv.dl"; dm: "cv.dm"; dn: "cv.dn"; do: "cv.do"; dp: "cv.dp"; dq: "cv.dq"; dr: "cv.dr"; ds: "cv.ds"; dt: "cv.dt"; du: "cv.du"; dv: "cv.dv"; dw: "cv.dw"; dx: "cv.dx"; dy: "cv.dy"; dz: "cv.dz"; ea: "cv.ea"; eb: "cv.eb"; ec: "cv.ec"; ed: "cv.ed"; ee: "cv.ee"; ef: "cv.ef"; eg: "cv.eg"; eh: "cv.eh"; ei: "cv.ei"; ej: "cv.ej"; ek: "cv.ek"; el: "cv.el"; em: "cv.em"; en: "cv.en"; eo: "cv.eo"; ep: "cv.ep"; eq: "cv.eq"; er: "cv.er"; es: "cv.es"; et: "cv.et"; eu: "cv.eu"; ev: "cv.ev"; ew: "cv.ew"; ex: "cv.ex"; ey: "cv.ey"; ez: "cv.ez"; fa: "cv.fa"; fb: "cv.fb"; fc: "cv.fc"; fd: "cv.fd"; fe: "cv.fe"; ff: "cv.ff"; fg: "cv.fg"; fh: "cv.fh"; fi: "cv.fi"; fj: "cv.fj"; fk: "cv.fk"; fl: "cv.fl"; fm: "cv.fm"; fn: "cv.fn"; fo: "cv.fo"; fp: "cv.fp"; fq: "cv.fq"; fr: "cv.fr"; fs: "cv.fs"; ft: "cv.ft"; fu: "cv.fu"; fv: "cv.fv"; fw: "cv.fw"; fx: "cv.fx"; fy: "cv.fy"; fz: "cv.fz"; ga: "cv.ga"; gb: "cv.gb"; gc: "cv.gc"; gd: "cv.gd"; ge: "cv.ge"; gf: "cv.gf"; gg: "cv.gg"; gh: "cv.gh"; gi: "cv.gi"; gj: "cv.gj"; gk: "cv.gk"; gl: "cv.gl"; gm: "cv.gm"; gn: "cv.gn"; go: "cv.go"; gp: "cv.gp"; gq: "cv.gq"; gr: "cv.gr"; gs: "cv.gs"; gt: "cv.gt"; gu: "cv.gu"; gv: "cv.gv"; gw: "cv.gw"; gx: "cv.gx"; gy: "cv.gy"; gz: "cv.gz"; ha: "cv.ha"; hb: "cv.hb"; hc: "cv.hc"; hd: "cv.hd"; he: "cv.he"; hf: "cv.hf"; hg: "cv.hg"; hh: "cv.hh"; hi: "cv.hi"; hj: "cv.hj"; hk: "cv.hk"; hl: "cv.hl"; hm: "cv.hm"; hn: "cv.hn"; ho: "cv.ho"; hp: "cv.hp"; hq: "cv.hq"; hr: "cv.hr"; hs: "cv.hs"; ht: "cv.ht"; hu: "cv.hu"; hv: "cv.hv"; hw: "cv.hw"; hx: "cv.hx"; hy: "cv.hy"; hz: "cv.hz"; ia: "cv.ia"; ib: "cv.ib"; ic: "cv.ic"; id: "cv.id"; ie: "cv.ie"; if: "cv.if"; ig: "cv.ig"; ih: "cv.ih"; ii: "cv.ii"; ij: "cv.ij"; ik: "cv.ik"; il: "cv.il"; im: "cv.im"; in: "cv.in"; io: "cv.io"; ip: "cv.ip"; iq: "cv.iq"; ir: "cv.ir"; is: "cv.is"; it: "cv.it"; iu: "cv.iu"; iv: "cv.iv"; iw: "cv.iw"; ix: "cv.ix"; iy: "cv.iy"; iz: "cv.iz"; ja: "cv.ja"; jb: "cv.jb"; jc: "cv.jc"; jd: "cv.jd"; je: "cv.je"; jf: "cv.jf"; jg: "cv.jg"; jh: "cv.jh"; ji: "cv.ji"; jj: "cv.jj"; jk: "cv.jk"; jl: "cv.jl"; jm: "cv.jm"; jn: "cv.jn"; jo: "cv.jo"; jp: "cv.jp"; jq: "cv.jq"; jr: "cv.jr"; js: "cv.js"; jt: "cv.jt"; ju: "cv.ju"; jv: "cv.jv"; jw: "cv.jw"; jx: "cv.jx"; jy: "cv.jy"; jz: "cv.jz"; ka: "cv.ka"; kb: "cv.kb"; kc: "cv.kc"; kd: "cv.kd"; ke: "cv.ke"; kf: "cv.kf"; kg: "cv.kg"; kh: "cv.kh"; ki: "cv.ki"; kj: "cv.kj"; kk: "cv.kk"; kl: "cv.kl"; km: "cv.km"; kn: "cv.kn"; ko: "cv.ko"; kp: "cv.kp"; kq: "cv.kq"; kr: "cv.kr"; ks: "cv.ks"; kt: "cv.kt"; ku: "cv.ku"; kv: "cv.kv"; kw: "cv.kw"; kx: "cv.kx"; ky: "cv.ky"; kz: "cv.kz"; la: "cv.la"; lb: "cv.lb"; lc: "cv.lc"; ld: "cv.ld"; le: "cv.le"; lf: "cv.lf"; lg: "cv.lg"; lh: "cv.lh"; li: "cv.li"; lj: "cv.lj"; lk: "cv.lk"; ll: "cv.ll"; lm: "cv.lm"; ln: "cv.ln"; lo: "cv.lo"; lp: "cv.lp"; lq: "cv.lq"; lr: "cv.lr"; ls: "cv.ls"; lt: "cv.lt"; lu: "cv.lu"; lv: "cv.lv"; lw: "cv.lw"; lx: "cv.lx"; ly: "cv.ly"; lz: "cv.lz"; ma: "cv.ma"; mb: "cv.mb"; mc: "cv.mc"; md: "cv.md"; me: "cv.me"; mf: "cv.mf"; mg: "cv.mg"; mh: "cv.mh"; mi: "cv.mi"; mj: "cv.mj"; mk: "cv.mk"; ml: "cv.ml"; mm: "cv.mm"; mn: "cv.mn"; mo: "cv.mo"; mp: "cv.mp"; mq: "cv.mq"; mr: "cv.mr"; ms: "cv.ms"; mt: "cv.mt"; mu: "cv.mu"; mv: "cv.mv"; mw: "cv.mw"; mx: "cv.mx"; my: "cv.my"; mz: "cv.mz"; na: "cv.na"; nb: "cv.nb"; nc: "cv.nc"; nd: "cv.nd"; ne: "cv.ne"; nf: "cv.nf"; ng: "cv.ng"; nh: "cv.nh"; ni: "cv.ni"; nj: "cv.nj"; nk: "cv.nk"; nl: "cv.nl"; nm: "cv.nm"; nn: "cv.nn"; no: "cv.no"; np: "cv.np"; nq: "cv.nq"; nr: "cv.nr"; ns: "cv.ns"; nt: "cv.nt"; nu: "cv.nu"; nv: "cv.nv"; nw: "cv.nw"; nx: "cv.nx"; ny: "cv.ny"; nz: "cv.nz"; oa: "cv.oa"; ob: "cv.ob"; oc: "cv.oc"; od: "cv.od"; oe: "cv.oe"; of: "cv.of"; og: "cv.og"; oh: "cv.oh"; oi: "cv.oi"; oj: "cv.oj"; ok: "cv.ok"; ol: "cv.ol"; om: "cv.om"; on: "cv.on"; oo: "cv.oo"; op: "cv.op"; oq: "cv.oq"; or: "cv.or"; os: "cv.os"; ot: "cv.ot"; ou: "cv.ou"; ov: "cv.ov"; ow: "cv.ow"; ox: "cv.ox"; oy: "cv.oy"; oz: "cv.oz"; pa: "cv.pa"; pb: "cv.pb"; pc: "cv.pc"; pd: "cv.pd"; pe: "cv.pe"; pf: "cv.pf"; pg: "cv.pg"; ph: "cv.ph"; pi: "cv.pi"; pj: "cv.pj"; pk: "cv.pk"; pl: "cv.pl"; pm: "cv.pm"; pn: "cv.pn"; po: "cv.po"; pp: "cv.pp"; pq: "cv.pq"; pr: "cv.pr"; ps: "cv.ps"; pt: "cv.pt"; pu: "cv.pu"; pv: "cv.pv"; pw: "cv.pw"; px: "cv.px"; py: "cv.py"; pz: "cv.pz"; qa: "cv.qa"; qb: "cv.qb"; qc: "cv.qc"; qd: "cv.qd"; qe: "cv.qe"; qf: "cv.qf"; qg: "cv.qg"; qh: "cv.qh"; qi: "cv.qi"; qj: "cv.qj"; qk: "cv.qk"; ql: "cv.ql"; qm: "cv.qm"; qn: "cv.qn"; qo: "cv.qo"; qp: "cv.qp"; qq: "cv.qq"; qr: "cv.qr"; qs: "cv.qs"; qt: "cv.qt"; qu: "cv.qu"; qv: "cv.qv"; qw: "cv.qw"; qx: "cv.qx"; qy: "cv.qy"; qz: "cv.qz"; ra: "cv.ra"; rb: "cv.rb"; rc: "cv.rc"; rd: "cv.rd"; re: "cv.re"; rf: "cv.rf"; rg: "cv.rg"; rh: "cv.rh"; ri: "cv.ri"; rj: "cv.rj"; rk: "cv.rk"; rl: "cv.rl"; rm: "cv.rm"; rn: "cv.rn"; ro: "cv.ro"; rp: "cv.rp"; rq: "cv.rq"; rr: "cv.rr"; rs: "cv.rs"; rt: "cv.rt"; ru: "cv.ru"; rv: "cv.rv"; rw: "cv.rw"; rx: "cv.rx"; ry: "cv.ry"; rz: "cv.rz"; sa: "cv.sa"; sb: "cv.sb"; sc: "cv.sc"; sd: "cv.sd"; se: "cv.se"; sf: "cv.sf"; sg: "cv.sg"; sh: "cv.sh"; si: "cv.si"; sj: "cv.sj"; sk: "cv.sk"; sl: "cv.sl"; sm: "cv.sm"; sn: "cv.sn"; so: "cv.so"; sp: "cv.sp"; sq: "cv.sq"; sr: "cv.sr"; ss: "cv.ss"; st: "cv.st"; su: "cv.su"; sv: "cv.sv"; sw: "cv.sw"; sx: "cv.sx"; sy: "cv.sy"; sz: "cv.sz"; ta: "cv.ta"; tb: "cv.tb"; tc: "cv.tc"; td: "cv.td"; te: "cv.te"; tf: "cv.tf"; tg: "cv.tg"; th: "cv.th"; ti: "cv.ti"; tj: "cv.tj"; tk: "cv.tk"; tl: "cv.tl"; tm: "cv.tm"; tn: "cv.tn"; to: "cv.to"; tp: "cv.tp"; tq: "cv.tq"; tr: "cv.tr"; ts: "cv.ts"; tt: "cv.tt"; tu: "cv.tu"; tv: "cv.tv"; tw: "cv.tw"; tx: "cv.tx"; ty: "cv.ty"; tz: "cv.tz"; ua: "cv.ua"; ub: "cv.ub"; uc: "cv.uc"; ud: "cv.ud"; ue: "cv.ue"; uf: "cv.uf"; ug: "cv.ug"; uh: "cv.uh"; ui: "cv.ui"; uj: "cv.uj"; uk: "cv.uk"; ul: "cv.ul"; um: "cv.um"; un: "cv.un"; uo: "cv.uo"; up: "cv.up"; uq: "cv.uq"; ur: "cv.ur"; us: "cv.us"; ut: "cv.ut"; uu: "cv.uu"; uv: "cv.uv"; uw: "cv.uw"; ux: "cv.ux"; uy: "cv.uy"; uz: "cv.uz"; va: "cv.va"; vb: "cv.vb"; vc: "cv.vc"; vd: "cv.vd"; ve: "cv.ve"; vf: "cv.vf"; vg: "cv.vg"; vh: "cv.vh"; vi: "cv.vi"; vj: "cv.vj"; vk: "cv.vk"; vl: "cv.vl"; vm: "cv.vm"; vn: "cv.vn"; vo: "cv.vo"; vp: "cv.vp"; vq: "cv.vq"; vr: "cv.vr"; vs: "cv.vs"; vt: "cv.vt"; vu: "cv.vu"; vv: "cv.vv"; vw: "cv.vw"; vx: "cv.vx"; vy: "cv.vy"; vz: "cv.vz"; wa: "cv.wa"; wb: "cv.wb"; wc: "cv.wc"; wd: "cv.wd"; we: "cv.we"; wf: "cv.wf"; wg: "cv.wg"; wh: "cv.wh"; wi: "cv.wi"; wj: "cv.wj"; wk: "cv.wk"; wl: "cv.wl"; wm: "cv.wm"; wn: "cv.wn"; wo: "cv.wo"; wp: "cv.wp"; wq: "cv.wq"; wr: "cv.wr"; ws: "cv.ws"; wt: "cv.wt"; wu: "cv.wu"; wv: "cv.wv"; ww: "cv.ww"; wx: "cv.wx"; wy: "cv.wy"; wz: "cv.wz"; xa: "cv.xa"; xb: "cv.xb"; xc: "cv.xc"; xd: "cv.xd"; xe: "cv.xe"; xf: "cv.xf"; xg: "cv.xg"; xh: "cv.xh"; xi: "cv.xi"; xj: "cv.xj"; xk: "cv.xk"; xl: "cv.xl"; xm: "cv.xm"; xn: "cv.xn"; xo: "cv.xo"; xp: "cv.xp"; xq: "cv.xq"; xr: "cv.xr"; xs: "cv.xs"; xt: "cv.xt"; xu: "cv.xu"; xv: "cv.xv"; xw: "cv.xw"; xx: "cv.xx"; xy: "cv.xy"; xz: "cv.xz"; ya: "cv.ya"; yb: "cv.yb"; yc: "cv.yc"; yd: "cv.yd"; ye: "cv.ye"; yf: "cv.yf"; yg: "cv.yg"; yh: "cv.yh"; yi: "cv.yi"; yj: "cv.yj"; yk: "cv.yk"; yl: "cv.yl"; ym: "cv.ym"; yn: "cv.yn"; yo: "cv.yo"; yp: "cv.yp"; yq: "cv.yq"; yr: "cv.yr"; ys: "cv.ys"; yt: "cv.yt"; yu: "cv.yu"; yv: "cv.yv"; yw: "cv.yw"; yx: "cv.yx"; yy: "cv.yy"; yz: "cv.yz"; za: "cv.za"; zb: "cv.zb"; zc: "cv.zc"; zd: "cv.zd"; ze: "cv.ze"; zf: "cv.zf"; zg: "cv.zg"; zh: "cv.zh"; zi: "cv.zi"; zj: "cv.zj"; zk: "cv.zk"; zl: "cv.zl"; zm: "cv.zm"; zn: "cv.zn"; zo: "cv.zo"; zp: "cv.zp"; zq: "cv.zq"; zr: "cv.zr"; zs: "cv.zs"; zt: "cv.zt"; zu: "cv.zu"; zv: "cv.zv"; zw: "cv.zw"; zx: "cv.zx"; zy: "cv.zy"; zz: "cv.zz"; }; cw: { aa: "cw.aa"; ab: "cw.ab"; ac: "cw.ac"; ad: "cw.ad"; ae: "cw.ae"; af: "cw.af"; ag: "cw.ag"; ah: "cw.ah"; ai: "cw.ai"; aj: "cw.aj"; ak: "cw.ak"; al: "cw.al"; am: "cw.am"; an: "cw.an"; ao: "cw.ao"; ap: "cw.ap"; aq: "cw.aq"; ar: "cw.ar"; as: "cw.as"; at: "cw.at"; au: "cw.au"; av: "cw.av"; aw: "cw.aw"; ax: "cw.ax"; ay: "cw.ay"; az: "cw.az"; ba: "cw.ba"; bb: "cw.bb"; bc: "cw.bc"; bd: "cw.bd"; be: "cw.be"; bf: "cw.bf"; bg: "cw.bg"; bh: "cw.bh"; bi: "cw.bi"; bj: "cw.bj"; bk: "cw.bk"; bl: "cw.bl"; bm: "cw.bm"; bn: "cw.bn"; bo: "cw.bo"; bp: "cw.bp"; bq: "cw.bq"; br: "cw.br"; bs: "cw.bs"; bt: "cw.bt"; bu: "cw.bu"; bv: "cw.bv"; bw: "cw.bw"; bx: "cw.bx"; by: "cw.by"; bz: "cw.bz"; ca: "cw.ca"; cb: "cw.cb"; cc: "cw.cc"; cd: "cw.cd"; ce: "cw.ce"; cf: "cw.cf"; cg: "cw.cg"; ch: "cw.ch"; ci: "cw.ci"; cj: "cw.cj"; ck: "cw.ck"; cl: "cw.cl"; cm: "cw.cm"; cn: "cw.cn"; co: "cw.co"; cp: "cw.cp"; cq: "cw.cq"; cr: "cw.cr"; cs: "cw.cs"; ct: "cw.ct"; cu: "cw.cu"; cv: "cw.cv"; cw: "cw.cw"; cx: "cw.cx"; cy: "cw.cy"; cz: "cw.cz"; da: "cw.da"; db: "cw.db"; dc: "cw.dc"; dd: "cw.dd"; de: "cw.de"; df: "cw.df"; dg: "cw.dg"; dh: "cw.dh"; di: "cw.di"; dj: "cw.dj"; dk: "cw.dk"; dl: "cw.dl"; dm: "cw.dm"; dn: "cw.dn"; do: "cw.do"; dp: "cw.dp"; dq: "cw.dq"; dr: "cw.dr"; ds: "cw.ds"; dt: "cw.dt"; du: "cw.du"; dv: "cw.dv"; dw: "cw.dw"; dx: "cw.dx"; dy: "cw.dy"; dz: "cw.dz"; ea: "cw.ea"; eb: "cw.eb"; ec: "cw.ec"; ed: "cw.ed"; ee: "cw.ee"; ef: "cw.ef"; eg: "cw.eg"; eh: "cw.eh"; ei: "cw.ei"; ej: "cw.ej"; ek: "cw.ek"; el: "cw.el"; em: "cw.em"; en: "cw.en"; eo: "cw.eo"; ep: "cw.ep"; eq: "cw.eq"; er: "cw.er"; es: "cw.es"; et: "cw.et"; eu: "cw.eu"; ev: "cw.ev"; ew: "cw.ew"; ex: "cw.ex"; ey: "cw.ey"; ez: "cw.ez"; fa: "cw.fa"; fb: "cw.fb"; fc: "cw.fc"; fd: "cw.fd"; fe: "cw.fe"; ff: "cw.ff"; fg: "cw.fg"; fh: "cw.fh"; fi: "cw.fi"; fj: "cw.fj"; fk: "cw.fk"; fl: "cw.fl"; fm: "cw.fm"; fn: "cw.fn"; fo: "cw.fo"; fp: "cw.fp"; fq: "cw.fq"; fr: "cw.fr"; fs: "cw.fs"; ft: "cw.ft"; fu: "cw.fu"; fv: "cw.fv"; fw: "cw.fw"; fx: "cw.fx"; fy: "cw.fy"; fz: "cw.fz"; ga: "cw.ga"; gb: "cw.gb"; gc: "cw.gc"; gd: "cw.gd"; ge: "cw.ge"; gf: "cw.gf"; gg: "cw.gg"; gh: "cw.gh"; gi: "cw.gi"; gj: "cw.gj"; gk: "cw.gk"; gl: "cw.gl"; gm: "cw.gm"; gn: "cw.gn"; go: "cw.go"; gp: "cw.gp"; gq: "cw.gq"; gr: "cw.gr"; gs: "cw.gs"; gt: "cw.gt"; gu: "cw.gu"; gv: "cw.gv"; gw: "cw.gw"; gx: "cw.gx"; gy: "cw.gy"; gz: "cw.gz"; ha: "cw.ha"; hb: "cw.hb"; hc: "cw.hc"; hd: "cw.hd"; he: "cw.he"; hf: "cw.hf"; hg: "cw.hg"; hh: "cw.hh"; hi: "cw.hi"; hj: "cw.hj"; hk: "cw.hk"; hl: "cw.hl"; hm: "cw.hm"; hn: "cw.hn"; ho: "cw.ho"; hp: "cw.hp"; hq: "cw.hq"; hr: "cw.hr"; hs: "cw.hs"; ht: "cw.ht"; hu: "cw.hu"; hv: "cw.hv"; hw: "cw.hw"; hx: "cw.hx"; hy: "cw.hy"; hz: "cw.hz"; ia: "cw.ia"; ib: "cw.ib"; ic: "cw.ic"; id: "cw.id"; ie: "cw.ie"; if: "cw.if"; ig: "cw.ig"; ih: "cw.ih"; ii: "cw.ii"; ij: "cw.ij"; ik: "cw.ik"; il: "cw.il"; im: "cw.im"; in: "cw.in"; io: "cw.io"; ip: "cw.ip"; iq: "cw.iq"; ir: "cw.ir"; is: "cw.is"; it: "cw.it"; iu: "cw.iu"; iv: "cw.iv"; iw: "cw.iw"; ix: "cw.ix"; iy: "cw.iy"; iz: "cw.iz"; ja: "cw.ja"; jb: "cw.jb"; jc: "cw.jc"; jd: "cw.jd"; je: "cw.je"; jf: "cw.jf"; jg: "cw.jg"; jh: "cw.jh"; ji: "cw.ji"; jj: "cw.jj"; jk: "cw.jk"; jl: "cw.jl"; jm: "cw.jm"; jn: "cw.jn"; jo: "cw.jo"; jp: "cw.jp"; jq: "cw.jq"; jr: "cw.jr"; js: "cw.js"; jt: "cw.jt"; ju: "cw.ju"; jv: "cw.jv"; jw: "cw.jw"; jx: "cw.jx"; jy: "cw.jy"; jz: "cw.jz"; ka: "cw.ka"; kb: "cw.kb"; kc: "cw.kc"; kd: "cw.kd"; ke: "cw.ke"; kf: "cw.kf"; kg: "cw.kg"; kh: "cw.kh"; ki: "cw.ki"; kj: "cw.kj"; kk: "cw.kk"; kl: "cw.kl"; km: "cw.km"; kn: "cw.kn"; ko: "cw.ko"; kp: "cw.kp"; kq: "cw.kq"; kr: "cw.kr"; ks: "cw.ks"; kt: "cw.kt"; ku: "cw.ku"; kv: "cw.kv"; kw: "cw.kw"; kx: "cw.kx"; ky: "cw.ky"; kz: "cw.kz"; la: "cw.la"; lb: "cw.lb"; lc: "cw.lc"; ld: "cw.ld"; le: "cw.le"; lf: "cw.lf"; lg: "cw.lg"; lh: "cw.lh"; li: "cw.li"; lj: "cw.lj"; lk: "cw.lk"; ll: "cw.ll"; lm: "cw.lm"; ln: "cw.ln"; lo: "cw.lo"; lp: "cw.lp"; lq: "cw.lq"; lr: "cw.lr"; ls: "cw.ls"; lt: "cw.lt"; lu: "cw.lu"; lv: "cw.lv"; lw: "cw.lw"; lx: "cw.lx"; ly: "cw.ly"; lz: "cw.lz"; ma: "cw.ma"; mb: "cw.mb"; mc: "cw.mc"; md: "cw.md"; me: "cw.me"; mf: "cw.mf"; mg: "cw.mg"; mh: "cw.mh"; mi: "cw.mi"; mj: "cw.mj"; mk: "cw.mk"; ml: "cw.ml"; mm: "cw.mm"; mn: "cw.mn"; mo: "cw.mo"; mp: "cw.mp"; mq: "cw.mq"; mr: "cw.mr"; ms: "cw.ms"; mt: "cw.mt"; mu: "cw.mu"; mv: "cw.mv"; mw: "cw.mw"; mx: "cw.mx"; my: "cw.my"; mz: "cw.mz"; na: "cw.na"; nb: "cw.nb"; nc: "cw.nc"; nd: "cw.nd"; ne: "cw.ne"; nf: "cw.nf"; ng: "cw.ng"; nh: "cw.nh"; ni: "cw.ni"; nj: "cw.nj"; nk: "cw.nk"; nl: "cw.nl"; nm: "cw.nm"; nn: "cw.nn"; no: "cw.no"; np: "cw.np"; nq: "cw.nq"; nr: "cw.nr"; ns: "cw.ns"; nt: "cw.nt"; nu: "cw.nu"; nv: "cw.nv"; nw: "cw.nw"; nx: "cw.nx"; ny: "cw.ny"; nz: "cw.nz"; oa: "cw.oa"; ob: "cw.ob"; oc: "cw.oc"; od: "cw.od"; oe: "cw.oe"; of: "cw.of"; og: "cw.og"; oh: "cw.oh"; oi: "cw.oi"; oj: "cw.oj"; ok: "cw.ok"; ol: "cw.ol"; om: "cw.om"; on: "cw.on"; oo: "cw.oo"; op: "cw.op"; oq: "cw.oq"; or: "cw.or"; os: "cw.os"; ot: "cw.ot"; ou: "cw.ou"; ov: "cw.ov"; ow: "cw.ow"; ox: "cw.ox"; oy: "cw.oy"; oz: "cw.oz"; pa: "cw.pa"; pb: "cw.pb"; pc: "cw.pc"; pd: "cw.pd"; pe: "cw.pe"; pf: "cw.pf"; pg: "cw.pg"; ph: "cw.ph"; pi: "cw.pi"; pj: "cw.pj"; pk: "cw.pk"; pl: "cw.pl"; pm: "cw.pm"; pn: "cw.pn"; po: "cw.po"; pp: "cw.pp"; pq: "cw.pq"; pr: "cw.pr"; ps: "cw.ps"; pt: "cw.pt"; pu: "cw.pu"; pv: "cw.pv"; pw: "cw.pw"; px: "cw.px"; py: "cw.py"; pz: "cw.pz"; qa: "cw.qa"; qb: "cw.qb"; qc: "cw.qc"; qd: "cw.qd"; qe: "cw.qe"; qf: "cw.qf"; qg: "cw.qg"; qh: "cw.qh"; qi: "cw.qi"; qj: "cw.qj"; qk: "cw.qk"; ql: "cw.ql"; qm: "cw.qm"; qn: "cw.qn"; qo: "cw.qo"; qp: "cw.qp"; qq: "cw.qq"; qr: "cw.qr"; qs: "cw.qs"; qt: "cw.qt"; qu: "cw.qu"; qv: "cw.qv"; qw: "cw.qw"; qx: "cw.qx"; qy: "cw.qy"; qz: "cw.qz"; ra: "cw.ra"; rb: "cw.rb"; rc: "cw.rc"; rd: "cw.rd"; re: "cw.re"; rf: "cw.rf"; rg: "cw.rg"; rh: "cw.rh"; ri: "cw.ri"; rj: "cw.rj"; rk: "cw.rk"; rl: "cw.rl"; rm: "cw.rm"; rn: "cw.rn"; ro: "cw.ro"; rp: "cw.rp"; rq: "cw.rq"; rr: "cw.rr"; rs: "cw.rs"; rt: "cw.rt"; ru: "cw.ru"; rv: "cw.rv"; rw: "cw.rw"; rx: "cw.rx"; ry: "cw.ry"; rz: "cw.rz"; sa: "cw.sa"; sb: "cw.sb"; sc: "cw.sc"; sd: "cw.sd"; se: "cw.se"; sf: "cw.sf"; sg: "cw.sg"; sh: "cw.sh"; si: "cw.si"; sj: "cw.sj"; sk: "cw.sk"; sl: "cw.sl"; sm: "cw.sm"; sn: "cw.sn"; so: "cw.so"; sp: "cw.sp"; sq: "cw.sq"; sr: "cw.sr"; ss: "cw.ss"; st: "cw.st"; su: "cw.su"; sv: "cw.sv"; sw: "cw.sw"; sx: "cw.sx"; sy: "cw.sy"; sz: "cw.sz"; ta: "cw.ta"; tb: "cw.tb"; tc: "cw.tc"; td: "cw.td"; te: "cw.te"; tf: "cw.tf"; tg: "cw.tg"; th: "cw.th"; ti: "cw.ti"; tj: "cw.tj"; tk: "cw.tk"; tl: "cw.tl"; tm: "cw.tm"; tn: "cw.tn"; to: "cw.to"; tp: "cw.tp"; tq: "cw.tq"; tr: "cw.tr"; ts: "cw.ts"; tt: "cw.tt"; tu: "cw.tu"; tv: "cw.tv"; tw: "cw.tw"; tx: "cw.tx"; ty: "cw.ty"; tz: "cw.tz"; ua: "cw.ua"; ub: "cw.ub"; uc: "cw.uc"; ud: "cw.ud"; ue: "cw.ue"; uf: "cw.uf"; ug: "cw.ug"; uh: "cw.uh"; ui: "cw.ui"; uj: "cw.uj"; uk: "cw.uk"; ul: "cw.ul"; um: "cw.um"; un: "cw.un"; uo: "cw.uo"; up: "cw.up"; uq: "cw.uq"; ur: "cw.ur"; us: "cw.us"; ut: "cw.ut"; uu: "cw.uu"; uv: "cw.uv"; uw: "cw.uw"; ux: "cw.ux"; uy: "cw.uy"; uz: "cw.uz"; va: "cw.va"; vb: "cw.vb"; vc: "cw.vc"; vd: "cw.vd"; ve: "cw.ve"; vf: "cw.vf"; vg: "cw.vg"; vh: "cw.vh"; vi: "cw.vi"; vj: "cw.vj"; vk: "cw.vk"; vl: "cw.vl"; vm: "cw.vm"; vn: "cw.vn"; vo: "cw.vo"; vp: "cw.vp"; vq: "cw.vq"; vr: "cw.vr"; vs: "cw.vs"; vt: "cw.vt"; vu: "cw.vu"; vv: "cw.vv"; vw: "cw.vw"; vx: "cw.vx"; vy: "cw.vy"; vz: "cw.vz"; wa: "cw.wa"; wb: "cw.wb"; wc: "cw.wc"; wd: "cw.wd"; we: "cw.we"; wf: "cw.wf"; wg: "cw.wg"; wh: "cw.wh"; wi: "cw.wi"; wj: "cw.wj"; wk: "cw.wk"; wl: "cw.wl"; wm: "cw.wm"; wn: "cw.wn"; wo: "cw.wo"; wp: "cw.wp"; wq: "cw.wq"; wr: "cw.wr"; ws: "cw.ws"; wt: "cw.wt"; wu: "cw.wu"; wv: "cw.wv"; ww: "cw.ww"; wx: "cw.wx"; wy: "cw.wy"; wz: "cw.wz"; xa: "cw.xa"; xb: "cw.xb"; xc: "cw.xc"; xd: "cw.xd"; xe: "cw.xe"; xf: "cw.xf"; xg: "cw.xg"; xh: "cw.xh"; xi: "cw.xi"; xj: "cw.xj"; xk: "cw.xk"; xl: "cw.xl"; xm: "cw.xm"; xn: "cw.xn"; xo: "cw.xo"; xp: "cw.xp"; xq: "cw.xq"; xr: "cw.xr"; xs: "cw.xs"; xt: "cw.xt"; xu: "cw.xu"; xv: "cw.xv"; xw: "cw.xw"; xx: "cw.xx"; xy: "cw.xy"; xz: "cw.xz"; ya: "cw.ya"; yb: "cw.yb"; yc: "cw.yc"; yd: "cw.yd"; ye: "cw.ye"; yf: "cw.yf"; yg: "cw.yg"; yh: "cw.yh"; yi: "cw.yi"; yj: "cw.yj"; yk: "cw.yk"; yl: "cw.yl"; ym: "cw.ym"; yn: "cw.yn"; yo: "cw.yo"; yp: "cw.yp"; yq: "cw.yq"; yr: "cw.yr"; ys: "cw.ys"; yt: "cw.yt"; yu: "cw.yu"; yv: "cw.yv"; yw: "cw.yw"; yx: "cw.yx"; yy: "cw.yy"; yz: "cw.yz"; za: "cw.za"; zb: "cw.zb"; zc: "cw.zc"; zd: "cw.zd"; ze: "cw.ze"; zf: "cw.zf"; zg: "cw.zg"; zh: "cw.zh"; zi: "cw.zi"; zj: "cw.zj"; zk: "cw.zk"; zl: "cw.zl"; zm: "cw.zm"; zn: "cw.zn"; zo: "cw.zo"; zp: "cw.zp"; zq: "cw.zq"; zr: "cw.zr"; zs: "cw.zs"; zt: "cw.zt"; zu: "cw.zu"; zv: "cw.zv"; zw: "cw.zw"; zx: "cw.zx"; zy: "cw.zy"; zz: "cw.zz"; }; cx: { aa: "cx.aa"; ab: "cx.ab"; ac: "cx.ac"; ad: "cx.ad"; ae: "cx.ae"; af: "cx.af"; ag: "cx.ag"; ah: "cx.ah"; ai: "cx.ai"; aj: "cx.aj"; ak: "cx.ak"; al: "cx.al"; am: "cx.am"; an: "cx.an"; ao: "cx.ao"; ap: "cx.ap"; aq: "cx.aq"; ar: "cx.ar"; as: "cx.as"; at: "cx.at"; au: "cx.au"; av: "cx.av"; aw: "cx.aw"; ax: "cx.ax"; ay: "cx.ay"; az: "cx.az"; ba: "cx.ba"; bb: "cx.bb"; bc: "cx.bc"; bd: "cx.bd"; be: "cx.be"; bf: "cx.bf"; bg: "cx.bg"; bh: "cx.bh"; bi: "cx.bi"; bj: "cx.bj"; bk: "cx.bk"; bl: "cx.bl"; bm: "cx.bm"; bn: "cx.bn"; bo: "cx.bo"; bp: "cx.bp"; bq: "cx.bq"; br: "cx.br"; bs: "cx.bs"; bt: "cx.bt"; bu: "cx.bu"; bv: "cx.bv"; bw: "cx.bw"; bx: "cx.bx"; by: "cx.by"; bz: "cx.bz"; ca: "cx.ca"; cb: "cx.cb"; cc: "cx.cc"; cd: "cx.cd"; ce: "cx.ce"; cf: "cx.cf"; cg: "cx.cg"; ch: "cx.ch"; ci: "cx.ci"; cj: "cx.cj"; ck: "cx.ck"; cl: "cx.cl"; cm: "cx.cm"; cn: "cx.cn"; co: "cx.co"; cp: "cx.cp"; cq: "cx.cq"; cr: "cx.cr"; cs: "cx.cs"; ct: "cx.ct"; cu: "cx.cu"; cv: "cx.cv"; cw: "cx.cw"; cx: "cx.cx"; cy: "cx.cy"; cz: "cx.cz"; da: "cx.da"; db: "cx.db"; dc: "cx.dc"; dd: "cx.dd"; de: "cx.de"; df: "cx.df"; dg: "cx.dg"; dh: "cx.dh"; di: "cx.di"; dj: "cx.dj"; dk: "cx.dk"; dl: "cx.dl"; dm: "cx.dm"; dn: "cx.dn"; do: "cx.do"; dp: "cx.dp"; dq: "cx.dq"; dr: "cx.dr"; ds: "cx.ds"; dt: "cx.dt"; du: "cx.du"; dv: "cx.dv"; dw: "cx.dw"; dx: "cx.dx"; dy: "cx.dy"; dz: "cx.dz"; ea: "cx.ea"; eb: "cx.eb"; ec: "cx.ec"; ed: "cx.ed"; ee: "cx.ee"; ef: "cx.ef"; eg: "cx.eg"; eh: "cx.eh"; ei: "cx.ei"; ej: "cx.ej"; ek: "cx.ek"; el: "cx.el"; em: "cx.em"; en: "cx.en"; eo: "cx.eo"; ep: "cx.ep"; eq: "cx.eq"; er: "cx.er"; es: "cx.es"; et: "cx.et"; eu: "cx.eu"; ev: "cx.ev"; ew: "cx.ew"; ex: "cx.ex"; ey: "cx.ey"; ez: "cx.ez"; fa: "cx.fa"; fb: "cx.fb"; fc: "cx.fc"; fd: "cx.fd"; fe: "cx.fe"; ff: "cx.ff"; fg: "cx.fg"; fh: "cx.fh"; fi: "cx.fi"; fj: "cx.fj"; fk: "cx.fk"; fl: "cx.fl"; fm: "cx.fm"; fn: "cx.fn"; fo: "cx.fo"; fp: "cx.fp"; fq: "cx.fq"; fr: "cx.fr"; fs: "cx.fs"; ft: "cx.ft"; fu: "cx.fu"; fv: "cx.fv"; fw: "cx.fw"; fx: "cx.fx"; fy: "cx.fy"; fz: "cx.fz"; ga: "cx.ga"; gb: "cx.gb"; gc: "cx.gc"; gd: "cx.gd"; ge: "cx.ge"; gf: "cx.gf"; gg: "cx.gg"; gh: "cx.gh"; gi: "cx.gi"; gj: "cx.gj"; gk: "cx.gk"; gl: "cx.gl"; gm: "cx.gm"; gn: "cx.gn"; go: "cx.go"; gp: "cx.gp"; gq: "cx.gq"; gr: "cx.gr"; gs: "cx.gs"; gt: "cx.gt"; gu: "cx.gu"; gv: "cx.gv"; gw: "cx.gw"; gx: "cx.gx"; gy: "cx.gy"; gz: "cx.gz"; ha: "cx.ha"; hb: "cx.hb"; hc: "cx.hc"; hd: "cx.hd"; he: "cx.he"; hf: "cx.hf"; hg: "cx.hg"; hh: "cx.hh"; hi: "cx.hi"; hj: "cx.hj"; hk: "cx.hk"; hl: "cx.hl"; hm: "cx.hm"; hn: "cx.hn"; ho: "cx.ho"; hp: "cx.hp"; hq: "cx.hq"; hr: "cx.hr"; hs: "cx.hs"; ht: "cx.ht"; hu: "cx.hu"; hv: "cx.hv"; hw: "cx.hw"; hx: "cx.hx"; hy: "cx.hy"; hz: "cx.hz"; ia: "cx.ia"; ib: "cx.ib"; ic: "cx.ic"; id: "cx.id"; ie: "cx.ie"; if: "cx.if"; ig: "cx.ig"; ih: "cx.ih"; ii: "cx.ii"; ij: "cx.ij"; ik: "cx.ik"; il: "cx.il"; im: "cx.im"; in: "cx.in"; io: "cx.io"; ip: "cx.ip"; iq: "cx.iq"; ir: "cx.ir"; is: "cx.is"; it: "cx.it"; iu: "cx.iu"; iv: "cx.iv"; iw: "cx.iw"; ix: "cx.ix"; iy: "cx.iy"; iz: "cx.iz"; ja: "cx.ja"; jb: "cx.jb"; jc: "cx.jc"; jd: "cx.jd"; je: "cx.je"; jf: "cx.jf"; jg: "cx.jg"; jh: "cx.jh"; ji: "cx.ji"; jj: "cx.jj"; jk: "cx.jk"; jl: "cx.jl"; jm: "cx.jm"; jn: "cx.jn"; jo: "cx.jo"; jp: "cx.jp"; jq: "cx.jq"; jr: "cx.jr"; js: "cx.js"; jt: "cx.jt"; ju: "cx.ju"; jv: "cx.jv"; jw: "cx.jw"; jx: "cx.jx"; jy: "cx.jy"; jz: "cx.jz"; ka: "cx.ka"; kb: "cx.kb"; kc: "cx.kc"; kd: "cx.kd"; ke: "cx.ke"; kf: "cx.kf"; kg: "cx.kg"; kh: "cx.kh"; ki: "cx.ki"; kj: "cx.kj"; kk: "cx.kk"; kl: "cx.kl"; km: "cx.km"; kn: "cx.kn"; ko: "cx.ko"; kp: "cx.kp"; kq: "cx.kq"; kr: "cx.kr"; ks: "cx.ks"; kt: "cx.kt"; ku: "cx.ku"; kv: "cx.kv"; kw: "cx.kw"; kx: "cx.kx"; ky: "cx.ky"; kz: "cx.kz"; la: "cx.la"; lb: "cx.lb"; lc: "cx.lc"; ld: "cx.ld"; le: "cx.le"; lf: "cx.lf"; lg: "cx.lg"; lh: "cx.lh"; li: "cx.li"; lj: "cx.lj"; lk: "cx.lk"; ll: "cx.ll"; lm: "cx.lm"; ln: "cx.ln"; lo: "cx.lo"; lp: "cx.lp"; lq: "cx.lq"; lr: "cx.lr"; ls: "cx.ls"; lt: "cx.lt"; lu: "cx.lu"; lv: "cx.lv"; lw: "cx.lw"; lx: "cx.lx"; ly: "cx.ly"; lz: "cx.lz"; ma: "cx.ma"; mb: "cx.mb"; mc: "cx.mc"; md: "cx.md"; me: "cx.me"; mf: "cx.mf"; mg: "cx.mg"; mh: "cx.mh"; mi: "cx.mi"; mj: "cx.mj"; mk: "cx.mk"; ml: "cx.ml"; mm: "cx.mm"; mn: "cx.mn"; mo: "cx.mo"; mp: "cx.mp"; mq: "cx.mq"; mr: "cx.mr"; ms: "cx.ms"; mt: "cx.mt"; mu: "cx.mu"; mv: "cx.mv"; mw: "cx.mw"; mx: "cx.mx"; my: "cx.my"; mz: "cx.mz"; na: "cx.na"; nb: "cx.nb"; nc: "cx.nc"; nd: "cx.nd"; ne: "cx.ne"; nf: "cx.nf"; ng: "cx.ng"; nh: "cx.nh"; ni: "cx.ni"; nj: "cx.nj"; nk: "cx.nk"; nl: "cx.nl"; nm: "cx.nm"; nn: "cx.nn"; no: "cx.no"; np: "cx.np"; nq: "cx.nq"; nr: "cx.nr"; ns: "cx.ns"; nt: "cx.nt"; nu: "cx.nu"; nv: "cx.nv"; nw: "cx.nw"; nx: "cx.nx"; ny: "cx.ny"; nz: "cx.nz"; oa: "cx.oa"; ob: "cx.ob"; oc: "cx.oc"; od: "cx.od"; oe: "cx.oe"; of: "cx.of"; og: "cx.og"; oh: "cx.oh"; oi: "cx.oi"; oj: "cx.oj"; ok: "cx.ok"; ol: "cx.ol"; om: "cx.om"; on: "cx.on"; oo: "cx.oo"; op: "cx.op"; oq: "cx.oq"; or: "cx.or"; os: "cx.os"; ot: "cx.ot"; ou: "cx.ou"; ov: "cx.ov"; ow: "cx.ow"; ox: "cx.ox"; oy: "cx.oy"; oz: "cx.oz"; pa: "cx.pa"; pb: "cx.pb"; pc: "cx.pc"; pd: "cx.pd"; pe: "cx.pe"; pf: "cx.pf"; pg: "cx.pg"; ph: "cx.ph"; pi: "cx.pi"; pj: "cx.pj"; pk: "cx.pk"; pl: "cx.pl"; pm: "cx.pm"; pn: "cx.pn"; po: "cx.po"; pp: "cx.pp"; pq: "cx.pq"; pr: "cx.pr"; ps: "cx.ps"; pt: "cx.pt"; pu: "cx.pu"; pv: "cx.pv"; pw: "cx.pw"; px: "cx.px"; py: "cx.py"; pz: "cx.pz"; qa: "cx.qa"; qb: "cx.qb"; qc: "cx.qc"; qd: "cx.qd"; qe: "cx.qe"; qf: "cx.qf"; qg: "cx.qg"; qh: "cx.qh"; qi: "cx.qi"; qj: "cx.qj"; qk: "cx.qk"; ql: "cx.ql"; qm: "cx.qm"; qn: "cx.qn"; qo: "cx.qo"; qp: "cx.qp"; qq: "cx.qq"; qr: "cx.qr"; qs: "cx.qs"; qt: "cx.qt"; qu: "cx.qu"; qv: "cx.qv"; qw: "cx.qw"; qx: "cx.qx"; qy: "cx.qy"; qz: "cx.qz"; ra: "cx.ra"; rb: "cx.rb"; rc: "cx.rc"; rd: "cx.rd"; re: "cx.re"; rf: "cx.rf"; rg: "cx.rg"; rh: "cx.rh"; ri: "cx.ri"; rj: "cx.rj"; rk: "cx.rk"; rl: "cx.rl"; rm: "cx.rm"; rn: "cx.rn"; ro: "cx.ro"; rp: "cx.rp"; rq: "cx.rq"; rr: "cx.rr"; rs: "cx.rs"; rt: "cx.rt"; ru: "cx.ru"; rv: "cx.rv"; rw: "cx.rw"; rx: "cx.rx"; ry: "cx.ry"; rz: "cx.rz"; sa: "cx.sa"; sb: "cx.sb"; sc: "cx.sc"; sd: "cx.sd"; se: "cx.se"; sf: "cx.sf"; sg: "cx.sg"; sh: "cx.sh"; si: "cx.si"; sj: "cx.sj"; sk: "cx.sk"; sl: "cx.sl"; sm: "cx.sm"; sn: "cx.sn"; so: "cx.so"; sp: "cx.sp"; sq: "cx.sq"; sr: "cx.sr"; ss: "cx.ss"; st: "cx.st"; su: "cx.su"; sv: "cx.sv"; sw: "cx.sw"; sx: "cx.sx"; sy: "cx.sy"; sz: "cx.sz"; ta: "cx.ta"; tb: "cx.tb"; tc: "cx.tc"; td: "cx.td"; te: "cx.te"; tf: "cx.tf"; tg: "cx.tg"; th: "cx.th"; ti: "cx.ti"; tj: "cx.tj"; tk: "cx.tk"; tl: "cx.tl"; tm: "cx.tm"; tn: "cx.tn"; to: "cx.to"; tp: "cx.tp"; tq: "cx.tq"; tr: "cx.tr"; ts: "cx.ts"; tt: "cx.tt"; tu: "cx.tu"; tv: "cx.tv"; tw: "cx.tw"; tx: "cx.tx"; ty: "cx.ty"; tz: "cx.tz"; ua: "cx.ua"; ub: "cx.ub"; uc: "cx.uc"; ud: "cx.ud"; ue: "cx.ue"; uf: "cx.uf"; ug: "cx.ug"; uh: "cx.uh"; ui: "cx.ui"; uj: "cx.uj"; uk: "cx.uk"; ul: "cx.ul"; um: "cx.um"; un: "cx.un"; uo: "cx.uo"; up: "cx.up"; uq: "cx.uq"; ur: "cx.ur"; us: "cx.us"; ut: "cx.ut"; uu: "cx.uu"; uv: "cx.uv"; uw: "cx.uw"; ux: "cx.ux"; uy: "cx.uy"; uz: "cx.uz"; va: "cx.va"; vb: "cx.vb"; vc: "cx.vc"; vd: "cx.vd"; ve: "cx.ve"; vf: "cx.vf"; vg: "cx.vg"; vh: "cx.vh"; vi: "cx.vi"; vj: "cx.vj"; vk: "cx.vk"; vl: "cx.vl"; vm: "cx.vm"; vn: "cx.vn"; vo: "cx.vo"; vp: "cx.vp"; vq: "cx.vq"; vr: "cx.vr"; vs: "cx.vs"; vt: "cx.vt"; vu: "cx.vu"; vv: "cx.vv"; vw: "cx.vw"; vx: "cx.vx"; vy: "cx.vy"; vz: "cx.vz"; wa: "cx.wa"; wb: "cx.wb"; wc: "cx.wc"; wd: "cx.wd"; we: "cx.we"; wf: "cx.wf"; wg: "cx.wg"; wh: "cx.wh"; wi: "cx.wi"; wj: "cx.wj"; wk: "cx.wk"; wl: "cx.wl"; wm: "cx.wm"; wn: "cx.wn"; wo: "cx.wo"; wp: "cx.wp"; wq: "cx.wq"; wr: "cx.wr"; ws: "cx.ws"; wt: "cx.wt"; wu: "cx.wu"; wv: "cx.wv"; ww: "cx.ww"; wx: "cx.wx"; wy: "cx.wy"; wz: "cx.wz"; xa: "cx.xa"; xb: "cx.xb"; xc: "cx.xc"; xd: "cx.xd"; xe: "cx.xe"; xf: "cx.xf"; xg: "cx.xg"; xh: "cx.xh"; xi: "cx.xi"; xj: "cx.xj"; xk: "cx.xk"; xl: "cx.xl"; xm: "cx.xm"; xn: "cx.xn"; xo: "cx.xo"; xp: "cx.xp"; xq: "cx.xq"; xr: "cx.xr"; xs: "cx.xs"; xt: "cx.xt"; xu: "cx.xu"; xv: "cx.xv"; xw: "cx.xw"; xx: "cx.xx"; xy: "cx.xy"; xz: "cx.xz"; ya: "cx.ya"; yb: "cx.yb"; yc: "cx.yc"; yd: "cx.yd"; ye: "cx.ye"; yf: "cx.yf"; yg: "cx.yg"; yh: "cx.yh"; yi: "cx.yi"; yj: "cx.yj"; yk: "cx.yk"; yl: "cx.yl"; ym: "cx.ym"; yn: "cx.yn"; yo: "cx.yo"; yp: "cx.yp"; yq: "cx.yq"; yr: "cx.yr"; ys: "cx.ys"; yt: "cx.yt"; yu: "cx.yu"; yv: "cx.yv"; yw: "cx.yw"; yx: "cx.yx"; yy: "cx.yy"; yz: "cx.yz"; za: "cx.za"; zb: "cx.zb"; zc: "cx.zc"; zd: "cx.zd"; ze: "cx.ze"; zf: "cx.zf"; zg: "cx.zg"; zh: "cx.zh"; zi: "cx.zi"; zj: "cx.zj"; zk: "cx.zk"; zl: "cx.zl"; zm: "cx.zm"; zn: "cx.zn"; zo: "cx.zo"; zp: "cx.zp"; zq: "cx.zq"; zr: "cx.zr"; zs: "cx.zs"; zt: "cx.zt"; zu: "cx.zu"; zv: "cx.zv"; zw: "cx.zw"; zx: "cx.zx"; zy: "cx.zy"; zz: "cx.zz"; }; cy: { aa: "cy.aa"; ab: "cy.ab"; ac: "cy.ac"; ad: "cy.ad"; ae: "cy.ae"; af: "cy.af"; ag: "cy.ag"; ah: "cy.ah"; ai: "cy.ai"; aj: "cy.aj"; ak: "cy.ak"; al: "cy.al"; am: "cy.am"; an: "cy.an"; ao: "cy.ao"; ap: "cy.ap"; aq: "cy.aq"; ar: "cy.ar"; as: "cy.as"; at: "cy.at"; au: "cy.au"; av: "cy.av"; aw: "cy.aw"; ax: "cy.ax"; ay: "cy.ay"; az: "cy.az"; ba: "cy.ba"; bb: "cy.bb"; bc: "cy.bc"; bd: "cy.bd"; be: "cy.be"; bf: "cy.bf"; bg: "cy.bg"; bh: "cy.bh"; bi: "cy.bi"; bj: "cy.bj"; bk: "cy.bk"; bl: "cy.bl"; bm: "cy.bm"; bn: "cy.bn"; bo: "cy.bo"; bp: "cy.bp"; bq: "cy.bq"; br: "cy.br"; bs: "cy.bs"; bt: "cy.bt"; bu: "cy.bu"; bv: "cy.bv"; bw: "cy.bw"; bx: "cy.bx"; by: "cy.by"; bz: "cy.bz"; ca: "cy.ca"; cb: "cy.cb"; cc: "cy.cc"; cd: "cy.cd"; ce: "cy.ce"; cf: "cy.cf"; cg: "cy.cg"; ch: "cy.ch"; ci: "cy.ci"; cj: "cy.cj"; ck: "cy.ck"; cl: "cy.cl"; cm: "cy.cm"; cn: "cy.cn"; co: "cy.co"; cp: "cy.cp"; cq: "cy.cq"; cr: "cy.cr"; cs: "cy.cs"; ct: "cy.ct"; cu: "cy.cu"; cv: "cy.cv"; cw: "cy.cw"; cx: "cy.cx"; cy: "cy.cy"; cz: "cy.cz"; da: "cy.da"; db: "cy.db"; dc: "cy.dc"; dd: "cy.dd"; de: "cy.de"; df: "cy.df"; dg: "cy.dg"; dh: "cy.dh"; di: "cy.di"; dj: "cy.dj"; dk: "cy.dk"; dl: "cy.dl"; dm: "cy.dm"; dn: "cy.dn"; do: "cy.do"; dp: "cy.dp"; dq: "cy.dq"; dr: "cy.dr"; ds: "cy.ds"; dt: "cy.dt"; du: "cy.du"; dv: "cy.dv"; dw: "cy.dw"; dx: "cy.dx"; dy: "cy.dy"; dz: "cy.dz"; ea: "cy.ea"; eb: "cy.eb"; ec: "cy.ec"; ed: "cy.ed"; ee: "cy.ee"; ef: "cy.ef"; eg: "cy.eg"; eh: "cy.eh"; ei: "cy.ei"; ej: "cy.ej"; ek: "cy.ek"; el: "cy.el"; em: "cy.em"; en: "cy.en"; eo: "cy.eo"; ep: "cy.ep"; eq: "cy.eq"; er: "cy.er"; es: "cy.es"; et: "cy.et"; eu: "cy.eu"; ev: "cy.ev"; ew: "cy.ew"; ex: "cy.ex"; ey: "cy.ey"; ez: "cy.ez"; fa: "cy.fa"; fb: "cy.fb"; fc: "cy.fc"; fd: "cy.fd"; fe: "cy.fe"; ff: "cy.ff"; fg: "cy.fg"; fh: "cy.fh"; fi: "cy.fi"; fj: "cy.fj"; fk: "cy.fk"; fl: "cy.fl"; fm: "cy.fm"; fn: "cy.fn"; fo: "cy.fo"; fp: "cy.fp"; fq: "cy.fq"; fr: "cy.fr"; fs: "cy.fs"; ft: "cy.ft"; fu: "cy.fu"; fv: "cy.fv"; fw: "cy.fw"; fx: "cy.fx"; fy: "cy.fy"; fz: "cy.fz"; ga: "cy.ga"; gb: "cy.gb"; gc: "cy.gc"; gd: "cy.gd"; ge: "cy.ge"; gf: "cy.gf"; gg: "cy.gg"; gh: "cy.gh"; gi: "cy.gi"; gj: "cy.gj"; gk: "cy.gk"; gl: "cy.gl"; gm: "cy.gm"; gn: "cy.gn"; go: "cy.go"; gp: "cy.gp"; gq: "cy.gq"; gr: "cy.gr"; gs: "cy.gs"; gt: "cy.gt"; gu: "cy.gu"; gv: "cy.gv"; gw: "cy.gw"; gx: "cy.gx"; gy: "cy.gy"; gz: "cy.gz"; ha: "cy.ha"; hb: "cy.hb"; hc: "cy.hc"; hd: "cy.hd"; he: "cy.he"; hf: "cy.hf"; hg: "cy.hg"; hh: "cy.hh"; hi: "cy.hi"; hj: "cy.hj"; hk: "cy.hk"; hl: "cy.hl"; hm: "cy.hm"; hn: "cy.hn"; ho: "cy.ho"; hp: "cy.hp"; hq: "cy.hq"; hr: "cy.hr"; hs: "cy.hs"; ht: "cy.ht"; hu: "cy.hu"; hv: "cy.hv"; hw: "cy.hw"; hx: "cy.hx"; hy: "cy.hy"; hz: "cy.hz"; ia: "cy.ia"; ib: "cy.ib"; ic: "cy.ic"; id: "cy.id"; ie: "cy.ie"; if: "cy.if"; ig: "cy.ig"; ih: "cy.ih"; ii: "cy.ii"; ij: "cy.ij"; ik: "cy.ik"; il: "cy.il"; im: "cy.im"; in: "cy.in"; io: "cy.io"; ip: "cy.ip"; iq: "cy.iq"; ir: "cy.ir"; is: "cy.is"; it: "cy.it"; iu: "cy.iu"; iv: "cy.iv"; iw: "cy.iw"; ix: "cy.ix"; iy: "cy.iy"; iz: "cy.iz"; ja: "cy.ja"; jb: "cy.jb"; jc: "cy.jc"; jd: "cy.jd"; je: "cy.je"; jf: "cy.jf"; jg: "cy.jg"; jh: "cy.jh"; ji: "cy.ji"; jj: "cy.jj"; jk: "cy.jk"; jl: "cy.jl"; jm: "cy.jm"; jn: "cy.jn"; jo: "cy.jo"; jp: "cy.jp"; jq: "cy.jq"; jr: "cy.jr"; js: "cy.js"; jt: "cy.jt"; ju: "cy.ju"; jv: "cy.jv"; jw: "cy.jw"; jx: "cy.jx"; jy: "cy.jy"; jz: "cy.jz"; ka: "cy.ka"; kb: "cy.kb"; kc: "cy.kc"; kd: "cy.kd"; ke: "cy.ke"; kf: "cy.kf"; kg: "cy.kg"; kh: "cy.kh"; ki: "cy.ki"; kj: "cy.kj"; kk: "cy.kk"; kl: "cy.kl"; km: "cy.km"; kn: "cy.kn"; ko: "cy.ko"; kp: "cy.kp"; kq: "cy.kq"; kr: "cy.kr"; ks: "cy.ks"; kt: "cy.kt"; ku: "cy.ku"; kv: "cy.kv"; kw: "cy.kw"; kx: "cy.kx"; ky: "cy.ky"; kz: "cy.kz"; la: "cy.la"; lb: "cy.lb"; lc: "cy.lc"; ld: "cy.ld"; le: "cy.le"; lf: "cy.lf"; lg: "cy.lg"; lh: "cy.lh"; li: "cy.li"; lj: "cy.lj"; lk: "cy.lk"; ll: "cy.ll"; lm: "cy.lm"; ln: "cy.ln"; lo: "cy.lo"; lp: "cy.lp"; lq: "cy.lq"; lr: "cy.lr"; ls: "cy.ls"; lt: "cy.lt"; lu: "cy.lu"; lv: "cy.lv"; lw: "cy.lw"; lx: "cy.lx"; ly: "cy.ly"; lz: "cy.lz"; ma: "cy.ma"; mb: "cy.mb"; mc: "cy.mc"; md: "cy.md"; me: "cy.me"; mf: "cy.mf"; mg: "cy.mg"; mh: "cy.mh"; mi: "cy.mi"; mj: "cy.mj"; mk: "cy.mk"; ml: "cy.ml"; mm: "cy.mm"; mn: "cy.mn"; mo: "cy.mo"; mp: "cy.mp"; mq: "cy.mq"; mr: "cy.mr"; ms: "cy.ms"; mt: "cy.mt"; mu: "cy.mu"; mv: "cy.mv"; mw: "cy.mw"; mx: "cy.mx"; my: "cy.my"; mz: "cy.mz"; na: "cy.na"; nb: "cy.nb"; nc: "cy.nc"; nd: "cy.nd"; ne: "cy.ne"; nf: "cy.nf"; ng: "cy.ng"; nh: "cy.nh"; ni: "cy.ni"; nj: "cy.nj"; nk: "cy.nk"; nl: "cy.nl"; nm: "cy.nm"; nn: "cy.nn"; no: "cy.no"; np: "cy.np"; nq: "cy.nq"; nr: "cy.nr"; ns: "cy.ns"; nt: "cy.nt"; nu: "cy.nu"; nv: "cy.nv"; nw: "cy.nw"; nx: "cy.nx"; ny: "cy.ny"; nz: "cy.nz"; oa: "cy.oa"; ob: "cy.ob"; oc: "cy.oc"; od: "cy.od"; oe: "cy.oe"; of: "cy.of"; og: "cy.og"; oh: "cy.oh"; oi: "cy.oi"; oj: "cy.oj"; ok: "cy.ok"; ol: "cy.ol"; om: "cy.om"; on: "cy.on"; oo: "cy.oo"; op: "cy.op"; oq: "cy.oq"; or: "cy.or"; os: "cy.os"; ot: "cy.ot"; ou: "cy.ou"; ov: "cy.ov"; ow: "cy.ow"; ox: "cy.ox"; oy: "cy.oy"; oz: "cy.oz"; pa: "cy.pa"; pb: "cy.pb"; pc: "cy.pc"; pd: "cy.pd"; pe: "cy.pe"; pf: "cy.pf"; pg: "cy.pg"; ph: "cy.ph"; pi: "cy.pi"; pj: "cy.pj"; pk: "cy.pk"; pl: "cy.pl"; pm: "cy.pm"; pn: "cy.pn"; po: "cy.po"; pp: "cy.pp"; pq: "cy.pq"; pr: "cy.pr"; ps: "cy.ps"; pt: "cy.pt"; pu: "cy.pu"; pv: "cy.pv"; pw: "cy.pw"; px: "cy.px"; py: "cy.py"; pz: "cy.pz"; qa: "cy.qa"; qb: "cy.qb"; qc: "cy.qc"; qd: "cy.qd"; qe: "cy.qe"; qf: "cy.qf"; qg: "cy.qg"; qh: "cy.qh"; qi: "cy.qi"; qj: "cy.qj"; qk: "cy.qk"; ql: "cy.ql"; qm: "cy.qm"; qn: "cy.qn"; qo: "cy.qo"; qp: "cy.qp"; qq: "cy.qq"; qr: "cy.qr"; qs: "cy.qs"; qt: "cy.qt"; qu: "cy.qu"; qv: "cy.qv"; qw: "cy.qw"; qx: "cy.qx"; qy: "cy.qy"; qz: "cy.qz"; ra: "cy.ra"; rb: "cy.rb"; rc: "cy.rc"; rd: "cy.rd"; re: "cy.re"; rf: "cy.rf"; rg: "cy.rg"; rh: "cy.rh"; ri: "cy.ri"; rj: "cy.rj"; rk: "cy.rk"; rl: "cy.rl"; rm: "cy.rm"; rn: "cy.rn"; ro: "cy.ro"; rp: "cy.rp"; rq: "cy.rq"; rr: "cy.rr"; rs: "cy.rs"; rt: "cy.rt"; ru: "cy.ru"; rv: "cy.rv"; rw: "cy.rw"; rx: "cy.rx"; ry: "cy.ry"; rz: "cy.rz"; sa: "cy.sa"; sb: "cy.sb"; sc: "cy.sc"; sd: "cy.sd"; se: "cy.se"; sf: "cy.sf"; sg: "cy.sg"; sh: "cy.sh"; si: "cy.si"; sj: "cy.sj"; sk: "cy.sk"; sl: "cy.sl"; sm: "cy.sm"; sn: "cy.sn"; so: "cy.so"; sp: "cy.sp"; sq: "cy.sq"; sr: "cy.sr"; ss: "cy.ss"; st: "cy.st"; su: "cy.su"; sv: "cy.sv"; sw: "cy.sw"; sx: "cy.sx"; sy: "cy.sy"; sz: "cy.sz"; ta: "cy.ta"; tb: "cy.tb"; tc: "cy.tc"; td: "cy.td"; te: "cy.te"; tf: "cy.tf"; tg: "cy.tg"; th: "cy.th"; ti: "cy.ti"; tj: "cy.tj"; tk: "cy.tk"; tl: "cy.tl"; tm: "cy.tm"; tn: "cy.tn"; to: "cy.to"; tp: "cy.tp"; tq: "cy.tq"; tr: "cy.tr"; ts: "cy.ts"; tt: "cy.tt"; tu: "cy.tu"; tv: "cy.tv"; tw: "cy.tw"; tx: "cy.tx"; ty: "cy.ty"; tz: "cy.tz"; ua: "cy.ua"; ub: "cy.ub"; uc: "cy.uc"; ud: "cy.ud"; ue: "cy.ue"; uf: "cy.uf"; ug: "cy.ug"; uh: "cy.uh"; ui: "cy.ui"; uj: "cy.uj"; uk: "cy.uk"; ul: "cy.ul"; um: "cy.um"; un: "cy.un"; uo: "cy.uo"; up: "cy.up"; uq: "cy.uq"; ur: "cy.ur"; us: "cy.us"; ut: "cy.ut"; uu: "cy.uu"; uv: "cy.uv"; uw: "cy.uw"; ux: "cy.ux"; uy: "cy.uy"; uz: "cy.uz"; va: "cy.va"; vb: "cy.vb"; vc: "cy.vc"; vd: "cy.vd"; ve: "cy.ve"; vf: "cy.vf"; vg: "cy.vg"; vh: "cy.vh"; vi: "cy.vi"; vj: "cy.vj"; vk: "cy.vk"; vl: "cy.vl"; vm: "cy.vm"; vn: "cy.vn"; vo: "cy.vo"; vp: "cy.vp"; vq: "cy.vq"; vr: "cy.vr"; vs: "cy.vs"; vt: "cy.vt"; vu: "cy.vu"; vv: "cy.vv"; vw: "cy.vw"; vx: "cy.vx"; vy: "cy.vy"; vz: "cy.vz"; wa: "cy.wa"; wb: "cy.wb"; wc: "cy.wc"; wd: "cy.wd"; we: "cy.we"; wf: "cy.wf"; wg: "cy.wg"; wh: "cy.wh"; wi: "cy.wi"; wj: "cy.wj"; wk: "cy.wk"; wl: "cy.wl"; wm: "cy.wm"; wn: "cy.wn"; wo: "cy.wo"; wp: "cy.wp"; wq: "cy.wq"; wr: "cy.wr"; ws: "cy.ws"; wt: "cy.wt"; wu: "cy.wu"; wv: "cy.wv"; ww: "cy.ww"; wx: "cy.wx"; wy: "cy.wy"; wz: "cy.wz"; xa: "cy.xa"; xb: "cy.xb"; xc: "cy.xc"; xd: "cy.xd"; xe: "cy.xe"; xf: "cy.xf"; xg: "cy.xg"; xh: "cy.xh"; xi: "cy.xi"; xj: "cy.xj"; xk: "cy.xk"; xl: "cy.xl"; xm: "cy.xm"; xn: "cy.xn"; xo: "cy.xo"; xp: "cy.xp"; xq: "cy.xq"; xr: "cy.xr"; xs: "cy.xs"; xt: "cy.xt"; xu: "cy.xu"; xv: "cy.xv"; xw: "cy.xw"; xx: "cy.xx"; xy: "cy.xy"; xz: "cy.xz"; ya: "cy.ya"; yb: "cy.yb"; yc: "cy.yc"; yd: "cy.yd"; ye: "cy.ye"; yf: "cy.yf"; yg: "cy.yg"; yh: "cy.yh"; yi: "cy.yi"; yj: "cy.yj"; yk: "cy.yk"; yl: "cy.yl"; ym: "cy.ym"; yn: "cy.yn"; yo: "cy.yo"; yp: "cy.yp"; yq: "cy.yq"; yr: "cy.yr"; ys: "cy.ys"; yt: "cy.yt"; yu: "cy.yu"; yv: "cy.yv"; yw: "cy.yw"; yx: "cy.yx"; yy: "cy.yy"; yz: "cy.yz"; za: "cy.za"; zb: "cy.zb"; zc: "cy.zc"; zd: "cy.zd"; ze: "cy.ze"; zf: "cy.zf"; zg: "cy.zg"; zh: "cy.zh"; zi: "cy.zi"; zj: "cy.zj"; zk: "cy.zk"; zl: "cy.zl"; zm: "cy.zm"; zn: "cy.zn"; zo: "cy.zo"; zp: "cy.zp"; zq: "cy.zq"; zr: "cy.zr"; zs: "cy.zs"; zt: "cy.zt"; zu: "cy.zu"; zv: "cy.zv"; zw: "cy.zw"; zx: "cy.zx"; zy: "cy.zy"; zz: "cy.zz"; }; cz: { aa: "cz.aa"; ab: "cz.ab"; ac: "cz.ac"; ad: "cz.ad"; ae: "cz.ae"; af: "cz.af"; ag: "cz.ag"; ah: "cz.ah"; ai: "cz.ai"; aj: "cz.aj"; ak: "cz.ak"; al: "cz.al"; am: "cz.am"; an: "cz.an"; ao: "cz.ao"; ap: "cz.ap"; aq: "cz.aq"; ar: "cz.ar"; as: "cz.as"; at: "cz.at"; au: "cz.au"; av: "cz.av"; aw: "cz.aw"; ax: "cz.ax"; ay: "cz.ay"; az: "cz.az"; ba: "cz.ba"; bb: "cz.bb"; bc: "cz.bc"; bd: "cz.bd"; be: "cz.be"; bf: "cz.bf"; bg: "cz.bg"; bh: "cz.bh"; bi: "cz.bi"; bj: "cz.bj"; bk: "cz.bk"; bl: "cz.bl"; bm: "cz.bm"; bn: "cz.bn"; bo: "cz.bo"; bp: "cz.bp"; bq: "cz.bq"; br: "cz.br"; bs: "cz.bs"; bt: "cz.bt"; bu: "cz.bu"; bv: "cz.bv"; bw: "cz.bw"; bx: "cz.bx"; by: "cz.by"; bz: "cz.bz"; ca: "cz.ca"; cb: "cz.cb"; cc: "cz.cc"; cd: "cz.cd"; ce: "cz.ce"; cf: "cz.cf"; cg: "cz.cg"; ch: "cz.ch"; ci: "cz.ci"; cj: "cz.cj"; ck: "cz.ck"; cl: "cz.cl"; cm: "cz.cm"; cn: "cz.cn"; co: "cz.co"; cp: "cz.cp"; cq: "cz.cq"; cr: "cz.cr"; cs: "cz.cs"; ct: "cz.ct"; cu: "cz.cu"; cv: "cz.cv"; cw: "cz.cw"; cx: "cz.cx"; cy: "cz.cy"; cz: "cz.cz"; da: "cz.da"; db: "cz.db"; dc: "cz.dc"; dd: "cz.dd"; de: "cz.de"; df: "cz.df"; dg: "cz.dg"; dh: "cz.dh"; di: "cz.di"; dj: "cz.dj"; dk: "cz.dk"; dl: "cz.dl"; dm: "cz.dm"; dn: "cz.dn"; do: "cz.do"; dp: "cz.dp"; dq: "cz.dq"; dr: "cz.dr"; ds: "cz.ds"; dt: "cz.dt"; du: "cz.du"; dv: "cz.dv"; dw: "cz.dw"; dx: "cz.dx"; dy: "cz.dy"; dz: "cz.dz"; ea: "cz.ea"; eb: "cz.eb"; ec: "cz.ec"; ed: "cz.ed"; ee: "cz.ee"; ef: "cz.ef"; eg: "cz.eg"; eh: "cz.eh"; ei: "cz.ei"; ej: "cz.ej"; ek: "cz.ek"; el: "cz.el"; em: "cz.em"; en: "cz.en"; eo: "cz.eo"; ep: "cz.ep"; eq: "cz.eq"; er: "cz.er"; es: "cz.es"; et: "cz.et"; eu: "cz.eu"; ev: "cz.ev"; ew: "cz.ew"; ex: "cz.ex"; ey: "cz.ey"; ez: "cz.ez"; fa: "cz.fa"; fb: "cz.fb"; fc: "cz.fc"; fd: "cz.fd"; fe: "cz.fe"; ff: "cz.ff"; fg: "cz.fg"; fh: "cz.fh"; fi: "cz.fi"; fj: "cz.fj"; fk: "cz.fk"; fl: "cz.fl"; fm: "cz.fm"; fn: "cz.fn"; fo: "cz.fo"; fp: "cz.fp"; fq: "cz.fq"; fr: "cz.fr"; fs: "cz.fs"; ft: "cz.ft"; fu: "cz.fu"; fv: "cz.fv"; fw: "cz.fw"; fx: "cz.fx"; fy: "cz.fy"; fz: "cz.fz"; ga: "cz.ga"; gb: "cz.gb"; gc: "cz.gc"; gd: "cz.gd"; ge: "cz.ge"; gf: "cz.gf"; gg: "cz.gg"; gh: "cz.gh"; gi: "cz.gi"; gj: "cz.gj"; gk: "cz.gk"; gl: "cz.gl"; gm: "cz.gm"; gn: "cz.gn"; go: "cz.go"; gp: "cz.gp"; gq: "cz.gq"; gr: "cz.gr"; gs: "cz.gs"; gt: "cz.gt"; gu: "cz.gu"; gv: "cz.gv"; gw: "cz.gw"; gx: "cz.gx"; gy: "cz.gy"; gz: "cz.gz"; ha: "cz.ha"; hb: "cz.hb"; hc: "cz.hc"; hd: "cz.hd"; he: "cz.he"; hf: "cz.hf"; hg: "cz.hg"; hh: "cz.hh"; hi: "cz.hi"; hj: "cz.hj"; hk: "cz.hk"; hl: "cz.hl"; hm: "cz.hm"; hn: "cz.hn"; ho: "cz.ho"; hp: "cz.hp"; hq: "cz.hq"; hr: "cz.hr"; hs: "cz.hs"; ht: "cz.ht"; hu: "cz.hu"; hv: "cz.hv"; hw: "cz.hw"; hx: "cz.hx"; hy: "cz.hy"; hz: "cz.hz"; ia: "cz.ia"; ib: "cz.ib"; ic: "cz.ic"; id: "cz.id"; ie: "cz.ie"; if: "cz.if"; ig: "cz.ig"; ih: "cz.ih"; ii: "cz.ii"; ij: "cz.ij"; ik: "cz.ik"; il: "cz.il"; im: "cz.im"; in: "cz.in"; io: "cz.io"; ip: "cz.ip"; iq: "cz.iq"; ir: "cz.ir"; is: "cz.is"; it: "cz.it"; iu: "cz.iu"; iv: "cz.iv"; iw: "cz.iw"; ix: "cz.ix"; iy: "cz.iy"; iz: "cz.iz"; ja: "cz.ja"; jb: "cz.jb"; jc: "cz.jc"; jd: "cz.jd"; je: "cz.je"; jf: "cz.jf"; jg: "cz.jg"; jh: "cz.jh"; ji: "cz.ji"; jj: "cz.jj"; jk: "cz.jk"; jl: "cz.jl"; jm: "cz.jm"; jn: "cz.jn"; jo: "cz.jo"; jp: "cz.jp"; jq: "cz.jq"; jr: "cz.jr"; js: "cz.js"; jt: "cz.jt"; ju: "cz.ju"; jv: "cz.jv"; jw: "cz.jw"; jx: "cz.jx"; jy: "cz.jy"; jz: "cz.jz"; ka: "cz.ka"; kb: "cz.kb"; kc: "cz.kc"; kd: "cz.kd"; ke: "cz.ke"; kf: "cz.kf"; kg: "cz.kg"; kh: "cz.kh"; ki: "cz.ki"; kj: "cz.kj"; kk: "cz.kk"; kl: "cz.kl"; km: "cz.km"; kn: "cz.kn"; ko: "cz.ko"; kp: "cz.kp"; kq: "cz.kq"; kr: "cz.kr"; ks: "cz.ks"; kt: "cz.kt"; ku: "cz.ku"; kv: "cz.kv"; kw: "cz.kw"; kx: "cz.kx"; ky: "cz.ky"; kz: "cz.kz"; la: "cz.la"; lb: "cz.lb"; lc: "cz.lc"; ld: "cz.ld"; le: "cz.le"; lf: "cz.lf"; lg: "cz.lg"; lh: "cz.lh"; li: "cz.li"; lj: "cz.lj"; lk: "cz.lk"; ll: "cz.ll"; lm: "cz.lm"; ln: "cz.ln"; lo: "cz.lo"; lp: "cz.lp"; lq: "cz.lq"; lr: "cz.lr"; ls: "cz.ls"; lt: "cz.lt"; lu: "cz.lu"; lv: "cz.lv"; lw: "cz.lw"; lx: "cz.lx"; ly: "cz.ly"; lz: "cz.lz"; ma: "cz.ma"; mb: "cz.mb"; mc: "cz.mc"; md: "cz.md"; me: "cz.me"; mf: "cz.mf"; mg: "cz.mg"; mh: "cz.mh"; mi: "cz.mi"; mj: "cz.mj"; mk: "cz.mk"; ml: "cz.ml"; mm: "cz.mm"; mn: "cz.mn"; mo: "cz.mo"; mp: "cz.mp"; mq: "cz.mq"; mr: "cz.mr"; ms: "cz.ms"; mt: "cz.mt"; mu: "cz.mu"; mv: "cz.mv"; mw: "cz.mw"; mx: "cz.mx"; my: "cz.my"; mz: "cz.mz"; na: "cz.na"; nb: "cz.nb"; nc: "cz.nc"; nd: "cz.nd"; ne: "cz.ne"; nf: "cz.nf"; ng: "cz.ng"; nh: "cz.nh"; ni: "cz.ni"; nj: "cz.nj"; nk: "cz.nk"; nl: "cz.nl"; nm: "cz.nm"; nn: "cz.nn"; no: "cz.no"; np: "cz.np"; nq: "cz.nq"; nr: "cz.nr"; ns: "cz.ns"; nt: "cz.nt"; nu: "cz.nu"; nv: "cz.nv"; nw: "cz.nw"; nx: "cz.nx"; ny: "cz.ny"; nz: "cz.nz"; oa: "cz.oa"; ob: "cz.ob"; oc: "cz.oc"; od: "cz.od"; oe: "cz.oe"; of: "cz.of"; og: "cz.og"; oh: "cz.oh"; oi: "cz.oi"; oj: "cz.oj"; ok: "cz.ok"; ol: "cz.ol"; om: "cz.om"; on: "cz.on"; oo: "cz.oo"; op: "cz.op"; oq: "cz.oq"; or: "cz.or"; os: "cz.os"; ot: "cz.ot"; ou: "cz.ou"; ov: "cz.ov"; ow: "cz.ow"; ox: "cz.ox"; oy: "cz.oy"; oz: "cz.oz"; pa: "cz.pa"; pb: "cz.pb"; pc: "cz.pc"; pd: "cz.pd"; pe: "cz.pe"; pf: "cz.pf"; pg: "cz.pg"; ph: "cz.ph"; pi: "cz.pi"; pj: "cz.pj"; pk: "cz.pk"; pl: "cz.pl"; pm: "cz.pm"; pn: "cz.pn"; po: "cz.po"; pp: "cz.pp"; pq: "cz.pq"; pr: "cz.pr"; ps: "cz.ps"; pt: "cz.pt"; pu: "cz.pu"; pv: "cz.pv"; pw: "cz.pw"; px: "cz.px"; py: "cz.py"; pz: "cz.pz"; qa: "cz.qa"; qb: "cz.qb"; qc: "cz.qc"; qd: "cz.qd"; qe: "cz.qe"; qf: "cz.qf"; qg: "cz.qg"; qh: "cz.qh"; qi: "cz.qi"; qj: "cz.qj"; qk: "cz.qk"; ql: "cz.ql"; qm: "cz.qm"; qn: "cz.qn"; qo: "cz.qo"; qp: "cz.qp"; qq: "cz.qq"; qr: "cz.qr"; qs: "cz.qs"; qt: "cz.qt"; qu: "cz.qu"; qv: "cz.qv"; qw: "cz.qw"; qx: "cz.qx"; qy: "cz.qy"; qz: "cz.qz"; ra: "cz.ra"; rb: "cz.rb"; rc: "cz.rc"; rd: "cz.rd"; re: "cz.re"; rf: "cz.rf"; rg: "cz.rg"; rh: "cz.rh"; ri: "cz.ri"; rj: "cz.rj"; rk: "cz.rk"; rl: "cz.rl"; rm: "cz.rm"; rn: "cz.rn"; ro: "cz.ro"; rp: "cz.rp"; rq: "cz.rq"; rr: "cz.rr"; rs: "cz.rs"; rt: "cz.rt"; ru: "cz.ru"; rv: "cz.rv"; rw: "cz.rw"; rx: "cz.rx"; ry: "cz.ry"; rz: "cz.rz"; sa: "cz.sa"; sb: "cz.sb"; sc: "cz.sc"; sd: "cz.sd"; se: "cz.se"; sf: "cz.sf"; sg: "cz.sg"; sh: "cz.sh"; si: "cz.si"; sj: "cz.sj"; sk: "cz.sk"; sl: "cz.sl"; sm: "cz.sm"; sn: "cz.sn"; so: "cz.so"; sp: "cz.sp"; sq: "cz.sq"; sr: "cz.sr"; ss: "cz.ss"; st: "cz.st"; su: "cz.su"; sv: "cz.sv"; sw: "cz.sw"; sx: "cz.sx"; sy: "cz.sy"; sz: "cz.sz"; ta: "cz.ta"; tb: "cz.tb"; tc: "cz.tc"; td: "cz.td"; te: "cz.te"; tf: "cz.tf"; tg: "cz.tg"; th: "cz.th"; ti: "cz.ti"; tj: "cz.tj"; tk: "cz.tk"; tl: "cz.tl"; tm: "cz.tm"; tn: "cz.tn"; to: "cz.to"; tp: "cz.tp"; tq: "cz.tq"; tr: "cz.tr"; ts: "cz.ts"; tt: "cz.tt"; tu: "cz.tu"; tv: "cz.tv"; tw: "cz.tw"; tx: "cz.tx"; ty: "cz.ty"; tz: "cz.tz"; ua: "cz.ua"; ub: "cz.ub"; uc: "cz.uc"; ud: "cz.ud"; ue: "cz.ue"; uf: "cz.uf"; ug: "cz.ug"; uh: "cz.uh"; ui: "cz.ui"; uj: "cz.uj"; uk: "cz.uk"; ul: "cz.ul"; um: "cz.um"; un: "cz.un"; uo: "cz.uo"; up: "cz.up"; uq: "cz.uq"; ur: "cz.ur"; us: "cz.us"; ut: "cz.ut"; uu: "cz.uu"; uv: "cz.uv"; uw: "cz.uw"; ux: "cz.ux"; uy: "cz.uy"; uz: "cz.uz"; va: "cz.va"; vb: "cz.vb"; vc: "cz.vc"; vd: "cz.vd"; ve: "cz.ve"; vf: "cz.vf"; vg: "cz.vg"; vh: "cz.vh"; vi: "cz.vi"; vj: "cz.vj"; vk: "cz.vk"; vl: "cz.vl"; vm: "cz.vm"; vn: "cz.vn"; vo: "cz.vo"; vp: "cz.vp"; vq: "cz.vq"; vr: "cz.vr"; vs: "cz.vs"; vt: "cz.vt"; vu: "cz.vu"; vv: "cz.vv"; vw: "cz.vw"; vx: "cz.vx"; vy: "cz.vy"; vz: "cz.vz"; wa: "cz.wa"; wb: "cz.wb"; wc: "cz.wc"; wd: "cz.wd"; we: "cz.we"; wf: "cz.wf"; wg: "cz.wg"; wh: "cz.wh"; wi: "cz.wi"; wj: "cz.wj"; wk: "cz.wk"; wl: "cz.wl"; wm: "cz.wm"; wn: "cz.wn"; wo: "cz.wo"; wp: "cz.wp"; wq: "cz.wq"; wr: "cz.wr"; ws: "cz.ws"; wt: "cz.wt"; wu: "cz.wu"; wv: "cz.wv"; ww: "cz.ww"; wx: "cz.wx"; wy: "cz.wy"; wz: "cz.wz"; xa: "cz.xa"; xb: "cz.xb"; xc: "cz.xc"; xd: "cz.xd"; xe: "cz.xe"; xf: "cz.xf"; xg: "cz.xg"; xh: "cz.xh"; xi: "cz.xi"; xj: "cz.xj"; xk: "cz.xk"; xl: "cz.xl"; xm: "cz.xm"; xn: "cz.xn"; xo: "cz.xo"; xp: "cz.xp"; xq: "cz.xq"; xr: "cz.xr"; xs: "cz.xs"; xt: "cz.xt"; xu: "cz.xu"; xv: "cz.xv"; xw: "cz.xw"; xx: "cz.xx"; xy: "cz.xy"; xz: "cz.xz"; ya: "cz.ya"; yb: "cz.yb"; yc: "cz.yc"; yd: "cz.yd"; ye: "cz.ye"; yf: "cz.yf"; yg: "cz.yg"; yh: "cz.yh"; yi: "cz.yi"; yj: "cz.yj"; yk: "cz.yk"; yl: "cz.yl"; ym: "cz.ym"; yn: "cz.yn"; yo: "cz.yo"; yp: "cz.yp"; yq: "cz.yq"; yr: "cz.yr"; ys: "cz.ys"; yt: "cz.yt"; yu: "cz.yu"; yv: "cz.yv"; yw: "cz.yw"; yx: "cz.yx"; yy: "cz.yy"; yz: "cz.yz"; za: "cz.za"; zb: "cz.zb"; zc: "cz.zc"; zd: "cz.zd"; ze: "cz.ze"; zf: "cz.zf"; zg: "cz.zg"; zh: "cz.zh"; zi: "cz.zi"; zj: "cz.zj"; zk: "cz.zk"; zl: "cz.zl"; zm: "cz.zm"; zn: "cz.zn"; zo: "cz.zo"; zp: "cz.zp"; zq: "cz.zq"; zr: "cz.zr"; zs: "cz.zs"; zt: "cz.zt"; zu: "cz.zu"; zv: "cz.zv"; zw: "cz.zw"; zx: "cz.zx"; zy: "cz.zy"; zz: "cz.zz"; }; da: { aa: "da.aa"; ab: "da.ab"; ac: "da.ac"; ad: "da.ad"; ae: "da.ae"; af: "da.af"; ag: "da.ag"; ah: "da.ah"; ai: "da.ai"; aj: "da.aj"; ak: "da.ak"; al: "da.al"; am: "da.am"; an: "da.an"; ao: "da.ao"; ap: "da.ap"; aq: "da.aq"; ar: "da.ar"; as: "da.as"; at: "da.at"; au: "da.au"; av: "da.av"; aw: "da.aw"; ax: "da.ax"; ay: "da.ay"; az: "da.az"; ba: "da.ba"; bb: "da.bb"; bc: "da.bc"; bd: "da.bd"; be: "da.be"; bf: "da.bf"; bg: "da.bg"; bh: "da.bh"; bi: "da.bi"; bj: "da.bj"; bk: "da.bk"; bl: "da.bl"; bm: "da.bm"; bn: "da.bn"; bo: "da.bo"; bp: "da.bp"; bq: "da.bq"; br: "da.br"; bs: "da.bs"; bt: "da.bt"; bu: "da.bu"; bv: "da.bv"; bw: "da.bw"; bx: "da.bx"; by: "da.by"; bz: "da.bz"; ca: "da.ca"; cb: "da.cb"; cc: "da.cc"; cd: "da.cd"; ce: "da.ce"; cf: "da.cf"; cg: "da.cg"; ch: "da.ch"; ci: "da.ci"; cj: "da.cj"; ck: "da.ck"; cl: "da.cl"; cm: "da.cm"; cn: "da.cn"; co: "da.co"; cp: "da.cp"; cq: "da.cq"; cr: "da.cr"; cs: "da.cs"; ct: "da.ct"; cu: "da.cu"; cv: "da.cv"; cw: "da.cw"; cx: "da.cx"; cy: "da.cy"; cz: "da.cz"; da: "da.da"; db: "da.db"; dc: "da.dc"; dd: "da.dd"; de: "da.de"; df: "da.df"; dg: "da.dg"; dh: "da.dh"; di: "da.di"; dj: "da.dj"; dk: "da.dk"; dl: "da.dl"; dm: "da.dm"; dn: "da.dn"; do: "da.do"; dp: "da.dp"; dq: "da.dq"; dr: "da.dr"; ds: "da.ds"; dt: "da.dt"; du: "da.du"; dv: "da.dv"; dw: "da.dw"; dx: "da.dx"; dy: "da.dy"; dz: "da.dz"; ea: "da.ea"; eb: "da.eb"; ec: "da.ec"; ed: "da.ed"; ee: "da.ee"; ef: "da.ef"; eg: "da.eg"; eh: "da.eh"; ei: "da.ei"; ej: "da.ej"; ek: "da.ek"; el: "da.el"; em: "da.em"; en: "da.en"; eo: "da.eo"; ep: "da.ep"; eq: "da.eq"; er: "da.er"; es: "da.es"; et: "da.et"; eu: "da.eu"; ev: "da.ev"; ew: "da.ew"; ex: "da.ex"; ey: "da.ey"; ez: "da.ez"; fa: "da.fa"; fb: "da.fb"; fc: "da.fc"; fd: "da.fd"; fe: "da.fe"; ff: "da.ff"; fg: "da.fg"; fh: "da.fh"; fi: "da.fi"; fj: "da.fj"; fk: "da.fk"; fl: "da.fl"; fm: "da.fm"; fn: "da.fn"; fo: "da.fo"; fp: "da.fp"; fq: "da.fq"; fr: "da.fr"; fs: "da.fs"; ft: "da.ft"; fu: "da.fu"; fv: "da.fv"; fw: "da.fw"; fx: "da.fx"; fy: "da.fy"; fz: "da.fz"; ga: "da.ga"; gb: "da.gb"; gc: "da.gc"; gd: "da.gd"; ge: "da.ge"; gf: "da.gf"; gg: "da.gg"; gh: "da.gh"; gi: "da.gi"; gj: "da.gj"; gk: "da.gk"; gl: "da.gl"; gm: "da.gm"; gn: "da.gn"; go: "da.go"; gp: "da.gp"; gq: "da.gq"; gr: "da.gr"; gs: "da.gs"; gt: "da.gt"; gu: "da.gu"; gv: "da.gv"; gw: "da.gw"; gx: "da.gx"; gy: "da.gy"; gz: "da.gz"; ha: "da.ha"; hb: "da.hb"; hc: "da.hc"; hd: "da.hd"; he: "da.he"; hf: "da.hf"; hg: "da.hg"; hh: "da.hh"; hi: "da.hi"; hj: "da.hj"; hk: "da.hk"; hl: "da.hl"; hm: "da.hm"; hn: "da.hn"; ho: "da.ho"; hp: "da.hp"; hq: "da.hq"; hr: "da.hr"; hs: "da.hs"; ht: "da.ht"; hu: "da.hu"; hv: "da.hv"; hw: "da.hw"; hx: "da.hx"; hy: "da.hy"; hz: "da.hz"; ia: "da.ia"; ib: "da.ib"; ic: "da.ic"; id: "da.id"; ie: "da.ie"; if: "da.if"; ig: "da.ig"; ih: "da.ih"; ii: "da.ii"; ij: "da.ij"; ik: "da.ik"; il: "da.il"; im: "da.im"; in: "da.in"; io: "da.io"; ip: "da.ip"; iq: "da.iq"; ir: "da.ir"; is: "da.is"; it: "da.it"; iu: "da.iu"; iv: "da.iv"; iw: "da.iw"; ix: "da.ix"; iy: "da.iy"; iz: "da.iz"; ja: "da.ja"; jb: "da.jb"; jc: "da.jc"; jd: "da.jd"; je: "da.je"; jf: "da.jf"; jg: "da.jg"; jh: "da.jh"; ji: "da.ji"; jj: "da.jj"; jk: "da.jk"; jl: "da.jl"; jm: "da.jm"; jn: "da.jn"; jo: "da.jo"; jp: "da.jp"; jq: "da.jq"; jr: "da.jr"; js: "da.js"; jt: "da.jt"; ju: "da.ju"; jv: "da.jv"; jw: "da.jw"; jx: "da.jx"; jy: "da.jy"; jz: "da.jz"; ka: "da.ka"; kb: "da.kb"; kc: "da.kc"; kd: "da.kd"; ke: "da.ke"; kf: "da.kf"; kg: "da.kg"; kh: "da.kh"; ki: "da.ki"; kj: "da.kj"; kk: "da.kk"; kl: "da.kl"; km: "da.km"; kn: "da.kn"; ko: "da.ko"; kp: "da.kp"; kq: "da.kq"; kr: "da.kr"; ks: "da.ks"; kt: "da.kt"; ku: "da.ku"; kv: "da.kv"; kw: "da.kw"; kx: "da.kx"; ky: "da.ky"; kz: "da.kz"; la: "da.la"; lb: "da.lb"; lc: "da.lc"; ld: "da.ld"; le: "da.le"; lf: "da.lf"; lg: "da.lg"; lh: "da.lh"; li: "da.li"; lj: "da.lj"; lk: "da.lk"; ll: "da.ll"; lm: "da.lm"; ln: "da.ln"; lo: "da.lo"; lp: "da.lp"; lq: "da.lq"; lr: "da.lr"; ls: "da.ls"; lt: "da.lt"; lu: "da.lu"; lv: "da.lv"; lw: "da.lw"; lx: "da.lx"; ly: "da.ly"; lz: "da.lz"; ma: "da.ma"; mb: "da.mb"; mc: "da.mc"; md: "da.md"; me: "da.me"; mf: "da.mf"; mg: "da.mg"; mh: "da.mh"; mi: "da.mi"; mj: "da.mj"; mk: "da.mk"; ml: "da.ml"; mm: "da.mm"; mn: "da.mn"; mo: "da.mo"; mp: "da.mp"; mq: "da.mq"; mr: "da.mr"; ms: "da.ms"; mt: "da.mt"; mu: "da.mu"; mv: "da.mv"; mw: "da.mw"; mx: "da.mx"; my: "da.my"; mz: "da.mz"; na: "da.na"; nb: "da.nb"; nc: "da.nc"; nd: "da.nd"; ne: "da.ne"; nf: "da.nf"; ng: "da.ng"; nh: "da.nh"; ni: "da.ni"; nj: "da.nj"; nk: "da.nk"; nl: "da.nl"; nm: "da.nm"; nn: "da.nn"; no: "da.no"; np: "da.np"; nq: "da.nq"; nr: "da.nr"; ns: "da.ns"; nt: "da.nt"; nu: "da.nu"; nv: "da.nv"; nw: "da.nw"; nx: "da.nx"; ny: "da.ny"; nz: "da.nz"; oa: "da.oa"; ob: "da.ob"; oc: "da.oc"; od: "da.od"; oe: "da.oe"; of: "da.of"; og: "da.og"; oh: "da.oh"; oi: "da.oi"; oj: "da.oj"; ok: "da.ok"; ol: "da.ol"; om: "da.om"; on: "da.on"; oo: "da.oo"; op: "da.op"; oq: "da.oq"; or: "da.or"; os: "da.os"; ot: "da.ot"; ou: "da.ou"; ov: "da.ov"; ow: "da.ow"; ox: "da.ox"; oy: "da.oy"; oz: "da.oz"; pa: "da.pa"; pb: "da.pb"; pc: "da.pc"; pd: "da.pd"; pe: "da.pe"; pf: "da.pf"; pg: "da.pg"; ph: "da.ph"; pi: "da.pi"; pj: "da.pj"; pk: "da.pk"; pl: "da.pl"; pm: "da.pm"; pn: "da.pn"; po: "da.po"; pp: "da.pp"; pq: "da.pq"; pr: "da.pr"; ps: "da.ps"; pt: "da.pt"; pu: "da.pu"; pv: "da.pv"; pw: "da.pw"; px: "da.px"; py: "da.py"; pz: "da.pz"; qa: "da.qa"; qb: "da.qb"; qc: "da.qc"; qd: "da.qd"; qe: "da.qe"; qf: "da.qf"; qg: "da.qg"; qh: "da.qh"; qi: "da.qi"; qj: "da.qj"; qk: "da.qk"; ql: "da.ql"; qm: "da.qm"; qn: "da.qn"; qo: "da.qo"; qp: "da.qp"; qq: "da.qq"; qr: "da.qr"; qs: "da.qs"; qt: "da.qt"; qu: "da.qu"; qv: "da.qv"; qw: "da.qw"; qx: "da.qx"; qy: "da.qy"; qz: "da.qz"; ra: "da.ra"; rb: "da.rb"; rc: "da.rc"; rd: "da.rd"; re: "da.re"; rf: "da.rf"; rg: "da.rg"; rh: "da.rh"; ri: "da.ri"; rj: "da.rj"; rk: "da.rk"; rl: "da.rl"; rm: "da.rm"; rn: "da.rn"; ro: "da.ro"; rp: "da.rp"; rq: "da.rq"; rr: "da.rr"; rs: "da.rs"; rt: "da.rt"; ru: "da.ru"; rv: "da.rv"; rw: "da.rw"; rx: "da.rx"; ry: "da.ry"; rz: "da.rz"; sa: "da.sa"; sb: "da.sb"; sc: "da.sc"; sd: "da.sd"; se: "da.se"; sf: "da.sf"; sg: "da.sg"; sh: "da.sh"; si: "da.si"; sj: "da.sj"; sk: "da.sk"; sl: "da.sl"; sm: "da.sm"; sn: "da.sn"; so: "da.so"; sp: "da.sp"; sq: "da.sq"; sr: "da.sr"; ss: "da.ss"; st: "da.st"; su: "da.su"; sv: "da.sv"; sw: "da.sw"; sx: "da.sx"; sy: "da.sy"; sz: "da.sz"; ta: "da.ta"; tb: "da.tb"; tc: "da.tc"; td: "da.td"; te: "da.te"; tf: "da.tf"; tg: "da.tg"; th: "da.th"; ti: "da.ti"; tj: "da.tj"; tk: "da.tk"; tl: "da.tl"; tm: "da.tm"; tn: "da.tn"; to: "da.to"; tp: "da.tp"; tq: "da.tq"; tr: "da.tr"; ts: "da.ts"; tt: "da.tt"; tu: "da.tu"; tv: "da.tv"; tw: "da.tw"; tx: "da.tx"; ty: "da.ty"; tz: "da.tz"; ua: "da.ua"; ub: "da.ub"; uc: "da.uc"; ud: "da.ud"; ue: "da.ue"; uf: "da.uf"; ug: "da.ug"; uh: "da.uh"; ui: "da.ui"; uj: "da.uj"; uk: "da.uk"; ul: "da.ul"; um: "da.um"; un: "da.un"; uo: "da.uo"; up: "da.up"; uq: "da.uq"; ur: "da.ur"; us: "da.us"; ut: "da.ut"; uu: "da.uu"; uv: "da.uv"; uw: "da.uw"; ux: "da.ux"; uy: "da.uy"; uz: "da.uz"; va: "da.va"; vb: "da.vb"; vc: "da.vc"; vd: "da.vd"; ve: "da.ve"; vf: "da.vf"; vg: "da.vg"; vh: "da.vh"; vi: "da.vi"; vj: "da.vj"; vk: "da.vk"; vl: "da.vl"; vm: "da.vm"; vn: "da.vn"; vo: "da.vo"; vp: "da.vp"; vq: "da.vq"; vr: "da.vr"; vs: "da.vs"; vt: "da.vt"; vu: "da.vu"; vv: "da.vv"; vw: "da.vw"; vx: "da.vx"; vy: "da.vy"; vz: "da.vz"; wa: "da.wa"; wb: "da.wb"; wc: "da.wc"; wd: "da.wd"; we: "da.we"; wf: "da.wf"; wg: "da.wg"; wh: "da.wh"; wi: "da.wi"; wj: "da.wj"; wk: "da.wk"; wl: "da.wl"; wm: "da.wm"; wn: "da.wn"; wo: "da.wo"; wp: "da.wp"; wq: "da.wq"; wr: "da.wr"; ws: "da.ws"; wt: "da.wt"; wu: "da.wu"; wv: "da.wv"; ww: "da.ww"; wx: "da.wx"; wy: "da.wy"; wz: "da.wz"; xa: "da.xa"; xb: "da.xb"; xc: "da.xc"; xd: "da.xd"; xe: "da.xe"; xf: "da.xf"; xg: "da.xg"; xh: "da.xh"; xi: "da.xi"; xj: "da.xj"; xk: "da.xk"; xl: "da.xl"; xm: "da.xm"; xn: "da.xn"; xo: "da.xo"; xp: "da.xp"; xq: "da.xq"; xr: "da.xr"; xs: "da.xs"; xt: "da.xt"; xu: "da.xu"; xv: "da.xv"; xw: "da.xw"; xx: "da.xx"; xy: "da.xy"; xz: "da.xz"; ya: "da.ya"; yb: "da.yb"; yc: "da.yc"; yd: "da.yd"; ye: "da.ye"; yf: "da.yf"; yg: "da.yg"; yh: "da.yh"; yi: "da.yi"; yj: "da.yj"; yk: "da.yk"; yl: "da.yl"; ym: "da.ym"; yn: "da.yn"; yo: "da.yo"; yp: "da.yp"; yq: "da.yq"; yr: "da.yr"; ys: "da.ys"; yt: "da.yt"; yu: "da.yu"; yv: "da.yv"; yw: "da.yw"; yx: "da.yx"; yy: "da.yy"; yz: "da.yz"; za: "da.za"; zb: "da.zb"; zc: "da.zc"; zd: "da.zd"; ze: "da.ze"; zf: "da.zf"; zg: "da.zg"; zh: "da.zh"; zi: "da.zi"; zj: "da.zj"; zk: "da.zk"; zl: "da.zl"; zm: "da.zm"; zn: "da.zn"; zo: "da.zo"; zp: "da.zp"; zq: "da.zq"; zr: "da.zr"; zs: "da.zs"; zt: "da.zt"; zu: "da.zu"; zv: "da.zv"; zw: "da.zw"; zx: "da.zx"; zy: "da.zy"; zz: "da.zz"; }; db: { aa: "db.aa"; ab: "db.ab"; ac: "db.ac"; ad: "db.ad"; ae: "db.ae"; af: "db.af"; ag: "db.ag"; ah: "db.ah"; ai: "db.ai"; aj: "db.aj"; ak: "db.ak"; al: "db.al"; am: "db.am"; an: "db.an"; ao: "db.ao"; ap: "db.ap"; aq: "db.aq"; ar: "db.ar"; as: "db.as"; at: "db.at"; au: "db.au"; av: "db.av"; aw: "db.aw"; ax: "db.ax"; ay: "db.ay"; az: "db.az"; ba: "db.ba"; bb: "db.bb"; bc: "db.bc"; bd: "db.bd"; be: "db.be"; bf: "db.bf"; bg: "db.bg"; bh: "db.bh"; bi: "db.bi"; bj: "db.bj"; bk: "db.bk"; bl: "db.bl"; bm: "db.bm"; bn: "db.bn"; bo: "db.bo"; bp: "db.bp"; bq: "db.bq"; br: "db.br"; bs: "db.bs"; bt: "db.bt"; bu: "db.bu"; bv: "db.bv"; bw: "db.bw"; bx: "db.bx"; by: "db.by"; bz: "db.bz"; ca: "db.ca"; cb: "db.cb"; cc: "db.cc"; cd: "db.cd"; ce: "db.ce"; cf: "db.cf"; cg: "db.cg"; ch: "db.ch"; ci: "db.ci"; cj: "db.cj"; ck: "db.ck"; cl: "db.cl"; cm: "db.cm"; cn: "db.cn"; co: "db.co"; cp: "db.cp"; cq: "db.cq"; cr: "db.cr"; cs: "db.cs"; ct: "db.ct"; cu: "db.cu"; cv: "db.cv"; cw: "db.cw"; cx: "db.cx"; cy: "db.cy"; cz: "db.cz"; da: "db.da"; db: "db.db"; dc: "db.dc"; dd: "db.dd"; de: "db.de"; df: "db.df"; dg: "db.dg"; dh: "db.dh"; di: "db.di"; dj: "db.dj"; dk: "db.dk"; dl: "db.dl"; dm: "db.dm"; dn: "db.dn"; do: "db.do"; dp: "db.dp"; dq: "db.dq"; dr: "db.dr"; ds: "db.ds"; dt: "db.dt"; du: "db.du"; dv: "db.dv"; dw: "db.dw"; dx: "db.dx"; dy: "db.dy"; dz: "db.dz"; ea: "db.ea"; eb: "db.eb"; ec: "db.ec"; ed: "db.ed"; ee: "db.ee"; ef: "db.ef"; eg: "db.eg"; eh: "db.eh"; ei: "db.ei"; ej: "db.ej"; ek: "db.ek"; el: "db.el"; em: "db.em"; en: "db.en"; eo: "db.eo"; ep: "db.ep"; eq: "db.eq"; er: "db.er"; es: "db.es"; et: "db.et"; eu: "db.eu"; ev: "db.ev"; ew: "db.ew"; ex: "db.ex"; ey: "db.ey"; ez: "db.ez"; fa: "db.fa"; fb: "db.fb"; fc: "db.fc"; fd: "db.fd"; fe: "db.fe"; ff: "db.ff"; fg: "db.fg"; fh: "db.fh"; fi: "db.fi"; fj: "db.fj"; fk: "db.fk"; fl: "db.fl"; fm: "db.fm"; fn: "db.fn"; fo: "db.fo"; fp: "db.fp"; fq: "db.fq"; fr: "db.fr"; fs: "db.fs"; ft: "db.ft"; fu: "db.fu"; fv: "db.fv"; fw: "db.fw"; fx: "db.fx"; fy: "db.fy"; fz: "db.fz"; ga: "db.ga"; gb: "db.gb"; gc: "db.gc"; gd: "db.gd"; ge: "db.ge"; gf: "db.gf"; gg: "db.gg"; gh: "db.gh"; gi: "db.gi"; gj: "db.gj"; gk: "db.gk"; gl: "db.gl"; gm: "db.gm"; gn: "db.gn"; go: "db.go"; gp: "db.gp"; gq: "db.gq"; gr: "db.gr"; gs: "db.gs"; gt: "db.gt"; gu: "db.gu"; gv: "db.gv"; gw: "db.gw"; gx: "db.gx"; gy: "db.gy"; gz: "db.gz"; ha: "db.ha"; hb: "db.hb"; hc: "db.hc"; hd: "db.hd"; he: "db.he"; hf: "db.hf"; hg: "db.hg"; hh: "db.hh"; hi: "db.hi"; hj: "db.hj"; hk: "db.hk"; hl: "db.hl"; hm: "db.hm"; hn: "db.hn"; ho: "db.ho"; hp: "db.hp"; hq: "db.hq"; hr: "db.hr"; hs: "db.hs"; ht: "db.ht"; hu: "db.hu"; hv: "db.hv"; hw: "db.hw"; hx: "db.hx"; hy: "db.hy"; hz: "db.hz"; ia: "db.ia"; ib: "db.ib"; ic: "db.ic"; id: "db.id"; ie: "db.ie"; if: "db.if"; ig: "db.ig"; ih: "db.ih"; ii: "db.ii"; ij: "db.ij"; ik: "db.ik"; il: "db.il"; im: "db.im"; in: "db.in"; io: "db.io"; ip: "db.ip"; iq: "db.iq"; ir: "db.ir"; is: "db.is"; it: "db.it"; iu: "db.iu"; iv: "db.iv"; iw: "db.iw"; ix: "db.ix"; iy: "db.iy"; iz: "db.iz"; ja: "db.ja"; jb: "db.jb"; jc: "db.jc"; jd: "db.jd"; je: "db.je"; jf: "db.jf"; jg: "db.jg"; jh: "db.jh"; ji: "db.ji"; jj: "db.jj"; jk: "db.jk"; jl: "db.jl"; jm: "db.jm"; jn: "db.jn"; jo: "db.jo"; jp: "db.jp"; jq: "db.jq"; jr: "db.jr"; js: "db.js"; jt: "db.jt"; ju: "db.ju"; jv: "db.jv"; jw: "db.jw"; jx: "db.jx"; jy: "db.jy"; jz: "db.jz"; ka: "db.ka"; kb: "db.kb"; kc: "db.kc"; kd: "db.kd"; ke: "db.ke"; kf: "db.kf"; kg: "db.kg"; kh: "db.kh"; ki: "db.ki"; kj: "db.kj"; kk: "db.kk"; kl: "db.kl"; km: "db.km"; kn: "db.kn"; ko: "db.ko"; kp: "db.kp"; kq: "db.kq"; kr: "db.kr"; ks: "db.ks"; kt: "db.kt"; ku: "db.ku"; kv: "db.kv"; kw: "db.kw"; kx: "db.kx"; ky: "db.ky"; kz: "db.kz"; la: "db.la"; lb: "db.lb"; lc: "db.lc"; ld: "db.ld"; le: "db.le"; lf: "db.lf"; lg: "db.lg"; lh: "db.lh"; li: "db.li"; lj: "db.lj"; lk: "db.lk"; ll: "db.ll"; lm: "db.lm"; ln: "db.ln"; lo: "db.lo"; lp: "db.lp"; lq: "db.lq"; lr: "db.lr"; ls: "db.ls"; lt: "db.lt"; lu: "db.lu"; lv: "db.lv"; lw: "db.lw"; lx: "db.lx"; ly: "db.ly"; lz: "db.lz"; ma: "db.ma"; mb: "db.mb"; mc: "db.mc"; md: "db.md"; me: "db.me"; mf: "db.mf"; mg: "db.mg"; mh: "db.mh"; mi: "db.mi"; mj: "db.mj"; mk: "db.mk"; ml: "db.ml"; mm: "db.mm"; mn: "db.mn"; mo: "db.mo"; mp: "db.mp"; mq: "db.mq"; mr: "db.mr"; ms: "db.ms"; mt: "db.mt"; mu: "db.mu"; mv: "db.mv"; mw: "db.mw"; mx: "db.mx"; my: "db.my"; mz: "db.mz"; na: "db.na"; nb: "db.nb"; nc: "db.nc"; nd: "db.nd"; ne: "db.ne"; nf: "db.nf"; ng: "db.ng"; nh: "db.nh"; ni: "db.ni"; nj: "db.nj"; nk: "db.nk"; nl: "db.nl"; nm: "db.nm"; nn: "db.nn"; no: "db.no"; np: "db.np"; nq: "db.nq"; nr: "db.nr"; ns: "db.ns"; nt: "db.nt"; nu: "db.nu"; nv: "db.nv"; nw: "db.nw"; nx: "db.nx"; ny: "db.ny"; nz: "db.nz"; oa: "db.oa"; ob: "db.ob"; oc: "db.oc"; od: "db.od"; oe: "db.oe"; of: "db.of"; og: "db.og"; oh: "db.oh"; oi: "db.oi"; oj: "db.oj"; ok: "db.ok"; ol: "db.ol"; om: "db.om"; on: "db.on"; oo: "db.oo"; op: "db.op"; oq: "db.oq"; or: "db.or"; os: "db.os"; ot: "db.ot"; ou: "db.ou"; ov: "db.ov"; ow: "db.ow"; ox: "db.ox"; oy: "db.oy"; oz: "db.oz"; pa: "db.pa"; pb: "db.pb"; pc: "db.pc"; pd: "db.pd"; pe: "db.pe"; pf: "db.pf"; pg: "db.pg"; ph: "db.ph"; pi: "db.pi"; pj: "db.pj"; pk: "db.pk"; pl: "db.pl"; pm: "db.pm"; pn: "db.pn"; po: "db.po"; pp: "db.pp"; pq: "db.pq"; pr: "db.pr"; ps: "db.ps"; pt: "db.pt"; pu: "db.pu"; pv: "db.pv"; pw: "db.pw"; px: "db.px"; py: "db.py"; pz: "db.pz"; qa: "db.qa"; qb: "db.qb"; qc: "db.qc"; qd: "db.qd"; qe: "db.qe"; qf: "db.qf"; qg: "db.qg"; qh: "db.qh"; qi: "db.qi"; qj: "db.qj"; qk: "db.qk"; ql: "db.ql"; qm: "db.qm"; qn: "db.qn"; qo: "db.qo"; qp: "db.qp"; qq: "db.qq"; qr: "db.qr"; qs: "db.qs"; qt: "db.qt"; qu: "db.qu"; qv: "db.qv"; qw: "db.qw"; qx: "db.qx"; qy: "db.qy"; qz: "db.qz"; ra: "db.ra"; rb: "db.rb"; rc: "db.rc"; rd: "db.rd"; re: "db.re"; rf: "db.rf"; rg: "db.rg"; rh: "db.rh"; ri: "db.ri"; rj: "db.rj"; rk: "db.rk"; rl: "db.rl"; rm: "db.rm"; rn: "db.rn"; ro: "db.ro"; rp: "db.rp"; rq: "db.rq"; rr: "db.rr"; rs: "db.rs"; rt: "db.rt"; ru: "db.ru"; rv: "db.rv"; rw: "db.rw"; rx: "db.rx"; ry: "db.ry"; rz: "db.rz"; sa: "db.sa"; sb: "db.sb"; sc: "db.sc"; sd: "db.sd"; se: "db.se"; sf: "db.sf"; sg: "db.sg"; sh: "db.sh"; si: "db.si"; sj: "db.sj"; sk: "db.sk"; sl: "db.sl"; sm: "db.sm"; sn: "db.sn"; so: "db.so"; sp: "db.sp"; sq: "db.sq"; sr: "db.sr"; ss: "db.ss"; st: "db.st"; su: "db.su"; sv: "db.sv"; sw: "db.sw"; sx: "db.sx"; sy: "db.sy"; sz: "db.sz"; ta: "db.ta"; tb: "db.tb"; tc: "db.tc"; td: "db.td"; te: "db.te"; tf: "db.tf"; tg: "db.tg"; th: "db.th"; ti: "db.ti"; tj: "db.tj"; tk: "db.tk"; tl: "db.tl"; tm: "db.tm"; tn: "db.tn"; to: "db.to"; tp: "db.tp"; tq: "db.tq"; tr: "db.tr"; ts: "db.ts"; tt: "db.tt"; tu: "db.tu"; tv: "db.tv"; tw: "db.tw"; tx: "db.tx"; ty: "db.ty"; tz: "db.tz"; ua: "db.ua"; ub: "db.ub"; uc: "db.uc"; ud: "db.ud"; ue: "db.ue"; uf: "db.uf"; ug: "db.ug"; uh: "db.uh"; ui: "db.ui"; uj: "db.uj"; uk: "db.uk"; ul: "db.ul"; um: "db.um"; un: "db.un"; uo: "db.uo"; up: "db.up"; uq: "db.uq"; ur: "db.ur"; us: "db.us"; ut: "db.ut"; uu: "db.uu"; uv: "db.uv"; uw: "db.uw"; ux: "db.ux"; uy: "db.uy"; uz: "db.uz"; va: "db.va"; vb: "db.vb"; vc: "db.vc"; vd: "db.vd"; ve: "db.ve"; vf: "db.vf"; vg: "db.vg"; vh: "db.vh"; vi: "db.vi"; vj: "db.vj"; vk: "db.vk"; vl: "db.vl"; vm: "db.vm"; vn: "db.vn"; vo: "db.vo"; vp: "db.vp"; vq: "db.vq"; vr: "db.vr"; vs: "db.vs"; vt: "db.vt"; vu: "db.vu"; vv: "db.vv"; vw: "db.vw"; vx: "db.vx"; vy: "db.vy"; vz: "db.vz"; wa: "db.wa"; wb: "db.wb"; wc: "db.wc"; wd: "db.wd"; we: "db.we"; wf: "db.wf"; wg: "db.wg"; wh: "db.wh"; wi: "db.wi"; wj: "db.wj"; wk: "db.wk"; wl: "db.wl"; wm: "db.wm"; wn: "db.wn"; wo: "db.wo"; wp: "db.wp"; wq: "db.wq"; wr: "db.wr"; ws: "db.ws"; wt: "db.wt"; wu: "db.wu"; wv: "db.wv"; ww: "db.ww"; wx: "db.wx"; wy: "db.wy"; wz: "db.wz"; xa: "db.xa"; xb: "db.xb"; xc: "db.xc"; xd: "db.xd"; xe: "db.xe"; xf: "db.xf"; xg: "db.xg"; xh: "db.xh"; xi: "db.xi"; xj: "db.xj"; xk: "db.xk"; xl: "db.xl"; xm: "db.xm"; xn: "db.xn"; xo: "db.xo"; xp: "db.xp"; xq: "db.xq"; xr: "db.xr"; xs: "db.xs"; xt: "db.xt"; xu: "db.xu"; xv: "db.xv"; xw: "db.xw"; xx: "db.xx"; xy: "db.xy"; xz: "db.xz"; ya: "db.ya"; yb: "db.yb"; yc: "db.yc"; yd: "db.yd"; ye: "db.ye"; yf: "db.yf"; yg: "db.yg"; yh: "db.yh"; yi: "db.yi"; yj: "db.yj"; yk: "db.yk"; yl: "db.yl"; ym: "db.ym"; yn: "db.yn"; yo: "db.yo"; yp: "db.yp"; yq: "db.yq"; yr: "db.yr"; ys: "db.ys"; yt: "db.yt"; yu: "db.yu"; yv: "db.yv"; yw: "db.yw"; yx: "db.yx"; yy: "db.yy"; yz: "db.yz"; za: "db.za"; zb: "db.zb"; zc: "db.zc"; zd: "db.zd"; ze: "db.ze"; zf: "db.zf"; zg: "db.zg"; zh: "db.zh"; zi: "db.zi"; zj: "db.zj"; zk: "db.zk"; zl: "db.zl"; zm: "db.zm"; zn: "db.zn"; zo: "db.zo"; zp: "db.zp"; zq: "db.zq"; zr: "db.zr"; zs: "db.zs"; zt: "db.zt"; zu: "db.zu"; zv: "db.zv"; zw: "db.zw"; zx: "db.zx"; zy: "db.zy"; zz: "db.zz"; }; dc: { aa: "dc.aa"; ab: "dc.ab"; ac: "dc.ac"; ad: "dc.ad"; ae: "dc.ae"; af: "dc.af"; ag: "dc.ag"; ah: "dc.ah"; ai: "dc.ai"; aj: "dc.aj"; ak: "dc.ak"; al: "dc.al"; am: "dc.am"; an: "dc.an"; ao: "dc.ao"; ap: "dc.ap"; aq: "dc.aq"; ar: "dc.ar"; as: "dc.as"; at: "dc.at"; au: "dc.au"; av: "dc.av"; aw: "dc.aw"; ax: "dc.ax"; ay: "dc.ay"; az: "dc.az"; ba: "dc.ba"; bb: "dc.bb"; bc: "dc.bc"; bd: "dc.bd"; be: "dc.be"; bf: "dc.bf"; bg: "dc.bg"; bh: "dc.bh"; bi: "dc.bi"; bj: "dc.bj"; bk: "dc.bk"; bl: "dc.bl"; bm: "dc.bm"; bn: "dc.bn"; bo: "dc.bo"; bp: "dc.bp"; bq: "dc.bq"; br: "dc.br"; bs: "dc.bs"; bt: "dc.bt"; bu: "dc.bu"; bv: "dc.bv"; bw: "dc.bw"; bx: "dc.bx"; by: "dc.by"; bz: "dc.bz"; ca: "dc.ca"; cb: "dc.cb"; cc: "dc.cc"; cd: "dc.cd"; ce: "dc.ce"; cf: "dc.cf"; cg: "dc.cg"; ch: "dc.ch"; ci: "dc.ci"; cj: "dc.cj"; ck: "dc.ck"; cl: "dc.cl"; cm: "dc.cm"; cn: "dc.cn"; co: "dc.co"; cp: "dc.cp"; cq: "dc.cq"; cr: "dc.cr"; cs: "dc.cs"; ct: "dc.ct"; cu: "dc.cu"; cv: "dc.cv"; cw: "dc.cw"; cx: "dc.cx"; cy: "dc.cy"; cz: "dc.cz"; da: "dc.da"; db: "dc.db"; dc: "dc.dc"; dd: "dc.dd"; de: "dc.de"; df: "dc.df"; dg: "dc.dg"; dh: "dc.dh"; di: "dc.di"; dj: "dc.dj"; dk: "dc.dk"; dl: "dc.dl"; dm: "dc.dm"; dn: "dc.dn"; do: "dc.do"; dp: "dc.dp"; dq: "dc.dq"; dr: "dc.dr"; ds: "dc.ds"; dt: "dc.dt"; du: "dc.du"; dv: "dc.dv"; dw: "dc.dw"; dx: "dc.dx"; dy: "dc.dy"; dz: "dc.dz"; ea: "dc.ea"; eb: "dc.eb"; ec: "dc.ec"; ed: "dc.ed"; ee: "dc.ee"; ef: "dc.ef"; eg: "dc.eg"; eh: "dc.eh"; ei: "dc.ei"; ej: "dc.ej"; ek: "dc.ek"; el: "dc.el"; em: "dc.em"; en: "dc.en"; eo: "dc.eo"; ep: "dc.ep"; eq: "dc.eq"; er: "dc.er"; es: "dc.es"; et: "dc.et"; eu: "dc.eu"; ev: "dc.ev"; ew: "dc.ew"; ex: "dc.ex"; ey: "dc.ey"; ez: "dc.ez"; fa: "dc.fa"; fb: "dc.fb"; fc: "dc.fc"; fd: "dc.fd"; fe: "dc.fe"; ff: "dc.ff"; fg: "dc.fg"; fh: "dc.fh"; fi: "dc.fi"; fj: "dc.fj"; fk: "dc.fk"; fl: "dc.fl"; fm: "dc.fm"; fn: "dc.fn"; fo: "dc.fo"; fp: "dc.fp"; fq: "dc.fq"; fr: "dc.fr"; fs: "dc.fs"; ft: "dc.ft"; fu: "dc.fu"; fv: "dc.fv"; fw: "dc.fw"; fx: "dc.fx"; fy: "dc.fy"; fz: "dc.fz"; ga: "dc.ga"; gb: "dc.gb"; gc: "dc.gc"; gd: "dc.gd"; ge: "dc.ge"; gf: "dc.gf"; gg: "dc.gg"; gh: "dc.gh"; gi: "dc.gi"; gj: "dc.gj"; gk: "dc.gk"; gl: "dc.gl"; gm: "dc.gm"; gn: "dc.gn"; go: "dc.go"; gp: "dc.gp"; gq: "dc.gq"; gr: "dc.gr"; gs: "dc.gs"; gt: "dc.gt"; gu: "dc.gu"; gv: "dc.gv"; gw: "dc.gw"; gx: "dc.gx"; gy: "dc.gy"; gz: "dc.gz"; ha: "dc.ha"; hb: "dc.hb"; hc: "dc.hc"; hd: "dc.hd"; he: "dc.he"; hf: "dc.hf"; hg: "dc.hg"; hh: "dc.hh"; hi: "dc.hi"; hj: "dc.hj"; hk: "dc.hk"; hl: "dc.hl"; hm: "dc.hm"; hn: "dc.hn"; ho: "dc.ho"; hp: "dc.hp"; hq: "dc.hq"; hr: "dc.hr"; hs: "dc.hs"; ht: "dc.ht"; hu: "dc.hu"; hv: "dc.hv"; hw: "dc.hw"; hx: "dc.hx"; hy: "dc.hy"; hz: "dc.hz"; ia: "dc.ia"; ib: "dc.ib"; ic: "dc.ic"; id: "dc.id"; ie: "dc.ie"; if: "dc.if"; ig: "dc.ig"; ih: "dc.ih"; ii: "dc.ii"; ij: "dc.ij"; ik: "dc.ik"; il: "dc.il"; im: "dc.im"; in: "dc.in"; io: "dc.io"; ip: "dc.ip"; iq: "dc.iq"; ir: "dc.ir"; is: "dc.is"; it: "dc.it"; iu: "dc.iu"; iv: "dc.iv"; iw: "dc.iw"; ix: "dc.ix"; iy: "dc.iy"; iz: "dc.iz"; ja: "dc.ja"; jb: "dc.jb"; jc: "dc.jc"; jd: "dc.jd"; je: "dc.je"; jf: "dc.jf"; jg: "dc.jg"; jh: "dc.jh"; ji: "dc.ji"; jj: "dc.jj"; jk: "dc.jk"; jl: "dc.jl"; jm: "dc.jm"; jn: "dc.jn"; jo: "dc.jo"; jp: "dc.jp"; jq: "dc.jq"; jr: "dc.jr"; js: "dc.js"; jt: "dc.jt"; ju: "dc.ju"; jv: "dc.jv"; jw: "dc.jw"; jx: "dc.jx"; jy: "dc.jy"; jz: "dc.jz"; ka: "dc.ka"; kb: "dc.kb"; kc: "dc.kc"; kd: "dc.kd"; ke: "dc.ke"; kf: "dc.kf"; kg: "dc.kg"; kh: "dc.kh"; ki: "dc.ki"; kj: "dc.kj"; kk: "dc.kk"; kl: "dc.kl"; km: "dc.km"; kn: "dc.kn"; ko: "dc.ko"; kp: "dc.kp"; kq: "dc.kq"; kr: "dc.kr"; ks: "dc.ks"; kt: "dc.kt"; ku: "dc.ku"; kv: "dc.kv"; kw: "dc.kw"; kx: "dc.kx"; ky: "dc.ky"; kz: "dc.kz"; la: "dc.la"; lb: "dc.lb"; lc: "dc.lc"; ld: "dc.ld"; le: "dc.le"; lf: "dc.lf"; lg: "dc.lg"; lh: "dc.lh"; li: "dc.li"; lj: "dc.lj"; lk: "dc.lk"; ll: "dc.ll"; lm: "dc.lm"; ln: "dc.ln"; lo: "dc.lo"; lp: "dc.lp"; lq: "dc.lq"; lr: "dc.lr"; ls: "dc.ls"; lt: "dc.lt"; lu: "dc.lu"; lv: "dc.lv"; lw: "dc.lw"; lx: "dc.lx"; ly: "dc.ly"; lz: "dc.lz"; ma: "dc.ma"; mb: "dc.mb"; mc: "dc.mc"; md: "dc.md"; me: "dc.me"; mf: "dc.mf"; mg: "dc.mg"; mh: "dc.mh"; mi: "dc.mi"; mj: "dc.mj"; mk: "dc.mk"; ml: "dc.ml"; mm: "dc.mm"; mn: "dc.mn"; mo: "dc.mo"; mp: "dc.mp"; mq: "dc.mq"; mr: "dc.mr"; ms: "dc.ms"; mt: "dc.mt"; mu: "dc.mu"; mv: "dc.mv"; mw: "dc.mw"; mx: "dc.mx"; my: "dc.my"; mz: "dc.mz"; na: "dc.na"; nb: "dc.nb"; nc: "dc.nc"; nd: "dc.nd"; ne: "dc.ne"; nf: "dc.nf"; ng: "dc.ng"; nh: "dc.nh"; ni: "dc.ni"; nj: "dc.nj"; nk: "dc.nk"; nl: "dc.nl"; nm: "dc.nm"; nn: "dc.nn"; no: "dc.no"; np: "dc.np"; nq: "dc.nq"; nr: "dc.nr"; ns: "dc.ns"; nt: "dc.nt"; nu: "dc.nu"; nv: "dc.nv"; nw: "dc.nw"; nx: "dc.nx"; ny: "dc.ny"; nz: "dc.nz"; oa: "dc.oa"; ob: "dc.ob"; oc: "dc.oc"; od: "dc.od"; oe: "dc.oe"; of: "dc.of"; og: "dc.og"; oh: "dc.oh"; oi: "dc.oi"; oj: "dc.oj"; ok: "dc.ok"; ol: "dc.ol"; om: "dc.om"; on: "dc.on"; oo: "dc.oo"; op: "dc.op"; oq: "dc.oq"; or: "dc.or"; os: "dc.os"; ot: "dc.ot"; ou: "dc.ou"; ov: "dc.ov"; ow: "dc.ow"; ox: "dc.ox"; oy: "dc.oy"; oz: "dc.oz"; pa: "dc.pa"; pb: "dc.pb"; pc: "dc.pc"; pd: "dc.pd"; pe: "dc.pe"; pf: "dc.pf"; pg: "dc.pg"; ph: "dc.ph"; pi: "dc.pi"; pj: "dc.pj"; pk: "dc.pk"; pl: "dc.pl"; pm: "dc.pm"; pn: "dc.pn"; po: "dc.po"; pp: "dc.pp"; pq: "dc.pq"; pr: "dc.pr"; ps: "dc.ps"; pt: "dc.pt"; pu: "dc.pu"; pv: "dc.pv"; pw: "dc.pw"; px: "dc.px"; py: "dc.py"; pz: "dc.pz"; qa: "dc.qa"; qb: "dc.qb"; qc: "dc.qc"; qd: "dc.qd"; qe: "dc.qe"; qf: "dc.qf"; qg: "dc.qg"; qh: "dc.qh"; qi: "dc.qi"; qj: "dc.qj"; qk: "dc.qk"; ql: "dc.ql"; qm: "dc.qm"; qn: "dc.qn"; qo: "dc.qo"; qp: "dc.qp"; qq: "dc.qq"; qr: "dc.qr"; qs: "dc.qs"; qt: "dc.qt"; qu: "dc.qu"; qv: "dc.qv"; qw: "dc.qw"; qx: "dc.qx"; qy: "dc.qy"; qz: "dc.qz"; ra: "dc.ra"; rb: "dc.rb"; rc: "dc.rc"; rd: "dc.rd"; re: "dc.re"; rf: "dc.rf"; rg: "dc.rg"; rh: "dc.rh"; ri: "dc.ri"; rj: "dc.rj"; rk: "dc.rk"; rl: "dc.rl"; rm: "dc.rm"; rn: "dc.rn"; ro: "dc.ro"; rp: "dc.rp"; rq: "dc.rq"; rr: "dc.rr"; rs: "dc.rs"; rt: "dc.rt"; ru: "dc.ru"; rv: "dc.rv"; rw: "dc.rw"; rx: "dc.rx"; ry: "dc.ry"; rz: "dc.rz"; sa: "dc.sa"; sb: "dc.sb"; sc: "dc.sc"; sd: "dc.sd"; se: "dc.se"; sf: "dc.sf"; sg: "dc.sg"; sh: "dc.sh"; si: "dc.si"; sj: "dc.sj"; sk: "dc.sk"; sl: "dc.sl"; sm: "dc.sm"; sn: "dc.sn"; so: "dc.so"; sp: "dc.sp"; sq: "dc.sq"; sr: "dc.sr"; ss: "dc.ss"; st: "dc.st"; su: "dc.su"; sv: "dc.sv"; sw: "dc.sw"; sx: "dc.sx"; sy: "dc.sy"; sz: "dc.sz"; ta: "dc.ta"; tb: "dc.tb"; tc: "dc.tc"; td: "dc.td"; te: "dc.te"; tf: "dc.tf"; tg: "dc.tg"; th: "dc.th"; ti: "dc.ti"; tj: "dc.tj"; tk: "dc.tk"; tl: "dc.tl"; tm: "dc.tm"; tn: "dc.tn"; to: "dc.to"; tp: "dc.tp"; tq: "dc.tq"; tr: "dc.tr"; ts: "dc.ts"; tt: "dc.tt"; tu: "dc.tu"; tv: "dc.tv"; tw: "dc.tw"; tx: "dc.tx"; ty: "dc.ty"; tz: "dc.tz"; ua: "dc.ua"; ub: "dc.ub"; uc: "dc.uc"; ud: "dc.ud"; ue: "dc.ue"; uf: "dc.uf"; ug: "dc.ug"; uh: "dc.uh"; ui: "dc.ui"; uj: "dc.uj"; uk: "dc.uk"; ul: "dc.ul"; um: "dc.um"; un: "dc.un"; uo: "dc.uo"; up: "dc.up"; uq: "dc.uq"; ur: "dc.ur"; us: "dc.us"; ut: "dc.ut"; uu: "dc.uu"; uv: "dc.uv"; uw: "dc.uw"; ux: "dc.ux"; uy: "dc.uy"; uz: "dc.uz"; va: "dc.va"; vb: "dc.vb"; vc: "dc.vc"; vd: "dc.vd"; ve: "dc.ve"; vf: "dc.vf"; vg: "dc.vg"; vh: "dc.vh"; vi: "dc.vi"; vj: "dc.vj"; vk: "dc.vk"; vl: "dc.vl"; vm: "dc.vm"; vn: "dc.vn"; vo: "dc.vo"; vp: "dc.vp"; vq: "dc.vq"; vr: "dc.vr"; vs: "dc.vs"; vt: "dc.vt"; vu: "dc.vu"; vv: "dc.vv"; vw: "dc.vw"; vx: "dc.vx"; vy: "dc.vy"; vz: "dc.vz"; wa: "dc.wa"; wb: "dc.wb"; wc: "dc.wc"; wd: "dc.wd"; we: "dc.we"; wf: "dc.wf"; wg: "dc.wg"; wh: "dc.wh"; wi: "dc.wi"; wj: "dc.wj"; wk: "dc.wk"; wl: "dc.wl"; wm: "dc.wm"; wn: "dc.wn"; wo: "dc.wo"; wp: "dc.wp"; wq: "dc.wq"; wr: "dc.wr"; ws: "dc.ws"; wt: "dc.wt"; wu: "dc.wu"; wv: "dc.wv"; ww: "dc.ww"; wx: "dc.wx"; wy: "dc.wy"; wz: "dc.wz"; xa: "dc.xa"; xb: "dc.xb"; xc: "dc.xc"; xd: "dc.xd"; xe: "dc.xe"; xf: "dc.xf"; xg: "dc.xg"; xh: "dc.xh"; xi: "dc.xi"; xj: "dc.xj"; xk: "dc.xk"; xl: "dc.xl"; xm: "dc.xm"; xn: "dc.xn"; xo: "dc.xo"; xp: "dc.xp"; xq: "dc.xq"; xr: "dc.xr"; xs: "dc.xs"; xt: "dc.xt"; xu: "dc.xu"; xv: "dc.xv"; xw: "dc.xw"; xx: "dc.xx"; xy: "dc.xy"; xz: "dc.xz"; ya: "dc.ya"; yb: "dc.yb"; yc: "dc.yc"; yd: "dc.yd"; ye: "dc.ye"; yf: "dc.yf"; yg: "dc.yg"; yh: "dc.yh"; yi: "dc.yi"; yj: "dc.yj"; yk: "dc.yk"; yl: "dc.yl"; ym: "dc.ym"; yn: "dc.yn"; yo: "dc.yo"; yp: "dc.yp"; yq: "dc.yq"; yr: "dc.yr"; ys: "dc.ys"; yt: "dc.yt"; yu: "dc.yu"; yv: "dc.yv"; yw: "dc.yw"; yx: "dc.yx"; yy: "dc.yy"; yz: "dc.yz"; za: "dc.za"; zb: "dc.zb"; zc: "dc.zc"; zd: "dc.zd"; ze: "dc.ze"; zf: "dc.zf"; zg: "dc.zg"; zh: "dc.zh"; zi: "dc.zi"; zj: "dc.zj"; zk: "dc.zk"; zl: "dc.zl"; zm: "dc.zm"; zn: "dc.zn"; zo: "dc.zo"; zp: "dc.zp"; zq: "dc.zq"; zr: "dc.zr"; zs: "dc.zs"; zt: "dc.zt"; zu: "dc.zu"; zv: "dc.zv"; zw: "dc.zw"; zx: "dc.zx"; zy: "dc.zy"; zz: "dc.zz"; }; dd: { aa: "dd.aa"; ab: "dd.ab"; ac: "dd.ac"; ad: "dd.ad"; ae: "dd.ae"; af: "dd.af"; ag: "dd.ag"; ah: "dd.ah"; ai: "dd.ai"; aj: "dd.aj"; ak: "dd.ak"; al: "dd.al"; am: "dd.am"; an: "dd.an"; ao: "dd.ao"; ap: "dd.ap"; aq: "dd.aq"; ar: "dd.ar"; as: "dd.as"; at: "dd.at"; au: "dd.au"; av: "dd.av"; aw: "dd.aw"; ax: "dd.ax"; ay: "dd.ay"; az: "dd.az"; ba: "dd.ba"; bb: "dd.bb"; bc: "dd.bc"; bd: "dd.bd"; be: "dd.be"; bf: "dd.bf"; bg: "dd.bg"; bh: "dd.bh"; bi: "dd.bi"; bj: "dd.bj"; bk: "dd.bk"; bl: "dd.bl"; bm: "dd.bm"; bn: "dd.bn"; bo: "dd.bo"; bp: "dd.bp"; bq: "dd.bq"; br: "dd.br"; bs: "dd.bs"; bt: "dd.bt"; bu: "dd.bu"; bv: "dd.bv"; bw: "dd.bw"; bx: "dd.bx"; by: "dd.by"; bz: "dd.bz"; ca: "dd.ca"; cb: "dd.cb"; cc: "dd.cc"; cd: "dd.cd"; ce: "dd.ce"; cf: "dd.cf"; cg: "dd.cg"; ch: "dd.ch"; ci: "dd.ci"; cj: "dd.cj"; ck: "dd.ck"; cl: "dd.cl"; cm: "dd.cm"; cn: "dd.cn"; co: "dd.co"; cp: "dd.cp"; cq: "dd.cq"; cr: "dd.cr"; cs: "dd.cs"; ct: "dd.ct"; cu: "dd.cu"; cv: "dd.cv"; cw: "dd.cw"; cx: "dd.cx"; cy: "dd.cy"; cz: "dd.cz"; da: "dd.da"; db: "dd.db"; dc: "dd.dc"; dd: "dd.dd"; de: "dd.de"; df: "dd.df"; dg: "dd.dg"; dh: "dd.dh"; di: "dd.di"; dj: "dd.dj"; dk: "dd.dk"; dl: "dd.dl"; dm: "dd.dm"; dn: "dd.dn"; do: "dd.do"; dp: "dd.dp"; dq: "dd.dq"; dr: "dd.dr"; ds: "dd.ds"; dt: "dd.dt"; du: "dd.du"; dv: "dd.dv"; dw: "dd.dw"; dx: "dd.dx"; dy: "dd.dy"; dz: "dd.dz"; ea: "dd.ea"; eb: "dd.eb"; ec: "dd.ec"; ed: "dd.ed"; ee: "dd.ee"; ef: "dd.ef"; eg: "dd.eg"; eh: "dd.eh"; ei: "dd.ei"; ej: "dd.ej"; ek: "dd.ek"; el: "dd.el"; em: "dd.em"; en: "dd.en"; eo: "dd.eo"; ep: "dd.ep"; eq: "dd.eq"; er: "dd.er"; es: "dd.es"; et: "dd.et"; eu: "dd.eu"; ev: "dd.ev"; ew: "dd.ew"; ex: "dd.ex"; ey: "dd.ey"; ez: "dd.ez"; fa: "dd.fa"; fb: "dd.fb"; fc: "dd.fc"; fd: "dd.fd"; fe: "dd.fe"; ff: "dd.ff"; fg: "dd.fg"; fh: "dd.fh"; fi: "dd.fi"; fj: "dd.fj"; fk: "dd.fk"; fl: "dd.fl"; fm: "dd.fm"; fn: "dd.fn"; fo: "dd.fo"; fp: "dd.fp"; fq: "dd.fq"; fr: "dd.fr"; fs: "dd.fs"; ft: "dd.ft"; fu: "dd.fu"; fv: "dd.fv"; fw: "dd.fw"; fx: "dd.fx"; fy: "dd.fy"; fz: "dd.fz"; ga: "dd.ga"; gb: "dd.gb"; gc: "dd.gc"; gd: "dd.gd"; ge: "dd.ge"; gf: "dd.gf"; gg: "dd.gg"; gh: "dd.gh"; gi: "dd.gi"; gj: "dd.gj"; gk: "dd.gk"; gl: "dd.gl"; gm: "dd.gm"; gn: "dd.gn"; go: "dd.go"; gp: "dd.gp"; gq: "dd.gq"; gr: "dd.gr"; gs: "dd.gs"; gt: "dd.gt"; gu: "dd.gu"; gv: "dd.gv"; gw: "dd.gw"; gx: "dd.gx"; gy: "dd.gy"; gz: "dd.gz"; ha: "dd.ha"; hb: "dd.hb"; hc: "dd.hc"; hd: "dd.hd"; he: "dd.he"; hf: "dd.hf"; hg: "dd.hg"; hh: "dd.hh"; hi: "dd.hi"; hj: "dd.hj"; hk: "dd.hk"; hl: "dd.hl"; hm: "dd.hm"; hn: "dd.hn"; ho: "dd.ho"; hp: "dd.hp"; hq: "dd.hq"; hr: "dd.hr"; hs: "dd.hs"; ht: "dd.ht"; hu: "dd.hu"; hv: "dd.hv"; hw: "dd.hw"; hx: "dd.hx"; hy: "dd.hy"; hz: "dd.hz"; ia: "dd.ia"; ib: "dd.ib"; ic: "dd.ic"; id: "dd.id"; ie: "dd.ie"; if: "dd.if"; ig: "dd.ig"; ih: "dd.ih"; ii: "dd.ii"; ij: "dd.ij"; ik: "dd.ik"; il: "dd.il"; im: "dd.im"; in: "dd.in"; io: "dd.io"; ip: "dd.ip"; iq: "dd.iq"; ir: "dd.ir"; is: "dd.is"; it: "dd.it"; iu: "dd.iu"; iv: "dd.iv"; iw: "dd.iw"; ix: "dd.ix"; iy: "dd.iy"; iz: "dd.iz"; ja: "dd.ja"; jb: "dd.jb"; jc: "dd.jc"; jd: "dd.jd"; je: "dd.je"; jf: "dd.jf"; jg: "dd.jg"; jh: "dd.jh"; ji: "dd.ji"; jj: "dd.jj"; jk: "dd.jk"; jl: "dd.jl"; jm: "dd.jm"; jn: "dd.jn"; jo: "dd.jo"; jp: "dd.jp"; jq: "dd.jq"; jr: "dd.jr"; js: "dd.js"; jt: "dd.jt"; ju: "dd.ju"; jv: "dd.jv"; jw: "dd.jw"; jx: "dd.jx"; jy: "dd.jy"; jz: "dd.jz"; ka: "dd.ka"; kb: "dd.kb"; kc: "dd.kc"; kd: "dd.kd"; ke: "dd.ke"; kf: "dd.kf"; kg: "dd.kg"; kh: "dd.kh"; ki: "dd.ki"; kj: "dd.kj"; kk: "dd.kk"; kl: "dd.kl"; km: "dd.km"; kn: "dd.kn"; ko: "dd.ko"; kp: "dd.kp"; kq: "dd.kq"; kr: "dd.kr"; ks: "dd.ks"; kt: "dd.kt"; ku: "dd.ku"; kv: "dd.kv"; kw: "dd.kw"; kx: "dd.kx"; ky: "dd.ky"; kz: "dd.kz"; la: "dd.la"; lb: "dd.lb"; lc: "dd.lc"; ld: "dd.ld"; le: "dd.le"; lf: "dd.lf"; lg: "dd.lg"; lh: "dd.lh"; li: "dd.li"; lj: "dd.lj"; lk: "dd.lk"; ll: "dd.ll"; lm: "dd.lm"; ln: "dd.ln"; lo: "dd.lo"; lp: "dd.lp"; lq: "dd.lq"; lr: "dd.lr"; ls: "dd.ls"; lt: "dd.lt"; lu: "dd.lu"; lv: "dd.lv"; lw: "dd.lw"; lx: "dd.lx"; ly: "dd.ly"; lz: "dd.lz"; ma: "dd.ma"; mb: "dd.mb"; mc: "dd.mc"; md: "dd.md"; me: "dd.me"; mf: "dd.mf"; mg: "dd.mg"; mh: "dd.mh"; mi: "dd.mi"; mj: "dd.mj"; mk: "dd.mk"; ml: "dd.ml"; mm: "dd.mm"; mn: "dd.mn"; mo: "dd.mo"; mp: "dd.mp"; mq: "dd.mq"; mr: "dd.mr"; ms: "dd.ms"; mt: "dd.mt"; mu: "dd.mu"; mv: "dd.mv"; mw: "dd.mw"; mx: "dd.mx"; my: "dd.my"; mz: "dd.mz"; na: "dd.na"; nb: "dd.nb"; nc: "dd.nc"; nd: "dd.nd"; ne: "dd.ne"; nf: "dd.nf"; ng: "dd.ng"; nh: "dd.nh"; ni: "dd.ni"; nj: "dd.nj"; nk: "dd.nk"; nl: "dd.nl"; nm: "dd.nm"; nn: "dd.nn"; no: "dd.no"; np: "dd.np"; nq: "dd.nq"; nr: "dd.nr"; ns: "dd.ns"; nt: "dd.nt"; nu: "dd.nu"; nv: "dd.nv"; nw: "dd.nw"; nx: "dd.nx"; ny: "dd.ny"; nz: "dd.nz"; oa: "dd.oa"; ob: "dd.ob"; oc: "dd.oc"; od: "dd.od"; oe: "dd.oe"; of: "dd.of"; og: "dd.og"; oh: "dd.oh"; oi: "dd.oi"; oj: "dd.oj"; ok: "dd.ok"; ol: "dd.ol"; om: "dd.om"; on: "dd.on"; oo: "dd.oo"; op: "dd.op"; oq: "dd.oq"; or: "dd.or"; os: "dd.os"; ot: "dd.ot"; ou: "dd.ou"; ov: "dd.ov"; ow: "dd.ow"; ox: "dd.ox"; oy: "dd.oy"; oz: "dd.oz"; pa: "dd.pa"; pb: "dd.pb"; pc: "dd.pc"; pd: "dd.pd"; pe: "dd.pe"; pf: "dd.pf"; pg: "dd.pg"; ph: "dd.ph"; pi: "dd.pi"; pj: "dd.pj"; pk: "dd.pk"; pl: "dd.pl"; pm: "dd.pm"; pn: "dd.pn"; po: "dd.po"; pp: "dd.pp"; pq: "dd.pq"; pr: "dd.pr"; ps: "dd.ps"; pt: "dd.pt"; pu: "dd.pu"; pv: "dd.pv"; pw: "dd.pw"; px: "dd.px"; py: "dd.py"; pz: "dd.pz"; qa: "dd.qa"; qb: "dd.qb"; qc: "dd.qc"; qd: "dd.qd"; qe: "dd.qe"; qf: "dd.qf"; qg: "dd.qg"; qh: "dd.qh"; qi: "dd.qi"; qj: "dd.qj"; qk: "dd.qk"; ql: "dd.ql"; qm: "dd.qm"; qn: "dd.qn"; qo: "dd.qo"; qp: "dd.qp"; qq: "dd.qq"; qr: "dd.qr"; qs: "dd.qs"; qt: "dd.qt"; qu: "dd.qu"; qv: "dd.qv"; qw: "dd.qw"; qx: "dd.qx"; qy: "dd.qy"; qz: "dd.qz"; ra: "dd.ra"; rb: "dd.rb"; rc: "dd.rc"; rd: "dd.rd"; re: "dd.re"; rf: "dd.rf"; rg: "dd.rg"; rh: "dd.rh"; ri: "dd.ri"; rj: "dd.rj"; rk: "dd.rk"; rl: "dd.rl"; rm: "dd.rm"; rn: "dd.rn"; ro: "dd.ro"; rp: "dd.rp"; rq: "dd.rq"; rr: "dd.rr"; rs: "dd.rs"; rt: "dd.rt"; ru: "dd.ru"; rv: "dd.rv"; rw: "dd.rw"; rx: "dd.rx"; ry: "dd.ry"; rz: "dd.rz"; sa: "dd.sa"; sb: "dd.sb"; sc: "dd.sc"; sd: "dd.sd"; se: "dd.se"; sf: "dd.sf"; sg: "dd.sg"; sh: "dd.sh"; si: "dd.si"; sj: "dd.sj"; sk: "dd.sk"; sl: "dd.sl"; sm: "dd.sm"; sn: "dd.sn"; so: "dd.so"; sp: "dd.sp"; sq: "dd.sq"; sr: "dd.sr"; ss: "dd.ss"; st: "dd.st"; su: "dd.su"; sv: "dd.sv"; sw: "dd.sw"; sx: "dd.sx"; sy: "dd.sy"; sz: "dd.sz"; ta: "dd.ta"; tb: "dd.tb"; tc: "dd.tc"; td: "dd.td"; te: "dd.te"; tf: "dd.tf"; tg: "dd.tg"; th: "dd.th"; ti: "dd.ti"; tj: "dd.tj"; tk: "dd.tk"; tl: "dd.tl"; tm: "dd.tm"; tn: "dd.tn"; to: "dd.to"; tp: "dd.tp"; tq: "dd.tq"; tr: "dd.tr"; ts: "dd.ts"; tt: "dd.tt"; tu: "dd.tu"; tv: "dd.tv"; tw: "dd.tw"; tx: "dd.tx"; ty: "dd.ty"; tz: "dd.tz"; ua: "dd.ua"; ub: "dd.ub"; uc: "dd.uc"; ud: "dd.ud"; ue: "dd.ue"; uf: "dd.uf"; ug: "dd.ug"; uh: "dd.uh"; ui: "dd.ui"; uj: "dd.uj"; uk: "dd.uk"; ul: "dd.ul"; um: "dd.um"; un: "dd.un"; uo: "dd.uo"; up: "dd.up"; uq: "dd.uq"; ur: "dd.ur"; us: "dd.us"; ut: "dd.ut"; uu: "dd.uu"; uv: "dd.uv"; uw: "dd.uw"; ux: "dd.ux"; uy: "dd.uy"; uz: "dd.uz"; va: "dd.va"; vb: "dd.vb"; vc: "dd.vc"; vd: "dd.vd"; ve: "dd.ve"; vf: "dd.vf"; vg: "dd.vg"; vh: "dd.vh"; vi: "dd.vi"; vj: "dd.vj"; vk: "dd.vk"; vl: "dd.vl"; vm: "dd.vm"; vn: "dd.vn"; vo: "dd.vo"; vp: "dd.vp"; vq: "dd.vq"; vr: "dd.vr"; vs: "dd.vs"; vt: "dd.vt"; vu: "dd.vu"; vv: "dd.vv"; vw: "dd.vw"; vx: "dd.vx"; vy: "dd.vy"; vz: "dd.vz"; wa: "dd.wa"; wb: "dd.wb"; wc: "dd.wc"; wd: "dd.wd"; we: "dd.we"; wf: "dd.wf"; wg: "dd.wg"; wh: "dd.wh"; wi: "dd.wi"; wj: "dd.wj"; wk: "dd.wk"; wl: "dd.wl"; wm: "dd.wm"; wn: "dd.wn"; wo: "dd.wo"; wp: "dd.wp"; wq: "dd.wq"; wr: "dd.wr"; ws: "dd.ws"; wt: "dd.wt"; wu: "dd.wu"; wv: "dd.wv"; ww: "dd.ww"; wx: "dd.wx"; wy: "dd.wy"; wz: "dd.wz"; xa: "dd.xa"; xb: "dd.xb"; xc: "dd.xc"; xd: "dd.xd"; xe: "dd.xe"; xf: "dd.xf"; xg: "dd.xg"; xh: "dd.xh"; xi: "dd.xi"; xj: "dd.xj"; xk: "dd.xk"; xl: "dd.xl"; xm: "dd.xm"; xn: "dd.xn"; xo: "dd.xo"; xp: "dd.xp"; xq: "dd.xq"; xr: "dd.xr"; xs: "dd.xs"; xt: "dd.xt"; xu: "dd.xu"; xv: "dd.xv"; xw: "dd.xw"; xx: "dd.xx"; xy: "dd.xy"; xz: "dd.xz"; ya: "dd.ya"; yb: "dd.yb"; yc: "dd.yc"; yd: "dd.yd"; ye: "dd.ye"; yf: "dd.yf"; yg: "dd.yg"; yh: "dd.yh"; yi: "dd.yi"; yj: "dd.yj"; yk: "dd.yk"; yl: "dd.yl"; ym: "dd.ym"; yn: "dd.yn"; yo: "dd.yo"; yp: "dd.yp"; yq: "dd.yq"; yr: "dd.yr"; ys: "dd.ys"; yt: "dd.yt"; yu: "dd.yu"; yv: "dd.yv"; yw: "dd.yw"; yx: "dd.yx"; yy: "dd.yy"; yz: "dd.yz"; za: "dd.za"; zb: "dd.zb"; zc: "dd.zc"; zd: "dd.zd"; ze: "dd.ze"; zf: "dd.zf"; zg: "dd.zg"; zh: "dd.zh"; zi: "dd.zi"; zj: "dd.zj"; zk: "dd.zk"; zl: "dd.zl"; zm: "dd.zm"; zn: "dd.zn"; zo: "dd.zo"; zp: "dd.zp"; zq: "dd.zq"; zr: "dd.zr"; zs: "dd.zs"; zt: "dd.zt"; zu: "dd.zu"; zv: "dd.zv"; zw: "dd.zw"; zx: "dd.zx"; zy: "dd.zy"; zz: "dd.zz"; }; de: { aa: "de.aa"; ab: "de.ab"; ac: "de.ac"; ad: "de.ad"; ae: "de.ae"; af: "de.af"; ag: "de.ag"; ah: "de.ah"; ai: "de.ai"; aj: "de.aj"; ak: "de.ak"; al: "de.al"; am: "de.am"; an: "de.an"; ao: "de.ao"; ap: "de.ap"; aq: "de.aq"; ar: "de.ar"; as: "de.as"; at: "de.at"; au: "de.au"; av: "de.av"; aw: "de.aw"; ax: "de.ax"; ay: "de.ay"; az: "de.az"; ba: "de.ba"; bb: "de.bb"; bc: "de.bc"; bd: "de.bd"; be: "de.be"; bf: "de.bf"; bg: "de.bg"; bh: "de.bh"; bi: "de.bi"; bj: "de.bj"; bk: "de.bk"; bl: "de.bl"; bm: "de.bm"; bn: "de.bn"; bo: "de.bo"; bp: "de.bp"; bq: "de.bq"; br: "de.br"; bs: "de.bs"; bt: "de.bt"; bu: "de.bu"; bv: "de.bv"; bw: "de.bw"; bx: "de.bx"; by: "de.by"; bz: "de.bz"; ca: "de.ca"; cb: "de.cb"; cc: "de.cc"; cd: "de.cd"; ce: "de.ce"; cf: "de.cf"; cg: "de.cg"; ch: "de.ch"; ci: "de.ci"; cj: "de.cj"; ck: "de.ck"; cl: "de.cl"; cm: "de.cm"; cn: "de.cn"; co: "de.co"; cp: "de.cp"; cq: "de.cq"; cr: "de.cr"; cs: "de.cs"; ct: "de.ct"; cu: "de.cu"; cv: "de.cv"; cw: "de.cw"; cx: "de.cx"; cy: "de.cy"; cz: "de.cz"; da: "de.da"; db: "de.db"; dc: "de.dc"; dd: "de.dd"; de: "de.de"; df: "de.df"; dg: "de.dg"; dh: "de.dh"; di: "de.di"; dj: "de.dj"; dk: "de.dk"; dl: "de.dl"; dm: "de.dm"; dn: "de.dn"; do: "de.do"; dp: "de.dp"; dq: "de.dq"; dr: "de.dr"; ds: "de.ds"; dt: "de.dt"; du: "de.du"; dv: "de.dv"; dw: "de.dw"; dx: "de.dx"; dy: "de.dy"; dz: "de.dz"; ea: "de.ea"; eb: "de.eb"; ec: "de.ec"; ed: "de.ed"; ee: "de.ee"; ef: "de.ef"; eg: "de.eg"; eh: "de.eh"; ei: "de.ei"; ej: "de.ej"; ek: "de.ek"; el: "de.el"; em: "de.em"; en: "de.en"; eo: "de.eo"; ep: "de.ep"; eq: "de.eq"; er: "de.er"; es: "de.es"; et: "de.et"; eu: "de.eu"; ev: "de.ev"; ew: "de.ew"; ex: "de.ex"; ey: "de.ey"; ez: "de.ez"; fa: "de.fa"; fb: "de.fb"; fc: "de.fc"; fd: "de.fd"; fe: "de.fe"; ff: "de.ff"; fg: "de.fg"; fh: "de.fh"; fi: "de.fi"; fj: "de.fj"; fk: "de.fk"; fl: "de.fl"; fm: "de.fm"; fn: "de.fn"; fo: "de.fo"; fp: "de.fp"; fq: "de.fq"; fr: "de.fr"; fs: "de.fs"; ft: "de.ft"; fu: "de.fu"; fv: "de.fv"; fw: "de.fw"; fx: "de.fx"; fy: "de.fy"; fz: "de.fz"; ga: "de.ga"; gb: "de.gb"; gc: "de.gc"; gd: "de.gd"; ge: "de.ge"; gf: "de.gf"; gg: "de.gg"; gh: "de.gh"; gi: "de.gi"; gj: "de.gj"; gk: "de.gk"; gl: "de.gl"; gm: "de.gm"; gn: "de.gn"; go: "de.go"; gp: "de.gp"; gq: "de.gq"; gr: "de.gr"; gs: "de.gs"; gt: "de.gt"; gu: "de.gu"; gv: "de.gv"; gw: "de.gw"; gx: "de.gx"; gy: "de.gy"; gz: "de.gz"; ha: "de.ha"; hb: "de.hb"; hc: "de.hc"; hd: "de.hd"; he: "de.he"; hf: "de.hf"; hg: "de.hg"; hh: "de.hh"; hi: "de.hi"; hj: "de.hj"; hk: "de.hk"; hl: "de.hl"; hm: "de.hm"; hn: "de.hn"; ho: "de.ho"; hp: "de.hp"; hq: "de.hq"; hr: "de.hr"; hs: "de.hs"; ht: "de.ht"; hu: "de.hu"; hv: "de.hv"; hw: "de.hw"; hx: "de.hx"; hy: "de.hy"; hz: "de.hz"; ia: "de.ia"; ib: "de.ib"; ic: "de.ic"; id: "de.id"; ie: "de.ie"; if: "de.if"; ig: "de.ig"; ih: "de.ih"; ii: "de.ii"; ij: "de.ij"; ik: "de.ik"; il: "de.il"; im: "de.im"; in: "de.in"; io: "de.io"; ip: "de.ip"; iq: "de.iq"; ir: "de.ir"; is: "de.is"; it: "de.it"; iu: "de.iu"; iv: "de.iv"; iw: "de.iw"; ix: "de.ix"; iy: "de.iy"; iz: "de.iz"; ja: "de.ja"; jb: "de.jb"; jc: "de.jc"; jd: "de.jd"; je: "de.je"; jf: "de.jf"; jg: "de.jg"; jh: "de.jh"; ji: "de.ji"; jj: "de.jj"; jk: "de.jk"; jl: "de.jl"; jm: "de.jm"; jn: "de.jn"; jo: "de.jo"; jp: "de.jp"; jq: "de.jq"; jr: "de.jr"; js: "de.js"; jt: "de.jt"; ju: "de.ju"; jv: "de.jv"; jw: "de.jw"; jx: "de.jx"; jy: "de.jy"; jz: "de.jz"; ka: "de.ka"; kb: "de.kb"; kc: "de.kc"; kd: "de.kd"; ke: "de.ke"; kf: "de.kf"; kg: "de.kg"; kh: "de.kh"; ki: "de.ki"; kj: "de.kj"; kk: "de.kk"; kl: "de.kl"; km: "de.km"; kn: "de.kn"; ko: "de.ko"; kp: "de.kp"; kq: "de.kq"; kr: "de.kr"; ks: "de.ks"; kt: "de.kt"; ku: "de.ku"; kv: "de.kv"; kw: "de.kw"; kx: "de.kx"; ky: "de.ky"; kz: "de.kz"; la: "de.la"; lb: "de.lb"; lc: "de.lc"; ld: "de.ld"; le: "de.le"; lf: "de.lf"; lg: "de.lg"; lh: "de.lh"; li: "de.li"; lj: "de.lj"; lk: "de.lk"; ll: "de.ll"; lm: "de.lm"; ln: "de.ln"; lo: "de.lo"; lp: "de.lp"; lq: "de.lq"; lr: "de.lr"; ls: "de.ls"; lt: "de.lt"; lu: "de.lu"; lv: "de.lv"; lw: "de.lw"; lx: "de.lx"; ly: "de.ly"; lz: "de.lz"; ma: "de.ma"; mb: "de.mb"; mc: "de.mc"; md: "de.md"; me: "de.me"; mf: "de.mf"; mg: "de.mg"; mh: "de.mh"; mi: "de.mi"; mj: "de.mj"; mk: "de.mk"; ml: "de.ml"; mm: "de.mm"; mn: "de.mn"; mo: "de.mo"; mp: "de.mp"; mq: "de.mq"; mr: "de.mr"; ms: "de.ms"; mt: "de.mt"; mu: "de.mu"; mv: "de.mv"; mw: "de.mw"; mx: "de.mx"; my: "de.my"; mz: "de.mz"; na: "de.na"; nb: "de.nb"; nc: "de.nc"; nd: "de.nd"; ne: "de.ne"; nf: "de.nf"; ng: "de.ng"; nh: "de.nh"; ni: "de.ni"; nj: "de.nj"; nk: "de.nk"; nl: "de.nl"; nm: "de.nm"; nn: "de.nn"; no: "de.no"; np: "de.np"; nq: "de.nq"; nr: "de.nr"; ns: "de.ns"; nt: "de.nt"; nu: "de.nu"; nv: "de.nv"; nw: "de.nw"; nx: "de.nx"; ny: "de.ny"; nz: "de.nz"; oa: "de.oa"; ob: "de.ob"; oc: "de.oc"; od: "de.od"; oe: "de.oe"; of: "de.of"; og: "de.og"; oh: "de.oh"; oi: "de.oi"; oj: "de.oj"; ok: "de.ok"; ol: "de.ol"; om: "de.om"; on: "de.on"; oo: "de.oo"; op: "de.op"; oq: "de.oq"; or: "de.or"; os: "de.os"; ot: "de.ot"; ou: "de.ou"; ov: "de.ov"; ow: "de.ow"; ox: "de.ox"; oy: "de.oy"; oz: "de.oz"; pa: "de.pa"; pb: "de.pb"; pc: "de.pc"; pd: "de.pd"; pe: "de.pe"; pf: "de.pf"; pg: "de.pg"; ph: "de.ph"; pi: "de.pi"; pj: "de.pj"; pk: "de.pk"; pl: "de.pl"; pm: "de.pm"; pn: "de.pn"; po: "de.po"; pp: "de.pp"; pq: "de.pq"; pr: "de.pr"; ps: "de.ps"; pt: "de.pt"; pu: "de.pu"; pv: "de.pv"; pw: "de.pw"; px: "de.px"; py: "de.py"; pz: "de.pz"; qa: "de.qa"; qb: "de.qb"; qc: "de.qc"; qd: "de.qd"; qe: "de.qe"; qf: "de.qf"; qg: "de.qg"; qh: "de.qh"; qi: "de.qi"; qj: "de.qj"; qk: "de.qk"; ql: "de.ql"; qm: "de.qm"; qn: "de.qn"; qo: "de.qo"; qp: "de.qp"; qq: "de.qq"; qr: "de.qr"; qs: "de.qs"; qt: "de.qt"; qu: "de.qu"; qv: "de.qv"; qw: "de.qw"; qx: "de.qx"; qy: "de.qy"; qz: "de.qz"; ra: "de.ra"; rb: "de.rb"; rc: "de.rc"; rd: "de.rd"; re: "de.re"; rf: "de.rf"; rg: "de.rg"; rh: "de.rh"; ri: "de.ri"; rj: "de.rj"; rk: "de.rk"; rl: "de.rl"; rm: "de.rm"; rn: "de.rn"; ro: "de.ro"; rp: "de.rp"; rq: "de.rq"; rr: "de.rr"; rs: "de.rs"; rt: "de.rt"; ru: "de.ru"; rv: "de.rv"; rw: "de.rw"; rx: "de.rx"; ry: "de.ry"; rz: "de.rz"; sa: "de.sa"; sb: "de.sb"; sc: "de.sc"; sd: "de.sd"; se: "de.se"; sf: "de.sf"; sg: "de.sg"; sh: "de.sh"; si: "de.si"; sj: "de.sj"; sk: "de.sk"; sl: "de.sl"; sm: "de.sm"; sn: "de.sn"; so: "de.so"; sp: "de.sp"; sq: "de.sq"; sr: "de.sr"; ss: "de.ss"; st: "de.st"; su: "de.su"; sv: "de.sv"; sw: "de.sw"; sx: "de.sx"; sy: "de.sy"; sz: "de.sz"; ta: "de.ta"; tb: "de.tb"; tc: "de.tc"; td: "de.td"; te: "de.te"; tf: "de.tf"; tg: "de.tg"; th: "de.th"; ti: "de.ti"; tj: "de.tj"; tk: "de.tk"; tl: "de.tl"; tm: "de.tm"; tn: "de.tn"; to: "de.to"; tp: "de.tp"; tq: "de.tq"; tr: "de.tr"; ts: "de.ts"; tt: "de.tt"; tu: "de.tu"; tv: "de.tv"; tw: "de.tw"; tx: "de.tx"; ty: "de.ty"; tz: "de.tz"; ua: "de.ua"; ub: "de.ub"; uc: "de.uc"; ud: "de.ud"; ue: "de.ue"; uf: "de.uf"; ug: "de.ug"; uh: "de.uh"; ui: "de.ui"; uj: "de.uj"; uk: "de.uk"; ul: "de.ul"; um: "de.um"; un: "de.un"; uo: "de.uo"; up: "de.up"; uq: "de.uq"; ur: "de.ur"; us: "de.us"; ut: "de.ut"; uu: "de.uu"; uv: "de.uv"; uw: "de.uw"; ux: "de.ux"; uy: "de.uy"; uz: "de.uz"; va: "de.va"; vb: "de.vb"; vc: "de.vc"; vd: "de.vd"; ve: "de.ve"; vf: "de.vf"; vg: "de.vg"; vh: "de.vh"; vi: "de.vi"; vj: "de.vj"; vk: "de.vk"; vl: "de.vl"; vm: "de.vm"; vn: "de.vn"; vo: "de.vo"; vp: "de.vp"; vq: "de.vq"; vr: "de.vr"; vs: "de.vs"; vt: "de.vt"; vu: "de.vu"; vv: "de.vv"; vw: "de.vw"; vx: "de.vx"; vy: "de.vy"; vz: "de.vz"; wa: "de.wa"; wb: "de.wb"; wc: "de.wc"; wd: "de.wd"; we: "de.we"; wf: "de.wf"; wg: "de.wg"; wh: "de.wh"; wi: "de.wi"; wj: "de.wj"; wk: "de.wk"; wl: "de.wl"; wm: "de.wm"; wn: "de.wn"; wo: "de.wo"; wp: "de.wp"; wq: "de.wq"; wr: "de.wr"; ws: "de.ws"; wt: "de.wt"; wu: "de.wu"; wv: "de.wv"; ww: "de.ww"; wx: "de.wx"; wy: "de.wy"; wz: "de.wz"; xa: "de.xa"; xb: "de.xb"; xc: "de.xc"; xd: "de.xd"; xe: "de.xe"; xf: "de.xf"; xg: "de.xg"; xh: "de.xh"; xi: "de.xi"; xj: "de.xj"; xk: "de.xk"; xl: "de.xl"; xm: "de.xm"; xn: "de.xn"; xo: "de.xo"; xp: "de.xp"; xq: "de.xq"; xr: "de.xr"; xs: "de.xs"; xt: "de.xt"; xu: "de.xu"; xv: "de.xv"; xw: "de.xw"; xx: "de.xx"; xy: "de.xy"; xz: "de.xz"; ya: "de.ya"; yb: "de.yb"; yc: "de.yc"; yd: "de.yd"; ye: "de.ye"; yf: "de.yf"; yg: "de.yg"; yh: "de.yh"; yi: "de.yi"; yj: "de.yj"; yk: "de.yk"; yl: "de.yl"; ym: "de.ym"; yn: "de.yn"; yo: "de.yo"; yp: "de.yp"; yq: "de.yq"; yr: "de.yr"; ys: "de.ys"; yt: "de.yt"; yu: "de.yu"; yv: "de.yv"; yw: "de.yw"; yx: "de.yx"; yy: "de.yy"; yz: "de.yz"; za: "de.za"; zb: "de.zb"; zc: "de.zc"; zd: "de.zd"; ze: "de.ze"; zf: "de.zf"; zg: "de.zg"; zh: "de.zh"; zi: "de.zi"; zj: "de.zj"; zk: "de.zk"; zl: "de.zl"; zm: "de.zm"; zn: "de.zn"; zo: "de.zo"; zp: "de.zp"; zq: "de.zq"; zr: "de.zr"; zs: "de.zs"; zt: "de.zt"; zu: "de.zu"; zv: "de.zv"; zw: "de.zw"; zx: "de.zx"; zy: "de.zy"; zz: "de.zz"; }; df: { aa: "df.aa"; ab: "df.ab"; ac: "df.ac"; ad: "df.ad"; ae: "df.ae"; af: "df.af"; ag: "df.ag"; ah: "df.ah"; ai: "df.ai"; aj: "df.aj"; ak: "df.ak"; al: "df.al"; am: "df.am"; an: "df.an"; ao: "df.ao"; ap: "df.ap"; aq: "df.aq"; ar: "df.ar"; as: "df.as"; at: "df.at"; au: "df.au"; av: "df.av"; aw: "df.aw"; ax: "df.ax"; ay: "df.ay"; az: "df.az"; ba: "df.ba"; bb: "df.bb"; bc: "df.bc"; bd: "df.bd"; be: "df.be"; bf: "df.bf"; bg: "df.bg"; bh: "df.bh"; bi: "df.bi"; bj: "df.bj"; bk: "df.bk"; bl: "df.bl"; bm: "df.bm"; bn: "df.bn"; bo: "df.bo"; bp: "df.bp"; bq: "df.bq"; br: "df.br"; bs: "df.bs"; bt: "df.bt"; bu: "df.bu"; bv: "df.bv"; bw: "df.bw"; bx: "df.bx"; by: "df.by"; bz: "df.bz"; ca: "df.ca"; cb: "df.cb"; cc: "df.cc"; cd: "df.cd"; ce: "df.ce"; cf: "df.cf"; cg: "df.cg"; ch: "df.ch"; ci: "df.ci"; cj: "df.cj"; ck: "df.ck"; cl: "df.cl"; cm: "df.cm"; cn: "df.cn"; co: "df.co"; cp: "df.cp"; cq: "df.cq"; cr: "df.cr"; cs: "df.cs"; ct: "df.ct"; cu: "df.cu"; cv: "df.cv"; cw: "df.cw"; cx: "df.cx"; cy: "df.cy"; cz: "df.cz"; da: "df.da"; db: "df.db"; dc: "df.dc"; dd: "df.dd"; de: "df.de"; df: "df.df"; dg: "df.dg"; dh: "df.dh"; di: "df.di"; dj: "df.dj"; dk: "df.dk"; dl: "df.dl"; dm: "df.dm"; dn: "df.dn"; do: "df.do"; dp: "df.dp"; dq: "df.dq"; dr: "df.dr"; ds: "df.ds"; dt: "df.dt"; du: "df.du"; dv: "df.dv"; dw: "df.dw"; dx: "df.dx"; dy: "df.dy"; dz: "df.dz"; ea: "df.ea"; eb: "df.eb"; ec: "df.ec"; ed: "df.ed"; ee: "df.ee"; ef: "df.ef"; eg: "df.eg"; eh: "df.eh"; ei: "df.ei"; ej: "df.ej"; ek: "df.ek"; el: "df.el"; em: "df.em"; en: "df.en"; eo: "df.eo"; ep: "df.ep"; eq: "df.eq"; er: "df.er"; es: "df.es"; et: "df.et"; eu: "df.eu"; ev: "df.ev"; ew: "df.ew"; ex: "df.ex"; ey: "df.ey"; ez: "df.ez"; fa: "df.fa"; fb: "df.fb"; fc: "df.fc"; fd: "df.fd"; fe: "df.fe"; ff: "df.ff"; fg: "df.fg"; fh: "df.fh"; fi: "df.fi"; fj: "df.fj"; fk: "df.fk"; fl: "df.fl"; fm: "df.fm"; fn: "df.fn"; fo: "df.fo"; fp: "df.fp"; fq: "df.fq"; fr: "df.fr"; fs: "df.fs"; ft: "df.ft"; fu: "df.fu"; fv: "df.fv"; fw: "df.fw"; fx: "df.fx"; fy: "df.fy"; fz: "df.fz"; ga: "df.ga"; gb: "df.gb"; gc: "df.gc"; gd: "df.gd"; ge: "df.ge"; gf: "df.gf"; gg: "df.gg"; gh: "df.gh"; gi: "df.gi"; gj: "df.gj"; gk: "df.gk"; gl: "df.gl"; gm: "df.gm"; gn: "df.gn"; go: "df.go"; gp: "df.gp"; gq: "df.gq"; gr: "df.gr"; gs: "df.gs"; gt: "df.gt"; gu: "df.gu"; gv: "df.gv"; gw: "df.gw"; gx: "df.gx"; gy: "df.gy"; gz: "df.gz"; ha: "df.ha"; hb: "df.hb"; hc: "df.hc"; hd: "df.hd"; he: "df.he"; hf: "df.hf"; hg: "df.hg"; hh: "df.hh"; hi: "df.hi"; hj: "df.hj"; hk: "df.hk"; hl: "df.hl"; hm: "df.hm"; hn: "df.hn"; ho: "df.ho"; hp: "df.hp"; hq: "df.hq"; hr: "df.hr"; hs: "df.hs"; ht: "df.ht"; hu: "df.hu"; hv: "df.hv"; hw: "df.hw"; hx: "df.hx"; hy: "df.hy"; hz: "df.hz"; ia: "df.ia"; ib: "df.ib"; ic: "df.ic"; id: "df.id"; ie: "df.ie"; if: "df.if"; ig: "df.ig"; ih: "df.ih"; ii: "df.ii"; ij: "df.ij"; ik: "df.ik"; il: "df.il"; im: "df.im"; in: "df.in"; io: "df.io"; ip: "df.ip"; iq: "df.iq"; ir: "df.ir"; is: "df.is"; it: "df.it"; iu: "df.iu"; iv: "df.iv"; iw: "df.iw"; ix: "df.ix"; iy: "df.iy"; iz: "df.iz"; ja: "df.ja"; jb: "df.jb"; jc: "df.jc"; jd: "df.jd"; je: "df.je"; jf: "df.jf"; jg: "df.jg"; jh: "df.jh"; ji: "df.ji"; jj: "df.jj"; jk: "df.jk"; jl: "df.jl"; jm: "df.jm"; jn: "df.jn"; jo: "df.jo"; jp: "df.jp"; jq: "df.jq"; jr: "df.jr"; js: "df.js"; jt: "df.jt"; ju: "df.ju"; jv: "df.jv"; jw: "df.jw"; jx: "df.jx"; jy: "df.jy"; jz: "df.jz"; ka: "df.ka"; kb: "df.kb"; kc: "df.kc"; kd: "df.kd"; ke: "df.ke"; kf: "df.kf"; kg: "df.kg"; kh: "df.kh"; ki: "df.ki"; kj: "df.kj"; kk: "df.kk"; kl: "df.kl"; km: "df.km"; kn: "df.kn"; ko: "df.ko"; kp: "df.kp"; kq: "df.kq"; kr: "df.kr"; ks: "df.ks"; kt: "df.kt"; ku: "df.ku"; kv: "df.kv"; kw: "df.kw"; kx: "df.kx"; ky: "df.ky"; kz: "df.kz"; la: "df.la"; lb: "df.lb"; lc: "df.lc"; ld: "df.ld"; le: "df.le"; lf: "df.lf"; lg: "df.lg"; lh: "df.lh"; li: "df.li"; lj: "df.lj"; lk: "df.lk"; ll: "df.ll"; lm: "df.lm"; ln: "df.ln"; lo: "df.lo"; lp: "df.lp"; lq: "df.lq"; lr: "df.lr"; ls: "df.ls"; lt: "df.lt"; lu: "df.lu"; lv: "df.lv"; lw: "df.lw"; lx: "df.lx"; ly: "df.ly"; lz: "df.lz"; ma: "df.ma"; mb: "df.mb"; mc: "df.mc"; md: "df.md"; me: "df.me"; mf: "df.mf"; mg: "df.mg"; mh: "df.mh"; mi: "df.mi"; mj: "df.mj"; mk: "df.mk"; ml: "df.ml"; mm: "df.mm"; mn: "df.mn"; mo: "df.mo"; mp: "df.mp"; mq: "df.mq"; mr: "df.mr"; ms: "df.ms"; mt: "df.mt"; mu: "df.mu"; mv: "df.mv"; mw: "df.mw"; mx: "df.mx"; my: "df.my"; mz: "df.mz"; na: "df.na"; nb: "df.nb"; nc: "df.nc"; nd: "df.nd"; ne: "df.ne"; nf: "df.nf"; ng: "df.ng"; nh: "df.nh"; ni: "df.ni"; nj: "df.nj"; nk: "df.nk"; nl: "df.nl"; nm: "df.nm"; nn: "df.nn"; no: "df.no"; np: "df.np"; nq: "df.nq"; nr: "df.nr"; ns: "df.ns"; nt: "df.nt"; nu: "df.nu"; nv: "df.nv"; nw: "df.nw"; nx: "df.nx"; ny: "df.ny"; nz: "df.nz"; oa: "df.oa"; ob: "df.ob"; oc: "df.oc"; od: "df.od"; oe: "df.oe"; of: "df.of"; og: "df.og"; oh: "df.oh"; oi: "df.oi"; oj: "df.oj"; ok: "df.ok"; ol: "df.ol"; om: "df.om"; on: "df.on"; oo: "df.oo"; op: "df.op"; oq: "df.oq"; or: "df.or"; os: "df.os"; ot: "df.ot"; ou: "df.ou"; ov: "df.ov"; ow: "df.ow"; ox: "df.ox"; oy: "df.oy"; oz: "df.oz"; pa: "df.pa"; pb: "df.pb"; pc: "df.pc"; pd: "df.pd"; pe: "df.pe"; pf: "df.pf"; pg: "df.pg"; ph: "df.ph"; pi: "df.pi"; pj: "df.pj"; pk: "df.pk"; pl: "df.pl"; pm: "df.pm"; pn: "df.pn"; po: "df.po"; pp: "df.pp"; pq: "df.pq"; pr: "df.pr"; ps: "df.ps"; pt: "df.pt"; pu: "df.pu"; pv: "df.pv"; pw: "df.pw"; px: "df.px"; py: "df.py"; pz: "df.pz"; qa: "df.qa"; qb: "df.qb"; qc: "df.qc"; qd: "df.qd"; qe: "df.qe"; qf: "df.qf"; qg: "df.qg"; qh: "df.qh"; qi: "df.qi"; qj: "df.qj"; qk: "df.qk"; ql: "df.ql"; qm: "df.qm"; qn: "df.qn"; qo: "df.qo"; qp: "df.qp"; qq: "df.qq"; qr: "df.qr"; qs: "df.qs"; qt: "df.qt"; qu: "df.qu"; qv: "df.qv"; qw: "df.qw"; qx: "df.qx"; qy: "df.qy"; qz: "df.qz"; ra: "df.ra"; rb: "df.rb"; rc: "df.rc"; rd: "df.rd"; re: "df.re"; rf: "df.rf"; rg: "df.rg"; rh: "df.rh"; ri: "df.ri"; rj: "df.rj"; rk: "df.rk"; rl: "df.rl"; rm: "df.rm"; rn: "df.rn"; ro: "df.ro"; rp: "df.rp"; rq: "df.rq"; rr: "df.rr"; rs: "df.rs"; rt: "df.rt"; ru: "df.ru"; rv: "df.rv"; rw: "df.rw"; rx: "df.rx"; ry: "df.ry"; rz: "df.rz"; sa: "df.sa"; sb: "df.sb"; sc: "df.sc"; sd: "df.sd"; se: "df.se"; sf: "df.sf"; sg: "df.sg"; sh: "df.sh"; si: "df.si"; sj: "df.sj"; sk: "df.sk"; sl: "df.sl"; sm: "df.sm"; sn: "df.sn"; so: "df.so"; sp: "df.sp"; sq: "df.sq"; sr: "df.sr"; ss: "df.ss"; st: "df.st"; su: "df.su"; sv: "df.sv"; sw: "df.sw"; sx: "df.sx"; sy: "df.sy"; sz: "df.sz"; ta: "df.ta"; tb: "df.tb"; tc: "df.tc"; td: "df.td"; te: "df.te"; tf: "df.tf"; tg: "df.tg"; th: "df.th"; ti: "df.ti"; tj: "df.tj"; tk: "df.tk"; tl: "df.tl"; tm: "df.tm"; tn: "df.tn"; to: "df.to"; tp: "df.tp"; tq: "df.tq"; tr: "df.tr"; ts: "df.ts"; tt: "df.tt"; tu: "df.tu"; tv: "df.tv"; tw: "df.tw"; tx: "df.tx"; ty: "df.ty"; tz: "df.tz"; ua: "df.ua"; ub: "df.ub"; uc: "df.uc"; ud: "df.ud"; ue: "df.ue"; uf: "df.uf"; ug: "df.ug"; uh: "df.uh"; ui: "df.ui"; uj: "df.uj"; uk: "df.uk"; ul: "df.ul"; um: "df.um"; un: "df.un"; uo: "df.uo"; up: "df.up"; uq: "df.uq"; ur: "df.ur"; us: "df.us"; ut: "df.ut"; uu: "df.uu"; uv: "df.uv"; uw: "df.uw"; ux: "df.ux"; uy: "df.uy"; uz: "df.uz"; va: "df.va"; vb: "df.vb"; vc: "df.vc"; vd: "df.vd"; ve: "df.ve"; vf: "df.vf"; vg: "df.vg"; vh: "df.vh"; vi: "df.vi"; vj: "df.vj"; vk: "df.vk"; vl: "df.vl"; vm: "df.vm"; vn: "df.vn"; vo: "df.vo"; vp: "df.vp"; vq: "df.vq"; vr: "df.vr"; vs: "df.vs"; vt: "df.vt"; vu: "df.vu"; vv: "df.vv"; vw: "df.vw"; vx: "df.vx"; vy: "df.vy"; vz: "df.vz"; wa: "df.wa"; wb: "df.wb"; wc: "df.wc"; wd: "df.wd"; we: "df.we"; wf: "df.wf"; wg: "df.wg"; wh: "df.wh"; wi: "df.wi"; wj: "df.wj"; wk: "df.wk"; wl: "df.wl"; wm: "df.wm"; wn: "df.wn"; wo: "df.wo"; wp: "df.wp"; wq: "df.wq"; wr: "df.wr"; ws: "df.ws"; wt: "df.wt"; wu: "df.wu"; wv: "df.wv"; ww: "df.ww"; wx: "df.wx"; wy: "df.wy"; wz: "df.wz"; xa: "df.xa"; xb: "df.xb"; xc: "df.xc"; xd: "df.xd"; xe: "df.xe"; xf: "df.xf"; xg: "df.xg"; xh: "df.xh"; xi: "df.xi"; xj: "df.xj"; xk: "df.xk"; xl: "df.xl"; xm: "df.xm"; xn: "df.xn"; xo: "df.xo"; xp: "df.xp"; xq: "df.xq"; xr: "df.xr"; xs: "df.xs"; xt: "df.xt"; xu: "df.xu"; xv: "df.xv"; xw: "df.xw"; xx: "df.xx"; xy: "df.xy"; xz: "df.xz"; ya: "df.ya"; yb: "df.yb"; yc: "df.yc"; yd: "df.yd"; ye: "df.ye"; yf: "df.yf"; yg: "df.yg"; yh: "df.yh"; yi: "df.yi"; yj: "df.yj"; yk: "df.yk"; yl: "df.yl"; ym: "df.ym"; yn: "df.yn"; yo: "df.yo"; yp: "df.yp"; yq: "df.yq"; yr: "df.yr"; ys: "df.ys"; yt: "df.yt"; yu: "df.yu"; yv: "df.yv"; yw: "df.yw"; yx: "df.yx"; yy: "df.yy"; yz: "df.yz"; za: "df.za"; zb: "df.zb"; zc: "df.zc"; zd: "df.zd"; ze: "df.ze"; zf: "df.zf"; zg: "df.zg"; zh: "df.zh"; zi: "df.zi"; zj: "df.zj"; zk: "df.zk"; zl: "df.zl"; zm: "df.zm"; zn: "df.zn"; zo: "df.zo"; zp: "df.zp"; zq: "df.zq"; zr: "df.zr"; zs: "df.zs"; zt: "df.zt"; zu: "df.zu"; zv: "df.zv"; zw: "df.zw"; zx: "df.zx"; zy: "df.zy"; zz: "df.zz"; }; dg: { aa: "dg.aa"; ab: "dg.ab"; ac: "dg.ac"; ad: "dg.ad"; ae: "dg.ae"; af: "dg.af"; ag: "dg.ag"; ah: "dg.ah"; ai: "dg.ai"; aj: "dg.aj"; ak: "dg.ak"; al: "dg.al"; am: "dg.am"; an: "dg.an"; ao: "dg.ao"; ap: "dg.ap"; aq: "dg.aq"; ar: "dg.ar"; as: "dg.as"; at: "dg.at"; au: "dg.au"; av: "dg.av"; aw: "dg.aw"; ax: "dg.ax"; ay: "dg.ay"; az: "dg.az"; ba: "dg.ba"; bb: "dg.bb"; bc: "dg.bc"; bd: "dg.bd"; be: "dg.be"; bf: "dg.bf"; bg: "dg.bg"; bh: "dg.bh"; bi: "dg.bi"; bj: "dg.bj"; bk: "dg.bk"; bl: "dg.bl"; bm: "dg.bm"; bn: "dg.bn"; bo: "dg.bo"; bp: "dg.bp"; bq: "dg.bq"; br: "dg.br"; bs: "dg.bs"; bt: "dg.bt"; bu: "dg.bu"; bv: "dg.bv"; bw: "dg.bw"; bx: "dg.bx"; by: "dg.by"; bz: "dg.bz"; ca: "dg.ca"; cb: "dg.cb"; cc: "dg.cc"; cd: "dg.cd"; ce: "dg.ce"; cf: "dg.cf"; cg: "dg.cg"; ch: "dg.ch"; ci: "dg.ci"; cj: "dg.cj"; ck: "dg.ck"; cl: "dg.cl"; cm: "dg.cm"; cn: "dg.cn"; co: "dg.co"; cp: "dg.cp"; cq: "dg.cq"; cr: "dg.cr"; cs: "dg.cs"; ct: "dg.ct"; cu: "dg.cu"; cv: "dg.cv"; cw: "dg.cw"; cx: "dg.cx"; cy: "dg.cy"; cz: "dg.cz"; da: "dg.da"; db: "dg.db"; dc: "dg.dc"; dd: "dg.dd"; de: "dg.de"; df: "dg.df"; dg: "dg.dg"; dh: "dg.dh"; di: "dg.di"; dj: "dg.dj"; dk: "dg.dk"; dl: "dg.dl"; dm: "dg.dm"; dn: "dg.dn"; do: "dg.do"; dp: "dg.dp"; dq: "dg.dq"; dr: "dg.dr"; ds: "dg.ds"; dt: "dg.dt"; du: "dg.du"; dv: "dg.dv"; dw: "dg.dw"; dx: "dg.dx"; dy: "dg.dy"; dz: "dg.dz"; ea: "dg.ea"; eb: "dg.eb"; ec: "dg.ec"; ed: "dg.ed"; ee: "dg.ee"; ef: "dg.ef"; eg: "dg.eg"; eh: "dg.eh"; ei: "dg.ei"; ej: "dg.ej"; ek: "dg.ek"; el: "dg.el"; em: "dg.em"; en: "dg.en"; eo: "dg.eo"; ep: "dg.ep"; eq: "dg.eq"; er: "dg.er"; es: "dg.es"; et: "dg.et"; eu: "dg.eu"; ev: "dg.ev"; ew: "dg.ew"; ex: "dg.ex"; ey: "dg.ey"; ez: "dg.ez"; fa: "dg.fa"; fb: "dg.fb"; fc: "dg.fc"; fd: "dg.fd"; fe: "dg.fe"; ff: "dg.ff"; fg: "dg.fg"; fh: "dg.fh"; fi: "dg.fi"; fj: "dg.fj"; fk: "dg.fk"; fl: "dg.fl"; fm: "dg.fm"; fn: "dg.fn"; fo: "dg.fo"; fp: "dg.fp"; fq: "dg.fq"; fr: "dg.fr"; fs: "dg.fs"; ft: "dg.ft"; fu: "dg.fu"; fv: "dg.fv"; fw: "dg.fw"; fx: "dg.fx"; fy: "dg.fy"; fz: "dg.fz"; ga: "dg.ga"; gb: "dg.gb"; gc: "dg.gc"; gd: "dg.gd"; ge: "dg.ge"; gf: "dg.gf"; gg: "dg.gg"; gh: "dg.gh"; gi: "dg.gi"; gj: "dg.gj"; gk: "dg.gk"; gl: "dg.gl"; gm: "dg.gm"; gn: "dg.gn"; go: "dg.go"; gp: "dg.gp"; gq: "dg.gq"; gr: "dg.gr"; gs: "dg.gs"; gt: "dg.gt"; gu: "dg.gu"; gv: "dg.gv"; gw: "dg.gw"; gx: "dg.gx"; gy: "dg.gy"; gz: "dg.gz"; ha: "dg.ha"; hb: "dg.hb"; hc: "dg.hc"; hd: "dg.hd"; he: "dg.he"; hf: "dg.hf"; hg: "dg.hg"; hh: "dg.hh"; hi: "dg.hi"; hj: "dg.hj"; hk: "dg.hk"; hl: "dg.hl"; hm: "dg.hm"; hn: "dg.hn"; ho: "dg.ho"; hp: "dg.hp"; hq: "dg.hq"; hr: "dg.hr"; hs: "dg.hs"; ht: "dg.ht"; hu: "dg.hu"; hv: "dg.hv"; hw: "dg.hw"; hx: "dg.hx"; hy: "dg.hy"; hz: "dg.hz"; ia: "dg.ia"; ib: "dg.ib"; ic: "dg.ic"; id: "dg.id"; ie: "dg.ie"; if: "dg.if"; ig: "dg.ig"; ih: "dg.ih"; ii: "dg.ii"; ij: "dg.ij"; ik: "dg.ik"; il: "dg.il"; im: "dg.im"; in: "dg.in"; io: "dg.io"; ip: "dg.ip"; iq: "dg.iq"; ir: "dg.ir"; is: "dg.is"; it: "dg.it"; iu: "dg.iu"; iv: "dg.iv"; iw: "dg.iw"; ix: "dg.ix"; iy: "dg.iy"; iz: "dg.iz"; ja: "dg.ja"; jb: "dg.jb"; jc: "dg.jc"; jd: "dg.jd"; je: "dg.je"; jf: "dg.jf"; jg: "dg.jg"; jh: "dg.jh"; ji: "dg.ji"; jj: "dg.jj"; jk: "dg.jk"; jl: "dg.jl"; jm: "dg.jm"; jn: "dg.jn"; jo: "dg.jo"; jp: "dg.jp"; jq: "dg.jq"; jr: "dg.jr"; js: "dg.js"; jt: "dg.jt"; ju: "dg.ju"; jv: "dg.jv"; jw: "dg.jw"; jx: "dg.jx"; jy: "dg.jy"; jz: "dg.jz"; ka: "dg.ka"; kb: "dg.kb"; kc: "dg.kc"; kd: "dg.kd"; ke: "dg.ke"; kf: "dg.kf"; kg: "dg.kg"; kh: "dg.kh"; ki: "dg.ki"; kj: "dg.kj"; kk: "dg.kk"; kl: "dg.kl"; km: "dg.km"; kn: "dg.kn"; ko: "dg.ko"; kp: "dg.kp"; kq: "dg.kq"; kr: "dg.kr"; ks: "dg.ks"; kt: "dg.kt"; ku: "dg.ku"; kv: "dg.kv"; kw: "dg.kw"; kx: "dg.kx"; ky: "dg.ky"; kz: "dg.kz"; la: "dg.la"; lb: "dg.lb"; lc: "dg.lc"; ld: "dg.ld"; le: "dg.le"; lf: "dg.lf"; lg: "dg.lg"; lh: "dg.lh"; li: "dg.li"; lj: "dg.lj"; lk: "dg.lk"; ll: "dg.ll"; lm: "dg.lm"; ln: "dg.ln"; lo: "dg.lo"; lp: "dg.lp"; lq: "dg.lq"; lr: "dg.lr"; ls: "dg.ls"; lt: "dg.lt"; lu: "dg.lu"; lv: "dg.lv"; lw: "dg.lw"; lx: "dg.lx"; ly: "dg.ly"; lz: "dg.lz"; ma: "dg.ma"; mb: "dg.mb"; mc: "dg.mc"; md: "dg.md"; me: "dg.me"; mf: "dg.mf"; mg: "dg.mg"; mh: "dg.mh"; mi: "dg.mi"; mj: "dg.mj"; mk: "dg.mk"; ml: "dg.ml"; mm: "dg.mm"; mn: "dg.mn"; mo: "dg.mo"; mp: "dg.mp"; mq: "dg.mq"; mr: "dg.mr"; ms: "dg.ms"; mt: "dg.mt"; mu: "dg.mu"; mv: "dg.mv"; mw: "dg.mw"; mx: "dg.mx"; my: "dg.my"; mz: "dg.mz"; na: "dg.na"; nb: "dg.nb"; nc: "dg.nc"; nd: "dg.nd"; ne: "dg.ne"; nf: "dg.nf"; ng: "dg.ng"; nh: "dg.nh"; ni: "dg.ni"; nj: "dg.nj"; nk: "dg.nk"; nl: "dg.nl"; nm: "dg.nm"; nn: "dg.nn"; no: "dg.no"; np: "dg.np"; nq: "dg.nq"; nr: "dg.nr"; ns: "dg.ns"; nt: "dg.nt"; nu: "dg.nu"; nv: "dg.nv"; nw: "dg.nw"; nx: "dg.nx"; ny: "dg.ny"; nz: "dg.nz"; oa: "dg.oa"; ob: "dg.ob"; oc: "dg.oc"; od: "dg.od"; oe: "dg.oe"; of: "dg.of"; og: "dg.og"; oh: "dg.oh"; oi: "dg.oi"; oj: "dg.oj"; ok: "dg.ok"; ol: "dg.ol"; om: "dg.om"; on: "dg.on"; oo: "dg.oo"; op: "dg.op"; oq: "dg.oq"; or: "dg.or"; os: "dg.os"; ot: "dg.ot"; ou: "dg.ou"; ov: "dg.ov"; ow: "dg.ow"; ox: "dg.ox"; oy: "dg.oy"; oz: "dg.oz"; pa: "dg.pa"; pb: "dg.pb"; pc: "dg.pc"; pd: "dg.pd"; pe: "dg.pe"; pf: "dg.pf"; pg: "dg.pg"; ph: "dg.ph"; pi: "dg.pi"; pj: "dg.pj"; pk: "dg.pk"; pl: "dg.pl"; pm: "dg.pm"; pn: "dg.pn"; po: "dg.po"; pp: "dg.pp"; pq: "dg.pq"; pr: "dg.pr"; ps: "dg.ps"; pt: "dg.pt"; pu: "dg.pu"; pv: "dg.pv"; pw: "dg.pw"; px: "dg.px"; py: "dg.py"; pz: "dg.pz"; qa: "dg.qa"; qb: "dg.qb"; qc: "dg.qc"; qd: "dg.qd"; qe: "dg.qe"; qf: "dg.qf"; qg: "dg.qg"; qh: "dg.qh"; qi: "dg.qi"; qj: "dg.qj"; qk: "dg.qk"; ql: "dg.ql"; qm: "dg.qm"; qn: "dg.qn"; qo: "dg.qo"; qp: "dg.qp"; qq: "dg.qq"; qr: "dg.qr"; qs: "dg.qs"; qt: "dg.qt"; qu: "dg.qu"; qv: "dg.qv"; qw: "dg.qw"; qx: "dg.qx"; qy: "dg.qy"; qz: "dg.qz"; ra: "dg.ra"; rb: "dg.rb"; rc: "dg.rc"; rd: "dg.rd"; re: "dg.re"; rf: "dg.rf"; rg: "dg.rg"; rh: "dg.rh"; ri: "dg.ri"; rj: "dg.rj"; rk: "dg.rk"; rl: "dg.rl"; rm: "dg.rm"; rn: "dg.rn"; ro: "dg.ro"; rp: "dg.rp"; rq: "dg.rq"; rr: "dg.rr"; rs: "dg.rs"; rt: "dg.rt"; ru: "dg.ru"; rv: "dg.rv"; rw: "dg.rw"; rx: "dg.rx"; ry: "dg.ry"; rz: "dg.rz"; sa: "dg.sa"; sb: "dg.sb"; sc: "dg.sc"; sd: "dg.sd"; se: "dg.se"; sf: "dg.sf"; sg: "dg.sg"; sh: "dg.sh"; si: "dg.si"; sj: "dg.sj"; sk: "dg.sk"; sl: "dg.sl"; sm: "dg.sm"; sn: "dg.sn"; so: "dg.so"; sp: "dg.sp"; sq: "dg.sq"; sr: "dg.sr"; ss: "dg.ss"; st: "dg.st"; su: "dg.su"; sv: "dg.sv"; sw: "dg.sw"; sx: "dg.sx"; sy: "dg.sy"; sz: "dg.sz"; ta: "dg.ta"; tb: "dg.tb"; tc: "dg.tc"; td: "dg.td"; te: "dg.te"; tf: "dg.tf"; tg: "dg.tg"; th: "dg.th"; ti: "dg.ti"; tj: "dg.tj"; tk: "dg.tk"; tl: "dg.tl"; tm: "dg.tm"; tn: "dg.tn"; to: "dg.to"; tp: "dg.tp"; tq: "dg.tq"; tr: "dg.tr"; ts: "dg.ts"; tt: "dg.tt"; tu: "dg.tu"; tv: "dg.tv"; tw: "dg.tw"; tx: "dg.tx"; ty: "dg.ty"; tz: "dg.tz"; ua: "dg.ua"; ub: "dg.ub"; uc: "dg.uc"; ud: "dg.ud"; ue: "dg.ue"; uf: "dg.uf"; ug: "dg.ug"; uh: "dg.uh"; ui: "dg.ui"; uj: "dg.uj"; uk: "dg.uk"; ul: "dg.ul"; um: "dg.um"; un: "dg.un"; uo: "dg.uo"; up: "dg.up"; uq: "dg.uq"; ur: "dg.ur"; us: "dg.us"; ut: "dg.ut"; uu: "dg.uu"; uv: "dg.uv"; uw: "dg.uw"; ux: "dg.ux"; uy: "dg.uy"; uz: "dg.uz"; va: "dg.va"; vb: "dg.vb"; vc: "dg.vc"; vd: "dg.vd"; ve: "dg.ve"; vf: "dg.vf"; vg: "dg.vg"; vh: "dg.vh"; vi: "dg.vi"; vj: "dg.vj"; vk: "dg.vk"; vl: "dg.vl"; vm: "dg.vm"; vn: "dg.vn"; vo: "dg.vo"; vp: "dg.vp"; vq: "dg.vq"; vr: "dg.vr"; vs: "dg.vs"; vt: "dg.vt"; vu: "dg.vu"; vv: "dg.vv"; vw: "dg.vw"; vx: "dg.vx"; vy: "dg.vy"; vz: "dg.vz"; wa: "dg.wa"; wb: "dg.wb"; wc: "dg.wc"; wd: "dg.wd"; we: "dg.we"; wf: "dg.wf"; wg: "dg.wg"; wh: "dg.wh"; wi: "dg.wi"; wj: "dg.wj"; wk: "dg.wk"; wl: "dg.wl"; wm: "dg.wm"; wn: "dg.wn"; wo: "dg.wo"; wp: "dg.wp"; wq: "dg.wq"; wr: "dg.wr"; ws: "dg.ws"; wt: "dg.wt"; wu: "dg.wu"; wv: "dg.wv"; ww: "dg.ww"; wx: "dg.wx"; wy: "dg.wy"; wz: "dg.wz"; xa: "dg.xa"; xb: "dg.xb"; xc: "dg.xc"; xd: "dg.xd"; xe: "dg.xe"; xf: "dg.xf"; xg: "dg.xg"; xh: "dg.xh"; xi: "dg.xi"; xj: "dg.xj"; xk: "dg.xk"; xl: "dg.xl"; xm: "dg.xm"; xn: "dg.xn"; xo: "dg.xo"; xp: "dg.xp"; xq: "dg.xq"; xr: "dg.xr"; xs: "dg.xs"; xt: "dg.xt"; xu: "dg.xu"; xv: "dg.xv"; xw: "dg.xw"; xx: "dg.xx"; xy: "dg.xy"; xz: "dg.xz"; ya: "dg.ya"; yb: "dg.yb"; yc: "dg.yc"; yd: "dg.yd"; ye: "dg.ye"; yf: "dg.yf"; yg: "dg.yg"; yh: "dg.yh"; yi: "dg.yi"; yj: "dg.yj"; yk: "dg.yk"; yl: "dg.yl"; ym: "dg.ym"; yn: "dg.yn"; yo: "dg.yo"; yp: "dg.yp"; yq: "dg.yq"; yr: "dg.yr"; ys: "dg.ys"; yt: "dg.yt"; yu: "dg.yu"; yv: "dg.yv"; yw: "dg.yw"; yx: "dg.yx"; yy: "dg.yy"; yz: "dg.yz"; za: "dg.za"; zb: "dg.zb"; zc: "dg.zc"; zd: "dg.zd"; ze: "dg.ze"; zf: "dg.zf"; zg: "dg.zg"; zh: "dg.zh"; zi: "dg.zi"; zj: "dg.zj"; zk: "dg.zk"; zl: "dg.zl"; zm: "dg.zm"; zn: "dg.zn"; zo: "dg.zo"; zp: "dg.zp"; zq: "dg.zq"; zr: "dg.zr"; zs: "dg.zs"; zt: "dg.zt"; zu: "dg.zu"; zv: "dg.zv"; zw: "dg.zw"; zx: "dg.zx"; zy: "dg.zy"; zz: "dg.zz"; }; dh: { aa: "dh.aa"; ab: "dh.ab"; ac: "dh.ac"; ad: "dh.ad"; ae: "dh.ae"; af: "dh.af"; ag: "dh.ag"; ah: "dh.ah"; ai: "dh.ai"; aj: "dh.aj"; ak: "dh.ak"; al: "dh.al"; am: "dh.am"; an: "dh.an"; ao: "dh.ao"; ap: "dh.ap"; aq: "dh.aq"; ar: "dh.ar"; as: "dh.as"; at: "dh.at"; au: "dh.au"; av: "dh.av"; aw: "dh.aw"; ax: "dh.ax"; ay: "dh.ay"; az: "dh.az"; ba: "dh.ba"; bb: "dh.bb"; bc: "dh.bc"; bd: "dh.bd"; be: "dh.be"; bf: "dh.bf"; bg: "dh.bg"; bh: "dh.bh"; bi: "dh.bi"; bj: "dh.bj"; bk: "dh.bk"; bl: "dh.bl"; bm: "dh.bm"; bn: "dh.bn"; bo: "dh.bo"; bp: "dh.bp"; bq: "dh.bq"; br: "dh.br"; bs: "dh.bs"; bt: "dh.bt"; bu: "dh.bu"; bv: "dh.bv"; bw: "dh.bw"; bx: "dh.bx"; by: "dh.by"; bz: "dh.bz"; ca: "dh.ca"; cb: "dh.cb"; cc: "dh.cc"; cd: "dh.cd"; ce: "dh.ce"; cf: "dh.cf"; cg: "dh.cg"; ch: "dh.ch"; ci: "dh.ci"; cj: "dh.cj"; ck: "dh.ck"; cl: "dh.cl"; cm: "dh.cm"; cn: "dh.cn"; co: "dh.co"; cp: "dh.cp"; cq: "dh.cq"; cr: "dh.cr"; cs: "dh.cs"; ct: "dh.ct"; cu: "dh.cu"; cv: "dh.cv"; cw: "dh.cw"; cx: "dh.cx"; cy: "dh.cy"; cz: "dh.cz"; da: "dh.da"; db: "dh.db"; dc: "dh.dc"; dd: "dh.dd"; de: "dh.de"; df: "dh.df"; dg: "dh.dg"; dh: "dh.dh"; di: "dh.di"; dj: "dh.dj"; dk: "dh.dk"; dl: "dh.dl"; dm: "dh.dm"; dn: "dh.dn"; do: "dh.do"; dp: "dh.dp"; dq: "dh.dq"; dr: "dh.dr"; ds: "dh.ds"; dt: "dh.dt"; du: "dh.du"; dv: "dh.dv"; dw: "dh.dw"; dx: "dh.dx"; dy: "dh.dy"; dz: "dh.dz"; ea: "dh.ea"; eb: "dh.eb"; ec: "dh.ec"; ed: "dh.ed"; ee: "dh.ee"; ef: "dh.ef"; eg: "dh.eg"; eh: "dh.eh"; ei: "dh.ei"; ej: "dh.ej"; ek: "dh.ek"; el: "dh.el"; em: "dh.em"; en: "dh.en"; eo: "dh.eo"; ep: "dh.ep"; eq: "dh.eq"; er: "dh.er"; es: "dh.es"; et: "dh.et"; eu: "dh.eu"; ev: "dh.ev"; ew: "dh.ew"; ex: "dh.ex"; ey: "dh.ey"; ez: "dh.ez"; fa: "dh.fa"; fb: "dh.fb"; fc: "dh.fc"; fd: "dh.fd"; fe: "dh.fe"; ff: "dh.ff"; fg: "dh.fg"; fh: "dh.fh"; fi: "dh.fi"; fj: "dh.fj"; fk: "dh.fk"; fl: "dh.fl"; fm: "dh.fm"; fn: "dh.fn"; fo: "dh.fo"; fp: "dh.fp"; fq: "dh.fq"; fr: "dh.fr"; fs: "dh.fs"; ft: "dh.ft"; fu: "dh.fu"; fv: "dh.fv"; fw: "dh.fw"; fx: "dh.fx"; fy: "dh.fy"; fz: "dh.fz"; ga: "dh.ga"; gb: "dh.gb"; gc: "dh.gc"; gd: "dh.gd"; ge: "dh.ge"; gf: "dh.gf"; gg: "dh.gg"; gh: "dh.gh"; gi: "dh.gi"; gj: "dh.gj"; gk: "dh.gk"; gl: "dh.gl"; gm: "dh.gm"; gn: "dh.gn"; go: "dh.go"; gp: "dh.gp"; gq: "dh.gq"; gr: "dh.gr"; gs: "dh.gs"; gt: "dh.gt"; gu: "dh.gu"; gv: "dh.gv"; gw: "dh.gw"; gx: "dh.gx"; gy: "dh.gy"; gz: "dh.gz"; ha: "dh.ha"; hb: "dh.hb"; hc: "dh.hc"; hd: "dh.hd"; he: "dh.he"; hf: "dh.hf"; hg: "dh.hg"; hh: "dh.hh"; hi: "dh.hi"; hj: "dh.hj"; hk: "dh.hk"; hl: "dh.hl"; hm: "dh.hm"; hn: "dh.hn"; ho: "dh.ho"; hp: "dh.hp"; hq: "dh.hq"; hr: "dh.hr"; hs: "dh.hs"; ht: "dh.ht"; hu: "dh.hu"; hv: "dh.hv"; hw: "dh.hw"; hx: "dh.hx"; hy: "dh.hy"; hz: "dh.hz"; ia: "dh.ia"; ib: "dh.ib"; ic: "dh.ic"; id: "dh.id"; ie: "dh.ie"; if: "dh.if"; ig: "dh.ig"; ih: "dh.ih"; ii: "dh.ii"; ij: "dh.ij"; ik: "dh.ik"; il: "dh.il"; im: "dh.im"; in: "dh.in"; io: "dh.io"; ip: "dh.ip"; iq: "dh.iq"; ir: "dh.ir"; is: "dh.is"; it: "dh.it"; iu: "dh.iu"; iv: "dh.iv"; iw: "dh.iw"; ix: "dh.ix"; iy: "dh.iy"; iz: "dh.iz"; ja: "dh.ja"; jb: "dh.jb"; jc: "dh.jc"; jd: "dh.jd"; je: "dh.je"; jf: "dh.jf"; jg: "dh.jg"; jh: "dh.jh"; ji: "dh.ji"; jj: "dh.jj"; jk: "dh.jk"; jl: "dh.jl"; jm: "dh.jm"; jn: "dh.jn"; jo: "dh.jo"; jp: "dh.jp"; jq: "dh.jq"; jr: "dh.jr"; js: "dh.js"; jt: "dh.jt"; ju: "dh.ju"; jv: "dh.jv"; jw: "dh.jw"; jx: "dh.jx"; jy: "dh.jy"; jz: "dh.jz"; ka: "dh.ka"; kb: "dh.kb"; kc: "dh.kc"; kd: "dh.kd"; ke: "dh.ke"; kf: "dh.kf"; kg: "dh.kg"; kh: "dh.kh"; ki: "dh.ki"; kj: "dh.kj"; kk: "dh.kk"; kl: "dh.kl"; km: "dh.km"; kn: "dh.kn"; ko: "dh.ko"; kp: "dh.kp"; kq: "dh.kq"; kr: "dh.kr"; ks: "dh.ks"; kt: "dh.kt"; ku: "dh.ku"; kv: "dh.kv"; kw: "dh.kw"; kx: "dh.kx"; ky: "dh.ky"; kz: "dh.kz"; la: "dh.la"; lb: "dh.lb"; lc: "dh.lc"; ld: "dh.ld"; le: "dh.le"; lf: "dh.lf"; lg: "dh.lg"; lh: "dh.lh"; li: "dh.li"; lj: "dh.lj"; lk: "dh.lk"; ll: "dh.ll"; lm: "dh.lm"; ln: "dh.ln"; lo: "dh.lo"; lp: "dh.lp"; lq: "dh.lq"; lr: "dh.lr"; ls: "dh.ls"; lt: "dh.lt"; lu: "dh.lu"; lv: "dh.lv"; lw: "dh.lw"; lx: "dh.lx"; ly: "dh.ly"; lz: "dh.lz"; ma: "dh.ma"; mb: "dh.mb"; mc: "dh.mc"; md: "dh.md"; me: "dh.me"; mf: "dh.mf"; mg: "dh.mg"; mh: "dh.mh"; mi: "dh.mi"; mj: "dh.mj"; mk: "dh.mk"; ml: "dh.ml"; mm: "dh.mm"; mn: "dh.mn"; mo: "dh.mo"; mp: "dh.mp"; mq: "dh.mq"; mr: "dh.mr"; ms: "dh.ms"; mt: "dh.mt"; mu: "dh.mu"; mv: "dh.mv"; mw: "dh.mw"; mx: "dh.mx"; my: "dh.my"; mz: "dh.mz"; na: "dh.na"; nb: "dh.nb"; nc: "dh.nc"; nd: "dh.nd"; ne: "dh.ne"; nf: "dh.nf"; ng: "dh.ng"; nh: "dh.nh"; ni: "dh.ni"; nj: "dh.nj"; nk: "dh.nk"; nl: "dh.nl"; nm: "dh.nm"; nn: "dh.nn"; no: "dh.no"; np: "dh.np"; nq: "dh.nq"; nr: "dh.nr"; ns: "dh.ns"; nt: "dh.nt"; nu: "dh.nu"; nv: "dh.nv"; nw: "dh.nw"; nx: "dh.nx"; ny: "dh.ny"; nz: "dh.nz"; oa: "dh.oa"; ob: "dh.ob"; oc: "dh.oc"; od: "dh.od"; oe: "dh.oe"; of: "dh.of"; og: "dh.og"; oh: "dh.oh"; oi: "dh.oi"; oj: "dh.oj"; ok: "dh.ok"; ol: "dh.ol"; om: "dh.om"; on: "dh.on"; oo: "dh.oo"; op: "dh.op"; oq: "dh.oq"; or: "dh.or"; os: "dh.os"; ot: "dh.ot"; ou: "dh.ou"; ov: "dh.ov"; ow: "dh.ow"; ox: "dh.ox"; oy: "dh.oy"; oz: "dh.oz"; pa: "dh.pa"; pb: "dh.pb"; pc: "dh.pc"; pd: "dh.pd"; pe: "dh.pe"; pf: "dh.pf"; pg: "dh.pg"; ph: "dh.ph"; pi: "dh.pi"; pj: "dh.pj"; pk: "dh.pk"; pl: "dh.pl"; pm: "dh.pm"; pn: "dh.pn"; po: "dh.po"; pp: "dh.pp"; pq: "dh.pq"; pr: "dh.pr"; ps: "dh.ps"; pt: "dh.pt"; pu: "dh.pu"; pv: "dh.pv"; pw: "dh.pw"; px: "dh.px"; py: "dh.py"; pz: "dh.pz"; qa: "dh.qa"; qb: "dh.qb"; qc: "dh.qc"; qd: "dh.qd"; qe: "dh.qe"; qf: "dh.qf"; qg: "dh.qg"; qh: "dh.qh"; qi: "dh.qi"; qj: "dh.qj"; qk: "dh.qk"; ql: "dh.ql"; qm: "dh.qm"; qn: "dh.qn"; qo: "dh.qo"; qp: "dh.qp"; qq: "dh.qq"; qr: "dh.qr"; qs: "dh.qs"; qt: "dh.qt"; qu: "dh.qu"; qv: "dh.qv"; qw: "dh.qw"; qx: "dh.qx"; qy: "dh.qy"; qz: "dh.qz"; ra: "dh.ra"; rb: "dh.rb"; rc: "dh.rc"; rd: "dh.rd"; re: "dh.re"; rf: "dh.rf"; rg: "dh.rg"; rh: "dh.rh"; ri: "dh.ri"; rj: "dh.rj"; rk: "dh.rk"; rl: "dh.rl"; rm: "dh.rm"; rn: "dh.rn"; ro: "dh.ro"; rp: "dh.rp"; rq: "dh.rq"; rr: "dh.rr"; rs: "dh.rs"; rt: "dh.rt"; ru: "dh.ru"; rv: "dh.rv"; rw: "dh.rw"; rx: "dh.rx"; ry: "dh.ry"; rz: "dh.rz"; sa: "dh.sa"; sb: "dh.sb"; sc: "dh.sc"; sd: "dh.sd"; se: "dh.se"; sf: "dh.sf"; sg: "dh.sg"; sh: "dh.sh"; si: "dh.si"; sj: "dh.sj"; sk: "dh.sk"; sl: "dh.sl"; sm: "dh.sm"; sn: "dh.sn"; so: "dh.so"; sp: "dh.sp"; sq: "dh.sq"; sr: "dh.sr"; ss: "dh.ss"; st: "dh.st"; su: "dh.su"; sv: "dh.sv"; sw: "dh.sw"; sx: "dh.sx"; sy: "dh.sy"; sz: "dh.sz"; ta: "dh.ta"; tb: "dh.tb"; tc: "dh.tc"; td: "dh.td"; te: "dh.te"; tf: "dh.tf"; tg: "dh.tg"; th: "dh.th"; ti: "dh.ti"; tj: "dh.tj"; tk: "dh.tk"; tl: "dh.tl"; tm: "dh.tm"; tn: "dh.tn"; to: "dh.to"; tp: "dh.tp"; tq: "dh.tq"; tr: "dh.tr"; ts: "dh.ts"; tt: "dh.tt"; tu: "dh.tu"; tv: "dh.tv"; tw: "dh.tw"; tx: "dh.tx"; ty: "dh.ty"; tz: "dh.tz"; ua: "dh.ua"; ub: "dh.ub"; uc: "dh.uc"; ud: "dh.ud"; ue: "dh.ue"; uf: "dh.uf"; ug: "dh.ug"; uh: "dh.uh"; ui: "dh.ui"; uj: "dh.uj"; uk: "dh.uk"; ul: "dh.ul"; um: "dh.um"; un: "dh.un"; uo: "dh.uo"; up: "dh.up"; uq: "dh.uq"; ur: "dh.ur"; us: "dh.us"; ut: "dh.ut"; uu: "dh.uu"; uv: "dh.uv"; uw: "dh.uw"; ux: "dh.ux"; uy: "dh.uy"; uz: "dh.uz"; va: "dh.va"; vb: "dh.vb"; vc: "dh.vc"; vd: "dh.vd"; ve: "dh.ve"; vf: "dh.vf"; vg: "dh.vg"; vh: "dh.vh"; vi: "dh.vi"; vj: "dh.vj"; vk: "dh.vk"; vl: "dh.vl"; vm: "dh.vm"; vn: "dh.vn"; vo: "dh.vo"; vp: "dh.vp"; vq: "dh.vq"; vr: "dh.vr"; vs: "dh.vs"; vt: "dh.vt"; vu: "dh.vu"; vv: "dh.vv"; vw: "dh.vw"; vx: "dh.vx"; vy: "dh.vy"; vz: "dh.vz"; wa: "dh.wa"; wb: "dh.wb"; wc: "dh.wc"; wd: "dh.wd"; we: "dh.we"; wf: "dh.wf"; wg: "dh.wg"; wh: "dh.wh"; wi: "dh.wi"; wj: "dh.wj"; wk: "dh.wk"; wl: "dh.wl"; wm: "dh.wm"; wn: "dh.wn"; wo: "dh.wo"; wp: "dh.wp"; wq: "dh.wq"; wr: "dh.wr"; ws: "dh.ws"; wt: "dh.wt"; wu: "dh.wu"; wv: "dh.wv"; ww: "dh.ww"; wx: "dh.wx"; wy: "dh.wy"; wz: "dh.wz"; xa: "dh.xa"; xb: "dh.xb"; xc: "dh.xc"; xd: "dh.xd"; xe: "dh.xe"; xf: "dh.xf"; xg: "dh.xg"; xh: "dh.xh"; xi: "dh.xi"; xj: "dh.xj"; xk: "dh.xk"; xl: "dh.xl"; xm: "dh.xm"; xn: "dh.xn"; xo: "dh.xo"; xp: "dh.xp"; xq: "dh.xq"; xr: "dh.xr"; xs: "dh.xs"; xt: "dh.xt"; xu: "dh.xu"; xv: "dh.xv"; xw: "dh.xw"; xx: "dh.xx"; xy: "dh.xy"; xz: "dh.xz"; ya: "dh.ya"; yb: "dh.yb"; yc: "dh.yc"; yd: "dh.yd"; ye: "dh.ye"; yf: "dh.yf"; yg: "dh.yg"; yh: "dh.yh"; yi: "dh.yi"; yj: "dh.yj"; yk: "dh.yk"; yl: "dh.yl"; ym: "dh.ym"; yn: "dh.yn"; yo: "dh.yo"; yp: "dh.yp"; yq: "dh.yq"; yr: "dh.yr"; ys: "dh.ys"; yt: "dh.yt"; yu: "dh.yu"; yv: "dh.yv"; yw: "dh.yw"; yx: "dh.yx"; yy: "dh.yy"; yz: "dh.yz"; za: "dh.za"; zb: "dh.zb"; zc: "dh.zc"; zd: "dh.zd"; ze: "dh.ze"; zf: "dh.zf"; zg: "dh.zg"; zh: "dh.zh"; zi: "dh.zi"; zj: "dh.zj"; zk: "dh.zk"; zl: "dh.zl"; zm: "dh.zm"; zn: "dh.zn"; zo: "dh.zo"; zp: "dh.zp"; zq: "dh.zq"; zr: "dh.zr"; zs: "dh.zs"; zt: "dh.zt"; zu: "dh.zu"; zv: "dh.zv"; zw: "dh.zw"; zx: "dh.zx"; zy: "dh.zy"; zz: "dh.zz"; }; di: { aa: "di.aa"; ab: "di.ab"; ac: "di.ac"; ad: "di.ad"; ae: "di.ae"; af: "di.af"; ag: "di.ag"; ah: "di.ah"; ai: "di.ai"; aj: "di.aj"; ak: "di.ak"; al: "di.al"; am: "di.am"; an: "di.an"; ao: "di.ao"; ap: "di.ap"; aq: "di.aq"; ar: "di.ar"; as: "di.as"; at: "di.at"; au: "di.au"; av: "di.av"; aw: "di.aw"; ax: "di.ax"; ay: "di.ay"; az: "di.az"; ba: "di.ba"; bb: "di.bb"; bc: "di.bc"; bd: "di.bd"; be: "di.be"; bf: "di.bf"; bg: "di.bg"; bh: "di.bh"; bi: "di.bi"; bj: "di.bj"; bk: "di.bk"; bl: "di.bl"; bm: "di.bm"; bn: "di.bn"; bo: "di.bo"; bp: "di.bp"; bq: "di.bq"; br: "di.br"; bs: "di.bs"; bt: "di.bt"; bu: "di.bu"; bv: "di.bv"; bw: "di.bw"; bx: "di.bx"; by: "di.by"; bz: "di.bz"; ca: "di.ca"; cb: "di.cb"; cc: "di.cc"; cd: "di.cd"; ce: "di.ce"; cf: "di.cf"; cg: "di.cg"; ch: "di.ch"; ci: "di.ci"; cj: "di.cj"; ck: "di.ck"; cl: "di.cl"; cm: "di.cm"; cn: "di.cn"; co: "di.co"; cp: "di.cp"; cq: "di.cq"; cr: "di.cr"; cs: "di.cs"; ct: "di.ct"; cu: "di.cu"; cv: "di.cv"; cw: "di.cw"; cx: "di.cx"; cy: "di.cy"; cz: "di.cz"; da: "di.da"; db: "di.db"; dc: "di.dc"; dd: "di.dd"; de: "di.de"; df: "di.df"; dg: "di.dg"; dh: "di.dh"; di: "di.di"; dj: "di.dj"; dk: "di.dk"; dl: "di.dl"; dm: "di.dm"; dn: "di.dn"; do: "di.do"; dp: "di.dp"; dq: "di.dq"; dr: "di.dr"; ds: "di.ds"; dt: "di.dt"; du: "di.du"; dv: "di.dv"; dw: "di.dw"; dx: "di.dx"; dy: "di.dy"; dz: "di.dz"; ea: "di.ea"; eb: "di.eb"; ec: "di.ec"; ed: "di.ed"; ee: "di.ee"; ef: "di.ef"; eg: "di.eg"; eh: "di.eh"; ei: "di.ei"; ej: "di.ej"; ek: "di.ek"; el: "di.el"; em: "di.em"; en: "di.en"; eo: "di.eo"; ep: "di.ep"; eq: "di.eq"; er: "di.er"; es: "di.es"; et: "di.et"; eu: "di.eu"; ev: "di.ev"; ew: "di.ew"; ex: "di.ex"; ey: "di.ey"; ez: "di.ez"; fa: "di.fa"; fb: "di.fb"; fc: "di.fc"; fd: "di.fd"; fe: "di.fe"; ff: "di.ff"; fg: "di.fg"; fh: "di.fh"; fi: "di.fi"; fj: "di.fj"; fk: "di.fk"; fl: "di.fl"; fm: "di.fm"; fn: "di.fn"; fo: "di.fo"; fp: "di.fp"; fq: "di.fq"; fr: "di.fr"; fs: "di.fs"; ft: "di.ft"; fu: "di.fu"; fv: "di.fv"; fw: "di.fw"; fx: "di.fx"; fy: "di.fy"; fz: "di.fz"; ga: "di.ga"; gb: "di.gb"; gc: "di.gc"; gd: "di.gd"; ge: "di.ge"; gf: "di.gf"; gg: "di.gg"; gh: "di.gh"; gi: "di.gi"; gj: "di.gj"; gk: "di.gk"; gl: "di.gl"; gm: "di.gm"; gn: "di.gn"; go: "di.go"; gp: "di.gp"; gq: "di.gq"; gr: "di.gr"; gs: "di.gs"; gt: "di.gt"; gu: "di.gu"; gv: "di.gv"; gw: "di.gw"; gx: "di.gx"; gy: "di.gy"; gz: "di.gz"; ha: "di.ha"; hb: "di.hb"; hc: "di.hc"; hd: "di.hd"; he: "di.he"; hf: "di.hf"; hg: "di.hg"; hh: "di.hh"; hi: "di.hi"; hj: "di.hj"; hk: "di.hk"; hl: "di.hl"; hm: "di.hm"; hn: "di.hn"; ho: "di.ho"; hp: "di.hp"; hq: "di.hq"; hr: "di.hr"; hs: "di.hs"; ht: "di.ht"; hu: "di.hu"; hv: "di.hv"; hw: "di.hw"; hx: "di.hx"; hy: "di.hy"; hz: "di.hz"; ia: "di.ia"; ib: "di.ib"; ic: "di.ic"; id: "di.id"; ie: "di.ie"; if: "di.if"; ig: "di.ig"; ih: "di.ih"; ii: "di.ii"; ij: "di.ij"; ik: "di.ik"; il: "di.il"; im: "di.im"; in: "di.in"; io: "di.io"; ip: "di.ip"; iq: "di.iq"; ir: "di.ir"; is: "di.is"; it: "di.it"; iu: "di.iu"; iv: "di.iv"; iw: "di.iw"; ix: "di.ix"; iy: "di.iy"; iz: "di.iz"; ja: "di.ja"; jb: "di.jb"; jc: "di.jc"; jd: "di.jd"; je: "di.je"; jf: "di.jf"; jg: "di.jg"; jh: "di.jh"; ji: "di.ji"; jj: "di.jj"; jk: "di.jk"; jl: "di.jl"; jm: "di.jm"; jn: "di.jn"; jo: "di.jo"; jp: "di.jp"; jq: "di.jq"; jr: "di.jr"; js: "di.js"; jt: "di.jt"; ju: "di.ju"; jv: "di.jv"; jw: "di.jw"; jx: "di.jx"; jy: "di.jy"; jz: "di.jz"; ka: "di.ka"; kb: "di.kb"; kc: "di.kc"; kd: "di.kd"; ke: "di.ke"; kf: "di.kf"; kg: "di.kg"; kh: "di.kh"; ki: "di.ki"; kj: "di.kj"; kk: "di.kk"; kl: "di.kl"; km: "di.km"; kn: "di.kn"; ko: "di.ko"; kp: "di.kp"; kq: "di.kq"; kr: "di.kr"; ks: "di.ks"; kt: "di.kt"; ku: "di.ku"; kv: "di.kv"; kw: "di.kw"; kx: "di.kx"; ky: "di.ky"; kz: "di.kz"; la: "di.la"; lb: "di.lb"; lc: "di.lc"; ld: "di.ld"; le: "di.le"; lf: "di.lf"; lg: "di.lg"; lh: "di.lh"; li: "di.li"; lj: "di.lj"; lk: "di.lk"; ll: "di.ll"; lm: "di.lm"; ln: "di.ln"; lo: "di.lo"; lp: "di.lp"; lq: "di.lq"; lr: "di.lr"; ls: "di.ls"; lt: "di.lt"; lu: "di.lu"; lv: "di.lv"; lw: "di.lw"; lx: "di.lx"; ly: "di.ly"; lz: "di.lz"; ma: "di.ma"; mb: "di.mb"; mc: "di.mc"; md: "di.md"; me: "di.me"; mf: "di.mf"; mg: "di.mg"; mh: "di.mh"; mi: "di.mi"; mj: "di.mj"; mk: "di.mk"; ml: "di.ml"; mm: "di.mm"; mn: "di.mn"; mo: "di.mo"; mp: "di.mp"; mq: "di.mq"; mr: "di.mr"; ms: "di.ms"; mt: "di.mt"; mu: "di.mu"; mv: "di.mv"; mw: "di.mw"; mx: "di.mx"; my: "di.my"; mz: "di.mz"; na: "di.na"; nb: "di.nb"; nc: "di.nc"; nd: "di.nd"; ne: "di.ne"; nf: "di.nf"; ng: "di.ng"; nh: "di.nh"; ni: "di.ni"; nj: "di.nj"; nk: "di.nk"; nl: "di.nl"; nm: "di.nm"; nn: "di.nn"; no: "di.no"; np: "di.np"; nq: "di.nq"; nr: "di.nr"; ns: "di.ns"; nt: "di.nt"; nu: "di.nu"; nv: "di.nv"; nw: "di.nw"; nx: "di.nx"; ny: "di.ny"; nz: "di.nz"; oa: "di.oa"; ob: "di.ob"; oc: "di.oc"; od: "di.od"; oe: "di.oe"; of: "di.of"; og: "di.og"; oh: "di.oh"; oi: "di.oi"; oj: "di.oj"; ok: "di.ok"; ol: "di.ol"; om: "di.om"; on: "di.on"; oo: "di.oo"; op: "di.op"; oq: "di.oq"; or: "di.or"; os: "di.os"; ot: "di.ot"; ou: "di.ou"; ov: "di.ov"; ow: "di.ow"; ox: "di.ox"; oy: "di.oy"; oz: "di.oz"; pa: "di.pa"; pb: "di.pb"; pc: "di.pc"; pd: "di.pd"; pe: "di.pe"; pf: "di.pf"; pg: "di.pg"; ph: "di.ph"; pi: "di.pi"; pj: "di.pj"; pk: "di.pk"; pl: "di.pl"; pm: "di.pm"; pn: "di.pn"; po: "di.po"; pp: "di.pp"; pq: "di.pq"; pr: "di.pr"; ps: "di.ps"; pt: "di.pt"; pu: "di.pu"; pv: "di.pv"; pw: "di.pw"; px: "di.px"; py: "di.py"; pz: "di.pz"; qa: "di.qa"; qb: "di.qb"; qc: "di.qc"; qd: "di.qd"; qe: "di.qe"; qf: "di.qf"; qg: "di.qg"; qh: "di.qh"; qi: "di.qi"; qj: "di.qj"; qk: "di.qk"; ql: "di.ql"; qm: "di.qm"; qn: "di.qn"; qo: "di.qo"; qp: "di.qp"; qq: "di.qq"; qr: "di.qr"; qs: "di.qs"; qt: "di.qt"; qu: "di.qu"; qv: "di.qv"; qw: "di.qw"; qx: "di.qx"; qy: "di.qy"; qz: "di.qz"; ra: "di.ra"; rb: "di.rb"; rc: "di.rc"; rd: "di.rd"; re: "di.re"; rf: "di.rf"; rg: "di.rg"; rh: "di.rh"; ri: "di.ri"; rj: "di.rj"; rk: "di.rk"; rl: "di.rl"; rm: "di.rm"; rn: "di.rn"; ro: "di.ro"; rp: "di.rp"; rq: "di.rq"; rr: "di.rr"; rs: "di.rs"; rt: "di.rt"; ru: "di.ru"; rv: "di.rv"; rw: "di.rw"; rx: "di.rx"; ry: "di.ry"; rz: "di.rz"; sa: "di.sa"; sb: "di.sb"; sc: "di.sc"; sd: "di.sd"; se: "di.se"; sf: "di.sf"; sg: "di.sg"; sh: "di.sh"; si: "di.si"; sj: "di.sj"; sk: "di.sk"; sl: "di.sl"; sm: "di.sm"; sn: "di.sn"; so: "di.so"; sp: "di.sp"; sq: "di.sq"; sr: "di.sr"; ss: "di.ss"; st: "di.st"; su: "di.su"; sv: "di.sv"; sw: "di.sw"; sx: "di.sx"; sy: "di.sy"; sz: "di.sz"; ta: "di.ta"; tb: "di.tb"; tc: "di.tc"; td: "di.td"; te: "di.te"; tf: "di.tf"; tg: "di.tg"; th: "di.th"; ti: "di.ti"; tj: "di.tj"; tk: "di.tk"; tl: "di.tl"; tm: "di.tm"; tn: "di.tn"; to: "di.to"; tp: "di.tp"; tq: "di.tq"; tr: "di.tr"; ts: "di.ts"; tt: "di.tt"; tu: "di.tu"; tv: "di.tv"; tw: "di.tw"; tx: "di.tx"; ty: "di.ty"; tz: "di.tz"; ua: "di.ua"; ub: "di.ub"; uc: "di.uc"; ud: "di.ud"; ue: "di.ue"; uf: "di.uf"; ug: "di.ug"; uh: "di.uh"; ui: "di.ui"; uj: "di.uj"; uk: "di.uk"; ul: "di.ul"; um: "di.um"; un: "di.un"; uo: "di.uo"; up: "di.up"; uq: "di.uq"; ur: "di.ur"; us: "di.us"; ut: "di.ut"; uu: "di.uu"; uv: "di.uv"; uw: "di.uw"; ux: "di.ux"; uy: "di.uy"; uz: "di.uz"; va: "di.va"; vb: "di.vb"; vc: "di.vc"; vd: "di.vd"; ve: "di.ve"; vf: "di.vf"; vg: "di.vg"; vh: "di.vh"; vi: "di.vi"; vj: "di.vj"; vk: "di.vk"; vl: "di.vl"; vm: "di.vm"; vn: "di.vn"; vo: "di.vo"; vp: "di.vp"; vq: "di.vq"; vr: "di.vr"; vs: "di.vs"; vt: "di.vt"; vu: "di.vu"; vv: "di.vv"; vw: "di.vw"; vx: "di.vx"; vy: "di.vy"; vz: "di.vz"; wa: "di.wa"; wb: "di.wb"; wc: "di.wc"; wd: "di.wd"; we: "di.we"; wf: "di.wf"; wg: "di.wg"; wh: "di.wh"; wi: "di.wi"; wj: "di.wj"; wk: "di.wk"; wl: "di.wl"; wm: "di.wm"; wn: "di.wn"; wo: "di.wo"; wp: "di.wp"; wq: "di.wq"; wr: "di.wr"; ws: "di.ws"; wt: "di.wt"; wu: "di.wu"; wv: "di.wv"; ww: "di.ww"; wx: "di.wx"; wy: "di.wy"; wz: "di.wz"; xa: "di.xa"; xb: "di.xb"; xc: "di.xc"; xd: "di.xd"; xe: "di.xe"; xf: "di.xf"; xg: "di.xg"; xh: "di.xh"; xi: "di.xi"; xj: "di.xj"; xk: "di.xk"; xl: "di.xl"; xm: "di.xm"; xn: "di.xn"; xo: "di.xo"; xp: "di.xp"; xq: "di.xq"; xr: "di.xr"; xs: "di.xs"; xt: "di.xt"; xu: "di.xu"; xv: "di.xv"; xw: "di.xw"; xx: "di.xx"; xy: "di.xy"; xz: "di.xz"; ya: "di.ya"; yb: "di.yb"; yc: "di.yc"; yd: "di.yd"; ye: "di.ye"; yf: "di.yf"; yg: "di.yg"; yh: "di.yh"; yi: "di.yi"; yj: "di.yj"; yk: "di.yk"; yl: "di.yl"; ym: "di.ym"; yn: "di.yn"; yo: "di.yo"; yp: "di.yp"; yq: "di.yq"; yr: "di.yr"; ys: "di.ys"; yt: "di.yt"; yu: "di.yu"; yv: "di.yv"; yw: "di.yw"; yx: "di.yx"; yy: "di.yy"; yz: "di.yz"; za: "di.za"; zb: "di.zb"; zc: "di.zc"; zd: "di.zd"; ze: "di.ze"; zf: "di.zf"; zg: "di.zg"; zh: "di.zh"; zi: "di.zi"; zj: "di.zj"; zk: "di.zk"; zl: "di.zl"; zm: "di.zm"; zn: "di.zn"; zo: "di.zo"; zp: "di.zp"; zq: "di.zq"; zr: "di.zr"; zs: "di.zs"; zt: "di.zt"; zu: "di.zu"; zv: "di.zv"; zw: "di.zw"; zx: "di.zx"; zy: "di.zy"; zz: "di.zz"; }; dj: { aa: "dj.aa"; ab: "dj.ab"; ac: "dj.ac"; ad: "dj.ad"; ae: "dj.ae"; af: "dj.af"; ag: "dj.ag"; ah: "dj.ah"; ai: "dj.ai"; aj: "dj.aj"; ak: "dj.ak"; al: "dj.al"; am: "dj.am"; an: "dj.an"; ao: "dj.ao"; ap: "dj.ap"; aq: "dj.aq"; ar: "dj.ar"; as: "dj.as"; at: "dj.at"; au: "dj.au"; av: "dj.av"; aw: "dj.aw"; ax: "dj.ax"; ay: "dj.ay"; az: "dj.az"; ba: "dj.ba"; bb: "dj.bb"; bc: "dj.bc"; bd: "dj.bd"; be: "dj.be"; bf: "dj.bf"; bg: "dj.bg"; bh: "dj.bh"; bi: "dj.bi"; bj: "dj.bj"; bk: "dj.bk"; bl: "dj.bl"; bm: "dj.bm"; bn: "dj.bn"; bo: "dj.bo"; bp: "dj.bp"; bq: "dj.bq"; br: "dj.br"; bs: "dj.bs"; bt: "dj.bt"; bu: "dj.bu"; bv: "dj.bv"; bw: "dj.bw"; bx: "dj.bx"; by: "dj.by"; bz: "dj.bz"; ca: "dj.ca"; cb: "dj.cb"; cc: "dj.cc"; cd: "dj.cd"; ce: "dj.ce"; cf: "dj.cf"; cg: "dj.cg"; ch: "dj.ch"; ci: "dj.ci"; cj: "dj.cj"; ck: "dj.ck"; cl: "dj.cl"; cm: "dj.cm"; cn: "dj.cn"; co: "dj.co"; cp: "dj.cp"; cq: "dj.cq"; cr: "dj.cr"; cs: "dj.cs"; ct: "dj.ct"; cu: "dj.cu"; cv: "dj.cv"; cw: "dj.cw"; cx: "dj.cx"; cy: "dj.cy"; cz: "dj.cz"; da: "dj.da"; db: "dj.db"; dc: "dj.dc"; dd: "dj.dd"; de: "dj.de"; df: "dj.df"; dg: "dj.dg"; dh: "dj.dh"; di: "dj.di"; dj: "dj.dj"; dk: "dj.dk"; dl: "dj.dl"; dm: "dj.dm"; dn: "dj.dn"; do: "dj.do"; dp: "dj.dp"; dq: "dj.dq"; dr: "dj.dr"; ds: "dj.ds"; dt: "dj.dt"; du: "dj.du"; dv: "dj.dv"; dw: "dj.dw"; dx: "dj.dx"; dy: "dj.dy"; dz: "dj.dz"; ea: "dj.ea"; eb: "dj.eb"; ec: "dj.ec"; ed: "dj.ed"; ee: "dj.ee"; ef: "dj.ef"; eg: "dj.eg"; eh: "dj.eh"; ei: "dj.ei"; ej: "dj.ej"; ek: "dj.ek"; el: "dj.el"; em: "dj.em"; en: "dj.en"; eo: "dj.eo"; ep: "dj.ep"; eq: "dj.eq"; er: "dj.er"; es: "dj.es"; et: "dj.et"; eu: "dj.eu"; ev: "dj.ev"; ew: "dj.ew"; ex: "dj.ex"; ey: "dj.ey"; ez: "dj.ez"; fa: "dj.fa"; fb: "dj.fb"; fc: "dj.fc"; fd: "dj.fd"; fe: "dj.fe"; ff: "dj.ff"; fg: "dj.fg"; fh: "dj.fh"; fi: "dj.fi"; fj: "dj.fj"; fk: "dj.fk"; fl: "dj.fl"; fm: "dj.fm"; fn: "dj.fn"; fo: "dj.fo"; fp: "dj.fp"; fq: "dj.fq"; fr: "dj.fr"; fs: "dj.fs"; ft: "dj.ft"; fu: "dj.fu"; fv: "dj.fv"; fw: "dj.fw"; fx: "dj.fx"; fy: "dj.fy"; fz: "dj.fz"; ga: "dj.ga"; gb: "dj.gb"; gc: "dj.gc"; gd: "dj.gd"; ge: "dj.ge"; gf: "dj.gf"; gg: "dj.gg"; gh: "dj.gh"; gi: "dj.gi"; gj: "dj.gj"; gk: "dj.gk"; gl: "dj.gl"; gm: "dj.gm"; gn: "dj.gn"; go: "dj.go"; gp: "dj.gp"; gq: "dj.gq"; gr: "dj.gr"; gs: "dj.gs"; gt: "dj.gt"; gu: "dj.gu"; gv: "dj.gv"; gw: "dj.gw"; gx: "dj.gx"; gy: "dj.gy"; gz: "dj.gz"; ha: "dj.ha"; hb: "dj.hb"; hc: "dj.hc"; hd: "dj.hd"; he: "dj.he"; hf: "dj.hf"; hg: "dj.hg"; hh: "dj.hh"; hi: "dj.hi"; hj: "dj.hj"; hk: "dj.hk"; hl: "dj.hl"; hm: "dj.hm"; hn: "dj.hn"; ho: "dj.ho"; hp: "dj.hp"; hq: "dj.hq"; hr: "dj.hr"; hs: "dj.hs"; ht: "dj.ht"; hu: "dj.hu"; hv: "dj.hv"; hw: "dj.hw"; hx: "dj.hx"; hy: "dj.hy"; hz: "dj.hz"; ia: "dj.ia"; ib: "dj.ib"; ic: "dj.ic"; id: "dj.id"; ie: "dj.ie"; if: "dj.if"; ig: "dj.ig"; ih: "dj.ih"; ii: "dj.ii"; ij: "dj.ij"; ik: "dj.ik"; il: "dj.il"; im: "dj.im"; in: "dj.in"; io: "dj.io"; ip: "dj.ip"; iq: "dj.iq"; ir: "dj.ir"; is: "dj.is"; it: "dj.it"; iu: "dj.iu"; iv: "dj.iv"; iw: "dj.iw"; ix: "dj.ix"; iy: "dj.iy"; iz: "dj.iz"; ja: "dj.ja"; jb: "dj.jb"; jc: "dj.jc"; jd: "dj.jd"; je: "dj.je"; jf: "dj.jf"; jg: "dj.jg"; jh: "dj.jh"; ji: "dj.ji"; jj: "dj.jj"; jk: "dj.jk"; jl: "dj.jl"; jm: "dj.jm"; jn: "dj.jn"; jo: "dj.jo"; jp: "dj.jp"; jq: "dj.jq"; jr: "dj.jr"; js: "dj.js"; jt: "dj.jt"; ju: "dj.ju"; jv: "dj.jv"; jw: "dj.jw"; jx: "dj.jx"; jy: "dj.jy"; jz: "dj.jz"; ka: "dj.ka"; kb: "dj.kb"; kc: "dj.kc"; kd: "dj.kd"; ke: "dj.ke"; kf: "dj.kf"; kg: "dj.kg"; kh: "dj.kh"; ki: "dj.ki"; kj: "dj.kj"; kk: "dj.kk"; kl: "dj.kl"; km: "dj.km"; kn: "dj.kn"; ko: "dj.ko"; kp: "dj.kp"; kq: "dj.kq"; kr: "dj.kr"; ks: "dj.ks"; kt: "dj.kt"; ku: "dj.ku"; kv: "dj.kv"; kw: "dj.kw"; kx: "dj.kx"; ky: "dj.ky"; kz: "dj.kz"; la: "dj.la"; lb: "dj.lb"; lc: "dj.lc"; ld: "dj.ld"; le: "dj.le"; lf: "dj.lf"; lg: "dj.lg"; lh: "dj.lh"; li: "dj.li"; lj: "dj.lj"; lk: "dj.lk"; ll: "dj.ll"; lm: "dj.lm"; ln: "dj.ln"; lo: "dj.lo"; lp: "dj.lp"; lq: "dj.lq"; lr: "dj.lr"; ls: "dj.ls"; lt: "dj.lt"; lu: "dj.lu"; lv: "dj.lv"; lw: "dj.lw"; lx: "dj.lx"; ly: "dj.ly"; lz: "dj.lz"; ma: "dj.ma"; mb: "dj.mb"; mc: "dj.mc"; md: "dj.md"; me: "dj.me"; mf: "dj.mf"; mg: "dj.mg"; mh: "dj.mh"; mi: "dj.mi"; mj: "dj.mj"; mk: "dj.mk"; ml: "dj.ml"; mm: "dj.mm"; mn: "dj.mn"; mo: "dj.mo"; mp: "dj.mp"; mq: "dj.mq"; mr: "dj.mr"; ms: "dj.ms"; mt: "dj.mt"; mu: "dj.mu"; mv: "dj.mv"; mw: "dj.mw"; mx: "dj.mx"; my: "dj.my"; mz: "dj.mz"; na: "dj.na"; nb: "dj.nb"; nc: "dj.nc"; nd: "dj.nd"; ne: "dj.ne"; nf: "dj.nf"; ng: "dj.ng"; nh: "dj.nh"; ni: "dj.ni"; nj: "dj.nj"; nk: "dj.nk"; nl: "dj.nl"; nm: "dj.nm"; nn: "dj.nn"; no: "dj.no"; np: "dj.np"; nq: "dj.nq"; nr: "dj.nr"; ns: "dj.ns"; nt: "dj.nt"; nu: "dj.nu"; nv: "dj.nv"; nw: "dj.nw"; nx: "dj.nx"; ny: "dj.ny"; nz: "dj.nz"; oa: "dj.oa"; ob: "dj.ob"; oc: "dj.oc"; od: "dj.od"; oe: "dj.oe"; of: "dj.of"; og: "dj.og"; oh: "dj.oh"; oi: "dj.oi"; oj: "dj.oj"; ok: "dj.ok"; ol: "dj.ol"; om: "dj.om"; on: "dj.on"; oo: "dj.oo"; op: "dj.op"; oq: "dj.oq"; or: "dj.or"; os: "dj.os"; ot: "dj.ot"; ou: "dj.ou"; ov: "dj.ov"; ow: "dj.ow"; ox: "dj.ox"; oy: "dj.oy"; oz: "dj.oz"; pa: "dj.pa"; pb: "dj.pb"; pc: "dj.pc"; pd: "dj.pd"; pe: "dj.pe"; pf: "dj.pf"; pg: "dj.pg"; ph: "dj.ph"; pi: "dj.pi"; pj: "dj.pj"; pk: "dj.pk"; pl: "dj.pl"; pm: "dj.pm"; pn: "dj.pn"; po: "dj.po"; pp: "dj.pp"; pq: "dj.pq"; pr: "dj.pr"; ps: "dj.ps"; pt: "dj.pt"; pu: "dj.pu"; pv: "dj.pv"; pw: "dj.pw"; px: "dj.px"; py: "dj.py"; pz: "dj.pz"; qa: "dj.qa"; qb: "dj.qb"; qc: "dj.qc"; qd: "dj.qd"; qe: "dj.qe"; qf: "dj.qf"; qg: "dj.qg"; qh: "dj.qh"; qi: "dj.qi"; qj: "dj.qj"; qk: "dj.qk"; ql: "dj.ql"; qm: "dj.qm"; qn: "dj.qn"; qo: "dj.qo"; qp: "dj.qp"; qq: "dj.qq"; qr: "dj.qr"; qs: "dj.qs"; qt: "dj.qt"; qu: "dj.qu"; qv: "dj.qv"; qw: "dj.qw"; qx: "dj.qx"; qy: "dj.qy"; qz: "dj.qz"; ra: "dj.ra"; rb: "dj.rb"; rc: "dj.rc"; rd: "dj.rd"; re: "dj.re"; rf: "dj.rf"; rg: "dj.rg"; rh: "dj.rh"; ri: "dj.ri"; rj: "dj.rj"; rk: "dj.rk"; rl: "dj.rl"; rm: "dj.rm"; rn: "dj.rn"; ro: "dj.ro"; rp: "dj.rp"; rq: "dj.rq"; rr: "dj.rr"; rs: "dj.rs"; rt: "dj.rt"; ru: "dj.ru"; rv: "dj.rv"; rw: "dj.rw"; rx: "dj.rx"; ry: "dj.ry"; rz: "dj.rz"; sa: "dj.sa"; sb: "dj.sb"; sc: "dj.sc"; sd: "dj.sd"; se: "dj.se"; sf: "dj.sf"; sg: "dj.sg"; sh: "dj.sh"; si: "dj.si"; sj: "dj.sj"; sk: "dj.sk"; sl: "dj.sl"; sm: "dj.sm"; sn: "dj.sn"; so: "dj.so"; sp: "dj.sp"; sq: "dj.sq"; sr: "dj.sr"; ss: "dj.ss"; st: "dj.st"; su: "dj.su"; sv: "dj.sv"; sw: "dj.sw"; sx: "dj.sx"; sy: "dj.sy"; sz: "dj.sz"; ta: "dj.ta"; tb: "dj.tb"; tc: "dj.tc"; td: "dj.td"; te: "dj.te"; tf: "dj.tf"; tg: "dj.tg"; th: "dj.th"; ti: "dj.ti"; tj: "dj.tj"; tk: "dj.tk"; tl: "dj.tl"; tm: "dj.tm"; tn: "dj.tn"; to: "dj.to"; tp: "dj.tp"; tq: "dj.tq"; tr: "dj.tr"; ts: "dj.ts"; tt: "dj.tt"; tu: "dj.tu"; tv: "dj.tv"; tw: "dj.tw"; tx: "dj.tx"; ty: "dj.ty"; tz: "dj.tz"; ua: "dj.ua"; ub: "dj.ub"; uc: "dj.uc"; ud: "dj.ud"; ue: "dj.ue"; uf: "dj.uf"; ug: "dj.ug"; uh: "dj.uh"; ui: "dj.ui"; uj: "dj.uj"; uk: "dj.uk"; ul: "dj.ul"; um: "dj.um"; un: "dj.un"; uo: "dj.uo"; up: "dj.up"; uq: "dj.uq"; ur: "dj.ur"; us: "dj.us"; ut: "dj.ut"; uu: "dj.uu"; uv: "dj.uv"; uw: "dj.uw"; ux: "dj.ux"; uy: "dj.uy"; uz: "dj.uz"; va: "dj.va"; vb: "dj.vb"; vc: "dj.vc"; vd: "dj.vd"; ve: "dj.ve"; vf: "dj.vf"; vg: "dj.vg"; vh: "dj.vh"; vi: "dj.vi"; vj: "dj.vj"; vk: "dj.vk"; vl: "dj.vl"; vm: "dj.vm"; vn: "dj.vn"; vo: "dj.vo"; vp: "dj.vp"; vq: "dj.vq"; vr: "dj.vr"; vs: "dj.vs"; vt: "dj.vt"; vu: "dj.vu"; vv: "dj.vv"; vw: "dj.vw"; vx: "dj.vx"; vy: "dj.vy"; vz: "dj.vz"; wa: "dj.wa"; wb: "dj.wb"; wc: "dj.wc"; wd: "dj.wd"; we: "dj.we"; wf: "dj.wf"; wg: "dj.wg"; wh: "dj.wh"; wi: "dj.wi"; wj: "dj.wj"; wk: "dj.wk"; wl: "dj.wl"; wm: "dj.wm"; wn: "dj.wn"; wo: "dj.wo"; wp: "dj.wp"; wq: "dj.wq"; wr: "dj.wr"; ws: "dj.ws"; wt: "dj.wt"; wu: "dj.wu"; wv: "dj.wv"; ww: "dj.ww"; wx: "dj.wx"; wy: "dj.wy"; wz: "dj.wz"; xa: "dj.xa"; xb: "dj.xb"; xc: "dj.xc"; xd: "dj.xd"; xe: "dj.xe"; xf: "dj.xf"; xg: "dj.xg"; xh: "dj.xh"; xi: "dj.xi"; xj: "dj.xj"; xk: "dj.xk"; xl: "dj.xl"; xm: "dj.xm"; xn: "dj.xn"; xo: "dj.xo"; xp: "dj.xp"; xq: "dj.xq"; xr: "dj.xr"; xs: "dj.xs"; xt: "dj.xt"; xu: "dj.xu"; xv: "dj.xv"; xw: "dj.xw"; xx: "dj.xx"; xy: "dj.xy"; xz: "dj.xz"; ya: "dj.ya"; yb: "dj.yb"; yc: "dj.yc"; yd: "dj.yd"; ye: "dj.ye"; yf: "dj.yf"; yg: "dj.yg"; yh: "dj.yh"; yi: "dj.yi"; yj: "dj.yj"; yk: "dj.yk"; yl: "dj.yl"; ym: "dj.ym"; yn: "dj.yn"; yo: "dj.yo"; yp: "dj.yp"; yq: "dj.yq"; yr: "dj.yr"; ys: "dj.ys"; yt: "dj.yt"; yu: "dj.yu"; yv: "dj.yv"; yw: "dj.yw"; yx: "dj.yx"; yy: "dj.yy"; yz: "dj.yz"; za: "dj.za"; zb: "dj.zb"; zc: "dj.zc"; zd: "dj.zd"; ze: "dj.ze"; zf: "dj.zf"; zg: "dj.zg"; zh: "dj.zh"; zi: "dj.zi"; zj: "dj.zj"; zk: "dj.zk"; zl: "dj.zl"; zm: "dj.zm"; zn: "dj.zn"; zo: "dj.zo"; zp: "dj.zp"; zq: "dj.zq"; zr: "dj.zr"; zs: "dj.zs"; zt: "dj.zt"; zu: "dj.zu"; zv: "dj.zv"; zw: "dj.zw"; zx: "dj.zx"; zy: "dj.zy"; zz: "dj.zz"; }; dk: { aa: "dk.aa"; ab: "dk.ab"; ac: "dk.ac"; ad: "dk.ad"; ae: "dk.ae"; af: "dk.af"; ag: "dk.ag"; ah: "dk.ah"; ai: "dk.ai"; aj: "dk.aj"; ak: "dk.ak"; al: "dk.al"; am: "dk.am"; an: "dk.an"; ao: "dk.ao"; ap: "dk.ap"; aq: "dk.aq"; ar: "dk.ar"; as: "dk.as"; at: "dk.at"; au: "dk.au"; av: "dk.av"; aw: "dk.aw"; ax: "dk.ax"; ay: "dk.ay"; az: "dk.az"; ba: "dk.ba"; bb: "dk.bb"; bc: "dk.bc"; bd: "dk.bd"; be: "dk.be"; bf: "dk.bf"; bg: "dk.bg"; bh: "dk.bh"; bi: "dk.bi"; bj: "dk.bj"; bk: "dk.bk"; bl: "dk.bl"; bm: "dk.bm"; bn: "dk.bn"; bo: "dk.bo"; bp: "dk.bp"; bq: "dk.bq"; br: "dk.br"; bs: "dk.bs"; bt: "dk.bt"; bu: "dk.bu"; bv: "dk.bv"; bw: "dk.bw"; bx: "dk.bx"; by: "dk.by"; bz: "dk.bz"; ca: "dk.ca"; cb: "dk.cb"; cc: "dk.cc"; cd: "dk.cd"; ce: "dk.ce"; cf: "dk.cf"; cg: "dk.cg"; ch: "dk.ch"; ci: "dk.ci"; cj: "dk.cj"; ck: "dk.ck"; cl: "dk.cl"; cm: "dk.cm"; cn: "dk.cn"; co: "dk.co"; cp: "dk.cp"; cq: "dk.cq"; cr: "dk.cr"; cs: "dk.cs"; ct: "dk.ct"; cu: "dk.cu"; cv: "dk.cv"; cw: "dk.cw"; cx: "dk.cx"; cy: "dk.cy"; cz: "dk.cz"; da: "dk.da"; db: "dk.db"; dc: "dk.dc"; dd: "dk.dd"; de: "dk.de"; df: "dk.df"; dg: "dk.dg"; dh: "dk.dh"; di: "dk.di"; dj: "dk.dj"; dk: "dk.dk"; dl: "dk.dl"; dm: "dk.dm"; dn: "dk.dn"; do: "dk.do"; dp: "dk.dp"; dq: "dk.dq"; dr: "dk.dr"; ds: "dk.ds"; dt: "dk.dt"; du: "dk.du"; dv: "dk.dv"; dw: "dk.dw"; dx: "dk.dx"; dy: "dk.dy"; dz: "dk.dz"; ea: "dk.ea"; eb: "dk.eb"; ec: "dk.ec"; ed: "dk.ed"; ee: "dk.ee"; ef: "dk.ef"; eg: "dk.eg"; eh: "dk.eh"; ei: "dk.ei"; ej: "dk.ej"; ek: "dk.ek"; el: "dk.el"; em: "dk.em"; en: "dk.en"; eo: "dk.eo"; ep: "dk.ep"; eq: "dk.eq"; er: "dk.er"; es: "dk.es"; et: "dk.et"; eu: "dk.eu"; ev: "dk.ev"; ew: "dk.ew"; ex: "dk.ex"; ey: "dk.ey"; ez: "dk.ez"; fa: "dk.fa"; fb: "dk.fb"; fc: "dk.fc"; fd: "dk.fd"; fe: "dk.fe"; ff: "dk.ff"; fg: "dk.fg"; fh: "dk.fh"; fi: "dk.fi"; fj: "dk.fj"; fk: "dk.fk"; fl: "dk.fl"; fm: "dk.fm"; fn: "dk.fn"; fo: "dk.fo"; fp: "dk.fp"; fq: "dk.fq"; fr: "dk.fr"; fs: "dk.fs"; ft: "dk.ft"; fu: "dk.fu"; fv: "dk.fv"; fw: "dk.fw"; fx: "dk.fx"; fy: "dk.fy"; fz: "dk.fz"; ga: "dk.ga"; gb: "dk.gb"; gc: "dk.gc"; gd: "dk.gd"; ge: "dk.ge"; gf: "dk.gf"; gg: "dk.gg"; gh: "dk.gh"; gi: "dk.gi"; gj: "dk.gj"; gk: "dk.gk"; gl: "dk.gl"; gm: "dk.gm"; gn: "dk.gn"; go: "dk.go"; gp: "dk.gp"; gq: "dk.gq"; gr: "dk.gr"; gs: "dk.gs"; gt: "dk.gt"; gu: "dk.gu"; gv: "dk.gv"; gw: "dk.gw"; gx: "dk.gx"; gy: "dk.gy"; gz: "dk.gz"; ha: "dk.ha"; hb: "dk.hb"; hc: "dk.hc"; hd: "dk.hd"; he: "dk.he"; hf: "dk.hf"; hg: "dk.hg"; hh: "dk.hh"; hi: "dk.hi"; hj: "dk.hj"; hk: "dk.hk"; hl: "dk.hl"; hm: "dk.hm"; hn: "dk.hn"; ho: "dk.ho"; hp: "dk.hp"; hq: "dk.hq"; hr: "dk.hr"; hs: "dk.hs"; ht: "dk.ht"; hu: "dk.hu"; hv: "dk.hv"; hw: "dk.hw"; hx: "dk.hx"; hy: "dk.hy"; hz: "dk.hz"; ia: "dk.ia"; ib: "dk.ib"; ic: "dk.ic"; id: "dk.id"; ie: "dk.ie"; if: "dk.if"; ig: "dk.ig"; ih: "dk.ih"; ii: "dk.ii"; ij: "dk.ij"; ik: "dk.ik"; il: "dk.il"; im: "dk.im"; in: "dk.in"; io: "dk.io"; ip: "dk.ip"; iq: "dk.iq"; ir: "dk.ir"; is: "dk.is"; it: "dk.it"; iu: "dk.iu"; iv: "dk.iv"; iw: "dk.iw"; ix: "dk.ix"; iy: "dk.iy"; iz: "dk.iz"; ja: "dk.ja"; jb: "dk.jb"; jc: "dk.jc"; jd: "dk.jd"; je: "dk.je"; jf: "dk.jf"; jg: "dk.jg"; jh: "dk.jh"; ji: "dk.ji"; jj: "dk.jj"; jk: "dk.jk"; jl: "dk.jl"; jm: "dk.jm"; jn: "dk.jn"; jo: "dk.jo"; jp: "dk.jp"; jq: "dk.jq"; jr: "dk.jr"; js: "dk.js"; jt: "dk.jt"; ju: "dk.ju"; jv: "dk.jv"; jw: "dk.jw"; jx: "dk.jx"; jy: "dk.jy"; jz: "dk.jz"; ka: "dk.ka"; kb: "dk.kb"; kc: "dk.kc"; kd: "dk.kd"; ke: "dk.ke"; kf: "dk.kf"; kg: "dk.kg"; kh: "dk.kh"; ki: "dk.ki"; kj: "dk.kj"; kk: "dk.kk"; kl: "dk.kl"; km: "dk.km"; kn: "dk.kn"; ko: "dk.ko"; kp: "dk.kp"; kq: "dk.kq"; kr: "dk.kr"; ks: "dk.ks"; kt: "dk.kt"; ku: "dk.ku"; kv: "dk.kv"; kw: "dk.kw"; kx: "dk.kx"; ky: "dk.ky"; kz: "dk.kz"; la: "dk.la"; lb: "dk.lb"; lc: "dk.lc"; ld: "dk.ld"; le: "dk.le"; lf: "dk.lf"; lg: "dk.lg"; lh: "dk.lh"; li: "dk.li"; lj: "dk.lj"; lk: "dk.lk"; ll: "dk.ll"; lm: "dk.lm"; ln: "dk.ln"; lo: "dk.lo"; lp: "dk.lp"; lq: "dk.lq"; lr: "dk.lr"; ls: "dk.ls"; lt: "dk.lt"; lu: "dk.lu"; lv: "dk.lv"; lw: "dk.lw"; lx: "dk.lx"; ly: "dk.ly"; lz: "dk.lz"; ma: "dk.ma"; mb: "dk.mb"; mc: "dk.mc"; md: "dk.md"; me: "dk.me"; mf: "dk.mf"; mg: "dk.mg"; mh: "dk.mh"; mi: "dk.mi"; mj: "dk.mj"; mk: "dk.mk"; ml: "dk.ml"; mm: "dk.mm"; mn: "dk.mn"; mo: "dk.mo"; mp: "dk.mp"; mq: "dk.mq"; mr: "dk.mr"; ms: "dk.ms"; mt: "dk.mt"; mu: "dk.mu"; mv: "dk.mv"; mw: "dk.mw"; mx: "dk.mx"; my: "dk.my"; mz: "dk.mz"; na: "dk.na"; nb: "dk.nb"; nc: "dk.nc"; nd: "dk.nd"; ne: "dk.ne"; nf: "dk.nf"; ng: "dk.ng"; nh: "dk.nh"; ni: "dk.ni"; nj: "dk.nj"; nk: "dk.nk"; nl: "dk.nl"; nm: "dk.nm"; nn: "dk.nn"; no: "dk.no"; np: "dk.np"; nq: "dk.nq"; nr: "dk.nr"; ns: "dk.ns"; nt: "dk.nt"; nu: "dk.nu"; nv: "dk.nv"; nw: "dk.nw"; nx: "dk.nx"; ny: "dk.ny"; nz: "dk.nz"; oa: "dk.oa"; ob: "dk.ob"; oc: "dk.oc"; od: "dk.od"; oe: "dk.oe"; of: "dk.of"; og: "dk.og"; oh: "dk.oh"; oi: "dk.oi"; oj: "dk.oj"; ok: "dk.ok"; ol: "dk.ol"; om: "dk.om"; on: "dk.on"; oo: "dk.oo"; op: "dk.op"; oq: "dk.oq"; or: "dk.or"; os: "dk.os"; ot: "dk.ot"; ou: "dk.ou"; ov: "dk.ov"; ow: "dk.ow"; ox: "dk.ox"; oy: "dk.oy"; oz: "dk.oz"; pa: "dk.pa"; pb: "dk.pb"; pc: "dk.pc"; pd: "dk.pd"; pe: "dk.pe"; pf: "dk.pf"; pg: "dk.pg"; ph: "dk.ph"; pi: "dk.pi"; pj: "dk.pj"; pk: "dk.pk"; pl: "dk.pl"; pm: "dk.pm"; pn: "dk.pn"; po: "dk.po"; pp: "dk.pp"; pq: "dk.pq"; pr: "dk.pr"; ps: "dk.ps"; pt: "dk.pt"; pu: "dk.pu"; pv: "dk.pv"; pw: "dk.pw"; px: "dk.px"; py: "dk.py"; pz: "dk.pz"; qa: "dk.qa"; qb: "dk.qb"; qc: "dk.qc"; qd: "dk.qd"; qe: "dk.qe"; qf: "dk.qf"; qg: "dk.qg"; qh: "dk.qh"; qi: "dk.qi"; qj: "dk.qj"; qk: "dk.qk"; ql: "dk.ql"; qm: "dk.qm"; qn: "dk.qn"; qo: "dk.qo"; qp: "dk.qp"; qq: "dk.qq"; qr: "dk.qr"; qs: "dk.qs"; qt: "dk.qt"; qu: "dk.qu"; qv: "dk.qv"; qw: "dk.qw"; qx: "dk.qx"; qy: "dk.qy"; qz: "dk.qz"; ra: "dk.ra"; rb: "dk.rb"; rc: "dk.rc"; rd: "dk.rd"; re: "dk.re"; rf: "dk.rf"; rg: "dk.rg"; rh: "dk.rh"; ri: "dk.ri"; rj: "dk.rj"; rk: "dk.rk"; rl: "dk.rl"; rm: "dk.rm"; rn: "dk.rn"; ro: "dk.ro"; rp: "dk.rp"; rq: "dk.rq"; rr: "dk.rr"; rs: "dk.rs"; rt: "dk.rt"; ru: "dk.ru"; rv: "dk.rv"; rw: "dk.rw"; rx: "dk.rx"; ry: "dk.ry"; rz: "dk.rz"; sa: "dk.sa"; sb: "dk.sb"; sc: "dk.sc"; sd: "dk.sd"; se: "dk.se"; sf: "dk.sf"; sg: "dk.sg"; sh: "dk.sh"; si: "dk.si"; sj: "dk.sj"; sk: "dk.sk"; sl: "dk.sl"; sm: "dk.sm"; sn: "dk.sn"; so: "dk.so"; sp: "dk.sp"; sq: "dk.sq"; sr: "dk.sr"; ss: "dk.ss"; st: "dk.st"; su: "dk.su"; sv: "dk.sv"; sw: "dk.sw"; sx: "dk.sx"; sy: "dk.sy"; sz: "dk.sz"; ta: "dk.ta"; tb: "dk.tb"; tc: "dk.tc"; td: "dk.td"; te: "dk.te"; tf: "dk.tf"; tg: "dk.tg"; th: "dk.th"; ti: "dk.ti"; tj: "dk.tj"; tk: "dk.tk"; tl: "dk.tl"; tm: "dk.tm"; tn: "dk.tn"; to: "dk.to"; tp: "dk.tp"; tq: "dk.tq"; tr: "dk.tr"; ts: "dk.ts"; tt: "dk.tt"; tu: "dk.tu"; tv: "dk.tv"; tw: "dk.tw"; tx: "dk.tx"; ty: "dk.ty"; tz: "dk.tz"; ua: "dk.ua"; ub: "dk.ub"; uc: "dk.uc"; ud: "dk.ud"; ue: "dk.ue"; uf: "dk.uf"; ug: "dk.ug"; uh: "dk.uh"; ui: "dk.ui"; uj: "dk.uj"; uk: "dk.uk"; ul: "dk.ul"; um: "dk.um"; un: "dk.un"; uo: "dk.uo"; up: "dk.up"; uq: "dk.uq"; ur: "dk.ur"; us: "dk.us"; ut: "dk.ut"; uu: "dk.uu"; uv: "dk.uv"; uw: "dk.uw"; ux: "dk.ux"; uy: "dk.uy"; uz: "dk.uz"; va: "dk.va"; vb: "dk.vb"; vc: "dk.vc"; vd: "dk.vd"; ve: "dk.ve"; vf: "dk.vf"; vg: "dk.vg"; vh: "dk.vh"; vi: "dk.vi"; vj: "dk.vj"; vk: "dk.vk"; vl: "dk.vl"; vm: "dk.vm"; vn: "dk.vn"; vo: "dk.vo"; vp: "dk.vp"; vq: "dk.vq"; vr: "dk.vr"; vs: "dk.vs"; vt: "dk.vt"; vu: "dk.vu"; vv: "dk.vv"; vw: "dk.vw"; vx: "dk.vx"; vy: "dk.vy"; vz: "dk.vz"; wa: "dk.wa"; wb: "dk.wb"; wc: "dk.wc"; wd: "dk.wd"; we: "dk.we"; wf: "dk.wf"; wg: "dk.wg"; wh: "dk.wh"; wi: "dk.wi"; wj: "dk.wj"; wk: "dk.wk"; wl: "dk.wl"; wm: "dk.wm"; wn: "dk.wn"; wo: "dk.wo"; wp: "dk.wp"; wq: "dk.wq"; wr: "dk.wr"; ws: "dk.ws"; wt: "dk.wt"; wu: "dk.wu"; wv: "dk.wv"; ww: "dk.ww"; wx: "dk.wx"; wy: "dk.wy"; wz: "dk.wz"; xa: "dk.xa"; xb: "dk.xb"; xc: "dk.xc"; xd: "dk.xd"; xe: "dk.xe"; xf: "dk.xf"; xg: "dk.xg"; xh: "dk.xh"; xi: "dk.xi"; xj: "dk.xj"; xk: "dk.xk"; xl: "dk.xl"; xm: "dk.xm"; xn: "dk.xn"; xo: "dk.xo"; xp: "dk.xp"; xq: "dk.xq"; xr: "dk.xr"; xs: "dk.xs"; xt: "dk.xt"; xu: "dk.xu"; xv: "dk.xv"; xw: "dk.xw"; xx: "dk.xx"; xy: "dk.xy"; xz: "dk.xz"; ya: "dk.ya"; yb: "dk.yb"; yc: "dk.yc"; yd: "dk.yd"; ye: "dk.ye"; yf: "dk.yf"; yg: "dk.yg"; yh: "dk.yh"; yi: "dk.yi"; yj: "dk.yj"; yk: "dk.yk"; yl: "dk.yl"; ym: "dk.ym"; yn: "dk.yn"; yo: "dk.yo"; yp: "dk.yp"; yq: "dk.yq"; yr: "dk.yr"; ys: "dk.ys"; yt: "dk.yt"; yu: "dk.yu"; yv: "dk.yv"; yw: "dk.yw"; yx: "dk.yx"; yy: "dk.yy"; yz: "dk.yz"; za: "dk.za"; zb: "dk.zb"; zc: "dk.zc"; zd: "dk.zd"; ze: "dk.ze"; zf: "dk.zf"; zg: "dk.zg"; zh: "dk.zh"; zi: "dk.zi"; zj: "dk.zj"; zk: "dk.zk"; zl: "dk.zl"; zm: "dk.zm"; zn: "dk.zn"; zo: "dk.zo"; zp: "dk.zp"; zq: "dk.zq"; zr: "dk.zr"; zs: "dk.zs"; zt: "dk.zt"; zu: "dk.zu"; zv: "dk.zv"; zw: "dk.zw"; zx: "dk.zx"; zy: "dk.zy"; zz: "dk.zz"; }; dl: { aa: "dl.aa"; ab: "dl.ab"; ac: "dl.ac"; ad: "dl.ad"; ae: "dl.ae"; af: "dl.af"; ag: "dl.ag"; ah: "dl.ah"; ai: "dl.ai"; aj: "dl.aj"; ak: "dl.ak"; al: "dl.al"; am: "dl.am"; an: "dl.an"; ao: "dl.ao"; ap: "dl.ap"; aq: "dl.aq"; ar: "dl.ar"; as: "dl.as"; at: "dl.at"; au: "dl.au"; av: "dl.av"; aw: "dl.aw"; ax: "dl.ax"; ay: "dl.ay"; az: "dl.az"; ba: "dl.ba"; bb: "dl.bb"; bc: "dl.bc"; bd: "dl.bd"; be: "dl.be"; bf: "dl.bf"; bg: "dl.bg"; bh: "dl.bh"; bi: "dl.bi"; bj: "dl.bj"; bk: "dl.bk"; bl: "dl.bl"; bm: "dl.bm"; bn: "dl.bn"; bo: "dl.bo"; bp: "dl.bp"; bq: "dl.bq"; br: "dl.br"; bs: "dl.bs"; bt: "dl.bt"; bu: "dl.bu"; bv: "dl.bv"; bw: "dl.bw"; bx: "dl.bx"; by: "dl.by"; bz: "dl.bz"; ca: "dl.ca"; cb: "dl.cb"; cc: "dl.cc"; cd: "dl.cd"; ce: "dl.ce"; cf: "dl.cf"; cg: "dl.cg"; ch: "dl.ch"; ci: "dl.ci"; cj: "dl.cj"; ck: "dl.ck"; cl: "dl.cl"; cm: "dl.cm"; cn: "dl.cn"; co: "dl.co"; cp: "dl.cp"; cq: "dl.cq"; cr: "dl.cr"; cs: "dl.cs"; ct: "dl.ct"; cu: "dl.cu"; cv: "dl.cv"; cw: "dl.cw"; cx: "dl.cx"; cy: "dl.cy"; cz: "dl.cz"; da: "dl.da"; db: "dl.db"; dc: "dl.dc"; dd: "dl.dd"; de: "dl.de"; df: "dl.df"; dg: "dl.dg"; dh: "dl.dh"; di: "dl.di"; dj: "dl.dj"; dk: "dl.dk"; dl: "dl.dl"; dm: "dl.dm"; dn: "dl.dn"; do: "dl.do"; dp: "dl.dp"; dq: "dl.dq"; dr: "dl.dr"; ds: "dl.ds"; dt: "dl.dt"; du: "dl.du"; dv: "dl.dv"; dw: "dl.dw"; dx: "dl.dx"; dy: "dl.dy"; dz: "dl.dz"; ea: "dl.ea"; eb: "dl.eb"; ec: "dl.ec"; ed: "dl.ed"; ee: "dl.ee"; ef: "dl.ef"; eg: "dl.eg"; eh: "dl.eh"; ei: "dl.ei"; ej: "dl.ej"; ek: "dl.ek"; el: "dl.el"; em: "dl.em"; en: "dl.en"; eo: "dl.eo"; ep: "dl.ep"; eq: "dl.eq"; er: "dl.er"; es: "dl.es"; et: "dl.et"; eu: "dl.eu"; ev: "dl.ev"; ew: "dl.ew"; ex: "dl.ex"; ey: "dl.ey"; ez: "dl.ez"; fa: "dl.fa"; fb: "dl.fb"; fc: "dl.fc"; fd: "dl.fd"; fe: "dl.fe"; ff: "dl.ff"; fg: "dl.fg"; fh: "dl.fh"; fi: "dl.fi"; fj: "dl.fj"; fk: "dl.fk"; fl: "dl.fl"; fm: "dl.fm"; fn: "dl.fn"; fo: "dl.fo"; fp: "dl.fp"; fq: "dl.fq"; fr: "dl.fr"; fs: "dl.fs"; ft: "dl.ft"; fu: "dl.fu"; fv: "dl.fv"; fw: "dl.fw"; fx: "dl.fx"; fy: "dl.fy"; fz: "dl.fz"; ga: "dl.ga"; gb: "dl.gb"; gc: "dl.gc"; gd: "dl.gd"; ge: "dl.ge"; gf: "dl.gf"; gg: "dl.gg"; gh: "dl.gh"; gi: "dl.gi"; gj: "dl.gj"; gk: "dl.gk"; gl: "dl.gl"; gm: "dl.gm"; gn: "dl.gn"; go: "dl.go"; gp: "dl.gp"; gq: "dl.gq"; gr: "dl.gr"; gs: "dl.gs"; gt: "dl.gt"; gu: "dl.gu"; gv: "dl.gv"; gw: "dl.gw"; gx: "dl.gx"; gy: "dl.gy"; gz: "dl.gz"; ha: "dl.ha"; hb: "dl.hb"; hc: "dl.hc"; hd: "dl.hd"; he: "dl.he"; hf: "dl.hf"; hg: "dl.hg"; hh: "dl.hh"; hi: "dl.hi"; hj: "dl.hj"; hk: "dl.hk"; hl: "dl.hl"; hm: "dl.hm"; hn: "dl.hn"; ho: "dl.ho"; hp: "dl.hp"; hq: "dl.hq"; hr: "dl.hr"; hs: "dl.hs"; ht: "dl.ht"; hu: "dl.hu"; hv: "dl.hv"; hw: "dl.hw"; hx: "dl.hx"; hy: "dl.hy"; hz: "dl.hz"; ia: "dl.ia"; ib: "dl.ib"; ic: "dl.ic"; id: "dl.id"; ie: "dl.ie"; if: "dl.if"; ig: "dl.ig"; ih: "dl.ih"; ii: "dl.ii"; ij: "dl.ij"; ik: "dl.ik"; il: "dl.il"; im: "dl.im"; in: "dl.in"; io: "dl.io"; ip: "dl.ip"; iq: "dl.iq"; ir: "dl.ir"; is: "dl.is"; it: "dl.it"; iu: "dl.iu"; iv: "dl.iv"; iw: "dl.iw"; ix: "dl.ix"; iy: "dl.iy"; iz: "dl.iz"; ja: "dl.ja"; jb: "dl.jb"; jc: "dl.jc"; jd: "dl.jd"; je: "dl.je"; jf: "dl.jf"; jg: "dl.jg"; jh: "dl.jh"; ji: "dl.ji"; jj: "dl.jj"; jk: "dl.jk"; jl: "dl.jl"; jm: "dl.jm"; jn: "dl.jn"; jo: "dl.jo"; jp: "dl.jp"; jq: "dl.jq"; jr: "dl.jr"; js: "dl.js"; jt: "dl.jt"; ju: "dl.ju"; jv: "dl.jv"; jw: "dl.jw"; jx: "dl.jx"; jy: "dl.jy"; jz: "dl.jz"; ka: "dl.ka"; kb: "dl.kb"; kc: "dl.kc"; kd: "dl.kd"; ke: "dl.ke"; kf: "dl.kf"; kg: "dl.kg"; kh: "dl.kh"; ki: "dl.ki"; kj: "dl.kj"; kk: "dl.kk"; kl: "dl.kl"; km: "dl.km"; kn: "dl.kn"; ko: "dl.ko"; kp: "dl.kp"; kq: "dl.kq"; kr: "dl.kr"; ks: "dl.ks"; kt: "dl.kt"; ku: "dl.ku"; kv: "dl.kv"; kw: "dl.kw"; kx: "dl.kx"; ky: "dl.ky"; kz: "dl.kz"; la: "dl.la"; lb: "dl.lb"; lc: "dl.lc"; ld: "dl.ld"; le: "dl.le"; lf: "dl.lf"; lg: "dl.lg"; lh: "dl.lh"; li: "dl.li"; lj: "dl.lj"; lk: "dl.lk"; ll: "dl.ll"; lm: "dl.lm"; ln: "dl.ln"; lo: "dl.lo"; lp: "dl.lp"; lq: "dl.lq"; lr: "dl.lr"; ls: "dl.ls"; lt: "dl.lt"; lu: "dl.lu"; lv: "dl.lv"; lw: "dl.lw"; lx: "dl.lx"; ly: "dl.ly"; lz: "dl.lz"; ma: "dl.ma"; mb: "dl.mb"; mc: "dl.mc"; md: "dl.md"; me: "dl.me"; mf: "dl.mf"; mg: "dl.mg"; mh: "dl.mh"; mi: "dl.mi"; mj: "dl.mj"; mk: "dl.mk"; ml: "dl.ml"; mm: "dl.mm"; mn: "dl.mn"; mo: "dl.mo"; mp: "dl.mp"; mq: "dl.mq"; mr: "dl.mr"; ms: "dl.ms"; mt: "dl.mt"; mu: "dl.mu"; mv: "dl.mv"; mw: "dl.mw"; mx: "dl.mx"; my: "dl.my"; mz: "dl.mz"; na: "dl.na"; nb: "dl.nb"; nc: "dl.nc"; nd: "dl.nd"; ne: "dl.ne"; nf: "dl.nf"; ng: "dl.ng"; nh: "dl.nh"; ni: "dl.ni"; nj: "dl.nj"; nk: "dl.nk"; nl: "dl.nl"; nm: "dl.nm"; nn: "dl.nn"; no: "dl.no"; np: "dl.np"; nq: "dl.nq"; nr: "dl.nr"; ns: "dl.ns"; nt: "dl.nt"; nu: "dl.nu"; nv: "dl.nv"; nw: "dl.nw"; nx: "dl.nx"; ny: "dl.ny"; nz: "dl.nz"; oa: "dl.oa"; ob: "dl.ob"; oc: "dl.oc"; od: "dl.od"; oe: "dl.oe"; of: "dl.of"; og: "dl.og"; oh: "dl.oh"; oi: "dl.oi"; oj: "dl.oj"; ok: "dl.ok"; ol: "dl.ol"; om: "dl.om"; on: "dl.on"; oo: "dl.oo"; op: "dl.op"; oq: "dl.oq"; or: "dl.or"; os: "dl.os"; ot: "dl.ot"; ou: "dl.ou"; ov: "dl.ov"; ow: "dl.ow"; ox: "dl.ox"; oy: "dl.oy"; oz: "dl.oz"; pa: "dl.pa"; pb: "dl.pb"; pc: "dl.pc"; pd: "dl.pd"; pe: "dl.pe"; pf: "dl.pf"; pg: "dl.pg"; ph: "dl.ph"; pi: "dl.pi"; pj: "dl.pj"; pk: "dl.pk"; pl: "dl.pl"; pm: "dl.pm"; pn: "dl.pn"; po: "dl.po"; pp: "dl.pp"; pq: "dl.pq"; pr: "dl.pr"; ps: "dl.ps"; pt: "dl.pt"; pu: "dl.pu"; pv: "dl.pv"; pw: "dl.pw"; px: "dl.px"; py: "dl.py"; pz: "dl.pz"; qa: "dl.qa"; qb: "dl.qb"; qc: "dl.qc"; qd: "dl.qd"; qe: "dl.qe"; qf: "dl.qf"; qg: "dl.qg"; qh: "dl.qh"; qi: "dl.qi"; qj: "dl.qj"; qk: "dl.qk"; ql: "dl.ql"; qm: "dl.qm"; qn: "dl.qn"; qo: "dl.qo"; qp: "dl.qp"; qq: "dl.qq"; qr: "dl.qr"; qs: "dl.qs"; qt: "dl.qt"; qu: "dl.qu"; qv: "dl.qv"; qw: "dl.qw"; qx: "dl.qx"; qy: "dl.qy"; qz: "dl.qz"; ra: "dl.ra"; rb: "dl.rb"; rc: "dl.rc"; rd: "dl.rd"; re: "dl.re"; rf: "dl.rf"; rg: "dl.rg"; rh: "dl.rh"; ri: "dl.ri"; rj: "dl.rj"; rk: "dl.rk"; rl: "dl.rl"; rm: "dl.rm"; rn: "dl.rn"; ro: "dl.ro"; rp: "dl.rp"; rq: "dl.rq"; rr: "dl.rr"; rs: "dl.rs"; rt: "dl.rt"; ru: "dl.ru"; rv: "dl.rv"; rw: "dl.rw"; rx: "dl.rx"; ry: "dl.ry"; rz: "dl.rz"; sa: "dl.sa"; sb: "dl.sb"; sc: "dl.sc"; sd: "dl.sd"; se: "dl.se"; sf: "dl.sf"; sg: "dl.sg"; sh: "dl.sh"; si: "dl.si"; sj: "dl.sj"; sk: "dl.sk"; sl: "dl.sl"; sm: "dl.sm"; sn: "dl.sn"; so: "dl.so"; sp: "dl.sp"; sq: "dl.sq"; sr: "dl.sr"; ss: "dl.ss"; st: "dl.st"; su: "dl.su"; sv: "dl.sv"; sw: "dl.sw"; sx: "dl.sx"; sy: "dl.sy"; sz: "dl.sz"; ta: "dl.ta"; tb: "dl.tb"; tc: "dl.tc"; td: "dl.td"; te: "dl.te"; tf: "dl.tf"; tg: "dl.tg"; th: "dl.th"; ti: "dl.ti"; tj: "dl.tj"; tk: "dl.tk"; tl: "dl.tl"; tm: "dl.tm"; tn: "dl.tn"; to: "dl.to"; tp: "dl.tp"; tq: "dl.tq"; tr: "dl.tr"; ts: "dl.ts"; tt: "dl.tt"; tu: "dl.tu"; tv: "dl.tv"; tw: "dl.tw"; tx: "dl.tx"; ty: "dl.ty"; tz: "dl.tz"; ua: "dl.ua"; ub: "dl.ub"; uc: "dl.uc"; ud: "dl.ud"; ue: "dl.ue"; uf: "dl.uf"; ug: "dl.ug"; uh: "dl.uh"; ui: "dl.ui"; uj: "dl.uj"; uk: "dl.uk"; ul: "dl.ul"; um: "dl.um"; un: "dl.un"; uo: "dl.uo"; up: "dl.up"; uq: "dl.uq"; ur: "dl.ur"; us: "dl.us"; ut: "dl.ut"; uu: "dl.uu"; uv: "dl.uv"; uw: "dl.uw"; ux: "dl.ux"; uy: "dl.uy"; uz: "dl.uz"; va: "dl.va"; vb: "dl.vb"; vc: "dl.vc"; vd: "dl.vd"; ve: "dl.ve"; vf: "dl.vf"; vg: "dl.vg"; vh: "dl.vh"; vi: "dl.vi"; vj: "dl.vj"; vk: "dl.vk"; vl: "dl.vl"; vm: "dl.vm"; vn: "dl.vn"; vo: "dl.vo"; vp: "dl.vp"; vq: "dl.vq"; vr: "dl.vr"; vs: "dl.vs"; vt: "dl.vt"; vu: "dl.vu"; vv: "dl.vv"; vw: "dl.vw"; vx: "dl.vx"; vy: "dl.vy"; vz: "dl.vz"; wa: "dl.wa"; wb: "dl.wb"; wc: "dl.wc"; wd: "dl.wd"; we: "dl.we"; wf: "dl.wf"; wg: "dl.wg"; wh: "dl.wh"; wi: "dl.wi"; wj: "dl.wj"; wk: "dl.wk"; wl: "dl.wl"; wm: "dl.wm"; wn: "dl.wn"; wo: "dl.wo"; wp: "dl.wp"; wq: "dl.wq"; wr: "dl.wr"; ws: "dl.ws"; wt: "dl.wt"; wu: "dl.wu"; wv: "dl.wv"; ww: "dl.ww"; wx: "dl.wx"; wy: "dl.wy"; wz: "dl.wz"; xa: "dl.xa"; xb: "dl.xb"; xc: "dl.xc"; xd: "dl.xd"; xe: "dl.xe"; xf: "dl.xf"; xg: "dl.xg"; xh: "dl.xh"; xi: "dl.xi"; xj: "dl.xj"; xk: "dl.xk"; xl: "dl.xl"; xm: "dl.xm"; xn: "dl.xn"; xo: "dl.xo"; xp: "dl.xp"; xq: "dl.xq"; xr: "dl.xr"; xs: "dl.xs"; xt: "dl.xt"; xu: "dl.xu"; xv: "dl.xv"; xw: "dl.xw"; xx: "dl.xx"; xy: "dl.xy"; xz: "dl.xz"; ya: "dl.ya"; yb: "dl.yb"; yc: "dl.yc"; yd: "dl.yd"; ye: "dl.ye"; yf: "dl.yf"; yg: "dl.yg"; yh: "dl.yh"; yi: "dl.yi"; yj: "dl.yj"; yk: "dl.yk"; yl: "dl.yl"; ym: "dl.ym"; yn: "dl.yn"; yo: "dl.yo"; yp: "dl.yp"; yq: "dl.yq"; yr: "dl.yr"; ys: "dl.ys"; yt: "dl.yt"; yu: "dl.yu"; yv: "dl.yv"; yw: "dl.yw"; yx: "dl.yx"; yy: "dl.yy"; yz: "dl.yz"; za: "dl.za"; zb: "dl.zb"; zc: "dl.zc"; zd: "dl.zd"; ze: "dl.ze"; zf: "dl.zf"; zg: "dl.zg"; zh: "dl.zh"; zi: "dl.zi"; zj: "dl.zj"; zk: "dl.zk"; zl: "dl.zl"; zm: "dl.zm"; zn: "dl.zn"; zo: "dl.zo"; zp: "dl.zp"; zq: "dl.zq"; zr: "dl.zr"; zs: "dl.zs"; zt: "dl.zt"; zu: "dl.zu"; zv: "dl.zv"; zw: "dl.zw"; zx: "dl.zx"; zy: "dl.zy"; zz: "dl.zz"; }; dm: { aa: "dm.aa"; ab: "dm.ab"; ac: "dm.ac"; ad: "dm.ad"; ae: "dm.ae"; af: "dm.af"; ag: "dm.ag"; ah: "dm.ah"; ai: "dm.ai"; aj: "dm.aj"; ak: "dm.ak"; al: "dm.al"; am: "dm.am"; an: "dm.an"; ao: "dm.ao"; ap: "dm.ap"; aq: "dm.aq"; ar: "dm.ar"; as: "dm.as"; at: "dm.at"; au: "dm.au"; av: "dm.av"; aw: "dm.aw"; ax: "dm.ax"; ay: "dm.ay"; az: "dm.az"; ba: "dm.ba"; bb: "dm.bb"; bc: "dm.bc"; bd: "dm.bd"; be: "dm.be"; bf: "dm.bf"; bg: "dm.bg"; bh: "dm.bh"; bi: "dm.bi"; bj: "dm.bj"; bk: "dm.bk"; bl: "dm.bl"; bm: "dm.bm"; bn: "dm.bn"; bo: "dm.bo"; bp: "dm.bp"; bq: "dm.bq"; br: "dm.br"; bs: "dm.bs"; bt: "dm.bt"; bu: "dm.bu"; bv: "dm.bv"; bw: "dm.bw"; bx: "dm.bx"; by: "dm.by"; bz: "dm.bz"; ca: "dm.ca"; cb: "dm.cb"; cc: "dm.cc"; cd: "dm.cd"; ce: "dm.ce"; cf: "dm.cf"; cg: "dm.cg"; ch: "dm.ch"; ci: "dm.ci"; cj: "dm.cj"; ck: "dm.ck"; cl: "dm.cl"; cm: "dm.cm"; cn: "dm.cn"; co: "dm.co"; cp: "dm.cp"; cq: "dm.cq"; cr: "dm.cr"; cs: "dm.cs"; ct: "dm.ct"; cu: "dm.cu"; cv: "dm.cv"; cw: "dm.cw"; cx: "dm.cx"; cy: "dm.cy"; cz: "dm.cz"; da: "dm.da"; db: "dm.db"; dc: "dm.dc"; dd: "dm.dd"; de: "dm.de"; df: "dm.df"; dg: "dm.dg"; dh: "dm.dh"; di: "dm.di"; dj: "dm.dj"; dk: "dm.dk"; dl: "dm.dl"; dm: "dm.dm"; dn: "dm.dn"; do: "dm.do"; dp: "dm.dp"; dq: "dm.dq"; dr: "dm.dr"; ds: "dm.ds"; dt: "dm.dt"; du: "dm.du"; dv: "dm.dv"; dw: "dm.dw"; dx: "dm.dx"; dy: "dm.dy"; dz: "dm.dz"; ea: "dm.ea"; eb: "dm.eb"; ec: "dm.ec"; ed: "dm.ed"; ee: "dm.ee"; ef: "dm.ef"; eg: "dm.eg"; eh: "dm.eh"; ei: "dm.ei"; ej: "dm.ej"; ek: "dm.ek"; el: "dm.el"; em: "dm.em"; en: "dm.en"; eo: "dm.eo"; ep: "dm.ep"; eq: "dm.eq"; er: "dm.er"; es: "dm.es"; et: "dm.et"; eu: "dm.eu"; ev: "dm.ev"; ew: "dm.ew"; ex: "dm.ex"; ey: "dm.ey"; ez: "dm.ez"; fa: "dm.fa"; fb: "dm.fb"; fc: "dm.fc"; fd: "dm.fd"; fe: "dm.fe"; ff: "dm.ff"; fg: "dm.fg"; fh: "dm.fh"; fi: "dm.fi"; fj: "dm.fj"; fk: "dm.fk"; fl: "dm.fl"; fm: "dm.fm"; fn: "dm.fn"; fo: "dm.fo"; fp: "dm.fp"; fq: "dm.fq"; fr: "dm.fr"; fs: "dm.fs"; ft: "dm.ft"; fu: "dm.fu"; fv: "dm.fv"; fw: "dm.fw"; fx: "dm.fx"; fy: "dm.fy"; fz: "dm.fz"; ga: "dm.ga"; gb: "dm.gb"; gc: "dm.gc"; gd: "dm.gd"; ge: "dm.ge"; gf: "dm.gf"; gg: "dm.gg"; gh: "dm.gh"; gi: "dm.gi"; gj: "dm.gj"; gk: "dm.gk"; gl: "dm.gl"; gm: "dm.gm"; gn: "dm.gn"; go: "dm.go"; gp: "dm.gp"; gq: "dm.gq"; gr: "dm.gr"; gs: "dm.gs"; gt: "dm.gt"; gu: "dm.gu"; gv: "dm.gv"; gw: "dm.gw"; gx: "dm.gx"; gy: "dm.gy"; gz: "dm.gz"; ha: "dm.ha"; hb: "dm.hb"; hc: "dm.hc"; hd: "dm.hd"; he: "dm.he"; hf: "dm.hf"; hg: "dm.hg"; hh: "dm.hh"; hi: "dm.hi"; hj: "dm.hj"; hk: "dm.hk"; hl: "dm.hl"; hm: "dm.hm"; hn: "dm.hn"; ho: "dm.ho"; hp: "dm.hp"; hq: "dm.hq"; hr: "dm.hr"; hs: "dm.hs"; ht: "dm.ht"; hu: "dm.hu"; hv: "dm.hv"; hw: "dm.hw"; hx: "dm.hx"; hy: "dm.hy"; hz: "dm.hz"; ia: "dm.ia"; ib: "dm.ib"; ic: "dm.ic"; id: "dm.id"; ie: "dm.ie"; if: "dm.if"; ig: "dm.ig"; ih: "dm.ih"; ii: "dm.ii"; ij: "dm.ij"; ik: "dm.ik"; il: "dm.il"; im: "dm.im"; in: "dm.in"; io: "dm.io"; ip: "dm.ip"; iq: "dm.iq"; ir: "dm.ir"; is: "dm.is"; it: "dm.it"; iu: "dm.iu"; iv: "dm.iv"; iw: "dm.iw"; ix: "dm.ix"; iy: "dm.iy"; iz: "dm.iz"; ja: "dm.ja"; jb: "dm.jb"; jc: "dm.jc"; jd: "dm.jd"; je: "dm.je"; jf: "dm.jf"; jg: "dm.jg"; jh: "dm.jh"; ji: "dm.ji"; jj: "dm.jj"; jk: "dm.jk"; jl: "dm.jl"; jm: "dm.jm"; jn: "dm.jn"; jo: "dm.jo"; jp: "dm.jp"; jq: "dm.jq"; jr: "dm.jr"; js: "dm.js"; jt: "dm.jt"; ju: "dm.ju"; jv: "dm.jv"; jw: "dm.jw"; jx: "dm.jx"; jy: "dm.jy"; jz: "dm.jz"; ka: "dm.ka"; kb: "dm.kb"; kc: "dm.kc"; kd: "dm.kd"; ke: "dm.ke"; kf: "dm.kf"; kg: "dm.kg"; kh: "dm.kh"; ki: "dm.ki"; kj: "dm.kj"; kk: "dm.kk"; kl: "dm.kl"; km: "dm.km"; kn: "dm.kn"; ko: "dm.ko"; kp: "dm.kp"; kq: "dm.kq"; kr: "dm.kr"; ks: "dm.ks"; kt: "dm.kt"; ku: "dm.ku"; kv: "dm.kv"; kw: "dm.kw"; kx: "dm.kx"; ky: "dm.ky"; kz: "dm.kz"; la: "dm.la"; lb: "dm.lb"; lc: "dm.lc"; ld: "dm.ld"; le: "dm.le"; lf: "dm.lf"; lg: "dm.lg"; lh: "dm.lh"; li: "dm.li"; lj: "dm.lj"; lk: "dm.lk"; ll: "dm.ll"; lm: "dm.lm"; ln: "dm.ln"; lo: "dm.lo"; lp: "dm.lp"; lq: "dm.lq"; lr: "dm.lr"; ls: "dm.ls"; lt: "dm.lt"; lu: "dm.lu"; lv: "dm.lv"; lw: "dm.lw"; lx: "dm.lx"; ly: "dm.ly"; lz: "dm.lz"; ma: "dm.ma"; mb: "dm.mb"; mc: "dm.mc"; md: "dm.md"; me: "dm.me"; mf: "dm.mf"; mg: "dm.mg"; mh: "dm.mh"; mi: "dm.mi"; mj: "dm.mj"; mk: "dm.mk"; ml: "dm.ml"; mm: "dm.mm"; mn: "dm.mn"; mo: "dm.mo"; mp: "dm.mp"; mq: "dm.mq"; mr: "dm.mr"; ms: "dm.ms"; mt: "dm.mt"; mu: "dm.mu"; mv: "dm.mv"; mw: "dm.mw"; mx: "dm.mx"; my: "dm.my"; mz: "dm.mz"; na: "dm.na"; nb: "dm.nb"; nc: "dm.nc"; nd: "dm.nd"; ne: "dm.ne"; nf: "dm.nf"; ng: "dm.ng"; nh: "dm.nh"; ni: "dm.ni"; nj: "dm.nj"; nk: "dm.nk"; nl: "dm.nl"; nm: "dm.nm"; nn: "dm.nn"; no: "dm.no"; np: "dm.np"; nq: "dm.nq"; nr: "dm.nr"; ns: "dm.ns"; nt: "dm.nt"; nu: "dm.nu"; nv: "dm.nv"; nw: "dm.nw"; nx: "dm.nx"; ny: "dm.ny"; nz: "dm.nz"; oa: "dm.oa"; ob: "dm.ob"; oc: "dm.oc"; od: "dm.od"; oe: "dm.oe"; of: "dm.of"; og: "dm.og"; oh: "dm.oh"; oi: "dm.oi"; oj: "dm.oj"; ok: "dm.ok"; ol: "dm.ol"; om: "dm.om"; on: "dm.on"; oo: "dm.oo"; op: "dm.op"; oq: "dm.oq"; or: "dm.or"; os: "dm.os"; ot: "dm.ot"; ou: "dm.ou"; ov: "dm.ov"; ow: "dm.ow"; ox: "dm.ox"; oy: "dm.oy"; oz: "dm.oz"; pa: "dm.pa"; pb: "dm.pb"; pc: "dm.pc"; pd: "dm.pd"; pe: "dm.pe"; pf: "dm.pf"; pg: "dm.pg"; ph: "dm.ph"; pi: "dm.pi"; pj: "dm.pj"; pk: "dm.pk"; pl: "dm.pl"; pm: "dm.pm"; pn: "dm.pn"; po: "dm.po"; pp: "dm.pp"; pq: "dm.pq"; pr: "dm.pr"; ps: "dm.ps"; pt: "dm.pt"; pu: "dm.pu"; pv: "dm.pv"; pw: "dm.pw"; px: "dm.px"; py: "dm.py"; pz: "dm.pz"; qa: "dm.qa"; qb: "dm.qb"; qc: "dm.qc"; qd: "dm.qd"; qe: "dm.qe"; qf: "dm.qf"; qg: "dm.qg"; qh: "dm.qh"; qi: "dm.qi"; qj: "dm.qj"; qk: "dm.qk"; ql: "dm.ql"; qm: "dm.qm"; qn: "dm.qn"; qo: "dm.qo"; qp: "dm.qp"; qq: "dm.qq"; qr: "dm.qr"; qs: "dm.qs"; qt: "dm.qt"; qu: "dm.qu"; qv: "dm.qv"; qw: "dm.qw"; qx: "dm.qx"; qy: "dm.qy"; qz: "dm.qz"; ra: "dm.ra"; rb: "dm.rb"; rc: "dm.rc"; rd: "dm.rd"; re: "dm.re"; rf: "dm.rf"; rg: "dm.rg"; rh: "dm.rh"; ri: "dm.ri"; rj: "dm.rj"; rk: "dm.rk"; rl: "dm.rl"; rm: "dm.rm"; rn: "dm.rn"; ro: "dm.ro"; rp: "dm.rp"; rq: "dm.rq"; rr: "dm.rr"; rs: "dm.rs"; rt: "dm.rt"; ru: "dm.ru"; rv: "dm.rv"; rw: "dm.rw"; rx: "dm.rx"; ry: "dm.ry"; rz: "dm.rz"; sa: "dm.sa"; sb: "dm.sb"; sc: "dm.sc"; sd: "dm.sd"; se: "dm.se"; sf: "dm.sf"; sg: "dm.sg"; sh: "dm.sh"; si: "dm.si"; sj: "dm.sj"; sk: "dm.sk"; sl: "dm.sl"; sm: "dm.sm"; sn: "dm.sn"; so: "dm.so"; sp: "dm.sp"; sq: "dm.sq"; sr: "dm.sr"; ss: "dm.ss"; st: "dm.st"; su: "dm.su"; sv: "dm.sv"; sw: "dm.sw"; sx: "dm.sx"; sy: "dm.sy"; sz: "dm.sz"; ta: "dm.ta"; tb: "dm.tb"; tc: "dm.tc"; td: "dm.td"; te: "dm.te"; tf: "dm.tf"; tg: "dm.tg"; th: "dm.th"; ti: "dm.ti"; tj: "dm.tj"; tk: "dm.tk"; tl: "dm.tl"; tm: "dm.tm"; tn: "dm.tn"; to: "dm.to"; tp: "dm.tp"; tq: "dm.tq"; tr: "dm.tr"; ts: "dm.ts"; tt: "dm.tt"; tu: "dm.tu"; tv: "dm.tv"; tw: "dm.tw"; tx: "dm.tx"; ty: "dm.ty"; tz: "dm.tz"; ua: "dm.ua"; ub: "dm.ub"; uc: "dm.uc"; ud: "dm.ud"; ue: "dm.ue"; uf: "dm.uf"; ug: "dm.ug"; uh: "dm.uh"; ui: "dm.ui"; uj: "dm.uj"; uk: "dm.uk"; ul: "dm.ul"; um: "dm.um"; un: "dm.un"; uo: "dm.uo"; up: "dm.up"; uq: "dm.uq"; ur: "dm.ur"; us: "dm.us"; ut: "dm.ut"; uu: "dm.uu"; uv: "dm.uv"; uw: "dm.uw"; ux: "dm.ux"; uy: "dm.uy"; uz: "dm.uz"; va: "dm.va"; vb: "dm.vb"; vc: "dm.vc"; vd: "dm.vd"; ve: "dm.ve"; vf: "dm.vf"; vg: "dm.vg"; vh: "dm.vh"; vi: "dm.vi"; vj: "dm.vj"; vk: "dm.vk"; vl: "dm.vl"; vm: "dm.vm"; vn: "dm.vn"; vo: "dm.vo"; vp: "dm.vp"; vq: "dm.vq"; vr: "dm.vr"; vs: "dm.vs"; vt: "dm.vt"; vu: "dm.vu"; vv: "dm.vv"; vw: "dm.vw"; vx: "dm.vx"; vy: "dm.vy"; vz: "dm.vz"; wa: "dm.wa"; wb: "dm.wb"; wc: "dm.wc"; wd: "dm.wd"; we: "dm.we"; wf: "dm.wf"; wg: "dm.wg"; wh: "dm.wh"; wi: "dm.wi"; wj: "dm.wj"; wk: "dm.wk"; wl: "dm.wl"; wm: "dm.wm"; wn: "dm.wn"; wo: "dm.wo"; wp: "dm.wp"; wq: "dm.wq"; wr: "dm.wr"; ws: "dm.ws"; wt: "dm.wt"; wu: "dm.wu"; wv: "dm.wv"; ww: "dm.ww"; wx: "dm.wx"; wy: "dm.wy"; wz: "dm.wz"; xa: "dm.xa"; xb: "dm.xb"; xc: "dm.xc"; xd: "dm.xd"; xe: "dm.xe"; xf: "dm.xf"; xg: "dm.xg"; xh: "dm.xh"; xi: "dm.xi"; xj: "dm.xj"; xk: "dm.xk"; xl: "dm.xl"; xm: "dm.xm"; xn: "dm.xn"; xo: "dm.xo"; xp: "dm.xp"; xq: "dm.xq"; xr: "dm.xr"; xs: "dm.xs"; xt: "dm.xt"; xu: "dm.xu"; xv: "dm.xv"; xw: "dm.xw"; xx: "dm.xx"; xy: "dm.xy"; xz: "dm.xz"; ya: "dm.ya"; yb: "dm.yb"; yc: "dm.yc"; yd: "dm.yd"; ye: "dm.ye"; yf: "dm.yf"; yg: "dm.yg"; yh: "dm.yh"; yi: "dm.yi"; yj: "dm.yj"; yk: "dm.yk"; yl: "dm.yl"; ym: "dm.ym"; yn: "dm.yn"; yo: "dm.yo"; yp: "dm.yp"; yq: "dm.yq"; yr: "dm.yr"; ys: "dm.ys"; yt: "dm.yt"; yu: "dm.yu"; yv: "dm.yv"; yw: "dm.yw"; yx: "dm.yx"; yy: "dm.yy"; yz: "dm.yz"; za: "dm.za"; zb: "dm.zb"; zc: "dm.zc"; zd: "dm.zd"; ze: "dm.ze"; zf: "dm.zf"; zg: "dm.zg"; zh: "dm.zh"; zi: "dm.zi"; zj: "dm.zj"; zk: "dm.zk"; zl: "dm.zl"; zm: "dm.zm"; zn: "dm.zn"; zo: "dm.zo"; zp: "dm.zp"; zq: "dm.zq"; zr: "dm.zr"; zs: "dm.zs"; zt: "dm.zt"; zu: "dm.zu"; zv: "dm.zv"; zw: "dm.zw"; zx: "dm.zx"; zy: "dm.zy"; zz: "dm.zz"; }; dn: { aa: "dn.aa"; ab: "dn.ab"; ac: "dn.ac"; ad: "dn.ad"; ae: "dn.ae"; af: "dn.af"; ag: "dn.ag"; ah: "dn.ah"; ai: "dn.ai"; aj: "dn.aj"; ak: "dn.ak"; al: "dn.al"; am: "dn.am"; an: "dn.an"; ao: "dn.ao"; ap: "dn.ap"; aq: "dn.aq"; ar: "dn.ar"; as: "dn.as"; at: "dn.at"; au: "dn.au"; av: "dn.av"; aw: "dn.aw"; ax: "dn.ax"; ay: "dn.ay"; az: "dn.az"; ba: "dn.ba"; bb: "dn.bb"; bc: "dn.bc"; bd: "dn.bd"; be: "dn.be"; bf: "dn.bf"; bg: "dn.bg"; bh: "dn.bh"; bi: "dn.bi"; bj: "dn.bj"; bk: "dn.bk"; bl: "dn.bl"; bm: "dn.bm"; bn: "dn.bn"; bo: "dn.bo"; bp: "dn.bp"; bq: "dn.bq"; br: "dn.br"; bs: "dn.bs"; bt: "dn.bt"; bu: "dn.bu"; bv: "dn.bv"; bw: "dn.bw"; bx: "dn.bx"; by: "dn.by"; bz: "dn.bz"; ca: "dn.ca"; cb: "dn.cb"; cc: "dn.cc"; cd: "dn.cd"; ce: "dn.ce"; cf: "dn.cf"; cg: "dn.cg"; ch: "dn.ch"; ci: "dn.ci"; cj: "dn.cj"; ck: "dn.ck"; cl: "dn.cl"; cm: "dn.cm"; cn: "dn.cn"; co: "dn.co"; cp: "dn.cp"; cq: "dn.cq"; cr: "dn.cr"; cs: "dn.cs"; ct: "dn.ct"; cu: "dn.cu"; cv: "dn.cv"; cw: "dn.cw"; cx: "dn.cx"; cy: "dn.cy"; cz: "dn.cz"; da: "dn.da"; db: "dn.db"; dc: "dn.dc"; dd: "dn.dd"; de: "dn.de"; df: "dn.df"; dg: "dn.dg"; dh: "dn.dh"; di: "dn.di"; dj: "dn.dj"; dk: "dn.dk"; dl: "dn.dl"; dm: "dn.dm"; dn: "dn.dn"; do: "dn.do"; dp: "dn.dp"; dq: "dn.dq"; dr: "dn.dr"; ds: "dn.ds"; dt: "dn.dt"; du: "dn.du"; dv: "dn.dv"; dw: "dn.dw"; dx: "dn.dx"; dy: "dn.dy"; dz: "dn.dz"; ea: "dn.ea"; eb: "dn.eb"; ec: "dn.ec"; ed: "dn.ed"; ee: "dn.ee"; ef: "dn.ef"; eg: "dn.eg"; eh: "dn.eh"; ei: "dn.ei"; ej: "dn.ej"; ek: "dn.ek"; el: "dn.el"; em: "dn.em"; en: "dn.en"; eo: "dn.eo"; ep: "dn.ep"; eq: "dn.eq"; er: "dn.er"; es: "dn.es"; et: "dn.et"; eu: "dn.eu"; ev: "dn.ev"; ew: "dn.ew"; ex: "dn.ex"; ey: "dn.ey"; ez: "dn.ez"; fa: "dn.fa"; fb: "dn.fb"; fc: "dn.fc"; fd: "dn.fd"; fe: "dn.fe"; ff: "dn.ff"; fg: "dn.fg"; fh: "dn.fh"; fi: "dn.fi"; fj: "dn.fj"; fk: "dn.fk"; fl: "dn.fl"; fm: "dn.fm"; fn: "dn.fn"; fo: "dn.fo"; fp: "dn.fp"; fq: "dn.fq"; fr: "dn.fr"; fs: "dn.fs"; ft: "dn.ft"; fu: "dn.fu"; fv: "dn.fv"; fw: "dn.fw"; fx: "dn.fx"; fy: "dn.fy"; fz: "dn.fz"; ga: "dn.ga"; gb: "dn.gb"; gc: "dn.gc"; gd: "dn.gd"; ge: "dn.ge"; gf: "dn.gf"; gg: "dn.gg"; gh: "dn.gh"; gi: "dn.gi"; gj: "dn.gj"; gk: "dn.gk"; gl: "dn.gl"; gm: "dn.gm"; gn: "dn.gn"; go: "dn.go"; gp: "dn.gp"; gq: "dn.gq"; gr: "dn.gr"; gs: "dn.gs"; gt: "dn.gt"; gu: "dn.gu"; gv: "dn.gv"; gw: "dn.gw"; gx: "dn.gx"; gy: "dn.gy"; gz: "dn.gz"; ha: "dn.ha"; hb: "dn.hb"; hc: "dn.hc"; hd: "dn.hd"; he: "dn.he"; hf: "dn.hf"; hg: "dn.hg"; hh: "dn.hh"; hi: "dn.hi"; hj: "dn.hj"; hk: "dn.hk"; hl: "dn.hl"; hm: "dn.hm"; hn: "dn.hn"; ho: "dn.ho"; hp: "dn.hp"; hq: "dn.hq"; hr: "dn.hr"; hs: "dn.hs"; ht: "dn.ht"; hu: "dn.hu"; hv: "dn.hv"; hw: "dn.hw"; hx: "dn.hx"; hy: "dn.hy"; hz: "dn.hz"; ia: "dn.ia"; ib: "dn.ib"; ic: "dn.ic"; id: "dn.id"; ie: "dn.ie"; if: "dn.if"; ig: "dn.ig"; ih: "dn.ih"; ii: "dn.ii"; ij: "dn.ij"; ik: "dn.ik"; il: "dn.il"; im: "dn.im"; in: "dn.in"; io: "dn.io"; ip: "dn.ip"; iq: "dn.iq"; ir: "dn.ir"; is: "dn.is"; it: "dn.it"; iu: "dn.iu"; iv: "dn.iv"; iw: "dn.iw"; ix: "dn.ix"; iy: "dn.iy"; iz: "dn.iz"; ja: "dn.ja"; jb: "dn.jb"; jc: "dn.jc"; jd: "dn.jd"; je: "dn.je"; jf: "dn.jf"; jg: "dn.jg"; jh: "dn.jh"; ji: "dn.ji"; jj: "dn.jj"; jk: "dn.jk"; jl: "dn.jl"; jm: "dn.jm"; jn: "dn.jn"; jo: "dn.jo"; jp: "dn.jp"; jq: "dn.jq"; jr: "dn.jr"; js: "dn.js"; jt: "dn.jt"; ju: "dn.ju"; jv: "dn.jv"; jw: "dn.jw"; jx: "dn.jx"; jy: "dn.jy"; jz: "dn.jz"; ka: "dn.ka"; kb: "dn.kb"; kc: "dn.kc"; kd: "dn.kd"; ke: "dn.ke"; kf: "dn.kf"; kg: "dn.kg"; kh: "dn.kh"; ki: "dn.ki"; kj: "dn.kj"; kk: "dn.kk"; kl: "dn.kl"; km: "dn.km"; kn: "dn.kn"; ko: "dn.ko"; kp: "dn.kp"; kq: "dn.kq"; kr: "dn.kr"; ks: "dn.ks"; kt: "dn.kt"; ku: "dn.ku"; kv: "dn.kv"; kw: "dn.kw"; kx: "dn.kx"; ky: "dn.ky"; kz: "dn.kz"; la: "dn.la"; lb: "dn.lb"; lc: "dn.lc"; ld: "dn.ld"; le: "dn.le"; lf: "dn.lf"; lg: "dn.lg"; lh: "dn.lh"; li: "dn.li"; lj: "dn.lj"; lk: "dn.lk"; ll: "dn.ll"; lm: "dn.lm"; ln: "dn.ln"; lo: "dn.lo"; lp: "dn.lp"; lq: "dn.lq"; lr: "dn.lr"; ls: "dn.ls"; lt: "dn.lt"; lu: "dn.lu"; lv: "dn.lv"; lw: "dn.lw"; lx: "dn.lx"; ly: "dn.ly"; lz: "dn.lz"; ma: "dn.ma"; mb: "dn.mb"; mc: "dn.mc"; md: "dn.md"; me: "dn.me"; mf: "dn.mf"; mg: "dn.mg"; mh: "dn.mh"; mi: "dn.mi"; mj: "dn.mj"; mk: "dn.mk"; ml: "dn.ml"; mm: "dn.mm"; mn: "dn.mn"; mo: "dn.mo"; mp: "dn.mp"; mq: "dn.mq"; mr: "dn.mr"; ms: "dn.ms"; mt: "dn.mt"; mu: "dn.mu"; mv: "dn.mv"; mw: "dn.mw"; mx: "dn.mx"; my: "dn.my"; mz: "dn.mz"; na: "dn.na"; nb: "dn.nb"; nc: "dn.nc"; nd: "dn.nd"; ne: "dn.ne"; nf: "dn.nf"; ng: "dn.ng"; nh: "dn.nh"; ni: "dn.ni"; nj: "dn.nj"; nk: "dn.nk"; nl: "dn.nl"; nm: "dn.nm"; nn: "dn.nn"; no: "dn.no"; np: "dn.np"; nq: "dn.nq"; nr: "dn.nr"; ns: "dn.ns"; nt: "dn.nt"; nu: "dn.nu"; nv: "dn.nv"; nw: "dn.nw"; nx: "dn.nx"; ny: "dn.ny"; nz: "dn.nz"; oa: "dn.oa"; ob: "dn.ob"; oc: "dn.oc"; od: "dn.od"; oe: "dn.oe"; of: "dn.of"; og: "dn.og"; oh: "dn.oh"; oi: "dn.oi"; oj: "dn.oj"; ok: "dn.ok"; ol: "dn.ol"; om: "dn.om"; on: "dn.on"; oo: "dn.oo"; op: "dn.op"; oq: "dn.oq"; or: "dn.or"; os: "dn.os"; ot: "dn.ot"; ou: "dn.ou"; ov: "dn.ov"; ow: "dn.ow"; ox: "dn.ox"; oy: "dn.oy"; oz: "dn.oz"; pa: "dn.pa"; pb: "dn.pb"; pc: "dn.pc"; pd: "dn.pd"; pe: "dn.pe"; pf: "dn.pf"; pg: "dn.pg"; ph: "dn.ph"; pi: "dn.pi"; pj: "dn.pj"; pk: "dn.pk"; pl: "dn.pl"; pm: "dn.pm"; pn: "dn.pn"; po: "dn.po"; pp: "dn.pp"; pq: "dn.pq"; pr: "dn.pr"; ps: "dn.ps"; pt: "dn.pt"; pu: "dn.pu"; pv: "dn.pv"; pw: "dn.pw"; px: "dn.px"; py: "dn.py"; pz: "dn.pz"; qa: "dn.qa"; qb: "dn.qb"; qc: "dn.qc"; qd: "dn.qd"; qe: "dn.qe"; qf: "dn.qf"; qg: "dn.qg"; qh: "dn.qh"; qi: "dn.qi"; qj: "dn.qj"; qk: "dn.qk"; ql: "dn.ql"; qm: "dn.qm"; qn: "dn.qn"; qo: "dn.qo"; qp: "dn.qp"; qq: "dn.qq"; qr: "dn.qr"; qs: "dn.qs"; qt: "dn.qt"; qu: "dn.qu"; qv: "dn.qv"; qw: "dn.qw"; qx: "dn.qx"; qy: "dn.qy"; qz: "dn.qz"; ra: "dn.ra"; rb: "dn.rb"; rc: "dn.rc"; rd: "dn.rd"; re: "dn.re"; rf: "dn.rf"; rg: "dn.rg"; rh: "dn.rh"; ri: "dn.ri"; rj: "dn.rj"; rk: "dn.rk"; rl: "dn.rl"; rm: "dn.rm"; rn: "dn.rn"; ro: "dn.ro"; rp: "dn.rp"; rq: "dn.rq"; rr: "dn.rr"; rs: "dn.rs"; rt: "dn.rt"; ru: "dn.ru"; rv: "dn.rv"; rw: "dn.rw"; rx: "dn.rx"; ry: "dn.ry"; rz: "dn.rz"; sa: "dn.sa"; sb: "dn.sb"; sc: "dn.sc"; sd: "dn.sd"; se: "dn.se"; sf: "dn.sf"; sg: "dn.sg"; sh: "dn.sh"; si: "dn.si"; sj: "dn.sj"; sk: "dn.sk"; sl: "dn.sl"; sm: "dn.sm"; sn: "dn.sn"; so: "dn.so"; sp: "dn.sp"; sq: "dn.sq"; sr: "dn.sr"; ss: "dn.ss"; st: "dn.st"; su: "dn.su"; sv: "dn.sv"; sw: "dn.sw"; sx: "dn.sx"; sy: "dn.sy"; sz: "dn.sz"; ta: "dn.ta"; tb: "dn.tb"; tc: "dn.tc"; td: "dn.td"; te: "dn.te"; tf: "dn.tf"; tg: "dn.tg"; th: "dn.th"; ti: "dn.ti"; tj: "dn.tj"; tk: "dn.tk"; tl: "dn.tl"; tm: "dn.tm"; tn: "dn.tn"; to: "dn.to"; tp: "dn.tp"; tq: "dn.tq"; tr: "dn.tr"; ts: "dn.ts"; tt: "dn.tt"; tu: "dn.tu"; tv: "dn.tv"; tw: "dn.tw"; tx: "dn.tx"; ty: "dn.ty"; tz: "dn.tz"; ua: "dn.ua"; ub: "dn.ub"; uc: "dn.uc"; ud: "dn.ud"; ue: "dn.ue"; uf: "dn.uf"; ug: "dn.ug"; uh: "dn.uh"; ui: "dn.ui"; uj: "dn.uj"; uk: "dn.uk"; ul: "dn.ul"; um: "dn.um"; un: "dn.un"; uo: "dn.uo"; up: "dn.up"; uq: "dn.uq"; ur: "dn.ur"; us: "dn.us"; ut: "dn.ut"; uu: "dn.uu"; uv: "dn.uv"; uw: "dn.uw"; ux: "dn.ux"; uy: "dn.uy"; uz: "dn.uz"; va: "dn.va"; vb: "dn.vb"; vc: "dn.vc"; vd: "dn.vd"; ve: "dn.ve"; vf: "dn.vf"; vg: "dn.vg"; vh: "dn.vh"; vi: "dn.vi"; vj: "dn.vj"; vk: "dn.vk"; vl: "dn.vl"; vm: "dn.vm"; vn: "dn.vn"; vo: "dn.vo"; vp: "dn.vp"; vq: "dn.vq"; vr: "dn.vr"; vs: "dn.vs"; vt: "dn.vt"; vu: "dn.vu"; vv: "dn.vv"; vw: "dn.vw"; vx: "dn.vx"; vy: "dn.vy"; vz: "dn.vz"; wa: "dn.wa"; wb: "dn.wb"; wc: "dn.wc"; wd: "dn.wd"; we: "dn.we"; wf: "dn.wf"; wg: "dn.wg"; wh: "dn.wh"; wi: "dn.wi"; wj: "dn.wj"; wk: "dn.wk"; wl: "dn.wl"; wm: "dn.wm"; wn: "dn.wn"; wo: "dn.wo"; wp: "dn.wp"; wq: "dn.wq"; wr: "dn.wr"; ws: "dn.ws"; wt: "dn.wt"; wu: "dn.wu"; wv: "dn.wv"; ww: "dn.ww"; wx: "dn.wx"; wy: "dn.wy"; wz: "dn.wz"; xa: "dn.xa"; xb: "dn.xb"; xc: "dn.xc"; xd: "dn.xd"; xe: "dn.xe"; xf: "dn.xf"; xg: "dn.xg"; xh: "dn.xh"; xi: "dn.xi"; xj: "dn.xj"; xk: "dn.xk"; xl: "dn.xl"; xm: "dn.xm"; xn: "dn.xn"; xo: "dn.xo"; xp: "dn.xp"; xq: "dn.xq"; xr: "dn.xr"; xs: "dn.xs"; xt: "dn.xt"; xu: "dn.xu"; xv: "dn.xv"; xw: "dn.xw"; xx: "dn.xx"; xy: "dn.xy"; xz: "dn.xz"; ya: "dn.ya"; yb: "dn.yb"; yc: "dn.yc"; yd: "dn.yd"; ye: "dn.ye"; yf: "dn.yf"; yg: "dn.yg"; yh: "dn.yh"; yi: "dn.yi"; yj: "dn.yj"; yk: "dn.yk"; yl: "dn.yl"; ym: "dn.ym"; yn: "dn.yn"; yo: "dn.yo"; yp: "dn.yp"; yq: "dn.yq"; yr: "dn.yr"; ys: "dn.ys"; yt: "dn.yt"; yu: "dn.yu"; yv: "dn.yv"; yw: "dn.yw"; yx: "dn.yx"; yy: "dn.yy"; yz: "dn.yz"; za: "dn.za"; zb: "dn.zb"; zc: "dn.zc"; zd: "dn.zd"; ze: "dn.ze"; zf: "dn.zf"; zg: "dn.zg"; zh: "dn.zh"; zi: "dn.zi"; zj: "dn.zj"; zk: "dn.zk"; zl: "dn.zl"; zm: "dn.zm"; zn: "dn.zn"; zo: "dn.zo"; zp: "dn.zp"; zq: "dn.zq"; zr: "dn.zr"; zs: "dn.zs"; zt: "dn.zt"; zu: "dn.zu"; zv: "dn.zv"; zw: "dn.zw"; zx: "dn.zx"; zy: "dn.zy"; zz: "dn.zz"; }; do: { aa: "do.aa"; ab: "do.ab"; ac: "do.ac"; ad: "do.ad"; ae: "do.ae"; af: "do.af"; ag: "do.ag"; ah: "do.ah"; ai: "do.ai"; aj: "do.aj"; ak: "do.ak"; al: "do.al"; am: "do.am"; an: "do.an"; ao: "do.ao"; ap: "do.ap"; aq: "do.aq"; ar: "do.ar"; as: "do.as"; at: "do.at"; au: "do.au"; av: "do.av"; aw: "do.aw"; ax: "do.ax"; ay: "do.ay"; az: "do.az"; ba: "do.ba"; bb: "do.bb"; bc: "do.bc"; bd: "do.bd"; be: "do.be"; bf: "do.bf"; bg: "do.bg"; bh: "do.bh"; bi: "do.bi"; bj: "do.bj"; bk: "do.bk"; bl: "do.bl"; bm: "do.bm"; bn: "do.bn"; bo: "do.bo"; bp: "do.bp"; bq: "do.bq"; br: "do.br"; bs: "do.bs"; bt: "do.bt"; bu: "do.bu"; bv: "do.bv"; bw: "do.bw"; bx: "do.bx"; by: "do.by"; bz: "do.bz"; ca: "do.ca"; cb: "do.cb"; cc: "do.cc"; cd: "do.cd"; ce: "do.ce"; cf: "do.cf"; cg: "do.cg"; ch: "do.ch"; ci: "do.ci"; cj: "do.cj"; ck: "do.ck"; cl: "do.cl"; cm: "do.cm"; cn: "do.cn"; co: "do.co"; cp: "do.cp"; cq: "do.cq"; cr: "do.cr"; cs: "do.cs"; ct: "do.ct"; cu: "do.cu"; cv: "do.cv"; cw: "do.cw"; cx: "do.cx"; cy: "do.cy"; cz: "do.cz"; da: "do.da"; db: "do.db"; dc: "do.dc"; dd: "do.dd"; de: "do.de"; df: "do.df"; dg: "do.dg"; dh: "do.dh"; di: "do.di"; dj: "do.dj"; dk: "do.dk"; dl: "do.dl"; dm: "do.dm"; dn: "do.dn"; do: "do.do"; dp: "do.dp"; dq: "do.dq"; dr: "do.dr"; ds: "do.ds"; dt: "do.dt"; du: "do.du"; dv: "do.dv"; dw: "do.dw"; dx: "do.dx"; dy: "do.dy"; dz: "do.dz"; ea: "do.ea"; eb: "do.eb"; ec: "do.ec"; ed: "do.ed"; ee: "do.ee"; ef: "do.ef"; eg: "do.eg"; eh: "do.eh"; ei: "do.ei"; ej: "do.ej"; ek: "do.ek"; el: "do.el"; em: "do.em"; en: "do.en"; eo: "do.eo"; ep: "do.ep"; eq: "do.eq"; er: "do.er"; es: "do.es"; et: "do.et"; eu: "do.eu"; ev: "do.ev"; ew: "do.ew"; ex: "do.ex"; ey: "do.ey"; ez: "do.ez"; fa: "do.fa"; fb: "do.fb"; fc: "do.fc"; fd: "do.fd"; fe: "do.fe"; ff: "do.ff"; fg: "do.fg"; fh: "do.fh"; fi: "do.fi"; fj: "do.fj"; fk: "do.fk"; fl: "do.fl"; fm: "do.fm"; fn: "do.fn"; fo: "do.fo"; fp: "do.fp"; fq: "do.fq"; fr: "do.fr"; fs: "do.fs"; ft: "do.ft"; fu: "do.fu"; fv: "do.fv"; fw: "do.fw"; fx: "do.fx"; fy: "do.fy"; fz: "do.fz"; ga: "do.ga"; gb: "do.gb"; gc: "do.gc"; gd: "do.gd"; ge: "do.ge"; gf: "do.gf"; gg: "do.gg"; gh: "do.gh"; gi: "do.gi"; gj: "do.gj"; gk: "do.gk"; gl: "do.gl"; gm: "do.gm"; gn: "do.gn"; go: "do.go"; gp: "do.gp"; gq: "do.gq"; gr: "do.gr"; gs: "do.gs"; gt: "do.gt"; gu: "do.gu"; gv: "do.gv"; gw: "do.gw"; gx: "do.gx"; gy: "do.gy"; gz: "do.gz"; ha: "do.ha"; hb: "do.hb"; hc: "do.hc"; hd: "do.hd"; he: "do.he"; hf: "do.hf"; hg: "do.hg"; hh: "do.hh"; hi: "do.hi"; hj: "do.hj"; hk: "do.hk"; hl: "do.hl"; hm: "do.hm"; hn: "do.hn"; ho: "do.ho"; hp: "do.hp"; hq: "do.hq"; hr: "do.hr"; hs: "do.hs"; ht: "do.ht"; hu: "do.hu"; hv: "do.hv"; hw: "do.hw"; hx: "do.hx"; hy: "do.hy"; hz: "do.hz"; ia: "do.ia"; ib: "do.ib"; ic: "do.ic"; id: "do.id"; ie: "do.ie"; if: "do.if"; ig: "do.ig"; ih: "do.ih"; ii: "do.ii"; ij: "do.ij"; ik: "do.ik"; il: "do.il"; im: "do.im"; in: "do.in"; io: "do.io"; ip: "do.ip"; iq: "do.iq"; ir: "do.ir"; is: "do.is"; it: "do.it"; iu: "do.iu"; iv: "do.iv"; iw: "do.iw"; ix: "do.ix"; iy: "do.iy"; iz: "do.iz"; ja: "do.ja"; jb: "do.jb"; jc: "do.jc"; jd: "do.jd"; je: "do.je"; jf: "do.jf"; jg: "do.jg"; jh: "do.jh"; ji: "do.ji"; jj: "do.jj"; jk: "do.jk"; jl: "do.jl"; jm: "do.jm"; jn: "do.jn"; jo: "do.jo"; jp: "do.jp"; jq: "do.jq"; jr: "do.jr"; js: "do.js"; jt: "do.jt"; ju: "do.ju"; jv: "do.jv"; jw: "do.jw"; jx: "do.jx"; jy: "do.jy"; jz: "do.jz"; ka: "do.ka"; kb: "do.kb"; kc: "do.kc"; kd: "do.kd"; ke: "do.ke"; kf: "do.kf"; kg: "do.kg"; kh: "do.kh"; ki: "do.ki"; kj: "do.kj"; kk: "do.kk"; kl: "do.kl"; km: "do.km"; kn: "do.kn"; ko: "do.ko"; kp: "do.kp"; kq: "do.kq"; kr: "do.kr"; ks: "do.ks"; kt: "do.kt"; ku: "do.ku"; kv: "do.kv"; kw: "do.kw"; kx: "do.kx"; ky: "do.ky"; kz: "do.kz"; la: "do.la"; lb: "do.lb"; lc: "do.lc"; ld: "do.ld"; le: "do.le"; lf: "do.lf"; lg: "do.lg"; lh: "do.lh"; li: "do.li"; lj: "do.lj"; lk: "do.lk"; ll: "do.ll"; lm: "do.lm"; ln: "do.ln"; lo: "do.lo"; lp: "do.lp"; lq: "do.lq"; lr: "do.lr"; ls: "do.ls"; lt: "do.lt"; lu: "do.lu"; lv: "do.lv"; lw: "do.lw"; lx: "do.lx"; ly: "do.ly"; lz: "do.lz"; ma: "do.ma"; mb: "do.mb"; mc: "do.mc"; md: "do.md"; me: "do.me"; mf: "do.mf"; mg: "do.mg"; mh: "do.mh"; mi: "do.mi"; mj: "do.mj"; mk: "do.mk"; ml: "do.ml"; mm: "do.mm"; mn: "do.mn"; mo: "do.mo"; mp: "do.mp"; mq: "do.mq"; mr: "do.mr"; ms: "do.ms"; mt: "do.mt"; mu: "do.mu"; mv: "do.mv"; mw: "do.mw"; mx: "do.mx"; my: "do.my"; mz: "do.mz"; na: "do.na"; nb: "do.nb"; nc: "do.nc"; nd: "do.nd"; ne: "do.ne"; nf: "do.nf"; ng: "do.ng"; nh: "do.nh"; ni: "do.ni"; nj: "do.nj"; nk: "do.nk"; nl: "do.nl"; nm: "do.nm"; nn: "do.nn"; no: "do.no"; np: "do.np"; nq: "do.nq"; nr: "do.nr"; ns: "do.ns"; nt: "do.nt"; nu: "do.nu"; nv: "do.nv"; nw: "do.nw"; nx: "do.nx"; ny: "do.ny"; nz: "do.nz"; oa: "do.oa"; ob: "do.ob"; oc: "do.oc"; od: "do.od"; oe: "do.oe"; of: "do.of"; og: "do.og"; oh: "do.oh"; oi: "do.oi"; oj: "do.oj"; ok: "do.ok"; ol: "do.ol"; om: "do.om"; on: "do.on"; oo: "do.oo"; op: "do.op"; oq: "do.oq"; or: "do.or"; os: "do.os"; ot: "do.ot"; ou: "do.ou"; ov: "do.ov"; ow: "do.ow"; ox: "do.ox"; oy: "do.oy"; oz: "do.oz"; pa: "do.pa"; pb: "do.pb"; pc: "do.pc"; pd: "do.pd"; pe: "do.pe"; pf: "do.pf"; pg: "do.pg"; ph: "do.ph"; pi: "do.pi"; pj: "do.pj"; pk: "do.pk"; pl: "do.pl"; pm: "do.pm"; pn: "do.pn"; po: "do.po"; pp: "do.pp"; pq: "do.pq"; pr: "do.pr"; ps: "do.ps"; pt: "do.pt"; pu: "do.pu"; pv: "do.pv"; pw: "do.pw"; px: "do.px"; py: "do.py"; pz: "do.pz"; qa: "do.qa"; qb: "do.qb"; qc: "do.qc"; qd: "do.qd"; qe: "do.qe"; qf: "do.qf"; qg: "do.qg"; qh: "do.qh"; qi: "do.qi"; qj: "do.qj"; qk: "do.qk"; ql: "do.ql"; qm: "do.qm"; qn: "do.qn"; qo: "do.qo"; qp: "do.qp"; qq: "do.qq"; qr: "do.qr"; qs: "do.qs"; qt: "do.qt"; qu: "do.qu"; qv: "do.qv"; qw: "do.qw"; qx: "do.qx"; qy: "do.qy"; qz: "do.qz"; ra: "do.ra"; rb: "do.rb"; rc: "do.rc"; rd: "do.rd"; re: "do.re"; rf: "do.rf"; rg: "do.rg"; rh: "do.rh"; ri: "do.ri"; rj: "do.rj"; rk: "do.rk"; rl: "do.rl"; rm: "do.rm"; rn: "do.rn"; ro: "do.ro"; rp: "do.rp"; rq: "do.rq"; rr: "do.rr"; rs: "do.rs"; rt: "do.rt"; ru: "do.ru"; rv: "do.rv"; rw: "do.rw"; rx: "do.rx"; ry: "do.ry"; rz: "do.rz"; sa: "do.sa"; sb: "do.sb"; sc: "do.sc"; sd: "do.sd"; se: "do.se"; sf: "do.sf"; sg: "do.sg"; sh: "do.sh"; si: "do.si"; sj: "do.sj"; sk: "do.sk"; sl: "do.sl"; sm: "do.sm"; sn: "do.sn"; so: "do.so"; sp: "do.sp"; sq: "do.sq"; sr: "do.sr"; ss: "do.ss"; st: "do.st"; su: "do.su"; sv: "do.sv"; sw: "do.sw"; sx: "do.sx"; sy: "do.sy"; sz: "do.sz"; ta: "do.ta"; tb: "do.tb"; tc: "do.tc"; td: "do.td"; te: "do.te"; tf: "do.tf"; tg: "do.tg"; th: "do.th"; ti: "do.ti"; tj: "do.tj"; tk: "do.tk"; tl: "do.tl"; tm: "do.tm"; tn: "do.tn"; to: "do.to"; tp: "do.tp"; tq: "do.tq"; tr: "do.tr"; ts: "do.ts"; tt: "do.tt"; tu: "do.tu"; tv: "do.tv"; tw: "do.tw"; tx: "do.tx"; ty: "do.ty"; tz: "do.tz"; ua: "do.ua"; ub: "do.ub"; uc: "do.uc"; ud: "do.ud"; ue: "do.ue"; uf: "do.uf"; ug: "do.ug"; uh: "do.uh"; ui: "do.ui"; uj: "do.uj"; uk: "do.uk"; ul: "do.ul"; um: "do.um"; un: "do.un"; uo: "do.uo"; up: "do.up"; uq: "do.uq"; ur: "do.ur"; us: "do.us"; ut: "do.ut"; uu: "do.uu"; uv: "do.uv"; uw: "do.uw"; ux: "do.ux"; uy: "do.uy"; uz: "do.uz"; va: "do.va"; vb: "do.vb"; vc: "do.vc"; vd: "do.vd"; ve: "do.ve"; vf: "do.vf"; vg: "do.vg"; vh: "do.vh"; vi: "do.vi"; vj: "do.vj"; vk: "do.vk"; vl: "do.vl"; vm: "do.vm"; vn: "do.vn"; vo: "do.vo"; vp: "do.vp"; vq: "do.vq"; vr: "do.vr"; vs: "do.vs"; vt: "do.vt"; vu: "do.vu"; vv: "do.vv"; vw: "do.vw"; vx: "do.vx"; vy: "do.vy"; vz: "do.vz"; wa: "do.wa"; wb: "do.wb"; wc: "do.wc"; wd: "do.wd"; we: "do.we"; wf: "do.wf"; wg: "do.wg"; wh: "do.wh"; wi: "do.wi"; wj: "do.wj"; wk: "do.wk"; wl: "do.wl"; wm: "do.wm"; wn: "do.wn"; wo: "do.wo"; wp: "do.wp"; wq: "do.wq"; wr: "do.wr"; ws: "do.ws"; wt: "do.wt"; wu: "do.wu"; wv: "do.wv"; ww: "do.ww"; wx: "do.wx"; wy: "do.wy"; wz: "do.wz"; xa: "do.xa"; xb: "do.xb"; xc: "do.xc"; xd: "do.xd"; xe: "do.xe"; xf: "do.xf"; xg: "do.xg"; xh: "do.xh"; xi: "do.xi"; xj: "do.xj"; xk: "do.xk"; xl: "do.xl"; xm: "do.xm"; xn: "do.xn"; xo: "do.xo"; xp: "do.xp"; xq: "do.xq"; xr: "do.xr"; xs: "do.xs"; xt: "do.xt"; xu: "do.xu"; xv: "do.xv"; xw: "do.xw"; xx: "do.xx"; xy: "do.xy"; xz: "do.xz"; ya: "do.ya"; yb: "do.yb"; yc: "do.yc"; yd: "do.yd"; ye: "do.ye"; yf: "do.yf"; yg: "do.yg"; yh: "do.yh"; yi: "do.yi"; yj: "do.yj"; yk: "do.yk"; yl: "do.yl"; ym: "do.ym"; yn: "do.yn"; yo: "do.yo"; yp: "do.yp"; yq: "do.yq"; yr: "do.yr"; ys: "do.ys"; yt: "do.yt"; yu: "do.yu"; yv: "do.yv"; yw: "do.yw"; yx: "do.yx"; yy: "do.yy"; yz: "do.yz"; za: "do.za"; zb: "do.zb"; zc: "do.zc"; zd: "do.zd"; ze: "do.ze"; zf: "do.zf"; zg: "do.zg"; zh: "do.zh"; zi: "do.zi"; zj: "do.zj"; zk: "do.zk"; zl: "do.zl"; zm: "do.zm"; zn: "do.zn"; zo: "do.zo"; zp: "do.zp"; zq: "do.zq"; zr: "do.zr"; zs: "do.zs"; zt: "do.zt"; zu: "do.zu"; zv: "do.zv"; zw: "do.zw"; zx: "do.zx"; zy: "do.zy"; zz: "do.zz"; }; dp: { aa: "dp.aa"; ab: "dp.ab"; ac: "dp.ac"; ad: "dp.ad"; ae: "dp.ae"; af: "dp.af"; ag: "dp.ag"; ah: "dp.ah"; ai: "dp.ai"; aj: "dp.aj"; ak: "dp.ak"; al: "dp.al"; am: "dp.am"; an: "dp.an"; ao: "dp.ao"; ap: "dp.ap"; aq: "dp.aq"; ar: "dp.ar"; as: "dp.as"; at: "dp.at"; au: "dp.au"; av: "dp.av"; aw: "dp.aw"; ax: "dp.ax"; ay: "dp.ay"; az: "dp.az"; ba: "dp.ba"; bb: "dp.bb"; bc: "dp.bc"; bd: "dp.bd"; be: "dp.be"; bf: "dp.bf"; bg: "dp.bg"; bh: "dp.bh"; bi: "dp.bi"; bj: "dp.bj"; bk: "dp.bk"; bl: "dp.bl"; bm: "dp.bm"; bn: "dp.bn"; bo: "dp.bo"; bp: "dp.bp"; bq: "dp.bq"; br: "dp.br"; bs: "dp.bs"; bt: "dp.bt"; bu: "dp.bu"; bv: "dp.bv"; bw: "dp.bw"; bx: "dp.bx"; by: "dp.by"; bz: "dp.bz"; ca: "dp.ca"; cb: "dp.cb"; cc: "dp.cc"; cd: "dp.cd"; ce: "dp.ce"; cf: "dp.cf"; cg: "dp.cg"; ch: "dp.ch"; ci: "dp.ci"; cj: "dp.cj"; ck: "dp.ck"; cl: "dp.cl"; cm: "dp.cm"; cn: "dp.cn"; co: "dp.co"; cp: "dp.cp"; cq: "dp.cq"; cr: "dp.cr"; cs: "dp.cs"; ct: "dp.ct"; cu: "dp.cu"; cv: "dp.cv"; cw: "dp.cw"; cx: "dp.cx"; cy: "dp.cy"; cz: "dp.cz"; da: "dp.da"; db: "dp.db"; dc: "dp.dc"; dd: "dp.dd"; de: "dp.de"; df: "dp.df"; dg: "dp.dg"; dh: "dp.dh"; di: "dp.di"; dj: "dp.dj"; dk: "dp.dk"; dl: "dp.dl"; dm: "dp.dm"; dn: "dp.dn"; do: "dp.do"; dp: "dp.dp"; dq: "dp.dq"; dr: "dp.dr"; ds: "dp.ds"; dt: "dp.dt"; du: "dp.du"; dv: "dp.dv"; dw: "dp.dw"; dx: "dp.dx"; dy: "dp.dy"; dz: "dp.dz"; ea: "dp.ea"; eb: "dp.eb"; ec: "dp.ec"; ed: "dp.ed"; ee: "dp.ee"; ef: "dp.ef"; eg: "dp.eg"; eh: "dp.eh"; ei: "dp.ei"; ej: "dp.ej"; ek: "dp.ek"; el: "dp.el"; em: "dp.em"; en: "dp.en"; eo: "dp.eo"; ep: "dp.ep"; eq: "dp.eq"; er: "dp.er"; es: "dp.es"; et: "dp.et"; eu: "dp.eu"; ev: "dp.ev"; ew: "dp.ew"; ex: "dp.ex"; ey: "dp.ey"; ez: "dp.ez"; fa: "dp.fa"; fb: "dp.fb"; fc: "dp.fc"; fd: "dp.fd"; fe: "dp.fe"; ff: "dp.ff"; fg: "dp.fg"; fh: "dp.fh"; fi: "dp.fi"; fj: "dp.fj"; fk: "dp.fk"; fl: "dp.fl"; fm: "dp.fm"; fn: "dp.fn"; fo: "dp.fo"; fp: "dp.fp"; fq: "dp.fq"; fr: "dp.fr"; fs: "dp.fs"; ft: "dp.ft"; fu: "dp.fu"; fv: "dp.fv"; fw: "dp.fw"; fx: "dp.fx"; fy: "dp.fy"; fz: "dp.fz"; ga: "dp.ga"; gb: "dp.gb"; gc: "dp.gc"; gd: "dp.gd"; ge: "dp.ge"; gf: "dp.gf"; gg: "dp.gg"; gh: "dp.gh"; gi: "dp.gi"; gj: "dp.gj"; gk: "dp.gk"; gl: "dp.gl"; gm: "dp.gm"; gn: "dp.gn"; go: "dp.go"; gp: "dp.gp"; gq: "dp.gq"; gr: "dp.gr"; gs: "dp.gs"; gt: "dp.gt"; gu: "dp.gu"; gv: "dp.gv"; gw: "dp.gw"; gx: "dp.gx"; gy: "dp.gy"; gz: "dp.gz"; ha: "dp.ha"; hb: "dp.hb"; hc: "dp.hc"; hd: "dp.hd"; he: "dp.he"; hf: "dp.hf"; hg: "dp.hg"; hh: "dp.hh"; hi: "dp.hi"; hj: "dp.hj"; hk: "dp.hk"; hl: "dp.hl"; hm: "dp.hm"; hn: "dp.hn"; ho: "dp.ho"; hp: "dp.hp"; hq: "dp.hq"; hr: "dp.hr"; hs: "dp.hs"; ht: "dp.ht"; hu: "dp.hu"; hv: "dp.hv"; hw: "dp.hw"; hx: "dp.hx"; hy: "dp.hy"; hz: "dp.hz"; ia: "dp.ia"; ib: "dp.ib"; ic: "dp.ic"; id: "dp.id"; ie: "dp.ie"; if: "dp.if"; ig: "dp.ig"; ih: "dp.ih"; ii: "dp.ii"; ij: "dp.ij"; ik: "dp.ik"; il: "dp.il"; im: "dp.im"; in: "dp.in"; io: "dp.io"; ip: "dp.ip"; iq: "dp.iq"; ir: "dp.ir"; is: "dp.is"; it: "dp.it"; iu: "dp.iu"; iv: "dp.iv"; iw: "dp.iw"; ix: "dp.ix"; iy: "dp.iy"; iz: "dp.iz"; ja: "dp.ja"; jb: "dp.jb"; jc: "dp.jc"; jd: "dp.jd"; je: "dp.je"; jf: "dp.jf"; jg: "dp.jg"; jh: "dp.jh"; ji: "dp.ji"; jj: "dp.jj"; jk: "dp.jk"; jl: "dp.jl"; jm: "dp.jm"; jn: "dp.jn"; jo: "dp.jo"; jp: "dp.jp"; jq: "dp.jq"; jr: "dp.jr"; js: "dp.js"; jt: "dp.jt"; ju: "dp.ju"; jv: "dp.jv"; jw: "dp.jw"; jx: "dp.jx"; jy: "dp.jy"; jz: "dp.jz"; ka: "dp.ka"; kb: "dp.kb"; kc: "dp.kc"; kd: "dp.kd"; ke: "dp.ke"; kf: "dp.kf"; kg: "dp.kg"; kh: "dp.kh"; ki: "dp.ki"; kj: "dp.kj"; kk: "dp.kk"; kl: "dp.kl"; km: "dp.km"; kn: "dp.kn"; ko: "dp.ko"; kp: "dp.kp"; kq: "dp.kq"; kr: "dp.kr"; ks: "dp.ks"; kt: "dp.kt"; ku: "dp.ku"; kv: "dp.kv"; kw: "dp.kw"; kx: "dp.kx"; ky: "dp.ky"; kz: "dp.kz"; la: "dp.la"; lb: "dp.lb"; lc: "dp.lc"; ld: "dp.ld"; le: "dp.le"; lf: "dp.lf"; lg: "dp.lg"; lh: "dp.lh"; li: "dp.li"; lj: "dp.lj"; lk: "dp.lk"; ll: "dp.ll"; lm: "dp.lm"; ln: "dp.ln"; lo: "dp.lo"; lp: "dp.lp"; lq: "dp.lq"; lr: "dp.lr"; ls: "dp.ls"; lt: "dp.lt"; lu: "dp.lu"; lv: "dp.lv"; lw: "dp.lw"; lx: "dp.lx"; ly: "dp.ly"; lz: "dp.lz"; ma: "dp.ma"; mb: "dp.mb"; mc: "dp.mc"; md: "dp.md"; me: "dp.me"; mf: "dp.mf"; mg: "dp.mg"; mh: "dp.mh"; mi: "dp.mi"; mj: "dp.mj"; mk: "dp.mk"; ml: "dp.ml"; mm: "dp.mm"; mn: "dp.mn"; mo: "dp.mo"; mp: "dp.mp"; mq: "dp.mq"; mr: "dp.mr"; ms: "dp.ms"; mt: "dp.mt"; mu: "dp.mu"; mv: "dp.mv"; mw: "dp.mw"; mx: "dp.mx"; my: "dp.my"; mz: "dp.mz"; na: "dp.na"; nb: "dp.nb"; nc: "dp.nc"; nd: "dp.nd"; ne: "dp.ne"; nf: "dp.nf"; ng: "dp.ng"; nh: "dp.nh"; ni: "dp.ni"; nj: "dp.nj"; nk: "dp.nk"; nl: "dp.nl"; nm: "dp.nm"; nn: "dp.nn"; no: "dp.no"; np: "dp.np"; nq: "dp.nq"; nr: "dp.nr"; ns: "dp.ns"; nt: "dp.nt"; nu: "dp.nu"; nv: "dp.nv"; nw: "dp.nw"; nx: "dp.nx"; ny: "dp.ny"; nz: "dp.nz"; oa: "dp.oa"; ob: "dp.ob"; oc: "dp.oc"; od: "dp.od"; oe: "dp.oe"; of: "dp.of"; og: "dp.og"; oh: "dp.oh"; oi: "dp.oi"; oj: "dp.oj"; ok: "dp.ok"; ol: "dp.ol"; om: "dp.om"; on: "dp.on"; oo: "dp.oo"; op: "dp.op"; oq: "dp.oq"; or: "dp.or"; os: "dp.os"; ot: "dp.ot"; ou: "dp.ou"; ov: "dp.ov"; ow: "dp.ow"; ox: "dp.ox"; oy: "dp.oy"; oz: "dp.oz"; pa: "dp.pa"; pb: "dp.pb"; pc: "dp.pc"; pd: "dp.pd"; pe: "dp.pe"; pf: "dp.pf"; pg: "dp.pg"; ph: "dp.ph"; pi: "dp.pi"; pj: "dp.pj"; pk: "dp.pk"; pl: "dp.pl"; pm: "dp.pm"; pn: "dp.pn"; po: "dp.po"; pp: "dp.pp"; pq: "dp.pq"; pr: "dp.pr"; ps: "dp.ps"; pt: "dp.pt"; pu: "dp.pu"; pv: "dp.pv"; pw: "dp.pw"; px: "dp.px"; py: "dp.py"; pz: "dp.pz"; qa: "dp.qa"; qb: "dp.qb"; qc: "dp.qc"; qd: "dp.qd"; qe: "dp.qe"; qf: "dp.qf"; qg: "dp.qg"; qh: "dp.qh"; qi: "dp.qi"; qj: "dp.qj"; qk: "dp.qk"; ql: "dp.ql"; qm: "dp.qm"; qn: "dp.qn"; qo: "dp.qo"; qp: "dp.qp"; qq: "dp.qq"; qr: "dp.qr"; qs: "dp.qs"; qt: "dp.qt"; qu: "dp.qu"; qv: "dp.qv"; qw: "dp.qw"; qx: "dp.qx"; qy: "dp.qy"; qz: "dp.qz"; ra: "dp.ra"; rb: "dp.rb"; rc: "dp.rc"; rd: "dp.rd"; re: "dp.re"; rf: "dp.rf"; rg: "dp.rg"; rh: "dp.rh"; ri: "dp.ri"; rj: "dp.rj"; rk: "dp.rk"; rl: "dp.rl"; rm: "dp.rm"; rn: "dp.rn"; ro: "dp.ro"; rp: "dp.rp"; rq: "dp.rq"; rr: "dp.rr"; rs: "dp.rs"; rt: "dp.rt"; ru: "dp.ru"; rv: "dp.rv"; rw: "dp.rw"; rx: "dp.rx"; ry: "dp.ry"; rz: "dp.rz"; sa: "dp.sa"; sb: "dp.sb"; sc: "dp.sc"; sd: "dp.sd"; se: "dp.se"; sf: "dp.sf"; sg: "dp.sg"; sh: "dp.sh"; si: "dp.si"; sj: "dp.sj"; sk: "dp.sk"; sl: "dp.sl"; sm: "dp.sm"; sn: "dp.sn"; so: "dp.so"; sp: "dp.sp"; sq: "dp.sq"; sr: "dp.sr"; ss: "dp.ss"; st: "dp.st"; su: "dp.su"; sv: "dp.sv"; sw: "dp.sw"; sx: "dp.sx"; sy: "dp.sy"; sz: "dp.sz"; ta: "dp.ta"; tb: "dp.tb"; tc: "dp.tc"; td: "dp.td"; te: "dp.te"; tf: "dp.tf"; tg: "dp.tg"; th: "dp.th"; ti: "dp.ti"; tj: "dp.tj"; tk: "dp.tk"; tl: "dp.tl"; tm: "dp.tm"; tn: "dp.tn"; to: "dp.to"; tp: "dp.tp"; tq: "dp.tq"; tr: "dp.tr"; ts: "dp.ts"; tt: "dp.tt"; tu: "dp.tu"; tv: "dp.tv"; tw: "dp.tw"; tx: "dp.tx"; ty: "dp.ty"; tz: "dp.tz"; ua: "dp.ua"; ub: "dp.ub"; uc: "dp.uc"; ud: "dp.ud"; ue: "dp.ue"; uf: "dp.uf"; ug: "dp.ug"; uh: "dp.uh"; ui: "dp.ui"; uj: "dp.uj"; uk: "dp.uk"; ul: "dp.ul"; um: "dp.um"; un: "dp.un"; uo: "dp.uo"; up: "dp.up"; uq: "dp.uq"; ur: "dp.ur"; us: "dp.us"; ut: "dp.ut"; uu: "dp.uu"; uv: "dp.uv"; uw: "dp.uw"; ux: "dp.ux"; uy: "dp.uy"; uz: "dp.uz"; va: "dp.va"; vb: "dp.vb"; vc: "dp.vc"; vd: "dp.vd"; ve: "dp.ve"; vf: "dp.vf"; vg: "dp.vg"; vh: "dp.vh"; vi: "dp.vi"; vj: "dp.vj"; vk: "dp.vk"; vl: "dp.vl"; vm: "dp.vm"; vn: "dp.vn"; vo: "dp.vo"; vp: "dp.vp"; vq: "dp.vq"; vr: "dp.vr"; vs: "dp.vs"; vt: "dp.vt"; vu: "dp.vu"; vv: "dp.vv"; vw: "dp.vw"; vx: "dp.vx"; vy: "dp.vy"; vz: "dp.vz"; wa: "dp.wa"; wb: "dp.wb"; wc: "dp.wc"; wd: "dp.wd"; we: "dp.we"; wf: "dp.wf"; wg: "dp.wg"; wh: "dp.wh"; wi: "dp.wi"; wj: "dp.wj"; wk: "dp.wk"; wl: "dp.wl"; wm: "dp.wm"; wn: "dp.wn"; wo: "dp.wo"; wp: "dp.wp"; wq: "dp.wq"; wr: "dp.wr"; ws: "dp.ws"; wt: "dp.wt"; wu: "dp.wu"; wv: "dp.wv"; ww: "dp.ww"; wx: "dp.wx"; wy: "dp.wy"; wz: "dp.wz"; xa: "dp.xa"; xb: "dp.xb"; xc: "dp.xc"; xd: "dp.xd"; xe: "dp.xe"; xf: "dp.xf"; xg: "dp.xg"; xh: "dp.xh"; xi: "dp.xi"; xj: "dp.xj"; xk: "dp.xk"; xl: "dp.xl"; xm: "dp.xm"; xn: "dp.xn"; xo: "dp.xo"; xp: "dp.xp"; xq: "dp.xq"; xr: "dp.xr"; xs: "dp.xs"; xt: "dp.xt"; xu: "dp.xu"; xv: "dp.xv"; xw: "dp.xw"; xx: "dp.xx"; xy: "dp.xy"; xz: "dp.xz"; ya: "dp.ya"; yb: "dp.yb"; yc: "dp.yc"; yd: "dp.yd"; ye: "dp.ye"; yf: "dp.yf"; yg: "dp.yg"; yh: "dp.yh"; yi: "dp.yi"; yj: "dp.yj"; yk: "dp.yk"; yl: "dp.yl"; ym: "dp.ym"; yn: "dp.yn"; yo: "dp.yo"; yp: "dp.yp"; yq: "dp.yq"; yr: "dp.yr"; ys: "dp.ys"; yt: "dp.yt"; yu: "dp.yu"; yv: "dp.yv"; yw: "dp.yw"; yx: "dp.yx"; yy: "dp.yy"; yz: "dp.yz"; za: "dp.za"; zb: "dp.zb"; zc: "dp.zc"; zd: "dp.zd"; ze: "dp.ze"; zf: "dp.zf"; zg: "dp.zg"; zh: "dp.zh"; zi: "dp.zi"; zj: "dp.zj"; zk: "dp.zk"; zl: "dp.zl"; zm: "dp.zm"; zn: "dp.zn"; zo: "dp.zo"; zp: "dp.zp"; zq: "dp.zq"; zr: "dp.zr"; zs: "dp.zs"; zt: "dp.zt"; zu: "dp.zu"; zv: "dp.zv"; zw: "dp.zw"; zx: "dp.zx"; zy: "dp.zy"; zz: "dp.zz"; }; dq: { aa: "dq.aa"; ab: "dq.ab"; ac: "dq.ac"; ad: "dq.ad"; ae: "dq.ae"; af: "dq.af"; ag: "dq.ag"; ah: "dq.ah"; ai: "dq.ai"; aj: "dq.aj"; ak: "dq.ak"; al: "dq.al"; am: "dq.am"; an: "dq.an"; ao: "dq.ao"; ap: "dq.ap"; aq: "dq.aq"; ar: "dq.ar"; as: "dq.as"; at: "dq.at"; au: "dq.au"; av: "dq.av"; aw: "dq.aw"; ax: "dq.ax"; ay: "dq.ay"; az: "dq.az"; ba: "dq.ba"; bb: "dq.bb"; bc: "dq.bc"; bd: "dq.bd"; be: "dq.be"; bf: "dq.bf"; bg: "dq.bg"; bh: "dq.bh"; bi: "dq.bi"; bj: "dq.bj"; bk: "dq.bk"; bl: "dq.bl"; bm: "dq.bm"; bn: "dq.bn"; bo: "dq.bo"; bp: "dq.bp"; bq: "dq.bq"; br: "dq.br"; bs: "dq.bs"; bt: "dq.bt"; bu: "dq.bu"; bv: "dq.bv"; bw: "dq.bw"; bx: "dq.bx"; by: "dq.by"; bz: "dq.bz"; ca: "dq.ca"; cb: "dq.cb"; cc: "dq.cc"; cd: "dq.cd"; ce: "dq.ce"; cf: "dq.cf"; cg: "dq.cg"; ch: "dq.ch"; ci: "dq.ci"; cj: "dq.cj"; ck: "dq.ck"; cl: "dq.cl"; cm: "dq.cm"; cn: "dq.cn"; co: "dq.co"; cp: "dq.cp"; cq: "dq.cq"; cr: "dq.cr"; cs: "dq.cs"; ct: "dq.ct"; cu: "dq.cu"; cv: "dq.cv"; cw: "dq.cw"; cx: "dq.cx"; cy: "dq.cy"; cz: "dq.cz"; da: "dq.da"; db: "dq.db"; dc: "dq.dc"; dd: "dq.dd"; de: "dq.de"; df: "dq.df"; dg: "dq.dg"; dh: "dq.dh"; di: "dq.di"; dj: "dq.dj"; dk: "dq.dk"; dl: "dq.dl"; dm: "dq.dm"; dn: "dq.dn"; do: "dq.do"; dp: "dq.dp"; dq: "dq.dq"; dr: "dq.dr"; ds: "dq.ds"; dt: "dq.dt"; du: "dq.du"; dv: "dq.dv"; dw: "dq.dw"; dx: "dq.dx"; dy: "dq.dy"; dz: "dq.dz"; ea: "dq.ea"; eb: "dq.eb"; ec: "dq.ec"; ed: "dq.ed"; ee: "dq.ee"; ef: "dq.ef"; eg: "dq.eg"; eh: "dq.eh"; ei: "dq.ei"; ej: "dq.ej"; ek: "dq.ek"; el: "dq.el"; em: "dq.em"; en: "dq.en"; eo: "dq.eo"; ep: "dq.ep"; eq: "dq.eq"; er: "dq.er"; es: "dq.es"; et: "dq.et"; eu: "dq.eu"; ev: "dq.ev"; ew: "dq.ew"; ex: "dq.ex"; ey: "dq.ey"; ez: "dq.ez"; fa: "dq.fa"; fb: "dq.fb"; fc: "dq.fc"; fd: "dq.fd"; fe: "dq.fe"; ff: "dq.ff"; fg: "dq.fg"; fh: "dq.fh"; fi: "dq.fi"; fj: "dq.fj"; fk: "dq.fk"; fl: "dq.fl"; fm: "dq.fm"; fn: "dq.fn"; fo: "dq.fo"; fp: "dq.fp"; fq: "dq.fq"; fr: "dq.fr"; fs: "dq.fs"; ft: "dq.ft"; fu: "dq.fu"; fv: "dq.fv"; fw: "dq.fw"; fx: "dq.fx"; fy: "dq.fy"; fz: "dq.fz"; ga: "dq.ga"; gb: "dq.gb"; gc: "dq.gc"; gd: "dq.gd"; ge: "dq.ge"; gf: "dq.gf"; gg: "dq.gg"; gh: "dq.gh"; gi: "dq.gi"; gj: "dq.gj"; gk: "dq.gk"; gl: "dq.gl"; gm: "dq.gm"; gn: "dq.gn"; go: "dq.go"; gp: "dq.gp"; gq: "dq.gq"; gr: "dq.gr"; gs: "dq.gs"; gt: "dq.gt"; gu: "dq.gu"; gv: "dq.gv"; gw: "dq.gw"; gx: "dq.gx"; gy: "dq.gy"; gz: "dq.gz"; ha: "dq.ha"; hb: "dq.hb"; hc: "dq.hc"; hd: "dq.hd"; he: "dq.he"; hf: "dq.hf"; hg: "dq.hg"; hh: "dq.hh"; hi: "dq.hi"; hj: "dq.hj"; hk: "dq.hk"; hl: "dq.hl"; hm: "dq.hm"; hn: "dq.hn"; ho: "dq.ho"; hp: "dq.hp"; hq: "dq.hq"; hr: "dq.hr"; hs: "dq.hs"; ht: "dq.ht"; hu: "dq.hu"; hv: "dq.hv"; hw: "dq.hw"; hx: "dq.hx"; hy: "dq.hy"; hz: "dq.hz"; ia: "dq.ia"; ib: "dq.ib"; ic: "dq.ic"; id: "dq.id"; ie: "dq.ie"; if: "dq.if"; ig: "dq.ig"; ih: "dq.ih"; ii: "dq.ii"; ij: "dq.ij"; ik: "dq.ik"; il: "dq.il"; im: "dq.im"; in: "dq.in"; io: "dq.io"; ip: "dq.ip"; iq: "dq.iq"; ir: "dq.ir"; is: "dq.is"; it: "dq.it"; iu: "dq.iu"; iv: "dq.iv"; iw: "dq.iw"; ix: "dq.ix"; iy: "dq.iy"; iz: "dq.iz"; ja: "dq.ja"; jb: "dq.jb"; jc: "dq.jc"; jd: "dq.jd"; je: "dq.je"; jf: "dq.jf"; jg: "dq.jg"; jh: "dq.jh"; ji: "dq.ji"; jj: "dq.jj"; jk: "dq.jk"; jl: "dq.jl"; jm: "dq.jm"; jn: "dq.jn"; jo: "dq.jo"; jp: "dq.jp"; jq: "dq.jq"; jr: "dq.jr"; js: "dq.js"; jt: "dq.jt"; ju: "dq.ju"; jv: "dq.jv"; jw: "dq.jw"; jx: "dq.jx"; jy: "dq.jy"; jz: "dq.jz"; ka: "dq.ka"; kb: "dq.kb"; kc: "dq.kc"; kd: "dq.kd"; ke: "dq.ke"; kf: "dq.kf"; kg: "dq.kg"; kh: "dq.kh"; ki: "dq.ki"; kj: "dq.kj"; kk: "dq.kk"; kl: "dq.kl"; km: "dq.km"; kn: "dq.kn"; ko: "dq.ko"; kp: "dq.kp"; kq: "dq.kq"; kr: "dq.kr"; ks: "dq.ks"; kt: "dq.kt"; ku: "dq.ku"; kv: "dq.kv"; kw: "dq.kw"; kx: "dq.kx"; ky: "dq.ky"; kz: "dq.kz"; la: "dq.la"; lb: "dq.lb"; lc: "dq.lc"; ld: "dq.ld"; le: "dq.le"; lf: "dq.lf"; lg: "dq.lg"; lh: "dq.lh"; li: "dq.li"; lj: "dq.lj"; lk: "dq.lk"; ll: "dq.ll"; lm: "dq.lm"; ln: "dq.ln"; lo: "dq.lo"; lp: "dq.lp"; lq: "dq.lq"; lr: "dq.lr"; ls: "dq.ls"; lt: "dq.lt"; lu: "dq.lu"; lv: "dq.lv"; lw: "dq.lw"; lx: "dq.lx"; ly: "dq.ly"; lz: "dq.lz"; ma: "dq.ma"; mb: "dq.mb"; mc: "dq.mc"; md: "dq.md"; me: "dq.me"; mf: "dq.mf"; mg: "dq.mg"; mh: "dq.mh"; mi: "dq.mi"; mj: "dq.mj"; mk: "dq.mk"; ml: "dq.ml"; mm: "dq.mm"; mn: "dq.mn"; mo: "dq.mo"; mp: "dq.mp"; mq: "dq.mq"; mr: "dq.mr"; ms: "dq.ms"; mt: "dq.mt"; mu: "dq.mu"; mv: "dq.mv"; mw: "dq.mw"; mx: "dq.mx"; my: "dq.my"; mz: "dq.mz"; na: "dq.na"; nb: "dq.nb"; nc: "dq.nc"; nd: "dq.nd"; ne: "dq.ne"; nf: "dq.nf"; ng: "dq.ng"; nh: "dq.nh"; ni: "dq.ni"; nj: "dq.nj"; nk: "dq.nk"; nl: "dq.nl"; nm: "dq.nm"; nn: "dq.nn"; no: "dq.no"; np: "dq.np"; nq: "dq.nq"; nr: "dq.nr"; ns: "dq.ns"; nt: "dq.nt"; nu: "dq.nu"; nv: "dq.nv"; nw: "dq.nw"; nx: "dq.nx"; ny: "dq.ny"; nz: "dq.nz"; oa: "dq.oa"; ob: "dq.ob"; oc: "dq.oc"; od: "dq.od"; oe: "dq.oe"; of: "dq.of"; og: "dq.og"; oh: "dq.oh"; oi: "dq.oi"; oj: "dq.oj"; ok: "dq.ok"; ol: "dq.ol"; om: "dq.om"; on: "dq.on"; oo: "dq.oo"; op: "dq.op"; oq: "dq.oq"; or: "dq.or"; os: "dq.os"; ot: "dq.ot"; ou: "dq.ou"; ov: "dq.ov"; ow: "dq.ow"; ox: "dq.ox"; oy: "dq.oy"; oz: "dq.oz"; pa: "dq.pa"; pb: "dq.pb"; pc: "dq.pc"; pd: "dq.pd"; pe: "dq.pe"; pf: "dq.pf"; pg: "dq.pg"; ph: "dq.ph"; pi: "dq.pi"; pj: "dq.pj"; pk: "dq.pk"; pl: "dq.pl"; pm: "dq.pm"; pn: "dq.pn"; po: "dq.po"; pp: "dq.pp"; pq: "dq.pq"; pr: "dq.pr"; ps: "dq.ps"; pt: "dq.pt"; pu: "dq.pu"; pv: "dq.pv"; pw: "dq.pw"; px: "dq.px"; py: "dq.py"; pz: "dq.pz"; qa: "dq.qa"; qb: "dq.qb"; qc: "dq.qc"; qd: "dq.qd"; qe: "dq.qe"; qf: "dq.qf"; qg: "dq.qg"; qh: "dq.qh"; qi: "dq.qi"; qj: "dq.qj"; qk: "dq.qk"; ql: "dq.ql"; qm: "dq.qm"; qn: "dq.qn"; qo: "dq.qo"; qp: "dq.qp"; qq: "dq.qq"; qr: "dq.qr"; qs: "dq.qs"; qt: "dq.qt"; qu: "dq.qu"; qv: "dq.qv"; qw: "dq.qw"; qx: "dq.qx"; qy: "dq.qy"; qz: "dq.qz"; ra: "dq.ra"; rb: "dq.rb"; rc: "dq.rc"; rd: "dq.rd"; re: "dq.re"; rf: "dq.rf"; rg: "dq.rg"; rh: "dq.rh"; ri: "dq.ri"; rj: "dq.rj"; rk: "dq.rk"; rl: "dq.rl"; rm: "dq.rm"; rn: "dq.rn"; ro: "dq.ro"; rp: "dq.rp"; rq: "dq.rq"; rr: "dq.rr"; rs: "dq.rs"; rt: "dq.rt"; ru: "dq.ru"; rv: "dq.rv"; rw: "dq.rw"; rx: "dq.rx"; ry: "dq.ry"; rz: "dq.rz"; sa: "dq.sa"; sb: "dq.sb"; sc: "dq.sc"; sd: "dq.sd"; se: "dq.se"; sf: "dq.sf"; sg: "dq.sg"; sh: "dq.sh"; si: "dq.si"; sj: "dq.sj"; sk: "dq.sk"; sl: "dq.sl"; sm: "dq.sm"; sn: "dq.sn"; so: "dq.so"; sp: "dq.sp"; sq: "dq.sq"; sr: "dq.sr"; ss: "dq.ss"; st: "dq.st"; su: "dq.su"; sv: "dq.sv"; sw: "dq.sw"; sx: "dq.sx"; sy: "dq.sy"; sz: "dq.sz"; ta: "dq.ta"; tb: "dq.tb"; tc: "dq.tc"; td: "dq.td"; te: "dq.te"; tf: "dq.tf"; tg: "dq.tg"; th: "dq.th"; ti: "dq.ti"; tj: "dq.tj"; tk: "dq.tk"; tl: "dq.tl"; tm: "dq.tm"; tn: "dq.tn"; to: "dq.to"; tp: "dq.tp"; tq: "dq.tq"; tr: "dq.tr"; ts: "dq.ts"; tt: "dq.tt"; tu: "dq.tu"; tv: "dq.tv"; tw: "dq.tw"; tx: "dq.tx"; ty: "dq.ty"; tz: "dq.tz"; ua: "dq.ua"; ub: "dq.ub"; uc: "dq.uc"; ud: "dq.ud"; ue: "dq.ue"; uf: "dq.uf"; ug: "dq.ug"; uh: "dq.uh"; ui: "dq.ui"; uj: "dq.uj"; uk: "dq.uk"; ul: "dq.ul"; um: "dq.um"; un: "dq.un"; uo: "dq.uo"; up: "dq.up"; uq: "dq.uq"; ur: "dq.ur"; us: "dq.us"; ut: "dq.ut"; uu: "dq.uu"; uv: "dq.uv"; uw: "dq.uw"; ux: "dq.ux"; uy: "dq.uy"; uz: "dq.uz"; va: "dq.va"; vb: "dq.vb"; vc: "dq.vc"; vd: "dq.vd"; ve: "dq.ve"; vf: "dq.vf"; vg: "dq.vg"; vh: "dq.vh"; vi: "dq.vi"; vj: "dq.vj"; vk: "dq.vk"; vl: "dq.vl"; vm: "dq.vm"; vn: "dq.vn"; vo: "dq.vo"; vp: "dq.vp"; vq: "dq.vq"; vr: "dq.vr"; vs: "dq.vs"; vt: "dq.vt"; vu: "dq.vu"; vv: "dq.vv"; vw: "dq.vw"; vx: "dq.vx"; vy: "dq.vy"; vz: "dq.vz"; wa: "dq.wa"; wb: "dq.wb"; wc: "dq.wc"; wd: "dq.wd"; we: "dq.we"; wf: "dq.wf"; wg: "dq.wg"; wh: "dq.wh"; wi: "dq.wi"; wj: "dq.wj"; wk: "dq.wk"; wl: "dq.wl"; wm: "dq.wm"; wn: "dq.wn"; wo: "dq.wo"; wp: "dq.wp"; wq: "dq.wq"; wr: "dq.wr"; ws: "dq.ws"; wt: "dq.wt"; wu: "dq.wu"; wv: "dq.wv"; ww: "dq.ww"; wx: "dq.wx"; wy: "dq.wy"; wz: "dq.wz"; xa: "dq.xa"; xb: "dq.xb"; xc: "dq.xc"; xd: "dq.xd"; xe: "dq.xe"; xf: "dq.xf"; xg: "dq.xg"; xh: "dq.xh"; xi: "dq.xi"; xj: "dq.xj"; xk: "dq.xk"; xl: "dq.xl"; xm: "dq.xm"; xn: "dq.xn"; xo: "dq.xo"; xp: "dq.xp"; xq: "dq.xq"; xr: "dq.xr"; xs: "dq.xs"; xt: "dq.xt"; xu: "dq.xu"; xv: "dq.xv"; xw: "dq.xw"; xx: "dq.xx"; xy: "dq.xy"; xz: "dq.xz"; ya: "dq.ya"; yb: "dq.yb"; yc: "dq.yc"; yd: "dq.yd"; ye: "dq.ye"; yf: "dq.yf"; yg: "dq.yg"; yh: "dq.yh"; yi: "dq.yi"; yj: "dq.yj"; yk: "dq.yk"; yl: "dq.yl"; ym: "dq.ym"; yn: "dq.yn"; yo: "dq.yo"; yp: "dq.yp"; yq: "dq.yq"; yr: "dq.yr"; ys: "dq.ys"; yt: "dq.yt"; yu: "dq.yu"; yv: "dq.yv"; yw: "dq.yw"; yx: "dq.yx"; yy: "dq.yy"; yz: "dq.yz"; za: "dq.za"; zb: "dq.zb"; zc: "dq.zc"; zd: "dq.zd"; ze: "dq.ze"; zf: "dq.zf"; zg: "dq.zg"; zh: "dq.zh"; zi: "dq.zi"; zj: "dq.zj"; zk: "dq.zk"; zl: "dq.zl"; zm: "dq.zm"; zn: "dq.zn"; zo: "dq.zo"; zp: "dq.zp"; zq: "dq.zq"; zr: "dq.zr"; zs: "dq.zs"; zt: "dq.zt"; zu: "dq.zu"; zv: "dq.zv"; zw: "dq.zw"; zx: "dq.zx"; zy: "dq.zy"; zz: "dq.zz"; }; dr: { aa: "dr.aa"; ab: "dr.ab"; ac: "dr.ac"; ad: "dr.ad"; ae: "dr.ae"; af: "dr.af"; ag: "dr.ag"; ah: "dr.ah"; ai: "dr.ai"; aj: "dr.aj"; ak: "dr.ak"; al: "dr.al"; am: "dr.am"; an: "dr.an"; ao: "dr.ao"; ap: "dr.ap"; aq: "dr.aq"; ar: "dr.ar"; as: "dr.as"; at: "dr.at"; au: "dr.au"; av: "dr.av"; aw: "dr.aw"; ax: "dr.ax"; ay: "dr.ay"; az: "dr.az"; ba: "dr.ba"; bb: "dr.bb"; bc: "dr.bc"; bd: "dr.bd"; be: "dr.be"; bf: "dr.bf"; bg: "dr.bg"; bh: "dr.bh"; bi: "dr.bi"; bj: "dr.bj"; bk: "dr.bk"; bl: "dr.bl"; bm: "dr.bm"; bn: "dr.bn"; bo: "dr.bo"; bp: "dr.bp"; bq: "dr.bq"; br: "dr.br"; bs: "dr.bs"; bt: "dr.bt"; bu: "dr.bu"; bv: "dr.bv"; bw: "dr.bw"; bx: "dr.bx"; by: "dr.by"; bz: "dr.bz"; ca: "dr.ca"; cb: "dr.cb"; cc: "dr.cc"; cd: "dr.cd"; ce: "dr.ce"; cf: "dr.cf"; cg: "dr.cg"; ch: "dr.ch"; ci: "dr.ci"; cj: "dr.cj"; ck: "dr.ck"; cl: "dr.cl"; cm: "dr.cm"; cn: "dr.cn"; co: "dr.co"; cp: "dr.cp"; cq: "dr.cq"; cr: "dr.cr"; cs: "dr.cs"; ct: "dr.ct"; cu: "dr.cu"; cv: "dr.cv"; cw: "dr.cw"; cx: "dr.cx"; cy: "dr.cy"; cz: "dr.cz"; da: "dr.da"; db: "dr.db"; dc: "dr.dc"; dd: "dr.dd"; de: "dr.de"; df: "dr.df"; dg: "dr.dg"; dh: "dr.dh"; di: "dr.di"; dj: "dr.dj"; dk: "dr.dk"; dl: "dr.dl"; dm: "dr.dm"; dn: "dr.dn"; do: "dr.do"; dp: "dr.dp"; dq: "dr.dq"; dr: "dr.dr"; ds: "dr.ds"; dt: "dr.dt"; du: "dr.du"; dv: "dr.dv"; dw: "dr.dw"; dx: "dr.dx"; dy: "dr.dy"; dz: "dr.dz"; ea: "dr.ea"; eb: "dr.eb"; ec: "dr.ec"; ed: "dr.ed"; ee: "dr.ee"; ef: "dr.ef"; eg: "dr.eg"; eh: "dr.eh"; ei: "dr.ei"; ej: "dr.ej"; ek: "dr.ek"; el: "dr.el"; em: "dr.em"; en: "dr.en"; eo: "dr.eo"; ep: "dr.ep"; eq: "dr.eq"; er: "dr.er"; es: "dr.es"; et: "dr.et"; eu: "dr.eu"; ev: "dr.ev"; ew: "dr.ew"; ex: "dr.ex"; ey: "dr.ey"; ez: "dr.ez"; fa: "dr.fa"; fb: "dr.fb"; fc: "dr.fc"; fd: "dr.fd"; fe: "dr.fe"; ff: "dr.ff"; fg: "dr.fg"; fh: "dr.fh"; fi: "dr.fi"; fj: "dr.fj"; fk: "dr.fk"; fl: "dr.fl"; fm: "dr.fm"; fn: "dr.fn"; fo: "dr.fo"; fp: "dr.fp"; fq: "dr.fq"; fr: "dr.fr"; fs: "dr.fs"; ft: "dr.ft"; fu: "dr.fu"; fv: "dr.fv"; fw: "dr.fw"; fx: "dr.fx"; fy: "dr.fy"; fz: "dr.fz"; ga: "dr.ga"; gb: "dr.gb"; gc: "dr.gc"; gd: "dr.gd"; ge: "dr.ge"; gf: "dr.gf"; gg: "dr.gg"; gh: "dr.gh"; gi: "dr.gi"; gj: "dr.gj"; gk: "dr.gk"; gl: "dr.gl"; gm: "dr.gm"; gn: "dr.gn"; go: "dr.go"; gp: "dr.gp"; gq: "dr.gq"; gr: "dr.gr"; gs: "dr.gs"; gt: "dr.gt"; gu: "dr.gu"; gv: "dr.gv"; gw: "dr.gw"; gx: "dr.gx"; gy: "dr.gy"; gz: "dr.gz"; ha: "dr.ha"; hb: "dr.hb"; hc: "dr.hc"; hd: "dr.hd"; he: "dr.he"; hf: "dr.hf"; hg: "dr.hg"; hh: "dr.hh"; hi: "dr.hi"; hj: "dr.hj"; hk: "dr.hk"; hl: "dr.hl"; hm: "dr.hm"; hn: "dr.hn"; ho: "dr.ho"; hp: "dr.hp"; hq: "dr.hq"; hr: "dr.hr"; hs: "dr.hs"; ht: "dr.ht"; hu: "dr.hu"; hv: "dr.hv"; hw: "dr.hw"; hx: "dr.hx"; hy: "dr.hy"; hz: "dr.hz"; ia: "dr.ia"; ib: "dr.ib"; ic: "dr.ic"; id: "dr.id"; ie: "dr.ie"; if: "dr.if"; ig: "dr.ig"; ih: "dr.ih"; ii: "dr.ii"; ij: "dr.ij"; ik: "dr.ik"; il: "dr.il"; im: "dr.im"; in: "dr.in"; io: "dr.io"; ip: "dr.ip"; iq: "dr.iq"; ir: "dr.ir"; is: "dr.is"; it: "dr.it"; iu: "dr.iu"; iv: "dr.iv"; iw: "dr.iw"; ix: "dr.ix"; iy: "dr.iy"; iz: "dr.iz"; ja: "dr.ja"; jb: "dr.jb"; jc: "dr.jc"; jd: "dr.jd"; je: "dr.je"; jf: "dr.jf"; jg: "dr.jg"; jh: "dr.jh"; ji: "dr.ji"; jj: "dr.jj"; jk: "dr.jk"; jl: "dr.jl"; jm: "dr.jm"; jn: "dr.jn"; jo: "dr.jo"; jp: "dr.jp"; jq: "dr.jq"; jr: "dr.jr"; js: "dr.js"; jt: "dr.jt"; ju: "dr.ju"; jv: "dr.jv"; jw: "dr.jw"; jx: "dr.jx"; jy: "dr.jy"; jz: "dr.jz"; ka: "dr.ka"; kb: "dr.kb"; kc: "dr.kc"; kd: "dr.kd"; ke: "dr.ke"; kf: "dr.kf"; kg: "dr.kg"; kh: "dr.kh"; ki: "dr.ki"; kj: "dr.kj"; kk: "dr.kk"; kl: "dr.kl"; km: "dr.km"; kn: "dr.kn"; ko: "dr.ko"; kp: "dr.kp"; kq: "dr.kq"; kr: "dr.kr"; ks: "dr.ks"; kt: "dr.kt"; ku: "dr.ku"; kv: "dr.kv"; kw: "dr.kw"; kx: "dr.kx"; ky: "dr.ky"; kz: "dr.kz"; la: "dr.la"; lb: "dr.lb"; lc: "dr.lc"; ld: "dr.ld"; le: "dr.le"; lf: "dr.lf"; lg: "dr.lg"; lh: "dr.lh"; li: "dr.li"; lj: "dr.lj"; lk: "dr.lk"; ll: "dr.ll"; lm: "dr.lm"; ln: "dr.ln"; lo: "dr.lo"; lp: "dr.lp"; lq: "dr.lq"; lr: "dr.lr"; ls: "dr.ls"; lt: "dr.lt"; lu: "dr.lu"; lv: "dr.lv"; lw: "dr.lw"; lx: "dr.lx"; ly: "dr.ly"; lz: "dr.lz"; ma: "dr.ma"; mb: "dr.mb"; mc: "dr.mc"; md: "dr.md"; me: "dr.me"; mf: "dr.mf"; mg: "dr.mg"; mh: "dr.mh"; mi: "dr.mi"; mj: "dr.mj"; mk: "dr.mk"; ml: "dr.ml"; mm: "dr.mm"; mn: "dr.mn"; mo: "dr.mo"; mp: "dr.mp"; mq: "dr.mq"; mr: "dr.mr"; ms: "dr.ms"; mt: "dr.mt"; mu: "dr.mu"; mv: "dr.mv"; mw: "dr.mw"; mx: "dr.mx"; my: "dr.my"; mz: "dr.mz"; na: "dr.na"; nb: "dr.nb"; nc: "dr.nc"; nd: "dr.nd"; ne: "dr.ne"; nf: "dr.nf"; ng: "dr.ng"; nh: "dr.nh"; ni: "dr.ni"; nj: "dr.nj"; nk: "dr.nk"; nl: "dr.nl"; nm: "dr.nm"; nn: "dr.nn"; no: "dr.no"; np: "dr.np"; nq: "dr.nq"; nr: "dr.nr"; ns: "dr.ns"; nt: "dr.nt"; nu: "dr.nu"; nv: "dr.nv"; nw: "dr.nw"; nx: "dr.nx"; ny: "dr.ny"; nz: "dr.nz"; oa: "dr.oa"; ob: "dr.ob"; oc: "dr.oc"; od: "dr.od"; oe: "dr.oe"; of: "dr.of"; og: "dr.og"; oh: "dr.oh"; oi: "dr.oi"; oj: "dr.oj"; ok: "dr.ok"; ol: "dr.ol"; om: "dr.om"; on: "dr.on"; oo: "dr.oo"; op: "dr.op"; oq: "dr.oq"; or: "dr.or"; os: "dr.os"; ot: "dr.ot"; ou: "dr.ou"; ov: "dr.ov"; ow: "dr.ow"; ox: "dr.ox"; oy: "dr.oy"; oz: "dr.oz"; pa: "dr.pa"; pb: "dr.pb"; pc: "dr.pc"; pd: "dr.pd"; pe: "dr.pe"; pf: "dr.pf"; pg: "dr.pg"; ph: "dr.ph"; pi: "dr.pi"; pj: "dr.pj"; pk: "dr.pk"; pl: "dr.pl"; pm: "dr.pm"; pn: "dr.pn"; po: "dr.po"; pp: "dr.pp"; pq: "dr.pq"; pr: "dr.pr"; ps: "dr.ps"; pt: "dr.pt"; pu: "dr.pu"; pv: "dr.pv"; pw: "dr.pw"; px: "dr.px"; py: "dr.py"; pz: "dr.pz"; qa: "dr.qa"; qb: "dr.qb"; qc: "dr.qc"; qd: "dr.qd"; qe: "dr.qe"; qf: "dr.qf"; qg: "dr.qg"; qh: "dr.qh"; qi: "dr.qi"; qj: "dr.qj"; qk: "dr.qk"; ql: "dr.ql"; qm: "dr.qm"; qn: "dr.qn"; qo: "dr.qo"; qp: "dr.qp"; qq: "dr.qq"; qr: "dr.qr"; qs: "dr.qs"; qt: "dr.qt"; qu: "dr.qu"; qv: "dr.qv"; qw: "dr.qw"; qx: "dr.qx"; qy: "dr.qy"; qz: "dr.qz"; ra: "dr.ra"; rb: "dr.rb"; rc: "dr.rc"; rd: "dr.rd"; re: "dr.re"; rf: "dr.rf"; rg: "dr.rg"; rh: "dr.rh"; ri: "dr.ri"; rj: "dr.rj"; rk: "dr.rk"; rl: "dr.rl"; rm: "dr.rm"; rn: "dr.rn"; ro: "dr.ro"; rp: "dr.rp"; rq: "dr.rq"; rr: "dr.rr"; rs: "dr.rs"; rt: "dr.rt"; ru: "dr.ru"; rv: "dr.rv"; rw: "dr.rw"; rx: "dr.rx"; ry: "dr.ry"; rz: "dr.rz"; sa: "dr.sa"; sb: "dr.sb"; sc: "dr.sc"; sd: "dr.sd"; se: "dr.se"; sf: "dr.sf"; sg: "dr.sg"; sh: "dr.sh"; si: "dr.si"; sj: "dr.sj"; sk: "dr.sk"; sl: "dr.sl"; sm: "dr.sm"; sn: "dr.sn"; so: "dr.so"; sp: "dr.sp"; sq: "dr.sq"; sr: "dr.sr"; ss: "dr.ss"; st: "dr.st"; su: "dr.su"; sv: "dr.sv"; sw: "dr.sw"; sx: "dr.sx"; sy: "dr.sy"; sz: "dr.sz"; ta: "dr.ta"; tb: "dr.tb"; tc: "dr.tc"; td: "dr.td"; te: "dr.te"; tf: "dr.tf"; tg: "dr.tg"; th: "dr.th"; ti: "dr.ti"; tj: "dr.tj"; tk: "dr.tk"; tl: "dr.tl"; tm: "dr.tm"; tn: "dr.tn"; to: "dr.to"; tp: "dr.tp"; tq: "dr.tq"; tr: "dr.tr"; ts: "dr.ts"; tt: "dr.tt"; tu: "dr.tu"; tv: "dr.tv"; tw: "dr.tw"; tx: "dr.tx"; ty: "dr.ty"; tz: "dr.tz"; ua: "dr.ua"; ub: "dr.ub"; uc: "dr.uc"; ud: "dr.ud"; ue: "dr.ue"; uf: "dr.uf"; ug: "dr.ug"; uh: "dr.uh"; ui: "dr.ui"; uj: "dr.uj"; uk: "dr.uk"; ul: "dr.ul"; um: "dr.um"; un: "dr.un"; uo: "dr.uo"; up: "dr.up"; uq: "dr.uq"; ur: "dr.ur"; us: "dr.us"; ut: "dr.ut"; uu: "dr.uu"; uv: "dr.uv"; uw: "dr.uw"; ux: "dr.ux"; uy: "dr.uy"; uz: "dr.uz"; va: "dr.va"; vb: "dr.vb"; vc: "dr.vc"; vd: "dr.vd"; ve: "dr.ve"; vf: "dr.vf"; vg: "dr.vg"; vh: "dr.vh"; vi: "dr.vi"; vj: "dr.vj"; vk: "dr.vk"; vl: "dr.vl"; vm: "dr.vm"; vn: "dr.vn"; vo: "dr.vo"; vp: "dr.vp"; vq: "dr.vq"; vr: "dr.vr"; vs: "dr.vs"; vt: "dr.vt"; vu: "dr.vu"; vv: "dr.vv"; vw: "dr.vw"; vx: "dr.vx"; vy: "dr.vy"; vz: "dr.vz"; wa: "dr.wa"; wb: "dr.wb"; wc: "dr.wc"; wd: "dr.wd"; we: "dr.we"; wf: "dr.wf"; wg: "dr.wg"; wh: "dr.wh"; wi: "dr.wi"; wj: "dr.wj"; wk: "dr.wk"; wl: "dr.wl"; wm: "dr.wm"; wn: "dr.wn"; wo: "dr.wo"; wp: "dr.wp"; wq: "dr.wq"; wr: "dr.wr"; ws: "dr.ws"; wt: "dr.wt"; wu: "dr.wu"; wv: "dr.wv"; ww: "dr.ww"; wx: "dr.wx"; wy: "dr.wy"; wz: "dr.wz"; xa: "dr.xa"; xb: "dr.xb"; xc: "dr.xc"; xd: "dr.xd"; xe: "dr.xe"; xf: "dr.xf"; xg: "dr.xg"; xh: "dr.xh"; xi: "dr.xi"; xj: "dr.xj"; xk: "dr.xk"; xl: "dr.xl"; xm: "dr.xm"; xn: "dr.xn"; xo: "dr.xo"; xp: "dr.xp"; xq: "dr.xq"; xr: "dr.xr"; xs: "dr.xs"; xt: "dr.xt"; xu: "dr.xu"; xv: "dr.xv"; xw: "dr.xw"; xx: "dr.xx"; xy: "dr.xy"; xz: "dr.xz"; ya: "dr.ya"; yb: "dr.yb"; yc: "dr.yc"; yd: "dr.yd"; ye: "dr.ye"; yf: "dr.yf"; yg: "dr.yg"; yh: "dr.yh"; yi: "dr.yi"; yj: "dr.yj"; yk: "dr.yk"; yl: "dr.yl"; ym: "dr.ym"; yn: "dr.yn"; yo: "dr.yo"; yp: "dr.yp"; yq: "dr.yq"; yr: "dr.yr"; ys: "dr.ys"; yt: "dr.yt"; yu: "dr.yu"; yv: "dr.yv"; yw: "dr.yw"; yx: "dr.yx"; yy: "dr.yy"; yz: "dr.yz"; za: "dr.za"; zb: "dr.zb"; zc: "dr.zc"; zd: "dr.zd"; ze: "dr.ze"; zf: "dr.zf"; zg: "dr.zg"; zh: "dr.zh"; zi: "dr.zi"; zj: "dr.zj"; zk: "dr.zk"; zl: "dr.zl"; zm: "dr.zm"; zn: "dr.zn"; zo: "dr.zo"; zp: "dr.zp"; zq: "dr.zq"; zr: "dr.zr"; zs: "dr.zs"; zt: "dr.zt"; zu: "dr.zu"; zv: "dr.zv"; zw: "dr.zw"; zx: "dr.zx"; zy: "dr.zy"; zz: "dr.zz"; }; ds: { aa: "ds.aa"; ab: "ds.ab"; ac: "ds.ac"; ad: "ds.ad"; ae: "ds.ae"; af: "ds.af"; ag: "ds.ag"; ah: "ds.ah"; ai: "ds.ai"; aj: "ds.aj"; ak: "ds.ak"; al: "ds.al"; am: "ds.am"; an: "ds.an"; ao: "ds.ao"; ap: "ds.ap"; aq: "ds.aq"; ar: "ds.ar"; as: "ds.as"; at: "ds.at"; au: "ds.au"; av: "ds.av"; aw: "ds.aw"; ax: "ds.ax"; ay: "ds.ay"; az: "ds.az"; ba: "ds.ba"; bb: "ds.bb"; bc: "ds.bc"; bd: "ds.bd"; be: "ds.be"; bf: "ds.bf"; bg: "ds.bg"; bh: "ds.bh"; bi: "ds.bi"; bj: "ds.bj"; bk: "ds.bk"; bl: "ds.bl"; bm: "ds.bm"; bn: "ds.bn"; bo: "ds.bo"; bp: "ds.bp"; bq: "ds.bq"; br: "ds.br"; bs: "ds.bs"; bt: "ds.bt"; bu: "ds.bu"; bv: "ds.bv"; bw: "ds.bw"; bx: "ds.bx"; by: "ds.by"; bz: "ds.bz"; ca: "ds.ca"; cb: "ds.cb"; cc: "ds.cc"; cd: "ds.cd"; ce: "ds.ce"; cf: "ds.cf"; cg: "ds.cg"; ch: "ds.ch"; ci: "ds.ci"; cj: "ds.cj"; ck: "ds.ck"; cl: "ds.cl"; cm: "ds.cm"; cn: "ds.cn"; co: "ds.co"; cp: "ds.cp"; cq: "ds.cq"; cr: "ds.cr"; cs: "ds.cs"; ct: "ds.ct"; cu: "ds.cu"; cv: "ds.cv"; cw: "ds.cw"; cx: "ds.cx"; cy: "ds.cy"; cz: "ds.cz"; da: "ds.da"; db: "ds.db"; dc: "ds.dc"; dd: "ds.dd"; de: "ds.de"; df: "ds.df"; dg: "ds.dg"; dh: "ds.dh"; di: "ds.di"; dj: "ds.dj"; dk: "ds.dk"; dl: "ds.dl"; dm: "ds.dm"; dn: "ds.dn"; do: "ds.do"; dp: "ds.dp"; dq: "ds.dq"; dr: "ds.dr"; ds: "ds.ds"; dt: "ds.dt"; du: "ds.du"; dv: "ds.dv"; dw: "ds.dw"; dx: "ds.dx"; dy: "ds.dy"; dz: "ds.dz"; ea: "ds.ea"; eb: "ds.eb"; ec: "ds.ec"; ed: "ds.ed"; ee: "ds.ee"; ef: "ds.ef"; eg: "ds.eg"; eh: "ds.eh"; ei: "ds.ei"; ej: "ds.ej"; ek: "ds.ek"; el: "ds.el"; em: "ds.em"; en: "ds.en"; eo: "ds.eo"; ep: "ds.ep"; eq: "ds.eq"; er: "ds.er"; es: "ds.es"; et: "ds.et"; eu: "ds.eu"; ev: "ds.ev"; ew: "ds.ew"; ex: "ds.ex"; ey: "ds.ey"; ez: "ds.ez"; fa: "ds.fa"; fb: "ds.fb"; fc: "ds.fc"; fd: "ds.fd"; fe: "ds.fe"; ff: "ds.ff"; fg: "ds.fg"; fh: "ds.fh"; fi: "ds.fi"; fj: "ds.fj"; fk: "ds.fk"; fl: "ds.fl"; fm: "ds.fm"; fn: "ds.fn"; fo: "ds.fo"; fp: "ds.fp"; fq: "ds.fq"; fr: "ds.fr"; fs: "ds.fs"; ft: "ds.ft"; fu: "ds.fu"; fv: "ds.fv"; fw: "ds.fw"; fx: "ds.fx"; fy: "ds.fy"; fz: "ds.fz"; ga: "ds.ga"; gb: "ds.gb"; gc: "ds.gc"; gd: "ds.gd"; ge: "ds.ge"; gf: "ds.gf"; gg: "ds.gg"; gh: "ds.gh"; gi: "ds.gi"; gj: "ds.gj"; gk: "ds.gk"; gl: "ds.gl"; gm: "ds.gm"; gn: "ds.gn"; go: "ds.go"; gp: "ds.gp"; gq: "ds.gq"; gr: "ds.gr"; gs: "ds.gs"; gt: "ds.gt"; gu: "ds.gu"; gv: "ds.gv"; gw: "ds.gw"; gx: "ds.gx"; gy: "ds.gy"; gz: "ds.gz"; ha: "ds.ha"; hb: "ds.hb"; hc: "ds.hc"; hd: "ds.hd"; he: "ds.he"; hf: "ds.hf"; hg: "ds.hg"; hh: "ds.hh"; hi: "ds.hi"; hj: "ds.hj"; hk: "ds.hk"; hl: "ds.hl"; hm: "ds.hm"; hn: "ds.hn"; ho: "ds.ho"; hp: "ds.hp"; hq: "ds.hq"; hr: "ds.hr"; hs: "ds.hs"; ht: "ds.ht"; hu: "ds.hu"; hv: "ds.hv"; hw: "ds.hw"; hx: "ds.hx"; hy: "ds.hy"; hz: "ds.hz"; ia: "ds.ia"; ib: "ds.ib"; ic: "ds.ic"; id: "ds.id"; ie: "ds.ie"; if: "ds.if"; ig: "ds.ig"; ih: "ds.ih"; ii: "ds.ii"; ij: "ds.ij"; ik: "ds.ik"; il: "ds.il"; im: "ds.im"; in: "ds.in"; io: "ds.io"; ip: "ds.ip"; iq: "ds.iq"; ir: "ds.ir"; is: "ds.is"; it: "ds.it"; iu: "ds.iu"; iv: "ds.iv"; iw: "ds.iw"; ix: "ds.ix"; iy: "ds.iy"; iz: "ds.iz"; ja: "ds.ja"; jb: "ds.jb"; jc: "ds.jc"; jd: "ds.jd"; je: "ds.je"; jf: "ds.jf"; jg: "ds.jg"; jh: "ds.jh"; ji: "ds.ji"; jj: "ds.jj"; jk: "ds.jk"; jl: "ds.jl"; jm: "ds.jm"; jn: "ds.jn"; jo: "ds.jo"; jp: "ds.jp"; jq: "ds.jq"; jr: "ds.jr"; js: "ds.js"; jt: "ds.jt"; ju: "ds.ju"; jv: "ds.jv"; jw: "ds.jw"; jx: "ds.jx"; jy: "ds.jy"; jz: "ds.jz"; ka: "ds.ka"; kb: "ds.kb"; kc: "ds.kc"; kd: "ds.kd"; ke: "ds.ke"; kf: "ds.kf"; kg: "ds.kg"; kh: "ds.kh"; ki: "ds.ki"; kj: "ds.kj"; kk: "ds.kk"; kl: "ds.kl"; km: "ds.km"; kn: "ds.kn"; ko: "ds.ko"; kp: "ds.kp"; kq: "ds.kq"; kr: "ds.kr"; ks: "ds.ks"; kt: "ds.kt"; ku: "ds.ku"; kv: "ds.kv"; kw: "ds.kw"; kx: "ds.kx"; ky: "ds.ky"; kz: "ds.kz"; la: "ds.la"; lb: "ds.lb"; lc: "ds.lc"; ld: "ds.ld"; le: "ds.le"; lf: "ds.lf"; lg: "ds.lg"; lh: "ds.lh"; li: "ds.li"; lj: "ds.lj"; lk: "ds.lk"; ll: "ds.ll"; lm: "ds.lm"; ln: "ds.ln"; lo: "ds.lo"; lp: "ds.lp"; lq: "ds.lq"; lr: "ds.lr"; ls: "ds.ls"; lt: "ds.lt"; lu: "ds.lu"; lv: "ds.lv"; lw: "ds.lw"; lx: "ds.lx"; ly: "ds.ly"; lz: "ds.lz"; ma: "ds.ma"; mb: "ds.mb"; mc: "ds.mc"; md: "ds.md"; me: "ds.me"; mf: "ds.mf"; mg: "ds.mg"; mh: "ds.mh"; mi: "ds.mi"; mj: "ds.mj"; mk: "ds.mk"; ml: "ds.ml"; mm: "ds.mm"; mn: "ds.mn"; mo: "ds.mo"; mp: "ds.mp"; mq: "ds.mq"; mr: "ds.mr"; ms: "ds.ms"; mt: "ds.mt"; mu: "ds.mu"; mv: "ds.mv"; mw: "ds.mw"; mx: "ds.mx"; my: "ds.my"; mz: "ds.mz"; na: "ds.na"; nb: "ds.nb"; nc: "ds.nc"; nd: "ds.nd"; ne: "ds.ne"; nf: "ds.nf"; ng: "ds.ng"; nh: "ds.nh"; ni: "ds.ni"; nj: "ds.nj"; nk: "ds.nk"; nl: "ds.nl"; nm: "ds.nm"; nn: "ds.nn"; no: "ds.no"; np: "ds.np"; nq: "ds.nq"; nr: "ds.nr"; ns: "ds.ns"; nt: "ds.nt"; nu: "ds.nu"; nv: "ds.nv"; nw: "ds.nw"; nx: "ds.nx"; ny: "ds.ny"; nz: "ds.nz"; oa: "ds.oa"; ob: "ds.ob"; oc: "ds.oc"; od: "ds.od"; oe: "ds.oe"; of: "ds.of"; og: "ds.og"; oh: "ds.oh"; oi: "ds.oi"; oj: "ds.oj"; ok: "ds.ok"; ol: "ds.ol"; om: "ds.om"; on: "ds.on"; oo: "ds.oo"; op: "ds.op"; oq: "ds.oq"; or: "ds.or"; os: "ds.os"; ot: "ds.ot"; ou: "ds.ou"; ov: "ds.ov"; ow: "ds.ow"; ox: "ds.ox"; oy: "ds.oy"; oz: "ds.oz"; pa: "ds.pa"; pb: "ds.pb"; pc: "ds.pc"; pd: "ds.pd"; pe: "ds.pe"; pf: "ds.pf"; pg: "ds.pg"; ph: "ds.ph"; pi: "ds.pi"; pj: "ds.pj"; pk: "ds.pk"; pl: "ds.pl"; pm: "ds.pm"; pn: "ds.pn"; po: "ds.po"; pp: "ds.pp"; pq: "ds.pq"; pr: "ds.pr"; ps: "ds.ps"; pt: "ds.pt"; pu: "ds.pu"; pv: "ds.pv"; pw: "ds.pw"; px: "ds.px"; py: "ds.py"; pz: "ds.pz"; qa: "ds.qa"; qb: "ds.qb"; qc: "ds.qc"; qd: "ds.qd"; qe: "ds.qe"; qf: "ds.qf"; qg: "ds.qg"; qh: "ds.qh"; qi: "ds.qi"; qj: "ds.qj"; qk: "ds.qk"; ql: "ds.ql"; qm: "ds.qm"; qn: "ds.qn"; qo: "ds.qo"; qp: "ds.qp"; qq: "ds.qq"; qr: "ds.qr"; qs: "ds.qs"; qt: "ds.qt"; qu: "ds.qu"; qv: "ds.qv"; qw: "ds.qw"; qx: "ds.qx"; qy: "ds.qy"; qz: "ds.qz"; ra: "ds.ra"; rb: "ds.rb"; rc: "ds.rc"; rd: "ds.rd"; re: "ds.re"; rf: "ds.rf"; rg: "ds.rg"; rh: "ds.rh"; ri: "ds.ri"; rj: "ds.rj"; rk: "ds.rk"; rl: "ds.rl"; rm: "ds.rm"; rn: "ds.rn"; ro: "ds.ro"; rp: "ds.rp"; rq: "ds.rq"; rr: "ds.rr"; rs: "ds.rs"; rt: "ds.rt"; ru: "ds.ru"; rv: "ds.rv"; rw: "ds.rw"; rx: "ds.rx"; ry: "ds.ry"; rz: "ds.rz"; sa: "ds.sa"; sb: "ds.sb"; sc: "ds.sc"; sd: "ds.sd"; se: "ds.se"; sf: "ds.sf"; sg: "ds.sg"; sh: "ds.sh"; si: "ds.si"; sj: "ds.sj"; sk: "ds.sk"; sl: "ds.sl"; sm: "ds.sm"; sn: "ds.sn"; so: "ds.so"; sp: "ds.sp"; sq: "ds.sq"; sr: "ds.sr"; ss: "ds.ss"; st: "ds.st"; su: "ds.su"; sv: "ds.sv"; sw: "ds.sw"; sx: "ds.sx"; sy: "ds.sy"; sz: "ds.sz"; ta: "ds.ta"; tb: "ds.tb"; tc: "ds.tc"; td: "ds.td"; te: "ds.te"; tf: "ds.tf"; tg: "ds.tg"; th: "ds.th"; ti: "ds.ti"; tj: "ds.tj"; tk: "ds.tk"; tl: "ds.tl"; tm: "ds.tm"; tn: "ds.tn"; to: "ds.to"; tp: "ds.tp"; tq: "ds.tq"; tr: "ds.tr"; ts: "ds.ts"; tt: "ds.tt"; tu: "ds.tu"; tv: "ds.tv"; tw: "ds.tw"; tx: "ds.tx"; ty: "ds.ty"; tz: "ds.tz"; ua: "ds.ua"; ub: "ds.ub"; uc: "ds.uc"; ud: "ds.ud"; ue: "ds.ue"; uf: "ds.uf"; ug: "ds.ug"; uh: "ds.uh"; ui: "ds.ui"; uj: "ds.uj"; uk: "ds.uk"; ul: "ds.ul"; um: "ds.um"; un: "ds.un"; uo: "ds.uo"; up: "ds.up"; uq: "ds.uq"; ur: "ds.ur"; us: "ds.us"; ut: "ds.ut"; uu: "ds.uu"; uv: "ds.uv"; uw: "ds.uw"; ux: "ds.ux"; uy: "ds.uy"; uz: "ds.uz"; va: "ds.va"; vb: "ds.vb"; vc: "ds.vc"; vd: "ds.vd"; ve: "ds.ve"; vf: "ds.vf"; vg: "ds.vg"; vh: "ds.vh"; vi: "ds.vi"; vj: "ds.vj"; vk: "ds.vk"; vl: "ds.vl"; vm: "ds.vm"; vn: "ds.vn"; vo: "ds.vo"; vp: "ds.vp"; vq: "ds.vq"; vr: "ds.vr"; vs: "ds.vs"; vt: "ds.vt"; vu: "ds.vu"; vv: "ds.vv"; vw: "ds.vw"; vx: "ds.vx"; vy: "ds.vy"; vz: "ds.vz"; wa: "ds.wa"; wb: "ds.wb"; wc: "ds.wc"; wd: "ds.wd"; we: "ds.we"; wf: "ds.wf"; wg: "ds.wg"; wh: "ds.wh"; wi: "ds.wi"; wj: "ds.wj"; wk: "ds.wk"; wl: "ds.wl"; wm: "ds.wm"; wn: "ds.wn"; wo: "ds.wo"; wp: "ds.wp"; wq: "ds.wq"; wr: "ds.wr"; ws: "ds.ws"; wt: "ds.wt"; wu: "ds.wu"; wv: "ds.wv"; ww: "ds.ww"; wx: "ds.wx"; wy: "ds.wy"; wz: "ds.wz"; xa: "ds.xa"; xb: "ds.xb"; xc: "ds.xc"; xd: "ds.xd"; xe: "ds.xe"; xf: "ds.xf"; xg: "ds.xg"; xh: "ds.xh"; xi: "ds.xi"; xj: "ds.xj"; xk: "ds.xk"; xl: "ds.xl"; xm: "ds.xm"; xn: "ds.xn"; xo: "ds.xo"; xp: "ds.xp"; xq: "ds.xq"; xr: "ds.xr"; xs: "ds.xs"; xt: "ds.xt"; xu: "ds.xu"; xv: "ds.xv"; xw: "ds.xw"; xx: "ds.xx"; xy: "ds.xy"; xz: "ds.xz"; ya: "ds.ya"; yb: "ds.yb"; yc: "ds.yc"; yd: "ds.yd"; ye: "ds.ye"; yf: "ds.yf"; yg: "ds.yg"; yh: "ds.yh"; yi: "ds.yi"; yj: "ds.yj"; yk: "ds.yk"; yl: "ds.yl"; ym: "ds.ym"; yn: "ds.yn"; yo: "ds.yo"; yp: "ds.yp"; yq: "ds.yq"; yr: "ds.yr"; ys: "ds.ys"; yt: "ds.yt"; yu: "ds.yu"; yv: "ds.yv"; yw: "ds.yw"; yx: "ds.yx"; yy: "ds.yy"; yz: "ds.yz"; za: "ds.za"; zb: "ds.zb"; zc: "ds.zc"; zd: "ds.zd"; ze: "ds.ze"; zf: "ds.zf"; zg: "ds.zg"; zh: "ds.zh"; zi: "ds.zi"; zj: "ds.zj"; zk: "ds.zk"; zl: "ds.zl"; zm: "ds.zm"; zn: "ds.zn"; zo: "ds.zo"; zp: "ds.zp"; zq: "ds.zq"; zr: "ds.zr"; zs: "ds.zs"; zt: "ds.zt"; zu: "ds.zu"; zv: "ds.zv"; zw: "ds.zw"; zx: "ds.zx"; zy: "ds.zy"; zz: "ds.zz"; }; dt: { aa: "dt.aa"; ab: "dt.ab"; ac: "dt.ac"; ad: "dt.ad"; ae: "dt.ae"; af: "dt.af"; ag: "dt.ag"; ah: "dt.ah"; ai: "dt.ai"; aj: "dt.aj"; ak: "dt.ak"; al: "dt.al"; am: "dt.am"; an: "dt.an"; ao: "dt.ao"; ap: "dt.ap"; aq: "dt.aq"; ar: "dt.ar"; as: "dt.as"; at: "dt.at"; au: "dt.au"; av: "dt.av"; aw: "dt.aw"; ax: "dt.ax"; ay: "dt.ay"; az: "dt.az"; ba: "dt.ba"; bb: "dt.bb"; bc: "dt.bc"; bd: "dt.bd"; be: "dt.be"; bf: "dt.bf"; bg: "dt.bg"; bh: "dt.bh"; bi: "dt.bi"; bj: "dt.bj"; bk: "dt.bk"; bl: "dt.bl"; bm: "dt.bm"; bn: "dt.bn"; bo: "dt.bo"; bp: "dt.bp"; bq: "dt.bq"; br: "dt.br"; bs: "dt.bs"; bt: "dt.bt"; bu: "dt.bu"; bv: "dt.bv"; bw: "dt.bw"; bx: "dt.bx"; by: "dt.by"; bz: "dt.bz"; ca: "dt.ca"; cb: "dt.cb"; cc: "dt.cc"; cd: "dt.cd"; ce: "dt.ce"; cf: "dt.cf"; cg: "dt.cg"; ch: "dt.ch"; ci: "dt.ci"; cj: "dt.cj"; ck: "dt.ck"; cl: "dt.cl"; cm: "dt.cm"; cn: "dt.cn"; co: "dt.co"; cp: "dt.cp"; cq: "dt.cq"; cr: "dt.cr"; cs: "dt.cs"; ct: "dt.ct"; cu: "dt.cu"; cv: "dt.cv"; cw: "dt.cw"; cx: "dt.cx"; cy: "dt.cy"; cz: "dt.cz"; da: "dt.da"; db: "dt.db"; dc: "dt.dc"; dd: "dt.dd"; de: "dt.de"; df: "dt.df"; dg: "dt.dg"; dh: "dt.dh"; di: "dt.di"; dj: "dt.dj"; dk: "dt.dk"; dl: "dt.dl"; dm: "dt.dm"; dn: "dt.dn"; do: "dt.do"; dp: "dt.dp"; dq: "dt.dq"; dr: "dt.dr"; ds: "dt.ds"; dt: "dt.dt"; du: "dt.du"; dv: "dt.dv"; dw: "dt.dw"; dx: "dt.dx"; dy: "dt.dy"; dz: "dt.dz"; ea: "dt.ea"; eb: "dt.eb"; ec: "dt.ec"; ed: "dt.ed"; ee: "dt.ee"; ef: "dt.ef"; eg: "dt.eg"; eh: "dt.eh"; ei: "dt.ei"; ej: "dt.ej"; ek: "dt.ek"; el: "dt.el"; em: "dt.em"; en: "dt.en"; eo: "dt.eo"; ep: "dt.ep"; eq: "dt.eq"; er: "dt.er"; es: "dt.es"; et: "dt.et"; eu: "dt.eu"; ev: "dt.ev"; ew: "dt.ew"; ex: "dt.ex"; ey: "dt.ey"; ez: "dt.ez"; fa: "dt.fa"; fb: "dt.fb"; fc: "dt.fc"; fd: "dt.fd"; fe: "dt.fe"; ff: "dt.ff"; fg: "dt.fg"; fh: "dt.fh"; fi: "dt.fi"; fj: "dt.fj"; fk: "dt.fk"; fl: "dt.fl"; fm: "dt.fm"; fn: "dt.fn"; fo: "dt.fo"; fp: "dt.fp"; fq: "dt.fq"; fr: "dt.fr"; fs: "dt.fs"; ft: "dt.ft"; fu: "dt.fu"; fv: "dt.fv"; fw: "dt.fw"; fx: "dt.fx"; fy: "dt.fy"; fz: "dt.fz"; ga: "dt.ga"; gb: "dt.gb"; gc: "dt.gc"; gd: "dt.gd"; ge: "dt.ge"; gf: "dt.gf"; gg: "dt.gg"; gh: "dt.gh"; gi: "dt.gi"; gj: "dt.gj"; gk: "dt.gk"; gl: "dt.gl"; gm: "dt.gm"; gn: "dt.gn"; go: "dt.go"; gp: "dt.gp"; gq: "dt.gq"; gr: "dt.gr"; gs: "dt.gs"; gt: "dt.gt"; gu: "dt.gu"; gv: "dt.gv"; gw: "dt.gw"; gx: "dt.gx"; gy: "dt.gy"; gz: "dt.gz"; ha: "dt.ha"; hb: "dt.hb"; hc: "dt.hc"; hd: "dt.hd"; he: "dt.he"; hf: "dt.hf"; hg: "dt.hg"; hh: "dt.hh"; hi: "dt.hi"; hj: "dt.hj"; hk: "dt.hk"; hl: "dt.hl"; hm: "dt.hm"; hn: "dt.hn"; ho: "dt.ho"; hp: "dt.hp"; hq: "dt.hq"; hr: "dt.hr"; hs: "dt.hs"; ht: "dt.ht"; hu: "dt.hu"; hv: "dt.hv"; hw: "dt.hw"; hx: "dt.hx"; hy: "dt.hy"; hz: "dt.hz"; ia: "dt.ia"; ib: "dt.ib"; ic: "dt.ic"; id: "dt.id"; ie: "dt.ie"; if: "dt.if"; ig: "dt.ig"; ih: "dt.ih"; ii: "dt.ii"; ij: "dt.ij"; ik: "dt.ik"; il: "dt.il"; im: "dt.im"; in: "dt.in"; io: "dt.io"; ip: "dt.ip"; iq: "dt.iq"; ir: "dt.ir"; is: "dt.is"; it: "dt.it"; iu: "dt.iu"; iv: "dt.iv"; iw: "dt.iw"; ix: "dt.ix"; iy: "dt.iy"; iz: "dt.iz"; ja: "dt.ja"; jb: "dt.jb"; jc: "dt.jc"; jd: "dt.jd"; je: "dt.je"; jf: "dt.jf"; jg: "dt.jg"; jh: "dt.jh"; ji: "dt.ji"; jj: "dt.jj"; jk: "dt.jk"; jl: "dt.jl"; jm: "dt.jm"; jn: "dt.jn"; jo: "dt.jo"; jp: "dt.jp"; jq: "dt.jq"; jr: "dt.jr"; js: "dt.js"; jt: "dt.jt"; ju: "dt.ju"; jv: "dt.jv"; jw: "dt.jw"; jx: "dt.jx"; jy: "dt.jy"; jz: "dt.jz"; ka: "dt.ka"; kb: "dt.kb"; kc: "dt.kc"; kd: "dt.kd"; ke: "dt.ke"; kf: "dt.kf"; kg: "dt.kg"; kh: "dt.kh"; ki: "dt.ki"; kj: "dt.kj"; kk: "dt.kk"; kl: "dt.kl"; km: "dt.km"; kn: "dt.kn"; ko: "dt.ko"; kp: "dt.kp"; kq: "dt.kq"; kr: "dt.kr"; ks: "dt.ks"; kt: "dt.kt"; ku: "dt.ku"; kv: "dt.kv"; kw: "dt.kw"; kx: "dt.kx"; ky: "dt.ky"; kz: "dt.kz"; la: "dt.la"; lb: "dt.lb"; lc: "dt.lc"; ld: "dt.ld"; le: "dt.le"; lf: "dt.lf"; lg: "dt.lg"; lh: "dt.lh"; li: "dt.li"; lj: "dt.lj"; lk: "dt.lk"; ll: "dt.ll"; lm: "dt.lm"; ln: "dt.ln"; lo: "dt.lo"; lp: "dt.lp"; lq: "dt.lq"; lr: "dt.lr"; ls: "dt.ls"; lt: "dt.lt"; lu: "dt.lu"; lv: "dt.lv"; lw: "dt.lw"; lx: "dt.lx"; ly: "dt.ly"; lz: "dt.lz"; ma: "dt.ma"; mb: "dt.mb"; mc: "dt.mc"; md: "dt.md"; me: "dt.me"; mf: "dt.mf"; mg: "dt.mg"; mh: "dt.mh"; mi: "dt.mi"; mj: "dt.mj"; mk: "dt.mk"; ml: "dt.ml"; mm: "dt.mm"; mn: "dt.mn"; mo: "dt.mo"; mp: "dt.mp"; mq: "dt.mq"; mr: "dt.mr"; ms: "dt.ms"; mt: "dt.mt"; mu: "dt.mu"; mv: "dt.mv"; mw: "dt.mw"; mx: "dt.mx"; my: "dt.my"; mz: "dt.mz"; na: "dt.na"; nb: "dt.nb"; nc: "dt.nc"; nd: "dt.nd"; ne: "dt.ne"; nf: "dt.nf"; ng: "dt.ng"; nh: "dt.nh"; ni: "dt.ni"; nj: "dt.nj"; nk: "dt.nk"; nl: "dt.nl"; nm: "dt.nm"; nn: "dt.nn"; no: "dt.no"; np: "dt.np"; nq: "dt.nq"; nr: "dt.nr"; ns: "dt.ns"; nt: "dt.nt"; nu: "dt.nu"; nv: "dt.nv"; nw: "dt.nw"; nx: "dt.nx"; ny: "dt.ny"; nz: "dt.nz"; oa: "dt.oa"; ob: "dt.ob"; oc: "dt.oc"; od: "dt.od"; oe: "dt.oe"; of: "dt.of"; og: "dt.og"; oh: "dt.oh"; oi: "dt.oi"; oj: "dt.oj"; ok: "dt.ok"; ol: "dt.ol"; om: "dt.om"; on: "dt.on"; oo: "dt.oo"; op: "dt.op"; oq: "dt.oq"; or: "dt.or"; os: "dt.os"; ot: "dt.ot"; ou: "dt.ou"; ov: "dt.ov"; ow: "dt.ow"; ox: "dt.ox"; oy: "dt.oy"; oz: "dt.oz"; pa: "dt.pa"; pb: "dt.pb"; pc: "dt.pc"; pd: "dt.pd"; pe: "dt.pe"; pf: "dt.pf"; pg: "dt.pg"; ph: "dt.ph"; pi: "dt.pi"; pj: "dt.pj"; pk: "dt.pk"; pl: "dt.pl"; pm: "dt.pm"; pn: "dt.pn"; po: "dt.po"; pp: "dt.pp"; pq: "dt.pq"; pr: "dt.pr"; ps: "dt.ps"; pt: "dt.pt"; pu: "dt.pu"; pv: "dt.pv"; pw: "dt.pw"; px: "dt.px"; py: "dt.py"; pz: "dt.pz"; qa: "dt.qa"; qb: "dt.qb"; qc: "dt.qc"; qd: "dt.qd"; qe: "dt.qe"; qf: "dt.qf"; qg: "dt.qg"; qh: "dt.qh"; qi: "dt.qi"; qj: "dt.qj"; qk: "dt.qk"; ql: "dt.ql"; qm: "dt.qm"; qn: "dt.qn"; qo: "dt.qo"; qp: "dt.qp"; qq: "dt.qq"; qr: "dt.qr"; qs: "dt.qs"; qt: "dt.qt"; qu: "dt.qu"; qv: "dt.qv"; qw: "dt.qw"; qx: "dt.qx"; qy: "dt.qy"; qz: "dt.qz"; ra: "dt.ra"; rb: "dt.rb"; rc: "dt.rc"; rd: "dt.rd"; re: "dt.re"; rf: "dt.rf"; rg: "dt.rg"; rh: "dt.rh"; ri: "dt.ri"; rj: "dt.rj"; rk: "dt.rk"; rl: "dt.rl"; rm: "dt.rm"; rn: "dt.rn"; ro: "dt.ro"; rp: "dt.rp"; rq: "dt.rq"; rr: "dt.rr"; rs: "dt.rs"; rt: "dt.rt"; ru: "dt.ru"; rv: "dt.rv"; rw: "dt.rw"; rx: "dt.rx"; ry: "dt.ry"; rz: "dt.rz"; sa: "dt.sa"; sb: "dt.sb"; sc: "dt.sc"; sd: "dt.sd"; se: "dt.se"; sf: "dt.sf"; sg: "dt.sg"; sh: "dt.sh"; si: "dt.si"; sj: "dt.sj"; sk: "dt.sk"; sl: "dt.sl"; sm: "dt.sm"; sn: "dt.sn"; so: "dt.so"; sp: "dt.sp"; sq: "dt.sq"; sr: "dt.sr"; ss: "dt.ss"; st: "dt.st"; su: "dt.su"; sv: "dt.sv"; sw: "dt.sw"; sx: "dt.sx"; sy: "dt.sy"; sz: "dt.sz"; ta: "dt.ta"; tb: "dt.tb"; tc: "dt.tc"; td: "dt.td"; te: "dt.te"; tf: "dt.tf"; tg: "dt.tg"; th: "dt.th"; ti: "dt.ti"; tj: "dt.tj"; tk: "dt.tk"; tl: "dt.tl"; tm: "dt.tm"; tn: "dt.tn"; to: "dt.to"; tp: "dt.tp"; tq: "dt.tq"; tr: "dt.tr"; ts: "dt.ts"; tt: "dt.tt"; tu: "dt.tu"; tv: "dt.tv"; tw: "dt.tw"; tx: "dt.tx"; ty: "dt.ty"; tz: "dt.tz"; ua: "dt.ua"; ub: "dt.ub"; uc: "dt.uc"; ud: "dt.ud"; ue: "dt.ue"; uf: "dt.uf"; ug: "dt.ug"; uh: "dt.uh"; ui: "dt.ui"; uj: "dt.uj"; uk: "dt.uk"; ul: "dt.ul"; um: "dt.um"; un: "dt.un"; uo: "dt.uo"; up: "dt.up"; uq: "dt.uq"; ur: "dt.ur"; us: "dt.us"; ut: "dt.ut"; uu: "dt.uu"; uv: "dt.uv"; uw: "dt.uw"; ux: "dt.ux"; uy: "dt.uy"; uz: "dt.uz"; va: "dt.va"; vb: "dt.vb"; vc: "dt.vc"; vd: "dt.vd"; ve: "dt.ve"; vf: "dt.vf"; vg: "dt.vg"; vh: "dt.vh"; vi: "dt.vi"; vj: "dt.vj"; vk: "dt.vk"; vl: "dt.vl"; vm: "dt.vm"; vn: "dt.vn"; vo: "dt.vo"; vp: "dt.vp"; vq: "dt.vq"; vr: "dt.vr"; vs: "dt.vs"; vt: "dt.vt"; vu: "dt.vu"; vv: "dt.vv"; vw: "dt.vw"; vx: "dt.vx"; vy: "dt.vy"; vz: "dt.vz"; wa: "dt.wa"; wb: "dt.wb"; wc: "dt.wc"; wd: "dt.wd"; we: "dt.we"; wf: "dt.wf"; wg: "dt.wg"; wh: "dt.wh"; wi: "dt.wi"; wj: "dt.wj"; wk: "dt.wk"; wl: "dt.wl"; wm: "dt.wm"; wn: "dt.wn"; wo: "dt.wo"; wp: "dt.wp"; wq: "dt.wq"; wr: "dt.wr"; ws: "dt.ws"; wt: "dt.wt"; wu: "dt.wu"; wv: "dt.wv"; ww: "dt.ww"; wx: "dt.wx"; wy: "dt.wy"; wz: "dt.wz"; xa: "dt.xa"; xb: "dt.xb"; xc: "dt.xc"; xd: "dt.xd"; xe: "dt.xe"; xf: "dt.xf"; xg: "dt.xg"; xh: "dt.xh"; xi: "dt.xi"; xj: "dt.xj"; xk: "dt.xk"; xl: "dt.xl"; xm: "dt.xm"; xn: "dt.xn"; xo: "dt.xo"; xp: "dt.xp"; xq: "dt.xq"; xr: "dt.xr"; xs: "dt.xs"; xt: "dt.xt"; xu: "dt.xu"; xv: "dt.xv"; xw: "dt.xw"; xx: "dt.xx"; xy: "dt.xy"; xz: "dt.xz"; ya: "dt.ya"; yb: "dt.yb"; yc: "dt.yc"; yd: "dt.yd"; ye: "dt.ye"; yf: "dt.yf"; yg: "dt.yg"; yh: "dt.yh"; yi: "dt.yi"; yj: "dt.yj"; yk: "dt.yk"; yl: "dt.yl"; ym: "dt.ym"; yn: "dt.yn"; yo: "dt.yo"; yp: "dt.yp"; yq: "dt.yq"; yr: "dt.yr"; ys: "dt.ys"; yt: "dt.yt"; yu: "dt.yu"; yv: "dt.yv"; yw: "dt.yw"; yx: "dt.yx"; yy: "dt.yy"; yz: "dt.yz"; za: "dt.za"; zb: "dt.zb"; zc: "dt.zc"; zd: "dt.zd"; ze: "dt.ze"; zf: "dt.zf"; zg: "dt.zg"; zh: "dt.zh"; zi: "dt.zi"; zj: "dt.zj"; zk: "dt.zk"; zl: "dt.zl"; zm: "dt.zm"; zn: "dt.zn"; zo: "dt.zo"; zp: "dt.zp"; zq: "dt.zq"; zr: "dt.zr"; zs: "dt.zs"; zt: "dt.zt"; zu: "dt.zu"; zv: "dt.zv"; zw: "dt.zw"; zx: "dt.zx"; zy: "dt.zy"; zz: "dt.zz"; }; du: { aa: "du.aa"; ab: "du.ab"; ac: "du.ac"; ad: "du.ad"; ae: "du.ae"; af: "du.af"; ag: "du.ag"; ah: "du.ah"; ai: "du.ai"; aj: "du.aj"; ak: "du.ak"; al: "du.al"; am: "du.am"; an: "du.an"; ao: "du.ao"; ap: "du.ap"; aq: "du.aq"; ar: "du.ar"; as: "du.as"; at: "du.at"; au: "du.au"; av: "du.av"; aw: "du.aw"; ax: "du.ax"; ay: "du.ay"; az: "du.az"; ba: "du.ba"; bb: "du.bb"; bc: "du.bc"; bd: "du.bd"; be: "du.be"; bf: "du.bf"; bg: "du.bg"; bh: "du.bh"; bi: "du.bi"; bj: "du.bj"; bk: "du.bk"; bl: "du.bl"; bm: "du.bm"; bn: "du.bn"; bo: "du.bo"; bp: "du.bp"; bq: "du.bq"; br: "du.br"; bs: "du.bs"; bt: "du.bt"; bu: "du.bu"; bv: "du.bv"; bw: "du.bw"; bx: "du.bx"; by: "du.by"; bz: "du.bz"; ca: "du.ca"; cb: "du.cb"; cc: "du.cc"; cd: "du.cd"; ce: "du.ce"; cf: "du.cf"; cg: "du.cg"; ch: "du.ch"; ci: "du.ci"; cj: "du.cj"; ck: "du.ck"; cl: "du.cl"; cm: "du.cm"; cn: "du.cn"; co: "du.co"; cp: "du.cp"; cq: "du.cq"; cr: "du.cr"; cs: "du.cs"; ct: "du.ct"; cu: "du.cu"; cv: "du.cv"; cw: "du.cw"; cx: "du.cx"; cy: "du.cy"; cz: "du.cz"; da: "du.da"; db: "du.db"; dc: "du.dc"; dd: "du.dd"; de: "du.de"; df: "du.df"; dg: "du.dg"; dh: "du.dh"; di: "du.di"; dj: "du.dj"; dk: "du.dk"; dl: "du.dl"; dm: "du.dm"; dn: "du.dn"; do: "du.do"; dp: "du.dp"; dq: "du.dq"; dr: "du.dr"; ds: "du.ds"; dt: "du.dt"; du: "du.du"; dv: "du.dv"; dw: "du.dw"; dx: "du.dx"; dy: "du.dy"; dz: "du.dz"; ea: "du.ea"; eb: "du.eb"; ec: "du.ec"; ed: "du.ed"; ee: "du.ee"; ef: "du.ef"; eg: "du.eg"; eh: "du.eh"; ei: "du.ei"; ej: "du.ej"; ek: "du.ek"; el: "du.el"; em: "du.em"; en: "du.en"; eo: "du.eo"; ep: "du.ep"; eq: "du.eq"; er: "du.er"; es: "du.es"; et: "du.et"; eu: "du.eu"; ev: "du.ev"; ew: "du.ew"; ex: "du.ex"; ey: "du.ey"; ez: "du.ez"; fa: "du.fa"; fb: "du.fb"; fc: "du.fc"; fd: "du.fd"; fe: "du.fe"; ff: "du.ff"; fg: "du.fg"; fh: "du.fh"; fi: "du.fi"; fj: "du.fj"; fk: "du.fk"; fl: "du.fl"; fm: "du.fm"; fn: "du.fn"; fo: "du.fo"; fp: "du.fp"; fq: "du.fq"; fr: "du.fr"; fs: "du.fs"; ft: "du.ft"; fu: "du.fu"; fv: "du.fv"; fw: "du.fw"; fx: "du.fx"; fy: "du.fy"; fz: "du.fz"; ga: "du.ga"; gb: "du.gb"; gc: "du.gc"; gd: "du.gd"; ge: "du.ge"; gf: "du.gf"; gg: "du.gg"; gh: "du.gh"; gi: "du.gi"; gj: "du.gj"; gk: "du.gk"; gl: "du.gl"; gm: "du.gm"; gn: "du.gn"; go: "du.go"; gp: "du.gp"; gq: "du.gq"; gr: "du.gr"; gs: "du.gs"; gt: "du.gt"; gu: "du.gu"; gv: "du.gv"; gw: "du.gw"; gx: "du.gx"; gy: "du.gy"; gz: "du.gz"; ha: "du.ha"; hb: "du.hb"; hc: "du.hc"; hd: "du.hd"; he: "du.he"; hf: "du.hf"; hg: "du.hg"; hh: "du.hh"; hi: "du.hi"; hj: "du.hj"; hk: "du.hk"; hl: "du.hl"; hm: "du.hm"; hn: "du.hn"; ho: "du.ho"; hp: "du.hp"; hq: "du.hq"; hr: "du.hr"; hs: "du.hs"; ht: "du.ht"; hu: "du.hu"; hv: "du.hv"; hw: "du.hw"; hx: "du.hx"; hy: "du.hy"; hz: "du.hz"; ia: "du.ia"; ib: "du.ib"; ic: "du.ic"; id: "du.id"; ie: "du.ie"; if: "du.if"; ig: "du.ig"; ih: "du.ih"; ii: "du.ii"; ij: "du.ij"; ik: "du.ik"; il: "du.il"; im: "du.im"; in: "du.in"; io: "du.io"; ip: "du.ip"; iq: "du.iq"; ir: "du.ir"; is: "du.is"; it: "du.it"; iu: "du.iu"; iv: "du.iv"; iw: "du.iw"; ix: "du.ix"; iy: "du.iy"; iz: "du.iz"; ja: "du.ja"; jb: "du.jb"; jc: "du.jc"; jd: "du.jd"; je: "du.je"; jf: "du.jf"; jg: "du.jg"; jh: "du.jh"; ji: "du.ji"; jj: "du.jj"; jk: "du.jk"; jl: "du.jl"; jm: "du.jm"; jn: "du.jn"; jo: "du.jo"; jp: "du.jp"; jq: "du.jq"; jr: "du.jr"; js: "du.js"; jt: "du.jt"; ju: "du.ju"; jv: "du.jv"; jw: "du.jw"; jx: "du.jx"; jy: "du.jy"; jz: "du.jz"; ka: "du.ka"; kb: "du.kb"; kc: "du.kc"; kd: "du.kd"; ke: "du.ke"; kf: "du.kf"; kg: "du.kg"; kh: "du.kh"; ki: "du.ki"; kj: "du.kj"; kk: "du.kk"; kl: "du.kl"; km: "du.km"; kn: "du.kn"; ko: "du.ko"; kp: "du.kp"; kq: "du.kq"; kr: "du.kr"; ks: "du.ks"; kt: "du.kt"; ku: "du.ku"; kv: "du.kv"; kw: "du.kw"; kx: "du.kx"; ky: "du.ky"; kz: "du.kz"; la: "du.la"; lb: "du.lb"; lc: "du.lc"; ld: "du.ld"; le: "du.le"; lf: "du.lf"; lg: "du.lg"; lh: "du.lh"; li: "du.li"; lj: "du.lj"; lk: "du.lk"; ll: "du.ll"; lm: "du.lm"; ln: "du.ln"; lo: "du.lo"; lp: "du.lp"; lq: "du.lq"; lr: "du.lr"; ls: "du.ls"; lt: "du.lt"; lu: "du.lu"; lv: "du.lv"; lw: "du.lw"; lx: "du.lx"; ly: "du.ly"; lz: "du.lz"; ma: "du.ma"; mb: "du.mb"; mc: "du.mc"; md: "du.md"; me: "du.me"; mf: "du.mf"; mg: "du.mg"; mh: "du.mh"; mi: "du.mi"; mj: "du.mj"; mk: "du.mk"; ml: "du.ml"; mm: "du.mm"; mn: "du.mn"; mo: "du.mo"; mp: "du.mp"; mq: "du.mq"; mr: "du.mr"; ms: "du.ms"; mt: "du.mt"; mu: "du.mu"; mv: "du.mv"; mw: "du.mw"; mx: "du.mx"; my: "du.my"; mz: "du.mz"; na: "du.na"; nb: "du.nb"; nc: "du.nc"; nd: "du.nd"; ne: "du.ne"; nf: "du.nf"; ng: "du.ng"; nh: "du.nh"; ni: "du.ni"; nj: "du.nj"; nk: "du.nk"; nl: "du.nl"; nm: "du.nm"; nn: "du.nn"; no: "du.no"; np: "du.np"; nq: "du.nq"; nr: "du.nr"; ns: "du.ns"; nt: "du.nt"; nu: "du.nu"; nv: "du.nv"; nw: "du.nw"; nx: "du.nx"; ny: "du.ny"; nz: "du.nz"; oa: "du.oa"; ob: "du.ob"; oc: "du.oc"; od: "du.od"; oe: "du.oe"; of: "du.of"; og: "du.og"; oh: "du.oh"; oi: "du.oi"; oj: "du.oj"; ok: "du.ok"; ol: "du.ol"; om: "du.om"; on: "du.on"; oo: "du.oo"; op: "du.op"; oq: "du.oq"; or: "du.or"; os: "du.os"; ot: "du.ot"; ou: "du.ou"; ov: "du.ov"; ow: "du.ow"; ox: "du.ox"; oy: "du.oy"; oz: "du.oz"; pa: "du.pa"; pb: "du.pb"; pc: "du.pc"; pd: "du.pd"; pe: "du.pe"; pf: "du.pf"; pg: "du.pg"; ph: "du.ph"; pi: "du.pi"; pj: "du.pj"; pk: "du.pk"; pl: "du.pl"; pm: "du.pm"; pn: "du.pn"; po: "du.po"; pp: "du.pp"; pq: "du.pq"; pr: "du.pr"; ps: "du.ps"; pt: "du.pt"; pu: "du.pu"; pv: "du.pv"; pw: "du.pw"; px: "du.px"; py: "du.py"; pz: "du.pz"; qa: "du.qa"; qb: "du.qb"; qc: "du.qc"; qd: "du.qd"; qe: "du.qe"; qf: "du.qf"; qg: "du.qg"; qh: "du.qh"; qi: "du.qi"; qj: "du.qj"; qk: "du.qk"; ql: "du.ql"; qm: "du.qm"; qn: "du.qn"; qo: "du.qo"; qp: "du.qp"; qq: "du.qq"; qr: "du.qr"; qs: "du.qs"; qt: "du.qt"; qu: "du.qu"; qv: "du.qv"; qw: "du.qw"; qx: "du.qx"; qy: "du.qy"; qz: "du.qz"; ra: "du.ra"; rb: "du.rb"; rc: "du.rc"; rd: "du.rd"; re: "du.re"; rf: "du.rf"; rg: "du.rg"; rh: "du.rh"; ri: "du.ri"; rj: "du.rj"; rk: "du.rk"; rl: "du.rl"; rm: "du.rm"; rn: "du.rn"; ro: "du.ro"; rp: "du.rp"; rq: "du.rq"; rr: "du.rr"; rs: "du.rs"; rt: "du.rt"; ru: "du.ru"; rv: "du.rv"; rw: "du.rw"; rx: "du.rx"; ry: "du.ry"; rz: "du.rz"; sa: "du.sa"; sb: "du.sb"; sc: "du.sc"; sd: "du.sd"; se: "du.se"; sf: "du.sf"; sg: "du.sg"; sh: "du.sh"; si: "du.si"; sj: "du.sj"; sk: "du.sk"; sl: "du.sl"; sm: "du.sm"; sn: "du.sn"; so: "du.so"; sp: "du.sp"; sq: "du.sq"; sr: "du.sr"; ss: "du.ss"; st: "du.st"; su: "du.su"; sv: "du.sv"; sw: "du.sw"; sx: "du.sx"; sy: "du.sy"; sz: "du.sz"; ta: "du.ta"; tb: "du.tb"; tc: "du.tc"; td: "du.td"; te: "du.te"; tf: "du.tf"; tg: "du.tg"; th: "du.th"; ti: "du.ti"; tj: "du.tj"; tk: "du.tk"; tl: "du.tl"; tm: "du.tm"; tn: "du.tn"; to: "du.to"; tp: "du.tp"; tq: "du.tq"; tr: "du.tr"; ts: "du.ts"; tt: "du.tt"; tu: "du.tu"; tv: "du.tv"; tw: "du.tw"; tx: "du.tx"; ty: "du.ty"; tz: "du.tz"; ua: "du.ua"; ub: "du.ub"; uc: "du.uc"; ud: "du.ud"; ue: "du.ue"; uf: "du.uf"; ug: "du.ug"; uh: "du.uh"; ui: "du.ui"; uj: "du.uj"; uk: "du.uk"; ul: "du.ul"; um: "du.um"; un: "du.un"; uo: "du.uo"; up: "du.up"; uq: "du.uq"; ur: "du.ur"; us: "du.us"; ut: "du.ut"; uu: "du.uu"; uv: "du.uv"; uw: "du.uw"; ux: "du.ux"; uy: "du.uy"; uz: "du.uz"; va: "du.va"; vb: "du.vb"; vc: "du.vc"; vd: "du.vd"; ve: "du.ve"; vf: "du.vf"; vg: "du.vg"; vh: "du.vh"; vi: "du.vi"; vj: "du.vj"; vk: "du.vk"; vl: "du.vl"; vm: "du.vm"; vn: "du.vn"; vo: "du.vo"; vp: "du.vp"; vq: "du.vq"; vr: "du.vr"; vs: "du.vs"; vt: "du.vt"; vu: "du.vu"; vv: "du.vv"; vw: "du.vw"; vx: "du.vx"; vy: "du.vy"; vz: "du.vz"; wa: "du.wa"; wb: "du.wb"; wc: "du.wc"; wd: "du.wd"; we: "du.we"; wf: "du.wf"; wg: "du.wg"; wh: "du.wh"; wi: "du.wi"; wj: "du.wj"; wk: "du.wk"; wl: "du.wl"; wm: "du.wm"; wn: "du.wn"; wo: "du.wo"; wp: "du.wp"; wq: "du.wq"; wr: "du.wr"; ws: "du.ws"; wt: "du.wt"; wu: "du.wu"; wv: "du.wv"; ww: "du.ww"; wx: "du.wx"; wy: "du.wy"; wz: "du.wz"; xa: "du.xa"; xb: "du.xb"; xc: "du.xc"; xd: "du.xd"; xe: "du.xe"; xf: "du.xf"; xg: "du.xg"; xh: "du.xh"; xi: "du.xi"; xj: "du.xj"; xk: "du.xk"; xl: "du.xl"; xm: "du.xm"; xn: "du.xn"; xo: "du.xo"; xp: "du.xp"; xq: "du.xq"; xr: "du.xr"; xs: "du.xs"; xt: "du.xt"; xu: "du.xu"; xv: "du.xv"; xw: "du.xw"; xx: "du.xx"; xy: "du.xy"; xz: "du.xz"; ya: "du.ya"; yb: "du.yb"; yc: "du.yc"; yd: "du.yd"; ye: "du.ye"; yf: "du.yf"; yg: "du.yg"; yh: "du.yh"; yi: "du.yi"; yj: "du.yj"; yk: "du.yk"; yl: "du.yl"; ym: "du.ym"; yn: "du.yn"; yo: "du.yo"; yp: "du.yp"; yq: "du.yq"; yr: "du.yr"; ys: "du.ys"; yt: "du.yt"; yu: "du.yu"; yv: "du.yv"; yw: "du.yw"; yx: "du.yx"; yy: "du.yy"; yz: "du.yz"; za: "du.za"; zb: "du.zb"; zc: "du.zc"; zd: "du.zd"; ze: "du.ze"; zf: "du.zf"; zg: "du.zg"; zh: "du.zh"; zi: "du.zi"; zj: "du.zj"; zk: "du.zk"; zl: "du.zl"; zm: "du.zm"; zn: "du.zn"; zo: "du.zo"; zp: "du.zp"; zq: "du.zq"; zr: "du.zr"; zs: "du.zs"; zt: "du.zt"; zu: "du.zu"; zv: "du.zv"; zw: "du.zw"; zx: "du.zx"; zy: "du.zy"; zz: "du.zz"; }; dv: { aa: "dv.aa"; ab: "dv.ab"; ac: "dv.ac"; ad: "dv.ad"; ae: "dv.ae"; af: "dv.af"; ag: "dv.ag"; ah: "dv.ah"; ai: "dv.ai"; aj: "dv.aj"; ak: "dv.ak"; al: "dv.al"; am: "dv.am"; an: "dv.an"; ao: "dv.ao"; ap: "dv.ap"; aq: "dv.aq"; ar: "dv.ar"; as: "dv.as"; at: "dv.at"; au: "dv.au"; av: "dv.av"; aw: "dv.aw"; ax: "dv.ax"; ay: "dv.ay"; az: "dv.az"; ba: "dv.ba"; bb: "dv.bb"; bc: "dv.bc"; bd: "dv.bd"; be: "dv.be"; bf: "dv.bf"; bg: "dv.bg"; bh: "dv.bh"; bi: "dv.bi"; bj: "dv.bj"; bk: "dv.bk"; bl: "dv.bl"; bm: "dv.bm"; bn: "dv.bn"; bo: "dv.bo"; bp: "dv.bp"; bq: "dv.bq"; br: "dv.br"; bs: "dv.bs"; bt: "dv.bt"; bu: "dv.bu"; bv: "dv.bv"; bw: "dv.bw"; bx: "dv.bx"; by: "dv.by"; bz: "dv.bz"; ca: "dv.ca"; cb: "dv.cb"; cc: "dv.cc"; cd: "dv.cd"; ce: "dv.ce"; cf: "dv.cf"; cg: "dv.cg"; ch: "dv.ch"; ci: "dv.ci"; cj: "dv.cj"; ck: "dv.ck"; cl: "dv.cl"; cm: "dv.cm"; cn: "dv.cn"; co: "dv.co"; cp: "dv.cp"; cq: "dv.cq"; cr: "dv.cr"; cs: "dv.cs"; ct: "dv.ct"; cu: "dv.cu"; cv: "dv.cv"; cw: "dv.cw"; cx: "dv.cx"; cy: "dv.cy"; cz: "dv.cz"; da: "dv.da"; db: "dv.db"; dc: "dv.dc"; dd: "dv.dd"; de: "dv.de"; df: "dv.df"; dg: "dv.dg"; dh: "dv.dh"; di: "dv.di"; dj: "dv.dj"; dk: "dv.dk"; dl: "dv.dl"; dm: "dv.dm"; dn: "dv.dn"; do: "dv.do"; dp: "dv.dp"; dq: "dv.dq"; dr: "dv.dr"; ds: "dv.ds"; dt: "dv.dt"; du: "dv.du"; dv: "dv.dv"; dw: "dv.dw"; dx: "dv.dx"; dy: "dv.dy"; dz: "dv.dz"; ea: "dv.ea"; eb: "dv.eb"; ec: "dv.ec"; ed: "dv.ed"; ee: "dv.ee"; ef: "dv.ef"; eg: "dv.eg"; eh: "dv.eh"; ei: "dv.ei"; ej: "dv.ej"; ek: "dv.ek"; el: "dv.el"; em: "dv.em"; en: "dv.en"; eo: "dv.eo"; ep: "dv.ep"; eq: "dv.eq"; er: "dv.er"; es: "dv.es"; et: "dv.et"; eu: "dv.eu"; ev: "dv.ev"; ew: "dv.ew"; ex: "dv.ex"; ey: "dv.ey"; ez: "dv.ez"; fa: "dv.fa"; fb: "dv.fb"; fc: "dv.fc"; fd: "dv.fd"; fe: "dv.fe"; ff: "dv.ff"; fg: "dv.fg"; fh: "dv.fh"; fi: "dv.fi"; fj: "dv.fj"; fk: "dv.fk"; fl: "dv.fl"; fm: "dv.fm"; fn: "dv.fn"; fo: "dv.fo"; fp: "dv.fp"; fq: "dv.fq"; fr: "dv.fr"; fs: "dv.fs"; ft: "dv.ft"; fu: "dv.fu"; fv: "dv.fv"; fw: "dv.fw"; fx: "dv.fx"; fy: "dv.fy"; fz: "dv.fz"; ga: "dv.ga"; gb: "dv.gb"; gc: "dv.gc"; gd: "dv.gd"; ge: "dv.ge"; gf: "dv.gf"; gg: "dv.gg"; gh: "dv.gh"; gi: "dv.gi"; gj: "dv.gj"; gk: "dv.gk"; gl: "dv.gl"; gm: "dv.gm"; gn: "dv.gn"; go: "dv.go"; gp: "dv.gp"; gq: "dv.gq"; gr: "dv.gr"; gs: "dv.gs"; gt: "dv.gt"; gu: "dv.gu"; gv: "dv.gv"; gw: "dv.gw"; gx: "dv.gx"; gy: "dv.gy"; gz: "dv.gz"; ha: "dv.ha"; hb: "dv.hb"; hc: "dv.hc"; hd: "dv.hd"; he: "dv.he"; hf: "dv.hf"; hg: "dv.hg"; hh: "dv.hh"; hi: "dv.hi"; hj: "dv.hj"; hk: "dv.hk"; hl: "dv.hl"; hm: "dv.hm"; hn: "dv.hn"; ho: "dv.ho"; hp: "dv.hp"; hq: "dv.hq"; hr: "dv.hr"; hs: "dv.hs"; ht: "dv.ht"; hu: "dv.hu"; hv: "dv.hv"; hw: "dv.hw"; hx: "dv.hx"; hy: "dv.hy"; hz: "dv.hz"; ia: "dv.ia"; ib: "dv.ib"; ic: "dv.ic"; id: "dv.id"; ie: "dv.ie"; if: "dv.if"; ig: "dv.ig"; ih: "dv.ih"; ii: "dv.ii"; ij: "dv.ij"; ik: "dv.ik"; il: "dv.il"; im: "dv.im"; in: "dv.in"; io: "dv.io"; ip: "dv.ip"; iq: "dv.iq"; ir: "dv.ir"; is: "dv.is"; it: "dv.it"; iu: "dv.iu"; iv: "dv.iv"; iw: "dv.iw"; ix: "dv.ix"; iy: "dv.iy"; iz: "dv.iz"; ja: "dv.ja"; jb: "dv.jb"; jc: "dv.jc"; jd: "dv.jd"; je: "dv.je"; jf: "dv.jf"; jg: "dv.jg"; jh: "dv.jh"; ji: "dv.ji"; jj: "dv.jj"; jk: "dv.jk"; jl: "dv.jl"; jm: "dv.jm"; jn: "dv.jn"; jo: "dv.jo"; jp: "dv.jp"; jq: "dv.jq"; jr: "dv.jr"; js: "dv.js"; jt: "dv.jt"; ju: "dv.ju"; jv: "dv.jv"; jw: "dv.jw"; jx: "dv.jx"; jy: "dv.jy"; jz: "dv.jz"; ka: "dv.ka"; kb: "dv.kb"; kc: "dv.kc"; kd: "dv.kd"; ke: "dv.ke"; kf: "dv.kf"; kg: "dv.kg"; kh: "dv.kh"; ki: "dv.ki"; kj: "dv.kj"; kk: "dv.kk"; kl: "dv.kl"; km: "dv.km"; kn: "dv.kn"; ko: "dv.ko"; kp: "dv.kp"; kq: "dv.kq"; kr: "dv.kr"; ks: "dv.ks"; kt: "dv.kt"; ku: "dv.ku"; kv: "dv.kv"; kw: "dv.kw"; kx: "dv.kx"; ky: "dv.ky"; kz: "dv.kz"; la: "dv.la"; lb: "dv.lb"; lc: "dv.lc"; ld: "dv.ld"; le: "dv.le"; lf: "dv.lf"; lg: "dv.lg"; lh: "dv.lh"; li: "dv.li"; lj: "dv.lj"; lk: "dv.lk"; ll: "dv.ll"; lm: "dv.lm"; ln: "dv.ln"; lo: "dv.lo"; lp: "dv.lp"; lq: "dv.lq"; lr: "dv.lr"; ls: "dv.ls"; lt: "dv.lt"; lu: "dv.lu"; lv: "dv.lv"; lw: "dv.lw"; lx: "dv.lx"; ly: "dv.ly"; lz: "dv.lz"; ma: "dv.ma"; mb: "dv.mb"; mc: "dv.mc"; md: "dv.md"; me: "dv.me"; mf: "dv.mf"; mg: "dv.mg"; mh: "dv.mh"; mi: "dv.mi"; mj: "dv.mj"; mk: "dv.mk"; ml: "dv.ml"; mm: "dv.mm"; mn: "dv.mn"; mo: "dv.mo"; mp: "dv.mp"; mq: "dv.mq"; mr: "dv.mr"; ms: "dv.ms"; mt: "dv.mt"; mu: "dv.mu"; mv: "dv.mv"; mw: "dv.mw"; mx: "dv.mx"; my: "dv.my"; mz: "dv.mz"; na: "dv.na"; nb: "dv.nb"; nc: "dv.nc"; nd: "dv.nd"; ne: "dv.ne"; nf: "dv.nf"; ng: "dv.ng"; nh: "dv.nh"; ni: "dv.ni"; nj: "dv.nj"; nk: "dv.nk"; nl: "dv.nl"; nm: "dv.nm"; nn: "dv.nn"; no: "dv.no"; np: "dv.np"; nq: "dv.nq"; nr: "dv.nr"; ns: "dv.ns"; nt: "dv.nt"; nu: "dv.nu"; nv: "dv.nv"; nw: "dv.nw"; nx: "dv.nx"; ny: "dv.ny"; nz: "dv.nz"; oa: "dv.oa"; ob: "dv.ob"; oc: "dv.oc"; od: "dv.od"; oe: "dv.oe"; of: "dv.of"; og: "dv.og"; oh: "dv.oh"; oi: "dv.oi"; oj: "dv.oj"; ok: "dv.ok"; ol: "dv.ol"; om: "dv.om"; on: "dv.on"; oo: "dv.oo"; op: "dv.op"; oq: "dv.oq"; or: "dv.or"; os: "dv.os"; ot: "dv.ot"; ou: "dv.ou"; ov: "dv.ov"; ow: "dv.ow"; ox: "dv.ox"; oy: "dv.oy"; oz: "dv.oz"; pa: "dv.pa"; pb: "dv.pb"; pc: "dv.pc"; pd: "dv.pd"; pe: "dv.pe"; pf: "dv.pf"; pg: "dv.pg"; ph: "dv.ph"; pi: "dv.pi"; pj: "dv.pj"; pk: "dv.pk"; pl: "dv.pl"; pm: "dv.pm"; pn: "dv.pn"; po: "dv.po"; pp: "dv.pp"; pq: "dv.pq"; pr: "dv.pr"; ps: "dv.ps"; pt: "dv.pt"; pu: "dv.pu"; pv: "dv.pv"; pw: "dv.pw"; px: "dv.px"; py: "dv.py"; pz: "dv.pz"; qa: "dv.qa"; qb: "dv.qb"; qc: "dv.qc"; qd: "dv.qd"; qe: "dv.qe"; qf: "dv.qf"; qg: "dv.qg"; qh: "dv.qh"; qi: "dv.qi"; qj: "dv.qj"; qk: "dv.qk"; ql: "dv.ql"; qm: "dv.qm"; qn: "dv.qn"; qo: "dv.qo"; qp: "dv.qp"; qq: "dv.qq"; qr: "dv.qr"; qs: "dv.qs"; qt: "dv.qt"; qu: "dv.qu"; qv: "dv.qv"; qw: "dv.qw"; qx: "dv.qx"; qy: "dv.qy"; qz: "dv.qz"; ra: "dv.ra"; rb: "dv.rb"; rc: "dv.rc"; rd: "dv.rd"; re: "dv.re"; rf: "dv.rf"; rg: "dv.rg"; rh: "dv.rh"; ri: "dv.ri"; rj: "dv.rj"; rk: "dv.rk"; rl: "dv.rl"; rm: "dv.rm"; rn: "dv.rn"; ro: "dv.ro"; rp: "dv.rp"; rq: "dv.rq"; rr: "dv.rr"; rs: "dv.rs"; rt: "dv.rt"; ru: "dv.ru"; rv: "dv.rv"; rw: "dv.rw"; rx: "dv.rx"; ry: "dv.ry"; rz: "dv.rz"; sa: "dv.sa"; sb: "dv.sb"; sc: "dv.sc"; sd: "dv.sd"; se: "dv.se"; sf: "dv.sf"; sg: "dv.sg"; sh: "dv.sh"; si: "dv.si"; sj: "dv.sj"; sk: "dv.sk"; sl: "dv.sl"; sm: "dv.sm"; sn: "dv.sn"; so: "dv.so"; sp: "dv.sp"; sq: "dv.sq"; sr: "dv.sr"; ss: "dv.ss"; st: "dv.st"; su: "dv.su"; sv: "dv.sv"; sw: "dv.sw"; sx: "dv.sx"; sy: "dv.sy"; sz: "dv.sz"; ta: "dv.ta"; tb: "dv.tb"; tc: "dv.tc"; td: "dv.td"; te: "dv.te"; tf: "dv.tf"; tg: "dv.tg"; th: "dv.th"; ti: "dv.ti"; tj: "dv.tj"; tk: "dv.tk"; tl: "dv.tl"; tm: "dv.tm"; tn: "dv.tn"; to: "dv.to"; tp: "dv.tp"; tq: "dv.tq"; tr: "dv.tr"; ts: "dv.ts"; tt: "dv.tt"; tu: "dv.tu"; tv: "dv.tv"; tw: "dv.tw"; tx: "dv.tx"; ty: "dv.ty"; tz: "dv.tz"; ua: "dv.ua"; ub: "dv.ub"; uc: "dv.uc"; ud: "dv.ud"; ue: "dv.ue"; uf: "dv.uf"; ug: "dv.ug"; uh: "dv.uh"; ui: "dv.ui"; uj: "dv.uj"; uk: "dv.uk"; ul: "dv.ul"; um: "dv.um"; un: "dv.un"; uo: "dv.uo"; up: "dv.up"; uq: "dv.uq"; ur: "dv.ur"; us: "dv.us"; ut: "dv.ut"; uu: "dv.uu"; uv: "dv.uv"; uw: "dv.uw"; ux: "dv.ux"; uy: "dv.uy"; uz: "dv.uz"; va: "dv.va"; vb: "dv.vb"; vc: "dv.vc"; vd: "dv.vd"; ve: "dv.ve"; vf: "dv.vf"; vg: "dv.vg"; vh: "dv.vh"; vi: "dv.vi"; vj: "dv.vj"; vk: "dv.vk"; vl: "dv.vl"; vm: "dv.vm"; vn: "dv.vn"; vo: "dv.vo"; vp: "dv.vp"; vq: "dv.vq"; vr: "dv.vr"; vs: "dv.vs"; vt: "dv.vt"; vu: "dv.vu"; vv: "dv.vv"; vw: "dv.vw"; vx: "dv.vx"; vy: "dv.vy"; vz: "dv.vz"; wa: "dv.wa"; wb: "dv.wb"; wc: "dv.wc"; wd: "dv.wd"; we: "dv.we"; wf: "dv.wf"; wg: "dv.wg"; wh: "dv.wh"; wi: "dv.wi"; wj: "dv.wj"; wk: "dv.wk"; wl: "dv.wl"; wm: "dv.wm"; wn: "dv.wn"; wo: "dv.wo"; wp: "dv.wp"; wq: "dv.wq"; wr: "dv.wr"; ws: "dv.ws"; wt: "dv.wt"; wu: "dv.wu"; wv: "dv.wv"; ww: "dv.ww"; wx: "dv.wx"; wy: "dv.wy"; wz: "dv.wz"; xa: "dv.xa"; xb: "dv.xb"; xc: "dv.xc"; xd: "dv.xd"; xe: "dv.xe"; xf: "dv.xf"; xg: "dv.xg"; xh: "dv.xh"; xi: "dv.xi"; xj: "dv.xj"; xk: "dv.xk"; xl: "dv.xl"; xm: "dv.xm"; xn: "dv.xn"; xo: "dv.xo"; xp: "dv.xp"; xq: "dv.xq"; xr: "dv.xr"; xs: "dv.xs"; xt: "dv.xt"; xu: "dv.xu"; xv: "dv.xv"; xw: "dv.xw"; xx: "dv.xx"; xy: "dv.xy"; xz: "dv.xz"; ya: "dv.ya"; yb: "dv.yb"; yc: "dv.yc"; yd: "dv.yd"; ye: "dv.ye"; yf: "dv.yf"; yg: "dv.yg"; yh: "dv.yh"; yi: "dv.yi"; yj: "dv.yj"; yk: "dv.yk"; yl: "dv.yl"; ym: "dv.ym"; yn: "dv.yn"; yo: "dv.yo"; yp: "dv.yp"; yq: "dv.yq"; yr: "dv.yr"; ys: "dv.ys"; yt: "dv.yt"; yu: "dv.yu"; yv: "dv.yv"; yw: "dv.yw"; yx: "dv.yx"; yy: "dv.yy"; yz: "dv.yz"; za: "dv.za"; zb: "dv.zb"; zc: "dv.zc"; zd: "dv.zd"; ze: "dv.ze"; zf: "dv.zf"; zg: "dv.zg"; zh: "dv.zh"; zi: "dv.zi"; zj: "dv.zj"; zk: "dv.zk"; zl: "dv.zl"; zm: "dv.zm"; zn: "dv.zn"; zo: "dv.zo"; zp: "dv.zp"; zq: "dv.zq"; zr: "dv.zr"; zs: "dv.zs"; zt: "dv.zt"; zu: "dv.zu"; zv: "dv.zv"; zw: "dv.zw"; zx: "dv.zx"; zy: "dv.zy"; zz: "dv.zz"; }; dw: { aa: "dw.aa"; ab: "dw.ab"; ac: "dw.ac"; ad: "dw.ad"; ae: "dw.ae"; af: "dw.af"; ag: "dw.ag"; ah: "dw.ah"; ai: "dw.ai"; aj: "dw.aj"; ak: "dw.ak"; al: "dw.al"; am: "dw.am"; an: "dw.an"; ao: "dw.ao"; ap: "dw.ap"; aq: "dw.aq"; ar: "dw.ar"; as: "dw.as"; at: "dw.at"; au: "dw.au"; av: "dw.av"; aw: "dw.aw"; ax: "dw.ax"; ay: "dw.ay"; az: "dw.az"; ba: "dw.ba"; bb: "dw.bb"; bc: "dw.bc"; bd: "dw.bd"; be: "dw.be"; bf: "dw.bf"; bg: "dw.bg"; bh: "dw.bh"; bi: "dw.bi"; bj: "dw.bj"; bk: "dw.bk"; bl: "dw.bl"; bm: "dw.bm"; bn: "dw.bn"; bo: "dw.bo"; bp: "dw.bp"; bq: "dw.bq"; br: "dw.br"; bs: "dw.bs"; bt: "dw.bt"; bu: "dw.bu"; bv: "dw.bv"; bw: "dw.bw"; bx: "dw.bx"; by: "dw.by"; bz: "dw.bz"; ca: "dw.ca"; cb: "dw.cb"; cc: "dw.cc"; cd: "dw.cd"; ce: "dw.ce"; cf: "dw.cf"; cg: "dw.cg"; ch: "dw.ch"; ci: "dw.ci"; cj: "dw.cj"; ck: "dw.ck"; cl: "dw.cl"; cm: "dw.cm"; cn: "dw.cn"; co: "dw.co"; cp: "dw.cp"; cq: "dw.cq"; cr: "dw.cr"; cs: "dw.cs"; ct: "dw.ct"; cu: "dw.cu"; cv: "dw.cv"; cw: "dw.cw"; cx: "dw.cx"; cy: "dw.cy"; cz: "dw.cz"; da: "dw.da"; db: "dw.db"; dc: "dw.dc"; dd: "dw.dd"; de: "dw.de"; df: "dw.df"; dg: "dw.dg"; dh: "dw.dh"; di: "dw.di"; dj: "dw.dj"; dk: "dw.dk"; dl: "dw.dl"; dm: "dw.dm"; dn: "dw.dn"; do: "dw.do"; dp: "dw.dp"; dq: "dw.dq"; dr: "dw.dr"; ds: "dw.ds"; dt: "dw.dt"; du: "dw.du"; dv: "dw.dv"; dw: "dw.dw"; dx: "dw.dx"; dy: "dw.dy"; dz: "dw.dz"; ea: "dw.ea"; eb: "dw.eb"; ec: "dw.ec"; ed: "dw.ed"; ee: "dw.ee"; ef: "dw.ef"; eg: "dw.eg"; eh: "dw.eh"; ei: "dw.ei"; ej: "dw.ej"; ek: "dw.ek"; el: "dw.el"; em: "dw.em"; en: "dw.en"; eo: "dw.eo"; ep: "dw.ep"; eq: "dw.eq"; er: "dw.er"; es: "dw.es"; et: "dw.et"; eu: "dw.eu"; ev: "dw.ev"; ew: "dw.ew"; ex: "dw.ex"; ey: "dw.ey"; ez: "dw.ez"; fa: "dw.fa"; fb: "dw.fb"; fc: "dw.fc"; fd: "dw.fd"; fe: "dw.fe"; ff: "dw.ff"; fg: "dw.fg"; fh: "dw.fh"; fi: "dw.fi"; fj: "dw.fj"; fk: "dw.fk"; fl: "dw.fl"; fm: "dw.fm"; fn: "dw.fn"; fo: "dw.fo"; fp: "dw.fp"; fq: "dw.fq"; fr: "dw.fr"; fs: "dw.fs"; ft: "dw.ft"; fu: "dw.fu"; fv: "dw.fv"; fw: "dw.fw"; fx: "dw.fx"; fy: "dw.fy"; fz: "dw.fz"; ga: "dw.ga"; gb: "dw.gb"; gc: "dw.gc"; gd: "dw.gd"; ge: "dw.ge"; gf: "dw.gf"; gg: "dw.gg"; gh: "dw.gh"; gi: "dw.gi"; gj: "dw.gj"; gk: "dw.gk"; gl: "dw.gl"; gm: "dw.gm"; gn: "dw.gn"; go: "dw.go"; gp: "dw.gp"; gq: "dw.gq"; gr: "dw.gr"; gs: "dw.gs"; gt: "dw.gt"; gu: "dw.gu"; gv: "dw.gv"; gw: "dw.gw"; gx: "dw.gx"; gy: "dw.gy"; gz: "dw.gz"; ha: "dw.ha"; hb: "dw.hb"; hc: "dw.hc"; hd: "dw.hd"; he: "dw.he"; hf: "dw.hf"; hg: "dw.hg"; hh: "dw.hh"; hi: "dw.hi"; hj: "dw.hj"; hk: "dw.hk"; hl: "dw.hl"; hm: "dw.hm"; hn: "dw.hn"; ho: "dw.ho"; hp: "dw.hp"; hq: "dw.hq"; hr: "dw.hr"; hs: "dw.hs"; ht: "dw.ht"; hu: "dw.hu"; hv: "dw.hv"; hw: "dw.hw"; hx: "dw.hx"; hy: "dw.hy"; hz: "dw.hz"; ia: "dw.ia"; ib: "dw.ib"; ic: "dw.ic"; id: "dw.id"; ie: "dw.ie"; if: "dw.if"; ig: "dw.ig"; ih: "dw.ih"; ii: "dw.ii"; ij: "dw.ij"; ik: "dw.ik"; il: "dw.il"; im: "dw.im"; in: "dw.in"; io: "dw.io"; ip: "dw.ip"; iq: "dw.iq"; ir: "dw.ir"; is: "dw.is"; it: "dw.it"; iu: "dw.iu"; iv: "dw.iv"; iw: "dw.iw"; ix: "dw.ix"; iy: "dw.iy"; iz: "dw.iz"; ja: "dw.ja"; jb: "dw.jb"; jc: "dw.jc"; jd: "dw.jd"; je: "dw.je"; jf: "dw.jf"; jg: "dw.jg"; jh: "dw.jh"; ji: "dw.ji"; jj: "dw.jj"; jk: "dw.jk"; jl: "dw.jl"; jm: "dw.jm"; jn: "dw.jn"; jo: "dw.jo"; jp: "dw.jp"; jq: "dw.jq"; jr: "dw.jr"; js: "dw.js"; jt: "dw.jt"; ju: "dw.ju"; jv: "dw.jv"; jw: "dw.jw"; jx: "dw.jx"; jy: "dw.jy"; jz: "dw.jz"; ka: "dw.ka"; kb: "dw.kb"; kc: "dw.kc"; kd: "dw.kd"; ke: "dw.ke"; kf: "dw.kf"; kg: "dw.kg"; kh: "dw.kh"; ki: "dw.ki"; kj: "dw.kj"; kk: "dw.kk"; kl: "dw.kl"; km: "dw.km"; kn: "dw.kn"; ko: "dw.ko"; kp: "dw.kp"; kq: "dw.kq"; kr: "dw.kr"; ks: "dw.ks"; kt: "dw.kt"; ku: "dw.ku"; kv: "dw.kv"; kw: "dw.kw"; kx: "dw.kx"; ky: "dw.ky"; kz: "dw.kz"; la: "dw.la"; lb: "dw.lb"; lc: "dw.lc"; ld: "dw.ld"; le: "dw.le"; lf: "dw.lf"; lg: "dw.lg"; lh: "dw.lh"; li: "dw.li"; lj: "dw.lj"; lk: "dw.lk"; ll: "dw.ll"; lm: "dw.lm"; ln: "dw.ln"; lo: "dw.lo"; lp: "dw.lp"; lq: "dw.lq"; lr: "dw.lr"; ls: "dw.ls"; lt: "dw.lt"; lu: "dw.lu"; lv: "dw.lv"; lw: "dw.lw"; lx: "dw.lx"; ly: "dw.ly"; lz: "dw.lz"; ma: "dw.ma"; mb: "dw.mb"; mc: "dw.mc"; md: "dw.md"; me: "dw.me"; mf: "dw.mf"; mg: "dw.mg"; mh: "dw.mh"; mi: "dw.mi"; mj: "dw.mj"; mk: "dw.mk"; ml: "dw.ml"; mm: "dw.mm"; mn: "dw.mn"; mo: "dw.mo"; mp: "dw.mp"; mq: "dw.mq"; mr: "dw.mr"; ms: "dw.ms"; mt: "dw.mt"; mu: "dw.mu"; mv: "dw.mv"; mw: "dw.mw"; mx: "dw.mx"; my: "dw.my"; mz: "dw.mz"; na: "dw.na"; nb: "dw.nb"; nc: "dw.nc"; nd: "dw.nd"; ne: "dw.ne"; nf: "dw.nf"; ng: "dw.ng"; nh: "dw.nh"; ni: "dw.ni"; nj: "dw.nj"; nk: "dw.nk"; nl: "dw.nl"; nm: "dw.nm"; nn: "dw.nn"; no: "dw.no"; np: "dw.np"; nq: "dw.nq"; nr: "dw.nr"; ns: "dw.ns"; nt: "dw.nt"; nu: "dw.nu"; nv: "dw.nv"; nw: "dw.nw"; nx: "dw.nx"; ny: "dw.ny"; nz: "dw.nz"; oa: "dw.oa"; ob: "dw.ob"; oc: "dw.oc"; od: "dw.od"; oe: "dw.oe"; of: "dw.of"; og: "dw.og"; oh: "dw.oh"; oi: "dw.oi"; oj: "dw.oj"; ok: "dw.ok"; ol: "dw.ol"; om: "dw.om"; on: "dw.on"; oo: "dw.oo"; op: "dw.op"; oq: "dw.oq"; or: "dw.or"; os: "dw.os"; ot: "dw.ot"; ou: "dw.ou"; ov: "dw.ov"; ow: "dw.ow"; ox: "dw.ox"; oy: "dw.oy"; oz: "dw.oz"; pa: "dw.pa"; pb: "dw.pb"; pc: "dw.pc"; pd: "dw.pd"; pe: "dw.pe"; pf: "dw.pf"; pg: "dw.pg"; ph: "dw.ph"; pi: "dw.pi"; pj: "dw.pj"; pk: "dw.pk"; pl: "dw.pl"; pm: "dw.pm"; pn: "dw.pn"; po: "dw.po"; pp: "dw.pp"; pq: "dw.pq"; pr: "dw.pr"; ps: "dw.ps"; pt: "dw.pt"; pu: "dw.pu"; pv: "dw.pv"; pw: "dw.pw"; px: "dw.px"; py: "dw.py"; pz: "dw.pz"; qa: "dw.qa"; qb: "dw.qb"; qc: "dw.qc"; qd: "dw.qd"; qe: "dw.qe"; qf: "dw.qf"; qg: "dw.qg"; qh: "dw.qh"; qi: "dw.qi"; qj: "dw.qj"; qk: "dw.qk"; ql: "dw.ql"; qm: "dw.qm"; qn: "dw.qn"; qo: "dw.qo"; qp: "dw.qp"; qq: "dw.qq"; qr: "dw.qr"; qs: "dw.qs"; qt: "dw.qt"; qu: "dw.qu"; qv: "dw.qv"; qw: "dw.qw"; qx: "dw.qx"; qy: "dw.qy"; qz: "dw.qz"; ra: "dw.ra"; rb: "dw.rb"; rc: "dw.rc"; rd: "dw.rd"; re: "dw.re"; rf: "dw.rf"; rg: "dw.rg"; rh: "dw.rh"; ri: "dw.ri"; rj: "dw.rj"; rk: "dw.rk"; rl: "dw.rl"; rm: "dw.rm"; rn: "dw.rn"; ro: "dw.ro"; rp: "dw.rp"; rq: "dw.rq"; rr: "dw.rr"; rs: "dw.rs"; rt: "dw.rt"; ru: "dw.ru"; rv: "dw.rv"; rw: "dw.rw"; rx: "dw.rx"; ry: "dw.ry"; rz: "dw.rz"; sa: "dw.sa"; sb: "dw.sb"; sc: "dw.sc"; sd: "dw.sd"; se: "dw.se"; sf: "dw.sf"; sg: "dw.sg"; sh: "dw.sh"; si: "dw.si"; sj: "dw.sj"; sk: "dw.sk"; sl: "dw.sl"; sm: "dw.sm"; sn: "dw.sn"; so: "dw.so"; sp: "dw.sp"; sq: "dw.sq"; sr: "dw.sr"; ss: "dw.ss"; st: "dw.st"; su: "dw.su"; sv: "dw.sv"; sw: "dw.sw"; sx: "dw.sx"; sy: "dw.sy"; sz: "dw.sz"; ta: "dw.ta"; tb: "dw.tb"; tc: "dw.tc"; td: "dw.td"; te: "dw.te"; tf: "dw.tf"; tg: "dw.tg"; th: "dw.th"; ti: "dw.ti"; tj: "dw.tj"; tk: "dw.tk"; tl: "dw.tl"; tm: "dw.tm"; tn: "dw.tn"; to: "dw.to"; tp: "dw.tp"; tq: "dw.tq"; tr: "dw.tr"; ts: "dw.ts"; tt: "dw.tt"; tu: "dw.tu"; tv: "dw.tv"; tw: "dw.tw"; tx: "dw.tx"; ty: "dw.ty"; tz: "dw.tz"; ua: "dw.ua"; ub: "dw.ub"; uc: "dw.uc"; ud: "dw.ud"; ue: "dw.ue"; uf: "dw.uf"; ug: "dw.ug"; uh: "dw.uh"; ui: "dw.ui"; uj: "dw.uj"; uk: "dw.uk"; ul: "dw.ul"; um: "dw.um"; un: "dw.un"; uo: "dw.uo"; up: "dw.up"; uq: "dw.uq"; ur: "dw.ur"; us: "dw.us"; ut: "dw.ut"; uu: "dw.uu"; uv: "dw.uv"; uw: "dw.uw"; ux: "dw.ux"; uy: "dw.uy"; uz: "dw.uz"; va: "dw.va"; vb: "dw.vb"; vc: "dw.vc"; vd: "dw.vd"; ve: "dw.ve"; vf: "dw.vf"; vg: "dw.vg"; vh: "dw.vh"; vi: "dw.vi"; vj: "dw.vj"; vk: "dw.vk"; vl: "dw.vl"; vm: "dw.vm"; vn: "dw.vn"; vo: "dw.vo"; vp: "dw.vp"; vq: "dw.vq"; vr: "dw.vr"; vs: "dw.vs"; vt: "dw.vt"; vu: "dw.vu"; vv: "dw.vv"; vw: "dw.vw"; vx: "dw.vx"; vy: "dw.vy"; vz: "dw.vz"; wa: "dw.wa"; wb: "dw.wb"; wc: "dw.wc"; wd: "dw.wd"; we: "dw.we"; wf: "dw.wf"; wg: "dw.wg"; wh: "dw.wh"; wi: "dw.wi"; wj: "dw.wj"; wk: "dw.wk"; wl: "dw.wl"; wm: "dw.wm"; wn: "dw.wn"; wo: "dw.wo"; wp: "dw.wp"; wq: "dw.wq"; wr: "dw.wr"; ws: "dw.ws"; wt: "dw.wt"; wu: "dw.wu"; wv: "dw.wv"; ww: "dw.ww"; wx: "dw.wx"; wy: "dw.wy"; wz: "dw.wz"; xa: "dw.xa"; xb: "dw.xb"; xc: "dw.xc"; xd: "dw.xd"; xe: "dw.xe"; xf: "dw.xf"; xg: "dw.xg"; xh: "dw.xh"; xi: "dw.xi"; xj: "dw.xj"; xk: "dw.xk"; xl: "dw.xl"; xm: "dw.xm"; xn: "dw.xn"; xo: "dw.xo"; xp: "dw.xp"; xq: "dw.xq"; xr: "dw.xr"; xs: "dw.xs"; xt: "dw.xt"; xu: "dw.xu"; xv: "dw.xv"; xw: "dw.xw"; xx: "dw.xx"; xy: "dw.xy"; xz: "dw.xz"; ya: "dw.ya"; yb: "dw.yb"; yc: "dw.yc"; yd: "dw.yd"; ye: "dw.ye"; yf: "dw.yf"; yg: "dw.yg"; yh: "dw.yh"; yi: "dw.yi"; yj: "dw.yj"; yk: "dw.yk"; yl: "dw.yl"; ym: "dw.ym"; yn: "dw.yn"; yo: "dw.yo"; yp: "dw.yp"; yq: "dw.yq"; yr: "dw.yr"; ys: "dw.ys"; yt: "dw.yt"; yu: "dw.yu"; yv: "dw.yv"; yw: "dw.yw"; yx: "dw.yx"; yy: "dw.yy"; yz: "dw.yz"; za: "dw.za"; zb: "dw.zb"; zc: "dw.zc"; zd: "dw.zd"; ze: "dw.ze"; zf: "dw.zf"; zg: "dw.zg"; zh: "dw.zh"; zi: "dw.zi"; zj: "dw.zj"; zk: "dw.zk"; zl: "dw.zl"; zm: "dw.zm"; zn: "dw.zn"; zo: "dw.zo"; zp: "dw.zp"; zq: "dw.zq"; zr: "dw.zr"; zs: "dw.zs"; zt: "dw.zt"; zu: "dw.zu"; zv: "dw.zv"; zw: "dw.zw"; zx: "dw.zx"; zy: "dw.zy"; zz: "dw.zz"; }; dx: { aa: "dx.aa"; ab: "dx.ab"; ac: "dx.ac"; ad: "dx.ad"; ae: "dx.ae"; af: "dx.af"; ag: "dx.ag"; ah: "dx.ah"; ai: "dx.ai"; aj: "dx.aj"; ak: "dx.ak"; al: "dx.al"; am: "dx.am"; an: "dx.an"; ao: "dx.ao"; ap: "dx.ap"; aq: "dx.aq"; ar: "dx.ar"; as: "dx.as"; at: "dx.at"; au: "dx.au"; av: "dx.av"; aw: "dx.aw"; ax: "dx.ax"; ay: "dx.ay"; az: "dx.az"; ba: "dx.ba"; bb: "dx.bb"; bc: "dx.bc"; bd: "dx.bd"; be: "dx.be"; bf: "dx.bf"; bg: "dx.bg"; bh: "dx.bh"; bi: "dx.bi"; bj: "dx.bj"; bk: "dx.bk"; bl: "dx.bl"; bm: "dx.bm"; bn: "dx.bn"; bo: "dx.bo"; bp: "dx.bp"; bq: "dx.bq"; br: "dx.br"; bs: "dx.bs"; bt: "dx.bt"; bu: "dx.bu"; bv: "dx.bv"; bw: "dx.bw"; bx: "dx.bx"; by: "dx.by"; bz: "dx.bz"; ca: "dx.ca"; cb: "dx.cb"; cc: "dx.cc"; cd: "dx.cd"; ce: "dx.ce"; cf: "dx.cf"; cg: "dx.cg"; ch: "dx.ch"; ci: "dx.ci"; cj: "dx.cj"; ck: "dx.ck"; cl: "dx.cl"; cm: "dx.cm"; cn: "dx.cn"; co: "dx.co"; cp: "dx.cp"; cq: "dx.cq"; cr: "dx.cr"; cs: "dx.cs"; ct: "dx.ct"; cu: "dx.cu"; cv: "dx.cv"; cw: "dx.cw"; cx: "dx.cx"; cy: "dx.cy"; cz: "dx.cz"; da: "dx.da"; db: "dx.db"; dc: "dx.dc"; dd: "dx.dd"; de: "dx.de"; df: "dx.df"; dg: "dx.dg"; dh: "dx.dh"; di: "dx.di"; dj: "dx.dj"; dk: "dx.dk"; dl: "dx.dl"; dm: "dx.dm"; dn: "dx.dn"; do: "dx.do"; dp: "dx.dp"; dq: "dx.dq"; dr: "dx.dr"; ds: "dx.ds"; dt: "dx.dt"; du: "dx.du"; dv: "dx.dv"; dw: "dx.dw"; dx: "dx.dx"; dy: "dx.dy"; dz: "dx.dz"; ea: "dx.ea"; eb: "dx.eb"; ec: "dx.ec"; ed: "dx.ed"; ee: "dx.ee"; ef: "dx.ef"; eg: "dx.eg"; eh: "dx.eh"; ei: "dx.ei"; ej: "dx.ej"; ek: "dx.ek"; el: "dx.el"; em: "dx.em"; en: "dx.en"; eo: "dx.eo"; ep: "dx.ep"; eq: "dx.eq"; er: "dx.er"; es: "dx.es"; et: "dx.et"; eu: "dx.eu"; ev: "dx.ev"; ew: "dx.ew"; ex: "dx.ex"; ey: "dx.ey"; ez: "dx.ez"; fa: "dx.fa"; fb: "dx.fb"; fc: "dx.fc"; fd: "dx.fd"; fe: "dx.fe"; ff: "dx.ff"; fg: "dx.fg"; fh: "dx.fh"; fi: "dx.fi"; fj: "dx.fj"; fk: "dx.fk"; fl: "dx.fl"; fm: "dx.fm"; fn: "dx.fn"; fo: "dx.fo"; fp: "dx.fp"; fq: "dx.fq"; fr: "dx.fr"; fs: "dx.fs"; ft: "dx.ft"; fu: "dx.fu"; fv: "dx.fv"; fw: "dx.fw"; fx: "dx.fx"; fy: "dx.fy"; fz: "dx.fz"; ga: "dx.ga"; gb: "dx.gb"; gc: "dx.gc"; gd: "dx.gd"; ge: "dx.ge"; gf: "dx.gf"; gg: "dx.gg"; gh: "dx.gh"; gi: "dx.gi"; gj: "dx.gj"; gk: "dx.gk"; gl: "dx.gl"; gm: "dx.gm"; gn: "dx.gn"; go: "dx.go"; gp: "dx.gp"; gq: "dx.gq"; gr: "dx.gr"; gs: "dx.gs"; gt: "dx.gt"; gu: "dx.gu"; gv: "dx.gv"; gw: "dx.gw"; gx: "dx.gx"; gy: "dx.gy"; gz: "dx.gz"; ha: "dx.ha"; hb: "dx.hb"; hc: "dx.hc"; hd: "dx.hd"; he: "dx.he"; hf: "dx.hf"; hg: "dx.hg"; hh: "dx.hh"; hi: "dx.hi"; hj: "dx.hj"; hk: "dx.hk"; hl: "dx.hl"; hm: "dx.hm"; hn: "dx.hn"; ho: "dx.ho"; hp: "dx.hp"; hq: "dx.hq"; hr: "dx.hr"; hs: "dx.hs"; ht: "dx.ht"; hu: "dx.hu"; hv: "dx.hv"; hw: "dx.hw"; hx: "dx.hx"; hy: "dx.hy"; hz: "dx.hz"; ia: "dx.ia"; ib: "dx.ib"; ic: "dx.ic"; id: "dx.id"; ie: "dx.ie"; if: "dx.if"; ig: "dx.ig"; ih: "dx.ih"; ii: "dx.ii"; ij: "dx.ij"; ik: "dx.ik"; il: "dx.il"; im: "dx.im"; in: "dx.in"; io: "dx.io"; ip: "dx.ip"; iq: "dx.iq"; ir: "dx.ir"; is: "dx.is"; it: "dx.it"; iu: "dx.iu"; iv: "dx.iv"; iw: "dx.iw"; ix: "dx.ix"; iy: "dx.iy"; iz: "dx.iz"; ja: "dx.ja"; jb: "dx.jb"; jc: "dx.jc"; jd: "dx.jd"; je: "dx.je"; jf: "dx.jf"; jg: "dx.jg"; jh: "dx.jh"; ji: "dx.ji"; jj: "dx.jj"; jk: "dx.jk"; jl: "dx.jl"; jm: "dx.jm"; jn: "dx.jn"; jo: "dx.jo"; jp: "dx.jp"; jq: "dx.jq"; jr: "dx.jr"; js: "dx.js"; jt: "dx.jt"; ju: "dx.ju"; jv: "dx.jv"; jw: "dx.jw"; jx: "dx.jx"; jy: "dx.jy"; jz: "dx.jz"; ka: "dx.ka"; kb: "dx.kb"; kc: "dx.kc"; kd: "dx.kd"; ke: "dx.ke"; kf: "dx.kf"; kg: "dx.kg"; kh: "dx.kh"; ki: "dx.ki"; kj: "dx.kj"; kk: "dx.kk"; kl: "dx.kl"; km: "dx.km"; kn: "dx.kn"; ko: "dx.ko"; kp: "dx.kp"; kq: "dx.kq"; kr: "dx.kr"; ks: "dx.ks"; kt: "dx.kt"; ku: "dx.ku"; kv: "dx.kv"; kw: "dx.kw"; kx: "dx.kx"; ky: "dx.ky"; kz: "dx.kz"; la: "dx.la"; lb: "dx.lb"; lc: "dx.lc"; ld: "dx.ld"; le: "dx.le"; lf: "dx.lf"; lg: "dx.lg"; lh: "dx.lh"; li: "dx.li"; lj: "dx.lj"; lk: "dx.lk"; ll: "dx.ll"; lm: "dx.lm"; ln: "dx.ln"; lo: "dx.lo"; lp: "dx.lp"; lq: "dx.lq"; lr: "dx.lr"; ls: "dx.ls"; lt: "dx.lt"; lu: "dx.lu"; lv: "dx.lv"; lw: "dx.lw"; lx: "dx.lx"; ly: "dx.ly"; lz: "dx.lz"; ma: "dx.ma"; mb: "dx.mb"; mc: "dx.mc"; md: "dx.md"; me: "dx.me"; mf: "dx.mf"; mg: "dx.mg"; mh: "dx.mh"; mi: "dx.mi"; mj: "dx.mj"; mk: "dx.mk"; ml: "dx.ml"; mm: "dx.mm"; mn: "dx.mn"; mo: "dx.mo"; mp: "dx.mp"; mq: "dx.mq"; mr: "dx.mr"; ms: "dx.ms"; mt: "dx.mt"; mu: "dx.mu"; mv: "dx.mv"; mw: "dx.mw"; mx: "dx.mx"; my: "dx.my"; mz: "dx.mz"; na: "dx.na"; nb: "dx.nb"; nc: "dx.nc"; nd: "dx.nd"; ne: "dx.ne"; nf: "dx.nf"; ng: "dx.ng"; nh: "dx.nh"; ni: "dx.ni"; nj: "dx.nj"; nk: "dx.nk"; nl: "dx.nl"; nm: "dx.nm"; nn: "dx.nn"; no: "dx.no"; np: "dx.np"; nq: "dx.nq"; nr: "dx.nr"; ns: "dx.ns"; nt: "dx.nt"; nu: "dx.nu"; nv: "dx.nv"; nw: "dx.nw"; nx: "dx.nx"; ny: "dx.ny"; nz: "dx.nz"; oa: "dx.oa"; ob: "dx.ob"; oc: "dx.oc"; od: "dx.od"; oe: "dx.oe"; of: "dx.of"; og: "dx.og"; oh: "dx.oh"; oi: "dx.oi"; oj: "dx.oj"; ok: "dx.ok"; ol: "dx.ol"; om: "dx.om"; on: "dx.on"; oo: "dx.oo"; op: "dx.op"; oq: "dx.oq"; or: "dx.or"; os: "dx.os"; ot: "dx.ot"; ou: "dx.ou"; ov: "dx.ov"; ow: "dx.ow"; ox: "dx.ox"; oy: "dx.oy"; oz: "dx.oz"; pa: "dx.pa"; pb: "dx.pb"; pc: "dx.pc"; pd: "dx.pd"; pe: "dx.pe"; pf: "dx.pf"; pg: "dx.pg"; ph: "dx.ph"; pi: "dx.pi"; pj: "dx.pj"; pk: "dx.pk"; pl: "dx.pl"; pm: "dx.pm"; pn: "dx.pn"; po: "dx.po"; pp: "dx.pp"; pq: "dx.pq"; pr: "dx.pr"; ps: "dx.ps"; pt: "dx.pt"; pu: "dx.pu"; pv: "dx.pv"; pw: "dx.pw"; px: "dx.px"; py: "dx.py"; pz: "dx.pz"; qa: "dx.qa"; qb: "dx.qb"; qc: "dx.qc"; qd: "dx.qd"; qe: "dx.qe"; qf: "dx.qf"; qg: "dx.qg"; qh: "dx.qh"; qi: "dx.qi"; qj: "dx.qj"; qk: "dx.qk"; ql: "dx.ql"; qm: "dx.qm"; qn: "dx.qn"; qo: "dx.qo"; qp: "dx.qp"; qq: "dx.qq"; qr: "dx.qr"; qs: "dx.qs"; qt: "dx.qt"; qu: "dx.qu"; qv: "dx.qv"; qw: "dx.qw"; qx: "dx.qx"; qy: "dx.qy"; qz: "dx.qz"; ra: "dx.ra"; rb: "dx.rb"; rc: "dx.rc"; rd: "dx.rd"; re: "dx.re"; rf: "dx.rf"; rg: "dx.rg"; rh: "dx.rh"; ri: "dx.ri"; rj: "dx.rj"; rk: "dx.rk"; rl: "dx.rl"; rm: "dx.rm"; rn: "dx.rn"; ro: "dx.ro"; rp: "dx.rp"; rq: "dx.rq"; rr: "dx.rr"; rs: "dx.rs"; rt: "dx.rt"; ru: "dx.ru"; rv: "dx.rv"; rw: "dx.rw"; rx: "dx.rx"; ry: "dx.ry"; rz: "dx.rz"; sa: "dx.sa"; sb: "dx.sb"; sc: "dx.sc"; sd: "dx.sd"; se: "dx.se"; sf: "dx.sf"; sg: "dx.sg"; sh: "dx.sh"; si: "dx.si"; sj: "dx.sj"; sk: "dx.sk"; sl: "dx.sl"; sm: "dx.sm"; sn: "dx.sn"; so: "dx.so"; sp: "dx.sp"; sq: "dx.sq"; sr: "dx.sr"; ss: "dx.ss"; st: "dx.st"; su: "dx.su"; sv: "dx.sv"; sw: "dx.sw"; sx: "dx.sx"; sy: "dx.sy"; sz: "dx.sz"; ta: "dx.ta"; tb: "dx.tb"; tc: "dx.tc"; td: "dx.td"; te: "dx.te"; tf: "dx.tf"; tg: "dx.tg"; th: "dx.th"; ti: "dx.ti"; tj: "dx.tj"; tk: "dx.tk"; tl: "dx.tl"; tm: "dx.tm"; tn: "dx.tn"; to: "dx.to"; tp: "dx.tp"; tq: "dx.tq"; tr: "dx.tr"; ts: "dx.ts"; tt: "dx.tt"; tu: "dx.tu"; tv: "dx.tv"; tw: "dx.tw"; tx: "dx.tx"; ty: "dx.ty"; tz: "dx.tz"; ua: "dx.ua"; ub: "dx.ub"; uc: "dx.uc"; ud: "dx.ud"; ue: "dx.ue"; uf: "dx.uf"; ug: "dx.ug"; uh: "dx.uh"; ui: "dx.ui"; uj: "dx.uj"; uk: "dx.uk"; ul: "dx.ul"; um: "dx.um"; un: "dx.un"; uo: "dx.uo"; up: "dx.up"; uq: "dx.uq"; ur: "dx.ur"; us: "dx.us"; ut: "dx.ut"; uu: "dx.uu"; uv: "dx.uv"; uw: "dx.uw"; ux: "dx.ux"; uy: "dx.uy"; uz: "dx.uz"; va: "dx.va"; vb: "dx.vb"; vc: "dx.vc"; vd: "dx.vd"; ve: "dx.ve"; vf: "dx.vf"; vg: "dx.vg"; vh: "dx.vh"; vi: "dx.vi"; vj: "dx.vj"; vk: "dx.vk"; vl: "dx.vl"; vm: "dx.vm"; vn: "dx.vn"; vo: "dx.vo"; vp: "dx.vp"; vq: "dx.vq"; vr: "dx.vr"; vs: "dx.vs"; vt: "dx.vt"; vu: "dx.vu"; vv: "dx.vv"; vw: "dx.vw"; vx: "dx.vx"; vy: "dx.vy"; vz: "dx.vz"; wa: "dx.wa"; wb: "dx.wb"; wc: "dx.wc"; wd: "dx.wd"; we: "dx.we"; wf: "dx.wf"; wg: "dx.wg"; wh: "dx.wh"; wi: "dx.wi"; wj: "dx.wj"; wk: "dx.wk"; wl: "dx.wl"; wm: "dx.wm"; wn: "dx.wn"; wo: "dx.wo"; wp: "dx.wp"; wq: "dx.wq"; wr: "dx.wr"; ws: "dx.ws"; wt: "dx.wt"; wu: "dx.wu"; wv: "dx.wv"; ww: "dx.ww"; wx: "dx.wx"; wy: "dx.wy"; wz: "dx.wz"; xa: "dx.xa"; xb: "dx.xb"; xc: "dx.xc"; xd: "dx.xd"; xe: "dx.xe"; xf: "dx.xf"; xg: "dx.xg"; xh: "dx.xh"; xi: "dx.xi"; xj: "dx.xj"; xk: "dx.xk"; xl: "dx.xl"; xm: "dx.xm"; xn: "dx.xn"; xo: "dx.xo"; xp: "dx.xp"; xq: "dx.xq"; xr: "dx.xr"; xs: "dx.xs"; xt: "dx.xt"; xu: "dx.xu"; xv: "dx.xv"; xw: "dx.xw"; xx: "dx.xx"; xy: "dx.xy"; xz: "dx.xz"; ya: "dx.ya"; yb: "dx.yb"; yc: "dx.yc"; yd: "dx.yd"; ye: "dx.ye"; yf: "dx.yf"; yg: "dx.yg"; yh: "dx.yh"; yi: "dx.yi"; yj: "dx.yj"; yk: "dx.yk"; yl: "dx.yl"; ym: "dx.ym"; yn: "dx.yn"; yo: "dx.yo"; yp: "dx.yp"; yq: "dx.yq"; yr: "dx.yr"; ys: "dx.ys"; yt: "dx.yt"; yu: "dx.yu"; yv: "dx.yv"; yw: "dx.yw"; yx: "dx.yx"; yy: "dx.yy"; yz: "dx.yz"; za: "dx.za"; zb: "dx.zb"; zc: "dx.zc"; zd: "dx.zd"; ze: "dx.ze"; zf: "dx.zf"; zg: "dx.zg"; zh: "dx.zh"; zi: "dx.zi"; zj: "dx.zj"; zk: "dx.zk"; zl: "dx.zl"; zm: "dx.zm"; zn: "dx.zn"; zo: "dx.zo"; zp: "dx.zp"; zq: "dx.zq"; zr: "dx.zr"; zs: "dx.zs"; zt: "dx.zt"; zu: "dx.zu"; zv: "dx.zv"; zw: "dx.zw"; zx: "dx.zx"; zy: "dx.zy"; zz: "dx.zz"; }; dy: { aa: "dy.aa"; ab: "dy.ab"; ac: "dy.ac"; ad: "dy.ad"; ae: "dy.ae"; af: "dy.af"; ag: "dy.ag"; ah: "dy.ah"; ai: "dy.ai"; aj: "dy.aj"; ak: "dy.ak"; al: "dy.al"; am: "dy.am"; an: "dy.an"; ao: "dy.ao"; ap: "dy.ap"; aq: "dy.aq"; ar: "dy.ar"; as: "dy.as"; at: "dy.at"; au: "dy.au"; av: "dy.av"; aw: "dy.aw"; ax: "dy.ax"; ay: "dy.ay"; az: "dy.az"; ba: "dy.ba"; bb: "dy.bb"; bc: "dy.bc"; bd: "dy.bd"; be: "dy.be"; bf: "dy.bf"; bg: "dy.bg"; bh: "dy.bh"; bi: "dy.bi"; bj: "dy.bj"; bk: "dy.bk"; bl: "dy.bl"; bm: "dy.bm"; bn: "dy.bn"; bo: "dy.bo"; bp: "dy.bp"; bq: "dy.bq"; br: "dy.br"; bs: "dy.bs"; bt: "dy.bt"; bu: "dy.bu"; bv: "dy.bv"; bw: "dy.bw"; bx: "dy.bx"; by: "dy.by"; bz: "dy.bz"; ca: "dy.ca"; cb: "dy.cb"; cc: "dy.cc"; cd: "dy.cd"; ce: "dy.ce"; cf: "dy.cf"; cg: "dy.cg"; ch: "dy.ch"; ci: "dy.ci"; cj: "dy.cj"; ck: "dy.ck"; cl: "dy.cl"; cm: "dy.cm"; cn: "dy.cn"; co: "dy.co"; cp: "dy.cp"; cq: "dy.cq"; cr: "dy.cr"; cs: "dy.cs"; ct: "dy.ct"; cu: "dy.cu"; cv: "dy.cv"; cw: "dy.cw"; cx: "dy.cx"; cy: "dy.cy"; cz: "dy.cz"; da: "dy.da"; db: "dy.db"; dc: "dy.dc"; dd: "dy.dd"; de: "dy.de"; df: "dy.df"; dg: "dy.dg"; dh: "dy.dh"; di: "dy.di"; dj: "dy.dj"; dk: "dy.dk"; dl: "dy.dl"; dm: "dy.dm"; dn: "dy.dn"; do: "dy.do"; dp: "dy.dp"; dq: "dy.dq"; dr: "dy.dr"; ds: "dy.ds"; dt: "dy.dt"; du: "dy.du"; dv: "dy.dv"; dw: "dy.dw"; dx: "dy.dx"; dy: "dy.dy"; dz: "dy.dz"; ea: "dy.ea"; eb: "dy.eb"; ec: "dy.ec"; ed: "dy.ed"; ee: "dy.ee"; ef: "dy.ef"; eg: "dy.eg"; eh: "dy.eh"; ei: "dy.ei"; ej: "dy.ej"; ek: "dy.ek"; el: "dy.el"; em: "dy.em"; en: "dy.en"; eo: "dy.eo"; ep: "dy.ep"; eq: "dy.eq"; er: "dy.er"; es: "dy.es"; et: "dy.et"; eu: "dy.eu"; ev: "dy.ev"; ew: "dy.ew"; ex: "dy.ex"; ey: "dy.ey"; ez: "dy.ez"; fa: "dy.fa"; fb: "dy.fb"; fc: "dy.fc"; fd: "dy.fd"; fe: "dy.fe"; ff: "dy.ff"; fg: "dy.fg"; fh: "dy.fh"; fi: "dy.fi"; fj: "dy.fj"; fk: "dy.fk"; fl: "dy.fl"; fm: "dy.fm"; fn: "dy.fn"; fo: "dy.fo"; fp: "dy.fp"; fq: "dy.fq"; fr: "dy.fr"; fs: "dy.fs"; ft: "dy.ft"; fu: "dy.fu"; fv: "dy.fv"; fw: "dy.fw"; fx: "dy.fx"; fy: "dy.fy"; fz: "dy.fz"; ga: "dy.ga"; gb: "dy.gb"; gc: "dy.gc"; gd: "dy.gd"; ge: "dy.ge"; gf: "dy.gf"; gg: "dy.gg"; gh: "dy.gh"; gi: "dy.gi"; gj: "dy.gj"; gk: "dy.gk"; gl: "dy.gl"; gm: "dy.gm"; gn: "dy.gn"; go: "dy.go"; gp: "dy.gp"; gq: "dy.gq"; gr: "dy.gr"; gs: "dy.gs"; gt: "dy.gt"; gu: "dy.gu"; gv: "dy.gv"; gw: "dy.gw"; gx: "dy.gx"; gy: "dy.gy"; gz: "dy.gz"; ha: "dy.ha"; hb: "dy.hb"; hc: "dy.hc"; hd: "dy.hd"; he: "dy.he"; hf: "dy.hf"; hg: "dy.hg"; hh: "dy.hh"; hi: "dy.hi"; hj: "dy.hj"; hk: "dy.hk"; hl: "dy.hl"; hm: "dy.hm"; hn: "dy.hn"; ho: "dy.ho"; hp: "dy.hp"; hq: "dy.hq"; hr: "dy.hr"; hs: "dy.hs"; ht: "dy.ht"; hu: "dy.hu"; hv: "dy.hv"; hw: "dy.hw"; hx: "dy.hx"; hy: "dy.hy"; hz: "dy.hz"; ia: "dy.ia"; ib: "dy.ib"; ic: "dy.ic"; id: "dy.id"; ie: "dy.ie"; if: "dy.if"; ig: "dy.ig"; ih: "dy.ih"; ii: "dy.ii"; ij: "dy.ij"; ik: "dy.ik"; il: "dy.il"; im: "dy.im"; in: "dy.in"; io: "dy.io"; ip: "dy.ip"; iq: "dy.iq"; ir: "dy.ir"; is: "dy.is"; it: "dy.it"; iu: "dy.iu"; iv: "dy.iv"; iw: "dy.iw"; ix: "dy.ix"; iy: "dy.iy"; iz: "dy.iz"; ja: "dy.ja"; jb: "dy.jb"; jc: "dy.jc"; jd: "dy.jd"; je: "dy.je"; jf: "dy.jf"; jg: "dy.jg"; jh: "dy.jh"; ji: "dy.ji"; jj: "dy.jj"; jk: "dy.jk"; jl: "dy.jl"; jm: "dy.jm"; jn: "dy.jn"; jo: "dy.jo"; jp: "dy.jp"; jq: "dy.jq"; jr: "dy.jr"; js: "dy.js"; jt: "dy.jt"; ju: "dy.ju"; jv: "dy.jv"; jw: "dy.jw"; jx: "dy.jx"; jy: "dy.jy"; jz: "dy.jz"; ka: "dy.ka"; kb: "dy.kb"; kc: "dy.kc"; kd: "dy.kd"; ke: "dy.ke"; kf: "dy.kf"; kg: "dy.kg"; kh: "dy.kh"; ki: "dy.ki"; kj: "dy.kj"; kk: "dy.kk"; kl: "dy.kl"; km: "dy.km"; kn: "dy.kn"; ko: "dy.ko"; kp: "dy.kp"; kq: "dy.kq"; kr: "dy.kr"; ks: "dy.ks"; kt: "dy.kt"; ku: "dy.ku"; kv: "dy.kv"; kw: "dy.kw"; kx: "dy.kx"; ky: "dy.ky"; kz: "dy.kz"; la: "dy.la"; lb: "dy.lb"; lc: "dy.lc"; ld: "dy.ld"; le: "dy.le"; lf: "dy.lf"; lg: "dy.lg"; lh: "dy.lh"; li: "dy.li"; lj: "dy.lj"; lk: "dy.lk"; ll: "dy.ll"; lm: "dy.lm"; ln: "dy.ln"; lo: "dy.lo"; lp: "dy.lp"; lq: "dy.lq"; lr: "dy.lr"; ls: "dy.ls"; lt: "dy.lt"; lu: "dy.lu"; lv: "dy.lv"; lw: "dy.lw"; lx: "dy.lx"; ly: "dy.ly"; lz: "dy.lz"; ma: "dy.ma"; mb: "dy.mb"; mc: "dy.mc"; md: "dy.md"; me: "dy.me"; mf: "dy.mf"; mg: "dy.mg"; mh: "dy.mh"; mi: "dy.mi"; mj: "dy.mj"; mk: "dy.mk"; ml: "dy.ml"; mm: "dy.mm"; mn: "dy.mn"; mo: "dy.mo"; mp: "dy.mp"; mq: "dy.mq"; mr: "dy.mr"; ms: "dy.ms"; mt: "dy.mt"; mu: "dy.mu"; mv: "dy.mv"; mw: "dy.mw"; mx: "dy.mx"; my: "dy.my"; mz: "dy.mz"; na: "dy.na"; nb: "dy.nb"; nc: "dy.nc"; nd: "dy.nd"; ne: "dy.ne"; nf: "dy.nf"; ng: "dy.ng"; nh: "dy.nh"; ni: "dy.ni"; nj: "dy.nj"; nk: "dy.nk"; nl: "dy.nl"; nm: "dy.nm"; nn: "dy.nn"; no: "dy.no"; np: "dy.np"; nq: "dy.nq"; nr: "dy.nr"; ns: "dy.ns"; nt: "dy.nt"; nu: "dy.nu"; nv: "dy.nv"; nw: "dy.nw"; nx: "dy.nx"; ny: "dy.ny"; nz: "dy.nz"; oa: "dy.oa"; ob: "dy.ob"; oc: "dy.oc"; od: "dy.od"; oe: "dy.oe"; of: "dy.of"; og: "dy.og"; oh: "dy.oh"; oi: "dy.oi"; oj: "dy.oj"; ok: "dy.ok"; ol: "dy.ol"; om: "dy.om"; on: "dy.on"; oo: "dy.oo"; op: "dy.op"; oq: "dy.oq"; or: "dy.or"; os: "dy.os"; ot: "dy.ot"; ou: "dy.ou"; ov: "dy.ov"; ow: "dy.ow"; ox: "dy.ox"; oy: "dy.oy"; oz: "dy.oz"; pa: "dy.pa"; pb: "dy.pb"; pc: "dy.pc"; pd: "dy.pd"; pe: "dy.pe"; pf: "dy.pf"; pg: "dy.pg"; ph: "dy.ph"; pi: "dy.pi"; pj: "dy.pj"; pk: "dy.pk"; pl: "dy.pl"; pm: "dy.pm"; pn: "dy.pn"; po: "dy.po"; pp: "dy.pp"; pq: "dy.pq"; pr: "dy.pr"; ps: "dy.ps"; pt: "dy.pt"; pu: "dy.pu"; pv: "dy.pv"; pw: "dy.pw"; px: "dy.px"; py: "dy.py"; pz: "dy.pz"; qa: "dy.qa"; qb: "dy.qb"; qc: "dy.qc"; qd: "dy.qd"; qe: "dy.qe"; qf: "dy.qf"; qg: "dy.qg"; qh: "dy.qh"; qi: "dy.qi"; qj: "dy.qj"; qk: "dy.qk"; ql: "dy.ql"; qm: "dy.qm"; qn: "dy.qn"; qo: "dy.qo"; qp: "dy.qp"; qq: "dy.qq"; qr: "dy.qr"; qs: "dy.qs"; qt: "dy.qt"; qu: "dy.qu"; qv: "dy.qv"; qw: "dy.qw"; qx: "dy.qx"; qy: "dy.qy"; qz: "dy.qz"; ra: "dy.ra"; rb: "dy.rb"; rc: "dy.rc"; rd: "dy.rd"; re: "dy.re"; rf: "dy.rf"; rg: "dy.rg"; rh: "dy.rh"; ri: "dy.ri"; rj: "dy.rj"; rk: "dy.rk"; rl: "dy.rl"; rm: "dy.rm"; rn: "dy.rn"; ro: "dy.ro"; rp: "dy.rp"; rq: "dy.rq"; rr: "dy.rr"; rs: "dy.rs"; rt: "dy.rt"; ru: "dy.ru"; rv: "dy.rv"; rw: "dy.rw"; rx: "dy.rx"; ry: "dy.ry"; rz: "dy.rz"; sa: "dy.sa"; sb: "dy.sb"; sc: "dy.sc"; sd: "dy.sd"; se: "dy.se"; sf: "dy.sf"; sg: "dy.sg"; sh: "dy.sh"; si: "dy.si"; sj: "dy.sj"; sk: "dy.sk"; sl: "dy.sl"; sm: "dy.sm"; sn: "dy.sn"; so: "dy.so"; sp: "dy.sp"; sq: "dy.sq"; sr: "dy.sr"; ss: "dy.ss"; st: "dy.st"; su: "dy.su"; sv: "dy.sv"; sw: "dy.sw"; sx: "dy.sx"; sy: "dy.sy"; sz: "dy.sz"; ta: "dy.ta"; tb: "dy.tb"; tc: "dy.tc"; td: "dy.td"; te: "dy.te"; tf: "dy.tf"; tg: "dy.tg"; th: "dy.th"; ti: "dy.ti"; tj: "dy.tj"; tk: "dy.tk"; tl: "dy.tl"; tm: "dy.tm"; tn: "dy.tn"; to: "dy.to"; tp: "dy.tp"; tq: "dy.tq"; tr: "dy.tr"; ts: "dy.ts"; tt: "dy.tt"; tu: "dy.tu"; tv: "dy.tv"; tw: "dy.tw"; tx: "dy.tx"; ty: "dy.ty"; tz: "dy.tz"; ua: "dy.ua"; ub: "dy.ub"; uc: "dy.uc"; ud: "dy.ud"; ue: "dy.ue"; uf: "dy.uf"; ug: "dy.ug"; uh: "dy.uh"; ui: "dy.ui"; uj: "dy.uj"; uk: "dy.uk"; ul: "dy.ul"; um: "dy.um"; un: "dy.un"; uo: "dy.uo"; up: "dy.up"; uq: "dy.uq"; ur: "dy.ur"; us: "dy.us"; ut: "dy.ut"; uu: "dy.uu"; uv: "dy.uv"; uw: "dy.uw"; ux: "dy.ux"; uy: "dy.uy"; uz: "dy.uz"; va: "dy.va"; vb: "dy.vb"; vc: "dy.vc"; vd: "dy.vd"; ve: "dy.ve"; vf: "dy.vf"; vg: "dy.vg"; vh: "dy.vh"; vi: "dy.vi"; vj: "dy.vj"; vk: "dy.vk"; vl: "dy.vl"; vm: "dy.vm"; vn: "dy.vn"; vo: "dy.vo"; vp: "dy.vp"; vq: "dy.vq"; vr: "dy.vr"; vs: "dy.vs"; vt: "dy.vt"; vu: "dy.vu"; vv: "dy.vv"; vw: "dy.vw"; vx: "dy.vx"; vy: "dy.vy"; vz: "dy.vz"; wa: "dy.wa"; wb: "dy.wb"; wc: "dy.wc"; wd: "dy.wd"; we: "dy.we"; wf: "dy.wf"; wg: "dy.wg"; wh: "dy.wh"; wi: "dy.wi"; wj: "dy.wj"; wk: "dy.wk"; wl: "dy.wl"; wm: "dy.wm"; wn: "dy.wn"; wo: "dy.wo"; wp: "dy.wp"; wq: "dy.wq"; wr: "dy.wr"; ws: "dy.ws"; wt: "dy.wt"; wu: "dy.wu"; wv: "dy.wv"; ww: "dy.ww"; wx: "dy.wx"; wy: "dy.wy"; wz: "dy.wz"; xa: "dy.xa"; xb: "dy.xb"; xc: "dy.xc"; xd: "dy.xd"; xe: "dy.xe"; xf: "dy.xf"; xg: "dy.xg"; xh: "dy.xh"; xi: "dy.xi"; xj: "dy.xj"; xk: "dy.xk"; xl: "dy.xl"; xm: "dy.xm"; xn: "dy.xn"; xo: "dy.xo"; xp: "dy.xp"; xq: "dy.xq"; xr: "dy.xr"; xs: "dy.xs"; xt: "dy.xt"; xu: "dy.xu"; xv: "dy.xv"; xw: "dy.xw"; xx: "dy.xx"; xy: "dy.xy"; xz: "dy.xz"; ya: "dy.ya"; yb: "dy.yb"; yc: "dy.yc"; yd: "dy.yd"; ye: "dy.ye"; yf: "dy.yf"; yg: "dy.yg"; yh: "dy.yh"; yi: "dy.yi"; yj: "dy.yj"; yk: "dy.yk"; yl: "dy.yl"; ym: "dy.ym"; yn: "dy.yn"; yo: "dy.yo"; yp: "dy.yp"; yq: "dy.yq"; yr: "dy.yr"; ys: "dy.ys"; yt: "dy.yt"; yu: "dy.yu"; yv: "dy.yv"; yw: "dy.yw"; yx: "dy.yx"; yy: "dy.yy"; yz: "dy.yz"; za: "dy.za"; zb: "dy.zb"; zc: "dy.zc"; zd: "dy.zd"; ze: "dy.ze"; zf: "dy.zf"; zg: "dy.zg"; zh: "dy.zh"; zi: "dy.zi"; zj: "dy.zj"; zk: "dy.zk"; zl: "dy.zl"; zm: "dy.zm"; zn: "dy.zn"; zo: "dy.zo"; zp: "dy.zp"; zq: "dy.zq"; zr: "dy.zr"; zs: "dy.zs"; zt: "dy.zt"; zu: "dy.zu"; zv: "dy.zv"; zw: "dy.zw"; zx: "dy.zx"; zy: "dy.zy"; zz: "dy.zz"; }; dz: { aa: "dz.aa"; ab: "dz.ab"; ac: "dz.ac"; ad: "dz.ad"; ae: "dz.ae"; af: "dz.af"; ag: "dz.ag"; ah: "dz.ah"; ai: "dz.ai"; aj: "dz.aj"; ak: "dz.ak"; al: "dz.al"; am: "dz.am"; an: "dz.an"; ao: "dz.ao"; ap: "dz.ap"; aq: "dz.aq"; ar: "dz.ar"; as: "dz.as"; at: "dz.at"; au: "dz.au"; av: "dz.av"; aw: "dz.aw"; ax: "dz.ax"; ay: "dz.ay"; az: "dz.az"; ba: "dz.ba"; bb: "dz.bb"; bc: "dz.bc"; bd: "dz.bd"; be: "dz.be"; bf: "dz.bf"; bg: "dz.bg"; bh: "dz.bh"; bi: "dz.bi"; bj: "dz.bj"; bk: "dz.bk"; bl: "dz.bl"; bm: "dz.bm"; bn: "dz.bn"; bo: "dz.bo"; bp: "dz.bp"; bq: "dz.bq"; br: "dz.br"; bs: "dz.bs"; bt: "dz.bt"; bu: "dz.bu"; bv: "dz.bv"; bw: "dz.bw"; bx: "dz.bx"; by: "dz.by"; bz: "dz.bz"; ca: "dz.ca"; cb: "dz.cb"; cc: "dz.cc"; cd: "dz.cd"; ce: "dz.ce"; cf: "dz.cf"; cg: "dz.cg"; ch: "dz.ch"; ci: "dz.ci"; cj: "dz.cj"; ck: "dz.ck"; cl: "dz.cl"; cm: "dz.cm"; cn: "dz.cn"; co: "dz.co"; cp: "dz.cp"; cq: "dz.cq"; cr: "dz.cr"; cs: "dz.cs"; ct: "dz.ct"; cu: "dz.cu"; cv: "dz.cv"; cw: "dz.cw"; cx: "dz.cx"; cy: "dz.cy"; cz: "dz.cz"; da: "dz.da"; db: "dz.db"; dc: "dz.dc"; dd: "dz.dd"; de: "dz.de"; df: "dz.df"; dg: "dz.dg"; dh: "dz.dh"; di: "dz.di"; dj: "dz.dj"; dk: "dz.dk"; dl: "dz.dl"; dm: "dz.dm"; dn: "dz.dn"; do: "dz.do"; dp: "dz.dp"; dq: "dz.dq"; dr: "dz.dr"; ds: "dz.ds"; dt: "dz.dt"; du: "dz.du"; dv: "dz.dv"; dw: "dz.dw"; dx: "dz.dx"; dy: "dz.dy"; dz: "dz.dz"; ea: "dz.ea"; eb: "dz.eb"; ec: "dz.ec"; ed: "dz.ed"; ee: "dz.ee"; ef: "dz.ef"; eg: "dz.eg"; eh: "dz.eh"; ei: "dz.ei"; ej: "dz.ej"; ek: "dz.ek"; el: "dz.el"; em: "dz.em"; en: "dz.en"; eo: "dz.eo"; ep: "dz.ep"; eq: "dz.eq"; er: "dz.er"; es: "dz.es"; et: "dz.et"; eu: "dz.eu"; ev: "dz.ev"; ew: "dz.ew"; ex: "dz.ex"; ey: "dz.ey"; ez: "dz.ez"; fa: "dz.fa"; fb: "dz.fb"; fc: "dz.fc"; fd: "dz.fd"; fe: "dz.fe"; ff: "dz.ff"; fg: "dz.fg"; fh: "dz.fh"; fi: "dz.fi"; fj: "dz.fj"; fk: "dz.fk"; fl: "dz.fl"; fm: "dz.fm"; fn: "dz.fn"; fo: "dz.fo"; fp: "dz.fp"; fq: "dz.fq"; fr: "dz.fr"; fs: "dz.fs"; ft: "dz.ft"; fu: "dz.fu"; fv: "dz.fv"; fw: "dz.fw"; fx: "dz.fx"; fy: "dz.fy"; fz: "dz.fz"; ga: "dz.ga"; gb: "dz.gb"; gc: "dz.gc"; gd: "dz.gd"; ge: "dz.ge"; gf: "dz.gf"; gg: "dz.gg"; gh: "dz.gh"; gi: "dz.gi"; gj: "dz.gj"; gk: "dz.gk"; gl: "dz.gl"; gm: "dz.gm"; gn: "dz.gn"; go: "dz.go"; gp: "dz.gp"; gq: "dz.gq"; gr: "dz.gr"; gs: "dz.gs"; gt: "dz.gt"; gu: "dz.gu"; gv: "dz.gv"; gw: "dz.gw"; gx: "dz.gx"; gy: "dz.gy"; gz: "dz.gz"; ha: "dz.ha"; hb: "dz.hb"; hc: "dz.hc"; hd: "dz.hd"; he: "dz.he"; hf: "dz.hf"; hg: "dz.hg"; hh: "dz.hh"; hi: "dz.hi"; hj: "dz.hj"; hk: "dz.hk"; hl: "dz.hl"; hm: "dz.hm"; hn: "dz.hn"; ho: "dz.ho"; hp: "dz.hp"; hq: "dz.hq"; hr: "dz.hr"; hs: "dz.hs"; ht: "dz.ht"; hu: "dz.hu"; hv: "dz.hv"; hw: "dz.hw"; hx: "dz.hx"; hy: "dz.hy"; hz: "dz.hz"; ia: "dz.ia"; ib: "dz.ib"; ic: "dz.ic"; id: "dz.id"; ie: "dz.ie"; if: "dz.if"; ig: "dz.ig"; ih: "dz.ih"; ii: "dz.ii"; ij: "dz.ij"; ik: "dz.ik"; il: "dz.il"; im: "dz.im"; in: "dz.in"; io: "dz.io"; ip: "dz.ip"; iq: "dz.iq"; ir: "dz.ir"; is: "dz.is"; it: "dz.it"; iu: "dz.iu"; iv: "dz.iv"; iw: "dz.iw"; ix: "dz.ix"; iy: "dz.iy"; iz: "dz.iz"; ja: "dz.ja"; jb: "dz.jb"; jc: "dz.jc"; jd: "dz.jd"; je: "dz.je"; jf: "dz.jf"; jg: "dz.jg"; jh: "dz.jh"; ji: "dz.ji"; jj: "dz.jj"; jk: "dz.jk"; jl: "dz.jl"; jm: "dz.jm"; jn: "dz.jn"; jo: "dz.jo"; jp: "dz.jp"; jq: "dz.jq"; jr: "dz.jr"; js: "dz.js"; jt: "dz.jt"; ju: "dz.ju"; jv: "dz.jv"; jw: "dz.jw"; jx: "dz.jx"; jy: "dz.jy"; jz: "dz.jz"; ka: "dz.ka"; kb: "dz.kb"; kc: "dz.kc"; kd: "dz.kd"; ke: "dz.ke"; kf: "dz.kf"; kg: "dz.kg"; kh: "dz.kh"; ki: "dz.ki"; kj: "dz.kj"; kk: "dz.kk"; kl: "dz.kl"; km: "dz.km"; kn: "dz.kn"; ko: "dz.ko"; kp: "dz.kp"; kq: "dz.kq"; kr: "dz.kr"; ks: "dz.ks"; kt: "dz.kt"; ku: "dz.ku"; kv: "dz.kv"; kw: "dz.kw"; kx: "dz.kx"; ky: "dz.ky"; kz: "dz.kz"; la: "dz.la"; lb: "dz.lb"; lc: "dz.lc"; ld: "dz.ld"; le: "dz.le"; lf: "dz.lf"; lg: "dz.lg"; lh: "dz.lh"; li: "dz.li"; lj: "dz.lj"; lk: "dz.lk"; ll: "dz.ll"; lm: "dz.lm"; ln: "dz.ln"; lo: "dz.lo"; lp: "dz.lp"; lq: "dz.lq"; lr: "dz.lr"; ls: "dz.ls"; lt: "dz.lt"; lu: "dz.lu"; lv: "dz.lv"; lw: "dz.lw"; lx: "dz.lx"; ly: "dz.ly"; lz: "dz.lz"; ma: "dz.ma"; mb: "dz.mb"; mc: "dz.mc"; md: "dz.md"; me: "dz.me"; mf: "dz.mf"; mg: "dz.mg"; mh: "dz.mh"; mi: "dz.mi"; mj: "dz.mj"; mk: "dz.mk"; ml: "dz.ml"; mm: "dz.mm"; mn: "dz.mn"; mo: "dz.mo"; mp: "dz.mp"; mq: "dz.mq"; mr: "dz.mr"; ms: "dz.ms"; mt: "dz.mt"; mu: "dz.mu"; mv: "dz.mv"; mw: "dz.mw"; mx: "dz.mx"; my: "dz.my"; mz: "dz.mz"; na: "dz.na"; nb: "dz.nb"; nc: "dz.nc"; nd: "dz.nd"; ne: "dz.ne"; nf: "dz.nf"; ng: "dz.ng"; nh: "dz.nh"; ni: "dz.ni"; nj: "dz.nj"; nk: "dz.nk"; nl: "dz.nl"; nm: "dz.nm"; nn: "dz.nn"; no: "dz.no"; np: "dz.np"; nq: "dz.nq"; nr: "dz.nr"; ns: "dz.ns"; nt: "dz.nt"; nu: "dz.nu"; nv: "dz.nv"; nw: "dz.nw"; nx: "dz.nx"; ny: "dz.ny"; nz: "dz.nz"; oa: "dz.oa"; ob: "dz.ob"; oc: "dz.oc"; od: "dz.od"; oe: "dz.oe"; of: "dz.of"; og: "dz.og"; oh: "dz.oh"; oi: "dz.oi"; oj: "dz.oj"; ok: "dz.ok"; ol: "dz.ol"; om: "dz.om"; on: "dz.on"; oo: "dz.oo"; op: "dz.op"; oq: "dz.oq"; or: "dz.or"; os: "dz.os"; ot: "dz.ot"; ou: "dz.ou"; ov: "dz.ov"; ow: "dz.ow"; ox: "dz.ox"; oy: "dz.oy"; oz: "dz.oz"; pa: "dz.pa"; pb: "dz.pb"; pc: "dz.pc"; pd: "dz.pd"; pe: "dz.pe"; pf: "dz.pf"; pg: "dz.pg"; ph: "dz.ph"; pi: "dz.pi"; pj: "dz.pj"; pk: "dz.pk"; pl: "dz.pl"; pm: "dz.pm"; pn: "dz.pn"; po: "dz.po"; pp: "dz.pp"; pq: "dz.pq"; pr: "dz.pr"; ps: "dz.ps"; pt: "dz.pt"; pu: "dz.pu"; pv: "dz.pv"; pw: "dz.pw"; px: "dz.px"; py: "dz.py"; pz: "dz.pz"; qa: "dz.qa"; qb: "dz.qb"; qc: "dz.qc"; qd: "dz.qd"; qe: "dz.qe"; qf: "dz.qf"; qg: "dz.qg"; qh: "dz.qh"; qi: "dz.qi"; qj: "dz.qj"; qk: "dz.qk"; ql: "dz.ql"; qm: "dz.qm"; qn: "dz.qn"; qo: "dz.qo"; qp: "dz.qp"; qq: "dz.qq"; qr: "dz.qr"; qs: "dz.qs"; qt: "dz.qt"; qu: "dz.qu"; qv: "dz.qv"; qw: "dz.qw"; qx: "dz.qx"; qy: "dz.qy"; qz: "dz.qz"; ra: "dz.ra"; rb: "dz.rb"; rc: "dz.rc"; rd: "dz.rd"; re: "dz.re"; rf: "dz.rf"; rg: "dz.rg"; rh: "dz.rh"; ri: "dz.ri"; rj: "dz.rj"; rk: "dz.rk"; rl: "dz.rl"; rm: "dz.rm"; rn: "dz.rn"; ro: "dz.ro"; rp: "dz.rp"; rq: "dz.rq"; rr: "dz.rr"; rs: "dz.rs"; rt: "dz.rt"; ru: "dz.ru"; rv: "dz.rv"; rw: "dz.rw"; rx: "dz.rx"; ry: "dz.ry"; rz: "dz.rz"; sa: "dz.sa"; sb: "dz.sb"; sc: "dz.sc"; sd: "dz.sd"; se: "dz.se"; sf: "dz.sf"; sg: "dz.sg"; sh: "dz.sh"; si: "dz.si"; sj: "dz.sj"; sk: "dz.sk"; sl: "dz.sl"; sm: "dz.sm"; sn: "dz.sn"; so: "dz.so"; sp: "dz.sp"; sq: "dz.sq"; sr: "dz.sr"; ss: "dz.ss"; st: "dz.st"; su: "dz.su"; sv: "dz.sv"; sw: "dz.sw"; sx: "dz.sx"; sy: "dz.sy"; sz: "dz.sz"; ta: "dz.ta"; tb: "dz.tb"; tc: "dz.tc"; td: "dz.td"; te: "dz.te"; tf: "dz.tf"; tg: "dz.tg"; th: "dz.th"; ti: "dz.ti"; tj: "dz.tj"; tk: "dz.tk"; tl: "dz.tl"; tm: "dz.tm"; tn: "dz.tn"; to: "dz.to"; tp: "dz.tp"; tq: "dz.tq"; tr: "dz.tr"; ts: "dz.ts"; tt: "dz.tt"; tu: "dz.tu"; tv: "dz.tv"; tw: "dz.tw"; tx: "dz.tx"; ty: "dz.ty"; tz: "dz.tz"; ua: "dz.ua"; ub: "dz.ub"; uc: "dz.uc"; ud: "dz.ud"; ue: "dz.ue"; uf: "dz.uf"; ug: "dz.ug"; uh: "dz.uh"; ui: "dz.ui"; uj: "dz.uj"; uk: "dz.uk"; ul: "dz.ul"; um: "dz.um"; un: "dz.un"; uo: "dz.uo"; up: "dz.up"; uq: "dz.uq"; ur: "dz.ur"; us: "dz.us"; ut: "dz.ut"; uu: "dz.uu"; uv: "dz.uv"; uw: "dz.uw"; ux: "dz.ux"; uy: "dz.uy"; uz: "dz.uz"; va: "dz.va"; vb: "dz.vb"; vc: "dz.vc"; vd: "dz.vd"; ve: "dz.ve"; vf: "dz.vf"; vg: "dz.vg"; vh: "dz.vh"; vi: "dz.vi"; vj: "dz.vj"; vk: "dz.vk"; vl: "dz.vl"; vm: "dz.vm"; vn: "dz.vn"; vo: "dz.vo"; vp: "dz.vp"; vq: "dz.vq"; vr: "dz.vr"; vs: "dz.vs"; vt: "dz.vt"; vu: "dz.vu"; vv: "dz.vv"; vw: "dz.vw"; vx: "dz.vx"; vy: "dz.vy"; vz: "dz.vz"; wa: "dz.wa"; wb: "dz.wb"; wc: "dz.wc"; wd: "dz.wd"; we: "dz.we"; wf: "dz.wf"; wg: "dz.wg"; wh: "dz.wh"; wi: "dz.wi"; wj: "dz.wj"; wk: "dz.wk"; wl: "dz.wl"; wm: "dz.wm"; wn: "dz.wn"; wo: "dz.wo"; wp: "dz.wp"; wq: "dz.wq"; wr: "dz.wr"; ws: "dz.ws"; wt: "dz.wt"; wu: "dz.wu"; wv: "dz.wv"; ww: "dz.ww"; wx: "dz.wx"; wy: "dz.wy"; wz: "dz.wz"; xa: "dz.xa"; xb: "dz.xb"; xc: "dz.xc"; xd: "dz.xd"; xe: "dz.xe"; xf: "dz.xf"; xg: "dz.xg"; xh: "dz.xh"; xi: "dz.xi"; xj: "dz.xj"; xk: "dz.xk"; xl: "dz.xl"; xm: "dz.xm"; xn: "dz.xn"; xo: "dz.xo"; xp: "dz.xp"; xq: "dz.xq"; xr: "dz.xr"; xs: "dz.xs"; xt: "dz.xt"; xu: "dz.xu"; xv: "dz.xv"; xw: "dz.xw"; xx: "dz.xx"; xy: "dz.xy"; xz: "dz.xz"; ya: "dz.ya"; yb: "dz.yb"; yc: "dz.yc"; yd: "dz.yd"; ye: "dz.ye"; yf: "dz.yf"; yg: "dz.yg"; yh: "dz.yh"; yi: "dz.yi"; yj: "dz.yj"; yk: "dz.yk"; yl: "dz.yl"; ym: "dz.ym"; yn: "dz.yn"; yo: "dz.yo"; yp: "dz.yp"; yq: "dz.yq"; yr: "dz.yr"; ys: "dz.ys"; yt: "dz.yt"; yu: "dz.yu"; yv: "dz.yv"; yw: "dz.yw"; yx: "dz.yx"; yy: "dz.yy"; yz: "dz.yz"; za: "dz.za"; zb: "dz.zb"; zc: "dz.zc"; zd: "dz.zd"; ze: "dz.ze"; zf: "dz.zf"; zg: "dz.zg"; zh: "dz.zh"; zi: "dz.zi"; zj: "dz.zj"; zk: "dz.zk"; zl: "dz.zl"; zm: "dz.zm"; zn: "dz.zn"; zo: "dz.zo"; zp: "dz.zp"; zq: "dz.zq"; zr: "dz.zr"; zs: "dz.zs"; zt: "dz.zt"; zu: "dz.zu"; zv: "dz.zv"; zw: "dz.zw"; zx: "dz.zx"; zy: "dz.zy"; zz: "dz.zz"; }; ea: { aa: "ea.aa"; ab: "ea.ab"; ac: "ea.ac"; ad: "ea.ad"; ae: "ea.ae"; af: "ea.af"; ag: "ea.ag"; ah: "ea.ah"; ai: "ea.ai"; aj: "ea.aj"; ak: "ea.ak"; al: "ea.al"; am: "ea.am"; an: "ea.an"; ao: "ea.ao"; ap: "ea.ap"; aq: "ea.aq"; ar: "ea.ar"; as: "ea.as"; at: "ea.at"; au: "ea.au"; av: "ea.av"; aw: "ea.aw"; ax: "ea.ax"; ay: "ea.ay"; az: "ea.az"; ba: "ea.ba"; bb: "ea.bb"; bc: "ea.bc"; bd: "ea.bd"; be: "ea.be"; bf: "ea.bf"; bg: "ea.bg"; bh: "ea.bh"; bi: "ea.bi"; bj: "ea.bj"; bk: "ea.bk"; bl: "ea.bl"; bm: "ea.bm"; bn: "ea.bn"; bo: "ea.bo"; bp: "ea.bp"; bq: "ea.bq"; br: "ea.br"; bs: "ea.bs"; bt: "ea.bt"; bu: "ea.bu"; bv: "ea.bv"; bw: "ea.bw"; bx: "ea.bx"; by: "ea.by"; bz: "ea.bz"; ca: "ea.ca"; cb: "ea.cb"; cc: "ea.cc"; cd: "ea.cd"; ce: "ea.ce"; cf: "ea.cf"; cg: "ea.cg"; ch: "ea.ch"; ci: "ea.ci"; cj: "ea.cj"; ck: "ea.ck"; cl: "ea.cl"; cm: "ea.cm"; cn: "ea.cn"; co: "ea.co"; cp: "ea.cp"; cq: "ea.cq"; cr: "ea.cr"; cs: "ea.cs"; ct: "ea.ct"; cu: "ea.cu"; cv: "ea.cv"; cw: "ea.cw"; cx: "ea.cx"; cy: "ea.cy"; cz: "ea.cz"; da: "ea.da"; db: "ea.db"; dc: "ea.dc"; dd: "ea.dd"; de: "ea.de"; df: "ea.df"; dg: "ea.dg"; dh: "ea.dh"; di: "ea.di"; dj: "ea.dj"; dk: "ea.dk"; dl: "ea.dl"; dm: "ea.dm"; dn: "ea.dn"; do: "ea.do"; dp: "ea.dp"; dq: "ea.dq"; dr: "ea.dr"; ds: "ea.ds"; dt: "ea.dt"; du: "ea.du"; dv: "ea.dv"; dw: "ea.dw"; dx: "ea.dx"; dy: "ea.dy"; dz: "ea.dz"; ea: "ea.ea"; eb: "ea.eb"; ec: "ea.ec"; ed: "ea.ed"; ee: "ea.ee"; ef: "ea.ef"; eg: "ea.eg"; eh: "ea.eh"; ei: "ea.ei"; ej: "ea.ej"; ek: "ea.ek"; el: "ea.el"; em: "ea.em"; en: "ea.en"; eo: "ea.eo"; ep: "ea.ep"; eq: "ea.eq"; er: "ea.er"; es: "ea.es"; et: "ea.et"; eu: "ea.eu"; ev: "ea.ev"; ew: "ea.ew"; ex: "ea.ex"; ey: "ea.ey"; ez: "ea.ez"; fa: "ea.fa"; fb: "ea.fb"; fc: "ea.fc"; fd: "ea.fd"; fe: "ea.fe"; ff: "ea.ff"; fg: "ea.fg"; fh: "ea.fh"; fi: "ea.fi"; fj: "ea.fj"; fk: "ea.fk"; fl: "ea.fl"; fm: "ea.fm"; fn: "ea.fn"; fo: "ea.fo"; fp: "ea.fp"; fq: "ea.fq"; fr: "ea.fr"; fs: "ea.fs"; ft: "ea.ft"; fu: "ea.fu"; fv: "ea.fv"; fw: "ea.fw"; fx: "ea.fx"; fy: "ea.fy"; fz: "ea.fz"; ga: "ea.ga"; gb: "ea.gb"; gc: "ea.gc"; gd: "ea.gd"; ge: "ea.ge"; gf: "ea.gf"; gg: "ea.gg"; gh: "ea.gh"; gi: "ea.gi"; gj: "ea.gj"; gk: "ea.gk"; gl: "ea.gl"; gm: "ea.gm"; gn: "ea.gn"; go: "ea.go"; gp: "ea.gp"; gq: "ea.gq"; gr: "ea.gr"; gs: "ea.gs"; gt: "ea.gt"; gu: "ea.gu"; gv: "ea.gv"; gw: "ea.gw"; gx: "ea.gx"; gy: "ea.gy"; gz: "ea.gz"; ha: "ea.ha"; hb: "ea.hb"; hc: "ea.hc"; hd: "ea.hd"; he: "ea.he"; hf: "ea.hf"; hg: "ea.hg"; hh: "ea.hh"; hi: "ea.hi"; hj: "ea.hj"; hk: "ea.hk"; hl: "ea.hl"; hm: "ea.hm"; hn: "ea.hn"; ho: "ea.ho"; hp: "ea.hp"; hq: "ea.hq"; hr: "ea.hr"; hs: "ea.hs"; ht: "ea.ht"; hu: "ea.hu"; hv: "ea.hv"; hw: "ea.hw"; hx: "ea.hx"; hy: "ea.hy"; hz: "ea.hz"; ia: "ea.ia"; ib: "ea.ib"; ic: "ea.ic"; id: "ea.id"; ie: "ea.ie"; if: "ea.if"; ig: "ea.ig"; ih: "ea.ih"; ii: "ea.ii"; ij: "ea.ij"; ik: "ea.ik"; il: "ea.il"; im: "ea.im"; in: "ea.in"; io: "ea.io"; ip: "ea.ip"; iq: "ea.iq"; ir: "ea.ir"; is: "ea.is"; it: "ea.it"; iu: "ea.iu"; iv: "ea.iv"; iw: "ea.iw"; ix: "ea.ix"; iy: "ea.iy"; iz: "ea.iz"; ja: "ea.ja"; jb: "ea.jb"; jc: "ea.jc"; jd: "ea.jd"; je: "ea.je"; jf: "ea.jf"; jg: "ea.jg"; jh: "ea.jh"; ji: "ea.ji"; jj: "ea.jj"; jk: "ea.jk"; jl: "ea.jl"; jm: "ea.jm"; jn: "ea.jn"; jo: "ea.jo"; jp: "ea.jp"; jq: "ea.jq"; jr: "ea.jr"; js: "ea.js"; jt: "ea.jt"; ju: "ea.ju"; jv: "ea.jv"; jw: "ea.jw"; jx: "ea.jx"; jy: "ea.jy"; jz: "ea.jz"; ka: "ea.ka"; kb: "ea.kb"; kc: "ea.kc"; kd: "ea.kd"; ke: "ea.ke"; kf: "ea.kf"; kg: "ea.kg"; kh: "ea.kh"; ki: "ea.ki"; kj: "ea.kj"; kk: "ea.kk"; kl: "ea.kl"; km: "ea.km"; kn: "ea.kn"; ko: "ea.ko"; kp: "ea.kp"; kq: "ea.kq"; kr: "ea.kr"; ks: "ea.ks"; kt: "ea.kt"; ku: "ea.ku"; kv: "ea.kv"; kw: "ea.kw"; kx: "ea.kx"; ky: "ea.ky"; kz: "ea.kz"; la: "ea.la"; lb: "ea.lb"; lc: "ea.lc"; ld: "ea.ld"; le: "ea.le"; lf: "ea.lf"; lg: "ea.lg"; lh: "ea.lh"; li: "ea.li"; lj: "ea.lj"; lk: "ea.lk"; ll: "ea.ll"; lm: "ea.lm"; ln: "ea.ln"; lo: "ea.lo"; lp: "ea.lp"; lq: "ea.lq"; lr: "ea.lr"; ls: "ea.ls"; lt: "ea.lt"; lu: "ea.lu"; lv: "ea.lv"; lw: "ea.lw"; lx: "ea.lx"; ly: "ea.ly"; lz: "ea.lz"; ma: "ea.ma"; mb: "ea.mb"; mc: "ea.mc"; md: "ea.md"; me: "ea.me"; mf: "ea.mf"; mg: "ea.mg"; mh: "ea.mh"; mi: "ea.mi"; mj: "ea.mj"; mk: "ea.mk"; ml: "ea.ml"; mm: "ea.mm"; mn: "ea.mn"; mo: "ea.mo"; mp: "ea.mp"; mq: "ea.mq"; mr: "ea.mr"; ms: "ea.ms"; mt: "ea.mt"; mu: "ea.mu"; mv: "ea.mv"; mw: "ea.mw"; mx: "ea.mx"; my: "ea.my"; mz: "ea.mz"; na: "ea.na"; nb: "ea.nb"; nc: "ea.nc"; nd: "ea.nd"; ne: "ea.ne"; nf: "ea.nf"; ng: "ea.ng"; nh: "ea.nh"; ni: "ea.ni"; nj: "ea.nj"; nk: "ea.nk"; nl: "ea.nl"; nm: "ea.nm"; nn: "ea.nn"; no: "ea.no"; np: "ea.np"; nq: "ea.nq"; nr: "ea.nr"; ns: "ea.ns"; nt: "ea.nt"; nu: "ea.nu"; nv: "ea.nv"; nw: "ea.nw"; nx: "ea.nx"; ny: "ea.ny"; nz: "ea.nz"; oa: "ea.oa"; ob: "ea.ob"; oc: "ea.oc"; od: "ea.od"; oe: "ea.oe"; of: "ea.of"; og: "ea.og"; oh: "ea.oh"; oi: "ea.oi"; oj: "ea.oj"; ok: "ea.ok"; ol: "ea.ol"; om: "ea.om"; on: "ea.on"; oo: "ea.oo"; op: "ea.op"; oq: "ea.oq"; or: "ea.or"; os: "ea.os"; ot: "ea.ot"; ou: "ea.ou"; ov: "ea.ov"; ow: "ea.ow"; ox: "ea.ox"; oy: "ea.oy"; oz: "ea.oz"; pa: "ea.pa"; pb: "ea.pb"; pc: "ea.pc"; pd: "ea.pd"; pe: "ea.pe"; pf: "ea.pf"; pg: "ea.pg"; ph: "ea.ph"; pi: "ea.pi"; pj: "ea.pj"; pk: "ea.pk"; pl: "ea.pl"; pm: "ea.pm"; pn: "ea.pn"; po: "ea.po"; pp: "ea.pp"; pq: "ea.pq"; pr: "ea.pr"; ps: "ea.ps"; pt: "ea.pt"; pu: "ea.pu"; pv: "ea.pv"; pw: "ea.pw"; px: "ea.px"; py: "ea.py"; pz: "ea.pz"; qa: "ea.qa"; qb: "ea.qb"; qc: "ea.qc"; qd: "ea.qd"; qe: "ea.qe"; qf: "ea.qf"; qg: "ea.qg"; qh: "ea.qh"; qi: "ea.qi"; qj: "ea.qj"; qk: "ea.qk"; ql: "ea.ql"; qm: "ea.qm"; qn: "ea.qn"; qo: "ea.qo"; qp: "ea.qp"; qq: "ea.qq"; qr: "ea.qr"; qs: "ea.qs"; qt: "ea.qt"; qu: "ea.qu"; qv: "ea.qv"; qw: "ea.qw"; qx: "ea.qx"; qy: "ea.qy"; qz: "ea.qz"; ra: "ea.ra"; rb: "ea.rb"; rc: "ea.rc"; rd: "ea.rd"; re: "ea.re"; rf: "ea.rf"; rg: "ea.rg"; rh: "ea.rh"; ri: "ea.ri"; rj: "ea.rj"; rk: "ea.rk"; rl: "ea.rl"; rm: "ea.rm"; rn: "ea.rn"; ro: "ea.ro"; rp: "ea.rp"; rq: "ea.rq"; rr: "ea.rr"; rs: "ea.rs"; rt: "ea.rt"; ru: "ea.ru"; rv: "ea.rv"; rw: "ea.rw"; rx: "ea.rx"; ry: "ea.ry"; rz: "ea.rz"; sa: "ea.sa"; sb: "ea.sb"; sc: "ea.sc"; sd: "ea.sd"; se: "ea.se"; sf: "ea.sf"; sg: "ea.sg"; sh: "ea.sh"; si: "ea.si"; sj: "ea.sj"; sk: "ea.sk"; sl: "ea.sl"; sm: "ea.sm"; sn: "ea.sn"; so: "ea.so"; sp: "ea.sp"; sq: "ea.sq"; sr: "ea.sr"; ss: "ea.ss"; st: "ea.st"; su: "ea.su"; sv: "ea.sv"; sw: "ea.sw"; sx: "ea.sx"; sy: "ea.sy"; sz: "ea.sz"; ta: "ea.ta"; tb: "ea.tb"; tc: "ea.tc"; td: "ea.td"; te: "ea.te"; tf: "ea.tf"; tg: "ea.tg"; th: "ea.th"; ti: "ea.ti"; tj: "ea.tj"; tk: "ea.tk"; tl: "ea.tl"; tm: "ea.tm"; tn: "ea.tn"; to: "ea.to"; tp: "ea.tp"; tq: "ea.tq"; tr: "ea.tr"; ts: "ea.ts"; tt: "ea.tt"; tu: "ea.tu"; tv: "ea.tv"; tw: "ea.tw"; tx: "ea.tx"; ty: "ea.ty"; tz: "ea.tz"; ua: "ea.ua"; ub: "ea.ub"; uc: "ea.uc"; ud: "ea.ud"; ue: "ea.ue"; uf: "ea.uf"; ug: "ea.ug"; uh: "ea.uh"; ui: "ea.ui"; uj: "ea.uj"; uk: "ea.uk"; ul: "ea.ul"; um: "ea.um"; un: "ea.un"; uo: "ea.uo"; up: "ea.up"; uq: "ea.uq"; ur: "ea.ur"; us: "ea.us"; ut: "ea.ut"; uu: "ea.uu"; uv: "ea.uv"; uw: "ea.uw"; ux: "ea.ux"; uy: "ea.uy"; uz: "ea.uz"; va: "ea.va"; vb: "ea.vb"; vc: "ea.vc"; vd: "ea.vd"; ve: "ea.ve"; vf: "ea.vf"; vg: "ea.vg"; vh: "ea.vh"; vi: "ea.vi"; vj: "ea.vj"; vk: "ea.vk"; vl: "ea.vl"; vm: "ea.vm"; vn: "ea.vn"; vo: "ea.vo"; vp: "ea.vp"; vq: "ea.vq"; vr: "ea.vr"; vs: "ea.vs"; vt: "ea.vt"; vu: "ea.vu"; vv: "ea.vv"; vw: "ea.vw"; vx: "ea.vx"; vy: "ea.vy"; vz: "ea.vz"; wa: "ea.wa"; wb: "ea.wb"; wc: "ea.wc"; wd: "ea.wd"; we: "ea.we"; wf: "ea.wf"; wg: "ea.wg"; wh: "ea.wh"; wi: "ea.wi"; wj: "ea.wj"; wk: "ea.wk"; wl: "ea.wl"; wm: "ea.wm"; wn: "ea.wn"; wo: "ea.wo"; wp: "ea.wp"; wq: "ea.wq"; wr: "ea.wr"; ws: "ea.ws"; wt: "ea.wt"; wu: "ea.wu"; wv: "ea.wv"; ww: "ea.ww"; wx: "ea.wx"; wy: "ea.wy"; wz: "ea.wz"; xa: "ea.xa"; xb: "ea.xb"; xc: "ea.xc"; xd: "ea.xd"; xe: "ea.xe"; xf: "ea.xf"; xg: "ea.xg"; xh: "ea.xh"; xi: "ea.xi"; xj: "ea.xj"; xk: "ea.xk"; xl: "ea.xl"; xm: "ea.xm"; xn: "ea.xn"; xo: "ea.xo"; xp: "ea.xp"; xq: "ea.xq"; xr: "ea.xr"; xs: "ea.xs"; xt: "ea.xt"; xu: "ea.xu"; xv: "ea.xv"; xw: "ea.xw"; xx: "ea.xx"; xy: "ea.xy"; xz: "ea.xz"; ya: "ea.ya"; yb: "ea.yb"; yc: "ea.yc"; yd: "ea.yd"; ye: "ea.ye"; yf: "ea.yf"; yg: "ea.yg"; yh: "ea.yh"; yi: "ea.yi"; yj: "ea.yj"; yk: "ea.yk"; yl: "ea.yl"; ym: "ea.ym"; yn: "ea.yn"; yo: "ea.yo"; yp: "ea.yp"; yq: "ea.yq"; yr: "ea.yr"; ys: "ea.ys"; yt: "ea.yt"; yu: "ea.yu"; yv: "ea.yv"; yw: "ea.yw"; yx: "ea.yx"; yy: "ea.yy"; yz: "ea.yz"; za: "ea.za"; zb: "ea.zb"; zc: "ea.zc"; zd: "ea.zd"; ze: "ea.ze"; zf: "ea.zf"; zg: "ea.zg"; zh: "ea.zh"; zi: "ea.zi"; zj: "ea.zj"; zk: "ea.zk"; zl: "ea.zl"; zm: "ea.zm"; zn: "ea.zn"; zo: "ea.zo"; zp: "ea.zp"; zq: "ea.zq"; zr: "ea.zr"; zs: "ea.zs"; zt: "ea.zt"; zu: "ea.zu"; zv: "ea.zv"; zw: "ea.zw"; zx: "ea.zx"; zy: "ea.zy"; zz: "ea.zz"; }; eb: { aa: "eb.aa"; ab: "eb.ab"; ac: "eb.ac"; ad: "eb.ad"; ae: "eb.ae"; af: "eb.af"; ag: "eb.ag"; ah: "eb.ah"; ai: "eb.ai"; aj: "eb.aj"; ak: "eb.ak"; al: "eb.al"; am: "eb.am"; an: "eb.an"; ao: "eb.ao"; ap: "eb.ap"; aq: "eb.aq"; ar: "eb.ar"; as: "eb.as"; at: "eb.at"; au: "eb.au"; av: "eb.av"; aw: "eb.aw"; ax: "eb.ax"; ay: "eb.ay"; az: "eb.az"; ba: "eb.ba"; bb: "eb.bb"; bc: "eb.bc"; bd: "eb.bd"; be: "eb.be"; bf: "eb.bf"; bg: "eb.bg"; bh: "eb.bh"; bi: "eb.bi"; bj: "eb.bj"; bk: "eb.bk"; bl: "eb.bl"; bm: "eb.bm"; bn: "eb.bn"; bo: "eb.bo"; bp: "eb.bp"; bq: "eb.bq"; br: "eb.br"; bs: "eb.bs"; bt: "eb.bt"; bu: "eb.bu"; bv: "eb.bv"; bw: "eb.bw"; bx: "eb.bx"; by: "eb.by"; bz: "eb.bz"; ca: "eb.ca"; cb: "eb.cb"; cc: "eb.cc"; cd: "eb.cd"; ce: "eb.ce"; cf: "eb.cf"; cg: "eb.cg"; ch: "eb.ch"; ci: "eb.ci"; cj: "eb.cj"; ck: "eb.ck"; cl: "eb.cl"; cm: "eb.cm"; cn: "eb.cn"; co: "eb.co"; cp: "eb.cp"; cq: "eb.cq"; cr: "eb.cr"; cs: "eb.cs"; ct: "eb.ct"; cu: "eb.cu"; cv: "eb.cv"; cw: "eb.cw"; cx: "eb.cx"; cy: "eb.cy"; cz: "eb.cz"; da: "eb.da"; db: "eb.db"; dc: "eb.dc"; dd: "eb.dd"; de: "eb.de"; df: "eb.df"; dg: "eb.dg"; dh: "eb.dh"; di: "eb.di"; dj: "eb.dj"; dk: "eb.dk"; dl: "eb.dl"; dm: "eb.dm"; dn: "eb.dn"; do: "eb.do"; dp: "eb.dp"; dq: "eb.dq"; dr: "eb.dr"; ds: "eb.ds"; dt: "eb.dt"; du: "eb.du"; dv: "eb.dv"; dw: "eb.dw"; dx: "eb.dx"; dy: "eb.dy"; dz: "eb.dz"; ea: "eb.ea"; eb: "eb.eb"; ec: "eb.ec"; ed: "eb.ed"; ee: "eb.ee"; ef: "eb.ef"; eg: "eb.eg"; eh: "eb.eh"; ei: "eb.ei"; ej: "eb.ej"; ek: "eb.ek"; el: "eb.el"; em: "eb.em"; en: "eb.en"; eo: "eb.eo"; ep: "eb.ep"; eq: "eb.eq"; er: "eb.er"; es: "eb.es"; et: "eb.et"; eu: "eb.eu"; ev: "eb.ev"; ew: "eb.ew"; ex: "eb.ex"; ey: "eb.ey"; ez: "eb.ez"; fa: "eb.fa"; fb: "eb.fb"; fc: "eb.fc"; fd: "eb.fd"; fe: "eb.fe"; ff: "eb.ff"; fg: "eb.fg"; fh: "eb.fh"; fi: "eb.fi"; fj: "eb.fj"; fk: "eb.fk"; fl: "eb.fl"; fm: "eb.fm"; fn: "eb.fn"; fo: "eb.fo"; fp: "eb.fp"; fq: "eb.fq"; fr: "eb.fr"; fs: "eb.fs"; ft: "eb.ft"; fu: "eb.fu"; fv: "eb.fv"; fw: "eb.fw"; fx: "eb.fx"; fy: "eb.fy"; fz: "eb.fz"; ga: "eb.ga"; gb: "eb.gb"; gc: "eb.gc"; gd: "eb.gd"; ge: "eb.ge"; gf: "eb.gf"; gg: "eb.gg"; gh: "eb.gh"; gi: "eb.gi"; gj: "eb.gj"; gk: "eb.gk"; gl: "eb.gl"; gm: "eb.gm"; gn: "eb.gn"; go: "eb.go"; gp: "eb.gp"; gq: "eb.gq"; gr: "eb.gr"; gs: "eb.gs"; gt: "eb.gt"; gu: "eb.gu"; gv: "eb.gv"; gw: "eb.gw"; gx: "eb.gx"; gy: "eb.gy"; gz: "eb.gz"; ha: "eb.ha"; hb: "eb.hb"; hc: "eb.hc"; hd: "eb.hd"; he: "eb.he"; hf: "eb.hf"; hg: "eb.hg"; hh: "eb.hh"; hi: "eb.hi"; hj: "eb.hj"; hk: "eb.hk"; hl: "eb.hl"; hm: "eb.hm"; hn: "eb.hn"; ho: "eb.ho"; hp: "eb.hp"; hq: "eb.hq"; hr: "eb.hr"; hs: "eb.hs"; ht: "eb.ht"; hu: "eb.hu"; hv: "eb.hv"; hw: "eb.hw"; hx: "eb.hx"; hy: "eb.hy"; hz: "eb.hz"; ia: "eb.ia"; ib: "eb.ib"; ic: "eb.ic"; id: "eb.id"; ie: "eb.ie"; if: "eb.if"; ig: "eb.ig"; ih: "eb.ih"; ii: "eb.ii"; ij: "eb.ij"; ik: "eb.ik"; il: "eb.il"; im: "eb.im"; in: "eb.in"; io: "eb.io"; ip: "eb.ip"; iq: "eb.iq"; ir: "eb.ir"; is: "eb.is"; it: "eb.it"; iu: "eb.iu"; iv: "eb.iv"; iw: "eb.iw"; ix: "eb.ix"; iy: "eb.iy"; iz: "eb.iz"; ja: "eb.ja"; jb: "eb.jb"; jc: "eb.jc"; jd: "eb.jd"; je: "eb.je"; jf: "eb.jf"; jg: "eb.jg"; jh: "eb.jh"; ji: "eb.ji"; jj: "eb.jj"; jk: "eb.jk"; jl: "eb.jl"; jm: "eb.jm"; jn: "eb.jn"; jo: "eb.jo"; jp: "eb.jp"; jq: "eb.jq"; jr: "eb.jr"; js: "eb.js"; jt: "eb.jt"; ju: "eb.ju"; jv: "eb.jv"; jw: "eb.jw"; jx: "eb.jx"; jy: "eb.jy"; jz: "eb.jz"; ka: "eb.ka"; kb: "eb.kb"; kc: "eb.kc"; kd: "eb.kd"; ke: "eb.ke"; kf: "eb.kf"; kg: "eb.kg"; kh: "eb.kh"; ki: "eb.ki"; kj: "eb.kj"; kk: "eb.kk"; kl: "eb.kl"; km: "eb.km"; kn: "eb.kn"; ko: "eb.ko"; kp: "eb.kp"; kq: "eb.kq"; kr: "eb.kr"; ks: "eb.ks"; kt: "eb.kt"; ku: "eb.ku"; kv: "eb.kv"; kw: "eb.kw"; kx: "eb.kx"; ky: "eb.ky"; kz: "eb.kz"; la: "eb.la"; lb: "eb.lb"; lc: "eb.lc"; ld: "eb.ld"; le: "eb.le"; lf: "eb.lf"; lg: "eb.lg"; lh: "eb.lh"; li: "eb.li"; lj: "eb.lj"; lk: "eb.lk"; ll: "eb.ll"; lm: "eb.lm"; ln: "eb.ln"; lo: "eb.lo"; lp: "eb.lp"; lq: "eb.lq"; lr: "eb.lr"; ls: "eb.ls"; lt: "eb.lt"; lu: "eb.lu"; lv: "eb.lv"; lw: "eb.lw"; lx: "eb.lx"; ly: "eb.ly"; lz: "eb.lz"; ma: "eb.ma"; mb: "eb.mb"; mc: "eb.mc"; md: "eb.md"; me: "eb.me"; mf: "eb.mf"; mg: "eb.mg"; mh: "eb.mh"; mi: "eb.mi"; mj: "eb.mj"; mk: "eb.mk"; ml: "eb.ml"; mm: "eb.mm"; mn: "eb.mn"; mo: "eb.mo"; mp: "eb.mp"; mq: "eb.mq"; mr: "eb.mr"; ms: "eb.ms"; mt: "eb.mt"; mu: "eb.mu"; mv: "eb.mv"; mw: "eb.mw"; mx: "eb.mx"; my: "eb.my"; mz: "eb.mz"; na: "eb.na"; nb: "eb.nb"; nc: "eb.nc"; nd: "eb.nd"; ne: "eb.ne"; nf: "eb.nf"; ng: "eb.ng"; nh: "eb.nh"; ni: "eb.ni"; nj: "eb.nj"; nk: "eb.nk"; nl: "eb.nl"; nm: "eb.nm"; nn: "eb.nn"; no: "eb.no"; np: "eb.np"; nq: "eb.nq"; nr: "eb.nr"; ns: "eb.ns"; nt: "eb.nt"; nu: "eb.nu"; nv: "eb.nv"; nw: "eb.nw"; nx: "eb.nx"; ny: "eb.ny"; nz: "eb.nz"; oa: "eb.oa"; ob: "eb.ob"; oc: "eb.oc"; od: "eb.od"; oe: "eb.oe"; of: "eb.of"; og: "eb.og"; oh: "eb.oh"; oi: "eb.oi"; oj: "eb.oj"; ok: "eb.ok"; ol: "eb.ol"; om: "eb.om"; on: "eb.on"; oo: "eb.oo"; op: "eb.op"; oq: "eb.oq"; or: "eb.or"; os: "eb.os"; ot: "eb.ot"; ou: "eb.ou"; ov: "eb.ov"; ow: "eb.ow"; ox: "eb.ox"; oy: "eb.oy"; oz: "eb.oz"; pa: "eb.pa"; pb: "eb.pb"; pc: "eb.pc"; pd: "eb.pd"; pe: "eb.pe"; pf: "eb.pf"; pg: "eb.pg"; ph: "eb.ph"; pi: "eb.pi"; pj: "eb.pj"; pk: "eb.pk"; pl: "eb.pl"; pm: "eb.pm"; pn: "eb.pn"; po: "eb.po"; pp: "eb.pp"; pq: "eb.pq"; pr: "eb.pr"; ps: "eb.ps"; pt: "eb.pt"; pu: "eb.pu"; pv: "eb.pv"; pw: "eb.pw"; px: "eb.px"; py: "eb.py"; pz: "eb.pz"; qa: "eb.qa"; qb: "eb.qb"; qc: "eb.qc"; qd: "eb.qd"; qe: "eb.qe"; qf: "eb.qf"; qg: "eb.qg"; qh: "eb.qh"; qi: "eb.qi"; qj: "eb.qj"; qk: "eb.qk"; ql: "eb.ql"; qm: "eb.qm"; qn: "eb.qn"; qo: "eb.qo"; qp: "eb.qp"; qq: "eb.qq"; qr: "eb.qr"; qs: "eb.qs"; qt: "eb.qt"; qu: "eb.qu"; qv: "eb.qv"; qw: "eb.qw"; qx: "eb.qx"; qy: "eb.qy"; qz: "eb.qz"; ra: "eb.ra"; rb: "eb.rb"; rc: "eb.rc"; rd: "eb.rd"; re: "eb.re"; rf: "eb.rf"; rg: "eb.rg"; rh: "eb.rh"; ri: "eb.ri"; rj: "eb.rj"; rk: "eb.rk"; rl: "eb.rl"; rm: "eb.rm"; rn: "eb.rn"; ro: "eb.ro"; rp: "eb.rp"; rq: "eb.rq"; rr: "eb.rr"; rs: "eb.rs"; rt: "eb.rt"; ru: "eb.ru"; rv: "eb.rv"; rw: "eb.rw"; rx: "eb.rx"; ry: "eb.ry"; rz: "eb.rz"; sa: "eb.sa"; sb: "eb.sb"; sc: "eb.sc"; sd: "eb.sd"; se: "eb.se"; sf: "eb.sf"; sg: "eb.sg"; sh: "eb.sh"; si: "eb.si"; sj: "eb.sj"; sk: "eb.sk"; sl: "eb.sl"; sm: "eb.sm"; sn: "eb.sn"; so: "eb.so"; sp: "eb.sp"; sq: "eb.sq"; sr: "eb.sr"; ss: "eb.ss"; st: "eb.st"; su: "eb.su"; sv: "eb.sv"; sw: "eb.sw"; sx: "eb.sx"; sy: "eb.sy"; sz: "eb.sz"; ta: "eb.ta"; tb: "eb.tb"; tc: "eb.tc"; td: "eb.td"; te: "eb.te"; tf: "eb.tf"; tg: "eb.tg"; th: "eb.th"; ti: "eb.ti"; tj: "eb.tj"; tk: "eb.tk"; tl: "eb.tl"; tm: "eb.tm"; tn: "eb.tn"; to: "eb.to"; tp: "eb.tp"; tq: "eb.tq"; tr: "eb.tr"; ts: "eb.ts"; tt: "eb.tt"; tu: "eb.tu"; tv: "eb.tv"; tw: "eb.tw"; tx: "eb.tx"; ty: "eb.ty"; tz: "eb.tz"; ua: "eb.ua"; ub: "eb.ub"; uc: "eb.uc"; ud: "eb.ud"; ue: "eb.ue"; uf: "eb.uf"; ug: "eb.ug"; uh: "eb.uh"; ui: "eb.ui"; uj: "eb.uj"; uk: "eb.uk"; ul: "eb.ul"; um: "eb.um"; un: "eb.un"; uo: "eb.uo"; up: "eb.up"; uq: "eb.uq"; ur: "eb.ur"; us: "eb.us"; ut: "eb.ut"; uu: "eb.uu"; uv: "eb.uv"; uw: "eb.uw"; ux: "eb.ux"; uy: "eb.uy"; uz: "eb.uz"; va: "eb.va"; vb: "eb.vb"; vc: "eb.vc"; vd: "eb.vd"; ve: "eb.ve"; vf: "eb.vf"; vg: "eb.vg"; vh: "eb.vh"; vi: "eb.vi"; vj: "eb.vj"; vk: "eb.vk"; vl: "eb.vl"; vm: "eb.vm"; vn: "eb.vn"; vo: "eb.vo"; vp: "eb.vp"; vq: "eb.vq"; vr: "eb.vr"; vs: "eb.vs"; vt: "eb.vt"; vu: "eb.vu"; vv: "eb.vv"; vw: "eb.vw"; vx: "eb.vx"; vy: "eb.vy"; vz: "eb.vz"; wa: "eb.wa"; wb: "eb.wb"; wc: "eb.wc"; wd: "eb.wd"; we: "eb.we"; wf: "eb.wf"; wg: "eb.wg"; wh: "eb.wh"; wi: "eb.wi"; wj: "eb.wj"; wk: "eb.wk"; wl: "eb.wl"; wm: "eb.wm"; wn: "eb.wn"; wo: "eb.wo"; wp: "eb.wp"; wq: "eb.wq"; wr: "eb.wr"; ws: "eb.ws"; wt: "eb.wt"; wu: "eb.wu"; wv: "eb.wv"; ww: "eb.ww"; wx: "eb.wx"; wy: "eb.wy"; wz: "eb.wz"; xa: "eb.xa"; xb: "eb.xb"; xc: "eb.xc"; xd: "eb.xd"; xe: "eb.xe"; xf: "eb.xf"; xg: "eb.xg"; xh: "eb.xh"; xi: "eb.xi"; xj: "eb.xj"; xk: "eb.xk"; xl: "eb.xl"; xm: "eb.xm"; xn: "eb.xn"; xo: "eb.xo"; xp: "eb.xp"; xq: "eb.xq"; xr: "eb.xr"; xs: "eb.xs"; xt: "eb.xt"; xu: "eb.xu"; xv: "eb.xv"; xw: "eb.xw"; xx: "eb.xx"; xy: "eb.xy"; xz: "eb.xz"; ya: "eb.ya"; yb: "eb.yb"; yc: "eb.yc"; yd: "eb.yd"; ye: "eb.ye"; yf: "eb.yf"; yg: "eb.yg"; yh: "eb.yh"; yi: "eb.yi"; yj: "eb.yj"; yk: "eb.yk"; yl: "eb.yl"; ym: "eb.ym"; yn: "eb.yn"; yo: "eb.yo"; yp: "eb.yp"; yq: "eb.yq"; yr: "eb.yr"; ys: "eb.ys"; yt: "eb.yt"; yu: "eb.yu"; yv: "eb.yv"; yw: "eb.yw"; yx: "eb.yx"; yy: "eb.yy"; yz: "eb.yz"; za: "eb.za"; zb: "eb.zb"; zc: "eb.zc"; zd: "eb.zd"; ze: "eb.ze"; zf: "eb.zf"; zg: "eb.zg"; zh: "eb.zh"; zi: "eb.zi"; zj: "eb.zj"; zk: "eb.zk"; zl: "eb.zl"; zm: "eb.zm"; zn: "eb.zn"; zo: "eb.zo"; zp: "eb.zp"; zq: "eb.zq"; zr: "eb.zr"; zs: "eb.zs"; zt: "eb.zt"; zu: "eb.zu"; zv: "eb.zv"; zw: "eb.zw"; zx: "eb.zx"; zy: "eb.zy"; zz: "eb.zz"; }; ec: { aa: "ec.aa"; ab: "ec.ab"; ac: "ec.ac"; ad: "ec.ad"; ae: "ec.ae"; af: "ec.af"; ag: "ec.ag"; ah: "ec.ah"; ai: "ec.ai"; aj: "ec.aj"; ak: "ec.ak"; al: "ec.al"; am: "ec.am"; an: "ec.an"; ao: "ec.ao"; ap: "ec.ap"; aq: "ec.aq"; ar: "ec.ar"; as: "ec.as"; at: "ec.at"; au: "ec.au"; av: "ec.av"; aw: "ec.aw"; ax: "ec.ax"; ay: "ec.ay"; az: "ec.az"; ba: "ec.ba"; bb: "ec.bb"; bc: "ec.bc"; bd: "ec.bd"; be: "ec.be"; bf: "ec.bf"; bg: "ec.bg"; bh: "ec.bh"; bi: "ec.bi"; bj: "ec.bj"; bk: "ec.bk"; bl: "ec.bl"; bm: "ec.bm"; bn: "ec.bn"; bo: "ec.bo"; bp: "ec.bp"; bq: "ec.bq"; br: "ec.br"; bs: "ec.bs"; bt: "ec.bt"; bu: "ec.bu"; bv: "ec.bv"; bw: "ec.bw"; bx: "ec.bx"; by: "ec.by"; bz: "ec.bz"; ca: "ec.ca"; cb: "ec.cb"; cc: "ec.cc"; cd: "ec.cd"; ce: "ec.ce"; cf: "ec.cf"; cg: "ec.cg"; ch: "ec.ch"; ci: "ec.ci"; cj: "ec.cj"; ck: "ec.ck"; cl: "ec.cl"; cm: "ec.cm"; cn: "ec.cn"; co: "ec.co"; cp: "ec.cp"; cq: "ec.cq"; cr: "ec.cr"; cs: "ec.cs"; ct: "ec.ct"; cu: "ec.cu"; cv: "ec.cv"; cw: "ec.cw"; cx: "ec.cx"; cy: "ec.cy"; cz: "ec.cz"; da: "ec.da"; db: "ec.db"; dc: "ec.dc"; dd: "ec.dd"; de: "ec.de"; df: "ec.df"; dg: "ec.dg"; dh: "ec.dh"; di: "ec.di"; dj: "ec.dj"; dk: "ec.dk"; dl: "ec.dl"; dm: "ec.dm"; dn: "ec.dn"; do: "ec.do"; dp: "ec.dp"; dq: "ec.dq"; dr: "ec.dr"; ds: "ec.ds"; dt: "ec.dt"; du: "ec.du"; dv: "ec.dv"; dw: "ec.dw"; dx: "ec.dx"; dy: "ec.dy"; dz: "ec.dz"; ea: "ec.ea"; eb: "ec.eb"; ec: "ec.ec"; ed: "ec.ed"; ee: "ec.ee"; ef: "ec.ef"; eg: "ec.eg"; eh: "ec.eh"; ei: "ec.ei"; ej: "ec.ej"; ek: "ec.ek"; el: "ec.el"; em: "ec.em"; en: "ec.en"; eo: "ec.eo"; ep: "ec.ep"; eq: "ec.eq"; er: "ec.er"; es: "ec.es"; et: "ec.et"; eu: "ec.eu"; ev: "ec.ev"; ew: "ec.ew"; ex: "ec.ex"; ey: "ec.ey"; ez: "ec.ez"; fa: "ec.fa"; fb: "ec.fb"; fc: "ec.fc"; fd: "ec.fd"; fe: "ec.fe"; ff: "ec.ff"; fg: "ec.fg"; fh: "ec.fh"; fi: "ec.fi"; fj: "ec.fj"; fk: "ec.fk"; fl: "ec.fl"; fm: "ec.fm"; fn: "ec.fn"; fo: "ec.fo"; fp: "ec.fp"; fq: "ec.fq"; fr: "ec.fr"; fs: "ec.fs"; ft: "ec.ft"; fu: "ec.fu"; fv: "ec.fv"; fw: "ec.fw"; fx: "ec.fx"; fy: "ec.fy"; fz: "ec.fz"; ga: "ec.ga"; gb: "ec.gb"; gc: "ec.gc"; gd: "ec.gd"; ge: "ec.ge"; gf: "ec.gf"; gg: "ec.gg"; gh: "ec.gh"; gi: "ec.gi"; gj: "ec.gj"; gk: "ec.gk"; gl: "ec.gl"; gm: "ec.gm"; gn: "ec.gn"; go: "ec.go"; gp: "ec.gp"; gq: "ec.gq"; gr: "ec.gr"; gs: "ec.gs"; gt: "ec.gt"; gu: "ec.gu"; gv: "ec.gv"; gw: "ec.gw"; gx: "ec.gx"; gy: "ec.gy"; gz: "ec.gz"; ha: "ec.ha"; hb: "ec.hb"; hc: "ec.hc"; hd: "ec.hd"; he: "ec.he"; hf: "ec.hf"; hg: "ec.hg"; hh: "ec.hh"; hi: "ec.hi"; hj: "ec.hj"; hk: "ec.hk"; hl: "ec.hl"; hm: "ec.hm"; hn: "ec.hn"; ho: "ec.ho"; hp: "ec.hp"; hq: "ec.hq"; hr: "ec.hr"; hs: "ec.hs"; ht: "ec.ht"; hu: "ec.hu"; hv: "ec.hv"; hw: "ec.hw"; hx: "ec.hx"; hy: "ec.hy"; hz: "ec.hz"; ia: "ec.ia"; ib: "ec.ib"; ic: "ec.ic"; id: "ec.id"; ie: "ec.ie"; if: "ec.if"; ig: "ec.ig"; ih: "ec.ih"; ii: "ec.ii"; ij: "ec.ij"; ik: "ec.ik"; il: "ec.il"; im: "ec.im"; in: "ec.in"; io: "ec.io"; ip: "ec.ip"; iq: "ec.iq"; ir: "ec.ir"; is: "ec.is"; it: "ec.it"; iu: "ec.iu"; iv: "ec.iv"; iw: "ec.iw"; ix: "ec.ix"; iy: "ec.iy"; iz: "ec.iz"; ja: "ec.ja"; jb: "ec.jb"; jc: "ec.jc"; jd: "ec.jd"; je: "ec.je"; jf: "ec.jf"; jg: "ec.jg"; jh: "ec.jh"; ji: "ec.ji"; jj: "ec.jj"; jk: "ec.jk"; jl: "ec.jl"; jm: "ec.jm"; jn: "ec.jn"; jo: "ec.jo"; jp: "ec.jp"; jq: "ec.jq"; jr: "ec.jr"; js: "ec.js"; jt: "ec.jt"; ju: "ec.ju"; jv: "ec.jv"; jw: "ec.jw"; jx: "ec.jx"; jy: "ec.jy"; jz: "ec.jz"; ka: "ec.ka"; kb: "ec.kb"; kc: "ec.kc"; kd: "ec.kd"; ke: "ec.ke"; kf: "ec.kf"; kg: "ec.kg"; kh: "ec.kh"; ki: "ec.ki"; kj: "ec.kj"; kk: "ec.kk"; kl: "ec.kl"; km: "ec.km"; kn: "ec.kn"; ko: "ec.ko"; kp: "ec.kp"; kq: "ec.kq"; kr: "ec.kr"; ks: "ec.ks"; kt: "ec.kt"; ku: "ec.ku"; kv: "ec.kv"; kw: "ec.kw"; kx: "ec.kx"; ky: "ec.ky"; kz: "ec.kz"; la: "ec.la"; lb: "ec.lb"; lc: "ec.lc"; ld: "ec.ld"; le: "ec.le"; lf: "ec.lf"; lg: "ec.lg"; lh: "ec.lh"; li: "ec.li"; lj: "ec.lj"; lk: "ec.lk"; ll: "ec.ll"; lm: "ec.lm"; ln: "ec.ln"; lo: "ec.lo"; lp: "ec.lp"; lq: "ec.lq"; lr: "ec.lr"; ls: "ec.ls"; lt: "ec.lt"; lu: "ec.lu"; lv: "ec.lv"; lw: "ec.lw"; lx: "ec.lx"; ly: "ec.ly"; lz: "ec.lz"; ma: "ec.ma"; mb: "ec.mb"; mc: "ec.mc"; md: "ec.md"; me: "ec.me"; mf: "ec.mf"; mg: "ec.mg"; mh: "ec.mh"; mi: "ec.mi"; mj: "ec.mj"; mk: "ec.mk"; ml: "ec.ml"; mm: "ec.mm"; mn: "ec.mn"; mo: "ec.mo"; mp: "ec.mp"; mq: "ec.mq"; mr: "ec.mr"; ms: "ec.ms"; mt: "ec.mt"; mu: "ec.mu"; mv: "ec.mv"; mw: "ec.mw"; mx: "ec.mx"; my: "ec.my"; mz: "ec.mz"; na: "ec.na"; nb: "ec.nb"; nc: "ec.nc"; nd: "ec.nd"; ne: "ec.ne"; nf: "ec.nf"; ng: "ec.ng"; nh: "ec.nh"; ni: "ec.ni"; nj: "ec.nj"; nk: "ec.nk"; nl: "ec.nl"; nm: "ec.nm"; nn: "ec.nn"; no: "ec.no"; np: "ec.np"; nq: "ec.nq"; nr: "ec.nr"; ns: "ec.ns"; nt: "ec.nt"; nu: "ec.nu"; nv: "ec.nv"; nw: "ec.nw"; nx: "ec.nx"; ny: "ec.ny"; nz: "ec.nz"; oa: "ec.oa"; ob: "ec.ob"; oc: "ec.oc"; od: "ec.od"; oe: "ec.oe"; of: "ec.of"; og: "ec.og"; oh: "ec.oh"; oi: "ec.oi"; oj: "ec.oj"; ok: "ec.ok"; ol: "ec.ol"; om: "ec.om"; on: "ec.on"; oo: "ec.oo"; op: "ec.op"; oq: "ec.oq"; or: "ec.or"; os: "ec.os"; ot: "ec.ot"; ou: "ec.ou"; ov: "ec.ov"; ow: "ec.ow"; ox: "ec.ox"; oy: "ec.oy"; oz: "ec.oz"; pa: "ec.pa"; pb: "ec.pb"; pc: "ec.pc"; pd: "ec.pd"; pe: "ec.pe"; pf: "ec.pf"; pg: "ec.pg"; ph: "ec.ph"; pi: "ec.pi"; pj: "ec.pj"; pk: "ec.pk"; pl: "ec.pl"; pm: "ec.pm"; pn: "ec.pn"; po: "ec.po"; pp: "ec.pp"; pq: "ec.pq"; pr: "ec.pr"; ps: "ec.ps"; pt: "ec.pt"; pu: "ec.pu"; pv: "ec.pv"; pw: "ec.pw"; px: "ec.px"; py: "ec.py"; pz: "ec.pz"; qa: "ec.qa"; qb: "ec.qb"; qc: "ec.qc"; qd: "ec.qd"; qe: "ec.qe"; qf: "ec.qf"; qg: "ec.qg"; qh: "ec.qh"; qi: "ec.qi"; qj: "ec.qj"; qk: "ec.qk"; ql: "ec.ql"; qm: "ec.qm"; qn: "ec.qn"; qo: "ec.qo"; qp: "ec.qp"; qq: "ec.qq"; qr: "ec.qr"; qs: "ec.qs"; qt: "ec.qt"; qu: "ec.qu"; qv: "ec.qv"; qw: "ec.qw"; qx: "ec.qx"; qy: "ec.qy"; qz: "ec.qz"; ra: "ec.ra"; rb: "ec.rb"; rc: "ec.rc"; rd: "ec.rd"; re: "ec.re"; rf: "ec.rf"; rg: "ec.rg"; rh: "ec.rh"; ri: "ec.ri"; rj: "ec.rj"; rk: "ec.rk"; rl: "ec.rl"; rm: "ec.rm"; rn: "ec.rn"; ro: "ec.ro"; rp: "ec.rp"; rq: "ec.rq"; rr: "ec.rr"; rs: "ec.rs"; rt: "ec.rt"; ru: "ec.ru"; rv: "ec.rv"; rw: "ec.rw"; rx: "ec.rx"; ry: "ec.ry"; rz: "ec.rz"; sa: "ec.sa"; sb: "ec.sb"; sc: "ec.sc"; sd: "ec.sd"; se: "ec.se"; sf: "ec.sf"; sg: "ec.sg"; sh: "ec.sh"; si: "ec.si"; sj: "ec.sj"; sk: "ec.sk"; sl: "ec.sl"; sm: "ec.sm"; sn: "ec.sn"; so: "ec.so"; sp: "ec.sp"; sq: "ec.sq"; sr: "ec.sr"; ss: "ec.ss"; st: "ec.st"; su: "ec.su"; sv: "ec.sv"; sw: "ec.sw"; sx: "ec.sx"; sy: "ec.sy"; sz: "ec.sz"; ta: "ec.ta"; tb: "ec.tb"; tc: "ec.tc"; td: "ec.td"; te: "ec.te"; tf: "ec.tf"; tg: "ec.tg"; th: "ec.th"; ti: "ec.ti"; tj: "ec.tj"; tk: "ec.tk"; tl: "ec.tl"; tm: "ec.tm"; tn: "ec.tn"; to: "ec.to"; tp: "ec.tp"; tq: "ec.tq"; tr: "ec.tr"; ts: "ec.ts"; tt: "ec.tt"; tu: "ec.tu"; tv: "ec.tv"; tw: "ec.tw"; tx: "ec.tx"; ty: "ec.ty"; tz: "ec.tz"; ua: "ec.ua"; ub: "ec.ub"; uc: "ec.uc"; ud: "ec.ud"; ue: "ec.ue"; uf: "ec.uf"; ug: "ec.ug"; uh: "ec.uh"; ui: "ec.ui"; uj: "ec.uj"; uk: "ec.uk"; ul: "ec.ul"; um: "ec.um"; un: "ec.un"; uo: "ec.uo"; up: "ec.up"; uq: "ec.uq"; ur: "ec.ur"; us: "ec.us"; ut: "ec.ut"; uu: "ec.uu"; uv: "ec.uv"; uw: "ec.uw"; ux: "ec.ux"; uy: "ec.uy"; uz: "ec.uz"; va: "ec.va"; vb: "ec.vb"; vc: "ec.vc"; vd: "ec.vd"; ve: "ec.ve"; vf: "ec.vf"; vg: "ec.vg"; vh: "ec.vh"; vi: "ec.vi"; vj: "ec.vj"; vk: "ec.vk"; vl: "ec.vl"; vm: "ec.vm"; vn: "ec.vn"; vo: "ec.vo"; vp: "ec.vp"; vq: "ec.vq"; vr: "ec.vr"; vs: "ec.vs"; vt: "ec.vt"; vu: "ec.vu"; vv: "ec.vv"; vw: "ec.vw"; vx: "ec.vx"; vy: "ec.vy"; vz: "ec.vz"; wa: "ec.wa"; wb: "ec.wb"; wc: "ec.wc"; wd: "ec.wd"; we: "ec.we"; wf: "ec.wf"; wg: "ec.wg"; wh: "ec.wh"; wi: "ec.wi"; wj: "ec.wj"; wk: "ec.wk"; wl: "ec.wl"; wm: "ec.wm"; wn: "ec.wn"; wo: "ec.wo"; wp: "ec.wp"; wq: "ec.wq"; wr: "ec.wr"; ws: "ec.ws"; wt: "ec.wt"; wu: "ec.wu"; wv: "ec.wv"; ww: "ec.ww"; wx: "ec.wx"; wy: "ec.wy"; wz: "ec.wz"; xa: "ec.xa"; xb: "ec.xb"; xc: "ec.xc"; xd: "ec.xd"; xe: "ec.xe"; xf: "ec.xf"; xg: "ec.xg"; xh: "ec.xh"; xi: "ec.xi"; xj: "ec.xj"; xk: "ec.xk"; xl: "ec.xl"; xm: "ec.xm"; xn: "ec.xn"; xo: "ec.xo"; xp: "ec.xp"; xq: "ec.xq"; xr: "ec.xr"; xs: "ec.xs"; xt: "ec.xt"; xu: "ec.xu"; xv: "ec.xv"; xw: "ec.xw"; xx: "ec.xx"; xy: "ec.xy"; xz: "ec.xz"; ya: "ec.ya"; yb: "ec.yb"; yc: "ec.yc"; yd: "ec.yd"; ye: "ec.ye"; yf: "ec.yf"; yg: "ec.yg"; yh: "ec.yh"; yi: "ec.yi"; yj: "ec.yj"; yk: "ec.yk"; yl: "ec.yl"; ym: "ec.ym"; yn: "ec.yn"; yo: "ec.yo"; yp: "ec.yp"; yq: "ec.yq"; yr: "ec.yr"; ys: "ec.ys"; yt: "ec.yt"; yu: "ec.yu"; yv: "ec.yv"; yw: "ec.yw"; yx: "ec.yx"; yy: "ec.yy"; yz: "ec.yz"; za: "ec.za"; zb: "ec.zb"; zc: "ec.zc"; zd: "ec.zd"; ze: "ec.ze"; zf: "ec.zf"; zg: "ec.zg"; zh: "ec.zh"; zi: "ec.zi"; zj: "ec.zj"; zk: "ec.zk"; zl: "ec.zl"; zm: "ec.zm"; zn: "ec.zn"; zo: "ec.zo"; zp: "ec.zp"; zq: "ec.zq"; zr: "ec.zr"; zs: "ec.zs"; zt: "ec.zt"; zu: "ec.zu"; zv: "ec.zv"; zw: "ec.zw"; zx: "ec.zx"; zy: "ec.zy"; zz: "ec.zz"; }; ed: { aa: "ed.aa"; ab: "ed.ab"; ac: "ed.ac"; ad: "ed.ad"; ae: "ed.ae"; af: "ed.af"; ag: "ed.ag"; ah: "ed.ah"; ai: "ed.ai"; aj: "ed.aj"; ak: "ed.ak"; al: "ed.al"; am: "ed.am"; an: "ed.an"; ao: "ed.ao"; ap: "ed.ap"; aq: "ed.aq"; ar: "ed.ar"; as: "ed.as"; at: "ed.at"; au: "ed.au"; av: "ed.av"; aw: "ed.aw"; ax: "ed.ax"; ay: "ed.ay"; az: "ed.az"; ba: "ed.ba"; bb: "ed.bb"; bc: "ed.bc"; bd: "ed.bd"; be: "ed.be"; bf: "ed.bf"; bg: "ed.bg"; bh: "ed.bh"; bi: "ed.bi"; bj: "ed.bj"; bk: "ed.bk"; bl: "ed.bl"; bm: "ed.bm"; bn: "ed.bn"; bo: "ed.bo"; bp: "ed.bp"; bq: "ed.bq"; br: "ed.br"; bs: "ed.bs"; bt: "ed.bt"; bu: "ed.bu"; bv: "ed.bv"; bw: "ed.bw"; bx: "ed.bx"; by: "ed.by"; bz: "ed.bz"; ca: "ed.ca"; cb: "ed.cb"; cc: "ed.cc"; cd: "ed.cd"; ce: "ed.ce"; cf: "ed.cf"; cg: "ed.cg"; ch: "ed.ch"; ci: "ed.ci"; cj: "ed.cj"; ck: "ed.ck"; cl: "ed.cl"; cm: "ed.cm"; cn: "ed.cn"; co: "ed.co"; cp: "ed.cp"; cq: "ed.cq"; cr: "ed.cr"; cs: "ed.cs"; ct: "ed.ct"; cu: "ed.cu"; cv: "ed.cv"; cw: "ed.cw"; cx: "ed.cx"; cy: "ed.cy"; cz: "ed.cz"; da: "ed.da"; db: "ed.db"; dc: "ed.dc"; dd: "ed.dd"; de: "ed.de"; df: "ed.df"; dg: "ed.dg"; dh: "ed.dh"; di: "ed.di"; dj: "ed.dj"; dk: "ed.dk"; dl: "ed.dl"; dm: "ed.dm"; dn: "ed.dn"; do: "ed.do"; dp: "ed.dp"; dq: "ed.dq"; dr: "ed.dr"; ds: "ed.ds"; dt: "ed.dt"; du: "ed.du"; dv: "ed.dv"; dw: "ed.dw"; dx: "ed.dx"; dy: "ed.dy"; dz: "ed.dz"; ea: "ed.ea"; eb: "ed.eb"; ec: "ed.ec"; ed: "ed.ed"; ee: "ed.ee"; ef: "ed.ef"; eg: "ed.eg"; eh: "ed.eh"; ei: "ed.ei"; ej: "ed.ej"; ek: "ed.ek"; el: "ed.el"; em: "ed.em"; en: "ed.en"; eo: "ed.eo"; ep: "ed.ep"; eq: "ed.eq"; er: "ed.er"; es: "ed.es"; et: "ed.et"; eu: "ed.eu"; ev: "ed.ev"; ew: "ed.ew"; ex: "ed.ex"; ey: "ed.ey"; ez: "ed.ez"; fa: "ed.fa"; fb: "ed.fb"; fc: "ed.fc"; fd: "ed.fd"; fe: "ed.fe"; ff: "ed.ff"; fg: "ed.fg"; fh: "ed.fh"; fi: "ed.fi"; fj: "ed.fj"; fk: "ed.fk"; fl: "ed.fl"; fm: "ed.fm"; fn: "ed.fn"; fo: "ed.fo"; fp: "ed.fp"; fq: "ed.fq"; fr: "ed.fr"; fs: "ed.fs"; ft: "ed.ft"; fu: "ed.fu"; fv: "ed.fv"; fw: "ed.fw"; fx: "ed.fx"; fy: "ed.fy"; fz: "ed.fz"; ga: "ed.ga"; gb: "ed.gb"; gc: "ed.gc"; gd: "ed.gd"; ge: "ed.ge"; gf: "ed.gf"; gg: "ed.gg"; gh: "ed.gh"; gi: "ed.gi"; gj: "ed.gj"; gk: "ed.gk"; gl: "ed.gl"; gm: "ed.gm"; gn: "ed.gn"; go: "ed.go"; gp: "ed.gp"; gq: "ed.gq"; gr: "ed.gr"; gs: "ed.gs"; gt: "ed.gt"; gu: "ed.gu"; gv: "ed.gv"; gw: "ed.gw"; gx: "ed.gx"; gy: "ed.gy"; gz: "ed.gz"; ha: "ed.ha"; hb: "ed.hb"; hc: "ed.hc"; hd: "ed.hd"; he: "ed.he"; hf: "ed.hf"; hg: "ed.hg"; hh: "ed.hh"; hi: "ed.hi"; hj: "ed.hj"; hk: "ed.hk"; hl: "ed.hl"; hm: "ed.hm"; hn: "ed.hn"; ho: "ed.ho"; hp: "ed.hp"; hq: "ed.hq"; hr: "ed.hr"; hs: "ed.hs"; ht: "ed.ht"; hu: "ed.hu"; hv: "ed.hv"; hw: "ed.hw"; hx: "ed.hx"; hy: "ed.hy"; hz: "ed.hz"; ia: "ed.ia"; ib: "ed.ib"; ic: "ed.ic"; id: "ed.id"; ie: "ed.ie"; if: "ed.if"; ig: "ed.ig"; ih: "ed.ih"; ii: "ed.ii"; ij: "ed.ij"; ik: "ed.ik"; il: "ed.il"; im: "ed.im"; in: "ed.in"; io: "ed.io"; ip: "ed.ip"; iq: "ed.iq"; ir: "ed.ir"; is: "ed.is"; it: "ed.it"; iu: "ed.iu"; iv: "ed.iv"; iw: "ed.iw"; ix: "ed.ix"; iy: "ed.iy"; iz: "ed.iz"; ja: "ed.ja"; jb: "ed.jb"; jc: "ed.jc"; jd: "ed.jd"; je: "ed.je"; jf: "ed.jf"; jg: "ed.jg"; jh: "ed.jh"; ji: "ed.ji"; jj: "ed.jj"; jk: "ed.jk"; jl: "ed.jl"; jm: "ed.jm"; jn: "ed.jn"; jo: "ed.jo"; jp: "ed.jp"; jq: "ed.jq"; jr: "ed.jr"; js: "ed.js"; jt: "ed.jt"; ju: "ed.ju"; jv: "ed.jv"; jw: "ed.jw"; jx: "ed.jx"; jy: "ed.jy"; jz: "ed.jz"; ka: "ed.ka"; kb: "ed.kb"; kc: "ed.kc"; kd: "ed.kd"; ke: "ed.ke"; kf: "ed.kf"; kg: "ed.kg"; kh: "ed.kh"; ki: "ed.ki"; kj: "ed.kj"; kk: "ed.kk"; kl: "ed.kl"; km: "ed.km"; kn: "ed.kn"; ko: "ed.ko"; kp: "ed.kp"; kq: "ed.kq"; kr: "ed.kr"; ks: "ed.ks"; kt: "ed.kt"; ku: "ed.ku"; kv: "ed.kv"; kw: "ed.kw"; kx: "ed.kx"; ky: "ed.ky"; kz: "ed.kz"; la: "ed.la"; lb: "ed.lb"; lc: "ed.lc"; ld: "ed.ld"; le: "ed.le"; lf: "ed.lf"; lg: "ed.lg"; lh: "ed.lh"; li: "ed.li"; lj: "ed.lj"; lk: "ed.lk"; ll: "ed.ll"; lm: "ed.lm"; ln: "ed.ln"; lo: "ed.lo"; lp: "ed.lp"; lq: "ed.lq"; lr: "ed.lr"; ls: "ed.ls"; lt: "ed.lt"; lu: "ed.lu"; lv: "ed.lv"; lw: "ed.lw"; lx: "ed.lx"; ly: "ed.ly"; lz: "ed.lz"; ma: "ed.ma"; mb: "ed.mb"; mc: "ed.mc"; md: "ed.md"; me: "ed.me"; mf: "ed.mf"; mg: "ed.mg"; mh: "ed.mh"; mi: "ed.mi"; mj: "ed.mj"; mk: "ed.mk"; ml: "ed.ml"; mm: "ed.mm"; mn: "ed.mn"; mo: "ed.mo"; mp: "ed.mp"; mq: "ed.mq"; mr: "ed.mr"; ms: "ed.ms"; mt: "ed.mt"; mu: "ed.mu"; mv: "ed.mv"; mw: "ed.mw"; mx: "ed.mx"; my: "ed.my"; mz: "ed.mz"; na: "ed.na"; nb: "ed.nb"; nc: "ed.nc"; nd: "ed.nd"; ne: "ed.ne"; nf: "ed.nf"; ng: "ed.ng"; nh: "ed.nh"; ni: "ed.ni"; nj: "ed.nj"; nk: "ed.nk"; nl: "ed.nl"; nm: "ed.nm"; nn: "ed.nn"; no: "ed.no"; np: "ed.np"; nq: "ed.nq"; nr: "ed.nr"; ns: "ed.ns"; nt: "ed.nt"; nu: "ed.nu"; nv: "ed.nv"; nw: "ed.nw"; nx: "ed.nx"; ny: "ed.ny"; nz: "ed.nz"; oa: "ed.oa"; ob: "ed.ob"; oc: "ed.oc"; od: "ed.od"; oe: "ed.oe"; of: "ed.of"; og: "ed.og"; oh: "ed.oh"; oi: "ed.oi"; oj: "ed.oj"; ok: "ed.ok"; ol: "ed.ol"; om: "ed.om"; on: "ed.on"; oo: "ed.oo"; op: "ed.op"; oq: "ed.oq"; or: "ed.or"; os: "ed.os"; ot: "ed.ot"; ou: "ed.ou"; ov: "ed.ov"; ow: "ed.ow"; ox: "ed.ox"; oy: "ed.oy"; oz: "ed.oz"; pa: "ed.pa"; pb: "ed.pb"; pc: "ed.pc"; pd: "ed.pd"; pe: "ed.pe"; pf: "ed.pf"; pg: "ed.pg"; ph: "ed.ph"; pi: "ed.pi"; pj: "ed.pj"; pk: "ed.pk"; pl: "ed.pl"; pm: "ed.pm"; pn: "ed.pn"; po: "ed.po"; pp: "ed.pp"; pq: "ed.pq"; pr: "ed.pr"; ps: "ed.ps"; pt: "ed.pt"; pu: "ed.pu"; pv: "ed.pv"; pw: "ed.pw"; px: "ed.px"; py: "ed.py"; pz: "ed.pz"; qa: "ed.qa"; qb: "ed.qb"; qc: "ed.qc"; qd: "ed.qd"; qe: "ed.qe"; qf: "ed.qf"; qg: "ed.qg"; qh: "ed.qh"; qi: "ed.qi"; qj: "ed.qj"; qk: "ed.qk"; ql: "ed.ql"; qm: "ed.qm"; qn: "ed.qn"; qo: "ed.qo"; qp: "ed.qp"; qq: "ed.qq"; qr: "ed.qr"; qs: "ed.qs"; qt: "ed.qt"; qu: "ed.qu"; qv: "ed.qv"; qw: "ed.qw"; qx: "ed.qx"; qy: "ed.qy"; qz: "ed.qz"; ra: "ed.ra"; rb: "ed.rb"; rc: "ed.rc"; rd: "ed.rd"; re: "ed.re"; rf: "ed.rf"; rg: "ed.rg"; rh: "ed.rh"; ri: "ed.ri"; rj: "ed.rj"; rk: "ed.rk"; rl: "ed.rl"; rm: "ed.rm"; rn: "ed.rn"; ro: "ed.ro"; rp: "ed.rp"; rq: "ed.rq"; rr: "ed.rr"; rs: "ed.rs"; rt: "ed.rt"; ru: "ed.ru"; rv: "ed.rv"; rw: "ed.rw"; rx: "ed.rx"; ry: "ed.ry"; rz: "ed.rz"; sa: "ed.sa"; sb: "ed.sb"; sc: "ed.sc"; sd: "ed.sd"; se: "ed.se"; sf: "ed.sf"; sg: "ed.sg"; sh: "ed.sh"; si: "ed.si"; sj: "ed.sj"; sk: "ed.sk"; sl: "ed.sl"; sm: "ed.sm"; sn: "ed.sn"; so: "ed.so"; sp: "ed.sp"; sq: "ed.sq"; sr: "ed.sr"; ss: "ed.ss"; st: "ed.st"; su: "ed.su"; sv: "ed.sv"; sw: "ed.sw"; sx: "ed.sx"; sy: "ed.sy"; sz: "ed.sz"; ta: "ed.ta"; tb: "ed.tb"; tc: "ed.tc"; td: "ed.td"; te: "ed.te"; tf: "ed.tf"; tg: "ed.tg"; th: "ed.th"; ti: "ed.ti"; tj: "ed.tj"; tk: "ed.tk"; tl: "ed.tl"; tm: "ed.tm"; tn: "ed.tn"; to: "ed.to"; tp: "ed.tp"; tq: "ed.tq"; tr: "ed.tr"; ts: "ed.ts"; tt: "ed.tt"; tu: "ed.tu"; tv: "ed.tv"; tw: "ed.tw"; tx: "ed.tx"; ty: "ed.ty"; tz: "ed.tz"; ua: "ed.ua"; ub: "ed.ub"; uc: "ed.uc"; ud: "ed.ud"; ue: "ed.ue"; uf: "ed.uf"; ug: "ed.ug"; uh: "ed.uh"; ui: "ed.ui"; uj: "ed.uj"; uk: "ed.uk"; ul: "ed.ul"; um: "ed.um"; un: "ed.un"; uo: "ed.uo"; up: "ed.up"; uq: "ed.uq"; ur: "ed.ur"; us: "ed.us"; ut: "ed.ut"; uu: "ed.uu"; uv: "ed.uv"; uw: "ed.uw"; ux: "ed.ux"; uy: "ed.uy"; uz: "ed.uz"; va: "ed.va"; vb: "ed.vb"; vc: "ed.vc"; vd: "ed.vd"; ve: "ed.ve"; vf: "ed.vf"; vg: "ed.vg"; vh: "ed.vh"; vi: "ed.vi"; vj: "ed.vj"; vk: "ed.vk"; vl: "ed.vl"; vm: "ed.vm"; vn: "ed.vn"; vo: "ed.vo"; vp: "ed.vp"; vq: "ed.vq"; vr: "ed.vr"; vs: "ed.vs"; vt: "ed.vt"; vu: "ed.vu"; vv: "ed.vv"; vw: "ed.vw"; vx: "ed.vx"; vy: "ed.vy"; vz: "ed.vz"; wa: "ed.wa"; wb: "ed.wb"; wc: "ed.wc"; wd: "ed.wd"; we: "ed.we"; wf: "ed.wf"; wg: "ed.wg"; wh: "ed.wh"; wi: "ed.wi"; wj: "ed.wj"; wk: "ed.wk"; wl: "ed.wl"; wm: "ed.wm"; wn: "ed.wn"; wo: "ed.wo"; wp: "ed.wp"; wq: "ed.wq"; wr: "ed.wr"; ws: "ed.ws"; wt: "ed.wt"; wu: "ed.wu"; wv: "ed.wv"; ww: "ed.ww"; wx: "ed.wx"; wy: "ed.wy"; wz: "ed.wz"; xa: "ed.xa"; xb: "ed.xb"; xc: "ed.xc"; xd: "ed.xd"; xe: "ed.xe"; xf: "ed.xf"; xg: "ed.xg"; xh: "ed.xh"; xi: "ed.xi"; xj: "ed.xj"; xk: "ed.xk"; xl: "ed.xl"; xm: "ed.xm"; xn: "ed.xn"; xo: "ed.xo"; xp: "ed.xp"; xq: "ed.xq"; xr: "ed.xr"; xs: "ed.xs"; xt: "ed.xt"; xu: "ed.xu"; xv: "ed.xv"; xw: "ed.xw"; xx: "ed.xx"; xy: "ed.xy"; xz: "ed.xz"; ya: "ed.ya"; yb: "ed.yb"; yc: "ed.yc"; yd: "ed.yd"; ye: "ed.ye"; yf: "ed.yf"; yg: "ed.yg"; yh: "ed.yh"; yi: "ed.yi"; yj: "ed.yj"; yk: "ed.yk"; yl: "ed.yl"; ym: "ed.ym"; yn: "ed.yn"; yo: "ed.yo"; yp: "ed.yp"; yq: "ed.yq"; yr: "ed.yr"; ys: "ed.ys"; yt: "ed.yt"; yu: "ed.yu"; yv: "ed.yv"; yw: "ed.yw"; yx: "ed.yx"; yy: "ed.yy"; yz: "ed.yz"; za: "ed.za"; zb: "ed.zb"; zc: "ed.zc"; zd: "ed.zd"; ze: "ed.ze"; zf: "ed.zf"; zg: "ed.zg"; zh: "ed.zh"; zi: "ed.zi"; zj: "ed.zj"; zk: "ed.zk"; zl: "ed.zl"; zm: "ed.zm"; zn: "ed.zn"; zo: "ed.zo"; zp: "ed.zp"; zq: "ed.zq"; zr: "ed.zr"; zs: "ed.zs"; zt: "ed.zt"; zu: "ed.zu"; zv: "ed.zv"; zw: "ed.zw"; zx: "ed.zx"; zy: "ed.zy"; zz: "ed.zz"; }; ee: { aa: "ee.aa"; ab: "ee.ab"; ac: "ee.ac"; ad: "ee.ad"; ae: "ee.ae"; af: "ee.af"; ag: "ee.ag"; ah: "ee.ah"; ai: "ee.ai"; aj: "ee.aj"; ak: "ee.ak"; al: "ee.al"; am: "ee.am"; an: "ee.an"; ao: "ee.ao"; ap: "ee.ap"; aq: "ee.aq"; ar: "ee.ar"; as: "ee.as"; at: "ee.at"; au: "ee.au"; av: "ee.av"; aw: "ee.aw"; ax: "ee.ax"; ay: "ee.ay"; az: "ee.az"; ba: "ee.ba"; bb: "ee.bb"; bc: "ee.bc"; bd: "ee.bd"; be: "ee.be"; bf: "ee.bf"; bg: "ee.bg"; bh: "ee.bh"; bi: "ee.bi"; bj: "ee.bj"; bk: "ee.bk"; bl: "ee.bl"; bm: "ee.bm"; bn: "ee.bn"; bo: "ee.bo"; bp: "ee.bp"; bq: "ee.bq"; br: "ee.br"; bs: "ee.bs"; bt: "ee.bt"; bu: "ee.bu"; bv: "ee.bv"; bw: "ee.bw"; bx: "ee.bx"; by: "ee.by"; bz: "ee.bz"; ca: "ee.ca"; cb: "ee.cb"; cc: "ee.cc"; cd: "ee.cd"; ce: "ee.ce"; cf: "ee.cf"; cg: "ee.cg"; ch: "ee.ch"; ci: "ee.ci"; cj: "ee.cj"; ck: "ee.ck"; cl: "ee.cl"; cm: "ee.cm"; cn: "ee.cn"; co: "ee.co"; cp: "ee.cp"; cq: "ee.cq"; cr: "ee.cr"; cs: "ee.cs"; ct: "ee.ct"; cu: "ee.cu"; cv: "ee.cv"; cw: "ee.cw"; cx: "ee.cx"; cy: "ee.cy"; cz: "ee.cz"; da: "ee.da"; db: "ee.db"; dc: "ee.dc"; dd: "ee.dd"; de: "ee.de"; df: "ee.df"; dg: "ee.dg"; dh: "ee.dh"; di: "ee.di"; dj: "ee.dj"; dk: "ee.dk"; dl: "ee.dl"; dm: "ee.dm"; dn: "ee.dn"; do: "ee.do"; dp: "ee.dp"; dq: "ee.dq"; dr: "ee.dr"; ds: "ee.ds"; dt: "ee.dt"; du: "ee.du"; dv: "ee.dv"; dw: "ee.dw"; dx: "ee.dx"; dy: "ee.dy"; dz: "ee.dz"; ea: "ee.ea"; eb: "ee.eb"; ec: "ee.ec"; ed: "ee.ed"; ee: "ee.ee"; ef: "ee.ef"; eg: "ee.eg"; eh: "ee.eh"; ei: "ee.ei"; ej: "ee.ej"; ek: "ee.ek"; el: "ee.el"; em: "ee.em"; en: "ee.en"; eo: "ee.eo"; ep: "ee.ep"; eq: "ee.eq"; er: "ee.er"; es: "ee.es"; et: "ee.et"; eu: "ee.eu"; ev: "ee.ev"; ew: "ee.ew"; ex: "ee.ex"; ey: "ee.ey"; ez: "ee.ez"; fa: "ee.fa"; fb: "ee.fb"; fc: "ee.fc"; fd: "ee.fd"; fe: "ee.fe"; ff: "ee.ff"; fg: "ee.fg"; fh: "ee.fh"; fi: "ee.fi"; fj: "ee.fj"; fk: "ee.fk"; fl: "ee.fl"; fm: "ee.fm"; fn: "ee.fn"; fo: "ee.fo"; fp: "ee.fp"; fq: "ee.fq"; fr: "ee.fr"; fs: "ee.fs"; ft: "ee.ft"; fu: "ee.fu"; fv: "ee.fv"; fw: "ee.fw"; fx: "ee.fx"; fy: "ee.fy"; fz: "ee.fz"; ga: "ee.ga"; gb: "ee.gb"; gc: "ee.gc"; gd: "ee.gd"; ge: "ee.ge"; gf: "ee.gf"; gg: "ee.gg"; gh: "ee.gh"; gi: "ee.gi"; gj: "ee.gj"; gk: "ee.gk"; gl: "ee.gl"; gm: "ee.gm"; gn: "ee.gn"; go: "ee.go"; gp: "ee.gp"; gq: "ee.gq"; gr: "ee.gr"; gs: "ee.gs"; gt: "ee.gt"; gu: "ee.gu"; gv: "ee.gv"; gw: "ee.gw"; gx: "ee.gx"; gy: "ee.gy"; gz: "ee.gz"; ha: "ee.ha"; hb: "ee.hb"; hc: "ee.hc"; hd: "ee.hd"; he: "ee.he"; hf: "ee.hf"; hg: "ee.hg"; hh: "ee.hh"; hi: "ee.hi"; hj: "ee.hj"; hk: "ee.hk"; hl: "ee.hl"; hm: "ee.hm"; hn: "ee.hn"; ho: "ee.ho"; hp: "ee.hp"; hq: "ee.hq"; hr: "ee.hr"; hs: "ee.hs"; ht: "ee.ht"; hu: "ee.hu"; hv: "ee.hv"; hw: "ee.hw"; hx: "ee.hx"; hy: "ee.hy"; hz: "ee.hz"; ia: "ee.ia"; ib: "ee.ib"; ic: "ee.ic"; id: "ee.id"; ie: "ee.ie"; if: "ee.if"; ig: "ee.ig"; ih: "ee.ih"; ii: "ee.ii"; ij: "ee.ij"; ik: "ee.ik"; il: "ee.il"; im: "ee.im"; in: "ee.in"; io: "ee.io"; ip: "ee.ip"; iq: "ee.iq"; ir: "ee.ir"; is: "ee.is"; it: "ee.it"; iu: "ee.iu"; iv: "ee.iv"; iw: "ee.iw"; ix: "ee.ix"; iy: "ee.iy"; iz: "ee.iz"; ja: "ee.ja"; jb: "ee.jb"; jc: "ee.jc"; jd: "ee.jd"; je: "ee.je"; jf: "ee.jf"; jg: "ee.jg"; jh: "ee.jh"; ji: "ee.ji"; jj: "ee.jj"; jk: "ee.jk"; jl: "ee.jl"; jm: "ee.jm"; jn: "ee.jn"; jo: "ee.jo"; jp: "ee.jp"; jq: "ee.jq"; jr: "ee.jr"; js: "ee.js"; jt: "ee.jt"; ju: "ee.ju"; jv: "ee.jv"; jw: "ee.jw"; jx: "ee.jx"; jy: "ee.jy"; jz: "ee.jz"; ka: "ee.ka"; kb: "ee.kb"; kc: "ee.kc"; kd: "ee.kd"; ke: "ee.ke"; kf: "ee.kf"; kg: "ee.kg"; kh: "ee.kh"; ki: "ee.ki"; kj: "ee.kj"; kk: "ee.kk"; kl: "ee.kl"; km: "ee.km"; kn: "ee.kn"; ko: "ee.ko"; kp: "ee.kp"; kq: "ee.kq"; kr: "ee.kr"; ks: "ee.ks"; kt: "ee.kt"; ku: "ee.ku"; kv: "ee.kv"; kw: "ee.kw"; kx: "ee.kx"; ky: "ee.ky"; kz: "ee.kz"; la: "ee.la"; lb: "ee.lb"; lc: "ee.lc"; ld: "ee.ld"; le: "ee.le"; lf: "ee.lf"; lg: "ee.lg"; lh: "ee.lh"; li: "ee.li"; lj: "ee.lj"; lk: "ee.lk"; ll: "ee.ll"; lm: "ee.lm"; ln: "ee.ln"; lo: "ee.lo"; lp: "ee.lp"; lq: "ee.lq"; lr: "ee.lr"; ls: "ee.ls"; lt: "ee.lt"; lu: "ee.lu"; lv: "ee.lv"; lw: "ee.lw"; lx: "ee.lx"; ly: "ee.ly"; lz: "ee.lz"; ma: "ee.ma"; mb: "ee.mb"; mc: "ee.mc"; md: "ee.md"; me: "ee.me"; mf: "ee.mf"; mg: "ee.mg"; mh: "ee.mh"; mi: "ee.mi"; mj: "ee.mj"; mk: "ee.mk"; ml: "ee.ml"; mm: "ee.mm"; mn: "ee.mn"; mo: "ee.mo"; mp: "ee.mp"; mq: "ee.mq"; mr: "ee.mr"; ms: "ee.ms"; mt: "ee.mt"; mu: "ee.mu"; mv: "ee.mv"; mw: "ee.mw"; mx: "ee.mx"; my: "ee.my"; mz: "ee.mz"; na: "ee.na"; nb: "ee.nb"; nc: "ee.nc"; nd: "ee.nd"; ne: "ee.ne"; nf: "ee.nf"; ng: "ee.ng"; nh: "ee.nh"; ni: "ee.ni"; nj: "ee.nj"; nk: "ee.nk"; nl: "ee.nl"; nm: "ee.nm"; nn: "ee.nn"; no: "ee.no"; np: "ee.np"; nq: "ee.nq"; nr: "ee.nr"; ns: "ee.ns"; nt: "ee.nt"; nu: "ee.nu"; nv: "ee.nv"; nw: "ee.nw"; nx: "ee.nx"; ny: "ee.ny"; nz: "ee.nz"; oa: "ee.oa"; ob: "ee.ob"; oc: "ee.oc"; od: "ee.od"; oe: "ee.oe"; of: "ee.of"; og: "ee.og"; oh: "ee.oh"; oi: "ee.oi"; oj: "ee.oj"; ok: "ee.ok"; ol: "ee.ol"; om: "ee.om"; on: "ee.on"; oo: "ee.oo"; op: "ee.op"; oq: "ee.oq"; or: "ee.or"; os: "ee.os"; ot: "ee.ot"; ou: "ee.ou"; ov: "ee.ov"; ow: "ee.ow"; ox: "ee.ox"; oy: "ee.oy"; oz: "ee.oz"; pa: "ee.pa"; pb: "ee.pb"; pc: "ee.pc"; pd: "ee.pd"; pe: "ee.pe"; pf: "ee.pf"; pg: "ee.pg"; ph: "ee.ph"; pi: "ee.pi"; pj: "ee.pj"; pk: "ee.pk"; pl: "ee.pl"; pm: "ee.pm"; pn: "ee.pn"; po: "ee.po"; pp: "ee.pp"; pq: "ee.pq"; pr: "ee.pr"; ps: "ee.ps"; pt: "ee.pt"; pu: "ee.pu"; pv: "ee.pv"; pw: "ee.pw"; px: "ee.px"; py: "ee.py"; pz: "ee.pz"; qa: "ee.qa"; qb: "ee.qb"; qc: "ee.qc"; qd: "ee.qd"; qe: "ee.qe"; qf: "ee.qf"; qg: "ee.qg"; qh: "ee.qh"; qi: "ee.qi"; qj: "ee.qj"; qk: "ee.qk"; ql: "ee.ql"; qm: "ee.qm"; qn: "ee.qn"; qo: "ee.qo"; qp: "ee.qp"; qq: "ee.qq"; qr: "ee.qr"; qs: "ee.qs"; qt: "ee.qt"; qu: "ee.qu"; qv: "ee.qv"; qw: "ee.qw"; qx: "ee.qx"; qy: "ee.qy"; qz: "ee.qz"; ra: "ee.ra"; rb: "ee.rb"; rc: "ee.rc"; rd: "ee.rd"; re: "ee.re"; rf: "ee.rf"; rg: "ee.rg"; rh: "ee.rh"; ri: "ee.ri"; rj: "ee.rj"; rk: "ee.rk"; rl: "ee.rl"; rm: "ee.rm"; rn: "ee.rn"; ro: "ee.ro"; rp: "ee.rp"; rq: "ee.rq"; rr: "ee.rr"; rs: "ee.rs"; rt: "ee.rt"; ru: "ee.ru"; rv: "ee.rv"; rw: "ee.rw"; rx: "ee.rx"; ry: "ee.ry"; rz: "ee.rz"; sa: "ee.sa"; sb: "ee.sb"; sc: "ee.sc"; sd: "ee.sd"; se: "ee.se"; sf: "ee.sf"; sg: "ee.sg"; sh: "ee.sh"; si: "ee.si"; sj: "ee.sj"; sk: "ee.sk"; sl: "ee.sl"; sm: "ee.sm"; sn: "ee.sn"; so: "ee.so"; sp: "ee.sp"; sq: "ee.sq"; sr: "ee.sr"; ss: "ee.ss"; st: "ee.st"; su: "ee.su"; sv: "ee.sv"; sw: "ee.sw"; sx: "ee.sx"; sy: "ee.sy"; sz: "ee.sz"; ta: "ee.ta"; tb: "ee.tb"; tc: "ee.tc"; td: "ee.td"; te: "ee.te"; tf: "ee.tf"; tg: "ee.tg"; th: "ee.th"; ti: "ee.ti"; tj: "ee.tj"; tk: "ee.tk"; tl: "ee.tl"; tm: "ee.tm"; tn: "ee.tn"; to: "ee.to"; tp: "ee.tp"; tq: "ee.tq"; tr: "ee.tr"; ts: "ee.ts"; tt: "ee.tt"; tu: "ee.tu"; tv: "ee.tv"; tw: "ee.tw"; tx: "ee.tx"; ty: "ee.ty"; tz: "ee.tz"; ua: "ee.ua"; ub: "ee.ub"; uc: "ee.uc"; ud: "ee.ud"; ue: "ee.ue"; uf: "ee.uf"; ug: "ee.ug"; uh: "ee.uh"; ui: "ee.ui"; uj: "ee.uj"; uk: "ee.uk"; ul: "ee.ul"; um: "ee.um"; un: "ee.un"; uo: "ee.uo"; up: "ee.up"; uq: "ee.uq"; ur: "ee.ur"; us: "ee.us"; ut: "ee.ut"; uu: "ee.uu"; uv: "ee.uv"; uw: "ee.uw"; ux: "ee.ux"; uy: "ee.uy"; uz: "ee.uz"; va: "ee.va"; vb: "ee.vb"; vc: "ee.vc"; vd: "ee.vd"; ve: "ee.ve"; vf: "ee.vf"; vg: "ee.vg"; vh: "ee.vh"; vi: "ee.vi"; vj: "ee.vj"; vk: "ee.vk"; vl: "ee.vl"; vm: "ee.vm"; vn: "ee.vn"; vo: "ee.vo"; vp: "ee.vp"; vq: "ee.vq"; vr: "ee.vr"; vs: "ee.vs"; vt: "ee.vt"; vu: "ee.vu"; vv: "ee.vv"; vw: "ee.vw"; vx: "ee.vx"; vy: "ee.vy"; vz: "ee.vz"; wa: "ee.wa"; wb: "ee.wb"; wc: "ee.wc"; wd: "ee.wd"; we: "ee.we"; wf: "ee.wf"; wg: "ee.wg"; wh: "ee.wh"; wi: "ee.wi"; wj: "ee.wj"; wk: "ee.wk"; wl: "ee.wl"; wm: "ee.wm"; wn: "ee.wn"; wo: "ee.wo"; wp: "ee.wp"; wq: "ee.wq"; wr: "ee.wr"; ws: "ee.ws"; wt: "ee.wt"; wu: "ee.wu"; wv: "ee.wv"; ww: "ee.ww"; wx: "ee.wx"; wy: "ee.wy"; wz: "ee.wz"; xa: "ee.xa"; xb: "ee.xb"; xc: "ee.xc"; xd: "ee.xd"; xe: "ee.xe"; xf: "ee.xf"; xg: "ee.xg"; xh: "ee.xh"; xi: "ee.xi"; xj: "ee.xj"; xk: "ee.xk"; xl: "ee.xl"; xm: "ee.xm"; xn: "ee.xn"; xo: "ee.xo"; xp: "ee.xp"; xq: "ee.xq"; xr: "ee.xr"; xs: "ee.xs"; xt: "ee.xt"; xu: "ee.xu"; xv: "ee.xv"; xw: "ee.xw"; xx: "ee.xx"; xy: "ee.xy"; xz: "ee.xz"; ya: "ee.ya"; yb: "ee.yb"; yc: "ee.yc"; yd: "ee.yd"; ye: "ee.ye"; yf: "ee.yf"; yg: "ee.yg"; yh: "ee.yh"; yi: "ee.yi"; yj: "ee.yj"; yk: "ee.yk"; yl: "ee.yl"; ym: "ee.ym"; yn: "ee.yn"; yo: "ee.yo"; yp: "ee.yp"; yq: "ee.yq"; yr: "ee.yr"; ys: "ee.ys"; yt: "ee.yt"; yu: "ee.yu"; yv: "ee.yv"; yw: "ee.yw"; yx: "ee.yx"; yy: "ee.yy"; yz: "ee.yz"; za: "ee.za"; zb: "ee.zb"; zc: "ee.zc"; zd: "ee.zd"; ze: "ee.ze"; zf: "ee.zf"; zg: "ee.zg"; zh: "ee.zh"; zi: "ee.zi"; zj: "ee.zj"; zk: "ee.zk"; zl: "ee.zl"; zm: "ee.zm"; zn: "ee.zn"; zo: "ee.zo"; zp: "ee.zp"; zq: "ee.zq"; zr: "ee.zr"; zs: "ee.zs"; zt: "ee.zt"; zu: "ee.zu"; zv: "ee.zv"; zw: "ee.zw"; zx: "ee.zx"; zy: "ee.zy"; zz: "ee.zz"; }; ef: { aa: "ef.aa"; ab: "ef.ab"; ac: "ef.ac"; ad: "ef.ad"; ae: "ef.ae"; af: "ef.af"; ag: "ef.ag"; ah: "ef.ah"; ai: "ef.ai"; aj: "ef.aj"; ak: "ef.ak"; al: "ef.al"; am: "ef.am"; an: "ef.an"; ao: "ef.ao"; ap: "ef.ap"; aq: "ef.aq"; ar: "ef.ar"; as: "ef.as"; at: "ef.at"; au: "ef.au"; av: "ef.av"; aw: "ef.aw"; ax: "ef.ax"; ay: "ef.ay"; az: "ef.az"; ba: "ef.ba"; bb: "ef.bb"; bc: "ef.bc"; bd: "ef.bd"; be: "ef.be"; bf: "ef.bf"; bg: "ef.bg"; bh: "ef.bh"; bi: "ef.bi"; bj: "ef.bj"; bk: "ef.bk"; bl: "ef.bl"; bm: "ef.bm"; bn: "ef.bn"; bo: "ef.bo"; bp: "ef.bp"; bq: "ef.bq"; br: "ef.br"; bs: "ef.bs"; bt: "ef.bt"; bu: "ef.bu"; bv: "ef.bv"; bw: "ef.bw"; bx: "ef.bx"; by: "ef.by"; bz: "ef.bz"; ca: "ef.ca"; cb: "ef.cb"; cc: "ef.cc"; cd: "ef.cd"; ce: "ef.ce"; cf: "ef.cf"; cg: "ef.cg"; ch: "ef.ch"; ci: "ef.ci"; cj: "ef.cj"; ck: "ef.ck"; cl: "ef.cl"; cm: "ef.cm"; cn: "ef.cn"; co: "ef.co"; cp: "ef.cp"; cq: "ef.cq"; cr: "ef.cr"; cs: "ef.cs"; ct: "ef.ct"; cu: "ef.cu"; cv: "ef.cv"; cw: "ef.cw"; cx: "ef.cx"; cy: "ef.cy"; cz: "ef.cz"; da: "ef.da"; db: "ef.db"; dc: "ef.dc"; dd: "ef.dd"; de: "ef.de"; df: "ef.df"; dg: "ef.dg"; dh: "ef.dh"; di: "ef.di"; dj: "ef.dj"; dk: "ef.dk"; dl: "ef.dl"; dm: "ef.dm"; dn: "ef.dn"; do: "ef.do"; dp: "ef.dp"; dq: "ef.dq"; dr: "ef.dr"; ds: "ef.ds"; dt: "ef.dt"; du: "ef.du"; dv: "ef.dv"; dw: "ef.dw"; dx: "ef.dx"; dy: "ef.dy"; dz: "ef.dz"; ea: "ef.ea"; eb: "ef.eb"; ec: "ef.ec"; ed: "ef.ed"; ee: "ef.ee"; ef: "ef.ef"; eg: "ef.eg"; eh: "ef.eh"; ei: "ef.ei"; ej: "ef.ej"; ek: "ef.ek"; el: "ef.el"; em: "ef.em"; en: "ef.en"; eo: "ef.eo"; ep: "ef.ep"; eq: "ef.eq"; er: "ef.er"; es: "ef.es"; et: "ef.et"; eu: "ef.eu"; ev: "ef.ev"; ew: "ef.ew"; ex: "ef.ex"; ey: "ef.ey"; ez: "ef.ez"; fa: "ef.fa"; fb: "ef.fb"; fc: "ef.fc"; fd: "ef.fd"; fe: "ef.fe"; ff: "ef.ff"; fg: "ef.fg"; fh: "ef.fh"; fi: "ef.fi"; fj: "ef.fj"; fk: "ef.fk"; fl: "ef.fl"; fm: "ef.fm"; fn: "ef.fn"; fo: "ef.fo"; fp: "ef.fp"; fq: "ef.fq"; fr: "ef.fr"; fs: "ef.fs"; ft: "ef.ft"; fu: "ef.fu"; fv: "ef.fv"; fw: "ef.fw"; fx: "ef.fx"; fy: "ef.fy"; fz: "ef.fz"; ga: "ef.ga"; gb: "ef.gb"; gc: "ef.gc"; gd: "ef.gd"; ge: "ef.ge"; gf: "ef.gf"; gg: "ef.gg"; gh: "ef.gh"; gi: "ef.gi"; gj: "ef.gj"; gk: "ef.gk"; gl: "ef.gl"; gm: "ef.gm"; gn: "ef.gn"; go: "ef.go"; gp: "ef.gp"; gq: "ef.gq"; gr: "ef.gr"; gs: "ef.gs"; gt: "ef.gt"; gu: "ef.gu"; gv: "ef.gv"; gw: "ef.gw"; gx: "ef.gx"; gy: "ef.gy"; gz: "ef.gz"; ha: "ef.ha"; hb: "ef.hb"; hc: "ef.hc"; hd: "ef.hd"; he: "ef.he"; hf: "ef.hf"; hg: "ef.hg"; hh: "ef.hh"; hi: "ef.hi"; hj: "ef.hj"; hk: "ef.hk"; hl: "ef.hl"; hm: "ef.hm"; hn: "ef.hn"; ho: "ef.ho"; hp: "ef.hp"; hq: "ef.hq"; hr: "ef.hr"; hs: "ef.hs"; ht: "ef.ht"; hu: "ef.hu"; hv: "ef.hv"; hw: "ef.hw"; hx: "ef.hx"; hy: "ef.hy"; hz: "ef.hz"; ia: "ef.ia"; ib: "ef.ib"; ic: "ef.ic"; id: "ef.id"; ie: "ef.ie"; if: "ef.if"; ig: "ef.ig"; ih: "ef.ih"; ii: "ef.ii"; ij: "ef.ij"; ik: "ef.ik"; il: "ef.il"; im: "ef.im"; in: "ef.in"; io: "ef.io"; ip: "ef.ip"; iq: "ef.iq"; ir: "ef.ir"; is: "ef.is"; it: "ef.it"; iu: "ef.iu"; iv: "ef.iv"; iw: "ef.iw"; ix: "ef.ix"; iy: "ef.iy"; iz: "ef.iz"; ja: "ef.ja"; jb: "ef.jb"; jc: "ef.jc"; jd: "ef.jd"; je: "ef.je"; jf: "ef.jf"; jg: "ef.jg"; jh: "ef.jh"; ji: "ef.ji"; jj: "ef.jj"; jk: "ef.jk"; jl: "ef.jl"; jm: "ef.jm"; jn: "ef.jn"; jo: "ef.jo"; jp: "ef.jp"; jq: "ef.jq"; jr: "ef.jr"; js: "ef.js"; jt: "ef.jt"; ju: "ef.ju"; jv: "ef.jv"; jw: "ef.jw"; jx: "ef.jx"; jy: "ef.jy"; jz: "ef.jz"; ka: "ef.ka"; kb: "ef.kb"; kc: "ef.kc"; kd: "ef.kd"; ke: "ef.ke"; kf: "ef.kf"; kg: "ef.kg"; kh: "ef.kh"; ki: "ef.ki"; kj: "ef.kj"; kk: "ef.kk"; kl: "ef.kl"; km: "ef.km"; kn: "ef.kn"; ko: "ef.ko"; kp: "ef.kp"; kq: "ef.kq"; kr: "ef.kr"; ks: "ef.ks"; kt: "ef.kt"; ku: "ef.ku"; kv: "ef.kv"; kw: "ef.kw"; kx: "ef.kx"; ky: "ef.ky"; kz: "ef.kz"; la: "ef.la"; lb: "ef.lb"; lc: "ef.lc"; ld: "ef.ld"; le: "ef.le"; lf: "ef.lf"; lg: "ef.lg"; lh: "ef.lh"; li: "ef.li"; lj: "ef.lj"; lk: "ef.lk"; ll: "ef.ll"; lm: "ef.lm"; ln: "ef.ln"; lo: "ef.lo"; lp: "ef.lp"; lq: "ef.lq"; lr: "ef.lr"; ls: "ef.ls"; lt: "ef.lt"; lu: "ef.lu"; lv: "ef.lv"; lw: "ef.lw"; lx: "ef.lx"; ly: "ef.ly"; lz: "ef.lz"; ma: "ef.ma"; mb: "ef.mb"; mc: "ef.mc"; md: "ef.md"; me: "ef.me"; mf: "ef.mf"; mg: "ef.mg"; mh: "ef.mh"; mi: "ef.mi"; mj: "ef.mj"; mk: "ef.mk"; ml: "ef.ml"; mm: "ef.mm"; mn: "ef.mn"; mo: "ef.mo"; mp: "ef.mp"; mq: "ef.mq"; mr: "ef.mr"; ms: "ef.ms"; mt: "ef.mt"; mu: "ef.mu"; mv: "ef.mv"; mw: "ef.mw"; mx: "ef.mx"; my: "ef.my"; mz: "ef.mz"; na: "ef.na"; nb: "ef.nb"; nc: "ef.nc"; nd: "ef.nd"; ne: "ef.ne"; nf: "ef.nf"; ng: "ef.ng"; nh: "ef.nh"; ni: "ef.ni"; nj: "ef.nj"; nk: "ef.nk"; nl: "ef.nl"; nm: "ef.nm"; nn: "ef.nn"; no: "ef.no"; np: "ef.np"; nq: "ef.nq"; nr: "ef.nr"; ns: "ef.ns"; nt: "ef.nt"; nu: "ef.nu"; nv: "ef.nv"; nw: "ef.nw"; nx: "ef.nx"; ny: "ef.ny"; nz: "ef.nz"; oa: "ef.oa"; ob: "ef.ob"; oc: "ef.oc"; od: "ef.od"; oe: "ef.oe"; of: "ef.of"; og: "ef.og"; oh: "ef.oh"; oi: "ef.oi"; oj: "ef.oj"; ok: "ef.ok"; ol: "ef.ol"; om: "ef.om"; on: "ef.on"; oo: "ef.oo"; op: "ef.op"; oq: "ef.oq"; or: "ef.or"; os: "ef.os"; ot: "ef.ot"; ou: "ef.ou"; ov: "ef.ov"; ow: "ef.ow"; ox: "ef.ox"; oy: "ef.oy"; oz: "ef.oz"; pa: "ef.pa"; pb: "ef.pb"; pc: "ef.pc"; pd: "ef.pd"; pe: "ef.pe"; pf: "ef.pf"; pg: "ef.pg"; ph: "ef.ph"; pi: "ef.pi"; pj: "ef.pj"; pk: "ef.pk"; pl: "ef.pl"; pm: "ef.pm"; pn: "ef.pn"; po: "ef.po"; pp: "ef.pp"; pq: "ef.pq"; pr: "ef.pr"; ps: "ef.ps"; pt: "ef.pt"; pu: "ef.pu"; pv: "ef.pv"; pw: "ef.pw"; px: "ef.px"; py: "ef.py"; pz: "ef.pz"; qa: "ef.qa"; qb: "ef.qb"; qc: "ef.qc"; qd: "ef.qd"; qe: "ef.qe"; qf: "ef.qf"; qg: "ef.qg"; qh: "ef.qh"; qi: "ef.qi"; qj: "ef.qj"; qk: "ef.qk"; ql: "ef.ql"; qm: "ef.qm"; qn: "ef.qn"; qo: "ef.qo"; qp: "ef.qp"; qq: "ef.qq"; qr: "ef.qr"; qs: "ef.qs"; qt: "ef.qt"; qu: "ef.qu"; qv: "ef.qv"; qw: "ef.qw"; qx: "ef.qx"; qy: "ef.qy"; qz: "ef.qz"; ra: "ef.ra"; rb: "ef.rb"; rc: "ef.rc"; rd: "ef.rd"; re: "ef.re"; rf: "ef.rf"; rg: "ef.rg"; rh: "ef.rh"; ri: "ef.ri"; rj: "ef.rj"; rk: "ef.rk"; rl: "ef.rl"; rm: "ef.rm"; rn: "ef.rn"; ro: "ef.ro"; rp: "ef.rp"; rq: "ef.rq"; rr: "ef.rr"; rs: "ef.rs"; rt: "ef.rt"; ru: "ef.ru"; rv: "ef.rv"; rw: "ef.rw"; rx: "ef.rx"; ry: "ef.ry"; rz: "ef.rz"; sa: "ef.sa"; sb: "ef.sb"; sc: "ef.sc"; sd: "ef.sd"; se: "ef.se"; sf: "ef.sf"; sg: "ef.sg"; sh: "ef.sh"; si: "ef.si"; sj: "ef.sj"; sk: "ef.sk"; sl: "ef.sl"; sm: "ef.sm"; sn: "ef.sn"; so: "ef.so"; sp: "ef.sp"; sq: "ef.sq"; sr: "ef.sr"; ss: "ef.ss"; st: "ef.st"; su: "ef.su"; sv: "ef.sv"; sw: "ef.sw"; sx: "ef.sx"; sy: "ef.sy"; sz: "ef.sz"; ta: "ef.ta"; tb: "ef.tb"; tc: "ef.tc"; td: "ef.td"; te: "ef.te"; tf: "ef.tf"; tg: "ef.tg"; th: "ef.th"; ti: "ef.ti"; tj: "ef.tj"; tk: "ef.tk"; tl: "ef.tl"; tm: "ef.tm"; tn: "ef.tn"; to: "ef.to"; tp: "ef.tp"; tq: "ef.tq"; tr: "ef.tr"; ts: "ef.ts"; tt: "ef.tt"; tu: "ef.tu"; tv: "ef.tv"; tw: "ef.tw"; tx: "ef.tx"; ty: "ef.ty"; tz: "ef.tz"; ua: "ef.ua"; ub: "ef.ub"; uc: "ef.uc"; ud: "ef.ud"; ue: "ef.ue"; uf: "ef.uf"; ug: "ef.ug"; uh: "ef.uh"; ui: "ef.ui"; uj: "ef.uj"; uk: "ef.uk"; ul: "ef.ul"; um: "ef.um"; un: "ef.un"; uo: "ef.uo"; up: "ef.up"; uq: "ef.uq"; ur: "ef.ur"; us: "ef.us"; ut: "ef.ut"; uu: "ef.uu"; uv: "ef.uv"; uw: "ef.uw"; ux: "ef.ux"; uy: "ef.uy"; uz: "ef.uz"; va: "ef.va"; vb: "ef.vb"; vc: "ef.vc"; vd: "ef.vd"; ve: "ef.ve"; vf: "ef.vf"; vg: "ef.vg"; vh: "ef.vh"; vi: "ef.vi"; vj: "ef.vj"; vk: "ef.vk"; vl: "ef.vl"; vm: "ef.vm"; vn: "ef.vn"; vo: "ef.vo"; vp: "ef.vp"; vq: "ef.vq"; vr: "ef.vr"; vs: "ef.vs"; vt: "ef.vt"; vu: "ef.vu"; vv: "ef.vv"; vw: "ef.vw"; vx: "ef.vx"; vy: "ef.vy"; vz: "ef.vz"; wa: "ef.wa"; wb: "ef.wb"; wc: "ef.wc"; wd: "ef.wd"; we: "ef.we"; wf: "ef.wf"; wg: "ef.wg"; wh: "ef.wh"; wi: "ef.wi"; wj: "ef.wj"; wk: "ef.wk"; wl: "ef.wl"; wm: "ef.wm"; wn: "ef.wn"; wo: "ef.wo"; wp: "ef.wp"; wq: "ef.wq"; wr: "ef.wr"; ws: "ef.ws"; wt: "ef.wt"; wu: "ef.wu"; wv: "ef.wv"; ww: "ef.ww"; wx: "ef.wx"; wy: "ef.wy"; wz: "ef.wz"; xa: "ef.xa"; xb: "ef.xb"; xc: "ef.xc"; xd: "ef.xd"; xe: "ef.xe"; xf: "ef.xf"; xg: "ef.xg"; xh: "ef.xh"; xi: "ef.xi"; xj: "ef.xj"; xk: "ef.xk"; xl: "ef.xl"; xm: "ef.xm"; xn: "ef.xn"; xo: "ef.xo"; xp: "ef.xp"; xq: "ef.xq"; xr: "ef.xr"; xs: "ef.xs"; xt: "ef.xt"; xu: "ef.xu"; xv: "ef.xv"; xw: "ef.xw"; xx: "ef.xx"; xy: "ef.xy"; xz: "ef.xz"; ya: "ef.ya"; yb: "ef.yb"; yc: "ef.yc"; yd: "ef.yd"; ye: "ef.ye"; yf: "ef.yf"; yg: "ef.yg"; yh: "ef.yh"; yi: "ef.yi"; yj: "ef.yj"; yk: "ef.yk"; yl: "ef.yl"; ym: "ef.ym"; yn: "ef.yn"; yo: "ef.yo"; yp: "ef.yp"; yq: "ef.yq"; yr: "ef.yr"; ys: "ef.ys"; yt: "ef.yt"; yu: "ef.yu"; yv: "ef.yv"; yw: "ef.yw"; yx: "ef.yx"; yy: "ef.yy"; yz: "ef.yz"; za: "ef.za"; zb: "ef.zb"; zc: "ef.zc"; zd: "ef.zd"; ze: "ef.ze"; zf: "ef.zf"; zg: "ef.zg"; zh: "ef.zh"; zi: "ef.zi"; zj: "ef.zj"; zk: "ef.zk"; zl: "ef.zl"; zm: "ef.zm"; zn: "ef.zn"; zo: "ef.zo"; zp: "ef.zp"; zq: "ef.zq"; zr: "ef.zr"; zs: "ef.zs"; zt: "ef.zt"; zu: "ef.zu"; zv: "ef.zv"; zw: "ef.zw"; zx: "ef.zx"; zy: "ef.zy"; zz: "ef.zz"; }; eg: { aa: "eg.aa"; ab: "eg.ab"; ac: "eg.ac"; ad: "eg.ad"; ae: "eg.ae"; af: "eg.af"; ag: "eg.ag"; ah: "eg.ah"; ai: "eg.ai"; aj: "eg.aj"; ak: "eg.ak"; al: "eg.al"; am: "eg.am"; an: "eg.an"; ao: "eg.ao"; ap: "eg.ap"; aq: "eg.aq"; ar: "eg.ar"; as: "eg.as"; at: "eg.at"; au: "eg.au"; av: "eg.av"; aw: "eg.aw"; ax: "eg.ax"; ay: "eg.ay"; az: "eg.az"; ba: "eg.ba"; bb: "eg.bb"; bc: "eg.bc"; bd: "eg.bd"; be: "eg.be"; bf: "eg.bf"; bg: "eg.bg"; bh: "eg.bh"; bi: "eg.bi"; bj: "eg.bj"; bk: "eg.bk"; bl: "eg.bl"; bm: "eg.bm"; bn: "eg.bn"; bo: "eg.bo"; bp: "eg.bp"; bq: "eg.bq"; br: "eg.br"; bs: "eg.bs"; bt: "eg.bt"; bu: "eg.bu"; bv: "eg.bv"; bw: "eg.bw"; bx: "eg.bx"; by: "eg.by"; bz: "eg.bz"; ca: "eg.ca"; cb: "eg.cb"; cc: "eg.cc"; cd: "eg.cd"; ce: "eg.ce"; cf: "eg.cf"; cg: "eg.cg"; ch: "eg.ch"; ci: "eg.ci"; cj: "eg.cj"; ck: "eg.ck"; cl: "eg.cl"; cm: "eg.cm"; cn: "eg.cn"; co: "eg.co"; cp: "eg.cp"; cq: "eg.cq"; cr: "eg.cr"; cs: "eg.cs"; ct: "eg.ct"; cu: "eg.cu"; cv: "eg.cv"; cw: "eg.cw"; cx: "eg.cx"; cy: "eg.cy"; cz: "eg.cz"; da: "eg.da"; db: "eg.db"; dc: "eg.dc"; dd: "eg.dd"; de: "eg.de"; df: "eg.df"; dg: "eg.dg"; dh: "eg.dh"; di: "eg.di"; dj: "eg.dj"; dk: "eg.dk"; dl: "eg.dl"; dm: "eg.dm"; dn: "eg.dn"; do: "eg.do"; dp: "eg.dp"; dq: "eg.dq"; dr: "eg.dr"; ds: "eg.ds"; dt: "eg.dt"; du: "eg.du"; dv: "eg.dv"; dw: "eg.dw"; dx: "eg.dx"; dy: "eg.dy"; dz: "eg.dz"; ea: "eg.ea"; eb: "eg.eb"; ec: "eg.ec"; ed: "eg.ed"; ee: "eg.ee"; ef: "eg.ef"; eg: "eg.eg"; eh: "eg.eh"; ei: "eg.ei"; ej: "eg.ej"; ek: "eg.ek"; el: "eg.el"; em: "eg.em"; en: "eg.en"; eo: "eg.eo"; ep: "eg.ep"; eq: "eg.eq"; er: "eg.er"; es: "eg.es"; et: "eg.et"; eu: "eg.eu"; ev: "eg.ev"; ew: "eg.ew"; ex: "eg.ex"; ey: "eg.ey"; ez: "eg.ez"; fa: "eg.fa"; fb: "eg.fb"; fc: "eg.fc"; fd: "eg.fd"; fe: "eg.fe"; ff: "eg.ff"; fg: "eg.fg"; fh: "eg.fh"; fi: "eg.fi"; fj: "eg.fj"; fk: "eg.fk"; fl: "eg.fl"; fm: "eg.fm"; fn: "eg.fn"; fo: "eg.fo"; fp: "eg.fp"; fq: "eg.fq"; fr: "eg.fr"; fs: "eg.fs"; ft: "eg.ft"; fu: "eg.fu"; fv: "eg.fv"; fw: "eg.fw"; fx: "eg.fx"; fy: "eg.fy"; fz: "eg.fz"; ga: "eg.ga"; gb: "eg.gb"; gc: "eg.gc"; gd: "eg.gd"; ge: "eg.ge"; gf: "eg.gf"; gg: "eg.gg"; gh: "eg.gh"; gi: "eg.gi"; gj: "eg.gj"; gk: "eg.gk"; gl: "eg.gl"; gm: "eg.gm"; gn: "eg.gn"; go: "eg.go"; gp: "eg.gp"; gq: "eg.gq"; gr: "eg.gr"; gs: "eg.gs"; gt: "eg.gt"; gu: "eg.gu"; gv: "eg.gv"; gw: "eg.gw"; gx: "eg.gx"; gy: "eg.gy"; gz: "eg.gz"; ha: "eg.ha"; hb: "eg.hb"; hc: "eg.hc"; hd: "eg.hd"; he: "eg.he"; hf: "eg.hf"; hg: "eg.hg"; hh: "eg.hh"; hi: "eg.hi"; hj: "eg.hj"; hk: "eg.hk"; hl: "eg.hl"; hm: "eg.hm"; hn: "eg.hn"; ho: "eg.ho"; hp: "eg.hp"; hq: "eg.hq"; hr: "eg.hr"; hs: "eg.hs"; ht: "eg.ht"; hu: "eg.hu"; hv: "eg.hv"; hw: "eg.hw"; hx: "eg.hx"; hy: "eg.hy"; hz: "eg.hz"; ia: "eg.ia"; ib: "eg.ib"; ic: "eg.ic"; id: "eg.id"; ie: "eg.ie"; if: "eg.if"; ig: "eg.ig"; ih: "eg.ih"; ii: "eg.ii"; ij: "eg.ij"; ik: "eg.ik"; il: "eg.il"; im: "eg.im"; in: "eg.in"; io: "eg.io"; ip: "eg.ip"; iq: "eg.iq"; ir: "eg.ir"; is: "eg.is"; it: "eg.it"; iu: "eg.iu"; iv: "eg.iv"; iw: "eg.iw"; ix: "eg.ix"; iy: "eg.iy"; iz: "eg.iz"; ja: "eg.ja"; jb: "eg.jb"; jc: "eg.jc"; jd: "eg.jd"; je: "eg.je"; jf: "eg.jf"; jg: "eg.jg"; jh: "eg.jh"; ji: "eg.ji"; jj: "eg.jj"; jk: "eg.jk"; jl: "eg.jl"; jm: "eg.jm"; jn: "eg.jn"; jo: "eg.jo"; jp: "eg.jp"; jq: "eg.jq"; jr: "eg.jr"; js: "eg.js"; jt: "eg.jt"; ju: "eg.ju"; jv: "eg.jv"; jw: "eg.jw"; jx: "eg.jx"; jy: "eg.jy"; jz: "eg.jz"; ka: "eg.ka"; kb: "eg.kb"; kc: "eg.kc"; kd: "eg.kd"; ke: "eg.ke"; kf: "eg.kf"; kg: "eg.kg"; kh: "eg.kh"; ki: "eg.ki"; kj: "eg.kj"; kk: "eg.kk"; kl: "eg.kl"; km: "eg.km"; kn: "eg.kn"; ko: "eg.ko"; kp: "eg.kp"; kq: "eg.kq"; kr: "eg.kr"; ks: "eg.ks"; kt: "eg.kt"; ku: "eg.ku"; kv: "eg.kv"; kw: "eg.kw"; kx: "eg.kx"; ky: "eg.ky"; kz: "eg.kz"; la: "eg.la"; lb: "eg.lb"; lc: "eg.lc"; ld: "eg.ld"; le: "eg.le"; lf: "eg.lf"; lg: "eg.lg"; lh: "eg.lh"; li: "eg.li"; lj: "eg.lj"; lk: "eg.lk"; ll: "eg.ll"; lm: "eg.lm"; ln: "eg.ln"; lo: "eg.lo"; lp: "eg.lp"; lq: "eg.lq"; lr: "eg.lr"; ls: "eg.ls"; lt: "eg.lt"; lu: "eg.lu"; lv: "eg.lv"; lw: "eg.lw"; lx: "eg.lx"; ly: "eg.ly"; lz: "eg.lz"; ma: "eg.ma"; mb: "eg.mb"; mc: "eg.mc"; md: "eg.md"; me: "eg.me"; mf: "eg.mf"; mg: "eg.mg"; mh: "eg.mh"; mi: "eg.mi"; mj: "eg.mj"; mk: "eg.mk"; ml: "eg.ml"; mm: "eg.mm"; mn: "eg.mn"; mo: "eg.mo"; mp: "eg.mp"; mq: "eg.mq"; mr: "eg.mr"; ms: "eg.ms"; mt: "eg.mt"; mu: "eg.mu"; mv: "eg.mv"; mw: "eg.mw"; mx: "eg.mx"; my: "eg.my"; mz: "eg.mz"; na: "eg.na"; nb: "eg.nb"; nc: "eg.nc"; nd: "eg.nd"; ne: "eg.ne"; nf: "eg.nf"; ng: "eg.ng"; nh: "eg.nh"; ni: "eg.ni"; nj: "eg.nj"; nk: "eg.nk"; nl: "eg.nl"; nm: "eg.nm"; nn: "eg.nn"; no: "eg.no"; np: "eg.np"; nq: "eg.nq"; nr: "eg.nr"; ns: "eg.ns"; nt: "eg.nt"; nu: "eg.nu"; nv: "eg.nv"; nw: "eg.nw"; nx: "eg.nx"; ny: "eg.ny"; nz: "eg.nz"; oa: "eg.oa"; ob: "eg.ob"; oc: "eg.oc"; od: "eg.od"; oe: "eg.oe"; of: "eg.of"; og: "eg.og"; oh: "eg.oh"; oi: "eg.oi"; oj: "eg.oj"; ok: "eg.ok"; ol: "eg.ol"; om: "eg.om"; on: "eg.on"; oo: "eg.oo"; op: "eg.op"; oq: "eg.oq"; or: "eg.or"; os: "eg.os"; ot: "eg.ot"; ou: "eg.ou"; ov: "eg.ov"; ow: "eg.ow"; ox: "eg.ox"; oy: "eg.oy"; oz: "eg.oz"; pa: "eg.pa"; pb: "eg.pb"; pc: "eg.pc"; pd: "eg.pd"; pe: "eg.pe"; pf: "eg.pf"; pg: "eg.pg"; ph: "eg.ph"; pi: "eg.pi"; pj: "eg.pj"; pk: "eg.pk"; pl: "eg.pl"; pm: "eg.pm"; pn: "eg.pn"; po: "eg.po"; pp: "eg.pp"; pq: "eg.pq"; pr: "eg.pr"; ps: "eg.ps"; pt: "eg.pt"; pu: "eg.pu"; pv: "eg.pv"; pw: "eg.pw"; px: "eg.px"; py: "eg.py"; pz: "eg.pz"; qa: "eg.qa"; qb: "eg.qb"; qc: "eg.qc"; qd: "eg.qd"; qe: "eg.qe"; qf: "eg.qf"; qg: "eg.qg"; qh: "eg.qh"; qi: "eg.qi"; qj: "eg.qj"; qk: "eg.qk"; ql: "eg.ql"; qm: "eg.qm"; qn: "eg.qn"; qo: "eg.qo"; qp: "eg.qp"; qq: "eg.qq"; qr: "eg.qr"; qs: "eg.qs"; qt: "eg.qt"; qu: "eg.qu"; qv: "eg.qv"; qw: "eg.qw"; qx: "eg.qx"; qy: "eg.qy"; qz: "eg.qz"; ra: "eg.ra"; rb: "eg.rb"; rc: "eg.rc"; rd: "eg.rd"; re: "eg.re"; rf: "eg.rf"; rg: "eg.rg"; rh: "eg.rh"; ri: "eg.ri"; rj: "eg.rj"; rk: "eg.rk"; rl: "eg.rl"; rm: "eg.rm"; rn: "eg.rn"; ro: "eg.ro"; rp: "eg.rp"; rq: "eg.rq"; rr: "eg.rr"; rs: "eg.rs"; rt: "eg.rt"; ru: "eg.ru"; rv: "eg.rv"; rw: "eg.rw"; rx: "eg.rx"; ry: "eg.ry"; rz: "eg.rz"; sa: "eg.sa"; sb: "eg.sb"; sc: "eg.sc"; sd: "eg.sd"; se: "eg.se"; sf: "eg.sf"; sg: "eg.sg"; sh: "eg.sh"; si: "eg.si"; sj: "eg.sj"; sk: "eg.sk"; sl: "eg.sl"; sm: "eg.sm"; sn: "eg.sn"; so: "eg.so"; sp: "eg.sp"; sq: "eg.sq"; sr: "eg.sr"; ss: "eg.ss"; st: "eg.st"; su: "eg.su"; sv: "eg.sv"; sw: "eg.sw"; sx: "eg.sx"; sy: "eg.sy"; sz: "eg.sz"; ta: "eg.ta"; tb: "eg.tb"; tc: "eg.tc"; td: "eg.td"; te: "eg.te"; tf: "eg.tf"; tg: "eg.tg"; th: "eg.th"; ti: "eg.ti"; tj: "eg.tj"; tk: "eg.tk"; tl: "eg.tl"; tm: "eg.tm"; tn: "eg.tn"; to: "eg.to"; tp: "eg.tp"; tq: "eg.tq"; tr: "eg.tr"; ts: "eg.ts"; tt: "eg.tt"; tu: "eg.tu"; tv: "eg.tv"; tw: "eg.tw"; tx: "eg.tx"; ty: "eg.ty"; tz: "eg.tz"; ua: "eg.ua"; ub: "eg.ub"; uc: "eg.uc"; ud: "eg.ud"; ue: "eg.ue"; uf: "eg.uf"; ug: "eg.ug"; uh: "eg.uh"; ui: "eg.ui"; uj: "eg.uj"; uk: "eg.uk"; ul: "eg.ul"; um: "eg.um"; un: "eg.un"; uo: "eg.uo"; up: "eg.up"; uq: "eg.uq"; ur: "eg.ur"; us: "eg.us"; ut: "eg.ut"; uu: "eg.uu"; uv: "eg.uv"; uw: "eg.uw"; ux: "eg.ux"; uy: "eg.uy"; uz: "eg.uz"; va: "eg.va"; vb: "eg.vb"; vc: "eg.vc"; vd: "eg.vd"; ve: "eg.ve"; vf: "eg.vf"; vg: "eg.vg"; vh: "eg.vh"; vi: "eg.vi"; vj: "eg.vj"; vk: "eg.vk"; vl: "eg.vl"; vm: "eg.vm"; vn: "eg.vn"; vo: "eg.vo"; vp: "eg.vp"; vq: "eg.vq"; vr: "eg.vr"; vs: "eg.vs"; vt: "eg.vt"; vu: "eg.vu"; vv: "eg.vv"; vw: "eg.vw"; vx: "eg.vx"; vy: "eg.vy"; vz: "eg.vz"; wa: "eg.wa"; wb: "eg.wb"; wc: "eg.wc"; wd: "eg.wd"; we: "eg.we"; wf: "eg.wf"; wg: "eg.wg"; wh: "eg.wh"; wi: "eg.wi"; wj: "eg.wj"; wk: "eg.wk"; wl: "eg.wl"; wm: "eg.wm"; wn: "eg.wn"; wo: "eg.wo"; wp: "eg.wp"; wq: "eg.wq"; wr: "eg.wr"; ws: "eg.ws"; wt: "eg.wt"; wu: "eg.wu"; wv: "eg.wv"; ww: "eg.ww"; wx: "eg.wx"; wy: "eg.wy"; wz: "eg.wz"; xa: "eg.xa"; xb: "eg.xb"; xc: "eg.xc"; xd: "eg.xd"; xe: "eg.xe"; xf: "eg.xf"; xg: "eg.xg"; xh: "eg.xh"; xi: "eg.xi"; xj: "eg.xj"; xk: "eg.xk"; xl: "eg.xl"; xm: "eg.xm"; xn: "eg.xn"; xo: "eg.xo"; xp: "eg.xp"; xq: "eg.xq"; xr: "eg.xr"; xs: "eg.xs"; xt: "eg.xt"; xu: "eg.xu"; xv: "eg.xv"; xw: "eg.xw"; xx: "eg.xx"; xy: "eg.xy"; xz: "eg.xz"; ya: "eg.ya"; yb: "eg.yb"; yc: "eg.yc"; yd: "eg.yd"; ye: "eg.ye"; yf: "eg.yf"; yg: "eg.yg"; yh: "eg.yh"; yi: "eg.yi"; yj: "eg.yj"; yk: "eg.yk"; yl: "eg.yl"; ym: "eg.ym"; yn: "eg.yn"; yo: "eg.yo"; yp: "eg.yp"; yq: "eg.yq"; yr: "eg.yr"; ys: "eg.ys"; yt: "eg.yt"; yu: "eg.yu"; yv: "eg.yv"; yw: "eg.yw"; yx: "eg.yx"; yy: "eg.yy"; yz: "eg.yz"; za: "eg.za"; zb: "eg.zb"; zc: "eg.zc"; zd: "eg.zd"; ze: "eg.ze"; zf: "eg.zf"; zg: "eg.zg"; zh: "eg.zh"; zi: "eg.zi"; zj: "eg.zj"; zk: "eg.zk"; zl: "eg.zl"; zm: "eg.zm"; zn: "eg.zn"; zo: "eg.zo"; zp: "eg.zp"; zq: "eg.zq"; zr: "eg.zr"; zs: "eg.zs"; zt: "eg.zt"; zu: "eg.zu"; zv: "eg.zv"; zw: "eg.zw"; zx: "eg.zx"; zy: "eg.zy"; zz: "eg.zz"; }; eh: { aa: "eh.aa"; ab: "eh.ab"; ac: "eh.ac"; ad: "eh.ad"; ae: "eh.ae"; af: "eh.af"; ag: "eh.ag"; ah: "eh.ah"; ai: "eh.ai"; aj: "eh.aj"; ak: "eh.ak"; al: "eh.al"; am: "eh.am"; an: "eh.an"; ao: "eh.ao"; ap: "eh.ap"; aq: "eh.aq"; ar: "eh.ar"; as: "eh.as"; at: "eh.at"; au: "eh.au"; av: "eh.av"; aw: "eh.aw"; ax: "eh.ax"; ay: "eh.ay"; az: "eh.az"; ba: "eh.ba"; bb: "eh.bb"; bc: "eh.bc"; bd: "eh.bd"; be: "eh.be"; bf: "eh.bf"; bg: "eh.bg"; bh: "eh.bh"; bi: "eh.bi"; bj: "eh.bj"; bk: "eh.bk"; bl: "eh.bl"; bm: "eh.bm"; bn: "eh.bn"; bo: "eh.bo"; bp: "eh.bp"; bq: "eh.bq"; br: "eh.br"; bs: "eh.bs"; bt: "eh.bt"; bu: "eh.bu"; bv: "eh.bv"; bw: "eh.bw"; bx: "eh.bx"; by: "eh.by"; bz: "eh.bz"; ca: "eh.ca"; cb: "eh.cb"; cc: "eh.cc"; cd: "eh.cd"; ce: "eh.ce"; cf: "eh.cf"; cg: "eh.cg"; ch: "eh.ch"; ci: "eh.ci"; cj: "eh.cj"; ck: "eh.ck"; cl: "eh.cl"; cm: "eh.cm"; cn: "eh.cn"; co: "eh.co"; cp: "eh.cp"; cq: "eh.cq"; cr: "eh.cr"; cs: "eh.cs"; ct: "eh.ct"; cu: "eh.cu"; cv: "eh.cv"; cw: "eh.cw"; cx: "eh.cx"; cy: "eh.cy"; cz: "eh.cz"; da: "eh.da"; db: "eh.db"; dc: "eh.dc"; dd: "eh.dd"; de: "eh.de"; df: "eh.df"; dg: "eh.dg"; dh: "eh.dh"; di: "eh.di"; dj: "eh.dj"; dk: "eh.dk"; dl: "eh.dl"; dm: "eh.dm"; dn: "eh.dn"; do: "eh.do"; dp: "eh.dp"; dq: "eh.dq"; dr: "eh.dr"; ds: "eh.ds"; dt: "eh.dt"; du: "eh.du"; dv: "eh.dv"; dw: "eh.dw"; dx: "eh.dx"; dy: "eh.dy"; dz: "eh.dz"; ea: "eh.ea"; eb: "eh.eb"; ec: "eh.ec"; ed: "eh.ed"; ee: "eh.ee"; ef: "eh.ef"; eg: "eh.eg"; eh: "eh.eh"; ei: "eh.ei"; ej: "eh.ej"; ek: "eh.ek"; el: "eh.el"; em: "eh.em"; en: "eh.en"; eo: "eh.eo"; ep: "eh.ep"; eq: "eh.eq"; er: "eh.er"; es: "eh.es"; et: "eh.et"; eu: "eh.eu"; ev: "eh.ev"; ew: "eh.ew"; ex: "eh.ex"; ey: "eh.ey"; ez: "eh.ez"; fa: "eh.fa"; fb: "eh.fb"; fc: "eh.fc"; fd: "eh.fd"; fe: "eh.fe"; ff: "eh.ff"; fg: "eh.fg"; fh: "eh.fh"; fi: "eh.fi"; fj: "eh.fj"; fk: "eh.fk"; fl: "eh.fl"; fm: "eh.fm"; fn: "eh.fn"; fo: "eh.fo"; fp: "eh.fp"; fq: "eh.fq"; fr: "eh.fr"; fs: "eh.fs"; ft: "eh.ft"; fu: "eh.fu"; fv: "eh.fv"; fw: "eh.fw"; fx: "eh.fx"; fy: "eh.fy"; fz: "eh.fz"; ga: "eh.ga"; gb: "eh.gb"; gc: "eh.gc"; gd: "eh.gd"; ge: "eh.ge"; gf: "eh.gf"; gg: "eh.gg"; gh: "eh.gh"; gi: "eh.gi"; gj: "eh.gj"; gk: "eh.gk"; gl: "eh.gl"; gm: "eh.gm"; gn: "eh.gn"; go: "eh.go"; gp: "eh.gp"; gq: "eh.gq"; gr: "eh.gr"; gs: "eh.gs"; gt: "eh.gt"; gu: "eh.gu"; gv: "eh.gv"; gw: "eh.gw"; gx: "eh.gx"; gy: "eh.gy"; gz: "eh.gz"; ha: "eh.ha"; hb: "eh.hb"; hc: "eh.hc"; hd: "eh.hd"; he: "eh.he"; hf: "eh.hf"; hg: "eh.hg"; hh: "eh.hh"; hi: "eh.hi"; hj: "eh.hj"; hk: "eh.hk"; hl: "eh.hl"; hm: "eh.hm"; hn: "eh.hn"; ho: "eh.ho"; hp: "eh.hp"; hq: "eh.hq"; hr: "eh.hr"; hs: "eh.hs"; ht: "eh.ht"; hu: "eh.hu"; hv: "eh.hv"; hw: "eh.hw"; hx: "eh.hx"; hy: "eh.hy"; hz: "eh.hz"; ia: "eh.ia"; ib: "eh.ib"; ic: "eh.ic"; id: "eh.id"; ie: "eh.ie"; if: "eh.if"; ig: "eh.ig"; ih: "eh.ih"; ii: "eh.ii"; ij: "eh.ij"; ik: "eh.ik"; il: "eh.il"; im: "eh.im"; in: "eh.in"; io: "eh.io"; ip: "eh.ip"; iq: "eh.iq"; ir: "eh.ir"; is: "eh.is"; it: "eh.it"; iu: "eh.iu"; iv: "eh.iv"; iw: "eh.iw"; ix: "eh.ix"; iy: "eh.iy"; iz: "eh.iz"; ja: "eh.ja"; jb: "eh.jb"; jc: "eh.jc"; jd: "eh.jd"; je: "eh.je"; jf: "eh.jf"; jg: "eh.jg"; jh: "eh.jh"; ji: "eh.ji"; jj: "eh.jj"; jk: "eh.jk"; jl: "eh.jl"; jm: "eh.jm"; jn: "eh.jn"; jo: "eh.jo"; jp: "eh.jp"; jq: "eh.jq"; jr: "eh.jr"; js: "eh.js"; jt: "eh.jt"; ju: "eh.ju"; jv: "eh.jv"; jw: "eh.jw"; jx: "eh.jx"; jy: "eh.jy"; jz: "eh.jz"; ka: "eh.ka"; kb: "eh.kb"; kc: "eh.kc"; kd: "eh.kd"; ke: "eh.ke"; kf: "eh.kf"; kg: "eh.kg"; kh: "eh.kh"; ki: "eh.ki"; kj: "eh.kj"; kk: "eh.kk"; kl: "eh.kl"; km: "eh.km"; kn: "eh.kn"; ko: "eh.ko"; kp: "eh.kp"; kq: "eh.kq"; kr: "eh.kr"; ks: "eh.ks"; kt: "eh.kt"; ku: "eh.ku"; kv: "eh.kv"; kw: "eh.kw"; kx: "eh.kx"; ky: "eh.ky"; kz: "eh.kz"; la: "eh.la"; lb: "eh.lb"; lc: "eh.lc"; ld: "eh.ld"; le: "eh.le"; lf: "eh.lf"; lg: "eh.lg"; lh: "eh.lh"; li: "eh.li"; lj: "eh.lj"; lk: "eh.lk"; ll: "eh.ll"; lm: "eh.lm"; ln: "eh.ln"; lo: "eh.lo"; lp: "eh.lp"; lq: "eh.lq"; lr: "eh.lr"; ls: "eh.ls"; lt: "eh.lt"; lu: "eh.lu"; lv: "eh.lv"; lw: "eh.lw"; lx: "eh.lx"; ly: "eh.ly"; lz: "eh.lz"; ma: "eh.ma"; mb: "eh.mb"; mc: "eh.mc"; md: "eh.md"; me: "eh.me"; mf: "eh.mf"; mg: "eh.mg"; mh: "eh.mh"; mi: "eh.mi"; mj: "eh.mj"; mk: "eh.mk"; ml: "eh.ml"; mm: "eh.mm"; mn: "eh.mn"; mo: "eh.mo"; mp: "eh.mp"; mq: "eh.mq"; mr: "eh.mr"; ms: "eh.ms"; mt: "eh.mt"; mu: "eh.mu"; mv: "eh.mv"; mw: "eh.mw"; mx: "eh.mx"; my: "eh.my"; mz: "eh.mz"; na: "eh.na"; nb: "eh.nb"; nc: "eh.nc"; nd: "eh.nd"; ne: "eh.ne"; nf: "eh.nf"; ng: "eh.ng"; nh: "eh.nh"; ni: "eh.ni"; nj: "eh.nj"; nk: "eh.nk"; nl: "eh.nl"; nm: "eh.nm"; nn: "eh.nn"; no: "eh.no"; np: "eh.np"; nq: "eh.nq"; nr: "eh.nr"; ns: "eh.ns"; nt: "eh.nt"; nu: "eh.nu"; nv: "eh.nv"; nw: "eh.nw"; nx: "eh.nx"; ny: "eh.ny"; nz: "eh.nz"; oa: "eh.oa"; ob: "eh.ob"; oc: "eh.oc"; od: "eh.od"; oe: "eh.oe"; of: "eh.of"; og: "eh.og"; oh: "eh.oh"; oi: "eh.oi"; oj: "eh.oj"; ok: "eh.ok"; ol: "eh.ol"; om: "eh.om"; on: "eh.on"; oo: "eh.oo"; op: "eh.op"; oq: "eh.oq"; or: "eh.or"; os: "eh.os"; ot: "eh.ot"; ou: "eh.ou"; ov: "eh.ov"; ow: "eh.ow"; ox: "eh.ox"; oy: "eh.oy"; oz: "eh.oz"; pa: "eh.pa"; pb: "eh.pb"; pc: "eh.pc"; pd: "eh.pd"; pe: "eh.pe"; pf: "eh.pf"; pg: "eh.pg"; ph: "eh.ph"; pi: "eh.pi"; pj: "eh.pj"; pk: "eh.pk"; pl: "eh.pl"; pm: "eh.pm"; pn: "eh.pn"; po: "eh.po"; pp: "eh.pp"; pq: "eh.pq"; pr: "eh.pr"; ps: "eh.ps"; pt: "eh.pt"; pu: "eh.pu"; pv: "eh.pv"; pw: "eh.pw"; px: "eh.px"; py: "eh.py"; pz: "eh.pz"; qa: "eh.qa"; qb: "eh.qb"; qc: "eh.qc"; qd: "eh.qd"; qe: "eh.qe"; qf: "eh.qf"; qg: "eh.qg"; qh: "eh.qh"; qi: "eh.qi"; qj: "eh.qj"; qk: "eh.qk"; ql: "eh.ql"; qm: "eh.qm"; qn: "eh.qn"; qo: "eh.qo"; qp: "eh.qp"; qq: "eh.qq"; qr: "eh.qr"; qs: "eh.qs"; qt: "eh.qt"; qu: "eh.qu"; qv: "eh.qv"; qw: "eh.qw"; qx: "eh.qx"; qy: "eh.qy"; qz: "eh.qz"; ra: "eh.ra"; rb: "eh.rb"; rc: "eh.rc"; rd: "eh.rd"; re: "eh.re"; rf: "eh.rf"; rg: "eh.rg"; rh: "eh.rh"; ri: "eh.ri"; rj: "eh.rj"; rk: "eh.rk"; rl: "eh.rl"; rm: "eh.rm"; rn: "eh.rn"; ro: "eh.ro"; rp: "eh.rp"; rq: "eh.rq"; rr: "eh.rr"; rs: "eh.rs"; rt: "eh.rt"; ru: "eh.ru"; rv: "eh.rv"; rw: "eh.rw"; rx: "eh.rx"; ry: "eh.ry"; rz: "eh.rz"; sa: "eh.sa"; sb: "eh.sb"; sc: "eh.sc"; sd: "eh.sd"; se: "eh.se"; sf: "eh.sf"; sg: "eh.sg"; sh: "eh.sh"; si: "eh.si"; sj: "eh.sj"; sk: "eh.sk"; sl: "eh.sl"; sm: "eh.sm"; sn: "eh.sn"; so: "eh.so"; sp: "eh.sp"; sq: "eh.sq"; sr: "eh.sr"; ss: "eh.ss"; st: "eh.st"; su: "eh.su"; sv: "eh.sv"; sw: "eh.sw"; sx: "eh.sx"; sy: "eh.sy"; sz: "eh.sz"; ta: "eh.ta"; tb: "eh.tb"; tc: "eh.tc"; td: "eh.td"; te: "eh.te"; tf: "eh.tf"; tg: "eh.tg"; th: "eh.th"; ti: "eh.ti"; tj: "eh.tj"; tk: "eh.tk"; tl: "eh.tl"; tm: "eh.tm"; tn: "eh.tn"; to: "eh.to"; tp: "eh.tp"; tq: "eh.tq"; tr: "eh.tr"; ts: "eh.ts"; tt: "eh.tt"; tu: "eh.tu"; tv: "eh.tv"; tw: "eh.tw"; tx: "eh.tx"; ty: "eh.ty"; tz: "eh.tz"; ua: "eh.ua"; ub: "eh.ub"; uc: "eh.uc"; ud: "eh.ud"; ue: "eh.ue"; uf: "eh.uf"; ug: "eh.ug"; uh: "eh.uh"; ui: "eh.ui"; uj: "eh.uj"; uk: "eh.uk"; ul: "eh.ul"; um: "eh.um"; un: "eh.un"; uo: "eh.uo"; up: "eh.up"; uq: "eh.uq"; ur: "eh.ur"; us: "eh.us"; ut: "eh.ut"; uu: "eh.uu"; uv: "eh.uv"; uw: "eh.uw"; ux: "eh.ux"; uy: "eh.uy"; uz: "eh.uz"; va: "eh.va"; vb: "eh.vb"; vc: "eh.vc"; vd: "eh.vd"; ve: "eh.ve"; vf: "eh.vf"; vg: "eh.vg"; vh: "eh.vh"; vi: "eh.vi"; vj: "eh.vj"; vk: "eh.vk"; vl: "eh.vl"; vm: "eh.vm"; vn: "eh.vn"; vo: "eh.vo"; vp: "eh.vp"; vq: "eh.vq"; vr: "eh.vr"; vs: "eh.vs"; vt: "eh.vt"; vu: "eh.vu"; vv: "eh.vv"; vw: "eh.vw"; vx: "eh.vx"; vy: "eh.vy"; vz: "eh.vz"; wa: "eh.wa"; wb: "eh.wb"; wc: "eh.wc"; wd: "eh.wd"; we: "eh.we"; wf: "eh.wf"; wg: "eh.wg"; wh: "eh.wh"; wi: "eh.wi"; wj: "eh.wj"; wk: "eh.wk"; wl: "eh.wl"; wm: "eh.wm"; wn: "eh.wn"; wo: "eh.wo"; wp: "eh.wp"; wq: "eh.wq"; wr: "eh.wr"; ws: "eh.ws"; wt: "eh.wt"; wu: "eh.wu"; wv: "eh.wv"; ww: "eh.ww"; wx: "eh.wx"; wy: "eh.wy"; wz: "eh.wz"; xa: "eh.xa"; xb: "eh.xb"; xc: "eh.xc"; xd: "eh.xd"; xe: "eh.xe"; xf: "eh.xf"; xg: "eh.xg"; xh: "eh.xh"; xi: "eh.xi"; xj: "eh.xj"; xk: "eh.xk"; xl: "eh.xl"; xm: "eh.xm"; xn: "eh.xn"; xo: "eh.xo"; xp: "eh.xp"; xq: "eh.xq"; xr: "eh.xr"; xs: "eh.xs"; xt: "eh.xt"; xu: "eh.xu"; xv: "eh.xv"; xw: "eh.xw"; xx: "eh.xx"; xy: "eh.xy"; xz: "eh.xz"; ya: "eh.ya"; yb: "eh.yb"; yc: "eh.yc"; yd: "eh.yd"; ye: "eh.ye"; yf: "eh.yf"; yg: "eh.yg"; yh: "eh.yh"; yi: "eh.yi"; yj: "eh.yj"; yk: "eh.yk"; yl: "eh.yl"; ym: "eh.ym"; yn: "eh.yn"; yo: "eh.yo"; yp: "eh.yp"; yq: "eh.yq"; yr: "eh.yr"; ys: "eh.ys"; yt: "eh.yt"; yu: "eh.yu"; yv: "eh.yv"; yw: "eh.yw"; yx: "eh.yx"; yy: "eh.yy"; yz: "eh.yz"; za: "eh.za"; zb: "eh.zb"; zc: "eh.zc"; zd: "eh.zd"; ze: "eh.ze"; zf: "eh.zf"; zg: "eh.zg"; zh: "eh.zh"; zi: "eh.zi"; zj: "eh.zj"; zk: "eh.zk"; zl: "eh.zl"; zm: "eh.zm"; zn: "eh.zn"; zo: "eh.zo"; zp: "eh.zp"; zq: "eh.zq"; zr: "eh.zr"; zs: "eh.zs"; zt: "eh.zt"; zu: "eh.zu"; zv: "eh.zv"; zw: "eh.zw"; zx: "eh.zx"; zy: "eh.zy"; zz: "eh.zz"; }; ei: { aa: "ei.aa"; ab: "ei.ab"; ac: "ei.ac"; ad: "ei.ad"; ae: "ei.ae"; af: "ei.af"; ag: "ei.ag"; ah: "ei.ah"; ai: "ei.ai"; aj: "ei.aj"; ak: "ei.ak"; al: "ei.al"; am: "ei.am"; an: "ei.an"; ao: "ei.ao"; ap: "ei.ap"; aq: "ei.aq"; ar: "ei.ar"; as: "ei.as"; at: "ei.at"; au: "ei.au"; av: "ei.av"; aw: "ei.aw"; ax: "ei.ax"; ay: "ei.ay"; az: "ei.az"; ba: "ei.ba"; bb: "ei.bb"; bc: "ei.bc"; bd: "ei.bd"; be: "ei.be"; bf: "ei.bf"; bg: "ei.bg"; bh: "ei.bh"; bi: "ei.bi"; bj: "ei.bj"; bk: "ei.bk"; bl: "ei.bl"; bm: "ei.bm"; bn: "ei.bn"; bo: "ei.bo"; bp: "ei.bp"; bq: "ei.bq"; br: "ei.br"; bs: "ei.bs"; bt: "ei.bt"; bu: "ei.bu"; bv: "ei.bv"; bw: "ei.bw"; bx: "ei.bx"; by: "ei.by"; bz: "ei.bz"; ca: "ei.ca"; cb: "ei.cb"; cc: "ei.cc"; cd: "ei.cd"; ce: "ei.ce"; cf: "ei.cf"; cg: "ei.cg"; ch: "ei.ch"; ci: "ei.ci"; cj: "ei.cj"; ck: "ei.ck"; cl: "ei.cl"; cm: "ei.cm"; cn: "ei.cn"; co: "ei.co"; cp: "ei.cp"; cq: "ei.cq"; cr: "ei.cr"; cs: "ei.cs"; ct: "ei.ct"; cu: "ei.cu"; cv: "ei.cv"; cw: "ei.cw"; cx: "ei.cx"; cy: "ei.cy"; cz: "ei.cz"; da: "ei.da"; db: "ei.db"; dc: "ei.dc"; dd: "ei.dd"; de: "ei.de"; df: "ei.df"; dg: "ei.dg"; dh: "ei.dh"; di: "ei.di"; dj: "ei.dj"; dk: "ei.dk"; dl: "ei.dl"; dm: "ei.dm"; dn: "ei.dn"; do: "ei.do"; dp: "ei.dp"; dq: "ei.dq"; dr: "ei.dr"; ds: "ei.ds"; dt: "ei.dt"; du: "ei.du"; dv: "ei.dv"; dw: "ei.dw"; dx: "ei.dx"; dy: "ei.dy"; dz: "ei.dz"; ea: "ei.ea"; eb: "ei.eb"; ec: "ei.ec"; ed: "ei.ed"; ee: "ei.ee"; ef: "ei.ef"; eg: "ei.eg"; eh: "ei.eh"; ei: "ei.ei"; ej: "ei.ej"; ek: "ei.ek"; el: "ei.el"; em: "ei.em"; en: "ei.en"; eo: "ei.eo"; ep: "ei.ep"; eq: "ei.eq"; er: "ei.er"; es: "ei.es"; et: "ei.et"; eu: "ei.eu"; ev: "ei.ev"; ew: "ei.ew"; ex: "ei.ex"; ey: "ei.ey"; ez: "ei.ez"; fa: "ei.fa"; fb: "ei.fb"; fc: "ei.fc"; fd: "ei.fd"; fe: "ei.fe"; ff: "ei.ff"; fg: "ei.fg"; fh: "ei.fh"; fi: "ei.fi"; fj: "ei.fj"; fk: "ei.fk"; fl: "ei.fl"; fm: "ei.fm"; fn: "ei.fn"; fo: "ei.fo"; fp: "ei.fp"; fq: "ei.fq"; fr: "ei.fr"; fs: "ei.fs"; ft: "ei.ft"; fu: "ei.fu"; fv: "ei.fv"; fw: "ei.fw"; fx: "ei.fx"; fy: "ei.fy"; fz: "ei.fz"; ga: "ei.ga"; gb: "ei.gb"; gc: "ei.gc"; gd: "ei.gd"; ge: "ei.ge"; gf: "ei.gf"; gg: "ei.gg"; gh: "ei.gh"; gi: "ei.gi"; gj: "ei.gj"; gk: "ei.gk"; gl: "ei.gl"; gm: "ei.gm"; gn: "ei.gn"; go: "ei.go"; gp: "ei.gp"; gq: "ei.gq"; gr: "ei.gr"; gs: "ei.gs"; gt: "ei.gt"; gu: "ei.gu"; gv: "ei.gv"; gw: "ei.gw"; gx: "ei.gx"; gy: "ei.gy"; gz: "ei.gz"; ha: "ei.ha"; hb: "ei.hb"; hc: "ei.hc"; hd: "ei.hd"; he: "ei.he"; hf: "ei.hf"; hg: "ei.hg"; hh: "ei.hh"; hi: "ei.hi"; hj: "ei.hj"; hk: "ei.hk"; hl: "ei.hl"; hm: "ei.hm"; hn: "ei.hn"; ho: "ei.ho"; hp: "ei.hp"; hq: "ei.hq"; hr: "ei.hr"; hs: "ei.hs"; ht: "ei.ht"; hu: "ei.hu"; hv: "ei.hv"; hw: "ei.hw"; hx: "ei.hx"; hy: "ei.hy"; hz: "ei.hz"; ia: "ei.ia"; ib: "ei.ib"; ic: "ei.ic"; id: "ei.id"; ie: "ei.ie"; if: "ei.if"; ig: "ei.ig"; ih: "ei.ih"; ii: "ei.ii"; ij: "ei.ij"; ik: "ei.ik"; il: "ei.il"; im: "ei.im"; in: "ei.in"; io: "ei.io"; ip: "ei.ip"; iq: "ei.iq"; ir: "ei.ir"; is: "ei.is"; it: "ei.it"; iu: "ei.iu"; iv: "ei.iv"; iw: "ei.iw"; ix: "ei.ix"; iy: "ei.iy"; iz: "ei.iz"; ja: "ei.ja"; jb: "ei.jb"; jc: "ei.jc"; jd: "ei.jd"; je: "ei.je"; jf: "ei.jf"; jg: "ei.jg"; jh: "ei.jh"; ji: "ei.ji"; jj: "ei.jj"; jk: "ei.jk"; jl: "ei.jl"; jm: "ei.jm"; jn: "ei.jn"; jo: "ei.jo"; jp: "ei.jp"; jq: "ei.jq"; jr: "ei.jr"; js: "ei.js"; jt: "ei.jt"; ju: "ei.ju"; jv: "ei.jv"; jw: "ei.jw"; jx: "ei.jx"; jy: "ei.jy"; jz: "ei.jz"; ka: "ei.ka"; kb: "ei.kb"; kc: "ei.kc"; kd: "ei.kd"; ke: "ei.ke"; kf: "ei.kf"; kg: "ei.kg"; kh: "ei.kh"; ki: "ei.ki"; kj: "ei.kj"; kk: "ei.kk"; kl: "ei.kl"; km: "ei.km"; kn: "ei.kn"; ko: "ei.ko"; kp: "ei.kp"; kq: "ei.kq"; kr: "ei.kr"; ks: "ei.ks"; kt: "ei.kt"; ku: "ei.ku"; kv: "ei.kv"; kw: "ei.kw"; kx: "ei.kx"; ky: "ei.ky"; kz: "ei.kz"; la: "ei.la"; lb: "ei.lb"; lc: "ei.lc"; ld: "ei.ld"; le: "ei.le"; lf: "ei.lf"; lg: "ei.lg"; lh: "ei.lh"; li: "ei.li"; lj: "ei.lj"; lk: "ei.lk"; ll: "ei.ll"; lm: "ei.lm"; ln: "ei.ln"; lo: "ei.lo"; lp: "ei.lp"; lq: "ei.lq"; lr: "ei.lr"; ls: "ei.ls"; lt: "ei.lt"; lu: "ei.lu"; lv: "ei.lv"; lw: "ei.lw"; lx: "ei.lx"; ly: "ei.ly"; lz: "ei.lz"; ma: "ei.ma"; mb: "ei.mb"; mc: "ei.mc"; md: "ei.md"; me: "ei.me"; mf: "ei.mf"; mg: "ei.mg"; mh: "ei.mh"; mi: "ei.mi"; mj: "ei.mj"; mk: "ei.mk"; ml: "ei.ml"; mm: "ei.mm"; mn: "ei.mn"; mo: "ei.mo"; mp: "ei.mp"; mq: "ei.mq"; mr: "ei.mr"; ms: "ei.ms"; mt: "ei.mt"; mu: "ei.mu"; mv: "ei.mv"; mw: "ei.mw"; mx: "ei.mx"; my: "ei.my"; mz: "ei.mz"; na: "ei.na"; nb: "ei.nb"; nc: "ei.nc"; nd: "ei.nd"; ne: "ei.ne"; nf: "ei.nf"; ng: "ei.ng"; nh: "ei.nh"; ni: "ei.ni"; nj: "ei.nj"; nk: "ei.nk"; nl: "ei.nl"; nm: "ei.nm"; nn: "ei.nn"; no: "ei.no"; np: "ei.np"; nq: "ei.nq"; nr: "ei.nr"; ns: "ei.ns"; nt: "ei.nt"; nu: "ei.nu"; nv: "ei.nv"; nw: "ei.nw"; nx: "ei.nx"; ny: "ei.ny"; nz: "ei.nz"; oa: "ei.oa"; ob: "ei.ob"; oc: "ei.oc"; od: "ei.od"; oe: "ei.oe"; of: "ei.of"; og: "ei.og"; oh: "ei.oh"; oi: "ei.oi"; oj: "ei.oj"; ok: "ei.ok"; ol: "ei.ol"; om: "ei.om"; on: "ei.on"; oo: "ei.oo"; op: "ei.op"; oq: "ei.oq"; or: "ei.or"; os: "ei.os"; ot: "ei.ot"; ou: "ei.ou"; ov: "ei.ov"; ow: "ei.ow"; ox: "ei.ox"; oy: "ei.oy"; oz: "ei.oz"; pa: "ei.pa"; pb: "ei.pb"; pc: "ei.pc"; pd: "ei.pd"; pe: "ei.pe"; pf: "ei.pf"; pg: "ei.pg"; ph: "ei.ph"; pi: "ei.pi"; pj: "ei.pj"; pk: "ei.pk"; pl: "ei.pl"; pm: "ei.pm"; pn: "ei.pn"; po: "ei.po"; pp: "ei.pp"; pq: "ei.pq"; pr: "ei.pr"; ps: "ei.ps"; pt: "ei.pt"; pu: "ei.pu"; pv: "ei.pv"; pw: "ei.pw"; px: "ei.px"; py: "ei.py"; pz: "ei.pz"; qa: "ei.qa"; qb: "ei.qb"; qc: "ei.qc"; qd: "ei.qd"; qe: "ei.qe"; qf: "ei.qf"; qg: "ei.qg"; qh: "ei.qh"; qi: "ei.qi"; qj: "ei.qj"; qk: "ei.qk"; ql: "ei.ql"; qm: "ei.qm"; qn: "ei.qn"; qo: "ei.qo"; qp: "ei.qp"; qq: "ei.qq"; qr: "ei.qr"; qs: "ei.qs"; qt: "ei.qt"; qu: "ei.qu"; qv: "ei.qv"; qw: "ei.qw"; qx: "ei.qx"; qy: "ei.qy"; qz: "ei.qz"; ra: "ei.ra"; rb: "ei.rb"; rc: "ei.rc"; rd: "ei.rd"; re: "ei.re"; rf: "ei.rf"; rg: "ei.rg"; rh: "ei.rh"; ri: "ei.ri"; rj: "ei.rj"; rk: "ei.rk"; rl: "ei.rl"; rm: "ei.rm"; rn: "ei.rn"; ro: "ei.ro"; rp: "ei.rp"; rq: "ei.rq"; rr: "ei.rr"; rs: "ei.rs"; rt: "ei.rt"; ru: "ei.ru"; rv: "ei.rv"; rw: "ei.rw"; rx: "ei.rx"; ry: "ei.ry"; rz: "ei.rz"; sa: "ei.sa"; sb: "ei.sb"; sc: "ei.sc"; sd: "ei.sd"; se: "ei.se"; sf: "ei.sf"; sg: "ei.sg"; sh: "ei.sh"; si: "ei.si"; sj: "ei.sj"; sk: "ei.sk"; sl: "ei.sl"; sm: "ei.sm"; sn: "ei.sn"; so: "ei.so"; sp: "ei.sp"; sq: "ei.sq"; sr: "ei.sr"; ss: "ei.ss"; st: "ei.st"; su: "ei.su"; sv: "ei.sv"; sw: "ei.sw"; sx: "ei.sx"; sy: "ei.sy"; sz: "ei.sz"; ta: "ei.ta"; tb: "ei.tb"; tc: "ei.tc"; td: "ei.td"; te: "ei.te"; tf: "ei.tf"; tg: "ei.tg"; th: "ei.th"; ti: "ei.ti"; tj: "ei.tj"; tk: "ei.tk"; tl: "ei.tl"; tm: "ei.tm"; tn: "ei.tn"; to: "ei.to"; tp: "ei.tp"; tq: "ei.tq"; tr: "ei.tr"; ts: "ei.ts"; tt: "ei.tt"; tu: "ei.tu"; tv: "ei.tv"; tw: "ei.tw"; tx: "ei.tx"; ty: "ei.ty"; tz: "ei.tz"; ua: "ei.ua"; ub: "ei.ub"; uc: "ei.uc"; ud: "ei.ud"; ue: "ei.ue"; uf: "ei.uf"; ug: "ei.ug"; uh: "ei.uh"; ui: "ei.ui"; uj: "ei.uj"; uk: "ei.uk"; ul: "ei.ul"; um: "ei.um"; un: "ei.un"; uo: "ei.uo"; up: "ei.up"; uq: "ei.uq"; ur: "ei.ur"; us: "ei.us"; ut: "ei.ut"; uu: "ei.uu"; uv: "ei.uv"; uw: "ei.uw"; ux: "ei.ux"; uy: "ei.uy"; uz: "ei.uz"; va: "ei.va"; vb: "ei.vb"; vc: "ei.vc"; vd: "ei.vd"; ve: "ei.ve"; vf: "ei.vf"; vg: "ei.vg"; vh: "ei.vh"; vi: "ei.vi"; vj: "ei.vj"; vk: "ei.vk"; vl: "ei.vl"; vm: "ei.vm"; vn: "ei.vn"; vo: "ei.vo"; vp: "ei.vp"; vq: "ei.vq"; vr: "ei.vr"; vs: "ei.vs"; vt: "ei.vt"; vu: "ei.vu"; vv: "ei.vv"; vw: "ei.vw"; vx: "ei.vx"; vy: "ei.vy"; vz: "ei.vz"; wa: "ei.wa"; wb: "ei.wb"; wc: "ei.wc"; wd: "ei.wd"; we: "ei.we"; wf: "ei.wf"; wg: "ei.wg"; wh: "ei.wh"; wi: "ei.wi"; wj: "ei.wj"; wk: "ei.wk"; wl: "ei.wl"; wm: "ei.wm"; wn: "ei.wn"; wo: "ei.wo"; wp: "ei.wp"; wq: "ei.wq"; wr: "ei.wr"; ws: "ei.ws"; wt: "ei.wt"; wu: "ei.wu"; wv: "ei.wv"; ww: "ei.ww"; wx: "ei.wx"; wy: "ei.wy"; wz: "ei.wz"; xa: "ei.xa"; xb: "ei.xb"; xc: "ei.xc"; xd: "ei.xd"; xe: "ei.xe"; xf: "ei.xf"; xg: "ei.xg"; xh: "ei.xh"; xi: "ei.xi"; xj: "ei.xj"; xk: "ei.xk"; xl: "ei.xl"; xm: "ei.xm"; xn: "ei.xn"; xo: "ei.xo"; xp: "ei.xp"; xq: "ei.xq"; xr: "ei.xr"; xs: "ei.xs"; xt: "ei.xt"; xu: "ei.xu"; xv: "ei.xv"; xw: "ei.xw"; xx: "ei.xx"; xy: "ei.xy"; xz: "ei.xz"; ya: "ei.ya"; yb: "ei.yb"; yc: "ei.yc"; yd: "ei.yd"; ye: "ei.ye"; yf: "ei.yf"; yg: "ei.yg"; yh: "ei.yh"; yi: "ei.yi"; yj: "ei.yj"; yk: "ei.yk"; yl: "ei.yl"; ym: "ei.ym"; yn: "ei.yn"; yo: "ei.yo"; yp: "ei.yp"; yq: "ei.yq"; yr: "ei.yr"; ys: "ei.ys"; yt: "ei.yt"; yu: "ei.yu"; yv: "ei.yv"; yw: "ei.yw"; yx: "ei.yx"; yy: "ei.yy"; yz: "ei.yz"; za: "ei.za"; zb: "ei.zb"; zc: "ei.zc"; zd: "ei.zd"; ze: "ei.ze"; zf: "ei.zf"; zg: "ei.zg"; zh: "ei.zh"; zi: "ei.zi"; zj: "ei.zj"; zk: "ei.zk"; zl: "ei.zl"; zm: "ei.zm"; zn: "ei.zn"; zo: "ei.zo"; zp: "ei.zp"; zq: "ei.zq"; zr: "ei.zr"; zs: "ei.zs"; zt: "ei.zt"; zu: "ei.zu"; zv: "ei.zv"; zw: "ei.zw"; zx: "ei.zx"; zy: "ei.zy"; zz: "ei.zz"; }; ej: { aa: "ej.aa"; ab: "ej.ab"; ac: "ej.ac"; ad: "ej.ad"; ae: "ej.ae"; af: "ej.af"; ag: "ej.ag"; ah: "ej.ah"; ai: "ej.ai"; aj: "ej.aj"; ak: "ej.ak"; al: "ej.al"; am: "ej.am"; an: "ej.an"; ao: "ej.ao"; ap: "ej.ap"; aq: "ej.aq"; ar: "ej.ar"; as: "ej.as"; at: "ej.at"; au: "ej.au"; av: "ej.av"; aw: "ej.aw"; ax: "ej.ax"; ay: "ej.ay"; az: "ej.az"; ba: "ej.ba"; bb: "ej.bb"; bc: "ej.bc"; bd: "ej.bd"; be: "ej.be"; bf: "ej.bf"; bg: "ej.bg"; bh: "ej.bh"; bi: "ej.bi"; bj: "ej.bj"; bk: "ej.bk"; bl: "ej.bl"; bm: "ej.bm"; bn: "ej.bn"; bo: "ej.bo"; bp: "ej.bp"; bq: "ej.bq"; br: "ej.br"; bs: "ej.bs"; bt: "ej.bt"; bu: "ej.bu"; bv: "ej.bv"; bw: "ej.bw"; bx: "ej.bx"; by: "ej.by"; bz: "ej.bz"; ca: "ej.ca"; cb: "ej.cb"; cc: "ej.cc"; cd: "ej.cd"; ce: "ej.ce"; cf: "ej.cf"; cg: "ej.cg"; ch: "ej.ch"; ci: "ej.ci"; cj: "ej.cj"; ck: "ej.ck"; cl: "ej.cl"; cm: "ej.cm"; cn: "ej.cn"; co: "ej.co"; cp: "ej.cp"; cq: "ej.cq"; cr: "ej.cr"; cs: "ej.cs"; ct: "ej.ct"; cu: "ej.cu"; cv: "ej.cv"; cw: "ej.cw"; cx: "ej.cx"; cy: "ej.cy"; cz: "ej.cz"; da: "ej.da"; db: "ej.db"; dc: "ej.dc"; dd: "ej.dd"; de: "ej.de"; df: "ej.df"; dg: "ej.dg"; dh: "ej.dh"; di: "ej.di"; dj: "ej.dj"; dk: "ej.dk"; dl: "ej.dl"; dm: "ej.dm"; dn: "ej.dn"; do: "ej.do"; dp: "ej.dp"; dq: "ej.dq"; dr: "ej.dr"; ds: "ej.ds"; dt: "ej.dt"; du: "ej.du"; dv: "ej.dv"; dw: "ej.dw"; dx: "ej.dx"; dy: "ej.dy"; dz: "ej.dz"; ea: "ej.ea"; eb: "ej.eb"; ec: "ej.ec"; ed: "ej.ed"; ee: "ej.ee"; ef: "ej.ef"; eg: "ej.eg"; eh: "ej.eh"; ei: "ej.ei"; ej: "ej.ej"; ek: "ej.ek"; el: "ej.el"; em: "ej.em"; en: "ej.en"; eo: "ej.eo"; ep: "ej.ep"; eq: "ej.eq"; er: "ej.er"; es: "ej.es"; et: "ej.et"; eu: "ej.eu"; ev: "ej.ev"; ew: "ej.ew"; ex: "ej.ex"; ey: "ej.ey"; ez: "ej.ez"; fa: "ej.fa"; fb: "ej.fb"; fc: "ej.fc"; fd: "ej.fd"; fe: "ej.fe"; ff: "ej.ff"; fg: "ej.fg"; fh: "ej.fh"; fi: "ej.fi"; fj: "ej.fj"; fk: "ej.fk"; fl: "ej.fl"; fm: "ej.fm"; fn: "ej.fn"; fo: "ej.fo"; fp: "ej.fp"; fq: "ej.fq"; fr: "ej.fr"; fs: "ej.fs"; ft: "ej.ft"; fu: "ej.fu"; fv: "ej.fv"; fw: "ej.fw"; fx: "ej.fx"; fy: "ej.fy"; fz: "ej.fz"; ga: "ej.ga"; gb: "ej.gb"; gc: "ej.gc"; gd: "ej.gd"; ge: "ej.ge"; gf: "ej.gf"; gg: "ej.gg"; gh: "ej.gh"; gi: "ej.gi"; gj: "ej.gj"; gk: "ej.gk"; gl: "ej.gl"; gm: "ej.gm"; gn: "ej.gn"; go: "ej.go"; gp: "ej.gp"; gq: "ej.gq"; gr: "ej.gr"; gs: "ej.gs"; gt: "ej.gt"; gu: "ej.gu"; gv: "ej.gv"; gw: "ej.gw"; gx: "ej.gx"; gy: "ej.gy"; gz: "ej.gz"; ha: "ej.ha"; hb: "ej.hb"; hc: "ej.hc"; hd: "ej.hd"; he: "ej.he"; hf: "ej.hf"; hg: "ej.hg"; hh: "ej.hh"; hi: "ej.hi"; hj: "ej.hj"; hk: "ej.hk"; hl: "ej.hl"; hm: "ej.hm"; hn: "ej.hn"; ho: "ej.ho"; hp: "ej.hp"; hq: "ej.hq"; hr: "ej.hr"; hs: "ej.hs"; ht: "ej.ht"; hu: "ej.hu"; hv: "ej.hv"; hw: "ej.hw"; hx: "ej.hx"; hy: "ej.hy"; hz: "ej.hz"; ia: "ej.ia"; ib: "ej.ib"; ic: "ej.ic"; id: "ej.id"; ie: "ej.ie"; if: "ej.if"; ig: "ej.ig"; ih: "ej.ih"; ii: "ej.ii"; ij: "ej.ij"; ik: "ej.ik"; il: "ej.il"; im: "ej.im"; in: "ej.in"; io: "ej.io"; ip: "ej.ip"; iq: "ej.iq"; ir: "ej.ir"; is: "ej.is"; it: "ej.it"; iu: "ej.iu"; iv: "ej.iv"; iw: "ej.iw"; ix: "ej.ix"; iy: "ej.iy"; iz: "ej.iz"; ja: "ej.ja"; jb: "ej.jb"; jc: "ej.jc"; jd: "ej.jd"; je: "ej.je"; jf: "ej.jf"; jg: "ej.jg"; jh: "ej.jh"; ji: "ej.ji"; jj: "ej.jj"; jk: "ej.jk"; jl: "ej.jl"; jm: "ej.jm"; jn: "ej.jn"; jo: "ej.jo"; jp: "ej.jp"; jq: "ej.jq"; jr: "ej.jr"; js: "ej.js"; jt: "ej.jt"; ju: "ej.ju"; jv: "ej.jv"; jw: "ej.jw"; jx: "ej.jx"; jy: "ej.jy"; jz: "ej.jz"; ka: "ej.ka"; kb: "ej.kb"; kc: "ej.kc"; kd: "ej.kd"; ke: "ej.ke"; kf: "ej.kf"; kg: "ej.kg"; kh: "ej.kh"; ki: "ej.ki"; kj: "ej.kj"; kk: "ej.kk"; kl: "ej.kl"; km: "ej.km"; kn: "ej.kn"; ko: "ej.ko"; kp: "ej.kp"; kq: "ej.kq"; kr: "ej.kr"; ks: "ej.ks"; kt: "ej.kt"; ku: "ej.ku"; kv: "ej.kv"; kw: "ej.kw"; kx: "ej.kx"; ky: "ej.ky"; kz: "ej.kz"; la: "ej.la"; lb: "ej.lb"; lc: "ej.lc"; ld: "ej.ld"; le: "ej.le"; lf: "ej.lf"; lg: "ej.lg"; lh: "ej.lh"; li: "ej.li"; lj: "ej.lj"; lk: "ej.lk"; ll: "ej.ll"; lm: "ej.lm"; ln: "ej.ln"; lo: "ej.lo"; lp: "ej.lp"; lq: "ej.lq"; lr: "ej.lr"; ls: "ej.ls"; lt: "ej.lt"; lu: "ej.lu"; lv: "ej.lv"; lw: "ej.lw"; lx: "ej.lx"; ly: "ej.ly"; lz: "ej.lz"; ma: "ej.ma"; mb: "ej.mb"; mc: "ej.mc"; md: "ej.md"; me: "ej.me"; mf: "ej.mf"; mg: "ej.mg"; mh: "ej.mh"; mi: "ej.mi"; mj: "ej.mj"; mk: "ej.mk"; ml: "ej.ml"; mm: "ej.mm"; mn: "ej.mn"; mo: "ej.mo"; mp: "ej.mp"; mq: "ej.mq"; mr: "ej.mr"; ms: "ej.ms"; mt: "ej.mt"; mu: "ej.mu"; mv: "ej.mv"; mw: "ej.mw"; mx: "ej.mx"; my: "ej.my"; mz: "ej.mz"; na: "ej.na"; nb: "ej.nb"; nc: "ej.nc"; nd: "ej.nd"; ne: "ej.ne"; nf: "ej.nf"; ng: "ej.ng"; nh: "ej.nh"; ni: "ej.ni"; nj: "ej.nj"; nk: "ej.nk"; nl: "ej.nl"; nm: "ej.nm"; nn: "ej.nn"; no: "ej.no"; np: "ej.np"; nq: "ej.nq"; nr: "ej.nr"; ns: "ej.ns"; nt: "ej.nt"; nu: "ej.nu"; nv: "ej.nv"; nw: "ej.nw"; nx: "ej.nx"; ny: "ej.ny"; nz: "ej.nz"; oa: "ej.oa"; ob: "ej.ob"; oc: "ej.oc"; od: "ej.od"; oe: "ej.oe"; of: "ej.of"; og: "ej.og"; oh: "ej.oh"; oi: "ej.oi"; oj: "ej.oj"; ok: "ej.ok"; ol: "ej.ol"; om: "ej.om"; on: "ej.on"; oo: "ej.oo"; op: "ej.op"; oq: "ej.oq"; or: "ej.or"; os: "ej.os"; ot: "ej.ot"; ou: "ej.ou"; ov: "ej.ov"; ow: "ej.ow"; ox: "ej.ox"; oy: "ej.oy"; oz: "ej.oz"; pa: "ej.pa"; pb: "ej.pb"; pc: "ej.pc"; pd: "ej.pd"; pe: "ej.pe"; pf: "ej.pf"; pg: "ej.pg"; ph: "ej.ph"; pi: "ej.pi"; pj: "ej.pj"; pk: "ej.pk"; pl: "ej.pl"; pm: "ej.pm"; pn: "ej.pn"; po: "ej.po"; pp: "ej.pp"; pq: "ej.pq"; pr: "ej.pr"; ps: "ej.ps"; pt: "ej.pt"; pu: "ej.pu"; pv: "ej.pv"; pw: "ej.pw"; px: "ej.px"; py: "ej.py"; pz: "ej.pz"; qa: "ej.qa"; qb: "ej.qb"; qc: "ej.qc"; qd: "ej.qd"; qe: "ej.qe"; qf: "ej.qf"; qg: "ej.qg"; qh: "ej.qh"; qi: "ej.qi"; qj: "ej.qj"; qk: "ej.qk"; ql: "ej.ql"; qm: "ej.qm"; qn: "ej.qn"; qo: "ej.qo"; qp: "ej.qp"; qq: "ej.qq"; qr: "ej.qr"; qs: "ej.qs"; qt: "ej.qt"; qu: "ej.qu"; qv: "ej.qv"; qw: "ej.qw"; qx: "ej.qx"; qy: "ej.qy"; qz: "ej.qz"; ra: "ej.ra"; rb: "ej.rb"; rc: "ej.rc"; rd: "ej.rd"; re: "ej.re"; rf: "ej.rf"; rg: "ej.rg"; rh: "ej.rh"; ri: "ej.ri"; rj: "ej.rj"; rk: "ej.rk"; rl: "ej.rl"; rm: "ej.rm"; rn: "ej.rn"; ro: "ej.ro"; rp: "ej.rp"; rq: "ej.rq"; rr: "ej.rr"; rs: "ej.rs"; rt: "ej.rt"; ru: "ej.ru"; rv: "ej.rv"; rw: "ej.rw"; rx: "ej.rx"; ry: "ej.ry"; rz: "ej.rz"; sa: "ej.sa"; sb: "ej.sb"; sc: "ej.sc"; sd: "ej.sd"; se: "ej.se"; sf: "ej.sf"; sg: "ej.sg"; sh: "ej.sh"; si: "ej.si"; sj: "ej.sj"; sk: "ej.sk"; sl: "ej.sl"; sm: "ej.sm"; sn: "ej.sn"; so: "ej.so"; sp: "ej.sp"; sq: "ej.sq"; sr: "ej.sr"; ss: "ej.ss"; st: "ej.st"; su: "ej.su"; sv: "ej.sv"; sw: "ej.sw"; sx: "ej.sx"; sy: "ej.sy"; sz: "ej.sz"; ta: "ej.ta"; tb: "ej.tb"; tc: "ej.tc"; td: "ej.td"; te: "ej.te"; tf: "ej.tf"; tg: "ej.tg"; th: "ej.th"; ti: "ej.ti"; tj: "ej.tj"; tk: "ej.tk"; tl: "ej.tl"; tm: "ej.tm"; tn: "ej.tn"; to: "ej.to"; tp: "ej.tp"; tq: "ej.tq"; tr: "ej.tr"; ts: "ej.ts"; tt: "ej.tt"; tu: "ej.tu"; tv: "ej.tv"; tw: "ej.tw"; tx: "ej.tx"; ty: "ej.ty"; tz: "ej.tz"; ua: "ej.ua"; ub: "ej.ub"; uc: "ej.uc"; ud: "ej.ud"; ue: "ej.ue"; uf: "ej.uf"; ug: "ej.ug"; uh: "ej.uh"; ui: "ej.ui"; uj: "ej.uj"; uk: "ej.uk"; ul: "ej.ul"; um: "ej.um"; un: "ej.un"; uo: "ej.uo"; up: "ej.up"; uq: "ej.uq"; ur: "ej.ur"; us: "ej.us"; ut: "ej.ut"; uu: "ej.uu"; uv: "ej.uv"; uw: "ej.uw"; ux: "ej.ux"; uy: "ej.uy"; uz: "ej.uz"; va: "ej.va"; vb: "ej.vb"; vc: "ej.vc"; vd: "ej.vd"; ve: "ej.ve"; vf: "ej.vf"; vg: "ej.vg"; vh: "ej.vh"; vi: "ej.vi"; vj: "ej.vj"; vk: "ej.vk"; vl: "ej.vl"; vm: "ej.vm"; vn: "ej.vn"; vo: "ej.vo"; vp: "ej.vp"; vq: "ej.vq"; vr: "ej.vr"; vs: "ej.vs"; vt: "ej.vt"; vu: "ej.vu"; vv: "ej.vv"; vw: "ej.vw"; vx: "ej.vx"; vy: "ej.vy"; vz: "ej.vz"; wa: "ej.wa"; wb: "ej.wb"; wc: "ej.wc"; wd: "ej.wd"; we: "ej.we"; wf: "ej.wf"; wg: "ej.wg"; wh: "ej.wh"; wi: "ej.wi"; wj: "ej.wj"; wk: "ej.wk"; wl: "ej.wl"; wm: "ej.wm"; wn: "ej.wn"; wo: "ej.wo"; wp: "ej.wp"; wq: "ej.wq"; wr: "ej.wr"; ws: "ej.ws"; wt: "ej.wt"; wu: "ej.wu"; wv: "ej.wv"; ww: "ej.ww"; wx: "ej.wx"; wy: "ej.wy"; wz: "ej.wz"; xa: "ej.xa"; xb: "ej.xb"; xc: "ej.xc"; xd: "ej.xd"; xe: "ej.xe"; xf: "ej.xf"; xg: "ej.xg"; xh: "ej.xh"; xi: "ej.xi"; xj: "ej.xj"; xk: "ej.xk"; xl: "ej.xl"; xm: "ej.xm"; xn: "ej.xn"; xo: "ej.xo"; xp: "ej.xp"; xq: "ej.xq"; xr: "ej.xr"; xs: "ej.xs"; xt: "ej.xt"; xu: "ej.xu"; xv: "ej.xv"; xw: "ej.xw"; xx: "ej.xx"; xy: "ej.xy"; xz: "ej.xz"; ya: "ej.ya"; yb: "ej.yb"; yc: "ej.yc"; yd: "ej.yd"; ye: "ej.ye"; yf: "ej.yf"; yg: "ej.yg"; yh: "ej.yh"; yi: "ej.yi"; yj: "ej.yj"; yk: "ej.yk"; yl: "ej.yl"; ym: "ej.ym"; yn: "ej.yn"; yo: "ej.yo"; yp: "ej.yp"; yq: "ej.yq"; yr: "ej.yr"; ys: "ej.ys"; yt: "ej.yt"; yu: "ej.yu"; yv: "ej.yv"; yw: "ej.yw"; yx: "ej.yx"; yy: "ej.yy"; yz: "ej.yz"; za: "ej.za"; zb: "ej.zb"; zc: "ej.zc"; zd: "ej.zd"; ze: "ej.ze"; zf: "ej.zf"; zg: "ej.zg"; zh: "ej.zh"; zi: "ej.zi"; zj: "ej.zj"; zk: "ej.zk"; zl: "ej.zl"; zm: "ej.zm"; zn: "ej.zn"; zo: "ej.zo"; zp: "ej.zp"; zq: "ej.zq"; zr: "ej.zr"; zs: "ej.zs"; zt: "ej.zt"; zu: "ej.zu"; zv: "ej.zv"; zw: "ej.zw"; zx: "ej.zx"; zy: "ej.zy"; zz: "ej.zz"; }; ek: { aa: "ek.aa"; ab: "ek.ab"; ac: "ek.ac"; ad: "ek.ad"; ae: "ek.ae"; af: "ek.af"; ag: "ek.ag"; ah: "ek.ah"; ai: "ek.ai"; aj: "ek.aj"; ak: "ek.ak"; al: "ek.al"; am: "ek.am"; an: "ek.an"; ao: "ek.ao"; ap: "ek.ap"; aq: "ek.aq"; ar: "ek.ar"; as: "ek.as"; at: "ek.at"; au: "ek.au"; av: "ek.av"; aw: "ek.aw"; ax: "ek.ax"; ay: "ek.ay"; az: "ek.az"; ba: "ek.ba"; bb: "ek.bb"; bc: "ek.bc"; bd: "ek.bd"; be: "ek.be"; bf: "ek.bf"; bg: "ek.bg"; bh: "ek.bh"; bi: "ek.bi"; bj: "ek.bj"; bk: "ek.bk"; bl: "ek.bl"; bm: "ek.bm"; bn: "ek.bn"; bo: "ek.bo"; bp: "ek.bp"; bq: "ek.bq"; br: "ek.br"; bs: "ek.bs"; bt: "ek.bt"; bu: "ek.bu"; bv: "ek.bv"; bw: "ek.bw"; bx: "ek.bx"; by: "ek.by"; bz: "ek.bz"; ca: "ek.ca"; cb: "ek.cb"; cc: "ek.cc"; cd: "ek.cd"; ce: "ek.ce"; cf: "ek.cf"; cg: "ek.cg"; ch: "ek.ch"; ci: "ek.ci"; cj: "ek.cj"; ck: "ek.ck"; cl: "ek.cl"; cm: "ek.cm"; cn: "ek.cn"; co: "ek.co"; cp: "ek.cp"; cq: "ek.cq"; cr: "ek.cr"; cs: "ek.cs"; ct: "ek.ct"; cu: "ek.cu"; cv: "ek.cv"; cw: "ek.cw"; cx: "ek.cx"; cy: "ek.cy"; cz: "ek.cz"; da: "ek.da"; db: "ek.db"; dc: "ek.dc"; dd: "ek.dd"; de: "ek.de"; df: "ek.df"; dg: "ek.dg"; dh: "ek.dh"; di: "ek.di"; dj: "ek.dj"; dk: "ek.dk"; dl: "ek.dl"; dm: "ek.dm"; dn: "ek.dn"; do: "ek.do"; dp: "ek.dp"; dq: "ek.dq"; dr: "ek.dr"; ds: "ek.ds"; dt: "ek.dt"; du: "ek.du"; dv: "ek.dv"; dw: "ek.dw"; dx: "ek.dx"; dy: "ek.dy"; dz: "ek.dz"; ea: "ek.ea"; eb: "ek.eb"; ec: "ek.ec"; ed: "ek.ed"; ee: "ek.ee"; ef: "ek.ef"; eg: "ek.eg"; eh: "ek.eh"; ei: "ek.ei"; ej: "ek.ej"; ek: "ek.ek"; el: "ek.el"; em: "ek.em"; en: "ek.en"; eo: "ek.eo"; ep: "ek.ep"; eq: "ek.eq"; er: "ek.er"; es: "ek.es"; et: "ek.et"; eu: "ek.eu"; ev: "ek.ev"; ew: "ek.ew"; ex: "ek.ex"; ey: "ek.ey"; ez: "ek.ez"; fa: "ek.fa"; fb: "ek.fb"; fc: "ek.fc"; fd: "ek.fd"; fe: "ek.fe"; ff: "ek.ff"; fg: "ek.fg"; fh: "ek.fh"; fi: "ek.fi"; fj: "ek.fj"; fk: "ek.fk"; fl: "ek.fl"; fm: "ek.fm"; fn: "ek.fn"; fo: "ek.fo"; fp: "ek.fp"; fq: "ek.fq"; fr: "ek.fr"; fs: "ek.fs"; ft: "ek.ft"; fu: "ek.fu"; fv: "ek.fv"; fw: "ek.fw"; fx: "ek.fx"; fy: "ek.fy"; fz: "ek.fz"; ga: "ek.ga"; gb: "ek.gb"; gc: "ek.gc"; gd: "ek.gd"; ge: "ek.ge"; gf: "ek.gf"; gg: "ek.gg"; gh: "ek.gh"; gi: "ek.gi"; gj: "ek.gj"; gk: "ek.gk"; gl: "ek.gl"; gm: "ek.gm"; gn: "ek.gn"; go: "ek.go"; gp: "ek.gp"; gq: "ek.gq"; gr: "ek.gr"; gs: "ek.gs"; gt: "ek.gt"; gu: "ek.gu"; gv: "ek.gv"; gw: "ek.gw"; gx: "ek.gx"; gy: "ek.gy"; gz: "ek.gz"; ha: "ek.ha"; hb: "ek.hb"; hc: "ek.hc"; hd: "ek.hd"; he: "ek.he"; hf: "ek.hf"; hg: "ek.hg"; hh: "ek.hh"; hi: "ek.hi"; hj: "ek.hj"; hk: "ek.hk"; hl: "ek.hl"; hm: "ek.hm"; hn: "ek.hn"; ho: "ek.ho"; hp: "ek.hp"; hq: "ek.hq"; hr: "ek.hr"; hs: "ek.hs"; ht: "ek.ht"; hu: "ek.hu"; hv: "ek.hv"; hw: "ek.hw"; hx: "ek.hx"; hy: "ek.hy"; hz: "ek.hz"; ia: "ek.ia"; ib: "ek.ib"; ic: "ek.ic"; id: "ek.id"; ie: "ek.ie"; if: "ek.if"; ig: "ek.ig"; ih: "ek.ih"; ii: "ek.ii"; ij: "ek.ij"; ik: "ek.ik"; il: "ek.il"; im: "ek.im"; in: "ek.in"; io: "ek.io"; ip: "ek.ip"; iq: "ek.iq"; ir: "ek.ir"; is: "ek.is"; it: "ek.it"; iu: "ek.iu"; iv: "ek.iv"; iw: "ek.iw"; ix: "ek.ix"; iy: "ek.iy"; iz: "ek.iz"; ja: "ek.ja"; jb: "ek.jb"; jc: "ek.jc"; jd: "ek.jd"; je: "ek.je"; jf: "ek.jf"; jg: "ek.jg"; jh: "ek.jh"; ji: "ek.ji"; jj: "ek.jj"; jk: "ek.jk"; jl: "ek.jl"; jm: "ek.jm"; jn: "ek.jn"; jo: "ek.jo"; jp: "ek.jp"; jq: "ek.jq"; jr: "ek.jr"; js: "ek.js"; jt: "ek.jt"; ju: "ek.ju"; jv: "ek.jv"; jw: "ek.jw"; jx: "ek.jx"; jy: "ek.jy"; jz: "ek.jz"; ka: "ek.ka"; kb: "ek.kb"; kc: "ek.kc"; kd: "ek.kd"; ke: "ek.ke"; kf: "ek.kf"; kg: "ek.kg"; kh: "ek.kh"; ki: "ek.ki"; kj: "ek.kj"; kk: "ek.kk"; kl: "ek.kl"; km: "ek.km"; kn: "ek.kn"; ko: "ek.ko"; kp: "ek.kp"; kq: "ek.kq"; kr: "ek.kr"; ks: "ek.ks"; kt: "ek.kt"; ku: "ek.ku"; kv: "ek.kv"; kw: "ek.kw"; kx: "ek.kx"; ky: "ek.ky"; kz: "ek.kz"; la: "ek.la"; lb: "ek.lb"; lc: "ek.lc"; ld: "ek.ld"; le: "ek.le"; lf: "ek.lf"; lg: "ek.lg"; lh: "ek.lh"; li: "ek.li"; lj: "ek.lj"; lk: "ek.lk"; ll: "ek.ll"; lm: "ek.lm"; ln: "ek.ln"; lo: "ek.lo"; lp: "ek.lp"; lq: "ek.lq"; lr: "ek.lr"; ls: "ek.ls"; lt: "ek.lt"; lu: "ek.lu"; lv: "ek.lv"; lw: "ek.lw"; lx: "ek.lx"; ly: "ek.ly"; lz: "ek.lz"; ma: "ek.ma"; mb: "ek.mb"; mc: "ek.mc"; md: "ek.md"; me: "ek.me"; mf: "ek.mf"; mg: "ek.mg"; mh: "ek.mh"; mi: "ek.mi"; mj: "ek.mj"; mk: "ek.mk"; ml: "ek.ml"; mm: "ek.mm"; mn: "ek.mn"; mo: "ek.mo"; mp: "ek.mp"; mq: "ek.mq"; mr: "ek.mr"; ms: "ek.ms"; mt: "ek.mt"; mu: "ek.mu"; mv: "ek.mv"; mw: "ek.mw"; mx: "ek.mx"; my: "ek.my"; mz: "ek.mz"; na: "ek.na"; nb: "ek.nb"; nc: "ek.nc"; nd: "ek.nd"; ne: "ek.ne"; nf: "ek.nf"; ng: "ek.ng"; nh: "ek.nh"; ni: "ek.ni"; nj: "ek.nj"; nk: "ek.nk"; nl: "ek.nl"; nm: "ek.nm"; nn: "ek.nn"; no: "ek.no"; np: "ek.np"; nq: "ek.nq"; nr: "ek.nr"; ns: "ek.ns"; nt: "ek.nt"; nu: "ek.nu"; nv: "ek.nv"; nw: "ek.nw"; nx: "ek.nx"; ny: "ek.ny"; nz: "ek.nz"; oa: "ek.oa"; ob: "ek.ob"; oc: "ek.oc"; od: "ek.od"; oe: "ek.oe"; of: "ek.of"; og: "ek.og"; oh: "ek.oh"; oi: "ek.oi"; oj: "ek.oj"; ok: "ek.ok"; ol: "ek.ol"; om: "ek.om"; on: "ek.on"; oo: "ek.oo"; op: "ek.op"; oq: "ek.oq"; or: "ek.or"; os: "ek.os"; ot: "ek.ot"; ou: "ek.ou"; ov: "ek.ov"; ow: "ek.ow"; ox: "ek.ox"; oy: "ek.oy"; oz: "ek.oz"; pa: "ek.pa"; pb: "ek.pb"; pc: "ek.pc"; pd: "ek.pd"; pe: "ek.pe"; pf: "ek.pf"; pg: "ek.pg"; ph: "ek.ph"; pi: "ek.pi"; pj: "ek.pj"; pk: "ek.pk"; pl: "ek.pl"; pm: "ek.pm"; pn: "ek.pn"; po: "ek.po"; pp: "ek.pp"; pq: "ek.pq"; pr: "ek.pr"; ps: "ek.ps"; pt: "ek.pt"; pu: "ek.pu"; pv: "ek.pv"; pw: "ek.pw"; px: "ek.px"; py: "ek.py"; pz: "ek.pz"; qa: "ek.qa"; qb: "ek.qb"; qc: "ek.qc"; qd: "ek.qd"; qe: "ek.qe"; qf: "ek.qf"; qg: "ek.qg"; qh: "ek.qh"; qi: "ek.qi"; qj: "ek.qj"; qk: "ek.qk"; ql: "ek.ql"; qm: "ek.qm"; qn: "ek.qn"; qo: "ek.qo"; qp: "ek.qp"; qq: "ek.qq"; qr: "ek.qr"; qs: "ek.qs"; qt: "ek.qt"; qu: "ek.qu"; qv: "ek.qv"; qw: "ek.qw"; qx: "ek.qx"; qy: "ek.qy"; qz: "ek.qz"; ra: "ek.ra"; rb: "ek.rb"; rc: "ek.rc"; rd: "ek.rd"; re: "ek.re"; rf: "ek.rf"; rg: "ek.rg"; rh: "ek.rh"; ri: "ek.ri"; rj: "ek.rj"; rk: "ek.rk"; rl: "ek.rl"; rm: "ek.rm"; rn: "ek.rn"; ro: "ek.ro"; rp: "ek.rp"; rq: "ek.rq"; rr: "ek.rr"; rs: "ek.rs"; rt: "ek.rt"; ru: "ek.ru"; rv: "ek.rv"; rw: "ek.rw"; rx: "ek.rx"; ry: "ek.ry"; rz: "ek.rz"; sa: "ek.sa"; sb: "ek.sb"; sc: "ek.sc"; sd: "ek.sd"; se: "ek.se"; sf: "ek.sf"; sg: "ek.sg"; sh: "ek.sh"; si: "ek.si"; sj: "ek.sj"; sk: "ek.sk"; sl: "ek.sl"; sm: "ek.sm"; sn: "ek.sn"; so: "ek.so"; sp: "ek.sp"; sq: "ek.sq"; sr: "ek.sr"; ss: "ek.ss"; st: "ek.st"; su: "ek.su"; sv: "ek.sv"; sw: "ek.sw"; sx: "ek.sx"; sy: "ek.sy"; sz: "ek.sz"; ta: "ek.ta"; tb: "ek.tb"; tc: "ek.tc"; td: "ek.td"; te: "ek.te"; tf: "ek.tf"; tg: "ek.tg"; th: "ek.th"; ti: "ek.ti"; tj: "ek.tj"; tk: "ek.tk"; tl: "ek.tl"; tm: "ek.tm"; tn: "ek.tn"; to: "ek.to"; tp: "ek.tp"; tq: "ek.tq"; tr: "ek.tr"; ts: "ek.ts"; tt: "ek.tt"; tu: "ek.tu"; tv: "ek.tv"; tw: "ek.tw"; tx: "ek.tx"; ty: "ek.ty"; tz: "ek.tz"; ua: "ek.ua"; ub: "ek.ub"; uc: "ek.uc"; ud: "ek.ud"; ue: "ek.ue"; uf: "ek.uf"; ug: "ek.ug"; uh: "ek.uh"; ui: "ek.ui"; uj: "ek.uj"; uk: "ek.uk"; ul: "ek.ul"; um: "ek.um"; un: "ek.un"; uo: "ek.uo"; up: "ek.up"; uq: "ek.uq"; ur: "ek.ur"; us: "ek.us"; ut: "ek.ut"; uu: "ek.uu"; uv: "ek.uv"; uw: "ek.uw"; ux: "ek.ux"; uy: "ek.uy"; uz: "ek.uz"; va: "ek.va"; vb: "ek.vb"; vc: "ek.vc"; vd: "ek.vd"; ve: "ek.ve"; vf: "ek.vf"; vg: "ek.vg"; vh: "ek.vh"; vi: "ek.vi"; vj: "ek.vj"; vk: "ek.vk"; vl: "ek.vl"; vm: "ek.vm"; vn: "ek.vn"; vo: "ek.vo"; vp: "ek.vp"; vq: "ek.vq"; vr: "ek.vr"; vs: "ek.vs"; vt: "ek.vt"; vu: "ek.vu"; vv: "ek.vv"; vw: "ek.vw"; vx: "ek.vx"; vy: "ek.vy"; vz: "ek.vz"; wa: "ek.wa"; wb: "ek.wb"; wc: "ek.wc"; wd: "ek.wd"; we: "ek.we"; wf: "ek.wf"; wg: "ek.wg"; wh: "ek.wh"; wi: "ek.wi"; wj: "ek.wj"; wk: "ek.wk"; wl: "ek.wl"; wm: "ek.wm"; wn: "ek.wn"; wo: "ek.wo"; wp: "ek.wp"; wq: "ek.wq"; wr: "ek.wr"; ws: "ek.ws"; wt: "ek.wt"; wu: "ek.wu"; wv: "ek.wv"; ww: "ek.ww"; wx: "ek.wx"; wy: "ek.wy"; wz: "ek.wz"; xa: "ek.xa"; xb: "ek.xb"; xc: "ek.xc"; xd: "ek.xd"; xe: "ek.xe"; xf: "ek.xf"; xg: "ek.xg"; xh: "ek.xh"; xi: "ek.xi"; xj: "ek.xj"; xk: "ek.xk"; xl: "ek.xl"; xm: "ek.xm"; xn: "ek.xn"; xo: "ek.xo"; xp: "ek.xp"; xq: "ek.xq"; xr: "ek.xr"; xs: "ek.xs"; xt: "ek.xt"; xu: "ek.xu"; xv: "ek.xv"; xw: "ek.xw"; xx: "ek.xx"; xy: "ek.xy"; xz: "ek.xz"; ya: "ek.ya"; yb: "ek.yb"; yc: "ek.yc"; yd: "ek.yd"; ye: "ek.ye"; yf: "ek.yf"; yg: "ek.yg"; yh: "ek.yh"; yi: "ek.yi"; yj: "ek.yj"; yk: "ek.yk"; yl: "ek.yl"; ym: "ek.ym"; yn: "ek.yn"; yo: "ek.yo"; yp: "ek.yp"; yq: "ek.yq"; yr: "ek.yr"; ys: "ek.ys"; yt: "ek.yt"; yu: "ek.yu"; yv: "ek.yv"; yw: "ek.yw"; yx: "ek.yx"; yy: "ek.yy"; yz: "ek.yz"; za: "ek.za"; zb: "ek.zb"; zc: "ek.zc"; zd: "ek.zd"; ze: "ek.ze"; zf: "ek.zf"; zg: "ek.zg"; zh: "ek.zh"; zi: "ek.zi"; zj: "ek.zj"; zk: "ek.zk"; zl: "ek.zl"; zm: "ek.zm"; zn: "ek.zn"; zo: "ek.zo"; zp: "ek.zp"; zq: "ek.zq"; zr: "ek.zr"; zs: "ek.zs"; zt: "ek.zt"; zu: "ek.zu"; zv: "ek.zv"; zw: "ek.zw"; zx: "ek.zx"; zy: "ek.zy"; zz: "ek.zz"; }; el: { aa: "el.aa"; ab: "el.ab"; ac: "el.ac"; ad: "el.ad"; ae: "el.ae"; af: "el.af"; ag: "el.ag"; ah: "el.ah"; ai: "el.ai"; aj: "el.aj"; ak: "el.ak"; al: "el.al"; am: "el.am"; an: "el.an"; ao: "el.ao"; ap: "el.ap"; aq: "el.aq"; ar: "el.ar"; as: "el.as"; at: "el.at"; au: "el.au"; av: "el.av"; aw: "el.aw"; ax: "el.ax"; ay: "el.ay"; az: "el.az"; ba: "el.ba"; bb: "el.bb"; bc: "el.bc"; bd: "el.bd"; be: "el.be"; bf: "el.bf"; bg: "el.bg"; bh: "el.bh"; bi: "el.bi"; bj: "el.bj"; bk: "el.bk"; bl: "el.bl"; bm: "el.bm"; bn: "el.bn"; bo: "el.bo"; bp: "el.bp"; bq: "el.bq"; br: "el.br"; bs: "el.bs"; bt: "el.bt"; bu: "el.bu"; bv: "el.bv"; bw: "el.bw"; bx: "el.bx"; by: "el.by"; bz: "el.bz"; ca: "el.ca"; cb: "el.cb"; cc: "el.cc"; cd: "el.cd"; ce: "el.ce"; cf: "el.cf"; cg: "el.cg"; ch: "el.ch"; ci: "el.ci"; cj: "el.cj"; ck: "el.ck"; cl: "el.cl"; cm: "el.cm"; cn: "el.cn"; co: "el.co"; cp: "el.cp"; cq: "el.cq"; cr: "el.cr"; cs: "el.cs"; ct: "el.ct"; cu: "el.cu"; cv: "el.cv"; cw: "el.cw"; cx: "el.cx"; cy: "el.cy"; cz: "el.cz"; da: "el.da"; db: "el.db"; dc: "el.dc"; dd: "el.dd"; de: "el.de"; df: "el.df"; dg: "el.dg"; dh: "el.dh"; di: "el.di"; dj: "el.dj"; dk: "el.dk"; dl: "el.dl"; dm: "el.dm"; dn: "el.dn"; do: "el.do"; dp: "el.dp"; dq: "el.dq"; dr: "el.dr"; ds: "el.ds"; dt: "el.dt"; du: "el.du"; dv: "el.dv"; dw: "el.dw"; dx: "el.dx"; dy: "el.dy"; dz: "el.dz"; ea: "el.ea"; eb: "el.eb"; ec: "el.ec"; ed: "el.ed"; ee: "el.ee"; ef: "el.ef"; eg: "el.eg"; eh: "el.eh"; ei: "el.ei"; ej: "el.ej"; ek: "el.ek"; el: "el.el"; em: "el.em"; en: "el.en"; eo: "el.eo"; ep: "el.ep"; eq: "el.eq"; er: "el.er"; es: "el.es"; et: "el.et"; eu: "el.eu"; ev: "el.ev"; ew: "el.ew"; ex: "el.ex"; ey: "el.ey"; ez: "el.ez"; fa: "el.fa"; fb: "el.fb"; fc: "el.fc"; fd: "el.fd"; fe: "el.fe"; ff: "el.ff"; fg: "el.fg"; fh: "el.fh"; fi: "el.fi"; fj: "el.fj"; fk: "el.fk"; fl: "el.fl"; fm: "el.fm"; fn: "el.fn"; fo: "el.fo"; fp: "el.fp"; fq: "el.fq"; fr: "el.fr"; fs: "el.fs"; ft: "el.ft"; fu: "el.fu"; fv: "el.fv"; fw: "el.fw"; fx: "el.fx"; fy: "el.fy"; fz: "el.fz"; ga: "el.ga"; gb: "el.gb"; gc: "el.gc"; gd: "el.gd"; ge: "el.ge"; gf: "el.gf"; gg: "el.gg"; gh: "el.gh"; gi: "el.gi"; gj: "el.gj"; gk: "el.gk"; gl: "el.gl"; gm: "el.gm"; gn: "el.gn"; go: "el.go"; gp: "el.gp"; gq: "el.gq"; gr: "el.gr"; gs: "el.gs"; gt: "el.gt"; gu: "el.gu"; gv: "el.gv"; gw: "el.gw"; gx: "el.gx"; gy: "el.gy"; gz: "el.gz"; ha: "el.ha"; hb: "el.hb"; hc: "el.hc"; hd: "el.hd"; he: "el.he"; hf: "el.hf"; hg: "el.hg"; hh: "el.hh"; hi: "el.hi"; hj: "el.hj"; hk: "el.hk"; hl: "el.hl"; hm: "el.hm"; hn: "el.hn"; ho: "el.ho"; hp: "el.hp"; hq: "el.hq"; hr: "el.hr"; hs: "el.hs"; ht: "el.ht"; hu: "el.hu"; hv: "el.hv"; hw: "el.hw"; hx: "el.hx"; hy: "el.hy"; hz: "el.hz"; ia: "el.ia"; ib: "el.ib"; ic: "el.ic"; id: "el.id"; ie: "el.ie"; if: "el.if"; ig: "el.ig"; ih: "el.ih"; ii: "el.ii"; ij: "el.ij"; ik: "el.ik"; il: "el.il"; im: "el.im"; in: "el.in"; io: "el.io"; ip: "el.ip"; iq: "el.iq"; ir: "el.ir"; is: "el.is"; it: "el.it"; iu: "el.iu"; iv: "el.iv"; iw: "el.iw"; ix: "el.ix"; iy: "el.iy"; iz: "el.iz"; ja: "el.ja"; jb: "el.jb"; jc: "el.jc"; jd: "el.jd"; je: "el.je"; jf: "el.jf"; jg: "el.jg"; jh: "el.jh"; ji: "el.ji"; jj: "el.jj"; jk: "el.jk"; jl: "el.jl"; jm: "el.jm"; jn: "el.jn"; jo: "el.jo"; jp: "el.jp"; jq: "el.jq"; jr: "el.jr"; js: "el.js"; jt: "el.jt"; ju: "el.ju"; jv: "el.jv"; jw: "el.jw"; jx: "el.jx"; jy: "el.jy"; jz: "el.jz"; ka: "el.ka"; kb: "el.kb"; kc: "el.kc"; kd: "el.kd"; ke: "el.ke"; kf: "el.kf"; kg: "el.kg"; kh: "el.kh"; ki: "el.ki"; kj: "el.kj"; kk: "el.kk"; kl: "el.kl"; km: "el.km"; kn: "el.kn"; ko: "el.ko"; kp: "el.kp"; kq: "el.kq"; kr: "el.kr"; ks: "el.ks"; kt: "el.kt"; ku: "el.ku"; kv: "el.kv"; kw: "el.kw"; kx: "el.kx"; ky: "el.ky"; kz: "el.kz"; la: "el.la"; lb: "el.lb"; lc: "el.lc"; ld: "el.ld"; le: "el.le"; lf: "el.lf"; lg: "el.lg"; lh: "el.lh"; li: "el.li"; lj: "el.lj"; lk: "el.lk"; ll: "el.ll"; lm: "el.lm"; ln: "el.ln"; lo: "el.lo"; lp: "el.lp"; lq: "el.lq"; lr: "el.lr"; ls: "el.ls"; lt: "el.lt"; lu: "el.lu"; lv: "el.lv"; lw: "el.lw"; lx: "el.lx"; ly: "el.ly"; lz: "el.lz"; ma: "el.ma"; mb: "el.mb"; mc: "el.mc"; md: "el.md"; me: "el.me"; mf: "el.mf"; mg: "el.mg"; mh: "el.mh"; mi: "el.mi"; mj: "el.mj"; mk: "el.mk"; ml: "el.ml"; mm: "el.mm"; mn: "el.mn"; mo: "el.mo"; mp: "el.mp"; mq: "el.mq"; mr: "el.mr"; ms: "el.ms"; mt: "el.mt"; mu: "el.mu"; mv: "el.mv"; mw: "el.mw"; mx: "el.mx"; my: "el.my"; mz: "el.mz"; na: "el.na"; nb: "el.nb"; nc: "el.nc"; nd: "el.nd"; ne: "el.ne"; nf: "el.nf"; ng: "el.ng"; nh: "el.nh"; ni: "el.ni"; nj: "el.nj"; nk: "el.nk"; nl: "el.nl"; nm: "el.nm"; nn: "el.nn"; no: "el.no"; np: "el.np"; nq: "el.nq"; nr: "el.nr"; ns: "el.ns"; nt: "el.nt"; nu: "el.nu"; nv: "el.nv"; nw: "el.nw"; nx: "el.nx"; ny: "el.ny"; nz: "el.nz"; oa: "el.oa"; ob: "el.ob"; oc: "el.oc"; od: "el.od"; oe: "el.oe"; of: "el.of"; og: "el.og"; oh: "el.oh"; oi: "el.oi"; oj: "el.oj"; ok: "el.ok"; ol: "el.ol"; om: "el.om"; on: "el.on"; oo: "el.oo"; op: "el.op"; oq: "el.oq"; or: "el.or"; os: "el.os"; ot: "el.ot"; ou: "el.ou"; ov: "el.ov"; ow: "el.ow"; ox: "el.ox"; oy: "el.oy"; oz: "el.oz"; pa: "el.pa"; pb: "el.pb"; pc: "el.pc"; pd: "el.pd"; pe: "el.pe"; pf: "el.pf"; pg: "el.pg"; ph: "el.ph"; pi: "el.pi"; pj: "el.pj"; pk: "el.pk"; pl: "el.pl"; pm: "el.pm"; pn: "el.pn"; po: "el.po"; pp: "el.pp"; pq: "el.pq"; pr: "el.pr"; ps: "el.ps"; pt: "el.pt"; pu: "el.pu"; pv: "el.pv"; pw: "el.pw"; px: "el.px"; py: "el.py"; pz: "el.pz"; qa: "el.qa"; qb: "el.qb"; qc: "el.qc"; qd: "el.qd"; qe: "el.qe"; qf: "el.qf"; qg: "el.qg"; qh: "el.qh"; qi: "el.qi"; qj: "el.qj"; qk: "el.qk"; ql: "el.ql"; qm: "el.qm"; qn: "el.qn"; qo: "el.qo"; qp: "el.qp"; qq: "el.qq"; qr: "el.qr"; qs: "el.qs"; qt: "el.qt"; qu: "el.qu"; qv: "el.qv"; qw: "el.qw"; qx: "el.qx"; qy: "el.qy"; qz: "el.qz"; ra: "el.ra"; rb: "el.rb"; rc: "el.rc"; rd: "el.rd"; re: "el.re"; rf: "el.rf"; rg: "el.rg"; rh: "el.rh"; ri: "el.ri"; rj: "el.rj"; rk: "el.rk"; rl: "el.rl"; rm: "el.rm"; rn: "el.rn"; ro: "el.ro"; rp: "el.rp"; rq: "el.rq"; rr: "el.rr"; rs: "el.rs"; rt: "el.rt"; ru: "el.ru"; rv: "el.rv"; rw: "el.rw"; rx: "el.rx"; ry: "el.ry"; rz: "el.rz"; sa: "el.sa"; sb: "el.sb"; sc: "el.sc"; sd: "el.sd"; se: "el.se"; sf: "el.sf"; sg: "el.sg"; sh: "el.sh"; si: "el.si"; sj: "el.sj"; sk: "el.sk"; sl: "el.sl"; sm: "el.sm"; sn: "el.sn"; so: "el.so"; sp: "el.sp"; sq: "el.sq"; sr: "el.sr"; ss: "el.ss"; st: "el.st"; su: "el.su"; sv: "el.sv"; sw: "el.sw"; sx: "el.sx"; sy: "el.sy"; sz: "el.sz"; ta: "el.ta"; tb: "el.tb"; tc: "el.tc"; td: "el.td"; te: "el.te"; tf: "el.tf"; tg: "el.tg"; th: "el.th"; ti: "el.ti"; tj: "el.tj"; tk: "el.tk"; tl: "el.tl"; tm: "el.tm"; tn: "el.tn"; to: "el.to"; tp: "el.tp"; tq: "el.tq"; tr: "el.tr"; ts: "el.ts"; tt: "el.tt"; tu: "el.tu"; tv: "el.tv"; tw: "el.tw"; tx: "el.tx"; ty: "el.ty"; tz: "el.tz"; ua: "el.ua"; ub: "el.ub"; uc: "el.uc"; ud: "el.ud"; ue: "el.ue"; uf: "el.uf"; ug: "el.ug"; uh: "el.uh"; ui: "el.ui"; uj: "el.uj"; uk: "el.uk"; ul: "el.ul"; um: "el.um"; un: "el.un"; uo: "el.uo"; up: "el.up"; uq: "el.uq"; ur: "el.ur"; us: "el.us"; ut: "el.ut"; uu: "el.uu"; uv: "el.uv"; uw: "el.uw"; ux: "el.ux"; uy: "el.uy"; uz: "el.uz"; va: "el.va"; vb: "el.vb"; vc: "el.vc"; vd: "el.vd"; ve: "el.ve"; vf: "el.vf"; vg: "el.vg"; vh: "el.vh"; vi: "el.vi"; vj: "el.vj"; vk: "el.vk"; vl: "el.vl"; vm: "el.vm"; vn: "el.vn"; vo: "el.vo"; vp: "el.vp"; vq: "el.vq"; vr: "el.vr"; vs: "el.vs"; vt: "el.vt"; vu: "el.vu"; vv: "el.vv"; vw: "el.vw"; vx: "el.vx"; vy: "el.vy"; vz: "el.vz"; wa: "el.wa"; wb: "el.wb"; wc: "el.wc"; wd: "el.wd"; we: "el.we"; wf: "el.wf"; wg: "el.wg"; wh: "el.wh"; wi: "el.wi"; wj: "el.wj"; wk: "el.wk"; wl: "el.wl"; wm: "el.wm"; wn: "el.wn"; wo: "el.wo"; wp: "el.wp"; wq: "el.wq"; wr: "el.wr"; ws: "el.ws"; wt: "el.wt"; wu: "el.wu"; wv: "el.wv"; ww: "el.ww"; wx: "el.wx"; wy: "el.wy"; wz: "el.wz"; xa: "el.xa"; xb: "el.xb"; xc: "el.xc"; xd: "el.xd"; xe: "el.xe"; xf: "el.xf"; xg: "el.xg"; xh: "el.xh"; xi: "el.xi"; xj: "el.xj"; xk: "el.xk"; xl: "el.xl"; xm: "el.xm"; xn: "el.xn"; xo: "el.xo"; xp: "el.xp"; xq: "el.xq"; xr: "el.xr"; xs: "el.xs"; xt: "el.xt"; xu: "el.xu"; xv: "el.xv"; xw: "el.xw"; xx: "el.xx"; xy: "el.xy"; xz: "el.xz"; ya: "el.ya"; yb: "el.yb"; yc: "el.yc"; yd: "el.yd"; ye: "el.ye"; yf: "el.yf"; yg: "el.yg"; yh: "el.yh"; yi: "el.yi"; yj: "el.yj"; yk: "el.yk"; yl: "el.yl"; ym: "el.ym"; yn: "el.yn"; yo: "el.yo"; yp: "el.yp"; yq: "el.yq"; yr: "el.yr"; ys: "el.ys"; yt: "el.yt"; yu: "el.yu"; yv: "el.yv"; yw: "el.yw"; yx: "el.yx"; yy: "el.yy"; yz: "el.yz"; za: "el.za"; zb: "el.zb"; zc: "el.zc"; zd: "el.zd"; ze: "el.ze"; zf: "el.zf"; zg: "el.zg"; zh: "el.zh"; zi: "el.zi"; zj: "el.zj"; zk: "el.zk"; zl: "el.zl"; zm: "el.zm"; zn: "el.zn"; zo: "el.zo"; zp: "el.zp"; zq: "el.zq"; zr: "el.zr"; zs: "el.zs"; zt: "el.zt"; zu: "el.zu"; zv: "el.zv"; zw: "el.zw"; zx: "el.zx"; zy: "el.zy"; zz: "el.zz"; }; em: { aa: "em.aa"; ab: "em.ab"; ac: "em.ac"; ad: "em.ad"; ae: "em.ae"; af: "em.af"; ag: "em.ag"; ah: "em.ah"; ai: "em.ai"; aj: "em.aj"; ak: "em.ak"; al: "em.al"; am: "em.am"; an: "em.an"; ao: "em.ao"; ap: "em.ap"; aq: "em.aq"; ar: "em.ar"; as: "em.as"; at: "em.at"; au: "em.au"; av: "em.av"; aw: "em.aw"; ax: "em.ax"; ay: "em.ay"; az: "em.az"; ba: "em.ba"; bb: "em.bb"; bc: "em.bc"; bd: "em.bd"; be: "em.be"; bf: "em.bf"; bg: "em.bg"; bh: "em.bh"; bi: "em.bi"; bj: "em.bj"; bk: "em.bk"; bl: "em.bl"; bm: "em.bm"; bn: "em.bn"; bo: "em.bo"; bp: "em.bp"; bq: "em.bq"; br: "em.br"; bs: "em.bs"; bt: "em.bt"; bu: "em.bu"; bv: "em.bv"; bw: "em.bw"; bx: "em.bx"; by: "em.by"; bz: "em.bz"; ca: "em.ca"; cb: "em.cb"; cc: "em.cc"; cd: "em.cd"; ce: "em.ce"; cf: "em.cf"; cg: "em.cg"; ch: "em.ch"; ci: "em.ci"; cj: "em.cj"; ck: "em.ck"; cl: "em.cl"; cm: "em.cm"; cn: "em.cn"; co: "em.co"; cp: "em.cp"; cq: "em.cq"; cr: "em.cr"; cs: "em.cs"; ct: "em.ct"; cu: "em.cu"; cv: "em.cv"; cw: "em.cw"; cx: "em.cx"; cy: "em.cy"; cz: "em.cz"; da: "em.da"; db: "em.db"; dc: "em.dc"; dd: "em.dd"; de: "em.de"; df: "em.df"; dg: "em.dg"; dh: "em.dh"; di: "em.di"; dj: "em.dj"; dk: "em.dk"; dl: "em.dl"; dm: "em.dm"; dn: "em.dn"; do: "em.do"; dp: "em.dp"; dq: "em.dq"; dr: "em.dr"; ds: "em.ds"; dt: "em.dt"; du: "em.du"; dv: "em.dv"; dw: "em.dw"; dx: "em.dx"; dy: "em.dy"; dz: "em.dz"; ea: "em.ea"; eb: "em.eb"; ec: "em.ec"; ed: "em.ed"; ee: "em.ee"; ef: "em.ef"; eg: "em.eg"; eh: "em.eh"; ei: "em.ei"; ej: "em.ej"; ek: "em.ek"; el: "em.el"; em: "em.em"; en: "em.en"; eo: "em.eo"; ep: "em.ep"; eq: "em.eq"; er: "em.er"; es: "em.es"; et: "em.et"; eu: "em.eu"; ev: "em.ev"; ew: "em.ew"; ex: "em.ex"; ey: "em.ey"; ez: "em.ez"; fa: "em.fa"; fb: "em.fb"; fc: "em.fc"; fd: "em.fd"; fe: "em.fe"; ff: "em.ff"; fg: "em.fg"; fh: "em.fh"; fi: "em.fi"; fj: "em.fj"; fk: "em.fk"; fl: "em.fl"; fm: "em.fm"; fn: "em.fn"; fo: "em.fo"; fp: "em.fp"; fq: "em.fq"; fr: "em.fr"; fs: "em.fs"; ft: "em.ft"; fu: "em.fu"; fv: "em.fv"; fw: "em.fw"; fx: "em.fx"; fy: "em.fy"; fz: "em.fz"; ga: "em.ga"; gb: "em.gb"; gc: "em.gc"; gd: "em.gd"; ge: "em.ge"; gf: "em.gf"; gg: "em.gg"; gh: "em.gh"; gi: "em.gi"; gj: "em.gj"; gk: "em.gk"; gl: "em.gl"; gm: "em.gm"; gn: "em.gn"; go: "em.go"; gp: "em.gp"; gq: "em.gq"; gr: "em.gr"; gs: "em.gs"; gt: "em.gt"; gu: "em.gu"; gv: "em.gv"; gw: "em.gw"; gx: "em.gx"; gy: "em.gy"; gz: "em.gz"; ha: "em.ha"; hb: "em.hb"; hc: "em.hc"; hd: "em.hd"; he: "em.he"; hf: "em.hf"; hg: "em.hg"; hh: "em.hh"; hi: "em.hi"; hj: "em.hj"; hk: "em.hk"; hl: "em.hl"; hm: "em.hm"; hn: "em.hn"; ho: "em.ho"; hp: "em.hp"; hq: "em.hq"; hr: "em.hr"; hs: "em.hs"; ht: "em.ht"; hu: "em.hu"; hv: "em.hv"; hw: "em.hw"; hx: "em.hx"; hy: "em.hy"; hz: "em.hz"; ia: "em.ia"; ib: "em.ib"; ic: "em.ic"; id: "em.id"; ie: "em.ie"; if: "em.if"; ig: "em.ig"; ih: "em.ih"; ii: "em.ii"; ij: "em.ij"; ik: "em.ik"; il: "em.il"; im: "em.im"; in: "em.in"; io: "em.io"; ip: "em.ip"; iq: "em.iq"; ir: "em.ir"; is: "em.is"; it: "em.it"; iu: "em.iu"; iv: "em.iv"; iw: "em.iw"; ix: "em.ix"; iy: "em.iy"; iz: "em.iz"; ja: "em.ja"; jb: "em.jb"; jc: "em.jc"; jd: "em.jd"; je: "em.je"; jf: "em.jf"; jg: "em.jg"; jh: "em.jh"; ji: "em.ji"; jj: "em.jj"; jk: "em.jk"; jl: "em.jl"; jm: "em.jm"; jn: "em.jn"; jo: "em.jo"; jp: "em.jp"; jq: "em.jq"; jr: "em.jr"; js: "em.js"; jt: "em.jt"; ju: "em.ju"; jv: "em.jv"; jw: "em.jw"; jx: "em.jx"; jy: "em.jy"; jz: "em.jz"; ka: "em.ka"; kb: "em.kb"; kc: "em.kc"; kd: "em.kd"; ke: "em.ke"; kf: "em.kf"; kg: "em.kg"; kh: "em.kh"; ki: "em.ki"; kj: "em.kj"; kk: "em.kk"; kl: "em.kl"; km: "em.km"; kn: "em.kn"; ko: "em.ko"; kp: "em.kp"; kq: "em.kq"; kr: "em.kr"; ks: "em.ks"; kt: "em.kt"; ku: "em.ku"; kv: "em.kv"; kw: "em.kw"; kx: "em.kx"; ky: "em.ky"; kz: "em.kz"; la: "em.la"; lb: "em.lb"; lc: "em.lc"; ld: "em.ld"; le: "em.le"; lf: "em.lf"; lg: "em.lg"; lh: "em.lh"; li: "em.li"; lj: "em.lj"; lk: "em.lk"; ll: "em.ll"; lm: "em.lm"; ln: "em.ln"; lo: "em.lo"; lp: "em.lp"; lq: "em.lq"; lr: "em.lr"; ls: "em.ls"; lt: "em.lt"; lu: "em.lu"; lv: "em.lv"; lw: "em.lw"; lx: "em.lx"; ly: "em.ly"; lz: "em.lz"; ma: "em.ma"; mb: "em.mb"; mc: "em.mc"; md: "em.md"; me: "em.me"; mf: "em.mf"; mg: "em.mg"; mh: "em.mh"; mi: "em.mi"; mj: "em.mj"; mk: "em.mk"; ml: "em.ml"; mm: "em.mm"; mn: "em.mn"; mo: "em.mo"; mp: "em.mp"; mq: "em.mq"; mr: "em.mr"; ms: "em.ms"; mt: "em.mt"; mu: "em.mu"; mv: "em.mv"; mw: "em.mw"; mx: "em.mx"; my: "em.my"; mz: "em.mz"; na: "em.na"; nb: "em.nb"; nc: "em.nc"; nd: "em.nd"; ne: "em.ne"; nf: "em.nf"; ng: "em.ng"; nh: "em.nh"; ni: "em.ni"; nj: "em.nj"; nk: "em.nk"; nl: "em.nl"; nm: "em.nm"; nn: "em.nn"; no: "em.no"; np: "em.np"; nq: "em.nq"; nr: "em.nr"; ns: "em.ns"; nt: "em.nt"; nu: "em.nu"; nv: "em.nv"; nw: "em.nw"; nx: "em.nx"; ny: "em.ny"; nz: "em.nz"; oa: "em.oa"; ob: "em.ob"; oc: "em.oc"; od: "em.od"; oe: "em.oe"; of: "em.of"; og: "em.og"; oh: "em.oh"; oi: "em.oi"; oj: "em.oj"; ok: "em.ok"; ol: "em.ol"; om: "em.om"; on: "em.on"; oo: "em.oo"; op: "em.op"; oq: "em.oq"; or: "em.or"; os: "em.os"; ot: "em.ot"; ou: "em.ou"; ov: "em.ov"; ow: "em.ow"; ox: "em.ox"; oy: "em.oy"; oz: "em.oz"; pa: "em.pa"; pb: "em.pb"; pc: "em.pc"; pd: "em.pd"; pe: "em.pe"; pf: "em.pf"; pg: "em.pg"; ph: "em.ph"; pi: "em.pi"; pj: "em.pj"; pk: "em.pk"; pl: "em.pl"; pm: "em.pm"; pn: "em.pn"; po: "em.po"; pp: "em.pp"; pq: "em.pq"; pr: "em.pr"; ps: "em.ps"; pt: "em.pt"; pu: "em.pu"; pv: "em.pv"; pw: "em.pw"; px: "em.px"; py: "em.py"; pz: "em.pz"; qa: "em.qa"; qb: "em.qb"; qc: "em.qc"; qd: "em.qd"; qe: "em.qe"; qf: "em.qf"; qg: "em.qg"; qh: "em.qh"; qi: "em.qi"; qj: "em.qj"; qk: "em.qk"; ql: "em.ql"; qm: "em.qm"; qn: "em.qn"; qo: "em.qo"; qp: "em.qp"; qq: "em.qq"; qr: "em.qr"; qs: "em.qs"; qt: "em.qt"; qu: "em.qu"; qv: "em.qv"; qw: "em.qw"; qx: "em.qx"; qy: "em.qy"; qz: "em.qz"; ra: "em.ra"; rb: "em.rb"; rc: "em.rc"; rd: "em.rd"; re: "em.re"; rf: "em.rf"; rg: "em.rg"; rh: "em.rh"; ri: "em.ri"; rj: "em.rj"; rk: "em.rk"; rl: "em.rl"; rm: "em.rm"; rn: "em.rn"; ro: "em.ro"; rp: "em.rp"; rq: "em.rq"; rr: "em.rr"; rs: "em.rs"; rt: "em.rt"; ru: "em.ru"; rv: "em.rv"; rw: "em.rw"; rx: "em.rx"; ry: "em.ry"; rz: "em.rz"; sa: "em.sa"; sb: "em.sb"; sc: "em.sc"; sd: "em.sd"; se: "em.se"; sf: "em.sf"; sg: "em.sg"; sh: "em.sh"; si: "em.si"; sj: "em.sj"; sk: "em.sk"; sl: "em.sl"; sm: "em.sm"; sn: "em.sn"; so: "em.so"; sp: "em.sp"; sq: "em.sq"; sr: "em.sr"; ss: "em.ss"; st: "em.st"; su: "em.su"; sv: "em.sv"; sw: "em.sw"; sx: "em.sx"; sy: "em.sy"; sz: "em.sz"; ta: "em.ta"; tb: "em.tb"; tc: "em.tc"; td: "em.td"; te: "em.te"; tf: "em.tf"; tg: "em.tg"; th: "em.th"; ti: "em.ti"; tj: "em.tj"; tk: "em.tk"; tl: "em.tl"; tm: "em.tm"; tn: "em.tn"; to: "em.to"; tp: "em.tp"; tq: "em.tq"; tr: "em.tr"; ts: "em.ts"; tt: "em.tt"; tu: "em.tu"; tv: "em.tv"; tw: "em.tw"; tx: "em.tx"; ty: "em.ty"; tz: "em.tz"; ua: "em.ua"; ub: "em.ub"; uc: "em.uc"; ud: "em.ud"; ue: "em.ue"; uf: "em.uf"; ug: "em.ug"; uh: "em.uh"; ui: "em.ui"; uj: "em.uj"; uk: "em.uk"; ul: "em.ul"; um: "em.um"; un: "em.un"; uo: "em.uo"; up: "em.up"; uq: "em.uq"; ur: "em.ur"; us: "em.us"; ut: "em.ut"; uu: "em.uu"; uv: "em.uv"; uw: "em.uw"; ux: "em.ux"; uy: "em.uy"; uz: "em.uz"; va: "em.va"; vb: "em.vb"; vc: "em.vc"; vd: "em.vd"; ve: "em.ve"; vf: "em.vf"; vg: "em.vg"; vh: "em.vh"; vi: "em.vi"; vj: "em.vj"; vk: "em.vk"; vl: "em.vl"; vm: "em.vm"; vn: "em.vn"; vo: "em.vo"; vp: "em.vp"; vq: "em.vq"; vr: "em.vr"; vs: "em.vs"; vt: "em.vt"; vu: "em.vu"; vv: "em.vv"; vw: "em.vw"; vx: "em.vx"; vy: "em.vy"; vz: "em.vz"; wa: "em.wa"; wb: "em.wb"; wc: "em.wc"; wd: "em.wd"; we: "em.we"; wf: "em.wf"; wg: "em.wg"; wh: "em.wh"; wi: "em.wi"; wj: "em.wj"; wk: "em.wk"; wl: "em.wl"; wm: "em.wm"; wn: "em.wn"; wo: "em.wo"; wp: "em.wp"; wq: "em.wq"; wr: "em.wr"; ws: "em.ws"; wt: "em.wt"; wu: "em.wu"; wv: "em.wv"; ww: "em.ww"; wx: "em.wx"; wy: "em.wy"; wz: "em.wz"; xa: "em.xa"; xb: "em.xb"; xc: "em.xc"; xd: "em.xd"; xe: "em.xe"; xf: "em.xf"; xg: "em.xg"; xh: "em.xh"; xi: "em.xi"; xj: "em.xj"; xk: "em.xk"; xl: "em.xl"; xm: "em.xm"; xn: "em.xn"; xo: "em.xo"; xp: "em.xp"; xq: "em.xq"; xr: "em.xr"; xs: "em.xs"; xt: "em.xt"; xu: "em.xu"; xv: "em.xv"; xw: "em.xw"; xx: "em.xx"; xy: "em.xy"; xz: "em.xz"; ya: "em.ya"; yb: "em.yb"; yc: "em.yc"; yd: "em.yd"; ye: "em.ye"; yf: "em.yf"; yg: "em.yg"; yh: "em.yh"; yi: "em.yi"; yj: "em.yj"; yk: "em.yk"; yl: "em.yl"; ym: "em.ym"; yn: "em.yn"; yo: "em.yo"; yp: "em.yp"; yq: "em.yq"; yr: "em.yr"; ys: "em.ys"; yt: "em.yt"; yu: "em.yu"; yv: "em.yv"; yw: "em.yw"; yx: "em.yx"; yy: "em.yy"; yz: "em.yz"; za: "em.za"; zb: "em.zb"; zc: "em.zc"; zd: "em.zd"; ze: "em.ze"; zf: "em.zf"; zg: "em.zg"; zh: "em.zh"; zi: "em.zi"; zj: "em.zj"; zk: "em.zk"; zl: "em.zl"; zm: "em.zm"; zn: "em.zn"; zo: "em.zo"; zp: "em.zp"; zq: "em.zq"; zr: "em.zr"; zs: "em.zs"; zt: "em.zt"; zu: "em.zu"; zv: "em.zv"; zw: "em.zw"; zx: "em.zx"; zy: "em.zy"; zz: "em.zz"; }; en: { aa: "en.aa"; ab: "en.ab"; ac: "en.ac"; ad: "en.ad"; ae: "en.ae"; af: "en.af"; ag: "en.ag"; ah: "en.ah"; ai: "en.ai"; aj: "en.aj"; ak: "en.ak"; al: "en.al"; am: "en.am"; an: "en.an"; ao: "en.ao"; ap: "en.ap"; aq: "en.aq"; ar: "en.ar"; as: "en.as"; at: "en.at"; au: "en.au"; av: "en.av"; aw: "en.aw"; ax: "en.ax"; ay: "en.ay"; az: "en.az"; ba: "en.ba"; bb: "en.bb"; bc: "en.bc"; bd: "en.bd"; be: "en.be"; bf: "en.bf"; bg: "en.bg"; bh: "en.bh"; bi: "en.bi"; bj: "en.bj"; bk: "en.bk"; bl: "en.bl"; bm: "en.bm"; bn: "en.bn"; bo: "en.bo"; bp: "en.bp"; bq: "en.bq"; br: "en.br"; bs: "en.bs"; bt: "en.bt"; bu: "en.bu"; bv: "en.bv"; bw: "en.bw"; bx: "en.bx"; by: "en.by"; bz: "en.bz"; ca: "en.ca"; cb: "en.cb"; cc: "en.cc"; cd: "en.cd"; ce: "en.ce"; cf: "en.cf"; cg: "en.cg"; ch: "en.ch"; ci: "en.ci"; cj: "en.cj"; ck: "en.ck"; cl: "en.cl"; cm: "en.cm"; cn: "en.cn"; co: "en.co"; cp: "en.cp"; cq: "en.cq"; cr: "en.cr"; cs: "en.cs"; ct: "en.ct"; cu: "en.cu"; cv: "en.cv"; cw: "en.cw"; cx: "en.cx"; cy: "en.cy"; cz: "en.cz"; da: "en.da"; db: "en.db"; dc: "en.dc"; dd: "en.dd"; de: "en.de"; df: "en.df"; dg: "en.dg"; dh: "en.dh"; di: "en.di"; dj: "en.dj"; dk: "en.dk"; dl: "en.dl"; dm: "en.dm"; dn: "en.dn"; do: "en.do"; dp: "en.dp"; dq: "en.dq"; dr: "en.dr"; ds: "en.ds"; dt: "en.dt"; du: "en.du"; dv: "en.dv"; dw: "en.dw"; dx: "en.dx"; dy: "en.dy"; dz: "en.dz"; ea: "en.ea"; eb: "en.eb"; ec: "en.ec"; ed: "en.ed"; ee: "en.ee"; ef: "en.ef"; eg: "en.eg"; eh: "en.eh"; ei: "en.ei"; ej: "en.ej"; ek: "en.ek"; el: "en.el"; em: "en.em"; en: "en.en"; eo: "en.eo"; ep: "en.ep"; eq: "en.eq"; er: "en.er"; es: "en.es"; et: "en.et"; eu: "en.eu"; ev: "en.ev"; ew: "en.ew"; ex: "en.ex"; ey: "en.ey"; ez: "en.ez"; fa: "en.fa"; fb: "en.fb"; fc: "en.fc"; fd: "en.fd"; fe: "en.fe"; ff: "en.ff"; fg: "en.fg"; fh: "en.fh"; fi: "en.fi"; fj: "en.fj"; fk: "en.fk"; fl: "en.fl"; fm: "en.fm"; fn: "en.fn"; fo: "en.fo"; fp: "en.fp"; fq: "en.fq"; fr: "en.fr"; fs: "en.fs"; ft: "en.ft"; fu: "en.fu"; fv: "en.fv"; fw: "en.fw"; fx: "en.fx"; fy: "en.fy"; fz: "en.fz"; ga: "en.ga"; gb: "en.gb"; gc: "en.gc"; gd: "en.gd"; ge: "en.ge"; gf: "en.gf"; gg: "en.gg"; gh: "en.gh"; gi: "en.gi"; gj: "en.gj"; gk: "en.gk"; gl: "en.gl"; gm: "en.gm"; gn: "en.gn"; go: "en.go"; gp: "en.gp"; gq: "en.gq"; gr: "en.gr"; gs: "en.gs"; gt: "en.gt"; gu: "en.gu"; gv: "en.gv"; gw: "en.gw"; gx: "en.gx"; gy: "en.gy"; gz: "en.gz"; ha: "en.ha"; hb: "en.hb"; hc: "en.hc"; hd: "en.hd"; he: "en.he"; hf: "en.hf"; hg: "en.hg"; hh: "en.hh"; hi: "en.hi"; hj: "en.hj"; hk: "en.hk"; hl: "en.hl"; hm: "en.hm"; hn: "en.hn"; ho: "en.ho"; hp: "en.hp"; hq: "en.hq"; hr: "en.hr"; hs: "en.hs"; ht: "en.ht"; hu: "en.hu"; hv: "en.hv"; hw: "en.hw"; hx: "en.hx"; hy: "en.hy"; hz: "en.hz"; ia: "en.ia"; ib: "en.ib"; ic: "en.ic"; id: "en.id"; ie: "en.ie"; if: "en.if"; ig: "en.ig"; ih: "en.ih"; ii: "en.ii"; ij: "en.ij"; ik: "en.ik"; il: "en.il"; im: "en.im"; in: "en.in"; io: "en.io"; ip: "en.ip"; iq: "en.iq"; ir: "en.ir"; is: "en.is"; it: "en.it"; iu: "en.iu"; iv: "en.iv"; iw: "en.iw"; ix: "en.ix"; iy: "en.iy"; iz: "en.iz"; ja: "en.ja"; jb: "en.jb"; jc: "en.jc"; jd: "en.jd"; je: "en.je"; jf: "en.jf"; jg: "en.jg"; jh: "en.jh"; ji: "en.ji"; jj: "en.jj"; jk: "en.jk"; jl: "en.jl"; jm: "en.jm"; jn: "en.jn"; jo: "en.jo"; jp: "en.jp"; jq: "en.jq"; jr: "en.jr"; js: "en.js"; jt: "en.jt"; ju: "en.ju"; jv: "en.jv"; jw: "en.jw"; jx: "en.jx"; jy: "en.jy"; jz: "en.jz"; ka: "en.ka"; kb: "en.kb"; kc: "en.kc"; kd: "en.kd"; ke: "en.ke"; kf: "en.kf"; kg: "en.kg"; kh: "en.kh"; ki: "en.ki"; kj: "en.kj"; kk: "en.kk"; kl: "en.kl"; km: "en.km"; kn: "en.kn"; ko: "en.ko"; kp: "en.kp"; kq: "en.kq"; kr: "en.kr"; ks: "en.ks"; kt: "en.kt"; ku: "en.ku"; kv: "en.kv"; kw: "en.kw"; kx: "en.kx"; ky: "en.ky"; kz: "en.kz"; la: "en.la"; lb: "en.lb"; lc: "en.lc"; ld: "en.ld"; le: "en.le"; lf: "en.lf"; lg: "en.lg"; lh: "en.lh"; li: "en.li"; lj: "en.lj"; lk: "en.lk"; ll: "en.ll"; lm: "en.lm"; ln: "en.ln"; lo: "en.lo"; lp: "en.lp"; lq: "en.lq"; lr: "en.lr"; ls: "en.ls"; lt: "en.lt"; lu: "en.lu"; lv: "en.lv"; lw: "en.lw"; lx: "en.lx"; ly: "en.ly"; lz: "en.lz"; ma: "en.ma"; mb: "en.mb"; mc: "en.mc"; md: "en.md"; me: "en.me"; mf: "en.mf"; mg: "en.mg"; mh: "en.mh"; mi: "en.mi"; mj: "en.mj"; mk: "en.mk"; ml: "en.ml"; mm: "en.mm"; mn: "en.mn"; mo: "en.mo"; mp: "en.mp"; mq: "en.mq"; mr: "en.mr"; ms: "en.ms"; mt: "en.mt"; mu: "en.mu"; mv: "en.mv"; mw: "en.mw"; mx: "en.mx"; my: "en.my"; mz: "en.mz"; na: "en.na"; nb: "en.nb"; nc: "en.nc"; nd: "en.nd"; ne: "en.ne"; nf: "en.nf"; ng: "en.ng"; nh: "en.nh"; ni: "en.ni"; nj: "en.nj"; nk: "en.nk"; nl: "en.nl"; nm: "en.nm"; nn: "en.nn"; no: "en.no"; np: "en.np"; nq: "en.nq"; nr: "en.nr"; ns: "en.ns"; nt: "en.nt"; nu: "en.nu"; nv: "en.nv"; nw: "en.nw"; nx: "en.nx"; ny: "en.ny"; nz: "en.nz"; oa: "en.oa"; ob: "en.ob"; oc: "en.oc"; od: "en.od"; oe: "en.oe"; of: "en.of"; og: "en.og"; oh: "en.oh"; oi: "en.oi"; oj: "en.oj"; ok: "en.ok"; ol: "en.ol"; om: "en.om"; on: "en.on"; oo: "en.oo"; op: "en.op"; oq: "en.oq"; or: "en.or"; os: "en.os"; ot: "en.ot"; ou: "en.ou"; ov: "en.ov"; ow: "en.ow"; ox: "en.ox"; oy: "en.oy"; oz: "en.oz"; pa: "en.pa"; pb: "en.pb"; pc: "en.pc"; pd: "en.pd"; pe: "en.pe"; pf: "en.pf"; pg: "en.pg"; ph: "en.ph"; pi: "en.pi"; pj: "en.pj"; pk: "en.pk"; pl: "en.pl"; pm: "en.pm"; pn: "en.pn"; po: "en.po"; pp: "en.pp"; pq: "en.pq"; pr: "en.pr"; ps: "en.ps"; pt: "en.pt"; pu: "en.pu"; pv: "en.pv"; pw: "en.pw"; px: "en.px"; py: "en.py"; pz: "en.pz"; qa: "en.qa"; qb: "en.qb"; qc: "en.qc"; qd: "en.qd"; qe: "en.qe"; qf: "en.qf"; qg: "en.qg"; qh: "en.qh"; qi: "en.qi"; qj: "en.qj"; qk: "en.qk"; ql: "en.ql"; qm: "en.qm"; qn: "en.qn"; qo: "en.qo"; qp: "en.qp"; qq: "en.qq"; qr: "en.qr"; qs: "en.qs"; qt: "en.qt"; qu: "en.qu"; qv: "en.qv"; qw: "en.qw"; qx: "en.qx"; qy: "en.qy"; qz: "en.qz"; ra: "en.ra"; rb: "en.rb"; rc: "en.rc"; rd: "en.rd"; re: "en.re"; rf: "en.rf"; rg: "en.rg"; rh: "en.rh"; ri: "en.ri"; rj: "en.rj"; rk: "en.rk"; rl: "en.rl"; rm: "en.rm"; rn: "en.rn"; ro: "en.ro"; rp: "en.rp"; rq: "en.rq"; rr: "en.rr"; rs: "en.rs"; rt: "en.rt"; ru: "en.ru"; rv: "en.rv"; rw: "en.rw"; rx: "en.rx"; ry: "en.ry"; rz: "en.rz"; sa: "en.sa"; sb: "en.sb"; sc: "en.sc"; sd: "en.sd"; se: "en.se"; sf: "en.sf"; sg: "en.sg"; sh: "en.sh"; si: "en.si"; sj: "en.sj"; sk: "en.sk"; sl: "en.sl"; sm: "en.sm"; sn: "en.sn"; so: "en.so"; sp: "en.sp"; sq: "en.sq"; sr: "en.sr"; ss: "en.ss"; st: "en.st"; su: "en.su"; sv: "en.sv"; sw: "en.sw"; sx: "en.sx"; sy: "en.sy"; sz: "en.sz"; ta: "en.ta"; tb: "en.tb"; tc: "en.tc"; td: "en.td"; te: "en.te"; tf: "en.tf"; tg: "en.tg"; th: "en.th"; ti: "en.ti"; tj: "en.tj"; tk: "en.tk"; tl: "en.tl"; tm: "en.tm"; tn: "en.tn"; to: "en.to"; tp: "en.tp"; tq: "en.tq"; tr: "en.tr"; ts: "en.ts"; tt: "en.tt"; tu: "en.tu"; tv: "en.tv"; tw: "en.tw"; tx: "en.tx"; ty: "en.ty"; tz: "en.tz"; ua: "en.ua"; ub: "en.ub"; uc: "en.uc"; ud: "en.ud"; ue: "en.ue"; uf: "en.uf"; ug: "en.ug"; uh: "en.uh"; ui: "en.ui"; uj: "en.uj"; uk: "en.uk"; ul: "en.ul"; um: "en.um"; un: "en.un"; uo: "en.uo"; up: "en.up"; uq: "en.uq"; ur: "en.ur"; us: "en.us"; ut: "en.ut"; uu: "en.uu"; uv: "en.uv"; uw: "en.uw"; ux: "en.ux"; uy: "en.uy"; uz: "en.uz"; va: "en.va"; vb: "en.vb"; vc: "en.vc"; vd: "en.vd"; ve: "en.ve"; vf: "en.vf"; vg: "en.vg"; vh: "en.vh"; vi: "en.vi"; vj: "en.vj"; vk: "en.vk"; vl: "en.vl"; vm: "en.vm"; vn: "en.vn"; vo: "en.vo"; vp: "en.vp"; vq: "en.vq"; vr: "en.vr"; vs: "en.vs"; vt: "en.vt"; vu: "en.vu"; vv: "en.vv"; vw: "en.vw"; vx: "en.vx"; vy: "en.vy"; vz: "en.vz"; wa: "en.wa"; wb: "en.wb"; wc: "en.wc"; wd: "en.wd"; we: "en.we"; wf: "en.wf"; wg: "en.wg"; wh: "en.wh"; wi: "en.wi"; wj: "en.wj"; wk: "en.wk"; wl: "en.wl"; wm: "en.wm"; wn: "en.wn"; wo: "en.wo"; wp: "en.wp"; wq: "en.wq"; wr: "en.wr"; ws: "en.ws"; wt: "en.wt"; wu: "en.wu"; wv: "en.wv"; ww: "en.ww"; wx: "en.wx"; wy: "en.wy"; wz: "en.wz"; xa: "en.xa"; xb: "en.xb"; xc: "en.xc"; xd: "en.xd"; xe: "en.xe"; xf: "en.xf"; xg: "en.xg"; xh: "en.xh"; xi: "en.xi"; xj: "en.xj"; xk: "en.xk"; xl: "en.xl"; xm: "en.xm"; xn: "en.xn"; xo: "en.xo"; xp: "en.xp"; xq: "en.xq"; xr: "en.xr"; xs: "en.xs"; xt: "en.xt"; xu: "en.xu"; xv: "en.xv"; xw: "en.xw"; xx: "en.xx"; xy: "en.xy"; xz: "en.xz"; ya: "en.ya"; yb: "en.yb"; yc: "en.yc"; yd: "en.yd"; ye: "en.ye"; yf: "en.yf"; yg: "en.yg"; yh: "en.yh"; yi: "en.yi"; yj: "en.yj"; yk: "en.yk"; yl: "en.yl"; ym: "en.ym"; yn: "en.yn"; yo: "en.yo"; yp: "en.yp"; yq: "en.yq"; yr: "en.yr"; ys: "en.ys"; yt: "en.yt"; yu: "en.yu"; yv: "en.yv"; yw: "en.yw"; yx: "en.yx"; yy: "en.yy"; yz: "en.yz"; za: "en.za"; zb: "en.zb"; zc: "en.zc"; zd: "en.zd"; ze: "en.ze"; zf: "en.zf"; zg: "en.zg"; zh: "en.zh"; zi: "en.zi"; zj: "en.zj"; zk: "en.zk"; zl: "en.zl"; zm: "en.zm"; zn: "en.zn"; zo: "en.zo"; zp: "en.zp"; zq: "en.zq"; zr: "en.zr"; zs: "en.zs"; zt: "en.zt"; zu: "en.zu"; zv: "en.zv"; zw: "en.zw"; zx: "en.zx"; zy: "en.zy"; zz: "en.zz"; }; eo: { aa: "eo.aa"; ab: "eo.ab"; ac: "eo.ac"; ad: "eo.ad"; ae: "eo.ae"; af: "eo.af"; ag: "eo.ag"; ah: "eo.ah"; ai: "eo.ai"; aj: "eo.aj"; ak: "eo.ak"; al: "eo.al"; am: "eo.am"; an: "eo.an"; ao: "eo.ao"; ap: "eo.ap"; aq: "eo.aq"; ar: "eo.ar"; as: "eo.as"; at: "eo.at"; au: "eo.au"; av: "eo.av"; aw: "eo.aw"; ax: "eo.ax"; ay: "eo.ay"; az: "eo.az"; ba: "eo.ba"; bb: "eo.bb"; bc: "eo.bc"; bd: "eo.bd"; be: "eo.be"; bf: "eo.bf"; bg: "eo.bg"; bh: "eo.bh"; bi: "eo.bi"; bj: "eo.bj"; bk: "eo.bk"; bl: "eo.bl"; bm: "eo.bm"; bn: "eo.bn"; bo: "eo.bo"; bp: "eo.bp"; bq: "eo.bq"; br: "eo.br"; bs: "eo.bs"; bt: "eo.bt"; bu: "eo.bu"; bv: "eo.bv"; bw: "eo.bw"; bx: "eo.bx"; by: "eo.by"; bz: "eo.bz"; ca: "eo.ca"; cb: "eo.cb"; cc: "eo.cc"; cd: "eo.cd"; ce: "eo.ce"; cf: "eo.cf"; cg: "eo.cg"; ch: "eo.ch"; ci: "eo.ci"; cj: "eo.cj"; ck: "eo.ck"; cl: "eo.cl"; cm: "eo.cm"; cn: "eo.cn"; co: "eo.co"; cp: "eo.cp"; cq: "eo.cq"; cr: "eo.cr"; cs: "eo.cs"; ct: "eo.ct"; cu: "eo.cu"; cv: "eo.cv"; cw: "eo.cw"; cx: "eo.cx"; cy: "eo.cy"; cz: "eo.cz"; da: "eo.da"; db: "eo.db"; dc: "eo.dc"; dd: "eo.dd"; de: "eo.de"; df: "eo.df"; dg: "eo.dg"; dh: "eo.dh"; di: "eo.di"; dj: "eo.dj"; dk: "eo.dk"; dl: "eo.dl"; dm: "eo.dm"; dn: "eo.dn"; do: "eo.do"; dp: "eo.dp"; dq: "eo.dq"; dr: "eo.dr"; ds: "eo.ds"; dt: "eo.dt"; du: "eo.du"; dv: "eo.dv"; dw: "eo.dw"; dx: "eo.dx"; dy: "eo.dy"; dz: "eo.dz"; ea: "eo.ea"; eb: "eo.eb"; ec: "eo.ec"; ed: "eo.ed"; ee: "eo.ee"; ef: "eo.ef"; eg: "eo.eg"; eh: "eo.eh"; ei: "eo.ei"; ej: "eo.ej"; ek: "eo.ek"; el: "eo.el"; em: "eo.em"; en: "eo.en"; eo: "eo.eo"; ep: "eo.ep"; eq: "eo.eq"; er: "eo.er"; es: "eo.es"; et: "eo.et"; eu: "eo.eu"; ev: "eo.ev"; ew: "eo.ew"; ex: "eo.ex"; ey: "eo.ey"; ez: "eo.ez"; fa: "eo.fa"; fb: "eo.fb"; fc: "eo.fc"; fd: "eo.fd"; fe: "eo.fe"; ff: "eo.ff"; fg: "eo.fg"; fh: "eo.fh"; fi: "eo.fi"; fj: "eo.fj"; fk: "eo.fk"; fl: "eo.fl"; fm: "eo.fm"; fn: "eo.fn"; fo: "eo.fo"; fp: "eo.fp"; fq: "eo.fq"; fr: "eo.fr"; fs: "eo.fs"; ft: "eo.ft"; fu: "eo.fu"; fv: "eo.fv"; fw: "eo.fw"; fx: "eo.fx"; fy: "eo.fy"; fz: "eo.fz"; ga: "eo.ga"; gb: "eo.gb"; gc: "eo.gc"; gd: "eo.gd"; ge: "eo.ge"; gf: "eo.gf"; gg: "eo.gg"; gh: "eo.gh"; gi: "eo.gi"; gj: "eo.gj"; gk: "eo.gk"; gl: "eo.gl"; gm: "eo.gm"; gn: "eo.gn"; go: "eo.go"; gp: "eo.gp"; gq: "eo.gq"; gr: "eo.gr"; gs: "eo.gs"; gt: "eo.gt"; gu: "eo.gu"; gv: "eo.gv"; gw: "eo.gw"; gx: "eo.gx"; gy: "eo.gy"; gz: "eo.gz"; ha: "eo.ha"; hb: "eo.hb"; hc: "eo.hc"; hd: "eo.hd"; he: "eo.he"; hf: "eo.hf"; hg: "eo.hg"; hh: "eo.hh"; hi: "eo.hi"; hj: "eo.hj"; hk: "eo.hk"; hl: "eo.hl"; hm: "eo.hm"; hn: "eo.hn"; ho: "eo.ho"; hp: "eo.hp"; hq: "eo.hq"; hr: "eo.hr"; hs: "eo.hs"; ht: "eo.ht"; hu: "eo.hu"; hv: "eo.hv"; hw: "eo.hw"; hx: "eo.hx"; hy: "eo.hy"; hz: "eo.hz"; ia: "eo.ia"; ib: "eo.ib"; ic: "eo.ic"; id: "eo.id"; ie: "eo.ie"; if: "eo.if"; ig: "eo.ig"; ih: "eo.ih"; ii: "eo.ii"; ij: "eo.ij"; ik: "eo.ik"; il: "eo.il"; im: "eo.im"; in: "eo.in"; io: "eo.io"; ip: "eo.ip"; iq: "eo.iq"; ir: "eo.ir"; is: "eo.is"; it: "eo.it"; iu: "eo.iu"; iv: "eo.iv"; iw: "eo.iw"; ix: "eo.ix"; iy: "eo.iy"; iz: "eo.iz"; ja: "eo.ja"; jb: "eo.jb"; jc: "eo.jc"; jd: "eo.jd"; je: "eo.je"; jf: "eo.jf"; jg: "eo.jg"; jh: "eo.jh"; ji: "eo.ji"; jj: "eo.jj"; jk: "eo.jk"; jl: "eo.jl"; jm: "eo.jm"; jn: "eo.jn"; jo: "eo.jo"; jp: "eo.jp"; jq: "eo.jq"; jr: "eo.jr"; js: "eo.js"; jt: "eo.jt"; ju: "eo.ju"; jv: "eo.jv"; jw: "eo.jw"; jx: "eo.jx"; jy: "eo.jy"; jz: "eo.jz"; ka: "eo.ka"; kb: "eo.kb"; kc: "eo.kc"; kd: "eo.kd"; ke: "eo.ke"; kf: "eo.kf"; kg: "eo.kg"; kh: "eo.kh"; ki: "eo.ki"; kj: "eo.kj"; kk: "eo.kk"; kl: "eo.kl"; km: "eo.km"; kn: "eo.kn"; ko: "eo.ko"; kp: "eo.kp"; kq: "eo.kq"; kr: "eo.kr"; ks: "eo.ks"; kt: "eo.kt"; ku: "eo.ku"; kv: "eo.kv"; kw: "eo.kw"; kx: "eo.kx"; ky: "eo.ky"; kz: "eo.kz"; la: "eo.la"; lb: "eo.lb"; lc: "eo.lc"; ld: "eo.ld"; le: "eo.le"; lf: "eo.lf"; lg: "eo.lg"; lh: "eo.lh"; li: "eo.li"; lj: "eo.lj"; lk: "eo.lk"; ll: "eo.ll"; lm: "eo.lm"; ln: "eo.ln"; lo: "eo.lo"; lp: "eo.lp"; lq: "eo.lq"; lr: "eo.lr"; ls: "eo.ls"; lt: "eo.lt"; lu: "eo.lu"; lv: "eo.lv"; lw: "eo.lw"; lx: "eo.lx"; ly: "eo.ly"; lz: "eo.lz"; ma: "eo.ma"; mb: "eo.mb"; mc: "eo.mc"; md: "eo.md"; me: "eo.me"; mf: "eo.mf"; mg: "eo.mg"; mh: "eo.mh"; mi: "eo.mi"; mj: "eo.mj"; mk: "eo.mk"; ml: "eo.ml"; mm: "eo.mm"; mn: "eo.mn"; mo: "eo.mo"; mp: "eo.mp"; mq: "eo.mq"; mr: "eo.mr"; ms: "eo.ms"; mt: "eo.mt"; mu: "eo.mu"; mv: "eo.mv"; mw: "eo.mw"; mx: "eo.mx"; my: "eo.my"; mz: "eo.mz"; na: "eo.na"; nb: "eo.nb"; nc: "eo.nc"; nd: "eo.nd"; ne: "eo.ne"; nf: "eo.nf"; ng: "eo.ng"; nh: "eo.nh"; ni: "eo.ni"; nj: "eo.nj"; nk: "eo.nk"; nl: "eo.nl"; nm: "eo.nm"; nn: "eo.nn"; no: "eo.no"; np: "eo.np"; nq: "eo.nq"; nr: "eo.nr"; ns: "eo.ns"; nt: "eo.nt"; nu: "eo.nu"; nv: "eo.nv"; nw: "eo.nw"; nx: "eo.nx"; ny: "eo.ny"; nz: "eo.nz"; oa: "eo.oa"; ob: "eo.ob"; oc: "eo.oc"; od: "eo.od"; oe: "eo.oe"; of: "eo.of"; og: "eo.og"; oh: "eo.oh"; oi: "eo.oi"; oj: "eo.oj"; ok: "eo.ok"; ol: "eo.ol"; om: "eo.om"; on: "eo.on"; oo: "eo.oo"; op: "eo.op"; oq: "eo.oq"; or: "eo.or"; os: "eo.os"; ot: "eo.ot"; ou: "eo.ou"; ov: "eo.ov"; ow: "eo.ow"; ox: "eo.ox"; oy: "eo.oy"; oz: "eo.oz"; pa: "eo.pa"; pb: "eo.pb"; pc: "eo.pc"; pd: "eo.pd"; pe: "eo.pe"; pf: "eo.pf"; pg: "eo.pg"; ph: "eo.ph"; pi: "eo.pi"; pj: "eo.pj"; pk: "eo.pk"; pl: "eo.pl"; pm: "eo.pm"; pn: "eo.pn"; po: "eo.po"; pp: "eo.pp"; pq: "eo.pq"; pr: "eo.pr"; ps: "eo.ps"; pt: "eo.pt"; pu: "eo.pu"; pv: "eo.pv"; pw: "eo.pw"; px: "eo.px"; py: "eo.py"; pz: "eo.pz"; qa: "eo.qa"; qb: "eo.qb"; qc: "eo.qc"; qd: "eo.qd"; qe: "eo.qe"; qf: "eo.qf"; qg: "eo.qg"; qh: "eo.qh"; qi: "eo.qi"; qj: "eo.qj"; qk: "eo.qk"; ql: "eo.ql"; qm: "eo.qm"; qn: "eo.qn"; qo: "eo.qo"; qp: "eo.qp"; qq: "eo.qq"; qr: "eo.qr"; qs: "eo.qs"; qt: "eo.qt"; qu: "eo.qu"; qv: "eo.qv"; qw: "eo.qw"; qx: "eo.qx"; qy: "eo.qy"; qz: "eo.qz"; ra: "eo.ra"; rb: "eo.rb"; rc: "eo.rc"; rd: "eo.rd"; re: "eo.re"; rf: "eo.rf"; rg: "eo.rg"; rh: "eo.rh"; ri: "eo.ri"; rj: "eo.rj"; rk: "eo.rk"; rl: "eo.rl"; rm: "eo.rm"; rn: "eo.rn"; ro: "eo.ro"; rp: "eo.rp"; rq: "eo.rq"; rr: "eo.rr"; rs: "eo.rs"; rt: "eo.rt"; ru: "eo.ru"; rv: "eo.rv"; rw: "eo.rw"; rx: "eo.rx"; ry: "eo.ry"; rz: "eo.rz"; sa: "eo.sa"; sb: "eo.sb"; sc: "eo.sc"; sd: "eo.sd"; se: "eo.se"; sf: "eo.sf"; sg: "eo.sg"; sh: "eo.sh"; si: "eo.si"; sj: "eo.sj"; sk: "eo.sk"; sl: "eo.sl"; sm: "eo.sm"; sn: "eo.sn"; so: "eo.so"; sp: "eo.sp"; sq: "eo.sq"; sr: "eo.sr"; ss: "eo.ss"; st: "eo.st"; su: "eo.su"; sv: "eo.sv"; sw: "eo.sw"; sx: "eo.sx"; sy: "eo.sy"; sz: "eo.sz"; ta: "eo.ta"; tb: "eo.tb"; tc: "eo.tc"; td: "eo.td"; te: "eo.te"; tf: "eo.tf"; tg: "eo.tg"; th: "eo.th"; ti: "eo.ti"; tj: "eo.tj"; tk: "eo.tk"; tl: "eo.tl"; tm: "eo.tm"; tn: "eo.tn"; to: "eo.to"; tp: "eo.tp"; tq: "eo.tq"; tr: "eo.tr"; ts: "eo.ts"; tt: "eo.tt"; tu: "eo.tu"; tv: "eo.tv"; tw: "eo.tw"; tx: "eo.tx"; ty: "eo.ty"; tz: "eo.tz"; ua: "eo.ua"; ub: "eo.ub"; uc: "eo.uc"; ud: "eo.ud"; ue: "eo.ue"; uf: "eo.uf"; ug: "eo.ug"; uh: "eo.uh"; ui: "eo.ui"; uj: "eo.uj"; uk: "eo.uk"; ul: "eo.ul"; um: "eo.um"; un: "eo.un"; uo: "eo.uo"; up: "eo.up"; uq: "eo.uq"; ur: "eo.ur"; us: "eo.us"; ut: "eo.ut"; uu: "eo.uu"; uv: "eo.uv"; uw: "eo.uw"; ux: "eo.ux"; uy: "eo.uy"; uz: "eo.uz"; va: "eo.va"; vb: "eo.vb"; vc: "eo.vc"; vd: "eo.vd"; ve: "eo.ve"; vf: "eo.vf"; vg: "eo.vg"; vh: "eo.vh"; vi: "eo.vi"; vj: "eo.vj"; vk: "eo.vk"; vl: "eo.vl"; vm: "eo.vm"; vn: "eo.vn"; vo: "eo.vo"; vp: "eo.vp"; vq: "eo.vq"; vr: "eo.vr"; vs: "eo.vs"; vt: "eo.vt"; vu: "eo.vu"; vv: "eo.vv"; vw: "eo.vw"; vx: "eo.vx"; vy: "eo.vy"; vz: "eo.vz"; wa: "eo.wa"; wb: "eo.wb"; wc: "eo.wc"; wd: "eo.wd"; we: "eo.we"; wf: "eo.wf"; wg: "eo.wg"; wh: "eo.wh"; wi: "eo.wi"; wj: "eo.wj"; wk: "eo.wk"; wl: "eo.wl"; wm: "eo.wm"; wn: "eo.wn"; wo: "eo.wo"; wp: "eo.wp"; wq: "eo.wq"; wr: "eo.wr"; ws: "eo.ws"; wt: "eo.wt"; wu: "eo.wu"; wv: "eo.wv"; ww: "eo.ww"; wx: "eo.wx"; wy: "eo.wy"; wz: "eo.wz"; xa: "eo.xa"; xb: "eo.xb"; xc: "eo.xc"; xd: "eo.xd"; xe: "eo.xe"; xf: "eo.xf"; xg: "eo.xg"; xh: "eo.xh"; xi: "eo.xi"; xj: "eo.xj"; xk: "eo.xk"; xl: "eo.xl"; xm: "eo.xm"; xn: "eo.xn"; xo: "eo.xo"; xp: "eo.xp"; xq: "eo.xq"; xr: "eo.xr"; xs: "eo.xs"; xt: "eo.xt"; xu: "eo.xu"; xv: "eo.xv"; xw: "eo.xw"; xx: "eo.xx"; xy: "eo.xy"; xz: "eo.xz"; ya: "eo.ya"; yb: "eo.yb"; yc: "eo.yc"; yd: "eo.yd"; ye: "eo.ye"; yf: "eo.yf"; yg: "eo.yg"; yh: "eo.yh"; yi: "eo.yi"; yj: "eo.yj"; yk: "eo.yk"; yl: "eo.yl"; ym: "eo.ym"; yn: "eo.yn"; yo: "eo.yo"; yp: "eo.yp"; yq: "eo.yq"; yr: "eo.yr"; ys: "eo.ys"; yt: "eo.yt"; yu: "eo.yu"; yv: "eo.yv"; yw: "eo.yw"; yx: "eo.yx"; yy: "eo.yy"; yz: "eo.yz"; za: "eo.za"; zb: "eo.zb"; zc: "eo.zc"; zd: "eo.zd"; ze: "eo.ze"; zf: "eo.zf"; zg: "eo.zg"; zh: "eo.zh"; zi: "eo.zi"; zj: "eo.zj"; zk: "eo.zk"; zl: "eo.zl"; zm: "eo.zm"; zn: "eo.zn"; zo: "eo.zo"; zp: "eo.zp"; zq: "eo.zq"; zr: "eo.zr"; zs: "eo.zs"; zt: "eo.zt"; zu: "eo.zu"; zv: "eo.zv"; zw: "eo.zw"; zx: "eo.zx"; zy: "eo.zy"; zz: "eo.zz"; }; ep: { aa: "ep.aa"; ab: "ep.ab"; ac: "ep.ac"; ad: "ep.ad"; ae: "ep.ae"; af: "ep.af"; ag: "ep.ag"; ah: "ep.ah"; ai: "ep.ai"; aj: "ep.aj"; ak: "ep.ak"; al: "ep.al"; am: "ep.am"; an: "ep.an"; ao: "ep.ao"; ap: "ep.ap"; aq: "ep.aq"; ar: "ep.ar"; as: "ep.as"; at: "ep.at"; au: "ep.au"; av: "ep.av"; aw: "ep.aw"; ax: "ep.ax"; ay: "ep.ay"; az: "ep.az"; ba: "ep.ba"; bb: "ep.bb"; bc: "ep.bc"; bd: "ep.bd"; be: "ep.be"; bf: "ep.bf"; bg: "ep.bg"; bh: "ep.bh"; bi: "ep.bi"; bj: "ep.bj"; bk: "ep.bk"; bl: "ep.bl"; bm: "ep.bm"; bn: "ep.bn"; bo: "ep.bo"; bp: "ep.bp"; bq: "ep.bq"; br: "ep.br"; bs: "ep.bs"; bt: "ep.bt"; bu: "ep.bu"; bv: "ep.bv"; bw: "ep.bw"; bx: "ep.bx"; by: "ep.by"; bz: "ep.bz"; ca: "ep.ca"; cb: "ep.cb"; cc: "ep.cc"; cd: "ep.cd"; ce: "ep.ce"; cf: "ep.cf"; cg: "ep.cg"; ch: "ep.ch"; ci: "ep.ci"; cj: "ep.cj"; ck: "ep.ck"; cl: "ep.cl"; cm: "ep.cm"; cn: "ep.cn"; co: "ep.co"; cp: "ep.cp"; cq: "ep.cq"; cr: "ep.cr"; cs: "ep.cs"; ct: "ep.ct"; cu: "ep.cu"; cv: "ep.cv"; cw: "ep.cw"; cx: "ep.cx"; cy: "ep.cy"; cz: "ep.cz"; da: "ep.da"; db: "ep.db"; dc: "ep.dc"; dd: "ep.dd"; de: "ep.de"; df: "ep.df"; dg: "ep.dg"; dh: "ep.dh"; di: "ep.di"; dj: "ep.dj"; dk: "ep.dk"; dl: "ep.dl"; dm: "ep.dm"; dn: "ep.dn"; do: "ep.do"; dp: "ep.dp"; dq: "ep.dq"; dr: "ep.dr"; ds: "ep.ds"; dt: "ep.dt"; du: "ep.du"; dv: "ep.dv"; dw: "ep.dw"; dx: "ep.dx"; dy: "ep.dy"; dz: "ep.dz"; ea: "ep.ea"; eb: "ep.eb"; ec: "ep.ec"; ed: "ep.ed"; ee: "ep.ee"; ef: "ep.ef"; eg: "ep.eg"; eh: "ep.eh"; ei: "ep.ei"; ej: "ep.ej"; ek: "ep.ek"; el: "ep.el"; em: "ep.em"; en: "ep.en"; eo: "ep.eo"; ep: "ep.ep"; eq: "ep.eq"; er: "ep.er"; es: "ep.es"; et: "ep.et"; eu: "ep.eu"; ev: "ep.ev"; ew: "ep.ew"; ex: "ep.ex"; ey: "ep.ey"; ez: "ep.ez"; fa: "ep.fa"; fb: "ep.fb"; fc: "ep.fc"; fd: "ep.fd"; fe: "ep.fe"; ff: "ep.ff"; fg: "ep.fg"; fh: "ep.fh"; fi: "ep.fi"; fj: "ep.fj"; fk: "ep.fk"; fl: "ep.fl"; fm: "ep.fm"; fn: "ep.fn"; fo: "ep.fo"; fp: "ep.fp"; fq: "ep.fq"; fr: "ep.fr"; fs: "ep.fs"; ft: "ep.ft"; fu: "ep.fu"; fv: "ep.fv"; fw: "ep.fw"; fx: "ep.fx"; fy: "ep.fy"; fz: "ep.fz"; ga: "ep.ga"; gb: "ep.gb"; gc: "ep.gc"; gd: "ep.gd"; ge: "ep.ge"; gf: "ep.gf"; gg: "ep.gg"; gh: "ep.gh"; gi: "ep.gi"; gj: "ep.gj"; gk: "ep.gk"; gl: "ep.gl"; gm: "ep.gm"; gn: "ep.gn"; go: "ep.go"; gp: "ep.gp"; gq: "ep.gq"; gr: "ep.gr"; gs: "ep.gs"; gt: "ep.gt"; gu: "ep.gu"; gv: "ep.gv"; gw: "ep.gw"; gx: "ep.gx"; gy: "ep.gy"; gz: "ep.gz"; ha: "ep.ha"; hb: "ep.hb"; hc: "ep.hc"; hd: "ep.hd"; he: "ep.he"; hf: "ep.hf"; hg: "ep.hg"; hh: "ep.hh"; hi: "ep.hi"; hj: "ep.hj"; hk: "ep.hk"; hl: "ep.hl"; hm: "ep.hm"; hn: "ep.hn"; ho: "ep.ho"; hp: "ep.hp"; hq: "ep.hq"; hr: "ep.hr"; hs: "ep.hs"; ht: "ep.ht"; hu: "ep.hu"; hv: "ep.hv"; hw: "ep.hw"; hx: "ep.hx"; hy: "ep.hy"; hz: "ep.hz"; ia: "ep.ia"; ib: "ep.ib"; ic: "ep.ic"; id: "ep.id"; ie: "ep.ie"; if: "ep.if"; ig: "ep.ig"; ih: "ep.ih"; ii: "ep.ii"; ij: "ep.ij"; ik: "ep.ik"; il: "ep.il"; im: "ep.im"; in: "ep.in"; io: "ep.io"; ip: "ep.ip"; iq: "ep.iq"; ir: "ep.ir"; is: "ep.is"; it: "ep.it"; iu: "ep.iu"; iv: "ep.iv"; iw: "ep.iw"; ix: "ep.ix"; iy: "ep.iy"; iz: "ep.iz"; ja: "ep.ja"; jb: "ep.jb"; jc: "ep.jc"; jd: "ep.jd"; je: "ep.je"; jf: "ep.jf"; jg: "ep.jg"; jh: "ep.jh"; ji: "ep.ji"; jj: "ep.jj"; jk: "ep.jk"; jl: "ep.jl"; jm: "ep.jm"; jn: "ep.jn"; jo: "ep.jo"; jp: "ep.jp"; jq: "ep.jq"; jr: "ep.jr"; js: "ep.js"; jt: "ep.jt"; ju: "ep.ju"; jv: "ep.jv"; jw: "ep.jw"; jx: "ep.jx"; jy: "ep.jy"; jz: "ep.jz"; ka: "ep.ka"; kb: "ep.kb"; kc: "ep.kc"; kd: "ep.kd"; ke: "ep.ke"; kf: "ep.kf"; kg: "ep.kg"; kh: "ep.kh"; ki: "ep.ki"; kj: "ep.kj"; kk: "ep.kk"; kl: "ep.kl"; km: "ep.km"; kn: "ep.kn"; ko: "ep.ko"; kp: "ep.kp"; kq: "ep.kq"; kr: "ep.kr"; ks: "ep.ks"; kt: "ep.kt"; ku: "ep.ku"; kv: "ep.kv"; kw: "ep.kw"; kx: "ep.kx"; ky: "ep.ky"; kz: "ep.kz"; la: "ep.la"; lb: "ep.lb"; lc: "ep.lc"; ld: "ep.ld"; le: "ep.le"; lf: "ep.lf"; lg: "ep.lg"; lh: "ep.lh"; li: "ep.li"; lj: "ep.lj"; lk: "ep.lk"; ll: "ep.ll"; lm: "ep.lm"; ln: "ep.ln"; lo: "ep.lo"; lp: "ep.lp"; lq: "ep.lq"; lr: "ep.lr"; ls: "ep.ls"; lt: "ep.lt"; lu: "ep.lu"; lv: "ep.lv"; lw: "ep.lw"; lx: "ep.lx"; ly: "ep.ly"; lz: "ep.lz"; ma: "ep.ma"; mb: "ep.mb"; mc: "ep.mc"; md: "ep.md"; me: "ep.me"; mf: "ep.mf"; mg: "ep.mg"; mh: "ep.mh"; mi: "ep.mi"; mj: "ep.mj"; mk: "ep.mk"; ml: "ep.ml"; mm: "ep.mm"; mn: "ep.mn"; mo: "ep.mo"; mp: "ep.mp"; mq: "ep.mq"; mr: "ep.mr"; ms: "ep.ms"; mt: "ep.mt"; mu: "ep.mu"; mv: "ep.mv"; mw: "ep.mw"; mx: "ep.mx"; my: "ep.my"; mz: "ep.mz"; na: "ep.na"; nb: "ep.nb"; nc: "ep.nc"; nd: "ep.nd"; ne: "ep.ne"; nf: "ep.nf"; ng: "ep.ng"; nh: "ep.nh"; ni: "ep.ni"; nj: "ep.nj"; nk: "ep.nk"; nl: "ep.nl"; nm: "ep.nm"; nn: "ep.nn"; no: "ep.no"; np: "ep.np"; nq: "ep.nq"; nr: "ep.nr"; ns: "ep.ns"; nt: "ep.nt"; nu: "ep.nu"; nv: "ep.nv"; nw: "ep.nw"; nx: "ep.nx"; ny: "ep.ny"; nz: "ep.nz"; oa: "ep.oa"; ob: "ep.ob"; oc: "ep.oc"; od: "ep.od"; oe: "ep.oe"; of: "ep.of"; og: "ep.og"; oh: "ep.oh"; oi: "ep.oi"; oj: "ep.oj"; ok: "ep.ok"; ol: "ep.ol"; om: "ep.om"; on: "ep.on"; oo: "ep.oo"; op: "ep.op"; oq: "ep.oq"; or: "ep.or"; os: "ep.os"; ot: "ep.ot"; ou: "ep.ou"; ov: "ep.ov"; ow: "ep.ow"; ox: "ep.ox"; oy: "ep.oy"; oz: "ep.oz"; pa: "ep.pa"; pb: "ep.pb"; pc: "ep.pc"; pd: "ep.pd"; pe: "ep.pe"; pf: "ep.pf"; pg: "ep.pg"; ph: "ep.ph"; pi: "ep.pi"; pj: "ep.pj"; pk: "ep.pk"; pl: "ep.pl"; pm: "ep.pm"; pn: "ep.pn"; po: "ep.po"; pp: "ep.pp"; pq: "ep.pq"; pr: "ep.pr"; ps: "ep.ps"; pt: "ep.pt"; pu: "ep.pu"; pv: "ep.pv"; pw: "ep.pw"; px: "ep.px"; py: "ep.py"; pz: "ep.pz"; qa: "ep.qa"; qb: "ep.qb"; qc: "ep.qc"; qd: "ep.qd"; qe: "ep.qe"; qf: "ep.qf"; qg: "ep.qg"; qh: "ep.qh"; qi: "ep.qi"; qj: "ep.qj"; qk: "ep.qk"; ql: "ep.ql"; qm: "ep.qm"; qn: "ep.qn"; qo: "ep.qo"; qp: "ep.qp"; qq: "ep.qq"; qr: "ep.qr"; qs: "ep.qs"; qt: "ep.qt"; qu: "ep.qu"; qv: "ep.qv"; qw: "ep.qw"; qx: "ep.qx"; qy: "ep.qy"; qz: "ep.qz"; ra: "ep.ra"; rb: "ep.rb"; rc: "ep.rc"; rd: "ep.rd"; re: "ep.re"; rf: "ep.rf"; rg: "ep.rg"; rh: "ep.rh"; ri: "ep.ri"; rj: "ep.rj"; rk: "ep.rk"; rl: "ep.rl"; rm: "ep.rm"; rn: "ep.rn"; ro: "ep.ro"; rp: "ep.rp"; rq: "ep.rq"; rr: "ep.rr"; rs: "ep.rs"; rt: "ep.rt"; ru: "ep.ru"; rv: "ep.rv"; rw: "ep.rw"; rx: "ep.rx"; ry: "ep.ry"; rz: "ep.rz"; sa: "ep.sa"; sb: "ep.sb"; sc: "ep.sc"; sd: "ep.sd"; se: "ep.se"; sf: "ep.sf"; sg: "ep.sg"; sh: "ep.sh"; si: "ep.si"; sj: "ep.sj"; sk: "ep.sk"; sl: "ep.sl"; sm: "ep.sm"; sn: "ep.sn"; so: "ep.so"; sp: "ep.sp"; sq: "ep.sq"; sr: "ep.sr"; ss: "ep.ss"; st: "ep.st"; su: "ep.su"; sv: "ep.sv"; sw: "ep.sw"; sx: "ep.sx"; sy: "ep.sy"; sz: "ep.sz"; ta: "ep.ta"; tb: "ep.tb"; tc: "ep.tc"; td: "ep.td"; te: "ep.te"; tf: "ep.tf"; tg: "ep.tg"; th: "ep.th"; ti: "ep.ti"; tj: "ep.tj"; tk: "ep.tk"; tl: "ep.tl"; tm: "ep.tm"; tn: "ep.tn"; to: "ep.to"; tp: "ep.tp"; tq: "ep.tq"; tr: "ep.tr"; ts: "ep.ts"; tt: "ep.tt"; tu: "ep.tu"; tv: "ep.tv"; tw: "ep.tw"; tx: "ep.tx"; ty: "ep.ty"; tz: "ep.tz"; ua: "ep.ua"; ub: "ep.ub"; uc: "ep.uc"; ud: "ep.ud"; ue: "ep.ue"; uf: "ep.uf"; ug: "ep.ug"; uh: "ep.uh"; ui: "ep.ui"; uj: "ep.uj"; uk: "ep.uk"; ul: "ep.ul"; um: "ep.um"; un: "ep.un"; uo: "ep.uo"; up: "ep.up"; uq: "ep.uq"; ur: "ep.ur"; us: "ep.us"; ut: "ep.ut"; uu: "ep.uu"; uv: "ep.uv"; uw: "ep.uw"; ux: "ep.ux"; uy: "ep.uy"; uz: "ep.uz"; va: "ep.va"; vb: "ep.vb"; vc: "ep.vc"; vd: "ep.vd"; ve: "ep.ve"; vf: "ep.vf"; vg: "ep.vg"; vh: "ep.vh"; vi: "ep.vi"; vj: "ep.vj"; vk: "ep.vk"; vl: "ep.vl"; vm: "ep.vm"; vn: "ep.vn"; vo: "ep.vo"; vp: "ep.vp"; vq: "ep.vq"; vr: "ep.vr"; vs: "ep.vs"; vt: "ep.vt"; vu: "ep.vu"; vv: "ep.vv"; vw: "ep.vw"; vx: "ep.vx"; vy: "ep.vy"; vz: "ep.vz"; wa: "ep.wa"; wb: "ep.wb"; wc: "ep.wc"; wd: "ep.wd"; we: "ep.we"; wf: "ep.wf"; wg: "ep.wg"; wh: "ep.wh"; wi: "ep.wi"; wj: "ep.wj"; wk: "ep.wk"; wl: "ep.wl"; wm: "ep.wm"; wn: "ep.wn"; wo: "ep.wo"; wp: "ep.wp"; wq: "ep.wq"; wr: "ep.wr"; ws: "ep.ws"; wt: "ep.wt"; wu: "ep.wu"; wv: "ep.wv"; ww: "ep.ww"; wx: "ep.wx"; wy: "ep.wy"; wz: "ep.wz"; xa: "ep.xa"; xb: "ep.xb"; xc: "ep.xc"; xd: "ep.xd"; xe: "ep.xe"; xf: "ep.xf"; xg: "ep.xg"; xh: "ep.xh"; xi: "ep.xi"; xj: "ep.xj"; xk: "ep.xk"; xl: "ep.xl"; xm: "ep.xm"; xn: "ep.xn"; xo: "ep.xo"; xp: "ep.xp"; xq: "ep.xq"; xr: "ep.xr"; xs: "ep.xs"; xt: "ep.xt"; xu: "ep.xu"; xv: "ep.xv"; xw: "ep.xw"; xx: "ep.xx"; xy: "ep.xy"; xz: "ep.xz"; ya: "ep.ya"; yb: "ep.yb"; yc: "ep.yc"; yd: "ep.yd"; ye: "ep.ye"; yf: "ep.yf"; yg: "ep.yg"; yh: "ep.yh"; yi: "ep.yi"; yj: "ep.yj"; yk: "ep.yk"; yl: "ep.yl"; ym: "ep.ym"; yn: "ep.yn"; yo: "ep.yo"; yp: "ep.yp"; yq: "ep.yq"; yr: "ep.yr"; ys: "ep.ys"; yt: "ep.yt"; yu: "ep.yu"; yv: "ep.yv"; yw: "ep.yw"; yx: "ep.yx"; yy: "ep.yy"; yz: "ep.yz"; za: "ep.za"; zb: "ep.zb"; zc: "ep.zc"; zd: "ep.zd"; ze: "ep.ze"; zf: "ep.zf"; zg: "ep.zg"; zh: "ep.zh"; zi: "ep.zi"; zj: "ep.zj"; zk: "ep.zk"; zl: "ep.zl"; zm: "ep.zm"; zn: "ep.zn"; zo: "ep.zo"; zp: "ep.zp"; zq: "ep.zq"; zr: "ep.zr"; zs: "ep.zs"; zt: "ep.zt"; zu: "ep.zu"; zv: "ep.zv"; zw: "ep.zw"; zx: "ep.zx"; zy: "ep.zy"; zz: "ep.zz"; }; eq: { aa: "eq.aa"; ab: "eq.ab"; ac: "eq.ac"; ad: "eq.ad"; ae: "eq.ae"; af: "eq.af"; ag: "eq.ag"; ah: "eq.ah"; ai: "eq.ai"; aj: "eq.aj"; ak: "eq.ak"; al: "eq.al"; am: "eq.am"; an: "eq.an"; ao: "eq.ao"; ap: "eq.ap"; aq: "eq.aq"; ar: "eq.ar"; as: "eq.as"; at: "eq.at"; au: "eq.au"; av: "eq.av"; aw: "eq.aw"; ax: "eq.ax"; ay: "eq.ay"; az: "eq.az"; ba: "eq.ba"; bb: "eq.bb"; bc: "eq.bc"; bd: "eq.bd"; be: "eq.be"; bf: "eq.bf"; bg: "eq.bg"; bh: "eq.bh"; bi: "eq.bi"; bj: "eq.bj"; bk: "eq.bk"; bl: "eq.bl"; bm: "eq.bm"; bn: "eq.bn"; bo: "eq.bo"; bp: "eq.bp"; bq: "eq.bq"; br: "eq.br"; bs: "eq.bs"; bt: "eq.bt"; bu: "eq.bu"; bv: "eq.bv"; bw: "eq.bw"; bx: "eq.bx"; by: "eq.by"; bz: "eq.bz"; ca: "eq.ca"; cb: "eq.cb"; cc: "eq.cc"; cd: "eq.cd"; ce: "eq.ce"; cf: "eq.cf"; cg: "eq.cg"; ch: "eq.ch"; ci: "eq.ci"; cj: "eq.cj"; ck: "eq.ck"; cl: "eq.cl"; cm: "eq.cm"; cn: "eq.cn"; co: "eq.co"; cp: "eq.cp"; cq: "eq.cq"; cr: "eq.cr"; cs: "eq.cs"; ct: "eq.ct"; cu: "eq.cu"; cv: "eq.cv"; cw: "eq.cw"; cx: "eq.cx"; cy: "eq.cy"; cz: "eq.cz"; da: "eq.da"; db: "eq.db"; dc: "eq.dc"; dd: "eq.dd"; de: "eq.de"; df: "eq.df"; dg: "eq.dg"; dh: "eq.dh"; di: "eq.di"; dj: "eq.dj"; dk: "eq.dk"; dl: "eq.dl"; dm: "eq.dm"; dn: "eq.dn"; do: "eq.do"; dp: "eq.dp"; dq: "eq.dq"; dr: "eq.dr"; ds: "eq.ds"; dt: "eq.dt"; du: "eq.du"; dv: "eq.dv"; dw: "eq.dw"; dx: "eq.dx"; dy: "eq.dy"; dz: "eq.dz"; ea: "eq.ea"; eb: "eq.eb"; ec: "eq.ec"; ed: "eq.ed"; ee: "eq.ee"; ef: "eq.ef"; eg: "eq.eg"; eh: "eq.eh"; ei: "eq.ei"; ej: "eq.ej"; ek: "eq.ek"; el: "eq.el"; em: "eq.em"; en: "eq.en"; eo: "eq.eo"; ep: "eq.ep"; eq: "eq.eq"; er: "eq.er"; es: "eq.es"; et: "eq.et"; eu: "eq.eu"; ev: "eq.ev"; ew: "eq.ew"; ex: "eq.ex"; ey: "eq.ey"; ez: "eq.ez"; fa: "eq.fa"; fb: "eq.fb"; fc: "eq.fc"; fd: "eq.fd"; fe: "eq.fe"; ff: "eq.ff"; fg: "eq.fg"; fh: "eq.fh"; fi: "eq.fi"; fj: "eq.fj"; fk: "eq.fk"; fl: "eq.fl"; fm: "eq.fm"; fn: "eq.fn"; fo: "eq.fo"; fp: "eq.fp"; fq: "eq.fq"; fr: "eq.fr"; fs: "eq.fs"; ft: "eq.ft"; fu: "eq.fu"; fv: "eq.fv"; fw: "eq.fw"; fx: "eq.fx"; fy: "eq.fy"; fz: "eq.fz"; ga: "eq.ga"; gb: "eq.gb"; gc: "eq.gc"; gd: "eq.gd"; ge: "eq.ge"; gf: "eq.gf"; gg: "eq.gg"; gh: "eq.gh"; gi: "eq.gi"; gj: "eq.gj"; gk: "eq.gk"; gl: "eq.gl"; gm: "eq.gm"; gn: "eq.gn"; go: "eq.go"; gp: "eq.gp"; gq: "eq.gq"; gr: "eq.gr"; gs: "eq.gs"; gt: "eq.gt"; gu: "eq.gu"; gv: "eq.gv"; gw: "eq.gw"; gx: "eq.gx"; gy: "eq.gy"; gz: "eq.gz"; ha: "eq.ha"; hb: "eq.hb"; hc: "eq.hc"; hd: "eq.hd"; he: "eq.he"; hf: "eq.hf"; hg: "eq.hg"; hh: "eq.hh"; hi: "eq.hi"; hj: "eq.hj"; hk: "eq.hk"; hl: "eq.hl"; hm: "eq.hm"; hn: "eq.hn"; ho: "eq.ho"; hp: "eq.hp"; hq: "eq.hq"; hr: "eq.hr"; hs: "eq.hs"; ht: "eq.ht"; hu: "eq.hu"; hv: "eq.hv"; hw: "eq.hw"; hx: "eq.hx"; hy: "eq.hy"; hz: "eq.hz"; ia: "eq.ia"; ib: "eq.ib"; ic: "eq.ic"; id: "eq.id"; ie: "eq.ie"; if: "eq.if"; ig: "eq.ig"; ih: "eq.ih"; ii: "eq.ii"; ij: "eq.ij"; ik: "eq.ik"; il: "eq.il"; im: "eq.im"; in: "eq.in"; io: "eq.io"; ip: "eq.ip"; iq: "eq.iq"; ir: "eq.ir"; is: "eq.is"; it: "eq.it"; iu: "eq.iu"; iv: "eq.iv"; iw: "eq.iw"; ix: "eq.ix"; iy: "eq.iy"; iz: "eq.iz"; ja: "eq.ja"; jb: "eq.jb"; jc: "eq.jc"; jd: "eq.jd"; je: "eq.je"; jf: "eq.jf"; jg: "eq.jg"; jh: "eq.jh"; ji: "eq.ji"; jj: "eq.jj"; jk: "eq.jk"; jl: "eq.jl"; jm: "eq.jm"; jn: "eq.jn"; jo: "eq.jo"; jp: "eq.jp"; jq: "eq.jq"; jr: "eq.jr"; js: "eq.js"; jt: "eq.jt"; ju: "eq.ju"; jv: "eq.jv"; jw: "eq.jw"; jx: "eq.jx"; jy: "eq.jy"; jz: "eq.jz"; ka: "eq.ka"; kb: "eq.kb"; kc: "eq.kc"; kd: "eq.kd"; ke: "eq.ke"; kf: "eq.kf"; kg: "eq.kg"; kh: "eq.kh"; ki: "eq.ki"; kj: "eq.kj"; kk: "eq.kk"; kl: "eq.kl"; km: "eq.km"; kn: "eq.kn"; ko: "eq.ko"; kp: "eq.kp"; kq: "eq.kq"; kr: "eq.kr"; ks: "eq.ks"; kt: "eq.kt"; ku: "eq.ku"; kv: "eq.kv"; kw: "eq.kw"; kx: "eq.kx"; ky: "eq.ky"; kz: "eq.kz"; la: "eq.la"; lb: "eq.lb"; lc: "eq.lc"; ld: "eq.ld"; le: "eq.le"; lf: "eq.lf"; lg: "eq.lg"; lh: "eq.lh"; li: "eq.li"; lj: "eq.lj"; lk: "eq.lk"; ll: "eq.ll"; lm: "eq.lm"; ln: "eq.ln"; lo: "eq.lo"; lp: "eq.lp"; lq: "eq.lq"; lr: "eq.lr"; ls: "eq.ls"; lt: "eq.lt"; lu: "eq.lu"; lv: "eq.lv"; lw: "eq.lw"; lx: "eq.lx"; ly: "eq.ly"; lz: "eq.lz"; ma: "eq.ma"; mb: "eq.mb"; mc: "eq.mc"; md: "eq.md"; me: "eq.me"; mf: "eq.mf"; mg: "eq.mg"; mh: "eq.mh"; mi: "eq.mi"; mj: "eq.mj"; mk: "eq.mk"; ml: "eq.ml"; mm: "eq.mm"; mn: "eq.mn"; mo: "eq.mo"; mp: "eq.mp"; mq: "eq.mq"; mr: "eq.mr"; ms: "eq.ms"; mt: "eq.mt"; mu: "eq.mu"; mv: "eq.mv"; mw: "eq.mw"; mx: "eq.mx"; my: "eq.my"; mz: "eq.mz"; na: "eq.na"; nb: "eq.nb"; nc: "eq.nc"; nd: "eq.nd"; ne: "eq.ne"; nf: "eq.nf"; ng: "eq.ng"; nh: "eq.nh"; ni: "eq.ni"; nj: "eq.nj"; nk: "eq.nk"; nl: "eq.nl"; nm: "eq.nm"; nn: "eq.nn"; no: "eq.no"; np: "eq.np"; nq: "eq.nq"; nr: "eq.nr"; ns: "eq.ns"; nt: "eq.nt"; nu: "eq.nu"; nv: "eq.nv"; nw: "eq.nw"; nx: "eq.nx"; ny: "eq.ny"; nz: "eq.nz"; oa: "eq.oa"; ob: "eq.ob"; oc: "eq.oc"; od: "eq.od"; oe: "eq.oe"; of: "eq.of"; og: "eq.og"; oh: "eq.oh"; oi: "eq.oi"; oj: "eq.oj"; ok: "eq.ok"; ol: "eq.ol"; om: "eq.om"; on: "eq.on"; oo: "eq.oo"; op: "eq.op"; oq: "eq.oq"; or: "eq.or"; os: "eq.os"; ot: "eq.ot"; ou: "eq.ou"; ov: "eq.ov"; ow: "eq.ow"; ox: "eq.ox"; oy: "eq.oy"; oz: "eq.oz"; pa: "eq.pa"; pb: "eq.pb"; pc: "eq.pc"; pd: "eq.pd"; pe: "eq.pe"; pf: "eq.pf"; pg: "eq.pg"; ph: "eq.ph"; pi: "eq.pi"; pj: "eq.pj"; pk: "eq.pk"; pl: "eq.pl"; pm: "eq.pm"; pn: "eq.pn"; po: "eq.po"; pp: "eq.pp"; pq: "eq.pq"; pr: "eq.pr"; ps: "eq.ps"; pt: "eq.pt"; pu: "eq.pu"; pv: "eq.pv"; pw: "eq.pw"; px: "eq.px"; py: "eq.py"; pz: "eq.pz"; qa: "eq.qa"; qb: "eq.qb"; qc: "eq.qc"; qd: "eq.qd"; qe: "eq.qe"; qf: "eq.qf"; qg: "eq.qg"; qh: "eq.qh"; qi: "eq.qi"; qj: "eq.qj"; qk: "eq.qk"; ql: "eq.ql"; qm: "eq.qm"; qn: "eq.qn"; qo: "eq.qo"; qp: "eq.qp"; qq: "eq.qq"; qr: "eq.qr"; qs: "eq.qs"; qt: "eq.qt"; qu: "eq.qu"; qv: "eq.qv"; qw: "eq.qw"; qx: "eq.qx"; qy: "eq.qy"; qz: "eq.qz"; ra: "eq.ra"; rb: "eq.rb"; rc: "eq.rc"; rd: "eq.rd"; re: "eq.re"; rf: "eq.rf"; rg: "eq.rg"; rh: "eq.rh"; ri: "eq.ri"; rj: "eq.rj"; rk: "eq.rk"; rl: "eq.rl"; rm: "eq.rm"; rn: "eq.rn"; ro: "eq.ro"; rp: "eq.rp"; rq: "eq.rq"; rr: "eq.rr"; rs: "eq.rs"; rt: "eq.rt"; ru: "eq.ru"; rv: "eq.rv"; rw: "eq.rw"; rx: "eq.rx"; ry: "eq.ry"; rz: "eq.rz"; sa: "eq.sa"; sb: "eq.sb"; sc: "eq.sc"; sd: "eq.sd"; se: "eq.se"; sf: "eq.sf"; sg: "eq.sg"; sh: "eq.sh"; si: "eq.si"; sj: "eq.sj"; sk: "eq.sk"; sl: "eq.sl"; sm: "eq.sm"; sn: "eq.sn"; so: "eq.so"; sp: "eq.sp"; sq: "eq.sq"; sr: "eq.sr"; ss: "eq.ss"; st: "eq.st"; su: "eq.su"; sv: "eq.sv"; sw: "eq.sw"; sx: "eq.sx"; sy: "eq.sy"; sz: "eq.sz"; ta: "eq.ta"; tb: "eq.tb"; tc: "eq.tc"; td: "eq.td"; te: "eq.te"; tf: "eq.tf"; tg: "eq.tg"; th: "eq.th"; ti: "eq.ti"; tj: "eq.tj"; tk: "eq.tk"; tl: "eq.tl"; tm: "eq.tm"; tn: "eq.tn"; to: "eq.to"; tp: "eq.tp"; tq: "eq.tq"; tr: "eq.tr"; ts: "eq.ts"; tt: "eq.tt"; tu: "eq.tu"; tv: "eq.tv"; tw: "eq.tw"; tx: "eq.tx"; ty: "eq.ty"; tz: "eq.tz"; ua: "eq.ua"; ub: "eq.ub"; uc: "eq.uc"; ud: "eq.ud"; ue: "eq.ue"; uf: "eq.uf"; ug: "eq.ug"; uh: "eq.uh"; ui: "eq.ui"; uj: "eq.uj"; uk: "eq.uk"; ul: "eq.ul"; um: "eq.um"; un: "eq.un"; uo: "eq.uo"; up: "eq.up"; uq: "eq.uq"; ur: "eq.ur"; us: "eq.us"; ut: "eq.ut"; uu: "eq.uu"; uv: "eq.uv"; uw: "eq.uw"; ux: "eq.ux"; uy: "eq.uy"; uz: "eq.uz"; va: "eq.va"; vb: "eq.vb"; vc: "eq.vc"; vd: "eq.vd"; ve: "eq.ve"; vf: "eq.vf"; vg: "eq.vg"; vh: "eq.vh"; vi: "eq.vi"; vj: "eq.vj"; vk: "eq.vk"; vl: "eq.vl"; vm: "eq.vm"; vn: "eq.vn"; vo: "eq.vo"; vp: "eq.vp"; vq: "eq.vq"; vr: "eq.vr"; vs: "eq.vs"; vt: "eq.vt"; vu: "eq.vu"; vv: "eq.vv"; vw: "eq.vw"; vx: "eq.vx"; vy: "eq.vy"; vz: "eq.vz"; wa: "eq.wa"; wb: "eq.wb"; wc: "eq.wc"; wd: "eq.wd"; we: "eq.we"; wf: "eq.wf"; wg: "eq.wg"; wh: "eq.wh"; wi: "eq.wi"; wj: "eq.wj"; wk: "eq.wk"; wl: "eq.wl"; wm: "eq.wm"; wn: "eq.wn"; wo: "eq.wo"; wp: "eq.wp"; wq: "eq.wq"; wr: "eq.wr"; ws: "eq.ws"; wt: "eq.wt"; wu: "eq.wu"; wv: "eq.wv"; ww: "eq.ww"; wx: "eq.wx"; wy: "eq.wy"; wz: "eq.wz"; xa: "eq.xa"; xb: "eq.xb"; xc: "eq.xc"; xd: "eq.xd"; xe: "eq.xe"; xf: "eq.xf"; xg: "eq.xg"; xh: "eq.xh"; xi: "eq.xi"; xj: "eq.xj"; xk: "eq.xk"; xl: "eq.xl"; xm: "eq.xm"; xn: "eq.xn"; xo: "eq.xo"; xp: "eq.xp"; xq: "eq.xq"; xr: "eq.xr"; xs: "eq.xs"; xt: "eq.xt"; xu: "eq.xu"; xv: "eq.xv"; xw: "eq.xw"; xx: "eq.xx"; xy: "eq.xy"; xz: "eq.xz"; ya: "eq.ya"; yb: "eq.yb"; yc: "eq.yc"; yd: "eq.yd"; ye: "eq.ye"; yf: "eq.yf"; yg: "eq.yg"; yh: "eq.yh"; yi: "eq.yi"; yj: "eq.yj"; yk: "eq.yk"; yl: "eq.yl"; ym: "eq.ym"; yn: "eq.yn"; yo: "eq.yo"; yp: "eq.yp"; yq: "eq.yq"; yr: "eq.yr"; ys: "eq.ys"; yt: "eq.yt"; yu: "eq.yu"; yv: "eq.yv"; yw: "eq.yw"; yx: "eq.yx"; yy: "eq.yy"; yz: "eq.yz"; za: "eq.za"; zb: "eq.zb"; zc: "eq.zc"; zd: "eq.zd"; ze: "eq.ze"; zf: "eq.zf"; zg: "eq.zg"; zh: "eq.zh"; zi: "eq.zi"; zj: "eq.zj"; zk: "eq.zk"; zl: "eq.zl"; zm: "eq.zm"; zn: "eq.zn"; zo: "eq.zo"; zp: "eq.zp"; zq: "eq.zq"; zr: "eq.zr"; zs: "eq.zs"; zt: "eq.zt"; zu: "eq.zu"; zv: "eq.zv"; zw: "eq.zw"; zx: "eq.zx"; zy: "eq.zy"; zz: "eq.zz"; }; er: { aa: "er.aa"; ab: "er.ab"; ac: "er.ac"; ad: "er.ad"; ae: "er.ae"; af: "er.af"; ag: "er.ag"; ah: "er.ah"; ai: "er.ai"; aj: "er.aj"; ak: "er.ak"; al: "er.al"; am: "er.am"; an: "er.an"; ao: "er.ao"; ap: "er.ap"; aq: "er.aq"; ar: "er.ar"; as: "er.as"; at: "er.at"; au: "er.au"; av: "er.av"; aw: "er.aw"; ax: "er.ax"; ay: "er.ay"; az: "er.az"; ba: "er.ba"; bb: "er.bb"; bc: "er.bc"; bd: "er.bd"; be: "er.be"; bf: "er.bf"; bg: "er.bg"; bh: "er.bh"; bi: "er.bi"; bj: "er.bj"; bk: "er.bk"; bl: "er.bl"; bm: "er.bm"; bn: "er.bn"; bo: "er.bo"; bp: "er.bp"; bq: "er.bq"; br: "er.br"; bs: "er.bs"; bt: "er.bt"; bu: "er.bu"; bv: "er.bv"; bw: "er.bw"; bx: "er.bx"; by: "er.by"; bz: "er.bz"; ca: "er.ca"; cb: "er.cb"; cc: "er.cc"; cd: "er.cd"; ce: "er.ce"; cf: "er.cf"; cg: "er.cg"; ch: "er.ch"; ci: "er.ci"; cj: "er.cj"; ck: "er.ck"; cl: "er.cl"; cm: "er.cm"; cn: "er.cn"; co: "er.co"; cp: "er.cp"; cq: "er.cq"; cr: "er.cr"; cs: "er.cs"; ct: "er.ct"; cu: "er.cu"; cv: "er.cv"; cw: "er.cw"; cx: "er.cx"; cy: "er.cy"; cz: "er.cz"; da: "er.da"; db: "er.db"; dc: "er.dc"; dd: "er.dd"; de: "er.de"; df: "er.df"; dg: "er.dg"; dh: "er.dh"; di: "er.di"; dj: "er.dj"; dk: "er.dk"; dl: "er.dl"; dm: "er.dm"; dn: "er.dn"; do: "er.do"; dp: "er.dp"; dq: "er.dq"; dr: "er.dr"; ds: "er.ds"; dt: "er.dt"; du: "er.du"; dv: "er.dv"; dw: "er.dw"; dx: "er.dx"; dy: "er.dy"; dz: "er.dz"; ea: "er.ea"; eb: "er.eb"; ec: "er.ec"; ed: "er.ed"; ee: "er.ee"; ef: "er.ef"; eg: "er.eg"; eh: "er.eh"; ei: "er.ei"; ej: "er.ej"; ek: "er.ek"; el: "er.el"; em: "er.em"; en: "er.en"; eo: "er.eo"; ep: "er.ep"; eq: "er.eq"; er: "er.er"; es: "er.es"; et: "er.et"; eu: "er.eu"; ev: "er.ev"; ew: "er.ew"; ex: "er.ex"; ey: "er.ey"; ez: "er.ez"; fa: "er.fa"; fb: "er.fb"; fc: "er.fc"; fd: "er.fd"; fe: "er.fe"; ff: "er.ff"; fg: "er.fg"; fh: "er.fh"; fi: "er.fi"; fj: "er.fj"; fk: "er.fk"; fl: "er.fl"; fm: "er.fm"; fn: "er.fn"; fo: "er.fo"; fp: "er.fp"; fq: "er.fq"; fr: "er.fr"; fs: "er.fs"; ft: "er.ft"; fu: "er.fu"; fv: "er.fv"; fw: "er.fw"; fx: "er.fx"; fy: "er.fy"; fz: "er.fz"; ga: "er.ga"; gb: "er.gb"; gc: "er.gc"; gd: "er.gd"; ge: "er.ge"; gf: "er.gf"; gg: "er.gg"; gh: "er.gh"; gi: "er.gi"; gj: "er.gj"; gk: "er.gk"; gl: "er.gl"; gm: "er.gm"; gn: "er.gn"; go: "er.go"; gp: "er.gp"; gq: "er.gq"; gr: "er.gr"; gs: "er.gs"; gt: "er.gt"; gu: "er.gu"; gv: "er.gv"; gw: "er.gw"; gx: "er.gx"; gy: "er.gy"; gz: "er.gz"; ha: "er.ha"; hb: "er.hb"; hc: "er.hc"; hd: "er.hd"; he: "er.he"; hf: "er.hf"; hg: "er.hg"; hh: "er.hh"; hi: "er.hi"; hj: "er.hj"; hk: "er.hk"; hl: "er.hl"; hm: "er.hm"; hn: "er.hn"; ho: "er.ho"; hp: "er.hp"; hq: "er.hq"; hr: "er.hr"; hs: "er.hs"; ht: "er.ht"; hu: "er.hu"; hv: "er.hv"; hw: "er.hw"; hx: "er.hx"; hy: "er.hy"; hz: "er.hz"; ia: "er.ia"; ib: "er.ib"; ic: "er.ic"; id: "er.id"; ie: "er.ie"; if: "er.if"; ig: "er.ig"; ih: "er.ih"; ii: "er.ii"; ij: "er.ij"; ik: "er.ik"; il: "er.il"; im: "er.im"; in: "er.in"; io: "er.io"; ip: "er.ip"; iq: "er.iq"; ir: "er.ir"; is: "er.is"; it: "er.it"; iu: "er.iu"; iv: "er.iv"; iw: "er.iw"; ix: "er.ix"; iy: "er.iy"; iz: "er.iz"; ja: "er.ja"; jb: "er.jb"; jc: "er.jc"; jd: "er.jd"; je: "er.je"; jf: "er.jf"; jg: "er.jg"; jh: "er.jh"; ji: "er.ji"; jj: "er.jj"; jk: "er.jk"; jl: "er.jl"; jm: "er.jm"; jn: "er.jn"; jo: "er.jo"; jp: "er.jp"; jq: "er.jq"; jr: "er.jr"; js: "er.js"; jt: "er.jt"; ju: "er.ju"; jv: "er.jv"; jw: "er.jw"; jx: "er.jx"; jy: "er.jy"; jz: "er.jz"; ka: "er.ka"; kb: "er.kb"; kc: "er.kc"; kd: "er.kd"; ke: "er.ke"; kf: "er.kf"; kg: "er.kg"; kh: "er.kh"; ki: "er.ki"; kj: "er.kj"; kk: "er.kk"; kl: "er.kl"; km: "er.km"; kn: "er.kn"; ko: "er.ko"; kp: "er.kp"; kq: "er.kq"; kr: "er.kr"; ks: "er.ks"; kt: "er.kt"; ku: "er.ku"; kv: "er.kv"; kw: "er.kw"; kx: "er.kx"; ky: "er.ky"; kz: "er.kz"; la: "er.la"; lb: "er.lb"; lc: "er.lc"; ld: "er.ld"; le: "er.le"; lf: "er.lf"; lg: "er.lg"; lh: "er.lh"; li: "er.li"; lj: "er.lj"; lk: "er.lk"; ll: "er.ll"; lm: "er.lm"; ln: "er.ln"; lo: "er.lo"; lp: "er.lp"; lq: "er.lq"; lr: "er.lr"; ls: "er.ls"; lt: "er.lt"; lu: "er.lu"; lv: "er.lv"; lw: "er.lw"; lx: "er.lx"; ly: "er.ly"; lz: "er.lz"; ma: "er.ma"; mb: "er.mb"; mc: "er.mc"; md: "er.md"; me: "er.me"; mf: "er.mf"; mg: "er.mg"; mh: "er.mh"; mi: "er.mi"; mj: "er.mj"; mk: "er.mk"; ml: "er.ml"; mm: "er.mm"; mn: "er.mn"; mo: "er.mo"; mp: "er.mp"; mq: "er.mq"; mr: "er.mr"; ms: "er.ms"; mt: "er.mt"; mu: "er.mu"; mv: "er.mv"; mw: "er.mw"; mx: "er.mx"; my: "er.my"; mz: "er.mz"; na: "er.na"; nb: "er.nb"; nc: "er.nc"; nd: "er.nd"; ne: "er.ne"; nf: "er.nf"; ng: "er.ng"; nh: "er.nh"; ni: "er.ni"; nj: "er.nj"; nk: "er.nk"; nl: "er.nl"; nm: "er.nm"; nn: "er.nn"; no: "er.no"; np: "er.np"; nq: "er.nq"; nr: "er.nr"; ns: "er.ns"; nt: "er.nt"; nu: "er.nu"; nv: "er.nv"; nw: "er.nw"; nx: "er.nx"; ny: "er.ny"; nz: "er.nz"; oa: "er.oa"; ob: "er.ob"; oc: "er.oc"; od: "er.od"; oe: "er.oe"; of: "er.of"; og: "er.og"; oh: "er.oh"; oi: "er.oi"; oj: "er.oj"; ok: "er.ok"; ol: "er.ol"; om: "er.om"; on: "er.on"; oo: "er.oo"; op: "er.op"; oq: "er.oq"; or: "er.or"; os: "er.os"; ot: "er.ot"; ou: "er.ou"; ov: "er.ov"; ow: "er.ow"; ox: "er.ox"; oy: "er.oy"; oz: "er.oz"; pa: "er.pa"; pb: "er.pb"; pc: "er.pc"; pd: "er.pd"; pe: "er.pe"; pf: "er.pf"; pg: "er.pg"; ph: "er.ph"; pi: "er.pi"; pj: "er.pj"; pk: "er.pk"; pl: "er.pl"; pm: "er.pm"; pn: "er.pn"; po: "er.po"; pp: "er.pp"; pq: "er.pq"; pr: "er.pr"; ps: "er.ps"; pt: "er.pt"; pu: "er.pu"; pv: "er.pv"; pw: "er.pw"; px: "er.px"; py: "er.py"; pz: "er.pz"; qa: "er.qa"; qb: "er.qb"; qc: "er.qc"; qd: "er.qd"; qe: "er.qe"; qf: "er.qf"; qg: "er.qg"; qh: "er.qh"; qi: "er.qi"; qj: "er.qj"; qk: "er.qk"; ql: "er.ql"; qm: "er.qm"; qn: "er.qn"; qo: "er.qo"; qp: "er.qp"; qq: "er.qq"; qr: "er.qr"; qs: "er.qs"; qt: "er.qt"; qu: "er.qu"; qv: "er.qv"; qw: "er.qw"; qx: "er.qx"; qy: "er.qy"; qz: "er.qz"; ra: "er.ra"; rb: "er.rb"; rc: "er.rc"; rd: "er.rd"; re: "er.re"; rf: "er.rf"; rg: "er.rg"; rh: "er.rh"; ri: "er.ri"; rj: "er.rj"; rk: "er.rk"; rl: "er.rl"; rm: "er.rm"; rn: "er.rn"; ro: "er.ro"; rp: "er.rp"; rq: "er.rq"; rr: "er.rr"; rs: "er.rs"; rt: "er.rt"; ru: "er.ru"; rv: "er.rv"; rw: "er.rw"; rx: "er.rx"; ry: "er.ry"; rz: "er.rz"; sa: "er.sa"; sb: "er.sb"; sc: "er.sc"; sd: "er.sd"; se: "er.se"; sf: "er.sf"; sg: "er.sg"; sh: "er.sh"; si: "er.si"; sj: "er.sj"; sk: "er.sk"; sl: "er.sl"; sm: "er.sm"; sn: "er.sn"; so: "er.so"; sp: "er.sp"; sq: "er.sq"; sr: "er.sr"; ss: "er.ss"; st: "er.st"; su: "er.su"; sv: "er.sv"; sw: "er.sw"; sx: "er.sx"; sy: "er.sy"; sz: "er.sz"; ta: "er.ta"; tb: "er.tb"; tc: "er.tc"; td: "er.td"; te: "er.te"; tf: "er.tf"; tg: "er.tg"; th: "er.th"; ti: "er.ti"; tj: "er.tj"; tk: "er.tk"; tl: "er.tl"; tm: "er.tm"; tn: "er.tn"; to: "er.to"; tp: "er.tp"; tq: "er.tq"; tr: "er.tr"; ts: "er.ts"; tt: "er.tt"; tu: "er.tu"; tv: "er.tv"; tw: "er.tw"; tx: "er.tx"; ty: "er.ty"; tz: "er.tz"; ua: "er.ua"; ub: "er.ub"; uc: "er.uc"; ud: "er.ud"; ue: "er.ue"; uf: "er.uf"; ug: "er.ug"; uh: "er.uh"; ui: "er.ui"; uj: "er.uj"; uk: "er.uk"; ul: "er.ul"; um: "er.um"; un: "er.un"; uo: "er.uo"; up: "er.up"; uq: "er.uq"; ur: "er.ur"; us: "er.us"; ut: "er.ut"; uu: "er.uu"; uv: "er.uv"; uw: "er.uw"; ux: "er.ux"; uy: "er.uy"; uz: "er.uz"; va: "er.va"; vb: "er.vb"; vc: "er.vc"; vd: "er.vd"; ve: "er.ve"; vf: "er.vf"; vg: "er.vg"; vh: "er.vh"; vi: "er.vi"; vj: "er.vj"; vk: "er.vk"; vl: "er.vl"; vm: "er.vm"; vn: "er.vn"; vo: "er.vo"; vp: "er.vp"; vq: "er.vq"; vr: "er.vr"; vs: "er.vs"; vt: "er.vt"; vu: "er.vu"; vv: "er.vv"; vw: "er.vw"; vx: "er.vx"; vy: "er.vy"; vz: "er.vz"; wa: "er.wa"; wb: "er.wb"; wc: "er.wc"; wd: "er.wd"; we: "er.we"; wf: "er.wf"; wg: "er.wg"; wh: "er.wh"; wi: "er.wi"; wj: "er.wj"; wk: "er.wk"; wl: "er.wl"; wm: "er.wm"; wn: "er.wn"; wo: "er.wo"; wp: "er.wp"; wq: "er.wq"; wr: "er.wr"; ws: "er.ws"; wt: "er.wt"; wu: "er.wu"; wv: "er.wv"; ww: "er.ww"; wx: "er.wx"; wy: "er.wy"; wz: "er.wz"; xa: "er.xa"; xb: "er.xb"; xc: "er.xc"; xd: "er.xd"; xe: "er.xe"; xf: "er.xf"; xg: "er.xg"; xh: "er.xh"; xi: "er.xi"; xj: "er.xj"; xk: "er.xk"; xl: "er.xl"; xm: "er.xm"; xn: "er.xn"; xo: "er.xo"; xp: "er.xp"; xq: "er.xq"; xr: "er.xr"; xs: "er.xs"; xt: "er.xt"; xu: "er.xu"; xv: "er.xv"; xw: "er.xw"; xx: "er.xx"; xy: "er.xy"; xz: "er.xz"; ya: "er.ya"; yb: "er.yb"; yc: "er.yc"; yd: "er.yd"; ye: "er.ye"; yf: "er.yf"; yg: "er.yg"; yh: "er.yh"; yi: "er.yi"; yj: "er.yj"; yk: "er.yk"; yl: "er.yl"; ym: "er.ym"; yn: "er.yn"; yo: "er.yo"; yp: "er.yp"; yq: "er.yq"; yr: "er.yr"; ys: "er.ys"; yt: "er.yt"; yu: "er.yu"; yv: "er.yv"; yw: "er.yw"; yx: "er.yx"; yy: "er.yy"; yz: "er.yz"; za: "er.za"; zb: "er.zb"; zc: "er.zc"; zd: "er.zd"; ze: "er.ze"; zf: "er.zf"; zg: "er.zg"; zh: "er.zh"; zi: "er.zi"; zj: "er.zj"; zk: "er.zk"; zl: "er.zl"; zm: "er.zm"; zn: "er.zn"; zo: "er.zo"; zp: "er.zp"; zq: "er.zq"; zr: "er.zr"; zs: "er.zs"; zt: "er.zt"; zu: "er.zu"; zv: "er.zv"; zw: "er.zw"; zx: "er.zx"; zy: "er.zy"; zz: "er.zz"; }; es: { aa: "es.aa"; ab: "es.ab"; ac: "es.ac"; ad: "es.ad"; ae: "es.ae"; af: "es.af"; ag: "es.ag"; ah: "es.ah"; ai: "es.ai"; aj: "es.aj"; ak: "es.ak"; al: "es.al"; am: "es.am"; an: "es.an"; ao: "es.ao"; ap: "es.ap"; aq: "es.aq"; ar: "es.ar"; as: "es.as"; at: "es.at"; au: "es.au"; av: "es.av"; aw: "es.aw"; ax: "es.ax"; ay: "es.ay"; az: "es.az"; ba: "es.ba"; bb: "es.bb"; bc: "es.bc"; bd: "es.bd"; be: "es.be"; bf: "es.bf"; bg: "es.bg"; bh: "es.bh"; bi: "es.bi"; bj: "es.bj"; bk: "es.bk"; bl: "es.bl"; bm: "es.bm"; bn: "es.bn"; bo: "es.bo"; bp: "es.bp"; bq: "es.bq"; br: "es.br"; bs: "es.bs"; bt: "es.bt"; bu: "es.bu"; bv: "es.bv"; bw: "es.bw"; bx: "es.bx"; by: "es.by"; bz: "es.bz"; ca: "es.ca"; cb: "es.cb"; cc: "es.cc"; cd: "es.cd"; ce: "es.ce"; cf: "es.cf"; cg: "es.cg"; ch: "es.ch"; ci: "es.ci"; cj: "es.cj"; ck: "es.ck"; cl: "es.cl"; cm: "es.cm"; cn: "es.cn"; co: "es.co"; cp: "es.cp"; cq: "es.cq"; cr: "es.cr"; cs: "es.cs"; ct: "es.ct"; cu: "es.cu"; cv: "es.cv"; cw: "es.cw"; cx: "es.cx"; cy: "es.cy"; cz: "es.cz"; da: "es.da"; db: "es.db"; dc: "es.dc"; dd: "es.dd"; de: "es.de"; df: "es.df"; dg: "es.dg"; dh: "es.dh"; di: "es.di"; dj: "es.dj"; dk: "es.dk"; dl: "es.dl"; dm: "es.dm"; dn: "es.dn"; do: "es.do"; dp: "es.dp"; dq: "es.dq"; dr: "es.dr"; ds: "es.ds"; dt: "es.dt"; du: "es.du"; dv: "es.dv"; dw: "es.dw"; dx: "es.dx"; dy: "es.dy"; dz: "es.dz"; ea: "es.ea"; eb: "es.eb"; ec: "es.ec"; ed: "es.ed"; ee: "es.ee"; ef: "es.ef"; eg: "es.eg"; eh: "es.eh"; ei: "es.ei"; ej: "es.ej"; ek: "es.ek"; el: "es.el"; em: "es.em"; en: "es.en"; eo: "es.eo"; ep: "es.ep"; eq: "es.eq"; er: "es.er"; es: "es.es"; et: "es.et"; eu: "es.eu"; ev: "es.ev"; ew: "es.ew"; ex: "es.ex"; ey: "es.ey"; ez: "es.ez"; fa: "es.fa"; fb: "es.fb"; fc: "es.fc"; fd: "es.fd"; fe: "es.fe"; ff: "es.ff"; fg: "es.fg"; fh: "es.fh"; fi: "es.fi"; fj: "es.fj"; fk: "es.fk"; fl: "es.fl"; fm: "es.fm"; fn: "es.fn"; fo: "es.fo"; fp: "es.fp"; fq: "es.fq"; fr: "es.fr"; fs: "es.fs"; ft: "es.ft"; fu: "es.fu"; fv: "es.fv"; fw: "es.fw"; fx: "es.fx"; fy: "es.fy"; fz: "es.fz"; ga: "es.ga"; gb: "es.gb"; gc: "es.gc"; gd: "es.gd"; ge: "es.ge"; gf: "es.gf"; gg: "es.gg"; gh: "es.gh"; gi: "es.gi"; gj: "es.gj"; gk: "es.gk"; gl: "es.gl"; gm: "es.gm"; gn: "es.gn"; go: "es.go"; gp: "es.gp"; gq: "es.gq"; gr: "es.gr"; gs: "es.gs"; gt: "es.gt"; gu: "es.gu"; gv: "es.gv"; gw: "es.gw"; gx: "es.gx"; gy: "es.gy"; gz: "es.gz"; ha: "es.ha"; hb: "es.hb"; hc: "es.hc"; hd: "es.hd"; he: "es.he"; hf: "es.hf"; hg: "es.hg"; hh: "es.hh"; hi: "es.hi"; hj: "es.hj"; hk: "es.hk"; hl: "es.hl"; hm: "es.hm"; hn: "es.hn"; ho: "es.ho"; hp: "es.hp"; hq: "es.hq"; hr: "es.hr"; hs: "es.hs"; ht: "es.ht"; hu: "es.hu"; hv: "es.hv"; hw: "es.hw"; hx: "es.hx"; hy: "es.hy"; hz: "es.hz"; ia: "es.ia"; ib: "es.ib"; ic: "es.ic"; id: "es.id"; ie: "es.ie"; if: "es.if"; ig: "es.ig"; ih: "es.ih"; ii: "es.ii"; ij: "es.ij"; ik: "es.ik"; il: "es.il"; im: "es.im"; in: "es.in"; io: "es.io"; ip: "es.ip"; iq: "es.iq"; ir: "es.ir"; is: "es.is"; it: "es.it"; iu: "es.iu"; iv: "es.iv"; iw: "es.iw"; ix: "es.ix"; iy: "es.iy"; iz: "es.iz"; ja: "es.ja"; jb: "es.jb"; jc: "es.jc"; jd: "es.jd"; je: "es.je"; jf: "es.jf"; jg: "es.jg"; jh: "es.jh"; ji: "es.ji"; jj: "es.jj"; jk: "es.jk"; jl: "es.jl"; jm: "es.jm"; jn: "es.jn"; jo: "es.jo"; jp: "es.jp"; jq: "es.jq"; jr: "es.jr"; js: "es.js"; jt: "es.jt"; ju: "es.ju"; jv: "es.jv"; jw: "es.jw"; jx: "es.jx"; jy: "es.jy"; jz: "es.jz"; ka: "es.ka"; kb: "es.kb"; kc: "es.kc"; kd: "es.kd"; ke: "es.ke"; kf: "es.kf"; kg: "es.kg"; kh: "es.kh"; ki: "es.ki"; kj: "es.kj"; kk: "es.kk"; kl: "es.kl"; km: "es.km"; kn: "es.kn"; ko: "es.ko"; kp: "es.kp"; kq: "es.kq"; kr: "es.kr"; ks: "es.ks"; kt: "es.kt"; ku: "es.ku"; kv: "es.kv"; kw: "es.kw"; kx: "es.kx"; ky: "es.ky"; kz: "es.kz"; la: "es.la"; lb: "es.lb"; lc: "es.lc"; ld: "es.ld"; le: "es.le"; lf: "es.lf"; lg: "es.lg"; lh: "es.lh"; li: "es.li"; lj: "es.lj"; lk: "es.lk"; ll: "es.ll"; lm: "es.lm"; ln: "es.ln"; lo: "es.lo"; lp: "es.lp"; lq: "es.lq"; lr: "es.lr"; ls: "es.ls"; lt: "es.lt"; lu: "es.lu"; lv: "es.lv"; lw: "es.lw"; lx: "es.lx"; ly: "es.ly"; lz: "es.lz"; ma: "es.ma"; mb: "es.mb"; mc: "es.mc"; md: "es.md"; me: "es.me"; mf: "es.mf"; mg: "es.mg"; mh: "es.mh"; mi: "es.mi"; mj: "es.mj"; mk: "es.mk"; ml: "es.ml"; mm: "es.mm"; mn: "es.mn"; mo: "es.mo"; mp: "es.mp"; mq: "es.mq"; mr: "es.mr"; ms: "es.ms"; mt: "es.mt"; mu: "es.mu"; mv: "es.mv"; mw: "es.mw"; mx: "es.mx"; my: "es.my"; mz: "es.mz"; na: "es.na"; nb: "es.nb"; nc: "es.nc"; nd: "es.nd"; ne: "es.ne"; nf: "es.nf"; ng: "es.ng"; nh: "es.nh"; ni: "es.ni"; nj: "es.nj"; nk: "es.nk"; nl: "es.nl"; nm: "es.nm"; nn: "es.nn"; no: "es.no"; np: "es.np"; nq: "es.nq"; nr: "es.nr"; ns: "es.ns"; nt: "es.nt"; nu: "es.nu"; nv: "es.nv"; nw: "es.nw"; nx: "es.nx"; ny: "es.ny"; nz: "es.nz"; oa: "es.oa"; ob: "es.ob"; oc: "es.oc"; od: "es.od"; oe: "es.oe"; of: "es.of"; og: "es.og"; oh: "es.oh"; oi: "es.oi"; oj: "es.oj"; ok: "es.ok"; ol: "es.ol"; om: "es.om"; on: "es.on"; oo: "es.oo"; op: "es.op"; oq: "es.oq"; or: "es.or"; os: "es.os"; ot: "es.ot"; ou: "es.ou"; ov: "es.ov"; ow: "es.ow"; ox: "es.ox"; oy: "es.oy"; oz: "es.oz"; pa: "es.pa"; pb: "es.pb"; pc: "es.pc"; pd: "es.pd"; pe: "es.pe"; pf: "es.pf"; pg: "es.pg"; ph: "es.ph"; pi: "es.pi"; pj: "es.pj"; pk: "es.pk"; pl: "es.pl"; pm: "es.pm"; pn: "es.pn"; po: "es.po"; pp: "es.pp"; pq: "es.pq"; pr: "es.pr"; ps: "es.ps"; pt: "es.pt"; pu: "es.pu"; pv: "es.pv"; pw: "es.pw"; px: "es.px"; py: "es.py"; pz: "es.pz"; qa: "es.qa"; qb: "es.qb"; qc: "es.qc"; qd: "es.qd"; qe: "es.qe"; qf: "es.qf"; qg: "es.qg"; qh: "es.qh"; qi: "es.qi"; qj: "es.qj"; qk: "es.qk"; ql: "es.ql"; qm: "es.qm"; qn: "es.qn"; qo: "es.qo"; qp: "es.qp"; qq: "es.qq"; qr: "es.qr"; qs: "es.qs"; qt: "es.qt"; qu: "es.qu"; qv: "es.qv"; qw: "es.qw"; qx: "es.qx"; qy: "es.qy"; qz: "es.qz"; ra: "es.ra"; rb: "es.rb"; rc: "es.rc"; rd: "es.rd"; re: "es.re"; rf: "es.rf"; rg: "es.rg"; rh: "es.rh"; ri: "es.ri"; rj: "es.rj"; rk: "es.rk"; rl: "es.rl"; rm: "es.rm"; rn: "es.rn"; ro: "es.ro"; rp: "es.rp"; rq: "es.rq"; rr: "es.rr"; rs: "es.rs"; rt: "es.rt"; ru: "es.ru"; rv: "es.rv"; rw: "es.rw"; rx: "es.rx"; ry: "es.ry"; rz: "es.rz"; sa: "es.sa"; sb: "es.sb"; sc: "es.sc"; sd: "es.sd"; se: "es.se"; sf: "es.sf"; sg: "es.sg"; sh: "es.sh"; si: "es.si"; sj: "es.sj"; sk: "es.sk"; sl: "es.sl"; sm: "es.sm"; sn: "es.sn"; so: "es.so"; sp: "es.sp"; sq: "es.sq"; sr: "es.sr"; ss: "es.ss"; st: "es.st"; su: "es.su"; sv: "es.sv"; sw: "es.sw"; sx: "es.sx"; sy: "es.sy"; sz: "es.sz"; ta: "es.ta"; tb: "es.tb"; tc: "es.tc"; td: "es.td"; te: "es.te"; tf: "es.tf"; tg: "es.tg"; th: "es.th"; ti: "es.ti"; tj: "es.tj"; tk: "es.tk"; tl: "es.tl"; tm: "es.tm"; tn: "es.tn"; to: "es.to"; tp: "es.tp"; tq: "es.tq"; tr: "es.tr"; ts: "es.ts"; tt: "es.tt"; tu: "es.tu"; tv: "es.tv"; tw: "es.tw"; tx: "es.tx"; ty: "es.ty"; tz: "es.tz"; ua: "es.ua"; ub: "es.ub"; uc: "es.uc"; ud: "es.ud"; ue: "es.ue"; uf: "es.uf"; ug: "es.ug"; uh: "es.uh"; ui: "es.ui"; uj: "es.uj"; uk: "es.uk"; ul: "es.ul"; um: "es.um"; un: "es.un"; uo: "es.uo"; up: "es.up"; uq: "es.uq"; ur: "es.ur"; us: "es.us"; ut: "es.ut"; uu: "es.uu"; uv: "es.uv"; uw: "es.uw"; ux: "es.ux"; uy: "es.uy"; uz: "es.uz"; va: "es.va"; vb: "es.vb"; vc: "es.vc"; vd: "es.vd"; ve: "es.ve"; vf: "es.vf"; vg: "es.vg"; vh: "es.vh"; vi: "es.vi"; vj: "es.vj"; vk: "es.vk"; vl: "es.vl"; vm: "es.vm"; vn: "es.vn"; vo: "es.vo"; vp: "es.vp"; vq: "es.vq"; vr: "es.vr"; vs: "es.vs"; vt: "es.vt"; vu: "es.vu"; vv: "es.vv"; vw: "es.vw"; vx: "es.vx"; vy: "es.vy"; vz: "es.vz"; wa: "es.wa"; wb: "es.wb"; wc: "es.wc"; wd: "es.wd"; we: "es.we"; wf: "es.wf"; wg: "es.wg"; wh: "es.wh"; wi: "es.wi"; wj: "es.wj"; wk: "es.wk"; wl: "es.wl"; wm: "es.wm"; wn: "es.wn"; wo: "es.wo"; wp: "es.wp"; wq: "es.wq"; wr: "es.wr"; ws: "es.ws"; wt: "es.wt"; wu: "es.wu"; wv: "es.wv"; ww: "es.ww"; wx: "es.wx"; wy: "es.wy"; wz: "es.wz"; xa: "es.xa"; xb: "es.xb"; xc: "es.xc"; xd: "es.xd"; xe: "es.xe"; xf: "es.xf"; xg: "es.xg"; xh: "es.xh"; xi: "es.xi"; xj: "es.xj"; xk: "es.xk"; xl: "es.xl"; xm: "es.xm"; xn: "es.xn"; xo: "es.xo"; xp: "es.xp"; xq: "es.xq"; xr: "es.xr"; xs: "es.xs"; xt: "es.xt"; xu: "es.xu"; xv: "es.xv"; xw: "es.xw"; xx: "es.xx"; xy: "es.xy"; xz: "es.xz"; ya: "es.ya"; yb: "es.yb"; yc: "es.yc"; yd: "es.yd"; ye: "es.ye"; yf: "es.yf"; yg: "es.yg"; yh: "es.yh"; yi: "es.yi"; yj: "es.yj"; yk: "es.yk"; yl: "es.yl"; ym: "es.ym"; yn: "es.yn"; yo: "es.yo"; yp: "es.yp"; yq: "es.yq"; yr: "es.yr"; ys: "es.ys"; yt: "es.yt"; yu: "es.yu"; yv: "es.yv"; yw: "es.yw"; yx: "es.yx"; yy: "es.yy"; yz: "es.yz"; za: "es.za"; zb: "es.zb"; zc: "es.zc"; zd: "es.zd"; ze: "es.ze"; zf: "es.zf"; zg: "es.zg"; zh: "es.zh"; zi: "es.zi"; zj: "es.zj"; zk: "es.zk"; zl: "es.zl"; zm: "es.zm"; zn: "es.zn"; zo: "es.zo"; zp: "es.zp"; zq: "es.zq"; zr: "es.zr"; zs: "es.zs"; zt: "es.zt"; zu: "es.zu"; zv: "es.zv"; zw: "es.zw"; zx: "es.zx"; zy: "es.zy"; zz: "es.zz"; }; et: { aa: "et.aa"; ab: "et.ab"; ac: "et.ac"; ad: "et.ad"; ae: "et.ae"; af: "et.af"; ag: "et.ag"; ah: "et.ah"; ai: "et.ai"; aj: "et.aj"; ak: "et.ak"; al: "et.al"; am: "et.am"; an: "et.an"; ao: "et.ao"; ap: "et.ap"; aq: "et.aq"; ar: "et.ar"; as: "et.as"; at: "et.at"; au: "et.au"; av: "et.av"; aw: "et.aw"; ax: "et.ax"; ay: "et.ay"; az: "et.az"; ba: "et.ba"; bb: "et.bb"; bc: "et.bc"; bd: "et.bd"; be: "et.be"; bf: "et.bf"; bg: "et.bg"; bh: "et.bh"; bi: "et.bi"; bj: "et.bj"; bk: "et.bk"; bl: "et.bl"; bm: "et.bm"; bn: "et.bn"; bo: "et.bo"; bp: "et.bp"; bq: "et.bq"; br: "et.br"; bs: "et.bs"; bt: "et.bt"; bu: "et.bu"; bv: "et.bv"; bw: "et.bw"; bx: "et.bx"; by: "et.by"; bz: "et.bz"; ca: "et.ca"; cb: "et.cb"; cc: "et.cc"; cd: "et.cd"; ce: "et.ce"; cf: "et.cf"; cg: "et.cg"; ch: "et.ch"; ci: "et.ci"; cj: "et.cj"; ck: "et.ck"; cl: "et.cl"; cm: "et.cm"; cn: "et.cn"; co: "et.co"; cp: "et.cp"; cq: "et.cq"; cr: "et.cr"; cs: "et.cs"; ct: "et.ct"; cu: "et.cu"; cv: "et.cv"; cw: "et.cw"; cx: "et.cx"; cy: "et.cy"; cz: "et.cz"; da: "et.da"; db: "et.db"; dc: "et.dc"; dd: "et.dd"; de: "et.de"; df: "et.df"; dg: "et.dg"; dh: "et.dh"; di: "et.di"; dj: "et.dj"; dk: "et.dk"; dl: "et.dl"; dm: "et.dm"; dn: "et.dn"; do: "et.do"; dp: "et.dp"; dq: "et.dq"; dr: "et.dr"; ds: "et.ds"; dt: "et.dt"; du: "et.du"; dv: "et.dv"; dw: "et.dw"; dx: "et.dx"; dy: "et.dy"; dz: "et.dz"; ea: "et.ea"; eb: "et.eb"; ec: "et.ec"; ed: "et.ed"; ee: "et.ee"; ef: "et.ef"; eg: "et.eg"; eh: "et.eh"; ei: "et.ei"; ej: "et.ej"; ek: "et.ek"; el: "et.el"; em: "et.em"; en: "et.en"; eo: "et.eo"; ep: "et.ep"; eq: "et.eq"; er: "et.er"; es: "et.es"; et: "et.et"; eu: "et.eu"; ev: "et.ev"; ew: "et.ew"; ex: "et.ex"; ey: "et.ey"; ez: "et.ez"; fa: "et.fa"; fb: "et.fb"; fc: "et.fc"; fd: "et.fd"; fe: "et.fe"; ff: "et.ff"; fg: "et.fg"; fh: "et.fh"; fi: "et.fi"; fj: "et.fj"; fk: "et.fk"; fl: "et.fl"; fm: "et.fm"; fn: "et.fn"; fo: "et.fo"; fp: "et.fp"; fq: "et.fq"; fr: "et.fr"; fs: "et.fs"; ft: "et.ft"; fu: "et.fu"; fv: "et.fv"; fw: "et.fw"; fx: "et.fx"; fy: "et.fy"; fz: "et.fz"; ga: "et.ga"; gb: "et.gb"; gc: "et.gc"; gd: "et.gd"; ge: "et.ge"; gf: "et.gf"; gg: "et.gg"; gh: "et.gh"; gi: "et.gi"; gj: "et.gj"; gk: "et.gk"; gl: "et.gl"; gm: "et.gm"; gn: "et.gn"; go: "et.go"; gp: "et.gp"; gq: "et.gq"; gr: "et.gr"; gs: "et.gs"; gt: "et.gt"; gu: "et.gu"; gv: "et.gv"; gw: "et.gw"; gx: "et.gx"; gy: "et.gy"; gz: "et.gz"; ha: "et.ha"; hb: "et.hb"; hc: "et.hc"; hd: "et.hd"; he: "et.he"; hf: "et.hf"; hg: "et.hg"; hh: "et.hh"; hi: "et.hi"; hj: "et.hj"; hk: "et.hk"; hl: "et.hl"; hm: "et.hm"; hn: "et.hn"; ho: "et.ho"; hp: "et.hp"; hq: "et.hq"; hr: "et.hr"; hs: "et.hs"; ht: "et.ht"; hu: "et.hu"; hv: "et.hv"; hw: "et.hw"; hx: "et.hx"; hy: "et.hy"; hz: "et.hz"; ia: "et.ia"; ib: "et.ib"; ic: "et.ic"; id: "et.id"; ie: "et.ie"; if: "et.if"; ig: "et.ig"; ih: "et.ih"; ii: "et.ii"; ij: "et.ij"; ik: "et.ik"; il: "et.il"; im: "et.im"; in: "et.in"; io: "et.io"; ip: "et.ip"; iq: "et.iq"; ir: "et.ir"; is: "et.is"; it: "et.it"; iu: "et.iu"; iv: "et.iv"; iw: "et.iw"; ix: "et.ix"; iy: "et.iy"; iz: "et.iz"; ja: "et.ja"; jb: "et.jb"; jc: "et.jc"; jd: "et.jd"; je: "et.je"; jf: "et.jf"; jg: "et.jg"; jh: "et.jh"; ji: "et.ji"; jj: "et.jj"; jk: "et.jk"; jl: "et.jl"; jm: "et.jm"; jn: "et.jn"; jo: "et.jo"; jp: "et.jp"; jq: "et.jq"; jr: "et.jr"; js: "et.js"; jt: "et.jt"; ju: "et.ju"; jv: "et.jv"; jw: "et.jw"; jx: "et.jx"; jy: "et.jy"; jz: "et.jz"; ka: "et.ka"; kb: "et.kb"; kc: "et.kc"; kd: "et.kd"; ke: "et.ke"; kf: "et.kf"; kg: "et.kg"; kh: "et.kh"; ki: "et.ki"; kj: "et.kj"; kk: "et.kk"; kl: "et.kl"; km: "et.km"; kn: "et.kn"; ko: "et.ko"; kp: "et.kp"; kq: "et.kq"; kr: "et.kr"; ks: "et.ks"; kt: "et.kt"; ku: "et.ku"; kv: "et.kv"; kw: "et.kw"; kx: "et.kx"; ky: "et.ky"; kz: "et.kz"; la: "et.la"; lb: "et.lb"; lc: "et.lc"; ld: "et.ld"; le: "et.le"; lf: "et.lf"; lg: "et.lg"; lh: "et.lh"; li: "et.li"; lj: "et.lj"; lk: "et.lk"; ll: "et.ll"; lm: "et.lm"; ln: "et.ln"; lo: "et.lo"; lp: "et.lp"; lq: "et.lq"; lr: "et.lr"; ls: "et.ls"; lt: "et.lt"; lu: "et.lu"; lv: "et.lv"; lw: "et.lw"; lx: "et.lx"; ly: "et.ly"; lz: "et.lz"; ma: "et.ma"; mb: "et.mb"; mc: "et.mc"; md: "et.md"; me: "et.me"; mf: "et.mf"; mg: "et.mg"; mh: "et.mh"; mi: "et.mi"; mj: "et.mj"; mk: "et.mk"; ml: "et.ml"; mm: "et.mm"; mn: "et.mn"; mo: "et.mo"; mp: "et.mp"; mq: "et.mq"; mr: "et.mr"; ms: "et.ms"; mt: "et.mt"; mu: "et.mu"; mv: "et.mv"; mw: "et.mw"; mx: "et.mx"; my: "et.my"; mz: "et.mz"; na: "et.na"; nb: "et.nb"; nc: "et.nc"; nd: "et.nd"; ne: "et.ne"; nf: "et.nf"; ng: "et.ng"; nh: "et.nh"; ni: "et.ni"; nj: "et.nj"; nk: "et.nk"; nl: "et.nl"; nm: "et.nm"; nn: "et.nn"; no: "et.no"; np: "et.np"; nq: "et.nq"; nr: "et.nr"; ns: "et.ns"; nt: "et.nt"; nu: "et.nu"; nv: "et.nv"; nw: "et.nw"; nx: "et.nx"; ny: "et.ny"; nz: "et.nz"; oa: "et.oa"; ob: "et.ob"; oc: "et.oc"; od: "et.od"; oe: "et.oe"; of: "et.of"; og: "et.og"; oh: "et.oh"; oi: "et.oi"; oj: "et.oj"; ok: "et.ok"; ol: "et.ol"; om: "et.om"; on: "et.on"; oo: "et.oo"; op: "et.op"; oq: "et.oq"; or: "et.or"; os: "et.os"; ot: "et.ot"; ou: "et.ou"; ov: "et.ov"; ow: "et.ow"; ox: "et.ox"; oy: "et.oy"; oz: "et.oz"; pa: "et.pa"; pb: "et.pb"; pc: "et.pc"; pd: "et.pd"; pe: "et.pe"; pf: "et.pf"; pg: "et.pg"; ph: "et.ph"; pi: "et.pi"; pj: "et.pj"; pk: "et.pk"; pl: "et.pl"; pm: "et.pm"; pn: "et.pn"; po: "et.po"; pp: "et.pp"; pq: "et.pq"; pr: "et.pr"; ps: "et.ps"; pt: "et.pt"; pu: "et.pu"; pv: "et.pv"; pw: "et.pw"; px: "et.px"; py: "et.py"; pz: "et.pz"; qa: "et.qa"; qb: "et.qb"; qc: "et.qc"; qd: "et.qd"; qe: "et.qe"; qf: "et.qf"; qg: "et.qg"; qh: "et.qh"; qi: "et.qi"; qj: "et.qj"; qk: "et.qk"; ql: "et.ql"; qm: "et.qm"; qn: "et.qn"; qo: "et.qo"; qp: "et.qp"; qq: "et.qq"; qr: "et.qr"; qs: "et.qs"; qt: "et.qt"; qu: "et.qu"; qv: "et.qv"; qw: "et.qw"; qx: "et.qx"; qy: "et.qy"; qz: "et.qz"; ra: "et.ra"; rb: "et.rb"; rc: "et.rc"; rd: "et.rd"; re: "et.re"; rf: "et.rf"; rg: "et.rg"; rh: "et.rh"; ri: "et.ri"; rj: "et.rj"; rk: "et.rk"; rl: "et.rl"; rm: "et.rm"; rn: "et.rn"; ro: "et.ro"; rp: "et.rp"; rq: "et.rq"; rr: "et.rr"; rs: "et.rs"; rt: "et.rt"; ru: "et.ru"; rv: "et.rv"; rw: "et.rw"; rx: "et.rx"; ry: "et.ry"; rz: "et.rz"; sa: "et.sa"; sb: "et.sb"; sc: "et.sc"; sd: "et.sd"; se: "et.se"; sf: "et.sf"; sg: "et.sg"; sh: "et.sh"; si: "et.si"; sj: "et.sj"; sk: "et.sk"; sl: "et.sl"; sm: "et.sm"; sn: "et.sn"; so: "et.so"; sp: "et.sp"; sq: "et.sq"; sr: "et.sr"; ss: "et.ss"; st: "et.st"; su: "et.su"; sv: "et.sv"; sw: "et.sw"; sx: "et.sx"; sy: "et.sy"; sz: "et.sz"; ta: "et.ta"; tb: "et.tb"; tc: "et.tc"; td: "et.td"; te: "et.te"; tf: "et.tf"; tg: "et.tg"; th: "et.th"; ti: "et.ti"; tj: "et.tj"; tk: "et.tk"; tl: "et.tl"; tm: "et.tm"; tn: "et.tn"; to: "et.to"; tp: "et.tp"; tq: "et.tq"; tr: "et.tr"; ts: "et.ts"; tt: "et.tt"; tu: "et.tu"; tv: "et.tv"; tw: "et.tw"; tx: "et.tx"; ty: "et.ty"; tz: "et.tz"; ua: "et.ua"; ub: "et.ub"; uc: "et.uc"; ud: "et.ud"; ue: "et.ue"; uf: "et.uf"; ug: "et.ug"; uh: "et.uh"; ui: "et.ui"; uj: "et.uj"; uk: "et.uk"; ul: "et.ul"; um: "et.um"; un: "et.un"; uo: "et.uo"; up: "et.up"; uq: "et.uq"; ur: "et.ur"; us: "et.us"; ut: "et.ut"; uu: "et.uu"; uv: "et.uv"; uw: "et.uw"; ux: "et.ux"; uy: "et.uy"; uz: "et.uz"; va: "et.va"; vb: "et.vb"; vc: "et.vc"; vd: "et.vd"; ve: "et.ve"; vf: "et.vf"; vg: "et.vg"; vh: "et.vh"; vi: "et.vi"; vj: "et.vj"; vk: "et.vk"; vl: "et.vl"; vm: "et.vm"; vn: "et.vn"; vo: "et.vo"; vp: "et.vp"; vq: "et.vq"; vr: "et.vr"; vs: "et.vs"; vt: "et.vt"; vu: "et.vu"; vv: "et.vv"; vw: "et.vw"; vx: "et.vx"; vy: "et.vy"; vz: "et.vz"; wa: "et.wa"; wb: "et.wb"; wc: "et.wc"; wd: "et.wd"; we: "et.we"; wf: "et.wf"; wg: "et.wg"; wh: "et.wh"; wi: "et.wi"; wj: "et.wj"; wk: "et.wk"; wl: "et.wl"; wm: "et.wm"; wn: "et.wn"; wo: "et.wo"; wp: "et.wp"; wq: "et.wq"; wr: "et.wr"; ws: "et.ws"; wt: "et.wt"; wu: "et.wu"; wv: "et.wv"; ww: "et.ww"; wx: "et.wx"; wy: "et.wy"; wz: "et.wz"; xa: "et.xa"; xb: "et.xb"; xc: "et.xc"; xd: "et.xd"; xe: "et.xe"; xf: "et.xf"; xg: "et.xg"; xh: "et.xh"; xi: "et.xi"; xj: "et.xj"; xk: "et.xk"; xl: "et.xl"; xm: "et.xm"; xn: "et.xn"; xo: "et.xo"; xp: "et.xp"; xq: "et.xq"; xr: "et.xr"; xs: "et.xs"; xt: "et.xt"; xu: "et.xu"; xv: "et.xv"; xw: "et.xw"; xx: "et.xx"; xy: "et.xy"; xz: "et.xz"; ya: "et.ya"; yb: "et.yb"; yc: "et.yc"; yd: "et.yd"; ye: "et.ye"; yf: "et.yf"; yg: "et.yg"; yh: "et.yh"; yi: "et.yi"; yj: "et.yj"; yk: "et.yk"; yl: "et.yl"; ym: "et.ym"; yn: "et.yn"; yo: "et.yo"; yp: "et.yp"; yq: "et.yq"; yr: "et.yr"; ys: "et.ys"; yt: "et.yt"; yu: "et.yu"; yv: "et.yv"; yw: "et.yw"; yx: "et.yx"; yy: "et.yy"; yz: "et.yz"; za: "et.za"; zb: "et.zb"; zc: "et.zc"; zd: "et.zd"; ze: "et.ze"; zf: "et.zf"; zg: "et.zg"; zh: "et.zh"; zi: "et.zi"; zj: "et.zj"; zk: "et.zk"; zl: "et.zl"; zm: "et.zm"; zn: "et.zn"; zo: "et.zo"; zp: "et.zp"; zq: "et.zq"; zr: "et.zr"; zs: "et.zs"; zt: "et.zt"; zu: "et.zu"; zv: "et.zv"; zw: "et.zw"; zx: "et.zx"; zy: "et.zy"; zz: "et.zz"; }; eu: { aa: "eu.aa"; ab: "eu.ab"; ac: "eu.ac"; ad: "eu.ad"; ae: "eu.ae"; af: "eu.af"; ag: "eu.ag"; ah: "eu.ah"; ai: "eu.ai"; aj: "eu.aj"; ak: "eu.ak"; al: "eu.al"; am: "eu.am"; an: "eu.an"; ao: "eu.ao"; ap: "eu.ap"; aq: "eu.aq"; ar: "eu.ar"; as: "eu.as"; at: "eu.at"; au: "eu.au"; av: "eu.av"; aw: "eu.aw"; ax: "eu.ax"; ay: "eu.ay"; az: "eu.az"; ba: "eu.ba"; bb: "eu.bb"; bc: "eu.bc"; bd: "eu.bd"; be: "eu.be"; bf: "eu.bf"; bg: "eu.bg"; bh: "eu.bh"; bi: "eu.bi"; bj: "eu.bj"; bk: "eu.bk"; bl: "eu.bl"; bm: "eu.bm"; bn: "eu.bn"; bo: "eu.bo"; bp: "eu.bp"; bq: "eu.bq"; br: "eu.br"; bs: "eu.bs"; bt: "eu.bt"; bu: "eu.bu"; bv: "eu.bv"; bw: "eu.bw"; bx: "eu.bx"; by: "eu.by"; bz: "eu.bz"; ca: "eu.ca"; cb: "eu.cb"; cc: "eu.cc"; cd: "eu.cd"; ce: "eu.ce"; cf: "eu.cf"; cg: "eu.cg"; ch: "eu.ch"; ci: "eu.ci"; cj: "eu.cj"; ck: "eu.ck"; cl: "eu.cl"; cm: "eu.cm"; cn: "eu.cn"; co: "eu.co"; cp: "eu.cp"; cq: "eu.cq"; cr: "eu.cr"; cs: "eu.cs"; ct: "eu.ct"; cu: "eu.cu"; cv: "eu.cv"; cw: "eu.cw"; cx: "eu.cx"; cy: "eu.cy"; cz: "eu.cz"; da: "eu.da"; db: "eu.db"; dc: "eu.dc"; dd: "eu.dd"; de: "eu.de"; df: "eu.df"; dg: "eu.dg"; dh: "eu.dh"; di: "eu.di"; dj: "eu.dj"; dk: "eu.dk"; dl: "eu.dl"; dm: "eu.dm"; dn: "eu.dn"; do: "eu.do"; dp: "eu.dp"; dq: "eu.dq"; dr: "eu.dr"; ds: "eu.ds"; dt: "eu.dt"; du: "eu.du"; dv: "eu.dv"; dw: "eu.dw"; dx: "eu.dx"; dy: "eu.dy"; dz: "eu.dz"; ea: "eu.ea"; eb: "eu.eb"; ec: "eu.ec"; ed: "eu.ed"; ee: "eu.ee"; ef: "eu.ef"; eg: "eu.eg"; eh: "eu.eh"; ei: "eu.ei"; ej: "eu.ej"; ek: "eu.ek"; el: "eu.el"; em: "eu.em"; en: "eu.en"; eo: "eu.eo"; ep: "eu.ep"; eq: "eu.eq"; er: "eu.er"; es: "eu.es"; et: "eu.et"; eu: "eu.eu"; ev: "eu.ev"; ew: "eu.ew"; ex: "eu.ex"; ey: "eu.ey"; ez: "eu.ez"; fa: "eu.fa"; fb: "eu.fb"; fc: "eu.fc"; fd: "eu.fd"; fe: "eu.fe"; ff: "eu.ff"; fg: "eu.fg"; fh: "eu.fh"; fi: "eu.fi"; fj: "eu.fj"; fk: "eu.fk"; fl: "eu.fl"; fm: "eu.fm"; fn: "eu.fn"; fo: "eu.fo"; fp: "eu.fp"; fq: "eu.fq"; fr: "eu.fr"; fs: "eu.fs"; ft: "eu.ft"; fu: "eu.fu"; fv: "eu.fv"; fw: "eu.fw"; fx: "eu.fx"; fy: "eu.fy"; fz: "eu.fz"; ga: "eu.ga"; gb: "eu.gb"; gc: "eu.gc"; gd: "eu.gd"; ge: "eu.ge"; gf: "eu.gf"; gg: "eu.gg"; gh: "eu.gh"; gi: "eu.gi"; gj: "eu.gj"; gk: "eu.gk"; gl: "eu.gl"; gm: "eu.gm"; gn: "eu.gn"; go: "eu.go"; gp: "eu.gp"; gq: "eu.gq"; gr: "eu.gr"; gs: "eu.gs"; gt: "eu.gt"; gu: "eu.gu"; gv: "eu.gv"; gw: "eu.gw"; gx: "eu.gx"; gy: "eu.gy"; gz: "eu.gz"; ha: "eu.ha"; hb: "eu.hb"; hc: "eu.hc"; hd: "eu.hd"; he: "eu.he"; hf: "eu.hf"; hg: "eu.hg"; hh: "eu.hh"; hi: "eu.hi"; hj: "eu.hj"; hk: "eu.hk"; hl: "eu.hl"; hm: "eu.hm"; hn: "eu.hn"; ho: "eu.ho"; hp: "eu.hp"; hq: "eu.hq"; hr: "eu.hr"; hs: "eu.hs"; ht: "eu.ht"; hu: "eu.hu"; hv: "eu.hv"; hw: "eu.hw"; hx: "eu.hx"; hy: "eu.hy"; hz: "eu.hz"; ia: "eu.ia"; ib: "eu.ib"; ic: "eu.ic"; id: "eu.id"; ie: "eu.ie"; if: "eu.if"; ig: "eu.ig"; ih: "eu.ih"; ii: "eu.ii"; ij: "eu.ij"; ik: "eu.ik"; il: "eu.il"; im: "eu.im"; in: "eu.in"; io: "eu.io"; ip: "eu.ip"; iq: "eu.iq"; ir: "eu.ir"; is: "eu.is"; it: "eu.it"; iu: "eu.iu"; iv: "eu.iv"; iw: "eu.iw"; ix: "eu.ix"; iy: "eu.iy"; iz: "eu.iz"; ja: "eu.ja"; jb: "eu.jb"; jc: "eu.jc"; jd: "eu.jd"; je: "eu.je"; jf: "eu.jf"; jg: "eu.jg"; jh: "eu.jh"; ji: "eu.ji"; jj: "eu.jj"; jk: "eu.jk"; jl: "eu.jl"; jm: "eu.jm"; jn: "eu.jn"; jo: "eu.jo"; jp: "eu.jp"; jq: "eu.jq"; jr: "eu.jr"; js: "eu.js"; jt: "eu.jt"; ju: "eu.ju"; jv: "eu.jv"; jw: "eu.jw"; jx: "eu.jx"; jy: "eu.jy"; jz: "eu.jz"; ka: "eu.ka"; kb: "eu.kb"; kc: "eu.kc"; kd: "eu.kd"; ke: "eu.ke"; kf: "eu.kf"; kg: "eu.kg"; kh: "eu.kh"; ki: "eu.ki"; kj: "eu.kj"; kk: "eu.kk"; kl: "eu.kl"; km: "eu.km"; kn: "eu.kn"; ko: "eu.ko"; kp: "eu.kp"; kq: "eu.kq"; kr: "eu.kr"; ks: "eu.ks"; kt: "eu.kt"; ku: "eu.ku"; kv: "eu.kv"; kw: "eu.kw"; kx: "eu.kx"; ky: "eu.ky"; kz: "eu.kz"; la: "eu.la"; lb: "eu.lb"; lc: "eu.lc"; ld: "eu.ld"; le: "eu.le"; lf: "eu.lf"; lg: "eu.lg"; lh: "eu.lh"; li: "eu.li"; lj: "eu.lj"; lk: "eu.lk"; ll: "eu.ll"; lm: "eu.lm"; ln: "eu.ln"; lo: "eu.lo"; lp: "eu.lp"; lq: "eu.lq"; lr: "eu.lr"; ls: "eu.ls"; lt: "eu.lt"; lu: "eu.lu"; lv: "eu.lv"; lw: "eu.lw"; lx: "eu.lx"; ly: "eu.ly"; lz: "eu.lz"; ma: "eu.ma"; mb: "eu.mb"; mc: "eu.mc"; md: "eu.md"; me: "eu.me"; mf: "eu.mf"; mg: "eu.mg"; mh: "eu.mh"; mi: "eu.mi"; mj: "eu.mj"; mk: "eu.mk"; ml: "eu.ml"; mm: "eu.mm"; mn: "eu.mn"; mo: "eu.mo"; mp: "eu.mp"; mq: "eu.mq"; mr: "eu.mr"; ms: "eu.ms"; mt: "eu.mt"; mu: "eu.mu"; mv: "eu.mv"; mw: "eu.mw"; mx: "eu.mx"; my: "eu.my"; mz: "eu.mz"; na: "eu.na"; nb: "eu.nb"; nc: "eu.nc"; nd: "eu.nd"; ne: "eu.ne"; nf: "eu.nf"; ng: "eu.ng"; nh: "eu.nh"; ni: "eu.ni"; nj: "eu.nj"; nk: "eu.nk"; nl: "eu.nl"; nm: "eu.nm"; nn: "eu.nn"; no: "eu.no"; np: "eu.np"; nq: "eu.nq"; nr: "eu.nr"; ns: "eu.ns"; nt: "eu.nt"; nu: "eu.nu"; nv: "eu.nv"; nw: "eu.nw"; nx: "eu.nx"; ny: "eu.ny"; nz: "eu.nz"; oa: "eu.oa"; ob: "eu.ob"; oc: "eu.oc"; od: "eu.od"; oe: "eu.oe"; of: "eu.of"; og: "eu.og"; oh: "eu.oh"; oi: "eu.oi"; oj: "eu.oj"; ok: "eu.ok"; ol: "eu.ol"; om: "eu.om"; on: "eu.on"; oo: "eu.oo"; op: "eu.op"; oq: "eu.oq"; or: "eu.or"; os: "eu.os"; ot: "eu.ot"; ou: "eu.ou"; ov: "eu.ov"; ow: "eu.ow"; ox: "eu.ox"; oy: "eu.oy"; oz: "eu.oz"; pa: "eu.pa"; pb: "eu.pb"; pc: "eu.pc"; pd: "eu.pd"; pe: "eu.pe"; pf: "eu.pf"; pg: "eu.pg"; ph: "eu.ph"; pi: "eu.pi"; pj: "eu.pj"; pk: "eu.pk"; pl: "eu.pl"; pm: "eu.pm"; pn: "eu.pn"; po: "eu.po"; pp: "eu.pp"; pq: "eu.pq"; pr: "eu.pr"; ps: "eu.ps"; pt: "eu.pt"; pu: "eu.pu"; pv: "eu.pv"; pw: "eu.pw"; px: "eu.px"; py: "eu.py"; pz: "eu.pz"; qa: "eu.qa"; qb: "eu.qb"; qc: "eu.qc"; qd: "eu.qd"; qe: "eu.qe"; qf: "eu.qf"; qg: "eu.qg"; qh: "eu.qh"; qi: "eu.qi"; qj: "eu.qj"; qk: "eu.qk"; ql: "eu.ql"; qm: "eu.qm"; qn: "eu.qn"; qo: "eu.qo"; qp: "eu.qp"; qq: "eu.qq"; qr: "eu.qr"; qs: "eu.qs"; qt: "eu.qt"; qu: "eu.qu"; qv: "eu.qv"; qw: "eu.qw"; qx: "eu.qx"; qy: "eu.qy"; qz: "eu.qz"; ra: "eu.ra"; rb: "eu.rb"; rc: "eu.rc"; rd: "eu.rd"; re: "eu.re"; rf: "eu.rf"; rg: "eu.rg"; rh: "eu.rh"; ri: "eu.ri"; rj: "eu.rj"; rk: "eu.rk"; rl: "eu.rl"; rm: "eu.rm"; rn: "eu.rn"; ro: "eu.ro"; rp: "eu.rp"; rq: "eu.rq"; rr: "eu.rr"; rs: "eu.rs"; rt: "eu.rt"; ru: "eu.ru"; rv: "eu.rv"; rw: "eu.rw"; rx: "eu.rx"; ry: "eu.ry"; rz: "eu.rz"; sa: "eu.sa"; sb: "eu.sb"; sc: "eu.sc"; sd: "eu.sd"; se: "eu.se"; sf: "eu.sf"; sg: "eu.sg"; sh: "eu.sh"; si: "eu.si"; sj: "eu.sj"; sk: "eu.sk"; sl: "eu.sl"; sm: "eu.sm"; sn: "eu.sn"; so: "eu.so"; sp: "eu.sp"; sq: "eu.sq"; sr: "eu.sr"; ss: "eu.ss"; st: "eu.st"; su: "eu.su"; sv: "eu.sv"; sw: "eu.sw"; sx: "eu.sx"; sy: "eu.sy"; sz: "eu.sz"; ta: "eu.ta"; tb: "eu.tb"; tc: "eu.tc"; td: "eu.td"; te: "eu.te"; tf: "eu.tf"; tg: "eu.tg"; th: "eu.th"; ti: "eu.ti"; tj: "eu.tj"; tk: "eu.tk"; tl: "eu.tl"; tm: "eu.tm"; tn: "eu.tn"; to: "eu.to"; tp: "eu.tp"; tq: "eu.tq"; tr: "eu.tr"; ts: "eu.ts"; tt: "eu.tt"; tu: "eu.tu"; tv: "eu.tv"; tw: "eu.tw"; tx: "eu.tx"; ty: "eu.ty"; tz: "eu.tz"; ua: "eu.ua"; ub: "eu.ub"; uc: "eu.uc"; ud: "eu.ud"; ue: "eu.ue"; uf: "eu.uf"; ug: "eu.ug"; uh: "eu.uh"; ui: "eu.ui"; uj: "eu.uj"; uk: "eu.uk"; ul: "eu.ul"; um: "eu.um"; un: "eu.un"; uo: "eu.uo"; up: "eu.up"; uq: "eu.uq"; ur: "eu.ur"; us: "eu.us"; ut: "eu.ut"; uu: "eu.uu"; uv: "eu.uv"; uw: "eu.uw"; ux: "eu.ux"; uy: "eu.uy"; uz: "eu.uz"; va: "eu.va"; vb: "eu.vb"; vc: "eu.vc"; vd: "eu.vd"; ve: "eu.ve"; vf: "eu.vf"; vg: "eu.vg"; vh: "eu.vh"; vi: "eu.vi"; vj: "eu.vj"; vk: "eu.vk"; vl: "eu.vl"; vm: "eu.vm"; vn: "eu.vn"; vo: "eu.vo"; vp: "eu.vp"; vq: "eu.vq"; vr: "eu.vr"; vs: "eu.vs"; vt: "eu.vt"; vu: "eu.vu"; vv: "eu.vv"; vw: "eu.vw"; vx: "eu.vx"; vy: "eu.vy"; vz: "eu.vz"; wa: "eu.wa"; wb: "eu.wb"; wc: "eu.wc"; wd: "eu.wd"; we: "eu.we"; wf: "eu.wf"; wg: "eu.wg"; wh: "eu.wh"; wi: "eu.wi"; wj: "eu.wj"; wk: "eu.wk"; wl: "eu.wl"; wm: "eu.wm"; wn: "eu.wn"; wo: "eu.wo"; wp: "eu.wp"; wq: "eu.wq"; wr: "eu.wr"; ws: "eu.ws"; wt: "eu.wt"; wu: "eu.wu"; wv: "eu.wv"; ww: "eu.ww"; wx: "eu.wx"; wy: "eu.wy"; wz: "eu.wz"; xa: "eu.xa"; xb: "eu.xb"; xc: "eu.xc"; xd: "eu.xd"; xe: "eu.xe"; xf: "eu.xf"; xg: "eu.xg"; xh: "eu.xh"; xi: "eu.xi"; xj: "eu.xj"; xk: "eu.xk"; xl: "eu.xl"; xm: "eu.xm"; xn: "eu.xn"; xo: "eu.xo"; xp: "eu.xp"; xq: "eu.xq"; xr: "eu.xr"; xs: "eu.xs"; xt: "eu.xt"; xu: "eu.xu"; xv: "eu.xv"; xw: "eu.xw"; xx: "eu.xx"; xy: "eu.xy"; xz: "eu.xz"; ya: "eu.ya"; yb: "eu.yb"; yc: "eu.yc"; yd: "eu.yd"; ye: "eu.ye"; yf: "eu.yf"; yg: "eu.yg"; yh: "eu.yh"; yi: "eu.yi"; yj: "eu.yj"; yk: "eu.yk"; yl: "eu.yl"; ym: "eu.ym"; yn: "eu.yn"; yo: "eu.yo"; yp: "eu.yp"; yq: "eu.yq"; yr: "eu.yr"; ys: "eu.ys"; yt: "eu.yt"; yu: "eu.yu"; yv: "eu.yv"; yw: "eu.yw"; yx: "eu.yx"; yy: "eu.yy"; yz: "eu.yz"; za: "eu.za"; zb: "eu.zb"; zc: "eu.zc"; zd: "eu.zd"; ze: "eu.ze"; zf: "eu.zf"; zg: "eu.zg"; zh: "eu.zh"; zi: "eu.zi"; zj: "eu.zj"; zk: "eu.zk"; zl: "eu.zl"; zm: "eu.zm"; zn: "eu.zn"; zo: "eu.zo"; zp: "eu.zp"; zq: "eu.zq"; zr: "eu.zr"; zs: "eu.zs"; zt: "eu.zt"; zu: "eu.zu"; zv: "eu.zv"; zw: "eu.zw"; zx: "eu.zx"; zy: "eu.zy"; zz: "eu.zz"; }; ev: { aa: "ev.aa"; ab: "ev.ab"; ac: "ev.ac"; ad: "ev.ad"; ae: "ev.ae"; af: "ev.af"; ag: "ev.ag"; ah: "ev.ah"; ai: "ev.ai"; aj: "ev.aj"; ak: "ev.ak"; al: "ev.al"; am: "ev.am"; an: "ev.an"; ao: "ev.ao"; ap: "ev.ap"; aq: "ev.aq"; ar: "ev.ar"; as: "ev.as"; at: "ev.at"; au: "ev.au"; av: "ev.av"; aw: "ev.aw"; ax: "ev.ax"; ay: "ev.ay"; az: "ev.az"; ba: "ev.ba"; bb: "ev.bb"; bc: "ev.bc"; bd: "ev.bd"; be: "ev.be"; bf: "ev.bf"; bg: "ev.bg"; bh: "ev.bh"; bi: "ev.bi"; bj: "ev.bj"; bk: "ev.bk"; bl: "ev.bl"; bm: "ev.bm"; bn: "ev.bn"; bo: "ev.bo"; bp: "ev.bp"; bq: "ev.bq"; br: "ev.br"; bs: "ev.bs"; bt: "ev.bt"; bu: "ev.bu"; bv: "ev.bv"; bw: "ev.bw"; bx: "ev.bx"; by: "ev.by"; bz: "ev.bz"; ca: "ev.ca"; cb: "ev.cb"; cc: "ev.cc"; cd: "ev.cd"; ce: "ev.ce"; cf: "ev.cf"; cg: "ev.cg"; ch: "ev.ch"; ci: "ev.ci"; cj: "ev.cj"; ck: "ev.ck"; cl: "ev.cl"; cm: "ev.cm"; cn: "ev.cn"; co: "ev.co"; cp: "ev.cp"; cq: "ev.cq"; cr: "ev.cr"; cs: "ev.cs"; ct: "ev.ct"; cu: "ev.cu"; cv: "ev.cv"; cw: "ev.cw"; cx: "ev.cx"; cy: "ev.cy"; cz: "ev.cz"; da: "ev.da"; db: "ev.db"; dc: "ev.dc"; dd: "ev.dd"; de: "ev.de"; df: "ev.df"; dg: "ev.dg"; dh: "ev.dh"; di: "ev.di"; dj: "ev.dj"; dk: "ev.dk"; dl: "ev.dl"; dm: "ev.dm"; dn: "ev.dn"; do: "ev.do"; dp: "ev.dp"; dq: "ev.dq"; dr: "ev.dr"; ds: "ev.ds"; dt: "ev.dt"; du: "ev.du"; dv: "ev.dv"; dw: "ev.dw"; dx: "ev.dx"; dy: "ev.dy"; dz: "ev.dz"; ea: "ev.ea"; eb: "ev.eb"; ec: "ev.ec"; ed: "ev.ed"; ee: "ev.ee"; ef: "ev.ef"; eg: "ev.eg"; eh: "ev.eh"; ei: "ev.ei"; ej: "ev.ej"; ek: "ev.ek"; el: "ev.el"; em: "ev.em"; en: "ev.en"; eo: "ev.eo"; ep: "ev.ep"; eq: "ev.eq"; er: "ev.er"; es: "ev.es"; et: "ev.et"; eu: "ev.eu"; ev: "ev.ev"; ew: "ev.ew"; ex: "ev.ex"; ey: "ev.ey"; ez: "ev.ez"; fa: "ev.fa"; fb: "ev.fb"; fc: "ev.fc"; fd: "ev.fd"; fe: "ev.fe"; ff: "ev.ff"; fg: "ev.fg"; fh: "ev.fh"; fi: "ev.fi"; fj: "ev.fj"; fk: "ev.fk"; fl: "ev.fl"; fm: "ev.fm"; fn: "ev.fn"; fo: "ev.fo"; fp: "ev.fp"; fq: "ev.fq"; fr: "ev.fr"; fs: "ev.fs"; ft: "ev.ft"; fu: "ev.fu"; fv: "ev.fv"; fw: "ev.fw"; fx: "ev.fx"; fy: "ev.fy"; fz: "ev.fz"; ga: "ev.ga"; gb: "ev.gb"; gc: "ev.gc"; gd: "ev.gd"; ge: "ev.ge"; gf: "ev.gf"; gg: "ev.gg"; gh: "ev.gh"; gi: "ev.gi"; gj: "ev.gj"; gk: "ev.gk"; gl: "ev.gl"; gm: "ev.gm"; gn: "ev.gn"; go: "ev.go"; gp: "ev.gp"; gq: "ev.gq"; gr: "ev.gr"; gs: "ev.gs"; gt: "ev.gt"; gu: "ev.gu"; gv: "ev.gv"; gw: "ev.gw"; gx: "ev.gx"; gy: "ev.gy"; gz: "ev.gz"; ha: "ev.ha"; hb: "ev.hb"; hc: "ev.hc"; hd: "ev.hd"; he: "ev.he"; hf: "ev.hf"; hg: "ev.hg"; hh: "ev.hh"; hi: "ev.hi"; hj: "ev.hj"; hk: "ev.hk"; hl: "ev.hl"; hm: "ev.hm"; hn: "ev.hn"; ho: "ev.ho"; hp: "ev.hp"; hq: "ev.hq"; hr: "ev.hr"; hs: "ev.hs"; ht: "ev.ht"; hu: "ev.hu"; hv: "ev.hv"; hw: "ev.hw"; hx: "ev.hx"; hy: "ev.hy"; hz: "ev.hz"; ia: "ev.ia"; ib: "ev.ib"; ic: "ev.ic"; id: "ev.id"; ie: "ev.ie"; if: "ev.if"; ig: "ev.ig"; ih: "ev.ih"; ii: "ev.ii"; ij: "ev.ij"; ik: "ev.ik"; il: "ev.il"; im: "ev.im"; in: "ev.in"; io: "ev.io"; ip: "ev.ip"; iq: "ev.iq"; ir: "ev.ir"; is: "ev.is"; it: "ev.it"; iu: "ev.iu"; iv: "ev.iv"; iw: "ev.iw"; ix: "ev.ix"; iy: "ev.iy"; iz: "ev.iz"; ja: "ev.ja"; jb: "ev.jb"; jc: "ev.jc"; jd: "ev.jd"; je: "ev.je"; jf: "ev.jf"; jg: "ev.jg"; jh: "ev.jh"; ji: "ev.ji"; jj: "ev.jj"; jk: "ev.jk"; jl: "ev.jl"; jm: "ev.jm"; jn: "ev.jn"; jo: "ev.jo"; jp: "ev.jp"; jq: "ev.jq"; jr: "ev.jr"; js: "ev.js"; jt: "ev.jt"; ju: "ev.ju"; jv: "ev.jv"; jw: "ev.jw"; jx: "ev.jx"; jy: "ev.jy"; jz: "ev.jz"; ka: "ev.ka"; kb: "ev.kb"; kc: "ev.kc"; kd: "ev.kd"; ke: "ev.ke"; kf: "ev.kf"; kg: "ev.kg"; kh: "ev.kh"; ki: "ev.ki"; kj: "ev.kj"; kk: "ev.kk"; kl: "ev.kl"; km: "ev.km"; kn: "ev.kn"; ko: "ev.ko"; kp: "ev.kp"; kq: "ev.kq"; kr: "ev.kr"; ks: "ev.ks"; kt: "ev.kt"; ku: "ev.ku"; kv: "ev.kv"; kw: "ev.kw"; kx: "ev.kx"; ky: "ev.ky"; kz: "ev.kz"; la: "ev.la"; lb: "ev.lb"; lc: "ev.lc"; ld: "ev.ld"; le: "ev.le"; lf: "ev.lf"; lg: "ev.lg"; lh: "ev.lh"; li: "ev.li"; lj: "ev.lj"; lk: "ev.lk"; ll: "ev.ll"; lm: "ev.lm"; ln: "ev.ln"; lo: "ev.lo"; lp: "ev.lp"; lq: "ev.lq"; lr: "ev.lr"; ls: "ev.ls"; lt: "ev.lt"; lu: "ev.lu"; lv: "ev.lv"; lw: "ev.lw"; lx: "ev.lx"; ly: "ev.ly"; lz: "ev.lz"; ma: "ev.ma"; mb: "ev.mb"; mc: "ev.mc"; md: "ev.md"; me: "ev.me"; mf: "ev.mf"; mg: "ev.mg"; mh: "ev.mh"; mi: "ev.mi"; mj: "ev.mj"; mk: "ev.mk"; ml: "ev.ml"; mm: "ev.mm"; mn: "ev.mn"; mo: "ev.mo"; mp: "ev.mp"; mq: "ev.mq"; mr: "ev.mr"; ms: "ev.ms"; mt: "ev.mt"; mu: "ev.mu"; mv: "ev.mv"; mw: "ev.mw"; mx: "ev.mx"; my: "ev.my"; mz: "ev.mz"; na: "ev.na"; nb: "ev.nb"; nc: "ev.nc"; nd: "ev.nd"; ne: "ev.ne"; nf: "ev.nf"; ng: "ev.ng"; nh: "ev.nh"; ni: "ev.ni"; nj: "ev.nj"; nk: "ev.nk"; nl: "ev.nl"; nm: "ev.nm"; nn: "ev.nn"; no: "ev.no"; np: "ev.np"; nq: "ev.nq"; nr: "ev.nr"; ns: "ev.ns"; nt: "ev.nt"; nu: "ev.nu"; nv: "ev.nv"; nw: "ev.nw"; nx: "ev.nx"; ny: "ev.ny"; nz: "ev.nz"; oa: "ev.oa"; ob: "ev.ob"; oc: "ev.oc"; od: "ev.od"; oe: "ev.oe"; of: "ev.of"; og: "ev.og"; oh: "ev.oh"; oi: "ev.oi"; oj: "ev.oj"; ok: "ev.ok"; ol: "ev.ol"; om: "ev.om"; on: "ev.on"; oo: "ev.oo"; op: "ev.op"; oq: "ev.oq"; or: "ev.or"; os: "ev.os"; ot: "ev.ot"; ou: "ev.ou"; ov: "ev.ov"; ow: "ev.ow"; ox: "ev.ox"; oy: "ev.oy"; oz: "ev.oz"; pa: "ev.pa"; pb: "ev.pb"; pc: "ev.pc"; pd: "ev.pd"; pe: "ev.pe"; pf: "ev.pf"; pg: "ev.pg"; ph: "ev.ph"; pi: "ev.pi"; pj: "ev.pj"; pk: "ev.pk"; pl: "ev.pl"; pm: "ev.pm"; pn: "ev.pn"; po: "ev.po"; pp: "ev.pp"; pq: "ev.pq"; pr: "ev.pr"; ps: "ev.ps"; pt: "ev.pt"; pu: "ev.pu"; pv: "ev.pv"; pw: "ev.pw"; px: "ev.px"; py: "ev.py"; pz: "ev.pz"; qa: "ev.qa"; qb: "ev.qb"; qc: "ev.qc"; qd: "ev.qd"; qe: "ev.qe"; qf: "ev.qf"; qg: "ev.qg"; qh: "ev.qh"; qi: "ev.qi"; qj: "ev.qj"; qk: "ev.qk"; ql: "ev.ql"; qm: "ev.qm"; qn: "ev.qn"; qo: "ev.qo"; qp: "ev.qp"; qq: "ev.qq"; qr: "ev.qr"; qs: "ev.qs"; qt: "ev.qt"; qu: "ev.qu"; qv: "ev.qv"; qw: "ev.qw"; qx: "ev.qx"; qy: "ev.qy"; qz: "ev.qz"; ra: "ev.ra"; rb: "ev.rb"; rc: "ev.rc"; rd: "ev.rd"; re: "ev.re"; rf: "ev.rf"; rg: "ev.rg"; rh: "ev.rh"; ri: "ev.ri"; rj: "ev.rj"; rk: "ev.rk"; rl: "ev.rl"; rm: "ev.rm"; rn: "ev.rn"; ro: "ev.ro"; rp: "ev.rp"; rq: "ev.rq"; rr: "ev.rr"; rs: "ev.rs"; rt: "ev.rt"; ru: "ev.ru"; rv: "ev.rv"; rw: "ev.rw"; rx: "ev.rx"; ry: "ev.ry"; rz: "ev.rz"; sa: "ev.sa"; sb: "ev.sb"; sc: "ev.sc"; sd: "ev.sd"; se: "ev.se"; sf: "ev.sf"; sg: "ev.sg"; sh: "ev.sh"; si: "ev.si"; sj: "ev.sj"; sk: "ev.sk"; sl: "ev.sl"; sm: "ev.sm"; sn: "ev.sn"; so: "ev.so"; sp: "ev.sp"; sq: "ev.sq"; sr: "ev.sr"; ss: "ev.ss"; st: "ev.st"; su: "ev.su"; sv: "ev.sv"; sw: "ev.sw"; sx: "ev.sx"; sy: "ev.sy"; sz: "ev.sz"; ta: "ev.ta"; tb: "ev.tb"; tc: "ev.tc"; td: "ev.td"; te: "ev.te"; tf: "ev.tf"; tg: "ev.tg"; th: "ev.th"; ti: "ev.ti"; tj: "ev.tj"; tk: "ev.tk"; tl: "ev.tl"; tm: "ev.tm"; tn: "ev.tn"; to: "ev.to"; tp: "ev.tp"; tq: "ev.tq"; tr: "ev.tr"; ts: "ev.ts"; tt: "ev.tt"; tu: "ev.tu"; tv: "ev.tv"; tw: "ev.tw"; tx: "ev.tx"; ty: "ev.ty"; tz: "ev.tz"; ua: "ev.ua"; ub: "ev.ub"; uc: "ev.uc"; ud: "ev.ud"; ue: "ev.ue"; uf: "ev.uf"; ug: "ev.ug"; uh: "ev.uh"; ui: "ev.ui"; uj: "ev.uj"; uk: "ev.uk"; ul: "ev.ul"; um: "ev.um"; un: "ev.un"; uo: "ev.uo"; up: "ev.up"; uq: "ev.uq"; ur: "ev.ur"; us: "ev.us"; ut: "ev.ut"; uu: "ev.uu"; uv: "ev.uv"; uw: "ev.uw"; ux: "ev.ux"; uy: "ev.uy"; uz: "ev.uz"; va: "ev.va"; vb: "ev.vb"; vc: "ev.vc"; vd: "ev.vd"; ve: "ev.ve"; vf: "ev.vf"; vg: "ev.vg"; vh: "ev.vh"; vi: "ev.vi"; vj: "ev.vj"; vk: "ev.vk"; vl: "ev.vl"; vm: "ev.vm"; vn: "ev.vn"; vo: "ev.vo"; vp: "ev.vp"; vq: "ev.vq"; vr: "ev.vr"; vs: "ev.vs"; vt: "ev.vt"; vu: "ev.vu"; vv: "ev.vv"; vw: "ev.vw"; vx: "ev.vx"; vy: "ev.vy"; vz: "ev.vz"; wa: "ev.wa"; wb: "ev.wb"; wc: "ev.wc"; wd: "ev.wd"; we: "ev.we"; wf: "ev.wf"; wg: "ev.wg"; wh: "ev.wh"; wi: "ev.wi"; wj: "ev.wj"; wk: "ev.wk"; wl: "ev.wl"; wm: "ev.wm"; wn: "ev.wn"; wo: "ev.wo"; wp: "ev.wp"; wq: "ev.wq"; wr: "ev.wr"; ws: "ev.ws"; wt: "ev.wt"; wu: "ev.wu"; wv: "ev.wv"; ww: "ev.ww"; wx: "ev.wx"; wy: "ev.wy"; wz: "ev.wz"; xa: "ev.xa"; xb: "ev.xb"; xc: "ev.xc"; xd: "ev.xd"; xe: "ev.xe"; xf: "ev.xf"; xg: "ev.xg"; xh: "ev.xh"; xi: "ev.xi"; xj: "ev.xj"; xk: "ev.xk"; xl: "ev.xl"; xm: "ev.xm"; xn: "ev.xn"; xo: "ev.xo"; xp: "ev.xp"; xq: "ev.xq"; xr: "ev.xr"; xs: "ev.xs"; xt: "ev.xt"; xu: "ev.xu"; xv: "ev.xv"; xw: "ev.xw"; xx: "ev.xx"; xy: "ev.xy"; xz: "ev.xz"; ya: "ev.ya"; yb: "ev.yb"; yc: "ev.yc"; yd: "ev.yd"; ye: "ev.ye"; yf: "ev.yf"; yg: "ev.yg"; yh: "ev.yh"; yi: "ev.yi"; yj: "ev.yj"; yk: "ev.yk"; yl: "ev.yl"; ym: "ev.ym"; yn: "ev.yn"; yo: "ev.yo"; yp: "ev.yp"; yq: "ev.yq"; yr: "ev.yr"; ys: "ev.ys"; yt: "ev.yt"; yu: "ev.yu"; yv: "ev.yv"; yw: "ev.yw"; yx: "ev.yx"; yy: "ev.yy"; yz: "ev.yz"; za: "ev.za"; zb: "ev.zb"; zc: "ev.zc"; zd: "ev.zd"; ze: "ev.ze"; zf: "ev.zf"; zg: "ev.zg"; zh: "ev.zh"; zi: "ev.zi"; zj: "ev.zj"; zk: "ev.zk"; zl: "ev.zl"; zm: "ev.zm"; zn: "ev.zn"; zo: "ev.zo"; zp: "ev.zp"; zq: "ev.zq"; zr: "ev.zr"; zs: "ev.zs"; zt: "ev.zt"; zu: "ev.zu"; zv: "ev.zv"; zw: "ev.zw"; zx: "ev.zx"; zy: "ev.zy"; zz: "ev.zz"; }; ew: { aa: "ew.aa"; ab: "ew.ab"; ac: "ew.ac"; ad: "ew.ad"; ae: "ew.ae"; af: "ew.af"; ag: "ew.ag"; ah: "ew.ah"; ai: "ew.ai"; aj: "ew.aj"; ak: "ew.ak"; al: "ew.al"; am: "ew.am"; an: "ew.an"; ao: "ew.ao"; ap: "ew.ap"; aq: "ew.aq"; ar: "ew.ar"; as: "ew.as"; at: "ew.at"; au: "ew.au"; av: "ew.av"; aw: "ew.aw"; ax: "ew.ax"; ay: "ew.ay"; az: "ew.az"; ba: "ew.ba"; bb: "ew.bb"; bc: "ew.bc"; bd: "ew.bd"; be: "ew.be"; bf: "ew.bf"; bg: "ew.bg"; bh: "ew.bh"; bi: "ew.bi"; bj: "ew.bj"; bk: "ew.bk"; bl: "ew.bl"; bm: "ew.bm"; bn: "ew.bn"; bo: "ew.bo"; bp: "ew.bp"; bq: "ew.bq"; br: "ew.br"; bs: "ew.bs"; bt: "ew.bt"; bu: "ew.bu"; bv: "ew.bv"; bw: "ew.bw"; bx: "ew.bx"; by: "ew.by"; bz: "ew.bz"; ca: "ew.ca"; cb: "ew.cb"; cc: "ew.cc"; cd: "ew.cd"; ce: "ew.ce"; cf: "ew.cf"; cg: "ew.cg"; ch: "ew.ch"; ci: "ew.ci"; cj: "ew.cj"; ck: "ew.ck"; cl: "ew.cl"; cm: "ew.cm"; cn: "ew.cn"; co: "ew.co"; cp: "ew.cp"; cq: "ew.cq"; cr: "ew.cr"; cs: "ew.cs"; ct: "ew.ct"; cu: "ew.cu"; cv: "ew.cv"; cw: "ew.cw"; cx: "ew.cx"; cy: "ew.cy"; cz: "ew.cz"; da: "ew.da"; db: "ew.db"; dc: "ew.dc"; dd: "ew.dd"; de: "ew.de"; df: "ew.df"; dg: "ew.dg"; dh: "ew.dh"; di: "ew.di"; dj: "ew.dj"; dk: "ew.dk"; dl: "ew.dl"; dm: "ew.dm"; dn: "ew.dn"; do: "ew.do"; dp: "ew.dp"; dq: "ew.dq"; dr: "ew.dr"; ds: "ew.ds"; dt: "ew.dt"; du: "ew.du"; dv: "ew.dv"; dw: "ew.dw"; dx: "ew.dx"; dy: "ew.dy"; dz: "ew.dz"; ea: "ew.ea"; eb: "ew.eb"; ec: "ew.ec"; ed: "ew.ed"; ee: "ew.ee"; ef: "ew.ef"; eg: "ew.eg"; eh: "ew.eh"; ei: "ew.ei"; ej: "ew.ej"; ek: "ew.ek"; el: "ew.el"; em: "ew.em"; en: "ew.en"; eo: "ew.eo"; ep: "ew.ep"; eq: "ew.eq"; er: "ew.er"; es: "ew.es"; et: "ew.et"; eu: "ew.eu"; ev: "ew.ev"; ew: "ew.ew"; ex: "ew.ex"; ey: "ew.ey"; ez: "ew.ez"; fa: "ew.fa"; fb: "ew.fb"; fc: "ew.fc"; fd: "ew.fd"; fe: "ew.fe"; ff: "ew.ff"; fg: "ew.fg"; fh: "ew.fh"; fi: "ew.fi"; fj: "ew.fj"; fk: "ew.fk"; fl: "ew.fl"; fm: "ew.fm"; fn: "ew.fn"; fo: "ew.fo"; fp: "ew.fp"; fq: "ew.fq"; fr: "ew.fr"; fs: "ew.fs"; ft: "ew.ft"; fu: "ew.fu"; fv: "ew.fv"; fw: "ew.fw"; fx: "ew.fx"; fy: "ew.fy"; fz: "ew.fz"; ga: "ew.ga"; gb: "ew.gb"; gc: "ew.gc"; gd: "ew.gd"; ge: "ew.ge"; gf: "ew.gf"; gg: "ew.gg"; gh: "ew.gh"; gi: "ew.gi"; gj: "ew.gj"; gk: "ew.gk"; gl: "ew.gl"; gm: "ew.gm"; gn: "ew.gn"; go: "ew.go"; gp: "ew.gp"; gq: "ew.gq"; gr: "ew.gr"; gs: "ew.gs"; gt: "ew.gt"; gu: "ew.gu"; gv: "ew.gv"; gw: "ew.gw"; gx: "ew.gx"; gy: "ew.gy"; gz: "ew.gz"; ha: "ew.ha"; hb: "ew.hb"; hc: "ew.hc"; hd: "ew.hd"; he: "ew.he"; hf: "ew.hf"; hg: "ew.hg"; hh: "ew.hh"; hi: "ew.hi"; hj: "ew.hj"; hk: "ew.hk"; hl: "ew.hl"; hm: "ew.hm"; hn: "ew.hn"; ho: "ew.ho"; hp: "ew.hp"; hq: "ew.hq"; hr: "ew.hr"; hs: "ew.hs"; ht: "ew.ht"; hu: "ew.hu"; hv: "ew.hv"; hw: "ew.hw"; hx: "ew.hx"; hy: "ew.hy"; hz: "ew.hz"; ia: "ew.ia"; ib: "ew.ib"; ic: "ew.ic"; id: "ew.id"; ie: "ew.ie"; if: "ew.if"; ig: "ew.ig"; ih: "ew.ih"; ii: "ew.ii"; ij: "ew.ij"; ik: "ew.ik"; il: "ew.il"; im: "ew.im"; in: "ew.in"; io: "ew.io"; ip: "ew.ip"; iq: "ew.iq"; ir: "ew.ir"; is: "ew.is"; it: "ew.it"; iu: "ew.iu"; iv: "ew.iv"; iw: "ew.iw"; ix: "ew.ix"; iy: "ew.iy"; iz: "ew.iz"; ja: "ew.ja"; jb: "ew.jb"; jc: "ew.jc"; jd: "ew.jd"; je: "ew.je"; jf: "ew.jf"; jg: "ew.jg"; jh: "ew.jh"; ji: "ew.ji"; jj: "ew.jj"; jk: "ew.jk"; jl: "ew.jl"; jm: "ew.jm"; jn: "ew.jn"; jo: "ew.jo"; jp: "ew.jp"; jq: "ew.jq"; jr: "ew.jr"; js: "ew.js"; jt: "ew.jt"; ju: "ew.ju"; jv: "ew.jv"; jw: "ew.jw"; jx: "ew.jx"; jy: "ew.jy"; jz: "ew.jz"; ka: "ew.ka"; kb: "ew.kb"; kc: "ew.kc"; kd: "ew.kd"; ke: "ew.ke"; kf: "ew.kf"; kg: "ew.kg"; kh: "ew.kh"; ki: "ew.ki"; kj: "ew.kj"; kk: "ew.kk"; kl: "ew.kl"; km: "ew.km"; kn: "ew.kn"; ko: "ew.ko"; kp: "ew.kp"; kq: "ew.kq"; kr: "ew.kr"; ks: "ew.ks"; kt: "ew.kt"; ku: "ew.ku"; kv: "ew.kv"; kw: "ew.kw"; kx: "ew.kx"; ky: "ew.ky"; kz: "ew.kz"; la: "ew.la"; lb: "ew.lb"; lc: "ew.lc"; ld: "ew.ld"; le: "ew.le"; lf: "ew.lf"; lg: "ew.lg"; lh: "ew.lh"; li: "ew.li"; lj: "ew.lj"; lk: "ew.lk"; ll: "ew.ll"; lm: "ew.lm"; ln: "ew.ln"; lo: "ew.lo"; lp: "ew.lp"; lq: "ew.lq"; lr: "ew.lr"; ls: "ew.ls"; lt: "ew.lt"; lu: "ew.lu"; lv: "ew.lv"; lw: "ew.lw"; lx: "ew.lx"; ly: "ew.ly"; lz: "ew.lz"; ma: "ew.ma"; mb: "ew.mb"; mc: "ew.mc"; md: "ew.md"; me: "ew.me"; mf: "ew.mf"; mg: "ew.mg"; mh: "ew.mh"; mi: "ew.mi"; mj: "ew.mj"; mk: "ew.mk"; ml: "ew.ml"; mm: "ew.mm"; mn: "ew.mn"; mo: "ew.mo"; mp: "ew.mp"; mq: "ew.mq"; mr: "ew.mr"; ms: "ew.ms"; mt: "ew.mt"; mu: "ew.mu"; mv: "ew.mv"; mw: "ew.mw"; mx: "ew.mx"; my: "ew.my"; mz: "ew.mz"; na: "ew.na"; nb: "ew.nb"; nc: "ew.nc"; nd: "ew.nd"; ne: "ew.ne"; nf: "ew.nf"; ng: "ew.ng"; nh: "ew.nh"; ni: "ew.ni"; nj: "ew.nj"; nk: "ew.nk"; nl: "ew.nl"; nm: "ew.nm"; nn: "ew.nn"; no: "ew.no"; np: "ew.np"; nq: "ew.nq"; nr: "ew.nr"; ns: "ew.ns"; nt: "ew.nt"; nu: "ew.nu"; nv: "ew.nv"; nw: "ew.nw"; nx: "ew.nx"; ny: "ew.ny"; nz: "ew.nz"; oa: "ew.oa"; ob: "ew.ob"; oc: "ew.oc"; od: "ew.od"; oe: "ew.oe"; of: "ew.of"; og: "ew.og"; oh: "ew.oh"; oi: "ew.oi"; oj: "ew.oj"; ok: "ew.ok"; ol: "ew.ol"; om: "ew.om"; on: "ew.on"; oo: "ew.oo"; op: "ew.op"; oq: "ew.oq"; or: "ew.or"; os: "ew.os"; ot: "ew.ot"; ou: "ew.ou"; ov: "ew.ov"; ow: "ew.ow"; ox: "ew.ox"; oy: "ew.oy"; oz: "ew.oz"; pa: "ew.pa"; pb: "ew.pb"; pc: "ew.pc"; pd: "ew.pd"; pe: "ew.pe"; pf: "ew.pf"; pg: "ew.pg"; ph: "ew.ph"; pi: "ew.pi"; pj: "ew.pj"; pk: "ew.pk"; pl: "ew.pl"; pm: "ew.pm"; pn: "ew.pn"; po: "ew.po"; pp: "ew.pp"; pq: "ew.pq"; pr: "ew.pr"; ps: "ew.ps"; pt: "ew.pt"; pu: "ew.pu"; pv: "ew.pv"; pw: "ew.pw"; px: "ew.px"; py: "ew.py"; pz: "ew.pz"; qa: "ew.qa"; qb: "ew.qb"; qc: "ew.qc"; qd: "ew.qd"; qe: "ew.qe"; qf: "ew.qf"; qg: "ew.qg"; qh: "ew.qh"; qi: "ew.qi"; qj: "ew.qj"; qk: "ew.qk"; ql: "ew.ql"; qm: "ew.qm"; qn: "ew.qn"; qo: "ew.qo"; qp: "ew.qp"; qq: "ew.qq"; qr: "ew.qr"; qs: "ew.qs"; qt: "ew.qt"; qu: "ew.qu"; qv: "ew.qv"; qw: "ew.qw"; qx: "ew.qx"; qy: "ew.qy"; qz: "ew.qz"; ra: "ew.ra"; rb: "ew.rb"; rc: "ew.rc"; rd: "ew.rd"; re: "ew.re"; rf: "ew.rf"; rg: "ew.rg"; rh: "ew.rh"; ri: "ew.ri"; rj: "ew.rj"; rk: "ew.rk"; rl: "ew.rl"; rm: "ew.rm"; rn: "ew.rn"; ro: "ew.ro"; rp: "ew.rp"; rq: "ew.rq"; rr: "ew.rr"; rs: "ew.rs"; rt: "ew.rt"; ru: "ew.ru"; rv: "ew.rv"; rw: "ew.rw"; rx: "ew.rx"; ry: "ew.ry"; rz: "ew.rz"; sa: "ew.sa"; sb: "ew.sb"; sc: "ew.sc"; sd: "ew.sd"; se: "ew.se"; sf: "ew.sf"; sg: "ew.sg"; sh: "ew.sh"; si: "ew.si"; sj: "ew.sj"; sk: "ew.sk"; sl: "ew.sl"; sm: "ew.sm"; sn: "ew.sn"; so: "ew.so"; sp: "ew.sp"; sq: "ew.sq"; sr: "ew.sr"; ss: "ew.ss"; st: "ew.st"; su: "ew.su"; sv: "ew.sv"; sw: "ew.sw"; sx: "ew.sx"; sy: "ew.sy"; sz: "ew.sz"; ta: "ew.ta"; tb: "ew.tb"; tc: "ew.tc"; td: "ew.td"; te: "ew.te"; tf: "ew.tf"; tg: "ew.tg"; th: "ew.th"; ti: "ew.ti"; tj: "ew.tj"; tk: "ew.tk"; tl: "ew.tl"; tm: "ew.tm"; tn: "ew.tn"; to: "ew.to"; tp: "ew.tp"; tq: "ew.tq"; tr: "ew.tr"; ts: "ew.ts"; tt: "ew.tt"; tu: "ew.tu"; tv: "ew.tv"; tw: "ew.tw"; tx: "ew.tx"; ty: "ew.ty"; tz: "ew.tz"; ua: "ew.ua"; ub: "ew.ub"; uc: "ew.uc"; ud: "ew.ud"; ue: "ew.ue"; uf: "ew.uf"; ug: "ew.ug"; uh: "ew.uh"; ui: "ew.ui"; uj: "ew.uj"; uk: "ew.uk"; ul: "ew.ul"; um: "ew.um"; un: "ew.un"; uo: "ew.uo"; up: "ew.up"; uq: "ew.uq"; ur: "ew.ur"; us: "ew.us"; ut: "ew.ut"; uu: "ew.uu"; uv: "ew.uv"; uw: "ew.uw"; ux: "ew.ux"; uy: "ew.uy"; uz: "ew.uz"; va: "ew.va"; vb: "ew.vb"; vc: "ew.vc"; vd: "ew.vd"; ve: "ew.ve"; vf: "ew.vf"; vg: "ew.vg"; vh: "ew.vh"; vi: "ew.vi"; vj: "ew.vj"; vk: "ew.vk"; vl: "ew.vl"; vm: "ew.vm"; vn: "ew.vn"; vo: "ew.vo"; vp: "ew.vp"; vq: "ew.vq"; vr: "ew.vr"; vs: "ew.vs"; vt: "ew.vt"; vu: "ew.vu"; vv: "ew.vv"; vw: "ew.vw"; vx: "ew.vx"; vy: "ew.vy"; vz: "ew.vz"; wa: "ew.wa"; wb: "ew.wb"; wc: "ew.wc"; wd: "ew.wd"; we: "ew.we"; wf: "ew.wf"; wg: "ew.wg"; wh: "ew.wh"; wi: "ew.wi"; wj: "ew.wj"; wk: "ew.wk"; wl: "ew.wl"; wm: "ew.wm"; wn: "ew.wn"; wo: "ew.wo"; wp: "ew.wp"; wq: "ew.wq"; wr: "ew.wr"; ws: "ew.ws"; wt: "ew.wt"; wu: "ew.wu"; wv: "ew.wv"; ww: "ew.ww"; wx: "ew.wx"; wy: "ew.wy"; wz: "ew.wz"; xa: "ew.xa"; xb: "ew.xb"; xc: "ew.xc"; xd: "ew.xd"; xe: "ew.xe"; xf: "ew.xf"; xg: "ew.xg"; xh: "ew.xh"; xi: "ew.xi"; xj: "ew.xj"; xk: "ew.xk"; xl: "ew.xl"; xm: "ew.xm"; xn: "ew.xn"; xo: "ew.xo"; xp: "ew.xp"; xq: "ew.xq"; xr: "ew.xr"; xs: "ew.xs"; xt: "ew.xt"; xu: "ew.xu"; xv: "ew.xv"; xw: "ew.xw"; xx: "ew.xx"; xy: "ew.xy"; xz: "ew.xz"; ya: "ew.ya"; yb: "ew.yb"; yc: "ew.yc"; yd: "ew.yd"; ye: "ew.ye"; yf: "ew.yf"; yg: "ew.yg"; yh: "ew.yh"; yi: "ew.yi"; yj: "ew.yj"; yk: "ew.yk"; yl: "ew.yl"; ym: "ew.ym"; yn: "ew.yn"; yo: "ew.yo"; yp: "ew.yp"; yq: "ew.yq"; yr: "ew.yr"; ys: "ew.ys"; yt: "ew.yt"; yu: "ew.yu"; yv: "ew.yv"; yw: "ew.yw"; yx: "ew.yx"; yy: "ew.yy"; yz: "ew.yz"; za: "ew.za"; zb: "ew.zb"; zc: "ew.zc"; zd: "ew.zd"; ze: "ew.ze"; zf: "ew.zf"; zg: "ew.zg"; zh: "ew.zh"; zi: "ew.zi"; zj: "ew.zj"; zk: "ew.zk"; zl: "ew.zl"; zm: "ew.zm"; zn: "ew.zn"; zo: "ew.zo"; zp: "ew.zp"; zq: "ew.zq"; zr: "ew.zr"; zs: "ew.zs"; zt: "ew.zt"; zu: "ew.zu"; zv: "ew.zv"; zw: "ew.zw"; zx: "ew.zx"; zy: "ew.zy"; zz: "ew.zz"; }; ex: { aa: "ex.aa"; ab: "ex.ab"; ac: "ex.ac"; ad: "ex.ad"; ae: "ex.ae"; af: "ex.af"; ag: "ex.ag"; ah: "ex.ah"; ai: "ex.ai"; aj: "ex.aj"; ak: "ex.ak"; al: "ex.al"; am: "ex.am"; an: "ex.an"; ao: "ex.ao"; ap: "ex.ap"; aq: "ex.aq"; ar: "ex.ar"; as: "ex.as"; at: "ex.at"; au: "ex.au"; av: "ex.av"; aw: "ex.aw"; ax: "ex.ax"; ay: "ex.ay"; az: "ex.az"; ba: "ex.ba"; bb: "ex.bb"; bc: "ex.bc"; bd: "ex.bd"; be: "ex.be"; bf: "ex.bf"; bg: "ex.bg"; bh: "ex.bh"; bi: "ex.bi"; bj: "ex.bj"; bk: "ex.bk"; bl: "ex.bl"; bm: "ex.bm"; bn: "ex.bn"; bo: "ex.bo"; bp: "ex.bp"; bq: "ex.bq"; br: "ex.br"; bs: "ex.bs"; bt: "ex.bt"; bu: "ex.bu"; bv: "ex.bv"; bw: "ex.bw"; bx: "ex.bx"; by: "ex.by"; bz: "ex.bz"; ca: "ex.ca"; cb: "ex.cb"; cc: "ex.cc"; cd: "ex.cd"; ce: "ex.ce"; cf: "ex.cf"; cg: "ex.cg"; ch: "ex.ch"; ci: "ex.ci"; cj: "ex.cj"; ck: "ex.ck"; cl: "ex.cl"; cm: "ex.cm"; cn: "ex.cn"; co: "ex.co"; cp: "ex.cp"; cq: "ex.cq"; cr: "ex.cr"; cs: "ex.cs"; ct: "ex.ct"; cu: "ex.cu"; cv: "ex.cv"; cw: "ex.cw"; cx: "ex.cx"; cy: "ex.cy"; cz: "ex.cz"; da: "ex.da"; db: "ex.db"; dc: "ex.dc"; dd: "ex.dd"; de: "ex.de"; df: "ex.df"; dg: "ex.dg"; dh: "ex.dh"; di: "ex.di"; dj: "ex.dj"; dk: "ex.dk"; dl: "ex.dl"; dm: "ex.dm"; dn: "ex.dn"; do: "ex.do"; dp: "ex.dp"; dq: "ex.dq"; dr: "ex.dr"; ds: "ex.ds"; dt: "ex.dt"; du: "ex.du"; dv: "ex.dv"; dw: "ex.dw"; dx: "ex.dx"; dy: "ex.dy"; dz: "ex.dz"; ea: "ex.ea"; eb: "ex.eb"; ec: "ex.ec"; ed: "ex.ed"; ee: "ex.ee"; ef: "ex.ef"; eg: "ex.eg"; eh: "ex.eh"; ei: "ex.ei"; ej: "ex.ej"; ek: "ex.ek"; el: "ex.el"; em: "ex.em"; en: "ex.en"; eo: "ex.eo"; ep: "ex.ep"; eq: "ex.eq"; er: "ex.er"; es: "ex.es"; et: "ex.et"; eu: "ex.eu"; ev: "ex.ev"; ew: "ex.ew"; ex: "ex.ex"; ey: "ex.ey"; ez: "ex.ez"; fa: "ex.fa"; fb: "ex.fb"; fc: "ex.fc"; fd: "ex.fd"; fe: "ex.fe"; ff: "ex.ff"; fg: "ex.fg"; fh: "ex.fh"; fi: "ex.fi"; fj: "ex.fj"; fk: "ex.fk"; fl: "ex.fl"; fm: "ex.fm"; fn: "ex.fn"; fo: "ex.fo"; fp: "ex.fp"; fq: "ex.fq"; fr: "ex.fr"; fs: "ex.fs"; ft: "ex.ft"; fu: "ex.fu"; fv: "ex.fv"; fw: "ex.fw"; fx: "ex.fx"; fy: "ex.fy"; fz: "ex.fz"; ga: "ex.ga"; gb: "ex.gb"; gc: "ex.gc"; gd: "ex.gd"; ge: "ex.ge"; gf: "ex.gf"; gg: "ex.gg"; gh: "ex.gh"; gi: "ex.gi"; gj: "ex.gj"; gk: "ex.gk"; gl: "ex.gl"; gm: "ex.gm"; gn: "ex.gn"; go: "ex.go"; gp: "ex.gp"; gq: "ex.gq"; gr: "ex.gr"; gs: "ex.gs"; gt: "ex.gt"; gu: "ex.gu"; gv: "ex.gv"; gw: "ex.gw"; gx: "ex.gx"; gy: "ex.gy"; gz: "ex.gz"; ha: "ex.ha"; hb: "ex.hb"; hc: "ex.hc"; hd: "ex.hd"; he: "ex.he"; hf: "ex.hf"; hg: "ex.hg"; hh: "ex.hh"; hi: "ex.hi"; hj: "ex.hj"; hk: "ex.hk"; hl: "ex.hl"; hm: "ex.hm"; hn: "ex.hn"; ho: "ex.ho"; hp: "ex.hp"; hq: "ex.hq"; hr: "ex.hr"; hs: "ex.hs"; ht: "ex.ht"; hu: "ex.hu"; hv: "ex.hv"; hw: "ex.hw"; hx: "ex.hx"; hy: "ex.hy"; hz: "ex.hz"; ia: "ex.ia"; ib: "ex.ib"; ic: "ex.ic"; id: "ex.id"; ie: "ex.ie"; if: "ex.if"; ig: "ex.ig"; ih: "ex.ih"; ii: "ex.ii"; ij: "ex.ij"; ik: "ex.ik"; il: "ex.il"; im: "ex.im"; in: "ex.in"; io: "ex.io"; ip: "ex.ip"; iq: "ex.iq"; ir: "ex.ir"; is: "ex.is"; it: "ex.it"; iu: "ex.iu"; iv: "ex.iv"; iw: "ex.iw"; ix: "ex.ix"; iy: "ex.iy"; iz: "ex.iz"; ja: "ex.ja"; jb: "ex.jb"; jc: "ex.jc"; jd: "ex.jd"; je: "ex.je"; jf: "ex.jf"; jg: "ex.jg"; jh: "ex.jh"; ji: "ex.ji"; jj: "ex.jj"; jk: "ex.jk"; jl: "ex.jl"; jm: "ex.jm"; jn: "ex.jn"; jo: "ex.jo"; jp: "ex.jp"; jq: "ex.jq"; jr: "ex.jr"; js: "ex.js"; jt: "ex.jt"; ju: "ex.ju"; jv: "ex.jv"; jw: "ex.jw"; jx: "ex.jx"; jy: "ex.jy"; jz: "ex.jz"; ka: "ex.ka"; kb: "ex.kb"; kc: "ex.kc"; kd: "ex.kd"; ke: "ex.ke"; kf: "ex.kf"; kg: "ex.kg"; kh: "ex.kh"; ki: "ex.ki"; kj: "ex.kj"; kk: "ex.kk"; kl: "ex.kl"; km: "ex.km"; kn: "ex.kn"; ko: "ex.ko"; kp: "ex.kp"; kq: "ex.kq"; kr: "ex.kr"; ks: "ex.ks"; kt: "ex.kt"; ku: "ex.ku"; kv: "ex.kv"; kw: "ex.kw"; kx: "ex.kx"; ky: "ex.ky"; kz: "ex.kz"; la: "ex.la"; lb: "ex.lb"; lc: "ex.lc"; ld: "ex.ld"; le: "ex.le"; lf: "ex.lf"; lg: "ex.lg"; lh: "ex.lh"; li: "ex.li"; lj: "ex.lj"; lk: "ex.lk"; ll: "ex.ll"; lm: "ex.lm"; ln: "ex.ln"; lo: "ex.lo"; lp: "ex.lp"; lq: "ex.lq"; lr: "ex.lr"; ls: "ex.ls"; lt: "ex.lt"; lu: "ex.lu"; lv: "ex.lv"; lw: "ex.lw"; lx: "ex.lx"; ly: "ex.ly"; lz: "ex.lz"; ma: "ex.ma"; mb: "ex.mb"; mc: "ex.mc"; md: "ex.md"; me: "ex.me"; mf: "ex.mf"; mg: "ex.mg"; mh: "ex.mh"; mi: "ex.mi"; mj: "ex.mj"; mk: "ex.mk"; ml: "ex.ml"; mm: "ex.mm"; mn: "ex.mn"; mo: "ex.mo"; mp: "ex.mp"; mq: "ex.mq"; mr: "ex.mr"; ms: "ex.ms"; mt: "ex.mt"; mu: "ex.mu"; mv: "ex.mv"; mw: "ex.mw"; mx: "ex.mx"; my: "ex.my"; mz: "ex.mz"; na: "ex.na"; nb: "ex.nb"; nc: "ex.nc"; nd: "ex.nd"; ne: "ex.ne"; nf: "ex.nf"; ng: "ex.ng"; nh: "ex.nh"; ni: "ex.ni"; nj: "ex.nj"; nk: "ex.nk"; nl: "ex.nl"; nm: "ex.nm"; nn: "ex.nn"; no: "ex.no"; np: "ex.np"; nq: "ex.nq"; nr: "ex.nr"; ns: "ex.ns"; nt: "ex.nt"; nu: "ex.nu"; nv: "ex.nv"; nw: "ex.nw"; nx: "ex.nx"; ny: "ex.ny"; nz: "ex.nz"; oa: "ex.oa"; ob: "ex.ob"; oc: "ex.oc"; od: "ex.od"; oe: "ex.oe"; of: "ex.of"; og: "ex.og"; oh: "ex.oh"; oi: "ex.oi"; oj: "ex.oj"; ok: "ex.ok"; ol: "ex.ol"; om: "ex.om"; on: "ex.on"; oo: "ex.oo"; op: "ex.op"; oq: "ex.oq"; or: "ex.or"; os: "ex.os"; ot: "ex.ot"; ou: "ex.ou"; ov: "ex.ov"; ow: "ex.ow"; ox: "ex.ox"; oy: "ex.oy"; oz: "ex.oz"; pa: "ex.pa"; pb: "ex.pb"; pc: "ex.pc"; pd: "ex.pd"; pe: "ex.pe"; pf: "ex.pf"; pg: "ex.pg"; ph: "ex.ph"; pi: "ex.pi"; pj: "ex.pj"; pk: "ex.pk"; pl: "ex.pl"; pm: "ex.pm"; pn: "ex.pn"; po: "ex.po"; pp: "ex.pp"; pq: "ex.pq"; pr: "ex.pr"; ps: "ex.ps"; pt: "ex.pt"; pu: "ex.pu"; pv: "ex.pv"; pw: "ex.pw"; px: "ex.px"; py: "ex.py"; pz: "ex.pz"; qa: "ex.qa"; qb: "ex.qb"; qc: "ex.qc"; qd: "ex.qd"; qe: "ex.qe"; qf: "ex.qf"; qg: "ex.qg"; qh: "ex.qh"; qi: "ex.qi"; qj: "ex.qj"; qk: "ex.qk"; ql: "ex.ql"; qm: "ex.qm"; qn: "ex.qn"; qo: "ex.qo"; qp: "ex.qp"; qq: "ex.qq"; qr: "ex.qr"; qs: "ex.qs"; qt: "ex.qt"; qu: "ex.qu"; qv: "ex.qv"; qw: "ex.qw"; qx: "ex.qx"; qy: "ex.qy"; qz: "ex.qz"; ra: "ex.ra"; rb: "ex.rb"; rc: "ex.rc"; rd: "ex.rd"; re: "ex.re"; rf: "ex.rf"; rg: "ex.rg"; rh: "ex.rh"; ri: "ex.ri"; rj: "ex.rj"; rk: "ex.rk"; rl: "ex.rl"; rm: "ex.rm"; rn: "ex.rn"; ro: "ex.ro"; rp: "ex.rp"; rq: "ex.rq"; rr: "ex.rr"; rs: "ex.rs"; rt: "ex.rt"; ru: "ex.ru"; rv: "ex.rv"; rw: "ex.rw"; rx: "ex.rx"; ry: "ex.ry"; rz: "ex.rz"; sa: "ex.sa"; sb: "ex.sb"; sc: "ex.sc"; sd: "ex.sd"; se: "ex.se"; sf: "ex.sf"; sg: "ex.sg"; sh: "ex.sh"; si: "ex.si"; sj: "ex.sj"; sk: "ex.sk"; sl: "ex.sl"; sm: "ex.sm"; sn: "ex.sn"; so: "ex.so"; sp: "ex.sp"; sq: "ex.sq"; sr: "ex.sr"; ss: "ex.ss"; st: "ex.st"; su: "ex.su"; sv: "ex.sv"; sw: "ex.sw"; sx: "ex.sx"; sy: "ex.sy"; sz: "ex.sz"; ta: "ex.ta"; tb: "ex.tb"; tc: "ex.tc"; td: "ex.td"; te: "ex.te"; tf: "ex.tf"; tg: "ex.tg"; th: "ex.th"; ti: "ex.ti"; tj: "ex.tj"; tk: "ex.tk"; tl: "ex.tl"; tm: "ex.tm"; tn: "ex.tn"; to: "ex.to"; tp: "ex.tp"; tq: "ex.tq"; tr: "ex.tr"; ts: "ex.ts"; tt: "ex.tt"; tu: "ex.tu"; tv: "ex.tv"; tw: "ex.tw"; tx: "ex.tx"; ty: "ex.ty"; tz: "ex.tz"; ua: "ex.ua"; ub: "ex.ub"; uc: "ex.uc"; ud: "ex.ud"; ue: "ex.ue"; uf: "ex.uf"; ug: "ex.ug"; uh: "ex.uh"; ui: "ex.ui"; uj: "ex.uj"; uk: "ex.uk"; ul: "ex.ul"; um: "ex.um"; un: "ex.un"; uo: "ex.uo"; up: "ex.up"; uq: "ex.uq"; ur: "ex.ur"; us: "ex.us"; ut: "ex.ut"; uu: "ex.uu"; uv: "ex.uv"; uw: "ex.uw"; ux: "ex.ux"; uy: "ex.uy"; uz: "ex.uz"; va: "ex.va"; vb: "ex.vb"; vc: "ex.vc"; vd: "ex.vd"; ve: "ex.ve"; vf: "ex.vf"; vg: "ex.vg"; vh: "ex.vh"; vi: "ex.vi"; vj: "ex.vj"; vk: "ex.vk"; vl: "ex.vl"; vm: "ex.vm"; vn: "ex.vn"; vo: "ex.vo"; vp: "ex.vp"; vq: "ex.vq"; vr: "ex.vr"; vs: "ex.vs"; vt: "ex.vt"; vu: "ex.vu"; vv: "ex.vv"; vw: "ex.vw"; vx: "ex.vx"; vy: "ex.vy"; vz: "ex.vz"; wa: "ex.wa"; wb: "ex.wb"; wc: "ex.wc"; wd: "ex.wd"; we: "ex.we"; wf: "ex.wf"; wg: "ex.wg"; wh: "ex.wh"; wi: "ex.wi"; wj: "ex.wj"; wk: "ex.wk"; wl: "ex.wl"; wm: "ex.wm"; wn: "ex.wn"; wo: "ex.wo"; wp: "ex.wp"; wq: "ex.wq"; wr: "ex.wr"; ws: "ex.ws"; wt: "ex.wt"; wu: "ex.wu"; wv: "ex.wv"; ww: "ex.ww"; wx: "ex.wx"; wy: "ex.wy"; wz: "ex.wz"; xa: "ex.xa"; xb: "ex.xb"; xc: "ex.xc"; xd: "ex.xd"; xe: "ex.xe"; xf: "ex.xf"; xg: "ex.xg"; xh: "ex.xh"; xi: "ex.xi"; xj: "ex.xj"; xk: "ex.xk"; xl: "ex.xl"; xm: "ex.xm"; xn: "ex.xn"; xo: "ex.xo"; xp: "ex.xp"; xq: "ex.xq"; xr: "ex.xr"; xs: "ex.xs"; xt: "ex.xt"; xu: "ex.xu"; xv: "ex.xv"; xw: "ex.xw"; xx: "ex.xx"; xy: "ex.xy"; xz: "ex.xz"; ya: "ex.ya"; yb: "ex.yb"; yc: "ex.yc"; yd: "ex.yd"; ye: "ex.ye"; yf: "ex.yf"; yg: "ex.yg"; yh: "ex.yh"; yi: "ex.yi"; yj: "ex.yj"; yk: "ex.yk"; yl: "ex.yl"; ym: "ex.ym"; yn: "ex.yn"; yo: "ex.yo"; yp: "ex.yp"; yq: "ex.yq"; yr: "ex.yr"; ys: "ex.ys"; yt: "ex.yt"; yu: "ex.yu"; yv: "ex.yv"; yw: "ex.yw"; yx: "ex.yx"; yy: "ex.yy"; yz: "ex.yz"; za: "ex.za"; zb: "ex.zb"; zc: "ex.zc"; zd: "ex.zd"; ze: "ex.ze"; zf: "ex.zf"; zg: "ex.zg"; zh: "ex.zh"; zi: "ex.zi"; zj: "ex.zj"; zk: "ex.zk"; zl: "ex.zl"; zm: "ex.zm"; zn: "ex.zn"; zo: "ex.zo"; zp: "ex.zp"; zq: "ex.zq"; zr: "ex.zr"; zs: "ex.zs"; zt: "ex.zt"; zu: "ex.zu"; zv: "ex.zv"; zw: "ex.zw"; zx: "ex.zx"; zy: "ex.zy"; zz: "ex.zz"; }; ey: { aa: "ey.aa"; ab: "ey.ab"; ac: "ey.ac"; ad: "ey.ad"; ae: "ey.ae"; af: "ey.af"; ag: "ey.ag"; ah: "ey.ah"; ai: "ey.ai"; aj: "ey.aj"; ak: "ey.ak"; al: "ey.al"; am: "ey.am"; an: "ey.an"; ao: "ey.ao"; ap: "ey.ap"; aq: "ey.aq"; ar: "ey.ar"; as: "ey.as"; at: "ey.at"; au: "ey.au"; av: "ey.av"; aw: "ey.aw"; ax: "ey.ax"; ay: "ey.ay"; az: "ey.az"; ba: "ey.ba"; bb: "ey.bb"; bc: "ey.bc"; bd: "ey.bd"; be: "ey.be"; bf: "ey.bf"; bg: "ey.bg"; bh: "ey.bh"; bi: "ey.bi"; bj: "ey.bj"; bk: "ey.bk"; bl: "ey.bl"; bm: "ey.bm"; bn: "ey.bn"; bo: "ey.bo"; bp: "ey.bp"; bq: "ey.bq"; br: "ey.br"; bs: "ey.bs"; bt: "ey.bt"; bu: "ey.bu"; bv: "ey.bv"; bw: "ey.bw"; bx: "ey.bx"; by: "ey.by"; bz: "ey.bz"; ca: "ey.ca"; cb: "ey.cb"; cc: "ey.cc"; cd: "ey.cd"; ce: "ey.ce"; cf: "ey.cf"; cg: "ey.cg"; ch: "ey.ch"; ci: "ey.ci"; cj: "ey.cj"; ck: "ey.ck"; cl: "ey.cl"; cm: "ey.cm"; cn: "ey.cn"; co: "ey.co"; cp: "ey.cp"; cq: "ey.cq"; cr: "ey.cr"; cs: "ey.cs"; ct: "ey.ct"; cu: "ey.cu"; cv: "ey.cv"; cw: "ey.cw"; cx: "ey.cx"; cy: "ey.cy"; cz: "ey.cz"; da: "ey.da"; db: "ey.db"; dc: "ey.dc"; dd: "ey.dd"; de: "ey.de"; df: "ey.df"; dg: "ey.dg"; dh: "ey.dh"; di: "ey.di"; dj: "ey.dj"; dk: "ey.dk"; dl: "ey.dl"; dm: "ey.dm"; dn: "ey.dn"; do: "ey.do"; dp: "ey.dp"; dq: "ey.dq"; dr: "ey.dr"; ds: "ey.ds"; dt: "ey.dt"; du: "ey.du"; dv: "ey.dv"; dw: "ey.dw"; dx: "ey.dx"; dy: "ey.dy"; dz: "ey.dz"; ea: "ey.ea"; eb: "ey.eb"; ec: "ey.ec"; ed: "ey.ed"; ee: "ey.ee"; ef: "ey.ef"; eg: "ey.eg"; eh: "ey.eh"; ei: "ey.ei"; ej: "ey.ej"; ek: "ey.ek"; el: "ey.el"; em: "ey.em"; en: "ey.en"; eo: "ey.eo"; ep: "ey.ep"; eq: "ey.eq"; er: "ey.er"; es: "ey.es"; et: "ey.et"; eu: "ey.eu"; ev: "ey.ev"; ew: "ey.ew"; ex: "ey.ex"; ey: "ey.ey"; ez: "ey.ez"; fa: "ey.fa"; fb: "ey.fb"; fc: "ey.fc"; fd: "ey.fd"; fe: "ey.fe"; ff: "ey.ff"; fg: "ey.fg"; fh: "ey.fh"; fi: "ey.fi"; fj: "ey.fj"; fk: "ey.fk"; fl: "ey.fl"; fm: "ey.fm"; fn: "ey.fn"; fo: "ey.fo"; fp: "ey.fp"; fq: "ey.fq"; fr: "ey.fr"; fs: "ey.fs"; ft: "ey.ft"; fu: "ey.fu"; fv: "ey.fv"; fw: "ey.fw"; fx: "ey.fx"; fy: "ey.fy"; fz: "ey.fz"; ga: "ey.ga"; gb: "ey.gb"; gc: "ey.gc"; gd: "ey.gd"; ge: "ey.ge"; gf: "ey.gf"; gg: "ey.gg"; gh: "ey.gh"; gi: "ey.gi"; gj: "ey.gj"; gk: "ey.gk"; gl: "ey.gl"; gm: "ey.gm"; gn: "ey.gn"; go: "ey.go"; gp: "ey.gp"; gq: "ey.gq"; gr: "ey.gr"; gs: "ey.gs"; gt: "ey.gt"; gu: "ey.gu"; gv: "ey.gv"; gw: "ey.gw"; gx: "ey.gx"; gy: "ey.gy"; gz: "ey.gz"; ha: "ey.ha"; hb: "ey.hb"; hc: "ey.hc"; hd: "ey.hd"; he: "ey.he"; hf: "ey.hf"; hg: "ey.hg"; hh: "ey.hh"; hi: "ey.hi"; hj: "ey.hj"; hk: "ey.hk"; hl: "ey.hl"; hm: "ey.hm"; hn: "ey.hn"; ho: "ey.ho"; hp: "ey.hp"; hq: "ey.hq"; hr: "ey.hr"; hs: "ey.hs"; ht: "ey.ht"; hu: "ey.hu"; hv: "ey.hv"; hw: "ey.hw"; hx: "ey.hx"; hy: "ey.hy"; hz: "ey.hz"; ia: "ey.ia"; ib: "ey.ib"; ic: "ey.ic"; id: "ey.id"; ie: "ey.ie"; if: "ey.if"; ig: "ey.ig"; ih: "ey.ih"; ii: "ey.ii"; ij: "ey.ij"; ik: "ey.ik"; il: "ey.il"; im: "ey.im"; in: "ey.in"; io: "ey.io"; ip: "ey.ip"; iq: "ey.iq"; ir: "ey.ir"; is: "ey.is"; it: "ey.it"; iu: "ey.iu"; iv: "ey.iv"; iw: "ey.iw"; ix: "ey.ix"; iy: "ey.iy"; iz: "ey.iz"; ja: "ey.ja"; jb: "ey.jb"; jc: "ey.jc"; jd: "ey.jd"; je: "ey.je"; jf: "ey.jf"; jg: "ey.jg"; jh: "ey.jh"; ji: "ey.ji"; jj: "ey.jj"; jk: "ey.jk"; jl: "ey.jl"; jm: "ey.jm"; jn: "ey.jn"; jo: "ey.jo"; jp: "ey.jp"; jq: "ey.jq"; jr: "ey.jr"; js: "ey.js"; jt: "ey.jt"; ju: "ey.ju"; jv: "ey.jv"; jw: "ey.jw"; jx: "ey.jx"; jy: "ey.jy"; jz: "ey.jz"; ka: "ey.ka"; kb: "ey.kb"; kc: "ey.kc"; kd: "ey.kd"; ke: "ey.ke"; kf: "ey.kf"; kg: "ey.kg"; kh: "ey.kh"; ki: "ey.ki"; kj: "ey.kj"; kk: "ey.kk"; kl: "ey.kl"; km: "ey.km"; kn: "ey.kn"; ko: "ey.ko"; kp: "ey.kp"; kq: "ey.kq"; kr: "ey.kr"; ks: "ey.ks"; kt: "ey.kt"; ku: "ey.ku"; kv: "ey.kv"; kw: "ey.kw"; kx: "ey.kx"; ky: "ey.ky"; kz: "ey.kz"; la: "ey.la"; lb: "ey.lb"; lc: "ey.lc"; ld: "ey.ld"; le: "ey.le"; lf: "ey.lf"; lg: "ey.lg"; lh: "ey.lh"; li: "ey.li"; lj: "ey.lj"; lk: "ey.lk"; ll: "ey.ll"; lm: "ey.lm"; ln: "ey.ln"; lo: "ey.lo"; lp: "ey.lp"; lq: "ey.lq"; lr: "ey.lr"; ls: "ey.ls"; lt: "ey.lt"; lu: "ey.lu"; lv: "ey.lv"; lw: "ey.lw"; lx: "ey.lx"; ly: "ey.ly"; lz: "ey.lz"; ma: "ey.ma"; mb: "ey.mb"; mc: "ey.mc"; md: "ey.md"; me: "ey.me"; mf: "ey.mf"; mg: "ey.mg"; mh: "ey.mh"; mi: "ey.mi"; mj: "ey.mj"; mk: "ey.mk"; ml: "ey.ml"; mm: "ey.mm"; mn: "ey.mn"; mo: "ey.mo"; mp: "ey.mp"; mq: "ey.mq"; mr: "ey.mr"; ms: "ey.ms"; mt: "ey.mt"; mu: "ey.mu"; mv: "ey.mv"; mw: "ey.mw"; mx: "ey.mx"; my: "ey.my"; mz: "ey.mz"; na: "ey.na"; nb: "ey.nb"; nc: "ey.nc"; nd: "ey.nd"; ne: "ey.ne"; nf: "ey.nf"; ng: "ey.ng"; nh: "ey.nh"; ni: "ey.ni"; nj: "ey.nj"; nk: "ey.nk"; nl: "ey.nl"; nm: "ey.nm"; nn: "ey.nn"; no: "ey.no"; np: "ey.np"; nq: "ey.nq"; nr: "ey.nr"; ns: "ey.ns"; nt: "ey.nt"; nu: "ey.nu"; nv: "ey.nv"; nw: "ey.nw"; nx: "ey.nx"; ny: "ey.ny"; nz: "ey.nz"; oa: "ey.oa"; ob: "ey.ob"; oc: "ey.oc"; od: "ey.od"; oe: "ey.oe"; of: "ey.of"; og: "ey.og"; oh: "ey.oh"; oi: "ey.oi"; oj: "ey.oj"; ok: "ey.ok"; ol: "ey.ol"; om: "ey.om"; on: "ey.on"; oo: "ey.oo"; op: "ey.op"; oq: "ey.oq"; or: "ey.or"; os: "ey.os"; ot: "ey.ot"; ou: "ey.ou"; ov: "ey.ov"; ow: "ey.ow"; ox: "ey.ox"; oy: "ey.oy"; oz: "ey.oz"; pa: "ey.pa"; pb: "ey.pb"; pc: "ey.pc"; pd: "ey.pd"; pe: "ey.pe"; pf: "ey.pf"; pg: "ey.pg"; ph: "ey.ph"; pi: "ey.pi"; pj: "ey.pj"; pk: "ey.pk"; pl: "ey.pl"; pm: "ey.pm"; pn: "ey.pn"; po: "ey.po"; pp: "ey.pp"; pq: "ey.pq"; pr: "ey.pr"; ps: "ey.ps"; pt: "ey.pt"; pu: "ey.pu"; pv: "ey.pv"; pw: "ey.pw"; px: "ey.px"; py: "ey.py"; pz: "ey.pz"; qa: "ey.qa"; qb: "ey.qb"; qc: "ey.qc"; qd: "ey.qd"; qe: "ey.qe"; qf: "ey.qf"; qg: "ey.qg"; qh: "ey.qh"; qi: "ey.qi"; qj: "ey.qj"; qk: "ey.qk"; ql: "ey.ql"; qm: "ey.qm"; qn: "ey.qn"; qo: "ey.qo"; qp: "ey.qp"; qq: "ey.qq"; qr: "ey.qr"; qs: "ey.qs"; qt: "ey.qt"; qu: "ey.qu"; qv: "ey.qv"; qw: "ey.qw"; qx: "ey.qx"; qy: "ey.qy"; qz: "ey.qz"; ra: "ey.ra"; rb: "ey.rb"; rc: "ey.rc"; rd: "ey.rd"; re: "ey.re"; rf: "ey.rf"; rg: "ey.rg"; rh: "ey.rh"; ri: "ey.ri"; rj: "ey.rj"; rk: "ey.rk"; rl: "ey.rl"; rm: "ey.rm"; rn: "ey.rn"; ro: "ey.ro"; rp: "ey.rp"; rq: "ey.rq"; rr: "ey.rr"; rs: "ey.rs"; rt: "ey.rt"; ru: "ey.ru"; rv: "ey.rv"; rw: "ey.rw"; rx: "ey.rx"; ry: "ey.ry"; rz: "ey.rz"; sa: "ey.sa"; sb: "ey.sb"; sc: "ey.sc"; sd: "ey.sd"; se: "ey.se"; sf: "ey.sf"; sg: "ey.sg"; sh: "ey.sh"; si: "ey.si"; sj: "ey.sj"; sk: "ey.sk"; sl: "ey.sl"; sm: "ey.sm"; sn: "ey.sn"; so: "ey.so"; sp: "ey.sp"; sq: "ey.sq"; sr: "ey.sr"; ss: "ey.ss"; st: "ey.st"; su: "ey.su"; sv: "ey.sv"; sw: "ey.sw"; sx: "ey.sx"; sy: "ey.sy"; sz: "ey.sz"; ta: "ey.ta"; tb: "ey.tb"; tc: "ey.tc"; td: "ey.td"; te: "ey.te"; tf: "ey.tf"; tg: "ey.tg"; th: "ey.th"; ti: "ey.ti"; tj: "ey.tj"; tk: "ey.tk"; tl: "ey.tl"; tm: "ey.tm"; tn: "ey.tn"; to: "ey.to"; tp: "ey.tp"; tq: "ey.tq"; tr: "ey.tr"; ts: "ey.ts"; tt: "ey.tt"; tu: "ey.tu"; tv: "ey.tv"; tw: "ey.tw"; tx: "ey.tx"; ty: "ey.ty"; tz: "ey.tz"; ua: "ey.ua"; ub: "ey.ub"; uc: "ey.uc"; ud: "ey.ud"; ue: "ey.ue"; uf: "ey.uf"; ug: "ey.ug"; uh: "ey.uh"; ui: "ey.ui"; uj: "ey.uj"; uk: "ey.uk"; ul: "ey.ul"; um: "ey.um"; un: "ey.un"; uo: "ey.uo"; up: "ey.up"; uq: "ey.uq"; ur: "ey.ur"; us: "ey.us"; ut: "ey.ut"; uu: "ey.uu"; uv: "ey.uv"; uw: "ey.uw"; ux: "ey.ux"; uy: "ey.uy"; uz: "ey.uz"; va: "ey.va"; vb: "ey.vb"; vc: "ey.vc"; vd: "ey.vd"; ve: "ey.ve"; vf: "ey.vf"; vg: "ey.vg"; vh: "ey.vh"; vi: "ey.vi"; vj: "ey.vj"; vk: "ey.vk"; vl: "ey.vl"; vm: "ey.vm"; vn: "ey.vn"; vo: "ey.vo"; vp: "ey.vp"; vq: "ey.vq"; vr: "ey.vr"; vs: "ey.vs"; vt: "ey.vt"; vu: "ey.vu"; vv: "ey.vv"; vw: "ey.vw"; vx: "ey.vx"; vy: "ey.vy"; vz: "ey.vz"; wa: "ey.wa"; wb: "ey.wb"; wc: "ey.wc"; wd: "ey.wd"; we: "ey.we"; wf: "ey.wf"; wg: "ey.wg"; wh: "ey.wh"; wi: "ey.wi"; wj: "ey.wj"; wk: "ey.wk"; wl: "ey.wl"; wm: "ey.wm"; wn: "ey.wn"; wo: "ey.wo"; wp: "ey.wp"; wq: "ey.wq"; wr: "ey.wr"; ws: "ey.ws"; wt: "ey.wt"; wu: "ey.wu"; wv: "ey.wv"; ww: "ey.ww"; wx: "ey.wx"; wy: "ey.wy"; wz: "ey.wz"; xa: "ey.xa"; xb: "ey.xb"; xc: "ey.xc"; xd: "ey.xd"; xe: "ey.xe"; xf: "ey.xf"; xg: "ey.xg"; xh: "ey.xh"; xi: "ey.xi"; xj: "ey.xj"; xk: "ey.xk"; xl: "ey.xl"; xm: "ey.xm"; xn: "ey.xn"; xo: "ey.xo"; xp: "ey.xp"; xq: "ey.xq"; xr: "ey.xr"; xs: "ey.xs"; xt: "ey.xt"; xu: "ey.xu"; xv: "ey.xv"; xw: "ey.xw"; xx: "ey.xx"; xy: "ey.xy"; xz: "ey.xz"; ya: "ey.ya"; yb: "ey.yb"; yc: "ey.yc"; yd: "ey.yd"; ye: "ey.ye"; yf: "ey.yf"; yg: "ey.yg"; yh: "ey.yh"; yi: "ey.yi"; yj: "ey.yj"; yk: "ey.yk"; yl: "ey.yl"; ym: "ey.ym"; yn: "ey.yn"; yo: "ey.yo"; yp: "ey.yp"; yq: "ey.yq"; yr: "ey.yr"; ys: "ey.ys"; yt: "ey.yt"; yu: "ey.yu"; yv: "ey.yv"; yw: "ey.yw"; yx: "ey.yx"; yy: "ey.yy"; yz: "ey.yz"; za: "ey.za"; zb: "ey.zb"; zc: "ey.zc"; zd: "ey.zd"; ze: "ey.ze"; zf: "ey.zf"; zg: "ey.zg"; zh: "ey.zh"; zi: "ey.zi"; zj: "ey.zj"; zk: "ey.zk"; zl: "ey.zl"; zm: "ey.zm"; zn: "ey.zn"; zo: "ey.zo"; zp: "ey.zp"; zq: "ey.zq"; zr: "ey.zr"; zs: "ey.zs"; zt: "ey.zt"; zu: "ey.zu"; zv: "ey.zv"; zw: "ey.zw"; zx: "ey.zx"; zy: "ey.zy"; zz: "ey.zz"; }; ez: { aa: "ez.aa"; ab: "ez.ab"; ac: "ez.ac"; ad: "ez.ad"; ae: "ez.ae"; af: "ez.af"; ag: "ez.ag"; ah: "ez.ah"; ai: "ez.ai"; aj: "ez.aj"; ak: "ez.ak"; al: "ez.al"; am: "ez.am"; an: "ez.an"; ao: "ez.ao"; ap: "ez.ap"; aq: "ez.aq"; ar: "ez.ar"; as: "ez.as"; at: "ez.at"; au: "ez.au"; av: "ez.av"; aw: "ez.aw"; ax: "ez.ax"; ay: "ez.ay"; az: "ez.az"; ba: "ez.ba"; bb: "ez.bb"; bc: "ez.bc"; bd: "ez.bd"; be: "ez.be"; bf: "ez.bf"; bg: "ez.bg"; bh: "ez.bh"; bi: "ez.bi"; bj: "ez.bj"; bk: "ez.bk"; bl: "ez.bl"; bm: "ez.bm"; bn: "ez.bn"; bo: "ez.bo"; bp: "ez.bp"; bq: "ez.bq"; br: "ez.br"; bs: "ez.bs"; bt: "ez.bt"; bu: "ez.bu"; bv: "ez.bv"; bw: "ez.bw"; bx: "ez.bx"; by: "ez.by"; bz: "ez.bz"; ca: "ez.ca"; cb: "ez.cb"; cc: "ez.cc"; cd: "ez.cd"; ce: "ez.ce"; cf: "ez.cf"; cg: "ez.cg"; ch: "ez.ch"; ci: "ez.ci"; cj: "ez.cj"; ck: "ez.ck"; cl: "ez.cl"; cm: "ez.cm"; cn: "ez.cn"; co: "ez.co"; cp: "ez.cp"; cq: "ez.cq"; cr: "ez.cr"; cs: "ez.cs"; ct: "ez.ct"; cu: "ez.cu"; cv: "ez.cv"; cw: "ez.cw"; cx: "ez.cx"; cy: "ez.cy"; cz: "ez.cz"; da: "ez.da"; db: "ez.db"; dc: "ez.dc"; dd: "ez.dd"; de: "ez.de"; df: "ez.df"; dg: "ez.dg"; dh: "ez.dh"; di: "ez.di"; dj: "ez.dj"; dk: "ez.dk"; dl: "ez.dl"; dm: "ez.dm"; dn: "ez.dn"; do: "ez.do"; dp: "ez.dp"; dq: "ez.dq"; dr: "ez.dr"; ds: "ez.ds"; dt: "ez.dt"; du: "ez.du"; dv: "ez.dv"; dw: "ez.dw"; dx: "ez.dx"; dy: "ez.dy"; dz: "ez.dz"; ea: "ez.ea"; eb: "ez.eb"; ec: "ez.ec"; ed: "ez.ed"; ee: "ez.ee"; ef: "ez.ef"; eg: "ez.eg"; eh: "ez.eh"; ei: "ez.ei"; ej: "ez.ej"; ek: "ez.ek"; el: "ez.el"; em: "ez.em"; en: "ez.en"; eo: "ez.eo"; ep: "ez.ep"; eq: "ez.eq"; er: "ez.er"; es: "ez.es"; et: "ez.et"; eu: "ez.eu"; ev: "ez.ev"; ew: "ez.ew"; ex: "ez.ex"; ey: "ez.ey"; ez: "ez.ez"; fa: "ez.fa"; fb: "ez.fb"; fc: "ez.fc"; fd: "ez.fd"; fe: "ez.fe"; ff: "ez.ff"; fg: "ez.fg"; fh: "ez.fh"; fi: "ez.fi"; fj: "ez.fj"; fk: "ez.fk"; fl: "ez.fl"; fm: "ez.fm"; fn: "ez.fn"; fo: "ez.fo"; fp: "ez.fp"; fq: "ez.fq"; fr: "ez.fr"; fs: "ez.fs"; ft: "ez.ft"; fu: "ez.fu"; fv: "ez.fv"; fw: "ez.fw"; fx: "ez.fx"; fy: "ez.fy"; fz: "ez.fz"; ga: "ez.ga"; gb: "ez.gb"; gc: "ez.gc"; gd: "ez.gd"; ge: "ez.ge"; gf: "ez.gf"; gg: "ez.gg"; gh: "ez.gh"; gi: "ez.gi"; gj: "ez.gj"; gk: "ez.gk"; gl: "ez.gl"; gm: "ez.gm"; gn: "ez.gn"; go: "ez.go"; gp: "ez.gp"; gq: "ez.gq"; gr: "ez.gr"; gs: "ez.gs"; gt: "ez.gt"; gu: "ez.gu"; gv: "ez.gv"; gw: "ez.gw"; gx: "ez.gx"; gy: "ez.gy"; gz: "ez.gz"; ha: "ez.ha"; hb: "ez.hb"; hc: "ez.hc"; hd: "ez.hd"; he: "ez.he"; hf: "ez.hf"; hg: "ez.hg"; hh: "ez.hh"; hi: "ez.hi"; hj: "ez.hj"; hk: "ez.hk"; hl: "ez.hl"; hm: "ez.hm"; hn: "ez.hn"; ho: "ez.ho"; hp: "ez.hp"; hq: "ez.hq"; hr: "ez.hr"; hs: "ez.hs"; ht: "ez.ht"; hu: "ez.hu"; hv: "ez.hv"; hw: "ez.hw"; hx: "ez.hx"; hy: "ez.hy"; hz: "ez.hz"; ia: "ez.ia"; ib: "ez.ib"; ic: "ez.ic"; id: "ez.id"; ie: "ez.ie"; if: "ez.if"; ig: "ez.ig"; ih: "ez.ih"; ii: "ez.ii"; ij: "ez.ij"; ik: "ez.ik"; il: "ez.il"; im: "ez.im"; in: "ez.in"; io: "ez.io"; ip: "ez.ip"; iq: "ez.iq"; ir: "ez.ir"; is: "ez.is"; it: "ez.it"; iu: "ez.iu"; iv: "ez.iv"; iw: "ez.iw"; ix: "ez.ix"; iy: "ez.iy"; iz: "ez.iz"; ja: "ez.ja"; jb: "ez.jb"; jc: "ez.jc"; jd: "ez.jd"; je: "ez.je"; jf: "ez.jf"; jg: "ez.jg"; jh: "ez.jh"; ji: "ez.ji"; jj: "ez.jj"; jk: "ez.jk"; jl: "ez.jl"; jm: "ez.jm"; jn: "ez.jn"; jo: "ez.jo"; jp: "ez.jp"; jq: "ez.jq"; jr: "ez.jr"; js: "ez.js"; jt: "ez.jt"; ju: "ez.ju"; jv: "ez.jv"; jw: "ez.jw"; jx: "ez.jx"; jy: "ez.jy"; jz: "ez.jz"; ka: "ez.ka"; kb: "ez.kb"; kc: "ez.kc"; kd: "ez.kd"; ke: "ez.ke"; kf: "ez.kf"; kg: "ez.kg"; kh: "ez.kh"; ki: "ez.ki"; kj: "ez.kj"; kk: "ez.kk"; kl: "ez.kl"; km: "ez.km"; kn: "ez.kn"; ko: "ez.ko"; kp: "ez.kp"; kq: "ez.kq"; kr: "ez.kr"; ks: "ez.ks"; kt: "ez.kt"; ku: "ez.ku"; kv: "ez.kv"; kw: "ez.kw"; kx: "ez.kx"; ky: "ez.ky"; kz: "ez.kz"; la: "ez.la"; lb: "ez.lb"; lc: "ez.lc"; ld: "ez.ld"; le: "ez.le"; lf: "ez.lf"; lg: "ez.lg"; lh: "ez.lh"; li: "ez.li"; lj: "ez.lj"; lk: "ez.lk"; ll: "ez.ll"; lm: "ez.lm"; ln: "ez.ln"; lo: "ez.lo"; lp: "ez.lp"; lq: "ez.lq"; lr: "ez.lr"; ls: "ez.ls"; lt: "ez.lt"; lu: "ez.lu"; lv: "ez.lv"; lw: "ez.lw"; lx: "ez.lx"; ly: "ez.ly"; lz: "ez.lz"; ma: "ez.ma"; mb: "ez.mb"; mc: "ez.mc"; md: "ez.md"; me: "ez.me"; mf: "ez.mf"; mg: "ez.mg"; mh: "ez.mh"; mi: "ez.mi"; mj: "ez.mj"; mk: "ez.mk"; ml: "ez.ml"; mm: "ez.mm"; mn: "ez.mn"; mo: "ez.mo"; mp: "ez.mp"; mq: "ez.mq"; mr: "ez.mr"; ms: "ez.ms"; mt: "ez.mt"; mu: "ez.mu"; mv: "ez.mv"; mw: "ez.mw"; mx: "ez.mx"; my: "ez.my"; mz: "ez.mz"; na: "ez.na"; nb: "ez.nb"; nc: "ez.nc"; nd: "ez.nd"; ne: "ez.ne"; nf: "ez.nf"; ng: "ez.ng"; nh: "ez.nh"; ni: "ez.ni"; nj: "ez.nj"; nk: "ez.nk"; nl: "ez.nl"; nm: "ez.nm"; nn: "ez.nn"; no: "ez.no"; np: "ez.np"; nq: "ez.nq"; nr: "ez.nr"; ns: "ez.ns"; nt: "ez.nt"; nu: "ez.nu"; nv: "ez.nv"; nw: "ez.nw"; nx: "ez.nx"; ny: "ez.ny"; nz: "ez.nz"; oa: "ez.oa"; ob: "ez.ob"; oc: "ez.oc"; od: "ez.od"; oe: "ez.oe"; of: "ez.of"; og: "ez.og"; oh: "ez.oh"; oi: "ez.oi"; oj: "ez.oj"; ok: "ez.ok"; ol: "ez.ol"; om: "ez.om"; on: "ez.on"; oo: "ez.oo"; op: "ez.op"; oq: "ez.oq"; or: "ez.or"; os: "ez.os"; ot: "ez.ot"; ou: "ez.ou"; ov: "ez.ov"; ow: "ez.ow"; ox: "ez.ox"; oy: "ez.oy"; oz: "ez.oz"; pa: "ez.pa"; pb: "ez.pb"; pc: "ez.pc"; pd: "ez.pd"; pe: "ez.pe"; pf: "ez.pf"; pg: "ez.pg"; ph: "ez.ph"; pi: "ez.pi"; pj: "ez.pj"; pk: "ez.pk"; pl: "ez.pl"; pm: "ez.pm"; pn: "ez.pn"; po: "ez.po"; pp: "ez.pp"; pq: "ez.pq"; pr: "ez.pr"; ps: "ez.ps"; pt: "ez.pt"; pu: "ez.pu"; pv: "ez.pv"; pw: "ez.pw"; px: "ez.px"; py: "ez.py"; pz: "ez.pz"; qa: "ez.qa"; qb: "ez.qb"; qc: "ez.qc"; qd: "ez.qd"; qe: "ez.qe"; qf: "ez.qf"; qg: "ez.qg"; qh: "ez.qh"; qi: "ez.qi"; qj: "ez.qj"; qk: "ez.qk"; ql: "ez.ql"; qm: "ez.qm"; qn: "ez.qn"; qo: "ez.qo"; qp: "ez.qp"; qq: "ez.qq"; qr: "ez.qr"; qs: "ez.qs"; qt: "ez.qt"; qu: "ez.qu"; qv: "ez.qv"; qw: "ez.qw"; qx: "ez.qx"; qy: "ez.qy"; qz: "ez.qz"; ra: "ez.ra"; rb: "ez.rb"; rc: "ez.rc"; rd: "ez.rd"; re: "ez.re"; rf: "ez.rf"; rg: "ez.rg"; rh: "ez.rh"; ri: "ez.ri"; rj: "ez.rj"; rk: "ez.rk"; rl: "ez.rl"; rm: "ez.rm"; rn: "ez.rn"; ro: "ez.ro"; rp: "ez.rp"; rq: "ez.rq"; rr: "ez.rr"; rs: "ez.rs"; rt: "ez.rt"; ru: "ez.ru"; rv: "ez.rv"; rw: "ez.rw"; rx: "ez.rx"; ry: "ez.ry"; rz: "ez.rz"; sa: "ez.sa"; sb: "ez.sb"; sc: "ez.sc"; sd: "ez.sd"; se: "ez.se"; sf: "ez.sf"; sg: "ez.sg"; sh: "ez.sh"; si: "ez.si"; sj: "ez.sj"; sk: "ez.sk"; sl: "ez.sl"; sm: "ez.sm"; sn: "ez.sn"; so: "ez.so"; sp: "ez.sp"; sq: "ez.sq"; sr: "ez.sr"; ss: "ez.ss"; st: "ez.st"; su: "ez.su"; sv: "ez.sv"; sw: "ez.sw"; sx: "ez.sx"; sy: "ez.sy"; sz: "ez.sz"; ta: "ez.ta"; tb: "ez.tb"; tc: "ez.tc"; td: "ez.td"; te: "ez.te"; tf: "ez.tf"; tg: "ez.tg"; th: "ez.th"; ti: "ez.ti"; tj: "ez.tj"; tk: "ez.tk"; tl: "ez.tl"; tm: "ez.tm"; tn: "ez.tn"; to: "ez.to"; tp: "ez.tp"; tq: "ez.tq"; tr: "ez.tr"; ts: "ez.ts"; tt: "ez.tt"; tu: "ez.tu"; tv: "ez.tv"; tw: "ez.tw"; tx: "ez.tx"; ty: "ez.ty"; tz: "ez.tz"; ua: "ez.ua"; ub: "ez.ub"; uc: "ez.uc"; ud: "ez.ud"; ue: "ez.ue"; uf: "ez.uf"; ug: "ez.ug"; uh: "ez.uh"; ui: "ez.ui"; uj: "ez.uj"; uk: "ez.uk"; ul: "ez.ul"; um: "ez.um"; un: "ez.un"; uo: "ez.uo"; up: "ez.up"; uq: "ez.uq"; ur: "ez.ur"; us: "ez.us"; ut: "ez.ut"; uu: "ez.uu"; uv: "ez.uv"; uw: "ez.uw"; ux: "ez.ux"; uy: "ez.uy"; uz: "ez.uz"; va: "ez.va"; vb: "ez.vb"; vc: "ez.vc"; vd: "ez.vd"; ve: "ez.ve"; vf: "ez.vf"; vg: "ez.vg"; vh: "ez.vh"; vi: "ez.vi"; vj: "ez.vj"; vk: "ez.vk"; vl: "ez.vl"; vm: "ez.vm"; vn: "ez.vn"; vo: "ez.vo"; vp: "ez.vp"; vq: "ez.vq"; vr: "ez.vr"; vs: "ez.vs"; vt: "ez.vt"; vu: "ez.vu"; vv: "ez.vv"; vw: "ez.vw"; vx: "ez.vx"; vy: "ez.vy"; vz: "ez.vz"; wa: "ez.wa"; wb: "ez.wb"; wc: "ez.wc"; wd: "ez.wd"; we: "ez.we"; wf: "ez.wf"; wg: "ez.wg"; wh: "ez.wh"; wi: "ez.wi"; wj: "ez.wj"; wk: "ez.wk"; wl: "ez.wl"; wm: "ez.wm"; wn: "ez.wn"; wo: "ez.wo"; wp: "ez.wp"; wq: "ez.wq"; wr: "ez.wr"; ws: "ez.ws"; wt: "ez.wt"; wu: "ez.wu"; wv: "ez.wv"; ww: "ez.ww"; wx: "ez.wx"; wy: "ez.wy"; wz: "ez.wz"; xa: "ez.xa"; xb: "ez.xb"; xc: "ez.xc"; xd: "ez.xd"; xe: "ez.xe"; xf: "ez.xf"; xg: "ez.xg"; xh: "ez.xh"; xi: "ez.xi"; xj: "ez.xj"; xk: "ez.xk"; xl: "ez.xl"; xm: "ez.xm"; xn: "ez.xn"; xo: "ez.xo"; xp: "ez.xp"; xq: "ez.xq"; xr: "ez.xr"; xs: "ez.xs"; xt: "ez.xt"; xu: "ez.xu"; xv: "ez.xv"; xw: "ez.xw"; xx: "ez.xx"; xy: "ez.xy"; xz: "ez.xz"; ya: "ez.ya"; yb: "ez.yb"; yc: "ez.yc"; yd: "ez.yd"; ye: "ez.ye"; yf: "ez.yf"; yg: "ez.yg"; yh: "ez.yh"; yi: "ez.yi"; yj: "ez.yj"; yk: "ez.yk"; yl: "ez.yl"; ym: "ez.ym"; yn: "ez.yn"; yo: "ez.yo"; yp: "ez.yp"; yq: "ez.yq"; yr: "ez.yr"; ys: "ez.ys"; yt: "ez.yt"; yu: "ez.yu"; yv: "ez.yv"; yw: "ez.yw"; yx: "ez.yx"; yy: "ez.yy"; yz: "ez.yz"; za: "ez.za"; zb: "ez.zb"; zc: "ez.zc"; zd: "ez.zd"; ze: "ez.ze"; zf: "ez.zf"; zg: "ez.zg"; zh: "ez.zh"; zi: "ez.zi"; zj: "ez.zj"; zk: "ez.zk"; zl: "ez.zl"; zm: "ez.zm"; zn: "ez.zn"; zo: "ez.zo"; zp: "ez.zp"; zq: "ez.zq"; zr: "ez.zr"; zs: "ez.zs"; zt: "ez.zt"; zu: "ez.zu"; zv: "ez.zv"; zw: "ez.zw"; zx: "ez.zx"; zy: "ez.zy"; zz: "ez.zz"; }; fa: { aa: "fa.aa"; ab: "fa.ab"; ac: "fa.ac"; ad: "fa.ad"; ae: "fa.ae"; af: "fa.af"; ag: "fa.ag"; ah: "fa.ah"; ai: "fa.ai"; aj: "fa.aj"; ak: "fa.ak"; al: "fa.al"; am: "fa.am"; an: "fa.an"; ao: "fa.ao"; ap: "fa.ap"; aq: "fa.aq"; ar: "fa.ar"; as: "fa.as"; at: "fa.at"; au: "fa.au"; av: "fa.av"; aw: "fa.aw"; ax: "fa.ax"; ay: "fa.ay"; az: "fa.az"; ba: "fa.ba"; bb: "fa.bb"; bc: "fa.bc"; bd: "fa.bd"; be: "fa.be"; bf: "fa.bf"; bg: "fa.bg"; bh: "fa.bh"; bi: "fa.bi"; bj: "fa.bj"; bk: "fa.bk"; bl: "fa.bl"; bm: "fa.bm"; bn: "fa.bn"; bo: "fa.bo"; bp: "fa.bp"; bq: "fa.bq"; br: "fa.br"; bs: "fa.bs"; bt: "fa.bt"; bu: "fa.bu"; bv: "fa.bv"; bw: "fa.bw"; bx: "fa.bx"; by: "fa.by"; bz: "fa.bz"; ca: "fa.ca"; cb: "fa.cb"; cc: "fa.cc"; cd: "fa.cd"; ce: "fa.ce"; cf: "fa.cf"; cg: "fa.cg"; ch: "fa.ch"; ci: "fa.ci"; cj: "fa.cj"; ck: "fa.ck"; cl: "fa.cl"; cm: "fa.cm"; cn: "fa.cn"; co: "fa.co"; cp: "fa.cp"; cq: "fa.cq"; cr: "fa.cr"; cs: "fa.cs"; ct: "fa.ct"; cu: "fa.cu"; cv: "fa.cv"; cw: "fa.cw"; cx: "fa.cx"; cy: "fa.cy"; cz: "fa.cz"; da: "fa.da"; db: "fa.db"; dc: "fa.dc"; dd: "fa.dd"; de: "fa.de"; df: "fa.df"; dg: "fa.dg"; dh: "fa.dh"; di: "fa.di"; dj: "fa.dj"; dk: "fa.dk"; dl: "fa.dl"; dm: "fa.dm"; dn: "fa.dn"; do: "fa.do"; dp: "fa.dp"; dq: "fa.dq"; dr: "fa.dr"; ds: "fa.ds"; dt: "fa.dt"; du: "fa.du"; dv: "fa.dv"; dw: "fa.dw"; dx: "fa.dx"; dy: "fa.dy"; dz: "fa.dz"; ea: "fa.ea"; eb: "fa.eb"; ec: "fa.ec"; ed: "fa.ed"; ee: "fa.ee"; ef: "fa.ef"; eg: "fa.eg"; eh: "fa.eh"; ei: "fa.ei"; ej: "fa.ej"; ek: "fa.ek"; el: "fa.el"; em: "fa.em"; en: "fa.en"; eo: "fa.eo"; ep: "fa.ep"; eq: "fa.eq"; er: "fa.er"; es: "fa.es"; et: "fa.et"; eu: "fa.eu"; ev: "fa.ev"; ew: "fa.ew"; ex: "fa.ex"; ey: "fa.ey"; ez: "fa.ez"; fa: "fa.fa"; fb: "fa.fb"; fc: "fa.fc"; fd: "fa.fd"; fe: "fa.fe"; ff: "fa.ff"; fg: "fa.fg"; fh: "fa.fh"; fi: "fa.fi"; fj: "fa.fj"; fk: "fa.fk"; fl: "fa.fl"; fm: "fa.fm"; fn: "fa.fn"; fo: "fa.fo"; fp: "fa.fp"; fq: "fa.fq"; fr: "fa.fr"; fs: "fa.fs"; ft: "fa.ft"; fu: "fa.fu"; fv: "fa.fv"; fw: "fa.fw"; fx: "fa.fx"; fy: "fa.fy"; fz: "fa.fz"; ga: "fa.ga"; gb: "fa.gb"; gc: "fa.gc"; gd: "fa.gd"; ge: "fa.ge"; gf: "fa.gf"; gg: "fa.gg"; gh: "fa.gh"; gi: "fa.gi"; gj: "fa.gj"; gk: "fa.gk"; gl: "fa.gl"; gm: "fa.gm"; gn: "fa.gn"; go: "fa.go"; gp: "fa.gp"; gq: "fa.gq"; gr: "fa.gr"; gs: "fa.gs"; gt: "fa.gt"; gu: "fa.gu"; gv: "fa.gv"; gw: "fa.gw"; gx: "fa.gx"; gy: "fa.gy"; gz: "fa.gz"; ha: "fa.ha"; hb: "fa.hb"; hc: "fa.hc"; hd: "fa.hd"; he: "fa.he"; hf: "fa.hf"; hg: "fa.hg"; hh: "fa.hh"; hi: "fa.hi"; hj: "fa.hj"; hk: "fa.hk"; hl: "fa.hl"; hm: "fa.hm"; hn: "fa.hn"; ho: "fa.ho"; hp: "fa.hp"; hq: "fa.hq"; hr: "fa.hr"; hs: "fa.hs"; ht: "fa.ht"; hu: "fa.hu"; hv: "fa.hv"; hw: "fa.hw"; hx: "fa.hx"; hy: "fa.hy"; hz: "fa.hz"; ia: "fa.ia"; ib: "fa.ib"; ic: "fa.ic"; id: "fa.id"; ie: "fa.ie"; if: "fa.if"; ig: "fa.ig"; ih: "fa.ih"; ii: "fa.ii"; ij: "fa.ij"; ik: "fa.ik"; il: "fa.il"; im: "fa.im"; in: "fa.in"; io: "fa.io"; ip: "fa.ip"; iq: "fa.iq"; ir: "fa.ir"; is: "fa.is"; it: "fa.it"; iu: "fa.iu"; iv: "fa.iv"; iw: "fa.iw"; ix: "fa.ix"; iy: "fa.iy"; iz: "fa.iz"; ja: "fa.ja"; jb: "fa.jb"; jc: "fa.jc"; jd: "fa.jd"; je: "fa.je"; jf: "fa.jf"; jg: "fa.jg"; jh: "fa.jh"; ji: "fa.ji"; jj: "fa.jj"; jk: "fa.jk"; jl: "fa.jl"; jm: "fa.jm"; jn: "fa.jn"; jo: "fa.jo"; jp: "fa.jp"; jq: "fa.jq"; jr: "fa.jr"; js: "fa.js"; jt: "fa.jt"; ju: "fa.ju"; jv: "fa.jv"; jw: "fa.jw"; jx: "fa.jx"; jy: "fa.jy"; jz: "fa.jz"; ka: "fa.ka"; kb: "fa.kb"; kc: "fa.kc"; kd: "fa.kd"; ke: "fa.ke"; kf: "fa.kf"; kg: "fa.kg"; kh: "fa.kh"; ki: "fa.ki"; kj: "fa.kj"; kk: "fa.kk"; kl: "fa.kl"; km: "fa.km"; kn: "fa.kn"; ko: "fa.ko"; kp: "fa.kp"; kq: "fa.kq"; kr: "fa.kr"; ks: "fa.ks"; kt: "fa.kt"; ku: "fa.ku"; kv: "fa.kv"; kw: "fa.kw"; kx: "fa.kx"; ky: "fa.ky"; kz: "fa.kz"; la: "fa.la"; lb: "fa.lb"; lc: "fa.lc"; ld: "fa.ld"; le: "fa.le"; lf: "fa.lf"; lg: "fa.lg"; lh: "fa.lh"; li: "fa.li"; lj: "fa.lj"; lk: "fa.lk"; ll: "fa.ll"; lm: "fa.lm"; ln: "fa.ln"; lo: "fa.lo"; lp: "fa.lp"; lq: "fa.lq"; lr: "fa.lr"; ls: "fa.ls"; lt: "fa.lt"; lu: "fa.lu"; lv: "fa.lv"; lw: "fa.lw"; lx: "fa.lx"; ly: "fa.ly"; lz: "fa.lz"; ma: "fa.ma"; mb: "fa.mb"; mc: "fa.mc"; md: "fa.md"; me: "fa.me"; mf: "fa.mf"; mg: "fa.mg"; mh: "fa.mh"; mi: "fa.mi"; mj: "fa.mj"; mk: "fa.mk"; ml: "fa.ml"; mm: "fa.mm"; mn: "fa.mn"; mo: "fa.mo"; mp: "fa.mp"; mq: "fa.mq"; mr: "fa.mr"; ms: "fa.ms"; mt: "fa.mt"; mu: "fa.mu"; mv: "fa.mv"; mw: "fa.mw"; mx: "fa.mx"; my: "fa.my"; mz: "fa.mz"; na: "fa.na"; nb: "fa.nb"; nc: "fa.nc"; nd: "fa.nd"; ne: "fa.ne"; nf: "fa.nf"; ng: "fa.ng"; nh: "fa.nh"; ni: "fa.ni"; nj: "fa.nj"; nk: "fa.nk"; nl: "fa.nl"; nm: "fa.nm"; nn: "fa.nn"; no: "fa.no"; np: "fa.np"; nq: "fa.nq"; nr: "fa.nr"; ns: "fa.ns"; nt: "fa.nt"; nu: "fa.nu"; nv: "fa.nv"; nw: "fa.nw"; nx: "fa.nx"; ny: "fa.ny"; nz: "fa.nz"; oa: "fa.oa"; ob: "fa.ob"; oc: "fa.oc"; od: "fa.od"; oe: "fa.oe"; of: "fa.of"; og: "fa.og"; oh: "fa.oh"; oi: "fa.oi"; oj: "fa.oj"; ok: "fa.ok"; ol: "fa.ol"; om: "fa.om"; on: "fa.on"; oo: "fa.oo"; op: "fa.op"; oq: "fa.oq"; or: "fa.or"; os: "fa.os"; ot: "fa.ot"; ou: "fa.ou"; ov: "fa.ov"; ow: "fa.ow"; ox: "fa.ox"; oy: "fa.oy"; oz: "fa.oz"; pa: "fa.pa"; pb: "fa.pb"; pc: "fa.pc"; pd: "fa.pd"; pe: "fa.pe"; pf: "fa.pf"; pg: "fa.pg"; ph: "fa.ph"; pi: "fa.pi"; pj: "fa.pj"; pk: "fa.pk"; pl: "fa.pl"; pm: "fa.pm"; pn: "fa.pn"; po: "fa.po"; pp: "fa.pp"; pq: "fa.pq"; pr: "fa.pr"; ps: "fa.ps"; pt: "fa.pt"; pu: "fa.pu"; pv: "fa.pv"; pw: "fa.pw"; px: "fa.px"; py: "fa.py"; pz: "fa.pz"; qa: "fa.qa"; qb: "fa.qb"; qc: "fa.qc"; qd: "fa.qd"; qe: "fa.qe"; qf: "fa.qf"; qg: "fa.qg"; qh: "fa.qh"; qi: "fa.qi"; qj: "fa.qj"; qk: "fa.qk"; ql: "fa.ql"; qm: "fa.qm"; qn: "fa.qn"; qo: "fa.qo"; qp: "fa.qp"; qq: "fa.qq"; qr: "fa.qr"; qs: "fa.qs"; qt: "fa.qt"; qu: "fa.qu"; qv: "fa.qv"; qw: "fa.qw"; qx: "fa.qx"; qy: "fa.qy"; qz: "fa.qz"; ra: "fa.ra"; rb: "fa.rb"; rc: "fa.rc"; rd: "fa.rd"; re: "fa.re"; rf: "fa.rf"; rg: "fa.rg"; rh: "fa.rh"; ri: "fa.ri"; rj: "fa.rj"; rk: "fa.rk"; rl: "fa.rl"; rm: "fa.rm"; rn: "fa.rn"; ro: "fa.ro"; rp: "fa.rp"; rq: "fa.rq"; rr: "fa.rr"; rs: "fa.rs"; rt: "fa.rt"; ru: "fa.ru"; rv: "fa.rv"; rw: "fa.rw"; rx: "fa.rx"; ry: "fa.ry"; rz: "fa.rz"; sa: "fa.sa"; sb: "fa.sb"; sc: "fa.sc"; sd: "fa.sd"; se: "fa.se"; sf: "fa.sf"; sg: "fa.sg"; sh: "fa.sh"; si: "fa.si"; sj: "fa.sj"; sk: "fa.sk"; sl: "fa.sl"; sm: "fa.sm"; sn: "fa.sn"; so: "fa.so"; sp: "fa.sp"; sq: "fa.sq"; sr: "fa.sr"; ss: "fa.ss"; st: "fa.st"; su: "fa.su"; sv: "fa.sv"; sw: "fa.sw"; sx: "fa.sx"; sy: "fa.sy"; sz: "fa.sz"; ta: "fa.ta"; tb: "fa.tb"; tc: "fa.tc"; td: "fa.td"; te: "fa.te"; tf: "fa.tf"; tg: "fa.tg"; th: "fa.th"; ti: "fa.ti"; tj: "fa.tj"; tk: "fa.tk"; tl: "fa.tl"; tm: "fa.tm"; tn: "fa.tn"; to: "fa.to"; tp: "fa.tp"; tq: "fa.tq"; tr: "fa.tr"; ts: "fa.ts"; tt: "fa.tt"; tu: "fa.tu"; tv: "fa.tv"; tw: "fa.tw"; tx: "fa.tx"; ty: "fa.ty"; tz: "fa.tz"; ua: "fa.ua"; ub: "fa.ub"; uc: "fa.uc"; ud: "fa.ud"; ue: "fa.ue"; uf: "fa.uf"; ug: "fa.ug"; uh: "fa.uh"; ui: "fa.ui"; uj: "fa.uj"; uk: "fa.uk"; ul: "fa.ul"; um: "fa.um"; un: "fa.un"; uo: "fa.uo"; up: "fa.up"; uq: "fa.uq"; ur: "fa.ur"; us: "fa.us"; ut: "fa.ut"; uu: "fa.uu"; uv: "fa.uv"; uw: "fa.uw"; ux: "fa.ux"; uy: "fa.uy"; uz: "fa.uz"; va: "fa.va"; vb: "fa.vb"; vc: "fa.vc"; vd: "fa.vd"; ve: "fa.ve"; vf: "fa.vf"; vg: "fa.vg"; vh: "fa.vh"; vi: "fa.vi"; vj: "fa.vj"; vk: "fa.vk"; vl: "fa.vl"; vm: "fa.vm"; vn: "fa.vn"; vo: "fa.vo"; vp: "fa.vp"; vq: "fa.vq"; vr: "fa.vr"; vs: "fa.vs"; vt: "fa.vt"; vu: "fa.vu"; vv: "fa.vv"; vw: "fa.vw"; vx: "fa.vx"; vy: "fa.vy"; vz: "fa.vz"; wa: "fa.wa"; wb: "fa.wb"; wc: "fa.wc"; wd: "fa.wd"; we: "fa.we"; wf: "fa.wf"; wg: "fa.wg"; wh: "fa.wh"; wi: "fa.wi"; wj: "fa.wj"; wk: "fa.wk"; wl: "fa.wl"; wm: "fa.wm"; wn: "fa.wn"; wo: "fa.wo"; wp: "fa.wp"; wq: "fa.wq"; wr: "fa.wr"; ws: "fa.ws"; wt: "fa.wt"; wu: "fa.wu"; wv: "fa.wv"; ww: "fa.ww"; wx: "fa.wx"; wy: "fa.wy"; wz: "fa.wz"; xa: "fa.xa"; xb: "fa.xb"; xc: "fa.xc"; xd: "fa.xd"; xe: "fa.xe"; xf: "fa.xf"; xg: "fa.xg"; xh: "fa.xh"; xi: "fa.xi"; xj: "fa.xj"; xk: "fa.xk"; xl: "fa.xl"; xm: "fa.xm"; xn: "fa.xn"; xo: "fa.xo"; xp: "fa.xp"; xq: "fa.xq"; xr: "fa.xr"; xs: "fa.xs"; xt: "fa.xt"; xu: "fa.xu"; xv: "fa.xv"; xw: "fa.xw"; xx: "fa.xx"; xy: "fa.xy"; xz: "fa.xz"; ya: "fa.ya"; yb: "fa.yb"; yc: "fa.yc"; yd: "fa.yd"; ye: "fa.ye"; yf: "fa.yf"; yg: "fa.yg"; yh: "fa.yh"; yi: "fa.yi"; yj: "fa.yj"; yk: "fa.yk"; yl: "fa.yl"; ym: "fa.ym"; yn: "fa.yn"; yo: "fa.yo"; yp: "fa.yp"; yq: "fa.yq"; yr: "fa.yr"; ys: "fa.ys"; yt: "fa.yt"; yu: "fa.yu"; yv: "fa.yv"; yw: "fa.yw"; yx: "fa.yx"; yy: "fa.yy"; yz: "fa.yz"; za: "fa.za"; zb: "fa.zb"; zc: "fa.zc"; zd: "fa.zd"; ze: "fa.ze"; zf: "fa.zf"; zg: "fa.zg"; zh: "fa.zh"; zi: "fa.zi"; zj: "fa.zj"; zk: "fa.zk"; zl: "fa.zl"; zm: "fa.zm"; zn: "fa.zn"; zo: "fa.zo"; zp: "fa.zp"; zq: "fa.zq"; zr: "fa.zr"; zs: "fa.zs"; zt: "fa.zt"; zu: "fa.zu"; zv: "fa.zv"; zw: "fa.zw"; zx: "fa.zx"; zy: "fa.zy"; zz: "fa.zz"; }; fb: { aa: "fb.aa"; ab: "fb.ab"; ac: "fb.ac"; ad: "fb.ad"; ae: "fb.ae"; af: "fb.af"; ag: "fb.ag"; ah: "fb.ah"; ai: "fb.ai"; aj: "fb.aj"; ak: "fb.ak"; al: "fb.al"; am: "fb.am"; an: "fb.an"; ao: "fb.ao"; ap: "fb.ap"; aq: "fb.aq"; ar: "fb.ar"; as: "fb.as"; at: "fb.at"; au: "fb.au"; av: "fb.av"; aw: "fb.aw"; ax: "fb.ax"; ay: "fb.ay"; az: "fb.az"; ba: "fb.ba"; bb: "fb.bb"; bc: "fb.bc"; bd: "fb.bd"; be: "fb.be"; bf: "fb.bf"; bg: "fb.bg"; bh: "fb.bh"; bi: "fb.bi"; bj: "fb.bj"; bk: "fb.bk"; bl: "fb.bl"; bm: "fb.bm"; bn: "fb.bn"; bo: "fb.bo"; bp: "fb.bp"; bq: "fb.bq"; br: "fb.br"; bs: "fb.bs"; bt: "fb.bt"; bu: "fb.bu"; bv: "fb.bv"; bw: "fb.bw"; bx: "fb.bx"; by: "fb.by"; bz: "fb.bz"; ca: "fb.ca"; cb: "fb.cb"; cc: "fb.cc"; cd: "fb.cd"; ce: "fb.ce"; cf: "fb.cf"; cg: "fb.cg"; ch: "fb.ch"; ci: "fb.ci"; cj: "fb.cj"; ck: "fb.ck"; cl: "fb.cl"; cm: "fb.cm"; cn: "fb.cn"; co: "fb.co"; cp: "fb.cp"; cq: "fb.cq"; cr: "fb.cr"; cs: "fb.cs"; ct: "fb.ct"; cu: "fb.cu"; cv: "fb.cv"; cw: "fb.cw"; cx: "fb.cx"; cy: "fb.cy"; cz: "fb.cz"; da: "fb.da"; db: "fb.db"; dc: "fb.dc"; dd: "fb.dd"; de: "fb.de"; df: "fb.df"; dg: "fb.dg"; dh: "fb.dh"; di: "fb.di"; dj: "fb.dj"; dk: "fb.dk"; dl: "fb.dl"; dm: "fb.dm"; dn: "fb.dn"; do: "fb.do"; dp: "fb.dp"; dq: "fb.dq"; dr: "fb.dr"; ds: "fb.ds"; dt: "fb.dt"; du: "fb.du"; dv: "fb.dv"; dw: "fb.dw"; dx: "fb.dx"; dy: "fb.dy"; dz: "fb.dz"; ea: "fb.ea"; eb: "fb.eb"; ec: "fb.ec"; ed: "fb.ed"; ee: "fb.ee"; ef: "fb.ef"; eg: "fb.eg"; eh: "fb.eh"; ei: "fb.ei"; ej: "fb.ej"; ek: "fb.ek"; el: "fb.el"; em: "fb.em"; en: "fb.en"; eo: "fb.eo"; ep: "fb.ep"; eq: "fb.eq"; er: "fb.er"; es: "fb.es"; et: "fb.et"; eu: "fb.eu"; ev: "fb.ev"; ew: "fb.ew"; ex: "fb.ex"; ey: "fb.ey"; ez: "fb.ez"; fa: "fb.fa"; fb: "fb.fb"; fc: "fb.fc"; fd: "fb.fd"; fe: "fb.fe"; ff: "fb.ff"; fg: "fb.fg"; fh: "fb.fh"; fi: "fb.fi"; fj: "fb.fj"; fk: "fb.fk"; fl: "fb.fl"; fm: "fb.fm"; fn: "fb.fn"; fo: "fb.fo"; fp: "fb.fp"; fq: "fb.fq"; fr: "fb.fr"; fs: "fb.fs"; ft: "fb.ft"; fu: "fb.fu"; fv: "fb.fv"; fw: "fb.fw"; fx: "fb.fx"; fy: "fb.fy"; fz: "fb.fz"; ga: "fb.ga"; gb: "fb.gb"; gc: "fb.gc"; gd: "fb.gd"; ge: "fb.ge"; gf: "fb.gf"; gg: "fb.gg"; gh: "fb.gh"; gi: "fb.gi"; gj: "fb.gj"; gk: "fb.gk"; gl: "fb.gl"; gm: "fb.gm"; gn: "fb.gn"; go: "fb.go"; gp: "fb.gp"; gq: "fb.gq"; gr: "fb.gr"; gs: "fb.gs"; gt: "fb.gt"; gu: "fb.gu"; gv: "fb.gv"; gw: "fb.gw"; gx: "fb.gx"; gy: "fb.gy"; gz: "fb.gz"; ha: "fb.ha"; hb: "fb.hb"; hc: "fb.hc"; hd: "fb.hd"; he: "fb.he"; hf: "fb.hf"; hg: "fb.hg"; hh: "fb.hh"; hi: "fb.hi"; hj: "fb.hj"; hk: "fb.hk"; hl: "fb.hl"; hm: "fb.hm"; hn: "fb.hn"; ho: "fb.ho"; hp: "fb.hp"; hq: "fb.hq"; hr: "fb.hr"; hs: "fb.hs"; ht: "fb.ht"; hu: "fb.hu"; hv: "fb.hv"; hw: "fb.hw"; hx: "fb.hx"; hy: "fb.hy"; hz: "fb.hz"; ia: "fb.ia"; ib: "fb.ib"; ic: "fb.ic"; id: "fb.id"; ie: "fb.ie"; if: "fb.if"; ig: "fb.ig"; ih: "fb.ih"; ii: "fb.ii"; ij: "fb.ij"; ik: "fb.ik"; il: "fb.il"; im: "fb.im"; in: "fb.in"; io: "fb.io"; ip: "fb.ip"; iq: "fb.iq"; ir: "fb.ir"; is: "fb.is"; it: "fb.it"; iu: "fb.iu"; iv: "fb.iv"; iw: "fb.iw"; ix: "fb.ix"; iy: "fb.iy"; iz: "fb.iz"; ja: "fb.ja"; jb: "fb.jb"; jc: "fb.jc"; jd: "fb.jd"; je: "fb.je"; jf: "fb.jf"; jg: "fb.jg"; jh: "fb.jh"; ji: "fb.ji"; jj: "fb.jj"; jk: "fb.jk"; jl: "fb.jl"; jm: "fb.jm"; jn: "fb.jn"; jo: "fb.jo"; jp: "fb.jp"; jq: "fb.jq"; jr: "fb.jr"; js: "fb.js"; jt: "fb.jt"; ju: "fb.ju"; jv: "fb.jv"; jw: "fb.jw"; jx: "fb.jx"; jy: "fb.jy"; jz: "fb.jz"; ka: "fb.ka"; kb: "fb.kb"; kc: "fb.kc"; kd: "fb.kd"; ke: "fb.ke"; kf: "fb.kf"; kg: "fb.kg"; kh: "fb.kh"; ki: "fb.ki"; kj: "fb.kj"; kk: "fb.kk"; kl: "fb.kl"; km: "fb.km"; kn: "fb.kn"; ko: "fb.ko"; kp: "fb.kp"; kq: "fb.kq"; kr: "fb.kr"; ks: "fb.ks"; kt: "fb.kt"; ku: "fb.ku"; kv: "fb.kv"; kw: "fb.kw"; kx: "fb.kx"; ky: "fb.ky"; kz: "fb.kz"; la: "fb.la"; lb: "fb.lb"; lc: "fb.lc"; ld: "fb.ld"; le: "fb.le"; lf: "fb.lf"; lg: "fb.lg"; lh: "fb.lh"; li: "fb.li"; lj: "fb.lj"; lk: "fb.lk"; ll: "fb.ll"; lm: "fb.lm"; ln: "fb.ln"; lo: "fb.lo"; lp: "fb.lp"; lq: "fb.lq"; lr: "fb.lr"; ls: "fb.ls"; lt: "fb.lt"; lu: "fb.lu"; lv: "fb.lv"; lw: "fb.lw"; lx: "fb.lx"; ly: "fb.ly"; lz: "fb.lz"; ma: "fb.ma"; mb: "fb.mb"; mc: "fb.mc"; md: "fb.md"; me: "fb.me"; mf: "fb.mf"; mg: "fb.mg"; mh: "fb.mh"; mi: "fb.mi"; mj: "fb.mj"; mk: "fb.mk"; ml: "fb.ml"; mm: "fb.mm"; mn: "fb.mn"; mo: "fb.mo"; mp: "fb.mp"; mq: "fb.mq"; mr: "fb.mr"; ms: "fb.ms"; mt: "fb.mt"; mu: "fb.mu"; mv: "fb.mv"; mw: "fb.mw"; mx: "fb.mx"; my: "fb.my"; mz: "fb.mz"; na: "fb.na"; nb: "fb.nb"; nc: "fb.nc"; nd: "fb.nd"; ne: "fb.ne"; nf: "fb.nf"; ng: "fb.ng"; nh: "fb.nh"; ni: "fb.ni"; nj: "fb.nj"; nk: "fb.nk"; nl: "fb.nl"; nm: "fb.nm"; nn: "fb.nn"; no: "fb.no"; np: "fb.np"; nq: "fb.nq"; nr: "fb.nr"; ns: "fb.ns"; nt: "fb.nt"; nu: "fb.nu"; nv: "fb.nv"; nw: "fb.nw"; nx: "fb.nx"; ny: "fb.ny"; nz: "fb.nz"; oa: "fb.oa"; ob: "fb.ob"; oc: "fb.oc"; od: "fb.od"; oe: "fb.oe"; of: "fb.of"; og: "fb.og"; oh: "fb.oh"; oi: "fb.oi"; oj: "fb.oj"; ok: "fb.ok"; ol: "fb.ol"; om: "fb.om"; on: "fb.on"; oo: "fb.oo"; op: "fb.op"; oq: "fb.oq"; or: "fb.or"; os: "fb.os"; ot: "fb.ot"; ou: "fb.ou"; ov: "fb.ov"; ow: "fb.ow"; ox: "fb.ox"; oy: "fb.oy"; oz: "fb.oz"; pa: "fb.pa"; pb: "fb.pb"; pc: "fb.pc"; pd: "fb.pd"; pe: "fb.pe"; pf: "fb.pf"; pg: "fb.pg"; ph: "fb.ph"; pi: "fb.pi"; pj: "fb.pj"; pk: "fb.pk"; pl: "fb.pl"; pm: "fb.pm"; pn: "fb.pn"; po: "fb.po"; pp: "fb.pp"; pq: "fb.pq"; pr: "fb.pr"; ps: "fb.ps"; pt: "fb.pt"; pu: "fb.pu"; pv: "fb.pv"; pw: "fb.pw"; px: "fb.px"; py: "fb.py"; pz: "fb.pz"; qa: "fb.qa"; qb: "fb.qb"; qc: "fb.qc"; qd: "fb.qd"; qe: "fb.qe"; qf: "fb.qf"; qg: "fb.qg"; qh: "fb.qh"; qi: "fb.qi"; qj: "fb.qj"; qk: "fb.qk"; ql: "fb.ql"; qm: "fb.qm"; qn: "fb.qn"; qo: "fb.qo"; qp: "fb.qp"; qq: "fb.qq"; qr: "fb.qr"; qs: "fb.qs"; qt: "fb.qt"; qu: "fb.qu"; qv: "fb.qv"; qw: "fb.qw"; qx: "fb.qx"; qy: "fb.qy"; qz: "fb.qz"; ra: "fb.ra"; rb: "fb.rb"; rc: "fb.rc"; rd: "fb.rd"; re: "fb.re"; rf: "fb.rf"; rg: "fb.rg"; rh: "fb.rh"; ri: "fb.ri"; rj: "fb.rj"; rk: "fb.rk"; rl: "fb.rl"; rm: "fb.rm"; rn: "fb.rn"; ro: "fb.ro"; rp: "fb.rp"; rq: "fb.rq"; rr: "fb.rr"; rs: "fb.rs"; rt: "fb.rt"; ru: "fb.ru"; rv: "fb.rv"; rw: "fb.rw"; rx: "fb.rx"; ry: "fb.ry"; rz: "fb.rz"; sa: "fb.sa"; sb: "fb.sb"; sc: "fb.sc"; sd: "fb.sd"; se: "fb.se"; sf: "fb.sf"; sg: "fb.sg"; sh: "fb.sh"; si: "fb.si"; sj: "fb.sj"; sk: "fb.sk"; sl: "fb.sl"; sm: "fb.sm"; sn: "fb.sn"; so: "fb.so"; sp: "fb.sp"; sq: "fb.sq"; sr: "fb.sr"; ss: "fb.ss"; st: "fb.st"; su: "fb.su"; sv: "fb.sv"; sw: "fb.sw"; sx: "fb.sx"; sy: "fb.sy"; sz: "fb.sz"; ta: "fb.ta"; tb: "fb.tb"; tc: "fb.tc"; td: "fb.td"; te: "fb.te"; tf: "fb.tf"; tg: "fb.tg"; th: "fb.th"; ti: "fb.ti"; tj: "fb.tj"; tk: "fb.tk"; tl: "fb.tl"; tm: "fb.tm"; tn: "fb.tn"; to: "fb.to"; tp: "fb.tp"; tq: "fb.tq"; tr: "fb.tr"; ts: "fb.ts"; tt: "fb.tt"; tu: "fb.tu"; tv: "fb.tv"; tw: "fb.tw"; tx: "fb.tx"; ty: "fb.ty"; tz: "fb.tz"; ua: "fb.ua"; ub: "fb.ub"; uc: "fb.uc"; ud: "fb.ud"; ue: "fb.ue"; uf: "fb.uf"; ug: "fb.ug"; uh: "fb.uh"; ui: "fb.ui"; uj: "fb.uj"; uk: "fb.uk"; ul: "fb.ul"; um: "fb.um"; un: "fb.un"; uo: "fb.uo"; up: "fb.up"; uq: "fb.uq"; ur: "fb.ur"; us: "fb.us"; ut: "fb.ut"; uu: "fb.uu"; uv: "fb.uv"; uw: "fb.uw"; ux: "fb.ux"; uy: "fb.uy"; uz: "fb.uz"; va: "fb.va"; vb: "fb.vb"; vc: "fb.vc"; vd: "fb.vd"; ve: "fb.ve"; vf: "fb.vf"; vg: "fb.vg"; vh: "fb.vh"; vi: "fb.vi"; vj: "fb.vj"; vk: "fb.vk"; vl: "fb.vl"; vm: "fb.vm"; vn: "fb.vn"; vo: "fb.vo"; vp: "fb.vp"; vq: "fb.vq"; vr: "fb.vr"; vs: "fb.vs"; vt: "fb.vt"; vu: "fb.vu"; vv: "fb.vv"; vw: "fb.vw"; vx: "fb.vx"; vy: "fb.vy"; vz: "fb.vz"; wa: "fb.wa"; wb: "fb.wb"; wc: "fb.wc"; wd: "fb.wd"; we: "fb.we"; wf: "fb.wf"; wg: "fb.wg"; wh: "fb.wh"; wi: "fb.wi"; wj: "fb.wj"; wk: "fb.wk"; wl: "fb.wl"; wm: "fb.wm"; wn: "fb.wn"; wo: "fb.wo"; wp: "fb.wp"; wq: "fb.wq"; wr: "fb.wr"; ws: "fb.ws"; wt: "fb.wt"; wu: "fb.wu"; wv: "fb.wv"; ww: "fb.ww"; wx: "fb.wx"; wy: "fb.wy"; wz: "fb.wz"; xa: "fb.xa"; xb: "fb.xb"; xc: "fb.xc"; xd: "fb.xd"; xe: "fb.xe"; xf: "fb.xf"; xg: "fb.xg"; xh: "fb.xh"; xi: "fb.xi"; xj: "fb.xj"; xk: "fb.xk"; xl: "fb.xl"; xm: "fb.xm"; xn: "fb.xn"; xo: "fb.xo"; xp: "fb.xp"; xq: "fb.xq"; xr: "fb.xr"; xs: "fb.xs"; xt: "fb.xt"; xu: "fb.xu"; xv: "fb.xv"; xw: "fb.xw"; xx: "fb.xx"; xy: "fb.xy"; xz: "fb.xz"; ya: "fb.ya"; yb: "fb.yb"; yc: "fb.yc"; yd: "fb.yd"; ye: "fb.ye"; yf: "fb.yf"; yg: "fb.yg"; yh: "fb.yh"; yi: "fb.yi"; yj: "fb.yj"; yk: "fb.yk"; yl: "fb.yl"; ym: "fb.ym"; yn: "fb.yn"; yo: "fb.yo"; yp: "fb.yp"; yq: "fb.yq"; yr: "fb.yr"; ys: "fb.ys"; yt: "fb.yt"; yu: "fb.yu"; yv: "fb.yv"; yw: "fb.yw"; yx: "fb.yx"; yy: "fb.yy"; yz: "fb.yz"; za: "fb.za"; zb: "fb.zb"; zc: "fb.zc"; zd: "fb.zd"; ze: "fb.ze"; zf: "fb.zf"; zg: "fb.zg"; zh: "fb.zh"; zi: "fb.zi"; zj: "fb.zj"; zk: "fb.zk"; zl: "fb.zl"; zm: "fb.zm"; zn: "fb.zn"; zo: "fb.zo"; zp: "fb.zp"; zq: "fb.zq"; zr: "fb.zr"; zs: "fb.zs"; zt: "fb.zt"; zu: "fb.zu"; zv: "fb.zv"; zw: "fb.zw"; zx: "fb.zx"; zy: "fb.zy"; zz: "fb.zz"; }; fc: { aa: "fc.aa"; ab: "fc.ab"; ac: "fc.ac"; ad: "fc.ad"; ae: "fc.ae"; af: "fc.af"; ag: "fc.ag"; ah: "fc.ah"; ai: "fc.ai"; aj: "fc.aj"; ak: "fc.ak"; al: "fc.al"; am: "fc.am"; an: "fc.an"; ao: "fc.ao"; ap: "fc.ap"; aq: "fc.aq"; ar: "fc.ar"; as: "fc.as"; at: "fc.at"; au: "fc.au"; av: "fc.av"; aw: "fc.aw"; ax: "fc.ax"; ay: "fc.ay"; az: "fc.az"; ba: "fc.ba"; bb: "fc.bb"; bc: "fc.bc"; bd: "fc.bd"; be: "fc.be"; bf: "fc.bf"; bg: "fc.bg"; bh: "fc.bh"; bi: "fc.bi"; bj: "fc.bj"; bk: "fc.bk"; bl: "fc.bl"; bm: "fc.bm"; bn: "fc.bn"; bo: "fc.bo"; bp: "fc.bp"; bq: "fc.bq"; br: "fc.br"; bs: "fc.bs"; bt: "fc.bt"; bu: "fc.bu"; bv: "fc.bv"; bw: "fc.bw"; bx: "fc.bx"; by: "fc.by"; bz: "fc.bz"; ca: "fc.ca"; cb: "fc.cb"; cc: "fc.cc"; cd: "fc.cd"; ce: "fc.ce"; cf: "fc.cf"; cg: "fc.cg"; ch: "fc.ch"; ci: "fc.ci"; cj: "fc.cj"; ck: "fc.ck"; cl: "fc.cl"; cm: "fc.cm"; cn: "fc.cn"; co: "fc.co"; cp: "fc.cp"; cq: "fc.cq"; cr: "fc.cr"; cs: "fc.cs"; ct: "fc.ct"; cu: "fc.cu"; cv: "fc.cv"; cw: "fc.cw"; cx: "fc.cx"; cy: "fc.cy"; cz: "fc.cz"; da: "fc.da"; db: "fc.db"; dc: "fc.dc"; dd: "fc.dd"; de: "fc.de"; df: "fc.df"; dg: "fc.dg"; dh: "fc.dh"; di: "fc.di"; dj: "fc.dj"; dk: "fc.dk"; dl: "fc.dl"; dm: "fc.dm"; dn: "fc.dn"; do: "fc.do"; dp: "fc.dp"; dq: "fc.dq"; dr: "fc.dr"; ds: "fc.ds"; dt: "fc.dt"; du: "fc.du"; dv: "fc.dv"; dw: "fc.dw"; dx: "fc.dx"; dy: "fc.dy"; dz: "fc.dz"; ea: "fc.ea"; eb: "fc.eb"; ec: "fc.ec"; ed: "fc.ed"; ee: "fc.ee"; ef: "fc.ef"; eg: "fc.eg"; eh: "fc.eh"; ei: "fc.ei"; ej: "fc.ej"; ek: "fc.ek"; el: "fc.el"; em: "fc.em"; en: "fc.en"; eo: "fc.eo"; ep: "fc.ep"; eq: "fc.eq"; er: "fc.er"; es: "fc.es"; et: "fc.et"; eu: "fc.eu"; ev: "fc.ev"; ew: "fc.ew"; ex: "fc.ex"; ey: "fc.ey"; ez: "fc.ez"; fa: "fc.fa"; fb: "fc.fb"; fc: "fc.fc"; fd: "fc.fd"; fe: "fc.fe"; ff: "fc.ff"; fg: "fc.fg"; fh: "fc.fh"; fi: "fc.fi"; fj: "fc.fj"; fk: "fc.fk"; fl: "fc.fl"; fm: "fc.fm"; fn: "fc.fn"; fo: "fc.fo"; fp: "fc.fp"; fq: "fc.fq"; fr: "fc.fr"; fs: "fc.fs"; ft: "fc.ft"; fu: "fc.fu"; fv: "fc.fv"; fw: "fc.fw"; fx: "fc.fx"; fy: "fc.fy"; fz: "fc.fz"; ga: "fc.ga"; gb: "fc.gb"; gc: "fc.gc"; gd: "fc.gd"; ge: "fc.ge"; gf: "fc.gf"; gg: "fc.gg"; gh: "fc.gh"; gi: "fc.gi"; gj: "fc.gj"; gk: "fc.gk"; gl: "fc.gl"; gm: "fc.gm"; gn: "fc.gn"; go: "fc.go"; gp: "fc.gp"; gq: "fc.gq"; gr: "fc.gr"; gs: "fc.gs"; gt: "fc.gt"; gu: "fc.gu"; gv: "fc.gv"; gw: "fc.gw"; gx: "fc.gx"; gy: "fc.gy"; gz: "fc.gz"; ha: "fc.ha"; hb: "fc.hb"; hc: "fc.hc"; hd: "fc.hd"; he: "fc.he"; hf: "fc.hf"; hg: "fc.hg"; hh: "fc.hh"; hi: "fc.hi"; hj: "fc.hj"; hk: "fc.hk"; hl: "fc.hl"; hm: "fc.hm"; hn: "fc.hn"; ho: "fc.ho"; hp: "fc.hp"; hq: "fc.hq"; hr: "fc.hr"; hs: "fc.hs"; ht: "fc.ht"; hu: "fc.hu"; hv: "fc.hv"; hw: "fc.hw"; hx: "fc.hx"; hy: "fc.hy"; hz: "fc.hz"; ia: "fc.ia"; ib: "fc.ib"; ic: "fc.ic"; id: "fc.id"; ie: "fc.ie"; if: "fc.if"; ig: "fc.ig"; ih: "fc.ih"; ii: "fc.ii"; ij: "fc.ij"; ik: "fc.ik"; il: "fc.il"; im: "fc.im"; in: "fc.in"; io: "fc.io"; ip: "fc.ip"; iq: "fc.iq"; ir: "fc.ir"; is: "fc.is"; it: "fc.it"; iu: "fc.iu"; iv: "fc.iv"; iw: "fc.iw"; ix: "fc.ix"; iy: "fc.iy"; iz: "fc.iz"; ja: "fc.ja"; jb: "fc.jb"; jc: "fc.jc"; jd: "fc.jd"; je: "fc.je"; jf: "fc.jf"; jg: "fc.jg"; jh: "fc.jh"; ji: "fc.ji"; jj: "fc.jj"; jk: "fc.jk"; jl: "fc.jl"; jm: "fc.jm"; jn: "fc.jn"; jo: "fc.jo"; jp: "fc.jp"; jq: "fc.jq"; jr: "fc.jr"; js: "fc.js"; jt: "fc.jt"; ju: "fc.ju"; jv: "fc.jv"; jw: "fc.jw"; jx: "fc.jx"; jy: "fc.jy"; jz: "fc.jz"; ka: "fc.ka"; kb: "fc.kb"; kc: "fc.kc"; kd: "fc.kd"; ke: "fc.ke"; kf: "fc.kf"; kg: "fc.kg"; kh: "fc.kh"; ki: "fc.ki"; kj: "fc.kj"; kk: "fc.kk"; kl: "fc.kl"; km: "fc.km"; kn: "fc.kn"; ko: "fc.ko"; kp: "fc.kp"; kq: "fc.kq"; kr: "fc.kr"; ks: "fc.ks"; kt: "fc.kt"; ku: "fc.ku"; kv: "fc.kv"; kw: "fc.kw"; kx: "fc.kx"; ky: "fc.ky"; kz: "fc.kz"; la: "fc.la"; lb: "fc.lb"; lc: "fc.lc"; ld: "fc.ld"; le: "fc.le"; lf: "fc.lf"; lg: "fc.lg"; lh: "fc.lh"; li: "fc.li"; lj: "fc.lj"; lk: "fc.lk"; ll: "fc.ll"; lm: "fc.lm"; ln: "fc.ln"; lo: "fc.lo"; lp: "fc.lp"; lq: "fc.lq"; lr: "fc.lr"; ls: "fc.ls"; lt: "fc.lt"; lu: "fc.lu"; lv: "fc.lv"; lw: "fc.lw"; lx: "fc.lx"; ly: "fc.ly"; lz: "fc.lz"; ma: "fc.ma"; mb: "fc.mb"; mc: "fc.mc"; md: "fc.md"; me: "fc.me"; mf: "fc.mf"; mg: "fc.mg"; mh: "fc.mh"; mi: "fc.mi"; mj: "fc.mj"; mk: "fc.mk"; ml: "fc.ml"; mm: "fc.mm"; mn: "fc.mn"; mo: "fc.mo"; mp: "fc.mp"; mq: "fc.mq"; mr: "fc.mr"; ms: "fc.ms"; mt: "fc.mt"; mu: "fc.mu"; mv: "fc.mv"; mw: "fc.mw"; mx: "fc.mx"; my: "fc.my"; mz: "fc.mz"; na: "fc.na"; nb: "fc.nb"; nc: "fc.nc"; nd: "fc.nd"; ne: "fc.ne"; nf: "fc.nf"; ng: "fc.ng"; nh: "fc.nh"; ni: "fc.ni"; nj: "fc.nj"; nk: "fc.nk"; nl: "fc.nl"; nm: "fc.nm"; nn: "fc.nn"; no: "fc.no"; np: "fc.np"; nq: "fc.nq"; nr: "fc.nr"; ns: "fc.ns"; nt: "fc.nt"; nu: "fc.nu"; nv: "fc.nv"; nw: "fc.nw"; nx: "fc.nx"; ny: "fc.ny"; nz: "fc.nz"; oa: "fc.oa"; ob: "fc.ob"; oc: "fc.oc"; od: "fc.od"; oe: "fc.oe"; of: "fc.of"; og: "fc.og"; oh: "fc.oh"; oi: "fc.oi"; oj: "fc.oj"; ok: "fc.ok"; ol: "fc.ol"; om: "fc.om"; on: "fc.on"; oo: "fc.oo"; op: "fc.op"; oq: "fc.oq"; or: "fc.or"; os: "fc.os"; ot: "fc.ot"; ou: "fc.ou"; ov: "fc.ov"; ow: "fc.ow"; ox: "fc.ox"; oy: "fc.oy"; oz: "fc.oz"; pa: "fc.pa"; pb: "fc.pb"; pc: "fc.pc"; pd: "fc.pd"; pe: "fc.pe"; pf: "fc.pf"; pg: "fc.pg"; ph: "fc.ph"; pi: "fc.pi"; pj: "fc.pj"; pk: "fc.pk"; pl: "fc.pl"; pm: "fc.pm"; pn: "fc.pn"; po: "fc.po"; pp: "fc.pp"; pq: "fc.pq"; pr: "fc.pr"; ps: "fc.ps"; pt: "fc.pt"; pu: "fc.pu"; pv: "fc.pv"; pw: "fc.pw"; px: "fc.px"; py: "fc.py"; pz: "fc.pz"; qa: "fc.qa"; qb: "fc.qb"; qc: "fc.qc"; qd: "fc.qd"; qe: "fc.qe"; qf: "fc.qf"; qg: "fc.qg"; qh: "fc.qh"; qi: "fc.qi"; qj: "fc.qj"; qk: "fc.qk"; ql: "fc.ql"; qm: "fc.qm"; qn: "fc.qn"; qo: "fc.qo"; qp: "fc.qp"; qq: "fc.qq"; qr: "fc.qr"; qs: "fc.qs"; qt: "fc.qt"; qu: "fc.qu"; qv: "fc.qv"; qw: "fc.qw"; qx: "fc.qx"; qy: "fc.qy"; qz: "fc.qz"; ra: "fc.ra"; rb: "fc.rb"; rc: "fc.rc"; rd: "fc.rd"; re: "fc.re"; rf: "fc.rf"; rg: "fc.rg"; rh: "fc.rh"; ri: "fc.ri"; rj: "fc.rj"; rk: "fc.rk"; rl: "fc.rl"; rm: "fc.rm"; rn: "fc.rn"; ro: "fc.ro"; rp: "fc.rp"; rq: "fc.rq"; rr: "fc.rr"; rs: "fc.rs"; rt: "fc.rt"; ru: "fc.ru"; rv: "fc.rv"; rw: "fc.rw"; rx: "fc.rx"; ry: "fc.ry"; rz: "fc.rz"; sa: "fc.sa"; sb: "fc.sb"; sc: "fc.sc"; sd: "fc.sd"; se: "fc.se"; sf: "fc.sf"; sg: "fc.sg"; sh: "fc.sh"; si: "fc.si"; sj: "fc.sj"; sk: "fc.sk"; sl: "fc.sl"; sm: "fc.sm"; sn: "fc.sn"; so: "fc.so"; sp: "fc.sp"; sq: "fc.sq"; sr: "fc.sr"; ss: "fc.ss"; st: "fc.st"; su: "fc.su"; sv: "fc.sv"; sw: "fc.sw"; sx: "fc.sx"; sy: "fc.sy"; sz: "fc.sz"; ta: "fc.ta"; tb: "fc.tb"; tc: "fc.tc"; td: "fc.td"; te: "fc.te"; tf: "fc.tf"; tg: "fc.tg"; th: "fc.th"; ti: "fc.ti"; tj: "fc.tj"; tk: "fc.tk"; tl: "fc.tl"; tm: "fc.tm"; tn: "fc.tn"; to: "fc.to"; tp: "fc.tp"; tq: "fc.tq"; tr: "fc.tr"; ts: "fc.ts"; tt: "fc.tt"; tu: "fc.tu"; tv: "fc.tv"; tw: "fc.tw"; tx: "fc.tx"; ty: "fc.ty"; tz: "fc.tz"; ua: "fc.ua"; ub: "fc.ub"; uc: "fc.uc"; ud: "fc.ud"; ue: "fc.ue"; uf: "fc.uf"; ug: "fc.ug"; uh: "fc.uh"; ui: "fc.ui"; uj: "fc.uj"; uk: "fc.uk"; ul: "fc.ul"; um: "fc.um"; un: "fc.un"; uo: "fc.uo"; up: "fc.up"; uq: "fc.uq"; ur: "fc.ur"; us: "fc.us"; ut: "fc.ut"; uu: "fc.uu"; uv: "fc.uv"; uw: "fc.uw"; ux: "fc.ux"; uy: "fc.uy"; uz: "fc.uz"; va: "fc.va"; vb: "fc.vb"; vc: "fc.vc"; vd: "fc.vd"; ve: "fc.ve"; vf: "fc.vf"; vg: "fc.vg"; vh: "fc.vh"; vi: "fc.vi"; vj: "fc.vj"; vk: "fc.vk"; vl: "fc.vl"; vm: "fc.vm"; vn: "fc.vn"; vo: "fc.vo"; vp: "fc.vp"; vq: "fc.vq"; vr: "fc.vr"; vs: "fc.vs"; vt: "fc.vt"; vu: "fc.vu"; vv: "fc.vv"; vw: "fc.vw"; vx: "fc.vx"; vy: "fc.vy"; vz: "fc.vz"; wa: "fc.wa"; wb: "fc.wb"; wc: "fc.wc"; wd: "fc.wd"; we: "fc.we"; wf: "fc.wf"; wg: "fc.wg"; wh: "fc.wh"; wi: "fc.wi"; wj: "fc.wj"; wk: "fc.wk"; wl: "fc.wl"; wm: "fc.wm"; wn: "fc.wn"; wo: "fc.wo"; wp: "fc.wp"; wq: "fc.wq"; wr: "fc.wr"; ws: "fc.ws"; wt: "fc.wt"; wu: "fc.wu"; wv: "fc.wv"; ww: "fc.ww"; wx: "fc.wx"; wy: "fc.wy"; wz: "fc.wz"; xa: "fc.xa"; xb: "fc.xb"; xc: "fc.xc"; xd: "fc.xd"; xe: "fc.xe"; xf: "fc.xf"; xg: "fc.xg"; xh: "fc.xh"; xi: "fc.xi"; xj: "fc.xj"; xk: "fc.xk"; xl: "fc.xl"; xm: "fc.xm"; xn: "fc.xn"; xo: "fc.xo"; xp: "fc.xp"; xq: "fc.xq"; xr: "fc.xr"; xs: "fc.xs"; xt: "fc.xt"; xu: "fc.xu"; xv: "fc.xv"; xw: "fc.xw"; xx: "fc.xx"; xy: "fc.xy"; xz: "fc.xz"; ya: "fc.ya"; yb: "fc.yb"; yc: "fc.yc"; yd: "fc.yd"; ye: "fc.ye"; yf: "fc.yf"; yg: "fc.yg"; yh: "fc.yh"; yi: "fc.yi"; yj: "fc.yj"; yk: "fc.yk"; yl: "fc.yl"; ym: "fc.ym"; yn: "fc.yn"; yo: "fc.yo"; yp: "fc.yp"; yq: "fc.yq"; yr: "fc.yr"; ys: "fc.ys"; yt: "fc.yt"; yu: "fc.yu"; yv: "fc.yv"; yw: "fc.yw"; yx: "fc.yx"; yy: "fc.yy"; yz: "fc.yz"; za: "fc.za"; zb: "fc.zb"; zc: "fc.zc"; zd: "fc.zd"; ze: "fc.ze"; zf: "fc.zf"; zg: "fc.zg"; zh: "fc.zh"; zi: "fc.zi"; zj: "fc.zj"; zk: "fc.zk"; zl: "fc.zl"; zm: "fc.zm"; zn: "fc.zn"; zo: "fc.zo"; zp: "fc.zp"; zq: "fc.zq"; zr: "fc.zr"; zs: "fc.zs"; zt: "fc.zt"; zu: "fc.zu"; zv: "fc.zv"; zw: "fc.zw"; zx: "fc.zx"; zy: "fc.zy"; zz: "fc.zz"; }; fd: { aa: "fd.aa"; ab: "fd.ab"; ac: "fd.ac"; ad: "fd.ad"; ae: "fd.ae"; af: "fd.af"; ag: "fd.ag"; ah: "fd.ah"; ai: "fd.ai"; aj: "fd.aj"; ak: "fd.ak"; al: "fd.al"; am: "fd.am"; an: "fd.an"; ao: "fd.ao"; ap: "fd.ap"; aq: "fd.aq"; ar: "fd.ar"; as: "fd.as"; at: "fd.at"; au: "fd.au"; av: "fd.av"; aw: "fd.aw"; ax: "fd.ax"; ay: "fd.ay"; az: "fd.az"; ba: "fd.ba"; bb: "fd.bb"; bc: "fd.bc"; bd: "fd.bd"; be: "fd.be"; bf: "fd.bf"; bg: "fd.bg"; bh: "fd.bh"; bi: "fd.bi"; bj: "fd.bj"; bk: "fd.bk"; bl: "fd.bl"; bm: "fd.bm"; bn: "fd.bn"; bo: "fd.bo"; bp: "fd.bp"; bq: "fd.bq"; br: "fd.br"; bs: "fd.bs"; bt: "fd.bt"; bu: "fd.bu"; bv: "fd.bv"; bw: "fd.bw"; bx: "fd.bx"; by: "fd.by"; bz: "fd.bz"; ca: "fd.ca"; cb: "fd.cb"; cc: "fd.cc"; cd: "fd.cd"; ce: "fd.ce"; cf: "fd.cf"; cg: "fd.cg"; ch: "fd.ch"; ci: "fd.ci"; cj: "fd.cj"; ck: "fd.ck"; cl: "fd.cl"; cm: "fd.cm"; cn: "fd.cn"; co: "fd.co"; cp: "fd.cp"; cq: "fd.cq"; cr: "fd.cr"; cs: "fd.cs"; ct: "fd.ct"; cu: "fd.cu"; cv: "fd.cv"; cw: "fd.cw"; cx: "fd.cx"; cy: "fd.cy"; cz: "fd.cz"; da: "fd.da"; db: "fd.db"; dc: "fd.dc"; dd: "fd.dd"; de: "fd.de"; df: "fd.df"; dg: "fd.dg"; dh: "fd.dh"; di: "fd.di"; dj: "fd.dj"; dk: "fd.dk"; dl: "fd.dl"; dm: "fd.dm"; dn: "fd.dn"; do: "fd.do"; dp: "fd.dp"; dq: "fd.dq"; dr: "fd.dr"; ds: "fd.ds"; dt: "fd.dt"; du: "fd.du"; dv: "fd.dv"; dw: "fd.dw"; dx: "fd.dx"; dy: "fd.dy"; dz: "fd.dz"; ea: "fd.ea"; eb: "fd.eb"; ec: "fd.ec"; ed: "fd.ed"; ee: "fd.ee"; ef: "fd.ef"; eg: "fd.eg"; eh: "fd.eh"; ei: "fd.ei"; ej: "fd.ej"; ek: "fd.ek"; el: "fd.el"; em: "fd.em"; en: "fd.en"; eo: "fd.eo"; ep: "fd.ep"; eq: "fd.eq"; er: "fd.er"; es: "fd.es"; et: "fd.et"; eu: "fd.eu"; ev: "fd.ev"; ew: "fd.ew"; ex: "fd.ex"; ey: "fd.ey"; ez: "fd.ez"; fa: "fd.fa"; fb: "fd.fb"; fc: "fd.fc"; fd: "fd.fd"; fe: "fd.fe"; ff: "fd.ff"; fg: "fd.fg"; fh: "fd.fh"; fi: "fd.fi"; fj: "fd.fj"; fk: "fd.fk"; fl: "fd.fl"; fm: "fd.fm"; fn: "fd.fn"; fo: "fd.fo"; fp: "fd.fp"; fq: "fd.fq"; fr: "fd.fr"; fs: "fd.fs"; ft: "fd.ft"; fu: "fd.fu"; fv: "fd.fv"; fw: "fd.fw"; fx: "fd.fx"; fy: "fd.fy"; fz: "fd.fz"; ga: "fd.ga"; gb: "fd.gb"; gc: "fd.gc"; gd: "fd.gd"; ge: "fd.ge"; gf: "fd.gf"; gg: "fd.gg"; gh: "fd.gh"; gi: "fd.gi"; gj: "fd.gj"; gk: "fd.gk"; gl: "fd.gl"; gm: "fd.gm"; gn: "fd.gn"; go: "fd.go"; gp: "fd.gp"; gq: "fd.gq"; gr: "fd.gr"; gs: "fd.gs"; gt: "fd.gt"; gu: "fd.gu"; gv: "fd.gv"; gw: "fd.gw"; gx: "fd.gx"; gy: "fd.gy"; gz: "fd.gz"; ha: "fd.ha"; hb: "fd.hb"; hc: "fd.hc"; hd: "fd.hd"; he: "fd.he"; hf: "fd.hf"; hg: "fd.hg"; hh: "fd.hh"; hi: "fd.hi"; hj: "fd.hj"; hk: "fd.hk"; hl: "fd.hl"; hm: "fd.hm"; hn: "fd.hn"; ho: "fd.ho"; hp: "fd.hp"; hq: "fd.hq"; hr: "fd.hr"; hs: "fd.hs"; ht: "fd.ht"; hu: "fd.hu"; hv: "fd.hv"; hw: "fd.hw"; hx: "fd.hx"; hy: "fd.hy"; hz: "fd.hz"; ia: "fd.ia"; ib: "fd.ib"; ic: "fd.ic"; id: "fd.id"; ie: "fd.ie"; if: "fd.if"; ig: "fd.ig"; ih: "fd.ih"; ii: "fd.ii"; ij: "fd.ij"; ik: "fd.ik"; il: "fd.il"; im: "fd.im"; in: "fd.in"; io: "fd.io"; ip: "fd.ip"; iq: "fd.iq"; ir: "fd.ir"; is: "fd.is"; it: "fd.it"; iu: "fd.iu"; iv: "fd.iv"; iw: "fd.iw"; ix: "fd.ix"; iy: "fd.iy"; iz: "fd.iz"; ja: "fd.ja"; jb: "fd.jb"; jc: "fd.jc"; jd: "fd.jd"; je: "fd.je"; jf: "fd.jf"; jg: "fd.jg"; jh: "fd.jh"; ji: "fd.ji"; jj: "fd.jj"; jk: "fd.jk"; jl: "fd.jl"; jm: "fd.jm"; jn: "fd.jn"; jo: "fd.jo"; jp: "fd.jp"; jq: "fd.jq"; jr: "fd.jr"; js: "fd.js"; jt: "fd.jt"; ju: "fd.ju"; jv: "fd.jv"; jw: "fd.jw"; jx: "fd.jx"; jy: "fd.jy"; jz: "fd.jz"; ka: "fd.ka"; kb: "fd.kb"; kc: "fd.kc"; kd: "fd.kd"; ke: "fd.ke"; kf: "fd.kf"; kg: "fd.kg"; kh: "fd.kh"; ki: "fd.ki"; kj: "fd.kj"; kk: "fd.kk"; kl: "fd.kl"; km: "fd.km"; kn: "fd.kn"; ko: "fd.ko"; kp: "fd.kp"; kq: "fd.kq"; kr: "fd.kr"; ks: "fd.ks"; kt: "fd.kt"; ku: "fd.ku"; kv: "fd.kv"; kw: "fd.kw"; kx: "fd.kx"; ky: "fd.ky"; kz: "fd.kz"; la: "fd.la"; lb: "fd.lb"; lc: "fd.lc"; ld: "fd.ld"; le: "fd.le"; lf: "fd.lf"; lg: "fd.lg"; lh: "fd.lh"; li: "fd.li"; lj: "fd.lj"; lk: "fd.lk"; ll: "fd.ll"; lm: "fd.lm"; ln: "fd.ln"; lo: "fd.lo"; lp: "fd.lp"; lq: "fd.lq"; lr: "fd.lr"; ls: "fd.ls"; lt: "fd.lt"; lu: "fd.lu"; lv: "fd.lv"; lw: "fd.lw"; lx: "fd.lx"; ly: "fd.ly"; lz: "fd.lz"; ma: "fd.ma"; mb: "fd.mb"; mc: "fd.mc"; md: "fd.md"; me: "fd.me"; mf: "fd.mf"; mg: "fd.mg"; mh: "fd.mh"; mi: "fd.mi"; mj: "fd.mj"; mk: "fd.mk"; ml: "fd.ml"; mm: "fd.mm"; mn: "fd.mn"; mo: "fd.mo"; mp: "fd.mp"; mq: "fd.mq"; mr: "fd.mr"; ms: "fd.ms"; mt: "fd.mt"; mu: "fd.mu"; mv: "fd.mv"; mw: "fd.mw"; mx: "fd.mx"; my: "fd.my"; mz: "fd.mz"; na: "fd.na"; nb: "fd.nb"; nc: "fd.nc"; nd: "fd.nd"; ne: "fd.ne"; nf: "fd.nf"; ng: "fd.ng"; nh: "fd.nh"; ni: "fd.ni"; nj: "fd.nj"; nk: "fd.nk"; nl: "fd.nl"; nm: "fd.nm"; nn: "fd.nn"; no: "fd.no"; np: "fd.np"; nq: "fd.nq"; nr: "fd.nr"; ns: "fd.ns"; nt: "fd.nt"; nu: "fd.nu"; nv: "fd.nv"; nw: "fd.nw"; nx: "fd.nx"; ny: "fd.ny"; nz: "fd.nz"; oa: "fd.oa"; ob: "fd.ob"; oc: "fd.oc"; od: "fd.od"; oe: "fd.oe"; of: "fd.of"; og: "fd.og"; oh: "fd.oh"; oi: "fd.oi"; oj: "fd.oj"; ok: "fd.ok"; ol: "fd.ol"; om: "fd.om"; on: "fd.on"; oo: "fd.oo"; op: "fd.op"; oq: "fd.oq"; or: "fd.or"; os: "fd.os"; ot: "fd.ot"; ou: "fd.ou"; ov: "fd.ov"; ow: "fd.ow"; ox: "fd.ox"; oy: "fd.oy"; oz: "fd.oz"; pa: "fd.pa"; pb: "fd.pb"; pc: "fd.pc"; pd: "fd.pd"; pe: "fd.pe"; pf: "fd.pf"; pg: "fd.pg"; ph: "fd.ph"; pi: "fd.pi"; pj: "fd.pj"; pk: "fd.pk"; pl: "fd.pl"; pm: "fd.pm"; pn: "fd.pn"; po: "fd.po"; pp: "fd.pp"; pq: "fd.pq"; pr: "fd.pr"; ps: "fd.ps"; pt: "fd.pt"; pu: "fd.pu"; pv: "fd.pv"; pw: "fd.pw"; px: "fd.px"; py: "fd.py"; pz: "fd.pz"; qa: "fd.qa"; qb: "fd.qb"; qc: "fd.qc"; qd: "fd.qd"; qe: "fd.qe"; qf: "fd.qf"; qg: "fd.qg"; qh: "fd.qh"; qi: "fd.qi"; qj: "fd.qj"; qk: "fd.qk"; ql: "fd.ql"; qm: "fd.qm"; qn: "fd.qn"; qo: "fd.qo"; qp: "fd.qp"; qq: "fd.qq"; qr: "fd.qr"; qs: "fd.qs"; qt: "fd.qt"; qu: "fd.qu"; qv: "fd.qv"; qw: "fd.qw"; qx: "fd.qx"; qy: "fd.qy"; qz: "fd.qz"; ra: "fd.ra"; rb: "fd.rb"; rc: "fd.rc"; rd: "fd.rd"; re: "fd.re"; rf: "fd.rf"; rg: "fd.rg"; rh: "fd.rh"; ri: "fd.ri"; rj: "fd.rj"; rk: "fd.rk"; rl: "fd.rl"; rm: "fd.rm"; rn: "fd.rn"; ro: "fd.ro"; rp: "fd.rp"; rq: "fd.rq"; rr: "fd.rr"; rs: "fd.rs"; rt: "fd.rt"; ru: "fd.ru"; rv: "fd.rv"; rw: "fd.rw"; rx: "fd.rx"; ry: "fd.ry"; rz: "fd.rz"; sa: "fd.sa"; sb: "fd.sb"; sc: "fd.sc"; sd: "fd.sd"; se: "fd.se"; sf: "fd.sf"; sg: "fd.sg"; sh: "fd.sh"; si: "fd.si"; sj: "fd.sj"; sk: "fd.sk"; sl: "fd.sl"; sm: "fd.sm"; sn: "fd.sn"; so: "fd.so"; sp: "fd.sp"; sq: "fd.sq"; sr: "fd.sr"; ss: "fd.ss"; st: "fd.st"; su: "fd.su"; sv: "fd.sv"; sw: "fd.sw"; sx: "fd.sx"; sy: "fd.sy"; sz: "fd.sz"; ta: "fd.ta"; tb: "fd.tb"; tc: "fd.tc"; td: "fd.td"; te: "fd.te"; tf: "fd.tf"; tg: "fd.tg"; th: "fd.th"; ti: "fd.ti"; tj: "fd.tj"; tk: "fd.tk"; tl: "fd.tl"; tm: "fd.tm"; tn: "fd.tn"; to: "fd.to"; tp: "fd.tp"; tq: "fd.tq"; tr: "fd.tr"; ts: "fd.ts"; tt: "fd.tt"; tu: "fd.tu"; tv: "fd.tv"; tw: "fd.tw"; tx: "fd.tx"; ty: "fd.ty"; tz: "fd.tz"; ua: "fd.ua"; ub: "fd.ub"; uc: "fd.uc"; ud: "fd.ud"; ue: "fd.ue"; uf: "fd.uf"; ug: "fd.ug"; uh: "fd.uh"; ui: "fd.ui"; uj: "fd.uj"; uk: "fd.uk"; ul: "fd.ul"; um: "fd.um"; un: "fd.un"; uo: "fd.uo"; up: "fd.up"; uq: "fd.uq"; ur: "fd.ur"; us: "fd.us"; ut: "fd.ut"; uu: "fd.uu"; uv: "fd.uv"; uw: "fd.uw"; ux: "fd.ux"; uy: "fd.uy"; uz: "fd.uz"; va: "fd.va"; vb: "fd.vb"; vc: "fd.vc"; vd: "fd.vd"; ve: "fd.ve"; vf: "fd.vf"; vg: "fd.vg"; vh: "fd.vh"; vi: "fd.vi"; vj: "fd.vj"; vk: "fd.vk"; vl: "fd.vl"; vm: "fd.vm"; vn: "fd.vn"; vo: "fd.vo"; vp: "fd.vp"; vq: "fd.vq"; vr: "fd.vr"; vs: "fd.vs"; vt: "fd.vt"; vu: "fd.vu"; vv: "fd.vv"; vw: "fd.vw"; vx: "fd.vx"; vy: "fd.vy"; vz: "fd.vz"; wa: "fd.wa"; wb: "fd.wb"; wc: "fd.wc"; wd: "fd.wd"; we: "fd.we"; wf: "fd.wf"; wg: "fd.wg"; wh: "fd.wh"; wi: "fd.wi"; wj: "fd.wj"; wk: "fd.wk"; wl: "fd.wl"; wm: "fd.wm"; wn: "fd.wn"; wo: "fd.wo"; wp: "fd.wp"; wq: "fd.wq"; wr: "fd.wr"; ws: "fd.ws"; wt: "fd.wt"; wu: "fd.wu"; wv: "fd.wv"; ww: "fd.ww"; wx: "fd.wx"; wy: "fd.wy"; wz: "fd.wz"; xa: "fd.xa"; xb: "fd.xb"; xc: "fd.xc"; xd: "fd.xd"; xe: "fd.xe"; xf: "fd.xf"; xg: "fd.xg"; xh: "fd.xh"; xi: "fd.xi"; xj: "fd.xj"; xk: "fd.xk"; xl: "fd.xl"; xm: "fd.xm"; xn: "fd.xn"; xo: "fd.xo"; xp: "fd.xp"; xq: "fd.xq"; xr: "fd.xr"; xs: "fd.xs"; xt: "fd.xt"; xu: "fd.xu"; xv: "fd.xv"; xw: "fd.xw"; xx: "fd.xx"; xy: "fd.xy"; xz: "fd.xz"; ya: "fd.ya"; yb: "fd.yb"; yc: "fd.yc"; yd: "fd.yd"; ye: "fd.ye"; yf: "fd.yf"; yg: "fd.yg"; yh: "fd.yh"; yi: "fd.yi"; yj: "fd.yj"; yk: "fd.yk"; yl: "fd.yl"; ym: "fd.ym"; yn: "fd.yn"; yo: "fd.yo"; yp: "fd.yp"; yq: "fd.yq"; yr: "fd.yr"; ys: "fd.ys"; yt: "fd.yt"; yu: "fd.yu"; yv: "fd.yv"; yw: "fd.yw"; yx: "fd.yx"; yy: "fd.yy"; yz: "fd.yz"; za: "fd.za"; zb: "fd.zb"; zc: "fd.zc"; zd: "fd.zd"; ze: "fd.ze"; zf: "fd.zf"; zg: "fd.zg"; zh: "fd.zh"; zi: "fd.zi"; zj: "fd.zj"; zk: "fd.zk"; zl: "fd.zl"; zm: "fd.zm"; zn: "fd.zn"; zo: "fd.zo"; zp: "fd.zp"; zq: "fd.zq"; zr: "fd.zr"; zs: "fd.zs"; zt: "fd.zt"; zu: "fd.zu"; zv: "fd.zv"; zw: "fd.zw"; zx: "fd.zx"; zy: "fd.zy"; zz: "fd.zz"; }; fe: { aa: "fe.aa"; ab: "fe.ab"; ac: "fe.ac"; ad: "fe.ad"; ae: "fe.ae"; af: "fe.af"; ag: "fe.ag"; ah: "fe.ah"; ai: "fe.ai"; aj: "fe.aj"; ak: "fe.ak"; al: "fe.al"; am: "fe.am"; an: "fe.an"; ao: "fe.ao"; ap: "fe.ap"; aq: "fe.aq"; ar: "fe.ar"; as: "fe.as"; at: "fe.at"; au: "fe.au"; av: "fe.av"; aw: "fe.aw"; ax: "fe.ax"; ay: "fe.ay"; az: "fe.az"; ba: "fe.ba"; bb: "fe.bb"; bc: "fe.bc"; bd: "fe.bd"; be: "fe.be"; bf: "fe.bf"; bg: "fe.bg"; bh: "fe.bh"; bi: "fe.bi"; bj: "fe.bj"; bk: "fe.bk"; bl: "fe.bl"; bm: "fe.bm"; bn: "fe.bn"; bo: "fe.bo"; bp: "fe.bp"; bq: "fe.bq"; br: "fe.br"; bs: "fe.bs"; bt: "fe.bt"; bu: "fe.bu"; bv: "fe.bv"; bw: "fe.bw"; bx: "fe.bx"; by: "fe.by"; bz: "fe.bz"; ca: "fe.ca"; cb: "fe.cb"; cc: "fe.cc"; cd: "fe.cd"; ce: "fe.ce"; cf: "fe.cf"; cg: "fe.cg"; ch: "fe.ch"; ci: "fe.ci"; cj: "fe.cj"; ck: "fe.ck"; cl: "fe.cl"; cm: "fe.cm"; cn: "fe.cn"; co: "fe.co"; cp: "fe.cp"; cq: "fe.cq"; cr: "fe.cr"; cs: "fe.cs"; ct: "fe.ct"; cu: "fe.cu"; cv: "fe.cv"; cw: "fe.cw"; cx: "fe.cx"; cy: "fe.cy"; cz: "fe.cz"; da: "fe.da"; db: "fe.db"; dc: "fe.dc"; dd: "fe.dd"; de: "fe.de"; df: "fe.df"; dg: "fe.dg"; dh: "fe.dh"; di: "fe.di"; dj: "fe.dj"; dk: "fe.dk"; dl: "fe.dl"; dm: "fe.dm"; dn: "fe.dn"; do: "fe.do"; dp: "fe.dp"; dq: "fe.dq"; dr: "fe.dr"; ds: "fe.ds"; dt: "fe.dt"; du: "fe.du"; dv: "fe.dv"; dw: "fe.dw"; dx: "fe.dx"; dy: "fe.dy"; dz: "fe.dz"; ea: "fe.ea"; eb: "fe.eb"; ec: "fe.ec"; ed: "fe.ed"; ee: "fe.ee"; ef: "fe.ef"; eg: "fe.eg"; eh: "fe.eh"; ei: "fe.ei"; ej: "fe.ej"; ek: "fe.ek"; el: "fe.el"; em: "fe.em"; en: "fe.en"; eo: "fe.eo"; ep: "fe.ep"; eq: "fe.eq"; er: "fe.er"; es: "fe.es"; et: "fe.et"; eu: "fe.eu"; ev: "fe.ev"; ew: "fe.ew"; ex: "fe.ex"; ey: "fe.ey"; ez: "fe.ez"; fa: "fe.fa"; fb: "fe.fb"; fc: "fe.fc"; fd: "fe.fd"; fe: "fe.fe"; ff: "fe.ff"; fg: "fe.fg"; fh: "fe.fh"; fi: "fe.fi"; fj: "fe.fj"; fk: "fe.fk"; fl: "fe.fl"; fm: "fe.fm"; fn: "fe.fn"; fo: "fe.fo"; fp: "fe.fp"; fq: "fe.fq"; fr: "fe.fr"; fs: "fe.fs"; ft: "fe.ft"; fu: "fe.fu"; fv: "fe.fv"; fw: "fe.fw"; fx: "fe.fx"; fy: "fe.fy"; fz: "fe.fz"; ga: "fe.ga"; gb: "fe.gb"; gc: "fe.gc"; gd: "fe.gd"; ge: "fe.ge"; gf: "fe.gf"; gg: "fe.gg"; gh: "fe.gh"; gi: "fe.gi"; gj: "fe.gj"; gk: "fe.gk"; gl: "fe.gl"; gm: "fe.gm"; gn: "fe.gn"; go: "fe.go"; gp: "fe.gp"; gq: "fe.gq"; gr: "fe.gr"; gs: "fe.gs"; gt: "fe.gt"; gu: "fe.gu"; gv: "fe.gv"; gw: "fe.gw"; gx: "fe.gx"; gy: "fe.gy"; gz: "fe.gz"; ha: "fe.ha"; hb: "fe.hb"; hc: "fe.hc"; hd: "fe.hd"; he: "fe.he"; hf: "fe.hf"; hg: "fe.hg"; hh: "fe.hh"; hi: "fe.hi"; hj: "fe.hj"; hk: "fe.hk"; hl: "fe.hl"; hm: "fe.hm"; hn: "fe.hn"; ho: "fe.ho"; hp: "fe.hp"; hq: "fe.hq"; hr: "fe.hr"; hs: "fe.hs"; ht: "fe.ht"; hu: "fe.hu"; hv: "fe.hv"; hw: "fe.hw"; hx: "fe.hx"; hy: "fe.hy"; hz: "fe.hz"; ia: "fe.ia"; ib: "fe.ib"; ic: "fe.ic"; id: "fe.id"; ie: "fe.ie"; if: "fe.if"; ig: "fe.ig"; ih: "fe.ih"; ii: "fe.ii"; ij: "fe.ij"; ik: "fe.ik"; il: "fe.il"; im: "fe.im"; in: "fe.in"; io: "fe.io"; ip: "fe.ip"; iq: "fe.iq"; ir: "fe.ir"; is: "fe.is"; it: "fe.it"; iu: "fe.iu"; iv: "fe.iv"; iw: "fe.iw"; ix: "fe.ix"; iy: "fe.iy"; iz: "fe.iz"; ja: "fe.ja"; jb: "fe.jb"; jc: "fe.jc"; jd: "fe.jd"; je: "fe.je"; jf: "fe.jf"; jg: "fe.jg"; jh: "fe.jh"; ji: "fe.ji"; jj: "fe.jj"; jk: "fe.jk"; jl: "fe.jl"; jm: "fe.jm"; jn: "fe.jn"; jo: "fe.jo"; jp: "fe.jp"; jq: "fe.jq"; jr: "fe.jr"; js: "fe.js"; jt: "fe.jt"; ju: "fe.ju"; jv: "fe.jv"; jw: "fe.jw"; jx: "fe.jx"; jy: "fe.jy"; jz: "fe.jz"; ka: "fe.ka"; kb: "fe.kb"; kc: "fe.kc"; kd: "fe.kd"; ke: "fe.ke"; kf: "fe.kf"; kg: "fe.kg"; kh: "fe.kh"; ki: "fe.ki"; kj: "fe.kj"; kk: "fe.kk"; kl: "fe.kl"; km: "fe.km"; kn: "fe.kn"; ko: "fe.ko"; kp: "fe.kp"; kq: "fe.kq"; kr: "fe.kr"; ks: "fe.ks"; kt: "fe.kt"; ku: "fe.ku"; kv: "fe.kv"; kw: "fe.kw"; kx: "fe.kx"; ky: "fe.ky"; kz: "fe.kz"; la: "fe.la"; lb: "fe.lb"; lc: "fe.lc"; ld: "fe.ld"; le: "fe.le"; lf: "fe.lf"; lg: "fe.lg"; lh: "fe.lh"; li: "fe.li"; lj: "fe.lj"; lk: "fe.lk"; ll: "fe.ll"; lm: "fe.lm"; ln: "fe.ln"; lo: "fe.lo"; lp: "fe.lp"; lq: "fe.lq"; lr: "fe.lr"; ls: "fe.ls"; lt: "fe.lt"; lu: "fe.lu"; lv: "fe.lv"; lw: "fe.lw"; lx: "fe.lx"; ly: "fe.ly"; lz: "fe.lz"; ma: "fe.ma"; mb: "fe.mb"; mc: "fe.mc"; md: "fe.md"; me: "fe.me"; mf: "fe.mf"; mg: "fe.mg"; mh: "fe.mh"; mi: "fe.mi"; mj: "fe.mj"; mk: "fe.mk"; ml: "fe.ml"; mm: "fe.mm"; mn: "fe.mn"; mo: "fe.mo"; mp: "fe.mp"; mq: "fe.mq"; mr: "fe.mr"; ms: "fe.ms"; mt: "fe.mt"; mu: "fe.mu"; mv: "fe.mv"; mw: "fe.mw"; mx: "fe.mx"; my: "fe.my"; mz: "fe.mz"; na: "fe.na"; nb: "fe.nb"; nc: "fe.nc"; nd: "fe.nd"; ne: "fe.ne"; nf: "fe.nf"; ng: "fe.ng"; nh: "fe.nh"; ni: "fe.ni"; nj: "fe.nj"; nk: "fe.nk"; nl: "fe.nl"; nm: "fe.nm"; nn: "fe.nn"; no: "fe.no"; np: "fe.np"; nq: "fe.nq"; nr: "fe.nr"; ns: "fe.ns"; nt: "fe.nt"; nu: "fe.nu"; nv: "fe.nv"; nw: "fe.nw"; nx: "fe.nx"; ny: "fe.ny"; nz: "fe.nz"; oa: "fe.oa"; ob: "fe.ob"; oc: "fe.oc"; od: "fe.od"; oe: "fe.oe"; of: "fe.of"; og: "fe.og"; oh: "fe.oh"; oi: "fe.oi"; oj: "fe.oj"; ok: "fe.ok"; ol: "fe.ol"; om: "fe.om"; on: "fe.on"; oo: "fe.oo"; op: "fe.op"; oq: "fe.oq"; or: "fe.or"; os: "fe.os"; ot: "fe.ot"; ou: "fe.ou"; ov: "fe.ov"; ow: "fe.ow"; ox: "fe.ox"; oy: "fe.oy"; oz: "fe.oz"; pa: "fe.pa"; pb: "fe.pb"; pc: "fe.pc"; pd: "fe.pd"; pe: "fe.pe"; pf: "fe.pf"; pg: "fe.pg"; ph: "fe.ph"; pi: "fe.pi"; pj: "fe.pj"; pk: "fe.pk"; pl: "fe.pl"; pm: "fe.pm"; pn: "fe.pn"; po: "fe.po"; pp: "fe.pp"; pq: "fe.pq"; pr: "fe.pr"; ps: "fe.ps"; pt: "fe.pt"; pu: "fe.pu"; pv: "fe.pv"; pw: "fe.pw"; px: "fe.px"; py: "fe.py"; pz: "fe.pz"; qa: "fe.qa"; qb: "fe.qb"; qc: "fe.qc"; qd: "fe.qd"; qe: "fe.qe"; qf: "fe.qf"; qg: "fe.qg"; qh: "fe.qh"; qi: "fe.qi"; qj: "fe.qj"; qk: "fe.qk"; ql: "fe.ql"; qm: "fe.qm"; qn: "fe.qn"; qo: "fe.qo"; qp: "fe.qp"; qq: "fe.qq"; qr: "fe.qr"; qs: "fe.qs"; qt: "fe.qt"; qu: "fe.qu"; qv: "fe.qv"; qw: "fe.qw"; qx: "fe.qx"; qy: "fe.qy"; qz: "fe.qz"; ra: "fe.ra"; rb: "fe.rb"; rc: "fe.rc"; rd: "fe.rd"; re: "fe.re"; rf: "fe.rf"; rg: "fe.rg"; rh: "fe.rh"; ri: "fe.ri"; rj: "fe.rj"; rk: "fe.rk"; rl: "fe.rl"; rm: "fe.rm"; rn: "fe.rn"; ro: "fe.ro"; rp: "fe.rp"; rq: "fe.rq"; rr: "fe.rr"; rs: "fe.rs"; rt: "fe.rt"; ru: "fe.ru"; rv: "fe.rv"; rw: "fe.rw"; rx: "fe.rx"; ry: "fe.ry"; rz: "fe.rz"; sa: "fe.sa"; sb: "fe.sb"; sc: "fe.sc"; sd: "fe.sd"; se: "fe.se"; sf: "fe.sf"; sg: "fe.sg"; sh: "fe.sh"; si: "fe.si"; sj: "fe.sj"; sk: "fe.sk"; sl: "fe.sl"; sm: "fe.sm"; sn: "fe.sn"; so: "fe.so"; sp: "fe.sp"; sq: "fe.sq"; sr: "fe.sr"; ss: "fe.ss"; st: "fe.st"; su: "fe.su"; sv: "fe.sv"; sw: "fe.sw"; sx: "fe.sx"; sy: "fe.sy"; sz: "fe.sz"; ta: "fe.ta"; tb: "fe.tb"; tc: "fe.tc"; td: "fe.td"; te: "fe.te"; tf: "fe.tf"; tg: "fe.tg"; th: "fe.th"; ti: "fe.ti"; tj: "fe.tj"; tk: "fe.tk"; tl: "fe.tl"; tm: "fe.tm"; tn: "fe.tn"; to: "fe.to"; tp: "fe.tp"; tq: "fe.tq"; tr: "fe.tr"; ts: "fe.ts"; tt: "fe.tt"; tu: "fe.tu"; tv: "fe.tv"; tw: "fe.tw"; tx: "fe.tx"; ty: "fe.ty"; tz: "fe.tz"; ua: "fe.ua"; ub: "fe.ub"; uc: "fe.uc"; ud: "fe.ud"; ue: "fe.ue"; uf: "fe.uf"; ug: "fe.ug"; uh: "fe.uh"; ui: "fe.ui"; uj: "fe.uj"; uk: "fe.uk"; ul: "fe.ul"; um: "fe.um"; un: "fe.un"; uo: "fe.uo"; up: "fe.up"; uq: "fe.uq"; ur: "fe.ur"; us: "fe.us"; ut: "fe.ut"; uu: "fe.uu"; uv: "fe.uv"; uw: "fe.uw"; ux: "fe.ux"; uy: "fe.uy"; uz: "fe.uz"; va: "fe.va"; vb: "fe.vb"; vc: "fe.vc"; vd: "fe.vd"; ve: "fe.ve"; vf: "fe.vf"; vg: "fe.vg"; vh: "fe.vh"; vi: "fe.vi"; vj: "fe.vj"; vk: "fe.vk"; vl: "fe.vl"; vm: "fe.vm"; vn: "fe.vn"; vo: "fe.vo"; vp: "fe.vp"; vq: "fe.vq"; vr: "fe.vr"; vs: "fe.vs"; vt: "fe.vt"; vu: "fe.vu"; vv: "fe.vv"; vw: "fe.vw"; vx: "fe.vx"; vy: "fe.vy"; vz: "fe.vz"; wa: "fe.wa"; wb: "fe.wb"; wc: "fe.wc"; wd: "fe.wd"; we: "fe.we"; wf: "fe.wf"; wg: "fe.wg"; wh: "fe.wh"; wi: "fe.wi"; wj: "fe.wj"; wk: "fe.wk"; wl: "fe.wl"; wm: "fe.wm"; wn: "fe.wn"; wo: "fe.wo"; wp: "fe.wp"; wq: "fe.wq"; wr: "fe.wr"; ws: "fe.ws"; wt: "fe.wt"; wu: "fe.wu"; wv: "fe.wv"; ww: "fe.ww"; wx: "fe.wx"; wy: "fe.wy"; wz: "fe.wz"; xa: "fe.xa"; xb: "fe.xb"; xc: "fe.xc"; xd: "fe.xd"; xe: "fe.xe"; xf: "fe.xf"; xg: "fe.xg"; xh: "fe.xh"; xi: "fe.xi"; xj: "fe.xj"; xk: "fe.xk"; xl: "fe.xl"; xm: "fe.xm"; xn: "fe.xn"; xo: "fe.xo"; xp: "fe.xp"; xq: "fe.xq"; xr: "fe.xr"; xs: "fe.xs"; xt: "fe.xt"; xu: "fe.xu"; xv: "fe.xv"; xw: "fe.xw"; xx: "fe.xx"; xy: "fe.xy"; xz: "fe.xz"; ya: "fe.ya"; yb: "fe.yb"; yc: "fe.yc"; yd: "fe.yd"; ye: "fe.ye"; yf: "fe.yf"; yg: "fe.yg"; yh: "fe.yh"; yi: "fe.yi"; yj: "fe.yj"; yk: "fe.yk"; yl: "fe.yl"; ym: "fe.ym"; yn: "fe.yn"; yo: "fe.yo"; yp: "fe.yp"; yq: "fe.yq"; yr: "fe.yr"; ys: "fe.ys"; yt: "fe.yt"; yu: "fe.yu"; yv: "fe.yv"; yw: "fe.yw"; yx: "fe.yx"; yy: "fe.yy"; yz: "fe.yz"; za: "fe.za"; zb: "fe.zb"; zc: "fe.zc"; zd: "fe.zd"; ze: "fe.ze"; zf: "fe.zf"; zg: "fe.zg"; zh: "fe.zh"; zi: "fe.zi"; zj: "fe.zj"; zk: "fe.zk"; zl: "fe.zl"; zm: "fe.zm"; zn: "fe.zn"; zo: "fe.zo"; zp: "fe.zp"; zq: "fe.zq"; zr: "fe.zr"; zs: "fe.zs"; zt: "fe.zt"; zu: "fe.zu"; zv: "fe.zv"; zw: "fe.zw"; zx: "fe.zx"; zy: "fe.zy"; zz: "fe.zz"; }; ff: { aa: "ff.aa"; ab: "ff.ab"; ac: "ff.ac"; ad: "ff.ad"; ae: "ff.ae"; af: "ff.af"; ag: "ff.ag"; ah: "ff.ah"; ai: "ff.ai"; aj: "ff.aj"; ak: "ff.ak"; al: "ff.al"; am: "ff.am"; an: "ff.an"; ao: "ff.ao"; ap: "ff.ap"; aq: "ff.aq"; ar: "ff.ar"; as: "ff.as"; at: "ff.at"; au: "ff.au"; av: "ff.av"; aw: "ff.aw"; ax: "ff.ax"; ay: "ff.ay"; az: "ff.az"; ba: "ff.ba"; bb: "ff.bb"; bc: "ff.bc"; bd: "ff.bd"; be: "ff.be"; bf: "ff.bf"; bg: "ff.bg"; bh: "ff.bh"; bi: "ff.bi"; bj: "ff.bj"; bk: "ff.bk"; bl: "ff.bl"; bm: "ff.bm"; bn: "ff.bn"; bo: "ff.bo"; bp: "ff.bp"; bq: "ff.bq"; br: "ff.br"; bs: "ff.bs"; bt: "ff.bt"; bu: "ff.bu"; bv: "ff.bv"; bw: "ff.bw"; bx: "ff.bx"; by: "ff.by"; bz: "ff.bz"; ca: "ff.ca"; cb: "ff.cb"; cc: "ff.cc"; cd: "ff.cd"; ce: "ff.ce"; cf: "ff.cf"; cg: "ff.cg"; ch: "ff.ch"; ci: "ff.ci"; cj: "ff.cj"; ck: "ff.ck"; cl: "ff.cl"; cm: "ff.cm"; cn: "ff.cn"; co: "ff.co"; cp: "ff.cp"; cq: "ff.cq"; cr: "ff.cr"; cs: "ff.cs"; ct: "ff.ct"; cu: "ff.cu"; cv: "ff.cv"; cw: "ff.cw"; cx: "ff.cx"; cy: "ff.cy"; cz: "ff.cz"; da: "ff.da"; db: "ff.db"; dc: "ff.dc"; dd: "ff.dd"; de: "ff.de"; df: "ff.df"; dg: "ff.dg"; dh: "ff.dh"; di: "ff.di"; dj: "ff.dj"; dk: "ff.dk"; dl: "ff.dl"; dm: "ff.dm"; dn: "ff.dn"; do: "ff.do"; dp: "ff.dp"; dq: "ff.dq"; dr: "ff.dr"; ds: "ff.ds"; dt: "ff.dt"; du: "ff.du"; dv: "ff.dv"; dw: "ff.dw"; dx: "ff.dx"; dy: "ff.dy"; dz: "ff.dz"; ea: "ff.ea"; eb: "ff.eb"; ec: "ff.ec"; ed: "ff.ed"; ee: "ff.ee"; ef: "ff.ef"; eg: "ff.eg"; eh: "ff.eh"; ei: "ff.ei"; ej: "ff.ej"; ek: "ff.ek"; el: "ff.el"; em: "ff.em"; en: "ff.en"; eo: "ff.eo"; ep: "ff.ep"; eq: "ff.eq"; er: "ff.er"; es: "ff.es"; et: "ff.et"; eu: "ff.eu"; ev: "ff.ev"; ew: "ff.ew"; ex: "ff.ex"; ey: "ff.ey"; ez: "ff.ez"; fa: "ff.fa"; fb: "ff.fb"; fc: "ff.fc"; fd: "ff.fd"; fe: "ff.fe"; ff: "ff.ff"; fg: "ff.fg"; fh: "ff.fh"; fi: "ff.fi"; fj: "ff.fj"; fk: "ff.fk"; fl: "ff.fl"; fm: "ff.fm"; fn: "ff.fn"; fo: "ff.fo"; fp: "ff.fp"; fq: "ff.fq"; fr: "ff.fr"; fs: "ff.fs"; ft: "ff.ft"; fu: "ff.fu"; fv: "ff.fv"; fw: "ff.fw"; fx: "ff.fx"; fy: "ff.fy"; fz: "ff.fz"; ga: "ff.ga"; gb: "ff.gb"; gc: "ff.gc"; gd: "ff.gd"; ge: "ff.ge"; gf: "ff.gf"; gg: "ff.gg"; gh: "ff.gh"; gi: "ff.gi"; gj: "ff.gj"; gk: "ff.gk"; gl: "ff.gl"; gm: "ff.gm"; gn: "ff.gn"; go: "ff.go"; gp: "ff.gp"; gq: "ff.gq"; gr: "ff.gr"; gs: "ff.gs"; gt: "ff.gt"; gu: "ff.gu"; gv: "ff.gv"; gw: "ff.gw"; gx: "ff.gx"; gy: "ff.gy"; gz: "ff.gz"; ha: "ff.ha"; hb: "ff.hb"; hc: "ff.hc"; hd: "ff.hd"; he: "ff.he"; hf: "ff.hf"; hg: "ff.hg"; hh: "ff.hh"; hi: "ff.hi"; hj: "ff.hj"; hk: "ff.hk"; hl: "ff.hl"; hm: "ff.hm"; hn: "ff.hn"; ho: "ff.ho"; hp: "ff.hp"; hq: "ff.hq"; hr: "ff.hr"; hs: "ff.hs"; ht: "ff.ht"; hu: "ff.hu"; hv: "ff.hv"; hw: "ff.hw"; hx: "ff.hx"; hy: "ff.hy"; hz: "ff.hz"; ia: "ff.ia"; ib: "ff.ib"; ic: "ff.ic"; id: "ff.id"; ie: "ff.ie"; if: "ff.if"; ig: "ff.ig"; ih: "ff.ih"; ii: "ff.ii"; ij: "ff.ij"; ik: "ff.ik"; il: "ff.il"; im: "ff.im"; in: "ff.in"; io: "ff.io"; ip: "ff.ip"; iq: "ff.iq"; ir: "ff.ir"; is: "ff.is"; it: "ff.it"; iu: "ff.iu"; iv: "ff.iv"; iw: "ff.iw"; ix: "ff.ix"; iy: "ff.iy"; iz: "ff.iz"; ja: "ff.ja"; jb: "ff.jb"; jc: "ff.jc"; jd: "ff.jd"; je: "ff.je"; jf: "ff.jf"; jg: "ff.jg"; jh: "ff.jh"; ji: "ff.ji"; jj: "ff.jj"; jk: "ff.jk"; jl: "ff.jl"; jm: "ff.jm"; jn: "ff.jn"; jo: "ff.jo"; jp: "ff.jp"; jq: "ff.jq"; jr: "ff.jr"; js: "ff.js"; jt: "ff.jt"; ju: "ff.ju"; jv: "ff.jv"; jw: "ff.jw"; jx: "ff.jx"; jy: "ff.jy"; jz: "ff.jz"; ka: "ff.ka"; kb: "ff.kb"; kc: "ff.kc"; kd: "ff.kd"; ke: "ff.ke"; kf: "ff.kf"; kg: "ff.kg"; kh: "ff.kh"; ki: "ff.ki"; kj: "ff.kj"; kk: "ff.kk"; kl: "ff.kl"; km: "ff.km"; kn: "ff.kn"; ko: "ff.ko"; kp: "ff.kp"; kq: "ff.kq"; kr: "ff.kr"; ks: "ff.ks"; kt: "ff.kt"; ku: "ff.ku"; kv: "ff.kv"; kw: "ff.kw"; kx: "ff.kx"; ky: "ff.ky"; kz: "ff.kz"; la: "ff.la"; lb: "ff.lb"; lc: "ff.lc"; ld: "ff.ld"; le: "ff.le"; lf: "ff.lf"; lg: "ff.lg"; lh: "ff.lh"; li: "ff.li"; lj: "ff.lj"; lk: "ff.lk"; ll: "ff.ll"; lm: "ff.lm"; ln: "ff.ln"; lo: "ff.lo"; lp: "ff.lp"; lq: "ff.lq"; lr: "ff.lr"; ls: "ff.ls"; lt: "ff.lt"; lu: "ff.lu"; lv: "ff.lv"; lw: "ff.lw"; lx: "ff.lx"; ly: "ff.ly"; lz: "ff.lz"; ma: "ff.ma"; mb: "ff.mb"; mc: "ff.mc"; md: "ff.md"; me: "ff.me"; mf: "ff.mf"; mg: "ff.mg"; mh: "ff.mh"; mi: "ff.mi"; mj: "ff.mj"; mk: "ff.mk"; ml: "ff.ml"; mm: "ff.mm"; mn: "ff.mn"; mo: "ff.mo"; mp: "ff.mp"; mq: "ff.mq"; mr: "ff.mr"; ms: "ff.ms"; mt: "ff.mt"; mu: "ff.mu"; mv: "ff.mv"; mw: "ff.mw"; mx: "ff.mx"; my: "ff.my"; mz: "ff.mz"; na: "ff.na"; nb: "ff.nb"; nc: "ff.nc"; nd: "ff.nd"; ne: "ff.ne"; nf: "ff.nf"; ng: "ff.ng"; nh: "ff.nh"; ni: "ff.ni"; nj: "ff.nj"; nk: "ff.nk"; nl: "ff.nl"; nm: "ff.nm"; nn: "ff.nn"; no: "ff.no"; np: "ff.np"; nq: "ff.nq"; nr: "ff.nr"; ns: "ff.ns"; nt: "ff.nt"; nu: "ff.nu"; nv: "ff.nv"; nw: "ff.nw"; nx: "ff.nx"; ny: "ff.ny"; nz: "ff.nz"; oa: "ff.oa"; ob: "ff.ob"; oc: "ff.oc"; od: "ff.od"; oe: "ff.oe"; of: "ff.of"; og: "ff.og"; oh: "ff.oh"; oi: "ff.oi"; oj: "ff.oj"; ok: "ff.ok"; ol: "ff.ol"; om: "ff.om"; on: "ff.on"; oo: "ff.oo"; op: "ff.op"; oq: "ff.oq"; or: "ff.or"; os: "ff.os"; ot: "ff.ot"; ou: "ff.ou"; ov: "ff.ov"; ow: "ff.ow"; ox: "ff.ox"; oy: "ff.oy"; oz: "ff.oz"; pa: "ff.pa"; pb: "ff.pb"; pc: "ff.pc"; pd: "ff.pd"; pe: "ff.pe"; pf: "ff.pf"; pg: "ff.pg"; ph: "ff.ph"; pi: "ff.pi"; pj: "ff.pj"; pk: "ff.pk"; pl: "ff.pl"; pm: "ff.pm"; pn: "ff.pn"; po: "ff.po"; pp: "ff.pp"; pq: "ff.pq"; pr: "ff.pr"; ps: "ff.ps"; pt: "ff.pt"; pu: "ff.pu"; pv: "ff.pv"; pw: "ff.pw"; px: "ff.px"; py: "ff.py"; pz: "ff.pz"; qa: "ff.qa"; qb: "ff.qb"; qc: "ff.qc"; qd: "ff.qd"; qe: "ff.qe"; qf: "ff.qf"; qg: "ff.qg"; qh: "ff.qh"; qi: "ff.qi"; qj: "ff.qj"; qk: "ff.qk"; ql: "ff.ql"; qm: "ff.qm"; qn: "ff.qn"; qo: "ff.qo"; qp: "ff.qp"; qq: "ff.qq"; qr: "ff.qr"; qs: "ff.qs"; qt: "ff.qt"; qu: "ff.qu"; qv: "ff.qv"; qw: "ff.qw"; qx: "ff.qx"; qy: "ff.qy"; qz: "ff.qz"; ra: "ff.ra"; rb: "ff.rb"; rc: "ff.rc"; rd: "ff.rd"; re: "ff.re"; rf: "ff.rf"; rg: "ff.rg"; rh: "ff.rh"; ri: "ff.ri"; rj: "ff.rj"; rk: "ff.rk"; rl: "ff.rl"; rm: "ff.rm"; rn: "ff.rn"; ro: "ff.ro"; rp: "ff.rp"; rq: "ff.rq"; rr: "ff.rr"; rs: "ff.rs"; rt: "ff.rt"; ru: "ff.ru"; rv: "ff.rv"; rw: "ff.rw"; rx: "ff.rx"; ry: "ff.ry"; rz: "ff.rz"; sa: "ff.sa"; sb: "ff.sb"; sc: "ff.sc"; sd: "ff.sd"; se: "ff.se"; sf: "ff.sf"; sg: "ff.sg"; sh: "ff.sh"; si: "ff.si"; sj: "ff.sj"; sk: "ff.sk"; sl: "ff.sl"; sm: "ff.sm"; sn: "ff.sn"; so: "ff.so"; sp: "ff.sp"; sq: "ff.sq"; sr: "ff.sr"; ss: "ff.ss"; st: "ff.st"; su: "ff.su"; sv: "ff.sv"; sw: "ff.sw"; sx: "ff.sx"; sy: "ff.sy"; sz: "ff.sz"; ta: "ff.ta"; tb: "ff.tb"; tc: "ff.tc"; td: "ff.td"; te: "ff.te"; tf: "ff.tf"; tg: "ff.tg"; th: "ff.th"; ti: "ff.ti"; tj: "ff.tj"; tk: "ff.tk"; tl: "ff.tl"; tm: "ff.tm"; tn: "ff.tn"; to: "ff.to"; tp: "ff.tp"; tq: "ff.tq"; tr: "ff.tr"; ts: "ff.ts"; tt: "ff.tt"; tu: "ff.tu"; tv: "ff.tv"; tw: "ff.tw"; tx: "ff.tx"; ty: "ff.ty"; tz: "ff.tz"; ua: "ff.ua"; ub: "ff.ub"; uc: "ff.uc"; ud: "ff.ud"; ue: "ff.ue"; uf: "ff.uf"; ug: "ff.ug"; uh: "ff.uh"; ui: "ff.ui"; uj: "ff.uj"; uk: "ff.uk"; ul: "ff.ul"; um: "ff.um"; un: "ff.un"; uo: "ff.uo"; up: "ff.up"; uq: "ff.uq"; ur: "ff.ur"; us: "ff.us"; ut: "ff.ut"; uu: "ff.uu"; uv: "ff.uv"; uw: "ff.uw"; ux: "ff.ux"; uy: "ff.uy"; uz: "ff.uz"; va: "ff.va"; vb: "ff.vb"; vc: "ff.vc"; vd: "ff.vd"; ve: "ff.ve"; vf: "ff.vf"; vg: "ff.vg"; vh: "ff.vh"; vi: "ff.vi"; vj: "ff.vj"; vk: "ff.vk"; vl: "ff.vl"; vm: "ff.vm"; vn: "ff.vn"; vo: "ff.vo"; vp: "ff.vp"; vq: "ff.vq"; vr: "ff.vr"; vs: "ff.vs"; vt: "ff.vt"; vu: "ff.vu"; vv: "ff.vv"; vw: "ff.vw"; vx: "ff.vx"; vy: "ff.vy"; vz: "ff.vz"; wa: "ff.wa"; wb: "ff.wb"; wc: "ff.wc"; wd: "ff.wd"; we: "ff.we"; wf: "ff.wf"; wg: "ff.wg"; wh: "ff.wh"; wi: "ff.wi"; wj: "ff.wj"; wk: "ff.wk"; wl: "ff.wl"; wm: "ff.wm"; wn: "ff.wn"; wo: "ff.wo"; wp: "ff.wp"; wq: "ff.wq"; wr: "ff.wr"; ws: "ff.ws"; wt: "ff.wt"; wu: "ff.wu"; wv: "ff.wv"; ww: "ff.ww"; wx: "ff.wx"; wy: "ff.wy"; wz: "ff.wz"; xa: "ff.xa"; xb: "ff.xb"; xc: "ff.xc"; xd: "ff.xd"; xe: "ff.xe"; xf: "ff.xf"; xg: "ff.xg"; xh: "ff.xh"; xi: "ff.xi"; xj: "ff.xj"; xk: "ff.xk"; xl: "ff.xl"; xm: "ff.xm"; xn: "ff.xn"; xo: "ff.xo"; xp: "ff.xp"; xq: "ff.xq"; xr: "ff.xr"; xs: "ff.xs"; xt: "ff.xt"; xu: "ff.xu"; xv: "ff.xv"; xw: "ff.xw"; xx: "ff.xx"; xy: "ff.xy"; xz: "ff.xz"; ya: "ff.ya"; yb: "ff.yb"; yc: "ff.yc"; yd: "ff.yd"; ye: "ff.ye"; yf: "ff.yf"; yg: "ff.yg"; yh: "ff.yh"; yi: "ff.yi"; yj: "ff.yj"; yk: "ff.yk"; yl: "ff.yl"; ym: "ff.ym"; yn: "ff.yn"; yo: "ff.yo"; yp: "ff.yp"; yq: "ff.yq"; yr: "ff.yr"; ys: "ff.ys"; yt: "ff.yt"; yu: "ff.yu"; yv: "ff.yv"; yw: "ff.yw"; yx: "ff.yx"; yy: "ff.yy"; yz: "ff.yz"; za: "ff.za"; zb: "ff.zb"; zc: "ff.zc"; zd: "ff.zd"; ze: "ff.ze"; zf: "ff.zf"; zg: "ff.zg"; zh: "ff.zh"; zi: "ff.zi"; zj: "ff.zj"; zk: "ff.zk"; zl: "ff.zl"; zm: "ff.zm"; zn: "ff.zn"; zo: "ff.zo"; zp: "ff.zp"; zq: "ff.zq"; zr: "ff.zr"; zs: "ff.zs"; zt: "ff.zt"; zu: "ff.zu"; zv: "ff.zv"; zw: "ff.zw"; zx: "ff.zx"; zy: "ff.zy"; zz: "ff.zz"; }; fg: { aa: "fg.aa"; ab: "fg.ab"; ac: "fg.ac"; ad: "fg.ad"; ae: "fg.ae"; af: "fg.af"; ag: "fg.ag"; ah: "fg.ah"; ai: "fg.ai"; aj: "fg.aj"; ak: "fg.ak"; al: "fg.al"; am: "fg.am"; an: "fg.an"; ao: "fg.ao"; ap: "fg.ap"; aq: "fg.aq"; ar: "fg.ar"; as: "fg.as"; at: "fg.at"; au: "fg.au"; av: "fg.av"; aw: "fg.aw"; ax: "fg.ax"; ay: "fg.ay"; az: "fg.az"; ba: "fg.ba"; bb: "fg.bb"; bc: "fg.bc"; bd: "fg.bd"; be: "fg.be"; bf: "fg.bf"; bg: "fg.bg"; bh: "fg.bh"; bi: "fg.bi"; bj: "fg.bj"; bk: "fg.bk"; bl: "fg.bl"; bm: "fg.bm"; bn: "fg.bn"; bo: "fg.bo"; bp: "fg.bp"; bq: "fg.bq"; br: "fg.br"; bs: "fg.bs"; bt: "fg.bt"; bu: "fg.bu"; bv: "fg.bv"; bw: "fg.bw"; bx: "fg.bx"; by: "fg.by"; bz: "fg.bz"; ca: "fg.ca"; cb: "fg.cb"; cc: "fg.cc"; cd: "fg.cd"; ce: "fg.ce"; cf: "fg.cf"; cg: "fg.cg"; ch: "fg.ch"; ci: "fg.ci"; cj: "fg.cj"; ck: "fg.ck"; cl: "fg.cl"; cm: "fg.cm"; cn: "fg.cn"; co: "fg.co"; cp: "fg.cp"; cq: "fg.cq"; cr: "fg.cr"; cs: "fg.cs"; ct: "fg.ct"; cu: "fg.cu"; cv: "fg.cv"; cw: "fg.cw"; cx: "fg.cx"; cy: "fg.cy"; cz: "fg.cz"; da: "fg.da"; db: "fg.db"; dc: "fg.dc"; dd: "fg.dd"; de: "fg.de"; df: "fg.df"; dg: "fg.dg"; dh: "fg.dh"; di: "fg.di"; dj: "fg.dj"; dk: "fg.dk"; dl: "fg.dl"; dm: "fg.dm"; dn: "fg.dn"; do: "fg.do"; dp: "fg.dp"; dq: "fg.dq"; dr: "fg.dr"; ds: "fg.ds"; dt: "fg.dt"; du: "fg.du"; dv: "fg.dv"; dw: "fg.dw"; dx: "fg.dx"; dy: "fg.dy"; dz: "fg.dz"; ea: "fg.ea"; eb: "fg.eb"; ec: "fg.ec"; ed: "fg.ed"; ee: "fg.ee"; ef: "fg.ef"; eg: "fg.eg"; eh: "fg.eh"; ei: "fg.ei"; ej: "fg.ej"; ek: "fg.ek"; el: "fg.el"; em: "fg.em"; en: "fg.en"; eo: "fg.eo"; ep: "fg.ep"; eq: "fg.eq"; er: "fg.er"; es: "fg.es"; et: "fg.et"; eu: "fg.eu"; ev: "fg.ev"; ew: "fg.ew"; ex: "fg.ex"; ey: "fg.ey"; ez: "fg.ez"; fa: "fg.fa"; fb: "fg.fb"; fc: "fg.fc"; fd: "fg.fd"; fe: "fg.fe"; ff: "fg.ff"; fg: "fg.fg"; fh: "fg.fh"; fi: "fg.fi"; fj: "fg.fj"; fk: "fg.fk"; fl: "fg.fl"; fm: "fg.fm"; fn: "fg.fn"; fo: "fg.fo"; fp: "fg.fp"; fq: "fg.fq"; fr: "fg.fr"; fs: "fg.fs"; ft: "fg.ft"; fu: "fg.fu"; fv: "fg.fv"; fw: "fg.fw"; fx: "fg.fx"; fy: "fg.fy"; fz: "fg.fz"; ga: "fg.ga"; gb: "fg.gb"; gc: "fg.gc"; gd: "fg.gd"; ge: "fg.ge"; gf: "fg.gf"; gg: "fg.gg"; gh: "fg.gh"; gi: "fg.gi"; gj: "fg.gj"; gk: "fg.gk"; gl: "fg.gl"; gm: "fg.gm"; gn: "fg.gn"; go: "fg.go"; gp: "fg.gp"; gq: "fg.gq"; gr: "fg.gr"; gs: "fg.gs"; gt: "fg.gt"; gu: "fg.gu"; gv: "fg.gv"; gw: "fg.gw"; gx: "fg.gx"; gy: "fg.gy"; gz: "fg.gz"; ha: "fg.ha"; hb: "fg.hb"; hc: "fg.hc"; hd: "fg.hd"; he: "fg.he"; hf: "fg.hf"; hg: "fg.hg"; hh: "fg.hh"; hi: "fg.hi"; hj: "fg.hj"; hk: "fg.hk"; hl: "fg.hl"; hm: "fg.hm"; hn: "fg.hn"; ho: "fg.ho"; hp: "fg.hp"; hq: "fg.hq"; hr: "fg.hr"; hs: "fg.hs"; ht: "fg.ht"; hu: "fg.hu"; hv: "fg.hv"; hw: "fg.hw"; hx: "fg.hx"; hy: "fg.hy"; hz: "fg.hz"; ia: "fg.ia"; ib: "fg.ib"; ic: "fg.ic"; id: "fg.id"; ie: "fg.ie"; if: "fg.if"; ig: "fg.ig"; ih: "fg.ih"; ii: "fg.ii"; ij: "fg.ij"; ik: "fg.ik"; il: "fg.il"; im: "fg.im"; in: "fg.in"; io: "fg.io"; ip: "fg.ip"; iq: "fg.iq"; ir: "fg.ir"; is: "fg.is"; it: "fg.it"; iu: "fg.iu"; iv: "fg.iv"; iw: "fg.iw"; ix: "fg.ix"; iy: "fg.iy"; iz: "fg.iz"; ja: "fg.ja"; jb: "fg.jb"; jc: "fg.jc"; jd: "fg.jd"; je: "fg.je"; jf: "fg.jf"; jg: "fg.jg"; jh: "fg.jh"; ji: "fg.ji"; jj: "fg.jj"; jk: "fg.jk"; jl: "fg.jl"; jm: "fg.jm"; jn: "fg.jn"; jo: "fg.jo"; jp: "fg.jp"; jq: "fg.jq"; jr: "fg.jr"; js: "fg.js"; jt: "fg.jt"; ju: "fg.ju"; jv: "fg.jv"; jw: "fg.jw"; jx: "fg.jx"; jy: "fg.jy"; jz: "fg.jz"; ka: "fg.ka"; kb: "fg.kb"; kc: "fg.kc"; kd: "fg.kd"; ke: "fg.ke"; kf: "fg.kf"; kg: "fg.kg"; kh: "fg.kh"; ki: "fg.ki"; kj: "fg.kj"; kk: "fg.kk"; kl: "fg.kl"; km: "fg.km"; kn: "fg.kn"; ko: "fg.ko"; kp: "fg.kp"; kq: "fg.kq"; kr: "fg.kr"; ks: "fg.ks"; kt: "fg.kt"; ku: "fg.ku"; kv: "fg.kv"; kw: "fg.kw"; kx: "fg.kx"; ky: "fg.ky"; kz: "fg.kz"; la: "fg.la"; lb: "fg.lb"; lc: "fg.lc"; ld: "fg.ld"; le: "fg.le"; lf: "fg.lf"; lg: "fg.lg"; lh: "fg.lh"; li: "fg.li"; lj: "fg.lj"; lk: "fg.lk"; ll: "fg.ll"; lm: "fg.lm"; ln: "fg.ln"; lo: "fg.lo"; lp: "fg.lp"; lq: "fg.lq"; lr: "fg.lr"; ls: "fg.ls"; lt: "fg.lt"; lu: "fg.lu"; lv: "fg.lv"; lw: "fg.lw"; lx: "fg.lx"; ly: "fg.ly"; lz: "fg.lz"; ma: "fg.ma"; mb: "fg.mb"; mc: "fg.mc"; md: "fg.md"; me: "fg.me"; mf: "fg.mf"; mg: "fg.mg"; mh: "fg.mh"; mi: "fg.mi"; mj: "fg.mj"; mk: "fg.mk"; ml: "fg.ml"; mm: "fg.mm"; mn: "fg.mn"; mo: "fg.mo"; mp: "fg.mp"; mq: "fg.mq"; mr: "fg.mr"; ms: "fg.ms"; mt: "fg.mt"; mu: "fg.mu"; mv: "fg.mv"; mw: "fg.mw"; mx: "fg.mx"; my: "fg.my"; mz: "fg.mz"; na: "fg.na"; nb: "fg.nb"; nc: "fg.nc"; nd: "fg.nd"; ne: "fg.ne"; nf: "fg.nf"; ng: "fg.ng"; nh: "fg.nh"; ni: "fg.ni"; nj: "fg.nj"; nk: "fg.nk"; nl: "fg.nl"; nm: "fg.nm"; nn: "fg.nn"; no: "fg.no"; np: "fg.np"; nq: "fg.nq"; nr: "fg.nr"; ns: "fg.ns"; nt: "fg.nt"; nu: "fg.nu"; nv: "fg.nv"; nw: "fg.nw"; nx: "fg.nx"; ny: "fg.ny"; nz: "fg.nz"; oa: "fg.oa"; ob: "fg.ob"; oc: "fg.oc"; od: "fg.od"; oe: "fg.oe"; of: "fg.of"; og: "fg.og"; oh: "fg.oh"; oi: "fg.oi"; oj: "fg.oj"; ok: "fg.ok"; ol: "fg.ol"; om: "fg.om"; on: "fg.on"; oo: "fg.oo"; op: "fg.op"; oq: "fg.oq"; or: "fg.or"; os: "fg.os"; ot: "fg.ot"; ou: "fg.ou"; ov: "fg.ov"; ow: "fg.ow"; ox: "fg.ox"; oy: "fg.oy"; oz: "fg.oz"; pa: "fg.pa"; pb: "fg.pb"; pc: "fg.pc"; pd: "fg.pd"; pe: "fg.pe"; pf: "fg.pf"; pg: "fg.pg"; ph: "fg.ph"; pi: "fg.pi"; pj: "fg.pj"; pk: "fg.pk"; pl: "fg.pl"; pm: "fg.pm"; pn: "fg.pn"; po: "fg.po"; pp: "fg.pp"; pq: "fg.pq"; pr: "fg.pr"; ps: "fg.ps"; pt: "fg.pt"; pu: "fg.pu"; pv: "fg.pv"; pw: "fg.pw"; px: "fg.px"; py: "fg.py"; pz: "fg.pz"; qa: "fg.qa"; qb: "fg.qb"; qc: "fg.qc"; qd: "fg.qd"; qe: "fg.qe"; qf: "fg.qf"; qg: "fg.qg"; qh: "fg.qh"; qi: "fg.qi"; qj: "fg.qj"; qk: "fg.qk"; ql: "fg.ql"; qm: "fg.qm"; qn: "fg.qn"; qo: "fg.qo"; qp: "fg.qp"; qq: "fg.qq"; qr: "fg.qr"; qs: "fg.qs"; qt: "fg.qt"; qu: "fg.qu"; qv: "fg.qv"; qw: "fg.qw"; qx: "fg.qx"; qy: "fg.qy"; qz: "fg.qz"; ra: "fg.ra"; rb: "fg.rb"; rc: "fg.rc"; rd: "fg.rd"; re: "fg.re"; rf: "fg.rf"; rg: "fg.rg"; rh: "fg.rh"; ri: "fg.ri"; rj: "fg.rj"; rk: "fg.rk"; rl: "fg.rl"; rm: "fg.rm"; rn: "fg.rn"; ro: "fg.ro"; rp: "fg.rp"; rq: "fg.rq"; rr: "fg.rr"; rs: "fg.rs"; rt: "fg.rt"; ru: "fg.ru"; rv: "fg.rv"; rw: "fg.rw"; rx: "fg.rx"; ry: "fg.ry"; rz: "fg.rz"; sa: "fg.sa"; sb: "fg.sb"; sc: "fg.sc"; sd: "fg.sd"; se: "fg.se"; sf: "fg.sf"; sg: "fg.sg"; sh: "fg.sh"; si: "fg.si"; sj: "fg.sj"; sk: "fg.sk"; sl: "fg.sl"; sm: "fg.sm"; sn: "fg.sn"; so: "fg.so"; sp: "fg.sp"; sq: "fg.sq"; sr: "fg.sr"; ss: "fg.ss"; st: "fg.st"; su: "fg.su"; sv: "fg.sv"; sw: "fg.sw"; sx: "fg.sx"; sy: "fg.sy"; sz: "fg.sz"; ta: "fg.ta"; tb: "fg.tb"; tc: "fg.tc"; td: "fg.td"; te: "fg.te"; tf: "fg.tf"; tg: "fg.tg"; th: "fg.th"; ti: "fg.ti"; tj: "fg.tj"; tk: "fg.tk"; tl: "fg.tl"; tm: "fg.tm"; tn: "fg.tn"; to: "fg.to"; tp: "fg.tp"; tq: "fg.tq"; tr: "fg.tr"; ts: "fg.ts"; tt: "fg.tt"; tu: "fg.tu"; tv: "fg.tv"; tw: "fg.tw"; tx: "fg.tx"; ty: "fg.ty"; tz: "fg.tz"; ua: "fg.ua"; ub: "fg.ub"; uc: "fg.uc"; ud: "fg.ud"; ue: "fg.ue"; uf: "fg.uf"; ug: "fg.ug"; uh: "fg.uh"; ui: "fg.ui"; uj: "fg.uj"; uk: "fg.uk"; ul: "fg.ul"; um: "fg.um"; un: "fg.un"; uo: "fg.uo"; up: "fg.up"; uq: "fg.uq"; ur: "fg.ur"; us: "fg.us"; ut: "fg.ut"; uu: "fg.uu"; uv: "fg.uv"; uw: "fg.uw"; ux: "fg.ux"; uy: "fg.uy"; uz: "fg.uz"; va: "fg.va"; vb: "fg.vb"; vc: "fg.vc"; vd: "fg.vd"; ve: "fg.ve"; vf: "fg.vf"; vg: "fg.vg"; vh: "fg.vh"; vi: "fg.vi"; vj: "fg.vj"; vk: "fg.vk"; vl: "fg.vl"; vm: "fg.vm"; vn: "fg.vn"; vo: "fg.vo"; vp: "fg.vp"; vq: "fg.vq"; vr: "fg.vr"; vs: "fg.vs"; vt: "fg.vt"; vu: "fg.vu"; vv: "fg.vv"; vw: "fg.vw"; vx: "fg.vx"; vy: "fg.vy"; vz: "fg.vz"; wa: "fg.wa"; wb: "fg.wb"; wc: "fg.wc"; wd: "fg.wd"; we: "fg.we"; wf: "fg.wf"; wg: "fg.wg"; wh: "fg.wh"; wi: "fg.wi"; wj: "fg.wj"; wk: "fg.wk"; wl: "fg.wl"; wm: "fg.wm"; wn: "fg.wn"; wo: "fg.wo"; wp: "fg.wp"; wq: "fg.wq"; wr: "fg.wr"; ws: "fg.ws"; wt: "fg.wt"; wu: "fg.wu"; wv: "fg.wv"; ww: "fg.ww"; wx: "fg.wx"; wy: "fg.wy"; wz: "fg.wz"; xa: "fg.xa"; xb: "fg.xb"; xc: "fg.xc"; xd: "fg.xd"; xe: "fg.xe"; xf: "fg.xf"; xg: "fg.xg"; xh: "fg.xh"; xi: "fg.xi"; xj: "fg.xj"; xk: "fg.xk"; xl: "fg.xl"; xm: "fg.xm"; xn: "fg.xn"; xo: "fg.xo"; xp: "fg.xp"; xq: "fg.xq"; xr: "fg.xr"; xs: "fg.xs"; xt: "fg.xt"; xu: "fg.xu"; xv: "fg.xv"; xw: "fg.xw"; xx: "fg.xx"; xy: "fg.xy"; xz: "fg.xz"; ya: "fg.ya"; yb: "fg.yb"; yc: "fg.yc"; yd: "fg.yd"; ye: "fg.ye"; yf: "fg.yf"; yg: "fg.yg"; yh: "fg.yh"; yi: "fg.yi"; yj: "fg.yj"; yk: "fg.yk"; yl: "fg.yl"; ym: "fg.ym"; yn: "fg.yn"; yo: "fg.yo"; yp: "fg.yp"; yq: "fg.yq"; yr: "fg.yr"; ys: "fg.ys"; yt: "fg.yt"; yu: "fg.yu"; yv: "fg.yv"; yw: "fg.yw"; yx: "fg.yx"; yy: "fg.yy"; yz: "fg.yz"; za: "fg.za"; zb: "fg.zb"; zc: "fg.zc"; zd: "fg.zd"; ze: "fg.ze"; zf: "fg.zf"; zg: "fg.zg"; zh: "fg.zh"; zi: "fg.zi"; zj: "fg.zj"; zk: "fg.zk"; zl: "fg.zl"; zm: "fg.zm"; zn: "fg.zn"; zo: "fg.zo"; zp: "fg.zp"; zq: "fg.zq"; zr: "fg.zr"; zs: "fg.zs"; zt: "fg.zt"; zu: "fg.zu"; zv: "fg.zv"; zw: "fg.zw"; zx: "fg.zx"; zy: "fg.zy"; zz: "fg.zz"; }; fh: { aa: "fh.aa"; ab: "fh.ab"; ac: "fh.ac"; ad: "fh.ad"; ae: "fh.ae"; af: "fh.af"; ag: "fh.ag"; ah: "fh.ah"; ai: "fh.ai"; aj: "fh.aj"; ak: "fh.ak"; al: "fh.al"; am: "fh.am"; an: "fh.an"; ao: "fh.ao"; ap: "fh.ap"; aq: "fh.aq"; ar: "fh.ar"; as: "fh.as"; at: "fh.at"; au: "fh.au"; av: "fh.av"; aw: "fh.aw"; ax: "fh.ax"; ay: "fh.ay"; az: "fh.az"; ba: "fh.ba"; bb: "fh.bb"; bc: "fh.bc"; bd: "fh.bd"; be: "fh.be"; bf: "fh.bf"; bg: "fh.bg"; bh: "fh.bh"; bi: "fh.bi"; bj: "fh.bj"; bk: "fh.bk"; bl: "fh.bl"; bm: "fh.bm"; bn: "fh.bn"; bo: "fh.bo"; bp: "fh.bp"; bq: "fh.bq"; br: "fh.br"; bs: "fh.bs"; bt: "fh.bt"; bu: "fh.bu"; bv: "fh.bv"; bw: "fh.bw"; bx: "fh.bx"; by: "fh.by"; bz: "fh.bz"; ca: "fh.ca"; cb: "fh.cb"; cc: "fh.cc"; cd: "fh.cd"; ce: "fh.ce"; cf: "fh.cf"; cg: "fh.cg"; ch: "fh.ch"; ci: "fh.ci"; cj: "fh.cj"; ck: "fh.ck"; cl: "fh.cl"; cm: "fh.cm"; cn: "fh.cn"; co: "fh.co"; cp: "fh.cp"; cq: "fh.cq"; cr: "fh.cr"; cs: "fh.cs"; ct: "fh.ct"; cu: "fh.cu"; cv: "fh.cv"; cw: "fh.cw"; cx: "fh.cx"; cy: "fh.cy"; cz: "fh.cz"; da: "fh.da"; db: "fh.db"; dc: "fh.dc"; dd: "fh.dd"; de: "fh.de"; df: "fh.df"; dg: "fh.dg"; dh: "fh.dh"; di: "fh.di"; dj: "fh.dj"; dk: "fh.dk"; dl: "fh.dl"; dm: "fh.dm"; dn: "fh.dn"; do: "fh.do"; dp: "fh.dp"; dq: "fh.dq"; dr: "fh.dr"; ds: "fh.ds"; dt: "fh.dt"; du: "fh.du"; dv: "fh.dv"; dw: "fh.dw"; dx: "fh.dx"; dy: "fh.dy"; dz: "fh.dz"; ea: "fh.ea"; eb: "fh.eb"; ec: "fh.ec"; ed: "fh.ed"; ee: "fh.ee"; ef: "fh.ef"; eg: "fh.eg"; eh: "fh.eh"; ei: "fh.ei"; ej: "fh.ej"; ek: "fh.ek"; el: "fh.el"; em: "fh.em"; en: "fh.en"; eo: "fh.eo"; ep: "fh.ep"; eq: "fh.eq"; er: "fh.er"; es: "fh.es"; et: "fh.et"; eu: "fh.eu"; ev: "fh.ev"; ew: "fh.ew"; ex: "fh.ex"; ey: "fh.ey"; ez: "fh.ez"; fa: "fh.fa"; fb: "fh.fb"; fc: "fh.fc"; fd: "fh.fd"; fe: "fh.fe"; ff: "fh.ff"; fg: "fh.fg"; fh: "fh.fh"; fi: "fh.fi"; fj: "fh.fj"; fk: "fh.fk"; fl: "fh.fl"; fm: "fh.fm"; fn: "fh.fn"; fo: "fh.fo"; fp: "fh.fp"; fq: "fh.fq"; fr: "fh.fr"; fs: "fh.fs"; ft: "fh.ft"; fu: "fh.fu"; fv: "fh.fv"; fw: "fh.fw"; fx: "fh.fx"; fy: "fh.fy"; fz: "fh.fz"; ga: "fh.ga"; gb: "fh.gb"; gc: "fh.gc"; gd: "fh.gd"; ge: "fh.ge"; gf: "fh.gf"; gg: "fh.gg"; gh: "fh.gh"; gi: "fh.gi"; gj: "fh.gj"; gk: "fh.gk"; gl: "fh.gl"; gm: "fh.gm"; gn: "fh.gn"; go: "fh.go"; gp: "fh.gp"; gq: "fh.gq"; gr: "fh.gr"; gs: "fh.gs"; gt: "fh.gt"; gu: "fh.gu"; gv: "fh.gv"; gw: "fh.gw"; gx: "fh.gx"; gy: "fh.gy"; gz: "fh.gz"; ha: "fh.ha"; hb: "fh.hb"; hc: "fh.hc"; hd: "fh.hd"; he: "fh.he"; hf: "fh.hf"; hg: "fh.hg"; hh: "fh.hh"; hi: "fh.hi"; hj: "fh.hj"; hk: "fh.hk"; hl: "fh.hl"; hm: "fh.hm"; hn: "fh.hn"; ho: "fh.ho"; hp: "fh.hp"; hq: "fh.hq"; hr: "fh.hr"; hs: "fh.hs"; ht: "fh.ht"; hu: "fh.hu"; hv: "fh.hv"; hw: "fh.hw"; hx: "fh.hx"; hy: "fh.hy"; hz: "fh.hz"; ia: "fh.ia"; ib: "fh.ib"; ic: "fh.ic"; id: "fh.id"; ie: "fh.ie"; if: "fh.if"; ig: "fh.ig"; ih: "fh.ih"; ii: "fh.ii"; ij: "fh.ij"; ik: "fh.ik"; il: "fh.il"; im: "fh.im"; in: "fh.in"; io: "fh.io"; ip: "fh.ip"; iq: "fh.iq"; ir: "fh.ir"; is: "fh.is"; it: "fh.it"; iu: "fh.iu"; iv: "fh.iv"; iw: "fh.iw"; ix: "fh.ix"; iy: "fh.iy"; iz: "fh.iz"; ja: "fh.ja"; jb: "fh.jb"; jc: "fh.jc"; jd: "fh.jd"; je: "fh.je"; jf: "fh.jf"; jg: "fh.jg"; jh: "fh.jh"; ji: "fh.ji"; jj: "fh.jj"; jk: "fh.jk"; jl: "fh.jl"; jm: "fh.jm"; jn: "fh.jn"; jo: "fh.jo"; jp: "fh.jp"; jq: "fh.jq"; jr: "fh.jr"; js: "fh.js"; jt: "fh.jt"; ju: "fh.ju"; jv: "fh.jv"; jw: "fh.jw"; jx: "fh.jx"; jy: "fh.jy"; jz: "fh.jz"; ka: "fh.ka"; kb: "fh.kb"; kc: "fh.kc"; kd: "fh.kd"; ke: "fh.ke"; kf: "fh.kf"; kg: "fh.kg"; kh: "fh.kh"; ki: "fh.ki"; kj: "fh.kj"; kk: "fh.kk"; kl: "fh.kl"; km: "fh.km"; kn: "fh.kn"; ko: "fh.ko"; kp: "fh.kp"; kq: "fh.kq"; kr: "fh.kr"; ks: "fh.ks"; kt: "fh.kt"; ku: "fh.ku"; kv: "fh.kv"; kw: "fh.kw"; kx: "fh.kx"; ky: "fh.ky"; kz: "fh.kz"; la: "fh.la"; lb: "fh.lb"; lc: "fh.lc"; ld: "fh.ld"; le: "fh.le"; lf: "fh.lf"; lg: "fh.lg"; lh: "fh.lh"; li: "fh.li"; lj: "fh.lj"; lk: "fh.lk"; ll: "fh.ll"; lm: "fh.lm"; ln: "fh.ln"; lo: "fh.lo"; lp: "fh.lp"; lq: "fh.lq"; lr: "fh.lr"; ls: "fh.ls"; lt: "fh.lt"; lu: "fh.lu"; lv: "fh.lv"; lw: "fh.lw"; lx: "fh.lx"; ly: "fh.ly"; lz: "fh.lz"; ma: "fh.ma"; mb: "fh.mb"; mc: "fh.mc"; md: "fh.md"; me: "fh.me"; mf: "fh.mf"; mg: "fh.mg"; mh: "fh.mh"; mi: "fh.mi"; mj: "fh.mj"; mk: "fh.mk"; ml: "fh.ml"; mm: "fh.mm"; mn: "fh.mn"; mo: "fh.mo"; mp: "fh.mp"; mq: "fh.mq"; mr: "fh.mr"; ms: "fh.ms"; mt: "fh.mt"; mu: "fh.mu"; mv: "fh.mv"; mw: "fh.mw"; mx: "fh.mx"; my: "fh.my"; mz: "fh.mz"; na: "fh.na"; nb: "fh.nb"; nc: "fh.nc"; nd: "fh.nd"; ne: "fh.ne"; nf: "fh.nf"; ng: "fh.ng"; nh: "fh.nh"; ni: "fh.ni"; nj: "fh.nj"; nk: "fh.nk"; nl: "fh.nl"; nm: "fh.nm"; nn: "fh.nn"; no: "fh.no"; np: "fh.np"; nq: "fh.nq"; nr: "fh.nr"; ns: "fh.ns"; nt: "fh.nt"; nu: "fh.nu"; nv: "fh.nv"; nw: "fh.nw"; nx: "fh.nx"; ny: "fh.ny"; nz: "fh.nz"; oa: "fh.oa"; ob: "fh.ob"; oc: "fh.oc"; od: "fh.od"; oe: "fh.oe"; of: "fh.of"; og: "fh.og"; oh: "fh.oh"; oi: "fh.oi"; oj: "fh.oj"; ok: "fh.ok"; ol: "fh.ol"; om: "fh.om"; on: "fh.on"; oo: "fh.oo"; op: "fh.op"; oq: "fh.oq"; or: "fh.or"; os: "fh.os"; ot: "fh.ot"; ou: "fh.ou"; ov: "fh.ov"; ow: "fh.ow"; ox: "fh.ox"; oy: "fh.oy"; oz: "fh.oz"; pa: "fh.pa"; pb: "fh.pb"; pc: "fh.pc"; pd: "fh.pd"; pe: "fh.pe"; pf: "fh.pf"; pg: "fh.pg"; ph: "fh.ph"; pi: "fh.pi"; pj: "fh.pj"; pk: "fh.pk"; pl: "fh.pl"; pm: "fh.pm"; pn: "fh.pn"; po: "fh.po"; pp: "fh.pp"; pq: "fh.pq"; pr: "fh.pr"; ps: "fh.ps"; pt: "fh.pt"; pu: "fh.pu"; pv: "fh.pv"; pw: "fh.pw"; px: "fh.px"; py: "fh.py"; pz: "fh.pz"; qa: "fh.qa"; qb: "fh.qb"; qc: "fh.qc"; qd: "fh.qd"; qe: "fh.qe"; qf: "fh.qf"; qg: "fh.qg"; qh: "fh.qh"; qi: "fh.qi"; qj: "fh.qj"; qk: "fh.qk"; ql: "fh.ql"; qm: "fh.qm"; qn: "fh.qn"; qo: "fh.qo"; qp: "fh.qp"; qq: "fh.qq"; qr: "fh.qr"; qs: "fh.qs"; qt: "fh.qt"; qu: "fh.qu"; qv: "fh.qv"; qw: "fh.qw"; qx: "fh.qx"; qy: "fh.qy"; qz: "fh.qz"; ra: "fh.ra"; rb: "fh.rb"; rc: "fh.rc"; rd: "fh.rd"; re: "fh.re"; rf: "fh.rf"; rg: "fh.rg"; rh: "fh.rh"; ri: "fh.ri"; rj: "fh.rj"; rk: "fh.rk"; rl: "fh.rl"; rm: "fh.rm"; rn: "fh.rn"; ro: "fh.ro"; rp: "fh.rp"; rq: "fh.rq"; rr: "fh.rr"; rs: "fh.rs"; rt: "fh.rt"; ru: "fh.ru"; rv: "fh.rv"; rw: "fh.rw"; rx: "fh.rx"; ry: "fh.ry"; rz: "fh.rz"; sa: "fh.sa"; sb: "fh.sb"; sc: "fh.sc"; sd: "fh.sd"; se: "fh.se"; sf: "fh.sf"; sg: "fh.sg"; sh: "fh.sh"; si: "fh.si"; sj: "fh.sj"; sk: "fh.sk"; sl: "fh.sl"; sm: "fh.sm"; sn: "fh.sn"; so: "fh.so"; sp: "fh.sp"; sq: "fh.sq"; sr: "fh.sr"; ss: "fh.ss"; st: "fh.st"; su: "fh.su"; sv: "fh.sv"; sw: "fh.sw"; sx: "fh.sx"; sy: "fh.sy"; sz: "fh.sz"; ta: "fh.ta"; tb: "fh.tb"; tc: "fh.tc"; td: "fh.td"; te: "fh.te"; tf: "fh.tf"; tg: "fh.tg"; th: "fh.th"; ti: "fh.ti"; tj: "fh.tj"; tk: "fh.tk"; tl: "fh.tl"; tm: "fh.tm"; tn: "fh.tn"; to: "fh.to"; tp: "fh.tp"; tq: "fh.tq"; tr: "fh.tr"; ts: "fh.ts"; tt: "fh.tt"; tu: "fh.tu"; tv: "fh.tv"; tw: "fh.tw"; tx: "fh.tx"; ty: "fh.ty"; tz: "fh.tz"; ua: "fh.ua"; ub: "fh.ub"; uc: "fh.uc"; ud: "fh.ud"; ue: "fh.ue"; uf: "fh.uf"; ug: "fh.ug"; uh: "fh.uh"; ui: "fh.ui"; uj: "fh.uj"; uk: "fh.uk"; ul: "fh.ul"; um: "fh.um"; un: "fh.un"; uo: "fh.uo"; up: "fh.up"; uq: "fh.uq"; ur: "fh.ur"; us: "fh.us"; ut: "fh.ut"; uu: "fh.uu"; uv: "fh.uv"; uw: "fh.uw"; ux: "fh.ux"; uy: "fh.uy"; uz: "fh.uz"; va: "fh.va"; vb: "fh.vb"; vc: "fh.vc"; vd: "fh.vd"; ve: "fh.ve"; vf: "fh.vf"; vg: "fh.vg"; vh: "fh.vh"; vi: "fh.vi"; vj: "fh.vj"; vk: "fh.vk"; vl: "fh.vl"; vm: "fh.vm"; vn: "fh.vn"; vo: "fh.vo"; vp: "fh.vp"; vq: "fh.vq"; vr: "fh.vr"; vs: "fh.vs"; vt: "fh.vt"; vu: "fh.vu"; vv: "fh.vv"; vw: "fh.vw"; vx: "fh.vx"; vy: "fh.vy"; vz: "fh.vz"; wa: "fh.wa"; wb: "fh.wb"; wc: "fh.wc"; wd: "fh.wd"; we: "fh.we"; wf: "fh.wf"; wg: "fh.wg"; wh: "fh.wh"; wi: "fh.wi"; wj: "fh.wj"; wk: "fh.wk"; wl: "fh.wl"; wm: "fh.wm"; wn: "fh.wn"; wo: "fh.wo"; wp: "fh.wp"; wq: "fh.wq"; wr: "fh.wr"; ws: "fh.ws"; wt: "fh.wt"; wu: "fh.wu"; wv: "fh.wv"; ww: "fh.ww"; wx: "fh.wx"; wy: "fh.wy"; wz: "fh.wz"; xa: "fh.xa"; xb: "fh.xb"; xc: "fh.xc"; xd: "fh.xd"; xe: "fh.xe"; xf: "fh.xf"; xg: "fh.xg"; xh: "fh.xh"; xi: "fh.xi"; xj: "fh.xj"; xk: "fh.xk"; xl: "fh.xl"; xm: "fh.xm"; xn: "fh.xn"; xo: "fh.xo"; xp: "fh.xp"; xq: "fh.xq"; xr: "fh.xr"; xs: "fh.xs"; xt: "fh.xt"; xu: "fh.xu"; xv: "fh.xv"; xw: "fh.xw"; xx: "fh.xx"; xy: "fh.xy"; xz: "fh.xz"; ya: "fh.ya"; yb: "fh.yb"; yc: "fh.yc"; yd: "fh.yd"; ye: "fh.ye"; yf: "fh.yf"; yg: "fh.yg"; yh: "fh.yh"; yi: "fh.yi"; yj: "fh.yj"; yk: "fh.yk"; yl: "fh.yl"; ym: "fh.ym"; yn: "fh.yn"; yo: "fh.yo"; yp: "fh.yp"; yq: "fh.yq"; yr: "fh.yr"; ys: "fh.ys"; yt: "fh.yt"; yu: "fh.yu"; yv: "fh.yv"; yw: "fh.yw"; yx: "fh.yx"; yy: "fh.yy"; yz: "fh.yz"; za: "fh.za"; zb: "fh.zb"; zc: "fh.zc"; zd: "fh.zd"; ze: "fh.ze"; zf: "fh.zf"; zg: "fh.zg"; zh: "fh.zh"; zi: "fh.zi"; zj: "fh.zj"; zk: "fh.zk"; zl: "fh.zl"; zm: "fh.zm"; zn: "fh.zn"; zo: "fh.zo"; zp: "fh.zp"; zq: "fh.zq"; zr: "fh.zr"; zs: "fh.zs"; zt: "fh.zt"; zu: "fh.zu"; zv: "fh.zv"; zw: "fh.zw"; zx: "fh.zx"; zy: "fh.zy"; zz: "fh.zz"; }; fi: { aa: "fi.aa"; ab: "fi.ab"; ac: "fi.ac"; ad: "fi.ad"; ae: "fi.ae"; af: "fi.af"; ag: "fi.ag"; ah: "fi.ah"; ai: "fi.ai"; aj: "fi.aj"; ak: "fi.ak"; al: "fi.al"; am: "fi.am"; an: "fi.an"; ao: "fi.ao"; ap: "fi.ap"; aq: "fi.aq"; ar: "fi.ar"; as: "fi.as"; at: "fi.at"; au: "fi.au"; av: "fi.av"; aw: "fi.aw"; ax: "fi.ax"; ay: "fi.ay"; az: "fi.az"; ba: "fi.ba"; bb: "fi.bb"; bc: "fi.bc"; bd: "fi.bd"; be: "fi.be"; bf: "fi.bf"; bg: "fi.bg"; bh: "fi.bh"; bi: "fi.bi"; bj: "fi.bj"; bk: "fi.bk"; bl: "fi.bl"; bm: "fi.bm"; bn: "fi.bn"; bo: "fi.bo"; bp: "fi.bp"; bq: "fi.bq"; br: "fi.br"; bs: "fi.bs"; bt: "fi.bt"; bu: "fi.bu"; bv: "fi.bv"; bw: "fi.bw"; bx: "fi.bx"; by: "fi.by"; bz: "fi.bz"; ca: "fi.ca"; cb: "fi.cb"; cc: "fi.cc"; cd: "fi.cd"; ce: "fi.ce"; cf: "fi.cf"; cg: "fi.cg"; ch: "fi.ch"; ci: "fi.ci"; cj: "fi.cj"; ck: "fi.ck"; cl: "fi.cl"; cm: "fi.cm"; cn: "fi.cn"; co: "fi.co"; cp: "fi.cp"; cq: "fi.cq"; cr: "fi.cr"; cs: "fi.cs"; ct: "fi.ct"; cu: "fi.cu"; cv: "fi.cv"; cw: "fi.cw"; cx: "fi.cx"; cy: "fi.cy"; cz: "fi.cz"; da: "fi.da"; db: "fi.db"; dc: "fi.dc"; dd: "fi.dd"; de: "fi.de"; df: "fi.df"; dg: "fi.dg"; dh: "fi.dh"; di: "fi.di"; dj: "fi.dj"; dk: "fi.dk"; dl: "fi.dl"; dm: "fi.dm"; dn: "fi.dn"; do: "fi.do"; dp: "fi.dp"; dq: "fi.dq"; dr: "fi.dr"; ds: "fi.ds"; dt: "fi.dt"; du: "fi.du"; dv: "fi.dv"; dw: "fi.dw"; dx: "fi.dx"; dy: "fi.dy"; dz: "fi.dz"; ea: "fi.ea"; eb: "fi.eb"; ec: "fi.ec"; ed: "fi.ed"; ee: "fi.ee"; ef: "fi.ef"; eg: "fi.eg"; eh: "fi.eh"; ei: "fi.ei"; ej: "fi.ej"; ek: "fi.ek"; el: "fi.el"; em: "fi.em"; en: "fi.en"; eo: "fi.eo"; ep: "fi.ep"; eq: "fi.eq"; er: "fi.er"; es: "fi.es"; et: "fi.et"; eu: "fi.eu"; ev: "fi.ev"; ew: "fi.ew"; ex: "fi.ex"; ey: "fi.ey"; ez: "fi.ez"; fa: "fi.fa"; fb: "fi.fb"; fc: "fi.fc"; fd: "fi.fd"; fe: "fi.fe"; ff: "fi.ff"; fg: "fi.fg"; fh: "fi.fh"; fi: "fi.fi"; fj: "fi.fj"; fk: "fi.fk"; fl: "fi.fl"; fm: "fi.fm"; fn: "fi.fn"; fo: "fi.fo"; fp: "fi.fp"; fq: "fi.fq"; fr: "fi.fr"; fs: "fi.fs"; ft: "fi.ft"; fu: "fi.fu"; fv: "fi.fv"; fw: "fi.fw"; fx: "fi.fx"; fy: "fi.fy"; fz: "fi.fz"; ga: "fi.ga"; gb: "fi.gb"; gc: "fi.gc"; gd: "fi.gd"; ge: "fi.ge"; gf: "fi.gf"; gg: "fi.gg"; gh: "fi.gh"; gi: "fi.gi"; gj: "fi.gj"; gk: "fi.gk"; gl: "fi.gl"; gm: "fi.gm"; gn: "fi.gn"; go: "fi.go"; gp: "fi.gp"; gq: "fi.gq"; gr: "fi.gr"; gs: "fi.gs"; gt: "fi.gt"; gu: "fi.gu"; gv: "fi.gv"; gw: "fi.gw"; gx: "fi.gx"; gy: "fi.gy"; gz: "fi.gz"; ha: "fi.ha"; hb: "fi.hb"; hc: "fi.hc"; hd: "fi.hd"; he: "fi.he"; hf: "fi.hf"; hg: "fi.hg"; hh: "fi.hh"; hi: "fi.hi"; hj: "fi.hj"; hk: "fi.hk"; hl: "fi.hl"; hm: "fi.hm"; hn: "fi.hn"; ho: "fi.ho"; hp: "fi.hp"; hq: "fi.hq"; hr: "fi.hr"; hs: "fi.hs"; ht: "fi.ht"; hu: "fi.hu"; hv: "fi.hv"; hw: "fi.hw"; hx: "fi.hx"; hy: "fi.hy"; hz: "fi.hz"; ia: "fi.ia"; ib: "fi.ib"; ic: "fi.ic"; id: "fi.id"; ie: "fi.ie"; if: "fi.if"; ig: "fi.ig"; ih: "fi.ih"; ii: "fi.ii"; ij: "fi.ij"; ik: "fi.ik"; il: "fi.il"; im: "fi.im"; in: "fi.in"; io: "fi.io"; ip: "fi.ip"; iq: "fi.iq"; ir: "fi.ir"; is: "fi.is"; it: "fi.it"; iu: "fi.iu"; iv: "fi.iv"; iw: "fi.iw"; ix: "fi.ix"; iy: "fi.iy"; iz: "fi.iz"; ja: "fi.ja"; jb: "fi.jb"; jc: "fi.jc"; jd: "fi.jd"; je: "fi.je"; jf: "fi.jf"; jg: "fi.jg"; jh: "fi.jh"; ji: "fi.ji"; jj: "fi.jj"; jk: "fi.jk"; jl: "fi.jl"; jm: "fi.jm"; jn: "fi.jn"; jo: "fi.jo"; jp: "fi.jp"; jq: "fi.jq"; jr: "fi.jr"; js: "fi.js"; jt: "fi.jt"; ju: "fi.ju"; jv: "fi.jv"; jw: "fi.jw"; jx: "fi.jx"; jy: "fi.jy"; jz: "fi.jz"; ka: "fi.ka"; kb: "fi.kb"; kc: "fi.kc"; kd: "fi.kd"; ke: "fi.ke"; kf: "fi.kf"; kg: "fi.kg"; kh: "fi.kh"; ki: "fi.ki"; kj: "fi.kj"; kk: "fi.kk"; kl: "fi.kl"; km: "fi.km"; kn: "fi.kn"; ko: "fi.ko"; kp: "fi.kp"; kq: "fi.kq"; kr: "fi.kr"; ks: "fi.ks"; kt: "fi.kt"; ku: "fi.ku"; kv: "fi.kv"; kw: "fi.kw"; kx: "fi.kx"; ky: "fi.ky"; kz: "fi.kz"; la: "fi.la"; lb: "fi.lb"; lc: "fi.lc"; ld: "fi.ld"; le: "fi.le"; lf: "fi.lf"; lg: "fi.lg"; lh: "fi.lh"; li: "fi.li"; lj: "fi.lj"; lk: "fi.lk"; ll: "fi.ll"; lm: "fi.lm"; ln: "fi.ln"; lo: "fi.lo"; lp: "fi.lp"; lq: "fi.lq"; lr: "fi.lr"; ls: "fi.ls"; lt: "fi.lt"; lu: "fi.lu"; lv: "fi.lv"; lw: "fi.lw"; lx: "fi.lx"; ly: "fi.ly"; lz: "fi.lz"; ma: "fi.ma"; mb: "fi.mb"; mc: "fi.mc"; md: "fi.md"; me: "fi.me"; mf: "fi.mf"; mg: "fi.mg"; mh: "fi.mh"; mi: "fi.mi"; mj: "fi.mj"; mk: "fi.mk"; ml: "fi.ml"; mm: "fi.mm"; mn: "fi.mn"; mo: "fi.mo"; mp: "fi.mp"; mq: "fi.mq"; mr: "fi.mr"; ms: "fi.ms"; mt: "fi.mt"; mu: "fi.mu"; mv: "fi.mv"; mw: "fi.mw"; mx: "fi.mx"; my: "fi.my"; mz: "fi.mz"; na: "fi.na"; nb: "fi.nb"; nc: "fi.nc"; nd: "fi.nd"; ne: "fi.ne"; nf: "fi.nf"; ng: "fi.ng"; nh: "fi.nh"; ni: "fi.ni"; nj: "fi.nj"; nk: "fi.nk"; nl: "fi.nl"; nm: "fi.nm"; nn: "fi.nn"; no: "fi.no"; np: "fi.np"; nq: "fi.nq"; nr: "fi.nr"; ns: "fi.ns"; nt: "fi.nt"; nu: "fi.nu"; nv: "fi.nv"; nw: "fi.nw"; nx: "fi.nx"; ny: "fi.ny"; nz: "fi.nz"; oa: "fi.oa"; ob: "fi.ob"; oc: "fi.oc"; od: "fi.od"; oe: "fi.oe"; of: "fi.of"; og: "fi.og"; oh: "fi.oh"; oi: "fi.oi"; oj: "fi.oj"; ok: "fi.ok"; ol: "fi.ol"; om: "fi.om"; on: "fi.on"; oo: "fi.oo"; op: "fi.op"; oq: "fi.oq"; or: "fi.or"; os: "fi.os"; ot: "fi.ot"; ou: "fi.ou"; ov: "fi.ov"; ow: "fi.ow"; ox: "fi.ox"; oy: "fi.oy"; oz: "fi.oz"; pa: "fi.pa"; pb: "fi.pb"; pc: "fi.pc"; pd: "fi.pd"; pe: "fi.pe"; pf: "fi.pf"; pg: "fi.pg"; ph: "fi.ph"; pi: "fi.pi"; pj: "fi.pj"; pk: "fi.pk"; pl: "fi.pl"; pm: "fi.pm"; pn: "fi.pn"; po: "fi.po"; pp: "fi.pp"; pq: "fi.pq"; pr: "fi.pr"; ps: "fi.ps"; pt: "fi.pt"; pu: "fi.pu"; pv: "fi.pv"; pw: "fi.pw"; px: "fi.px"; py: "fi.py"; pz: "fi.pz"; qa: "fi.qa"; qb: "fi.qb"; qc: "fi.qc"; qd: "fi.qd"; qe: "fi.qe"; qf: "fi.qf"; qg: "fi.qg"; qh: "fi.qh"; qi: "fi.qi"; qj: "fi.qj"; qk: "fi.qk"; ql: "fi.ql"; qm: "fi.qm"; qn: "fi.qn"; qo: "fi.qo"; qp: "fi.qp"; qq: "fi.qq"; qr: "fi.qr"; qs: "fi.qs"; qt: "fi.qt"; qu: "fi.qu"; qv: "fi.qv"; qw: "fi.qw"; qx: "fi.qx"; qy: "fi.qy"; qz: "fi.qz"; ra: "fi.ra"; rb: "fi.rb"; rc: "fi.rc"; rd: "fi.rd"; re: "fi.re"; rf: "fi.rf"; rg: "fi.rg"; rh: "fi.rh"; ri: "fi.ri"; rj: "fi.rj"; rk: "fi.rk"; rl: "fi.rl"; rm: "fi.rm"; rn: "fi.rn"; ro: "fi.ro"; rp: "fi.rp"; rq: "fi.rq"; rr: "fi.rr"; rs: "fi.rs"; rt: "fi.rt"; ru: "fi.ru"; rv: "fi.rv"; rw: "fi.rw"; rx: "fi.rx"; ry: "fi.ry"; rz: "fi.rz"; sa: "fi.sa"; sb: "fi.sb"; sc: "fi.sc"; sd: "fi.sd"; se: "fi.se"; sf: "fi.sf"; sg: "fi.sg"; sh: "fi.sh"; si: "fi.si"; sj: "fi.sj"; sk: "fi.sk"; sl: "fi.sl"; sm: "fi.sm"; sn: "fi.sn"; so: "fi.so"; sp: "fi.sp"; sq: "fi.sq"; sr: "fi.sr"; ss: "fi.ss"; st: "fi.st"; su: "fi.su"; sv: "fi.sv"; sw: "fi.sw"; sx: "fi.sx"; sy: "fi.sy"; sz: "fi.sz"; ta: "fi.ta"; tb: "fi.tb"; tc: "fi.tc"; td: "fi.td"; te: "fi.te"; tf: "fi.tf"; tg: "fi.tg"; th: "fi.th"; ti: "fi.ti"; tj: "fi.tj"; tk: "fi.tk"; tl: "fi.tl"; tm: "fi.tm"; tn: "fi.tn"; to: "fi.to"; tp: "fi.tp"; tq: "fi.tq"; tr: "fi.tr"; ts: "fi.ts"; tt: "fi.tt"; tu: "fi.tu"; tv: "fi.tv"; tw: "fi.tw"; tx: "fi.tx"; ty: "fi.ty"; tz: "fi.tz"; ua: "fi.ua"; ub: "fi.ub"; uc: "fi.uc"; ud: "fi.ud"; ue: "fi.ue"; uf: "fi.uf"; ug: "fi.ug"; uh: "fi.uh"; ui: "fi.ui"; uj: "fi.uj"; uk: "fi.uk"; ul: "fi.ul"; um: "fi.um"; un: "fi.un"; uo: "fi.uo"; up: "fi.up"; uq: "fi.uq"; ur: "fi.ur"; us: "fi.us"; ut: "fi.ut"; uu: "fi.uu"; uv: "fi.uv"; uw: "fi.uw"; ux: "fi.ux"; uy: "fi.uy"; uz: "fi.uz"; va: "fi.va"; vb: "fi.vb"; vc: "fi.vc"; vd: "fi.vd"; ve: "fi.ve"; vf: "fi.vf"; vg: "fi.vg"; vh: "fi.vh"; vi: "fi.vi"; vj: "fi.vj"; vk: "fi.vk"; vl: "fi.vl"; vm: "fi.vm"; vn: "fi.vn"; vo: "fi.vo"; vp: "fi.vp"; vq: "fi.vq"; vr: "fi.vr"; vs: "fi.vs"; vt: "fi.vt"; vu: "fi.vu"; vv: "fi.vv"; vw: "fi.vw"; vx: "fi.vx"; vy: "fi.vy"; vz: "fi.vz"; wa: "fi.wa"; wb: "fi.wb"; wc: "fi.wc"; wd: "fi.wd"; we: "fi.we"; wf: "fi.wf"; wg: "fi.wg"; wh: "fi.wh"; wi: "fi.wi"; wj: "fi.wj"; wk: "fi.wk"; wl: "fi.wl"; wm: "fi.wm"; wn: "fi.wn"; wo: "fi.wo"; wp: "fi.wp"; wq: "fi.wq"; wr: "fi.wr"; ws: "fi.ws"; wt: "fi.wt"; wu: "fi.wu"; wv: "fi.wv"; ww: "fi.ww"; wx: "fi.wx"; wy: "fi.wy"; wz: "fi.wz"; xa: "fi.xa"; xb: "fi.xb"; xc: "fi.xc"; xd: "fi.xd"; xe: "fi.xe"; xf: "fi.xf"; xg: "fi.xg"; xh: "fi.xh"; xi: "fi.xi"; xj: "fi.xj"; xk: "fi.xk"; xl: "fi.xl"; xm: "fi.xm"; xn: "fi.xn"; xo: "fi.xo"; xp: "fi.xp"; xq: "fi.xq"; xr: "fi.xr"; xs: "fi.xs"; xt: "fi.xt"; xu: "fi.xu"; xv: "fi.xv"; xw: "fi.xw"; xx: "fi.xx"; xy: "fi.xy"; xz: "fi.xz"; ya: "fi.ya"; yb: "fi.yb"; yc: "fi.yc"; yd: "fi.yd"; ye: "fi.ye"; yf: "fi.yf"; yg: "fi.yg"; yh: "fi.yh"; yi: "fi.yi"; yj: "fi.yj"; yk: "fi.yk"; yl: "fi.yl"; ym: "fi.ym"; yn: "fi.yn"; yo: "fi.yo"; yp: "fi.yp"; yq: "fi.yq"; yr: "fi.yr"; ys: "fi.ys"; yt: "fi.yt"; yu: "fi.yu"; yv: "fi.yv"; yw: "fi.yw"; yx: "fi.yx"; yy: "fi.yy"; yz: "fi.yz"; za: "fi.za"; zb: "fi.zb"; zc: "fi.zc"; zd: "fi.zd"; ze: "fi.ze"; zf: "fi.zf"; zg: "fi.zg"; zh: "fi.zh"; zi: "fi.zi"; zj: "fi.zj"; zk: "fi.zk"; zl: "fi.zl"; zm: "fi.zm"; zn: "fi.zn"; zo: "fi.zo"; zp: "fi.zp"; zq: "fi.zq"; zr: "fi.zr"; zs: "fi.zs"; zt: "fi.zt"; zu: "fi.zu"; zv: "fi.zv"; zw: "fi.zw"; zx: "fi.zx"; zy: "fi.zy"; zz: "fi.zz"; }; fj: { aa: "fj.aa"; ab: "fj.ab"; ac: "fj.ac"; ad: "fj.ad"; ae: "fj.ae"; af: "fj.af"; ag: "fj.ag"; ah: "fj.ah"; ai: "fj.ai"; aj: "fj.aj"; ak: "fj.ak"; al: "fj.al"; am: "fj.am"; an: "fj.an"; ao: "fj.ao"; ap: "fj.ap"; aq: "fj.aq"; ar: "fj.ar"; as: "fj.as"; at: "fj.at"; au: "fj.au"; av: "fj.av"; aw: "fj.aw"; ax: "fj.ax"; ay: "fj.ay"; az: "fj.az"; ba: "fj.ba"; bb: "fj.bb"; bc: "fj.bc"; bd: "fj.bd"; be: "fj.be"; bf: "fj.bf"; bg: "fj.bg"; bh: "fj.bh"; bi: "fj.bi"; bj: "fj.bj"; bk: "fj.bk"; bl: "fj.bl"; bm: "fj.bm"; bn: "fj.bn"; bo: "fj.bo"; bp: "fj.bp"; bq: "fj.bq"; br: "fj.br"; bs: "fj.bs"; bt: "fj.bt"; bu: "fj.bu"; bv: "fj.bv"; bw: "fj.bw"; bx: "fj.bx"; by: "fj.by"; bz: "fj.bz"; ca: "fj.ca"; cb: "fj.cb"; cc: "fj.cc"; cd: "fj.cd"; ce: "fj.ce"; cf: "fj.cf"; cg: "fj.cg"; ch: "fj.ch"; ci: "fj.ci"; cj: "fj.cj"; ck: "fj.ck"; cl: "fj.cl"; cm: "fj.cm"; cn: "fj.cn"; co: "fj.co"; cp: "fj.cp"; cq: "fj.cq"; cr: "fj.cr"; cs: "fj.cs"; ct: "fj.ct"; cu: "fj.cu"; cv: "fj.cv"; cw: "fj.cw"; cx: "fj.cx"; cy: "fj.cy"; cz: "fj.cz"; da: "fj.da"; db: "fj.db"; dc: "fj.dc"; dd: "fj.dd"; de: "fj.de"; df: "fj.df"; dg: "fj.dg"; dh: "fj.dh"; di: "fj.di"; dj: "fj.dj"; dk: "fj.dk"; dl: "fj.dl"; dm: "fj.dm"; dn: "fj.dn"; do: "fj.do"; dp: "fj.dp"; dq: "fj.dq"; dr: "fj.dr"; ds: "fj.ds"; dt: "fj.dt"; du: "fj.du"; dv: "fj.dv"; dw: "fj.dw"; dx: "fj.dx"; dy: "fj.dy"; dz: "fj.dz"; ea: "fj.ea"; eb: "fj.eb"; ec: "fj.ec"; ed: "fj.ed"; ee: "fj.ee"; ef: "fj.ef"; eg: "fj.eg"; eh: "fj.eh"; ei: "fj.ei"; ej: "fj.ej"; ek: "fj.ek"; el: "fj.el"; em: "fj.em"; en: "fj.en"; eo: "fj.eo"; ep: "fj.ep"; eq: "fj.eq"; er: "fj.er"; es: "fj.es"; et: "fj.et"; eu: "fj.eu"; ev: "fj.ev"; ew: "fj.ew"; ex: "fj.ex"; ey: "fj.ey"; ez: "fj.ez"; fa: "fj.fa"; fb: "fj.fb"; fc: "fj.fc"; fd: "fj.fd"; fe: "fj.fe"; ff: "fj.ff"; fg: "fj.fg"; fh: "fj.fh"; fi: "fj.fi"; fj: "fj.fj"; fk: "fj.fk"; fl: "fj.fl"; fm: "fj.fm"; fn: "fj.fn"; fo: "fj.fo"; fp: "fj.fp"; fq: "fj.fq"; fr: "fj.fr"; fs: "fj.fs"; ft: "fj.ft"; fu: "fj.fu"; fv: "fj.fv"; fw: "fj.fw"; fx: "fj.fx"; fy: "fj.fy"; fz: "fj.fz"; ga: "fj.ga"; gb: "fj.gb"; gc: "fj.gc"; gd: "fj.gd"; ge: "fj.ge"; gf: "fj.gf"; gg: "fj.gg"; gh: "fj.gh"; gi: "fj.gi"; gj: "fj.gj"; gk: "fj.gk"; gl: "fj.gl"; gm: "fj.gm"; gn: "fj.gn"; go: "fj.go"; gp: "fj.gp"; gq: "fj.gq"; gr: "fj.gr"; gs: "fj.gs"; gt: "fj.gt"; gu: "fj.gu"; gv: "fj.gv"; gw: "fj.gw"; gx: "fj.gx"; gy: "fj.gy"; gz: "fj.gz"; ha: "fj.ha"; hb: "fj.hb"; hc: "fj.hc"; hd: "fj.hd"; he: "fj.he"; hf: "fj.hf"; hg: "fj.hg"; hh: "fj.hh"; hi: "fj.hi"; hj: "fj.hj"; hk: "fj.hk"; hl: "fj.hl"; hm: "fj.hm"; hn: "fj.hn"; ho: "fj.ho"; hp: "fj.hp"; hq: "fj.hq"; hr: "fj.hr"; hs: "fj.hs"; ht: "fj.ht"; hu: "fj.hu"; hv: "fj.hv"; hw: "fj.hw"; hx: "fj.hx"; hy: "fj.hy"; hz: "fj.hz"; ia: "fj.ia"; ib: "fj.ib"; ic: "fj.ic"; id: "fj.id"; ie: "fj.ie"; if: "fj.if"; ig: "fj.ig"; ih: "fj.ih"; ii: "fj.ii"; ij: "fj.ij"; ik: "fj.ik"; il: "fj.il"; im: "fj.im"; in: "fj.in"; io: "fj.io"; ip: "fj.ip"; iq: "fj.iq"; ir: "fj.ir"; is: "fj.is"; it: "fj.it"; iu: "fj.iu"; iv: "fj.iv"; iw: "fj.iw"; ix: "fj.ix"; iy: "fj.iy"; iz: "fj.iz"; ja: "fj.ja"; jb: "fj.jb"; jc: "fj.jc"; jd: "fj.jd"; je: "fj.je"; jf: "fj.jf"; jg: "fj.jg"; jh: "fj.jh"; ji: "fj.ji"; jj: "fj.jj"; jk: "fj.jk"; jl: "fj.jl"; jm: "fj.jm"; jn: "fj.jn"; jo: "fj.jo"; jp: "fj.jp"; jq: "fj.jq"; jr: "fj.jr"; js: "fj.js"; jt: "fj.jt"; ju: "fj.ju"; jv: "fj.jv"; jw: "fj.jw"; jx: "fj.jx"; jy: "fj.jy"; jz: "fj.jz"; ka: "fj.ka"; kb: "fj.kb"; kc: "fj.kc"; kd: "fj.kd"; ke: "fj.ke"; kf: "fj.kf"; kg: "fj.kg"; kh: "fj.kh"; ki: "fj.ki"; kj: "fj.kj"; kk: "fj.kk"; kl: "fj.kl"; km: "fj.km"; kn: "fj.kn"; ko: "fj.ko"; kp: "fj.kp"; kq: "fj.kq"; kr: "fj.kr"; ks: "fj.ks"; kt: "fj.kt"; ku: "fj.ku"; kv: "fj.kv"; kw: "fj.kw"; kx: "fj.kx"; ky: "fj.ky"; kz: "fj.kz"; la: "fj.la"; lb: "fj.lb"; lc: "fj.lc"; ld: "fj.ld"; le: "fj.le"; lf: "fj.lf"; lg: "fj.lg"; lh: "fj.lh"; li: "fj.li"; lj: "fj.lj"; lk: "fj.lk"; ll: "fj.ll"; lm: "fj.lm"; ln: "fj.ln"; lo: "fj.lo"; lp: "fj.lp"; lq: "fj.lq"; lr: "fj.lr"; ls: "fj.ls"; lt: "fj.lt"; lu: "fj.lu"; lv: "fj.lv"; lw: "fj.lw"; lx: "fj.lx"; ly: "fj.ly"; lz: "fj.lz"; ma: "fj.ma"; mb: "fj.mb"; mc: "fj.mc"; md: "fj.md"; me: "fj.me"; mf: "fj.mf"; mg: "fj.mg"; mh: "fj.mh"; mi: "fj.mi"; mj: "fj.mj"; mk: "fj.mk"; ml: "fj.ml"; mm: "fj.mm"; mn: "fj.mn"; mo: "fj.mo"; mp: "fj.mp"; mq: "fj.mq"; mr: "fj.mr"; ms: "fj.ms"; mt: "fj.mt"; mu: "fj.mu"; mv: "fj.mv"; mw: "fj.mw"; mx: "fj.mx"; my: "fj.my"; mz: "fj.mz"; na: "fj.na"; nb: "fj.nb"; nc: "fj.nc"; nd: "fj.nd"; ne: "fj.ne"; nf: "fj.nf"; ng: "fj.ng"; nh: "fj.nh"; ni: "fj.ni"; nj: "fj.nj"; nk: "fj.nk"; nl: "fj.nl"; nm: "fj.nm"; nn: "fj.nn"; no: "fj.no"; np: "fj.np"; nq: "fj.nq"; nr: "fj.nr"; ns: "fj.ns"; nt: "fj.nt"; nu: "fj.nu"; nv: "fj.nv"; nw: "fj.nw"; nx: "fj.nx"; ny: "fj.ny"; nz: "fj.nz"; oa: "fj.oa"; ob: "fj.ob"; oc: "fj.oc"; od: "fj.od"; oe: "fj.oe"; of: "fj.of"; og: "fj.og"; oh: "fj.oh"; oi: "fj.oi"; oj: "fj.oj"; ok: "fj.ok"; ol: "fj.ol"; om: "fj.om"; on: "fj.on"; oo: "fj.oo"; op: "fj.op"; oq: "fj.oq"; or: "fj.or"; os: "fj.os"; ot: "fj.ot"; ou: "fj.ou"; ov: "fj.ov"; ow: "fj.ow"; ox: "fj.ox"; oy: "fj.oy"; oz: "fj.oz"; pa: "fj.pa"; pb: "fj.pb"; pc: "fj.pc"; pd: "fj.pd"; pe: "fj.pe"; pf: "fj.pf"; pg: "fj.pg"; ph: "fj.ph"; pi: "fj.pi"; pj: "fj.pj"; pk: "fj.pk"; pl: "fj.pl"; pm: "fj.pm"; pn: "fj.pn"; po: "fj.po"; pp: "fj.pp"; pq: "fj.pq"; pr: "fj.pr"; ps: "fj.ps"; pt: "fj.pt"; pu: "fj.pu"; pv: "fj.pv"; pw: "fj.pw"; px: "fj.px"; py: "fj.py"; pz: "fj.pz"; qa: "fj.qa"; qb: "fj.qb"; qc: "fj.qc"; qd: "fj.qd"; qe: "fj.qe"; qf: "fj.qf"; qg: "fj.qg"; qh: "fj.qh"; qi: "fj.qi"; qj: "fj.qj"; qk: "fj.qk"; ql: "fj.ql"; qm: "fj.qm"; qn: "fj.qn"; qo: "fj.qo"; qp: "fj.qp"; qq: "fj.qq"; qr: "fj.qr"; qs: "fj.qs"; qt: "fj.qt"; qu: "fj.qu"; qv: "fj.qv"; qw: "fj.qw"; qx: "fj.qx"; qy: "fj.qy"; qz: "fj.qz"; ra: "fj.ra"; rb: "fj.rb"; rc: "fj.rc"; rd: "fj.rd"; re: "fj.re"; rf: "fj.rf"; rg: "fj.rg"; rh: "fj.rh"; ri: "fj.ri"; rj: "fj.rj"; rk: "fj.rk"; rl: "fj.rl"; rm: "fj.rm"; rn: "fj.rn"; ro: "fj.ro"; rp: "fj.rp"; rq: "fj.rq"; rr: "fj.rr"; rs: "fj.rs"; rt: "fj.rt"; ru: "fj.ru"; rv: "fj.rv"; rw: "fj.rw"; rx: "fj.rx"; ry: "fj.ry"; rz: "fj.rz"; sa: "fj.sa"; sb: "fj.sb"; sc: "fj.sc"; sd: "fj.sd"; se: "fj.se"; sf: "fj.sf"; sg: "fj.sg"; sh: "fj.sh"; si: "fj.si"; sj: "fj.sj"; sk: "fj.sk"; sl: "fj.sl"; sm: "fj.sm"; sn: "fj.sn"; so: "fj.so"; sp: "fj.sp"; sq: "fj.sq"; sr: "fj.sr"; ss: "fj.ss"; st: "fj.st"; su: "fj.su"; sv: "fj.sv"; sw: "fj.sw"; sx: "fj.sx"; sy: "fj.sy"; sz: "fj.sz"; ta: "fj.ta"; tb: "fj.tb"; tc: "fj.tc"; td: "fj.td"; te: "fj.te"; tf: "fj.tf"; tg: "fj.tg"; th: "fj.th"; ti: "fj.ti"; tj: "fj.tj"; tk: "fj.tk"; tl: "fj.tl"; tm: "fj.tm"; tn: "fj.tn"; to: "fj.to"; tp: "fj.tp"; tq: "fj.tq"; tr: "fj.tr"; ts: "fj.ts"; tt: "fj.tt"; tu: "fj.tu"; tv: "fj.tv"; tw: "fj.tw"; tx: "fj.tx"; ty: "fj.ty"; tz: "fj.tz"; ua: "fj.ua"; ub: "fj.ub"; uc: "fj.uc"; ud: "fj.ud"; ue: "fj.ue"; uf: "fj.uf"; ug: "fj.ug"; uh: "fj.uh"; ui: "fj.ui"; uj: "fj.uj"; uk: "fj.uk"; ul: "fj.ul"; um: "fj.um"; un: "fj.un"; uo: "fj.uo"; up: "fj.up"; uq: "fj.uq"; ur: "fj.ur"; us: "fj.us"; ut: "fj.ut"; uu: "fj.uu"; uv: "fj.uv"; uw: "fj.uw"; ux: "fj.ux"; uy: "fj.uy"; uz: "fj.uz"; va: "fj.va"; vb: "fj.vb"; vc: "fj.vc"; vd: "fj.vd"; ve: "fj.ve"; vf: "fj.vf"; vg: "fj.vg"; vh: "fj.vh"; vi: "fj.vi"; vj: "fj.vj"; vk: "fj.vk"; vl: "fj.vl"; vm: "fj.vm"; vn: "fj.vn"; vo: "fj.vo"; vp: "fj.vp"; vq: "fj.vq"; vr: "fj.vr"; vs: "fj.vs"; vt: "fj.vt"; vu: "fj.vu"; vv: "fj.vv"; vw: "fj.vw"; vx: "fj.vx"; vy: "fj.vy"; vz: "fj.vz"; wa: "fj.wa"; wb: "fj.wb"; wc: "fj.wc"; wd: "fj.wd"; we: "fj.we"; wf: "fj.wf"; wg: "fj.wg"; wh: "fj.wh"; wi: "fj.wi"; wj: "fj.wj"; wk: "fj.wk"; wl: "fj.wl"; wm: "fj.wm"; wn: "fj.wn"; wo: "fj.wo"; wp: "fj.wp"; wq: "fj.wq"; wr: "fj.wr"; ws: "fj.ws"; wt: "fj.wt"; wu: "fj.wu"; wv: "fj.wv"; ww: "fj.ww"; wx: "fj.wx"; wy: "fj.wy"; wz: "fj.wz"; xa: "fj.xa"; xb: "fj.xb"; xc: "fj.xc"; xd: "fj.xd"; xe: "fj.xe"; xf: "fj.xf"; xg: "fj.xg"; xh: "fj.xh"; xi: "fj.xi"; xj: "fj.xj"; xk: "fj.xk"; xl: "fj.xl"; xm: "fj.xm"; xn: "fj.xn"; xo: "fj.xo"; xp: "fj.xp"; xq: "fj.xq"; xr: "fj.xr"; xs: "fj.xs"; xt: "fj.xt"; xu: "fj.xu"; xv: "fj.xv"; xw: "fj.xw"; xx: "fj.xx"; xy: "fj.xy"; xz: "fj.xz"; ya: "fj.ya"; yb: "fj.yb"; yc: "fj.yc"; yd: "fj.yd"; ye: "fj.ye"; yf: "fj.yf"; yg: "fj.yg"; yh: "fj.yh"; yi: "fj.yi"; yj: "fj.yj"; yk: "fj.yk"; yl: "fj.yl"; ym: "fj.ym"; yn: "fj.yn"; yo: "fj.yo"; yp: "fj.yp"; yq: "fj.yq"; yr: "fj.yr"; ys: "fj.ys"; yt: "fj.yt"; yu: "fj.yu"; yv: "fj.yv"; yw: "fj.yw"; yx: "fj.yx"; yy: "fj.yy"; yz: "fj.yz"; za: "fj.za"; zb: "fj.zb"; zc: "fj.zc"; zd: "fj.zd"; ze: "fj.ze"; zf: "fj.zf"; zg: "fj.zg"; zh: "fj.zh"; zi: "fj.zi"; zj: "fj.zj"; zk: "fj.zk"; zl: "fj.zl"; zm: "fj.zm"; zn: "fj.zn"; zo: "fj.zo"; zp: "fj.zp"; zq: "fj.zq"; zr: "fj.zr"; zs: "fj.zs"; zt: "fj.zt"; zu: "fj.zu"; zv: "fj.zv"; zw: "fj.zw"; zx: "fj.zx"; zy: "fj.zy"; zz: "fj.zz"; }; fk: { aa: "fk.aa"; ab: "fk.ab"; ac: "fk.ac"; ad: "fk.ad"; ae: "fk.ae"; af: "fk.af"; ag: "fk.ag"; ah: "fk.ah"; ai: "fk.ai"; aj: "fk.aj"; ak: "fk.ak"; al: "fk.al"; am: "fk.am"; an: "fk.an"; ao: "fk.ao"; ap: "fk.ap"; aq: "fk.aq"; ar: "fk.ar"; as: "fk.as"; at: "fk.at"; au: "fk.au"; av: "fk.av"; aw: "fk.aw"; ax: "fk.ax"; ay: "fk.ay"; az: "fk.az"; ba: "fk.ba"; bb: "fk.bb"; bc: "fk.bc"; bd: "fk.bd"; be: "fk.be"; bf: "fk.bf"; bg: "fk.bg"; bh: "fk.bh"; bi: "fk.bi"; bj: "fk.bj"; bk: "fk.bk"; bl: "fk.bl"; bm: "fk.bm"; bn: "fk.bn"; bo: "fk.bo"; bp: "fk.bp"; bq: "fk.bq"; br: "fk.br"; bs: "fk.bs"; bt: "fk.bt"; bu: "fk.bu"; bv: "fk.bv"; bw: "fk.bw"; bx: "fk.bx"; by: "fk.by"; bz: "fk.bz"; ca: "fk.ca"; cb: "fk.cb"; cc: "fk.cc"; cd: "fk.cd"; ce: "fk.ce"; cf: "fk.cf"; cg: "fk.cg"; ch: "fk.ch"; ci: "fk.ci"; cj: "fk.cj"; ck: "fk.ck"; cl: "fk.cl"; cm: "fk.cm"; cn: "fk.cn"; co: "fk.co"; cp: "fk.cp"; cq: "fk.cq"; cr: "fk.cr"; cs: "fk.cs"; ct: "fk.ct"; cu: "fk.cu"; cv: "fk.cv"; cw: "fk.cw"; cx: "fk.cx"; cy: "fk.cy"; cz: "fk.cz"; da: "fk.da"; db: "fk.db"; dc: "fk.dc"; dd: "fk.dd"; de: "fk.de"; df: "fk.df"; dg: "fk.dg"; dh: "fk.dh"; di: "fk.di"; dj: "fk.dj"; dk: "fk.dk"; dl: "fk.dl"; dm: "fk.dm"; dn: "fk.dn"; do: "fk.do"; dp: "fk.dp"; dq: "fk.dq"; dr: "fk.dr"; ds: "fk.ds"; dt: "fk.dt"; du: "fk.du"; dv: "fk.dv"; dw: "fk.dw"; dx: "fk.dx"; dy: "fk.dy"; dz: "fk.dz"; ea: "fk.ea"; eb: "fk.eb"; ec: "fk.ec"; ed: "fk.ed"; ee: "fk.ee"; ef: "fk.ef"; eg: "fk.eg"; eh: "fk.eh"; ei: "fk.ei"; ej: "fk.ej"; ek: "fk.ek"; el: "fk.el"; em: "fk.em"; en: "fk.en"; eo: "fk.eo"; ep: "fk.ep"; eq: "fk.eq"; er: "fk.er"; es: "fk.es"; et: "fk.et"; eu: "fk.eu"; ev: "fk.ev"; ew: "fk.ew"; ex: "fk.ex"; ey: "fk.ey"; ez: "fk.ez"; fa: "fk.fa"; fb: "fk.fb"; fc: "fk.fc"; fd: "fk.fd"; fe: "fk.fe"; ff: "fk.ff"; fg: "fk.fg"; fh: "fk.fh"; fi: "fk.fi"; fj: "fk.fj"; fk: "fk.fk"; fl: "fk.fl"; fm: "fk.fm"; fn: "fk.fn"; fo: "fk.fo"; fp: "fk.fp"; fq: "fk.fq"; fr: "fk.fr"; fs: "fk.fs"; ft: "fk.ft"; fu: "fk.fu"; fv: "fk.fv"; fw: "fk.fw"; fx: "fk.fx"; fy: "fk.fy"; fz: "fk.fz"; ga: "fk.ga"; gb: "fk.gb"; gc: "fk.gc"; gd: "fk.gd"; ge: "fk.ge"; gf: "fk.gf"; gg: "fk.gg"; gh: "fk.gh"; gi: "fk.gi"; gj: "fk.gj"; gk: "fk.gk"; gl: "fk.gl"; gm: "fk.gm"; gn: "fk.gn"; go: "fk.go"; gp: "fk.gp"; gq: "fk.gq"; gr: "fk.gr"; gs: "fk.gs"; gt: "fk.gt"; gu: "fk.gu"; gv: "fk.gv"; gw: "fk.gw"; gx: "fk.gx"; gy: "fk.gy"; gz: "fk.gz"; ha: "fk.ha"; hb: "fk.hb"; hc: "fk.hc"; hd: "fk.hd"; he: "fk.he"; hf: "fk.hf"; hg: "fk.hg"; hh: "fk.hh"; hi: "fk.hi"; hj: "fk.hj"; hk: "fk.hk"; hl: "fk.hl"; hm: "fk.hm"; hn: "fk.hn"; ho: "fk.ho"; hp: "fk.hp"; hq: "fk.hq"; hr: "fk.hr"; hs: "fk.hs"; ht: "fk.ht"; hu: "fk.hu"; hv: "fk.hv"; hw: "fk.hw"; hx: "fk.hx"; hy: "fk.hy"; hz: "fk.hz"; ia: "fk.ia"; ib: "fk.ib"; ic: "fk.ic"; id: "fk.id"; ie: "fk.ie"; if: "fk.if"; ig: "fk.ig"; ih: "fk.ih"; ii: "fk.ii"; ij: "fk.ij"; ik: "fk.ik"; il: "fk.il"; im: "fk.im"; in: "fk.in"; io: "fk.io"; ip: "fk.ip"; iq: "fk.iq"; ir: "fk.ir"; is: "fk.is"; it: "fk.it"; iu: "fk.iu"; iv: "fk.iv"; iw: "fk.iw"; ix: "fk.ix"; iy: "fk.iy"; iz: "fk.iz"; ja: "fk.ja"; jb: "fk.jb"; jc: "fk.jc"; jd: "fk.jd"; je: "fk.je"; jf: "fk.jf"; jg: "fk.jg"; jh: "fk.jh"; ji: "fk.ji"; jj: "fk.jj"; jk: "fk.jk"; jl: "fk.jl"; jm: "fk.jm"; jn: "fk.jn"; jo: "fk.jo"; jp: "fk.jp"; jq: "fk.jq"; jr: "fk.jr"; js: "fk.js"; jt: "fk.jt"; ju: "fk.ju"; jv: "fk.jv"; jw: "fk.jw"; jx: "fk.jx"; jy: "fk.jy"; jz: "fk.jz"; ka: "fk.ka"; kb: "fk.kb"; kc: "fk.kc"; kd: "fk.kd"; ke: "fk.ke"; kf: "fk.kf"; kg: "fk.kg"; kh: "fk.kh"; ki: "fk.ki"; kj: "fk.kj"; kk: "fk.kk"; kl: "fk.kl"; km: "fk.km"; kn: "fk.kn"; ko: "fk.ko"; kp: "fk.kp"; kq: "fk.kq"; kr: "fk.kr"; ks: "fk.ks"; kt: "fk.kt"; ku: "fk.ku"; kv: "fk.kv"; kw: "fk.kw"; kx: "fk.kx"; ky: "fk.ky"; kz: "fk.kz"; la: "fk.la"; lb: "fk.lb"; lc: "fk.lc"; ld: "fk.ld"; le: "fk.le"; lf: "fk.lf"; lg: "fk.lg"; lh: "fk.lh"; li: "fk.li"; lj: "fk.lj"; lk: "fk.lk"; ll: "fk.ll"; lm: "fk.lm"; ln: "fk.ln"; lo: "fk.lo"; lp: "fk.lp"; lq: "fk.lq"; lr: "fk.lr"; ls: "fk.ls"; lt: "fk.lt"; lu: "fk.lu"; lv: "fk.lv"; lw: "fk.lw"; lx: "fk.lx"; ly: "fk.ly"; lz: "fk.lz"; ma: "fk.ma"; mb: "fk.mb"; mc: "fk.mc"; md: "fk.md"; me: "fk.me"; mf: "fk.mf"; mg: "fk.mg"; mh: "fk.mh"; mi: "fk.mi"; mj: "fk.mj"; mk: "fk.mk"; ml: "fk.ml"; mm: "fk.mm"; mn: "fk.mn"; mo: "fk.mo"; mp: "fk.mp"; mq: "fk.mq"; mr: "fk.mr"; ms: "fk.ms"; mt: "fk.mt"; mu: "fk.mu"; mv: "fk.mv"; mw: "fk.mw"; mx: "fk.mx"; my: "fk.my"; mz: "fk.mz"; na: "fk.na"; nb: "fk.nb"; nc: "fk.nc"; nd: "fk.nd"; ne: "fk.ne"; nf: "fk.nf"; ng: "fk.ng"; nh: "fk.nh"; ni: "fk.ni"; nj: "fk.nj"; nk: "fk.nk"; nl: "fk.nl"; nm: "fk.nm"; nn: "fk.nn"; no: "fk.no"; np: "fk.np"; nq: "fk.nq"; nr: "fk.nr"; ns: "fk.ns"; nt: "fk.nt"; nu: "fk.nu"; nv: "fk.nv"; nw: "fk.nw"; nx: "fk.nx"; ny: "fk.ny"; nz: "fk.nz"; oa: "fk.oa"; ob: "fk.ob"; oc: "fk.oc"; od: "fk.od"; oe: "fk.oe"; of: "fk.of"; og: "fk.og"; oh: "fk.oh"; oi: "fk.oi"; oj: "fk.oj"; ok: "fk.ok"; ol: "fk.ol"; om: "fk.om"; on: "fk.on"; oo: "fk.oo"; op: "fk.op"; oq: "fk.oq"; or: "fk.or"; os: "fk.os"; ot: "fk.ot"; ou: "fk.ou"; ov: "fk.ov"; ow: "fk.ow"; ox: "fk.ox"; oy: "fk.oy"; oz: "fk.oz"; pa: "fk.pa"; pb: "fk.pb"; pc: "fk.pc"; pd: "fk.pd"; pe: "fk.pe"; pf: "fk.pf"; pg: "fk.pg"; ph: "fk.ph"; pi: "fk.pi"; pj: "fk.pj"; pk: "fk.pk"; pl: "fk.pl"; pm: "fk.pm"; pn: "fk.pn"; po: "fk.po"; pp: "fk.pp"; pq: "fk.pq"; pr: "fk.pr"; ps: "fk.ps"; pt: "fk.pt"; pu: "fk.pu"; pv: "fk.pv"; pw: "fk.pw"; px: "fk.px"; py: "fk.py"; pz: "fk.pz"; qa: "fk.qa"; qb: "fk.qb"; qc: "fk.qc"; qd: "fk.qd"; qe: "fk.qe"; qf: "fk.qf"; qg: "fk.qg"; qh: "fk.qh"; qi: "fk.qi"; qj: "fk.qj"; qk: "fk.qk"; ql: "fk.ql"; qm: "fk.qm"; qn: "fk.qn"; qo: "fk.qo"; qp: "fk.qp"; qq: "fk.qq"; qr: "fk.qr"; qs: "fk.qs"; qt: "fk.qt"; qu: "fk.qu"; qv: "fk.qv"; qw: "fk.qw"; qx: "fk.qx"; qy: "fk.qy"; qz: "fk.qz"; ra: "fk.ra"; rb: "fk.rb"; rc: "fk.rc"; rd: "fk.rd"; re: "fk.re"; rf: "fk.rf"; rg: "fk.rg"; rh: "fk.rh"; ri: "fk.ri"; rj: "fk.rj"; rk: "fk.rk"; rl: "fk.rl"; rm: "fk.rm"; rn: "fk.rn"; ro: "fk.ro"; rp: "fk.rp"; rq: "fk.rq"; rr: "fk.rr"; rs: "fk.rs"; rt: "fk.rt"; ru: "fk.ru"; rv: "fk.rv"; rw: "fk.rw"; rx: "fk.rx"; ry: "fk.ry"; rz: "fk.rz"; sa: "fk.sa"; sb: "fk.sb"; sc: "fk.sc"; sd: "fk.sd"; se: "fk.se"; sf: "fk.sf"; sg: "fk.sg"; sh: "fk.sh"; si: "fk.si"; sj: "fk.sj"; sk: "fk.sk"; sl: "fk.sl"; sm: "fk.sm"; sn: "fk.sn"; so: "fk.so"; sp: "fk.sp"; sq: "fk.sq"; sr: "fk.sr"; ss: "fk.ss"; st: "fk.st"; su: "fk.su"; sv: "fk.sv"; sw: "fk.sw"; sx: "fk.sx"; sy: "fk.sy"; sz: "fk.sz"; ta: "fk.ta"; tb: "fk.tb"; tc: "fk.tc"; td: "fk.td"; te: "fk.te"; tf: "fk.tf"; tg: "fk.tg"; th: "fk.th"; ti: "fk.ti"; tj: "fk.tj"; tk: "fk.tk"; tl: "fk.tl"; tm: "fk.tm"; tn: "fk.tn"; to: "fk.to"; tp: "fk.tp"; tq: "fk.tq"; tr: "fk.tr"; ts: "fk.ts"; tt: "fk.tt"; tu: "fk.tu"; tv: "fk.tv"; tw: "fk.tw"; tx: "fk.tx"; ty: "fk.ty"; tz: "fk.tz"; ua: "fk.ua"; ub: "fk.ub"; uc: "fk.uc"; ud: "fk.ud"; ue: "fk.ue"; uf: "fk.uf"; ug: "fk.ug"; uh: "fk.uh"; ui: "fk.ui"; uj: "fk.uj"; uk: "fk.uk"; ul: "fk.ul"; um: "fk.um"; un: "fk.un"; uo: "fk.uo"; up: "fk.up"; uq: "fk.uq"; ur: "fk.ur"; us: "fk.us"; ut: "fk.ut"; uu: "fk.uu"; uv: "fk.uv"; uw: "fk.uw"; ux: "fk.ux"; uy: "fk.uy"; uz: "fk.uz"; va: "fk.va"; vb: "fk.vb"; vc: "fk.vc"; vd: "fk.vd"; ve: "fk.ve"; vf: "fk.vf"; vg: "fk.vg"; vh: "fk.vh"; vi: "fk.vi"; vj: "fk.vj"; vk: "fk.vk"; vl: "fk.vl"; vm: "fk.vm"; vn: "fk.vn"; vo: "fk.vo"; vp: "fk.vp"; vq: "fk.vq"; vr: "fk.vr"; vs: "fk.vs"; vt: "fk.vt"; vu: "fk.vu"; vv: "fk.vv"; vw: "fk.vw"; vx: "fk.vx"; vy: "fk.vy"; vz: "fk.vz"; wa: "fk.wa"; wb: "fk.wb"; wc: "fk.wc"; wd: "fk.wd"; we: "fk.we"; wf: "fk.wf"; wg: "fk.wg"; wh: "fk.wh"; wi: "fk.wi"; wj: "fk.wj"; wk: "fk.wk"; wl: "fk.wl"; wm: "fk.wm"; wn: "fk.wn"; wo: "fk.wo"; wp: "fk.wp"; wq: "fk.wq"; wr: "fk.wr"; ws: "fk.ws"; wt: "fk.wt"; wu: "fk.wu"; wv: "fk.wv"; ww: "fk.ww"; wx: "fk.wx"; wy: "fk.wy"; wz: "fk.wz"; xa: "fk.xa"; xb: "fk.xb"; xc: "fk.xc"; xd: "fk.xd"; xe: "fk.xe"; xf: "fk.xf"; xg: "fk.xg"; xh: "fk.xh"; xi: "fk.xi"; xj: "fk.xj"; xk: "fk.xk"; xl: "fk.xl"; xm: "fk.xm"; xn: "fk.xn"; xo: "fk.xo"; xp: "fk.xp"; xq: "fk.xq"; xr: "fk.xr"; xs: "fk.xs"; xt: "fk.xt"; xu: "fk.xu"; xv: "fk.xv"; xw: "fk.xw"; xx: "fk.xx"; xy: "fk.xy"; xz: "fk.xz"; ya: "fk.ya"; yb: "fk.yb"; yc: "fk.yc"; yd: "fk.yd"; ye: "fk.ye"; yf: "fk.yf"; yg: "fk.yg"; yh: "fk.yh"; yi: "fk.yi"; yj: "fk.yj"; yk: "fk.yk"; yl: "fk.yl"; ym: "fk.ym"; yn: "fk.yn"; yo: "fk.yo"; yp: "fk.yp"; yq: "fk.yq"; yr: "fk.yr"; ys: "fk.ys"; yt: "fk.yt"; yu: "fk.yu"; yv: "fk.yv"; yw: "fk.yw"; yx: "fk.yx"; yy: "fk.yy"; yz: "fk.yz"; za: "fk.za"; zb: "fk.zb"; zc: "fk.zc"; zd: "fk.zd"; ze: "fk.ze"; zf: "fk.zf"; zg: "fk.zg"; zh: "fk.zh"; zi: "fk.zi"; zj: "fk.zj"; zk: "fk.zk"; zl: "fk.zl"; zm: "fk.zm"; zn: "fk.zn"; zo: "fk.zo"; zp: "fk.zp"; zq: "fk.zq"; zr: "fk.zr"; zs: "fk.zs"; zt: "fk.zt"; zu: "fk.zu"; zv: "fk.zv"; zw: "fk.zw"; zx: "fk.zx"; zy: "fk.zy"; zz: "fk.zz"; }; fl: { aa: "fl.aa"; ab: "fl.ab"; ac: "fl.ac"; ad: "fl.ad"; ae: "fl.ae"; af: "fl.af"; ag: "fl.ag"; ah: "fl.ah"; ai: "fl.ai"; aj: "fl.aj"; ak: "fl.ak"; al: "fl.al"; am: "fl.am"; an: "fl.an"; ao: "fl.ao"; ap: "fl.ap"; aq: "fl.aq"; ar: "fl.ar"; as: "fl.as"; at: "fl.at"; au: "fl.au"; av: "fl.av"; aw: "fl.aw"; ax: "fl.ax"; ay: "fl.ay"; az: "fl.az"; ba: "fl.ba"; bb: "fl.bb"; bc: "fl.bc"; bd: "fl.bd"; be: "fl.be"; bf: "fl.bf"; bg: "fl.bg"; bh: "fl.bh"; bi: "fl.bi"; bj: "fl.bj"; bk: "fl.bk"; bl: "fl.bl"; bm: "fl.bm"; bn: "fl.bn"; bo: "fl.bo"; bp: "fl.bp"; bq: "fl.bq"; br: "fl.br"; bs: "fl.bs"; bt: "fl.bt"; bu: "fl.bu"; bv: "fl.bv"; bw: "fl.bw"; bx: "fl.bx"; by: "fl.by"; bz: "fl.bz"; ca: "fl.ca"; cb: "fl.cb"; cc: "fl.cc"; cd: "fl.cd"; ce: "fl.ce"; cf: "fl.cf"; cg: "fl.cg"; ch: "fl.ch"; ci: "fl.ci"; cj: "fl.cj"; ck: "fl.ck"; cl: "fl.cl"; cm: "fl.cm"; cn: "fl.cn"; co: "fl.co"; cp: "fl.cp"; cq: "fl.cq"; cr: "fl.cr"; cs: "fl.cs"; ct: "fl.ct"; cu: "fl.cu"; cv: "fl.cv"; cw: "fl.cw"; cx: "fl.cx"; cy: "fl.cy"; cz: "fl.cz"; da: "fl.da"; db: "fl.db"; dc: "fl.dc"; dd: "fl.dd"; de: "fl.de"; df: "fl.df"; dg: "fl.dg"; dh: "fl.dh"; di: "fl.di"; dj: "fl.dj"; dk: "fl.dk"; dl: "fl.dl"; dm: "fl.dm"; dn: "fl.dn"; do: "fl.do"; dp: "fl.dp"; dq: "fl.dq"; dr: "fl.dr"; ds: "fl.ds"; dt: "fl.dt"; du: "fl.du"; dv: "fl.dv"; dw: "fl.dw"; dx: "fl.dx"; dy: "fl.dy"; dz: "fl.dz"; ea: "fl.ea"; eb: "fl.eb"; ec: "fl.ec"; ed: "fl.ed"; ee: "fl.ee"; ef: "fl.ef"; eg: "fl.eg"; eh: "fl.eh"; ei: "fl.ei"; ej: "fl.ej"; ek: "fl.ek"; el: "fl.el"; em: "fl.em"; en: "fl.en"; eo: "fl.eo"; ep: "fl.ep"; eq: "fl.eq"; er: "fl.er"; es: "fl.es"; et: "fl.et"; eu: "fl.eu"; ev: "fl.ev"; ew: "fl.ew"; ex: "fl.ex"; ey: "fl.ey"; ez: "fl.ez"; fa: "fl.fa"; fb: "fl.fb"; fc: "fl.fc"; fd: "fl.fd"; fe: "fl.fe"; ff: "fl.ff"; fg: "fl.fg"; fh: "fl.fh"; fi: "fl.fi"; fj: "fl.fj"; fk: "fl.fk"; fl: "fl.fl"; fm: "fl.fm"; fn: "fl.fn"; fo: "fl.fo"; fp: "fl.fp"; fq: "fl.fq"; fr: "fl.fr"; fs: "fl.fs"; ft: "fl.ft"; fu: "fl.fu"; fv: "fl.fv"; fw: "fl.fw"; fx: "fl.fx"; fy: "fl.fy"; fz: "fl.fz"; ga: "fl.ga"; gb: "fl.gb"; gc: "fl.gc"; gd: "fl.gd"; ge: "fl.ge"; gf: "fl.gf"; gg: "fl.gg"; gh: "fl.gh"; gi: "fl.gi"; gj: "fl.gj"; gk: "fl.gk"; gl: "fl.gl"; gm: "fl.gm"; gn: "fl.gn"; go: "fl.go"; gp: "fl.gp"; gq: "fl.gq"; gr: "fl.gr"; gs: "fl.gs"; gt: "fl.gt"; gu: "fl.gu"; gv: "fl.gv"; gw: "fl.gw"; gx: "fl.gx"; gy: "fl.gy"; gz: "fl.gz"; ha: "fl.ha"; hb: "fl.hb"; hc: "fl.hc"; hd: "fl.hd"; he: "fl.he"; hf: "fl.hf"; hg: "fl.hg"; hh: "fl.hh"; hi: "fl.hi"; hj: "fl.hj"; hk: "fl.hk"; hl: "fl.hl"; hm: "fl.hm"; hn: "fl.hn"; ho: "fl.ho"; hp: "fl.hp"; hq: "fl.hq"; hr: "fl.hr"; hs: "fl.hs"; ht: "fl.ht"; hu: "fl.hu"; hv: "fl.hv"; hw: "fl.hw"; hx: "fl.hx"; hy: "fl.hy"; hz: "fl.hz"; ia: "fl.ia"; ib: "fl.ib"; ic: "fl.ic"; id: "fl.id"; ie: "fl.ie"; if: "fl.if"; ig: "fl.ig"; ih: "fl.ih"; ii: "fl.ii"; ij: "fl.ij"; ik: "fl.ik"; il: "fl.il"; im: "fl.im"; in: "fl.in"; io: "fl.io"; ip: "fl.ip"; iq: "fl.iq"; ir: "fl.ir"; is: "fl.is"; it: "fl.it"; iu: "fl.iu"; iv: "fl.iv"; iw: "fl.iw"; ix: "fl.ix"; iy: "fl.iy"; iz: "fl.iz"; ja: "fl.ja"; jb: "fl.jb"; jc: "fl.jc"; jd: "fl.jd"; je: "fl.je"; jf: "fl.jf"; jg: "fl.jg"; jh: "fl.jh"; ji: "fl.ji"; jj: "fl.jj"; jk: "fl.jk"; jl: "fl.jl"; jm: "fl.jm"; jn: "fl.jn"; jo: "fl.jo"; jp: "fl.jp"; jq: "fl.jq"; jr: "fl.jr"; js: "fl.js"; jt: "fl.jt"; ju: "fl.ju"; jv: "fl.jv"; jw: "fl.jw"; jx: "fl.jx"; jy: "fl.jy"; jz: "fl.jz"; ka: "fl.ka"; kb: "fl.kb"; kc: "fl.kc"; kd: "fl.kd"; ke: "fl.ke"; kf: "fl.kf"; kg: "fl.kg"; kh: "fl.kh"; ki: "fl.ki"; kj: "fl.kj"; kk: "fl.kk"; kl: "fl.kl"; km: "fl.km"; kn: "fl.kn"; ko: "fl.ko"; kp: "fl.kp"; kq: "fl.kq"; kr: "fl.kr"; ks: "fl.ks"; kt: "fl.kt"; ku: "fl.ku"; kv: "fl.kv"; kw: "fl.kw"; kx: "fl.kx"; ky: "fl.ky"; kz: "fl.kz"; la: "fl.la"; lb: "fl.lb"; lc: "fl.lc"; ld: "fl.ld"; le: "fl.le"; lf: "fl.lf"; lg: "fl.lg"; lh: "fl.lh"; li: "fl.li"; lj: "fl.lj"; lk: "fl.lk"; ll: "fl.ll"; lm: "fl.lm"; ln: "fl.ln"; lo: "fl.lo"; lp: "fl.lp"; lq: "fl.lq"; lr: "fl.lr"; ls: "fl.ls"; lt: "fl.lt"; lu: "fl.lu"; lv: "fl.lv"; lw: "fl.lw"; lx: "fl.lx"; ly: "fl.ly"; lz: "fl.lz"; ma: "fl.ma"; mb: "fl.mb"; mc: "fl.mc"; md: "fl.md"; me: "fl.me"; mf: "fl.mf"; mg: "fl.mg"; mh: "fl.mh"; mi: "fl.mi"; mj: "fl.mj"; mk: "fl.mk"; ml: "fl.ml"; mm: "fl.mm"; mn: "fl.mn"; mo: "fl.mo"; mp: "fl.mp"; mq: "fl.mq"; mr: "fl.mr"; ms: "fl.ms"; mt: "fl.mt"; mu: "fl.mu"; mv: "fl.mv"; mw: "fl.mw"; mx: "fl.mx"; my: "fl.my"; mz: "fl.mz"; na: "fl.na"; nb: "fl.nb"; nc: "fl.nc"; nd: "fl.nd"; ne: "fl.ne"; nf: "fl.nf"; ng: "fl.ng"; nh: "fl.nh"; ni: "fl.ni"; nj: "fl.nj"; nk: "fl.nk"; nl: "fl.nl"; nm: "fl.nm"; nn: "fl.nn"; no: "fl.no"; np: "fl.np"; nq: "fl.nq"; nr: "fl.nr"; ns: "fl.ns"; nt: "fl.nt"; nu: "fl.nu"; nv: "fl.nv"; nw: "fl.nw"; nx: "fl.nx"; ny: "fl.ny"; nz: "fl.nz"; oa: "fl.oa"; ob: "fl.ob"; oc: "fl.oc"; od: "fl.od"; oe: "fl.oe"; of: "fl.of"; og: "fl.og"; oh: "fl.oh"; oi: "fl.oi"; oj: "fl.oj"; ok: "fl.ok"; ol: "fl.ol"; om: "fl.om"; on: "fl.on"; oo: "fl.oo"; op: "fl.op"; oq: "fl.oq"; or: "fl.or"; os: "fl.os"; ot: "fl.ot"; ou: "fl.ou"; ov: "fl.ov"; ow: "fl.ow"; ox: "fl.ox"; oy: "fl.oy"; oz: "fl.oz"; pa: "fl.pa"; pb: "fl.pb"; pc: "fl.pc"; pd: "fl.pd"; pe: "fl.pe"; pf: "fl.pf"; pg: "fl.pg"; ph: "fl.ph"; pi: "fl.pi"; pj: "fl.pj"; pk: "fl.pk"; pl: "fl.pl"; pm: "fl.pm"; pn: "fl.pn"; po: "fl.po"; pp: "fl.pp"; pq: "fl.pq"; pr: "fl.pr"; ps: "fl.ps"; pt: "fl.pt"; pu: "fl.pu"; pv: "fl.pv"; pw: "fl.pw"; px: "fl.px"; py: "fl.py"; pz: "fl.pz"; qa: "fl.qa"; qb: "fl.qb"; qc: "fl.qc"; qd: "fl.qd"; qe: "fl.qe"; qf: "fl.qf"; qg: "fl.qg"; qh: "fl.qh"; qi: "fl.qi"; qj: "fl.qj"; qk: "fl.qk"; ql: "fl.ql"; qm: "fl.qm"; qn: "fl.qn"; qo: "fl.qo"; qp: "fl.qp"; qq: "fl.qq"; qr: "fl.qr"; qs: "fl.qs"; qt: "fl.qt"; qu: "fl.qu"; qv: "fl.qv"; qw: "fl.qw"; qx: "fl.qx"; qy: "fl.qy"; qz: "fl.qz"; ra: "fl.ra"; rb: "fl.rb"; rc: "fl.rc"; rd: "fl.rd"; re: "fl.re"; rf: "fl.rf"; rg: "fl.rg"; rh: "fl.rh"; ri: "fl.ri"; rj: "fl.rj"; rk: "fl.rk"; rl: "fl.rl"; rm: "fl.rm"; rn: "fl.rn"; ro: "fl.ro"; rp: "fl.rp"; rq: "fl.rq"; rr: "fl.rr"; rs: "fl.rs"; rt: "fl.rt"; ru: "fl.ru"; rv: "fl.rv"; rw: "fl.rw"; rx: "fl.rx"; ry: "fl.ry"; rz: "fl.rz"; sa: "fl.sa"; sb: "fl.sb"; sc: "fl.sc"; sd: "fl.sd"; se: "fl.se"; sf: "fl.sf"; sg: "fl.sg"; sh: "fl.sh"; si: "fl.si"; sj: "fl.sj"; sk: "fl.sk"; sl: "fl.sl"; sm: "fl.sm"; sn: "fl.sn"; so: "fl.so"; sp: "fl.sp"; sq: "fl.sq"; sr: "fl.sr"; ss: "fl.ss"; st: "fl.st"; su: "fl.su"; sv: "fl.sv"; sw: "fl.sw"; sx: "fl.sx"; sy: "fl.sy"; sz: "fl.sz"; ta: "fl.ta"; tb: "fl.tb"; tc: "fl.tc"; td: "fl.td"; te: "fl.te"; tf: "fl.tf"; tg: "fl.tg"; th: "fl.th"; ti: "fl.ti"; tj: "fl.tj"; tk: "fl.tk"; tl: "fl.tl"; tm: "fl.tm"; tn: "fl.tn"; to: "fl.to"; tp: "fl.tp"; tq: "fl.tq"; tr: "fl.tr"; ts: "fl.ts"; tt: "fl.tt"; tu: "fl.tu"; tv: "fl.tv"; tw: "fl.tw"; tx: "fl.tx"; ty: "fl.ty"; tz: "fl.tz"; ua: "fl.ua"; ub: "fl.ub"; uc: "fl.uc"; ud: "fl.ud"; ue: "fl.ue"; uf: "fl.uf"; ug: "fl.ug"; uh: "fl.uh"; ui: "fl.ui"; uj: "fl.uj"; uk: "fl.uk"; ul: "fl.ul"; um: "fl.um"; un: "fl.un"; uo: "fl.uo"; up: "fl.up"; uq: "fl.uq"; ur: "fl.ur"; us: "fl.us"; ut: "fl.ut"; uu: "fl.uu"; uv: "fl.uv"; uw: "fl.uw"; ux: "fl.ux"; uy: "fl.uy"; uz: "fl.uz"; va: "fl.va"; vb: "fl.vb"; vc: "fl.vc"; vd: "fl.vd"; ve: "fl.ve"; vf: "fl.vf"; vg: "fl.vg"; vh: "fl.vh"; vi: "fl.vi"; vj: "fl.vj"; vk: "fl.vk"; vl: "fl.vl"; vm: "fl.vm"; vn: "fl.vn"; vo: "fl.vo"; vp: "fl.vp"; vq: "fl.vq"; vr: "fl.vr"; vs: "fl.vs"; vt: "fl.vt"; vu: "fl.vu"; vv: "fl.vv"; vw: "fl.vw"; vx: "fl.vx"; vy: "fl.vy"; vz: "fl.vz"; wa: "fl.wa"; wb: "fl.wb"; wc: "fl.wc"; wd: "fl.wd"; we: "fl.we"; wf: "fl.wf"; wg: "fl.wg"; wh: "fl.wh"; wi: "fl.wi"; wj: "fl.wj"; wk: "fl.wk"; wl: "fl.wl"; wm: "fl.wm"; wn: "fl.wn"; wo: "fl.wo"; wp: "fl.wp"; wq: "fl.wq"; wr: "fl.wr"; ws: "fl.ws"; wt: "fl.wt"; wu: "fl.wu"; wv: "fl.wv"; ww: "fl.ww"; wx: "fl.wx"; wy: "fl.wy"; wz: "fl.wz"; xa: "fl.xa"; xb: "fl.xb"; xc: "fl.xc"; xd: "fl.xd"; xe: "fl.xe"; xf: "fl.xf"; xg: "fl.xg"; xh: "fl.xh"; xi: "fl.xi"; xj: "fl.xj"; xk: "fl.xk"; xl: "fl.xl"; xm: "fl.xm"; xn: "fl.xn"; xo: "fl.xo"; xp: "fl.xp"; xq: "fl.xq"; xr: "fl.xr"; xs: "fl.xs"; xt: "fl.xt"; xu: "fl.xu"; xv: "fl.xv"; xw: "fl.xw"; xx: "fl.xx"; xy: "fl.xy"; xz: "fl.xz"; ya: "fl.ya"; yb: "fl.yb"; yc: "fl.yc"; yd: "fl.yd"; ye: "fl.ye"; yf: "fl.yf"; yg: "fl.yg"; yh: "fl.yh"; yi: "fl.yi"; yj: "fl.yj"; yk: "fl.yk"; yl: "fl.yl"; ym: "fl.ym"; yn: "fl.yn"; yo: "fl.yo"; yp: "fl.yp"; yq: "fl.yq"; yr: "fl.yr"; ys: "fl.ys"; yt: "fl.yt"; yu: "fl.yu"; yv: "fl.yv"; yw: "fl.yw"; yx: "fl.yx"; yy: "fl.yy"; yz: "fl.yz"; za: "fl.za"; zb: "fl.zb"; zc: "fl.zc"; zd: "fl.zd"; ze: "fl.ze"; zf: "fl.zf"; zg: "fl.zg"; zh: "fl.zh"; zi: "fl.zi"; zj: "fl.zj"; zk: "fl.zk"; zl: "fl.zl"; zm: "fl.zm"; zn: "fl.zn"; zo: "fl.zo"; zp: "fl.zp"; zq: "fl.zq"; zr: "fl.zr"; zs: "fl.zs"; zt: "fl.zt"; zu: "fl.zu"; zv: "fl.zv"; zw: "fl.zw"; zx: "fl.zx"; zy: "fl.zy"; zz: "fl.zz"; }; fm: { aa: "fm.aa"; ab: "fm.ab"; ac: "fm.ac"; ad: "fm.ad"; ae: "fm.ae"; af: "fm.af"; ag: "fm.ag"; ah: "fm.ah"; ai: "fm.ai"; aj: "fm.aj"; ak: "fm.ak"; al: "fm.al"; am: "fm.am"; an: "fm.an"; ao: "fm.ao"; ap: "fm.ap"; aq: "fm.aq"; ar: "fm.ar"; as: "fm.as"; at: "fm.at"; au: "fm.au"; av: "fm.av"; aw: "fm.aw"; ax: "fm.ax"; ay: "fm.ay"; az: "fm.az"; ba: "fm.ba"; bb: "fm.bb"; bc: "fm.bc"; bd: "fm.bd"; be: "fm.be"; bf: "fm.bf"; bg: "fm.bg"; bh: "fm.bh"; bi: "fm.bi"; bj: "fm.bj"; bk: "fm.bk"; bl: "fm.bl"; bm: "fm.bm"; bn: "fm.bn"; bo: "fm.bo"; bp: "fm.bp"; bq: "fm.bq"; br: "fm.br"; bs: "fm.bs"; bt: "fm.bt"; bu: "fm.bu"; bv: "fm.bv"; bw: "fm.bw"; bx: "fm.bx"; by: "fm.by"; bz: "fm.bz"; ca: "fm.ca"; cb: "fm.cb"; cc: "fm.cc"; cd: "fm.cd"; ce: "fm.ce"; cf: "fm.cf"; cg: "fm.cg"; ch: "fm.ch"; ci: "fm.ci"; cj: "fm.cj"; ck: "fm.ck"; cl: "fm.cl"; cm: "fm.cm"; cn: "fm.cn"; co: "fm.co"; cp: "fm.cp"; cq: "fm.cq"; cr: "fm.cr"; cs: "fm.cs"; ct: "fm.ct"; cu: "fm.cu"; cv: "fm.cv"; cw: "fm.cw"; cx: "fm.cx"; cy: "fm.cy"; cz: "fm.cz"; da: "fm.da"; db: "fm.db"; dc: "fm.dc"; dd: "fm.dd"; de: "fm.de"; df: "fm.df"; dg: "fm.dg"; dh: "fm.dh"; di: "fm.di"; dj: "fm.dj"; dk: "fm.dk"; dl: "fm.dl"; dm: "fm.dm"; dn: "fm.dn"; do: "fm.do"; dp: "fm.dp"; dq: "fm.dq"; dr: "fm.dr"; ds: "fm.ds"; dt: "fm.dt"; du: "fm.du"; dv: "fm.dv"; dw: "fm.dw"; dx: "fm.dx"; dy: "fm.dy"; dz: "fm.dz"; ea: "fm.ea"; eb: "fm.eb"; ec: "fm.ec"; ed: "fm.ed"; ee: "fm.ee"; ef: "fm.ef"; eg: "fm.eg"; eh: "fm.eh"; ei: "fm.ei"; ej: "fm.ej"; ek: "fm.ek"; el: "fm.el"; em: "fm.em"; en: "fm.en"; eo: "fm.eo"; ep: "fm.ep"; eq: "fm.eq"; er: "fm.er"; es: "fm.es"; et: "fm.et"; eu: "fm.eu"; ev: "fm.ev"; ew: "fm.ew"; ex: "fm.ex"; ey: "fm.ey"; ez: "fm.ez"; fa: "fm.fa"; fb: "fm.fb"; fc: "fm.fc"; fd: "fm.fd"; fe: "fm.fe"; ff: "fm.ff"; fg: "fm.fg"; fh: "fm.fh"; fi: "fm.fi"; fj: "fm.fj"; fk: "fm.fk"; fl: "fm.fl"; fm: "fm.fm"; fn: "fm.fn"; fo: "fm.fo"; fp: "fm.fp"; fq: "fm.fq"; fr: "fm.fr"; fs: "fm.fs"; ft: "fm.ft"; fu: "fm.fu"; fv: "fm.fv"; fw: "fm.fw"; fx: "fm.fx"; fy: "fm.fy"; fz: "fm.fz"; ga: "fm.ga"; gb: "fm.gb"; gc: "fm.gc"; gd: "fm.gd"; ge: "fm.ge"; gf: "fm.gf"; gg: "fm.gg"; gh: "fm.gh"; gi: "fm.gi"; gj: "fm.gj"; gk: "fm.gk"; gl: "fm.gl"; gm: "fm.gm"; gn: "fm.gn"; go: "fm.go"; gp: "fm.gp"; gq: "fm.gq"; gr: "fm.gr"; gs: "fm.gs"; gt: "fm.gt"; gu: "fm.gu"; gv: "fm.gv"; gw: "fm.gw"; gx: "fm.gx"; gy: "fm.gy"; gz: "fm.gz"; ha: "fm.ha"; hb: "fm.hb"; hc: "fm.hc"; hd: "fm.hd"; he: "fm.he"; hf: "fm.hf"; hg: "fm.hg"; hh: "fm.hh"; hi: "fm.hi"; hj: "fm.hj"; hk: "fm.hk"; hl: "fm.hl"; hm: "fm.hm"; hn: "fm.hn"; ho: "fm.ho"; hp: "fm.hp"; hq: "fm.hq"; hr: "fm.hr"; hs: "fm.hs"; ht: "fm.ht"; hu: "fm.hu"; hv: "fm.hv"; hw: "fm.hw"; hx: "fm.hx"; hy: "fm.hy"; hz: "fm.hz"; ia: "fm.ia"; ib: "fm.ib"; ic: "fm.ic"; id: "fm.id"; ie: "fm.ie"; if: "fm.if"; ig: "fm.ig"; ih: "fm.ih"; ii: "fm.ii"; ij: "fm.ij"; ik: "fm.ik"; il: "fm.il"; im: "fm.im"; in: "fm.in"; io: "fm.io"; ip: "fm.ip"; iq: "fm.iq"; ir: "fm.ir"; is: "fm.is"; it: "fm.it"; iu: "fm.iu"; iv: "fm.iv"; iw: "fm.iw"; ix: "fm.ix"; iy: "fm.iy"; iz: "fm.iz"; ja: "fm.ja"; jb: "fm.jb"; jc: "fm.jc"; jd: "fm.jd"; je: "fm.je"; jf: "fm.jf"; jg: "fm.jg"; jh: "fm.jh"; ji: "fm.ji"; jj: "fm.jj"; jk: "fm.jk"; jl: "fm.jl"; jm: "fm.jm"; jn: "fm.jn"; jo: "fm.jo"; jp: "fm.jp"; jq: "fm.jq"; jr: "fm.jr"; js: "fm.js"; jt: "fm.jt"; ju: "fm.ju"; jv: "fm.jv"; jw: "fm.jw"; jx: "fm.jx"; jy: "fm.jy"; jz: "fm.jz"; ka: "fm.ka"; kb: "fm.kb"; kc: "fm.kc"; kd: "fm.kd"; ke: "fm.ke"; kf: "fm.kf"; kg: "fm.kg"; kh: "fm.kh"; ki: "fm.ki"; kj: "fm.kj"; kk: "fm.kk"; kl: "fm.kl"; km: "fm.km"; kn: "fm.kn"; ko: "fm.ko"; kp: "fm.kp"; kq: "fm.kq"; kr: "fm.kr"; ks: "fm.ks"; kt: "fm.kt"; ku: "fm.ku"; kv: "fm.kv"; kw: "fm.kw"; kx: "fm.kx"; ky: "fm.ky"; kz: "fm.kz"; la: "fm.la"; lb: "fm.lb"; lc: "fm.lc"; ld: "fm.ld"; le: "fm.le"; lf: "fm.lf"; lg: "fm.lg"; lh: "fm.lh"; li: "fm.li"; lj: "fm.lj"; lk: "fm.lk"; ll: "fm.ll"; lm: "fm.lm"; ln: "fm.ln"; lo: "fm.lo"; lp: "fm.lp"; lq: "fm.lq"; lr: "fm.lr"; ls: "fm.ls"; lt: "fm.lt"; lu: "fm.lu"; lv: "fm.lv"; lw: "fm.lw"; lx: "fm.lx"; ly: "fm.ly"; lz: "fm.lz"; ma: "fm.ma"; mb: "fm.mb"; mc: "fm.mc"; md: "fm.md"; me: "fm.me"; mf: "fm.mf"; mg: "fm.mg"; mh: "fm.mh"; mi: "fm.mi"; mj: "fm.mj"; mk: "fm.mk"; ml: "fm.ml"; mm: "fm.mm"; mn: "fm.mn"; mo: "fm.mo"; mp: "fm.mp"; mq: "fm.mq"; mr: "fm.mr"; ms: "fm.ms"; mt: "fm.mt"; mu: "fm.mu"; mv: "fm.mv"; mw: "fm.mw"; mx: "fm.mx"; my: "fm.my"; mz: "fm.mz"; na: "fm.na"; nb: "fm.nb"; nc: "fm.nc"; nd: "fm.nd"; ne: "fm.ne"; nf: "fm.nf"; ng: "fm.ng"; nh: "fm.nh"; ni: "fm.ni"; nj: "fm.nj"; nk: "fm.nk"; nl: "fm.nl"; nm: "fm.nm"; nn: "fm.nn"; no: "fm.no"; np: "fm.np"; nq: "fm.nq"; nr: "fm.nr"; ns: "fm.ns"; nt: "fm.nt"; nu: "fm.nu"; nv: "fm.nv"; nw: "fm.nw"; nx: "fm.nx"; ny: "fm.ny"; nz: "fm.nz"; oa: "fm.oa"; ob: "fm.ob"; oc: "fm.oc"; od: "fm.od"; oe: "fm.oe"; of: "fm.of"; og: "fm.og"; oh: "fm.oh"; oi: "fm.oi"; oj: "fm.oj"; ok: "fm.ok"; ol: "fm.ol"; om: "fm.om"; on: "fm.on"; oo: "fm.oo"; op: "fm.op"; oq: "fm.oq"; or: "fm.or"; os: "fm.os"; ot: "fm.ot"; ou: "fm.ou"; ov: "fm.ov"; ow: "fm.ow"; ox: "fm.ox"; oy: "fm.oy"; oz: "fm.oz"; pa: "fm.pa"; pb: "fm.pb"; pc: "fm.pc"; pd: "fm.pd"; pe: "fm.pe"; pf: "fm.pf"; pg: "fm.pg"; ph: "fm.ph"; pi: "fm.pi"; pj: "fm.pj"; pk: "fm.pk"; pl: "fm.pl"; pm: "fm.pm"; pn: "fm.pn"; po: "fm.po"; pp: "fm.pp"; pq: "fm.pq"; pr: "fm.pr"; ps: "fm.ps"; pt: "fm.pt"; pu: "fm.pu"; pv: "fm.pv"; pw: "fm.pw"; px: "fm.px"; py: "fm.py"; pz: "fm.pz"; qa: "fm.qa"; qb: "fm.qb"; qc: "fm.qc"; qd: "fm.qd"; qe: "fm.qe"; qf: "fm.qf"; qg: "fm.qg"; qh: "fm.qh"; qi: "fm.qi"; qj: "fm.qj"; qk: "fm.qk"; ql: "fm.ql"; qm: "fm.qm"; qn: "fm.qn"; qo: "fm.qo"; qp: "fm.qp"; qq: "fm.qq"; qr: "fm.qr"; qs: "fm.qs"; qt: "fm.qt"; qu: "fm.qu"; qv: "fm.qv"; qw: "fm.qw"; qx: "fm.qx"; qy: "fm.qy"; qz: "fm.qz"; ra: "fm.ra"; rb: "fm.rb"; rc: "fm.rc"; rd: "fm.rd"; re: "fm.re"; rf: "fm.rf"; rg: "fm.rg"; rh: "fm.rh"; ri: "fm.ri"; rj: "fm.rj"; rk: "fm.rk"; rl: "fm.rl"; rm: "fm.rm"; rn: "fm.rn"; ro: "fm.ro"; rp: "fm.rp"; rq: "fm.rq"; rr: "fm.rr"; rs: "fm.rs"; rt: "fm.rt"; ru: "fm.ru"; rv: "fm.rv"; rw: "fm.rw"; rx: "fm.rx"; ry: "fm.ry"; rz: "fm.rz"; sa: "fm.sa"; sb: "fm.sb"; sc: "fm.sc"; sd: "fm.sd"; se: "fm.se"; sf: "fm.sf"; sg: "fm.sg"; sh: "fm.sh"; si: "fm.si"; sj: "fm.sj"; sk: "fm.sk"; sl: "fm.sl"; sm: "fm.sm"; sn: "fm.sn"; so: "fm.so"; sp: "fm.sp"; sq: "fm.sq"; sr: "fm.sr"; ss: "fm.ss"; st: "fm.st"; su: "fm.su"; sv: "fm.sv"; sw: "fm.sw"; sx: "fm.sx"; sy: "fm.sy"; sz: "fm.sz"; ta: "fm.ta"; tb: "fm.tb"; tc: "fm.tc"; td: "fm.td"; te: "fm.te"; tf: "fm.tf"; tg: "fm.tg"; th: "fm.th"; ti: "fm.ti"; tj: "fm.tj"; tk: "fm.tk"; tl: "fm.tl"; tm: "fm.tm"; tn: "fm.tn"; to: "fm.to"; tp: "fm.tp"; tq: "fm.tq"; tr: "fm.tr"; ts: "fm.ts"; tt: "fm.tt"; tu: "fm.tu"; tv: "fm.tv"; tw: "fm.tw"; tx: "fm.tx"; ty: "fm.ty"; tz: "fm.tz"; ua: "fm.ua"; ub: "fm.ub"; uc: "fm.uc"; ud: "fm.ud"; ue: "fm.ue"; uf: "fm.uf"; ug: "fm.ug"; uh: "fm.uh"; ui: "fm.ui"; uj: "fm.uj"; uk: "fm.uk"; ul: "fm.ul"; um: "fm.um"; un: "fm.un"; uo: "fm.uo"; up: "fm.up"; uq: "fm.uq"; ur: "fm.ur"; us: "fm.us"; ut: "fm.ut"; uu: "fm.uu"; uv: "fm.uv"; uw: "fm.uw"; ux: "fm.ux"; uy: "fm.uy"; uz: "fm.uz"; va: "fm.va"; vb: "fm.vb"; vc: "fm.vc"; vd: "fm.vd"; ve: "fm.ve"; vf: "fm.vf"; vg: "fm.vg"; vh: "fm.vh"; vi: "fm.vi"; vj: "fm.vj"; vk: "fm.vk"; vl: "fm.vl"; vm: "fm.vm"; vn: "fm.vn"; vo: "fm.vo"; vp: "fm.vp"; vq: "fm.vq"; vr: "fm.vr"; vs: "fm.vs"; vt: "fm.vt"; vu: "fm.vu"; vv: "fm.vv"; vw: "fm.vw"; vx: "fm.vx"; vy: "fm.vy"; vz: "fm.vz"; wa: "fm.wa"; wb: "fm.wb"; wc: "fm.wc"; wd: "fm.wd"; we: "fm.we"; wf: "fm.wf"; wg: "fm.wg"; wh: "fm.wh"; wi: "fm.wi"; wj: "fm.wj"; wk: "fm.wk"; wl: "fm.wl"; wm: "fm.wm"; wn: "fm.wn"; wo: "fm.wo"; wp: "fm.wp"; wq: "fm.wq"; wr: "fm.wr"; ws: "fm.ws"; wt: "fm.wt"; wu: "fm.wu"; wv: "fm.wv"; ww: "fm.ww"; wx: "fm.wx"; wy: "fm.wy"; wz: "fm.wz"; xa: "fm.xa"; xb: "fm.xb"; xc: "fm.xc"; xd: "fm.xd"; xe: "fm.xe"; xf: "fm.xf"; xg: "fm.xg"; xh: "fm.xh"; xi: "fm.xi"; xj: "fm.xj"; xk: "fm.xk"; xl: "fm.xl"; xm: "fm.xm"; xn: "fm.xn"; xo: "fm.xo"; xp: "fm.xp"; xq: "fm.xq"; xr: "fm.xr"; xs: "fm.xs"; xt: "fm.xt"; xu: "fm.xu"; xv: "fm.xv"; xw: "fm.xw"; xx: "fm.xx"; xy: "fm.xy"; xz: "fm.xz"; ya: "fm.ya"; yb: "fm.yb"; yc: "fm.yc"; yd: "fm.yd"; ye: "fm.ye"; yf: "fm.yf"; yg: "fm.yg"; yh: "fm.yh"; yi: "fm.yi"; yj: "fm.yj"; yk: "fm.yk"; yl: "fm.yl"; ym: "fm.ym"; yn: "fm.yn"; yo: "fm.yo"; yp: "fm.yp"; yq: "fm.yq"; yr: "fm.yr"; ys: "fm.ys"; yt: "fm.yt"; yu: "fm.yu"; yv: "fm.yv"; yw: "fm.yw"; yx: "fm.yx"; yy: "fm.yy"; yz: "fm.yz"; za: "fm.za"; zb: "fm.zb"; zc: "fm.zc"; zd: "fm.zd"; ze: "fm.ze"; zf: "fm.zf"; zg: "fm.zg"; zh: "fm.zh"; zi: "fm.zi"; zj: "fm.zj"; zk: "fm.zk"; zl: "fm.zl"; zm: "fm.zm"; zn: "fm.zn"; zo: "fm.zo"; zp: "fm.zp"; zq: "fm.zq"; zr: "fm.zr"; zs: "fm.zs"; zt: "fm.zt"; zu: "fm.zu"; zv: "fm.zv"; zw: "fm.zw"; zx: "fm.zx"; zy: "fm.zy"; zz: "fm.zz"; }; fn: { aa: "fn.aa"; ab: "fn.ab"; ac: "fn.ac"; ad: "fn.ad"; ae: "fn.ae"; af: "fn.af"; ag: "fn.ag"; ah: "fn.ah"; ai: "fn.ai"; aj: "fn.aj"; ak: "fn.ak"; al: "fn.al"; am: "fn.am"; an: "fn.an"; ao: "fn.ao"; ap: "fn.ap"; aq: "fn.aq"; ar: "fn.ar"; as: "fn.as"; at: "fn.at"; au: "fn.au"; av: "fn.av"; aw: "fn.aw"; ax: "fn.ax"; ay: "fn.ay"; az: "fn.az"; ba: "fn.ba"; bb: "fn.bb"; bc: "fn.bc"; bd: "fn.bd"; be: "fn.be"; bf: "fn.bf"; bg: "fn.bg"; bh: "fn.bh"; bi: "fn.bi"; bj: "fn.bj"; bk: "fn.bk"; bl: "fn.bl"; bm: "fn.bm"; bn: "fn.bn"; bo: "fn.bo"; bp: "fn.bp"; bq: "fn.bq"; br: "fn.br"; bs: "fn.bs"; bt: "fn.bt"; bu: "fn.bu"; bv: "fn.bv"; bw: "fn.bw"; bx: "fn.bx"; by: "fn.by"; bz: "fn.bz"; ca: "fn.ca"; cb: "fn.cb"; cc: "fn.cc"; cd: "fn.cd"; ce: "fn.ce"; cf: "fn.cf"; cg: "fn.cg"; ch: "fn.ch"; ci: "fn.ci"; cj: "fn.cj"; ck: "fn.ck"; cl: "fn.cl"; cm: "fn.cm"; cn: "fn.cn"; co: "fn.co"; cp: "fn.cp"; cq: "fn.cq"; cr: "fn.cr"; cs: "fn.cs"; ct: "fn.ct"; cu: "fn.cu"; cv: "fn.cv"; cw: "fn.cw"; cx: "fn.cx"; cy: "fn.cy"; cz: "fn.cz"; da: "fn.da"; db: "fn.db"; dc: "fn.dc"; dd: "fn.dd"; de: "fn.de"; df: "fn.df"; dg: "fn.dg"; dh: "fn.dh"; di: "fn.di"; dj: "fn.dj"; dk: "fn.dk"; dl: "fn.dl"; dm: "fn.dm"; dn: "fn.dn"; do: "fn.do"; dp: "fn.dp"; dq: "fn.dq"; dr: "fn.dr"; ds: "fn.ds"; dt: "fn.dt"; du: "fn.du"; dv: "fn.dv"; dw: "fn.dw"; dx: "fn.dx"; dy: "fn.dy"; dz: "fn.dz"; ea: "fn.ea"; eb: "fn.eb"; ec: "fn.ec"; ed: "fn.ed"; ee: "fn.ee"; ef: "fn.ef"; eg: "fn.eg"; eh: "fn.eh"; ei: "fn.ei"; ej: "fn.ej"; ek: "fn.ek"; el: "fn.el"; em: "fn.em"; en: "fn.en"; eo: "fn.eo"; ep: "fn.ep"; eq: "fn.eq"; er: "fn.er"; es: "fn.es"; et: "fn.et"; eu: "fn.eu"; ev: "fn.ev"; ew: "fn.ew"; ex: "fn.ex"; ey: "fn.ey"; ez: "fn.ez"; fa: "fn.fa"; fb: "fn.fb"; fc: "fn.fc"; fd: "fn.fd"; fe: "fn.fe"; ff: "fn.ff"; fg: "fn.fg"; fh: "fn.fh"; fi: "fn.fi"; fj: "fn.fj"; fk: "fn.fk"; fl: "fn.fl"; fm: "fn.fm"; fn: "fn.fn"; fo: "fn.fo"; fp: "fn.fp"; fq: "fn.fq"; fr: "fn.fr"; fs: "fn.fs"; ft: "fn.ft"; fu: "fn.fu"; fv: "fn.fv"; fw: "fn.fw"; fx: "fn.fx"; fy: "fn.fy"; fz: "fn.fz"; ga: "fn.ga"; gb: "fn.gb"; gc: "fn.gc"; gd: "fn.gd"; ge: "fn.ge"; gf: "fn.gf"; gg: "fn.gg"; gh: "fn.gh"; gi: "fn.gi"; gj: "fn.gj"; gk: "fn.gk"; gl: "fn.gl"; gm: "fn.gm"; gn: "fn.gn"; go: "fn.go"; gp: "fn.gp"; gq: "fn.gq"; gr: "fn.gr"; gs: "fn.gs"; gt: "fn.gt"; gu: "fn.gu"; gv: "fn.gv"; gw: "fn.gw"; gx: "fn.gx"; gy: "fn.gy"; gz: "fn.gz"; ha: "fn.ha"; hb: "fn.hb"; hc: "fn.hc"; hd: "fn.hd"; he: "fn.he"; hf: "fn.hf"; hg: "fn.hg"; hh: "fn.hh"; hi: "fn.hi"; hj: "fn.hj"; hk: "fn.hk"; hl: "fn.hl"; hm: "fn.hm"; hn: "fn.hn"; ho: "fn.ho"; hp: "fn.hp"; hq: "fn.hq"; hr: "fn.hr"; hs: "fn.hs"; ht: "fn.ht"; hu: "fn.hu"; hv: "fn.hv"; hw: "fn.hw"; hx: "fn.hx"; hy: "fn.hy"; hz: "fn.hz"; ia: "fn.ia"; ib: "fn.ib"; ic: "fn.ic"; id: "fn.id"; ie: "fn.ie"; if: "fn.if"; ig: "fn.ig"; ih: "fn.ih"; ii: "fn.ii"; ij: "fn.ij"; ik: "fn.ik"; il: "fn.il"; im: "fn.im"; in: "fn.in"; io: "fn.io"; ip: "fn.ip"; iq: "fn.iq"; ir: "fn.ir"; is: "fn.is"; it: "fn.it"; iu: "fn.iu"; iv: "fn.iv"; iw: "fn.iw"; ix: "fn.ix"; iy: "fn.iy"; iz: "fn.iz"; ja: "fn.ja"; jb: "fn.jb"; jc: "fn.jc"; jd: "fn.jd"; je: "fn.je"; jf: "fn.jf"; jg: "fn.jg"; jh: "fn.jh"; ji: "fn.ji"; jj: "fn.jj"; jk: "fn.jk"; jl: "fn.jl"; jm: "fn.jm"; jn: "fn.jn"; jo: "fn.jo"; jp: "fn.jp"; jq: "fn.jq"; jr: "fn.jr"; js: "fn.js"; jt: "fn.jt"; ju: "fn.ju"; jv: "fn.jv"; jw: "fn.jw"; jx: "fn.jx"; jy: "fn.jy"; jz: "fn.jz"; ka: "fn.ka"; kb: "fn.kb"; kc: "fn.kc"; kd: "fn.kd"; ke: "fn.ke"; kf: "fn.kf"; kg: "fn.kg"; kh: "fn.kh"; ki: "fn.ki"; kj: "fn.kj"; kk: "fn.kk"; kl: "fn.kl"; km: "fn.km"; kn: "fn.kn"; ko: "fn.ko"; kp: "fn.kp"; kq: "fn.kq"; kr: "fn.kr"; ks: "fn.ks"; kt: "fn.kt"; ku: "fn.ku"; kv: "fn.kv"; kw: "fn.kw"; kx: "fn.kx"; ky: "fn.ky"; kz: "fn.kz"; la: "fn.la"; lb: "fn.lb"; lc: "fn.lc"; ld: "fn.ld"; le: "fn.le"; lf: "fn.lf"; lg: "fn.lg"; lh: "fn.lh"; li: "fn.li"; lj: "fn.lj"; lk: "fn.lk"; ll: "fn.ll"; lm: "fn.lm"; ln: "fn.ln"; lo: "fn.lo"; lp: "fn.lp"; lq: "fn.lq"; lr: "fn.lr"; ls: "fn.ls"; lt: "fn.lt"; lu: "fn.lu"; lv: "fn.lv"; lw: "fn.lw"; lx: "fn.lx"; ly: "fn.ly"; lz: "fn.lz"; ma: "fn.ma"; mb: "fn.mb"; mc: "fn.mc"; md: "fn.md"; me: "fn.me"; mf: "fn.mf"; mg: "fn.mg"; mh: "fn.mh"; mi: "fn.mi"; mj: "fn.mj"; mk: "fn.mk"; ml: "fn.ml"; mm: "fn.mm"; mn: "fn.mn"; mo: "fn.mo"; mp: "fn.mp"; mq: "fn.mq"; mr: "fn.mr"; ms: "fn.ms"; mt: "fn.mt"; mu: "fn.mu"; mv: "fn.mv"; mw: "fn.mw"; mx: "fn.mx"; my: "fn.my"; mz: "fn.mz"; na: "fn.na"; nb: "fn.nb"; nc: "fn.nc"; nd: "fn.nd"; ne: "fn.ne"; nf: "fn.nf"; ng: "fn.ng"; nh: "fn.nh"; ni: "fn.ni"; nj: "fn.nj"; nk: "fn.nk"; nl: "fn.nl"; nm: "fn.nm"; nn: "fn.nn"; no: "fn.no"; np: "fn.np"; nq: "fn.nq"; nr: "fn.nr"; ns: "fn.ns"; nt: "fn.nt"; nu: "fn.nu"; nv: "fn.nv"; nw: "fn.nw"; nx: "fn.nx"; ny: "fn.ny"; nz: "fn.nz"; oa: "fn.oa"; ob: "fn.ob"; oc: "fn.oc"; od: "fn.od"; oe: "fn.oe"; of: "fn.of"; og: "fn.og"; oh: "fn.oh"; oi: "fn.oi"; oj: "fn.oj"; ok: "fn.ok"; ol: "fn.ol"; om: "fn.om"; on: "fn.on"; oo: "fn.oo"; op: "fn.op"; oq: "fn.oq"; or: "fn.or"; os: "fn.os"; ot: "fn.ot"; ou: "fn.ou"; ov: "fn.ov"; ow: "fn.ow"; ox: "fn.ox"; oy: "fn.oy"; oz: "fn.oz"; pa: "fn.pa"; pb: "fn.pb"; pc: "fn.pc"; pd: "fn.pd"; pe: "fn.pe"; pf: "fn.pf"; pg: "fn.pg"; ph: "fn.ph"; pi: "fn.pi"; pj: "fn.pj"; pk: "fn.pk"; pl: "fn.pl"; pm: "fn.pm"; pn: "fn.pn"; po: "fn.po"; pp: "fn.pp"; pq: "fn.pq"; pr: "fn.pr"; ps: "fn.ps"; pt: "fn.pt"; pu: "fn.pu"; pv: "fn.pv"; pw: "fn.pw"; px: "fn.px"; py: "fn.py"; pz: "fn.pz"; qa: "fn.qa"; qb: "fn.qb"; qc: "fn.qc"; qd: "fn.qd"; qe: "fn.qe"; qf: "fn.qf"; qg: "fn.qg"; qh: "fn.qh"; qi: "fn.qi"; qj: "fn.qj"; qk: "fn.qk"; ql: "fn.ql"; qm: "fn.qm"; qn: "fn.qn"; qo: "fn.qo"; qp: "fn.qp"; qq: "fn.qq"; qr: "fn.qr"; qs: "fn.qs"; qt: "fn.qt"; qu: "fn.qu"; qv: "fn.qv"; qw: "fn.qw"; qx: "fn.qx"; qy: "fn.qy"; qz: "fn.qz"; ra: "fn.ra"; rb: "fn.rb"; rc: "fn.rc"; rd: "fn.rd"; re: "fn.re"; rf: "fn.rf"; rg: "fn.rg"; rh: "fn.rh"; ri: "fn.ri"; rj: "fn.rj"; rk: "fn.rk"; rl: "fn.rl"; rm: "fn.rm"; rn: "fn.rn"; ro: "fn.ro"; rp: "fn.rp"; rq: "fn.rq"; rr: "fn.rr"; rs: "fn.rs"; rt: "fn.rt"; ru: "fn.ru"; rv: "fn.rv"; rw: "fn.rw"; rx: "fn.rx"; ry: "fn.ry"; rz: "fn.rz"; sa: "fn.sa"; sb: "fn.sb"; sc: "fn.sc"; sd: "fn.sd"; se: "fn.se"; sf: "fn.sf"; sg: "fn.sg"; sh: "fn.sh"; si: "fn.si"; sj: "fn.sj"; sk: "fn.sk"; sl: "fn.sl"; sm: "fn.sm"; sn: "fn.sn"; so: "fn.so"; sp: "fn.sp"; sq: "fn.sq"; sr: "fn.sr"; ss: "fn.ss"; st: "fn.st"; su: "fn.su"; sv: "fn.sv"; sw: "fn.sw"; sx: "fn.sx"; sy: "fn.sy"; sz: "fn.sz"; ta: "fn.ta"; tb: "fn.tb"; tc: "fn.tc"; td: "fn.td"; te: "fn.te"; tf: "fn.tf"; tg: "fn.tg"; th: "fn.th"; ti: "fn.ti"; tj: "fn.tj"; tk: "fn.tk"; tl: "fn.tl"; tm: "fn.tm"; tn: "fn.tn"; to: "fn.to"; tp: "fn.tp"; tq: "fn.tq"; tr: "fn.tr"; ts: "fn.ts"; tt: "fn.tt"; tu: "fn.tu"; tv: "fn.tv"; tw: "fn.tw"; tx: "fn.tx"; ty: "fn.ty"; tz: "fn.tz"; ua: "fn.ua"; ub: "fn.ub"; uc: "fn.uc"; ud: "fn.ud"; ue: "fn.ue"; uf: "fn.uf"; ug: "fn.ug"; uh: "fn.uh"; ui: "fn.ui"; uj: "fn.uj"; uk: "fn.uk"; ul: "fn.ul"; um: "fn.um"; un: "fn.un"; uo: "fn.uo"; up: "fn.up"; uq: "fn.uq"; ur: "fn.ur"; us: "fn.us"; ut: "fn.ut"; uu: "fn.uu"; uv: "fn.uv"; uw: "fn.uw"; ux: "fn.ux"; uy: "fn.uy"; uz: "fn.uz"; va: "fn.va"; vb: "fn.vb"; vc: "fn.vc"; vd: "fn.vd"; ve: "fn.ve"; vf: "fn.vf"; vg: "fn.vg"; vh: "fn.vh"; vi: "fn.vi"; vj: "fn.vj"; vk: "fn.vk"; vl: "fn.vl"; vm: "fn.vm"; vn: "fn.vn"; vo: "fn.vo"; vp: "fn.vp"; vq: "fn.vq"; vr: "fn.vr"; vs: "fn.vs"; vt: "fn.vt"; vu: "fn.vu"; vv: "fn.vv"; vw: "fn.vw"; vx: "fn.vx"; vy: "fn.vy"; vz: "fn.vz"; wa: "fn.wa"; wb: "fn.wb"; wc: "fn.wc"; wd: "fn.wd"; we: "fn.we"; wf: "fn.wf"; wg: "fn.wg"; wh: "fn.wh"; wi: "fn.wi"; wj: "fn.wj"; wk: "fn.wk"; wl: "fn.wl"; wm: "fn.wm"; wn: "fn.wn"; wo: "fn.wo"; wp: "fn.wp"; wq: "fn.wq"; wr: "fn.wr"; ws: "fn.ws"; wt: "fn.wt"; wu: "fn.wu"; wv: "fn.wv"; ww: "fn.ww"; wx: "fn.wx"; wy: "fn.wy"; wz: "fn.wz"; xa: "fn.xa"; xb: "fn.xb"; xc: "fn.xc"; xd: "fn.xd"; xe: "fn.xe"; xf: "fn.xf"; xg: "fn.xg"; xh: "fn.xh"; xi: "fn.xi"; xj: "fn.xj"; xk: "fn.xk"; xl: "fn.xl"; xm: "fn.xm"; xn: "fn.xn"; xo: "fn.xo"; xp: "fn.xp"; xq: "fn.xq"; xr: "fn.xr"; xs: "fn.xs"; xt: "fn.xt"; xu: "fn.xu"; xv: "fn.xv"; xw: "fn.xw"; xx: "fn.xx"; xy: "fn.xy"; xz: "fn.xz"; ya: "fn.ya"; yb: "fn.yb"; yc: "fn.yc"; yd: "fn.yd"; ye: "fn.ye"; yf: "fn.yf"; yg: "fn.yg"; yh: "fn.yh"; yi: "fn.yi"; yj: "fn.yj"; yk: "fn.yk"; yl: "fn.yl"; ym: "fn.ym"; yn: "fn.yn"; yo: "fn.yo"; yp: "fn.yp"; yq: "fn.yq"; yr: "fn.yr"; ys: "fn.ys"; yt: "fn.yt"; yu: "fn.yu"; yv: "fn.yv"; yw: "fn.yw"; yx: "fn.yx"; yy: "fn.yy"; yz: "fn.yz"; za: "fn.za"; zb: "fn.zb"; zc: "fn.zc"; zd: "fn.zd"; ze: "fn.ze"; zf: "fn.zf"; zg: "fn.zg"; zh: "fn.zh"; zi: "fn.zi"; zj: "fn.zj"; zk: "fn.zk"; zl: "fn.zl"; zm: "fn.zm"; zn: "fn.zn"; zo: "fn.zo"; zp: "fn.zp"; zq: "fn.zq"; zr: "fn.zr"; zs: "fn.zs"; zt: "fn.zt"; zu: "fn.zu"; zv: "fn.zv"; zw: "fn.zw"; zx: "fn.zx"; zy: "fn.zy"; zz: "fn.zz"; }; fo: { aa: "fo.aa"; ab: "fo.ab"; ac: "fo.ac"; ad: "fo.ad"; ae: "fo.ae"; af: "fo.af"; ag: "fo.ag"; ah: "fo.ah"; ai: "fo.ai"; aj: "fo.aj"; ak: "fo.ak"; al: "fo.al"; am: "fo.am"; an: "fo.an"; ao: "fo.ao"; ap: "fo.ap"; aq: "fo.aq"; ar: "fo.ar"; as: "fo.as"; at: "fo.at"; au: "fo.au"; av: "fo.av"; aw: "fo.aw"; ax: "fo.ax"; ay: "fo.ay"; az: "fo.az"; ba: "fo.ba"; bb: "fo.bb"; bc: "fo.bc"; bd: "fo.bd"; be: "fo.be"; bf: "fo.bf"; bg: "fo.bg"; bh: "fo.bh"; bi: "fo.bi"; bj: "fo.bj"; bk: "fo.bk"; bl: "fo.bl"; bm: "fo.bm"; bn: "fo.bn"; bo: "fo.bo"; bp: "fo.bp"; bq: "fo.bq"; br: "fo.br"; bs: "fo.bs"; bt: "fo.bt"; bu: "fo.bu"; bv: "fo.bv"; bw: "fo.bw"; bx: "fo.bx"; by: "fo.by"; bz: "fo.bz"; ca: "fo.ca"; cb: "fo.cb"; cc: "fo.cc"; cd: "fo.cd"; ce: "fo.ce"; cf: "fo.cf"; cg: "fo.cg"; ch: "fo.ch"; ci: "fo.ci"; cj: "fo.cj"; ck: "fo.ck"; cl: "fo.cl"; cm: "fo.cm"; cn: "fo.cn"; co: "fo.co"; cp: "fo.cp"; cq: "fo.cq"; cr: "fo.cr"; cs: "fo.cs"; ct: "fo.ct"; cu: "fo.cu"; cv: "fo.cv"; cw: "fo.cw"; cx: "fo.cx"; cy: "fo.cy"; cz: "fo.cz"; da: "fo.da"; db: "fo.db"; dc: "fo.dc"; dd: "fo.dd"; de: "fo.de"; df: "fo.df"; dg: "fo.dg"; dh: "fo.dh"; di: "fo.di"; dj: "fo.dj"; dk: "fo.dk"; dl: "fo.dl"; dm: "fo.dm"; dn: "fo.dn"; do: "fo.do"; dp: "fo.dp"; dq: "fo.dq"; dr: "fo.dr"; ds: "fo.ds"; dt: "fo.dt"; du: "fo.du"; dv: "fo.dv"; dw: "fo.dw"; dx: "fo.dx"; dy: "fo.dy"; dz: "fo.dz"; ea: "fo.ea"; eb: "fo.eb"; ec: "fo.ec"; ed: "fo.ed"; ee: "fo.ee"; ef: "fo.ef"; eg: "fo.eg"; eh: "fo.eh"; ei: "fo.ei"; ej: "fo.ej"; ek: "fo.ek"; el: "fo.el"; em: "fo.em"; en: "fo.en"; eo: "fo.eo"; ep: "fo.ep"; eq: "fo.eq"; er: "fo.er"; es: "fo.es"; et: "fo.et"; eu: "fo.eu"; ev: "fo.ev"; ew: "fo.ew"; ex: "fo.ex"; ey: "fo.ey"; ez: "fo.ez"; fa: "fo.fa"; fb: "fo.fb"; fc: "fo.fc"; fd: "fo.fd"; fe: "fo.fe"; ff: "fo.ff"; fg: "fo.fg"; fh: "fo.fh"; fi: "fo.fi"; fj: "fo.fj"; fk: "fo.fk"; fl: "fo.fl"; fm: "fo.fm"; fn: "fo.fn"; fo: "fo.fo"; fp: "fo.fp"; fq: "fo.fq"; fr: "fo.fr"; fs: "fo.fs"; ft: "fo.ft"; fu: "fo.fu"; fv: "fo.fv"; fw: "fo.fw"; fx: "fo.fx"; fy: "fo.fy"; fz: "fo.fz"; ga: "fo.ga"; gb: "fo.gb"; gc: "fo.gc"; gd: "fo.gd"; ge: "fo.ge"; gf: "fo.gf"; gg: "fo.gg"; gh: "fo.gh"; gi: "fo.gi"; gj: "fo.gj"; gk: "fo.gk"; gl: "fo.gl"; gm: "fo.gm"; gn: "fo.gn"; go: "fo.go"; gp: "fo.gp"; gq: "fo.gq"; gr: "fo.gr"; gs: "fo.gs"; gt: "fo.gt"; gu: "fo.gu"; gv: "fo.gv"; gw: "fo.gw"; gx: "fo.gx"; gy: "fo.gy"; gz: "fo.gz"; ha: "fo.ha"; hb: "fo.hb"; hc: "fo.hc"; hd: "fo.hd"; he: "fo.he"; hf: "fo.hf"; hg: "fo.hg"; hh: "fo.hh"; hi: "fo.hi"; hj: "fo.hj"; hk: "fo.hk"; hl: "fo.hl"; hm: "fo.hm"; hn: "fo.hn"; ho: "fo.ho"; hp: "fo.hp"; hq: "fo.hq"; hr: "fo.hr"; hs: "fo.hs"; ht: "fo.ht"; hu: "fo.hu"; hv: "fo.hv"; hw: "fo.hw"; hx: "fo.hx"; hy: "fo.hy"; hz: "fo.hz"; ia: "fo.ia"; ib: "fo.ib"; ic: "fo.ic"; id: "fo.id"; ie: "fo.ie"; if: "fo.if"; ig: "fo.ig"; ih: "fo.ih"; ii: "fo.ii"; ij: "fo.ij"; ik: "fo.ik"; il: "fo.il"; im: "fo.im"; in: "fo.in"; io: "fo.io"; ip: "fo.ip"; iq: "fo.iq"; ir: "fo.ir"; is: "fo.is"; it: "fo.it"; iu: "fo.iu"; iv: "fo.iv"; iw: "fo.iw"; ix: "fo.ix"; iy: "fo.iy"; iz: "fo.iz"; ja: "fo.ja"; jb: "fo.jb"; jc: "fo.jc"; jd: "fo.jd"; je: "fo.je"; jf: "fo.jf"; jg: "fo.jg"; jh: "fo.jh"; ji: "fo.ji"; jj: "fo.jj"; jk: "fo.jk"; jl: "fo.jl"; jm: "fo.jm"; jn: "fo.jn"; jo: "fo.jo"; jp: "fo.jp"; jq: "fo.jq"; jr: "fo.jr"; js: "fo.js"; jt: "fo.jt"; ju: "fo.ju"; jv: "fo.jv"; jw: "fo.jw"; jx: "fo.jx"; jy: "fo.jy"; jz: "fo.jz"; ka: "fo.ka"; kb: "fo.kb"; kc: "fo.kc"; kd: "fo.kd"; ke: "fo.ke"; kf: "fo.kf"; kg: "fo.kg"; kh: "fo.kh"; ki: "fo.ki"; kj: "fo.kj"; kk: "fo.kk"; kl: "fo.kl"; km: "fo.km"; kn: "fo.kn"; ko: "fo.ko"; kp: "fo.kp"; kq: "fo.kq"; kr: "fo.kr"; ks: "fo.ks"; kt: "fo.kt"; ku: "fo.ku"; kv: "fo.kv"; kw: "fo.kw"; kx: "fo.kx"; ky: "fo.ky"; kz: "fo.kz"; la: "fo.la"; lb: "fo.lb"; lc: "fo.lc"; ld: "fo.ld"; le: "fo.le"; lf: "fo.lf"; lg: "fo.lg"; lh: "fo.lh"; li: "fo.li"; lj: "fo.lj"; lk: "fo.lk"; ll: "fo.ll"; lm: "fo.lm"; ln: "fo.ln"; lo: "fo.lo"; lp: "fo.lp"; lq: "fo.lq"; lr: "fo.lr"; ls: "fo.ls"; lt: "fo.lt"; lu: "fo.lu"; lv: "fo.lv"; lw: "fo.lw"; lx: "fo.lx"; ly: "fo.ly"; lz: "fo.lz"; ma: "fo.ma"; mb: "fo.mb"; mc: "fo.mc"; md: "fo.md"; me: "fo.me"; mf: "fo.mf"; mg: "fo.mg"; mh: "fo.mh"; mi: "fo.mi"; mj: "fo.mj"; mk: "fo.mk"; ml: "fo.ml"; mm: "fo.mm"; mn: "fo.mn"; mo: "fo.mo"; mp: "fo.mp"; mq: "fo.mq"; mr: "fo.mr"; ms: "fo.ms"; mt: "fo.mt"; mu: "fo.mu"; mv: "fo.mv"; mw: "fo.mw"; mx: "fo.mx"; my: "fo.my"; mz: "fo.mz"; na: "fo.na"; nb: "fo.nb"; nc: "fo.nc"; nd: "fo.nd"; ne: "fo.ne"; nf: "fo.nf"; ng: "fo.ng"; nh: "fo.nh"; ni: "fo.ni"; nj: "fo.nj"; nk: "fo.nk"; nl: "fo.nl"; nm: "fo.nm"; nn: "fo.nn"; no: "fo.no"; np: "fo.np"; nq: "fo.nq"; nr: "fo.nr"; ns: "fo.ns"; nt: "fo.nt"; nu: "fo.nu"; nv: "fo.nv"; nw: "fo.nw"; nx: "fo.nx"; ny: "fo.ny"; nz: "fo.nz"; oa: "fo.oa"; ob: "fo.ob"; oc: "fo.oc"; od: "fo.od"; oe: "fo.oe"; of: "fo.of"; og: "fo.og"; oh: "fo.oh"; oi: "fo.oi"; oj: "fo.oj"; ok: "fo.ok"; ol: "fo.ol"; om: "fo.om"; on: "fo.on"; oo: "fo.oo"; op: "fo.op"; oq: "fo.oq"; or: "fo.or"; os: "fo.os"; ot: "fo.ot"; ou: "fo.ou"; ov: "fo.ov"; ow: "fo.ow"; ox: "fo.ox"; oy: "fo.oy"; oz: "fo.oz"; pa: "fo.pa"; pb: "fo.pb"; pc: "fo.pc"; pd: "fo.pd"; pe: "fo.pe"; pf: "fo.pf"; pg: "fo.pg"; ph: "fo.ph"; pi: "fo.pi"; pj: "fo.pj"; pk: "fo.pk"; pl: "fo.pl"; pm: "fo.pm"; pn: "fo.pn"; po: "fo.po"; pp: "fo.pp"; pq: "fo.pq"; pr: "fo.pr"; ps: "fo.ps"; pt: "fo.pt"; pu: "fo.pu"; pv: "fo.pv"; pw: "fo.pw"; px: "fo.px"; py: "fo.py"; pz: "fo.pz"; qa: "fo.qa"; qb: "fo.qb"; qc: "fo.qc"; qd: "fo.qd"; qe: "fo.qe"; qf: "fo.qf"; qg: "fo.qg"; qh: "fo.qh"; qi: "fo.qi"; qj: "fo.qj"; qk: "fo.qk"; ql: "fo.ql"; qm: "fo.qm"; qn: "fo.qn"; qo: "fo.qo"; qp: "fo.qp"; qq: "fo.qq"; qr: "fo.qr"; qs: "fo.qs"; qt: "fo.qt"; qu: "fo.qu"; qv: "fo.qv"; qw: "fo.qw"; qx: "fo.qx"; qy: "fo.qy"; qz: "fo.qz"; ra: "fo.ra"; rb: "fo.rb"; rc: "fo.rc"; rd: "fo.rd"; re: "fo.re"; rf: "fo.rf"; rg: "fo.rg"; rh: "fo.rh"; ri: "fo.ri"; rj: "fo.rj"; rk: "fo.rk"; rl: "fo.rl"; rm: "fo.rm"; rn: "fo.rn"; ro: "fo.ro"; rp: "fo.rp"; rq: "fo.rq"; rr: "fo.rr"; rs: "fo.rs"; rt: "fo.rt"; ru: "fo.ru"; rv: "fo.rv"; rw: "fo.rw"; rx: "fo.rx"; ry: "fo.ry"; rz: "fo.rz"; sa: "fo.sa"; sb: "fo.sb"; sc: "fo.sc"; sd: "fo.sd"; se: "fo.se"; sf: "fo.sf"; sg: "fo.sg"; sh: "fo.sh"; si: "fo.si"; sj: "fo.sj"; sk: "fo.sk"; sl: "fo.sl"; sm: "fo.sm"; sn: "fo.sn"; so: "fo.so"; sp: "fo.sp"; sq: "fo.sq"; sr: "fo.sr"; ss: "fo.ss"; st: "fo.st"; su: "fo.su"; sv: "fo.sv"; sw: "fo.sw"; sx: "fo.sx"; sy: "fo.sy"; sz: "fo.sz"; ta: "fo.ta"; tb: "fo.tb"; tc: "fo.tc"; td: "fo.td"; te: "fo.te"; tf: "fo.tf"; tg: "fo.tg"; th: "fo.th"; ti: "fo.ti"; tj: "fo.tj"; tk: "fo.tk"; tl: "fo.tl"; tm: "fo.tm"; tn: "fo.tn"; to: "fo.to"; tp: "fo.tp"; tq: "fo.tq"; tr: "fo.tr"; ts: "fo.ts"; tt: "fo.tt"; tu: "fo.tu"; tv: "fo.tv"; tw: "fo.tw"; tx: "fo.tx"; ty: "fo.ty"; tz: "fo.tz"; ua: "fo.ua"; ub: "fo.ub"; uc: "fo.uc"; ud: "fo.ud"; ue: "fo.ue"; uf: "fo.uf"; ug: "fo.ug"; uh: "fo.uh"; ui: "fo.ui"; uj: "fo.uj"; uk: "fo.uk"; ul: "fo.ul"; um: "fo.um"; un: "fo.un"; uo: "fo.uo"; up: "fo.up"; uq: "fo.uq"; ur: "fo.ur"; us: "fo.us"; ut: "fo.ut"; uu: "fo.uu"; uv: "fo.uv"; uw: "fo.uw"; ux: "fo.ux"; uy: "fo.uy"; uz: "fo.uz"; va: "fo.va"; vb: "fo.vb"; vc: "fo.vc"; vd: "fo.vd"; ve: "fo.ve"; vf: "fo.vf"; vg: "fo.vg"; vh: "fo.vh"; vi: "fo.vi"; vj: "fo.vj"; vk: "fo.vk"; vl: "fo.vl"; vm: "fo.vm"; vn: "fo.vn"; vo: "fo.vo"; vp: "fo.vp"; vq: "fo.vq"; vr: "fo.vr"; vs: "fo.vs"; vt: "fo.vt"; vu: "fo.vu"; vv: "fo.vv"; vw: "fo.vw"; vx: "fo.vx"; vy: "fo.vy"; vz: "fo.vz"; wa: "fo.wa"; wb: "fo.wb"; wc: "fo.wc"; wd: "fo.wd"; we: "fo.we"; wf: "fo.wf"; wg: "fo.wg"; wh: "fo.wh"; wi: "fo.wi"; wj: "fo.wj"; wk: "fo.wk"; wl: "fo.wl"; wm: "fo.wm"; wn: "fo.wn"; wo: "fo.wo"; wp: "fo.wp"; wq: "fo.wq"; wr: "fo.wr"; ws: "fo.ws"; wt: "fo.wt"; wu: "fo.wu"; wv: "fo.wv"; ww: "fo.ww"; wx: "fo.wx"; wy: "fo.wy"; wz: "fo.wz"; xa: "fo.xa"; xb: "fo.xb"; xc: "fo.xc"; xd: "fo.xd"; xe: "fo.xe"; xf: "fo.xf"; xg: "fo.xg"; xh: "fo.xh"; xi: "fo.xi"; xj: "fo.xj"; xk: "fo.xk"; xl: "fo.xl"; xm: "fo.xm"; xn: "fo.xn"; xo: "fo.xo"; xp: "fo.xp"; xq: "fo.xq"; xr: "fo.xr"; xs: "fo.xs"; xt: "fo.xt"; xu: "fo.xu"; xv: "fo.xv"; xw: "fo.xw"; xx: "fo.xx"; xy: "fo.xy"; xz: "fo.xz"; ya: "fo.ya"; yb: "fo.yb"; yc: "fo.yc"; yd: "fo.yd"; ye: "fo.ye"; yf: "fo.yf"; yg: "fo.yg"; yh: "fo.yh"; yi: "fo.yi"; yj: "fo.yj"; yk: "fo.yk"; yl: "fo.yl"; ym: "fo.ym"; yn: "fo.yn"; yo: "fo.yo"; yp: "fo.yp"; yq: "fo.yq"; yr: "fo.yr"; ys: "fo.ys"; yt: "fo.yt"; yu: "fo.yu"; yv: "fo.yv"; yw: "fo.yw"; yx: "fo.yx"; yy: "fo.yy"; yz: "fo.yz"; za: "fo.za"; zb: "fo.zb"; zc: "fo.zc"; zd: "fo.zd"; ze: "fo.ze"; zf: "fo.zf"; zg: "fo.zg"; zh: "fo.zh"; zi: "fo.zi"; zj: "fo.zj"; zk: "fo.zk"; zl: "fo.zl"; zm: "fo.zm"; zn: "fo.zn"; zo: "fo.zo"; zp: "fo.zp"; zq: "fo.zq"; zr: "fo.zr"; zs: "fo.zs"; zt: "fo.zt"; zu: "fo.zu"; zv: "fo.zv"; zw: "fo.zw"; zx: "fo.zx"; zy: "fo.zy"; zz: "fo.zz"; }; fp: { aa: "fp.aa"; ab: "fp.ab"; ac: "fp.ac"; ad: "fp.ad"; ae: "fp.ae"; af: "fp.af"; ag: "fp.ag"; ah: "fp.ah"; ai: "fp.ai"; aj: "fp.aj"; ak: "fp.ak"; al: "fp.al"; am: "fp.am"; an: "fp.an"; ao: "fp.ao"; ap: "fp.ap"; aq: "fp.aq"; ar: "fp.ar"; as: "fp.as"; at: "fp.at"; au: "fp.au"; av: "fp.av"; aw: "fp.aw"; ax: "fp.ax"; ay: "fp.ay"; az: "fp.az"; ba: "fp.ba"; bb: "fp.bb"; bc: "fp.bc"; bd: "fp.bd"; be: "fp.be"; bf: "fp.bf"; bg: "fp.bg"; bh: "fp.bh"; bi: "fp.bi"; bj: "fp.bj"; bk: "fp.bk"; bl: "fp.bl"; bm: "fp.bm"; bn: "fp.bn"; bo: "fp.bo"; bp: "fp.bp"; bq: "fp.bq"; br: "fp.br"; bs: "fp.bs"; bt: "fp.bt"; bu: "fp.bu"; bv: "fp.bv"; bw: "fp.bw"; bx: "fp.bx"; by: "fp.by"; bz: "fp.bz"; ca: "fp.ca"; cb: "fp.cb"; cc: "fp.cc"; cd: "fp.cd"; ce: "fp.ce"; cf: "fp.cf"; cg: "fp.cg"; ch: "fp.ch"; ci: "fp.ci"; cj: "fp.cj"; ck: "fp.ck"; cl: "fp.cl"; cm: "fp.cm"; cn: "fp.cn"; co: "fp.co"; cp: "fp.cp"; cq: "fp.cq"; cr: "fp.cr"; cs: "fp.cs"; ct: "fp.ct"; cu: "fp.cu"; cv: "fp.cv"; cw: "fp.cw"; cx: "fp.cx"; cy: "fp.cy"; cz: "fp.cz"; da: "fp.da"; db: "fp.db"; dc: "fp.dc"; dd: "fp.dd"; de: "fp.de"; df: "fp.df"; dg: "fp.dg"; dh: "fp.dh"; di: "fp.di"; dj: "fp.dj"; dk: "fp.dk"; dl: "fp.dl"; dm: "fp.dm"; dn: "fp.dn"; do: "fp.do"; dp: "fp.dp"; dq: "fp.dq"; dr: "fp.dr"; ds: "fp.ds"; dt: "fp.dt"; du: "fp.du"; dv: "fp.dv"; dw: "fp.dw"; dx: "fp.dx"; dy: "fp.dy"; dz: "fp.dz"; ea: "fp.ea"; eb: "fp.eb"; ec: "fp.ec"; ed: "fp.ed"; ee: "fp.ee"; ef: "fp.ef"; eg: "fp.eg"; eh: "fp.eh"; ei: "fp.ei"; ej: "fp.ej"; ek: "fp.ek"; el: "fp.el"; em: "fp.em"; en: "fp.en"; eo: "fp.eo"; ep: "fp.ep"; eq: "fp.eq"; er: "fp.er"; es: "fp.es"; et: "fp.et"; eu: "fp.eu"; ev: "fp.ev"; ew: "fp.ew"; ex: "fp.ex"; ey: "fp.ey"; ez: "fp.ez"; fa: "fp.fa"; fb: "fp.fb"; fc: "fp.fc"; fd: "fp.fd"; fe: "fp.fe"; ff: "fp.ff"; fg: "fp.fg"; fh: "fp.fh"; fi: "fp.fi"; fj: "fp.fj"; fk: "fp.fk"; fl: "fp.fl"; fm: "fp.fm"; fn: "fp.fn"; fo: "fp.fo"; fp: "fp.fp"; fq: "fp.fq"; fr: "fp.fr"; fs: "fp.fs"; ft: "fp.ft"; fu: "fp.fu"; fv: "fp.fv"; fw: "fp.fw"; fx: "fp.fx"; fy: "fp.fy"; fz: "fp.fz"; ga: "fp.ga"; gb: "fp.gb"; gc: "fp.gc"; gd: "fp.gd"; ge: "fp.ge"; gf: "fp.gf"; gg: "fp.gg"; gh: "fp.gh"; gi: "fp.gi"; gj: "fp.gj"; gk: "fp.gk"; gl: "fp.gl"; gm: "fp.gm"; gn: "fp.gn"; go: "fp.go"; gp: "fp.gp"; gq: "fp.gq"; gr: "fp.gr"; gs: "fp.gs"; gt: "fp.gt"; gu: "fp.gu"; gv: "fp.gv"; gw: "fp.gw"; gx: "fp.gx"; gy: "fp.gy"; gz: "fp.gz"; ha: "fp.ha"; hb: "fp.hb"; hc: "fp.hc"; hd: "fp.hd"; he: "fp.he"; hf: "fp.hf"; hg: "fp.hg"; hh: "fp.hh"; hi: "fp.hi"; hj: "fp.hj"; hk: "fp.hk"; hl: "fp.hl"; hm: "fp.hm"; hn: "fp.hn"; ho: "fp.ho"; hp: "fp.hp"; hq: "fp.hq"; hr: "fp.hr"; hs: "fp.hs"; ht: "fp.ht"; hu: "fp.hu"; hv: "fp.hv"; hw: "fp.hw"; hx: "fp.hx"; hy: "fp.hy"; hz: "fp.hz"; ia: "fp.ia"; ib: "fp.ib"; ic: "fp.ic"; id: "fp.id"; ie: "fp.ie"; if: "fp.if"; ig: "fp.ig"; ih: "fp.ih"; ii: "fp.ii"; ij: "fp.ij"; ik: "fp.ik"; il: "fp.il"; im: "fp.im"; in: "fp.in"; io: "fp.io"; ip: "fp.ip"; iq: "fp.iq"; ir: "fp.ir"; is: "fp.is"; it: "fp.it"; iu: "fp.iu"; iv: "fp.iv"; iw: "fp.iw"; ix: "fp.ix"; iy: "fp.iy"; iz: "fp.iz"; ja: "fp.ja"; jb: "fp.jb"; jc: "fp.jc"; jd: "fp.jd"; je: "fp.je"; jf: "fp.jf"; jg: "fp.jg"; jh: "fp.jh"; ji: "fp.ji"; jj: "fp.jj"; jk: "fp.jk"; jl: "fp.jl"; jm: "fp.jm"; jn: "fp.jn"; jo: "fp.jo"; jp: "fp.jp"; jq: "fp.jq"; jr: "fp.jr"; js: "fp.js"; jt: "fp.jt"; ju: "fp.ju"; jv: "fp.jv"; jw: "fp.jw"; jx: "fp.jx"; jy: "fp.jy"; jz: "fp.jz"; ka: "fp.ka"; kb: "fp.kb"; kc: "fp.kc"; kd: "fp.kd"; ke: "fp.ke"; kf: "fp.kf"; kg: "fp.kg"; kh: "fp.kh"; ki: "fp.ki"; kj: "fp.kj"; kk: "fp.kk"; kl: "fp.kl"; km: "fp.km"; kn: "fp.kn"; ko: "fp.ko"; kp: "fp.kp"; kq: "fp.kq"; kr: "fp.kr"; ks: "fp.ks"; kt: "fp.kt"; ku: "fp.ku"; kv: "fp.kv"; kw: "fp.kw"; kx: "fp.kx"; ky: "fp.ky"; kz: "fp.kz"; la: "fp.la"; lb: "fp.lb"; lc: "fp.lc"; ld: "fp.ld"; le: "fp.le"; lf: "fp.lf"; lg: "fp.lg"; lh: "fp.lh"; li: "fp.li"; lj: "fp.lj"; lk: "fp.lk"; ll: "fp.ll"; lm: "fp.lm"; ln: "fp.ln"; lo: "fp.lo"; lp: "fp.lp"; lq: "fp.lq"; lr: "fp.lr"; ls: "fp.ls"; lt: "fp.lt"; lu: "fp.lu"; lv: "fp.lv"; lw: "fp.lw"; lx: "fp.lx"; ly: "fp.ly"; lz: "fp.lz"; ma: "fp.ma"; mb: "fp.mb"; mc: "fp.mc"; md: "fp.md"; me: "fp.me"; mf: "fp.mf"; mg: "fp.mg"; mh: "fp.mh"; mi: "fp.mi"; mj: "fp.mj"; mk: "fp.mk"; ml: "fp.ml"; mm: "fp.mm"; mn: "fp.mn"; mo: "fp.mo"; mp: "fp.mp"; mq: "fp.mq"; mr: "fp.mr"; ms: "fp.ms"; mt: "fp.mt"; mu: "fp.mu"; mv: "fp.mv"; mw: "fp.mw"; mx: "fp.mx"; my: "fp.my"; mz: "fp.mz"; na: "fp.na"; nb: "fp.nb"; nc: "fp.nc"; nd: "fp.nd"; ne: "fp.ne"; nf: "fp.nf"; ng: "fp.ng"; nh: "fp.nh"; ni: "fp.ni"; nj: "fp.nj"; nk: "fp.nk"; nl: "fp.nl"; nm: "fp.nm"; nn: "fp.nn"; no: "fp.no"; np: "fp.np"; nq: "fp.nq"; nr: "fp.nr"; ns: "fp.ns"; nt: "fp.nt"; nu: "fp.nu"; nv: "fp.nv"; nw: "fp.nw"; nx: "fp.nx"; ny: "fp.ny"; nz: "fp.nz"; oa: "fp.oa"; ob: "fp.ob"; oc: "fp.oc"; od: "fp.od"; oe: "fp.oe"; of: "fp.of"; og: "fp.og"; oh: "fp.oh"; oi: "fp.oi"; oj: "fp.oj"; ok: "fp.ok"; ol: "fp.ol"; om: "fp.om"; on: "fp.on"; oo: "fp.oo"; op: "fp.op"; oq: "fp.oq"; or: "fp.or"; os: "fp.os"; ot: "fp.ot"; ou: "fp.ou"; ov: "fp.ov"; ow: "fp.ow"; ox: "fp.ox"; oy: "fp.oy"; oz: "fp.oz"; pa: "fp.pa"; pb: "fp.pb"; pc: "fp.pc"; pd: "fp.pd"; pe: "fp.pe"; pf: "fp.pf"; pg: "fp.pg"; ph: "fp.ph"; pi: "fp.pi"; pj: "fp.pj"; pk: "fp.pk"; pl: "fp.pl"; pm: "fp.pm"; pn: "fp.pn"; po: "fp.po"; pp: "fp.pp"; pq: "fp.pq"; pr: "fp.pr"; ps: "fp.ps"; pt: "fp.pt"; pu: "fp.pu"; pv: "fp.pv"; pw: "fp.pw"; px: "fp.px"; py: "fp.py"; pz: "fp.pz"; qa: "fp.qa"; qb: "fp.qb"; qc: "fp.qc"; qd: "fp.qd"; qe: "fp.qe"; qf: "fp.qf"; qg: "fp.qg"; qh: "fp.qh"; qi: "fp.qi"; qj: "fp.qj"; qk: "fp.qk"; ql: "fp.ql"; qm: "fp.qm"; qn: "fp.qn"; qo: "fp.qo"; qp: "fp.qp"; qq: "fp.qq"; qr: "fp.qr"; qs: "fp.qs"; qt: "fp.qt"; qu: "fp.qu"; qv: "fp.qv"; qw: "fp.qw"; qx: "fp.qx"; qy: "fp.qy"; qz: "fp.qz"; ra: "fp.ra"; rb: "fp.rb"; rc: "fp.rc"; rd: "fp.rd"; re: "fp.re"; rf: "fp.rf"; rg: "fp.rg"; rh: "fp.rh"; ri: "fp.ri"; rj: "fp.rj"; rk: "fp.rk"; rl: "fp.rl"; rm: "fp.rm"; rn: "fp.rn"; ro: "fp.ro"; rp: "fp.rp"; rq: "fp.rq"; rr: "fp.rr"; rs: "fp.rs"; rt: "fp.rt"; ru: "fp.ru"; rv: "fp.rv"; rw: "fp.rw"; rx: "fp.rx"; ry: "fp.ry"; rz: "fp.rz"; sa: "fp.sa"; sb: "fp.sb"; sc: "fp.sc"; sd: "fp.sd"; se: "fp.se"; sf: "fp.sf"; sg: "fp.sg"; sh: "fp.sh"; si: "fp.si"; sj: "fp.sj"; sk: "fp.sk"; sl: "fp.sl"; sm: "fp.sm"; sn: "fp.sn"; so: "fp.so"; sp: "fp.sp"; sq: "fp.sq"; sr: "fp.sr"; ss: "fp.ss"; st: "fp.st"; su: "fp.su"; sv: "fp.sv"; sw: "fp.sw"; sx: "fp.sx"; sy: "fp.sy"; sz: "fp.sz"; ta: "fp.ta"; tb: "fp.tb"; tc: "fp.tc"; td: "fp.td"; te: "fp.te"; tf: "fp.tf"; tg: "fp.tg"; th: "fp.th"; ti: "fp.ti"; tj: "fp.tj"; tk: "fp.tk"; tl: "fp.tl"; tm: "fp.tm"; tn: "fp.tn"; to: "fp.to"; tp: "fp.tp"; tq: "fp.tq"; tr: "fp.tr"; ts: "fp.ts"; tt: "fp.tt"; tu: "fp.tu"; tv: "fp.tv"; tw: "fp.tw"; tx: "fp.tx"; ty: "fp.ty"; tz: "fp.tz"; ua: "fp.ua"; ub: "fp.ub"; uc: "fp.uc"; ud: "fp.ud"; ue: "fp.ue"; uf: "fp.uf"; ug: "fp.ug"; uh: "fp.uh"; ui: "fp.ui"; uj: "fp.uj"; uk: "fp.uk"; ul: "fp.ul"; um: "fp.um"; un: "fp.un"; uo: "fp.uo"; up: "fp.up"; uq: "fp.uq"; ur: "fp.ur"; us: "fp.us"; ut: "fp.ut"; uu: "fp.uu"; uv: "fp.uv"; uw: "fp.uw"; ux: "fp.ux"; uy: "fp.uy"; uz: "fp.uz"; va: "fp.va"; vb: "fp.vb"; vc: "fp.vc"; vd: "fp.vd"; ve: "fp.ve"; vf: "fp.vf"; vg: "fp.vg"; vh: "fp.vh"; vi: "fp.vi"; vj: "fp.vj"; vk: "fp.vk"; vl: "fp.vl"; vm: "fp.vm"; vn: "fp.vn"; vo: "fp.vo"; vp: "fp.vp"; vq: "fp.vq"; vr: "fp.vr"; vs: "fp.vs"; vt: "fp.vt"; vu: "fp.vu"; vv: "fp.vv"; vw: "fp.vw"; vx: "fp.vx"; vy: "fp.vy"; vz: "fp.vz"; wa: "fp.wa"; wb: "fp.wb"; wc: "fp.wc"; wd: "fp.wd"; we: "fp.we"; wf: "fp.wf"; wg: "fp.wg"; wh: "fp.wh"; wi: "fp.wi"; wj: "fp.wj"; wk: "fp.wk"; wl: "fp.wl"; wm: "fp.wm"; wn: "fp.wn"; wo: "fp.wo"; wp: "fp.wp"; wq: "fp.wq"; wr: "fp.wr"; ws: "fp.ws"; wt: "fp.wt"; wu: "fp.wu"; wv: "fp.wv"; ww: "fp.ww"; wx: "fp.wx"; wy: "fp.wy"; wz: "fp.wz"; xa: "fp.xa"; xb: "fp.xb"; xc: "fp.xc"; xd: "fp.xd"; xe: "fp.xe"; xf: "fp.xf"; xg: "fp.xg"; xh: "fp.xh"; xi: "fp.xi"; xj: "fp.xj"; xk: "fp.xk"; xl: "fp.xl"; xm: "fp.xm"; xn: "fp.xn"; xo: "fp.xo"; xp: "fp.xp"; xq: "fp.xq"; xr: "fp.xr"; xs: "fp.xs"; xt: "fp.xt"; xu: "fp.xu"; xv: "fp.xv"; xw: "fp.xw"; xx: "fp.xx"; xy: "fp.xy"; xz: "fp.xz"; ya: "fp.ya"; yb: "fp.yb"; yc: "fp.yc"; yd: "fp.yd"; ye: "fp.ye"; yf: "fp.yf"; yg: "fp.yg"; yh: "fp.yh"; yi: "fp.yi"; yj: "fp.yj"; yk: "fp.yk"; yl: "fp.yl"; ym: "fp.ym"; yn: "fp.yn"; yo: "fp.yo"; yp: "fp.yp"; yq: "fp.yq"; yr: "fp.yr"; ys: "fp.ys"; yt: "fp.yt"; yu: "fp.yu"; yv: "fp.yv"; yw: "fp.yw"; yx: "fp.yx"; yy: "fp.yy"; yz: "fp.yz"; za: "fp.za"; zb: "fp.zb"; zc: "fp.zc"; zd: "fp.zd"; ze: "fp.ze"; zf: "fp.zf"; zg: "fp.zg"; zh: "fp.zh"; zi: "fp.zi"; zj: "fp.zj"; zk: "fp.zk"; zl: "fp.zl"; zm: "fp.zm"; zn: "fp.zn"; zo: "fp.zo"; zp: "fp.zp"; zq: "fp.zq"; zr: "fp.zr"; zs: "fp.zs"; zt: "fp.zt"; zu: "fp.zu"; zv: "fp.zv"; zw: "fp.zw"; zx: "fp.zx"; zy: "fp.zy"; zz: "fp.zz"; }; fq: { aa: "fq.aa"; ab: "fq.ab"; ac: "fq.ac"; ad: "fq.ad"; ae: "fq.ae"; af: "fq.af"; ag: "fq.ag"; ah: "fq.ah"; ai: "fq.ai"; aj: "fq.aj"; ak: "fq.ak"; al: "fq.al"; am: "fq.am"; an: "fq.an"; ao: "fq.ao"; ap: "fq.ap"; aq: "fq.aq"; ar: "fq.ar"; as: "fq.as"; at: "fq.at"; au: "fq.au"; av: "fq.av"; aw: "fq.aw"; ax: "fq.ax"; ay: "fq.ay"; az: "fq.az"; ba: "fq.ba"; bb: "fq.bb"; bc: "fq.bc"; bd: "fq.bd"; be: "fq.be"; bf: "fq.bf"; bg: "fq.bg"; bh: "fq.bh"; bi: "fq.bi"; bj: "fq.bj"; bk: "fq.bk"; bl: "fq.bl"; bm: "fq.bm"; bn: "fq.bn"; bo: "fq.bo"; bp: "fq.bp"; bq: "fq.bq"; br: "fq.br"; bs: "fq.bs"; bt: "fq.bt"; bu: "fq.bu"; bv: "fq.bv"; bw: "fq.bw"; bx: "fq.bx"; by: "fq.by"; bz: "fq.bz"; ca: "fq.ca"; cb: "fq.cb"; cc: "fq.cc"; cd: "fq.cd"; ce: "fq.ce"; cf: "fq.cf"; cg: "fq.cg"; ch: "fq.ch"; ci: "fq.ci"; cj: "fq.cj"; ck: "fq.ck"; cl: "fq.cl"; cm: "fq.cm"; cn: "fq.cn"; co: "fq.co"; cp: "fq.cp"; cq: "fq.cq"; cr: "fq.cr"; cs: "fq.cs"; ct: "fq.ct"; cu: "fq.cu"; cv: "fq.cv"; cw: "fq.cw"; cx: "fq.cx"; cy: "fq.cy"; cz: "fq.cz"; da: "fq.da"; db: "fq.db"; dc: "fq.dc"; dd: "fq.dd"; de: "fq.de"; df: "fq.df"; dg: "fq.dg"; dh: "fq.dh"; di: "fq.di"; dj: "fq.dj"; dk: "fq.dk"; dl: "fq.dl"; dm: "fq.dm"; dn: "fq.dn"; do: "fq.do"; dp: "fq.dp"; dq: "fq.dq"; dr: "fq.dr"; ds: "fq.ds"; dt: "fq.dt"; du: "fq.du"; dv: "fq.dv"; dw: "fq.dw"; dx: "fq.dx"; dy: "fq.dy"; dz: "fq.dz"; ea: "fq.ea"; eb: "fq.eb"; ec: "fq.ec"; ed: "fq.ed"; ee: "fq.ee"; ef: "fq.ef"; eg: "fq.eg"; eh: "fq.eh"; ei: "fq.ei"; ej: "fq.ej"; ek: "fq.ek"; el: "fq.el"; em: "fq.em"; en: "fq.en"; eo: "fq.eo"; ep: "fq.ep"; eq: "fq.eq"; er: "fq.er"; es: "fq.es"; et: "fq.et"; eu: "fq.eu"; ev: "fq.ev"; ew: "fq.ew"; ex: "fq.ex"; ey: "fq.ey"; ez: "fq.ez"; fa: "fq.fa"; fb: "fq.fb"; fc: "fq.fc"; fd: "fq.fd"; fe: "fq.fe"; ff: "fq.ff"; fg: "fq.fg"; fh: "fq.fh"; fi: "fq.fi"; fj: "fq.fj"; fk: "fq.fk"; fl: "fq.fl"; fm: "fq.fm"; fn: "fq.fn"; fo: "fq.fo"; fp: "fq.fp"; fq: "fq.fq"; fr: "fq.fr"; fs: "fq.fs"; ft: "fq.ft"; fu: "fq.fu"; fv: "fq.fv"; fw: "fq.fw"; fx: "fq.fx"; fy: "fq.fy"; fz: "fq.fz"; ga: "fq.ga"; gb: "fq.gb"; gc: "fq.gc"; gd: "fq.gd"; ge: "fq.ge"; gf: "fq.gf"; gg: "fq.gg"; gh: "fq.gh"; gi: "fq.gi"; gj: "fq.gj"; gk: "fq.gk"; gl: "fq.gl"; gm: "fq.gm"; gn: "fq.gn"; go: "fq.go"; gp: "fq.gp"; gq: "fq.gq"; gr: "fq.gr"; gs: "fq.gs"; gt: "fq.gt"; gu: "fq.gu"; gv: "fq.gv"; gw: "fq.gw"; gx: "fq.gx"; gy: "fq.gy"; gz: "fq.gz"; ha: "fq.ha"; hb: "fq.hb"; hc: "fq.hc"; hd: "fq.hd"; he: "fq.he"; hf: "fq.hf"; hg: "fq.hg"; hh: "fq.hh"; hi: "fq.hi"; hj: "fq.hj"; hk: "fq.hk"; hl: "fq.hl"; hm: "fq.hm"; hn: "fq.hn"; ho: "fq.ho"; hp: "fq.hp"; hq: "fq.hq"; hr: "fq.hr"; hs: "fq.hs"; ht: "fq.ht"; hu: "fq.hu"; hv: "fq.hv"; hw: "fq.hw"; hx: "fq.hx"; hy: "fq.hy"; hz: "fq.hz"; ia: "fq.ia"; ib: "fq.ib"; ic: "fq.ic"; id: "fq.id"; ie: "fq.ie"; if: "fq.if"; ig: "fq.ig"; ih: "fq.ih"; ii: "fq.ii"; ij: "fq.ij"; ik: "fq.ik"; il: "fq.il"; im: "fq.im"; in: "fq.in"; io: "fq.io"; ip: "fq.ip"; iq: "fq.iq"; ir: "fq.ir"; is: "fq.is"; it: "fq.it"; iu: "fq.iu"; iv: "fq.iv"; iw: "fq.iw"; ix: "fq.ix"; iy: "fq.iy"; iz: "fq.iz"; ja: "fq.ja"; jb: "fq.jb"; jc: "fq.jc"; jd: "fq.jd"; je: "fq.je"; jf: "fq.jf"; jg: "fq.jg"; jh: "fq.jh"; ji: "fq.ji"; jj: "fq.jj"; jk: "fq.jk"; jl: "fq.jl"; jm: "fq.jm"; jn: "fq.jn"; jo: "fq.jo"; jp: "fq.jp"; jq: "fq.jq"; jr: "fq.jr"; js: "fq.js"; jt: "fq.jt"; ju: "fq.ju"; jv: "fq.jv"; jw: "fq.jw"; jx: "fq.jx"; jy: "fq.jy"; jz: "fq.jz"; ka: "fq.ka"; kb: "fq.kb"; kc: "fq.kc"; kd: "fq.kd"; ke: "fq.ke"; kf: "fq.kf"; kg: "fq.kg"; kh: "fq.kh"; ki: "fq.ki"; kj: "fq.kj"; kk: "fq.kk"; kl: "fq.kl"; km: "fq.km"; kn: "fq.kn"; ko: "fq.ko"; kp: "fq.kp"; kq: "fq.kq"; kr: "fq.kr"; ks: "fq.ks"; kt: "fq.kt"; ku: "fq.ku"; kv: "fq.kv"; kw: "fq.kw"; kx: "fq.kx"; ky: "fq.ky"; kz: "fq.kz"; la: "fq.la"; lb: "fq.lb"; lc: "fq.lc"; ld: "fq.ld"; le: "fq.le"; lf: "fq.lf"; lg: "fq.lg"; lh: "fq.lh"; li: "fq.li"; lj: "fq.lj"; lk: "fq.lk"; ll: "fq.ll"; lm: "fq.lm"; ln: "fq.ln"; lo: "fq.lo"; lp: "fq.lp"; lq: "fq.lq"; lr: "fq.lr"; ls: "fq.ls"; lt: "fq.lt"; lu: "fq.lu"; lv: "fq.lv"; lw: "fq.lw"; lx: "fq.lx"; ly: "fq.ly"; lz: "fq.lz"; ma: "fq.ma"; mb: "fq.mb"; mc: "fq.mc"; md: "fq.md"; me: "fq.me"; mf: "fq.mf"; mg: "fq.mg"; mh: "fq.mh"; mi: "fq.mi"; mj: "fq.mj"; mk: "fq.mk"; ml: "fq.ml"; mm: "fq.mm"; mn: "fq.mn"; mo: "fq.mo"; mp: "fq.mp"; mq: "fq.mq"; mr: "fq.mr"; ms: "fq.ms"; mt: "fq.mt"; mu: "fq.mu"; mv: "fq.mv"; mw: "fq.mw"; mx: "fq.mx"; my: "fq.my"; mz: "fq.mz"; na: "fq.na"; nb: "fq.nb"; nc: "fq.nc"; nd: "fq.nd"; ne: "fq.ne"; nf: "fq.nf"; ng: "fq.ng"; nh: "fq.nh"; ni: "fq.ni"; nj: "fq.nj"; nk: "fq.nk"; nl: "fq.nl"; nm: "fq.nm"; nn: "fq.nn"; no: "fq.no"; np: "fq.np"; nq: "fq.nq"; nr: "fq.nr"; ns: "fq.ns"; nt: "fq.nt"; nu: "fq.nu"; nv: "fq.nv"; nw: "fq.nw"; nx: "fq.nx"; ny: "fq.ny"; nz: "fq.nz"; oa: "fq.oa"; ob: "fq.ob"; oc: "fq.oc"; od: "fq.od"; oe: "fq.oe"; of: "fq.of"; og: "fq.og"; oh: "fq.oh"; oi: "fq.oi"; oj: "fq.oj"; ok: "fq.ok"; ol: "fq.ol"; om: "fq.om"; on: "fq.on"; oo: "fq.oo"; op: "fq.op"; oq: "fq.oq"; or: "fq.or"; os: "fq.os"; ot: "fq.ot"; ou: "fq.ou"; ov: "fq.ov"; ow: "fq.ow"; ox: "fq.ox"; oy: "fq.oy"; oz: "fq.oz"; pa: "fq.pa"; pb: "fq.pb"; pc: "fq.pc"; pd: "fq.pd"; pe: "fq.pe"; pf: "fq.pf"; pg: "fq.pg"; ph: "fq.ph"; pi: "fq.pi"; pj: "fq.pj"; pk: "fq.pk"; pl: "fq.pl"; pm: "fq.pm"; pn: "fq.pn"; po: "fq.po"; pp: "fq.pp"; pq: "fq.pq"; pr: "fq.pr"; ps: "fq.ps"; pt: "fq.pt"; pu: "fq.pu"; pv: "fq.pv"; pw: "fq.pw"; px: "fq.px"; py: "fq.py"; pz: "fq.pz"; qa: "fq.qa"; qb: "fq.qb"; qc: "fq.qc"; qd: "fq.qd"; qe: "fq.qe"; qf: "fq.qf"; qg: "fq.qg"; qh: "fq.qh"; qi: "fq.qi"; qj: "fq.qj"; qk: "fq.qk"; ql: "fq.ql"; qm: "fq.qm"; qn: "fq.qn"; qo: "fq.qo"; qp: "fq.qp"; qq: "fq.qq"; qr: "fq.qr"; qs: "fq.qs"; qt: "fq.qt"; qu: "fq.qu"; qv: "fq.qv"; qw: "fq.qw"; qx: "fq.qx"; qy: "fq.qy"; qz: "fq.qz"; ra: "fq.ra"; rb: "fq.rb"; rc: "fq.rc"; rd: "fq.rd"; re: "fq.re"; rf: "fq.rf"; rg: "fq.rg"; rh: "fq.rh"; ri: "fq.ri"; rj: "fq.rj"; rk: "fq.rk"; rl: "fq.rl"; rm: "fq.rm"; rn: "fq.rn"; ro: "fq.ro"; rp: "fq.rp"; rq: "fq.rq"; rr: "fq.rr"; rs: "fq.rs"; rt: "fq.rt"; ru: "fq.ru"; rv: "fq.rv"; rw: "fq.rw"; rx: "fq.rx"; ry: "fq.ry"; rz: "fq.rz"; sa: "fq.sa"; sb: "fq.sb"; sc: "fq.sc"; sd: "fq.sd"; se: "fq.se"; sf: "fq.sf"; sg: "fq.sg"; sh: "fq.sh"; si: "fq.si"; sj: "fq.sj"; sk: "fq.sk"; sl: "fq.sl"; sm: "fq.sm"; sn: "fq.sn"; so: "fq.so"; sp: "fq.sp"; sq: "fq.sq"; sr: "fq.sr"; ss: "fq.ss"; st: "fq.st"; su: "fq.su"; sv: "fq.sv"; sw: "fq.sw"; sx: "fq.sx"; sy: "fq.sy"; sz: "fq.sz"; ta: "fq.ta"; tb: "fq.tb"; tc: "fq.tc"; td: "fq.td"; te: "fq.te"; tf: "fq.tf"; tg: "fq.tg"; th: "fq.th"; ti: "fq.ti"; tj: "fq.tj"; tk: "fq.tk"; tl: "fq.tl"; tm: "fq.tm"; tn: "fq.tn"; to: "fq.to"; tp: "fq.tp"; tq: "fq.tq"; tr: "fq.tr"; ts: "fq.ts"; tt: "fq.tt"; tu: "fq.tu"; tv: "fq.tv"; tw: "fq.tw"; tx: "fq.tx"; ty: "fq.ty"; tz: "fq.tz"; ua: "fq.ua"; ub: "fq.ub"; uc: "fq.uc"; ud: "fq.ud"; ue: "fq.ue"; uf: "fq.uf"; ug: "fq.ug"; uh: "fq.uh"; ui: "fq.ui"; uj: "fq.uj"; uk: "fq.uk"; ul: "fq.ul"; um: "fq.um"; un: "fq.un"; uo: "fq.uo"; up: "fq.up"; uq: "fq.uq"; ur: "fq.ur"; us: "fq.us"; ut: "fq.ut"; uu: "fq.uu"; uv: "fq.uv"; uw: "fq.uw"; ux: "fq.ux"; uy: "fq.uy"; uz: "fq.uz"; va: "fq.va"; vb: "fq.vb"; vc: "fq.vc"; vd: "fq.vd"; ve: "fq.ve"; vf: "fq.vf"; vg: "fq.vg"; vh: "fq.vh"; vi: "fq.vi"; vj: "fq.vj"; vk: "fq.vk"; vl: "fq.vl"; vm: "fq.vm"; vn: "fq.vn"; vo: "fq.vo"; vp: "fq.vp"; vq: "fq.vq"; vr: "fq.vr"; vs: "fq.vs"; vt: "fq.vt"; vu: "fq.vu"; vv: "fq.vv"; vw: "fq.vw"; vx: "fq.vx"; vy: "fq.vy"; vz: "fq.vz"; wa: "fq.wa"; wb: "fq.wb"; wc: "fq.wc"; wd: "fq.wd"; we: "fq.we"; wf: "fq.wf"; wg: "fq.wg"; wh: "fq.wh"; wi: "fq.wi"; wj: "fq.wj"; wk: "fq.wk"; wl: "fq.wl"; wm: "fq.wm"; wn: "fq.wn"; wo: "fq.wo"; wp: "fq.wp"; wq: "fq.wq"; wr: "fq.wr"; ws: "fq.ws"; wt: "fq.wt"; wu: "fq.wu"; wv: "fq.wv"; ww: "fq.ww"; wx: "fq.wx"; wy: "fq.wy"; wz: "fq.wz"; xa: "fq.xa"; xb: "fq.xb"; xc: "fq.xc"; xd: "fq.xd"; xe: "fq.xe"; xf: "fq.xf"; xg: "fq.xg"; xh: "fq.xh"; xi: "fq.xi"; xj: "fq.xj"; xk: "fq.xk"; xl: "fq.xl"; xm: "fq.xm"; xn: "fq.xn"; xo: "fq.xo"; xp: "fq.xp"; xq: "fq.xq"; xr: "fq.xr"; xs: "fq.xs"; xt: "fq.xt"; xu: "fq.xu"; xv: "fq.xv"; xw: "fq.xw"; xx: "fq.xx"; xy: "fq.xy"; xz: "fq.xz"; ya: "fq.ya"; yb: "fq.yb"; yc: "fq.yc"; yd: "fq.yd"; ye: "fq.ye"; yf: "fq.yf"; yg: "fq.yg"; yh: "fq.yh"; yi: "fq.yi"; yj: "fq.yj"; yk: "fq.yk"; yl: "fq.yl"; ym: "fq.ym"; yn: "fq.yn"; yo: "fq.yo"; yp: "fq.yp"; yq: "fq.yq"; yr: "fq.yr"; ys: "fq.ys"; yt: "fq.yt"; yu: "fq.yu"; yv: "fq.yv"; yw: "fq.yw"; yx: "fq.yx"; yy: "fq.yy"; yz: "fq.yz"; za: "fq.za"; zb: "fq.zb"; zc: "fq.zc"; zd: "fq.zd"; ze: "fq.ze"; zf: "fq.zf"; zg: "fq.zg"; zh: "fq.zh"; zi: "fq.zi"; zj: "fq.zj"; zk: "fq.zk"; zl: "fq.zl"; zm: "fq.zm"; zn: "fq.zn"; zo: "fq.zo"; zp: "fq.zp"; zq: "fq.zq"; zr: "fq.zr"; zs: "fq.zs"; zt: "fq.zt"; zu: "fq.zu"; zv: "fq.zv"; zw: "fq.zw"; zx: "fq.zx"; zy: "fq.zy"; zz: "fq.zz"; }; fr: { aa: "fr.aa"; ab: "fr.ab"; ac: "fr.ac"; ad: "fr.ad"; ae: "fr.ae"; af: "fr.af"; ag: "fr.ag"; ah: "fr.ah"; ai: "fr.ai"; aj: "fr.aj"; ak: "fr.ak"; al: "fr.al"; am: "fr.am"; an: "fr.an"; ao: "fr.ao"; ap: "fr.ap"; aq: "fr.aq"; ar: "fr.ar"; as: "fr.as"; at: "fr.at"; au: "fr.au"; av: "fr.av"; aw: "fr.aw"; ax: "fr.ax"; ay: "fr.ay"; az: "fr.az"; ba: "fr.ba"; bb: "fr.bb"; bc: "fr.bc"; bd: "fr.bd"; be: "fr.be"; bf: "fr.bf"; bg: "fr.bg"; bh: "fr.bh"; bi: "fr.bi"; bj: "fr.bj"; bk: "fr.bk"; bl: "fr.bl"; bm: "fr.bm"; bn: "fr.bn"; bo: "fr.bo"; bp: "fr.bp"; bq: "fr.bq"; br: "fr.br"; bs: "fr.bs"; bt: "fr.bt"; bu: "fr.bu"; bv: "fr.bv"; bw: "fr.bw"; bx: "fr.bx"; by: "fr.by"; bz: "fr.bz"; ca: "fr.ca"; cb: "fr.cb"; cc: "fr.cc"; cd: "fr.cd"; ce: "fr.ce"; cf: "fr.cf"; cg: "fr.cg"; ch: "fr.ch"; ci: "fr.ci"; cj: "fr.cj"; ck: "fr.ck"; cl: "fr.cl"; cm: "fr.cm"; cn: "fr.cn"; co: "fr.co"; cp: "fr.cp"; cq: "fr.cq"; cr: "fr.cr"; cs: "fr.cs"; ct: "fr.ct"; cu: "fr.cu"; cv: "fr.cv"; cw: "fr.cw"; cx: "fr.cx"; cy: "fr.cy"; cz: "fr.cz"; da: "fr.da"; db: "fr.db"; dc: "fr.dc"; dd: "fr.dd"; de: "fr.de"; df: "fr.df"; dg: "fr.dg"; dh: "fr.dh"; di: "fr.di"; dj: "fr.dj"; dk: "fr.dk"; dl: "fr.dl"; dm: "fr.dm"; dn: "fr.dn"; do: "fr.do"; dp: "fr.dp"; dq: "fr.dq"; dr: "fr.dr"; ds: "fr.ds"; dt: "fr.dt"; du: "fr.du"; dv: "fr.dv"; dw: "fr.dw"; dx: "fr.dx"; dy: "fr.dy"; dz: "fr.dz"; ea: "fr.ea"; eb: "fr.eb"; ec: "fr.ec"; ed: "fr.ed"; ee: "fr.ee"; ef: "fr.ef"; eg: "fr.eg"; eh: "fr.eh"; ei: "fr.ei"; ej: "fr.ej"; ek: "fr.ek"; el: "fr.el"; em: "fr.em"; en: "fr.en"; eo: "fr.eo"; ep: "fr.ep"; eq: "fr.eq"; er: "fr.er"; es: "fr.es"; et: "fr.et"; eu: "fr.eu"; ev: "fr.ev"; ew: "fr.ew"; ex: "fr.ex"; ey: "fr.ey"; ez: "fr.ez"; fa: "fr.fa"; fb: "fr.fb"; fc: "fr.fc"; fd: "fr.fd"; fe: "fr.fe"; ff: "fr.ff"; fg: "fr.fg"; fh: "fr.fh"; fi: "fr.fi"; fj: "fr.fj"; fk: "fr.fk"; fl: "fr.fl"; fm: "fr.fm"; fn: "fr.fn"; fo: "fr.fo"; fp: "fr.fp"; fq: "fr.fq"; fr: "fr.fr"; fs: "fr.fs"; ft: "fr.ft"; fu: "fr.fu"; fv: "fr.fv"; fw: "fr.fw"; fx: "fr.fx"; fy: "fr.fy"; fz: "fr.fz"; ga: "fr.ga"; gb: "fr.gb"; gc: "fr.gc"; gd: "fr.gd"; ge: "fr.ge"; gf: "fr.gf"; gg: "fr.gg"; gh: "fr.gh"; gi: "fr.gi"; gj: "fr.gj"; gk: "fr.gk"; gl: "fr.gl"; gm: "fr.gm"; gn: "fr.gn"; go: "fr.go"; gp: "fr.gp"; gq: "fr.gq"; gr: "fr.gr"; gs: "fr.gs"; gt: "fr.gt"; gu: "fr.gu"; gv: "fr.gv"; gw: "fr.gw"; gx: "fr.gx"; gy: "fr.gy"; gz: "fr.gz"; ha: "fr.ha"; hb: "fr.hb"; hc: "fr.hc"; hd: "fr.hd"; he: "fr.he"; hf: "fr.hf"; hg: "fr.hg"; hh: "fr.hh"; hi: "fr.hi"; hj: "fr.hj"; hk: "fr.hk"; hl: "fr.hl"; hm: "fr.hm"; hn: "fr.hn"; ho: "fr.ho"; hp: "fr.hp"; hq: "fr.hq"; hr: "fr.hr"; hs: "fr.hs"; ht: "fr.ht"; hu: "fr.hu"; hv: "fr.hv"; hw: "fr.hw"; hx: "fr.hx"; hy: "fr.hy"; hz: "fr.hz"; ia: "fr.ia"; ib: "fr.ib"; ic: "fr.ic"; id: "fr.id"; ie: "fr.ie"; if: "fr.if"; ig: "fr.ig"; ih: "fr.ih"; ii: "fr.ii"; ij: "fr.ij"; ik: "fr.ik"; il: "fr.il"; im: "fr.im"; in: "fr.in"; io: "fr.io"; ip: "fr.ip"; iq: "fr.iq"; ir: "fr.ir"; is: "fr.is"; it: "fr.it"; iu: "fr.iu"; iv: "fr.iv"; iw: "fr.iw"; ix: "fr.ix"; iy: "fr.iy"; iz: "fr.iz"; ja: "fr.ja"; jb: "fr.jb"; jc: "fr.jc"; jd: "fr.jd"; je: "fr.je"; jf: "fr.jf"; jg: "fr.jg"; jh: "fr.jh"; ji: "fr.ji"; jj: "fr.jj"; jk: "fr.jk"; jl: "fr.jl"; jm: "fr.jm"; jn: "fr.jn"; jo: "fr.jo"; jp: "fr.jp"; jq: "fr.jq"; jr: "fr.jr"; js: "fr.js"; jt: "fr.jt"; ju: "fr.ju"; jv: "fr.jv"; jw: "fr.jw"; jx: "fr.jx"; jy: "fr.jy"; jz: "fr.jz"; ka: "fr.ka"; kb: "fr.kb"; kc: "fr.kc"; kd: "fr.kd"; ke: "fr.ke"; kf: "fr.kf"; kg: "fr.kg"; kh: "fr.kh"; ki: "fr.ki"; kj: "fr.kj"; kk: "fr.kk"; kl: "fr.kl"; km: "fr.km"; kn: "fr.kn"; ko: "fr.ko"; kp: "fr.kp"; kq: "fr.kq"; kr: "fr.kr"; ks: "fr.ks"; kt: "fr.kt"; ku: "fr.ku"; kv: "fr.kv"; kw: "fr.kw"; kx: "fr.kx"; ky: "fr.ky"; kz: "fr.kz"; la: "fr.la"; lb: "fr.lb"; lc: "fr.lc"; ld: "fr.ld"; le: "fr.le"; lf: "fr.lf"; lg: "fr.lg"; lh: "fr.lh"; li: "fr.li"; lj: "fr.lj"; lk: "fr.lk"; ll: "fr.ll"; lm: "fr.lm"; ln: "fr.ln"; lo: "fr.lo"; lp: "fr.lp"; lq: "fr.lq"; lr: "fr.lr"; ls: "fr.ls"; lt: "fr.lt"; lu: "fr.lu"; lv: "fr.lv"; lw: "fr.lw"; lx: "fr.lx"; ly: "fr.ly"; lz: "fr.lz"; ma: "fr.ma"; mb: "fr.mb"; mc: "fr.mc"; md: "fr.md"; me: "fr.me"; mf: "fr.mf"; mg: "fr.mg"; mh: "fr.mh"; mi: "fr.mi"; mj: "fr.mj"; mk: "fr.mk"; ml: "fr.ml"; mm: "fr.mm"; mn: "fr.mn"; mo: "fr.mo"; mp: "fr.mp"; mq: "fr.mq"; mr: "fr.mr"; ms: "fr.ms"; mt: "fr.mt"; mu: "fr.mu"; mv: "fr.mv"; mw: "fr.mw"; mx: "fr.mx"; my: "fr.my"; mz: "fr.mz"; na: "fr.na"; nb: "fr.nb"; nc: "fr.nc"; nd: "fr.nd"; ne: "fr.ne"; nf: "fr.nf"; ng: "fr.ng"; nh: "fr.nh"; ni: "fr.ni"; nj: "fr.nj"; nk: "fr.nk"; nl: "fr.nl"; nm: "fr.nm"; nn: "fr.nn"; no: "fr.no"; np: "fr.np"; nq: "fr.nq"; nr: "fr.nr"; ns: "fr.ns"; nt: "fr.nt"; nu: "fr.nu"; nv: "fr.nv"; nw: "fr.nw"; nx: "fr.nx"; ny: "fr.ny"; nz: "fr.nz"; oa: "fr.oa"; ob: "fr.ob"; oc: "fr.oc"; od: "fr.od"; oe: "fr.oe"; of: "fr.of"; og: "fr.og"; oh: "fr.oh"; oi: "fr.oi"; oj: "fr.oj"; ok: "fr.ok"; ol: "fr.ol"; om: "fr.om"; on: "fr.on"; oo: "fr.oo"; op: "fr.op"; oq: "fr.oq"; or: "fr.or"; os: "fr.os"; ot: "fr.ot"; ou: "fr.ou"; ov: "fr.ov"; ow: "fr.ow"; ox: "fr.ox"; oy: "fr.oy"; oz: "fr.oz"; pa: "fr.pa"; pb: "fr.pb"; pc: "fr.pc"; pd: "fr.pd"; pe: "fr.pe"; pf: "fr.pf"; pg: "fr.pg"; ph: "fr.ph"; pi: "fr.pi"; pj: "fr.pj"; pk: "fr.pk"; pl: "fr.pl"; pm: "fr.pm"; pn: "fr.pn"; po: "fr.po"; pp: "fr.pp"; pq: "fr.pq"; pr: "fr.pr"; ps: "fr.ps"; pt: "fr.pt"; pu: "fr.pu"; pv: "fr.pv"; pw: "fr.pw"; px: "fr.px"; py: "fr.py"; pz: "fr.pz"; qa: "fr.qa"; qb: "fr.qb"; qc: "fr.qc"; qd: "fr.qd"; qe: "fr.qe"; qf: "fr.qf"; qg: "fr.qg"; qh: "fr.qh"; qi: "fr.qi"; qj: "fr.qj"; qk: "fr.qk"; ql: "fr.ql"; qm: "fr.qm"; qn: "fr.qn"; qo: "fr.qo"; qp: "fr.qp"; qq: "fr.qq"; qr: "fr.qr"; qs: "fr.qs"; qt: "fr.qt"; qu: "fr.qu"; qv: "fr.qv"; qw: "fr.qw"; qx: "fr.qx"; qy: "fr.qy"; qz: "fr.qz"; ra: "fr.ra"; rb: "fr.rb"; rc: "fr.rc"; rd: "fr.rd"; re: "fr.re"; rf: "fr.rf"; rg: "fr.rg"; rh: "fr.rh"; ri: "fr.ri"; rj: "fr.rj"; rk: "fr.rk"; rl: "fr.rl"; rm: "fr.rm"; rn: "fr.rn"; ro: "fr.ro"; rp: "fr.rp"; rq: "fr.rq"; rr: "fr.rr"; rs: "fr.rs"; rt: "fr.rt"; ru: "fr.ru"; rv: "fr.rv"; rw: "fr.rw"; rx: "fr.rx"; ry: "fr.ry"; rz: "fr.rz"; sa: "fr.sa"; sb: "fr.sb"; sc: "fr.sc"; sd: "fr.sd"; se: "fr.se"; sf: "fr.sf"; sg: "fr.sg"; sh: "fr.sh"; si: "fr.si"; sj: "fr.sj"; sk: "fr.sk"; sl: "fr.sl"; sm: "fr.sm"; sn: "fr.sn"; so: "fr.so"; sp: "fr.sp"; sq: "fr.sq"; sr: "fr.sr"; ss: "fr.ss"; st: "fr.st"; su: "fr.su"; sv: "fr.sv"; sw: "fr.sw"; sx: "fr.sx"; sy: "fr.sy"; sz: "fr.sz"; ta: "fr.ta"; tb: "fr.tb"; tc: "fr.tc"; td: "fr.td"; te: "fr.te"; tf: "fr.tf"; tg: "fr.tg"; th: "fr.th"; ti: "fr.ti"; tj: "fr.tj"; tk: "fr.tk"; tl: "fr.tl"; tm: "fr.tm"; tn: "fr.tn"; to: "fr.to"; tp: "fr.tp"; tq: "fr.tq"; tr: "fr.tr"; ts: "fr.ts"; tt: "fr.tt"; tu: "fr.tu"; tv: "fr.tv"; tw: "fr.tw"; tx: "fr.tx"; ty: "fr.ty"; tz: "fr.tz"; ua: "fr.ua"; ub: "fr.ub"; uc: "fr.uc"; ud: "fr.ud"; ue: "fr.ue"; uf: "fr.uf"; ug: "fr.ug"; uh: "fr.uh"; ui: "fr.ui"; uj: "fr.uj"; uk: "fr.uk"; ul: "fr.ul"; um: "fr.um"; un: "fr.un"; uo: "fr.uo"; up: "fr.up"; uq: "fr.uq"; ur: "fr.ur"; us: "fr.us"; ut: "fr.ut"; uu: "fr.uu"; uv: "fr.uv"; uw: "fr.uw"; ux: "fr.ux"; uy: "fr.uy"; uz: "fr.uz"; va: "fr.va"; vb: "fr.vb"; vc: "fr.vc"; vd: "fr.vd"; ve: "fr.ve"; vf: "fr.vf"; vg: "fr.vg"; vh: "fr.vh"; vi: "fr.vi"; ... 120 more ...; zz: "fr.zz"; }; ... 527 more ...; zz: { ...; }; } diff --git a/tests/baselines/reference/icomparable.types b/tests/baselines/reference/icomparable.types index b0cf2326075d3..0694d7a5fee87 100644 --- a/tests/baselines/reference/icomparable.types +++ b/tests/baselines/reference/icomparable.types @@ -4,14 +4,14 @@ interface IComparable { compareTo(other: T); >compareTo : (other: T) => any -> : ^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >other : T > : ^ } declare function sort>(items: U[]): U[]; >sort : >(items: U[]) => U[] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >items : U[] > : ^^^ @@ -28,7 +28,7 @@ >sort(sc) : StringComparable[] > : ^^^^^^^^^^^^^^^^^^ >sort : >(items: U[]) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >sc : StringComparable[] > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/idInProp.types b/tests/baselines/reference/idInProp.types index 28a15a5d3da7d..ecefc0c022de1 100644 --- a/tests/baselines/reference/idInProp.types +++ b/tests/baselines/reference/idInProp.types @@ -7,7 +7,7 @@ function f() { var t: { (f: any) : any; }; >t : (f: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >f : any } diff --git a/tests/baselines/reference/identicalCallSignatures.types b/tests/baselines/reference/identicalCallSignatures.types index 8d8e482e13b6d..2f8490bcd112c 100644 --- a/tests/baselines/reference/identicalCallSignatures.types +++ b/tests/baselines/reference/identicalCallSignatures.types @@ -31,7 +31,7 @@ interface I2 { var a: { >a : { (x: any): number; (x: any): number; (x: T): T; (x: T_1): T_1; } -> : ^^^^^^^^^^^^ ^^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ (x): number; >x : any diff --git a/tests/baselines/reference/identicalGenericConditionalsWithInferRelated.types b/tests/baselines/reference/identicalGenericConditionalsWithInferRelated.types index 4044978cdd60c..b6d5e45a81334 100644 --- a/tests/baselines/reference/identicalGenericConditionalsWithInferRelated.types +++ b/tests/baselines/reference/identicalGenericConditionalsWithInferRelated.types @@ -3,7 +3,7 @@ === identicalGenericConditionalsWithInferRelated.ts === function f(arg: X) { >f : (arg: X) => void -> : ^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >arg : X > : ^ @@ -62,7 +62,7 @@ export type MappedResult = interface X { decode>(ctor: C): MappedResult ? T : never> >decode : >(ctor: C) => MappedResult ? T : never> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ctor : C > : ^ } @@ -73,7 +73,7 @@ class Y implements X { decode>(ctor: C): MappedResult ? T : never> { >decode : >(ctor: C) => MappedResult ? T : never> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ctor : C > : ^ diff --git a/tests/baselines/reference/identicalTypesNoDifferByCheckOrder.types b/tests/baselines/reference/identicalTypesNoDifferByCheckOrder.types index 38abec4f51f5d..a5063f5127923 100644 --- a/tests/baselines/reference/identicalTypesNoDifferByCheckOrder.types +++ b/tests/baselines/reference/identicalTypesNoDifferByCheckOrder.types @@ -73,7 +73,7 @@ interface FunctionComponent2

    { function needsComponentOfSomeProps3(...x: SomePropsClone[]): void {} >needsComponentOfSomeProps3 : (...x: SomePropsClone[]) => void -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : SomePropsClone[] > : ^^^^^^^^^^^^^^^^ @@ -86,7 +86,7 @@ needsComponentOfSomeProps3({ renderAs: comp3 }); >needsComponentOfSomeProps3({ renderAs: comp3 }) : void > : ^^^^ >needsComponentOfSomeProps3 : (...x: SomePropsClone[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >{ renderAs: comp3 } : { renderAs: FunctionComponent2; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >renderAs : FunctionComponent2 @@ -96,7 +96,7 @@ needsComponentOfSomeProps3({ renderAs: comp3 }); function needsComponentOfSomeProps2(...x: SomeProps[]): void {} >needsComponentOfSomeProps2 : (...x: SomeProps[]) => void -> : ^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >x : SomeProps[] > : ^^^^^^^^^^^ @@ -109,7 +109,7 @@ needsComponentOfSomeProps2({ renderAs: comp2 }); >needsComponentOfSomeProps2({ renderAs: comp2 }) : void > : ^^^^ >needsComponentOfSomeProps2 : (...x: SomeProps[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >{ renderAs: comp2 } : { renderAs: FunctionComponent1; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >renderAs : FunctionComponent1 diff --git a/tests/baselines/reference/identityAndDivergentNormalizedTypes.types b/tests/baselines/reference/identityAndDivergentNormalizedTypes.types index ef700788dcc6d..775e7d35df2e6 100644 --- a/tests/baselines/reference/identityAndDivergentNormalizedTypes.types +++ b/tests/baselines/reference/identityAndDivergentNormalizedTypes.types @@ -39,10 +39,10 @@ type PostBody = Extract["body"]; > : ^^^^ const post = ( ->post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ->( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>post : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ +>( path: PATH, {body, ...options}: Omit & {body: PostBody}) => {} : (path: PATH, { body, ...options }: Omit & { body: PostBody; }) => void +> : path: PATH, >path : PATH @@ -61,9 +61,9 @@ const post = ( const tmp = ( >tmp : (path: PATH, body: PostBody) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >( path: PATH, body: PostBody) => { post(path, { body })} : (path: PATH, body: PostBody) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : path: PATH, >path : PATH @@ -78,7 +78,7 @@ const tmp = ( >post(path, { body }) : void > : ^^^^ >post : (path: PATH_1, { body, ...options }: Omit & { body: PostBody; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >path : PATH > : ^^^^ >{ body } : { body: PostBody; } @@ -89,7 +89,7 @@ const tmp = ( function fx1

    (x: { body: PostBody

    }, y: { body: PostBody

    }) { >fx1 :

    (x: { body: PostBody

    ; }, y: { body: PostBody

    ; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { body: PostBody

    ; } > : ^^^^^^^^ ^^^ >body : PostBody

    (a: P & {}) => { >f :

    (a: P & {}) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >

    (a: P & {}) => { "foo" in a;} :

    (a: P & {}) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >a : P > : ^ @@ -1701,7 +1701,7 @@ const f =

    (a: P & {}) => { function test1>(obj: T) { >test1 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ @@ -1711,11 +1711,11 @@ function test1>(obj: T) { >Array.isArray(obj) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >obj : any[] | Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' in obj : boolean @@ -1738,7 +1738,7 @@ function test1>(obj: T) { function test2>(obj: T) { >test2 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ @@ -1746,11 +1746,11 @@ function test2>(obj: T) { >Array.isArray(obj) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >obj : any[] | Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1767,7 +1767,7 @@ function test2>(obj: T) { function test3>(obj: T) { >test3 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ diff --git a/tests/baselines/reference/inKeywordTypeguard(strict=true).types b/tests/baselines/reference/inKeywordTypeguard(strict=true).types index 0794ca58dbc1e..00f6d9a092e70 100644 --- a/tests/baselines/reference/inKeywordTypeguard(strict=true).types +++ b/tests/baselines/reference/inKeywordTypeguard(strict=true).types @@ -20,7 +20,7 @@ class B { b: string; } function negativeClassesTest(x: A | B) { >negativeClassesTest : (x: A | B) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B > : ^^^^^ @@ -61,7 +61,7 @@ function negativeClassesTest(x: A | B) { function positiveClassesTest(x: A | B) { >positiveClassesTest : (x: A | B) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B > : ^^^^^ @@ -114,7 +114,7 @@ class BWithOptionalProp { b?: string; } function positiveTestClassesWithOptionalProperties(x: AWithOptionalProp | BWithOptionalProp) { >positiveTestClassesWithOptionalProperties : (x: AWithOptionalProp | BWithOptionalProp) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithOptionalProp | BWithOptionalProp > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -177,7 +177,7 @@ class BWithMethod { function negativeTestClassesWithMembers(x: AWithMethod | BWithMethod) { >negativeTestClassesWithMembers : (x: AWithMethod | BWithMethod) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithMethod | BWithMethod > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -215,7 +215,7 @@ function negativeTestClassesWithMembers(x: AWithMethod | BWithMethod) { function negativeTestClassesWithMemberMissingInBothClasses(x: AWithMethod | BWithMethod) { >negativeTestClassesWithMemberMissingInBothClasses : (x: AWithMethod | BWithMethod) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithMethod | BWithMethod > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -284,7 +284,7 @@ class D { a: string; } function negativeMultipleClassesTest(x: A | B | C | D) { >negativeMultipleClassesTest : (x: A | B | C | D) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B | C | D > : ^^^^^^^^^^^^^ @@ -331,7 +331,7 @@ class ClassWithUnionProp { prop: A | B } function negativePropTest(x: ClassWithUnionProp) { >negativePropTest : (x: ClassWithUnionProp) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : ClassWithUnionProp > : ^^^^^^^^^^^^^^^^^^ @@ -470,7 +470,7 @@ class UnreachableCodeDetection { function positiveIntersectionTest(x: { a: string } & { b: string }) { >positiveIntersectionTest : (x: { a: string; } & { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } & { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -530,7 +530,7 @@ if ('extra' in error) { function narrowsToNever(x: { l: number } | { r: number }) { >narrowsToNever : (x: { l: number; } | { r: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : { l: number; } | { r: number; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >l : number @@ -606,7 +606,7 @@ type AOrB = { aProp: number } | { bProp: number }; declare function isAOrB(x: unknown): x is AOrB; >isAOrB : (x: unknown) => x is AOrB -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ @@ -618,7 +618,7 @@ if (isAOrB(x)) { >isAOrB(x) : boolean > : ^^^^^^^ >isAOrB : (x: unknown) => x is AOrB -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -685,26 +685,26 @@ function negativeIntersectionTest() { window.ontouchstart >window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } else { window.ontouchstart >window.ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ontouchstart : (((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any)) | null | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } function f1(x: unknown) { >f1 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -840,7 +840,7 @@ function f1(x: unknown) { function f2(x: object) { >f2 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -912,7 +912,7 @@ function f2(x: object) { function f3(x: T) { >f3 : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -1048,7 +1048,7 @@ function f3(x: T) { function f4(x: { a: string }) { >f4 : (x: { a: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } > : ^^^^^ ^^^ >a : string @@ -1122,7 +1122,7 @@ function f4(x: { a: string }) { function f5(x: { a: string } | { b: string }) { >f5 : (x: { a: string; } | { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } | { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -1163,7 +1163,7 @@ function f5(x: { a: string } | { b: string }) { function f6(x: { a: string } | { b: string }) { >f6 : (x: { a: string; } | { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } | { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -1206,7 +1206,7 @@ function f6(x: { a: string } | { b: string }) { function f7(x: { a: string, b: number }, y: { a: string } & { b: number }) { >f7 : (x: { a: string; b: number; }, y: { a: string; } & { b: number; }) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -1266,7 +1266,7 @@ const sym = Symbol(); function f8(x: object) { >f8 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -1338,7 +1338,7 @@ function f8(x: object) { function f9(x: object) { >f9 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -1410,7 +1410,7 @@ function f9(x: object) { function f10(x: { a: unknown }) { >f10 : (x: { a: unknown; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: unknown; } > : ^^^^^ ^^^ >a : unknown @@ -1437,7 +1437,7 @@ function f10(x: { a: unknown }) { function f11(x: { a: any }) { >f11 : (x: { a: any; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: any; } > : ^^^^^ ^^^ >a : any @@ -1464,7 +1464,7 @@ function f11(x: { a: any }) { function f12(x: { a: string }) { >f12 : (x: { a: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } > : ^^^^^ ^^^ >a : string @@ -1491,7 +1491,7 @@ function f12(x: { a: string }) { function f13(x: { a?: string }) { >f13 : (x: { a?: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a?: string; } > : ^^^^^^ ^^^ >a : string | undefined @@ -1518,7 +1518,7 @@ function f13(x: { a?: string }) { function f14(x: { a: string | undefined }) { >f14 : (x: { a: string | undefined; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string | undefined; } > : ^^^^^ ^^^ >a : string | undefined @@ -1545,7 +1545,7 @@ function f14(x: { a: string | undefined }) { function f15(x: { a?: string | undefined }) { >f15 : (x: { a?: string | undefined; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a?: string | undefined; } > : ^^^^^^ ^^^ >a : string | undefined @@ -1572,7 +1572,7 @@ function f15(x: { a?: string | undefined }) { function f16(x: typeof globalThis, y: Window & typeof globalThis) { >f16 : (x: typeof globalThis, y: Window & typeof globalThis) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >globalThis : typeof globalThis @@ -1595,7 +1595,7 @@ function f16(x: typeof globalThis, y: Window & typeof globalThis) { function foo(value: A) { >foo : (value: A) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >value : A > : ^ @@ -1635,7 +1635,7 @@ const checkIsTouchDevice = () => >checkIsTouchDevice : () => boolean > : ^^^^^^^^^^^^^ >() => "ontouchstart" in window || "msMaxTouchPoints" in window.navigator : () => boolean -> : ^^^^^^^^^^^^^ +> : "ontouchstart" in window || "msMaxTouchPoints" in window.navigator; >"ontouchstart" in window || "msMaxTouchPoints" in window.navigator : boolean @@ -1661,7 +1661,7 @@ const checkIsTouchDevice = () => function isHTMLTable(table: T): boolean { >isHTMLTable : (table: T) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >table : T > : ^ @@ -1686,9 +1686,9 @@ function isHTMLTable(table: T): boolean { const f =

    (a: P & {}) => { >f :

    (a: P & {}) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >

    (a: P & {}) => { "foo" in a;} :

    (a: P & {}) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >a : P > : ^ @@ -1706,7 +1706,7 @@ const f =

    (a: P & {}) => { function test1>(obj: T) { >test1 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ @@ -1716,11 +1716,11 @@ function test1>(obj: T) { >Array.isArray(obj) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >obj : any[] | Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'length' in obj : boolean @@ -1743,7 +1743,7 @@ function test1>(obj: T) { function test2>(obj: T) { >test2 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ @@ -1751,11 +1751,11 @@ function test2>(obj: T) { >Array.isArray(obj) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >obj : any[] | Record > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1772,7 +1772,7 @@ function test2>(obj: T) { function test3>(obj: T) { >test3 : >(obj: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >obj : T > : ^ diff --git a/tests/baselines/reference/inOperatorWithFunction.types b/tests/baselines/reference/inOperatorWithFunction.types index 07a692aaa5ec2..feb7780dc5c1a 100644 --- a/tests/baselines/reference/inOperatorWithFunction.types +++ b/tests/baselines/reference/inOperatorWithFunction.types @@ -3,9 +3,9 @@ === inOperatorWithFunction.ts === var fn = function (val: boolean) { return val; } >fn : (val: boolean) => boolean -> : ^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >function (val: boolean) { return val; } : (val: boolean) => boolean -> : ^^^^^^ ^^^^^^^^^^^^ +> : >val : boolean > : ^^^^^^^ >val : boolean @@ -15,7 +15,7 @@ fn("a" in { "a": true }); >fn("a" in { "a": true }) : boolean > : ^^^^^^^ >fn : (val: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >"a" in { "a": true } : boolean > : ^^^^^^^ >"a" : "a" diff --git a/tests/baselines/reference/inOperatorWithGeneric.types b/tests/baselines/reference/inOperatorWithGeneric.types index e965cb5d8ed18..2a590dd5e0f50 100644 --- a/tests/baselines/reference/inOperatorWithGeneric.types +++ b/tests/baselines/reference/inOperatorWithGeneric.types @@ -7,7 +7,7 @@ class C { foo(x:T) { >foo : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/inOperatorWithValidOperands.types b/tests/baselines/reference/inOperatorWithValidOperands.types index 57072a859f000..2233fac204492 100644 --- a/tests/baselines/reference/inOperatorWithValidOperands.types +++ b/tests/baselines/reference/inOperatorWithValidOperands.types @@ -121,7 +121,7 @@ var rb2 = x in {}; function foo(t: T) { >foo : (t: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -138,7 +138,7 @@ function foo(t: T) { function unionCase(t: T | U) { >unionCase : (t: T | U) => void -> : ^ ^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >t : T | U > : ^^^^^ @@ -155,7 +155,7 @@ function unionCase(t: T | U) { function unionCase2(t: T | object) { >unionCase2 : (t: T | object) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : object | T > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/incompatibleGenericTypes.types b/tests/baselines/reference/incompatibleGenericTypes.types index 1ed04ecff4a74..79eb21199d4ab 100644 --- a/tests/baselines/reference/incompatibleGenericTypes.types +++ b/tests/baselines/reference/incompatibleGenericTypes.types @@ -5,9 +5,9 @@ interface I1 { m1(callback: (p: T) => U): I1; >m1 : (callback: (p: T) => U) => I1 -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >callback : (p: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : T > : ^ diff --git a/tests/baselines/reference/incompatibleTypes.types b/tests/baselines/reference/incompatibleTypes.types index 51f87d711ce72..8d8489b31b811 100644 --- a/tests/baselines/reference/incompatibleTypes.types +++ b/tests/baselines/reference/incompatibleTypes.types @@ -24,7 +24,7 @@ class C1 implements IFoo1 { // incompatible on the return type interface IFoo2 { p1(s:string): number; >p1 : (s: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } @@ -35,7 +35,7 @@ class C2 implements IFoo2 { // incompatible on the param type public p1(n:number) { >p1 : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ @@ -89,19 +89,19 @@ class C4 implements IFoo4 { // incompatible on the property type function if1(i: IFoo1): void; >if1 : { (i: IFoo1): void; (i: IFoo2): void; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^ >i : IFoo1 > : ^^^^^ function if1(i: IFoo2): void; >if1 : { (i: IFoo1): void; (i: IFoo2): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^ ^^^ >i : IFoo2 > : ^^^^^ function if1(a: any) { } >if1 : { (i: IFoo1): void; (i: IFoo2): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >a : any > : ^^^ @@ -117,14 +117,14 @@ if1(c1); >if1(c1) : void > : ^^^^ >if1 : { (i: IFoo1): void; (i: IFoo2): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^ >c1 : C1 > : ^^ function of1(n: { a: { a: string; }; b: string; }): number; >of1 : { (n: { a: { a: string; }; b: string; }): number; (s: { c: { b: string; }; d: string; }): string; } -> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^ >n : { a: { a: string; }; b: string; } > : ^^^^^ ^^^^^ ^^^ >a : { a: string; } @@ -136,7 +136,7 @@ function of1(n: { a: { a: string; }; b: string; }): number; function of1(s: { c: { b: string; }; d: string; }): string; >of1 : { (n: { a: { a: string; }; b: string; }): number; (s: { c: { b: string; }; d: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >s : { c: { b: string; }; d: string; } > : ^^^^^ ^^^^^ ^^^ >c : { b: string; } @@ -148,7 +148,7 @@ function of1(s: { c: { b: string; }; d: string; }): string; function of1(a: any) { return null; } >of1 : { (n: { a: { a: string; }; b: string; }): number; (s: { c: { b: string; }; d: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : any > : ^^^ @@ -156,7 +156,7 @@ of1({ e: 0, f: 0 }); >of1({ e: 0, f: 0 }) : never > : ^^^^^ >of1 : { (n: { a: { a: string; }; b: string; }): number; (s: { c: { b: string; }; d: string; }): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ e: 0, f: 0 } : { e: number; f: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >e : number @@ -176,7 +176,7 @@ interface IMap { function foo(fn:() => void) { >foo : (fn: () => void) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fn : () => void > : ^^^^^^ @@ -194,7 +194,7 @@ function bar() { >foo(() => { map = {}; }) : void > : ^^^^ >foo : (fn: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { map = {}; } : () => void > : ^^^^^^^^^^ @@ -277,7 +277,7 @@ var fp1: () =>any = a => 0; >fp1 : () => any > : ^^^^^^ >a => 0 : (a: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >a : any > : ^^^ >0 : 0 diff --git a/tests/baselines/reference/incompleteObjectLiteral1.types b/tests/baselines/reference/incompleteObjectLiteral1.types index 3014882417a95..55e62482500ad 100644 --- a/tests/baselines/reference/incompleteObjectLiteral1.types +++ b/tests/baselines/reference/incompleteObjectLiteral1.types @@ -13,5 +13,5 @@ var x = tt; >x : { aa: any; } > : ^^^^^^^^^^^^ >tt : { aa: any; } -> : ^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/incorrectClassOverloadChain.types b/tests/baselines/reference/incorrectClassOverloadChain.types index 281006dc2ecc1..9f043d40dd038 100644 --- a/tests/baselines/reference/incorrectClassOverloadChain.types +++ b/tests/baselines/reference/incorrectClassOverloadChain.types @@ -7,11 +7,11 @@ class C { foo(): string; >foo : { (): string; (x: any): number; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ foo(x): number; >foo : { (): string; (x: any): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/incorrectNumberOfTypeArgumentsDuringErrorReporting.types b/tests/baselines/reference/incorrectNumberOfTypeArgumentsDuringErrorReporting.types index 5b00334622436..98e08d8aec0f6 100644 --- a/tests/baselines/reference/incorrectNumberOfTypeArgumentsDuringErrorReporting.types +++ b/tests/baselines/reference/incorrectNumberOfTypeArgumentsDuringErrorReporting.types @@ -19,9 +19,9 @@ interface Opts {a:A, b:B} const fn = < >fn : (opts: Opts) => string -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >< A extends ObjA, B extends ObjB = ObjB>(opts:Opts):string => 'Z' : (opts: Opts) => string -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : A extends ObjA, B extends ObjB = ObjB @@ -41,7 +41,7 @@ fn({ >fn({ a: {x: 'X', y: 'Y'}, b: {},}) : string > : ^^^^^^ >fn : (opts: Opts) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ a: {x: 'X', y: 'Y'}, b: {},} : { a: { x: string; y: string; }; b: {}; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/incorrectRecursiveMappedTypeConstraint.types b/tests/baselines/reference/incorrectRecursiveMappedTypeConstraint.types index 4901372d09f41..4edcac53cb2d0 100644 --- a/tests/baselines/reference/incorrectRecursiveMappedTypeConstraint.types +++ b/tests/baselines/reference/incorrectRecursiveMappedTypeConstraint.types @@ -4,7 +4,7 @@ // #17847 function sum(n: number, v: T, k: K) { >sum : (n: number, v: T, k: K) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >n : number > : ^^^^^^ >v : T diff --git a/tests/baselines/reference/incrementOperatorWithAnyOtherTypeInvalidOperations.types b/tests/baselines/reference/incrementOperatorWithAnyOtherTypeInvalidOperations.types index 4ac1fee0107bd..8955a83564d23 100644 --- a/tests/baselines/reference/incrementOperatorWithAnyOtherTypeInvalidOperations.types +++ b/tests/baselines/reference/incrementOperatorWithAnyOtherTypeInvalidOperations.types @@ -24,7 +24,7 @@ var obj1 = { x: "", y: () => { } }; >obj1 : { x: string; y: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "", y: () => { } } : { x: string; y: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ >x : string > : ^^^^^^ >"" : "" @@ -32,7 +32,7 @@ var obj1 = { x: "", y: () => { } }; >y : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : function foo(): any { >foo : () => any diff --git a/tests/baselines/reference/incrementOperatorWithNumberTypeInvalidOperations.types b/tests/baselines/reference/incrementOperatorWithNumberTypeInvalidOperations.types index 6138a007a8d50..2b330901e85a8 100644 --- a/tests/baselines/reference/incrementOperatorWithNumberTypeInvalidOperations.types +++ b/tests/baselines/reference/incrementOperatorWithNumberTypeInvalidOperations.types @@ -101,15 +101,15 @@ var ResultIsNumber5 = ++{ x: 1, y: (n: number) => { return n; } }; >++{ x: 1, y: (n: number) => { return n; } } : number > : ^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number @@ -145,15 +145,15 @@ var ResultIsNumber8 = { x: 1, y: (n: number) => { return n; } }++; >{ x: 1, y: (n: number) => { return n; } }++ : number > : ^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number diff --git a/tests/baselines/reference/incrementOperatorWithUnsupportedBooleanType.types b/tests/baselines/reference/incrementOperatorWithUnsupportedBooleanType.types index a6d164bbaa6b0..7122803cd5887 100644 --- a/tests/baselines/reference/incrementOperatorWithUnsupportedBooleanType.types +++ b/tests/baselines/reference/incrementOperatorWithUnsupportedBooleanType.types @@ -91,15 +91,15 @@ var ResultIsNumber5 = ++{ x: true, y: (n: boolean) => { return n; } }; >++{ x: true, y: (n: boolean) => { return n; } } : number > : ^^^^^^ >{ x: true, y: (n: boolean) => { return n; } } : { x: boolean; y: (n: boolean) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true > : ^^^^ >y : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(n: boolean) => { return n; } : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >n : boolean > : ^^^^^^^ >n : boolean @@ -135,15 +135,15 @@ var ResultIsNumber8 = { x: true, y: (n: boolean) => { return n; } }++; >{ x: true, y: (n: boolean) => { return n; } }++ : number > : ^^^^^^ >{ x: true, y: (n: boolean) => { return n; } } : { x: boolean; y: (n: boolean) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true > : ^^^^ >y : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(n: boolean) => { return n; } : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >n : boolean > : ^^^^^^^ >n : boolean diff --git a/tests/baselines/reference/incrementOperatorWithUnsupportedStringType.types b/tests/baselines/reference/incrementOperatorWithUnsupportedStringType.types index 022d6383a053b..bc64a4fb94496 100644 --- a/tests/baselines/reference/incrementOperatorWithUnsupportedStringType.types +++ b/tests/baselines/reference/incrementOperatorWithUnsupportedStringType.types @@ -117,15 +117,15 @@ var ResultIsNumber7 = ++{ x: "", y: (s: string) => { return s; } }; >++{ x: "", y: (s: string) => { return s; } } : number > : ^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string @@ -161,15 +161,15 @@ var ResultIsNumber10 = { x: "", y: (s: string) => { return s; } }++; >{ x: "", y: (s: string) => { return s; } }++ : number > : ^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string diff --git a/tests/baselines/reference/independentPropertyVariance.types b/tests/baselines/reference/independentPropertyVariance.types index db421b4440fc0..49b3d81626b54 100644 --- a/tests/baselines/reference/independentPropertyVariance.types +++ b/tests/baselines/reference/independentPropertyVariance.types @@ -12,7 +12,7 @@ declare const x: { a: 1, b: string }; > : ^^^^^^ declare const y: { a: number, b: 'a' }; ->y : { a: number; b: 'a'; } +>y : { a: number; b: "a"; } > : ^^^^^ ^^^^^ ^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/indexAt(target=es2022).types b/tests/baselines/reference/indexAt(target=es2022).types index 7d25b59216710..3477b84eec342 100644 --- a/tests/baselines/reference/indexAt(target=es2022).types +++ b/tests/baselines/reference/indexAt(target=es2022).types @@ -5,13 +5,13 @@ >[0].at(0) : number > : ^^^^^^ >[0].at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >[0] : number[] > : ^^^^^^^^ >0 : 0 > : ^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -19,11 +19,11 @@ >"foo".at(0) : string > : ^^^^^^ >"foo".at : (index: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >at : (index: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -31,13 +31,13 @@ new Int8Array().at(0); >new Int8Array().at(0) : number > : ^^^^^^ >new Int8Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int8Array() : Int8Array > : ^^^^^^^^^ >Int8Array : Int8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -45,13 +45,13 @@ new Uint8Array().at(0); >new Uint8Array().at(0) : number > : ^^^^^^ >new Uint8Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint8Array() : Uint8Array > : ^^^^^^^^^^ >Uint8Array : Uint8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -59,13 +59,13 @@ new Uint8ClampedArray().at(0); >new Uint8ClampedArray().at(0) : number > : ^^^^^^ >new Uint8ClampedArray().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint8ClampedArray() : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >Uint8ClampedArray : Uint8ClampedArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -73,13 +73,13 @@ new Int16Array().at(0); >new Int16Array().at(0) : number > : ^^^^^^ >new Int16Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int16Array() : Int16Array > : ^^^^^^^^^^ >Int16Array : Int16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -87,13 +87,13 @@ new Uint16Array().at(0); >new Uint16Array().at(0) : number > : ^^^^^^ >new Uint16Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint16Array() : Uint16Array > : ^^^^^^^^^^^ >Uint16Array : Uint16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -101,13 +101,13 @@ new Int32Array().at(0); >new Int32Array().at(0) : number > : ^^^^^^ >new Int32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int32Array() : Int32Array > : ^^^^^^^^^^ >Int32Array : Int32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -115,13 +115,13 @@ new Uint32Array().at(0); >new Uint32Array().at(0) : number > : ^^^^^^ >new Uint32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint32Array() : Uint32Array > : ^^^^^^^^^^^ >Uint32Array : Uint32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -129,13 +129,13 @@ new Float32Array().at(0); >new Float32Array().at(0) : number > : ^^^^^^ >new Float32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Float32Array() : Float32Array > : ^^^^^^^^^^^^ >Float32Array : Float32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -143,13 +143,13 @@ new Float64Array().at(0); >new Float64Array().at(0) : number > : ^^^^^^ >new Float64Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Float64Array() : Float64Array > : ^^^^^^^^^^^^ >Float64Array : Float64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -157,13 +157,13 @@ new BigInt64Array().at(0); >new BigInt64Array().at(0) : bigint > : ^^^^^^ >new BigInt64Array().at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new BigInt64Array() : BigInt64Array > : ^^^^^^^^^^^^^ >BigInt64Array : BigInt64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -171,13 +171,13 @@ new BigUint64Array().at(0); >new BigUint64Array().at(0) : bigint > : ^^^^^^ >new BigUint64Array().at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new BigUint64Array() : BigUint64Array > : ^^^^^^^^^^^^^^ >BigUint64Array : BigUint64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/indexAt(target=esnext).types b/tests/baselines/reference/indexAt(target=esnext).types index 7d25b59216710..3477b84eec342 100644 --- a/tests/baselines/reference/indexAt(target=esnext).types +++ b/tests/baselines/reference/indexAt(target=esnext).types @@ -5,13 +5,13 @@ >[0].at(0) : number > : ^^^^^^ >[0].at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >[0] : number[] > : ^^^^^^^^ >0 : 0 > : ^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -19,11 +19,11 @@ >"foo".at(0) : string > : ^^^^^^ >"foo".at : (index: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >"foo" : "foo" > : ^^^^^ >at : (index: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -31,13 +31,13 @@ new Int8Array().at(0); >new Int8Array().at(0) : number > : ^^^^^^ >new Int8Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int8Array() : Int8Array > : ^^^^^^^^^ >Int8Array : Int8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -45,13 +45,13 @@ new Uint8Array().at(0); >new Uint8Array().at(0) : number > : ^^^^^^ >new Uint8Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint8Array() : Uint8Array > : ^^^^^^^^^^ >Uint8Array : Uint8ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -59,13 +59,13 @@ new Uint8ClampedArray().at(0); >new Uint8ClampedArray().at(0) : number > : ^^^^^^ >new Uint8ClampedArray().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint8ClampedArray() : Uint8ClampedArray > : ^^^^^^^^^^^^^^^^^ >Uint8ClampedArray : Uint8ClampedArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -73,13 +73,13 @@ new Int16Array().at(0); >new Int16Array().at(0) : number > : ^^^^^^ >new Int16Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int16Array() : Int16Array > : ^^^^^^^^^^ >Int16Array : Int16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -87,13 +87,13 @@ new Uint16Array().at(0); >new Uint16Array().at(0) : number > : ^^^^^^ >new Uint16Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint16Array() : Uint16Array > : ^^^^^^^^^^^ >Uint16Array : Uint16ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -101,13 +101,13 @@ new Int32Array().at(0); >new Int32Array().at(0) : number > : ^^^^^^ >new Int32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Int32Array() : Int32Array > : ^^^^^^^^^^ >Int32Array : Int32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -115,13 +115,13 @@ new Uint32Array().at(0); >new Uint32Array().at(0) : number > : ^^^^^^ >new Uint32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Uint32Array() : Uint32Array > : ^^^^^^^^^^^ >Uint32Array : Uint32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -129,13 +129,13 @@ new Float32Array().at(0); >new Float32Array().at(0) : number > : ^^^^^^ >new Float32Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Float32Array() : Float32Array > : ^^^^^^^^^^^^ >Float32Array : Float32ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -143,13 +143,13 @@ new Float64Array().at(0); >new Float64Array().at(0) : number > : ^^^^^^ >new Float64Array().at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new Float64Array() : Float64Array > : ^^^^^^^^^^^^ >Float64Array : Float64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -157,13 +157,13 @@ new BigInt64Array().at(0); >new BigInt64Array().at(0) : bigint > : ^^^^^^ >new BigInt64Array().at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new BigInt64Array() : BigInt64Array > : ^^^^^^^^^^^^^ >BigInt64Array : BigInt64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -171,13 +171,13 @@ new BigUint64Array().at(0); >new BigUint64Array().at(0) : bigint > : ^^^^^^ >new BigUint64Array().at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >new BigUint64Array() : BigUint64Array > : ^^^^^^^^^^^^^^ >BigUint64Array : BigUint64ArrayConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >at : (index: number) => bigint -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/indexSignatureAndMappedType.types b/tests/baselines/reference/indexSignatureAndMappedType.types index 6bad70b076bc0..135538248fb97 100644 --- a/tests/baselines/reference/indexSignatureAndMappedType.types +++ b/tests/baselines/reference/indexSignatureAndMappedType.types @@ -6,7 +6,7 @@ function f1(x: { [key: string]: T }, y: Record) { >f1 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -33,7 +33,7 @@ function f1(x: { [key: string]: T }, y: Record) { function f2(x: { [key: string]: T }, y: Record) { >f2 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -60,7 +60,7 @@ function f2(x: { [key: string]: T }, y: Record) { function f3(x: { [key: string]: T }, y: Record) { >f3 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string diff --git a/tests/baselines/reference/indexSignatureOfTypeUnknownStillRequiresIndexSignature.types b/tests/baselines/reference/indexSignatureOfTypeUnknownStillRequiresIndexSignature.types index a0a0a9d8a6e06..942e7ef1939e6 100644 --- a/tests/baselines/reference/indexSignatureOfTypeUnknownStillRequiresIndexSignature.types +++ b/tests/baselines/reference/indexSignatureOfTypeUnknownStillRequiresIndexSignature.types @@ -3,7 +3,7 @@ === indexSignatureOfTypeUnknownStillRequiresIndexSignature.ts === declare function f(x: { [x: string]: T }): T; >f : (x: { [x: string]: T; }) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -57,7 +57,7 @@ f(stooges); // Should throw >f(stooges) : unknown > : ^^^^^^^ >f : (x: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >stooges : { name: string; age: number; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/indexSignatureTypeInference.types b/tests/baselines/reference/indexSignatureTypeInference.types index 1f0918bb3b80a..0c0216f0f7611 100644 --- a/tests/baselines/reference/indexSignatureTypeInference.types +++ b/tests/baselines/reference/indexSignatureTypeInference.types @@ -15,13 +15,13 @@ interface StringMap { declare function numberMapToArray(object: NumberMap): T[]; >numberMapToArray : (object: NumberMap) => T[] -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >object : NumberMap > : ^^^^^^^^^^^^ declare function stringMapToArray(object: StringMap): T[]; >stringMapToArray : (object: StringMap) => T[] -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >object : StringMap > : ^^^^^^^^^^^^ @@ -43,7 +43,7 @@ var v1 = numberMapToArray(numberMap); // Ok >numberMapToArray(numberMap) : Function[] > : ^^^^^^^^^^ >numberMapToArray : (object: NumberMap) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >numberMap : NumberMap > : ^^^^^^^^^^^^^^^^^^^ @@ -53,7 +53,7 @@ var v1 = numberMapToArray(stringMap); // Ok >numberMapToArray(stringMap) : Function[] > : ^^^^^^^^^^ >numberMapToArray : (object: NumberMap) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >stringMap : StringMap > : ^^^^^^^^^^^^^^^^^^^ @@ -63,7 +63,7 @@ var v1 = stringMapToArray(numberMap); // Error expected here >stringMapToArray(numberMap) : unknown[] > : ^^^^^^^^^ >stringMapToArray : (object: StringMap) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >numberMap : NumberMap > : ^^^^^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ var v1 = stringMapToArray(stringMap); // Ok >stringMapToArray(stringMap) : Function[] > : ^^^^^^^^^^ >stringMapToArray : (object: StringMap) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >stringMap : StringMap > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/indexSignatures1.types b/tests/baselines/reference/indexSignatures1.types index f5cb5daf229d1..c93f46eb2f2a9 100644 --- a/tests/baselines/reference/indexSignatures1.types +++ b/tests/baselines/reference/indexSignatures1.types @@ -13,7 +13,7 @@ const sym = Symbol(); function gg3(x: { [key: string]: string }, y: { [key: symbol]: string }, z: { [sym]: number }) { >gg3 : (x: { [key: string]: string; }, y: { [key: symbol]: string; }, z: { [sym]: number; }) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -50,7 +50,7 @@ function gg3(x: { [key: string]: string }, y: { [key: symbol]: string }, z: { [s function gg1(x: { [key: `a${string}`]: string, [key: `${string}a`]: string }, y: { [key: `a${string}a`]: string }) { >gg1 : (x: { [key: `a${string}`]: string; [key: `${string}a`]: string; }, y: { [key: `a${string}a`]: string; }) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: `a${string}`]: string; [key: `${string}a`]: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : `a${string}` @@ -91,7 +91,7 @@ interface IY { [key: `a${string}a`]: string } function gg2(x: IX, y: IY) { >gg2 : (x: IX, y: IY) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : IX > : ^^ >y : IY @@ -307,13 +307,13 @@ const funcs: Funcs = { >funcs : Funcs > : ^^^^^ >{ sfoo: x => x.length, // x: string nfoo: x => x * 2, // n: number} : { sfoo: (x: string) => number; nfoo: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ sfoo: x => x.length, // x: string >sfoo : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >x.length : number @@ -325,9 +325,9 @@ const funcs: Funcs = { nfoo: x => x * 2, // n: number >nfoo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x => x * 2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x * 2 : number @@ -1247,7 +1247,7 @@ plugins[system][SomeSytePlugin] = () => console.log('awsome'); >plugins[system][SomeSytePlugin] = () => console.log('awsome') : () => void > : ^^^^^^^^^^ >plugins[system][SomeSytePlugin] : (...args: any) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >plugins[system] : Plugs > : ^^^^^ >plugins : { user: Plugs; [system]: Plugs; } @@ -1261,11 +1261,11 @@ plugins[system][SomeSytePlugin] = () => console.log('awsome'); >console.log('awsome') : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'awsome' : "awsome" > : ^^^^^^^^ @@ -1273,7 +1273,7 @@ plugins[system][SomeSytePlugin](); >plugins[system][SomeSytePlugin]() : unknown > : ^^^^^^^ >plugins[system][SomeSytePlugin] : (...args: any) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^ >plugins[system] : Plugs > : ^^^^^ >plugins : { user: Plugs; [system]: Plugs; } @@ -1327,9 +1327,9 @@ const directive = Symbol('directive'); declare function foo(options: { [x in string]: (arg: TArg) => TRet } & { [directive]?: TDir }): void; >foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void -> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ >arg : TArg > : ^^^^ >[directive] : TDir | undefined @@ -1342,18 +1342,18 @@ let case1 = foo({ > : ^^^^ >foo({ [directive]: (x: string) => 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void > : ^^^^ ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >{ [directive]: (x: string) => 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: (x: string) => "str"; addOne: (x: number) => number; double: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ [directive]: (x: string) => 'str', >[directive] : (x: string) => "str" -> : ^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >directive : unique symbol > : ^^^^^^^^^^^^^ >(x: string) => 'str' : (x: string) => "str" -> : ^^^^ ^^^^^^^^^^ +> : >x : string > : ^^^^^^ >'str' : "str" @@ -1361,9 +1361,9 @@ let case1 = foo({ addOne: (x: number) => x + 1, >addOne : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + 1 : number @@ -1375,9 +1375,9 @@ let case1 = foo({ double: (x: number) => x + x, >double : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + x : number @@ -1394,16 +1394,16 @@ let case2 = foo({ > : ^^^^ >foo({ addOne: (x: number) => x + 1, double: (x: number) => x + x, [directive]: (x: string) => 'str',}) : void > : ^^^^ ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >{ addOne: (x: number) => x + 1, double: (x: number) => x + x, [directive]: (x: string) => 'str',} : { addOne: (x: number) => number; double: (x: number) => number; [directive]: (x: string) => "str"; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ addOne: (x: number) => x + 1, >addOne : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + 1 : number @@ -1415,9 +1415,9 @@ let case2 = foo({ double: (x: number) => x + x, >double : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + x : number @@ -1429,11 +1429,11 @@ let case2 = foo({ [directive]: (x: string) => 'str', >[directive] : (x: string) => "str" -> : ^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^ >directive : unique symbol > : ^^^^^^^^^^^^^ >(x: string) => 'str' : (x: string) => "str" -> : ^^^^ ^^^^^^^^^^ +> : >x : string > : ^^^^^^ >'str' : "str" @@ -1446,10 +1446,10 @@ let case3 = foo({ > : ^^^^ >foo({ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void > : ^^^^ ->foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >{ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: string; addOne: (x: number) => number; double: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ [directive]: 'str', >[directive] : string @@ -1461,9 +1461,9 @@ let case3 = foo({ addOne: (x: number) => x + 1, >addOne : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + 1 : number @@ -1475,9 +1475,9 @@ let case3 = foo({ double: (x: number) => x + x, >double : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => x + x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x + x : number diff --git a/tests/baselines/reference/indexSignaturesInferentialTyping.types b/tests/baselines/reference/indexSignaturesInferentialTyping.types index c064dfba6cff3..826f903e37004 100644 --- a/tests/baselines/reference/indexSignaturesInferentialTyping.types +++ b/tests/baselines/reference/indexSignaturesInferentialTyping.types @@ -3,7 +3,7 @@ === indexSignaturesInferentialTyping.ts === function foo(items: { [index: number]: T }): T { return undefined; } >foo : (items: { [index: number]: T; }) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >items : { [index: number]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >index : number @@ -13,7 +13,7 @@ function foo(items: { [index: number]: T }): T { return undefined; } function bar(items: { [index: string]: T }): T { return undefined; } >bar : (items: { [index: string]: T; }) => T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >items : { [index: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >index : string @@ -27,7 +27,7 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number >foo({ 0: 0, 1: 1 }) : number > : ^^^^^^ >foo : (items: { [index: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ 0: 0, 1: 1 } : { 0: number; 1: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : number @@ -45,7 +45,7 @@ var x2 = bar({ 0: 0, 1: 1 }); >bar({ 0: 0, 1: 1 }) : number > : ^^^^^^ >bar : (items: { [index: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ 0: 0, 1: 1 } : { 0: number; 1: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : number @@ -63,7 +63,7 @@ var x3 = bar({ zero: 0, one: 1 }); // type should be number >bar({ zero: 0, one: 1 }) : number > : ^^^^^^ >bar : (items: { [index: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ zero: 0, one: 1 } : { zero: number; one: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : number diff --git a/tests/baselines/reference/indexTypeCheck.types b/tests/baselines/reference/indexTypeCheck.types index 0bfbd2caa7382..57eb19d179acc 100644 --- a/tests/baselines/reference/indexTypeCheck.types +++ b/tests/baselines/reference/indexTypeCheck.types @@ -179,7 +179,7 @@ class Benchmark { public addTimingFor(name: string, timing: number) { >addTimingFor : (name: string, timing: number) => void -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >name : string > : ^^^^^^ >timing : number diff --git a/tests/baselines/reference/indexTypeNoSubstitutionTemplateLiteral.types b/tests/baselines/reference/indexTypeNoSubstitutionTemplateLiteral.types index 6afc7dca56c98..1d3ac0aad3af9 100644 --- a/tests/baselines/reference/indexTypeNoSubstitutionTemplateLiteral.types +++ b/tests/baselines/reference/indexTypeNoSubstitutionTemplateLiteral.types @@ -15,7 +15,7 @@ Foo[`b`] = function () {}; >`b` : "b" > : ^^^ >function () {} : () => void -> : ^^^^^^^^^^ +> : type Test = keyof typeof Foo; >Test : "b" diff --git a/tests/baselines/reference/indexedAccessAndNullableNarrowing.types b/tests/baselines/reference/indexedAccessAndNullableNarrowing.types index 9121f1aa7aeb4..ced0195831367 100644 --- a/tests/baselines/reference/indexedAccessAndNullableNarrowing.types +++ b/tests/baselines/reference/indexedAccessAndNullableNarrowing.types @@ -3,7 +3,7 @@ === indexedAccessAndNullableNarrowing.ts === function f1, K extends keyof T>(x: T[K] | undefined) { >f1 : , K extends keyof T>(x: T[K] | undefined) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T[K] | undefined > : ^^^^^^^^^^^^^^^^ @@ -34,7 +34,7 @@ function f1, K extends keyof T>(x: T[K] | undefine function f2, K extends keyof T>(x: T[K] | null) { >f2 : , K extends keyof T>(x: T[K] | null) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T[K] | null > : ^^^^^^^^^^^ @@ -61,7 +61,7 @@ function f2, K extends keyof T>(x: T[K] | null) { function f3(t: T[K], p1: Partial[K] & {}, p2: Partial[K] & ({} | null)) { >f3 : (t: T[K], p1: Partial[K] & {}, p2: Partial[K] & ({} | null)) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T[K] > : ^^^^ >p1 : Partial[K] & {} @@ -98,7 +98,7 @@ type State = AnyObject; declare function hasOwnProperty( >hasOwnProperty : (object: T, prop: PropertyKey) => prop is keyof T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ object: T, >object : T @@ -113,7 +113,7 @@ declare function hasOwnProperty( interface Store { setState(key: K, value: S[K]): void; >setState : (key: K, value: S[K]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >value : S[K] @@ -122,7 +122,7 @@ interface Store { export function syncStoreProp< >syncStoreProp : , K extends keyof S>(store: Store, props: P, key: K) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ S extends State, P extends Partial, @@ -143,7 +143,7 @@ export function syncStoreProp< >hasOwnProperty(props, key) : boolean > : ^^^^^^^ >hasOwnProperty : (object: T, prop: PropertyKey) => prop is keyof T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >props : P > : ^ >key : string | number | symbol @@ -169,11 +169,11 @@ export function syncStoreProp< >store.setState(key, value) : void > : ^^^^ >store.setState : (key: K_1, value: S[K_1]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >store : Store > : ^^^^^^^^ >setState : (key: K_1, value: S[K_1]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >key : K > : ^ >value : P[K] & ({} | null) @@ -191,11 +191,11 @@ export function syncStoreProp< >store.setState(key, value) : void > : ^^^^ >store.setState : (key: K_1, value: S[K_1]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >store : Store > : ^^^^^^^^ >setState : (key: K_1, value: S[K_1]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >key : K > : ^ >value : P[K] & ({} | null) diff --git a/tests/baselines/reference/indexedAccessCanBeHighOrder.types b/tests/baselines/reference/indexedAccessCanBeHighOrder.types index faf17290bd6a5..a40555eb0e5ea 100644 --- a/tests/baselines/reference/indexedAccessCanBeHighOrder.types +++ b/tests/baselines/reference/indexedAccessCanBeHighOrder.types @@ -3,7 +3,7 @@ === indexedAccessCanBeHighOrder.ts === declare function get(x: U, y: Y): U[Y]; >get : (x: U, y: Y) => U[Y] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : U > : ^ >y : Y @@ -11,13 +11,13 @@ declare function get(x: U, y: Y): U[Y]; declare function find(o: T[K]): [T, K]; >find : (o: T[K]) => [T, K] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >o : T[K] > : ^^^^ function impl(a: A, b: B) { >impl : (a: A, b: B) => [A, B] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : A > : ^ >b : B @@ -29,7 +29,7 @@ function impl(a: A, b: B) { >get(a, b) : A[B] > : ^^^^ >get : (x: U, y: Y) => U[Y] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : A > : ^ >b : B @@ -39,7 +39,7 @@ function impl(a: A, b: B) { >find(item) : [A, B] > : ^^^^^^ >find : (o: T[K]) => [T, K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >item : A[B] > : ^^^^ } @@ -58,9 +58,9 @@ const r = impl(o, "x"); >r : [{ x: number; }, "x"] > : ^^^^^^^^^^^^^^^^^^^^^ >impl(o, "x") : [{ x: number; }, "x"] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ >impl : (a: A, b: B) => [A, B] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >o : { x: number; } > : ^^^^^^^^^^^^^^ >"x" : "x" diff --git a/tests/baselines/reference/indexedAccessConstraints.types b/tests/baselines/reference/indexedAccessConstraints.types index 22c2e9652f505..cd24ab7b7d4fe 100644 --- a/tests/baselines/reference/indexedAccessConstraints.types +++ b/tests/baselines/reference/indexedAccessConstraints.types @@ -3,7 +3,7 @@ === indexedAccessConstraints.ts === function foo(a: T[keyof T]) { >foo : (a: T[keyof T]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T[keyof T] > : ^^^^^^^^^^ @@ -18,7 +18,7 @@ function foo(a: T[keyof T]) { export function methodFnLength(obj: T, methodKey: K): number { >methodFnLength : (obj: T, methodKey: K) => number -> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >methodKey : K @@ -61,7 +61,7 @@ export function methodFnLength(obj: T, methodKe function getField(x: T | null, k: keyof T) { >getField : (x: T | null, k: keyof T) => T[keyof T] | null -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x : T | null > : ^^^^^^^^ >k : keyof T diff --git a/tests/baselines/reference/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types b/tests/baselines/reference/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types index 6c7f57cb73daa..4098ebf62203c 100644 --- a/tests/baselines/reference/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types +++ b/tests/baselines/reference/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types @@ -14,7 +14,7 @@ type Params = Parameters>; interface Wrapper { call(event: K, ...args: Params): void; >call : (event: K, ...args: Params) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >event : K > : ^ >args : Parameters> diff --git a/tests/baselines/reference/indexedAccessNormalization.types b/tests/baselines/reference/indexedAccessNormalization.types index 934e3cfca5e69..72fbccec09d42 100644 --- a/tests/baselines/reference/indexedAccessNormalization.types +++ b/tests/baselines/reference/indexedAccessNormalization.types @@ -16,13 +16,13 @@ type MyMap = { declare function g(value?: T): void; >g : (value?: T) => void -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^ ^^^^^ >value : T | undefined > : ^^^^^^^^^^^^^ function f1(mymap: MyMap, k: keyof M) { >f1 : (mymap: MyMap, k: keyof M) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >mymap : MyMap > : ^^^^^^^^ >k : keyof M @@ -41,15 +41,15 @@ function f1(mymap: MyMap, k: keyof M) { g(elemofM); >g(elemofM) : void > : ^^^^ ->g : (value?: T | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : (value?: T) => void +> : ^ ^^ ^^^ ^^^^^^^^^ >elemofM : MyMap[keyof M] > : ^^^^^^^^^^^^^^^^^ } function f2(mymap: MyMap, k: keyof M, z: { x: number }) { >f2 : (mymap: MyMap, k: keyof M, z: { x: number; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >mymap : MyMap > : ^^^^^^^^ >k : keyof M diff --git a/tests/baselines/reference/indexedAccessRelation.types b/tests/baselines/reference/indexedAccessRelation.types index 571d1520c0291..20fe57223e34a 100644 --- a/tests/baselines/reference/indexedAccessRelation.types +++ b/tests/baselines/reference/indexedAccessRelation.types @@ -9,7 +9,7 @@ class Component { setState(state: Pick) {} >setState : (state: Pick) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >state : Pick > : ^^^^^^^^^^ } @@ -32,7 +32,7 @@ class Comp extends Component> { foo(a: T) { >foo : (a: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : T > : ^ @@ -40,11 +40,11 @@ class Comp extends Component> >this.setState({ a: a }) : void > : ^^^^ >this.setState : (state: Pick, K>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >setState : (state: Pick, K>) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: a } : { a: T; } > : ^^^^^^^^^ >a : T diff --git a/tests/baselines/reference/indexedAccessTypeConstraints.types b/tests/baselines/reference/indexedAccessTypeConstraints.types index 256bd804361cd..ef08c42195dd6 100644 --- a/tests/baselines/reference/indexedAccessTypeConstraints.types +++ b/tests/baselines/reference/indexedAccessTypeConstraints.types @@ -15,7 +15,7 @@ type Data = { get: (prop: K) => T[K]; >get : (prop: K) => T[K] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >prop : K > : ^ @@ -57,7 +57,7 @@ export class Foo extends Parent> { >this.getData().get('content') : C > : ^ >this.getData().get : (prop: K) => IData[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >this.getData() : Data> > : ^^^^^^^^^^^^^^ >this.getData : () => Data> @@ -67,7 +67,7 @@ export class Foo extends Parent> { >getData : () => Data> > : ^^^^^^^^^^^^^^^^^^^^ >get : (prop: K) => IData[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >'content' : "content" > : ^^^^^^^^^ } @@ -87,7 +87,7 @@ export class Bar> extends Parent { >this.getData().get('content') : T["content"] > : ^^^^^^^^^^^^ >this.getData().get : (prop: K) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >this.getData() : Data > : ^^^^^^^ >this.getData : () => Data @@ -97,7 +97,7 @@ export class Bar> extends Parent { >getData : () => Data > : ^^^^^^^^^^^^^ >get : (prop: K) => T[K] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >'content' : "content" > : ^^^^^^^^^ } @@ -106,8 +106,8 @@ export class Bar> extends Parent { // Repro from #14557 function foo(x: C, y: T['content']) { ->foo : (x: C, y: T['content']) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^ +>foo : (x: C, y: T["content"]) => void +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >content : C > : ^ >x : C diff --git a/tests/baselines/reference/indexedAccessWithFreshObjectLiteral.types b/tests/baselines/reference/indexedAccessWithFreshObjectLiteral.types index a61faa98209fc..c483b23f65f72 100644 --- a/tests/baselines/reference/indexedAccessWithFreshObjectLiteral.types +++ b/tests/baselines/reference/indexedAccessWithFreshObjectLiteral.types @@ -3,7 +3,7 @@ === indexedAccessWithFreshObjectLiteral.ts === function foo (id: string) { >foo : (id: string) => string | number | boolean | undefined -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : string > : ^^^^^^ @@ -37,8 +37,8 @@ function foo (id: string) { } function bar (id: 'a' | 'b') { ->bar : (id: 'a' | 'b') => string | number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>bar : (id: "a" | "b") => string | number +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >id : "a" | "b" > : ^^^^^^^^^ @@ -72,8 +72,8 @@ function bar (id: 'a' | 'b') { } function baz (id: '1' | '2') { ->baz : (id: '1' | '2') => string | number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>baz : (id: "1" | "2") => string | number +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >id : "1" | "2" > : ^^^^^^^^^ @@ -108,7 +108,7 @@ function baz (id: '1' | '2') { function qux (id: 1 | 2) { >qux : (id: 1 | 2) => string | number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >id : 1 | 2 > : ^^^^^ @@ -142,8 +142,8 @@ function qux (id: 1 | 2) { } function quux (id: 'a' | 'b' | 'z') { ->quux : (id: 'a' | 'b' | 'z') => string | number | undefined -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>quux : (id: "a" | "b" | "z") => string | number | undefined +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : "a" | "b" | "z" > : ^^^^^^^^^^^^^^^ @@ -178,7 +178,7 @@ function quux (id: 'a' | 'b' | 'z') { function corge(id: string) { >corge : (id: string) => string | number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >id : string > : ^^^^^^ @@ -211,7 +211,7 @@ function corge(id: string) { function grault(id: string) { >grault : (id: string) => string | number -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >id : string > : ^^^^^^ diff --git a/tests/baselines/reference/indexer2.types b/tests/baselines/reference/indexer2.types index dba491d3baccb..f6121ad42d0b8 100644 --- a/tests/baselines/reference/indexer2.types +++ b/tests/baselines/reference/indexer2.types @@ -5,7 +5,7 @@ interface IHeapObjectProperty {} interface IDirectChildrenMap { hasOwnProperty(objectId: number) : boolean; >hasOwnProperty : (objectId: number) => boolean -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >objectId : number > : ^^^^^^ diff --git a/tests/baselines/reference/indexer2A.types b/tests/baselines/reference/indexer2A.types index aaa94124aa73c..8fad1a5b24cdd 100644 --- a/tests/baselines/reference/indexer2A.types +++ b/tests/baselines/reference/indexer2A.types @@ -12,7 +12,7 @@ class IDirectChildrenMap { // Decided to enforce a semicolon after declarations hasOwnProperty(objectId: number): boolean >hasOwnProperty : (objectId: number) => boolean -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >objectId : number > : ^^^^^^ diff --git a/tests/baselines/reference/indexerReturningTypeParameter1.types b/tests/baselines/reference/indexerReturningTypeParameter1.types index 280ff6c378076..97f8ee72f9d1a 100644 --- a/tests/baselines/reference/indexerReturningTypeParameter1.types +++ b/tests/baselines/reference/indexerReturningTypeParameter1.types @@ -16,7 +16,7 @@ var r = a.groupBy(); >r : { [key: string]: unknown[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a.groupBy() : { [key: string]: unknown[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a.groupBy : () => { [key: string]: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : f @@ -45,7 +45,7 @@ var r2 = a2.groupBy(); >r2 : { [key: string]: unknown[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a2.groupBy() : { [key: string]: unknown[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a2.groupBy : () => { [key: string]: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a2 : c diff --git a/tests/baselines/reference/indexersInClassType.types b/tests/baselines/reference/indexersInClassType.types index 467c576b6cc4a..46e93ffea44ae 100644 --- a/tests/baselines/reference/indexersInClassType.types +++ b/tests/baselines/reference/indexersInClassType.types @@ -65,7 +65,7 @@ var r3 = r.a >r3 : {} > : ^^ >r.a : {} -> : ^^ +> : >r : C > : ^ >a : {} diff --git a/tests/baselines/reference/indexingTypesWithNever.types b/tests/baselines/reference/indexingTypesWithNever.types index 8bcfa855d7679..d1bd02182a282 100644 --- a/tests/baselines/reference/indexingTypesWithNever.types +++ b/tests/baselines/reference/indexingTypesWithNever.types @@ -31,7 +31,7 @@ type Result2 = EmptyObj[keyof EmptyObj]; declare function genericFn1(obj: T): T[never]; >genericFn1 : (obj: T) => T[never] -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ @@ -42,7 +42,7 @@ const result3 = genericFn1({ c: "ctest", d: "dtest" }); >genericFn1({ c: "ctest", d: "dtest" }) : never > : ^^^^^ >genericFn1 : (obj: T) => T[never] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >{ c: "ctest", d: "dtest" } : { c: string; d: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >c : string @@ -56,7 +56,7 @@ const result3 = genericFn1({ c: "ctest", d: "dtest" }); declare function genericFn2( >genericFn2 : (obj: T) => T[never] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ind : string > : ^^^^^^ @@ -73,7 +73,7 @@ const result4 = genericFn2({ e: "etest", f: "ftest" }); >genericFn2({ e: "etest", f: "ftest" }) : never > : ^^^^^ >genericFn2 : (obj: T) => T[never] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >{ e: "etest", f: "ftest" } : { e: string; f: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string @@ -87,7 +87,7 @@ const result4 = genericFn2({ e: "etest", f: "ftest" }); declare function genericFn3< >genericFn3 : (obj: T, u: U, v: V) => T[U & V] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ T extends { [K in keyof T]: T[K] }, U extends keyof T, @@ -107,7 +107,7 @@ const result5 = genericFn3({ g: "gtest", h: "htest" }, "g", "h"); // 'g' & 'h' w >genericFn3({ g: "gtest", h: "htest" }, "g", "h") : never > : ^^^^^ >genericFn3 : (obj: T, u: U, v: V) => T[U & V] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >{ g: "gtest", h: "htest" } : { g: string; h: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >g : string diff --git a/tests/baselines/reference/indirectDiscriminantAndExcessProperty.types b/tests/baselines/reference/indirectDiscriminantAndExcessProperty.types index 55fcd736ade56..0e6c5cf73e624 100644 --- a/tests/baselines/reference/indirectDiscriminantAndExcessProperty.types +++ b/tests/baselines/reference/indirectDiscriminantAndExcessProperty.types @@ -21,7 +21,7 @@ export type Blah = declare function thing(blah: Blah): void; >thing : (blah: Blah) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >blah : Blah > : ^^^^ @@ -35,7 +35,7 @@ thing({ >thing({ type: foo1, abc: "hello!"}) : void > : ^^^^ >thing : (blah: Blah) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ type: foo1, abc: "hello!"} : { type: string; abc: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -63,7 +63,7 @@ thing({ >thing({ type: foo2, abc: "hello!", extra: 123,}) : void > : ^^^^ >thing : (blah: Blah) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ type: foo2, abc: "hello!", extra: 123,} : { type: string; abc: string; extra: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -97,7 +97,7 @@ thing({ >thing({ type: bar, xyz: 123, extra: 123,}) : void > : ^^^^ >thing : (blah: Blah) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ type: bar, xyz: 123, extra: 123,} : { type: string; xyz: number; extra: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/indirectTypeParameterReferences.types b/tests/baselines/reference/indirectTypeParameterReferences.types index 017c82e7631db..709aae5beae99 100644 --- a/tests/baselines/reference/indirectTypeParameterReferences.types +++ b/tests/baselines/reference/indirectTypeParameterReferences.types @@ -11,9 +11,9 @@ type B = {b: string} const flowtypes = (b: B) => { >flowtypes : (b: B) => { combined: (fn: (combined: A & B) => void) => any; literal: (fn: (aPlusB: A & B) => void) => any; } -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >(b: B) => { type Combined = A & B const combined = (fn: (combined: Combined) => void) => null const literal = (fn: (aPlusB: A & B) => void) => null return {combined, literal}} : (b: B) => { combined: (fn: (combined: A & B) => void) => any; literal: (fn: (aPlusB: A & B) => void) => any; } -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : >b : B > : ^ @@ -23,42 +23,42 @@ const flowtypes = (b: B) => { const combined = (fn: (combined: Combined) => void) => null >combined : (fn: (combined: A & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^ >(fn: (combined: Combined) => void) => null : (fn: (combined: A & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : >fn : (combined: A & B) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >combined : A & B > : ^^^^^ const literal = (fn: (aPlusB: A & B) => void) => null >literal : (fn: (aPlusB: A & B) => void) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >(fn: (aPlusB: A & B) => void) => null : (fn: (aPlusB: A & B) => void) => any -> : ^^^^^ ^^^^^^^^ +> : >fn : (aPlusB: A & B) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >aPlusB : A & B > : ^^^^^ return {combined, literal} >{combined, literal} : { combined: (fn: (combined: A & B) => void) => any; literal: (fn: (aPlusB: A & B) => void) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >combined : (fn: (combined: A & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >literal : (fn: (aPlusB: A & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ } const {combined, literal} = flowtypes<{a: string}>({b: 'b-value'}) >combined : (fn: (combined: { a: string; } & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >literal : (fn: (aPlusB: { a: string; } & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >flowtypes<{a: string}>({b: 'b-value'}) : { combined: (fn: (combined: { a: string; } & B) => void) => any; literal: (fn: (aPlusB: { a: string; } & B) => void) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >flowtypes : (b: B) => { combined: (fn: (combined: A & B) => void) => any; literal: (fn: (aPlusB: A & B) => void) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a : string > : ^^^^^^ >{b: 'b-value'} : { b: string; } @@ -71,9 +71,9 @@ const {combined, literal} = flowtypes<{a: string}>({b: 'b-value'}) literal(aPlusB => { >literal(aPlusB => { aPlusB.b aPlusB.a}) : any >literal : (fn: (aPlusB: { a: string; } & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aPlusB => { aPlusB.b aPlusB.a} : (aPlusB: { a: string; } & B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aPlusB : { a: string; } & B > : ^^^^^^^^^^^^^^^^^^ @@ -98,9 +98,9 @@ literal(aPlusB => { combined(comb => { >combined(comb => { comb.b comb.a}) : any >combined : (fn: (combined: { a: string; } & B) => void) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >comb => { comb.b comb.a} : (comb: { a: string; } & B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >comb : { a: string; } & B > : ^^^^^^^^^^^^^^^^^^ @@ -126,7 +126,7 @@ combined(comb => { declare function f(a: T): { a: typeof a }; >f : (a: T) => { a: typeof a; } -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : T > : ^ >a : T @@ -142,7 +142,7 @@ let n: number = f(2).a; >f(2) : { a: number; } > : ^^^^^^^^^^^^^^ >f : (a: T) => { a: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >2 : 2 > : ^ >a : number diff --git a/tests/baselines/reference/inferFromBindingPattern.types b/tests/baselines/reference/inferFromBindingPattern.types index 6d673725958f1..bd41369758cd9 100644 --- a/tests/baselines/reference/inferFromBindingPattern.types +++ b/tests/baselines/reference/inferFromBindingPattern.types @@ -67,7 +67,7 @@ const [x] = foo(); // [number] interface SelectProps { selector?: (obj: T) => K; >selector : ((obj: T) => K) | undefined -> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >obj : T > : ^ } @@ -88,7 +88,7 @@ interface Person { declare function selectJohn(props?: SelectProps): SelectResult; >selectJohn : (props?: SelectProps) => SelectResult -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ >props : SelectProps | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -97,8 +97,8 @@ const [person] = selectJohn(); > : ^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps | undefined) => SelectResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const [any, whatever] = selectJohn(); >any : Person @@ -107,16 +107,16 @@ const [any, whatever] = selectJohn(); > : ^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps | undefined) => SelectResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const john = selectJohn(); >john : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps | undefined) => SelectResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const [personAgain, nufinspecial] = john; >personAgain : Person @@ -130,13 +130,13 @@ const [personAgain, nufinspecial] = john; declare function makeTuple(arg: T1): [T1]; >makeTuple : (arg: T1) => [T1] -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arg : T1 > : ^^ declare function stringy(arg?: T): T; >stringy : (arg?: T) => T -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ >arg : T | undefined > : ^^^^^^^^^^^^^ @@ -146,11 +146,11 @@ const isStringTuple = makeTuple(stringy()); // [string] >makeTuple(stringy()) : [string] > : ^^^^^^^^ >makeTuple : (arg: T1) => [T1] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >stringy() : string > : ^^^^^^ ->stringy : (arg?: T | undefined) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringy : (arg?: T) => T +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^ const [isAny] = makeTuple(stringy()); // [string] >isAny : string @@ -158,9 +158,9 @@ const [isAny] = makeTuple(stringy()); // [string] >makeTuple(stringy()) : [string] > : ^^^^^^^^ >makeTuple : (arg: T1) => [T1] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >stringy() : string > : ^^^^^^ ->stringy : (arg?: T | undefined) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringy : (arg?: T) => T +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^ diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes1.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes1.types index e7948e3a3482a..048fc5574da3e 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes1.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes1.types @@ -14,7 +14,7 @@ class SetOf { add(a: A) { >add : (a: A) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : A > : ^ @@ -22,7 +22,7 @@ class SetOf { >this._store.push(a) : number > : ^^^^^^ >this._store.push : (...items: A[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >this._store : A[] > : ^^^ >this : this @@ -30,16 +30,16 @@ class SetOf { >_store : A[] > : ^^^ >push : (...items: A[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : A > : ^ } transform(transformer: (a: SetOf) => SetOf): SetOf { >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >transformer : (a: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : SetOf > : ^^^^^^^^ @@ -47,16 +47,16 @@ class SetOf { >transformer(this) : SetOf > : ^^^^^^^^ >transformer : (a: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >this : this > : ^^^^ } forEach(fn: (a: A, index: number) => void) { >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fn : (a: A, index: number) => void -> : ^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >index : number @@ -66,7 +66,7 @@ class SetOf { >this._store.forEach((a, i) => fn(a, i)) : void > : ^^^^ >this._store.forEach : (callbackfn: (value: A, index: number, array: A[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >this._store : A[] > : ^^^ >this : this @@ -74,9 +74,9 @@ class SetOf { >_store : A[] > : ^^^ >forEach : (callbackfn: (value: A, index: number, array: A[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(a, i) => fn(a, i) : (a: A, i: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^ >a : A > : ^ >i : number @@ -84,7 +84,7 @@ class SetOf { >fn(a, i) : void > : ^^^^ >fn : (a: A, index: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : A > : ^ >i : number @@ -94,29 +94,29 @@ class SetOf { function compose( >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ fnA: (a: SetOf) => SetOf, >fnA : (a: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : SetOf > : ^^^^^^^^ fnB: (b: SetOf) => SetOf, >fnB : (b: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : SetOf > : ^^^^^^^^ fnC: (c: SetOf) => SetOf, >fnC : (c: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : SetOf > : ^^^^^^^^ fnD: (c: SetOf) => SetOf, >fnD : (c: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : SetOf > : ^^^^^^^^ @@ -127,9 +127,9 @@ function compose( /* ... etc ... */ function compose(...fns: ((x: T) => T)[]): (x: T) => T { >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >fns : ((x: T) => T)[] -> : ^^^^^ ^^^^^ ^^^ +> : ^^ ^^ ^^^^^ ^^^ >x : T > : ^ >x : T @@ -137,27 +137,27 @@ function compose(...fns: ((x: T) => T)[]): (x: T) => T { return (x: T) => fns.reduce((prev, fn) => fn(prev), x); >(x: T) => fns.reduce((prev, fn) => fn(prev), x) : (x: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >fns.reduce((prev, fn) => fn(prev), x) : T > : ^ >fns.reduce : { (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T): (x: T) => T; (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T, initialValue: (x: T) => T): (x: T) => T; (callbackfn: (previousValue: U, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^^ ^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^ >fns : ((x: T) => T)[] -> : ^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^ >reduce : { (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T): (x: T) => T; (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T, initialValue: (x: T) => T): (x: T) => T; (callbackfn: (previousValue: U, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^^ ^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^ >(prev, fn) => fn(prev) : (prev: T, fn: (x: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^ ^^ ^^^^^^^^^^^^ >prev : T > : ^ >fn : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >fn(prev) : T > : ^ >fn : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >prev : T > : ^ >x : T @@ -166,9 +166,9 @@ function compose(...fns: ((x: T) => T)[]): (x: T) => T { function map(fn: (a: A) => B): (s: SetOf) => SetOf { >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^ ^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >s : SetOf @@ -176,7 +176,7 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { return (a: SetOf) => { >(a: SetOf) => { const b: SetOf = new SetOf(); a.forEach(x => b.add(fn(x))); return b; } : (a: SetOf) => SetOf -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ @@ -192,27 +192,27 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { >a.forEach(x => b.add(fn(x))) : void > : ^^^^ >a.forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x => b.add(fn(x)) : (x: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ >b.add(fn(x)) : void > : ^^^^ >b.add : (a: B) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >b : SetOf > : ^^^^^^^^ >add : (a: B) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >fn(x) : B > : ^ >fn : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : A > : ^ @@ -224,9 +224,9 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >predicate : (a: A) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >s : SetOf @@ -234,7 +234,7 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { return (a: SetOf) => { >(a: SetOf) => { const result = new SetOf(); a.forEach(x => { if (predicate(x)) result.add(x); }); return result; } : (a: SetOf) => SetOf -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ @@ -250,13 +250,13 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >a.forEach(x => { if (predicate(x)) result.add(x); }) : void > : ^^^^ >a.forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x => { if (predicate(x)) result.add(x); } : (x: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ @@ -264,17 +264,17 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >predicate(x) : boolean > : ^^^^^^^ >predicate : (a: A) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : A > : ^ >result.add(x) : void > : ^^^^ >result.add : (a: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >result : SetOf > : ^^^^^^^^ >add : (a: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ @@ -297,11 +297,11 @@ testSet.add(1); >testSet.add(1) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -309,11 +309,11 @@ testSet.add(2); >testSet.add(2) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ @@ -321,11 +321,11 @@ testSet.add(3); >testSet.add(3) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >3 : 3 > : ^ @@ -333,25 +333,25 @@ testSet.transform( >testSet.transform( compose( filter(x => x % 1 === 0), map(x => x + x), map(x => x + '!!!'), map(x => x.toUpperCase()) )) : SetOf > : ^^^^^^^^^^^^^ >testSet.transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ compose( >compose( filter(x => x % 1 === 0), map(x => x + x), map(x => x + '!!!'), map(x => x.toUpperCase()) ) : (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ filter(x => x % 1 === 0), >filter(x => x % 1 === 0) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x % 1 === 0 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 1 === 0 : boolean @@ -367,11 +367,11 @@ testSet.transform( map(x => x + x), >map(x => x + x) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + x : number @@ -383,11 +383,11 @@ testSet.transform( map(x => x + '!!!'), >map(x => x + '!!!') : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + '!!!' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + '!!!' : string @@ -399,11 +399,11 @@ testSet.transform( map(x => x.toUpperCase()) >map(x => x.toUpperCase()) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x.toUpperCase() : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.toUpperCase() : string @@ -422,25 +422,25 @@ testSet.transform( >testSet.transform( compose( filter(x => x % 1 === 0), map(x => x + x), map(x => 123), // Whoops a bug map(x => x.toUpperCase()) // causes an error! )) : SetOf > : ^^^^^^^^^^ >testSet.transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ compose( >compose( filter(x => x % 1 === 0), map(x => x + x), map(x => 123), // Whoops a bug map(x => x.toUpperCase()) // causes an error! ) : (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ filter(x => x % 1 === 0), >filter(x => x % 1 === 0) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x % 1 === 0 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 1 === 0 : boolean @@ -456,11 +456,11 @@ testSet.transform( map(x => x + x), >map(x => x + x) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + x : number @@ -472,11 +472,11 @@ testSet.transform( map(x => 123), // Whoops a bug >map(x => 123) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => 123 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >123 : 123 @@ -484,11 +484,11 @@ testSet.transform( map(x => x.toUpperCase()) // causes an error! >map(x => x.toUpperCase()) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x.toUpperCase() : (x: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x.toUpperCase() : any diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes2.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes2.types index 814689cca9a53..5e6abc8195e4d 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes2.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes2.types @@ -9,25 +9,25 @@ type Mapper = (x: T) => U; declare function wrap(cb: Mapper): Mapper; >wrap : (cb: Mapper) => Mapper -> : ^ ^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >cb : Mapper > : ^^^^^^^^^^^^ declare function arrayize(cb: Mapper): Mapper; >arrayize : (cb: Mapper) => Mapper -> : ^ ^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >cb : Mapper > : ^^^^^^^^^^^^ declare function combine(f: (x: A) => B, g: (x: B) => C): (x: A) => C; >combine : (f: (x: A) => B, g: (x: B) => C) => (x: A) => C -> : ^ ^^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >f : (x: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A > : ^ >g : (x: B) => C -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : B > : ^ >x : A @@ -35,7 +35,7 @@ declare function combine(f: (x: A) => B, g: (x: B) => C): (x: A) => C; declare function foo(f: Mapper): void; >foo : (f: Mapper) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >f : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -43,7 +43,7 @@ let f1: Mapper = s => s.length; >f1 : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -59,9 +59,9 @@ let f2: Mapper = wrap(s => s.length); >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -77,13 +77,13 @@ let f3: Mapper = arrayize(wrap(s => s.length)); >arrayize(wrap(s => s.length)) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^^ >arrayize : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -97,15 +97,15 @@ let f4: Mapper = combine(wrap(s => s.length), wrap(n => n >= 10 >f4 : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^ >combine(wrap(s => s.length), wrap(n => n >= 10)) : (x: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >combine : (f: (x: A) => B, g: (x: B) => C) => (x: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -117,9 +117,9 @@ let f4: Mapper = combine(wrap(s => s.length), wrap(n => n >= 10 >wrap(n => n >= 10) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >n => n >= 10 : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n >= 10 : boolean @@ -133,13 +133,13 @@ foo(wrap(s => s.length)); >foo(wrap(s => s.length)) : void > : ^^^^ >foo : (f: Mapper) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -155,7 +155,7 @@ let a1 = ["a", "b"].map(s => s.length); >["a", "b"].map(s => s.length) : number[] > : ^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -163,9 +163,9 @@ let a1 = ["a", "b"].map(s => s.length); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -181,7 +181,7 @@ let a2 = ["a", "b"].map(wrap(s => s.length)); >["a", "b"].map(wrap(s => s.length)) : number[] > : ^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -189,13 +189,13 @@ let a2 = ["a", "b"].map(wrap(s => s.length)); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -211,7 +211,7 @@ let a3 = ["a", "b"].map(wrap(arrayize(s => s.length))); >["a", "b"].map(wrap(arrayize(s => s.length))) : number[][] > : ^^^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -219,17 +219,17 @@ let a3 = ["a", "b"].map(wrap(arrayize(s => s.length))); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >wrap(arrayize(s => s.length)) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >arrayize(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^^ >arrayize : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -245,7 +245,7 @@ let a4 = ["a", "b"].map(combine(wrap(s => s.length), wrap(n => n > 10))); >["a", "b"].map(combine(wrap(s => s.length), wrap(n => n > 10))) : boolean[] > : ^^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -253,17 +253,17 @@ let a4 = ["a", "b"].map(combine(wrap(s => s.length), wrap(n => n > 10))); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >combine(wrap(s => s.length), wrap(n => n > 10)) : (x: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >combine : (f: (x: A) => B, g: (x: B) => C) => (x: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -275,9 +275,9 @@ let a4 = ["a", "b"].map(combine(wrap(s => s.length), wrap(n => n > 10))); >wrap(n => n > 10) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >n => n > 10 : (n: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n > 10 : boolean @@ -293,7 +293,7 @@ let a5 = ["a", "b"].map(combine(identity, wrap(s => s.length))); >["a", "b"].map(combine(identity, wrap(s => s.length))) : number[] > : ^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -301,19 +301,19 @@ let a5 = ["a", "b"].map(combine(identity, wrap(s => s.length))); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >combine(identity, wrap(s => s.length)) : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >combine : (f: (x: A) => B, g: (x: B) => C) => (x: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >identity : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -329,7 +329,7 @@ let a6 = ["a", "b"].map(combine(wrap(s => s.length), identity)); >["a", "b"].map(combine(wrap(s => s.length), identity)) : number[] > : ^^^^^^^^ >["a", "b"].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >["a", "b"] : string[] > : ^^^^^^^^ >"a" : "a" @@ -337,17 +337,17 @@ let a6 = ["a", "b"].map(combine(wrap(s => s.length), identity)); >"b" : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >combine(wrap(s => s.length), identity) : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >combine : (f: (x: A) => B, g: (x: B) => C) => (x: A) => C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >wrap(s => s.length) : Mapper > : ^^^^^^^^^^^^^^^^^^^^^^ >wrap : (cb: Mapper) => Mapper -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number @@ -357,7 +357,7 @@ let a6 = ["a", "b"].map(combine(wrap(s => s.length), identity)); >length : number > : ^^^^^^ >identity : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // This is a contrived class. We could do the same thing with Observables, etc. class SetOf { @@ -370,7 +370,7 @@ class SetOf { add(a: A) { >add : (a: A) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : A > : ^ @@ -378,7 +378,7 @@ class SetOf { >this._store.push(a) : number > : ^^^^^^ >this._store.push : (...items: A[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >this._store : A[] > : ^^^ >this : this @@ -386,16 +386,16 @@ class SetOf { >_store : A[] > : ^^^ >push : (...items: A[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : A > : ^ } transform(transformer: (a: SetOf) => SetOf): SetOf { >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >transformer : (a: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : SetOf > : ^^^^^^^^ @@ -403,16 +403,16 @@ class SetOf { >transformer(this) : SetOf > : ^^^^^^^^ >transformer : (a: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >this : this > : ^^^^ } forEach(fn: (a: A, index: number) => void) { >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >fn : (a: A, index: number) => void -> : ^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >index : number @@ -422,7 +422,7 @@ class SetOf { >this._store.forEach((a, i) => fn(a, i)) : void > : ^^^^ >this._store.forEach : (callbackfn: (value: A, index: number, array: A[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >this._store : A[] > : ^^^ >this : this @@ -430,9 +430,9 @@ class SetOf { >_store : A[] > : ^^^ >forEach : (callbackfn: (value: A, index: number, array: A[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(a, i) => fn(a, i) : (a: A, i: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^ >a : A > : ^ >i : number @@ -440,7 +440,7 @@ class SetOf { >fn(a, i) : void > : ^^^^ >fn : (a: A, index: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : A > : ^ >i : number @@ -450,29 +450,29 @@ class SetOf { function compose( >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ fnA: (a: SetOf) => SetOf, >fnA : (a: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : SetOf > : ^^^^^^^^ fnB: (b: SetOf) => SetOf, >fnB : (b: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : SetOf > : ^^^^^^^^ fnC: (c: SetOf) => SetOf, >fnC : (c: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : SetOf > : ^^^^^^^^ fnD: (c: SetOf) => SetOf, >fnD : (c: SetOf) => SetOf -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : SetOf > : ^^^^^^^^ @@ -483,9 +483,9 @@ function compose( /* ... etc ... */ function compose(...fns: ((x: T) => T)[]): (x: T) => T { >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >fns : ((x: T) => T)[] -> : ^^^^^ ^^^^^ ^^^ +> : ^^ ^^ ^^^^^ ^^^ >x : T > : ^ >x : T @@ -493,27 +493,27 @@ function compose(...fns: ((x: T) => T)[]): (x: T) => T { return (x: T) => fns.reduce((prev, fn) => fn(prev), x); >(x: T) => fns.reduce((prev, fn) => fn(prev), x) : (x: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >x : T > : ^ >fns.reduce((prev, fn) => fn(prev), x) : T > : ^ >fns.reduce : { (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T): (x: T) => T; (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T, initialValue: (x: T) => T): (x: T) => T; (callbackfn: (previousValue: U, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^^ ^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^ >fns : ((x: T) => T)[] -> : ^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^ >reduce : { (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T): (x: T) => T; (callbackfn: (previousValue: (x: T) => T, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => (x: T) => T, initialValue: (x: T) => T): (x: T) => T; (callbackfn: (previousValue: U, currentValue: (x: T) => T, currentIndex: number, array: ((x: T) => T)[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^ ^^^ ^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^^ ^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^^^^^^ >(prev, fn) => fn(prev) : (prev: T, fn: (x: T) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^ ^^ ^^^^^^^^^^^^ >prev : T > : ^ >fn : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >fn(prev) : T > : ^ >fn : (x: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >prev : T > : ^ >x : T @@ -522,9 +522,9 @@ function compose(...fns: ((x: T) => T)[]): (x: T) => T { function map(fn: (a: A) => B): (s: SetOf) => SetOf { >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^ ^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >fn : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >s : SetOf @@ -532,7 +532,7 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { return (a: SetOf) => { >(a: SetOf) => { const b: SetOf = new SetOf(); a.forEach(x => b.add(fn(x))); return b; } : (a: SetOf) => SetOf -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ @@ -548,27 +548,27 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { >a.forEach(x => b.add(fn(x))) : void > : ^^^^ >a.forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x => b.add(fn(x)) : (x: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ >b.add(fn(x)) : void > : ^^^^ >b.add : (a: B) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >b : SetOf > : ^^^^^^^^ >add : (a: B) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >fn(x) : B > : ^ >fn : (a: A) => B -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >x : A > : ^ @@ -580,9 +580,9 @@ function map(fn: (a: A) => B): (s: SetOf) => SetOf { function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >predicate : (a: A) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ >s : SetOf @@ -590,7 +590,7 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { return (a: SetOf) => { >(a: SetOf) => { const result = new SetOf(); a.forEach(x => { if (predicate(x)) result.add(x); }); return result; } : (a: SetOf) => SetOf -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ @@ -606,13 +606,13 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >a.forEach(x => { if (predicate(x)) result.add(x); }) : void > : ^^^^ >a.forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : SetOf > : ^^^^^^^^ >forEach : (fn: (a: A, index: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x => { if (predicate(x)) result.add(x); } : (x: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ @@ -620,17 +620,17 @@ function filter(predicate: (a: A) => boolean): (s: SetOf) => SetOf { >predicate(x) : boolean > : ^^^^^^^ >predicate : (a: A) => boolean -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : A > : ^ >result.add(x) : void > : ^^^^ >result.add : (a: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >result : SetOf > : ^^^^^^^^ >add : (a: A) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >x : A > : ^ @@ -653,11 +653,11 @@ testSet.add(1); >testSet.add(1) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -665,11 +665,11 @@ testSet.add(2); >testSet.add(2) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >2 : 2 > : ^ @@ -677,11 +677,11 @@ testSet.add(3); >testSet.add(3) : void > : ^^^^ >testSet.add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >add : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >3 : 3 > : ^ @@ -691,25 +691,25 @@ const t1 = testSet.transform( >testSet.transform( compose( filter(x => x % 1 === 0), map(x => x + x), map(x => x + '!!!'), map(x => x.toUpperCase()) )) : SetOf > : ^^^^^^^^^^^^^ >testSet.transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ compose( >compose( filter(x => x % 1 === 0), map(x => x + x), map(x => x + '!!!'), map(x => x.toUpperCase()) ) : (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ filter(x => x % 1 === 0), >filter(x => x % 1 === 0) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x % 1 === 0 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 1 === 0 : boolean @@ -725,11 +725,11 @@ const t1 = testSet.transform( map(x => x + x), >map(x => x + x) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + x : number @@ -741,11 +741,11 @@ const t1 = testSet.transform( map(x => x + '!!!'), >map(x => x + '!!!') : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + '!!!' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + '!!!' : string @@ -757,11 +757,11 @@ const t1 = testSet.transform( map(x => x.toUpperCase()) >map(x => x.toUpperCase()) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x.toUpperCase() : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.toUpperCase() : string @@ -778,7 +778,7 @@ const t1 = testSet.transform( declare function identity(x: T): T; >identity : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -788,25 +788,25 @@ const t2 = testSet.transform( >testSet.transform( compose( filter(x => x % 1 === 0), identity, map(x => x + '!!!'), map(x => x.toUpperCase()) )) : SetOf > : ^^^^^^^^^^^^^ >testSet.transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testSet : SetOf > : ^^^^^^^^^^^^^ >transform : (transformer: (a: SetOf) => SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ compose( >compose( filter(x => x % 1 === 0), identity, map(x => x + '!!!'), map(x => x.toUpperCase()) ) : (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >compose : (fnA: (a: SetOf) => SetOf, fnB: (b: SetOf) => SetOf, fnC: (c: SetOf) => SetOf, fnD: (c: SetOf) => SetOf) => (x: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ filter(x => x % 1 === 0), >filter(x => x % 1 === 0) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >filter : (predicate: (a: A) => boolean) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x % 1 === 0 : (x: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 1 === 0 : boolean @@ -822,15 +822,15 @@ const t2 = testSet.transform( identity, >identity : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ map(x => x + '!!!'), >map(x => x + '!!!') : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x + '!!!' : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x + '!!!' : string @@ -842,11 +842,11 @@ const t2 = testSet.transform( map(x => x.toUpperCase()) >map(x => x.toUpperCase()) : (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (fn: (a: A) => B) => (s: SetOf) => SetOf -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >x => x.toUpperCase() : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.toUpperCase() : string diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types index 7ad8e9005b98b..2403476c2be21 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types @@ -13,11 +13,11 @@ function truePromise(): Promise { >Promise.resolve(true) : Promise > : ^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ } @@ -30,7 +30,7 @@ interface Wrap { function wrap(value: T): Wrap { >wrap : (value: T) => Wrap -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -42,21 +42,21 @@ function wrap(value: T): Wrap { } function wrappedFoo(): Wrap<'foo'> { ->wrappedFoo : () => Wrap<'foo'> +>wrappedFoo : () => Wrap<"foo"> > : ^^^^^^ return wrap('foo'); >wrap('foo') : Wrap<"foo"> > : ^^^^^^^^^^^ >wrap : (value: T) => Wrap -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >'foo' : "foo" > : ^^^^^ } function wrapBar(value: 'bar'): Wrap<'bar'> { ->wrapBar : (value: 'bar') => Wrap<'bar'> -> : ^^^^^^^^ ^^^^^ +>wrapBar : (value: "bar") => Wrap<"bar"> +> : ^ ^^ ^^^^^ >value : "bar" > : ^^^^^ @@ -68,7 +68,7 @@ function wrapBar(value: 'bar'): Wrap<'bar'> { } function wrappedBar(): Wrap<'bar'> { ->wrappedBar : () => Wrap<'bar'> +>wrappedBar : () => Wrap<"bar"> > : ^^^^^^ const value = 'bar'; @@ -83,7 +83,7 @@ function wrappedBar(): Wrap<'bar'> { >wrapBar(value) : Wrap<"bar"> > : ^^^^^^^^^^^ >wrapBar : (value: "bar") => Wrap<"bar"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >value : "bar" > : ^^^^^ @@ -93,7 +93,7 @@ function wrappedBar(): Wrap<'bar'> { >wrapBar('bar') : Wrap<"bar"> > : ^^^^^^^^^^^ >wrapBar : (value: "bar") => Wrap<"bar"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >'bar' : "bar" > : ^^^^^ @@ -109,7 +109,7 @@ function wrappedBar(): Wrap<'bar'> { >wrapBar(value2) : Wrap<"bar"> > : ^^^^^^^^^^^ >wrapBar : (value: "bar") => Wrap<"bar"> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >value2 : string > : ^^^^^^ @@ -117,13 +117,13 @@ function wrappedBar(): Wrap<'bar'> { >wrap(value) : Wrap<"bar"> > : ^^^^^^^^^^^ >wrap : (value: T) => Wrap -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >value : "bar" > : ^^^^^ } function wrappedBaz(): Wrap<'baz'> { ->wrappedBaz : () => Wrap<'baz'> +>wrappedBaz : () => Wrap<"baz"> > : ^^^^^^ const value: 'baz' = 'baz'; @@ -136,7 +136,7 @@ function wrappedBaz(): Wrap<'baz'> { >wrap(value) : Wrap<"baz"> > : ^^^^^^^^^^^ >wrap : (value: T) => Wrap -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >value : "baz" > : ^^^^^ } @@ -163,7 +163,7 @@ a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })); >[1, 2, 3, 4, 5].map(v => ({ type: 'folder' })) : { type: "folder"; }[] > : ^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4, 5].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4, 5] : number[] > : ^^^^^^^^ >1 : 1 @@ -177,9 +177,9 @@ a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })); >5 : 5 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >v => ({ type: 'folder' }) : (v: number) => { type: "folder"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : number > : ^^^^^^ >({ type: 'folder' }) : { type: "folder"; } @@ -211,13 +211,13 @@ let mappedArr: Array<[number, number]> = arr.map(([x, y]) => { >arr.map(([x, y]) => { return [x, y];}) : [number, number][] > : ^^^^^^^^^^^^^^^^^^ >arr.map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr : [number, number][] > : ^^^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >([x, y]) => { return [x, y];} : ([x, y]: [number, number]) => [number, number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -300,13 +300,13 @@ function bug(): Diagnostic[] { >values.map((value) => { return { severity: DiagnosticSeverity.Error, message: 'message' } }) : { severity: 1; message: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >values.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >values : any[] > : ^^^^^ >map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(value) => { return { severity: DiagnosticSeverity.Error, message: 'message' } } : (value: any) => { severity: 1; message: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : any > : ^^^ @@ -337,7 +337,7 @@ function bug(): Diagnostic[] { function objectToMap(obj: any) { >objectToMap : (obj: any) => Map -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >obj : any > : ^^^ @@ -349,21 +349,21 @@ function objectToMap(obj: any) { >Object.keys(obj).map(key => [key, obj[key]]) : [string, any][] > : ^^^^^^^^^^^^^^^ >Object.keys(obj).map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >Object.keys(obj) : string[] > : ^^^^^^^^ >Object.keys : { (o: object): string[]; (o: {}): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >keys : { (o: object): string[]; (o: {}): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >obj : any > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >key => [key, obj[key]] : (key: string) => [string, any] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string > : ^^^^^^ >[key, obj[key]] : [string, any] @@ -383,7 +383,7 @@ function objectToMap(obj: any) { interface Person { phoneNumbers: { ->phoneNumbers : { __typename: 'PhoneNumber'; }[] +>phoneNumbers : { __typename: "PhoneNumber"; }[] > : ^^^^^^^^^^^^^^ ^^^^^ __typename: 'PhoneNumber'; @@ -405,15 +405,15 @@ function createPerson(): Person { >phoneNumbers : { __typename: "PhoneNumber"; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1].map(() => ({ __typename: 'PhoneNumber' })) : { __typename: "PhoneNumber"; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ >[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >() => ({ __typename: 'PhoneNumber' }) : () => { __typename: "PhoneNumber"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ __typename: 'PhoneNumber' }) : { __typename: "PhoneNumber"; } @@ -441,7 +441,7 @@ type Box = { value: T }; declare function box(value: T): Box; >box : (value: T) => Box -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -465,7 +465,7 @@ let zz: Box = box({ type: 'draw' }); >box({ type: 'draw' }) : Box<{ type: "draw"; }> > : ^^^^^^^^^^^^^^^^^^^^^^ >box : (value: T) => Box -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >{ type: 'draw' } : { type: "draw"; } > : ^^^^^^^^^^^^^^^^^ >type : "draw" @@ -483,7 +483,7 @@ let yy: Box = box('draw'); >box('draw') : Box<"draw"> > : ^^^^^^^^^^^ >box : (value: T) => Box -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >'draw' : "draw" > : ^^^^^^ @@ -500,7 +500,7 @@ interface OK { } export function ok(value: T): OK { >ok : (value: T) => OK -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >value : T > : ^ @@ -529,7 +529,7 @@ let result: OK<[string, number]> = ok(["hello", 12]); >ok(["hello", 12]) : OK<[string, number]> > : ^^^^^^^^^^^^^^^^^^^^ >ok : (value: T) => OK -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^ >["hello", 12] : [string, number] > : ^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -555,7 +555,7 @@ const a3: I[] = ['a', 'b'].map(name => { >['a', 'b'].map(name => { return { code: 'mapped', name, }}) : { code: "mapped"; name: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >['a', 'b'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >['a', 'b'] : string[] > : ^^^^^^^^ >'a' : "a" @@ -563,9 +563,9 @@ const a3: I[] = ['a', 'b'].map(name => { >'b' : "b" > : ^^^ >map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >name => { return { code: 'mapped', name, }} : (name: string) => { code: "mapped"; name: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string > : ^^^^^^ @@ -619,11 +619,11 @@ const f1: F = () => { >Promise.all([ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ]) : Promise<({ name: string; age: number; position: "GOALKEEPER"; } | { name: string; age: number; position: "STRIKER"; })[]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ] : ({ name: string; age: number; position: "GOALKEEPER"; } | { name: string; age: number; position: "STRIKER"; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ { @@ -677,11 +677,11 @@ const f1: F = () => { declare function foldLeft(z: U, f: (acc: U, t: boolean) => U): U; >foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >z : U > : ^ >f : (acc: U, t: boolean) => U -> : ^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >acc : U > : ^ >t : boolean @@ -693,11 +693,11 @@ let res: boolean = foldLeft(true, (acc, t) => acc && t); // Error >foldLeft(true, (acc, t) => acc && t) : boolean > : ^^^^^^^ >foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >true : true > : ^^^^ >(acc, t) => acc && t : (acc: boolean, t: boolean) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >acc : boolean > : ^^^^^^^ >t : boolean @@ -725,7 +725,7 @@ type Foo = { state: State } declare function bar(f: () => T[]): T[]; >bar : (f: () => T[]) => T[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >f : () => T[] > : ^^^^^^ @@ -735,7 +735,7 @@ let x: Foo[] = bar(() => !!true ? [{ state: State.A }] : [{ state: State.B }]); >bar(() => !!true ? [{ state: State.A }] : [{ state: State.B }]) : { state: State.A; }[] > : ^^^^^^^^^^^^^^^^^^^^^ >bar : (f: () => T[]) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >() => !!true ? [{ state: State.A }] : [{ state: State.B }] : () => { state: State.A; }[] | { state: State.B; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >!!true ? [{ state: State.A }] : [{ state: State.B }] : { state: State.A; }[] | { state: State.B; }[] @@ -791,18 +791,18 @@ class ClassWithConvert { convert(converter: { to: (v: T) => T; }) { } >convert : (converter: { to: (v: T) => T; }) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >converter : { to: (v: T) => T; } > : ^^^^^^ ^^^ >to : (v: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >v : T > : ^ } function fn(arg: ClassWithConvert, f: () => ClassWithConvert) { } >fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void -> : ^ ^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg : ClassWithConvert > : ^^^^^^^^^^^^^^^^^^^ >f : () => ClassWithConvert @@ -812,7 +812,7 @@ fn(new ClassWithConvert(Enum.A), () => new ClassWithConvert(Enum.A)); >fn(new ClassWithConvert(Enum.A), () => new ClassWithConvert(Enum.A)) : void > : ^^^^ >fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >new ClassWithConvert(Enum.A) : ClassWithConvert > : ^^^^^^^^^^^^^^^^^^^^^^ >ClassWithConvert : typeof ClassWithConvert @@ -844,13 +844,13 @@ type Func = (x: T) => T; declare function makeFoo(x: T): Func; >makeFoo : (x: T) => Func -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ declare function baz(x: Func, y: Func): void; >baz : (x: Func, y: Func) => void -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : Func > : ^^^^^^^ >y : Func @@ -860,11 +860,11 @@ baz(makeFoo(Enum.A), makeFoo(Enum.A)); >baz(makeFoo(Enum.A), makeFoo(Enum.A)) : void > : ^^^^ >baz : (x: Func, y: Func) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >makeFoo(Enum.A) : Func > : ^^^^^^^^^^ >makeFoo : (x: T) => Func -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >Enum.A : Enum.A > : ^^^^^^ >Enum : typeof Enum @@ -874,7 +874,7 @@ baz(makeFoo(Enum.A), makeFoo(Enum.A)); >makeFoo(Enum.A) : Func > : ^^^^^^^^^^ >makeFoo : (x: T) => Func -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >Enum.A : Enum.A > : ^^^^^^ >Enum : typeof Enum diff --git a/tests/baselines/reference/inferFromNestedSameShapeTuple.types b/tests/baselines/reference/inferFromNestedSameShapeTuple.types index 7dbc64ea5c70a..4cdbd56ff3758 100644 --- a/tests/baselines/reference/inferFromNestedSameShapeTuple.types +++ b/tests/baselines/reference/inferFromNestedSameShapeTuple.types @@ -28,7 +28,7 @@ type Recursive = { declare function getIds(items: readonly Recursive[]): Id[]; >getIds : (items: readonly Recursive[]) => Id[] -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >items : readonly Recursive[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -79,7 +79,7 @@ const foo = getIds(items) >getIds(items) : ("a" | "b")[] > : ^^^^^^^^^^^^^ >getIds : (items: readonly Recursive[]) => Id[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -90,7 +90,7 @@ const foo2 = getIds([{ >getIds([{ id: 'a', children: [{ id: 'b', children: [] }]}] as const) : ("a" | "b")[] > : ^^^^^^^^^^^^^ >getIds : (items: readonly Recursive[]) => Id[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[{ id: 'a', children: [{ id: 'b', children: [] }]}] : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] @@ -143,7 +143,7 @@ type T2 = [42, T2<{ x: T }>]; function qq(x: T1, y: T2) { >qq : (x: T1, y: T2) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T1 > : ^^^^^ >y : T2 diff --git a/tests/baselines/reference/inferObjectTypeFromStringLiteralToKeyof.types b/tests/baselines/reference/inferObjectTypeFromStringLiteralToKeyof.types index 26d834ecc93c5..7bab32e7b3844 100644 --- a/tests/baselines/reference/inferObjectTypeFromStringLiteralToKeyof.types +++ b/tests/baselines/reference/inferObjectTypeFromStringLiteralToKeyof.types @@ -3,13 +3,13 @@ === inferObjectTypeFromStringLiteralToKeyof.ts === declare function inference1(name: keyof T): T; >inference1 : (name: keyof T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >name : keyof T > : ^^^^^^^ declare function inference2(target: T, name: keyof T): T; >inference2 : (target: T, name: keyof T) => T -> : ^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >target : T > : ^ >name : keyof T @@ -25,19 +25,19 @@ const x = inference1(two); >inference1(two) : { a: any; d: any; } > : ^^^^^^^^^^^^^^^^^^^ >inference1 : (name: keyof T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >two : "a" | "d" > : ^^^^^^^^^ const y = inference2({ a: 1, b: 2, c: 3, d(n) { return n } }, two); >y : { a: number; b: number; c: number; d(n: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >inference2({ a: 1, b: 2, c: 3, d(n) { return n } }, two) : { a: number; b: number; c: number; d(n: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >inference2 : (target: T, name: keyof T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ a: 1, b: 2, c: 3, d(n) { return n } } : { a: number; b: number; c: number; d(n: any): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >1 : 1 @@ -51,7 +51,7 @@ const y = inference2({ a: 1, b: 2, c: 3, d(n) { return n } }, two); >3 : 3 > : ^ >d : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n : any >n : any >two : "a" | "d" diff --git a/tests/baselines/reference/inferParameterWithMethodCallInitializer.types b/tests/baselines/reference/inferParameterWithMethodCallInitializer.types index e66798abfa5bd..33659728bdfff 100644 --- a/tests/baselines/reference/inferParameterWithMethodCallInitializer.types +++ b/tests/baselines/reference/inferParameterWithMethodCallInitializer.types @@ -23,7 +23,7 @@ class Example { } doSomething(a = this.getNumber()): typeof a { >doSomething : (a?: number) => typeof a -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >this.getNumber() : number @@ -44,7 +44,7 @@ class Example { } function weird(this: Example, a = this.getNumber()) { >weird : (this: Example, a?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >this : Example > : ^^^^^^^ >a : number @@ -68,7 +68,7 @@ class Weird { doSomething(this: Example, a = this.getNumber()) { >doSomething : (this: Example, a?: number) => number -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >this : Example > : ^^^^^^^ >a : number diff --git a/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types b/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types index 66f75b1b16e1c..65d7a596e3827 100644 --- a/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types +++ b/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types @@ -5,7 +5,7 @@ declare function repro(config: { >repro : (config: { params: T; callback: () => (params: T) => number; }) => void -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >config : { params: T; callback: () => (params: T) => number; } > : ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -25,9 +25,9 @@ repro({ >repro({ params: 1, callback: () => { return a => a + 1 },}) : void > : ^^^^ >repro : (config: { params: T; callback: () => (params: T) => number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ params: 1, callback: () => { return a => a + 1 },} : { params: number; callback: () => (a: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ params: 1, >params : number @@ -37,11 +37,11 @@ repro({ callback: () => { return a => a + 1 }, >callback : () => (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >() => { return a => a + 1 } : () => (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a => a + 1 : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >a + 1 : number diff --git a/tests/baselines/reference/inferRestArgumentsMappedTuple.types b/tests/baselines/reference/inferRestArgumentsMappedTuple.types index aa0c55a25bdbe..2fa0e35c456d6 100644 --- a/tests/baselines/reference/inferRestArgumentsMappedTuple.types +++ b/tests/baselines/reference/inferRestArgumentsMappedTuple.types @@ -24,7 +24,7 @@ type MyMappedTupleOld = TupleMapperOld<[string, number]>; // [MyMappedType(...mappedTypes: TupleMapperOld): Tuple; >extractPrimitivesOld : (...mappedTypes: TupleMapperOld) => Tuple -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >mappedTypes : TupleMapperOld > : ^^^^^^^^^^^^^^^^^^^^^ @@ -34,7 +34,7 @@ const myPrimitiveTupleOld: [string, number] = extractPrimitivesOld({ primitive: >extractPrimitivesOld({ primitive: "" }, { primitive: 0 }) : [string, number] > : ^^^^^^^^^^^^^^^^ >extractPrimitivesOld : (...mappedTypes: TupleMapperOld) => Tuple -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >{ primitive: "" } : { primitive: string; } > : ^^^^^^^^^^^^^^^^^^^^^^ >primitive : string @@ -61,7 +61,7 @@ type MyMappedTupleNew = TupleMapperNew<[string, number]>; declare function extractPrimitivesNew(...mappedTypes: TupleMapperNew): Tuple; >extractPrimitivesNew : (...mappedTypes: TupleMapperNew) => Tuple -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >mappedTypes : TupleMapperNew > : ^^^^^^^^^^^^^^^^^^^^^ @@ -71,7 +71,7 @@ const myPrimitiveTupleNew: [string, number] = extractPrimitivesNew({ primitive: >extractPrimitivesNew({ primitive: "" }, { primitive: 0 }) : [string, number] > : ^^^^^^^^^^^^^^^^ >extractPrimitivesNew : (...mappedTypes: TupleMapperNew) => Tuple -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >{ primitive: "" } : { primitive: string; } > : ^^^^^^^^^^^^^^^^^^^^^^ >primitive : string diff --git a/tests/baselines/reference/inferSecondaryParameter.types b/tests/baselines/reference/inferSecondaryParameter.types index f72d55151095b..b561cff823919 100644 --- a/tests/baselines/reference/inferSecondaryParameter.types +++ b/tests/baselines/reference/inferSecondaryParameter.types @@ -5,7 +5,7 @@ interface Ib { m(test: string, fn: Function); } >m : (test: string, fn: Function) => any -> : ^^^^^^^ ^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >test : string > : ^^^^^^ >fn : Function @@ -15,11 +15,11 @@ var b: Ib = { m: function (test: string, fn: Function) { } }; >b : Ib > : ^^ >{ m: function (test: string, fn: Function) { } } : { m: (test: string, fn: Function) => void; } -> : ^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >m : (test: string, fn: Function) => void -> : ^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >function (test: string, fn: Function) { } : (test: string, fn: Function) => void -> : ^^^^^^^ ^^^^^^ ^^^^^^^^^ +> : >test : string > : ^^^^^^ >fn : Function @@ -28,15 +28,15 @@ var b: Ib = { m: function (test: string, fn: Function) { } }; b.m("test", function (bug) { >b.m("test", function (bug) { var a: number = bug;}) : any >b.m : (test: string, fn: Function) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >b : Ib > : ^^ >m : (test: string, fn: Function) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >"test" : "test" > : ^^^^^^ >function (bug) { var a: number = bug;} : (bug: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >bug : any var a: number = bug; diff --git a/tests/baselines/reference/inferStringLiteralUnionForBindingElement.types b/tests/baselines/reference/inferStringLiteralUnionForBindingElement.types index 8fb29bdac3c50..5435d27899dc0 100644 --- a/tests/baselines/reference/inferStringLiteralUnionForBindingElement.types +++ b/tests/baselines/reference/inferStringLiteralUnionForBindingElement.types @@ -3,7 +3,7 @@ === inferStringLiteralUnionForBindingElement.ts === declare function func(arg: { keys: T[] }): { readonly keys: T[]; readonly firstKey: T; }; >func : (arg: { keys: T[]; }) => { readonly keys: T[]; readonly firstKey: T; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { keys: T[]; } > : ^^^^^^^^ ^^^ >keys : T[] @@ -23,7 +23,7 @@ function func1() { >func({keys: ["aa", "bb"]}) : { readonly keys: ("aa" | "bb")[]; readonly firstKey: "aa" | "bb"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (arg: { keys: T[]; }) => { readonly keys: T[]; readonly firstKey: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{keys: ["aa", "bb"]} : { keys: ("aa" | "bb")[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >keys : ("aa" | "bb")[] @@ -47,7 +47,7 @@ function func1() { >func({keys: ["aa", "bb"]}) : { readonly keys: ("aa" | "bb")[]; readonly firstKey: "aa" | "bb"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (arg: { keys: T[]; }) => { readonly keys: T[]; readonly firstKey: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{keys: ["aa", "bb"]} : { keys: ("aa" | "bb")[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >keys : ("aa" | "bb")[] @@ -78,7 +78,7 @@ function func2() { >func({keys: ["aa", "bb"]}) : { readonly keys: ("aa" | "bb")[]; readonly firstKey: "aa" | "bb"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func : (arg: { keys: T[]; }) => { readonly keys: T[]; readonly firstKey: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{keys: ["aa", "bb"]} : { keys: ("aa" | "bb")[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >keys : ("aa" | "bb")[] @@ -111,9 +111,9 @@ function func3() { >x : { readonly keys: ("aa" | "bb")[]; readonly firstKey: "aa" | "bb"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func({keys: ["aa", "bb"]}) : { readonly keys: ("aa" | "bb")[]; readonly firstKey: "aa" | "bb"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >func : (arg: { keys: T[]; }) => { readonly keys: T[]; readonly firstKey: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{keys: ["aa", "bb"]} : { keys: ("aa" | "bb")[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >keys : ("aa" | "bb")[] diff --git a/tests/baselines/reference/inferThisType.types b/tests/baselines/reference/inferThisType.types index 74ddc99a7e879..1e801ab49715a 100644 --- a/tests/baselines/reference/inferThisType.types +++ b/tests/baselines/reference/inferThisType.types @@ -3,15 +3,15 @@ === inferThisType.ts === declare function f(g: (this: T) => void): T >f : (g: (this: T) => void) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >g : (this: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >this : T > : ^ declare function h(this: number): void; >h : (this: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >this : number > : ^^^^^^ @@ -19,9 +19,9 @@ f(h) >f(h) : number > : ^^^^^^ >f : (g: (this: T) => void) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >h : (this: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ // works with infer types as well type Check = T extends (this: infer U, ...args: any[]) => any ? string : unknown; diff --git a/tests/baselines/reference/inferTupleFromBindingPattern.types b/tests/baselines/reference/inferTupleFromBindingPattern.types index 00bfd80cf00a5..09ff823a1212e 100644 --- a/tests/baselines/reference/inferTupleFromBindingPattern.types +++ b/tests/baselines/reference/inferTupleFromBindingPattern.types @@ -3,7 +3,7 @@ === inferTupleFromBindingPattern.ts === declare function f(cb: () => T): T; >f : (cb: () => T) => T -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : () => T > : ^^^^^^ @@ -17,7 +17,7 @@ const [e1, e2, e3] = f(() => [1, "hi", true]); >f(() => [1, "hi", true]) : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (cb: () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >() => [1, "hi", true] : () => [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, "hi", true] : [number, string, true] diff --git a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types index 2baabb7b74200..9e7c67a4a2ecd 100644 --- a/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types +++ b/tests/baselines/reference/inferTypeArgumentsInSignatureWithRestParameters.types @@ -3,7 +3,7 @@ === inferTypeArgumentsInSignatureWithRestParameters.ts === function f(array: T[], ...args) { } >f : (array: T[], ...args: any[]) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >array : T[] > : ^^^ >args : any[] @@ -11,7 +11,7 @@ function f(array: T[], ...args) { } function g(array: number[], ...args) { } >g : (array: number[], ...args: any[]) => void -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ >args : any[] @@ -19,7 +19,7 @@ function g(array: number[], ...args) { } function h(nonarray: T, ...args) { } >h : (nonarray: T, ...args: any[]) => void -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >nonarray : T > : ^ >args : any[] @@ -27,7 +27,7 @@ function h(nonarray: T, ...args) { } function i(array: T[], opt?: any[]) { } >i : (array: T[], opt?: any[]) => void -> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >array : T[] > : ^^^ >opt : any[] @@ -53,7 +53,7 @@ f(a); // OK >f(a) : void > : ^^^^ >f : (array: T[], ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ @@ -61,7 +61,7 @@ g(a); // OK >g(a) : void > : ^^^^ >g : (array: number[], ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ @@ -69,7 +69,7 @@ h(a); // OK >h(a) : void > : ^^^^ >h : (nonarray: T, ...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ @@ -77,7 +77,7 @@ i(a); // OK >i(a) : void > : ^^^^ >i : (array: T[], opt?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >a : number[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/inferTypePredicates.types b/tests/baselines/reference/inferTypePredicates.types index 8ef83f5017788..691cb40881094 100644 --- a/tests/baselines/reference/inferTypePredicates.types +++ b/tests/baselines/reference/inferTypePredicates.types @@ -23,13 +23,13 @@ const filteredNumsTruthy: number[] = numsOrNull.filter(x => !!x); // should err >numsOrNull.filter(x => !!x) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >numsOrNull.filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >numsOrNull : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x => !!x : (x: number | null) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >!!x : boolean @@ -45,13 +45,13 @@ const filteredNumsNonNullish: number[] = numsOrNull.filter(x => x !== null); // >numsOrNull.filter(x => x !== null) : number[] > : ^^^^^^^^ >numsOrNull.filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >numsOrNull : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x => x !== null : (x: number | null) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >x !== null : boolean @@ -67,11 +67,11 @@ const evenSquaresInline: number[] = // should error >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter(x => !!x) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -85,9 +85,9 @@ const evenSquaresInline: number[] = // should error .map(x => x % 2 === 0 ? x * x : null) >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 2 === 0 ? x * x : null : number | null @@ -111,9 +111,9 @@ const evenSquaresInline: number[] = // should error .filter(x => !!x); // tests truthiness, not non-nullishness >filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x => !!x : (x: number | null) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >!!x : boolean @@ -125,9 +125,9 @@ const evenSquaresInline: number[] = // should error const isTruthy = (x: number | null) => !!x; >isTruthy : (x: number | null) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(x: number | null) => !!x : (x: number | null) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >x : number | null > : ^^^^^^^^^^^^^ >!!x : boolean @@ -145,11 +145,11 @@ const evenSquares: number[] = // should error >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter(isTruthy) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -163,9 +163,9 @@ const evenSquares: number[] = // should error .map(x => x % 2 === 0 ? x * x : null) >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 2 === 0 ? x * x : null : number | null @@ -189,9 +189,9 @@ const evenSquares: number[] = // should error .filter(isTruthy); >filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >isTruthy : (x: number | null) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ const evenSquaresNonNull: number[] = // should ok >evenSquaresNonNull : number[] @@ -201,11 +201,11 @@ const evenSquaresNonNull: number[] = // should ok >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter(x => x !== null) : number[] > : ^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) .filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -219,9 +219,9 @@ const evenSquaresNonNull: number[] = // should ok .map(x => x % 2 === 0 ? x * x : null) >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x % 2 === 0 ? x * x : null : number | null @@ -245,9 +245,9 @@ const evenSquaresNonNull: number[] = // should ok .filter(x => x !== null); >filter : { (predicate: (value: number | null, index: number, array: (number | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: number | null, index: number, array: (number | null)[]) => unknown, thisArg?: any): (number | null)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x => x !== null : (x: number | null) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >x !== null : boolean @@ -257,7 +257,7 @@ const evenSquaresNonNull: number[] = // should ok function isNonNull(x: number | null) { >isNonNull : (x: number | null) => x is number -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ @@ -271,7 +271,7 @@ function isNonNull(x: number | null) { // factoring out a boolean works thanks to aliased discriminants function isNonNullVar(x: number | null) { >isNonNullVar : (x: number | null) => x is number -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ @@ -290,7 +290,7 @@ function isNonNullVar(x: number | null) { function isNonNullGeneric(x: T) { >isNonNullGeneric : (x: T) => x is T & ({} | undefined) -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -304,9 +304,9 @@ function isNonNullGeneric(x: T) { // Type guards can flow between functions const myGuard = (o: string | undefined): o is string => !!o; >myGuard : (o: string | undefined) => o is string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(o: string | undefined): o is string => !!o : (o: string | undefined) => o is string -> : ^^^^ ^^^^^ +> : >o : string | undefined > : ^^^^^^^^^^^^^^^^^^ >!!o : boolean @@ -318,15 +318,15 @@ const myGuard = (o: string | undefined): o is string => !!o; const mySecondGuard = (o: string | undefined) => myGuard(o); >mySecondGuard : (o: string | undefined) => o is string -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >(o: string | undefined) => myGuard(o) : (o: string | undefined) => o is string -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : >o : string | undefined > : ^^^^^^^^^^^^^^^^^^ >myGuard(o) : boolean > : ^^^^^^^ >myGuard : (o: string | undefined) => o is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >o : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -357,23 +357,23 @@ const result = myArray >myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) .map((arr) => arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) // should error ) : any[][] > : ^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) .map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) .filter : { (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => unknown, thisArg?: any): (MyObj[] | undefined)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray : MyArray > : ^^^^^^^ .map((arr) => arr.list) >map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : { list?: MyObj[] | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr.list : MyObj[] | undefined @@ -385,9 +385,9 @@ const result = myArray .filter((arr) => arr && arr.length) >filter : { (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => unknown, thisArg?: any): (MyObj[] | undefined)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(arr) => arr && arr.length : (arr: MyObj[] | undefined) => number | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] | undefined > : ^^^^^^^^^^^^^^^^^^^ >arr && arr.length : number | undefined @@ -403,27 +403,27 @@ const result = myArray .map((arr) => arr // should error >map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) : (arr: MyObj[] | undefined) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] | undefined > : ^^^^^^^^^^^^^^^^^^^ >arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) : any[] > : ^^^^^ >arr // should error .filter((obj) => obj && obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr // should error .filter((obj) => obj && obj.data) : MyObj[] > : ^^^^^^^ >arr // should error .filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >arr : MyObj[] | undefined > : ^^^^^^^^^^^^^^^^^^^ .filter((obj) => obj && obj.data) >filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >(obj) => obj && obj.data : (obj: MyObj) => string | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : MyObj > : ^^^^^ >obj && obj.data : string | undefined @@ -439,19 +439,19 @@ const result = myArray .map(obj => JSON.parse(obj.data)) // should error >map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >obj => JSON.parse(obj.data) : (obj: MyObj) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >obj : MyObj > : ^^^^^ >JSON.parse(obj.data) : any > : ^^^ ->JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >JSON : JSON > : ^^^^ ->parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >obj.data : string | undefined > : ^^^^^^^^^^^^^^^^^^ >obj : MyObj @@ -467,27 +467,27 @@ const result2 = myArray >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) .map((arr) => arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) ) : any[][] > : ^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) .map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) : MyObj[][] > : ^^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter : { (predicate: (value: MyObj[], index: number, array: MyObj[][]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[], index: number, array: MyObj[][]) => unknown, thisArg?: any): MyObj[][]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) : MyObj[][] > : ^^^^^^^^^ >myArray .map((arr) => arr.list) .filter : { (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => unknown, thisArg?: any): (MyObj[] | undefined)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray : MyArray > : ^^^^^^^ .map((arr) => arr.list) >map : (callbackfn: (value: { list?: MyObj[] | undefined; }, index: number, array: { list?: MyObj[] | undefined; }[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^ ^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr.list : (arr: { list?: MyObj[] | undefined; }) => MyObj[] | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : { list?: MyObj[] | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr.list : MyObj[] | undefined @@ -499,9 +499,9 @@ const result2 = myArray .filter((arr) => !!arr) >filter : { (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => unknown, thisArg?: any): (MyObj[] | undefined)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(arr) => !!arr : (arr: MyObj[] | undefined) => arr is MyObj[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] | undefined > : ^^^^^^^^^^^^^^^^^^^ >!!arr : boolean @@ -513,9 +513,9 @@ const result2 = myArray .filter(arr => arr.length) >filter : { (predicate: (value: MyObj[], index: number, array: MyObj[][]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[], index: number, array: MyObj[][]) => unknown, thisArg?: any): MyObj[][]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >arr => arr.length : (arr: MyObj[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] > : ^^^^^^^ >arr.length : number @@ -527,31 +527,31 @@ const result2 = myArray .map((arr) => arr // should ok >map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) : (arr: MyObj[]) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] > : ^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) : any[] > : ^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) : MyObj[] > : ^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >arr // should ok .filter((obj) => obj) : MyObj[] > : ^^^^^^^ >arr // should ok .filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >arr : MyObj[] > : ^^^^^^^ .filter((obj) => obj) >filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >(obj) => obj : (obj: MyObj) => MyObj -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >obj : MyObj > : ^^^^^ >obj : MyObj @@ -560,9 +560,9 @@ const result2 = myArray // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) >filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ >obj => !!obj.data : (obj: MyObj) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >obj : MyObj > : ^^^^^ >!!obj.data : boolean @@ -578,19 +578,19 @@ const result2 = myArray .map(obj => JSON.parse(obj.data)) >map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >obj => JSON.parse(obj.data) : (obj: MyObj) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >obj : MyObj > : ^^^^^ >JSON.parse(obj.data) : any > : ^^^ ->JSON.parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >JSON : JSON > : ^^^^ ->parse : (text: string, reviver?: ((this: any, key: string, value: any) => any) | undefined) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>parse : (text: string, reviver?: (this: any, key: string, value: any) => any) => any +> : ^ ^^ ^^ ^^^ ^^^^^^^^ >obj.data : string | undefined > : ^^^^^^^^^^^^^^^^^^ >obj : MyObj @@ -630,13 +630,13 @@ const resultBars: Bar[] = list.filter((value) => 'bar' in value); // should ok >list.filter((value) => 'bar' in value) : Bar[] > : ^^^^^ >list.filter : { (predicate: (value: Foo | Bar, index: number, array: (Foo | Bar)[]) => value is S, thisArg?: any): S[]; (predicate: (value: Foo | Bar, index: number, array: (Foo | Bar)[]) => unknown, thisArg?: any): (Foo | Bar)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >list : (Foo | Bar)[] > : ^^^^^^^^^^^^^ >filter : { (predicate: (value: Foo | Bar, index: number, array: (Foo | Bar)[]) => value is S, thisArg?: any): S[]; (predicate: (value: Foo | Bar, index: number, array: (Foo | Bar)[]) => unknown, thisArg?: any): (Foo | Bar)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >(value) => 'bar' in value : (value: Foo | Bar) => value is Bar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : Foo | Bar > : ^^^^^^^^^ >'bar' in value : boolean @@ -648,7 +648,7 @@ const resultBars: Bar[] = list.filter((value) => 'bar' in value); // should ok function isBarNonNull(x: Foo | Bar | null) { >isBarNonNull : (x: Foo | Bar | null) => x is Bar -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >x : Foo | Bar | null > : ^^^^^^^^^^^^^^^^ @@ -678,7 +678,7 @@ if (isBarNonNull(fooOrBar)) { >isBarNonNull(fooOrBar) : boolean > : ^^^^^^^ >isBarNonNull : (x: Foo | Bar | null) => x is Bar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >fooOrBar : Foo | Bar > : ^^^^^^^^^ @@ -697,7 +697,7 @@ const a = [1, "foo", 2, "bar"].filter(x => typeof x === "string"); >[1, "foo", 2, "bar"].filter(x => typeof x === "string") : string[] > : ^^^^^^^^ >[1, "foo", 2, "bar"].filter : { (predicate: (value: string | number, index: number, array: (string | number)[]) => value is S, thisArg?: any): S[]; (predicate: (value: string | number, index: number, array: (string | number)[]) => unknown, thisArg?: any): (string | number)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, "foo", 2, "bar"] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -709,9 +709,9 @@ const a = [1, "foo", 2, "bar"].filter(x => typeof x === "string"); >"bar" : "bar" > : ^^^^^ >filter : { (predicate: (value: string | number, index: number, array: (string | number)[]) => value is S, thisArg?: any): S[]; (predicate: (value: string | number, index: number, array: (string | number)[]) => unknown, thisArg?: any): (string | number)[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x => typeof x === "string" : (x: string | number) => x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >typeof x === "string" : boolean @@ -727,18 +727,18 @@ a.push(10); >a.push(10) : number > : ^^^^^^ >a.push : (...items: string[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >a : string[] > : ^^^^^^^^ >push : (...items: string[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >10 : 10 > : ^^ // Defer to explicit type guards, even when they're incorrect. function backwardsGuard(x: number|string): x is number { >backwardsGuard : (x: number | string) => x is number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -756,7 +756,7 @@ function backwardsGuard(x: number|string): x is number { // Partition tests. The "false" case matters. function isString(x: string | number) { >isString : (x: string | number) => x is string -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -779,7 +779,7 @@ if (isString(strOrNum)) { >isString(strOrNum) : boolean > : ^^^^^^^ >isString : (x: string | number) => x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >strOrNum : string | number > : ^^^^^^^^^^^^^^^ @@ -799,7 +799,7 @@ if (isString(strOrNum)) { function flakyIsString(x: string | number) { >flakyIsString : (x: string | number) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -831,7 +831,7 @@ if (flakyIsString(strOrNum)) { >flakyIsString(strOrNum) : boolean > : ^^^^^^^ >flakyIsString : (x: string | number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >strOrNum : string | number > : ^^^^^^^^^^^^^^^ @@ -851,7 +851,7 @@ if (flakyIsString(strOrNum)) { function isDate(x: object) { >isDate : (x: object) => x is Date -> : ^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >x : object > : ^^^^^^ @@ -865,7 +865,7 @@ function isDate(x: object) { } function flakyIsDate(x: object) { >flakyIsDate : (x: object) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : object > : ^^^^^^ @@ -900,7 +900,7 @@ if (isDate(maybeDate)) { >isDate(maybeDate) : boolean > : ^^^^^^^ >isDate : (x: object) => x is Date -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >maybeDate : object > : ^^^^^^ @@ -922,7 +922,7 @@ if (flakyIsDate(maybeDate)) { >flakyIsDate(maybeDate) : boolean > : ^^^^^^^ >flakyIsDate : (x: object) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >maybeDate : object > : ^^^^^^ @@ -944,7 +944,7 @@ if (flakyIsDate(maybeDate)) { // is not related to the original parameter. function irrelevantIsNumber(x: string | number) { >irrelevantIsNumber : (x: string | number) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -984,7 +984,7 @@ function irrelevantIsNumber(x: string | number) { } function irrelevantIsNumberDestructuring(x: string | number) { >irrelevantIsNumberDestructuring : (x: string | number) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -1030,7 +1030,7 @@ function irrelevantIsNumberDestructuring(x: string | number) { // Cannot infer a type guard for either param because of the false case. function areBothNums(x: string|number, y: string|number) { >areBothNums : (x: string | number, y: string | number) => boolean -> : ^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ >y : string | number @@ -1060,7 +1060,7 @@ function areBothNums(x: string|number, y: string|number) { // Could potentially infer a type guard here but it would require more bookkeeping. function doubleReturn(x: string|number) { >doubleReturn : (x: string | number) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -1085,7 +1085,7 @@ function doubleReturn(x: string|number) { function guardsOneButNotOthers(a: string|number, b: string|number, c: string|number) { >guardsOneButNotOthers : (a: string | number, b: string | number, c: string | number) => b is string -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -1107,7 +1107,7 @@ function guardsOneButNotOthers(a: string|number, b: string|number, c: string|num // Checks that there are no string escaping issues function dunderguard(__x: number | string) { >dunderguard : (__x: number | string) => __x is string -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >__x : string | number > : ^^^^^^^^^^^^^^^ @@ -1125,9 +1125,9 @@ function dunderguard(__x: number | string) { // could infer a type guard here but it doesn't seem that helpful. const booleanIdentity = (x: boolean) => x; >booleanIdentity : (x: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(x: boolean) => x : (x: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >x : boolean > : ^^^^^^^ >x : boolean @@ -1136,9 +1136,9 @@ const booleanIdentity = (x: boolean) => x; // we infer "x is number | true" which is accurate but of debatable utility. const numOrBoolean = (x: number | boolean) => typeof x === 'number' || x; >numOrBoolean : (x: number | boolean) => x is number | true -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(x: number | boolean) => typeof x === 'number' || x : (x: number | boolean) => x is number | true -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : number | boolean > : ^^^^^^^^^^^^^^^^ >typeof x === 'number' || x : boolean @@ -1158,7 +1158,7 @@ const numOrBoolean = (x: number | boolean) => typeof x === 'number' || x; interface NumberInferrer { isNumber(x: number | string): x is number; >isNumber : (x: number | string) => x is number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ } @@ -1168,7 +1168,7 @@ class Inferrer implements NumberInferrer { isNumber(x: number | string) { // should ok >isNumber : (x: number | string) => x is number -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -1198,12 +1198,12 @@ const inf = new Inferrer(); if (inf.isNumber(numOrStr)) { >inf.isNumber(numOrStr) : boolean > : ^^^^^^^ ->inf.isNumber : (x: string | number) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>inf.isNumber : (x: number | string) => x is number +> : ^ ^^ ^^^^^^^^^^^^^^^^ >inf : Inferrer > : ^^^^^^^^ ->isNumber : (x: string | number) => x is number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>isNumber : (x: number | string) => x is number +> : ^ ^^ ^^^^^^^^^^^^^^^^ >numOrStr : string | number > : ^^^^^^^^^^^^^^^ @@ -1274,7 +1274,7 @@ if (c.isC2()) { function doNotRefineDestructuredParam({x, y}: {x: number | null, y: number}) { >doNotRefineDestructuredParam : ({ x, y }: { x: number | null; y: number; }) => boolean -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >y : number @@ -1298,7 +1298,7 @@ function doNotRefineDestructuredParam({x, y}: {x: number | null, y: number}) { // The type predicate must remain valid when the function is called with subtypes. function isShortString(x: unknown) { >isShortString : (x: unknown) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -1333,7 +1333,7 @@ if (isShortString(str)) { >isShortString(str) : boolean > : ^^^^^^^ >isShortString : (x: unknown) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >str : string > : ^^^^^^ @@ -1341,11 +1341,11 @@ if (isShortString(str)) { >str.charAt(0) : string > : ^^^^^^ >str.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >str : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -1354,18 +1354,18 @@ if (isShortString(str)) { >str.charAt(0) : string > : ^^^^^^ >str.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >str : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ } function isStringFromUnknown(x: unknown) { >isStringFromUnknown : (x: unknown) => x is string -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -1383,7 +1383,7 @@ if (isStringFromUnknown(str)) { >isStringFromUnknown(str) : boolean > : ^^^^^^^ >isStringFromUnknown : (x: unknown) => x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >str : string > : ^^^^^^ @@ -1391,11 +1391,11 @@ if (isStringFromUnknown(str)) { >str.charAt(0) : string > : ^^^^^^ >str.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >str : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -1410,7 +1410,7 @@ if (isStringFromUnknown(str)) { // infer a union type function isNumOrStr(x: unknown) { >isNumOrStr : (x: unknown) => x is string | number -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -1444,7 +1444,7 @@ if (isNumOrStr(unk)) { >isNumOrStr(unk) : boolean > : ^^^^^^^ >isNumOrStr : (x: unknown) => x is string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >unk : unknown > : ^^^^^^^ @@ -1458,7 +1458,7 @@ if (isNumOrStr(unk)) { // A function can be a type predicate even if it throws. function assertAndPredicate(x: string | number | Date) { >assertAndPredicate : (x: string | number | Date) => x is string -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : string | number | Date > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -1495,7 +1495,7 @@ if (assertAndPredicate(snd)) { >assertAndPredicate(snd) : boolean > : ^^^^^^^ >assertAndPredicate : (x: string | number | Date) => x is string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >snd : string | number | Date > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -1508,7 +1508,7 @@ if (assertAndPredicate(snd)) { function isNumberWithThis(this: Date, x: number | string) { >isNumberWithThis : (this: Date, x: number | string) => x is number -> : ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >this : Date > : ^^^^ >x : string | number @@ -1527,7 +1527,7 @@ function isNumberWithThis(this: Date, x: number | string) { function narrowFromAny(x: any) { >narrowFromAny : (x: any) => x is number -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >x : any > : ^^^ @@ -1546,7 +1546,7 @@ const noInferenceFromRest = (...f: ["a" | "b"]) => f[0] === "a"; >noInferenceFromRest : (f_0: "a" | "b") => boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(...f: ["a" | "b"]) => f[0] === "a" : (f_0: "a" | "b") => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f : ["a" | "b"] > : ^^^^^^^^^^^ >f[0] === "a" : boolean @@ -1564,7 +1564,7 @@ const noInferenceFromImpossibleRest = (...f: []) => typeof f === "undefined"; >noInferenceFromImpossibleRest : () => boolean > : ^^^^^^^^^^^^^ >(...f: []) => typeof f === "undefined" : () => boolean -> : ^^^^^^^^^^^^^ +> : >f : [] > : ^^ >typeof f === "undefined" : boolean @@ -1578,7 +1578,7 @@ const noInferenceFromImpossibleRest = (...f: []) => typeof f === "undefined"; function inferWithRest(x: string | null, ...f: ["a", "b"]) { >inferWithRest : (x: string | null, f_0: "a", f_1: "b") => x is string -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | null > : ^^^^^^^^^^^^^ >f : ["a", "b"] @@ -1614,9 +1614,9 @@ declare const foobar: const foobarPred = (fb: typeof foobar) => fb.type === "foo"; >foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(fb: typeof foobar) => fb.type === "foo" : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >fb : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } @@ -1635,8 +1635,8 @@ const foobarPred = (fb: typeof foobar) => fb.type === "foo"; if (foobarPred(foobar)) { >foobarPred(foobar) : boolean > : ^^^^^^^ ->foobarPred : (fb: { type: "foo"; foo: number; } | { type: "bar"; bar: string; }) => fb is { type: "foo"; foo: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foobarPred : (fb: typeof foobar) => fb is { type: "foo"; foo: number; } +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foobar : { type: "foo"; foo: number; } | { type: "bar"; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferTypes1.types b/tests/baselines/reference/inferTypes1.types index 251ad1e20b323..1ab3b1cb2afdb 100644 --- a/tests/baselines/reference/inferTypes1.types +++ b/tests/baselines/reference/inferTypes1.types @@ -43,7 +43,7 @@ type T06 = Unpacked; // never function f1(s: string) { >f1 : (s: string) => { a: number; b: string; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ @@ -116,7 +116,7 @@ type T14 = ReturnType; // { a: number, b: string } >T14 : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f1 : (s: string) => { a: number; b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type T15 = ReturnType; // any >T15 : any @@ -322,11 +322,11 @@ type X3 = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U >X3 : X3 > : ^^^^^ >a : (x: infer U) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : U > : ^ >b : (x: infer U) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : U > : ^ @@ -338,7 +338,7 @@ type T51 = X3<{ a: (x: string) => void }>; // never >T51 : never > : ^^^^^ >a : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -346,11 +346,11 @@ type T52 = X3<{ a: (x: string) => void, b: (x: string) => void }>; // string >T52 : string > : ^^^^^^ >a : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >b : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -358,11 +358,11 @@ type T53 = X3<{ a: (x: number) => void, b: (x: string) => void }>; // never >T53 : never > : ^^^^^ >a : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >b : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -370,7 +370,7 @@ type T54 = X3<{ a: (x: number) => void, b: () => void }>; // number >T54 : number > : ^^^^^^ >a : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >b : () => void @@ -657,7 +657,7 @@ type Test2 = EnsureIsString<42>; // never function invoker (key: K, ...args: A) { >invoker : (key: K, ...args: A) => any>>(obj: T) => ReturnType -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ >key : K > : ^ >args : A @@ -665,7 +665,7 @@ function invoker (key: K, return any>> (obj: T): ReturnType => obj[key](...args) > any>> (obj: T): ReturnType => obj[key](...args) : any>>(obj: T) => ReturnType -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ >args : A > : ^ >obj : T @@ -690,19 +690,19 @@ const result = invoker('test', true)({ test: (a: boolean) => 123 }) >invoker('test', true)({ test: (a: boolean) => 123 }) : number > : ^^^^^^ >invoker('test', true) : any>>(obj: T) => ReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >invoker : (key: K, ...args: A) => any>>(obj: T) => ReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >'test' : "test" > : ^^^^^^ >true : true > : ^^^^ >{ test: (a: boolean) => 123 } : { test: (a: boolean) => number; } -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >test : (a: boolean) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(a: boolean) => 123 : (a: boolean) => number -> : ^^^^ ^^^^^^^^^^^ +> : >a : boolean > : ^^^^^^^ >123 : 123 diff --git a/tests/baselines/reference/inferTypes2.types b/tests/baselines/reference/inferTypes2.types index 17d6654ec3d25..b3fc8cf55fe61 100644 --- a/tests/baselines/reference/inferTypes2.types +++ b/tests/baselines/reference/inferTypes2.types @@ -5,13 +5,13 @@ export declare function foo(obj: T): T extends () => infer P ? P : never; >foo : (obj: T) => T extends () => infer P ? P : never -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ export function bar(obj: T) { >bar : (obj: T) => T extends () => infer P ? P : never -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ @@ -19,7 +19,7 @@ export function bar(obj: T) { >foo(obj) : T extends () => infer P ? P : never > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (obj: T_1) => T_1 extends () => infer P ? P : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ } @@ -32,13 +32,13 @@ export type BadNested = { x: T extends number ? T : string }; export declare function foo2(obj: T): T extends { [K in keyof BadNested]: BadNested[K] } ? P : never; >foo2 : (obj: T) => T extends { [K in keyof BadNested]: BadNested[K]; } ? P : never -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ export function bar2(obj: T) { >bar2 : (obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ @@ -46,7 +46,7 @@ export function bar2(obj: T) { >foo2(obj) : T extends { x: infer P extends number ? infer P : string; } ? P : never > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo2 : (obj: T_1) => T_1 extends { x: infer P extends number ? infer P : string; } ? P : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ } diff --git a/tests/baselines/reference/inferenceAndHKTs.types b/tests/baselines/reference/inferenceAndHKTs.types index dc67d34d219b2..b05f554e7cc55 100644 --- a/tests/baselines/reference/inferenceAndHKTs.types +++ b/tests/baselines/reference/inferenceAndHKTs.types @@ -45,13 +45,13 @@ export interface TTypeLambda extends TypeLambda { export declare const map: (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply; >map : (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >F : TypeClass > : ^^^^^^^^^^^^ >a : Apply > : ^^^^^^^^^^^ >f : (a: A) => B -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ @@ -65,11 +65,11 @@ declare const a: T; const x1 = map(typeClass); >x1 : (a: T, f: (a: A) => B) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >map(typeClass) : (a: T, f: (a: A) => B) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >map : (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >typeClass : TypeClass > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -79,15 +79,15 @@ const x2 = map(typeClass)(a, (_) => _); // T >map(typeClass)(a, (_) => _) : T > : ^^^^^^^^^ >map(typeClass) : (a: T, f: (a: A) => B) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >map : (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >typeClass : TypeClass > : ^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^^^^^^^^^ >(_) => _ : (_: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >_ : number > : ^^^^^^ >_ : number diff --git a/tests/baselines/reference/inferenceAndSelfReferentialConstraint.types b/tests/baselines/reference/inferenceAndSelfReferentialConstraint.types index 8a26bc90d5016..b346bc2daae50 100644 --- a/tests/baselines/reference/inferenceAndSelfReferentialConstraint.types +++ b/tests/baselines/reference/inferenceAndSelfReferentialConstraint.types @@ -16,7 +16,7 @@ type Test = { function test>(arg: T) { >test : >(arg: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >arg : T > : ^ @@ -29,9 +29,9 @@ const res1 = test({ >res1 : { foo: true; bar(): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test({ foo: true, bar() { }}) : { foo: true; bar(): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >test : >(arg: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: true, bar() { }} : { foo: true; bar(): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -51,9 +51,9 @@ const res2 = test({ >res2 : { foo: true; bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test({ foo: true, bar: function () { }}) : { foo: true; bar: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >test : >(arg: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: true, bar: function () { }} : { foo: true; bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -67,7 +67,7 @@ const res2 = test({ >bar : () => void > : ^^^^^^^^^^ >function () { } : () => void -> : ^^^^^^^^^^ +> : } }); @@ -75,9 +75,9 @@ const res3 = test({ >res3 : { foo: true; bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test({ foo: true, bar: () => { }}) : { foo: true; bar: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >test : >(arg: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: true, bar: () => { }} : { foo: true; bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -91,7 +91,7 @@ const res3 = test({ >bar : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : } }); diff --git a/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types b/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types index d2781ba008434..90bf610283692 100644 --- a/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types +++ b/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types @@ -6,36 +6,36 @@ interface NodeArray extends ReadonlyArray {} interface Node { forEachChild(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined): T | undefined; >forEachChild : (cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined) => T | undefined -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^ >cbNode : (node: Node) => T | undefined -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >node : Node > : ^^^^ >cbNodeArray : ((nodes: NodeArray) => T | undefined) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >nodes : NodeArray > : ^^^^^^^^^^^^^^^ } declare function toArray(value: T | T[]): T[]; >toArray : { (value: T | T[]): T[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } -> : ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >value : T | T[] > : ^^^^^^^ declare function toArray(value: T | readonly T[]): readonly T[]; >toArray : { (value: T_1 | T_1[]): T_1[]; (value: T | readonly T[]): readonly T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ >value : T | readonly T[] > : ^^^^^^^^^^^^^^^^ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | undefined): readonly T[] { >flatMapChildren : (node: Node, cb: (child: Node) => readonly T[] | T | undefined) => readonly T[] -> : ^ ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >node : Node > : ^^^^ >cb : (child: Node) => readonly T[] | T | undefined -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >child : Node > : ^^^^ @@ -48,14 +48,14 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | node.forEachChild(child => { >node.forEachChild(child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } }) : void | undefined > : ^^^^^^^^^^^^^^^^ ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | undefined) => T_1 | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >node : Node > : ^^^^ ->forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | undefined) => T_1 | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } } : (child: Node) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >child : Node > : ^^^^ @@ -65,7 +65,7 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | >cb(child) : T | readonly T[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cb : (child: Node) => T | readonly T[] | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >child : Node > : ^^^^ @@ -81,17 +81,17 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | >result.push(...toArray(value)) : number > : ^^^^^^ >result.push : (...items: T[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >result : T[] > : ^^^ >push : (...items: T[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >...toArray(value) : T > : ^ >toArray(value) : readonly T[] > : ^^^^^^^^^^^^ >toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_2 | readonly T_2[]): readonly T_2[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >value : readonly T[] | (T & ({} | null)) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -103,11 +103,11 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | null): readonly T[] { >flatMapChildren2 : (node: Node, cb: (child: Node) => readonly T[] | T | null) => readonly T[] -> : ^ ^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >node : Node > : ^^^^ >cb : (child: Node) => readonly T[] | T | null -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >child : Node > : ^^^^ @@ -120,14 +120,14 @@ function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | node.forEachChild(child => { >node.forEachChild(child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } }) : void | undefined > : ^^^^^^^^^^^^^^^^ ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | undefined) => T_1 | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >node : Node > : ^^^^ ->forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: ((nodes: NodeArray) => T_1 | undefined) | undefined) => T_1 | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } } : (child: Node) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >child : Node > : ^^^^ @@ -137,7 +137,7 @@ function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | >cb(child) : T | readonly T[] | null > : ^^^^^^^^^^^^^^^^^^^^^^^ >cb : (child: Node) => T | readonly T[] | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >child : Node > : ^^^^ @@ -151,17 +151,17 @@ function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | >result.push(...toArray(value)) : number > : ^^^^^^ >result.push : (...items: T[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >result : T[] > : ^^^ >push : (...items: T[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >...toArray(value) : T > : ^ >toArray(value) : readonly T[] > : ^^^^^^^^^^^^ >toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_2 | readonly T_2[]): readonly T_2[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >value : readonly T[] | (T & ({} | undefined)) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/inferenceDoesntCompareAgainstUninstantiatedTypeParameter.types b/tests/baselines/reference/inferenceDoesntCompareAgainstUninstantiatedTypeParameter.types index 6d3bd19ce9a98..2d7daff89ff69 100644 --- a/tests/baselines/reference/inferenceDoesntCompareAgainstUninstantiatedTypeParameter.types +++ b/tests/baselines/reference/inferenceDoesntCompareAgainstUninstantiatedTypeParameter.types @@ -16,7 +16,7 @@ class ClassA { export interface ValueInterface { func?: (row: TValueClass) => any; >func : (row: TValueClass) => any -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >row : TValueClass > : ^^^^^^^^^^^ @@ -27,7 +27,7 @@ export interface ValueInterface { export interface SettingsInterface { values?: (row: TClass) => ValueInterface[], >values : (row: TClass) => ValueInterface[] -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >row : TClass > : ^^^^^^ } @@ -54,20 +54,20 @@ var thisGetsTheFalseError = new ClassA(new ConcreteClass(), { >ConcreteClass : typeof ConcreteClass > : ^^^^^^^^^^^^^^^^^^^^ >{ values: o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ]} : { values: (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ values: o => [ >values : (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] : (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >o : ConcreteClass > : ^^^^^^^^^^^^^ >[ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] : { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ { >{ value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } : { value: string; func: (x: ConcreteClass) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ value: o.theName, >value : string @@ -81,9 +81,9 @@ var thisGetsTheFalseError = new ClassA(new ConcreteClass(), { func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' >func : (x: ConcreteClass) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' : (x: ConcreteClass) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : ConcreteClass > : ^^^^^^^^^^^^^ >'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' : "asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj" @@ -104,20 +104,20 @@ var thisIsOk = new ClassA(new ConcreteClass(), { >ConcreteClass : typeof ConcreteClass > : ^^^^^^^^^^^^^^^^^^^^ >{ values: o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ]} : { values: (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ values: o => [ >values : (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o => [ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] : (o: ConcreteClass) => { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >o : ConcreteClass > : ^^^^^^^^^^^^^ >[ { value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } ] : { value: string; func: (x: ConcreteClass) => string; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ { >{ value: o.theName, func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' } : { value: string; func: (x: ConcreteClass) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ value: o.theName, >value : string @@ -131,9 +131,9 @@ var thisIsOk = new ClassA(new ConcreteClass(), { func: x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' >func : (x: ConcreteClass) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => 'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' : (x: ConcreteClass) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x : ConcreteClass > : ^^^^^^^^^^^^^ >'asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj' : "asdfkjhgfdfghjkjhgfdfghjklkjhgfdfghjklkjhgfghj" diff --git a/tests/baselines/reference/inferenceErasedSignatures.types b/tests/baselines/reference/inferenceErasedSignatures.types index b1b540aedd5de..dda23e8f051ce 100644 --- a/tests/baselines/reference/inferenceErasedSignatures.types +++ b/tests/baselines/reference/inferenceErasedSignatures.types @@ -9,7 +9,7 @@ declare class SomeBaseClass { set(key: K, value: this[K]): this[K]; >set : (key: K, value: this[K]) => this[K] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >value : this[K] @@ -24,18 +24,18 @@ abstract class SomeAbstractClass extends SomeBaseClass { foo!: (r?: R) => void; >foo : (r?: R) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : R | undefined > : ^^^^^^^^^^^^^ bar!: (r?: any) => void; >bar : (r?: any) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : any abstract baz(c: C): Promise; >baz : (c: C) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C > : ^ } @@ -48,7 +48,7 @@ class SomeClass extends SomeAbstractClass { async baz(context: number): Promise { >baz : (context: number) => Promise -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >context : number > : ^^^^^^ @@ -89,7 +89,7 @@ type SomeClassR = RType; // boolean interface BaseType { set(key: K, value: this[K]): this[K]; >set : (key: K, value: this[K]) => this[K] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >value : this[K] @@ -97,19 +97,19 @@ interface BaseType { useT1(c: T1): void; >useT1 : (c: T1) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : T1 > : ^^ useT2(r?: T2): void; >useT2 : (r?: T2) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : T2 | undefined > : ^^^^^^^^^^^^^^ unrelatedButSomehowRelevant(r?: any): void; >unrelatedButSomehowRelevant : (r?: any) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : any } @@ -117,7 +117,7 @@ interface InheritedType extends BaseType { // This declaration shouldn't do anything... useT1(_: number): void >useT1 : (_: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >_ : number > : ^^^^^^ } @@ -126,7 +126,7 @@ interface InheritedType extends BaseType { interface StructuralVersion { set(key: K, value: this[K]): this[K]; >set : (key: K, value: this[K]) => this[K] -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >key : K > : ^ >value : this[K] @@ -134,19 +134,19 @@ interface StructuralVersion { useT1(c: number): void; >useT1 : (c: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : number > : ^^^^^^ useT2(r?: boolean): void; >useT2 : (r?: boolean) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ unrelatedButSomehowRelevant(r?: any): void; >unrelatedButSomehowRelevant : (r?: any) => void -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >r : any } diff --git a/tests/baselines/reference/inferenceExactOptionalProperties2.types b/tests/baselines/reference/inferenceExactOptionalProperties2.types index 2849823301aea..9d39a66188ccf 100644 --- a/tests/baselines/reference/inferenceExactOptionalProperties2.types +++ b/tests/baselines/reference/inferenceExactOptionalProperties2.types @@ -18,7 +18,7 @@ type EventObject = { interface ActorLogic { transition: (ev: TEvent) => unknown; >transition : (ev: TEvent) => unknown -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ev : TEvent > : ^^^^^^ } @@ -59,13 +59,13 @@ interface MachineConfig { declare function assign( >assign : (_: (spawn: (actor: TActor["src"]) => void) => {}) => AssignAction -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ _: (spawn: (actor: TActor["src"]) => void) => {}, >_ : (spawn: (actor: TActor["src"]) => void) => {} -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >spawn : (actor: TActor["src"]) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >actor : TActor["src"] > : ^^^^^^^^^^^^^ @@ -90,7 +90,7 @@ type ToProvidedActor> = declare function setup< >setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ TActors extends Record = {}, >(implementations?: { @@ -104,7 +104,7 @@ declare function setup< }): { createMachine: < >createMachine : >>(config: TConfig) => void -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const TConfig extends MachineConfig>, >( @@ -126,11 +126,11 @@ setup({ >setup({ actors: { counter: counterLogic },}).createMachine({ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),}) : void > : ^^^^ >setup({ actors: { counter: counterLogic },}).createMachine : ; }>>(config: TConfig) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >setup({ actors: { counter: counterLogic },}) : { createMachine: ; }>>(config: TConfig) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >{ actors: { counter: counterLogic },} : { actors: { counter: ActorLogic<{ type: "INCREMENT"; }>; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -138,35 +138,35 @@ setup({ >actors : { counter: ActorLogic<{ type: "INCREMENT"; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ counter: counterLogic } : { counter: ActorLogic<{ type: "INCREMENT"; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >counter : ActorLogic<{ type: "INCREMENT"; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >counterLogic : ActorLogic<{ type: "INCREMENT"; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^ }).createMachine({ >createMachine : ; }>>(config: TConfig) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ >{ entry: assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }),} : { entry: AssignAction<{ src: "counter"; logic: ActorLogic<{ type: "INCREMENT"; }>; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ entry: assign((spawn) => { >entry : AssignAction<{ src: "counter"; logic: ActorLogic<{ type: "INCREMENT"; }>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >assign((spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; }) : AssignAction<{ src: "counter"; logic: ActorLogic<{ type: "INCREMENT"; }>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^ >assign : (_: (spawn: (actor: TActor["src"]) => void) => {}) => AssignAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >(spawn) => { spawn("counter"); // ok spawn("alarm"); // error return {}; } : (spawn: (actor: "counter") => void) => {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >spawn : (actor: "counter") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ spawn("counter"); // ok >spawn("counter") : void > : ^^^^ >spawn : (actor: "counter") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >"counter" : "counter" > : ^^^^^^^^^ @@ -174,7 +174,7 @@ setup({ >spawn("alarm") : void > : ^^^^ >spawn : (actor: "counter") => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >"alarm" : "alarm" > : ^^^^^^^ @@ -190,13 +190,13 @@ setup().createMachine({ >setup().createMachine({ entry: assign(() => ({})),}) : void > : ^^^^ >setup().createMachine : >(config: TConfig) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >setup() : { createMachine: >(config: TConfig) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; } | undefined) => { createMachine: >>(config: TConfig) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +>setup : = {}>(implementations?: { actors?: { [K in keyof TActors]: TActors[K]; }; }) => { createMachine: >>(config: TConfig) => void; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >createMachine : >(config: TConfig) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >{ entry: assign(() => ({})),} : { entry: AssignAction; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -206,7 +206,7 @@ setup().createMachine({ >assign(() => ({})) : AssignAction > : ^^^^^^^^^^^^^^^^^^^ >assign : (_: (spawn: (actor: TActor["src"]) => void) => {}) => AssignAction -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => ({}) : () => {} > : ^^^^^^^^ >({}) : {} diff --git a/tests/baselines/reference/inferenceFromIncompleteSource.types b/tests/baselines/reference/inferenceFromIncompleteSource.types index 5982086860a2c..b55379bbb111b 100644 --- a/tests/baselines/reference/inferenceFromIncompleteSource.types +++ b/tests/baselines/reference/inferenceFromIncompleteSource.types @@ -19,7 +19,7 @@ interface ListProps { declare const Component: (x: ListProps) => void; >Component : (x: ListProps) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : ListProps > : ^^^^^^^^^^^^^^^ @@ -27,7 +27,7 @@ Component({items: [{name:' string'}], itemKey: 'name' }); >Component({items: [{name:' string'}], itemKey: 'name' }) : void > : ^^^^ >Component : (x: ListProps) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{items: [{name:' string'}], itemKey: 'name' } : { items: { name: string; }[]; itemKey: "name"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >items : { name: string; }[] diff --git a/tests/baselines/reference/inferenceFromParameterlessLambda.types b/tests/baselines/reference/inferenceFromParameterlessLambda.types index 781d6b3ca9ef5..c0938298026cd 100644 --- a/tests/baselines/reference/inferenceFromParameterlessLambda.types +++ b/tests/baselines/reference/inferenceFromParameterlessLambda.types @@ -3,7 +3,7 @@ === inferenceFromParameterlessLambda.ts === function foo(o: Take, i: Make) { } >foo : (o: Take, i: Make) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >o : Take > : ^^^^^^^ >i : Make @@ -22,9 +22,9 @@ foo(n => n.length, () => 'hi'); >foo(n => n.length, () => 'hi') : void > : ^^^^ >foo : (o: Take, i: Make) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >n => n.length : (n: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : string > : ^^^^^^ >n.length : number diff --git a/tests/baselines/reference/inferenceLimit.types b/tests/baselines/reference/inferenceLimit.types index d608514f1f2ad..39d55d41395bc 100644 --- a/tests/baselines/reference/inferenceLimit.types +++ b/tests/baselines/reference/inferenceLimit.types @@ -17,7 +17,7 @@ export class BrokenClass { public brokenMethod(field: string, value: string) { >brokenMethod : (field: string, value: string) => Promise -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >field : string > : ^^^^^^ >value : string @@ -31,11 +31,11 @@ export class BrokenClass { >MyModule : any > : ^^^ >(resolve, reject) => { let result: Array = []; let populateItems = (order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); }; return Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }); } : (resolve: (value: MyModule.MyModel[] | PromiseLike) => void, reject: (reason?: any) => void) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >resolve : (value: MyModule.MyModel[] | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ let result: Array = []; >result : MyModule.MyModel[] @@ -47,9 +47,9 @@ export class BrokenClass { let populateItems = (order) => { >populateItems : (order: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >(order) => { return new Promise((resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); }); } : (order: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >order : any return new Promise((resolve, reject) => { @@ -58,25 +58,25 @@ export class BrokenClass { >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >(resolve, reject) => { this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }); } : (resolve: (value: unknown) => void, reject: (reason?: any) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ this.doStuff(order.id) >this.doStuff(order.id) .then((items) => { order.items = items; resolve(order); }) : Promise > : ^^^^^^^^^^^^^ >this.doStuff(order.id) .then : (onfulfilled?: (value: void) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.doStuff(order.id) : Promise > : ^^^^^^^^^^^^^ >this.doStuff : (id: number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >doStuff : (id: number) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >order.id : any >order : any > : ^^^ @@ -85,9 +85,9 @@ export class BrokenClass { .then((items) => { >then : (onfulfilled?: (value: void) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(items) => { order.items = items; resolve(order); } : (items: void) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >items : void > : ^^^^ @@ -106,7 +106,7 @@ export class BrokenClass { >resolve(order) : void > : ^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >order : any }); @@ -117,31 +117,31 @@ export class BrokenClass { >Promise.all(result.map(populateItems)) .then((orders: Array) => { resolve(orders); }) : Promise > : ^^^^^^^^^^^^^ >Promise.all(result.map(populateItems)) .then : (onfulfilled?: (value: unknown[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all(result.map(populateItems)) : Promise > : ^^^^^^^^^^^^^^^^^^ >Promise.all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >all : { (values: Iterable>): Promise[]>; (values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result.map(populateItems) : Promise[] > : ^^^^^^^^^^^^^^^^^^ >result.map : (callbackfn: (value: MyModule.MyModel, index: number, array: MyModule.MyModel[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >result : MyModule.MyModel[] > : ^^^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: MyModule.MyModel, index: number, array: MyModule.MyModel[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >populateItems : (order: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ .then((orders: Array) => { >then : (onfulfilled?: (value: unknown[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(orders: Array) => { resolve(orders); } : (orders: Array) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >orders : MyModule.MyModel[] > : ^^^^^^^^^^^^^^^^^^ >MyModule : any @@ -151,7 +151,7 @@ export class BrokenClass { >resolve(orders) : void > : ^^^^ >resolve : (value: MyModule.MyModel[] | PromiseLike) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >orders : MyModule.MyModel[] > : ^^^^^^^^^^^^^^^^^^ @@ -161,7 +161,7 @@ export class BrokenClass { public async doStuff(id: number) { >doStuff : (id: number) => Promise -> : ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >id : number > : ^^^^^^ diff --git a/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types b/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types index cea4bb887ecb2..a783ee1e541b5 100644 --- a/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types +++ b/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types @@ -3,7 +3,7 @@ === inferenceOfNullableObjectTypesWithCommonBase.ts === function equal(a: T, b: T) { } >equal : (a: T, b: T) => void -> : ^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : T @@ -35,7 +35,7 @@ equal(v as B, v as undefined | D) >equal(v as B, v as undefined | D) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -49,7 +49,7 @@ equal(v as undefined | D, v as B) >equal(v as undefined | D, v as B) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined | D : D | undefined > : ^^^^^^^^^^^^^ >v : never @@ -63,7 +63,7 @@ equal(v as B, v as undefined | D) >equal(v as B, v as undefined | D) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -77,7 +77,7 @@ equal(v as undefined | D, v as B) >equal(v as undefined | D, v as B) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined | D : D | undefined > : ^^^^^^^^^^^^^ >v : never @@ -91,7 +91,7 @@ equal(v as B, v as undefined) >equal(v as B, v as undefined) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -105,7 +105,7 @@ equal(v as undefined, v as B) >equal(v as undefined, v as B) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined : undefined > : ^^^^^^^^^ >v : never @@ -119,7 +119,7 @@ equal(v as B, v as D) >equal(v as B, v as D) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -133,7 +133,7 @@ equal(v as D, v as B) >equal(v as D, v as B) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as D : D > : ^ >v : never @@ -147,7 +147,7 @@ equal(v as B, v as B | undefined) >equal(v as B, v as B | undefined) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -161,7 +161,7 @@ equal(v as B | undefined, v as B) >equal(v as B | undefined, v as B) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B | undefined : B | undefined > : ^^^^^^^^^^^^^ >v : never @@ -175,7 +175,7 @@ equal(v as 'a' | undefined, v as 'b'); >equal(v as 'a' | undefined, v as 'b') : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | undefined : "a" | undefined > : ^^^^^^^^^^^^^^^ >v : never @@ -189,7 +189,7 @@ equal(v as 'a', v as 'b' | undefined); >equal(v as 'a', v as 'b' | undefined) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' : "a" > : ^^^ >v : never @@ -203,7 +203,7 @@ equal(v as 'a' | undefined, v as 'b' | null); >equal(v as 'a' | undefined, v as 'b' | null) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | undefined : "a" | undefined > : ^^^^^^^^^^^^^^^ >v : never @@ -217,7 +217,7 @@ equal(v as 'a' | null, v as 'b' | undefined); >equal(v as 'a' | null, v as 'b' | undefined) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | null : "a" | null > : ^^^^^^^^^^ >v : never @@ -231,12 +231,12 @@ equal(v as string, v as string & { tag: 'foo' } | undefined); >equal(v as string, v as string & { tag: 'foo' } | undefined) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >v as string : string > : ^^^^^^ >v : never > : ^^^^^ ->v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined +>v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >v : never > : ^^^^^ @@ -247,8 +247,8 @@ equal(v as string & { tag: 'foo' } | undefined, v as string); >equal(v as string & { tag: 'foo' } | undefined, v as string) : void > : ^^^^ >equal : (a: T, b: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ->v as string & { tag: 'foo' } | undefined : (string & { tag: 'foo'; }) | undefined +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >v : never > : ^^^^^ diff --git a/tests/baselines/reference/inferenceOptionalProperties.types b/tests/baselines/reference/inferenceOptionalProperties.types index 6aeb56cc3cdc0..f2b27775df477 100644 --- a/tests/baselines/reference/inferenceOptionalProperties.types +++ b/tests/baselines/reference/inferenceOptionalProperties.types @@ -3,7 +3,7 @@ === inferenceOptionalProperties.ts === declare function test(x: { [key: string]: T }): T; >test : (x: { [key: string]: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -31,7 +31,7 @@ const y1 = test(x1); >test(x1) : string | number > : ^^^^^^^^^^^^^^^ >test : (x: { [key: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x1 : { a?: string; b?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -41,7 +41,7 @@ const y2 = test(x2); >test(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : (x: { [key: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x2 : { a?: string; b?: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferenceOptionalPropertiesStrict.types b/tests/baselines/reference/inferenceOptionalPropertiesStrict.types index ac5739f3ec74d..db42a8eacf409 100644 --- a/tests/baselines/reference/inferenceOptionalPropertiesStrict.types +++ b/tests/baselines/reference/inferenceOptionalPropertiesStrict.types @@ -3,7 +3,7 @@ === inferenceOptionalPropertiesStrict.ts === declare function test(x: { [key: string]: T }): T; >test : (x: { [key: string]: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -31,7 +31,7 @@ const y1 = test(x1); >test(x1) : string | number > : ^^^^^^^^^^^^^^^ >test : (x: { [key: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x1 : { a?: string; b?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -41,7 +41,7 @@ const y2 = test(x2); >test(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : (x: { [key: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x2 : { a?: string; b?: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types b/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types index 8f3abf670cde9..0b0a5e9f9e590 100644 --- a/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types +++ b/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types @@ -3,7 +3,7 @@ === inferenceOptionalPropertiesToIndexSignatures.ts === declare function foo(obj: { [x: string]: T }): T; >foo : (obj: { [x: string]: T; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -47,7 +47,7 @@ let a1 = foo(x1); // string | number >foo(x1) : string | number > : ^^^^^^^^^^^^^^^ >foo : (obj: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x1 : { a: string; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -57,7 +57,7 @@ let a2 = foo(x2); // string | number | undefined >foo(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (obj: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x2 : { a: string; b: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -67,7 +67,7 @@ let a3 = foo(x3); // string | number >foo(x3) : string | number > : ^^^^^^^^^^^^^^^ >foo : (obj: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x3 : { a: string; b?: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -77,7 +77,7 @@ let a4 = foo(x4); // string | number >foo(x4) : string | number > : ^^^^^^^^^^^^^^^ >foo : (obj: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x4 : { a: string; b?: number | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -136,28 +136,28 @@ const query = Object.entries(obj).map( > : ^^^^^^ >Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&') : string > : ^^^^^^ ->Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`).join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`) : string[] > : ^^^^^^^^ >Object.entries(obj).map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >Object.entries(obj) : [string, string][] > : ^^^^^^^^^^^^^^^^^^ >Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >obj : { param2?: string | undefined; param1: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ([k, v]) => `${k}=${encodeURIComponent(v)}` >([k, v]) => `${k}=${encodeURIComponent(v)}` : ([k, v]: [string, string]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >k : string > : ^^^^^^ >v : string @@ -169,13 +169,13 @@ const query = Object.entries(obj).map( >encodeURIComponent(v) : string > : ^^^^^^ >encodeURIComponent : (uriComponent: string | number | boolean) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >v : string > : ^^^^^^ ).join('&'); ->join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >'&' : "&" > : ^^^ diff --git a/tests/baselines/reference/inferenceShouldFailOnEvolvingArrays.types b/tests/baselines/reference/inferenceShouldFailOnEvolvingArrays.types index 8a364cbe74517..c61b90e4e0421 100644 --- a/tests/baselines/reference/inferenceShouldFailOnEvolvingArrays.types +++ b/tests/baselines/reference/inferenceShouldFailOnEvolvingArrays.types @@ -5,7 +5,7 @@ // The type of `arg` blocks inference but simplifies to T. function logLength(arg: { [K in U]: T }[U]): T { >logLength : (arg: { [K in U]: T; }[U]) => T -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { [K in U]: T; }[U] > : ^^^^^^^^^^^^^^^^^^^ @@ -13,11 +13,11 @@ function logLength(arg: { [K in U]: T }[U]): >console.log(arg.length) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >arg.length : number > : ^^^^^^ >arg : { [K in U]: T; }[U] @@ -33,7 +33,7 @@ logLength(42); // error >logLength(42) : string > : ^^^^^^ >logLength : (arg: { [K in U]: T; }[U]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ @@ -49,13 +49,13 @@ z = logLength(42); // no error; T is inferred as `any` >logLength(42) : string > : ^^^^^^ >logLength : (arg: { [K in U]: T; }[U]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ function logFirstLength(arg: { [K in U]: T }[U]): T { >logFirstLength : (arg: { [K in U]: T; }[U]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { [K in U]: T; }[U] > : ^^^^^^^^^^^^^^^^^^^ @@ -63,11 +63,11 @@ function logFirstLength(arg: { [K in U]: T >console.log(arg[0].length) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >arg[0].length : number > : ^^^^^^ >arg[0] : string @@ -87,7 +87,7 @@ logFirstLength([42]); // error >logFirstLength([42]) : string[] > : ^^^^^^^^ >logFirstLength : (arg: { [K in U]: T; }[U]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >[42] : number[] > : ^^^^^^^^ >42 : 42 @@ -103,15 +103,15 @@ zz.push(logLength(42)); // no error; T is inferred as `any` >zz.push(logLength(42)) : number > : ^^^^^^ >zz.push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >zz : any[] > : ^^^^^ >push : (...items: any[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^ >logLength(42) : string > : ^^^^^^ >logLength : (arg: { [K in U]: T; }[U]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >42 : 42 > : ^^ @@ -123,7 +123,7 @@ zz = logFirstLength([42]); // no error; T is inferred as `any[]` >logFirstLength([42]) : string[] > : ^^^^^^^^ >logFirstLength : (arg: { [K in U]: T; }[U]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >[42] : number[] > : ^^^^^^^^ >42 : 42 diff --git a/tests/baselines/reference/inferenceUnionOfObjectsMappedContextualType.types b/tests/baselines/reference/inferenceUnionOfObjectsMappedContextualType.types index d02bb1e510094..241e40a73b251 100644 --- a/tests/baselines/reference/inferenceUnionOfObjectsMappedContextualType.types +++ b/tests/baselines/reference/inferenceUnionOfObjectsMappedContextualType.types @@ -25,7 +25,7 @@ type RowRendererMeta = { >caption : string > : ^^^^^^ >formatter : ((value: TInput[key]) => string) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TInput[key] > : ^^^^^^^^^^^ } @@ -38,7 +38,7 @@ const test: RowRenderer = { >test : RowRenderer > : ^^^^^^^^^^^^^^^^^^^ >{ key: 'someDate', caption: 'My Date', formatter: (value) => value ? value.toString() : '-' // value: any} : { key: "someDate"; caption: string; formatter: (value: Date | null) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ key: 'someDate', >key : "someDate" @@ -54,9 +54,9 @@ const test: RowRenderer = { formatter: (value) => value ? value.toString() : '-' // value: any >formatter : (value: Date | null) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >(value) => value ? value.toString() : '-' : (value: Date | null) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >value : Date | null > : ^^^^^^^^^^^ >value ? value.toString() : '-' : string diff --git a/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.types b/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.types index 6e139b69c8976..2a82ba53b3e5b 100644 --- a/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.types +++ b/tests/baselines/reference/inferentialTypingObjectLiteralMethod1.types @@ -4,13 +4,13 @@ interface Int { method(x: T): U; >method : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } declare function foo(x: T, y: Int, z: Int): T; >foo : (x: T, y: Int, z: Int) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : Int @@ -22,13 +22,13 @@ foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } } >foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } }) : string > : ^^^^^^ >foo : (x: T, y: Int, z: Int) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >{ method(p1) { return p1.length } } : { method(p1: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >method : (p1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >p1 : string > : ^^^^^^ >p1.length : number @@ -38,9 +38,9 @@ foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } } >length : number > : ^^^^^^ >{ method(p2) { return undefined } } : { method(p2: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >method : (p2: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p2 : number > : ^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/inferentialTypingObjectLiteralMethod2.types b/tests/baselines/reference/inferentialTypingObjectLiteralMethod2.types index 1be6987cc68a3..0b8ba0af4cfcd 100644 --- a/tests/baselines/reference/inferentialTypingObjectLiteralMethod2.types +++ b/tests/baselines/reference/inferentialTypingObjectLiteralMethod2.types @@ -10,7 +10,7 @@ interface Int { } declare function foo(x: T, y: Int, z: Int): T; >foo : (x: T, y: Int, z: Int) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : Int @@ -22,13 +22,13 @@ foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } } >foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } }) : string > : ^^^^^^ >foo : (x: T, y: Int, z: Int) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >{ method(p1) { return p1.length } } : { method(p1: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >method : (p1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >p1 : string > : ^^^^^^ >p1.length : number @@ -38,9 +38,9 @@ foo("", { method(p1) { return p1.length } }, { method(p2) { return undefined } } >length : number > : ^^^^^^ >{ method(p2) { return undefined } } : { method(p2: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >method : (p2: number) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >p2 : number > : ^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/inferentialTypingUsingApparentType1.types b/tests/baselines/reference/inferentialTypingUsingApparentType1.types index 051777f8699f4..5d6597a392f5e 100644 --- a/tests/baselines/reference/inferentialTypingUsingApparentType1.types +++ b/tests/baselines/reference/inferentialTypingUsingApparentType1.types @@ -3,7 +3,7 @@ === inferentialTypingUsingApparentType1.ts === function foo number>(x: T): T { >foo : number>(x: T) => T -> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >p : string > : ^^^^^^ >x : T @@ -16,11 +16,11 @@ function foo number>(x: T): T { foo(x => x.length); >foo(x => x.length) : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo : number>(x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >x => x.length : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/inferentialTypingUsingApparentType2.types b/tests/baselines/reference/inferentialTypingUsingApparentType2.types index 041fadcbdbe12..50220a1fc0d6a 100644 --- a/tests/baselines/reference/inferentialTypingUsingApparentType2.types +++ b/tests/baselines/reference/inferentialTypingUsingApparentType2.types @@ -3,9 +3,9 @@ === inferentialTypingUsingApparentType2.ts === function foo(x: T): T { >foo : (x: T) => T -> : ^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^^^ >m : (p: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : string > : ^^^^^^ >x : T @@ -18,13 +18,13 @@ function foo(x: T): T { foo({ m(x) { return x.length } }); >foo({ m(x) { return x.length } }) : { m(x: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^ >foo : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ m(x) { return x.length } } : { m(x: string): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^ >m : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x.length : number diff --git a/tests/baselines/reference/inferentialTypingUsingApparentType3.types b/tests/baselines/reference/inferentialTypingUsingApparentType3.types index debde93051c55..7199bb43cc35c 100644 --- a/tests/baselines/reference/inferentialTypingUsingApparentType3.types +++ b/tests/baselines/reference/inferentialTypingUsingApparentType3.types @@ -4,7 +4,7 @@ interface Field { clean(input: T): T >clean : (input: T) => T -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : T > : ^ } @@ -15,7 +15,7 @@ class CharField implements Field { clean(input: string) { >clean : (input: string) => string -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >input : string > : ^^^^^^ @@ -31,7 +31,7 @@ class NumberField implements Field { clean(input: number) { >clean : (input: number) => number -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >input : number > : ^^^^^^ @@ -56,7 +56,7 @@ var person = new ObjectField({ >person : ObjectField > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new ObjectField({ id: new NumberField(), name: new CharField()}) : ObjectField -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^ >ObjectField : typeof ObjectField > : ^^^^^^^^^^^^^^^^^^ >{ id: new NumberField(), name: new CharField()} : { id: NumberField; name: CharField; } @@ -88,7 +88,7 @@ person.fields.id; >person : ObjectField > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fields : { id: NumberField; name: CharField; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id : NumberField > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferentialTypingWithFunctionType.types b/tests/baselines/reference/inferentialTypingWithFunctionType.types index dc61dbffab349..c16599d2271af 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionType.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionType.types @@ -3,17 +3,17 @@ === inferentialTypingWithFunctionType.ts === declare function map(x: T, f: (s: T) => U): U; >map : (x: T, f: (s: T) => U) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >f : (s: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : T > : ^ declare function identity(y: V): V; >identity : (y: V) => V -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >y : V > : ^ @@ -23,9 +23,9 @@ var s = map("", identity); >map("", identity) : string > : ^^^^^^ >map : (x: T, f: (s: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/inferentialTypingWithFunctionType2.types b/tests/baselines/reference/inferentialTypingWithFunctionType2.types index f27d7efce52b4..cc18197a3113c 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionType2.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionType2.types @@ -3,7 +3,7 @@ === inferentialTypingWithFunctionType2.ts === function identity(a: A): A { >identity : (a: A) => A -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : A > : ^ @@ -19,7 +19,7 @@ var x = [1, 2, 3].map(identity)[0]; >[1, 2, 3].map(identity) : number[] > : ^^^^^^^^ >[1, 2, 3].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -29,9 +29,9 @@ var x = [1, 2, 3].map(identity)[0]; >3 : 3 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >identity : (a: A) => A -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types index c869c8691ba98..f7599050a73f1 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeNested.types @@ -3,19 +3,19 @@ === inferentialTypingWithFunctionTypeNested.ts === declare function map(x: T, f: () => { x: (s: T) => U }): U; >map : (x: T, f: () => { x: (s: T) => U; }) => U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >f : () => { x: (s: T) => U; } > : ^^^^^^ >x : (s: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : T > : ^ declare function identity(y: V): V; >identity : (y: V) => V -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >y : V > : ^ @@ -25,15 +25,15 @@ var s = map("", () => { return { x: identity }; }); >map("", () => { return { x: identity }; }) : string > : ^^^^^^ >map : (x: T, f: () => { x: (s: T) => U; }) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >() => { return { x: identity }; } : () => { x: (y: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ x: identity } : { x: (y: V) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^ >x : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types index 340ee710168f8..a90649c368d7d 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeSyntacticScenarios.types @@ -3,17 +3,17 @@ === inferentialTypingWithFunctionTypeSyntacticScenarios.ts === declare function map(array: T, func: (x: T) => U): U; >map : (array: T, func: (x: T) => U) => U -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >array : T > : ^ >func : (x: T) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ declare function identity(y: V): V; >identity : (y: V) => V -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >y : V > : ^ @@ -24,13 +24,13 @@ var s: string; // dotted name var dottedIdentity = { x: identity }; >dottedIdentity : { x: (y: V) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^ >{ x: identity } : { x: (y: V) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ >x : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : s = map("", dottedIdentity.x); >s = map("", dottedIdentity.x) : string @@ -40,15 +40,15 @@ s = map("", dottedIdentity.x); >map("", dottedIdentity.x) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >dottedIdentity.x : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >dottedIdentity : { x: (y: V) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^ >x : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // index expression s = map("", dottedIdentity['x']); @@ -59,13 +59,13 @@ s = map("", dottedIdentity['x']); >map("", dottedIdentity['x']) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >dottedIdentity['x'] : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >dottedIdentity : { x: (y: V) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^ >'x' : "x" > : ^^^ @@ -78,23 +78,23 @@ s = map("", (() => identity)()); >map("", (() => identity)()) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >(() => identity)() : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(() => identity) : () => (y: V) => V -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >() => identity : () => (y: V) => V -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // construct interface IdentityConstructor { new (): typeof identity; >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ } var ic: IdentityConstructor; >ic : IdentityConstructor @@ -108,11 +108,11 @@ s = map("", new ic()); >map("", new ic()) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >new ic() : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >ic : IdentityConstructor > : ^^^^^^^^^^^^^^^^^^^ @@ -128,14 +128,14 @@ s = map("", t = identity); >map("", t = identity) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >t = identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >t : any >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // type assertion s = map("", identity); @@ -146,15 +146,15 @@ s = map("", identity); >map("", identity) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // parenthesized expression s = map("", (identity)); @@ -165,13 +165,13 @@ s = map("", (identity)); >map("", (identity)) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >(identity) : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ // comma s = map("", ("", identity)); @@ -182,15 +182,15 @@ s = map("", ("", identity)); >map("", ("", identity)) : string > : ^^^^^^ >map : (array: T, func: (x: T) => U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >("", identity) : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >"", identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >"" : "" > : ^^ >identity : (y: V) => V -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ diff --git a/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types b/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types index 507c3bc239754..9fc037d6f8a1e 100644 --- a/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types +++ b/tests/baselines/reference/inferentialTypingWithFunctionTypeZip.types @@ -3,7 +3,7 @@ === inferentialTypingWithFunctionTypeZip.ts === var pair: (x: T) => (y: S) => { x: T; y: S; } >pair : (x: T) => (y: S) => { x: T; y: S; } -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : S @@ -15,13 +15,13 @@ var pair: (x: T) => (y: S) => { x: T; y: S; } var zipWith: (a: T[], b: S[], f: (x: T) => (y: S) => U) => U[]; >zipWith : (a: T[], b: S[], f: (x: T) => (y: S) => U) => U[] -> : ^ ^^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : T[] > : ^^^ >b : S[] > : ^^^ >f : (x: T) => (y: S) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ >y : S @@ -31,9 +31,9 @@ var result = zipWith([1, 2], ['a', 'b'], pair); >result : { x: number; y: unknown; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zipWith([1, 2], ['a', 'b'], pair) : { x: number; y: unknown; }[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ >zipWith : (a: T[], b: S[], f: (x: T) => (y: S) => U) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -47,7 +47,7 @@ var result = zipWith([1, 2], ['a', 'b'], pair); >'b' : "b" > : ^^^ >pair : (x: T) => (y: S) => { x: T; y: S; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ var i = result[0].x; // number >i : number diff --git a/tests/baselines/reference/inferentialTypingWithObjectLiteralProperties.types b/tests/baselines/reference/inferentialTypingWithObjectLiteralProperties.types index 3f24246ea086a..0bb0dedb2f97c 100644 --- a/tests/baselines/reference/inferentialTypingWithObjectLiteralProperties.types +++ b/tests/baselines/reference/inferentialTypingWithObjectLiteralProperties.types @@ -3,7 +3,7 @@ === inferentialTypingWithObjectLiteralProperties.ts === function f(x: T, y: T): T { >f : (x: T, y: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -23,7 +23,7 @@ f({ x: [null] }, { x: [1] }).x[0] = "" // ok >f({ x: [null] }, { x: [1] }) : { x: number[]; } > : ^^^^^^^^^^^^^^^^ >f : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: [null] } : { x: null[]; } > : ^^^^^^^^^^^^^^ >x : null[] @@ -55,7 +55,7 @@ f({ x: [1] }, { x: [null] }).x[0] = "" // was error TS2011: Cannot convert 'stri >f({ x: [1] }, { x: [null] }) : { x: number[]; } > : ^^^^^^^^^^^^^^^^ >f : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >{ x: [1] } : { x: number[]; } > : ^^^^^^^^^^^^^^^^ >x : number[] diff --git a/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types b/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types index 7dd6b4959e22a..71d01b1e8e6ff 100644 --- a/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types +++ b/tests/baselines/reference/inferentiallyTypingAnEmptyArray.types @@ -18,7 +18,7 @@ // the undefined[] type. declare function foo(arr: T[]): T; >foo : (arr: T[]) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arr : T[] > : ^^^ @@ -27,7 +27,7 @@ foo([]).bar; >foo([]) : any > : ^^^ >foo : (arr: T[]) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >bar : any diff --git a/tests/baselines/reference/inferingFromAny.types b/tests/baselines/reference/inferingFromAny.types index ccbc97cb6a581..a4adfaa7772a1 100644 --- a/tests/baselines/reference/inferingFromAny.types +++ b/tests/baselines/reference/inferingFromAny.types @@ -10,25 +10,25 @@ var t: [any, any]; declare function f1(t: T): T >f1 : (t: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >t : T > : ^ declare function f2(t: T[]): T; >f2 : (t: T[]) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >t : T[] > : ^^^ declare function f3(t: [T, U]): [T, U]; >f3 : (t: [T, U]) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : [T, U] > : ^^^^^^ declare function f4(x: { bar: T; baz: T }): T; >f4 : (x: { bar: T; baz: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { bar: T; baz: T; } > : ^^^^^^^ ^^^^^^^ ^^^ >bar : T @@ -38,42 +38,42 @@ declare function f4(x: { bar: T; baz: T }): T; declare function f5(x: (a: T) => void): T; >f5 : (x: (a: T) => void) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : T > : ^ declare function f6(x: new (a: T) => {}): T; >f6 : (x: new (a: T) => {}) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : new (a: T) => {} -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >a : T > : ^ declare function f7(x: (a: any) => a is T): T; >f7 : (x: (a: any) => a is T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : (a: any) => a is T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any declare function f8(x: () => T): T; >f8 : (x: () => T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : () => T > : ^^^^^^ declare function f9(x: new () => T): T; >f9 : (x: new () => T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : new () => T > : ^^^^^^^^^^ declare function f10(x: { [x: string]: T }): T; >f10 : (x: { [x: string]: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -81,7 +81,7 @@ declare function f10(x: { [x: string]: T }): T; declare function f11(x: { [x: number]: T }): T; >f11 : (x: { [x: number]: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : number @@ -89,19 +89,19 @@ declare function f11(x: { [x: number]: T }): T; declare function f12(x: T | U): [T, U]; >f12 : (x: T | U) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T | U > : ^^^^^ declare function f13(x: T & U): [T, U]; >f13 : (x: T & U) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : T & U > : ^^^^^ declare function f14(x: { a: T | U, b: U & T }): [T, U]; >f14 : (x: { a: T | U; b: U & T; }) => [T, U] -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { a: T | U; b: U & T; } > : ^^^^^ ^^^^^ ^^^ >a : T | U @@ -112,31 +112,31 @@ declare function f14(x: { a: T | U, b: U & T }): [T, U]; interface I { } declare function f15(x: I): T; >f15 : (x: I) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : I > : ^^^^ declare function f16(x: Partial): T; >f16 : (x: Partial) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Partial > : ^^^^^^^^^^ declare function f17(x: {[P in keyof T]: K}): T; >f17 : (x: { [P in keyof T]: K; }) => T -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : { [P in keyof T]: K; } > : ^^^^^^^^^^^^^^^^^^^^^^ declare function f18(x: {[P in K]: T[P]}): T; >f18 : (x: { [P in K]: T[P]; }) => T -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { [P in K]: T[P]; } > : ^^^^^^^^^^^^^^^^^^^ declare function f19(k: K, x: T[K]): T; >f19 : (k: K, x: T[K]) => T -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >k : K > : ^ >x : T[K] @@ -147,14 +147,14 @@ var a = f1(a); >a : any >f1(a) : any >f1 : (t: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f2(a); >a : any >f2(a) : any >f2 : (t: T[]) => T -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var t = f3(a); @@ -163,63 +163,63 @@ var t = f3(a); >f3(a) : [any, any] > : ^^^^^^^^^^ >f3 : (t: [T, U]) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : any var a = f4(a); >a : any >f4(a) : any >f4 : (x: { bar: T; baz: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f5(a); >a : any >f5(a) : any >f5 : (x: (a: T) => void) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f6(a); >a : any >f6(a) : any >f6 : (x: new (a: T) => {}) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f7(a); >a : any >f7(a) : any >f7 : (x: (a: any) => a is T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f8(a); >a : any >f8(a) : any >f8 : (x: () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f9(a); >a : any >f9(a) : any >f9 : (x: new () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f10(a); >a : any >f10(a) : any >f10 : (x: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f11(a); >a : any >f11(a) : any >f11 : (x: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var t = f12(a); @@ -228,7 +228,7 @@ var t = f12(a); >f12(a) : [any, any] > : ^^^^^^^^^^ >f12 : (x: T | U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : any var t = f13(a); @@ -237,7 +237,7 @@ var t = f13(a); >f13(a) : [any, any] > : ^^^^^^^^^^ >f13 : (x: T & U) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : any var t = f14(a); @@ -246,42 +246,42 @@ var t = f14(a); >f14(a) : [any, any] > : ^^^^^^^^^^ >f14 : (x: { a: T | U; b: U & T; }) => [T, U] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : any var a = f15(a); >a : any >f15(a) : any >f15 : (x: I) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f16(a); >a : any >f16(a) : any >f16 : (x: Partial) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : any var a = f17(a); >a : any >f17(a) : any >f17 : (x: { [P in keyof T]: K; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >a : any var a = f18(a); >a : any >f18(a) : any >f18 : (x: { [P in K]: T[P]; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >a : any var a = f19(a, a); >a : any >f19(a, a) : any >f19 : (k: K, x: T[K]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >a : any >a : any diff --git a/tests/baselines/reference/inferredIndexerOnNamespaceImport.types b/tests/baselines/reference/inferredIndexerOnNamespaceImport.types index 33c47ce65a7f5..3772f69f29f71 100644 --- a/tests/baselines/reference/inferredIndexerOnNamespaceImport.types +++ b/tests/baselines/reference/inferredIndexerOnNamespaceImport.types @@ -20,7 +20,7 @@ import * as foo from "./foo"; function f(map: { [k: string]: number }) { >f : (map: { [k: string]: number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >map : { [k: string]: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >k : string @@ -33,7 +33,7 @@ f(foo); >f(foo) : void > : ^^^^ >f : (map: { [k: string]: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : typeof foo > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/inferredRestTypeFixedOnce.types b/tests/baselines/reference/inferredRestTypeFixedOnce.types index 2631b5743a047..88a66e067b65e 100644 --- a/tests/baselines/reference/inferredRestTypeFixedOnce.types +++ b/tests/baselines/reference/inferredRestTypeFixedOnce.types @@ -3,9 +3,9 @@ === inferredRestTypeFixedOnce.ts === function wrap(_: (...args: Args) => void) {} >wrap : (_: (...args: Args) => void) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >_ : (...args: Args) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : Args > : ^^^^ @@ -13,9 +13,9 @@ wrap(({ cancelable } = {}) => {}); >wrap(({ cancelable } = {}) => {}) : void > : ^^^^ >wrap : (_: (...args: Args) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >({ cancelable } = {}) => {} : ({ cancelable }?: { cancelable: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >cancelable : any > : ^^^ >{} : {} diff --git a/tests/baselines/reference/inferrenceInfiniteLoopWithSubtyping.types b/tests/baselines/reference/inferrenceInfiniteLoopWithSubtyping.types index 081b0210f663a..05e3483b5afc2 100644 --- a/tests/baselines/reference/inferrenceInfiniteLoopWithSubtyping.types +++ b/tests/baselines/reference/inferrenceInfiniteLoopWithSubtyping.types @@ -21,7 +21,7 @@ export class EnumTypeComposer { public setFields(fields: { [name: string]: { [key: string]: any } }): this; >setFields : (fields: { [name: string]: { [key: string]: any; }; }) => this -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >fields : { [name: string]: { [key: string]: any; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string @@ -36,13 +36,13 @@ export class ObjectTypeComposer { public setFields(fields: ObjMapReadOnly): this; >setFields : (fields: ObjMapReadOnly) => this -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >fields : Readonly<{ [key: string]: Readonly; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ public addResolver(opts: { type?: Thunk }): this; >addResolver : (opts: { type?: Thunk; }) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >opts : { type?: Thunk; } > : ^^^^^^^^^ ^^^ >type : Thunk @@ -55,7 +55,7 @@ export class Resolver { public wrapArgs( >wrapArgs : (cb: () => { [argName: string]: Thunk>; }) => void -> : ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^ cb: () => { >cb : () => { [argName: string]: Thunk>; } @@ -69,7 +69,7 @@ export class Resolver { public wrapType(cb: () => ComposeOutputTypeDefinition): void; >wrapType : (cb: () => ComposeOutputTypeDefinition) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : () => ComposeOutputTypeDefinition > : ^^^^^^ } @@ -87,12 +87,12 @@ declare const User: ObjectTypeComposer; User.addResolver({ >User.addResolver({ type: User, // `User as any` fix the problem}) : ObjectTypeComposer > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->User.addResolver : (opts: { type?: import("graphql-compose").Thunk; }) => ObjectTypeComposer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>User.addResolver : (opts: { type?: Thunk; }) => ObjectTypeComposer +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >User : ObjectTypeComposer > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->addResolver : (opts: { type?: import("graphql-compose").Thunk; }) => ObjectTypeComposer -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>addResolver : (opts: { type?: Thunk; }) => ObjectTypeComposer +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ type: User, // `User as any` fix the problem} : { type: ObjectTypeComposer; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferringAnyFunctionType1.types b/tests/baselines/reference/inferringAnyFunctionType1.types index 2b523009bfd9e..12d7f059a7af9 100644 --- a/tests/baselines/reference/inferringAnyFunctionType1.types +++ b/tests/baselines/reference/inferringAnyFunctionType1.types @@ -3,9 +3,9 @@ === inferringAnyFunctionType1.ts === function f number }>(p: T): T { >f : number; }>(p: T) => T -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >"0" : (p1: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p1 : number > : ^^^^^^ >p : T @@ -18,15 +18,15 @@ function f number }>(p: T): T { var v = f([x => x]); >v : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^ >f([x => x]) : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >f : number; }>(p: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >[x => x] : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^ >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/inferringAnyFunctionType2.types b/tests/baselines/reference/inferringAnyFunctionType2.types index 8d0a863875ede..aae7087f33694 100644 --- a/tests/baselines/reference/inferringAnyFunctionType2.types +++ b/tests/baselines/reference/inferringAnyFunctionType2.types @@ -3,7 +3,7 @@ === inferringAnyFunctionType2.ts === function f number]>(p: T): T { >f : number]>(p: T) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ >p1 : number > : ^^^^^^ >p : T @@ -16,15 +16,15 @@ function f number]>(p: T): T { var v = f([x => x]); >v : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^ >f([x => x]) : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ >f : number]>(p: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^ >[x => x] : [(x: number) => number] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^ >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/inferringAnyFunctionType3.types b/tests/baselines/reference/inferringAnyFunctionType3.types index d23425cce191b..d2b6298345f58 100644 --- a/tests/baselines/reference/inferringAnyFunctionType3.types +++ b/tests/baselines/reference/inferringAnyFunctionType3.types @@ -3,7 +3,7 @@ === inferringAnyFunctionType3.ts === function f number)[]>(p: T): T { >f : number)[]>(p: T) => T -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^ ^^^^^ >p1 : number > : ^^^^^^ >p : T @@ -16,15 +16,15 @@ function f number)[]>(p: T): T { var v = f([x => x]); >v : ((x: number) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >f([x => x]) : ((x: number) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ >f : number)[]>(p: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >[x => x] : ((x: number) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/inferringAnyFunctionType4.types b/tests/baselines/reference/inferringAnyFunctionType4.types index 3b3391b9d685d..f61191b9cfccb 100644 --- a/tests/baselines/reference/inferringAnyFunctionType4.types +++ b/tests/baselines/reference/inferringAnyFunctionType4.types @@ -3,7 +3,7 @@ === inferringAnyFunctionType4.ts === function f number>(p: T): T { >f : number>(p: T) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^ >p1 : number > : ^^^^^^ >p : T @@ -16,13 +16,13 @@ function f number>(p: T): T { var v = f(x => x); >v : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f(x => x) : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >f : number>(p: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^ >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/inferringAnyFunctionType5.types b/tests/baselines/reference/inferringAnyFunctionType5.types index f9705e49b49fa..efa5d491b0854 100644 --- a/tests/baselines/reference/inferringAnyFunctionType5.types +++ b/tests/baselines/reference/inferringAnyFunctionType5.types @@ -3,9 +3,9 @@ === inferringAnyFunctionType5.ts === function f number }>(p: T): T { >f : number; }>(p: T) => T -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >q : (p1: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p1 : number > : ^^^^^^ >p : T @@ -18,17 +18,17 @@ function f number }>(p: T): T { var v = f({ q: x => x }); >v : { q: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >f({ q: x => x }) : { q: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f : number; }>(p: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ q: x => x } : { q: (x: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >q : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >x : number diff --git a/tests/baselines/reference/inferringClassMembersFromAssignments.types b/tests/baselines/reference/inferringClassMembersFromAssignments.types index 74b1d2f7c548b..489314b0c283a 100644 --- a/tests/baselines/reference/inferringClassMembersFromAssignments.types +++ b/tests/baselines/reference/inferringClassMembersFromAssignments.types @@ -142,7 +142,7 @@ class C { >action : () => void > : ^^^^^^^^^^ >() => { if (Math.random()) { this.inNestedArrowFunction = 0; } else { this.inNestedArrowFunction = "string" } } : () => void -> : ^^^^^^^^^^ +> : if (Math.random()) { >Math.random() : number @@ -288,7 +288,7 @@ class C { >prop : () => void > : ^^^^^^^^^^ >() => { if (Math.random()) { this.inPropertyDeclaration = 0; } else { this.inPropertyDeclaration = "string" } } : () => void -> : ^^^^^^^^^^ +> : if (Math.random()) { >Math.random() : number @@ -370,7 +370,7 @@ class C { >action : () => void > : ^^^^^^^^^^ >() => { if (Math.random()) { this.inStaticNestedArrowFunction = 0; } else { this.inStaticNestedArrowFunction = "string" } } : () => void -> : ^^^^^^^^^^ +> : if (Math.random()) { >Math.random() : number @@ -493,7 +493,7 @@ class C { >prop : () => void > : ^^^^^^^^^^ >() => { if (Math.random()) { this.inStaticPropertyDeclaration = 0; } else { this.inStaticPropertyDeclaration = "string" } } : () => void -> : ^^^^^^^^^^ +> : if (Math.random()) { >Math.random() : number diff --git a/tests/baselines/reference/inferringClassMembersFromAssignments6.types b/tests/baselines/reference/inferringClassMembersFromAssignments6.types index c204cfdd09339..e73b81d4ca35d 100644 --- a/tests/baselines/reference/inferringClassMembersFromAssignments6.types +++ b/tests/baselines/reference/inferringClassMembersFromAssignments6.types @@ -37,11 +37,11 @@ function Foonly() { >console.log(self.x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >self.x : number > : ^^^^^^ >self : this diff --git a/tests/baselines/reference/inferringClassMembersFromAssignments7.types b/tests/baselines/reference/inferringClassMembersFromAssignments7.types index e1fb32b35103f..6898c167e5703 100644 --- a/tests/baselines/reference/inferringClassMembersFromAssignments7.types +++ b/tests/baselines/reference/inferringClassMembersFromAssignments7.types @@ -38,11 +38,11 @@ class C { >console.log(self.x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >self.x : number > : ^^^^^^ >self : this diff --git a/tests/baselines/reference/inferringClassMembersFromAssignments8.types b/tests/baselines/reference/inferringClassMembersFromAssignments8.types index fb0029fe88619..64ceb21cf268c 100644 --- a/tests/baselines/reference/inferringClassMembersFromAssignments8.types +++ b/tests/baselines/reference/inferringClassMembersFromAssignments8.types @@ -7,7 +7,7 @@ var app = function() { >app : () => void > : ^^^^^^^^^^ >function() { var _this = this; _this.swap = function() { }} : () => void -> : ^^^^^^^^^^ +> : var _this = this; >_this : any diff --git a/tests/baselines/reference/inferringClassStaticMembersFromAssignments.types b/tests/baselines/reference/inferringClassStaticMembersFromAssignments.types index 8bb504e11f56a..59c2dc0e1f76d 100644 --- a/tests/baselines/reference/inferringClassStaticMembersFromAssignments.types +++ b/tests/baselines/reference/inferringClassStaticMembersFromAssignments.types @@ -55,7 +55,7 @@ export let F2 = function () { }; >F2 : { (): void; staticProp: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function () { } : { (): void; staticProp: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : F2.staticProp = 0; >F2.staticProp = 0 : 0 @@ -124,7 +124,7 @@ let F4 = function () { }; >F4 : { (): void; staticProp: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function () { } : { (): void; staticProp: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : F4.staticProp = 0; >F4.staticProp = 0 : 0 diff --git a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types index a3fc715408f89..9648da0e2ec2f 100644 --- a/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types +++ b/tests/baselines/reference/inferringReturnTypeFromConstructSignatureGeneric.types @@ -7,7 +7,7 @@ class GenericObject { give(value: T) { >give : (value: T) => T -> : ^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >value : T > : ^ @@ -22,7 +22,7 @@ class GenericNumber { give(value: T) { >give : (value: T) => T -> : ^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >value : T > : ^ @@ -37,7 +37,7 @@ class GenericNumberOrString { give(value: T) { >give : (value: T) => T -> : ^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >value : T > : ^ @@ -49,7 +49,7 @@ class GenericNumberOrString { function g(type: new () => T): T { >g : (type: new () => T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >type : new () => T > : ^^^^^^^^^^ @@ -64,9 +64,9 @@ const g1 = g(GenericObject); >g1 : GenericObject<{}> > : ^^^^^^^^^^^^^^^^^ >g(GenericObject) : GenericObject<{}> -> : ^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^ >g : (type: new () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >GenericObject : typeof GenericObject > : ^^^^^^^^^^^^^^^^^^^^ @@ -74,11 +74,11 @@ g1.give({}); >g1.give({}) : {} > : ^^ >g1.give : (value: {}) => {} -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >g1 : GenericObject<{}> > : ^^^^^^^^^^^^^^^^^ >give : (value: {}) => {} -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >{} : {} > : ^^ @@ -88,7 +88,7 @@ const g2 = g(GenericNumber); >g(GenericNumber) : GenericNumber > : ^^^^^^^^^^^^^^^^^^^^^ >g : (type: new () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >GenericNumber : typeof GenericNumber > : ^^^^^^^^^^^^^^^^^^^^ @@ -96,11 +96,11 @@ g2.give(1); >g2.give(1) : number > : ^^^^^^ >g2.give : (value: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >g2 : GenericNumber > : ^^^^^^^^^^^^^^^^^^^^^ >give : (value: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -110,7 +110,7 @@ const g3 = g(GenericNumberOrString); >g(GenericNumberOrString) : GenericNumberOrString > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : (type: new () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >GenericNumberOrString : typeof GenericNumberOrString > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -118,11 +118,11 @@ g3.give(1); >g3.give(1) : string | number > : ^^^^^^^^^^^^^^^ >g3.give : (value: string | number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g3 : GenericNumberOrString > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >give : (value: string | number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -130,11 +130,11 @@ g3.give('1'); >g3.give('1') : string | number > : ^^^^^^^^^^^^^^^ >g3.give : (value: string | number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g3 : GenericNumberOrString > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >give : (value: string | number) => string | number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'1' : "1" > : ^^^ @@ -149,7 +149,7 @@ const g4 = g(C); >g(C) : C > : ^^^^^^^^^^ >g : (type: new () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >C : typeof C > : ^^^^^^^^ diff --git a/tests/baselines/reference/infiniteConstraints.types b/tests/baselines/reference/infiniteConstraints.types index e5d0d49934694..2305b433f827b 100644 --- a/tests/baselines/reference/infiniteConstraints.types +++ b/tests/baselines/reference/infiniteConstraints.types @@ -29,7 +29,7 @@ type AProp = T declare function myBug< >myBug : (arg: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ T extends { [K in keyof T]: T[K] extends AProp ? U : never } >(arg: T): T @@ -40,9 +40,9 @@ const out = myBug({obj1: {a: "test"}}) >out : { obj1: { a: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >myBug({obj1: {a: "test"}}) : { obj1: { a: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >myBug : (arg: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{obj1: {a: "test"}} : { obj1: { a: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >obj1 : { a: string; } @@ -60,13 +60,13 @@ type Value = Record<"val", V>; declare function value(val: V): Value; >value : (val: V) => Value -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >val : V > : ^ declare function ensureNoDuplicates< >ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ T extends { [K in keyof T]: Extract["val"] extends Extract], Value>["val"] @@ -83,7 +83,7 @@ const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2 >ensureNoDuplicates({main: value("test"), alternate: value("test2")}) : void > : ^^^^ >ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{main: value("test"), alternate: value("test2")} : { main: Value<"test">; alternate: Value<"test2">; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >main : Value<"test"> @@ -91,7 +91,7 @@ const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2 >value("test") : Value<"test"> > : ^^^^^^^^^^^^^ >value : (val: V) => Value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >"test" : "test" > : ^^^^^^ >alternate : Value<"test2"> @@ -99,7 +99,7 @@ const noError = ensureNoDuplicates({main: value("test"), alternate: value("test2 >value("test2") : Value<"test2"> > : ^^^^^^^^^^^^^^ >value : (val: V) => Value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >"test2" : "test2" > : ^^^^^^^ @@ -109,7 +109,7 @@ const shouldBeNoError = ensureNoDuplicates({main: value("test")}); >ensureNoDuplicates({main: value("test")}) : void > : ^^^^ >ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{main: value("test")} : { main: Value<"test">; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >main : Value<"test"> @@ -117,7 +117,7 @@ const shouldBeNoError = ensureNoDuplicates({main: value("test")}); >value("test") : Value<"test"> > : ^^^^^^^^^^^^^ >value : (val: V) => Value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >"test" : "test" > : ^^^^^^ @@ -127,7 +127,7 @@ const shouldBeError = ensureNoDuplicates({main: value("dup"), alternate: value(" >ensureNoDuplicates({main: value("dup"), alternate: value("dup")}) : void > : ^^^^ >ensureNoDuplicates : >["val"] extends Extract], Value>["val"] ? never : any; }>(vals: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{main: value("dup"), alternate: value("dup")} : { main: Value<"dup">; alternate: Value<"dup">; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >main : Value<"dup"> @@ -135,7 +135,7 @@ const shouldBeError = ensureNoDuplicates({main: value("dup"), alternate: value(" >value("dup") : Value<"dup"> > : ^^^^^^^^^^^^ >value : (val: V) => Value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >"dup" : "dup" > : ^^^^^ >alternate : Value<"dup"> @@ -143,7 +143,7 @@ const shouldBeError = ensureNoDuplicates({main: value("dup"), alternate: value(" >value("dup") : Value<"dup"> > : ^^^^^^^^^^^^ >value : (val: V) => Value -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >"dup" : "dup" > : ^^^^^ diff --git a/tests/baselines/reference/infiniteExpansionThroughInstantiation.types b/tests/baselines/reference/infiniteExpansionThroughInstantiation.types index aaae84a79a611..218e9c11da17e 100644 --- a/tests/baselines/reference/infiniteExpansionThroughInstantiation.types +++ b/tests/baselines/reference/infiniteExpansionThroughInstantiation.types @@ -42,7 +42,7 @@ list = ownerList; function other(x: T) { >other : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/infiniteExpansionThroughTypeInference.types b/tests/baselines/reference/infiniteExpansionThroughTypeInference.types index f3a679ae7d56e..f5fab085dd5ce 100644 --- a/tests/baselines/reference/infiniteExpansionThroughTypeInference.types +++ b/tests/baselines/reference/infiniteExpansionThroughTypeInference.types @@ -13,7 +13,7 @@ interface G { function ff(g: G): void { >ff : (g: G) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >g : G > : ^^^^ @@ -21,7 +21,7 @@ function ff(g: G): void { >ff(g) : void > : ^^^^ >ff : (g: G) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >g : G > : ^^^^ } diff --git a/tests/baselines/reference/infinitelyExpandingOverloads.types b/tests/baselines/reference/infinitelyExpandingOverloads.types index 9321412ab8394..06c0a6669626c 100644 --- a/tests/baselines/reference/infinitelyExpandingOverloads.types +++ b/tests/baselines/reference/infinitelyExpandingOverloads.types @@ -9,9 +9,9 @@ interface KnockoutSubscription2 { interface KnockoutObservableBase2 { subscribe(callback: (newValue: T) => void, target?: any, topic?: string): KnockoutSubscription2; >subscribe : (callback: (newValue: T) => void, target?: any, topic?: string) => KnockoutSubscription2 -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >callback : (newValue: T) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >newValue : T > : ^ >target : any @@ -21,7 +21,7 @@ interface KnockoutObservableBase2 { interface ValidationPlacement2 { initialize(validatable: Validatable2): void; >initialize : (validatable: Validatable2) => void -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >validatable : Validatable2 > : ^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/infinitelyExpandingTypes2.types b/tests/baselines/reference/infinitelyExpandingTypes2.types index ef09546391917..94f772743ddc4 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes2.types +++ b/tests/baselines/reference/infinitelyExpandingTypes2.types @@ -15,7 +15,7 @@ interface Bar extends Foo { function f(p: Foo) { >f : (p: Foo) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : Foo > : ^^^^^^^^^^^ @@ -23,11 +23,11 @@ function f(p: Foo) { >console.log(p) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >p : Foo > : ^^^^^^^^^^^ } @@ -40,7 +40,7 @@ f(v); // should not error >f(v) : void > : ^^^^ >f : (p: Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : Bar > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/infinitelyExpandingTypes4.types b/tests/baselines/reference/infinitelyExpandingTypes4.types index 94d769ddde5ca..5660ef8dc80f4 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes4.types +++ b/tests/baselines/reference/infinitelyExpandingTypes4.types @@ -5,9 +5,9 @@ interface Query { // ... groupBy(keySelector: (item: T) => K): Query>; >groupBy : (keySelector: (item: T) => K) => Query> -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >keySelector : (item: T) => K -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >item : T > : ^ @@ -18,9 +18,9 @@ interface QueryEnumerator { // ... groupBy(keySelector: (item: T) => K): QueryEnumerator>; >groupBy : (keySelector: (item: T) => K) => QueryEnumerator> -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >keySelector : (item: T) => K -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >item : T > : ^ diff --git a/tests/baselines/reference/infinitelyExpandingTypes5.types b/tests/baselines/reference/infinitelyExpandingTypes5.types index 87a8ed76f6e6e..98a0ee1144a2d 100644 --- a/tests/baselines/reference/infinitelyExpandingTypes5.types +++ b/tests/baselines/reference/infinitelyExpandingTypes5.types @@ -4,7 +4,7 @@ interface Query { foo(x: T): Query; >foo : (x: T) => Query -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -12,7 +12,7 @@ interface Query { interface Enumerator { (action: (item: T, index: number) => boolean): boolean; >action : (item: T, index: number) => boolean -> : ^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >item : T > : ^ >index : number @@ -21,19 +21,19 @@ interface Enumerator { function from(array: T[]): Query; >from : { (array: T[]): Query; (enumerator: Enumerator): Query; } -> : ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >array : T[] > : ^^^ function from(enumerator: Enumerator): Query; >from : { (array: T_1[]): Query; (enumerator: Enumerator): Query; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ >enumerator : Enumerator > : ^^^^^^^^^^^^^ function from(arg: any): any { >from : { (array: T[]): Query; (enumerator: Enumerator): Query; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >arg : any return undefined; diff --git a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types index a2d4ce843d51e..290d7f1b3219c 100644 --- a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types +++ b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types @@ -38,7 +38,7 @@ interface Options extends OptionsBase { function o(type: new () => Base) { >o : (type: new () => Base) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >type : new () => Base > : ^^^^^^^^^^ } @@ -47,7 +47,7 @@ o(A); >o(A) : void > : ^^^^ >o : (type: new () => Base) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >A : typeof A > : ^^^^^^^^ diff --git a/tests/baselines/reference/infinitelyGenerativeInheritance1.types b/tests/baselines/reference/infinitelyGenerativeInheritance1.types index b3fdf6d5b9f47..bfb3258e57231 100644 --- a/tests/baselines/reference/infinitelyGenerativeInheritance1.types +++ b/tests/baselines/reference/infinitelyGenerativeInheritance1.types @@ -8,7 +8,7 @@ interface Stack { zip(a: Stack): Stack<{ x: T; y: S }> >zip : (a: Stack) => Stack<{ x: T; y: S; }> -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : Stack > : ^^^^^^^^ >x : T @@ -20,7 +20,7 @@ interface Stack { interface MyStack extends Stack { zip(a: Stack): Stack<{ x: T; y: S }> >zip : (a: Stack) => Stack<{ x: T; y: S; }> -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >a : Stack > : ^^^^^^^^ >x : T diff --git a/tests/baselines/reference/inheritance.types b/tests/baselines/reference/inheritance.types index be7354302a51e..4d199097e8883 100644 --- a/tests/baselines/reference/inheritance.types +++ b/tests/baselines/reference/inheritance.types @@ -88,7 +88,7 @@ class Baad extends Good { public g(n: number) { return 0; } >g : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types b/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types index 40cb4a23a4a10..f839d43096e14 100644 --- a/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types +++ b/tests/baselines/reference/inheritedFunctionAssignmentCompatibility.types @@ -5,7 +5,7 @@ interface IResultCallback extends Function { } function fn(cb: IResultCallback) { } >fn : (cb: IResultCallback) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >cb : IResultCallback > : ^^^^^^^^^^^^^^^ @@ -13,9 +13,9 @@ fn((a, b) => true); >fn((a, b) => true) : void > : ^^^^ >fn : (cb: IResultCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(a, b) => true : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any >b : any >true : true @@ -25,9 +25,9 @@ fn(function (a, b) { return true; }) >fn(function (a, b) { return true; }) : void > : ^^^^ >fn : (cb: IResultCallback) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (a, b) { return true; } : (a: any, b: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : any >b : any >true : true diff --git a/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types b/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types index a1da3761e417e..d0c72a15309ce 100644 --- a/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types +++ b/tests/baselines/reference/inheritedOverloadedSpecializedSignatures.types @@ -22,7 +22,7 @@ b('foo').charAt(0); >b('foo').charAt(0) : string > : ^^^^^^ >b('foo').charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b('foo') : string > : ^^^^^^ >b : B @@ -30,7 +30,7 @@ b('foo').charAt(0); >'foo' : "foo" > : ^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=false).types b/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=false).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=false).types +++ b/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=false).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=true).types b/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=true).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=true).types +++ b/tests/baselines/reference/initializationOrdering1(target=es2021,usedefineforclassfields=true).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=false).types b/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=false).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=false).types +++ b/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=false).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=true).types b/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=true).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=true).types +++ b/tests/baselines/reference/initializationOrdering1(target=es2022,usedefineforclassfields=true).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=false).types b/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=false).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=false).types +++ b/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=false).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=true).types b/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=true).types index 13a6c392e27a7..fc31599611a0f 100644 --- a/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=true).types +++ b/tests/baselines/reference/initializationOrdering1(target=esnext,usedefineforclassfields=true).types @@ -27,11 +27,11 @@ export class Broken { >console.log(this.bug) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.bug : boolean > : ^^^^^^^ >this : this diff --git a/tests/baselines/reference/initializedDestructuringAssignmentTypes.types b/tests/baselines/reference/initializedDestructuringAssignmentTypes.types index ecb273eb73203..1448d1981e352 100644 --- a/tests/baselines/reference/initializedDestructuringAssignmentTypes.types +++ b/tests/baselines/reference/initializedDestructuringAssignmentTypes.types @@ -13,11 +13,11 @@ const [, a = ''] = ''.match('') || []; >''.match('') : RegExpMatchArray > : ^^^^^^^^^^^^^^^^ >''.match : (regexp: string | RegExp) => RegExpMatchArray -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >match : (regexp: string | RegExp) => RegExpMatchArray -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >[] : [] diff --git a/tests/baselines/reference/initializedParameterBeforeNonoptionalNotOptional.types b/tests/baselines/reference/initializedParameterBeforeNonoptionalNotOptional.types index 429360ec959ee..4c46a6bdcd1a5 100644 --- a/tests/baselines/reference/initializedParameterBeforeNonoptionalNotOptional.types +++ b/tests/baselines/reference/initializedParameterBeforeNonoptionalNotOptional.types @@ -3,7 +3,7 @@ === index.d.ts === export declare function foo({a}?: { >foo : ({ a }?: { a?: string; }) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -14,7 +14,7 @@ export declare function foo({a}?: { }): void; export declare function foo2({a}: { >foo2 : ({ a }: { a?: string | undefined; } | undefined, b: string) => void -> : ^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -28,7 +28,7 @@ export declare function foo2({a}: { export declare function foo3({a, b: {c}}: { >foo3 : ({ a, b: { c } }: { a?: string | undefined; b?: { c?: string | undefined; } | undefined; } | undefined, b: string) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ >b : any diff --git a/tests/baselines/reference/initializerWithThisPropertyAccess.types b/tests/baselines/reference/initializerWithThisPropertyAccess.types index b9391c3771a01..6ce913a29808a 100644 --- a/tests/baselines/reference/initializerWithThisPropertyAccess.types +++ b/tests/baselines/reference/initializerWithThisPropertyAccess.types @@ -23,7 +23,7 @@ class A { >c : () => number > : ^^^^^^^^^^^^ >() => this.a : () => number -> : ^^^^^^^^^^^^ +> : >this.a : number > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/initializersInDeclarations.types b/tests/baselines/reference/initializersInDeclarations.types index a12a37ea2e466..ae433dff9cb22 100644 --- a/tests/baselines/reference/initializersInDeclarations.types +++ b/tests/baselines/reference/initializersInDeclarations.types @@ -53,7 +53,7 @@ declare module M1 { >v1 : () => boolean > : ^^^^^^^^^^^^^ >() => false : () => boolean -> : ^^^^^^^^^^^^^ +> : >false : false > : ^^^^^ } diff --git a/tests/baselines/reference/inlineConditionalHasSimilarAssignability.types b/tests/baselines/reference/inlineConditionalHasSimilarAssignability.types index 9f69e598a1c68..af672e3fdd7fc 100644 --- a/tests/baselines/reference/inlineConditionalHasSimilarAssignability.types +++ b/tests/baselines/reference/inlineConditionalHasSimilarAssignability.types @@ -7,7 +7,7 @@ type MyExtract = T extends U ? T : never function foo(a: T) { >foo : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarations.types b/tests/baselines/reference/inlineJsxFactoryDeclarations.types index 26f61e56f951b..457734f091624 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarations.types +++ b/tests/baselines/reference/inlineJsxFactoryDeclarations.types @@ -29,7 +29,7 @@ export { dom as default }; >dom : () => void > : ^^^^^^^^^^ >default : () => void -> : ^^^^^^^^^^ +> : === otherreacty.tsx === /** @jsx React.createElement */ @@ -50,7 +50,7 @@ import { dom as h } from "./renderer" >dom : () => void > : ^^^^^^^^^^ >h : () => void -> : ^^^^^^^^^^ +> : export const prerendered = ; >prerendered : error diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types index e343e85216700..2866c74587cd5 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types +++ b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types @@ -98,9 +98,9 @@ import { predom } from "./renderer2" export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

    {props.x} + {props.y} = {props.x + props.y}{...this.props.children}

    ; >MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

    {props.x} + {props.y} = {props.x + props.y}{...this.props.children}

    : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : >props : { x: number; y: number; children?: predom.JSX.Element[]; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ >x : number @@ -261,7 +261,7 @@ export const tree = : predom.JSX.Element > : ^^^^^^^^^^^^^^^^^^ >MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -295,7 +295,7 @@ export const tree = 6 : 6 > : ^ >MySFC : (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ export default > : predom.JSX.Element @@ -315,7 +315,7 @@ import prerendered, {MySFC, MyClass, tree} from "./component"; >prerendered : import("renderer2").predom.JSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MySFC : (props: { x: number; y: number; children?: import("renderer2").predom.JSX.Element[]; }) => import("renderer2").predom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyClass : typeof MyClass > : ^^^^^^^^^^^^^^ >tree : import("renderer2").predom.JSX.Element @@ -341,9 +341,9 @@ elem = ; // Expect assignability error here const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

    {props.x} + {props.y} = {props.x + props.y}{props.children}

    ; >DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

    {props.x} + {props.y} = {props.x + props.y}{props.children}

    : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : >props : { x: number; y: number; children?: dom.JSX.Element[]; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ >x : number @@ -496,7 +496,7 @@ const _tree = : dom.JSX.Element > : ^^^^^^^^^^^^^^^ >DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -530,7 +530,7 @@ const _tree = 6 : 6 > : ^ >DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ // Should fail, no dom elements const _brokenTree = @@ -539,7 +539,7 @@ const _brokenTree = : dom.JSX.Element > : ^^^^^^^^^^^^^^^ >MySFC : (props: { x: number; y: number; children?: import("renderer2").predom.JSX.Element[]; }) => import("renderer2").predom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -573,7 +573,7 @@ const _brokenTree = 6 : 6 > : ^ >MySFC : (props: { x: number; y: number; children?: import("renderer2").predom.JSX.Element[]; }) => import("renderer2").predom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Should fail, nondom isn't allowed as children of dom const _brokenTree2 = {tree}{tree} @@ -582,7 +582,7 @@ const _brokenTree2 = {tree}{tree} >{tree}{tree} : dom.JSX.Element > : ^^^^^^^^^^^^^^^ >DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 @@ -596,5 +596,5 @@ const _brokenTree2 = {tree}{tree} >tree : import("renderer2").predom.JSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >DOMSFC : (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.types b/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.types index 8c6aa5be67bca..d8ab9c5ff77e5 100644 --- a/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.types +++ b/tests/baselines/reference/inlineJsxFactoryOverridesCompilerOption.types @@ -21,7 +21,7 @@ export { dom as p }; >dom : () => void > : ^^^^^^^^^^ >p : () => void -> : ^^^^^^^^^^ +> : === reacty.tsx === /** @jsx dom */ diff --git a/tests/baselines/reference/inlineMappedTypeModifierDeclarationEmit.types b/tests/baselines/reference/inlineMappedTypeModifierDeclarationEmit.types index a11e099c264d6..6a4b8cbae84bb 100644 --- a/tests/baselines/reference/inlineMappedTypeModifierDeclarationEmit.types +++ b/tests/baselines/reference/inlineMappedTypeModifierDeclarationEmit.types @@ -3,13 +3,13 @@ === index.ts === import { test1, test2 } from "./other"; >test1 : (obj: T, k: K) => Exclude extends infer T_1 extends keyof T ? { [P in T_1]: T[P]; } : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test2 : (obj: T, k: K) => { [P in Exclude]: T[P]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function wrappedTest1(obj: T, k: K) { >wrappedTest1 : (obj: T, k: K) => Exclude extends infer T_1 extends keyof T ? { [P in T_1]: T[P]; } : never -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ >k : K @@ -17,9 +17,9 @@ export function wrappedTest1(obj: T, k: K) { return test1(obj, k); >test1(obj, k) : Exclude extends infer T_1 extends keyof T ? { [P in T_1]: T[P]; } : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test1 : (obj: T_1, k: K_1) => Exclude extends infer T_2 extends keyof T_1 ? { [P in T_2]: T_1[P]; } : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ >k : K @@ -28,7 +28,7 @@ export function wrappedTest1(obj: T, k: K) { export function wrappedTest2(obj: T, k: K) { >wrappedTest2 : (obj: T, k: K) => { [P in Exclude]: T[P]; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ >k : K @@ -38,7 +38,7 @@ export function wrappedTest2(obj: T, k: K) { >test2(obj, k) : { [P in Exclude]: T[P]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test2 : (obj: T_1, k: K_1) => { [P in Exclude]: T_1[P]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ >k : K @@ -63,9 +63,9 @@ export const processedInternally1 = wrappedTest1({} as Obj, "a"); >processedInternally1 : { readonly foo: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >wrappedTest1({} as Obj, "a") : { readonly foo: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >wrappedTest1 : (obj: T, k: K) => Exclude extends infer T_1 extends keyof T ? { [P in T_1]: T[P]; } : never -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} as Obj : Obj > : ^^^ >{} : {} @@ -77,9 +77,9 @@ export const processedInternally2 = wrappedTest2({} as Obj, "a"); >processedInternally2 : { foo: string; } > : ^^^^^^^^^^^^^^^^ >wrappedTest2({} as Obj, "a") : { foo: string; } -> : ^^^^^^^^^^^^^^^^ +> : >wrappedTest2 : (obj: T, k: K) => { [P in Exclude]: T[P]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} as Obj : Obj > : ^^^ >{} : {} @@ -103,7 +103,7 @@ type OmitUnveiled = { export function test1(obj: T, k: K): OmitReal { >test1 : (obj: T, k: K) => OmitReal -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >k : K @@ -117,7 +117,7 @@ export function test1(obj: T, k: K): OmitReal { export function test2(obj: T, k: K): OmitUnveiled { >test2 : (obj: T, k: K) => OmitUnveiled -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >k : K diff --git a/tests/baselines/reference/inlineSourceMap.types b/tests/baselines/reference/inlineSourceMap.types index 569ad53637ae1..5146296a6323b 100644 --- a/tests/baselines/reference/inlineSourceMap.types +++ b/tests/baselines/reference/inlineSourceMap.types @@ -11,11 +11,11 @@ console.log(x); >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/inlineSourceMap2.types b/tests/baselines/reference/inlineSourceMap2.types index e3f98c071dd80..bea949c7a2c94 100644 --- a/tests/baselines/reference/inlineSourceMap2.types +++ b/tests/baselines/reference/inlineSourceMap2.types @@ -13,11 +13,11 @@ console.log(x); >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/inlineSources.types b/tests/baselines/reference/inlineSources.types index c3eebeeb3acd9..518876baf18bd 100644 --- a/tests/baselines/reference/inlineSources.types +++ b/tests/baselines/reference/inlineSources.types @@ -11,11 +11,11 @@ console.log(a); >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -30,11 +30,11 @@ console.log(b); >console.log(b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >b : number > : ^^^^^^ diff --git a/tests/baselines/reference/inlineSources2.types b/tests/baselines/reference/inlineSources2.types index 057f037b6ebea..784a5dd12a1e7 100644 --- a/tests/baselines/reference/inlineSources2.types +++ b/tests/baselines/reference/inlineSources2.types @@ -11,11 +11,11 @@ console.log(a); >console.log(a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ @@ -30,11 +30,11 @@ console.log(b); >console.log(b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >b : number > : ^^^^^^ diff --git a/tests/baselines/reference/innerBoundLambdaEmit.types b/tests/baselines/reference/innerBoundLambdaEmit.types index 02a261ca0345e..24e8713e7c553 100644 --- a/tests/baselines/reference/innerBoundLambdaEmit.types +++ b/tests/baselines/reference/innerBoundLambdaEmit.types @@ -13,7 +13,7 @@ module M { >bar : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : } interface Array { toFoo(): M.Foo diff --git a/tests/baselines/reference/innerOverloads.types b/tests/baselines/reference/innerOverloads.types index 62d7f75f4f916..5abd99eb88eb5 100644 --- a/tests/baselines/reference/innerOverloads.types +++ b/tests/baselines/reference/innerOverloads.types @@ -7,26 +7,26 @@ function outer() { function inner(x:number); // should work >inner : { (x: number): any; (x: string): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ function inner(x:string); >inner : { (x: number): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ function inner(a:any) { return a; } >inner : { (x: number): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : any >a : any return inner(0); >inner(0) : any >inner : { (x: number): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >0 : 0 > : ^ } diff --git a/tests/baselines/reference/innerTypeArgumentInference.types b/tests/baselines/reference/innerTypeArgumentInference.types index 99d90e555d69d..3114a5dfbc6e2 100644 --- a/tests/baselines/reference/innerTypeArgumentInference.types +++ b/tests/baselines/reference/innerTypeArgumentInference.types @@ -4,7 +4,7 @@ interface Generator { (): T; } function Generate(func: Generator): U { >Generate : (func: Generator) => U -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >func : Generator > : ^^^^^^^^^^^^ @@ -12,7 +12,7 @@ function Generate(func: Generator): U { >Generate(func) : U > : ^ >Generate : (func: Generator) => U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >func : Generator > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/innerTypeCheckOfLambdaArgument.types b/tests/baselines/reference/innerTypeCheckOfLambdaArgument.types index 516c9dd9108f8..fb5eaecad412c 100644 --- a/tests/baselines/reference/innerTypeCheckOfLambdaArgument.types +++ b/tests/baselines/reference/innerTypeCheckOfLambdaArgument.types @@ -3,9 +3,9 @@ === innerTypeCheckOfLambdaArgument.ts === function takesCallback(callback: (n) =>any) { >takesCallback : (callback: (n: any) => any) => void -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^ >callback : (n: any) => any -> : ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >n : any > : ^^^ @@ -15,13 +15,13 @@ takesCallback( >takesCallback( function inner(n) { // this line should raise an error // otherwise, there's a bug in overload resolution / partial typechecking var k: string = 10; }) : void > : ^^^^ >takesCallback : (callback: (n: any) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^ function inner(n) { >function inner(n) { // this line should raise an error // otherwise, there's a bug in overload resolution / partial typechecking var k: string = 10; } : (n: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >inner : (n: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >n : any > : ^^^ diff --git a/tests/baselines/reference/innerTypeParameterShadowingOuterOne.types b/tests/baselines/reference/innerTypeParameterShadowingOuterOne.types index db2e7add95f52..462f02ddeeb82 100644 --- a/tests/baselines/reference/innerTypeParameterShadowingOuterOne.types +++ b/tests/baselines/reference/innerTypeParameterShadowingOuterOne.types @@ -20,11 +20,11 @@ function f() { >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : T > : ^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var x: T; >x : T @@ -57,11 +57,11 @@ function f2() { >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : U > : ^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } var x: U; >x : U diff --git a/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.types b/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.types index e8589fea643af..058ea44bc3d91 100644 --- a/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.types +++ b/tests/baselines/reference/innerTypeParameterShadowingOuterOne2.types @@ -20,11 +20,11 @@ class C { >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : T > : ^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } h() { @@ -63,11 +63,11 @@ class C2 { >x.toFixed() : string > : ^^^^^^ >x.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : U > : ^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } h() { diff --git a/tests/baselines/reference/instanceAndStaticDeclarations1.types b/tests/baselines/reference/instanceAndStaticDeclarations1.types index cd74471f0989f..4210911f07e43 100644 --- a/tests/baselines/reference/instanceAndStaticDeclarations1.types +++ b/tests/baselines/reference/instanceAndStaticDeclarations1.types @@ -15,7 +15,7 @@ class Point { public distance(p: Point) { >distance : (p: Point) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : Point > : ^^^^^ @@ -59,11 +59,11 @@ class Point { >Math.sqrt(dx * dx + dy * dy) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >dx * dx + dy * dy : number > : ^^^^^^ >dx * dx : number @@ -93,7 +93,7 @@ class Point { static distance(p1: Point, p2: Point) { return p1.distance(p2); } >distance : (p1: Point, p2: Point) => number -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >p1 : Point > : ^^^^^ >p2 : Point @@ -101,11 +101,11 @@ class Point { >p1.distance(p2) : number > : ^^^^^^ >p1.distance : (p: Point) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p1 : Point > : ^^^^^ >distance : (p: Point) => number -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p2 : Point > : ^^^^^ } diff --git a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.types b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.types index 8aa7589f3964c..2dd496fbd653a 100644 --- a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.types +++ b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.types @@ -28,7 +28,7 @@ class C { bar(x: number): number { >bar : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -36,7 +36,7 @@ class C { >C.prototype.bar = () => { } : () => void > : ^^^^^^^^^^ >C.prototype.bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >C.prototype : C > : ^ >C : typeof C @@ -44,15 +44,15 @@ class C { >prototype : C > : ^ >bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >() => { } : () => void > : ^^^^^^^^^^ C.prototype.bar = (x) => x; // ok >C.prototype.bar = (x) => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >C.prototype.bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >C.prototype : C > : ^ >C : typeof C @@ -60,9 +60,9 @@ class C { >prototype : C > : ^ >bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x) => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -70,9 +70,9 @@ class C { C.prototype.bar = (x: number) => 1; // ok >C.prototype.bar = (x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >C.prototype.bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >C.prototype : C > : ^ >C : typeof C @@ -80,9 +80,9 @@ class C { >prototype : C > : ^ >bar : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/instanceOfAssignability.types b/tests/baselines/reference/instanceOfAssignability.types index 614531371365e..c5d9eef33d43a 100644 --- a/tests/baselines/reference/instanceOfAssignability.types +++ b/tests/baselines/reference/instanceOfAssignability.types @@ -57,7 +57,7 @@ class Giraffe extends Mammal { neck; } function fn1(x: Array|Array|boolean) { >fn1 : (x: Array | Array | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : boolean | number[] | string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -81,7 +81,7 @@ function fn1(x: Array|Array|boolean) { function fn2(x: Base) { >fn2 : (x: Base) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Base > : ^^^^ @@ -105,7 +105,7 @@ function fn2(x: Base) { function fn3(x: Base|Derived1) { >fn3 : (x: Base | Derived1) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Base | Derived1 > : ^^^^^^^^^^^^^^^ @@ -129,7 +129,7 @@ function fn3(x: Base|Derived1) { function fn4(x: Base|Derived2) { >fn4 : (x: Base | Derived2) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Base | Derived2 > : ^^^^^^^^^^^^^^^ @@ -153,7 +153,7 @@ function fn4(x: Base|Derived2) { function fn5(x: Derived1) { >fn5 : (x: Derived1) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Derived1 > : ^^^^^^^^ @@ -177,7 +177,7 @@ function fn5(x: Derived1) { function fn6(x: Animal|Mammal) { >fn6 : (x: Animal | Mammal) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Animal | Mammal > : ^^^^^^^^^^^^^^^ @@ -201,7 +201,7 @@ function fn6(x: Animal|Mammal) { function fn7(x: Array|Array) { >fn7 : (x: Array | Array) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number[] | string[] > : ^^^^^^^^^^^^^^^^^^^ @@ -241,7 +241,7 @@ class ABC { a; b; c; } function fn8(x: Alpha|Beta|Gamma) { >fn8 : (x: Alpha | Beta | Gamma) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Alpha | Beta | Gamma > : ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/instanceOfInExternalModules.types b/tests/baselines/reference/instanceOfInExternalModules.types index 913ae55843951..1642925bc3d41 100644 --- a/tests/baselines/reference/instanceOfInExternalModules.types +++ b/tests/baselines/reference/instanceOfInExternalModules.types @@ -8,7 +8,7 @@ import Bar = require("instanceOfInExternalModules_require"); function IsFoo(value: any): boolean { >IsFoo : (value: any) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : any return value instanceof Bar.Foo; diff --git a/tests/baselines/reference/instanceofNarrowReadonlyArray.types b/tests/baselines/reference/instanceofNarrowReadonlyArray.types index c3215e4f61caa..e87bed175a920 100644 --- a/tests/baselines/reference/instanceofNarrowReadonlyArray.types +++ b/tests/baselines/reference/instanceofNarrowReadonlyArray.types @@ -5,7 +5,7 @@ function narrow(x: readonly number[] | number): readonly number[] { >narrow : (x: readonly number[] | number) => readonly number[] -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number | readonly number[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/instanceofOperatorWithInvalidOperands.es2015.types b/tests/baselines/reference/instanceofOperatorWithInvalidOperands.es2015.types index f492666eff967..52829f91b6914 100644 --- a/tests/baselines/reference/instanceofOperatorWithInvalidOperands.es2015.types +++ b/tests/baselines/reference/instanceofOperatorWithInvalidOperands.es2015.types @@ -264,9 +264,9 @@ var rc1 = '' instanceof {}; // @@hasInstance restricts LHS var o4: {[Symbol.hasInstance](value: { x: number }): boolean;}; >o4 : { [Symbol.hasInstance](value: { x: number; }): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: { x: number; }) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -292,14 +292,14 @@ var ra10 = o5 instanceof o4; >o5 : { y: string; } > : ^^^^^^^^^^^^^^ >o4 : { [Symbol.hasInstance](value: { x: number; }): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ // invalid @@hasInstance method return type on RHS var o6: {[Symbol.hasInstance](value: unknown): number;}; >o6 : { [Symbol.hasInstance](value: unknown): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: unknown) => number -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -317,5 +317,5 @@ var rb11 = x instanceof o6; >x : any > : ^^^ >o6 : { [Symbol.hasInstance](value: unknown): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/instanceofOperatorWithInvalidStaticToString.types b/tests/baselines/reference/instanceofOperatorWithInvalidStaticToString.types index afde68a633904..0cc6f41978bc4 100644 --- a/tests/baselines/reference/instanceofOperatorWithInvalidStaticToString.types +++ b/tests/baselines/reference/instanceofOperatorWithInvalidStaticToString.types @@ -12,7 +12,7 @@ declare class StaticToString { function foo(staticToString: StaticToString) { >foo : (staticToString: StaticToString) => boolean -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >staticToString : StaticToString > : ^^^^^^^^^^^^^^ @@ -35,7 +35,7 @@ declare class StaticToNumber { } function bar(staticToNumber: StaticToNumber) { >bar : (staticToNumber: StaticToNumber) => boolean -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >staticToNumber : StaticToNumber > : ^^^^^^^^^^^^^^ @@ -58,7 +58,7 @@ declare class NormalToString { } function baz(normal: NormalToString) { >baz : (normal: NormalToString) => boolean -> : ^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >normal : NormalToString > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/instanceofOperatorWithLHSIsTypeParameter.types b/tests/baselines/reference/instanceofOperatorWithLHSIsTypeParameter.types index bff0daa0bc406..0f7e8a5db9caa 100644 --- a/tests/baselines/reference/instanceofOperatorWithLHSIsTypeParameter.types +++ b/tests/baselines/reference/instanceofOperatorWithLHSIsTypeParameter.types @@ -3,7 +3,7 @@ === instanceofOperatorWithLHSIsTypeParameter.ts === function foo(t: T) { >foo : (t: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ diff --git a/tests/baselines/reference/instanceofOperatorWithRHSHasSymbolHasInstance.types b/tests/baselines/reference/instanceofOperatorWithRHSHasSymbolHasInstance.types index e57fce60876a0..6eba7d626d7a3 100644 --- a/tests/baselines/reference/instanceofOperatorWithRHSHasSymbolHasInstance.types +++ b/tests/baselines/reference/instanceofOperatorWithRHSHasSymbolHasInstance.types @@ -27,9 +27,9 @@ interface Line { start: Point, end: Point } declare var rhs0: { [Symbol.hasInstance](value: unknown): boolean; }; >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: unknown) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -41,9 +41,9 @@ declare var rhs0: { [Symbol.hasInstance](value: unknown): boolean; }; declare var rhs1: { [Symbol.hasInstance](value: any): boolean; }; >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: any) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -54,9 +54,9 @@ declare var rhs1: { [Symbol.hasInstance](value: any): boolean; }; declare var rhs2: { [Symbol.hasInstance](value: any): value is Point; }; >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: any) => value is Point -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -67,9 +67,9 @@ declare var rhs2: { [Symbol.hasInstance](value: any): value is Point; }; declare var rhs3: { [Symbol.hasInstance](value: Point | Line): value is Point; }; >rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: Point | Line) => value is Point -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -81,9 +81,9 @@ declare var rhs3: { [Symbol.hasInstance](value: Point | Line): value is Point; } declare var rhs4: { [Symbol.hasInstance](value: Point | Line): value is Line; }; >rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: Point | Line) => value is Line -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -95,9 +95,9 @@ declare var rhs4: { [Symbol.hasInstance](value: Point | Line): value is Line; }; declare var rhs5: { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; }; >rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -109,9 +109,9 @@ declare var rhs5: { [Symbol.hasInstance](value: Point | Point3D | Line): value i declare var rhs6: { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; }; >rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -125,7 +125,7 @@ declare class Rhs7 { static [Symbol.hasInstance](value: unknown): boolean; } >Rhs7 : Rhs7 > : ^^^^ >[Symbol.hasInstance] : (value: unknown) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -139,7 +139,7 @@ declare class Rhs8 { static [Symbol.hasInstance](value: any): boolean; } >Rhs8 : Rhs8 > : ^^^^ >[Symbol.hasInstance] : (value: any) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -152,7 +152,7 @@ declare class Rhs9 { static [Symbol.hasInstance](value: any): value is Point; } >Rhs9 : Rhs9 > : ^^^^ >[Symbol.hasInstance] : (value: any) => value is Point -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -165,7 +165,7 @@ declare class Rhs10 { static [Symbol.hasInstance](value: Point | Line): value is >Rhs10 : Rhs10 > : ^^^^^ >[Symbol.hasInstance] : (value: Point | Line) => value is Point -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -179,7 +179,7 @@ declare class Rhs11 { static [Symbol.hasInstance](value: Point | Line): value is >Rhs11 : Rhs11 > : ^^^^^ >[Symbol.hasInstance] : (value: Point | Line) => value is Line -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -193,7 +193,7 @@ declare class Rhs12 { static [Symbol.hasInstance](value: Point | Point3D | Line) >Rhs12 : Rhs12 > : ^^^^^ >[Symbol.hasInstance] : (value: Point | Point3D | Line) => value is Point3D -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -207,7 +207,7 @@ declare class Rhs13 { static [Symbol.hasInstance](value: Point3D | Line): value >Rhs13 : Rhs13 > : ^^^^^ >[Symbol.hasInstance] : (value: Point3D | Line) => value is Point3D -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -242,7 +242,7 @@ lhs0 instanceof rhs0 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs0 : any lhs0 instanceof rhs1 && lhs0; @@ -251,7 +251,7 @@ lhs0 instanceof rhs1 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs0 : any lhs0 instanceof rhs2 && lhs0; @@ -261,7 +261,7 @@ lhs0 instanceof rhs2 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs0 : Point > : ^^^^^ @@ -272,7 +272,7 @@ lhs0 instanceof rhs3 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs0 : Point > : ^^^^^ @@ -283,7 +283,7 @@ lhs0 instanceof rhs4 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >lhs0 : Line > : ^^^^ @@ -294,7 +294,7 @@ lhs0 instanceof rhs5 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs0 : Point3D > : ^^^^^^^ @@ -305,7 +305,7 @@ lhs0 instanceof rhs6 && lhs0; > : ^^^^^^^ >lhs0 : any >rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs0 : Point3D > : ^^^^^^^ @@ -394,7 +394,7 @@ lhs1 instanceof rhs0 && lhs1; >lhs1 : object > : ^^^^^^ >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs1 : object > : ^^^^^^ @@ -406,7 +406,7 @@ lhs1 instanceof rhs1 && lhs1; >lhs1 : object > : ^^^^^^ >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs1 : object > : ^^^^^^ @@ -418,7 +418,7 @@ lhs1 instanceof rhs2 && lhs1; >lhs1 : object > : ^^^^^^ >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs1 : Point > : ^^^^^ @@ -466,7 +466,7 @@ lhs2 instanceof rhs0 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -478,7 +478,7 @@ lhs2 instanceof rhs1 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -490,7 +490,7 @@ lhs2 instanceof rhs2 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs2 : Point > : ^^^^^ @@ -502,7 +502,7 @@ lhs2 instanceof rhs3 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs2 : Point > : ^^^^^ @@ -514,7 +514,7 @@ lhs2 instanceof rhs4 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >lhs2 : Line > : ^^^^ @@ -526,7 +526,7 @@ lhs2 instanceof rhs5 && lhs2; >lhs2 : Point | Point3D | Line > : ^^^^^^^^^^^^^^^^^^^^^^ >rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs2 : Point3D > : ^^^^^^^ @@ -610,7 +610,7 @@ lhs3 instanceof rhs0 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ @@ -622,7 +622,7 @@ lhs3 instanceof rhs1 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ @@ -634,7 +634,7 @@ lhs3 instanceof rhs2 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs3 : (Point3D | Line) & Point > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -646,7 +646,7 @@ lhs3 instanceof rhs3 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs3 : (Point3D | Line) & Point > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -658,7 +658,7 @@ lhs3 instanceof rhs4 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >lhs3 : Line > : ^^^^ @@ -670,7 +670,7 @@ lhs3 instanceof rhs5 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs3 : Point3D > : ^^^^^^^ @@ -682,7 +682,7 @@ lhs3 instanceof rhs6 && lhs3; >lhs3 : Point3D | Line > : ^^^^^^^^^^^^^^ >rhs6 : { [Symbol.hasInstance](value: Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs3 : Point3D > : ^^^^^^^ @@ -778,7 +778,7 @@ lhs4 instanceof rhs0 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs0 : { [Symbol.hasInstance](value: unknown): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -790,7 +790,7 @@ lhs4 instanceof rhs1 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs1 : { [Symbol.hasInstance](value: any): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -802,7 +802,7 @@ lhs4 instanceof rhs2 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs2 : { [Symbol.hasInstance](value: any): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs4 : Point | Point3D2 > : ^^^^^^^^^^^^^^^^ @@ -814,7 +814,7 @@ lhs4 instanceof rhs3 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs3 : { [Symbol.hasInstance](value: Point | Line): value is Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >lhs4 : Point | Point3D2 > : ^^^^^^^^^^^^^^^^ @@ -826,7 +826,7 @@ lhs4 instanceof rhs4 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs4 : { [Symbol.hasInstance](value: Point | Line): value is Line; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >lhs4 : Line > : ^^^^ @@ -838,7 +838,7 @@ lhs4 instanceof rhs5 && lhs4; >lhs4 : Point | Point3D2 | Line > : ^^^^^^^^^^^^^^^^^^^^^^^ >rhs5 : { [Symbol.hasInstance](value: Point | Point3D | Line): value is Point3D; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >lhs4 : Point3D > : ^^^^^^^ @@ -926,7 +926,7 @@ declare class A { // all construct signatures, but we have no way of extracting individual construct signatures from a type. static [Symbol.hasInstance](this: T, value: unknown): value is ( >[Symbol.hasInstance] : (this: T, value: unknown) => value is (T extends globalThis.Function ? T extends { readonly prototype: infer U; } ? boolean extends (U extends never ? true : false) ? T extends (abstract new (...args: any) => infer V) ? V : {} : U : never : never) -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -1003,7 +1003,7 @@ if (obj instanceof B) { interface HasInstanceOf { [Symbol.hasInstance](x: unknown): boolean } >[Symbol.hasInstance] : (x: unknown) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -1034,7 +1034,7 @@ lhs0 instanceof rhs14 && lhs0; interface HasInstanceOf1 { [Symbol.hasInstance](x: unknown): x is Point } >[Symbol.hasInstance] : (x: unknown) => x is Point -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor @@ -1046,7 +1046,7 @@ interface HasInstanceOf1 { [Symbol.hasInstance](x: unknown): x is Point } interface HasInstanceOf2 { [Symbol.hasInstance](x: unknown): x is Line } >[Symbol.hasInstance] : (x: unknown) => x is Line -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/instanceofTypeAliasToGenericClass.types b/tests/baselines/reference/instanceofTypeAliasToGenericClass.types index 4762df7bd4c78..705e7917fdd02 100644 --- a/tests/baselines/reference/instanceofTypeAliasToGenericClass.types +++ b/tests/baselines/reference/instanceofTypeAliasToGenericClass.types @@ -16,7 +16,7 @@ export type Table = TableClass; function fn(o: T) { >fn : (o: T) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >o : T > : ^ @@ -31,7 +31,7 @@ function fn(o: T) { function fn2(o: T) { >fn2 : >(o: T) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >o : T > : ^ diff --git a/tests/baselines/reference/instanceofWithPrimitiveUnion.types b/tests/baselines/reference/instanceofWithPrimitiveUnion.types index 12f96ff359b92..7f9d1392cfa1c 100644 --- a/tests/baselines/reference/instanceofWithPrimitiveUnion.types +++ b/tests/baselines/reference/instanceofWithPrimitiveUnion.types @@ -3,7 +3,7 @@ === instanceofWithPrimitiveUnion.ts === function test1(x: number | string) { >test1 : (x: number | string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -23,7 +23,7 @@ function test1(x: number | string) { function test2(x: (number | string) | number) { >test2 : (x: (number | string) | number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/instanceofWithStructurallyIdenticalTypes.types b/tests/baselines/reference/instanceofWithStructurallyIdenticalTypes.types index 74d4aba8b53b1..cc5f5179c3e92 100644 --- a/tests/baselines/reference/instanceofWithStructurallyIdenticalTypes.types +++ b/tests/baselines/reference/instanceofWithStructurallyIdenticalTypes.types @@ -23,7 +23,7 @@ class C3 { item: string } function foo1(x: C1 | C2 | C3): string { >foo1 : (x: C1 | C2 | C3) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : C1 | C2 | C3 > : ^^^^^^^^^^^^ @@ -86,7 +86,7 @@ function foo1(x: C1 | C2 | C3): string { function isC1(c: C1 | C2 | C3): c is C1 { return c instanceof C1 } >isC1 : (c: C1 | C2 | C3) => c is C1 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C1 | C2 | C3 > : ^^^^^^^^^^^^ >c instanceof C1 : boolean @@ -98,7 +98,7 @@ function isC1(c: C1 | C2 | C3): c is C1 { return c instanceof C1 } function isC2(c: C1 | C2 | C3): c is C2 { return c instanceof C2 } >isC2 : (c: C1 | C2 | C3) => c is C2 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C1 | C2 | C3 > : ^^^^^^^^^^^^ >c instanceof C2 : boolean @@ -110,7 +110,7 @@ function isC2(c: C1 | C2 | C3): c is C2 { return c instanceof C2 } function isC3(c: C1 | C2 | C3): c is C3 { return c instanceof C3 } >isC3 : (c: C1 | C2 | C3) => c is C3 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >c : C1 | C2 | C3 > : ^^^^^^^^^^^^ >c instanceof C3 : boolean @@ -122,7 +122,7 @@ function isC3(c: C1 | C2 | C3): c is C3 { return c instanceof C3 } function foo2(x: C1 | C2 | C3): string { >foo2 : (x: C1 | C2 | C3) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : C1 | C2 | C3 > : ^^^^^^^^^^^^ @@ -130,7 +130,7 @@ function foo2(x: C1 | C2 | C3): string { >isC1(x) : boolean > : ^^^^^^^ >isC1 : (c: C1 | C2 | C3) => c is C1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : C1 | C2 | C3 > : ^^^^^^^^^^^^ @@ -146,7 +146,7 @@ function foo2(x: C1 | C2 | C3): string { >isC2(x) : boolean > : ^^^^^^^ >isC2 : (c: C1 | C2 | C3) => c is C2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : C2 > : ^^ @@ -166,7 +166,7 @@ function foo2(x: C1 | C2 | C3): string { >isC3(x) : boolean > : ^^^^^^^ >isC3 : (c: C1 | C2 | C3) => c is C3 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : never > : ^^^^^ @@ -213,7 +213,7 @@ class B extends A { b: string } function goo(x: A) { >goo : (x: A) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A > : ^ diff --git a/tests/baselines/reference/instantiateContextualTypes.types b/tests/baselines/reference/instantiateContextualTypes.types index 805b8e5af09f3..d0d051bf0d104 100644 --- a/tests/baselines/reference/instantiateContextualTypes.types +++ b/tests/baselines/reference/instantiateContextualTypes.types @@ -11,7 +11,7 @@ export interface A
    { function fn(values: A, value: a) : void { >fn : (values: A, value: a) => void -> : ^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >values : A > : ^^^^ >value : a @@ -20,7 +20,7 @@ function fn(values: A, value: a) : void { declare let handlers: A<(value: number) => void>; >handlers : A<(value: number) => void> -> : ^^^^^^^^^^ ^^^^^ ^ +> : ^^^ ^^ ^^^^^ ^ >value : number > : ^^^^^^ @@ -28,17 +28,17 @@ fn(handlers, value => alert(value)); >fn(handlers, value => alert(value)) : void > : ^^^^ >fn : (values: A, value: a) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >handlers : A<(value: number) => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ >value => alert(value) : (value: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : number > : ^^^^^^ >alert(value) : void > : ^^^^ >alert : (message?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >value : number > : ^^^^^^ @@ -51,7 +51,7 @@ interface BaseProps { nextValues: (cur: T) => T; >nextValues : (cur: T) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cur : T > : ^ } @@ -78,19 +78,19 @@ declare class GenericComponent new GenericComponent({ initialValues: 12, nextValues: val => 12 }); >new GenericComponent({ initialValues: 12, nextValues: val => 12 }) : GenericComponent<{ initialValues: number; nextValues: (val: number) => number; }, number> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >GenericComponent : typeof GenericComponent > : ^^^^^^^^^^^^^^^^^^^^^^^ >{ initialValues: 12, nextValues: val => 12 } : { initialValues: number; nextValues: (val: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >initialValues : number > : ^^^^^^ >12 : 12 > : ^^ >nextValues : (val: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >val => 12 : (val: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >val : number > : ^^^^^^ >12 : 12 @@ -100,11 +100,11 @@ new GenericComponent({ initialValues: 12, nextValues: val => 12 }); declare function useStringOrNumber(t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)): void; >useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >useIt : T extends string ? (s: string) => void : (n: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >n : number @@ -113,12 +113,12 @@ declare function useStringOrNumber(t: T, useIt: T ext useStringOrNumber("", foo => {}); >useStringOrNumber("", foo => {}) : void > : ^^^^ ->useStringOrNumber : (t: T, useIt: T extends string ? (s: string) => void : (n: number) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>useStringOrNumber : (t: T, useIt: T extends string ? ((s: string) => void) : ((n: number) => void)) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >"" : "" > : ^^ >foo => {} : (foo: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >foo : string > : ^^^^^^ @@ -156,7 +156,7 @@ interface ActionHandler { declare function handler(actionType: ActionType

    , handler: Handler): ActionHandler >handler : (actionType: ActionType

    , handler: Handler) => ActionHandler -> : ^ ^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >actionType : ActionType

    > : ^^^^^^^^^^^^^ >handler : Handler @@ -164,7 +164,7 @@ declare function handler(actionType: ActionType

    , handler: Handler declare function createReducer( >createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^ ^^^^^ defaultState: S, >defaultState : S @@ -210,7 +210,7 @@ const NON_VOID_ACTION: ActionType = 'NON_VOID_ACTION' createReducer( >createReducer( defaultState, handler(NON_VOID_ACTION, (state, _payload) => state), handler(VOID_ACTION, state => state)) : any >createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ defaultState, >defaultState : AppState @@ -220,11 +220,11 @@ createReducer( >handler(NON_VOID_ACTION, (state, _payload) => state) : ActionHandler > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >handler : (actionType: ActionType

    , handler: Handler) => ActionHandler -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >NON_VOID_ACTION : ActionType > : ^^^^^^^^^^^^^^^^^^ >(state, _payload) => state : (state: AppState, _payload: number) => AppState -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >state : AppState > : ^^^^^^^^ >_payload : number @@ -236,11 +236,11 @@ createReducer( >handler(VOID_ACTION, state => state) : ActionHandler > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >handler : (actionType: ActionType

    , handler: Handler) => ActionHandler -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >VOID_ACTION : ActionType > : ^^^^^^^^^^^^^^^^ >state => state : (state: AppState) => AppState -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >state : AppState > : ^^^^^^^^ >state : AppState @@ -256,13 +256,13 @@ type R = { a: (x: number) => void; >a : (x: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ b: (x: string) => void; >b : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -274,7 +274,7 @@ type O = { on

    (x: P, callback: R[P]): void; >on :

    (x: P, callback: R[P]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : P > : ^ >callback : R[P] @@ -290,15 +290,15 @@ x.on('a', a => {}); >x.on('a', a => {}) : void > : ^^^^ >x.on :

    (x: P, callback: R[P]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : O > : ^ >on :

    (x: P, callback: R[P]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >'a' : "a" > : ^^^ >a => {} : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -338,7 +338,7 @@ type CreateElementChildren

    = declare function createElement

    ( >createElement :

    (type: ComponentClass

    , ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type: ComponentClass

    , >type : ComponentClass

    @@ -352,7 +352,7 @@ declare function createElement

    ( declare function createElement2

    ( >createElement2 :

    (type: ComponentClass

    , child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type: ComponentClass

    , >type : ComponentClass

    @@ -370,18 +370,18 @@ class InferFunctionTypes extends Component<{children: (foo: number) => string}> >Component : Component<{ children: (foo: number) => string; }> > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >children : (foo: number) => string -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >foo : number > : ^^^^^^ createElement(InferFunctionTypes, (foo) => "" + foo); >createElement(InferFunctionTypes, (foo) => "" + foo) : any >createElement :

    (type: ComponentClass

    , ...children: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >InferFunctionTypes : typeof InferFunctionTypes > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >(foo) => "" + foo : (foo: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >"" + foo : string @@ -394,13 +394,13 @@ createElement(InferFunctionTypes, (foo) => "" + foo); createElement2(InferFunctionTypes, [(foo) => "" + foo]); >createElement2(InferFunctionTypes, [(foo) => "" + foo]) : any >createElement2 :

    (type: ComponentClass

    , child: P extends { children?: infer C | undefined; } ? C extends any[] ? C : C[] : unknown) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >InferFunctionTypes : typeof InferFunctionTypes > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >[(foo) => "" + foo] : ((foo: number) => string)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >(foo) => "" + foo : (foo: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >foo : number > : ^^^^^^ >"" + foo : string @@ -446,7 +446,7 @@ type BoxConsumerFromOuterBox = declare function passContentsToFunc(outerBox: T, consumer: BoxConsumerFromOuterBox): void; >passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >outerBox : T > : ^ >consumer : BoxConsumerFromOuterBox @@ -460,11 +460,11 @@ passContentsToFunc(outerBoxOfString, box => box.value); >passContentsToFunc(outerBoxOfString, box => box.value) : void > : ^^^^ >passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >outerBoxOfString : OuterBox > : ^^^^^^^^^^^^^^^^ >box => box.value : (box: InnerBox) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >box : InnerBox > : ^^^^^^^^^^^^^^^^ >box.value : string @@ -488,23 +488,23 @@ class Interesting { >compiles : () => Promise > : ^^^^^^ >() : Promise => { return Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'ELSE'; }); } : () => Promise -> : ^^^^^^ +> : return Promise.resolve().then(() => { >Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'ELSE'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { if (1 < 2) { return 'SOMETHING'; } return 'ELSE'; } : () => "SOMETHING" | "ELSE" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -530,23 +530,23 @@ class Interesting { >doesnt : () => Promise > : ^^^^^^ >() : Promise => { return Promise.resolve().then(() => { return 'ELSE'; }); } : () => Promise -> : ^^^^^^ +> : return Promise.resolve().then(() => { >Promise.resolve().then(() => { return 'ELSE'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return 'ELSE'; } : () => "ELSE" > : ^^^^^^^^^^^^ @@ -560,23 +560,23 @@ class Interesting { >slightlyDifferentErrorMessage : () => Promise > : ^^^^^^ >() : Promise => { return Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'SOMETHING'; }); } : () => Promise -> : ^^^^^^ +> : return Promise.resolve().then(() => { >Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'SOMETHING'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { if (1 < 2) { return 'SOMETHING'; } return 'SOMETHING'; } : () => "SOMETHING" > : ^^^^^^^^^^^^^^^^^ @@ -604,7 +604,7 @@ class Interesting { declare function invoke(f: () => T): T; >invoke : (f: () => T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >f : () => T > : ^^^^^^ @@ -614,7 +614,7 @@ let xx: 0 | 1 | 2 = invoke(() => 1); >invoke(() => 1) : 1 > : ^ >invoke : (f: () => T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >() => 1 : () => 1 > : ^^^^^^^ >1 : 1 @@ -624,7 +624,7 @@ let xx: 0 | 1 | 2 = invoke(() => 1); declare function assignPartial(target: T, partial: Partial): T; >assignPartial : (target: T, partial: Partial) => T -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >target : T > : ^ >partial : Partial @@ -632,24 +632,24 @@ declare function assignPartial(target: T, partial: Partial): T; let obj = { >obj : { foo(bar: string): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >{ foo(bar: string) {}} : { foo(bar: string): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ foo(bar: string) {} >foo : (bar: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >bar : string > : ^^^^^^ } assignPartial(obj, { foo(...args) {} }); // args has type [string] >assignPartial(obj, { foo(...args) {} }) : { foo(bar: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >assignPartial : (target: T, partial: Partial) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >obj : { foo(bar: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >{ foo(...args) {} } : { foo(bar: string): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (bar: string) => void diff --git a/tests/baselines/reference/instantiateContextuallyTypedGenericThis.types b/tests/baselines/reference/instantiateContextuallyTypedGenericThis.types index db0d4ba93920a..ebdd380a94240 100644 --- a/tests/baselines/reference/instantiateContextuallyTypedGenericThis.types +++ b/tests/baselines/reference/instantiateContextuallyTypedGenericThis.types @@ -4,13 +4,13 @@ interface JQuery { each( >each : (collection: T[], callback: (this: T, dit: T) => T) => T[] -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ collection: T[], callback: (this: T, dit: T) => T >collection : T[] > : ^^^ >callback : (this: T, dit: T) => T -> : ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >this : T > : ^ >dit : T @@ -31,15 +31,15 @@ $.each(lines, function(dit) { >$.each(lines, function(dit) { return dit.charAt(0) + this.charAt(1);}) : string[] > : ^^^^^^^^ >$.each : (collection: T[], callback: (this: T, dit: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >$ : JQuery > : ^^^^^^ >each : (collection: T[], callback: (this: T, dit: T) => T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^ >lines : string[] > : ^^^^^^^^ >function(dit) { return dit.charAt(0) + this.charAt(1);} : (this: string, dit: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >dit : string > : ^^^^^^ @@ -49,21 +49,21 @@ $.each(lines, function(dit) { >dit.charAt(0) : string > : ^^^^^^ >dit.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >dit : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ >this.charAt(1) : string > : ^^^^^^ >this.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >this : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/instantiateCrossFileMerge.types b/tests/baselines/reference/instantiateCrossFileMerge.types index 3f404827393a9..c06c0c75addfb 100644 --- a/tests/baselines/reference/instantiateCrossFileMerge.types +++ b/tests/baselines/reference/instantiateCrossFileMerge.types @@ -7,9 +7,9 @@ declare class P { constructor(callback: (resolve: (value: R) => void) => void); >callback : (resolve: (value: R) => void) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >resolve : (value: R) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : R > : ^ } @@ -22,13 +22,13 @@ new P(r => { r('foo') }); >P : typeof P > : ^^^^^^^^ >r => { r('foo') } : (r: (value: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >r : (value: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >r('foo') : void > : ^^^^ >r : (value: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >'foo' : "foo" > : ^^^^^ diff --git a/tests/baselines/reference/instantiateTemplateTagTypeParameterOnVariableStatement.types b/tests/baselines/reference/instantiateTemplateTagTypeParameterOnVariableStatement.types index 3fd58a3f7573e..fa9b68729f143 100644 --- a/tests/baselines/reference/instantiateTemplateTagTypeParameterOnVariableStatement.types +++ b/tests/baselines/reference/instantiateTemplateTagTypeParameterOnVariableStatement.types @@ -8,13 +8,13 @@ */ const seq = a => b => b; >seq : (a: T) => (b: T) => T -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >a => b => b : (a: T) => (b: T) => T -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ +> : >a : T > : ^ >b => b : (b: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ >b : T > : ^ >b : T @@ -39,9 +39,9 @@ var text3 = seq(text1)(text2); >seq(text1)(text2) : string > : ^^^^^^ >seq(text1) : (b: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >seq : (a: T) => (b: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^ >text1 : "hello" > : ^^^^^^^ >text2 : "world" diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints.types b/tests/baselines/reference/instantiatedBaseTypeConstraints.types index da0197235f0b2..a0a4e473ec36f 100644 --- a/tests/baselines/reference/instantiatedBaseTypeConstraints.types +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints.types @@ -4,7 +4,7 @@ interface Foo, C> { foo(bar: C): void; >foo : (bar: C) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : C > : ^ } @@ -15,7 +15,7 @@ class Bar implements Foo { foo(bar: string): void { >foo : (bar: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : string > : ^^^^^^ } diff --git a/tests/baselines/reference/instantiatedTypeAliasDisplay.types b/tests/baselines/reference/instantiatedTypeAliasDisplay.types index dbca78476ec57..d2c59f13d307c 100644 --- a/tests/baselines/reference/instantiatedTypeAliasDisplay.types +++ b/tests/baselines/reference/instantiatedTypeAliasDisplay.types @@ -23,7 +23,7 @@ declare function f1(): Z; declare function f2(a: A, b: B, c: C, d: D): Z; >f2 : (a: A, b: B, c: C, d: D) => Z -> : ^ ^^ ^^ ^^ ^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -45,9 +45,9 @@ const x2 = f2({}, {}, {}, {}); // Z<{}, string[]> >x2 : Z<{}, string[]> > : ^^^^^^^^^^^^^^^ >f2({}, {}, {}, {}) : Z<{}, string[]> -> : ^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^ >f2 : (a: A, b: B, c: C, d: D) => Z -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ >{} : {} diff --git a/tests/baselines/reference/instantiationExpressionErrors.types b/tests/baselines/reference/instantiationExpressionErrors.types index c1683bf55aa55..763778408a276 100644 --- a/tests/baselines/reference/instantiationExpressionErrors.types +++ b/tests/baselines/reference/instantiationExpressionErrors.types @@ -33,7 +33,7 @@ const a3 = f.g; // () => U >a3 : () => U > : ^^^^^^^^^^ >f.g : () => U -> : ^^^^^^^^^^ +> : >f : { (): number; g(): U; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { (): T; g(): U; } @@ -89,7 +89,7 @@ const a7 = (f)['g']; >a7 : () => U > : ^^^^^^^^^^ >(f)['g'] : () => U -> : ^^^^^^^^^^ +> : >(f) : { (): number; g(): U; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { (): number; g(): U; } @@ -171,23 +171,23 @@ const b4 = f?.(); // Error, expected no type arguments declare let g: ((x: T) => T) | undefined; >g : ((x: T) => T) | undefined -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >x : T > : ^ const c1 = g || ((x: string) => x); >c1 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >g || ((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >g : ((x: string) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : ((x: T) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -195,17 +195,17 @@ const c1 = g || ((x: string) => x); const c2 = g ?? ((x: string) => x); >c2 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >g ?? ((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >g : ((x: string) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : ((x: T) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string @@ -213,17 +213,17 @@ const c2 = g ?? ((x: string) => x); const c3 = g && ((x: string) => x); >c3 : ((x: string) => string) | undefined -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >g && ((x: string) => x) : ((x: string) => string) | undefined -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >g : ((x: string) => string) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : ((x: T) => T) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string diff --git a/tests/baselines/reference/instantiationExpressions.types b/tests/baselines/reference/instantiationExpressions.types index 429c7e2dfdf8b..d0e9a469128a5 100644 --- a/tests/baselines/reference/instantiationExpressions.types +++ b/tests/baselines/reference/instantiationExpressions.types @@ -3,13 +3,13 @@ === instantiationExpressions.ts === declare function fx(x: T): T; >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >x : T > : ^ declare function fx(x: T, n: number): T; >fx : { (x: T_1): T_1; (x: T, n: number): T; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >x : T > : ^ >n : number @@ -17,7 +17,7 @@ declare function fx(x: T, n: number): T; declare function fx(t: [T, U]): [T, U]; >fx : { (x: T_1): T_1; (x: T_2, n: number): T_2; (t: [T, U]): [T, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >t : [T, U] > : ^^^^^^ @@ -27,27 +27,27 @@ function f1() { let f0 = fx<>; // Error >f0 : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >fx<> : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ let f1 = fx; // { (x: string): string; (x: string, n: number): string; } >f1 : { (x: string): string; (x: string, n: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >fx : { (x: string): string; (x: string, n: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ let f2 = fx; // (t: [string, number]) => [string, number] >f2 : (t: [string, number]) => [string, number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fx : (t: [string, number]) => [string, number] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ let f3 = fx; // Error >f3 : {} @@ -55,32 +55,32 @@ function f1() { >fx : {} > : ^^ >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } type T10 = typeof fx<>; // Error >T10 : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ type T11 = typeof fx; // { (x: string): string; (x: string, n: number): string; } >T11 : typeof fx > : >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ type T12 = typeof fx; // (t: [string, number]) => [string, number] >T12 : typeof fx > : >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ type T13 = typeof fx; // Error >T13 : typeof fx > : >fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_2, U]): [T_2, U]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ function f2() { >f2 : () => void @@ -96,17 +96,17 @@ function f2() { const A1 = Array; // new (...) => string[] >A1 : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ const A2 = Array; // Error >A2 : { isArray(arg: any): arg is any[]; readonly prototype: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : { isArray(arg: any): arg is any[]; readonly prototype: any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ } @@ -139,7 +139,7 @@ declare class C { static f(x: U): U[]; >f : (x: U) => U[] -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : U > : ^ } @@ -150,30 +150,30 @@ function f3() { let c1 = C; // { new (x: string): C; f(x: U): T[]; prototype: C; } >c1 : { new (x: string): C; prototype: C; f(x: U): U[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >C : { new (x: string): C; prototype: C; f(x: U): U[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >C : typeof C > : ^^^^^^^^ let f1 = C.f; // (x: string) => string[] >f1 : (x: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >C.f : (x: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >C.f : (x: U) => U[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >C : typeof C > : ^^^^^^^^ >f : (x: U) => U[] -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ } function f10(f: { (a: T): T, (a: U, b: number): U[] }) { >f10 : (f: { (a: T): T; (a: U, b: number): U[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: T): T; (a: U, b: number): U[]; } -> : ^^^ ^^^^^ ^^^ ^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -183,18 +183,18 @@ function f10(f: { (a: T): T, (a: U, b: number): U[] }) { let fs = f; // { (a: string): string; (a: string, b: number): string[]; } >fs : { (a: string): string; (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { (a: string): string; (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { (a: T): T; (a: U, b: number): U[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f11(f: { (a: T): T, (a: string, b: number): string[] }) { >f11 : (f: { (a: T): T; (a: string, b: number): string[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: T): T; (a: string, b: number): string[]; } -> : ^^^ ^^^^^ ^^^ ^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -204,18 +204,18 @@ function f11(f: { (a: T): T, (a: string, b: number): string[] }) { let fs = f; // (a: string) => string >fs : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f12(f: { (a: T): T, x: string }) { >f12 : (f: { (a: T): T; x: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: T): T; x: string; } -> : ^^^ ^^^^^ ^^^ ^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^^ >a : T > : ^ >x : string @@ -223,16 +223,16 @@ function f12(f: { (a: T): T, x: string }) { let fs = f; // { (a: string): string; x: string; } >fs : { (a: string): string; x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { (a: string): string; x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ } function f13(f: { x: string, y: string }) { >f13 : (f: { x: string; y: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { x: string; y: string; } > : ^^^^^ ^^^^^ ^^^ >x : string @@ -244,16 +244,16 @@ function f13(f: { x: string, y: string }) { >fs : { x: string; y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { x: string; y: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f : { x: string; y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } function f14(f: { new (a: T): T, new (a: U, b: number): U[] }) { >f14 : (f: { new (a: T): T; new (a: U, b: number): U[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { new (a: T): T; new (a: U, b: number): U[]; } -> : ^^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -263,18 +263,18 @@ function f14(f: { new (a: T): T, new (a: U, b: number): U[] }) { let fs = f; // { new (a: string): string; new (a: string, b: number): string[]; } >fs : { new (a: string): string; new (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { new (a: string): string; new (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { new (a: T): T; new (a: U, b: number): U[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { >f15 : (f: { new (a: T): T; (a: U, b: number): U[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: U, b: number): U[]; new (a: T): T; } -> : ^^^ ^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -284,18 +284,18 @@ function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { let fs = f; // { new (a: string): string; (a: string, b: number): string[]; } >fs : { (a: string, b: number): string[]; new (a: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { (a: string, b: number): string[]; new (a: string): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { (a: U, b: number): U[]; new (a: T): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ } function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { >f16 : (f: { new (a: T): T; (a: string, b: number): string[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: string, b: number): string[]; new (a: T): T; } -> : ^^^^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -305,18 +305,18 @@ function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { let fs = f; // new (a: string) => string >fs : new (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : new (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : { (a: string, b: number): string[]; new (a: T): T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ } function f17(f: { (a: T): T, new (a: string, b: number): string[] }) { >f17 : (f: { (a: T): T; new (a: string, b: number): string[]; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { (a: T): T; new (a: string, b: number): string[]; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -326,18 +326,18 @@ function f17(f: { (a: T): T, new (a: string, b: number): string[] }) { let fs = f; // (a: string) => string >fs : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; new (a: string, b: number): string[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f20(f: ((a: T) => T) & ((a: U, b: number) => U[])) { >f20 : (f: ((a: T) => T) & ((a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) & ((a: U, b: number) => U[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -347,18 +347,18 @@ function f20(f: ((a: T) => T) & ((a: U, b: number) => U[])) { let fs = f; // ((a: string) => string) & ((a: string, b: number) => string[]]) >fs : ((a: string) => string) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: string) => string) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: T) => T) & ((a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f21(f: ((a: T) => T) & ((a: string, b: number) => string[])) { >f21 : (f: ((a: T) => T) & ((a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) & ((a: string, b: number) => string[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -368,18 +368,18 @@ function f21(f: ((a: T) => T) & ((a: string, b: number) => string[])) { let fs = f; // (a: string) => string >fs : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : ((a: T) => T) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f22(f: ((a: T) => T) & { x: string }) { >f22 : (f: ((a: T) => T) & { x: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) & { x: string; } -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^ ^^^ >a : T > : ^ >x : string @@ -387,16 +387,16 @@ function f22(f: ((a: T) => T) & { x: string }) { let fs = f; // ((a: string) => string) & { x: string } >fs : ((a: string) => string) & { x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: string) => string) & { x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: T) => T) & { x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ } function f23(f: { x: string } & { y: string }) { >f23 : (f: { x: string; } & { y: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { x: string; } & { y: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >x : string @@ -408,16 +408,16 @@ function f23(f: { x: string } & { y: string }) { >fs : { x: string; } & { y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { x: string; } & { y: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >f : { x: string; } & { y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function f24(f: (new (a: T) => T) & (new (a: U, b: number) => U[])) { >f24 : (f: (new (a: T) => T) & (new (a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) & (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -427,18 +427,18 @@ function f24(f: (new (a: T) => T) & (new (a: U, b: number) => U[])) { let fs = f; // (new (a: string) => string) & ((a: string, b: number) => string[]]) >fs : (new (a: string) => string) & (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) & (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: T) => T) & (new (a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f25(f: (new (a: T) => T) & ((a: U, b: number) => U[])) { >f25 : (f: (new (a: T) => T) & ((a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) & ((a: U, b: number) => U[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -448,18 +448,18 @@ function f25(f: (new (a: T) => T) & ((a: U, b: number) => U[])) { let fs = f; // (new (a: string) => string) & ((a: string, b: number) => string[]]) >fs : (new (a: string) => string) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: T) => T) & ((a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f26(f: (new (a: T) => T) & ((a: string, b: number) => string[])) { >f26 : (f: (new (a: T) => T) & ((a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) & ((a: string, b: number) => string[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -469,18 +469,18 @@ function f26(f: (new (a: T) => T) & ((a: string, b: number) => string[])) { let fs = f; // new (a: string) => string >fs : new (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : new (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : (new (a: T) => T) & ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f27(f: ((a: T) => T) & (new (a: string, b: number) => string[])) { >f27 : (f: ((a: T) => T) & (new (a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) & (new (a: string, b: number) => string[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -490,18 +490,18 @@ function f27(f: ((a: T) => T) & (new (a: string, b: number) => string[])) { let fs = f; // (a: string) => string >fs : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : ((a: T) => T) & (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f30(f: ((a: T) => T) | ((a: U, b: number) => U[])) { >f30 : (f: ((a: T) => T) | ((a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) | ((a: U, b: number) => U[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -511,18 +511,18 @@ function f30(f: ((a: T) => T) | ((a: U, b: number) => U[])) { let fs = f; // ((a: string) => string) | ((a: string, b: number) => string[]]) >fs : ((a: string) => string) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: string) => string) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: T) => T) | ((a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f31(f: ((a: T) => T) | ((a: string, b: number) => string[])) { >f31 : (f: ((a: T) => T) | ((a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) | ((a: string, b: number) => string[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -532,18 +532,18 @@ function f31(f: ((a: T) => T) | ((a: string, b: number) => string[])) { let fs = f; // Error, '(a: string, b: number) => string[]' has no applicable signatures >fs : ((a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: T) => T) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f32(f: ((a: T) => T) | { x: string }) { >f32 : (f: ((a: T) => T) | { x: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { x: string; } | ((a: T) => T) -> : ^^^^^ ^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^ ^^^^^^^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >x : string @@ -551,16 +551,16 @@ function f32(f: ((a: T) => T) | { x: string }) { let fs = f; // ((a: string) => string) | { x: string } >fs : { x: string; } | ((a: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { x: string; } | ((a: string) => string) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { x: string; } | ((a: T) => T) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^ } function f33(f: { x: string } | { y: string }) { >f33 : (f: { x: string; } | { y: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : { x: string; } | { y: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >x : string @@ -572,16 +572,16 @@ function f33(f: { x: string } | { y: string }) { >fs : { x: string; } | { y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : { x: string; } | { y: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >f : { x: string; } | { y: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function f34(f: (new (a: T) => T) | (new (a: U, b: number) => U[])) { >f34 : (f: (new (a: T) => T) | (new (a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) | (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -591,18 +591,18 @@ function f34(f: (new (a: T) => T) | (new (a: U, b: number) => U[])) { let fs = f; // (new (a: string) => string) | ((a: string, b: number) => string[]]) >fs : (new (a: string) => string) | (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) | (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: T) => T) | (new (a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f35(f: (new (a: T) => T) | ((a: U, b: number) => U[])) { >f35 : (f: (new (a: T) => T) | ((a: U, b: number) => U[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) | ((a: U, b: number) => U[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -612,18 +612,18 @@ function f35(f: (new (a: T) => T) | ((a: U, b: number) => U[])) { let fs = f; // (new (a: string) => string) | ((a: string, b: number) => string[]]) >fs : (new (a: string) => string) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: T) => T) | ((a: U, b: number) => U[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ } function f36(f: (new (a: T) => T) | ((a: string, b: number) => string[])) { >f36 : (f: (new (a: T) => T) | ((a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : (new (a: T) => T) | ((a: string, b: number) => string[]) -> : ^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -633,18 +633,18 @@ function f36(f: (new (a: T) => T) | ((a: string, b: number) => string[])) { let fs = f; // Error, '(a: string, b: number) => string[]' has no applicable signatures >fs : (new (a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (new (a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (new (a: T) => T) | ((a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f37(f: ((a: T) => T) | (new (a: string, b: number) => string[])) { >f37 : (f: ((a: T) => T) | (new (a: string, b: number) => string[])) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >f : ((a: T) => T) | (new (a: string, b: number) => string[]) -> : ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -654,37 +654,37 @@ function f37(f: ((a: T) => T) | (new (a: string, b: number) => string[])) { let fs = f; // Error, 'new (a: string, b: number) => string[]' has no applicable signatures >fs : ((a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: string) => string) | {} -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: T) => T) | (new (a: string, b: number) => string[]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ } function f38(x: A) => A) | ((x: B) => B[]), U>(f: T | U | ((x: C) => C[][])) { >f38 : (x: A) => A) | ((x: B) => B[]), U>(f: T | U | ((x: C) => C[][])) => void -> : ^ ^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ ^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^^^^^^^^ >x : A > : ^ >x : B > : ^ >f : T | U | ((x: C) => C[][]) -> : ^^^^^^^^^^ ^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^ ^ >x : C > : ^ let fs = f; // U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][]) >fs : U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >f : U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >f : T | U | ((x: C) => C[][]) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ } function makeBox(value: T) { >makeBox : (value: T) => { value: T; } -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >value : T > : ^ @@ -699,7 +699,7 @@ type BoxFunc = typeof makeBox; // (value: T) => { value: T } >BoxFunc : typeof makeBox > : >makeBox : (value: T_1) => { value: T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ type StringBoxFunc = BoxFunc; // (value: string) => { value: string } >StringBoxFunc : StringBoxFunc @@ -709,7 +709,7 @@ type Box = ReturnType>; // { value: T } >Box : { value: T; } > : ^^^^^^^^^^^^^ >makeBox : (value: T_1) => { value: T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ type StringBox = Box; // { value: string } >StringBox : StringBox @@ -723,7 +723,7 @@ type A = InstanceType>; // U[] declare const g1: { >g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } -> : ^^^ ^^^^^ ^^^ ^^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ (a: T): { a: T }; >a : T @@ -742,7 +742,7 @@ type T30 = typeof g1; // { (a: V) => { a: V }; new (b: V) => { b: V }; } >T30 : typeof g1 > : >g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ type T31 = ReturnType>; // { a: A } >T31 : { a: A; } @@ -754,7 +754,7 @@ type T32 = InstanceType>; // { b: B } declare const g2: { >g2 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -769,17 +769,17 @@ type T40 = typeof g2; // Error >T40 : typeof g2 > : >g2 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ type T41 = typeof g2; // Error >T41 : typeof g2 > : >g2 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ declare const g3: { >g3 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -794,11 +794,11 @@ type T50 = typeof g3; // (a: U) => U >T50 : typeof g3 > : >g3 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ type T51 = typeof g3; // (b: U) => U >T51 : typeof g3 > : >g3 : { (a: T): T; new (b: T_1): T_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/intTypeCheck.types b/tests/baselines/reference/intTypeCheck.types index 58000bae6825b..7ae6942332c79 100644 --- a/tests/baselines/reference/intTypeCheck.types +++ b/tests/baselines/reference/intTypeCheck.types @@ -29,13 +29,13 @@ interface i1 { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7? (pa1, pa2): void; >p7 : (pa1: any, pa2: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -239,13 +239,13 @@ interface i11 { p6(pa1): void; >p6 : (pa1: any) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >pa1 : any > : ^^^ p7(pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ >pa1 : any > : ^^^ >pa2 : any @@ -253,7 +253,7 @@ interface i11 { p7? (pa1, pa2): void; >p7 : { (pa1: any, pa2: any): void; (pa1: any, pa2: any): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^ >pa1 : any > : ^^^ >pa2 : any @@ -275,7 +275,7 @@ var obj1: i1 = { >obj1 : i1 > : ^^ >{ p: null, p3: function ():any { return 0; }, p6: function (pa1):any { return 0; }, p7: function (pa1, pa2):any { return 0; }} : { p: null; p3: () => any; p6: (pa1: any) => any; p7: (pa1: any, pa2: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^ ^^^ p: null, >p : null @@ -285,15 +285,15 @@ var obj1: i1 = { >p3 : () => any > : ^^^^^^ >function ():any { return 0; } : () => any -> : ^^^^^^ +> : >0 : 0 > : ^ p6: function (pa1):any { return 0; }, >p6 : (pa1: any) => any -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >function (pa1):any { return 0; } : (pa1: any) => any -> : ^^^^^^^^^^^^^^ +> : >pa1 : any > : ^^^ >0 : 0 @@ -301,9 +301,9 @@ var obj1: i1 = { p7: function (pa1, pa2):any { return 0; } >p7 : (pa1: any, pa2: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^ >function (pa1, pa2):any { return 0; } : (pa1: any, pa2: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >pa1 : any > : ^^^ >pa2 : any diff --git a/tests/baselines/reference/interfaceAssignmentCompat.types b/tests/baselines/reference/interfaceAssignmentCompat.types index 84a0296ac19ee..820aaa68c29db 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.types +++ b/tests/baselines/reference/interfaceAssignmentCompat.types @@ -36,7 +36,7 @@ module M { export function CompareEyes(a:IEye,b:IEye):number { >CompareEyes : (a: IEye, b: IEye) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : IEye > : ^^^^ >b : IEye @@ -61,7 +61,7 @@ module M { export function CompareYeux(a:IFrenchEye,b:IFrenchEye):number { >CompareYeux : (a: IFrenchEye, b: IFrenchEye) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : IFrenchEye > : ^^^^^^^^^^ >b : IFrenchEye @@ -168,13 +168,13 @@ module M { >x.sort(CompareYeux) : IEye[] > : ^^^^^^ >x.sort : (compareFn?: (a: IEye, b: IEye) => number) => IEye[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : IEye[] > : ^^^^^^ >sort : (compareFn?: (a: IEye, b: IEye) => number) => IEye[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >CompareYeux : (a: IFrenchEye, b: IFrenchEye) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ // type of z inferred from specialized array type var z=x.sort(CompareEyes); // ok @@ -183,13 +183,13 @@ module M { >x.sort(CompareEyes) : IEye[] > : ^^^^^^ >x.sort : (compareFn?: (a: IEye, b: IEye) => number) => IEye[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : IEye[] > : ^^^^^^ >sort : (compareFn?: (a: IEye, b: IEye) => number) => IEye[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >CompareEyes : (a: IEye, b: IEye) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ for (var i=0,len=z.length;ii : number diff --git a/tests/baselines/reference/interfaceClassMerging.types b/tests/baselines/reference/interfaceClassMerging.types index a3873316e61df..c9a31535633d8 100644 --- a/tests/baselines/reference/interfaceClassMerging.types +++ b/tests/baselines/reference/interfaceClassMerging.types @@ -4,13 +4,13 @@ interface Foo { method(a: number): string; >method : (a: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ optionalMethod?(a: number): string; >optionalMethod : (a: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -33,7 +33,7 @@ class Foo { additionalMethod(a: number): string { >additionalMethod : (a: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -41,11 +41,11 @@ class Foo { >this.method(0) : string > : ^^^^^^ >this.method : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >this : this > : ^^^^ >method : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ } @@ -59,7 +59,7 @@ class Bar extends Foo { method(a: number) { >method : (a: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -86,11 +86,11 @@ bar.method(0); >bar.method(0) : string > : ^^^^^^ >bar.method : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >bar : Bar > : ^^^ >method : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -98,11 +98,11 @@ bar.optionalMethod(1); >bar.optionalMethod(1) : string > : ^^^^^^ >bar.optionalMethod : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >bar : Bar > : ^^^ >optionalMethod : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ @@ -134,21 +134,21 @@ bar.additionalMethod(2); >bar.additionalMethod(2) : string > : ^^^^^^ >bar.additionalMethod : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >bar : Bar > : ^^^ >additionalMethod : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >2 : 2 > : ^ var obj: { >obj : { method(a: number): string; property: string; additionalProperty: string; additionalMethod(a: number): string; } -> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ method(a: number): string; >method : (a: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -162,7 +162,7 @@ var obj: { additionalMethod(a: number): string; >additionalMethod : (a: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -170,17 +170,17 @@ var obj: { bar = obj; >bar = obj : { method(a: number): string; property: string; additionalProperty: string; additionalMethod(a: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : Bar > : ^^^ >obj : { method(a: number): string; property: string; additionalProperty: string; additionalMethod(a: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ obj = bar; >obj = bar : Bar > : ^^^ >obj : { method(a: number): string; property: string; additionalProperty: string; additionalMethod(a: number): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >bar : Bar > : ^^^ diff --git a/tests/baselines/reference/interfaceDoesNotDependOnBaseTypes.types b/tests/baselines/reference/interfaceDoesNotDependOnBaseTypes.types index 174bb142559e4..5ae7b346f8495 100644 --- a/tests/baselines/reference/interfaceDoesNotDependOnBaseTypes.types +++ b/tests/baselines/reference/interfaceDoesNotDependOnBaseTypes.types @@ -19,11 +19,11 @@ if (typeof x !== "string") { >x.push("") : number > : ^^^^^^ >x.push : (...items: StringTree[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : StringTreeArray > : ^^^^^^^^^^^^^^^ >push : (...items: StringTree[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >"" : "" > : ^^ @@ -31,11 +31,11 @@ if (typeof x !== "string") { >x.push([""]) : number > : ^^^^^^ >x.push : (...items: StringTree[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : StringTreeArray > : ^^^^^^^^^^^^^^^ >push : (...items: StringTree[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >[""] : string[] > : ^^^^^^^^ >"" : "" diff --git a/tests/baselines/reference/interfaceExtendsClassWithPrivate1.types b/tests/baselines/reference/interfaceExtendsClassWithPrivate1.types index 18ae799b59cee..8b9602e5534f7 100644 --- a/tests/baselines/reference/interfaceExtendsClassWithPrivate1.types +++ b/tests/baselines/reference/interfaceExtendsClassWithPrivate1.types @@ -7,7 +7,7 @@ class C { public foo(x: any) { return x; } >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -23,7 +23,7 @@ class C { interface I extends C { other(x: any): any; >other : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } @@ -36,7 +36,7 @@ class D extends C implements I { public foo(x: any) { return x; } >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -44,7 +44,7 @@ class D extends C implements I { other(x: any) { return x; } >other : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any diff --git a/tests/baselines/reference/interfaceExtendsClassWithPrivate2.types b/tests/baselines/reference/interfaceExtendsClassWithPrivate2.types index 9c8d2d8f21ef5..3cd5af27c3c05 100644 --- a/tests/baselines/reference/interfaceExtendsClassWithPrivate2.types +++ b/tests/baselines/reference/interfaceExtendsClassWithPrivate2.types @@ -7,7 +7,7 @@ class C { public foo(x: any) { return x; } >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -23,7 +23,7 @@ class C { interface I extends C { other(x: any): any; >other : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } @@ -36,7 +36,7 @@ class D extends C implements I { // error public foo(x: any) { return x; } >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -56,7 +56,7 @@ class D extends C implements I { // error other(x: any) { return x; } >other : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -75,7 +75,7 @@ class D2 extends C implements I { // error public foo(x: any) { return x; } >foo : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any @@ -89,7 +89,7 @@ class D2 extends C implements I { // error other(x: any) { return x; } >other : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ >x : any diff --git a/tests/baselines/reference/interfaceExtendsObjectIntersection.types b/tests/baselines/reference/interfaceExtendsObjectIntersection.types index 2e073cec4e5d8..1165ff1431843 100644 --- a/tests/baselines/reference/interfaceExtendsObjectIntersection.types +++ b/tests/baselines/reference/interfaceExtendsObjectIntersection.types @@ -143,7 +143,7 @@ class C7 extends Constructor() { x: string } declare function fx(x: string): string; >fx : (x: string) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -173,9 +173,9 @@ declare namespace NX { export const a = 1 } type T10 = typeof fx; >T10 : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >fx : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ type T11 = typeof CX; >T11 : typeof CX diff --git a/tests/baselines/reference/interfaceImplementation1.types b/tests/baselines/reference/interfaceImplementation1.types index b33985ed0b105..d00a06ed54224 100644 --- a/tests/baselines/reference/interfaceImplementation1.types +++ b/tests/baselines/reference/interfaceImplementation1.types @@ -22,7 +22,7 @@ interface I1 { interface I2 { iFn(n:number, s:string):void; >iFn : (n: number, s: string) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >n : number > : ^^^^^^ >s : string diff --git a/tests/baselines/reference/interfaceOnly.types b/tests/baselines/reference/interfaceOnly.types index 4541acf3b6ab1..1f4bb1606a7c6 100644 --- a/tests/baselines/reference/interfaceOnly.types +++ b/tests/baselines/reference/interfaceOnly.types @@ -8,7 +8,7 @@ interface foo { f2 (f: ()=> void); >f2 : (f: () => void) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >f : () => void > : ^^^^^^ } diff --git a/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature.types b/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature.types index 585218e4a071e..f7d3fc3133531 100644 --- a/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature.types +++ b/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature.types @@ -23,7 +23,7 @@ var r = d(); >r : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >d() : { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ diff --git a/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature2.types b/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature2.types index 210f570ea55d5..022faa60ad6d1 100644 --- a/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature2.types +++ b/tests/baselines/reference/interfaceWithCallSignaturesThatHidesBaseSignature2.types @@ -23,7 +23,7 @@ var r = d(); >r : { a: number; } > : ^^^^^^^^^^^^^^ >d() : { a: number; } -> : ^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ diff --git a/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature.types b/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature.types index c3cf84765100f..988adf49688a6 100644 --- a/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature.types +++ b/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature.types @@ -23,7 +23,7 @@ var r = new d(); >r : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >new d() : { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ diff --git a/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature2.types b/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature2.types index a391ccd1e844f..b51a20528eba3 100644 --- a/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature2.types +++ b/tests/baselines/reference/interfaceWithConstructSignaturesThatHidesBaseSignature2.types @@ -23,7 +23,7 @@ var r = new d(); >r : { a: number; } > : ^^^^^^^^^^^^^^ >new d() : { a: number; } -> : ^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ diff --git a/tests/baselines/reference/interfaceWithPropertyOfEveryType.types b/tests/baselines/reference/interfaceWithPropertyOfEveryType.types index 0400b55662083..6c0520ff47c58 100644 --- a/tests/baselines/reference/interfaceWithPropertyOfEveryType.types +++ b/tests/baselines/reference/interfaceWithPropertyOfEveryType.types @@ -57,13 +57,13 @@ interface Foo { h: (x: number) => number; >h : (x: number) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ i: (x: T) => T; >i : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -100,7 +100,7 @@ var a: Foo = { >a : Foo > : ^^^ >{ a: 1, b: '', c: true, d: {}, e: null , f: [1], g: {}, h: (x: number) => 1, i: (x: T) => x, j: null, k: new C(), l: f1, m: M, n: {}, o: E.A} : { a: number; b: string; c: true; d: {}; e: null; f: number[]; g: {}; h: (x: number) => number; i: (x: T) => T; j: Foo; k: C; l: () => void; m: typeof M; n: {}; o: E; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a: 1, >a : number @@ -146,9 +146,9 @@ var a: Foo = { h: (x: number) => 1, >h : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => 1 : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >1 : 1 @@ -156,9 +156,9 @@ var a: Foo = { i: (x: T) => x, >i : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: T) => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : T > : ^ >x : T @@ -182,7 +182,7 @@ var a: Foo = { >l : () => void > : ^^^^^^^^^^ >f1 : () => void -> : ^^^^^^^^^^ +> : m: M, >m : typeof M diff --git a/tests/baselines/reference/interfacedecl.types b/tests/baselines/reference/interfacedecl.types index 9113215782c2e..f5379435c2a66 100644 --- a/tests/baselines/reference/interfacedecl.types +++ b/tests/baselines/reference/interfacedecl.types @@ -38,7 +38,7 @@ interface a0 { p5: (s: number) =>string; >p5 : (s: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : number > : ^^^^^^ @@ -52,13 +52,13 @@ interface a0 { f3(a: string): number; >f3 : (a: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ f4? (s: number): string; >f4 : (s: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : number > : ^^^^^^ } diff --git a/tests/baselines/reference/interfacedeclWithIndexerErrors.types b/tests/baselines/reference/interfacedeclWithIndexerErrors.types index 64ef88910a6b1..0059c132ec120 100644 --- a/tests/baselines/reference/interfacedeclWithIndexerErrors.types +++ b/tests/baselines/reference/interfacedeclWithIndexerErrors.types @@ -42,7 +42,7 @@ interface a0 { p5: (s: number) =>string; >p5 : (s: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : number > : ^^^^^^ @@ -56,13 +56,13 @@ interface a0 { f3(a: string): number; >f3 : (a: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string > : ^^^^^^ f4? (s: number): string; >f4 : (s: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : number > : ^^^^^^ } diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types index 3925d6601abc0..faca5b08b000d 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithExport.types @@ -11,7 +11,7 @@ export module x { foo(a: number) { >foo : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -52,11 +52,11 @@ export module m2 { >cProp.foo(10) : number > : ^^^^^^ >cProp.foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >cProp : c > : ^ >foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ } diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types index 314b6183780ce..3dac0b8cea32f 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExport.types @@ -11,7 +11,7 @@ export module x { foo(a: number) { >foo : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -52,11 +52,11 @@ export module m2 { >cProp.foo(10) : number > : ^^^^^^ >cProp.foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >cProp : c > : ^ >foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ } diff --git a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExportAccessError.types b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExportAccessError.types index fe59c4f7bc9da..fc0574857b2fd 100644 --- a/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExportAccessError.types +++ b/tests/baselines/reference/internalAliasClassInsideLocalModuleWithoutExportAccessError.types @@ -11,7 +11,7 @@ export module x { foo(a: number) { >foo : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -52,11 +52,11 @@ export module m2 { >cProp.foo(10) : number > : ^^^^^^ >cProp.foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >cProp : c > : ^ >foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ } diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types index a40a55aaa4043..8c862e5a4c488 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithExport.types @@ -11,7 +11,7 @@ export module x { foo(a: number) { >foo : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -44,11 +44,11 @@ var cReturnVal = cProp.foo(10); >cProp.foo(10) : number > : ^^^^^^ >cProp.foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >cProp : xc > : ^^ >foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ diff --git a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types index 8eb28cced71c9..4ca2c5b7c33c3 100644 --- a/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasClassInsideTopLevelModuleWithoutExport.types @@ -11,7 +11,7 @@ export module x { foo(a: number) { >foo : (a: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ @@ -44,11 +44,11 @@ var cReturnVal = cProp.foo(10); >cProp.foo(10) : number > : ^^^^^^ >cProp.foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >cProp : xc > : ^^ >foo : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ diff --git a/tests/baselines/reference/internalAliasFunction.types b/tests/baselines/reference/internalAliasFunction.types index bb0baa92d8bbc..152e5c6bdb0fc 100644 --- a/tests/baselines/reference/internalAliasFunction.types +++ b/tests/baselines/reference/internalAliasFunction.types @@ -7,7 +7,7 @@ module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -23,11 +23,11 @@ module c { import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ export var bVal = b(10); >bVal : number @@ -35,14 +35,14 @@ module c { >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types index 1db5e9980e66a..cb69d59fc9791 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithExport.types @@ -7,7 +7,7 @@ export module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -23,11 +23,11 @@ export module c { export import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ export var bVal = b(10); >bVal : number @@ -35,14 +35,14 @@ export module c { >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types index ad715a86b12cc..4b1421be41c0c 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExport.types @@ -7,7 +7,7 @@ export module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -23,11 +23,11 @@ export module c { import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var bVal = b(10); >bVal : number @@ -35,14 +35,14 @@ export module c { >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : } diff --git a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExportAccessError.types b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExportAccessError.types index 773bef72c81ad..5b43e860baefd 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExportAccessError.types +++ b/tests/baselines/reference/internalAliasFunctionInsideLocalModuleWithoutExportAccessError.types @@ -7,7 +7,7 @@ export module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -23,11 +23,11 @@ export module c { import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ var bVal = b(10); >bVal : number @@ -35,15 +35,15 @@ export module c { >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : } var d = c.b(11); >d : any diff --git a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types index 2a5c4aa0e59d2..24afce25d520f 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithExport.types @@ -7,7 +7,7 @@ export module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -19,11 +19,11 @@ export module a { export import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ export var bVal = b(10); >bVal : number @@ -31,13 +31,13 @@ export var bVal = b(10); >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types index cc557352b4a79..855623fad65c6 100644 --- a/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types +++ b/tests/baselines/reference/internalAliasFunctionInsideTopLevelModuleWithoutExport.types @@ -7,7 +7,7 @@ export module a { export function foo(x: number) { >foo : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -19,11 +19,11 @@ export module a { import b = a.foo; >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : typeof a > : ^^^^^^^^ >foo : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ export var bVal = b(10); >bVal : number @@ -31,13 +31,13 @@ export var bVal = b(10); >b(10) : number > : ^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ export var bVal2 = b; >bVal2 : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >b : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/intersectionAsWeakTypeSource.types b/tests/baselines/reference/intersectionAsWeakTypeSource.types index ee269ccbe08cd..0e5b8ea55e2e6 100644 --- a/tests/baselines/reference/intersectionAsWeakTypeSource.types +++ b/tests/baselines/reference/intersectionAsWeakTypeSource.types @@ -55,7 +55,7 @@ type Brand = number & { __brand: T } declare function create(styles: T): { [P in keyof T]: Brand }; >create : (styles: T) => { [P in keyof T]: Brand; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >styles : T @@ -65,9 +65,9 @@ const wrapped = create({ first: { view: 0, styleMedia: "???" } }); >wrapped : { first: Brand<{ view: number; styleMedia: string; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >create({ first: { view: 0, styleMedia: "???" } }) : { first: Brand<{ view: number; styleMedia: string; }>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >create : (styles: T) => { [P in keyof T]: Brand; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ first: { view: 0, styleMedia: "???" } } : { first: { view: number; styleMedia: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >first : { view: number; styleMedia: string; } diff --git a/tests/baselines/reference/intersectionIncludingPropFromGlobalAugmentation.types b/tests/baselines/reference/intersectionIncludingPropFromGlobalAugmentation.types index 6e4df718ce600..c5e462bc05047 100644 --- a/tests/baselines/reference/intersectionIncludingPropFromGlobalAugmentation.types +++ b/tests/baselines/reference/intersectionIncludingPropFromGlobalAugmentation.types @@ -37,13 +37,13 @@ const toString = target.toString; const hasOwn = target.hasOwnProperty; // not an own member but it should still be accessible >hasOwn : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >target.hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >target : Test2 > : ^^^^^ >hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export {} diff --git a/tests/baselines/reference/intersectionNarrowing.types b/tests/baselines/reference/intersectionNarrowing.types index 2b8a38572ff9c..4dd63fe9b7f0b 100644 --- a/tests/baselines/reference/intersectionNarrowing.types +++ b/tests/baselines/reference/intersectionNarrowing.types @@ -5,7 +5,7 @@ function f1(x: T & string | T & undefined) { >f1 : (x: (T & string) | (T & undefined)) => void -> : ^ ^^^^^^ ^ ^ ^^^^^^^^^^ +> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & undefined) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -21,7 +21,7 @@ function f1(x: T & string | T & undefined) { function f2(x: T & string | T & undefined) { >f2 : (x: (T & string) | (T & undefined)) => void -> : ^ ^^^^^^ ^ ^ ^^^^^^^^^^ +> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & undefined) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,7 +46,7 @@ function f2(x: T & string | T & undefined) { function f3(x: T & string | T & number) { >f3 : (x: (T & string) | (T & number)) => void -> : ^ ^^^^^^ ^ ^ ^^^^^^^^^^ +> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & number) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -73,7 +73,7 @@ function f3(x: T & string | T & number) { function f4(x: T & 1 | T & 2) { >f4 : (x: (T & 1) | (T & 2)) => void -> : ^ ^^^^^^ ^ ^ ^^^^^^^^^^ +> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & 1) | (T & 2) > : ^^^^^^^^^^^^^^^^^ @@ -101,7 +101,7 @@ function f4(x: T & 1 | T & 2) { function f5(x: T & number) { >f5 : (x: T & number) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T & number > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/intersectionOfMixinConstructorTypeAndNonConstructorType.types b/tests/baselines/reference/intersectionOfMixinConstructorTypeAndNonConstructorType.types index 2fdf663bec8fa..498cbd9d454b4 100644 --- a/tests/baselines/reference/intersectionOfMixinConstructorTypeAndNonConstructorType.types +++ b/tests/baselines/reference/intersectionOfMixinConstructorTypeAndNonConstructorType.types @@ -5,7 +5,7 @@ declare let x: {foo: undefined} & {new(...args: any[]): any}; >x : { foo: undefined; } & (new (...args: any[]) => any) -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ >foo : undefined > : ^^^^^^^^^ >args : any[] @@ -14,5 +14,5 @@ declare let x: {foo: undefined} & {new(...args: any[]): any}; new x(); >new x() : any >x : { foo: undefined; } & (new (...args: any[]) => any) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types b/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types index 5fdba91dd189f..195193ce98e56 100644 --- a/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types +++ b/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types @@ -12,7 +12,7 @@ interface Component

    { interface Props { children?: (items: {x: number}) => void >children : ((items: { x: number; }) => void) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >items : { x: number; } > : ^^^^^ ^^^ >x : number @@ -21,7 +21,7 @@ interface Props { declare function f(i: Component): void; >f : (i: Component) => void -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^ >i : Component > : ^^^^^^^^^^^^ @@ -29,23 +29,23 @@ f({ >f({ props: { children: (({ x }) => { }) }}) : void > : ^^^^ >f : (i: Component) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ props: { children: (({ x }) => { }) }} : { props: { children: ({ x }: { x: number; }) => void; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ props: { >props : { children: ({ x }: { x: number; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ children: (({ x }) => { }) } : { children: ({ x }: { x: number; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ children: (({ x }) => { }) >children : ({ x }: { x: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >(({ x }) => { }) : ({ x }: { x: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >({ x }) => { } : ({ x }: { x: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ } diff --git a/tests/baselines/reference/intersectionPropertyCheck.types b/tests/baselines/reference/intersectionPropertyCheck.types index 489943938c2bf..c2e3dda073f95 100644 --- a/tests/baselines/reference/intersectionPropertyCheck.types +++ b/tests/baselines/reference/intersectionPropertyCheck.types @@ -51,7 +51,7 @@ let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak objec function foo(x: { a?: string }, y: T & { a: boolean }) { >foo : (x: { a?: string; }, y: T & { a: boolean; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { a?: string; } > : ^^^^^^ ^^^ >a : string | undefined @@ -80,7 +80,7 @@ interface Test { function test(value: T): Test { >test : (value: T) => Test -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ diff --git a/tests/baselines/reference/intersectionReduction.types b/tests/baselines/reference/intersectionReduction.types index 135c1dd36c688..6f56601b860d2 100644 --- a/tests/baselines/reference/intersectionReduction.types +++ b/tests/baselines/reference/intersectionReduction.types @@ -267,7 +267,7 @@ type E = { kind: 'e', foo: unknown }; declare function f10(x: { foo: T }): T; >f10 : (x: { foo: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { foo: T; } > : ^^^^^^^ ^^^ >foo : T @@ -287,7 +287,7 @@ let r1 = f10(a1); // unknown >f10(a1) : unknown > : ^^^^^^^ >f10 : (x: { foo: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a1 : A | D > : ^^^^^ @@ -297,7 +297,7 @@ let r2 = f10(a2); // string >f10(a2) : string > : ^^^^^^ >f10 : (x: { foo: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a2 : A > : ^ @@ -423,9 +423,9 @@ t2 = t1; const f1 = (t: "a" | ("b" & "c")): "a" => t; >f1 : (t: "a" | ("b" & "c")) => "a" -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" -> : ^^^^ ^^^^^ +> : >t : "a" > : ^^^ >t : "a" @@ -442,9 +442,9 @@ type Container = { const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; >f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : >t : Container<"a"> > : ^^^^^^^^^^^^^^ >t : Container<"a"> @@ -452,9 +452,9 @@ const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; >f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : >t : Container<"a"> > : ^^^^^^^^^^^^^^ >dataB : boolean @@ -464,9 +464,9 @@ const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; >f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -> : ^^^^ ^^^^^ +> : >t : number > : ^^^^^^ >dataB : boolean @@ -508,7 +508,7 @@ const b: B2 = shouldBeB; // works function inGeneric(alsoShouldBeB: T & B2) { >inGeneric : (alsoShouldBeB: T & B2) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >alsoShouldBeB : T & B2 > : ^^^^^^ @@ -549,7 +549,7 @@ declare class CB { kind: 'b'; b: string; y: number }; function bar(x: T & CA) { >bar : (x: T & CA) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T & CA > : ^^^^^^ diff --git a/tests/baselines/reference/intersectionReductionStrict.types b/tests/baselines/reference/intersectionReductionStrict.types index 5c6e87f340a72..af0635d487244 100644 --- a/tests/baselines/reference/intersectionReductionStrict.types +++ b/tests/baselines/reference/intersectionReductionStrict.types @@ -371,9 +371,9 @@ t2 = t1; const f1 = (t: "a" | ("b" & "c")): "a" => t; >f1 : (t: "a" | ("b" & "c")) => "a" -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: "a" | ("b" & "c")): "a" => t : (t: "a" | ("b" & "c")) => "a" -> : ^^^^ ^^^^^ +> : >t : "a" > : ^^^ >t : "a" @@ -390,9 +390,9 @@ type Container = { const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t; >f2 : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & Container<"c">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : >t : Container<"a"> > : ^^^^^^^^^^^^^^ >t : Container<"a"> @@ -400,9 +400,9 @@ const f2 = (t: Container<"a"> | (Container<"b"> & Container<"c">)): Container<"a const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t; >f3 : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container<"a">)): Container<"a"> => t : (t: Container<"a"> | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => Container<"a"> -> : ^^^^ ^^^^^ +> : >t : Container<"a"> > : ^^^^^^^^^^^^^^ >dataB : boolean @@ -412,9 +412,9 @@ const f3 = (t: Container<"a"> | (Container<"b"> & { dataB: boolean } & Container const f4 = (t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t; >f4 : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(t: number | (Container<"b"> & { dataB: boolean } & Container<"a">)): number => t : (t: number | (Container<"b"> & { dataB: boolean; } & Container<"a">)) => number -> : ^^^^ ^^^^^ +> : >t : number > : ^^^^^^ >dataB : boolean diff --git a/tests/baselines/reference/intersectionSatisfiesConstraint.types b/tests/baselines/reference/intersectionSatisfiesConstraint.types index 05c38352d60bb..af3abf6b8a648 100644 --- a/tests/baselines/reference/intersectionSatisfiesConstraint.types +++ b/tests/baselines/reference/intersectionSatisfiesConstraint.types @@ -15,9 +15,9 @@ interface SecondInterface { const myFirstFunction = (param1: T) => { >myFirstFunction : (param1: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(param1: T) => { const newParam: T & { otherProperty: number } = Object.assign(param1, { otherProperty: 3 }) mySecondFunction(newParam)} : (param1: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >param1 : T > : ^ @@ -29,11 +29,11 @@ const myFirstFunction = (param1: T) >Object.assign(param1, { otherProperty: 3 }) : T & { otherProperty: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.assign : { (target: T_1, source: U): T_1 & U; (target: T_2, source1: U_1, source2: V): T_2 & U_1 & V; (target: T_3, source1: U_2, source2: V_1, source3: W): T_3 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T_1, source: U): T_1 & U; (target: T_2, source1: U_1, source2: V): T_2 & U_1 & V; (target: T_3, source1: U_2, source2: V_1, source3: W): T_3 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >param1 : T > : ^ >{ otherProperty: 3 } : { otherProperty: number; } @@ -47,16 +47,16 @@ const myFirstFunction = (param1: T) >mySecondFunction(newParam) : { commonProperty: number; otherProperty: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mySecondFunction : (newParam: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >newParam : (FirstInterface | SecondInterface) & { otherProperty: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } const mySecondFunction = (newParam: T) => { >mySecondFunction : (newParam: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^ >(newParam: T) => { return newParam} : (newParam: T) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^ +> : >commonProperty : number > : ^^^^^^ >otherProperty : number diff --git a/tests/baselines/reference/intersectionThisTypes.types b/tests/baselines/reference/intersectionThisTypes.types index 4d717e4c4ad8b..ae28ef9f2b513 100644 --- a/tests/baselines/reference/intersectionThisTypes.types +++ b/tests/baselines/reference/intersectionThisTypes.types @@ -31,7 +31,7 @@ type Thing4 = Thing3 & string[]; function f1(t: Thing3) { >f1 : (t: Thing3) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : Thing3 > : ^^^^^^ @@ -84,7 +84,7 @@ interface Thing5 extends Thing4 { function f2(t: Thing5) { >f2 : (t: Thing5) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >t : Thing5 > : ^^^^^^ @@ -132,7 +132,7 @@ function f2(t: Thing5) { interface Component { extend(props: T): this & T; >extend : (props: T) => this & T -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >props : T > : ^ } @@ -145,7 +145,7 @@ interface Label extends Component { function test(label: Label) { >test : (label: Label) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >label : Label > : ^^^^^ @@ -153,17 +153,17 @@ function test(label: Label) { >extended : Label & { id: number; } & { tag: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >label.extend({ id: 67 }).extend({ tag: "hello" }) : Label & { id: number; } & { tag: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^ >label.extend({ id: 67 }).extend : (props: T) => Label & { id: number; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >label.extend({ id: 67 }) : Label & { id: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ >label.extend : (props: T) => Label & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^ >label : Label > : ^^^^^ >extend : (props: T) => Label & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^ >{ id: 67 } : { id: number; } > : ^^^^^^^^^^^^^^^ >id : number @@ -171,7 +171,7 @@ function test(label: Label) { >67 : 67 > : ^^ >extend : (props: T) => Label & { id: number; } & T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ tag: "hello" } : { tag: string; } > : ^^^^^^^^^^^^^^^^ >tag : string diff --git a/tests/baselines/reference/intersectionTypeInference.types b/tests/baselines/reference/intersectionTypeInference.types index 65afe86f4909c..f29386f4ce5c3 100644 --- a/tests/baselines/reference/intersectionTypeInference.types +++ b/tests/baselines/reference/intersectionTypeInference.types @@ -3,7 +3,7 @@ === intersectionTypeInference.ts === function extend(obj1: T, obj2: U): T & U { >extend : (obj1: T, obj2: U) => T & U -> : ^ ^^ ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >obj1 : T > : ^ >obj2 : U @@ -54,9 +54,9 @@ var x = extend({ a: "hello" }, { b: 42 }); >x : { a: string; } & { b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >extend({ a: "hello" }, { b: 42 }) : { a: string; } & { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >extend : (obj1: T, obj2: U) => T & U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >{ a: "hello" } : { a: string; } > : ^^^^^^^^^^^^^^ >a : string @@ -104,7 +104,7 @@ interface B { function foo(obj: A & B): T | U { >foo : (obj: A & B) => T | U -> : ^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >obj : A & B > : ^^^^^^^^^^^ @@ -119,7 +119,7 @@ var z = foo({ a: "hello", b: 42 }); >foo({ a: "hello", b: 42 }) : string | number > : ^^^^^^^^^^^^^^^ >foo : (obj: A & B) => T | U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^ >{ a: "hello", b: 42 } : { a: string; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string diff --git a/tests/baselines/reference/intersectionTypeInference1.types b/tests/baselines/reference/intersectionTypeInference1.types index 49963c57c7478..f704c5504a7ab 100644 --- a/tests/baselines/reference/intersectionTypeInference1.types +++ b/tests/baselines/reference/intersectionTypeInference1.types @@ -5,15 +5,15 @@ function alert(s: string) {} >alert : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ const parameterFn = (props:{store:string}) => alert(props.store) >parameterFn : (props: { store: string; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(props:{store:string}) => alert(props.store) : (props: { store: string; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : >props : { store: string; } > : ^^^^^^^^^ ^^^ >store : string @@ -21,7 +21,7 @@ const parameterFn = (props:{store:string}) => alert(props.store) >alert(props.store) : void > : ^^^^ >alert : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >props.store : string > : ^^^^^^ >props : { store: string; } @@ -31,17 +31,17 @@ const parameterFn = (props:{store:string}) => alert(props.store) const brokenFunction = (f: (p: {dispatch: number} & OwnProps) => void) => (o: OwnProps) => o >brokenFunction : (f: (p: { dispatch: number; } & OwnProps) => void) => (o: OwnProps) => OwnProps -> : ^ ^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >(f: (p: {dispatch: number} & OwnProps) => void) => (o: OwnProps) => o : (f: (p: { dispatch: number; } & OwnProps) => void) => (o: OwnProps) => OwnProps -> : ^ ^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^ +> : >f : (p: { dispatch: number; } & OwnProps) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : { dispatch: number; } & OwnProps > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >dispatch : number > : ^^^^^^ >(o: OwnProps) => o : (o: OwnProps) => OwnProps -> : ^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >o : OwnProps > : ^^^^^^^^ >o : OwnProps @@ -51,13 +51,13 @@ export const Form3 = brokenFunction(parameterFn)({store: "hello"}) >Form3 : { store: string; } > : ^^^^^^^^^^^^^^^^^^ >brokenFunction(parameterFn)({store: "hello"}) : { store: string; } -> : ^^^^^^^^^^^^^^^^^^ +> : >brokenFunction(parameterFn) : (o: { store: string; }) => { store: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >brokenFunction : (f: (p: { dispatch: number; } & OwnProps) => void) => (o: OwnProps) => OwnProps -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^ >parameterFn : (props: { store: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{store: "hello"} : { store: string; } > : ^^^^^^^^^^^^^^^^^^ >store : string diff --git a/tests/baselines/reference/intersectionTypeInference2.types b/tests/baselines/reference/intersectionTypeInference2.types index 98da168a23693..e60d20b21f256 100644 --- a/tests/baselines/reference/intersectionTypeInference2.types +++ b/tests/baselines/reference/intersectionTypeInference2.types @@ -3,7 +3,7 @@ === intersectionTypeInference2.ts === declare function f(x: { prop: T }): T; >f : (x: { prop: T; }) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : { prop: T; } > : ^^^^^^^^ ^^^ >prop : T @@ -27,7 +27,7 @@ f(a); // never >f(a) : never > : ^^^^^ >f : (x: { prop: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : { prop: string; } & { prop: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -35,7 +35,7 @@ f(b); // never >f(b) : never > : ^^^^^ >f : (x: { prop: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >b : { prop: never; } > : ^^^^^^^^^^^^^^^^ @@ -43,7 +43,7 @@ f(b); // never declare function f2(obj: {[K in keyof T]: T[K]}, key: Key): T[Key]; >f2 : (obj: { [K in keyof T]: T[K]; }, key: Key) => T[Key] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : { [K in keyof T]: T[K]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >key : Key @@ -61,7 +61,7 @@ f2(obj, 'a'); >f2(obj, 'a') : string > : ^^^^^^ >f2 : (obj: { [K in keyof T]: T[K]; }, key: Key) => T[Key] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >obj : { a: string; } & { b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -71,7 +71,7 @@ f2(obj, 'b'); >f2(obj, 'b') : string > : ^^^^^^ >f2 : (obj: { [K in keyof T]: T[K]; }, key: Key) => T[Key] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^ >obj : { a: string; } & { b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'b' : "b" diff --git a/tests/baselines/reference/intersectionTypeInference3.types b/tests/baselines/reference/intersectionTypeInference3.types index 7010a62376e17..077876f7b747a 100644 --- a/tests/baselines/reference/intersectionTypeInference3.types +++ b/tests/baselines/reference/intersectionTypeInference3.types @@ -37,27 +37,27 @@ const c1 = Array.from(a).concat(Array.from(b)); >Array.from(a).concat(Array.from(b)) : A[] > : ^^^ >Array.from(a).concat : { (...items: ConcatArray[]): A[]; (...items: (A | ConcatArray)[]): A[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array.from(a) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >a : Set > : ^^^^^^ >concat : { (...items: ConcatArray[]): A[]; (...items: (A | ConcatArray)[]): A[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array.from(b) : A[] > : ^^^ >Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T_2[]; (iterable: Iterable | ArrayLike, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^ >b : Set > : ^^^^^^ diff --git a/tests/baselines/reference/intersectionTypeNormalization.types b/tests/baselines/reference/intersectionTypeNormalization.types index 764d59cf2af49..3aa375df6a06d 100644 --- a/tests/baselines/reference/intersectionTypeNormalization.types +++ b/tests/baselines/reference/intersectionTypeNormalization.types @@ -161,7 +161,7 @@ type IntersectionInline = { kind: 'int', num: number } & ToString function getValueAsString(value: IntersectionFail): string { >getValueAsString : (value: IntersectionFail) => string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : IntersectionFail > : ^^^^^^^^^^^^^^^^ @@ -307,7 +307,7 @@ type FooBar = Foo & Bar; function foo(so: any) { >foo : (so: any) => enums.Genre -> : ^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >so : any const val = so as FooBar; diff --git a/tests/baselines/reference/intersectionType_useDefineForClassFields.types b/tests/baselines/reference/intersectionType_useDefineForClassFields.types index 408ca02a8c015..7b66a5e1ecd5e 100644 --- a/tests/baselines/reference/intersectionType_useDefineForClassFields.types +++ b/tests/baselines/reference/intersectionType_useDefineForClassFields.types @@ -10,7 +10,7 @@ type Foo = { function bar(_p: T): { new(): Foo } { >bar : (_p: T) => { new (): Foo; } -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >_p : T > : ^ @@ -24,7 +24,7 @@ class Baz extends bar({ x: 1 }) { >bar({ x: 1 }) : Foo<{ x: number; }> > : ^^^^^^^^^^^^^^^^^^^ >bar : (_p: T) => new () => Foo -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number diff --git a/tests/baselines/reference/intersectionWithConflictingPrivates.types b/tests/baselines/reference/intersectionWithConflictingPrivates.types index 798be21c8aaa1..8b2bc3920d5a9 100644 --- a/tests/baselines/reference/intersectionWithConflictingPrivates.types +++ b/tests/baselines/reference/intersectionWithConflictingPrivates.types @@ -43,7 +43,7 @@ ab = {}; function f1(node: A | B) { >f1 : (node: A | B) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >node : A | B > : ^^^^^ @@ -145,7 +145,7 @@ class Foo { private async foo(node: CommitFileNode | ResultsFileNode | StashFileNode) { >foo : (node: CommitFileNode | ResultsFileNode | StashFileNode) => Promise -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >node : CommitFileNode | ResultsFileNode | StashFileNode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -199,19 +199,19 @@ class Foo { > : ^^^^^^^^^ >this.bar(node) : Promise > : ^^^^^^^^^^^^^^^^^^ ->this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >node : CommitFileNode | ResultsFileNode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } private async bar(node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) { >bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise -> : ^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >node : CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >options : {} | undefined @@ -221,11 +221,11 @@ class Foo { >Promise.resolve(undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/intersectionWithIndexSignatures.types b/tests/baselines/reference/intersectionWithIndexSignatures.types index 26ba4013ddb61..469787253bbf4 100644 --- a/tests/baselines/reference/intersectionWithIndexSignatures.types +++ b/tests/baselines/reference/intersectionWithIndexSignatures.types @@ -116,8 +116,8 @@ declare const q: s; q["asd"].a.substr(1); >q["asd"].a.substr(1) : string > : ^^^^^^ ->q["asd"].a.substr : (from: number, length?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>q["asd"].a.substr : (from: number, length?: number) => string +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >q["asd"].a : string > : ^^^^^^ >q["asd"] : { a: string; } @@ -128,8 +128,8 @@ q["asd"].a.substr(1); > : ^^^^^ >a : string > : ^^^^^^ ->substr : (from: number, length?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>substr : (from: number, length?: number) => string +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/intersectionWithUnionConstraint.types b/tests/baselines/reference/intersectionWithUnionConstraint.types index 5a9080820fdcc..687d74a35689d 100644 --- a/tests/baselines/reference/intersectionWithUnionConstraint.types +++ b/tests/baselines/reference/intersectionWithUnionConstraint.types @@ -3,7 +3,7 @@ === intersectionWithUnionConstraint.ts === function f1(x: T & U) { >f1 : (x: T & U) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T & U > : ^^^^^ @@ -17,7 +17,7 @@ function f1(x: T & U) { function f2(x: T & U) { >f2 : (x: T & U) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T & U > : ^^^^^ @@ -64,7 +64,7 @@ type T1 = (string | number | undefined) & (string | null | undefined); // strin function f3(x: T & (number | object | undefined)) { >f3 : (x: T & (number | object | undefined)) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : (T & undefined) | (T & number) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -77,7 +77,7 @@ function f3(x: T & (number | object | und function f4(x: T & (number | object)) { >f4 : (x: T & (number | object)) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T & number > : ^^^^^^^^^^ @@ -90,7 +90,7 @@ function f4(x: T & (number | object)) { function f5(x: keyof T & U) { >f5 : (x: keyof T & U) => void -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : keyof T & U > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/intersectionsAndEmptyObjects.types b/tests/baselines/reference/intersectionsAndEmptyObjects.types index 43fc0952a20c6..d0010d188e6dc 100644 --- a/tests/baselines/reference/intersectionsAndEmptyObjects.types +++ b/tests/baselines/reference/intersectionsAndEmptyObjects.types @@ -89,9 +89,9 @@ type Dictionary = { [name: string]: string }; const intersectDictionaries = ( >intersectDictionaries : (d1: F1, d2: F2) => F1 & F2 -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >( d1: F1, d2: F2,): F1 & F2 => Object.assign({}, d1, d2) : (d1: F1, d2: F2) => F1 & F2 -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^ +> : d1: F1, >d1 : F1 @@ -105,11 +105,11 @@ const intersectDictionaries = ( >Object.assign({}, d1, d2) : {} & F1 & F2 > : ^^^^^^^^^^^^ >Object.assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >{} : {} > : ^^ >d1 : F1 @@ -119,9 +119,9 @@ const intersectDictionaries = ( const testDictionary = (_value: T) => { }; >testDictionary : (_value: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(_value: T) => { } : (_value: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >_value : T > : ^ @@ -135,7 +135,7 @@ testDictionary(d1); >testDictionary(d1) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d1 : {} > : ^^ @@ -143,19 +143,19 @@ const d2 = intersectDictionaries(d1, d1); >d2 : {} > : ^^ >intersectDictionaries(d1, d1) : {} -> : ^^ +> : >intersectDictionaries : (d1: F1, d2: F2) => F1 & F2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >d1 : {} > : ^^ >d1 : {} -> : ^^ +> : testDictionary(d2); >testDictionary(d2) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d2 : {} > : ^^ @@ -176,7 +176,7 @@ testDictionary(d3); >testDictionary(d3) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d3 : { s: string; } > : ^^^^^^^^^^^^^^ @@ -184,9 +184,9 @@ const d4 = intersectDictionaries(d1, d3); >d4 : { s: string; } > : ^^^^^^^^^^^^^^ >intersectDictionaries(d1, d3) : { s: string; } -> : ^^^^^^^^^^^^^^ +> : >intersectDictionaries : (d1: F1, d2: F2) => F1 & F2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >d1 : {} > : ^^ >d3 : { s: string; } @@ -196,7 +196,7 @@ testDictionary(d4); >testDictionary(d4) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d4 : { s: string; } > : ^^^^^^^^^^^^^^ @@ -204,9 +204,9 @@ const d5 = intersectDictionaries(d3, d1); >d5 : { s: string; } > : ^^^^^^^^^^^^^^ >intersectDictionaries(d3, d1) : { s: string; } -> : ^^^^^^^^^^^^^^ +> : >intersectDictionaries : (d1: F1, d2: F2) => F1 & F2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >d3 : { s: string; } > : ^^^^^^^^^^^^^^ >d1 : {} @@ -216,7 +216,7 @@ testDictionary(d5); >testDictionary(d5) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d5 : { s: string; } > : ^^^^^^^^^^^^^^ @@ -224,19 +224,19 @@ const d6 = intersectDictionaries(d3, d3); >d6 : { s: string; } > : ^^^^^^^^^^^^^^ >intersectDictionaries(d3, d3) : { s: string; } -> : ^^^^^^^^^^^^^^ +> : >intersectDictionaries : (d1: F1, d2: F2) => F1 & F2 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >d3 : { s: string; } > : ^^^^^^^^^^^^^^ >d3 : { s: string; } -> : ^^^^^^^^^^^^^^ +> : testDictionary(d6); >testDictionary(d6) : void > : ^^^^ >testDictionary : (_value: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >d6 : { s: string; } > : ^^^^^^^^^^^^^^ @@ -321,7 +321,7 @@ type Foo2 = { x: string } & { [K in number]: Foo2 }; declare function mock(_: Promise): {} & M; >mock : (_: Promise) => {} & M -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >_ : Promise > : ^^^^^^^^^^ @@ -329,7 +329,7 @@ mock(import('./ex')) >mock(import('./ex')) : {} > : ^^ >mock : (_: Promise) => {} & M -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >import('./ex') : Promise<{ default: typeof import("ex"); }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'./ex' : "./ex" diff --git a/tests/baselines/reference/intersectionsAndOptionalProperties.types b/tests/baselines/reference/intersectionsAndOptionalProperties.types index 38a4d76e1b356..33a75d8e9b47c 100644 --- a/tests/baselines/reference/intersectionsAndOptionalProperties.types +++ b/tests/baselines/reference/intersectionsAndOptionalProperties.types @@ -61,7 +61,7 @@ type From = { field: null } & Omit; function foo(v: From) { >foo : (v: From) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : From > : ^^^^ diff --git a/tests/baselines/reference/intersectionsOfLargeUnions.types b/tests/baselines/reference/intersectionsOfLargeUnions.types index 9769defd77842..8109d21de0df4 100644 --- a/tests/baselines/reference/intersectionsOfLargeUnions.types +++ b/tests/baselines/reference/intersectionsOfLargeUnions.types @@ -13,7 +13,7 @@ Symbol count: 27,000 / 27,000 (nearest 500) export function assertIsElement(node: Node | null): node is Element { >assertIsElement : (node: Node | null) => node is Element -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >node : Node | null > : ^^^^^^^^^^^ @@ -44,7 +44,7 @@ export function assertIsElement(node: Node | null): node is Element { export function assertNodeTagName< >assertNodeTagName : (node: Node | null, tagName: T) => node is U -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ T extends keyof ElementTagNameMap, U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { @@ -57,7 +57,7 @@ export function assertNodeTagName< >assertIsElement(node) : boolean > : ^^^^^^^ >assertIsElement : (node: Node | null) => node is Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >node : Node | null > : ^^^^^^^^^^^ @@ -92,7 +92,7 @@ export function assertNodeTagName< export function assertNodeProperty< >assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ T extends keyof ElementTagNameMap, P extends keyof ElementTagNameMap[T], @@ -110,7 +110,7 @@ export function assertNodeProperty< >assertNodeTagName(node, tagName) : boolean > : ^^^^^^^ >assertNodeTagName : (node: Node | null, tagName: T_1) => node is U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >node : Node | null > : ^^^^^^^^^^^ >tagName : T diff --git a/tests/baselines/reference/intersectionsOfLargeUnions2.types b/tests/baselines/reference/intersectionsOfLargeUnions2.types index 2176de1a6ae35..81b32b2693564 100644 --- a/tests/baselines/reference/intersectionsOfLargeUnions2.types +++ b/tests/baselines/reference/intersectionsOfLargeUnions2.types @@ -30,7 +30,7 @@ declare global { export function assertIsElement(node: Node | null): node is Element { >assertIsElement : (node: Node | null) => node is Element -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >node : Node | null > : ^^^^^^^^^^^ @@ -61,7 +61,7 @@ export function assertIsElement(node: Node | null): node is Element { export function assertNodeTagName< >assertNodeTagName : (node: Node | null, tagName: T) => node is U -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ T extends keyof ElementTagNameMap, U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U { @@ -74,7 +74,7 @@ export function assertNodeTagName< >assertIsElement(node) : boolean > : ^^^^^^^ >assertIsElement : (node: Node | null) => node is Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >node : Node | null > : ^^^^^^^^^^^ @@ -109,7 +109,7 @@ export function assertNodeTagName< export function assertNodeProperty< >assertNodeProperty : (node: Node | null, tagName: T, prop: P, value: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ T extends keyof ElementTagNameMap, P extends keyof ElementTagNameMap[T], @@ -127,7 +127,7 @@ export function assertNodeProperty< >assertNodeTagName(node, tagName) : boolean > : ^^^^^^^ >assertNodeTagName : (node: Node | null, tagName: T_1) => node is U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >node : Node | null > : ^^^^^^^^^^^ >tagName : T diff --git a/tests/baselines/reference/intlDateTimeFormatRangeES2021.types b/tests/baselines/reference/intlDateTimeFormatRangeES2021.types index 2ff6c11ff91ab..1ca9195f381c2 100644 --- a/tests/baselines/reference/intlDateTimeFormatRangeES2021.types +++ b/tests/baselines/reference/intlDateTimeFormatRangeES2021.types @@ -4,8 +4,8 @@ new Intl.DateTimeFormat().formatRange(new Date(0), new Date()); >new Intl.DateTimeFormat().formatRange(new Date(0), new Date()) : string > : ^^^^^^ ->new Intl.DateTimeFormat().formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new Intl.DateTimeFormat().formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >new Intl.DateTimeFormat() : Intl.DateTimeFormat > : ^^^^^^^^^^^^^^^^^^^ >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor @@ -14,8 +14,8 @@ new Intl.DateTimeFormat().formatRange(new Date(0), new Date()); > : ^^^^^^^^^^^ >DateTimeFormat : Intl.DateTimeFormatConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->formatRange : (startDate: number | bigint | Date, endDate: number | bigint | Date) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>formatRange : (startDate: Date | number | bigint, endDate: Date | number | bigint) => string +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >new Date(0) : Date > : ^^^^ >Date : DateConstructor @@ -32,8 +32,8 @@ const [ part ] = new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000) : Intl.DateTimeRangeFormatPart[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->new Intl.DateTimeFormat().formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new Intl.DateTimeFormat().formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.DateTimeFormat() : Intl.DateTimeFormat > : ^^^^^^^^^^^^^^^^^^^ >Intl.DateTimeFormat : Intl.DateTimeFormatConstructor @@ -42,8 +42,8 @@ const [ part ] = new Intl.DateTimeFormat().formatRangeToParts(1000, 1000000000); > : ^^^^^^^^^^^ >DateTimeFormat : Intl.DateTimeFormatConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->formatRangeToParts : (startDate: number | bigint | Date, endDate: number | bigint | Date) => Intl.DateTimeRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>formatRangeToParts : (startDate: Date | number | bigint, endDate: Date | number | bigint) => Intl.DateTimeRangeFormatPart[] +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1000 : 1000 > : ^^^^ >1000000000 : 1000000000 diff --git a/tests/baselines/reference/intlNumberFormatES2023.types b/tests/baselines/reference/intlNumberFormatES2023.types index 79ef48966ce44..21832aa93cf0b 100644 --- a/tests/baselines/reference/intlNumberFormatES2023.types +++ b/tests/baselines/reference/intlNumberFormatES2023.types @@ -159,7 +159,7 @@ new Intl.NumberFormat('en-GB').formatRange(10, 100); >new Intl.NumberFormat('en-GB').formatRange(10, 100) : string > : ^^^^^^ >new Intl.NumberFormat('en-GB').formatRange : (start: number | bigint, end: number | bigint) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >new Intl.NumberFormat('en-GB') : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -171,7 +171,7 @@ new Intl.NumberFormat('en-GB').formatRange(10, 100); >'en-GB' : "en-GB" > : ^^^^^^^ >formatRange : (start: number | bigint, end: number | bigint) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >10 : 10 > : ^^ >100 : 100 @@ -181,7 +181,7 @@ new Intl.NumberFormat('en-GB').formatRange(10n, 1000n); >new Intl.NumberFormat('en-GB').formatRange(10n, 1000n) : string > : ^^^^^^ >new Intl.NumberFormat('en-GB').formatRange : (start: number | bigint, end: number | bigint) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >new Intl.NumberFormat('en-GB') : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -193,7 +193,7 @@ new Intl.NumberFormat('en-GB').formatRange(10n, 1000n); >'en-GB' : "en-GB" > : ^^^^^^^ >formatRange : (start: number | bigint, end: number | bigint) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >10n : 10n > : ^^^ >1000n : 1000n @@ -205,7 +205,7 @@ new Intl.NumberFormat('en-GB').formatRangeToParts(10, 1000)[0]; >new Intl.NumberFormat('en-GB').formatRangeToParts(10, 1000) : Intl.NumberRangeFormatPart[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat('en-GB').formatRangeToParts : (start: number | bigint, end: number | bigint) => Intl.NumberRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat('en-GB') : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -217,7 +217,7 @@ new Intl.NumberFormat('en-GB').formatRangeToParts(10, 1000)[0]; >'en-GB' : "en-GB" > : ^^^^^^^ >formatRangeToParts : (start: number | bigint, end: number | bigint) => Intl.NumberRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >10 : 10 > : ^^ >1000 : 1000 @@ -231,7 +231,7 @@ new Intl.NumberFormat('en-GB').formatRangeToParts(10n, 1000n)[0]; >new Intl.NumberFormat('en-GB').formatRangeToParts(10n, 1000n) : Intl.NumberRangeFormatPart[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat('en-GB').formatRangeToParts : (start: number | bigint, end: number | bigint) => Intl.NumberRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Intl.NumberFormat('en-GB') : Intl.NumberFormat > : ^^^^^^^^^^^^^^^^^ >Intl.NumberFormat : Intl.NumberFormatConstructor @@ -243,7 +243,7 @@ new Intl.NumberFormat('en-GB').formatRangeToParts(10n, 1000n)[0]; >'en-GB' : "en-GB" > : ^^^^^^^ >formatRangeToParts : (start: number | bigint, end: number | bigint) => Intl.NumberRangeFormatPart[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >10n : 10n > : ^^^ >1000n : 1000n diff --git a/tests/baselines/reference/intraExpressionInferences.types b/tests/baselines/reference/intraExpressionInferences.types index 4402d130bd4d0..854f3bc0bd0b5 100644 --- a/tests/baselines/reference/intraExpressionInferences.types +++ b/tests/baselines/reference/intraExpressionInferences.types @@ -5,19 +5,19 @@ declare function callIt(obj: { >callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : { produce: (n: number) => T; consume: (x: T) => void; } > : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ produce: (n: number) => T, >produce : (n: number) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : number > : ^^^^^^ consume: (x: T) => void >consume : (x: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ @@ -27,33 +27,33 @@ callIt({ >callIt({ produce: () => 0, consume: n => n.toFixed()}) : void > : ^^^^ >callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ produce: () => 0, consume: n => n.toFixed()} : { produce: () => number; consume: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ produce: () => 0, >produce : () => number > : ^^^^^^^^^^^^ >() => 0 : () => number -> : ^^^^^^^^^^^^ +> : >0 : 0 > : ^ consume: n => n.toFixed() >consume : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); @@ -61,15 +61,15 @@ callIt({ >callIt({ produce: _a => 0, consume: n => n.toFixed(),}) : void > : ^^^^ >callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ produce: _a => 0, consume: n => n.toFixed(),} : { produce: (_a: number) => number; consume: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ produce: _a => 0, >produce : (_a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >_a => 0 : (_a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >_a : number > : ^^^^^^ >0 : 0 @@ -77,19 +77,19 @@ callIt({ consume: n => n.toFixed(), >consume : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); @@ -97,9 +97,9 @@ callIt({ >callIt({ produce() { return 0; }, consume: n => n.toFixed()}) : void > : ^^^^ >callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ produce() { return 0; }, consume: n => n.toFixed()} : { produce(): number; consume: (n: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ produce() { >produce : () => number @@ -112,27 +112,27 @@ callIt({ }, consume: n => n.toFixed() >consume : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); declare function callItT(obj: [(n: number) => T, (x: T) => void]): void; >callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : [(n: number) => T, (x: T) => void] -> : ^^^^^ ^^^^^ ^^^^^^ ^^^^^ ^ +> : ^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ ^ >n : number > : ^^^^^^ >x : T @@ -142,73 +142,73 @@ callItT([() => 0, n => n.toFixed()]); >callItT([() => 0, n => n.toFixed()]) : void > : ^^^^ >callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >[() => 0, n => n.toFixed()] : [() => number, (n: number) => string] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >() => 0 : () => number > : ^^^^^^^^^^^^ >0 : 0 > : ^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ callItT([_a => 0, n => n.toFixed()]); >callItT([_a => 0, n => n.toFixed()]) : void > : ^^^^ >callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >[_a => 0, n => n.toFixed()] : [(_a: number) => number, (n: number) => string] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >_a => 0 : (_a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >_a : number > : ^^^^^^ >0 : 0 > : ^ >n => n.toFixed() : (n: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >n.toFixed() : string > : ^^^^^^ ->n.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>n.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ // Repro from #25092 interface MyInterface { retrieveGeneric: (parameter: string) => T, >retrieveGeneric : (parameter: string) => T -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >parameter : string > : ^^^^^^ operateWithGeneric: (generic: T) => string >operateWithGeneric : (generic: T) => string -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >generic : T > : ^ } const inferTypeFn = (generic: MyInterface) => generic; >inferTypeFn : (generic: MyInterface) => MyInterface -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >(generic: MyInterface) => generic : (generic: MyInterface) => MyInterface -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +> : >generic : MyInterface > : ^^^^^^^^^^^^^^ >generic : MyInterface @@ -220,15 +220,15 @@ const myGeneric = inferTypeFn({ >inferTypeFn({ retrieveGeneric: parameter => 5, operateWithGeneric: generic => generic.toFixed()}) : MyInterface > : ^^^^^^^^^^^^^^^^^^^ >inferTypeFn : (generic: MyInterface) => MyInterface -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ retrieveGeneric: parameter => 5, operateWithGeneric: generic => generic.toFixed()} : { retrieveGeneric: (parameter: string) => number; operateWithGeneric: (generic: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ retrieveGeneric: parameter => 5, >retrieveGeneric : (parameter: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >parameter => 5 : (parameter: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >parameter : string > : ^^^^^^ >5 : 5 @@ -236,19 +236,19 @@ const myGeneric = inferTypeFn({ operateWithGeneric: generic => generic.toFixed() >operateWithGeneric : (generic: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >generic => generic.toFixed() : (generic: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >generic : number > : ^^^^^^ >generic.toFixed() : string > : ^^^^^^ ->generic.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>generic.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >generic : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }); @@ -256,13 +256,13 @@ const myGeneric = inferTypeFn({ function make(o: { mutations: M, action: (m: M) => void }) { } >make : (o: { mutations: M; action: (m: M) => void; }) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >o : { mutations: M; action: (m: M) => void; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ >mutations : M > : ^ >action : (m: M) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : M > : ^ @@ -270,9 +270,9 @@ make({ >make({ mutations: { foo() { } }, action: (a) => { a.foo() }}) : void > : ^^^^ >make : (o: { mutations: M; action: (m: M) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ mutations: { foo() { } }, action: (a) => { a.foo() }} : { mutations: { foo(): void; }; action: (a: { foo(): void; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutations: { >mutations : { foo(): void; } @@ -287,9 +287,9 @@ make({ }, action: (a) => { a.foo() } >action : (a: { foo(): void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(a) => { a.foo() } : (a: { foo(): void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : { foo(): void; } > : ^^^^^^^^^^^^^^^^ >a.foo() : void @@ -307,13 +307,13 @@ make({ declare function foo(options: { a: A, b: (a: A) => void }): void; >foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >options : { a: A; b: (a: A) => void; } > : ^^^^^ ^^^^^ ^^^ >a : A > : ^ >b : (a: A) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : A > : ^ @@ -321,21 +321,21 @@ foo({ >foo({ a: () => { return 42 }, b(a) {},}) : void > : ^^^^ >foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ a: () => { return 42 }, b(a) {},} : { a: () => 42; b(a: () => 42): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: () => { return 42 }, >a : () => 42 > : ^^^^^^^^ >() => { return 42 } : () => 42 -> : ^^^^^^^^ +> : >42 : 42 > : ^^ b(a) {}, >b : (a: () => 42) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : () => 42 > : ^^^^^^^^ @@ -345,21 +345,21 @@ foo({ >foo({ a: function () { return 42 }, b(a) {},}) : void > : ^^^^ >foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ a: function () { return 42 }, b(a) {},} : { a: () => 42; b(a: () => 42): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: function () { return 42 }, >a : () => 42 > : ^^^^^^^^ >function () { return 42 } : () => 42 -> : ^^^^^^^^ +> : >42 : 42 > : ^^ b(a) {}, >b : (a: () => 42) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : () => 42 > : ^^^^^^^^ @@ -369,9 +369,9 @@ foo({ >foo({ a() { return 42 }, b(a) {},}) : void > : ^^^^ >foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ a() { return 42 }, b(a) {},} : { a(): 42; b(a: () => 42): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a() { return 42 }, >a : () => 42 @@ -381,7 +381,7 @@ foo({ b(a) {}, >b : (a: () => 42) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : () => 42 > : ^^^^^^^^ @@ -399,13 +399,13 @@ type Chain = { b(a: R1): R2; >b : (a: R1) => R2 -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : R1 > : ^^ c(b: R2): void; >c : (b: R2) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >b : R2 > : ^^ @@ -413,7 +413,7 @@ type Chain = { function test(foo: Chain) {} >test : (foo: Chain) => void -> : ^ ^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Chain > : ^^^^^^^^^^^^^ @@ -421,23 +421,23 @@ test({ >test({ a: () => 0, b: (a) => 'a', c: (b) => { const x: string = b; }}) : void > : ^^^^ >test : (foo: Chain) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >{ a: () => 0, b: (a) => 'a', c: (b) => { const x: string = b; }} : { a: () => number; b: (a: number) => string; c: (b: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: () => 0, >a : () => number > : ^^^^^^^^^^^^ >() => 0 : () => number -> : ^^^^^^^^^^^^ +> : >0 : 0 > : ^ b: (a) => 'a', >b : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(a) => 'a' : (a: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ >'a' : "a" @@ -445,9 +445,9 @@ test({ c: (b) => { >c : (b: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(b) => { const x: string = b; } : (b: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >b : string > : ^^^^^^ @@ -463,23 +463,23 @@ test({ >test({ a: () => 0, b: (a) => a, c: (b) => { const x: number = b; }}) : void > : ^^^^ >test : (foo: Chain) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >{ a: () => 0, b: (a) => a, c: (b) => { const x: number = b; }} : { a: () => number; b: (a: number) => number; c: (b: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: () => 0, >a : () => number > : ^^^^^^^^^^^^ >() => 0 : () => number -> : ^^^^^^^^^^^^ +> : >0 : 0 > : ^ b: (a) => a, >b : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(a) => a : (a: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ >a : number @@ -487,9 +487,9 @@ test({ c: (b) => { >c : (b: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(b) => { const x: number = b; } : (b: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >b : number > : ^^^^^^ @@ -537,7 +537,7 @@ type MappingComponent = { map?: (inputs: Unwrap) => Unwrap; >map : ((inputs: Unwrap) => Unwrap) | undefined -> : ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >inputs : Unwrap > : ^^^^^^^^^ @@ -545,7 +545,7 @@ type MappingComponent = { declare function createMappingComponent(def: MappingComponent): void; >createMappingComponent : (def: MappingComponent) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >def : MappingComponent > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -553,9 +553,9 @@ createMappingComponent({ >createMappingComponent({ setup() { return { inputs: { num: new Wrapper(), str: new Wrapper() }, outputs: { bool: new Wrapper(), str: new Wrapper() } }; }, map(inputs) { return { bool: inputs.nonexistent, str: inputs.num, // Causes error } }}) : void > : ^^^^ >createMappingComponent : (def: MappingComponent) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ setup() { return { inputs: { num: new Wrapper(), str: new Wrapper() }, outputs: { bool: new Wrapper(), str: new Wrapper() } }; }, map(inputs) { return { bool: inputs.nonexistent, str: inputs.num, // Causes error } }} : { setup(): { inputs: { num: Wrapper; str: Wrapper; }; outputs: { bool: Wrapper; str: Wrapper; }; }; map(inputs: Unwrap<{ num: Wrapper; str: Wrapper; }>): { bool: any; str: number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ setup() { >setup : () => { inputs: { num: Wrapper; str: Wrapper; }; outputs: { bool: Wrapper; str: Wrapper; }; } @@ -614,7 +614,7 @@ createMappingComponent({ }, map(inputs) { >map : (inputs: Unwrap<{ num: Wrapper; str: Wrapper; }>) => { bool: any; str: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >inputs : Unwrap<{ num: Wrapper; str: Wrapper; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -649,39 +649,39 @@ createMappingComponent({ function simplified(props: { generator: () => T, receiver: (t: T) => any }) {} >simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >props : { generator: () => T; receiver: (t: T) => any; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ >generator : () => T > : ^^^^^^ >receiver : (t: T) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ function whatIWant(props: { generator: (bob: any) => T, receiver: (t: T) => any }) {} >whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >props : { generator: (bob: any) => T; receiver: (t: T) => any; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ >generator : (bob: any) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bob : any > : ^^^ >receiver : (t: T) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ function nonObject(generator: (bob: any) => T, receiver: (t: T) => any) {} >nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void -> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >generator : (bob: any) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bob : any > : ^^^ >receiver : (t: T) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ @@ -689,29 +689,29 @@ simplified({ generator: () => 123, receiver: (t) => console.log(t + 2) }) >simplified({ generator: () => 123, receiver: (t) => console.log(t + 2) }) : void > : ^^^^ >simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ generator: () => 123, receiver: (t) => console.log(t + 2) } : { generator: () => number; receiver: (t: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >generator : () => number > : ^^^^^^^^^^^^ >() => 123 : () => number -> : ^^^^^^^^^^^^ +> : >123 : 123 > : ^^^ >receiver : (t: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(t) => console.log(t + 2) : (t: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >t : number > : ^^^^^^ >console.log(t + 2) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >t + 2 : number > : ^^^^^^ >t : number @@ -723,13 +723,13 @@ whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) >whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) }) : void > : ^^^^ >whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) } : { generator: (bob: any) => 2 | 1; receiver: (t: 2 | 1) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >generator : (bob: any) => 2 | 1 -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >(bob) => bob ? 1 : 2 : (bob: any) => 2 | 1 -> : ^^^^^^^^^^^^^^^^^^^ +> : >bob : any > : ^^^ >bob ? 1 : 2 : 2 | 1 @@ -741,19 +741,19 @@ whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) >2 : 2 > : ^ >receiver : (t: 2 | 1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(t) => console.log(t + 2) : (t: 2 | 1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : >t : 2 | 1 > : ^^^^^ >console.log(t + 2) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >t + 2 : number > : ^^^^^^ >t : 2 | 1 @@ -765,9 +765,9 @@ nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) >nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) : void > : ^^^^ >nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >(bob) => bob ? 1 : 2 : (bob: any) => 2 | 1 -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >bob : any > : ^^^ >bob ? 1 : 2 : 2 | 1 @@ -779,17 +779,17 @@ nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) >2 : 2 > : ^ >(t) => console.log(t + 2) : (t: 2 | 1) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >t : 2 | 1 > : ^^^^^ >console.log(t + 2) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >t + 2 : number > : ^^^^^^ >t : 2 | 1 @@ -802,7 +802,7 @@ nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) interface Opts { fetch: (params: TParams, foo: number) => TDone, >fetch : (params: TParams, foo: number) => TDone -> : ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >params : TParams > : ^^^^^^^ >foo : number @@ -810,20 +810,20 @@ interface Opts { map: (data: TDone) => TMapped >map : (data: TDone) => TMapped -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >data : TDone > : ^^^^^ } function example(options: Opts) { >example : (options: Opts) => (params: TParams) => TMapped -> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >options : Opts > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return (params: TParams) => { >(params: TParams) => { const data = options.fetch(params, 123) return options.map(data) } : (params: TParams) => TMapped -> : ^^^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >params : TParams > : ^^^^^^^ @@ -833,11 +833,11 @@ function example(options: Opts >options.fetch(params, 123) : TDone > : ^^^^^ >options.fetch : (params: TParams, foo: number) => TDone -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^ >options : Opts > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch : (params: TParams, foo: number) => TDone -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^ ^^^^^^^^^^ >params : TParams > : ^^^^^^^ >123 : 123 @@ -847,11 +847,11 @@ function example(options: Opts >options.map(data) : TMapped > : ^^^^^^^ >options.map : (data: TDone) => TMapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >options : Opts > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (data: TDone) => TMapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >data : TDone > : ^^^^^ } @@ -869,17 +869,17 @@ interface Params { example({ >example({ fetch: (params: Params) => 123, map: (number) => String(number)}) : (params: Params) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >example : (options: Opts) => (params: TParams) => TMapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params) => 123, map: (number) => String(number)} : { fetch: (params: Params) => number; map: (number: number) => string; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ fetch: (params: Params) => 123, >fetch : (params: Params) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(params: Params) => 123 : (params: Params) => number -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : >params : Params > : ^^^^^^ >123 : 123 @@ -887,9 +887,9 @@ example({ map: (number) => String(number) >map : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(number) => String(number) : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >number : number > : ^^^^^^ >String(number) : string @@ -903,17 +903,17 @@ example({ example({ >example({ fetch: (params: Params, foo: number) => 123, map: (number) => String(number)}) : (params: Params) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >example : (options: Opts) => (params: TParams) => TMapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params, foo: number) => 123, map: (number) => String(number)} : { fetch: (params: Params, foo: number) => number; map: (number: number) => string; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ fetch: (params: Params, foo: number) => 123, >fetch : (params: Params, foo: number) => number -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >(params: Params, foo: number) => 123 : (params: Params, foo: number) => number -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^ +> : >params : Params > : ^^^^^^ >foo : number @@ -923,9 +923,9 @@ example({ map: (number) => String(number) >map : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(number) => String(number) : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >number : number > : ^^^^^^ >String(number) : string @@ -939,17 +939,17 @@ example({ example({ >example({ fetch: (params: Params, foo) => 123, map: (number) => String(number)}) : (params: Params) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >example : (options: Opts) => (params: TParams) => TMapped -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params, foo) => 123, map: (number) => String(number)} : { fetch: (params: Params, foo: number) => number; map: (number: number) => string; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ fetch: (params: Params, foo) => 123, >fetch : (params: Params, foo: number) => number -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >(params: Params, foo) => 123 : (params: Params, foo: number) => number -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >params : Params > : ^^^^^^ >foo : number @@ -959,9 +959,9 @@ example({ map: (number) => String(number) >map : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(number) => String(number) : (number: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >number : number > : ^^^^^^ >String(number) : string @@ -977,7 +977,7 @@ example({ declare const branch: >branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void -> : ^ ^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^ (_: { test: T, if: (t: T) => t is U, then: (u: U) => void }) => void >_ : { test: T; if: (t: T) => t is U; then: (u: U) => void; } @@ -985,11 +985,11 @@ declare const branch: >test : T > : ^ >if : (t: T) => t is U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ >then : (u: U) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >u : U > : ^ @@ -1001,9 +1001,9 @@ branch({ >branch({ test: x, if: (t): t is "a" => t === "a", then: u => { let test1: "a" = u }}) : void > : ^^^^ >branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ test: x, if: (t): t is "a" => t === "a", then: u => { let test1: "a" = u }} : { test: "a" | "b"; if: (t: "a" | "b") => t is "a"; then: (u: "a") => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ test: x, >test : "a" | "b" @@ -1013,9 +1013,9 @@ branch({ if: (t): t is "a" => t === "a", >if : (t: "a" | "b") => t is "a" -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(t): t is "a" => t === "a" : (t: "a" | "b") => t is "a" -> : ^^^^^^^^^^^^^^^^^^ +> : >t : "a" | "b" > : ^^^^^^^^^ >t === "a" : boolean @@ -1027,9 +1027,9 @@ branch({ then: u => { >then : (u: "a") => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >u => { let test1: "a" = u } : (u: "a") => void -> : ^^^^^^^^^^^^^^^^ +> : >u : "a" > : ^^^ @@ -1044,20 +1044,20 @@ branch({ interface Props { a: (x: string) => T; >a : (x: string) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ b: (arg: T) => void; >b : (arg: T) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ } declare function Foo(props: Props): null; >Foo : (props: Props) => null -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >props : Props > : ^^^^^^^^ @@ -1065,19 +1065,19 @@ Foo({ >Foo({ ...{ a: (x) => 10, b: (arg) => { arg.toString(); }, },}) : null > : ^^^^ >Foo : (props: Props) => null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >{ ...{ a: (x) => 10, b: (arg) => { arg.toString(); }, },} : { a: (x: string) => number; b: (arg: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ...{ >{ a: (x) => 10, b: (arg) => { arg.toString(); }, } : { a: (x: string) => number; b: (arg: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: (x) => 10, >a : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(x) => 10 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >10 : 10 @@ -1085,21 +1085,21 @@ Foo({ b: (arg) => { >b : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg) => { arg.toString(); } : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >arg : number > : ^^^^^^ arg.toString(); >arg.toString() : string > : ^^^^^^ ->arg.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }, }, @@ -1107,7 +1107,7 @@ Foo({ declare function nested(arg: { >nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arg : { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; } > : ^^^^^^^^ ^^^ @@ -1117,13 +1117,13 @@ declare function nested(arg: { produce: (arg1: number) => T; >produce : (arg1: number) => T -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : number > : ^^^^^^ consume: (arg2: T) => void; >consume : (arg2: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ @@ -1136,21 +1136,21 @@ const resNested = nested({ >nested({ prop: { produce: (a) => [a], consume: (arg) => arg.join(","), },}) : number[] > : ^^^^^^^^ >nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ prop: { produce: (a) => [a], consume: (arg) => arg.join(","), },} : { prop: { produce: (a: number) => number[]; consume: (arg: number[]) => string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ prop: { >prop : { produce: (a: number) => number[]; consume: (arg: number[]) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ produce: (a) => [a], consume: (arg) => arg.join(","), } : { produce: (a: number) => number[]; consume: (arg: number[]) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ produce: (a) => [a], >produce : (a: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(a) => [a] : (a: number) => number[] -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : number > : ^^^^^^ >[a] : number[] @@ -1160,19 +1160,19 @@ const resNested = nested({ consume: (arg) => arg.join(","), >consume : (arg: number[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => arg.join(",") : (arg: number[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : number[] > : ^^^^^^^^ >arg.join(",") : string > : ^^^^^^ ->arg.join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : number[] > : ^^^^^^^^ ->join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >"," : "," > : ^^^ @@ -1181,25 +1181,25 @@ const resNested = nested({ declare function twoConsumers(arg: { >twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >arg : { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; } > : ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ a: (arg: string) => T; >a : (arg: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ consume1: (arg1: T) => void; >consume1 : (arg1: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : T > : ^ consume2: (arg2: T) => void; >consume2 : (arg2: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ @@ -1211,15 +1211,15 @@ const resTwoConsumers = twoConsumers({ >twoConsumers({ a: (arg) => [arg], consume1: (arg1) => {}, consume2: (arg2) => {},}) : string[] > : ^^^^^^^^ >twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ a: (arg) => [arg], consume1: (arg1) => {}, consume2: (arg2) => {},} : { a: (arg: string) => string[]; consume1: (arg1: string[]) => void; consume2: (arg2: string[]) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ a: (arg) => [arg], >a : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => [arg] : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >[arg] : string[] @@ -1229,17 +1229,17 @@ const resTwoConsumers = twoConsumers({ consume1: (arg1) => {}, >consume1 : (arg1: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arg1) => {} : (arg1: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg1 : string[] > : ^^^^^^^^ consume2: (arg2) => {}, >consume2 : (arg2: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arg2) => {} : (arg2: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg2 : string[] > : ^^^^^^^^ @@ -1247,31 +1247,31 @@ const resTwoConsumers = twoConsumers({ declare function multipleProducersBeforeConsumers(arg: { >multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] -> : ^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >arg : { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ a: (arg: string) => T; >a : (arg: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ b: (arg: string) => T2; >b : (arg: string) => T2 -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ consume1: (arg1: T) => void; >consume1 : (arg1: T) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : T > : ^ consume2: (arg2: T2) => void; >consume2 : (arg2: T2) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T2 > : ^^ @@ -1283,15 +1283,15 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ >multipleProducersBeforeConsumers({ a: (arg) => [arg], b: (arg) => Number(arg), consume1: (arg1) => {}, consume2: (arg2) => {},}) : [string[], number] > : ^^^^^^^^^^^^^^^^^^ >multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >{ a: (arg) => [arg], b: (arg) => Number(arg), consume1: (arg1) => {}, consume2: (arg2) => {},} : { a: (arg: string) => string[]; b: (arg: string) => number; consume1: (arg1: string[]) => void; consume2: (arg2: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: (arg) => [arg], >a : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => [arg] : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >[arg] : string[] @@ -1301,9 +1301,9 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ b: (arg) => Number(arg), >b : (arg: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arg) => Number(arg) : (arg: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >Number(arg) : number @@ -1315,17 +1315,17 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ consume1: (arg1) => {}, >consume1 : (arg1: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arg1) => {} : (arg1: string[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg1 : string[] > : ^^^^^^^^ consume2: (arg2) => {}, >consume2 : (arg2: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg2) => {} : (arg2: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >arg2 : number > : ^^^^^^ @@ -1333,25 +1333,25 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ declare function withConditionalExpression(arg: { >withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; } > : ^^^^^ ^^^^^ ^^^^^ ^^^ a: (arg1: string) => T; >a : (arg1: string) => T -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : string > : ^^^^^^ b: (arg2: T) => T2; >b : (arg2: T) => T2 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ c: (arg2: T2) => T3; >c : (arg2: T2) => T3 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T2 > : ^^ @@ -1363,15 +1363,15 @@ const resWithConditionalExpression = withConditionalExpression({ >withConditionalExpression({ a: (arg) => [arg], b: Math.random() ? (arg) => "first" as const : (arg) => "two" as const, c: (arg) => Boolean(arg),}) : [string[], "first" | "two", boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >{ a: (arg) => [arg], b: Math.random() ? (arg) => "first" as const : (arg) => "two" as const, c: (arg) => Boolean(arg),} : { a: (arg: string) => string[]; b: ((arg: string[]) => "first") | ((arg: string[]) => "two"); c: (arg: "first" | "two") => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a: (arg) => [arg], >a : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => [arg] : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >[arg] : string[] @@ -1381,9 +1381,9 @@ const resWithConditionalExpression = withConditionalExpression({ b: Math.random() ? (arg) => "first" as const : (arg) => "two" as const, >b : ((arg: string[]) => "first") | ((arg: string[]) => "two") -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >Math.random() ? (arg) => "first" as const : (arg) => "two" as const : ((arg: string[]) => "first") | ((arg: string[]) => "two") -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^ >Math.random() : number > : ^^^^^^ >Math.random : () => number @@ -1393,7 +1393,7 @@ const resWithConditionalExpression = withConditionalExpression({ >random : () => number > : ^^^^^^^^^^^^ >(arg) => "first" as const : (arg: string[]) => "first" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >arg : string[] > : ^^^^^^^^ >"first" as const : "first" @@ -1401,7 +1401,7 @@ const resWithConditionalExpression = withConditionalExpression({ >"first" : "first" > : ^^^^^^^ >(arg) => "two" as const : (arg: string[]) => "two" -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >arg : string[] > : ^^^^^^^^ >"two" as const : "two" @@ -1411,9 +1411,9 @@ const resWithConditionalExpression = withConditionalExpression({ c: (arg) => Boolean(arg), >c : (arg: "first" | "two") => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(arg) => Boolean(arg) : (arg: "first" | "two") => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : "first" | "two" > : ^^^^^^^^^^^^^^^ >Boolean(arg) : boolean @@ -1427,13 +1427,13 @@ const resWithConditionalExpression = withConditionalExpression({ declare function onion(arg: { >onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; } > : ^^^^^ ^^^^^^^^^^ ^^^ a: (arg1: string) => T; >a : (arg1: string) => T -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : string > : ^^^^^^ @@ -1443,7 +1443,7 @@ declare function onion(arg: { b: (arg2: T) => T2; >b : (arg2: T) => T2 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ @@ -1453,7 +1453,7 @@ declare function onion(arg: { c: (arg2: T2) => T3; >c : (arg2: T2) => T3 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T2 > : ^^ @@ -1467,15 +1467,15 @@ const resOnion = onion({ >onion({ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), nested2: { c: (arg) => Boolean(arg), }, },}) : [string[], string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >{ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), nested2: { c: (arg) => Boolean(arg), }, },} : { a: (arg: string) => string[]; nested: { b: (arg: string[]) => string; nested2: { c: (arg: string) => boolean; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a: (arg) => [arg], >a : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => [arg] : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >[arg] : string[] @@ -1485,39 +1485,39 @@ const resOnion = onion({ nested: { >nested : { b: (arg: string[]) => string; nested2: { c: (arg: string) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ b: (arg) => arg.join(","), nested2: { c: (arg) => Boolean(arg), }, } : { b: (arg: string[]) => string; nested2: { c: (arg: string) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ b: (arg) => arg.join(","), >b : (arg: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => arg.join(",") : (arg: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string[] > : ^^^^^^^^ >arg.join(",") : string > : ^^^^^^ ->arg.join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : string[] > : ^^^^^^^^ ->join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >"," : "," > : ^^^ nested2: { >nested2 : { c: (arg: string) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >{ c: (arg) => Boolean(arg), } : { c: (arg: string) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ c: (arg) => Boolean(arg), >c : (arg: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg) => Boolean(arg) : (arg: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >Boolean(arg) : boolean @@ -1533,13 +1533,13 @@ const resOnion = onion({ declare function onion2(arg: { >onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] -> : ^ ^^ ^^ ^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; } > : ^^^^^ ^^^^^^^^^^ ^^^ a: (arg1: string) => T; >a : (arg1: string) => T -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg1 : string > : ^^^^^^ @@ -1549,13 +1549,13 @@ declare function onion2(arg: { b: (arg2: T) => T2; >b : (arg2: T) => T2 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg2 : T > : ^ c: (arg3: T) => T3; >c : (arg3: T) => T3 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg3 : T > : ^ @@ -1565,7 +1565,7 @@ declare function onion2(arg: { d: (arg4: T3) => T4; >d : (arg4: T3) => T4 -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg4 : T3 > : ^^ @@ -1579,15 +1579,15 @@ const resOnion2 = onion2({ >onion2({ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), c: (arg) => Number(arg), nested2: { d: (arg) => Boolean(arg), }, },}) : [string[], string, number, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >{ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), c: (arg) => Number(arg), nested2: { d: (arg) => Boolean(arg), }, },} : { a: (arg: string) => string[]; nested: { b: (arg: string[]) => string; c: (arg: string[]) => number; nested2: { d: (arg: number) => boolean; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a: (arg) => [arg], >a : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => [arg] : (arg: string) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >[arg] : string[] @@ -1597,33 +1597,33 @@ const resOnion2 = onion2({ nested: { >nested : { b: (arg: string[]) => string; c: (arg: string[]) => number; nested2: { d: (arg: number) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ b: (arg) => arg.join(","), c: (arg) => Number(arg), nested2: { d: (arg) => Boolean(arg), }, } : { b: (arg: string[]) => string; c: (arg: string[]) => number; nested2: { d: (arg: number) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^ b: (arg) => arg.join(","), >b : (arg: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => arg.join(",") : (arg: string[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string[] > : ^^^^^^^^ >arg.join(",") : string > : ^^^^^^ ->arg.join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : string[] > : ^^^^^^^^ ->join : (separator?: string | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>join : (separator?: string) => string +> : ^ ^^^ ^^^^^^^^^^^ >"," : "," > : ^^^ c: (arg) => Number(arg), >c : (arg: string[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >(arg) => Number(arg) : (arg: string[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string[] > : ^^^^^^^^ >Number(arg) : number @@ -1635,15 +1635,15 @@ const resOnion2 = onion2({ nested2: { >nested2 : { d: (arg: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >{ d: (arg) => Boolean(arg), } : { d: (arg: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ d: (arg) => Boolean(arg), >d : (arg: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >(arg) => Boolean(arg) : (arg: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : number > : ^^^^^^ >Boolean(arg) : boolean @@ -1659,7 +1659,7 @@ const resOnion2 = onion2({ declare function distant(args: { >distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >args : { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; } > : ^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -1677,7 +1677,7 @@ declare function distant(args: { producer: (arg: string) => T; >producer : (arg: string) => T -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ @@ -1686,7 +1686,7 @@ declare function distant(args: { }; consumer: (val: T) => unknown; >consumer : (val: T) => unknown -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >val : T > : ^ @@ -1698,33 +1698,33 @@ const distantRes = distant({ >distant({ foo: { bar: { baz: { producer: (arg) => 1, }, }, }, consumer: (val) => {},}) : number > : ^^^^^^ >distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >{ foo: { bar: { baz: { producer: (arg) => 1, }, }, }, consumer: (val) => {},} : { foo: { bar: { baz: { producer: (arg: string) => number; }; }; }; consumer: (val: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ foo: { >foo : { bar: { baz: { producer: (arg: string) => number; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: { baz: { producer: (arg) => 1, }, }, } : { bar: { baz: { producer: (arg: string) => number; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ bar: { >bar : { baz: { producer: (arg: string) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >{ baz: { producer: (arg) => 1, }, } : { baz: { producer: (arg: string) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^ baz: { >baz : { producer: (arg: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ producer: (arg) => 1, } : { producer: (arg: string) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ producer: (arg) => 1, >producer : (arg: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(arg) => 1 : (arg: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : string > : ^^^^^^ >1 : 1 @@ -1735,9 +1735,9 @@ const distantRes = distant({ }, consumer: (val) => {}, >consumer : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(val) => {} : (val: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >val : number > : ^^^^^^ diff --git a/tests/baselines/reference/intraExpressionInferencesJsx.types b/tests/baselines/reference/intraExpressionInferencesJsx.types index dd99efab7acb2..e0f8c799ecc7c 100644 --- a/tests/baselines/reference/intraExpressionInferencesJsx.types +++ b/tests/baselines/reference/intraExpressionInferencesJsx.types @@ -82,7 +82,7 @@ type AnimatedViewProps = { style: (animationsValues: StyleParam) => string; >style : (animationsValues: StyleParam) => string -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >animationsValues : StyleParam > : ^^^^^^^^^^^^^ @@ -94,9 +94,9 @@ type AnimatedViewProps = { const Component = ({ >Component : ({ animations, style, }: AnimatedViewProps) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >({ animations, style,}: AnimatedViewProps) => <> : ({ animations, style, }: AnimatedViewProps) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : animations, >animations : T @@ -104,7 +104,7 @@ const Component = ({ style, >style : (animationsValues: StyleParam) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ }: AnimatedViewProps) => <>; ><> : JSX.Element @@ -114,7 +114,7 @@ const Component = ({ > { return ""; }}/> : JSX.Element > : ^^^^^^^^^^^ >Component : ({ animations, style, }: AnimatedViewProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ animations={{ >animations : { test: { kind: "a"; value: number; a: true; }; } @@ -150,9 +150,9 @@ const Component = ({ }} style={(anim) => { >style : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(anim) => { return ""; } : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >anim : StyleParam<{ test: { kind: "a"; value: number; a: true; }; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -166,7 +166,7 @@ const Component = ({ > { return ""; }}/> : JSX.Element > : ^^^^^^^^^^^ >Component : ({ animations, style, }: AnimatedViewProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ animations={{ >animations : { test: { kind: "a"; value: number; a: true; func(): { a: true; }; }; } @@ -178,7 +178,7 @@ const Component = ({ >test : { kind: "a"; value: number; a: true; func(): { a: true; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ kind: "a", value: 1, a: true, func() { return { a: true, }; }, } : { kind: "a"; value: number; a: true; func(): { a: true; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ kind: "a", >kind : "a" @@ -218,9 +218,9 @@ const Component = ({ }} style={(anim) => { >style : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; func(): { a: true; }; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(anim) => { return ""; } : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; func(): { a: true; }; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >anim : StyleParam<{ test: { kind: "a"; value: number; a: true; func(): { a: true; }; }; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -234,7 +234,7 @@ const Component = ({ > { return { a: true, }; }, }, }} style={(anim) => { return ""; }}/> : JSX.Element > : ^^^^^^^^^^^ >Component : ({ animations, style, }: AnimatedViewProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ animations={{ >animations : { test: { kind: "a"; value: number; a: true; func: () => { a: true; }; }; } @@ -246,7 +246,7 @@ const Component = ({ >test : { kind: "a"; value: number; a: true; func: () => { a: true; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ kind: "a", value: 1, a: true, func: () => { return { a: true, }; }, } : { kind: "a"; value: number; a: true; func: () => { a: true; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ kind: "a", >kind : "a" @@ -270,7 +270,7 @@ const Component = ({ >func : () => { a: true; } > : ^^^^^^^^^^^^^^^^^^ >() => { return { a: true, }; } : () => { a: true; } -> : ^^^^^^^^^^^^^^^^^^ +> : return { >{ a: true, } : { a: true; } @@ -288,9 +288,9 @@ const Component = ({ }} style={(anim) => { >style : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; func: () => { a: true; }; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(anim) => { return ""; } : (anim: StyleParam<{ test: { kind: "a"; value: number; a: true; func: () => { a: true; }; }; }>) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >anim : StyleParam<{ test: { kind: "a"; value: number; a: true; func: () => { a: true; }; }; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -306,20 +306,20 @@ const Component = ({ interface Props { a: (x: string) => T; >a : (x: string) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ b: (arg: T) => void; >b : (arg: T) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : T > : ^ } function Foo(props: Props) { >Foo : (props: Props) => JSX.Element -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^^^^ @@ -334,7 +334,7 @@ function Foo(props: Props) { > 10} b={(arg) => { arg.toString(); }}/> : JSX.Element > : ^^^^^^^^^^^ >Foo : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ a={() => 10} >a : () => number @@ -346,19 +346,19 @@ function Foo(props: Props) { b={(arg) => { arg.toString(); }} >b : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg) => { arg.toString(); } : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >arg.toString() : string > : ^^^^^^ ->arg.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ />; @@ -366,13 +366,13 @@ function Foo(props: Props) { > 10} b={(arg) => { arg.toString(); }}/> : JSX.Element > : ^^^^^^^^^^^ >Foo : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ a={(x) => 10} >a : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(x) => 10 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >10 : 10 @@ -380,19 +380,19 @@ function Foo(props: Props) { b={(arg) => { arg.toString(); }} >b : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg) => { arg.toString(); } : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arg : number > : ^^^^^^ >arg.toString() : string > : ^^^^^^ ->arg.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ />; @@ -400,15 +400,15 @@ function Foo(props: Props) { > 10, b: (arg) => { arg.toString(); },}} /> : JSX.Element > : ^^^^^^^^^^^ >Foo : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >{ a: (x) => 10, b: (arg) => { arg.toString(); },} : { a: (x: string) => number; b: (arg: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ a: (x) => 10, >a : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(x) => 10 : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >10 : 10 @@ -416,19 +416,19 @@ function Foo(props: Props) { b: (arg) => { arg.toString(); }, >b : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(arg) => { arg.toString(); } : (arg: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >arg : number > : ^^^^^^ >arg.toString() : string > : ^^^^^^ ->arg.toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arg.toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >arg : number > : ^^^^^^ ->toString : (radix?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toString : (radix?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ }} />; diff --git a/tests/baselines/reference/intrinsicKeyword.types b/tests/baselines/reference/intrinsicKeyword.types index b1c45345b85ac..992bddd32605f 100644 --- a/tests/baselines/reference/intrinsicKeyword.types +++ b/tests/baselines/reference/intrinsicKeyword.types @@ -44,7 +44,7 @@ function f1() { function f2(intrinsic: string) { >f2 : (intrinsic: string) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >intrinsic : string > : ^^^^^^ diff --git a/tests/baselines/reference/intrinsicTypes.types b/tests/baselines/reference/intrinsicTypes.types index 1d26f6f418886..2b3ad38293cdf 100644 --- a/tests/baselines/reference/intrinsicTypes.types +++ b/tests/baselines/reference/intrinsicTypes.types @@ -123,7 +123,7 @@ type MyUppercase = intrinsic; // Error function foo1(s: string, x: Uppercase, y: Uppercase) { >foo1 : (s: string, x: Uppercase, y: Uppercase) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ >x : Uppercase @@ -182,7 +182,7 @@ function foo1(s: string, x: Uppercase, y: Uppe function foo2(x: Uppercase) { >foo2 : (x: Uppercase) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Uppercase > : ^^^^^^^^^^^^ @@ -195,13 +195,13 @@ function foo2(x: Uppercase) { declare function foo3(x: Uppercase): T; >foo3 : (x: Uppercase) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Uppercase > : ^^^^^^^^^^^^ function foo4(x: Uppercase) { >foo4 : (x: Uppercase) => U -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : Uppercase > : ^^^^^^^^^^^^ @@ -209,7 +209,7 @@ function foo4(x: Uppercase) { >foo3(x) : U > : ^ >foo3 : (x: Uppercase) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : Uppercase > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/intrinsics.types b/tests/baselines/reference/intrinsics.types index 7103c91492318..d7ef28546cae5 100644 --- a/tests/baselines/reference/intrinsics.types +++ b/tests/baselines/reference/intrinsics.types @@ -48,7 +48,7 @@ class Foo<__proto__> { } var foo: (__proto__: number) => void; >foo : (__proto__: number) => void -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >__proto__ : number > : ^^^^^^ diff --git a/tests/baselines/reference/invalidAssignmentsToVoid.types b/tests/baselines/reference/invalidAssignmentsToVoid.types index da90a1e5779fe..0798a52ae1360 100644 --- a/tests/baselines/reference/invalidAssignmentsToVoid.types +++ b/tests/baselines/reference/invalidAssignmentsToVoid.types @@ -97,7 +97,7 @@ x = M; function f(a: T) { >f : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ @@ -111,9 +111,9 @@ function f(a: T) { } x = f; >x = f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : void > : ^^^^ >f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/invalidBooleanAssignments.types b/tests/baselines/reference/invalidBooleanAssignments.types index 7d4cae5a1ec5e..3063ae15cd718 100644 --- a/tests/baselines/reference/invalidBooleanAssignments.types +++ b/tests/baselines/reference/invalidBooleanAssignments.types @@ -99,7 +99,7 @@ M = x; function i(a: T) { >i : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidDoWhileBreakStatements.types b/tests/baselines/reference/invalidDoWhileBreakStatements.types index e11732cc115e0..fd36c33a90cae 100644 --- a/tests/baselines/reference/invalidDoWhileBreakStatements.types +++ b/tests/baselines/reference/invalidDoWhileBreakStatements.types @@ -27,7 +27,7 @@ do { >x : () => void > : ^^^^^^^^^^ >() => { break TWO; } : () => void -> : ^^^^^^^^^^ +> : break TWO; >TWO : any @@ -46,7 +46,7 @@ do { >fn : () => void > : ^^^^^^^^^^ >function () { break THREE; } : () => void -> : ^^^^^^^^^^ +> : break THREE; >THREE : any diff --git a/tests/baselines/reference/invalidDoWhileContinueStatements.types b/tests/baselines/reference/invalidDoWhileContinueStatements.types index 34a08b6119920..d8ce152d60a7f 100644 --- a/tests/baselines/reference/invalidDoWhileContinueStatements.types +++ b/tests/baselines/reference/invalidDoWhileContinueStatements.types @@ -27,7 +27,7 @@ do { >x : () => void > : ^^^^^^^^^^ >() => { continue TWO; } : () => void -> : ^^^^^^^^^^ +> : continue TWO; >TWO : any @@ -46,7 +46,7 @@ do { >fn : () => void > : ^^^^^^^^^^ >function () { continue THREE; } : () => void -> : ^^^^^^^^^^ +> : continue THREE; >THREE : any diff --git a/tests/baselines/reference/invalidEnumAssignments.types b/tests/baselines/reference/invalidEnumAssignments.types index 7840a983a3aec..65b1ccb6daf98 100644 --- a/tests/baselines/reference/invalidEnumAssignments.types +++ b/tests/baselines/reference/invalidEnumAssignments.types @@ -85,7 +85,7 @@ e = ''; function f(a: T) { >f : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidForBreakStatements.types b/tests/baselines/reference/invalidForBreakStatements.types index 4f58e7a631457..988c0d5a4a33d 100644 --- a/tests/baselines/reference/invalidForBreakStatements.types +++ b/tests/baselines/reference/invalidForBreakStatements.types @@ -25,7 +25,7 @@ for(;;) { >x : () => void > : ^^^^^^^^^^ >() => { break TWO; } : () => void -> : ^^^^^^^^^^ +> : break TWO; >TWO : any @@ -42,7 +42,7 @@ for(;;) { >fn : () => void > : ^^^^^^^^^^ >function () { break THREE; } : () => void -> : ^^^^^^^^^^ +> : break THREE; >THREE : any diff --git a/tests/baselines/reference/invalidForContinueStatements.types b/tests/baselines/reference/invalidForContinueStatements.types index 1bcc6bcf0f210..6ce6bc3d6b18e 100644 --- a/tests/baselines/reference/invalidForContinueStatements.types +++ b/tests/baselines/reference/invalidForContinueStatements.types @@ -25,7 +25,7 @@ for(;;) { >x : () => void > : ^^^^^^^^^^ >() => { continue TWO; } : () => void -> : ^^^^^^^^^^ +> : continue TWO; >TWO : any @@ -42,7 +42,7 @@ for(;;) { >fn : () => void > : ^^^^^^^^^^ >function () { continue THREE; } : () => void -> : ^^^^^^^^^^ +> : continue THREE; >THREE : any diff --git a/tests/baselines/reference/invalidForInBreakStatements.types b/tests/baselines/reference/invalidForInBreakStatements.types index 8950a927c1db5..5b5561e5f0f44 100644 --- a/tests/baselines/reference/invalidForInBreakStatements.types +++ b/tests/baselines/reference/invalidForInBreakStatements.types @@ -34,7 +34,7 @@ for (var x in {}) { >fn : () => void > : ^^^^^^^^^^ >() => { break TWO; } : () => void -> : ^^^^^^^^^^ +> : break TWO; >TWO : any diff --git a/tests/baselines/reference/invalidForInContinueStatements.types b/tests/baselines/reference/invalidForInContinueStatements.types index 6be406baaadfd..c50e90a8125fd 100644 --- a/tests/baselines/reference/invalidForInContinueStatements.types +++ b/tests/baselines/reference/invalidForInContinueStatements.types @@ -34,7 +34,7 @@ for (var x in {}) { >fn : () => void > : ^^^^^^^^^^ >() => { continue TWO; } : () => void -> : ^^^^^^^^^^ +> : continue TWO; >TWO : any diff --git a/tests/baselines/reference/invalidModuleWithVarStatements.types b/tests/baselines/reference/invalidModuleWithVarStatements.types index 9affb41798cd0..69b2289918f8d 100644 --- a/tests/baselines/reference/invalidModuleWithVarStatements.types +++ b/tests/baselines/reference/invalidModuleWithVarStatements.types @@ -20,7 +20,7 @@ module Y2 { public function fn(x: string) { } >fn : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ } @@ -42,7 +42,7 @@ module YY { static function fn(x: string) { } >fn : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ } @@ -65,7 +65,7 @@ module YY3 { private function fn(x: string) { } >fn : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ } diff --git a/tests/baselines/reference/invalidMultipleVariableDeclarations.types b/tests/baselines/reference/invalidMultipleVariableDeclarations.types index 2d0107e3bf1dc..668b247b355e0 100644 --- a/tests/baselines/reference/invalidMultipleVariableDeclarations.types +++ b/tests/baselines/reference/invalidMultipleVariableDeclarations.types @@ -50,7 +50,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -71,17 +71,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } // all of these are errors @@ -145,15 +145,15 @@ var b = new C2(); var f = F; >f : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >F : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : var f = (x: number) => ''; >f : (x: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(x: number) => '' : (x: number) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/invalidNewTarget.es5.types b/tests/baselines/reference/invalidNewTarget.es5.types index 1e2a5dbcf5f75..a7d603c8a4cba 100644 --- a/tests/baselines/reference/invalidNewTarget.es5.types +++ b/tests/baselines/reference/invalidNewTarget.es5.types @@ -13,7 +13,7 @@ const b = () => new.target; >b : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any @@ -65,7 +65,7 @@ class C { >f : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any @@ -113,7 +113,7 @@ class C { >j : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any diff --git a/tests/baselines/reference/invalidNewTarget.es6.types b/tests/baselines/reference/invalidNewTarget.es6.types index 77d7bb2db3efc..500ea739595a3 100644 --- a/tests/baselines/reference/invalidNewTarget.es6.types +++ b/tests/baselines/reference/invalidNewTarget.es6.types @@ -13,7 +13,7 @@ const b = () => new.target; >b : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any @@ -65,7 +65,7 @@ class C { >f : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any @@ -113,7 +113,7 @@ class C { >j : () => any > : ^^^^^^^^^ >() => new.target : () => any -> : ^^^^^^^^^ +> : >new.target : any > : ^^^ >target : any diff --git a/tests/baselines/reference/invalidNumberAssignments.types b/tests/baselines/reference/invalidNumberAssignments.types index bbf4d492040cf..ca5f9729de819 100644 --- a/tests/baselines/reference/invalidNumberAssignments.types +++ b/tests/baselines/reference/invalidNumberAssignments.types @@ -89,7 +89,7 @@ M = x; function i(a: T) { >i : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidSplice.types b/tests/baselines/reference/invalidSplice.types index 836cba8940077..7d436e88051fe 100644 --- a/tests/baselines/reference/invalidSplice.types +++ b/tests/baselines/reference/invalidSplice.types @@ -7,11 +7,11 @@ var arr = [].splice(0,3,4,5); >[].splice(0,3,4,5) : any[] > : ^^^^^ >[].splice : { (start: number, deleteCount?: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ >splice : { (start: number, deleteCount?: number): any[]; (start: number, deleteCount: number, ...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >3 : 3 diff --git a/tests/baselines/reference/invalidStringAssignments.types b/tests/baselines/reference/invalidStringAssignments.types index f4574ac737b36..5ee092d745ef6 100644 --- a/tests/baselines/reference/invalidStringAssignments.types +++ b/tests/baselines/reference/invalidStringAssignments.types @@ -89,7 +89,7 @@ M = x; function i(a: T) { >i : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types index 2f526fae7c0db..12cc9d27e4a61 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es2015).types @@ -3,7 +3,7 @@ === invalidTaggedTemplateEscapeSequences.ts === function tag (str: any, ...args: any[]): any { >tag : (str: any, ...args: any[]) => any -> : ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >str : any > : ^^^ >args : any[] @@ -20,7 +20,7 @@ const a = tag`123` >tag`123` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123` : "123" > : ^^^^^ @@ -30,7 +30,7 @@ const b = tag`123 ${100}` >tag`123 ${100}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123 ${100}` : string > : ^^^^^^ >100 : 100 @@ -42,7 +42,7 @@ const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uwor >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string > : ^^^^^^ >100 : 100 @@ -70,7 +70,7 @@ const z = tag`\u{hello} \xtraordinary wonderful \uworld` // should work with Tag >tag`\u{hello} \xtraordinary wonderful \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} \xtraordinary wonderful \uworld` : "\\u{hello} \\xtraordinary wonderful \\uworld" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -80,7 +80,7 @@ const a1 = tag`${ 100 }\0` // \0 >tag`${ 100 }\0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\0` : string > : ^^^^^^ >100 : 100 @@ -92,7 +92,7 @@ const a2 = tag`${ 100 }\00` // \\00 >tag`${ 100 }\00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\00` : string > : ^^^^^^ >100 : 100 @@ -104,7 +104,7 @@ const a3 = tag`${ 100 }\u` // \\u >tag`${ 100 }\u` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u` : string > : ^^^^^^ >100 : 100 @@ -116,7 +116,7 @@ const a4 = tag`${ 100 }\u0` // \\u0 >tag`${ 100 }\u0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0` : string > : ^^^^^^ >100 : 100 @@ -128,7 +128,7 @@ const a5 = tag`${ 100 }\u00` // \\u00 >tag`${ 100 }\u00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u00` : string > : ^^^^^^ >100 : 100 @@ -140,7 +140,7 @@ const a6 = tag`${ 100 }\u000` // \\u000 >tag`${ 100 }\u000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u000` : string > : ^^^^^^ >100 : 100 @@ -152,7 +152,7 @@ const a7 = tag`${ 100 }\u0000` // \u0000 >tag`${ 100 }\u0000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0000` : string > : ^^^^^^ >100 : 100 @@ -164,7 +164,7 @@ const a8 = tag`${ 100 }\u{` // \\u{ >tag`${ 100 }\u{` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{` : string > : ^^^^^^ >100 : 100 @@ -176,7 +176,7 @@ const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >tag`${ 100 }\u{10FFFF}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{10FFFF}` : string > : ^^^^^^ >100 : 100 @@ -188,7 +188,7 @@ const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >tag`${ 100 }\u{1f622` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622` : string > : ^^^^^^ >100 : 100 @@ -200,7 +200,7 @@ const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >tag`${ 100 }\u{1f622}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622}` : string > : ^^^^^^ >100 : 100 @@ -212,7 +212,7 @@ const a12 = tag`${ 100 }\x` // \\x >tag`${ 100 }\x` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x` : string > : ^^^^^^ >100 : 100 @@ -224,7 +224,7 @@ const a13 = tag`${ 100 }\x0` // \\x0 >tag`${ 100 }\x0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x0` : string > : ^^^^^^ >100 : 100 @@ -236,7 +236,7 @@ const a14 = tag`${ 100 }\x00` // \x00 >tag`${ 100 }\x00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x00` : string > : ^^^^^^ >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types index 2f526fae7c0db..12cc9d27e4a61 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=es5).types @@ -3,7 +3,7 @@ === invalidTaggedTemplateEscapeSequences.ts === function tag (str: any, ...args: any[]): any { >tag : (str: any, ...args: any[]) => any -> : ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >str : any > : ^^^ >args : any[] @@ -20,7 +20,7 @@ const a = tag`123` >tag`123` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123` : "123" > : ^^^^^ @@ -30,7 +30,7 @@ const b = tag`123 ${100}` >tag`123 ${100}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123 ${100}` : string > : ^^^^^^ >100 : 100 @@ -42,7 +42,7 @@ const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uwor >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string > : ^^^^^^ >100 : 100 @@ -70,7 +70,7 @@ const z = tag`\u{hello} \xtraordinary wonderful \uworld` // should work with Tag >tag`\u{hello} \xtraordinary wonderful \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} \xtraordinary wonderful \uworld` : "\\u{hello} \\xtraordinary wonderful \\uworld" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -80,7 +80,7 @@ const a1 = tag`${ 100 }\0` // \0 >tag`${ 100 }\0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\0` : string > : ^^^^^^ >100 : 100 @@ -92,7 +92,7 @@ const a2 = tag`${ 100 }\00` // \\00 >tag`${ 100 }\00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\00` : string > : ^^^^^^ >100 : 100 @@ -104,7 +104,7 @@ const a3 = tag`${ 100 }\u` // \\u >tag`${ 100 }\u` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u` : string > : ^^^^^^ >100 : 100 @@ -116,7 +116,7 @@ const a4 = tag`${ 100 }\u0` // \\u0 >tag`${ 100 }\u0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0` : string > : ^^^^^^ >100 : 100 @@ -128,7 +128,7 @@ const a5 = tag`${ 100 }\u00` // \\u00 >tag`${ 100 }\u00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u00` : string > : ^^^^^^ >100 : 100 @@ -140,7 +140,7 @@ const a6 = tag`${ 100 }\u000` // \\u000 >tag`${ 100 }\u000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u000` : string > : ^^^^^^ >100 : 100 @@ -152,7 +152,7 @@ const a7 = tag`${ 100 }\u0000` // \u0000 >tag`${ 100 }\u0000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0000` : string > : ^^^^^^ >100 : 100 @@ -164,7 +164,7 @@ const a8 = tag`${ 100 }\u{` // \\u{ >tag`${ 100 }\u{` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{` : string > : ^^^^^^ >100 : 100 @@ -176,7 +176,7 @@ const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >tag`${ 100 }\u{10FFFF}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{10FFFF}` : string > : ^^^^^^ >100 : 100 @@ -188,7 +188,7 @@ const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >tag`${ 100 }\u{1f622` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622` : string > : ^^^^^^ >100 : 100 @@ -200,7 +200,7 @@ const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >tag`${ 100 }\u{1f622}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622}` : string > : ^^^^^^ >100 : 100 @@ -212,7 +212,7 @@ const a12 = tag`${ 100 }\x` // \\x >tag`${ 100 }\x` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x` : string > : ^^^^^^ >100 : 100 @@ -224,7 +224,7 @@ const a13 = tag`${ 100 }\x0` // \\x0 >tag`${ 100 }\x0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x0` : string > : ^^^^^^ >100 : 100 @@ -236,7 +236,7 @@ const a14 = tag`${ 100 }\x00` // \x00 >tag`${ 100 }\x00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x00` : string > : ^^^^^^ >100 : 100 diff --git a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types index 2f526fae7c0db..12cc9d27e4a61 100644 --- a/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types +++ b/tests/baselines/reference/invalidTaggedTemplateEscapeSequences(target=esnext).types @@ -3,7 +3,7 @@ === invalidTaggedTemplateEscapeSequences.ts === function tag (str: any, ...args: any[]): any { >tag : (str: any, ...args: any[]) => any -> : ^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >str : any > : ^^^ >args : any[] @@ -20,7 +20,7 @@ const a = tag`123` >tag`123` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123` : "123" > : ^^^^^ @@ -30,7 +30,7 @@ const b = tag`123 ${100}` >tag`123 ${100}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`123 ${100}` : string > : ^^^^^^ >100 : 100 @@ -42,7 +42,7 @@ const x = tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uwor >tag`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} ${ 100 } \xtraordinary ${ 200 } wonderful ${ 300 } \uworld` : string > : ^^^^^^ >100 : 100 @@ -70,7 +70,7 @@ const z = tag`\u{hello} \xtraordinary wonderful \uworld` // should work with Tag >tag`\u{hello} \xtraordinary wonderful \uworld` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`\u{hello} \xtraordinary wonderful \uworld` : "\\u{hello} \\xtraordinary wonderful \\uworld" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -80,7 +80,7 @@ const a1 = tag`${ 100 }\0` // \0 >tag`${ 100 }\0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\0` : string > : ^^^^^^ >100 : 100 @@ -92,7 +92,7 @@ const a2 = tag`${ 100 }\00` // \\00 >tag`${ 100 }\00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\00` : string > : ^^^^^^ >100 : 100 @@ -104,7 +104,7 @@ const a3 = tag`${ 100 }\u` // \\u >tag`${ 100 }\u` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u` : string > : ^^^^^^ >100 : 100 @@ -116,7 +116,7 @@ const a4 = tag`${ 100 }\u0` // \\u0 >tag`${ 100 }\u0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0` : string > : ^^^^^^ >100 : 100 @@ -128,7 +128,7 @@ const a5 = tag`${ 100 }\u00` // \\u00 >tag`${ 100 }\u00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u00` : string > : ^^^^^^ >100 : 100 @@ -140,7 +140,7 @@ const a6 = tag`${ 100 }\u000` // \\u000 >tag`${ 100 }\u000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u000` : string > : ^^^^^^ >100 : 100 @@ -152,7 +152,7 @@ const a7 = tag`${ 100 }\u0000` // \u0000 >tag`${ 100 }\u0000` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u0000` : string > : ^^^^^^ >100 : 100 @@ -164,7 +164,7 @@ const a8 = tag`${ 100 }\u{` // \\u{ >tag`${ 100 }\u{` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{` : string > : ^^^^^^ >100 : 100 @@ -176,7 +176,7 @@ const a9 = tag`${ 100 }\u{10FFFF}` // \\u{10FFFF >tag`${ 100 }\u{10FFFF}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{10FFFF}` : string > : ^^^^^^ >100 : 100 @@ -188,7 +188,7 @@ const a10 = tag`${ 100 }\u{1f622` // \\u{1f622 >tag`${ 100 }\u{1f622` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622` : string > : ^^^^^^ >100 : 100 @@ -200,7 +200,7 @@ const a11 = tag`${ 100 }\u{1f622}` // \u{1f622} >tag`${ 100 }\u{1f622}` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\u{1f622}` : string > : ^^^^^^ >100 : 100 @@ -212,7 +212,7 @@ const a12 = tag`${ 100 }\x` // \\x >tag`${ 100 }\x` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x` : string > : ^^^^^^ >100 : 100 @@ -224,7 +224,7 @@ const a13 = tag`${ 100 }\x0` // \\x0 >tag`${ 100 }\x0` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x0` : string > : ^^^^^^ >100 : 100 @@ -236,7 +236,7 @@ const a14 = tag`${ 100 }\x00` // \x00 >tag`${ 100 }\x00` : any > : ^^^ >tag : (str: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^ >`${ 100 }\x00` : string > : ^^^^^^ >100 : 100 diff --git a/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.types b/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.types index e0330479052f7..5023df4e62c0d 100644 --- a/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.types +++ b/tests/baselines/reference/invalidThisEmitInContextualObjectLiteral.types @@ -4,7 +4,7 @@ interface IDef { p1: (e:string) => void; >p1 : (e: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >e : string > : ^^^^^^ @@ -21,7 +21,7 @@ class TestController { public m(def: IDef) { } >m : (def: IDef) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >def : IDef > : ^^^^ @@ -31,29 +31,29 @@ class TestController { >this.m({ p1: e => { }, p2: () => { return vvvvvvvvv => this; }, }) : void > : ^^^^ >this.m : (def: IDef) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >m : (def: IDef) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ p1: e => { }, p2: () => { return vvvvvvvvv => this; }, } : { p1: (e: string) => void; p2: () => (vvvvvvvvv: number) => this; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ p1: e => { }, >p1 : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >e => { } : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >e : string > : ^^^^^^ p2: () => { return vvvvvvvvv => this; }, >p2 : () => (vvvvvvvvv: number) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^ >() => { return vvvvvvvvv => this; } : () => (vvvvvvvvv: number) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >vvvvvvvvv => this : (vvvvvvvvv: number) => this -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >vvvvvvvvv : number > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/invalidUndefinedAssignments.types b/tests/baselines/reference/invalidUndefinedAssignments.types index 013eaec64f534..0799484e33198 100644 --- a/tests/baselines/reference/invalidUndefinedAssignments.types +++ b/tests/baselines/reference/invalidUndefinedAssignments.types @@ -93,7 +93,7 @@ M = x; function i(a: T) { } >i : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidUndefinedValues.types b/tests/baselines/reference/invalidUndefinedValues.types index 9d82d50440298..d87d4a6668827 100644 --- a/tests/baselines/reference/invalidUndefinedValues.types +++ b/tests/baselines/reference/invalidUndefinedValues.types @@ -108,7 +108,7 @@ x = { f() { } } function f(a: T) { >f : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ @@ -121,10 +121,10 @@ function f(a: T) { } x = f; >x = f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : any >f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ enum E { A } >E : E diff --git a/tests/baselines/reference/invalidVoidAssignments.types b/tests/baselines/reference/invalidVoidAssignments.types index 0976be108801f..7967ebed09317 100644 --- a/tests/baselines/reference/invalidVoidAssignments.types +++ b/tests/baselines/reference/invalidVoidAssignments.types @@ -87,7 +87,7 @@ M = x; function i(a: T) { >i : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/invalidVoidValues.types b/tests/baselines/reference/invalidVoidValues.types index b8fd47cdcaa16..a9eef384adb16 100644 --- a/tests/baselines/reference/invalidVoidValues.types +++ b/tests/baselines/reference/invalidVoidValues.types @@ -117,7 +117,7 @@ x = M; function f(a: T) { >f : (a: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ @@ -131,9 +131,9 @@ function f(a: T) { } x = f; >x = f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : void > : ^^^^ >f : (a: T) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/invalidWhileBreakStatements.types b/tests/baselines/reference/invalidWhileBreakStatements.types index bfb06d71b20af..b225c69bebe26 100644 --- a/tests/baselines/reference/invalidWhileBreakStatements.types +++ b/tests/baselines/reference/invalidWhileBreakStatements.types @@ -30,7 +30,7 @@ while (true){ >x : () => void > : ^^^^^^^^^^ >() => { break TWO; } : () => void -> : ^^^^^^^^^^ +> : break TWO; >TWO : any @@ -50,7 +50,7 @@ while (true) { >fn : () => void > : ^^^^^^^^^^ >function () { break THREE; } : () => void -> : ^^^^^^^^^^ +> : break THREE; >THREE : any diff --git a/tests/baselines/reference/invalidWhileContinueStatements.types b/tests/baselines/reference/invalidWhileContinueStatements.types index 082d88609b036..11ed1e4fa4b9c 100644 --- a/tests/baselines/reference/invalidWhileContinueStatements.types +++ b/tests/baselines/reference/invalidWhileContinueStatements.types @@ -30,7 +30,7 @@ while (true){ >x : () => void > : ^^^^^^^^^^ >() => { continue TWO; } : () => void -> : ^^^^^^^^^^ +> : continue TWO; >TWO : any @@ -50,7 +50,7 @@ while (true) { >fn : () => void > : ^^^^^^^^^^ >function () { continue THREE; } : () => void -> : ^^^^^^^^^^ +> : continue THREE; >THREE : any diff --git a/tests/baselines/reference/invariantGenericErrorElaboration.types b/tests/baselines/reference/invariantGenericErrorElaboration.types index e841aa3de861a..f70a94bb69cba 100644 --- a/tests/baselines/reference/invariantGenericErrorElaboration.types +++ b/tests/baselines/reference/invariantGenericErrorElaboration.types @@ -13,9 +13,9 @@ const Foo = Obj({ foo: Num }) >Foo : Obj<{ [_: string]: Runtype; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Obj({ foo: Num }) : Obj<{ [_: string]: Runtype; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^ >Obj : ; }>(fields: O) => Obj -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ foo: Num } : { foo: Num; } > : ^^^^^^^^^^^^^ >foo : Num @@ -45,7 +45,7 @@ declare const Num: Num interface Obj }> extends Runtype<{[K in keyof O]: O[K]['witness'] }> {} declare function Obj }>(fields: O): Obj; >Obj : ; }>(fields: O) => Obj -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >_ : string > : ^^^^^^ >fields : O @@ -57,8 +57,8 @@ interface Constraint> extends Runtype { > : ^ check: (x: A['witness']) => void, ->check : (x: A['witness']) => void -> : ^^^^ ^^^^^ +>check : (x: A["witness"]) => void +> : ^ ^^ ^^^^^ >x : A["witness"] > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/invocationExpressionInFunctionParameter.types b/tests/baselines/reference/invocationExpressionInFunctionParameter.types index 3388cc4b01cf4..413c6205a4331 100644 --- a/tests/baselines/reference/invocationExpressionInFunctionParameter.types +++ b/tests/baselines/reference/invocationExpressionInFunctionParameter.types @@ -3,19 +3,19 @@ === invocationExpressionInFunctionParameter.ts === function foo1(val: string) { >foo1 : (val: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >val : string > : ^^^^^^ } function foo3(x = foo1(123)) { //should error, 123 is not string >foo3 : (x?: void) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : void > : ^^^^ >foo1(123) : void > : ^^^^ >foo1 : (val: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ } diff --git a/tests/baselines/reference/ipromise2.types b/tests/baselines/reference/ipromise2.types index 17e1c654ed1ca..8760afafeb7b0 100644 --- a/tests/baselines/reference/ipromise2.types +++ b/tests/baselines/reference/ipromise2.types @@ -5,16 +5,16 @@ declare module Windows.Foundation { export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -23,16 +23,16 @@ declare module Windows.Foundation { then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -41,16 +41,16 @@ declare module Windows.Foundation { then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -59,16 +59,16 @@ declare module Windows.Foundation { then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -77,16 +77,16 @@ declare module Windows.Foundation { done(success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; >done : (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : (value: T) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any value: T; @@ -109,13 +109,13 @@ var p2 = p.then(function (s) { >p.then(function (s) { return 34;} ) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then : { (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : { (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function (s) { return 34;} : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/ipromise3.types b/tests/baselines/reference/ipromise3.types index cde199b2c0184..6e7560c1fc921 100644 --- a/tests/baselines/reference/ipromise3.types +++ b/tests/baselines/reference/ipromise3.types @@ -4,72 +4,72 @@ interface IPromise3 { then(success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; >then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_2, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise3; } -> : ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise3 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise3 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any then(success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; >then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_2, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise3; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise3 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any then(success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void ): IPromise3; >then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise3; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise3 -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): IPromise3; >then : { (success?: (value: T) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => IPromise3, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U_3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise3; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; >done : (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : (value: T) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any } var p1: IPromise3; @@ -82,13 +82,13 @@ var p2: IPromise3 = p1.then(function (x) { >p1.then(function (x) { return x;}) : IPromise3 > : ^^^^^^^^^^^^^^^^^ >p1.then : { (success?: (value: string) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => U_2, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise3; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >p1 : IPromise3 > : ^^^^^^^^^^^^^^^^^ >then : { (success?: (value: string) => IPromise3, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => IPromise3, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => U_2, error?: (error: any) => IPromise3, progress?: (progress: any) => void): IPromise3; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise3; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >function (x) { return x;} : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/ipromise4.types b/tests/baselines/reference/ipromise4.types index 0267b357c4009..b5875bb8a73ca 100644 --- a/tests/baselines/reference/ipromise4.types +++ b/tests/baselines/reference/ipromise4.types @@ -5,16 +5,16 @@ declare module Windows.Foundation { export interface IPromise { then(success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -23,16 +23,16 @@ declare module Windows.Foundation { then(success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_2, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -41,16 +41,16 @@ declare module Windows.Foundation { then(success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: T) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => IPromise -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -59,16 +59,16 @@ declare module Windows.Foundation { then(success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void ): Windows.Foundation.IPromise; >then : { (success?: (value: T) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => IPromise, error?: (error: any) => U_2, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U_3, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: T) => U, error?: (error: any) => U, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any >Windows : any > : ^^^ @@ -77,16 +77,16 @@ declare module Windows.Foundation { done? (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void ): void; >done : (success?: (value: T) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : (value: T) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >error : (error: any) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >error : any >progress : (progress: any) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >progress : any } } @@ -103,13 +103,13 @@ p.then(function (x) { } ); // should not error >p.then(function (x) { } ) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then : { (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : { (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function (x) { } : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -117,25 +117,25 @@ p.then(function (x) { return "hello"; } ).then(function (x) { return x } ); // s >p.then(function (x) { return "hello"; } ).then(function (x) { return x } ) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(function (x) { return "hello"; } ).then : { (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(function (x) { return "hello"; } ) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then : { (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : { (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: number) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function (x) { return "hello"; } : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >"hello" : "hello" > : ^^^^^^^ >then : { (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => Windows.Foundation.IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_2, error?: (error: any) => Windows.Foundation.IPromise, progress?: (progress: any) => void): Windows.Foundation.IPromise; (success?: (value: string) => U_3, error?: (error: any) => U_3, progress?: (progress: any) => void): Windows.Foundation.IPromise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function (x) { return x } : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >x : string diff --git a/tests/baselines/reference/isArray.types b/tests/baselines/reference/isArray.types index 5ba0684cd5bc0..98915642bd7a6 100644 --- a/tests/baselines/reference/isArray.types +++ b/tests/baselines/reference/isArray.types @@ -10,11 +10,11 @@ if (Array.isArray(maybeArray)) { >Array.isArray(maybeArray) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >maybeArray : number | number[] > : ^^^^^^^^^^^^^^^^^ @@ -31,9 +31,9 @@ else { >maybeArray.toFixed() : string > : ^^^^^^ >maybeArray.toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >maybeArray : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } diff --git a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types index 6586b66813866..7cec3b3c7d565 100644 --- a/tests/baselines/reference/isDeclarationVisibleNodeKinds.types +++ b/tests/baselines/reference/isDeclarationVisibleNodeKinds.types @@ -8,7 +8,7 @@ module schema { export function createValidator1(schema: any): (data: T) => T { >createValidator1 : (schema: any) => (data: T) => T -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -26,7 +26,7 @@ module schema { export function createValidator2(schema: any): new (data: T) => T { >createValidator2 : (schema: any) => new (data: T) => T -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -44,7 +44,7 @@ module schema { export function createValidator3(schema: any): number | { new (data: T): T; } { >createValidator3 : (schema: any) => number | { new (data: T): T; } -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -62,7 +62,7 @@ module schema { export function createValidator4(schema: any): { new (data: T): T; }[] { >createValidator4 : (schema: any) => { new (data: T): T; }[] -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -81,7 +81,7 @@ module schema { export function createValidator5(schema: any): { new (data: T): T } { >createValidator5 : (schema: any) => { new (data: T): T; } -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -99,7 +99,7 @@ module schema { export function createValidator6(schema: any): [ new (data: T) => T, number] { >createValidator6 : (schema: any) => [new (data: T) => T, number] -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -117,7 +117,7 @@ module schema { export function createValidator7(schema: any): (new (data: T)=>T )[] { >createValidator7 : (schema: any) => (new (data: T) => T)[] -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -135,7 +135,7 @@ module schema { export function createValidator8(schema: any): Array<{ (data: T) : T}> { >createValidator8 : (schema: any) => Array<{ (data: T): T; }> -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >schema : any >data : T > : ^ @@ -157,7 +157,7 @@ module schema { get createValidator9(): (data: T) => T { >createValidator9 : (data: T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >data : T > : ^ @@ -168,9 +168,9 @@ module schema { set createValidator10(v: (data: T) => T) { >createValidator10 : (data: T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >v : (data: T) => T -> : ^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >data : T > : ^ } diff --git a/tests/baselines/reference/isolatedModulesImportConstEnum.types b/tests/baselines/reference/isolatedModulesImportConstEnum.types index 4af37d0256a86..97742e055536a 100644 --- a/tests/baselines/reference/isolatedModulesImportConstEnum.types +++ b/tests/baselines/reference/isolatedModulesImportConstEnum.types @@ -9,11 +9,11 @@ console.log(Foo.BAR); >console.log(Foo.BAR) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >Foo.BAR : Foo > : ^^^ >Foo : typeof Foo diff --git a/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types index ee209ce8cf4cf..b567e6e8a8433 100644 --- a/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types +++ b/tests/baselines/reference/isolatedModulesImportConstEnumTypeOnly.types @@ -14,7 +14,7 @@ import { Foo } from "./enum"; function f(foo: Foo) { return; } >f : (foo: Foo) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/isolatedModulesPlainFile-AMD.types b/tests/baselines/reference/isolatedModulesPlainFile-AMD.types index a8cfa63c0cdfc..6e9a0ea747dc4 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-AMD.types +++ b/tests/baselines/reference/isolatedModulesPlainFile-AMD.types @@ -3,7 +3,7 @@ === isolatedModulesPlainFile-AMD.ts === declare function run(a: number): void; >run : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -11,7 +11,7 @@ run(1); >run(1) : void > : ^^^^ >run : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/isolatedModulesPlainFile-CommonJS.types b/tests/baselines/reference/isolatedModulesPlainFile-CommonJS.types index fdbee1b0705bd..846e95d5835cb 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-CommonJS.types +++ b/tests/baselines/reference/isolatedModulesPlainFile-CommonJS.types @@ -3,7 +3,7 @@ === isolatedModulesPlainFile-CommonJS.ts === declare function run(a: number): void; >run : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -11,7 +11,7 @@ run(1); >run(1) : void > : ^^^^ >run : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/isolatedModulesPlainFile-ES6.types b/tests/baselines/reference/isolatedModulesPlainFile-ES6.types index cbf55b03f2086..2705d8abee84d 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-ES6.types +++ b/tests/baselines/reference/isolatedModulesPlainFile-ES6.types @@ -3,7 +3,7 @@ === isolatedModulesPlainFile-ES6.ts === declare function run(a: number): void; >run : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -11,7 +11,7 @@ run(1); >run(1) : void > : ^^^^ >run : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/isolatedModulesPlainFile-System.types b/tests/baselines/reference/isolatedModulesPlainFile-System.types index 86a1f4153037f..a90c0498f8bbb 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-System.types +++ b/tests/baselines/reference/isolatedModulesPlainFile-System.types @@ -3,7 +3,7 @@ === isolatedModulesPlainFile-System.ts === declare function run(a: number): void; >run : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -11,7 +11,7 @@ run(1); >run(1) : void > : ^^^^ >run : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/isolatedModulesPlainFile-UMD.types b/tests/baselines/reference/isolatedModulesPlainFile-UMD.types index 316e003b700e1..f1fe72ea7e822 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-UMD.types +++ b/tests/baselines/reference/isolatedModulesPlainFile-UMD.types @@ -3,7 +3,7 @@ === isolatedModulesPlainFile-UMD.ts === declare function run(a: number): void; >run : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ @@ -11,7 +11,7 @@ run(1); >run(1) : void > : ^^^^ >run : (a: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index 5cb6de7e2a677..a465b38385707 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -25,7 +25,7 @@ type Boxified = { function box(x: T): Box { >box : (x: T) => Box -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -40,7 +40,7 @@ function box(x: T): Box { function unbox(x: Box): T { >unbox : (x: Box) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Box > : ^^^^^^ @@ -55,7 +55,7 @@ function unbox(x: Box): T { function boxify(obj: T): Boxified { >boxify : (obj: T) => Boxified -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : T > : ^ @@ -85,7 +85,7 @@ function boxify(obj: T): Boxified { >box(obj[k]) : Box]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >box : (x: T_1) => Box -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >obj[k] : T[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T @@ -100,7 +100,7 @@ function boxify(obj: T): Boxified { function unboxify(obj: Boxified): T { >unboxify : (obj: Boxified) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Boxified > : ^^^^^^^^^^^ @@ -130,7 +130,7 @@ function unboxify(obj: Boxified): T { >unbox(obj[k]) : T[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unbox : (x: Box) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ >obj[k] : Boxified[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Boxified @@ -145,7 +145,7 @@ function unboxify(obj: Boxified): T { function assignBoxified(obj: Boxified, values: T) { >assignBoxified : (obj: Boxified, values: T) => void -> : ^ ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Boxified > : ^^^^^^^^^^^ >values : T @@ -212,9 +212,9 @@ function f1() { >b : Boxified<{ a: number; b: string; c: boolean; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >boxify(v) : Boxified<{ a: number; b: string; c: boolean; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^ >boxify : (obj: T) => Boxified -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >v : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -249,7 +249,7 @@ function f2() { >box(42) : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ @@ -259,7 +259,7 @@ function f2() { >box("hello") : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -269,7 +269,7 @@ function f2() { >box(true) : Box > : ^^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ @@ -280,7 +280,7 @@ function f2() { >unboxify(b) : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -311,7 +311,7 @@ function f3() { >box(42) : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ @@ -321,7 +321,7 @@ function f3() { >box("hello") : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -331,7 +331,7 @@ function f3() { >box(true) : Box > : ^^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ @@ -340,7 +340,7 @@ function f3() { >assignBoxified(b, { c: false }) : void > : ^^^^ >assignBoxified : (obj: Boxified, values: T) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ c: false } : { c: false; } @@ -367,7 +367,7 @@ function f4() { >box(42) : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ @@ -377,7 +377,7 @@ function f4() { >box("hello") : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -387,7 +387,7 @@ function f4() { >box(true) : Box > : ^^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ @@ -400,11 +400,11 @@ function f4() { >boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >boxify : (obj: T) => Boxified -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >unboxify(b) : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -414,20 +414,20 @@ function f4() { >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify(boxify(b)) : { a: Box; b: Box; c: Box; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >boxify(b) : Boxified<{ a: Box; b: Box; c: Box; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >boxify : (obj: T) => Boxified -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function makeRecord(obj: { [P in K]: T }) { >makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >obj : { [P in K]: T; } > : ^^^^^^^^^^^^^^^^ @@ -438,7 +438,7 @@ function makeRecord(obj: { [P in K]: T }) { function f5(s: string) { >f5 : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ @@ -446,9 +446,9 @@ function f5(s: string) { >b : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >makeRecord({ a: box(42), b: box("hello"), c: box(true) }) : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >{ a: box(42), b: box("hello"), c: box(true) } : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -458,7 +458,7 @@ function f5(s: string) { >box(42) : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ @@ -468,7 +468,7 @@ function f5(s: string) { >box("hello") : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -478,7 +478,7 @@ function f5(s: string) { >box(true) : Box > : ^^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ @@ -489,7 +489,7 @@ function f5(s: string) { >unboxify(b) : { a: string | number | boolean; b: string | number | boolean; c: string | number | boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -506,7 +506,7 @@ function f5(s: string) { function makeDictionary(obj: { [x: string]: T }) { >makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >obj : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -519,7 +519,7 @@ function makeDictionary(obj: { [x: string]: T }) { function f6(s: string) { >f6 : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : string > : ^^^^^^ @@ -527,9 +527,9 @@ function f6(s: string) { >b : { [x: string]: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >makeDictionary({ a: box(42), b: box("hello"), c: box(true) }) : { [x: string]: Box | Box | Box; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: box(42), b: box("hello"), c: box(true) } : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -539,7 +539,7 @@ function f6(s: string) { >box(42) : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >42 : 42 > : ^^ @@ -549,7 +549,7 @@ function f6(s: string) { >box("hello") : Box > : ^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -559,7 +559,7 @@ function f6(s: string) { >box(true) : Box > : ^^^^^^^^^^^^ >box : (x: T) => Box -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ @@ -570,7 +570,7 @@ function f6(s: string) { >unboxify(b) : { [x: string]: any; } > : ^^^^^^^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >b : { [x: string]: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -587,19 +587,19 @@ function f6(s: string) { declare function validate(obj: { [P in keyof T]?: T[P] }): T; >validate : (obj: { [P in keyof T]?: T[P]; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : { [P in keyof T]?: T[P] | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function clone(obj: { readonly [P in keyof T]: T[P] }): T; >clone : (obj: { readonly [P in keyof T]: T[P]; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : { readonly [P in keyof T]: T[P]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function validateAndClone(obj: { readonly [P in keyof T]?: T[P] }): T; >validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : { readonly [P in keyof T]?: T[P] | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -618,7 +618,7 @@ type Foo = { function f10(foo: Foo) { >f10 : (foo: Foo) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ @@ -627,8 +627,8 @@ function f10(foo: Foo) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >validate(foo) : { a: number; readonly b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->validate : (obj: { [P in keyof T]?: T[P] | undefined; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>validate : (obj: { [P in keyof T]?: T[P]; }) => T +> : ^ ^^ ^^ ^^^^^^ >foo : Foo > : ^^^ @@ -638,7 +638,7 @@ function f10(foo: Foo) { >clone(foo) : { a?: number | undefined; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >clone : (obj: { readonly [P in keyof T]: T[P]; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >foo : Foo > : ^^^ @@ -647,8 +647,8 @@ function f10(foo: Foo) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >validateAndClone(foo) : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->validateAndClone : (obj: { readonly [P in keyof T]?: T[P] | undefined; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T +> : ^ ^^ ^^ ^^^^^^ >foo : Foo > : ^^^ } @@ -675,7 +675,7 @@ type Spec = { */ declare function applySpec(obj: Spec): (...args: any[]) => T; >applySpec : (obj: Spec) => (...args: any[]) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : Spec > : ^^^^^^^ >args : any[] @@ -684,34 +684,34 @@ declare function applySpec(obj: Spec): (...args: any[]) => T; // Infers g1: (...args: any[]) => { sum: number, nested: { mul: string } } var g1 = applySpec({ >g1 : (...args: any[]) => { sum: number; nested: { mul: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: number; nested: { mul: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >applySpec : (obj: Spec) => (...args: any[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >{ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }} : { sum: (a: any) => number; nested: { mul: (b: any) => string; }; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ sum: (a: any) => 3, >sum : (a: any) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(a: any) => 3 : (a: any) => number -> : ^^^^ ^^^^^^^^^^^ +> : >a : any >3 : 3 > : ^ nested: { >nested : { mul: (b: any) => string; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >{ mul: (b: any) => "n" } : { mul: (b: any) => string; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ mul: (b: any) => "n" >mul : (b: any) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(b: any) => "n" : (b: any) => string -> : ^^^^ ^^^^^^^^^^^ +> : >b : any >"n" : "n" > : ^^^ @@ -721,25 +721,25 @@ var g1 = applySpec({ // Infers g2: (...args: any[]) => { foo: { bar: { baz: boolean } } } var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); >g2 : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >applySpec : (obj: Spec) => (...args: any[]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >{ foo: { bar: { baz: (x: any) => true } } } : { foo: { bar: { baz: (x: any) => boolean; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >foo : { bar: { baz: (x: any) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >{ bar: { baz: (x: any) => true } } : { bar: { baz: (x: any) => boolean; }; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^ >bar : { baz: (x: any) => boolean; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ baz: (x: any) => true } : { baz: (x: any) => boolean; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ >baz : (x: any) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(x: any) => true : (x: any) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >x : any >true : true > : ^^^^ @@ -748,9 +748,9 @@ var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); const foo = (object: T, partial: Partial) => object; >foo : (object: T, partial: Partial) => T -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >(object: T, partial: Partial) => object : (object: T, partial: Partial) => T -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^ +> : >object : T > : ^ >partial : Partial @@ -776,7 +776,7 @@ foo(o, {b: 9}); >foo(o, {b: 9}) : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (object: T, partial: Partial) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >o : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >{b: 9} : { b: number; } @@ -792,9 +792,9 @@ o = foo(o, {b: 9}); >o : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(o, {b: 9}) : { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : (object: T, partial: Partial) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >o : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >{b: 9} : { b: number; } @@ -809,31 +809,31 @@ o = foo(o, {b: 9}); declare function f20(obj: Pick): T; >f20 : (obj: Pick) => T -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f21(obj: Pick): K; >f21 : (obj: Pick) => K -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f22(obj: Boxified>): T; >f22 : (obj: Boxified>) => T -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Boxified> > : ^^^^^^^^^^^^^^^^^^^^ declare function f23(obj: Pick): T; >f23 : (obj: Pick) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f24(obj: Pick): T & U; >f24 : (obj: Pick) => T & U -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^^^^^ @@ -843,7 +843,7 @@ let x0 = f20({ foo: 42, bar: "hello" }); >f20({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20 : (obj: Pick) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -861,7 +861,7 @@ let x1 = f21({ foo: 42, bar: "hello" }); >f21({ foo: 42, bar: "hello" }) : "foo" | "bar" > : ^^^^^^^^^^^^^ >f21 : (obj: Pick) => K -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -879,7 +879,7 @@ let x2 = f22({ foo: { value: 42} , bar: { value: "hello" } }); >f22({ foo: { value: 42} , bar: { value: "hello" } }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f22 : (obj: Boxified>) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: { value: 42} , bar: { value: "hello" } } : { foo: { value: number; }; bar: { value: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : { value: number; } @@ -905,7 +905,7 @@ let x3 = f23({ foo: 42, bar: "hello" }); >f23({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f23 : (obj: Pick) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -923,7 +923,7 @@ let x4 = f24({ foo: 42, bar: "hello" }); >f24({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } & { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f24 : (obj: Pick) => T & U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -939,7 +939,7 @@ let x4 = f24({ foo: 42, bar: "hello" }); function getProps(obj: T, list: K[]): Pick { >getProps : (obj: T, list: K[]) => Pick -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >list : K[] @@ -962,7 +962,7 @@ const o1 = getProps(myAny, ['foo', 'bar']); >getProps(myAny, ['foo', 'bar']) : Pick > : ^^^^^^^^^^^^^^^^^^^^^^^^ >getProps : (obj: T, list: K[]) => Pick -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ >myAny : any >['foo', 'bar'] : ("foo" | "bar")[] > : ^^^^^^^^^^^^^^^^^ @@ -979,7 +979,7 @@ const o2: { foo: any; bar: any } = getProps(myAny, ['foo', 'bar']); >getProps(myAny, ['foo', 'bar']) : Pick > : ^^^^^^^^^^^^^^^^^^^^^^^^ >getProps : (obj: T, list: K[]) => Pick -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ >myAny : any >['foo', 'bar'] : ("foo" | "bar")[] > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/iterableArrayPattern10.types b/tests/baselines/reference/iterableArrayPattern10.types index 6d5390a85f4df..a671e05e60ca3 100644 --- a/tests/baselines/reference/iterableArrayPattern10.types +++ b/tests/baselines/reference/iterableArrayPattern10.types @@ -62,7 +62,7 @@ class FooIterator { function fun([a, b]) { } >fun : ([a, b]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -72,7 +72,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : ([a, b]: [any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index dffd2633543c4..af08a2b6fc748 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -60,7 +60,7 @@ class FooIterator { function fun([a, b] = new FooIterator) { } >fun : ([a, b]?: FooIterator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >a : Foo > : ^^^ >b : Foo @@ -74,7 +74,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : ([a, b]?: FooIterator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index 7f19a94b13df7..00163f3177355 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -60,7 +60,7 @@ class FooIterator { function fun([a, ...b] = new FooIterator) { } >fun : ([a, ...b]?: FooIterator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >a : Foo > : ^^^ >b : Foo[] @@ -74,7 +74,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : ([a, ...b]?: FooIterator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index 1a92d7ac3d817..07c8e9f46e0e6 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -62,7 +62,7 @@ class FooIterator { function fun([a, ...b]) { } >fun : ([a, ...b]: [any, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any[] @@ -72,7 +72,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : ([a, ...b]: [any, ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern15.types b/tests/baselines/reference/iterableArrayPattern15.types index f324f549d4f8f..093c4d9b0023f 100644 --- a/tests/baselines/reference/iterableArrayPattern15.types +++ b/tests/baselines/reference/iterableArrayPattern15.types @@ -60,7 +60,7 @@ class FooIterator { function fun(...[a, b]: Bar[]) { } >fun : (...[a, b]: Bar[]) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : Bar > : ^^^ >b : Bar @@ -70,7 +70,7 @@ fun(...new FooIterator); >fun(...new FooIterator) : void > : ^^^^ >fun : (...[a, b]: Bar[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new FooIterator : Foo > : ^^^ >new FooIterator : FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern16.types b/tests/baselines/reference/iterableArrayPattern16.types index 6d4d93357a3c1..2e97a3ec3c588 100644 --- a/tests/baselines/reference/iterableArrayPattern16.types +++ b/tests/baselines/reference/iterableArrayPattern16.types @@ -3,7 +3,7 @@ === iterableArrayPattern16.ts === function fun(...[a, b]: [Bar, Bar][]) { } >fun : (...[a, b]: [Bar, Bar][]) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : [Bar, Bar] > : ^^^^^^^^^^ >b : [Bar, Bar] @@ -13,7 +13,7 @@ fun(...new FooIteratorIterator); >fun(...new FooIteratorIterator) : void > : ^^^^ >fun : (...[a, b]: [Bar, Bar][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new FooIteratorIterator : FooIterator > : ^^^^^^^^^^^ >new FooIteratorIterator : FooIteratorIterator diff --git a/tests/baselines/reference/iterableArrayPattern17.types b/tests/baselines/reference/iterableArrayPattern17.types index 81547cebbdfb8..332ef15510c9b 100644 --- a/tests/baselines/reference/iterableArrayPattern17.types +++ b/tests/baselines/reference/iterableArrayPattern17.types @@ -62,7 +62,7 @@ class FooIterator { function fun(...[a, b]: Bar[]) { } >fun : (...[a, b]: Bar[]) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : Bar > : ^^^ >b : Bar @@ -72,7 +72,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : (...[a, b]: Bar[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern18.types b/tests/baselines/reference/iterableArrayPattern18.types index 1bead9ee5c9d2..ec6d6540119b8 100644 --- a/tests/baselines/reference/iterableArrayPattern18.types +++ b/tests/baselines/reference/iterableArrayPattern18.types @@ -62,7 +62,7 @@ class FooIterator { function fun([a, b]: Bar[]) { } >fun : ([a, b]: Bar[]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : Bar > : ^^^ >b : Bar @@ -72,7 +72,7 @@ fun(new FooIterator); >fun(new FooIterator) : void > : ^^^^ >fun : ([a, b]: Bar[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new FooIterator : FooIterator > : ^^^^^^^^^^^ >FooIterator : typeof FooIterator diff --git a/tests/baselines/reference/iterableArrayPattern19.types b/tests/baselines/reference/iterableArrayPattern19.types index 15c53a8156467..039ceddf69c6d 100644 --- a/tests/baselines/reference/iterableArrayPattern19.types +++ b/tests/baselines/reference/iterableArrayPattern19.types @@ -64,7 +64,7 @@ class FooArrayIterator { function fun([[a], b]: Bar[][]) { } >fun : ([[a], b]: Bar[][]) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : Bar > : ^^^ >b : Bar[] @@ -74,7 +74,7 @@ fun(new FooArrayIterator); >fun(new FooArrayIterator) : void > : ^^^^ >fun : ([[a], b]: Bar[][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >new FooArrayIterator : FooArrayIterator > : ^^^^^^^^^^^^^^^^ >FooArrayIterator : typeof FooArrayIterator diff --git a/tests/baselines/reference/iterableArrayPattern20.types b/tests/baselines/reference/iterableArrayPattern20.types index 10d8f5b773136..5f2215ba64efc 100644 --- a/tests/baselines/reference/iterableArrayPattern20.types +++ b/tests/baselines/reference/iterableArrayPattern20.types @@ -62,7 +62,7 @@ class FooArrayIterator { function fun(...[[a = new Foo], b = [new Foo]]: Bar[][]) { } >fun : (...[[a], b]: Bar[][]) => void -> : ^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : Bar > : ^^^ >new Foo : Foo @@ -82,7 +82,7 @@ fun(...new FooArrayIterator); >fun(...new FooArrayIterator) : void > : ^^^^ >fun : (...[[a], b]: Bar[][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new FooArrayIterator : Foo[] > : ^^^^^ >new FooArrayIterator : FooArrayIterator diff --git a/tests/baselines/reference/iterableArrayPattern26.types b/tests/baselines/reference/iterableArrayPattern26.types index 00e73e5994a73..23695099bf2e4 100644 --- a/tests/baselines/reference/iterableArrayPattern26.types +++ b/tests/baselines/reference/iterableArrayPattern26.types @@ -3,7 +3,7 @@ === iterableArrayPattern26.ts === function takeFirstTwoEntries(...[[k1, v1], [k2, v2]]: [string, number][]) { } >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >k1 : string > : ^^^^^^ >v1 : number @@ -17,7 +17,7 @@ takeFirstTwoEntries(new Map([["", 0], ["hello", 1]])); >takeFirstTwoEntries(new Map([["", 0], ["hello", 1]])) : void > : ^^^^ >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >new Map([["", 0], ["hello", 1]]) : Map > : ^^^^^^^^^^^^^^^^^^^ >Map : MapConstructor diff --git a/tests/baselines/reference/iterableArrayPattern27.types b/tests/baselines/reference/iterableArrayPattern27.types index 8c030f9bf0a64..147a49467aa1c 100644 --- a/tests/baselines/reference/iterableArrayPattern27.types +++ b/tests/baselines/reference/iterableArrayPattern27.types @@ -3,7 +3,7 @@ === iterableArrayPattern27.ts === function takeFirstTwoEntries(...[[k1, v1], [k2, v2]]: [string, number][]) { } >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >k1 : string > : ^^^^^^ >v1 : number @@ -17,7 +17,7 @@ takeFirstTwoEntries(...new Map([["", 0], ["hello", 1]])); >takeFirstTwoEntries(...new Map([["", 0], ["hello", 1]])) : void > : ^^^^ >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new Map([["", 0], ["hello", 1]]) : [string, number] > : ^^^^^^^^^^^^^^^^ >new Map([["", 0], ["hello", 1]]) : Map diff --git a/tests/baselines/reference/iterableArrayPattern28.types b/tests/baselines/reference/iterableArrayPattern28.types index 66ce6706a757d..bbb9b912f993c 100644 --- a/tests/baselines/reference/iterableArrayPattern28.types +++ b/tests/baselines/reference/iterableArrayPattern28.types @@ -3,7 +3,7 @@ === iterableArrayPattern28.ts === function takeFirstTwoEntries(...[[k1, v1], [k2, v2]]: [string, number][]) { } >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >k1 : string > : ^^^^^^ >v1 : number @@ -17,7 +17,7 @@ takeFirstTwoEntries(...new Map([["", 0], ["hello", true]])); >takeFirstTwoEntries(...new Map([["", 0], ["hello", true]])) : void > : ^^^^ >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new Map([["", 0], ["hello", true]]) : [string, number] > : ^^^^^^^^^^^^^^^^ >new Map([["", 0], ["hello", true]]) : Map diff --git a/tests/baselines/reference/iterableArrayPattern29.types b/tests/baselines/reference/iterableArrayPattern29.types index 2a54bd2536d88..df9d42c944fe1 100644 --- a/tests/baselines/reference/iterableArrayPattern29.types +++ b/tests/baselines/reference/iterableArrayPattern29.types @@ -3,7 +3,7 @@ === iterableArrayPattern29.ts === function takeFirstTwoEntries(...[[k1, v1], [k2, v2]]: [string, number][]) { } >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >k1 : string > : ^^^^^^ >v1 : number @@ -17,7 +17,7 @@ takeFirstTwoEntries(...new Map([["", true], ["hello", true]])); >takeFirstTwoEntries(...new Map([["", true], ["hello", true]])) : void > : ^^^^ >takeFirstTwoEntries : (...[[k1, v1], [k2, v2]]: [string, number][]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new Map([["", true], ["hello", true]]) : [string, boolean] > : ^^^^^^^^^^^^^^^^^ >new Map([["", true], ["hello", true]]) : Map diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index da486f3f982c0..1cd9dbc05fcc4 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -3,7 +3,7 @@ === iterableArrayPattern9.ts === function fun([a, b] = new FooIterator) { } >fun : ([a, b]?: FooIterator) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >a : Foo > : ^^^ >b : Foo diff --git a/tests/baselines/reference/iterableContextualTyping1.types b/tests/baselines/reference/iterableContextualTyping1.types index 05bb4e3bff01a..a5f32840bbffb 100644 --- a/tests/baselines/reference/iterableContextualTyping1.types +++ b/tests/baselines/reference/iterableContextualTyping1.types @@ -3,13 +3,13 @@ === iterableContextualTyping1.ts === var iter: Iterable<(x: string) => number> = [s => s.length]; >iter : Iterable<(x: string) => number> -> : ^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^ ^^ ^^^^^ ^ >x : string > : ^^^^^^ >[s => s.length] : ((s: string) => number)[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.length : number diff --git a/tests/baselines/reference/iteratorSpreadInArray6.types b/tests/baselines/reference/iteratorSpreadInArray6.types index f3febc830eb1d..6762d8bf9b941 100644 --- a/tests/baselines/reference/iteratorSpreadInArray6.types +++ b/tests/baselines/reference/iteratorSpreadInArray6.types @@ -60,11 +60,11 @@ array.concat([...new SymbolIterator]); >array.concat([...new SymbolIterator]) : number[] > : ^^^^^^^^ >array.concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : number[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[...new SymbolIterator] : symbol[] > : ^^^^^^^^ >...new SymbolIterator : symbol diff --git a/tests/baselines/reference/iteratorSpreadInArray7.types b/tests/baselines/reference/iteratorSpreadInArray7.types index 830412c4d2896..9f1a5e391fd7e 100644 --- a/tests/baselines/reference/iteratorSpreadInArray7.types +++ b/tests/baselines/reference/iteratorSpreadInArray7.types @@ -54,11 +54,11 @@ array.concat([...new SymbolIterator]); >array.concat([...new SymbolIterator]) : symbol[] > : ^^^^^^^^ >array.concat : { (...items: ConcatArray[]): symbol[]; (...items: (symbol | ConcatArray)[]): symbol[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : symbol[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): symbol[]; (...items: (symbol | ConcatArray)[]): symbol[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[...new SymbolIterator] : symbol[] > : ^^^^^^^^ >...new SymbolIterator : symbol diff --git a/tests/baselines/reference/iteratorSpreadInCall.types b/tests/baselines/reference/iteratorSpreadInCall.types index f9e8b49bf1791..300d5fa83469f 100644 --- a/tests/baselines/reference/iteratorSpreadInCall.types +++ b/tests/baselines/reference/iteratorSpreadInCall.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall.ts === function foo(s: symbol) { } >foo : (s: symbol) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : symbol > : ^^^^^^ @@ -56,7 +56,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : void > : ^^^^ >foo : (s: symbol) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall10.types b/tests/baselines/reference/iteratorSpreadInCall10.types index 37d7658b8f512..a0b703b809c72 100644 --- a/tests/baselines/reference/iteratorSpreadInCall10.types +++ b/tests/baselines/reference/iteratorSpreadInCall10.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall10.ts === function foo(s: T[]) { return s[0] } >foo : (s: T[]) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >s : T[] > : ^^^ >s[0] : T @@ -62,7 +62,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : unknown > : ^^^^^^^ >foo : (s: T[]) => T -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall11.types b/tests/baselines/reference/iteratorSpreadInCall11.types index b4e35acaaafd4..e5e3c83c572d4 100644 --- a/tests/baselines/reference/iteratorSpreadInCall11.types +++ b/tests/baselines/reference/iteratorSpreadInCall11.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall11.ts === function foo(...s: T[]) { return s[0] } >foo : (...s: T[]) => T -> : ^ ^^^^^^^^ ^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >s : T[] > : ^^^ >s[0] : T @@ -62,7 +62,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : symbol > : ^^^^^^ >foo : (...s: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall2.types b/tests/baselines/reference/iteratorSpreadInCall2.types index 9de03b00f3f40..2299f807f3adb 100644 --- a/tests/baselines/reference/iteratorSpreadInCall2.types +++ b/tests/baselines/reference/iteratorSpreadInCall2.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall2.ts === function foo(s: symbol[]) { } >foo : (s: symbol[]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : symbol[] > : ^^^^^^^^ @@ -56,7 +56,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : void > : ^^^^ >foo : (s: symbol[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall3.types b/tests/baselines/reference/iteratorSpreadInCall3.types index df7e2e4122f63..0e5c51117e761 100644 --- a/tests/baselines/reference/iteratorSpreadInCall3.types +++ b/tests/baselines/reference/iteratorSpreadInCall3.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall3.ts === function foo(...s: symbol[]) { } >foo : (...s: symbol[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >s : symbol[] > : ^^^^^^^^ @@ -56,7 +56,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : void > : ^^^^ >foo : (...s: symbol[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall4.types b/tests/baselines/reference/iteratorSpreadInCall4.types index 81b01f44ab1fe..17152acf0f20c 100644 --- a/tests/baselines/reference/iteratorSpreadInCall4.types +++ b/tests/baselines/reference/iteratorSpreadInCall4.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall4.ts === function foo(s1: symbol, ...s: symbol[]) { } >foo : (s1: symbol, ...s: symbol[]) => void -> : ^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >s1 : symbol > : ^^^^^^ >s : symbol[] @@ -58,7 +58,7 @@ foo(...new SymbolIterator); >foo(...new SymbolIterator) : void > : ^^^^ >foo : (s1: symbol, ...s: symbol[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall5.types b/tests/baselines/reference/iteratorSpreadInCall5.types index a50144bbb4686..bc7419d402559 100644 --- a/tests/baselines/reference/iteratorSpreadInCall5.types +++ b/tests/baselines/reference/iteratorSpreadInCall5.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall5.ts === function foo(...s: (symbol | string)[]) { } >foo : (...s: (symbol | string)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >s : (string | symbol)[] > : ^^^^^^^^^^^^^^^^^^^ @@ -98,8 +98,8 @@ class _StringIterator { foo(...new SymbolIterator, ...new _StringIterator); >foo(...new SymbolIterator, ...new _StringIterator) : void > : ^^^^ ->foo : (...s: (string | symbol)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (...s: (symbol | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall6.types b/tests/baselines/reference/iteratorSpreadInCall6.types index c215cca00d8b0..d585aebffa89b 100644 --- a/tests/baselines/reference/iteratorSpreadInCall6.types +++ b/tests/baselines/reference/iteratorSpreadInCall6.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall6.ts === function foo(...s: (symbol | number)[]) { } >foo : (...s: (symbol | number)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >s : (number | symbol)[] > : ^^^^^^^^^^^^^^^^^^^ @@ -98,8 +98,8 @@ class _StringIterator { foo(...new SymbolIterator, ...new _StringIterator); >foo(...new SymbolIterator, ...new _StringIterator) : void > : ^^^^ ->foo : (...s: (number | symbol)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (...s: (symbol | number)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorSpreadInCall7.types b/tests/baselines/reference/iteratorSpreadInCall7.types index 8aac3cc72c91c..c65b4b9326bde 100644 --- a/tests/baselines/reference/iteratorSpreadInCall7.types +++ b/tests/baselines/reference/iteratorSpreadInCall7.types @@ -3,7 +3,7 @@ === iteratorSpreadInCall7.ts === function foo(...s: T[]) { return s[0]; } >foo : (...s: T[]) => T -> : ^ ^^^^^^^^ ^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >s : T[] > : ^^^ >s[0] : T @@ -105,7 +105,7 @@ foo(...new SymbolIterator, ...new _StringIterator); >foo(...new SymbolIterator, ...new _StringIterator) : symbol > : ^^^^^^ >foo : (...s: T[]) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^ >...new SymbolIterator : symbol > : ^^^^^^ >new SymbolIterator : SymbolIterator diff --git a/tests/baselines/reference/iteratorsAndStrictNullChecks.types b/tests/baselines/reference/iteratorsAndStrictNullChecks.types index 6c1ae18c07159..5cea55e6d006f 100644 --- a/tests/baselines/reference/iteratorsAndStrictNullChecks.types +++ b/tests/baselines/reference/iteratorsAndStrictNullChecks.types @@ -13,12 +13,12 @@ for (const x of ["a", "b"]) { > : ^^^ x.substring; ->x.substring : (start: number, end?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x.substring : (start: number, end?: number) => string +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ ->substring : (start: number, end?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>substring : (start: number, end?: number) => string +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ } // Spread @@ -48,11 +48,11 @@ xs.push(...ys); >xs.push(...ys) : number > : ^^^^^^ >xs.push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >xs : number[] > : ^^^^^^^^ >push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >...ys : number > : ^^^^^^ >ys : number[] diff --git a/tests/baselines/reference/javascriptDefinePropertyPrototypeNonConstructor.types b/tests/baselines/reference/javascriptDefinePropertyPrototypeNonConstructor.types index bd88f55230222..118301d635418 100644 --- a/tests/baselines/reference/javascriptDefinePropertyPrototypeNonConstructor.types +++ b/tests/baselines/reference/javascriptDefinePropertyPrototypeNonConstructor.types @@ -9,11 +9,11 @@ function Graphic() { Object.defineProperty(Graphic.prototype, "instance", { >Object.defineProperty(Graphic.prototype, "instance", { get: function() { return this; }}) : any >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Graphic.prototype : any >Graphic : typeof Graphic > : ^^^^^^^^^^^^^^ @@ -28,7 +28,7 @@ Object.defineProperty(Graphic.prototype, "instance", { >get : () => this > : ^^^^^^^^^^ >function() { return this; } : () => this -> : ^^^^^^^^^^ +> : return this; >this : this diff --git a/tests/baselines/reference/javascriptThisAssignmentInStaticBlock.types b/tests/baselines/reference/javascriptThisAssignmentInStaticBlock.types index c6cce3b892217..2cf450f97192b 100644 --- a/tests/baselines/reference/javascriptThisAssignmentInStaticBlock.types +++ b/tests/baselines/reference/javascriptThisAssignmentInStaticBlock.types @@ -16,7 +16,7 @@ class Thing { >doSomething : () => void > : ^^^^^^^^^^ >() => {} : () => void -> : ^^^^^^^^^^ +> : } } @@ -40,37 +40,37 @@ class ElementsArray extends Array { static { const superisArray = super.isArray; >superisArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >super.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >super : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ const customIsArray = (arg)=> superisArray(arg); >customIsArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >(arg)=> superisArray(arg) : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >arg : any >superisArray(arg) : boolean > : ^^^^^^^ >superisArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >arg : any this.isArray = customIsArray; >this.isArray = customIsArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >this.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >this : typeof ElementsArray > : ^^^^^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >customIsArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : } } @@ -78,11 +78,11 @@ ElementsArray.isArray(new ElementsArray()); >ElementsArray.isArray(new ElementsArray()) : boolean > : ^^^^^^^ >ElementsArray.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >ElementsArray : typeof ElementsArray > : ^^^^^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >new ElementsArray() : ElementsArray > : ^^^^^^^^^^^^^ >ElementsArray : typeof ElementsArray diff --git a/tests/baselines/reference/jqueryInference.types b/tests/baselines/reference/jqueryInference.types index 562af12e26fa9..4c2845d288a65 100644 --- a/tests/baselines/reference/jqueryInference.types +++ b/tests/baselines/reference/jqueryInference.types @@ -5,17 +5,17 @@ interface MyPromise { then(cb: (t: T) => void): void; >then : (cb: (t: T) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (t: T) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ thenUnion(cb: (t: T | U) => void): this; >thenUnion : (cb: (t: T | U) => void) => this -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (t: T | U) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T | U > : ^^^^^ } @@ -24,7 +24,7 @@ interface DoNothingAlias extends MyPromise { } declare function shouldBeIdentity(p: DoNothingAlias): MyPromise; >shouldBeIdentity : (p: DoNothingAlias) => MyPromise -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >p : DoNothingAlias > : ^^^^^^^^^^^^^^^^^^^^ @@ -38,7 +38,7 @@ var p2 = shouldBeIdentity(p1); >shouldBeIdentity(p1) : MyPromise > : ^^^^^^^^^^^^^^^^^^^^^^^ >shouldBeIdentity : (p: DoNothingAlias) => MyPromise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >p1 : MyPromise > : ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsCheckObjectDefineThisNoCrash.types b/tests/baselines/reference/jsCheckObjectDefineThisNoCrash.types index a4bc40a0f62e7..d8620b69b8fc8 100644 --- a/tests/baselines/reference/jsCheckObjectDefineThisNoCrash.types +++ b/tests/baselines/reference/jsCheckObjectDefineThisNoCrash.types @@ -11,11 +11,11 @@ class C { >Object.defineProperty(this, "_prop", { value: {} }) : this > : ^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >this : this > : ^^^^ >"_prop" : "_prop" @@ -31,11 +31,11 @@ class C { >Object.defineProperty(this._prop, "num", { value: 12 }) : any > : ^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >this._prop : any > : ^^^ >this : this diff --git a/tests/baselines/reference/jsContainerMergeTsDeclaration.types b/tests/baselines/reference/jsContainerMergeTsDeclaration.types index c53c131791fe7..c3cb2946eda94 100644 --- a/tests/baselines/reference/jsContainerMergeTsDeclaration.types +++ b/tests/baselines/reference/jsContainerMergeTsDeclaration.types @@ -5,7 +5,7 @@ var /*1*/x = function foo() { >x : { (): void; a(): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >function foo() {} : { (): void; a(): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >foo : { (): void; a(): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -19,7 +19,7 @@ x.a = function bar() { >a : () => void > : ^^^^^^^^^^ >function bar() {} : () => void -> : ^^^^^^^^^^ +> : >bar : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.types b/tests/baselines/reference/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.types index b3097c64182d3..5a7cf96fb86ae 100644 --- a/tests/baselines/reference/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.types +++ b/tests/baselines/reference/jsDeclarationEmitExportAssignedFunctionWithExtraTypedefsMembers.types @@ -11,17 +11,17 @@ */ module.exports = function loader(options) {} >module.exports = function loader(options) {} : (options: Options) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >module.exports : (options: Options) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >module : { exports: (options: Options) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >exports : (options: Options) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function loader(options) {} : (options: Options) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >loader : (options: Options) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >options : Options > : ^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsClassAccessor.types b/tests/baselines/reference/jsDeclarationsClassAccessor.types index 345ecc7dbe255..b74c2b26de437 100644 --- a/tests/baselines/reference/jsDeclarationsClassAccessor.types +++ b/tests/baselines/reference/jsDeclarationsClassAccessor.types @@ -65,7 +65,7 @@ export class Argument extends Base { */ static parse(tokeniser) { >parse : (tokeniser: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >tokeniser : any return; @@ -85,6 +85,6 @@ export class Argument extends Base { */ *validate(defs) { } >validate : (defs: any) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defs : any } diff --git a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types index 7918a8b36b49b..0661ca33ec6f6 100644 --- a/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types +++ b/tests/baselines/reference/jsDeclarationsClassExtendsVisibility.types @@ -61,7 +61,7 @@ module.exports.Strings = Strings; >Strings : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Strings : { a: string; b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : === bar.js === class Bar {} diff --git a/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.types b/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.types index b7bd321b3ba57..a40aa8adfcc61 100644 --- a/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.types +++ b/tests/baselines/reference/jsDeclarationsClassImplementsGenericsSerialization.types @@ -4,7 +4,7 @@ export interface Encoder { encode(value: T): Uint8Array >encode : (value: T) => Uint8Array -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ } @@ -22,7 +22,7 @@ export class Encoder { */ encode(value) { >encode : (value: T) => Uint8Array -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^ >value : T > : ^ diff --git a/tests/baselines/reference/jsDeclarationsClassLeadingOptional.types b/tests/baselines/reference/jsDeclarationsClassLeadingOptional.types index 147a5a4bdeec9..5777db1925c90 100644 --- a/tests/baselines/reference/jsDeclarationsClassLeadingOptional.types +++ b/tests/baselines/reference/jsDeclarationsClassLeadingOptional.types @@ -7,7 +7,7 @@ export class Z { f(x = 1, y) { >f : (x: number, y: any) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/jsDeclarationsClassMethod.types b/tests/baselines/reference/jsDeclarationsClassMethod.types index 5255636638df3..5cfc86bdf37ba 100644 --- a/tests/baselines/reference/jsDeclarationsClassMethod.types +++ b/tests/baselines/reference/jsDeclarationsClassMethod.types @@ -13,14 +13,14 @@ function C1() { */ this.prop = function (x, y) { >this.prop = function (x, y) { return x + y; } : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >this.prop : any >this : this > : ^^^^ >prop : any > : ^^^ >function (x, y) { return x + y; } : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -44,7 +44,7 @@ function C1() { */ C1.prototype.method = function (x, y) { >C1.prototype.method = function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >C1.prototype.method : any >C1.prototype : any > : ^^^ @@ -55,7 +55,7 @@ C1.prototype.method = function (x, y) { >method : any > : ^^^ >function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -78,15 +78,15 @@ C1.prototype.method = function (x, y) { */ C1.staticProp = function (x, y) { >C1.staticProp = function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >C1.staticProp : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >C1 : typeof C1 > : ^^^^^^^^^ >staticProp : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : number @@ -113,7 +113,7 @@ class C2 { */ method1(x, y) { >method1 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : number > : ^^^^^^ >y : number @@ -137,9 +137,9 @@ class C2 { */ C2.prototype.method2 = function (x, y) { >C2.prototype.method2 = function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >C2.prototype.method2 : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >C2.prototype : C2 > : ^^ >C2 : typeof C2 @@ -147,9 +147,9 @@ C2.prototype.method2 = function (x, y) { >prototype : C2 > : ^^ >method2 : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -172,15 +172,15 @@ C2.prototype.method2 = function (x, y) { */ C2.staticProp = function (x, y) { >C2.staticProp = function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >C2.staticProp : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >C2 : typeof C2 > : ^^^^^^^^^ >staticProp : (x: number, y: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >function (x, y) { return x + y;} : (x: number, y: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : >x : number > : ^^^^^^ >y : number diff --git a/tests/baselines/reference/jsDeclarationsClassStatic.types b/tests/baselines/reference/jsDeclarationsClassStatic.types index c856a77077c6c..5aadf2943f81a 100644 --- a/tests/baselines/reference/jsDeclarationsClassStatic.types +++ b/tests/baselines/reference/jsDeclarationsClassStatic.types @@ -29,7 +29,7 @@ Handler.statische = function() { } >statische : () => void > : ^^^^^^^^^^ >function() { } : () => void -> : ^^^^^^^^^^ +> : const Strings = { >Strings : { a: string; b: string; } @@ -76,7 +76,7 @@ module.exports.Strings = Strings >Strings : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Strings : { a: string; b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** * @typedef {Object} HandlerOptions diff --git a/tests/baselines/reference/jsDeclarationsClasses.types b/tests/baselines/reference/jsDeclarationsClasses.types index 169867c59b7d0..02d06cb9a3656 100644 --- a/tests/baselines/reference/jsDeclarationsClasses.types +++ b/tests/baselines/reference/jsDeclarationsClasses.types @@ -206,7 +206,7 @@ export class F { */ static create(a, b) { return new F(a, b); } >create : (a: A, b: B) => F -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >a : A > : ^ >b : B diff --git a/tests/baselines/reference/jsDeclarationsComputedNames.types b/tests/baselines/reference/jsDeclarationsComputedNames.types index 5410fef1edca6..8d35786d1c193 100644 --- a/tests/baselines/reference/jsDeclarationsComputedNames.types +++ b/tests/baselines/reference/jsDeclarationsComputedNames.types @@ -19,19 +19,19 @@ const InnerSym = Symbol(); module.exports = { >module.exports = { [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^^^ >{ [TopLevelSym](x = 12) { return x; }, items: { [InnerSym]: (arg = {x: 12}) => arg.x }} : { [TopLevelSym](x?: number): number; items: { [InnerSym]: (arg?: { x: number; }) => number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^^^^^^ [TopLevelSym](x = 12) { >[TopLevelSym] : (x?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >TopLevelSym : unique symbol > : ^^^^^^^^^^^^^ >x : number @@ -46,17 +46,17 @@ module.exports = { }, items: { >items : { [InnerSym]: (arg?: { x: number; }) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ [InnerSym]: (arg = {x: 12}) => arg.x } : { [InnerSym]: (arg?: { x: number; }) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^ ^^^ [InnerSym]: (arg = {x: 12}) => arg.x >[InnerSym] : (arg?: { x: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >InnerSym : unique symbol > : ^^^^^^^^^^^^^ >(arg = {x: 12}) => arg.x : (arg?: { x: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >arg : { x: number; } > : ^^^^^^^^^^^^^^ >{x: 12} : { x: number; } diff --git a/tests/baselines/reference/jsDeclarationsDefault.types b/tests/baselines/reference/jsDeclarationsDefault.types index dc8faa8b63066..d5cc869b2d641 100644 --- a/tests/baselines/reference/jsDeclarationsDefault.types +++ b/tests/baselines/reference/jsDeclarationsDefault.types @@ -17,13 +17,13 @@ export const x = foo; >x : () => typeof foo > : ^^^^^^^^^^^^^^^^ >foo : () => typeof foo -> : ^^^^^^^^^^^^^^^^ +> : export { foo as bar }; >foo : () => typeof foo > : ^^^^^^^^^^^^^^^^ >bar : () => typeof foo -> : ^^^^^^^^^^^^^^^^ +> : === index3.js === export default class Foo { diff --git a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types index 4b3dc45602f41..1742a249ff5a9 100644 --- a/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types +++ b/tests/baselines/reference/jsDeclarationsDocCommentsOnConsts.types @@ -6,9 +6,9 @@ */ const x = (a) => { >x : (a: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(a) => { return '';} : (a: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : >a : any return ''; @@ -39,9 +39,9 @@ module.exports = {x, b} >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >{x, b} : { x: (a: any) => string; b: () => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : (a: any) => string -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >b : () => number > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsEnumTag.types b/tests/baselines/reference/jsDeclarationsEnumTag.types index a77f163a4bb3a..b64687528da36 100644 --- a/tests/baselines/reference/jsDeclarationsEnumTag.types +++ b/tests/baselines/reference/jsDeclarationsEnumTag.types @@ -56,15 +56,15 @@ export const Second = { /** @enum {function(number): number} */ export const Fs = { >Fs : { ADD1: (n: any) => any; ID: (n: any) => any; SUB1: (n: any) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >{ ADD1: n => n + 1, ID: n => n, SUB1: n => n - 1} : { ADD1: (n: any) => any; ID: (n: any) => any; SUB1: (n: any) => number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^ ^^^^^^^^ ^^^ ADD1: n => n + 1, >ADD1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n => n + 1 : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any >n + 1 : any >n : any @@ -73,17 +73,17 @@ export const Fs = { ID: n => n, >ID : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >n => n : (n: any) => any -> : ^^^^^^^^^^^^^^^ +> : >n : any >n : any SUB1: n => n - 1 >SUB1 : (n: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >n => n - 1 : (n: any) => number -> : ^^^^^^^^^^^^^^^^^^ +> : >n : any >n - 1 : number > : ^^^^^^ @@ -99,7 +99,7 @@ export const Fs = { */ export function consume(t,s,f) { >consume : (t: Target, s: Second, f: Fs) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : string > : ^^^^^^ >s : number @@ -124,7 +124,7 @@ export function consume(t,s,f) { /** @type {(n: number) => number} */ var fun = f >fun : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f : Fs > : ^^ @@ -150,7 +150,7 @@ export function consume(t,s,f) { /** @param {string} s */ export function ff(s) { >ff : (s: string) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types index 6e80092726ba8..0c51b42f48ee4 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunction.types @@ -47,13 +47,13 @@ module.exports.MyClass.prototype = { >prototype : { a: () => void; } > : ^^^^^^^^^^^^^^^^^^ >{ a: function() { }} : { a: () => void; } -> : ^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ a: function() { >a : () => void > : ^^^^^^^^^^ >function() { } : () => void -> : ^^^^^^^^^^ +> : } } diff --git a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types index 187886250a74f..835fccd045001 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignedConstructorFunctionWithSub.types @@ -6,13 +6,13 @@ */ module.exports = function (p) { >module.exports = function (p) { this.t = 12 + p;} : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function (p) { this.t = 12 + p;} : typeof exports > : ^^^^^^^^^^^^^^ >p : number @@ -40,11 +40,11 @@ module.exports.Sub = function() { >module.exports.Sub : typeof Sub > : ^^^^^^^^^^ >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Sub : typeof Sub > : ^^^^^^^^^^ >function() { this.instance = new module.exports(10);} : typeof Sub @@ -62,11 +62,11 @@ module.exports.Sub = function() { >new module.exports(10) : exports > : ^^^^^^^ >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >10 : 10 > : ^^ } @@ -78,11 +78,11 @@ module.exports.Sub.prototype = { } >module.exports.Sub : typeof Sub > : ^^^^^^^^^^ >module.exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { (p: number): void; new (p: number): exports; Sub: typeof Sub; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { (p: number): void; new (p: number): exports; Sub: typeof Sub; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Sub : typeof Sub > : ^^^^^^^^^^ >prototype : {} diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types index 5b19ccc28975b..35345e18ee16e 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentExpressionPlusSecondary.types @@ -28,7 +28,7 @@ module.exports = { >module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ >{ thing: "ok", also: "ok", desc: { item: "ok" }} : { thing: string; also: string; desc: { item: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -67,9 +67,9 @@ module.exports.Strings = Strings; >module : { exports: { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { thing: string; also: string; desc: { item: string; }; Strings: { a: string; b: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ >Strings : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Strings : { a: string; b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types index 3ed6c68171263..ec922f7e920fc 100644 --- a/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types +++ b/tests/baselines/reference/jsDeclarationsExportAssignmentWithKeywordName.types @@ -15,7 +15,7 @@ module.exports = { >module : { exports: { extends: string; more: { others: string[]; }; x: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { extends: string; more: { others: string[]; }; x: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ >{ extends: 'base', more: { others: ['strs'] }, x} : { extends: string; more: { others: string[]; }; x: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types index 8dc0052fa39f2..5b68babfe6649 100644 --- a/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types +++ b/tests/baselines/reference/jsDeclarationsExportDefinePropertyEmit.types @@ -5,11 +5,11 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >Object.defineProperty(module.exports, "a", { value: function a() {} }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -23,7 +23,7 @@ Object.defineProperty(module.exports, "a", { value: function a() {} }); >value : () => void > : ^^^^^^^^^^ >function a() {} : () => void -> : ^^^^^^^^^^ +> : >a : () => void > : ^^^^^^^^^^ @@ -31,11 +31,11 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >Object.defineProperty(module.exports, "b", { value: function b() {} }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -49,7 +49,7 @@ Object.defineProperty(module.exports, "b", { value: function b() {} }); >value : () => void > : ^^^^^^^^^^ >function b() {} : () => void -> : ^^^^^^^^^^ +> : >b : () => void > : ^^^^^^^^^^ @@ -57,11 +57,11 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); >Object.defineProperty(module.exports.b, "cat", { value: "cat" }) : () => void > : ^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports.b : () => void > : ^^^^^^^^^^ >module.exports : typeof module.exports @@ -88,7 +88,7 @@ Object.defineProperty(module.exports.b, "cat", { value: "cat" }); */ function d(a, b) { return /** @type {*} */(null); } >d : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -99,11 +99,11 @@ Object.defineProperty(module.exports, "d", { value: d }); >Object.defineProperty(module.exports, "d", { value: d }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -113,11 +113,11 @@ Object.defineProperty(module.exports, "d", { value: d }); >"d" : "d" > : ^^^ >{ value: d } : { value: (a: number, b: number) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ >value : (a: number, b: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >d : (a: number, b: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** @@ -128,7 +128,7 @@ Object.defineProperty(module.exports, "d", { value: d }); */ function e(a, b) { return /** @type {*} */(null); } >e : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : U @@ -139,11 +139,11 @@ Object.defineProperty(module.exports, "e", { value: e }); >Object.defineProperty(module.exports, "e", { value: e }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -153,11 +153,11 @@ Object.defineProperty(module.exports, "e", { value: e }); >"e" : "e" > : ^^^ >{ value: e } : { value: (a: T, b: U) => T & U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >value : (a: T, b: U) => T & U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >e : (a: T, b: U) => T & U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** * @template T @@ -165,7 +165,7 @@ Object.defineProperty(module.exports, "e", { value: e }); */ function f(a) { >f : (a: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >a : T > : ^ @@ -177,11 +177,11 @@ Object.defineProperty(module.exports, "f", { value: f }); >Object.defineProperty(module.exports, "f", { value: f }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -191,23 +191,23 @@ Object.defineProperty(module.exports, "f", { value: f }); >"f" : "f" > : ^^^ >{ value: f } : { value: (a: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >value : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >f : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >Object.defineProperty(module.exports.f, "self", { value: module.exports.f }) : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports.f : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -215,15 +215,15 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >f : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >"self" : "self" > : ^^^^^^ >{ value: module.exports.f } : { value: (a: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >value : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >module.exports.f : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -231,7 +231,7 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >f : (a: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ /** * @param {{x: string}} a @@ -239,7 +239,7 @@ Object.defineProperty(module.exports.f, "self", { value: module.exports.f }); */ function g(a, b) { >g : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: () => void; } @@ -267,11 +267,11 @@ Object.defineProperty(module.exports, "g", { value: g }); >Object.defineProperty(module.exports, "g", { value: g }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -281,11 +281,11 @@ Object.defineProperty(module.exports, "g", { value: g }); >"g" : "g" > : ^^^ >{ value: g } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** @@ -294,7 +294,7 @@ Object.defineProperty(module.exports, "g", { value: g }); */ function hh(a, b) { >hh : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: () => void; } @@ -322,11 +322,11 @@ Object.defineProperty(module.exports, "h", { value: hh }); >Object.defineProperty(module.exports, "h", { value: hh }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -336,21 +336,21 @@ Object.defineProperty(module.exports, "h", { value: hh }); >"h" : "h" > : ^^^ >{ value: hh } : { value: (a: { x: string; }, b: { y: () => void; }) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >hh : (a: { x: string; }, b: { y: () => void; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : Object.defineProperty(module.exports, "i", { value: function i(){} }); >Object.defineProperty(module.exports, "i", { value: function i(){} }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -364,7 +364,7 @@ Object.defineProperty(module.exports, "i", { value: function i(){} }); >value : () => void > : ^^^^^^^^^^ >function i(){} : () => void -> : ^^^^^^^^^^ +> : >i : () => void > : ^^^^^^^^^^ @@ -372,11 +372,11 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >Object.defineProperty(module.exports, "ii", { value: module.exports.i }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -390,7 +390,7 @@ Object.defineProperty(module.exports, "ii", { value: module.exports.i }); >value : () => void > : ^^^^^^^^^^ >module.exports.i : () => void -> : ^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -405,11 +405,11 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >Object.defineProperty(module.exports, "jj", { value: module.exports.j }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -423,7 +423,7 @@ Object.defineProperty(module.exports, "jj", { value: module.exports.j }); >value : () => void > : ^^^^^^^^^^ >module.exports.j : () => void -> : ^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -437,11 +437,11 @@ Object.defineProperty(module.exports, "j", { value: function j() {} }); >Object.defineProperty(module.exports, "j", { value: function j() {} }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -455,7 +455,7 @@ Object.defineProperty(module.exports, "j", { value: function j() {} }); >value : () => void > : ^^^^^^^^^^ >function j() {} : () => void -> : ^^^^^^^^^^ +> : >j : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types index 6538770dcc147..c82af50cd6263 100644 --- a/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types +++ b/tests/baselines/reference/jsDeclarationsExportDoubleAssignmentInClosure.types @@ -8,18 +8,18 @@ function foo() { module.exports = exports = function (o) { >module.exports = exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : { (o: any): any; methods: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports : { (o: any): any; methods: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module : { exports: { (o: any): any; methods: () => void; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { (o: any): any; methods: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ >exports = function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >exports : any >function (o) { return (o == null) ? create(base) : defineProperties(Object(o), descriptors); } : (o: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >o : any return (o == null) ? create(base) : defineProperties(Object(o), descriptors); @@ -45,7 +45,7 @@ function foo() { >m : () => void > : ^^^^^^^^^^ >function () { // I have no idea what to put here } : () => void -> : ^^^^^^^^^^ +> : // I have no idea what to put here } diff --git a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types index c1e7ef8bb85c3..8c8491c385e94 100644 --- a/tests/baselines/reference/jsDeclarationsExportSubAssignments.types +++ b/tests/baselines/reference/jsDeclarationsExportSubAssignments.types @@ -50,5 +50,5 @@ module.exports.Strings = Strings; >Strings : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Strings : { a: string; b: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types index cf7f245e64ff4..bd188227beb80 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types +++ b/tests/baselines/reference/jsDeclarationsFunctionClassesCjsExportAssignment.types @@ -131,32 +131,32 @@ function Context(input) { >this.state = this.construct(input) : State > : ^^^^^ >this.state : any ->this : this & { construct(input: Input, handle?: import("hook").HookHandler): State; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this : this & { construct(input: Input, handle?: HookHandler | undefined): State; } +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >state : any > : ^^^ >this.construct(input) : State > : ^^^^^ ->this.construct : (input: Input, handle?: import("hook").HookHandler) => State -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this : this & { construct(input: Input, handle?: import("hook").HookHandler): State; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->construct : (input: Input, handle?: import("hook").HookHandler) => State -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.construct : (input: Input, handle?: HookHandler | undefined) => State +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ +>this : this & { construct(input: Input, handle?: HookHandler | undefined): State; } +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>construct : (input: Input, handle?: HookHandler | undefined) => State +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >input : Input > : ^^^^^ } Context.prototype = { >Context.prototype = { /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ >Context.prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ >Context : typeof Context > : ^^^^^^^^^^^^^^ ->prototype : { construct(input: Input, handle?: import("hook").HookHandler): State; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>prototype : { construct(input: Input, handle?: HookHandler | undefined): State; } +> : ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >{ /** * @param {Input} input * @param {HookHandler=} handle * @returns {State} */ construct(input, handle = () => void 0) { return input; }} : { construct(input: Input, handle?: HookHandler | undefined): State; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^ /** * @param {Input} input @@ -165,7 +165,7 @@ Context.prototype = { */ construct(input, handle = () => void 0) { >construct : (input: Input, handle?: HookHandler | undefined) => State -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ >input : Input > : ^^^^^ >handle : import("hook").HookHandler @@ -183,14 +183,14 @@ Context.prototype = { } } module.exports = Context; ->module.exports = Context : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("hook").HookHandler): State; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->module.exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("hook").HookHandler): State; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->module : { exports: { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("hook").HookHandler): State; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: import("hook").HookHandler): State; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>module.exports = Context : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>module.exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ +>module : { exports: { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; }; } +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>exports : { (input: Input): Context; new (input: Input): Context; prototype: { construct(input: Input, handle?: HookHandler | undefined): State; }; } +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^ ^^^ >Context : typeof Context > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsFunctionJSDoc.types b/tests/baselines/reference/jsDeclarationsFunctionJSDoc.types index 23f0f76b9ad07..49ae96d4bc906 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionJSDoc.types +++ b/tests/baselines/reference/jsDeclarationsFunctionJSDoc.types @@ -8,7 +8,7 @@ */ export function foo(a, b) {} >foo : (a: number, b: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : string diff --git a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.types b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.types index b8fbb32a77433..5b49f19f16634 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.types +++ b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses.types @@ -68,7 +68,7 @@ import {Point} from "./source"; */ export function magnitude(p) { >magnitude : (p: Point) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p : Point > : ^^^^^ @@ -76,11 +76,11 @@ export function magnitude(p) { >Math.sqrt(p.x ** 2 + p.y ** 2) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >p.x ** 2 + p.y ** 2 : number > : ^^^^^^ >p.x ** 2 : number diff --git a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses2.types b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses2.types index 010f78f8be4d1..2ec24b2c2fa90 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionLikeClasses2.types +++ b/tests/baselines/reference/jsDeclarationsFunctionLikeClasses2.types @@ -32,22 +32,22 @@ export function Vec(len) { Vec.prototype = { >Vec.prototype = { /** * @param {Vec} other */ dot(other) { if (other.storage.length !== this.storage.length) { throw new Error(`Dot product only applicable for vectors of equal length`); } let sum = 0; for (let i = 0; i < this.storage.length; i++) { sum += (this.storage[i] * other.storage[i]); } return sum; }, magnitude() { let sum = 0; for (let i = 0; i < this.storage.length; i++) { sum += (this.storage[i] ** 2); } return Math.sqrt(sum); }} : { dot(other: Vec): number; magnitude(): number; } -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Vec.prototype : { dot(other: Vec): number; magnitude(): number; } -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Vec : typeof Vec > : ^^^^^^^^^^ >prototype : { dot(other: Vec): number; magnitude(): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ /** * @param {Vec} other */ dot(other) { if (other.storage.length !== this.storage.length) { throw new Error(`Dot product only applicable for vectors of equal length`); } let sum = 0; for (let i = 0; i < this.storage.length; i++) { sum += (this.storage[i] * other.storage[i]); } return sum; }, magnitude() { let sum = 0; for (let i = 0; i < this.storage.length; i++) { sum += (this.storage[i] ** 2); } return Math.sqrt(sum); }} : { dot(other: Vec): number; magnitude(): number; } -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /** * @param {Vec} other */ dot(other) { >dot : (other: Vec) => number -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >other : Vec > : ^^^ @@ -208,11 +208,11 @@ Vec.prototype = { >Math.sqrt(sum) : number > : ^^^^^^ >Math.sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Math : Math > : ^^^^ >sqrt : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >sum : number > : ^^^^^^ } @@ -255,11 +255,11 @@ export function Point2D(x, y) { Vec.call(this, 2); >Vec.call(this, 2) : any >Vec.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >Vec : typeof Vec > : ^^^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >this : this > : ^^^^ >2 : 2 diff --git a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types index fea3d97e638a1..3d4a2f1c758a8 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types +++ b/tests/baselines/reference/jsDeclarationsFunctionPrototypeStatic.types @@ -27,7 +27,7 @@ MyClass.staticMethod = function() {} >staticMethod : () => void > : ^^^^^^^^^^ >function() {} : () => void -> : ^^^^^^^^^^ +> : MyClass.prototype.method = function() {} >MyClass.prototype.method = function() {} : () => void diff --git a/tests/baselines/reference/jsDeclarationsFunctions.types b/tests/baselines/reference/jsDeclarationsFunctions.types index f3d5f1b97e37b..107ebff2cf380 100644 --- a/tests/baselines/reference/jsDeclarationsFunctions.types +++ b/tests/baselines/reference/jsDeclarationsFunctions.types @@ -44,7 +44,7 @@ c.Cls = class {} */ export function d(a, b) { return /** @type {*} */(null); } >d : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -59,7 +59,7 @@ export function d(a, b) { return /** @type {*} */(null); } */ export function e(a, b) { return /** @type {*} */(null); } >e : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : U @@ -98,7 +98,7 @@ f.self = f; */ function g(a, b) { >g : (a: { x: string; }, b: { y: typeof import("index").b; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: typeof import("index").b; } @@ -125,7 +125,7 @@ function g(a, b) { export { g }; >g : (a: { x: string; }, b: { y: typeof b; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ /** * @param {{x: string}} a @@ -133,7 +133,7 @@ export { g }; */ function hh(a, b) { >hh : (a: { x: string; }, b: { y: typeof import("index").b; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: typeof import("index").b; } @@ -160,9 +160,9 @@ function hh(a, b) { export { hh as h }; >hh : (a: { x: string; }, b: { y: typeof b; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >h : (a: { x: string; }, b: { y: typeof b; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : export function i() {} >i : () => void @@ -172,13 +172,13 @@ export { i as ii }; >i : () => void > : ^^^^^^^^^^ >ii : () => void -> : ^^^^^^^^^^ +> : export { j as jj }; >j : () => void > : ^^^^^^^^^^ >jj : () => void -> : ^^^^^^^^^^ +> : export function j() {} >j : () => void diff --git a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types index 674742e149f64..27c56a602976b 100644 --- a/tests/baselines/reference/jsDeclarationsFunctionsCjs.types +++ b/tests/baselines/reference/jsDeclarationsFunctionsCjs.types @@ -15,7 +15,7 @@ module.exports.a = function a() {} >a : () => void > : ^^^^^^^^^^ >function a() {} : () => void -> : ^^^^^^^^^^ +> : >a : () => void > : ^^^^^^^^^^ @@ -33,7 +33,7 @@ module.exports.b = function b() {} >b : { (): void; cat: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >function b() {} : { (): void; cat: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >b : { (): void; cat: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -71,7 +71,7 @@ module.exports.c = function c() {} >c : { (): void; Cls: typeof Cls; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function c() {} : { (): void; Cls: typeof Cls; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >c : { (): void; Cls: typeof Cls; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -102,9 +102,9 @@ module.exports.c.Cls = class {} */ module.exports.d = function d(a, b) { return /** @type {*} */(null); } >module.exports.d = function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >module.exports.d : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -112,11 +112,11 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >d : (a: number, b: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >function d(a, b) { return /** @type {*} */(null); } : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : >d : (a: number, b: number) => string -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -131,9 +131,9 @@ module.exports.d = function d(a, b) { return /** @type {*} */(null); } */ module.exports.e = function e(a, b) { return /** @type {*} */(null); } >module.exports.e = function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports.e : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -141,11 +141,11 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >e : (a: T, b: U) => T & U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >function e(a, b) { return /** @type {*} */(null); } : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^ +> : >e : (a: T, b: U) => T & U -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >a : T > : ^ >b : U @@ -158,9 +158,9 @@ module.exports.e = function e(a, b) { return /** @type {*} */(null); } */ module.exports.f = function f(a) { >module.exports.f = function f(a) { return a;} : { (a: T): T; self: any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >module.exports.f : { (a: T): T; self: any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -168,11 +168,11 @@ module.exports.f = function f(a) { >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >function f(a) { return a;} : { (a: T): T; self: any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : >f : { (a: T): T; self: any; } -> : ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -182,11 +182,11 @@ module.exports.f = function f(a) { } module.exports.f.self = module.exports.f; >module.exports.f.self = module.exports.f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >module.exports.f.self : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >module.exports.f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -194,11 +194,11 @@ module.exports.f.self = module.exports.f; >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >self : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >module.exports.f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -206,7 +206,7 @@ module.exports.f.self = module.exports.f; >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >f : { (a: T): T; self: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ /** * @param {{x: string}} a @@ -214,7 +214,7 @@ module.exports.f.self = module.exports.f; */ function g(a, b) { >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: { (): void; cat: string; }; } @@ -241,9 +241,9 @@ function g(a, b) { module.exports.g = g; >module.exports.g = g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports.g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -251,9 +251,9 @@ module.exports.g = g; >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : /** * @param {{x: string}} a @@ -261,7 +261,7 @@ module.exports.g = g; */ function hh(a, b) { >hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string; } > : ^^^^^^^^^^^^^^ >b : { y: { (): void; cat: string; }; } @@ -288,9 +288,9 @@ function hh(a, b) { module.exports.h = hh; >module.exports.h = hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports.h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -298,9 +298,9 @@ module.exports.h = hh; >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >h : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >hh : (a: { x: string; }, b: { y: { (): void; cat: string; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : module.exports.i = function i() {} >module.exports.i = function i() {} : () => void @@ -316,7 +316,7 @@ module.exports.i = function i() {} >i : () => void > : ^^^^^^^^^^ >function i() {} : () => void -> : ^^^^^^^^^^ +> : >i : () => void > : ^^^^^^^^^^ @@ -334,7 +334,7 @@ module.exports.ii = module.exports.i; >ii : () => void > : ^^^^^^^^^^ >module.exports.i : () => void -> : ^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -359,7 +359,7 @@ module.exports.jj = module.exports.j; >jj : () => void > : ^^^^^^^^^^ >module.exports.j : () => void -> : ^^^^^^^^^^ +> : >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -383,7 +383,7 @@ module.exports.j = function j() {} >j : () => void > : ^^^^^^^^^^ >function j() {} : () => void -> : ^^^^^^^^^^ +> : >j : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsGetterSetter.types b/tests/baselines/reference/jsDeclarationsGetterSetter.types index 98aafb876b352..9577cac96a777 100644 --- a/tests/baselines/reference/jsDeclarationsGetterSetter.types +++ b/tests/baselines/reference/jsDeclarationsGetterSetter.types @@ -58,11 +58,11 @@ Object.defineProperty(D.prototype, "x", { >Object.defineProperty(D.prototype, "x", { get() { return 12; }}) : D > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >D.prototype : D > : ^ >D : typeof D @@ -92,11 +92,11 @@ Object.defineProperty(E.prototype, "x", { >Object.defineProperty(E.prototype, "x", { /** * @param {number} _arg */ set(_arg) {}}) : E > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >E.prototype : E > : ^ >E : typeof E @@ -106,14 +106,14 @@ Object.defineProperty(E.prototype, "x", { >"x" : "x" > : ^^^ >{ /** * @param {number} _arg */ set(_arg) {}} : { set(_arg: number): void; } -> : ^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ /** * @param {number} _arg */ set(_arg) {} >set : (_arg: number) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_arg : number > : ^^^^^^ @@ -127,11 +127,11 @@ Object.defineProperty(F.prototype, "x", { >Object.defineProperty(F.prototype, "x", { get() { return 12; }, /** * @param {number} _arg */ set(_arg) {}}) : F > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >F.prototype : F > : ^ >F : typeof F @@ -141,7 +141,7 @@ Object.defineProperty(F.prototype, "x", { >"x" : "x" > : ^^^ >{ get() { return 12; }, /** * @param {number} _arg */ set(_arg) {}} : { get(): number; set(_arg: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ get() { >get : () => number @@ -157,7 +157,7 @@ Object.defineProperty(F.prototype, "x", { */ set(_arg) {} >set : (_arg: number) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >_arg : number > : ^^^^^^ @@ -171,11 +171,11 @@ Object.defineProperty(G.prototype, "x", { >Object.defineProperty(G.prototype, "x", { /** * @param {number[]} args */ set(...args) {}}) : G > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >G.prototype : G > : ^ >G : typeof G @@ -185,14 +185,14 @@ Object.defineProperty(G.prototype, "x", { >"x" : "x" > : ^^^ >{ /** * @param {number[]} args */ set(...args) {}} : { set(...args: number[]): void; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^ /** * @param {number[]} args */ set(...args) {} >set : (...args: number[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : number[] > : ^^^^^^^^ @@ -206,11 +206,11 @@ Object.defineProperty(H.prototype, "x", { >Object.defineProperty(H.prototype, "x", { set() {}}) : H > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >H.prototype : H > : ^ >H : typeof H @@ -237,11 +237,11 @@ Object.defineProperty(I.prototype, "x", { >Object.defineProperty(I.prototype, "x", { /** * @param {number} v */ set: (v) => {}}) : I > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >I.prototype : I > : ^ >I : typeof I @@ -251,16 +251,16 @@ Object.defineProperty(I.prototype, "x", { >"x" : "x" > : ^^^ >{ /** * @param {number} v */ set: (v) => {}} : { set: (v: number) => void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ /** * @param {number} v */ set: (v) => {} >set : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number > : ^^^^^^ @@ -271,9 +271,9 @@ Object.defineProperty(I.prototype, "x", { */ const jSetter = (v) => {} >jSetter : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number > : ^^^^^^ @@ -285,11 +285,11 @@ Object.defineProperty(J.prototype, "x", { >Object.defineProperty(J.prototype, "x", { set: jSetter}) : J > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >J.prototype : J > : ^ >J : typeof J @@ -299,13 +299,13 @@ Object.defineProperty(J.prototype, "x", { >"x" : "x" > : ^^^ >{ set: jSetter} : { set: (v: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ set: jSetter >set : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >jSetter : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : }); @@ -314,9 +314,9 @@ Object.defineProperty(J.prototype, "x", { */ const kSetter1 = (v) => {} >kSetter1 : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number > : ^^^^^^ @@ -325,9 +325,9 @@ const kSetter1 = (v) => {} */ const kSetter2 = (v) => {} >kSetter2 : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number > : ^^^^^^ @@ -339,11 +339,11 @@ Object.defineProperty(K.prototype, "x", { >Object.defineProperty(K.prototype, "x", { set: Math.random() ? kSetter1 : kSetter2}) : K > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >K.prototype : K > : ^ >K : typeof K @@ -353,13 +353,13 @@ Object.defineProperty(K.prototype, "x", { >"x" : "x" > : ^^^ >{ set: Math.random() ? kSetter1 : kSetter2} : { set: (v: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^ set: Math.random() ? kSetter1 : kSetter2 >set : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >Math.random() ? kSetter1 : kSetter2 : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >Math.random() : number > : ^^^^^^ >Math.random : () => number @@ -369,9 +369,9 @@ Object.defineProperty(K.prototype, "x", { >random : () => number > : ^^^^^^^^^^^^ >kSetter1 : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kSetter2 : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ }); @@ -380,9 +380,9 @@ Object.defineProperty(K.prototype, "x", { */ const lSetter1 = (v) => {} >lSetter1 : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number > : ^^^^^^ @@ -391,9 +391,9 @@ const lSetter1 = (v) => {} */ const lSetter2 = (v) => {} >lSetter2 : (v: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: string) => void -> : ^^^^ ^^^^^^^^^ +> : >v : string > : ^^^^^^ @@ -405,11 +405,11 @@ Object.defineProperty(L.prototype, "x", { >Object.defineProperty(L.prototype, "x", { set: Math.random() ? lSetter1 : lSetter2}) : L > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >L.prototype : L > : ^ >L : typeof L @@ -419,13 +419,13 @@ Object.defineProperty(L.prototype, "x", { >"x" : "x" > : ^^^ >{ set: Math.random() ? lSetter1 : lSetter2} : { set: ((v: number) => void) | ((v: string) => void); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ set: Math.random() ? lSetter1 : lSetter2 >set : ((v: number) => void) | ((v: string) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >Math.random() ? lSetter1 : lSetter2 : ((v: number) => void) | ((v: string) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^ >Math.random() : number > : ^^^^^^ >Math.random : () => number @@ -435,9 +435,9 @@ Object.defineProperty(L.prototype, "x", { >random : () => number > : ^^^^^^^^^^^^ >lSetter1 : (v: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >lSetter2 : (v: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ }); @@ -446,9 +446,9 @@ Object.defineProperty(L.prototype, "x", { */ const mSetter1 = (v) => {} >mSetter1 : (v: number | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: number | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : >v : number | boolean > : ^^^^^^^^^^^^^^^^ @@ -457,9 +457,9 @@ const mSetter1 = (v) => {} */ const mSetter2 = (v) => {} >mSetter2 : (v: string | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v) => {} : (v: string | boolean) => void -> : ^^^^ ^^^^^^^^^ +> : >v : string | boolean > : ^^^^^^^^^^^^^^^^ @@ -471,11 +471,11 @@ Object.defineProperty(M.prototype, "x", { >Object.defineProperty(M.prototype, "x", { set: Math.random() ? mSetter1 : mSetter2}) : M > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >M.prototype : M > : ^ >M : typeof M @@ -485,13 +485,13 @@ Object.defineProperty(M.prototype, "x", { >"x" : "x" > : ^^^ >{ set: Math.random() ? mSetter1 : mSetter2} : { set: ((v: number | boolean) => void) | ((v: string | boolean) => void); } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ set: Math.random() ? mSetter1 : mSetter2 >set : ((v: number | boolean) => void) | ((v: string | boolean) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >Math.random() ? mSetter1 : mSetter2 : ((v: number | boolean) => void) | ((v: string | boolean) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^ >Math.random() : number > : ^^^^^^ >Math.random : () => number @@ -501,9 +501,9 @@ Object.defineProperty(M.prototype, "x", { >random : () => number > : ^^^^^^^^^^^^ >mSetter1 : (v: number | boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >mSetter2 : (v: string | boolean) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ }); diff --git a/tests/baselines/reference/jsDeclarationsGlobalFileConstFunction.types b/tests/baselines/reference/jsDeclarationsGlobalFileConstFunction.types index 76944b4a8e466..e6c5d62abdc8a 100644 --- a/tests/baselines/reference/jsDeclarationsGlobalFileConstFunction.types +++ b/tests/baselines/reference/jsDeclarationsGlobalFileConstFunction.types @@ -24,7 +24,7 @@ const SomeConstructor2 = function () { >SomeConstructor2 : { (): void; staticMember: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function () {} : { (): void; staticMember: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : }; SomeConstructor2.staticMember = "str"; diff --git a/tests/baselines/reference/jsDeclarationsGlobalFileConstFunctionNamed.types b/tests/baselines/reference/jsDeclarationsGlobalFileConstFunctionNamed.types index b2ff47f06cd5d..a013390db2115 100644 --- a/tests/baselines/reference/jsDeclarationsGlobalFileConstFunctionNamed.types +++ b/tests/baselines/reference/jsDeclarationsGlobalFileConstFunctionNamed.types @@ -26,7 +26,7 @@ const SomeConstructor2 = function Named() { >SomeConstructor2 : { (): void; staticMember: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function Named() {} : { (): void; staticMember: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Named : { (): void; staticMember: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.types b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.types index 328ea7bc289a9..2973791a8506b 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.types +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespace.types @@ -58,7 +58,7 @@ const testFnTypes = { */ function testFn(input) { >testFn : (input: testFnTypes.input) => number | null -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : import("file2").testFnTypes.input > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -87,7 +87,7 @@ function testFn(input) { export {testFn, testFnTypes}; >testFn : (input: testFnTypes.input) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFnTypes : { [x: string]: any; } > : ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types index 97632f63c0952..d4dc499e2b4a0 100644 --- a/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types +++ b/tests/baselines/reference/jsDeclarationsImportAliasExposedWithinNamespaceCjs.types @@ -34,7 +34,7 @@ const testFnTypes = { */ function testFn(input) { >testFn : (input: testFnTypes.input) => number | null -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : boolean | myTypes.typeC > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -71,9 +71,9 @@ module.exports = {testFn, testFnTypes}; >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >{testFn, testFnTypes} : { testFn: (input: testFnTypes.input) => number; testFnTypes: { [x: string]: any; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFn : (input: testFnTypes.input) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testFnTypes : { [x: string]: any; } > : ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsInterfaces.types b/tests/baselines/reference/jsDeclarationsInterfaces.types index 4553a70389d20..e3ca274c7120d 100644 --- a/tests/baselines/reference/jsDeclarationsInterfaces.types +++ b/tests/baselines/reference/jsDeclarationsInterfaces.types @@ -49,23 +49,23 @@ export interface C { method(): number; >method : { (): number; (a: T & Q_1): Q_1 & number; (a?: number): number; (...args: any[]): number; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ method(a: T & Q): Q & number; >method : { (): number; (a: T & Q): Q & number; (a?: number): number; (...args: any[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >a : T & Q > : ^^^^^ method(a?: number): number; >method : { (): number; (a: T & Q_1): Q_1 & number; (a?: number): number; (...args: any[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >a : number > : ^^^^^^ method(...args: any[]): number; >method : { (): number; (a: T & Q_1): Q_1 & number; (a?: number): number; (...args: any[]): number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >args : any[] > : ^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types index ab410b0c5da13..3d3dcfdfda2ad 100644 --- a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types +++ b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types @@ -68,11 +68,11 @@ >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/jsDeclarationsJson.types b/tests/baselines/reference/jsDeclarationsJson.types index e2c8ac22f59ed..71d3625b754e1 100644 --- a/tests/baselines/reference/jsDeclarationsJson.types +++ b/tests/baselines/reference/jsDeclarationsJson.types @@ -5,7 +5,7 @@ const j = require("./obj.json"); >j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >require("./obj.json") : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ ^ ^ >require : any >"./obj.json" : "./obj.json" > : ^^^^^^^^^^^^ @@ -18,9 +18,9 @@ module.exports = j; >module : { exports: { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^ ^ ^ ^^^ >j : { x: number; y: number; obj: { items: ({ x: number; y?: undefined; err?: undefined; } | { x: number; y: number; err?: undefined; } | { x: number; err: boolean; y?: undefined; })[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ^ ^ ^ ^^^ === obj.json === { diff --git a/tests/baselines/reference/jsDeclarationsMissingGenerics.types b/tests/baselines/reference/jsDeclarationsMissingGenerics.types index 603e07c8de522..50d9a6d70deaf 100644 --- a/tests/baselines/reference/jsDeclarationsMissingGenerics.types +++ b/tests/baselines/reference/jsDeclarationsMissingGenerics.types @@ -6,7 +6,7 @@ */ function x(x) {} >x : (x: any[]) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ @@ -15,7 +15,7 @@ function x(x) {} */ function y(x) {} >y : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsMissingTypeParameters.types b/tests/baselines/reference/jsDeclarationsMissingTypeParameters.types index 7f05cf2673c60..454a683c9ab2f 100644 --- a/tests/baselines/reference/jsDeclarationsMissingTypeParameters.types +++ b/tests/baselines/reference/jsDeclarationsMissingTypeParameters.types @@ -6,7 +6,7 @@ */ function x(y) { } >x : (y?: any[] | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : any[] > : ^^^^^ @@ -15,7 +15,7 @@ function x(y) { } */ function y(func) { return; } >y : (func: (arg0: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >func : (arg0: any[]) => any > : ^^^^^^^^^^^^^^^^^^^^ @@ -24,7 +24,7 @@ function y(func) { return; } */ function z() { return null ;} >z : () => (any[] | null) -> : ^^^^^^ ^^^^^ +> : ^^^^^^ ^^^ /** * @@ -32,5 +32,5 @@ function z() { return null ;} */ function w() { return null; } >w : () => Promise | null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^^ ^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsNestedParams.types b/tests/baselines/reference/jsDeclarationsNestedParams.types index c7fb37681992b..6b25fa4d0d7f1 100644 --- a/tests/baselines/reference/jsDeclarationsNestedParams.types +++ b/tests/baselines/reference/jsDeclarationsNestedParams.types @@ -14,7 +14,7 @@ class X { */ async cancel({reason, code}) {} >cancel : ({ reason, code }: { reason: string | null; code: string | null;}) => Promise -> : ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^ +> : ^ ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^ >reason : string > : ^^^^^^ >code : string @@ -36,7 +36,7 @@ class Y { */ async cancel({reason, suberr}) {} >cancel : ({ reason, suberr }: { reason: string | null; suberr: { reason: string | null; code: string | null; };}) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^ ^^^^^^^^ ^^^ +> : ^ ^^^ ^^ ^^^^^^^^ ^^^ ^^ ^^^^^^^^ ^^ ^^^^^^^^ ^^^^^^^^ ^^^ >reason : string > : ^^^^^^ >suberr : { reason: string; code: string; } diff --git a/tests/baselines/reference/jsDeclarationsNonIdentifierInferredNames.types b/tests/baselines/reference/jsDeclarationsNonIdentifierInferredNames.types index 388c93593beea..2cdc00213e3af 100644 --- a/tests/baselines/reference/jsDeclarationsNonIdentifierInferredNames.types +++ b/tests/baselines/reference/jsDeclarationsNonIdentifierInferredNames.types @@ -20,9 +20,9 @@ const dynPropName = "data-dyn"; export const ExampleFunctionalComponent = ({ "data-testid": dataTestId, [dynPropName]: dynProp }) => ( >ExampleFunctionalComponent : ({ "data-testid": dataTestId, [dynPropName]: dynProp }: { "data-testid": any; "data-dyn": any; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ "data-testid": dataTestId, [dynPropName]: dynProp }) => ( <>Hello) : ({ "data-testid": dataTestId, [dynPropName]: dynProp }: { "data-testid": any; "data-dyn": any; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >dataTestId : any > : ^^^ >dynPropName : "data-dyn" diff --git a/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps1.types b/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps1.types index ae7a1b060c21a..27ffc27d77c73 100644 --- a/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps1.types +++ b/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps1.types @@ -13,7 +13,7 @@ */ function foo({ a, b, c }) { >foo : ({ a, b, c }: { a: number; b?: number; c?: number;}) => number -> : ^^^^^^^^^^^^^^^ ^^ ^ ^^^ ^ ^^^ ^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^ ^ ^^^ ^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps2.types b/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps2.types index af56338c0492d..11a1a4a23efc6 100644 --- a/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps2.types +++ b/tests/baselines/reference/jsDeclarationsOptionalTypeLiteralProps2.types @@ -13,7 +13,7 @@ */ function foo({ a, b, c }) { >foo : ({ a, b, c }: { a: number; b?: number | undefined; c?: number | undefined;}) => number -> : ^^^^^^^^^^^^^^^ ^^ ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number | undefined diff --git a/tests/baselines/reference/jsDeclarationsPackageJson.types b/tests/baselines/reference/jsDeclarationsPackageJson.types index 7526c3545daa3..a6a325182e84b 100644 --- a/tests/baselines/reference/jsDeclarationsPackageJson.types +++ b/tests/baselines/reference/jsDeclarationsPackageJson.types @@ -5,7 +5,7 @@ const j = require("./package.json"); >j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >require("./package.json") : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >require : any >"./package.json" : "./package.json" > : ^^^^^^^^^^^^^^^^ @@ -18,9 +18,9 @@ module.exports = j; >module : { exports: { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >exports : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >j : { name: string; version: string; description: string; main: string; bin: { cli: string; }; engines: { node: string; }; scripts: { scriptname: string; }; devDependencies: { "@ns/dep": string; }; dependencies: { dep: string; }; repository: string; keywords: string[]; author: string; license: string; homepage: string; config: { o: string[]; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ === package.json === { diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types index 7f20522467de5..12cf7dd32567d 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit1.types @@ -12,7 +12,7 @@ const BaseFactory = () => { >BaseFactory : { (): Base; Base: typeof Base; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return new Base();} : { (): Base; Base: typeof Base; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Base(); >new Base() : Base @@ -66,9 +66,9 @@ const couldntThinkOfAny = {} */ const test = (base) => { >test : (base: InstanceType) => Base -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(base) => { return base;} : (base: InstanceType) => Base -> : ^^^^^^^ ^^^^^^^^^ +> : >base : Base > : ^^^^ diff --git a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types index fa0331b75fb60..ddfa37db74fa3 100644 --- a/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types +++ b/tests/baselines/reference/jsDeclarationsParameterTagReusesInputNodeInEmit2.types @@ -12,7 +12,7 @@ const BaseFactory = () => { >BaseFactory : { (): Base; Base: typeof Base; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return new Base();} : { (): Base; Base: typeof Base; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return new Base(); >new Base() : Base @@ -56,9 +56,9 @@ module.exports = BaseFactory; */ const test = (base) => { >test : (base: InstanceType) => Base -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(base) => { return base;} : (base: InstanceType) => Base -> : ^^^^^^^ ^^^^^^^^^ +> : >base : Base > : ^^^^ diff --git a/tests/baselines/reference/jsDeclarationsReactComponents.types b/tests/baselines/reference/jsDeclarationsReactComponents.types index 5cda46afbe7a6..94962ad5526e9 100644 --- a/tests/baselines/reference/jsDeclarationsReactComponents.types +++ b/tests/baselines/reference/jsDeclarationsReactComponents.types @@ -18,9 +18,9 @@ import PropTypes from "prop-types" const TabbedShowLayout = ({ >TabbedShowLayout : { ({}: {}): JSX.Element; propTypes: { version: PropTypes.Requireable; }; defaultProps: { tabs: undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({}) => { return (

    );} : { ({}: {}): JSX.Element; propTypes: { version: PropTypes.Requireable; }; defaultProps: { tabs: undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : }) => { return ( @@ -42,7 +42,7 @@ TabbedShowLayout.propTypes = { >TabbedShowLayout.propTypes : { version: PropTypes.Requireable; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >TabbedShowLayout : { ({}: {}): JSX.Element; propTypes: { version: PropTypes.Requireable; }; defaultProps: { tabs: undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >propTypes : { version: PropTypes.Requireable; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ version: PropTypes.number,} : { version: PropTypes.Requireable; } @@ -66,7 +66,7 @@ TabbedShowLayout.defaultProps = { >TabbedShowLayout.defaultProps : { tabs: undefined; } > : ^^^^^^^^^^^^^^^^^^^^ >TabbedShowLayout : { ({}: {}): JSX.Element; propTypes: { version: PropTypes.Requireable; }; defaultProps: { tabs: undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defaultProps : { tabs: undefined; } > : ^^^^^^^^^^^^^^^^^^^^ >{ tabs: undefined} : { tabs: undefined; } @@ -82,7 +82,7 @@ TabbedShowLayout.defaultProps = { export default TabbedShowLayout; >TabbedShowLayout : { ({}: {}): JSX.Element; propTypes: { version: PropTypes.Requireable; }; defaultProps: { tabs: undefined; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ === jsDeclarationsReactComponents2.jsx === import React from "react"; @@ -128,7 +128,7 @@ TabbedShowLayout.defaultProps = { >TabbedShowLayout : React.SFC<{}> > : ^^^^^^^^^^^^^ >defaultProps : Partial<{}> | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^^^^^^^ >{ tabs: "default value"} : { tabs: string; } > : ^^^^^^^^^^^^^^^^^ @@ -153,10 +153,10 @@ import React from "react"; * @type {{defaultProps: {tabs: string}} & ((props?: {elem: string}) => JSX.Element)} */ const TabbedShowLayout = () => { ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ >() => { return (
    ok
    );} : { (): JSX.Element; defaultProps: { tabs: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ return ( >(
    ok
    ) : JSX.Element @@ -185,8 +185,8 @@ TabbedShowLayout.defaultProps = { > : ^^^^^^^^^^^^^^^^^ >TabbedShowLayout.defaultProps : { tabs: string; } > : ^^^^^^^^^^^^^^^^^ ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ >defaultProps : { tabs: string; } > : ^^^^^^^^^^^^^^^^^ >{ tabs: "default value"} : { tabs: string; } @@ -201,8 +201,8 @@ TabbedShowLayout.defaultProps = { }; export default TabbedShowLayout; ->TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; } | undefined) => JSX.Element) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>TabbedShowLayout : { defaultProps: { tabs: string; }; } & ((props?: { elem: string; }) => JSX.Element) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ === jsDeclarationsReactComponents4.jsx === import React from "react"; @@ -211,9 +211,9 @@ import React from "react"; const TabbedShowLayout = (/** @type {{className: string}}*/prop) => { >TabbedShowLayout : { (prop: { className: string; }): JSX.Element; defaultProps: { tabs: string; }; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(/** @type {{className: string}}*/prop) => { return (
    ok
    );} : { (prop: { className: string; }): JSX.Element; defaultProps: { tabs: string; }; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >prop : { className: string; } > : ^^^^^^^^^^^^^ ^^^ @@ -251,7 +251,7 @@ TabbedShowLayout.defaultProps = { >TabbedShowLayout.defaultProps : { tabs: string; } > : ^^^^^^^^^^^^^^^^^ >TabbedShowLayout : { (prop: { className: string; }): JSX.Element; defaultProps: { tabs: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defaultProps : { tabs: string; } > : ^^^^^^^^^^^^^^^^^ >{ tabs: "default value"} : { tabs: string; } @@ -267,7 +267,7 @@ TabbedShowLayout.defaultProps = { export default TabbedShowLayout; >TabbedShowLayout : { (prop: { className: string; }): JSX.Element; defaultProps: { tabs: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ === jsDeclarationsReactComponents5.jsx === import React from 'react'; diff --git a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types index ba055d84c4872..af9850461c3af 100644 --- a/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types +++ b/tests/baselines/reference/jsDeclarationsReexportedCjsAlias.types @@ -40,7 +40,7 @@ module.exports = { */ function bar(a) { >bar : (a: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : string > : ^^^^^^ @@ -77,11 +77,11 @@ module.exports = { >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >{ bar, SomeClass} : { bar: (a: string) => string; SomeClass: typeof SomeClass; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bar, >bar : (a: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ SomeClass >SomeClass : typeof SomeClass diff --git a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types index 78ab0ed948bd4..bf35ad195f0cc 100644 --- a/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types +++ b/tests/baselines/reference/jsDeclarationsReferenceToClassInstanceCrossFile.types @@ -32,11 +32,11 @@ console.log("Objects", render.objects); >console.log("Objects", render.objects) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"Objects" : "Objects" > : ^^^^^^^^^ >render.objects : import("rectangle").Rectangle[] @@ -56,11 +56,11 @@ class Rectangle { >console.log("I'm a rectangle!") : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"I'm a rectangle!" : "I'm a rectangle!" > : ^^^^^^^^^^^^^^^^^^ } @@ -132,7 +132,7 @@ class Render { >this.objects.push(obj) : number > : ^^^^^^ >this.objects.push : (...items: Rectangle[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >this.objects : Rectangle[] > : ^^^^^^^^^^^ >this : this @@ -140,7 +140,7 @@ class Render { >objects : Rectangle[] > : ^^^^^^^^^^^ >push : (...items: Rectangle[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Rectangle > : ^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsRestArgsWithThisTypeInJSDocFunction.types b/tests/baselines/reference/jsDeclarationsRestArgsWithThisTypeInJSDocFunction.types index deb0d14bffc7b..0bedff347f130 100644 --- a/tests/baselines/reference/jsDeclarationsRestArgsWithThisTypeInJSDocFunction.types +++ b/tests/baselines/reference/jsDeclarationsRestArgsWithThisTypeInJSDocFunction.types @@ -10,8 +10,8 @@ export class Clazz { */ method(functionDeclaration) {} >method : (functionDeclaration: (this: any, ...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >functionDeclaration : (this: any, ...arg1: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/jsDeclarationsReusesExistingNodesMappingJSDocTypes.types b/tests/baselines/reference/jsDeclarationsReusesExistingNodesMappingJSDocTypes.types index 26d99a5ad713c..03ecf406969e1 100644 --- a/tests/baselines/reference/jsDeclarationsReusesExistingNodesMappingJSDocTypes.types +++ b/tests/baselines/reference/jsDeclarationsReusesExistingNodesMappingJSDocTypes.types @@ -27,12 +27,12 @@ export const e = null; /** @type {function(string, number): object} */ export const f = null; >f : (arg0: string, arg1: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^ /** @type {function(new: object, string, number)} */ export const g = null; >g : new (arg1: string, arg2: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^ /** @type {Object.} */ export const h = null; diff --git a/tests/baselines/reference/jsDeclarationsTypeAliases.types b/tests/baselines/reference/jsDeclarationsTypeAliases.types index 9c55f4ab3452e..8f8e2d6c9285e 100644 --- a/tests/baselines/reference/jsDeclarationsTypeAliases.types +++ b/tests/baselines/reference/jsDeclarationsTypeAliases.types @@ -39,7 +39,7 @@ export {}; // flag file as module */ function doTheThing(x) { >doTheThing : (x: number) => SomeType -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -75,11 +75,11 @@ module.exports = { >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >{ doTheThing, ExportedThing,} : { doTheThing: (x: number) => SomeType; ExportedThing: typeof ExportedThing; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doTheThing, >doTheThing : (x: number) => SomeType -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ExportedThing, >ExportedThing : typeof ExportedThing diff --git a/tests/baselines/reference/jsDeclarationsTypedefAndLatebound.types b/tests/baselines/reference/jsDeclarationsTypedefAndLatebound.types index 9ea3073ee763c..31cf5e7606b73 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefAndLatebound.types +++ b/tests/baselines/reference/jsDeclarationsTypedefAndLatebound.types @@ -21,11 +21,11 @@ stringSet.addAll(stringSet); >stringSet.addAll(stringSet) : void > : ^^^^ >stringSet.addAll : (iterable: LazySet) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >stringSet : LazySet > : ^^^^^^^ >addAll : (iterable: LazySet) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >stringSet : LazySet > : ^^^^^^^ @@ -44,7 +44,7 @@ class LazySet { */ addAll(iterable) {} >addAll : (iterable: LazySet) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >iterable : import("LazySet") > : ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsTypedefFunction.types b/tests/baselines/reference/jsDeclarationsTypedefFunction.types index d56483a180032..25fb960eca4c7 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefFunction.types +++ b/tests/baselines/reference/jsDeclarationsTypedefFunction.types @@ -19,9 +19,9 @@ let id = 0 */ const send = handlers => new Promise((resolve, reject) => { >send : (handlers: ResolveRejectMap) => Promise -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >handlers => new Promise((resolve, reject) => { handlers[++id] = [resolve, reject]}) : (handlers: ResolveRejectMap) => Promise -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : >handlers : ResolveRejectMap > : ^^^^^^^^^^^^^^^^ >new Promise((resolve, reject) => { handlers[++id] = [resolve, reject]}) : Promise @@ -29,15 +29,15 @@ const send = handlers => new Promise((resolve, reject) => { >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >(resolve, reject) => { handlers[++id] = [resolve, reject]} : (resolve: (value: any) => void, reject: (reason?: any) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >resolve : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ handlers[++id] = [resolve, reject] >handlers[++id] = [resolve, reject] : [(value: any) => void, (reason?: any) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >handlers[++id] : [Function, Function] > : ^^^^^^^^^^^^^^^^^^^^ >handlers : ResolveRejectMap @@ -47,10 +47,10 @@ const send = handlers => new Promise((resolve, reject) => { >id : number > : ^^^^^^ >[resolve, reject] : [(value: any) => void, (reason?: any) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >resolve : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ }) diff --git a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.js b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.js index 33df72eb83eb1..3be4e5494ee93 100644 --- a/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.js +++ b/tests/baselines/reference/jsDeclarationsTypedefPropertyAndExportAssignment.js @@ -104,7 +104,7 @@ module.exports = MainThreadTasks; //// [module.d.ts] -export type TaskGroupIds = 'parseHTML' | 'styleLayout'; +export type TaskGroupIds = "parseHTML" | "styleLayout"; export type TaskGroup = { id: TaskGroupIds; label: string; diff --git a/tests/baselines/reference/jsDeclarationsUniqueSymbolUsage.types b/tests/baselines/reference/jsDeclarationsUniqueSymbolUsage.types index 780b084fb8a1a..efd0cf4b2f061 100644 --- a/tests/baselines/reference/jsDeclarationsUniqueSymbolUsage.types +++ b/tests/baselines/reference/jsDeclarationsUniqueSymbolUsage.types @@ -21,7 +21,7 @@ export const kSymbol = Symbol("my-symbol"); */ export function b(value) { >b : (value: import('./a').WithSymbol) => import('./a').WithSymbol -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : import("a").WithSymbol > : ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDocFunctionSignatures6.baseline b/tests/baselines/reference/jsDocFunctionSignatures6.baseline index ca8e7fbd53965..64dcbf1b04138 100644 --- a/tests/baselines/reference/jsDocFunctionSignatures6.baseline +++ b/tests/baselines/reference/jsDocFunctionSignatures6.baseline @@ -10,19 +10,19 @@ // f1('foo', 'bar', 'baz', 'qux'); // ^ // | ---------------------------------------------------------------------- -// | f1(**p1: string**, p2: string, p3?: string, p4?: string): void +// | f1(**p1: string**, p2: string | null, p3?: string, p4?: string): void // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, **p2: string**, p3?: string, p4?: string): void +// | f1(p1: string, **p2: string | null**, p3?: string, p4?: string): void // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, p2: string, **p3?: string**, p4?: string): void +// | f1(p1: string, p2: string | null, **p3?: string**, p4?: string): void // | ---------------------------------------------------------------------- // ^ // | ---------------------------------------------------------------------- -// | f1(p1: string, p2: string, p3?: string, **p4?: string**): void +// | f1(p1: string, p2: string | null, p3?: string, **p4?: string**): void // | @param p1 - A string param // | @param p2 - An optional param // | @param p3 - Another optional param @@ -132,6 +132,22 @@ { "text": "string", "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "null", + "kind": "keyword" } ], "isOptional": false, @@ -388,6 +404,22 @@ { "text": "string", "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "null", + "kind": "keyword" } ], "isOptional": false, @@ -644,6 +676,22 @@ { "text": "string", "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "null", + "kind": "keyword" } ], "isOptional": false, @@ -900,6 +948,22 @@ { "text": "string", "kind": "keyword" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "null", + "kind": "keyword" } ], "isOptional": false, diff --git a/tests/baselines/reference/jsElementAccessNoContextualTypeCrash.types b/tests/baselines/reference/jsElementAccessNoContextualTypeCrash.types index fc37681b65cfe..81d29cb1a9ccd 100644 --- a/tests/baselines/reference/jsElementAccessNoContextualTypeCrash.types +++ b/tests/baselines/reference/jsElementAccessNoContextualTypeCrash.types @@ -33,15 +33,15 @@ self['Common'] = self['Common'] || {}; */ Common.localize = function (string) { >Common.localize = function (string) { return string;} : (string: string) => string -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Common.localize : (string: string) => string -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Common : typeof Common > : ^^^^^^^^^^^^^ >localize : (string: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function (string) { return string;} : (string: string) => string -> : ^^^^^^^^^ ^^^^^^^^^^^ +> : >string : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsEnumCrossFileExport.types b/tests/baselines/reference/jsEnumCrossFileExport.types index 21c683ee1fd71..2978038903cba 100644 --- a/tests/baselines/reference/jsEnumCrossFileExport.types +++ b/tests/baselines/reference/jsEnumCrossFileExport.types @@ -113,7 +113,7 @@ Other.Cls = class { */ method(p) {} >method : (p: Host.UserMetrics.Action) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ @@ -124,12 +124,12 @@ Other.Cls = class { this.method(Host.UserMetrics.Action.WindowDocked); >this.method(Host.UserMetrics.Action.WindowDocked) : void > : ^^^^ ->this.method : (p: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +>this.method : (p: Host.UserMetrics.Action) => void +> : ^ ^^ ^^^^^^^^^ >this : this > : ^^^^ ->method : (p: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +>method : (p: Host.UserMetrics.Action) => void +> : ^ ^^ ^^^^^^^^^ >Host.UserMetrics.Action.WindowDocked : number > : ^^^^^^ >Host.UserMetrics.Action : { WindowDocked: number; WindowUndocked: number; ScriptsBreakpointSet: number; TimelineStarted: number; } diff --git a/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types index b0df541881380..8b3d1bb37489d 100644 --- a/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types +++ b/tests/baselines/reference/jsEnumFunctionLocalNoCrash.types @@ -3,7 +3,7 @@ === index.js === function defineCommonExtensionSymbols(apiPrivate) { >defineCommonExtensionSymbols : (apiPrivate: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >apiPrivate : any /** @enum {string} */ diff --git a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types index ef268523c6a77..1c6fe952d5f5d 100644 --- a/tests/baselines/reference/jsEnumTagOnObjectFrozen.types +++ b/tests/baselines/reference/jsEnumTagOnObjectFrozen.types @@ -4,10 +4,10 @@ const { Thing, useThing, cbThing } = require("./index"); >Thing : Readonly<{ a: "thing"; b: "chill"; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ ->cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>useThing : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ +>cbThing : (x: (x: Thing) => void) => void +> : ^ ^^ ^^^^^^^^^ >require("./index") : typeof import("index") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >require : any @@ -17,8 +17,8 @@ const { Thing, useThing, cbThing } = require("./index"); useThing(Thing.a); >useThing(Thing.a) : void > : ^^^^ ->useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +>useThing : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ >Thing.a : "thing" > : ^^^^^^^ >Thing : Readonly<{ a: "thing"; b: "chill"; }> @@ -35,10 +35,10 @@ useThing(Thing.a); cbThing(type => { >cbThing(type => { /** @type {LogEntry} */ const logEntry = { time: Date.now(), type, };}) : void > : ^^^^ ->cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>cbThing : (x: (x: Thing) => void) => void +> : ^ ^^ ^^^^^^^^^ >type => { /** @type {LogEntry} */ const logEntry = { time: Date.now(), type, };} : (type: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >type : string > : ^^^^^^ @@ -74,13 +74,13 @@ const Thing = Object.freeze({ >Thing : Readonly<{ a: "thing"; b: "chill"; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.freeze({ a: "thing", b: "chill"}) : Readonly<{ a: "thing"; b: "chill"; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^ >Object.freeze : { (f: T): T; (o: T_1): Readonly; (o: T_2): Readonly; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >freeze : { (f: T): T; (o: T_1): Readonly; (o: T_2): Readonly; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ a: "thing", b: "chill"} : { a: "thing"; b: "chill"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -108,47 +108,47 @@ exports.Thing = Thing; >Thing : Readonly<{ a: "thing"; b: "chill"; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Thing : Readonly<{ a: "thing"; b: "chill"; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^ /** * @param {Thing} x */ function useThing(x) {} >useThing : (x: Thing) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ exports.useThing = useThing; ->exports.useThing = useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ ->exports.useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +>exports.useThing = useThing : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ +>exports.useThing : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ >exports : typeof import("index") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ ->useThing : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +>useThing : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ +>useThing : (x: Thing) => void +> : /** * @param {(x: Thing) => void} x */ function cbThing(x) {} >cbThing : (x: (x: Thing) => void) => void -> : ^^^^ ^^^^^^^^^ ->x : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ +>x : (x: Thing) => void +> : ^ ^^ ^^^^^^^^^ exports.cbThing = cbThing; ->exports.cbThing = cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->exports.cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>exports.cbThing = cbThing : (x: (x: Thing) => void) => void +> : ^ ^^ ^^^^^^^^^ +>exports.cbThing : (x: (x: Thing) => void) => void +> : ^ ^^ ^^^^^^^^^ >exports : typeof import("index") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->cbThing : (x: (x: string) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>cbThing : (x: (x: Thing) => void) => void +> : ^ ^^ ^^^^^^^^^ +>cbThing : (x: (x: Thing) => void) => void +> : diff --git a/tests/baselines/reference/jsExpandoObjectDefineProperty.types b/tests/baselines/reference/jsExpandoObjectDefineProperty.types index 5d42c97b8ee8f..df844e6ce3055 100644 --- a/tests/baselines/reference/jsExpandoObjectDefineProperty.types +++ b/tests/baselines/reference/jsExpandoObjectDefineProperty.types @@ -11,11 +11,11 @@ Object.defineProperty(chrome, 'devtools', { value: {}, enumerable: true }) >Object.defineProperty(chrome, 'devtools', { value: {}, enumerable: true }) : typeof chrome > : ^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >chrome : typeof chrome > : ^^^^^^^^^^^^^ >'devtools' : "devtools" diff --git a/tests/baselines/reference/jsFileAlternativeUseOfOverloadTag.types b/tests/baselines/reference/jsFileAlternativeUseOfOverloadTag.types index 9833cab380ce9..5e2de7632a680 100644 --- a/tests/baselines/reference/jsFileAlternativeUseOfOverloadTag.types +++ b/tests/baselines/reference/jsFileAlternativeUseOfOverloadTag.types @@ -7,9 +7,9 @@ const example1 = { >example1 : { constructor: (value: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >{ /** * @overload Example1(value) * Creates Example1 * @param value [String] */ constructor: function Example1(value, options) {},} : { constructor: (value: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ /** * @overload Example1(value) @@ -18,11 +18,11 @@ const example1 = { */ constructor: function Example1(value, options) {}, >constructor : (value: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >function Example1(value, options) {} : (value: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : >Example1 : (value: any) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >value : any >options : any @@ -30,9 +30,9 @@ const example1 = { const example2 = { >example2 : { constructor: { (value: any, secretAccessKey: any, sessionToken: any): any; (): any; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ /** * Example 2 * * @overload Example2(value) * Creates Example2 * @param value [String] * @param secretAccessKey [String] * @param sessionToken [String] * @example Creates with string value * const example = new Example(''); * @overload Example2(options) * Creates Example2 * @option options value [String] * @example Creates with options object * const example = new Example2({ * value: '', * }); */ constructor: function Example2() {},} : { constructor: { (value: any, secretAccessKey: any, sessionToken: any): any; (): any; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^ /** * Example 2 @@ -54,11 +54,11 @@ const example2 = { */ constructor: function Example2() {}, >constructor : { (value: any, secretAccessKey: any, sessionToken: any): any; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >function Example2() {} : { (value: any, secretAccessKey: any, sessionToken: any): any; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Example2 : { (value: any, secretAccessKey: any, sessionToken: any): any; (): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ }; @@ -66,7 +66,7 @@ const example3 = { >example3 : { evaluate: () => any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{ /** * @overload evaluate(options = {}, [callback]) * Evaluate something * @note Something interesting * @param options [map] * @return [string] returns evaluation result * @return [null] returns nothing if callback provided * @callback callback function (error, result) * If callback is provided it will be called with evaluation result * @param error [Error] * @param result [String] * @see callback */ evaluate: function evaluate(options, callback) {},} : { evaluate: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ /** * @overload evaluate(options = {}, [callback]) @@ -85,7 +85,7 @@ const example3 = { >evaluate : () => any > : ^^^^^^^^^ >function evaluate(options, callback) {} : () => any -> : ^^^^^^^^^ +> : >evaluate : () => any > : ^^^^^^^^^ >options : any diff --git a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types index cc71541f07901..a7b4c71140e68 100644 --- a/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types +++ b/tests/baselines/reference/jsFileClassPropertyInitalizationInObjectLiteral.types @@ -11,7 +11,7 @@ module.exports = function () { >exports : () => { c: number; } > : ^^^^^^^^^^^^^^^^^^^^ >function () { class A { } return { c: A.b = 1, }} : () => { c: number; } -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ class A { } >A : A diff --git a/tests/baselines/reference/jsFileClassPropertyType2.types b/tests/baselines/reference/jsFileClassPropertyType2.types index 5da1702896432..e4f96e68af854 100644 --- a/tests/baselines/reference/jsFileClassPropertyType2.types +++ b/tests/baselines/reference/jsFileClassPropertyType2.types @@ -26,7 +26,7 @@ class C { >(new C()).p.push("string") : number > : ^^^^^^ >(new C()).p.push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >(new C()).p : number[] > : ^^^^^^^^ >(new C()) : C @@ -38,7 +38,7 @@ class C { >p : number[] > : ^^^^^^^^ >push : (...items: number[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ diff --git a/tests/baselines/reference/jsFileCompilationAwaitModifier.types b/tests/baselines/reference/jsFileCompilationAwaitModifier.types index 37ace437b2a50..c2712bd9e57d8 100644 --- a/tests/baselines/reference/jsFileCompilationAwaitModifier.types +++ b/tests/baselines/reference/jsFileCompilationAwaitModifier.types @@ -15,11 +15,11 @@ class Foo { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ } @@ -28,7 +28,7 @@ class Foo { >b : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { await Promise.resolve(1); } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : await Promise.resolve(1); >await Promise.resolve(1) : number @@ -36,11 +36,11 @@ class Foo { >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.types b/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.types index f99375755db3e..951f18b71aa7b 100644 --- a/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.types +++ b/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.types @@ -3,7 +3,7 @@ === a.js === function foo(a, b) { >foo : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >a : any > : ^^^ >b : any diff --git a/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.types b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.types index 479a8397a2adf..8d7b79ff3dc6a 100644 --- a/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.types +++ b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.types @@ -73,7 +73,7 @@ class c { a(eval) { //error >a : (eval: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >eval : any > : ^^^ } @@ -100,7 +100,7 @@ var eval = function () { >eval : () => void > : ^^^^^^^^^^ >function () {} : () => void -> : ^^^^^^^^^^ +> : }; diff --git a/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.types b/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.types index c722e12d1bb69..fd63fdb405975 100644 --- a/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.types +++ b/tests/baselines/reference/jsFileCompilationClassMethodContainingArrowFunction.types @@ -7,23 +7,23 @@ class c { method(a) { >method : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any let x = a => this.method(a); >x : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a => this.method(a) : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : >a : any >this.method(a) : void > : ^^^^ >this.method : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >this : this > : ^^^^ >method : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any } } diff --git a/tests/baselines/reference/jsFileCompilationLetBeingRenamed.types b/tests/baselines/reference/jsFileCompilationLetBeingRenamed.types index af00e61b3374a..f77b25a5212e4 100644 --- a/tests/baselines/reference/jsFileCompilationLetBeingRenamed.types +++ b/tests/baselines/reference/jsFileCompilationLetBeingRenamed.types @@ -3,7 +3,7 @@ === a.js === function foo(a) { >foo : (a: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : any for (let a = 0; a < 10; a++) { diff --git a/tests/baselines/reference/jsFileCompilationOptionalParameter.types b/tests/baselines/reference/jsFileCompilationOptionalParameter.types index d74d04fbe0786..7c260ddfa689d 100644 --- a/tests/baselines/reference/jsFileCompilationOptionalParameter.types +++ b/tests/baselines/reference/jsFileCompilationOptionalParameter.types @@ -3,7 +3,7 @@ === a.js === function F(p?) { } >F : (p?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >p : any > : ^^^ diff --git a/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types index 38ae7a00a03a3..4fd2793b89c38 100644 --- a/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types +++ b/tests/baselines/reference/jsFileCompilationRestParamJsDocFunction.types @@ -13,7 +13,7 @@ */ function apply(func, thisArg, ...args) { >apply : (func: Function, thisArg: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ >func : Function > : ^^^^^^^^ >thisArg : any @@ -39,11 +39,11 @@ function apply(func, thisArg, ...args) { > : ^ >func.call(thisArg) : any >func.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >func : Function > : ^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >thisArg : any case 1: return func.call(thisArg, args[0]); @@ -51,11 +51,11 @@ function apply(func, thisArg, ...args) { > : ^ >func.call(thisArg, args[0]) : any >func.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >func : Function > : ^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >thisArg : any >args[0] : any >args : any[] @@ -68,11 +68,11 @@ function apply(func, thisArg, ...args) { > : ^ >func.call(thisArg, args[0], args[1]) : any >func.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >func : Function > : ^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >thisArg : any >args[0] : any >args : any[] @@ -90,11 +90,11 @@ function apply(func, thisArg, ...args) { > : ^ >func.call(thisArg, args[0], args[1], args[2]) : any >func.call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >func : Function > : ^^^^^^^^ >call : (this: Function, thisArg: any, ...argArray: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >thisArg : any >args[0] : any >args : any[] @@ -115,11 +115,11 @@ function apply(func, thisArg, ...args) { return func.apply(thisArg, args); >func.apply(thisArg, args) : any >func.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >func : Function > : ^^^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >thisArg : any >args : any[] > : ^^^^^ @@ -127,5 +127,5 @@ function apply(func, thisArg, ...args) { export default apply; >apply : (func: Function, thisArg: any, ...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsFileCompilationRestParameter.types b/tests/baselines/reference/jsFileCompilationRestParameter.types index 8ac94f4297e36..f34f109e11c9b 100644 --- a/tests/baselines/reference/jsFileCompilationRestParameter.types +++ b/tests/baselines/reference/jsFileCompilationRestParameter.types @@ -3,7 +3,7 @@ === a.js === function foo(...a) { } >foo : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ diff --git a/tests/baselines/reference/jsFileCompilationTypeOfParameter.types b/tests/baselines/reference/jsFileCompilationTypeOfParameter.types index 51abbb6fa9379..e55bc2fc10f4a 100644 --- a/tests/baselines/reference/jsFileCompilationTypeOfParameter.types +++ b/tests/baselines/reference/jsFileCompilationTypeOfParameter.types @@ -3,7 +3,7 @@ === a.js === function F(a: number) { } >F : (a: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/jsFileESModuleWithEnumTag.types b/tests/baselines/reference/jsFileESModuleWithEnumTag.types index 27d390995294e..b78c5cb699d23 100644 --- a/tests/baselines/reference/jsFileESModuleWithEnumTag.types +++ b/tests/baselines/reference/jsFileESModuleWithEnumTag.types @@ -56,11 +56,11 @@ Object.defineProperty(ChangeDetectionStrategy, "aField", {value: 42}); >Object.defineProperty(ChangeDetectionStrategy, "aField", {value: 42}) : { OnPush: number; Default: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >ChangeDetectionStrategy : { OnPush: number; Default: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"aField" : "aField" diff --git a/tests/baselines/reference/jsFileFunctionOverloads.js b/tests/baselines/reference/jsFileFunctionOverloads.js index 21f59c0e42525..367ef9c9e309d 100644 --- a/tests/baselines/reference/jsFileFunctionOverloads.js +++ b/tests/baselines/reference/jsFileFunctionOverloads.js @@ -125,19 +125,19 @@ function flatMap(array, iterable) { * @param {number} x * @returns {'number'} */ -declare function getTypeName(x: number): 'number'; +declare function getTypeName(x: number): "number"; /** * @overload * @param {string} x * @returns {'string'} */ -declare function getTypeName(x: string): 'string'; +declare function getTypeName(x: string): "string"; /** * @overload * @param {boolean} x * @returns {'boolean'} */ -declare function getTypeName(x: boolean): 'boolean'; +declare function getTypeName(x: boolean): "boolean"; /** * @template T * @template U diff --git a/tests/baselines/reference/jsFileFunctionOverloads.types b/tests/baselines/reference/jsFileFunctionOverloads.types index 808abb33080d8..79073da506c9e 100644 --- a/tests/baselines/reference/jsFileFunctionOverloads.types +++ b/tests/baselines/reference/jsFileFunctionOverloads.types @@ -21,8 +21,8 @@ * @returns {string} */ function getTypeName(x) { ->getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +>getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : unknown > : ^^^^^^^ @@ -40,9 +40,9 @@ */ const identity = x => x; >identity : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : T > : ^ >x : T @@ -69,13 +69,13 @@ const identity = x => x; */ function flatMap(array, iterable = identity) { >flatMap : { (array: T[], iterable: (x: T) => U[]): U[]; (array: T[][]): T[]; } -> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ >array : unknown[] > : ^^^^^^^^^ >iterable : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >identity : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ /** @type {unknown[]} */ const result = []; @@ -110,11 +110,11 @@ function flatMap(array, iterable = identity) { >result.push(.../** @type {unknown[]} */(iterable(array[i]))) : number > : ^^^^^^ >result.push : (...items: unknown[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >result : unknown[] > : ^^^^^^^^^ >push : (...items: unknown[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >.../** @type {unknown[]} */(iterable(array[i])) : unknown > : ^^^^^^^ >(iterable(array[i])) : unknown[] @@ -122,7 +122,7 @@ function flatMap(array, iterable = identity) { >iterable(array[i]) : unknown > : ^^^^^^^ >iterable : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >array[i] : unknown > : ^^^^^^^ >array : unknown[] diff --git a/tests/baselines/reference/jsFileFunctionOverloads2.js b/tests/baselines/reference/jsFileFunctionOverloads2.js index 1edaa7342013d..2579d96ea4b65 100644 --- a/tests/baselines/reference/jsFileFunctionOverloads2.js +++ b/tests/baselines/reference/jsFileFunctionOverloads2.js @@ -126,7 +126,7 @@ function flatMap(array, iterable) { * @param {unknown} x * @returns {string} */ -declare function getTypeName(x: number): 'number'; +declare function getTypeName(x: number): "number"; /** * @overload * @param {number} x @@ -143,7 +143,7 @@ declare function getTypeName(x: number): 'number'; * @param {unknown} x * @returns {string} */ -declare function getTypeName(x: string): 'string'; +declare function getTypeName(x: string): "string"; /** * @overload * @param {number} x @@ -160,7 +160,7 @@ declare function getTypeName(x: string): 'string'; * @param {unknown} x * @returns {string} */ -declare function getTypeName(x: boolean): 'boolean'; +declare function getTypeName(x: boolean): "boolean"; /** * @template T * @template U diff --git a/tests/baselines/reference/jsFileFunctionOverloads2.types b/tests/baselines/reference/jsFileFunctionOverloads2.types index 60125f862b5e3..2406d36bb481f 100644 --- a/tests/baselines/reference/jsFileFunctionOverloads2.types +++ b/tests/baselines/reference/jsFileFunctionOverloads2.types @@ -19,8 +19,8 @@ * @returns {string} */ function getTypeName(x) { ->getTypeName : { (x: number): 'number'; (x: string): 'string'; (x: boolean): 'boolean'; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^^^^ ^^^ ^^^ +>getTypeName : { (x: number): "number"; (x: string): "string"; (x: boolean): "boolean"; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >x : unknown > : ^^^^^^^ @@ -38,9 +38,9 @@ */ const identity = x => x; >identity : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x => x : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : >x : T > : ^ >x : T @@ -64,13 +64,13 @@ const identity = x => x; */ function flatMap(array, iterable = identity) { >flatMap : { (array: T[], iterable: (x: T) => U[]): U[]; (array: T[][]): T[]; } -> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >array : unknown[] > : ^^^^^^^^^ >iterable : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >identity : (x: T_1) => T_1 -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^ /** @type {unknown[]} */ const result = []; @@ -105,11 +105,11 @@ function flatMap(array, iterable = identity) { >result.push(.../** @type {unknown[]} */(iterable(array[i]))) : number > : ^^^^^^ >result.push : (...items: unknown[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >result : unknown[] > : ^^^^^^^^^ >push : (...items: unknown[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >.../** @type {unknown[]} */(iterable(array[i])) : unknown > : ^^^^^^^ >(iterable(array[i])) : unknown[] @@ -117,7 +117,7 @@ function flatMap(array, iterable = identity) { >iterable(array[i]) : unknown > : ^^^^^^^ >iterable : (x: unknown) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >array[i] : unknown > : ^^^^^^^ >array : unknown[] diff --git a/tests/baselines/reference/jsFileFunctionParametersAsOptional.types b/tests/baselines/reference/jsFileFunctionParametersAsOptional.types index 7f1c03ba506c2..06980297cdb2b 100644 --- a/tests/baselines/reference/jsFileFunctionParametersAsOptional.types +++ b/tests/baselines/reference/jsFileFunctionParametersAsOptional.types @@ -3,7 +3,7 @@ === foo.js === function f(a, b, c) { } >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >a : any >b : any >c : any @@ -14,13 +14,13 @@ f(); >f() : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ f(1); >f(1) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -28,7 +28,7 @@ f(1, 2); >f(1, 2) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -38,7 +38,7 @@ f(1, 2, 3); >f(1, 2, 3) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/jsFileFunctionParametersAsOptional2.types b/tests/baselines/reference/jsFileFunctionParametersAsOptional2.types index 20d954ab71568..b6b86c904e1a0 100644 --- a/tests/baselines/reference/jsFileFunctionParametersAsOptional2.types +++ b/tests/baselines/reference/jsFileFunctionParametersAsOptional2.types @@ -8,7 +8,7 @@ */ function f(a, b, c) { } >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -22,13 +22,13 @@ f(); // Error >f() : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ f(1); // Error >f(1) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -36,7 +36,7 @@ f(1, 2); // Error >f(1, 2) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -46,7 +46,7 @@ f(1, 2, 3); // OK >f(1, 2, 3) : void > : ^^^^ >f : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/jsFileImportPreservedWhenUsed.types b/tests/baselines/reference/jsFileImportPreservedWhenUsed.types index 7469dae863db1..c2b33e33e003c 100644 --- a/tests/baselines/reference/jsFileImportPreservedWhenUsed.types +++ b/tests/baselines/reference/jsFileImportPreservedWhenUsed.types @@ -14,7 +14,7 @@ type ObjectIterator = (value: TObject[keyof TObject], key: str interface LoDashStatic { mapValues(obj: T | null | undefined, callback: ObjectIterator): { [P in keyof T]: TResult }; >mapValues : (obj: T | null | undefined, callback: ObjectIterator) => { [P in keyof T]: TResult; } -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ >callback : ObjectIterator @@ -54,7 +54,7 @@ export class Test { */ test(obj, vm) { >test : (obj: object, vm: object) => void -> : ^^^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >obj : object > : ^^^^^^ >vm : object @@ -77,11 +77,11 @@ export class Test { >_.mapValues( obj, object => ({ ...object, [INDEX_FIELD]: index++ }), ) : object > : ^^^^^^ >_.mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >_ : LoDashStatic > : ^^^^^^^^^^^^ >mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ obj, >obj : object @@ -89,7 +89,7 @@ export class Test { object => ({ ...object, [INDEX_FIELD]: index++ }), >object => ({ ...object, [INDEX_FIELD]: index++ }) : (object: never) => any -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >object : never > : ^^^^^ >({ ...object, [INDEX_FIELD]: index++ }) : error diff --git a/tests/baselines/reference/jsFileMethodOverloads.js b/tests/baselines/reference/jsFileMethodOverloads.js index f27531e3c888d..0816b56b3eadb 100644 --- a/tests/baselines/reference/jsFileMethodOverloads.js +++ b/tests/baselines/reference/jsFileMethodOverloads.js @@ -112,13 +112,13 @@ declare class Example { * @param {Example} this * @returns {'number'} */ - getTypeName(this: Example): 'number'; + getTypeName(this: Example): "number"; /** * @overload * @param {Example} this * @returns {'string'} */ - getTypeName(this: Example): 'string'; + getTypeName(this: Example): "string"; /** * @template U * @overload diff --git a/tests/baselines/reference/jsFileMethodOverloads.types b/tests/baselines/reference/jsFileMethodOverloads.types index 7fef7e6a565fc..d7295795b6bcb 100644 --- a/tests/baselines/reference/jsFileMethodOverloads.types +++ b/tests/baselines/reference/jsFileMethodOverloads.types @@ -41,8 +41,8 @@ * @returns {string} */ getTypeName() { ->getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } -> : ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^ +>getTypeName : { (this: Example): "number"; (this: Example): "string"; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ return typeof this.value; >typeof this.value : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -71,19 +71,19 @@ */ transform(fn) { >transform : { (fn: (y: T) => U): U; (): T; } -> : ^^^ ^^^^^^ ^^^ ^^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^ ^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return fn ? fn(this.value) : this.value; >fn ? fn(this.value) : this.value : unknown > : ^^^^^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >fn(this.value) : unknown > : ^^^^^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >this.value : T > : ^ >this : this diff --git a/tests/baselines/reference/jsFileMethodOverloads2.js b/tests/baselines/reference/jsFileMethodOverloads2.js index ee08aa6560f8a..66b2297d69e27 100644 --- a/tests/baselines/reference/jsFileMethodOverloads2.js +++ b/tests/baselines/reference/jsFileMethodOverloads2.js @@ -112,7 +112,7 @@ declare class Example { * * @returns {string} */ - getTypeName(this: Example): 'number'; + getTypeName(this: Example): "number"; /** * @overload * @param {Example} this @@ -124,7 +124,7 @@ declare class Example { * * @returns {string} */ - getTypeName(this: Example): 'string'; + getTypeName(this: Example): "string"; /** * @template U * @overload diff --git a/tests/baselines/reference/jsFileMethodOverloads2.types b/tests/baselines/reference/jsFileMethodOverloads2.types index 0d050dcee8875..d458829204c10 100644 --- a/tests/baselines/reference/jsFileMethodOverloads2.types +++ b/tests/baselines/reference/jsFileMethodOverloads2.types @@ -40,8 +40,8 @@ * @returns {string} */ getTypeName() { ->getTypeName : { (this: Example): 'number'; (this: Example): 'string'; } -> : ^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^ +>getTypeName : { (this: Example): "number"; (this: Example): "string"; } +> : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ return typeof this.value; >typeof this.value : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" @@ -68,19 +68,19 @@ */ transform(fn) { >transform : { (fn: (y: T) => U): U; (): T; } -> : ^^^ ^^^^^^ ^^^ ^^^ ^^^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^ ^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return fn ? fn(this.value) : this.value; >fn ? fn(this.value) : this.value : unknown > : ^^^^^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >fn(this.value) : unknown > : ^^^^^^^ >fn : (y: T) => unknown -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >this.value : T > : ^ >this : this diff --git a/tests/baselines/reference/jsFileMethodOverloads3.types b/tests/baselines/reference/jsFileMethodOverloads3.types index 5b9e6460e5fce..21075dda291b6 100644 --- a/tests/baselines/reference/jsFileMethodOverloads3.types +++ b/tests/baselines/reference/jsFileMethodOverloads3.types @@ -17,7 +17,7 @@ */ function id(x) { >id : { (x: number): any; (x: string): any; } -> : ^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -32,7 +32,7 @@ export let a = id(123); >id(123) : any > : ^^^ >id : { (x: number): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ @@ -42,7 +42,7 @@ export let b = id("hello"); >id("hello") : any > : ^^^ >id : { (x: number): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ diff --git a/tests/baselines/reference/jsFileMethodOverloads4.types b/tests/baselines/reference/jsFileMethodOverloads4.types index c4fa7d0cf606d..b05e8c406574e 100644 --- a/tests/baselines/reference/jsFileMethodOverloads4.types +++ b/tests/baselines/reference/jsFileMethodOverloads4.types @@ -25,7 +25,7 @@ export function Foo() { } */ Foo.prototype.bar = function (a, b) { } >Foo.prototype.bar = function (a, b) { } : { (a: string): void; (a: number, b: string): void; } -> : ^^^^^^ ^^^ ^^^^^^ ^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >Foo.prototype.bar : any >Foo.prototype : any > : ^^^ @@ -36,7 +36,7 @@ Foo.prototype.bar = function (a, b) { } >bar : any > : ^^^ >function (a, b) { } : { (a: string): void; (a: number, b: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ >b : string diff --git a/tests/baselines/reference/jsFileMethodOverloads5.types b/tests/baselines/reference/jsFileMethodOverloads5.types index 6c20714b72ccd..e346395b51930 100644 --- a/tests/baselines/reference/jsFileMethodOverloads5.types +++ b/tests/baselines/reference/jsFileMethodOverloads5.types @@ -20,9 +20,9 @@ */ export const foo = function (a, b) { } >foo : { (a: string): void; (a: number, b?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ >function (a, b) { } : { (a: string): void; (a: number, b?: number): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >a : string | number > : ^^^^^^^^^^^^^^^ >b : number diff --git a/tests/baselines/reference/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types b/tests/baselines/reference/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types index 0544d35f703be..dd34de33d2fcb 100644 --- a/tests/baselines/reference/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types +++ b/tests/baselines/reference/jsFunctionWithPrototypeNoErrorTruncationNoCrash.types @@ -22,29 +22,29 @@ function Color(obj) { }; Color.prototype = { >Color.prototype = { negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Color.prototype : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Color : typeof Color > : ^^^^^^^^^^^^ >prototype : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ negate: function () {return this;}, lighten: function (ratio) {return this;}, darken: function (ratio) {return this;}, saturate: function (ratio) {return this;}, desaturate: function (ratio) {return this;}, whiten: function (ratio) {return this;}, blacken: function (ratio) {return this;}, greyscale: function () {return this;}, clearer: function (ratio) {return this;}, toJSON: function () {return this.rgb();},} : { negate: () => this; lighten: (ratio: any) => this; darken: (ratio: any) => this; saturate: (ratio: any) => this; desaturate: (ratio: any) => this; whiten: (ratio: any) => this; blacken: (ratio: any) => this; greyscale: () => this; clearer: (ratio: any) => this; toJSON: () => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^ negate: function () {return this;}, >negate : () => this > : ^^^^^^^^^^ >function () {return this;} : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ lighten: function (ratio) {return this;}, >lighten : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -52,9 +52,9 @@ Color.prototype = { darken: function (ratio) {return this;}, >darken : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -62,9 +62,9 @@ Color.prototype = { saturate: function (ratio) {return this;}, >saturate : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -72,9 +72,9 @@ Color.prototype = { desaturate: function (ratio) {return this;}, >desaturate : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -82,9 +82,9 @@ Color.prototype = { whiten: function (ratio) {return this;}, >whiten : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -92,9 +92,9 @@ Color.prototype = { blacken: function (ratio) {return this;}, >blacken : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -104,15 +104,15 @@ Color.prototype = { >greyscale : () => this > : ^^^^^^^^^^ >function () {return this;} : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ clearer: function (ratio) {return this;}, >clearer : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function (ratio) {return this;} : (ratio: any) => this -> : ^^^^^^^^^^^^^^^^^^^^ +> : >ratio : any > : ^^^ >this : this @@ -122,7 +122,7 @@ Color.prototype = { >toJSON : () => any > : ^^^^^^^^^ >function () {return this.rgb();} : () => any -> : ^^^^^^^^^ +> : >this.rgb() : any > : ^^^ >this.rgb : any diff --git a/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types b/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types index 38bcd50e5d90a..de3a252064cfb 100644 --- a/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types +++ b/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types @@ -25,7 +25,7 @@ var numberArray = [5]; */ function returnAnyArray(arr) { >returnAnyArray : (arr: any[]) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arr : any[] > : ^^^^^ @@ -41,11 +41,11 @@ var anyPromise = Promise.resolve(5); >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -56,11 +56,11 @@ var numberPromise = Promise.resolve(5); >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -70,7 +70,7 @@ var numberPromise = Promise.resolve(5); */ function returnAnyPromise(pr) { >returnAnyPromise : (pr: Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pr : Promise > : ^^^^^^^^^^^^ @@ -106,7 +106,7 @@ var paramedObject = {valueOf: 1}; */ function returnAnyObject(obj) { >returnAnyObject : (obj: any) => any -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^ >obj : any return obj; diff --git a/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types b/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types index dd7432c31d74f..ed42170505844 100644 --- a/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types +++ b/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types @@ -25,7 +25,7 @@ var numberArray = [5]; */ function returnNotAnyArray(arr) { >returnNotAnyArray : (arr: any[]) => any[] -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >arr : any[] > : ^^^^^ @@ -41,11 +41,11 @@ var notAnyPromise = Promise.resolve(5); >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -56,11 +56,11 @@ var numberPromise = Promise.resolve(5); >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >5 : 5 > : ^ @@ -70,7 +70,7 @@ var numberPromise = Promise.resolve(5); */ function returnNotAnyPromise(pr) { >returnNotAnyPromise : (pr: Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pr : Promise > : ^^^^^^^^^^^^ @@ -107,7 +107,7 @@ var paramedObject = {valueOf: 1}; */ function returnNotAnyObject(obj) { >returnNotAnyObject : (obj: Object) => Object -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >obj : Object > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocBindingInUnreachableCode.types b/tests/baselines/reference/jsdocBindingInUnreachableCode.types index 25e4913802e54..6b2dbf4383014 100644 --- a/tests/baselines/reference/jsdocBindingInUnreachableCode.types +++ b/tests/baselines/reference/jsdocBindingInUnreachableCode.types @@ -10,9 +10,9 @@ if (false) { */ const x = function (s) { >x : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >function (s) { } : (s: string) => void -> : ^^^^ ^^^^^^^^^ +> : >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocCatchClauseWithTypeAnnotation.types b/tests/baselines/reference/jsdocCatchClauseWithTypeAnnotation.types index 3d8cfc8c1b2fe..0d7b3d9609fe6 100644 --- a/tests/baselines/reference/jsdocCatchClauseWithTypeAnnotation.types +++ b/tests/baselines/reference/jsdocCatchClauseWithTypeAnnotation.types @@ -69,11 +69,11 @@ function fn() { >console.log(err) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err : unknown > : ^^^^^^^ @@ -83,11 +83,11 @@ function fn() { >console.log(err) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err : unknown > : ^^^^^^^ @@ -123,11 +123,11 @@ function fn() { >console.log() : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ // @ts-ignore catch (/** @type {number} */ err) { // e should not be a `number` @@ -138,11 +138,11 @@ function fn() { >console.log(err.toLowerCase()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err.toLowerCase() : any > : ^^^ >err.toLowerCase : any @@ -205,11 +205,11 @@ function fn() { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ @@ -219,11 +219,11 @@ function fn() { >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/jsdocClassMissingTypeArguments.types b/tests/baselines/reference/jsdocClassMissingTypeArguments.types index aecc71117ab52..2a3e8f8a0bcd8 100644 --- a/tests/baselines/reference/jsdocClassMissingTypeArguments.types +++ b/tests/baselines/reference/jsdocClassMissingTypeArguments.types @@ -9,7 +9,7 @@ class C {} /** @param {C} p */ function f(p) {} >f : (p: C) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >p : C > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocConstructorFunctionTypeReference.types b/tests/baselines/reference/jsdocConstructorFunctionTypeReference.types index c29a0d6a17cb7..8b564084a7576 100644 --- a/tests/baselines/reference/jsdocConstructorFunctionTypeReference.types +++ b/tests/baselines/reference/jsdocConstructorFunctionTypeReference.types @@ -42,9 +42,9 @@ Validator.prototype.num = 12 */ var validateRegExpFlags = function(state) { >validateRegExpFlags : (state: Validator) => string -> : ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function(state) { return state.flags} : (state: Validator) => string -> : ^^^^^^^^ ^^^^^^^^^^^ +> : >state : VFunc > : ^^^^^ diff --git a/tests/baselines/reference/jsdocDisallowedInTypescript.types b/tests/baselines/reference/jsdocDisallowedInTypescript.types index b87060b35fa80..776f86910b1bf 100644 --- a/tests/baselines/reference/jsdocDisallowedInTypescript.types +++ b/tests/baselines/reference/jsdocDisallowedInTypescript.types @@ -16,7 +16,7 @@ var ara: Array. = [1,2,3]; function f(x: ?number, y: Array.) { >f : (x: number | null, y: Array) => number -> : ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^ >x : number | null > : ^^^^^^^^^^^^^ >y : number[] @@ -46,7 +46,7 @@ function f(x: ?number, y: Array.) { } function hof(ctor: function(new: number, string)) { >hof : (ctor: new (arg1: string) => number) => number -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ >ctor : new (arg1: string) => number > : ^^^^^^^^^^^ ^^^^^^^^^^^ >new : number @@ -56,15 +56,15 @@ function hof(ctor: function(new: number, string)) { >new ctor('hi') : number > : ^^^^^^ >ctor : new (arg1: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^ >'hi' : "hi" > : ^^^^ } function hof2(f: function(this: number, string): string) { >hof2 : (f: (this: number, arg1: string) => string) => string -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^ >f : (this: number, arg1: string) => string -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^ >this : number > : ^^^^^^ @@ -72,7 +72,7 @@ function hof2(f: function(this: number, string): string) { >f(12, 'hullo') : string > : ^^^^^^ >f : (this: number, arg1: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^^^^^^^ >12 : 12 > : ^^ >'hullo' : "hullo" @@ -94,7 +94,7 @@ var g: function(number, number): number = (n,m) => n + m; >g : (arg0: number, arg1: number) => number > : ^^^^^^^ ^^^^^^^^ ^^^^^ >(n,m) => n + m : (n: number, m: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >m : number diff --git a/tests/baselines/reference/jsdocFunctionType.types b/tests/baselines/reference/jsdocFunctionType.types index 247879ce0a91e..68984030a60f1 100644 --- a/tests/baselines/reference/jsdocFunctionType.types +++ b/tests/baselines/reference/jsdocFunctionType.types @@ -7,24 +7,24 @@ */ function id1(c) { >id1 : (c: (this: string, arg1: number) => number) => (this: string, arg1: number) => number -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ >c : (this: string, arg1: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^^^^^^^ return c >c : (this: string, arg1: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^^^^^^^ } var x = id1(function (n) { return this.length + n }); >x : (this: string, arg1: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^^^^^^^ >id1(function (n) { return this.length + n }) : (this: string, arg1: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id1 : (c: (this: string, arg1: number) => number) => (this: string, arg1: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^ ^^ ^^^^^^^^ ^^^^^^^^^^^ >function (n) { return this.length + n } : (this: string, n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >this.length + n : number @@ -44,13 +44,13 @@ var x = id1(function (n) { return this.length + n }); */ function id2(c) { >id2 : (c: new (arg1: number) => { length: number; }) => new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ >c : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ return c >c : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ } class C { @@ -78,11 +78,11 @@ class C { var y = id2(C); >y : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >id2(C) : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id2 : (c: new (arg1: number) => { length: number; }) => new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >C : typeof C > : ^^^^^^^^ @@ -90,9 +90,9 @@ var z = new y(12); >z : { length: number; } > : ^^^^^^^^^^^^^^^^^^^ >new y(12) : { length: number; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >y : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >12 : 12 > : ^^ @@ -107,9 +107,9 @@ z.length; /** @type {function ("a" | "b", 1 | 2): 3 | 4} */ var f = function (ab, onetwo) { return ab === "a" ? 3 : 4; } >f : (arg0: "a" | "b", arg1: 1 | 2) => 3 | 4 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ >function (ab, onetwo) { return ab === "a" ? 3 : 4; } : (ab: "a" | "b", onetwo: 1 | 2) => 3 | 4 -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >ab : "a" | "b" > : ^^^^^^^^^ >onetwo : 1 | 2 @@ -153,11 +153,11 @@ function D(n) { var y2 = id2(D); >y2 : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >id2(D) : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id2 : (c: new (arg1: number) => { length: number; }) => new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >D : typeof D > : ^^^^^^^^ @@ -165,9 +165,9 @@ var z2 = new y2(33); >z2 : { length: number; } > : ^^^^^^^^^^^^^^^^^^^ >new y2(33) : { length: number; } -> : ^^^^^^^^^^^^^^^^^^^ +> : >y2 : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >33 : 33 > : ^^ @@ -186,15 +186,15 @@ z2.length; */ var construct = function(dref) { return new dref(33); } >construct : (dref: new (arg1: number) => D) => D -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^ >function(dref) { return new dref(33); } : (dref: new (arg1: number) => D) => D -> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^ +> : >dref : new (arg1: number) => D -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^ >new dref(33) : D > : ^ >dref : new (arg1: number) => D -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^ >33 : 33 > : ^^ @@ -204,7 +204,7 @@ var z3 = construct(D); >construct(D) : D > : ^ >construct : (dref: new (arg1: number) => D) => D -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^ >D : typeof D > : ^^^^^^^^ @@ -246,11 +246,11 @@ var E = function(n) { var y3 = id2(E); >y3 : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >id2(E) : new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >id2 : (c: new (arg1: number) => { length: number; }) => new (arg1: number) => { length: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >E : typeof E > : ^^^^^^^^ @@ -261,7 +261,7 @@ var y3 = id2(E); */ function foo(...args) { >foo : (...args: [string, string] | [number, string, string]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [string, string] | [number, string, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -274,7 +274,7 @@ foo('abc', 'def'); >foo('abc', 'def') : void > : ^^^^ >foo : (...args: [string, string] | [number, string, string]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >'abc' : "abc" > : ^^^^^ >'def' : "def" @@ -284,7 +284,7 @@ foo(42, 'abc', 'def'); >foo(42, 'abc', 'def') : void > : ^^^^ >foo : (...args: [string, string] | [number, string, string]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >42 : 42 > : ^^ >'abc' : "abc" diff --git a/tests/baselines/reference/jsdocFunctionTypeFalsePositive.types b/tests/baselines/reference/jsdocFunctionTypeFalsePositive.types index 862828473f535..cc6fd4db7284d 100644 --- a/tests/baselines/reference/jsdocFunctionTypeFalsePositive.types +++ b/tests/baselines/reference/jsdocFunctionTypeFalsePositive.types @@ -4,7 +4,7 @@ /** @param {<} x */ function f(x) {} >f : (x: () => any) => void -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : () => any > : ^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocImportType.types b/tests/baselines/reference/jsdocImportType.types index 9d9a54e45bcf9..f70cacf05fa04 100644 --- a/tests/baselines/reference/jsdocImportType.types +++ b/tests/baselines/reference/jsdocImportType.types @@ -22,7 +22,7 @@ const D = require("./mod1"); >require("./mod1") : typeof D > : ^^^^^^^^ >require : (name: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"./mod1" : "./mod1" > : ^^^^^^^^ @@ -42,7 +42,7 @@ d.chunk; === types.d.ts === declare function require(name: string): any; >require : (name: string) => any -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocImportType2.types b/tests/baselines/reference/jsdocImportType2.types index 1918d952eddf0..514d4e456a88f 100644 --- a/tests/baselines/reference/jsdocImportType2.types +++ b/tests/baselines/reference/jsdocImportType2.types @@ -22,7 +22,7 @@ const D = require("./mod1"); >require("./mod1") : typeof D > : ^^^^^^^^ >require : (name: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >"./mod1" : "./mod1" > : ^^^^^^^^ @@ -42,7 +42,7 @@ d.chunk; === types.d.ts === declare function require(name: string): any; >require : (name: string) => any -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types index 3a09f1389d264..fcfdce78f5f0a 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types +++ b/tests/baselines/reference/jsdocImportTypeReferenceToClassAlias.types @@ -30,7 +30,7 @@ module.exports.C = C /** @param {X} c */ function demo(c) { >demo : (c: X) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : import("mod1").C > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToCommonjsModule.types b/tests/baselines/reference/jsdocImportTypeReferenceToCommonjsModule.types index 37819a58d29b4..3226acf90a2d2 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToCommonjsModule.types +++ b/tests/baselines/reference/jsdocImportTypeReferenceToCommonjsModule.types @@ -17,7 +17,7 @@ export = config; /** @param {import('./ex')} a */ function demo(a) { >demo : (a: { fix: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^ >a : { fix: boolean; } > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocImportTypeReferenceToESModule.types b/tests/baselines/reference/jsdocImportTypeReferenceToESModule.types index 919cad1a35f38..74e52810a6bd7 100644 --- a/tests/baselines/reference/jsdocImportTypeReferenceToESModule.types +++ b/tests/baselines/reference/jsdocImportTypeReferenceToESModule.types @@ -9,7 +9,7 @@ export var config: {} /** @param {import('./ex')} a */ function demo(a) { >demo : (a: typeof import("ex")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^ ^^^^^^^^^ >a : typeof import("ex") > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocInTypeScript.types b/tests/baselines/reference/jsdocInTypeScript.types index 64fce344c82b5..2348be432fcc9 100644 --- a/tests/baselines/reference/jsdocInTypeScript.types +++ b/tests/baselines/reference/jsdocInTypeScript.types @@ -40,7 +40,7 @@ declare const myType: MyType; // should error, no such type */ function f(x: boolean) { return x * 2; } // Should error >f : (x: boolean) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >x * 2 : number @@ -55,7 +55,7 @@ f(1); f(true).length; >f(1) : number > : ^^^^^^ >f : (x: boolean) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ >f(true).length : any @@ -63,7 +63,7 @@ f(1); f(true).length; >f(true) : number > : ^^^^^^ >f : (x: boolean) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >true : true > : ^^^^ >length : any @@ -96,7 +96,7 @@ interface I {} /** @template T */ function tem(t: T): I { return {}; } >tem : (t: T) => I -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >t : T > : ^ >{} : {} @@ -119,13 +119,13 @@ import M = N; // Error: @typedef does not create namespaces in TypeScript code. */ const obj = { foo: (a, b) => a + b }; >obj : { foo: (a: any, b: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >{ foo: (a, b) => a + b } : { foo: (a: any, b: any) => any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ >foo : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^ >(a, b) => a + b : (a: any, b: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >b : any diff --git a/tests/baselines/reference/jsdocIndexSignature.types b/tests/baselines/reference/jsdocIndexSignature.types index fdd08975ccdf1..bcae2b6bbfe06 100644 --- a/tests/baselines/reference/jsdocIndexSignature.types +++ b/tests/baselines/reference/jsdocIndexSignature.types @@ -19,7 +19,7 @@ var o3; /** @param {Object.} o */ function f(o) { >f : (o: { [x: string]: boolean;}) => void -> : ^^^^^ ^^^^ ^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^ ^^^ ^^^^^^^^^^^ >o : { [x: string]: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocLinkTag3.types b/tests/baselines/reference/jsdocLinkTag3.types index 4a73d5d94d612..6cf0ba9ed8399 100644 --- a/tests/baselines/reference/jsdocLinkTag3.types +++ b/tests/baselines/reference/jsdocLinkTag3.types @@ -14,7 +14,7 @@ import type { A } from "./a"; */ export function foo(a: string) {} >foo : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocLinkTag4.types b/tests/baselines/reference/jsdocLinkTag4.types index 5217140a0c3a2..b6415f25da271 100644 --- a/tests/baselines/reference/jsdocLinkTag4.types +++ b/tests/baselines/reference/jsdocLinkTag4.types @@ -14,7 +14,7 @@ import * as a from "./a"; */ export function foo(a: string) {} >foo : (a: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocLinkTag8.types b/tests/baselines/reference/jsdocLinkTag8.types index 473eedbbbf907..d26472cf44fae 100644 --- a/tests/baselines/reference/jsdocLinkTag8.types +++ b/tests/baselines/reference/jsdocLinkTag8.types @@ -4,9 +4,9 @@ /** {@link Map.delete} */ const remove = (map, key) => {} >remove : (map: any, key: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >(map, key) => {} : (map: any, key: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >map : any >key : any diff --git a/tests/baselines/reference/jsdocLiteral.types b/tests/baselines/reference/jsdocLiteral.types index f1a0092563cd4..7ca746bc7dc86 100644 --- a/tests/baselines/reference/jsdocLiteral.types +++ b/tests/baselines/reference/jsdocLiteral.types @@ -9,8 +9,8 @@ * @param {12 | true | 'str'} p5 */ function f(p1, p2, p3, p4, p5) { ->f : (p1: 'literal', p2: "literal", p3: 'literal' | 'other', p4: 'literal' | number, p5: 12 | true | 'str') => string -> : ^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^ +>f : (p1: "literal", p2: "literal", p3: "literal" | "other", p4: "literal" | number, p5: 12 | true | "str") => string +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >p1 : "literal" > : ^^^^^^^^^ >p2 : "literal" diff --git a/tests/baselines/reference/jsdocNeverUndefinedNull.types b/tests/baselines/reference/jsdocNeverUndefinedNull.types index d3cf8deb656ba..6fe0da634b853 100644 --- a/tests/baselines/reference/jsdocNeverUndefinedNull.types +++ b/tests/baselines/reference/jsdocNeverUndefinedNull.types @@ -9,7 +9,7 @@ */ function f(p1, p2, p3) { >f : (p1: never, p2: undefined, p3: null) => void -> : ^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >p1 : never > : ^^^^^ >p2 : undefined diff --git a/tests/baselines/reference/jsdocOuterTypeParameters1.types b/tests/baselines/reference/jsdocOuterTypeParameters1.types index 7901e615659b4..da766cc24a69c 100644 --- a/tests/baselines/reference/jsdocOuterTypeParameters1.types +++ b/tests/baselines/reference/jsdocOuterTypeParameters1.types @@ -4,9 +4,9 @@ /** @return {T} */ const dedupingMixin = function(mixin) {}; >dedupingMixin : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >function(mixin) {} : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : >mixin : any > : ^^^ @@ -17,7 +17,7 @@ const PropertyAccessors = dedupingMixin(() => { >dedupingMixin(() => { class Bar { static bar() { this.prototype.foo(); } }}) : T > : ^ >dedupingMixin : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >() => { class Bar { static bar() { this.prototype.foo(); } }} : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocOuterTypeParameters2.types b/tests/baselines/reference/jsdocOuterTypeParameters2.types index cd1f048c92519..98931cc1c3ef5 100644 --- a/tests/baselines/reference/jsdocOuterTypeParameters2.types +++ b/tests/baselines/reference/jsdocOuterTypeParameters2.types @@ -4,9 +4,9 @@ /** @return {T} */ const dedupingMixin = function(mixin) {}; >dedupingMixin : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >function(mixin) {} : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : >mixin : any > : ^^^ @@ -17,7 +17,7 @@ const PropertyAccessors = dedupingMixin(() => { >dedupingMixin(() => { class Bar { static bar() { this.prototype.foo(); } }}) : T > : ^ >dedupingMixin : (mixin: any) => T -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ >() => { class Bar { static bar() { this.prototype.foo(); } }} : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocOverrideTag1.types b/tests/baselines/reference/jsdocOverrideTag1.types index 21e2acc53e037..79b96723946f9 100644 --- a/tests/baselines/reference/jsdocOverrideTag1.types +++ b/tests/baselines/reference/jsdocOverrideTag1.types @@ -12,7 +12,7 @@ class A { */ foo (a) { >foo : (a: string | number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ @@ -47,7 +47,7 @@ class B extends A { */ foo (a) { >foo : (a: string | number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ @@ -55,11 +55,11 @@ class B extends A { >super.foo(a) : boolean > : ^^^^^^^ >super.foo : (a: string | number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >super : A > : ^ >foo : (a: string | number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >a : string | number > : ^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/jsdocParamTag2.types b/tests/baselines/reference/jsdocParamTag2.types index 3bfe401d01643..cbf88d9fb8fd0 100644 --- a/tests/baselines/reference/jsdocParamTag2.types +++ b/tests/baselines/reference/jsdocParamTag2.types @@ -8,7 +8,7 @@ */ function good1({a, b}, x) {} >good1 : ({ a, b }: { a: string; b: string; }, x: string) => void -> : ^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -22,7 +22,7 @@ function good1({a, b}, x) {} */ function good2({a, b}, {c, d}) {} >good2 : ({ a, b }: { a: string; b: string; }, { c, d }: { c: number; d: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -39,7 +39,7 @@ function good2({a, b}, {c, d}) {} */ function good3(x, {a, b}, y) {} >good3 : (x: number, { a, b }: { a: string; b: string; }, y: string) => void -> : ^^^^ ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >a : string @@ -54,7 +54,7 @@ function good3(x, {a, b}, y) {} */ function good4({a, b}) {} >good4 : ({ a, b }: { a: string; b: string; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -69,7 +69,7 @@ function good4({a, b}) {} */ function good5({a, b}, x) {} >good5 : ({ a, b }: { a: string; b: string;}, x: string) => void -> : ^^^^^^^^^^^^ ^^ ^ ^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^ ^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -87,7 +87,7 @@ function good5({a, b}, x) {} */ function good6({a, b}, {c, d}) {} >good6 : ({ a, b }: { a: string; b: string;}, { c, d }: { c: string; d: string;}) => void -> : ^^^^^^^^^^^^ ^^ ^ ^^ ^^^^^^^^^^^^^^^ ^^ ^ ^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^ ^^^^ ^^^ ^^ ^ ^^ ^^^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -106,7 +106,7 @@ function good6({a, b}, {c, d}) {} */ function good7(x, {a, b}, y) {} >good7 : (x: number, { a, b }: { a: string; b: string;}, y: string) => void -> : ^^^^ ^^^^^^^^^^^^^ ^^ ^ ^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^ ^^ ^^^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >a : string @@ -123,7 +123,7 @@ function good7(x, {a, b}, y) {} */ function good8({a, b}) {} >good8 : ({ a, b }: { a: string; b: string;}) => void -> : ^^^^^^^^^^^^ ^^ ^ ^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^ ^^^^^^^^^^^ >a : string > : ^^^^^^ >b : string @@ -134,7 +134,7 @@ function good8({a, b}) {} */ function good9({ a }) { >good9 : ({ a }: { a: string; }, ...args: any[]) => void -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ @@ -142,11 +142,11 @@ function good9({ a }) { >console.log(arguments, a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >arguments : IArguments > : ^^^^^^^^^^ >a : string @@ -161,7 +161,7 @@ function good9({ a }) { */ function bad1(x, {a, b}) {} >bad1 : (x: string, { a, b }: string) => void -> : ^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >a : any @@ -175,7 +175,7 @@ function bad1(x, {a, b}) {} */ function bad2(x, {a, b}) {} >bad2 : (x: any, { a, b }: { a: string; b: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^^^^^^^^ >x : any > : ^^^ >a : string diff --git a/tests/baselines/reference/jsdocParamTagInvalid.types b/tests/baselines/reference/jsdocParamTagInvalid.types index f752ffcdfcbf7..18d655e8f6887 100644 --- a/tests/baselines/reference/jsdocParamTagInvalid.types +++ b/tests/baselines/reference/jsdocParamTagInvalid.types @@ -4,7 +4,7 @@ /** @param {string} colour */ function f(color) {} >f : (color: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >color : any > : ^^^ diff --git a/tests/baselines/reference/jsdocParamTagOnPropertyInitializer.types b/tests/baselines/reference/jsdocParamTagOnPropertyInitializer.types index 996aabe4efa8a..250d7a4f3beae 100644 --- a/tests/baselines/reference/jsdocParamTagOnPropertyInitializer.types +++ b/tests/baselines/reference/jsdocParamTagOnPropertyInitializer.types @@ -8,9 +8,9 @@ class Foo { /**@param {string} x */ m = x => x.toLowerCase(); >m : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x => x.toLowerCase() : (x: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >x.toLowerCase() : string diff --git a/tests/baselines/reference/jsdocParamTagTypeLiteral.types b/tests/baselines/reference/jsdocParamTagTypeLiteral.types index c0c44bf3bcc45..6b8de73cc719c 100644 --- a/tests/baselines/reference/jsdocParamTagTypeLiteral.types +++ b/tests/baselines/reference/jsdocParamTagTypeLiteral.types @@ -7,7 +7,7 @@ */ function normal(notSpecial) { >normal : (notSpecial: Object) => void -> : ^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >notSpecial : Object > : ^^^^^^ @@ -19,7 +19,7 @@ normal(12); >normal(12) : void > : ^^^^ >normal : (notSpecial: Object) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >12 : 12 > : ^^ @@ -32,7 +32,7 @@ normal(12); */ function foo1(opts1) { >foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined;}) => void -> : ^^^^^^^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >opts1 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -48,8 +48,8 @@ function foo1(opts1) { foo1({x: 'abc'}); >foo1({x: 'abc'}) : void > : ^^^^ ->foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo1 : (opts1: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined;}) => void +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{x: 'abc'} : { x: string; } > : ^^^^^^^^^^^^^^ >x : string @@ -64,7 +64,7 @@ foo1({x: 'abc'}); */ function foo2(/** @param opts2 bad idea theatre! */opts2) { >foo2 : (opts2: { anotherX: string; anotherY?: string | undefined;}) => void -> : ^^^^^^^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >opts2 : { anotherX: string; anotherY?: string | undefined; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -84,8 +84,8 @@ function foo2(/** @param opts2 bad idea theatre! */opts2) { foo2([{anotherX: "world"}]); >foo2([{anotherX: "world"}]) : void > : ^^^^ ->foo2 : (opts2: { anotherX: string; anotherY?: string | undefined; }[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo2 : (opts2: { anotherX: string; anotherY?: string | undefined;}) => void +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[{anotherX: "world"}] : { anotherX: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >{anotherX: "world"} : { anotherX: string; } @@ -101,7 +101,7 @@ foo2([{anotherX: "world"}]); */ function foo3(opts3) { >foo3 : (opts3: { x: string;}) => void -> : ^^^^^^^^^ ^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^^^^^^^^^ >opts3 : { x: string; } > : ^^^^^^^^^^^^^^ @@ -116,8 +116,8 @@ function foo3(opts3) { foo3({x: 'abc'}); >foo3({x: 'abc'}) : void > : ^^^^ ->foo3 : (opts3: { x: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo3 : (opts3: { x: string;}) => void +> : ^ ^^^ ^^ ^^^^^^^^^^^ >{x: 'abc'} : { x: string; } > : ^^^^^^^^^^^^^^ >x : string @@ -134,7 +134,7 @@ foo3({x: 'abc'}); */ function foo4(opts4) { >foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string;}) => void -> : ^^^^^^^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^ ^ ^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^ ^ ^^^ ^^^^^^^^^^^ >opts4 : { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -154,8 +154,8 @@ function foo4(opts4) { foo4([{ x: 'hi' }]); >foo4([{ x: 'hi' }]) : void > : ^^^^ ->foo4 : (opts4: { x: string; y?: string | undefined; z?: string | undefined; w?: string | undefined; }[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo4 : (opts4: { x: string; y?: string | undefined; z?: string; w?: string;}) => void +> : ^ ^^^ ^^ ^ ^^^ ^^^^^^^^^^^^^ ^^^ ^ ^^^ ^^^^^^^^^^^ >[{ x: 'hi' }] : { x: string; }[] > : ^^^^^^^^^^^^^^^^ >{ x: 'hi' } : { x: string; } @@ -177,7 +177,7 @@ foo4([{ x: 'hi' }]); */ function foo5(opts5) { >foo5 : (opts5: { help: string; what: { a: string; bad: { idea: string; oh: boolean; }; }; unnest: number;}) => void -> : ^^^^^^^^^ ^^ ^ ^^^ ^^ ^ ^^^ ^^ ^ ^^ ^ ^^ ^^ ^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^ ^ ^^^ ^^ ^ ^^^ ^^ ^ ^^ ^ ^^ ^^ ^^ ^^^^^^^^^^^ >opts5 : { help: string; what: { a: string; bad: { idea: string; oh: boolean; }[]; }; unnest: number; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -197,7 +197,7 @@ function foo5(opts5) { >0 : 0 > : ^ >what : { a: string; bad: { idea: string; oh: boolean; }[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^ >bad : { idea: string; oh: boolean; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 @@ -221,8 +221,8 @@ function foo5(opts5) { foo5([{ help: "help", what: { a: 'a', bad: [{ idea: 'idea', oh: false }] }, unnest: 1 }]); >foo5([{ help: "help", what: { a: 'a', bad: [{ idea: 'idea', oh: false }] }, unnest: 1 }]) : void > : ^^^^ ->foo5 : (opts5: { help: string; what: { a: string; bad: { idea: string; oh: boolean; }[]; }; unnest: number; }[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo5 : (opts5: { help: string; what: { a: string; bad: { idea: string; oh: boolean; }; }; unnest: number;}) => void +> : ^ ^^^ ^^ ^ ^^^ ^^ ^ ^^^ ^^ ^ ^^ ^ ^^ ^^ ^^ ^^^^^^^^^^^ >[{ help: "help", what: { a: 'a', bad: [{ idea: 'idea', oh: false }] }, unnest: 1 }] : { help: string; what: { a: string; bad: { idea: string; oh: false; }[]; }; unnest: number; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ help: "help", what: { a: 'a', bad: [{ idea: 'idea', oh: false }] }, unnest: 1 } : { help: string; what: { a: string; bad: { idea: string; oh: false; }[]; }; unnest: number; } diff --git a/tests/baselines/reference/jsdocParameterParsingInvalidName.types b/tests/baselines/reference/jsdocParameterParsingInvalidName.types index dea0b515d89bc..8da8ba3fad870 100644 --- a/tests/baselines/reference/jsdocParameterParsingInvalidName.types +++ b/tests/baselines/reference/jsdocParameterParsingInvalidName.types @@ -10,7 +10,7 @@ class c { */ method(foo) { >method : (foo: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : any } } diff --git a/tests/baselines/reference/jsdocParseBackquotedParamName.types b/tests/baselines/reference/jsdocParseBackquotedParamName.types index c638939db125d..97c79a9672924 100644 --- a/tests/baselines/reference/jsdocParseBackquotedParamName.types +++ b/tests/baselines/reference/jsdocParseBackquotedParamName.types @@ -7,7 +7,7 @@ */ function f(args, bwarg) { >f : (args?: string | undefined, bwarg: (number | null) | null) => void -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >args : string | undefined > : ^^^^^^^^^^^^^^^^^^ >bwarg : number | null @@ -20,7 +20,7 @@ function f(args, bwarg) { */ function g(arg: string) { >g : (arg: string) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : string > : ^^^^^^ } diff --git a/tests/baselines/reference/jsdocParseDotDotDotInJSDocFunction.types b/tests/baselines/reference/jsdocParseDotDotDotInJSDocFunction.types index c90f41e0676cb..6e88157966131 100644 --- a/tests/baselines/reference/jsdocParseDotDotDotInJSDocFunction.types +++ b/tests/baselines/reference/jsdocParseDotDotDotInJSDocFunction.types @@ -5,15 +5,15 @@ /** @param {function(...[*])} callback */ function g(callback) { >g : (callback: (...args: [any][]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >callback : (...arg0: [any][]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ callback([1], [2], [3]) >callback([1], [2], [3]) : any > : ^^^ >callback : (...arg0: [any][]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^ >[1] : [number] > : ^^^^^^^^ >1 : 1 @@ -34,11 +34,11 @@ function g(callback) { */ var stringFromCharCode = String.fromCharCode; >stringFromCharCode : (...arg0: number[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^^^^^ >String.fromCharCode : (...codes: number[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >String : StringConstructor > : ^^^^^^^^^^^^^^^^^ >fromCharCode : (...codes: number[]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocParseErrorsInTypescript.types b/tests/baselines/reference/jsdocParseErrorsInTypescript.types index f4ecf7805eadf..57bba7b6d7533 100644 --- a/tests/baselines/reference/jsdocParseErrorsInTypescript.types +++ b/tests/baselines/reference/jsdocParseErrorsInTypescript.types @@ -4,7 +4,7 @@ // parse error (blocks grammar errors from checker) function parse1(n: number=) { } >parse1 : (n?: number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >n : number > : ^^^^^^ > : any diff --git a/tests/baselines/reference/jsdocParseHigherOrderFunction.types b/tests/baselines/reference/jsdocParseHigherOrderFunction.types index 6acdc823a6232..377538e6db362 100644 --- a/tests/baselines/reference/jsdocParseHigherOrderFunction.types +++ b/tests/baselines/reference/jsdocParseHigherOrderFunction.types @@ -3,18 +3,18 @@ === paren.js === /** @type {function((string), function((string)): string): string} */ var x = (s, id) => id(s) ->x : (arg0: string, arg1: (arg0: string) => string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(s, id) => id(s) : (s: string, id: (arg0: string) => string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x : (arg0: (string), arg1: (arg0: (string)) => string) => string +> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^ +>(s, id) => id(s) : (s: string, id: (arg0: (string)) => string) => string +> : ^ ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ ->id : (arg0: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>id : (arg0: (string)) => string +> : ^^^^^^^ ^^^^^^^^^^^ >id(s) : string > : ^^^^^^ ->id : (arg0: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>id : (arg0: (string)) => string +> : ^^^^^^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocParseMatchingBackticks.types b/tests/baselines/reference/jsdocParseMatchingBackticks.types index b34f5cb0b9e0d..e61efacd66066 100644 --- a/tests/baselines/reference/jsdocParseMatchingBackticks.types +++ b/tests/baselines/reference/jsdocParseMatchingBackticks.types @@ -14,7 +14,7 @@ */ export function f(x, y, z, alpha, beta, gamma) { >f : (x: string, y: string, z: string, alpha: string, beta: string, gamma: string) => string -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : string > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/jsdocParseParenthesizedJSDocParameter.types b/tests/baselines/reference/jsdocParseParenthesizedJSDocParameter.types index 511c9c63ec764..60ec2939f482c 100644 --- a/tests/baselines/reference/jsdocParseParenthesizedJSDocParameter.types +++ b/tests/baselines/reference/jsdocParseParenthesizedJSDocParameter.types @@ -3,10 +3,10 @@ === paren.js === /** @type {function((string)): string} */ var x = s => s.toString() ->x : (arg0: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +>x : (arg0: (string)) => string +> : ^^^^^^^ ^^^^^^^^^^^ >s => s.toString() : (s: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s.toString() : string diff --git a/tests/baselines/reference/jsdocParseStarEquals.types b/tests/baselines/reference/jsdocParseStarEquals.types index cc7a209a7cabb..57c749d0aa2e9 100644 --- a/tests/baselines/reference/jsdocParseStarEquals.types +++ b/tests/baselines/reference/jsdocParseStarEquals.types @@ -5,7 +5,7 @@ @return {*=} */ function f(...args) { >f : (...args?: any[] | undefined) => any | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >args : any return null @@ -19,7 +19,7 @@ var x; /** @param {function():*=} f */ function cbf(f) { >cbf : (f?: (() => any) | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (() => any) | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/jsdocPostfixEqualsAddsOptionality.types b/tests/baselines/reference/jsdocPostfixEqualsAddsOptionality.types index 3e65bcf22dc94..dc2d070d866d4 100644 --- a/tests/baselines/reference/jsdocPostfixEqualsAddsOptionality.types +++ b/tests/baselines/reference/jsdocPostfixEqualsAddsOptionality.types @@ -4,7 +4,7 @@ /** @param {number=} a */ function f(a) { >f : (a?: number | undefined) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -34,19 +34,19 @@ f() >f() : void > : ^^^^ >f : (a?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ f(null) // should not be allowed >f(null) : void > : ^^^^ >f : (a?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ f(undefined) >f(undefined) : void > : ^^^^ >f : (a?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -54,14 +54,14 @@ f(1) >f(1) : void > : ^^^^ >f : (a?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ /** @param {???!?number?=} a */ function g(a) { >g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -90,28 +90,28 @@ function g(a) { g() >g() : void > : ^^^^ ->g : (a?: number | null | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ g(null) >g(null) : void > : ^^^^ ->g : (a?: number | null | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ g(undefined) >g(undefined) : void > : ^^^^ ->g : (a?: number | null | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ g(1) >g(1) : void > : ^^^^ ->g : (a?: number | null | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>g : (a?: (((((number | null) | null) | null) | null) | null) | undefined) => void +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/jsdocPrefixPostfixParsing.types b/tests/baselines/reference/jsdocPrefixPostfixParsing.types index 1bc63b9870da4..60e8c9ad9bc90 100644 --- a/tests/baselines/reference/jsdocPrefixPostfixParsing.types +++ b/tests/baselines/reference/jsdocPrefixPostfixParsing.types @@ -20,7 +20,7 @@ */ function f(x, y, z, a, b, c, e, f, g, h, i, j, k, l, m) { >f : (x: number[], y: number[], z: (number[]), a: any, b: number[] | null, c: (number[]) | null, e: (number | null)[], f: (number | null)[], g: (number | null)[], h: any, i: number[][], j: (number[] | null)[], k: any, l: number extends number ? true : false, m: [number, number?]) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : number[] > : ^^^^^^^^ >y : number[] diff --git a/tests/baselines/reference/jsdocPropertyTagInvalid.types b/tests/baselines/reference/jsdocPropertyTagInvalid.types index 38e117025b37c..f94958fab563f 100644 --- a/tests/baselines/reference/jsdocPropertyTagInvalid.types +++ b/tests/baselines/reference/jsdocPropertyTagInvalid.types @@ -9,20 +9,20 @@ /** @param {MyType} p */ export function f(p) { } >f : (p: MyType) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : MyType > : ^^^^^^ === /b.js === import { f } from "./a.js" ->f : (p: import("/a").MyType) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (p: MyType) => void +> : ^ ^^ ^^^^^^^^^ f({ x: 42 }) >f({ x: 42 }) : void > : ^^^^ ->f : (p: import("/a").MyType) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (p: MyType) => void +> : ^ ^^ ^^^^^^^^^ >{ x: 42 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number diff --git a/tests/baselines/reference/jsdocReferenceGlobalTypeInCommonJs.types b/tests/baselines/reference/jsdocReferenceGlobalTypeInCommonJs.types index 7146f3de1a719..74e292dc0e0e1 100644 --- a/tests/baselines/reference/jsdocReferenceGlobalTypeInCommonJs.types +++ b/tests/baselines/reference/jsdocReferenceGlobalTypeInCommonJs.types @@ -5,7 +5,7 @@ const other = require('./other'); >other : () => string > : ^^^^^^^^^^^^ >require('./other') : () => string -> : ^^^^^^^^^^^^ +> : >require : any > : ^^^ >'./other' : "./other" @@ -18,11 +18,11 @@ var ppk; Puppeteer.connect; >Puppeteer.connect : (name: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >Puppeteer : typeof Puppeteer > : ^^^^^^^^^^^^^^^^ >connect : (name: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ === puppet.d.ts === export as namespace Puppeteer; @@ -36,7 +36,7 @@ export interface Keyboard { } export function connect(name: string): void; >connect : (name: string) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocResolveNameFailureInTypedef.types b/tests/baselines/reference/jsdocResolveNameFailureInTypedef.types index 49e46a926b07e..7e9a79fe8921a 100644 --- a/tests/baselines/reference/jsdocResolveNameFailureInTypedef.types +++ b/tests/baselines/reference/jsdocResolveNameFailureInTypedef.types @@ -6,7 +6,7 @@ */ function f(x) {} >f : (x: CantResolveThis) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : CantResolveThis > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocRestParameter_es6.types b/tests/baselines/reference/jsdocRestParameter_es6.types index 94db0912a911f..f4be9f19723d9 100644 --- a/tests/baselines/reference/jsdocRestParameter_es6.types +++ b/tests/baselines/reference/jsdocRestParameter_es6.types @@ -4,7 +4,7 @@ /** @param {...number} a */ function f(...a) { >f : (...a: number[]) => void -> : ^^^^^^^ ^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ >a : number[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/jsdocSignatureOnReturnedFunction.types b/tests/baselines/reference/jsdocSignatureOnReturnedFunction.types index 2ff3401883b90..df1f478940662 100644 --- a/tests/baselines/reference/jsdocSignatureOnReturnedFunction.types +++ b/tests/baselines/reference/jsdocSignatureOnReturnedFunction.types @@ -3,7 +3,7 @@ === jsdocSignatureOnReturnedFunction.js === function f1() { >f1 : () => (a: number, b: number) => number -> : ^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ /** * @param {number} a @@ -12,7 +12,7 @@ function f1() { */ return (a, b) => { >(a, b) => { return a + b; } : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -30,7 +30,7 @@ function f1() { function f2() { >f2 : () => (a: number, b: number) => number -> : ^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ /** * @param {number} a @@ -39,7 +39,7 @@ function f2() { */ return function (a, b){ >function (a, b){ return a + b; } : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -57,12 +57,12 @@ function f2() { function f3() { >f3 : () => (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ /** @type {(a: number, b: number) => number} */ return (a, b) => { >(a, b) => { return a + b; } : (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -80,12 +80,12 @@ function f3() { function f4() { >f4 : () => (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ /** @type {(a: number, b: number) => number} */ return function (a, b){ >function (a, b){ return a + b; } : (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/jsdocTemplateClass.types b/tests/baselines/reference/jsdocTemplateClass.types index 529252ca9c4b0..40c523e75a733 100644 --- a/tests/baselines/reference/jsdocTemplateClass.types +++ b/tests/baselines/reference/jsdocTemplateClass.types @@ -37,19 +37,19 @@ class Foo { */ foo(x, y, alpha) { >foo : (x: T, y: Id, alpha: (t: T) => T) => T -> : ^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^^^^^^^^^ >x : T > : ^ >y : Id > : ^^^^^ >alpha : (t: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ return alpha(y(x)) >alpha(y(x)) : T > : ^ >alpha : (t: T) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >y(x) : T > : ^ >y : Id diff --git a/tests/baselines/reference/jsdocTemplateConstructorFunction.types b/tests/baselines/reference/jsdocTemplateConstructorFunction.types index 096c9c8f3312a..0ce345ed26b0c 100644 --- a/tests/baselines/reference/jsdocTemplateConstructorFunction.types +++ b/tests/baselines/reference/jsdocTemplateConstructorFunction.types @@ -42,7 +42,7 @@ function Zet(t) { */ Zet.prototype.add = function(v, id) { >Zet.prototype.add = function(v, id) { this.u = v || this.t return id(this.u)} : (v: T, id: Id) => T -> : ^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >Zet.prototype.add : any > : ^^^ >Zet.prototype : any @@ -54,7 +54,7 @@ Zet.prototype.add = function(v, id) { >add : any > : ^^^ >function(v, id) { this.u = v || this.t return id(this.u)} : (v: T, id: Id) => T -> : ^^^^ ^^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ >v : T > : ^ >id : Id diff --git a/tests/baselines/reference/jsdocTemplateConstructorFunction2.types b/tests/baselines/reference/jsdocTemplateConstructorFunction2.types index 13c0adad8b56c..46e97677fb147 100644 --- a/tests/baselines/reference/jsdocTemplateConstructorFunction2.types +++ b/tests/baselines/reference/jsdocTemplateConstructorFunction2.types @@ -39,7 +39,7 @@ function Zet(t) { */ Zet.prototype.add = function(v, o) { >Zet.prototype.add = function(v, o) { this.u = v || o.nested return this.u} : (v: T, o: { nested: T;}) => T -> : ^^^^ ^^^^^^ ^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^^^^^^ >Zet.prototype.add : any > : ^^^ >Zet.prototype : any @@ -51,7 +51,7 @@ Zet.prototype.add = function(v, o) { >add : any > : ^^^ >function(v, o) { this.u = v || o.nested return this.u} : (v: T, o: { nested: T;}) => T -> : ^^^^ ^^^^^^ ^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^^^^^^ >v : T > : ^ >o : { nested: T; } @@ -126,11 +126,11 @@ let answer = z.add(3, { nested: 4 }) >z.add(3, { nested: 4 }) : number > : ^^^^^^ >z.add : (v: number, o: { nested: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : Zet > : ^^^^^^^^^^^ >add : (v: number, o: { nested: number; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 > : ^ >{ nested: 4 } : { nested: number; } diff --git a/tests/baselines/reference/jsdocTemplateTag.types b/tests/baselines/reference/jsdocTemplateTag.types index 5995fc03f4cba..ac95f0dfb309e 100644 --- a/tests/baselines/reference/jsdocTemplateTag.types +++ b/tests/baselines/reference/jsdocTemplateTag.types @@ -7,7 +7,7 @@ */ function f(a) { >f : (a: T) => () => T -> : ^ ^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >a : T > : ^ @@ -25,7 +25,7 @@ let n = f(1)() >f(1) : () => number > : ^^^^^^^^^^^^ >f : (a: T) => () => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >1 : 1 > : ^ @@ -36,7 +36,7 @@ let n = f(1)() */ function g(a) { >g : (a: T) => () => T -> : ^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^ >a : T > : ^ @@ -54,7 +54,7 @@ let s = g('hi')() >g('hi') : () => string > : ^^^^^^^^^^^^ >g : (a: T) => () => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^ >'hi' : "hi" > : ^^^^ @@ -63,19 +63,19 @@ let s = g('hi')() */ Element.prototype.animate = function(keyframes) {}; >Element.prototype.animate = function(keyframes) {} : (keyframes: Array) => void -> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ->Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ +>Element.prototype.animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >Element.prototype : Element > : ^^^^^^^ >Element : { new (): Element; prototype: Element; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >prototype : Element > : ^^^^^^^ ->animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>animate : (keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions) => Animation +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ >function(keyframes) {} : (keyframes: Array) => void -> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >keyframes : any[] > : ^^^^^ diff --git a/tests/baselines/reference/jsdocTemplateTag2.types b/tests/baselines/reference/jsdocTemplateTag2.types index 2d6f7a3fb1122..f1c44122a2d88 100644 --- a/tests/baselines/reference/jsdocTemplateTag2.types +++ b/tests/baselines/reference/jsdocTemplateTag2.types @@ -3,9 +3,9 @@ === github17339.js === var obj = { >obj : { x: (a: T) => T; } -> : ^^^^^^ ^^^^^ ^^^^^ ^^^ +> : ^^^^^^ ^^ ^^ ^^^^^ ^^^ >{ /** * @template T * @param {T} a * @returns {T} */ x: function (a) { return a; },} : { x: (a: T) => T; } -> : ^^^^^^ ^^^^^ ^^^^^ ^^^ +> : ^^^^^ ^^^ /** * @template T @@ -14,9 +14,9 @@ var obj = { */ x: function (a) { >x : (a: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >function (a) { return a; } : (a: T) => T -> : ^ ^^^^^ ^^^^^ +> : >a : T > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag3.types b/tests/baselines/reference/jsdocTemplateTag3.types index b078ec0562cc4..f35cc77f10a90 100644 --- a/tests/baselines/reference/jsdocTemplateTag3.types +++ b/tests/baselines/reference/jsdocTemplateTag3.types @@ -15,7 +15,7 @@ */ function f(t, u, v, w, x) { >f : (t: T, u: U, v: V, w: W, x: X) => W | X -> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -88,7 +88,7 @@ f({ a: 12, b: 'hi', c: null }, undefined, { c: false, d: 12, b: undefined }, 101 >f({ a: 12, b: 'hi', c: null }, undefined, { c: false, d: 12, b: undefined }, 101, 'nope') : 101 | "nope" > : ^^^^^^^^^^^^ >f : (t: T, u: U, v: V, w: W, x: X) => W | X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >{ a: 12, b: 'hi', c: null } : { a: number; b: string; c: null; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -126,7 +126,7 @@ f({ a: 12 }, undefined, undefined, 101, 'nope'); >f({ a: 12 }, undefined, undefined, 101, 'nope') : 101 | "nope" > : ^^^^^^^^^^^^ >f : (t: T, u: U, v: V, w: W, x: X) => W | X -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^ >{ a: 12 } : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -149,7 +149,7 @@ f({ a: 12 }, undefined, undefined, 101, 'nope'); */ function g(x) { } >g : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag4.types b/tests/baselines/reference/jsdocTemplateTag4.types index 932f609a511ac..c8064597f9fe3 100644 --- a/tests/baselines/reference/jsdocTemplateTag4.types +++ b/tests/baselines/reference/jsdocTemplateTag4.types @@ -32,7 +32,7 @@ function Multimap() { */ Multimap.prototype.get = function (key) { >Multimap.prototype.get = function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Multimap.prototype.get : any >Multimap.prototype : any > : ^^^ @@ -43,7 +43,7 @@ Multimap.prototype.get = function (key) { >get : any > : ^^^ >function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >key : K > : ^ @@ -97,7 +97,7 @@ var Multimap2 = function() { */ Multimap2.prototype.get = function (key) { >Multimap2.prototype.get = function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Multimap2.prototype.get : any >Multimap2.prototype : any > : ^^^ @@ -108,7 +108,7 @@ Multimap2.prototype.get = function (key) { >get : any > : ^^^ >function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >key : K > : ^ @@ -174,7 +174,7 @@ Ns.Multimap3 = function() { */ Ns.Multimap3.prototype.get = function (key) { >Ns.Multimap3.prototype.get = function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >Ns.Multimap3.prototype.get : any >Ns.Multimap3.prototype : any > : ^^^ @@ -189,7 +189,7 @@ Ns.Multimap3.prototype.get = function (key) { >get : any > : ^^^ >function (key) { return this._map[key + ''];} : (key: K) => V -> : ^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >key : K > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag5.types b/tests/baselines/reference/jsdocTemplateTag5.types index ffee4633c86b8..72c9158e2e1d5 100644 --- a/tests/baselines/reference/jsdocTemplateTag5.types +++ b/tests/baselines/reference/jsdocTemplateTag5.types @@ -28,15 +28,15 @@ function Multimap() { Multimap.prototype = { >Multimap.prototype = { /** * @param {K} key the key ok * @returns {V} the value ok */ get(key) { return this._map[key + '']; }} : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ >Multimap.prototype : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ >Multimap : typeof Multimap > : ^^^^^^^^^^^^^^^ >prototype : { get(key: K): V; } -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^ >{ /** * @param {K} key the key ok * @returns {V} the value ok */ get(key) { return this._map[key + '']; }} : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ /** * @param {K} key the key ok @@ -44,7 +44,7 @@ Multimap.prototype = { */ get(key) { >get : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ @@ -95,15 +95,15 @@ var Multimap2 = function() { Multimap2.prototype = { >Multimap2.prototype = { /** * @param {K} key the key ok * @returns {V} the value ok */ get: function(key) { return this._map[key + '']; }} : { get: (key: K) => V; } -> : ^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^^^^ ^^^ >Multimap2.prototype : { get: (key: K) => V; } -> : ^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^^ ^^ ^^^^^ ^^^ >Multimap2 : typeof Multimap2 > : ^^^^^^^^^^^^^^^^ >prototype : { get: (key: K) => V; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^ >{ /** * @param {K} key the key ok * @returns {V} the value ok */ get: function(key) { return this._map[key + '']; }} : { get: (key: K) => V; } -> : ^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^ ^^^ /** * @param {K} key the key ok @@ -111,9 +111,9 @@ Multimap2.prototype = { */ get: function(key) { >get : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >function(key) { return this._map[key + '']; } : (key: K) => V -> : ^^^^^^ ^^^^^ +> : >key : K > : ^ @@ -176,9 +176,9 @@ Ns.Multimap3 = function() { Ns.Multimap3.prototype = { >Ns.Multimap3.prototype = { /** * @param {K} key the key ok * @returns {V} the value ok */ get(key) { return this._map[key + '']; }} : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ >Ns.Multimap3.prototype : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ >Ns.Multimap3 : typeof Multimap3 > : ^^^^^^^^^^^^^^^^ >Ns : typeof Ns @@ -186,9 +186,9 @@ Ns.Multimap3.prototype = { >Multimap3 : typeof Multimap3 > : ^^^^^^^^^^^^^^^^ >prototype : { get(key: K): V; } -> : ^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^ >{ /** * @param {K} key the key ok * @returns {V} the value ok */ get(key) { return this._map[key + '']; }} : { get(key: K): V; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ /** * @param {K} key the key ok @@ -196,7 +196,7 @@ Ns.Multimap3.prototype = { */ get(key) { >get : (key: K) => V -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >key : K > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag6.types b/tests/baselines/reference/jsdocTemplateTag6.types index 250755d2d48b9..287c7db49bd8f 100644 --- a/tests/baselines/reference/jsdocTemplateTag6.types +++ b/tests/baselines/reference/jsdocTemplateTag6.types @@ -8,7 +8,7 @@ */ function f1(x) { >f1 : (x: T) => T -> : ^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -22,7 +22,7 @@ const t1 = f1("a"); >f1("a") : "a" > : ^^^ >f1 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >"a" : "a" > : ^^^ @@ -32,7 +32,7 @@ const t2 = f1(["a", ["b", "c"]]); >f1(["a", ["b", "c"]]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >["a", ["b", "c"]] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >"a" : "a" @@ -48,9 +48,9 @@ const t3 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); >t3 : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f1 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -85,7 +85,7 @@ const t3 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); */ function f2(x) { >f2 : (x: T) => T -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -100,7 +100,7 @@ const t4 = f2('a'); >f2('a') : "a" > : ^^^ >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^ ^^^^^^ >'a' : "a" > : ^^^ @@ -110,7 +110,7 @@ const t5 = f2(['a', ['b', 'c']]); >f2(['a', ['b', 'c']]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^ ^^^^^^ >['a', ['b', 'c']] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -126,9 +126,9 @@ const t6 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); >t6 : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >f2 : (x: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^ ^^ ^^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -163,7 +163,7 @@ const t6 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); */ function f3(x) { >f3 : (x: T) => T[] -> : ^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -179,7 +179,7 @@ const t7 = f3("hello"); >f3("hello") : "hello"[] > : ^^^^^^^^^ >f3 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -189,7 +189,7 @@ const t8 = f3("hello"); >f3("hello") : "hello"[] > : ^^^^^^^^^ >f3 : (x: T) => T[] -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -200,7 +200,7 @@ const t8 = f3("hello"); */ function f4(x) { >f4 : (x: [T, T]) => T -> : ^^^^^^^ ^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^ >x : [T, T] > : ^^^^^^ @@ -218,7 +218,7 @@ const t9 = f4([[1, "x"], [2, "y"]]); >f4([[1, "x"], [2, "y"]]) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4 : (x: [T, T]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >[[1, "x"], [2, "y"]] : [[1, "x"], [2, "y"]] > : ^^^^^^^^^^^^^^^^^^^^ >[1, "x"] : [1, "x"] @@ -238,9 +238,9 @@ const t10 = f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]); >t10 : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >f4 : (x: [T, T]) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >[{ a: 1, b: "x" }, { a: 2, b: "y" }] : [{ a: 1; b: "x"; }, { a: 2; b: "y"; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: "x" } : { a: 1; b: "x"; } @@ -271,7 +271,7 @@ const t10 = f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]); */ function f5(obj) { >f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^ >obj : { x: T; y: T; } > : ^^^^^^^^^^^^^^^ @@ -289,7 +289,7 @@ const t11 = f5({ x: [1, "x"], y: [2, "y"] }); >f5({ x: [1, "x"], y: [2, "y"] }) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >{ x: [1, "x"], y: [2, "y"] } : { x: [1, "x"]; y: [2, "y"]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : [1, "x"] @@ -313,9 +313,9 @@ const t12 = f5({ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } }); >t12 : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5({ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } }) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >{ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } } : { x: { a: 1; b: "x"; }; y: { a: 2; b: "y"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { a: 1; b: "x"; } @@ -363,7 +363,7 @@ class C { */ foo(x) { >foo : (x: U) => U -> : ^^^^^^^ ^^^^^ ^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ >x : U > : ^ @@ -377,7 +377,7 @@ const t13 = new C({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); >t13 : C<{ readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new C({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : C<{ readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^ >C : typeof C > : ^^^^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } @@ -413,11 +413,11 @@ const t14 = t13.foo(["a", ["b", "c"]]); >t13.foo(["a", ["b", "c"]]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t13.foo : (x: U) => U -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^ >t13 : C<{ readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : (x: U) => U -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^^^^^^^^ >["a", ["b", "c"]] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >"a" : "a" @@ -436,7 +436,7 @@ const t14 = t13.foo(["a", ["b", "c"]]); */ function f6(...args) { >f6 : (...args: T) => T -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ @@ -448,9 +448,9 @@ const t15 = f6(1, 'b', { a: 1, b: 'x' }); >t15 : readonly [1, "b", { readonly a: 1; readonly b: "x"; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f6(1, 'b', { a: 1, b: 'x' }) : readonly [1, "b", { readonly a: 1; readonly b: "x"; }] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^ >f6 : (...args: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >1 : 1 > : ^ >'b' : "b" diff --git a/tests/baselines/reference/jsdocTemplateTag7.types b/tests/baselines/reference/jsdocTemplateTag7.types index a8fe18a3431cf..fea980eebeae2 100644 --- a/tests/baselines/reference/jsdocTemplateTag7.types +++ b/tests/baselines/reference/jsdocTemplateTag7.types @@ -20,7 +20,7 @@ class C { } */ function f(x) { >f : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag8.types b/tests/baselines/reference/jsdocTemplateTag8.types index d83d68d8e2d51..79e8bc3e414e0 100644 --- a/tests/baselines/reference/jsdocTemplateTag8.types +++ b/tests/baselines/reference/jsdocTemplateTag8.types @@ -62,11 +62,11 @@ let super_contravariant = { f: (x) => {} }; >super_contravariant : Contravariant > : ^^^^^^^^^^^^^^^^^^^^^^ >{ f: (x) => {} } : { f: (x: unknown) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >f : (x: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >(x) => {} : (x: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >x : unknown > : ^^^^^^^ @@ -77,11 +77,11 @@ let sub_contravariant = { f: (x) => {} }; >sub_contravariant : Contravariant > : ^^^^^^^^^^^^^^^^^^^^^ >{ f: (x) => {} } : { f: (x: string) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >(x) => {} : (x: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ @@ -114,11 +114,11 @@ let super_invariant = { f: (x) => {} }; >super_invariant : Invariant > : ^^^^^^^^^^^^^^^^^^ >{ f: (x) => {} } : { f: (x: unknown) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >f : (x: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >(x) => {} : (x: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : >x : unknown > : ^^^^^^^ @@ -129,11 +129,11 @@ let sub_invariant = { f: (x) => { return "" } }; >sub_invariant : Invariant > : ^^^^^^^^^^^^^^^^^ >{ f: (x) => { return "" } } : { f: (x: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >f : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >(x) => { return "" } : (x: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >x : string > : ^^^^^^ >"" : "" @@ -161,7 +161,7 @@ sub_invariant = super_invariant; // Error */ function f(x) {} >f : (x: T) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTagDefault.types b/tests/baselines/reference/jsdocTemplateTagDefault.types index b8f2f5afe4c98..08ddcd29c25e2 100644 --- a/tests/baselines/reference/jsdocTemplateTagDefault.types +++ b/tests/baselines/reference/jsdocTemplateTagDefault.types @@ -78,7 +78,7 @@ const aNumber = [0]; */ function f1(a, b) {} >f1 : (a: T, b: U) => void -> : ^ ^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : U @@ -92,7 +92,7 @@ function f1(a, b) {} */ function f2(a, b) {} >f2 : (a: T, b: U) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : U @@ -106,7 +106,7 @@ function f2(a, b) {} */ function f3(a, b) {} >f3 : (a: T, b: U) => void -> : ^ ^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : U diff --git a/tests/baselines/reference/jsdocThisType.types b/tests/baselines/reference/jsdocThisType.types index 164cf9fa57e4a..b51f56b65cf38 100644 --- a/tests/baselines/reference/jsdocThisType.types +++ b/tests/baselines/reference/jsdocThisType.types @@ -18,8 +18,8 @@ export type M = (this: Foo) => void; export const f1 = function() { >f1 : import("/types").M > : ^^^^^^^^^^^^^^^^^^ ->function() { this.test();} : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function() { this.test();} : (this: Foo) => void +> : ^ ^^ ^^^^^^^^^ this.test(); >this.test() : any @@ -34,8 +34,8 @@ export const f1 = function() { /** @type {import('./types').M} */ export function f2() { ->f2 : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2 : (this: Foo) => void +> : ^ ^^ ^^^^^^^^^ this.test(); >this.test() : any @@ -50,10 +50,10 @@ export function f2() { /** @type {(this: import('./types').Foo) => void} */ export const f3 = function() { ->f3 : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function() { this.test();} : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f3 : (this: import('./types').Foo) => void +> : ^ ^^ ^^^^^^^^^ +>function() { this.test();} : (this: import('./types').Foo) => void +> : ^ ^^ ^^^^^^^^^ this.test(); >this.test() : any @@ -69,7 +69,7 @@ export const f3 = function() { /** @type {(this: import('./types').Foo) => void} */ export function f4() { >f4 : (this: import('./types').Foo) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ this.test(); >this.test() : any @@ -84,10 +84,10 @@ export function f4() { /** @type {function(this: import('./types').Foo): void} */ export const f5 = function() { ->f5 : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->function() { this.test();} : (this: import("/types").Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f5 : (this: import('./types').Foo) => void +> : ^ ^^ ^^^^^^^^^ +>function() { this.test();} : (this: import('./types').Foo) => void +> : ^ ^^ ^^^^^^^^^ this.test(); >this.test() : any @@ -103,7 +103,7 @@ export const f5 = function() { /** @type {function(this: import('./types').Foo): void} */ export function f6() { >f6 : (this: import('./types').Foo) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ this.test(); >this.test() : any diff --git a/tests/baselines/reference/jsdocTypeCast.types b/tests/baselines/reference/jsdocTypeCast.types index 90d55a1dd58c3..c2631db4bda9b 100644 --- a/tests/baselines/reference/jsdocTypeCast.types +++ b/tests/baselines/reference/jsdocTypeCast.types @@ -6,7 +6,7 @@ */ function f(x) { >f : (x: string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment.types b/tests/baselines/reference/jsdocTypeFromChainedAssignment.types index 7b84c3ce3d28a..6580492ee219e 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment.types +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment.types @@ -41,7 +41,7 @@ function A () { /** @param {number} n */ A.prototype.y = A.prototype.z = function f(n) { >A.prototype.y = A.prototype.z = function f(n) { return n + this.x} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >A.prototype.y : any > : ^^^ >A.prototype : any @@ -53,7 +53,7 @@ A.prototype.y = A.prototype.z = function f(n) { >y : any > : ^^^ >A.prototype.z = function f(n) { return n + this.x} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >A.prototype.z : any > : ^^^ >A.prototype : any @@ -65,9 +65,9 @@ A.prototype.y = A.prototype.z = function f(n) { >z : any > : ^^^ >function f(n) { return n + this.x} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >f : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ @@ -86,25 +86,25 @@ A.prototype.y = A.prototype.z = function f(n) { /** @param {number} m */ A.s = A.t = function g(m) { >A.s = A.t = function g(m) { return m + this.x} : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A.s : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A : typeof A > : ^^^^^^^^ >s : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A.t = function g(m) { return m + this.x} : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : >A.t : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A : typeof A > : ^^^^^^^^ >t : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >function g(m) { return m + this.x} : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : >g : (m: number) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >m : number > : ^^^^^^ @@ -132,11 +132,11 @@ a.y('no') // error >a.y('no') : number > : ^^^^^^ >a.y : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : A > : ^ >y : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'no' : "no" > : ^^^^ @@ -144,11 +144,11 @@ a.z('not really') // error >a.z('not really') : number > : ^^^^^^ >a.z : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >a : A > : ^ >z : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'not really' : "not really" > : ^^^^^^^^^^^^ @@ -156,11 +156,11 @@ A.s('still no') // error >A.s('still no') : any > : ^^^ >A.s : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A : typeof A > : ^^^^^^^^ >s : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'still no' : "still no" > : ^^^^^^^^^^ @@ -168,11 +168,11 @@ A.t('not here either') // error >A.t('not here either') : any > : ^^^ >A.t : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >A : typeof A > : ^^^^^^^^ >t : (m: number) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >'not here either' : "not here either" > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types index feeaa47133712..7747291fbe9e5 100644 --- a/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types +++ b/tests/baselines/reference/jsdocTypeFromChainedAssignment2.types @@ -15,11 +15,11 @@ mod.f('no') >mod.f('no') : number > : ^^^^^^ >mod.f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'no' : "no" > : ^^^^ @@ -27,11 +27,11 @@ mod.g('also no') >mod.g('also no') : number > : ^^^^^^ >mod.g : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ >g : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >'also no' : "also no" > : ^^^^^^^^^ @@ -39,11 +39,11 @@ mod.h(0) >mod.h(0) : string > : ^^^^^^ >mod.h : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ >h : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ @@ -51,11 +51,11 @@ mod.i(1) >mod.i(1) : string > : ^^^^^^ >mod.i : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ >i : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >1 : 1 > : ^ @@ -63,25 +63,25 @@ mod.i(1) /** @param {number} n */ exports.f = exports.g = function fg(n) { >exports.f = exports.g = function fg(n) { return n + 1} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >exports.f : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >exports : typeof import("mod") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >exports.g = function fg(n) { return n + 1} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >exports.g : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >exports : typeof import("mod") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : (n: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function fg(n) { return n + 1} : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >fg : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ @@ -96,9 +96,9 @@ exports.f = exports.g = function fg(n) { /** @param {string} mom */ module.exports.h = module.exports.i = function hi(mom) { >module.exports.h = module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >module.exports.h : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -106,11 +106,11 @@ module.exports.h = module.exports.i = function hi(mom) { >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >h : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >module.exports.i = function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : >module.exports.i : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -118,11 +118,11 @@ module.exports.h = module.exports.i = function hi(mom) { >exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >i : (mom: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >function hi(mom) { return `hi, ${mom}!`;} : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : >hi : (mom: string) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >mom : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocTypeGenericInstantiationAttempt.types b/tests/baselines/reference/jsdocTypeGenericInstantiationAttempt.types index fd1bbb3f1119e..98fd9aab45593 100644 --- a/tests/baselines/reference/jsdocTypeGenericInstantiationAttempt.types +++ b/tests/baselines/reference/jsdocTypeGenericInstantiationAttempt.types @@ -6,7 +6,7 @@ */ function thing(list) { >thing : (list: Array) => any[] -> : ^^^^^^^ ^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^^ >list : any[] > : ^^^^^ diff --git a/tests/baselines/reference/jsdocTypeNongenericInstantiationAttempt.types b/tests/baselines/reference/jsdocTypeNongenericInstantiationAttempt.types index 3ac78d75925b6..7327055aa8fa1 100644 --- a/tests/baselines/reference/jsdocTypeNongenericInstantiationAttempt.types +++ b/tests/baselines/reference/jsdocTypeNongenericInstantiationAttempt.types @@ -6,9 +6,9 @@ */ function sayHello(somebody) { >sayHello : (somebody: (m: boolean) => string) => string -> : ^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: boolean) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -16,7 +16,7 @@ function sayHello(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: boolean) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } === index2.js === @@ -25,9 +25,9 @@ function sayHello(somebody) { */ function sayHello2(somebody) { >sayHello2 : (somebody: (m: void) => string) => string -> : ^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: void) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -35,7 +35,7 @@ function sayHello2(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: void) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } @@ -45,9 +45,9 @@ function sayHello2(somebody) { */ function sayHello3(somebody) { >sayHello3 : (somebody: (m: undefined) => string) => string -> : ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -55,7 +55,7 @@ function sayHello3(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } @@ -65,9 +65,9 @@ function sayHello3(somebody) { */ function sayHello4(somebody) { >sayHello4 : (somebody: (m: Function) => string) => string -> : ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ ^^^^^^^^^^^ >somebody : (m: Function) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -75,7 +75,7 @@ function sayHello4(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: Function) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ } @@ -85,9 +85,9 @@ function sayHello4(somebody) { */ function sayHello5(somebody) { >sayHello5 : (somebody: (m: string) => string) => string -> : ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -95,7 +95,7 @@ function sayHello5(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } @@ -105,9 +105,9 @@ function sayHello5(somebody) { */ function sayHello6(somebody) { >sayHello6 : (somebody: (m: number) => string) => string -> : ^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -115,7 +115,7 @@ function sayHello6(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } @@ -125,9 +125,9 @@ function sayHello6(somebody) { */ function sayHello7(somebody) { >sayHello7 : (somebody: (m: any) => string) => string -> : ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >somebody : (m: any) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ return 'Hello ' + somebody; >'Hello ' + somebody : string @@ -135,7 +135,7 @@ function sayHello7(somebody) { >'Hello ' : "Hello " > : ^^^^^^^^ >somebody : (m: any) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^^^ } === index8.js === @@ -148,7 +148,7 @@ function fn() {} */ function sayHello8(somebody) { } >sayHello8 : (somebody: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >somebody : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocTypeReferenceToValue.types b/tests/baselines/reference/jsdocTypeReferenceToValue.types index 37dacc8b8e121..9ec42c9d971ce 100644 --- a/tests/baselines/reference/jsdocTypeReferenceToValue.types +++ b/tests/baselines/reference/jsdocTypeReferenceToValue.types @@ -4,15 +4,15 @@ /** @param {Image} image */ function process(image) { >process : (image: new (width?: number, height?: number) => HTMLImageElement) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ return new image(1, 1) >new image(1, 1) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ >1 : 1 diff --git a/tests/baselines/reference/jsdocTypeTag.types b/tests/baselines/reference/jsdocTypeTag.types index 6ac9eefe72723..44cc643ed3893 100644 --- a/tests/baselines/reference/jsdocTypeTag.types +++ b/tests/baselines/reference/jsdocTypeTag.types @@ -102,12 +102,12 @@ var Func; /** @type {(s: string) => number} */ var f; >f : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ /** @type {new (s: string) => { s: string }} */ var ctor; >ctor : new (s: string) => { s: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ === b.ts === var S: string; @@ -190,13 +190,13 @@ var Func: Function; var f: (s: string) => number; >f : (s: string) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >s : string > : ^^^^^^ var ctor: new (s: string) => { s: string }; >ctor : new (s: string) => { s: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s : string diff --git a/tests/baselines/reference/jsdocTypeTagParameterType.types b/tests/baselines/reference/jsdocTypeTagParameterType.types index 2bdf4d28be17a..7cf5ab42d73a3 100644 --- a/tests/baselines/reference/jsdocTypeTagParameterType.types +++ b/tests/baselines/reference/jsdocTypeTagParameterType.types @@ -4,9 +4,9 @@ /** @type {function(string): void} */ const f = (value) => { >f : (arg0: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^ >(value) => { value = 1 // should error} : (value: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : string > : ^^^^^^ @@ -22,7 +22,7 @@ const f = (value) => { /** @type {(s: string) => void} */ function g(s) { >g : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsdocTypeTagRequiredParameters.types b/tests/baselines/reference/jsdocTypeTagRequiredParameters.types index 23cfff490a824..0c5ccbe83ae65 100644 --- a/tests/baselines/reference/jsdocTypeTagRequiredParameters.types +++ b/tests/baselines/reference/jsdocTypeTagRequiredParameters.types @@ -4,9 +4,9 @@ /** @type {function(string): void} */ const f = (value) => { >f : (arg0: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^ >(value) => {} : (value: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >value : string > : ^^^^^^ @@ -14,14 +14,14 @@ const f = (value) => { /** @type {(s: string) => void} */ function g(s) { >g : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } /** @type {{(s: string): void}} */ function h(s) { >h : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } @@ -30,17 +30,17 @@ f() // should error >f() : void > : ^^^^ >f : (arg0: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^ g() // should error >g() : void > : ^^^^ >g : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ h() >h() : void > : ^^^^ >h : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocTypecastNoTypeNoCrash.types b/tests/baselines/reference/jsdocTypecastNoTypeNoCrash.types index cf78b3e618e40..1eb11178b900a 100644 --- a/tests/baselines/reference/jsdocTypecastNoTypeNoCrash.types +++ b/tests/baselines/reference/jsdocTypecastNoTypeNoCrash.types @@ -9,7 +9,7 @@ const a = /* @type string */(Foo); >a : () => void > : ^^^^^^^^^^ >(Foo) : () => void -> : ^^^^^^^^^^ +> : >Foo : () => void > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/jsdocTypedefBeforeParenthesizedExpression.types b/tests/baselines/reference/jsdocTypedefBeforeParenthesizedExpression.types index e09cc7c35ce81..73d4c0a1a1425 100644 --- a/tests/baselines/reference/jsdocTypedefBeforeParenthesizedExpression.types +++ b/tests/baselines/reference/jsdocTypedefBeforeParenthesizedExpression.types @@ -38,7 +38,7 @@ */ function makeSureTypedefsAreStillRecognized(a, b) {} >makeSureTypedefsAreStillRecognized : (a: number, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/jsdocVariadicType.types b/tests/baselines/reference/jsdocVariadicType.types index b49293bfef636..8425e8e6b9ab1 100644 --- a/tests/baselines/reference/jsdocVariadicType.types +++ b/tests/baselines/reference/jsdocVariadicType.types @@ -6,9 +6,9 @@ */ const foo = function (a, b, ...r) { }; >foo : (arg0: boolean, arg1: string, ...arg2: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >function (a, b, ...r) { } : (a: boolean, b: string, ...r: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ >b : string @@ -21,7 +21,7 @@ foo(false, ''); >foo(false, '') : void > : ^^^^ >foo : (arg0: boolean, arg1: string, ...arg2: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >'' : "" diff --git a/tests/baselines/reference/json.stringify.types b/tests/baselines/reference/json.stringify.types index 64df7cadca132..bbbaf0f5bbd43 100644 --- a/tests/baselines/reference/json.stringify.types +++ b/tests/baselines/reference/json.stringify.types @@ -8,12 +8,12 @@ var value = null; JSON.stringify(value, undefined, 2); >JSON.stringify(value, undefined, 2) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >value : null > : ^^^^ >undefined : undefined @@ -24,12 +24,12 @@ JSON.stringify(value, undefined, 2); JSON.stringify(value, null, 2); >JSON.stringify(value, null, 2) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >value : null > : ^^^^ >2 : 2 @@ -38,12 +38,12 @@ JSON.stringify(value, null, 2); JSON.stringify(value, ["a", 1], 2); >JSON.stringify(value, ["a", 1], 2) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >value : null > : ^^^^ >["a", 1] : (string | number)[] @@ -58,16 +58,16 @@ JSON.stringify(value, ["a", 1], 2); JSON.stringify(value, (k) => undefined, 2); >JSON.stringify(value, (k) => undefined, 2) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >value : null > : ^^^^ >(k) => undefined : (this: any, k: string) => undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >k : string > : ^^^^^^ >undefined : undefined @@ -78,12 +78,12 @@ JSON.stringify(value, (k) => undefined, 2); JSON.stringify(value, undefined, 2); >JSON.stringify(value, undefined, 2) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >value : null > : ^^^^ >undefined : undefined diff --git a/tests/baselines/reference/jsonFileImportChecksCallCorrectlyTwice.types b/tests/baselines/reference/jsonFileImportChecksCallCorrectlyTwice.types index 8cbe81a7a8149..a2450392181f8 100644 --- a/tests/baselines/reference/jsonFileImportChecksCallCorrectlyTwice.types +++ b/tests/baselines/reference/jsonFileImportChecksCallCorrectlyTwice.types @@ -15,7 +15,7 @@ fn(data.foo); >fn(data.foo) : void > : ^^^^ >fn : (arg: Foo[]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data.foo : { bool: boolean; str: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >data : { foo: { bool: boolean; str: string; }[]; } @@ -27,7 +27,7 @@ fn(data.foo); // <-- shouldn't error! >fn(data.foo) : void > : ^^^^ >fn : (arg: Foo[]) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >data.foo : { bool: boolean; str: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >data : { foo: { bool: boolean; str: string; }[]; } @@ -37,7 +37,7 @@ fn(data.foo); // <-- shouldn't error! function fn(arg: Foo[]) { } >fn : (arg: Foo[]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : Foo[] > : ^^^^^ diff --git a/tests/baselines/reference/jsxAndTypeAssertion.types b/tests/baselines/reference/jsxAndTypeAssertion.types index b84e04b282f4a..11906ed6126e2 100644 --- a/tests/baselines/reference/jsxAndTypeAssertion.types +++ b/tests/baselines/reference/jsxAndTypeAssertion.types @@ -117,11 +117,11 @@ x = x, x = ; >/foo/.test(x) : boolean > : ^^^^^^^ >/foo/.test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >/foo/ : RegExp > : ^^^^^^ >test : (string: string) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : any > : ^^^ > : }} : any diff --git a/tests/baselines/reference/jsxCallElaborationCheckNoCrash1.types b/tests/baselines/reference/jsxCallElaborationCheckNoCrash1.types index 91cd2528fbdcb..67ef1316bcb4d 100644 --- a/tests/baselines/reference/jsxCallElaborationCheckNoCrash1.types +++ b/tests/baselines/reference/jsxCallElaborationCheckNoCrash1.types @@ -20,9 +20,9 @@ type Tags = "span" | "div"; export const Hoc = ( >Hoc : (TagElement: Tag) => React.SFC -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ >( TagElement: Tag,): React.SFC => { const Component = () => ; return Component;} : (TagElement: Tag) => React.SFC -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : TagElement: Tag, >TagElement : Tag @@ -36,7 +36,7 @@ export const Hoc = ( >Component : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() => : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : > : JSX.Element > : ^^^^^^^^^^^ >TagElement : Tag diff --git a/tests/baselines/reference/jsxCallbackWithDestructuring.types b/tests/baselines/reference/jsxCallbackWithDestructuring.types index 32738fda42421..5e7bfb8196b22 100644 --- a/tests/baselines/reference/jsxCallbackWithDestructuring.types +++ b/tests/baselines/reference/jsxCallbackWithDestructuring.types @@ -50,7 +50,7 @@ declare global { export interface RouteProps { children?: (props: { x: number }) => any; >children : ((props: { x: number; }) => any) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >props : { x: number; } > : ^^^^^ ^^^ >x : number @@ -68,9 +68,9 @@ export class MyComponent extends Component >MyComponent : typeof MyComponent > : ^^^^^^^^^^^^^^^^^^ >children : ({ x }: { x: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >({ x }) => {} : ({ x }: { x: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/jsxChildrenGenericContextualTypes.types b/tests/baselines/reference/jsxChildrenGenericContextualTypes.types index 33f18a9150c09..9361ac7652b1e 100644 --- a/tests/baselines/reference/jsxChildrenGenericContextualTypes.types +++ b/tests/baselines/reference/jsxChildrenGenericContextualTypes.types @@ -18,15 +18,15 @@ namespace JSX { } const Elem = (p: { prop: T, children: (t: T) => T }) =>
    ; >Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >(p: { prop: T, children: (t: T) => T }) =>
    : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : >p : { prop: T; children: (t: T) => T; } > : ^^^^^^^^ ^^^^^^^^^^^^ ^^^ >prop : T > : ^ >children : (t: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >t : T > : ^ >
    : JSX.Element @@ -40,9 +40,9 @@ Elem({prop: {a: "x"}, children: i => ({a: "z"})}); >Elem({prop: {a: "x"}, children: i => ({a: "z"})}) : JSX.Element > : ^^^^^^^^^^^ >Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >{prop: {a: "x"}, children: i => ({a: "z"})} : { prop: { a: string; }; children: (i: { a: string; }) => { a: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >prop : { a: string; } > : ^^^^^^^^^^^^^^ >{a: "x"} : { a: string; } @@ -52,9 +52,9 @@ Elem({prop: {a: "x"}, children: i => ({a: "z"})}); >"x" : "x" > : ^^^ >children : (i: { a: string; }) => { a: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >i => ({a: "z"}) : (i: { a: string; }) => { a: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >i : { a: string; } > : ^^^^^^^^^^^^^^ >({a: "z"}) : { a: string; } @@ -72,7 +72,7 @@ const q = ({a: "z"})} /> > ({a: "z"})} /> : JSX.Element > : ^^^^^^^^^^^ >Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : { a: string; } > : ^^^^^^^^^^^^^^ >{a: "x"} : { a: string; } @@ -82,9 +82,9 @@ const q = ({a: "z"})} /> >"x" : "x" > : ^^^ >children : (i: { a: string; }) => { a: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >i => ({a: "z"}) : (i: { a: string; }) => { a: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >i : { a: string; } > : ^^^^^^^^^^^^^^ >({a: "z"}) : { a: string; } @@ -102,7 +102,7 @@ const qq = {i => ({a: "z"})} >{i => ({a: "z"})} : JSX.Element > : ^^^^^^^^^^^ >Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : { a: string; } > : ^^^^^^^^^^^^^^ >{a: "x"} : { a: string; } @@ -112,7 +112,7 @@ const qq = {i => ({a: "z"})} >"x" : "x" > : ^^^ >i => ({a: "z"}) : (i: { a: string; }) => { a: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >i : { a: string; } > : ^^^^^^^^^^^^^^ >({a: "z"}) : { a: string; } @@ -124,21 +124,21 @@ const qq = {i => ({a: "z"})} >"z" : "z" > : ^^^ >Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ interface LitProps { prop: T, children: (x: this) => T } >prop : T > : ^ >children : (x: this) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : this > : ^^^^ const ElemLit = (p: LitProps) =>
    ; >ElemLit : (p: LitProps) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >(p: LitProps) =>
    : (p: LitProps) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : >p : LitProps > : ^^^^^^^^^^^ >
    : JSX.Element @@ -152,7 +152,7 @@ ElemLit({prop: "x", children: () => "x"}); >ElemLit({prop: "x", children: () => "x"}) : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >{prop: "x", children: () => "x"} : { prop: "x"; children: () => "x"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >prop : "x" @@ -162,7 +162,7 @@ ElemLit({prop: "x", children: () => "x"}); >children : () => "x" > : ^^^^^^^^^ >() => "x" : () => "x" -> : ^^^^^^^^^ +> : >"x" : "x" > : ^^^ @@ -172,7 +172,7 @@ const j = "x"} /> > "x"} /> : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : "x" > : ^^^ >children : () => "x" @@ -188,7 +188,7 @@ const jj = {() => "x"} >{() => "x"} : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : "x" > : ^^^ >() => "x" : () => "x" @@ -196,7 +196,7 @@ const jj = {() => "x"} >"x" : "x" > : ^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ // Should error const arg = "y"} /> @@ -205,13 +205,13 @@ const arg = "y"} /> > "y"} /> : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : "x" > : ^^^ >children : (p: JSX.IntrinsicAttributes & LitProps<"x">) => "y" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p => "y" : (p: JSX.IntrinsicAttributes & LitProps<"x">) => "y" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : JSX.IntrinsicAttributes & LitProps<"x"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"y" : "y" @@ -223,17 +223,17 @@ const argchild = {p => "y"} >{p => "y"} : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : "x" > : ^^^ >p => "y" : (p: JSX.IntrinsicAttributes & LitProps<"x">) => "y" -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : JSX.IntrinsicAttributes & LitProps<"x"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"y" : "y" > : ^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ const mismatched = {() => 12} >mismatched : JSX.Element @@ -241,7 +241,7 @@ const mismatched = {() => 12} >{() => 12} : JSX.Element > : ^^^^^^^^^^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : "x" > : ^^^ >() => 12 : () => number @@ -249,5 +249,5 @@ const mismatched = {() => 12} >12 : 12 > : ^^ >ElemLit : (p: LitProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsxChildrenIndividualErrorElaborations.types b/tests/baselines/reference/jsxChildrenIndividualErrorElaborations.types index e15973892d515..291a6705e678a 100644 --- a/tests/baselines/reference/jsxChildrenIndividualErrorElaborations.types +++ b/tests/baselines/reference/jsxChildrenIndividualErrorElaborations.types @@ -15,14 +15,14 @@ import * as React from "react"; interface Props { children: (x: number) => string; >children : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ } export function Blah(props: Props) { >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^ @@ -38,11 +38,11 @@ var a = > {x => x} : JSX.Element > : ^^^^^^^^^^^ >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -50,7 +50,7 @@ var a = >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah components don't accept text as child elements var a = @@ -59,12 +59,12 @@ var a = > Hello unexpected text! : JSX.Element > : ^^^^^^^^^^^ >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ Hello unexpected text! >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah components don't accept multiple children. var a = @@ -73,11 +73,11 @@ var a = > {x => "" + x} {x => "" + x} : JSX.Element > : ^^^^^^^^^^^ >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => "" + x} >x => "" + x : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >"" + x : string @@ -89,7 +89,7 @@ var a = {x => "" + x} >x => "" + x : (x: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >"" + x : string @@ -101,19 +101,19 @@ var a = >Blah : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ interface PropsArr { children: ((x: number) => string)[]; >children : ((x: number) => string)[] -> : ^^^^^ ^^^^^ ^^^ +> : ^^ ^^ ^^^^^ ^^^ >x : number > : ^^^^^^ } export function Blah2(props: PropsArr) { >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : PropsArr > : ^^^^^^^^ @@ -129,11 +129,11 @@ var a = > {x => x} : JSX.Element > : ^^^^^^^^^^^ >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => x} >x => x : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -141,7 +141,7 @@ var a = >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah2 components don't accept text as child elements var a = @@ -150,12 +150,12 @@ var a = > Hello unexpected text! : JSX.Element > : ^^^^^^^^^^^ >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ Hello unexpected text! >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah2 components don't accept multiple children of the wrong type. var a = @@ -164,11 +164,11 @@ var a = > {x => x} {x => x} : JSX.Element > : ^^^^^^^^^^^ >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -176,7 +176,7 @@ var a = {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -184,7 +184,7 @@ var a = >Blah2 : (props: PropsArr) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ type Cb = (x: number) => string; >Cb : Cb @@ -200,7 +200,7 @@ interface PropsMixed { export function Blah3(props: PropsMixed) { >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : PropsMixed > : ^^^^^^^^^^ @@ -216,11 +216,11 @@ var a = > {x => x} : JSX.Element > : ^^^^^^^^^^^ >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -228,7 +228,7 @@ var a = >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah3 components don't accept text as child elements var a = @@ -237,12 +237,12 @@ var a = > Hello unexpected text! : JSX.Element > : ^^^^^^^^^^^ >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ Hello unexpected text! >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ // Blah3 components don't accept multiple children of the wrong type. var a = @@ -251,11 +251,11 @@ var a = > {x => x} {x => x} : JSX.Element > : ^^^^^^^^^^^ >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -263,7 +263,7 @@ var a = {x => x} >x => x : (x: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -271,5 +271,5 @@ var a = >Blah3 : (props: PropsMixed) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.types b/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.types index 0fdf91d11b765..f21e29b732d81 100644 --- a/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.types +++ b/tests/baselines/reference/jsxChildrenSingleChildConfusableWithMultipleChildrenNoError.types @@ -21,7 +21,7 @@ interface Props { function TabLayout(props: Props) { >TabLayout : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^ @@ -36,7 +36,7 @@ export class App extends React.Component<{}> { >App : App > : ^^^ >React.Component : React.Component<{}, {}, any> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ >React : typeof React > : ^^^^^^^^^^^^ >Component : typeof React.Component @@ -50,7 +50,7 @@ export class App extends React.Component<{}> { > {[ ['Users',
    ], ['Products',
    ] ]} : JSX.Element > : ^^^^^^^^^^^ >TabLayout : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {[ >[ ['Users',
    ], ['Products',
    ] ] : [string, JSX.Element][] @@ -79,6 +79,6 @@ export class App extends React.Component<{}> { ]} >TabLayout : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.types b/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.types index 7baa09ba659e7..47825fb221f34 100644 --- a/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.types +++ b/tests/baselines/reference/jsxComplexSignatureHasApplicabilityError.types @@ -21,7 +21,7 @@ interface Props { onChange?(value: Option | undefined): void; >onChange : ((value: Option | undefined) => void) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : Option | undefined > : ^^^^^^^^^^^^^^^^^^^^^ } @@ -42,7 +42,7 @@ export type ReactSingleSelectProps< export function createReactSingleSelect< >createReactSingleSelect : >(WrappedComponent: React.ComponentType) => React.ComponentType> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ WrappedProps extends ReactSelectProps >( @@ -58,7 +58,7 @@ export function createReactSingleSelect< return (props) => { >(props) => { return ( > {...props} multi={false} autosize={false} value={props.value} onChange={(value) => { if (props.onChange) { props.onChange(value === null ? undefined : value); } }} /> ); } : (props: Omit, keyof Omit & keyof Props>> & Props> & { children?: React.ReactNode; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : Omit, keyof Omit & keyof Props>> & Props> & { children?: React.ReactNode; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -100,29 +100,29 @@ export function createReactSingleSelect< onChange={(value) => { >onChange : (value: Option> | Options> | null) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(value) => { if (props.onChange) { props.onChange(value === null ? undefined : value); } } : (value: Option> | Options> | null) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : Option> | Options> | null > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (props.onChange) { >props.onChange : ((value: Option> | undefined) => void) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : Omit, keyof Omit & keyof Props>> & Props> & { children?: React.ReactNode; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onChange : ((value: Option> | undefined) => void) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ props.onChange(value === null ? undefined : value); >props.onChange(value === null ? undefined : value) : void > : ^^^^ >props.onChange : (value: Option> | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : Omit, keyof Omit & keyof Props>> & Props> & { children?: React.ReactNode; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onChange : (value: Option> | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value === null ? undefined : value : Option> | Options> | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value === null : boolean @@ -167,7 +167,7 @@ declare class ReactSelectClass extends React.Component): void; >setValue : (value: Option) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : Option > : ^^^^^^^^^^^^^^ } @@ -391,7 +391,7 @@ export type LoadOptionsLegacyHandler = (input: string, ca >input : string > : ^^^^^^ >callback : (err: any, result: AutocompleteResult) => void -> : ^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >err : any >result : AutocompleteResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -564,7 +564,7 @@ export interface OptionComponentProps { */ onFocus?: (option: Option, event: any) => void; >onFocus : ((option: Option, event: any) => void) | undefined -> : ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >option : Option > : ^^^^^^^^^^^^^^ >event : any @@ -574,7 +574,7 @@ export interface OptionComponentProps { */ onSelect?: (option: Option, event: any) => void; >onSelect : ((option: Option, event: any) => void) | undefined -> : ^^^^^^^^^^ ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >option : Option > : ^^^^^^^^^^^^^^ >event : any @@ -599,7 +599,7 @@ export interface OptionComponentProps { */ removeValue?: (value: TValue | TValue[]) => void; >removeValue : ((value: TValue | TValue[]) => void) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TValue | TValue[] > : ^^^^^^^^^^^^^^^^^ @@ -608,7 +608,7 @@ export interface OptionComponentProps { */ selectValue?: (value: TValue | TValue[]) => void; >selectValue : ((value: TValue | TValue[]) => void) | undefined -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TValue | TValue[] > : ^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/jsxComponentTypeErrors.types b/tests/baselines/reference/jsxComponentTypeErrors.types index ae4ea58d44a11..505a38a1b2ff3 100644 --- a/tests/baselines/reference/jsxComponentTypeErrors.types +++ b/tests/baselines/reference/jsxComponentTypeErrors.types @@ -41,7 +41,7 @@ FunctionComponent.useThis = function() { >useThis : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >function() { return ;} : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : return ; > : JSX.Element @@ -119,7 +119,7 @@ const obj = { >obj : { MemberFunctionComponent(): {}; MemberClassComponent: typeof MemberClassComponent; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ MemberFunctionComponent() { return {}; }, MemberClassComponent: class {},} : { MemberFunctionComponent(): {}; MemberClassComponent: typeof MemberClassComponent; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ MemberFunctionComponent() { >MemberFunctionComponent : () => {} diff --git a/tests/baselines/reference/jsxContainsOnlyTriviaWhiteSpacesNotCountedAsChild.types b/tests/baselines/reference/jsxContainsOnlyTriviaWhiteSpacesNotCountedAsChild.types index b4a147b821c3d..cf102406c41df 100644 --- a/tests/baselines/reference/jsxContainsOnlyTriviaWhiteSpacesNotCountedAsChild.types +++ b/tests/baselines/reference/jsxContainsOnlyTriviaWhiteSpacesNotCountedAsChild.types @@ -17,7 +17,7 @@ interface Props { function NoticeList(props: Props) { >NoticeList : (props: Props) => null -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >props : Props > : ^^^^^ @@ -27,22 +27,22 @@ function NoticeList(props: Props) { > : error >NoticeList : (props: Props) => null -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >className : string > : ^^^^^^ ; >NoticeList : (props: Props) => null -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ > : error >NoticeList : (props: Props) => null -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >className : string > : ^^^^^^ ; >NoticeList : (props: Props) => null -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.types b/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.types index eff6917a9a9c6..fd01a38630c51 100644 --- a/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.types +++ b/tests/baselines/reference/jsxDeclarationsWithEsModuleInteropNoCrash.types @@ -74,7 +74,7 @@ Foo.propTypes = propTypes; >propTypes : { bar: PropTypes.Requireable; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >propTypes : { bar: PropTypes.Requireable; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : Foo.defaultProps = defaultProps; >Foo.defaultProps = defaultProps : { bar: boolean; } @@ -86,7 +86,7 @@ Foo.defaultProps = defaultProps; >defaultProps : { bar: boolean; } > : ^^^^^^^^^^^^^^^^^ >defaultProps : { bar: boolean; } -> : ^^^^^^^^^^^^^^^^^ +> : export default Foo; >Foo : typeof Foo diff --git a/tests/baselines/reference/jsxElementType.types b/tests/baselines/reference/jsxElementType.types index 6fef930841144..819690f75f276 100644 --- a/tests/baselines/reference/jsxElementType.types +++ b/tests/baselines/reference/jsxElementType.types @@ -80,9 +80,9 @@ let Component: NewReactJSXElementConstructor<{ title: string }>; const RenderElement = ({ title }: { title: string }) =>
    {title}
    ; >RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >({ title }: { title: string }) =>
    {title}
    : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : >title : string > : ^^^^^^ >title : string @@ -98,23 +98,23 @@ const RenderElement = ({ title }: { title: string }) =>
    {title}
    ; Component = RenderElement; >Component = RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >Component : NewReactJSXElementConstructor<{ title: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >title : string > : ^^^^^^ @@ -122,15 +122,15 @@ Component = RenderElement; > : JSX.Element > : ^^^^^^^^^^^ >RenderElement : ({ title }: { title: string; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >excessProp : true > : ^^^^ const RenderString = ({ title }: { title: string }) => title; >RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >({ title }: { title: string }) => title : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : >title : string > : ^^^^^^ >title : string @@ -140,23 +140,23 @@ const RenderString = ({ title }: { title: string }) => title; Component = RenderString; >Component = RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Component : NewReactJSXElementConstructor<{ title: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >title : string > : ^^^^^^ @@ -164,15 +164,15 @@ Component = RenderString; > : JSX.Element > : ^^^^^^^^^^^ >RenderString : ({ title }: { title: string; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >excessProp : true > : ^^^^ const RenderNumber = ({ title }: { title: string }) => title.length; >RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >({ title }: { title: string }) => title.length : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^ ^^^^^^^^^^^ +> : >title : string > : ^^^^^^ >title : string @@ -186,23 +186,23 @@ const RenderNumber = ({ title }: { title: string }) => title.length; Component = RenderNumber; >Component = RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >Component : NewReactJSXElementConstructor<{ title: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >title : string > : ^^^^^^ @@ -210,15 +210,15 @@ Component = RenderNumber; > : JSX.Element > : ^^^^^^^^^^^ >RenderNumber : ({ title }: { title: string; }) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >excessProp : true > : ^^^^ const RenderArray = ({ title }: { title: string }) => [title]; >RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >({ title }: { title: string }) => [title] : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^ +> : >title : string > : ^^^^^^ >title : string @@ -230,23 +230,23 @@ const RenderArray = ({ title }: { title: string }) => [title]; Component = RenderArray; >Component = RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >Component : NewReactJSXElementConstructor<{ title: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >title : string > : ^^^^^^ @@ -254,16 +254,16 @@ Component = RenderArray; > : JSX.Element > : ^^^^^^^^^^^ >RenderArray : ({ title }: { title: string; }) => string[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ >excessProp : true > : ^^^^ // React Server Component const RenderPromise = async ({ title }: { title: string }) => "react"; >RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >async ({ title }: { title: string }) => "react" : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +> : >title : string > : ^^^^^^ >title : string @@ -273,23 +273,23 @@ const RenderPromise = async ({ title }: { title: string }) => "react"; Component = RenderPromise; >Component = RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >Component : NewReactJSXElementConstructor<{ title: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ; > : JSX.Element > : ^^^^^^^^^^^ >RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >title : string > : ^^^^^^ @@ -297,7 +297,7 @@ Component = RenderPromise; > : JSX.Element > : ^^^^^^^^^^^ >RenderPromise : ({ title }: { title: string; }) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >excessProp : true > : ^^^^ @@ -393,7 +393,7 @@ Component = RenderStringClass; interface ReactNativeFlatListProps {} function ReactNativeFlatList( >ReactNativeFlatList : (props: {}, ref: React.ForwardedRef) => null -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ props: {}, >props : {} @@ -401,11 +401,11 @@ function ReactNativeFlatList( ref: React.ForwardedRef >ref : React.ForwardedRef<(props: {}, ref: React.ForwardedRef) => null> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ >React : any > : ^^^ >ReactNativeFlatList : (props: {}, ref: React.ForwardedRef) => null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ ) { return null; @@ -414,12 +414,12 @@ function ReactNativeFlatList( > : JSX.Element > : ^^^^^^^^^^^ >ReactNativeFlatList : (props: {}, ref: React.ForwardedRef) => null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ // testing higher-order component compat function f1 React.ReactElement>(Component: T) { >f1 : React.ReactElement>(Component: T) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : {} > : ^^ >React : any diff --git a/tests/baselines/reference/jsxEmitWithAttributes.types b/tests/baselines/reference/jsxEmitWithAttributes.types index 8da17521fcd87..8fd65592aac62 100644 --- a/tests/baselines/reference/jsxEmitWithAttributes.types +++ b/tests/baselines/reference/jsxEmitWithAttributes.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -47,7 +47,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any >JSX : any > : ^^^ @@ -66,7 +66,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -79,17 +79,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -111,11 +111,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).types b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).types index a3cdd1f3ad773..cb1d92a64fc1d 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).types +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react).types @@ -22,7 +22,7 @@ interface Props { function Wrapper(props: Props) { >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^ @@ -51,7 +51,7 @@ const element = ( > {/* comment */}
    Hello
    : JSX.Element > : ^^^^^^^^^^^ >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {/* comment */}
    Hello
    @@ -64,6 +64,6 @@ const element = ( >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ) diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).types b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).types index a3cdd1f3ad773..cb1d92a64fc1d 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).types +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsx).types @@ -22,7 +22,7 @@ interface Props { function Wrapper(props: Props) { >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^ @@ -51,7 +51,7 @@ const element = ( > {/* comment */}
    Hello
    : JSX.Element > : ^^^^^^^^^^^ >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {/* comment */}
    Hello
    @@ -64,6 +64,6 @@ const element = ( >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ) diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).types b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).types index a3cdd1f3ad773..cb1d92a64fc1d 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).types +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild(jsx=react-jsxdev).types @@ -22,7 +22,7 @@ interface Props { function Wrapper(props: Props) { >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^ @@ -51,7 +51,7 @@ const element = ( > {/* comment */}
    Hello
    : JSX.Element > : ^^^^^^^^^^^ >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ {/* comment */}
    Hello
    @@ -64,6 +64,6 @@ const element = ( >Wrapper : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ ) diff --git a/tests/baselines/reference/jsxExcessPropsAndAssignability.types b/tests/baselines/reference/jsxExcessPropsAndAssignability.types index 1dab90dd616d4..3b2b133e2e224 100644 --- a/tests/baselines/reference/jsxExcessPropsAndAssignability.types +++ b/tests/baselines/reference/jsxExcessPropsAndAssignability.types @@ -15,9 +15,9 @@ import * as React from 'react'; const myHoc = ( >myHoc : (ComposedComponent: React.ComponentClass) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >( ComposedComponent: React.ComponentClass,) => { type WrapperComponentProps = ComposedComponentProps & { myProp: string }; const WrapperComponent: React.ComponentClass = null as any; const props: ComposedComponentProps = null as any; ; ;} : (ComposedComponent: React.ComponentClass) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ComposedComponent: React.ComponentClass, >ComposedComponent : React.ComponentClass diff --git a/tests/baselines/reference/jsxFactoryAndReactNamespace.types b/tests/baselines/reference/jsxFactoryAndReactNamespace.types index 36a465b46dcd6..720ec2db2b011 100644 --- a/tests/baselines/reference/jsxFactoryAndReactNamespace.types +++ b/tests/baselines/reference/jsxFactoryAndReactNamespace.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -48,7 +48,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any > : ^^^ >JSX : any @@ -69,7 +69,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -82,17 +82,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -114,11 +114,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxFactoryIdentifier.types b/tests/baselines/reference/jsxFactoryIdentifier.types index 502cbf18397fc..963a071199240 100644 --- a/tests/baselines/reference/jsxFactoryIdentifier.types +++ b/tests/baselines/reference/jsxFactoryIdentifier.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -47,7 +47,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any >JSX : any > : ^^^ @@ -66,7 +66,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -79,17 +79,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -111,11 +111,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } @@ -127,13 +127,13 @@ import { Element} from './Element'; let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ let c: { >c : { a?: { b: string; }; } diff --git a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types index 41aab02862c3d..aae2038929eed 100644 --- a/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types +++ b/tests/baselines/reference/jsxFactoryIdentifierAsParameter.types @@ -15,7 +15,7 @@ export class AppComponent { render(createElement) { >render : (createElement: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >createElement : any return
    ; diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.types b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.types index 85e3a19ff6f23..7a8c4d9247a95 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.types +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -48,7 +48,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any > : ^^^ >JSX : any @@ -69,7 +69,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -82,17 +82,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -114,11 +114,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.types b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.types index edafb88003842..d9881f9dbcdf1 100644 --- a/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.types +++ b/tests/baselines/reference/jsxFactoryNotIdentifierOrQualifiedName2.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -48,7 +48,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any > : ^^^ >JSX : any @@ -69,7 +69,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -82,17 +82,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -114,11 +114,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxFactoryQualifiedName.types b/tests/baselines/reference/jsxFactoryQualifiedName.types index bcbffdc9383c8..aa2943c7147f4 100644 --- a/tests/baselines/reference/jsxFactoryQualifiedName.types +++ b/tests/baselines/reference/jsxFactoryQualifiedName.types @@ -17,13 +17,13 @@ declare namespace JSX { toString(renderId?: number): string; >toString : (renderId?: number) => string -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ bindDOM(renderId?: number): number; >bindDOM : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -33,7 +33,7 @@ declare namespace JSX { instantiateComponents(renderId?: number): number; >instantiateComponents : (renderId?: number) => number -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >renderId : number > : ^^^^^^ @@ -47,7 +47,7 @@ export namespace Element { export function isElement(el: any): el is JSX.Element { >isElement : (el: any) => el is JSX.Element -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >el : any >JSX : any > : ^^^ @@ -66,7 +66,7 @@ export namespace Element { export function createElement(args: any[]) { >createElement : (args: any[]) => {} -> : ^^^^^^^ ^^^^^^^ +> : ^ ^^ ^^^^^^^ >args : any[] > : ^^^^^ @@ -79,17 +79,17 @@ export namespace Element { export let createElement = Element.createElement; >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ >Element.createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : >Element : typeof Element > : ^^^^^^^^^^^^^^ >createElement : (args: any[]) => {} -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^ function toCamelCase(text: string): string { >toCamelCase : (text: string) => string -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ @@ -111,11 +111,11 @@ function toCamelCase(text: string): string { >text.substring(1) : string > : ^^^^^^ >text.substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >text : string > : ^^^^^^ >substring : (start: number, end?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.types b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.types index 7fbd6567987f3..4acd7037fdf0e 100644 --- a/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.types +++ b/tests/baselines/reference/jsxFactoryQualifiedNameResolutionError.types @@ -15,7 +15,7 @@ export class AppComponent { render(createElement) { >render : (createElement: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >createElement : any > : ^^^ diff --git a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.types b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.types index 1a9989942dc77..6e1b10edf97ff 100644 --- a/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.types +++ b/tests/baselines/reference/jsxFragmentFactoryNoUnusedLocals.types @@ -4,15 +4,15 @@ Assignability cache: 2,100 / 2,100 (nearest 100) Type Count: 6,700 / 6,700 (nearest 100) Instantiation count: 73,000 / 73,000 (nearest 500) -Symbol count: 67,000 / 67,500 (nearest 500) +Symbol count: 67,000 / 67,000 (nearest 500) === jsxFragmentFactoryNoUnusedLocals.tsx === /// import { Fragment, createElement } from "react" >Fragment : import("react").ComponentType<{}> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createElement : { (type: "input", props?: import("react").InputHTMLAttributes & import("react").ClassAttributes, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

    , T extends HTMLElement>(type: keyof import("react").ReactHTML, props?: import("react").ClassAttributes & P, ...children: import("react").ReactNode[]): import("react").DetailedReactHTMLElement; , T_1 extends SVGElement>(type: keyof import("react").ReactSVG, props?: import("react").ClassAttributes & P_1, ...children: import("react").ReactNode[]): import("react").ReactSVGElement; , T_2 extends Element>(type: string, props?: import("react").ClassAttributes & P_2, ...children: import("react").ReactNode[]): import("react").DOMElement; (type: import("react").SFC, props?: import("react").Attributes & P_3, ...children: import("react").ReactNode[]): import("react").SFCElement; (type: import("react").ClassType, import("react").ClassicComponentClass>, props?: import("react").ClassAttributes> & P_4, ...children: import("react").ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: import("react").ClassType, props?: import("react").ClassAttributes & P_5, ...children: import("react").ReactNode[]): import("react").CElement; (type: string | import("react").SFC | import("react").ComponentClass, props?: import("react").Attributes & P_6, ...children: import("react").ReactNode[]): import("react").ReactElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>createElement : { (type: "input", props?: (InputHTMLAttributes & ClassAttributes) | null, ...children: ReactNode[]): import("react").DetailedReactHTMLElement, HTMLInputElement>;

    , T extends HTMLElement>(type: keyof ReactHTML, props?: (ClassAttributes & P) | null, ...children: ReactNode[]): import("react").DetailedReactHTMLElement; , T_1 extends SVGElement>(type: keyof ReactSVG, props?: (ClassAttributes & P_1) | null, ...children: ReactNode[]): import("react").ReactSVGElement; , T_2 extends Element>(type: string, props?: (ClassAttributes & P_2) | null, ...children: ReactNode[]): import("react").DOMElement; (type: SFC, props?: (Attributes & P_3) | null, ...children: ReactNode[]): import("react").SFCElement; (type: ClassType, ClassicComponentClass>, props?: (ClassAttributes> & P_4) | null, ...children: ReactNode[]): import("react").CElement>; , C extends import("react").ComponentClass>(type: ClassType, props?: (ClassAttributes & P_5) | null, ...children: ReactNode[]): import("react").CElement; (type: SFC | ComponentClass | string, props?: (Attributes & P_6) | null, ...children: ReactNode[]): import("react").ReactElement; } +> : ^^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type CounterProps = { >CounterProps : CounterProps @@ -25,7 +25,7 @@ type CounterProps = { export function Counter({ count = 0 }: CounterProps) { >Counter : ({ count }: CounterProps) => JSX.Element -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >count : number > : ^^^^^^ >0 : 0 @@ -63,7 +63,7 @@ export function Counter({ count = 0 }: CounterProps) { >setCnt((prev) => prev + 1) : any >setCnt : any >(prev) => prev + 1 : (prev: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >prev : any >prev + 1 : any >prev : any diff --git a/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types b/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types index 198e9c9d58a2d..fb0e51f9e7550 100644 --- a/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types +++ b/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types @@ -13,7 +13,7 @@ Symbol count: 66,000 / 66,000 (nearest 500) declare function omit(names: readonly K[], obj: T): Omit; >omit : { (names: readonly K[], obj: T): Omit; (names: readonly K_1[]): (obj: T_1) => Omit; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >names : readonly K[] > : ^^^^^^^^^^^^ >obj : T @@ -21,7 +21,7 @@ declare function omit(names: readonly K[], obj: T): Omit(names: readonly K[]): (obj: T) => Omit; >omit : { (names: readonly K_1[], obj: T): Omit; (names: readonly K[]): (obj: T_1) => Omit; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >names : readonly K[] > : ^^^^^^^^^^^^ >obj : T @@ -37,7 +37,7 @@ declare const otherProps: { bar: string, qwe: boolean } declare function GenericComponent(props: T): null >GenericComponent : (props: T) => null -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >props : T > : ^ @@ -45,11 +45,11 @@ declare function GenericComponent(props: T): null > : JSX.Element > : ^^^^^^^^^^^ >GenericComponent : (props: T) => null -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >omit(['bar'], otherProps) : Omit<{ bar: string; qwe: boolean; }, "bar"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >omit : { (names: readonly K[], obj: T): Omit; (names: readonly K_1[]): (obj: T_1) => Omit; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >['bar'] : "bar"[] > : ^^^^^^^ >'bar' : "bar" diff --git a/tests/baselines/reference/jsxInExtendsClause.types b/tests/baselines/reference/jsxInExtendsClause.types index c55a7e7ed4734..6ea28ebb219e5 100644 --- a/tests/baselines/reference/jsxInExtendsClause.types +++ b/tests/baselines/reference/jsxInExtendsClause.types @@ -13,7 +13,7 @@ declare namespace React { } declare function createComponentClass

    (factory: () => React.ComponentClass

    ): React.ComponentClass

    ; >createComponentClass :

    (factory: () => React.ComponentClass

    ) => React.ComponentClass

    -> : ^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >factory : () => React.ComponentClass

    > : ^^^^^^ >React : any @@ -27,13 +27,13 @@ class Foo extends createComponentClass(() => class extends React.Component<{}, { >createComponentClass(() => class extends React.Component<{}, {}> { render() { return Hello, world!; }}) : React.Component > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >createComponentClass :

    (factory: () => React.ComponentClass

    ) => React.ComponentClass

    -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => class extends React.Component<{}, {}> { render() { return Hello, world!; }} : () => typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >class extends React.Component<{}, {}> { render() { return Hello, world!; }} : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >React.Component : React.Component<{}, {}> -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^ ^ >React : typeof React > : ^^^^^^^^^^^^ >Component : typeof React.Component diff --git a/tests/baselines/reference/jsxInferenceProducesLiteralAsExpected.types b/tests/baselines/reference/jsxInferenceProducesLiteralAsExpected.types index 409746b90d382..0d3cf7c769ee7 100644 --- a/tests/baselines/reference/jsxInferenceProducesLiteralAsExpected.types +++ b/tests/baselines/reference/jsxInferenceProducesLiteralAsExpected.types @@ -48,7 +48,7 @@ interface TestProps { } function Test(props: TestProps) { return <>; } >Test : (props: TestProps) => JSX.Element -> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : TestProps > : ^^^^^^^^^^^^ ><> : JSX.Element @@ -68,7 +68,7 @@ const el1 = ; > : JSX.Element > : ^^^^^^^^^^^ >Test : (props: TestProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >model : TestObject > : ^^^^^^^^^^ >model : TestObject @@ -82,7 +82,7 @@ const el2 = model={model} foo="c" />; > model={model} foo="c" /> : JSX.Element > : ^^^^^^^^^^^ >Test : (props: TestProps) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >model : TestObject > : ^^^^^^^^^^ >model : TestObject diff --git a/tests/baselines/reference/jsxIntrinsicElementsCompatability.types b/tests/baselines/reference/jsxIntrinsicElementsCompatability.types index 82259f241be68..071c0f05ee11a 100644 --- a/tests/baselines/reference/jsxIntrinsicElementsCompatability.types +++ b/tests/baselines/reference/jsxIntrinsicElementsCompatability.types @@ -14,7 +14,7 @@ import * as React from "react"; function SomeComponent(props: { element?: T } & JSX.IntrinsicElements[T]): JSX.Element { >SomeComponent : (props: { element?: T; } & JSX.IntrinsicElements[T]) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >props : { element?: T; } & JSX.IntrinsicElements[T] > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >element : T | undefined @@ -34,15 +34,15 @@ function SomeComponent(props: { element?: T } & JSX.In function Test(el: T) { >Test : (el: T) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >el : T > : ^ return > : JSX.Element > : ^^^^^^^^^^^ ->SomeComponent : (props: { element?: T_1 | undefined; } & JSX.IntrinsicElements[T_1]) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>SomeComponent : (props: { element?: T_1; } & JSX.IntrinsicElements[T_1]) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >element : T > : ^ >el : T diff --git a/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.types b/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.types index 61b30c6383bd1..184ad1843a2ae 100644 --- a/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.types +++ b/tests/baselines/reference/jsxIssuesErrorWhenTagExpectsTooManyArguments.types @@ -21,7 +21,7 @@ interface MyProps { function MyComp4(props: MyProps, context: any, bad: any, verybad: any) { >MyComp4 : (props: MyProps, context: any, bad: any, verybad: any) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : MyProps > : ^^^^^^^ >context : any @@ -41,7 +41,7 @@ function MyComp4(props: MyProps, context: any, bad: any, verybad: any) { } function MyComp3(props: MyProps, context: any, bad: any) { >MyComp3 : (props: MyProps, context: any, bad: any) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : MyProps > : ^^^^^^^ >context : any @@ -59,7 +59,7 @@ function MyComp3(props: MyProps, context: any, bad: any) { } function MyComp2(props: MyProps, context: any) { >MyComp2 : (props: MyProps, context: any) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >props : MyProps > : ^^^^^^^ >context : any @@ -80,7 +80,7 @@ const a = ; // using `MyComp` as a component should error - it e > : JSX.Element > : ^^^^^^^^^^^ >MyComp4 : (props: MyProps, context: any, bad: any, verybad: any) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -92,7 +92,7 @@ const b = ; // using `MyComp` as a component should error - it e > : JSX.Element > : ^^^^^^^^^^^ >MyComp3 : (props: MyProps, context: any, bad: any) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -104,7 +104,7 @@ const c = ; // Should be OK, `context` is allowed, per react ru > : JSX.Element > : ^^^^^^^^^^^ >MyComp2 : (props: MyProps, context: any) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -112,7 +112,7 @@ const c = ; // Should be OK, `context` is allowed, per react ru declare function MyTagWithOptionalNonJSXBits(props: MyProps, context: any, nonReactArg?: string): JSX.Element; >MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >props : MyProps > : ^^^^^^^ >context : any @@ -128,7 +128,7 @@ const d = ; // Technically OK, but probably > : JSX.Element > : ^^^^^^^^^^^ >MyTagWithOptionalNonJSXBits : (props: MyProps, context: any, nonReactArg?: string) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types index e832c4fc7c6ee..e240d47cda32b 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types @@ -16,11 +16,11 @@ console.log( >console.log(

    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    : JSX.Element @@ -44,11 +44,11 @@ console.log( >console.log(
    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    : JSX.Element @@ -78,11 +78,11 @@ console.log( >console.log(
    {[1, 2].map(i =>
    {i}
    )}
    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    {[1, 2].map(i =>
    {i}
    )}
    : JSX.Element @@ -94,7 +94,7 @@ console.log( >[1, 2].map(i =>
    {i}
    ) : JSX.Element[] > : ^^^^^^^^^^^^^ >[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -102,9 +102,9 @@ console.log( >2 : 2 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >i =>
    {i}
    : (i: number) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >i : number > : ^^^^^^ >
    {i}
    : JSX.Element diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types index e832c4fc7c6ee..e240d47cda32b 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types @@ -16,11 +16,11 @@ console.log( >console.log(
    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    : JSX.Element @@ -44,11 +44,11 @@ console.log( >console.log(
    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    : JSX.Element @@ -78,11 +78,11 @@ console.log( >console.log(
    {[1, 2].map(i =>
    {i}
    )}
    ) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^
    >
    {[1, 2].map(i =>
    {i}
    )}
    : JSX.Element @@ -94,7 +94,7 @@ console.log( >[1, 2].map(i =>
    {i}
    ) : JSX.Element[] > : ^^^^^^^^^^^^^ >[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -102,9 +102,9 @@ console.log( >2 : 2 > : ^ >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >i =>
    {i}
    : (i: number) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >i : number > : ^^^^^^ >
    {i}
    : JSX.Element diff --git a/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types index f47d0c48157c8..0115c0b2511b4 100644 --- a/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types +++ b/tests/baselines/reference/jsxLibraryManagedAttributesUnusedGeneric.types @@ -51,7 +51,7 @@ namespace jsx { declare const Comp: (p: { className?: string }) => null >Comp : (p: { className?: string; }) => null -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >p : { className?: string; } > : ^^^^^^^^^^^^^^ ^^^ >className : string @@ -61,7 +61,7 @@ declare const Comp: (p: { className?: string }) => null > : jsx.JSX.Element > : ^^^^^^^^^^^^^^^ >Comp : (p: { className?: string; }) => null -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >css : string > : ^^^^^^ diff --git a/tests/baselines/reference/jsxLocalNamespaceIndexSignatureNoCrash.types b/tests/baselines/reference/jsxLocalNamespaceIndexSignatureNoCrash.types index 5551177c222cc..894a1240cf514 100644 --- a/tests/baselines/reference/jsxLocalNamespaceIndexSignatureNoCrash.types +++ b/tests/baselines/reference/jsxLocalNamespaceIndexSignatureNoCrash.types @@ -13,11 +13,11 @@ export class X { >document.createElement('p') : HTMLParagraphElement > : ^^^^^^^^^^^^^^^^^^^^ >document.createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K_1, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K_1]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ >document : Document > : ^^^^^^^^ >createElement : { (tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K]; (tagName: K_1, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K_1]; (tagName: string, options?: ElementCreationOptions): HTMLElement; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^ >'p' : "p" > : ^^^ } diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexport.types b/tests/baselines/reference/jsxNamespaceGlobalReexport.types index cf9e49cb2ae30..66dc75553bc1f 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexport.types +++ b/tests/baselines/reference/jsxNamespaceGlobalReexport.types @@ -110,8 +110,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -119,7 +119,7 @@ export function jsx( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -137,8 +137,8 @@ export function jsx( ): VNode; export function jsx

    ( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -157,8 +157,8 @@ export function jsx

    ( ): VNode; export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -166,7 +166,7 @@ export function jsxs( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -184,8 +184,8 @@ export function jsxs( ): VNode; export function jsxs

    ( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -204,8 +204,8 @@ export function jsxs

    ( ): VNode; export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -213,7 +213,7 @@ export function jsxDEV( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -231,8 +231,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

    ( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -269,7 +269,7 @@ export const Comp = () =>

    ; >Comp : () => JSX.Element > : ^^^^^^^^^^^^^^^^^ >() =>
    : () => JSX.Element -> : ^^^^^^^^^^^^^^^^^ +> : >
    : JSX.Element > : ^^^^^^^^^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types index 457fd4763baae..a8598d0c18a34 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types +++ b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types @@ -113,8 +113,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -122,7 +122,7 @@ export function jsx( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -140,8 +140,8 @@ export function jsx( ): VNode; export function jsx

    ( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -160,8 +160,8 @@ export function jsx

    ( ): VNode; export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -169,7 +169,7 @@ export function jsxs( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -187,8 +187,8 @@ export function jsxs( ): VNode; export function jsxs

    ( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -207,8 +207,8 @@ export function jsxs

    ( ): VNode; export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -216,7 +216,7 @@ export function jsxDEV( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -234,8 +234,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

    ( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -269,7 +269,7 @@ export const Comp = () =>

    ; >Comp : () => any > : ^^^^^^^^^ >() =>
    : () => any -> : ^^^^^^^^^ +> : >
    : any > : ^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types index 7efedbe9c004f..4ea3b9de6f318 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types @@ -110,8 +110,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -119,7 +119,7 @@ export function jsx( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -137,8 +137,8 @@ export function jsx( ): VNode; export function jsx

    ( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -158,8 +158,8 @@ export function jsx

    ( export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -167,7 +167,7 @@ export function jsxs( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -185,8 +185,8 @@ export function jsxs( ): VNode; export function jsxs

    ( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChild[] | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -206,8 +206,8 @@ export function jsxs

    ( export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: P & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode; } -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ type: string, >type : string @@ -215,7 +215,7 @@ export function jsxDEV( props: JSXInternal.HTMLAttributes & >props : JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >JSXInternal : any > : ^^^ @@ -233,8 +233,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

    ( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes<{}> & JSXInternal.SVGAttributes<{}> & Record & { children?: ComponentChildren | undefined; }, key?: string | undefined): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

    (type: ComponentType

    , props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

    , >type : ComponentType

    @@ -262,7 +262,7 @@ export const Comp = () =>

    ; >Comp : () => import("/node_modules/preact/index").JSXInternal.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() =>
    : () => import("/node_modules/preact/index").JSXInternal.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >
    : import("/node_modules/preact/index").JSXInternal.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=preserve).types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=preserve).types index f4afa241ea95f..326169ce6c1e2 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=preserve).types +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=preserve).types @@ -136,7 +136,7 @@ export const Comp = () =>
    ; >Comp : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() =>
    : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >
    : import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).types index f4afa241ea95f..326169ce6c1e2 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).types +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromConfigPickedOverGlobalOne(jsx=react-jsx).types @@ -136,7 +136,7 @@ export const Comp = () =>
    ; >Comp : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() =>
    : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >
    : import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.types index 589b97aaba76e..96f003a9c8156 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.types +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespaceFromPragmaPickedOverGlobalOne.types @@ -137,7 +137,7 @@ export const Comp = () =>
    ; >Comp : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() =>
    : () => import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >
    : import("/node_modules/@emotion/react/jsx-runtime/jsx-namespace").EmotionJSX.Element > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : any diff --git a/tests/baselines/reference/jsxNamespaceReexports.types b/tests/baselines/reference/jsxNamespaceReexports.types index 95e8838d04a8c..76ae3f62758d2 100644 --- a/tests/baselines/reference/jsxNamespaceReexports.types +++ b/tests/baselines/reference/jsxNamespaceReexports.types @@ -3,7 +3,7 @@ === library.ts === function createElement(element: string, props: any, ...children: any[]): any {} >createElement : (element: string, props: any, ...children: any[]) => any -> : ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >element : string > : ^^^^^^ >props : any @@ -20,7 +20,7 @@ namespace JSX { export { createElement, JSX }; >createElement : (element: string, props: any, ...children: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^ >JSX : any > : ^^^ diff --git a/tests/baselines/reference/jsxPartialSpread.types b/tests/baselines/reference/jsxPartialSpread.types index 922cadb53b5a0..749e2c77a591a 100644 --- a/tests/baselines/reference/jsxPartialSpread.types +++ b/tests/baselines/reference/jsxPartialSpread.types @@ -10,9 +10,9 @@ Symbol count: 66,500 / 66,500 (nearest 500) /// const Select = (p: {value?: unknown}) =>

    ; >Select : (p: { value?: unknown; }) => JSX.Element -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >(p: {value?: unknown}) =>

    : (p: { value?: unknown; }) => JSX.Element -> : ^^^^ ^^^^^^^^^^^^^^^^ +> : >p : { value?: unknown; } > : ^^^^^^^^^^ ^^^ >value : unknown @@ -30,7 +30,7 @@ import React from 'react'; export function Repro({ SelectProps = {} }: { SelectProps?: Partial[0]> }) { >Repro : ({ SelectProps }: { SelectProps?: Partial[0]>; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >SelectProps : Partial<{ value?: unknown; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} @@ -38,7 +38,7 @@ export function Repro({ SelectProps = {} }: { SelectProps?: PartialSelectProps : Partial<{ value?: unknown; }> | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Select : (p: { value?: unknown; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ return ( >( : JSX.Element > : ^^^^^^^^^^^ >Select : (p: { value?: unknown; }) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >value : string > : ^^^^^^ >'test' : "test" diff --git a/tests/baselines/reference/jsxSpreadFirstUnionNoErrors.types b/tests/baselines/reference/jsxSpreadFirstUnionNoErrors.types index 062517af8fb16..ff9e2dec03389 100644 --- a/tests/baselines/reference/jsxSpreadFirstUnionNoErrors.types +++ b/tests/baselines/reference/jsxSpreadFirstUnionNoErrors.types @@ -21,9 +21,9 @@ type InfoProps = const Info = (props: InfoProps) => >Info : (props: InfoProps) => JSX.Element -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >(props: InfoProps) =>props.status === "hidden" ?

    diff --git a/tests/baselines/reference/identityForSignaturesWithTypeParametersAndAny.types b/tests/baselines/reference/identityForSignaturesWithTypeParametersAndAny.types index 04a4d13df9cfc..b3f289c52f8a0 100644 --- a/tests/baselines/reference/identityForSignaturesWithTypeParametersAndAny.types +++ b/tests/baselines/reference/identityForSignaturesWithTypeParametersAndAny.types @@ -3,7 +3,7 @@ === identityForSignaturesWithTypeParametersAndAny.ts === var f: (x: T, y: U) => T; >f : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -11,7 +11,7 @@ var f: (x: T, y: U) => T; var f: (x: any, y: any) => any; >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : any > : ^^^ >y : any @@ -19,7 +19,7 @@ var f: (x: any, y: any) => any; var g: (x: T, y: U) => T; >g : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -27,7 +27,7 @@ var g: (x: T, y: U) => T; var g: (x: any, y: any) => any; >g : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : any > : ^^^ >y : any @@ -35,7 +35,7 @@ var g: (x: any, y: any) => any; var h: (x: T, y: U) => T; >h : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -43,7 +43,7 @@ var h: (x: T, y: U) => T; var h: (x: any, y: any) => any; >h : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : any > : ^^^ >y : any @@ -51,7 +51,7 @@ var h: (x: any, y: any) => any; var i: (x: T, y: U) => T; >i : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -59,7 +59,7 @@ var i: (x: T, y: U) => T; var i: (x: any, y: string) => any; >i : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : any > : ^^^ >y : string @@ -67,7 +67,7 @@ var i: (x: any, y: string) => any; var j: (x: T, y: U) => T; >j : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -75,7 +75,7 @@ var j: (x: T, y: U) => T; var j: (x: any, y: any) => string; >j : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : any > : ^^^ >y : any diff --git a/tests/baselines/reference/identityForSignaturesWithTypeParametersSwitched.types b/tests/baselines/reference/identityForSignaturesWithTypeParametersSwitched.types index 07db02877ef0c..f4f468fd50882 100644 --- a/tests/baselines/reference/identityForSignaturesWithTypeParametersSwitched.types +++ b/tests/baselines/reference/identityForSignaturesWithTypeParametersSwitched.types @@ -3,7 +3,7 @@ === identityForSignaturesWithTypeParametersSwitched.ts === var f: (x: T, y: U) => T; >f : (x: T, y: U) => T -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -11,7 +11,7 @@ var f: (x: T, y: U) => T; var f: (x: U, y: T) => U; >f : (x: T, y: U) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >x : U > : ^ >y : T diff --git a/tests/baselines/reference/identityRelationNeverTypes.types b/tests/baselines/reference/identityRelationNeverTypes.types index dacd5e9755fc1..b5ebea732d993 100644 --- a/tests/baselines/reference/identityRelationNeverTypes.types +++ b/tests/baselines/reference/identityRelationNeverTypes.types @@ -25,7 +25,7 @@ declare class State { matches(stateValue: TSV): this is State & { value: TSV }; >matches : (stateValue: TSV) => this is State & { value: TSV; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >stateValue : TSV > : ^^^ >value : TSV @@ -34,7 +34,7 @@ declare class State { function f1(state: State<{ foo: number }>) { >f1 : (state: State<{ foo: number; }>) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >state : State<{ foo: number; }> > : ^^^^^^^^^^^^^ ^^^^ >foo : number @@ -46,21 +46,21 @@ function f1(state: State<{ foo: number }>) { >state.matches('a') : boolean > : ^^^^^^^ >state.matches : (stateValue: TSV) => this is State<{ foo: number; }> & { value: TSV; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State<{ foo: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^^ >matches : (stateValue: TSV) => this is State<{ foo: number; }> & { value: TSV; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a' : "a" > : ^^^ >state.matches('a.b') : boolean > : ^^^^^^^ >state.matches : (stateValue: TSV) => this is State<{ foo: number; }> & { value: TSV; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >state : State<{ foo: number; }> & { value: "a"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >matches : (stateValue: TSV) => this is State<{ foo: number; }> & { value: TSV; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a.b' : "a.b" > : ^^^^^ diff --git a/tests/baselines/reference/ifDoWhileStatements.types b/tests/baselines/reference/ifDoWhileStatements.types index 8fc9b65939a36..ffdf6f055c4cc 100644 --- a/tests/baselines/reference/ifDoWhileStatements.types +++ b/tests/baselines/reference/ifDoWhileStatements.types @@ -50,7 +50,7 @@ class D{ function F(x: string): number { return 42; } >F : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ >42 : 42 @@ -58,7 +58,7 @@ function F(x: string): number { return 42; } function F2(x: number): boolean { return x < 42; } >F2 : (x: number) => boolean -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x < 42 : boolean @@ -83,17 +83,17 @@ module M { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } module N { @@ -111,17 +111,17 @@ module N { export function F2(x: number): string { return x.toString(); } >F2 : (x: number) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : number > : ^^^^^^ >x.toString() : string > : ^^^^^^ >x.toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ } // literals @@ -542,7 +542,7 @@ do { }while(k) function fn(x?: string): I { return null; } >fn : (x?: string) => I -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >x : string > : ^^^^^^ @@ -550,31 +550,31 @@ if (fn()) { } >fn() : I > : ^ >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ while (fn()) { } >fn() : I > : ^ >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ do { }while(fn()) >fn() : I > : ^ >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ if (fn) { } >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ while (fn) { } >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ do { }while(fn) >fn : (x?: string) => I -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^ diff --git a/tests/baselines/reference/ignoredJsxAttributes.types b/tests/baselines/reference/ignoredJsxAttributes.types index c1c13e5e66086..08caf21542968 100644 --- a/tests/baselines/reference/ignoredJsxAttributes.types +++ b/tests/baselines/reference/ignoredJsxAttributes.types @@ -27,7 +27,7 @@ interface Props { declare function Yadda(props: Props): JSX.Element; >Yadda : (props: Props) => JSX.Element -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >props : Props > : ^^^^^ >JSX : any @@ -59,7 +59,7 @@ let x1 = ; > : JSX.Element > : ^^^^^^^^^^^ >Yadda : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >foo : string > : ^^^^^^ >data-yadda : number @@ -73,7 +73,7 @@ let x2 = ; // Error > : JSX.Element > : ^^^^^^^^^^^ >Yadda : (props: Props) => JSX.Element -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^ >bar : string > : ^^^^^^ >data-yadda : number diff --git a/tests/baselines/reference/illegalGenericWrapping1.types b/tests/baselines/reference/illegalGenericWrapping1.types index 173800ef50221..f281d7f5c817c 100644 --- a/tests/baselines/reference/illegalGenericWrapping1.types +++ b/tests/baselines/reference/illegalGenericWrapping1.types @@ -4,33 +4,33 @@ interface Sequence { each(iterator: (value: T) => void ): void; >each : (iterator: (value: T) => void) => void -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >iterator : (value: T) => void -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ map(iterator: (value: T) => U): Sequence; >map : (iterator: (value: T) => U) => Sequence -> : ^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >iterator : (value: T) => U -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ filter(iterator: (value: T) => boolean): Sequence; >filter : (iterator: (value: T) => boolean) => Sequence -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >iterator : (value: T) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ groupBy(keySelector: (value: T) => K): Sequence<{ key: K; items: Sequence; }>; >groupBy : (keySelector: (value: T) => K) => Sequence<{ key: K; items: Sequence; }> -> : ^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >keySelector : (value: T) => K -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : T > : ^ >key : K diff --git a/tests/baselines/reference/illegalSuperCallsInConstructor.types b/tests/baselines/reference/illegalSuperCallsInConstructor.types index ec23560753c86..55f987a2ad378 100644 --- a/tests/baselines/reference/illegalSuperCallsInConstructor.types +++ b/tests/baselines/reference/illegalSuperCallsInConstructor.types @@ -21,7 +21,7 @@ class Derived extends Base { >r2 : () => void > : ^^^^^^^^^^ >() => super() : () => void -> : ^^^^^^^^^^ +> : >super() : void > : ^^^^ >super : any @@ -31,7 +31,7 @@ class Derived extends Base { >r3 : () => void > : ^^^^^^^^^^ >() => { super(); } : () => void -> : ^^^^^^^^^^ +> : >super() : void > : ^^^^ >super : any @@ -41,7 +41,7 @@ class Derived extends Base { >r4 : () => void > : ^^^^^^^^^^ >function () { super(); } : () => void -> : ^^^^^^^^^^ +> : >super() : void > : ^^^^ >super : any diff --git a/tests/baselines/reference/implementArrayInterface.types b/tests/baselines/reference/implementArrayInterface.types index 86846c8abb284..5bcdeeeb64605 100644 --- a/tests/baselines/reference/implementArrayInterface.types +++ b/tests/baselines/reference/implementArrayInterface.types @@ -15,19 +15,19 @@ declare class MyArray implements Array { concat(...items: U[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^ >items : U[] > : ^^^ concat(...items: T[]): T[]; >concat : { (...items: U[]): T[]; (...items: T[]): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ^^ ^^^ ^^^ >items : T[] > : ^^^ join(separator?: string): string; >join : (separator?: string) => string -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >separator : string > : ^^^^^^ @@ -37,7 +37,7 @@ declare class MyArray implements Array { push(...items: T[]): number; >push : (...items: T[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -51,7 +51,7 @@ declare class MyArray implements Array { slice(start?: number, end?: number): T[]; >slice : (start?: number, end?: number) => T[] -> : ^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^ ^^^ ^^^^^ >start : number > : ^^^^^^ >end : number @@ -59,9 +59,9 @@ declare class MyArray implements Array { sort(compareFn?: (a: T, b: T) => number): this; >sort : (compareFn?: (a: T, b: T) => number) => this -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >compareFn : (a: T, b: T) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : T @@ -69,13 +69,13 @@ declare class MyArray implements Array { splice(start: number): T[]; >splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >start : number > : ^^^^^^ splice(start: number, deleteCount: number, ...items: T[]): T[]; >splice : { (start: number): T[]; (start: number, deleteCount: number, ...items: T[]): T[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >start : number > : ^^^^^^ >deleteCount : number @@ -85,13 +85,13 @@ declare class MyArray implements Array { unshift(...items: T[]): number; >unshift : (...items: T[]) => number -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >items : T[] > : ^^^ indexOf(searchElement: T, fromIndex?: number): number; >indexOf : (searchElement: T, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : T > : ^ >fromIndex : number @@ -99,7 +99,7 @@ declare class MyArray implements Array { lastIndexOf(searchElement: T, fromIndex?: number): number; >lastIndexOf : (searchElement: T, fromIndex?: number) => number -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >searchElement : T > : ^ >fromIndex : number @@ -107,9 +107,9 @@ declare class MyArray implements Array { every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; >every : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -120,9 +120,9 @@ declare class MyArray implements Array { some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean; >some : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => boolean -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -133,9 +133,9 @@ declare class MyArray implements Array { forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; >forEach : (callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any) => void -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => void -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -146,9 +146,9 @@ declare class MyArray implements Array { map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[]; >map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => U -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -159,9 +159,9 @@ declare class MyArray implements Array { filter(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T[]; >filter : (callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any) => T[] -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >callbackfn : (value: T, index: number, array: T[]) => boolean -> : ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >index : number @@ -172,9 +172,9 @@ declare class MyArray implements Array { reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : T > : ^ >currentValue : T @@ -188,9 +188,9 @@ declare class MyArray implements Array { reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; >reduce : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : U > : ^ >currentValue : T @@ -204,9 +204,9 @@ declare class MyArray implements Array { reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; >reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^^^^^ >callbackfn : (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : T > : ^ >currentValue : T @@ -220,9 +220,9 @@ declare class MyArray implements Array { reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; >reduceRight : { (callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): T; (callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >callbackfn : (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >previousValue : U > : ^ >currentValue : T diff --git a/tests/baselines/reference/implementGenericWithMismatchedTypes.types b/tests/baselines/reference/implementGenericWithMismatchedTypes.types index df861afabef4e..690e4ec8434ab 100644 --- a/tests/baselines/reference/implementGenericWithMismatchedTypes.types +++ b/tests/baselines/reference/implementGenericWithMismatchedTypes.types @@ -7,7 +7,7 @@ interface IFoo { foo(x: T): T; >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -17,7 +17,7 @@ class C implements IFoo { // error foo(x: string): number { >foo : (x: string) => number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ @@ -28,7 +28,7 @@ class C implements IFoo { // error interface IFoo2 { foo(x: T): T; >foo : (x: T) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : T > : ^ } @@ -38,7 +38,7 @@ class C2 implements IFoo2 { // error foo(x: Tstring): number { >foo : (x: Tstring) => number -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : Tstring > : ^^^^^^^ diff --git a/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.types b/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.types index 55e3078e2cb1b..1f11baeaff92b 100644 --- a/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.types +++ b/tests/baselines/reference/implementInterfaceAnyMemberWithVoid.types @@ -4,7 +4,7 @@ interface I { foo(value: number); >foo : (value: number) => any -> : ^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >value : number > : ^^^^^^ } @@ -15,7 +15,7 @@ class Bug implements I { public foo(value: number) { >foo : (value: number) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >value : number > : ^^^^^^ } diff --git a/tests/baselines/reference/implicitAnyAmbients.types b/tests/baselines/reference/implicitAnyAmbients.types index 7c2a859bfa678..1f381d97db8c8 100644 --- a/tests/baselines/reference/implicitAnyAmbients.types +++ b/tests/baselines/reference/implicitAnyAmbients.types @@ -15,19 +15,19 @@ declare module m { function f(x); // error >f : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ function f2(x: any); // error >f2 : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ function f3(x: any): any; >f3 : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ @@ -38,13 +38,13 @@ declare module m { foo2(x: any); // error >foo2 : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ foo3(x: any): any; >foo3 : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } @@ -59,13 +59,13 @@ declare module m { foo2(x: any); // error >foo2 : (x: any) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : any > : ^^^ foo3(x: any): any; >foo3 : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } diff --git a/tests/baselines/reference/implicitAnyCastedValue.types b/tests/baselines/reference/implicitAnyCastedValue.types index 1e54487971ef9..c68d804363891 100644 --- a/tests/baselines/reference/implicitAnyCastedValue.types +++ b/tests/baselines/reference/implicitAnyCastedValue.types @@ -5,7 +5,7 @@ var x = function () { >x : () => any > : ^^^^^^ >function () { return 0; // this should not be an error} : () => any -> : ^^^^^^ +> : return 0; // this should not be an error >0 : any @@ -154,7 +154,7 @@ function undefinedBar() { function multipleRets1(x) { // this should not be an error >multipleRets1 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -175,7 +175,7 @@ function multipleRets1(x) { // this should not be an error function multipleRets2(x) { // this should not be an error >multipleRets2 : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.types b/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.types index 64234b0660a43..f097cdedbea37 100644 --- a/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.types +++ b/tests/baselines/reference/implicitAnyDeclareFunctionExprWithoutFormalType.types @@ -4,17 +4,17 @@ // these should be errors for implicit any parameter var lambda = (l1) => { }; // Error at "l1" >lambda : (l1: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >(l1) => { } : (l1: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : >l1 : any > : ^^^ var lambd2 = (ll1, ll2: string) => { } // Error at "ll1" >lambd2 : (ll1: any, ll2: string) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^^^^^^^^ >(ll1, ll2: string) => { } : (ll1: any, ll2: string) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >ll1 : any > : ^^^ >ll2 : string @@ -22,11 +22,11 @@ var lambd2 = (ll1, ll2: string) => { } // Error at "ll1" var lamda3 = function myLambda3(myParam) { } >lamda3 : (myParam: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >function myLambda3(myParam) { } : (myParam: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >myLambda3 : (myParam: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >myParam : any > : ^^^ @@ -34,14 +34,14 @@ var lamda4 = () => { return null }; >lamda4 : () => any > : ^^^^^^^^^ >() => { return null } : () => any -> : ^^^^^^^^^ +> : // these should be error for implicit any return type var lambda5 = function temp() { return null; } >lambda5 : () => any > : ^^^^^^^^^ >function temp() { return null; } : () => any -> : ^^^^^^^^^ +> : >temp : () => any > : ^^^^^^^^^ @@ -49,13 +49,13 @@ var lambda6 = () => { return null; } >lambda6 : () => any > : ^^^^^^^^^ >() => { return null; } : () => any -> : ^^^^^^^^^ +> : var lambda7 = function temp() { return undefined; } >lambda7 : () => any > : ^^^^^^^^^ >function temp() { return undefined; } : () => any -> : ^^^^^^^^^ +> : >temp : () => any > : ^^^^^^^^^ >undefined : undefined @@ -65,7 +65,7 @@ var lambda8 = () => { return undefined; } >lambda8 : () => any > : ^^^^^^^^^ >() => { return undefined; } : () => any -> : ^^^^^^^^^ +> : >undefined : undefined > : ^^^^^^^^^ @@ -74,7 +74,7 @@ var lambda9 = () => { return 5; } >lambda9 : () => number > : ^^^^^^^^^^^^ >() => { return 5; } : () => number -> : ^^^^^^^^^^^^ +> : >5 : 5 > : ^ @@ -82,7 +82,7 @@ var lambda10 = function temp1() { return 5; } >lambda10 : () => number > : ^^^^^^^^^^^^ >function temp1() { return 5; } : () => number -> : ^^^^^^^^^^^^ +> : >temp1 : () => number > : ^^^^^^^^^^^^ >5 : 5 diff --git a/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.types b/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.types index 23d2f99187a5c..06194cc69d64b 100644 --- a/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.types +++ b/tests/baselines/reference/implicitAnyDeclareFunctionWithoutFormalType.types @@ -4,13 +4,13 @@ // these should be errors function foo(x) { }; >foo : (x: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : any > : ^^^ function bar(x: number, y) { }; // error at "y"; no error at "x" >bar : (x: number, y: any) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : any @@ -18,7 +18,7 @@ function bar(x: number, y) { }; // error at "y"; no error at "x" function func2(a, b, c) { }; // error at "a,b,c" >func2 : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -28,13 +28,13 @@ function func2(a, b, c) { }; // error at "a,b,c" function func3(...args) { }; // error at "args" >func3 : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >args : any[] > : ^^^^^ function func4(z= null, w= undefined) { }; // error at "z,w" >func4 : (z?: any, w?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^ >z : any > : ^^^ >w : any @@ -45,7 +45,7 @@ function func4(z= null, w= undefined) { }; // error at "z,w" // these shouldn't be errors function noError1(x= 3, y= 2) { }; >noError1 : (x?: number, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >3 : 3 @@ -57,7 +57,7 @@ function noError1(x= 3, y= 2) { }; function noError2(x: number, y: string) { }; >noError2 : (x: number, y: string) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/implicitAnyDeclareMemberWithoutType.types b/tests/baselines/reference/implicitAnyDeclareMemberWithoutType.types index c2f06137db461..fde0dc2cd738a 100644 --- a/tests/baselines/reference/implicitAnyDeclareMemberWithoutType.types +++ b/tests/baselines/reference/implicitAnyDeclareMemberWithoutType.types @@ -13,7 +13,7 @@ interface IFace { constructor(c1, c2: string, c3); // error at "c1, c3, "constructor" >constructor : (c1: any, c2: string, c3: any) => any -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^ >c1 : any > : ^^^ >c2 : string @@ -23,7 +23,7 @@ interface IFace { funcOfIFace(f1, f2, f3: number); // error at "f1, f2, funcOfIFace" >funcOfIFace : (f1: any, f2: any, f3: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^ ^^^^^^^^ >f1 : any > : ^^^ >f2 : any diff --git a/tests/baselines/reference/implicitAnyDeclareMemberWithoutType2.types b/tests/baselines/reference/implicitAnyDeclareMemberWithoutType2.types index c157491c224a4..a8f1056125fd0 100644 --- a/tests/baselines/reference/implicitAnyDeclareMemberWithoutType2.types +++ b/tests/baselines/reference/implicitAnyDeclareMemberWithoutType2.types @@ -24,7 +24,7 @@ class C { funcOfC(f1, f2, f3: number) { } // error at "f1,f2" >funcOfC : (f1: any, f2: any, f3: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^ ^^^^^^^^^ >f1 : any > : ^^^ >f2 : any diff --git a/tests/baselines/reference/implicitAnyDeclareTypePropertyWithoutType.types b/tests/baselines/reference/implicitAnyDeclareTypePropertyWithoutType.types index e6ed6db74b394..1ac86151b8366 100644 --- a/tests/baselines/reference/implicitAnyDeclareTypePropertyWithoutType.types +++ b/tests/baselines/reference/implicitAnyDeclareTypePropertyWithoutType.types @@ -31,13 +31,13 @@ var x11: { new (); }; // error at "new" var x2: (y2) => number; // error at "y2" >x2 : (y2: any) => number -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >y2 : any > : ^^^ var x3: (x3: string, y3) => void ; // error at "y3" >x3 : (x3: string, y3: any) => void -> : ^^^^^ ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^ >x3 : string > : ^^^^^^ >y3 : any diff --git a/tests/baselines/reference/implicitAnyDeclareVariablesWithoutTypeAndInit.types b/tests/baselines/reference/implicitAnyDeclareVariablesWithoutTypeAndInit.types index 688c0c5492542..c6bf0f744d947 100644 --- a/tests/baselines/reference/implicitAnyDeclareVariablesWithoutTypeAndInit.types +++ b/tests/baselines/reference/implicitAnyDeclareVariablesWithoutTypeAndInit.types @@ -16,7 +16,7 @@ declare var foo; // error at "foo" function func(k) { y }; // error at "k" >func : (k: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >k : any > : ^^^ >y : any @@ -26,7 +26,7 @@ func(x); >func(x) : void > : ^^^^ >func : (k: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >x : undefined > : ^^^^^^^^^ diff --git a/tests/baselines/reference/implicitAnyFromCircularInference.types b/tests/baselines/reference/implicitAnyFromCircularInference.types index 8e9f29c348fac..1309591c1d832 100644 --- a/tests/baselines/reference/implicitAnyFromCircularInference.types +++ b/tests/baselines/reference/implicitAnyFromCircularInference.types @@ -48,7 +48,7 @@ var f1 = function () { >f1 : () => never > : ^^^^^^^^^^^ >function () { return f1();} : () => never -> : ^^^^^^^^^^^ +> : return f1(); >f1() : never @@ -63,7 +63,7 @@ var f2 = () => f2(); >f2 : () => any > : ^^^^^^^^^ >() => f2() : () => any -> : ^^^^^^^^^ +> : >f2() : any > : ^^^ >f2 : () => any @@ -104,7 +104,7 @@ interface A { function foo(x: A): string { return "abc"; } >foo : (x: A) => string -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : A > : ^ >"abc" : "abc" @@ -120,7 +120,7 @@ class C { >foo(this) : string > : ^^^^^^ >foo : (x: A) => string -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >this : this > : ^^^^ } diff --git a/tests/baselines/reference/implicitAnyFunctionInvocationWithAnyArguements.types b/tests/baselines/reference/implicitAnyFunctionInvocationWithAnyArguements.types index 4d6c039734026..7b01c82798d4b 100644 --- a/tests/baselines/reference/implicitAnyFunctionInvocationWithAnyArguements.types +++ b/tests/baselines/reference/implicitAnyFunctionInvocationWithAnyArguements.types @@ -24,21 +24,21 @@ var objL: { v; w; } // error at "y,z" var funcL: (y2) => number; >funcL : (y2: any) => number -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >y2 : any > : ^^^ function temp1(arg1) { } // error at "temp1" >temp1 : (arg1: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arg1 : any > : ^^^ function testFunctionExprC(subReplace: (s: string, ...arg: any[]) => string) { } >testFunctionExprC : (subReplace: (s: string, ...arg: any[]) => string) => void -> : ^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >subReplace : (s: string, ...arg: any[]) => string -> : ^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ >arg : any[] @@ -46,9 +46,9 @@ function testFunctionExprC(subReplace: (s: string, ...arg: any[]) => string) { } function testFunctionExprC2(eq: (v1: any, v2: any) => number) { }; >testFunctionExprC2 : (eq: (v1: any, v2: any) => number) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >eq : (v1: any, v2: any) => number -> : ^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >v1 : any > : ^^^ >v2 : any @@ -56,7 +56,7 @@ function testFunctionExprC2(eq: (v1: any, v2: any) => number) { }; function testObjLiteral(objLit: { v: any; w: any }) { }; >testObjLiteral : (objLit: { v: any; w: any; }) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >objLit : { v: any; w: any; } > : ^^^^^ ^^^^^ ^^^ >v : any @@ -66,9 +66,9 @@ function testObjLiteral(objLit: { v: any; w: any }) { }; function testFuncLiteral(funcLit: (y2) => number) { }; >testFuncLiteral : (funcLit: (y2: any) => number) => void -> : ^^^^^^^^^^ ^^^ ^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^ >funcLit : (y2: any) => number -> : ^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ >y2 : any > : ^^^ @@ -77,9 +77,9 @@ testFunctionExprC2((v1, v2) => 1); >testFunctionExprC2((v1, v2) => 1) : void > : ^^^^ >testFunctionExprC2 : (eq: (v1: any, v2: any) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(v1, v2) => 1 : (v1: any, v2: any) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >v1 : any > : ^^^ >v2 : any @@ -91,7 +91,7 @@ testObjLiteral(objL); >testObjLiteral(objL) : void > : ^^^^ >testObjLiteral : (objLit: { v: any; w: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >objL : { v: any; w: any; } > : ^^^^^^^^^^^^^^^^^^^ @@ -99,9 +99,9 @@ testFuncLiteral(funcL); >testFuncLiteral(funcL) : void > : ^^^^ >testFuncLiteral : (funcLit: (y2: any) => number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^ ^^^^^^^^^ >funcL : (y2: any) => number -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ var k = temp1(null); >k : void @@ -109,7 +109,7 @@ var k = temp1(null); >temp1(null) : void > : ^^^^ >temp1 : (arg1: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ var result = temp1(arg0); >result : void @@ -117,7 +117,7 @@ var result = temp1(arg0); >temp1(arg0) : void > : ^^^^ >temp1 : (arg1: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >arg0 : null > : ^^^^ @@ -127,13 +127,13 @@ var result1 = temp1(anyArray); >temp1(anyArray) : void > : ^^^^ >temp1 : (arg1: any) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >anyArray : any[] > : ^^^^^ function noError(variable: any, array?: any) { } >noError : (variable: any, array?: any) => void -> : ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >variable : any > : ^^^ >array : any @@ -143,7 +143,7 @@ noError(null, []); >noError(null, []) : void > : ^^^^ >noError : (variable: any, array?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >[] : undefined[] > : ^^^^^^^^^^^ @@ -151,7 +151,7 @@ noError(undefined, []); >noError(undefined, []) : void > : ^^^^ >noError : (variable: any, array?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >[] : any @@ -163,7 +163,7 @@ noError(null, [null, undefined]); >noError(null, [null, undefined]) : void > : ^^^^ >noError : (variable: any, array?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >[null, undefined] : null[] > : ^^^^^^ >undefined : undefined @@ -173,7 +173,7 @@ noError(undefined, anyArray); >noError(undefined, anyArray) : void > : ^^^^ >noError : (variable: any, array?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >anyArray : any[] diff --git a/tests/baselines/reference/implicitAnyGenericTypeInference.types b/tests/baselines/reference/implicitAnyGenericTypeInference.types index 6d449a74dff50..72615ec61ab2d 100644 --- a/tests/baselines/reference/implicitAnyGenericTypeInference.types +++ b/tests/baselines/reference/implicitAnyGenericTypeInference.types @@ -4,7 +4,7 @@ interface Comparer { compareTo(x: T, y: U): U; >compareTo : (x: T, y: U) => U -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -17,15 +17,15 @@ var c: Comparer; c = { compareTo: (x, y) => { return y; } }; >c = { compareTo: (x, y) => { return y; } } : { compareTo: (x: any, y: U) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ >c : Comparer > : ^^^^^^^^^^^^^ >{ compareTo: (x, y) => { return y; } } : { compareTo: (x: any, y: U) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ >compareTo : (x: any, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^ ^^^^^^^^^ >(x, y) => { return y; } : (x: any, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >x : any >y : U > : ^ @@ -38,11 +38,11 @@ var r = c.compareTo(1, ''); >c.compareTo(1, '') : "" > : ^^ >c.compareTo : (x: any, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^ ^^^^^^^^^ >c : Comparer > : ^^^^^^^^^^^^^ >compareTo : (x: any, y: U) => U -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^ ^^^^^^^^^ >1 : 1 > : ^ >'' : "" diff --git a/tests/baselines/reference/implicitAnyInAmbientDeclaration.types b/tests/baselines/reference/implicitAnyInAmbientDeclaration.types index e6fe6c2422e37..0bd4e212222f6 100644 --- a/tests/baselines/reference/implicitAnyInAmbientDeclaration.types +++ b/tests/baselines/reference/implicitAnyInAmbientDeclaration.types @@ -19,13 +19,13 @@ module Test { public publicFunction(x); // this should be an error >publicFunction : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ private privateFunction(privateParam); // this should not be an error >privateFunction : (privateParam: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >privateParam : any > : ^^^ diff --git a/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.types b/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.types index 7b36e603f9690..cf8ce6fa80e07 100644 --- a/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.types +++ b/tests/baselines/reference/implicitAnyInAmbientDeclaration2.d.types @@ -3,7 +3,7 @@ === implicitAnyInAmbientDeclaration2.d.ts === declare function foo(x); // this should be an error >foo : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ @@ -25,13 +25,13 @@ declare class C { public publicFunction(x); // this should be an error >publicFunction : (x: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >x : any > : ^^^ private privateFunction(privateParam); // this should not be an error >privateFunction : (privateParam: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >privateParam : any > : ^^^ diff --git a/tests/baselines/reference/implicitAnyWidenToAny.types b/tests/baselines/reference/implicitAnyWidenToAny.types index 692ef0dd7184f..60f1a788bfc49 100644 --- a/tests/baselines/reference/implicitAnyWidenToAny.types +++ b/tests/baselines/reference/implicitAnyWidenToAny.types @@ -115,7 +115,7 @@ var array5 = [null, undefined]; var objLit: { new (n: number): any; }; >objLit : new (n: number) => any -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >n : number > : ^^^^^^ @@ -129,7 +129,7 @@ var obj0 = new objLit(1); >new objLit(1) : any > : ^^^ >objLit : new (n: number) => any -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/implicitConstParameters.types b/tests/baselines/reference/implicitConstParameters.types index 9b18d4ff31bac..87fd39e11054b 100644 --- a/tests/baselines/reference/implicitConstParameters.types +++ b/tests/baselines/reference/implicitConstParameters.types @@ -3,7 +3,7 @@ === implicitConstParameters.ts === function doSomething(cb: () => void) { >doSomething : (cb: () => void) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >cb : () => void > : ^^^^^^ @@ -16,7 +16,7 @@ function doSomething(cb: () => void) { function fn(x: number | string) { >fn : (x: number | string) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | number > : ^^^^^^^^^^^^^^^ @@ -34,23 +34,23 @@ function fn(x: number | string) { >doSomething(() => x.toFixed()) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.toFixed() : () => string > : ^^^^^^^^^^^^ >x.toFixed() : string > : ^^^^^^ ->x.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>x.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } } function f1(x: string | undefined) { >f1 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -66,7 +66,7 @@ function f1(x: string | undefined) { >doSomething(() => x.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.length : () => number > : ^^^^^^^^^^^^ >x.length : number @@ -79,7 +79,7 @@ function f1(x: string | undefined) { function f2(x: string | undefined) { >f2 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -91,7 +91,7 @@ function f2(x: string | undefined) { >doSomething(() => { doSomething(() => x.length); }) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => { doSomething(() => x.length); } : () => void > : ^^^^^^^^^^ @@ -99,7 +99,7 @@ function f2(x: string | undefined) { >doSomething(() => x.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.length : () => number > : ^^^^^^^^^^^^ >x.length : number @@ -115,7 +115,7 @@ function f2(x: string | undefined) { function f3(x: string | undefined) { >f3 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -137,7 +137,7 @@ function f3(x: string | undefined) { >doSomething(() => x.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.length : () => number > : ^^^^^^^^^^^^ >x.length : number @@ -152,7 +152,7 @@ function f3(x: string | undefined) { function f4(x: string | undefined) { >f4 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -172,7 +172,7 @@ function f4(x: string | undefined) { >doSomething(() => x.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.length : () => number > : ^^^^^^^^^^^^ >x.length : number @@ -186,7 +186,7 @@ function f4(x: string | undefined) { function f5(x: string | undefined) { >f5 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -198,7 +198,7 @@ function f5(x: string | undefined) { >doSomething(() => x.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => x.length : () => number > : ^^^^^^^^^^^^ >x.length : number @@ -220,7 +220,7 @@ function f5(x: string | undefined) { function f6(x: string | undefined) { >f6 : (x: string | undefined) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -242,7 +242,7 @@ function f6(x: string | undefined) { >doSomething(() => y.length) : void > : ^^^^ >doSomething : (cb: () => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >() => y.length : () => number > : ^^^^^^^^^^^^ >y.length : number diff --git a/tests/baselines/reference/implicitIndexSignatures.types b/tests/baselines/reference/implicitIndexSignatures.types index 4b2943c68ca2d..28d4450b24dd8 100644 --- a/tests/baselines/reference/implicitIndexSignatures.types +++ b/tests/baselines/reference/implicitIndexSignatures.types @@ -93,7 +93,7 @@ map = names2; declare function getStringIndexValue(map: { [x: string]: T }): T; >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >map : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -101,7 +101,7 @@ declare function getStringIndexValue(map: { [x: string]: T }): T; declare function getNumberIndexValue(map: { [x: number]: T }): T; >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >map : { [x: number]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : number @@ -139,7 +139,7 @@ function f1() { >getStringIndexValue(o1) : number > : ^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o1 : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -149,7 +149,7 @@ function f1() { >getStringIndexValue(o2) : number > : ^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o2 : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -186,7 +186,7 @@ function f2() { >getStringIndexValue(o1) : string > : ^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o1 : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -196,7 +196,7 @@ function f2() { >getStringIndexValue(o2) : string > : ^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o2 : { a: string; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -233,7 +233,7 @@ function f3() { >getStringIndexValue(o1) : string | number > : ^^^^^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o1 : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -243,7 +243,7 @@ function f3() { >getStringIndexValue(o2) : string | number > : ^^^^^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o2 : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -286,7 +286,7 @@ function f4() { >getStringIndexValue(o1) : string | number > : ^^^^^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o1 : { 0: string; 1: string; count: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -296,7 +296,7 @@ function f4() { >getStringIndexValue(o2) : string | number > : ^^^^^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o2 : { 0: string; 1: string; count: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -306,7 +306,7 @@ function f4() { >getNumberIndexValue(o1) : string > : ^^^^^^ >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o1 : { 0: string; 1: string; count: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -316,7 +316,7 @@ function f4() { >getNumberIndexValue(o2) : string > : ^^^^^^ >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >o2 : { 0: string; 1: string; count: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -363,7 +363,7 @@ function f5() { >getStringIndexValue(E1) : string | E1 > : ^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E1 : typeof E1 > : ^^^^^^^^^ @@ -373,7 +373,7 @@ function f5() { >getStringIndexValue(E2) : E2 > : ^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E2 : typeof E2 > : ^^^^^^^^^ @@ -383,7 +383,7 @@ function f5() { >getStringIndexValue(E3) : string | E3.A > : ^^^^^^^^^^^^^ >getStringIndexValue : (map: { [x: string]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E3 : typeof E3 > : ^^^^^^^^^ @@ -393,7 +393,7 @@ function f5() { >getNumberIndexValue(E1) : string > : ^^^^^^ >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E1 : typeof E1 > : ^^^^^^^^^ @@ -403,7 +403,7 @@ function f5() { >getNumberIndexValue(E2) : unknown > : ^^^^^^^ >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E2 : typeof E2 > : ^^^^^^^^^ @@ -413,7 +413,7 @@ function f5() { >getNumberIndexValue(E3) : string > : ^^^^^^ >getNumberIndexValue : (map: { [x: number]: T; }) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >E3 : typeof E3 > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/importAliasModuleExports.types b/tests/baselines/reference/importAliasModuleExports.types index 703d23dc118fc..de546b8411347 100644 --- a/tests/baselines/reference/importAliasModuleExports.types +++ b/tests/baselines/reference/importAliasModuleExports.types @@ -74,11 +74,11 @@ Object.defineProperty(A.prototype, "def", { value: 0 }); >Object.defineProperty(A.prototype, "def", { value: 0 }) : A > : ^ >Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >A.prototype : A > : ^ >A : typeof A diff --git a/tests/baselines/reference/importAssertionNonstring.types b/tests/baselines/reference/importAssertionNonstring.types index f00e8c7147c48..5522ed95cc248 100644 --- a/tests/baselines/reference/importAssertionNonstring.types +++ b/tests/baselines/reference/importAssertionNonstring.types @@ -53,9 +53,9 @@ import * as thing6 from "./mod.mjs" assert {type: "json", field: 0..toString()} >0..toString() : string > : ^^^^^^ >0..toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >0. : 0 > : ^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/importAttributes6.types b/tests/baselines/reference/importAttributes6.types index 1d984f0cbeedc..0c5a2b442e7f7 100644 --- a/tests/baselines/reference/importAttributes6.types +++ b/tests/baselines/reference/importAttributes6.types @@ -53,9 +53,9 @@ import * as thing6 from "./mod.mjs" with { type: "json", field: 0..toString() }; >0..toString() : string > : ^^^^^^ >0..toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >0. : 0 > : ^ >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpression1ES2020.types b/tests/baselines/reference/importCallExpression1ES2020.types index 3d805834a32cb..257de1156da76 100644 --- a/tests/baselines/reference/importCallExpression1ES2020.types +++ b/tests/baselines/reference/importCallExpression1ES2020.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpression2ES2020.types b/tests/baselines/reference/importCallExpression2ES2020.types index 9ca3ad3ff8a99..3a9b0d1396ea1 100644 --- a/tests/baselines/reference/importCallExpression2ES2020.types +++ b/tests/baselines/reference/importCallExpression2ES2020.types @@ -15,7 +15,7 @@ export class B { === 2.ts === function foo(x: Promise) { >foo : (x: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ @@ -23,13 +23,13 @@ function foo(x: Promise) { >x.then(value => { let b = new value.B(); b.print(); }) : Promise > : ^^^^^^^^^^^^^ >x.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value => { let b = new value.B(); b.print(); } : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >value : any let b = new value.B(); @@ -56,7 +56,7 @@ foo(import("./0")); >foo(import("./0")) : void > : ^^^^ >foo : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpression4ES2020.types b/tests/baselines/reference/importCallExpression4ES2020.types index 783022b68b75e..3bd37a7b8f818 100644 --- a/tests/baselines/reference/importCallExpression4ES2020.types +++ b/tests/baselines/reference/importCallExpression4ES2020.types @@ -57,7 +57,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); diff --git a/tests/baselines/reference/importCallExpressionAsyncES2020.types b/tests/baselines/reference/importCallExpressionAsyncES2020.types index 6582c7becd21e..3e87776b90a95 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES2020.types +++ b/tests/baselines/reference/importCallExpressionAsyncES2020.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES5AMD.types b/tests/baselines/reference/importCallExpressionAsyncES5AMD.types index abe3492561013..d84149868b7b5 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES5AMD.types +++ b/tests/baselines/reference/importCallExpressionAsyncES5AMD.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES5CJS.types b/tests/baselines/reference/importCallExpressionAsyncES5CJS.types index 416aa2dd2f2b4..d019dff8b8469 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES5CJS.types +++ b/tests/baselines/reference/importCallExpressionAsyncES5CJS.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES5System.types b/tests/baselines/reference/importCallExpressionAsyncES5System.types index 49ea6657f0824..19bb4b1307e57 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES5System.types +++ b/tests/baselines/reference/importCallExpressionAsyncES5System.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES5UMD.types b/tests/baselines/reference/importCallExpressionAsyncES5UMD.types index ff63b939ecc6f..971fc668cb224 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES5UMD.types +++ b/tests/baselines/reference/importCallExpressionAsyncES5UMD.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES6AMD.types b/tests/baselines/reference/importCallExpressionAsyncES6AMD.types index 18857450301ed..3425ef861cd35 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES6AMD.types +++ b/tests/baselines/reference/importCallExpressionAsyncES6AMD.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES6CJS.types b/tests/baselines/reference/importCallExpressionAsyncES6CJS.types index a8b35bc8f09bb..54b26695609a8 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES6CJS.types +++ b/tests/baselines/reference/importCallExpressionAsyncES6CJS.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES6System.types b/tests/baselines/reference/importCallExpressionAsyncES6System.types index be280be2535fb..4983247bbe4ce 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES6System.types +++ b/tests/baselines/reference/importCallExpressionAsyncES6System.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionAsyncES6UMD.types b/tests/baselines/reference/importCallExpressionAsyncES6UMD.types index 26e34e0fdf739..e63d961701c82 100644 --- a/tests/baselines/reference/importCallExpressionAsyncES6UMD.types +++ b/tests/baselines/reference/importCallExpressionAsyncES6UMD.types @@ -40,13 +40,13 @@ export const obj = { >obj : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // THREE }} : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // THREE } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // THREE >req : typeof import("test") @@ -68,13 +68,13 @@ export class cl2 { >p : { m: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ m: async () => { const req = await import('./test') // FOUR } } : { m: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ m: async () => { >m : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FOUR } : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FOUR >req : typeof import("test") @@ -93,7 +93,7 @@ export const l = async () => { >l : () => Promise > : ^^^^^^^^^^^^^^^^^^^ >async () => { const req = await import('./test') // FIVE} : () => Promise -> : ^^^^^^^^^^^^^^^^^^^ +> : const req = await import('./test') // FIVE >req : typeof import("test") diff --git a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types index b14797a7aae05..7bf962bfdf2ab 100644 --- a/tests/baselines/reference/importCallExpressionDeclarationEmit1.types +++ b/tests/baselines/reference/importCallExpressionDeclarationEmit1.types @@ -65,7 +65,7 @@ const p2 = import(whatToLoad ? getSpecifier() : "defaulPath") function returnDynamicLoad(path: string) { >returnDynamicLoad : (path: string) => Promise -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >path : string > : ^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES5AMD.types b/tests/baselines/reference/importCallExpressionES5AMD.types index 536a45df0fc7b..caa82337bc39c 100644 --- a/tests/baselines/reference/importCallExpressionES5AMD.types +++ b/tests/baselines/reference/importCallExpressionES5AMD.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES5CJS.types b/tests/baselines/reference/importCallExpressionES5CJS.types index 38c086164ee4d..7a9f8b9102da1 100644 --- a/tests/baselines/reference/importCallExpressionES5CJS.types +++ b/tests/baselines/reference/importCallExpressionES5CJS.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES5System.types b/tests/baselines/reference/importCallExpressionES5System.types index 665c14f48a546..4931d2cd42dca 100644 --- a/tests/baselines/reference/importCallExpressionES5System.types +++ b/tests/baselines/reference/importCallExpressionES5System.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES5UMD.types b/tests/baselines/reference/importCallExpressionES5UMD.types index 01eac65cfd911..aea570380e1ad 100644 --- a/tests/baselines/reference/importCallExpressionES5UMD.types +++ b/tests/baselines/reference/importCallExpressionES5UMD.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES6AMD.types b/tests/baselines/reference/importCallExpressionES6AMD.types index ee701ec470c01..35effdf19789d 100644 --- a/tests/baselines/reference/importCallExpressionES6AMD.types +++ b/tests/baselines/reference/importCallExpressionES6AMD.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES6CJS.types b/tests/baselines/reference/importCallExpressionES6CJS.types index fc8f1f36570f9..0465e146e40ab 100644 --- a/tests/baselines/reference/importCallExpressionES6CJS.types +++ b/tests/baselines/reference/importCallExpressionES6CJS.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES6System.types b/tests/baselines/reference/importCallExpressionES6System.types index 75e5af90f5e5c..76e02ae679ed5 100644 --- a/tests/baselines/reference/importCallExpressionES6System.types +++ b/tests/baselines/reference/importCallExpressionES6System.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionES6UMD.types b/tests/baselines/reference/importCallExpressionES6UMD.types index a28a43d026be6..168eed45a98f3 100644 --- a/tests/baselines/reference/importCallExpressionES6UMD.types +++ b/tests/baselines/reference/importCallExpressionES6UMD.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionErrorInES2015.types b/tests/baselines/reference/importCallExpressionErrorInES2015.types index 088c6cf5e5a73..c426d343794f4 100644 --- a/tests/baselines/reference/importCallExpressionErrorInES2015.types +++ b/tests/baselines/reference/importCallExpressionErrorInES2015.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionInAMD1.types b/tests/baselines/reference/importCallExpressionInAMD1.types index 4b4a9d684d0e7..bc471cca81d63 100644 --- a/tests/baselines/reference/importCallExpressionInAMD1.types +++ b/tests/baselines/reference/importCallExpressionInAMD1.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionInAMD2.types b/tests/baselines/reference/importCallExpressionInAMD2.types index 17a572a2fa709..3510478dc8354 100644 --- a/tests/baselines/reference/importCallExpressionInAMD2.types +++ b/tests/baselines/reference/importCallExpressionInAMD2.types @@ -16,7 +16,7 @@ export class B { // We use Promise for now as there is no way to specify shape of module object function foo(x: Promise) { >foo : (x: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ @@ -24,13 +24,13 @@ function foo(x: Promise) { >x.then(value => { let b = new value.B(); b.print(); }) : Promise > : ^^^^^^^^^^^^^ >x.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value => { let b = new value.B(); b.print(); } : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >value : any let b = new value.B(); @@ -57,7 +57,7 @@ foo(import("./0")); >foo(import("./0")) : void > : ^^^^ >foo : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpressionInAMD4.types b/tests/baselines/reference/importCallExpressionInAMD4.types index bd3dcf4b6dfa7..fa4e57159a654 100644 --- a/tests/baselines/reference/importCallExpressionInAMD4.types +++ b/tests/baselines/reference/importCallExpressionInAMD4.types @@ -57,7 +57,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); @@ -159,7 +159,7 @@ export class D { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -167,9 +167,9 @@ export class D { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -191,7 +191,7 @@ export class D { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); diff --git a/tests/baselines/reference/importCallExpressionInCJS1.types b/tests/baselines/reference/importCallExpressionInCJS1.types index c7c22570867e8..002bf24f0fff6 100644 --- a/tests/baselines/reference/importCallExpressionInCJS1.types +++ b/tests/baselines/reference/importCallExpressionInCJS1.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionInCJS2.types b/tests/baselines/reference/importCallExpressionInCJS2.types index ce6a014d8038b..ab0c47b6eb6bd 100644 --- a/tests/baselines/reference/importCallExpressionInCJS2.types +++ b/tests/baselines/reference/importCallExpressionInCJS2.types @@ -17,7 +17,7 @@ export function backup() { return "backup"; } === 2.ts === async function compute(promise: Promise) { >compute : (promise: Promise) => Promise -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >promise : Promise > : ^^^^^^^^^^^^ @@ -64,7 +64,7 @@ compute(import("./0")); >compute(import("./0")) : Promise > : ^^^^^^^^^^^^ >compute : (promise: Promise) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpressionInCJS3.types b/tests/baselines/reference/importCallExpressionInCJS3.types index 1621d9f0e6c98..a15a20ad3e5ff 100644 --- a/tests/baselines/reference/importCallExpressionInCJS3.types +++ b/tests/baselines/reference/importCallExpressionInCJS3.types @@ -16,7 +16,7 @@ export class B { // We use Promise for now as there is no way to specify shape of module object function foo(x: Promise) { >foo : (x: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ @@ -24,13 +24,13 @@ function foo(x: Promise) { >x.then(value => { let b = new value.B(); b.print(); }) : Promise > : ^^^^^^^^^^^^^ >x.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value => { let b = new value.B(); b.print(); } : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >value : any let b = new value.B(); @@ -57,7 +57,7 @@ foo(import("./0")); >foo(import("./0")) : void > : ^^^^ >foo : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpressionInCJS5.types b/tests/baselines/reference/importCallExpressionInCJS5.types index 4c67ed9260115..aaab394f010b9 100644 --- a/tests/baselines/reference/importCallExpressionInCJS5.types +++ b/tests/baselines/reference/importCallExpressionInCJS5.types @@ -57,7 +57,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); @@ -159,7 +159,7 @@ export class D { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -167,9 +167,9 @@ export class D { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -191,7 +191,7 @@ export class D { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); diff --git a/tests/baselines/reference/importCallExpressionInSystem1.types b/tests/baselines/reference/importCallExpressionInSystem1.types index f01a3b9d3dfb5..e6b6a7dddffdd 100644 --- a/tests/baselines/reference/importCallExpressionInSystem1.types +++ b/tests/baselines/reference/importCallExpressionInSystem1.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionInSystem2.types b/tests/baselines/reference/importCallExpressionInSystem2.types index b4584afe42f28..f632af1959562 100644 --- a/tests/baselines/reference/importCallExpressionInSystem2.types +++ b/tests/baselines/reference/importCallExpressionInSystem2.types @@ -16,7 +16,7 @@ export class B { // We use Promise for now as there is no way to specify shape of module object function foo(x: Promise) { >foo : (x: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ @@ -24,13 +24,13 @@ function foo(x: Promise) { >x.then(value => { let b = new value.B(); b.print(); }) : Promise > : ^^^^^^^^^^^^^ >x.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value => { let b = new value.B(); b.print(); } : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >value : any let b = new value.B(); @@ -57,7 +57,7 @@ foo(import("./0")); >foo(import("./0")) : void > : ^^^^ >foo : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpressionInSystem4.types b/tests/baselines/reference/importCallExpressionInSystem4.types index 7b28ad5f2039d..89457e72a94dc 100644 --- a/tests/baselines/reference/importCallExpressionInSystem4.types +++ b/tests/baselines/reference/importCallExpressionInSystem4.types @@ -57,7 +57,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); @@ -159,7 +159,7 @@ export class D { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -167,9 +167,9 @@ export class D { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -191,7 +191,7 @@ export class D { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); diff --git a/tests/baselines/reference/importCallExpressionInUMD1.types b/tests/baselines/reference/importCallExpressionInUMD1.types index fd4420c0615d4..dba91104dd84f 100644 --- a/tests/baselines/reference/importCallExpressionInUMD1.types +++ b/tests/baselines/reference/importCallExpressionInUMD1.types @@ -26,13 +26,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo();}) : Promise > : ^^^^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo();} : (zero: typeof import("0")) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionInUMD2.types b/tests/baselines/reference/importCallExpressionInUMD2.types index 80825c72cdab6..05d08bd6d2313 100644 --- a/tests/baselines/reference/importCallExpressionInUMD2.types +++ b/tests/baselines/reference/importCallExpressionInUMD2.types @@ -16,7 +16,7 @@ export class B { // We use Promise for now as there is no way to specify shape of module object function foo(x: Promise) { >foo : (x: Promise) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ @@ -24,13 +24,13 @@ function foo(x: Promise) { >x.then(value => { let b = new value.B(); b.print(); }) : Promise > : ^^^^^^^^^^^^^ >x.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value => { let b = new value.B(); b.print(); } : (value: any) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >value : any let b = new value.B(); @@ -57,7 +57,7 @@ foo(import("./0")); >foo(import("./0")) : void > : ^^^^ >foo : (x: Promise) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >import("./0") : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"./0" : "./0" diff --git a/tests/baselines/reference/importCallExpressionInUMD4.types b/tests/baselines/reference/importCallExpressionInUMD4.types index 467785a91ca86..ce7c826622ecf 100644 --- a/tests/baselines/reference/importCallExpressionInUMD4.types +++ b/tests/baselines/reference/importCallExpressionInUMD4.types @@ -57,7 +57,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -65,9 +65,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); @@ -159,7 +159,7 @@ export class D { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -167,9 +167,9 @@ export class D { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -191,7 +191,7 @@ export class D { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any console.log(err); diff --git a/tests/baselines/reference/importCallExpressionNoModuleKindSpecified.types b/tests/baselines/reference/importCallExpressionNoModuleKindSpecified.types index 3622dde873995..536a40f6a6c49 100644 --- a/tests/baselines/reference/importCallExpressionNoModuleKindSpecified.types +++ b/tests/baselines/reference/importCallExpressionNoModuleKindSpecified.types @@ -58,7 +58,7 @@ class C { >this.myModule.then(Zero => { console.log(Zero.foo()); }, async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); }) : Promise > : ^^^^^^^^^^^^^ >this.myModule.then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this @@ -66,9 +66,9 @@ class C { >myModule : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : (onfulfilled?: (value: typeof import("0")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero => { console.log(Zero.foo()); } : (Zero: typeof import("0")) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Zero : typeof import("0") > : ^^^^^^^^^^^^^^^^^^ @@ -92,7 +92,7 @@ class C { }, async err => { >async err => { console.log(err); let one = await import("./1"); console.log(one.backup()); } : (err: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >err : any > : ^^^ diff --git a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types index e8e92dbac5c35..590aec6c47a9b 100644 --- a/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types +++ b/tests/baselines/reference/importCallExpressionReturnPromiseOfAny.types @@ -110,13 +110,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo(); // ok, zero is any}) : Promise > : ^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo(); // ok, zero is any} : (zero: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >zero : any return zero.foo(); // ok, zero is any @@ -151,7 +151,7 @@ var p3: Promise = import(j=getSpecifier()); function * loadModule(directories: string[]) { >loadModule : (directories: string[]) => Generator -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >directories : string[] > : ^^^^^^^^ diff --git a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types index 6decafddefaf9..b7f454722ddc6 100644 --- a/tests/baselines/reference/importCallExpressionShouldNotGetParen.types +++ b/tests/baselines/reference/importCallExpressionShouldNotGetParen.types @@ -11,7 +11,7 @@ import(`./locales/${localeName}.js`).then(bar => { >import(`./locales/${localeName}.js`).then(bar => { let x = bar;}) : Promise > : ^^^^^^^^^^^^^ >import(`./locales/${localeName}.js`).then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >import(`./locales/${localeName}.js`) : Promise > : ^^^^^^^^^^^^ >`./locales/${localeName}.js` : "./locales/zh-CN.js" @@ -19,9 +19,9 @@ import(`./locales/${localeName}.js`).then(bar => { >localeName : "zh-CN" > : ^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar => { let x = bar;} : (bar: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >bar : any let x = bar; @@ -34,7 +34,7 @@ import("./locales/" + localeName + ".js").then(bar => { >import("./locales/" + localeName + ".js").then(bar => { let x = bar;}) : Promise > : ^^^^^^^^^^^^^ >import("./locales/" + localeName + ".js").then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >import("./locales/" + localeName + ".js") : Promise > : ^^^^^^^^^^^^ >"./locales/" + localeName + ".js" : string @@ -48,9 +48,9 @@ import("./locales/" + localeName + ".js").then(bar => { >".js" : ".js" > : ^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bar => { let x = bar;} : (bar: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >bar : any let x = bar; diff --git a/tests/baselines/reference/importCallExpressionSpecifierNotStringTypeError.types b/tests/baselines/reference/importCallExpressionSpecifierNotStringTypeError.types index 057357f024db6..10fd9e2e5ee7d 100644 --- a/tests/baselines/reference/importCallExpressionSpecifierNotStringTypeError.types +++ b/tests/baselines/reference/importCallExpressionSpecifierNotStringTypeError.types @@ -48,13 +48,13 @@ p1.then(zero => { >p1.then(zero => { return zero.foo(); // ok, zero is any}) : Promise > : ^^^^^^^^^^^^ >p1.then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : Promise > : ^^^^^^^^^^^^ >then : (onfulfilled?: (value: any) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero => { return zero.foo(); // ok, zero is any} : (zero: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >zero : any > : ^^^ diff --git a/tests/baselines/reference/importElisionExportNonExportAndDefault.types b/tests/baselines/reference/importElisionExportNonExportAndDefault.types index 8d73f67003998..cfae94838edd9 100644 --- a/tests/baselines/reference/importElisionExportNonExportAndDefault.types +++ b/tests/baselines/reference/importElisionExportNonExportAndDefault.types @@ -23,19 +23,19 @@ interface MyFunction { msg: string; } export const MyFunction = ({ msg }: MyFunction) => console.log(`Got message "${msg}"`); >MyFunction : ({ msg }: MyFunction) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >({ msg }: MyFunction) => console.log(`Got message "${msg}"`) : ({ msg }: MyFunction) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : >msg : string > : ^^^^^^ >console.log(`Got message "${msg}"`) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >`Got message "${msg}"` : string > : ^^^^^^ >msg : string diff --git a/tests/baselines/reference/importEquals3.types b/tests/baselines/reference/importEquals3.types index ab24b504415fc..00e676811c0e9 100644 --- a/tests/baselines/reference/importEquals3.types +++ b/tests/baselines/reference/importEquals3.types @@ -73,11 +73,11 @@ console.log(x); >console.log(x) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : 0 > : ^ diff --git a/tests/baselines/reference/importHelpers.types b/tests/baselines/reference/importHelpers.types index c69730072128d..d786b11dda4f9 100644 --- a/tests/baselines/reference/importHelpers.types +++ b/tests/baselines/reference/importHelpers.types @@ -23,7 +23,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any >x : number > : ^^^^^^ @@ -32,7 +32,7 @@ class C { function id(x: T) { >id : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -47,7 +47,7 @@ export const result = id`hello world`; >id`hello world` : TemplateStringsArray > : ^^^^^^^^^^^^^^^^^^^^ >id : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >`hello world` : "hello world" > : ^^^^^^^^^^^^^ @@ -74,7 +74,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any >x : number > : ^^^^^^ @@ -83,7 +83,7 @@ class C { function id(x: T) { >id : (x: T) => T -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : T > : ^ @@ -98,14 +98,14 @@ const result = id`hello world`; >id`hello world` : TemplateStringsArray > : ^^^^^^^^^^^^^^^^^^^^ >id : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >`hello world` : "hello world" > : ^^^^^^^^^^^^^ === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -113,14 +113,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -130,7 +130,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -138,13 +138,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function @@ -154,7 +154,7 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; >__makeTemplateObject : (cooked: string[], raw: string[]) => TemplateStringsArray -> : ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >cooked : string[] > : ^^^^^^^^ >raw : string[] diff --git a/tests/baselines/reference/importHelpersAmd.types b/tests/baselines/reference/importHelpersAmd.types index 90c644c154afb..29488bdd09573 100644 --- a/tests/baselines/reference/importHelpersAmd.types +++ b/tests/baselines/reference/importHelpersAmd.types @@ -20,7 +20,7 @@ export class B extends A { } === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -28,21 +28,21 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __rest(t: any, propertyNames: string[]): any; >__rest : (t: any, propertyNames: string[]) => any -> : ^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : any >propertyNames : string[] > : ^^^^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -52,7 +52,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -60,13 +60,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function @@ -76,14 +76,14 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge export declare function __generator(thisArg: any, body: Function): any; >__generator : (thisArg: any, body: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >thisArg : any >body : Function > : ^^^^^^^^ export declare function __exportStar(m: any, exports: any): void; >__exportStar : (m: any, exports: any) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >m : any >exports : any diff --git a/tests/baselines/reference/importHelpersES6.types b/tests/baselines/reference/importHelpersES6.types index 7620c2b4450ad..918648cdbd0f9 100644 --- a/tests/baselines/reference/importHelpersES6.types +++ b/tests/baselines/reference/importHelpersES6.types @@ -33,7 +33,7 @@ declare var dec: any; g(u) { return #x in u; } >g : (u: any) => u is A -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >u : any >#x in u : boolean > : ^^^^^^^ @@ -62,7 +62,7 @@ const y = { ...o }; === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -70,7 +70,7 @@ export declare function __extends(d: Function, b: Function): void; export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -80,7 +80,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -88,13 +88,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function @@ -104,7 +104,7 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge export declare function __classPrivateFieldGet(a: any, b: any, c: any, d: any): any; >__classPrivateFieldGet : (a: any, b: any, c: any, d: any) => any -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : any >b : any >c : any @@ -112,7 +112,7 @@ export declare function __classPrivateFieldGet(a: any, b: any, c: any, d: any): export declare function __classPrivateFieldSet(a: any, b: any, c: any, d: any, e: any): any; >__classPrivateFieldSet : (a: any, b: any, c: any, d: any, e: any) => any -> : ^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : any >b : any >c : any @@ -121,7 +121,7 @@ export declare function __classPrivateFieldSet(a: any, b: any, c: any, d: any, e export declare function __classPrivateFieldIn(a: any, b: any): boolean; >__classPrivateFieldIn : (a: any, b: any) => boolean -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : any >b : any diff --git a/tests/baselines/reference/importHelpersInAmbientContext.types b/tests/baselines/reference/importHelpersInAmbientContext.types index 875313edeef21..ebd41767428d3 100644 --- a/tests/baselines/reference/importHelpersInAmbientContext.types +++ b/tests/baselines/reference/importHelpersInAmbientContext.types @@ -101,7 +101,7 @@ declare namespace N { === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -109,21 +109,21 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __rest(t: any, propertyNames: string[]): any; >__rest : (t: any, propertyNames: string[]) => any -> : ^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >t : any >propertyNames : string[] > : ^^^^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -133,7 +133,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -141,13 +141,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function @@ -157,14 +157,14 @@ export declare function __awaiter(thisArg: any, _arguments: any, P: Function, ge export declare function __generator(thisArg: any, body: Function): any; >__generator : (thisArg: any, body: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >thisArg : any >body : Function > : ^^^^^^^^ export declare function __exportStar(m: any, exports: any): void; >__exportStar : (m: any, exports: any) => void -> : ^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >m : any >exports : any diff --git a/tests/baselines/reference/importHelpersInIsolatedModules.types b/tests/baselines/reference/importHelpersInIsolatedModules.types index 4126bb2c370dd..85f1bbc2d93e5 100644 --- a/tests/baselines/reference/importHelpersInIsolatedModules.types +++ b/tests/baselines/reference/importHelpersInIsolatedModules.types @@ -23,7 +23,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any >x : number > : ^^^^^^ @@ -53,7 +53,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any >x : number > : ^^^^^^ @@ -63,7 +63,7 @@ class C { === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -71,14 +71,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -88,7 +88,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -96,13 +96,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function diff --git a/tests/baselines/reference/importHelpersInTsx.types b/tests/baselines/reference/importHelpersInTsx.types index d9c12ccd9dc05..3d32a7cdead3b 100644 --- a/tests/baselines/reference/importHelpersInTsx.types +++ b/tests/baselines/reference/importHelpersInTsx.types @@ -31,7 +31,7 @@ const x = === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -39,14 +39,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -56,7 +56,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -64,13 +64,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function diff --git a/tests/baselines/reference/importHelpersNoHelpers.types b/tests/baselines/reference/importHelpersNoHelpers.types index aa8bcf8cc917d..a74e3a0ee3952 100644 --- a/tests/baselines/reference/importHelpersNoHelpers.types +++ b/tests/baselines/reference/importHelpersNoHelpers.types @@ -26,7 +26,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any > : ^^^ >x : number @@ -90,7 +90,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any > : ^^^ >x : number diff --git a/tests/baselines/reference/importHelpersNoModule.types b/tests/baselines/reference/importHelpersNoModule.types index 1caa5f17aced3..c3d24ad0aeee0 100644 --- a/tests/baselines/reference/importHelpersNoModule.types +++ b/tests/baselines/reference/importHelpersNoModule.types @@ -25,7 +25,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any > : ^^^ >x : number @@ -58,7 +58,7 @@ class C { method(@dec x: number) { >method : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : any > : ^^^ >x : number diff --git a/tests/baselines/reference/importHelpersOutFile.types b/tests/baselines/reference/importHelpersOutFile.types index da5228cca9b32..af999d02b3515 100644 --- a/tests/baselines/reference/importHelpersOutFile.types +++ b/tests/baselines/reference/importHelpersOutFile.types @@ -30,7 +30,7 @@ export class C extends A { } === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -38,14 +38,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -55,7 +55,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -63,13 +63,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function diff --git a/tests/baselines/reference/importHelpersSystem.types b/tests/baselines/reference/importHelpersSystem.types index c39fd17522755..19c7d184d6df1 100644 --- a/tests/baselines/reference/importHelpersSystem.types +++ b/tests/baselines/reference/importHelpersSystem.types @@ -20,7 +20,7 @@ export class B extends A { } === tslib.d.ts === export declare function __extends(d: Function, b: Function): void; >__extends : (d: Function, b: Function) => void -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >d : Function > : ^^^^^^^^ >b : Function @@ -28,14 +28,14 @@ export declare function __extends(d: Function, b: Function): void; export declare function __assign(t: any, ...sources: any[]): any; >__assign : (t: any, ...sources: any[]) => any -> : ^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ ^^ ^^^^^ >t : any >sources : any[] > : ^^^^^ export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; >__decorate : (decorators: Function[], target: any, key?: string | symbol, desc?: any) => any -> : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >decorators : Function[] > : ^^^^^^^^^^ >target : any @@ -45,7 +45,7 @@ export declare function __decorate(decorators: Function[], target: any, key?: st export declare function __param(paramIndex: number, decorator: Function): Function; >__param : (paramIndex: number, decorator: Function) => Function -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >paramIndex : number > : ^^^^^^ >decorator : Function @@ -53,13 +53,13 @@ export declare function __param(paramIndex: number, decorator: Function): Functi export declare function __metadata(metadataKey: any, metadataValue: any): Function; >__metadata : (metadataKey: any, metadataValue: any) => Function -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >metadataKey : any >metadataValue : any export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; >__awaiter : (thisArg: any, _arguments: any, P: Function, generator: Function) => any -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >thisArg : any >_arguments : any >P : Function diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=amd).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=amd).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=amd).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=amd).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=commonjs).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=commonjs).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=commonjs).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2015).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2015).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2015).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2020).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2020).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=es2020).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=system).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=system).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=system).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=false,module=system).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=amd).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=commonjs).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2015).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2015).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2015).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2020).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2020).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=es2020).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=system).types b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=system).types index b54ad15a4835d..4be4a9f98c18a 100644 --- a/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=system).types +++ b/tests/baselines/reference/importHelpersWithExportStarAs(esmoduleinterop=true,module=system).types @@ -17,6 +17,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=amd).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=amd).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=amd).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=amd).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=commonjs).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=commonjs).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=commonjs).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2015).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2015).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2015).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2020).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2020).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=es2020).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=system).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=system).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=system).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=false,module=system).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=amd).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=commonjs).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2015).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2015).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2015).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2020).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2020).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=es2020).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=system).types b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=system).types index e199a2236b0da..87423d8b5e802 100644 --- a/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=system).types +++ b/tests/baselines/reference/importHelpersWithImportOrExportDefault(esmoduleinterop=true,module=system).types @@ -34,6 +34,6 @@ declare module "tslib" { function __importDefault(m: any): void; >__importDefault : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=amd).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=amd).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=amd).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=amd).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=commonjs).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=commonjs).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=commonjs).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2015).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2015).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2015).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2020).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2020).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=es2020).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=system).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=system).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=system).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=false,module=system).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=amd).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=commonjs).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2015).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2015).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2015).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2015).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2020).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2020).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2020).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=es2020).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=system).types b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=system).types index 2e2974d26db10..3f33963009f95 100644 --- a/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=system).types +++ b/tests/baselines/reference/importHelpersWithImportStarAs(esmoduleinterop=true,module=system).types @@ -21,6 +21,6 @@ declare module "tslib" { function __importStar(m: any): void; >__importStar : (m: any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >m : any } diff --git a/tests/baselines/reference/importMeta(module=commonjs,target=es5).types b/tests/baselines/reference/importMeta(module=commonjs,target=es5).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=commonjs,target=es5).types +++ b/tests/baselines/reference/importMeta(module=commonjs,target=es5).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=commonjs,target=esnext).types b/tests/baselines/reference/importMeta(module=commonjs,target=esnext).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=commonjs,target=esnext).types +++ b/tests/baselines/reference/importMeta(module=commonjs,target=esnext).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=es2020,target=es5).types b/tests/baselines/reference/importMeta(module=es2020,target=es5).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=es2020,target=es5).types +++ b/tests/baselines/reference/importMeta(module=es2020,target=es5).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=es2020,target=esnext).types b/tests/baselines/reference/importMeta(module=es2020,target=esnext).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=es2020,target=esnext).types +++ b/tests/baselines/reference/importMeta(module=es2020,target=esnext).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=esnext,target=es5).types b/tests/baselines/reference/importMeta(module=esnext,target=es5).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=esnext,target=es5).types +++ b/tests/baselines/reference/importMeta(module=esnext,target=es5).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=esnext,target=esnext).types b/tests/baselines/reference/importMeta(module=esnext,target=esnext).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=esnext,target=esnext).types +++ b/tests/baselines/reference/importMeta(module=esnext,target=esnext).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=system,target=es5).types b/tests/baselines/reference/importMeta(module=system,target=es5).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=system,target=es5).types +++ b/tests/baselines/reference/importMeta(module=system,target=es5).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importMeta(module=system,target=esnext).types b/tests/baselines/reference/importMeta(module=system,target=esnext).types index 73c4f91c85dcd..4476dd83c070c 100644 --- a/tests/baselines/reference/importMeta(module=system,target=esnext).types +++ b/tests/baselines/reference/importMeta(module=system,target=esnext).types @@ -18,7 +18,7 @@ >fetch(new URL("../hamsters.jpg", import.meta.url).toString()) : Promise > : ^^^^^^^^^^^^^^^^^ >fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString() : string > : ^^^^^^ >new URL("../hamsters.jpg", import.meta.url).toString : () => string @@ -26,7 +26,7 @@ >new URL("../hamsters.jpg", import.meta.url) : URL > : ^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >"../hamsters.jpg" : "../hamsters.jpg" > : ^^^^^^^^^^^^^^^^^ >import.meta.url : string @@ -84,7 +84,7 @@ >new Image() : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >Image : new (width?: number, height?: number) => HTMLImageElement -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ image.src = URL.createObjectURL(blob); >image.src = URL.createObjectURL(blob) : string @@ -98,11 +98,11 @@ >URL.createObjectURL(blob) : string > : ^^^^^^ >URL.createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >URL : { new (url: string | URL, base?: string | URL): URL; prototype: URL; canParse(url: string | URL, base?: string): boolean; createObjectURL(obj: Blob | MediaSource): string; revokeObjectURL(url: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >createObjectURL : (obj: Blob | MediaSource) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >blob : Blob > : ^^^^ @@ -130,7 +130,7 @@ >document.body.appendChild(image) : HTMLImageElement > : ^^^^^^^^^^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -138,7 +138,7 @@ >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >image : HTMLImageElement > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/importNonExportedMember.types b/tests/baselines/reference/importNonExportedMember.types index 139566bce0e28..612b9735d2c68 100644 --- a/tests/baselines/reference/importNonExportedMember.types +++ b/tests/baselines/reference/importNonExportedMember.types @@ -15,7 +15,7 @@ export { foo, bar as baz }; >bar : () => any > : ^^^^^^^^^ >baz : () => any -> : ^^^^^^^^^ +> : === b.ts === import { foo, bar } from "./a"; diff --git a/tests/baselines/reference/importStatements.types b/tests/baselines/reference/importStatements.types index ef0eaef462e50..5dd8a5af3e15c 100644 --- a/tests/baselines/reference/importStatements.types +++ b/tests/baselines/reference/importStatements.types @@ -116,7 +116,7 @@ module E { export function xDist(x: a.Point) { >xDist : (x: a.Point) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : a.Point > : ^^^^^^^ >a : any diff --git a/tests/baselines/reference/importStatementsInterfaces.types b/tests/baselines/reference/importStatementsInterfaces.types index eb46d9391b7ab..07efd1b59852b 100644 --- a/tests/baselines/reference/importStatementsInterfaces.types +++ b/tests/baselines/reference/importStatementsInterfaces.types @@ -113,7 +113,7 @@ module E { export function xDist(x: a.Point3D) { >xDist : (x: a.Point3D) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : a.Point3D > : ^^^^^^^^^ >a : any diff --git a/tests/baselines/reference/importTag1.types b/tests/baselines/reference/importTag1.types index 81c9e05a84f40..1585882d1217c 100644 --- a/tests/baselines/reference/importTag1.types +++ b/tests/baselines/reference/importTag1.types @@ -17,7 +17,7 @@ export interface Foo { */ function f(foo) {} >f : (foo: Foo) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/importTag15(module=es2015).types b/tests/baselines/reference/importTag15(module=es2015).types index 9becafef76615..36a2ea57bfd9f 100644 --- a/tests/baselines/reference/importTag15(module=es2015).types +++ b/tests/baselines/reference/importTag15(module=es2015).types @@ -11,7 +11,7 @@ export interface I { } /** @param {I} a */ function f(a) {} >f : (a: I) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >a : I > : ^ diff --git a/tests/baselines/reference/importTag15(module=esnext).types b/tests/baselines/reference/importTag15(module=esnext).types index 9becafef76615..36a2ea57bfd9f 100644 --- a/tests/baselines/reference/importTag15(module=esnext).types +++ b/tests/baselines/reference/importTag15(module=esnext).types @@ -11,7 +11,7 @@ export interface I { } /** @param {I} a */ function f(a) {} >f : (a: I) => void -> : ^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ >a : I > : ^ diff --git a/tests/baselines/reference/importTag16.types b/tests/baselines/reference/importTag16.types index ba624ab7a7ed2..0a975f2b9561f 100644 --- a/tests/baselines/reference/importTag16.types +++ b/tests/baselines/reference/importTag16.types @@ -14,7 +14,7 @@ export interface I {} */ export function foo(a, b) {} >foo : (a: Foo, b: I) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^ >a : Foo > : ^^^ >b : I diff --git a/tests/baselines/reference/importTag2.types b/tests/baselines/reference/importTag2.types index 106e6bc727006..8ca48b7a849e6 100644 --- a/tests/baselines/reference/importTag2.types +++ b/tests/baselines/reference/importTag2.types @@ -17,7 +17,7 @@ export interface Foo { */ export function f(foo) {} >f : (foo: types.Foo) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >foo : types.Foo > : ^^^^^^^^^ diff --git a/tests/baselines/reference/importTag3.types b/tests/baselines/reference/importTag3.types index db533e6943c63..0c578617c6865 100644 --- a/tests/baselines/reference/importTag3.types +++ b/tests/baselines/reference/importTag3.types @@ -17,7 +17,7 @@ export default interface Foo { */ export function f(foo) {} >f : (foo: Foo) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/importTag4.types b/tests/baselines/reference/importTag4.types index f68279b45959f..4d5b1e3078b3a 100644 --- a/tests/baselines/reference/importTag4.types +++ b/tests/baselines/reference/importTag4.types @@ -21,7 +21,7 @@ export interface Foo { */ function f(foo) {} >f : (foo: Foo) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/importTag5.types b/tests/baselines/reference/importTag5.types index ee402761c51bb..dcaca0abcfde5 100644 --- a/tests/baselines/reference/importTag5.types +++ b/tests/baselines/reference/importTag5.types @@ -17,7 +17,7 @@ export interface Foo { */ function f(foo) {} >f : (foo: Foo) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >foo : Foo > : ^^^ diff --git a/tests/baselines/reference/importTag6.types b/tests/baselines/reference/importTag6.types index a91a1d70a30ee..b6df22ac87727 100644 --- a/tests/baselines/reference/importTag6.types +++ b/tests/baselines/reference/importTag6.types @@ -26,7 +26,7 @@ export interface B { */ function f(a, b) {} >f : (a: * A, b: * B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : * A > : ^^^^^^^ >b : * B diff --git a/tests/baselines/reference/importTag7.types b/tests/baselines/reference/importTag7.types index de4ca9be27444..e80491c8496c3 100644 --- a/tests/baselines/reference/importTag7.types +++ b/tests/baselines/reference/importTag7.types @@ -25,7 +25,7 @@ export interface B { */ function f(a, b) {} >f : (a: * A, b: * B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >a : * A > : ^^^ >b : * B diff --git a/tests/baselines/reference/importTag8.types b/tests/baselines/reference/importTag8.types index 93f1866ea2b08..06934115aedc9 100644 --- a/tests/baselines/reference/importTag8.types +++ b/tests/baselines/reference/importTag8.types @@ -25,7 +25,7 @@ export interface B { */ function f(a, b) {} >f : (a: A, b: B) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^^^^^^ >a : A > : ^ >b : B diff --git a/tests/baselines/reference/importTag9.types b/tests/baselines/reference/importTag9.types index b6e86ab6bab05..5d4f7d38a0db0 100644 --- a/tests/baselines/reference/importTag9.types +++ b/tests/baselines/reference/importTag9.types @@ -25,7 +25,7 @@ export interface B { */ function f(a, b) {} >f : (a: types.A, b: types.B) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : types.A > : ^^^^^^^ >b : types.B diff --git a/tests/baselines/reference/importTypeGeneric.types b/tests/baselines/reference/importTypeGeneric.types index 2513661cc1e83..2b26cd91c6e36 100644 --- a/tests/baselines/reference/importTypeGeneric.types +++ b/tests/baselines/reference/importTypeGeneric.types @@ -15,7 +15,7 @@ export interface Foo { === usage.ts === export function getFooFrom(v: T): import(T).Foo { >getFooFrom : (v: T) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >v : T > : ^ @@ -28,7 +28,7 @@ export function getFooFrom(v: T): import(T).Foo { export function getFooValueFrom(v: T): import(T).Foo["a"] { >getFooValueFrom : (v: T) => any -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >v : T > : ^ diff --git a/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.types b/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.types index df4619a0c6f88..6f868f8dd39ef 100644 --- a/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.types +++ b/tests/baselines/reference/importTypeGenericArrowTypeParenthesized.types @@ -9,24 +9,24 @@ declare module "module" { export function fn(x: T): Modifier; >fn : (x: T) => Modifier -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } === index.ts === import { fn } from "module"; >fn : (x: T) => import("module").Modifier -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export const fail1 = fn((x: T): T => x); >fail1 : import("module").Modifier<((x: T) => T)> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ >fn((x: T): T => x) : import("module").Modifier<((x: T) => T)> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ >fn : (x: T) => import("module").Modifier -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: T): T => x : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -34,13 +34,13 @@ export const fail1 = fn((x: T): T => x); export const fail2 = fn(function(x: T): T { >fail2 : import("module").Modifier<((x: T) => T)> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ >fn(function(x: T): T { return x;}) : import("module").Modifier<((x: T) => T)> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ >fn : (x: T) => import("module").Modifier -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(x: T): T { return x;} : (x: T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ @@ -52,13 +52,13 @@ export const fail2 = fn(function(x: T): T { export const works1 = fn((x: number) => x); >works1 : import("module").Modifier<(x: number) => number> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >fn((x: number) => x) : import("module").Modifier<(x: number) => number> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >fn : (x: T) => import("module").Modifier -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(x: number) => x : (x: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -76,9 +76,9 @@ export const works2 = fn(x => x); >fn(x => x) : import("module").Modifier > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn : (x: T) => import("module").Modifier -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x => x : (x: T) => T -> : ^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^ >x : T > : ^ >x : T diff --git a/tests/baselines/reference/importTypeInJSDoc.types b/tests/baselines/reference/importTypeInJSDoc.types index 48932ad62c336..fd4d0f9a74d93 100644 --- a/tests/baselines/reference/importTypeInJSDoc.types +++ b/tests/baselines/reference/importTypeInJSDoc.types @@ -5,7 +5,7 @@ declare namespace MyClass { export interface Bar { doer: (x: string) => void; >doer : (x: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : string > : ^^^^^^ } @@ -20,7 +20,7 @@ declare class MyClass { static Bar: (x: string, y?: number) => void; >Bar : (x: string, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >x : string > : ^^^^^^ >y : number @@ -70,15 +70,15 @@ a = new Foo({doer: Foo.Bar}); >Foo : typeof import("externs") > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{doer: Foo.Bar} : { doer: (x: string, y?: number) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^ >doer : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >Foo.Bar : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >Foo : typeof import("externs") > : ^^^^^^^^^^^^^^^^^^^^^^^^ >Bar : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ const q = /** @type {import("./externs").Bar} */({ doer: q => q }); >q : import("externs").Bar @@ -86,11 +86,11 @@ const q = /** @type {import("./externs").Bar} */({ doer: q => q }); >({ doer: q => q }) : import("externs").Bar > : ^^^^^^^^^^^^^^^^^^^^^ >{ doer: q => q } : { doer: (q: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >doer : (q: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >q => q : (q: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : >q : string > : ^^^^^^ >q : string @@ -98,11 +98,11 @@ const q = /** @type {import("./externs").Bar} */({ doer: q => q }); const r = /** @type {typeof import("./externs").Bar} */(r => r); >r : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >(r => r) : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >r => r : (r: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >r : string > : ^^^^^^ >r : string diff --git a/tests/baselines/reference/importedAliasedConditionalTypeInstantiation.types b/tests/baselines/reference/importedAliasedConditionalTypeInstantiation.types index 0a189c85549c1..455bc270d8adc 100644 --- a/tests/baselines/reference/importedAliasedConditionalTypeInstantiation.types +++ b/tests/baselines/reference/importedAliasedConditionalTypeInstantiation.types @@ -83,7 +83,7 @@ declare namespace lambdaTester { event(event: HandlerEvent): this; >event : (event: HandlerEvent) => this -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >event : HandlerEvent > : ^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/importingExportingTypes.types b/tests/baselines/reference/importingExportingTypes.types index 8296707726035..4f80564b60245 100644 --- a/tests/baselines/reference/importingExportingTypes.types +++ b/tests/baselines/reference/importingExportingTypes.types @@ -8,7 +8,7 @@ declare module "fs" { export interface WriteFileOptions {} export function writeFile(path: string, data: any, options: WriteFileOptions, callback: (err: Error) => void): void; >writeFile : (path: string, data: any, options: WriteFileOptions, callback: (err: Error) => void) => void -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >path : string > : ^^^^^^ >data : any @@ -16,7 +16,7 @@ declare module "fs" { >options : WriteFileOptions > : ^^^^^^^^^^^^^^^^ >callback : (err: Error) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >err : Error > : ^^^^^ } @@ -24,7 +24,7 @@ declare module "fs" { === /index.js === import { writeFile, WriteFileOptions, WriteFileOptions as OtherName } from "fs"; >writeFile : (path: string, data: any, options: WriteFileOptions, callback: (err: Error) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >WriteFileOptions : any > : ^^^ >WriteFileOptions : any diff --git a/tests/baselines/reference/importsNotUsedAsValues_error.types b/tests/baselines/reference/importsNotUsedAsValues_error.types index 7affb615903c0..8ace1859d0ec0 100644 --- a/tests/baselines/reference/importsNotUsedAsValues_error.types +++ b/tests/baselines/reference/importsNotUsedAsValues_error.types @@ -37,11 +37,11 @@ console.log(a, b); >console.log(a, b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : A > : ^ >b : B @@ -68,11 +68,11 @@ console.log(a, b); >console.log(a, b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : Default > : ^^^^^^^ >b : named.B @@ -99,11 +99,11 @@ console.log(a, b); >console.log(a, b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : typeof A > : ^^^^^^^^ >b : Default @@ -161,11 +161,11 @@ console.log(c, d); >console.log(c, d) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >c : C.Two > : ^^^^^ >d : C.Two @@ -190,11 +190,11 @@ console.log(c, d); >console.log(c, d) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >c : C > : ^ >d : C.Two @@ -224,11 +224,11 @@ console.log(h); >console.log(h) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >h : H > : ^ diff --git a/tests/baselines/reference/inDoesNotOperateOnPrimitiveTypes.types b/tests/baselines/reference/inDoesNotOperateOnPrimitiveTypes.types index 86aac03b3adf4..892c0ac0bc3fa 100644 --- a/tests/baselines/reference/inDoesNotOperateOnPrimitiveTypes.types +++ b/tests/baselines/reference/inDoesNotOperateOnPrimitiveTypes.types @@ -3,9 +3,9 @@ === inDoesNotOperateOnPrimitiveTypes.ts === const validHasKey = ( >validHasKey : (thing: T, key: string) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >( thing: T, key: string,): boolean => { return key in thing; // Ok} : (thing: T, key: string) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : thing: T, >thing : T @@ -28,9 +28,9 @@ const validHasKey = ( const alsoValidHasKey = ( >alsoValidHasKey : (thing: T, key: string) => boolean -> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >( thing: T, key: string,): boolean => { return key in thing; // Ok (as T may be instantiated with a valid type)} : (thing: T, key: string) => boolean -> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : thing: T, >thing : T @@ -53,7 +53,7 @@ const alsoValidHasKey = ( function invalidHasKey( >invalidHasKey : (thing: T, key: string) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ thing: T, >thing : T @@ -75,7 +75,7 @@ function invalidHasKey( function union1(thing: T | U) { >union1 : (thing: T | U) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >thing : T | U > : ^^^^^ @@ -90,7 +90,7 @@ function union1(thing: T | U) { function union2(thing: T | U) { >union2 : (thing: T | U) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >thing : T | U > : ^^^^^ @@ -124,7 +124,7 @@ function union2(thing: T | U) { function union3(thing: T | string | number) { >union3 : (thing: T | string | number) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >thing : string | number | T > : ^^^^^^^^^^^^^^^^^^^ @@ -168,7 +168,7 @@ function union3(thing: T | string | number) { function union4(thing: T) { >union4 : (thing: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >thing : T > : ^ @@ -183,7 +183,7 @@ function union4(thing: T) { function union5(p: T | U) { >union5 : (p: T | U) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >p : T | U > : ^^^^^ @@ -225,7 +225,7 @@ function union5(p: T | U) function intersection1(thing: T & U) { >intersection1 : (thing: T & U) => void -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >thing : T & U > : ^^^^^ @@ -240,7 +240,7 @@ function intersection1(thing: T & U) { function intersection2(thing: T & (0 | 1 | 2)) { >intersection2 : (thing: T & (0 | 1 | 2)) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >thing : T & (0 | 1 | 2) > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inKeywordAndIntersection.types b/tests/baselines/reference/inKeywordAndIntersection.types index c361a8ab731e3..55de1195a5255 100644 --- a/tests/baselines/reference/inKeywordAndIntersection.types +++ b/tests/baselines/reference/inKeywordAndIntersection.types @@ -19,7 +19,7 @@ class B { b = 0 } function f10(obj: A & { x: string } | B) { >f10 : (obj: (A & { x: string; }) | B) => void -> : ^^^^^^^ ^ ^^^^^^^^^ +> : ^ ^^^ ^ ^^^^^^^^^ >obj : B | (A & { x: string; }) > : ^^^^^^^^^^^^^^ ^^^^ >x : string @@ -70,7 +70,7 @@ const ClassOne = {} as { new(): InstanceOne } & { foo: true }; >ClassOne : (new () => InstanceOne) & { foo: true; } > : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ >{} as { new(): InstanceOne } & { foo: true } : (new () => InstanceOne) & { foo: true; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +> : ^ ^^^^ >{} : {} > : ^^ >foo : true diff --git a/tests/baselines/reference/inKeywordAndUnknown.types b/tests/baselines/reference/inKeywordAndUnknown.types index cfab062a2d813..cc52f321244d3 100644 --- a/tests/baselines/reference/inKeywordAndUnknown.types +++ b/tests/baselines/reference/inKeywordAndUnknown.types @@ -5,7 +5,7 @@ function f(x: {}, y: unknown) { >f : (x: {}, y: unknown) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : {} > : ^^ >y : unknown @@ -64,7 +64,7 @@ function f(x: {}, y: unknown) { function isHTMLTable(table: unknown): boolean { >isHTMLTable : (table: unknown) => boolean -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >table : unknown > : ^^^^^^^ @@ -95,7 +95,7 @@ function isHTMLTable(table: unknown): boolean { function f1(x: unknown) { >f1 : (x: unknown) => unknown -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -122,7 +122,7 @@ function f1(x: unknown) { function f2(x: T) { >f2 : (x: T) => x is T & Object & Record<"a", unknown> -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -149,7 +149,7 @@ function f2(x: T) { function f3(x: {}) { >f3 : (x: {}) => x is Object & Record<"a", unknown> -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : {} > : ^^ @@ -172,7 +172,7 @@ function f3(x: {}) { function f4(x: T) { >f4 : (x: T) => x is T & Object & Record<"a", unknown> -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -195,7 +195,7 @@ function f4(x: T) { function f5(x: T & {}) { >f5 : (x: T & {}) => x is T & Object & Record<"a", unknown> -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T & {} > : ^^^^^^ @@ -218,7 +218,7 @@ function f5(x: T & {}) { function f6(x: T & {}) { >f6 : (x: T & {}) => x is T & Object & Record<"a", unknown> -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -241,7 +241,7 @@ function f6(x: T & {}) { function f7(x: T & {}) { >f7 : (x: T & {}) => x is T & Record<"a", unknown> -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/inKeywordNarrowingWithNoUncheckedIndexedAccess.types b/tests/baselines/reference/inKeywordNarrowingWithNoUncheckedIndexedAccess.types index 8173f4c2e5364..32fae2ad92a17 100644 --- a/tests/baselines/reference/inKeywordNarrowingWithNoUncheckedIndexedAccess.types +++ b/tests/baselines/reference/inKeywordNarrowingWithNoUncheckedIndexedAccess.types @@ -3,13 +3,13 @@ === inKeywordNarrowingWithNoUncheckedIndexedAccess.ts === declare function invariant(condition: boolean): asserts condition; >invariant : (condition: boolean) => asserts condition -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >condition : boolean > : ^^^^^^^ function f1(obj: Record) { >f1 : (obj: Record) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -17,7 +17,7 @@ function f1(obj: Record) { >invariant("test" in obj) : void > : ^^^^ >invariant : (condition: boolean) => asserts condition -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >"test" in obj : boolean > : ^^^^^^^ >"test" : "test" @@ -36,7 +36,7 @@ function f1(obj: Record) { function f2(obj: Record) { >f2 : (obj: Record) => string -> : ^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -63,7 +63,7 @@ function f2(obj: Record) { function f3(obj: Record) { >f3 : (obj: Record) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -104,7 +104,7 @@ function f3(obj: Record) { function f4(obj: Record) { >f4 : (obj: Record) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -120,11 +120,11 @@ function f4(obj: Record) { >obj.hasOwnProperty("test") : boolean > : ^^^^^^^ >obj.hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^^^^^^ >hasOwnProperty : (v: PropertyKey) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >"test" : "test" > : ^^^^^^ diff --git a/tests/baselines/reference/inKeywordTypeguard(strict=false).types b/tests/baselines/reference/inKeywordTypeguard(strict=false).types index a6a973060b135..04e788f25b35d 100644 --- a/tests/baselines/reference/inKeywordTypeguard(strict=false).types +++ b/tests/baselines/reference/inKeywordTypeguard(strict=false).types @@ -15,7 +15,7 @@ class B { b: string; } function negativeClassesTest(x: A | B) { >negativeClassesTest : (x: A | B) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B > : ^^^^^ @@ -56,7 +56,7 @@ function negativeClassesTest(x: A | B) { function positiveClassesTest(x: A | B) { >positiveClassesTest : (x: A | B) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B > : ^^^^^ @@ -109,7 +109,7 @@ class BWithOptionalProp { b?: string; } function positiveTestClassesWithOptionalProperties(x: AWithOptionalProp | BWithOptionalProp) { >positiveTestClassesWithOptionalProperties : (x: AWithOptionalProp | BWithOptionalProp) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithOptionalProp | BWithOptionalProp > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -172,7 +172,7 @@ class BWithMethod { function negativeTestClassesWithMembers(x: AWithMethod | BWithMethod) { >negativeTestClassesWithMembers : (x: AWithMethod | BWithMethod) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithMethod | BWithMethod > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -210,7 +210,7 @@ function negativeTestClassesWithMembers(x: AWithMethod | BWithMethod) { function negativeTestClassesWithMemberMissingInBothClasses(x: AWithMethod | BWithMethod) { >negativeTestClassesWithMemberMissingInBothClasses : (x: AWithMethod | BWithMethod) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : AWithMethod | BWithMethod > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -279,7 +279,7 @@ class D { a: string; } function negativeMultipleClassesTest(x: A | B | C | D) { >negativeMultipleClassesTest : (x: A | B | C | D) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : A | B | C | D > : ^^^^^^^^^^^^^ @@ -326,7 +326,7 @@ class ClassWithUnionProp { prop: A | B } function negativePropTest(x: ClassWithUnionProp) { >negativePropTest : (x: ClassWithUnionProp) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : ClassWithUnionProp > : ^^^^^^^^^^^^^^^^^^ @@ -465,7 +465,7 @@ class UnreachableCodeDetection { function positiveIntersectionTest(x: { a: string } & { b: string }) { >positiveIntersectionTest : (x: { a: string; } & { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } & { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -525,7 +525,7 @@ if ('extra' in error) { function narrowsToNever(x: { l: number } | { r: number }) { >narrowsToNever : (x: { l: number; } | { r: number; }) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >x : { l: number; } | { r: number; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >l : number @@ -601,7 +601,7 @@ type AOrB = { aProp: number } | { bProp: number }; declare function isAOrB(x: unknown): x is AOrB; >isAOrB : (x: unknown) => x is AOrB -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ @@ -613,7 +613,7 @@ if (isAOrB(x)) { >isAOrB(x) : boolean > : ^^^^^^^ >isAOrB : (x: unknown) => x is AOrB -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -680,26 +680,26 @@ function negativeIntersectionTest() { window.ontouchstart >window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ } else { window.ontouchstart >window.ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >window : Window & typeof globalThis > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ontouchstart : ((this: GlobalEventHandlers, ev: TouchEvent) => any) & ((this: Window, ev: TouchEvent) => any) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ } } function f1(x: unknown) { >f1 : (x: unknown) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : unknown > : ^^^^^^^ @@ -835,7 +835,7 @@ function f1(x: unknown) { function f2(x: object) { >f2 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -907,7 +907,7 @@ function f2(x: object) { function f3(x: T) { >f3 : (x: T) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -1043,7 +1043,7 @@ function f3(x: T) { function f4(x: { a: string }) { >f4 : (x: { a: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } > : ^^^^^ ^^^ >a : string @@ -1117,7 +1117,7 @@ function f4(x: { a: string }) { function f5(x: { a: string } | { b: string }) { >f5 : (x: { a: string; } | { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } | { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -1158,7 +1158,7 @@ function f5(x: { a: string } | { b: string }) { function f6(x: { a: string } | { b: string }) { >f6 : (x: { a: string; } | { b: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } | { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ >a : string @@ -1201,7 +1201,7 @@ function f6(x: { a: string } | { b: string }) { function f7(x: { a: string, b: number }, y: { a: string } & { b: number }) { >f7 : (x: { a: string; b: number; }, y: { a: string; } & { b: number; }) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : string @@ -1261,7 +1261,7 @@ const sym = Symbol(); function f8(x: object) { >f8 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -1333,7 +1333,7 @@ function f8(x: object) { function f9(x: object) { >f9 : (x: object) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : object > : ^^^^^^ @@ -1405,7 +1405,7 @@ function f9(x: object) { function f10(x: { a: unknown }) { >f10 : (x: { a: unknown; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: unknown; } > : ^^^^^ ^^^ >a : unknown @@ -1432,7 +1432,7 @@ function f10(x: { a: unknown }) { function f11(x: { a: any }) { >f11 : (x: { a: any; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: any; } > : ^^^^^ ^^^ >a : any @@ -1459,7 +1459,7 @@ function f11(x: { a: any }) { function f12(x: { a: string }) { >f12 : (x: { a: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string; } > : ^^^^^ ^^^ >a : string @@ -1486,7 +1486,7 @@ function f12(x: { a: string }) { function f13(x: { a?: string }) { >f13 : (x: { a?: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a?: string; } > : ^^^^^^ ^^^ >a : string @@ -1513,7 +1513,7 @@ function f13(x: { a?: string }) { function f14(x: { a: string | undefined }) { >f14 : (x: { a: string | undefined; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a: string | undefined; } > : ^^^^^ ^^^ >a : string @@ -1540,7 +1540,7 @@ function f14(x: { a: string | undefined }) { function f15(x: { a?: string | undefined }) { >f15 : (x: { a?: string | undefined; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { a?: string | undefined; } > : ^^^^^^ ^^^ >a : string @@ -1567,7 +1567,7 @@ function f15(x: { a?: string | undefined }) { function f16(x: typeof globalThis, y: Window & typeof globalThis) { >f16 : (x: typeof globalThis, y: Window & typeof globalThis) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >globalThis : typeof globalThis @@ -1590,7 +1590,7 @@ function f16(x: typeof globalThis, y: Window & typeof globalThis) { function foo(value: A) { >foo : (value: A) => void -> : ^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >value : A > : ^ @@ -1630,7 +1630,7 @@ const checkIsTouchDevice = () => >checkIsTouchDevice : () => boolean > : ^^^^^^^^^^^^^ >() => "ontouchstart" in window || "msMaxTouchPoints" in window.navigator : () => boolean -> : ^^^^^^^^^^^^^ +> : "ontouchstart" in window || "msMaxTouchPoints" in window.navigator; >"ontouchstart" in window || "msMaxTouchPoints" in window.navigator : boolean @@ -1656,7 +1656,7 @@ const checkIsTouchDevice = () => function isHTMLTable(table: T): boolean { >isHTMLTable : (table: T) => boolean -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >table : T > : ^ @@ -1681,9 +1681,9 @@ function isHTMLTable(table: T): boolean { const f =

    -> : ^ ^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : >a : p > : ^ >b : p @@ -63,15 +63,15 @@ Point.zero = (): Point => Point(0, 0); >Point.zero : () => Point > : ^^^^^^ >Point : { (x: number, y: number): Point; zero(): Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >zero : () => Point > : ^^^^^^^^^^^ >(): Point => Point(0, 0) : () => Point -> : ^^^^^^ +> : >Point(0, 0) : Point > : ^^^^^ >Point : { (x: number, y: number): Point; zero(): Point; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >0 : 0 diff --git a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.types b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.types index 2434beeeb3539..36b0485b50a79 100644 --- a/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.types +++ b/tests/baselines/reference/declarationEmitExportAliasVisibiilityMarking.types @@ -24,7 +24,7 @@ import { Suit, Rank } from './Types'; export default (suit: Suit, rank: Rank) => ({suit, rank}); >(suit: Suit, rank: Rank) => ({suit, rank}) : (suit: Suit, rank: Rank) => { suit: Suit; rank: Rank; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >suit : Suit > : ^^^^ >rank : Rank @@ -41,29 +41,29 @@ export default (suit: Suit, rank: Rank) => ({suit, rank}); === index.ts === export let lazyCard = () => import('./Card').then(a => a.default); >lazyCard : () => Promise<(suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => import('./Card').then(a => a.default) : () => Promise<(suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >import('./Card').then(a => a.default) : Promise<(suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >import('./Card').then : (onfulfilled?: (value: typeof import("Card")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >import('./Card') : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'./Card' : "./Card" > : ^^^^^^^^ >then : (onfulfilled?: (value: typeof import("Card")) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a => a.default : (a: typeof import("Card")) => (suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : typeof import("Card") > : ^^^^^^^^^^^^^^^^^^^^^ >a.default : (suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : typeof import("Card") > : ^^^^^^^^^^^^^^^^^^^^^ >default : (suit: import("Types").Suit, rank: import("Types").Rank) => { suit: import("Types").Suit; rank: import("Types").Rank; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export { Suit, Rank } from './Types'; >Suit : any diff --git a/tests/baselines/reference/declarationEmitExpressionInExtends.types b/tests/baselines/reference/declarationEmitExpressionInExtends.types index f87803cdc2a7b..96ffbe2b35d40 100644 --- a/tests/baselines/reference/declarationEmitExpressionInExtends.types +++ b/tests/baselines/reference/declarationEmitExpressionInExtends.types @@ -3,7 +3,7 @@ === declarationEmitExpressionInExtends.ts === var x: { >x : new (s: any) => Q -> : ^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ new(s: any): Q; >s : any diff --git a/tests/baselines/reference/declarationEmitExpressionInExtends2.types b/tests/baselines/reference/declarationEmitExpressionInExtends2.types index be97c97efb923..87d5ec07c9c34 100644 --- a/tests/baselines/reference/declarationEmitExpressionInExtends2.types +++ b/tests/baselines/reference/declarationEmitExpressionInExtends2.types @@ -16,7 +16,7 @@ class C { function getClass(c: T) { >getClass : (c: T) => typeof C -> : ^ ^^^^^ ^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >c : T > : ^ @@ -31,7 +31,7 @@ class MyClass extends getClass(2) { >getClass(2) : C > : ^^^^^^^^^^^^^^^^^ >getClass : (c: T) => typeof C -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^ >2 : 2 > : ^ } diff --git a/tests/baselines/reference/declarationEmitExpressionInExtends3.types b/tests/baselines/reference/declarationEmitExpressionInExtends3.types index 88fd3bd1e5d54..c7bc864231b58 100644 --- a/tests/baselines/reference/declarationEmitExpressionInExtends3.types +++ b/tests/baselines/reference/declarationEmitExpressionInExtends3.types @@ -37,7 +37,7 @@ interface LocalInterface { function getLocalClass(c: T) { >getLocalClass : (c: T) => typeof LocalClass -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >c : T > : ^ @@ -48,7 +48,7 @@ function getLocalClass(c: T) { function getExportedClass(c: T) { >getExportedClass : (c: T) => typeof ExportedClass -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >c : T > : ^ @@ -65,7 +65,7 @@ export class MyClass extends getLocalClass(undefined)getLocalClass(undefined) : LocalClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >getLocalClass : (c: T) => typeof LocalClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ } @@ -77,7 +77,7 @@ export class MyClass2 extends getExportedClass(undefined)getExportedClass(undefined) : ExportedClass > : ^^^^^^^^^^^^^^^^^^^^^ >getExportedClass : (c: T) => typeof ExportedClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ } @@ -89,7 +89,7 @@ export class MyClass3 extends getExportedClass(undefined)getExportedClass(undefined) : ExportedClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getExportedClass : (c: T) => typeof ExportedClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ } @@ -101,7 +101,7 @@ export class MyClass4 extends getExportedClass(undefined)getExportedClass(undefined) : ExportedClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getExportedClass : (c: T) => typeof ExportedClass -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitExpressionWithNonlocalPrivateUniqueSymbol.types b/tests/baselines/reference/declarationEmitExpressionWithNonlocalPrivateUniqueSymbol.types index 32b96dab1a552..a3c2960674c3d 100644 --- a/tests/baselines/reference/declarationEmitExpressionWithNonlocalPrivateUniqueSymbol.types +++ b/tests/baselines/reference/declarationEmitExpressionWithNonlocalPrivateUniqueSymbol.types @@ -24,5 +24,5 @@ export const A1 = A; >A1 : { readonly A: unique symbol; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >A : { readonly A: unique symbol; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/declarationEmitFBoundedTypeParams.types b/tests/baselines/reference/declarationEmitFBoundedTypeParams.types index be9986abd14c0..ffe2283156fe9 100644 --- a/tests/baselines/reference/declarationEmitFBoundedTypeParams.types +++ b/tests/baselines/reference/declarationEmitFBoundedTypeParams.types @@ -5,7 +5,7 @@ function append(result: a[], value: b): a[] { >append : (result: a[], value: b) => a[] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >result : a[] > : ^^^ >value : b @@ -15,11 +15,11 @@ function append(result: a[], value: b): a[] { >result.push(value) : number > : ^^^^^^ >result.push : (...items: a[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >result : a[] > : ^^^ >push : (...items: a[]) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >value : b > : ^ diff --git a/tests/baselines/reference/declarationEmitForDefaultExportClassExtendingExpression01.types b/tests/baselines/reference/declarationEmitForDefaultExportClassExtendingExpression01.types index 63632f2d60941..448ca9d03b32a 100644 --- a/tests/baselines/reference/declarationEmitForDefaultExportClassExtendingExpression01.types +++ b/tests/baselines/reference/declarationEmitForDefaultExportClassExtendingExpression01.types @@ -29,7 +29,7 @@ const getGreeterBase = (): GreeterConstructor => A; >getGreeterBase : () => GreeterConstructor > : ^^^^^^ >(): GreeterConstructor => A : () => GreeterConstructor -> : ^^^^^^ +> : >A : typeof A > : ^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.types b/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.types index e86c8c804c313..dfd659796fdde 100644 --- a/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.types +++ b/tests/baselines/reference/declarationEmitForModuleImportingModuleAugmentationRetainsImport.types @@ -12,7 +12,7 @@ declare module './parent' { interface ParentThing { add: (a: number, b: number) => number; >add : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >a : number > : ^^^^^^ >b : number @@ -22,21 +22,21 @@ declare module './parent' { export function child1(prototype: ParentThing) { >child1 : (prototype: ParentThing) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >prototype : ParentThing > : ^^^^^^^^^^^ prototype.add = (a: number, b: number) => a + b; >prototype.add = (a: number, b: number) => a + b : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >prototype.add : (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >prototype : ParentThing > : ^^^^^^^^^^^ >add : (a: number, b: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >(a: number, b: number) => a + b : (a: number, b: number) => number -> : ^^^^ ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -52,7 +52,7 @@ export function child1(prototype: ParentThing) { === parent.ts === import { child1 } from './child1'; // this import should still exist in some form in the output, since it augments this module >child1 : (prototype: ParentThing) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ export class ParentThing implements ParentThing {} >ParentThing : ParentThing @@ -62,7 +62,7 @@ child1(ParentThing.prototype); >child1(ParentThing.prototype) : void > : ^^^^ >child1 : (prototype: ParentThing) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >ParentThing.prototype : ParentThing > : ^^^^^^^^^^^ >ParentThing : typeof ParentThing diff --git a/tests/baselines/reference/declarationEmitGlobalThisPreserved.types b/tests/baselines/reference/declarationEmitGlobalThisPreserved.types index 7fc6cd766769d..11079df126280 100644 --- a/tests/baselines/reference/declarationEmitGlobalThisPreserved.types +++ b/tests/baselines/reference/declarationEmitGlobalThisPreserved.types @@ -12,698 +12,698 @@ export const a1 = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; >a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const a2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; >a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : export const a3 = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; >a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const a4 = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; >a4 : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const aObj = { >aObj : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^^ ^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^ ^^ ^^^^^ ^^^ >{ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN,} : { a1: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN; a3: (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN; a4: (isNaN: number) => typeof globalThis.isNaN; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ^^^^^ ^^^ +> : ^^^^^^ ^^^^^^ ^ ^^^^^^ ^^^^^^ ^^^ a1: (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN, >a1 : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN, >a2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : a3: (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar, >a3 : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ a4: (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN, >a4 : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export type a4Return = ReturnType>; >a4Return : boolean > : ^^^^^^^ >a4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ export type a4oReturn = ReturnType>; >a4oReturn : boolean > : ^^^^^^^ ->aObj : { a1: (isNaN: (number: number) => boolean) => (number: number) => boolean; a2: (isNaN: (number: number) => boolean, bar?: (number: number) => boolean) => (number: number) => boolean; a3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>aObj : { a1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; a2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; a3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; a4: (isNaN: number) => (number: number) => boolean; } +> : ^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^ export const b1 = (isNaN: typeof globalThis.isNaN) => isNaN; >b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const b2 = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN; >b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : export const b3 = (isNaN: number, bar: typeof globalThis.isNaN) => bar; >b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const b4 = (isNaN: number) => globalThis.isNaN; >b4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: number) => globalThis.isNaN : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const bObj = { >bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ b1: (isNaN: typeof globalThis.isNaN) => isNaN, b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, b4: (isNaN: number) => globalThis.isNaN,} : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^ ^ ^^^^^^ ^^^^^^ ^^^ b1: (isNaN: typeof globalThis.isNaN) => isNaN, >b1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: typeof globalThis.isNaN) => isNaN : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN, >b2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : b3: (isNaN: number, bar: typeof globalThis.isNaN) => bar, >b3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: number, bar: typeof globalThis.isNaN) => bar : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ b4: (isNaN: number) => globalThis.isNaN, >b4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >(isNaN: number) => globalThis.isNaN : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export type b4Return = ReturnType>; >b4Return : boolean > : ^^^^^^^ >b4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ export type b4oReturn = ReturnType>; >b4oReturn : boolean > : ^^^^^^^ ->bObj : { b1: (isNaN: (number: number) => boolean) => (number: number) => boolean; b2: (isNaN: (number: number) => boolean, bar?: (number: number) => boolean) => (number: number) => boolean; b3: (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>bObj : { b1: (isNaN: typeof globalThis.isNaN) => (number: number) => boolean; b2: (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean; b3: (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean; b4: (isNaN: number) => (number: number) => boolean; } +> : ^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^ export function c1(isNaN: typeof globalThis.isNaN) { return isNaN } >c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export function c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } >c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : export function c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } >c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export function c4(isNaN: number) { return globalThis.isNaN; } >c4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export const cObj = { >cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ >{ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, c4(isNaN: number) { return globalThis.isNaN; },} : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ c1(isNaN: typeof globalThis.isNaN) { return isNaN }, >c1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN }, >c2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : c3(isNaN: number, bar: typeof globalThis.isNaN) { return bar }, >c3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ c4(isNaN: number) { return globalThis.isNaN; }, >c4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export type c4Return = ReturnType>; >c4Return : boolean > : ^^^^^^^ >c4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ export type c4oReturn = ReturnType>; >c4oReturn : boolean > : ^^^^^^^ ->cObj : { c1(isNaN: (number: number) => boolean): (number: number) => boolean; c2(isNaN: (number: number) => boolean, bar?: (number: number) => boolean): (number: number) => boolean; c3(isNaN: number, bar: (number: number) => boolean): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>cObj : { c1(isNaN: typeof globalThis.isNaN): (number: number) => boolean; c2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): (number: number) => boolean; c3(isNaN: number, bar: typeof globalThis.isNaN): (number: number) => boolean; c4(isNaN: number): (number: number) => boolean; } +> : ^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ export function d1() { >d1 : () => () => (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^ const fn = (isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN; >fn : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN => isNaN : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return function() { return fn }; ->function() { return fn } : () => (isNaN: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->fn : (isNaN: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function() { return fn } : () => (isNaN: typeof globalThis.isNaN) => (number: number) => boolean +> : ^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>fn : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ } export function d2() { >d2 : () => () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ const fn = (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN; >fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN): typeof globalThis.isNaN => bar ?? isNaN : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return function() { return fn }; ->function() { return fn } : () => (isNaN: (number: number) => boolean, bar?: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->fn : (isNaN: (number: number) => boolean, bar?: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function() { return fn } : () => (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>fn : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ } export function d3() { >d3 : () => () => (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ const fn = (isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar; >fn : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >(isNaN: number, bar: typeof globalThis.isNaN): typeof globalThis.isNaN => bar : (isNaN: number, bar: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return function() { return fn }; ->function() { return fn } : () => (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->fn : (isNaN: number, bar: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function() { return fn } : () => (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>fn : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ } export function d4() { >d4 : () => () => (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^ const fn = (isNaN: number): typeof globalThis.isNaN => globalThis.isNaN; >fn : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(isNaN: number): typeof globalThis.isNaN => globalThis.isNaN : (isNaN: number) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return function() { return fn }; >function() { return fn } : () => (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >fn : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ } export type d4Return = ReturnType>>>; >d4Return : boolean > : ^^^^^^^ >d4 : () => () => (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ export class A { >A : A @@ -711,143 +711,143 @@ export class A { method1(isNaN: typeof globalThis.isNaN) { return isNaN } >method1 : (isNaN: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ method2(isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) { return bar ?? isNaN } >method2 : (isNaN: typeof globalThis.isNaN, bar?: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar ?? isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : method3(isNaN: number, bar: typeof globalThis.isNaN) { return bar } >method3 : (isNaN: number, bar: typeof globalThis.isNaN) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ method4(isNaN: number) { return globalThis.isNaN; } >method4 : (isNaN: number) => (number: number) => boolean -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export function fromParameter(isNaN: number, bar: typeof globalThis.isNaN) { >fromParameter : (isNaN: number, bar: typeof globalThis.isNaN) => () => { bar: (number: number) => boolean; } -> : ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >isNaN : number > : ^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return function() { return { bar } }; >function() { return { bar } } : () => { bar: (number: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ bar } : { bar: (number: number) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >bar : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } // Non-inference cases. export const explicitlyTypedVariable: (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN = (isNaN) => isNaN; >explicitlyTypedVariable : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(isNaN) => isNaN : (isNaN: (number: number) => boolean) => (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^ ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ export function explicitlyTypedFunction(isNaN: typeof globalThis.isNaN): typeof globalThis.isNaN { >explicitlyTypedFunction : (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ return isNaN; >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ }; @@ -857,13 +857,13 @@ export type AsObjectProperty = { isNaN: typeof globalThis.isNaN; >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export class AsClassProperty { @@ -872,31 +872,31 @@ export class AsClassProperty { isNaN?: typeof globalThis.isNaN; >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ } export type AsFunctionType = (isNaN: typeof globalThis.isNaN) => typeof globalThis.isNaN; >AsFunctionType : AsFunctionType > : ^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis.isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >globalThis : typeof globalThis > : ^^^^^^^^^^^^^^^^^ >isNaN : (number: number) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitIdentifierPredicates01.types b/tests/baselines/reference/declarationEmitIdentifierPredicates01.types index afff19db61d61..327c4817e89e5 100644 --- a/tests/baselines/reference/declarationEmitIdentifierPredicates01.types +++ b/tests/baselines/reference/declarationEmitIdentifierPredicates01.types @@ -3,7 +3,7 @@ === declarationEmitIdentifierPredicates01.ts === export function f(x: any): x is number { >f : (x: any) => x is number -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any return typeof x === "number"; diff --git a/tests/baselines/reference/declarationEmitIdentifierPredicatesWithPrivateName01.types b/tests/baselines/reference/declarationEmitIdentifierPredicatesWithPrivateName01.types index 81db14d32a7d9..7930ae3f5fe6e 100644 --- a/tests/baselines/reference/declarationEmitIdentifierPredicatesWithPrivateName01.types +++ b/tests/baselines/reference/declarationEmitIdentifierPredicatesWithPrivateName01.types @@ -9,7 +9,7 @@ interface I { export function f(x: any): x is I { >f : (x: any) => x is I -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any return typeof x.a === "number"; diff --git a/tests/baselines/reference/declarationEmitIndexTypeArray.types b/tests/baselines/reference/declarationEmitIndexTypeArray.types index 5c3e55cfc9d75..7b17b058a4ede 100644 --- a/tests/baselines/reference/declarationEmitIndexTypeArray.types +++ b/tests/baselines/reference/declarationEmitIndexTypeArray.types @@ -3,19 +3,19 @@ === declarationEmitIndexTypeArray.ts === function doSomethingWithKeys(...keys: (keyof T)[]) { } >doSomethingWithKeys : (...keys: (keyof T)[]) => void -> : ^ ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >keys : (keyof T)[] > : ^^^^^^^^^^^ const utilityFunctions = { >utilityFunctions : { doSomethingWithKeys: (...keys: (keyof T)[]) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^ >{ doSomethingWithKeys} : { doSomethingWithKeys: (...keys: (keyof T)[]) => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ doSomethingWithKeys >doSomethingWithKeys : (...keys: (keyof T)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ }; diff --git a/tests/baselines/reference/declarationEmitInlinedDistributiveConditional.types b/tests/baselines/reference/declarationEmitInlinedDistributiveConditional.types index 4c05f7ca1e529..d086d31590250 100644 --- a/tests/baselines/reference/declarationEmitInlinedDistributiveConditional.types +++ b/tests/baselines/reference/declarationEmitInlinedDistributiveConditional.types @@ -3,17 +3,17 @@ === test.ts === import {dropPrivateProps1, dropPrivateProps2} from './api'; >dropPrivateProps1 : (obj: Obj) => { [K in import("internal").PublicKeys1]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >dropPrivateProps2 : (obj: Obj) => { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const a = dropPrivateProps1({foo: 42, _bar: 'secret'}); // type is {foo: number} >a : { foo: number; } > : ^^^^^^^^^^^^^^^^ >dropPrivateProps1({foo: 42, _bar: 'secret'}) : { foo: number; } -> : ^^^^^^^^^^^^^^^^ +> : >dropPrivateProps1 : (obj: Obj) => { [K in import("internal").PublicKeys1]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{foo: 42, _bar: 'secret'} : { foo: number; _bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -30,9 +30,9 @@ const b = dropPrivateProps2({foo: 42, _bar: 'secret'}); // type is {foo: number, >b : { foo: number; } > : ^^^^^^^^^^^^^^^^ >dropPrivateProps2({foo: 42, _bar: 'secret'}) : { foo: number; } -> : ^^^^^^^^^^^^^^^^ +> : >dropPrivateProps2 : (obj: Obj) => { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{foo: 42, _bar: 'secret'} : { foo: number; _bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -49,48 +49,48 @@ const b = dropPrivateProps2({foo: 42, _bar: 'secret'}); // type is {foo: number, === api.ts === import {excludePrivateKeys1, excludePrivateKeys2} from './internal'; >excludePrivateKeys1 : (obj: Obj) => { [K in import("internal").PublicKeys1]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >excludePrivateKeys2 : (obj: Obj) => { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export const dropPrivateProps1 = (obj: Obj) => excludePrivateKeys1(obj); >dropPrivateProps1 : (obj: Obj) => { [K in import("internal").PublicKeys1]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(obj: Obj) => excludePrivateKeys1(obj) : (obj: Obj) => { [K in import("internal").PublicKeys1]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >obj : Obj > : ^^^ >excludePrivateKeys1(obj) : { [K in import("internal").PublicKeys1]: Obj[K]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >excludePrivateKeys1 : (obj: Obj_1) => { [K in import("internal").PublicKeys1]: Obj_1[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Obj > : ^^^ export const dropPrivateProps2 = (obj: Obj) => excludePrivateKeys2(obj); >dropPrivateProps2 : (obj: Obj) => { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(obj: Obj) => excludePrivateKeys2(obj) : (obj: Obj) => { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >obj : Obj > : ^^^ >excludePrivateKeys2(obj) : { [K in keyof Obj extends infer T ? T extends keyof Obj ? T extends `_${string}` ? never : T : never : never]: Obj[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >excludePrivateKeys2 : (obj: Obj_1) => { [K in keyof Obj_1 extends infer T ? T extends keyof Obj_1 ? T extends `_${string}` ? never : T : never : never]: Obj_1[K]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Obj > : ^^^ === internal.ts === export declare function excludePrivateKeys1(obj: Obj): {[K in PublicKeys1]: Obj[K]}; >excludePrivateKeys1 : (obj: Obj) => { [K in PublicKeys1]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : Obj > : ^^^ export declare function excludePrivateKeys2(obj: Obj): {[K in PublicKeys2]: Obj[K]}; >excludePrivateKeys2 : (obj: Obj) => { [K in PublicKeys2]: Obj[K]; } -> : ^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >obj : Obj > : ^^^ diff --git a/tests/baselines/reference/declarationEmitKeywordDestructuring.types b/tests/baselines/reference/declarationEmitKeywordDestructuring.types index 590174262c7c2..7cb220e22f732 100644 --- a/tests/baselines/reference/declarationEmitKeywordDestructuring.types +++ b/tests/baselines/reference/declarationEmitKeywordDestructuring.types @@ -33,7 +33,7 @@ type P = { function f1({ enum: _enum, ...rest }: P) { >f1 : ({ enum: _enum, ...rest }: P) => { function: boolean; abstract: boolean; async: boolean; await: boolean; one: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >enum : any > : ^^^ >_enum : boolean @@ -48,7 +48,7 @@ function f1({ enum: _enum, ...rest }: P) { function f2({ function: _function, ...rest }: P) { >f2 : ({ function: _function, ...rest }: P) => { enum: boolean; abstract: boolean; async: boolean; await: boolean; one: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function : any > : ^^^ >_function : boolean @@ -63,7 +63,7 @@ function f2({ function: _function, ...rest }: P) { function f3({ abstract: _abstract, ...rest }: P) { >f3 : ({ abstract: _abstract, ...rest }: P) => { enum: boolean; function: boolean; async: boolean; await: boolean; one: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >abstract : any > : ^^^ >_abstract : boolean @@ -78,7 +78,7 @@ function f3({ abstract: _abstract, ...rest }: P) { function f4({ async: _async, ...rest }: P) { >f4 : ({ async: _async, ...rest }: P) => { enum: boolean; function: boolean; abstract: boolean; await: boolean; one: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >async : any > : ^^^ >_async : boolean @@ -93,7 +93,7 @@ function f4({ async: _async, ...rest }: P) { function f5({ await: _await, ...rest }: P) { >f5 : ({ await: _await, ...rest }: P) => { enum: boolean; function: boolean; abstract: boolean; async: boolean; one: boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await : any > : ^^^ >_await : boolean diff --git a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types index 51959c4d4e528..06d56488b1f18 100644 --- a/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types +++ b/tests/baselines/reference/declarationEmitLambdaWithMissingTypeParameterNoCrash.types @@ -4,13 +4,13 @@ export interface Foo { preFetch: (c: T1) => void; // Type T2 is not defined >preFetch : (c: T1) => void -> : ^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ >c : T1 > : ^^ preFetcher: new (c: T1) => void; // Type T2 is not defined >preFetcher : new (c: T1) => void -> : ^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^ ^^^^^^^^^^^^^ ^^ ^^^^^ >c : T1 > : ^^ } diff --git a/tests/baselines/reference/declarationEmitLateBoundAssignments2.types b/tests/baselines/reference/declarationEmitLateBoundAssignments2.types index 72e3e7bd20533..67076324b8619 100644 --- a/tests/baselines/reference/declarationEmitLateBoundAssignments2.types +++ b/tests/baselines/reference/declarationEmitLateBoundAssignments2.types @@ -197,7 +197,7 @@ export const arrow = () => {} >arrow : { (): void; B: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; B: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow["B"] = 'bar' >arrow["B"] = 'bar' : "bar" @@ -215,7 +215,7 @@ export const arrow2 = () => {} >arrow2 : { (): void; C: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; C: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow2[c] = 100 >arrow2[c] = 100 : 100 @@ -233,7 +233,7 @@ export const arrow3 = () => {} >arrow3 : { (): void; 77: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; 77: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow3[77] = 0 >arrow3[77] = 0 : 0 @@ -251,7 +251,7 @@ export const arrow4 = () => {} >arrow4 : { (): void; 1: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; 1: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow4[num] = 0 >arrow4[num] = 0 : 0 @@ -269,7 +269,7 @@ export const arrow5 = () => {} >arrow5 : { (): void; "101": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "101": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow5["101"] = 0 >arrow5["101"] = 0 : 0 @@ -287,7 +287,7 @@ export const arrow6 = () => {} >arrow6 : { (): void; "10": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "10": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow6[numStr] = 0 >arrow6[numStr] = 0 : 0 @@ -305,7 +305,7 @@ export const arrow7 = () => {} >arrow7 : { (): void; "qwe rty": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "qwe rty": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow7["qwe rty"] = 0 >arrow7["qwe rty"] = 0 : 0 @@ -323,7 +323,7 @@ export const arrow8 = () => {} >arrow8 : { (): void; "foo bar": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "foo bar": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow8[withWhitespace] = 0 >arrow8[withWhitespace] = 0 : 0 @@ -341,7 +341,7 @@ export const arrow9 = () => {} >arrow9 : { (): void; "\uD83E\uDD2A": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "\uD83E\uDD2A": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow9["🤪"] = 0 >arrow9["🤪"] = 0 : 0 @@ -359,7 +359,7 @@ export const arrow10 = () => {} >arrow10 : { (): void; "\uD83E\uDD37\u200D\u2642\uFE0F": number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : { (): void; "\uD83E\uDD37\u200D\u2642\uFE0F": number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : arrow10[emoji] = 0 >arrow10[emoji] = 0 : 0 diff --git a/tests/baselines/reference/declarationEmitLocalClassDeclarationMixin.types b/tests/baselines/reference/declarationEmitLocalClassDeclarationMixin.types index 9185076b9b7af..c3ac273a20070 100644 --- a/tests/baselines/reference/declarationEmitLocalClassDeclarationMixin.types +++ b/tests/baselines/reference/declarationEmitLocalClassDeclarationMixin.types @@ -7,7 +7,7 @@ interface Constructor { new (...args: any[]): C; } function mixin>(Base: B) { >mixin : >(Base: B) => { new (...args: any[]): PrivateMixed; prototype: mixin.PrivateMixed; } & B -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >Base : B > : ^ @@ -25,7 +25,7 @@ function mixin>(Base: B) { } return PrivateMixed; >PrivateMixed : { new (...args: any[]): PrivateMixed; prototype: mixin.PrivateMixed; } & B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ } export class Unmixed { @@ -41,17 +41,17 @@ export class Unmixed { export const Mixed = mixin(Unmixed); >Mixed : { new (...args: any[]): mixin.PrivateMixed; prototype: mixin.PrivateMixed; } & typeof Unmixed -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mixin(Unmixed) : { new (...args: any[]): mixin.PrivateMixed; prototype: mixin.PrivateMixed; } & typeof Unmixed -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ >mixin : >(Base: B) => { new (...args: any[]): PrivateMixed; prototype: mixin.PrivateMixed; } & B -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >Unmixed : typeof Unmixed > : ^^^^^^^^^^^^^^ function Filter>(ctor: C) { >Filter : >(ctor: C) => ((abstract new (...args: any[]) => FilterMixin) & { prototype: Filter.FilterMixin; }) & C -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >ctor : C > : ^ @@ -63,7 +63,7 @@ function Filter>(ctor: C) { abstract match(path: string): boolean; >match : (path: string) => boolean -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >path : string > : ^^^^^^ @@ -76,22 +76,22 @@ function Filter>(ctor: C) { } return FilterMixin; >FilterMixin : ((abstract new (...args: any[]) => FilterMixin) & { prototype: Filter.FilterMixin; }) & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ } export class FilteredThing extends Filter(Unmixed) { >FilteredThing : FilteredThing > : ^^^^^^^^^^^^^ >Filter(Unmixed) : Filter.FilterMixin & Unmixed -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >Filter : >(ctor: C) => ((abstract new (...args: any[]) => FilterMixin) & { prototype: Filter.FilterMixin; }) & C -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ >Unmixed : typeof Unmixed > : ^^^^^^^^^^^^^^ match(path: string) { >match : (path: string) => boolean -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >path : string > : ^^^^^^ diff --git a/tests/baselines/reference/declarationEmitMappedTypeDistributivityPreservesConstraints.types b/tests/baselines/reference/declarationEmitMappedTypeDistributivityPreservesConstraints.types index 608f9439966d0..68ff86a80f81b 100644 --- a/tests/baselines/reference/declarationEmitMappedTypeDistributivityPreservesConstraints.types +++ b/tests/baselines/reference/declarationEmitMappedTypeDistributivityPreservesConstraints.types @@ -16,8 +16,8 @@ type AllArg = { [K in keyof T]: Parameters }; > : ^^^^^^^^^ function fn }>(sliceIndex: T): AllArg { ->fn : ; }>(sliceIndex: T) => AllArg -> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +>fn : ; }>(sliceIndex: T) => AllArg +> : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^ >x : Map > : ^^^^^^^^^^^ >sliceIndex : T @@ -30,18 +30,18 @@ function fn }>(sliceIndex: T): AllArg { export default { fn }; >{ fn } : { fn: ; }>(sliceIndex: T) => AllArg; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >fn : ; }>(sliceIndex: T) => AllArg -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ === reexport.ts === import test from "./types"; >test : { fn: unknown; } ? { [K in keyof T]: T_1["x"][K]; } : never; }>(sliceIndex: T_1) => T_1["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export default { test }; >{ test } : { test: { fn: unknown; } ? { [K in keyof T]: T_1["x"][K]; } : never; }>(sliceIndex: T_1) => T_1["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test : { fn: unknown; } ? { [K in keyof T]: T_1["x"][K]; } : never; }>(sliceIndex: T_1) => T_1["x"] extends infer T_2 extends { [x: string]: (...params: unknown[]) => unknown; } ? { [K_1 in keyof T_2]: Parameters; } : never; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitMappedTypePropertyFromNumericStringKey.types b/tests/baselines/reference/declarationEmitMappedTypePropertyFromNumericStringKey.types index b136b4006afae..51a85167aca7d 100644 --- a/tests/baselines/reference/declarationEmitMappedTypePropertyFromNumericStringKey.types +++ b/tests/baselines/reference/declarationEmitMappedTypePropertyFromNumericStringKey.types @@ -5,11 +5,11 @@ export const f = ((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}); / >f : { '0': string | number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >((arg: {[K in keyof T]: T[K] | string}) => arg)({'0': 0}) : { '0': string | number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >((arg: {[K in keyof T]: T[K] | string}) => arg) : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(arg: {[K in keyof T]: T[K] | string}) => arg : (arg: { [K in keyof T]: T[K] | string; }) => { [K in keyof T]: string | T[K]; } -> : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg : { [K in keyof T]: string | T[K]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg : { [K in keyof T]: string | T[K]; } diff --git a/tests/baselines/reference/declarationEmitMappedTypeTemplateTypeofSymbol.types b/tests/baselines/reference/declarationEmitMappedTypeTemplateTypeofSymbol.types index 41b2ca504ae08..050df1e0f68d4 100644 --- a/tests/baselines/reference/declarationEmitMappedTypeTemplateTypeofSymbol.types +++ b/tests/baselines/reference/declarationEmitMappedTypeTemplateTypeofSymbol.types @@ -32,7 +32,7 @@ export const timestamp = x.now(); >timestamp : { [x.timestampSymbol]: true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x.now() : { [x.timestampSymbol]: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >x.now : () => { [x.timestampSymbol]: true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : typeof x @@ -49,7 +49,7 @@ export const timestamp = now(); >timestamp : { [timestampSymbol]: true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >now() : { [timestampSymbol]: true; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >now : () => { [timestampSymbol]: true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitMixinPrivateProtected.types b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types index 5065b846b51a1..6e9cf35813a0c 100644 --- a/tests/baselines/reference/declarationEmitMixinPrivateProtected.types +++ b/tests/baselines/reference/declarationEmitMixinPrivateProtected.types @@ -3,7 +3,7 @@ === first.ts === declare function mix(mixin: TMix): TMix; >mix : (mixin: TMix) => TMix -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >mixin : TMix > : ^^^^ @@ -38,7 +38,7 @@ export default mix(DisposableMixin); >mix(DisposableMixin) : typeof DisposableMixin > : ^^^^^^^^^^^^^^^^^^^^^^ >mix : (mixin: TMix) => TMix -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >DisposableMixin : typeof DisposableMixin > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -48,7 +48,7 @@ export class Monitor extends mix(DisposableMixin) { >mix(DisposableMixin) : DisposableMixin > : ^^^^^^^^^^^^^^^ >mix : (mixin: TMix) => TMix -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >DisposableMixin : typeof DisposableMixin > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -61,7 +61,7 @@ export class Monitor extends mix(DisposableMixin) { === another.ts === declare function mix(mixin: TMix): TMix; >mix : (mixin: TMix) => TMix -> : ^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >mixin : TMix > : ^^^^ @@ -95,7 +95,7 @@ export default class extends mix(DisposableMixin) { >mix(DisposableMixin) : DisposableMixin > : ^^^^^^^^^^^^^^^ >mix : (mixin: TMix) => TMix -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >DisposableMixin : typeof DisposableMixin > : ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitNameConflicts.types b/tests/baselines/reference/declarationEmitNameConflicts.types index 6ac0588f1a226..807fb71dcbfb3 100644 --- a/tests/baselines/reference/declarationEmitNameConflicts.types +++ b/tests/baselines/reference/declarationEmitNameConflicts.types @@ -95,7 +95,7 @@ export module M.P { >a : () => void > : ^^^^^^^^^^ >M.a : () => void -> : ^^^^^^^^^^ +> : >M : typeof M > : ^^^^^^^^ >a : () => void @@ -125,7 +125,7 @@ export module M.P { >g : () => void > : ^^^^^^^^^^ >M.c.g : () => void -> : ^^^^^^^^^^ +> : >M.c : typeof M.N > : ^^^^^^^^^^ >M : typeof M diff --git a/tests/baselines/reference/declarationEmitNameConflicts2.types b/tests/baselines/reference/declarationEmitNameConflicts2.types index b6df9551cfaf1..8d0865c3480b3 100644 --- a/tests/baselines/reference/declarationEmitNameConflicts2.types +++ b/tests/baselines/reference/declarationEmitNameConflicts2.types @@ -43,7 +43,7 @@ module X.Y.base.Z { >f : () => void > : ^^^^^^^^^^ >X.Y.base.f : () => void -> : ^^^^^^^^^^ +> : >X.Y.base : typeof base > : ^^^^^^^^^^^ >X.Y : typeof Y diff --git a/tests/baselines/reference/declarationEmitNameConflicts3.types b/tests/baselines/reference/declarationEmitNameConflicts3.types index edaadc9a4b1eb..f041c0ca49c0c 100644 --- a/tests/baselines/reference/declarationEmitNameConflicts3.types +++ b/tests/baselines/reference/declarationEmitNameConflicts3.types @@ -70,7 +70,7 @@ module M.P { >w : () => void > : ^^^^^^^^^^ >M.D.f : () => void -> : ^^^^^^^^^^ +> : >M.D : typeof M.D > : ^^^^^^^^^^ >M : typeof M @@ -84,7 +84,7 @@ module M.P { >x : () => void > : ^^^^^^^^^^ >M.C.f : () => void -> : ^^^^^^^^^^ +> : >M.C : typeof M.C > : ^^^^^^^^^^ >M : typeof M diff --git a/tests/baselines/reference/declarationEmitNestedAnonymousMappedType.types b/tests/baselines/reference/declarationEmitNestedAnonymousMappedType.types index ec400412107cb..86f365287f4f1 100644 --- a/tests/baselines/reference/declarationEmitNestedAnonymousMappedType.types +++ b/tests/baselines/reference/declarationEmitNestedAnonymousMappedType.types @@ -3,7 +3,7 @@ === declarationEmitNestedAnonymousMappedType.ts === export function enumFromStrings() { >enumFromStrings : () => { [Property in keyof { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }]: { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }[Property]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ type Part1 = { >Part1 : { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; } @@ -15,17 +15,17 @@ export function enumFromStrings() { }; type Part2 = { [Property in keyof Part1]: Part1[Property] }; >Part2 : { [Property in keyof { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }]: { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }[Property]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ return Object.create(null) as Part2; >Object.create(null) as Part2 : { [Property in keyof { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }]: { [key in keyof Members as Members[key] extends string ? Members[key] : never]: Members[key]; }[Property]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >Object.create(null) : any ->Object.create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Object.create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->create : { (o: object): any; (o: object, properties: PropertyDescriptorMap & ThisType): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>create : { (o: object | null): any; (o: object | null, properties: PropertyDescriptorMap & ThisType): any; } +> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitNestedGenerics.types b/tests/baselines/reference/declarationEmitNestedGenerics.types index a005f8b0f6852..63baa90e268fc 100644 --- a/tests/baselines/reference/declarationEmitNestedGenerics.types +++ b/tests/baselines/reference/declarationEmitNestedGenerics.types @@ -3,13 +3,13 @@ === declarationEmitNestedGenerics.ts === function f(p: T) { >f : (p: T) => (x: T_1) => typeof p -> : ^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^ >p : T > : ^ let g: (x: T) => typeof p = null as any; >g : (x: T_1) => typeof p -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ >p : T_1 @@ -18,12 +18,12 @@ function f(p: T) { return g; >g : (x: T_1) => T -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ } function g(x: T) { >g : (x: T) => T extends (infer T_1)[] ? T_1 : T -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/declarationEmitObjectAssignedDefaultExport.types b/tests/baselines/reference/declarationEmitObjectAssignedDefaultExport.types index 509d6f4ee2ed7..c399edffbb963 100644 --- a/tests/baselines/reference/declarationEmitObjectAssignedDefaultExport.types +++ b/tests/baselines/reference/declarationEmitObjectAssignedDefaultExport.types @@ -51,7 +51,7 @@ export interface StyledComponentBase StyledComponent<"div">; >div : (a: TemplateStringsArray) => StyledComponent<"div"> -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : TemplateStringsArray > : ^^^^^^^^^^^^^^^^^^^^ } @@ -73,13 +73,13 @@ const A = styled.div``; >A : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled.div`` : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ >styled.div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled : import("node_modules/styled-components/index").StyledInterface > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >`` : "" > : ^^ @@ -87,13 +87,13 @@ const B = styled.div``; >B : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled.div`` : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ >styled.div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled : import("node_modules/styled-components/index").StyledInterface > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >`` : "" > : ^^ @@ -101,29 +101,29 @@ export const C = styled.div``; >C : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled.div`` : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ >styled.div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >styled : import("node_modules/styled-components/index").StyledInterface > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : (a: TemplateStringsArray) => import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >`` : "" > : ^^ export default Object.assign(A, { >Object.assign(A, { B, C}) : string & import("node_modules/styled-components/index").StyledComponentBase<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> & import("node_modules/styled-components/node_modules/hoist-non-react-statics/index").NonReactStatics<"div"> & { B: import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never>; C: import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ >Object.assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T, source: U): T & U; (target: T_1, source1: U_1, source2: V): T_1 & U_1 & V; (target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >A : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ B, C} : { B: import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never>; C: import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ B, >B : import("node_modules/styled-components/index").StyledComponent<"div", import("node_modules/styled-components/index").DefaultTheme, {}, never> diff --git a/tests/baselines/reference/declarationEmitObjectLiteralAccessors1.types b/tests/baselines/reference/declarationEmitObjectLiteralAccessors1.types index 7b168b1845990..002c7ee8fb1df 100644 --- a/tests/baselines/reference/declarationEmitObjectLiteralAccessors1.types +++ b/tests/baselines/reference/declarationEmitObjectLiteralAccessors1.types @@ -30,9 +30,9 @@ export const obj1 = { // divergent accessors export const obj2 = { >obj2 : { get x(): string; set x(a: number); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ >{ /** my awesome getter */ get x(): string { return ""; }, /** my awesome setter */ set x(a: number) {},} : { get x(): string; set x(a: number); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ /** my awesome getter */ get x(): string { diff --git a/tests/baselines/reference/declarationEmitObjectLiteralAccessorsJs1.types b/tests/baselines/reference/declarationEmitObjectLiteralAccessorsJs1.types index 14dcf14b55988..0140b816302c4 100644 --- a/tests/baselines/reference/declarationEmitObjectLiteralAccessorsJs1.types +++ b/tests/baselines/reference/declarationEmitObjectLiteralAccessorsJs1.types @@ -36,9 +36,9 @@ export const obj1 = { // divergent accessors export const obj2 = { >obj2 : { get x(): string; set x(a: number); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ >{ /** * my awesome getter * @returns {string} */ get x() { return ""; }, /** * my awesome setter * @param {number} a */ set x(a) {},} : { get x(): string; set x(a: number); } -> : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^ +> : ^^^^^^^^^^^ ^^^^^^^^ ^^ ^^^^ /** * my awesome getter diff --git a/tests/baselines/reference/declarationEmitOfFuncspace.types b/tests/baselines/reference/declarationEmitOfFuncspace.types index 0c16a98dcc975..dcd81c6f9f04c 100644 --- a/tests/baselines/reference/declarationEmitOfFuncspace.types +++ b/tests/baselines/reference/declarationEmitOfFuncspace.types @@ -4,7 +4,7 @@ // #27032 function ExpandoMerge(n: number) { >ExpandoMerge : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >n : number > : ^^^^^^ diff --git a/tests/baselines/reference/declarationEmitOptionalMethod.types b/tests/baselines/reference/declarationEmitOptionalMethod.types index b6fc09ea53d86..771ee46f85b38 100644 --- a/tests/baselines/reference/declarationEmitOptionalMethod.types +++ b/tests/baselines/reference/declarationEmitOptionalMethod.types @@ -3,9 +3,9 @@ === declarationEmitOptionalMethod.ts === export const Foo = (opts: { >Foo : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } -> : ^^^^^^^ ^^^^^ +> : >opts : { a?(): void; b?: () => void; } > : ^^^^^^^^ ^^^^^^ ^^^ diff --git a/tests/baselines/reference/declarationEmitOverloadedPrivateInference.types b/tests/baselines/reference/declarationEmitOverloadedPrivateInference.types index f10ad778aaf45..e652d8a861e29 100644 --- a/tests/baselines/reference/declarationEmitOverloadedPrivateInference.types +++ b/tests/baselines/reference/declarationEmitOverloadedPrivateInference.types @@ -11,7 +11,7 @@ function noArgs(): string { function oneArg(input: string): string { >oneArg : (input: string) => string -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >input : string > : ^^^^^^ @@ -25,9 +25,9 @@ export class Wrapper { private proxy(fn: (options: T) => U): (options: T) => U; >proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -> : ^^^ ^^ ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >fn : (options: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : T > : ^ >options : T @@ -35,9 +35,9 @@ export class Wrapper { private proxy(fn: (options?: T) => U, noArgs: true): (options?: T) => U; >proxy : { (fn: (options: T_1) => U_1): (options: T_1) => U_1; (fn: (options?: T) => U, noArgs: true): (options?: T) => U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^^^^^^^^^ ^^^ ^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >fn : (options?: T) => U -> : ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >options : T > : ^ >noArgs : true @@ -49,9 +49,9 @@ export class Wrapper { private proxy(fn: (options: T) => U) { >proxy : { (fn: (options: T_1) => U_1): (options: T_1) => U_1; (fn: (options?: T_2) => U_2, noArgs: true): (options?: T_2) => U_2; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >fn : (options: T) => U -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >options : T > : ^ @@ -61,21 +61,21 @@ export class Wrapper { public Proxies = { >Proxies : { Failure: (options?: unknown) => string; Success: (options: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >{ Failure: this.proxy(noArgs, true), Success: this.proxy(oneArg), } : { Failure: (options?: unknown) => string; Success: (options: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^ ^ ^^^^^^^^^^^ ^^^ Failure: this.proxy(noArgs, true), >Failure : (options?: unknown) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >this.proxy(noArgs, true) : (options?: unknown) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >this : this > : ^^^^ >proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >noArgs : () => string > : ^^^^^^^^^^^^ >true : true @@ -83,17 +83,17 @@ export class Wrapper { Success: this.proxy(oneArg), >Success : (options: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >this.proxy(oneArg) : (options: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >this.proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >this : this > : ^^^^ >proxy : { (fn: (options: T) => U): (options: T) => U; (fn: (options?: T_1) => U_1, noArgs: true): (options?: T_1) => U_1; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^ ^^ ^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^ ^^^ ^^^^^^^^^^^ >oneArg : (input: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ }; } diff --git a/tests/baselines/reference/declarationEmitPathMappingMonorepo.types b/tests/baselines/reference/declarationEmitPathMappingMonorepo.types index aa853503a829e..0eced06558919 100644 --- a/tests/baselines/reference/declarationEmitPathMappingMonorepo.types +++ b/tests/baselines/reference/declarationEmitPathMappingMonorepo.types @@ -3,11 +3,11 @@ === packages/b/src/index.ts === import { a } from "@ts-bug/a"; >a : (text: string) => import("@ts-bug/a").AText -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export function b(text: string) { >b : (text: string) => import("@ts-bug/a").AText -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >text : string > : ^^^^^^ @@ -15,7 +15,7 @@ export function b(text: string) { >a(text) : import("@ts-bug/a").AText > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : (text: string) => import("@ts-bug/a").AText -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >text : string > : ^^^^^^ } @@ -35,7 +35,7 @@ declare module "@ts-bug/a" { }; export function a(text: string): AText; >a : (text: string) => AText -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >text : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitPathMappingMonorepo2.types b/tests/baselines/reference/declarationEmitPathMappingMonorepo2.types index 7d3ad18f95ff9..e9160c33634c4 100644 --- a/tests/baselines/reference/declarationEmitPathMappingMonorepo2.types +++ b/tests/baselines/reference/declarationEmitPathMappingMonorepo2.types @@ -3,13 +3,13 @@ === packages/lab/src/index.ts === import { createSvgIcon } from "@ts-bug/core/utils"; >createSvgIcon : (path: string, displayName: string) => import("packages/core/src/SvgIcon").SomeInterface -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export default createSvgIcon("Hello", "ArrowLeft"); >createSvgIcon("Hello", "ArrowLeft") : import("packages/core/src/SvgIcon").SomeInterface > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >createSvgIcon : (path: string, displayName: string) => import("packages/core/src/SvgIcon").SomeInterface -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"Hello" : "Hello" > : ^^^^^^^ >"ArrowLeft" : "ArrowLeft" @@ -45,7 +45,7 @@ import SvgIcon from "./SvgIcon"; export function createSvgIcon(path: string, displayName: string): typeof SvgIcon; >createSvgIcon : (path: string, displayName: string) => typeof SvgIcon -> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >path : string > : ^^^^^^ >displayName : string diff --git a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.types b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.types index 4dc14f4775ce9..5d28748f384b6 100644 --- a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.types +++ b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling.types @@ -10,7 +10,7 @@ export interface Scalar { export function scalar(value: string): Scalar { >scalar : (value: string) => Scalar -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : string > : ^^^^^^ @@ -20,7 +20,7 @@ export function scalar(value: string): Scalar { === src/settings/spacing.ts === import { scalar } from '../lib/operators/scalar'; >scalar : (value: string) => import("src/lib/operators/scalar").Scalar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export default { >{ get xs() { return scalar("14px"); }} : { readonly xs: import("src/lib/operators/scalar").Scalar; } @@ -34,7 +34,7 @@ export default { >scalar("14px") : import("src/lib/operators/scalar").Scalar > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >scalar : (value: string) => import("src/lib/operators/scalar").Scalar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"14px" : "14px" > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.types b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.types index 996535583fd49..230d094686618 100644 --- a/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.types +++ b/tests/baselines/reference/declarationEmitPrefersPathKindBasedOnBundling2.types @@ -10,7 +10,7 @@ export interface Scalar { export function scalar(value: string): Scalar { >scalar : (value: string) => Scalar -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : string > : ^^^^^^ @@ -20,7 +20,7 @@ export function scalar(value: string): Scalar { === src/settings/spacing.ts === import { scalar } from '../lib/operators/scalar'; >scalar : (value: string) => import("src/lib/operators/scalar").Scalar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export default { >{ get xs() { return scalar("14px"); }} : { readonly xs: import("src/lib/operators/scalar").Scalar; } @@ -34,7 +34,7 @@ export default { >scalar("14px") : import("src/lib/operators/scalar").Scalar > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >scalar : (value: string) => import("src/lib/operators/scalar").Scalar -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"14px" : "14px" > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitPrivateNameCausesError.types b/tests/baselines/reference/declarationEmitPrivateNameCausesError.types index b7ac1f5eaa3d1..8555ce6a6cbd2 100644 --- a/tests/baselines/reference/declarationEmitPrivateNameCausesError.types +++ b/tests/baselines/reference/declarationEmitPrivateNameCausesError.types @@ -12,7 +12,7 @@ const IGNORE_EXTRA_VARIABLES = Symbol(); //Notice how this is unexported //This is exported export function ignoreExtraVariables (ctor : CtorT) { >ignoreExtraVariables : {}>(ctor: CtorT) => { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >args : any[] > : ^^^^^ >ctor : CtorT @@ -20,7 +20,7 @@ export function ignoreExtraVariables (cto return class extends ctor { >class extends ctor { [IGNORE_EXTRA_VARIABLES] = true; //An unexported constant is used } : { new (...args: any[]): (Anonymous class); prototype: ignoreExtraVariables.(Anonymous class); } & CtorT -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ctor : {} > : ^^ diff --git a/tests/baselines/reference/declarationEmitPromise.types b/tests/baselines/reference/declarationEmitPromise.types index 1258ec2bbf5ae..8cf30f873dfc3 100644 --- a/tests/baselines/reference/declarationEmitPromise.types +++ b/tests/baselines/reference/declarationEmitPromise.types @@ -12,7 +12,7 @@ export class bluebird { export async function runSampleWorks( >runSampleWorks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)> -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { >a : bluebird @@ -41,7 +41,7 @@ export async function runSampleWorks( >[a, b, c, d, e].filter(el => !!el) : bluebird[] > : ^^^^^^^^^^^^^ >[a, b, c, d, e].filter : { >(predicate: (value: bluebird, index: number, array: bluebird[]) => value is S, thisArg?: any): S[]; (predicate: (value: bluebird, index: number, array: bluebird[]) => unknown, thisArg?: any): bluebird[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >[a, b, c, d, e] : bluebird[] > : ^^^^^^^^^^^^^ >a : bluebird @@ -55,9 +55,9 @@ export async function runSampleWorks( >e : bluebird > : ^^^^^^^^^^^ >filter : { >(predicate: (value: bluebird, index: number, array: bluebird[]) => value is S, thisArg?: any): S[]; (predicate: (value: bluebird, index: number, array: bluebird[]) => unknown, thisArg?: any): bluebird[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >el => !!el : (el: bluebird) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >el : bluebird > : ^^^^^^^^^^^ >!!el : boolean @@ -69,11 +69,11 @@ export async function runSampleWorks( let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^ ^^^^^ ^^^^^ +> : >f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : A > : ^ >b : B @@ -88,31 +88,31 @@ export async function runSampleWorks( f.apply(this, result); >f.apply(this, result) : any >f.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : any >result : any let rfunc: typeof func & {} = func as any; // <- This is the only difference >rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >func as any : any >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ return rfunc >rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ } export async function runSampleBreaks( >runSampleBreaks : (a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) => Promise<((f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T)> -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^ ^^ a: bluebird, b?: bluebird, c?: bluebird, d?: bluebird, e?: bluebird) { >a : bluebird @@ -141,7 +141,7 @@ export async function runSampleBreaks( >[a, b, c, d, e].filter(el => !!el) : bluebird[] > : ^^^^^^^^^^^^^ >[a, b, c, d, e].filter : { >(predicate: (value: bluebird, index: number, array: bluebird[]) => value is S, thisArg?: any): S[]; (predicate: (value: bluebird, index: number, array: bluebird[]) => unknown, thisArg?: any): bluebird[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >[a, b, c, d, e] : bluebird[] > : ^^^^^^^^^^^^^ >a : bluebird @@ -155,9 +155,9 @@ export async function runSampleBreaks( >e : bluebird > : ^^^^^^^^^^^ >filter : { >(predicate: (value: bluebird, index: number, array: bluebird[]) => value is S, thisArg?: any): S[]; (predicate: (value: bluebird, index: number, array: bluebird[]) => unknown, thisArg?: any): bluebird[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ >el => !!el : (el: bluebird) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >el : bluebird > : ^^^^^^^^^^^ >!!el : boolean @@ -169,11 +169,11 @@ export async function runSampleBreaks( let func = (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(f: (a: A, b?: B, c?: C, d?: D, e?: E) => T): T => f.apply(this, result) : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^ ^^^^^ ^^^^^ +> : >f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -> : ^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >a : A > : ^ >b : B @@ -188,24 +188,24 @@ export async function runSampleBreaks( f.apply(this, result); >f.apply(this, result) : any >f.apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >f : (a: A, b?: B, c?: C, d?: D, e?: E) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^ >apply : (this: Function, thisArg: any, argArray?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ >this : any >result : any let rfunc: typeof func = func as any; // <- This is the only difference >rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >func as any : any >func : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ return rfunc >rfunc : (f: (a: A, b?: B, c?: C, d?: D, e?: E) => T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.types b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.types index 510b2ae9feace..cb63f4afc4e73 100644 --- a/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.types +++ b/tests/baselines/reference/declarationEmitQualifiedAliasTypeArgument.types @@ -58,7 +58,7 @@ export const fun = create(); >fun : () => import("bbb").INode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >create() : () => import("bbb").INode -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >create : () => () => import("bbb").INode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -66,7 +66,7 @@ export const fun2 = create(); >fun2 : () => import("bbb").INode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >create() : () => import("bbb").INode -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >create : () => () => import("bbb").INode > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitRecursiveConditionalAliasPreserved.types b/tests/baselines/reference/declarationEmitRecursiveConditionalAliasPreserved.types index ca7237707a935..d42182cf03bfd 100644 --- a/tests/baselines/reference/declarationEmitRecursiveConditionalAliasPreserved.types +++ b/tests/baselines/reference/declarationEmitRecursiveConditionalAliasPreserved.types @@ -138,9 +138,9 @@ import { Power } from "./input"; export const power = ( >power : (num: Num, powerOf: PowerOf) => Power -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >( num: Num, powerOf: PowerOf): Power => (num ** powerOf) as never : (num: Num, powerOf: PowerOf) => Power -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : num: Num, >num : Num diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types index 3270359db8989..64854a5e6456b 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types @@ -14,11 +14,11 @@ export const ADMIN = MetadataAccessor.create('1'); >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ >create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'1' : "1" > : ^^^ @@ -63,7 +63,7 @@ export declare class MetadataAccessor { static create(key: string): MetadataAccessor; >create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types index be43cdad114ae..8dfbac14b8f0e 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types @@ -14,11 +14,11 @@ export const ADMIN = MetadataAccessor.create('1'); >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ >create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'1' : "1" > : ^^^ @@ -63,7 +63,7 @@ export declare class MetadataAccessor { static create(key: string): MetadataAccessor; >create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types index 281a05c577412..cd13750dcac39 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types @@ -14,11 +14,11 @@ export const ADMIN = MetadataAccessor.create('1'); >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ >create : (key: string) => MetadataAccessor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'1' : "1" > : ^^^ @@ -63,7 +63,7 @@ export declare class MetadataAccessor { static create(key: string): MetadataAccessor; >create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types index 203cb79dee5d1..6568a8b2719f4 100644 --- a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types +++ b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types @@ -9,7 +9,7 @@ export type Whatever = {x: T}; export declare function something(cb: () => Whatever): Whatever; >something : (cb: () => Whatever) => Whatever -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >cb : () => Whatever > : ^^^^^^ @@ -20,9 +20,9 @@ import * as E from 'whatever'; export const run = (i: () => E.Whatever): E.Whatever => E.something(i); >run : (i: () => E.Whatever) => E.Whatever -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >(i: () => E.Whatever): E.Whatever => E.something(i) : (i: () => E.Whatever) => E.Whatever -> : ^ ^^^^^ ^^^^^ +> : >i : () => E.Whatever > : ^^^^^^ >E : any @@ -31,12 +31,12 @@ export const run = (i: () => E.Whatever): E.Whatever => E.something(i); > : ^^^ >E.something(i) : E.Whatever > : ^^^^^^^^^^^^^ ->E.something : (cb: () => E.Whatever) => E.Whatever -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>E.something : (cb: () => Whatever) => E.Whatever +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >E : typeof E > : ^^^^^^^^ ->something : (cb: () => E.Whatever) => E.Whatever -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>something : (cb: () => Whatever) => E.Whatever +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ >i : () => E.Whatever > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitRetainsJsdocyComments.types b/tests/baselines/reference/declarationEmitRetainsJsdocyComments.types index 3726ca756d1fd..0f42e941bd6a0 100644 --- a/tests/baselines/reference/declarationEmitRetainsJsdocyComments.types +++ b/tests/baselines/reference/declarationEmitRetainsJsdocyComments.types @@ -7,15 +7,15 @@ */ export const foo = (p: string) => { >foo : (p: string) => { bar: (s: number) => void; bar2(s: number): void; } -> : ^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ >(p: string) => { return { /** * comment2 * @param s */ bar: (s: number) => {}, /** * comment3 * @param s */ bar2(s: number) {}, }} : (p: string) => { bar: (s: number) => void; bar2(s: number): void; } -> : ^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : >p : string > : ^^^^^^ return { >{ /** * comment2 * @param s */ bar: (s: number) => {}, /** * comment3 * @param s */ bar2(s: number) {}, } : { bar: (s: number) => void; bar2(s: number): void; } -> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ /** * comment2 @@ -23,9 +23,9 @@ export const foo = (p: string) => { */ bar: (s: number) => {}, >bar : (s: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(s: number) => {} : (s: number) => void -> : ^^^^ ^^^^^^^^^ +> : >s : number > : ^^^^^^ @@ -35,7 +35,7 @@ export const foo = (p: string) => { */ bar2(s: number) {}, >bar2 : (s: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : number > : ^^^^^^ } @@ -51,7 +51,7 @@ export class Foo { */ bar(s: number) { >bar : (s: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >s : number > : ^^^^^^ } @@ -78,7 +78,7 @@ declare global { */ someMethod(collection: any[]): boolean; >someMethod : (collection: any[]) => boolean -> : ^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >collection : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.types b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.types index 2d1df79724884..c599b505410b7 100644 --- a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.types +++ b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.types @@ -20,15 +20,15 @@ import { Props } from "react-select"; export const CustomSelect1 = (x: Props(x: A) => A -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: A) => x : (x: A) => A -> : ^ ^^^^^ ^^^^^^ +> : >x : A > : ^ >x : A @@ -17,7 +17,7 @@ var a = (x: A) => x; function a2(x: A) { return x } >a2 : (x: A) => A -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : A > : ^ >x : A @@ -25,9 +25,9 @@ function a2(x: A) { return x } var a3 = (x: A) => new A(); >a3 : (x: A) => globalThis.A -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >(x: A) => new A() : (x: A) => globalThis.A -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^ +> : >x : A > : ^ >new A() : globalThis.A @@ -37,7 +37,7 @@ var a3 = (x: A) => new A(); function a4(x: A) { return new A() } >a4 : (x: A) => globalThis.A -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ >x : A > : ^ >new A() : globalThis.A @@ -50,9 +50,9 @@ interface B { } var b = (x: B) => x; >b : (x: B) => B -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >(x: B) => x : (x: B) => B -> : ^ ^^^^^ ^^^^^^ +> : >x : B > : ^ >x : B @@ -60,7 +60,7 @@ var b = (x: B) => x; function b2(x: B) { return x } >b2 : (x: B) => B -> : ^ ^^^^^ ^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >x : B > : ^ >x : B diff --git a/tests/baselines/reference/declarationEmitTypeParameterNameReusedInOverloads.types b/tests/baselines/reference/declarationEmitTypeParameterNameReusedInOverloads.types index cf50c2550d794..754f677efa66a 100644 --- a/tests/baselines/reference/declarationEmitTypeParameterNameReusedInOverloads.types +++ b/tests/baselines/reference/declarationEmitTypeParameterNameReusedInOverloads.types @@ -29,7 +29,7 @@ export type Foo = { new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T @@ -42,7 +42,7 @@ export type Foo = { }): any[]; new (x: { >x : { new (a: T): T; new (a: T_1): T_1; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ new (a: T): T; >a : T diff --git a/tests/baselines/reference/declarationEmitTypeParameterNameShadowedInternally.types b/tests/baselines/reference/declarationEmitTypeParameterNameShadowedInternally.types index c5daa52956cd4..d5be84d522cac 100644 --- a/tests/baselines/reference/declarationEmitTypeParameterNameShadowedInternally.types +++ b/tests/baselines/reference/declarationEmitTypeParameterNameShadowedInternally.types @@ -3,17 +3,17 @@ === declarationEmitTypeParameterNameShadowedInternally.ts === export const foo = (x: T) => { >foo : (x: T) => (y: T_1) => readonly [T, T_1] -> : ^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >(x: T) => { const inner = (y: T) => [x, y] as const; return inner;} : (x: T) => (y: T_1) => readonly [T, T_1] -> : ^ ^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : >x : T > : ^ const inner = (y: T) => [x, y] as const; >inner : (y: T_1) => readonly [T, T_1] -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >(y: T) => [x, y] as const : (y: T_1) => readonly [T, T_1] -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ +> : >y : T > : ^ >[x, y] as const : readonly [T_1, T] @@ -27,6 +27,6 @@ export const foo = (x: T) => { return inner; >inner : (y: T_1) => readonly [T, T_1] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitUnnessesaryTypeReferenceNotAdded.types b/tests/baselines/reference/declarationEmitUnnessesaryTypeReferenceNotAdded.types index e98deff94cd65..82fe174f46887 100644 --- a/tests/baselines/reference/declarationEmitUnnessesaryTypeReferenceNotAdded.types +++ b/tests/baselines/reference/declarationEmitUnnessesaryTypeReferenceNotAdded.types @@ -3,7 +3,7 @@ === /index.ts === import minimist = require('minimist'); >minimist : (x: any) => minimist.ParsedArgs -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ import process = require('process'); >process : any @@ -19,7 +19,7 @@ export default function parseArgs(): minimist.ParsedArgs { >minimist(process.argv.slice(2)) : minimist.ParsedArgs > : ^^^^^^^^^^^^^^^^^^^ >minimist : (x: any) => minimist.ParsedArgs -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >process.argv.slice(2) : any >process.argv.slice : any >process.argv : any @@ -40,14 +40,14 @@ declare namespace thing { } declare function thing(x: any): thing.ParsedArgs; >thing : (x: any) => thing.ParsedArgs -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any >thing : any > : ^^^ export = thing; >thing : (x: any) => thing.ParsedArgs -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^ === /node_modules/@types/process/process.d.ts === declare const thing: any; diff --git a/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules1.types b/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules1.types index ab07ec4be297f..938955e70b983 100644 --- a/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules1.types +++ b/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules1.types @@ -121,7 +121,7 @@ interface QueryObserverOptions< select?: (data: TQueryData) => TData; >select : ((data: TQueryData) => TData) | undefined -> : ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >data : TQueryData > : ^^^^^^^^^^ } @@ -349,7 +349,7 @@ type UseQueryReturnType = UseBaseQueryReturnType; declare function useQuery< >useQuery : (options: UndefinedInitialQueryOptions) => UseQueryReturnType -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ TQueryFnData = unknown, TError = DefaultError, @@ -366,19 +366,19 @@ export { type UseQueryReturnType, useQuery }; >UseQueryReturnType : any > : ^^^ >useQuery : (options: UndefinedInitialQueryOptions) => UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ === node_modules/@tanstack/vue-query/build/modern/index.d.ts === export { UseQueryReturnType, useQuery } from './useQuery-CPqkvEsh.js'; >UseQueryReturnType : any > : ^^^ >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ === src/index.mts === import { useQuery } from '@tanstack/vue-query' >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const baseUrl = 'https://api.publicapis.org/' >baseUrl : "https://api.publicapis.org/" @@ -420,31 +420,31 @@ const testApi = { >testApi : { getEntries: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^ >{ getEntries: (): Promise => { return fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) }} : { getEntries: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^ ^^^ getEntries: (): Promise => { >getEntries : () => Promise > : ^^^^^^ >(): Promise => { return fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) } : () => Promise -> : ^^^^^^ +> : return fetch(baseUrl + 'entries') >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then : (onfulfilled?: ((value: any) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then : (onfulfilled?: ((value: Response) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') : Promise > : ^^^^^^^^^^^^^^^^^ ->fetch : (input: RequestInfo | URL, init?: RequestInit | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >baseUrl + 'entries' : string > : ^^^^^^ >baseUrl : "https://api.publicapis.org/" @@ -454,9 +454,9 @@ const testApi = { .then((res) => res.json()) >then : (onfulfilled?: ((value: Response) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(res) => res.json() : (res: Response) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >res : Response > : ^^^^^^^^ >res.json() : Promise @@ -470,9 +470,9 @@ const testApi = { .then((data) => data.entries) >then : (onfulfilled?: ((value: any) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(data) => data.entries : (data: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >data : any >data.entries : any >data : any @@ -482,18 +482,18 @@ const testApi = { .catch((err) => console.log(err)) >catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(err) => console.log(err) : (err: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >err : any >console.log(err) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err : any } } @@ -502,7 +502,7 @@ const entryKeys = { >entryKeys : { all: readonly ["entries"]; list: () => readonly ["entries", "list"]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ all: ['entries'] as const, list: () => [...entryKeys.all, 'list'] as const} : { all: readonly ["entries"]; list: () => readonly ["entries", "list"]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ all: ['entries'] as const, >all : readonly ["entries"] @@ -518,7 +518,7 @@ const entryKeys = { >list : () => readonly ["entries", "list"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => [...entryKeys.all, 'list'] as const : () => readonly ["entries", "list"] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[...entryKeys.all, 'list'] as const : readonly ["entries", "list"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[...entryKeys.all, 'list'] : readonly ["entries", "list"] @@ -539,15 +539,15 @@ export const useEntries = () => { >useEntries : () => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return useQuery({ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) })} : () => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return useQuery({ >useQuery({ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) }) : import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) } : { queryKey: readonly ["entries", "list"]; queryFn: () => Promise; select: (data: IEntry[]) => IEntry[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ queryKey: entryKeys.list(), >queryKey : readonly ["entries", "list"] @@ -565,7 +565,7 @@ export const useEntries = () => { >queryFn : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ >testApi.getEntries : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >testApi : { getEntries: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getEntries : () => Promise @@ -573,19 +573,19 @@ export const useEntries = () => { select: (data) => data.slice(0, 10) >select : (data: IEntry[]) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >(data) => data.slice(0, 10) : (data: IEntry[]) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >data : IEntry[] > : ^^^^^^^^ >data.slice(0, 10) : IEntry[] > : ^^^^^^^^ ->data.slice : (start?: number | undefined, end?: number | undefined) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data.slice : (start?: number, end?: number) => IEntry[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >data : IEntry[] > : ^^^^^^^^ ->slice : (start?: number | undefined, end?: number | undefined) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => IEntry[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >0 : 0 > : ^ >10 : 10 diff --git a/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules2.types b/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules2.types index 9d67f14842ff9..7a524b5a38af9 100644 --- a/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules2.types +++ b/tests/baselines/reference/declarationEmitUsingAlternativeContainingModules2.types @@ -121,7 +121,7 @@ interface QueryObserverOptions< select?: (data: TQueryData) => TData; >select : ((data: TQueryData) => TData) | undefined -> : ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >data : TQueryData > : ^^^^^^^^^^ } @@ -349,7 +349,7 @@ type UseQueryReturnType = UseBaseQueryReturnType; declare function useQuery< >useQuery : (options: UndefinedInitialQueryOptions) => UseQueryReturnType -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ TQueryFnData = unknown, TError = DefaultError, @@ -368,9 +368,9 @@ export { type UseQueryReturnType as b, useQuery as u }; >b : any > : ^^^ >useQuery : (options: UndefinedInitialQueryOptions) => UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >u : (options: UndefinedInitialQueryOptions) => UseQueryReturnType -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : === node_modules/@tanstack/vue-query/build/modern/index.d.ts === export { b as UseQueryReturnType, u as useQuery } from './useQuery-CPqkvEsh.js'; @@ -379,14 +379,14 @@ export { b as UseQueryReturnType, u as useQuery } from './useQuery-CPqkvEsh.js'; >UseQueryReturnType : any > : ^^^ >u : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^ ^ ^ ^ ^ ^ ^ ^ === src/index.mts === import { useQuery } from '@tanstack/vue-query' >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const baseUrl = 'https://api.publicapis.org/' >baseUrl : "https://api.publicapis.org/" @@ -428,31 +428,31 @@ const testApi = { >testApi : { getEntries: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^ >{ getEntries: (): Promise => { return fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) }} : { getEntries: () => Promise; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ +> : ^^^^^^^^^^^^^^ ^^^ getEntries: (): Promise => { >getEntries : () => Promise > : ^^^^^^ >(): Promise => { return fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) } : () => Promise -> : ^^^^^^ +> : return fetch(baseUrl + 'entries') >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch((err) => console.log(err)) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) .catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then((data) => data.entries) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) .then : (onfulfilled?: ((value: any) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then((res) => res.json()) : Promise > : ^^^^^^^^^^^^ >fetch(baseUrl + 'entries') .then : (onfulfilled?: ((value: Response) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fetch(baseUrl + 'entries') : Promise > : ^^^^^^^^^^^^^^^^^ ->fetch : (input: RequestInfo | URL, init?: RequestInit | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>fetch : (input: RequestInfo | URL, init?: RequestInit) => Promise +> : ^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >baseUrl + 'entries' : string > : ^^^^^^ >baseUrl : "https://api.publicapis.org/" @@ -462,9 +462,9 @@ const testApi = { .then((res) => res.json()) >then : (onfulfilled?: ((value: Response) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(res) => res.json() : (res: Response) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >res : Response > : ^^^^^^^^ >res.json() : Promise @@ -478,9 +478,9 @@ const testApi = { .then((data) => data.entries) >then : (onfulfilled?: ((value: any) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(data) => data.entries : (data: any) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >data : any >data.entries : any >data : any @@ -490,18 +490,18 @@ const testApi = { .catch((err) => console.log(err)) >catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(err) => console.log(err) : (err: any) => void -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >err : any >console.log(err) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >err : any } } @@ -510,7 +510,7 @@ const entryKeys = { >entryKeys : { all: readonly ["entries"]; list: () => readonly ["entries", "list"]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ all: ['entries'] as const, list: () => [...entryKeys.all, 'list'] as const} : { all: readonly ["entries"]; list: () => readonly ["entries", "list"]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ all: ['entries'] as const, >all : readonly ["entries"] @@ -526,7 +526,7 @@ const entryKeys = { >list : () => readonly ["entries", "list"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => [...entryKeys.all, 'list'] as const : () => readonly ["entries", "list"] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[...entryKeys.all, 'list'] as const : readonly ["entries", "list"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[...entryKeys.all, 'list'] : readonly ["entries", "list"] @@ -547,15 +547,15 @@ export const useEntries = () => { >useEntries : () => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return useQuery({ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) })} : () => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : return useQuery({ >useQuery({ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) }) : import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useQuery : (options: { enabled?: boolean | undefined; refetchInterval?: number | undefined; select?: ((data: TQueryFnData) => TData) | undefined; retry?: (number | boolean | ((failureCount: number, error: TError) => boolean)) | undefined; queryFn?: ((context: { queryKey: TQueryKey; }) => TQueryFnData | Promise) | undefined; queryKey?: TQueryKey | undefined; initialData?: TQueryFnData | undefined; initialDataUpdatedAt?: number | (() => number | undefined) | undefined; } & { initialData?: undefined; }) => import("node_modules/@tanstack/vue-query/build/modern/useQuery-CPqkvEsh").b -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ queryKey: entryKeys.list(), queryFn: testApi.getEntries, select: (data) => data.slice(0, 10) } : { queryKey: readonly ["entries", "list"]; queryFn: () => Promise; select: (data: IEntry[]) => IEntry[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ queryKey: entryKeys.list(), >queryKey : readonly ["entries", "list"] @@ -573,7 +573,7 @@ export const useEntries = () => { >queryFn : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ >testApi.getEntries : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >testApi : { getEntries: () => Promise; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getEntries : () => Promise @@ -581,19 +581,19 @@ export const useEntries = () => { select: (data) => data.slice(0, 10) >select : (data: IEntry[]) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >(data) => data.slice(0, 10) : (data: IEntry[]) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >data : IEntry[] > : ^^^^^^^^ >data.slice(0, 10) : IEntry[] > : ^^^^^^^^ ->data.slice : (start?: number | undefined, end?: number | undefined) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data.slice : (start?: number, end?: number) => IEntry[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >data : IEntry[] > : ^^^^^^^^ ->slice : (start?: number | undefined, end?: number | undefined) => IEntry[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>slice : (start?: number, end?: number) => IEntry[] +> : ^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^ >0 : 0 > : ^ >10 : 10 diff --git a/tests/baselines/reference/declarationEmitUsingTypeAlias1.types b/tests/baselines/reference/declarationEmitUsingTypeAlias1.types index bc8ca584ff4f4..3f2c5b9a4680f 100644 --- a/tests/baselines/reference/declarationEmitUsingTypeAlias1.types +++ b/tests/baselines/reference/declarationEmitUsingTypeAlias1.types @@ -29,9 +29,9 @@ import { SomeType } from "some-dep"; export const foo = (thing: SomeType) => { >foo : (thing: SomeType) => import("node_modules/some-dep/dist/inner").SomeType -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(thing: SomeType) => { return thing;} : (thing: SomeType) => import("node_modules/some-dep/dist/inner").SomeType -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >thing : import("node_modules/some-dep/dist/inner").SomeType > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -43,9 +43,9 @@ export const foo = (thing: SomeType) => { export const bar = (thing: SomeType) => { >bar : (thing: SomeType) => import("node_modules/some-dep/dist/inner").Other -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(thing: SomeType) => { return thing.arg;} : (thing: SomeType) => import("node_modules/some-dep/dist/inner").Other -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >thing : import("node_modules/some-dep/dist/inner").SomeType > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitWithDefaultAsComputedName.types b/tests/baselines/reference/declarationEmitWithDefaultAsComputedName.types index 78569dfc5f432..ec874e8474bf7 100644 --- a/tests/baselines/reference/declarationEmitWithDefaultAsComputedName.types +++ b/tests/baselines/reference/declarationEmitWithDefaultAsComputedName.types @@ -12,7 +12,7 @@ type Experiment = { }; declare const createExperiment: ( >createExperiment : (options: Experiment) => Experiment -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ options: Experiment >options : Experiment @@ -23,7 +23,7 @@ export default createExperiment({ >createExperiment({ name: "foo"}) : Experiment<"foo"> > : ^^^^^^^^^^^^^^^^^ >createExperiment : (options: Experiment) => Experiment -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >{ name: "foo"} : { name: "foo"; } > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitWithDefaultAsComputedName2.types b/tests/baselines/reference/declarationEmitWithDefaultAsComputedName2.types index 0340d34450f71..6b4c2abb687a2 100644 --- a/tests/baselines/reference/declarationEmitWithDefaultAsComputedName2.types +++ b/tests/baselines/reference/declarationEmitWithDefaultAsComputedName2.types @@ -12,7 +12,7 @@ type Experiment = { }; declare const createExperiment: ( >createExperiment : (options: Experiment) => Experiment -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^ options: Experiment >options : Experiment @@ -23,7 +23,7 @@ export default createExperiment({ >createExperiment({ name: "foo"}) : Experiment<"foo"> > : ^^^^^^^^^^^^^^^^^ >createExperiment : (options: Experiment) => Experiment -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >{ name: "foo"} : { name: "foo"; } > : ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.types b/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.types index 5393cbdc6217a..a1d2a10857a4e 100644 --- a/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.types +++ b/tests/baselines/reference/declarationEmitWithInvalidPackageJsonTypings.types @@ -13,7 +13,7 @@ export interface MutableRefObject { } export function useRef(current: T): MutableRefObject { >useRef : (current: T) => MutableRefObject -> : ^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >current : T > : ^ @@ -27,7 +27,7 @@ export const useCsvParser = () => { >useCsvParser : () => MutableRefObject > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { const parserRef = useRef(null); return parserRef;} : () => MutableRefObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : const parserRef = useRef(null); >parserRef : MutableRefObject @@ -35,7 +35,7 @@ export const useCsvParser = () => { >useRef(null) : MutableRefObject > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >useRef : (current: T) => MutableRefObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ return parserRef; >parserRef : MutableRefObject diff --git a/tests/baselines/reference/declarationFileForHtmlFileWithinDeclarationFile.types b/tests/baselines/reference/declarationFileForHtmlFileWithinDeclarationFile.types index 0b8441bb8f274..52ab798ec289f 100644 --- a/tests/baselines/reference/declarationFileForHtmlFileWithinDeclarationFile.types +++ b/tests/baselines/reference/declarationFileForHtmlFileWithinDeclarationFile.types @@ -42,7 +42,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void > : ^^^^ >window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >window.customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >window : Window & typeof globalThis @@ -50,7 +50,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >"my-html5-element" : "my-html5-element" > : ^^^^^^^^^^^^^^^^^^ >mod.HTML5Element : typeof mod.HTML5Element @@ -76,7 +76,7 @@ if (document !== mod.default) { >document.body.appendChild(mod.blogPost) : Element > : ^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -84,7 +84,7 @@ if (document !== mod.default) { >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >mod.blogPost : Element > : ^^^^^^^ >mod : typeof mod diff --git a/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=false).types b/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=false).types index 355c64d4e6e88..ed8b6a5758721 100644 --- a/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=false).types +++ b/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=false).types @@ -37,7 +37,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void > : ^^^^ >window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >window.customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >window : Window & typeof globalThis @@ -45,7 +45,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >"my-html5-element" : "my-html5-element" > : ^^^^^^^^^^^^^^^^^^ >mod.HTML5Element : any @@ -71,7 +71,7 @@ if (document !== mod.default) { >document.body.appendChild(mod.blogPost) : any > : ^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -79,7 +79,7 @@ if (document !== mod.default) { >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >mod.blogPost : any > : ^^^ >mod : any diff --git a/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=true).types b/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=true).types index 0d323523b302a..87e8bc2254c98 100644 --- a/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=true).types +++ b/tests/baselines/reference/declarationFileForHtmlImport(allowarbitraryextensions=true).types @@ -37,7 +37,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >window.customElements.define("my-html5-element", mod.HTML5Element) : void > : ^^^^ >window.customElements.define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >window.customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >window : Window & typeof globalThis @@ -45,7 +45,7 @@ window.customElements.define("my-html5-element", mod.HTML5Element); >customElements : CustomElementRegistry > : ^^^^^^^^^^^^^^^^^^^^^ >define : (name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^ >"my-html5-element" : "my-html5-element" > : ^^^^^^^^^^^^^^^^^^ >mod.HTML5Element : typeof mod.HTML5Element @@ -71,7 +71,7 @@ if (document !== mod.default) { >document.body.appendChild(mod.blogPost) : Element > : ^^^^^^^ >document.body.appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >document.body : HTMLElement > : ^^^^^^^^^^^ >document : Document @@ -79,7 +79,7 @@ if (document !== mod.default) { >body : HTMLElement > : ^^^^^^^^^^^ >appendChild : (node: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^ >mod.blogPost : Element > : ^^^^^^^ >mod : typeof mod diff --git a/tests/baselines/reference/declarationFiles.types b/tests/baselines/reference/declarationFiles.types index 9ae2f986943f3..db8e2a7ae9311 100644 --- a/tests/baselines/reference/declarationFiles.types +++ b/tests/baselines/reference/declarationFiles.types @@ -11,7 +11,7 @@ class C1 { f(x: this): this { return undefined; } >f : (x: this) => this -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : this > : ^^^^ >undefined : undefined @@ -67,13 +67,13 @@ class C3 { f: (x: this) => this; >f : (x: this) => this -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : this > : ^^^^ g: new (x: this) => this; >g : new (x: this) => this -> : ^^^^^^^^ ^^^^^ +> : ^^^^^ ^^ ^^^^^ >x : this > : ^^^^ @@ -87,7 +87,7 @@ class C3 { j: (x: any) => x is this; >j : (x: any) => x is this -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any > : ^^^ } @@ -130,7 +130,7 @@ class C4 { >x4 : () => this > : ^^^^^^^^^^ >() => this : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ diff --git a/tests/baselines/reference/declarationFilesForNodeNativeModules(allowarbitraryextensions=true).types b/tests/baselines/reference/declarationFilesForNodeNativeModules(allowarbitraryextensions=true).types index 1e92fe0a1d71a..35e17b1248a57 100644 --- a/tests/baselines/reference/declarationFilesForNodeNativeModules(allowarbitraryextensions=true).types +++ b/tests/baselines/reference/declarationFilesForNodeNativeModules(allowarbitraryextensions=true).types @@ -9,18 +9,18 @@ mod.doNativeThing("good"); >mod.doNativeThing("good") : unknown > : ^^^^^^^ >mod.doNativeThing : (flag: string) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >mod : typeof mod > : ^^^^^^^^^^ >doNativeThing : (flag: string) => unknown -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >"good" : "good" > : ^^^^^^ === dir/native.d.node.ts === export function doNativeThing(flag: string): unknown; >doNativeThing : (flag: string) => unknown -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >flag : string > : ^^^^^^ diff --git a/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.types b/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.types index f1a4fa538e3f2..fedc791d6037c 100644 --- a/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.types +++ b/tests/baselines/reference/declarationFunctionTypeNonlocalShouldNotBeAnError.types @@ -13,7 +13,7 @@ namespace foo { >obj : { bar: () => void; } > : ^^^^^^^^^^^^^^^^^^^^ >{ bar } : { bar: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ bar >bar : () => void diff --git a/tests/baselines/reference/declarationMaps.types b/tests/baselines/reference/declarationMaps.types index 4f2733576174f..60cd1de5382e9 100644 --- a/tests/baselines/reference/declarationMaps.types +++ b/tests/baselines/reference/declarationMaps.types @@ -11,13 +11,13 @@ module m2 { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationMapsMultifile.types b/tests/baselines/reference/declarationMapsMultifile.types index e924d257bf99f..1516b40146410 100644 --- a/tests/baselines/reference/declarationMapsMultifile.types +++ b/tests/baselines/reference/declarationMapsMultifile.types @@ -7,7 +7,7 @@ export class Foo { doThing(x: {a: number}) { >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -53,11 +53,11 @@ c.doThing({a: 42}); >c.doThing({a: 42}) : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 42} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -69,13 +69,13 @@ export let x = c.doThing({a: 12}); >x : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing({a: 12}) : { b: number; } -> : ^^^^^^^^^^^^^^ +> : >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 12} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/declarationMapsOutFile.types b/tests/baselines/reference/declarationMapsOutFile.types index 4a0acff937560..f838fb6814b53 100644 --- a/tests/baselines/reference/declarationMapsOutFile.types +++ b/tests/baselines/reference/declarationMapsOutFile.types @@ -7,7 +7,7 @@ export class Foo { doThing(x: {a: number}) { >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -53,11 +53,11 @@ c.doThing({a: 42}); >c.doThing({a: 42}) : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 42} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -69,13 +69,13 @@ export let x = c.doThing({a: 12}); >x : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing({a: 12}) : { b: number; } -> : ^^^^^^^^^^^^^^ +> : >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 12} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/declarationMapsOutFile2.types b/tests/baselines/reference/declarationMapsOutFile2.types index 9374543c30c10..67ac308ee63a2 100644 --- a/tests/baselines/reference/declarationMapsOutFile2.types +++ b/tests/baselines/reference/declarationMapsOutFile2.types @@ -7,7 +7,7 @@ class Foo { doThing(x: {a: number}) { >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -49,11 +49,11 @@ c.doThing({a: 42}); >c.doThing({a: 42}) : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 42} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -65,13 +65,13 @@ let x = c.doThing({a: 12}); >x : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing({a: 12}) : { b: number; } -> : ^^^^^^^^^^^^^^ +> : >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 12} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/declarationMapsWithSourceMap.types b/tests/baselines/reference/declarationMapsWithSourceMap.types index 55e8c3680f6b1..dd2384c9bad6e 100644 --- a/tests/baselines/reference/declarationMapsWithSourceMap.types +++ b/tests/baselines/reference/declarationMapsWithSourceMap.types @@ -7,7 +7,7 @@ class Foo { doThing(x: {a: number}) { >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -49,11 +49,11 @@ c.doThing({a: 42}); >c.doThing({a: 42}) : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 42} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -65,13 +65,13 @@ let x = c.doThing({a: 12}); >x : { b: number; } > : ^^^^^^^^^^^^^^ >c.doThing({a: 12}) : { b: number; } -> : ^^^^^^^^^^^^^^ +> : >c.doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >c : Foo > : ^^^ >doThing : (x: { a: number; }) => { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{a: 12} : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/declarationMapsWithoutDeclaration.types b/tests/baselines/reference/declarationMapsWithoutDeclaration.types index f4f3635e0de7b..00de0349eb927 100644 --- a/tests/baselines/reference/declarationMapsWithoutDeclaration.types +++ b/tests/baselines/reference/declarationMapsWithoutDeclaration.types @@ -14,13 +14,13 @@ module m2 { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationNoDanglingGenerics.types b/tests/baselines/reference/declarationNoDanglingGenerics.types index 4730648c725a2..70fd420aee88a 100644 --- a/tests/baselines/reference/declarationNoDanglingGenerics.types +++ b/tests/baselines/reference/declarationNoDanglingGenerics.types @@ -11,7 +11,7 @@ const kindCache: { [kind: string]: boolean } = {}; function register(kind: string): void | never { >register : (kind: string) => void | never -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >kind : string > : ^^^^^^ @@ -48,7 +48,7 @@ function register(kind: string): void | never { function ClassFactory(kind: TKind) { >ClassFactory : (kind: TKind) => typeof (Anonymous class) -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : TKind > : ^^^^^ @@ -56,7 +56,7 @@ function ClassFactory(kind: TKind) { >register(kind) : void > : ^^^^ >register : (kind: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : TKind > : ^^^^^ @@ -106,9 +106,9 @@ export class AKind extends ClassFactory(Kinds.A) { >AKind : AKind > : ^^^^^ >ClassFactory(Kinds.A) : ClassFactory<"A">.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ >ClassFactory : (kind: TKind) => typeof (Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Kinds.A : "A" > : ^^^ >Kinds : typeof Kinds @@ -121,9 +121,9 @@ export class BKind extends ClassFactory(Kinds.B) { >BKind : BKind > : ^^^^^ >ClassFactory(Kinds.B) : ClassFactory<"B">.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ >ClassFactory : (kind: TKind) => typeof (Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Kinds.B : "B" > : ^^^ >Kinds : typeof Kinds @@ -136,9 +136,9 @@ export class CKind extends ClassFactory(Kinds.C) { >CKind : CKind > : ^^^^^ >ClassFactory(Kinds.C) : ClassFactory<"C">.(Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^ >ClassFactory : (kind: TKind) => typeof (Anonymous class) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Kinds.C : "C" > : ^^^ >Kinds : typeof Kinds diff --git a/tests/baselines/reference/declarationQuotedMembers.types b/tests/baselines/reference/declarationQuotedMembers.types index 00d49732df606..a71a3cf1cc155 100644 --- a/tests/baselines/reference/declarationQuotedMembers.types +++ b/tests/baselines/reference/declarationQuotedMembers.types @@ -9,5 +9,5 @@ export const example = mapped; >example : { "a-b-c": number; } > : ^^^^^^^^^^^^^^^^^^^^ >mapped : { "a-b-c": number; } -> : ^^^^^^^^^^^^^^^^^^^^ +> : diff --git a/tests/baselines/reference/declarationsAndAssignments.types b/tests/baselines/reference/declarationsAndAssignments.types index 40dcbb32c1463..813f7d4d5fe53 100644 --- a/tests/baselines/reference/declarationsAndAssignments.types +++ b/tests/baselines/reference/declarationsAndAssignments.types @@ -686,7 +686,7 @@ function f13() { function f14([a = 1, [b = "hello", { x, y: c = false }]]) { >f14 : ([a, [b, { x, y: c }]]: [number, [string, { x: any; y?: boolean; }]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >1 : 1 @@ -720,7 +720,7 @@ f14([2, ["abc", { x: 0, y: true }]]); >f14([2, ["abc", { x: 0, y: true }]]) : void > : ^^^^ >f14 : ([a, [b, { x, y: c }]]: [number, [string, { x: any; y?: boolean; }]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[2, ["abc", { x: 0, y: true }]] : [number, [string, { x: number; y: true; }]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 @@ -744,7 +744,7 @@ f14([2, ["abc", { x: 0 }]]); >f14([2, ["abc", { x: 0 }]]) : void > : ^^^^ >f14 : ([a, [b, { x, y: c }]]: [number, [string, { x: any; y?: boolean; }]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[2, ["abc", { x: 0 }]] : [number, [string, { x: number; }]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 @@ -764,7 +764,7 @@ f14([2, ["abc", { y: false }]]); // Error, no x >f14([2, ["abc", { y: false }]]) : void > : ^^^^ >f14 : ([a, [b, { x, y: c }]]: [number, [string, { x: any; y?: boolean; }]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[2, ["abc", { y: false }]] : [number, [string, { y: false; }]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >2 : 2 @@ -849,7 +849,7 @@ function f16() { function f17({ a = "", b = 0, c = false }) { >f17 : ({ a, b, c }: { a?: string; b?: number; c?: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ >"" : "" @@ -868,7 +868,7 @@ f17({}); >f17({}) : void > : ^^^^ >f17 : ({ a, b, c }: { a?: string; b?: number; c?: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -876,7 +876,7 @@ f17({ a: "hello" }); >f17({ a: "hello" }) : void > : ^^^^ >f17 : ({ a, b, c }: { a?: string; b?: number; c?: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: "hello" } : { a: string; } > : ^^^^^^^^^^^^^^ >a : string @@ -888,7 +888,7 @@ f17({ c: true }); >f17({ c: true }) : void > : ^^^^ >f17 : ({ a, b, c }: { a?: string; b?: number; c?: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ c: true } : { c: true; } > : ^^^^^^^^^^^^ >c : true @@ -900,7 +900,7 @@ f17(f15()); >f17(f15()) : void > : ^^^^ >f17 : ({ a, b, c }: { a?: string; b?: number; c?: boolean; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f15() : { a: string; b: number; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f15 : () => { a: string; b: number; c: boolean; } @@ -1130,7 +1130,7 @@ function f19() { function f20(v: [number, number, number]) { >f20 : (v: [number, number, number]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : [number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1261,7 +1261,7 @@ function f20(v: [number, number, number]) { function f21(v: [number, string, boolean]) { >f21 : (v: [number, string, boolean]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >v : [number, string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.types b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.types index b12bec5a09022..3cfb9f1473d6d 100644 --- a/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.types +++ b/tests/baselines/reference/declarationsForFileShadowingGlobalNoError.types @@ -27,9 +27,9 @@ type Constructor = new (...args: any[]) => any export const mixin = (Base: Constructor) => { >mixin : (Base: Constructor) => typeof (Anonymous class) -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(Base: Constructor) => { return class extends Base { get(domNode: DOMNode) {} }} : (Base: Constructor) => typeof (Anonymous class) -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Base : Constructor > : ^^^^^^^^^^^ @@ -41,7 +41,7 @@ export const mixin = (Base: Constructor) => { get(domNode: DOMNode) {} >get : (domNode: DOMNode) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >domNode : globalThis.Node > : ^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.types b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.types index 282c4d65b51ce..42c1437855738 100644 --- a/tests/baselines/reference/declarationsForIndirectTypeAliasReference.types +++ b/tests/baselines/reference/declarationsForIndirectTypeAliasReference.types @@ -35,7 +35,7 @@ import {StringHash, StringHash2} from "./b"; export { doSome >doSome : (arg1: string, arg2?: StringHash, arg3?: StringHash2) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ } const MAP: StringHash = { @@ -68,7 +68,7 @@ const MAP2: StringHash2 = { function doSome(arg1: string, >doSome : (arg1: string, arg2?: StringHash, arg3?: StringHash2) => void -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >arg1 : string > : ^^^^^^ diff --git a/tests/baselines/reference/declarationsIndirectGeneratedAliasReference.types b/tests/baselines/reference/declarationsIndirectGeneratedAliasReference.types index 0f98ff554f275..6ff94b36aa85d 100644 --- a/tests/baselines/reference/declarationsIndirectGeneratedAliasReference.types +++ b/tests/baselines/reference/declarationsIndirectGeneratedAliasReference.types @@ -17,7 +17,7 @@ export type ExtendedCtor = {x: number, ext: T}; export interface CtorConstructor { extends(x: T): ExtendedCtor; >extends : (x: T) => ExtendedCtor -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >x : T > : ^ } @@ -55,11 +55,11 @@ export const MyComp = Ctor.extends({foo: "bar"}); >Ctor.extends({foo: "bar"}) : import("node_modules/mod/ctor").ExtendedCtor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Ctor.extends : (x: T) => import("node_modules/mod/ctor").ExtendedCtor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Ctor : import("node_modules/mod/ctor").CtorConstructor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >extends : (x: T) => import("node_modules/mod/ctor").ExtendedCtor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{foo: "bar"} : { foo: string; } > : ^^^^^^^^^^^^^^^^ >foo : string diff --git a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.types b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.types index 33841fd1e06f0..5d8426195980e 100644 --- a/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.types +++ b/tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.types @@ -15,29 +15,29 @@ export type Value, U> = U[K]; export const updateIfChanged = (t: T) => { >updateIfChanged : (t: T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: T) => T) => T; set: (newU: T) => T; } -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >(t: T) => { const reduce = (u: U, update: (u: U) => T) => { const set = (newU: U) => Object.is(u, newU) ? t : update(newU); return Object.assign( >(key: K) => reduce>(u[key as keyof U] as Value, (v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); }), { map: (updater: (u: U) => U) => set(updater(u)), set }); }; return reduce(t, (t: T) => t);} : (t: T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: T) => T) => T; set: (newU: T) => T; } -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >t : T > : ^ const reduce = (u: U, update: (u: U) => T) => { >reduce : (u: U, update: (u: U) => T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^ ^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(u: U, update: (u: U) => T) => { const set = (newU: U) => Object.is(u, newU) ? t : update(newU); return Object.assign( >(key: K) => reduce>(u[key as keyof U] as Value, (v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); }), { map: (updater: (u: U) => U) => set(updater(u)), set }); } : (u: U, update: (u: U) => T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^ ^^^^^ ^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : >u : U > : ^ >update : (u: U) => T -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >u : U > : ^ const set = (newU: U) => Object.is(u, newU) ? t : update(newU); >set : (newU: U) => T -> : ^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >(newU: U) => Object.is(u, newU) ? t : update(newU) : (newU: U) => T -> : ^^^^^^^ ^^^^^^ +> : >newU : U > : ^ >Object.is(u, newU) ? t : update(newU) : T @@ -45,11 +45,11 @@ export const updateIfChanged = (t: T) => { >Object.is(u, newU) : boolean > : ^^^^^^^ >Object.is : (value1: any, value2: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >is : (value1: any, value2: any) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^ >u : U > : ^ >newU : U @@ -59,31 +59,31 @@ export const updateIfChanged = (t: T) => { >update(newU) : T > : ^ >update : (u: U) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >newU : U > : ^ return Object.assign( >Object.assign( >(key: K) => reduce>(u[key as keyof U] as Value, (v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); }), { map: (updater: (u: U) => U) => set(updater(u)), set }) : ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >Object.assign : { (target: T_1, source: U_1): T_1 & U_1; (target: T_2, source1: U_2, source2: V): T_2 & U_2 & V; (target: T_3, source1: U_3, source2: V_1, source3: W): T_3 & U_3 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T_1, source: U_1): T_1 & U_1; (target: T_2, source1: U_2, source2: V): T_2 & U_2 & V; (target: T_3, source1: U_3, source2: V_1, source3: W): T_3 & U_3 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >(key: K) => >>(key: K) => reduce>(u[key as keyof U] as Value, (v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); }) : (key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >key : K > : ^ reduce>(u[key as keyof U] as Value, (v: Value) => { >reduce>(u[key as keyof U] as Value, (v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); }) : (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => (>>>>>>>>>>>(key: K_11) => any & { map: (updater: (u: Value>>>>>>>>>>>) => Value>>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >reduce : (u: U, update: (u: U) => T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >u[key as keyof U] as Value : Value > : ^^^^^^^^^^^ >u[key as keyof U] : U[keyof U] @@ -95,7 +95,7 @@ export const updateIfChanged = (t: T) => { >key : K > : ^ >(v: Value) => { return update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })); } : (v: Value) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >v : Value > : ^^^^^^^^^^^ @@ -103,25 +103,25 @@ export const updateIfChanged = (t: T) => { >update(Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v })) : T > : ^ >update : (u: U) => T -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >Object.assign(Array.isArray(u) ? [] : {}, u, { [key]: v }) : U & { [x: string]: Value; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.assign : { (target: T_1, source: U_1): T_1 & U_1; (target: T_2, source1: U_2, source2: V): T_2 & U_2 & V; (target: T_3, source1: U_3, source2: V_1, source3: W): T_3 & U_3 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ >assign : { (target: T_1, source: U_1): T_1 & U_1; (target: T_2, source1: U_2, source2: V): T_2 & U_2 & V; (target: T_3, source1: U_3, source2: V_1, source3: W): T_3 & U_3 & V_1 & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ >Array.isArray(u) ? [] : {} : undefined[] | {} > : ^^^^^^^^^^^^^^^^ >Array.isArray(u) : boolean > : ^^^^^^^ >Array.isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ >isArray : (arg: any) => arg is any[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^ >u : U > : ^ >[] : undefined[] @@ -142,38 +142,38 @@ export const updateIfChanged = (t: T) => { }), { map: (updater: (u: U) => U) => set(updater(u)), set }); >{ map: (updater: (u: U) => U) => set(updater(u)), set } : { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >map : (updater: (u: U) => U) => T -> : ^^^^^^^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >(updater: (u: U) => U) => set(updater(u)) : (updater: (u: U) => U) => T -> : ^^^^^^^^^^ ^^^^^^ +> : >updater : (u: U) => U -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >u : U > : ^ >set(updater(u)) : T > : ^ >set : (newU: U) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >updater(u) : U > : ^ >updater : (u: U) => U -> : ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >u : U > : ^ >set : (newU: U) => T -> : ^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ }; return reduce(t, (t: T) => t); >reduce(t, (t: T) => t) : ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: T) => T) => T; set: (newU: T) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >reduce : (u: U, update: (u: U) => T) => ((key: K) => (>(key: K_1) => (>>(key: K_2) => (>>>(key: K_3) => (>>>>(key: K_4) => (>>>>>(key: K_5) => (>>>>>>(key: K_6) => (>>>>>>>(key: K_7) => (>>>>>>>>(key: K_8) => (>>>>>>>>>(key: K_9) => (>>>>>>>>>>(key: K_10) => any & { map: (updater: (u: Value>>>>>>>>>>) => Value>>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>>) => Value>>>>>>>>>) => T; set: (newU: Value>>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>>) => Value>>>>>>>>) => T; set: (newU: Value>>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>>) => Value>>>>>>>) => T; set: (newU: Value>>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>>) => Value>>>>>>) => T; set: (newU: Value>>>>>>) => T; }) & { map: (updater: (u: Value>>>>>) => Value>>>>>) => T; set: (newU: Value>>>>>) => T; }) & { map: (updater: (u: Value>>>>) => Value>>>>) => T; set: (newU: Value>>>>) => T; }) & { map: (updater: (u: Value>>>) => Value>>>) => T; set: (newU: Value>>>) => T; }) & { map: (updater: (u: Value>>) => Value>>) => T; set: (newU: Value>>) => T; }) & { map: (updater: (u: Value>) => Value>) => T; set: (newU: Value>) => T; }) & { map: (updater: (u: Value) => Value) => T; set: (newU: Value) => T; }) & { map: (updater: (u: U) => U) => T; set: (newU: U) => T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ >(t: T) => t : (t: T) => T -> : ^^^^ ^^^^^^ +> : ^ ^^ ^^^^^^ >t : T > : ^ >t : T @@ -185,15 +185,15 @@ export const updateIfChanged = (t: T) => { export const testRecFun = (parent: T) => { >testRecFun : (parent: T) => { result: T; deeper: (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(parent: T) => { return { result: parent, deeper: (child: U) => testRecFun({ ...parent, ...child }) };} : (parent: T) => { result: T; deeper: (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >parent : T > : ^ return { >{ result: parent, deeper: (child: U) => testRecFun({ ...parent, ...child }) } : { result: T; deeper: (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ result: parent, >result : T @@ -203,17 +203,17 @@ export const testRecFun = (parent: T) => { deeper: (child: U) => >deeper : (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(child: U) => testRecFun({ ...parent, ...child }) : (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >child : U > : ^ testRecFun({ ...parent, ...child }) >testRecFun({ ...parent, ...child }) : { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: (child: U_11) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testRecFun : (parent: T) => { result: T; deeper: (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ ...parent, ...child } : T & U > : ^^^^^ >parent : T @@ -227,11 +227,11 @@ export const testRecFun = (parent: T) => { let p1 = testRecFun({ one: '1' }) >p1 : { result: { one: string; }; deeper: (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >testRecFun({ one: '1' }) : { result: { one: string; }; deeper: (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >testRecFun : (parent: T) => { result: T; deeper: (child: U) => { result: T & U; deeper: (child: U_1) => { result: T & U & U_1; deeper: (child: U_2) => { result: T & U & U_1 & U_2; deeper: (child: U_3) => { result: T & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: T & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: T & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ one: '1' } : { one: string; } > : ^^^^^^^^^^^^^^^^ >one : string @@ -247,7 +247,7 @@ void p1.result.one; >p1.result : { one: string; } > : ^^^^^^^^^^^^^^^^ >p1 : { result: { one: string; }; deeper: (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } > : ^^^^^^^^^^^^^^^^ >one : string @@ -255,15 +255,15 @@ void p1.result.one; let p2 = p1.deeper({ two: '2' }) >p2 : { result: { one: string; } & { two: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1.deeper({ two: '2' }) : { result: { one: string; } & { two: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >p1.deeper : (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p1 : { result: { one: string; }; deeper: (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >deeper : (child: U) => { result: { one: string; } & U; deeper: (child: U_1) => { result: { one: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: { one: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ two: '2' } : { two: string; } > : ^^^^^^^^^^^^^^^^ >two : string @@ -279,7 +279,7 @@ void p2.result.one; >p2.result : { one: string; } & { two: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p2 : { result: { one: string; } & { two: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } & { two: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >one : string @@ -293,7 +293,7 @@ void p2.result.two; >p2.result : { one: string; } & { two: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p2 : { result: { one: string; } & { two: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } & { two: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >two : string @@ -301,15 +301,15 @@ void p2.result.two; let p3 = p2.deeper({ three: '3' }) >p3 : { result: { one: string; } & { two: string; } & { three: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & { three: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p2.deeper({ three: '3' }) : { result: { one: string; } & { two: string; } & { three: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & { three: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >p2.deeper : (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p2 : { result: { one: string; } & { two: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >deeper : (child: U) => { result: { one: string; } & { two: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => { result: { one: string; } & { two: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9 & U_10; deeper: any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ three: '3' } : { three: string; } > : ^^^^^^^^^^^^^^^^^^ >three : string @@ -325,7 +325,7 @@ void p3.result.one; >p3.result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p3 : { result: { one: string; } & { two: string; } & { three: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & { three: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >one : string @@ -339,7 +339,7 @@ void p3.result.two; >p3.result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p3 : { result: { one: string; } & { two: string; } & { three: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & { three: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >two : string @@ -353,7 +353,7 @@ void p3.result.three; >p3.result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p3 : { result: { one: string; } & { two: string; } & { three: string; }; deeper: (child: U) => { result: { one: string; } & { two: string; } & { three: string; } & U; deeper: (child: U_1) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1; deeper: (child: U_2) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2; deeper: (child: U_3) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3; deeper: (child: U_4) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4; deeper: (child: U_5) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5; deeper: (child: U_6) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6; deeper: (child: U_7) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7; deeper: (child: U_8) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8; deeper: (child: U_9) => { result: { one: string; } & { two: string; } & { three: string; } & U & U_1 & U_2 & U_3 & U_4 & U_5 & U_6 & U_7 & U_8 & U_9; deeper: (child: U_10) => any; }; }; }; }; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : { one: string; } & { two: string; } & { three: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >three : string diff --git a/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.types b/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.types index 523a01af18dd5..6f4e3c7f076bc 100644 --- a/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.types +++ b/tests/baselines/reference/declareExternalModuleWithExportAssignedFundule.types @@ -23,17 +23,17 @@ declare module "express" { enable(name: string): ExpressServer; >enable : (name: string) => ExpressServer -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >name : string > : ^^^^^^ post(path: RegExp, handler: (req: Function) => void ): void; >post : (path: RegExp, handler: (req: Function) => void) => void -> : ^^^^^^^ ^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >path : RegExp > : ^^^^^^ >handler : (req: Function) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >req : Function > : ^^^^^^^^ diff --git a/tests/baselines/reference/declareFileExportAssignment.types b/tests/baselines/reference/declareFileExportAssignment.types index ff8f6f117421a..856d606e88d28 100644 --- a/tests/baselines/reference/declareFileExportAssignment.types +++ b/tests/baselines/reference/declareFileExportAssignment.types @@ -11,13 +11,13 @@ module m2 { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types index 34f7d67325c0d..9f44e8378888e 100644 --- a/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types +++ b/tests/baselines/reference/declareFileExportAssignmentWithVarFromVariableStatement.types @@ -11,13 +11,13 @@ module m2 { export interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/declaredExternalModule.types b/tests/baselines/reference/declaredExternalModule.types index 565c067f13f08..e6ee11a75b247 100644 --- a/tests/baselines/reference/declaredExternalModule.types +++ b/tests/baselines/reference/declaredExternalModule.types @@ -18,13 +18,13 @@ declare module 'connect' { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ diff --git a/tests/baselines/reference/declaredExternalModuleWithExportAssignment.types b/tests/baselines/reference/declaredExternalModuleWithExportAssignment.types index 3eafdbe8d8ffc..c78e2be35e258 100644 --- a/tests/baselines/reference/declaredExternalModuleWithExportAssignment.types +++ b/tests/baselines/reference/declaredExternalModuleWithExportAssignment.types @@ -15,13 +15,13 @@ declare module 'connect' { interface connectExport { use: (mod: connectModule) => connectExport; >use : (mod: connectModule) => connectExport -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >mod : connectModule > : ^^^^^^^^^^^^^ listen: (port: number) => void; >listen : (port: number) => void -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >port : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratedBlockScopedClass1.types b/tests/baselines/reference/decoratedBlockScopedClass1.types index ecacdf47ca18c..ecf8a9e61761d 100644 --- a/tests/baselines/reference/decoratedBlockScopedClass1.types +++ b/tests/baselines/reference/decoratedBlockScopedClass1.types @@ -3,22 +3,22 @@ === a.ts === function decorator() { >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ return (target: new (...args: any[]) => any) => {} >(target: new (...args: any[]) => any) => {} : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >target : new (...args: any[]) => any -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @decorator() >decorator() : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ class Foo { >Foo : Foo diff --git a/tests/baselines/reference/decoratedBlockScopedClass2.types b/tests/baselines/reference/decoratedBlockScopedClass2.types index 93921b33972d8..70bf8dc0c7748 100644 --- a/tests/baselines/reference/decoratedBlockScopedClass2.types +++ b/tests/baselines/reference/decoratedBlockScopedClass2.types @@ -3,13 +3,13 @@ === a.ts === function decorator() { >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ return (target: new (...args: any[]) => any) => {} >(target: new (...args: any[]) => any) => {} : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >target : new (...args: any[]) => any -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @@ -17,9 +17,9 @@ function decorator() { try { @decorator() >decorator() : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ class Foo { >Foo : Foo diff --git a/tests/baselines/reference/decoratedBlockScopedClass3.types b/tests/baselines/reference/decoratedBlockScopedClass3.types index 530290b4bcebc..bdfa131f00fba 100644 --- a/tests/baselines/reference/decoratedBlockScopedClass3.types +++ b/tests/baselines/reference/decoratedBlockScopedClass3.types @@ -3,22 +3,22 @@ === a.ts === function decorator() { >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ return (target: new (...args: any[]) => any) => {} >(target: new (...args: any[]) => any) => {} : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >target : new (...args: any[]) => any -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^^^^^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ } @decorator() >decorator() : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ class Foo { >Foo : Foo @@ -48,9 +48,9 @@ Foo.func(); try { @decorator() >decorator() : (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >decorator : () => (target: new (...args: any[]) => any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^^^^^^^^ class Foo { >Foo : Foo diff --git a/tests/baselines/reference/decoratedClassExportsCommonJS1.types b/tests/baselines/reference/decoratedClassExportsCommonJS1.types index a931e19930fe4..6ab3cdbe3dfff 100644 --- a/tests/baselines/reference/decoratedClassExportsCommonJS1.types +++ b/tests/baselines/reference/decoratedClassExportsCommonJS1.types @@ -12,7 +12,7 @@ declare var Something: any; >v : () => typeof Testing123 > : ^^^^^^^^^^^^^^^^^^^^^^^ >() => Testing123 : () => typeof Testing123 -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >Testing123 : typeof Testing123 > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/decoratedClassExportsCommonJS2.types b/tests/baselines/reference/decoratedClassExportsCommonJS2.types index 9ff7b6adc2ec3..b4f6bd310899c 100644 --- a/tests/baselines/reference/decoratedClassExportsCommonJS2.types +++ b/tests/baselines/reference/decoratedClassExportsCommonJS2.types @@ -3,7 +3,7 @@ === a.ts === declare function forwardRef(x: any): any; >forwardRef : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any declare var Something: any; @@ -17,7 +17,7 @@ declare var Something: any; >v : () => typeof Testing123 > : ^^^^^^^^^^^^^^^^^^^^^^^ >() => Testing123 : () => typeof Testing123 -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >Testing123 : typeof Testing123 > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/decoratedClassExportsSystem1.types b/tests/baselines/reference/decoratedClassExportsSystem1.types index cc15ec721b7f1..10a06b6da9104 100644 --- a/tests/baselines/reference/decoratedClassExportsSystem1.types +++ b/tests/baselines/reference/decoratedClassExportsSystem1.types @@ -3,7 +3,7 @@ === a.ts === declare function forwardRef(x: any): any; >forwardRef : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any declare var Something: any; @@ -17,7 +17,7 @@ declare var Something: any; >v : () => typeof Testing123 > : ^^^^^^^^^^^^^^^^^^^^^^^ >() => Testing123 : () => typeof Testing123 -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >Testing123 : typeof Testing123 > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/decoratedClassExportsSystem2.types b/tests/baselines/reference/decoratedClassExportsSystem2.types index 0cf97fd70254a..d2594cf7e9428 100644 --- a/tests/baselines/reference/decoratedClassExportsSystem2.types +++ b/tests/baselines/reference/decoratedClassExportsSystem2.types @@ -3,7 +3,7 @@ === a.ts === declare function forwardRef(x: any): any; >forwardRef : (x: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : any declare var Something: any; @@ -17,7 +17,7 @@ declare var Something: any; >v : () => typeof Testing123 > : ^^^^^^^^^^^^^^^^^^^^^^^ >() => Testing123 : () => typeof Testing123 -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : >Testing123 : typeof Testing123 > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/decoratedClassFromExternalModule.types b/tests/baselines/reference/decoratedClassFromExternalModule.types index 1375d1afdfd19..49b9730a3ea7f 100644 --- a/tests/baselines/reference/decoratedClassFromExternalModule.types +++ b/tests/baselines/reference/decoratedClassFromExternalModule.types @@ -3,12 +3,12 @@ === decorated.ts === function decorate(target: any) { } >decorate : (target: any) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >target : any @decorate >decorate : (target: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ export default class Decorated { } >Decorated : Decorated diff --git a/tests/baselines/reference/decoratorCallGeneric.types b/tests/baselines/reference/decoratorCallGeneric.types index 95b8782d7d5d8..21592e1ff96d1 100644 --- a/tests/baselines/reference/decoratorCallGeneric.types +++ b/tests/baselines/reference/decoratorCallGeneric.types @@ -12,13 +12,13 @@ interface I { } function dec(c: I) { } >dec : (c: I) => void -> : ^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >c : I > : ^^^^ @dec >dec : (c: I) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorChecksFunctionBodies.types b/tests/baselines/reference/decoratorChecksFunctionBodies.types index c375d27dfe063..361c258277f71 100644 --- a/tests/baselines/reference/decoratorChecksFunctionBodies.types +++ b/tests/baselines/reference/decoratorChecksFunctionBodies.types @@ -4,7 +4,7 @@ // from #2971 function func(s: string): void { >func : (s: string) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ } @@ -15,9 +15,9 @@ class A { @((x, p, d) => { >((x, p, d) => { var a = 3; func(a); return d; }) : (x: A, p: "m", d: TypedPropertyDescriptor<() => void>) => TypedPropertyDescriptor<() => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >(x, p, d) => { var a = 3; func(a); return d; } : (x: A, p: "m", d: TypedPropertyDescriptor<() => void>) => TypedPropertyDescriptor<() => void> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ >x : A > : ^ >p : "m" @@ -35,7 +35,7 @@ class A { >func(a) : void > : ^^^^ >func : (s: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorInAmbientContext.types b/tests/baselines/reference/decoratorInAmbientContext.types index 5fc7953e26843..3571a5a13674b 100644 --- a/tests/baselines/reference/decoratorInAmbientContext.types +++ b/tests/baselines/reference/decoratorInAmbientContext.types @@ -3,7 +3,7 @@ === decoratorInAmbientContext.ts === declare function decorator(target: any, key: any): any; >decorator : (target: any, key: any) => any -> : ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : any >key : any @@ -23,13 +23,13 @@ class Foo { @decorator declare a: number; >decorator : (target: any, key: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >a : number > : ^^^^^^ @decorator declare [b]: number; >decorator : (target: any, key: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >[b] : number > : ^^^^^^ >b : unique symbol diff --git a/tests/baselines/reference/decoratorInJsFile.types b/tests/baselines/reference/decoratorInJsFile.types index 5bec43ae554f7..7978e9df19f5d 100644 --- a/tests/baselines/reference/decoratorInJsFile.types +++ b/tests/baselines/reference/decoratorInJsFile.types @@ -11,7 +11,7 @@ class SomeClass { foo(x: number) { >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorInJsFile1.types b/tests/baselines/reference/decoratorInJsFile1.types index 2928e85396cc9..8ac8292b0d7a4 100644 --- a/tests/baselines/reference/decoratorInJsFile1.types +++ b/tests/baselines/reference/decoratorInJsFile1.types @@ -11,7 +11,7 @@ class SomeClass { foo(x: number) { >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorInstantiateModulesInFunctionBodies.types b/tests/baselines/reference/decoratorInstantiateModulesInFunctionBodies.types index 17cff1158ad82..6bc3ddc2675eb 100644 --- a/tests/baselines/reference/decoratorInstantiateModulesInFunctionBodies.types +++ b/tests/baselines/reference/decoratorInstantiateModulesInFunctionBodies.types @@ -15,12 +15,12 @@ import { test } from './a'; function filter(handler: any) { >filter : (handler: any) => (target: any, propertyKey: string) => void -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >handler : any return function (target: any, propertyKey: string) { >function (target: any, propertyKey: string) { // ... } : (target: any, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -35,9 +35,9 @@ class Wat { @filter(() => test == 'abc') >filter(() => test == 'abc') : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >filter : (handler: any) => (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >() => test == 'abc' : () => boolean > : ^^^^^^^^^^^^^ >test == 'abc' : boolean diff --git a/tests/baselines/reference/decoratorMetadata.types b/tests/baselines/reference/decoratorMetadata.types index f9693a1dfd52f..a7e9a49536863 100644 --- a/tests/baselines/reference/decoratorMetadata.types +++ b/tests/baselines/reference/decoratorMetadata.types @@ -30,7 +30,7 @@ class MyComponent { method(x: this) { >method : (x: this) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : this > : ^^^^ } diff --git a/tests/baselines/reference/decoratorMetadataElidedImport(module=commonjs).types b/tests/baselines/reference/decoratorMetadataElidedImport(module=commonjs).types index 8f0c1a631d204..62506817fec53 100644 --- a/tests/baselines/reference/decoratorMetadataElidedImport(module=commonjs).types +++ b/tests/baselines/reference/decoratorMetadataElidedImport(module=commonjs).types @@ -12,7 +12,7 @@ import { Observable } from './observable'; function whatever(a: any, b: any, c: any) {} >whatever : (a: any, b: any, c: any) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : any >b : any >c : any @@ -23,17 +23,17 @@ class Test { foo( >foo : (arg1: string, arg2: number) => Observable -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ @whatever arg1: string, >whatever : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg1 : string > : ^^^^^^ @whatever arg2: number >whatever : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg2 : number > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorMetadataElidedImport(module=esnext).types b/tests/baselines/reference/decoratorMetadataElidedImport(module=esnext).types index 8f0c1a631d204..62506817fec53 100644 --- a/tests/baselines/reference/decoratorMetadataElidedImport(module=esnext).types +++ b/tests/baselines/reference/decoratorMetadataElidedImport(module=esnext).types @@ -12,7 +12,7 @@ import { Observable } from './observable'; function whatever(a: any, b: any, c: any) {} >whatever : (a: any, b: any, c: any) => void -> : ^^^^ ^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : any >b : any >c : any @@ -23,17 +23,17 @@ class Test { foo( >foo : (arg1: string, arg2: number) => Observable -> : ^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ @whatever arg1: string, >whatever : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg1 : string > : ^^^^^^ @whatever arg2: number >whatever : (a: any, b: any, c: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >arg2 : number > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorMetadataNoStrictNull.types b/tests/baselines/reference/decoratorMetadataNoStrictNull.types index e59b5be3f49ad..77b150bc1c125 100644 --- a/tests/baselines/reference/decoratorMetadataNoStrictNull.types +++ b/tests/baselines/reference/decoratorMetadataNoStrictNull.types @@ -3,9 +3,9 @@ === decoratorMetadataNoStrictNull.ts === const dec = (obj: {}, prop: string) => undefined >dec : (obj: {}, prop: string) => any -> : ^^^^^^ ^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >(obj: {}, prop: string) => undefined : (obj: {}, prop: string) => any -> : ^^^^^^ ^^^^^^^^ ^^^^^^^^ +> : >obj : {} > : ^^ >prop : string @@ -19,13 +19,13 @@ class Foo { @dec public foo: string | null; >dec : (obj: {}, prop: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >foo : string > : ^^^^^^ @dec public bar: string; >dec : (obj: {}, prop: string) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^ >bar : string > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorMetadataOnInferredType.types b/tests/baselines/reference/decoratorMetadataOnInferredType.types index 7d190296697f1..ff3fecce2b39e 100644 --- a/tests/baselines/reference/decoratorMetadataOnInferredType.types +++ b/tests/baselines/reference/decoratorMetadataOnInferredType.types @@ -3,11 +3,11 @@ === decoratorMetadataOnInferredType.ts === declare var console: { >console : { log(msg: string): void; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ log(msg: string): void; >log : (msg: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >msg : string > : ^^^^^^ @@ -21,18 +21,18 @@ class A { >console.log('new A') : void > : ^^^^ >console.log : (msg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >console : { log(msg: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >log : (msg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'new A' : "new A" > : ^^^^^^^ } function decorator(target: Object, propertyKey: string) { >decorator : (target: Object, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >target : Object > : ^^^^^^ >propertyKey : string @@ -45,7 +45,7 @@ export class B { @decorator >decorator : (target: Object, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ x = new A(); >x : A diff --git a/tests/baselines/reference/decoratorMetadataPromise.types b/tests/baselines/reference/decoratorMetadataPromise.types index 0c131649bb71c..b33797c6b8503 100644 --- a/tests/baselines/reference/decoratorMetadataPromise.types +++ b/tests/baselines/reference/decoratorMetadataPromise.types @@ -33,7 +33,7 @@ class A { baz(n: Promise): Promise { return n; } >baz : (n: Promise) => Promise -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >n : Promise > : ^^^^^^^^^^^^^^^ >n : Promise diff --git a/tests/baselines/reference/decoratorMetadataRestParameterWithImportedType.types b/tests/baselines/reference/decoratorMetadataRestParameterWithImportedType.types index 6bcf5e1ffe9c9..923d136240408 100644 --- a/tests/baselines/reference/decoratorMetadataRestParameterWithImportedType.types +++ b/tests/baselines/reference/decoratorMetadataRestParameterWithImportedType.types @@ -44,7 +44,7 @@ function annotation(): ClassDecorator { return (target: any): void => { }; >(target: any): void => { } : (target: any) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >target : any } @@ -54,7 +54,7 @@ function annotation1(): MethodDecorator { return (target: any): void => { }; >(target: any): void => { } : (target: any) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >target : any } @@ -97,7 +97,7 @@ export class ClassA { foo(... args: SomeClass1[]) { >foo : (...args: SomeClass1[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : SomeClass1[] > : ^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorMetadataWithConstructorType.types b/tests/baselines/reference/decoratorMetadataWithConstructorType.types index 8d16ac0a72666..e14b431ed88c7 100644 --- a/tests/baselines/reference/decoratorMetadataWithConstructorType.types +++ b/tests/baselines/reference/decoratorMetadataWithConstructorType.types @@ -3,11 +3,11 @@ === decoratorMetadataWithConstructorType.ts === declare var console: { >console : { log(msg: string): void; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ log(msg: string): void; >log : (msg: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >msg : string > : ^^^^^^ @@ -21,18 +21,18 @@ class A { >console.log('new A') : void > : ^^^^ >console.log : (msg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >console : { log(msg: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >log : (msg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >'new A' : "new A" > : ^^^^^^^ } function decorator(target: Object, propertyKey: string) { >decorator : (target: Object, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >target : Object > : ^^^^^^ >propertyKey : string @@ -45,7 +45,7 @@ export class B { @decorator >decorator : (target: Object, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ x: A = new A(); >x : A diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types index a2659d8015bf6..42cbbe0667ed2 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision.types @@ -18,7 +18,7 @@ import {db} from './db'; function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -26,7 +26,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types index 807c256bb5d6c..95c9a2e1754e7 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision2.types @@ -20,7 +20,7 @@ import {db as Database} from './db'; function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -28,7 +28,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types index 44df99964c05f..3689995d560e6 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision3.types @@ -7,7 +7,7 @@ import db = require('./db'); function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -15,7 +15,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision4.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision4.types index bf09b07237f17..ab1b5d1ea36a2 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision4.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision4.types @@ -18,7 +18,7 @@ import db from './db'; // error no default export function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any > : ^^^ @@ -28,7 +28,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types index 691786df107e4..904662ff2c65a 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision5.types @@ -18,7 +18,7 @@ import db from './db'; function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -26,7 +26,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types index 076febc8bbcd1..558cf75322dab 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision6.types @@ -18,7 +18,7 @@ import database from './db'; function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -26,7 +26,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision7.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision7.types index da88f09d6dc39..c7b41713bff79 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision7.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision7.types @@ -18,7 +18,7 @@ import db from './db'; function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any > : ^^^ @@ -28,7 +28,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types index a9170448b3797..01ec7d466daff 100644 --- a/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types +++ b/tests/baselines/reference/decoratorMetadataWithImportDeclarationNameCollision8.types @@ -7,7 +7,7 @@ import database = require('./db'); function someDecorator(target) { >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >target : any return target; @@ -15,7 +15,7 @@ function someDecorator(target) { } @someDecorator >someDecorator : (target: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ class MyClass { >MyClass : MyClass diff --git a/tests/baselines/reference/decoratorMetadataWithTypeOnlyImport.types b/tests/baselines/reference/decoratorMetadataWithTypeOnlyImport.types index 914eae5c3a7da..9500d17427675 100644 --- a/tests/baselines/reference/decoratorMetadataWithTypeOnlyImport.types +++ b/tests/baselines/reference/decoratorMetadataWithTypeOnlyImport.types @@ -30,7 +30,7 @@ class MyComponent { method(x: this) { >method : (x: this) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : this > : ^^^^ } diff --git a/tests/baselines/reference/decoratorOnArrowFunction.types b/tests/baselines/reference/decoratorOnArrowFunction.types index 028f2c87592c5..1304294f4453c 100644 --- a/tests/baselines/reference/decoratorOnArrowFunction.types +++ b/tests/baselines/reference/decoratorOnArrowFunction.types @@ -3,7 +3,7 @@ === decoratorOnArrowFunction.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @@ -13,5 +13,5 @@ var F = @dec () => { >dec () : unknown > : ^^^^^^^ >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClass1.es6.types b/tests/baselines/reference/decoratorOnClass1.es6.types index fab75c2cf14dc..8cc387a3d1bea 100644 --- a/tests/baselines/reference/decoratorOnClass1.es6.types +++ b/tests/baselines/reference/decoratorOnClass1.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass1.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass1.types b/tests/baselines/reference/decoratorOnClass1.types index c8792273dcbfa..f239552101796 100644 --- a/tests/baselines/reference/decoratorOnClass1.types +++ b/tests/baselines/reference/decoratorOnClass1.types @@ -3,13 +3,13 @@ === decoratorOnClass1.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass2.es6.types b/tests/baselines/reference/decoratorOnClass2.es6.types index ff2208c639f3a..70a0f935ea50a 100644 --- a/tests/baselines/reference/decoratorOnClass2.es6.types +++ b/tests/baselines/reference/decoratorOnClass2.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass2.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass2.types b/tests/baselines/reference/decoratorOnClass2.types index b2c71ec29cec7..166ab00d4c2ba 100644 --- a/tests/baselines/reference/decoratorOnClass2.types +++ b/tests/baselines/reference/decoratorOnClass2.types @@ -3,13 +3,13 @@ === decoratorOnClass2.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass3.es6.types b/tests/baselines/reference/decoratorOnClass3.es6.types index fa928c6dca711..3ab5e635aa030 100644 --- a/tests/baselines/reference/decoratorOnClass3.es6.types +++ b/tests/baselines/reference/decoratorOnClass3.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass3.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export default class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass3.types b/tests/baselines/reference/decoratorOnClass3.types index 8a3f6056cedf8..aa3d40a4a570f 100644 --- a/tests/baselines/reference/decoratorOnClass3.types +++ b/tests/baselines/reference/decoratorOnClass3.types @@ -3,14 +3,14 @@ === decoratorOnClass3.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ export @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass4.es6.types b/tests/baselines/reference/decoratorOnClass4.es6.types index a1d5a7369bb0e..ab6ab09461076 100644 --- a/tests/baselines/reference/decoratorOnClass4.es6.types +++ b/tests/baselines/reference/decoratorOnClass4.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass4.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export default class { } diff --git a/tests/baselines/reference/decoratorOnClass4.types b/tests/baselines/reference/decoratorOnClass4.types index e0a03a83a9580..a8a4f541044bf 100644 --- a/tests/baselines/reference/decoratorOnClass4.types +++ b/tests/baselines/reference/decoratorOnClass4.types @@ -9,9 +9,9 @@ declare function dec(): (target: T) => T; @dec() >dec() : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >dec : () => (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass5.es6.types b/tests/baselines/reference/decoratorOnClass5.es6.types index 90b4e45c776a4..be1988643e00d 100644 --- a/tests/baselines/reference/decoratorOnClass5.es6.types +++ b/tests/baselines/reference/decoratorOnClass5.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass5.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass5.types b/tests/baselines/reference/decoratorOnClass5.types index 9851ad37d5288..4de337142dba4 100644 --- a/tests/baselines/reference/decoratorOnClass5.types +++ b/tests/baselines/reference/decoratorOnClass5.types @@ -9,9 +9,9 @@ declare function dec(): (target: T) => T; @dec() >dec() : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >dec : () => (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass6.es6.types b/tests/baselines/reference/decoratorOnClass6.es6.types index ae1f342ae9736..bddeb3267c04e 100644 --- a/tests/baselines/reference/decoratorOnClass6.es6.types +++ b/tests/baselines/reference/decoratorOnClass6.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass6.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass7.es6.types b/tests/baselines/reference/decoratorOnClass7.es6.types index 6f656084a5182..3d8d618e930bb 100644 --- a/tests/baselines/reference/decoratorOnClass7.es6.types +++ b/tests/baselines/reference/decoratorOnClass7.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass7.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export default class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClass8.es6.types b/tests/baselines/reference/decoratorOnClass8.es6.types index ae29a336091e7..ef725cbb2c4a5 100644 --- a/tests/baselines/reference/decoratorOnClass8.es6.types +++ b/tests/baselines/reference/decoratorOnClass8.es6.types @@ -3,13 +3,13 @@ === decoratorOnClass8.es6.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ export default class { static y = 1; diff --git a/tests/baselines/reference/decoratorOnClass8.types b/tests/baselines/reference/decoratorOnClass8.types index a2710dff5ea7a..2d7bcc0c5ab55 100644 --- a/tests/baselines/reference/decoratorOnClass8.types +++ b/tests/baselines/reference/decoratorOnClass8.types @@ -11,9 +11,9 @@ declare function dec(): (target: Function, paramIndex: number) => void; @dec() >dec() : (target: Function, paramIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >dec : () => (target: Function, paramIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ class C { >C : C diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.es6.types b/tests/baselines/reference/decoratorOnClassAccessor1.es6.types index 23775c2bf4afa..b4899aa451731 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor1.es6.types +++ b/tests/baselines/reference/decoratorOnClassAccessor1.es6.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor1.es6.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -13,7 +13,7 @@ declare function dec(target: any, propertyKey: string, descriptor: TypedPrope export default class { @dec get accessor() { return 1; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/decoratorOnClassAccessor1.types b/tests/baselines/reference/decoratorOnClassAccessor1.types index 4440632a2d14d..0af51f00a9e86 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor1.types +++ b/tests/baselines/reference/decoratorOnClassAccessor1.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor1.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec get accessor() { return 1; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/decoratorOnClassAccessor2.types b/tests/baselines/reference/decoratorOnClassAccessor2.types index 2c328ac295901..24cfa4251fd9e 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor2.types +++ b/tests/baselines/reference/decoratorOnClassAccessor2.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor2.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec public get accessor() { return 1; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/decoratorOnClassAccessor3.types b/tests/baselines/reference/decoratorOnClassAccessor3.types index 369e3ebd526c5..d103ff47d7bb7 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor3.types +++ b/tests/baselines/reference/decoratorOnClassAccessor3.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor3.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -19,7 +19,7 @@ class C { >public : any > : ^^^ >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/decoratorOnClassAccessor4.types b/tests/baselines/reference/decoratorOnClassAccessor4.types index ea3a4380e4c42..38465c755c655 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor4.types +++ b/tests/baselines/reference/decoratorOnClassAccessor4.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor4.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec set accessor(value: number) { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >value : number diff --git a/tests/baselines/reference/decoratorOnClassAccessor5.types b/tests/baselines/reference/decoratorOnClassAccessor5.types index dab757de4fdec..1d160f33f48a2 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor5.types +++ b/tests/baselines/reference/decoratorOnClassAccessor5.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor5.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec public set accessor(value: number) { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >value : number diff --git a/tests/baselines/reference/decoratorOnClassAccessor6.types b/tests/baselines/reference/decoratorOnClassAccessor6.types index 28381455fa7b6..22aac82476519 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor6.types +++ b/tests/baselines/reference/decoratorOnClassAccessor6.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor6.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -19,7 +19,7 @@ class C { >public : any > : ^^^ >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accessor : number > : ^^^^^^ >value : number diff --git a/tests/baselines/reference/decoratorOnClassAccessor7.types b/tests/baselines/reference/decoratorOnClassAccessor7.types index 0bc8b8ea62674..e6b35164ba78d 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor7.types +++ b/tests/baselines/reference/decoratorOnClassAccessor7.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor7.ts === declare function dec1(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec1 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -13,7 +13,7 @@ declare function dec1(target: any, propertyKey: string, descriptor: TypedProp declare function dec2(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec2 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -27,7 +27,7 @@ class A { @dec1 get x() { return 0; } >dec1 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -52,7 +52,7 @@ class B { @dec2 set x(value: number) { } >dec2 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -65,7 +65,7 @@ class C { @dec1 set x(value: number) { } >dec1 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -90,7 +90,7 @@ class D { @dec2 get x() { return 0; } >dec2 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -103,7 +103,7 @@ class E { @dec1 get x() { return 0; } >dec1 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -111,7 +111,7 @@ class E { @dec2 set x(value: number) { } >dec2 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -124,7 +124,7 @@ class F { @dec1 set x(value: number) { } >dec1 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -132,7 +132,7 @@ class F { @dec2 get x() { return 0; } >dec2 : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 diff --git a/tests/baselines/reference/decoratorOnClassAccessor8.types b/tests/baselines/reference/decoratorOnClassAccessor8.types index 84321057bd7ed..41768267d5e7a 100644 --- a/tests/baselines/reference/decoratorOnClassAccessor8.types +++ b/tests/baselines/reference/decoratorOnClassAccessor8.types @@ -3,7 +3,7 @@ === decoratorOnClassAccessor8.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class A { @dec get x() { return 0; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -41,7 +41,7 @@ class B { @dec set x(value: number) { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -54,7 +54,7 @@ class C { @dec set x(value: number) { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number @@ -79,7 +79,7 @@ class D { @dec get x() { return 0; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -92,7 +92,7 @@ class E { @dec get x() { return 0; } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 @@ -105,7 +105,7 @@ class F { @dec set x(value: number) { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >value : number diff --git a/tests/baselines/reference/decoratorOnClassConstructor1.types b/tests/baselines/reference/decoratorOnClassConstructor1.types index 2771cccf8df69..c3829a21a2e70 100644 --- a/tests/baselines/reference/decoratorOnClassConstructor1.types +++ b/tests/baselines/reference/decoratorOnClassConstructor1.types @@ -3,7 +3,7 @@ === decoratorOnClassConstructor1.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -17,5 +17,5 @@ class C { @dec constructor() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassConstructor2.types b/tests/baselines/reference/decoratorOnClassConstructor2.types index 16e8c3c0d4895..77b5df11d8e28 100644 --- a/tests/baselines/reference/decoratorOnClassConstructor2.types +++ b/tests/baselines/reference/decoratorOnClassConstructor2.types @@ -7,7 +7,7 @@ export class base { } export function foo(target: Object, propertyKey: string | symbol, parameterIndex: number) { } >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -22,7 +22,7 @@ import {base} from "./0.ts" import {foo} from "./0.ts" >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ export class C extends base{ >C : C @@ -32,7 +32,7 @@ export class C extends base{ constructor(@foo prop: any) { >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any > : ^^^ diff --git a/tests/baselines/reference/decoratorOnClassConstructor3.types b/tests/baselines/reference/decoratorOnClassConstructor3.types index 55e244ec3818d..6b0e4816e6298 100644 --- a/tests/baselines/reference/decoratorOnClassConstructor3.types +++ b/tests/baselines/reference/decoratorOnClassConstructor3.types @@ -7,7 +7,7 @@ export class base { } export function foo(target: Object, propertyKey: string | symbol, parameterIndex: number) { } >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -22,7 +22,7 @@ import {base} from "./0" import {foo} from "./0" >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ /* Comment on the Class Declaration */ export class C extends base{ @@ -33,7 +33,7 @@ export class C extends base{ constructor(@foo prop: any) { >foo : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any super(); diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter1.types b/tests/baselines/reference/decoratorOnClassConstructorParameter1.types index 344aa54ce5cf6..cd03b576ef39f 100644 --- a/tests/baselines/reference/decoratorOnClassConstructorParameter1.types +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter1.types @@ -3,7 +3,7 @@ === decoratorOnClassConstructorParameter1.ts === declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Function > : ^^^^^^^^ >propertyKey : string | symbol @@ -17,7 +17,7 @@ class C { constructor(@dec p: number) {} >dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassConstructorParameter4.types b/tests/baselines/reference/decoratorOnClassConstructorParameter4.types index 020ff1c6b1041..46a3196e36939 100644 --- a/tests/baselines/reference/decoratorOnClassConstructorParameter4.types +++ b/tests/baselines/reference/decoratorOnClassConstructorParameter4.types @@ -3,7 +3,7 @@ === decoratorOnClassConstructorParameter4.ts === declare function dec(target: Function, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Function > : ^^^^^^^^ >propertyKey : string | symbol @@ -19,7 +19,7 @@ class C { >public : any > : ^^^ >dec : (target: Function, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod1.es6.types b/tests/baselines/reference/decoratorOnClassMethod1.es6.types index 66f922287fe51..b67a885ebf6e0 100644 --- a/tests/baselines/reference/decoratorOnClassMethod1.es6.types +++ b/tests/baselines/reference/decoratorOnClassMethod1.es6.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod1.es6.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -13,7 +13,7 @@ declare function dec(target: any, propertyKey: string, descriptor: TypedPrope export default class { @dec method() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod1.types b/tests/baselines/reference/decoratorOnClassMethod1.types index 145b0d3c4bf2c..87cafcbdf3b61 100644 --- a/tests/baselines/reference/decoratorOnClassMethod1.types +++ b/tests/baselines/reference/decoratorOnClassMethod1.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod1.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec method() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod10.types b/tests/baselines/reference/decoratorOnClassMethod10.types index 668d837e993a4..df48d9700e826 100644 --- a/tests/baselines/reference/decoratorOnClassMethod10.types +++ b/tests/baselines/reference/decoratorOnClassMethod10.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod10.ts === declare function dec(target: Function, paramIndex: number): void; >dec : (target: Function, paramIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : Function > : ^^^^^^^^ >paramIndex : number @@ -15,7 +15,7 @@ class C { @dec method() {} >dec : (target: Function, paramIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod11.types b/tests/baselines/reference/decoratorOnClassMethod11.types index c69de6582a0e6..5b2b2734cb2b1 100644 --- a/tests/baselines/reference/decoratorOnClassMethod11.types +++ b/tests/baselines/reference/decoratorOnClassMethod11.types @@ -11,7 +11,7 @@ module M { decorator(target: Object, key: string): void { } >decorator : (target: Object, key: string) => void -> : ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >key : string diff --git a/tests/baselines/reference/decoratorOnClassMethod12.types b/tests/baselines/reference/decoratorOnClassMethod12.types index 7f4ab44653bf3..1dfd20f51f030 100644 --- a/tests/baselines/reference/decoratorOnClassMethod12.types +++ b/tests/baselines/reference/decoratorOnClassMethod12.types @@ -11,7 +11,7 @@ module M { decorator(target: Object, key: string): void { } >decorator : (target: Object, key: string) => void -> : ^^^^^^^^^ ^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >key : string diff --git a/tests/baselines/reference/decoratorOnClassMethod13.types b/tests/baselines/reference/decoratorOnClassMethod13.types index b084117ffce0c..ac887345ce825 100644 --- a/tests/baselines/reference/decoratorOnClassMethod13.types +++ b/tests/baselines/reference/decoratorOnClassMethod13.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod13.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec ["1"]() { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["1"] : () => void > : ^^^^^^^^^^ >"1" : "1" @@ -24,7 +24,7 @@ class C { @dec ["b"]() { } >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["b"] : () => void > : ^^^^^^^^^^ >"b" : "b" diff --git a/tests/baselines/reference/decoratorOnClassMethod14.types b/tests/baselines/reference/decoratorOnClassMethod14.types index 2beb76eec23b3..e0a3783cff34a 100644 --- a/tests/baselines/reference/decoratorOnClassMethod14.types +++ b/tests/baselines/reference/decoratorOnClassMethod14.types @@ -12,7 +12,7 @@ class Foo { >prop : () => number > : ^^^^^^^^^^^^ >() => { return 0; } : () => number -> : ^^^^^^^^^^^^ +> : return 0; >0 : 0 diff --git a/tests/baselines/reference/decoratorOnClassMethod19(target=es2015).types b/tests/baselines/reference/decoratorOnClassMethod19(target=es2015).types index 14f89ecb0995f..0ec41710e7c88 100644 --- a/tests/baselines/reference/decoratorOnClassMethod19(target=es2015).types +++ b/tests/baselines/reference/decoratorOnClassMethod19(target=es2015).types @@ -16,7 +16,7 @@ class C1 { >decorator((x: C1) => x.#x) : any >decorator : any >(x: C1) => x.#x : (x: C1) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C1 > : ^^ >x.#x : any @@ -37,11 +37,11 @@ class C2 { y(@decorator((x: C2) => x.#x) p) {} >y : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >decorator((x: C2) => x.#x) : any >decorator : any >(x: C2) => x.#x : (x: C2) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C2 > : ^^ >x.#x : any diff --git a/tests/baselines/reference/decoratorOnClassMethod19(target=es2022).types b/tests/baselines/reference/decoratorOnClassMethod19(target=es2022).types index 14f89ecb0995f..0ec41710e7c88 100644 --- a/tests/baselines/reference/decoratorOnClassMethod19(target=es2022).types +++ b/tests/baselines/reference/decoratorOnClassMethod19(target=es2022).types @@ -16,7 +16,7 @@ class C1 { >decorator((x: C1) => x.#x) : any >decorator : any >(x: C1) => x.#x : (x: C1) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C1 > : ^^ >x.#x : any @@ -37,11 +37,11 @@ class C2 { y(@decorator((x: C2) => x.#x) p) {} >y : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >decorator((x: C2) => x.#x) : any >decorator : any >(x: C2) => x.#x : (x: C2) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C2 > : ^^ >x.#x : any diff --git a/tests/baselines/reference/decoratorOnClassMethod19(target=esnext).types b/tests/baselines/reference/decoratorOnClassMethod19(target=esnext).types index 14f89ecb0995f..0ec41710e7c88 100644 --- a/tests/baselines/reference/decoratorOnClassMethod19(target=esnext).types +++ b/tests/baselines/reference/decoratorOnClassMethod19(target=esnext).types @@ -16,7 +16,7 @@ class C1 { >decorator((x: C1) => x.#x) : any >decorator : any >(x: C1) => x.#x : (x: C1) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C1 > : ^^ >x.#x : any @@ -37,11 +37,11 @@ class C2 { y(@decorator((x: C2) => x.#x) p) {} >y : (p: any) => void -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >decorator((x: C2) => x.#x) : any >decorator : any >(x: C2) => x.#x : (x: C2) => any -> : ^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >x : C2 > : ^^ >x.#x : any diff --git a/tests/baselines/reference/decoratorOnClassMethod2.types b/tests/baselines/reference/decoratorOnClassMethod2.types index 3d38a76a99f4f..e06e512b1b3d7 100644 --- a/tests/baselines/reference/decoratorOnClassMethod2.types +++ b/tests/baselines/reference/decoratorOnClassMethod2.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod2.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec public method() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod3.types b/tests/baselines/reference/decoratorOnClassMethod3.types index adfdfd873a0af..9203c3bb7b3f0 100644 --- a/tests/baselines/reference/decoratorOnClassMethod3.types +++ b/tests/baselines/reference/decoratorOnClassMethod3.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod3.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -19,7 +19,7 @@ class C { >public : any > : ^^^ >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethod4.types b/tests/baselines/reference/decoratorOnClassMethod4.types index cb1d6e1d229d0..a3ba842788ccc 100644 --- a/tests/baselines/reference/decoratorOnClassMethod4.types +++ b/tests/baselines/reference/decoratorOnClassMethod4.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod4.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec ["method"]() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["method"] : () => void > : ^^^^^^^^^^ >"method" : "method" diff --git a/tests/baselines/reference/decoratorOnClassMethod5.types b/tests/baselines/reference/decoratorOnClassMethod5.types index 57f0925c3396b..882d7dc6558a8 100644 --- a/tests/baselines/reference/decoratorOnClassMethod5.types +++ b/tests/baselines/reference/decoratorOnClassMethod5.types @@ -16,9 +16,9 @@ class C { @dec() ["method"]() {} >dec() : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["method"] : () => void > : ^^^^^^^^^^ >"method" : "method" diff --git a/tests/baselines/reference/decoratorOnClassMethod6.types b/tests/baselines/reference/decoratorOnClassMethod6.types index 9b7d86dcda3fa..28ae9ce9bf97c 100644 --- a/tests/baselines/reference/decoratorOnClassMethod6.types +++ b/tests/baselines/reference/decoratorOnClassMethod6.types @@ -17,7 +17,7 @@ class C { @dec ["method"]() {} >dec : () => (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["method"] : () => void > : ^^^^^^^^^^ >"method" : "method" diff --git a/tests/baselines/reference/decoratorOnClassMethod7.types b/tests/baselines/reference/decoratorOnClassMethod7.types index c3ab7f5921363..ab7185da9cb4d 100644 --- a/tests/baselines/reference/decoratorOnClassMethod7.types +++ b/tests/baselines/reference/decoratorOnClassMethod7.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod7.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,7 +16,7 @@ class C { @dec public ["method"]() {} >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["method"] : () => void > : ^^^^^^^^^^ >"method" : "method" diff --git a/tests/baselines/reference/decoratorOnClassMethod8.types b/tests/baselines/reference/decoratorOnClassMethod8.types index fbcdac6178dc8..4c082de11d31c 100644 --- a/tests/baselines/reference/decoratorOnClassMethod8.types +++ b/tests/baselines/reference/decoratorOnClassMethod8.types @@ -3,7 +3,7 @@ === decoratorOnClassMethod8.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @@ -13,7 +13,7 @@ class C { @dec method() {} >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >method : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethodOverload1.types b/tests/baselines/reference/decoratorOnClassMethodOverload1.types index 6d7ef548dd377..daac02fb64dfe 100644 --- a/tests/baselines/reference/decoratorOnClassMethodOverload1.types +++ b/tests/baselines/reference/decoratorOnClassMethodOverload1.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodOverload1.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -17,7 +17,7 @@ class C { @dec >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method() >method : () => any diff --git a/tests/baselines/reference/decoratorOnClassMethodOverload2.types b/tests/baselines/reference/decoratorOnClassMethodOverload2.types index 1e4161fb9eb48..712df9ad20ace 100644 --- a/tests/baselines/reference/decoratorOnClassMethodOverload2.types +++ b/tests/baselines/reference/decoratorOnClassMethodOverload2.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodOverload2.ts === declare function dec(target: any, propertyKey: string, descriptor: TypedPropertyDescriptor): TypedPropertyDescriptor; >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -20,7 +20,7 @@ class C { @dec >dec : (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method() { } >method : () => any diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter1.es6.types b/tests/baselines/reference/decoratorOnClassMethodParameter1.es6.types index 44185328da81c..bacf21f76cf07 100644 --- a/tests/baselines/reference/decoratorOnClassMethodParameter1.es6.types +++ b/tests/baselines/reference/decoratorOnClassMethodParameter1.es6.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodParameter1.es6.ts === declare function dec(target: Object, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -14,9 +14,9 @@ declare function dec(target: Object, propertyKey: string | symbol, parameterInde export default class { method(@dec p: number) {} >method : (p: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter1.types b/tests/baselines/reference/decoratorOnClassMethodParameter1.types index f43d37ddb4d24..37cf12231397c 100644 --- a/tests/baselines/reference/decoratorOnClassMethodParameter1.types +++ b/tests/baselines/reference/decoratorOnClassMethodParameter1.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodParameter1.ts === declare function dec(target: Object, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -17,9 +17,9 @@ class C { method(@dec p: number) {} >method : (p: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter2.types b/tests/baselines/reference/decoratorOnClassMethodParameter2.types index 45c875bd8e15d..c081359be794e 100644 --- a/tests/baselines/reference/decoratorOnClassMethodParameter2.types +++ b/tests/baselines/reference/decoratorOnClassMethodParameter2.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodParameter2.ts === declare function dec(target: Object, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -17,11 +17,11 @@ class C { method(this: C, @dec p: number) {} >method : (this: C, p: number) => void -> : ^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >this : C > : ^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : number > : ^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnClassMethodParameter3.types b/tests/baselines/reference/decoratorOnClassMethodParameter3.types index 7aef67b4a7f44..f81d82c503f3a 100644 --- a/tests/baselines/reference/decoratorOnClassMethodParameter3.types +++ b/tests/baselines/reference/decoratorOnClassMethodParameter3.types @@ -4,13 +4,13 @@ // https://github.com/microsoft/TypeScript/issues/48509 declare function dec(a: any): any; >dec : (a: any) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : any > : ^^^ function fn(value: Promise): any { >fn : (value: Promise) => any -> : ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >value : Promise > : ^^^^^^^^^^^^^^^ @@ -20,11 +20,11 @@ function fn(value: Promise): any { async method(@dec(await value) arg: number) {} >method : (arg: number) => Promise -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^ >dec(await value) : any > : ^^^ >dec : (a: any) => any -> : ^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >await value : number > : ^^^^^^ >value : Promise diff --git a/tests/baselines/reference/decoratorOnClassMethodThisParameter.types b/tests/baselines/reference/decoratorOnClassMethodThisParameter.types index 52202e82d50d3..8373877ff76cd 100644 --- a/tests/baselines/reference/decoratorOnClassMethodThisParameter.types +++ b/tests/baselines/reference/decoratorOnClassMethodThisParameter.types @@ -3,7 +3,7 @@ === decoratorOnClassMethodThisParameter.ts === declare function dec(target: Object, propertyKey: string | symbol, parameterIndex: number): void; >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Object > : ^^^^^^ >propertyKey : string | symbol @@ -17,9 +17,9 @@ class C { method(@dec this: C) {} >method : (this: C) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : C > : ^ } @@ -30,13 +30,13 @@ class C2 { method(@dec allowed: C2, @dec this: C2) {} >method : (allowed: C2, this: C2) => void -> : ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >allowed : C2 > : ^^ >dec : (target: Object, propertyKey: string | symbol, parameterIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : C2 > : ^^ } diff --git a/tests/baselines/reference/decoratorOnClassProperty1.es6.types b/tests/baselines/reference/decoratorOnClassProperty1.es6.types index 4e0d05aaf43c5..64fb13380917c 100644 --- a/tests/baselines/reference/decoratorOnClassProperty1.es6.types +++ b/tests/baselines/reference/decoratorOnClassProperty1.es6.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty1.es6.ts === declare function dec(target: any, propertyKey: string): void; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -11,6 +11,6 @@ declare function dec(target: any, propertyKey: string): void; export default class { @dec prop; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any } diff --git a/tests/baselines/reference/decoratorOnClassProperty1.types b/tests/baselines/reference/decoratorOnClassProperty1.types index b43946a275476..62ec4297a8497 100644 --- a/tests/baselines/reference/decoratorOnClassProperty1.types +++ b/tests/baselines/reference/decoratorOnClassProperty1.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty1.ts === declare function dec(target: any, propertyKey: string): void; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -14,6 +14,6 @@ class C { @dec prop; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any } diff --git a/tests/baselines/reference/decoratorOnClassProperty10.types b/tests/baselines/reference/decoratorOnClassProperty10.types index 1f952c06dad7d..3631f93a2264e 100644 --- a/tests/baselines/reference/decoratorOnClassProperty10.types +++ b/tests/baselines/reference/decoratorOnClassProperty10.types @@ -14,8 +14,8 @@ class C { @dec() prop; >dec() : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^ ^^^^^^^^^ >dec : () => (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any } diff --git a/tests/baselines/reference/decoratorOnClassProperty11.types b/tests/baselines/reference/decoratorOnClassProperty11.types index c3affe29d1d8e..9956fc5fa2d5b 100644 --- a/tests/baselines/reference/decoratorOnClassProperty11.types +++ b/tests/baselines/reference/decoratorOnClassProperty11.types @@ -15,7 +15,7 @@ class C { @dec prop; >dec : () => (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any > : ^^^ } diff --git a/tests/baselines/reference/decoratorOnClassProperty12.types b/tests/baselines/reference/decoratorOnClassProperty12.types index cbd80df693c13..c70cde2cdf184 100644 --- a/tests/baselines/reference/decoratorOnClassProperty12.types +++ b/tests/baselines/reference/decoratorOnClassProperty12.types @@ -14,9 +14,9 @@ class A { @dec() >dec() : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^ ^^ ^^^^^^^^^ >dec : () => (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ foo: `${string}` >foo : string diff --git a/tests/baselines/reference/decoratorOnClassProperty13.types b/tests/baselines/reference/decoratorOnClassProperty13.types index 34ac21e2a7e42..32b2f411e68e9 100644 --- a/tests/baselines/reference/decoratorOnClassProperty13.types +++ b/tests/baselines/reference/decoratorOnClassProperty13.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty13.ts === declare function dec(target: any, propertyKey: string, desc: PropertyDescriptor): void; >dec : (target: any, propertyKey: string, desc: PropertyDescriptor) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -16,6 +16,6 @@ class C { @dec accessor prop; >dec : (target: any, propertyKey: string, desc: PropertyDescriptor) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any } diff --git a/tests/baselines/reference/decoratorOnClassProperty2.types b/tests/baselines/reference/decoratorOnClassProperty2.types index 8ce7a65016de4..3cac36aee3dff 100644 --- a/tests/baselines/reference/decoratorOnClassProperty2.types +++ b/tests/baselines/reference/decoratorOnClassProperty2.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty2.ts === declare function dec(target: any, propertyKey: string): void; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : any >propertyKey : string > : ^^^^^^ @@ -14,6 +14,6 @@ class C { @dec public prop; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any } diff --git a/tests/baselines/reference/decoratorOnClassProperty3.types b/tests/baselines/reference/decoratorOnClassProperty3.types index b2fcb82ca4c04..c2a933e82b793 100644 --- a/tests/baselines/reference/decoratorOnClassProperty3.types +++ b/tests/baselines/reference/decoratorOnClassProperty3.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty3.ts === declare function dec(target: any, propertyKey: string): void; >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >target : any > : ^^^ >propertyKey : string @@ -17,7 +17,7 @@ class C { >public : any > : ^^^ >dec : (target: any, propertyKey: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any > : ^^^ } diff --git a/tests/baselines/reference/decoratorOnClassProperty6.types b/tests/baselines/reference/decoratorOnClassProperty6.types index 7038b5d5e3132..6fe3f381f7ccc 100644 --- a/tests/baselines/reference/decoratorOnClassProperty6.types +++ b/tests/baselines/reference/decoratorOnClassProperty6.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty6.ts === declare function dec(target: Function): void; >dec : (target: Function) => void -> : ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >target : Function > : ^^^^^^^^ @@ -13,7 +13,7 @@ class C { @dec prop; >dec : (target: Function) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >prop : any > : ^^^ } diff --git a/tests/baselines/reference/decoratorOnClassProperty7.types b/tests/baselines/reference/decoratorOnClassProperty7.types index adbb6f47a8bbd..2aa050abd5371 100644 --- a/tests/baselines/reference/decoratorOnClassProperty7.types +++ b/tests/baselines/reference/decoratorOnClassProperty7.types @@ -3,7 +3,7 @@ === decoratorOnClassProperty7.ts === declare function dec(target: Function, propertyKey: string | symbol, paramIndex: number): void; >dec : (target: Function, propertyKey: string | symbol, paramIndex: number) => void -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : Function > : ^^^^^^^^ >propertyKey : string | symbol @@ -17,7 +17,7 @@ class C { @dec prop; >dec : (target: Function, propertyKey: string | symbol, paramIndex: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >prop : any > : ^^^ } diff --git a/tests/baselines/reference/decoratorOnEnum.types b/tests/baselines/reference/decoratorOnEnum.types index baba1221a3166..8c0e1e632c75f 100644 --- a/tests/baselines/reference/decoratorOnEnum.types +++ b/tests/baselines/reference/decoratorOnEnum.types @@ -3,13 +3,13 @@ === decoratorOnEnum.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ enum E { >E : E diff --git a/tests/baselines/reference/decoratorOnEnum2.types b/tests/baselines/reference/decoratorOnEnum2.types index 907e36e1e773e..03b4e3004d3aa 100644 --- a/tests/baselines/reference/decoratorOnEnum2.types +++ b/tests/baselines/reference/decoratorOnEnum2.types @@ -3,7 +3,7 @@ === decoratorOnEnum2.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @@ -13,7 +13,7 @@ enum E { @dec A >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ >A : any > : ^^^ } diff --git a/tests/baselines/reference/decoratorOnFunctionDeclaration.types b/tests/baselines/reference/decoratorOnFunctionDeclaration.types index 395401bdb4980..8e68c854f1c43 100644 --- a/tests/baselines/reference/decoratorOnFunctionDeclaration.types +++ b/tests/baselines/reference/decoratorOnFunctionDeclaration.types @@ -3,13 +3,13 @@ === decoratorOnFunctionDeclaration.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ function F() { >F : () => void diff --git a/tests/baselines/reference/decoratorOnFunctionExpression.types b/tests/baselines/reference/decoratorOnFunctionExpression.types index d3b787b45ba50..ff645f4baef61 100644 --- a/tests/baselines/reference/decoratorOnFunctionExpression.types +++ b/tests/baselines/reference/decoratorOnFunctionExpression.types @@ -3,7 +3,7 @@ === decoratorOnFunctionExpression.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @@ -11,7 +11,7 @@ var F = @dec function () { >F : any > : ^^^ >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ > : () => void > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/decoratorOnFunctionParameter.types b/tests/baselines/reference/decoratorOnFunctionParameter.types index 0d566e80004fa..37045851e89c0 100644 --- a/tests/baselines/reference/decoratorOnFunctionParameter.types +++ b/tests/baselines/reference/decoratorOnFunctionParameter.types @@ -15,7 +15,7 @@ class C { n = true; } function direct(@dec this: C) { return this.n; } >direct : (this: C) => boolean -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >dec : any > : ^^^ >this : C @@ -29,7 +29,7 @@ function direct(@dec this: C) { return this.n; } function called(@dec() this: C) { return this.n; } >called : (this: C) => boolean -> : ^^^^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >dec() : any > : ^^^ >dec : any diff --git a/tests/baselines/reference/decoratorOnImportEquals1.types b/tests/baselines/reference/decoratorOnImportEquals1.types index 3da96063f1e69..0394d590b3f84 100644 --- a/tests/baselines/reference/decoratorOnImportEquals1.types +++ b/tests/baselines/reference/decoratorOnImportEquals1.types @@ -3,7 +3,7 @@ === decoratorOnImportEquals1.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @@ -19,7 +19,7 @@ module M1 { module M2 { @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ import X = M1.X; >X : number diff --git a/tests/baselines/reference/decoratorOnImportEquals2.types b/tests/baselines/reference/decoratorOnImportEquals2.types index d34ed96101e07..d3866a631d6f5 100644 --- a/tests/baselines/reference/decoratorOnImportEquals2.types +++ b/tests/baselines/reference/decoratorOnImportEquals2.types @@ -3,7 +3,7 @@ === decoratorOnImportEquals2_1.ts === @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ import lib = require('./decoratorOnImportEquals2_0'); >lib : typeof lib @@ -11,7 +11,7 @@ import lib = require('./decoratorOnImportEquals2_0'); declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ diff --git a/tests/baselines/reference/decoratorOnInterface.types b/tests/baselines/reference/decoratorOnInterface.types index 2d6cf8938c357..cef85a45f84d7 100644 --- a/tests/baselines/reference/decoratorOnInterface.types +++ b/tests/baselines/reference/decoratorOnInterface.types @@ -3,13 +3,13 @@ === decoratorOnInterface.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ interface I { } diff --git a/tests/baselines/reference/decoratorOnInternalModule.types b/tests/baselines/reference/decoratorOnInternalModule.types index 6d9884173ee2c..5308d38b0432a 100644 --- a/tests/baselines/reference/decoratorOnInternalModule.types +++ b/tests/baselines/reference/decoratorOnInternalModule.types @@ -3,13 +3,13 @@ === decoratorOnInternalModule.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ module M { diff --git a/tests/baselines/reference/decoratorOnTypeAlias.types b/tests/baselines/reference/decoratorOnTypeAlias.types index eb6c103886178..61adcf0914a41 100644 --- a/tests/baselines/reference/decoratorOnTypeAlias.types +++ b/tests/baselines/reference/decoratorOnTypeAlias.types @@ -3,13 +3,13 @@ === decoratorOnTypeAlias.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ type T = number; >T : number diff --git a/tests/baselines/reference/decoratorOnVar.types b/tests/baselines/reference/decoratorOnVar.types index 19eade5b46a0d..4d8156d411753 100644 --- a/tests/baselines/reference/decoratorOnVar.types +++ b/tests/baselines/reference/decoratorOnVar.types @@ -3,13 +3,13 @@ === decoratorOnVar.ts === declare function dec(target: T): T; >dec : (target: T) => T -> : ^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >target : T > : ^ @dec >dec : (target: T) => T -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^ var x: number; >x : number diff --git a/tests/baselines/reference/decoratorReferenceOnOtherProperty.types b/tests/baselines/reference/decoratorReferenceOnOtherProperty.types index a776ab992d5dd..2cf10214f899f 100644 --- a/tests/baselines/reference/decoratorReferenceOnOtherProperty.types +++ b/tests/baselines/reference/decoratorReferenceOnOtherProperty.types @@ -12,7 +12,7 @@ import {Yoha} from './yoha'; function foo(...args: any[]) {} >foo : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : any[] > : ^^^^^ @@ -22,9 +22,9 @@ class Bar { yoha(@foo yoha, bar: Yoha) {} >yoha : (yoha: any, bar: Yoha) => void -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^ ^^ ^^^^^^^^^ >foo : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >yoha : any >bar : Yoha > : ^^^^ @@ -39,7 +39,7 @@ import {Yoha} from './yoha'; function foo(...args: any[]) {} >foo : (...args: any[]) => void -> : ^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args : any[] > : ^^^^^ @@ -49,9 +49,9 @@ class Bar { yoha(@foo yoha, ...bar: Yoha[]) {} >yoha : (yoha: any, ...bar: Yoha[]) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : (...args: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >yoha : any >bar : Yoha[] > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorReferences.types b/tests/baselines/reference/decoratorReferences.types index e531ceb94490b..6487d697d8387 100644 --- a/tests/baselines/reference/decoratorReferences.types +++ b/tests/baselines/reference/decoratorReferences.types @@ -3,7 +3,7 @@ === decoratorReferences.ts === declare function y(...args: any[]): any; >y : (...args: any[]) => any -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : any[] > : ^^^^^ @@ -14,7 +14,7 @@ type T = number; @y(1 as T, () => C) // <-- T should be resolved to the type alias, not the type parameter of the class; C should resolve to the class >y(1 as T, () => C) : any >y : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >1 as T : number > : ^^^^^^ >1 : 1 @@ -31,15 +31,15 @@ class C { @y(null as T) // <-- y should resolve to the function declaration, not the parameter; T should resolve to the type parameter of the class >y(null as T) : any >y : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >null as T : T > : ^ method(@y x, y) {} // <-- decorator y should be resolved at the class declaration, not the parameter. >method : (x: any, y: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^^^^^^^^ >y : (...args: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >x : any >y : any } diff --git a/tests/baselines/reference/decoratorWithNegativeLiteralTypeNoCrash.types b/tests/baselines/reference/decoratorWithNegativeLiteralTypeNoCrash.types index e361df49327df..9e32aedb683e4 100644 --- a/tests/baselines/reference/decoratorWithNegativeLiteralTypeNoCrash.types +++ b/tests/baselines/reference/decoratorWithNegativeLiteralTypeNoCrash.types @@ -7,7 +7,7 @@ class A { @decorator >decorator : (target: any, field: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ public field1: -1 = -1; >field1 : -1 @@ -23,7 +23,7 @@ class A { } function decorator(target: any, field: any) {} >decorator : (target: any, field: any) => void -> : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >target : any >field : any diff --git a/tests/baselines/reference/decoratorWithUnderscoreMethod.types b/tests/baselines/reference/decoratorWithUnderscoreMethod.types index e159f01a9fe48..1b2dcf7801c72 100644 --- a/tests/baselines/reference/decoratorWithUnderscoreMethod.types +++ b/tests/baselines/reference/decoratorWithUnderscoreMethod.types @@ -3,9 +3,9 @@ === decoratorWithUnderscoreMethod.ts === declare var console : { log(arg: string): void }; >console : { log(arg: string): void; } -> : ^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^ ^^ ^^^ ^^^ >log : (arg: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >arg : string > : ^^^^^^ @@ -15,7 +15,7 @@ function dec(): Function { return function (target: any, propKey: string, descr: PropertyDescriptor): void { >function (target: any, propKey: string, descr: PropertyDescriptor): void { console.log(target[propKey]); //logs undefined //propKey has three underscores as prefix, but the method has only two underscores } : (target: any, propKey: string, descr: PropertyDescriptor) => void -> : ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >target : any >propKey : string > : ^^^^^^ @@ -26,11 +26,11 @@ function dec(): Function { >console.log(target[propKey]) : void > : ^^^^ >console.log : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >console : { log(arg: string): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^ ^^^^^^^^^^ >log : (arg: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >target[propKey] : any >target : any >propKey : string @@ -53,7 +53,7 @@ class A { private __foo(bar: string): void { >__foo : (bar: string) => void -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >bar : string > : ^^^^^^ diff --git a/tests/baselines/reference/decoratorsOnComputedProperties.types b/tests/baselines/reference/decoratorsOnComputedProperties.types index 84328ade1b307..50471c3494545 100644 --- a/tests/baselines/reference/decoratorsOnComputedProperties.types +++ b/tests/baselines/reference/decoratorsOnComputedProperties.types @@ -3,7 +3,7 @@ === decoratorsOnComputedProperties.ts === function x(o: object, k: PropertyKey) { } >x : (o: object, k: PropertyKey) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >o : object > : ^^^^^^ >k : PropertyKey @@ -51,7 +51,7 @@ class A { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -59,7 +59,7 @@ class A { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -71,7 +71,7 @@ class A { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -81,7 +81,7 @@ class A { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -135,7 +135,7 @@ class A { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -145,7 +145,7 @@ class A { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -161,7 +161,7 @@ class A { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -169,7 +169,7 @@ class A { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -186,7 +186,7 @@ void class B { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -194,7 +194,7 @@ void class B { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -206,7 +206,7 @@ void class B { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -216,7 +216,7 @@ void class B { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -270,7 +270,7 @@ void class B { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -280,7 +280,7 @@ void class B { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -296,7 +296,7 @@ void class B { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -304,7 +304,7 @@ void class B { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -318,7 +318,7 @@ class C { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -326,7 +326,7 @@ class C { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -338,7 +338,7 @@ class C { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -348,7 +348,7 @@ class C { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -402,7 +402,7 @@ class C { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -412,7 +412,7 @@ class C { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -428,7 +428,7 @@ class C { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -436,7 +436,7 @@ class C { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -463,7 +463,7 @@ void class D { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -471,7 +471,7 @@ void class D { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -483,7 +483,7 @@ void class D { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -493,7 +493,7 @@ void class D { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -547,7 +547,7 @@ void class D { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -557,7 +557,7 @@ void class D { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -573,7 +573,7 @@ void class D { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -581,7 +581,7 @@ void class D { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -605,7 +605,7 @@ class E { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -613,7 +613,7 @@ class E { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -625,7 +625,7 @@ class E { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -635,7 +635,7 @@ class E { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -689,7 +689,7 @@ class E { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -699,7 +699,7 @@ class E { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -725,7 +725,7 @@ class E { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -733,7 +733,7 @@ class E { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -750,7 +750,7 @@ void class F { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -758,7 +758,7 @@ void class F { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -770,7 +770,7 @@ void class F { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -780,7 +780,7 @@ void class F { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -834,7 +834,7 @@ void class F { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -844,7 +844,7 @@ void class F { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -870,7 +870,7 @@ void class F { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -878,7 +878,7 @@ void class F { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -892,7 +892,7 @@ class G { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -900,7 +900,7 @@ class G { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -912,7 +912,7 @@ class G { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -922,7 +922,7 @@ class G { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -976,7 +976,7 @@ class G { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -986,7 +986,7 @@ class G { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1012,7 +1012,7 @@ class G { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -1030,7 +1030,7 @@ class G { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -1047,7 +1047,7 @@ void class H { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -1055,7 +1055,7 @@ void class H { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -1067,7 +1067,7 @@ void class H { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -1077,7 +1077,7 @@ void class H { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -1131,7 +1131,7 @@ void class H { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1141,7 +1141,7 @@ void class H { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1167,7 +1167,7 @@ void class H { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -1185,7 +1185,7 @@ void class H { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -1199,7 +1199,7 @@ class I { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -1207,7 +1207,7 @@ class I { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -1219,7 +1219,7 @@ class I { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -1229,7 +1229,7 @@ class I { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -1283,7 +1283,7 @@ class I { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1293,7 +1293,7 @@ class I { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1303,7 +1303,7 @@ class I { @x ["some" + "method"]() {} >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["some" + "method"] : () => void > : ^^^^^^^^^^ >"some" + "method" : string @@ -1321,7 +1321,7 @@ class I { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -1339,7 +1339,7 @@ class I { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string @@ -1356,7 +1356,7 @@ void class J { @x ["property"]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property"] : any > : ^^^ >"property" : "property" @@ -1364,7 +1364,7 @@ void class J { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.toStringTag] : any > : ^^^ >Symbol.toStringTag : unique symbol @@ -1376,7 +1376,7 @@ void class J { @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["property2"] : any > : ^^^ >"property2" : "property2" @@ -1386,7 +1386,7 @@ void class J { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[Symbol.iterator] : any > : ^^^ >Symbol.iterator : unique symbol @@ -1440,7 +1440,7 @@ void class J { @x [foo()]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1450,7 +1450,7 @@ void class J { @x [foo()]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[foo()] : any > : ^^^ >foo() : string @@ -1460,7 +1460,7 @@ void class J { @x ["some" + "method"]() {} >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >["some" + "method"] : () => void > : ^^^^^^^^^^ >"some" + "method" : string @@ -1478,7 +1478,7 @@ void class J { @x [fieldNameB]: any; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameB] : any > : ^^^ >fieldNameB : string @@ -1496,7 +1496,7 @@ void class J { @x [fieldNameC]: any = null; >x : (o: object, k: PropertyKey) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >[fieldNameC] : any > : ^^^ >fieldNameC : string diff --git a/tests/baselines/reference/decrementOperatorWithAnyOtherTypeInvalidOperations.types b/tests/baselines/reference/decrementOperatorWithAnyOtherTypeInvalidOperations.types index a7d3a17094b5d..12e4e84a6e5f2 100644 --- a/tests/baselines/reference/decrementOperatorWithAnyOtherTypeInvalidOperations.types +++ b/tests/baselines/reference/decrementOperatorWithAnyOtherTypeInvalidOperations.types @@ -24,7 +24,7 @@ var obj1 = { x: "", y: () => { } }; >obj1 : { x: string; y: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "", y: () => { } } : { x: string; y: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ >x : string > : ^^^^^^ >"" : "" @@ -32,7 +32,7 @@ var obj1 = { x: "", y: () => { } }; >y : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : function foo(): any { >foo : () => any diff --git a/tests/baselines/reference/decrementOperatorWithNumberTypeInvalidOperations.types b/tests/baselines/reference/decrementOperatorWithNumberTypeInvalidOperations.types index b8b2e128775cf..9400fe42bc74b 100644 --- a/tests/baselines/reference/decrementOperatorWithNumberTypeInvalidOperations.types +++ b/tests/baselines/reference/decrementOperatorWithNumberTypeInvalidOperations.types @@ -101,15 +101,15 @@ var ResultIsNumber5 = --{ x: 1, y: (n: number) => { return n; } }; >--{ x: 1, y: (n: number) => { return n; } } : number > : ^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number @@ -145,15 +145,15 @@ var ResultIsNumber8 = { x: 1, y: (n: number) => { return n; } }--; >{ x: 1, y: (n: number) => { return n; } }-- : number > : ^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number diff --git a/tests/baselines/reference/decrementOperatorWithUnsupportedBooleanType.types b/tests/baselines/reference/decrementOperatorWithUnsupportedBooleanType.types index 0036546a28319..ab4bb375ec4cc 100644 --- a/tests/baselines/reference/decrementOperatorWithUnsupportedBooleanType.types +++ b/tests/baselines/reference/decrementOperatorWithUnsupportedBooleanType.types @@ -91,15 +91,15 @@ var ResultIsNumber5 = --{ x: true, y: (n: boolean) => { return n; } }; >--{ x: true, y: (n: boolean) => { return n; } } : number > : ^^^^^^ >{ x: true, y: (n: boolean) => { return n; } } : { x: boolean; y: (n: boolean) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true > : ^^^^ >y : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(n: boolean) => { return n; } : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >n : boolean > : ^^^^^^^ >n : boolean @@ -135,15 +135,15 @@ var ResultIsNumber8 = { x: true, y: (n: boolean) => { return n; } }--; >{ x: true, y: (n: boolean) => { return n; } }-- : number > : ^^^^^^ >{ x: true, y: (n: boolean) => { return n; } } : { x: boolean; y: (n: boolean) => boolean; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true > : ^^^^ >y : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^ >(n: boolean) => { return n; } : (n: boolean) => boolean -> : ^^^^ ^^^^^^^^^^^^ +> : >n : boolean > : ^^^^^^^ >n : boolean diff --git a/tests/baselines/reference/decrementOperatorWithUnsupportedStringType.types b/tests/baselines/reference/decrementOperatorWithUnsupportedStringType.types index c12caa17d984b..75169318836c5 100644 --- a/tests/baselines/reference/decrementOperatorWithUnsupportedStringType.types +++ b/tests/baselines/reference/decrementOperatorWithUnsupportedStringType.types @@ -117,15 +117,15 @@ var ResultIsNumber7 = --{ x: "", y: (s: string) => { return s; } }; >--{ x: "", y: (s: string) => { return s; } } : number > : ^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string @@ -161,15 +161,15 @@ var ResultIsNumber10 = { x: "", y: (s: string) => { return s; } }--; >{ x: "", y: (s: string) => { return s; } }-- : number > : ^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string diff --git a/tests/baselines/reference/deduplicateImportsInSystem.types b/tests/baselines/reference/deduplicateImportsInSystem.types index 416b51e02e592..86a9dd8bb0803 100644 --- a/tests/baselines/reference/deduplicateImportsInSystem.types +++ b/tests/baselines/reference/deduplicateImportsInSystem.types @@ -29,11 +29,11 @@ console.log(A + B + C + D + E + F) >console.log(A + B + C + D + E + F) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >A + B + C + D + E + F : any > : ^^^ >A + B + C + D + E : any diff --git a/tests/baselines/reference/deepElaborationsIntoArrowExpressions.types b/tests/baselines/reference/deepElaborationsIntoArrowExpressions.types index b196726905fc0..16b812aa3d7a8 100644 --- a/tests/baselines/reference/deepElaborationsIntoArrowExpressions.types +++ b/tests/baselines/reference/deepElaborationsIntoArrowExpressions.types @@ -17,7 +17,7 @@ const a: { >y : () => "b" > : ^^^^^^^^^ >() => "b" : () => "b" -> : ^^^^^^^^^ +> : >"b" : "b" > : ^^^ diff --git a/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types b/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types index 1638e64585d2d..daa12a96eda22 100644 --- a/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types +++ b/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types @@ -15,7 +15,7 @@ const TestComponent: StatelessComponent = (props) => { >TestComponent : StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(props) => { return null;} : (props: TestProps & { children?: number; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : TestProps & { children?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -72,7 +72,7 @@ const TestComponent2: StatelessComponent = (p >x : number > : ^^^^^^ >(props) => { return null;} : (props: (TestProps | { props2: { x: number; }; }) & { children?: number; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >props : (TestProps | { props2: { x: number; }; }) & { children?: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/deepKeysIndexing.types b/tests/baselines/reference/deepKeysIndexing.types index 90d9911c8e1cb..c1413f099a4ac 100644 --- a/tests/baselines/reference/deepKeysIndexing.types +++ b/tests/baselines/reference/deepKeysIndexing.types @@ -64,7 +64,7 @@ class Bar { broken< >broken : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ K1 extends keyof O, K2 extends keys2broken, @@ -79,7 +79,7 @@ class Bar { working< >working : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ K1 extends keyof O, K2 extends keys2working, @@ -94,7 +94,7 @@ class Bar { workaround< >workaround : , V extends O[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ K1 extends keyof O, K2 extends keys2workaround, @@ -121,11 +121,11 @@ bar.broken("a", "1", true); // was broken in the past - with 2nd argument incorr >bar.broken("a", "1", true) : void > : ^^^^ >bar.broken : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >bar : Bar > : ^^^^^^^^ >broken : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >"a" : "a" > : ^^^ >"1" : "1" @@ -137,11 +137,11 @@ bar.working("a", "1", true); // ok - true is not allowed >bar.working("a", "1", true) : void > : ^^^^ >bar.working : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >bar : Bar > : ^^^^^^^^ >working : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >"a" : "a" > : ^^^ >"1" : "1" @@ -153,11 +153,11 @@ bar.workaround("a", "1", true); // ok - true is not allowed >bar.workaround("a", "1", true) : void > : ^^^^ >bar.workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >bar : Bar > : ^^^^^^^^ >workaround : , V extends Foo[K1][K2]>(k1: K1, k2: K2, value: V) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ^^^^^^^^^^^^ >"a" : "a" > : ^^^ >"1" : "1" diff --git a/tests/baselines/reference/deeplyNestedAssignabilityErrorsCombined.types b/tests/baselines/reference/deeplyNestedAssignabilityErrorsCombined.types index db490ffff358f..9a3547dea956a 100644 --- a/tests/baselines/reference/deeplyNestedAssignabilityErrorsCombined.types +++ b/tests/baselines/reference/deeplyNestedAssignabilityErrorsCombined.types @@ -5,27 +5,27 @@ let x = { a: { b: { c: { d: { e: { f() { return { g: "hello" }; } } } } } } }; >x : { a: { b: { c: { d: { e: { f(): { g: string; }; }; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { b: { c: { d: { e: { f() { return { g: "hello" }; } } } } } } } : { a: { b: { c: { d: { e: { f(): { g: string; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : { b: { c: { d: { e: { f(): { g: string; }; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ b: { c: { d: { e: { f() { return { g: "hello" }; } } } } } } : { b: { c: { d: { e: { f(): { g: string; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >b : { c: { d: { e: { f(): { g: string; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ c: { d: { e: { f() { return { g: "hello" }; } } } } } : { c: { d: { e: { f(): { g: string; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >c : { d: { e: { f(): { g: string; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ d: { e: { f() { return { g: "hello" }; } } } } : { d: { e: { f(): { g: string; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >d : { e: { f(): { g: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ e: { f() { return { g: "hello" }; } } } : { e: { f(): { g: string; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^ >e : { f(): { g: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{ f() { return { g: "hello" }; } } : { f(): { g: string; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ >f : () => { g: string; } > : ^^^^^^^^^^^^^^^^^^^^ >{ g: "hello" } : { g: string; } @@ -39,27 +39,27 @@ let y = { a: { b: { c: { d: { e: { f() { return { g: 12345 }; } } } } } } }; >y : { a: { b: { c: { d: { e: { f(): { g: number; }; }; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { b: { c: { d: { e: { f() { return { g: 12345 }; } } } } } } } : { a: { b: { c: { d: { e: { f(): { g: number; }; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : { b: { c: { d: { e: { f(): { g: number; }; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ b: { c: { d: { e: { f() { return { g: 12345 }; } } } } } } : { b: { c: { d: { e: { f(): { g: number; }; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ >b : { c: { d: { e: { f(): { g: number; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ c: { d: { e: { f() { return { g: 12345 }; } } } } } : { c: { d: { e: { f(): { g: number; }; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >c : { d: { e: { f(): { g: number; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ d: { e: { f() { return { g: 12345 }; } } } } : { d: { e: { f(): { g: number; }; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >d : { e: { f(): { g: number; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ e: { f() { return { g: 12345 }; } } } : { e: { f(): { g: number; }; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^^^^ >e : { f(): { g: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >{ f() { return { g: 12345 }; } } : { f(): { g: number; }; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^^ >f : () => { g: number; } > : ^^^^^^^^^^^^^^^^^^^^ >{ g: 12345 } : { g: number; } diff --git a/tests/baselines/reference/deeplyNestedCheck.types b/tests/baselines/reference/deeplyNestedCheck.types index 74bcdf4c50326..cddbce62d5f47 100644 --- a/tests/baselines/reference/deeplyNestedCheck.types +++ b/tests/baselines/reference/deeplyNestedCheck.types @@ -6,7 +6,7 @@ interface DataSnapshot { child(path: string): DataSnapshot; >child : (path: string) => DataSnapshot -> : ^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >path : string > : ^^^^^^ } @@ -14,7 +14,7 @@ interface DataSnapshot { interface Snapshot extends DataSnapshot { child>(path: U): Snapshot; >child : >(path: U) => Snapshot -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >path : U > : ^ } diff --git a/tests/baselines/reference/deeplyNestedConstraints.types b/tests/baselines/reference/deeplyNestedConstraints.types index d87e92690f3fa..48d95baa701b9 100644 --- a/tests/baselines/reference/deeplyNestedConstraints.types +++ b/tests/baselines/reference/deeplyNestedConstraints.types @@ -17,7 +17,7 @@ class BufferPool> { setArray2(_: K, array: Extract>) { >setArray2 : (_: K, array: Extract>) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >_ : K > : ^ >array : Extract> diff --git a/tests/baselines/reference/deeplyNestedMappedTypes.types b/tests/baselines/reference/deeplyNestedMappedTypes.types index 5a8bf4666f2c0..d7187c4e6a18b 100644 --- a/tests/baselines/reference/deeplyNestedMappedTypes.types +++ b/tests/baselines/reference/deeplyNestedMappedTypes.types @@ -211,13 +211,13 @@ export const Input = Type.Object({ >Input : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; }>; }>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ level1: Type.Object({ level2: Type.Object({ foo: Type.String(), }) })}) : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; }>; }>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ level1: Type.Object({ level2: Type.Object({ foo: Type.String(), }) })} : { level1: TObject<{ level2: TObject<{ foo: TString; }>; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -225,13 +225,13 @@ export const Input = Type.Object({ >level1 : TObject<{ level2: TObject<{ foo: TString; }>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ level2: Type.Object({ foo: Type.String(), }) }) : TObject<{ level2: TObject<{ foo: TString; }>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ level2: Type.Object({ foo: Type.String(), }) } : { level2: TObject<{ foo: TString; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -239,13 +239,13 @@ export const Input = Type.Object({ >level2 : TObject<{ foo: TString; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ foo: Type.String(), }) : TObject<{ foo: TString; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ foo: Type.String(), } : { foo: TString; } > : ^^^^^^^^^^^^^^^^^ @@ -275,13 +275,13 @@ export const Output = Type.Object({ >Output : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; bar: TString; }>; }>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ level1: Type.Object({ level2: Type.Object({ foo: Type.String(), bar: Type.String(), }) })}) : TObject<{ level1: TObject<{ level2: TObject<{ foo: TString; bar: TString; }>; }>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ level1: Type.Object({ level2: Type.Object({ foo: Type.String(), bar: Type.String(), }) })} : { level1: TObject<{ level2: TObject<{ foo: TString; bar: TString; }>; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -289,13 +289,13 @@ export const Output = Type.Object({ >level1 : TObject<{ level2: TObject<{ foo: TString; bar: TString; }>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ level2: Type.Object({ foo: Type.String(), bar: Type.String(), }) }) : TObject<{ level2: TObject<{ foo: TString; bar: TString; }>; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ level2: Type.Object({ foo: Type.String(), bar: Type.String(), }) } : { level2: TObject<{ foo: TString; bar: TString; }>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -303,13 +303,13 @@ export const Output = Type.Object({ >level2 : TObject<{ foo: TString; bar: TString; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Type.Object({ foo: Type.String(), bar: Type.String(), }) : TObject<{ foo: TString; bar: TString; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^ ^ >Type.Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >Type : typeof Type > : ^^^^^^^^^^^ >Object : (object: T) => TObject -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ foo: Type.String(), bar: Type.String(), } : { foo: TString; bar: TString; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -343,7 +343,7 @@ export const Output = Type.Object({ function problematicFunction1(ors: Input[]): Output[] { >problematicFunction1 : (ors: Input[]) => Output[] -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ors : { level1: { level2: { foo: string; }; }; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -354,7 +354,7 @@ function problematicFunction1(ors: Input[]): Output[] { function problematicFunction2(ors: Input[]): T { >problematicFunction2 : (ors: Input[]) => T -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ors : { level1: { level2: { foo: string; }; }; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -365,7 +365,7 @@ function problematicFunction2(ors: Input[]): T { function problematicFunction3(ors: (typeof Input.static)[]): Output[] { >problematicFunction3 : (ors: (typeof Input.static)[]) => Output[] -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >ors : { level1: { level2: { foo: string; }; }; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Input.static : { level1: { level2: { foo: string; }; }; } @@ -519,7 +519,7 @@ export interface TObject extends TSchema { static: PropertiesReduce >static : Evaluate; }, ReadonlyOptionalPropertyKeys>>> & Readonly; }, ReadonlyPropertyKeys>> & Partial; }, OptionalPropertyKeys>> & Required; }, Exclude | ReadonlyPropertyKeys | OptionalPropertyKeys>>>> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type: 'object' >type : "object" @@ -542,7 +542,7 @@ declare namespace Type { function Object(object: T): TObject >Object : (object: T) => TObject -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >object : T > : ^ diff --git a/tests/baselines/reference/defaultArgsInFunctionExpressions.types b/tests/baselines/reference/defaultArgsInFunctionExpressions.types index b9990cdd0beb6..11ebbc4a6bd87 100644 --- a/tests/baselines/reference/defaultArgsInFunctionExpressions.types +++ b/tests/baselines/reference/defaultArgsInFunctionExpressions.types @@ -3,9 +3,9 @@ === defaultArgsInFunctionExpressions.ts === var f = function (a = 3) { return a; }; // Type should be (a?: number) => number >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >function (a = 3) { return a; } : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >a : number > : ^^^^^^ >3 : 3 @@ -19,7 +19,7 @@ var n: number = f(4); >f(4) : number > : ^^^^^^ >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >4 : 4 > : ^ @@ -31,7 +31,7 @@ n = f(); >f() : number > : ^^^^^^ >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ var s: string = f(''); >s : string @@ -39,7 +39,7 @@ var s: string = f(''); >f('') : number > : ^^^^^^ >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ @@ -51,14 +51,14 @@ s = f(); >f() : number > : ^^^^^^ >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ // Type check the default argument with the type annotation var f2 = function (a: string = 3) { return a; }; // Should error, but be of type (a: string) => string; >f2 : (a?: string) => string -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >function (a: string = 3) { return a; } : (a?: string) => string -> : ^^^^^ ^^^^^^^^^^^ +> : ^ >a : string > : ^^^^^^ >3 : 3 @@ -74,7 +74,7 @@ s = f2(''); >f2('') : string > : ^^^^^^ >f2 : (a?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >'' : "" > : ^^ @@ -86,7 +86,7 @@ s = f2(); >f2() : string > : ^^^^^^ >f2 : (a?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ n = f2(); >n = f2() : string @@ -96,20 +96,20 @@ n = f2(); >f2() : string > : ^^^^^^ >f2 : (a?: string) => string -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ // Contextually type the default arg with the type annotation var f3 = function (a: (s: string) => any = (s) => s) { }; >f3 : (a?: (s: string) => any) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >function (a: (s: string) => any = (s) => s) { } : (a?: (s: string) => any) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ >a : (s: string) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ >(s) => s : (s: string) => number -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s : number @@ -120,11 +120,11 @@ var f3 = function (a: (s: string) => any = (s) => s) { }; // Type check using the function's contextual type var f4: (a: number) => void = function (a = "") { }; >f4 : (a: number) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : number > : ^^^^^^ >function (a = "") { } : (a?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >"" : "" @@ -133,17 +133,17 @@ var f4: (a: number) => void = function (a = "") { }; // Contextually type the default arg using the function's contextual type var f5: (a: (s: string) => any) => void = function (a = s => s) { }; >f5 : (a: (s: string) => any) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : (s: string) => any -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >s : string > : ^^^^^^ >function (a = s => s) { } : (a?: (s: string) => any) => void -> : ^^^^^^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^^^ ^^ ^^^^^ ^^^^^^^^^ >a : (s: string) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >s => s : (s: string) => number -> : ^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ >s : string > : ^^^^^^ >s : number @@ -164,9 +164,9 @@ module U { var f6 = (t = T) => { }; >f6 : (t?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >(t = T) => { } : (t?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ >t : any > : ^^^ >T : any @@ -174,9 +174,9 @@ var f6 = (t = T) => { }; var f7 = (t = U) => { return t; }; >f7 : (t?: typeof U) => typeof U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >(t = U) => { return t; } : (t?: typeof U) => typeof U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >t : typeof U > : ^^^^^^^^ >U : typeof U @@ -190,7 +190,7 @@ f7().x; >f7() : typeof U > : ^^^^^^^^ >f7 : (t?: typeof U) => typeof U -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ diff --git a/tests/baselines/reference/defaultArgsInOverloads.types b/tests/baselines/reference/defaultArgsInOverloads.types index fe49a5665390f..36642128174e8 100644 --- a/tests/baselines/reference/defaultArgsInOverloads.types +++ b/tests/baselines/reference/defaultArgsInOverloads.types @@ -3,13 +3,13 @@ === defaultArgsInOverloads.ts === function fun(a: string); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ function fun(a = 3); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >3 : 3 @@ -17,7 +17,7 @@ function fun(a = 3); function fun(a = null) { } >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ @@ -27,13 +27,13 @@ class C { fun(a: string); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ fun(a = 3); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >3 : 3 @@ -41,19 +41,19 @@ class C { fun(a = null) { } >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ static fun(a: string); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ static fun(a = 3); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >3 : 3 @@ -61,7 +61,7 @@ class C { static fun(a = null) { } >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ } @@ -69,13 +69,13 @@ class C { interface I { fun(a: string); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ fun(a = 3); >fun : { (a: string): any; (a?: number): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >3 : 3 @@ -84,7 +84,7 @@ interface I { var f: (a = 3) => number; >f : (a?: number) => number -> : ^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >3 : 3 diff --git a/tests/baselines/reference/defaultBestCommonTypesHaveDecls.types b/tests/baselines/reference/defaultBestCommonTypesHaveDecls.types index cbc7423e0f692..ded1cd949cf9e 100644 --- a/tests/baselines/reference/defaultBestCommonTypesHaveDecls.types +++ b/tests/baselines/reference/defaultBestCommonTypesHaveDecls.types @@ -27,7 +27,7 @@ obj2.length; function concat(x: T, y: T): T { return null; } >concat : (x: T, y: T) => T -> : ^ ^^^^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : T @@ -39,7 +39,7 @@ var result = concat(1, ""); // error >concat(1, "") : 1 > : ^ >concat : (x: T, y: T) => T -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^^^^^ >1 : 1 > : ^ >"" : "" @@ -57,7 +57,7 @@ var elementCount = result.length; function concat2(x: T, y: U) { return null; } >concat2 : (x: T, y: U) => any -> : ^ ^^ ^^^^^ ^^^^^ ^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >x : T > : ^ >y : U @@ -69,7 +69,7 @@ var result2 = concat2(1, ""); // result2 will be number|string >concat2(1, "") : any > : ^^^ >concat2 : (x: T, y: U) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ >1 : 1 > : ^ >"" : "" diff --git a/tests/baselines/reference/defaultDeclarationEmitNamedCorrectly.types b/tests/baselines/reference/defaultDeclarationEmitNamedCorrectly.types index 1b0d1691886ec..2d30d371b41ff 100644 --- a/tests/baselines/reference/defaultDeclarationEmitNamedCorrectly.types +++ b/tests/baselines/reference/defaultDeclarationEmitNamedCorrectly.types @@ -12,7 +12,7 @@ export interface Things { } export function make(x: { new (): CTor & {props: P} }): Things { >make : (x: { new (): CTor & { props: P; }; }) => Things -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : new () => CTor & { props: P; } > : ^^^^^^^^^^ >props : P @@ -38,8 +38,8 @@ export default class MyComponent { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >make(MyComponent) : Things > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->make : (x: new () => CTor & { props: P; }) => Things -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>make : (x: { new (): CTor & { props: P; }; }) => Things +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >MyComponent : typeof MyComponent > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/defaultDeclarationEmitShadowedNamedCorrectly.types b/tests/baselines/reference/defaultDeclarationEmitShadowedNamedCorrectly.types index c61efe8e78662..3b2e5c9f3ecf2 100644 --- a/tests/baselines/reference/defaultDeclarationEmitShadowedNamedCorrectly.types +++ b/tests/baselines/reference/defaultDeclarationEmitShadowedNamedCorrectly.types @@ -16,7 +16,7 @@ export interface Things { } export function make(x: { new (): CTor & {props: P} }): Things { >make : (x: { new (): CTor & { props: P; }; }) => Things -> : ^ ^^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >x : new () => CTor & { props: P; } > : ^^^^^^^^^^ >props : P @@ -52,8 +52,8 @@ export namespace Something { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >make(me.default) : me.Things > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->make : (x: new () => CTor & { props: P; }) => me.Things -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>make : (x: { new (): CTor & { props: P; }; }) => me.Things +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >me.default : typeof me.default > : ^^^^^^^^^^^^^^^^^ >me : typeof me diff --git a/tests/baselines/reference/defaultExportInAwaitExpression01.types b/tests/baselines/reference/defaultExportInAwaitExpression01.types index 251ad06255ed4..d6aaaf5d86c80 100644 --- a/tests/baselines/reference/defaultExportInAwaitExpression01.types +++ b/tests/baselines/reference/defaultExportInAwaitExpression01.types @@ -9,15 +9,15 @@ const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >( resolve, reject ) => { resolve( {} ); } : (resolve: (value: unknown) => void, reject: (reason?: any) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >resolve( {} ) : void > : ^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ diff --git a/tests/baselines/reference/defaultExportInAwaitExpression02.types b/tests/baselines/reference/defaultExportInAwaitExpression02.types index f4ce39a9cf044..375a65b982f7a 100644 --- a/tests/baselines/reference/defaultExportInAwaitExpression02.types +++ b/tests/baselines/reference/defaultExportInAwaitExpression02.types @@ -9,15 +9,15 @@ const x = new Promise( ( resolve, reject ) => { resolve( {} ); } ); >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >( resolve, reject ) => { resolve( {} ); } : (resolve: (value: unknown) => void, reject: (reason?: any) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >resolve( {} ) : void > : ^^^^ >resolve : (value: unknown) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ diff --git a/tests/baselines/reference/defaultExportWithOverloads01.types b/tests/baselines/reference/defaultExportWithOverloads01.types index 1ce453bd7783a..54c5595f1ca9b 100644 --- a/tests/baselines/reference/defaultExportWithOverloads01.types +++ b/tests/baselines/reference/defaultExportWithOverloads01.types @@ -3,17 +3,17 @@ === defaultExportWithOverloads01.ts === export default function f(); >f : { (): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ export default function f(x: string); >f : { (): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ export default function f(...args: any[]) { >f : { (): any; (x: string): any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >args : any[] > : ^^^^^ } diff --git a/tests/baselines/reference/defaultKeywordWithoutExport1.types b/tests/baselines/reference/defaultKeywordWithoutExport1.types index 8228f34320d16..63c5d3612138b 100644 --- a/tests/baselines/reference/defaultKeywordWithoutExport1.types +++ b/tests/baselines/reference/defaultKeywordWithoutExport1.types @@ -3,12 +3,12 @@ === defaultKeywordWithoutExport1.ts === declare function decorator(constructor: any): any; >decorator : (constructor: any) => any -> : ^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >constructor : any > : ^^^ @decorator >decorator : (constructor: any) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^ default class {} diff --git a/tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.types b/tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.types index 2a7cf136f41b7..2bac91a9434a4 100644 --- a/tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.types +++ b/tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.types @@ -3,7 +3,7 @@ === defaultParameterAddsUndefinedWithStrictNullChecks.ts === function f(addUndefined1 = "J", addUndefined2?: number) { >f : (addUndefined1?: string, addUndefined2?: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >addUndefined1 : string > : ^^^^^^ >"J" : "J" @@ -31,7 +31,7 @@ function f(addUndefined1 = "J", addUndefined2?: number) { } function g(addUndefined = "J", addDefined: number) { >g : (addUndefined: string | undefined, addDefined: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >addUndefined : string > : ^^^^^^ >"J" : "J" @@ -62,26 +62,26 @@ let total = f() + f('a', 1) + f('b') + f(undefined, 2); > : ^^^^^^ >f() : number > : ^^^^^^ ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (addUndefined1?: string, addUndefined2?: number) => number +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >f('a', 1) : number > : ^^^^^^ ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (addUndefined1?: string, addUndefined2?: number) => number +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >'a' : "a" > : ^^^ >1 : 1 > : ^ >f('b') : number > : ^^^^^^ ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (addUndefined1?: string, addUndefined2?: number) => number +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >'b' : "b" > : ^^^ >f(undefined, 2) : number > : ^^^^^^ ->f : (addUndefined1?: string, addUndefined2?: number | undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (addUndefined1?: string, addUndefined2?: number) => number +> : ^ ^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >2 : 2 @@ -97,7 +97,7 @@ total = g('c', 3) + g(undefined, 4); >g('c', 3) : number > : ^^^^^^ >g : (addUndefined: string | undefined, addDefined: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >'c' : "c" > : ^^^ >3 : 3 @@ -105,7 +105,7 @@ total = g('c', 3) + g(undefined, 4); >g(undefined, 4) : number > : ^^^^^^ >g : (addUndefined: string | undefined, addDefined: number) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >4 : 4 @@ -113,7 +113,7 @@ total = g('c', 3) + g(undefined, 4); function foo1(x: string = "string", b: number) { >foo1 : (x: string | undefined, b: number) => void -> : ^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >"string" : "string" @@ -132,7 +132,7 @@ function foo1(x: string = "string", b: number) { function foo2(x = "string", b: number) { >foo2 : (x: string | undefined, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : string > : ^^^^^^ >"string" : "string" @@ -151,7 +151,7 @@ function foo2(x = "string", b: number) { function foo3(x: string | undefined = "string", b: number) { >foo3 : (x: string | undefined, b: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ >"string" : "string" @@ -178,7 +178,7 @@ function foo3(x: string | undefined = "string", b: number) { function foo4(x: string | undefined = undefined, b: number) { >foo4 : (x: string | undefined, b: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ >undefined : undefined @@ -205,7 +205,7 @@ type OptionalNullableString = string | null | undefined; function allowsNull(val: OptionalNullableString = "") { >allowsNull : (val?: OptionalNullableString) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >val : OptionalNullableString > : ^^^^^^^^^^^^^^^^^^^^^^ >"" : "" @@ -229,7 +229,7 @@ allowsNull(null); // still allows passing null >allowsNull(null) : void > : ^^^^ >allowsNull : (val?: OptionalNullableString) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ @@ -238,7 +238,7 @@ foo1(undefined, 1); >foo1(undefined, 1) : void > : ^^^^ >foo1 : (x: string | undefined, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >1 : 1 @@ -248,7 +248,7 @@ foo2(undefined, 1); >foo2(undefined, 1) : void > : ^^^^ >foo2 : (x: string | undefined, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >1 : 1 @@ -258,7 +258,7 @@ foo3(undefined, 1); >foo3(undefined, 1) : void > : ^^^^ >foo3 : (x: string | undefined, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >1 : 1 @@ -268,7 +268,7 @@ foo4(undefined, 1); >foo4(undefined, 1) : void > : ^^^^ >foo4 : (x: string | undefined, b: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >1 : 1 @@ -277,7 +277,7 @@ foo4(undefined, 1); function removeUndefinedButNotFalse(x = true) { >removeUndefinedButNotFalse : (x?: boolean) => false | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : boolean > : ^^^^^^^ >true : true @@ -303,7 +303,7 @@ declare const cond: boolean; function removeNothing(y = cond ? true : undefined) { >removeNothing : (y?: boolean | undefined) => boolean -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >cond ? true : undefined : true | undefined diff --git a/tests/baselines/reference/defaultParameterTrailingComments.types b/tests/baselines/reference/defaultParameterTrailingComments.types index 9afab6e845b4c..ab8aee5476acb 100644 --- a/tests/baselines/reference/defaultParameterTrailingComments.types +++ b/tests/baselines/reference/defaultParameterTrailingComments.types @@ -14,7 +14,7 @@ class C { function foo(defaultParam = 10 /*emit only once*/) {} >foo : (defaultParam?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^ >defaultParam : number > : ^^^^^^ >10 : 10 diff --git a/tests/baselines/reference/defaultValueInFunctionOverload1.types b/tests/baselines/reference/defaultValueInFunctionOverload1.types index 0401089b97606..849f977b15477 100644 --- a/tests/baselines/reference/defaultValueInFunctionOverload1.types +++ b/tests/baselines/reference/defaultValueInFunctionOverload1.types @@ -3,7 +3,7 @@ === defaultValueInFunctionOverload1.ts === function foo(x: string = ''); >foo : (x?: string) => any -> : ^^^^^ ^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : string > : ^^^^^^ >'' : "" @@ -11,7 +11,7 @@ function foo(x: string = ''); function foo(x = '') { } >foo : (x?: string) => any -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^ >x : string > : ^^^^^^ >'' : "" diff --git a/tests/baselines/reference/defaultValueInFunctionTypes.types b/tests/baselines/reference/defaultValueInFunctionTypes.types index c7dc477867290..b74165ca8598f 100644 --- a/tests/baselines/reference/defaultValueInFunctionTypes.types +++ b/tests/baselines/reference/defaultValueInFunctionTypes.types @@ -13,7 +13,7 @@ type Foo = ({ first = 0 }: { first?: number }) => unknown; var x: (a: number = 1) => number; >x : (a?: number) => number -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : number > : ^^^^^^ >1 : 1 @@ -21,9 +21,9 @@ var x: (a: number = 1) => number; var y = <(a : string = "") => any>(undefined) >y : (a?: string) => any -> : ^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ ><(a : string = "") => any>(undefined) : (a?: string) => any -> : ^^^^^ ^^^^^ +> : ^ >a : string > : ^^^^^^ >"" : "" diff --git a/tests/baselines/reference/deferredLookupTypeResolution.types b/tests/baselines/reference/deferredLookupTypeResolution.types index 80145a4f903b7..954b4330332b2 100644 --- a/tests/baselines/reference/deferredLookupTypeResolution.types +++ b/tests/baselines/reference/deferredLookupTypeResolution.types @@ -38,7 +38,7 @@ type T2 = ObjectHasKey<{ a: string }, 'b'>; // 'false' declare function f1(a: A, b: B): { [P in A | B]: any }; >f1 : (a: A, b: B) => { [P in A | B]: any; } -> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -46,7 +46,7 @@ declare function f1(a: A, b: B): { [P in A | function f2(a: A) { >f2 : (a: A) => { [P in A | "x"]: any; } -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : A > : ^ @@ -54,7 +54,7 @@ function f2(a: A) { >f1(a, 'x') : { [P in A | "x"]: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >f1 : (a: A_1, b: B) => { [P in A_1 | B]: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : A > : ^ >'x' : "x" @@ -62,8 +62,8 @@ function f2(a: A) { } function f3(x: 'a' | 'b') { ->f3 : (x: 'a' | 'b') => { a: any; b: any; x: any; } -> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f3 : (x: "a" | "b") => { a: any; b: any; x: any; } +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : "a" | "b" > : ^^^^^^^^^ @@ -71,7 +71,7 @@ function f3(x: 'a' | 'b') { >f2(x) : { a: any; b: any; x: any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2 : (a: A) => { [P in A | "x"]: any; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : "a" | "b" > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/defineVariables_useDefineForClassFields.types b/tests/baselines/reference/defineVariables_useDefineForClassFields.types index f1b0dc92cd9bd..46086195cd70d 100644 --- a/tests/baselines/reference/defineVariables_useDefineForClassFields.types +++ b/tests/baselines/reference/defineVariables_useDefineForClassFields.types @@ -5,7 +5,7 @@ const a = () => b() >a : () => any > : ^^^^^^^^^ >() => b() : () => any -> : ^^^^^^^^^ +> : >b() : any >b : () => any > : ^^^^^^^^^ @@ -14,7 +14,7 @@ const b = () => null >b : () => any > : ^^^^^^^^^ >() => null : () => any -> : ^^^^^^^^^ +> : a() >a() : any diff --git a/tests/baselines/reference/definiteAssignmentAssertions.types b/tests/baselines/reference/definiteAssignmentAssertions.types index 13b23a6466c48..4bb2d4acb1193 100644 --- a/tests/baselines/reference/definiteAssignmentAssertions.types +++ b/tests/baselines/reference/definiteAssignmentAssertions.types @@ -160,7 +160,7 @@ function f3() { >g : () => void > : ^^^^^^^^^^ >() => { x = 1; } : () => void -> : ^^^^^^^^^^ +> : x = 1; >x = 1 : 1 diff --git a/tests/baselines/reference/deleteChain.types b/tests/baselines/reference/deleteChain.types index b151eec17cb29..42b667e1866e5 100644 --- a/tests/baselines/reference/deleteChain.types +++ b/tests/baselines/reference/deleteChain.types @@ -131,9 +131,9 @@ delete o4.b?.c.d?.e; >o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >c : { d?: { e: string; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string | undefined @@ -155,9 +155,9 @@ delete (o4.b?.c.d)?.e; >o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >c : { d?: { e: string; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string | undefined @@ -179,9 +179,9 @@ delete (o4.b?.c.d?.e); >o4 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >c : { d?: { e: string; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string | undefined @@ -215,9 +215,9 @@ delete o5.b?.().c.d?.e; >o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^ ^^^^^^^^^^^^^^^^ >c : { d?: { e: string; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string | undefined @@ -241,9 +241,9 @@ delete (o5.b?.().c.d?.e); >o5 : { b?(): { c: { d?: { e: string; } | undefined; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : (() => { c: { d?: { e: string; } | undefined; }; }) | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^ ^^^^^^^^^^^^^^^^ >c : { d?: { e: string; } | undefined; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string | undefined @@ -275,7 +275,7 @@ delete o6.b?.['c'].d?.['e']; >o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >'c' : "c" > : ^^^ >d : { e: string; } | undefined @@ -299,7 +299,7 @@ delete (o6.b?.['c'].d?.['e']); >o6 : { b?: { c: { d?: { e: string; } | undefined; }; } | undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; } | undefined; }; } | undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^ ^ ^^^^^^^^^^^^^^^ >'c' : "c" > : ^^^ >d : { e: string; } | undefined diff --git a/tests/baselines/reference/deleteOperatorWithAnyOtherType.types b/tests/baselines/reference/deleteOperatorWithAnyOtherType.types index 02e8c52eff22c..0ed6c79296be3 100644 --- a/tests/baselines/reference/deleteOperatorWithAnyOtherType.types +++ b/tests/baselines/reference/deleteOperatorWithAnyOtherType.types @@ -29,7 +29,7 @@ var obj1 = { x: "", y: () => { }}; >obj1 : { x: string; y: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "", y: () => { }} : { x: string; y: () => void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^ ^^^ >x : string > : ^^^^^^ >"" : "" @@ -37,7 +37,7 @@ var obj1 = { x: "", y: () => { }}; >y : () => void > : ^^^^^^^^^^ >() => { } : () => void -> : ^^^^^^^^^^ +> : function foo(): any { >foo : () => any diff --git a/tests/baselines/reference/deleteOperatorWithNumberType.types b/tests/baselines/reference/deleteOperatorWithNumberType.types index 95a668ba68c46..3afa3ce20d104 100644 --- a/tests/baselines/reference/deleteOperatorWithNumberType.types +++ b/tests/baselines/reference/deleteOperatorWithNumberType.types @@ -101,15 +101,15 @@ var ResultIsBoolean5 = delete { x: 1, y: (n: number) => { return n; } }; >delete { x: 1, y: (n: number) => { return n; } } : boolean > : ^^^^^^^ >{ x: 1, y: (n: number) => { return n; } } : { x: number; y: (n: number) => number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >1 : 1 > : ^ >y : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(n: number) => { return n; } : (n: number) => number -> : ^^^^ ^^^^^^^^^^^ +> : >n : number > : ^^^^^^ >n : number diff --git a/tests/baselines/reference/deleteOperatorWithStringType.types b/tests/baselines/reference/deleteOperatorWithStringType.types index b7da3a3ecf5ac..e4c6e36738754 100644 --- a/tests/baselines/reference/deleteOperatorWithStringType.types +++ b/tests/baselines/reference/deleteOperatorWithStringType.types @@ -101,15 +101,15 @@ var ResultIsBoolean5 = delete { x: "", y: (s: string) => { return s; } }; >delete { x: "", y: (s: string) => { return s; } } : boolean > : ^^^^^^^ >{ x: "", y: (s: string) => { return s; } } : { x: string; y: (s: string) => string; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >x : string > : ^^^^^^ >"" : "" > : ^^ >y : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >(s: string) => { return s; } : (s: string) => string -> : ^^^^ ^^^^^^^^^^^ +> : >s : string > : ^^^^^^ >s : string @@ -198,11 +198,11 @@ var ResultIsBoolean12 = delete STRING.charAt(0); >STRING.charAt(0) : string > : ^^^^^^ >STRING.charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >STRING : string > : ^^^^^^ >charAt : (pos: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/dependentDestructuredVariables.types b/tests/baselines/reference/dependentDestructuredVariables.types index 27d694fc6330b..948dc1c8ebd63 100644 --- a/tests/baselines/reference/dependentDestructuredVariables.types +++ b/tests/baselines/reference/dependentDestructuredVariables.types @@ -25,7 +25,7 @@ type Action = function f10({ kind, payload }: Action) { >f10 : ({ kind, payload }: Action) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number @@ -42,12 +42,12 @@ function f10({ kind, payload }: Action) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -71,7 +71,7 @@ function f10({ kind, payload }: Action) { function f11(action: Action) { >f11 : (action: Action) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >action : Action > : ^^^^^^ @@ -94,12 +94,12 @@ function f11(action: Action) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -123,7 +123,7 @@ function f11(action: Action) { function f12({ kind, payload }: Action) { >f12 : ({ kind, payload }: Action) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number @@ -140,12 +140,12 @@ function f12({ kind, payload }: Action) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ break; case 'B': @@ -173,7 +173,7 @@ function f12({ kind, payload }: Action) { // repro #50206 function f13({ kind, payload }: T) { >f13 : ({ kind, payload }: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number @@ -190,12 +190,12 @@ function f13({ kind, payload }: T) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -219,7 +219,7 @@ function f13({ kind, payload }: T) { function f14(t: T) { >f14 : (t: T) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -242,12 +242,12 @@ function f14(t: T) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -287,7 +287,7 @@ type Action2 = function f20({ kind, payload }: Action2) { >f20 : ({ kind, payload }: Action2) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number | undefined @@ -308,12 +308,12 @@ function f20({ kind, payload }: Action2) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -338,7 +338,7 @@ function f20({ kind, payload }: Action2) { function f21(action: Action2) { >f21 : (action: Action2) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >action : Action2 > : ^^^^^^^ @@ -365,12 +365,12 @@ function f21(action: Action2) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -395,7 +395,7 @@ function f21(action: Action2) { function f22(action: Action2) { >f22 : (action: Action2) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >action : Action2 > : ^^^^^^^ @@ -426,12 +426,12 @@ function f22(action: Action2) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -456,7 +456,7 @@ function f22(action: Action2) { function f23({ kind, payload }: Action2) { >f23 : ({ kind, payload }: Action2) => void -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number | undefined @@ -477,12 +477,12 @@ function f23({ kind, payload }: Action2) { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ break; case 'B': @@ -538,7 +538,7 @@ type Foo = function f30({ kind, isA }: Foo) { >f30 : ({ kind, isA }: Foo) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >kind : "A" | "B" | "C" > : ^^^^^^^^^^^^^^^ >isA : boolean @@ -601,7 +601,7 @@ type Args = ['A', number] | ['B', string] function f40(...[kind, data]: Args) { >f40 : (...[kind, data]: Args) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >data : string | number @@ -618,12 +618,12 @@ function f40(...[kind, data]: Args) { data.toFixed(); >data.toFixed() : string > : ^^^^^^ ->data.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -665,19 +665,19 @@ type AB = A | B; declare function printValue(t: T): void; >printValue : (t: T) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >t : T > : ^ declare function printValueList(t: Array): void; >printValueList : (t: Array) => void -> : ^ ^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >t : T[] > : ^^^ function unrefined1(ab: AB): void { >unrefined1 : (ab: AB) => void -> : ^ ^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^^^ >ab : AB > : ^^^^^ @@ -701,7 +701,7 @@ function unrefined1(ab: AB): void { >printValue(value) : void > : ^^^^ >printValue : (t: T_1) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^ >value : T > : ^ } @@ -709,8 +709,8 @@ function unrefined1(ab: AB): void { printValueList(value); >printValueList(value) : void > : ^^^^ ->printValueList : (t: T_1[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +>printValueList : (t: Array) => void +> : ^ ^^ ^^ ^^^^^^^^^ >value : T[] > : ^^^ } @@ -740,9 +740,9 @@ type Action3 = const reducerBroken = (state: number, { type, payload }: Action3) => { >reducerBroken : (state: number, { type, payload }: Action3) => number -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >(state: number, { type, payload }: Action3) => { switch (type) { case 'add': return state + payload.toAdd; case 'remove': return state - payload.toRemove; }} : (state: number, { type, payload }: Action3) => number -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : >state : number > : ^^^^^^ >type : "add" | "remove" @@ -802,11 +802,11 @@ const { value, done } = it.next(); >it.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >it.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >it : Iterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (!done) { >!done : boolean @@ -823,9 +823,9 @@ if (!done) { declare function f50(cb: (...args: Args) => void): void >f50 : (cb: (...args: Args) => void) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >cb : (...args: Args) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : Args > : ^^^^ @@ -833,9 +833,9 @@ f50((kind, data) => { >f50((kind, data) => { if (kind === 'A') { data.toFixed(); } if (kind === 'B') { data.toUpperCase(); }}) : void > : ^^^^ >f50 : (cb: (...args: Args) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >(kind, data) => { if (kind === 'A') { data.toFixed(); } if (kind === 'B') { data.toUpperCase(); }} : (kind: "A" | "B", data: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >data : string | number @@ -852,12 +852,12 @@ f50((kind, data) => { data.toFixed(); >data.toFixed() : string > : ^^^^^^ ->data.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>data.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >data : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -880,12 +880,12 @@ f50((kind, data) => { }); const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => { ->f51 : (...args: ['A', number] | ['B', string]) => void -> : ^^^^^^^^^^ ^^^^^ +>f51 : (...args: ["A", number] | ["B", string]) => void +> : ^^^^ ^^ ^^^^^ >args : ["A", number] | ["B", string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(kind, payload) => { if (kind === 'A') { payload.toFixed(); } if (kind === 'B') { payload.toUpperCase(); }} : (kind: "A" | "B", payload: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : string | number @@ -902,12 +902,12 @@ const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === 'B') { >kind === 'B' : boolean @@ -930,12 +930,12 @@ const f51: (...args: ['A', number] | ['B', string]) => void = (kind, payload) => }; const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { ->f52 : (...args: ['A', number] | ['B']) => void -> : ^^^^^^^^^^ ^^^^^ +>f52 : (...args: ["A", number] | ["B"]) => void +> : ^^^^ ^^ ^^^^^ >args : ["A", number] | ["B"] > : ^^^^^^^^^^^^^^^^^^^^^ >(kind, payload?) => { if (kind === 'A') { payload.toFixed(); } else { payload; // undefined }} : (kind: "A" | "B", payload?: number | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "A" | "B" > : ^^^^^^^^^ >payload : number | undefined @@ -952,12 +952,12 @@ const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { payload.toFixed(); >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } else { payload; // undefined @@ -968,11 +968,11 @@ const f52: (...args: ['A', number] | ['B']) => void = (kind, payload?) => { declare function readFile(path: string, callback: (...args: [err: null, data: unknown[]] | [err: Error, data: undefined]) => void): void; >readFile : (path: string, callback: (...args: [err: null, data: unknown[]] | [err: Error, data: undefined]) => void) => void -> : ^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^ >path : string > : ^^^^^^ >callback : (...args: [err: null, data: unknown[]] | [err: Error, data: undefined]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [err: null, data: unknown[]] | [err: Error, data: undefined] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -980,11 +980,11 @@ readFile('hello', (err, data) => { >readFile('hello', (err, data) => { if (err === null) { data.length; } else { err.message; }}) : void > : ^^^^ >readFile : (path: string, callback: (...args: [err: null, data: unknown[]] | [err: Error, data: undefined]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >'hello' : "hello" > : ^^^^^^^ >(err, data) => { if (err === null) { data.length; } else { err.message; }} : (err: Error | null, data: unknown[] | undefined) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >err : Error | null > : ^^^^^^^^^^^^ >data : unknown[] | undefined @@ -1029,11 +1029,11 @@ type ReducerArgs = ["add", { a: number, b: number }] | ["concat", { firstArr: an const reducer: (...args: ReducerArgs) => void = (op, args) => { >reducer : (...args: ReducerArgs) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : ReducerArgs > : ^^^^^^^^^^^ >(op, args) => { switch (op) { case "add": console.log(args.a + args.b); break; case "concat": console.log(args.firstArr.concat(args.secondArr)); break; }} : (op: "add" | "concat", args: { a: number; b: number; } | { firstArr: any[]; secondArr: any[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >op : "add" | "concat" > : ^^^^^^^^^^^^^^^^ >args : { a: number; b: number; } | { firstArr: any[]; secondArr: any[]; } @@ -1051,11 +1051,11 @@ const reducer: (...args: ReducerArgs) => void = (op, args) => { >console.log(args.a + args.b) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args.a + args.b : number > : ^^^^^^ >args.a : number @@ -1080,15 +1080,15 @@ const reducer: (...args: ReducerArgs) => void = (op, args) => { >console.log(args.firstArr.concat(args.secondArr)) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >args.firstArr.concat(args.secondArr) : any[] > : ^^^^^ >args.firstArr.concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >args.firstArr : any[] > : ^^^^^ >args : { firstArr: any[]; secondArr: any[]; } @@ -1096,7 +1096,7 @@ const reducer: (...args: ReducerArgs) => void = (op, args) => { >firstArr : any[] > : ^^^^^ >concat : { (...items: ConcatArray[]): any[]; (...items: any[]): any[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >args.secondArr : any[] > : ^^^^^ >args : { firstArr: any[]; secondArr: any[]; } @@ -1112,7 +1112,7 @@ reducer("add", { a: 1, b: 3 }); >reducer("add", { a: 1, b: 3 }) : void > : ^^^^ >reducer : (...args: ReducerArgs) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"add" : "add" > : ^^^^^ >{ a: 1, b: 3 } : { a: number; b: number; } @@ -1130,7 +1130,7 @@ reducer("concat", { firstArr: [1, 2], secondArr: [3, 4] }); >reducer("concat", { firstArr: [1, 2], secondArr: [3, 4] }) : void > : ^^^^ >reducer : (...args: ReducerArgs) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >"concat" : "concat" > : ^^^^^^^^ >{ firstArr: [1, 2], secondArr: [3, 4] } : { firstArr: number[]; secondArr: number[]; } @@ -1160,9 +1160,9 @@ type FooMethod = { method(...args: >method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ [type: "str", cb: (e: string) => void] | >e : string @@ -1179,15 +1179,15 @@ let fooM: FooMethod = { >fooM : FooMethod > : ^^^^^^^^^ >{ method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): void; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ method(type, cb) { >method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (type == 'num') { >type == 'num' : boolean @@ -1201,7 +1201,7 @@ let fooM: FooMethod = { >cb(123) : void > : ^^^^ >cb : (e: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ @@ -1210,7 +1210,7 @@ let fooM: FooMethod = { >cb("abc") : void > : ^^^^ >cb : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"abc" : "abc" > : ^^^^^ } @@ -1223,9 +1223,9 @@ type FooAsyncMethod = { method(...args: >method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Promise -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ [type: "str", cb: (e: string) => void] | >e : string @@ -1242,15 +1242,15 @@ let fooAsyncM: FooAsyncMethod = { >fooAsyncM : FooAsyncMethod > : ^^^^^^^^^^^^^^ >{ async method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Promise; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async method(type, cb) { >method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (type == 'num') { >type == 'num' : boolean @@ -1264,7 +1264,7 @@ let fooAsyncM: FooAsyncMethod = { >cb(123) : void > : ^^^^ >cb : (e: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ @@ -1273,7 +1273,7 @@ let fooAsyncM: FooAsyncMethod = { >cb("abc") : void > : ^^^^ >cb : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"abc" : "abc" > : ^^^^^ } @@ -1286,9 +1286,9 @@ type FooGenMethod = { method(...args: >method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => Generator -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ [type: "str", cb: (e: string) => void] | >e : string @@ -1305,15 +1305,15 @@ let fooGenM: FooGenMethod = { >fooGenM : FooGenMethod > : ^^^^^^^^^^^^ >{ *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): Generator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *method(type, cb) { >method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => Generator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (type == 'num') { >type == 'num' : boolean @@ -1327,7 +1327,7 @@ let fooGenM: FooGenMethod = { >cb(123) : void > : ^^^^ >cb : (e: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ @@ -1336,7 +1336,7 @@ let fooGenM: FooGenMethod = { >cb("abc") : void > : ^^^^ >cb : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"abc" : "abc" > : ^^^^^ } @@ -1349,9 +1349,9 @@ type FooAsyncGenMethod = { method(...args: >method : (...args: [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void]) => AsyncGenerator -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [type: "str", cb: (e: string) => void] | [type: "num", cb: (e: number) => void] -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^ +> : ^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ [type: "str", cb: (e: string) => void] | >e : string @@ -1368,15 +1368,15 @@ let fooAsyncGenM: FooAsyncGenMethod = { >fooAsyncGenM : FooAsyncGenMethod > : ^^^^^^^^^^^^^^^^^ >{ async *method(type, cb) { if (type == 'num') { cb(123) } else { cb("abc") } }} : { method(type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)): AsyncGenerator; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ async *method(type, cb) { >method : (type: "str" | "num", cb: ((e: string) => void) | ((e: number) => void)) => AsyncGenerator -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : "str" | "num" > : ^^^^^^^^^^^^^ >cb : ((e: string) => void) | ((e: number) => void) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ if (type == 'num') { >type == 'num' : boolean @@ -1390,7 +1390,7 @@ let fooAsyncGenM: FooAsyncGenMethod = { >cb(123) : void > : ^^^^ >cb : (e: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >123 : 123 > : ^^^ @@ -1399,7 +1399,7 @@ let fooAsyncGenM: FooAsyncGenMethod = { >cb("abc") : void > : ^^^^ >cb : (e: string) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >"abc" : "abc" > : ^^^^^ } @@ -1418,7 +1418,7 @@ const f60: Func = (kind, payload) => { >f60 : Func > : ^^^^ >(kind, payload) => { if (kind === "a") { payload.toFixed(); // error } if (kind === "b") { payload.toUpperCase(); // error }} : (kind: T[0], payload: T[1]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^ >kind : T[0] > : ^^^^ >payload : T[1] @@ -1435,12 +1435,12 @@ const f60: Func = (kind, payload) => { payload.toFixed(); // error >payload.toFixed() : string > : ^^^^^^ ->payload.toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>payload.toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ >payload : number > : ^^^^^^ ->toFixed : (fractionDigits?: number | undefined) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>toFixed : (fractionDigits?: number) => string +> : ^ ^^^ ^^^^^^^^^^^ } if (kind === "b") { >kind === "b" : boolean @@ -1466,7 +1466,7 @@ const f60: Func = (kind, payload) => { function foo({ >foo : ({ value1, test1, test2, test3, test4, test5, test6, test7, test8, test9 }: { value1: any; test1?: any; test2?: any; test3?: any; test4?: any; test5?: any; test6?: any; test7?: any; test8?: any; test9?: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ value1, >value1 : any @@ -1568,7 +1568,7 @@ function foo({ function fa1(x: [true, number] | [false, string]) { >fa1 : (x: [true, number] | [false, string]) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : [true, number] | [false, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -1612,7 +1612,7 @@ function fa1(x: [true, number] | [false, string]) { function fa2(x: { guard: true, value: number } | { guard: false, value: string }) { >fa2 : (x: { guard: true; value: number; } | { guard: false; value: string; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : { guard: true; value: number; } | { guard: false; value: string; } > : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^ >guard : true @@ -1664,7 +1664,7 @@ function fa2(x: { guard: true, value: number } | { guard: false, value: string } const fa3: (...args: [true, number] | [false, string]) => void = (guard, value) => { >fa3 : (...args: [true, number] | [false, string]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [true, number] | [false, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -1672,7 +1672,7 @@ const fa3: (...args: [true, number] | [false, string]) => void = (guard, value) >false : false > : ^^^^^ >(guard, value) => { if (guard) { for (;;) { value; // number } } else { while (!!true) { value; // string } }} : (guard: boolean, value: string | number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >guard : boolean > : ^^^^^^^ >value : string | number @@ -1722,11 +1722,11 @@ declare class Client { public on(event: K, listener: (...args: ClientEvents[K]) => void): void; >on : (event: K, listener: (...args: ClientEvents[K]) => void) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >event : K > : ^ >listener : (...args: ClientEvents[K]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : ClientEvents[K] > : ^^^^^^^^^^^^^^^ } @@ -1743,15 +1743,15 @@ bot.on("shardDisconnect", (event, shard) => console.log(`Shard ${shard} disconne >bot.on("shardDisconnect", (event, shard) => console.log(`Shard ${shard} disconnected (${event.code},${event.wasClean}): ${event.reason}`)) : void > : ^^^^ >bot.on : (event: K, listener: (...args: ClientEvents[K]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >bot : Client > : ^^^^^^ >on : (event: K, listener: (...args: ClientEvents[K]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >"shardDisconnect" : "shardDisconnect" > : ^^^^^^^^^^^^^^^^^ >(event, shard) => console.log(`Shard ${shard} disconnected (${event.code},${event.wasClean}): ${event.reason}`) : (event: CloseEvent, shard: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >event : CloseEvent > : ^^^^^^^^^^ >shard : number @@ -1759,11 +1759,11 @@ bot.on("shardDisconnect", (event, shard) => console.log(`Shard ${shard} disconne >console.log(`Shard ${shard} disconnected (${event.code},${event.wasClean}): ${event.reason}`) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >`Shard ${shard} disconnected (${event.code},${event.wasClean}): ${event.reason}` : string > : ^^^^^^ >shard : number @@ -1791,25 +1791,25 @@ bot.on("shardDisconnect", event => console.log(`${event.code} ${event.wasClean} >bot.on("shardDisconnect", event => console.log(`${event.code} ${event.wasClean} ${event.reason}`)) : void > : ^^^^ >bot.on : (event: K, listener: (...args: ClientEvents[K]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >bot : Client > : ^^^^^^ >on : (event: K, listener: (...args: ClientEvents[K]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >"shardDisconnect" : "shardDisconnect" > : ^^^^^^^^^^^^^^^^^ >event => console.log(`${event.code} ${event.wasClean} ${event.reason}`) : (event: CloseEvent) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^ >event : CloseEvent > : ^^^^^^^^^^ >console.log(`${event.code} ${event.wasClean} ${event.reason}`) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >`${event.code} ${event.wasClean} ${event.reason}` : string > : ^^^^^^ >event.code : number @@ -1835,7 +1835,7 @@ bot.on("shardDisconnect", event => console.log(`${event.code} ${event.wasClean} function fz1([x, y]: [1, 2] | [3, 4] | [5]) { >fz1 : ([x, y]: [1, 2] | [3, 4] | [5]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : 1 | 3 | 5 > : ^^^^^^^^^ >y : 2 | 4 | undefined @@ -1919,7 +1919,7 @@ function fz1([x, y]: [1, 2] | [3, 4] | [5]) { function tooNarrow([x, y]: [1, 1] | [1, 2] | [1]) { >tooNarrow : ([x, y]: [1, 1] | [1, 2] | [1]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : 1 > : ^ >y : 2 | 1 | undefined @@ -1945,7 +1945,7 @@ function tooNarrow([x, y]: [1, 1] | [1, 2] | [1]) { function parameterReassigned1([x, y]: [1, 2] | [3, 4]) { >parameterReassigned1 : ([x, y]: [1, 2] | [3, 4]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : 1 | 3 > : ^^^^^ >y : 2 | 4 @@ -1985,7 +1985,7 @@ function parameterReassigned1([x, y]: [1, 2] | [3, 4]) { function parameterReassigned2([x, y]: [1, 2] | [3, 4]) { >parameterReassigned2 : ([x, y]: [1, 2] | [3, 4]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : 1 | 3 > : ^^^^^ >y : 2 | 4 @@ -2027,11 +2027,11 @@ function parameterReassigned2([x, y]: [1, 2] | [3, 4]) { const parameterReassignedContextualRest1: (...args: [1, 2] | [3, 4]) => void = (x, y) => { >parameterReassignedContextualRest1 : (...args: [1, 2] | [3, 4]) => void -> : ^^^^^^^^^^ ^^^^^ +> : ^^^^ ^^ ^^^^^ >args : [1, 2] | [3, 4] > : ^^^^^^^^^^^^^^^ >(x, y) => { if (Math.random()) { y = 2; } if (y === 2) { x; // 1 | 3 }} : (x: 1 | 3, y: 2 | 4) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ >x : 1 | 3 > : ^^^^^ >y : 2 | 4 diff --git a/tests/baselines/reference/dependentDestructuredVariablesFromNestedPatterns.types b/tests/baselines/reference/dependentDestructuredVariablesFromNestedPatterns.types index 74204ef0b204b..562ada922367b 100644 --- a/tests/baselines/reference/dependentDestructuredVariablesFromNestedPatterns.types +++ b/tests/baselines/reference/dependentDestructuredVariablesFromNestedPatterns.types @@ -3,7 +3,7 @@ === dependentDestructuredVariablesFromNestedPatterns.ts === function test1(arg: [[undefined, Error] | [number, undefined]]) { >test1 : (arg: [[undefined, Error] | [number, undefined]]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >arg : [[undefined, Error] | [number, undefined]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -29,7 +29,7 @@ function test1(arg: [[undefined, Error] | [number, undefined]]) { function test2([[p1, p1Error]]: [[undefined, Error] | [number, undefined]]) { >test2 : ([[p1, p1Error]]: [[undefined, Error] | [number, undefined]]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p1 : number | undefined > : ^^^^^^^^^^^^^^^^^^ >p1Error : Error | undefined @@ -49,7 +49,7 @@ function test2([[p1, p1Error]]: [[undefined, Error] | [number, undefined]]) { async function myAllSettled(fn: () => T) { >myAllSettled : (fn: () => T) => Promise<{ [K in keyof T]: [undefined, Error] | [Awaited, undefined]; }> -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn : () => T > : ^^^^^^ @@ -57,15 +57,15 @@ async function myAllSettled(fn: () => T) { >promises : { -readonly [P in keyof T]: PromiseSettledResult>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >await Promise.allSettled(fn()) : { -readonly [P in keyof T]: PromiseSettledResult>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >Promise.allSettled(fn()) : Promise<{ -readonly [P in keyof T]: PromiseSettledResult>; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.allSettled : { (values: T_1): Promise<{ -readonly [P in keyof T_1]: PromiseSettledResult>; }>; (values: Iterable>): Promise>[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >allSettled : { (values: T_1): Promise<{ -readonly [P in keyof T_1]: PromiseSettledResult>; }>; (values: Iterable>): Promise>[]>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fn() : T > : ^ >fn : () => T @@ -77,13 +77,13 @@ async function myAllSettled(fn: () => T) { >promises.map((result) => result.status === "fulfilled" ? [result.value, undefined] : [undefined, new Error(String(result.reason))], ) : ([undefined, Error] | [unknown, undefined])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >promises.map : (callbackfn: (value: PromiseSettledResult, index: number, array: PromiseSettledResult[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >promises : { -readonly [P in keyof T]: PromiseSettledResult>; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map : (callbackfn: (value: PromiseSettledResult, index: number, array: PromiseSettledResult[]) => U, thisArg?: any) => U[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(result) => result.status === "fulfilled" ? [result.value, undefined] : [undefined, new Error(String(result.reason))] : (result: PromiseSettledResult) => [undefined, Error] | [unknown, undefined] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : PromiseSettledResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -151,7 +151,7 @@ async function test3() { >myAllSettled( () => [Promise.resolve(0), Promise.reject(1)] as const, ) : Promise<[[undefined, Error] | [number, undefined], [undefined, Error] | [never, undefined]]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myAllSettled : (fn: () => T) => Promise<{ [K in keyof T]: [undefined, Error] | [Awaited, undefined]; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ () => [Promise.resolve(0), Promise.reject(1)] as const, >() => [Promise.resolve(0), Promise.reject(1)] as const : () => [Promise, Promise] @@ -163,21 +163,21 @@ async function test3() { >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ >Promise.resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >resolve : { (): Promise; (value: T): Promise>; (value: T_1 | PromiseLike): Promise>; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ >Promise.reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ >reject : (reason?: any) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ >1 : 1 > : ^ @@ -194,7 +194,7 @@ async function test3() { function test4([[p1, p1Error]]: [[undefined, Error] | [number, undefined]]) { >test4 : ([[p1, p1Error]]: [[undefined, Error] | [number, undefined]]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p1 : number | undefined > : ^^^^^^^^^^^^^^^^^^ >p1Error : Error | undefined diff --git a/tests/baselines/reference/derivedClassConstructorWithExplicitReturns01.types b/tests/baselines/reference/derivedClassConstructorWithExplicitReturns01.types index 4dc19a401ce19..87af8db88e2f4 100644 --- a/tests/baselines/reference/derivedClassConstructorWithExplicitReturns01.types +++ b/tests/baselines/reference/derivedClassConstructorWithExplicitReturns01.types @@ -53,7 +53,7 @@ class D extends C { >dProp : () => this > : ^^^^^^^^^^ >() => this : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ @@ -103,7 +103,7 @@ class D extends C { >dProp : () => this > : ^^^^^^^^^^ >() => this : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ diff --git a/tests/baselines/reference/derivedClassConstructorWithoutSuperCall.types b/tests/baselines/reference/derivedClassConstructorWithoutSuperCall.types index 94a3031bdb738..0b7c86ddc184e 100644 --- a/tests/baselines/reference/derivedClassConstructorWithoutSuperCall.types +++ b/tests/baselines/reference/derivedClassConstructorWithoutSuperCall.types @@ -42,7 +42,7 @@ class Derived2 extends Base2 { >r2 : () => void > : ^^^^^^^^^^ >() => super() : () => void -> : ^^^^^^^^^^ +> : >super() : void > : ^^^^ >super : any @@ -61,7 +61,7 @@ class Derived3 extends Base2 { >r : () => void > : ^^^^^^^^^^ >function () { super() } : () => void -> : ^^^^^^^^^^ +> : >super() : void > : ^^^^ >super : any diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types index 12d7621016a18..813dbed489aae 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types @@ -27,7 +27,7 @@ class Base { protected b(a: typeof x) { } >b : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -49,7 +49,7 @@ class Base { protected d: (a: typeof x) => void; >d : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -63,7 +63,7 @@ class Base { protected static s(a: typeof x) { } >s : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -85,7 +85,7 @@ class Base { protected static u: (a: typeof x) => void; >u : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -112,7 +112,7 @@ class Derived extends Base { protected b(a: typeof y) { } >b : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -134,7 +134,7 @@ class Derived extends Base { protected d: (a: typeof y) => void; >d : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -148,7 +148,7 @@ class Derived extends Base { protected static s(a: typeof y) { } >s : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -170,7 +170,7 @@ class Derived extends Base { protected static u: (a: typeof y) => void; >u : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types index 142fa6249f7fc..b2f14fa84a7d2 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types @@ -27,7 +27,7 @@ class Base { protected b(a: typeof x) { } >b : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -49,7 +49,7 @@ class Base { protected d: (a: typeof x) => void ; >d : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -63,7 +63,7 @@ class Base { protected static s(a: typeof x) { } >s : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -85,7 +85,7 @@ class Base { protected static u: (a: typeof x) => void ; >u : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -113,7 +113,7 @@ class Derived extends Base { b(a: typeof y) { } >b : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -135,7 +135,7 @@ class Derived extends Base { d: (a: typeof y) => void; >d : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -149,7 +149,7 @@ class Derived extends Base { static s(a: typeof y) { } >s : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -171,7 +171,7 @@ class Derived extends Base { static u: (a: typeof y) => void; >u : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -204,7 +204,7 @@ var r1 = d.a; >r1 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d.a : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ >a : { foo: string; bar: string; } @@ -215,12 +215,12 @@ var r2 = d.b(y); > : ^^^^ >d.b(y) : void > : ^^^^ ->d.b : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>d.b : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >d : Derived > : ^^^^^^^ ->b : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >y : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -228,21 +228,21 @@ var r3 = d.c; >r3 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d.c : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ >c : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var r3a = d.d; ->r3a : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->d.d : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r3a : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ +>d.d : (a: typeof y) => void +> : >d : Derived > : ^^^^^^^ ->d : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>d : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ d.c = y; >d.c = y : { foo: string; bar: string; } @@ -254,13 +254,13 @@ d.c = y; >c : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : var r4 = Derived.r; >r4 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Derived.r : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ >r : { foo: string; bar: string; } @@ -271,12 +271,12 @@ var r5 = Derived.s(y); > : ^^^^ >Derived.s(y) : void > : ^^^^ ->Derived.s : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Derived.s : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >Derived : typeof Derived > : ^^^^^^^^^^^^^^ ->s : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>s : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >y : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -284,21 +284,21 @@ var r6 = Derived.t; >r6 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Derived.t : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ >t : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var r6a = Derived.u; ->r6a : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Derived.u : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r6a : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ +>Derived.u : (a: typeof y) => void +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ ->u : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>u : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ Derived.t = y; >Derived.t = y : { foo: string; bar: string; } @@ -310,7 +310,7 @@ Derived.t = y; >t : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : class Base2 { >Base2 : Base2 @@ -354,7 +354,7 @@ var r7 = d2['']; >r7 : { foo: string; } > : ^^^^^^^^^^^^^^^^ >d2[''] : { foo: string; } -> : ^^^^^^^^^^^^^^^^ +> : >d2 : Derived2 > : ^^^^^^^^ >'' : "" @@ -364,7 +364,7 @@ var r8 = d2[1]; >r8 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d2[1] : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d2 : Derived2 > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers3.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers3.types index 45afca5c2c9d7..049dca2fa706c 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers3.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers3.types @@ -27,7 +27,7 @@ class Base { b(a: typeof x) { } >b : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -49,7 +49,7 @@ class Base { d: (a: typeof x) => void; >d : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -63,7 +63,7 @@ class Base { static s(a: typeof x) { } >s : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -85,7 +85,7 @@ class Base { static u: (a: typeof x) => void; >u : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -133,7 +133,7 @@ class Derived2 extends Base { protected b(a: typeof x) { } >b : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -212,7 +212,7 @@ class Derived5 extends Base { protected d: (a: typeof x) => void ; >d : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -264,7 +264,7 @@ class Derived7 extends Base { protected static s(a: typeof x) { } >s : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -343,7 +343,7 @@ class Derived10 extends Base { protected static u: (a: typeof x) => void ; >u : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } diff --git a/tests/baselines/reference/derivedClassOverridesPublicMembers.types b/tests/baselines/reference/derivedClassOverridesPublicMembers.types index dff1cdb7df7a8..508c6592304e9 100644 --- a/tests/baselines/reference/derivedClassOverridesPublicMembers.types +++ b/tests/baselines/reference/derivedClassOverridesPublicMembers.types @@ -27,7 +27,7 @@ class Base { b(a: typeof x) { } >b : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -49,7 +49,7 @@ class Base { d: (a: typeof x) => void; >d : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -63,7 +63,7 @@ class Base { static s(a: typeof x) { } >s : (a: typeof x) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -85,7 +85,7 @@ class Base { static u: (a: typeof x) => void; >u : (a: typeof x) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; } > : ^^^^^^^^^^^^^^^^ >x : { foo: string; } @@ -112,7 +112,7 @@ class Derived extends Base { b(a: typeof y) { } >b : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -134,7 +134,7 @@ class Derived extends Base { d: (a: typeof y) => void; >d : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -148,7 +148,7 @@ class Derived extends Base { static s(a: typeof y) { } >s : (a: typeof y) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -170,7 +170,7 @@ class Derived extends Base { static u: (a: typeof y) => void; >u : (a: typeof y) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >a : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } @@ -203,7 +203,7 @@ var r1 = d.a; >r1 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d.a : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ >a : { foo: string; bar: string; } @@ -214,12 +214,12 @@ var r2 = d.b(y); > : ^^^^ >d.b(y) : void > : ^^^^ ->d.b : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>d.b : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >d : Derived > : ^^^^^^^ ->b : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >y : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -227,21 +227,21 @@ var r3 = d.c; >r3 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d.c : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d : Derived > : ^^^^^^^ >c : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var r3a = d.d; ->r3a : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->d.d : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r3a : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ +>d.d : (a: typeof y) => void +> : >d : Derived > : ^^^^^^^ ->d : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>d : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ d.c = y; >d.c = y : { foo: string; bar: string; } @@ -253,13 +253,13 @@ d.c = y; >c : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : var r4 = Derived.r; >r4 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Derived.r : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ >r : { foo: string; bar: string; } @@ -270,12 +270,12 @@ var r5 = Derived.s(y); > : ^^^^ >Derived.s(y) : void > : ^^^^ ->Derived.s : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Derived.s : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >Derived : typeof Derived > : ^^^^^^^^^^^^^^ ->s : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>s : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ >y : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -283,21 +283,21 @@ var r6 = Derived.t; >r6 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Derived.t : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ >t : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ var r6a = Derived.u; ->r6a : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Derived.u : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>r6a : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ +>Derived.u : (a: typeof y) => void +> : >Derived : typeof Derived > : ^^^^^^^^^^^^^^ ->u : (a: { foo: string; bar: string; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>u : (a: typeof y) => void +> : ^ ^^ ^^^^^^^^^ Derived.t = y; >Derived.t = y : { foo: string; bar: string; } @@ -309,7 +309,7 @@ Derived.t = y; >t : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : class Base2 { >Base2 : Base2 @@ -353,7 +353,7 @@ var r7 = d2['']; >r7 : { foo: string; } > : ^^^^^^^^^^^^^^^^ >d2[''] : { foo: string; } -> : ^^^^^^^^^^^^^^^^ +> : >d2 : Derived2 > : ^^^^^^^^ >'' : "" @@ -363,7 +363,7 @@ var r8 = d2[1]; >r8 : { foo: string; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d2[1] : { foo: string; bar: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >d2 : Derived2 > : ^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/derivedClassSuperProperties.types b/tests/baselines/reference/derivedClassSuperProperties.types index 38334ec4c02cc..faf88c999ace7 100644 --- a/tests/baselines/reference/derivedClassSuperProperties.types +++ b/tests/baselines/reference/derivedClassSuperProperties.types @@ -15,7 +15,7 @@ class Base { receivesAnything(param?) { } >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >param : any > : ^^^ } @@ -37,11 +37,11 @@ class Derived1 extends Base { >super.receivesAnything() : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ super(); >super() : void @@ -68,11 +68,11 @@ class Derived2 extends Base { >super.receivesAnything(this) : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this : this > : ^^^^ @@ -101,11 +101,11 @@ class Derived3 extends Base { >super.receivesAnything() : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ super(this); >super(this) : void @@ -134,11 +134,11 @@ class Derived4 extends Base { >super.receivesAnything(this) : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this : this > : ^^^^ @@ -175,11 +175,11 @@ class Derived5 extends Base { >super.receivesAnything() : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ } } @@ -208,11 +208,11 @@ class Derived6 extends Base { >super.receivesAnything() : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ } } @@ -239,11 +239,11 @@ class Derived7 extends Base { >super.receivesAnything(this) : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this : this > : ^^^^ } @@ -274,11 +274,11 @@ class Derived8 extends Base { >super.receivesAnything(this) : void > : ^^^^ >super.receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >receivesAnything : (param?: any) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >this : this > : ^^^^ } @@ -330,9 +330,9 @@ class DerivedWithArrowFunctionParameter extends Base { constructor() { const lambda = (param = this) => {}; >lambda : (param?: this) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^ >(param = this) => {} : (param?: this) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ >param : this > : ^^^^ >this : this @@ -501,7 +501,7 @@ class DerivedWithFunctionDeclarationAndThisParam extends Base { constructor() { function declaration(param = this) { >declaration : (param?: any) => any -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^ >param : any > : ^^^ >this : any @@ -785,11 +785,11 @@ class DerivedWithClassExpression extends Base { >console.log(class { private method() { return this; } private property = 7; constructor() { this.property; this.method(); } }) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >class { private method() { return this; } private property = 7; constructor() { this.property; this.method(); } } : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -852,11 +852,11 @@ class DerivedWithClassExpressionExtendingMember extends Base { >console.log(class extends this.memberClass { }) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >class extends this.memberClass { } : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >this.memberClass : (Anonymous class) @@ -891,11 +891,11 @@ class DerivedWithDerivedClassExpression extends Base { >console.log(class extends Base { constructor() { super(); } public foo() { return this; } public bar = () => this; }) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >class extends Base { constructor() { super(); } public foo() { return this; } public bar = () => this; } : typeof (Anonymous class) > : ^^^^^^^^^^^^^^^^^^^^^^^^ >Base : Base @@ -920,7 +920,7 @@ class DerivedWithDerivedClassExpression extends Base { >bar : () => this > : ^^^^^^^^^^ >() => this : () => this -> : ^^^^^^^^^^ +> : >this : this > : ^^^^ @@ -950,11 +950,11 @@ class DerivedWithNewDerivedClassExpression extends Base { >console.log(new class extends Base { constructor() { super(); } }()) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >new class extends Base { constructor() { super(); } }() : (Anonymous class) > : ^^^^^^^^^^^^^^^^^ >class extends Base { constructor() { super(); } } : typeof (Anonymous class) diff --git a/tests/baselines/reference/derivedClassSuperStatementPosition.types b/tests/baselines/reference/derivedClassSuperStatementPosition.types index 991d96d19f3b7..ec5501ca8400b 100644 --- a/tests/baselines/reference/derivedClassSuperStatementPosition.types +++ b/tests/baselines/reference/derivedClassSuperStatementPosition.types @@ -144,11 +144,11 @@ class DerivedComments extends Object { >console.log() : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ // c3 super(); // c4 @@ -193,11 +193,11 @@ class DerivedCommentsInvalidThis extends Object { >console.log() : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ // c3 super(); // c4 diff --git a/tests/baselines/reference/derivedClassTransitivity.types b/tests/baselines/reference/derivedClassTransitivity.types index e65766d5d6a34..b3547691f4681 100644 --- a/tests/baselines/reference/derivedClassTransitivity.types +++ b/tests/baselines/reference/derivedClassTransitivity.types @@ -9,7 +9,7 @@ class C { foo(x: number) { } >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } @@ -33,7 +33,7 @@ class E extends D { foo(x?: string) { } // ok to add optional parameters >foo : (x?: string) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : string > : ^^^^^^ } @@ -64,11 +64,11 @@ var r = c.foo(1); >c.foo(1) : void > : ^^^^ >c.foo : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : C > : ^ >foo : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -78,11 +78,11 @@ var r2 = e.foo(''); >e.foo('') : void > : ^^^^ >e.foo : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >e : E > : ^ >foo : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/derivedClassTransitivity2.types b/tests/baselines/reference/derivedClassTransitivity2.types index 47cff72c9ad8a..7dfd5821fd070 100644 --- a/tests/baselines/reference/derivedClassTransitivity2.types +++ b/tests/baselines/reference/derivedClassTransitivity2.types @@ -9,7 +9,7 @@ class C { foo(x: number, y: number) { } >foo : (x: number, y: number) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -24,7 +24,7 @@ class D extends C { foo(x: number) { } // ok to drop parameters >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } @@ -37,7 +37,7 @@ class E extends D { foo(x: number, y?: string) { } // ok to add optional parameters >foo : (x: number, y?: string) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >x : number > : ^^^^^^ >y : string @@ -70,11 +70,11 @@ var r = c.foo(1, 1); >c.foo(1, 1) : void > : ^^^^ >c.foo : (x: number, y: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >c : C > : ^ >foo : (x: number, y: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >1 : 1 @@ -86,11 +86,11 @@ var r2 = e.foo(1, ''); >e.foo(1, '') : void > : ^^^^ >e.foo : (x: number, y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >e : E > : ^ >foo : (x: number, y?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >1 : 1 > : ^ >'' : "" diff --git a/tests/baselines/reference/derivedClassTransitivity3.types b/tests/baselines/reference/derivedClassTransitivity3.types index c2686df55978e..9ed86c2517ef2 100644 --- a/tests/baselines/reference/derivedClassTransitivity3.types +++ b/tests/baselines/reference/derivedClassTransitivity3.types @@ -9,7 +9,7 @@ class C { foo(x: T, y: T) { } >foo : (x: T, y: T) => void -> : ^^^^ ^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : T @@ -24,7 +24,7 @@ class D extends C { foo(x: T) { } // ok to drop parameters >foo : (x: T) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : T > : ^ } @@ -37,7 +37,7 @@ class E extends D { foo(x: T, y?: number) { } // ok to add optional parameters >foo : (x: T, y?: number) => void -> : ^^^^ ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^^^^^ >x : T > : ^ >y : number @@ -70,11 +70,11 @@ var r = c.foo('', ''); >c.foo('', '') : void > : ^^^^ >c.foo : (x: string, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >c : C > : ^^^^^^^^^ >foo : (x: string, y: string) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >'' : "" > : ^^ >'' : "" @@ -86,11 +86,11 @@ var r2 = e.foo('', 1); >e.foo('', 1) : void > : ^^^^ >e.foo : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >e : E > : ^^^^^^^^^ >foo : (x: string, y?: number) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^ ^^^ ^^^^^^^^^ >'' : "" > : ^^ >1 : 1 diff --git a/tests/baselines/reference/derivedClassTransitivity4.types b/tests/baselines/reference/derivedClassTransitivity4.types index 4bc3e00bea0be..e99a76ced92ff 100644 --- a/tests/baselines/reference/derivedClassTransitivity4.types +++ b/tests/baselines/reference/derivedClassTransitivity4.types @@ -9,7 +9,7 @@ class C { protected foo(x: number) { } >foo : (x: number) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ } @@ -33,7 +33,7 @@ class E extends D { public foo(x?: string) { } // ok to add optional parameters >foo : (x?: string) => void -> : ^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >x : string > : ^^^^^^ } @@ -64,11 +64,11 @@ var r = c.foo(1); >c.foo(1) : void > : ^^^^ >c.foo : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >c : C > : ^ >foo : (x: number) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >1 : 1 > : ^ @@ -78,11 +78,11 @@ var r2 = e.foo(''); >e.foo('') : void > : ^^^^ >e.foo : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >e : E > : ^ >foo : (x?: string) => void -> : ^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/derivedClasses.types b/tests/baselines/reference/derivedClasses.types index 405e1f8bc3765..35c388d766a29 100644 --- a/tests/baselines/reference/derivedClasses.types +++ b/tests/baselines/reference/derivedClasses.types @@ -15,7 +15,7 @@ class Red extends Color { >getHue : () => string > : ^^^^^^^^^^^^ >() => { return this.hue(); } : () => string -> : ^^^^^^^^^^^^ +> : >this.hue() : string > : ^^^^^^ >this.hue : () => string @@ -68,7 +68,7 @@ class Blue extends Color { >getHue : () => string > : ^^^^^^^^^^^^ >() => { return this.hue(); } : () => string -> : ^^^^^^^^^^^^ +> : >this.hue() : string > : ^^^^^^ >this.hue : () => string diff --git a/tests/baselines/reference/derivedInterfaceCallSignature.types b/tests/baselines/reference/derivedInterfaceCallSignature.types index e1a1367a23f61..5884c975ecbf2 100644 --- a/tests/baselines/reference/derivedInterfaceCallSignature.types +++ b/tests/baselines/reference/derivedInterfaceCallSignature.types @@ -44,9 +44,9 @@ interface D3SvgPath { interface D3SvgArea extends D3SvgPath { x(x: (data: any, index?: number) => number): D3SvgArea; >x : (x: (data: any, index?: number) => number) => D3SvgArea -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : (data: any, index?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >data : any > : ^^^ >index : number @@ -54,9 +54,9 @@ interface D3SvgArea extends D3SvgPath { y(y: (data: any, index?: number) => number): D3SvgArea; >y : (y: (data: any, index?: number) => number) => D3SvgArea -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >y : (data: any, index?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >data : any > : ^^^ >index : number @@ -64,7 +64,7 @@ interface D3SvgArea extends D3SvgPath { y0(): (data: any, index?: number) => number; >y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >data : any > : ^^^ >index : number @@ -72,15 +72,15 @@ interface D3SvgArea extends D3SvgPath { y0(y: number): D3SvgArea; >y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ y0(y: (data: any, index?: number) => number): D3SvgArea; >y0 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >y : (data: any, index?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >data : any > : ^^^ >index : number @@ -88,7 +88,7 @@ interface D3SvgArea extends D3SvgPath { y1(): (data: any, index?: number) => number; >y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >data : any > : ^^^ >index : number @@ -96,15 +96,15 @@ interface D3SvgArea extends D3SvgPath { y1(y: number): D3SvgArea; >y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ y1(y: (data: any, index?: number) => number): D3SvgArea; >y1 : { (): (data: any, index?: number) => number; (y: number): D3SvgArea; (y: (data: any, index?: number) => number): D3SvgArea; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^ +> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >y : (data: any, index?: number) => number -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >data : any > : ^^^ >index : number @@ -112,21 +112,21 @@ interface D3SvgArea extends D3SvgPath { interpolate(interpolator: string): D3SvgArea; >interpolate : (interpolator: string) => D3SvgArea -> : ^^^^^^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >interpolator : string > : ^^^^^^ tension(tension: number): D3SvgArea; >tension : (tension: number) => D3SvgArea -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >tension : number > : ^^^^^^ defined(defined: (data: any, index?: number) => boolean): D3SvgArea; >defined : (defined: (data: any, index?: number) => boolean) => D3SvgArea -> : ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >defined : (data: any, index?: number) => boolean -> : ^^^^^^^ ^^^^^^^^^^ ^^^^^ +> : ^ ^^ ^^ ^^^ ^^^^^ >data : any > : ^^^ >index : number @@ -143,11 +143,11 @@ area.interpolate('two')('one'); >area.interpolate('two') : D3SvgArea > : ^^^^^^^^^ >area.interpolate : (interpolator: string) => D3SvgArea -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >area : D3SvgArea > : ^^^^^^^^^ >interpolate : (interpolator: string) => D3SvgArea -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^ >'two' : "two" > : ^^^^^ >'one' : "one" diff --git a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types index 286f3ef4c1814..3afff099ecb81 100644 --- a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types +++ b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types @@ -7,7 +7,7 @@ class Base { foo(x: { a: number }): { a: number } { >foo : (x: { a: number; }) => { a: number; } -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: number; } > : ^^^^^ ^^^ >a : number @@ -27,7 +27,7 @@ class Derived extends Base { foo(x: { a: number; b: number }): { a: number; b: number } { >foo : (x: { a: number; b: number; }) => { a: number; b: number; } -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >x : { a: number; b: number; } > : ^^^^^ ^^^^^ ^^^ >a : number @@ -50,13 +50,13 @@ class Derived extends Base { >r : { a: number; } > : ^^^^^^^^^^^^^^ >super.foo({ a: 1 }) : { a: number; } -> : ^^^^^^^^^^^^^^ +> : >super.foo : (x: { a: number; }) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >foo : (x: { a: number; }) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ a: 1 } : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -68,13 +68,13 @@ class Derived extends Base { >r2 : { a: number; } > : ^^^^^^^^^^^^^^ >super.foo({ a: 1, b: 2 }) : { a: number; } -> : ^^^^^^^^^^^^^^ +> : >super.foo : (x: { a: number; }) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >super : Base > : ^^^^ >foo : (x: { a: number; }) => { a: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: 2 } : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -90,13 +90,13 @@ class Derived extends Base { >r3 : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >this.foo({ a: 1, b: 2 }) : { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >this.foo : (x: { a: number; b: number; }) => { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >foo : (x: { a: number; b: number; }) => { a: number; b: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: 2 } : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/derivedTypeCallingBaseImplWithOptionalParams.types b/tests/baselines/reference/derivedTypeCallingBaseImplWithOptionalParams.types index b852a75b3d3c1..34de8122f49aa 100644 --- a/tests/baselines/reference/derivedTypeCallingBaseImplWithOptionalParams.types +++ b/tests/baselines/reference/derivedTypeCallingBaseImplWithOptionalParams.types @@ -4,7 +4,7 @@ interface MyInterface { myMethod(...myList: any[]); >myMethod : (...myList: any[]) => any -> : ^^^^^^^^^^^^ ^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >myList : any[] > : ^^^^^ } @@ -14,7 +14,7 @@ class MyClass implements MyInterface { myMethod(myList: any[]) { // valid >myMethod : (myList: any[]) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >myList : any[] > : ^^^^^ } @@ -32,11 +32,11 @@ x.myMethod(); // should be valid, but MyClass has no implementation to handle it >x.myMethod() : any > : ^^^ >x.myMethod : (...myList: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ >x : MyInterface > : ^^^^^^^^^^^ >myMethod : (...myList: any[]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^ var y: MyClass = new MyClass(); >y : MyClass @@ -50,9 +50,9 @@ y.myMethod(); // error >y.myMethod() : void > : ^^^^ >y.myMethod : (myList: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >y : MyClass > : ^^^^^^^ >myMethod : (myList: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/derivedUninitializedPropertyDeclaration.types b/tests/baselines/reference/derivedUninitializedPropertyDeclaration.types index ed79a24b03372..72db3401c658b 100644 --- a/tests/baselines/reference/derivedUninitializedPropertyDeclaration.types +++ b/tests/baselines/reference/derivedUninitializedPropertyDeclaration.types @@ -264,11 +264,11 @@ class M extends L { >console.log(this.a) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >this.a : number > : ^^^^^^ >this : this diff --git a/tests/baselines/reference/destructureOfVariableSameAsShorthand.types b/tests/baselines/reference/destructureOfVariableSameAsShorthand.types index f87dfc9d8b118..5903c30fb35d7 100644 --- a/tests/baselines/reference/destructureOfVariableSameAsShorthand.types +++ b/tests/baselines/reference/destructureOfVariableSameAsShorthand.types @@ -21,15 +21,15 @@ async function main() { >get().then((response) => { // body is never const body = response.data; }) : Promise > : ^^^^^^^^^^^^^ >get().then : , TResult2 = never>(onfulfilled?: (value: AxiosResponse) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >get() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >get : >() => Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : , TResult2 = never>(onfulfilled?: (value: AxiosResponse) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(response) => { // body is never const body = response.data; } : (response: AxiosResponse) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >response : AxiosResponse > : ^^^^^^^^^^^^^^^^^^^^ @@ -49,15 +49,15 @@ async function main() { >get().then(({ data }) => { // data is never }) : Promise > : ^^^^^^^^^^^^^ >get().then : , TResult2 = never>(onfulfilled?: (value: AxiosResponse) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >get() : Promise> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >get : >() => Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >then : , TResult2 = never>(onfulfilled?: (value: AxiosResponse) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike) => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ data }) => { // data is never } : ({ data }: AxiosResponse) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >data : never > : ^^^^^ diff --git a/tests/baselines/reference/destructureOptionalParameter.types b/tests/baselines/reference/destructureOptionalParameter.types index e92b150a5d494..25eb04eca4456 100644 --- a/tests/baselines/reference/destructureOptionalParameter.types +++ b/tests/baselines/reference/destructureOptionalParameter.types @@ -3,7 +3,7 @@ === destructureOptionalParameter.ts === declare function f1({ a, b }?: { a: number, b: string }): void; >f1 : ({ a, b }?: { a: number; b: string; }) => void -> : ^^^^^^^^^^^^ ^^^^^ +> : ^ ^^^ ^^^^^ >a : number > : ^^^^^^ >b : string @@ -15,7 +15,7 @@ declare function f1({ a, b }?: { a: number, b: string }): void; function f2({ a, b }: { a: number, b: number } = { a: 0, b: 0 }) { >f2 : ({ a, b }?: { a: number; b: number; }) => void -> : ^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/destructuredDeclarationEmit.types b/tests/baselines/reference/destructuredDeclarationEmit.types index 2aaaa7e10bf34..2f0d2f8a58990 100644 --- a/tests/baselines/reference/destructuredDeclarationEmit.types +++ b/tests/baselines/reference/destructuredDeclarationEmit.types @@ -32,7 +32,7 @@ const foo = { bar: 'hello', bat: 'world', bam: { bork: { bar: 'a', baz: 'b' } } > : ^^^ const arr: [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]] = [0, 1, 2, ['a', 'b', 'c', [{def: 'def'}, {sec: 'sec'}]]]; ->arr : [0, 1, 2, ["a", "b", "c", [{ def: 'def'; }, { sec: 'sec'; }]]] +>arr : [0, 1, 2, ["a", "b", "c", [{ def: "def"; }, { sec: "sec"; }]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^ >def : "def" > : ^^^^^ @@ -148,7 +148,7 @@ const getFoo = () => ({ >getFoo : () => { foo: string; } > : ^^^^^^^^^^^^^^^^^^^^^^ >() => ({ foo: 'foo'}) : () => { foo: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : >({ foo: 'foo'}) : { foo: string; } > : ^^^^^^^^^^^^^^^^ >{ foo: 'foo'} : { foo: string; } diff --git a/tests/baselines/reference/destructuredMaappedTypeIsNotImplicitlyAny.types b/tests/baselines/reference/destructuredMaappedTypeIsNotImplicitlyAny.types index f6af4d60eed55..1e28e65a38194 100644 --- a/tests/baselines/reference/destructuredMaappedTypeIsNotImplicitlyAny.types +++ b/tests/baselines/reference/destructuredMaappedTypeIsNotImplicitlyAny.types @@ -3,7 +3,7 @@ === destructuredMaappedTypeIsNotImplicitlyAny.ts === function foo(key: T, obj: { [_ in T]: number }) { >foo : (key: T, obj: { [_ in T]: number; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >key : T > : ^ >obj : { [_ in T]: number; } @@ -26,7 +26,7 @@ function foo(key: T, obj: { [_ in T]: number }) { >lorem : { [_ in T]: number; }[T] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >obj[key] : { [_ in T]: number; }[T] -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ >obj : { [_ in T]: number; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : T diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types index 0ee52d6e88b23..4e5e701af67a3 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment2.types @@ -120,7 +120,7 @@ interface F { function foo(idx: number): F { >foo : (idx: number) => F -> : ^^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >idx : number > : ^^^^^^ @@ -145,7 +145,7 @@ var [c4, c5, c6] = foo(1); // Error >foo(1) : F > : ^ >foo : (idx: number) => F -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types index 60486b16703b5..20866fba043b6 100644 --- a/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types +++ b/tests/baselines/reference/destructuringArrayBindingPatternAndAssignment3.types @@ -53,9 +53,9 @@ const [f, g = f, h = i, i = f] = [1]; // error for h = i >(function ([a, b = a]) { // ok})([1]) : void > : ^^^^ >(function ([a, b = a]) { // ok}) : ([a, b]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >function ([a, b = a]) { // ok} : ([a, b]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -73,9 +73,9 @@ const [f, g = f, h = i, i = f] = [1]; // error for h = i >(function ([c, d = c, e = e]) { // error for e = e})([1]) : void > : ^^^^ >(function ([c, d = c, e = e]) { // error for e = e}) : ([c, d, e]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >function ([c, d = c, e = e]) { // error for e = e} : ([c, d, e]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >c : number > : ^^^^^^ >d : number @@ -97,9 +97,9 @@ const [f, g = f, h = i, i = f] = [1]; // error for h = i >(function ([f, g = f, h = i, i = f]) { // error for h = i})([1]) : void > : ^^^^ >(function ([f, g = f, h = i, i = f]) { // error for h = i}) : ([f, g, h, i]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >function ([f, g = f, h = i, i = f]) { // error for h = i} : ([f, g, h, i]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^ >f : number > : ^^^^^^ >g : number diff --git a/tests/baselines/reference/destructuringAssignabilityCheck.types b/tests/baselines/reference/destructuringAssignabilityCheck.types index d287bb0737e49..68869e33dd5f8 100644 --- a/tests/baselines/reference/destructuringAssignabilityCheck.types +++ b/tests/baselines/reference/destructuringAssignabilityCheck.types @@ -13,9 +13,9 @@ const {} = undefined; // error correctly >(([]) => 0)({}) : number > : ^^^^^^ >(([]) => 0) : ([]: {}) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >([]) => 0 : ([]: {}) => number -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >0 : 0 > : ^ >{} : {} @@ -25,9 +25,9 @@ const {} = undefined; // error correctly >(({}) => 0)(undefined) : number > : ^^^^^^ >(({}) => 0) : ({}: undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >({}) => 0 : ({}: undefined) => number -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ >undefined : undefined @@ -35,7 +35,7 @@ const {} = undefined; // error correctly function foo({}: undefined) { >foo : ({}: undefined) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ return 0 >0 : 0 @@ -43,7 +43,7 @@ function foo({}: undefined) { } function bar([]: {}) { >bar : ([]: {}) => number -> : ^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ return 0 >0 : 0 diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault.types b/tests/baselines/reference/destructuringAssignmentWithDefault.types index 5fb145f328474..7efe6087b35e8 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault.types @@ -33,7 +33,7 @@ let x = 0; function f1(options?: { color?: string, width?: number }) { >f1 : (options?: { color?: string; width?: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >options : { color?: string; width?: number; } | undefined > : ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ >color : string | undefined @@ -106,7 +106,7 @@ function f1(options?: { color?: string, width?: number }) { function f2(options?: [string?, number?]) { >f2 : (options?: [string?, number?]) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >options : [(string | undefined)?, (number | undefined)?] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -157,7 +157,7 @@ function f2(options?: [string?, number?]) { function f3(options?: { color: string, width: number }) { >f3 : (options?: { color: string; width: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >options : { color: string; width: number; } | undefined > : ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^ >color : string @@ -230,7 +230,7 @@ function f3(options?: { color: string, width: number }) { function f4(options?: [string, number]) { >f4 : (options?: [string, number]) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >options : [string, number] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault2.types b/tests/baselines/reference/destructuringAssignmentWithDefault2.types index ce024b809cb4b..d4db43b1ccd92 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault2.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault2.types @@ -174,11 +174,11 @@ let value; >r.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >r : Iterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ done: done = false, value } = r.next()); >({ done: done = false, value } = r.next()) : IteratorResult @@ -200,9 +200,9 @@ let value; >r.next() : IteratorResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >r.next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >r : Iterator > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >next : (...args: [] | [undefined]) => IteratorResult -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/destructuringControlFlow.types b/tests/baselines/reference/destructuringControlFlow.types index 68f09293e8079..2923879953f5e 100644 --- a/tests/baselines/reference/destructuringControlFlow.types +++ b/tests/baselines/reference/destructuringControlFlow.types @@ -3,7 +3,7 @@ === destructuringControlFlow.ts === function f1(obj: { a?: string }) { >f1 : (obj: { a?: string; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : { a?: string; } > : ^^^^^^ ^^^ >a : string | undefined @@ -49,7 +49,7 @@ function f1(obj: { a?: string }) { function f2(obj: [number, string] | null[]) { >f2 : (obj: [number, string] | null[]) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : [number, string] | null[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -157,7 +157,7 @@ function f2(obj: [number, string] | null[]) { function f3(obj: { a?: number, b?: string }) { >f3 : (obj: { a?: number; b?: string; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >obj : { a?: number; b?: string; } > : ^^^^^^ ^^^^^^ ^^^ >a : number | undefined diff --git a/tests/baselines/reference/destructuringControlFlowNoCrash.types b/tests/baselines/reference/destructuringControlFlowNoCrash.types index 62a65f1da948c..68258da6985f7 100644 --- a/tests/baselines/reference/destructuringControlFlowNoCrash.types +++ b/tests/baselines/reference/destructuringControlFlowNoCrash.types @@ -9,7 +9,7 @@ const { } = (inspectedElement: any) => 0; >(inspectedElement: any) => 0 : (inspectedElement: any) => number -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^^^ >inspectedElement : any > : ^^^ >0 : 0 @@ -33,7 +33,7 @@ const { } = (inspectedElement: any).props; >(inspectedElement: any) : (inspectedElement: any) => any -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +> : ^ ^^ ^^^^^^^^ >inspectedElement : any > : ^^^ > : any diff --git a/tests/baselines/reference/destructuringInFunctionType.types b/tests/baselines/reference/destructuringInFunctionType.types index 742acb7a3c954..2cbd5de57608d 100644 --- a/tests/baselines/reference/destructuringInFunctionType.types +++ b/tests/baselines/reference/destructuringInFunctionType.types @@ -87,9 +87,9 @@ type C1 = new ([{ a: [b, c] }]) => void; var v1 = ([a, b, c]) => "hello"; >v1 : ([a, b, c]: [any, any, any]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >([a, b, c]) => "hello" : ([a, b, c]: [any, any, any]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >a : any > : ^^^ >b : any @@ -101,7 +101,7 @@ var v1 = ([a, b, c]) => "hello"; var v2: ([a, b, c]) => string; >v2 : ([a, b, c]: [any, any, any]) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any diff --git a/tests/baselines/reference/destructuringInVariableDeclarations1.types b/tests/baselines/reference/destructuringInVariableDeclarations1.types index ed95ae473b258..a3025af3d037a 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations1.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations1.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations1.ts === export let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations2.types b/tests/baselines/reference/destructuringInVariableDeclarations2.types index 9fc0717cf18ec..37135e27f8cd1 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations2.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations2.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations2.ts === let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations3.types b/tests/baselines/reference/destructuringInVariableDeclarations3.types index d86ca3a5ae8d9..1a5fa6a9597dd 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations3.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations3.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations3.ts === export let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations4.types b/tests/baselines/reference/destructuringInVariableDeclarations4.types index 28c70f7d14d1c..a8a7029eae502 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations4.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations4.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations4.ts === let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations5.types b/tests/baselines/reference/destructuringInVariableDeclarations5.types index 7d7bf55e6833d..3d57574bc248a 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations5.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations5.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations5.ts === export let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations6.types b/tests/baselines/reference/destructuringInVariableDeclarations6.types index d7d663d7b6f0d..96dbd5a8217ee 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations6.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations6.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations6.ts === let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations7.types b/tests/baselines/reference/destructuringInVariableDeclarations7.types index 32a8175bbe1b7..dccbbec18cf3a 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations7.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations7.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations7.ts === export let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInVariableDeclarations8.types b/tests/baselines/reference/destructuringInVariableDeclarations8.types index dac185a0471db..f3babedf63f97 100644 --- a/tests/baselines/reference/destructuringInVariableDeclarations8.types +++ b/tests/baselines/reference/destructuringInVariableDeclarations8.types @@ -3,13 +3,13 @@ === destructuringInVariableDeclarations8.ts === let { toString } = 1; >toString : (radix?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ { let { toFixed } = 1; >toFixed : (fractionDigits?: number) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^^^ >1 : 1 > : ^ } diff --git a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types index 3a0efd428be49..878b23804749e 100644 --- a/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types +++ b/tests/baselines/reference/destructuringInitializerContextualTypeFromContext.types @@ -18,7 +18,7 @@ const Parent: SFC = ({ >Parent : SFC > : ^^^^^^^^^^ >({ children, name = "Artemis", ...props}) => Child({name, ...props}) : ({ children, name, ...props }: Props & { children?: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ children, >children : any @@ -49,7 +49,7 @@ const Child: SFC = ({ >Child : SFC > : ^^^^^^^^^^ >({ children, name = "Artemis", ...props}) => `name: ${name} props: ${JSON.stringify(props)}` : ({ children, name, ...props }: Props & { children?: any; }) => string -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ children, >children : any @@ -72,12 +72,12 @@ const Child: SFC = ({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >JSON.stringify(props) : string > : ^^^^^^ ->JSON.stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>JSON.stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >JSON : JSON > : ^^^^ ->stringify : { (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | number | undefined): string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>stringify : { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[] | null, space?: string | number): string; } +> : ^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^ >props : {} > : ^^ @@ -85,9 +85,9 @@ const Child: SFC = ({ declare function f(g: (as: string[]) => void): void >f : (g: (as: string[]) => void) => void -> : ^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >g : (as: string[]) => void -> : ^^^^^ ^^^^^ +> : ^ ^^ ^^^^^ >as : string[] > : ^^^^^^^^ @@ -95,9 +95,9 @@ f(([_1, _2 = undefined]) => undefined) >f(([_1, _2 = undefined]) => undefined) : void > : ^^^^ >f : (g: (as: string[]) => void) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >([_1, _2 = undefined]) => undefined : ([_1, _2]: string[]) => undefined -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >_1 : string > : ^^^^^^ >_2 : string | undefined diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=es5).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=es5).types index 808710ab4c585..5717c435382f3 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=es5).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=es5).types @@ -50,11 +50,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=esnext).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=esnext).types index 808710ab4c585..5717c435382f3 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=esnext).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment6(target=esnext).types @@ -50,11 +50,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=es5).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=es5).types index cb6ba7ca4f2e5..3a3e8665d99ff 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=es5).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=es5).types @@ -70,11 +70,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=esnext).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=esnext).types index cb6ba7ca4f2e5..3a3e8665d99ff 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=esnext).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment7(target=esnext).types @@ -70,11 +70,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=es5).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=es5).types index 02464b33fb2f6..8d167fd6a6f88 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=es5).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=es5).types @@ -72,11 +72,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=esnext).types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=esnext).types index 02464b33fb2f6..8d167fd6a6f88 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=esnext).types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment8(target=esnext).types @@ -72,11 +72,11 @@ console.log(aVal, bVal); >console.log(aVal, bVal) : void > : ^^^^ >console.log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >console : Console > : ^^^^^^^ >log : (...data: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >aVal : number > : ^^^^^^ >bVal : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES5.types b/tests/baselines/reference/destructuringParameterDeclaration1ES5.types index 20d456320660d..bf29ab287a437 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES5.types @@ -8,7 +8,7 @@ // If the declaration includes a type annotation, the parameter is of that type function a1([a, b, [[c]]]: [number, number, string[][]]) { } >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -18,7 +18,7 @@ function a1([a, b, [[c]]]: [number, number, string[][]]) { } function a2(o: { x: number, a: number }) { } >a2 : (o: { x: number; a: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : { x: number; a: number; } > : ^^^^^ ^^^^^ ^^^ >x : number @@ -28,7 +28,7 @@ function a2(o: { x: number, a: number }) { } function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; >a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >j : number > : ^^^^^^ >k : string @@ -62,7 +62,7 @@ function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boo function a4({x, a}: { x: number, a: number }) { } >a4 : ({ x, a }: { x: number; a: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >a : number @@ -76,7 +76,7 @@ a1([1, 2, [["world"]]]); >a1([1, 2, [["world"]]]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]]] : [number, number, string[][]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -94,7 +94,7 @@ a1([1, 2, [["world"]], 3]); >a1([1, 2, [["world"]], 3]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]], 3] : [number, number, string[][], number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -116,7 +116,7 @@ a1([1, 2, [["world"]], 3]); function b1(z = [undefined, null]) { }; >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >z : any[] > : ^^^^^ >[undefined, null] : null[] @@ -126,7 +126,7 @@ function b1(z = [undefined, null]) { }; function b2(z = null, o = { x: 0, y: undefined }) { } >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >o : { x: number; y: any; } @@ -144,7 +144,7 @@ function b2(z = null, o = { x: 0, y: undefined }) { } function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } >b3 : ({ z: { x, y: { j } } }?: { z: { x: string; y: { j: number; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : string @@ -175,7 +175,7 @@ function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } interface F1 { b5(z, y, [, a, b], {p, m: { q, r}}); >b5 : (z: any, y: any, [, a, b]: [any, any, any], { p, m: { q, r } }: { p: any; m: { q: any; r: any; }; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >y : any @@ -198,7 +198,7 @@ interface F1 { function b6([a, z, y] = [undefined, null, undefined]) { } >b6 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >z : any @@ -214,7 +214,7 @@ function b6([a, z, y] = [undefined, null, undefined]) { } function b7([[a], b, [[c, d]]] = [[undefined], undefined, [[undefined, undefined]]]) { } >b7 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -244,7 +244,7 @@ b1([1, 2, 3]); // z is widen to the type any[] >b1([1, 2, 3]) : void > : ^^^^ >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -258,7 +258,7 @@ b2("string", { x: 200, y: "string" }); >b2("string", { x: 200, y: "string" }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: "string" } : { x: number; y: string; } @@ -276,7 +276,7 @@ b2("string", { x: 200, y: true }); >b2("string", { x: 200, y: true }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: true } : { x: number; y: boolean; } @@ -294,7 +294,7 @@ b6(["string", 1, 2]); // Shouldn't be an error >b6(["string", 1, 2]) : void > : ^^^^ >b6 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["string", 1, 2] : [string, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" @@ -308,7 +308,7 @@ b7([["string"], 1, [[true, false]]]); // Shouldn't be an error >b7([["string"], 1, [[true, false]]]) : void > : ^^^^ >b7 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[["string"], 1, [[true, false]]] : [[string], number, [[boolean, boolean]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["string"] : [string] @@ -336,7 +336,7 @@ enum Foo { a } function c0({z: {x, y: {j}}}) { } >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : any @@ -348,7 +348,7 @@ function c0({z: {x, y: {j}}}) { } function c1({z} = { z: 10 }) { } >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >{ z: 10 } : { z: number; } @@ -360,7 +360,7 @@ function c1({z} = { z: 10 }) { } function c2({z = 10}) { } >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >10 : 10 @@ -368,7 +368,7 @@ function c2({z = 10}) { } function c3({b}: { b: number|string} = { b: "hello" }) { } >c3 : ({ b }?: { b: number | string; }) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -382,7 +382,7 @@ function c3({b}: { b: number|string} = { b: "hello" }) { } function c5([a, b, [[c]]]) { } >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -392,7 +392,7 @@ function c5([a, b, [[c]]]) { } function c6([a, b, [[c=1]]]) { } >c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -406,7 +406,7 @@ c0({z : { x: 1, y: { j: "world" } }}); // Implied type is { z: {x: any, y: >c0({z : { x: 1, y: { j: "world" } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: 1, y: { j: "world" } }} : { z: { x: number; y: { j: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: number; y: { j: string; }; } @@ -430,7 +430,7 @@ c0({z : { x: "string", y: { j: true } }}); // Implied type is { z: {x: any, y: >c0({z : { x: "string", y: { j: true } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: "string", y: { j: true } }} : { z: { x: string; y: { j: boolean; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: string; y: { j: boolean; }; } @@ -454,13 +454,13 @@ c1(); // Implied type is {z:number}? >c1() : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ c1({ z: 1 }) // Implied type is {z:number}? >c1({ z: 1 }) : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: 1 } : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -472,7 +472,7 @@ c2({}); // Implied type is {z?: number} >c2({}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -480,7 +480,7 @@ c2({z:1}); // Implied type is {z?: number} >c2({z:1}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z:1} : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -491,8 +491,8 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void > : ^^^^ ->c3 : ({ b }?: { b: string | number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c3 : ({ b }?: { b: number | string; }) => void +> : ^ ^^^ ^^^^^^^^^ >{ b: 1 } : { b: number; } > : ^^^^^^^^^^^^^^ >b : number @@ -504,7 +504,7 @@ c5([1, 2, [["string"]]]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]]]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]]] : [number, number, [[string]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -522,7 +522,7 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]], false, true]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -545,13 +545,13 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] function d0(x?) { } >d0 : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ function d0(x = 10) { } >d0 : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >10 : 10 @@ -560,7 +560,7 @@ function d0(x = 10) { } interface F2 { d3([a, b, c]?); >d3 : ([a, b, c]?: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -570,7 +570,7 @@ interface F2 { d4({x, y, z}?); >d4 : ({ x, y, z }?: { x: any; y: any; z: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -580,7 +580,7 @@ interface F2 { e0([a, b, c]); >e0 : ([a, b, c]: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -604,7 +604,7 @@ class C2 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -619,7 +619,7 @@ class C3 implements F2 { d3([a, b, c]) { } >d3 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -629,7 +629,7 @@ class C3 implements F2 { d4({x, y, z}) { } >d4 : ({ x, y, z }: { x: any; y: any; z: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -639,7 +639,7 @@ class C3 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -651,7 +651,7 @@ class C3 implements F2 { function d5({x, y} = { x: 1, y: 2 }) { } >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -671,7 +671,7 @@ d5(); // Parameter is optional as its declaration included an initializer >d5() : void > : ^^^^ >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Destructuring parameter declarations do not permit type annotations on the individual binding patterns, // as such annotations would conflict with the already established meaning of colons in object literals. @@ -679,7 +679,7 @@ d5(); // Parameter is optional as its declaration included an initializer function e1({x: number}) { } // x has type any NOT number >e1 : ({ x: number }: { x: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -687,7 +687,7 @@ function e1({x: number}) { } // x has type any NOT number function e2({x}: { x: number }) { } // x is type number >e2 : ({ x }: { x: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -695,7 +695,7 @@ function e2({x}: { x: number }) { } // x is type number function e3({x}: { x?: number }) { } // x is an optional with type number >e3 : ({ x }: { x?: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -703,7 +703,7 @@ function e3({x}: { x?: number }) { } // x is an optional with type number function e4({x: [number,string,any] }) { } // x has type [any, any, any] >e4 : ({ x: [number, string, any] }: { x: [any, any, any]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -715,7 +715,7 @@ function e4({x: [number,string,any] }) { } // x has type [any, any, any] function e5({x: [a, b, c]}: { x: [number, number, number] }) { } // x has type [any, any, any] >e5 : ({ x: [a, b, c] }: { x: [number, number, number]; }) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : any > : ^^^ >a : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types b/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types index 6b83fd0e5302d..b8dc9594ee088 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.types @@ -8,7 +8,7 @@ // If the declaration includes a type annotation, the parameter is of that type function a1([a, b, [[c]]]: [number, number, string[][]]) { } >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -18,7 +18,7 @@ function a1([a, b, [[c]]]: [number, number, string[][]]) { } function a2(o: { x: number, a: number }) { } >a2 : (o: { x: number; a: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : { x: number; a: number; } > : ^^^^^ ^^^^^ ^^^ >x : number @@ -28,7 +28,7 @@ function a2(o: { x: number, a: number }) { } function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; >a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >j : number > : ^^^^^^ >k : string @@ -62,7 +62,7 @@ function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boo function a4({x, a}: { x: number, a: number }) { } >a4 : ({ x, a }: { x: number; a: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >a : number @@ -76,7 +76,7 @@ a1([1, 2, [["world"]]]); >a1([1, 2, [["world"]]]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]]] : [number, number, string[][]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -94,7 +94,7 @@ a1([1, 2, [["world"]], 3]); >a1([1, 2, [["world"]], 3]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]], 3] : [number, number, string[][], number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -116,7 +116,7 @@ a1([1, 2, [["world"]], 3]); function b1(z = [undefined, null]) { }; >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >z : any[] > : ^^^^^ >[undefined, null] : null[] @@ -126,7 +126,7 @@ function b1(z = [undefined, null]) { }; function b2(z = null, o = { x: 0, y: undefined }) { } >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >o : { x: number; y: any; } @@ -144,7 +144,7 @@ function b2(z = null, o = { x: 0, y: undefined }) { } function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } >b3 : ({ z: { x, y: { j } } }?: { z: { x: string; y: { j: number; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : string @@ -175,7 +175,7 @@ function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } interface F1 { b5(z, y, [, a, b], {p, m: { q, r}}); >b5 : (z: any, y: any, [, a, b]: [any, any, any], { p, m: { q, r } }: { p: any; m: { q: any; r: any; }; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >y : any @@ -198,7 +198,7 @@ interface F1 { function b6([a, z, y] = [undefined, null, undefined]) { } >b6 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >z : any @@ -214,7 +214,7 @@ function b6([a, z, y] = [undefined, null, undefined]) { } function b7([[a], b, [[c, d]]] = [[undefined], undefined, [[undefined, undefined]]]) { } >b7 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -244,7 +244,7 @@ b1([1, 2, 3]); // z is widen to the type any[] >b1([1, 2, 3]) : void > : ^^^^ >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -258,7 +258,7 @@ b2("string", { x: 200, y: "string" }); >b2("string", { x: 200, y: "string" }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: "string" } : { x: number; y: string; } @@ -276,7 +276,7 @@ b2("string", { x: 200, y: true }); >b2("string", { x: 200, y: true }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: true } : { x: number; y: boolean; } @@ -294,7 +294,7 @@ b6(["string", 1, 2]); // Shouldn't be an error >b6(["string", 1, 2]) : void > : ^^^^ >b6 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["string", 1, 2] : [string, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" @@ -308,7 +308,7 @@ b7([["string"], 1, [[true, false]]]); // Shouldn't be an error >b7([["string"], 1, [[true, false]]]) : void > : ^^^^ >b7 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[["string"], 1, [[true, false]]] : [[string], number, [[boolean, boolean]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >["string"] : [string] @@ -336,7 +336,7 @@ enum Foo { a } function c0({z: {x, y: {j}}}) { } >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : any @@ -348,7 +348,7 @@ function c0({z: {x, y: {j}}}) { } function c1({z} = { z: 10 }) { } >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >{ z: 10 } : { z: number; } @@ -360,7 +360,7 @@ function c1({z} = { z: 10 }) { } function c2({z = 10}) { } >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >10 : 10 @@ -368,7 +368,7 @@ function c2({z = 10}) { } function c3({b}: { b: number|string} = { b: "hello" }) { } >c3 : ({ b }?: { b: number | string; }) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -382,7 +382,7 @@ function c3({b}: { b: number|string} = { b: "hello" }) { } function c5([a, b, [[c]]]) { } >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -392,7 +392,7 @@ function c5([a, b, [[c]]]) { } function c6([a, b, [[c=1]]]) { } >c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -406,7 +406,7 @@ c0({z : { x: 1, y: { j: "world" } }}); // Implied type is { z: {x: any, y: >c0({z : { x: 1, y: { j: "world" } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: 1, y: { j: "world" } }} : { z: { x: number; y: { j: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: number; y: { j: string; }; } @@ -430,7 +430,7 @@ c0({z : { x: "string", y: { j: true } }}); // Implied type is { z: {x: any, y: >c0({z : { x: "string", y: { j: true } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: "string", y: { j: true } }} : { z: { x: string; y: { j: boolean; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: string; y: { j: boolean; }; } @@ -454,13 +454,13 @@ c1(); // Implied type is {z:number}? >c1() : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ c1({ z: 1 }) // Implied type is {z:number}? >c1({ z: 1 }) : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: 1 } : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -472,7 +472,7 @@ c2({}); // Implied type is {z?: number} >c2({}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -480,7 +480,7 @@ c2({z:1}); // Implied type is {z?: number} >c2({z:1}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z:1} : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -491,8 +491,8 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void > : ^^^^ ->c3 : ({ b }?: { b: string | number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c3 : ({ b }?: { b: number | string; }) => void +> : ^ ^^^ ^^^^^^^^^ >{ b: 1 } : { b: number; } > : ^^^^^^^^^^^^^^ >b : number @@ -504,7 +504,7 @@ c5([1, 2, [["string"]]]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]]]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]]] : [number, number, [[string]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -522,7 +522,7 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]], false, true]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -545,13 +545,13 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] function d0(x?) { } >d0 : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ function d0(x = 10) { } >d0 : (x?: any) => void -> : ^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >10 : 10 @@ -560,7 +560,7 @@ function d0(x = 10) { } interface F2 { d3([a, b, c]?); >d3 : ([a, b, c]?: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -570,7 +570,7 @@ interface F2 { d4({x, y, z}?); >d4 : ({ x, y, z }?: { x: any; y: any; z: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -580,7 +580,7 @@ interface F2 { e0([a, b, c]); >e0 : ([a, b, c]: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -604,7 +604,7 @@ class C2 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -619,7 +619,7 @@ class C3 implements F2 { d3([a, b, c]) { } >d3 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -629,7 +629,7 @@ class C3 implements F2 { d4({x, y, z}) { } >d4 : ({ x, y, z }: { x: any; y: any; z: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -639,7 +639,7 @@ class C3 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -651,7 +651,7 @@ class C3 implements F2 { function d5({x, y} = { x: 1, y: 2 }) { } >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -671,7 +671,7 @@ d5(); // Parameter is optional as its declaration included an initializer >d5() : void > : ^^^^ >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Destructuring parameter declarations do not permit type annotations on the individual binding patterns, // as such annotations would conflict with the already established meaning of colons in object literals. @@ -679,7 +679,7 @@ d5(); // Parameter is optional as its declaration included an initializer function e1({x: number}) { } // x has type any NOT number >e1 : ({ x: number }: { x: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -687,7 +687,7 @@ function e1({x: number}) { } // x has type any NOT number function e2({x}: { x: number }) { } // x is type number >e2 : ({ x }: { x: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -695,7 +695,7 @@ function e2({x}: { x: number }) { } // x is type number function e3({x}: { x?: number }) { } // x is an optional with type number >e3 : ({ x }: { x?: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -703,7 +703,7 @@ function e3({x}: { x?: number }) { } // x is an optional with type number function e4({x: [number,string,any] }) { } // x has type [any, any, any] >e4 : ({ x: [number, string, any] }: { x: [any, any, any]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -715,7 +715,7 @@ function e4({x: [number,string,any] }) { } // x has type [any, any, any] function e5({x: [a, b, c]}: { x: [number, number, number] }) { } // x has type [any, any, any] >e5 : ({ x: [a, b, c] }: { x: [number, number, number]; }) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : any > : ^^^ >a : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration1ES6.types b/tests/baselines/reference/destructuringParameterDeclaration1ES6.types index c1cc47b9c8386..8bc4d49e6cf95 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration1ES6.types +++ b/tests/baselines/reference/destructuringParameterDeclaration1ES6.types @@ -10,7 +10,7 @@ // If the declaration includes a type annotation, the parameter is of that type function a1([a, b, [[c]]]: [number, number, string[][]]) { } >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -20,7 +20,7 @@ function a1([a, b, [[c]]]: [number, number, string[][]]) { } function a2(o: { x: number, a: number }) { } >a2 : (o: { x: number; a: number; }) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >o : { x: number; a: number; } > : ^^^^^ ^^^^^ ^^^ >x : number @@ -30,7 +30,7 @@ function a2(o: { x: number, a: number }) { } function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boolean, n: number }, q: (number|string)[] }) { }; >a3 : ({ j, k, l: { m, n }, q: [a, b, c] }: { j: number; k: string; l: { m: boolean; n: number; }; q: (number | string)[]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >j : number > : ^^^^^^ >k : string @@ -64,7 +64,7 @@ function a3({j, k, l: {m, n}, q: [a, b, c]}: { j: number, k: string, l: { m: boo function a4({x, a}: { x: number, a: number }) { } >a4 : ({ x, a }: { x: number; a: number; }) => void -> : ^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >a : number @@ -78,7 +78,7 @@ a1([1, 2, [["world"]]]); >a1([1, 2, [["world"]]]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]]] : [number, number, string[][]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -96,7 +96,7 @@ a1([1, 2, [["world"]], 3]); >a1([1, 2, [["world"]], 3]) : void > : ^^^^ >a1 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]], 3] : [number, number, string[][], number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -119,7 +119,7 @@ a1([1, 2, [["world"]], 3]); function b1(z = [undefined, null]) { }; >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >z : any[] > : ^^^^^ >[undefined, null] : null[] @@ -129,7 +129,7 @@ function b1(z = [undefined, null]) { }; function b2(z = null, o = { x: 0, y: undefined }) { } >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >o : { x: number; y: any; } @@ -147,7 +147,7 @@ function b2(z = null, o = { x: 0, y: undefined }) { } function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } >b3 : ({ z: { x, y: { j } } }?: { z: { x: string; y: { j: number; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : string @@ -178,7 +178,7 @@ function b3({z: {x, y: {j}}} = { z: { x: "hi", y: { j: 1 } } }) { } interface F1 { b5(z, y, [, a, b], {p, m: { q, r}}); >b5 : (z: any, y: any, [, a, b]: [any, any, any], { p, m: { q, r } }: { p: any; m: { q: any; r: any; }; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >y : any @@ -201,7 +201,7 @@ interface F1 { function b6([a, z, y] = [undefined, null, undefined]) { } >b6 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >z : any @@ -217,7 +217,7 @@ function b6([a, z, y] = [undefined, null, undefined]) { } function b7([[a], b, [[c, d]]] = [[undefined], undefined, [[undefined, undefined]]]) { } >b7 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -247,7 +247,7 @@ b1([1, 2, 3]); // z is widen to the type any[] >b1([1, 2, 3]) : void > : ^^^^ >b1 : (z?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -261,7 +261,7 @@ b2("string", { x: 200, y: "string" }); >b2("string", { x: 200, y: "string" }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: "string" } : { x: number; y: string; } @@ -279,7 +279,7 @@ b2("string", { x: 200, y: true }); >b2("string", { x: 200, y: true }) : void > : ^^^^ >b2 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: 200, y: true } : { x: number; y: boolean; } @@ -303,7 +303,7 @@ enum Foo { a } function c0({z: {x, y: {j}}}) { } >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : any @@ -315,7 +315,7 @@ function c0({z: {x, y: {j}}}) { } function c1({z} = { z: 10 }) { } >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >{ z: 10 } : { z: number; } @@ -327,7 +327,7 @@ function c1({z} = { z: 10 }) { } function c2({z = 10}) { } >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >10 : 10 @@ -335,7 +335,7 @@ function c2({z = 10}) { } function c3({b}: { b: number|string} = { b: "hello" }) { } >c3 : ({ b }?: { b: number | string; }) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -349,7 +349,7 @@ function c3({b}: { b: number|string} = { b: "hello" }) { } function c5([a, b, [[c]]]) { } >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -359,7 +359,7 @@ function c5([a, b, [[c]]]) { } function c6([a, b, [[c=1]]]) { } >c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -373,7 +373,7 @@ c0({z : { x: 1, y: { j: "world" } }}); // Implied type is { z: {x: any, y: >c0({z : { x: 1, y: { j: "world" } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: 1, y: { j: "world" } }} : { z: { x: number; y: { j: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: number; y: { j: string; }; } @@ -397,7 +397,7 @@ c0({z : { x: "string", y: { j: true } }}); // Implied type is { z: {x: any, y: >c0({z : { x: "string", y: { j: true } }}) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z : { x: "string", y: { j: true } }} : { z: { x: string; y: { j: boolean; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { x: string; y: { j: boolean; }; } @@ -421,13 +421,13 @@ c1(); // Implied type is {z:number}? >c1() : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ c1({ z: 1 }) // Implied type is {z:number}? >c1({ z: 1 }) : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: 1 } : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -439,7 +439,7 @@ c2({}); // Implied type is {z?: number} >c2({}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -447,7 +447,7 @@ c2({z:1}); // Implied type is {z?: number} >c2({z:1}) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{z:1} : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -458,8 +458,8 @@ c2({z:1}); // Implied type is {z?: number} c3({ b: 1 }); // Implied type is { b: number|string }. >c3({ b: 1 }) : void > : ^^^^ ->c3 : ({ b }?: { b: string | number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c3 : ({ b }?: { b: number | string; }) => void +> : ^ ^^^ ^^^^^^^^^ >{ b: 1 } : { b: number; } > : ^^^^^^^^^^^^^^ >b : number @@ -471,7 +471,7 @@ c5([1, 2, [["string"]]]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]]]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]]] : [number, number, [[string]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -489,7 +489,7 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] >c5([1, 2, [["string"]], false, true]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -514,7 +514,7 @@ c5([1, 2, [["string"]], false, true]); // Implied type is is [any, any, [[any]] interface F2 { d3([a, b, c]?); >d3 : ([a, b, c]?: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -524,7 +524,7 @@ interface F2 { d4({x, y, z}?); >d4 : ({ x, y, z }?: { x: any; y: any; z: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -534,7 +534,7 @@ interface F2 { e0([a, b, c]); >e0 : ([a, b, c]: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -558,7 +558,7 @@ class C2 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -573,7 +573,7 @@ class C3 implements F2 { d3([a, b, c]) { } >d3 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -583,7 +583,7 @@ class C3 implements F2 { d4({x, y, z}) { } >d4 : ({ x, y, z }: { x: any; y: any; z: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -593,7 +593,7 @@ class C3 implements F2 { e0([a, b, c]) { } >e0 : ([a, b, c]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -604,7 +604,7 @@ class C3 implements F2 { function d5({x, y} = { x: 1, y: 2 }) { } >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -624,7 +624,7 @@ d5(); // Parameter is optional as its declaration included an initializer >d5() : void > : ^^^^ >d5 : ({ x, y }?: { x: number; y: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Destructuring parameter declarations do not permit type annotations on the individual binding patterns, // as such annotations would conflict with the already established meaning of colons in object literals. @@ -632,7 +632,7 @@ d5(); // Parameter is optional as its declaration included an initializer function e1({x: number}) { } // x has type any NOT number >e1 : ({ x: number }: { x: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -640,7 +640,7 @@ function e1({x: number}) { } // x has type any NOT number function e2({x}: { x: number }) { } // x is type number >e2 : ({ x }: { x: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -648,7 +648,7 @@ function e2({x}: { x: number }) { } // x is type number function e3({x}: { x?: number }) { } // x is an optional with type number >e3 : ({ x }: { x?: number; }) => void -> : ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : number > : ^^^^^^ >x : number @@ -656,7 +656,7 @@ function e3({x}: { x?: number }) { } // x is an optional with type number function e4({x: [number,string,any] }) { } // x has type [any, any, any] >e4 : ({ x: [number, string, any] }: { x: [any, any, any]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any @@ -668,7 +668,7 @@ function e4({x: [number,string,any] }) { } // x has type [any, any, any] function e5({x: [a, b, c]}: { x: [number, number, number] }) { } // x has type [any, any, any] >e5 : ({ x: [a, b, c] }: { x: [number, number, number]; }) => void -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >x : any > : ^^^ >a : number @@ -682,7 +682,7 @@ function e5({x: [a, b, c]}: { x: [number, number, number] }) { } // x has type function e6({x: [number, number, number]}) { } // error, duplicate identifier; >e6 : ({ x: [number, number, number] }: { x: [any, any, any]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.types b/tests/baselines/reference/destructuringParameterDeclaration2.types index 1aa3ff34f465b..8c69c1f57e028 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.types +++ b/tests/baselines/reference/destructuringParameterDeclaration2.types @@ -8,7 +8,7 @@ // If the declaration includes a type annotation, the parameter is of that type function a0([a, b, [[c]]]: [number, number, string[][]]) { } >a0 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -20,7 +20,7 @@ a0([1, "string", [["world"]]); // Error >a0([1, "string", [["world"]]) : void > : ^^^^ >a0 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, "string", [["world"]] : [number, string, string[][]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -38,7 +38,7 @@ a0([1, 2, [["world"]], "string"]); // Error >a0([1, 2, [["world"]], "string"]) : void > : ^^^^ >a0 : ([a, b, [[c]]]: [number, number, string[][]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, [["world"]], "string"] : [number, number, string[][], string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -62,7 +62,7 @@ a0([1, 2, [["world"]], "string"]); // Error interface F1 { b0(z = 10, [[a, b], d, {u}] = [[1, 2], "string", { u: false }]); // Error, no function body >b0 : (z?: number, [[a, b], d, { u }]?: [[number, number], string, { u: boolean; }]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >10 : 10 @@ -95,7 +95,7 @@ interface F1 { function b1(z = null, o = { x: 0, y: undefined }) { } >b1 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >o : { x: number; y: any; } @@ -113,7 +113,7 @@ function b1(z = null, o = { x: 0, y: undefined }) { } function b2([a, z, y] = [undefined, null, undefined]) { } >b2 : ([a, z, y]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >z : any @@ -129,7 +129,7 @@ function b2([a, z, y] = [undefined, null, undefined]) { } function b3([[a], b, [[c, d]]] = [[undefined], undefined, [[undefined, undefined]]]) { } >b3 : ([[a], b, [[c, d]]]?: [[any], any, [[any, any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -159,7 +159,7 @@ b1("string", { x: "string", y: true }); // Error >b1("string", { x: "string", y: true }) : void > : ^^^^ >b1 : (z?: any, o?: { x: number; y: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"string" : "string" > : ^^^^^^^^ >{ x: "string", y: true } : { x: string; y: boolean; } @@ -176,7 +176,7 @@ b1("string", { x: "string", y: true }); // Error // If the declaration specifies a binding pattern, the parameter type is the implied type of that binding pattern (section 5.1.3) function c0({z: {x, y: {j}}}) { } >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : any > : ^^^ >x : any @@ -188,7 +188,7 @@ function c0({z: {x, y: {j}}}) { } function c1({z} = { z: 10 }) { } >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >{ z: 10 } : { z: number; } @@ -200,7 +200,7 @@ function c1({z} = { z: 10 }) { } function c2({z = 10}) { } >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : number > : ^^^^^^ >10 : 10 @@ -208,7 +208,7 @@ function c2({z = 10}) { } function c3({b}: { b: number|string } = { b: "hello" }) { } >c3 : ({ b }?: { b: number | string; }) => void -> : ^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^ ^^^^^^^^^ >b : string | number > : ^^^^^^^^^^^^^^^ >b : string | number @@ -222,7 +222,7 @@ function c3({b}: { b: number|string } = { b: "hello" }) { } function c4([z], z: number) { } // Error Duplicate identifier >c4 : ([z]: [any], z: number) => void -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >z : any > : ^^^ >z : number @@ -230,7 +230,7 @@ function c4([z], z: number) { } // Error Duplicate identifier function c5([a, b, [[c]]]) { } >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -240,7 +240,7 @@ function c5([a, b, [[c]]]) { } function c6([a, b, [[c = 1]]]) { } >c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -254,7 +254,7 @@ c0({ z: 1 }); // Error, implied type is { z: {x: any, y: {j: any}} } >c0({ z: 1 }) : void > : ^^^^ >c0 : ({ z: { x, y: { j } } }: { z: { x: any; y: { j: any; }; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: 1 } : { z: number; } > : ^^^^^^^^^^^^^^ >z : number @@ -266,7 +266,7 @@ c1({}); // Error, implied type is {z:number}? >c1({}) : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -274,7 +274,7 @@ c1({ z: true }); // Error, implied type is {z:number}? >c1({ z: true }) : void > : ^^^^ >c1 : ({ z }?: { z: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: true } : { z: boolean; } > : ^^^^^^^^^^^^^^^ >z : boolean @@ -286,7 +286,7 @@ c2({ z: false }); // Error, implied type is {z?: number} >c2({ z: false }) : void > : ^^^^ >c2 : ({ z }: { z?: number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ z: false } : { z: boolean; } > : ^^^^^^^^^^^^^^^ >z : boolean @@ -297,8 +297,8 @@ c2({ z: false }); // Error, implied type is {z?: number} c3({ b: true }); // Error, implied type is { b: number|string }. >c3({ b: true }) : void > : ^^^^ ->c3 : ({ b }?: { b: string | number; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>c3 : ({ b }?: { b: number | string; }) => void +> : ^ ^^^ ^^^^^^^^^ >{ b: true } : { b: boolean; } > : ^^^^^^^^^^^^^^^ >b : boolean @@ -310,7 +310,7 @@ c5([1, 2, false, true]); // Error, implied type is [any, any, [[any]]] >c5([1, 2, false, true]) : void > : ^^^^ >c5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, false, true] : [number, number, boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -326,7 +326,7 @@ c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // >c6([1, 2, [["string"]]]) : void > : ^^^^ >c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]]] : [number, number, [[string]]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -346,7 +346,7 @@ c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // function d1([a, b, c]?) { } // Error, binding pattern can't be optional in implementation signature >d1 : ([a, b, c]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -356,7 +356,7 @@ function d1([a, b, c]?) { } // Error, binding pattern can't be optional in impl function d2({x, y, z}?) { } // Error, binding pattern can't be optional in implementation signature >d2 : ({ x, y, z }?: { x: any; y: any; z: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -367,7 +367,7 @@ function d2({x, y, z}?) { } // Error, binding pattern can't be optional in impl interface F2 { d3([a, b, c]?); >d3 : ([a, b, c]?: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -377,7 +377,7 @@ interface F2 { d4({x, y, z}?); >d4 : ({ x, y, z }?: { x: any; y: any; z: any; }) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -387,7 +387,7 @@ interface F2 { e0([a, b, c]); >e0 : ([a, b, c]: [any, any, any]) => any -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -402,7 +402,7 @@ class C4 implements F2 { d3([a, b, c]?) { } // Error, binding pattern can't be optional in implementation signature >d3 : ([a, b, c]?: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -412,7 +412,7 @@ class C4 implements F2 { d4({x, y, c}) { } >d4 : ({ x, y, c }: { x: any; y: any; c: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >y : any @@ -422,7 +422,7 @@ class C4 implements F2 { e0([a, b, q]) { } >e0 : ([a, b, q]: [any, any, any]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -437,7 +437,7 @@ class C4 implements F2 { function e0({x: [number, number, number]}) { } // error, duplicate identifier; >e0 : ({ x: [number, number, number] }: { x: [any, any, any]; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any > : ^^^ >number : any diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5.types b/tests/baselines/reference/destructuringParameterDeclaration3ES5.types index c71d2ef7f75dc..afeb4d1df096c 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5.types @@ -21,37 +21,37 @@ type stringOrNumArray = Array; function a1(...x: (number|string)[]) { } >a1 : (...x: (number | string)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ function a2(...a) { } >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ function a3(...a: Array) { } >a3 : (...a: Array) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : String[] > : ^^^^^^^^ function a4(...a: arrayString) { } >a4 : (...a: arrayString) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : arrayString > : ^^^^^^^^^^^ function a5(...a: stringOrNumArray) { } >a5 : (...a: stringOrNumArray) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : stringOrNumArray > : ^^^^^^^^^^^^^^^^ function a9([a, b, [[c]]]) { } >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -61,7 +61,7 @@ function a9([a, b, [[c]]]) { } function a10([a, b, [[c]], ...x]) { } >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -73,7 +73,7 @@ function a10([a, b, [[c]], ...x]) { } function a11([a, b, c, ...x]: number[]) { } >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -112,7 +112,7 @@ a2([...array]); >a2([...array]) : void > : ^^^^ >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >[...array] : number[] > : ^^^^^^^^ >...array : number @@ -123,8 +123,8 @@ a2([...array]); a1(...array); >a1(...array) : void > : ^^^^ ->a1 : (...x: (string | number)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a1 : (...x: (number | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...array : number > : ^^^^^^ >array : number[] @@ -134,7 +134,7 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] >a9([1, 2, [["string"]], false, true]) : void > : ^^^^ >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -156,7 +156,7 @@ a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -178,7 +178,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, false, true] : [number, number, number, boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -196,7 +196,7 @@ a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -208,7 +208,7 @@ a11([1, 2]); // Parameter type is number[] >a11([1, 2]) : void > : ^^^^ >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -219,7 +219,7 @@ a11([1, 2]); // Parameter type is number[] // Rest parameter with generic function foo(...a: T[]) { } >foo : (...a: T[]) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -227,7 +227,7 @@ foo("hello", 1, 2); >foo("hello", 1, 2) : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >1 : 1 @@ -239,7 +239,7 @@ foo("hello", "world"); >foo("hello", "world") : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >"world" : "world" @@ -263,7 +263,7 @@ const enum E1 { a, b } function foo1(...a: T[]) { } >foo1 : (...a: T[]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -271,7 +271,7 @@ foo1(1, 2, 3, E.a); >foo1(1, 2, 3, E.a) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -289,7 +289,7 @@ foo1(1, 2, 3, E1.a, E.b); >foo1(1, 2, 3, E1.a, E.b) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types index af12cc9755a4f..14bd4b4adfe48 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES5iterable.types @@ -21,37 +21,37 @@ type stringOrNumArray = Array; function a1(...x: (number|string)[]) { } >a1 : (...x: (number | string)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ function a2(...a) { } >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ function a3(...a: Array) { } >a3 : (...a: Array) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : String[] > : ^^^^^^^^ function a4(...a: arrayString) { } >a4 : (...a: arrayString) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : arrayString > : ^^^^^^^^^^^ function a5(...a: stringOrNumArray) { } >a5 : (...a: stringOrNumArray) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : stringOrNumArray > : ^^^^^^^^^^^^^^^^ function a9([a, b, [[c]]]) { } >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -61,7 +61,7 @@ function a9([a, b, [[c]]]) { } function a10([a, b, [[c]], ...x]) { } >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -73,7 +73,7 @@ function a10([a, b, [[c]], ...x]) { } function a11([a, b, c, ...x]: number[]) { } >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -112,7 +112,7 @@ a2([...array]); >a2([...array]) : void > : ^^^^ >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >[...array] : number[] > : ^^^^^^^^ >...array : number @@ -123,8 +123,8 @@ a2([...array]); a1(...array); >a1(...array) : void > : ^^^^ ->a1 : (...x: (string | number)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a1 : (...x: (number | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...array : number > : ^^^^^^ >array : number[] @@ -134,7 +134,7 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] >a9([1, 2, [["string"]], false, true]) : void > : ^^^^ >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -156,7 +156,7 @@ a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -178,7 +178,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, false, true] : [number, number, number, boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -196,7 +196,7 @@ a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -208,7 +208,7 @@ a11([1, 2]); // Parameter type is number[] >a11([1, 2]) : void > : ^^^^ >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -219,7 +219,7 @@ a11([1, 2]); // Parameter type is number[] // Rest parameter with generic function foo(...a: T[]) { } >foo : (...a: T[]) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -227,7 +227,7 @@ foo("hello", 1, 2); >foo("hello", 1, 2) : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >1 : 1 @@ -239,7 +239,7 @@ foo("hello", "world"); >foo("hello", "world") : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >"world" : "world" @@ -263,7 +263,7 @@ const enum E1 { a, b } function foo1(...a: T[]) { } >foo1 : (...a: T[]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -271,7 +271,7 @@ foo1(1, 2, 3, E.a); >foo1(1, 2, 3, E.a) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -289,7 +289,7 @@ foo1(1, 2, 3, E1.a, E.b); >foo1(1, 2, 3, E1.a, E.b) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration3ES6.types b/tests/baselines/reference/destructuringParameterDeclaration3ES6.types index a9d35daf14f40..253888d4eb137 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration3ES6.types +++ b/tests/baselines/reference/destructuringParameterDeclaration3ES6.types @@ -21,37 +21,37 @@ type stringOrNumArray = Array; function a1(...x: (number|string)[]) { } >a1 : (...x: (number | string)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ function a2(...a) { } >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >a : any[] > : ^^^^^ function a3(...a: Array) { } >a3 : (...a: Array) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : String[] > : ^^^^^^^^ function a4(...a: arrayString) { } >a4 : (...a: arrayString) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : arrayString > : ^^^^^^^^^^^ function a5(...a: stringOrNumArray) { } >a5 : (...a: stringOrNumArray) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : stringOrNumArray > : ^^^^^^^^^^^^^^^^ function a9([a, b, [[c]]]) { } >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -61,7 +61,7 @@ function a9([a, b, [[c]]]) { } function a10([a, b, [[c]], ...x]) { } >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -73,7 +73,7 @@ function a10([a, b, [[c]], ...x]) { } function a11([a, b, c, ...x]: number[]) { } >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -112,7 +112,7 @@ a2([...array]); >a2([...array]) : void > : ^^^^ >a2 : (...a: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >[...array] : number[] > : ^^^^^^^^ >...array : number @@ -123,8 +123,8 @@ a2([...array]); a1(...array); >a1(...array) : void > : ^^^^ ->a1 : (...x: (string | number)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a1 : (...x: (number | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...array : number > : ^^^^^^ >array : number[] @@ -134,7 +134,7 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]] >a9([1, 2, [["string"]], false, true]) : void > : ^^^^ >a9 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -156,7 +156,7 @@ a10([1, 2, [["string"]], false, true]); // Parameter type is any[] >a10([1, 2, [["string"]], false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -178,7 +178,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[] >a10([1, 2, 3, false, true]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, false, true] : [number, number, number, boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -196,7 +196,7 @@ a10([1, 2]); // Parameter type is any[] >a10([1, 2]) : void > : ^^^^ >a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -208,7 +208,7 @@ a11([1, 2]); // Parameter type is number[] >a11([1, 2]) : void > : ^^^^ >a11 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 @@ -219,7 +219,7 @@ a11([1, 2]); // Parameter type is number[] // Rest parameter with generic function foo(...a: T[]) { } >foo : (...a: T[]) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -227,7 +227,7 @@ foo("hello", 1, 2); >foo("hello", 1, 2) : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >1 : 1 @@ -239,7 +239,7 @@ foo("hello", "world"); >foo("hello", "world") : void > : ^^^^ >foo : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^ ^^ ^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ >"world" : "world" @@ -263,7 +263,7 @@ const enum E1 { a, b } function foo1(...a: T[]) { } >foo1 : (...a: T[]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -271,7 +271,7 @@ foo1(1, 2, 3, E.a); >foo1(1, 2, 3, E.a) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -289,7 +289,7 @@ foo1(1, 2, 3, E1.a, E.b); >foo1(1, 2, 3, E1.a, E.b) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration4.types b/tests/baselines/reference/destructuringParameterDeclaration4.types index 2609ccfc5263c..a48a088d96759 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration4.types +++ b/tests/baselines/reference/destructuringParameterDeclaration4.types @@ -27,25 +27,25 @@ function a0(...x: [number, number, string]) { } // Error, rest parameter must b function a1(...x: (number|string)[]) { } >a1 : (...x: (number | string)[]) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >x : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ function a2(...a: someArray) { } // Error, rest parameter must be array type >a2 : (...a: someArray) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : someArray > : ^^^^^^^^^ function a3(...b?) { } // Error, can't be optional >a3 : (...b?: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^ >b : any[] > : ^^^^^ function a4(...b = [1,2,3]) { } // Error, can't have initializer >a4 : (...b?: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^ >b : number[] > : ^^^^^^^^ >[1,2,3] : number[] @@ -59,7 +59,7 @@ function a4(...b = [1,2,3]) { } // Error, can't have initializer function a5([a, b, [[c]]]) { } >a5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : any > : ^^^ >b : any @@ -69,7 +69,7 @@ function a5([a, b, [[c]]]) { } function a6([a, b, c, ...x]: number[]) { } >a6 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number @@ -83,8 +83,8 @@ function a6([a, b, c, ...x]: number[]) { } a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] >a1(1, 2, "hello", true) : void > : ^^^^ ->a1 : (...x: (string | number)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a1 : (...x: (number | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 @@ -97,8 +97,8 @@ a1(1, 2, "hello", true); // Error, parameter type is (number|string)[] a1(...array2); // Error parameter type is (number|string)[] >a1(...array2) : void > : ^^^^ ->a1 : (...x: (string | number)[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a1 : (...x: (number | string)[]) => void +> : ^^^^ ^^ ^^^^^^^^^ >...array2 : any > : ^^^ >array2 : any @@ -108,7 +108,7 @@ a5([1, 2, "string", false, true]); // Error, parameter type is [any, any, >a5([1, 2, "string", false, true]) : void > : ^^^^ >a5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, "string", false, true] : [number, number, string, boolean, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -126,7 +126,7 @@ a5([1, 2]); // Error, parameter type is [any, any, >a5([1, 2]) : void > : ^^^^ >a5 : ([a, b, [[c]]]: [any, any, [[any]]]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2] : [number, number] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -138,7 +138,7 @@ a6([1, 2, "string"]); // Error, parameter type is number[] >a6([1, 2, "string"]) : void > : ^^^^ >a6 : ([a, b, c, ...x]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >[1, 2, "string"] : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -173,7 +173,7 @@ class C { // Rest parameter with generic function foo1(...a: T[]) { } >foo1 : (...a: T[]) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T[] > : ^^^ @@ -181,7 +181,7 @@ foo1(1, 2, "string", E1.a, E.b); // Error >foo1(1, 2, "string", E1.a, E.b) : void > : ^^^^ >foo1 : (...a: T[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >1 : 1 > : ^ >2 : 2 diff --git a/tests/baselines/reference/destructuringParameterDeclaration5.types b/tests/baselines/reference/destructuringParameterDeclaration5.types index d1561cb015700..5905531fca90d 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration5.types @@ -61,7 +61,7 @@ class SubD extends D { function d0({x} = { x: new Class() }) { } >d0 : ({ x }?: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : Class > : ^^^^^ >{ x: new Class() } : { x: Class; } @@ -75,7 +75,7 @@ function d0({x} = { x: new Class() }) { } function d1({x}: { x: F }) { } >d1 : ({ x }: { x: F; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : F > : ^ >x : F @@ -83,7 +83,7 @@ function d1({x}: { x: F }) { } function d2({x}: { x: Class }) { } >d2 : ({ x }: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Class > : ^^^^^ >x : Class @@ -91,7 +91,7 @@ function d2({x}: { x: Class }) { } function d3({y}: { y: D }) { } >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >y : D > : ^ >y : D @@ -99,7 +99,7 @@ function d3({y}: { y: D }) { } function d4({y} = { y: new D() }) { } >d4 : ({ y }?: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : D > : ^ >{ y: new D() } : { y: D; } @@ -123,7 +123,7 @@ d0({ x: 1 }); >d0({ x: 1 }) : void > : ^^^^ >d0 : ({ x }?: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -135,7 +135,7 @@ d0({ x: {} }); >d0({ x: {} }) : void > : ^^^^ >d0 : ({ x }?: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: {} } : { x: {}; } > : ^^^^^^^^^^ >x : {} @@ -147,7 +147,7 @@ d0({ x: "string" }); >d0({ x: "string" }) : void > : ^^^^ >d0 : ({ x }?: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "string" } : { x: string; } > : ^^^^^^^^^^^^^^ >x : string @@ -159,7 +159,7 @@ d1({ x: new Class() }); >d1({ x: new Class() }) : void > : ^^^^ >d1 : ({ x }: { x: F; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ x: new Class() } : { x: Class; } > : ^^^^^^^^^^^^^ >x : Class @@ -173,7 +173,7 @@ d1({ x: {} }); >d1({ x: {} }) : void > : ^^^^ >d1 : ({ x }: { x: F; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ x: {} } : { x: {}; } > : ^^^^^^^^^^ >x : {} @@ -185,7 +185,7 @@ d1({ x: "string" }); >d1({ x: "string" }) : void > : ^^^^ >d1 : ({ x }: { x: F; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ x: "string" } : { x: string; } > : ^^^^^^^^^^^^^^ >x : string @@ -197,7 +197,7 @@ d2({ x: new SubClass() }); >d2({ x: new SubClass() }) : void > : ^^^^ >d2 : ({ x }: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ x: new SubClass() } : { x: SubClass; } > : ^^^^^^^^^^^^^^^^ >x : SubClass @@ -211,7 +211,7 @@ d2({ x: {} }); >d2({ x: {} }) : void > : ^^^^ >d2 : ({ x }: { x: Class; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ x: {} } : { x: {}; } > : ^^^^^^^^^^ >x : {} @@ -223,7 +223,7 @@ d3({ y: new SubD() }); >d3({ y: new SubD() }) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ y: new SubD() } : { y: SubD; } > : ^^^^^^^^^^^^ >y : SubD @@ -237,7 +237,7 @@ d3({ y: new SubClass() }); >d3({ y: new SubClass() }) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ y: new SubClass() } : { y: SubClass; } > : ^^^^^^^^^^^^^^^^ >y : SubClass @@ -252,7 +252,7 @@ d3({ y: new Class() }); >d3({ y: new Class() }) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ y: new Class() } : { y: Class; } > : ^^^^^^^^^^^^^ >y : Class @@ -266,7 +266,7 @@ d3({}); >d3({}) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{} : {} > : ^^ @@ -274,7 +274,7 @@ d3({ y: 1 }); >d3({ y: 1 }) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ y: 1 } : { y: number; } > : ^^^^^^^^^^^^^^ >y : number @@ -286,7 +286,7 @@ d3({ y: "world" }); >d3({ y: "world" }) : void > : ^^^^ >d3 : ({ y }: { y: D; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ y: "world" } : { y: string; } > : ^^^^^^^^^^^^^^ >y : string diff --git a/tests/baselines/reference/destructuringParameterDeclaration6.types b/tests/baselines/reference/destructuringParameterDeclaration6.types index 74d4741d52ab9..7a21b238c2265 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration6.types +++ b/tests/baselines/reference/destructuringParameterDeclaration6.types @@ -11,7 +11,7 @@ // Error function a({while}) { } >a : ({ while: }: { while: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >while : any > : ^^^ > : any @@ -19,13 +19,13 @@ function a({while}) { } function a1({public}) { } >a1 : ({ public }: { public: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >public : any > : ^^^ function a4([while, for, public]){ } >a4 : ([]: any[]) => any -> : ^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^ >, : any > : ^^^ > : any @@ -55,13 +55,13 @@ function a5(...while) { } function a6(...public) { } >a6 : (...public: any[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^ ^^^^^^^^^^^^^^^^ >public : any[] > : ^^^^^ function a7(...a: string) { } >a7 : (...a: string) => void -> : ^^^^^^^ ^^^^^^^^^ +> : ^^^^ ^^ ^^^^^^^^^ >a : string > : ^^^^^^ @@ -69,7 +69,7 @@ a({ while: 1 }); >a({ while: 1 }) : void > : ^^^^ >a : ({ while: }: { while: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ while: 1 } : { while: number; } > : ^^^^^^^^^^^^^^^^^^ >while : number @@ -80,7 +80,7 @@ a({ while: 1 }); // No Error function b1({public: x}) { } >b1 : ({ public: x }: { public: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >public : any > : ^^^ >x : any @@ -88,7 +88,7 @@ function b1({public: x}) { } function b2({while: y}) { } >b2 : ({ while: y }: { while: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >while : any > : ^^^ >y : any @@ -98,7 +98,7 @@ b1({ public: 1 }); >b1({ public: 1 }) : void > : ^^^^ >b1 : ({ public: x }: { public: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ public: 1 } : { public: number; } > : ^^^^^^^^^^^^^^^^^^^ >public : number @@ -110,7 +110,7 @@ b2({ while: 1 }); >b2({ while: 1 }) : void > : ^^^^ >b2 : ({ while: y }: { while: any; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ while: 1 } : { while: number; } > : ^^^^^^^^^^^^^^^^^^ >while : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration7ES5.types b/tests/baselines/reference/destructuringParameterDeclaration7ES5.types index bf8559eeded2e..836ff77ea233b 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration7ES5.types +++ b/tests/baselines/reference/destructuringParameterDeclaration7ES5.types @@ -13,7 +13,7 @@ interface ISomething { function foo({}, {foo, bar}: ISomething) {} >foo : ({}: {}, { foo, bar }: ISomething) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -21,7 +21,7 @@ function foo({}, {foo, bar}: ISomething) {} function baz([], {foo, bar}: ISomething) {} >baz : ([]: any[], { foo, bar }: ISomething) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -29,11 +29,11 @@ function baz([], {foo, bar}: ISomething) {} function one([], {}) {} >one : ([]: any[], {}: {}) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^ function two([], [a, b, c]: number[]) {} >two : ([]: any[], [a, b, c]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration7ES5iterable.types b/tests/baselines/reference/destructuringParameterDeclaration7ES5iterable.types index 4025db634b4a9..aa58d8afb0641 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration7ES5iterable.types +++ b/tests/baselines/reference/destructuringParameterDeclaration7ES5iterable.types @@ -13,7 +13,7 @@ interface ISomething { function foo({}, {foo, bar}: ISomething) {} >foo : ({}: {}, { foo, bar }: ISomething) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -21,7 +21,7 @@ function foo({}, {foo, bar}: ISomething) {} function baz([], {foo, bar}: ISomething) {} >baz : ([]: any[], { foo, bar }: ISomething) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >foo : string > : ^^^^^^ >bar : string @@ -29,11 +29,11 @@ function baz([], {foo, bar}: ISomething) {} function one([], {}) {} >one : ([]: any[], {}: {}) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^ function two([], [a, b, c]: number[]) {} >two : ([]: any[], [a, b, c]: number[]) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >a : number > : ^^^^^^ >b : number diff --git a/tests/baselines/reference/destructuringParameterDeclaration8.types b/tests/baselines/reference/destructuringParameterDeclaration8.types index 031c926030611..54655273fce7b 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration8.types +++ b/tests/baselines/reference/destructuringParameterDeclaration8.types @@ -4,8 +4,8 @@ // explicit type annotation should cause `method` to have type 'x' | 'y' // both inside and outside `test`. function test({ ->test : ({ method, nested: { p } }: { method?: 'x' | 'y'; nested?: { p: 'a' | 'b'; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void +> : ^ ^^ ^^^^^^^^^ method = 'z', >method : "x" | "y" @@ -27,7 +27,7 @@ function test({ > : ^^^^^^^^^ nested?: { p: 'a' | 'b' } ->nested : { p: 'a' | 'b'; } +>nested : { p: "a" | "b"; } > : ^^^^^ ^^^ >p : "a" | "b" > : ^^^^^^^^^ @@ -47,7 +47,7 @@ test({}); >test({}) : void > : ^^^^ >test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{} : {} > : ^^ @@ -55,7 +55,7 @@ test({ method: 'x', nested: { p: 'a' } }) >test({ method: 'x', nested: { p: 'a' } }) : void > : ^^^^ >test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ method: 'x', nested: { p: 'a' } } : { method: "x"; nested: { p: "a"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : "x" @@ -75,7 +75,7 @@ test({ method: 'z', nested: { p: 'b' } }) >test({ method: 'z', nested: { p: 'b' } }) : void > : ^^^^ >test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ method: 'z', nested: { p: 'b' } } : { method: "z"; nested: { p: "b"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : "z" @@ -95,7 +95,7 @@ test({ method: 'one', nested: { p: 'a' } }) >test({ method: 'one', nested: { p: 'a' } }) : void > : ^^^^ >test : ({ method, nested: { p } }: { method?: "x" | "y"; nested?: { p: "a" | "b"; }; }) => void -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >{ method: 'one', nested: { p: 'a' } } : { method: "one"; nested: { p: "a"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >method : "one" diff --git a/tests/baselines/reference/destructuringPropertyAssignmentNameIsNotAssignmentTarget.types b/tests/baselines/reference/destructuringPropertyAssignmentNameIsNotAssignmentTarget.types index 30f53e33e2073..1938d767c7992 100644 --- a/tests/baselines/reference/destructuringPropertyAssignmentNameIsNotAssignmentTarget.types +++ b/tests/baselines/reference/destructuringPropertyAssignmentNameIsNotAssignmentTarget.types @@ -4,7 +4,7 @@ // test for #10668 function qux(bar: { value: number }) { >qux : (bar: { value: number; }) => void -> : ^^^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >bar : { value: number; } > : ^^^^^^^^^ ^^^ >value : number @@ -32,7 +32,7 @@ function qux(bar: { value: number }) { >x : () => { value: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >() => bar : () => { value: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ +> : >bar : { value: number; } > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/destructuringTempOccursAfterPrologue.types b/tests/baselines/reference/destructuringTempOccursAfterPrologue.types index fb6a361a4b5b9..f6f4518a52216 100644 --- a/tests/baselines/reference/destructuringTempOccursAfterPrologue.types +++ b/tests/baselines/reference/destructuringTempOccursAfterPrologue.types @@ -3,7 +3,7 @@ === destructuringTempOccursAfterPrologue.ts === function test(p: any) { >test : (p: any) => void -> : ^^^^ ^^^^^^^^^ +> : ^ ^^ ^^^^^^^^^ >p : any 'use strict'; diff --git a/tests/baselines/reference/destructuringTuple.types b/tests/baselines/reference/destructuringTuple.types index 5b384b4199847..4b8d70ee1381e 100644 --- a/tests/baselines/reference/destructuringTuple.types +++ b/tests/baselines/reference/destructuringTuple.types @@ -43,7 +43,7 @@ const [oops1] = [1, 2, 3].reduce((accu, el) => accu.concat(el), []); >[1, 2, 3].reduce((accu, el) => accu.concat(el), []) : number > : ^^^^^^ >[1, 2, 3].reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -53,9 +53,9 @@ const [oops1] = [1, 2, 3].reduce((accu, el) => accu.concat(el), []); >3 : 3 > : ^ >reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(accu, el) => accu.concat(el) : (accu: [], el: number) => never[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >accu : [] > : ^^ >el : number @@ -63,11 +63,11 @@ const [oops1] = [1, 2, 3].reduce((accu, el) => accu.concat(el), []); >accu.concat(el) : never[] > : ^^^^^^^ >accu.concat : { (...items: ConcatArray[]): never[]; (...items: ConcatArray[]): never[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >accu : [] > : ^^ >concat : { (...items: ConcatArray[]): never[]; (...items: ConcatArray[]): never[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >el : number > : ^^^^^^ >[] : never[] @@ -79,7 +79,7 @@ const [oops2] = [1, 2, 3].reduce((acc: number[], e) => acc.concat(e), []); >[1, 2, 3].reduce((acc: number[], e) => acc.concat(e), []) : number[] > : ^^^^^^^^ >[1, 2, 3].reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -89,9 +89,9 @@ const [oops2] = [1, 2, 3].reduce((acc: number[], e) => acc.concat(e), []); >3 : 3 > : ^ >reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(acc: number[], e) => acc.concat(e) : (acc: number[], e: number) => number[] -> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >acc : number[] > : ^^^^^^^^ >e : number @@ -99,11 +99,11 @@ const [oops2] = [1, 2, 3].reduce((acc: number[], e) => acc.concat(e), []); >acc.concat(e) : number[] > : ^^^^^^^^ >acc.concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >acc : number[] > : ^^^^^^^^ >concat : { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : number > : ^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/destructuringUnspreadableIntoRest.types b/tests/baselines/reference/destructuringUnspreadableIntoRest.types index 59d3d2b09802c..416068b793493 100644 --- a/tests/baselines/reference/destructuringUnspreadableIntoRest.types +++ b/tests/baselines/reference/destructuringUnspreadableIntoRest.types @@ -271,7 +271,7 @@ class A { function destructure(x: T) { >destructure : (x: T) => void -> : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^ +> : ^ ^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types index 6657d81b26c1e..d601aed924224 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES5.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES5.types @@ -93,7 +93,7 @@ var [b2 = 3, b3 = true, b4 = temp] = [3, false, { t1: false, t2: "hello" }]; >b4 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[3, false, { t1: false, t2: "hello" }] : [number, false, { t1: false; t2: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 @@ -123,7 +123,7 @@ var [b5 = 3, b6 = true, b7 = temp] = [undefined, undefined, undefined]; >b7 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[undefined, undefined, undefined] : [undefined, undefined, undefined] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types b/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types index 4bee226a2fec0..b428a12b28747 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.types @@ -93,7 +93,7 @@ var [b2 = 3, b3 = true, b4 = temp] = [3, false, { t1: false, t2: "hello" }]; >b4 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[3, false, { t1: false, t2: "hello" }] : [number, false, { t1: false; t2: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 @@ -123,7 +123,7 @@ var [b5 = 3, b6 = true, b7 = temp] = [undefined, undefined, undefined]; >b7 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[undefined, undefined, undefined] : [undefined, undefined, undefined] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types index b8592c051e401..fd1dcdec96b9c 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration1ES6.types +++ b/tests/baselines/reference/destructuringVariableDeclaration1ES6.types @@ -93,7 +93,7 @@ var [b2 = 3, b3 = true, b4 = temp] = [3, false, { t1: false, t2: "hello" }]; >b4 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[3, false, { t1: false, t2: "hello" }] : [number, false, { t1: false; t2: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 @@ -123,7 +123,7 @@ var [b5 = 3, b6 = true, b7 = temp] = [undefined, undefined, undefined]; >b7 : { t1: boolean; t2: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[undefined, undefined, undefined] : [undefined, undefined, undefined] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined diff --git a/tests/baselines/reference/destructuringVariableDeclaration2.types b/tests/baselines/reference/destructuringVariableDeclaration2.types index 75659c948a579..934914c3e13ab 100644 --- a/tests/baselines/reference/destructuringVariableDeclaration2.types +++ b/tests/baselines/reference/destructuringVariableDeclaration2.types @@ -71,7 +71,7 @@ var [b0 = 3, b1 = true, b2 = temp] = [3, false, { t1: false, t2: 5}]; // Error >b2 : { t1: boolean; t2: string; } | { t1: false; t2: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >temp : { t1: boolean; t2: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +> : >[3, false, { t1: false, t2: 5}] : [number, false, { t1: false; t2: number; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >3 : 3 diff --git a/tests/baselines/reference/destructuringWithConstraint.types b/tests/baselines/reference/destructuringWithConstraint.types index 0d917ec5b2949..7c07181b08d4e 100644 --- a/tests/baselines/reference/destructuringWithConstraint.types +++ b/tests/baselines/reference/destructuringWithConstraint.types @@ -11,7 +11,7 @@ interface Props { function foo